Moving axis svn, part of TLP move INFRA-2441
diff --git a/rampart_1_1/LICENSE.txt b/rampart_1_1/LICENSE.txt
new file mode 100755
index 0000000..6b0b127
--- /dev/null
+++ b/rampart_1_1/LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/NOTICE.txt b/rampart_1_1/NOTICE.txt
new file mode 100644
index 0000000..88a507d
--- /dev/null
+++ b/rampart_1_1/NOTICE.txt
@@ -0,0 +1,12 @@
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Axis2 distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+   Portions Copyright 2006 International Business Machines Corp.
+
+   Please read the different LICENSE files present in the lib directory of
+   this distribution.
diff --git a/rampart_1_1/README.txt b/rampart_1_1/README.txt
new file mode 100644
index 0000000..046fd6b
--- /dev/null
+++ b/rampart_1_1/README.txt
@@ -0,0 +1,50 @@
+======================================================

+Apache Axis2 @axisVersion@ build  (@TODAY@)

+

+http://ws.apache.org/axis2

+------------------------------------------------------

+

+___________________

+Documentation

+===================

+ 

+Documentation can be found in the 'docs' distribution of this release and in the main site.

+

+___________________

+Deploying

+===================

+

+To deploy a new Web service in Axis2 the following three steps must 

+be performed:

+  1) Create the Web service implementation class, supporting classes 

+     and the services.xml file, 

+  2) Archive the class files into a jar with the services.xml file in 

+     the META-INF

+  3) Drop the jar file to the $AXIS2_HOME/WEB-INF/services directory

+where $AXIS2_HOME represents the install directory of your Axis2 

+runtime. (In the case of a servelet container this would be the

+"axis2" directory inside "webapps".)

+

+To verify the deployment please go to http://<yourip>:<port>/axis2/ and

+follow the "Services" Link.

+

+For more information please refer to the User's Guide.

+

+___________________

+Support

+===================

+ 

+Any problem with this release can be reported to Axis mailing list

+or in the JIRA issue tracker. If you are sending an email to the mailing

+list make sure to add the [Axis2] prefix to the subject.

+

+Mailing list subscription:

+    axis-dev-subscribe@ws.apache.org

+

+Jira:

+    http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10611

+

+

+Thank you for using Axis2!

+

+The Axis2 Team. 

diff --git a/rampart_1_1/build.xml b/rampart_1_1/build.xml
new file mode 100644
index 0000000..4e33eed
--- /dev/null
+++ b/rampart_1_1/build.xml
@@ -0,0 +1,274 @@
+<?xml version="1.0"?>
+<project name="axis2" default="quick"
+
+    >
+
+  <!--
+  This is an ant build file to
+   -invoke maven to build the distribution
+   -copy the created files into the local Maven2 cache
+   -maybe deploy to a local cache, though that is NPE'ing right now.
+  -->
+
+
+  <!--
+  not putting this at the top level as it breaks idea's ant-awareness
+  xmlns:m2="antlib:org.apache.maven.artifact.ant"
+  -->
+
+  <!--any personal overrides; not read by maven-->
+  <property file="build.properties"/>
+
+  <!--any personal overrides; also read by maven-->
+  <property file="project.properties"/>
+  <!--read in project properties, including library versions-->
+  <property file="etc/project.properties"/>
+
+  
+  
+  <target name="default">
+
+  </target>
+
+  <target name="init" >
+    <!--macro for maven -->
+    <property name="maven.commoncmd" value="--emacs" />
+    <condition property="maven.line" 
+        value="--offline ${maven.commoncmd}">
+      <istrue value="${offline}"/>
+    </condition>
+
+    <condition property="maven.executable" value="maven.bat">
+      <os family="windows" />
+    </condition>
+    <property name="maven.executable" value="maven" />
+
+    <property name="maven.line" value="${maven.commoncmd}" />
+    <presetdef name="maven">
+      <exec failonerror="true" executable="${maven.executable}">
+       <arg line="${maven.line}" />
+      </exec>
+    </presetdef>
+
+    <!-- location of m2 repository (with new layout) -->
+    <property name="m2.repository" location="${user.home}/.m2/repository"/>
+    <!-- original m1 repository -->
+    <property name="m1.repository" location="${user.home}/.maven/repository"/>
+
+    <property name="project.xml" location="etc/project.xml" />
+    <!-- pull out the value of the project version from the maven1 file-->
+    <xmlproperty file="${project.xml}"
+        keeproot="true" semanticAttributes="true" />
+
+    <property name="target.dir" location="target"/>
+    <property name="project.version" value="${axis2_version}" />
+    <property name="artifact.title" value="${project.id}-${project.version}" />
+    <property name="target.jar" location="${target.dir}/${artifact.title}.jar"/>
+    <property name="target.pom" location="${target.dir}/${artifact.title}.pom"/>
+    <!-- use a proper m2 hierarchy -->
+    <property name="maven2.groupId" value="org.apache.ws.${project.groupId}"/>
+    
+    <available file="${basedir}/target/lib/wsdl4j-${wsdl4j.version}.jar" property="jars.present"/>
+
+  </target>
+
+  <target name="clean" depends="init"
+      description="clean everything">
+    <maven>
+      <arg value="clean"/>
+    </maven>
+  </target>
+
+  <target name="dist" depends="init"
+      description="make a distribution">
+    <maven>
+    </maven>
+  </target>
+
+  <target name="dist-lite" depends="init"
+      description="make a distribution, skip testing">
+    <maven>
+      <arg value="-Dmaven.test.skip=true" />
+    </maven>
+  </target>
+
+  <target name="create-lib" unless="jars.present" depends="init"
+      description="creates the libraries">
+    <maven>
+      <arg value="create-lib" />
+    </maven>
+  </target>
+
+  <!-- inline creation of a very minimal  pom 
+    Only libraries that absolutely must be present should be listed.
+    This POM omits a choice of StAX parser, because there are so many.
+  -->
+  <target name="m2-pom" depends="init" xmlns:m2="antlib:org.apache.maven.artifact.ant">
+    <echo message="Creating Pom ${target.pom}" level="verbose"/>
+    <!--ant1.7's echoxml makes this easier -->
+    
+    
+<echo file="${target.pom}"><![CDATA[<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>${maven2.groupId}</groupId>
+  <artifactId>${project.id}</artifactId>
+  <packaging>jar</packaging>
+  <version>${project.version}</version>
+  <dependencies>
+    <dependency>
+      <groupId>annogen</groupId>
+      <artifactId>annogen</artifactId>
+      <version>${annogen.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>axis</groupId>
+      <artifactId>axis-wsdl4j</artifactId>
+      <version>${axis.wsdl4j.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>backport-util-concurrent</groupId>
+      <artifactId>backport-util-concurrent</artifactId>
+      <version>${backport_util_concurrent.version}</version>
+    </dependency>    
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>${commons.logging.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>${log4j.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>ws-commons</groupId>
+      <artifactId>neethi</artifactId>
+      <version>${policy.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ws.commons</groupId>
+      <artifactId>XmlSchema</artifactId>
+      <version>${XmlSchema.m2.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>ws-commons</groupId>
+      <artifactId>axiom</artifactId>
+      <version>${axiom.version}</version>
+    </dependency>
+  </dependencies>
+</project>
+]]></echo>
+    <m2:pom id="m2.pom" file="${target.pom}"/>
+  </target>
+
+
+  <target name="m2-wagons" depends="init"
+      xmlns:m2="antlib:org.apache.maven.artifact.ant">
+    <property name="wagon.version" value="1.0-alpha-5"/>
+    <m2:install-provider artifactId="wagon-ssh"
+        version="${wagon.version}"/>
+    <m2:install-provider artifactId="wagon-ssh-external"
+        version="${wagon.version}"/>
+    <m2:install-provider artifactId="wagon-file"
+        version="${wagon.version}"/>
+    <m2:install-provider artifactId="wagon-ftp"
+        version="${wagon.version}"/>
+  </target>
+
+  <target name="ready-to-deploy" depends="m2-pom" />
+
+  <target name="m2-install" depends="ready-to-deploy"
+      description="install the libray into the local m2 repository"
+      xmlns:m2="antlib:org.apache.maven.artifact.ant">
+    <m2:install file="${target.jar}">
+      <pom refid="m2.pom"/>
+    </m2:install>
+  </target>
+
+  <target name="m2-filesys-deploy" depends="ready-to-deploy"
+      xmlns:m2="antlib:org.apache.maven.artifact.ant">
+    <fail unless="filesys.url">
+      filesys.url needs to be set to a file: url of the local destination
+      for in-filesystem deployment
+    </fail>
+    <m2:deploy file="${target.jar}">
+      <remoteRepository url="${filesys.url}"/>
+      <pom refid="m2.pom"/>
+    </m2:deploy>
+  </target>
+
+  <target name="installed"
+    description="locally installed"
+    depends="dist-lite,m2-install" />
+
+  <target name="quick" depends="create-lib"
+      description="make a distribution">
+    <mkdir dir="${basedir}/target/classes/"/>
+    <path id="classpath">
+      <fileset dir="${basedir}/target/lib">
+        <include name="**/*.jar"/>
+      </fileset>
+    </path>
+
+    <javac srcdir="${basedir}/modules"
+      destdir="${basedir}/target/classes/"
+      debug="true"
+      source="1.5"
+      classpathref="classpath">
+      <include name="adb/src/**/*.java"/>
+      <include name="adb-codegen/src/**/*.java"/>
+      <include name="addressing/src/**/*.java"/>
+      <include name="codegen/src/**/*.java"/>
+      <include name="common/src/**/*.java"/>
+      <include name="core/src/**/*.java"/>
+      <include name="integration/src/**/*.java"/>
+      <include name="java2wsdl/src/**/*.java"/>
+      <include name="jaxbri/src/**/*.java"/>
+      <include name="jaxws/src/**/*.java"/>
+      <include name="jibx/src/**/*.java"/>
+      <include name="rahas/src/**/*.java"/>
+      <include name="saaj/src/**/*.java"/>
+      <include name="samples/src/**/*.java"/>
+      <include name="savan/src/**/*.java"/>
+      <include name="security/src/**/*.java"/>
+      <include name="soapmonitor/src/**/*.java"/>
+      <include name="spring/src/**/*.java"/>
+      <include name="xmlbeans/src/**/*.java"/>
+    </javac>
+    <copy todir="${basedir}/target/classes/">
+      <fileset dir="${basedir}/modules/common/src">
+        <include name="**/*.properties"/>
+        <include name="**/*.xsl"/>
+      </fileset>
+      <fileset dir="${basedir}/modules/core/conf">
+        <include name="**/*.properties"/>
+      </fileset>
+      <fileset dir="${basedir}/modules/core/src">
+        <include name="**/*axis2*.xml"/>
+      </fileset>
+      <fileset dir="${basedir}/modules/codegen/src">
+        <include name="**/*.properties"/>
+        <include name="**/*.xsl"/>
+        <include name="**/*.xsd"/>
+      </fileset>
+    </copy>
+    <mkdir dir="${basedir}/target/repo/modules"/>
+    <copy todir="${basedir}/target/repo/modules" flatten="true">
+      <fileset dir="${basedir}/modules/">
+        <include name="**/target/*.mar"/>
+      </fileset>
+    </copy>
+    <copy todir="${basedir}/target/repo">
+      <fileset dir="${basedir}/modules/core/src/org/apache/axis2/deployment">
+        <include name="axis2.xml"/>
+      </fileset>
+    </copy>
+  </target>
+
+  <target name="diag" depends="init">
+  <!-- probably ant 1.7+ only -->
+    <diagnostics/>
+    <echoproperties/>
+  </target>
+
+</project>
diff --git a/rampart_1_1/clover.license b/rampart_1_1/clover.license
new file mode 100644
index 0000000..2656360
--- /dev/null
+++ b/rampart_1_1/clover.license
@@ -0,0 +1,167 @@
+Product: Clover

+License: Apache OS License, 0.x, 1.x

+Issued: Fri Nov 5 2004 00:10:15 CST

+Expiry: Never

+Key: 6c31947b76be866e9243758d8

+Name: Apache Foundation

+Org: Apache Software Foundation

+Certificate: AAACJW+Ow8B7/zEbxOMqqKwwrdpP+a1COmJGHco7sCNLjHkHnajPF+dQW

+CV13P565Kaf84xY88Q1zb/rXoe5qNa9bwooYiUH++mSERNN5PpEf++l1tRf+gp1M7MheEQ

+d3FcpfoQ7CPE8k+n2WpoFP+DPU5+lLb7bHYekAyJ5RjftKr0zRuNpeorim1GoWjdEQ9Lof

+OXnpMnDerSHBMul/XTa5sHDoXkKcH0qVcG49xcSWfnnRSr63dbVWPsdLFy3KzYXO8NSNG+

+VOzTqMJzi5kvJVzXhhlSDpX+az1yQo0Z2Qkxx2C29IkumD0aQ6otHvUE9CiXS8374qNrKy

+nen0yLWqYQ12uPN0apuHzt1PAfnsvEZEljk4URtpM7JwlL3HWQWojJ3HGLcUDwzmXYotDC

+E4KtIiRR25MlNxaUnutJNn64pIHRRdcMpuW1a9DxM7+iGRaxGIQEr1PkvsL7kk54e6sgj1

+6n2JN/925vFfgoifyUb46DxDhkW0+ZCZ+aSzdFE+nIwEa95YhY71igzdJJvNPw5y/P3St9

+9Nu7FRYWzOvXWToC+RjIsEieVY+pjG7Z4HNK22yyqRzwQZN7pL9HqtcHfcbrROdCl+nTe+

+9bW9SVAJ2U7W+Gx9hACSvftWWeqydbREfIXOhnjLXgCIcFPOmmIdCq4PpTo8EuaNDbo0EW

+Z7lW31l6WpVAzP1Nizja1M0fidB2r7eVOoFsmDHHQ8S/19KXFpl90Ndp6vNoWewmyEraD7

++I3KqlvFSH7A501ecrUZe1+wawVOh87UudTkoeI1IQg1RxGxec6O4SmilTiF/6gv9PXi42

+UONKnh+O4bPryLv/zAiTCMBIV4TLomLsIVM7w5w+0pScQ3a1UEoqOcfUirdqrkw/ZQ0WMD

++hdNmpRx9JW

+License Agreement: CLOVER VERSION 1 (ONE) SOFTWARE LICENSE AGREEMENT

+

+1. Licenses and Software

+

+Cortex eBusiness Pty Ltd, an Australian Proprietary Limited Company

+("CENQUA") hereby grants to the purchaser (the "LICENSEE") a limited,

+revocable, worldwide, non-exclusive, non-transferable,

+non-sublicensable license to use the Clover version 1 (one) software

+(the "Software"), including any minor upgrades thereof during the Term

+(hereinafter defined) up to, but not including the next major version

+of the Software. The licensee shall not, or knowingly allow others to,

+reverse engineer, decompile, disassemble, modify, adapt, create

+derivative works from or otherwise attempt to derive source code from

+the Software provided. And, in accordance with the terms and

+conditions of this Software License Agreement (the "Agreement"), the

+Software shall be used solely by the licensed users in accordance with

+the following edition specific conditions:

+

+a) Server Edition

+

+A Server Edition license entitles the Licensee to execute one instance

+of Clover Server Edition on one (1) machine for the purposes of

+instrumenting source code and generating reports. There are no

+limitations on the use of the instrumented source code or generated

+reports produced by Server Edition.

+

+b) Workstation Edition

+

+A Workstation Edition license entitles the licensee to use Clover

+Workstation Edition on one (1) machine by one (1) individual end

+user. Workstation Edition does not permit the generation of reports

+for distribution.

+

+c) Team Edition

+

+A Team Edition license entitles the licensee to use Clover Team

+edition on any number of machines solely by the licensed number of

+users. Reports generated by Clover Team Edition are strictly for use

+only by the licensed number of individual end users.

+

+2. License Fee

+

+In exchange for the License(s), the Licensee shall pay to Cenqua a

+one-time, up front, non-refundable license fee. At the sole discretion

+of Cenqua this fee will be waived for non-commercial

+projects. Notwithstanding the Licensee's payment of the License Fee,

+Cenqua reserves the right to terminate the License if Cenqua discovers

+that the Licensee and/or the Licensee's use of the Software is in

+breach of this Agreement.

+

+3. Proprietary Rights

+

+Cenqua will retain all right, title and interest in and to the

+Software, all copies thereof, and Cenqua website(s), software, and

+other intellectual property, including, but not limited to, ownership

+of all copyrights, look and feel, trademark rights, design rights,

+trade secret rights and any and all other intellectual property and

+other proprietary rights therein. The Licensee will not directly or

+indirectly obtain or attempt to obtain at any time, any right, title

+or interest by registration or otherwise in or to the trademarks,

+service marks, copyrights, trade names, symbols, logos or designations

+or other intellectual property rights owned or used by Cenqua. All

+technical manuals or other information provided by Cenqua to the

+Licensee shall be the sole property of Cenqua.

+

+4. Term and Termination

+

+Subject to the other provisions hereof, this Agreement shall commence

+upon the Licensee's opting into this Agreement and continue until the

+Licensee discontinues use of the Software or the Agreement terminates

+automatically upon the Licensee's breach of any term or condition of

+this Agreement (the "Term"). Upon any such termination, the Licensee

+will delete the Software immediately.

+

+5. Copying & Transfer

+

+The Licensee may copy the Software for back-up purposes only. The

+Licensee may not assign or otherwise transfer the Software to any

+third party.

+

+6. Specific Disclaimer of Warranty and Limitation of Liability

+

+THE SOFTWARE IS PROVIDED WITHOUT WARRANTY OF ANY KIND. CENQUA

+DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT

+LIMITED TO THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A

+PARTICULAR PURPOSE. CENQUA WILL NOT BE LIABLE FOR ANY DAMAGES

+ASSOCIATED WITH THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ORDINARY,

+INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING

+BUT NOT LIMITED TO DAMAGES RELATING TO LOST DATA OR LOST PROFITS, EVEN

+IF CENQUA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+

+7. Warranties and Representations

+

+Licensee Indemnification. CENQUA agrees to indemnify, defend and hold

+the Licensee harmless from and against any and all liabilities, 

+damages, losses, claims, costs, and expenses (including reasonable 

+legal fees) arising out of or resulting from the Software or the use 

+thereof infringing upon, misappropriating or violating any patents, 

+copyrights, trademarks, or trade secret rights or other proprietary 

+rights of persons, firms or entities who are not parties to this 

+Agreement.

+

+CENQUA Indemnification. The Licensee warrants and represents that the 

+Licensee's actions with regard to the Software will be in compliance 

+with all applicable  laws; and the Licensee agrees to indemnify, 

+defend, and hold CENQUA harmless  from and against any and all 

+liabilities, damages, losses, claims, costs,  and expenses (including 

+reasonable legal fees) arising out of or resulting  from the 

+Licensee's failure to observe the use restrictions set forth herein.

+

+8. Publicity

+

+The Licensee grants permission for CENQUA to use Licensee's name 

+solely in customer lists. CENQUA shall not, without prior consent in 

+writing, use the Licensee's name, or that of its affiliates, in any 

+form with the specific  exception of customer lists. CENQUA agrees to 

+remove Licensee's name from  any and all materials within 7 days if 

+notified by the Licensee in writing.

+

+9. Governing Law

+

+This Agreement shall be governed by the laws of New South Wales, 

+Australia.

+

+10. Independent Contractors

+

+The parties are independent contractors with respect to each  other, 

+and nothing in this Agreement shall be construed as creating an 

+employer-employee  relationship, a partnership, agency relationship or 

+a joint venture between  the parties.

+

+11. Assignment

+

+This Agreement is not assignable or transferable by the Licensee. 

+CENQUA  in its sole discretion may transfer a license to a third party 

+at the written  request of the Licensee.

+

+12. Entire Agreement

+

+This Agreement constitutes the entire agreement between the parties 

+concerning  the Licensee's use of the Software. This Agreement 

+supersedes any prior verbal understanding between the parties and any 

+Licensee purchase order or other  ordering document, regardless of 

+whether such document is received by CENQUA  before or after execution 

+of this Agreement. This Agreement may be amended  only in writing by 

+CENQUA.

diff --git a/rampart_1_1/etc/junit-frames.xsl b/rampart_1_1/etc/junit-frames.xsl
new file mode 100644
index 0000000..5dfb0dc
--- /dev/null
+++ b/rampart_1_1/etc/junit-frames.xsl
@@ -0,0 +1,725 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+    xmlns:lxslt="http://xml.apache.org/xslt"
+    xmlns:redirect="org.apache.xalan.lib.Redirect"
+    xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
+    extension-element-prefixes="redirect">
+<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
+<xsl:decimal-format decimal-separator="." grouping-separator=","/>
+<!--
+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.
+ -->
+
+<!--
+
+ Sample stylesheet to be used with An JUnitReport output.
+
+ It creates a set of HTML files a la javadoc where you can browse easily
+ through all packages and classes.
+
+ @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
+ @author Erik Hatcher <a href="mailto:ehatcher@apache.org"/>
+ @author Martijn Kruithof <a href="mailto:martijn@kruithof.xs4all.nl"/>
+
+-->
+<xsl:param name="output.dir" select="'.'"/>
+
+
+<xsl:template match="testsuites">
+    <!-- create the index.html -->
+    <redirect:write file="{$output.dir}/index.html">
+        <xsl:call-template name="index.html"/>
+    </redirect:write>
+
+    <!-- create the stylesheet.css -->
+    <redirect:write file="{$output.dir}/stylesheet.css">
+        <xsl:call-template name="stylesheet.css"/>
+    </redirect:write>
+
+    <!-- create the overview-packages.html at the root -->
+    <redirect:write file="{$output.dir}/overview-summary.html">
+        <xsl:apply-templates select="." mode="overview.packages"/>
+    </redirect:write>
+
+    <!-- create the all-packages.html at the root -->
+    <redirect:write file="{$output.dir}/overview-frame.html">
+        <xsl:apply-templates select="." mode="all.packages"/>
+    </redirect:write>
+
+    <!-- create the all-classes.html at the root -->
+    <redirect:write file="{$output.dir}/allclasses-frame.html">
+        <xsl:apply-templates select="." mode="all.classes"/>
+    </redirect:write>
+
+    <!-- process all packages -->
+    <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+        <xsl:call-template name="package">
+            <xsl:with-param name="name" select="@package"/>
+        </xsl:call-template>
+    </xsl:for-each>
+</xsl:template>
+
+
+<xsl:template name="package">
+    <xsl:param name="name"/>
+    <xsl:variable name="package.dir">
+        <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
+        <xsl:if test="$name = ''">.</xsl:if>
+    </xsl:variable>
+    <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
+    <!-- create a classes-list.html in the package directory -->
+    <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
+        <xsl:call-template name="classes.list">
+            <xsl:with-param name="name" select="$name"/>
+        </xsl:call-template>
+    </redirect:write>
+
+    <!-- create a package-summary.html in the package directory -->
+    <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
+        <xsl:call-template name="package.summary">
+            <xsl:with-param name="name" select="$name"/>
+        </xsl:call-template>
+    </redirect:write>
+
+    <!-- for each class, creates a @name.html -->
+    <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
+    <xsl:for-each select="/testsuites/testsuite[@package = $name]">
+        <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
+            <xsl:apply-templates select="." mode="class.details"/>
+        </redirect:write>
+        <xsl:if test="string-length(./system-out)!=0">
+            <redirect:write file="{$output.dir}/{$package.dir}/{@name}-out.txt">
+                <xsl:value-of select="./system-out" />
+            </redirect:write>
+        </xsl:if>
+        <xsl:if test="string-length(./system-err)!=0">
+            <redirect:write file="{$output.dir}/{$package.dir}/{@name}-err.txt">
+                <xsl:value-of select="./system-err" />
+            </redirect:write>
+        </xsl:if>
+    </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="index.html">
+<html>
+    <head>
+        <title>Unit Test Results.</title>
+    </head>
+    <frameset cols="20%,80%">
+        <frameset rows="30%,70%">
+            <frame src="overview-frame.html" name="packageListFrame"/>
+            <frame src="allclasses-frame.html" name="classListFrame"/>
+        </frameset>
+        <frame src="overview-summary.html" name="classFrame"/>
+        <noframes>
+            <h2>Frame Alert</h2>
+            <p>
+                This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+            </p>
+        </noframes>
+    </frameset>
+</html>
+</xsl:template>
+
+<!-- this is the stylesheet css to use for nearly everything -->
+<xsl:template name="stylesheet.css">
+body {
+    font:normal 68% verdana,arial,helvetica;
+    color:#000000;
+}
+table tr td, table tr th {
+    font-size: 68%;
+}
+table.details tr th{
+    font-weight: bold;
+    text-align:left;
+    background:#a6caf0;
+}
+table.details tr td{
+    background:#eeeee0;
+}
+
+p {
+    line-height:1.5em;
+    margin-top:0.5em; margin-bottom:1.0em;
+}
+h1 {
+    margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
+}
+h2 {
+    margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
+}
+h3 {
+    margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
+}
+h4 {
+    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+}
+h5 {
+    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+}
+h6 {
+    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+}
+.Error {
+    font-weight:bold; color:red;
+}
+.Failure {
+    font-weight:bold; color:purple;
+}
+.Properties {
+  text-align:right;
+}
+</xsl:template>
+
+
+<!-- ======================================================================
+    This page is created for every testsuite class.
+    It prints a summary of the testsuite and detailed information about
+    testcase methods.
+     ====================================================================== -->
+<xsl:template match="testsuite" mode="class.details">
+    <xsl:variable name="package.name" select="@package"/>
+    <xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
+    <html>
+        <head>
+          <title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
+            <xsl:call-template name="create.stylesheet.link">
+                <xsl:with-param name="package.name" select="$package.name"/>
+            </xsl:call-template>
+       <script type="text/javascript" language="JavaScript">
+        var TestCases = new Array();
+        var cur;
+        <xsl:apply-templates select="properties"/>
+       </script>
+       <script type="text/javascript" language="JavaScript"><![CDATA[
+        function displayProperties (name) {
+          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
+          var doc = win.document.open();
+          doc.write("<html><head><title>Properties of " + name + "</title>");
+          doc.write("<style type=\"text/css\">");
+          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
+          doc.write("table tr td, table tr th { font-size: 68%; }");
+          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
+          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
+          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
+          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
+          doc.write("</style>");
+          doc.write("</head><body>");
+          doc.write("<h3>Properties of " + name + "</h3>");
+          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
+          doc.write("<table class='properties'>");
+          doc.write("<tr><th>Name</th><th>Value</th></tr>");
+          for (prop in TestCases[name]) {
+            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
+          }
+          doc.write("</table>");
+          doc.write("</body></html>");
+          doc.close();
+          win.focus();
+        }
+      ]]>
+      </script>
+        </head>
+        <body>
+            <xsl:call-template name="pageHeader"/>
+            <h3>Class <xsl:value-of select="$class.name"/></h3>
+
+
+            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+                <xsl:call-template name="testsuite.test.header"/>
+                <xsl:apply-templates select="." mode="print.test"/>
+            </table>
+
+            <h2>Tests</h2>
+            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+        <xsl:call-template name="testcase.test.header"/>
+              <!--
+              test can even not be started at all (failure to load the class)
+              so report the error directly
+              -->
+                <xsl:if test="./error">
+                    <tr class="Error">
+                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
+                    </tr>
+                </xsl:if>
+                <xsl:apply-templates select="./testcase" mode="print.test"/>
+            </table>
+            <div class="Properties">
+                <a>
+                    <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
+                    Properties &#187;
+                </a>
+            </div>
+            <xsl:if test="string-length(./system-out)!=0">
+                <div class="Properties">
+                    <a>
+                        <xsl:attribute name="href">./<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
+                        System.out &#187;
+                    </a>
+                </div>
+            </xsl:if>
+            <xsl:if test="string-length(./system-err)!=0">
+                <div class="Properties">
+                    <a>
+                        <xsl:attribute name="href">./<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
+                        System.err &#187;
+                    </a>
+                </div>
+            </xsl:if>
+        </body>
+    </html>
+</xsl:template>
+
+  <!--
+   Write properties into a JavaScript data structure.
+   This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
+   -->
+  <xsl:template match="properties">
+    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
+    <xsl:for-each select="property">
+    <xsl:sort select="@name"/>
+        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
+    </xsl:for-each>
+  </xsl:template>
+
+
+<!-- ======================================================================
+    This page is created for every package.
+    It prints the name of all classes that belongs to this package.
+    @param name the package name to print classes.
+     ====================================================================== -->
+<!-- list of classes in a package -->
+<xsl:template name="classes.list">
+    <xsl:param name="name"/>
+    <html>
+        <head>
+            <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
+            <xsl:call-template name="create.stylesheet.link">
+                <xsl:with-param name="package.name" select="$name"/>
+            </xsl:call-template>
+        </head>
+        <body>
+            <table width="100%">
+                <tr>
+                    <td nowrap="nowrap">
+                        <h2><a href="package-summary.html" target="classFrame">
+                            <xsl:value-of select="$name"/>
+                            <xsl:if test="$name = ''">&lt;none&gt;</xsl:if>
+                        </a></h2>
+                    </td>
+                </tr>
+            </table>
+
+            <h2>Classes</h2>
+            <table width="100%">
+                <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
+                    <xsl:sort select="@name"/>
+                    <tr>
+                        <td nowrap="nowrap">
+                            <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
+                        </td>
+                    </tr>
+                </xsl:for-each>
+            </table>
+        </body>
+    </html>
+</xsl:template>
+
+
+<!--
+    Creates an all-classes.html file that contains a link to all package-summary.html
+    on each class.
+-->
+<xsl:template match="testsuites" mode="all.classes">
+    <html>
+        <head>
+            <title>All Unit Test Classes</title>
+            <xsl:call-template name="create.stylesheet.link">
+                <xsl:with-param name="package.name"/>
+            </xsl:call-template>
+        </head>
+        <body>
+            <h2>Classes</h2>
+            <table width="100%">
+                <xsl:apply-templates select="testsuite" mode="all.classes">
+                    <xsl:sort select="@name"/>
+                </xsl:apply-templates>
+            </table>
+        </body>
+    </html>
+</xsl:template>
+
+<xsl:template match="testsuite" mode="all.classes">
+    <xsl:variable name="package.name" select="@package"/>
+    <tr>
+        <td nowrap="nowrap">
+            <a target="classFrame">
+                <xsl:attribute name="href">
+                    <xsl:if test="not($package.name='')">
+                        <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
+                    </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
+                </xsl:attribute>
+                <xsl:value-of select="@name"/>
+            </a>
+        </td>
+    </tr>
+</xsl:template>
+
+
+<!--
+    Creates an html file that contains a link to all package-summary.html files on
+    each package existing on testsuites.
+    @bug there will be a problem here, I don't know yet how to handle unnamed package :(
+-->
+<xsl:template match="testsuites" mode="all.packages">
+    <html>
+        <head>
+            <title>All Unit Test Packages</title>
+            <xsl:call-template name="create.stylesheet.link">
+                <xsl:with-param name="package.name"/>
+            </xsl:call-template>
+        </head>
+        <body>
+            <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
+            <h2>Packages</h2>
+            <table width="100%">
+                <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
+                    <xsl:sort select="@package"/>
+                </xsl:apply-templates>
+            </table>
+        </body>
+    </html>
+</xsl:template>
+
+<xsl:template match="testsuite" mode="all.packages">
+    <tr>
+        <td nowrap="nowrap">
+            <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
+                <xsl:value-of select="@package"/>
+                <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
+            </a>
+        </td>
+    </tr>
+</xsl:template>
+
+
+<xsl:template match="testsuites" mode="overview.packages">
+    <html>
+        <head>
+            <title>Unit Test Results: Summary</title>
+            <xsl:call-template name="create.stylesheet.link">
+                <xsl:with-param name="package.name"/>
+            </xsl:call-template>
+        </head>
+        <body>
+        <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
+        <xsl:call-template name="pageHeader"/>
+        <h2>Summary</h2>
+        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
+        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
+        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
+        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
+        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
+        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+        <tr valign="top">
+            <th>Tests</th>
+            <th>Failures</th>
+            <th>Errors</th>
+            <th>Success rate</th>
+            <th>Time</th>
+        </tr>
+        <tr valign="top">
+            <xsl:attribute name="class">
+                <xsl:choose>
+                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+                    <xsl:otherwise>Pass</xsl:otherwise>
+                </xsl:choose>
+            </xsl:attribute>
+            <td><xsl:value-of select="$testCount"/></td>
+            <td><xsl:value-of select="$failureCount"/></td>
+            <td><xsl:value-of select="$errorCount"/></td>
+            <td>
+                <xsl:call-template name="display-percent">
+                    <xsl:with-param name="value" select="$successRate"/>
+                </xsl:call-template>
+            </td>
+            <td>
+                <xsl:call-template name="display-time">
+                    <xsl:with-param name="value" select="$timeCount"/>
+                </xsl:call-template>
+            </td>
+
+        </tr>
+        </table>
+        <table border="0" width="95%">
+        <tr>
+        <td style="text-align: justify;">
+        Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
+        </td>
+        </tr>
+        </table>
+
+        <h2>Packages</h2>
+        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+            <xsl:call-template name="testsuite.test.header"/>
+            <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+                <xsl:sort select="@package" order="ascending"/>
+                <!-- get the node set containing all testsuites that have the same package -->
+                <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
+                <tr valign="top">
+                    <!-- display a failure if there is any failure/error in the package -->
+                    <xsl:attribute name="class">
+                        <xsl:choose>
+                            <xsl:when test="sum($insamepackage/@errors) &gt; 0">Error</xsl:when>
+                            <xsl:when test="sum($insamepackage/@failures) &gt; 0">Failure</xsl:when>
+                            <xsl:otherwise>Pass</xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:attribute>
+                    <td><a href="./{translate(@package,'.','/')}/package-summary.html">
+                        <xsl:value-of select="@package"/>
+                        <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
+                    </a></td>
+                    <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
+                    <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
+                    <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
+                    <td>
+                    <xsl:call-template name="display-time">
+                        <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
+                    </xsl:call-template>
+                    </td>
+                </tr>
+            </xsl:for-each>
+        </table>
+        </body>
+        </html>
+</xsl:template>
+
+
+<xsl:template name="package.summary">
+    <xsl:param name="name"/>
+    <html>
+        <head>
+            <xsl:call-template name="create.stylesheet.link">
+                <xsl:with-param name="package.name" select="$name"/>
+            </xsl:call-template>
+        </head>
+        <body>
+            <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
+            <xsl:call-template name="pageHeader"/>
+            <h3>Package <xsl:value-of select="$name"/></h3>
+
+            <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
+                <xsl:call-template name="class.metrics.header"/>
+                <xsl:apply-templates select="." mode="print.metrics"/>
+            </table-->
+
+            <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
+            <xsl:if test="count($insamepackage) &gt; 0">
+                <h2>Classes</h2>
+                <p>
+                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+                    <xsl:call-template name="testsuite.test.header"/>
+                    <xsl:apply-templates select="$insamepackage" mode="print.test">
+                        <xsl:sort select="@name"/>
+                    </xsl:apply-templates>
+                </table>
+                </p>
+            </xsl:if>
+        </body>
+    </html>
+</xsl:template>
+
+
+<!--
+    transform string like a.b.c to ../../../
+    @param path the path to transform into a descending directory path
+-->
+<xsl:template name="path">
+    <xsl:param name="path"/>
+    <xsl:if test="contains($path,'.')">
+        <xsl:text>../</xsl:text>
+        <xsl:call-template name="path">
+            <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
+        </xsl:call-template>
+    </xsl:if>
+    <xsl:if test="not(contains($path,'.')) and not($path = '')">
+        <xsl:text>../</xsl:text>
+    </xsl:if>
+</xsl:template>
+
+
+<!-- create the link to the stylesheet based on the package name -->
+<xsl:template name="create.stylesheet.link">
+    <xsl:param name="package.name"/>
+    <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
+</xsl:template>
+
+
+<!-- Page HEADER -->
+<xsl:template name="pageHeader">
+    <h1>Unit Test Results</h1>
+    <table width="100%">
+    <tr>
+        <td align="left"></td>
+        <td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://jakarta.apache.org/">Ant</a>.</td>
+    </tr>
+    </table>
+    <hr size="1"/>
+</xsl:template>
+
+<!-- class header -->
+<xsl:template name="testsuite.test.header">
+    <tr valign="top">
+        <th width="80%">Name</th>
+        <th>Tests</th>
+        <th>Errors</th>
+        <th>Failures</th>
+        <th nowrap="nowrap">Time(s)</th>
+    </tr>
+</xsl:template>
+
+<!-- method header -->
+<xsl:template name="testcase.test.header">
+    <tr valign="top">
+        <th>Name</th>
+        <th>Status</th>
+        <th width="80%">Type</th>
+        <th nowrap="nowrap">Time(s)</th>
+    </tr>
+</xsl:template>
+
+
+<!-- class information -->
+<xsl:template match="testsuite" mode="print.test">
+    <tr valign="top">
+        <xsl:attribute name="class">
+            <xsl:choose>
+                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
+                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
+                <xsl:otherwise>Pass</xsl:otherwise>
+            </xsl:choose>
+        </xsl:attribute>
+        <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
+        <td><xsl:apply-templates select="@tests"/></td>
+        <td><xsl:apply-templates select="@errors"/></td>
+        <td><xsl:apply-templates select="@failures"/></td>
+        <td><xsl:call-template name="display-time">
+                <xsl:with-param name="value" select="@time"/>
+            </xsl:call-template>
+        </td>
+    </tr>
+</xsl:template>
+
+<xsl:template match="testcase" mode="print.test">
+    <tr valign="top">
+        <xsl:attribute name="class">
+            <xsl:choose>
+                <xsl:when test="error">Error</xsl:when>
+                <xsl:when test="failure">Failure</xsl:when>
+                <xsl:otherwise>TableRowColor</xsl:otherwise>
+            </xsl:choose>
+        </xsl:attribute>
+        <td><xsl:value-of select="@name"/></td>
+        <xsl:choose>
+            <xsl:when test="failure">
+                <td>Failure</td>
+                <td><xsl:apply-templates select="failure"/></td>
+            </xsl:when>
+            <xsl:when test="error">
+                <td>Error</td>
+                <td><xsl:apply-templates select="error"/></td>
+            </xsl:when>
+            <xsl:otherwise>
+                <td>Success</td>
+                <td></td>
+            </xsl:otherwise>
+        </xsl:choose>
+        <td>
+            <xsl:call-template name="display-time">
+                <xsl:with-param name="value" select="@time"/>
+            </xsl:call-template>
+        </td>
+    </tr>
+</xsl:template>
+
+
+<!-- Note : the below template error and failure are the same style
+            so just call the same style store in the toolkit template -->
+<xsl:template match="failure">
+    <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<xsl:template match="error">
+    <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<!-- Style for the error and failure in the testcase template -->
+<xsl:template name="display-failures">
+    <xsl:choose>
+        <xsl:when test="not(@message)">N/A</xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="@message"/>
+        </xsl:otherwise>
+    </xsl:choose>
+    <!-- display the stacktrace -->
+    <br/><br/>
+    <code>
+        <xsl:call-template name="br-replace">
+            <xsl:with-param name="word" select="."/>
+        </xsl:call-template>
+    </code>
+    <!-- the latter is better but might be problematic for non-21" monitors... -->
+    <!--pre><xsl:value-of select="."/></pre-->
+</xsl:template>
+
+<xsl:template name="JS-escape">
+    <xsl:param name="string"/>
+    <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
+    <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),&quot;'&quot;,&quot;\&apos;&quot;)"/>
+    <xsl:value-of select="$tmp2"/>
+</xsl:template>
+
+<!--
+    template that will convert a carriage return into a br tag
+    @param word the text from which to convert CR to BR tag
+-->
+<xsl:template name="br-replace">
+    <xsl:param name="word"/>
+    <xsl:choose>
+        <xsl:when test="contains($word,'&#xA;')">
+            <xsl:value-of select="substring-before($word,'&#xA;')"/>
+            <br/>
+            <xsl:call-template name="br-replace">
+                <xsl:with-param name="word" select="substring-after($word,'&#xA;')"/>
+            </xsl:call-template>
+        </xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="$word"/>
+        </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template name="display-time">
+    <xsl:param name="value"/>
+    <xsl:value-of select="format-number($value,'0.000')"/>
+</xsl:template>
+
+<xsl:template name="display-percent">
+    <xsl:param name="value"/>
+    <xsl:value-of select="format-number($value,'0.00%')"/>
+</xsl:template>
+</xsl:stylesheet>
+
diff --git a/rampart_1_1/etc/junit-noframes.xsl b/rampart_1_1/etc/junit-noframes.xsl
new file mode 100644
index 0000000..a3d2285
--- /dev/null
+++ b/rampart_1_1/etc/junit-noframes.xsl
@@ -0,0 +1,468 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils" version="1.0">
+<xsl:output method="html" indent="yes" encoding="US-ASCII"
+  doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
+<xsl:decimal-format decimal-separator="." grouping-separator="," />
+<!--
+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.
+ -->
+ 
+<!--
+ 
+ Sample stylesheet to be used with An JUnitReport output.
+ 
+ It creates a non-framed report that can be useful to send via
+ e-mail or such.
+ 
+ @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
+ @author Erik Hatcher <a href="mailto:ehatcher@apache.org"/>
+ 
+-->
+<xsl:template match="testsuites">
+    <html>
+        <head>
+            <title>Unit Test Results</title>
+    <style type="text/css">
+      body {
+        font:normal 68% verdana,arial,helvetica;
+        color:#000000;
+      }
+      table tr td, table tr th {
+          font-size: 68%;
+      }
+      table.details tr th{
+        font-weight: bold;
+        text-align:left;
+        background:#a6caf0;
+      }
+      table.details tr td{
+        background:#eeeee0;
+      }
+      
+      p {
+        line-height:1.5em;
+        margin-top:0.5em; margin-bottom:1.0em;
+      }
+      h1 {
+        margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
+      }
+      h2 {
+        margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
+      }
+      h3 {
+        margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
+      }
+      h4 {
+        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+      }
+      h5 {
+        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+      }
+      h6 {
+        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+      }
+      .Error {
+        font-weight:bold; color:red;
+      }
+      .Failure {
+        font-weight:bold; color:purple;
+      }
+      .Properties {
+        text-align:right;
+      }
+      </style>
+      <script type="text/javascript" language="JavaScript">
+        var TestCases = new Array();
+        var cur;
+        <xsl:for-each select="./testsuite">      
+            <xsl:apply-templates select="properties"/>
+        </xsl:for-each>
+
+       </script>
+       <script type="text/javascript" language="JavaScript"><![CDATA[
+        function displayProperties (name) {
+          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
+          var doc = win.document.open();
+          doc.write("<html><head><title>Properties of " + name + "</title>");
+          doc.write("<style>")
+          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
+          doc.write("table tr td, table tr th { font-size: 68%; }");
+          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
+          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
+          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
+          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
+          doc.write("</style>");
+          doc.write("</head><body>");
+          doc.write("<h3>Properties of " + name + "</h3>");
+          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
+          doc.write("<table class='properties'>");
+          doc.write("<tr><th>Name</th><th>Value</th></tr>");
+          for (prop in TestCases[name]) {
+            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
+          }
+          doc.write("</table>");
+          doc.write("</body></html>");
+          doc.close();
+          win.focus();
+        }
+      ]]>  
+      </script>
+        </head>
+        <body>
+            <a name="top"></a>
+            <xsl:call-template name="pageHeader"/>  
+            
+            <!-- Summary part -->
+            <xsl:call-template name="summary"/>
+            <hr size="1" width="95%" align="left"/>
+            
+            <!-- Package List part -->
+            <xsl:call-template name="packagelist"/>
+            <hr size="1" width="95%" align="left"/>
+            
+            <!-- For each package create its part -->
+            <xsl:call-template name="packages"/>
+            <hr size="1" width="95%" align="left"/>
+            
+            <!-- For each class create the  part -->
+            <xsl:call-template name="classes"/>
+            
+        </body>
+    </html>
+</xsl:template>
+    
+    
+    
+    <!-- ================================================================== -->
+    <!-- Write a list of all packages with an hyperlink to the anchor of    -->
+    <!-- of the package name.                                               -->
+    <!-- ================================================================== -->
+    <xsl:template name="packagelist">   
+        <h2>Packages</h2>
+        Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
+        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+            <xsl:call-template name="testsuite.test.header"/>
+            <!-- list all packages recursively -->
+            <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+                <xsl:sort select="@package"/>
+                <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
+                <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
+                <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
+                <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
+                <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
+                
+                <!-- write a summary for the package -->
+                <tr valign="top">
+                    <!-- set a nice color depending if there is an error/failure -->
+                    <xsl:attribute name="class">
+                        <xsl:choose>
+                            <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+                            <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+                        </xsl:choose>
+                    </xsl:attribute>
+                    <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
+                    <td><xsl:value-of select="$testCount"/></td>
+                    <td><xsl:value-of select="$errorCount"/></td>
+                    <td><xsl:value-of select="$failureCount"/></td>
+                    <td>
+                    <xsl:call-template name="display-time">
+                        <xsl:with-param name="value" select="$timeCount"/>
+                    </xsl:call-template>
+                    </td>
+                </tr>
+            </xsl:for-each>
+        </table>        
+    </xsl:template>
+    
+    
+    <!-- ================================================================== -->
+    <!-- Write a package level report                                       -->
+    <!-- It creates a table with values from the document:                  -->
+    <!-- Name | Tests | Errors | Failures | Time                            -->
+    <!-- ================================================================== -->
+    <xsl:template name="packages">
+        <!-- create an anchor to this package name -->
+        <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+            <xsl:sort select="@package"/>
+                <a name="{@package}"></a>
+                <h3>Package <xsl:value-of select="@package"/></h3>
+                
+                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+                    <xsl:call-template name="testsuite.test.header"/>
+            
+                    <!-- match the testsuites of this package -->
+                    <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
+                </table>
+                <a href="#top">Back to top</a>
+                <p/>
+                <p/>
+        </xsl:for-each>
+    </xsl:template>
+    
+    <xsl:template name="classes">
+        <xsl:for-each select="testsuite">
+            <xsl:sort select="@name"/>
+            <!-- create an anchor to this class name -->
+            <a name="{@name}"></a>
+            <h3>TestCase <xsl:value-of select="@name"/></h3>
+            
+            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+              <xsl:call-template name="testcase.test.header"/>
+              <!--
+              test can even not be started at all (failure to load the class)
+              so report the error directly
+              -->
+                <xsl:if test="./error">
+                    <tr class="Error">
+                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
+                    </tr>
+                </xsl:if>
+                <xsl:apply-templates select="./testcase" mode="print.test"/>
+            </table>
+            <div class="Properties">
+                <a>
+                    <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
+                    Properties &#187;
+                </a>
+            </div>
+            <p/>
+            
+            <a href="#top">Back to top</a>
+        </xsl:for-each>
+    </xsl:template>
+    
+    <xsl:template name="summary">
+        <h2>Summary</h2>
+        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
+        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
+        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
+        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
+        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
+        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+        <tr valign="top">
+            <th>Tests</th>
+            <th>Failures</th>
+            <th>Errors</th>
+            <th>Success rate</th>
+            <th>Time</th>
+        </tr>
+        <tr valign="top">
+            <xsl:attribute name="class">
+                <xsl:choose>
+                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+                </xsl:choose>
+            </xsl:attribute>
+            <td><xsl:value-of select="$testCount"/></td>
+            <td><xsl:value-of select="$failureCount"/></td>
+            <td><xsl:value-of select="$errorCount"/></td>
+            <td>
+                <xsl:call-template name="display-percent">
+                    <xsl:with-param name="value" select="$successRate"/>
+                </xsl:call-template>
+            </td>
+            <td>
+                <xsl:call-template name="display-time">
+                    <xsl:with-param name="value" select="$timeCount"/>
+                </xsl:call-template>
+            </td>
+
+        </tr>
+        </table>
+        <table border="0" width="95%">
+        <tr>
+        <td style="text-align: justify;">
+        Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
+        </td>
+        </tr>
+        </table>
+    </xsl:template>
+    
+  <!--
+   Write properties into a JavaScript data structure.
+   This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
+   -->
+  <xsl:template match="properties">
+    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
+    <xsl:for-each select="property">
+    <xsl:sort select="@name"/>
+        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
+    </xsl:for-each>
+  </xsl:template>
+    
+<!-- Page HEADER -->
+<xsl:template name="pageHeader">
+    <h1>Unit Test Results</h1>
+    <table width="100%">
+    <tr>
+        <td align="left"></td>
+        <td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org/ant'>Ant</a>.</td>
+    </tr>
+    </table>
+    <hr size="1"/>
+</xsl:template>
+
+<xsl:template match="testsuite" mode="header">
+    <tr valign="top">
+        <th width="80%">Name</th>
+        <th>Tests</th>
+        <th>Errors</th>
+        <th>Failures</th>
+        <th nowrap="nowrap">Time(s)</th>
+    </tr>
+</xsl:template>
+
+<!-- class header -->
+<xsl:template name="testsuite.test.header">
+    <tr valign="top">
+        <th width="80%">Name</th>
+        <th>Tests</th>
+        <th>Errors</th>
+        <th>Failures</th>
+        <th nowrap="nowrap">Time(s)</th>
+    </tr>
+</xsl:template>
+
+<!-- method header -->
+<xsl:template name="testcase.test.header">
+    <tr valign="top">
+        <th>Name</th>
+        <th>Status</th>
+        <th width="80%">Type</th>
+        <th nowrap="nowrap">Time(s)</th>
+    </tr>
+</xsl:template>
+
+
+<!-- class information -->
+<xsl:template match="testsuite" mode="print.test">
+    <tr valign="top">
+        <!-- set a nice color depending if there is an error/failure -->
+        <xsl:attribute name="class">
+            <xsl:choose>
+                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
+                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
+            </xsl:choose>
+        </xsl:attribute>
+    
+        <!-- print testsuite information -->
+        <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
+        <td><xsl:value-of select="@tests"/></td>
+        <td><xsl:value-of select="@errors"/></td>
+        <td><xsl:value-of select="@failures"/></td>
+        <td>
+            <xsl:call-template name="display-time">
+                <xsl:with-param name="value" select="@time"/>
+            </xsl:call-template>
+        </td>
+    </tr>
+</xsl:template>
+
+<xsl:template match="testcase" mode="print.test">
+    <tr valign="top">
+        <xsl:attribute name="class">
+            <xsl:choose>
+                <xsl:when test="failure | error">Error</xsl:when>
+            </xsl:choose>
+        </xsl:attribute>
+        <td><xsl:value-of select="@name"/></td>
+        <xsl:choose>
+            <xsl:when test="failure">
+                <td>Failure</td>
+                <td><xsl:apply-templates select="failure"/></td>
+            </xsl:when>
+            <xsl:when test="error">
+                <td>Error</td>
+                <td><xsl:apply-templates select="error"/></td>
+            </xsl:when>
+            <xsl:otherwise>
+                <td>Success</td>
+                <td></td>
+            </xsl:otherwise>
+        </xsl:choose>
+        <td>
+            <xsl:call-template name="display-time">
+                <xsl:with-param name="value" select="@time"/>
+            </xsl:call-template>
+        </td>
+    </tr>
+</xsl:template>
+
+
+<xsl:template match="failure">
+    <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<xsl:template match="error">
+    <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<!-- Style for the error and failure in the tescase template -->
+<xsl:template name="display-failures">
+    <xsl:choose>
+        <xsl:when test="not(@message)">N/A</xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="@message"/>
+        </xsl:otherwise>
+    </xsl:choose>
+    <!-- display the stacktrace -->
+    <code>
+        <br/><br/>
+        <xsl:call-template name="br-replace">
+            <xsl:with-param name="word" select="."/>
+        </xsl:call-template>
+    </code>
+    <!-- the later is better but might be problematic for non-21" monitors... -->
+    <!--pre><xsl:value-of select="."/></pre-->
+</xsl:template>
+
+<xsl:template name="JS-escape">
+    <xsl:param name="string"/>
+    <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
+    <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),&quot;'&quot;,&quot;\&apos;&quot;)"/>
+    <xsl:value-of select="$tmp2"/>
+</xsl:template>
+
+<!--
+    template that will convert a carriage return into a br tag
+    @param word the text from which to convert CR to BR tag
+-->
+<xsl:template name="br-replace">
+    <xsl:param name="word"/>
+    <xsl:choose>
+        <xsl:when test="contains($word,'&#xA;')">
+            <xsl:value-of select="substring-before($word,'&#xA;')"/>
+            <br/>
+            <xsl:call-template name="br-replace">
+                <xsl:with-param name="word" select="substring-after($word,'&#xA;')"/>
+            </xsl:call-template>
+        </xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="$word"/>
+        </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template name="display-time">
+    <xsl:param name="value"/>
+    <xsl:value-of select="format-number($value,'0.000')"/>
+</xsl:template>
+
+<xsl:template name="display-percent">
+    <xsl:param name="value"/>
+    <xsl:value-of select="format-number($value,'0.00%')"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/rampart_1_1/etc/maven.xml b/rampart_1_1/etc/maven.xml
new file mode 100644
index 0000000..c235746
--- /dev/null
+++ b/rampart_1_1/etc/maven.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+

+    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.

+-->

+

+

+<!-- $Rev: 330371 $ $Date: 2005-11-02 16:57:37 -0500 (Wed, 02 Nov 2005) $ -->

+

+<project default="default"

+    xmlns:j="jelly:core"

+    xmlns:u="jelly:util"

+    xmlns:ant="jelly:ant"

+    xmlns:maven="jelly:maven"

+    xmlns:define="jelly:define"

+    xmlns:velocity="jelly:velocity"

+    >

+

+    <!-- ================= -->

+    <!-- Global Properties -->

+    <!-- ================= -->

+

+    <!-- Determine what the top-level project root is -->

+    <j:set var="project.root" value="${pom.parentBasedir().getParentFile().getCanonicalFile()}"/>

+

+    <!-- ==================== -->

+    <!-- Default Global Goals -->

+    <!-- ==================== -->

+

+    <goal name="default">

+        <attainGoal name="jar:install"/>

+    </goal>

+

+    <goal name="build">

+        <attainGoal name="default"/>

+    </goal>

+

+    <goal name="rebuild">

+        <attainGoal name="clean"/>

+        <attainGoal name="build"/>

+    </goal>

+

+    <!-- For testing -->

+    <goal name="hello">

+        <ant:echo>

+            H E L L O

+            ---------

+            Module Name ${pom.name} [${pom.currentVersion}]

+            Axis2: ${axis2_version}

+        </ant:echo>

+    </goal>

+

+    <postGoal name="java:prepare-filesystem">

+      <u:file var="file" name="${maven.home}/lib/jalopy.jar"/>

+      <j:if test="${file.exists()}">

+        <ant:path id="jalopy.library">

+          <ant:fileset dir="${maven.home}/lib">

+            <ant:include name="jalopy.jar"/>

+          </ant:fileset>

+        </ant:path>

+        <maven:addPath id="maven.dependency.classpath" refid="jalopy.library"/>

+      </j:if>

+    </postGoal>

+

+    <!-- Remove classes which depend on changed files, so they will rebuild. -->

+    <!-- TODO: Fix me

+    <preGoal name="java:compile">

+        <j:if test="${sourcesPresent}">

+            <ant:depend srcdir="${maven.compile.source}"

+                destdir="${maven.build.dest}"

+                dump="false"

+                closure="false">

+                <j:forEach var="sm" items="${pom.build.sourceModifications}">

+                    <ant:available property="classPresent" classname="${sm.className}"/>

+                    <j:if test="${classPresent != 'true'}">

+                        <j:forEach var="exclude" items="${sm.excludes}">

+                            <ant:exclude name="${exclude}"/>

+                        </j:forEach>

+                        <j:forEach var="include" items="${sm.includes}">

+                            <ant:include name="${include}"/>

+                        </j:forEach>

+                    </j:if>

+                </j:forEach>

+            </ant:depend>

+        </j:if>

+    </preGoal>

+    -->

+

+    <!-- Construct dependency lists for inclusion in generated jar. -->

+    <!-- putting this goal here produces a circular dependency -->

+

+    <!-- Remove the log files -->

+    <goal name="clobber"

+        description="Removes all (non-repository installed) build generated files">

+

+        <!-- Let clean:clean do some work first -->

+        <attainGoal name="clean:clean"/>

+

+        <j:jelly xmlns="jelly:ant">

+            <delete quiet="false" failonerror="false">

+                <fileset dir="${basedir}">

+                    <include name="maven.log"/>

+                    <include name="velocity.log*"/>

+                    <include name="junit*.properties"/>

+                </fileset>

+            </delete>

+        </j:jelly>

+

+    </goal>

+

+    <!-- Cleanse source files -->

+    <goal name="cleanse-sources"

+        description="Cleanse source files, removing tabs and translating CRLF -> LF">

+

+        <j:scope xmlns="jelly:ant">

+

+            <!-- Cleanse sources -->

+            <j:set var="srcdir" value="${basedir}/src/java"/>

+            <u:available file="">

+                <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">

+                    <include name="**/*.java"/>

+                </fixcrlf>

+                <fixcrlf srcdir="${basedir}" eol="lf" eof="remove" tab="remove" tablength="4">

+                    <include name="**/*.xml"/>

+                    <include name="**/*.html"/>

+                </fixcrlf>

+            </u:available>

+

+            <!-- Cleanse test sources -->

+            <j:set var="srcdir" value="${basedir}/src/test"/>

+            <u:available file="${srcdir}">

+                <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">

+                    <include name="**/*.java"/>

+                    <include name="**/*.xml"/>

+                    <include name="**/*.html"/>

+                </fixcrlf>

+                <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">

+                    <include name="**/*.xml"/>

+                    <include name="**/*.html"/>

+                </fixcrlf>

+            </u:available>

+

+            <!-- Cleanse xdocs -->

+            <j:set var="srcdir" value="${basedir}/src/xdocs"/>

+            <u:available file="${srcdir}">

+                <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">

+                    <include name="**/*.xml"/>

+                    <include name="**/*.html"/>

+                </fixcrlf>

+            </u:available>

+

+            <!-- Cleanse build files -->

+            <fixcrlf srcdir="." eol="lf" tab="remove" eof="remove" tablength="4">

+                <include name="project.xml"/>

+                <include name="maven.xml"/>

+            </fixcrlf>

+

+            <!-- Cleanse scripts -->

+            <j:set var="srcdir" value="${basedir}/src/bin"/>

+            <u:available file="${srcdir}">

+                <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" tablength="4">

+                    <include name="**/*"/>

+                </fixcrlf>

+            </u:available>

+

+        </j:scope>

+

+    </goal>

+

+    <goal name="java-src"

+        description="Creates an archive containing only java source.">

+

+        <u:available file="${basedir}/src/java">

+            <j:set var="javaSrcBuilt" value="true"/>

+            <ant:mkdir dir="${basedir}/target"/>

+            <ant:jar destfile="${basedir}/target/${pom.artifactId}-${pom.currentVersion}-java-src.jar">

+                <fileset dir="${basedir}/src/java"/>

+                <u:available file="${basedir}/target/xmlbeans">

+                    <fileset dir="${basedir}/target/xmlbeans"/>

+                </u:available>

+            </ant:jar>

+        </u:available>

+

+        <j:if test="${javaSrcBuilt != 'true'}">

+            <u:available file="${basedir}/target/xmlbeans">

+                <j:set var="java-src.built" value="true"/>

+                <ant:mkdir dir="${basedir}/target"/>

+                <ant:jar destfile="${basedir}/target/${pom.artifactId}-${pom.currentVersion}-java-src.jar">

+                    <fileset dir="${basedir}/target/xmlbeans"/>

+                </ant:jar>

+            </u:available>

+        </j:if>

+    </goal>

+

+    <!-- If there is no src/test directory you can

+    turn off clover in that module by overriding this goal to do nothing -->

+    <goal name="clover.wrapper">

+        <attainGoal name="clover"/>

+    </goal>

+

+    <preGoal name="clover:test">

+        <j:set var="cloveroverride" value="true"/>

+    </preGoal>

+

+    <!-- Check if the tests need to run -->

+    <!--

+    <preGoal name="test:test">

+        <j:if test="${context.getVariable('maven.test.force') == null}">

+            <j:if test="${cloveroverride != 'true'}">

+                <j:set var="uptodatePropName" value="tests.uptodate"/>

+                <j:remove var="${uptodatePropName}"/>

+                <ant:mkdir dir="${basedir}/target/test-reports/"/>

+                <j:set var="uptodateFile" value="${basedir}/target/test-reports/tstamp"/>

+

+                <ant:uptodate property="${uptodatePropName}" targetfile="${uptodateFile}">

+                    <ant:srcfiles dir="${basedir}/src/" includes="**/*"/>

+                </ant:uptodate>

+

+                <j:if test="${context.getVariable(uptodatePropName) == 'true'}">

+                    <ant:echo>NOTICE: Skipping tests; they seem to have passed already</ant:echo>

+                    <j:set var="maven.test.skip" value="true"/>

+                    <j:set var="unitTestSourcesPresent" value="false"/>

+                </j:if>

+            </j:if>

+        </j:if>

+    </preGoal>

+    -->

+    <!-- Update the timestamp of the last successful test -->

+    <!--

+    <postGoal name="test:test">

+        <j:if test="${context.getVariable('maven.test.failure') == null}">

+            <ant:touch file="${basedir}/target/test-reports/tstamp"/>

+        </j:if>

+    </postGoal>

+    -->

+</project>

diff --git a/rampart_1_1/etc/project.properties b/rampart_1_1/etc/project.properties
new file mode 100644
index 0000000..10a415a
--- /dev/null
+++ b/rampart_1_1/etc/project.properties
@@ -0,0 +1,212 @@
+# -------------------------------------------------------------------

+# Copyright 2001-2006 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.

+# -------------------------------------------------------------------

+

+

+# -------------------------------------------------------------------

+#                Project Information

+# -------------------------------------------------------------------

+version_number=1.1.1-SNAPSHOT

+#version_affix=

+axis2_version=${version_number}

+addressing_version=${axis2_version}

+rampart_version=1.1

+rahas_version=1.1

+secpolicy_version=1.1

+rampart_module_version=1.1

+rahas_module_version=1.1

+soapmonitor_version=${axis2_version}

+savan_version=${axis2_version}

+

+# -------------------------------------------------------------------

+#                Dependency Repositories

+# -------------------------------------------------------------------

+maven.repo.remote=\

+http://repo1.maven.org/maven/,\

+http://ws.zones.apache.org/repository/,\

+http://people.apache.org/repo/m1-ibiblio-rsync-repository/,\

+http://jibx.sourceforge.net/maven/

+

+# -------------------------------------------------------------------

+#                Multiproject includes and excludes

+# -------------------------------------------------------------------

+

+optional.includes=

+

+maven.multiproject.includes=\

+modules/common/project.xml,\

+modules/java2wsdl/project.xml,\

+modules/adb/project.xml,\

+modules/adb-codegen/project.xml,\

+modules/codegen/project.xml,\

+modules/xmlbeans/project.xml,\

+modules/java2wsdl/project.xml,\

+modules/kernel/project.xml,\

+modules/addressing/project.xml,\

+modules/tool/project.xml,\

+modules/samples/project.xml,\

+modules/security/project.xml,\

+modules/spring/project.xml,\

+modules/soapmonitor/project.xml,\

+modules/integration/project.xml,\

+modules/saaj/project.xml,\

+modules/jibx/project.xml,\

+modules/savan/project.xml,\

+modules/rahas/project.xml,\

+modules/secpolicy/project.xml,\

+${optional.includes}

+

+#maven.multiproject.excludes=modules/tool/project.xml

+

+maven.multiproject.includes.requiresJDK15=\

+modules/jaxbri/project.xml,\

+modules/jaxws/project.xml

+

+# -------------------------------------------------------------------

+#                JUnit

+# -------------------------------------------------------------------

+maven.junit.jvmargs=-Xmx256m -Djava.awt.headless=true

+maven.junit.fork=true

+

+# -------------------------------------------------------------------

+#                Compile

+# -------------------------------------------------------------------

+maven.compile.optimize=false

+maven.compile.fork=true

+maven.compile.target=1.4

+maven.compile.source=1.4

+

+# -------------------------------------------------------------------

+#                Versions of dependencies

+# -------------------------------------------------------------------

+activation.version=1.1

+annogen.version=0.1.0

+ant.version=1.6.5

+axiom.version=1.2.1

+backport_util_concurrent.version=2.2

+bcel.version=5.2

+bcprov.version=jdk13-133

+commons.codec.version=1.3

+commons.fileupload.version=1.1.1

+commons.io.version=1.2

+commons.httpclient.version=3.0.1

+commons.logging.version=1.1

+geronimo.spec.jms.version=1.1-rc4

+groovy.all.version=1.0-jsr-06

+jakarta.httpcore.version=4.0-alpha2

+javamail.version=1.4

+jaxbri.version=2.0.2

+jaxen.version=1.1-beta-10

+jaxme.version=0.5.2

+jibx.version=1.1.2

+junit.version=3.8.2

+maven.itest.plugin.version=1.0

+maven.jar.plugin.version=1.8-SNAPSHOT

+maven.multiproject.plugin.version=1.5-SNAPSHOT

+maven.plugin.plugin.version=1.8-SNAPSHOT

+maven.test.plugin.version=1.8.1-SNAPSHOT

+opensaml.version=1.1

+neethi.version=2.0

+servletapi.version=2.3

+spring.version=1.2.8

+stax.api.version=1.0.1

+stax.impl.artifactid=wstx

+stax.impl.groupid=woodstox

+stax.impl.version=asl-3.1.0

+stax_utils.version=20060915 

+woden.version=1.0.0M6

+wsdl4j.version=1.6.2

+wss4j.version=1.5.1

+xalan.version=2.7.0

+xbean.version=2.2.0

+xerces.version=2.8.1

+xml_apis.version=1.3.03

+XmlSchema.version=1.2

+xmlsec.version=1.3.0

+xmlunit.version=1.0

+log4j.version=1.2.13

+

+# ------------------------------------------------------------------------

+# M A V E N  J A R  O V E R R I D E

+# ------------------------------------------------------------------------

+maven.jar.override =off

+

+# ------------------------------------------------------------------------

+# Jars set explicity by path.

+# ------------------------------------------------------------------------

+

+dependencies.dir=${basedir}/../../lib

+

+maven.jar.annogen=${dependencies.dir}/annogen-${annogen.version}.jar

+maven.jar.ant=${dependencies.dir}/ant-${ant.version}.jar

+maven.jar.axiom-api=${dependencies.dir}/axiom-api-${axiom.version}.jar

+maven.jar.axiom-dom=${dependencies.dir}/axiom-dom-${axiom.version}.jar

+maven.jar.axiom-impl=${dependencies.dir}/axiom-impl-${axiom.version}.jar

+maven.jar.backport-util-concurrent=${dependencies.dir}/backport-util-concurrent-${backport_util_concurrent.version}.jar

+maven.jar.bcel=${dependencies.dir}/bcel-${bcel.version}.jar

+maven.jar.bcprov=${dependencies.dir}/bcprov-${bcprov.version}.jar

+maven.jar.commons-codec=${dependencies.dir}/commons-codec-${commons.codec.version}.jar

+maven.jar.commons-fileupload=${dependencies.dir}/commons-fileupload-${commons.fileupload.version}.jar

+maven.jar.commons-httpclient=${dependencies.dir}/commons-httpclient-${commons.httpclient.version}.jar

+maven.jar.commons-logging=${dependencies.dir}/commons-logging-${commons.logging.version}.jar

+maven.jar.geronimo-spec-activation=${dependencies.dir}/geronimo-spec-activation-${geronimo.spec.activation.version}.jar

+maven.jar.geronimo-spec-javamail=${dependencies.dir}/geronimo-spec-javamail-${geronimo.spec.javamail.version}.jar

+maven.jar.geronimo-spec-jms=${dependencies.dir}/geronimo-spec-jms-${geronimo.spec.jms.version}.jar

+maven.jar.groovy-all=${dependencies.dir}/groovy-all-${groovy.all.version}.jar

+maven.jar.jakarta-httpcore=${dependencies.dir}/jakarta-httpcore-${jakarta.httpcore.version}.jar

+maven.jar.jaxen=${dependencies.dir}/jaxen-${jaxen.version}.jar

+maven.jar.jaxme2=${dependencies.dir}/jaxme2-${jaxme.version}.jar

+maven.jar.jaxmeapi=${dependencies.dir}/jaxmeapi-${jaxme.version}.jar

+maven.jar.jaxmejs=${dependencies.dir}/jaxmejs-${jaxme.version}.jar

+maven.jar.jaxmexs=${dependencies.dir}/jaxmexs-${jaxme.version}.jar

+maven.jar.jibx-bind=${dependencies.dir}/jibx-bind-${jibx.version}.jar

+maven.jar.jibx-run=${dependencies.dir}/jibx-run-${jibx.version}.jar

+maven.jar.junit=${dependencies.dir}/junit-${junit.version}.jar

+maven.jar.log4j=${dependencies.dir}/log4j-${log4j.version}.jar

+maven.jar.maven-itest-plugin=${dependencies.dir}/maven-itest-plugin-${maven.itest.plugin.version}.jar

+maven.jar.opensaml=${dependencies.dir}/opensaml-${opensaml.version}.jar

+maven.jar.policy=${dependencies.dir}/neethi-${policy.version}.jar

+maven.jar.servletapi=${dependencies.dir}/servletapi-${servletapi.version}.jar

+maven.jar.spring=${dependencies.dir}/spring-${spring.version}.jar

+maven.jar.stax-api=${dependencies.dir}/stax-api-${stax.api.version}.jar

+maven.jar.wsdl4j=${dependencies.dir}/wsdl4j-${wsdl4j.version}.jar

+maven.jar.wss4j=${dependencies.dir}/wss4j-${wss4j.version}.jar

+maven.jar.wstx=${dependencies.dir}/${stax.impl.artifactid}-${stax.impl.version}.jar

+maven.jar.xalan=${dependencies.dir}/xalan-${xalan.version}.jar

+maven.jar.xbean=${dependencies.dir}/xbean-${xbean.version}.jar

+maven.jar.xercesImpl=${dependencies.dir}/xercesImpl-${xerces.version}.jar

+maven.jar.xml-apis=${dependencies.dir}/xml-apis-${xml_apis.version}.jar

+maven.jar.XmlSchema=${dependencies.dir}/XmlSchema-${XmlSchema.version}.jar

+maven.jar.xmlsec=${dependencies.dir}/xmlsec-${xmlsec.version}.jar

+maven.jar.xmlunit=${dependencies.dir}/xmlunit-${xmlunit.version}.jar

+

+# -------------------------------------------------------------------

+#                Clover

+# -------------------------------------------------------------------

+maven.clover.build = ${maven.build.dir}

+#maven.clover.includes=**/org/apache/**.java

+maven.clover.excludes=sample/**/*.java,userguide/**/*.java, test/**/*.java

+maven.clover.license.path=clover.license

+

+# -------------------------------------------------------------------

+#                xdoc

+# -------------------------------------------------------------------

+maven.xdoc.date=left

+maven.xdoc.version=${pom.currentVersion}

+maven.xdoc.includeProjectDocumentation=no

+maven.html2xdoc.enabled=false

+maven.html2xdoc.dir=./xdocs

+maven.pdf.navigationFile=navigation-pdf.xml

+maven.allreports.disable=true

diff --git a/rampart_1_1/etc/project.xml b/rampart_1_1/etc/project.xml
new file mode 100644
index 0000000..d087eda
--- /dev/null
+++ b/rampart_1_1/etc/project.xml
@@ -0,0 +1,431 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+/*
+ * 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.
+ */
+ -->
+
+<project>
+    <name>Axis2</name>
+    <pomVersion>3</pomVersion>
+    <!-- a unique name for this project -->
+    <name>Apache Axis2</name>
+    <id>axis2</id>
+    <groupId>org.apache.axis2</groupId>
+    <package>org.apache.axis2</package>
+    <currentVersion>${axis2_version}</currentVersion>
+    <!-- details about the organization that 'owns' the project -->
+    <organization>
+        <name>Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+        <logo>http://www.apache.org/images/asf-logo.gif</logo>
+    </organization>
+    <inceptionYear>2004</inceptionYear>
+    <package>org.apache.axis2</package>
+    <logo>http://ws.apache.org/axis2/images/axis.jpg</logo>
+    <description>Axis2 is an effort to re-design and totally re-implement both Axis/Java and
+        (eventually) Axis/C++ on a new architecture. Evolving from the now standard "handler chain"
+        model which Axis1 pioneered, Axis2 is developing a more flexible pipeline architecture which
+        can yet be managed and packaged in a more organized manner. This new design acknowledges the
+        maturing of the Web services space in terms of new protocols such as WS-ReliableMessaging,
+        WS-Security and WS-Addressing that are built on top of the base SOAP system. At the time
+        Axis1 was designed, while it was fully expected that other protocols such as
+        WS-ReliableMessaging would be built on top of it, there was not a proper extension
+        architecture defined to enable clean composition of such layers. Thus, one of the key
+        motivations for Axis2 is to provide a clean and simple environment for like Apache Sandesha
+        and Apache WSS4J to layer on top of the base SOAP system. Another driving force for Axis2 as
+        well as the move away from RPC oriented Web services towards more document-oriented, message
+        style asynchronous service interactions. The Axis2 project is centered on a new
+        representation for SOAP messages called AXIOM (AXIs Object Model). AXIOM consists of two
+        parts: a complete XML Infoset representation and a SOAP Infoset representation on top of
+        that. The XML Infoset representation provides a JDOM-like simple API but is built on a
+        deferred model via a StAX-based (Streaming API for XML) pull parsing API. A key feature of
+        AXIOM is that it allows one to stop building the XML tree and just access the pull stream
+        directly; thus enabling both maximum flexibility and maximum performance. This approach
+        allows us to support multiple levels of abstraction for consuming and offering Web services:
+        using plain AXIOM, using generated code and statically data-bound data types and so on. At
+        the time of Axis1's design, RPC-style, synchronous, request-response interactions were the
+        order of the day for Web services. Today service interactions are much more message
+        -oriented and exploit many different message exchange patterns. The Axis2 engine
+        architecture is careful to not build in any assumptions of request-response patterns to
+        ensure that it can be used easily to support arbitrary message exchange
+        patterns.</description>
+    <shortDescription>Axis 2.0</shortDescription>
+    <!-- the project home page -->
+    <url>http://ws.apache.org/axis2/</url>
+    <issueTrackingUrl>http://issues.apache.org/jira/browse/AXIS2</issueTrackingUrl>
+    <siteAddress>ws.apache.org/axis2</siteAddress>
+    <siteDirectory>/www/ws.apache.org/axis2/</siteDirectory>
+    <distributionDirectory>/www/ws.apache.org/builds/</distributionDirectory>
+    <repository>
+        <connection>
+            scm:svn:http://svn.apache.org:repos/asf/webservices:axis2/trunk/java</connection>
+        <developerConnection>
+            scm:svn:http://svn.apache.org:repos/asf/webservices:axis2/trunk/java</developerConnection>
+        <url>http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/java?root=Apache-SVN</url>
+    </repository>
+    <mailingLists>
+        <mailingList>
+            <name>Axis Developer List</name>
+            <subscribe>axis-dev-subscribe@ws.apache.org</subscribe>
+            <unsubscribe>axis-dev-unsubscribe@ws.apache.org</unsubscribe>
+            <archive>http://marc.theaimsgroup.com/?l=axis-dev&amp;r=1&amp;w=2</archive>
+        </mailingList>
+        <mailingList>
+            <name>Axis User List</name>
+            <subscribe>axis-user-subscribe@ws.apache.org</subscribe>
+            <unsubscribe>axis-user-unsubscribe@ws.apache.org</unsubscribe>
+            <archive>http://marc.theaimsgroup.com/?l=axis-user&amp;r=1&amp;w=2</archive>
+        </mailingList>
+    </mailingLists>
+    <!-- ========== -->
+    <!-- Developers -->
+    <!-- ========== -->
+    <developers>
+        <developer>
+            <name>Saminda Abeyruwan</name>
+            <id>saminda</id>
+            <email>saminda AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Rajith Attapattu</name>
+            <id>rajith</id>
+            <email>rajith AT apache.org</email>
+            <organization>Redhat - Canada</organization>
+        </developer>
+        <developer>
+            <name>Afkham Azeez</name>
+            <id>azeez</id>
+            <email>azeez AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Jeff Barrett</name>
+            <organization>IBM</organization>
+        </developer>
+        <developer>
+            <name>Keith Chapman</name>
+            <id>keith</id>
+            <email>keith AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Eran Chinthaka</name>
+            <id>chinthaka</id>
+            <email>chinthaka AT wso2.com</email>
+            <organization>WSO2</organization>
+            <url>http://www.apache.org/~chinthaka</url>
+        </developer>
+        <developer>
+            <name>Glen Daniels</name>
+            <id>gdaniels</id>
+            <email>gdaniels AT apache.org</email>
+            <organization>Sonic Software</organization>
+        </developer>
+        <developer>
+            <name>Brian DePradine</name>
+            <id>pradine</id>
+            <email>pradine AT uk.ibm.com</email>
+            <organization>IBM</organization>
+        </developer>
+        <developer>
+            <name>Jaliya Ekanayake</name>
+            <id>jaliya</id>
+            <email>jaliya AT opensource.lk</email>
+            <organization>Indiana University, USA</organization>
+            <url>http://www.apache.org/~jaliya</url>
+        </developer>
+        <developer>
+            <name>Ruchith Fernando</name>
+            <id>ruchithf</id>
+            <email>ruchith AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Nicholas Gallardo</name>
+            <organization>IBM</organization>
+        </developer>
+        <developer>
+            <name>Thilina Gunarathne</name>
+            <id>thilina</id>
+            <email>thilina AT wso2.com</email>
+            <organization>WSO2</organization>
+	    <url>www.apache.org/~thilina</url>
+        </developer>
+        <developer>
+            <name>Chathura Herath</name>
+            <id>chathura</id>
+            <email>chathura AT opensource.lk</email>
+            <organization>Indiana University, USA</organization>
+            <url>www.apache.org/~chathura</url>
+        </developer>
+        <developer>
+            <name>Deepal Jayasinghe</name>
+            <id>deepal</id>
+            <email>deepal AT wso2.com</email>
+            <organization>WSO2</organization>
+            <url>http://www.apache.org/~deepal</url>
+        </developer>
+        <developer>
+            <name>Robert Lazarski</name>
+            <id>robertlazarski</id>
+            <email>robertlazarski AT gmail.com</email>
+            <organization>Brazil Outsource</organization>
+        </developer>
+        <developer>
+            <name>Steve Loughran</name>
+            <id>stevel</id>
+            <email>stevel AT apache.org</email>
+            <organization>HP labs</organization>
+        </developer>
+        <developer>
+            <name>Chatra Nakkawita</name>
+            <id>chatra</id>
+            <email>chatra AT WSO2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Srinath Perera</name>
+            <id>hemapani</id>
+            <email>hemapani AT apache.org</email>
+            <organization>Indiana University, USA</organization>
+            <url>http://www.apache.org/~hemapani</url>
+        </developer>
+        <developer>
+            <name>Ajith Ranabahu</name>
+            <id>ajith</id>
+            <email>ajith AT wso2.com</email>
+            <organization>University of Georgia</organization>
+            <url>http://www.apache.org/~ajith</url>
+        </developer>
+        <developer>
+            <name>Venkat Reddy</name>
+            <id>venkat</id>
+            <email>vreddyp AT gmail.com</email>
+            <organization>Computer Associates</organization>
+        </developer>
+        <developer>
+            <name>Michael Rheinheimer</name>
+            <organization>IBM</organization>
+        </developer>
+        <developer>
+            <name>Sanka Samaranayake</name>
+            <id>sanka</id>
+            <email>sanka AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Lahiru Sandakith</name>
+            <id>sandakith</id>
+            <email>sandakith AT wso2.com</email>
+            <organization>WSO2</organization>
+            <url>http://www.lahiru.net</url>
+        </developer>
+        <developer>
+            <name>Rich Scheuerle</name>
+            <id>scheu</id>
+            <email>scheu AT us.ibm.com</email>
+            <organization>IBM</organization>
+        </developer>
+        <developer>
+            <name>Ashutosh Shahi</name>
+            <id>ashu</id>
+            <email>Ashutosh.Shahi AT ca.com</email>
+            <organization>Computer Associates</organization>
+        </developer>
+        <developer>
+            <name>Aleksander Slominski</name>
+            <id>alek</id>
+            <email>aslom AT cs.indiana.edu</email>
+            <organization>Indiana University Extreme! Computing Lab</organization>
+        </developer>
+        <developer>
+            <name>Dennis Sosnoski</name>
+            <id>dsosnoski</id>
+            <email>dms AT sosnoski.com</email>
+            <organization>Sosnoski Software</organization>
+        </developer>
+        <developer>
+            <name>Davanum Srinivas</name>
+            <id>dims</id>
+            <email>dims AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Jayachandra Sekhara Rao Sunkara</name>
+            <id>jaya</id>
+            <email>jayachandra AT gmail.com</email>
+            <organization>Computer Associates</organization>
+        </developer>
+        <developer>
+            <name>Amila Suriarachchi</name>
+            <id>amilas</id>
+            <email>amila AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Nikhil Thaker</name>
+            <organization>IBM</organization>
+        </developer>
+        <developer>
+            <name>Chamil Thanthrimudalige</name>
+            <id>chamil</id>
+            <email>chamil AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
+            <name>Dasarath Weerathunga</name>
+            <id>dasarath</id>
+            <email>dasarath AT opensource.lk</email>
+            <organization>Purdue University, USA</organization>
+        </developer>
+        <developer>
+            <name>Sanjiva Weerawarana</name>
+            <id>sanjiva</id>
+            <email>sanjiva AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+    </developers>
+    <contributors>
+        <contributor>
+            <name>Gayan Asanka</name>
+            <email>gayan AT opensource.lk</email>
+            <organization>Lanka Software Foundation</organization>
+        </contributor>
+        <contributor>
+            <name>Dharshana Dias</name>
+            <email/>
+            <organization>Lanka Software Foundation / University of Moratuwa</organization>
+        </contributor>
+        <contributor>
+            <name>Nadana Gunarathna</name>
+            <email>nadana AT opensource.lk</email>
+            <organization>Lanka Software Foundation</organization>
+        </contributor>
+        <contributor>
+            <name>Thilini Gunawardhana</name>
+            <email>thilini AT WSO2.com</email>
+            <organization>WSO2</organization>
+        </contributor>
+        <contributor>
+            <name>Anushka Kumara</name>
+            <email>anushkakumar AT gmail.com</email>
+            <organization>Lanka Software Foundation / University of Moratuwa</organization>
+        </contributor>
+        <contributor>
+            <name>Farhaan Mohideen</name>
+            <email>fmohideen AT valista.com</email>
+            <organization>Lanka Software Foundation</organization>
+        </contributor>
+        <contributor>
+            <name>Chinthaka Thilakarathne</name>
+            <email/>
+            <organization>Lanka Software Foundation / University of Moratuwa</organization>
+        </contributor>
+    </contributors>
+    <!-- build information for the project -->
+    <build>
+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
+        <sourceDirectory>src</sourceDirectory>
+        <unitTestSourceDirectory>test</unitTestSourceDirectory>
+        <!--
+            <sourceModifications>
+                <sourceModification>
+                    <className>fakeClass</className>
+                    <excludes>
+                        <exclude>org/apache/axis2</exclude>
+                        <exclude>**/_*.java</exclude>
+                    </excludes>
+                </sourceModification>
+            </sourceModifications
+        -->
+        <unitTest>
+            <excludes>
+                <exclude>**/*Abstract*.java</exclude>
+                <exclude>**/*Util*.java</exclude>
+                <exclude>**/*PhaseResolvingTest.java</exclude>
+            </excludes>
+            <includes>
+                <include>**/*Test.java</include>
+            </includes>
+            <resources>
+                <resource>
+                    <directory>${basedir}/test-resources</directory>
+                </resource>
+                <resource>
+                    <directory>conf</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                    </includes>
+                </resource>
+                <resource>
+                    <directory>src</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                        <include>**/*.xml</include>
+                        <include>**/*.xsl</include>
+                    </includes>
+                </resource>
+                <resource>
+                    <directory>test</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                        <include>**/*.xml</include>
+                    </includes>
+                </resource>
+            </resources>
+        </unitTest>
+        <resources>
+            <resource>
+                <directory>conf</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                    <include>**/*.xsl</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>${basedir}</directory>
+                <targetPath>META-INF</targetPath>
+                <includes>
+                    <include>NOTICE.txt</include>
+                    <include>LICENSE.txt</include>
+                </includes>
+            </resource>
+        </resources>
+    </build>
+    <!-- ======= -->
+    <!-- Reports -->
+    <!-- ======= -->
+    <reports>
+        <!-- report>maven-license-plugin</report>
+
+       <report>maven-pmd-plugin</report>
+       <report>maven-jdepend-plugin</report>
+       <report>maven-jxr-plugin</report>
+       <report>maven-javadoc-plugin</report>
+       <report>maven-clover-plugin</report>
+       <report>maven-junit-report-plugin</report -->
+        <report>maven-changes-plugin</report>
+    </reports>
+</project>
diff --git a/rampart_1_1/legal/bcel-LICENSE.txt b/rampart_1_1/legal/bcel-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/bcel-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/groovy-LICENSE.txt b/rampart_1_1/legal/groovy-LICENSE.txt
new file mode 100644
index 0000000..5befc0e
--- /dev/null
+++ b/rampart_1_1/legal/groovy-LICENSE.txt
@@ -0,0 +1,41 @@
+Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+    statements and notices.  Redistributions must also contain a
+    copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+    above copyright notice, this list of conditions and the
+    following disclaimer in the documentation and/or other
+    materials provided with the distribution.
+
+ 3. The name "groovy" must not be used to endorse or promote
+    products derived from this Software without prior written
+    permission of The Codehaus.  For written permission,
+    please contact info@codehaus.org.
+
+ 4. Products derived from this Software may not be called "groovy"
+    nor may "groovy" appear in their names without prior written
+    permission of The Codehaus. "groovy" is a registered
+    trademark of The Codehaus.
+
+ 5. Due credit should be given to The Codehaus -
+    http://groovy.codehaus.org/
+
+ THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/rampart_1_1/legal/rampart/bcprov-LICENSE.txt b/rampart_1_1/legal/rampart/bcprov-LICENSE.txt
new file mode 100644
index 0000000..bc3e5b6
--- /dev/null
+++ b/rampart_1_1/legal/rampart/bcprov-LICENSE.txt
@@ -0,0 +1,7 @@
+Copyright (c) 2000 - 2006 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)

+

+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
\ No newline at end of file
diff --git a/rampart_1_1/legal/rampart/commons-codec-LICENSE.txt b/rampart_1_1/legal/rampart/commons-codec-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/rampart/commons-codec-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/rampart/jaxen-LICENSE.txt b/rampart_1_1/legal/rampart/jaxen-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/rampart/jaxen-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/rampart/openSAML-LICENSE.txt b/rampart_1_1/legal/rampart/openSAML-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/rampart/openSAML-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/rampart/wss4j-LICENSE.txt b/rampart_1_1/legal/rampart/wss4j-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/rampart/wss4j-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/rampart/xercesImpl-LICENSE.txt b/rampart_1_1/legal/rampart/xercesImpl-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/rampart/xercesImpl-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/rampart/xml-apis-LICENSE.txt b/rampart_1_1/legal/rampart/xml-apis-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/rampart/xml-apis-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/rampart/xmlsec-LICENSE.txt b/rampart_1_1/legal/rampart/xmlsec-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/rampart/xmlsec-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/XmlSchema-LICENSE.txt b/rampart_1_1/legal/std/XmlSchema-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/XmlSchema-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/activation-LICENSE.txt b/rampart_1_1/legal/std/activation-LICENSE.txt
new file mode 100644
index 0000000..55ce20a
--- /dev/null
+++ b/rampart_1_1/legal/std/activation-LICENSE.txt
@@ -0,0 +1,119 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)�the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)�ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Section�2.1(b) above, no patent license is granted: (1)�for code that You delete from the Original Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)�Modifications made by that Contributor (or portions thereof); and (2)�the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sections�2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Section�2.2(b) above, no patent license is granted: (1)�for any code that Contributor has deleted from the Contributor Version; (2)�for infringements caused by: (i)�third party modifications of Contributor Version, or (ii)�the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections�2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48�C.F.R.�12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. 
+
+
+
diff --git a/rampart_1_1/legal/std/annogen-LICENSE.txt b/rampart_1_1/legal/std/annogen-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/annogen-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/axiom-api-LICENSE.txt b/rampart_1_1/legal/std/axiom-api-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/axiom-api-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/axiom-dom-LICENSE.txt b/rampart_1_1/legal/std/axiom-dom-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/axiom-dom-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/axiom-impl-LICENSE.txt b/rampart_1_1/legal/std/axiom-impl-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/axiom-impl-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/axis2-LICENSE.txt b/rampart_1_1/legal/std/axis2-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/axis2-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/backport-util-concurrent-LICENSE.txt b/rampart_1_1/legal/std/backport-util-concurrent-LICENSE.txt
new file mode 100644
index 0000000..387338e
--- /dev/null
+++ b/rampart_1_1/legal/std/backport-util-concurrent-LICENSE.txt
@@ -0,0 +1,46 @@
+The software comprising backport-util-concurrent is based in large
+part on the code from JSR166, and the package dl.util.concurrent.
+The software has been released to the public domain, as explained at:
+http://creativecommons.org/licenses/publicdomain, excepting portions
+of the class
+edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList,
+which were adapted from class java.util.ArrayList, written by Sun
+Microsystems, Inc, which are used with kind permission, and subject
+to the following:
+
+Copyright 2002-2004 Sun Microsystems, Inc. All rights reserved. Use is
+subject to the following license terms.
+
+  "Sun hereby grants you a non-exclusive, worldwide, non-transferrable
+  license to use and distribute the Java Software technologies as part
+  of a larger work in source and binary forms, with or without
+  modification, provided that the following conditions are met:
+
+   -Neither the name of or trademarks of Sun may be used to endorse or
+    promote products derived from the Java Software technology without
+    specific prior written permission.
+
+   -Redistributions of source or binary code must be accompanied by the
+    following notice and disclaimers:
+
+    Portions copyright Sun Microsystems, Inc. Used with kind permission.
+
+    This software is provided AS IS, without a warranty of any kind.  ALL
+    EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
+    WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PUPOSE OR
+    NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+    MICROSYSTEMS, INC. AND ITS LICENSORS SHALL NOT BE LIABLE
+    FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
+    USING, MODIFYING OR DISTRIBUTING THE SOFTWARE OR ITS
+    DERIVATIVES. IN NO EVENT WILL SUN MICROSYSTEMS, INC. OR
+    ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR
+    DATA, OR FOR DIRECT, INDIRECT,CONSQUENTIAL, INCIDENTAL
+    OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF
+    THE THEORY OR LIABILITY, ARISING OUT OF THE USE OF OR
+    INABILITY TO USE SOFTWARE, EVEN IF SUN MICROSYSTEMS, INC.
+    HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+    You acknowledge that Software is not designed, licensed or intended for
+    use in the design, construction, operation or maintenance of any nuclear
+    facility."
diff --git a/rampart_1_1/legal/std/commons-codec-LICENSE.txt b/rampart_1_1/legal/std/commons-codec-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/commons-codec-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/commons-fileupload-LICENSE.txt b/rampart_1_1/legal/std/commons-fileupload-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/commons-fileupload-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/commons-httpclient-LICENSE.txt b/rampart_1_1/legal/std/commons-httpclient-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/commons-httpclient-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/commons-logging-LICENSE.txt b/rampart_1_1/legal/std/commons-logging-LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/rampart_1_1/legal/std/commons-logging-LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/geronimo-spec-jms-LICENSE.txt b/rampart_1_1/legal/std/geronimo-spec-jms-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/geronimo-spec-jms-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/jakarta-httpcore-LICENSE.txt b/rampart_1_1/legal/std/jakarta-httpcore-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/jakarta-httpcore-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/jaxen-LICENSE.txt b/rampart_1_1/legal/std/jaxen-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/jaxen-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/jaxme-LICENSE.txt b/rampart_1_1/legal/std/jaxme-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/jaxme-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/jaxmeapi-LICENSE.txt b/rampart_1_1/legal/std/jaxmeapi-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/jaxmeapi-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/jaxmejs-LICENSE.txt b/rampart_1_1/legal/std/jaxmejs-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/jaxmejs-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/jaxmexs-LICENSE.txt b/rampart_1_1/legal/std/jaxmexs-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/jaxmexs-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/mail-LICENSE.txt b/rampart_1_1/legal/std/mail-LICENSE.txt
new file mode 100644
index 0000000..55ce20a
--- /dev/null
+++ b/rampart_1_1/legal/std/mail-LICENSE.txt
@@ -0,0 +1,119 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)�the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)�ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Section�2.1(b) above, no patent license is granted: (1)�for code that You delete from the Original Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)�Modifications made by that Contributor (or portions thereof); and (2)�the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sections�2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Section�2.2(b) above, no patent license is granted: (1)�for any code that Contributor has deleted from the Contributor Version; (2)�for infringements caused by: (i)�third party modifications of Contributor Version, or (ii)�the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections�2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48�C.F.R.�12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. 
+
+
+
diff --git a/rampart_1_1/legal/std/neethi-LICENSE.txt b/rampart_1_1/legal/std/neethi-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/neethi-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/servlet-api-LICENSE.txt b/rampart_1_1/legal/std/servlet-api-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/servlet-api-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/spring-LICENSE.txt b/rampart_1_1/legal/std/spring-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/spring-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/stax-api-LICENSE.txt b/rampart_1_1/legal/std/stax-api-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/stax-api-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/stax-utils-LICENSE.txt b/rampart_1_1/legal/std/stax-utils-LICENSE.txt
new file mode 100644
index 0000000..f353e12
--- /dev/null
+++ b/rampart_1_1/legal/std/stax-utils-LICENSE.txt
@@ -0,0 +1,33 @@
+Copyright (c) 2004, Christian Niles, unit12.net
+Copyright (c) 2004, Sun Microsystems, Inc.
+Copyright (c) 2006, John Kristian
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of the listed copyright holders nor the names
+      of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written
+      permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/rampart_1_1/legal/std/woden-LICENSE.txt b/rampart_1_1/legal/std/woden-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/woden-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/wsdl4j-LICENSE.txt b/rampart_1_1/legal/std/wsdl4j-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/wsdl4j-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/wstx-LICENSE.txt b/rampart_1_1/legal/std/wstx-LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/rampart_1_1/legal/std/wstx-LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/std/xbean-LICENSE.txt b/rampart_1_1/legal/std/xbean-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/xbean-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/xercesImpl-LICENSE.txt b/rampart_1_1/legal/std/xercesImpl-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/rampart_1_1/legal/std/xercesImpl-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   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.

+

diff --git a/rampart_1_1/legal/std/xml-apis-LICENSE.txt b/rampart_1_1/legal/std/xml-apis-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/std/xml-apis-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/war/jibx-run-LICENSE.txt b/rampart_1_1/legal/war/jibx-run-LICENSE.txt
new file mode 100644
index 0000000..c220984
--- /dev/null
+++ b/rampart_1_1/legal/war/jibx-run-LICENSE.txt
@@ -0,0 +1,25 @@
+Copyright (c) 2003-2006, Dennis M. Sosnoski
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+ * Neither the name of JiBX nor the names of its contributors may be used
+   to endorse or promote products derived from this software without specific
+   prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/rampart_1_1/legal/war/spring-LICENSE.txt b/rampart_1_1/legal/war/spring-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/war/spring-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/war/xerces-LICENSE.txt b/rampart_1_1/legal/war/xerces-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/war/xerces-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/legal/war/xml-apis-LICENSE.txt b/rampart_1_1/legal/war/xml-apis-LICENSE.txt
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/rampart_1_1/legal/war/xml-apis-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/maven.xml b/rampart_1_1/maven.xml
new file mode 100644
index 0000000..03dc2e1
--- /dev/null
+++ b/rampart_1_1/maven.xml
@@ -0,0 +1,1323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+
+<!--
+     | The main goals for multi project build are:
+     |
+     | default
+     |    Build all the modules
+     |
+     | clean
+     |    Deletes the 'target' directory in all projects
+     |
+     | clean-repo
+     |    Deletes the 'target' directory in all projects
+     |
+     | dist-bin
+     |		Creates the main binary distribution
+     |
+     | dist-src
+     |		Creates the source distribution
+     |
+     | dist-docs
+     |		Creates the docs distribution
+     |
+     | release
+     |      Creates the complete release (dist-bin, dist-src, dist-docs, war)
+     | war
+     |    Build the war
+   -->
+
+<project default="jar"
+         xmlns:j="jelly:core"
+         xmlns:u="jelly:util"
+         xmlns:deploy="deploy"
+         xmlns:modules="local:modules"
+         xmlns:ant="jelly:ant"
+         xmlns:plugin="plugin"
+         xmlns:macros="macros"
+         xmlns:maven="jelly:maven"
+         xmlns:define="jelly:define">
+
+    <j:set var="dist.name" value="${pom.artifactId}-${pom.currentVersion}"/>
+    <j:set var="dist.dir" value="target/dist"/>
+
+    <tstamp>
+        <format property="release_date" pattern="MMMM d, yyyy" locale="en"/>
+    </tstamp>
+
+    <!-- Test for >= JDK 1.5 to determine whether to include modules that require it -->
+
+    <ant:echo>${ant.java.version}</ant:echo>
+
+    <j:if test="${ant.java.version == '1.5'}">
+        <ant:echo>
+            JDK ${ant.java.version} detected, including the following modules:
+            ${maven.multiproject.includes.requiresJDK15}
+        </ant:echo>
+        <j:set var="maven.multiproject.includes"
+               value="${maven.multiproject.includes},${maven.multiproject.includes.requiresJDK15}"/>
+    </j:if>
+
+    <j:set var="modules" value="*"/>
+
+    <preGoal name="modules:reactor:init">
+        <j:set var="groupId" value="maven-itest-plugin"/>
+        <j:set var="artifactId" value="maven-itest-plugin"/>
+        <j:set var="version" value="1.0"/>
+        <attainGoal name="plugin:download-artifact"/>
+        <maven:installPlugin
+                file="${maven.repo.local}/${groupId}/plugins/${artifactId}-${version}.jar"
+                cache="true"/>
+    </preGoal>
+
+    <!-- ======= -->
+    <!-- Modules -->
+    <!-- ======= -->
+    <goal name="modules:reactor:init">
+        <!--
+           | Determine the includes which the reactor will use.
+           |
+           | Uses 4 properties to control which modules will be include:
+           |
+           | module.types      Comma seperated list of module types (ie. specs or modules)
+           | module.includes   Comma seperated list of module names (ie. kernel, adb, ...)
+           | modules           Same as module.includes, module.includes initializes to this value
+           | module.excludes   Comma seperated list of module names to exclude
+           |
+           | The end result is that modules.reactor.includes is set to the project.xml files
+           | to include.  This is the value the reactor will use.
+           |
+           | Example, to only build the kernel and adb modules:
+           |
+           | maven -Dmodules=kernel, adb
+         -->
+
+        <j:if test="${context.getVariable('module.types') == null}">
+            <j:set var="module.types" value="modules,applications,plugins"/>
+        </j:if>
+
+        <j:if test="${context.getVariable('modules') == null}">
+            <!-- The default is to build everything -->
+            <j:set var="modules" value="${modules}"/>
+        </j:if>
+
+        <j:if test="${context.getVariable('module.includes') == null}">
+            <j:set var="module.includes" value="${modules}"/>
+        </j:if>
+
+        <j:if test="${context.getVariable('module.excludes') == null}">
+            <j:set var="module.excludes" value=""/>
+        </j:if>
+
+        <u:tokenize var="types" delim=",">${module.types}</u:tokenize>
+
+        <ant:fileScanner var="scanner">
+            <ant:fileset dir="${basedir}">
+                <j:forEach var="type" items="${types}">
+                    <j:choose>
+                        <j:when test="${context.getVariable('module.includes') == '*'}">
+                            <ant:include name="${type}/*/project.xml"/>
+                        </j:when>
+                        <j:otherwise>
+                            <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>
+                            <j:forEach var="include" items="${includes}">
+                                <u:available file="${basedir}/${type}/${include}/project.xml">
+                                    <ant:include name="${type}/${include}/project.xml"/>
+                                </u:available>
+                            </j:forEach>
+                        </j:otherwise>
+                    </j:choose>
+
+                    <j:choose>
+                        <j:when test="${context.getVariable('module.excludes') == '*'}">
+                            <ant:exclude name="${type}/*/project.xml"/>
+                        </j:when>
+                        <j:otherwise>
+                            <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>
+                            <j:forEach var="exclude" items="${excludes}">
+                                <u:available file="${basedir}/${type}/${exclude}/project.xml">
+                                    <ant:exclude name="${type}/${exclude}/project.xml"/>
+                                </u:available>
+                            </j:forEach>
+                        </j:otherwise>
+                    </j:choose>
+                </j:forEach>
+            </ant:fileset>
+        </ant:fileScanner>
+
+        <!-- Init/Reinit this variable -->
+        <j:set var="modules.reactor.includes" value=""/>
+
+        <!-- Setup the includes which will be used by the reactor -->
+        <j:forEach var="file" items="${scanner.iterator()}">
+            <!--
+               | Would be nice if reactor would take a file set, but for now just remove
+               | the baseddir portion of the file's name.  So this will essentially strip off
+               | ${basedir}
+             -->
+            <j:set var="directory"
+                   value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>
+            <j:set var="filename" value="${directory}/${file.name}"/>
+            <ant:echo>Adding to modules.reactor.includes: ${filename}</ant:echo>
+            <j:choose>
+                <j:when test="${context.getVariable('modules.reactor.includes') == null}">
+                    <j:set var="modules.directories" value="${directory}"/>
+                    <j:set var="modules.reactor.includes" value="${filename}"/>
+                </j:when>
+                <j:otherwise>
+                    <j:set var="modules.directories" value="${modules.directories},${directory}"/>
+                    <j:set var="modules.reactor.includes"
+                           value="${modules.reactor.includes},${filename}"/>
+                </j:otherwise>
+            </j:choose>
+        </j:forEach>
+    </goal>
+
+    <!-- Helper tags for modules -->
+    <define:taglib uri="local:modules">
+        <define:tag name="reactor">
+            <attainGoal name="modules:reactor:init"/>
+
+            <j:choose>
+                <j:when test="${goals != null}">
+                    <maven:reactor
+                            basedir="${basedir}"
+                            includes="${modules.reactor.includes}"
+                            banner="Executing (${goals}):"
+                            ignoreFailures="false"
+                            goals="${goals}"
+                            postProcessing="true"
+                            />
+                </j:when>
+                <j:when test="${goals == null}">
+                    <maven:reactor
+                            basedir="${basedir}"
+                            includes="${modules.reactor.includes}"
+                            banner="Executing (${goals}):"
+                            ignoreFailures="false"
+                            postProcessing="true"
+                            />
+                </j:when>
+            </j:choose>
+
+            <!-- Set reactor projects in parent scope so goals have access to it -->
+            <j:set var="reactorProjects" value="${reactorProjects}" scope="parent"/>
+        </define:tag>
+    </define:taglib>
+
+    <goal name="m:init">
+        <ant:fileScanner var="scanner">
+            <ant:fileset dir="${basedir}">
+                <u:tokenize var="includes" delim=",">${maven.multiproject.includes}</u:tokenize>
+                <j:forEach var="include" items="${includes}">
+                    <ant:include name="${include}"/>
+                </j:forEach>
+                <u:tokenize var="excludes" delim=",">${maven.multiproject.excludes}</u:tokenize>
+                <j:forEach var="exclude" items="${excludes}">
+                    <ant:exclude name="${exclude}"/>
+                </j:forEach>
+            </ant:fileset>
+        </ant:fileScanner>
+
+        <j:set var="maven.multiproject.includes" value=""/>
+        <j:set var="maven.multiproject.excludes" value=""/>
+        <j:set var="modules.directories" value=""/>
+
+        <u:tokenize var="moduleList" delim=",">${modules}</u:tokenize>
+        <j:set var="currentDir" value="${basedir}/"/>
+        <j:forEach var="file" items="${scanner.iterator()}">
+            <j:set var="directory" value="${file.parentFile.absolutePath}"/>
+            <j:set var="include" value="${file.absolutePath.substring(currentDir.length())}"/>
+            <j:if test="${moduleList.isEmpty() || moduleList.contains(file.parentFile.name)}">
+                <j:choose>
+                    <j:when test="${context.getVariable('maven.multiproject.includes') == ''}">
+                        <j:set var="modules.directories" value="${directory}"/>
+                        <j:set var="maven.multiproject.includes" value="${include}"/>
+                    </j:when>
+                    <j:otherwise>
+                        <j:set var="modules.directories"
+                               value="${modules.directories},${directory}"/>
+                        <j:set var="maven.multiproject.includes"
+                               value="${maven.multiproject.includes},${include}"/>
+                    </j:otherwise>
+                </j:choose>
+            </j:if>
+        </j:forEach>
+    </goal>
+
+    <goal name="jar:jar">
+        <attainGoal name="create-jar"/>
+        <ant:copy file="target/lib/axis2-${pom.currentVersion}.jar"
+                  toDir="target/"/>
+    </goal>
+
+    <goal name="jar">
+        <attainGoal name="multiproject:install"/>
+        <attainGoal name="jar:install"/>
+    </goal>
+
+    <goal name="init">
+        <ant:mkdir dir="target"/>
+        <ant:mkdir dir="${dist.dir}"/>
+        <ant:mkdir dir="target/lib"/>
+
+        <uptodate property="jars.uptodate" targetfile="target/axis2-${pom.currentVersion}.war">
+            <srcfiles dir="modules">
+                <include name="**/*.java"/>
+                <include name="**/*.xml"/>
+                <include name="**/*.wsdl"/>
+                <exclude name="**/target/**"/>
+            </srcfiles>
+        </uptodate>
+        <echo message="the files are up to date = ${jars.uptodate}"></echo>
+    </goal>
+
+    <goal name="modules:clean">
+        <attainGoal name="modules:reactor:init"/>
+        <u:tokenize var="directories" delim=",">${modules.directories}</u:tokenize>
+        <j:forEach var="directory" items="${directories}">
+            <ant:echo>+----------------------------------------</ant:echo>
+            <ant:echo>| Cleaning: ${directory}</ant:echo>
+            <ant:echo>+----------------------------------------</ant:echo>
+            <ant:delete dir="${directory}/target"/>
+            <ant:delete quiet="false" failonerror="false">
+                <ant:fileset dir="${directory}">
+                    <ant:include name="maven.log"/>
+                    <ant:include name="velocity.log*"/>
+                    <ant:include name="junit*.properties"/>
+                    <ant:include name="axis.log"/>
+                    <ant:include name="junit*.properties"/>
+                    <ant:include name="temp.properties"/>
+                </ant:fileset>
+            </ant:delete>
+            <ant:echo></ant:echo>
+        </j:forEach>
+        <ant:echo>+----------------------------------------</ant:echo>
+        <ant:echo>| Cleaning: target and etc/target</ant:echo>
+        <ant:echo>+----------------------------------------</ant:echo>
+        <ant:delete dir="target"/>
+        <ant:delete dir="etc/target"/>
+    </goal>
+
+    <goal name="clean">
+        <ant:delete dir="${user.home}/.axis2"/>
+        <ant:delete dir="${user.home}/.axis2home"/>
+        <attainGoal name="modules:clean"/>
+        <attainGoal name="clean-repo"/>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Clean the Repository -->
+    <!-- ================================================================ -->
+    <goal name="clean-repo">
+        <ant:delete>
+            <ant:fileset dir="${maven.repo.local}">
+                <ant:include name="org.apache.axis2/jars/axis2*.jar"/>
+            </ant:fileset>
+        </ant:delete>
+    </goal>
+
+    <goal name="all-tests">
+        <modules:reactor goals="jar:install,test,itest"/>
+    </goal>
+
+    <goal name="cleanse-sources">
+        <modules:reactor goals="cleanse-sources"/>
+    </goal>
+
+    <goal name="clover">
+        <modules:reactor goals="clover:on,jar:install,test"/>
+        <attainGoal name="clover:merge"/>
+        <attainGoal name="clover:report"/>
+    </goal>
+
+    <goal name="create-jar" prereqs="init">
+        <!-- Hack for now, don't fail building jar if saaj is absent -->
+        <ant:mkdir dir="modules/saaj/target/classes"/>
+
+        <jar destfile="target/lib/axis2-${pom.currentVersion}.jar">
+            <fileset dir="modules/java2wsdl/target/classes"/>
+            <fileset dir="modules/kernel/target/classes"/>
+            <!-- adding the tool classes. This is needed to get the ant task -->
+            <fileset dir="modules/tool/target/classes"/>
+            <fileset dir="modules/saaj/target/classes"/>
+            <fileset dir="modules/addressing/target/classes"/>
+            <fileset dir="modules/codegen/target/classes"/>
+            <fileset dir="modules/adb/target/classes"/>
+            <fileset dir="modules/adb-codegen/target/classes"/>
+            <fileset dir="modules/xmlbeans/target/classes"/>
+            <fileset dir="modules/addressing/target/">
+                <include name="modules/addressing-${addressing_version}.mar"/>
+            </fileset>
+        </jar>
+    </goal>
+
+    <goal name="create-lib" prereqs="jar">
+        <macros:copy-deps copyToDir="target/lib" mods="*"/>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Create the War -->
+    <!-- ================================================================ -->
+    <goal name="war" prereqs="jar,init-dist,cache-war-deps">
+
+        <ant:mkdir dir="target/temp/war/toWEB-INF/modules"/>
+        <ant:mkdir dir="target/temp/war/toWEB-INF/services"/>
+        <ant:mkdir dir="target/temp/war/toWEB-INF/conf"/>
+
+
+        <!-- let's now remove un-necessary jars. Please refer -->
+        <!-- http://marc.theaimsgroup.com/?l=axis-dev&m=116047407714969&w=2, if you wanna know-->
+        <!-- why I removed this. -->
+        <ant:delete>
+            <fileset dir="${war_dep_cache}">
+                <include name="bcel-${bcel.version}.jar"/>
+                <include name="jibx-bind-${jibx.version}.jar"/>
+            </fileset>
+        </ant:delete>
+
+        <!-- Copy the java2wsdl jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the kernel jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/kernel/target/axis2-kernel-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the adb jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the adb  codegen jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset
+                    file="modules/adb-codegen/target/axis2-adb-codegen-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the java2wsdl jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the codegen jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the xmlbeans jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/xmlbeans/target/axis2-xmlbeans-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the spring jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/spring/target/axis2-spring-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the saaj jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/saaj/target/axis2-saaj-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy the jibx jar -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset file="modules/jibx/target/axis2-jibx-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy items that depend on JDK1.5  -->
+        <j:if test="${ant.java.version == '1.5'}">
+
+            <ant:copy toDir="target/temp/war/lib">
+                <ant:fileset file="modules/jaxbri/target/axis2-jaxbri-${pom.currentVersion}.jar"/>
+            </ant:copy>
+        </j:if>
+
+        <!-- Copy the soapmonitor jar - the servlet classes -->
+        <ant:copy toDir="target/temp/war/lib">
+            <ant:fileset
+                    file="modules/soapmonitor/target/axis2-soapmonitor-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- copy the soapmonitor mar -->
+        <ant:copy toDir="target/temp/war/toWEB-INF/modules">
+            <ant:fileset file="modules/soapmonitor/target/soapmonitor-${soapmonitor_version}.mar"/>
+        </ant:copy>
+
+        <!-- copy the addressing mar -->
+        <ant:copy toDir="target/temp/war/toWEB-INF/modules">
+            <ant:fileset file="modules/addressing/target/addressing-${addressing_version}.mar"/>
+        </ant:copy>
+
+        <echo file="target/temp/war/toWEB-INF/modules/modules.list" append="false">
+            addressing-${addressing_version}.mar
+            soapmonitor-${soapmonitor_version}.mar
+        </echo>
+
+        <!-- copy the sample services -->
+        <ant:copy toDir="target/temp/war/toWEB-INF/services">
+            <ant:fileset file="modules/samples/target/toWar/services/version.aar"/>
+        </ant:copy>
+
+        <echo file="target/temp/war/toWEB-INF/services/services.list" append="false">version.aar
+        </echo>
+
+        <!-- copy the axis2.xml into conf directoy -->
+        <ant:copy toDir="target/temp/war/toWEB-INF/conf">
+            <ant:fileset file="modules/kernel/conf/axis2.xml"/>
+        </ant:copy>
+        <ant:copy toDir="target/temp/war/axis2-web">
+            <ant:fileset dir="modules/webapp">
+                <ant:exclude name="project.xml"/>
+                <ant:exclude name="**/*.iml"/>
+                <ant:exclude name="**/.*"/>
+                <ant:exclude name="**/conf/**"/>
+            </ant:fileset>
+        </ant:copy>
+
+        <ant:war destfile="target/dist/axis2.war"
+                 webxml="modules/webapp/conf/web.xml">
+            <ant:lib dir="target/temp/war/lib">
+                <ant:include name="**"/>
+                <ant:exclude name="**servlet**"/>
+                <ant:exclude name="ant*.jar"/>
+            </ant:lib>
+            <ant:lib dir="${war_dep_cache}">
+                <ant:include name="**"/>
+                <ant:exclude name="**servlet**"/>
+                <ant:exclude name="ant*.jar"/>
+            </ant:lib>
+            <ant:classes dir="modules/kernel/conf">
+                <ant:include name="*.properties"/>
+            </ant:classes>
+            <!--  <ant:webinf dir="modules/kernel/src/org/apache/axis2/deployment">
+               <ant:include name="*.xml"/>
+           </ant:webinf> -->
+            <ant:webinf dir="target/temp/war/toWEB-INF"/>
+            <ant:fileset dir="target/temp/war">
+                <ant:include name="**/axis2-web/**"/>
+            </ant:fileset>
+        </ant:war>
+    </goal>
+
+    <!-- to transform htmls to xdocs -->
+    <preGoal name="xdoc:jelly-transform">
+        <attainGoal name="html2xdoc"/>
+    </preGoal>
+
+    <!-- ================================================================ -->
+    <!--- Create the Release -->
+    <!-- ================================================================ -->
+    <goal name="release"
+          prereqs="jar,dist-bin,dist-src,dist-docs,war">
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Axis2 Distributions</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <ant:copy toFile="target/dist/addressing-${addressing_version}.mar"
+                  file="modules/addressing/target/addressing-${addressing_version}.mar"/>
+
+        <ant:copy toFile="target/dist/rampart-${rampart_version}.mar"
+                  file="modules/security/target/rampart-${rampart_version}.mar"/>
+
+        <ant:copy toFile="target/dist/soapmonitor-${soapmonitor_version}.mar"
+                  file="modules/soapmonitor/target/soapmonitor-${soapmonitor_version}.mar"/>
+
+        <ant:delete dir="target/temp"/>
+        <ant:delete dir="target/apidocs"/>
+    </goal>
+
+    <goal name="init-dist">
+        <ant:filter token="axis2_version" value="${pom.currentVersion}"/>
+        <ant:filter token="release_date" value="${release_date}"/>
+
+        <property name="std_dep_cache" value="target/temp/cache/std"/>
+        <property name="war_dep_cache" value="target/temp/cache/war"/>
+
+        <ant:mkdir dir="target/dist"/>
+    </goal>
+
+    <goal name="dist-bin" prereqs="jar,init-dist,cache-std-deps">
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Axis2 Main Binary Distribution</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <ant:property name="std.bin.temp.dir" value="target/temp/main/axis2-${pom.currentVersion}"/>
+
+        <ant:mkdir dir="${std.bin.temp.dir}/repository"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/repository/modules"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/repository/services"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/bin"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/conf"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/webapp"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/webapp/WEB-INF"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/webapp/WEB-INF/classes"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/webapp/axis2-web"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/lib"/>
+        <ant:mkdir dir="${std.bin.temp.dir}/samples"/>
+
+        <!--********************** creating the repository ********************** -->
+        <!-- copy the soapmonitor mar -->
+        <ant:copy toDir="${std.bin.temp.dir}/repository/modules">
+            <ant:fileset file="modules/soapmonitor/target/soapmonitor-${soapmonitor_version}.mar"/>
+        </ant:copy>
+
+        <!-- copy the addressing mar -->
+        <ant:copy toDir="${std.bin.temp.dir}/repository/modules">
+            <ant:fileset file="modules/addressing/target/addressing-${addressing_version}.mar"/>
+        </ant:copy>
+
+        <echo file="${std.bin.temp.dir}/repository/modules/modules.list" append="false">
+            addressing-${addressing_version}.mar
+            soapmonitor-${soapmonitor_version}.mar
+        </echo>
+
+        <!-- copy the sample services -->
+        <!-- TODO copy other sample-XXX.aar too -->
+        <ant:copy toDir="${std.bin.temp.dir}/repository/services">
+            <ant:fileset file="modules/samples/target/toWar/services/version.aar"/>
+        </ant:copy>
+
+        <echo file="${std.bin.temp.dir}/repository/services/services.list" append="false">
+            version.aar
+        </echo>
+
+        <!--********************** creating the bin ********************** -->
+        <!-- Copy bin scripts -->
+        <ant:copy todir="${std.bin.temp.dir}/bin">
+            <ant:fileset dir="modules/tool/script"/>
+        </ant:copy>
+
+        <!--********************** creating the conf ********************** -->
+        <!-- copy the axis2.xml into conf directoy -->
+        <ant:copy toDir="${std.bin.temp.dir}/conf">
+            <ant:fileset file="modules/kernel/conf/axis2.xml"/>
+        </ant:copy>
+
+        <!--********************** creating the webappp ********************** -->
+        <!-- copy the web.xml into webapp/WEB-INF directory -->
+        <ant:copy toDir="${std.bin.temp.dir}/webapp/WEB-INF">
+            <ant:fileset file="modules/webapp/conf/web.xml"/>
+        </ant:copy>
+
+        <!-- copy the build.xml into webapp directory -->
+        <ant:copy toDir="${std.bin.temp.dir}/webapp">
+            <ant:fileset file="modules/webapp/scripts/build.xml"/>
+        </ant:copy>
+
+        <!-- copy *.properties to webapp/WEB-INF/classes directory -->
+        <ant:copy toDir="${std.bin.temp.dir}/webapp/WEB-INF/classes">
+            <ant:fileset dir="modules/kernel/conf">
+                <ant:include name="*.properties"/>
+            </ant:fileset>
+        </ant:copy>
+
+        <!-- copy contents of the webapp module to webapp/axis2-web directory -->
+        <ant:copy toDir="${std.bin.temp.dir}/webapp/axis2-web">
+            <ant:fileset dir="modules/webapp">
+                <ant:exclude name="project.xml"/>
+                <ant:exclude name="**/*.iml"/>
+                <ant:exclude name="**/.*"/>
+                <ant:exclude name="**/conf/**"/>
+                <ant:exclude name="**/scripts/**"/>
+            </ant:fileset>
+        </ant:copy>
+
+
+        <!--********************** creating the lib ********************** -->
+        <!-- Copy the 3rd party libs -->
+        <ant:copy toDir="${std.bin.temp.dir}/lib">
+            <ant:fileset dir="${std_dep_cache}"/>
+        </ant:copy>
+
+        <!-- Deleting bcel, jaxme, spring jars -->
+        <ant:delete>
+            <fileset dir="${std.bin.temp.dir}/lib">
+                <include name="bcel-${bcel.version}.jar"/>
+                <include name="spring*.*"/>
+                <include name="jaxme*.*"/>
+            </fileset>
+        </ant:delete>
+
+        <!-- Delete tesing jars -->
+        <echo message="Deleting Unwanted testing jars"/>
+        <ant:delete>
+            <fileset dir="${std.bin.temp.dir}/lib">
+                <include name="**/ant*.jar"/>
+                <include name="**/xmlunit*.jar"/>
+                <include name="**/junit*.jar"/>
+            </fileset>
+        </ant:delete>
+
+        <ant:copy toDir="${std.bin.temp.dir}/lib">
+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/kernel/target/axis2-kernel-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>
+            <ant:fileset
+                    file="modules/adb-codegen/target/axis2-adb-codegen-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/xmlbeans/target/axis2-xmlbeans-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/jibx/target/axis2-jibx-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/saaj/target/axis2-saaj-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/tool/target/axis2-tools-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/spring/target/axis2-spring-${pom.currentVersion}.jar"/>
+            <ant:fileset
+                    file="modules/soapmonitor/target/axis2-soapmonitor-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <!-- Copy items that depend on JDK1.5  -->
+        <j:if test="${ant.java.version == '1.5'}">
+            <ant:copy toDir="${std.bin.temp.dir}/lib">
+                <ant:fileset file="modules/jaxbri/target/axis2-jaxbri-${pom.currentVersion}.jar"/>
+            </ant:copy>
+        </j:if>
+
+
+        <!--********************** creating the samples ********************** -->
+        <!-- If you want to add a new sample, put your content in modules/samples and add an entry below
+        to be copied in to the standard release -->
+        <ant:mkdir dir="${std.bin.temp.dir}/samples/faulthandling"/>
+        <ant:copy todir="${std.bin.temp.dir}/samples/">
+            <ant:fileset dir="modules/samples/">
+                <include name="yahoorestsearch/**/*.*"/>
+                <include name="databinding/**/*.*"/>
+                <include name="googlespellcheck/**/*.*"/>
+                <include name="faulthandling/**/*.*"/>
+                <include name="mtom/**/*.*"/>
+                <include name="soapwithattachments/**/*.*"/>
+                <include name="version/**/*.*"/>
+                <include name="servicelifecycle/**/*.*"/>
+                <include name="pojo/**/*.*"/>
+                <!-- Docs related samples -->
+                <include name="userguide/**/*.*"/>
+                <include name="pojoguide/**/*.*"/>
+                <include name="pojoguidespring/**/*.*"/>
+                <include name="quickstart/**/*.*"/>
+                <include name="quickstartaxiom/**/*.*"/>
+                <include name="quickstartadb/**/*.*"/>
+                <include name="quickstartxmlbeans/**/*.*"/>
+                <include name="quickstartjibx/**/*.*"/>
+            </ant:fileset>
+        </ant:copy>
+
+        <ant:delete file="${std.bin.temp.dir}/samples/groovyService.aar"/>
+
+
+        <!--copy NOTICE.txt file-->
+        <ant:copy toFile="${std.bin.temp.dir}/NOTICE.txt" filtering="on">
+            <ant:fileset file="NOTICE.txt"/>
+        </ant:copy>
+        
+        <!--copy NOTICE.txt file-->
+        <ant:copy toFile="${std.bin.temp.dir}/INSTALL.txt" filtering="on">
+            <ant:fileset file="release-docs/readme-files/installation-std-bin.txt"/>
+        </ant:copy>
+        <!-- Copy the release documents -->
+        <macros:copy-release-docs toDir="${std.bin.temp.dir}"
+                    readmeFile="release-docs/readme-files/README-std-bin.txt"/>
+
+        <ant:zip file="${dist.dir}/axis2-${pom.currentVersion}.zip"
+                 basedir="target/temp/main"/>
+        <ant:delete dir="target/temp/main"/>
+    </goal>
+
+    <goal name="dist-src" prereqs="init-dist">
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Axis2 Standard Source Distribution</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <ant:property name="src.temp.dir" value="target/temp/src/axis2-${pom.currentVersion}/src"/>
+        <ant:mkdir dir="target/temp/src"/>
+        <ant:mkdir dir="target/temp/src/axis2-${pom.currentVersion}"/>
+        <ant:mkdir dir="${src.temp.dir}"/>
+
+        <ant:copy toDir="${src.temp.dir}">
+            <ant:fileset dir=".">
+                <ant:include name="**/etc/**"/>
+                <ant:include name="**/modules/java2wsdl/**"/>
+                <ant:include name="**/modules/kernel/**"/>
+                <ant:include name="**/modules/adb/**"/>
+                <ant:include name="**/modules/adb-codegen/**"/>
+                <ant:include name="**/modules/codegen/**"/>
+                <ant:include name="**/modules/webapp/**"/>
+                <ant:include name="**/modules/xmlbeans/**"/>
+                <ant:include name="**/modules/jibx/**"/>
+                <ant:include name="**/modules/jaxbri/**"/>
+                <ant:include name="**/modules/addressing/**"/>
+                <ant:include name="**/modules/saaj/**"/>
+                <ant:include name="**/modules/samples/**"/>
+                <ant:include name="**/modules/soapmonitor/**"/>
+                <ant:include name="**/modules/spring/**"/>
+                <ant:include name="**/modules/tool/**"/>
+                <ant:exclude name="**/SameServiceAddingTest.java"/>
+                <!-- TODO: This is failing in the distros. Must Fix it. -->
+                <ant:exclude name="**/target/**"/>
+                <ant:exclude name="**/modules/samples/eventing/**"/>
+                <ant:exclude name="**/modules/samples/security/**"/>
+                <ant:exclude name="xdocs/**"/>
+                <ant:exclude name="**/*class*/**"/>
+                <ant:exclude name="**/.svn/**"/>
+                <ant:exclude name="**/bin/**"/>
+                <ant:exclude name="**/*.log"/>
+                <ant:exclude name=".*"/>
+                <ant:exclude name="**/*.license"/>
+                <ant:exclude name="**/*.iml"/>
+            </ant:fileset>
+        </ant:copy>
+        <ant:copy toDir="${src.temp.dir}/etc" overwrite="true" filtering="on"
+                  file="etc/project.properties"/>
+        <ant:copy toDir="${src.temp.dir}" overwrite="true" filtering="on" file="NOTICE.txt"/>
+
+        <!-- Copy the master maven files for the standard src distro -->
+        <ant:copy toFile="${src.temp.dir}/maven.xml">
+            <ant:fileset file="release-docs/maven-scripts/maven-std.xml"/>
+        </ant:copy>
+        <ant:copy toDir="${src.temp.dir}">
+            <ant:fileset file="project.xml"/>
+        </ant:copy>
+
+        <!-- Copy the release documents -->
+        <macros:copy-release-docs toDir="${src.temp.dir}"
+                                  readmeFile="release-docs/readme-files/README-std-src.txt"/>
+
+        <ant:zip file="${dist.dir}/axis2-${pom.currentVersion}-src.zip">
+            <ant:fileset dir="target/temp/src"/>
+        </ant:zip>
+        <ant:delete dir="target/temp/src"/>
+    </goal>
+
+    <goal name="dist-war" prereqs="war">
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Axis2 WAR Distribution</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+    </goal>
+
+    <goal name="dist-docs" prereqs="init-dist, javadocs">
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Axis2 Docs Distribution</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <ant:mkdir dir="target/dist"/>
+        <ant:property name="docs.temp.dir"
+                      value="target/temp/docs/axis2-${pom.currentVersion}/docs"/>
+
+        <ant:mkdir dir="${docs.temp.dir}"/>
+        <ant:mkdir dir="${docs.temp.dir}/xdocs"/>
+        <ant:mkdir dir="${docs.temp.dir}/javadocs"/>
+
+        <ant:copy toDir="${docs.temp.dir}/xdocs">
+            <ant:fileset dir="xdocs"/>
+        </ant:copy>
+
+        <ant:copy toDir="${docs.temp.dir}/javadocs">
+            <ant:fileset dir="target/apidocs"/>
+        </ant:copy>
+
+        <macros:copy-release-docs toDir="${docs.temp.dir}"
+                                  readmeFile="release-docs/readme-files/README-docs.txt"/>
+
+        <ant:zip file="${dist.dir}/axis2-${pom.currentVersion}-docs.zip">
+            <ant:fileset dir="target/temp/docs"/>
+        </ant:zip>
+        <!--ant:delete dir="target/temp/docs"/-->
+
+        <ant:echo message="***** IMPORTANT: Please manually copy the Eclipse &amp; IDEA plugins"/>
+    </goal>
+
+    <goal name="cache-std-deps" prereqs="init-dist">
+        <ant:mkdir dir="${std_dep_cache}"/>
+        <j:if test="${stdDeps.uptodate != 'yes'}">
+            <macros:copy-deps copyToDir="${std_dep_cache}"
+                              mods="webapp,jibx,spring,saaj,kernel,adb"/>
+            <property name="stdDeps.uptodate" value="yes"/>
+        </j:if>
+
+        <!--copy the license files also-->
+        <ant:copy toDir="${std_dep_cache}">
+            <ant:fileset dir="legal/std">
+                <ant:include name="*.txt"/>
+            </ant:fileset>
+        </ant:copy>
+
+        <!--remove testing jars-->
+        <ant:delete dir="${std_dep_cache}">
+            <ant:include name="junit*.jar"/>
+            <ant:include name="xmlunit*.jar"/>
+            <ant:include name="maven-itest*.jar"/>
+        </ant:delete>
+    </goal>
+
+    <!--<goal name="cache-war-deps" prereqs="init-dist,cache-std-deps">-->
+    <goal name="cache-war-deps" prereqs="init-dist">
+        <ant:mkdir dir="${war_dep_cache}"/>
+        <j:if test="${warDeps.uptodate != 'yes'}">
+            <macros:copy-deps copyToDir="${war_dep_cache}"
+                              mods="webapp,spring,jibx,saaj"/>
+            <property name="warDeps.uptodate" value="yes"/>
+        </j:if>
+
+        <!--copy the license files also-->
+        <ant:copy toDir="${war_dep_cache}">
+            <ant:fileset dir="legal/war">
+                <ant:include name="*.txt"/>
+            </ant:fileset>
+            <ant:fileset dir="legal/std">
+                <ant:include name="*.txt"/>
+            </ant:fileset>
+        </ant:copy>
+
+        <!--remove testing jars-->
+        <ant:delete dir="${war_dep_cache}">
+            <ant:include name="junit*.jar"/>
+            <ant:include name="xmlunit*.jar"/>
+        </ant:delete>
+    </goal>
+
+
+    <!-- ================================================================ -->
+    <!--- Create the Java Docs -->
+    <!-- ================================================================ -->
+    <goal name="javadocs" prereqs="jar,init, create-lib">
+        <ant:javadoc packagenames="org.apache.axis2.*"
+                     defaultexcludes="yes"
+                     destdir="target/apidocs"
+                     author="true"
+                     breakiterator="true"
+                     version="true"
+                     use="true"
+                     windowtitle="Axis2 API">
+            <ant:arg
+                    line="-J-Dhttp.proxy.port=${maven.proxy.port} -J-Dhttp.proxy.host=${maven.proxy.host}"/>
+            <ant:sourcepath>
+                <ant:pathelement location="modules/adb/src"/>
+                <ant:pathelement location="modules/adb-codegen/src"/>
+                <ant:pathelement location="modules/addressing/src"/>
+                <ant:pathelement location="modules/codegen/src"/>
+                <ant:pathelement location="modules/java2wsdl/src"/>
+                <!-- Cannot run the build in jdk1.4 when jaxbri is included -->
+                <!--ant:pathelement location="modules/jaxbri/src"/-->
+                <ant:pathelement location="modules/jibx/src"/>
+                <ant:pathelement location="modules/kernel/src"/>
+                <ant:pathelement location="modules/saaj/src"/>
+                <!-- we are not shipping jaxws with 1.1 -->
+                <!--ant:pathelement location="modules/jaxws/src"/-->
+                <ant:pathelement location="modules/soapmonitor/src"/>
+                <ant:pathelement location="modules/spring/src"/>
+                <ant:pathelement location="modules/xmlbeans/src"/>
+            </ant:sourcepath>
+            <ant:classpath>
+                <ant:fileset dir="target/lib">
+                    <ant:include name="**/*.jar"/>
+                </ant:fileset>
+            </ant:classpath>
+            <ant:excludepackage name="org.apache.axis2.tool.codegen.*"/>
+            <ant:excludepackage name="org.apache.axis2.tool.service.*"/>
+            <ant:link href="http://java.sun.com/j2se/1.4.2/docs/api/"/>
+            <ant:link href="http://java.sun.com/webservices/docs/1.5/api/"/>
+            <ant:link href="http://xerces.apache.org/xerces-j/apiDocs/"/>
+            <ant:link href="http://xml.apache.org/xalan-j/apidocs/"/>
+            <ant:link href="http://xmlbeans.apache.org/docs/2.1.0/reference/"/>
+        </ant:javadoc>
+    </goal>
+    
+    <postGoal name="site">
+         <ant:copy toDir="target/docs/style" overwrite="true">
+             <ant:fileset dir="xdocs/style">
+                 <ant:include name="*.css"/>
+             </ant:fileset>
+         </ant:copy>
+    </postGoal>
+
+    <!-- ================================================================ -->
+    <!--- Reports -->
+    <!-- ================================================================ -->
+    <!-- Conditionally disable linkcheck based on a property. -->
+
+    <postGoal name="xdoc:register-reports">
+        <j:if test="${maven.allreports.disable}">
+            <echo>Reports are disabled. Deregistering all the reports ....</echo>
+            <attainGoal name="maven-linkcheck-plugin:deregister"/>
+            <echo>linkcheck is disabled.</echo>
+            <attainGoal name="maven-checkstyle-plugin:deregister"/>
+            <echo>checkstyle is disabled.</echo>
+            <attainGoal name="maven-changes-plugin:deregister"/>
+            <echo>changes is disabled.</echo>
+            <attainGoal name="maven-changelog-plugin:deregister"/>
+            <echo>changelog is disabled.</echo>
+            <attainGoal name="maven-license-plugin:deregister"/>
+            <echo>license is disabled.</echo>
+            <attainGoal name="maven-javadoc-plugin:deregister"/>
+            <echo>javadoc is disabled.</echo>
+            <attainGoal name="maven-junit-report-plugin:deregister"/>
+            <echo>junit-report is disabled.</echo>
+            <attainGoal name="maven-tasklist-plugin:deregister"/>
+            <echo>tasklist is disabled.</echo>
+        </j:if>
+
+    </postGoal>
+
+
+    <!-- ================================================================ -->
+    <!--- Create JUnit test reports -->
+    <!-- ================================================================ -->
+    <goal name="test-reports">
+        <mkdir dir="${basedir}/target/test-reports"/>
+        <ant:junitreport todir="${basedir}/target/test-reports">
+            <ant:fileset dir="${basedir}/">
+                <ant:include name="**/test-reports/TEST-*.xml"/>
+                <ant:include name="**/itest-reports/TEST-*.xml"/>
+            </ant:fileset>
+            <ant:report format="frames" todir="${basedir}/target/test-reports"
+                        styledir="${basedir}/etc"/>
+        </ant:junitreport>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Create all the distributable jars -->
+    <!-- ================================================================ -->
+    <goal name="all-jars" prereqs="jar">
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: JARs</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <ant:property name="destdir" value="target/jars"/>
+        <ant:mkdir dir="${destdir}"/>
+
+        <ant:copy toDir="${destdir}">
+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/kernel/target/axis2-kernel-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/codegen/target/axis2-adb-codegen-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/xmlbeans/target/axis2-xmlbeans-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/jibx/target/axis2-jibx-${pom.currentVersion}.jar"/>
+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>
+        </ant:copy>
+        <!-- Copy items that depend on JDK1.5  -->
+        <j:if test="${ant.java.version == '1.5'}">
+            <ant:copy toDir="${destdir}">
+                <ant:fileset file="modules/jaxbri/target/axis2-jaxbri-${pom.currentVersion}.jar"/>
+            </ant:copy>
+        </j:if>
+
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Create Apache Rampart Release Artifacts                         -->
+    <!-- ================================================================ -->
+    <goal name="rampart-release" prereqs="create-lib">
+
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Rampart Release</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <ant:mkdir dir="target/dist/rampart/"/>
+
+        <attainGoal name="rampart-dist-bin"/>
+
+        <attainGoal name="rampart-dist-src"/>
+    	
+        <attainGoal name="rampart-javadocs"/>
+    	
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Rampart Binary Distro                                           -->
+    <!-- ================================================================ -->
+    <goal name="rampart-dist-bin">
+
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Rampart Binary Distribution</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <ant:property name="destdir" value="target/temp-rampart-bin/rampart-${rampart_version}"/>
+        <ant:property name="libdir" value="target/temp-rampart-bin/rampart-${rampart_version}/lib"/>
+        <ant:property name="samplesdir"
+                      value="target/temp-rampart-bin/rampart-${rampart_version}/samples"/>
+        <ant:mkdir dir="${libdir}"/>
+        <ant:mkdir dir="${samplesdir}"/>
+
+        <ant:copy toDir="target/temp-rampart-bin/rampart-${rampart_version}">
+            <ant:fileset file="modules/security/target/rampart-${rampart_module_version}.mar"/>
+            <ant:fileset file="modules/rahas/target/rahas-${rahas_module_version}.mar"/>
+            <ant:fileset file="modules/rahas/target/rahas-${rahas_version}.zip"/>
+        </ant:copy>
+
+        <ant:copy toDir="${libdir}">
+            <ant:fileset file="${maven.repo.local}/wss4j/jars/wss4j-${wss4j.version}.jar"/>
+            <ant:fileset file="${maven.repo.local}/xml-security/jars/xmlsec-${xmlsec.version}.jar"/>
+            <ant:fileset file="${maven.repo.local}/opensaml/jars/opensaml-${opensaml.version}.jar"/>
+            <ant:fileset file="${maven.repo.local}/bouncycastle/jars/bcprov-${bcprov.version}.jar"/>
+            <ant:fileset file="${maven.repo.local}/org.apache.ws.commons.axiom/jars/axiom-api-${axiom.version}.jar"/>
+            <ant:fileset file="${maven.repo.local}/org.apache.ws.commons.axiom/jars/axiom-impl-${axiom.version}.jar"/>
+            <ant:fileset file="${maven.repo.local}/org.apache.ws.commons.axiom/jars/axiom-dom-${axiom.version}.jar"/>
+            <ant:fileset
+                    file="${maven.repo.local}/commons-codec/jars/commons-codec-${commons.codec.version}.jar"/>
+
+            <!--copy license files -->
+            <ant:copy toDir="${libdir}">
+                <ant:fileset dir="legal/rampart">
+                    <ant:include name="*.txt"/>
+                </ant:fileset>
+            </ant:copy>
+            <ant:fileset file="LICENSE.txt"/>
+
+        </ant:copy>
+    
+    		<!-- copy axis2-security.jar, axis2-secpolicy.jar and axis2-rahas.jar -->
+        <copy file="modules/security/target/axis2-security-${axis2_version}.jar"
+            tofile="${libdir}/axis2-security-${rampart_version}.jar" overwrite="true"/>
+        <copy file="modules/rahas/target/axis2-rahas-${axis2_version}.jar"
+            tofile="${libdir}/axis2-rahas-${rahas_version}.jar" overwrite="true"/>
+        <copy file="modules/secpolicy/target/axis2-secpolicy-${axis2_version}.jar"
+            tofile="${libdir}/axis2-secpolicy-${secpolicy_version}.jar" overwrite="true"/>
+
+        <ant:copy toDir="${samplesdir}">
+            <ant:fileset dir="modules/samples/security/"/>
+        </ant:copy>
+
+    		
+        <ant:copy toDir="${destdir}">
+            <ant:fileset dir="modules/security/release-docs"/>
+        </ant:copy>
+
+        <ant:zip file="target/dist/rampart/rampart-${rampart_version}.zip">
+            <ant:fileset dir="target/temp-rampart-bin/"/>
+        </ant:zip>
+        <ant:delete dir="target/temp-rampart-bin"/>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Rampart Source Distro                                           -->
+    <!-- ================================================================ -->
+    <goal name="rampart-dist-src">
+
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Rampart Source Distribution</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <mkdir dir="target/temp-rampart-src"/>
+
+        <ant:mkdir dir="target/temp-rampart-src/rampart-src-${rampart_version}/rampart/src"/>
+        <ant:mkdir dir="target/temp-rampart-src/rampart-src-${rampart_version}/rahas/src"/>
+        <ant:mkdir dir="target/temp-rampart-src/rampart-src-${rampart_version}/secpolicy/src"/>
+
+        <ant:copy toDir="target/temp-rampart-src/rampart-src-${rampart_version}/rampart/">
+            <ant:fileset dir="modules/security">
+                <ant:include name="src/**"/>
+                <ant:exclude name="**/target/**"/>
+                <ant:exclude name="**/*class*/**"/>
+                <ant:exclude name="**/.svn/**"/>
+                <ant:exclude name="**/bin/**"/>
+                <ant:exclude name="**/*.log"/>
+                <ant:exclude name=".*"/>
+                <ant:exclude name="**/*.license"/>
+                <ant:exclude name="**/*.iml"/>
+            </ant:fileset>
+        </ant:copy>
+        <ant:copy toDir="target/temp-rampart-src/rampart-src-${rampart_version}/rahas/">
+            <ant:fileset dir="modules/rahas">
+                <ant:include name="src/**"/>
+                <ant:exclude name="**/target/**"/>
+                <ant:exclude name="**/*class*/**"/>
+                <ant:exclude name="**/.svn/**"/>
+                <ant:exclude name="**/bin/**"/>
+                <ant:exclude name="**/*.log"/>
+                <ant:exclude name=".*"/>
+                <ant:exclude name="**/*.license"/>
+                <ant:exclude name="**/*.iml"/>
+            </ant:fileset>
+        </ant:copy>
+        <ant:copy toDir="target/temp-rampart-src/rampart-src-${rampart_version}/secpolicy/">
+            <ant:fileset dir="modules/secpolicy">
+                <ant:include name="src/**"/>
+                <ant:exclude name="**/target/**"/>
+                <ant:exclude name="**/*class*/**"/>
+                <ant:exclude name="**/.svn/**"/>
+                <ant:exclude name="**/bin/**"/>
+                <ant:exclude name="**/*.log"/>
+                <ant:exclude name=".*"/>
+                <ant:exclude name="**/*.license"/>
+                <ant:exclude name="**/*.iml"/>
+            </ant:fileset>
+        </ant:copy>
+
+        <!-- TODO: Create and copy release documents :release-notes.html, README.txt, LICENCE.txt -->
+
+        <ant:zip file="target/dist/rampart/rampart-${rampart_version}-src.zip">
+            <ant:fileset dir="target/temp-rampart-src/"/>
+        </ant:zip>
+        <ant:delete dir="target/temp-rampart-src"/>
+    </goal>
+
+	
+    <!-- ================================================================ -->
+    <!--- Create Rampart Java Docs -->
+    <!-- ================================================================ -->
+	aaf
+    <goal name="rampart-javadocs">
+        <ant:javadoc packagenames="org.apache.rampart.*, org.apache.rahas.*,org.apache.ws.secpolicy.*"
+                     defaultexcludes="yes"
+                     destdir="target/dist/rampart/docs/rampart-${rampart_version}-apidocs"
+                     author="true"
+                     breakiterator="true"
+                     version="true"
+                     use="true"
+                     windowtitle="Apache Rampart ${rampart_version} API">
+            <ant:arg
+                    line="-J-Dhttp.proxy.port=${maven.proxy.port} -J-Dhttp.proxy.host=${maven.proxy.host}"/>
+            <ant:sourcepath>
+                <ant:pathelement location="modules/security/src"/>
+                <ant:pathelement location="modules/rahas/src"/>
+                <ant:pathelement location="modules/secpolicy/src"/>
+            </ant:sourcepath>
+            <ant:classpath>
+                <ant:fileset dir="target/lib">
+                    <ant:include name="**/*.jar"/>
+                </ant:fileset>
+            </ant:classpath>
+            <ant:link href="http://java.sun.com/j2se/1.4.2/docs/api/"/>
+            <ant:link href="http://java.sun.com/webservices/docs/1.5/api/"/>
+            <ant:link href="http://xerces.apache.org/xerces-j/apiDocs/"/>
+            <ant:link href="http://xml.apache.org/xalan-j/apidocs/"/>
+            <ant:link href="http://xmlbeans.apache.org/docs/2.1.0/reference/"/>
+        </ant:javadoc>
+    	
+        <ant:zip file="target/dist/rampart/rampart-${rampart_version}-docs.zip">
+            <ant:fileset dir="target/dist/rampart/docs"/>
+        </ant:zip>
+        <ant:delete dir="target/dist/rampart/docs"/>
+        	
+    </goal>
+
+    <define:taglib uri="macros">
+        <define:tag name="copy-deps">
+            <!--
+            PLEASE don't check in with these lines enabled.
+            <ant:echo message="######## MODULES=${mods}"/>
+            <ant:echo message="######## Copy2Dir=${copyToDir}"/>
+            -->
+            <j:set var="modules" value="${mods}"/>
+
+            <!-- ######################### REACTOR INIT ##########################################-->
+
+            <j:if test="${context.getVariable('module.types') == null}">
+                <j:set var="module.types" value="modules,applications,plugins"/>
+            </j:if>
+
+            <j:set var="module.includes" value="${modules}"/>
+
+            <j:if test="${context.getVariable('module.excludes') == null}">
+                <j:set var="module.excludes" value=""/>
+            </j:if>
+
+            <u:tokenize var="types" delim=",">${module.types}</u:tokenize>
+
+            <ant:fileScanner var="scanner">
+                <ant:fileset dir="${basedir}">
+                    <j:forEach var="type" items="${types}">
+                        <j:choose>
+                            <j:when test="${context.getVariable('module.includes') == '*'}">
+                                <ant:include name="${type}/*/project.xml"/>
+                            </j:when>
+                            <j:otherwise>
+                                <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>
+                                <j:forEach var="include" items="${includes}">
+                                    <u:available file="${basedir}/${type}/${include}/project.xml">
+                                        <ant:include name="${type}/${include}/project.xml"/>
+                                    </u:available>
+                                </j:forEach>
+                            </j:otherwise>
+                        </j:choose>
+
+                        <j:choose>
+                            <j:when test="${context.getVariable('module.excludes') == '*'}">
+                                <ant:exclude name="${type}/*/project.xml"/>
+                            </j:when>
+                            <j:otherwise>
+                                <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>
+                                <j:forEach var="exclude" items="${excludes}">
+                                    <u:available file="${basedir}/${type}/${exclude}/project.xml">
+                                        <ant:exclude name="${type}/${exclude}/project.xml"/>
+                                    </u:available>
+                                </j:forEach>
+                            </j:otherwise>
+                        </j:choose>
+                    </j:forEach>
+                </ant:fileset>
+            </ant:fileScanner>
+
+            <j:set var="modules.reactor.includes" value=""/>
+
+            <!-- Setup the includes which will be used by the reactor -->
+            <j:forEach var="file" items="${scanner.iterator()}">
+                <j:set var="directory"
+                       value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>
+                <j:set var="filename" value="${directory}/${file.name}"/>
+                <j:choose>
+                    <j:when test="${context.getVariable('modules.reactor.includes') == null}">
+                        <j:set var="modules.directories" value="${directory}"/>
+                        <j:set var="modules.reactor.includes" value="${filename}"/>
+                    </j:when>
+                    <j:otherwise>
+                        <j:set var="modules.directories"
+                               value="${modules.directories},${directory}"/>
+                        <j:set var="modules.reactor.includes"
+                               value="${modules.reactor.includes},${filename}"/>
+                    </j:otherwise>
+                </j:choose>
+            </j:forEach>
+            <!-- #################### END OF REACTOR INIT #######################################-->
+
+            <ant:echo message="Fetching Dependencies for modules: ${modules.reactor.includes}"/>
+            <maven:reactor
+                    basedir="${basedir}"
+                    postProcessing="true"
+                    includes="${modules.reactor.includes}"
+                    banner="Executing (${goals}):"
+                    ignoreFailures="false"/>
+            <j:forEach var="x" items="${reactorProjects}">
+                <ant:echo message="Copying ${x} to ${copyToDir}"/>
+                <deploy:copy-deps todir="${copyToDir}"
+                                  projectDescriptor="${x.getFile()}"/>
+            </j:forEach>
+            <property name="modules" value="*"/>
+        </define:tag>
+        <define:tag name="copy-release-docs">
+
+            <filter token="axisVersion" value="${pom.currentVersion}"/>
+            <filter token="TODAY" value="${TODAY}"/>
+
+            <ant:copy toFile="${toDir}/README.txt" filtering="on">
+                <ant:fileset file="${readmeFile}"/>
+            </ant:copy>
+            <ant:copy toFile="${toDir}/release-notes.html" filtering="on">
+                <ant:fileset file="release-notes.html"/>
+            </ant:copy>
+            <ant:copy toFile="${toDir}/LICENSE.txt" filtering="on">
+                <ant:fileset file="LICENSE.txt"/>
+            </ant:copy>
+        </define:tag>
+    </define:taglib>
+
+</project>
+
diff --git a/rampart_1_1/modules/adb-codegen/maven.xml b/rampart_1_1/modules/adb-codegen/maven.xml
new file mode 100644
index 0000000..3ef5056
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/maven.xml
@@ -0,0 +1,169 @@
+<?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:u="jelly:util"
+         xmlns:maven="jelly:maven"
+         xmlns:util="jelly:util"
+         xmlns:deploy="deploy"
+         xmlns:ant="jelly:ant">
+
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+
+<!-- run the schema compiler -->
+    <preGoal name="test:compile">
+        <!--<j:if test="context.getVariable('maven.test.skip') != 'true'}">-->
+
+        <j:set var="compiled.classes.dir" value="target/classes"/>
+        <!-- Theres got to be a better way to do this -->
+        <j:set var="schema.source.dir" value="test-resources/xsd"/>
+        <j:set var="testsuite.source.dir" value="test-resources/testsuite"/>
+        <j:set var="schema.output.base.dir" value="target/schema"/>
+        <j:set var="schema.generated.src.dir" value="${schema.output.base.dir}/src"/>
+        <j:set var="schema.generated.classes.dir" value="${schema.output.base.dir}/classes"/>
+        <!-- make the dirs -->
+        <mkdir dir="${schema.output.base.dir}"/>
+        <mkdir dir="${schema.generated.src.dir}"/>
+        <mkdir dir="${schema.generated.classes.dir}"/>
+        <!-- Run schema compiler with designated schemas -->
+        <ant:echo>Compiling simple_maxOccurs2.xsd</ant:echo>
+        <!-- simple max occurs 2 xsd -->
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple_maxOccurs2.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+        <ant:echo>Compiling anonymous_complexType.xsd</ant:echo>
+        <!-- anon complex type xsd -->
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/anonymous_complexType.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+          <!-- anon choice xsd -->
+        <ant:echo>Compiling simple_choice.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple_choice.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+        <!-- anon particle all xsd -->
+        <ant:echo>Compiling simple_particle_all.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple_particle_all.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+        <!-- simple max occurs xsd -->
+        <ant:echo>Compiling simple_maxOccurs.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple_maxOccurs.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+
+        <!-- simple any type xsd -->
+        <ant:echo>Compiling simple_anytype.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple_anytype.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+
+
+        <!-- min occurs 0 xsd -->
+        <ant:echo>Compiling simple-minoccurs0.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple-minoccurs0.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+
+          <!-- complex min occurs 0 xsd -->
+        <ant:echo>Compiling complex-minoccurs0.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/complex-minoccurs0.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+
+        <ant:echo>Compiling simple-recursive-datatypes.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple-recursive-datatypes.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+
+          <ant:echo>Compiling mixed_minoccus0.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/mixed_minoccus0.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+        <!-- ################################################################### -->
+        <!-- All simple primitive types xsd -->
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/simple/simpleType-All.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+
+        <!-- All simple derived types xsd -->
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${schema.source.dir}/derived/derivedType-All.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+        <!-- ################################################################### -->
+        <!-- All simple derived types xsd -->
+        <ant:echo>Compiling complete.xsd</ant:echo>
+        <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+            <jvmarg line="${maven.junit.jvmargs}"/>
+            <classpath refid="maven.dependency.classpath"/>
+            <classpath location="${compiled.classes.dir}"/>
+            <arg file="${testsuite.source.dir}/complete.xsd"/>
+            <arg file="${schema.generated.src.dir}"/>
+        </java>
+        <!-- ################################################################### -->
+        <!-- Compile the generated classes -->
+        <javac destdir="${schema.generated.classes.dir}" srcdir="${schema.generated.src.dir}">
+            <classpath refid="maven.dependency.classpath"></classpath>
+            <classpath location="${compiled.classes.dir}"></classpath>
+        </javac>
+
+        <ant:path id="schema.generated.classes.dir" location="${schema.generated.classes.dir}"/>
+        <maven:addPath id="maven.dependency.classpath" refid="schema.generated.classes.dir"/>
+        <!--</j:if>-->
+    </preGoal>
+</project>
diff --git a/rampart_1_1/modules/adb-codegen/pom.xml b/rampart_1_1/modules/adb-codegen/pom.xml
new file mode 100644
index 0000000..d868427
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <groupId>org.apache.axis2</groupId>

+    <artifactId>axis2-parent</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+    <relativePath>../parent/pom.xml</relativePath>    

+  </parent>

+

+  <artifactId>axis2-adb-codegen</artifactId>

+  <name>Apache Axis 2.0 - ADB Codegen</name>

+  <description>ADB code generation support for Axis2</description>

+

+  <dependencies>

+    <dependency>

+      <groupId>${project.groupId}</groupId>

+      <artifactId>axis2-adb</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>${project.groupId}</groupId>

+      <artifactId>axis2-codegen</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>xmlunit</groupId>

+      <artifactId>xmlunit</artifactId>

+    </dependency>

+  </dependencies>

+

+  <build>

+    <sourceDirectory>src</sourceDirectory>

+    <testSourceDirectory>test</testSourceDirectory>

+    <resources>

+      <resource>

+        <directory>conf</directory>

+        <excludes>

+          <exclude>**/*.properties</exclude>

+        </excludes>

+        <filtering>false</filtering>

+      </resource>

+      <resource>

+        <directory>src</directory>

+        <excludes>

+          <exclude>**/*.java</exclude>

+        </excludes>

+      </resource>

+    </resources>

+  </build>

+</project>

diff --git a/rampart_1_1/modules/adb-codegen/project.properties b/rampart_1_1/modules/adb-codegen/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/adb-codegen/project.xml b/rampart_1_1/modules/adb-codegen/project.xml
new file mode 100644
index 0000000..ced95c8
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/project.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <id>axis2-adb-codegen</id>

+    <name>Apache Axis 2.0 - ADB Codegen</name>

+    <groupId>org.apache.axis2</groupId>

+    <description>ADB code generation support for Axis2</description>

+

+    <dependencies>

+       <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+       

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-codegen</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+	  <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-adb</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+

+        <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>${XmlSchema.version}</version>

+        </dependency>

+        

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>${activation.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>${stax.impl.groupid}</groupId>

+            <artifactId>${stax.impl.artifactid}</artifactId>

+            <version>${stax.impl.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://dist.codehaus.org/stax/jars/</url>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://dist.codehaus.org/stax/jars/</url>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>${wsdl4j.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant</artifactId>

+            <version>${ant.version}</version>

+            <type>jar</type>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>xmlunit</groupId>

+            <artifactId>xmlunit</artifactId>

+            <version>${xmlunit.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://www.ibiblio.org/maven/xmlunit/jars/</url>

+        </dependency>

+         <dependency>

+            <groupId>annogen</groupId>

+            <artifactId>annogen</artifactId>

+            <version>${annogen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>backport-util-concurrent</groupId>

+            <artifactId>backport-util-concurrent</artifactId>

+            <version>${backport_util_concurrent.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>${neethi.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+    </dependencies>

+

+    <reports/>

+    <!-- add the build properties-->

+    <build>

+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>

+        <sourceDirectory>src</sourceDirectory>

+        <unitTestSourceDirectory>test</unitTestSourceDirectory>

+        <unitTest>

+            <includes>

+                <include>**/*Test.java</include>

+            </includes>

+        </unitTest>

+        <resources>

+            <resource>

+                <directory>src</directory>

+                <includes>

+                    <include>**/*.properties</include>

+                    <include>**/*.xml</include>

+                    <include>**/*.xsl</include>

+                    <include>**/*.xsd</include>

+                </includes>

+            </resource>

+        </resources>

+    </build>

+</project>

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/BeanWriterMetaInfoHolder.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/BeanWriterMetaInfoHolder.java
new file mode 100644
index 0000000..9823f00
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/BeanWriterMetaInfoHolder.java
@@ -0,0 +1,752 @@
+package org.apache.axis2.schema;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.LinkedHashMap;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * This class is used as a holder to pass on the meta information to the bean writer.
+ * This meta information is used by the writer to write the databinding conversion code.
+ * Note - Metainfholders are not meant to be reused!!!. They are per-class basis and are strictly
+ * not thread safe!!!!
+ */
+public class BeanWriterMetaInfoHolder {
+
+
+    protected boolean ordered = false;
+    protected boolean anonymous = false;
+    protected boolean choice = false;
+    protected boolean simple = false;
+
+    protected boolean extension = false;
+    protected boolean restriction = false;
+    private String extensionClassName = "";
+    private String restrictionClassName = "";
+    private QName extensionBaseType = null;
+    private QName restrictionBaseType = null;
+    protected Map elementToSchemaQNameMap = new LinkedHashMap();
+    protected Map elementToJavaClassMap = new LinkedHashMap();
+    protected Map specialTypeFlagMap = new LinkedHashMap();
+    protected Map qNameMaxOccursCountMap = new LinkedHashMap();
+    protected Map qNameMinOccursCountMap = new LinkedHashMap();
+    protected Map qNameOrderMap = new LinkedHashMap();
+    protected QName ownQname = null;
+    protected String ownClassName = null;
+
+    protected long lengthFacet = -1;
+    protected long maxLengthFacet = -1;
+    protected long minLengthFacet = -1;
+    protected ArrayList enumFacet = new ArrayList();
+    protected String patternFacet = null;
+    protected String maxExclusiveFacet = null;
+    protected String minExclusiveFacet = null;
+    protected String maxInclusiveFacet = null;
+    protected String minInclusiveFacet = null;
+
+    protected List nillableQNameList = new ArrayList();
+
+    //the parent metainfo holder, useful in handling extensions and
+    //restrictions
+    protected BeanWriterMetaInfoHolder parent = null;
+
+    public boolean isChoice() {
+        return choice;
+    }
+
+    public void setChoice(boolean choice) {
+        this.choice = choice;
+    }
+
+    public boolean isSimple() {
+        return simple;
+    }
+
+    public void setSimple(boolean simple) {
+        this.simple = simple;
+    }
+
+    public String getOwnClassName() {
+        return ownClassName;
+    }
+
+    public void setOwnClassName(String ownClassName) {
+        this.ownClassName = ownClassName;
+    }
+
+    public QName getOwnQname() {
+        return ownQname;
+    }
+
+    public void setOwnQname(QName ownQname) {
+        this.ownQname = ownQname;
+    }
+
+    /**
+     * Gets the parent
+     */
+    public BeanWriterMetaInfoHolder getParent() {
+        return parent;
+    }
+
+    /**
+     * Gets the anonymous status.
+     *
+     * @return Returns boolean.
+     */
+    public boolean isAnonymous() {
+        return anonymous;
+    }
+
+    /**
+     * Sets the anonymous flag.
+     *
+     * @param anonymous
+     */
+    public void setAnonymous(boolean anonymous) {
+        this.anonymous = anonymous;
+    }
+
+    /**
+     * Sets the extensions base class name. Valid only when the isExtension
+     * returns true.
+     *
+     * @return Returns String.
+     */
+    public String getExtensionClassName() {
+        return extensionClassName;
+    }
+
+    /**
+     * Sets the extensions base class name. Valid only when the isExtension
+     * returns true.
+     *
+     * @param extensionClassName
+     */
+    public void setExtensionClassName(String extensionClassName) {
+        this.extensionClassName = extensionClassName;
+    }
+
+    /**
+     * Gets the extension status.
+     *
+     * @return Returns boolean.
+     */
+    public boolean isExtension() {
+        return extension;
+    }
+
+
+    /**
+     * Sets the extension status.
+     *
+     * @param extension
+     */
+    public void setExtension(boolean extension) {
+        this.extension = extension;
+    }
+
+    public String getRestrictionClassName() {
+        return restrictionClassName;
+    }
+
+    /**
+     * Sets the restriction base class name. Valid only when the isRestriction
+     * returns true.
+     *
+     * @param restrictionClassName
+     */
+    public void setRestrictionClassName(String restrictionClassName) {
+        this.restrictionClassName = restrictionClassName;
+    }
+
+    /**
+     * Gets the restriction status.
+     *
+     * @return Returns boolean.
+     */
+    public boolean isRestriction() {
+        return restriction;
+    }
+
+    /**
+     * Sets the restriction status.
+     *
+     * @param restriction
+     */
+    public void setRestriction(boolean restriction) {
+        this.restriction = restriction;
+    }
+
+    /**
+     * Sets the extension basetype.
+     *
+     * @param extensionBaseType
+     */
+    public void setExtensionBaseType(QName extensionBaseType) {
+        this.extensionBaseType = extensionBaseType;
+    }
+
+    /**
+     * Checks if it is a extension base type.
+     *
+     * @param extensionBaseType
+     */
+    public boolean isExtensionBaseType(QName extensionBaseType) {
+        return (this.extensionBaseType == extensionBaseType);
+    }
+
+    /**
+     * Sets the restriction basetype.
+     *
+     * @param restrictionBaseType
+     */
+    public void setRestrictionBaseType(QName restrictionBaseType) {
+        this.restrictionBaseType = restrictionBaseType;
+    }
+
+    /**
+     * Checks if it is a restriction base type.
+     *
+     * @param restrictionBaseType
+     */
+    public boolean isRestrictionBaseType(QName restrictionBaseType) {
+        return (this.restrictionBaseType == restrictionBaseType);
+    }
+
+    /**
+     * Gets the ordered status.
+     *
+     * @return Returns boolean.
+     */
+    public boolean isOrdered() {
+        return ordered;
+    }
+
+    /**
+     * Sets the ordered flag.
+     *
+     * @param ordered
+     */
+    public void setOrdered(boolean ordered) {
+        this.ordered = ordered;
+    }
+
+    /**
+     * Registers a mapping.
+     *
+     * @param qName
+     * @param schemaName
+     * @param javaClassName
+     */
+    public void registerMapping(QName qName, QName schemaName, String javaClassName) {
+        registerMapping(qName, schemaName, javaClassName, SchemaConstants.ELEMENT_TYPE);
+    }
+
+
+    /**
+     * Registers a Qname as nillable
+     * The qName better be of an element
+     *
+     * @param qName
+     * @param schemaName
+     * @param javaClassName
+     */
+    public void registerNillableQName(QName eltQName) {
+        nillableQNameList.add(eltQName);
+    }
+
+    /**
+     * Returns whether a QName is nillable or not
+     *
+     * @param eltQName
+     */
+    public boolean isNillable(QName eltQName) {
+        return nillableQNameList.contains(eltQName);
+    }
+
+    /**
+     * Registers a mapping.
+     *
+     * @param qName
+     * @param schemaName
+     * @param javaClassName
+     * @param type
+     */
+    public void registerMapping(QName qName, QName schemaName, String javaClassName, int type) {
+        this.elementToJavaClassMap.put(qName, javaClassName);
+        this.elementToSchemaQNameMap.put(qName, schemaName);
+        addtStatus(qName, type);
+
+    }
+
+    /**
+     * Gets the schema name for the given QName.
+     *
+     * @param eltQName
+     * @return Returns QName.
+     */
+    public QName getSchemaQNameForQName(QName eltQName) {
+        return (QName) this.elementToSchemaQNameMap.get(eltQName);
+    }
+
+    /**
+     * Gets the class name for the QName.
+     *
+     * @param eltQName
+     * @return Returns String.
+     */
+    public String getClassNameForQName(QName eltQName) {
+        return (String) this.elementToJavaClassMap.get(eltQName);
+    }
+
+    /**
+     * Gets whether a given QName is an attribute
+     *
+     * @param qName
+     * @return Returns boolean.
+     */
+    public boolean getAttributeStatusForQName(QName qName) {
+
+        Integer state = (Integer) specialTypeFlagMap.get(qName);
+        return state != null && getStatus(state.intValue(), SchemaConstants.ATTRIBUTE_TYPE);
+    }
+
+    /**
+     * checks the element corresponds to the qName type is xsd:anyType
+     *
+     * @param qName
+     * @return is element corresponds to qName has xsd:anyType
+     */
+
+    public boolean getDefaultStatusForQName(QName qName) {
+        boolean isDefault = false;
+        QName schemaTypeQName = (QName) this.elementToSchemaQNameMap.get(qName);
+        if (schemaTypeQName != null) {
+            isDefault = schemaTypeQName.equals(SchemaConstants.XSD_ANYTYPE);
+        }
+        return isDefault;
+    }
+
+
+    /**
+     * Gets whether a given QName represents a anyType
+     *
+     * @param qName
+     * @return Returns boolean.
+     */
+    public boolean getAnyStatusForQName(QName qName) {
+        Integer state = (Integer) specialTypeFlagMap.get(qName);
+        return state != null && getStatus(state.intValue(), SchemaConstants.ANY_TYPE);
+    }
+
+    /**
+     * Gets whether a given QName refers to an array.
+     *
+     * @param qName
+     * @return Returns boolean.
+     */
+    public boolean getArrayStatusForQName(QName qName) {
+        Integer state = (Integer) specialTypeFlagMap.get(qName);
+        return state != null && getStatus(state.intValue(),
+                SchemaConstants.ARRAY_TYPE);
+    }
+
+    /**
+     * Gets whether a given QName refers to binary.
+     *
+     * @param qName
+     * @return Returns boolean.
+     */
+    public boolean getBinaryStatusForQName(QName qName) {
+        Integer state = (Integer) specialTypeFlagMap.get(qName);
+        return state != null && getStatus(state.intValue(),
+                SchemaConstants.BINARY_TYPE);
+    }
+
+    /**
+     * Gets whether a given QName refers to Simple Type.
+     *
+     * @param qName
+     * @return Returns boolean.
+     */
+    public boolean getSimpleStatusForQName(QName qName) {
+        Integer state = (Integer) specialTypeFlagMap.get(qName);
+        return state != null && getStatus(state.intValue(),
+                SchemaConstants.SIMPLE_TYPE_OR_CONTENT);
+    }
+
+    /**
+     * Gets whether a given QName has the any attribute status.
+     *
+     * @param qName
+     * @return Returns boolean.
+     */
+    public boolean getAnyAttributeStatusForQName(QName qName) {
+        return getArrayStatusForQName(qName) &&
+                getAnyStatusForQName(qName);
+    }
+
+    /**
+     * Gets whether a given QName has the optional attribute status.
+     *
+     * @param qName QName of attribute
+     * @return Returns <code>true</code> if attribute has optional status
+     */
+    public boolean getOptionalAttributeStatusForQName(QName qName) {
+        Integer state = (Integer) specialTypeFlagMap.get(qName);
+        return state != null && getStatus(state.intValue(),
+                SchemaConstants.OPTIONAL_TYPE);
+    }
+
+    /**
+     * Clears the whole set of tables.
+     */
+    public void clearTables() {
+        this.elementToJavaClassMap.clear();
+        this.elementToSchemaQNameMap.clear();
+        this.elementToSchemaQNameMap.clear();
+        this.elementToJavaClassMap.clear();
+        this.specialTypeFlagMap.clear();
+        this.qNameMaxOccursCountMap.clear();
+        this.qNameMinOccursCountMap.clear();
+        this.qNameOrderMap.clear();
+    }
+
+    /**
+     * Adds the minOccurs associated with a QName.
+     *
+     * @param qName
+     * @param minOccurs
+     */
+    public void addMinOccurs(QName qName, long minOccurs) {
+        this.qNameMinOccursCountMap.put(qName, new Long(minOccurs));
+    }
+
+    /**
+     * Registers a QName for the order.
+     *
+     * @param qName
+     * @param index
+     */
+    public void registerQNameIndex(QName qName, int index) {
+        this.qNameOrderMap.put(new Integer(index), qName);
+    }
+
+    /**
+     * Adds the minOccurs associated with a QName.
+     *
+     * @param qName
+     * @return Returns long.
+     */
+    public long getMinOccurs(QName qName) {
+        Long l = (Long) this.qNameMinOccursCountMap.get(qName);
+        return l != null ? l.longValue() : 1; //default for min is 1
+    }
+
+    /**
+     * Gets the maxOccurs associated with a QName.
+     *
+     * @param qName
+     * @return Returns long.
+     */
+    public long getMaxOccurs(QName qName) {
+        Long l = (Long) this.qNameMaxOccursCountMap.get(qName);
+        return l != null ? l.longValue() : 1; //default for max is 1
+    }
+
+    /**
+     * Adds the maxOccurs associated with a QName.
+     *
+     * @param qName
+     * @param maxOccurs
+     */
+    public void addMaxOccurs(QName qName, long maxOccurs) {
+        this.qNameMaxOccursCountMap.put(qName, new Long(maxOccurs));
+    }
+
+    /**
+     * @return Returns Iterator.
+     * @deprecated Use #getQNameArray
+     */
+    public Iterator getElementQNameIterator() {
+        return elementToJavaClassMap.keySet().iterator();
+    }
+
+    /**
+     * Gets the QName array - may not be ordered.
+     *
+     * @return Returns QName[].
+     */
+    public QName[] getQNameArray() {
+        Set keySet = elementToJavaClassMap.keySet();
+        return (QName[]) keySet.toArray(new QName[keySet.size()]);
+    }
+
+    /**
+     * Gets the ordered QName array - useful in sequences where the order needs to be preserved
+     * Note - #registerQNameIndex needs to be called if this is to work properly!
+     *
+     * @return Returns QName[].
+     */
+    public QName[] getOrderedQNameArray() {
+        //get the keys of the order map
+        Set set = qNameOrderMap.keySet();
+        int count = set.size();
+        Integer[] keys = (Integer[]) set.toArray(new Integer[count]);
+        Arrays.sort(keys);
+
+        //Now refill the Ordered QName Array
+        List returnQNames = new ArrayList();
+        for (int i = 0; i < keys.length; i++) {
+            returnQNames.add(qNameOrderMap.get(keys[i]));
+        }
+
+        //we've missed the attributes, so if there are attributes
+        //add them explicitly to the end of this list
+        QName[] allNames = getQNameArray();
+        for (int i = 0; i < allNames.length; i++) {
+            if (getAttributeStatusForQName(allNames[i])) {
+                returnQNames.add(allNames[i]);
+            }
+        }
+
+        return (QName[]) returnQNames.toArray(new QName[returnQNames.size()]);
+    }
+
+    /**
+     * Finds the starting count for the addition of new items to the order
+     *
+     * @return the starting number for the sequence
+     */
+    public int getOrderStartPoint() {
+        return qNameOrderMap.size();
+    }
+
+
+    /**
+     * Creates link to th
+     *
+     * @param metaInfo
+     */
+    public void setAsParent(BeanWriterMetaInfoHolder metaInfo) {
+        parent = metaInfo;
+    }
+
+    /**
+     * Adds a another status to a particular Qname.
+     * A Qname can be associated with multiple status flags
+     * and they all will be preserved
+     *
+     * @param type
+     * @param mask
+     */
+
+    public void addtStatus(QName type, int mask) {
+        Object obj = this.specialTypeFlagMap.get(type);
+        if (obj != null) {
+            int preValue = ((Integer) obj).intValue();
+            this.specialTypeFlagMap.put(type, new Integer((preValue | mask)));
+        } else {
+            this.specialTypeFlagMap.put(type, new Integer(mask));
+        }
+
+    }
+
+
+    private boolean getStatus(int storedStatus, int mask) {
+        //when the mask is anded with the status then we should get
+        //the mask it self!
+        return (mask == (mask & storedStatus));
+    }
+
+    /**
+     * Sets the length facet.
+     *
+     * @param lengthFacet
+     */
+    public void setLengthFacet(long lengthFacet) {
+        this.lengthFacet = lengthFacet;
+    }
+
+    /**
+     * Gets the length facet.
+     *
+     * @return Returns length facet.
+     */
+    public long getLengthFacet() {
+        return this.lengthFacet;
+    }
+
+    /**
+     * Sets the maxExclusive.
+     *
+     * @param maxExclusiveFacet
+     */
+    public void setMaxExclusiveFacet(String maxExclusiveFacet) {
+        this.maxExclusiveFacet = maxExclusiveFacet;
+    }
+
+    /**
+     * Gets the maxExclusive.
+     *
+     * @return Returns the maxExclusive.
+     */
+    public String getMaxExclusiveFacet() {
+        return this.maxExclusiveFacet;
+    }
+
+    /**
+     * Sets the minExclusive.
+     *
+     * @param minExclusiveFacet
+     */
+    public void setMinExclusiveFacet(String minExclusiveFacet) {
+        this.minExclusiveFacet = minExclusiveFacet;
+    }
+
+    /**
+     * Gets the minExclusive.
+     *
+     * @return Returns the minExclusive.
+     */
+    public String getMinExclusiveFacet() {
+        return this.minExclusiveFacet;
+    }
+
+    /**
+     * Sets the maxInclusive.
+     *
+     * @param maxInclusiveFacet
+     */
+    public void setMaxInclusiveFacet(String maxInclusiveFacet) {
+        this.maxInclusiveFacet = maxInclusiveFacet;
+    }
+
+    /**
+     * Gets the maxInclusive.
+     *
+     * @return Returns the maxInclusive.
+     */
+    public String getMaxInclusiveFacet() {
+        return this.maxInclusiveFacet;
+    }
+
+    /**
+     * Sets the minInclusive.
+     *
+     * @param minInclusiveFacet
+     */
+    public void setMinInclusiveFacet(String minInclusiveFacet) {
+        this.minInclusiveFacet = minInclusiveFacet;
+    }
+
+    /**
+     * Gets the minInclusive.
+     *
+     * @return Returns the minInclusive.
+     */
+    public String getMinInclusiveFacet() {
+        return this.minInclusiveFacet;
+    }
+
+    /**
+     * Sets the maxLength.
+     *
+     * @param maxLengthFacet
+     */
+    public void setMaxLengthFacet(long maxLengthFacet) {
+        this.maxLengthFacet = maxLengthFacet;
+    }
+
+    /**
+     * Gets the maxLength.
+     *
+     * @return Returns maxLength.
+     */
+    public long getMaxLengthFacet() {
+        return this.maxLengthFacet;
+    }
+
+    /**
+     * Sets the minLength.
+     *
+     * @param minLengthFacet
+     */
+    public void setMinLengthFacet(long minLengthFacet) {
+        this.minLengthFacet = minLengthFacet;
+    }
+
+    /**
+     * Gets the minLength.
+     *
+     * @return Returns minLength.
+     */
+    public long getMinLengthFacet() {
+        return this.minLengthFacet;
+    }
+
+    /**
+     * Sets the enumeration.
+     *
+     * @param enumFacet
+     */
+    public void setEnumFacet(ArrayList enumFacet) {
+        this.enumFacet = enumFacet;
+    }
+
+    /**
+     * Adds the enumeration.
+     *
+     * @param enumFacet
+     */
+    public void addEnumFacet(String enumFacet) {
+        this.enumFacet.add(enumFacet);
+    }
+
+    /**
+     * Gets the enumeration.
+     *
+     * @return Returns enumeration.
+     */
+    public List getEnumFacet() {
+        return this.enumFacet;
+    }
+
+    /**
+     * Sets the pattern.
+     *
+     * @param patternFacet
+     */
+    public void setPatternFacet(String patternFacet) {
+        this.patternFacet = patternFacet;
+    }
+
+    /**
+     * Gets the pattern.
+     *
+     * @return Returns pattern.
+     */
+    public String getPatternFacet() {
+        return this.patternFacet;
+    }
+}
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java
new file mode 100644
index 0000000..1778ba0
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java
@@ -0,0 +1,184 @@
+package org.apache.axis2.schema;

+

+import org.apache.axis2.schema.i18n.SchemaCompilerMessages;

+

+import java.io.File;

+import java.util.regex.Matcher;

+import java.util.regex.Pattern;

+import java.util.Map;

+import java.util.HashMap;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * This is a bean class that captures all the compiler options.

+ * Right now the compiler options consist of the following

+ * 1. output file location - A folder with necessary rights for the

+ * schema compiler to write the files

+ * 2.package name

+ * 3.namespace to package map

+ * 4.boolean flag marking whether to wrap or unwrap

+ * 4.boolean flag marking whether to write classes or not

+ */

+public class CompilerOptions {

+

+    /**

+     * Generated output file

+     */

+    private File outputLocation;

+    private String packageName = null;

+    private boolean generateAll = false;

+

+    /**

+     * Package for the mapper

+     */

+    private String mapperClassPackage = null;

+

+    public String getMapperClassPackage() {

+        return mapperClassPackage;

+    }

+

+    public void setMapperClassPackage(String mapperClassPackage) {

+        this.mapperClassPackage = mapperClassPackage;

+    }

+

+    /**

+     * get whether the mapper class package

+     * name is present

+     */

+    public boolean isMapperClassPackagePresent(){

+        return   (mapperClassPackage!=null &&

+                       !"".equals(mapperClassPackage));

+    }

+    /**

+     * The flag keeping whether seperate helpers

+     * need to be generated or not

+     */

+    private boolean helperMode = false;

+    

+    public boolean isHelperMode() {

+        return helperMode;

+    }

+

+    public void setHelperMode(boolean helperMode) {

+        this.helperMode = helperMode;

+    }

+    

+    /**

+     * Keep track of the namespace and packages mapping

+     */

+    private Map ns2PackageMap = new HashMap();

+

+    public Map getNs2PackageMap() {

+        return ns2PackageMap;

+    }

+

+    public void setNs2PackageMap(Map ns2PackageMap) {

+        this.ns2PackageMap = ns2PackageMap;

+    }

+

+    /**

+     * This flag tells the databinder to either write the output or

+     * not. if this is set to true it will write the output at once.

+     * if not the outputter will populate the 

+     */

+    private boolean writeOutput = false;

+

+    /**

+     * This flag determines whether the generated classes are wrapped or not

+     * if the wrapper flag is true, then only a single file will be generated

+     */

+    private boolean wrapClasses = false;

+

+    public boolean isWriteOutput() {

+        return writeOutput;

+    }

+

+    public void setWriteOutput(boolean writeOutput) {

+        this.writeOutput = writeOutput;

+    }

+

+    public boolean isWrapClasses() {

+        return wrapClasses;

+    }

+

+    public void setWrapClasses(boolean wrapClasses) {

+        this.wrapClasses = wrapClasses;

+    }

+

+    public String getPackageName() {

+        return packageName;

+    }

+

+    public CompilerOptions setPackageName(String packageName) {

+        // Validate the package name.

+        if (packageName != null && testValue(packageName)) {

+            this.packageName = packageName;

+        } else {

+            throw new RuntimeException(SchemaCompilerMessages.getMessage("schema.unsupportedvalue"));

+        }

+        return this;

+    }

+

+    public File getOutputLocation() {

+        return outputLocation;

+    }

+

+    public CompilerOptions setOutputLocation(File outputLocation) {

+        this.outputLocation = outputLocation;

+        return this;

+    }

+

+    private boolean testValue(String wordToMatch) {

+        Pattern pat = Pattern.compile("^(\\w+\\.)+$");

+        Matcher m = pat.matcher(wordToMatch);

+        return m.matches();

+    }

+    

+    public boolean isGenerateAll() {

+        return generateAll;

+    }

+

+    public void setGenerateAll(boolean generateAll) {

+        this.generateAll = generateAll;

+    }

+	/**

+	 * This flag determines whether the generated classes are expected to be

+	 * backword compatible with Axis 1.x

+	 */

+	private boolean backwordCompatibilityMode = false;

+

+	public boolean isBackwordCompatibilityMode() {

+		return backwordCompatibilityMode;

+	}

+

+	public void setBackwordCompatibilityMode(boolean backwordCompatibilityMode) {

+		this.backwordCompatibilityMode = backwordCompatibilityMode;

+	}

+

+    /**

+     * Should we suppress namespace prefixes

+     */

+    private boolean suppressPrefixesMode = false;

+

+    public boolean isSuppressPrefixesMode() {

+        return suppressPrefixesMode;

+    }

+

+    public void setSuppressPrefixesMode(boolean suppressPrefixesMode) {

+        this.suppressPrefixesMode = suppressPrefixesMode;

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
new file mode 100644
index 0000000..d41141a
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
@@ -0,0 +1,435 @@
+package org.apache.axis2.schema;
+
+import org.apache.axis2.description.AxisMessage;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.WSDLUtil;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;
+import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+import org.apache.axis2.wsdl.util.Constants;
+import org.apache.ws.commons.schema.*;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * This is the utility for the extension to call by reflection.
+ */
+public class ExtensionUtility {
+
+
+    public static void invoke(CodeGenConfiguration configuration) throws Exception {
+        List schemaList = configuration.getAxisService().getSchema();
+
+        //hashmap that keeps the targetnamespace and the xmlSchema object
+        //this is a convenience to locate the relevant schema quickly
+        //by looking at the target namespace
+        Map schemaMap = new HashMap();
+        populateSchemaMap(schemaMap, schemaList);
+
+        if (schemaList == null || schemaList.isEmpty()) {
+            //there are no types to be code generated
+            //However if the type mapper is left empty it will be a problem for the other
+            //processes. Hence the default type mapper is set to the configuration
+            configuration.setTypeMapper(new DefaultTypeMapper());
+            return;
+        }
+        //call the schema compiler
+        CompilerOptions options = new CompilerOptions();
+
+        //set the default options
+        populateDefaultOptions(options, configuration);
+
+        //set the user parameters. the user parameters get the preference over
+        //the default ones. But the user better know what he's doing if he
+        //used module specific parameters
+        populateUserparameters(options, configuration);
+
+        SchemaCompiler schemaCompiler = new SchemaCompiler(options);
+        // run the schema compiler
+        schemaCompiler.compile(schemaList);
+
+        //create the type mapper
+        //First try to take the one that is already there
+        TypeMapper mapper = configuration.getTypeMapper();
+        if (mapper == null) {
+            mapper = new JavaTypeMapper();
+        }
+
+        if (options.isWriteOutput()) {
+            //get the processed element map and transfer it to the type mapper
+            Map processedMap = schemaCompiler.getProcessedElementMap();
+            Iterator processedkeys = processedMap.keySet().iterator();
+            QName qNameKey;
+            while (processedkeys.hasNext()) {
+                qNameKey = (QName) processedkeys.next();
+                mapper.addTypeMappingName(qNameKey, processedMap.get(qNameKey).toString());
+            }
+
+        } else {
+            //get the processed model map and transfer it to the type mapper
+            //since the options mentiond that its not writable, it should have
+            //populated the model map
+            Map processedModelMap = schemaCompiler.getProcessedModelMap();
+            Iterator processedkeys = processedModelMap.keySet().iterator();
+            QName qNameKey;
+            while (processedkeys.hasNext()) {
+                qNameKey = (QName) processedkeys.next();
+                mapper.addTypeMappingObject(qNameKey, processedModelMap.get(qNameKey));
+            }
+
+            Map processedMap = schemaCompiler.getProcessedElementMap();
+            processedkeys = processedMap.keySet().iterator();
+            while (processedkeys.hasNext()) {
+                qNameKey = (QName) processedkeys.next();
+                mapper.addTypeMappingName(qNameKey, processedMap.get(qNameKey).toString());
+            }
+
+            //get the ADB template from the schema compilers property bag and set the
+            //template
+            configuration.putProperty(Constants.EXTERNAL_TEMPLATE_PROPERTY_KEY,
+                    schemaCompiler.getCompilerProperties().getProperty(
+                            SchemaConstants.SchemaPropertyNames.BEAN_WRITER_TEMPLATE_KEY));
+
+        }
+
+        //process the unwrapped parameters
+        if (!configuration.isParametersWrapped()) {
+            //figure out the unwrapped operations
+            AxisService axisService = configuration.getAxisService();
+
+            for (Iterator operations = axisService.getOperations();
+                 operations.hasNext();) {
+                AxisOperation op = (AxisOperation) operations.next();
+                if (WSDLUtil.isInputPresentForMEP(op.getMessageExchangePattern())) {
+                    walkSchema(op.getMessage(
+                            WSDLConstants.MESSAGE_LABEL_IN_VALUE),
+                            mapper,
+                            schemaMap,
+                            op.getName().getLocalPart());
+                }
+
+
+            }
+        }
+
+        //set the type mapper to the config
+        configuration.setTypeMapper(mapper);
+
+    }
+
+    /**
+     * Populate the schema objects into the
+     *
+     * @param schemaMap
+     * @param schemaList
+     */
+    private static void populateSchemaMap(Map schemaMap, List schemaList) {
+        for (int i = 0; i < schemaList.size(); i++) {
+            XmlSchema xmlSchema = (XmlSchema) schemaList.get(i);
+            schemaMap.put(xmlSchema.getTargetNamespace(), xmlSchema);
+        }
+    }
+
+    /**
+     * @param message
+     * @param mapper
+     */
+    private static void walkSchema(AxisMessage message,
+                                   TypeMapper mapper,
+                                   Map schemaMap,
+                                   String opName) {
+
+        if (message.getParameter(Constants.UNWRAPPED_KEY) != null) {
+            XmlSchemaType schemaType = message.getSchemaElement().getSchemaType();
+            //create a type mapper
+            processXMLSchemaComplexType(schemaType, mapper, opName, schemaMap);
+        }
+    }
+
+    private static void processXMLSchemaComplexType(XmlSchemaType schemaType, TypeMapper mapper, String opName, Map schemaMap) {
+        if (schemaType instanceof XmlSchemaComplexType) {
+            XmlSchemaComplexType cmplxType = (XmlSchemaComplexType) schemaType;
+            if (cmplxType.getContentModel() == null) {
+                processSchemaSequence(cmplxType.getParticle(), mapper, opName, schemaMap);
+            } else {
+                processComplexContentModel(cmplxType, mapper, opName, schemaMap);
+            }
+        }
+    }
+
+    private static void processComplexContentModel(XmlSchemaComplexType cmplxType, TypeMapper mapper, String opName, Map schemaMap) {
+        XmlSchemaContentModel contentModel = cmplxType.getContentModel();
+        if (contentModel instanceof XmlSchemaComplexContent) {
+            XmlSchemaComplexContent xmlSchemaComplexContent = (XmlSchemaComplexContent) contentModel;
+            XmlSchemaContent content = xmlSchemaComplexContent.getContent();
+            if (content instanceof XmlSchemaComplexContentExtension) {
+                XmlSchemaComplexContentExtension schemaExtension = (XmlSchemaComplexContentExtension) content;
+
+                // process particles inside this extension, if any
+                processSchemaSequence(schemaExtension.getParticle(), mapper, opName, schemaMap);
+
+                // now we need to get the schema of the extension type from the parent schema. For that let's first retrieve
+                // the parent schema
+                XmlSchema parentSchema = (XmlSchema) schemaMap.get(schemaExtension.getBaseTypeName().getNamespaceURI());
+
+                // ok now we got the parent schema. Now let's get the extension's schema type
+
+                XmlSchemaType extensionSchemaType = parentSchema.getTypeByName(schemaExtension.getBaseTypeName());
+
+                processXMLSchemaComplexType(extensionSchemaType, mapper, opName, schemaMap);
+            }
+        }
+    }
+
+    private static void processSchemaSequence(XmlSchemaParticle particle, TypeMapper mapper, String opName, Map schemaMap) {
+        if (particle instanceof XmlSchemaSequence) {
+            XmlSchemaObjectCollection items =
+                    ((XmlSchemaSequence) particle).getItems();
+            for (Iterator i = items.getIterator(); i.hasNext();) {
+                Object item = i.next();
+                // get each and every element in the sequence and
+                // traverse through them
+                if (item instanceof XmlSchemaElement) {
+                    //populate the map with the partname - class name
+                    //attached to the schema element
+                    XmlSchemaElement xmlSchemaElement = (XmlSchemaElement) item;
+                    XmlSchemaType eltSchemaType = xmlSchemaElement.getSchemaType();
+                    if (eltSchemaType != null) {
+                        //there is a schema type object.We can utilize that
+                        populateClassName(eltSchemaType, mapper, opName, xmlSchemaElement);
+                    } else if (xmlSchemaElement.getSchemaTypeName() != null) {
+                        //there is no schema type object but there is a
+                        //schema type QName.  Use that Qname to look up the
+                        //schematype in other schema objects
+                        eltSchemaType = findSchemaType(schemaMap,
+                                xmlSchemaElement.getSchemaTypeName());
+                        if (eltSchemaType != null) {
+                            populateClassName(eltSchemaType, mapper, opName, xmlSchemaElement);
+                        } else if (xmlSchemaElement.getSchemaTypeName().equals(SchemaConstants.XSD_ANYTYPE)) {
+                            QName partQName = WSDLUtil.getPartQName(opName,
+                                    WSDLConstants.INPUT_PART_QNAME_SUFFIX,
+                                    xmlSchemaElement.getName());
+
+                            if (xmlSchemaElement.getMaxOccurs() > 1) {
+                                mapper.addTypeMappingName(partQName, "org.apache.axiom.om.OMElement[]");
+                            } else {
+                                mapper.addTypeMappingName(partQName, "org.apache.axiom.om.OMElement");
+                            }
+                        }
+                    }
+                } else if (item instanceof XmlSchemaAny) {
+
+                    // if this is an instance of xs:any, then there is no part name for it. Using ANY_ELEMENT_FIELD_NAME
+                    // for it for now
+
+                    //we have to handle both maxoccurs 1 and maxoccurs > 1 situation
+                    XmlSchemaAny xmlSchemaAny = (XmlSchemaAny) item;
+
+                    QName partQName = WSDLUtil.getPartQName(opName,
+                            WSDLConstants.INPUT_PART_QNAME_SUFFIX,
+                            Constants.ANY_ELEMENT_FIELD_NAME);
+
+                    if (((XmlSchemaAny) item).getMaxOccurs() > 1) {
+                        mapper.addTypeMappingName(partQName, "org.apache.axiom.om.OMElement[]");
+                    } else {
+                        mapper.addTypeMappingName(partQName, "org.apache.axiom.om.OMElement");
+                    }
+
+                }
+
+            }
+
+        }
+    }
+
+    // private static void
+
+    /**
+     * Util method to populate the class name into the typeMap
+     *
+     * @param eltSchemaType
+     */
+    private static void populateClassName(XmlSchemaType eltSchemaType,
+                                          TypeMapper typeMap,
+                                          String opName,
+                                          XmlSchemaElement xmlSchemaElement) {
+
+        boolean isArray = xmlSchemaElement.getMaxOccurs() > 1;
+
+        Map metaInfoMap = eltSchemaType.getMetaInfoMap();
+
+        if (metaInfoMap != null) {
+            String className = (String) metaInfoMap.
+                    get(SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY);
+
+            // this is a temporary patch
+            // the acual problem is keeping the class name details on the schemaType in
+            // XmlSchema compiler.
+            // we have to store them in XmlElement
+            if (isArray && !className.endsWith("[]")) {
+                className += "[]";
+            } else if (!isArray && className.endsWith("[]")) {
+                className = className.substring(0, className.length() - 2);
+            }
+
+
+            QName partQName = WSDLUtil.getPartQName(opName,
+                    WSDLConstants.INPUT_PART_QNAME_SUFFIX,
+                    xmlSchemaElement.getName());
+            typeMap.addTypeMappingName(partQName, className);
+            if (Boolean.TRUE.equals(
+                    metaInfoMap.get(SchemaConstants.
+                            SchemaCompilerInfoHolder.CLASSNAME_PRIMITVE_KEY))) {
+
+                //this type is primitive - add that to the type mapper status
+                //for now lets add a boolean
+                typeMap.addTypeMappingStatus(partQName, Boolean.TRUE);
+            }
+        }
+    }
+
+
+    /**
+     * Look for a given schema type given the schema type Qname
+     *
+     * @param schemaMap
+     * @return null if the schema is not found
+     */
+    private static XmlSchemaType findSchemaType(Map schemaMap, QName schemaTypeName) {
+        //find the schema
+        XmlSchema schema = (XmlSchema) schemaMap.get(schemaTypeName.getNamespaceURI());
+        if (schema != null) {
+            return schema.getTypeByName(schemaTypeName);
+        }
+        return null;
+    }
+
+    /**
+     * populate parameters from the user
+     *
+     * @param options
+     */
+    private static void populateUserparameters(CompilerOptions options, CodeGenConfiguration configuration) {
+        Map propertyMap = configuration.getProperties();
+        if (propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.WRAP_SCHEMA_CLASSES)) {
+            if (Boolean.valueOf(
+                    propertyMap.get(SchemaConstants.SchemaCompilerArguments.WRAP_SCHEMA_CLASSES).toString()).
+                    booleanValue()) {
+                options.setWrapClasses(true);
+            } else {
+                options.setWrapClasses(false);
+            }
+        }
+
+        if (propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.WRITE_SCHEMA_CLASSES)) {
+            if (Boolean.valueOf(
+                    propertyMap.get(SchemaConstants.SchemaCompilerArguments.WRITE_SCHEMA_CLASSES).toString()).
+                    booleanValue()) {
+                options.setWriteOutput(true);
+            } else {
+                options.setWriteOutput(false);
+            }
+        }
+
+        // add the custom package name
+        if (propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.PACKAGE)) {
+            String packageName = (String) propertyMap.get(SchemaConstants.SchemaCompilerArguments.PACKAGE);
+            if (packageName != null || !"".equals(packageName)) {
+                options.setPackageName(packageName);
+            }
+
+        }
+
+        //add custom mapper package name
+        if (propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.MAPPER_PACKAGE)) {
+            String packageName = (String) propertyMap.get(SchemaConstants.SchemaCompilerArguments.MAPPER_PACKAGE);
+            if (packageName != null || !"".equals(packageName)) {
+                options.setMapperClassPackage(packageName);
+            }
+
+        }
+
+        //set helper mode
+        //this becomes effective only if the classes are unpacked
+        if (!options.isWrapClasses()) {
+            if (propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.HELPER_MODE)) {
+                options.setHelperMode(true);
+            }
+        }
+    }
+
+
+    /**
+     * populate the default options - called before the applying of user parameters
+     *
+     * @param options
+     */
+    private static void populateDefaultOptions(CompilerOptions options,
+                                               CodeGenConfiguration configuration) {
+        //create the output directory
+        File outputDir = configuration.isFlattenFiles() ?
+                configuration.getOutputLocation() :
+                new File(configuration.getOutputLocation(), configuration.getSourceLocation());
+
+        if (!outputDir.exists()) {
+            outputDir.mkdirs();
+        }
+
+        /// these options need to be taken from the command line
+        options.setOutputLocation(outputDir);
+        options.setNs2PackageMap(configuration.getUri2PackageNameMap() == null ?
+                new HashMap() :
+                configuration.getUri2PackageNameMap());
+
+        //default setting is to set the wrap status depending on whether it's
+        //the server side or the client side
+        if (configuration.isServerSide()) {
+            //for the serverside we generate unwrapped  by default
+            options.setWrapClasses(false);
+            //for the serverside we write the output by default
+            options.setWriteOutput(true);
+        } else {
+            // for the client let the users preference be the word here
+            options.setWrapClasses(configuration.isPackClasses());
+            //for the client side the default setting is not to write the
+            //output
+            options.setWriteOutput(!configuration.isPackClasses());
+        }
+
+        if (configuration.isGenerateAll()) {
+            options.setGenerateAll(true);
+        }
+
+        if (configuration.isBackwordCompatibilityMode()) {
+            options.setBackwordCompatibilityMode(true);
+        }
+
+        if (configuration.isSuppressPrefixesMode()) {
+            options.setSuppressPrefixesMode(true);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompilationException.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompilationException.java
new file mode 100644
index 0000000..3da89ca
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompilationException.java
@@ -0,0 +1,40 @@
+package org.apache.axis2.schema;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A simeple extension from the java.lang.exception to serve as the schema compilers

+ * Exception

+ */

+public class SchemaCompilationException extends Exception {

+

+    private static final long serialVersionUID = 2520939560060608157L;

+

+	public SchemaCompilationException() {

+    }

+

+    public SchemaCompilationException(String message) {

+        super(message);

+    }

+

+    public SchemaCompilationException(Throwable cause) {

+        super(cause);

+    }

+

+    public SchemaCompilationException(String message, Throwable cause) {

+        super(message, cause);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java
new file mode 100644
index 0000000..7f7a5fa
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java
@@ -0,0 +1,1836 @@
+package org.apache.axis2.schema;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.namespace.Constants;
+import org.apache.axis2.schema.i18n.SchemaCompilerMessages;
+import org.apache.axis2.schema.util.SchemaPropertyLoader;
+import org.apache.axis2.schema.writer.BeanWriter;
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.util.SchemaUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaAll;
+import org.apache.ws.commons.schema.XmlSchemaAny;
+import org.apache.ws.commons.schema.XmlSchemaAnyAttribute;
+import org.apache.ws.commons.schema.XmlSchemaAttribute;
+import org.apache.ws.commons.schema.XmlSchemaChoice;
+import org.apache.ws.commons.schema.XmlSchemaComplexContent;
+import org.apache.ws.commons.schema.XmlSchemaComplexContentExtension;
+import org.apache.ws.commons.schema.XmlSchemaComplexContentRestriction;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaContent;
+import org.apache.ws.commons.schema.XmlSchemaContentModel;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaEnumerationFacet;
+import org.apache.ws.commons.schema.XmlSchemaImport;
+import org.apache.ws.commons.schema.XmlSchemaInclude;
+import org.apache.ws.commons.schema.XmlSchemaLengthFacet;
+import org.apache.ws.commons.schema.XmlSchemaMaxExclusiveFacet;
+import org.apache.ws.commons.schema.XmlSchemaMaxInclusiveFacet;
+import org.apache.ws.commons.schema.XmlSchemaMaxLengthFacet;
+import org.apache.ws.commons.schema.XmlSchemaMinExclusiveFacet;
+import org.apache.ws.commons.schema.XmlSchemaMinInclusiveFacet;
+import org.apache.ws.commons.schema.XmlSchemaMinLengthFacet;
+import org.apache.ws.commons.schema.XmlSchemaObject;
+import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
+import org.apache.ws.commons.schema.XmlSchemaObjectTable;
+import org.apache.ws.commons.schema.XmlSchemaParticle;
+import org.apache.ws.commons.schema.XmlSchemaPatternFacet;
+import org.apache.ws.commons.schema.XmlSchemaSequence;
+import org.apache.ws.commons.schema.XmlSchemaSimpleContent;
+import org.apache.ws.commons.schema.XmlSchemaSimpleContentExtension;
+import org.apache.ws.commons.schema.XmlSchemaSimpleContentRestriction;
+import org.apache.ws.commons.schema.XmlSchemaSimpleType;
+import org.apache.ws.commons.schema.XmlSchemaSimpleTypeContent;
+import org.apache.ws.commons.schema.XmlSchemaSimpleTypeList;
+import org.apache.ws.commons.schema.XmlSchemaSimpleTypeRestriction;
+import org.apache.ws.commons.schema.XmlSchemaSimpleTypeUnion;
+import org.apache.ws.commons.schema.XmlSchemaType;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * Schema compiler for ADB. Based on WS-Commons schema object model.
+ */
+public class SchemaCompiler {
+
+    private static final Log log = LogFactory.getLog(SchemaCompiler .class);
+
+    private CompilerOptions options;
+    private HashMap processedTypemap;
+
+    //the list of processedElements for the outer elements
+    private HashMap processedElementMap;
+
+    private HashMap processedAnonymousComplexTypesMap;
+
+    //we need this map to keep the referenced elements. these elements need to be kept seperate
+    //to avoid conflicts
+    private HashMap processedElementRefMap;
+    private HashMap simpleTypesMap;
+    private HashMap changedTypeMap;
+
+    // this map is necessary to retain the metainformation of types. The reason why these
+    // meta info 'bags' would be useful later is to cater for the extensions and restrictions
+    // of types
+    private HashMap processedTypeMetaInfoMap;
+
+    //
+    private ArrayList processedElementList;
+
+    //a list of nillable elements - used to generate code
+    //for nillable elements
+    private List nillableElementList;
+    // writee reference
+    private BeanWriter writer = null;
+    private Map baseSchemaTypeMap = null;
+
+    //a map for keeping the already loaded schemas
+    //the key is the targetnamespace and the value is the schema object
+    private Map loadedSchemaMap = new HashMap();
+
+    // A map keeping the available schemas
+    //the key is the targetnamespace and the value is the schema object
+    //this map will be populated when multiple schemas
+    //are fed to the schema compiler!
+    private Map availableSchemaMap = new HashMap();
+
+    private Map loadedSourceURI = new HashMap();
+
+    // a list of externally identified QNames to be processed. This becomes
+    // useful when  only a list of external elements need to be processed
+
+    public static final String ANY_ELEMENT_FIELD_NAME = "extraElement";
+    public static final String EXTRA_ATTRIBUTE_FIELD_NAME = "extraAttributes";
+
+    public static final String DEFAULT_CLASS_NAME = OMElement.class.getName();
+    public static final String DEFAULT_CLASS_ARRAY_NAME = "org.apache.axiom.om.OMElement[]";
+
+    public static final String DEFAULT_ATTRIB_CLASS_NAME = OMAttribute.class.getName();
+    public static final String DEFAULT_ATTRIB_ARRAY_CLASS_NAME = "org.apache.axiom.om.OMAttribute[]";
+
+
+    private static int typeCounter = 0;
+
+
+
+
+    /**
+     * @return the processes element map
+     * includes the Qname of the element as the key and a
+     * String representing the fully qualified class name
+     */
+    public HashMap getProcessedElementMap() {
+        return processedElementMap;
+    }
+
+
+    /**
+     * @return a map of Qname vs models. A model can be anything,
+     * ranging from a DOM document to a stream. This is taken from the
+     * writer and the schema compiler has no control over it
+     */
+    public Map getProcessedModelMap() {
+        return writer.getModelMap();
+    }
+
+    /**
+     * Constructor - Accepts a options bean
+     *
+     * @param options
+     */
+    public SchemaCompiler(CompilerOptions options) throws SchemaCompilationException {
+
+        if (options == null) {
+            //create an empty options object
+            this.options = new CompilerOptions();
+        } else {
+            this.options = options;
+        }
+
+        //instantiate the maps
+        processedTypemap = new HashMap();
+        processedElementMap = new HashMap();
+        simpleTypesMap = new HashMap();
+        processedElementList = new ArrayList();
+        processedAnonymousComplexTypesMap = new HashMap();
+        changedTypeMap = new HashMap();
+        processedTypeMetaInfoMap = new HashMap();
+        processedElementRefMap = new HashMap();
+        nillableElementList = new ArrayList();
+
+        //load the writer and initiliaze the base types
+        writer = SchemaPropertyLoader.getBeanWriterInstance();
+        writer.init(this.options);
+
+        //load the base types
+        baseSchemaTypeMap = SchemaPropertyLoader.getTypeMapperInstance().getTypeMap();
+
+
+    }
+
+    /**
+     * Compile a list of schemas
+     * This actually calls the compile (XmlSchema s) method repeatedly
+     *
+     * @param schemalist
+     * @throws SchemaCompilationException
+     * @see #compile(org.apache.ws.commons.schema.XmlSchema)
+     */
+    public void compile(List schemalist) throws SchemaCompilationException {
+        try {
+
+            if (schemalist.isEmpty()){
+                return;
+            }
+
+            //clear the loaded and available maps
+            loadedSchemaMap.clear();
+            availableSchemaMap.clear();
+
+            XmlSchema schema;
+            // first round - populate the avaialble map
+            for (int i = 0; i < schemalist.size(); i++) {
+                schema = (XmlSchema) schemalist.get(i);
+                availableSchemaMap.put(
+                        schema.getTargetNamespace(),
+                        schema
+                );
+            }
+
+            //set a mapper package if not avaialable
+            if (writer.getExtensionMapperPackageName()==null){
+                String nsp = null;
+                //get the first schema from the list and take that namespace as the
+                //mapper namespace
+                for (int i = 0; nsp == null && i < schemalist.size(); i++) {
+                    nsp = ((XmlSchema) schemalist.get(i)).getTargetNamespace();
+                    if (nsp != null)
+                        break;
+                    XmlSchema[] schemas = SchemaUtil.getAllSchemas((XmlSchema) schemalist.get(i));
+                    for (int j = 0; schemas != null && j < schemas.length; j++) {
+                        nsp = schemas[j].getTargetNamespace();
+                        if (nsp != null)
+                            break;
+                    }
+                }
+                if(nsp == null) {
+                    nsp = URLProcessor.DEFAULT_PACKAGE;
+                }
+                writer.registerExtensionMapperPackageName(URLProcessor.makePackageName(nsp));
+            }
+            // second round - call the schema compiler one by one
+            for (int i = 0; i < schemalist.size(); i++) {
+                compile((XmlSchema) schemalist.get(i),true);
+            }
+
+            //finish up
+            finalizeSchemaCompilation();
+
+        } catch (SchemaCompilationException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+    }
+
+    /**
+     * Compile (rather codegen) a single schema element
+     * @param schema
+     * @throws SchemaCompilationException
+     */
+    public void compile(XmlSchema schema) throws SchemaCompilationException {
+        compile(schema,false);
+    }
+
+    /**
+     * Compile (rather codegen) a single schema element
+     * @param schema
+     * @param isPartofGroup
+     * @throws SchemaCompilationException
+     */
+    private void compile(XmlSchema schema,boolean isPartofGroup) throws SchemaCompilationException {
+
+        // some documents explicitly imports the schema of built in types. We don't actually need to compile
+        // the built-in types. So check the target namespace here and ignore it.
+        if (Constants.URI_2001_SCHEMA_XSD.equals(schema.getTargetNamespace())) {
+            return;
+        }
+
+        //register the package from this namespace as the mapper classes package
+        if (!isPartofGroup){
+            //set a mapper package if not avaialable
+            if (writer.getExtensionMapperPackageName()==null){
+                writer.registerExtensionMapperPackageName(
+                        URLProcessor.makePackageName(schema.getTargetNamespace()));
+            }
+        }
+
+        //First look for the schemas that are imported and process them
+        //Note that these are processed recursively!
+
+        //add the schema to the loaded schema list
+        if (!loadedSchemaMap.containsKey(schema.getTargetNamespace())) {
+            loadedSchemaMap.put(schema.getTargetNamespace(), schema);
+        }
+        
+        // If we have/are loading a schema with a specific targetnamespace from a certain URI,
+        // then just return back to the caller to avoid recursion.
+        if (schema.getSourceURI() != null){
+            String key = schema.getTargetNamespace() + ":" + schema.getSourceURI();
+            if(loadedSourceURI.containsKey(key)){
+                return;
+            }
+            loadedSourceURI.put(key, key);
+        }
+
+        XmlSchemaObjectCollection includes = schema.getIncludes();
+        if (includes != null) {
+            Iterator tempIterator = includes.getIterator();
+            while (tempIterator.hasNext()) {
+                Object o = tempIterator.next();
+                if (o instanceof XmlSchemaImport) {
+                    XmlSchema schema1 = ((XmlSchemaImport) o).getSchema();
+                    if (schema1 != null) compile(schema1,isPartofGroup);
+                }
+                if (o instanceof XmlSchemaInclude) {
+                    XmlSchema schema1 = ((XmlSchemaInclude) o).getSchema();
+                    if (schema1 != null) compile(schema1,isPartofGroup);
+                }
+            }
+        }
+
+        //select all the elements. We generate the code for types
+        //only if the elements refer them!!! regardless of the fact that
+        //we have a list of elementnames, we'll need to process all the elements
+        XmlSchemaObjectTable elements = schema.getElements();
+        Iterator xmlSchemaElement1Iterator = elements.getValues();
+        while (xmlSchemaElement1Iterator.hasNext()) {
+            //this is the set of outer elements so we need to generate classes
+            //The outermost elements do not contain occurence counts (!) so we do not need
+            //to check for arraytypes
+            processElement((XmlSchemaElement) xmlSchemaElement1Iterator.next(), schema);
+        }
+
+        Iterator xmlSchemaElement2Iterator = elements.getValues();
+
+        // re-iterate through the elements and write them one by one
+        // if the mode is unpack this process will not really write the
+        // classes but will accumilate the models for a final single shot
+        // write
+        while (xmlSchemaElement2Iterator.hasNext()) {
+            //this is the set of outer elements so we need to generate classes
+            writeElement((XmlSchemaElement) xmlSchemaElement2Iterator.next());
+        }
+        
+        if(options.isGenerateAll()) {
+            Iterator xmlSchemaTypes2Iterator = schema.getSchemaTypes().getValues();
+            while (xmlSchemaTypes2Iterator.hasNext()) {
+                XmlSchemaType schemaType = (XmlSchemaType) xmlSchemaTypes2Iterator.next();
+                if(this.isAlreadyProcessed(schemaType.getQName())) {
+                    continue;
+                }
+                if (schemaType instanceof XmlSchemaComplexType) {
+                    //write classes for complex types
+                    XmlSchemaComplexType complexType = (XmlSchemaComplexType) schemaType;
+                    if (complexType.getName() != null) {
+                        processNamedComplexSchemaType(complexType, schema);
+                    }
+                } else if (schemaType instanceof XmlSchemaSimpleType) {
+                    //process simple type
+                    processSimpleSchemaType((XmlSchemaSimpleType) schemaType,
+                            null,
+                            schema);
+                }
+            }
+        }
+
+        if (!isPartofGroup){
+            //complete the compilation
+            finalizeSchemaCompilation();
+        }
+    }
+
+    /**
+     * Completes the schema compilation process by writing the
+     * mappers and the classes in a batch if needed
+     * @throws SchemaCompilationException
+     */
+    private void finalizeSchemaCompilation() throws SchemaCompilationException {
+        //write the extension mapping class
+        writer.writeExtensionMapper(
+                (BeanWriterMetaInfoHolder[])
+                        processedTypeMetaInfoMap.values().toArray(
+                                new BeanWriterMetaInfoHolder[processedTypeMetaInfoMap.size()]));
+
+
+        if (options.isWrapClasses()) {
+            writer.writeBatch();
+        }
+    }
+
+    /**
+     * @return the property map of the schemacompiler.
+     * In this case it would be the property map loaded from
+     * the configuration file
+     */
+    public Properties getCompilerProperties(){
+        return SchemaPropertyLoader.getPropertyMap() ;
+    }
+
+
+    /**
+     * Writes the element
+     *
+     * @param xsElt
+     * @throws SchemaCompilationException
+     */
+    private void writeElement(XmlSchemaElement xsElt) throws SchemaCompilationException {
+
+        if (this.processedElementMap.containsKey(xsElt.getQName())) {
+            return;
+        }
+
+        XmlSchemaType schemaType = xsElt.getSchemaType();
+
+
+        BeanWriterMetaInfoHolder metainf = new BeanWriterMetaInfoHolder();
+        if (schemaType != null && schemaType.getName() != null) {
+            //this is a named type
+            QName qName = schemaType.getQName();
+            //find the class name
+            String className = findClassName(qName, isArray(xsElt));
+
+            //this means the schema type actually returns a different QName
+            if (changedTypeMap.containsKey(qName)) {
+                metainf.registerMapping(xsElt.getQName(),
+                        (QName) changedTypeMap.get(qName),
+                        className);
+            } else {
+                metainf.registerMapping(xsElt.getQName(),
+                        qName,
+                        className);
+            }
+
+
+        }else if (xsElt.getRefName()!= null){
+            // Since top level elements would not have references
+            // and we only write toplevel elements, this should
+            // not be a problem , atleast should not occur in a legal schema
+        }else if (xsElt.getSchemaTypeName()!= null) {
+            QName qName = xsElt.getSchemaTypeName();
+            String className = findClassName(qName, isArray(xsElt));
+            metainf.registerMapping(xsElt.getQName(),
+                    qName,
+                    className);
+
+
+        }else if (schemaType != null){  //the named type should have been handled already
+
+            //we are going to special case the anonymous complex type. Our algorithm for dealing
+            //with it is to generate a single object that has the complex content inside. Really the
+            //intent of the user when he declares the complexType anonymously is to use it privately
+            //First copy the schema types content into the metainf holder
+            metainf = (BeanWriterMetaInfoHolder) this.processedAnonymousComplexTypesMap.get(xsElt);
+            metainf.setAnonymous(true);
+        }else{
+            //this means we did not find any schema type associated with the particular element.
+            log.warn(SchemaCompilerMessages.getMessage("schema.elementWithNoType", xsElt.getQName().toString()));
+            metainf.registerMapping(xsElt.getQName(),
+                    null,
+                    DEFAULT_CLASS_NAME,
+                    SchemaConstants.ANY_TYPE);
+        }
+
+        if (nillableElementList.contains(xsElt.getQName())){
+            metainf.registerNillableQName(xsElt.getQName());
+        }
+
+
+        String writtenClassName = writer.write(xsElt, processedTypemap, metainf);
+        //register the class name
+        xsElt.addMetaInfo(SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY,
+                writtenClassName);
+        processedElementMap.put(xsElt.getQName(), writtenClassName);
+    }
+
+    /**
+     * For inner elements
+     * @param xsElt
+     * @param innerElementMap
+     * @param parentSchema
+     * @throws SchemaCompilationException
+     */
+    private void processElement(XmlSchemaElement xsElt,Map innerElementMap,List localNillableList,XmlSchema parentSchema) throws SchemaCompilationException {
+        processElement(xsElt,false,innerElementMap,localNillableList,parentSchema);
+    }
+
+    /**
+     * For outer elements
+     * @param xsElt
+     * @param parentSchema
+     * @throws SchemaCompilationException
+     */
+    private void processElement(XmlSchemaElement xsElt,XmlSchema parentSchema) throws SchemaCompilationException {
+        processElement(xsElt,true,null,null,parentSchema);
+    }
+    /**
+     * Process and Element
+     *
+     * @param xsElt
+     * @param isOuter  We need to know this since the treatment of outer elements is different that
+     *                     inner elements
+     * @throws SchemaCompilationException
+     */
+    private void processElement(XmlSchemaElement xsElt, boolean isOuter,Map innerElementMap,List localNillableList, XmlSchema parentSchema) throws SchemaCompilationException {
+
+        //if the element is null, which usually happens when the qname is not
+        //proper, throw an exceptions
+        if (xsElt==null){
+            throw new SchemaCompilationException(
+                    SchemaCompilerMessages.getMessage("schema.elementNull"));
+        }
+
+        //The processing element logic seems to be quite simple. Look at the relevant schema type
+        //for each and every element and process that accordingly.
+        //this means that any unused type definitions would not be generated!
+        if (isOuter && processedElementList.contains(xsElt.getQName())) {
+            return;
+        }
+
+        XmlSchemaType schemaType = xsElt.getSchemaType();
+        if (schemaType != null) {
+            processSchema(xsElt, schemaType,parentSchema);
+            //at this time it is not wise to directly write the class for the element
+            //so we push the complete element to an arraylist and let the process
+            //pass through. We'll be iterating through the elements writing them
+            //later
+
+            if (!isOuter) {
+                if (schemaType.getName()!=null){
+                    // this element already has a name. Which means we can directly
+                    // register it
+                    String className = findClassName(schemaType.getQName(),
+                            isArray(xsElt));
+
+                    innerElementMap.put(xsElt.getQName(), className);
+
+                    //store in the schema map
+                    schemaType.addMetaInfo(
+                            SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY,
+                            className);
+
+                    if (baseSchemaTypeMap.containsValue(className)){
+                        schemaType.addMetaInfo(
+                                SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_PRIMITVE_KEY,
+                                Boolean.TRUE);
+                    }
+                    //since this is a inner element we should add it to the inner element map
+                }else{
+                    //this is an anon type. This should have been already processed and registered at
+                    //the anon map. we've to write it just like we treat a referenced type(giving due
+                    //care that this is meant to be an attribute in some class)
+
+                    QName generatedTypeName = generateTypeQName(xsElt.getQName(), parentSchema);
+
+                    if (schemaType instanceof XmlSchemaComplexType){
+                        //set a name
+                        schemaType.setName(generatedTypeName.getLocalPart());
+                        // Must do this up front to support recursive types
+                        String fullyQualifiedClassName = writer.makeFullyQualifiedClassName(schemaType.getQName());
+                        processedTypemap.put(schemaType.getQName(), fullyQualifiedClassName);
+                        
+                        BeanWriterMetaInfoHolder metaInfHolder = (BeanWriterMetaInfoHolder) processedAnonymousComplexTypesMap.get(xsElt);
+                        metaInfHolder.setOwnQname(schemaType.getQName());
+                        metaInfHolder.setOwnClassName(fullyQualifiedClassName);
+                        
+                        writeComplexType((XmlSchemaComplexType)schemaType,
+                                metaInfHolder);
+                        //remove the reference from the anon list since we named the type
+                        processedAnonymousComplexTypesMap.remove(xsElt);
+                        String className = findClassName(schemaType.getQName(), isArray(xsElt));
+                        innerElementMap.put(
+                                xsElt.getQName(),
+                                className);
+
+                        //store in the schema map
+                        xsElt.addMetaInfo(
+                                SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY,
+                                className);
+                    } else if (schemaType instanceof XmlSchemaSimpleType){
+                        //set a name
+                        schemaType.setName(generatedTypeName.getLocalPart());
+                        // Must do this up front to support recursive types
+                        String fullyQualifiedClassName = writer.makeFullyQualifiedClassName(schemaType.getQName());
+                        processedTypemap.put(schemaType.getQName(), fullyQualifiedClassName);
+
+                        BeanWriterMetaInfoHolder metaInfHolder = (BeanWriterMetaInfoHolder) processedAnonymousComplexTypesMap.get(xsElt);
+                        metaInfHolder.setOwnQname(schemaType.getQName());
+                        metaInfHolder.setOwnClassName(fullyQualifiedClassName);
+
+                        writeSimpleType((XmlSchemaSimpleType)schemaType,
+                                metaInfHolder);
+                        //remove the reference from the anon list since we named the type
+                        processedAnonymousComplexTypesMap.remove(xsElt);
+                        String className = findClassName(schemaType.getQName(), isArray(xsElt));
+                        innerElementMap.put(
+                                xsElt.getQName(),
+                                className);
+
+                        //store in the schema map
+                        xsElt.addMetaInfo(
+                                SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY,
+                                className);
+
+                    }
+                }
+            }else{
+                this.processedElementList.add(xsElt.getQName());
+            }
+            //referenced name
+        }else if (xsElt.getRefName()!=null){
+
+            if(xsElt.getRefName().equals(SchemaConstants.XSD_SCHEMA)){
+                innerElementMap.put(xsElt.getQName(), SchemaCompiler.DEFAULT_CLASS_NAME);
+                return;
+            }
+            //process the referenced type. It could be thought that the referenced element replaces this
+            //element
+            XmlSchemaElement referencedElement = getReferencedElement(parentSchema, xsElt.getRefName());
+            if (referencedElement==null){
+                throw new SchemaCompilationException(
+                        SchemaCompilerMessages.getMessage("schema.referencedElementNotFound", xsElt.getRefName().toString()));
+            }
+
+            //if the element is referenced, then it should be one of the outer (global) ones
+            processElement(referencedElement, parentSchema);
+
+            //no outer check required here. If the element is having a ref, then it is definitely
+            //not an outer element since the top level elements are not supposed to have refs
+            //Also we are sure that it should have a type reference
+            QName referenceEltQName = referencedElement.getQName();
+            if (referencedElement.getSchemaTypeName()!=null){
+                String className = findClassName(referencedElement.getSchemaTypeName(), isArray(xsElt));
+                //if this element is referenced, there's no QName for this element
+                this.processedElementRefMap.put(referenceEltQName, className);
+
+                referencedElement.addMetaInfo(SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY,
+                        className);
+            }else{
+                //this referenced element has an anon type and that anon type has been already
+                //processed. But in this case we need it to be a seperate class since this
+                //complextype has to be added as an attribute in a class.
+                //generate a name for this type
+                QName generatedTypeName = generateTypeQName(referenceEltQName, parentSchema);
+                XmlSchemaType referenceSchemaType = referencedElement.getSchemaType();
+
+                if (referenceSchemaType instanceof XmlSchemaComplexType){
+                    //set a name
+                    referenceSchemaType.setName(generatedTypeName.getLocalPart());
+
+                    writeComplexType((XmlSchemaComplexType)referenceSchemaType,
+                            (BeanWriterMetaInfoHolder)processedAnonymousComplexTypesMap.get(referencedElement)
+                    );
+                    //remove the reference from the anon list since we named the type
+                    // DEEPAL :- We can not remove the entry from the hashtable ,
+                    // this will fail if there are two reference for the same type
+
+                    //processedAnonymousComplexTypesMap.remove(referencedElement);
+
+                    //add this to the processed ref type map
+                    String fullyQualifiedClassName = writer.makeFullyQualifiedClassName(generatedTypeName);
+                    processedTypemap.put(generatedTypeName, fullyQualifiedClassName);
+                    this.processedElementRefMap.put(referenceEltQName, fullyQualifiedClassName);
+                }
+            }
+            // schema type name is present but not the schema type object
+        }else if (xsElt.getSchemaTypeName()!=null){
+            //There can be instances where the SchemaType is null but the schemaTypeName is not!
+            //this specifically happens with xsd:anyType.
+            QName schemaTypeName = xsElt.getSchemaTypeName();
+
+            XmlSchema currentParentSchema = resolveParentSchema(schemaTypeName,parentSchema);
+            XmlSchemaType typeByName = getType(currentParentSchema, schemaTypeName);
+
+            if (typeByName!=null){
+                //this type is found in the schema so we can process it
+                processSchema(xsElt, typeByName,currentParentSchema);
+                if (!isOuter) {
+                    String className = findClassName(schemaTypeName, isArray(xsElt));
+                    //since this is a inner element we should add it to the inner element map
+                    innerElementMap.put(xsElt.getQName(), className);
+                }else{
+                    this.processedElementList.add(xsElt.getQName());
+                }
+            }else{
+                //this type is not found at all. we'll just register it with whatever the class name we can comeup with
+                if (!isOuter) {
+                    String className = findClassName(schemaTypeName, isArray(xsElt));
+                    innerElementMap.put(xsElt.getQName(), className);
+                }else{
+                    this.processedElementList.add(xsElt.getQName());
+                }
+            }
+        }
+
+        //add this elements QName to the nillable group if it has the  nillable attribute
+        if (xsElt.isNillable()){
+            if (isOuter){
+                this.nillableElementList.add(xsElt.getQName());
+            }else{
+                localNillableList.add(xsElt.getQName());
+            }
+        }
+
+    }
+
+    /**
+     * resolve the parent schema for the given schema type name
+     *
+     * @param schemaTypeName
+     * @param currentSchema
+     */
+    private XmlSchema resolveParentSchema(QName schemaTypeName,XmlSchema currentSchema)
+            throws SchemaCompilationException{
+        String targetNamespace = schemaTypeName.getNamespaceURI();
+        Object loadedSchema = loadedSchemaMap.get(targetNamespace);
+        if (loadedSchema!=null){
+            return  (XmlSchema)loadedSchema;
+        }else if (availableSchemaMap.containsKey(targetNamespace)) {
+            //compile the referenced Schema first and then pass it
+            XmlSchema schema = (XmlSchema) availableSchemaMap.get(targetNamespace);
+            compile(schema);
+            return schema;
+        }else{
+            return currentSchema;
+        }
+    }
+
+    /**
+     * Generate a unique type Qname using an element name
+     * @param referenceEltQName
+     * @param parentSchema
+     */
+    private QName generateTypeQName(QName referenceEltQName, XmlSchema parentSchema) {
+        QName generatedTypeName = new QName(referenceEltQName.getNamespaceURI(),
+                referenceEltQName.getLocalPart() + getNextTypeSuffix());
+        while (parentSchema.getTypeByName(generatedTypeName)!= null){
+            generatedTypeName = new QName(referenceEltQName.getNamespaceURI(),
+                    referenceEltQName.getLocalPart() + getNextTypeSuffix());
+        }
+        return generatedTypeName;
+    }
+    
+    /**
+     * Generate a unique attribute Qname using the ref name
+     * @param attrRefName
+     * @param parentSchema
+     * @return Returns the generated attribute name
+     */
+    private QName generateAttributeQName(QName attrRefName, XmlSchema parentSchema) {
+    	
+    	if (typeCounter==Integer.MAX_VALUE){
+            typeCounter = 0;
+        }
+        QName generatedAttrName = new QName(attrRefName.getNamespaceURI(),
+        		attrRefName.getLocalPart() + typeCounter++);
+        
+        while (parentSchema.getTypeByName(generatedAttrName)!= null){
+            generatedAttrName = new QName(attrRefName.getNamespaceURI(),
+            		attrRefName.getLocalPart() + typeCounter++);
+        }
+        return generatedAttrName;
+    }
+
+    /**
+     * Finds whether a given class is already made
+     * @param qName
+     */
+    private boolean isAlreadyProcessed(QName qName){
+        return processedTypemap.containsKey(qName)||
+                simpleTypesMap.containsKey(qName) ||
+                baseSchemaTypeMap.containsKey(qName);
+    }
+
+
+    /**
+     * A method to pick the ref class name
+     * @param name
+     * @param isArray
+     */
+    private String findRefClassName(QName name,boolean isArray){
+        String className = null;
+        if (processedElementRefMap.get(name)!=null){
+            className =(String)processedElementRefMap.get(name);
+
+            //if (isArray) {
+                //append the square braces that say this is an array
+                //hope this works for all cases!!!!!!!
+                //todo this however is a thing that needs to be
+                //todo fixed to get complete language support
+            //    className = className + "[]";
+            //}
+        }
+        return className;
+
+    }
+    /**
+     * Finds a class name from the given Qname
+     *
+     * @param qName
+     * @param isArray
+     * @return FQCN
+     */
+    private String findClassName(QName qName, boolean isArray) throws SchemaCompilationException {
+
+        //find the class name
+        String className;
+        if (processedTypemap.containsKey(qName)) {
+            className = (String) processedTypemap.get(qName);
+        } else if (simpleTypesMap.containsKey(qName)) {
+            className = (String) simpleTypesMap.get(qName);
+        } else if (baseSchemaTypeMap.containsKey(qName)) {
+            className = (String) baseSchemaTypeMap.get(qName);
+        } else {
+            if(isSOAP_ENC(qName.getNamespaceURI())) {
+                throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("schema.soapencoding.error", qName.toString())); 
+                
+            }
+            // We seem to have failed in finding a class name for the
+            //contained schema type. We better set the default then
+            //however it's better if the default can be set through the
+            //property file
+            className = DEFAULT_CLASS_NAME;
+            log.warn(SchemaCompilerMessages
+                    .getMessage("schema.typeMissing", qName.toString()));
+        }
+
+        if (isArray) {
+            //append the square braces that say this is an array
+            //hope this works for all cases!!!!!!!
+            //todo this however is a thing that needs to be
+            //todo fixed to get complete language support
+            className = className + "[]";
+        }
+        return className;
+    }
+    /**
+     * Returns true if SOAP_ENC Namespace.
+     *
+     * @param s a string representing the URI to check
+     * @return true if <code>s</code> matches a SOAP ENCODING namespace URI,
+     *         false otherwise
+     */
+    public static boolean isSOAP_ENC(String s) {
+        if (s.equals(Constants.URI_SOAP11_ENC))
+            return true;
+        return s.equals(Constants.URI_SOAP12_ENC);
+    }
+
+    /**
+     * Process a schema element which has been refered to by an element
+     * @param schemaType
+     * @throws SchemaCompilationException
+     */
+    private void processSchema(XmlSchemaElement xsElt, XmlSchemaType schemaType,XmlSchema parentSchema) throws SchemaCompilationException {
+        if (schemaType instanceof XmlSchemaComplexType) {
+            //write classes for complex types
+            XmlSchemaComplexType complexType = (XmlSchemaComplexType) schemaType;
+            if (complexType.getName() != null) {
+                processNamedComplexSchemaType(complexType,parentSchema);
+            } else {
+                processAnonymousComplexSchemaType(xsElt, complexType,parentSchema);
+            }
+        } else if (schemaType instanceof XmlSchemaSimpleType) {
+            //process simple type
+            processSimpleSchemaType((XmlSchemaSimpleType) schemaType,
+                    xsElt,
+                    parentSchema);
+        }
+    }
+
+
+    /**
+     * @param complexType
+     * @throws SchemaCompilationException
+     */
+    private void processAnonymousComplexSchemaType(XmlSchemaElement elt, XmlSchemaComplexType complexType,XmlSchema parentSchema)
+            throws SchemaCompilationException {
+        BeanWriterMetaInfoHolder metaInfHolder = processComplexType(complexType,parentSchema);
+
+        //since this is a special case (an unnamed complex type) we'll put the already processed
+        //metainf holder in a special map to be used later
+        this.processedAnonymousComplexTypesMap.put(elt, metaInfHolder);
+    }
+
+    /**
+     * handle the complex types which are named
+     * @param complexType
+     */
+    private void processNamedComplexSchemaType(XmlSchemaComplexType complexType,XmlSchema parentSchema) throws SchemaCompilationException {
+
+        if (processedTypemap.containsKey(complexType.getQName())
+                || baseSchemaTypeMap.containsKey(complexType.getQName())) {
+            return;
+        }
+
+        // Must do this up front to support recursive types
+        String fullyQualifiedClassName = writer.makeFullyQualifiedClassName(complexType.getQName());
+        processedTypemap.put(complexType.getQName(), fullyQualifiedClassName);
+
+        //register that in the schema metainfo bag
+        complexType.addMetaInfo(SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY,
+                fullyQualifiedClassName);
+
+        BeanWriterMetaInfoHolder metaInfHolder = processComplexType(complexType,parentSchema);
+        //add this information to the metainfo holder
+        metaInfHolder.setOwnQname(complexType.getQName());
+        metaInfHolder.setOwnClassName(fullyQualifiedClassName);
+        //write the class. This type mapping would have been populated right now
+        //Note - We always write classes for named complex types
+        writeComplexType(complexType, metaInfHolder);
+
+
+    }
+
+    /**
+     * Writes a complex type
+     * @param complexType
+     * @param metaInfHolder
+     * @param fullyQualifiedClassName the name returned by makeFullyQualifiedClassName() or null if it wasn't called
+     * @throws SchemaCompilationException
+     */
+    private void writeComplexType(XmlSchemaComplexType complexType, BeanWriterMetaInfoHolder metaInfHolder)
+            throws SchemaCompilationException {
+        writer.write(complexType, processedTypemap, metaInfHolder);
+        processedTypeMetaInfoMap.put(complexType.getQName(),metaInfHolder);
+    }
+
+    /**
+     * Writes a complex type
+     * @param simpleType
+     * @param metaInfHolder
+     * @throws SchemaCompilationException
+     */
+    private void writeSimpleType(XmlSchemaSimpleType simpleType, BeanWriterMetaInfoHolder metaInfHolder)
+            throws SchemaCompilationException {
+        writer.write(simpleType, processedTypemap, metaInfHolder);
+        processedTypeMetaInfoMap.put(simpleType.getQName(),metaInfHolder);
+    }
+
+    private BeanWriterMetaInfoHolder processComplexType(XmlSchemaComplexType complexType,XmlSchema parentSchema) throws SchemaCompilationException {
+        XmlSchemaParticle particle = complexType.getParticle();
+        BeanWriterMetaInfoHolder metaInfHolder = new BeanWriterMetaInfoHolder();
+        if (particle != null) {
+            //Process the particle
+            processParticle(particle, metaInfHolder,parentSchema);
+        }
+
+        //process attributes - first look for the explicit attributes
+        XmlSchemaObjectCollection attribs = complexType.getAttributes();
+        Iterator attribIterator = attribs.getIterator();
+        while (attribIterator.hasNext()) {
+            Object o = attribIterator.next();
+            if (o instanceof XmlSchemaAttribute) {
+                processAttribute((XmlSchemaAttribute) o, metaInfHolder,parentSchema);
+
+            }
+        }
+
+        //process any attribute
+        //somehow the xml schema parser does not seem to pickup the any attribute!!
+        XmlSchemaAnyAttribute anyAtt = complexType.getAnyAttribute();
+        if (anyAtt != null) {
+            processAnyAttribute(metaInfHolder,anyAtt);
+        }
+
+        //process content ,either  complex or simple
+        if (complexType.getContentModel()!=null){
+            processContentModel(complexType.getContentModel(),
+                    metaInfHolder,
+                    parentSchema);
+        }
+        return metaInfHolder;
+    }
+
+    /**
+     * Process the content models. A content model is either simple type or a complex type
+     * and included inside a complex content
+     */
+    private void processContentModel(XmlSchemaContentModel content,
+                                     BeanWriterMetaInfoHolder metaInfHolder,
+                                     XmlSchema parentSchema)
+            throws SchemaCompilationException{
+        if (content instanceof XmlSchemaComplexContent){
+            processComplexContent((XmlSchemaComplexContent)content,metaInfHolder,parentSchema);
+        }else if (content instanceof XmlSchemaSimpleContent){
+            processSimpleContent((XmlSchemaSimpleContent)content,metaInfHolder,parentSchema);
+            metaInfHolder.setSimple(true);
+        }
+    }
+
+    /**
+     * Prcess the complex content
+     */
+    private void processComplexContent(XmlSchemaComplexContent complexContent,
+                                       BeanWriterMetaInfoHolder metaInfHolder,
+                                       XmlSchema parentSchema)
+            throws SchemaCompilationException{
+        XmlSchemaContent content = complexContent.getContent();
+
+        if (content instanceof XmlSchemaComplexContentExtension ){
+
+            // to handle extension we need to attach the extended items to the base type
+            // and create a new type
+            XmlSchemaComplexContentExtension extension = (XmlSchemaComplexContentExtension)
+                    content;
+
+            //process the base type if it has not been processed yet
+            if (!isAlreadyProcessed(extension.getBaseTypeName())){
+                //pick the relevant basetype from the schema and process it
+                XmlSchemaType type = getType(parentSchema, extension.getBaseTypeName());
+                if (type instanceof XmlSchemaComplexType) {
+                    XmlSchemaComplexType complexType = (XmlSchemaComplexType) type;
+                    if (complexType.getName() != null) {
+                        processNamedComplexSchemaType(complexType,parentSchema);
+                    } else {
+                        //this is not possible. The extension should always
+                        //have a name
+                        throw new SchemaCompilationException("Unnamed complex type used in extension");//Internationlize this
+                    }
+                } else if (type instanceof XmlSchemaSimpleType) {
+                    //process simple type
+                    processSimpleSchemaType((XmlSchemaSimpleType)type,null,parentSchema);
+                }
+            }
+
+            // before actually processing this node, we need to recurse through the base types and add their
+            // children (sometimes even preserving the order) to the metainfo holder of this type
+            // the reason is that for extensions, the prefered way is to have the sequences of the base class
+            //* before * the sequence of the child element.
+            copyMetaInfoHierarchy(metaInfHolder,extension.getBaseTypeName(),parentSchema);
+
+
+            //process the particle of this node
+            processParticle(extension.getParticle(),metaInfHolder,parentSchema);
+            String className = findClassName(extension.getBaseTypeName(), false);
+
+            if (!SchemaCompiler.DEFAULT_CLASS_NAME.equals(className)) {
+                //the particle has been processed, However since this is an extension we need to
+                //add the basetype as an extension to the complex type class.
+                // The basetype has been processed already
+                metaInfHolder.setExtension(true);
+                metaInfHolder.setExtensionClassName(className);
+                //Note  - this is no array! so the array boolean is false
+            }
+        }else if (content instanceof XmlSchemaComplexContentRestriction){
+        	XmlSchemaComplexContentRestriction restriction = (XmlSchemaComplexContentRestriction) content;
+
+            //process the base type if it has not been processed yet
+            if (!isAlreadyProcessed(restriction.getBaseTypeName())){
+                //pick the relevant basetype from the schema and process it
+                XmlSchemaType type = getType(parentSchema, restriction.getBaseTypeName());
+                if (type instanceof XmlSchemaComplexType) {
+                    XmlSchemaComplexType complexType = (XmlSchemaComplexType) type;
+                    if (complexType.getName() != null) {
+                        processNamedComplexSchemaType(complexType,parentSchema);
+                    } else {
+                        //this is not possible. The restriction should always
+                        //have a name
+                        throw new SchemaCompilationException("Unnamed complex type used in restriction");//Internationlize this
+                    }
+                } else if (type instanceof XmlSchemaSimpleType) {
+                    
+                	throw new SchemaCompilationException("Not a valid restriction, complex content restriction base type cannot be a simple type.");
+                }
+            }
+
+            copyMetaInfoHierarchy(metaInfHolder,restriction.getBaseTypeName(),parentSchema);
+
+            //process the particle of this node
+            processParticle(restriction.getParticle(),metaInfHolder,parentSchema);
+            String className = findClassName(restriction.getBaseTypeName(), false);
+
+            if (!SchemaCompiler.DEFAULT_CLASS_NAME.equals(className)) {
+                metaInfHolder.setRestriction(true);
+                metaInfHolder.setRestrictionClassName(findClassName(restriction.getBaseTypeName(), false));
+                //Note  - this is no array! so the array boolean is false
+            }
+        }
+    }
+
+    /**
+     * Recursive method to populate the metainfo holders with info from the base types
+     * @param metaInfHolder
+     * @param baseTypeName
+     * @param parentSchema
+     */
+    private void copyMetaInfoHierarchy(BeanWriterMetaInfoHolder metaInfHolder,
+                                       QName baseTypeName,
+                                       XmlSchema parentSchema)
+            throws SchemaCompilationException {
+
+        XmlSchemaType type = parentSchema.getTypeByName(baseTypeName);
+
+        BeanWriterMetaInfoHolder baseMetaInfoHolder = (BeanWriterMetaInfoHolder)
+                processedTypeMetaInfoMap.get(baseTypeName);
+
+
+        if (baseMetaInfoHolder!= null){
+
+            // see whether this type is also extended from some other type first
+            // if so proceed to set their parents as well.
+            if (type instanceof XmlSchemaComplexType){
+                XmlSchemaComplexType complexType = (XmlSchemaComplexType)type;
+                if (complexType.getContentModel()!= null){
+                    XmlSchemaContentModel content = complexType.getContentModel();
+                    if (content instanceof XmlSchemaComplexContent){
+                        XmlSchemaComplexContent complexContent =
+                                (XmlSchemaComplexContent)content;
+                        if (complexContent.getContent() instanceof XmlSchemaComplexContentExtension){
+                            XmlSchemaComplexContentExtension extension =
+                                    (XmlSchemaComplexContentExtension)complexContent.getContent();
+                            //recursively call the copyMetaInfoHierarchy method
+                            copyMetaInfoHierarchy(baseMetaInfoHolder,
+                                    extension.getBaseTypeName(),
+                                    parentSchema);
+
+                        }else  if (complexContent.getContent() instanceof XmlSchemaComplexContentRestriction){
+
+                            XmlSchemaComplexContentRestriction restriction =
+                                    (XmlSchemaComplexContentRestriction)complexContent.getContent();
+                            //recursively call the copyMetaInfoHierarchy method
+                            copyMetaInfoHierarchy(baseMetaInfoHolder,
+                                    restriction.getBaseTypeName(),
+                                    parentSchema);
+
+                        }else{
+                            throw new SchemaCompilationException(
+                                    SchemaCompilerMessages.getMessage("schema.unknowncontenterror"));
+                        }
+
+                    }else if (content instanceof XmlSchemaSimpleContent){
+                        throw new SchemaCompilationException(
+                                SchemaCompilerMessages.getMessage("schema.unsupportedcontenterror","Simple Content"));
+                    }else{
+                        throw new SchemaCompilationException(
+                                SchemaCompilerMessages.getMessage("schema.unknowncontenterror"));
+                    }
+                }
+
+                //Do the actual parent setting
+                metaInfHolder.setAsParent(baseMetaInfoHolder);
+            }
+        }
+    }
+
+    /**
+     *
+     * @param simpleContent
+     * @param metaInfHolder
+     * @throws SchemaCompilationException
+     */
+    private void processSimpleContent(XmlSchemaSimpleContent simpleContent,BeanWriterMetaInfoHolder metaInfHolder,XmlSchema parentSchema)
+            throws SchemaCompilationException{
+        XmlSchemaContent content;
+        content = simpleContent.getContent();
+        if (content instanceof XmlSchemaSimpleContentExtension){
+        	XmlSchemaSimpleContentExtension extension = (XmlSchemaSimpleContentExtension)content;
+
+        	//process the base type if it has not been processed yet
+        	if (!isAlreadyProcessed(extension.getBaseTypeName())){
+        		//pick the relevant basetype from the schema and process it
+        		XmlSchemaType type = getType(parentSchema,extension.getBaseTypeName());
+        		if (type instanceof XmlSchemaComplexType) {
+        			XmlSchemaComplexType complexType = (XmlSchemaComplexType) type;
+        			if (complexType.getName() != null) {
+        				processNamedComplexSchemaType(complexType,parentSchema);
+        			} else {
+        				//this is not possible. The extension should always
+        				//have a name
+        				throw new SchemaCompilationException("Unnamed complex type used in extension");//Internationlize this
+        			}
+        		} else if (type instanceof XmlSchemaSimpleType) {
+        			//process simple type
+        			processSimpleSchemaType((XmlSchemaSimpleType)type,null, parentSchema);
+        		}
+        	}
+        	
+        	//process extension base type
+        	processSimpleExtensionBaseType(extension.getBaseTypeName(),metaInfHolder);
+        	
+        	//process attributes 
+            XmlSchemaObjectCollection attribs = extension.getAttributes();
+            Iterator attribIterator = attribs.getIterator();
+            while (attribIterator.hasNext()) {
+                Object attr = attribIterator.next();
+                if (attr instanceof XmlSchemaAttribute) {
+                    processAttribute((XmlSchemaAttribute) attr, metaInfHolder,parentSchema);
+
+                }
+            }
+            
+            //process any attribute
+            XmlSchemaAnyAttribute anyAtt = extension.getAnyAttribute();
+            if (anyAtt != null) {
+                processAnyAttribute(metaInfHolder,anyAtt);
+            }
+            
+        }else if (content instanceof XmlSchemaSimpleContentRestriction){
+        	XmlSchemaSimpleContentRestriction restriction = (XmlSchemaSimpleContentRestriction) content; 
+			
+        	//process the base type if it has not been processed yet
+        	if (!isAlreadyProcessed(restriction.getBaseTypeName())){
+        		//pick the relevant basetype from the schema and process it
+        		XmlSchemaType type = getType(parentSchema,restriction.getBaseTypeName());
+        		if (type instanceof XmlSchemaComplexType) {
+        			XmlSchemaComplexType complexType = (XmlSchemaComplexType) type;
+        			if (complexType.getName() != null) {
+        				processNamedComplexSchemaType(complexType,parentSchema);
+        			} else {
+        				//this is not possible. The extension should always
+        				//have a name
+        				throw new SchemaCompilationException("Unnamed complex type used in restriction");//Internationlize this
+        			}
+        		} else if (type instanceof XmlSchemaSimpleType) {
+        			//process simple type
+        			processSimpleSchemaType((XmlSchemaSimpleType)type,null, parentSchema);
+        		}
+        	}
+        	//process restriction base type
+        	processSimpleRestrictionBaseType(restriction.getBaseTypeName(), restriction.getBaseTypeName(),metaInfHolder);
+        }
+    }
+
+    /**
+    * Process Simple Extension Base Type.
+    *
+    * @param extBaseType
+    * @param metaInfHolder
+    */
+    public void processSimpleExtensionBaseType(QName extBaseType,BeanWriterMetaInfoHolder metaInfHolder) throws SchemaCompilationException {
+    	
+        //find the class name
+        String className = findClassName(extBaseType, false);
+
+        //this means the schema type actually returns a different QName
+        if (changedTypeMap.containsKey(extBaseType)) {
+        	metaInfHolder.registerMapping(extBaseType,
+                    (QName) changedTypeMap.get(extBaseType),
+                    className,SchemaConstants.ELEMENT_TYPE);
+        } else {
+        	metaInfHolder.registerMapping(extBaseType,
+        			extBaseType,
+                    className,SchemaConstants.ELEMENT_TYPE);
+        }
+
+        //get the binary state and add that to the status map
+        if (isBinary(extBaseType)){
+            metaInfHolder.addtStatus(extBaseType,
+                    SchemaConstants.BINARY_TYPE);
+        }
+    }
+    
+    /**
+     * Process Simple Restriction Base Type.
+     *
+     * @param resBaseType
+     * @param metaInfHolder
+     */
+    public void processSimpleRestrictionBaseType(QName qName, QName resBaseType,BeanWriterMetaInfoHolder metaInfHolder) throws SchemaCompilationException {
+
+        //find the class name
+        String className = findClassName(resBaseType, false);
+
+        //this means the schema type actually returns a different QName
+        if (changedTypeMap.containsKey(resBaseType)) {
+            metaInfHolder.registerMapping(qName,
+                    (QName) changedTypeMap.get(resBaseType),
+                    className,SchemaConstants.ELEMENT_TYPE);
+        } else {
+            metaInfHolder.registerMapping(qName,
+                    resBaseType,
+                    className,SchemaConstants.ELEMENT_TYPE);
+        }
+
+        metaInfHolder.setRestrictionBaseType(resBaseType);
+    }
+    
+    /**
+     * Process Facets.
+     *
+     * @param facets
+     * @param metaInfHolder
+     */
+    private void processFacets(XmlSchemaObjectCollection facets,BeanWriterMetaInfoHolder metaInfHolder) {
+    	
+    	Iterator facetIterator = facets.getIterator();
+		
+		while (facetIterator.hasNext()) {
+            Object obj = facetIterator.next();
+            
+            if ( obj instanceof XmlSchemaPatternFacet ) {
+				XmlSchemaPatternFacet pattern = (XmlSchemaPatternFacet) obj;
+				metaInfHolder.setPatternFacet(pattern.getValue().toString());
+			}
+            
+			else if ( obj instanceof XmlSchemaEnumerationFacet ) {
+				XmlSchemaEnumerationFacet enumeration = (XmlSchemaEnumerationFacet) obj;
+				metaInfHolder.addEnumFacet(enumeration.getValue().toString());
+			}
+			
+			else if ( obj instanceof XmlSchemaLengthFacet ) {
+				XmlSchemaLengthFacet length = (XmlSchemaLengthFacet) obj;
+				metaInfHolder.setLengthFacet(Integer.parseInt(length.getValue().toString()));
+			}
+			
+			else if ( obj instanceof XmlSchemaMaxExclusiveFacet ) {
+				XmlSchemaMaxExclusiveFacet maxEx = (XmlSchemaMaxExclusiveFacet) obj;
+				metaInfHolder.setMaxExclusiveFacet(maxEx.getValue().toString());
+			}
+			
+			else if ( obj instanceof XmlSchemaMinExclusiveFacet ) {
+				XmlSchemaMinExclusiveFacet minEx = (XmlSchemaMinExclusiveFacet) obj;
+				metaInfHolder.setMinExclusiveFacet(minEx.getValue().toString());
+			}
+			
+			else if ( obj instanceof XmlSchemaMaxInclusiveFacet ) {
+				XmlSchemaMaxInclusiveFacet maxIn = (XmlSchemaMaxInclusiveFacet) obj;
+				metaInfHolder.setMaxInclusiveFacet(maxIn.getValue().toString());
+			}
+			
+			else if ( obj instanceof XmlSchemaMinInclusiveFacet ) {
+				XmlSchemaMinInclusiveFacet minIn = (XmlSchemaMinInclusiveFacet) obj;
+				metaInfHolder.setMinInclusiveFacet(minIn.getValue().toString());
+			}
+			
+			else if ( obj instanceof XmlSchemaMaxLengthFacet ) {
+				XmlSchemaMaxLengthFacet maxLen = (XmlSchemaMaxLengthFacet) obj;
+				metaInfHolder.setMaxLengthFacet(Integer.parseInt(maxLen.getValue().toString()));
+			}
+			
+			else if ( obj instanceof XmlSchemaMinLengthFacet ) {
+				XmlSchemaMinLengthFacet minLen = (XmlSchemaMinLengthFacet) obj;
+				metaInfHolder.setMinLengthFacet(Integer.parseInt(minLen.getValue().toString()));
+			}
+        }
+    }
+    /**
+     * Handle any attribute
+     * @param metainf
+     */
+    private void processAnyAttribute(BeanWriterMetaInfoHolder metainf,XmlSchemaAnyAttribute anyAtt) {
+
+        //The best thing we can do here is to add a set of OMAttributes
+        //since attributes do not have the notion of minoccurs/maxoccurs the
+        //safest option here is to have an OMAttribute array
+        QName qName = new QName(EXTRA_ATTRIBUTE_FIELD_NAME);
+        metainf.registerMapping(qName,
+                null,
+                DEFAULT_ATTRIB_ARRAY_CLASS_NAME,//always generate an array of
+                //OMAttributes
+                SchemaConstants.ANY_TYPE);
+        metainf.addtStatus(qName, SchemaConstants.ATTRIBUTE_TYPE);
+        metainf.addtStatus(qName, SchemaConstants.ARRAY_TYPE);
+
+    }
+
+
+
+    /**
+     * Process the attribute
+     *
+     * @param att
+     * @param metainf
+     */
+    public void processAttribute(XmlSchemaAttribute att, BeanWriterMetaInfoHolder metainf, XmlSchema parentSchema) 
+                throws SchemaCompilationException {
+    	
+        //for now we assume (!!!) that attributes refer to standard types only
+        QName schemaTypeName = att.getSchemaTypeName();
+        if (schemaTypeName != null) {
+        	if (baseSchemaTypeMap.containsKey(schemaTypeName)) {
+        		if (att.getQName() != null) {
+        			metainf.registerMapping(att.getQName(),schemaTypeName,
+        					baseSchemaTypeMap.get(schemaTypeName).toString(), SchemaConstants.ATTRIBUTE_TYPE);
+
+            		// add optional attribute status if set
+            		String use = att.getUse().getValue();
+            		if (use.indexOf("optional") != -1) {
+            			metainf.addtStatus(att.getQName(), SchemaConstants.OPTIONAL_TYPE);
+            		}        			
+        		} 
+        	}
+        } else if (att.getRefName() != null) {
+        	XmlSchema currentParentSchema = resolveParentSchema(att.getRefName(),parentSchema);
+        	QName attrQname = generateAttributeQName(att.getRefName(),parentSchema);
+        	
+        	XmlSchemaObjectCollection items = currentParentSchema.getItems();
+        	Iterator itemIterator = items.getIterator();
+            
+        	while (itemIterator.hasNext()) {
+                Object attr = itemIterator.next();
+                
+                if (attr instanceof XmlSchemaAttribute) {
+                	XmlSchemaAttribute attribute  = (XmlSchemaAttribute) attr;
+                	
+                	if (attribute.getName().equals(att.getRefName().getLocalPart())) {
+                		QName attrTypeName = attribute.getSchemaTypeName();
+                		
+                		Object type = baseSchemaTypeMap.get(attrTypeName);
+                		if (type == null) {
+                			XmlSchemaSimpleType simpleType = attribute.getSchemaType();
+                            if(simpleType != null && simpleType.getContent() instanceof XmlSchemaSimpleTypeRestriction) {
+                                XmlSchemaSimpleTypeRestriction restriction = (XmlSchemaSimpleTypeRestriction) simpleType.getContent();
+                                QName baseTypeName = restriction.getBaseTypeName();
+                                type = baseSchemaTypeMap.get(baseTypeName);
+                                attrQname = att.getRefName();
+                            }
+                            //TODO: Handle XmlSchemaSimpleTypeUnion and XmlSchemaSimpleTypeList
+                        }
+
+                        if (type != null) {
+                            metainf.registerMapping(attrQname,attrQname,
+                                        type.toString(), SchemaConstants.ATTRIBUTE_TYPE);
+                            // add optional attribute status if set
+                            String use = att.getUse().getValue();
+                            if (use.indexOf("optional") != -1) {
+                                metainf.addtStatus(att.getQName(), SchemaConstants.OPTIONAL_TYPE);
+                            }        			
+                        }
+                	}
+                }
+            }
+        	
+    	} else {
+    		//todo his attribute refers to a custom type, probably one of the extended simple types.
+    		//todo handle it here
+        }
+    }
+
+    /**
+     * Process a particle- A particle may be a sequence,all or a choice
+     *
+     * @param particle
+     * @param metainfHolder
+     * @throws SchemaCompilationException
+     */
+    private void processParticle(XmlSchemaParticle particle, //particle being processed
+                                 BeanWriterMetaInfoHolder metainfHolder // metainf holder
+            ,XmlSchema parentSchema) throws SchemaCompilationException {
+        if (particle instanceof XmlSchemaSequence) {
+            XmlSchemaObjectCollection items = ((XmlSchemaSequence) particle).getItems();
+           	if (options.isBackwordCompatibilityMode()) {
+    			process(items, metainfHolder, false, parentSchema);
+    		} else {
+    			process(items, metainfHolder, true, parentSchema);
+    		}
+        } else if (particle instanceof XmlSchemaAll) {
+            XmlSchemaObjectCollection items = ((XmlSchemaAll) particle).getItems();
+            process(items, metainfHolder, false,parentSchema);
+        } else if (particle instanceof XmlSchemaChoice) {
+            XmlSchemaObjectCollection items = ((XmlSchemaChoice) particle).getItems();
+            metainfHolder.setChoice(true);
+            process(items, metainfHolder, false,parentSchema);
+
+        }
+    }
+
+    /**
+     * @param items
+     * @param metainfHolder
+     * @param order
+     * @throws SchemaCompilationException
+     */
+    private void process(XmlSchemaObjectCollection items,
+                         BeanWriterMetaInfoHolder metainfHolder,
+                         boolean order,
+                         XmlSchema parentSchema) throws SchemaCompilationException {
+        int count = items.getCount();
+        Map processedElementArrayStatusMap = new LinkedHashMap();
+        Map processedElementTypeMap = new LinkedHashMap();
+        List localNillableList = new ArrayList();
+
+        Map elementOrderMap = new HashMap();
+
+        for (int i = 0; i < count; i++) {
+            XmlSchemaObject item = items.getItem(i);
+
+            if (item instanceof XmlSchemaElement) {
+                //recursively process the element
+                XmlSchemaElement xsElt = (XmlSchemaElement) item;
+
+                boolean isArray = isArray(xsElt);
+                processElement(xsElt, processedElementTypeMap,localNillableList,parentSchema); //we know for sure this is not an outer type
+                processedElementArrayStatusMap.put(xsElt, (isArray) ? Boolean.TRUE : Boolean.FALSE);
+                if (order) {
+                    //we need to keep the order of the elements. So push the elements to another
+                    //hashmap with the order number
+                    elementOrderMap.put(xsElt, new Integer(i));
+                }
+
+                //handle xsd:any ! We place an OMElement (or an array of OMElements) in the generated class
+            } else if (item instanceof XmlSchemaAny) {
+                XmlSchemaAny any = (XmlSchemaAny) item;
+                processedElementTypeMap.put(new QName(ANY_ELEMENT_FIELD_NAME),any);
+                //any can also be inside a sequence
+                if (order) {
+                    elementOrderMap.put(any, new Integer(i));
+                }
+                //we do not register the array status for the any type
+                processedElementArrayStatusMap.put(any,isArray(any) ? Boolean.TRUE : Boolean.FALSE);
+            } else {
+                //there may be other types to be handled here. Add them
+                //when we are ready
+            }
+
+
+        }
+
+        // loop through the processed items and add them to the matainf object
+        Iterator processedElementsIterator = processedElementArrayStatusMap.keySet().iterator();
+        int startingItemNumberOrder = metainfHolder.getOrderStartPoint();
+        while (processedElementsIterator.hasNext()) {
+            Object child = processedElementsIterator.next();
+
+            // process the XmlSchemaElement
+            if (child instanceof XmlSchemaElement){
+                XmlSchemaElement elt = (XmlSchemaElement) child;
+                QName referencedQName = null;
+
+                
+                if (elt.getQName()!=null){
+                    referencedQName = elt.getQName();
+                    QName schemaTypeQName = elt.getSchemaType()!=null?elt.getSchemaType().getQName():elt.getSchemaTypeName();
+                    if(schemaTypeQName != null) {
+                        String clazzName = (String) processedElementTypeMap.get(elt.getQName());
+                        metainfHolder.registerMapping(referencedQName,
+                                schemaTypeQName, 
+                                clazzName,
+                                ((Boolean) processedElementArrayStatusMap.get(elt)).booleanValue() ?
+                                        SchemaConstants.ARRAY_TYPE :
+                                        SchemaConstants.ELEMENT_TYPE);
+                    }
+                }
+                
+                if (elt.getRefName()!=null) { //probably this is referenced
+                    referencedQName = elt.getRefName();
+                    boolean arrayStatus = ((Boolean) processedElementArrayStatusMap.get(elt)).booleanValue();
+                    String clazzName = findRefClassName(referencedQName,arrayStatus);
+                    if(clazzName == null) {
+                        clazzName = findClassName(referencedQName,arrayStatus);
+                    }
+                    XmlSchemaElement refElement = getReferencedElement(parentSchema, referencedQName);
+
+                    // register the mapping if we found the referenced element
+                    // else throw an exception
+                    if (refElement != null) {
+                        metainfHolder.registerMapping(referencedQName,
+                                refElement.getSchemaTypeName()
+                                , clazzName,
+                                arrayStatus ?
+                                        SchemaConstants.ARRAY_TYPE :
+                                        SchemaConstants.ELEMENT_TYPE);                    	
+                    } else {
+                        if(referencedQName.equals(SchemaConstants.XSD_SCHEMA)) {
+                            metainfHolder.registerMapping(referencedQName,
+                                    null,
+                                    DEFAULT_CLASS_NAME,
+                                    SchemaConstants.ANY_TYPE);
+                        } else {
+                            throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("schema.referencedElementNotFound",referencedQName.toString()));
+                        }
+                    }
+                }
+
+                if(referencedQName == null) {
+                    throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("schema.emptyName"));
+                }
+
+                //register the occurence counts
+                metainfHolder.addMaxOccurs(referencedQName, elt.getMaxOccurs());
+                metainfHolder.addMinOccurs(referencedQName, elt.getMinOccurs());
+                //we need the order to be preserved. So record the order also
+                if (order) {
+                    //record the order in the metainf holder
+                    Integer integer = (Integer) elementOrderMap.get(elt);
+                    metainfHolder.registerQNameIndex(referencedQName,
+                            startingItemNumberOrder + integer.intValue());
+                }
+
+                //get the nillable state and register that on the metainf holder
+                if (localNillableList.contains(elt.getQName())){
+                    metainfHolder.registerNillableQName(elt.getQName());
+                }
+
+                //get the binary state and add that to the status map
+                if (isBinary(elt)){
+                    metainfHolder.addtStatus(elt.getQName(),
+                            SchemaConstants.BINARY_TYPE);
+                }
+                // process the XMLSchemaAny
+            }else if (child instanceof XmlSchemaAny){
+                XmlSchemaAny any = (XmlSchemaAny)child;
+
+                //since there is only one element here it does not matter
+                //for the constant. However the problem occurs if the users
+                //uses the same name for an element decalration
+                QName anyElementFieldName = new QName(ANY_ELEMENT_FIELD_NAME);
+
+                //this can be an array or a single element
+                boolean isArray =  ((Boolean) processedElementArrayStatusMap.get(any)).booleanValue();
+                metainfHolder.registerMapping(anyElementFieldName,
+                        null,
+                        isArray?DEFAULT_CLASS_ARRAY_NAME:DEFAULT_CLASS_NAME,
+                        SchemaConstants.ANY_TYPE);
+                //if it's an array register an extra status flag with the system
+                if (isArray){
+                    metainfHolder.addtStatus(anyElementFieldName,
+                            SchemaConstants.ARRAY_TYPE);
+                }
+                metainfHolder.addMaxOccurs(anyElementFieldName,any.getMaxOccurs());
+                metainfHolder.addMinOccurs(anyElementFieldName,any.getMinOccurs());
+
+                if (order) {
+                    //record the order in the metainf holder for the any
+                    Integer integer = (Integer) elementOrderMap.get(any);
+                    metainfHolder.registerQNameIndex(anyElementFieldName,
+                            startingItemNumberOrder + integer.intValue());
+                }
+            }
+        }
+
+        //set the ordered flag in the metainf holder
+        metainfHolder.setOrdered(order);
+    }
+
+    private XmlSchemaType getType(XmlSchema schema, QName schemaTypeName) throws SchemaCompilationException {
+        schema = resolveParentSchema(schemaTypeName, schema);
+        XmlSchemaType typeByName = schema.getTypeByName(schemaTypeName);
+        if (typeByName == null) {
+            // The referenced element seems to come from an imported
+            // schema.
+            XmlSchemaObjectCollection includes = schema.getIncludes();
+            if (includes != null) {
+                Iterator tempIterator = includes.getIterator();
+                while (tempIterator.hasNext()) {
+                    Object o = tempIterator.next();
+                    XmlSchema inclSchema = null;
+                    if (o instanceof XmlSchemaImport) {
+                        inclSchema = ((XmlSchemaImport) o).getSchema();
+                        if(inclSchema == null) {
+                            inclSchema = (XmlSchema) loadedSchemaMap.get(((XmlSchemaImport) o).getNamespace());
+                        }
+                    }
+                    if (o instanceof XmlSchemaInclude) {
+                        inclSchema = ((XmlSchemaInclude) o).getSchema();
+                    }
+                    // get the element from the included schema
+                    if (inclSchema != null) {
+                        typeByName = inclSchema.getTypeByName(schemaTypeName);
+                    }
+                    if (typeByName != null) {
+                        // we found the referenced element an can break the loop
+                        break;
+                    }
+                }
+            }
+        }
+        return typeByName;
+    }
+    
+    private XmlSchemaElement getReferencedElement(XmlSchema parentSchema, QName referencedQName) {
+        XmlSchemaElement refElement = parentSchema.getElementByName(referencedQName);
+        if (refElement == null) {
+            // The referenced element seems to come from an imported
+            // schema.
+            XmlSchemaObjectCollection includes = parentSchema.getIncludes();
+            if (includes != null) {
+                Iterator tempIterator = includes.getIterator();
+                while (tempIterator.hasNext()) {
+                    Object o = tempIterator.next();
+                    XmlSchema inclSchema = null;
+                    if (o instanceof XmlSchemaImport) {
+                        inclSchema = ((XmlSchemaImport) o).getSchema();
+                        if(inclSchema == null) {
+                            inclSchema = (XmlSchema) loadedSchemaMap.get(((XmlSchemaImport) o).getNamespace());
+                        }
+                    }
+                    if (o instanceof XmlSchemaInclude) {
+                        inclSchema = ((XmlSchemaInclude) o).getSchema();
+                    }
+                    // get the element from the included schema
+                    if (inclSchema != null) {
+                        refElement = inclSchema.getElementByName(referencedQName);
+                    }
+                    if (refElement != null) {
+                        // we found the referenced element an can break the loop
+                        break;
+                    }
+                }
+            }
+        }
+        return refElement;
+    }
+    /**
+     * Checks whether a given element is a binary element
+     * @param elt
+     */
+    private boolean isBinary(XmlSchemaElement elt) {
+        return elt.getSchemaType()!=null &&
+                SchemaConstants.XSD_BASE64.equals(elt.getSchemaType().getQName());
+    }
+
+    /**
+     * Checks whether a given qname is a binary
+     * @param qName
+     */
+    private boolean isBinary(QName qName) {
+        return qName!=null &&
+                SchemaConstants.XSD_BASE64.equals(qName);
+    }
+
+    /**
+     * Handle the simple content
+     *
+     * @param simpleType
+     */
+    private void processSimpleSchemaType(XmlSchemaSimpleType simpleType,
+                                         XmlSchemaElement xsElt,
+                                         XmlSchema parentSchema) throws SchemaCompilationException{
+
+        if (processedTypemap.containsKey(simpleType.getQName())
+                || baseSchemaTypeMap.containsKey(simpleType.getQName())) {
+            return;
+        }
+
+        String fullyQualifiedClassName = null;
+        if(simpleType.getQName() != null) {
+            // Must do this up front to support recursive types
+            fullyQualifiedClassName = writer.makeFullyQualifiedClassName(simpleType.getQName());
+        } else {
+            fullyQualifiedClassName = writer.makeFullyQualifiedClassName(xsElt.getQName());
+            simpleType.addMetaInfo(SchemaConstants.SchemaCompilerInfoHolder.FAKE_QNAME,
+                    new QName(xsElt.getQName().getNamespaceURI(), xsElt.getQName().getLocalPart()));
+        }
+        
+        processedTypemap.put(simpleType.getQName(), fullyQualifiedClassName);
+
+        //register that in the schema metainfo bag
+        simpleType.addMetaInfo(SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY,
+                fullyQualifiedClassName);
+
+        BeanWriterMetaInfoHolder metaInfHolder = processSimpleType(simpleType, parentSchema);
+        metaInfHolder.setSimple(true);
+        
+        if(simpleType.getQName() == null) {
+            this.processedAnonymousComplexTypesMap.put(xsElt, metaInfHolder);
+            simpleTypesMap.put(new QName(xsElt.getQName().getNamespaceURI(), xsElt.getQName().getLocalPart()), fullyQualifiedClassName);
+        }
+        //add this information to the metainfo holder
+        metaInfHolder.setOwnQname(simpleType.getQName());
+        if(fullyQualifiedClassName != null) {
+            metaInfHolder.setOwnClassName(fullyQualifiedClassName);
+        }
+        //write the class. This type mapping would have been populated right now
+        //Note - We always write classes for named complex types
+        writeSimpleType(simpleType, metaInfHolder);
+    }
+
+    private BeanWriterMetaInfoHolder processSimpleType(XmlSchemaSimpleType simpleType,XmlSchema parentSchema) throws SchemaCompilationException {
+        BeanWriterMetaInfoHolder metaInfHolder = new BeanWriterMetaInfoHolder();
+
+        // handle the restriction
+        XmlSchemaSimpleTypeContent content = simpleType.getContent();
+        if (content != null) {
+            if (content instanceof XmlSchemaSimpleTypeRestriction) {
+                XmlSchemaSimpleTypeRestriction restriction = (XmlSchemaSimpleTypeRestriction) content;
+                
+                QName baseTypeName = restriction.getBaseTypeName();
+                //check whether the base type is one of the base schema types
+                if (baseSchemaTypeMap.containsKey(baseTypeName)) {
+                    //process restriction base type
+                    QName qName = simpleType.getQName();
+                    if(qName == null) {
+                        qName = (QName) simpleType.getMetaInfoMap().get(SchemaConstants.SchemaCompilerInfoHolder.FAKE_QNAME);
+                    }
+                    processSimpleRestrictionBaseType(qName, restriction.getBaseTypeName(),metaInfHolder);
+        	
+                    //process facets
+                    XmlSchemaObjectCollection facets = restriction.getFacets();
+                    processFacets(facets,metaInfHolder);
+                } else {
+                    //recurse
+                    if (restriction.getBaseType() != null) {
+                        processSimpleSchemaType(restriction.getBaseType(), null, parentSchema);
+                    }
+                }
+            }else if (content instanceof XmlSchemaSimpleTypeUnion) {
+                //Todo - Handle unions here
+                throw new SchemaCompilationException(
+                        SchemaCompilerMessages.getMessage("schema.unsupportedcontenterror","Simple Type Union in " + simpleType.getQName()));
+
+            }else if (content instanceof XmlSchemaSimpleTypeList){
+                //todo - Handle lists here
+                throw new SchemaCompilationException(
+                        SchemaCompilerMessages.getMessage("schema.unsupportedcontenterror","Simple Type List in " + simpleType.getQName()));
+            }
+        }
+        return metaInfHolder;
+    }
+
+
+    /**
+     * Find whether a given particle is an array. The logic for deciding
+     * whether a given particle is an array is depending on their minOccurs
+     * and maxOccurs counts. If Maxoccurs is greater than one (1) then the
+     * content is an array.
+     * Also no higher level element will have the maxOccurs greater than one
+     *
+     * @param particle
+     * @throws SchemaCompilationException
+     */
+    private boolean isArray(XmlSchemaParticle particle) throws SchemaCompilationException {
+        long minOccurs = particle.getMinOccurs();
+        long maxOccurs = particle.getMaxOccurs();
+
+        if (maxOccurs < minOccurs) {
+            throw new SchemaCompilationException();
+        } else {
+            return (maxOccurs > 1);
+        }
+
+    }
+
+    private String getNextTypeSuffix(){
+        if (typeCounter==Integer.MAX_VALUE){
+            typeCounter = 0;
+        }
+        return ("_type" +typeCounter++);
+    }
+
+}
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java
new file mode 100644
index 0000000..bf51c79
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java
@@ -0,0 +1,116 @@
+package org.apache.axis2.schema;

+

+import org.apache.axis2.namespace.Constants;

+

+import javax.xml.namespace.QName;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * Constants for the QNames of standard schema types

+ */

+public class SchemaConstants {

+

+

+    public static final String URI_DEFAULT_SCHEMA_XSD = Constants.URI_2001_SCHEMA_XSD;

+    public static final QName XSD_STRING = new QName(URI_DEFAULT_SCHEMA_XSD, "string");

+    public static final QName XSD_BOOLEAN = new QName(URI_DEFAULT_SCHEMA_XSD, "boolean");

+    public static final QName XSD_DOUBLE = new QName(URI_DEFAULT_SCHEMA_XSD, "double");

+    public static final QName XSD_FLOAT = new QName(URI_DEFAULT_SCHEMA_XSD, "float");

+    public static final QName XSD_INT = new QName(URI_DEFAULT_SCHEMA_XSD, "int");

+    public static final QName XSD_INTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "integer");

+    public static final QName XSD_LONG = new QName(URI_DEFAULT_SCHEMA_XSD, "long");

+    public static final QName XSD_SHORT = new QName(URI_DEFAULT_SCHEMA_XSD, "short");

+    public static final QName XSD_BYTE = new QName(URI_DEFAULT_SCHEMA_XSD, "byte");

+    public static final QName XSD_DECIMAL = new QName(URI_DEFAULT_SCHEMA_XSD, "decimal");

+    public static final QName XSD_BASE64 = new QName(URI_DEFAULT_SCHEMA_XSD, "base64Binary");

+    public static final QName XSD_HEXBIN = new QName(URI_DEFAULT_SCHEMA_XSD, "hexBinary");

+    public static final QName XSD_ANYSIMPLETYPE = new QName(URI_DEFAULT_SCHEMA_XSD, "anySimpleType");

+    public static final QName XSD_ANYTYPE = new QName(URI_DEFAULT_SCHEMA_XSD, "anyType");

+    public static final QName XSD_ANY = new QName(URI_DEFAULT_SCHEMA_XSD, "any");

+    public static final QName XSD_QNAME = new QName(URI_DEFAULT_SCHEMA_XSD, "QName");

+    public static final QName XSD_DATETIME = new QName(URI_DEFAULT_SCHEMA_XSD, "dateTime");

+    public static final QName XSD_DATE = new QName(URI_DEFAULT_SCHEMA_XSD, "date");

+    public static final QName XSD_TIME = new QName(URI_DEFAULT_SCHEMA_XSD, "time");

+

+

+    public static final QName XSD_UNSIGNEDLONG = new QName(URI_DEFAULT_SCHEMA_XSD, "unsignedLong");

+    public static final QName XSD_UNSIGNEDINT = new QName(URI_DEFAULT_SCHEMA_XSD, "unsignedInt");

+    public static final QName XSD_UNSIGNEDSHORT = new QName(URI_DEFAULT_SCHEMA_XSD, "unsignedShort");

+    public static final QName XSD_UNSIGNEDBYTE = new QName(URI_DEFAULT_SCHEMA_XSD, "unsignedByte");

+    public static final QName XSD_POSITIVEINTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "positiveInteger");

+    public static final QName XSD_NEGATIVEINTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "negativeInteger");

+    public static final QName XSD_NONNEGATIVEINTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "nonNegativeInteger");

+    public static final QName XSD_NONPOSITIVEINTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "nonPositiveInteger");

+

+    public static final QName XSD_YEARMONTH = new QName(URI_DEFAULT_SCHEMA_XSD, "gYearMonth");

+    public static final QName XSD_MONTHDAY = new QName(URI_DEFAULT_SCHEMA_XSD, "gMonthDay");

+    public static final QName XSD_YEAR = new QName(URI_DEFAULT_SCHEMA_XSD, "gYear");

+    public static final QName XSD_MONTH = new QName(URI_DEFAULT_SCHEMA_XSD, "gMonth");

+    public static final QName XSD_DAY = new QName(URI_DEFAULT_SCHEMA_XSD, "gDay");

+    public static final QName XSD_DURATION = new QName(URI_DEFAULT_SCHEMA_XSD, "duration");

+

+    public static final QName XSD_NAME = new QName(URI_DEFAULT_SCHEMA_XSD, "Name");

+    public static final QName XSD_NCNAME = new QName(URI_DEFAULT_SCHEMA_XSD, "NCName");

+    public static final QName XSD_NMTOKEN = new QName(URI_DEFAULT_SCHEMA_XSD, "NMTOKEN");

+    public static final QName XSD_NMTOKENS = new QName(URI_DEFAULT_SCHEMA_XSD, "NMTOKENS");

+    public static final QName XSD_NOTATION = new QName(URI_DEFAULT_SCHEMA_XSD, "NOTATION");

+    public static final QName XSD_ENTITY = new QName(URI_DEFAULT_SCHEMA_XSD, "ENTITY");

+    public static final QName XSD_ENTITIES = new QName(URI_DEFAULT_SCHEMA_XSD, "ENTITIES");

+    public static final QName XSD_IDREF = new QName(URI_DEFAULT_SCHEMA_XSD, "IDREF");

+    public static final QName XSD_IDREFS = new QName(URI_DEFAULT_SCHEMA_XSD, "IDREFS");

+    public static final QName XSD_ANYURI = new QName(URI_DEFAULT_SCHEMA_XSD, "anyURI");

+    public static final QName XSD_LANGUAGE = new QName(URI_DEFAULT_SCHEMA_XSD, "language");

+    public static final QName XSD_ID = new QName(URI_DEFAULT_SCHEMA_XSD, "ID");

+    public static final QName XSD_SCHEMA = new QName(URI_DEFAULT_SCHEMA_XSD, "schema");

+

+    public static final QName XSD_NORMALIZEDSTRING = new QName(URI_DEFAULT_SCHEMA_XSD, "normalizedString");

+    public static final QName XSD_TOKEN = new QName(URI_DEFAULT_SCHEMA_XSD, "token");

+

+    //bit patterns for the types

+    public static final int ATTRIBUTE_TYPE = 0x01;

+    public static final int ELEMENT_TYPE = 0x02;

+    public static final int ARRAY_TYPE = 0x04;

+    public static final int ANY_TYPE = 0x08;

+    public static final int BINARY_TYPE = 0x10;

+    public static final int OPTIONAL_TYPE = 0x20;

+    public static final int SIMPLE_TYPE_OR_CONTENT = 0x40;

+

+    public static class SchemaPropertyNames{

+

+        public static final String SCHEMA_COMPILER_PROPERTIES = "/org/apache/axis2/schema/schema-compile.properties";

+        public static final String BEAN_WRITER_KEY = "schema.bean.writer.class";

+        public static final String BEAN_WRITER_TEMPLATE_KEY = "schema.bean.writer.template";

+        public static final String BEAN_WRITER_TYPEMAP_KEY = "schema.bean.typemap";

+    }

+

+     public static class SchemaCompilerArguments{

+

+        public static final String WRAP_SCHEMA_CLASSES = "w";

+        public static final String WRITE_SCHEMA_CLASSES = "r";

+        public static final String STYLE = "s";

+        public static final String PACKAGE = "p";

+        public static final String MAPPER_PACKAGE = "mp";

+        public static final String HELPER_MODE = "h";

+

+    }

+

+    public static class SchemaCompilerInfoHolder{

+        public static final String CLASSNAME_KEY = "CLASS_NAME";

+        public static final String CLASSNAME_PRIMITVE_KEY = "CLASS_NAME_PRIMITIVE";

+        public static final String FAKE_QNAME = "Q_NAME";

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/XSD2Java.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/XSD2Java.java
new file mode 100644
index 0000000..185e9d2
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/XSD2Java.java
@@ -0,0 +1,85 @@
+package org.apache.axis2.schema;

+

+import org.apache.axis2.schema.i18n.SchemaCompilerMessages;

+import org.apache.ws.commons.schema.XmlSchema;

+import org.apache.ws.commons.schema.XmlSchemaCollection;

+import org.w3c.dom.Document;

+

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import java.io.File;

+import java.io.IOException;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class XSD2Java {

+

+    /**

+     * for now the arguments this main method accepts is the source schema and the output

+     * location

+     *

+     * @param args

+     */

+    public static void main(String[] args) throws Exception {

+        if (args.length != 2) {

+            // printout the options

+            System.out.println(SchemaCompilerMessages.getMessage("schema.xsdarg1"));

+            System.out.println(SchemaCompilerMessages.getMessage("schema.xsdarg2"));

+        } else {

+            compile(args[0], args[1]);

+        }

+

+    }

+

+    /**

+     * @param xsdName

+     * @param outputLocation

+     */

+    private static void compile(String xsdName, String outputLocation) throws Exception {

+            //load the current Schema through a file

+            //first read the file into a DOM

+            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

+            documentBuilderFactory.setNamespaceAware(true);

+

+            DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();

+            Document doc = builder.parse(new File(xsdName));

+

+            //now read it to a schema

+            XmlSchemaCollection schemaCol = new XmlSchemaCollection();

+            XmlSchema currentSchema = schemaCol.read(doc, null);

+

+            File outputFolder = new File(outputLocation);

+            if (outputFolder.exists()) {

+                if (outputFolder.isFile()) {

+                    throw new IOException(SchemaCompilerMessages.getMessage("schema.locationNotFolder"));

+                }

+            } else {

+                outputFolder.mkdirs();

+            }

+

+            CompilerOptions compilerOptions = new CompilerOptions();

+            compilerOptions.setOutputLocation(outputFolder);

+

+            //todo - this should come from the users preferences

+             compilerOptions.setWrapClasses(false);

+

+            //there's no point in not writing the classes here.

+             compilerOptions.setWriteOutput(true);

+

+            SchemaCompiler compiler = new SchemaCompiler(compilerOptions);

+            compiler.compile(currentSchema);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/c-schema-compile.properties b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/c-schema-compile.properties
new file mode 100644
index 0000000..60eeaea
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/c-schema-compile.properties
@@ -0,0 +1,22 @@
+###############################################################################

+################### Schema Compiler properties for Axis2/C  ###################

+###############################################################################

+#

+# The bean writer class

+# The bean writer is the class used by the schema compiler to write the beans

+# and should implement the org.apache.axis2.schema.writer.BeanWriter

+# inteface

+#

+schema.bean.writer.class=org.apache.axis2.schema.writer.CStructWriter

+#

+# bean writer template

+# The bean writers template is it's own responsibilty. (A bean writer provider

+# may choose not to use a template at all!) However the property loader will

+# load the following templates (reference) and provide it and in the case when the

+# bean writer is not statically bound to a template, this'll be useful.

+#

+schema.bean.writer.template=/org/apache/axis2/schema/template/CADBBeanTemplate

+#

+# The type map to be used by the schema compiler

+#

+schema.bean.typemap=org.apache.axis2.schema.typemap.CTypeMap

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/i18n/SchemaCompilerMessages.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/i18n/SchemaCompilerMessages.java
new file mode 100644
index 0000000..564ede7
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/i18n/SchemaCompilerMessages.java
@@ -0,0 +1,162 @@
+package org.apache.axis2.schema.i18n;
+
+import org.apache.axis2.i18n.MessageBundle;
+import org.apache.axis2.i18n.MessagesConstants;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * @see org.apache.axis2.i18n.Messages
+ * The implementation is the same but just thisClass static reference
+ * has SchemaCompilerMessages.class
+ */
+public class SchemaCompilerMessages {
+
+    private static Class thisClass = SchemaCompilerMessages.class;
+
+    private static final String projectName = MessagesConstants.projectName;
+
+    private static final String resourceName = MessagesConstants.resourceName;
+    private static final Locale locale = MessagesConstants.locale;
+
+    private static final String packageName = getPackage(thisClass.getName());
+    private static final ClassLoader classLoader = thisClass.getClassLoader();
+
+    private static final ResourceBundle parent =
+            (MessagesConstants.rootPackageName.equals(packageName))
+            ? null
+            : MessagesConstants.rootBundle;
+
+
+    /**
+     * ** NO NEED TO CHANGE ANYTHING BELOW ****
+     */
+
+    private static final MessageBundle messageBundle =
+            new MessageBundle(projectName, packageName, resourceName,
+                    locale, classLoader, parent);
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key The resource key
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0, String arg1)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0, arg1);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0, arg1, arg2);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @param arg4 The argument to place in variable {4}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3, String arg4)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3, arg4);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param args An array of objects to place in corresponding variables
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String[] args)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, args);
+    }
+
+    public static ResourceBundle getResourceBundle() {
+        return messageBundle.getResourceBundle();
+    }
+
+    public static MessageBundle getMessageBundle() {
+        return messageBundle;
+    }
+
+    private static String getPackage(String name) {
+        return name.substring(0, name.lastIndexOf('.')).intern();
+    }
+
+}
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/i18n/resource.properties b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/i18n/resource.properties
new file mode 100644
index 0000000..f279a23
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/i18n/resource.properties
@@ -0,0 +1,38 @@
+# Translation instructions.

+# 1.  Each message line is of the form key=value.

+#     Translate the value, DO NOT translate the key.

+# 2.  The messages may contain arguments that will be filled in

+#     by the runtime.  These are of the form: {0}, {1}, etc.

+#     These must appear as is in the message, though the order

+#     may be changed to support proper language syntax.

+# 3.  If a single quote character is to appear in the resulting

+#     message, it must appear in this file as two consecutive

+#     single quote characters.

+# 4.  Lines beginning with "#" (like this one) are comment lines

+#     and may contain translation instructions.  They need not be

+#     translated unless your translated file, rather than this file,

+#     will serve as a base for other translators.

+################## XSD2java #################################################

+schema.xsdarg1=Argument1 - Source schema file name

+schema.xsdarg2=Argument2 - Output folder name

+schema.locationNotFolder=specified location is not a folder!

+schema.compilerexception=Compiler caused an exception

+

+###################Schema compiler ###########################################

+schema.unsupportedcontenterror=Unsupported content {0} !

+schema.unknowncontenterror=Unknown content!

+schema.elementNull=Null element encountered! Please check your schema!

+schema.referencedElementNotFound=The referenced element ''{0}'' was not found!

+schema.elementWithNoType=Could not find any schema type associated with the Element ''{0}''

+schema.emptyName=Missing name attribute! Please check your schema!

+################## Options ###################################################

+schema.unsupportedvalue=Unsupported value!

+

+################## Java bean writer ###########################################

+schema.rootnotfolderexception=Root location needs to be a directory!

+schema.notimplementedxception=Not implemented yet

+schema.templateLoadException=Error loading the template

+schema.templateNotFoundException=template for this writer is not found

+schema.typeMissing=Type {0} missing!

+schema.docuement.error=Error in creating the document

+schema.soapencoding.error={0} is not supported.
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/schema-compile.properties b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/schema-compile.properties
new file mode 100644
index 0000000..41a1f80
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/schema-compile.properties
@@ -0,0 +1,24 @@
+###############################################################################

+##########################Schema Compiler properties   ########################

+###############################################################################

+#

+# The bean writer class

+# The bean writer is the class used by the schema compiler to write the beans

+# and should implement the org.apache.axis2.schema.writer.BeanWriter

+# inteface

+#

+schema.bean.writer.class=org.apache.axis2.schema.writer.JavaBeanWriter

+#

+# bean writer template

+# The bean writers template is it's own responsibilty. (A bean writer provider

+# may choose not to use a template at all!) However the property loader will

+# load the following templates (reference) and provide it and in the case when the

+# bean writer is not statically bound to a template, this'll be useful.

+#

+schema.bean.writer.template=/org/apache/axis2/schema/template/ADBBeanTemplate.xsl

+# schema.bean.writer.template=/org/apache/axis2/schema/template/PlainBeanTemplate.xsl

+

+#

+# The type map to be used by the schema compiler

+#

+schema.bean.typemap=org.apache.axis2.schema.typemap.JavaTypeMap

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
new file mode 100644
index 0000000..7e59ff4
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
@@ -0,0 +1,3727 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+
+    <!-- cater for the multiple classes - wrappped mode -->
+    <xsl:template match="/beans">
+        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+        /**
+        * <xsl:value-of select="$name"/>.java
+        *
+        * This file was auto-generated from WSDL
+        * by the Apache Axis2 version: #axisVersion# #today#
+        */
+
+        package <xsl:value-of select="@package"/>;
+
+        /**
+        *  <xsl:value-of select="$name"/> wrapped bean classes
+        */
+        public class <xsl:value-of select="$name"/>{
+
+        <xsl:apply-templates/>
+
+        }
+    </xsl:template>
+
+    <!--cater for the multiple classes - unwrappped mode -->
+    <xsl:template match="/">
+        <xsl:apply-templates/>
+    </xsl:template>
+
+    <xsl:template match="bean[not(@helperMode)]">
+
+        <xsl:variable name="name" select="@name"/>
+        <xsl:variable name="choice" select="@choice"/>
+        <xsl:variable name="simple" select="@simple"/>
+        <xsl:variable name="ordered" select="@ordered"/>
+        <xsl:variable name="unordered" select="not($ordered)"/>  <!-- for convenience -->
+        <xsl:variable name="isType" select="@type"/>
+        <xsl:variable name="anon" select="@anon"/>
+
+        <xsl:variable name="nsuri" select="@nsuri"/>
+        <xsl:variable name="originalName" select="@originalName"/>
+        <xsl:variable name="nsprefix" select="@nsprefix"/>
+        <xsl:variable name="extension" select="@extension"/>
+        <xsl:variable name="restriction" select="@restriction"/>
+        <xsl:variable name="mapperClass" select="@mapperClass"/>
+    <!-- write the class header. this should be done only when unwrapped -->
+
+        <xsl:if test="not(not(@unwrapped) or (@skip-write))">
+            /**
+            * <xsl:value-of select="$name"/>.java
+            *
+            * This file was auto-generated from WSDL
+            * by the Apache Axis2 version: #axisVersion# #today#
+            */
+
+            package <xsl:value-of select="@package"/>;
+            /**
+            *  <xsl:value-of select="$name"/> bean class
+            */
+        </xsl:if>
+        public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xsl:value-of select="$name"/> <xsl:if test="$extension"> extends <xsl:value-of select="$extension"/></xsl:if> <xsl:if test="$restriction"> extends <xsl:value-of select="$restriction"/></xsl:if>
+        implements org.apache.axis2.databinding.ADBBean{
+        <xsl:choose>
+            <xsl:when test="@type">/* This type was generated from the piece of schema that had
+                name = <xsl:value-of select="$originalName"/>
+                Namespace URI = <xsl:value-of select="$nsuri"/>
+                Namespace Prefix = <xsl:value-of select="$nsprefix"/>
+                */
+            </xsl:when>
+            <xsl:otherwise>
+                public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(
+                "<xsl:value-of select="$nsuri"/>",
+                "<xsl:value-of select="$originalName"/>",
+                "<xsl:value-of select="$nsprefix"/>");
+
+            </xsl:otherwise>
+        </xsl:choose>
+
+        <xsl:if test="$choice">
+            /** Whenever a new property is set ensure all others are unset
+             *  There can be only one choice and the last one wins
+             */
+            private void clearAllSettingTrackers() {
+            <xsl:for-each select="property">
+                local<xsl:value-of select="@javaname"/>Tracker = false;
+           </xsl:for-each>
+            }
+        </xsl:if>
+
+
+        <xsl:for-each select="property">
+            <!-- Write only the NOT inherited properties-->
+            <xsl:if test="not(@inherited)">
+
+            <xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable>
+            <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+            <xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable>
+
+            <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+            <xsl:variable name="varName">local<xsl:value-of select="$javaName"/></xsl:variable>
+            <xsl:variable name="settingTracker">local<xsl:value-of select="$javaName"/>Tracker</xsl:variable>
+
+
+            <xsl:variable name="lenFacet"><xsl:value-of select="@lenFacet"/></xsl:variable>
+               <xsl:variable name="maxLenFacet"><xsl:value-of select="@maxLenFacet"/></xsl:variable>
+               <xsl:variable name="minLenFacet"><xsl:value-of select="@minLenFacet"/></xsl:variable>
+               <xsl:variable name="maxExFacet"><xsl:value-of select="@maxExFacet"/></xsl:variable>
+               <xsl:variable name="minExFacet"><xsl:value-of select="@minExFacet"/></xsl:variable>
+               <xsl:variable name="maxInFacet"><xsl:value-of select="@maxInFacet"/></xsl:variable>
+               <xsl:variable name="minInFacet"><xsl:value-of select="@minInFacet"/></xsl:variable>
+               <xsl:variable name="patternFacet"><xsl:value-of select="@patternFacet"/></xsl:variable>
+            <xsl:variable name="shortTypeNameUncapped"  select="@shorttypename"/>
+            <xsl:variable name="shortTypeName"
+               select="concat(translate( substring($shortTypeNameUncapped, 1, 1 ),'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($shortTypeNameUncapped, 2, string-length($shortTypeNameUncapped)))" />
+
+
+            <xsl:choose>
+                <xsl:when test="@removed">
+
+               /**
+               * Auto generated getter method
+               * Overridden from <xsl:value-of select="$restriction"/>
+               *
+               * @throws RuntimeException
+               */
+               public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){
+                   throw new java.lang.RuntimeException();
+               }
+
+               /**
+               * Auto generated setter method
+               * Overridden from <xsl:value-of select="$restriction"/>
+               *
+               * @param param <xsl:value-of select="$javaName"/>
+               * @throws RuntimeException
+               */
+               public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                      throw new java.lang.RuntimeException();
+               }
+
+               </xsl:when>
+                <xsl:otherwise>
+                   <xsl:choose>
+                      <xsl:when test="(@restricted) and (@occuranceChanged) and (not(@typeChanged))">
+                            <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
+
+
+                         <!-- generate the validator Method, this is specifiacally for validating the arrays-->
+                         /**
+                         * Validate the array for <xsl:value-of select="$javaName"/>
+                         * Overridden from <xsl:value-of select="$restriction"/>
+                         */
+                         protected void validate<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                         <xsl:if test="not(@unbound)">
+                              if ((param != null) &amp;&amp; (param.length &gt; <xsl:value-of select="@maxOccurs"/>)){
+                                throw new java.lang.RuntimeException();
+                              }
+                         </xsl:if>
+                         <xsl:if test="$min!=0">
+                              if ((param != null) &amp;&amp; (param.length &lt; <xsl:value-of select="$min"/>)){
+                                throw new java.lang.RuntimeException();
+                              }
+                         </xsl:if>
+                         }
+
+
+                         /**
+                         * Auto generated setter method
+                         * Overridden from <xsl:value-of select="$restriction"/>
+                         *
+                         * @param param <xsl:value-of select="$javaName"/>
+                         */
+                         public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                         <!-- call the validator-->
+                                validate<xsl:value-of select="$javaName"/>(param);
+
+                         <xsl:if test="$choice">
+                              clearAllSettingTrackers();
+                         </xsl:if>
+                         <xsl:if test="$min=0 or $choice">
+                            <!-- the updating of setting tracker for null values should
+                                 happen if the attribute is marked as nillable. Else
+                                 the user can set a null value and it is never marked
+                                 as set
+                            -->
+                            <xsl:choose>
+                               <xsl:when test="@primitive and not(@array)">
+                                   // setting primitive variable always to true
+                                   <xsl:value-of select="$settingTracker"/> = true;
+                               </xsl:when>
+                               <xsl:otherwise>
+                                   if (param != null){
+                                      //update the setting tracker
+                                      <xsl:value-of select="$settingTracker"/> = true;
+                                   } else {
+                                      <xsl:choose>
+                                          <xsl:when test="@nillable">
+                                              <xsl:value-of select="$settingTracker"/> = true;
+                                          </xsl:when>
+                                          <xsl:otherwise>
+                                              <xsl:value-of select="$settingTracker"/> = false;
+                                          </xsl:otherwise>
+                                      </xsl:choose>
+                                   }
+                               </xsl:otherwise>
+                            </xsl:choose>
+                         </xsl:if>
+                              this.<xsl:value-of select="$varName"/>=param;
+                         }
+                      </xsl:when>
+                      <xsl:otherwise>
+
+                        /**
+                        * field for <xsl:value-of select="$javaName"/>
+                        <xsl:if test="@attribute">
+                        * This was an Attribute!</xsl:if>
+                        <xsl:if test="@array">
+                        * This was an Array!</xsl:if>
+                        <xsl:if test="@typeChanged">
+                        * Type of this field is a subtype of its original.</xsl:if>
+                        <xsl:if test="(@rewrite) and (@occuranceChanged)">
+                        * This field was an array in <xsl:value-of select="$restriction"/>.</xsl:if>
+                        */
+
+                        protected <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text><xsl:value-of select="$varName" /> ;
+                        <xsl:if test="enumFacet">
+                        private static java.util.HashMap _table_ = new java.util.HashMap();
+
+                        // Constructor
+                        protected <xsl:value-of select="$name"/>(<xsl:value-of select="$propertyType"/> value) {
+                            <xsl:value-of select="$varName" /> = value;
+                            <xsl:choose>
+                                       <xsl:when test="@primitive">
+                                         _table_.put(<xsl:value-of select="$varName" /> + "", this);
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                           _table_.put(<xsl:value-of select="$varName" />, this);
+                                       </xsl:otherwise>
+                                   </xsl:choose>
+
+                        }
+
+                        <xsl:for-each select="enumFacet">
+                            public static final <xsl:value-of select="$propertyType"/> _<xsl:value-of select="@id"/> =
+                                org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>("<xsl:value-of select="@value"/>");
+                        </xsl:for-each>
+                        <xsl:for-each select="enumFacet">
+                            public static final <xsl:value-of select="$name"/><xsl:text> </xsl:text><xsl:value-of select="@id"/> =
+                                new <xsl:value-of select="$name"/>(_<xsl:value-of select="@id"/>);
+                        </xsl:for-each>
+
+                            public <xsl:value-of select="$propertyType"/> getValue() { return <xsl:value-of select="$varName" />;}
+                            public static <xsl:value-of select="$name"/> fromValue(<xsl:value-of select="$propertyType"/> value)
+                                  throws java.lang.IllegalArgumentException {
+                                <xsl:value-of select="$name"/> enumeration = (<xsl:value-of select="$name"/>)
+                            <xsl:choose>
+                                       <xsl:when test="@primitive">
+                                         _table_.get(value + "");
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                           _table_.get(value);
+                                       </xsl:otherwise>
+                                   </xsl:choose>
+
+                                if (enumeration==null) throw new java.lang.IllegalArgumentException();
+                                return enumeration;
+                            }
+                            public static <xsl:value-of select="$name"/> fromString(java.lang.String value)
+                                  throws java.lang.IllegalArgumentException {
+                                try {
+                                   <xsl:choose>
+                                       <xsl:when test="@primitive">
+                                         return fromValue(org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(value));
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                           return fromValue(new <xsl:value-of select="$propertyType"/>(value));
+                                       </xsl:otherwise>
+                                   </xsl:choose>
+
+                                } catch (java.lang.Exception e) {
+                                    throw new java.lang.IllegalArgumentException();
+                                }
+                            }
+                            public boolean equals(java.lang.Object obj) {return (obj == this);}
+                            public int hashCode() { return toString().hashCode();}
+                            public java.lang.String toString() {
+                            <xsl:choose>
+                                <xsl:when test="@primitive">
+                                    return <xsl:value-of select="$varName"/> + "";
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    return <xsl:value-of select="$varName"/>.toString();
+                                </xsl:otherwise>
+                            </xsl:choose>
+
+                            }
+
+                        </xsl:if>
+                        <xsl:if test="not(enumFacet)">
+                        <!-- Generate a tracker only if the min occurs is zero, which means if the user does
+                           not bother to set that value, we do not send it -->
+                           <xsl:if test="$min=0 or $choice">
+                           /*  This tracker boolean wil be used to detect whether the user called the set method
+                          *   for this attribute. It will be used to determine whether to include this field
+                           *   in the serialized XML
+                           */
+                           protected boolean <xsl:value-of select="$settingTracker"/> = false ;
+                           </xsl:if>
+
+                           /**
+                           * Auto generated getter method
+                           * @return <xsl:value-of select="$propertyType"/>
+                           */
+                           public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){
+                               return <xsl:value-of select="$varName"/>;
+                           }
+
+                           <!-- When generating the setters, we have to cater differently for the array!-->
+                        <xsl:choose>
+                               <xsl:when test="@array">
+                               <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
+
+
+                               <!-- generate the validator Method, this is specifiacally for validating the arrays-->
+                              /**
+                               * validate the array for <xsl:value-of select="$javaName"/>
+                               */
+                              protected void validate<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                             <xsl:if test="not(@unbound)">
+                              if ((param != null) &amp;&amp; (param.length &gt; <xsl:value-of select="@maxOccurs"/>)){
+                                throw new java.lang.RuntimeException();
+                              }
+                              </xsl:if>
+                              <xsl:if test="$min!=0">
+                              if ((param != null) &amp;&amp; (param.length &lt; <xsl:value-of select="$min"/>)){
+                                throw new java.lang.RuntimeException();
+                              }
+                              </xsl:if>
+                              }
+
+
+                             /**
+                              * Auto generated setter method
+                              * @param param <xsl:value-of select="$javaName"/>
+                              */
+                              public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                              <!-- call the validator-->
+                                   validate<xsl:value-of select="$javaName"/>(param);
+
+                               <xsl:if test="$choice">
+                                   clearAllSettingTrackers();
+                               </xsl:if>
+                               <xsl:if test="$min=0 or $choice">
+                                   <!-- the updating of setting tracker for null values should
+                                     happen if the attribute is marked as nillable. Else
+                                     the user can set a null value and it is never marked
+                                     as set
+                                   -->
+                                  <xsl:choose>
+                                      <xsl:when test="@primitive and not(@array)">
+                                          // setting the primitive attribute to true
+                                          <xsl:value-of select="$settingTracker"/> = true;
+                                      </xsl:when>
+                                      <xsl:otherwise>
+                                          if (param != null){
+                                             //update the setting tracker
+                                             <xsl:value-of select="$settingTracker"/> = true;
+                                          } else {
+                                             <xsl:choose>
+                                                 <xsl:when test="@nillable">
+                                                     <xsl:value-of select="$settingTracker"/> = true;
+                                                 </xsl:when>
+                                                 <xsl:otherwise>
+                                                     <xsl:value-of select="$settingTracker"/> = false;
+                                                 </xsl:otherwise>
+                                             </xsl:choose>
+                                          }
+                                      </xsl:otherwise>
+                                   </xsl:choose>
+
+                               </xsl:if>
+                                      this.<xsl:value-of select="$varName"/>=param;
+                              }
+
+                               <!--
+
+                               we special case the 'array' scenario and generate a
+                               convenience method for adding elements one by one to
+                               the array. The current implementation is somewhat
+                               inefficient but gets the job done.Since a primitive
+                               cannot be treated as an object it has to be ignored!
+
+                             -->
+                             <xsl:if test="not(@primitive)">
+                             /**
+                             * Auto generated add method for the array for convenience
+                             * @param param <xsl:value-of select="$basePropertyType"/>
+                             */
+                             public void add<xsl:value-of select="$javaName"/>(<xsl:value-of select="$basePropertyType"/> param){
+                                   if (<xsl:value-of select="$varName"/> == null){
+                                   <xsl:value-of select="$varName"/> = new <xsl:value-of select="$propertyType"/>{};
+                                   }
+
+                            <xsl:if test="$choice">
+                                   clearAllSettingTrackers();
+                            </xsl:if>
+                            <xsl:if test="$min=0 or $choice">
+                                 //update the setting tracker
+                                <xsl:value-of select="$settingTracker"/> = true;
+                            </xsl:if>
+
+                               java.util.List list =
+                            org.apache.axis2.databinding.utils.ConverterUtil.toList(<xsl:value-of select="$varName"/>);
+                               list.add(param);
+                               this.<xsl:value-of select="$varName"/> =
+                             (<xsl:value-of select="$propertyType"/>)list.toArray(
+                            new <xsl:value-of select="$basePropertyType"/>[list.size()]);
+
+                             }
+                             </xsl:if>
+                             <!-- end of special casing for the array-->
+
+                               </xsl:when>
+                            <!-- Non array setter method-->
+                            <xsl:otherwise>
+                            /**
+                               * Auto generated setter method
+                               * @param param <xsl:value-of select="$javaName"/>
+                               */
+                               public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                            <xsl:if test="$choice">
+                                clearAllSettingTrackers();
+                            </xsl:if>
+                            <xsl:if test="$min=0 or $choice">
+                                <xsl:choose>
+                                   <xsl:when test="@primitive and not(@array)">
+                                       // setting primitive attribute tracker to true
+                                       <xsl:value-of select="$settingTracker"/> = true;
+                                   </xsl:when>
+                                   <xsl:otherwise>
+                                       if (param != null){
+                                          //update the setting tracker
+                                          <xsl:value-of select="$settingTracker"/> = true;
+                                       } else {
+                                          <xsl:choose>
+                                              <xsl:when test="@nillable">
+                                                  <xsl:value-of select="$settingTracker"/> = true;
+                                              </xsl:when>
+                                              <xsl:otherwise>
+                                                  <xsl:value-of select="$settingTracker"/> = false;
+                                              </xsl:otherwise>
+                                          </xsl:choose>
+                                       }
+                                   </xsl:otherwise>
+                                </xsl:choose>
+                            </xsl:if>
+
+                               <xsl:choose>
+                            <xsl:when test="(@restrictionBaseType)">
+                               <xsl:choose>
+                                <xsl:when test="(@patternFacet)">
+                                    if ( param.matches( "<xsl:value-of select="$patternFacet"/>" )) {
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new java.lang.RuntimeException();
+                                    }
+                                </xsl:when>
+                                <xsl:when test="(@lenFacet)">
+                                    if ( param.length() == <xsl:value-of select="@lenFacet"/> ) {
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new java.lang.RuntimeException();
+                                    }
+                                </xsl:when>
+                                <xsl:when test="(@maxLenFacet) or (@minLenFacet)">
+                                    if ( <xsl:if test="(@minLenFacet)"> <xsl:value-of select="$minLenFacet"/> &lt; </xsl:if> param.length() <xsl:if test="(@maxLenFacet)"> &gt; <xsl:value-of select="$maxLenFacet"/> = </xsl:if> ) {
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new java.lang.RuntimeException();
+                                    }
+                                </xsl:when>
+                                <xsl:when test="(@maxExFacet) or (@minExFacet) or (@maxInFacet) or (@minInFacet)">
+                                    if ( <xsl:if test="(@minExFacet)"> <xsl:value-of select="$minExFacet"/> &lt; </xsl:if> <xsl:if test="(@minInFacet)"> <xsl:value-of select="$minInFacet"/> &lt;= </xsl:if> param <xsl:if test="(@maxExFacet)"> &gt; <xsl:value-of select="$maxExFacet"/> </xsl:if> <xsl:if test="(@maxInFacet)"> &gt;= <xsl:value-of select="$maxInFacet"/> </xsl:if> ) {
+
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new java.lang.RuntimeException();
+                                    }
+                                </xsl:when>
+                                <xsl:otherwise>
+                                     this.<xsl:value-of select="$varName"/>=param;
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            </xsl:when>
+
+                            <xsl:otherwise>
+                                    this.<xsl:value-of select="$varName"/>=param;
+                            </xsl:otherwise>
+                            </xsl:choose>
+
+                               }
+                            </xsl:otherwise>
+                        </xsl:choose>
+                        </xsl:if>
+
+                      </xsl:otherwise>
+                   </xsl:choose>
+
+                </xsl:otherwise>
+            </xsl:choose>
+
+             <!-- end of xsl:if for not(@inherited) -->
+            </xsl:if>
+
+        </xsl:for-each>
+
+     /**
+     * isReaderMTOMAware
+     * @return true if the reader supports MTOM
+     */
+   public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
+        boolean isReaderMTOMAware = false;
+        <!-- workaround for the issues in the wstx reader!-->
+        try{
+          isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
+        }catch(java.lang.IllegalArgumentException e){
+          isReaderMTOMAware = false;
+        }
+        return isReaderMTOMAware;
+   }
+     <!-- ######################################################################################### -->
+     <!-- get OMElement methods that allows direct writing -->
+        /**
+        *
+        * @param parentQName
+        * @param factory
+        * @return org.apache.axiom.om.OMElement
+        */
+       public org.apache.axiom.om.OMElement getOMElement(
+               final javax.xml.namespace.QName parentQName,
+               final org.apache.axiom.om.OMFactory factory){
+
+        org.apache.axiom.om.OMDataSource dataSource = getOMDataSource(parentQName, factory);
+
+        <xsl:choose>
+            <xsl:when test="@type">
+               return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
+               parentQName,factory,dataSource);
+            </xsl:when>
+            <xsl:otherwise>
+               return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
+               MY_QNAME,factory,dataSource);
+            </xsl:otherwise>
+       </xsl:choose>
+       }
+
+     /**
+     *
+     * @param parentQName
+     * @param factory
+     * @return org.apache.axiom.om.OMElement
+     */
+    public org.apache.axiom.om.OMDataSource getOMDataSource(
+            final javax.xml.namespace.QName parentQName,
+            final org.apache.axiom.om.OMFactory factory){
+
+
+        org.apache.axiom.om.OMDataSource dataSource =
+                       new org.apache.axis2.databinding.ADBDataSource(this,parentQName){
+
+         public void serialize(
+                                  javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+            <xsl:choose>
+            <xsl:when test="@type or @anon">
+                <!-- For a type write the passed in QName first-->
+
+                java.lang.String prefix = parentQName.getPrefix();
+                java.lang.String namespace = parentQName.getNamespaceURI();
+
+                if (namespace != null) {
+                    java.lang.String writerPrefix = xmlWriter.getPrefix(namespace);
+                    if (writerPrefix != null) {
+                        xmlWriter.writeStartElement(namespace, parentQName.getLocalPart());
+                    } else {
+                        if (prefix == null) {
+                            prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                        }
+
+                        xmlWriter.writeStartElement(prefix, parentQName.getLocalPart(), namespace);
+                        xmlWriter.writeNamespace(prefix, namespace);
+                        xmlWriter.setPrefix(prefix, namespace);
+                    }
+                } else {
+                    xmlWriter.writeStartElement(parentQName.getLocalPart());
+                }
+
+                <!-- write the type attribute if needed -->
+               <xsl:if test="$extension">
+               writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
+                       registerPrefix(xmlWriter,"<xsl:value-of select="$nsuri"/>")+":<xsl:value-of select="$originalName"/>",
+                       xmlWriter);
+               </xsl:if>
+                <!--First serialize the attributes!-->
+                <xsl:for-each select="property[@attribute]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">local<xsl:value-of select="@javaname"/></xsl:variable>
+                     <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:choose>
+                        <!-- Note - It is assumed that any attributes are OMAttributes-->
+                        <xsl:when test="@any and not(@array)">
+                           writeAttribute(<xsl:value-of select="$varName"/>.getNamespace().getName(),
+                                                     <xsl:value-of select="$varName"/>.getLocalName(),
+                                                     <xsl:value-of select="$varName"/>.getAttributeValue(),
+                                                     xmlWriter);
+                        </xsl:when>
+                        <xsl:when test="@any and @array">
+                             if (<xsl:value-of select="$varName"/> != null) {
+                                 for (int i=0;i &lt;<xsl:value-of select="$varName"/>.length;i++){
+                                     writeAttribute(<xsl:value-of select="$varName"/>[i].getNamespace().getName(),
+                                                    <xsl:value-of select="$varName"/>[i].getLocalName(),
+                                                    <xsl:value-of select="$varName"/>[i].getAttributeValue(),xmlWriter);
+                                     }
+                             }
+                        </xsl:when>
+                        <!-- there can never be attribute arrays in the normal case-->
+                        <xsl:when test="@optional">
+                             // optional attribute <xsl:value-of select="$propertyName"/>
+                             try {
+                                writeAttribute("<xsl:value-of select="$namespace"/>",
+                                               "<xsl:value-of select="$propertyName"/>",
+                                               org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>), xmlWriter);
+                            } catch (NullPointerException e) {
+                                // If <xsl:value-of select="$varName"/> was null
+                                // it can not be serialized.
+                            }
+                        </xsl:when>
+                        <xsl:otherwise>
+                             writeAttribute("<xsl:value-of select="$namespace"/>",
+                                                     "<xsl:value-of select="$propertyName"/>",
+                                                      org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>),
+                            xmlWriter);
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:for-each>
+
+                <!-- Now serialize the elements-->
+                <xsl:for-each select="property[not(@attribute)]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">local<xsl:value-of select="@javaname"/></xsl:variable>
+                    <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+                    <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:variable name="settingTracker">local<xsl:value-of select="@javaname"/>Tracker</xsl:variable>
+
+                    <xsl:variable name="propertyType"><xsl:value-of select="@type"/></xsl:variable>
+
+                    <xsl:if test="$min=0 or $choice"> if (<xsl:value-of select="$settingTracker"/>){</xsl:if>
+                    <xsl:choose>
+                        <xsl:when test="@ours and not(@array) and not(@default)">
+                            <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    if (<xsl:value-of select="$varName"/>==null){
+
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+
+                                        if (! namespace2.equals("")) {
+                                            java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                            if (prefix2 == null) {
+                                                prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                xmlWriter.writeNamespace(prefix2, namespace2);
+                                                xmlWriter.setPrefix(prefix2, namespace2);
+
+                                            } else {
+                                                xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                        } else {
+                                            xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                        }
+
+
+                                       // write the nil attribute
+                                      writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                      xmlWriter.writeEndElement();
+                                    }else{
+                                     <xsl:value-of select="$varName"/>.getOMDataSource(
+                                       new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                        factory).serialize(xmlWriter);
+                                    }
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                   <xsl:value-of select="$varName"/>.getOMDataSource(
+                                       new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                       factory).serialize(xmlWriter);
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <xsl:when test="@ours and @array and not(@default)">
+                             if (<xsl:value-of select="$varName"/>!=null){
+                                    for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                        if (<xsl:value-of select="$varName"/>[i] != null){
+                                         <xsl:value-of select="$varName"/>[i].getOMDataSource(
+                                                   new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                                   factory).serialize(xmlWriter);
+                                        } else {
+                                           <xsl:choose>
+                                            <xsl:when test="@nillable">
+                                                    // write null attribute
+                                                    java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                                    if (! namespace2.equals("")) {
+                                                        java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                        if (prefix2 == null) {
+                                                            prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                            xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                            xmlWriter.writeNamespace(prefix2, namespace2);
+                                                            xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                        } else {
+                                                            xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                        }
+
+                                                    } else {
+                                                        xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                                    }
+
+                                                   // write the nil attribute
+                                                   writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                                   xmlWriter.writeEndElement();
+                                            </xsl:when>
+                                            <xsl:when test="$min=0">
+                                                // we don't have to do any thing since minOccures is zero
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                   throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                        }
+
+                                    }
+                             } else {
+                                <xsl:choose>
+                                <xsl:when test="@nillable">
+                                        // write null attribute
+                                        java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                        if (! namespace2.equals("")) {
+                                            java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                            if (prefix2 == null) {
+                                                prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                xmlWriter.writeNamespace(prefix2, namespace2);
+                                                xmlWriter.setPrefix(prefix2, namespace2);
+
+                                            } else {
+                                                xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                        } else {
+                                            xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                        }
+
+                                       // write the nil attribute
+                                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                       xmlWriter.writeEndElement();
+                                </xsl:when>
+                                <xsl:otherwise>
+                                       throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            }
+                        </xsl:when>
+
+                        <xsl:when test="@default and @array">
+                            <!-- Note - Assumed to be OMElement-->
+                            if (<xsl:value-of select="$varName"/>!=null){
+                                 for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                    if (<xsl:value-of select="$varName"/>[i] != null){
+                                           // write null attribute
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace2.equals("")) {
+                                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                if (prefix2 == null) {
+                                                    prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                                    xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                }
+
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
+                                            <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
+                                            xmlWriter.writeEndElement();
+                                    } else {
+                                       <xsl:choose>
+                                       <xsl:when test="@nillable">
+                                            // write null attribute
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace2.equals("")) {
+                                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                if (prefix2 == null) {
+                                                    prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                                    xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                }
+
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                           xmlWriter.writeEndElement();
+                                        </xsl:when>
+                                        <xsl:when test="$min=0">
+                                              // we have to do nothing since minOccurs is zero
+                                        </xsl:when>
+                                        <xsl:otherwise>
+                                             throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                        </xsl:otherwise>
+                                    </xsl:choose>
+                                    }
+                                 }
+                            } else {
+                                 <xsl:choose>
+                                   <xsl:when test="@nillable">
+                                        // write null attribute
+                                        java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                        if (! namespace2.equals("")) {
+                                            java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                            if (prefix2 == null) {
+                                                prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                xmlWriter.writeNamespace(prefix2, namespace2);
+                                                xmlWriter.setPrefix(prefix2, namespace2);
+
+                                            } else {
+                                                xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                        } else {
+                                            xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                        }
+
+                                       // write the nil attribute
+                                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                       xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                            }
+
+                        </xsl:when>
+
+                        <xsl:when test="@default and not(@array)">
+                            <!-- Note - Assumed to be OMElement-->
+                            if (<xsl:value-of select="$varName"/>!=null){
+                                // write null attribute
+                                java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                if (! namespace2.equals("")) {
+                                    java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                    if (prefix2 == null) {
+                                        prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                        xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                        xmlWriter.writeNamespace(prefix2, namespace2);
+                                        xmlWriter.setPrefix(prefix2, namespace2);
+
+                                    } else {
+                                        xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                    }
+
+                                } else {
+                                    xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                }
+                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                                xmlWriter.writeEndElement();
+                            } else {
+                                <xsl:choose>
+                                 <xsl:when test="@nillable">
+                                        // write null attribute
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace2.equals("")) {
+                                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                if (prefix2 == null) {
+                                                    prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                                    xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                }
+
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                           xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    </xsl:otherwise>
+                                 </xsl:choose>
+                            }
+
+
+                        </xsl:when>
+                        <!-- handle non ADB arrays - Not any however -->
+                        <xsl:when test="@array and not(@any)">
+                             if (<xsl:value-of select="$varName"/>!=null) {
+                                   for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                        <xsl:if test="@primitive">
+                                            namespace = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace.equals("")) {
+                                                prefix = xmlWriter.getPrefix(namespace);
+
+                                                if (prefix == null) {
+                                                    prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                    xmlWriter.writeNamespace(prefix, namespace);
+                                                    xmlWriter.setPrefix(prefix, namespace);
+
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                                }
+
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
+                                            xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+                                            xmlWriter.writeEndElement();
+
+                                        </xsl:if>
+                                        <xsl:if test="not(@primitive)">
+                                            if (<xsl:value-of select="$varName"/>[i] != null){
+                                                namespace = "<xsl:value-of select="$namespace"/>";
+                                                if (! namespace.equals("")) {
+                                                    prefix = xmlWriter.getPrefix(namespace);
+
+                                                    if (prefix == null) {
+                                                        prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                        xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                        xmlWriter.writeNamespace(prefix, namespace);
+                                                        xmlWriter.setPrefix(prefix, namespace);
+
+                                                    } else {
+                                                        xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                                    }
+
+                                                } else {
+                                                    xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                                }
+                                            <xsl:choose>
+                                                <xsl:when test="$propertyType='java.lang.String[]'">
+                                                    xmlWriter.writeCharacters(<xsl:value-of select="$varName"/>[i]);
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                    xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                                xmlWriter.writeEndElement();
+
+                                            } else {
+                                               <xsl:choose>
+                                                   <xsl:when test="@nillable">
+                                                       // write null attribute
+                                                        namespace = "<xsl:value-of select="$namespace"/>";
+                                                        if (! namespace.equals("")) {
+                                                            prefix = xmlWriter.getPrefix(namespace);
+
+                                                            if (prefix == null) {
+                                                                prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                                xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                                xmlWriter.writeNamespace(prefix, namespace);
+                                                                xmlWriter.setPrefix(prefix, namespace);
+
+                                                            } else {
+                                                                xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                                            }
+
+                                                        } else {
+                                                            xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                                        }
+                                                        writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                                        xmlWriter.writeEndElement();
+                                                   </xsl:when>
+                                                   <xsl:when test="$min=0">
+                                                       // we have to do nothing since minOccurs is zero
+                                                   </xsl:when>
+                                                   <xsl:otherwise>
+                                                       throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                                   </xsl:otherwise>
+
+                                               </xsl:choose>
+                                            }
+                                        </xsl:if>
+                                   }
+                             } else {
+                                 <xsl:choose>
+                                    <xsl:when test="@nillable">
+                                         // write the null attribute
+                                        // write null attribute
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace2.equals("")) {
+                                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                if (prefix2 == null) {
+                                                    prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                                    xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                }
+
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                           xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                             }
+
+                        </xsl:when>
+
+                         <!-- handle non ADB arrays  - Any case  - any may not be
+                         nillable -->
+                        <xsl:when test="@array and @any">
+                            <!-- Note - Assumed to be OMElement-->
+                            if (<xsl:value-of select="$varName"/> != null){
+                                for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                    if (<xsl:value-of select="$varName"/>[i] != null){
+                                        <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
+                                    } else {
+                                        <xsl:choose>
+                                            <xsl:when test="$min=0">
+                                                // we have to do nothing since minOccures zero
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                               throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    }
+                                }
+                            } else {
+                                throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                            }
+                        </xsl:when>
+                        <!-- handle any - non array case-->
+                         <xsl:when test="@any">
+                            <!-- Note - Assumed to be OMElement-->
+                            if (<xsl:value-of select="$varName"/> != null) {
+                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                            } else {
+                               throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                            }
+                        </xsl:when>
+                        <!-- handle all other cases -->
+                         <xsl:otherwise>
+                                <xsl:if test="not($simple)">
+                                    namespace = "<xsl:value-of select="$namespace"/>";
+                                    if (! namespace.equals("")) {
+                                        prefix = xmlWriter.getPrefix(namespace);
+
+                                        if (prefix == null) {
+                                            prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                            xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
+                                            xmlWriter.writeNamespace(prefix, namespace);
+                                            xmlWriter.setPrefix(prefix, namespace);
+
+                                        } else {
+                                            xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                        }
+
+                                    } else {
+                                        xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                    }
+                                </xsl:if>
+                             <xsl:choose>
+                                 <!-- handle the binary case -->
+                                 <xsl:when test="@binary">
+
+                                        <!-- Handling the null byte array -->
+                                    if (<xsl:value-of select="$varName"/>!=null)
+                                    {
+                                        org.apache.axiom.om.impl.llom.OMTextImpl <xsl:value-of select="$varName"/>_binary = new  org.apache.axiom.om.impl.llom.OMTextImpl( <xsl:value-of select="$varName"/>, org.apache.axiom.om.OMAbstractFactory.getOMFactory());
+                                        <xsl:value-of select="$varName"/>_binary.internalSerializeAndConsume(xmlWriter);
+                                    }
+
+                                 </xsl:when>
+                                 <xsl:otherwise>
+                                    <xsl:if test="not(@primitive)">
+
+                                          if (<xsl:value-of select="$varName"/>==null){
+                                              // write the nil attribute
+                                              <xsl:choose>
+                                                  <xsl:when test="@nillable">
+                                                     writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                                  </xsl:when>
+                                                  <xsl:otherwise>
+                                                     throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                                  </xsl:otherwise>
+                                              </xsl:choose>
+                                          }else{
+
+                                        <xsl:choose>
+                                            <xsl:when test="$propertyType='javax.xml.namespace.QName'">
+                                                        java.lang.String namespaceURI =<xsl:value-of select="$varName"/>.getNamespaceURI();
+                                                        if(namespaceURI !=null){
+                                                           prefix = <xsl:value-of select="$varName"/>.getPrefix();
+                                                           if (prefix == null) {
+                                                            prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                                                          }
+                                                         xmlWriter.writeNamespace(prefix,namespaceURI );
+                                                         xmlWriter.writeCharacters(prefix + ":"+ org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                                        } else {
+                                                           xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                                        }
+                                            </xsl:when>
+                                            <xsl:when test="$propertyType='org.apache.axiom.om.OMElement'">
+                                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                                            </xsl:when>
+                                            <xsl:when test="$propertyType='java.lang.String'">
+                                                   xmlWriter.writeCharacters(<xsl:value-of select="$varName"/>);
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                   xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                          }
+                                    </xsl:if>
+                                    <xsl:if test="@primitive">
+                                       xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                    </xsl:if>
+                                 </xsl:otherwise>
+                             </xsl:choose>
+                             <xsl:if test="not($simple)">
+                                   xmlWriter.writeEndElement();
+                             </xsl:if>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:if test="$min=0 or $choice">}</xsl:if>
+
+                </xsl:for-each>
+                   <!-- write the end element for the type-->
+               xmlWriter.writeEndElement();
+            <!-- end of when for type & anon -->
+            </xsl:when>
+
+            <!-- Not a type and not anon. So it better be only one inclusion-->
+            <xsl:otherwise>
+                <!-- if the element is associated with a type, then its gonna be only one -->
+                //We can safely assume an element has only one type associated with it
+                <xsl:variable name="varName">local<xsl:value-of select="property/@javaname"/></xsl:variable>
+                <xsl:variable name="nillable" select="property/@nillable"></xsl:variable>
+                <xsl:variable name="primitive" select="property/@primitive"></xsl:variable>
+                <xsl:variable name="propertyType"><xsl:value-of select="property/@type"/></xsl:variable>
+
+                <xsl:choose>
+                    <!-- This better be only one!!-->
+                    <xsl:when test="property/@ours">
+                        <xsl:choose>
+                            <xsl:when test="$nillable">
+                                      if (<xsl:value-of select="$varName"/>==null){
+                                        java.lang.String namespace = "<xsl:value-of select="property/@nsuri"/>";
+
+                                        if (! namespace.equals("")) {
+                                            java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+                                            if (prefix == null) {
+                                                prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                xmlWriter.writeStartElement(prefix,"<xsl:value-of select="property/@name"/>", namespace);
+                                                xmlWriter.writeNamespace(prefix, namespace);
+                                                xmlWriter.setPrefix(prefix, namespace);
+
+                                            } else {
+                                                xmlWriter.writeStartElement(namespace,"<xsl:value-of select="property/@name"/>");
+                                            }
+
+                                        } else {
+                                            xmlWriter.writeStartElement("<xsl:value-of select="property/@name"/>");
+                                        }
+
+                                        // write the nil attribute
+                                        writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                        xmlWriter.writeEndElement();
+                                       }else{
+                                         <xsl:value-of select="$varName"/>.getOMDataSource(
+                                         MY_QNAME,
+                                         factory).serialize(xmlWriter);
+                                       }
+                            </xsl:when>
+                            <xsl:otherwise>
+                                 if (<xsl:value-of select="$varName"/>==null){
+                                   throw new RuntimeException("Property cannot be null!");
+                                 }
+                                 <xsl:value-of select="$varName"/>.getOMDataSource(
+                                         MY_QNAME,
+                                         factory).serialize(xmlWriter);
+                            </xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:when>
+                    <!-- end of ours block-->
+                    <xsl:otherwise>
+                        <xsl:if test="not(property/@simple)">
+                            java.lang.String namespace = "<xsl:value-of select="property/@nsuri"/>";
+                            java.lang.String localName = "<xsl:value-of select="property/@name"/>";
+                        </xsl:if>
+                        <xsl:if test="property/@simple">
+                            java.lang.String namespace = parentQName.getNamespaceURI();
+                            java.lang.String localName = parentQName.getLocalPart();
+                        </xsl:if>
+                            if (! namespace.equals("")) {
+                                java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+                                if (prefix == null) {
+                                    prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                    xmlWriter.writeStartElement(prefix, localName, namespace);
+                                    xmlWriter.writeNamespace(prefix, namespace);
+                                    xmlWriter.setPrefix(prefix, namespace);
+
+                                } else {
+                                    xmlWriter.writeStartElement(namespace, localName);
+                                }
+
+                            } else {
+                                xmlWriter.writeStartElement(localName);
+                            }
+                            <xsl:if test="not($primitive)">
+                                          if (<xsl:value-of select="$varName"/>==null){
+                                            <xsl:choose>
+                                                <xsl:when test="$nillable">
+                                                     // write the nil attribute
+                                                     writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                     throw new RuntimeException("testValue cannot be null !!");
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                         }else{
+                                        <xsl:choose>
+                                            <xsl:when test="$propertyType='javax.xml.namespace.QName'">
+                                                           java.lang.String prefix ="";
+                                                            java.lang.String namespaceURI =<xsl:value-of select="$varName"/>.getNamespaceURI();
+                                                            if(namespaceURI !=null){
+                                                               prefix = <xsl:value-of select="$varName"/>.getPrefix();
+                                                               if (prefix == null) {
+                                                                prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                                                              }
+                                                             xmlWriter.writeNamespace(prefix,namespaceURI );
+                                                             xmlWriter.writeCharacters(prefix + ":"+ org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                                            } else {
+                                                               xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                                            }
+                                            </xsl:when>
+                                            <xsl:when test="$propertyType='org.apache.axiom.om.OMElement'">
+                                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                                            </xsl:when>
+                                            <xsl:when test="$propertyType='java.lang.String'">
+                                                       xmlWriter.writeCharacters(<xsl:value-of select="$varName"/>);
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                       xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                         }
+                                    </xsl:if>
+                            <xsl:if test="$primitive">
+                               xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                            </xsl:if>
+                       xmlWriter.writeEndElement();
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:otherwise>
+        </xsl:choose>
+
+        }
+
+         /**
+          * Util method to write an attribute with the ns prefix
+          */
+          private void writeAttribute(java.lang.String prefix,java.lang.String namespace,java.lang.String attName,
+                                      java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
+              if (xmlWriter.getPrefix(namespace) == null) {
+                       xmlWriter.writeNamespace(prefix, namespace);
+                       xmlWriter.setPrefix(prefix, namespace);
+
+              }
+
+              xmlWriter.writeAttribute(namespace,attName,attValue);
+
+         }
+
+         /**
+          * Util method to write an attribute without the ns prefix
+          */
+          private void writeAttribute(java.lang.String namespace,java.lang.String attName,
+                                      java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
+    	  	  if (namespace.equals(""))
+        	  {
+        		  xmlWriter.writeAttribute(attName,attValue);
+        	  }
+        	  else
+        	  {
+                  registerPrefix(xmlWriter, namespace);
+                  xmlWriter.writeAttribute(namespace,attName,attValue);
+              }
+          }
+
+         /**
+         * Register a namespace prefix
+         */
+         private java.lang.String registerPrefix(javax.xml.stream.XMLStreamWriter xmlWriter, java.lang.String namespace) throws javax.xml.stream.XMLStreamException {
+                java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+                if (prefix == null) {
+                    prefix = createPrefix();
+
+                    while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) {
+                        prefix = createPrefix();
+                    }
+
+                    xmlWriter.writeNamespace(prefix, namespace);
+                    xmlWriter.setPrefix(prefix, namespace);
+                }
+
+                return prefix;
+            }
+
+         /**
+          * Create a prefix
+          */
+          private java.lang.String createPrefix() {
+                return "ns" + (int)Math.random();
+          }
+        };
+
+        return dataSource;
+    }
+
+  <!-- ######################################################################################### -->
+        /**
+        * databinding method to get an XML representation of this object
+        *
+        */
+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName){
+
+
+        <xsl:choose>
+            <xsl:when test="@type or @anon">
+                 java.util.ArrayList elementList = new java.util.ArrayList();
+                 java.util.ArrayList attribList = new java.util.ArrayList();
+
+                <xsl:for-each select="property[not(@attribute)]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">local<xsl:value-of select="@javaname"/></xsl:variable>
+                    <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+                    <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:variable name="settingTracker">local<xsl:value-of select="@javaname"/>Tracker</xsl:variable>
+
+
+                    <xsl:if test="$min=0 or $choice"> if (<xsl:value-of select="$settingTracker"/>){</xsl:if>
+                    <xsl:choose>
+                        <xsl:when test="(@ours or @default) and not(@array)">
+                            elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                            <!-- Arraylist can handle null's -->
+                            <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    elementList.add(<xsl:value-of select="$varName"/>==null?null:
+                                    <xsl:value-of select="$varName"/>);
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                    elementList.add(<xsl:value-of select="$varName"/>);
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <xsl:when test="(@ours or @default) and @array">
+                             if (<xsl:value-of select="$varName"/>!=null) {
+                                 for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+
+                                    if (<xsl:value-of select="$varName"/>[i] != null){
+                                         elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                          "<xsl:value-of select="$propertyName"/>"));
+                                         elementList.add(<xsl:value-of select="$varName"/>[i]);
+                                    } else {
+                                        <xsl:choose>
+                                            <xsl:when test="@nillable">
+                                                elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                          "<xsl:value-of select="$propertyName"/>"));
+                                                elementList.add(null);
+                                            </xsl:when>
+                                            <xsl:when test="$min=0">
+                                                // nothing to do
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                               throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null !!");
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    }
+
+                                 }
+                             } else {
+                                 <xsl:choose>
+                                    <xsl:when test="@nillable">
+                                        elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                          "<xsl:value-of select="$propertyName"/>"));
+                                        elementList.add(<xsl:value-of select="$varName"/>);
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                        throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                             }
+
+                        </xsl:when>
+                        <!-- handle non ADB arrays - Not any however -->
+                        <xsl:when test="@array and not(@any)">
+                            if (<xsl:value-of select="$varName"/>!=null){
+                                  for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                      <xsl:if test="not(@primitive)">
+                                         if (<xsl:value-of select="$varName"/>[i] != null){
+                                          elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                              "<xsl:value-of select="$propertyName"/>"));
+                                          elementList.add(
+                                          org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+                                          } else {
+                                             <xsl:choose>
+                                                <xsl:when test="@nillable">
+                                                    elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                              "<xsl:value-of select="$propertyName"/>"));
+                                                    elementList.add(null);
+                                                </xsl:when>
+                                                <xsl:when test="$min=0">
+                                                    // have to do nothing
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                    throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                          }
+                                      </xsl:if>
+                                      <xsl:if test="@primitive">
+                                          elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                                                                       "<xsl:value-of select="$propertyName"/>"));
+                                          elementList.add(
+                                          org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+
+                                      </xsl:if>
+
+                                  }
+                            } else {
+                              <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                              "<xsl:value-of select="$propertyName"/>"));
+                                    elementList.add(null);
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                </xsl:otherwise>
+                               </xsl:choose>
+                            }
+
+                        </xsl:when>
+
+                         <!-- handle non ADB arrays  - Any case  - any may not be
+                         nillable -->
+                        <xsl:when test="@array and @any">
+                            if (<xsl:value-of select="$varName"/> != null) {
+                                for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                    if (<xsl:value-of select="$varName"/>[i] != null){
+                                       elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                          "<xsl:value-of select="$propertyName"/>"));
+                                      elementList.add(
+                                      org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+                                    } else {
+                                        <xsl:choose>
+                                            <xsl:when test="$min=0">
+                                                // have to do nothing
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    }
+
+                                }
+                            } else {
+                               throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                            }
+                        </xsl:when>
+                        <!-- handle any - non array case-->
+                         <xsl:when test="@any">
+                            if (<xsl:value-of select="$varName"/> != null){
+                                elementList.add(org.apache.axis2.databinding.utils.Constants.OM_ELEMENT_KEY);
+                                elementList.add(<xsl:value-of select="$varName"/>);
+                            } else {
+                               throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                            }
+                        </xsl:when>
+                        <!-- handle binary - Since it is a Datahandler, we can just add it to the list
+                          and the ADB pullparser would handle it right-->
+                         <xsl:when test="@binary">
+                            elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                            elementList.add(<xsl:value-of select="$varName"/>);
+                        </xsl:when>
+                        <!-- the usual case!!!!-->
+                        <xsl:otherwise>
+                             elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                            <xsl:if test="@primitive">
+                                elementList.add(
+                                   org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                            </xsl:if>
+                            <xsl:if test="not(@primitive)">
+                                 <xsl:choose>
+                                    <xsl:when test="@nillable">
+                                         elementList.add(<xsl:value-of select="$varName"/>==null?null:
+                                         org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                        if (<xsl:value-of select="$varName"/> != null){
+                                            elementList.add(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                        } else {
+                                           throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                        }
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                           </xsl:if>
+
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:if test="$min=0 or $choice">}</xsl:if>
+                </xsl:for-each>
+
+                <xsl:for-each select="property[@attribute]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">local<xsl:value-of select="@javaname"/></xsl:variable>
+                     <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:choose>
+                        <xsl:when test="@any and not(@array)">
+                            attribList.add(org.apache.axis2.databinding.utils.Constants.OM_ATTRIBUTE_KEY);
+                            attribList.add(<xsl:value-of select="$varName"/>);
+                        </xsl:when>
+                         <xsl:when test="@any and @array">
+                             for (int i=0;i &lt;<xsl:value-of select="$varName"/>.length;i++){
+                               attribList.add(org.apache.axis2.databinding.utils.Constants.OM_ATTRIBUTE_KEY);
+                               attribList.add(<xsl:value-of select="$varName"/>[i]);
+                             }
+                         </xsl:when>
+                        <xsl:otherwise>
+                            attribList.add(
+                            new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"));
+                            attribList.add(
+                            org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:for-each>
+
+                return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(), attribList.toArray());
+            <!-- end of when for type & anon -->
+            </xsl:when>
+            <!-- Not a type and not anon. So it better be only one inclusion-->
+            <xsl:otherwise>
+                <!-- if the element is associated with a type, then its gonna be only one -->
+                //We can safely assume an element has only one type associated with it
+                <xsl:variable name="varName">local<xsl:value-of select="property/@javaname"/></xsl:variable>
+                <xsl:variable name="nillable" select="property/@nillable"></xsl:variable>
+                <xsl:variable name="primitive" select="property/@primitive"></xsl:variable>
+
+                <xsl:choose>
+                    <!-- This better be only one!!-->
+                    <xsl:when test="property/@ours">
+
+                        <xsl:choose>
+                            <xsl:when test="$nillable">
+                                if (<xsl:value-of select="$varName"/>==null){
+                                   return new org.apache.axis2.databinding.utils.reader.NullXMLStreamReader(MY_QNAME);
+                                }else{
+                                   return <xsl:value-of select="$varName"/>.getPullParser(MY_QNAME);
+                                }
+                            </xsl:when>
+                            <xsl:otherwise>return <xsl:value-of select="$varName"/>.getPullParser(MY_QNAME);</xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:choose>
+                            <xsl:when test="$nillable and not($primitive)">
+                                if (<xsl:value-of select="$varName"/>==null){
+                                      return new org.apache.axis2.databinding.utils.reader.NullXMLStreamReader(MY_QNAME);
+                                }else{
+                                   return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(MY_QNAME,
+                                       new java.lang.Object[]{
+                                      org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT,
+                                       org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)
+                                       },
+                                       null);
+                                }
+                            </xsl:when>
+                            <xsl:otherwise> return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(MY_QNAME,
+                            new java.lang.Object[]{
+                            org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT,
+                            org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)
+                            },
+                            null);</xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:otherwise>
+        </xsl:choose>
+
+        }
+
+  <!-- ######################################################################################### -->
+
+     /**
+      *  Factory class that keeps the parse method
+      */
+    public static class Factory{
+
+
+        /**
+        * static method to create the object
+        * Precondition:  If this object is an element, the current or next start element starts this object and any intervening reader events are ignorable
+        *                If this object is not an element, it is a complex type and the reader is at the event just after the outer start element
+        * Postcondition: If this object is an element, the reader is positioned at its end element
+        *                If this object is a complex type, the reader is positioned at the end element of its outer element
+        */
+        public static <xsl:value-of select="$name"/> parse(javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{
+            <xsl:if test="not(property/enumFacet)"><xsl:value-of select="$name"/> object = new <xsl:value-of select="$name"/>();</xsl:if>
+            <xsl:if test="property/enumFacet"><xsl:value-of select="$name"/> object = null;</xsl:if>
+            int event;
+            try {
+                <!-- Advance to our start element, or if we are a complex type, to our first property start element or the outer end element if no properties -->
+                while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                    reader.next();
+
+                <xsl:if test="@nillable">
+                   if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                         // Skip the element and report the null value.  It cannot have subelements.
+                         while (!reader.isEndElement())
+                             reader.next();
+                         <xsl:choose>
+                             <xsl:when test="@type or @anon">
+                                 return null;
+                             </xsl:when>
+                             <xsl:otherwise>
+                                 return object;
+                             </xsl:otherwise>
+                         </xsl:choose>
+
+                   }
+                </xsl:if>
+                  <xsl:if test="$isType or $anon">
+                if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","type")!=null){
+                  java.lang.String fullTypeName = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance",
+                        "type");
+                  if (fullTypeName!=null){
+                    java.lang.String nsPrefix = fullTypeName.substring(0,fullTypeName.indexOf(":"));
+                    nsPrefix = nsPrefix==null?"":nsPrefix;
+
+                    java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":")+1);
+                    if (!"<xsl:value-of select="$originalName"/>".equals(type)){
+                        //find namespace for the prefix
+                        java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
+                        return (<xsl:value-of select="$name"/>)<xsl:value-of select="$mapperClass"/>.getTypeObject(
+                             nsUri,type,reader);
+                      }
+
+                  }
+
+                }
+                </xsl:if>
+
+                <!-- populate attributes here!!!. The attributes are part of an element, not part of a type -->
+                // Note all attributes that were handled. Used to differ normal attributes
+                // from anyAttributes.
+                java.util.Vector handledAttributes = new java.util.Vector();
+                <xsl:for-each select="property[@attribute]">
+                    <xsl:variable name="propertyName" select="@name"/>
+                    <xsl:variable name="propertyType" select="@type"/>
+                    <xsl:variable name="shortTypeNameUncapped"  select="@shorttypename"/>
+                    <xsl:variable name="shortTypeName"
+                    select="concat(translate(substring($shortTypeNameUncapped, 1, 1 ),'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($shortTypeNameUncapped, 2, string-length($shortTypeNameUncapped)))" />
+                    <xsl:variable name="javaName" select="@javaname"/>
+                    <xsl:variable name="namespace" select="@nsuri"/>
+                    <xsl:variable name="attribName">tempAttrib<xsl:value-of select="$propertyName"/></xsl:variable>
+
+                    <xsl:if test="$propertyName != 'extraAttributes'">
+                    // handle attribute "<xsl:value-of select="$propertyName"/>"
+                    java.lang.String <xsl:value-of select="$attribName"/> =
+                      reader.getAttributeValue("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>");
+                   if (<xsl:value-of select="$attribName"/>!=null){
+                         java.lang.String content = <xsl:value-of select="$attribName"/>;
+                        <xsl:choose>
+                            <xsl:when test="$propertyType='javax.xml.namespace.QName'">
+                                int index = <xsl:value-of select="$attribName"/>.indexOf(":");
+                                java.lang.String prefix ="";
+                                java.lang.String namespaceuri ="";
+                                if(index >0){
+                                     prefix = <xsl:value-of select="$attribName"/>.substring(0,index);
+                                     namespaceuri = reader.getNamespaceURI(prefix);
+                                 }
+                                 object.set<xsl:value-of select="$javaName"/>(
+                                      org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(<xsl:value-of select="$attribName"/>,namespaceuri));
+                            </xsl:when>
+                            <xsl:otherwise>
+                         object.set<xsl:value-of select="$javaName"/>(
+                           org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(
+                                <xsl:value-of select="$attribName"/>));
+                            </xsl:otherwise>
+                        </xsl:choose>
+                    }
+                    handledAttributes.add("<xsl:value-of select="$propertyName"/>");
+                    </xsl:if>
+
+                    <!-- Handle anyAttributes here -->
+                    <xsl:if test="$propertyName = 'extraAttributes'">
+                        // now run through all any or extra attributes
+                        // which were not reflected until now
+                        for (int i=0; i &lt; reader.getAttributeCount(); i++) {
+                            if (!handledAttributes.contains(reader.getAttributeLocalName(i))) {
+                                // this is an anyAttribute and we create
+                                // an OMAttribute for this
+                                org.apache.axiom.om.impl.llom.OMAttributeImpl attr =
+                                    new org.apache.axiom.om.impl.llom.OMAttributeImpl(
+                                            reader.getAttributeLocalName(i),
+                                            new org.apache.axiom.om.impl.dom.NamespaceImpl(
+                                                reader.getAttributeNamespace(i), reader.getAttributePrefix(i)),
+                                            reader.getAttributeValue(i),
+                                            org.apache.axiom.om.OMAbstractFactory.getOMFactory());
+
+                                // and add it to the extra attributes
+                                object.addExtraAttributes(attr);
+                            }
+                        }
+                    </xsl:if>
+
+                </xsl:for-each>
+
+                <xsl:if test="($isType or $anon) and not($simple)">
+                    <!-- Skip the outer start element in order to process the subelements. -->
+                    reader.next();
+                </xsl:if>
+                      <!-- If we are not a type and not an element with anonymous type, then we are an element with one property for our named type. -->
+                      <!-- Our single named-type property applies to our entire outer element, so don't skip it. -->
+                <!-- First loop creates arrayLists for handling arrays -->
+                <xsl:for-each select="property[not(@attribute)]">
+                    <xsl:if test="@array">
+                        java.util.ArrayList list<xsl:value-of select="position()"/> = new java.util.ArrayList();
+                    </xsl:if>
+                </xsl:for-each>
+
+                <xsl:if test="property[not(@attribute)]">
+                <xsl:if test="$unordered">   <!-- Properties can be in any order -->
+                while(!reader.isEndElement()) {
+                    if (reader.isStartElement() <xsl:if test="$simple"> || reader.hasText()</xsl:if>){
+                </xsl:if>
+                </xsl:if>
+
+                        <!-- Now reloop and populate the code -->
+                        <xsl:for-each select="property[not(@attribute)]">
+                            <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                            <xsl:variable name="propertyType"><xsl:value-of select="@type"/></xsl:variable>
+                            <xsl:variable name="shortTypeNameUncapped"  select="@shorttypename"/>
+                            <xsl:variable name="shortTypeName"
+                                select="concat(translate(substring($shortTypeNameUncapped, 1, 1 ),'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($shortTypeNameUncapped, 2, string-length($shortTypeNameUncapped)))" />
+                            <xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable>
+                            <xsl:variable name="listName">list<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="loopBoolName">loopDone<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="startQname">startQname<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="stateMachineName">stateMachine<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="builderName">builder<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
+                            <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                            <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+
+                            <xsl:variable name="propQName">new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>")</xsl:variable>
+
+                           <xsl:choose>
+                                <xsl:when test="$unordered">  <!-- One property per iteration if unordered -->
+                                    <xsl:if test="position()>1">
+                                        else
+                                    </xsl:if>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <!-- If sequence, advance to start of next property or to end of outer element -->
+                                    while (!reader.isStartElement() &amp;&amp; !reader.isEndElement()) reader.next();
+                                </xsl:otherwise>
+                            </xsl:choose>
+
+                            <xsl:if test="not(enumFacet)">
+                            <xsl:choose>
+                                <xsl:when test="$shortTypeName='OMElement'">
+                                   if (reader.isStartElement()){
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (reader.isStartElement() <xsl:if test="$simple"> || reader.hasText()</xsl:if> <xsl:if test="not($simple)">&amp;&amp; <xsl:value-of select="$propQName"/>.equals(reader.getName())</xsl:if>){
+                                </xsl:otherwise>
+                            </xsl:choose>
+
+                            </xsl:if>
+                            <xsl:choose>
+                                <xsl:when test="@array">
+                                    <!-- We must be a named type or element with anonymous type. -->
+                                    <!-- Elements with a named type have a single simple (non-array) property for their type -->
+                                    // Process the array and step past its final element's end.
+                                    <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
+                                    <xsl:choose>
+                                        <xsl:when test="@ours">
+                                             <xsl:if test="@nillable">
+                                              if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                  <xsl:value-of select="$listName"/>.add(null);
+                                                  reader.next();
+                                              } else {
+                                            </xsl:if>
+                                                <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>.Factory.parse(reader));
+                                            <xsl:if test="@nillable">}</xsl:if>
+                                            //loop until we find a start element that is not part of this array
+                                            boolean <xsl:value-of select="$loopBoolName"/> = false;
+                                            while(!<xsl:value-of select="$loopBoolName"/>){
+                                                // We should be at the end element, but make sure
+                                                while (!reader.isEndElement())
+                                                    reader.next();
+                                                // Step out of this element
+                                                reader.next();
+                                                // Step to next element event.
+                                                while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                                                    reader.next();
+                                                if (reader.isEndElement()){
+                                                    //two continuous end elements means we are exiting the xml structure
+                                                    <xsl:value-of select="$loopBoolName"/> = true;
+                                                } else {
+                                                    if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){
+                                                        <xsl:if test="@nillable">
+                                                          if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                              <xsl:value-of select="$listName"/>.add(null);
+                                                              reader.next();
+                                                          } else {
+                                                        </xsl:if>
+                                                        <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>.Factory.parse(reader));
+                                                        <xsl:if test="@nillable">}</xsl:if>
+                                                    }else{
+                                                        <xsl:value-of select="$loopBoolName"/> = true;
+                                                    }
+                                                }
+                                            }
+                                            // call the converter utility  to convert and set the array
+                                            object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                    <xsl:value-of select="$basePropertyType"/>.class,
+                                                    <xsl:value-of select="$listName"/>));
+                                        </xsl:when>
+                                        <!-- End of Array handling of ADB classes -->
+
+                                        <!--Let's handle xs:any here-->
+                                        <xsl:when test="@any">
+                                           boolean <xsl:value-of select="$loopBoolName"/>=false;
+
+                                             while (!<xsl:value-of select="$loopBoolName"/>){
+                                                 event = reader.getEventType();
+                                                 if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
+
+                                                      // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
+                                                      org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/>
+                                                         = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                                              new org.apache.axis2.util.StreamWrapper(reader), reader.getName());
+
+                                                       <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement());
+                                                        reader.next();
+                                                        if (reader.isEndElement()) {
+                                                            // we have two countinuos end elements
+                                                           <xsl:value-of select="$loopBoolName"/> = true;
+                                                        }
+
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else{
+                                                     reader.next();
+                                                 }
+
+                                             }
+
+                                             object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                 org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                     <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>));
+                                        </xsl:when>
+
+                                        <!-- End of Array handling of ADB classes -->
+                                        <xsl:when test="@default">
+
+                                             boolean <xsl:value-of select="$loopBoolName"/>=false;
+                                             javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName(
+                                                    "<xsl:value-of select="$namespace"/>",
+                                                    "<xsl:value-of select="$propertyName"/>");
+
+                                             while (!<xsl:value-of select="$loopBoolName"/>){
+                                                 event = reader.getEventType();
+                                                 if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event
+                                                         &amp;&amp; <xsl:value-of select="$startQname"/>.equals(reader.getName())){
+
+                                                      <!-- if-block that handles nillable -->
+                                                      <xsl:if test="@nillable">
+                                                          if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                              <xsl:value-of select="$listName"/>.add(null);
+                                                              reader.next();
+                                                          }else{
+                                                      </xsl:if>
+                                                            // we parse it as an omElement
+                                                            // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
+                                                            // this is needed by the builder classes
+                                                             org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
+                                                                 new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                                                     new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
+                                                             <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement());
+                                                       <xsl:if test="@nillable">}</xsl:if>
+                                                 } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event &amp;&amp;
+                                                            !<xsl:value-of select="$startQname"/>.equals(reader.getName())){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event &amp;&amp;
+                                                           !<xsl:value-of select="$startQname"/>.equals(reader.getName())){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else{
+                                                     reader.next();
+                                                 }
+
+                                             }
+
+                                             object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                 org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                     <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>));
+
+                                        </xsl:when>
+
+                                        <!-- handling binary case -->
+                                        <xsl:when test="@binary">
+                                               <xsl:if test="@nillable">
+                                                  if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                      <xsl:value-of select="$listName"/>.add(null);
+                                                      reader.next();
+                                                  } else {
+                                                </xsl:if>
+
+                                                    if (isReaderMTOMAware(reader)
+                                                            &amp;&amp;
+                                                            java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
+                                                    {
+                                                        //MTOM aware reader - get the datahandler directly and put it in the object
+                                                        <xsl:value-of select="$listName"/>.add(
+                                                                (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
+                                                    } else {
+                                                        // Step in
+                                                        if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT &amp;&amp; <xsl:value-of select="$propQName"/>.equals(reader.getName())) {
+                                                            reader.next();
+                                                        }
+                                                        if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT &amp;&amp; reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
+                                                        {
+                                                            java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
+                                                            <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
+                                                            reader.next();
+                                                            reader.next();
+                                                        } else if(reader.hasText()) {
+                                                            //Do the usual conversion
+                                                            java.lang.String content = reader.getText();
+                                                            <xsl:value-of select="$listName"/>.add(
+                                                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
+                                                                    reader.next();
+                                                        }
+
+                                                    }
+
+
+                                                <xsl:if test="@nillable">}</xsl:if>
+                                                //loop until we find a start element that is not part of this array
+                                                boolean <xsl:value-of select="$loopBoolName"/> = false;
+                                                while(!<xsl:value-of select="$loopBoolName"/>){
+                                                    // Ensure we are at the EndElement
+                                                    while (!reader.isEndElement()){
+                                                        reader.next();
+                                                    }
+                                                    // Step out of this element
+                                                    reader.next();
+                                                    // Step to next element event.
+                                                    while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                                                        reader.next();
+                                                    if (reader.isEndElement()){
+                                                        //two continuous end elements means we are exiting the xml structure
+                                                        <xsl:value-of select="$loopBoolName"/> = true;
+                                                    } else {
+                                                        if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){
+                                                             <xsl:if test="@nillable">
+                                                              if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                                  <xsl:value-of select="$listName"/>.add(null);
+                                                                  reader.next();
+                                                              } else {
+                                                            </xsl:if>
+
+                                                                <xsl:if test="not($simple)">reader.next();</xsl:if>
+                                                                if (isReaderMTOMAware(reader)
+                                                                        &amp;&amp;
+                                                                        java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
+                                                                {
+                                                                    //MTOM aware reader - get the datahandler directly and put it in the object
+                                                                    <xsl:value-of select="$listName"/>.add(
+                                                                            (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
+                                                                } else {
+                                                                    if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT &amp;&amp; reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
+                                                                    {
+                                                                        java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
+                                                                        <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
+                                                                        reader.next();
+                                                                        reader.next();
+                                                                    } else if(reader.hasText()) {
+                                                                        //Do the usual conversion
+                                                                        java.lang.String content = reader.getText();
+                                                                        <xsl:value-of select="$listName"/>.add(
+                                                                                org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
+                                                                                reader.next();
+                                                                    }
+
+                                                                }
+
+                                                            <xsl:if test="@nillable">}</xsl:if>
+                                                        }else{
+                                                            <xsl:value-of select="$loopBoolName"/> = true;
+                                                        }
+                                                    }
+                                                }
+                                                // call the converter utility  to convert and set the array
+                                                object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                        <xsl:value-of select="$basePropertyType"/>.class,
+                                                        <xsl:value-of select="$listName"/>));
+                                        </xsl:when>
+
+                                        <xsl:otherwise>
+                                            <xsl:choose>
+                                             <xsl:when test="@default">
+                                             boolean <xsl:value-of select="$loopBoolName"/>=false;
+                                             javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName(
+                                                    "<xsl:value-of select="$namespace"/>",
+                                                    "<xsl:value-of select="$propertyName"/>");
+
+                                             while (!<xsl:value-of select="$loopBoolName"/>){
+                                                 event = reader.getEventType();
+                                                 if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event
+                                                         &amp;&amp; <xsl:value-of select="$startQname"/>.equals(reader.getName())){
+
+                                                      <!-- if-block that handles nillable -->
+                                                      <xsl:if test="@nillable">
+                                                          if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                              <xsl:value-of select="$listName"/>.add(null);
+                                                          }else{
+                                                      </xsl:if>
+
+                                                      // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
+                                                      org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/>
+                                                         = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                                              new org.apache.axis2.util.StreamWrapper(reader), <xsl:value-of select="$startQname"/>);
+
+                                                       <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement());
+                                                       <xsl:if test="@nillable">}</xsl:if>
+                                                 } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event &amp;&amp;
+                                                            !<xsl:value-of select="$startQname"/>.equals(reader.getName())){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event &amp;&amp;
+                                                           !<xsl:value-of select="$startQname"/>.equals(reader.getName())){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else{
+                                                     reader.next();
+                                                 }
+
+                                             }
+
+                                             object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                 org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                     <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>));
+
+                                        </xsl:when>
+                                        <!-- End of Array handling of default class - that is the OMElement -->
+                                        <xsl:otherwise>
+                                             <xsl:if test="@nillable">
+                                              if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                  <xsl:value-of select="$listName"/>.add(null);
+                                                  reader.next();
+                                              } else {
+                                            </xsl:if>
+                                            <xsl:value-of select="$listName"/>.add(reader.getElementText());
+                                            <xsl:if test="@nillable">}</xsl:if>
+                                            //loop until we find a start element that is not part of this array
+                                            boolean <xsl:value-of select="$loopBoolName"/> = false;
+                                            while(!<xsl:value-of select="$loopBoolName"/>){
+                                                // Ensure we are at the EndElement
+                                                while (!reader.isEndElement()){
+                                                    reader.next();
+                                                }
+                                                // Step out of this element
+                                                reader.next();
+                                                // Step to next element event.
+                                                while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                                                    reader.next();
+                                                if (reader.isEndElement()){
+                                                    //two continuous end elements means we are exiting the xml structure
+                                                    <xsl:value-of select="$loopBoolName"/> = true;
+                                                } else {
+                                                    if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){
+                                                         <xsl:if test="@nillable">
+                                                          if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                              <xsl:value-of select="$listName"/>.add(null);
+                                                              reader.next();
+                                                          } else {
+                                                        </xsl:if>
+                                                        <xsl:value-of select="$listName"/>.add(reader.getElementText());
+                                                        <xsl:if test="@nillable">}</xsl:if>
+                                                    }else{
+                                                        <xsl:value-of select="$loopBoolName"/> = true;
+                                                    }
+                                                }
+                                            }
+                                            // call the converter utility  to convert and set the array
+                                            object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                    <xsl:value-of select="$basePropertyType"/>.class,
+                                                    <xsl:value-of select="$listName"/>));
+                                        </xsl:otherwise>
+                                        </xsl:choose>
+                                        </xsl:otherwise>
+                                    </xsl:choose>
+                                </xsl:when>
+                                <xsl:when test="@ours">
+                                    <xsl:if test="@nillable">
+                                      if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                          object.set<xsl:value-of select="$javaName"/>(null);
+                                          reader.next();
+                                          <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                            reader.next();
+                                          </xsl:if>
+                                      }else{
+                                    </xsl:if>
+                                        object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/>.Factory.parse(reader));
+                                    <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                        reader.next();
+                                    </xsl:if>
+                                    <xsl:if test="@nillable">}</xsl:if>
+                                </xsl:when>
+                                <!-- start of any handling. Any can also be @default so we need to handle the any case before default! -->
+                                <xsl:when test="@any">
+                                    <!--No concerns of being nillable here. if it's ours and if the nillable attribute was present
+                                        we would have outputted a null already-->
+                                     <!--This can be any element and we may not know the name. so we pick the name of the element from the parser-->
+                                     //use the QName from the parser as the name for the builder
+                                     javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = reader.getName();
+
+                                     // We need to wrap the reader so that it produces a fake START_DOCUMENT event
+                                     // this is needed by the builder classes
+                                     org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
+                                         new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                             new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
+                                     object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement());
+                                     <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                         reader.next();
+                                     </xsl:if>
+                                </xsl:when>
+                                <!-- end of adb type handling code -->
+                                <!-- start of OMelement handling -->
+                                 <xsl:when test="@default">
+                                     boolean <xsl:value-of select="$loopBoolName"/> = false;
+                                     javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName(
+                                                                         "<xsl:value-of select="$namespace"/>",
+                                                                         "<xsl:value-of select="$propertyName"/>");
+
+                                     while(!<xsl:value-of select="$loopBoolName"/>){
+                                         if (reader.isStartElement() &amp;&amp; <xsl:value-of select="$startQname"/>.equals(reader.getName())){
+                                             <xsl:value-of select="$loopBoolName"/> = true;
+                                         }else{
+                                             reader.next();
+                                         }
+                                     }
+
+                                     <!-- todo  put the code here for nillable -->
+                                     // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
+                                     // this is needed by the builder classes
+                                     org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
+                                         new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                             new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
+                                     object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement());
+                                     <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                         reader.next();
+                                     </xsl:if>
+                                </xsl:when>
+                                <!-- end of OMelement handling -->
+                                <!-- start of the simple types handling for binary content-->
+                                <xsl:when test="@binary">
+                                    <xsl:if test="not($simple)">reader.next();</xsl:if>
+                                    if (isReaderMTOMAware(reader)
+                                            &amp;&amp;
+                                            java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
+                                    {
+                                        //MTOM aware reader - get the datahandler directly and put it in the object
+                                        object.set<xsl:value-of select="$javaName"/>(
+                                                (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
+                                    } else {
+                                        if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT &amp;&amp; reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
+                                        {
+                                            java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
+                                            object.set<xsl:value-of select="$javaName"/>(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
+                                            reader.next();
+                                            <xsl:if test="($isType or $anon) and not($simple)">
+                                                reader.next();
+                                            </xsl:if>
+                                        } else if(reader.hasText()) {
+                                            //Do the usual conversion
+                                            java.lang.String content = reader.getText();
+                                            object.set<xsl:value-of select="$javaName"/>(
+                                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
+                                            <xsl:if test="($isType or $anon) and not($simple)">
+                                                reader.next();
+                                            </xsl:if>
+                                        }
+                                    }
+
+                                    <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                        reader.next();
+                                    </xsl:if>
+                                </xsl:when>
+                                <!-- start of the simple types handling -->
+                                <xsl:otherwise>
+                                    <xsl:if test="@nillable">
+                                       if (!"true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                    </xsl:if>
+                                    java.lang.String content = reader.getElementText();
+                                    <xsl:if test="not(enumFacet)">
+                                        <xsl:choose>
+                                            <xsl:when test="$propertyType='javax.xml.namespace.QName'">
+                                            int index = content.indexOf(":");
+                                            java.lang.String prefix ="";
+                                            java.lang.String namespaceuri ="";
+                                            if(index >0){
+                                                 prefix = content.substring(0,index);
+                                                 namespaceuri = reader.getNamespaceURI(prefix);
+                                             }
+                                             object.set<xsl:value-of select="$javaName"/>(
+                                                  org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(content,namespaceuri));
+                                            </xsl:when>
+                                            <xsl:when test="$propertyType='org.apache.axiom.om.OMElement'">
+                                                org.apache.axiom.om.OMFactory fac = org.apache.axiom.om.OMAbstractFactory.getOMFactory();
+                                                org.apache.axiom.om.OMNamespace omNs = fac.createOMNamespace("<xsl:value-of select="$namespace"/>", "");
+                                                org.apache.axiom.om.OMElement _value<xsl:value-of select="$javaName"/> = fac.createOMElement("<xsl:value-of select="$propertyName"/>", omNs);
+                                                _value<xsl:value-of select="$javaName"/>.addChild(fac.createOMText(_value<xsl:value-of select="$javaName"/>, content));
+                                                object.set<xsl:value-of select="$javaName"/>(_value<xsl:value-of select="$javaName"/>);
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                              object.set<xsl:value-of select="$javaName"/>(
+                                        org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(content));
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    </xsl:if>
+                                    <xsl:if test="(enumFacet)">
+                                    object = <xsl:value-of select="$name"/>.fromString(content);
+                                    </xsl:if>
+                                    <xsl:if test="@nillable">
+                                       } else {
+                                           reader.getElementText(); // throw away text nodes if any.
+                                       }
+                                    </xsl:if>
+                                    <xsl:if test="($isType or $anon) and not($simple)">  <!-- This is a subelement property to be consumed -->
+                                        reader.next();
+                                    </xsl:if>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            <xsl:if test="not(enumFacet)">
+                              }  // End of if for expected property start element
+                            </xsl:if>
+                            <xsl:if test="$ordered and $min!=0">
+                                else{
+                                    // A start element we are not expecting indicates an invalid parameter was passed
+                                    throw new java.lang.RuntimeException("Unexpected subelement " + reader.getLocalName());
+                                }
+                            </xsl:if>
+                        </xsl:for-each>
+
+                        <xsl:if test="$ordered">  <!-- pick up trailing cruft after final property before outer endElement and verify no trailing properties -->
+                            while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                                reader.next();
+                            if (reader.isStartElement())
+                                // A start element we are not expecting indicates a trailing invalid property
+                                throw new java.lang.RuntimeException("Unexpected subelement " + reader.getLocalName());
+                        </xsl:if>
+
+                        <xsl:if test="property[not(@attribute)]">  <!-- this if is needed to skip all this when there are no propoerties-->
+                        <xsl:if test="$unordered">
+                          <xsl:if test="not(property/enumFacet)">
+                             else{
+                                        // A start element we are not expecting indicates an invalid parameter was passed
+                                        throw new java.lang.RuntimeException("Unexpected subelement " + reader.getLocalName());
+                             }
+                          </xsl:if>
+                             } else reader.next();  <!-- At neither a start nor an end element, skip it -->
+                            }  // end of while loop
+                        </xsl:if>
+                        </xsl:if>
+
+
+            } catch (javax.xml.stream.XMLStreamException e) {
+                throw new java.lang.Exception(e);
+            }
+
+            return object;
+        }
+
+        }//end of factory class
+
+        <!-- end of template for choice/all -->
+
+        }
+           <!-- end of main template -->
+          </xsl:template>
+
+
+<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-->
+<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-->
+<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-->
+<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-->
+<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-->
+<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-->
+
+
+    <!-- this is the common template -->
+    <xsl:template match="bean[@helperMode]">
+
+        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="choice" select="@choice"/>
+        <xsl:variable name="ordered" select="@ordered"/>
+        <xsl:variable name="unordered" select="not($ordered)"/>  <!-- for convenience -->
+        <xsl:variable name="isType" select="@type"/>
+        <xsl:variable name="anon" select="@anon"/>
+
+        <xsl:variable name="nsuri" select="@nsuri"/>
+        <xsl:variable name="originalName" select="@originalName"/>
+        <xsl:variable name="nsprefix" select="@nsprefix"/>
+        <xsl:variable name="extension" select="@extension"/>
+         <xsl:variable name="mapperClass" select="@mapperClass"/>
+         <xsl:variable name="package" select="@package"/>
+        <xsl:variable name="helpername"><xsl:value-of select="$name"/>Helper</xsl:variable>
+    <!-- write the class header. this should be done only when unwrapped -->
+
+        <xsl:if test="not(not(@unwrapped) or (@skip-write))">
+            /**
+            * <xsl:value-of select="$name"/>.java
+            *
+            * This file was auto-generated from WSDL
+            * by the Apache Axis2 version: #axisVersion# #today#
+            */
+
+            package <xsl:value-of select="$package"/>;
+            /**
+            *  <xsl:value-of select="$name"/> bean class
+            */
+        </xsl:if>
+
+
+    <xsl:choose>
+    <xsl:when test="not(@helper)">
+
+    public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xsl:value-of select="$name"/> <xsl:if test="$extension"> extends <xsl:value-of select="$extension"/></xsl:if>
+        {
+        <xsl:choose>
+            <xsl:when test="@type">/* This type was generated from the piece of schema that had
+                name = <xsl:value-of select="@originalName"/>
+                Namespace URI = <xsl:value-of select="@nsuri"/>
+                Namespace Prefix = <xsl:value-of select="@nsprefix"/>
+                */
+            </xsl:when>
+            <xsl:otherwise>
+                public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(
+                "<xsl:value-of select="@nsuri"/>",
+                "<xsl:value-of select="@originalName"/>",
+                "<xsl:value-of select="@nsprefix"/>");
+
+            </xsl:otherwise>
+        </xsl:choose>
+
+        <xsl:if test="$choice">
+            /** Whenever a new property is set ensure all others are unset
+             *  There can be only one choice and the last one wins
+             */
+            private void clearAllSettingTrackers() {
+            <xsl:for-each select="property">
+                local<xsl:value-of select="@javaname"/>Tracker = false;
+           </xsl:for-each>
+            }
+        </xsl:if>
+
+
+        <xsl:for-each select="property">
+            <!-- Write only the NOT inherited properties-->
+            <xsl:if test="not(@inherited)">
+
+            <xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable>
+            <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+            <xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable>
+
+            <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+            <xsl:variable name="varName">local<xsl:value-of select="$javaName"/></xsl:variable>
+            <xsl:variable name="settingTracker">local<xsl:value-of select="$javaName"/>Tracker</xsl:variable>
+
+
+            /**
+            * field for <xsl:value-of select="$javaName"/>
+            <xsl:if test="@attribute">* This was an Attribute!</xsl:if>
+            <xsl:if test="@array">* This was an Array!</xsl:if>
+            */
+
+            protected <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text><xsl:value-of select="$varName" /> ;
+           <!-- Generate a tracker only if the min occurs is zero, which means if the user does
+                not bother to set that value, we do not send it -->
+           <xsl:if test="$min=0 or $choice">
+           /*  This tracker boolean wil be used to detect whether the user called the set method
+               for this attribute. It will be used to determine whether to include this field
+               in the serialized XML
+           */
+           protected boolean <xsl:value-of select="$settingTracker"/> = false ;
+           </xsl:if>
+
+           /**
+           * Auto generated getter method
+           * @return <xsl:value-of select="$propertyType"/>
+           */
+           public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){
+               return <xsl:value-of select="$varName"/>;
+           }
+
+           <!-- When generating the setters, we have to cater differently for the array!-->
+            <xsl:choose>
+               <xsl:when test="@array">
+                   <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
+
+
+                   <!-- generate the validator Method, this is specifiacally for validating the arrays-->
+                  /**
+                   * validate the array for <xsl:value-of select="$javaName"/>
+                   */
+                  protected void validate<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                     <xsl:if test="not(@unbound)">
+                          if ((param != null) &amp;&amp; (param.length &gt; <xsl:value-of select="@maxOccurs"/>)){
+                            throw new java.lang.RuntimeException();
+                          }
+                      </xsl:if>
+                      <xsl:if test="$min!=0">
+                          if ((param != null) &amp;&amp; (param.length &lt; <xsl:value-of select="$min"/>)){
+                            throw new java.lang.RuntimeException();
+                          }
+                      </xsl:if>
+                  }
+
+
+                 /**
+                  * Auto generated setter method
+                  * @param param <xsl:value-of select="$javaName"/>
+                  */
+                  public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                   <!-- call the validator-->
+                   validate<xsl:value-of select="$javaName"/>(param);
+
+                   <xsl:if test="$choice">
+                       clearAllSettingTrackers();
+                   </xsl:if>
+                   <xsl:if test="$min=0 or $choice">
+                       <!-- the updating of setting tracker for null values should
+                            happen if the attribute is marked as nillable. Else
+                            the user can set a null value and it is never marked
+                            as set
+                       -->
+                      <xsl:choose>
+                           <xsl:when test="@primitive and not(@array)">
+                               // setting the primitive tracker always true
+                               <xsl:value-of select="$settingTracker"/> = true;
+                           </xsl:when>
+                           <xsl:otherwise>
+                               if (param != null){
+                                  //update the setting tracker
+                                  <xsl:value-of select="$settingTracker"/> = true;
+                               } else {
+                                  <xsl:choose>
+                                      <xsl:when test="@nillable">
+                                          <xsl:value-of select="$settingTracker"/> = true;
+                                      </xsl:when>
+                                      <xsl:otherwise>
+                                          <xsl:value-of select="$settingTracker"/> = false;
+                                      </xsl:otherwise>
+                                  </xsl:choose>
+                               }
+                           </xsl:otherwise>
+                        </xsl:choose>
+
+                   </xsl:if>
+                  this.<xsl:value-of select="$varName"/>=param;
+                  }
+
+                   <!-- we special case the 'array' scenario and generate a convenience
+                       method for adding elements one by one to the array. The
+                       current implementation is somewhat inefficient but
+                       gets the job done.Since a primitive cannot be
+                       treated as an object it has to be ignored!
+
+                 -->
+                 <xsl:if test="not(@primitive)">
+                 /**
+                 * Auto generated add method for the array for convenience
+                 * @param param <xsl:value-of select="$basePropertyType"/>
+                 */
+                 public void add<xsl:value-of select="$javaName"/>(<xsl:value-of select="$basePropertyType"/> param){
+                   if (<xsl:value-of select="$varName"/> == null){
+                       <xsl:value-of select="$varName"/> = new <xsl:value-of select="$propertyType"/>{};
+                   }
+
+                    <xsl:if test="$choice">
+                           clearAllSettingTrackers();
+                    </xsl:if>
+                    <xsl:if test="$min=0 or $choice">
+                         //update the setting tracker
+                         <xsl:value-of select="$settingTracker"/> = true;
+                    </xsl:if>
+
+                   java.util.List list =
+                        org.apache.axis2.databinding.utils.ConverterUtil.toList(<xsl:value-of select="$varName"/>);
+                   list.add(param);
+                   this.<xsl:value-of select="$varName"/> =
+                     (<xsl:value-of select="$propertyType"/>)list.toArray(
+                        new <xsl:value-of select="$basePropertyType"/>[list.size()]);
+
+                 }
+                 </xsl:if>
+                     <!-- end of special casing for the array-->
+
+               </xsl:when>
+                <!-- Non array setter method-->
+                <xsl:otherwise>
+                    /**
+                   * Auto generated setter method
+                   * @param param <xsl:value-of select="$javaName"/>
+                   */
+                   public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                    <xsl:if test="$choice">
+                        clearAllSettingTrackers();
+                    </xsl:if>
+                    <xsl:if test="$min=0 or $choice">
+                        <xsl:choose>
+                           <xsl:when test="@primitive and not(@array)">
+                               // setting the primivite tracker to true
+                               <xsl:value-of select="$settingTracker"/> = true;
+                           </xsl:when>
+                           <xsl:otherwise>
+                               if (param != null){
+                                  //update the setting tracker
+                                  <xsl:value-of select="$settingTracker"/> = true;
+                               } else {
+                                  <xsl:choose>
+                                      <xsl:when test="@nillable">
+                                          <xsl:value-of select="$settingTracker"/> = true;
+                                      </xsl:when>
+                                      <xsl:otherwise>
+                                          <xsl:value-of select="$settingTracker"/> = false;
+                                      </xsl:otherwise>
+                                  </xsl:choose>
+                               }
+                           </xsl:otherwise>
+                        </xsl:choose>
+
+                    </xsl:if>
+                   this.<xsl:value-of select="$varName"/>=param;
+                   }
+                </xsl:otherwise>
+            </xsl:choose>
+
+
+             <!-- end of xsl:if for not(@inherited) -->
+            </xsl:if>
+
+        </xsl:for-each>
+
+   }
+    </xsl:when>
+    <xsl:otherwise>
+    <!--  Start of helper generation part of the template-->
+public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xsl:value-of select="$helpername"/> {
+
+     <!-- get OMElement methods that allows direct writing. generated inside the helper class-->
+     <xsl:variable name="fullyQualifiedName"><xsl:value-of select="$package"/>.<xsl:value-of select="$name"/></xsl:variable>
+     <xsl:variable name="fullyQualifiedHelperName"><xsl:value-of select="$package"/>.<xsl:value-of select="$helpername"/></xsl:variable>
+     /**
+     *
+     * @param parentQName
+     * @param factory
+     * @return org.apache.axiom.om.OMElement
+     */
+    public static org.apache.axiom.om.OMElement getOMElement(
+            final <xsl:value-of select="$fullyQualifiedName"/> bean,
+            final javax.xml.namespace.QName parentQName,
+            final org.apache.axiom.om.OMFactory factory){
+
+        org.apache.axiom.om.OMDataSource dataSource =
+                       new org.apache.axis2.databinding.ADBHelperDataSource(bean,parentQName,"<xsl:value-of select="$fullyQualifiedHelperName"/>"){
+                           public void serialize(
+                                  javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+
+            <xsl:value-of select="$fullyQualifiedName"/> typedBean =
+                               (<xsl:value-of select="$fullyQualifiedName"/>)bean;
+            <xsl:choose>
+            <xsl:when test="@type or @anon">
+                <!-- For a type write the passed in QName first-->
+                xmlWriter.writeStartElement(parentQName.getNamespaceURI(),
+                                            parentQName.getLocalPart());
+
+               <!-- write the type attribute if needed -->
+               <xsl:if test="$extension">
+               writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
+                       registerPrefix(xmlWriter,"<xsl:value-of select="$nsuri"/>")+":<xsl:value-of select="$originalName"/>",
+                       xmlWriter);
+               </xsl:if>
+                <!--First serialize the attributes!-->
+                <xsl:for-each select="property[@attribute]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">typedBean.local<xsl:value-of select="@javaname"/></xsl:variable>
+                     <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:choose>
+                        <!-- Note - It is assumed that any attributes are OMAttributes-->
+                        <xsl:when test="@any and not(@array)">
+                            writeAttribute(<xsl:value-of select="$varName"/>.getNamespace().getName(),
+                                                     <xsl:value-of select="$varName"/>.getLocalName(),
+                                                     <xsl:value-of select="$varName"/>.getAttributeValue(),xmlWriter);
+                        </xsl:when>
+                        <xsl:when test="@any and @array">
+                             if (<xsl:value-of select="$varName"/> != null) {
+                                 for (int i=0;i &lt;<xsl:value-of select="$varName"/>.length;i++){
+                                     writeAttribute(<xsl:value-of select="$varName"/>[i].getNamespace().getName(),
+                                                    <xsl:value-of select="$varName"/>[i].getLocalName(),
+                                                    <xsl:value-of select="$varName"/>[i].getAttributeValue(),xmlWriter);
+                                     }
+                             }
+                        </xsl:when>
+                        <!-- there can never be attribute arrays in the normal case-->
+                        <xsl:when test="@optional">
+                             // optional attribute <xsl:value-of select="$propertyName"/>
+                             try {
+                                writeAttribute("<xsl:value-of select="$namespace"/>",
+                                               "<xsl:value-of select="$propertyName"/>",
+                                               org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>), xmlWriter);
+                            } catch (NullPointerException e) {
+                                // If <xsl:value-of select="$varName"/> was null
+                                // it can not be serialized.
+                            }
+                        </xsl:when>
+                        <xsl:otherwise>
+                             writeAttribute("<xsl:value-of select="$namespace"/>",
+                                                     "<xsl:value-of select="$propertyName"/>",
+                                                      org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>),xmlWriter);
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:for-each>
+
+                <!-- Now serialize the elements-->
+                <xsl:for-each select="property[not(@attribute)]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">typedBean.local<xsl:value-of select="@javaname"/></xsl:variable>
+                    <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+                    <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:variable name="settingTracker">local<xsl:value-of select="@javaname"/>Tracker</xsl:variable>
+
+
+                    <xsl:if test="$min=0 or $choice"> if (<xsl:value-of select="$settingTracker"/>){</xsl:if>
+                    <xsl:choose>
+                        <xsl:when test="@ours and not(@array) and not(@default)">
+                            <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                       xmlWriter.writeStartElement("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>");
+                                      // write the nil attribute
+                                      writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                       xmlWriter.writeEndElement();
+                                    }else{
+                                          <xsl:value-of select="@type"/>Helper.getOMElement(
+                                            <xsl:value-of select="$varName"/>,
+                                          new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                        factory).serialize(xmlWriter);
+                                    }
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+
+                                            <xsl:value-of select="@type"/>Helper.getOMElement(
+                                            <xsl:value-of select="$varName"/>,
+                                            new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                            factory).serialize(xmlWriter);
+
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <xsl:when test="@ours and @array and not(@default)">
+                             <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    // this property is nillable
+                                    if (<xsl:value-of select="$varName"/>!=null){
+                                    <!--this bracket needs to be closed!-->
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                </xsl:otherwise>
+                            </xsl:choose>
+
+                            for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                    <xsl:value-of select="@type"/>Helper.getOMElement(
+                                    <xsl:value-of select="$varName"/>[i],
+                                    new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                    factory).serialize(xmlWriter);
+                            }
+                            <!--we've opened a bracket for the nulls - fix it here-->
+                            <xsl:if test="@nillable">}</xsl:if>
+                        </xsl:when>
+
+                         <xsl:when test="@default and @array">
+                            <!-- Note - Assumed to be OMElement-->
+                            <xsl:choose>
+                               <xsl:when test="@nillable">
+                                    // this property is nillable
+                                    if (<xsl:value-of select="$varName"/>!=null){
+                                    <!--this bracket needs to be closed!-->
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                </xsl:otherwise>
+                            </xsl:choose>
+
+                              for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                  <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
+                              }
+
+                            <!--we've opened a bracket for the nulls - fix it here-->
+                            <xsl:if test="@nillable">}</xsl:if>
+
+                        </xsl:when>
+
+                        <xsl:when test="@default and not(@array)">
+                            <!-- Note - Assumed to be OMElement-->
+                            <xsl:choose>
+                             <xsl:when test="@nillable">
+                                    // this property is nillable
+                                    if (<xsl:value-of select="$varName"/>!=null){
+                                    <!--this bracket needs to be closed!-->
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                </xsl:otherwise>
+                             </xsl:choose>
+                             <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                             <xsl:if test="@nillable">}</xsl:if>
+                        </xsl:when>
+                        <!-- handle non ADB arrays - Not any however -->
+                        <xsl:when test="@array and not(@any)">
+                             <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    // this property is nillable
+                                    if (<xsl:value-of select="$varName"/>!=null){
+                                    <!--this bracket needs to be closed!-->
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                              xmlWriter.writeStartElement("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>");
+                              if (<xsl:value-of select="$varName"/>[i]==null){
+                                  // write the nil attribute
+                                  writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                              }else{
+                                 xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+                              }
+                              xmlWriter.writeEndElement();
+                            }
+                            <!--we've opened a bracket for the nulls - fix it here-->
+                            <xsl:if test="@nillable">}</xsl:if>
+                        </xsl:when>
+
+                         <!-- handle non ADB arrays  - Any case  - any may not be
+                         nillable -->
+                        <xsl:when test="@array and @any">
+                            <!-- Note - Assumed to be OMElement-->
+                            for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                              <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
+                            }
+                        </xsl:when>
+                        <!-- handle any - non array case-->
+                         <xsl:when test="@any">
+                            <!-- Note - Assumed to be OMElement-->
+                            <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                        </xsl:when>
+
+                        <!-- handle all other cases including the binary case -->
+                         <xsl:otherwise>
+                            xmlWriter.writeStartElement("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>");
+                            xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                            xmlWriter.writeEndElement();
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:if test="$min=0 or $choice">}</xsl:if>
+
+                </xsl:for-each>
+                   <!-- write the end element for the type-->
+               xmlWriter.writeEndElement();
+            <!-- end of when for type & anon -->
+            </xsl:when>
+
+
+            <!-- Not a type and not anon. So it better be only one inclusion-->
+            <xsl:otherwise>
+                <!-- if the element is associated with a type, then its gonna be only one -->
+                //We can safely assume an element has only one type associated with it
+                <xsl:variable name="varName">typedBean.local<xsl:value-of select="property/@javaname"/></xsl:variable>
+                <xsl:variable name="nillable" select="property/@nillable"/>
+                <xsl:variable name="primitive" select="property/@primitive"/>
+                <xsl:variable name="type" select="property/@type"/>
+
+                <xsl:choose>
+                    <!-- This better be only one!!-->
+                    <xsl:when test="property/@ours">
+                        <xsl:choose>
+                            <xsl:when test="$nillable">
+                                      if (<xsl:value-of select="$varName"/>==null){
+                                          xmlWriter.writeStartElement("<xsl:value-of select="property/@namespace"/>","<xsl:value-of select="property/@name"/>");
+
+                                         // write the nil attribute
+                                        writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+
+                                        xmlWriter.writeEndElement();
+                                       }else{
+                                         <xsl:value-of select="$type"/>Helper.getOMElement(
+                                         <xsl:value-of select="$varName"/>,
+                                         <xsl:value-of select="$fullyQualifiedName"/>.MY_QNAME,
+                                         factory).serialize(xmlWriter);
+                                       }
+                            </xsl:when>
+                            <xsl:otherwise>
+                                 if (<xsl:value-of select="$varName"/>==null){
+                                   throw new RuntimeException("Property cannot be null!");
+                                 }
+                                <xsl:value-of select="$type"/>Helper.getOMElement(
+                                         <xsl:value-of select="$varName"/>,
+                                         <xsl:value-of select="$fullyQualifiedName"/>.MY_QNAME,
+                                         factory).serialize(xmlWriter);
+                            </xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:when>
+                    <!-- end of ours block-->
+                    <xsl:otherwise>
+                       xmlWriter.writeStartElement(
+                       "<xsl:value-of select="property/@namespace"/>","<xsl:value-of select="property/@name"/>");
+                       xmlWriter.writeCharacters(
+                        org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                       xmlWriter.writeEndElement();
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:otherwise>
+        </xsl:choose>
+
+        }
+
+         /**
+          * Util method to write an attribute with the ns prefix
+          */
+          private void writeAttribute(java.lang.String prefix,java.lang.String namespace,java.lang.String attName,
+                                      java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
+              if (xmlWriter.getPrefix(namespace) == null) {
+                       xmlWriter.writeNamespace(prefix, namespace);
+                       xmlWriter.setPrefix(prefix, namespace);
+
+              }
+
+              xmlWriter.writeAttribute(namespace,attName,attValue);
+
+         }
+
+          /**
+          * Util method to write an attribute without the ns prefix
+          */
+          private void writeAttribute(java.lang.String namespace,java.lang.String attName,
+                                      java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
+
+    	  	  if (namespace.equals(""))
+        	  {
+        		  xmlWriter.writeAttribute(attName,attValue);
+        	  }
+        	  else
+        	  {
+                  registerPrefix(xmlWriter, namespace);
+                  xmlWriter.writeAttribute(namespace,attName,attValue);
+              }
+          }
+
+         /**
+         * Register a namespace prefix
+         */
+         private java.lang.String registerPrefix(javax.xml.stream.XMLStreamWriter xmlWriter, java.lang.String namespace) throws javax.xml.stream.XMLStreamException {
+                java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+                if (prefix == null) {
+                    prefix = createPrefix();
+
+                    while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) {
+                        prefix = createPrefix();
+                    }
+
+                    xmlWriter.writeNamespace(prefix, namespace);
+                    xmlWriter.setPrefix(prefix, namespace);
+                }
+
+                return prefix;
+            }
+
+         /**
+          * Create a prefix
+          */
+          private java.lang.String createPrefix() {
+                return "ns" + (int)Math.random();
+          }
+        };
+
+        <xsl:choose>
+            <xsl:when test="@type">
+               return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
+               parentQName,factory,dataSource);
+            </xsl:when>
+            <xsl:otherwise>
+               //ignore the QName passed in - we send only OUR QName!
+               return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
+               <xsl:value-of select="$fullyQualifiedName"/>.MY_QNAME,factory,dataSource);
+            </xsl:otherwise>
+       </xsl:choose>
+    }
+
+
+
+
+        /**
+        * static method to create the object
+        * Precondition:  If this object is an element, the current or next start element starts this object and any intervening reader events are ignorable
+        *                If this object is not an element, it is a complex type and the reader is at the event just after the outer start element
+        * Postcondition: If this object is an element, the reader is positioned at its end element
+        *                If this object is a complex type, the reader is positioned at the end element of its outer element
+        */
+        public static <xsl:value-of select="$fullyQualifiedName"/> parse(javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{
+            <xsl:value-of select="$fullyQualifiedName"/> object = new <xsl:value-of select="$fullyQualifiedName"/>();
+            int event;
+            try {
+                <!-- Advance to our start element, or if we are a complex type, to our first property start element or the outer end element if no properties -->
+                while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                    reader.next();
+
+                <xsl:if test="@nillable">
+                   if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                         // Skip the element and report the null value.  It cannot have subelements.
+                         while (!reader.isEndElement())
+                             reader.next();
+                         return null;
+                   }
+                </xsl:if>
+
+                if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","type")!=null){
+                  java.lang.String fullTypeName = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance",
+                        "type");
+                  if (fullTypeName!=null){
+                    java.lang.String nsPrefix = fullTypeName.substring(0,fullTypeName.indexOf(":"));
+                    nsPrefix = nsPrefix==null?"":nsPrefix;
+
+                    java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":")+1);
+
+                     if (!"<xsl:value-of select="$originalName"/>".equals(type)){
+                        //find namespace for the prefix
+                        java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
+                        return (<xsl:value-of select="$name"/>)<xsl:value-of select="$mapperClass"/>.getTypeObject(
+                             nsUri,type,reader);
+                      }
+
+                  }
+
+                }
+                <!-- populate attributes here!!!. The attributes are part of an element, not part of a type -->
+                <xsl:for-each select="property[@attribute]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="propertyType" select="@type"/>
+                    <xsl:variable name="shortTypeNameUncapped"  select="@shorttypename"/>
+                    <xsl:variable name="shortTypeName"
+                    select="concat(translate( substring($shortTypeNameUncapped, 1, 1 ),'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($shortTypeNameUncapped, 2, string-length($shortTypeNameUncapped)))" />
+                    <xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable>
+                    <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:variable name="attribName">tempAttrib<xsl:value-of select="$propertyName"/></xsl:variable>
+
+                    java.lang.String <xsl:value-of select="$attribName"/> =
+                      reader.getAttributeValue("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>");
+                   if (<xsl:value-of select="$attribName"/>!=null){
+                    <xsl:choose>
+                        <xsl:when test="$propertyType='javax.xml.namespace.QName'">
+                            int index = <xsl:value-of select="$attribName"/>.indexOf(":");
+                            java.lang.String prefix ="";
+                            java.lang.String namespaceuri ="";
+                            if(index >0){
+                                 prefix = <xsl:value-of select="$attribName"/>.substring(0,index);
+                                 namespaceuri = reader.getNamespaceURI(prefix);
+                             }
+                             object.set<xsl:value-of select="$javaName"/>(
+                                  org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(<xsl:value-of select="$attribName"/>,namespaceuri));
+                        </xsl:when>
+                        <xsl:otherwise>
+                         object.set<xsl:value-of select="$javaName"/>(
+                           org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(
+                                <xsl:value-of select="$attribName"/>));
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    }
+
+                </xsl:for-each>
+
+                <xsl:if test="$isType or $anon">
+                    <!-- Skip the outer start element in order to process the subelements. -->
+                    reader.next();
+                </xsl:if>
+                      <!-- If we are not a type and not an element with anonymous type, then we are an element with one property for our named type. -->
+                      <!-- Our single named-type property applies to our entire outer element, so don't skip it. -->
+                <!-- First loop creates arrayLists for handling arrays -->
+                <xsl:for-each select="property[not(@attribute)]">
+                    <xsl:if test="@array">
+                        java.util.ArrayList list<xsl:value-of select="position()"/> = new java.util.ArrayList();
+                    </xsl:if>
+                </xsl:for-each>
+
+                <xsl:if test="property[not(@attribute)]">
+                <xsl:if test="$unordered">   <!-- Properties can be in any order -->
+                while(!reader.isEndElement()) {
+                    if (reader.isStartElement()){
+                </xsl:if>
+                </xsl:if>
+
+                        <!-- Now reloop and populate the code -->
+                        <xsl:for-each select="property[not(@attribute)]">
+                            <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                            <xsl:variable name="propertyType"><xsl:value-of select="@type"/></xsl:variable>
+                            <xsl:variable name="shortTypeNameUncapped"  select="@shorttypename"/>
+                            <xsl:variable name="shortTypeName"
+                               select="concat(translate( substring($shortTypeNameUncapped, 1, 1 ),'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($shortTypeNameUncapped, 2, string-length($shortTypeNameUncapped)))" />
+                            <xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable>
+                            <xsl:variable name="listName">list<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="loopBoolName">loopDone<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="startQname">startQname<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="stateMachineName">stateMachine<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="builderName">builder<xsl:value-of select="position()"/></xsl:variable>
+                            <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
+                            <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                            <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+
+                            <xsl:variable name="propQName">new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>")</xsl:variable>
+
+                           <xsl:choose>
+                                <xsl:when test="$unordered">  <!-- One property per iteration if unordered -->
+                                    <xsl:if test="position()>1">
+                                        else
+                                    </xsl:if>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <!-- If sequence, advance to start of next property or to end of outer element -->
+                                    while (!reader.isStartElement() &amp;&amp; !reader.isEndElement()) reader.next();
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            if (reader.isStartElement() &amp;&amp; <xsl:value-of select="$propQName"/>.equals(reader.getName())){
+                            <xsl:choose>
+                                <xsl:when test="@array">
+                                    <!-- We must be a named type or element with anonymous type. -->
+                                    <!-- Elements with a named type have a single simple (non-array) property for their type -->
+                                    // Process the array and step past its final element's end.
+                                    <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
+                                    <xsl:choose>
+                                        <xsl:when test="@ours">
+                                            <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>Helper.parse(reader));
+                                            //loop until we find a start element that is not part of this array
+                                            boolean <xsl:value-of select="$loopBoolName"/> = false;
+                                            while(!<xsl:value-of select="$loopBoolName"/>){
+                                                // We should be at the end element, but make sure
+                                                while (!reader.isEndElement())
+                                                    reader.next();
+                                                // Step out of this element
+                                                reader.next();
+                                                // Step to next element event.
+                                                while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                                                    reader.next();
+                                                if (reader.isEndElement()){
+                                                    //two continuous end elements means we are exiting the xml structure
+                                                    <xsl:value-of select="$loopBoolName"/> = true;
+                                                } else {
+                                                    if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){
+                                                        <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>Helper.parse(reader));
+                                                    }else{
+                                                        <xsl:value-of select="$loopBoolName"/> = true;
+                                                    }
+                                                }
+                                            }
+                                            // call the converter utility  to convert and set the array
+                                            object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                    <xsl:value-of select="$basePropertyType"/>.class,
+                                                    <xsl:value-of select="$listName"/>));
+                                        </xsl:when>
+
+                                        <!--Let's handle xs:any here-->
+                                        <xsl:when test="$shortTypeName='OMElement'">
+                                           boolean <xsl:value-of select="$loopBoolName"/>=false;
+
+                                             while (!<xsl:value-of select="$loopBoolName"/>){
+                                                 event = reader.getEventType();
+                                                 if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
+
+                                                      <!-- if-block that handles nillable -->
+                                                      <xsl:if test="@nillable">
+                                                          if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                              <xsl:value-of select="$listName"/>.add(null);
+                                                          }else{
+                                                      </xsl:if>
+
+                                                      // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
+                                                      org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/>
+                                                         = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                                              new org.apache.axis2.util.StreamWrapper(reader), reader.getName());
+
+                                                       <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement());
+                                                       <xsl:if test="@nillable">}</xsl:if>
+                                                 } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else{
+                                                     reader.next();
+                                                 }
+
+                                             }
+
+                                             object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                 org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                     <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>));
+                                        </xsl:when>
+
+
+                                        <xsl:otherwise>
+                                            <xsl:choose>
+
+                                        <!-- End of Array handling of ADB classes -->
+                                        <xsl:when test="@default">
+                                             boolean <xsl:value-of select="$loopBoolName"/>=false;
+                                             javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName(
+                                                    "<xsl:value-of select="$namespace"/>",
+                                                    "<xsl:value-of select="$propertyName"/>");
+
+                                             while (!<xsl:value-of select="$loopBoolName"/>){
+                                                 event = reader.getEventType();
+                                                 if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event
+                                                         &amp;&amp; <xsl:value-of select="$startQname"/>.equals(reader.getName())){
+
+                                                      <!-- if-block that handles nillable -->
+                                                      <xsl:if test="@nillable">
+                                                          if ("true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                                              <xsl:value-of select="$listName"/>.add(null);
+                                                          }else{
+                                                      </xsl:if>
+
+                                                      // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
+                                                      org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/>
+                                                         = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                                              new org.apache.axis2.util.StreamWrapper(reader), <xsl:value-of select="$startQname"/>);
+
+                                                       <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement());
+                                                       <xsl:if test="@nillable">}</xsl:if>
+                                                 } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event &amp;&amp;
+                                                            !<xsl:value-of select="$startQname"/>.equals(reader.getName())){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event &amp;&amp;
+                                                           !<xsl:value-of select="$startQname"/>.equals(reader.getName())){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){
+                                                     <xsl:value-of select="$loopBoolName"/> = true;
+                                                 }else{
+                                                     reader.next();
+                                                 }
+
+                                             }
+
+                                             object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                 org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                     <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>));
+
+                                        </xsl:when>
+                                        <!-- End of Array handling of default class - that is the OMElement -->
+                                        <xsl:otherwise>
+                                            <xsl:value-of select="$listName"/>.add(reader.getElementText());
+                                            //loop until we find a start element that is not part of this array
+                                            boolean <xsl:value-of select="$loopBoolName"/> = false;
+                                            while(!<xsl:value-of select="$loopBoolName"/>){
+                                                // Ensure we are at the EndElement
+                                                while (!reader.isEndElement()){
+                                                    reader.next();
+                                                }
+                                                // Step out of this element
+                                                reader.next();
+                                                // Step to next element event.
+                                                while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                                                    reader.next();
+                                                if (reader.isEndElement()){
+                                                    //two continuous end elements means we are exiting the xml structure
+                                                    <xsl:value-of select="$loopBoolName"/> = true;
+                                                } else {
+                                                    if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){
+                                                        <xsl:value-of select="$listName"/>.add(reader.getElementText());
+                                                    }else{
+                                                        <xsl:value-of select="$loopBoolName"/> = true;
+                                                    }
+                                                }
+                                            }
+                                            // call the converter utility  to convert and set the array
+                                            object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>)
+                                                org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
+                                                    <xsl:value-of select="$basePropertyType"/>.class,
+                                                    <xsl:value-of select="$listName"/>));
+                                        </xsl:otherwise>
+                                    </xsl:choose>
+
+                                    </xsl:otherwise>
+                                    </xsl:choose>
+                                </xsl:when>
+                                <xsl:when test="@ours">
+                                    object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/>Helper.parse(reader));
+                                    <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                        reader.next();
+                                    </xsl:if>
+                                </xsl:when>
+                                <!-- start of any handling. Any can also be @default so we need to handle the any case before default! -->
+                                <xsl:when test="@any">
+                                    <!--No concerns of being nillable here. if it's ours and if the nillable attribute was present
+                                        we would have outputted a null already-->
+                                     <!--This can be any element and we may not know the name. so we pick the name of the element from the parser-->
+                                     //use the QName from the parser as the name for the builder
+                                     javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = reader.getName();
+
+                                     // We need to wrap the reader so that it produces a fake START_DOCUMENT event
+                                     // this is needed by the builder classes
+                                     org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
+                                         new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                             new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
+                                     object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement());
+                                     <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                         reader.next();
+                                     </xsl:if>
+                                </xsl:when>
+                                <!-- end of adb type handling code -->
+                                <!-- start of OMelement handling -->
+                                 <xsl:when test="@default">
+                                     boolean <xsl:value-of select="$loopBoolName"/> = false;
+                                     javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName(
+                                                                         "<xsl:value-of select="$namespace"/>",
+                                                                         "<xsl:value-of select="$propertyName"/>");
+
+                                     while(!<xsl:value-of select="$loopBoolName"/>){
+                                         if (reader.isStartElement() &amp;&amp; <xsl:value-of select="$startQname"/>.equals(reader.getName())){
+                                             <xsl:value-of select="$loopBoolName"/> = true;
+                                         }else{
+                                             reader.next();
+                                         }
+                                     }
+
+                                     <!-- todo  put the code here for nillable -->
+                                     // We need to wrap the reader so that it produces a fake START_DOCUEMENT event
+                                     // this is needed by the builder classes
+                                     org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> =
+                                         new org.apache.axis2.databinding.utils.NamedStaxOMBuilder(
+                                             new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>);
+                                     object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement());
+                                     <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                         reader.next();
+                                     </xsl:if>
+                                </xsl:when>
+                                <!-- end of OMelement handling -->
+                                <!-- start of the simple types handling for binary content-->
+                                <xsl:when test="@binary">
+                                    if (isReaderMTOMAware(reader)
+                                            &amp;&amp;
+                                            java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY)))
+                                    {
+                                        //MTOM aware reader - get the datahandler directly and put it in the object
+                                        object.set<xsl:value-of select="$javaName"/>(
+                                                (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER));
+                                    } else {
+                                        if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT &amp;&amp; reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE)))
+                                        {
+                                            java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8");
+                                            object.set<xsl:value-of select="$javaName"/>(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id));
+                                            reader.next();
+                                        } else if(reader.hasText()) {
+                                            //Do the usual conversion
+                                            java.lang.String content = reader.getText();
+                                            object.set<xsl:value-of select="$javaName"/>(
+                                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content));
+                                        }
+                                    }
+                                    <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                        reader.next();
+                                    </xsl:if>
+                                </xsl:when>
+                                <!-- start of the simple types handling -->
+                                <xsl:otherwise>
+                                    <xsl:if test="@nillable">
+                                       if (!"true".equals(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"))){
+                                    </xsl:if>
+                                    java.lang.String content = reader.getElementText();
+                                    <xsl:choose>
+                                        <xsl:when test="$propertyType='javax.xml.namespace.QName'">
+                                            int index = content.indexOf(":");
+                                            java.lang.String prefix ="";
+                                            java.lang.String namespaceuri ="";
+                                            if(index >0){
+                                                 prefix = content.substring(0,index);
+                                                 namespaceuri = reader.getNamespaceURI(prefix);
+                                             }
+                                             object.set<xsl:value-of select="$javaName"/>(
+                                                  org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(content,namespaceuri));
+                                        </xsl:when>
+                                        <xsl:when test="$propertyType='org.apache.axiom.om.OMElement'">
+                                            org.apache.axiom.om.OMFactory fac = org.apache.axiom.om.OMAbstractFactory.getOMFactory();
+                                            org.apache.axiom.om.OMNamespace omNs = fac.createOMNamespace("<xsl:value-of select="$namespace"/>", "");
+                                            org.apache.axiom.om.OMElement _value<xsl:value-of select="$javaName"/> = fac.createOMElement("<xsl:value-of select="$propertyName"/>", omNs);
+                                            _value<xsl:value-of select="$javaName"/>.addChild(fac.createOMText(_value<xsl:value-of select="$javaName"/>, content));
+                                            object.set<xsl:value-of select="$javaName"/>(_value<xsl:value-of select="$javaName"/>);
+                                        </xsl:when>
+                                        <xsl:otherwise>
+                                              object.set<xsl:value-of select="$javaName"/>(
+                                        org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(content));
+                                        </xsl:otherwise>
+                                    </xsl:choose>
+                                    <xsl:if test="@nillable">
+                                        } else {
+                                            reader.getElementText(); // throw away text nodes if any.
+                                        }
+                                    </xsl:if>
+
+                                    <xsl:if test="$isType or $anon">  <!-- This is a subelement property to be consumed -->
+                                        reader.next();
+                                    </xsl:if>
+                                </xsl:otherwise>
+                            </xsl:choose>
+
+                              }  // End of if for expected property start element
+
+                            <xsl:if test="$ordered and $min!=0">
+                                else{
+                                    // A start element we are not expecting indicates an invalid parameter was passed
+                                    throw new java.lang.RuntimeException("Unexpected subelement " + reader.getLocalName());
+                                }
+                            </xsl:if>
+                        </xsl:for-each>
+
+                        <xsl:if test="$ordered">  <!-- pick up trailing cruft after final property before outer endElement and verify no trailing properties -->
+                            while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                                reader.next();
+                            if (reader.isStartElement())
+                                // A start element we are not expecting indicates a trailing invalid property
+                                throw new java.lang.RuntimeException("Unexpected subelement " + reader.getLocalName());
+                        </xsl:if>
+
+                        <xsl:if test="property[not(@attribute)]">  <!-- this if is needed to skip all this when there are no propoerties-->
+                        <xsl:if test="$unordered">
+                             else{
+                                        // A start element we are not expecting indicates an invalid parameter was passed
+                                        throw new java.lang.RuntimeException("Unexpected subelement " + reader.getLocalName());
+                             }
+                             } else reader.next();  <!-- At neither a start nor an end element, skip it -->
+                            }  // end of while loop
+                            </xsl:if>
+                          </xsl:if>
+
+
+            } catch (javax.xml.stream.XMLStreamException e) {
+                throw new java.lang.Exception(e);
+            }
+
+            return object;
+        }
+
+        /**
+        * isReaderMTOMAware
+        * @return true if the reader supports MTOM
+        */
+      public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
+           boolean isReaderMTOMAware = false;
+           <!-- workaround for the issues in the wstx reader!-->
+           try{
+             isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
+           }catch(java.lang.IllegalArgumentException e){
+             isReaderMTOMAware = false;
+           }
+           return isReaderMTOMAware;
+      }
+
+     public static javax.xml.stream.XMLStreamReader getPullParser(java.lang.Object beanObject, javax.xml.namespace.QName qName){
+
+        <xsl:value-of select="@package"/>.<xsl:value-of select="@name"/> bean =
+         (<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>)beanObject;
+
+        <xsl:choose>
+            <xsl:when test="@type or @anon">
+                 java.util.ArrayList elementList = new java.util.ArrayList();
+                 java.util.ArrayList attribList = new java.util.ArrayList();
+
+                <xsl:for-each select="property[not(@attribute)]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">local<xsl:value-of select="@javaname"/></xsl:variable>
+                    <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+                    <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:variable name="settingTracker">local<xsl:value-of select="@javaname"/>Tracker</xsl:variable>
+
+
+                    <xsl:if test="$min=0 or $choice"> if (<xsl:value-of select="$settingTracker"/>){</xsl:if>
+                    <xsl:choose>
+                        <xsl:when test="(@ours or @default) and not(@array)">
+                            elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                            <!-- Arraylist can handle null's -->
+                            <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    elementList.add(bean.<xsl:value-of select="$varName"/>==null?null:
+                                    bean.<xsl:value-of select="$varName"/>);
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (bean.<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                    elementList.add(bean.<xsl:value-of select="$varName"/>);
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <xsl:when test="(@ours or @default) and @array">
+                             <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    // this property is nillable
+                                    if (bean.<xsl:value-of select="$varName"/>!=null){
+                                    <!--this barcket needs to be closed!-->
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (bean.<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            for (int i = 0;i &lt; bean.<xsl:value-of select="$varName"/>.length;i++){
+                              elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                               elementList.add(bean.<xsl:value-of select="$varName"/>[i]);
+                            }
+                            <!--we've opened a bracket for the nulls - fix it here-->
+                            <xsl:if test="@nillable">}</xsl:if>
+                        </xsl:when>
+                        <!-- handle non ADB arrays - Not any however -->
+                        <xsl:when test="@array and not(@any)">
+                             <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    // this property is nillable
+                                    if (bean.<xsl:value-of select="$varName"/>!=null){
+                                    <!--this bracket needs to be closed!-->
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (bean.<xsl:value-of select="$varName"/>==null){
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            for (int i = 0;i &lt; bean.<xsl:value-of select="$varName"/>.length;i++){
+                              elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                              elementList.add(
+                              org.apache.axis2.databinding.utils.ConverterUtil.convertToString(bean.<xsl:value-of select="$varName"/>[i]));
+                            }
+                            <!--we've opened a bracket for the nulls - fix it here-->
+                            <xsl:if test="@nillable">}</xsl:if>
+                        </xsl:when>
+
+                         <!-- handle non ADB arrays  - Any case  - any may not be
+                         nillable -->
+                        <xsl:when test="@array and @any">
+                            for (int i = 0;i &lt; bean.<xsl:value-of select="$varName"/>.length;i++){
+                              elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                              elementList.add(
+                              org.apache.axis2.databinding.utils.ConverterUtil.convertToString(bean.<xsl:value-of select="$varName"/>[i]));
+                            }
+                            <!--we've opened a bracket for the nulls - fix it here-->
+                        </xsl:when>
+                        <!-- handle any - non array case-->
+                         <xsl:when test="@any">
+                            elementList.add(org.apache.axis2.databinding.utils.Constants.OM_ELEMENT_KEY);
+                            elementList.add(bean.<xsl:value-of select="$varName"/>);
+                        </xsl:when>
+                        <!-- handle binary - Since it is a Datahandler, we can just add it to the list
+                          and the ADB pullparser would handle it right-->
+                         <xsl:when test="@binary">
+                            elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                            elementList.add(bean.<xsl:value-of select="$varName"/>);
+                        </xsl:when>
+                        <!-- the usual case!!!!-->
+                        <xsl:otherwise>
+                             elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>",
+                                                                      "<xsl:value-of select="$propertyName"/>"));
+                            <xsl:choose>
+                                <xsl:when test="@nillable and not(@primitive)">
+                                    elementList.add(bean.<xsl:value-of select="$varName"/>==null?null:
+                                     org.apache.axis2.databinding.utils.ConverterUtil.convertToString(bean.<xsl:value-of select="$varName"/>));
+                                </xsl:when>
+                                <xsl:otherwise>
+                                elementList.add(
+                                   org.apache.axis2.databinding.utils.ConverterUtil.convertToString(bean.<xsl:value-of select="$varName"/>));
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:if test="$min=0 or $choice">}</xsl:if>
+                </xsl:for-each>
+
+                <xsl:for-each select="property[@attribute]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">local<xsl:value-of select="@javaname"/></xsl:variable>
+                     <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:choose>
+                        <xsl:when test="@any and not(@array)">
+                            attribList.add(org.apache.axis2.databinding.utils.Constants.OM_ATTRIBUTE_KEY);
+                            attribList.add(bean.<xsl:value-of select="$varName"/>);
+                        </xsl:when>
+                         <xsl:when test="@any and @array">
+                             for (int i=0;i &lt;bean.<xsl:value-of select="$varName"/>.length;i++){
+                               attribList.add(org.apache.axis2.databinding.utils.Constants.OM_ATTRIBUTE_KEY);
+                               attribList.add(bean.<xsl:value-of select="$varName"/>[i]);
+                             }
+                         </xsl:when>
+                        <xsl:otherwise>
+                            attribList.add(
+                            new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"));
+                            attribList.add(
+                            org.apache.axis2.databinding.utils.ConverterUtil.convertToString(bean.<xsl:value-of select="$varName"/>));
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:for-each>
+
+                return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(), attribList.toArray());
+            <!-- end of when for type & anon -->
+            </xsl:when>
+            <!-- Not a type and not anon. So it better be only one inclusion-->
+            <xsl:otherwise>
+                <!-- if the element is associated with a type, then its gonna be only one -->
+                //We can safely assume an element has only one type associated with it
+                <xsl:variable name="varName">local<xsl:value-of select="property/@javaname"/></xsl:variable>
+                <xsl:variable name="nillable" select="property/@nillable"></xsl:variable>
+                <xsl:variable name="primitive" select="property/@primitive"></xsl:variable>
+
+                <xsl:choose>
+                    <!-- This better be only one!!-->
+                    <xsl:when test="property/@ours">
+
+                        <xsl:choose>
+                            <xsl:when test="$nillable">
+                                if (bean.<xsl:value-of select="$varName"/>==null){
+                                   return new org.apache.axis2.databinding.utils.reader.NullXMLStreamReader(bean.MY_QNAME);
+                                }else{
+                                   return <xsl:value-of select="property/@type"/>Helper.getPullParser(bean.<xsl:value-of select="$varName"/>, bean.MY_QNAME);
+                                }
+                            </xsl:when>
+                            <xsl:otherwise>return <xsl:value-of select="property/@type"/>Helper.getPullParser(bean.<xsl:value-of select="$varName"/>, bean.MY_QNAME);</xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:choose>
+                            <xsl:when test="$nillable and not($primitive)">
+                                if (bean.<xsl:value-of select="$varName"/>==null){
+                                      return new org.apache.axis2.databinding.utils.reader.NullXMLStreamReader(bean.MY_QNAME);
+                                }else{
+                                   return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(bean.MY_QNAME,
+                                       new java.lang.Object[]{
+                                      org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT,
+                                       org.apache.axis2.databinding.utils.ConverterUtil.convertToString(bean.<xsl:value-of select="$varName"/>)
+                                       },
+                                       null);
+                                }
+                            </xsl:when>
+                            <xsl:otherwise> return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(bean.MY_QNAME,
+                            new java.lang.Object[]{
+                            org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT,
+                            org.apache.axis2.databinding.utils.ConverterUtil.convertToString(bean.<xsl:value-of select="$varName"/>)
+                            },
+                            null);</xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:otherwise>
+        </xsl:choose>
+
+        }
+
+}
+    </xsl:otherwise>
+    </xsl:choose>
+           <!-- end of main template -->
+  </xsl:template>
+
+  <xsl:template match="mapper">
+        <xsl:variable name="name" select="@name"/>
+        <xsl:variable name="helperMode" select="@helpermode"/>
+
+         <xsl:if test="not(not(@unwrapped) or (@skip-write))">
+            /**
+            * <xsl:value-of select="$name"/>.java
+            *
+            * This file was auto-generated from WSDL
+            * by the Apache Axis2 version: #axisVersion# #today#
+            */
+
+            package <xsl:value-of select="@package"/>;
+            /**
+            *  <xsl:value-of select="$name"/> class
+            */
+        </xsl:if>
+        public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xsl:value-of select="$name"/>{
+
+          public static java.lang.Object getTypeObject(java.lang.String namespaceURI,
+                                                       java.lang.String typeName,
+                                                       javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{
+
+              <xsl:for-each select="type">
+                  if (
+                  "<xsl:value-of select="@nsuri"/>".equals(namespaceURI) &amp;&amp;
+                  "<xsl:value-of select="@shortname"/>".equals(typeName)){
+                   <xsl:choose>
+                       <xsl:when test="$helperMode">
+                           return  <xsl:value-of select="@classname"/>Helper.parse(reader);
+                       </xsl:when>
+                        <xsl:otherwise>
+                            return  <xsl:value-of select="@classname"/>.Factory.parse(reader);
+                        </xsl:otherwise>
+                   </xsl:choose>
+
+                  }
+
+              </xsl:for-each>
+             throw new java.lang.RuntimeException("Unsupported type " + namespaceURI + " " + typeName);
+          }
+
+        }
+    </xsl:template>
+</xsl:stylesheet>
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl
new file mode 100644
index 0000000..aa58475
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl
@@ -0,0 +1,219 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:key name="paramsIn" match="//databinders/param[@direction='in']" use="@type"/>

+    <xsl:key name="paramsOut" match="//databinders/param[@direction='out']" use="@type"/>

+    <xsl:key name="innerParams" match="//databinders/param[@direction='in']/param" use="@partname"/>

+    <!--<xsl:key name="paramsType" match="//databinders/param[@direction='in']" use="@type"/>-->

+

+    <!-- #################################################################################  -->

+    <!-- ############################   ADB template   ##############################  -->

+    <xsl:template match="databinders[@dbtype='adb']">

+        <xsl:variable name="serverside"  select="@isserverside"></xsl:variable>

+        <xsl:variable name="helpermode"  select="extra/@h"></xsl:variable>

+

+        <!--  generate toOM for only non parts and non primitives!!! -->

+        <xsl:for-each select="param[not(@type = preceding-sibling::param/@type) and @type!='' and not(@primitive)]">

+            private  org.apache.axiom.om.OMElement  toOM(<xsl:value-of select="@type"/> param, boolean optimizeContent){

+            <xsl:choose>

+                    <xsl:when test="$helpermode">

+                            return <xsl:value-of select="@type"/>Helper.getOMElement(

+                                        param,

+                                        <xsl:value-of select="@type"/>.MY_QNAME,

+                                        org.apache.axiom.om.OMAbstractFactory.getOMFactory());

+                    </xsl:when>

+                    <xsl:otherwise>

+                     return param.getOMElement(<xsl:value-of select="@type"/>.MY_QNAME,

+                                  org.apache.axiom.om.OMAbstractFactory.getOMFactory());

+                    </xsl:otherwise>

+            </xsl:choose>

+

+            }

+        </xsl:for-each>

+

+        <xsl:for-each select="opnames/name">

+

+            <xsl:variable name="opname" select="."/>

+            <xsl:variable name="opnsuri" select="@opnsuri"/>

+            <xsl:variable name="paramcount" select="count(../../param[@type!='' and @direction='in' and @opname=$opname])"/>

+

+            <xsl:if test="not($serverside)">

+            <xsl:choose>

+                <xsl:when test="$paramcount &gt; 0">

+                    <xsl:variable name="inputElement" select="../../param[@type!='' and @direction='in' and @opname=$opname]"></xsl:variable>

+                    <xsl:variable name="inputElementType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@type"></xsl:variable>

+                    <xsl:variable name="inputElementShortType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@shorttype"></xsl:variable>

+                    <xsl:variable name="inputElementComplexType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@complextype"></xsl:variable>

+                    <xsl:variable name="wrappedParameterCount" select="count(../../param[@type!='' and @direction='in' and @opname=$opname]/param)"></xsl:variable>

+                    <xsl:if test="generate-id($inputElement) = generate-id(key('paramsIn', $inputElementType)[1])">

+                         <xsl:choose>

+                            <xsl:when test="$wrappedParameterCount &gt; 0">

+                                <!-- geneate the toEnvelope method-->

+                            private  org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory,

+                                <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+                                 <xsl:value-of select="@type"/> param<xsl:value-of select="position()"/>,

+                                </xsl:for-each>

+                                <xsl:value-of select="$inputElementType"/> dummyWrappedType,

+                             boolean optimizeContent){

+

+                            <xsl:value-of select="$inputElementType"/> wrappedType = new <xsl:value-of select="$inputElementType"/>();

+

+                             <xsl:choose>

+                                 <!--<xsl:when test="$inputElementComplexType != ''">-->

+                                 <xsl:when test="string-length(normalize-space($inputElementComplexType)) > 0">

+                                      <xsl:value-of select="$inputElementComplexType"/> wrappedComplexType = new <xsl:value-of select="$inputElementComplexType"/>();

+                                      <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+                                          wrappedComplexType.set<xsl:value-of select="@partname"/>(param<xsl:value-of select="position()"/>);

+                                     </xsl:for-each>

+                                     wrappedType.set<xsl:value-of select="$inputElementShortType"/>(wrappedComplexType);

+                                 </xsl:when>

+                                 <xsl:otherwise>

+                                     <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+                                          wrappedType.set<xsl:value-of select="@partname"/>(param<xsl:value-of select="position()"/>);

+                                     </xsl:for-each>

+                                 </xsl:otherwise>

+                             </xsl:choose>

+

+                           org.apache.axiom.soap.SOAPEnvelope emptyEnvelope = factory.getDefaultEnvelope();

+                              <xsl:choose>

+                                <xsl:when test="$helpermode">

+                                    emptyEnvelope.getBody().addChild(<xsl:value-of select="$inputElementType"/>Helper.getOMElement(

+                                    wrappedType,

+                                    <xsl:value-of select="$inputElementType"/>.MY_QNAME,factory));

+                                </xsl:when>

+                                <xsl:otherwise>

+                                    emptyEnvelope.getBody().addChild(wrappedType.getOMElement(<xsl:value-of select="$inputElementType"/>.MY_QNAME,factory));

+                                </xsl:otherwise>

+                            </xsl:choose>

+

+                           return emptyEnvelope;

+                           }

+

+

+

+                            </xsl:when>

+                            <xsl:otherwise>

+

+                            <!-- Assumption - the parameter is always an ADB element-->

+                        private  org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, <xsl:value-of select="$inputElementType"/> param, boolean optimizeContent){

+                        org.apache.axiom.soap.SOAPEnvelope emptyEnvelope = factory.getDefaultEnvelope();

+                             <xsl:choose>

+                                <xsl:when test="$helpermode">

+                                    emptyEnvelope.getBody().addChild(<xsl:value-of select="$inputElementType"/>Helper.getOMElement(

+                                    param,

+                                    <xsl:value-of select="$inputElementType"/>.MY_QNAME,factory));

+                                </xsl:when>

+                                <xsl:otherwise>

+                                    emptyEnvelope.getBody().addChild(param.getOMElement(<xsl:value-of select="$inputElementType"/>.MY_QNAME,factory));

+                                </xsl:otherwise>

+                        </xsl:choose>

+                         return emptyEnvelope;

+                        }

+

+                        </xsl:otherwise>

+                     </xsl:choose>

+                    </xsl:if>

+               </xsl:when>

+               <xsl:otherwise>

+                  <!-- Do nothing here -->

+                </xsl:otherwise>

+            </xsl:choose>

+            </xsl:if>

+            <!-- this piece of logic needs to be generated only for the server side-->

+            <xsl:if test="$serverside">

+             <xsl:choose>

+                  <xsl:when test="count(../../param[@type!='' and @direction='out' and @opname=$opname])=1">

+                  <xsl:variable name="outElement" select="../../param[@type!='' and @direction='out' and @opname=$opname]"></xsl:variable>

+                  <xsl:variable name="outElementType" select="../../param[@type!='' and @direction='out' and @opname=$opname]/@type"></xsl:variable>

+                    <!-- Assumption - The ADBBean here is always an element based bean -->

+                    <xsl:if test="generate-id($outElement) = generate-id(key('paramsOut', $outElementType)[1])">

+                    private  org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, <xsl:value-of select="../../param[@type!='' and @direction='out' and @opname=$opname]/@type"/> param, boolean optimizeContent){

+                      org.apache.axiom.soap.SOAPEnvelope emptyEnvelope = factory.getDefaultEnvelope();

+                       <xsl:choose>

+                            <xsl:when test="$helpermode">

+                                emptyEnvelope.getBody().addChild(

+                                <xsl:value-of select="../../param[@type!='' and @direction='out' and @opname=$opname]/@type"/>Helper.getOMElement(

+                                param,

+                                <xsl:value-of select="../../param[@type!='' and @direction='out' and @opname=$opname]/@type"/>.MY_QNAME,factory));

+                            </xsl:when>

+                            <xsl:otherwise>

+                                emptyEnvelope.getBody().addChild(param.getOMElement(<xsl:value-of select="../../param[@type!='' and @direction='out' and @opname=$opname]/@type"/>.MY_QNAME,factory));

+                            </xsl:otherwise>

+                    </xsl:choose>

+

+                     return emptyEnvelope;

+                    }

+                    </xsl:if>

+                </xsl:when>

+       </xsl:choose>

+            <xsl:if test="count(../../param[@type!='' and @direction='in' and @opname=$opname])=1">

+                <!-- generate the get methods -->

+                <xsl:variable name="inputElement" select="../../param[@type!='' and @direction='in' and @opname=$opname]"></xsl:variable>

+                <xsl:variable name="inputElementType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@type"></xsl:variable>

+                <xsl:variable name="inputElementShortType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@shorttype"></xsl:variable>

+                <xsl:variable name="inputElementComplexType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@complextype"></xsl:variable>

+

+                <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+

+                    <xsl:variable name="paramElement" select="."></xsl:variable>

+                    <xsl:variable name="partName" select="@partname"></xsl:variable>

+

+                    <xsl:if test="(generate-id($paramElement) = generate-id(key('innerParams', $partName)[1])) or

+                        (generate-id($inputElement) = generate-id(key('paramsIn', $inputElementType)[1]))">

+

+                        private <xsl:value-of select="@type"/> get<xsl:value-of select="@partname"/>(

+                        <xsl:value-of select="../@type"/> wrappedType){

+                        <xsl:choose>

+                            <!--<xsl:when test="$inputElementComplexType != ''">-->

+                            <xsl:when test="string-length(normalize-space($inputElementComplexType)) > 0">

+                                return wrappedType.get<xsl:value-of select="$inputElementShortType"/>().get<xsl:value-of select="@partname"/>();

+                            </xsl:when>

+                            <xsl:otherwise>

+                                return wrappedType.get<xsl:value-of select="@partname"/>();

+                            </xsl:otherwise>

+                        </xsl:choose>

+                        }

+                     </xsl:if>

+                </xsl:for-each>

+            </xsl:if>

+      </xsl:if>

+      </xsl:for-each>

+

+

+        /**

+        *  get the default envelope

+        */

+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory){

+        return factory.getDefaultEnvelope();

+        }

+

+

+        private  java.lang.Object fromOM(

+        org.apache.axiom.om.OMElement param,

+        java.lang.Class type,

+        java.util.Map extraNamespaces){

+

+        try {

+        <xsl:for-each select="param[not(@primitive) and @type!='']">

+                if (<xsl:value-of select="@type"/>.class.equals(type)){

+                <xsl:choose>

+                    <xsl:when test="$helpermode">

+                           return <xsl:value-of select="@type"/>Helper.parse(param.getXMLStreamReaderWithoutCaching());

+                    </xsl:when>

+                    <xsl:otherwise>

+                           return <xsl:value-of select="@type"/>.Factory.parse(param.getXMLStreamReaderWithoutCaching());

+                    </xsl:otherwise>

+                </xsl:choose>

+

+                }

+           </xsl:for-each>

+        } catch (Exception e) {

+        throw new RuntimeException(e);

+        }

+           return null;

+        }

+

+

+

+    </xsl:template>

+

+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/CADBBeanTemplateHeader.xsl b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/CADBBeanTemplateHeader.xsl
new file mode 100644
index 0000000..5ef3f3b
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/CADBBeanTemplateHeader.xsl
@@ -0,0 +1,205 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+
+     <!-- cater for the multiple classes - wrappped mode -->
+    <xsl:template match="/classs">
+        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="axis2_name">axi2_<xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="caps_axis2_name">AXIS2_<xsl:value-of select="@caps-name"/></xsl:variable>
+        #ifndef <xsl:value-of select="$caps_axis2_name"/>_H
+        #define <xsl:value-of select="$caps_axis2_name"/>_H
+
+        /**
+        * <xsl:value-of select="$axis2_name"/>.h
+        *
+        * This file was auto-generated from WSDL
+        * by the Apache Axis2 Java version: #axisVersion# #today#
+        */
+        <xsl:for-each select="property">
+          <xsl:if test="@ours">
+          <xsl:variable name="propertyType"><xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"></xsl:value-of></xsl:variable>
+          #include "<xsl:value-of select="$propertyType"/>.h"
+          </xsl:if>
+        </xsl:for-each>
+
+        #include &lt;stdio.h&gt;
+        #include &lt;axiom.h&gt;
+        #include &lt;axis2_util.h&gt;
+        #include &lt;axiom_soap.h&gt;
+        #include &lt;axis2_client.h&gt;
+
+        #ifdef __cplusplus
+        extern "C"
+        {
+        #endif
+
+        #define AXIS2_DEFAULT_DIGIT_LIMIT 128
+
+        /**
+        *  <xsl:value-of select="$axis2_name"/> wrapped class classes ( structure for C )
+        */
+
+        <xsl:apply-templates/>
+
+
+        #ifdef __cplusplus
+        }
+        #endif
+
+        #endif /* <xsl:value-of select="$caps_axis2_name"/>_H */
+    </xsl:template>
+
+    <!--cater for the multiple classes - unwrappped mode -->
+    <xsl:template match="/">
+        <xsl:apply-templates/>
+    </xsl:template>
+
+
+    <xsl:template match="class">
+        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="axis2_name">axis2_<xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="caps_axis2_name">AXIS2_<xsl:value-of select="@caps-name"/></xsl:variable>
+
+        #ifndef <xsl:value-of select="$caps_axis2_name"/>_H
+        #define <xsl:value-of select="$caps_axis2_name"/>_H
+
+        /**
+        * <xsl:value-of select="$axis2_name"/>.h
+        *
+        * This file was auto-generated from WSDL
+        * by the Apache Axis2 version: #axisVersion# #today#
+        */
+
+        <xsl:for-each select="property">
+          <xsl:if test="@ours">
+          <xsl:variable name="propertyType"><xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"></xsl:value-of></xsl:variable>
+          #include "<xsl:value-of select="$propertyType"/>.h"
+          </xsl:if>
+        </xsl:for-each>
+        <!--include special headers-->
+        <xsl:if test="property/@type='axis2_date_time_t*'">
+          #include &lt;axis2_date_time.h&gt;
+        </xsl:if>
+        <xsl:if test="property/@type='axis2_base64_binary_t*'">
+          #include &lt;axis2_base64_binary.h&gt;
+        </xsl:if>
+
+        #include &lt;stdio.h&gt;
+        #include &lt;axiom.h&gt;
+        #include &lt;axis2_util.h&gt;
+        #include &lt;axiom_soap.h&gt;
+        #include &lt;axis2_client.h&gt;
+
+        #ifdef __cplusplus
+        extern "C"
+        {
+        #endif
+
+        #define AXIS2_DEFAULT_DIGIT_LIMIT 64
+        /**
+        *  <xsl:value-of select="$axis2_name"/> class class
+        */
+        typedef struct <xsl:value-of select="$axis2_name"/><xsl:text> </xsl:text><xsl:value-of select="$axis2_name"/>_t;
+        typedef struct <xsl:value-of select="$axis2_name"/>_ops<xsl:text> </xsl:text><xsl:value-of select="$axis2_name"/>_ops_t;
+
+        struct <xsl:value-of select="$axis2_name"/>_ops
+        {
+            axis2_status_t (AXIS2_CALL*
+            free )(
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env);
+
+            <xsl:if test="not(@type)">
+              axis2_qname_t* (AXIS2_CALL*
+              get_qname )(
+                  <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                  const axis2_env_t *env);
+            </xsl:if>
+
+            axiom_node_t* (AXIS2_CALL*
+            parse_om )(
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env,
+                axiom_node_t* <xsl:value-of select="$name"/>_om_node);
+
+            axis2_status_t (AXIS2_CALL*
+            build_om )(
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env, axiom_node_t* parent);
+
+            <xsl:for-each select="property">
+                <xsl:variable name="propertyType">
+                   <xsl:choose>
+                     <xsl:when test="@isarray">axis2_array_list_t*</xsl:when>
+                     <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                     <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                     <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                   </xsl:choose>
+                </xsl:variable>
+                <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+                <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+
+               /**
+                * Auto generated getter method
+                * @return <xsl:value-of select="$propertyName"/>
+                */
+                <xsl:value-of select="$propertyType"/> (AXIS2_CALL*
+                get_<xsl:value-of select="$CName"/>)(
+                        <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                        const axis2_env_t *env);
+
+               /**
+                * Auto generated setter method
+                * @param param <xsl:value-of select="$propertyName"/>
+                */
+                axis2_status_t (AXIS2_CALL*
+                set_<xsl:value-of select="$CName"/>)(
+                        <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                        const axis2_env_t *env,
+                        <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text> param_<xsl:value-of select="$CName"/>);
+
+
+            </xsl:for-each>
+        };
+        struct <xsl:value-of select="$axis2_name"/>
+        {
+            <xsl:value-of select="$axis2_name"/>_ops_t* ops;
+        };
+
+        AXIS2_EXTERN <xsl:value-of select="$axis2_name"/>_t* AXIS2_CALL
+        <xsl:value-of select="$axis2_name"/>_create(
+            const axis2_env_t *env );
+
+
+        #define <xsl:value-of select="$caps_axis2_name"/>_FREE(<xsl:value-of select="$name"/>, env) \
+             ((<xsl:value-of select="$name"/>)->ops->free(<xsl:value-of select="$name"/>, env))
+        <xsl:if test="not(@type)">
+          #define <xsl:value-of select="$caps_axis2_name"/>_GET_QNAME(<xsl:value-of select="$name"/>, env) \
+               ((<xsl:value-of select="$name"/>)->ops->get_qname(<xsl:value-of select="$name"/>, env))
+        </xsl:if>
+        #define <xsl:value-of select="$caps_axis2_name"/>_PARSE_OM(<xsl:value-of select="$name"/>, env, node) \
+             ((<xsl:value-of select="$name"/>)->ops->parse_om(<xsl:value-of select="$name"/>, env, node))
+        #define <xsl:value-of select="$caps_axis2_name"/>_BUILD_OM(<xsl:value-of select="$name"/>, env, parent) \
+             ((<xsl:value-of select="$name"/>)->ops->build_om(<xsl:value-of select="$name"/>, env, parent))
+
+        <xsl:for-each select="property">
+            <xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable>
+            <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+            <xsl:variable name="capspropertyName"><xsl:value-of select="@caps-name"></xsl:value-of></xsl:variable>
+            <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+            <xsl:variable name="capsCName"><xsl:value-of select="@caps-cname"></xsl:value-of></xsl:variable>
+
+            #define <xsl:value-of select="$caps_axis2_name"/>_GET_<xsl:value-of select="$capsCName"/>(<xsl:value-of select="$name"/>, env) \
+                 ((<xsl:value-of select="$name"/>)->ops->get_<xsl:value-of select="$CName"/>(<xsl:value-of select="$name"/>, env))
+
+            #define <xsl:value-of select="$caps_axis2_name"/>_SET_<xsl:value-of select="$capsCName"/>(<xsl:value-of select="$name"/>, env, param) \
+                 ((<xsl:value-of select="$name"/>)->ops->set_<xsl:value-of select="$CName"/>(<xsl:value-of select="$name"/>, env, param))
+
+        </xsl:for-each>
+     #ifdef __cplusplus
+     }
+     #endif
+
+     #endif /* <xsl:value-of select="$caps_axis2_name"/>_H */
+    </xsl:template>
+</xsl:stylesheet>
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/CADBBeanTemplateSource.xsl b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/CADBBeanTemplateSource.xsl
new file mode 100644
index 0000000..b36ecc6
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/CADBBeanTemplateSource.xsl
@@ -0,0 +1,1712 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+
+     <!-- cater for the multiple classes - wrappped mode - currently not well supported.-->
+    <xsl:template match="/classs">
+        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="axis2_name">axis2_<xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="axis2_capsname">AXIS2_<xsl:value-of select="@caps-name"/></xsl:variable>
+       /**
+        * <xsl:value-of select="$axis2_name"/>.c
+        *
+        * This file was auto-generated from WSDL
+        * by the Apache Axis2/C version: #axisVersion# #today#
+        */
+
+       /**
+        *  <xsl:value-of select="$axis2_name"/>
+        */
+        #include "<xsl:value-of select="$axis2_name"/>.h"
+
+        <xsl:apply-templates/>
+
+    </xsl:template>
+
+    <!--cater for the multiple classes - unwrappped mode -->
+    <xsl:template match="/">
+        <xsl:apply-templates/>
+    </xsl:template>
+
+    <xsl:template match="class">
+        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="axis2_name">axis2_<xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="istype"><xsl:value-of select="@type"/></xsl:variable>
+        <xsl:variable name="axis2_capsname">AXIS2_<xsl:value-of select="@caps-name"/></xsl:variable>
+
+        <xsl:variable name="originalName"><xsl:value-of select="@originalName"/></xsl:variable>
+        <xsl:variable name="nsuri"><xsl:value-of select="@nsuri"/></xsl:variable>
+        <xsl:variable name="nsprefix"><xsl:value-of select="@nsprefix"/></xsl:variable>
+       /**
+        * <xsl:value-of select="$axis2_name"/>.h
+        *
+        * This file was auto-generated from WSDL
+        * by the Apache Axis2/C version: #axisVersion# #today#
+        *
+        */
+
+        #include "<xsl:value-of select="$axis2_name"/>.h"
+          <xsl:choose>
+             <xsl:when test="@type">
+              /**
+               * This type was generated from the piece of schema that had
+               * name = <xsl:value-of select="@originalName"/>
+               * Namespace URI = <xsl:value-of select="@nsuri"/>
+               * Namespace Prefix = <xsl:value-of select="@nsprefix"/>
+               */
+             </xsl:when>
+             <xsl:otherwise>
+              /**
+               * implmentation of the <xsl:value-of select="@originalName"/>|<xsl:value-of select="@nsuri"/> element
+               */
+             </xsl:otherwise>
+          </xsl:choose>
+
+
+        typedef struct <xsl:value-of select="$axis2_name"/><xsl:text>_impl </xsl:text><xsl:value-of select="$axis2_name"/>_impl_t;
+
+        struct <xsl:value-of select="$axis2_name"/>_impl
+        {
+            <xsl:value-of select="$axis2_name"/>_t <xsl:value-of select="$name"/>;
+
+            <xsl:if test="not(@type)">
+                axis2_qname_t* qname;
+            </xsl:if>
+
+            <xsl:for-each select="property">
+                <xsl:variable name="propertyType">
+                   <xsl:choose>
+                     <xsl:when test="@isarray">axis2_array_list_t*</xsl:when>
+                     <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                     <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                     <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                   </xsl:choose>
+                </xsl:variable>
+                <xsl:variable name="propertyBaseType">
+                   <xsl:choose>
+                     <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                     <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                   </xsl:choose>
+                </xsl:variable>
+                <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+                <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+
+                <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>attrib_<xsl:value-of select="$CName"/>;
+            </xsl:for-each>
+        };
+
+        #define AXIS2_INTF_TO_IMPL(<xsl:value-of select="$name"/>) \
+            ((<xsl:value-of select="$axis2_name"/>_impl_t *) <xsl:value-of select="$name"/>)
+
+        /************************* Function prototypes ********************************/
+
+        axis2_status_t AXIS2_CALL
+        <xsl:value-of select="$axis2_name"/>_free (
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env);
+
+        <xsl:if test="not(@type)">
+          axis2_qname_t* AXIS2_CALL
+          <xsl:value-of select="$axis2_name"/>_get_qname (
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env);
+        </xsl:if>
+
+        axiom_node_t* AXIS2_CALL
+        <xsl:value-of select="$axis2_name"/>_parse_om (
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env,
+                axiom_node_t* <xsl:value-of select="$name"/>_om_node);
+
+        axis2_status_t AXIS2_CALL
+        <xsl:value-of select="$axis2_name"/>_build_om (
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env, axiom_node_t* parent);
+
+        <xsl:for-each select="property">
+            <xsl:variable name="propertyType">
+               <xsl:choose>
+                    <xsl:when test="@isarray">axis2_array_list_t*</xsl:when>
+                    <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                    <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                    <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+               </xsl:choose>
+            </xsl:variable>
+            <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+            <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+
+            /**
+             * getter for <xsl:value-of select="$propertyName"/>.
+             */
+            <xsl:value-of select="$propertyType"/> AXIS2_CALL
+            <xsl:value-of select="$axis2_name"/>_get_<xsl:value-of select="$CName"/>(
+                    <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                    const axis2_env_t *env);
+
+            /**
+             * setter for <xsl:value-of select="$propertyName"/>
+             */
+            axis2_status_t AXIS2_CALL
+            <xsl:value-of select="$axis2_name"/>_set_<xsl:value-of select="$CName"/>(
+                    <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                    const axis2_env_t *env,
+                    <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text> param_<xsl:value-of select="$CName"/>);
+        </xsl:for-each>
+
+       /************************* Function Implmentations ********************************/
+        AXIS2_EXTERN <xsl:value-of select="$axis2_name"/>_t* AXIS2_CALL
+        <xsl:value-of select="$axis2_name"/>_create(
+            const axis2_env_t *env )
+        {
+            <xsl:value-of select="$axis2_name"/>_impl_t* <xsl:value-of select="$name"/>_impl = NULL;
+            <xsl:if test="not(@type)">
+              axis2_qname_t* qname = NULL;
+            </xsl:if>
+            AXIS2_ENV_CHECK(env, NULL);
+
+            <xsl:value-of select="$name"/>_impl = (<xsl:value-of select="$axis2_name"/>_impl_t *) AXIS2_MALLOC(env->
+                allocator, sizeof(<xsl:value-of select="$axis2_name"/>_impl_t));
+
+            if(NULL == <xsl:value-of select="$name"/>_impl)
+            {
+                AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+                return NULL;
+            }
+
+            <xsl:value-of select="$name"/>_impl-> <xsl:value-of select="$name"/>.ops =
+                            AXIS2_MALLOC (env->allocator, sizeof(<xsl:value-of select="$axis2_name"/>_ops_t));
+            if(NULL == <xsl:value-of select="$name"/>_impl-> <xsl:value-of select="$name"/>.ops)
+            {
+                axis2_<xsl:value-of select="$name"/>_free(&amp;(<xsl:value-of select="$name"/>_impl-><xsl:value-of select="$name"/>), env);
+                AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+                return NULL;
+            }
+
+            <xsl:for-each select="property">
+                <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+                <xsl:choose>
+                  <xsl:when test="@ours">
+                    <xsl:value-of select="$name"/>_impl-> attrib_<xsl:value-of select="$CName"/>  = NULL;
+                  </xsl:when>
+                  <!-- todo for others -->
+                </xsl:choose>
+            </xsl:for-each>
+
+            <xsl:value-of select="$name"/>_impl-><xsl:value-of select="$name"/>.ops->free = <xsl:value-of select="$axis2_name"/>_free;
+            <xsl:if test="not(@type)">
+              <xsl:value-of select="$name"/>_impl-><xsl:value-of select="$name"/>.ops->get_qname = <xsl:value-of select="$axis2_name"/>_get_qname;
+            </xsl:if>
+            <xsl:value-of select="$name"/>_impl-><xsl:value-of select="$name"/>.ops->parse_om = <xsl:value-of select="$axis2_name"/>_parse_om;
+            <xsl:value-of select="$name"/>_impl-><xsl:value-of select="$name"/>.ops->build_om = <xsl:value-of select="$axis2_name"/>_build_om;
+            <xsl:for-each select="property">
+                <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+                <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+                <xsl:value-of select="$name"/>_impl-><xsl:value-of select="$name"/>.ops->get_<xsl:value-of select="$CName"/> = <xsl:value-of select="$axis2_name"/>_get_<xsl:value-of select="$CName"/>;
+                <xsl:value-of select="$name"/>_impl-><xsl:value-of select="$name"/>.ops->set_<xsl:value-of select="$CName"/> = <xsl:value-of select="$axis2_name"/>_set_<xsl:value-of select="$CName"/>;
+            </xsl:for-each>
+            <xsl:if test="not(@type)">
+              qname =  axis2_qname_create (env,
+                        "<xsl:value-of select="@originalName"/>",
+                        "<xsl:value-of select="@nsuri"/>",
+                        "<xsl:value-of select="@nsprefix"/>");
+
+              <xsl:value-of select="$name"/>_impl->qname = qname;
+            </xsl:if>
+
+            return &amp;(<xsl:value-of select="$name"/>_impl-><xsl:value-of select="$name"/>);
+         }
+
+        axis2_status_t AXIS2_CALL
+        <xsl:value-of select="$axis2_name"/>_free (
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env)
+        {
+            <xsl:value-of select="$axis2_name"/>_impl_t *<xsl:value-of select="$name"/>_impl = NULL;
+            <!--<xsl:if test="property/@isarray and (property/@ours or property/@type='axis2_char_t*' or property/@type='axis2_date_time_t*' or property/@type='axis2_base64_binary_t*' or property/@type='axiom_node_t*')">-->
+            <xsl:if test="property/@isarray">
+                  int i = 0;
+                  int count = 0;
+                  void *element = NULL;
+            </xsl:if>
+
+            AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+            <xsl:value-of select="$name"/>_impl = AXIS2_INTF_TO_IMPL(<xsl:value-of select="$name"/>);
+
+            <xsl:for-each select="property">
+             <!-- please check all the freeing thing below -->
+             <!--<xsl:if test="@isarray or not(@type='short' or @type='int' or @type='char' or @type='long' or @type='double' or @type='float' or @type='axis2_bool_t')">-->
+             <xsl:if test="@isarray or @ours or @type='axis2_char_t*' or @type='axis2_qname_t*' or @type='axis2_uri_t*' or @type='axis2_date_time_t*' or @type='axis2_base64_binary_t*'">
+              <xsl:variable name="propertyType">
+                 <xsl:choose>
+                   <xsl:when test="@isarray">axis2_array_list_t*</xsl:when>
+                   <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="capspropertyType">
+                 <xsl:choose>
+                   <xsl:when test="@isarray">AXIS2_ARRAY_LIST</xsl:when>
+                   <xsl:when test="not(@type)">AXIOM_NODE</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">AXIS2_<xsl:value-of select="@caps-type"/></xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@caps-type"/></xsl:otherwise> <!-- this will not be used -->
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="nativePropertyType"> <!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="nativeCapspropertyType"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="not(@type)">AXIOM_NODE</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">AXIS2_<xsl:value-of select="@caps-type"/></xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@caps-type"/></xsl:otherwise> <!-- this will not be used -->
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+              <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+
+              <xsl:variable name="attriName"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="@isarray">(<xsl:value-of select="$nativePropertyType"/>)element</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="justAttriName"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="@isarray">element</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+
+
+
+              <!-- handles arrays -->
+              <xsl:if test="@isarray">
+                if ( <xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/> != NULL)
+                {
+                    count = AXIS2_ARRAY_LIST_SIZE( <xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/>, env);
+                    for( i = 0; i &lt; count; i ++)
+                    {
+                       element = AXIS2_ARRAY_LIST_GET( <xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/>, env, i);
+              </xsl:if>
+
+              <!-- the following element can be inside array or independent one -->
+              if( <xsl:value-of select="$justAttriName"/> != NULL)
+              {
+                 <!-- how to free all the ours things -->
+                 <xsl:choose>
+                   <xsl:when test="@ours">
+                      <xsl:value-of select="$nativeCapspropertyType"/>_FREE( <xsl:value-of select="$attriName"/>, env);
+                   </xsl:when>
+
+                   <xsl:when test="$nativePropertyType='short' or $nativePropertyType='axis2_bool_t' or $nativePropertyType='char' or $nativePropertyType='int' or $nativePropertyType='float' or $nativePropertyType='double' or $nativePropertyType='long'">
+                     <xsl:if test="@isarray">
+                      <!-- free ints, longs, float in array-->
+                      /** we keep primtives as pointers in arrasy, so need to free them */
+                      AXIS2_FREE( env-> allocator, element);
+                     </xsl:if>
+                   </xsl:when>
+
+                   <!-- free axis2_char_t s -->
+                   <xsl:when test="$nativePropertyType='axis2_char_t*'">
+                      AXIS2_FREE( env-> allocator, <xsl:value-of select="$attriName"/>);
+                   </xsl:when>
+
+                   <!-- free nodes -->
+                   <xsl:when test="$nativePropertyType='axiom_node_t*'">
+                    AXIOM_NODE_FREE_TREE ( <xsl:value-of select="$attriName"/>, env );
+                   </xsl:when>
+
+                   <xsl:when test="$nativePropertyType='axis2_qname_t*'">
+                    AXIS2_QNAME_FREE( <xsl:value-of select="$attriName"/>, env );
+                   </xsl:when>
+
+                   <xsl:when test="$nativePropertyType='axis2_uri_t*'">
+                    AXIS2_URI_FREE( <xsl:value-of select="$attriName"/>, env );
+                   </xsl:when>
+
+                   <xsl:when test="$nativePropertyType='axis2_date_time_t*'">
+                    AXIS2_DATE_TIME_FREE( <xsl:value-of select="$attriName"/>, env );
+                   </xsl:when>
+
+                   <xsl:when test="$propertyType='axis2_base64_binary_t*'">
+                    AXIS2_BASE64_BINARY_FREE ( <xsl:value-of select="$attriName"/>, env );
+                   </xsl:when>
+
+                   <!--TODO: This should be extended for all the types that should be freed.. -->
+                   <xsl:otherwise>
+                     /** This is an unknown type or a primitive. Free this manually for unknown type */
+                   </xsl:otherwise>
+                 </xsl:choose>
+                 <xsl:value-of select="$justAttriName"/> = NULL;
+              }
+
+              <!-- close tags arrays -->
+              <xsl:if test="@isarray">
+                    }
+                    AXIS2_ARRAY_LIST_FREE( <xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/>, env);
+                }
+              </xsl:if>
+             </xsl:if> <!--close for test of primitive types -->
+            </xsl:for-each>
+
+            <xsl:if test="not(@type)">
+              if(<xsl:value-of select="$name"/>_impl->qname )
+              {
+                  AXIS2_QNAME_FREE (<xsl:value-of select="$name"/>_impl->qname, env);
+                  <xsl:value-of select="$name"/>_impl->qname = NULL;
+              }
+            </xsl:if>
+
+            if(<xsl:value-of select="$name"/>->ops)
+            {
+                AXIS2_FREE(env->allocator, <xsl:value-of select="$name"/>->ops);
+                <xsl:value-of select="$name"/>->ops = NULL;
+            }
+
+            if(<xsl:value-of select="$name"/>_impl)
+            {
+                AXIS2_FREE( env->allocator, <xsl:value-of select="$name"/>_impl);
+                <xsl:value-of select="$name"/>_impl = NULL;
+            }
+            return AXIS2_SUCCESS;
+        }
+
+        <xsl:if test="not(@type)">  <!-- this would only generate for elements -->
+           axis2_qname_t* AXIS2_CALL
+           <xsl:value-of select="$axis2_name"/>_get_qname (
+                   <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                   const axis2_env_t *env)
+           {
+               <xsl:value-of select="$axis2_name"/>_impl_t *<xsl:value-of select="$name"/>_impl = NULL;
+
+               AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+               <xsl:value-of select="$name"/>_impl = AXIS2_INTF_TO_IMPL(<xsl:value-of select="$name"/>);
+
+               return <xsl:value-of select="$name"/>_impl-> qname;
+           }
+        </xsl:if>
+
+        axis2_status_t AXIS2_CALL
+        <xsl:value-of select="$axis2_name"/>_build_om (
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env,
+                axiom_node_t* parent)
+        {
+            <xsl:value-of select="$axis2_name"/>_impl_t *<xsl:value-of select="$name"/>_impl = NULL;
+
+            axis2_status_t status = AXIS2_SUCCESS;
+            axiom_namespace_t *ns1 = NULL;
+            <xsl:if test="property/@attribute">
+               axiom_attribute_t *parent_attri = NULL;
+               axiom_element_t *parent_element = NULL;
+               axis2_char_t *attrib_text = NULL;
+            </xsl:if>
+            <xsl:if test="property/@isarray">
+               int i = 0;
+               int element_found = 0;
+               axis2_array_list_t *arr_list = NULL;
+            </xsl:if>
+            <xsl:if test="@ordered and property/@isarray">
+               int sequence_broken = 0;
+               axiom_node_t *tmp_node = NULL;
+            </xsl:if>
+            <!-- these two are requried -->
+            <xsl:if test="property/@ours or (property/@isarray and (property/@type='short' or property/@type='int' or property/@type='char' or property/@type='long' or property/@type='float' or property/@type='double')) or property/@type='axis2_date_time_t*' or property/@type='axis2_base64_binary_t*'">
+               void *element = NULL;
+            </xsl:if>
+             axis2_char_t* text_value = NULL;
+             axis2_qname_t *qname = NULL;
+            <!--<xsl:if test="property">
+              <xsl:if test="not(property/@attribute) and  (not(property/@ours) or property/@ours='')">
+                axis2_char_t* text_value = NULL;
+              </xsl:if>
+            </xsl:if>
+            <xsl:if test="property and (not(@type) or @type='' or property/@attribute)">
+               axis2_qname_t *qname = NULL;
+            </xsl:if>-->
+            <xsl:if test="not(property/@attribute) and (not(@ordered) or @ordered='' or property/@isarray)">
+              axis2_qname_t *element_qname = NULL;
+            </xsl:if>
+            <xsl:for-each select="property">
+             <xsl:if test="position()=1">
+               axiom_node_t *first_node = NULL;
+               <!--<xsl:if test="not(../@type) or ../@type='' or property/@attribute">
+                 axis2_qname_t *qname = NULL;
+               </xsl:if>
+               axiom_node_t *current_node = NULL;
+               axiom_element_t *current_element = NULL;-->
+             </xsl:if>
+            </xsl:for-each>
+            <xsl:if test="property and (not(property/@attribute) or property/@attribute='')">
+               axiom_node_t *current_node = NULL;
+               axiom_element_t *current_element = NULL;
+            </xsl:if>
+            AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+            <xsl:value-of select="$name"/>_impl = AXIS2_INTF_TO_IMPL(<xsl:value-of select="$name"/>);
+
+            ns1 = axiom_namespace_create (env,
+                                         "<xsl:value-of select="$nsuri"/>",
+                                         "<xsl:value-of select="$nsprefix"/>");
+            <xsl:if test="property">
+              if ( NULL == parent )
+              {
+                /** This should be checked above */
+                AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "NULL elemenet for <xsl:value-of select="$originalName"/>"
+                                              " %d :: %s", env->error->error_number,
+                                              AXIS2_ERROR_GET_MESSAGE(env->error));
+                return AXIS2_FAILURE;
+              }
+            </xsl:if>
+            <xsl:choose>
+              <xsl:when test="not(@type)">
+                <xsl:for-each select="property">
+                 <xsl:if test="position()=1">
+                    current_element = AXIOM_NODE_GET_DATA_ELEMENT( parent, env);
+                    qname = AXIOM_ELEMENT_GET_QNAME( current_element, env, parent);
+                    if ( AXIS2_QNAME_EQUALS( qname, env, <xsl:value-of select="$name"/>_impl-> qname ) )
+                    {
+                        first_node = AXIOM_NODE_GET_FIRST_CHILD( parent, env);
+                    }
+                    else
+                    {
+                        first_node = parent;
+                    }
+                 </xsl:if>
+                </xsl:for-each>
+              </xsl:when>
+              <xsl:otherwise>
+                first_node = parent;
+              </xsl:otherwise>
+             </xsl:choose>
+
+            <xsl:for-each select="property/@attribute">
+             <xsl:if test="position()=1">
+                 parent_element = AXIOM_NODE_GET_DATA_ELEMENT( parent, env);
+             </xsl:if>
+            </xsl:for-each>
+
+            <xsl:for-each select="property">
+              <xsl:variable name="propertyType">
+                 <xsl:choose>
+                   <xsl:when test="@isarray">axis2_array_list_t*</xsl:when>
+                   <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="capspropertyType">
+                 <xsl:choose>
+                   <xsl:when test="@isarray">AXIS2_ARRAY_LIST</xsl:when>
+                   <xsl:when test="not(@type)">AXIOM_NODE</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">AXIS2_<xsl:value-of select="@caps-type"/></xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@caps-type"/></xsl:otherwise> <!-- this will not be used -->
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="nativePropertyType"> <!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="nativeCapspropertyType"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="not(@type)">AXIOM_NODE</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">AXIS2_<xsl:value-of select="@caps-type"/></xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@caps-type"/></xsl:otherwise> <!-- this will not be used -->
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+              <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+              <xsl:variable name="CapsCName"><xsl:value-of select="@caps-cname"></xsl:value-of></xsl:variable>
+
+              <xsl:variable name="attriName"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="@isarray">(<xsl:value-of select="$nativePropertyType"/>)element</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="justAttriName"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="@isarray">element</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:choose>
+                <xsl:when test="@attribute">
+                  qname = axis2_qname_create( env, "<xsl:value-of select="$propertyName"/>", "<xsl:value-of select="@nsuri"/>","<xsl:choose>
+                                                                   <xsl:when test="@prefix!=''"><xsl:value-of select="@prefix"/></xsl:when>
+                                                                   <xsl:when test="@nsuri=../@nsuri"><xsl:value-of select="../@nsprefix"/></xsl:when></xsl:choose>");
+                  parent_attri = AXIOM_ELEMENT_GET_ATTRIBUTE( parent_element, env, qname);
+                  if( parent_attri != NULL)
+                  {
+                    attrib_text = AXIOM_ATTRIBUTE_GET_VALUE( parent_attri, env);
+                  }
+                  else
+                  {
+                    /** hope this work */
+                    attrib_text = AXIOM_ELEMENT_GET_ATTRIBUTE_VALUE_BY_NAME( parent_element, env, "<xsl:value-of select="$propertyName"/>");
+                  }
+                  if( attrib_text != NULL)
+                  {
+                      <!-- here only simple type possible -->
+                      <xsl:choose>
+                        <!-- add int s -->
+                        <xsl:when test="$nativePropertyType='int'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, atoi( attrib_text));
+                        </xsl:when>
+
+                        <!-- add axis2_char_t s -->
+                        <xsl:when test="$nativePropertyType='char'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, (char)atoi( attrib_text));
+                        </xsl:when>
+
+                        <!-- add short s -->
+                        <xsl:when test="$nativePropertyType='short'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, atoi( attrib_text));
+                        </xsl:when>
+
+                        <!-- add long s -->
+                        <xsl:when test="$nativePropertyType='long'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, atol( attrib_text));
+                        </xsl:when>
+
+                        <!-- add float s -->
+                        <xsl:when test="$nativePropertyType='float'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, atof( attrib_text));
+                        </xsl:when>
+                        <!-- add double s -->
+                        <xsl:when test="$nativePropertyType='double'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, atof( attrib_text));
+                        </xsl:when>
+
+                        <!-- add axis2_char_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_char_t*'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, AXIS2_STRDUP( attrib_text, env));
+                        </xsl:when>
+
+                        <!-- add axis2_qname_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_qname_t*'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, axis2_qname_create_from_string( env, attrib_text));
+                        </xsl:when>
+
+                        <!-- add axis2_uri_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_uri_t*'">
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, axis2_uri_parse_string( env, attrib_text));
+                        </xsl:when>
+                        <!-- add axis2_bool_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_bool_t'">
+                           if ( !AXIS2_STRCMP( attrib_text, "TRUE") || !AXIS2_STRCMP( attrib_text, "true") )
+                           {
+                               <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, AXIS2_TRUE);
+                           }
+                           else
+                           {
+                               <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, AXIS2_FALSE);
+                           }
+                        </xsl:when>
+                        <!-- add date_time_t* s -->
+                        <xsl:when test="$nativePropertyType='axis2_date_time_t*'">
+                           element = (void*)axis2_date_time_create( env);
+                           AXIS2_DATE_TIME_DESERIALIZE_DATE_TIME( (axis2_date_time_t*)element, env,
+                                                                      attrib_text);
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, ( <xsl:value-of select="$nativePropertyType"/>)element);
+                        </xsl:when>
+                        <!-- add hex_binary_t* s -->
+                        <xsl:when test="$nativePropertyType='axis2_base64_binary_t*'">
+                           element = (void*)axis2_base64_binary_create( env);
+                           AXIS2_BASE64_BINARY_SET_ENCODED_BINARY( <xsl:value-of select="$name"/>_impl-> attrib_<xsl:value-of select="$CName"/>, env,
+                                                                      attrib_text);
+                           <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>,
+                                                          env, ( <xsl:value-of select="$nativePropertyType"/>)element);
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <!--TODO: add new attributes types -->
+                          /** can not handle the attribute type <xsl:value-of select="$nativePropertyType"/>*/
+                        </xsl:otherwise>
+                      </xsl:choose>
+                    }
+                    <xsl:if test="not(@nillable)">
+                    else
+                    {
+                        /** this is not a nillable attribute*/
+                        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable attribute <xsl:value-of select="$propertyName"/> missing"
+                                              " %d :: %s", env->error->error_number,
+                                              AXIS2_ERROR_GET_MESSAGE(env->error));
+                        return AXIS2_FAILURE;
+                    }
+                    </xsl:if>
+                </xsl:when>
+                <xsl:otherwise> <!-- when it is an element not(@attribute) -->
+                  <!-- handles arrays -->
+                   <xsl:if test="@isarray">
+                    /**
+                     * building <xsl:value-of select="$CName"/> array
+                     */
+                     <xsl:if test="position()=1">
+                       arr_list = axis2_array_list_create( env, 10);
+                     </xsl:if>
+                   </xsl:if>
+
+                     <!-- for each non attribute properties there will always be an element-->
+                     /**
+                      * building <xsl:value-of select="$propertyName"/> element
+                      */
+                     <!-- array and non array build is so different so big choose, when is requried-->
+                     <!-- the method of picking the element is depend on the ../@ordered -->
+                     <xsl:choose>
+                       <xsl:when test="not(@isarray)">  <!--not an array so continue normal -->
+                           <xsl:choose>
+                             <xsl:when test="../@ordered">
+                               <xsl:choose>
+                                 <xsl:when test="position()=1">
+                                   current_node = first_node;
+                                 </xsl:when>
+                                 <xsl:otherwise>
+                                   /**
+                                     * because elements are ordered this works fine
+                                     */
+                                   <!-- current node should contain the ordered value -->
+                                   if( current_node != NULL)
+                                   {
+                                       current_node = AXIOM_NODE_GET_NEXT_SIBLING( current_node, env);
+                                   }
+                                 </xsl:otherwise>
+                               </xsl:choose>
+                             </xsl:when>
+                             <xsl:otherwise>
+                                   /**
+                                     * because elements are not ordered we should surf all the sibling to pick the right one
+                                     */
+                               for ( current_node = first_node; current_node != NULL;
+                                             current_node = AXIOM_NODE_GET_NEXT_SIBLING( current_node, env))
+                               {
+                                  current_element = AXIOM_NODE_GET_DATA_ELEMENT( current_node, env);
+                                  qname = AXIOM_ELEMENT_GET_QNAME( current_element, env, current_node);
+                                  element_qname = axis2_qname_create( env, "<xsl:value-of select="$propertyName"/>", "<xsl:value-of select="@nsuri"/>", "<xsl:choose>
+                                                                   <xsl:when test="@prefix!=''"><xsl:value-of select="@prefix"/></xsl:when>
+                                                                   <xsl:when test="@nsuri=../@nsuri"><xsl:value-of select="../@nsprefix"/></xsl:when></xsl:choose>");
+                                  if ( AXIS2_QNAME_EQUALS( element_qname, env, qname))
+                                  {
+                                       /** found the requried element */
+                                       break;
+                                  }
+                               }
+                             </xsl:otherwise>
+                           </xsl:choose>
+                           if ( current_node != NULL)
+                           {
+                              <xsl:if test="../@ordered">current_element = AXIOM_NODE_GET_DATA_ELEMENT( current_node, env);</xsl:if>
+                              <!-- changes to following choose tag should be changed in another 2 places -->
+                                 <xsl:choose>
+                                    <xsl:when test="@ours">
+                                      element = (void*)axis2_<xsl:value-of select="@type"/>_create( env);
+                                      status =  <xsl:value-of select="$nativeCapspropertyType"/>_BUILD_OM( ( <xsl:value-of select="$nativePropertyType"/>)element, env,
+                                                                             AXIOM_NODE_GET_FIRST_CHILD(current_node, env)==NULL?current_node:AXIOM_NODE_GET_FIRST_CHILD(current_node, env));
+                                      if( AXIS2_FAILURE ==  status)
+                                      {
+                                          AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                              " %d :: %s", env->error->error_number,
+                                                              AXIS2_ERROR_GET_MESSAGE(env->error));
+                                          return AXIS2_FAILURE;
+                                      }
+                                      status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                   ( <xsl:value-of select="$nativePropertyType"/>)element);
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='axis2_char_t*'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                   text_value);
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='axis2_uri_t*'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                   axis2_uri_parse_string( env, text_value));
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='axis2_qname_t*'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                   axis2_qname_create_from_string( env, text_value));
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='char'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                    (char)atoi( text_value));
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='int'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                    atoi( text_value));
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='short'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                    atoi( text_value));
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='float'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                     atof( text_value));
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='double'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                     atof( text_value));
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='long'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else
+                                      {
+                                          status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                      atol( text_value));
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='axiom_node_t*'">
+                                      text_value = NULL; /** just to avoid warning */
+                                      status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                      current_node);
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='axis2_bool_t'">
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      if ( NULL == text_value )
+                                      {
+                                         status = AXIS2_FAILURE;
+                                      }
+                                      else if ( !strcmp ( text_value , "true" ) || !strcmp ( text_value, "TRUE") )
+                                      {
+                                         status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                      AXIS2_TRUE);
+                                      }
+                                      else
+                                      {
+                                         status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                      AXIS2_FALSE);
+                                      }
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='axis2_date_time_t*'">
+                                      element = (void*)axis2_date_time_create( env);
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      status = AXIS2_DATE_TIME_DESERIALIZE_DATE_TIME( (axis2_date_time_t*)element, env,
+                                                                      text_value);
+                                      if( AXIS2_FAILURE ==  status)
+                                      {
+                                          AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                              " %d :: %s", env->error->error_number,
+                                                              AXIS2_ERROR_GET_MESSAGE(env->error));
+                                          return AXIS2_FAILURE;
+                                      }
+                                      status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                   ( <xsl:value-of select="$nativePropertyType"/>)element);
+                                    </xsl:when>
+                                    <xsl:when test="$nativePropertyType='axis2_base64_binary_t*'">
+                                      element = (void*)axis2_base64_binary_create( env);
+                                      text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                      status = AXIS2_BASE64_BINARY_SET_ENCODED_BINARY( <xsl:value-of select="$name"/>_impl-> attrib_<xsl:value-of select="$CName"/>, env,
+                                                                      text_value);
+                                      if( AXIS2_FAILURE ==  status)
+                                      {
+                                          AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                              " %d :: %s", env->error->error_number,
+                                                              AXIS2_ERROR_GET_MESSAGE(env->error));
+                                          return AXIS2_FAILURE;
+                                      }
+                                      status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                   ( <xsl:value-of select="$nativePropertyType"/>)element);
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                      <!-- TODO: add other types here -->
+                                      /** imposible to handle the request type - so please do it manually */
+                                      text_value = NULL;
+                                    </xsl:otherwise>
+                                 </xsl:choose>
+                                 if( AXIS2_FAILURE ==  status)
+                                 {
+                                     AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for <xsl:value-of select="$propertyName"/> "
+                                                         " %d :: %s", env->error->error_number,
+                                                         AXIS2_ERROR_GET_MESSAGE(env->error));
+                                     return AXIS2_FAILURE;
+                                 }
+                           }
+                           <xsl:if test="not(@nillable) and not(@minOccurs=0)">
+                               else
+                               {
+                                   /** this is not a nillable element*/
+                                   AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element <xsl:value-of select="$propertyName"/> missing"
+                                                         " %d :: %s", env->error->error_number,
+                                                         AXIS2_ERROR_GET_MESSAGE(env->error));
+                                   return AXIS2_FAILURE;
+                               }
+                           </xsl:if>
+                        </xsl:when>
+                        <xsl:otherwise> <!-- when it is all the way an array -->
+                           <xsl:choose>
+                             <xsl:when test="../@ordered"> <!-- all the elements should follow this -->
+                               for ( i = 0, sequence_broken = 0, tmp_node = current_node = <xsl:choose>
+                                             <xsl:when test="position()=1">first_node</xsl:when>
+                                             <xsl:otherwise>AXIOM_NODE_GET_NEXT_SIBLING( current_node, env)</xsl:otherwise></xsl:choose>; current_node != NULL; current_node = AXIOM_NODE_GET_NEXT_SIBLING( current_node, env))
+                               {
+                                  current_element = AXIOM_NODE_GET_DATA_ELEMENT( current_node, env);
+                                  qname = AXIOM_ELEMENT_GET_QNAME( current_element, env, current_node);
+                                  element_qname = axis2_qname_create( env, "<xsl:value-of select="$propertyName"/>", "<xsl:value-of select="@nsuri"/>","<xsl:choose>
+                                                                   <xsl:when test="@prefix!=''"><xsl:value-of select="@prefix"/></xsl:when>
+                                                                   <xsl:when test="@nsuri=../@nsuri"><xsl:value-of select="../@nsprefix"/></xsl:when></xsl:choose>");
+                                  if ( AXIS2_QNAME_EQUALS( element_qname, env, qname) )
+                                  {
+                                      if( sequence_broken)
+                                      {
+                                        /** found element out of order */
+                                        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "elements found out of order for array<xsl:value-of select="$propertyName"/> missing"
+                                                         " %d :: %s", env->error->error_number,
+                                                         AXIS2_ERROR_GET_MESSAGE(env->error));
+                                        return AXIS2_FAILURE;
+                                      }
+                                      tmp_node = current_node; /** always update the current node */
+                                      element_found = 1;
+                                      <!-- changes to following choose tag should be changed in another 2 places -->
+                                     <xsl:choose>
+                                        <xsl:when test="@ours">
+                                          element = (void*)axis2_<xsl:value-of select="@type"/>_create( env);
+                                          status =  <xsl:value-of select="$nativeCapspropertyType"/>_BUILD_OM( ( <xsl:value-of select="$nativePropertyType"/>)element, env,
+                                                                             AXIOM_NODE_GET_FIRST_CHILD(current_node, env)==NULL?current_node:AXIOM_NODE_GET_FIRST_CHILD(current_node, env));
+                                          if( AXIS2_FAILURE ==  status)
+                                          {
+                                              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                                  " %d :: %s", env->error->error_number,
+                                                                  AXIS2_ERROR_GET_MESSAGE(env->error));
+                                              return AXIS2_FAILURE;
+                                          }
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_char_t*'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)text_value);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_qname_t*'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)axis2_qname_create_from_string(env, text_value));
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_uri_t*'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)axis2_uri_parse_string(env, text_value));
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='char'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          /** we keeps ints in arrays from their pointers */
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = (char)atoi(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='int'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          /** we keeps ints in arrays from their pointers */
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atoi(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='short'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          /** we keeps ints in arrays from their pointers */
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atoi(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='float'">
+                                          /** we keeps float in arrays from their pointers */
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atof(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='double'">
+                                          /** we keeps float in arrays from their pointers */
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atof(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='long'">
+                                          /** we keeps long in arrays from their pointers */
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atol(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axiom_node_t*'">
+                                          text_value = NULL; /** just to avoid warning */
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)current_node);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_bool_t'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          if ( !strcmp ( text_value , "true" ) || !strcmp ( text_value, "TRUE") )
+                                          {
+                                             AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)AXIS2_TRUE);
+                                          }
+                                          else
+                                          {
+                                             AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)AXIS2_FALSE);
+                                          }
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_date_time_t*'">
+                                          element = (void*)axis2_date_time_create( env);
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          status = AXIS2_DATE_TIME_DESERIALIZE_DATE_TIME( (axis2_date_time_t*)element, env,
+                                                                          text_value);
+                                          if( AXIS2_FAILURE ==  status)
+                                          {
+                                              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                                  " %d :: %s", env->error->error_number,
+                                                                  AXIS2_ERROR_GET_MESSAGE(env->error));
+                                              return AXIS2_FAILURE;
+                                          }
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_base64_binary_t*'">
+                                          element = (void*)axis2_base64_binary_create( env);
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          status = AXIS2_BASE64_BINARY_SET_ENCODED_BINARY( <xsl:value-of select="$name"/>_impl-> attrib_<xsl:value-of select="$CName"/>, env,
+                                                                          text_value);
+                                          if( AXIS2_FAILURE ==  status)
+                                          {
+                                              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                                  " %d :: %s", env->error->error_number,
+                                                                  AXIS2_ERROR_GET_MESSAGE(env->error));
+                                              return AXIS2_FAILURE;
+                                          }
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:otherwise>
+                                          <!-- TODO: add other types here -->
+                                          /** imposible to handle the request type - so please do it manually */
+                                          text_value = NULL;
+                                        </xsl:otherwise>
+                                     </xsl:choose>
+                                     status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                   arr_list);
+                                     if( AXIS2_FAILURE ==  status)
+                                     {
+                                         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for <xsl:value-of select="$propertyName"/> "
+                                                             " %d :: %s", env->error->error_number,
+                                                             AXIS2_ERROR_GET_MESSAGE(env->error));
+                                         return AXIS2_FAILURE;
+                                     }
+
+                                     i ++;
+                                  }
+                                  else
+                                  {
+                                      sequence_broken = 1;
+                                  }
+                               }
+                               current_node = tmp_node;
+
+                             </xsl:when>
+                             <xsl:otherwise> <!-- otherwse for "../@ordered" -->
+
+                               /**
+                                 * because elements are not ordered we should surf all the sibling to pick the right one
+                                 */
+                               for ( i = 0, current_node = first_node; current_node != NULL; current_node = AXIOM_NODE_GET_NEXT_SIBLING( current_node, env))
+                               {
+                                  current_element = AXIOM_NODE_GET_DATA_ELEMENT( current_node, env);
+                                  qname = AXIOM_ELEMENT_GET_QNAME( current_element, env, current_node);
+                                  element_qname = axis2_qname_create( env, "<xsl:value-of select="$propertyName"/>", "<xsl:value-of select="@nsuri"/>","<xsl:choose>
+                                                                   <xsl:when test="@prefix!=''"><xsl:value-of select="@prefix"/></xsl:when>
+                                                                   <xsl:when test="@nsuri=../@nsuri"><xsl:value-of select="../@nsprefix"/></xsl:when></xsl:choose>");
+                                  if ( AXIS2_QNAME_EQUALS( element_qname, env, qname)
+                                  {
+                                       /** found the requried element */
+                                       element_found = 1;
+                                      <!-- changes to following choose tag should be changed in another 2 places -->
+                                     <xsl:choose>
+                                        <xsl:when test="@ours">
+                                          element = (void*)axis2_<xsl:value-of select="@type"/>_create( env);
+                                          status =  <xsl:value-of select="$nativeCapspropertyType"/>_BUILD_OM( ( <xsl:value-of select="$nativePropertyType"/>)element, env,
+                                                                             AXIOM_NODE_GET_FIRST_CHILD(current_node, env)==NULL?current_node:AXIOM_NODE_GET_FIRST_CHILD(current_node, env));
+                                          if( AXIS2_FAILURE ==  status)
+                                          {
+                                              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                                  " %d :: %s", env->error->error_number,
+                                                                  AXIS2_ERROR_GET_MESSAGE(env->error));
+                                              return AXIS2_FAILURE;
+                                          }
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_char_t*'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)text_value);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_qname_t*'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)axis2_qname_create_from_string(env, text_value));
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_uri_t*'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)axis2_uri_parse_string(env, text_value));
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='char'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          /** we keeps ints in arrays from their pointers */
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = (char)atoi(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='int'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          /** we keeps ints in arrays from their pointers */
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atoi(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='short'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          /** we keeps ints in arrays from their pointers */
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atoi(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='float'">
+                                          /** we keeps float in arrays from their pointers */
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atof(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='double'">
+                                          /** we keeps float in arrays from their pointers */
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atof(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='long'">
+                                          /** we keeps long in arrays from their pointers */
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          element = AXIS2_MALLOC( env-> allocator, 64);
+                                          (*(<xsl:value-of select="$nativePropertyType"/>*)element) = atol(text_value);
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axiom_node_t*'">
+                                          text_value = NULL; /** just to avoid warning */
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)current_node);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_bool_t'">
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          if ( !strcmp ( text_value , "true" ) || !strcmp ( text_value, "TRUE") )
+                                          {
+                                             AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)AXIS2_TRUE);
+                                          }
+                                          else
+                                          {
+                                             AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, (void*)AXIS2_FALSE);
+                                          }
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_date_time_t*'">
+                                          element = (void*)axis2_date_time_create( env);
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          status = AXIS2_DATE_TIME_DESERIALIZE_DATE_TIME( (axis2_date_time_t*)element, env,
+                                                                          text_value);
+                                          if( AXIS2_FAILURE ==  status)
+                                          {
+                                              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                                  " %d :: %s", env->error->error_number,
+                                                                  AXIS2_ERROR_GET_MESSAGE(env->error));
+                                              return AXIS2_FAILURE;
+                                          }
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:when test="$nativePropertyType='axis2_base64_binary_t*'">
+                                          element = (void*)axis2_base64_binary_create( env);
+                                          text_value = AXIOM_ELEMENT_GET_TEXT(current_element, env, current_node );
+                                          status = AXIS2_BASE64_BINARY_SET_ENCODED_BINARY( <xsl:value-of select="$name"/>_impl-> attrib_<xsl:value-of select="$CName"/>, env,
+                                                                          text_value);
+                                          if( AXIS2_FAILURE ==  status)
+                                          {
+                                              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building element <xsl:value-of select="$propertyName"/> "
+                                                                  " %d :: %s", env->error->error_number,
+                                                                  AXIS2_ERROR_GET_MESSAGE(env->error));
+                                              return AXIS2_FAILURE;
+                                          }
+                                          AXIS2_ARRAY_LIST_ADD_AT( arr_list, env, i, element);
+                                        </xsl:when>
+                                        <xsl:otherwise>
+                                          <!-- TODO: add other types here -->
+                                          /** imposible to handle the request type - so please do it manually */
+                                          text_value = NULL;
+                                        </xsl:otherwise>
+                                     </xsl:choose>
+                                     status = <xsl:value-of select="$axis2_capsname"/>_SET_<xsl:value-of select="$CapsCName"/>( <xsl:value-of select="$name"/>, env,
+                                                                   arr_list);
+                                     if( AXIS2_FAILURE ==  status)
+                                     {
+                                         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for <xsl:value-of select="$propertyName"/> "
+                                                             " %d :: %s", env->error->error_number,
+                                                             AXIS2_ERROR_GET_MESSAGE(env->error));
+                                         return AXIS2_FAILURE;
+                                     }
+
+                                     i ++;
+                                  }
+                               }
+                             </xsl:otherwise> <!--closing otherwise for "../@ordered" -->
+                           </xsl:choose> <!-- chooses for ordered or not ordered -->
+                        </xsl:otherwise> <!-- closing when it is all the way an array -->
+                      </xsl:choose> <!-- check array or not -->
+                   </xsl:otherwise> <!-- closing when it is an element not(@attribute) -->
+                 </xsl:choose> <!--- chooosing for element or attribute -->
+            </xsl:for-each> <!-- closing for each property -->
+
+          return status;
+       }
+
+        axiom_node_t* AXIS2_CALL
+        <xsl:value-of select="$axis2_name"/>_parse_om (
+                <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                const axis2_env_t *env, axiom_node_t* parent)
+        {
+            <xsl:value-of select="$axis2_name"/>_impl_t *<xsl:value-of select="$name"/>_impl = NULL;
+
+            <!-- first declration part -->
+            axiom_namespace_t *ns1 = NULL;
+            <xsl:for-each select="property/@attribute">
+             <xsl:if test="position()=1">
+               axiom_attribute_t *text_attri = NULL;
+               axiom_element_t *parent_element = NULL;
+             </xsl:if>
+            </xsl:for-each>
+            <xsl:for-each select="property/@isarray">
+             <xsl:if test="position()=1">
+               long i = 0;
+               long count = 0;
+               void *element = NULL;
+             </xsl:if>
+            </xsl:for-each>
+                axis2_char_t* text_value = NULL;
+            <!--<xsl:if test="property">
+              <xsl:if test="not(property/@ours) or property/@ours=''">
+                axis2_char_t* text_value = NULL;
+              </xsl:if>
+            </xsl:if>-->
+
+            <xsl:for-each select="property">
+             <xsl:if test="position()=1">
+               <!--axiom_node_t *current_node = NULL;
+               axiom_element_t *current_element = NULL;-->
+             </xsl:if>
+            </xsl:for-each>
+            <xsl:if test="property and (not(property/@attribute) or property/@attribute='')">
+               axiom_node_t *current_node = NULL;
+               axiom_element_t *current_element = NULL;
+            </xsl:if>
+            AXIS2_ENV_CHECK(env, NULL);
+            <xsl:value-of select="$name"/>_impl = AXIS2_INTF_TO_IMPL(<xsl:value-of select="$name"/>);
+
+            ns1 = axiom_namespace_create (env,
+                                         "<xsl:value-of select="$nsuri"/>",
+                                         "<xsl:value-of select="$nsprefix"/>");
+            <xsl:if test="not(@type)">
+              <xsl:for-each select="property">
+               <xsl:if test="position()=1">
+                if( parent == NULL)
+                {
+                    current_element = axiom_element_create (env, parent, "<xsl:value-of select="$originalName"/>", ns1 , &amp;current_node);
+                    AXIOM_ELEMENT_SET_NAMESPACE ( current_element, env, ns1, current_node);
+                    parent = current_node;
+                }
+               </xsl:if>
+              </xsl:for-each>
+            </xsl:if>
+            <xsl:for-each select="property/@attribute">
+             <xsl:if test="position()=1">
+                 parent_element = AXIOM_NODE_GET_DATA_ELEMENT( parent, env);
+             </xsl:if>
+            </xsl:for-each>
+
+
+            <xsl:for-each select="property">
+              <xsl:variable name="propertyType">
+                 <xsl:choose>
+                   <xsl:when test="@isarray">axis2_array_list_t*</xsl:when>
+                   <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="capspropertyType">
+                 <xsl:choose>
+                   <xsl:when test="@isarray">AXIS2_ARRAY_LIST</xsl:when>
+                   <xsl:when test="not(@type)">AXIOM_NODE</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">AXIS2_<xsl:value-of select="@caps-type"/></xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@caps-type"/></xsl:otherwise> <!-- this will not be used -->
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="nativePropertyType"> <!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="nativeCapspropertyType"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="not(@type)">AXIOM_NODE</xsl:when> <!-- these are anonymous -->
+                   <xsl:when test="@ours">AXIS2_<xsl:value-of select="@caps-type"/></xsl:when>
+                   <xsl:otherwise><xsl:value-of select="@caps-type"/></xsl:otherwise> <!-- this will not be used -->
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+              <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+
+              <xsl:variable name="attriName"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="@isarray">(<xsl:value-of select="$nativePropertyType"/>)element</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+              <xsl:variable name="justAttriName"><!--these are used in arrays to take the native type-->
+                 <xsl:choose>
+                   <xsl:when test="@isarray">element</xsl:when>
+                   <xsl:otherwise><xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/></xsl:otherwise>
+                 </xsl:choose>
+              </xsl:variable>
+
+              <xsl:choose>
+                <xsl:when test="@attribute">
+                      <!-- here only simple type possible -->
+                      <xsl:choose>
+                        <!-- add int s -->
+                        <xsl:when test="$nativePropertyType='int'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           sprintf ( text_value, "%d", <xsl:value-of select="$attriName"/> );
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add int s -->
+                        <xsl:when test="$nativePropertyType='char'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           sprintf ( text_value, "%c", <xsl:value-of select="$attriName"/> );
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add short s -->
+                        <xsl:when test="$nativePropertyType='short'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           sprintf ( text_value, "%d", <xsl:value-of select="$attriName"/> );
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add long s -->
+                        <xsl:when test="$nativePropertyType='long'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           sprintf ( text_value, "%d", (int)<xsl:value-of select="$attriName"/> );
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add float s -->
+                        <xsl:when test="$nativePropertyType='float'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           sprintf ( text_value, "%f", <xsl:value-of select="$attriName"/> );
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add double s -->
+                        <xsl:when test="$nativePropertyType='double'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           sprintf ( text_value, "%f", <xsl:value-of select="$attriName"/> );
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add axis2_char_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_char_t*'">
+                           text_value = <xsl:value-of select="$attriName"/>;
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                        </xsl:when>
+
+                        <!-- add axis2_uri_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_uri_t*'">
+                           text_value = AXIS2_URI_TO_STRING(<xsl:value-of select="$attriName"/>, env, AXIS2_URI_UNP_OMITUSERINFO);
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                        </xsl:when>
+
+                        <!-- add axis2_qname_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_qname_t*'">
+                           text_value = AXIS2_QNAME_TO_STRING(<xsl:value-of select="$attriName"/>, env);
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                        </xsl:when>
+
+                        <!-- add axis2_bool_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_bool_t'">
+                           text_value = (<xsl:value-of select="$attriName"/>)?"true":"false";
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                        </xsl:when>
+                        <!-- add axis2_date_time_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_date_time_t*'">
+                           text_value =  AXIS2_DATE_TIME_SERIALIZE_DATE_TIME( <xsl:value-of select="$attriName"/>, env);
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                        </xsl:when>
+                        <!-- add axis2_base64_binary_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_base64_binary_t*'">
+                           text_value =  AXIS2_BASE64_BINARY_GET_ENCODED_BINARY( <xsl:value-of select="$attriName"/>, env);
+                           text_attri = axiom_attribute_create (env, "<xsl:value-of select="$propertyName"/>", text_value, ns1);
+                           AXIOM_ELEMENT_ADD_ATTRIBUTE (parent_element, env, text_attri, parent);
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <!--TODO: add new attributes types -->
+                          /** can not handle the attribute type <xsl:value-of select="$nativePropertyType"/>*/
+                          text_value = NULL;
+                          parent_element = NULL;
+                          text_attri = NULL;
+                        </xsl:otherwise>
+                      </xsl:choose>
+                </xsl:when>
+                <xsl:otherwise>
+                   <!-- handles arrays -->
+                   <xsl:if test="@isarray">
+                     /**
+                      * parsing <xsl:value-of select="$CName"/> array
+                      */
+                     if ( <xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/> != NULL)
+                     {
+                         count = AXIS2_ARRAY_LIST_SIZE( <xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/>, env);
+                         for( i = 0; i &lt; count; i ++)
+                         {
+                            element = AXIS2_ARRAY_LIST_GET( <xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/>, env, i);
+                    </xsl:if>
+                     <!-- for each non attribute properties there will always be an element-->
+                     /**
+                      * parsing <xsl:value-of select="$propertyName"/> element
+                      */
+                     current_element = axiom_element_create (env, parent, "<xsl:value-of select="$propertyName"/>", ns1 , &amp;current_node);
+                     AXIOM_ELEMENT_SET_NAMESPACE ( current_element, env, ns1, current_node);
+
+
+                      <!-- how to build all the ours things -->
+                      <xsl:choose>
+                        <xsl:when test="@ours">
+                           <xsl:value-of select="$nativeCapspropertyType"/>_PARSE_OM( <xsl:value-of select="$attriName"/>, env, current_node);
+                        </xsl:when>
+
+                        <!-- add int s -->
+                        <xsl:when test="$nativePropertyType='int'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           <xsl:choose>
+                             <xsl:when test="@isarray">
+                               sprintf ( text_value, "%d", *((<xsl:value-of select="$nativePropertyType"/>*)element) );
+                             </xsl:when>
+                             <xsl:otherwise>
+                               sprintf ( text_value, "%d", <xsl:value-of select="$attriName"/> );
+                             </xsl:otherwise>
+                           </xsl:choose>
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add char s -->
+                        <xsl:when test="$nativePropertyType='char'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           <xsl:choose>
+                             <xsl:when test="@isarray">
+                               sprintf ( text_value, "%c", *((<xsl:value-of select="$nativePropertyType"/>*)element) );
+                             </xsl:when>
+                             <xsl:otherwise>
+                               sprintf ( text_value, "%c", <xsl:value-of select="$attriName"/> );
+                             </xsl:otherwise>
+                           </xsl:choose>
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add short s -->
+                        <xsl:when test="$nativePropertyType='short'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           <xsl:choose>
+                             <xsl:when test="@isarray">
+                               sprintf ( text_value, "%d", *((<xsl:value-of select="$nativePropertyType"/>*)element) );
+                             </xsl:when>
+                             <xsl:otherwise>
+                               sprintf ( text_value, "%d", <xsl:value-of select="$attriName"/> );
+                             </xsl:otherwise>
+                           </xsl:choose>
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+
+                        <!-- NOTE: arrays for long, float, int are handled differently. they are stored in pointers -->
+                        <!-- add long s -->
+                        <xsl:when test="$nativePropertyType='long'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           <xsl:choose>
+                             <xsl:when test="@isarray">
+                               sprintf ( text_value, "%d", (int)*((<xsl:value-of select="$nativePropertyType"/>*)element) );
+                             </xsl:when>
+                             <xsl:otherwise>
+                               sprintf ( text_value, "%d", (int)<xsl:value-of select="$attriName"/> );
+                             </xsl:otherwise>
+                           </xsl:choose>
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add float s -->
+                        <xsl:when test="$nativePropertyType='float'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           <xsl:choose>
+                             <xsl:when test="@isarray">
+                               sprintf ( text_value, "%f", *((<xsl:value-of select="$nativePropertyType"/>*)element) );
+                             </xsl:when>
+                             <xsl:otherwise>
+                               sprintf ( text_value, "%f", <xsl:value-of select="$attriName"/> );
+                             </xsl:otherwise>
+                           </xsl:choose>
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add double s -->
+                        <xsl:when test="$nativePropertyType='double'">
+                           text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof ( axis2_char_t) * 64);
+                           <xsl:choose>
+                             <xsl:when test="@isarray">
+                               sprintf ( text_value, "%f", *((<xsl:value-of select="$nativePropertyType"/>*)element) );
+                             </xsl:when>
+                             <xsl:otherwise>
+                               sprintf ( text_value, "%f", <xsl:value-of select="$attriName"/> );
+                             </xsl:otherwise>
+                           </xsl:choose>
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                           AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!-- add axis2_char_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_char_t*'">
+                           text_value = <xsl:value-of select="$attriName"/>;
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                        </xsl:when>
+
+                        <!-- add axis2_uri_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_uri_t*'">
+                           text_value = AXIS2_URI_TO_STRING(<xsl:value-of select="$attriName"/>, env, AXIS2_URI_UNP_OMITUSERINFO);
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                        </xsl:when>
+
+                        <!-- add axis2_qname_t s -->
+                        <xsl:when test="$nativePropertyType='axis2_qname_t*'">
+                           text_value = AXIS2_QNAME_TO_STRING(<xsl:value-of select="$attriName"/>, env);
+                           AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                        </xsl:when>
+
+                        <!-- add nodes -->
+                        <xsl:when test="$nativePropertyType='axiom_node_t*'">
+                           text_value = NULL; /** just to bypass the warning unused variable */
+                           AXIOM_NODE_ADD_CHILD( current_node, env, <xsl:value-of select="$attriName"/>);
+                        </xsl:when>
+
+                        <xsl:when test="$nativePropertyType='axis2_date_time_t*'">
+                          text_value = AXIS2_DATE_TIME_SERIALIZE_DATE_TIME( <xsl:value-of select="$attriName"/>, env);
+                          AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                          AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <xsl:when test="$propertyType='axis2_base64_binary_t*'">
+                          text_value = AXIS2_BASE64_BINARY_GET_ENCODED_BINARY(<xsl:value-of select="$attriName"/>, env);
+                          AXIOM_ELEMENT_SET_TEXT(current_element, env, text_value, current_node);
+                          AXIS2_FREE( env-> allocator, text_value);
+                        </xsl:when>
+
+                        <!--TODO: This should be extended for all the types that should be freed.. -->
+                        <xsl:otherwise>
+                          /** This is an unknown type or a primitive. handle this manually for unknown type */
+                          text_value = NULL;
+                        </xsl:otherwise>
+                      </xsl:choose>
+
+                   <!-- close tags arrays -->
+                   <xsl:if test="@isarray">
+                         }
+                         AXIS2_ARRAY_LIST_FREE( <xsl:value-of select="$name"/>_impl->attrib_<xsl:value-of select="$CName"/>, env);
+                     }
+                   </xsl:if>
+                </xsl:otherwise> <!-- othewise for non attributes -->
+              </xsl:choose>
+            </xsl:for-each>
+            return parent;
+        }
+
+        <xsl:for-each select="property">
+            <xsl:variable name="propertyType">
+               <xsl:choose>
+                    <xsl:when test="@isarray">axis2_array_list_t*</xsl:when>
+                    <xsl:when test="not(@type)">axiom_node_t*</xsl:when> <!-- these are anonymous -->
+                    <xsl:when test="@ours">axis2_<xsl:value-of select="@type"/>_t*</xsl:when>
+                    <xsl:otherwise><xsl:value-of select="@type"/></xsl:otherwise>
+               </xsl:choose>
+            </xsl:variable>
+            <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+            <xsl:variable name="CName"><xsl:value-of select="@cname"></xsl:value-of></xsl:variable>
+
+            /**
+             * getter for <xsl:value-of select="$propertyName"/>.
+             */
+            <xsl:value-of select="$propertyType"/> AXIS2_CALL
+            <xsl:value-of select="$axis2_name"/>_get_<xsl:value-of select="$CName"/>(
+                    <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                    const axis2_env_t *env)
+             {
+                <xsl:value-of select="$axis2_name"/>_impl_t *<xsl:value-of select="$name"/>_impl = NULL;
+
+                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+                <xsl:value-of select="$name"/>_impl = AXIS2_INTF_TO_IMPL(<xsl:value-of select="$name"/>);
+
+                return <xsl:value-of select="$name"/>_impl-> attrib_<xsl:value-of select="$CName"/>;
+             }
+
+            /**
+             * setter for <xsl:value-of select="$propertyName"/>
+             */
+            axis2_status_t AXIS2_CALL
+            <xsl:value-of select="$axis2_name"/>_set_<xsl:value-of select="$CName"/>(
+                    <xsl:value-of select="$axis2_name"/>_t*<xsl:text> </xsl:text><xsl:value-of select="$name"/>,
+                    const axis2_env_t *env,
+                    <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text> param_<xsl:value-of select="$CName"/>)
+             {
+                <xsl:value-of select="$axis2_name"/>_impl_t *<xsl:value-of select="$name"/>_impl = NULL;
+                <xsl:if test="@isarray">
+                 int size = 0;
+                </xsl:if>
+
+                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+                <xsl:value-of select="$name"/>_impl = AXIS2_INTF_TO_IMPL(<xsl:value-of select="$name"/>);
+
+                <xsl:if test="@isarray">
+                  size = AXIS2_ARRAY_LIST_SIZE( param_<xsl:value-of select="$CName"/>, env);
+                  <xsl:if test="not(@unbound)">
+                      if ( size &gt; <xsl:value-of select="@maxOccurs"/> )
+                      {
+                          AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "<xsl:value-of select="$propertyName"/> has exceed the maxOccurs(<xsl:value-of select="@maxOccurs"/>)"
+                                                     " %d :: %s", env->error->error_number,
+                                                     AXIS2_ERROR_GET_MESSAGE(env->error));
+                          return AXIS2_FAILURE;
+                      }
+                  </xsl:if>
+                  if ( size &lt; <xsl:value-of select="@minOccurs"/> )
+                  {
+                      AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "<xsl:value-of select="$propertyName"/> has less than minOccurs(<xsl:value-of select="@minOccurs"/>)"
+                                                 " %d :: %s", env->error->error_number,
+                                                 AXIS2_ERROR_GET_MESSAGE(env->error));
+                      return AXIS2_FAILURE;
+                  }
+                </xsl:if>
+                <xsl:if test="not(@nillable) and @ours">
+                  if( NULL == param_<xsl:value-of select="$CName"/> )
+                  {
+                      AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "<xsl:value-of select="$propertyName"/> is NULL, but not a nullable element"
+                                                 " %d :: %s", env->error->error_number,
+                                                 AXIS2_ERROR_GET_MESSAGE(env->error));
+                      return AXIS2_FAILURE;
+                  }
+                </xsl:if>
+                <xsl:value-of select="$name"/>_impl-> attrib_<xsl:value-of select="$CName"/> = param_<xsl:value-of select="$CName"/>;
+                return AXIS2_SUCCESS;
+             }
+        </xsl:for-each>
+
+    </xsl:template>
+
+</xsl:stylesheet>
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/PlainBeanTemplate.xsl b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/PlainBeanTemplate.xsl
new file mode 100644
index 0000000..b7b3407
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/PlainBeanTemplate.xsl
@@ -0,0 +1,109 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+

+     <!-- cater for the multiple classes - wrappped mode -->

+    <xsl:template match="/beans">

+        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>

+        /**

+        * <xsl:value-of select="$name"/>.java

+        *

+        * This file was auto-generated from WSDL

+        * by the Apache Axis2 version: #axisVersion# #today#

+        */

+

+        package <xsl:value-of select="@package"/>;

+

+        /**

+        *  <xsl:value-of select="$name"/> wrapped bean classes

+        */

+        public class <xsl:value-of select="$name"/>{

+

+        <xsl:apply-templates/>

+

+        }

+    </xsl:template>

+

+    <!--cater for the multiple classes - unwrappped mode -->

+    <xsl:template match="/">

+        <xsl:apply-templates/>

+    </xsl:template>

+

+

+    <xsl:template match="bean">

+        /**

+        * <xsl:value-of select="@name"/>.java

+        *

+        * This file was auto-generated from WSDL

+        * by the Apache Axis2 version: #axisVersion# #today#

+        */

+        package <xsl:value-of select="@package"/>;

+        <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>

+

+        /**

+        *  <xsl:value-of select="$name"/> bean class

+        */

+

+        public class <xsl:value-of select="$name"/> <xsl:if test="@extension"> extends <xsl:value-of select="@extension"/></xsl:if>{

+

+        <xsl:choose>

+            <xsl:when test="@type">/* This type was generated from the piece of schema that had

+                name = <xsl:value-of select="@originalName"/>

+                Namespace URI = <xsl:value-of select="@nsuri"/>

+                Namespace Prefix = <xsl:value-of select="@nsprefix"/>

+                */

+            </xsl:when>

+            <xsl:otherwise>

+                public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(

+                "<xsl:value-of select="@nsuri"/>",

+                "<xsl:value-of select="@originalName"/>",

+                "<xsl:value-of select="@nsprefix"/>");

+

+            </xsl:otherwise>

+        </xsl:choose>

+

+

+        <xsl:for-each select="property">

+            <xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable>

+            <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>

+            <xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable>

+            <xsl:variable name="varName">local<xsl:value-of select="$javaName"/></xsl:variable>

+            /**

+            * field for <xsl:value-of select="$javaName"/>

+            <xsl:if test="@attribute">* This was an Attribute!</xsl:if>

+            <xsl:if test="@array">* This was an Array!</xsl:if>

+

+            */

+            private <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text><xsl:value-of select="$varName" /> ;

+

+            /**

+            * Auto generated getter method

+            * @return <xsl:value-of select="$propertyType"/>

+            */

+            public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){

+            return <xsl:value-of select="$varName"/>;

+            }

+

+            /**

+            * Auto generated setter method

+            * @param param <xsl:value-of select="$javaName"/>

+            */

+            public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){

+            <!--Add the validation code. For now we only add the validation code for arrays-->

+            <xsl:if test="@array">

+                <xsl:if test="not(@unbound)">

+                    if (param.length &gt; <xsl:value-of select="@maxOccurs"></xsl:value-of>){

+                    throw new java.lang.RuntimeException();

+                    }

+                </xsl:if>

+                <xsl:if test="@minOccurs">

+                    if (param.length &lt; <xsl:value-of select="@minOccurs"></xsl:value-of>){

+                    throw new java.lang.RuntimeException();

+                    }

+                </xsl:if>

+            </xsl:if>

+            this.<xsl:value-of select="$varName"/>=param;

+            }

+        </xsl:for-each>

+        }

+    </xsl:template>

+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/CTypeMap.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/CTypeMap.java
new file mode 100644
index 0000000..f4c2968
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/CTypeMap.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.typemap;
+
+import org.apache.axis2.wsdl.codegen.emitter.CTypeInfo;
+
+import java.util.Map;
+
+/**
+ * The java type map. uses a static map for caching
+ * Most code from Axis 1 Codebase*
+ * Most code JavaTypeMap
+ */
+public class CTypeMap implements TypeMap{
+
+    public Map getTypeMap()
+    {
+         return CTypeInfo.getTypeMap();
+    }
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/JavaTypeMap.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/JavaTypeMap.java
new file mode 100644
index 0000000..1d9b376
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/JavaTypeMap.java
@@ -0,0 +1,213 @@
+package org.apache.axis2.schema.typemap;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.databinding.types.Day;

+import org.apache.axis2.databinding.types.Duration;

+import org.apache.axis2.databinding.types.Entities;

+import org.apache.axis2.databinding.types.Entity;

+import org.apache.axis2.databinding.types.HexBinary;

+import org.apache.axis2.databinding.types.IDRef;

+import org.apache.axis2.databinding.types.IDRefs;

+import org.apache.axis2.databinding.types.Id;

+import org.apache.axis2.databinding.types.Language;

+import org.apache.axis2.databinding.types.Month;

+import org.apache.axis2.databinding.types.MonthDay;

+import org.apache.axis2.databinding.types.NCName;

+import org.apache.axis2.databinding.types.NMToken;

+import org.apache.axis2.databinding.types.NMTokens;

+import org.apache.axis2.databinding.types.Name;

+import org.apache.axis2.databinding.types.NegativeInteger;

+import org.apache.axis2.databinding.types.NonNegativeInteger;

+import org.apache.axis2.databinding.types.NonPositiveInteger;

+import org.apache.axis2.databinding.types.NormalizedString;

+import org.apache.axis2.databinding.types.Notation;

+import org.apache.axis2.databinding.types.PositiveInteger;

+import org.apache.axis2.databinding.types.Time;

+import org.apache.axis2.databinding.types.Token;

+import org.apache.axis2.databinding.types.URI;

+import org.apache.axis2.databinding.types.UnsignedByte;

+import org.apache.axis2.databinding.types.UnsignedInt;

+import org.apache.axis2.databinding.types.UnsignedLong;

+import org.apache.axis2.databinding.types.UnsignedShort;

+import org.apache.axis2.databinding.types.Year;

+import org.apache.axis2.databinding.types.YearMonth;

+import org.apache.axis2.schema.SchemaConstants;

+

+import javax.xml.namespace.QName;

+import java.math.BigDecimal;

+import java.util.HashMap;

+import java.util.Map;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * The java type map. uses a static map for caching

+ * Most code from Axis 1 Codebase

+ */

+public class JavaTypeMap implements TypeMap {

+

+    public Map getTypeMap() {

+        return typeMap;

+    }

+

+    private static Map typeMap = new HashMap();

+

+    static {

+        // If SOAP 1.1 over the wire, map wrapper classes to XSD primitives.

+        addTypemapping(SchemaConstants.XSD_STRING,

+                java.lang.String.class.getName());

+

+        // The XSD Primitives are mapped to java primitives.

+        addTypemapping(SchemaConstants.XSD_BOOLEAN, boolean.class.getName());

+        addTypemapping(SchemaConstants.XSD_DOUBLE, double.class.getName());

+        addTypemapping(SchemaConstants.XSD_FLOAT, float.class.getName());

+        addTypemapping(SchemaConstants.XSD_INT, int.class.getName());

+        addTypemapping(SchemaConstants.XSD_INTEGER,

+                java.math.BigInteger.class.getName());

+        addTypemapping(SchemaConstants.XSD_LONG, long.class.getName());

+        addTypemapping(SchemaConstants.XSD_SHORT, short.class.getName());

+        addTypemapping(SchemaConstants.XSD_BYTE, byte.class.getName());

+        addTypemapping(SchemaConstants.XSD_ANY, OMElement.class.getName());

+        addTypemapping(SchemaConstants.XSD_DECIMAL, BigDecimal.class.getName());

+

+        //anytype is mapped to the OMElement instead of the java.lang.Object

+        addTypemapping(SchemaConstants.XSD_ANYTYPE,

+                OMElement.class.getName());

+

+        //Qname maps to  jax rpc QName class

+        addTypemapping(SchemaConstants.XSD_QNAME,

+                javax.xml.namespace.QName.class.getName());

+

+        //xsd Date is mapped to the java.util.date!

+        addTypemapping(SchemaConstants.XSD_DATE,

+                java.util.Date.class.getName());

+

+        // Mapping for xsd:time.  Map to Axis type Time

+        addTypemapping(SchemaConstants.XSD_TIME,

+                Time.class.getName());

+        addTypemapping(SchemaConstants.XSD_DATETIME,

+                java.util.Calendar.class.getName());

+

+        //as for the base 64 encoded binary stuff we map it to a javax.

+        // activation.Datahandler object

+        addTypemapping(SchemaConstants.XSD_BASE64,

+                javax.activation.DataHandler.class.getName());

+        

+        addTypemapping(SchemaConstants.XSD_HEXBIN,

+                HexBinary.class.getName());

+

+        // These are the g* types (gYearMonth, etc) which map to Axis types

+        addTypemapping(SchemaConstants.XSD_YEARMONTH,

+                YearMonth.class.getName());

+        addTypemapping(SchemaConstants.XSD_YEAR,

+                Year.class.getName());

+        addTypemapping(SchemaConstants.XSD_MONTH,

+                Month.class.getName());

+        addTypemapping(SchemaConstants.XSD_DAY,

+                Day.class.getName());

+        addTypemapping(SchemaConstants.XSD_MONTHDAY,

+                MonthDay.class.getName());

+

+        // xsd:token

+        addTypemapping(SchemaConstants.XSD_TOKEN, Token.class.getName());

+

+        // a xsd:normalizedString

+        addTypemapping(SchemaConstants.XSD_NORMALIZEDSTRING,

+                NormalizedString.class.getName());

+

+        // a xsd:unsignedLong

+        addTypemapping(SchemaConstants.XSD_UNSIGNEDLONG,

+                UnsignedLong.class.getName());

+

+        // a xsd:unsignedInt

+        addTypemapping(SchemaConstants.XSD_UNSIGNEDINT,

+                UnsignedInt.class.getName());

+

+        // a xsd:unsignedShort

+        addTypemapping(SchemaConstants.XSD_UNSIGNEDSHORT,

+                UnsignedShort.class.getName());

+

+        // a xsd:unsignedByte

+        addTypemapping(SchemaConstants.XSD_UNSIGNEDBYTE,

+                UnsignedByte.class.getName());

+

+        // a xsd:nonNegativeInteger

+        addTypemapping(SchemaConstants.XSD_NONNEGATIVEINTEGER,

+                NonNegativeInteger.class.getName());

+

+        // a xsd:negativeInteger

+        addTypemapping(SchemaConstants.XSD_NEGATIVEINTEGER,

+                NegativeInteger.class.getName());

+

+        // a xsd:positiveInteger

+        addTypemapping(SchemaConstants.XSD_POSITIVEINTEGER,

+                PositiveInteger.class.getName());

+

+        // a xsd:nonPositiveInteger

+        addTypemapping(SchemaConstants.XSD_NONPOSITIVEINTEGER,

+                NonPositiveInteger.class.getName());

+

+        // a xsd:Name

+        addTypemapping(SchemaConstants.XSD_NAME, Name.class.getName());

+

+        // a xsd:NCName

+        addTypemapping(SchemaConstants.XSD_NCNAME, NCName.class.getName());

+

+        // a xsd:ID

+        addTypemapping(SchemaConstants.XSD_ID, Id.class.getName());

+

+        // a xml:lang

+        // addTypemapping(SchemaConstants.XML_LANG,Language.class.getName());

+

+        // a xsd:language

+        addTypemapping(SchemaConstants.XSD_LANGUAGE, Language.class.getName());

+

+        // a xsd:NmToken

+        addTypemapping(SchemaConstants.XSD_NMTOKEN, NMToken.class.getName());

+

+        // a xsd:NmTokens

+        addTypemapping(SchemaConstants.XSD_NMTOKENS, NMTokens.class.getName());

+

+        // a xsd:NOTATION

+        addTypemapping(SchemaConstants.XSD_NOTATION, Notation.class.getName());

+

+        // a xsd:XSD_ENTITY

+        addTypemapping(SchemaConstants.XSD_ENTITY, Entity.class.getName());

+

+        // a xsd:XSD_ENTITIES

+        addTypemapping(SchemaConstants.XSD_ENTITIES, Entities.class.getName());

+

+        // a xsd:XSD_IDREF

+        addTypemapping(SchemaConstants.XSD_IDREF, IDRef.class.getName());

+

+        // a xsd:XSD_XSD_IDREFS

+        addTypemapping(SchemaConstants.XSD_IDREFS, IDRefs.class.getName());

+

+        // a xsd:Duration

+        addTypemapping(SchemaConstants.XSD_DURATION, Duration.class.getName());

+

+        // a xsd:anyURI

+        addTypemapping(SchemaConstants.XSD_ANYURI, URI.class.getName());

+

+

+    }

+

+    private static void addTypemapping(QName name, String str) {

+        typeMap.put(name, str);

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/TypeMap.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/TypeMap.java
new file mode 100644
index 0000000..c63a34f
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/typemap/TypeMap.java
@@ -0,0 +1,26 @@
+package org.apache.axis2.schema.typemap;

+

+import java.util.Map;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * This is a  typemapper for the bean writer

+ */

+public interface TypeMap {

+

+    public Map getTypeMap();

+}

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/util/PrimitiveTypeFinder.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/util/PrimitiveTypeFinder.java
new file mode 100644
index 0000000..2b82c23
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/util/PrimitiveTypeFinder.java
@@ -0,0 +1,54 @@
+package org.apache.axis2.schema.util;

+

+import java.util.ArrayList;

+import java.util.List;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A simple utiliy to find whether a given class name is

+ * primitive or not

+ */

+public class PrimitiveTypeFinder {

+

+    private static List primitiveClassNameList;

+

+    static{

+        primitiveClassNameList =  new ArrayList();

+        //add the java primitive class names

+        primitiveClassNameList.add(int.class.getName());

+        primitiveClassNameList.add(long.class.getName());

+        primitiveClassNameList.add(byte.class.getName());

+        primitiveClassNameList.add(double.class.getName());

+        primitiveClassNameList.add(boolean.class.getName());

+        primitiveClassNameList.add(float.class.getName());

+        primitiveClassNameList.add(short.class.getName());

+        primitiveClassNameList.add(char.class.getName());

+

+    }

+

+    /**

+     *

+     * @param className

+     */

+    public static boolean isPrimitive(String className){

+        //if an array type is passed, strip out the [] part

+        if (className.indexOf("[]")!=-1){

+           className = className.substring(0,className.indexOf("[]"));

+        }

+        return primitiveClassNameList.contains(className);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/util/SchemaPropertyLoader.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/util/SchemaPropertyLoader.java
new file mode 100644
index 0000000..1522a9b
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/util/SchemaPropertyLoader.java
@@ -0,0 +1,89 @@
+package org.apache.axis2.schema.util;
+
+import org.apache.axis2.schema.SchemaCompiler;
+import org.apache.axis2.schema.SchemaConstants;
+import org.apache.axis2.schema.typemap.TypeMap;
+import org.apache.axis2.schema.writer.BeanWriter;
+
+import java.util.Properties;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * Loads the properties  for the schema compiler.
+ */
+public class SchemaPropertyLoader {
+    private static String beanTemplate = null;
+    private static BeanWriter beanWriterInstance = null;
+    private static TypeMap typeMapperInstance = null;
+    private static Properties propertyMap;
+
+    private static final String ADB_PROPERTY_FILE_KEY = "org.apache.adb.properties";
+
+    static {
+        try {
+            //load the properties
+            Properties props = new Properties();
+            String schemaPropFilename = System.getProperty(ADB_PROPERTY_FILE_KEY);
+            if (schemaPropFilename==null){
+                 // there was no system property .load the default
+                  props.load(SchemaCompiler.class.getResourceAsStream(SchemaConstants.SchemaPropertyNames.SCHEMA_COMPILER_PROPERTIES));
+            }else{
+                props.load(SchemaCompiler.class.getResourceAsStream(schemaPropFilename));
+            }
+
+
+            String beanWriterClassName = props.getProperty(SchemaConstants.SchemaPropertyNames.BEAN_WRITER_KEY);
+            if (beanWriterClassName != null) {
+                beanWriterInstance = (BeanWriter) Class.forName(beanWriterClassName).newInstance();
+            }
+
+            String typeMapperClassName = props.getProperty(SchemaConstants.SchemaPropertyNames.BEAN_WRITER_TYPEMAP_KEY);
+            if (typeMapperClassName != null) {
+                typeMapperInstance = (TypeMap) Class.forName(typeMapperClassName).newInstance();
+            }
+
+            beanTemplate = props.getProperty(SchemaConstants.SchemaPropertyNames.BEAN_WRITER_TEMPLATE_KEY);
+
+            //set the props as the property map
+            propertyMap = props;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+
+    }
+
+    /**
+     * Exposes the whole property set
+     * @return Returns Properties.
+     */
+    public static Properties getPropertyMap() {
+        return propertyMap;
+    }
+
+    public static String getBeanTemplate() {
+        return beanTemplate;
+    }
+
+    public static BeanWriter getBeanWriterInstance() {
+        return beanWriterInstance;
+    }
+
+    public static TypeMap getTypeMapperInstance() {
+        return typeMapperInstance;
+    }
+}
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java
new file mode 100644
index 0000000..0aa0b59
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java
@@ -0,0 +1,121 @@
+package org.apache.axis2.schema.writer;
+
+import javax.xml.namespace.QName;
+import org.apache.axis2.schema.BeanWriterMetaInfoHolder;
+import org.apache.axis2.schema.CompilerOptions;
+import org.apache.axis2.schema.SchemaCompilationException;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaSimpleType;
+
+import java.io.IOException;
+import java.util.Map;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * The bean writer interface. The schema compiler expects one of these to be
+ * presented to it and calls the appropriate methods
+ */
+public interface BeanWriter {
+
+
+    /**
+     * Initializes the writer with compiler options.
+     *
+     * @param options
+     * @throws IOException
+     */
+    public void init(CompilerOptions options) throws SchemaCompilationException;
+
+    /**
+     * Writes a wrapped class. This will have effect only if the CompilerOptions wrapclassses
+     * returns true.
+     */
+    public void writeBatch() throws SchemaCompilationException;
+
+    /**
+     * Gets a map of models. This is useful for tight integrations where the internal workings
+     * of the schema compiler may be exposed.
+     */
+    public Map getModelMap();
+
+    /** Make the fully qualified class name for an element or named type
+     * @param qName the qualified Name for this element or type in the schema
+     * @return the appropriate fully qualified class name to use in generated code
+     */
+    public String makeFullyQualifiedClassName(QName qName);
+
+    /**
+     * Write a complex type
+     *
+     * @param complexType
+     * @param typeMap
+     * @param metainf
+     * @param fullyQualifiedClassName the name returned by makeFullyQualifiedClassName() or null if it wasn't called
+     * @return Returns String.
+     * @throws SchemaCompilationException
+     */
+    public String write(XmlSchemaComplexType complexType, Map typeMap, BeanWriterMetaInfoHolder metainf)
+            throws SchemaCompilationException;
+
+    /**
+     * Write a element
+     *
+     * @param element
+     * @param typeMap
+     * @param metainf
+     * @return Returns String.
+     * @throws SchemaCompilationException
+     */
+    public String write(XmlSchemaElement element, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException;
+
+
+    /**
+     * Write a simple type
+     *
+     * @param simpleType
+     * @param typeMap
+     * @param metainf
+     * @return Returns String.
+     * @throws SchemaCompilationException
+     */
+    public String write(XmlSchemaSimpleType simpleType, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException;
+
+
+     /**
+     * Find whether the mapper class name is present
+     * @param mapperPackageName
+     */
+    public String getExtensionMapperPackageName();
+
+    /**
+     * Registers the mapper package name - this is relevant to languages
+     * that enforce packaging such as Java or C#. May be ignored in other
+     * languages
+     * @param mapperPackageName
+     */
+    public void registerExtensionMapperPackageName(String mapperPackageName);
+
+
+    /**
+     * Write the extensions mapper component - this is relevant to only the OOP languages
+     * and a particular implementation may ignore this
+     * @param metainfArray
+     * @param namespaceToUse
+     */
+    public void writeExtensionMapper(BeanWriterMetaInfoHolder[] metainfArray) throws SchemaCompilationException;
+}
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java
new file mode 100644
index 0000000..195b3ce
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java
@@ -0,0 +1,739 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.writer;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.apache.axis2.schema.typemap.JavaTypeMap;
+import org.apache.axis2.schema.CompilerOptions;
+import org.apache.axis2.schema.SchemaCompilationException;
+import org.apache.axis2.schema.BeanWriterMetaInfoHolder;
+import org.apache.axis2.schema.SchemaCompiler;
+import org.apache.axis2.schema.util.SchemaPropertyLoader;
+import org.apache.axis2.schema.util.PrimitiveTypeFinder;
+import org.apache.axis2.schema.i18n.SchemaCompilerMessages;
+import org.apache.axis2.util.XSLTUtils;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.XSLTTemplateProcessor;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaSimpleType;
+
+import javax.xml.transform.Templates;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.namespace.QName;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.io.*;
+
+/**
+ * Java Bean writer for the schema compiler.
+ */
+public class CStructWriter implements BeanWriter {
+
+    public static final String WRAPPED_DATABINDING_CLASS_NAME = "WrappedDatabinder";
+    public static final String AXIS2_PREFIX = "axis2_";
+    private String javaBeanTemplateName = null;
+    private boolean templateLoaded = false;
+    private Templates sourceTemplateCache;
+    private Templates headerTemplateCache;
+
+    private List namesList;
+    private static int count = 0;
+    private boolean wrapClasses = false;
+    private boolean writeClasses=false;
+
+    protected File rootDir;
+
+    private Document globalWrappedSourceDocument;
+    private Document globalWrappedHeaderDocument;
+
+    private Map modelMap = new HashMap();
+    private static final String DEFAULT_PACKAGE = "adb";
+    private static final String DEFAULT_C_CLASS_NAME = "axiom_node_t*";
+
+    private Map baseTypeMap = new JavaTypeMap().getTypeMap();
+
+
+    /**
+     * Default constructor
+     */
+    public CStructWriter() {
+    }
+
+    /**
+     * This returns a map of Qnames vs DOMDocument models. One can use this method to
+     * obtain the raw DOMmodels used to write the classes.
+     * This has no meaning when the classes are supposed to be wrapped  so the
+     *
+     * @see BeanWriter#getModelMap()
+     * @return Returns Map.
+     */
+    public Map getModelMap(){
+        return modelMap;
+    }
+
+    public void init(CompilerOptions options) throws SchemaCompilationException {
+        try {
+            initWithFile(options.getOutputLocation());
+
+            writeClasses = options.isWriteOutput();
+            if (!writeClasses){
+                wrapClasses = false;
+            }else{
+                wrapClasses = options.isWrapClasses();
+            }
+
+            //if the wrap mode is set then create a global document to keep the wrapped
+            //element models
+            if (options.isWrapClasses()) {
+                globalWrappedSourceDocument = XSLTUtils.getDocument();
+                Element rootElement = XSLTUtils.getElement(globalWrappedSourceDocument, "beans");
+                globalWrappedSourceDocument.appendChild(rootElement);
+                XSLTUtils.addAttribute(globalWrappedSourceDocument, "name", CStructWriter.WRAPPED_DATABINDING_CLASS_NAME, rootElement);
+
+                globalWrappedHeaderDocument = XSLTUtils.getDocument();
+                rootElement = XSLTUtils.getElement(globalWrappedHeaderDocument, "beans");
+                globalWrappedHeaderDocument.appendChild(rootElement);
+                XSLTUtils.addAttribute(globalWrappedHeaderDocument, "name", CStructWriter.WRAPPED_DATABINDING_CLASS_NAME, rootElement);
+
+            }
+
+
+        } catch (IOException e) {
+            throw new SchemaCompilationException(e);
+        } catch (ParserConfigurationException e) {
+            throw new SchemaCompilationException(e); //todo need to put correct error messages
+        }
+    }
+
+    /**
+     * @param element
+     * @param typeMap
+     * @param metainf
+     * @return Returns String.
+     * @throws org.apache.axis2.schema.SchemaCompilationException
+     */
+    public String write(XmlSchemaElement element, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException {
+
+        try {
+            QName qName = element.getQName();
+
+            return process(qName, metainf, typeMap, true);
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+
+
+    }
+
+    /**
+     * @param complexType
+     * @param typeMap
+     * @param metainf
+     * @param fullyQualifiedClassName the name returned by makeFullyQualifiedClassName() or null if it wasn't called
+     * @throws org.apache.axis2.schema.SchemaCompilationException
+     *
+     * @see org.apache.axis2.schema.writer.BeanWriter
+     */
+    public String write(XmlSchemaComplexType complexType, Map typeMap, BeanWriterMetaInfoHolder metainf)
+            throws SchemaCompilationException {
+
+        try {
+            //determine the package for this type.
+            QName qName = complexType.getQName();
+            return process(qName, metainf, typeMap, false);
+
+        } catch (SchemaCompilationException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+
+
+    }
+
+    /**
+     * @throws SchemaCompilationException
+     * @see org.apache.axis2.schema.writer.BeanWriter#writeBatch()
+     */
+    public void writeBatch() throws SchemaCompilationException {
+        try {
+            if (wrapClasses) {
+
+                File outSource = createOutFile(CStructWriter.WRAPPED_DATABINDING_CLASS_NAME,".c");
+                File outHeader = createOutFile(CStructWriter.WRAPPED_DATABINDING_CLASS_NAME,".h");
+                //parse with the template and create the files
+                parseSource(globalWrappedSourceDocument, outSource);
+                parseHeader(globalWrappedHeaderDocument, outHeader);
+            }
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+    }
+
+    /**
+     * @param simpleType
+     * @param typeMap
+     * @param metainf
+     * @return Returns String.
+     * @throws org.apache.axis2.schema.SchemaCompilationException
+     * @see org.apache.axis2.schema.writer.BeanWriter#write(org.apache.ws.commons.schema.XmlSchemaSimpleType, java.util.Map, org.apache.axis2.schema.BeanWriterMetaInfoHolder)
+     */
+    public String write(XmlSchemaSimpleType simpleType, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException {
+        try {
+            //determine the package for this type.
+            QName qName = simpleType.getQName();
+            return process(qName, metainf, typeMap, false);
+
+        } catch (SchemaCompilationException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+    }
+
+    /**
+     * @param rootDir
+     * @throws java.io.IOException
+     * @see org.apache.axis2.schema.writer.BeanWriter
+     */
+    private void initWithFile(File rootDir) throws IOException {
+        if (rootDir == null) {
+            this.rootDir = new File(".");
+        } else if (!rootDir.isDirectory()) {
+            throw new IOException(SchemaCompilerMessages.getMessage("schema.rootnotfolderexception"));
+        } else {
+            this.rootDir = rootDir;
+        }
+
+        namesList = new ArrayList();
+        javaBeanTemplateName = SchemaPropertyLoader.getBeanTemplate();
+    }
+
+
+    /** Make the fully qualified class name for an element or named type
+     * @param qName the qualified Name for this element or type in the schema
+     * @return the appropriate fully qualified class name to use in generated code
+     */
+    public String makeFullyQualifiedClassName(QName qName) {
+
+        String originalName = qName.getLocalPart();
+
+        return makeUniqueCStructName(this.namesList, originalName);
+    }
+
+    /**
+     * A util method that holds common code
+     * for the complete schema that the generated XML complies to
+     * look under other/beanGenerationSchema.xsd
+     *
+     * @param qName
+     * @param metainf
+     * @param typeMap
+     * @param isElement
+     * @param fullyQualifiedClassName the name returned by makeFullyQualifiedClassName() or null if it wasn't called
+     * @return Returns String.
+     * @throws Exception
+     */
+    private String process(QName qName, BeanWriterMetaInfoHolder metainf, Map typeMap, boolean isElement) throws Exception {
+        String fullyQualifiedClassName = metainf.getOwnClassName();
+        if (fullyQualifiedClassName == null)
+            fullyQualifiedClassName = makeFullyQualifiedClassName(qName);
+        String className = fullyQualifiedClassName;
+
+
+        String originalName = qName.getLocalPart();
+        ArrayList propertyNames = new ArrayList();
+
+        if (!templateLoaded) {
+            loadTemplate();
+        }
+
+        //if wrapped then do not write the classes now but add the models to a global document. However in order to write the
+        //global class that is generated, one needs to call the writeBatch() method
+        if (wrapClasses) {
+            globalWrappedSourceDocument.getDocumentElement().appendChild(
+                    getBeanElement(globalWrappedSourceDocument, className, originalName, qName, isElement, metainf, propertyNames, typeMap)
+            );
+            globalWrappedHeaderDocument.getDocumentElement().appendChild(
+                    getBeanElement(globalWrappedHeaderDocument, className, originalName, qName, isElement, metainf, propertyNames, typeMap)
+            );
+
+        } else {
+            //create the model
+            Document modelSource = XSLTUtils.getDocument();
+            Document modelHeader = XSLTUtils.getDocument();
+            //make the XML
+            modelSource.appendChild(getBeanElement(modelSource, className, originalName,  qName, isElement, metainf, propertyNames, typeMap));
+            modelHeader.appendChild(getBeanElement(modelHeader, className, originalName,  qName, isElement, metainf, propertyNames, typeMap));
+
+            if (writeClasses){
+                //create the file
+                File outSource = createOutFile(className, ".c");
+                File outHeader = createOutFile(className, ".h");
+                //parse with the template and create the files
+                parseSource(modelSource, outSource);
+                parseHeader(modelHeader, outHeader);
+            }
+
+            //add the model to the model map
+            modelMap.put(
+                    new QName(qName.getNamespaceURI(),className)
+                    ,modelSource);
+            modelMap.put(
+                    new QName(qName.getNamespaceURI(),className)
+                    ,modelHeader);
+
+
+        }
+
+        //return the fully qualified class name
+        return fullyQualifiedClassName;
+
+    }
+
+
+    /**
+     * @param model
+     * @param className
+     * @param originalName
+     * @param qName
+     * @param isElement
+     * @param metainf
+     * @param propertyNames
+     * @param typeMap
+     * @return Returns Element.
+     * @throws org.apache.axis2.schema.SchemaCompilationException
+     */
+    private Element getBeanElement(
+            Document model, String className, String originalName,
+            QName qName, boolean isElement,
+            BeanWriterMetaInfoHolder metainf, ArrayList propertyNames, Map typeMap
+    ) throws SchemaCompilationException {
+
+        Element rootElt = XSLTUtils.getElement(model, "class");
+        XSLTUtils.addAttribute(model, "name", className, rootElt);
+        XSLTUtils.addAttribute(model, "caps-name", className.toUpperCase(), rootElt);
+        XSLTUtils.addAttribute(model, "originalName", originalName, rootElt);
+        XSLTUtils.addAttribute(model, "nsuri", qName.getNamespaceURI(), rootElt);
+        XSLTUtils.addAttribute(model, "nsprefix", getPrefixForURI(qName.getNamespaceURI(), qName.getPrefix()), rootElt);
+
+        /* use caps for macros */
+        String capsName = className.toUpperCase();
+        XSLTUtils.addAttribute(model, "caps-name", capsName, rootElt);
+
+
+        if (!wrapClasses) {
+            XSLTUtils.addAttribute(model, "unwrapped", "yes", rootElt);
+        }
+
+        if (!writeClasses){
+            XSLTUtils.addAttribute(model, "skip-write", "yes", rootElt);
+        }
+
+        if (!isElement) {
+            XSLTUtils.addAttribute(model, "type", "yes", rootElt);
+        }
+
+        if (metainf.isAnonymous()) {
+            XSLTUtils.addAttribute(model, "anon", "yes", rootElt);
+        }
+
+        if (metainf.isExtension()) {
+            XSLTUtils.addAttribute(model, "extension", metainf.getExtensionClassName(), rootElt);
+        }
+
+
+        if (metainf.isChoice()) {
+            XSLTUtils.addAttribute(model, "choice", "yes", rootElt);
+        }
+
+        if (metainf.isOrdered()) {
+            XSLTUtils.addAttribute(model, "ordered", "yes", rootElt);
+        }
+
+        if (isElement && metainf.isNillable(qName)) {
+            XSLTUtils.addAttribute(model, "nillable", "yes", rootElt);
+        }
+
+        //populate all the information
+        populateInfo(metainf, model, rootElt, propertyNames, typeMap,false);
+
+
+        return rootElt;
+    }
+
+    /**
+     *
+     * @param metainf
+     * @param model
+     * @param rootElt
+     * @param propertyNames
+     * @param typeMap
+     * @throws org.apache.axis2.schema.SchemaCompilationException
+     */
+    private void populateInfo(BeanWriterMetaInfoHolder metainf,
+                              Document model,
+                              Element rootElt,
+                              ArrayList propertyNames,
+                              Map typeMap,boolean isInherited)throws SchemaCompilationException{
+        if (metainf.getParent()!=null){
+            populateInfo(metainf.getParent(),model,rootElt,propertyNames,typeMap,true);
+        }
+        addPropertyEntries(metainf, model, rootElt, propertyNames, typeMap,isInherited);
+
+    }
+
+    /**
+     *
+     * @param metainf
+     * @param model
+     * @param rootElt
+     * @param propertyNames
+     * @param typeMap
+     * @throws org.apache.axis2.schema.SchemaCompilationException
+     */
+    private void addPropertyEntries(BeanWriterMetaInfoHolder metainf, Document model, Element rootElt, ArrayList propertyNames,
+                                    Map typeMap,
+                                    boolean isInherited) throws SchemaCompilationException {
+        // go in the loop and add the part elements
+        QName[] qNames;
+        if (metainf.isOrdered()) {
+            qNames = metainf.getOrderedQNameArray();
+        } else {
+            qNames = metainf.getQNameArray();
+        }
+
+        QName name;
+        for (int i = 0; i < qNames.length; i++) {
+            Element property = XSLTUtils.addChildElement(model, "property", rootElt);
+            name = qNames[i];
+            String xmlName = name.getLocalPart();
+
+            XSLTUtils.addAttribute(model, "name", xmlName, property);
+
+
+            XSLTUtils.addAttribute(model, "nsuri", name.getNamespaceURI(), property);
+            XSLTUtils.addAttribute(model, "prefix", name.getPrefix(), property);
+
+            XSLTUtils.addAttribute(model, "cname", xmlName, property);
+
+
+            String CClassNameForElement = metainf.getClassNameForQName(name);
+
+            if (CClassNameForElement == null) {
+                CClassNameForElement = CStructWriter.DEFAULT_C_CLASS_NAME;
+            }
+            CClassNameForElement=   getShortTypeName(CClassNameForElement);
+
+
+            XSLTUtils.addAttribute(model, "type", CClassNameForElement, property);
+
+
+            /**
+             * Caps for use in C macros
+             */
+            XSLTUtils.addAttribute(model, "caps-cname", xmlName.toUpperCase(), property);
+            XSLTUtils.addAttribute(model, "caps-type", CClassNameForElement.toUpperCase(), property);
+
+            if (PrimitiveTypeFinder.isPrimitive(CClassNameForElement)){
+                XSLTUtils.addAttribute(model, "primitive", "yes", property);
+            }
+            //add an attribute that says the type is default
+            if (isDefault(CClassNameForElement)){
+                XSLTUtils.addAttribute(model, "default", "yes", property);
+            }
+            
+            if (typeMap.containsKey(metainf.getSchemaQNameForQName(name))) {
+                XSLTUtils.addAttribute(model, "ours", "yes", property);
+            }
+
+            if (metainf.getAttributeStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "attribute", "yes", property);
+            }
+
+            if (metainf.isNillable(name)){
+                XSLTUtils.addAttribute(model, "nillable", "yes", property);
+            }
+
+            String shortTypeName;
+            if (metainf.getSchemaQNameForQName(name) != null) {
+                //see whether the QName is a basetype
+                if (baseTypeMap.containsKey(metainf.getSchemaQNameForQName(name))){
+                    shortTypeName= metainf.getSchemaQNameForQName(name).getLocalPart();
+                }else{
+                    shortTypeName =  getShortTypeName(CClassNameForElement);
+                }
+            }else{
+                shortTypeName =  getShortTypeName(CClassNameForElement);
+            }
+            XSLTUtils.addAttribute(model, "shorttypename", shortTypeName, property);
+
+            if (isInherited){
+                XSLTUtils.addAttribute(model, "inherited", "yes", property);
+            }
+
+            if (metainf.getAnyStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "any", "yes", property);
+            }
+
+            if (metainf.getBinaryStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "binary", "yes", property);
+            }
+
+            if (metainf.getSimpleStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "simple", "yes", property);
+            }
+
+            //put the min occurs count irrespective of whether it's an array or not
+            long minOccurs = metainf.getMinOccurs(name);
+            XSLTUtils.addAttribute(model, "minOccurs", minOccurs + "", property);
+
+
+            if (metainf.getArrayStatusForQName(name)) {
+                String attrName = name.getLocalPart();
+                int arrayTokenStart=attrName.indexOf("Array");
+                if ( arrayTokenStart >= 0 )
+                {
+                    String arrayEle = attrName.substring(0, arrayTokenStart);
+                    XSLTUtils.addAttribute(model, "arrayele", arrayEle, property);
+                }
+                XSLTUtils.addAttribute(model, "isarray", "yes", property);
+                XSLTUtils.addAttribute(
+                        model,
+                        "arrayBaseType",
+                        CClassNameForElement,
+                        property);
+
+                long maxOccurs = metainf.getMaxOccurs(name);
+                if (maxOccurs == Long.MAX_VALUE) {
+                    XSLTUtils.addAttribute(model, "unbound", "yes", property);
+                }
+                XSLTUtils.addAttribute(model, "maxOccurs", maxOccurs + "", property);
+
+            }
+        }
+    }
+
+    /**
+     * Test whether the given class name matches the default
+     * @param javaClassNameForElement
+     * @return bool
+     */
+    private boolean isDefault(String javaClassNameForElement) {
+        return SchemaCompiler.DEFAULT_CLASS_NAME.equals(javaClassNameForElement)||
+                SchemaCompiler.DEFAULT_CLASS_ARRAY_NAME.equals(javaClassNameForElement);
+    }
+
+
+    /**
+     * Given the xml name, make a unique class name taking into account that some
+     * file systems are case sensitive and some are not.
+     * -Consider the Jax-WS spec for this
+     * @param listOfNames
+     * @param xmlName
+     * @return Returns String.
+     */
+    private String makeUniqueCStructName(List listOfNames, String xmlName) {
+        String javaName;
+        if (JavaUtils.isJavaKeyword(xmlName)) {
+            javaName = JavaUtils.makeNonJavaKeyword(xmlName);
+        } else {
+            //javaName = JavaUtils.capitalizeFirstChar(JavaUtils.xmlNameToJava(xmlName));
+            javaName = xmlName;
+        }
+
+        while (listOfNames.contains(javaName.toLowerCase())) {
+            javaName = javaName + CStructWriter.count++;
+        }
+
+        listOfNames.add(javaName.toLowerCase());
+        return javaName;
+    }
+
+
+    /**
+     * A bit of code from the old code generator. We are better off using the template
+     * engines and such stuff that's already there. But the class writers are hard to be
+     * reused so some code needs to be repeated (atleast a bit)
+     */
+    private void loadTemplate() throws SchemaCompilationException {
+
+        //first get the language specific property map
+        Class clazz = this.getClass();
+        InputStream xslStream;
+        String templateName = javaBeanTemplateName;
+        if (templateName != null) {
+            try {
+                String sourceTemplateName = templateName + "Source.xsl" ;
+                xslStream = clazz.getResourceAsStream(sourceTemplateName);
+                sourceTemplateCache = TransformerFactory.newInstance().newTemplates(new StreamSource(xslStream));
+
+                String headerTemplateName =  templateName + "Header.xsl";
+                xslStream = clazz.getResourceAsStream(headerTemplateName);
+                headerTemplateCache = TransformerFactory.newInstance().newTemplates(new StreamSource(xslStream));
+
+                templateLoaded = true;
+            } catch (TransformerConfigurationException e) {
+                throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("schema.templateLoadException"), e);
+            }
+        } else {
+            throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("schema.templateNotFoundException"));
+        }
+    }
+
+
+    /**
+     * Creates the output file
+     *
+     * @param fileName
+     * @param extension
+     * @throws Exception
+     */
+    protected File createOutFile(String fileName, String extension) throws Exception {
+        return org.apache.axis2.util.FileWriter.createClassFile(this.rootDir,
+                "",
+                AXIS2_PREFIX + fileName,
+                extension);
+    }
+
+    /**
+     * Writes the output file
+     *
+     * @param doc
+     * @param outputFile
+     * @throws Exception
+     */
+    private void parseSource(Document doc, File outputFile) throws Exception {
+        OutputStream outStream = new FileOutputStream(outputFile);
+        XSLTTemplateProcessor.parse(outStream,
+                doc,
+                this.sourceTemplateCache.newTransformer());
+        outStream.write('\n');
+        outStream.write('\n');
+        outStream.flush();
+        outStream.close();
+
+    }
+
+    /**
+     * Writes the output file
+     *
+     * @param doc
+     * @param outputFile
+     * @throws Exception
+     */
+    private void parseHeader(Document doc, File outputFile) throws Exception {
+        OutputStream outStream = new FileOutputStream(outputFile);
+        XSLTTemplateProcessor.parse(outStream,
+                doc,
+                this.headerTemplateCache.newTransformer());
+        outStream.write('\n');
+        outStream.write('\n');
+        outStream.flush();
+        outStream.close();
+
+    }
+    /**
+     * Get a prefix for a namespace URI.  This method will ALWAYS
+     * return a valid prefix - if the given URI is already mapped in this
+     * serialization, we return the previous prefix.  If it is not mapped,
+     * we will add a new mapping and return a generated prefix of the form
+     * "ns<num>".
+     *
+     * @param uri is the namespace uri
+     * @return Returns prefix.
+     */
+    public String getPrefixForURI(String uri) {
+        return getPrefixForURI(uri, null);
+    }
+
+    /**
+     * Last used index suffix for "ns"
+     */
+    private int lastPrefixIndex = 1;
+
+    /**
+     * Map of namespaces URI to prefix(es)
+     */
+    HashMap mapURItoPrefix = new HashMap();
+    HashMap mapPrefixtoURI = new HashMap();
+
+    /**
+     * Get a prefix for the given namespace URI.  If one has already been
+     * defined in this serialization, use that.  Otherwise, map the passed
+     * default prefix to the URI, and return that.  If a null default prefix
+     * is passed, use one of the form "ns<num>"
+     */
+    public String getPrefixForURI(String uri, String defaultPrefix) {
+        if ((uri == null) || (uri.length() == 0))
+            return null;
+        String prefix = (String) mapURItoPrefix.get(uri);
+        if (prefix == null) {
+            if (defaultPrefix == null || defaultPrefix.length() == 0) {
+                prefix = "ns" + lastPrefixIndex++;
+                while (mapPrefixtoURI.get(prefix) != null) {
+                    prefix = "ns" + lastPrefixIndex++;
+                }
+            } else {
+                prefix = defaultPrefix;
+            }
+            mapPrefixtoURI.put(prefix, uri);
+            mapURItoPrefix.put(uri, prefix);
+        }
+        return prefix;
+    }
+
+    private String getShortTypeName(String typeClassName){
+        if (typeClassName.endsWith("[]")){
+            typeClassName = typeClassName.substring(0,typeClassName.lastIndexOf("["));
+        }
+        return typeClassName;
+
+    }
+
+    /**
+     * Keep unimplemented
+     * @see BeanWriter#registerExtensionMapperPackageName(String)
+     * @param mapperPackageName
+     */
+    public void registerExtensionMapperPackageName(String mapperPackageName) {
+        //unimplemented
+    }
+
+    /**
+     * Keep unimplemented
+     * @see BeanWriter#writeExtensionMapper(org.apache.axis2.schema.BeanWriterMetaInfoHolder[])
+     * @param metainfArray
+     */
+    public void writeExtensionMapper(BeanWriterMetaInfoHolder[] metainfArray) throws SchemaCompilationException{
+        //unimplemented
+    }
+
+    /**
+     * Keep unimplemented
+     * @see org.apache.axis2.schema.writer.BeanWriter#getExtensionMapperPackageName() 
+     */
+    public String getExtensionMapperPackageName() {
+        return null;
+    }
+}
diff --git a/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
new file mode 100644
index 0000000..41d7ae7
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
@@ -0,0 +1,1181 @@
+package org.apache.axis2.schema.writer;
+
+import org.apache.axis2.schema.*;
+import org.apache.axis2.schema.i18n.SchemaCompilerMessages;
+import org.apache.axis2.schema.typemap.JavaTypeMap;
+import org.apache.axis2.schema.util.PrimitiveTypeFinder;
+import org.apache.axis2.schema.util.SchemaPropertyLoader;
+import org.apache.axis2.util.*;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaSimpleType;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Templates;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamSource;
+import java.io.*;
+import java.util.*;
+
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * Java Bean writer for the schema compiler.
+ */
+public class JavaBeanWriter implements BeanWriter {
+
+    private static final Log log = LogFactory.getLog(JavaBeanWriter .class);
+
+    public static final String WRAPPED_DATABINDING_CLASS_NAME = "WrappedDatabinder";
+
+    private String javaBeanTemplateName = null;
+
+    private boolean templateLoaded = false;
+
+    private Templates templateCache;
+
+    private List namesList;
+
+    private static int count = 0;
+
+    private boolean wrapClasses = false;
+
+    private boolean writeClasses = false;
+
+    private String packageName = null;
+
+    private File rootDir;
+
+    private Document globalWrappedDocument;
+
+    private Map modelMap = new HashMap();
+
+    private static final String DEFAULT_PACKAGE = "adb";
+
+    private Map baseTypeMap = new JavaTypeMap().getTypeMap();
+
+    private Map ns2packageNameMap = new HashMap();
+
+    private boolean isHelperMode = false;
+
+    private boolean isSuppressPrefixesMode = false;
+
+    /**
+     * package for the mapping class
+     */
+    private String mappingClassPackage = null;
+
+    public static final String EXTENSION_MAPPER_CLASSNAME = "ExtensionMapper";
+
+    /**
+     * Default constructor
+     */
+    public JavaBeanWriter() {
+    }
+
+    /**
+     * This returns a map of Qnames vs DOMDocument models. One can use this
+     * method to obtain the raw DOMmodels used to write the classes. This has no
+     * meaning when the classes are supposed to be wrapped so the
+     *
+     * @return Returns Map.
+     * @throws SchemaCompilationException
+     * @see BeanWriter#getModelMap()
+     */
+    public Map getModelMap() {
+        return modelMap;
+    }
+
+    public void init(CompilerOptions options) throws SchemaCompilationException {
+        try {
+	    modelMap = new HashMap();
+	    ns2packageNameMap = new HashMap();	
+
+            initWithFile(options.getOutputLocation());
+            packageName = options.getPackageName();
+            writeClasses = options.isWriteOutput();
+            if (!writeClasses) {
+                wrapClasses = false;
+            } else {
+                wrapClasses = options.isWrapClasses();
+            }
+
+            // if the wrap mode is set then create a global document to keep the
+            // wrapped
+            // element models
+            if (options.isWrapClasses()) {
+                globalWrappedDocument = XSLTUtils.getDocument();
+                Element rootElement = XSLTUtils.getElement(
+                        globalWrappedDocument, "beans");
+                globalWrappedDocument.appendChild(rootElement);
+                XSLTUtils.addAttribute(globalWrappedDocument, "name",
+                        WRAPPED_DATABINDING_CLASS_NAME, rootElement);
+                String tempPackageName;
+
+                if (packageName != null && packageName.endsWith(".")) {
+                    tempPackageName = this.packageName.substring(0,
+                            this.packageName.lastIndexOf("."));
+                } else {
+                    tempPackageName = DEFAULT_PACKAGE;
+                }
+
+                XSLTUtils.addAttribute(globalWrappedDocument, "package",
+                        tempPackageName, rootElement);
+            }
+
+            // add the ns mappings
+            this.ns2packageNameMap = options.getNs2PackageMap();
+            //set helper mode
+            this.isHelperMode = options.isHelperMode();
+            // set suppress prefixes mode
+            this.isSuppressPrefixesMode = options.isSuppressPrefixesMode();
+
+            //set mapper class package if present
+            if (options.isMapperClassPackagePresent()) {
+                this.mappingClassPackage = options.getMapperClassPackage();
+            }
+
+        } catch (IOException e) {
+            throw new SchemaCompilationException(e);
+        } catch (ParserConfigurationException e) {
+            throw new SchemaCompilationException(e); // todo need to put
+            // correct error
+            // messages
+        }
+    }
+
+    /**
+     * @param element
+     * @param typeMap
+     * @param metainf
+     * @return Returns String.
+     * @throws SchemaCompilationException
+     */
+    public String write(XmlSchemaElement element, Map typeMap,
+                        BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException {
+
+        try {
+            QName qName = element.getQName();
+
+            return process(qName, metainf, typeMap, true);
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+
+    }
+
+    /**
+     * @param complexType
+     * @param typeMap
+     * @param metainf
+     * @param fullyQualifiedClassName the name returned by makeFullyQualifiedClassName() or null if
+     *                                it wasn't called
+     * @throws org.apache.axis2.schema.SchemaCompilationException
+     *
+     * @see BeanWriter#write(org.apache.ws.commons.schema.XmlSchemaComplexType,
+     *      java.util.Map, org.apache.axis2.schema.BeanWriterMetaInfoHolder)
+     */
+    public String write(XmlSchemaComplexType complexType, Map typeMap,
+                        BeanWriterMetaInfoHolder metainf)
+            throws SchemaCompilationException {
+
+        try {
+            // determine the package for this type.
+            QName qName = complexType.getQName();
+            return process(qName, metainf, typeMap, false);
+
+        } catch (SchemaCompilationException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+
+    }
+
+    /**
+     * @throws Exception
+     * @see BeanWriter#writeBatch()
+     */
+    public void writeBatch() throws SchemaCompilationException {
+        try {
+            if (wrapClasses) {
+                String tempPackage;
+                if (packageName == null) {
+                    tempPackage = DEFAULT_PACKAGE;
+                } else {
+                    tempPackage = packageName;
+                }
+                File out = createOutFile(tempPackage,
+                        WRAPPED_DATABINDING_CLASS_NAME);
+                // parse with the template and create the files
+
+                parse(globalWrappedDocument, out);
+            }
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+    }
+
+    /**
+     * @param simpleType
+     * @param typeMap
+     * @param metainf
+     * @return Returns String.
+     * @throws SchemaCompilationException
+     * @see BeanWriter#write(org.apache.ws.commons.schema.XmlSchemaSimpleType,
+     *      java.util.Map, org.apache.axis2.schema.BeanWriterMetaInfoHolder)
+     */
+    public String write(XmlSchemaSimpleType simpleType, Map typeMap,
+                        BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException {
+        try {
+            QName qName = simpleType.getQName();
+            if (qName == null) {
+                qName = (QName) simpleType.getMetaInfoMap().get(SchemaConstants.SchemaCompilerInfoHolder.FAKE_QNAME);
+            }
+            metainf.addtStatus(qName, SchemaConstants.SIMPLE_TYPE_OR_CONTENT);
+            return process(qName, metainf, typeMap, true);
+        } catch (Exception e) {
+            throw new SchemaCompilationException(e);
+        }
+    }
+
+    /**
+     * @param rootDir
+     * @throws IOException
+     * @see BeanWriter#init(java.io.File)
+     */
+    private void initWithFile(File rootDir) throws IOException {
+        if (rootDir == null) {
+            this.rootDir = new File(".");
+        } else if (!rootDir.isDirectory()) {
+            throw new IOException(SchemaCompilerMessages
+                    .getMessage("schema.rootnotfolderexception"));
+        } else {
+            this.rootDir = rootDir;
+        }
+
+        namesList = new ArrayList();
+        javaBeanTemplateName = SchemaPropertyLoader.getBeanTemplate();
+    }
+
+    /**
+     * Make the fully qualified class name for an element or named type
+     *
+     * @param qName the qualified Name for this element or type in the schema
+     * @return the appropriate fully qualified class name to use in generated
+     *         code
+     */
+    public String makeFullyQualifiedClassName(QName qName) {
+
+        String namespaceURI = qName.getNamespaceURI();
+        String basePackageName;
+
+        String packageName = getPackage(namespaceURI);
+
+        String originalName = qName.getLocalPart();
+        String className = makeUniqueJavaClassName(this.namesList, originalName);
+
+        String packagePrefix = null;
+
+        String fullyqualifiedClassName;
+
+        if (wrapClasses)
+            packagePrefix = (this.packageName == null ? DEFAULT_PACKAGE + "."
+                    : this.packageName)
+                    + WRAPPED_DATABINDING_CLASS_NAME;
+        else if (writeClasses)
+            packagePrefix = packageName;
+        if (packagePrefix != null)
+            fullyqualifiedClassName = packagePrefix
+                    + (packagePrefix.endsWith(".") ? "" : ".") + className;
+        else
+            fullyqualifiedClassName = className;
+        // return the fully qualified class name
+        return fullyqualifiedClassName;
+    }
+
+    private String getPackage(String namespaceURI) {
+        String basePackageName;
+        if (ns2packageNameMap.containsKey(namespaceURI)) {
+            basePackageName = (String) ns2packageNameMap.get(namespaceURI);
+        } else {
+            basePackageName = URLProcessor.makePackageName(namespaceURI);
+        }
+
+        return this.packageName == null ? basePackageName
+                : this.packageName + basePackageName;
+    }
+
+    /**
+     * A util method that holds common code for the complete schema that the
+     * generated XML complies to look under other/beanGenerationSchema.xsd
+     *
+     * @param qName
+     * @param metainf
+     * @param typeMap
+     * @param isElement
+     * @param fullyQualifiedClassName the name returned by makeFullyQualifiedClassName() or null if
+     *                                it wasn't called
+     * @return Returns String.
+     * @throws Exception
+     */
+    private String process(QName qName, BeanWriterMetaInfoHolder metainf,
+                           Map typeMap, boolean isElement)
+            throws Exception {
+        String fullyQualifiedClassName = metainf.getOwnClassName();
+        if (fullyQualifiedClassName == null)
+            fullyQualifiedClassName = makeFullyQualifiedClassName(qName);
+        String className = fullyQualifiedClassName
+                .substring(1 + fullyQualifiedClassName.lastIndexOf('.'));
+        String basePackageName;
+        if (fullyQualifiedClassName.lastIndexOf('.') == -1) {// no 'dots' so
+            // the package
+            // is not there
+            basePackageName = "";
+        } else {
+            basePackageName = fullyQualifiedClassName.substring(0,
+                    fullyQualifiedClassName.lastIndexOf('.'));
+        }
+
+        String originalName = qName == null ? "" : qName.getLocalPart();
+        ArrayList propertyNames = new ArrayList();
+
+        if (!templateLoaded) {
+            loadTemplate();
+        }
+
+        // if wrapped then do not write the classes now but add the models to a
+        // global document. However in order to write the
+        // global class that is generated, one needs to call the writeBatch()
+        // method
+        if (wrapClasses) {
+            globalWrappedDocument.getDocumentElement().appendChild(
+                    getBeanElement(globalWrappedDocument, className,
+                            originalName, basePackageName, qName, isElement,
+                            metainf, propertyNames, typeMap));
+
+        } else {
+            // create the model
+            Document model = XSLTUtils.getDocument();
+            // make the XML
+            model.appendChild(getBeanElement(model, className, originalName,
+                    basePackageName, qName, isElement, metainf, propertyNames,
+                    typeMap));
+
+            if (writeClasses) {
+                // create the file
+                File out = createOutFile(basePackageName, className);
+                // parse with the template and create the files
+
+                if (isHelperMode) {
+
+                    XSLTUtils.addAttribute(model, "helperMode", "yes", model.getDocumentElement());
+
+                    // Generate bean classes
+                    parse(model, out);
+
+                    // Generating the helper classes
+                    out = createOutFile(basePackageName, className + "Helper");
+                    XSLTUtils.addAttribute(model, "helper", "yes", model
+                            .getDocumentElement());
+                    parse(model, out);
+
+                } else {
+                    //No helper mode - just generate the classes
+                    parse(model, out);
+                }
+            }
+
+            // add the model to the model map
+            modelMap.put(new QName(qName.getNamespaceURI(), className), model);
+
+        }
+
+        // return the fully qualified class name
+        return fullyQualifiedClassName;
+
+    }
+
+    /**
+     * @param model
+     * @param className
+     * @param originalName
+     * @param packageName
+     * @param qName
+     * @param isElement
+     * @param metainf
+     * @param propertyNames
+     * @param typeMap
+     * @return Returns Element.
+     * @throws SchemaCompilationException
+     */
+    private Element getBeanElement(Document model,
+                                   String className,
+                                   String originalName,
+                                   String packageName,
+                                   QName qName,
+                                   boolean isElement,
+                                   BeanWriterMetaInfoHolder metainf,
+                                   ArrayList propertyNames,
+                                   Map typeMap)
+            throws SchemaCompilationException {
+
+        Element rootElt = XSLTUtils.getElement(model, "bean");
+        XSLTUtils.addAttribute(model, "name", className, rootElt);
+        XSLTUtils.addAttribute(model, "originalName", originalName, rootElt);
+        XSLTUtils.addAttribute(model, "package", packageName, rootElt);
+        XSLTUtils
+                .addAttribute(model, "nsuri", qName.getNamespaceURI(), rootElt);
+        XSLTUtils.addAttribute(model, "nsprefix", isSuppressPrefixesMode ? "" : getPrefixForURI(qName
+                .getNamespaceURI(), qName.getPrefix()), rootElt);
+
+        if (!wrapClasses) {
+            XSLTUtils.addAttribute(model, "unwrapped", "yes", rootElt);
+        }
+
+        if (!writeClasses) {
+            XSLTUtils.addAttribute(model, "skip-write", "yes", rootElt);
+        }
+
+        if (!isElement) {
+            XSLTUtils.addAttribute(model, "type", "yes", rootElt);
+        }
+
+        if (metainf.isAnonymous()) {
+            XSLTUtils.addAttribute(model, "anon", "yes", rootElt);
+        }
+
+        if (metainf.isExtension()) {
+            XSLTUtils.addAttribute(model, "extension", metainf
+                    .getExtensionClassName(), rootElt);
+
+        }
+        if (metainf.isRestriction()) {
+            XSLTUtils.addAttribute(model, "restriction", metainf
+                    .getRestrictionClassName(), rootElt);
+
+        }
+        //add the mapper class name
+        XSLTUtils.addAttribute(model, "mapperClass", getFullyQualifiedMapperClassName(), rootElt);
+
+        if (metainf.isChoice()) {
+            XSLTUtils.addAttribute(model, "choice", "yes", rootElt);
+        }
+
+        if (metainf.isSimple()) {
+            XSLTUtils.addAttribute(model, "simple", "yes", rootElt);
+        }
+
+        if (metainf.isOrdered()) {
+            XSLTUtils.addAttribute(model, "ordered", "yes", rootElt);
+        }
+
+        if (isElement && metainf.isNillable(qName)) {
+            XSLTUtils.addAttribute(model, "nillable", "yes", rootElt);
+        }
+
+        // populate all the information
+        populateInfo(metainf, model, rootElt, propertyNames, typeMap, false);
+
+        //////////////////////////////////////////////////////////
+//        System.out.println(DOM2Writer.nodeToString(rootElt));
+        ////////////////////////////////////////////////////////////
+
+        return rootElt;
+    }
+
+    /**
+     * @param metainf
+     * @param model
+     * @param rootElt
+     * @param propertyNames
+     * @param typeMap
+     * @throws SchemaCompilationException
+     */
+    private void populateInfo(BeanWriterMetaInfoHolder metainf, Document model,
+                              Element rootElt, ArrayList propertyNames, Map typeMap,
+                              boolean isInherited) throws SchemaCompilationException {
+        if (metainf.getParent() != null) {
+            populateInfo(metainf.getParent(), model, rootElt, propertyNames,
+                    typeMap, true);
+        }
+        addPropertyEntries(metainf, model, rootElt, propertyNames, typeMap,
+                isInherited);
+
+    }
+
+    /**
+     * @param metainf
+     * @param model
+     * @param rootElt
+     * @param propertyNames
+     * @param typeMap
+     * @throws SchemaCompilationException
+     */
+    private void addPropertyEntries(BeanWriterMetaInfoHolder metainf,
+                                    Document model, Element rootElt, ArrayList propertyNames,
+                                    Map typeMap, boolean isInherited) throws SchemaCompilationException {
+        // go in the loop and add the part elements
+        QName[] qName;
+        String javaClassNameForElement;
+        ArrayList missingQNames = new ArrayList();
+        ArrayList qNames = new ArrayList();
+
+        BeanWriterMetaInfoHolder parentMetaInf = metainf.getParent();
+
+        if (metainf.isOrdered()) {
+            qName = metainf.getOrderedQNameArray();
+        } else {
+            qName = metainf.getQNameArray();
+        }
+
+        for (int i = 0; i < qName.length; i++) {
+            qNames.add(qName[i]);
+        }
+        //adding missing QNames to the end, including elements & attributes.
+        if (metainf.isRestriction()) {
+            addMissingQNames(metainf, qNames, missingQNames);
+        }
+        QName name;
+
+        for (int i = 0; i < qNames.size(); i++) {
+            name = (QName) qNames.get(i);
+            Element property = XSLTUtils.addChildElement(model, "property", rootElt);
+
+            String xmlName = name.getLocalPart();
+            XSLTUtils.addAttribute(model, "name", xmlName, property);
+            XSLTUtils.addAttribute(model, "nsuri", name.getNamespaceURI(), property);
+            String javaName = makeUniqueJavaClassName(propertyNames, xmlName);
+            XSLTUtils.addAttribute(model, "javaname", javaName, property);
+
+            if (parentMetaInf != null && metainf.isRestriction() && missingQNames.contains(name)) {
+                javaClassNameForElement = parentMetaInf.getClassNameForQName(name);
+            } else {
+                javaClassNameForElement = metainf.getClassNameForQName(name);
+            }
+
+            if (javaClassNameForElement == null) {
+                javaClassNameForElement = SchemaCompiler.DEFAULT_CLASS_NAME;
+                log.warn(SchemaCompilerMessages
+                        .getMessage("schema.typeMissing", name.toString()));
+            }
+
+            if (metainf.isRestriction() && typeChanged(name, missingQNames, metainf)) {
+                XSLTUtils.addAttribute(model, "typeChanged", "yes", property);
+                //XSLTUtils.addAttribute(model, "restricted", "yes", property);
+            }
+
+            XSLTUtils.addAttribute(model, "type", javaClassNameForElement, property);
+
+            if (PrimitiveTypeFinder.isPrimitive(javaClassNameForElement)) {
+                XSLTUtils.addAttribute(model, "primitive", "yes", property);
+            }
+            // add an attribute that says the type is default
+            if (metainf.getDefaultStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "default", "yes", property);
+            }
+
+            if (typeMap.containsKey(metainf.getSchemaQNameForQName(name))) {
+                XSLTUtils.addAttribute(model, "ours", "yes", property);
+            }
+
+            if (metainf.getAttributeStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "attribute", "yes", property);
+            }
+
+            if (metainf.isNillable(name)) {
+                XSLTUtils.addAttribute(model, "nillable", "yes", property);
+            }
+
+            if (metainf.getOptionalAttributeStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "optional", "yes", property);
+            }
+
+            String shortTypeName;
+            if (metainf.getSchemaQNameForQName(name) != null) {
+                // see whether the QName is a basetype
+                if (baseTypeMap.containsKey(metainf.getSchemaQNameForQName(name))) {
+                    shortTypeName = metainf.getSchemaQNameForQName(name).getLocalPart();
+                } else {
+                    shortTypeName = getShortTypeName(javaClassNameForElement);
+                }
+            } else {
+                shortTypeName = getShortTypeName(javaClassNameForElement);
+            }
+            XSLTUtils.addAttribute(model, "shorttypename", shortTypeName, property);
+
+            if (metainf.isRestriction() && missingQNames.contains(name)) {
+                //XSLTUtils.addAttribute(model, "restricted", "yes", property);
+                XSLTUtils.addAttribute(model, "removed", "yes", property);
+            }
+
+            if (isInherited) {
+                XSLTUtils.addAttribute(model, "inherited", "yes", property);
+            }
+
+            if (metainf.getAnyStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "any", "yes", property);
+            }
+
+            if (metainf.getBinaryStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "binary", "yes", property);
+            }
+
+            if (metainf.isSimple() || metainf.getSimpleStatusForQName(name)) {
+                XSLTUtils.addAttribute(model, "simple", "yes", property);
+            }
+
+            // put the min occurs count irrespective of whether it's an array or
+            // not
+            long minOccurs = metainf.getMinOccurs(name);
+            XSLTUtils.addAttribute(model, "minOccurs", minOccurs + "", property);
+
+            //in the case the original element is an array but the derived one is not.
+            if (parentMetaInf != null && metainf.isRestriction() && !missingQNames.contains(name) &&
+                    (parentMetaInf.getArrayStatusForQName(name) && !metainf.getArrayStatusForQName(name))) {
+
+                XSLTUtils.addAttribute(model, "rewrite", "yes", property);
+                XSLTUtils.addAttribute(model, "occuranceChanged", "yes", property);
+            } else if (metainf.isRestriction() && !missingQNames.contains(name) &&
+                    (minOccursChanged(name, missingQNames, metainf) || maxOccursChanged(name, missingQNames, metainf))) {
+
+                XSLTUtils.addAttribute(model, "restricted", "yes", property);
+                XSLTUtils.addAttribute(model, "occuranceChanged", "yes", property);
+            }
+
+            if (metainf.getArrayStatusForQName(name)) {
+
+                XSLTUtils.addAttribute(model, "array", "yes", property);
+
+                int endIndex = javaClassNameForElement.indexOf("[");
+                if (endIndex >= 0) {
+                    XSLTUtils.addAttribute(model, "arrayBaseType",
+                            javaClassNameForElement.substring(0, endIndex), property);
+                } else {
+                    XSLTUtils.addAttribute(model, "arrayBaseType",
+                            javaClassNameForElement, property);
+                }
+
+                long maxOccurs = metainf.getMaxOccurs(name);
+                if (maxOccurs == Long.MAX_VALUE) {
+                    XSLTUtils.addAttribute(model, "unbound", "yes", property);
+                } else {
+                    XSLTUtils.addAttribute(model, "maxOccurs", maxOccurs + "", property);
+                }
+            }
+            if (metainf.isRestrictionBaseType(name)) {
+                XSLTUtils.addAttribute(model, "restrictionBaseType", "yes", property);
+            }
+
+            if (metainf.isExtensionBaseType(name)) {
+                XSLTUtils.addAttribute(model, "extensionBaseType", "yes", property);
+            }
+
+            if (metainf.isRestrictionBaseType(name) && metainf.getLengthFacet() != -1) {
+                XSLTUtils.addAttribute(model, "lenFacet", metainf.getLengthFacet() + "", property);
+            }
+
+            if (metainf.isRestrictionBaseType(name) && metainf.getMaxLengthFacet() != -1) {
+                XSLTUtils.addAttribute(model, "maxLenFacet", metainf.getMaxLengthFacet() + "", property);
+            }
+
+            if (metainf.isRestrictionBaseType(name) && metainf.getMinLengthFacet() != -1) {
+                XSLTUtils.addAttribute(model, "minLenFacet", metainf.getMinLengthFacet() + "", property);
+            }
+
+            if (metainf.isRestrictionBaseType(name) && metainf.getMaxExclusiveFacet() != null) {
+                XSLTUtils.addAttribute(model, "maxExFacet", metainf.getMaxExclusiveFacet() + "", property);
+            }
+
+            if (metainf.isRestrictionBaseType(name) && metainf.getMinExclusiveFacet() != null) {
+                XSLTUtils.addAttribute(model, "minExFacet", metainf.getMinExclusiveFacet() + "", property);
+            }
+
+            if (metainf.isRestrictionBaseType(name) && metainf.getMaxInclusiveFacet() != null) {
+                XSLTUtils.addAttribute(model, "maxInFacet", metainf.getMaxInclusiveFacet() + "", property);
+            }
+
+            if (metainf.isRestrictionBaseType(name) && metainf.getMinInclusiveFacet() != null) {
+                XSLTUtils.addAttribute(model, "minInFacet", metainf.getMinInclusiveFacet() + "", property);
+            }
+
+            if (!metainf.getEnumFacet().isEmpty()) {
+                boolean validJava = true;    // Assume all enum values are valid ids
+
+                Iterator iterator = metainf.getEnumFacet().iterator();
+                // Walk the values looking for invalid ids
+                while (iterator.hasNext()) {
+                    String value = (String) iterator.next();
+                    if (!JavaUtils.isJavaId(value)) {
+                        validJava = false;
+                    }
+                }
+
+                int id = 0;
+                iterator = metainf.getEnumFacet().iterator();
+                while (iterator.hasNext()) {
+                    Element enumFacet = XSLTUtils.addChildElement(model, "enumFacet", property);
+                    String attribValue = (String) iterator.next();
+                    XSLTUtils.addAttribute(model, "value", attribValue, enumFacet);
+                    if (validJava) {
+                        XSLTUtils.addAttribute(model, "id", attribValue, enumFacet);
+                    } else {
+                        id++;
+                        XSLTUtils.addAttribute(model, "id", "value" + id, enumFacet);
+                    }
+                }
+            }
+
+            if (metainf.isRestrictionBaseType(name) && metainf.getPatternFacet() != null) {
+                XSLTUtils.addAttribute(model, "patternFacet", metainf.getPatternFacet(), property);
+            }
+        }
+    }
+
+    private void addMissingQNames(BeanWriterMetaInfoHolder metainf, ArrayList qName, ArrayList missingQNames) {
+
+        QName[] qNames = null;
+        QName[] pQNames = null;
+
+        BeanWriterMetaInfoHolder parentMetaInf = metainf.getParent();
+
+        if (metainf.isOrdered()) {
+            qNames = metainf.getOrderedQNameArray();
+        } else {
+            qNames = metainf.getQNameArray();
+        }
+
+        if (parentMetaInf != null) {
+            if (parentMetaInf.isOrdered()) {
+                pQNames = parentMetaInf.getOrderedQNameArray();
+            } else {
+                pQNames = parentMetaInf.getQNameArray();
+            }
+        }
+
+
+        for (int i = 0; pQNames != null && i < pQNames.length; i++) {
+            if (qNameNotFound(pQNames[i], metainf)) {
+                missingQNames.add(pQNames[i]);
+            }
+        }
+        //adding missing QNames to the end of list.
+        if (!missingQNames.isEmpty()) {
+            for (int i = 0; i < missingQNames.size(); i++) {
+                qName.add(missingQNames.get(i));
+            }
+        }
+
+    }
+
+    private boolean qNameNotFound(QName qname, BeanWriterMetaInfoHolder metainf) {
+
+        boolean found = false;
+        QName[] qNames;
+
+        if (metainf.isOrdered()) {
+            qNames = metainf.getOrderedQNameArray();
+        } else {
+            qNames = metainf.getQNameArray();
+        }
+
+        for (int j = 0; j < qNames.length; j++) {
+            if (qname.getLocalPart().equals(qNames[j].getLocalPart())) {
+                found = true;
+            }
+        }
+        return !found;
+    }
+
+    private boolean typeChanged(QName qname, ArrayList missingQNames, BeanWriterMetaInfoHolder metainf) {
+
+        boolean typeChanged = false;
+        QName[] pQNames;
+
+        BeanWriterMetaInfoHolder parentMetainf = metainf.getParent();
+
+        if (parentMetainf != null && !missingQNames.contains(qname)) {
+
+            if (parentMetainf.isOrdered()) {
+                pQNames = parentMetainf.getOrderedQNameArray();
+            } else {
+                pQNames = parentMetainf.getQNameArray();
+            }
+
+            for (int j = 0; j < pQNames.length; j++) {
+                if (qname.getLocalPart().equals(pQNames[j].getLocalPart())) {
+
+                    String javaClassForParentElement = parentMetainf.getClassNameForQName(pQNames[j]);
+                    String javaClassForElement = metainf.getClassNameForQName(qname);
+
+                    if (!javaClassForParentElement.equals(javaClassForElement)) {
+                        if (javaClassForParentElement.endsWith("[]")) {
+                            if ((javaClassForParentElement.substring(0, javaClassForParentElement.indexOf('['))).equals(javaClassForElement)) {
+                                continue;
+                            }
+                        } else if (javaClassForElement.endsWith("[]")) {
+                            if ((javaClassForElement.substring(0, javaClassForElement.indexOf('['))).equals(javaClassForParentElement)) {
+                                continue;
+                            }
+                        } else {
+                            typeChanged = true;
+                        }
+                    }
+                }
+            }
+        }
+        return typeChanged;
+    }
+
+    private boolean minOccursChanged(QName qname, ArrayList missingQNames, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException {
+
+        boolean minChanged = false;
+        QName[] pQNames;
+
+        BeanWriterMetaInfoHolder parentMetainf = metainf.getParent();
+
+        if (parentMetainf != null && !missingQNames.contains(qname)) {
+
+            if (parentMetainf.isOrdered()) {
+                pQNames = parentMetainf.getOrderedQNameArray();
+            } else {
+                pQNames = parentMetainf.getQNameArray();
+            }
+
+            for (int j = 0; j < pQNames.length; j++) {
+                if (qname.getLocalPart().equals(pQNames[j].getLocalPart())) {
+
+                    if (metainf.getMinOccurs(qname) > parentMetainf.getMinOccurs(pQNames[j])) {
+                        minChanged = true;
+                    } else if (metainf.getMinOccurs(qname) < parentMetainf.getMinOccurs(pQNames[j])) {
+                        throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("minOccurs Wrong!"));
+                    }
+
+                }
+            }
+        }
+        return minChanged;
+    }
+
+    private boolean maxOccursChanged(QName qname, ArrayList missingQNames, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException {
+
+        boolean maxChanged = false;
+        QName[] pQNames;
+
+        BeanWriterMetaInfoHolder parentMetainf = metainf.getParent();
+
+        if (parentMetainf != null && !missingQNames.contains(qname)) {
+            if (parentMetainf.isOrdered()) {
+                pQNames = parentMetainf.getOrderedQNameArray();
+            } else {
+                pQNames = parentMetainf.getQNameArray();
+            }
+
+            for (int j = 0; j < pQNames.length; j++) {
+                if (qname.getLocalPart().equals(pQNames[j].getLocalPart())) {
+
+                    if (metainf.getMaxOccurs(qname) < parentMetainf.getMaxOccurs(pQNames[j])) {
+                        maxChanged = true;
+                    } else if (metainf.getMaxOccurs(qname) > parentMetainf.getMaxOccurs(pQNames[j])) {
+                        throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("maxOccurs Wrong!"));
+                    }
+                }
+            }
+        }
+        return maxChanged;
+    }
+
+    /**
+     * Test whether the given class name matches the default
+     *
+     * @param javaClassNameForElement
+     */
+    private boolean isDefault(String javaClassNameForElement) {
+        return SchemaCompiler.DEFAULT_CLASS_NAME
+                .equals(javaClassNameForElement)
+                || SchemaCompiler.DEFAULT_CLASS_ARRAY_NAME
+                .equals(javaClassNameForElement);
+    }
+
+    /**
+     * Given the xml name, make a unique class name taking into account that
+     * some file systems are case sensitive and some are not. -Consider the
+     * Jax-WS spec for this
+     *
+     * @param listOfNames
+     * @param xmlName
+     * @return Returns String.
+     */
+    private String makeUniqueJavaClassName(List listOfNames, String xmlName) {
+        String javaName;
+        if (JavaUtils.isJavaKeyword(xmlName)) {
+            javaName = JavaUtils.makeNonJavaKeyword(xmlName);
+        } else {
+            javaName = JavaUtils.capitalizeFirstChar(JavaUtils
+                    .xmlNameToJava(xmlName));
+        }
+
+        while (listOfNames.contains(javaName.toLowerCase())) {
+            javaName = javaName + count++;
+        }
+
+        listOfNames.add(javaName.toLowerCase());
+        return javaName;
+    }
+
+    /**
+     * A bit of code from the old code generator. We are better off using the
+     * template engines and such stuff that's already there. But the class
+     * writers are hard to be reused so some code needs to be repeated (atleast
+     * a bit)
+     */
+    private void loadTemplate() throws SchemaCompilationException {
+
+        // first get the language specific property map
+        Class clazz = this.getClass();
+        InputStream xslStream;
+        String templateName = javaBeanTemplateName;
+        if (templateName != null) {
+            try {
+                xslStream = clazz.getResourceAsStream(templateName);
+                templateCache = TransformerFactory.newInstance().newTemplates(
+                        new StreamSource(xslStream));
+                templateLoaded = true;
+            } catch (TransformerConfigurationException e) {
+                throw new SchemaCompilationException(SchemaCompilerMessages
+                        .getMessage("schema.templateLoadException"), e);
+            }
+        } else {
+            throw new SchemaCompilationException(SchemaCompilerMessages
+                    .getMessage("schema.templateNotFoundException"));
+        }
+    }
+
+    /**
+     * Creates the output file
+     *
+     * @param packageName
+     * @param fileName
+     * @throws Exception
+     */
+    private File createOutFile(String packageName, String fileName)
+            throws Exception {
+        return org.apache.axis2.util.FileWriter.createClassFile(this.rootDir,
+                packageName, fileName, ".java");
+    }
+
+    /**
+     * Writes the output file
+     *
+     * @param doc
+     * @param outputFile
+     * @throws Exception
+     */
+    private void parse(Document doc, File outputFile) throws Exception {
+        OutputStream outStream = new FileOutputStream(outputFile);
+        XSLTTemplateProcessor.parse(outStream, doc, this.templateCache
+                .newTransformer());
+        outStream.flush();
+        outStream.close();
+
+        PrettyPrinter.prettify(outputFile);
+    }
+
+    /**
+     * Get a prefix for a namespace URI. This method will ALWAYS return a valid
+     * prefix - if the given URI is already mapped in this serialization, we
+     * return the previous prefix. If it is not mapped, we will add a new
+     * mapping and return a generated prefix of the form "ns<num>".
+     *
+     * @param uri is the namespace uri
+     * @return Returns prefix.
+     */
+    public String getPrefixForURI(String uri) {
+        return getPrefixForURI(uri, null);
+    }
+
+    /**
+     * Last used index suffix for "ns"
+     */
+    private int lastPrefixIndex = 1;
+
+    /**
+     * Map of namespaces URI to prefix(es)
+     */
+    HashMap mapURItoPrefix = new HashMap();
+
+    HashMap mapPrefixtoURI = new HashMap();
+
+    /**
+     * Get a prefix for the given namespace URI. If one has already been defined
+     * in this serialization, use that. Otherwise, map the passed default prefix
+     * to the URI, and return that. If a null default prefix is passed, use one
+     * of the form "ns<num>"
+     */
+    public String getPrefixForURI(String uri, String defaultPrefix) {
+        if ((uri == null) || (uri.length() == 0))
+            return null;
+        String prefix = (String) mapURItoPrefix.get(uri);
+        if (prefix == null) {
+            if (defaultPrefix == null || defaultPrefix.length() == 0) {
+                prefix = "ns" + lastPrefixIndex++;
+                while (mapPrefixtoURI.get(prefix) != null) {
+                    prefix = "ns" + lastPrefixIndex++;
+                }
+            } else {
+                prefix = defaultPrefix;
+            }
+            mapPrefixtoURI.put(prefix, uri);
+            mapURItoPrefix.put(uri, prefix);
+        }
+        return prefix;
+    }
+
+    private String getShortTypeName(String typeClassName) {
+        if (typeClassName.endsWith("[]")) {
+            typeClassName = typeClassName.substring(0, typeClassName
+                    .lastIndexOf("["));
+        }
+
+        return typeClassName.substring(typeClassName.lastIndexOf(".") + 1,
+                typeClassName.length());
+
+    }
+
+    /**
+     * Get the mapper class name - there is going to be only one
+     * mapper class for the whole
+     */
+    private String getFullyQualifiedMapperClassName() {
+        if (wrapClasses || !writeClasses) {
+            return EXTENSION_MAPPER_CLASSNAME;
+        } else {
+            return mappingClassPackage + "." + EXTENSION_MAPPER_CLASSNAME;
+        }
+    }
+
+    /**
+     * get the mapper class package name
+     * May be ignored by the implementer
+     */
+    public String getExtensionMapperPackageName() {
+        return mappingClassPackage;
+    }
+
+    /**
+     * Sets the mapping class name of this writer. A mapping class
+     * package set by the options may be overridden at the this point
+     *
+     * @param mapperPackageName
+     */
+    public void registerExtensionMapperPackageName(String mapperPackageName) {
+        this.mappingClassPackage = mapperPackageName;
+    }
+
+    /**
+     * Write the extension classes - this is needed to process
+     * the hierarchy of classes
+     *
+     * @param metainfArray
+     */
+    public void writeExtensionMapper(BeanWriterMetaInfoHolder[] metainfArray) throws SchemaCompilationException {
+        //generate the element
+        try {
+
+
+            String mapperClassName = getFullyQualifiedMapperClassName();
+
+            Document model = XSLTUtils.getDocument();
+            Element rootElt = XSLTUtils.getElement(model, "mapper");
+            String mapperName = mapperClassName.substring(mapperClassName.lastIndexOf(".") + 1);
+            XSLTUtils.addAttribute(model, "name", mapperName, rootElt);
+            String basePackageName = "";
+            if (mapperClassName.indexOf(".") != -1) {
+                basePackageName = mapperClassName.substring(0, mapperClassName.lastIndexOf("."));
+                XSLTUtils.addAttribute(model, "package", basePackageName, rootElt);
+            } else {
+                XSLTUtils.addAttribute(model, "package", "", rootElt);
+            }
+
+            if (!wrapClasses) {
+                XSLTUtils.addAttribute(model, "unwrapped", "yes", rootElt);
+            }
+
+            if (!writeClasses) {
+                XSLTUtils.addAttribute(model, "skip-write", "yes", rootElt);
+            }
+
+            if (isHelperMode) {
+                XSLTUtils.addAttribute(model, "helpermode", "yes", rootElt);
+            }
+
+            for (int i = 0; i < metainfArray.length; i++) {
+                QName ownQname = metainfArray[i].getOwnQname();
+                String className = metainfArray[i].getOwnClassName();
+                //do  not add when the qname is not availble
+                if (ownQname != null) {
+                    Element typeChild = XSLTUtils.addChildElement(model, "type", rootElt);
+                    XSLTUtils.addAttribute(model, "nsuri", ownQname.getNamespaceURI(), typeChild);
+                    XSLTUtils.addAttribute(model, "classname", className == null ? "" : className, typeChild);
+                    XSLTUtils.addAttribute(model, "shortname", ownQname == null ? "" :
+                            ownQname.getLocalPart(), typeChild);
+                }
+            }
+
+            model.appendChild(rootElt);
+
+            if (!templateLoaded) {
+                loadTemplate();
+            }
+
+            if (wrapClasses) {
+                rootElt = (Element) globalWrappedDocument.importNode(rootElt, true);
+                //add to the global wrapped document
+                globalWrappedDocument.getDocumentElement().appendChild(rootElt);
+            } else {
+                if (writeClasses) {
+                    // create the file
+                    File out = createOutFile(basePackageName, mapperName);
+                    // parse with the template and create the files
+                    parse(model, out);
+
+                }
+
+                // add the model to the model map
+                modelMap.put(new QName(mapperName), model);
+            }
+
+        } catch (ParserConfigurationException e) {
+            throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("schema.docuement.error"), e);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new SchemaCompilationException(e);
+        }
+
+
+    }
+
+}
+
+
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/testsuite/complete.xsd b/rampart_1_1/modules/adb-codegen/test-resources/testsuite/complete.xsd
new file mode 100644
index 0000000..3369fc2
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/testsuite/complete.xsd
@@ -0,0 +1,314 @@
+<schema targetNamespace="http://types.echo.services"
+        xmlns="http://www.w3.org/2001/XMLSchema"
+        xmlns:tns="http://types.echo.services"
+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+        elementFormDefault="qualified">
+
+
+    <!-- test elements for xsd:anyType -->
+    <element name="TestAnyType1">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:anyType" minOccurs="0" maxOccurs="unbounded"
+                         nillable="true"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="TestAnyType2">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:anyType" minOccurs="0" nillable="true"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="TestAnyType3">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:anyType" minOccurs="0" maxOccurs="unbounded"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="TestAnyType4">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:anyType" minOccurs="0"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="TestAnyType5">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="TestAnyType6">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:anyType" nillable="true"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="TestAnyType7">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:anyType" maxOccurs="unbounded"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="TestAnyType8">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:anyType"/>
+            </sequence>
+        </complexType>
+    </element>
+
+    <!-- generating elemens for primitive types -->
+    <element name="testInt1">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" nillable="true" maxOccurs="unbounded" type="xsd:int"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testInt2">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" nillable="true" type="xsd:int"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testInt3">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testInt4">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" type="xsd:int"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testInt5">
+        <complexType>
+            <sequence>
+                <element name="testValue" nillable="true" maxOccurs="unbounded" type="xsd:int"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testInt6">
+        <complexType>
+            <sequence>
+                <element name="testValue" nillable="true" type="xsd:int"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testInt7">
+        <complexType>
+            <sequence>
+                <element name="testValue" maxOccurs="unbounded" type="xsd:int"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testInt8">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:int"/>
+            </sequence>
+        </complexType>
+    </element>
+
+    <!-- generating elemens for string types -->
+    <element name="testString1">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" nillable="true" maxOccurs="unbounded"
+                         type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testString2">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" nillable="true" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testString3">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testString4">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testString5">
+        <complexType>
+            <sequence>
+                <element name="testValue" nillable="true" maxOccurs="unbounded" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testString6">
+        <complexType>
+            <sequence>
+                <element name="testValue" nillable="true" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testString7">
+        <complexType>
+            <sequence>
+                <element name="testValue" maxOccurs="unbounded" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testString8">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+
+    <!-- generating elemens for custem types -->
+    <element name="testBookInformation1">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" nillable="true" maxOccurs="unbounded"
+                         type="tns:BookInformation"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testBookInformation2">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" nillable="true" type="tns:BookInformation"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testBookInformation3">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" maxOccurs="unbounded" type="tns:BookInformation"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testBookInformation4">
+        <complexType>
+            <sequence>
+                <element name="testValue" minOccurs="0" type="tns:BookInformation"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testBookInformation5">
+        <complexType>
+            <sequence>
+                <element name="testValue" nillable="true" maxOccurs="unbounded" type="tns:BookInformation"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testBookInformation6">
+        <complexType>
+            <sequence>
+                <element name="testValue" nillable="true" type="tns:BookInformation"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testBookInformation7">
+        <complexType>
+            <sequence>
+                <element name="testValue" maxOccurs="unbounded" type="tns:BookInformation"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testBookInformation8">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="tns:BookInformation"/>
+            </sequence>
+        </complexType>
+    </element>
+
+
+    <!-- generating elemens for any elements -->
+    <element name="testAny1">
+        <complexType>
+            <sequence>
+                <any minOccurs="0" maxOccurs="unbounded"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testAny2">
+        <complexType>
+            <sequence>
+                <any minOccurs="0"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testAny3">
+        <complexType>
+            <sequence>
+                <any maxOccurs="unbounded"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="testAny4">
+        <complexType>
+            <sequence>
+                <any/>
+            </sequence>
+        </complexType>
+    </element>
+
+    <!-- test string variables -->
+    <element name="OuterTestString1" type="xsd:string" nillable="true"/>
+    <element name="OuterTestString2" type="xsd:string"/>
+
+    <!-- test primitive variables -->
+    <element name="OuterTestInt1" type="xsd:int" nillable="true"/>
+    <element name="OuterTestInt2" type="xsd:int"/>
+
+    <!-- test xsd:any variables -->
+    <element name="OuterTestAnyType1" type="xsd:anyType" nillable="true"/>
+    <element name="OuterTestAnyType2" type="xsd:anyType"/>
+
+    <!-- test xsd:any variables -->
+    <element name="OuterTestBookInformation1" type="tns:BookInformation" nillable="true"/>
+    <element name="OuterTestBookInformation2" type="tns:BookInformation"/>
+
+    <!-- complext elements -->
+    <element name="OuterTestComplex1" nillable="true">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+    <element name="OuterTestComplex2">
+        <complexType>
+            <sequence>
+                <element name="testValue" type="xsd:string"/>
+            </sequence>
+        </complexType>
+    </element>
+
+    <complexType name="BookInformation">
+        <sequence>
+            <element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
+            <element name="title" type="string"/>
+        </sequence>
+        <attribute name="type" use="required" type="string"/>
+        <attribute name="isbn" use="required" type="string"/>
+    </complexType>
+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/anonymous_complexType.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/anonymous_complexType.xsd
new file mode 100644
index 0000000..4247621
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/anonymous_complexType.xsd
@@ -0,0 +1,15 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://soapinterop.org1/types"

+        targetNamespace="http://soapinterop.org1/types"

+        elementFormDefault="qualified">

+    <element name="tempElt">

+        <complexType>

+            <sequence>

+                <element name="varString" type="xsd:string"/>

+                <element name="varInt" type="xsd:int"/>

+                <element name="varFloat" type="xsd:float"/>

+            </sequence>

+        </complexType>

+    </element>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex-minoccurs0.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex-minoccurs0.xsd
new file mode 100644
index 0000000..9d3e696
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex-minoccurs0.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

+           elementFormDefault="qualified"

+           attributeFormDefault="unqualified"

+           targetNamespace="http://test1.org"

+           xmlns:tns="http://test1.org">

+	<xs:element name="root">

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element name="city" type="xs:string"/>

+				<xs:element name="person" type="tns:personType" minOccurs="0"/>

+				<xs:element name="address" type="tns:addressType" minOccurs="0" maxOccurs="unbounded"/>

+			</xs:sequence>

+		</xs:complexType>

+	</xs:element>

+    <xs:complexType name="personType">

+        <xs:sequence>

+            <xs:element name="name" type="xs:string"/>

+            <xs:element name="age" type="xs:int"/>

+        </xs:sequence>

+    </xs:complexType>

+    <xs:complexType name="addressType">

+        <xs:sequence>

+            <xs:element name="streetName" type="xs:string"/>

+            <xs:element name="streetNo" type="xs:int"/>

+        </xs:sequence>

+    </xs:complexType>

+</xs:schema>

diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex_all.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex_all.xsd
new file mode 100644
index 0000000..799a619
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex_all.xsd
@@ -0,0 +1,75 @@
+<s:schema elementFormDefault="qualified" targetNamespace="http://www.strikeiron.com" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://www.strikeiron.com">

+      <s:element name="GetQuotes">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" name="TickerSymbolList" type="s:string" />

+          </s:sequence>

+        </s:complexType>

+

+      </s:element>

+      <s:element name="GetQuotesResponse">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" name="GetQuotesResult" type="s0:ArrayOfRealQuote" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+      <s:complexType name="ArrayOfRealQuote">

+

+        <s:sequence>

+          <s:element minOccurs="0" maxOccurs="unbounded" name="RealQuote" nillable="true" type="s0:RealQuote" />

+        </s:sequence>

+      </s:complexType>

+      <s:complexType name="RealQuote">

+        <s:sequence>

+          <s:element minOccurs="0" maxOccurs="1" name="Symbol" type="s:string" />

+          <s:element minOccurs="0" maxOccurs="1" name="CUSIP" type="s:string" />

+          <s:element minOccurs="0" maxOccurs="1" name="CIK" type="s:string" />

+          <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />

+          <s:element minOccurs="0" maxOccurs="1" name="Date" type="s:string" />

+          <s:element minOccurs="0" maxOccurs="1" name="Time" type="s:string" />

+          <s:element minOccurs="1" maxOccurs="1" name="Last" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="Quantity" type="s:int" />

+          <s:element minOccurs="1" maxOccurs="1" name="ChangeFromPrevious" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="PercentChangeFromPrevious" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="Open" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="ChangeFromOpen" type="s:double" />

+

+          <s:element minOccurs="1" maxOccurs="1" name="PercentChangeFromOpen" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="Bid" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="Ask" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="Spread" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="BidQuantity" type="s:int" />

+          <s:element minOccurs="1" maxOccurs="1" name="AskQuantity" type="s:int" />

+          <s:element minOccurs="1" maxOccurs="1" name="Volume" type="s:int" />

+          <s:element minOccurs="1" maxOccurs="1" name="ECNVolume" type="s:int" />

+          <s:element minOccurs="1" maxOccurs="1" name="Highest" type="s:double" />

+

+          <s:element minOccurs="1" maxOccurs="1" name="Lowest" type="s:double" />

+          <s:element minOccurs="0" maxOccurs="1" name="Rank" type="s:string" />

+        </s:sequence>

+      </s:complexType>

+      <s:element name="ResponseInfo" type="s0:ResponseInfo" />

+      <s:complexType name="ResponseInfo">

+        <s:sequence>

+          <s:element minOccurs="1" maxOccurs="1" name="ResponseCode" type="s:int" />

+          <s:element minOccurs="0" maxOccurs="1" name="Response" type="s:string" />

+

+        </s:sequence>

+      </s:complexType>

+      <s:element name="GetOneQuote">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" name="TickerSymbol" type="s:string" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+

+      <s:element name="GetOneQuoteResponse">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" name="GetOneQuoteResult" type="s0:RealQuote" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+    </s:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex_content_extension.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex_content_extension.xsd
new file mode 100644
index 0000000..e22baf5
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/complex_content_extension.xsd
@@ -0,0 +1,28 @@
+<schema elementFormDefault="qualified"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="urn:sobject.enterprise.soap.sforce.com"

+        targetNamespace="urn:sobject.enterprise.soap.sforce.com">

+    <complexType name="sObject">

+        <sequence>

+            <element name="fieldsToNull"  type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>

+            <element name="Id" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />

+        </sequence>

+    </complexType>

+    <complexType name="Account">

+        <complexContent>

+            <extension base="tns:sObject">

+                <sequence>

+                    <element name="AccountNumber" nillable="true" minOccurs="0" type="xsd:string"/>

+                    <element name="Active__c" nillable="true" minOccurs="0" type="xsd:string"/>

+                    <element name="AnnualRevenue" nillable="true" minOccurs="0" type="xsd:double"/>

+                    <element name="BillingCity" nillable="true" minOccurs="0" type="xsd:string"/>

+                    <element name="BillingCountry" nillable="true" minOccurs="0" type="xsd:string"/>

+                    <element name="BillingPostalCode" nillable="true" minOccurs="0" type="xsd:string"/>

+                    <element name="BillingState" nillable="true" minOccurs="0" type="xsd:string"/>

+                </sequence>

+            </extension>

+        </complexContent>

+    </complexType>

+    <element name="Account" type="tns:Account"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/derived/derivedType-All.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/derived/derivedType-All.xsd
new file mode 100644
index 0000000..a2f84fe
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/derived/derivedType-All.xsd
@@ -0,0 +1,33 @@
+<schema targetNamespace="http://soapinterop.org/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xs="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        elementFormDefault="qualified">

+

+    <xs:element name="DerivedPositiveInteger" type="xs:positiveInteger"/>

+	<xs:element name="DerivedNegativeInteger" type="xs:negativeInteger"/>

+	<xs:element name="DerivedNonNegativeInteger" type="xs:nonNegativeInteger"/>

+	<xs:element name="DerivedNonPositiveInteger" type="xs:nonPositiveInteger"/>

+	<xs:element name="DerivedUnsignedShort" type="xs:unsignedShort"/>

+	<xs:element name="DerivedUnsignedLong" type="xs:unsignedLong"/>

+	<xs:element name="DerivedUnsignedInt" type="xs:unsignedInt"/>

+	<xs:element name="DerivedUnsignedByte" type="xs:unsignedByte"/>

+	<xs:element name="DerivedLong" type="xs:long"/>

+	<xs:element name="DerivedShort" type="xs:short"/>

+	<xs:element name="DerivedInt" type="xs:int"/>

+	<xs:element name="DerivedByte" type="xs:byte"/>

+	<xs:element name="DerivedToken" type="xs:token"/>

+	<xs:element name="DerivedLanguage" type="xs:language"/>

+	<xs:element name="DerivedNMTOKEN" type="xs:NMTOKEN"/>

+	<xs:element name="DerivedNMTOKENS" type="xs:NMTOKENS"/>

+	<xs:element name="DerivedID" type="xs:ID"/>

+	<xs:element name="DerivedIDRef" type="xs:IDREF"/>

+	<xs:element name="DerivedEntity" type="xs:ENTITY"/>

+	<xs:element name="DerivedEntities" type="xs:ENTITIES"/>

+	<xs:element name="DerivedName" type="xs:Name"/>

+	<xs:element name="DerivedNameToken" type="xs:NMTOKEN"/>

+	<xs:element name="DerivedNCName" type="xs:NCName"/>

+	<xs:element name="DerivedNormalizedString" type="xs:normalizedString"/>

+	<xs:element name="DerivedInteger" type="xs:integer"/>

+

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/import.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/import.xsd
new file mode 100644
index 0000000..8018a70
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/import.xsd
@@ -0,0 +1,10 @@
+<schema targetNamespace="http://soapinterop.org/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        xmlns:xsd2="http://soapinterop.org/xsd2"

+        elementFormDefault="qualified">

+    <import namespace="http://soapinterop.org/xsd2" schemaLocation="import2.xsd"></import>

+    <element name="echoStructParam" type="xsd2:SOAPStruct"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/import2.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/import2.xsd
new file mode 100644
index 0000000..5c0ce93
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/import2.xsd
@@ -0,0 +1,14 @@
+<schema targetNamespace="http://soapinterop.org/xsd2"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd2"

+        elementFormDefault="qualified">

+    <complexType name="SOAPStruct">

+        <all>

+            <element name="varFloat" type="xsd:float"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varString" type="xsd:string"/>

+        </all>

+    </complexType>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/mixed_minoccus0.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/mixed_minoccus0.xsd
new file mode 100644
index 0000000..5179bd5
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/mixed_minoccus0.xsd
@@ -0,0 +1,23 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://recursion1.org"

+        targetNamespace="http://recursion1.org"

+        elementFormDefault="qualified">

+    <xsd:element name="stringListResponseElement" type="tns:StringListResponseType"/>

+    <xsd:complexType name="StringListResponseType">

+        <xsd:choice>

+            <xsd:element name="stringList" type="tns:StringList"/>

+            <xsd:element name="exception" type="tns:ExceptionType"/>

+        </xsd:choice>

+    </xsd:complexType>

+    <xsd:complexType name="StringList">

+        <xsd:sequence>

+            <xsd:element name="s" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>

+        </xsd:sequence>

+    </xsd:complexType>

+     <xsd:complexType name="ExceptionType">

+        <xsd:sequence>

+            <xsd:element name="message" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>

+        </xsd:sequence>

+    </xsd:complexType>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple-minoccurs0.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple-minoccurs0.xsd
new file mode 100644
index 0000000..3fcadcb
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple-minoccurs0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://test.org">

+	<xs:element name="root">

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element name="A" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>

+				<xs:element name="B" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

+				<xs:element name="C" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

+				<xs:element name="D" type="xs:string" minOccurs="0" maxOccurs="1"/>

+			</xs:sequence>

+		</xs:complexType>

+	</xs:element>

+</xs:schema>

diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple-recursive-datatypes.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple-recursive-datatypes.xsd
new file mode 100644
index 0000000..b6b8077
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple-recursive-datatypes.xsd
@@ -0,0 +1,12 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://recursion.org"

+        targetNamespace="http://recursion.org"

+        elementFormDefault="qualified">

+    <complexType name="TypeE">

+        <sequence>

+            <element name="E" type="xsd:string"/>

+        </sequence>

+    </complexType>

+    <element name="E" type="tns:TypeE"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple/simpleType-All.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple/simpleType-All.xsd
new file mode 100644
index 0000000..485db67
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple/simpleType-All.xsd
@@ -0,0 +1,24 @@
+<schema targetNamespace="http://soapinterop.org/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        elementFormDefault="qualified">

+    <element name="dateParam" type="xsd:date"/>

+    <element name="dateTimeParam" type="xsd:dateTime"/>

+    <element name="dayParam" type="xsd:gDay"/>

+    <element name="durationParam" type="xsd:duration"/>

+    <element name="monthParam" type="xsd:gMonth"/>

+    <element name="monthDayParam" type="xsd:gMonthDay"/>

+    <element name="timeParam" type="xsd:time"/>

+    <element name="yearParam" type="xsd:gYear"/>

+    <element name="yearMonthParam" type="xsd:gYearMonth"/>

+    <element name="doubleParam" type="xsd:double"/>

+    <element name="stringParam" type="xsd:string"/>

+	<element name="booleanParam" type="xsd:boolean"/>

+	<element name="decimalParam" type="xsd:decimal"/>

+	<element name="floatParam" type="xsd:float"/>

+	<element name="hexBinParam" type="xsd:hexBinary"/>

+	<element name="base64BinParam" type="xsd:base64Binary"/>

+	<element name="anyURIParam" type="xsd:anyURI"/>

+	<element name="qNameParam" type="xsd:QName"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_any.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_any.xsd
new file mode 100644
index 0000000..1612310
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_any.xsd
@@ -0,0 +1,17 @@
+<schema targetNamespace="http://soapinterop.org/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        elementFormDefault="qualified">

+    <complexType name="SOAPStruct">

+        <sequence>

+            <element name="varFloat" type="xsd:float"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varString" type="xsd:string"/>

+            <any/>  <!-- note the inclusion of any here -->

+        </sequence>

+

+    </complexType>

+    <element name="myobject" type="xsd1:SOAPStruct"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_any_attribute.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_any_attribute.xsd
new file mode 100644
index 0000000..1f3f5a1
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_any_attribute.xsd
@@ -0,0 +1,16 @@
+<schema targetNamespace="http://soapinterop.org/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        elementFormDefault="qualified">

+    <complexType name="SOAPStruct">

+        <sequence>

+            <element name="varFloat" type="xsd:float"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varString" type="xsd:string"/>

+        </sequence>

+     <anyAttribute />

+    </complexType>

+    <element name="myobject" type="xsd1:SOAPStruct"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_anytype.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_anytype.xsd
new file mode 100644
index 0000000..8c21184
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_anytype.xsd
@@ -0,0 +1,9 @@
+<schema targetNamespace="http://soapinterop.org/xsd2"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        elementFormDefault="qualified">

+

+    <element name="myObject" type="xsd:anyType"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_attrib.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_attrib.xsd
new file mode 100644
index 0000000..b643faa
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_attrib.xsd
@@ -0,0 +1,22 @@
+<schema targetNamespace="http://soapinterop.org/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        elementFormDefault="qualified">

+    <complexType name="SOAPStruct">

+        <all>

+            <element name="varFloat" type="xsd:float"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varString" type="xsd:string"/>

+        </all>

+        <attribute name="type1" type="xsd:string"></attribute>

+        <attribute name="type2" type="xsd:string"></attribute>

+        <attribute name="type3" type="xsd:int"></attribute>

+        <attribute name="type4" type="xsd:float"></attribute>

+    </complexType>

+    <element name="echoStringParam" type="xsd:string"/>

+    <element name="echoStringReturn" type="xsd:string"/>

+    <element name="echoStructParam" type="xsd1:SOAPStruct"/>

+    <element name="echoStructReturn" type="xsd1:SOAPStruct"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_choice.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_choice.xsd
new file mode 100644
index 0000000..7ff1aac
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_choice.xsd
@@ -0,0 +1,14 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://soapinterop.org/types"

+        targetNamespace="http://soapinterop.org/types"

+        elementFormDefault="qualified">

+      <complexType name="SOAPStruct">

+        <choice>

+            <element name="varString" type="xsd:string"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varFloat" type="xsd:float"/>

+        </choice>

+    </complexType>

+    <element name="myElement" type="tns:SOAPStruct"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_content_extension.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_content_extension.xsd
new file mode 100644
index 0000000..f8917cc
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_content_extension.xsd
@@ -0,0 +1,26 @@
+<schema elementFormDefault="qualified"

+        xmlns:xs="http://www.w3.org/2001/XMLSchema"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="org.apache.axis2.test5"

+        targetNamespace="org.apache.axis2.test5">

+

+<xs:complexType name="type">

+	<xs:sequence>

+          <xs:element name="first" type="xs:string" />

+          <xs:element name="middle" type="xs:string" />

+          <xs:element name="last" type="xs:string" />

+        </xs:sequence>

+</xs:complexType>

+

+<xs:element name="fullName">

+  <xs:complexType>

+    <xs:simpleContent>

+      <xs:extension base="tns:type">

+        <xs:attribute name="language" type="xs:language"/>

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+ </xs:element>

+

+

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_element.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_element.xsd
new file mode 100644
index 0000000..58d7d77
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_element.xsd
@@ -0,0 +1,18 @@
+<schema targetNamespace="http://soapinterop.org/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        elementFormDefault="qualified">

+    <complexType name="SOAPStruct">

+        <all>

+            <element name="varFloat" type="xsd:float"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varString" type="xsd:string"/>

+        </all>

+    </complexType>

+    <element name="echoStringParam" type="xsd:string"/>

+    <element name="echoStringReturn" type="xsd:string"/>

+    <element name="echoStructParam" type="xsd1:SOAPStruct"/>

+    <element name="echoStructReturn" type="xsd1:SOAPStruct"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_element_reference.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_element_reference.xsd
new file mode 100644
index 0000000..3a9ed13
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_element_reference.xsd
@@ -0,0 +1,16 @@
+<schema elementFormDefault="qualified"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="urn:sobject.enterprise.soap.sforce.com"

+        targetNamespace="urn:sobject.enterprise.soap.sforce.com">

+    <complexType name="sObject">

+        <sequence>

+            <element ref="tns:fieldsToNull" />

+            <element ref="tns:Id" />

+        </sequence>

+    </complexType>

+    <element name="fieldsToNull"  type="xsd:string" />

+    <element name="Id"  type="xsd:string" />

+    <element name="Account" type="tns:sObject"/>

+    

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_maxOccurs.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_maxOccurs.xsd
new file mode 100644
index 0000000..ca7c196
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_maxOccurs.xsd
@@ -0,0 +1,14 @@
+<schema targetNamespace="http://soapinterop.org2/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org2/xsd"

+        elementFormDefault="qualified">

+    <complexType name="SOAPStruct">

+        <sequence>

+            <element name="varFloat" type="xsd:float"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varString" type="xsd:string" maxOccurs="10"/>

+        </sequence>

+    </complexType>

+    <element name="myobject" type="xsd1:SOAPStruct" />

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_maxOccurs2.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_maxOccurs2.xsd
new file mode 100644
index 0000000..be9bed4
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_maxOccurs2.xsd
@@ -0,0 +1,20 @@
+<schema targetNamespace="http://soapinterop.org/xsd"

+        xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd1="http://soapinterop.org/xsd"

+        elementFormDefault="qualified">

+    <complexType name="SOAPStruct">

+        <sequence>

+            <element name="varFloat" type="xsd:float"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varString" type="xsd:string" maxOccurs="10"/>

+        </sequence>

+    </complexType>

+    <complexType name="SOAPStructArray">

+        <sequence>

+            <element name="soapStructures" type="xsd1:SOAPStruct" maxOccurs="10"></element>

+        </sequence>

+    </complexType>

+    <element name="myobject" type="xsd1:SOAPStructArray" />

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_nillable.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_nillable.xsd
new file mode 100644
index 0000000..cdd4c49
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_nillable.xsd
@@ -0,0 +1,13 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://soapinterop.org/types"

+        targetNamespace="http://soapinterop.org/types">

+    <complexType name="SOAPStruct1">

+        <sequence>

+            <element name="varString" type="xsd:string" nillable="true"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varFloat" type="xsd:float"/>

+        </sequence>

+    </complexType>

+    <element name="myElementNillable" type="tns:SOAPStruct1" nillable="true"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_particle_all.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_particle_all.xsd
new file mode 100644
index 0000000..7d8c8d7
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_particle_all.xsd
@@ -0,0 +1,14 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://soapinterop.org/types"

+        targetNamespace="http://soapinterop.org/types"

+        elementFormDefault="qualified">

+      <complexType name="SimpleParticleAllStruct">

+        <all>

+            <element name="varString" type="xsd:string"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varFloat" type="xsd:float"/>

+        </all>

+    </complexType>

+    <element name="myParticleAllElement" type="tns:SimpleParticleAllStruct"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_recursive.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_recursive.xsd
new file mode 100644
index 0000000..5c68567
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_recursive.xsd
@@ -0,0 +1,14 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://soapinterop.org/types"

+        targetNamespace="http://soapinterop.org/types">

+    <complexType name="SOAPStruct1">

+        <sequence>

+            <element name="varString" type="xsd:string" nillable="true"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varFloat" type="xsd:float"/>

+            <element name="child" type="tns:SOAPStruct1"/>

+        </sequence>

+    </complexType>

+    <element name="myElementNillable" type="tns:SOAPStruct1" nillable="true"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_restriction.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_restriction.xsd
new file mode 100644
index 0000000..816128a
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_restriction.xsd
@@ -0,0 +1,15 @@
+<xs:schema targetNamespace="http://soapinterop.org/xsd"

+           xmlns:xs="http://www.w3.org/2001/XMLSchema"

+           xmlns:tns="http://soapinterop.org/xsd"

+           elementFormDefault="qualified">

+    <xs:element name="char" nillable="true" type="tns:char"/>

+    <xs:simpleType name="char">

+        <xs:restriction base="xs:int"/>

+    </xs:simpleType>

+    <xs:element name="guid" nillable="true" type="tns:guid"/>

+    <xs:simpleType name="guid">

+        <xs:restriction base="xs:string">

+            <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/>

+        </xs:restriction>

+    </xs:simpleType>

+</xs:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_sequence.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_sequence.xsd
new file mode 100644
index 0000000..5b68a76
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_sequence.xsd
@@ -0,0 +1,14 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://soapinterop.org/types"

+        targetNamespace="http://soapinterop.org/types">

+    <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

+    <complexType name="SOAPStruct">

+        <sequence>

+            <element name="varString" type="xsd:string"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varFloat" type="xsd:float"/>

+        </sequence>

+    </complexType>

+    <element name="myElement" type="tns:SOAPStruct"/>

+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_sequence_2.xsd b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_sequence_2.xsd
new file mode 100644
index 0000000..cead4e3
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test-resources/xsd/simple_sequence_2.xsd
@@ -0,0 +1,22 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+        xmlns:tns="http://soapinterop.org/types"

+        targetNamespace="http://soapinterop.org/types">

+    <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

+    <complexType name="SOAPStruct">

+        <sequence>

+            <element name="varString" type="xsd:string"/>

+            <element name="varInt" type="xsd:int"/>

+            <element name="varFloat" type="xsd:float"/>

+        </sequence>

+    </complexType>

+    <!-- Has one more complex type that uses the already defined complex type -->

+    <complexType name="SOAPStructFault">

+        <sequence>

+            <element name="soapStruct" type="tns:SOAPStruct"/>

+        </sequence>

+    </complexType>

+    <element name="tempElt" type="tns:SOAPStructFault"/>

+</schema>

+

+

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/AbstractSchemaCompilerTester.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/AbstractSchemaCompilerTester.java
new file mode 100644
index 0000000..2cc2ecd
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/AbstractSchemaCompilerTester.java
@@ -0,0 +1,103 @@
+package org.apache.axis2.schema.compile;

+

+import junit.framework.TestCase;

+import org.apache.axis2.schema.CompilerOptions;

+import org.apache.axis2.schema.SchemaCompiler;

+import org.apache.ws.commons.schema.XmlSchema;

+import org.apache.ws.commons.schema.XmlSchemaCollection;

+import org.w3c.dom.Document;

+

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import java.io.File;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/* Maven is a little dumb when it comes to executing test cases. It tries to run everything

+  that ends with 'test' even if the class is abstract or non junit!!!!!

+  Rather than putting an explicit exclude, this is a cheaper way out

+*/

+public abstract class AbstractSchemaCompilerTester extends TestCase {

+

+    //this should be an xsd name in the test-resource directory

+    protected String fileName = "";

+    protected  XmlSchema currentSchema;

+    protected File outputFolder = null;

+

+    private static String TEMP_OUT_FOLDER="temp_compile";

+

+    protected void setUp() throws Exception {

+        //load the current Schema through a file

+        //first read the file into a DOM

+        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

+        documentBuilderFactory.setNamespaceAware(true);

+

+        DocumentBuilder builder =  documentBuilderFactory.newDocumentBuilder();

+        Document doc = builder.parse(new File(fileName));

+

+        //now read it to a schema

+        XmlSchemaCollection schemaCol =  getSchemaReader();

+        currentSchema = schemaCol.read(doc,null);

+

+        outputFolder = new File(TEMP_OUT_FOLDER);

+        if (outputFolder.exists()){

+            if (outputFolder.isFile()){

+                outputFolder.delete();

+                outputFolder.mkdirs();

+            }

+        }else{

+            outputFolder.mkdirs();

+        }

+    }

+

+    protected  XmlSchemaCollection getSchemaReader(){

+        return new XmlSchemaCollection();

+    }

+

+    public void testSchema() throws Exception{

+        CompilerOptions compilerOptions = new CompilerOptions();

+        compilerOptions.setOutputLocation(outputFolder);

+        compilerOptions.setWrapClasses(false);

+        compilerOptions.setWriteOutput(true);

+        SchemaCompiler compiler = new SchemaCompiler(compilerOptions);

+        compiler.compile(currentSchema);

+       

+    }

+

+    protected void tearDown() throws Exception {

+         deleteDir(outputFolder);

+    }

+

+    /**

+     * Deletes all files and subdirectories under dir.

+     * Returns true if all deletions were successful.

+     * If a deletion fails, the method stops attempting to delete and returns false.

+     */

+    private boolean deleteDir(File dir) {

+        if (dir.isDirectory()) {

+            String[] children = dir.list();

+            for (int i=0; i<children.length; i++) {

+                boolean success = deleteDir(new File(dir, children[i]));

+                if (!success) {

+                    return false;

+                }

+            }

+        }

+

+        // The directory is now empty so delete it

+        return dir.delete();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/AnonymousComplexTypeTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/AnonymousComplexTypeTest.java
new file mode 100644
index 0000000..506636a
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/AnonymousComplexTypeTest.java
@@ -0,0 +1,24 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class AnonymousComplexTypeTest extends AbstractSchemaCompilerTester {

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/anonymous_complexType.xsd";

+        super.setUp();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ComplexAllTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ComplexAllTest.java
new file mode 100644
index 0000000..8ce506f
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ComplexAllTest.java
@@ -0,0 +1,26 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ComplexAllTest extends AbstractSchemaCompilerTester {

+     protected void setUp() throws Exception {

+         this.fileName = "test-resources/xsd/complex_all.xsd";

+        super.setUp();

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ComplexExtensionTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ComplexExtensionTest.java
new file mode 100644
index 0000000..1e7e458
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ComplexExtensionTest.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.schema.compile;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ComplexExtensionTest extends AbstractSchemaCompilerTester{

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/complex_content_extension.xsd";

+        super.setUp();

+    }

+

+   

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ImportTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ImportTest.java
new file mode 100644
index 0000000..98cad47
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/ImportTest.java
@@ -0,0 +1,31 @@
+package org.apache.axis2.schema.compile;

+

+import org.apache.ws.commons.schema.XmlSchemaCollection;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ImportTest extends AbstractSchemaCompilerTester{

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/import.xsd";

+        super.setUp();

+    }

+

+    protected XmlSchemaCollection getSchemaReader() {

+        XmlSchemaCollection reader = new XmlSchemaCollection();

+        reader.setBaseUri("test-resources/xsd");

+        return reader;

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/RecursiveCompileTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/RecursiveCompileTest.java
new file mode 100644
index 0000000..e7c0ec0
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/RecursiveCompileTest.java
@@ -0,0 +1,27 @@
+package org.apache.axis2.schema.compile;

+

+import junit.framework.TestCase;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class RecursiveCompileTest extends AbstractSchemaCompilerTester {

+      protected void setUp() throws Exception {

+         this.fileName = "test-resources/xsd/simple_recursive.xsd";

+        super.setUp();

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyAttribTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyAttribTest.java
new file mode 100644
index 0000000..d02bb68
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyAttribTest.java
@@ -0,0 +1,24 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleAnyAttribTest extends AbstractSchemaCompilerTester {

+      protected void setUp() throws Exception {

+         this.fileName = "test-resources/xsd/simple_any_attribute.xsd";

+        super.setUp();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyTest.java
new file mode 100644
index 0000000..0fc14bd
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyTest.java
@@ -0,0 +1,24 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleAnyTest extends AbstractSchemaCompilerTester {

+    protected void setUp() throws Exception {

+         this.fileName = "test-resources/xsd/simple_any.xsd";

+        super.setUp();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyTypeTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyTypeTest.java
new file mode 100644
index 0000000..d2823a7
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAnyTypeTest.java
@@ -0,0 +1,26 @@
+package org.apache.axis2.schema.compile;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleAnyTypeTest extends AbstractSchemaCompilerTester {

+

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_anytype.xsd";

+        super.setUp();

+    }

+

+  

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAttributeTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAttributeTest.java
new file mode 100644
index 0000000..38bc3d9
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleAttributeTest.java
@@ -0,0 +1,26 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleAttributeTest extends AbstractSchemaCompilerTester {

+

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_attrib.xsd";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleChoiceTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleChoiceTest.java
new file mode 100644
index 0000000..45e8590
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleChoiceTest.java
@@ -0,0 +1,26 @@
+package org.apache.axis2.schema.compile;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleChoiceTest extends AbstractSchemaCompilerTester {

+

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_choice.xsd";

+        super.setUp();

+    }

+

+   

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleContentExtensionTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleContentExtensionTest.java
new file mode 100644
index 0000000..0be1c2a
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleContentExtensionTest.java
@@ -0,0 +1,23 @@
+package org.apache.axis2.schema.compile;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleContentExtensionTest extends AbstractSchemaCompilerTester{

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_content_extension.xsd";

+        super.setUp();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleElementReferenceTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleElementReferenceTest.java
new file mode 100644
index 0000000..a1860b3
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleElementReferenceTest.java
@@ -0,0 +1,27 @@
+package org.apache.axis2.schema.compile;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleElementReferenceTest extends AbstractSchemaCompilerTester {

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_element_reference.xsd";

+        super.setUp();

+    }

+

+    protected void tearDown() throws Exception {

+        

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleElementTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleElementTest.java
new file mode 100644
index 0000000..f02b1d6
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleElementTest.java
@@ -0,0 +1,24 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleElementTest extends AbstractSchemaCompilerTester {

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_element.xsd";

+        super.setUp();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleParticleAllTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleParticleAllTest.java
new file mode 100644
index 0000000..a8e8b94
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleParticleAllTest.java
@@ -0,0 +1,26 @@
+package org.apache.axis2.schema.compile;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleParticleAllTest extends AbstractSchemaCompilerTester {

+

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_particle_all.xsd";

+        super.setUp();

+    }

+

+   

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleRestrictionTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleRestrictionTest.java
new file mode 100644
index 0000000..3e6f36f
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleRestrictionTest.java
@@ -0,0 +1,24 @@
+package org.apache.axis2.schema.compile;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleRestrictionTest extends AbstractSchemaCompilerTester{

+     protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_restriction.xsd";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleSequence2Test.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleSequence2Test.java
new file mode 100644
index 0000000..17ff21d
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleSequence2Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleSequence2Test extends AbstractSchemaCompilerTester {

+     protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_sequence_2.xsd";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleSequenceTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleSequenceTest.java
new file mode 100644
index 0000000..25a74f7
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/SimpleSequenceTest.java
@@ -0,0 +1,27 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleSequenceTest extends AbstractSchemaCompilerTester {

+

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_sequence.xsd";

+        super.setUp();

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/XmlMaxOccurs2Test.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/XmlMaxOccurs2Test.java
new file mode 100644
index 0000000..c96e008
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/XmlMaxOccurs2Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class XmlMaxOccurs2Test extends AbstractSchemaCompilerTester {

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_maxOccurs2.xsd";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/XmlmaxOccursTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/XmlmaxOccursTest.java
new file mode 100644
index 0000000..5a4ecf4
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/XmlmaxOccursTest.java
@@ -0,0 +1,24 @@
+package org.apache.axis2.schema.compile;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class XmlmaxOccursTest extends AbstractSchemaCompilerTester {

+       protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple_maxOccurs.xsd";

+        super.setUp();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/simple/SimpleTypeAllCompileTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/simple/SimpleTypeAllCompileTest.java
new file mode 100644
index 0000000..bb70250
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/compile/simple/SimpleTypeAllCompileTest.java
@@ -0,0 +1,26 @@
+package org.apache.axis2.schema.compile.simple;

+

+import org.apache.axis2.schema.compile.AbstractSchemaCompilerTester;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeAllCompileTest extends AbstractSchemaCompilerTester {

+

+    protected void setUp() throws Exception {

+        this.fileName = "test-resources/xsd/simple/simpleType-All.xsd";

+        super.setUp();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/AbstractDerivedPopulater.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/AbstractDerivedPopulater.java
new file mode 100644
index 0000000..0fa6bc4
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/AbstractDerivedPopulater.java
@@ -0,0 +1,133 @@
+package org.apache.axis2.schema.populate.derived;

+

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.lang.reflect.Method;

+

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.util.StAXUtils;

+import org.custommonkey.xmlunit.XMLTestCase;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public abstract class AbstractDerivedPopulater extends XMLTestCase {

+

+    // force others to implement this method

+    public abstract void testPopulate() throws Exception;

+

+    /**

+     * Simple reusable method to make object instances via reflection

+     */

+    protected Object process(String testString,String className) throws Exception{

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(testString.getBytes()));

+        Class clazz = Class.forName(className);

+        Class[] declaredClasse = clazz.getDeclaredClasses();

+        //ideally this should be 1

+        Class innerClazz = declaredClasse[0];

+        Method parseMethod = innerClazz.getMethod("parse",new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null,new Object[]{reader});

+        assertNotNull(obj);

+

+        return obj;

+

+    }

+

+    protected  String className= null;

+    protected Class propertyClass = null;

+

+    /**

+     * check value function - may be overridden

+     * @param xmlToSet

+     * @param value

+     * @throws Exception

+     */

+    protected void checkValue(String xmlToSet, String value) throws Exception {

+        Object o = process(xmlToSet, className);

+        Class beanClass = Class.forName(className);

+

+        BeanInfo info = Introspector.getBeanInfo(beanClass);

+        PropertyDescriptor[] propDescs = info.getPropertyDescriptors();

+        for (int i = 0; i < propDescs.length; i++) {

+            PropertyDescriptor propDesc = propDescs[i];

+

+            if  (propDesc.getPropertyType().equals(propertyClass)){

+                String s = convertToString(propDesc.getReadMethod().invoke(o,

+                        (Object[]) null));

+                compare(value,s);

+            }

+        }

+

+

+        CompareOMElemntSerializations(o, xmlToSet);

+    }

+

+    /**

+     * Compares serializations - may be overridden

+     * @param o

+     * @param xmlToSet

+     * @throws Exception

+     */

+    protected void CompareOMElemntSerializations(Object o, String xmlToSet) throws Exception {

+        OMElement element = getOMElement(o);

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(baos);

+        element.serialize(writer);

+        writer.flush();

+

+        assertXMLEqual(baos.toString(),xmlToSet);

+    }

+

+    /**

+     * Get OM element via reflection

+     * @param bean

+     * @return

+     * @throws Exception

+     */

+    protected OMElement getOMElement(Object bean) throws Exception {

+        Method method = bean.getClass().getMethod("getOMElement", new Class[]{

+                javax.xml.namespace.QName.class,

+                org.apache.axiom.om.OMFactory.class});

+

+        return (OMElement) method.invoke(bean, new Object[]{null, OMAbstractFactory.getOMFactory()});

+

+    }

+

+    /**

+     * comapare method - may be overridden

+     * @param val1

+     * @param val2

+     */

+    protected void compare(String val1,String val2){

+        assertEquals(val1,val2);

+    }

+

+    /**

+     *

+     * @param o

+     * @return

+     */

+    protected String convertToString(Object o){

+        return o.toString();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeBytePopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeBytePopulateTest.java
new file mode 100644
index 0000000..ac6dff6
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeBytePopulateTest.java
@@ -0,0 +1,49 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeBytePopulateTest extends AbstractDerivedPopulater{

+

+     private String values[]= {

+            "1",

+            "0",

+            "2"

+    };

+    private String xmlString[] = {

+            "<DerivedByte xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedByte>",

+            "<DerivedByte xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedByte>",

+            "<DerivedByte xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedByte>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedByte";

+        propertyClass = byte.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Byte)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeIntPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeIntPopulateTest.java
new file mode 100644
index 0000000..7a9d072
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeIntPopulateTest.java
@@ -0,0 +1,50 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeIntPopulateTest extends AbstractDerivedPopulater{

+    private String values[]= {

+            "122222",

+            "0",

+            "-2344556"

+    };

+

+

+    private String xmlString[] = {

+            "<DerivedInt xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedInt>",

+            "<DerivedInt xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedInt>",

+            "<DerivedInt xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedInt>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedInt";

+        propertyClass = int.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < 2; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Integer)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeIntegerPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeIntegerPopulateTest.java
new file mode 100644
index 0000000..2b9b2a1
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeIntegerPopulateTest.java
@@ -0,0 +1,51 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+import java.math.BigInteger;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeIntegerPopulateTest extends AbstractDerivedPopulater{

+

+     private String values[]= {

+            "122222",

+            "0",

+            "-2344556"

+    };

+    private String xmlString[] = {

+            "<DerivedInteger xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedInteger>",

+            "<DerivedInteger xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedInteger>",

+            "<DerivedInteger xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedInteger>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedInteger";

+        propertyClass = BigInteger.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((BigInteger)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeLongPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeLongPopulateTest.java
new file mode 100644
index 0000000..4914ca9
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeLongPopulateTest.java
@@ -0,0 +1,57 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeLongPopulateTest extends AbstractDerivedPopulater{

+

+    private String values[]= {

+            "17578283282",

+            "-1228284443",

+            "2",

+            Long.MAX_VALUE + "",

+            Long.MIN_VALUE + ""

+    };

+

+    private String xmlString[] = {

+            "<DerivedLong xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedLong>",

+            "<DerivedLong xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedLong>",

+            "<DerivedLong xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedLong>",

+            "<DerivedLong xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedLong>",

+            "<DerivedLong xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedLong>"

+    };

+

+

+

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedLong";

+        propertyClass = long.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < 2; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Long)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNegativeIntegerPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNegativeIntegerPopulateTest.java
new file mode 100644
index 0000000..0a5e577
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNegativeIntegerPopulateTest.java
@@ -0,0 +1,64 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.types.NegativeInteger;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeNegativeIntegerPopulateTest extends AbstractDerivedPopulater{

+    

+     private String values[]= {

+            "-18443",

+            "-1",

+            "-2633",

+            "267582233",

+            "0",

+    };

+    private String xmlString[] = {

+            "<DerivedNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedNegativeInteger>",

+            "<DerivedNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedNegativeInteger>",

+            "<DerivedNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedNegativeInteger>",

+            "<DerivedNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedNegativeInteger>",

+            "<DerivedNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedNegativeInteger>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedNegativeInteger";

+        propertyClass = NegativeInteger.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < 3; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+

+        for (int i = 3; i < values.length; i++) {

+            try {

+                checkValue(xmlString[i],values[i]);

+                fail();

+            } catch (Exception e) {

+

+            }

+        }

+

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((NegativeInteger)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNonNegativeIntegerPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNonNegativeIntegerPopulateTest.java
new file mode 100644
index 0000000..7a0d40c
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNonNegativeIntegerPopulateTest.java
@@ -0,0 +1,68 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.types.NonNegativeInteger;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeNonNegativeIntegerPopulateTest extends AbstractDerivedPopulater{

+

+    private String values[]= {

+            "18444",

+            "1",

+            "0" ,

+            "-1" ,

+            "-3453434"

+

+    };

+

+    private String xmlString[] = {

+            "<DerivedNonNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedNonNegativeInteger>",

+            "<DerivedNonNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedNonNegativeInteger>",

+            "<DerivedNonNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedNonNegativeInteger>",

+            "<DerivedNonNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedNonNegativeInteger>",

+            "<DerivedNonNegativeInteger xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedNonNegativeInteger>"

+    };

+

+

+

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedNonNegativeInteger";

+        propertyClass = NonNegativeInteger.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+

+        for (int i = 0; i < 3; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+        for (int i = 3; i < values.length; i++) {

+            try {

+                checkValue(xmlString[i],values[i]);

+                fail();

+            } catch (Exception e) {

+

+            }

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((NonNegativeInteger)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNonPositiveIntegerPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNonPositiveIntegerPopulateTest.java
new file mode 100644
index 0000000..43da326
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeNonPositiveIntegerPopulateTest.java
@@ -0,0 +1,68 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.types.NonPositiveInteger;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeNonPositiveIntegerPopulateTest extends AbstractDerivedPopulater{

+

+    private String values[]= {

+            "-18444",

+            "-1",

+            "0" ,

+            "1" ,

+            "3453434"

+

+    };

+

+    private String xmlString[] = {

+            "<DerivedNonPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedNonPositiveInteger>",

+            "<DerivedNonPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedNonPositiveInteger>",

+            "<DerivedNonPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedNonPositiveInteger>",

+            "<DerivedNonPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedNonPositiveInteger>",

+            "<DerivedNonPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedNonPositiveInteger>"

+    };

+

+

+

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedNonPositiveInteger";

+        propertyClass = long.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+

+        for (int i = 0; i < 3; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+        for (int i = 3; i < values.length; i++) {

+            try {

+                checkValue(xmlString[i],values[i]);

+                fail();

+            } catch (Exception e) {

+

+            }

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((NonPositiveInteger)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypePositveIntegerPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypePositveIntegerPopulateTest.java
new file mode 100644
index 0000000..9231426
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypePositveIntegerPopulateTest.java
@@ -0,0 +1,68 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.types.PositiveInteger;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypePositveIntegerPopulateTest extends AbstractDerivedPopulater{

+

+     private String values[]= {

+            "18444",

+            "1",

+            "5636332" ,

+            "0" ,

+            "-3453434"

+

+    };

+

+    private String xmlString[] = {

+            "<DerivedPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedPositiveInteger>",

+            "<DerivedPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedPositiveInteger>",

+            "<DerivedPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedPositiveInteger>",

+            "<DerivedPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedPositiveInteger>",

+            "<DerivedPositiveInteger xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedPositiveInteger>"

+    };

+

+

+

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedPositiveInteger";

+        propertyClass = PositiveInteger.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+

+        for (int i = 0; i < 3; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+        for (int i = 3; i < values.length; i++) {

+            try {

+                checkValue(xmlString[i],values[i]);

+                fail();

+            } catch (Exception e) {

+

+            }

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((PositiveInteger)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeShortPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeShortPopulateTest.java
new file mode 100644
index 0000000..ab818bf
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeShortPopulateTest.java
@@ -0,0 +1,60 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeShortPopulateTest extends AbstractDerivedPopulater{

+        

+    private String values[]= {

+            "17444",

+            "-12343",

+            "2" ,

+            "0" ,

+            "-6"

+

+    };

+

+    private String xmlString[] = {

+            "<DerivedShort xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedShort>",

+            "<DerivedShort xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedShort>",

+            "<DerivedShort xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedShort>",

+            "<DerivedShort xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedShort>",

+            "<DerivedShort xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedShort>"

+    };

+

+

+

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedShort";

+        propertyClass = Short.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+

+        for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Short)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedBytePopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedBytePopulateTest.java
new file mode 100644
index 0000000..f1b407e
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedBytePopulateTest.java
@@ -0,0 +1,70 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.types.UnsignedByte;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeUnsignedBytePopulateTest extends AbstractDerivedPopulater{

+    

+     private String values[]= {

+            "1",

+            "0",

+            "2" ,

+            "-1" ,

+            "-6"

+

+    };

+

+    private String xmlString[] = {

+            "<DerivedUnsignedByte xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedUnsignedByte>",

+            "<DerivedUnsignedByte xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedUnsignedByte>",

+            "<DerivedUnsignedByte xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedUnsignedByte>",

+            "<DerivedUnsignedByte xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedUnsignedByte>",

+            "<DerivedUnsignedByte xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedUnsignedByte>"

+    };

+

+

+

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedUnsignedByte";

+        propertyClass = UnsignedByte.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+

+        for (int i = 0; i < 3; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+

+        for (int i = 3; i < values.length; i++) {

+            try {

+                checkValue(xmlString[i],values[i]);

+                fail();

+            } catch (Exception e) {

+

+            }

+        }

+

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((UnsignedByte)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedIntPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedIntPopulateTest.java
new file mode 100644
index 0000000..3c87acf
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedIntPopulateTest.java
@@ -0,0 +1,70 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.types.UnsignedInt;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeUnsignedIntPopulateTest extends AbstractDerivedPopulater{

+

+    private String values[]= {

+            "1",

+            "0",

+            "267582233" ,

+            "-1" ,

+            "-267582233"

+

+    };

+

+    private String xmlString[] = {

+            "<DerivedUnsignedInt xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedUnsignedInt>",

+            "<DerivedUnsignedInt xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedUnsignedInt>",

+            "<DerivedUnsignedInt xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedUnsignedInt>",

+            "<DerivedUnsignedInt xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedUnsignedInt>",

+            "<DerivedUnsignedInt xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedUnsignedInt>"

+    };

+

+

+

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedUnsignedInt";

+        propertyClass = UnsignedInt.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+

+        for (int i = 0; i < 3; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+

+        for (int i = 3; i < values.length; i++) {

+            try {

+                checkValue(xmlString[i],values[i]);

+                fail();

+            } catch (Exception e) {

+

+            }

+        }

+

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((UnsignedInt)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedLongPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedLongPopulateTest.java
new file mode 100644
index 0000000..3c549df
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedLongPopulateTest.java
@@ -0,0 +1,72 @@
+package org.apache.axis2.schema.populate.derived;
+
+import org.apache.axis2.databinding.types.UnsignedLong;
+import org.apache.axis2.databinding.utils.ConverterUtil;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class DerivedTypeUnsignedLongPopulateTest extends AbstractDerivedPopulater{
+
+    private String values[]= {
+            "1",
+            "0",
+            "26758223334334" ,
+	    "18446744073709551615",
+            "-1" ,
+            "-267582233"
+
+    };
+
+    private String xmlString[] = {
+            "<DerivedUnsignedLong xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedUnsignedLong>",
+            "<DerivedUnsignedLong xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedUnsignedLong>",
+            "<DerivedUnsignedLong xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</DerivedUnsignedLong>",
+            "<DerivedUnsignedLong xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedUnsignedLong>",
+            "<DerivedUnsignedLong xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedUnsignedLong>",
+            "<DerivedUnsignedLong xmlns=\"http://soapinterop.org/xsd\">"+values[5]+"</DerivedUnsignedLong>"
+    };
+
+
+
+
+    protected void setUp() throws Exception {
+        className = "org.soapinterop.xsd.DerivedUnsignedLong";
+        propertyClass = UnsignedLong.class;
+    }
+
+    // force others to implement this method
+    public void testPopulate() throws Exception {
+
+        for (int i = 0; i < 4; i++) {
+            checkValue(xmlString[i],values[i]);
+        }
+
+        for (int i = 4; i < values.length; i++) {
+            try {
+                checkValue(xmlString[i],values[i]);
+                fail();
+            } catch (Exception e) {
+
+            }
+        }
+
+    }
+
+    protected String convertToString(Object o) {
+        return ConverterUtil.convertToString((UnsignedLong)o);
+    }
+}
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedShortPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedShortPopulateTest.java
new file mode 100644
index 0000000..7b1967b
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/derived/DerivedTypeUnsignedShortPopulateTest.java
@@ -0,0 +1,70 @@
+package org.apache.axis2.schema.populate.derived;

+

+import org.apache.axis2.databinding.types.UnsignedShort;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class DerivedTypeUnsignedShortPopulateTest extends AbstractDerivedPopulater{

+

+    private String values[]= {

+            "1",

+            "0",

+            "2675" ,

+            "-1" ,

+            "-2675823"

+

+    };

+

+    private String xmlString[] = {

+            "<DerivedUnsignedShort xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</DerivedUnsignedShort>",

+            "<DerivedUnsignedShort xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</DerivedUnsignedShort>",

+            "<DerivedUnsignedShort xmlns=\"http://soapinterop.org/xsd\" >"+values[2]+"</DerivedUnsignedShort>",

+            "<DerivedUnsignedShort xmlns=\"http://soapinterop.org/xsd\">"+values[3]+"</DerivedUnsignedShort>",

+            "<DerivedUnsignedShort xmlns=\"http://soapinterop.org/xsd\">"+values[4]+"</DerivedUnsignedShort>"

+    };

+

+

+

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DerivedUnsignedShort";

+        propertyClass = UnsignedShort.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+

+        for (int i = 0; i < 3; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+

+        for (int i = 3; i < values.length; i++) {

+            try {

+                checkValue(xmlString[i],values[i]);

+                fail();

+            } catch (Exception e) {

+

+            }

+        }

+

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((UnsignedShort)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/ADBInOutTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/ADBInOutTest.java
new file mode 100644
index 0000000..2ccbad1
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/ADBInOutTest.java
@@ -0,0 +1,77 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLInputFactory;

+import java.io.ByteArrayInputStream;

+import java.lang.reflect.Method;

+

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ADBInOutTest extends TestCase {

+

+    private String xmlString = "<tempElt xmlns=\"http://soapinterop.org1/types\">" +

+            "hello" +

+            "</tempElt>";

+    private String xmlString2 = "<header1 xmlns=\"http://soapinterop.org1/types\">" +

+            "<varString>Hello</varString>" +

+            "<varInt>5</varInt>" +

+            "<varFloat>3.3</varFloat>" +

+            "</header1>";

+

+    public void testPopulate() throws Exception{

+

+        XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(xmlString.getBytes()));

+        SOAPEnvelope defaultEnvelope = OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope();

+        OMElement documentElement = new StAXOMBuilder(reader).getDocumentElement();

+        defaultEnvelope.getBody().addChild(documentElement);

+        XMLStreamReader xmlStreamReader = defaultEnvelope.getBody().getFirstElement().getXMLStreamReader();

+        while(xmlStreamReader.hasNext()){

+            System.out.println("event " + xmlStreamReader.next());

+            System.out.println("text " +  (xmlStreamReader.hasText()?xmlStreamReader.getText():""));

+            System.out.println("localName " + (xmlStreamReader.hasName()?xmlStreamReader.getLocalName():""));

+        }

+    }

+

+    public void testPopulate2() throws Exception{

+

+        XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(xmlString.getBytes()));

+        XMLStreamReader reader2 = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(xmlString2.getBytes()));

+

+        SOAPFactory soap11Factory = OMAbstractFactory.getSOAP11Factory();

+

+        SOAPEnvelope defaultEnvelope = soap11Factory.getDefaultEnvelope();

+        OMElement documentElement = new StAXOMBuilder(reader).getDocumentElement();

+        defaultEnvelope.getBody().addChild(documentElement);

+

+        OMElement documentElement2 = new StAXOMBuilder(reader2).getDocumentElement();

+        defaultEnvelope.getHeader().addChild(documentElement2);

+

+        XMLStreamReader xmlStreamReader = defaultEnvelope.getBody().getFirstElement().getXMLStreamReader();

+        while(xmlStreamReader.hasNext()){

+            System.out.println("event " + xmlStreamReader.next());

+            System.out.println("text " +  (xmlStreamReader.hasText()?xmlStreamReader.getText():""));

+            System.out.println("localName " + (xmlStreamReader.hasName()?xmlStreamReader.getLocalName():""));

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateAnonComplexTypeTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateAnonComplexTypeTest.java
new file mode 100644
index 0000000..b712754
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateAnonComplexTypeTest.java
@@ -0,0 +1,71 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.io.ByteArrayInputStream;

+import java.lang.reflect.Method;

+

+import org.apache.axiom.om.util.StAXUtils;

+

+/*

+* Copyright 2004,2005 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.

+*/

+

+public class PopulateAnonComplexTypeTest extends TestCase {

+    private String xmlString = "<tempElt xmlns=\"http://soapinterop.org1/types\">" +

+            "<varString>Hello</varString>" +

+            "<varInt>5</varInt>" +

+            "<varFloat>3.3</varFloat>" +

+            "</tempElt>";

+

+    public void testPopulate() throws Exception{

+

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(xmlString.getBytes()));

+        Class clazz = Class.forName("org1.soapinterop.types.TempElt");

+        Class innerClazz = clazz.getDeclaredClasses()[0];

+        Method parseMethod = innerClazz.getMethod("parse",new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null,new Object[]{reader});

+

+

+        BeanInfo beanInfo =  Introspector.getBeanInfo(obj.getClass());

+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Method readMethod;

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            if ("varInt".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                assertEquals(new Integer(5),readMethod.invoke(obj,(Object[]) null));

+            } else if ("varFloat".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                assertEquals(new Float(3.3),readMethod.invoke(obj,

+                        (Object[]) null));

+            }  else if ("varString".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                assertEquals("Hello",readMethod.invoke(obj, (Object[]) null));

+            }

+

+        }

+

+    }

+

+

+

+}

+

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateAnyTypeTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateAnyTypeTest.java
new file mode 100644
index 0000000..b3dd5f8
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateAnyTypeTest.java
@@ -0,0 +1,53 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import java.io.ByteArrayInputStream;

+import java.lang.reflect.Method;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateAnyTypeTest extends TestCase {

+

+     private String xmlString = "<myObject xmlns=\"http://soapinterop.org/xsd2\">" +

+            "<soapStructures>" +

+            "<varFloat>3.3</varFloat>" +

+            "<varInt>5</varInt>" +

+            "<varString>Hello11</varString>" +

+            "<varString>Hello11</varString>" +

+            "<varString>Hello12</varString>" +

+            "<varString>Hello13</varString>" +

+            "</soapStructures>" +

+            "</myObject>";

+

+    public void testPopulate() throws Exception{

+

+               XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(xmlString.getBytes()));

+               Class clazz = Class.forName("org.soapinterop.xsd2.MyObject");

+               Class innerClazz = clazz.getDeclaredClasses()[0];

+               Method parseMethod = innerClazz.getMethod("parse",new Class[]{XMLStreamReader.class});

+               Object obj = parseMethod.invoke(null,new Object[]{reader});

+

+

+

+

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateArrayInArrayTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateArrayInArrayTest.java
new file mode 100644
index 0000000..9c5275c
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateArrayInArrayTest.java
@@ -0,0 +1,75 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.io.ByteArrayInputStream;

+import java.lang.reflect.Method;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateArrayInArrayTest extends TestCase{

+    private String xmlString = "<myobject xmlns=\"http://soapinterop.org/xsd\">" +

+            "<soapStructures>" +

+            "<varFloat>3.3</varFloat>" +

+            "<varInt>5</varInt>" +

+            "<varString>Hello11</varString>" +

+            "<varString>Hello11</varString>" +

+            "<varString>Hello12</varString>" +

+            "<varString>Hello13</varString>" +

+            "</soapStructures>" +

+            "<soapStructures>" +

+            "<varFloat>3.31</varFloat>" +

+            "<varInt>51</varInt>" +

+            "<varString>Hello21</varString>" +

+            "<varString>Hello21</varString>" +

+            "<varString>Hello22</varString>" +

+            "<varString>Hello23</varString>" +

+            "</soapStructures>" +

+            "</myobject>";

+

+    public void testPopulate() throws Exception{

+

+            XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(xmlString.getBytes()));

+            Class clazz = Class.forName("org.soapinterop.xsd.Myobject");

+            Class innerClazz = clazz.getDeclaredClasses()[0];

+            Method parseMethod = innerClazz.getMethod("parse",new Class[]{XMLStreamReader.class});

+            Object obj = parseMethod.invoke(null,new Object[]{reader});

+

+

+            Object myObject = null ;

+            BeanInfo beanInfo =  Introspector.getBeanInfo(obj.getClass());

+            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+            for (int i = 0; i < propertyDescriptors.length; i++) {

+                PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+                if ("myobject".equals(propertyDescriptor.getDisplayName())){

+                    Method readMethod = propertyDescriptor.getReadMethod();

+                    myObject = readMethod.invoke(obj,new Object[]{});

+                    break;

+                }

+

+

+            }

+

+            assertNotNull(myObject);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateArrayTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateArrayTest.java
new file mode 100644
index 0000000..9b51654
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateArrayTest.java
@@ -0,0 +1,92 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.io.ByteArrayInputStream;

+import java.lang.reflect.Array;

+import java.lang.reflect.Method;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateArrayTest extends TestCase {

+    private String xmlString = "<myobject xmlns=\"http://soapinterop.org2/xsd\">" +

+            "<varFloat>3.3</varFloat>" +

+            "<varInt>5</varInt>" +

+            "<varString>Hello</varString>" +

+            "<varString>Hello2</varString>" +

+            "<varString>Hello3</varString>" +

+            "</myobject>";

+

+    public void testPopulate() throws Exception{

+

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(xmlString.getBytes()));

+        Class clazz = Class.forName("org2.soapinterop.xsd.Myobject");

+        Class innerClazz = clazz.getDeclaredClasses()[0];

+        Method parseMethod = innerClazz.getMethod("parse",new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null,new Object[]{reader});

+

+        Object soapStruct = null;

+        BeanInfo beanInfo =  Introspector.getBeanInfo(obj.getClass());

+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Method readMethod;

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            if ("myobject".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                soapStruct = readMethod.invoke(obj, (Object[]) null);

+                break;

+            }

+        }

+

+        assertNotNull(soapStruct);

+

+        BeanInfo structBeanInfo =  Introspector.getBeanInfo(soapStruct.getClass());

+        PropertyDescriptor[] structPropertyDescriptors = structBeanInfo.getPropertyDescriptors();

+        for (int i = 0; i < structPropertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = structPropertyDescriptors[i];

+            if ("varInt".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                assertEquals("varInt is not properly set",new Integer(5),

+                        readMethod.invoke(soapStruct, (Object[]) null));

+            } else if ("varFloat".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                assertEquals("varFloat is not properly set",new Float(3.3),

+                        readMethod.invoke(soapStruct, (Object[]) null));

+            }  else if ("varString".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                assertTrue("String array is not set",readMethod.getReturnType().isArray());

+                Object array = readMethod.invoke(soapStruct, (Object[]) null);

+                int length = Array.getLength(array);

+                assertEquals("Array length is not correct",length,3);

+

+                //check the items here

+            }

+

+        }

+

+

+    }

+

+

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateChoiceTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateChoiceTest.java
new file mode 100644
index 0000000..6cd5542
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateChoiceTest.java
@@ -0,0 +1,75 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLInputFactory;

+import java.io.ByteArrayInputStream;

+import java.lang.reflect.Method;

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateChoiceTest extends TestCase {

+    private String xmlString = "<myElement xmlns=\"http://soapinterop.org/types\">" +

+            "<varFloat>3.3</varFloat>" +

+            "</myElement>";

+

+    public void testPopulate() throws Exception{

+

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(xmlString.getBytes()));

+        Class clazz = Class.forName("org.soapinterop.types.MyElement");

+        Class innerClazz = clazz.getDeclaredClasses()[0];

+        Method parseMethod = innerClazz.getMethod("parse",new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null,new Object[]{reader});

+

+        Object myElement = null;

+        BeanInfo beanInfo =  Introspector.getBeanInfo(obj.getClass());

+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Method readMethod;

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            if ("myElement".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                myElement = readMethod.invoke(obj, (Object[]) null);

+                break;

+            }

+        }

+        assertNotNull(myElement);

+

+        BeanInfo structBeanInfo =  Introspector.getBeanInfo(myElement.getClass());

+        PropertyDescriptor[] structPropertyDescriptors = structBeanInfo.getPropertyDescriptors();

+        for (int i = 0; i < structPropertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = structPropertyDescriptors[i];

+            if ("varFloat".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                assertEquals("varFloat is not properly set",new Float(3.3),

+                        readMethod.invoke(myElement, (Object[]) null));

+

+            }else if ("varInt".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                //this should not be set ! - it should return zero

+                assertEquals("varInt is not properly set",new Integer(0),

+                        readMethod.invoke(myElement, (Object[]) null));

+            }

+

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateComplexMinOccurs0Test.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateComplexMinOccurs0Test.java
new file mode 100644
index 0000000..b632ea6
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateComplexMinOccurs0Test.java
@@ -0,0 +1,139 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLInputFactory;

+import java.beans.IntrospectionException;

+import java.beans.BeanInfo;

+import java.beans.PropertyDescriptor;

+import java.beans.Introspector;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+import java.io.ByteArrayInputStream;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateComplexMinOccurs0Test  extends TestCase {

+

+

+

+    // all are present

+    private String xmlString1 = "<root xmlns=\"http://test1.org\">" +

+            "<city>Colombo</city>" +

+            "<person>" +

+            "<name>Amy</name>" +

+            "<age>10</age>" +

+            "</person>" +

+            "<address>" +

+            "<streetName>My Street</streetName>" +

+            "<streetNo>1</streetNo>" +

+            "</address>" +

+            "</root>";

+

+

+

+    //person element is missing

+    private String xmlString2 = "<root xmlns=\"http://test1.org\">" +

+            "<city>Colombo</city>" +

+            "<address>" +

+            "<streetName>My Street</streetName>" +

+            "<streetNo>1</streetNo>" +

+            "</address>" +

+            "</root>";

+

+    //Only city is present

+    private String xmlString3 = "<root xmlns=\"http://test1.org\">" +

+            "<city>Colombo</city>" +

+            "</root>";

+

+

+    // all are present with two addresses

+    private String xmlString4 = "<root xmlns=\"http://test1.org\">" +

+            "<city>Colombo</city>" +

+            "<person>" +

+            "<name>Amy</name>" +

+            "<age>10</age>" +

+            "</person>" +

+            "<address>" +

+            "<streetName>My Street</streetName>" +

+            "<streetNo>1</streetNo>" +

+            "</address>" +

+            "<address>" +

+            "<streetName>My Street2</streetName>" +

+            "<streetNo>2</streetNo>" +

+            "</address>" +

+            "</root>";

+    public void testPopulate1() throws Exception {

+        populateAndAssert(xmlString1, 1, true);

+    }

+

+    public void testPopulate2() throws Exception {

+        populateAndAssert(xmlString2, 1, false);

+    }

+

+    public void testPopulate3() throws Exception {

+        populateAndAssert(xmlString3, 0, false);

+    }

+

+    public void testPopulate4() throws Exception {

+        populateAndAssert(xmlString4, 2, true);

+    }

+

+    private void populateAndAssert(String s,

+                                   int expectedAddressCount,

+                                   boolean personPresent) throws XMLStreamException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, IntrospectionException {

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(s.getBytes()));

+        Class clazz = Class.forName("org.test1.Root");

+        Class innerClazz = clazz.getDeclaredClasses()[0];

+        Method parseMethod = innerClazz.getMethod("parse", new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null, new Object[]{reader});

+

+        assertNotNull(obj);

+

+        Object personObject = null;

+        Object addressObject = null;

+        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());

+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Method readMethod;

+

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            if ("person".equals(propertyDescriptor.getDisplayName())) {

+                readMethod = propertyDescriptor.getReadMethod();

+                personObject = readMethod.invoke(obj, null);

+

+                if (personPresent)

+                    assertNotNull(personObject);

+                else

+                    assertNull(personObject);

+            }else if ("address".equals(propertyDescriptor.getDisplayName())) {

+                readMethod = propertyDescriptor.getReadMethod();

+                addressObject = readMethod.invoke(obj, null);

+                if (expectedAddressCount!=0) {

+                    Object[] objArray = (Object[])addressObject;

+                    assertEquals(expectedAddressCount,objArray.length);

+                }

+            }

+        }

+

+

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateMinOccurs0Test.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateMinOccurs0Test.java
new file mode 100644
index 0000000..deebbbe
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateMinOccurs0Test.java
@@ -0,0 +1,117 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamException;

+import java.io.ByteArrayInputStream;

+import java.lang.reflect.Method;

+import java.lang.reflect.Array;

+import java.lang.reflect.InvocationTargetException;

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.beans.IntrospectionException;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateMinOccurs0Test extends TestCase {

+

+    /*

+     <xs:element name="A" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>

+	 <xs:element name="B" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

+	 <xs:element name="C" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

+	 <xs:element name="D" type="xs:string" minOccurs="0" maxOccurs="1"/>

+   */

+

+    // element D is missing

+    private String xmlString1 = "<root xmlns=\"http://test.org\">" +

+            "<A>I am A</A>" +

+            "<B>I am B1</B>" +

+            "<B>I am B2</B>" +

+            "<C>I am C1</C>" +

+            "<C>I am C2</C>" +

+            "</root>";

+

+    //B elements are missing

+    private String xmlString2 = "<root xmlns=\"http://test.org\">" +

+            "<A>I am A</A>" +

+            "<C>I am B2</C>" +

+            "<C>I am B2</C>" +

+            "<D>I am D1</D>" +

+            "</root>";

+

+    //Only A is present

+    private String xmlString3 = "<root xmlns=\"http://test.org\">" +

+            "<A>I am A</A>" +

+            "</root>";

+

+

+    public void testPopulate1() throws Exception {

+        populateAndAssert(xmlString1, 2, "b");

+        populateAndAssert(xmlString1, 2, "c");

+    }

+

+    public void testPopulate2() throws Exception {

+        populateAndAssert(xmlString2, 0, "b");

+        populateAndAssert(xmlString2, 2, "c");

+    }

+

+    public void testPopulate3() throws Exception {

+        populateAndAssert(xmlString3, 0, "b");

+        populateAndAssert(xmlString3, 1, "a");

+    }

+

+    private void populateAndAssert(String s, int expectedCount,

+                                   String itemtoTest) throws XMLStreamException,

+            ClassNotFoundException, NoSuchMethodException,

+            IllegalAccessException, InvocationTargetException,

+            IntrospectionException {

+        XMLStreamReader reader =

+                StAXUtils.createXMLStreamReader(new ByteArrayInputStream(s.getBytes()));

+        Class clazz = Class.forName("org.test.Root");

+        Class innerClazz = clazz.getDeclaredClasses()[0];

+        Method parseMethod = innerClazz.getMethod("parse", new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null, new Object[]{reader});

+

+        assertNotNull(obj);

+

+        Object stringArray = null;

+        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());

+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Method readMethod;

+

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            if (itemtoTest.equals(propertyDescriptor.getDisplayName())) {

+                readMethod = propertyDescriptor.getReadMethod();

+                stringArray = readMethod.invoke(obj, null);

+                break;

+            }

+        }

+

+        if (expectedCount!=0){

+            assertNotNull(stringArray);

+            String[] array = (String[]) stringArray;

+            assertEquals(array.length, expectedCount);

+        }

+    }

+

+

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateMixedMinoccurs0Test.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateMixedMinoccurs0Test.java
new file mode 100644
index 0000000..f992ff9
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateMixedMinoccurs0Test.java
@@ -0,0 +1,137 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLInputFactory;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+import java.beans.IntrospectionException;

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.io.ByteArrayInputStream;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateMixedMinoccurs0Test extends TestCase {

+

+    /*

+

+    <xsd:element name="stringListResponseElement" type="tns:StringListResponseType"/>

+    <xsd:complexType name="StringListResponseType">

+        <xsd:choice>

+            <xsd:element name="stringList" type="tns:StringList"/>

+            <xsd:element name="exception" type="tns:ExceptionType"/>

+        </xsd:choice>

+    </xsd:complexType>

+    <xsd:complexType name="StringList">

+        <xsd:sequence>

+            <xsd:element name="s" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>

+        </xsd:sequence>

+    </xsd:complexType>

+

+   */

+

+

+    private String xmlString1 = "<stringListResponseElement " +

+            "xmlns=\"http://recursion1.org\">" +

+            "<stringList>" +

+            "<s>item1</s>" +

+            "<s>item2</s>" +

+            "<s>item3</s>" +

+            "</stringList>" +

+            "</stringListResponseElement>";

+

+    private String xmlString2 = "<stringListResponseElement " +

+            "xmlns=\"http://recursion1.org\">" +

+            "<stringList>" +

+            "</stringList>" +

+            "</stringListResponseElement>";

+

+

+    public void testPopulate1() throws Exception {

+        populateAndAssert(xmlString1,3);

+    }

+

+    public void testPopulate2() throws Exception {

+        populateAndAssert(xmlString2,0);

+    }

+

+

+    private void populateAndAssert(String s,int count) throws XMLStreamException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, IntrospectionException {

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(s.getBytes()));

+        Class clazz = Class.forName("org.recursion1.StringListResponseElement");

+        Class innerClazz = clazz.getDeclaredClasses()[0];

+        Method parseMethod = innerClazz.getMethod("parse", new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null, new Object[]{reader});

+

+        assertNotNull(obj);

+

+        Object stringListResponseElement = null;

+        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());

+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Method readMethod;

+

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            String displayName = propertyDescriptor.getDisplayName();

+            if ("stringListResponseElement".equals(displayName)) {

+                readMethod = propertyDescriptor.getReadMethod();

+                stringListResponseElement = readMethod.invoke(obj, null);

+                break;

+            }

+        }

+

+        assertNotNull(stringListResponseElement);

+

+        beanInfo = Introspector.getBeanInfo(stringListResponseElement.getClass());

+        propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Object stringArray = null;

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            String displayName = propertyDescriptor.getDisplayName();

+            if ("stringList".equals(displayName)) {

+                readMethod = propertyDescriptor.getReadMethod();

+                stringArray = readMethod.invoke(stringListResponseElement, null);

+                break;

+            }

+        }

+

+        assertNotNull(stringArray);

+

+        beanInfo = Introspector.getBeanInfo(stringArray.getClass());

+        propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Object sArray = null;

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            String displayName = propertyDescriptor.getDisplayName();

+            if ("stringList".equals(displayName)) {

+                readMethod = propertyDescriptor.getReadMethod();

+                sArray = readMethod.invoke(stringArray, null);

+                break;

+            }

+        }

+        if (sArray!=null){

+            Object[] array = (Object[])sArray;

+            assertEquals(count,array.length);

+        }

+

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateParticleAllTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateParticleAllTest.java
new file mode 100644
index 0000000..f84b920
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateParticleAllTest.java
@@ -0,0 +1,82 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLInputFactory;

+import java.io.ByteArrayInputStream;

+import java.lang.reflect.Method;

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateParticleAllTest extends TestCase {

+    private String xmlString = "<myParticleAllElement xmlns=\"http://soapinterop.org/types\">" +

+            "<varFloat>3.3</varFloat>" +

+            "<varString>foo</varString>" +

+            "</myParticleAllElement>";

+

+    public void testPopulate() throws Exception{

+

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(xmlString.getBytes()));

+        Class clazz = Class.forName("org.soapinterop.types.MyParticleAllElement");

+        Class innerClazz = clazz.getDeclaredClasses()[0];

+        Method parseMethod = innerClazz.getMethod("parse",new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null,new Object[]{reader});

+

+        Object myParticleAllElement = null;

+        BeanInfo beanInfo =  Introspector.getBeanInfo(obj.getClass());

+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Method readMethod;

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            if ("myParticleAllElement".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                myParticleAllElement = readMethod.invoke(obj, (Object[]) null);

+                break;

+            }

+        }

+        assertNotNull(myParticleAllElement);

+

+        BeanInfo structBeanInfo =  Introspector.getBeanInfo(myParticleAllElement.getClass());

+        PropertyDescriptor[] structPropertyDescriptors = structBeanInfo.getPropertyDescriptors();

+        for (int i = 0; i < structPropertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = structPropertyDescriptors[i];

+            if ("varFloat".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                assertEquals("varFloat is not properly set",new Float(3.3),

+                        readMethod.invoke(myParticleAllElement, (Object[]) null));

+

+            }else if ("varString".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                //this should not be set ! - it should return zero

+                assertEquals("varString is not properly set","foo",

+                        readMethod.invoke(myParticleAllElement, (Object[]) null));

+

+            }else if ("varInt".equals(propertyDescriptor.getDisplayName())){

+                readMethod = propertyDescriptor.getReadMethod();

+                //this should not be set ! - it should return zero

+                assertEquals("varInt is not properly set",new Integer(0),

+                        readMethod.invoke(myParticleAllElement, (Object[]) null));

+            }

+

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java
new file mode 100644
index 0000000..f34b88f
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/other/PopulateRecursiveTest.java
@@ -0,0 +1,78 @@
+package org.apache.axis2.schema.populate.other;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamException;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+import java.beans.IntrospectionException;

+import java.beans.PropertyDescriptor;

+import java.beans.Introspector;

+import java.beans.BeanInfo;

+import java.io.ByteArrayInputStream;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PopulateRecursiveTest extends TestCase {

+

+// all are present

+    private String xmlString1 = "<E xmlns=\"http://recursion.org\">" +

+            "<E>test</E>" +

+            "</E>";

+

+

+

+

+    public void testPopulate1() throws Exception {

+        populateAndAssert(xmlString1);

+    }

+

+

+    private void populateAndAssert(String s

+    ) throws XMLStreamException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, IntrospectionException {

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(s.getBytes()));

+        Class clazz = Class.forName("org.recursion.E");

+        Class innerClazz = clazz.getDeclaredClasses()[0];

+        Method parseMethod = innerClazz.getMethod("parse", new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null, new Object[]{reader});

+

+        assertNotNull(obj);

+

+        Object eObject = null;

+        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());

+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

+        Method readMethod;

+

+        for (int i = 0; i < propertyDescriptors.length; i++) {

+            PropertyDescriptor propertyDescriptor = propertyDescriptors[i];

+            if ("e".equals(propertyDescriptor.getDisplayName())) {

+                readMethod = propertyDescriptor.getReadMethod();

+                eObject = readMethod.invoke(obj, null);

+

+                assertNotNull(eObject);

+

+                assertTrue(eObject.getClass().equals(Class.forName("org.recursion.TypeE")) );

+            }

+        }

+    }

+

+

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/AbstractSimplePopulater.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/AbstractSimplePopulater.java
new file mode 100644
index 0000000..43f9414
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/AbstractSimplePopulater.java
@@ -0,0 +1,136 @@
+package org.apache.axis2.schema.populate.simple;

+

+import junit.framework.TestCase;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+import javax.xml.stream.XMLOutputFactory;

+import java.beans.BeanInfo;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.lang.reflect.Method;

+

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.custommonkey.xmlunit.XMLTestCase;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public abstract class AbstractSimplePopulater extends XMLTestCase {

+

+    // force others to implement this method

+    public abstract void testPopulate() throws Exception;

+

+    protected  String className= null;

+    protected Class propertyClass = null;

+

+

+    /**

+     *  Simple reusable method to make object instances via reflection

+     * @param testString

+     * @param className

+     * @return

+     * @throws Exception

+     */

+    protected Object process(String testString,String className) throws Exception{

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(testString.getBytes()));

+        Class clazz = Class.forName(className);

+        Class[] declaredClasse = clazz.getDeclaredClasses();

+        //ideally this should be 1

+        Class innerClazz = declaredClasse[0];

+        Method parseMethod = innerClazz.getMethod("parse",new Class[]{XMLStreamReader.class});

+        Object obj = parseMethod.invoke(null,new Object[]{reader});

+        assertNotNull(obj);

+

+        return obj;

+

+    }

+

+    /**

+     * Simple method to compare. May be overridden

+     * @param xmlToSet

+     * @param value

+     * @throws Exception

+     */

+    protected void checkValue(String xmlToSet, String value) throws Exception {

+        Object o = process(xmlToSet, className);

+        Class beanClass = Class.forName(className);

+        BeanInfo info = Introspector.getBeanInfo(beanClass);

+        PropertyDescriptor[] propDescs = info.getPropertyDescriptors();

+        for (int i = 0; i < propDescs.length; i++) {

+            PropertyDescriptor propDesc = propDescs[i];

+            if  (propDesc.getPropertyType().equals(propertyClass)){

+                String s = convertToString(propDesc.getReadMethod().invoke(o,

+                        (Object[]) null));

+                compare(value,s);

+            }

+

+        }

+

+    }

+

+     /**

+     * Compares serializations - may be overridden

+     * @param o

+     * @param xmlToSet

+     * @throws Exception

+     */

+    protected void CompareOMElemntSerializations(Object o, String xmlToSet) throws Exception {

+        OMElement element = getOMElement(o);

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(baos);

+        element.serialize(writer);

+        writer.flush();

+

+        assertXMLEqual(baos.toString(),xmlToSet);

+    }

+

+    /**

+     * Get OM element via reflection

+     * @param bean

+     * @return

+     * @throws Exception

+     */

+    protected OMElement getOMElement(Object bean) throws Exception {

+        Method method = bean.getClass().getMethod("getOMElement", new Class[]{

+                javax.xml.namespace.QName.class,

+                org.apache.axiom.om.OMFactory.class});

+

+        return (OMElement) method.invoke(bean, new Object[]{null, OMAbstractFactory.getOMFactory()});

+

+    }

+    /**

+     * value comparisom

+     * @param val1

+     * @param val2

+     */

+    protected void compare(String val1,String val2){

+         assertEquals(val1,val2);

+    }

+

+    /**

+     * conversion - may be overriddens

+     * @param o

+     * @return

+     */

+    protected String convertToString(Object o){

+        return o.toString();

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeAnyURIPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeAnyURIPopulateTest.java
new file mode 100644
index 0000000..15eb66e
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeAnyURIPopulateTest.java
@@ -0,0 +1,44 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.URI;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeAnyURIPopulateTest extends AbstractSimplePopulater{

+    private String values[] = {"http://www.wisc.edu/grad/education/mas/229.html",

+            "ftp://grad/education/mas/229.html",

+            "http://mail.google.com/mail/?auth=DQAAAHEAAAC041"};

+    private String xmlString[] = {

+            "<anyURIParam xmlns=\"http://soapinterop.org/xsd\">" + values[0]+"</anyURIParam>",

+            "<anyURIParam xmlns=\"http://soapinterop.org/xsd\">" + values[1]+"</anyURIParam>",

+            "<anyURIParam xmlns=\"http://soapinterop.org/xsd\">" + values[2]+"</anyURIParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.AnyURIParam";

+        propertyClass = URI.class;

+    }

+

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeBase64BinPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeBase64BinPopulateTest.java
new file mode 100644
index 0000000..08ec0e5
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeBase64BinPopulateTest.java
@@ -0,0 +1,34 @@
+package org.apache.axis2.schema.populate.simple;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeBase64BinPopulateTest extends AbstractSimplePopulater{

+    private String xmlString[] = {

+            "<base64BinParam xmlns=\"http://soapinterop.org/xsd\">abcdABCD</base64BinParam>",

+            "<base64BinParam xmlns=\"http://soapinterop.org/xsd\">abcdABCD09rT</base64BinParam>",

+    };

+

+     protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.Base64BinParam";

+        propertyClass = byte[].class;

+    }

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        process(xmlString[0],"org.soapinterop.xsd.Base64BinParam");

+        process(xmlString[1],"org.soapinterop.xsd.Base64BinParam");

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeBooleanPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeBooleanPopulateTest.java
new file mode 100644
index 0000000..ec65a95
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeBooleanPopulateTest.java
@@ -0,0 +1,43 @@
+package org.apache.axis2.schema.populate.simple;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeBooleanPopulateTest extends AbstractSimplePopulater{

+    private String values[]= {

+            "true",

+            "false"

+    };

+

+    private String xmlString[] = {

+            "<booleanParam xmlns=\"http://soapinterop.org/xsd\">"+ values[0] +"</booleanParam>",

+            "<booleanParam xmlns=\"http://soapinterop.org/xsd\">"+ values[1] +"</booleanParam>",

+    };

+

+    protected void setUp() throws Exception {

+        className ="org.soapinterop.xsd.BooleanParam";

+        propertyClass = boolean.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < values.length; i++) {

+             checkValue(xmlString[i],values[i]);

+        }

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDatePopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDatePopulateTest.java
new file mode 100644
index 0000000..3d11f16
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDatePopulateTest.java
@@ -0,0 +1,50 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+import java.util.Date;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeDatePopulateTest extends AbstractSimplePopulater{

+    private String values[]={

+                "2002-10-10",

+                "2000-12-31",

+                "2002-02-28"

+    } ;

+    private String xmlString[] = {

+            "<dateParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</dateParam>",

+            "<dateParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</dateParam>",

+            "<dateParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</dateParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DateParam";

+        propertyClass = java.util.Date.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        String s = ConverterUtil.convertToString((Date) o);

+        return s;

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDateTimePopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDateTimePopulateTest.java
new file mode 100644
index 0000000..caf7f61
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDateTimePopulateTest.java
@@ -0,0 +1,52 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+

+import java.util.Calendar;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeDateTimePopulateTest extends AbstractSimplePopulater{

+    private String values[] ={"2002-10-10T12:00:00+05:00",

+            "2000-12-31T11:59:59-05:00",

+            "2002-10-10T07:00:00Z"

+    };

+    private String xmlString[] = {

+            "<dateTimeParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</dateTimeParam>",

+            "<dateTimeParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</dateTimeParam>",

+            "<dateTimeParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</dateTimeParam>"

+    };

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+         for (int i = 0; i < values.length; i++) {

+             checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DateTimeParam";

+        propertyClass = Calendar.class;

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Calendar) o);

+    }

+

+    protected void compare(String val1, String val2) {

+        //do nothing for this comparison. We dont know how to compare these yet

+        //todo Fix this comparison

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDayPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDayPopulateTest.java
new file mode 100644
index 0000000..3f275ff
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDayPopulateTest.java
@@ -0,0 +1,49 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.Day;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeDayPopulateTest extends AbstractSimplePopulater{

+    private String values[] = {

+                        "---05",

+                        "---06",

+                        "---12"

+    };

+    private String xmlString[] = {

+            "<dayParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</dayParam>",

+            "<dayParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</dayParam>",

+            "<dayParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</dayParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className ="org.soapinterop.xsd.DayParam";

+        propertyClass = Day.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+         for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Day)o);

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDoublePopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDoublePopulateTest.java
new file mode 100644
index 0000000..5a50acf
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDoublePopulateTest.java
@@ -0,0 +1,47 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeDoublePopulateTest extends AbstractSimplePopulater{

+    private String values[]= {

+            "20300.00554433422",

+            "203045534234",

+            "66733.0060604343"

+    };

+    private String xmlString[] = {

+            "<doubleParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</doubleParam>",

+            "<doubleParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</doubleParam>",

+            "<doubleParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</doubleParam>"

+    };

+

+    protected void setUp() throws Exception {

+       className = "org.soapinterop.xsd.DoubleParam";

+       propertyClass = float.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+         for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return  ConverterUtil.convertToString((Double)o) ;

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDurationPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDurationPopulateTest.java
new file mode 100644
index 0000000..58a65ea
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeDurationPopulateTest.java
@@ -0,0 +1,53 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.Duration;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeDurationPopulateTest extends AbstractSimplePopulater{

+    private String values[]= {

+            "P1Y2MT2H",

+            "P1347M",

+            "P0Y1347M0D"

+    };

+

+    private String xmlString[] = {

+            "<durationParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</durationParam>",

+            "<durationParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</durationParam>",

+            "<durationParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</durationParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.DurationParam";

+        propertyClass = Duration.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected void compare(String val1, String val2) {

+        assertTrue(new  Duration(val1).equals(new Duration(val2)));

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Duration)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeFloatPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeFloatPopulateTest.java
new file mode 100644
index 0000000..960edea
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeFloatPopulateTest.java
@@ -0,0 +1,60 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeFloatPopulateTest extends AbstractSimplePopulater{

+

+     private String values[]={

+             "20300.005",

+             "3045534234",

+             "66733.88"

+

+    };

+

+

+    private String xmlString[] = {

+            "<floatParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</floatParam>",

+            "<floatParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</floatParam>",

+            "<floatParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</floatParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.FloatParam";

+        propertyClass = float.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+         for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected void compare(String val1, String val2) {

+        //we need to rethink a way to compare these values since their precision

+        //differs

+        //check for null for now

+        assertNotNull(val1);

+        assertNotNull(val2);

+        // super.compare(val1, val2);

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Float)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeHexBinaryPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeHexBinaryPopulateTest.java
new file mode 100644
index 0000000..7bbd031
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeHexBinaryPopulateTest.java
@@ -0,0 +1,53 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.HexBinary;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeHexBinaryPopulateTest extends AbstractSimplePopulater{

+

+    private String values[]= {

+            "0FB7",

+            "FFFFFFFF",

+            "1978"

+    };

+    private String xmlString[] = {

+            "<hexBinParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</hexBinParam>",

+            "<hexBinParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</hexBinParam>",

+            "<hexBinParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</hexBinParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.HexBinParam";

+        propertyClass = HexBinary.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < 2; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((HexBinary)o);

+    }

+

+    protected void compare(String val1, String val2) {

+       assertTrue(val1.equalsIgnoreCase(val2));

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeMonthDayPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeMonthDayPopulateTest.java
new file mode 100644
index 0000000..3284711
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeMonthDayPopulateTest.java
@@ -0,0 +1,50 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.MonthDay;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeMonthDayPopulateTest extends AbstractSimplePopulater{

+

+    private String values[]= {

+            "--05-12",

+            "--06-30",

+            "--12-31"

+    };

+    private String xmlString[] = {

+            "<monthDayParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</monthDayParam>",

+            "<monthDayParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</monthDayParam>",

+            "<monthDayParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</monthDayParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.MonthDayParam";

+        propertyClass = MonthDay.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < 2; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((MonthDay)o);

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeQNamePopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeQNamePopulateTest.java
new file mode 100644
index 0000000..cc5f094
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeQNamePopulateTest.java
@@ -0,0 +1,30 @@
+package org.apache.axis2.schema.populate.simple;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeQNamePopulateTest extends AbstractSimplePopulater{

+    private String xmlString[] = {

+            "<qNameParam xmlns=\"http://soapinterop.org/xsd\">university</qNameParam>",

+            "<qNameParam xmlns=\"http://soapinterop.org/xsd\" xmlns:ns1=\"http://ws.apache.org/axis2\">ns1:axis2</qNameParam>"

+            //"<qNameParam>http://mail.google.com/mail/?auth=DQAAAHEAAAC041</qNameParam>"

+    };

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        process(xmlString[0],"org.soapinterop.xsd.QNameParam");

+        process(xmlString[1],"org.soapinterop.xsd.QNameParam");

+       // process(xmlString[2],"org.soapinterop.qNameParam");

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeTimePopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeTimePopulateTest.java
new file mode 100644
index 0000000..24a81da
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypeTimePopulateTest.java
@@ -0,0 +1,56 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.Time;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypeTimePopulateTest extends AbstractSimplePopulater{

+    private String values[]= {

+            "13:20:00",

+            "23:59:59"

+    };

+    private String xmlString[] = {

+            "<timeParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</timeParam>",

+            "<timeParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</timeParam>",

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.TimeParam";

+        propertyClass = Time.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < 2; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Time)o);

+    }

+

+    protected void compare(String val1, String val2) {

+        //todo - Find a propr way to compare these time strings

+        //check for null for now

+        assertNotNull(val1);

+        assertNotNull(val2);

+        //assertTrue(new Time(val1).equals(new Time(val2)));

+

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegMonthPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegMonthPopulateTest.java
new file mode 100644
index 0000000..ca568a0
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegMonthPopulateTest.java
@@ -0,0 +1,54 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.Month;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypegMonthPopulateTest  extends AbstractSimplePopulater {

+     private String values[]={

+             "--01--",

+             "--12--",

+             "--03--"

+

+    };

+

+

+    private String xmlString[] = {

+            "<monthParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</monthParam>",

+            "<monthParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</monthParam>",

+            "<monthParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</monthParam>"

+    };

+

+

+     protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.MonthParam";

+        propertyClass = Month.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+         for (int i = 0; i < values.length; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Month)o);

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegYearMonthPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegYearMonthPopulateTest.java
new file mode 100644
index 0000000..be39f60
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegYearMonthPopulateTest.java
@@ -0,0 +1,57 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.YearMonth;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypegYearMonthPopulateTest extends AbstractSimplePopulater{

+    private String values[]= {

+            "0001-05",

+            "-0234-09",

+            "1978-01",

+            "1978-01-GMT"

+    };

+    private String xmlString[] = {

+            "<yearMonthParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</yearMonthParam>",

+            "<yearMonthParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</yearMonthParam>",

+            "<yearMonthParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</yearMonthParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.YearMonthParam";

+        propertyClass = YearMonth.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < 2; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+

+        try {

+            process(xmlString[3],"org.soapinterop.yearMonthParam");

+            fail();

+        } catch (Exception e) {

+

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((YearMonth)o);

+    }

+

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegYearPopulateTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegYearPopulateTest.java
new file mode 100644
index 0000000..874e009
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/SimpleTypegYearPopulateTest.java
@@ -0,0 +1,49 @@
+package org.apache.axis2.schema.populate.simple;

+

+import org.apache.axis2.databinding.types.Year;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleTypegYearPopulateTest extends AbstractSimplePopulater{

+

+    private String values[]= {

+            "0001",

+            "-0234",

+            "1978"

+    };

+    private String xmlString[] = {

+            "<yearParam xmlns=\"http://soapinterop.org/xsd\">"+values[0]+"</yearParam>",

+            "<yearParam xmlns=\"http://soapinterop.org/xsd\">"+values[1]+"</yearParam>",

+            "<yearParam xmlns=\"http://soapinterop.org/xsd\">"+values[2]+"</yearParam>"

+    };

+

+    protected void setUp() throws Exception {

+        className = "org.soapinterop.xsd.YearParam";

+        propertyClass = Year.class;

+    }

+

+    // force others to implement this method

+    public void testPopulate() throws Exception {

+        for (int i = 0; i < 2; i++) {

+            checkValue(xmlString[i],values[i]);

+        }

+    }

+

+    protected String convertToString(Object o) {

+        return ConverterUtil.convertToString((Year)o);

+    }

+}

diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/package.html b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/package.html
new file mode 100644
index 0000000..98de486
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/populate/simple/package.html
@@ -0,0 +1,26 @@
+<html>

+<body>

+   This package contains the following tests

+   

+        3.2.1 string

+        3.2.2 boolean

+        3.2.3 decimal

+        3.2.4 float

+        3.2.5 double

+        3.2.6 duration

+        3.2.7 dateTime

+        3.2.8 time

+        3.2.9 date

+        3.2.10 gYearMonth

+        3.2.11 gYear

+        3.2.12 gMonthDay

+        3.2.13 gDay

+        3.2.14 gMonth

+        3.2.15 hexBinary

+        3.2.16 base64Binary

+        3.2.17 anyURI

+        3.2.18 QName

+        3.2.19 NOTATION  &lt;= Not completely tested

+

+</body>

+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/AbstractTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/AbstractTest.java
new file mode 100644
index 0000000..a2fc198
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/AbstractTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.testsuite;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import services.echo.types.BookInformation;
+
+
+public class AbstractTest  extends TestCase {
+
+     protected OMElement getOMElement(){
+        OMFactory fac = OMAbstractFactory.getSOAP12Factory();
+        OMNamespace omNamespace = fac.createOMNamespace("http://test.ws02.com","ns1");
+        OMElement omElement = fac.createOMElement("TestValue", omNamespace);
+        omElement.addChild(fac.createOMText("testString"));
+        return omElement;
+    }
+
+    protected boolean isOMElementsEqual(OMElement omElement1,OMElement omElement2){
+        boolean isEqual = false;
+        if ((omElement1 == null) || (omElement2 == null)){
+            isEqual = (omElement1 == omElement2);
+        } else {
+            isEqual = omElement1.getLocalName().equals(omElement2.getLocalName());
+        }
+        return isEqual;
+    }
+
+    protected boolean assertArrayEqual(Object[] objectArray1, Object[] objectArray2) {
+        boolean isEqual = false;
+        if ((objectArray1 == null) || (objectArray2 == null)) {
+            isEqual = (objectArray1 == objectArray2);
+        } else {
+            // i.e both are not null
+            if (objectArray1.length == objectArray2.length) {
+                isEqual = true;
+                for (int i = 0; i < objectArray1.length; i++) {
+                    if (!isObjectContains(objectArray2, objectArray1[i])) {
+                        isEqual = false;
+                        break;
+                    }
+                }
+            }
+        }
+        return isEqual;
+    }
+
+    protected boolean isObjectContains(Object[] objectArray, Object object) {
+        boolean isContain = false;
+        for (int i = 0; i < objectArray.length; i++) {
+            if ((objectArray[i] == null) || (object == null)) {
+                isContain =  (objectArray[i] == object);
+            } else {
+                if (object instanceof BookInformation){
+                    isContain = isBookInformationObjectsEquals((BookInformation)objectArray[i],(BookInformation)object);
+                } else if (object instanceof OMElement){
+                    isContain = isOMElementsEqual((OMElement)objectArray[i],(OMElement)object);
+                } else {
+                    isContain = objectArray[i].equals(object);
+                }
+            }
+            if (isContain) {
+                break;
+            }
+        }
+        return isContain;
+    }
+
+     protected boolean isBookInformationObjectsEquals(BookInformation bookInformation1,
+                                                      BookInformation bookInformation2){
+         boolean isEqual;
+         if ((bookInformation1 == null) || (bookInformation2 == null)){
+            isEqual = (bookInformation1 == bookInformation2);
+         }  else {
+             isEqual = bookInformation1.getType().equals(bookInformation2.getType()) &&
+                     bookInformation1.getTitle().equals(bookInformation2.getTitle()) &&
+                     bookInformation1.getIsbn().equals(bookInformation2.getIsbn());
+         }
+         return isEqual;
+     }
+
+     protected BookInformation getBookInformation() {
+        BookInformation bookInformation = new BookInformation();
+        bookInformation.setType("test");
+        bookInformation.setTitle("test");
+        bookInformation.setIsbn("test");
+        return bookInformation;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/AnyElementsTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/AnyElementsTest.java
new file mode 100644
index 0000000..0092bd0
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/AnyElementsTest.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.testsuite;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.util.StAXUtils;
+import services.echo.types.TestAny1;
+import services.echo.types.TestAny2;
+import services.echo.types.TestAny3;
+import services.echo.types.TestAny4;
+
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+
+
+public class AnyElementsTest extends AbstractTest {
+
+    public static final int MIN_EQUALS_ZERO = 0;
+    public static final int MIN_EQUALS_ONE = 1;
+
+    public void testAnyArray() {
+        OMElement[] returnObject;
+        try {
+            returnObject = testAnyArray(null, MIN_EQUALS_ZERO);
+            assertTrue(assertArrayEqual(returnObject, null));
+            returnObject = testAnyArray(new OMElement[]{null}, MIN_EQUALS_ZERO);
+            assertTrue(assertArrayEqual(returnObject, null));
+            returnObject = testAnyArray(new OMElement[]{getOMElement()}, MIN_EQUALS_ZERO);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement()}));
+            returnObject = testAnyArray(new OMElement[]{getOMElement(), getOMElement()}, MIN_EQUALS_ZERO);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement(), getOMElement()}));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+
+        try {
+            returnObject = testAnyArray(null, MIN_EQUALS_ONE);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testAnyArray(new OMElement[]{null}, MIN_EQUALS_ONE);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testAnyArray(new OMElement[]{getOMElement(), getOMElement()}, MIN_EQUALS_ONE);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement(), getOMElement()}));
+        } catch (Exception e) {
+            fail();
+        }
+
+
+    }
+
+    private OMElement[] testAnyArray(OMElement[] innerObject, int type) throws Exception {
+        OMElement omElement;
+        String omElementString;
+        OMElement[] returnObject = null;
+
+        switch (type) {
+            case MIN_EQUALS_ZERO : {
+                TestAny1 testAny = new TestAny1();
+                testAny.setExtraElement(innerObject);
+                omElement = testAny.getOMElement(TestAny1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAny1.Factory.parse(xmlReader).getExtraElement();
+                break;
+            }
+            case MIN_EQUALS_ONE : {
+                TestAny3 testAny = new TestAny3();
+                testAny.setExtraElement(innerObject);
+                omElement = testAny.getOMElement(TestAny3.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAny3.Factory.parse(xmlReader).getExtraElement();
+                break;
+            }
+        }
+        return returnObject;
+    }
+
+    public void testAny() {
+        OMElement returnObject;
+        try {
+            returnObject = testAny(null, MIN_EQUALS_ZERO);
+            assertTrue(isOMElementsEqual(returnObject, null));
+            returnObject = testAny(getOMElement(), MIN_EQUALS_ZERO);
+            assertTrue(isOMElementsEqual(returnObject, getOMElement()));
+
+        } catch (Exception e) {
+            fail();
+        }
+
+        try {
+            returnObject = testAny(null, MIN_EQUALS_ONE);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testAny(getOMElement(), MIN_EQUALS_ONE);
+            assertTrue(isOMElementsEqual(returnObject, getOMElement()));
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    private OMElement testAny(OMElement innerObject, int type) throws Exception {
+        OMElement omElement;
+        OMElement returnObject = null;
+        String omElementString;
+
+        switch (type) {
+            case MIN_EQUALS_ZERO : {
+                TestAny2 testAny = new TestAny2();
+                testAny.setExtraElement(innerObject);
+                omElement = testAny.getOMElement(TestAny2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAny2.Factory.parse(xmlReader).getExtraElement();
+                break;
+            }
+            case MIN_EQUALS_ONE : {
+                TestAny4 testAny = new TestAny4();
+                testAny.setExtraElement(innerObject);
+                omElement = testAny.getOMElement(TestAny4.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAny4.Factory.parse(xmlReader).getExtraElement();
+                break;
+            }
+        }
+        return returnObject;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/CustomElementsTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/CustomElementsTest.java
new file mode 100644
index 0000000..4b075c1
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/CustomElementsTest.java
@@ -0,0 +1,264 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.testsuite;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.StAXUtils;
+import services.echo.types.*;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+
+
+public class CustomElementsTest extends AbstractTest {
+
+    public static final int MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST = 1;
+    public static final int MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST = 2;
+    public static final int MIN_EQUALS_ONE_NILLABLE_TRUE_TEST = 3;
+    public static final int MIN_EQUALS_ONE_NILLABLE_FALSE_TEST = 4;
+
+    public void testCustomArray() {
+
+        BookInformation[] returnObject;
+        System.out.println("minOccurs = 0 and nillable true");
+        try {
+            returnObject = testCustomArray(null, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{null}));
+            returnObject = testCustomArray(new BookInformation[]{null}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{null}));
+            returnObject = testCustomArray(new BookInformation[]{getBookInformation()}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{getBookInformation()}));
+            returnObject = testCustomArray(new BookInformation[]{getBookInformation(), null}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{getBookInformation(), null}));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 0 and nillable false");
+        try {
+            returnObject = testCustomArray(null, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, null));
+            returnObject = testCustomArray(new BookInformation[]{null}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, null));
+            returnObject = testCustomArray(new BookInformation[]{getBookInformation()}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{getBookInformation()}));
+            returnObject = testCustomArray(new BookInformation[]{getBookInformation(), null}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{getBookInformation()}));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+        System.out.println("minOccurs = 1 and nillable true");
+        try {
+            returnObject = testCustomArray(null, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{null}));
+            returnObject = testCustomArray(new BookInformation[]{null}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{null}));
+            returnObject = testCustomArray(new BookInformation[]{getBookInformation()}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{getBookInformation()}));
+            returnObject = testCustomArray(new BookInformation[]{getBookInformation(), null}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{getBookInformation(), null}));
+        } catch (Exception e) {
+            fail();
+        }
+
+        System.out.println("minOccurs = 1 and nillable false");
+        try {
+            returnObject = testCustomArray(null, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testCustomArray(new BookInformation[]{null}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testCustomArray(new BookInformation[]{getBookInformation(), null}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testCustomArray(new BookInformation[]{getBookInformation()}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new BookInformation[]{getBookInformation()}));
+        } catch (Exception e) {
+            fail();
+        }
+
+
+    }
+
+    private BookInformation[] testCustomArray(BookInformation[] innerElement, int type) throws Exception {
+        OMElement omElement;
+        BookInformation[] returnObject = null;
+        String omElementString;
+        switch (type) {
+            case MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST : {
+                TestBookInformation1 testBookInformation = new TestBookInformation1();
+                testBookInformation.setTestValue(innerElement);
+                omElement = testBookInformation.getOMElement(TestBookInformation1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestBookInformation1.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST : {
+                TestBookInformation3 testBookInformation = new TestBookInformation3();
+                testBookInformation.setTestValue(innerElement);
+                omElement = testBookInformation.getOMElement(TestBookInformation3.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestBookInformation3.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_TRUE_TEST : {
+                TestBookInformation5 testBookInformation = new TestBookInformation5();
+                testBookInformation.setTestValue(innerElement);
+                omElement = testBookInformation.getOMElement(TestBookInformation5.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestBookInformation5.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_FALSE_TEST : {
+                TestBookInformation7 testBookInformation = new TestBookInformation7();
+                testBookInformation.setTestValue(innerElement);
+                omElement = testBookInformation.getOMElement(TestBookInformation7.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestBookInformation7.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+        }
+        return returnObject;
+    }
+
+    public void testCustom() {
+        BookInformation returnObject;
+        System.out.println("minOccurs = 0 and nillable true");
+        try {
+            returnObject = testCustom(null, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(isBookInformationObjectsEquals(returnObject, null));
+            returnObject = testCustom(getBookInformation(), MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(isBookInformationObjectsEquals(returnObject, getBookInformation()));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 0 and nillable false");
+        try {
+            returnObject = testCustom(null, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(isBookInformationObjectsEquals(returnObject, null));
+            returnObject = testCustom(getBookInformation(), MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(isBookInformationObjectsEquals(returnObject, getBookInformation()));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 1 and nillable true");
+        try {
+            returnObject = testCustom(null, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(isBookInformationObjectsEquals(returnObject, null));
+            returnObject = testCustom(getBookInformation(), MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(isBookInformationObjectsEquals(returnObject, getBookInformation()));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 1 and nillable false");
+        try {
+            returnObject = testCustom(null, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testCustom(getBookInformation(), MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(isBookInformationObjectsEquals(returnObject, getBookInformation()));
+        } catch (Exception e) {
+            fail();
+        }
+
+    }
+
+    private BookInformation testCustom(BookInformation innerElement, int type) throws Exception {
+        OMElement omElement;
+        BookInformation returnObject = null;
+        String omElementString;
+        switch (type) {
+            case MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST : {
+                TestBookInformation2 testBookInformation = new TestBookInformation2();
+                testBookInformation.setTestValue(innerElement);
+                omElement = testBookInformation.getOMElement(TestBookInformation2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestBookInformation2.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST : {
+                TestBookInformation4 testBookInformation = new TestBookInformation4();
+                testBookInformation.setTestValue(innerElement);
+                omElement = testBookInformation.getOMElement(TestBookInformation4.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestBookInformation4.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_TRUE_TEST : {
+                TestBookInformation6 testBookInformation = new TestBookInformation6();
+                testBookInformation.setTestValue(innerElement);
+                omElement = testBookInformation.getOMElement(TestBookInformation6.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestBookInformation6.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_FALSE_TEST : {
+                TestBookInformation8 testBookInformation = new TestBookInformation8();
+                testBookInformation.setTestValue(innerElement);
+                omElement = testBookInformation.getOMElement(TestBookInformation8.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestBookInformation8.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+        }
+        return returnObject;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/IntElementsTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/IntElementsTest.java
new file mode 100644
index 0000000..fd94930
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/IntElementsTest.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.testsuite;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.StAXUtils;
+import services.echo.types.*;
+
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+import java.util.Arrays;
+
+
+public class IntElementsTest extends AbstractTest {
+
+    public static final int MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST = 1;
+    public static final int MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST = 2;
+    public static final int MIN_EQUALS_ONE_NILLABLE_TRUE_TEST = 3;
+    public static final int MIN_EQUALS_ONE_NILLABLE_FALSE_TEST = 4;
+
+    public void testIntArray() {
+        int[] returnObject;
+        System.out.println("minOccurs = 0 nillable true");
+        try {
+            returnObject = testIntArray(null, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(Arrays.equals(returnObject, new int[]{0}));
+            returnObject = testIntArray(new int[]{5}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(Arrays.equals(returnObject, new int[]{5}));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 0 nillable false");
+        try {
+            returnObject = testIntArray(null, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(Arrays.equals(returnObject, null));
+            returnObject = testIntArray(new int[]{5}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(Arrays.equals(returnObject, new int[]{5}));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 1 nillable true");
+        try {
+            returnObject = testIntArray(null, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(Arrays.equals(returnObject, new int[]{0}));
+            returnObject = testIntArray(new int[]{5}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(Arrays.equals(returnObject, new int[]{5}));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+
+        System.out.println("minOccurs = 1 nillable false");
+        try {
+            returnObject = testIntArray(null, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+        try {
+            returnObject = testIntArray(new int[]{5}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(Arrays.equals(returnObject, new int[]{5}));
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    private int[] testIntArray(int[] innerElement, int type) throws Exception {
+        OMElement omElement;
+        int[] returnObject = null;
+        String omElementString;
+        switch (type) {
+            case MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST : {
+                TestInt1 testInt = new TestInt1();
+                testInt.setTestValue(innerElement);
+                omElement = testInt.getOMElement(TestInt1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestInt1.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST : {
+                TestInt3 testInt = new TestInt3();
+                testInt.setTestValue(innerElement);
+                omElement = testInt.getOMElement(TestInt3.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestInt3.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_TRUE_TEST : {
+                TestInt5 testInt = new TestInt5();
+                testInt.setTestValue(innerElement);
+                omElement = testInt.getOMElement(TestInt5.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestInt5.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_FALSE_TEST : {
+                TestInt7 testInt = new TestInt7();
+                testInt.setTestValue(innerElement);
+                omElement = testInt.getOMElement(TestInt7.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestInt7.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+        }
+        return returnObject;
+    }
+
+
+    public void testInt() {
+        try {
+            assertEquals(testInt(1, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST), 1);
+            assertEquals(testInt(1, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST), 1);
+            assertEquals(testInt(1, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST), 1);
+            assertEquals(testInt(1, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST), 1);
+        } catch (Exception e) {
+            fail();
+        }
+
+    }
+
+    public int testInt(int innerElement, int type) throws Exception {
+        OMElement omElement;
+        int returnInt = 0;
+        String omElementString;
+
+        switch (type) {
+            case MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST : {
+                TestInt2 testInt = new TestInt2();
+                testInt.setTestValue(innerElement);
+                omElement = testInt.getOMElement(TestInt2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnInt = TestInt2.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST : {
+                TestInt4 testInt = new TestInt4();
+                testInt.setTestValue(innerElement);
+                omElement = testInt.getOMElement(TestInt4.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnInt = TestInt4.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_TRUE_TEST : {
+                TestInt6 testInt = new TestInt6();
+                testInt.setTestValue(innerElement);
+                omElement = testInt.getOMElement(TestInt6.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnInt = TestInt6.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_FALSE_TEST : {
+                TestInt8 testInt = new TestInt8();
+                testInt.setTestValue(innerElement);
+                omElement = testInt.getOMElement(TestInt8.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnInt = TestInt6.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+        }
+        return returnInt;
+    }
+}
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/OuterElementsTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/OuterElementsTest.java
new file mode 100644
index 0000000..a285b1f
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/OuterElementsTest.java
@@ -0,0 +1,253 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.testsuite;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.StAXUtils;
+import services.echo.types.*;
+
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+
+public class OuterElementsTest extends AbstractTest {
+
+    public static final int NILLABLE_TRUE = 0;
+    public static final int NILLABLE_FALSE = 1;
+
+    public void testString() {
+        String returnString;
+        try {
+            returnString = testString(null, NILLABLE_TRUE);
+            assertEquals(returnString, null);
+            returnString = testString("Test String", NILLABLE_TRUE);
+            assertEquals(returnString, "Test String");
+        } catch (Exception e) {
+            fail();
+        }
+
+        try {
+            returnString = testString(null, NILLABLE_FALSE);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnString = testString("Test String", NILLABLE_FALSE);
+            assertEquals(returnString, "Test String");
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    private String testString(String innerElement, int type) throws Exception {
+        OMElement omElement;
+        String returnString = null;
+        String omElementString;
+
+        switch (type) {
+            case NILLABLE_TRUE : {
+                OuterTestString1 outerTestString = new OuterTestString1();
+                outerTestString.setOuterTestString1(innerElement);
+                omElement = outerTestString.getOMElement(OuterTestString1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnString = OuterTestString1.Factory.parse(xmlReader).getOuterTestString1();
+                break;
+            }
+
+            case NILLABLE_FALSE : {
+                OuterTestString2 outerTestString = new OuterTestString2();
+                outerTestString.setOuterTestString2(innerElement);
+                omElement = outerTestString.getOMElement(OuterTestString2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnString = OuterTestString2.Factory.parse(xmlReader).getOuterTestString2();
+                break;
+
+            }
+        }
+        return returnString;
+    }
+
+    public void testInt() {
+        int returnInt;
+        try {
+            returnInt = testInt(5, NILLABLE_TRUE);
+            assertEquals(returnInt, 5);
+            returnInt = testInt(5, NILLABLE_FALSE);
+            assertEquals(returnInt, 5);
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    private int testInt(int innerElement, int type) throws Exception {
+        OMElement omElement;
+        int returnInt = 0;
+        String omElementString;
+        switch (type) {
+            case NILLABLE_TRUE : {
+                OuterTestInt1 outerTestInt = new OuterTestInt1();
+                outerTestInt.setOuterTestInt1(innerElement);
+                omElement = outerTestInt.getOMElement(OuterTestInt1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnInt = OuterTestInt1.Factory.parse(xmlReader).getOuterTestInt1();
+                break;
+            }
+            case NILLABLE_FALSE : {
+                OuterTestInt2 outerTestInt = new OuterTestInt2();
+                outerTestInt.setOuterTestInt2(innerElement);
+                omElement = outerTestInt.getOMElement(OuterTestInt2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnInt = OuterTestInt2.Factory.parse(xmlReader).getOuterTestInt2();
+                break;
+            }
+        }
+        return returnInt;
+    }
+
+    public void testAnyType() {
+        OMElement returnObject;
+        try {
+            returnObject = testAnyType(null, NILLABLE_TRUE);
+            assertTrue(isOMElementsEqual(returnObject, null));
+            returnObject = testAnyType(getOMElement(), NILLABLE_TRUE);
+            assertTrue(isOMElementsEqual(returnObject, getOMElement()));
+        } catch (Exception e) {
+            fail();
+        }
+
+        try {
+            returnObject = testAnyType(null, NILLABLE_FALSE);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testAnyType(getOMElement(), NILLABLE_FALSE);
+            assertTrue(isOMElementsEqual(returnObject, getOMElement()));
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    private OMElement testAnyType(OMElement innerElement, int type) throws Exception {
+        OMElement omElement;
+        OMElement returnString = null;
+        String omElementString;
+
+        switch (type) {
+            case NILLABLE_TRUE : {
+                OuterTestAnyType1 outerTestAnyType = new OuterTestAnyType1();
+                outerTestAnyType.setOuterTestAnyType1(innerElement);
+                omElement = outerTestAnyType.getOMElement(OuterTestAnyType1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnString = OuterTestAnyType1.Factory.parse(xmlReader).getOuterTestAnyType1();
+                break;
+            }
+
+            case NILLABLE_FALSE : {
+                OuterTestAnyType2 outerTestAnyType = new OuterTestAnyType2();
+                outerTestAnyType.setOuterTestAnyType2(innerElement);
+                omElement = outerTestAnyType.getOMElement(OuterTestAnyType2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnString = OuterTestAnyType2.Factory.parse(xmlReader).getOuterTestAnyType2();
+                break;
+            }
+        }
+        return returnString;
+    }
+
+    public void testBookInformation() {
+        BookInformation returnObject;
+        try {
+            returnObject = testBookInformation(null, NILLABLE_TRUE);
+            assertTrue(isBookInformationObjectsEquals(returnObject, null));
+            returnObject = testBookInformation(getBookInformation(), NILLABLE_TRUE);
+            assertTrue(isBookInformationObjectsEquals(returnObject, getBookInformation()));
+        } catch (Exception e) {
+            fail();
+        }
+
+        try {
+            returnObject = testBookInformation(null, NILLABLE_FALSE);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testBookInformation(getBookInformation(), NILLABLE_FALSE);
+            assertTrue(isBookInformationObjectsEquals(returnObject, getBookInformation()));
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    private BookInformation testBookInformation(BookInformation innerElement, int type) throws Exception {
+        OMElement omElement;
+        BookInformation returnObject = null;
+        String omElementString;
+
+        switch (type) {
+            case NILLABLE_TRUE : {
+                OuterTestBookInformation1 outerTestBookInformation = new OuterTestBookInformation1();
+                outerTestBookInformation.setOuterTestBookInformation1(innerElement);
+                omElement = outerTestBookInformation.getOMElement(OuterTestBookInformation1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = OuterTestBookInformation1.Factory.parse(xmlReader).getOuterTestBookInformation1();
+                break;
+            }
+
+            case NILLABLE_FALSE : {
+                OuterTestBookInformation2 outerTestBookInformation = new OuterTestBookInformation2();
+                outerTestBookInformation.setOuterTestBookInformation2(innerElement);
+                omElement = outerTestBookInformation.getOMElement(OuterTestBookInformation2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = OuterTestBookInformation2.Factory.parse(xmlReader).getOuterTestBookInformation2();
+                break;
+            }
+        }
+        return returnObject;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/StringElementsTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/StringElementsTest.java
new file mode 100644
index 0000000..f93ffb7
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/StringElementsTest.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.testsuite;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.StAXUtils;
+import services.echo.types.*;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+
+public class StringElementsTest extends AbstractTest {
+
+    public static final int MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST = 1;
+    public static final int MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST = 2;
+    public static final int MIN_EQUALS_ONE_NILLABLE_TRUE_TEST = 3;
+    public static final int MIN_EQUALS_ONE_NILLABLE_FALSE_TEST = 4;
+
+    public void testStringArray() {
+        System.out.println("Test minOccurs 0 nillable true");
+        String[] returnObject = null;
+
+        try {
+            returnObject = testStringArray(null, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{null}));
+            returnObject = testStringArray(new String[]{null}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{null}));
+            returnObject = testStringArray(new String[]{"test"}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{"test"}));
+            returnObject = testStringArray(new String[]{"test", null}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{"test", null}));
+        } catch (Exception e) {
+            fail();
+        }
+
+        System.out.println("Test minOccurs = 0 nillable false");
+        try {
+            returnObject = testStringArray(null, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, null));
+            returnObject = testStringArray(new String[]{null}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, null));
+            returnObject = testStringArray(new String[]{"test"}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{"test"}));
+            returnObject = testStringArray(new String[]{"test", null}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{"test"}));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+
+        System.out.println("Test minOccurs = 1 nillable true");
+        try {
+            returnObject = testStringArray(null, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{null}));
+            returnObject = testStringArray(new String[]{null}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{null}));
+            returnObject = testStringArray(new String[]{"test"}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{"test"}));
+            returnObject = testStringArray(new String[]{"test", null}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{"test", null}));
+        } catch (Exception e) {
+            fail();
+        }
+
+        System.out.println("Test minOccurs = 1 nillable false");
+
+        try {
+            returnObject = testStringArray(null, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testStringArray(new String[]{null}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testStringArray(new String[]{"test", null}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testStringArray(new String[]{"test"}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new String[]{"test"}));
+        } catch (Exception e) {
+            fail();
+        }
+
+
+    }
+
+    private String[] testStringArray(String[] innerString, int type) throws Exception {
+
+        String[] returnObject = null;
+        OMElement omElement;
+        String omElementString;
+
+        switch (type) {
+            case MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST : {
+                TestString1 testString = new TestString1();
+                testString.setTestValue(innerString);
+                omElement = testString.getOMElement(TestString1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestString1.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST : {
+                TestString3 testString = new TestString3();
+                testString.setTestValue(innerString);
+                omElement = testString.getOMElement(TestString3.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestString3.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_TRUE_TEST : {
+                TestString5 testString = new TestString5();
+                testString.setTestValue(innerString);
+                omElement = testString.getOMElement(TestString5.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestString5.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_FALSE_TEST : {
+                TestString7 testString = new TestString7();
+                testString.setTestValue(innerString);
+                omElement = testString.getOMElement(TestString7.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestString7.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+
+        }
+        return returnObject;
+    }
+
+    public void testString() {
+
+        String returnObject;
+        System.out.println("Test minOccurs 0 nillable true");
+        try {
+            returnObject = testString(null, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertEquals(returnObject, null);
+            returnObject = testString("Test", MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertEquals(returnObject, "Test");
+        } catch (Exception e) {
+            fail();
+        }
+
+        System.out.println("Test minOccurs = 0 nillable false");
+        try {
+            returnObject = testString(null, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertEquals(returnObject, null);
+            returnObject = testString("Test", MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertEquals(returnObject, "Test");
+        } catch (Exception e) {
+            fail();
+        }
+
+        System.out.println("Test minOccurs = 1 nillable true");
+        try {
+            returnObject = testString(null, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertEquals(returnObject, null);
+            returnObject = testString("Test", MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertEquals(returnObject, "Test");
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("Test minOccurs = 1 nillable false");
+        try {
+            returnObject = testString(null, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testString("Test", MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertEquals(returnObject, "Test");
+        } catch (Exception e) {
+            fail();
+        }
+
+    }
+
+    private String testString(String innerString, int type) throws Exception {
+
+        String returnObject = null;
+        OMElement omElement;
+        String omElementString;
+
+        switch (type) {
+            case MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST : {
+                TestString2 testString = new TestString2();
+                testString.setTestValue(innerString);
+                omElement = testString.getOMElement(TestString2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestString2.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST : {
+                TestString4 testString = new TestString4();
+                testString.setTestValue(innerString);
+                omElement = testString.getOMElement(TestString4.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestString4.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_TRUE_TEST : {
+                TestString6 testString = new TestString6();
+                testString.setTestValue(innerString);
+                omElement = testString.getOMElement(TestString6.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestString6.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_FALSE_TEST : {
+                TestString8 testString = new TestString8();
+                testString.setTestValue(innerString);
+                omElement = testString.getOMElement(TestString8.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestString8.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+
+        }
+        return returnObject;
+    }
+
+}
diff --git a/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/XsdAnyElementsTest.java b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/XsdAnyElementsTest.java
new file mode 100644
index 0000000..4ffe1d0
--- /dev/null
+++ b/rampart_1_1/modules/adb-codegen/test/org/apache/axis2/schema/testsuite/XsdAnyElementsTest.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright 2004,2005 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.axis2.schema.testsuite;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.util.StAXUtils;
+import services.echo.types.*;
+
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+
+public class XsdAnyElementsTest extends AbstractTest {
+
+    public static final int MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST = 1;
+    public static final int MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST = 2;
+    public static final int MIN_EQUALS_ONE_NILLABLE_TRUE_TEST = 3;
+    public static final int MIN_EQUALS_ONE_NILLABLE_FALSE_TEST = 4;
+
+    public void testAnyTypeArray() {
+        OMElement[] returnObject;
+        System.out.println("minOccurs = 0 and nillable true");
+        try {
+            returnObject = testAnyTypeArray(null, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{null}));
+            returnObject = testAnyTypeArray(new OMElement[]{null}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{null}));
+            returnObject = testAnyTypeArray(new OMElement[]{getOMElement()}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement()}));
+            returnObject = testAnyTypeArray(new OMElement[]{getOMElement(), null}, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement(), null}));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+
+        System.out.println("minOccurs = 0 and nillable false");
+        try {
+            returnObject = testAnyTypeArray(null, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, null));
+            returnObject = testAnyTypeArray(new OMElement[]{null}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, null));
+            returnObject = testAnyTypeArray(new OMElement[]{getOMElement()}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement()}));
+            returnObject = testAnyTypeArray(new OMElement[]{getOMElement(), null}, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement()}));
+        } catch (Exception e) {
+            fail();
+        }
+
+        System.out.println("minOccurs = 1 and nillable true");
+        try {
+            returnObject = testAnyTypeArray(null, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{null}));
+            returnObject = testAnyTypeArray(new OMElement[]{null}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{null}));
+            returnObject = testAnyTypeArray(new OMElement[]{getOMElement()}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement()}));
+            returnObject = testAnyTypeArray(new OMElement[]{getOMElement(), null}, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement(), null}));
+        } catch (Exception e) {
+            fail();
+        }
+
+        System.out.println("minOccurs = 1 and nillable false");
+        try {
+            returnObject = testAnyTypeArray(null, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, null));
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testAnyTypeArray(new OMElement[]{null}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{null}));
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testAnyTypeArray(new OMElement[]{getOMElement(), null}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement(), null}));
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testAnyTypeArray(new OMElement[]{getOMElement()}, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(assertArrayEqual(returnObject, new OMElement[]{getOMElement()}));
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    public OMElement[] testAnyTypeArray(OMElement[] innerElement, int type) throws Exception {
+        OMElement omElement;
+        OMElement[] returnObject = null;
+        String omElementString;
+        switch (type) {
+            case MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST : {
+                TestAnyType1 testAnyType = new TestAnyType1();
+                testAnyType.setTestValue(innerElement);
+                omElement = testAnyType.getOMElement(TestAnyType1.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAnyType1.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST : {
+                TestAnyType3 testAnyType = new TestAnyType3();
+                testAnyType.setTestValue(innerElement);
+                omElement = testAnyType.getOMElement(TestAnyType3.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAnyType3.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_TRUE_TEST : {
+                TestAnyType5 testAnyType = new TestAnyType5();
+                testAnyType.setTestValue(innerElement);
+                omElement = testAnyType.getOMElement(TestAnyType5.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAnyType5.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_FALSE_TEST : {
+                TestAnyType7 testAnyType = new TestAnyType7();
+                testAnyType.setTestValue(innerElement);
+                omElement = testAnyType.getOMElement(TestAnyType7.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAnyType7.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+        }
+        return returnObject;
+    }
+
+    public void testAnyType() {
+
+        OMElement returnObject;
+        System.out.println("minOccurs = 0 nillable true");
+        try {
+            returnObject = testAnyType(null, MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(isOMElementsEqual(returnObject, null));
+            returnObject = testAnyType(getOMElement(), MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST);
+            assertTrue(isOMElementsEqual(returnObject, getOMElement()));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 0 nillable false");
+        try {
+            returnObject = testAnyType(null, MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(isOMElementsEqual(returnObject, null));
+            returnObject = testAnyType(getOMElement(), MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST);
+            assertTrue(isOMElementsEqual(returnObject, getOMElement()));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 1 nillable true");
+        try {
+            returnObject = testAnyType(null, MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(isOMElementsEqual(returnObject, null));
+            returnObject = testAnyType(getOMElement(), MIN_EQUALS_ONE_NILLABLE_TRUE_TEST);
+            assertTrue(isOMElementsEqual(returnObject, getOMElement()));
+        } catch (Exception e) {
+            fail();
+        }
+        System.out.println("minOccurs = 1 nillable false");
+        try {
+            returnObject = testAnyType(null, MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            fail();
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+
+        try {
+            returnObject = testAnyType(getOMElement(), MIN_EQUALS_ONE_NILLABLE_FALSE_TEST);
+            assertTrue(isOMElementsEqual(returnObject, getOMElement()));
+        } catch (Exception e) {
+            fail();
+        }
+
+    }
+
+    public OMElement testAnyType(OMElement innerElement, int type) throws Exception {
+        OMElement omElement;
+        OMElement returnObject = null;
+        String omElementString;
+        switch (type) {
+            case MIN_EQUALS_ZERO_NILLABLE_TRUE_TEST : {
+                TestAnyType2 testAnyType = new TestAnyType2();
+                testAnyType.setTestValue(innerElement);
+                omElement = testAnyType.getOMElement(TestAnyType2.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAnyType2.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ZERO_NILLABLE_FALSE_TEST : {
+                TestAnyType4 testAnyType = new TestAnyType4();
+                testAnyType.setTestValue(innerElement);
+                omElement = testAnyType.getOMElement(TestAnyType4.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAnyType4.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_TRUE_TEST : {
+                TestAnyType6 testAnyType = new TestAnyType6();
+                testAnyType.setTestValue(innerElement);
+                omElement = testAnyType.getOMElement(TestAnyType6.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAnyType6.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+            case MIN_EQUALS_ONE_NILLABLE_FALSE_TEST : {
+                TestAnyType8 testAnyType = new TestAnyType8();
+                testAnyType.setTestValue(innerElement);
+                omElement = testAnyType.getOMElement(TestAnyType8.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+                omElementString = omElement.toStringWithConsume();
+                System.out.println("OMElement ==> " + omElementString);
+                XMLStreamReader xmlReader =
+                        StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+                returnObject = TestAnyType8.Factory.parse(xmlReader).getTestValue();
+                break;
+            }
+        }
+        return returnObject;
+    }
+
+
+}
+
+
diff --git a/rampart_1_1/modules/adb/maven.xml b/rampart_1_1/modules/adb/maven.xml
new file mode 100644
index 0000000..e739945
--- /dev/null
+++ b/rampart_1_1/modules/adb/maven.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project default="jar"
+         xmlns:j="jelly:core"
+         xmlns:u="jelly:util"
+         xmlns:maven="jelly:maven"
+         xmlns:util="jelly:util"
+         xmlns:deploy="deploy"
+         xmlns:ant="jelly:ant">
+
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+</project>
diff --git a/rampart_1_1/modules/adb/pom.xml b/rampart_1_1/modules/adb/pom.xml
new file mode 100644
index 0000000..54ddef4
--- /dev/null
+++ b/rampart_1_1/modules/adb/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <groupId>org.apache.axis2</groupId>

+    <artifactId>axis2-parent</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+    <relativePath>../parent/pom.xml</relativePath>    

+  </parent>

+

+  <artifactId>axis2-adb</artifactId>

+  <name>Apache Axis 2.0 - Data Binding</name>

+    <description>Axis2 Data Binding module</description>

+

+  <dependencies>

+    <dependency>

+      <groupId>${project.groupId}</groupId>

+      <artifactId>axis2-kernel</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.ws.commons.axiom</groupId>

+      <artifactId>axiom-dom</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>xmlunit</groupId>

+      <artifactId>xmlunit</artifactId>

+    </dependency>

+  </dependencies>

+

+  <build>

+    <sourceDirectory>src</sourceDirectory>

+    <testSourceDirectory>test</testSourceDirectory>

+    <resources>

+      <resource>

+        <directory>conf</directory>

+        <excludes>

+          <exclude>**/*.properties</exclude>

+        </excludes>

+        <filtering>false</filtering>

+      </resource>

+      <resource>

+        <directory>src</directory>

+        <excludes>

+          <exclude>**/*.java</exclude>

+        </excludes>

+      </resource>

+    </resources>

+  </build>

+</project>

diff --git a/rampart_1_1/modules/adb/project.properties b/rampart_1_1/modules/adb/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/adb/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/adb/project.xml b/rampart_1_1/modules/adb/project.xml
new file mode 100644
index 0000000..ecafc1a
--- /dev/null
+++ b/rampart_1_1/modules/adb/project.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <id>axis2-adb</id>

+    <name>Apache Axis 2.0 - Data Binding</name>

+    <groupId>org.apache.axis2</groupId>

+    <description>Axis2 Data Binding module</description>

+

+    <dependencies>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+		<dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-dom</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-java2wsdl</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+              <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>${XmlSchema.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>${activation.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>${stax.impl.groupid}</groupId>

+            <artifactId>${stax.impl.artifactid}</artifactId>

+            <version>${stax.impl.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>${wsdl4j.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>xmlunit</groupId>

+            <artifactId>xmlunit</artifactId>

+            <version>${xmlunit.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>backport-util-concurrent</groupId>

+            <artifactId>backport-util-concurrent</artifactId>

+            <version>${backport_util_concurrent.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+         <dependency>

+            <groupId>annogen</groupId>

+            <artifactId>annogen</artifactId>

+            <version>${annogen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+    </dependencies>

+

+    <reports/>

+    <!-- add the build properties-->

+    <build>

+        <resources>

+            <resource>

+                <directory>src</directory>

+                <includes>

+                    <include>**/*.properties</include>

+                    <include>**/*.xml</include>

+                    <include>**/*.xsl</include>

+                    <include>**/*.xsd</include>

+                </includes>

+            </resource>

+        </resources>

+    </build>

+</project>

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBBean.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBBean.java
new file mode 100644
index 0000000..f3f1af1
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBBean.java
@@ -0,0 +1,41 @@
+package org.apache.axis2.databinding;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+/*
+ * 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.
+ */
+
+/* 
+ * ADBBean - Axis Data Binding Bean. This will be implemented by all the beans that are being generated by
+ * Axis2 data binding framework
+ */
+public interface ADBBean {
+    /**
+     * Serializes an ADBBean. Gets the pull parser and fetches the XML pull 
+     * events to represent the bean.
+     * 
+     * @param adbBeanQName
+     *            the name of the element to be generated for this ADBBean.
+     * @return Returns a pull parser for this ADBBean.
+     */
+    public XMLStreamReader getPullParser(QName adbBeanQName);
+
+    /**
+     * There will be a self factory in every generated data bound class XXX:
+     * public static XXX read (XMLStreamReader);
+     */
+}
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java
new file mode 100644
index 0000000..340c2ff
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java
@@ -0,0 +1,86 @@
+package org.apache.axis2.databinding;

+

+import org.apache.axiom.om.OMDataSource;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axiom.om.util.StAXUtils;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamWriter;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.namespace.QName;

+import java.io.OutputStream;

+import java.io.Writer;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public abstract class ADBDataSource implements OMDataSource {

+    protected QName parentQName;

+    private ADBBean bean;

+

+    /**

+     * Constructor taking in an ADBBean

+     * @param bean

+     */

+    protected ADBDataSource(ADBBean bean,QName parentQName) {

+        this.bean = bean;

+        this.parentQName = parentQName;

+    }

+

+

+    /**

+     * @see OMDataSource#serialize(java.io.OutputStream, org.apache.axiom.om.OMOutputFormat)

+     * @param output

+     * @param format

+     * @throws XMLStreamException

+     */

+    public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {

+        XMLStreamWriter xmlStreamWriter = StAXUtils.createXMLStreamWriter(output);

+        serialize(xmlStreamWriter);

+        xmlStreamWriter.flush();

+    }

+

+    /**

+     * @see OMDataSource#serialize(java.io.Writer, org.apache.axiom.om.OMOutputFormat)

+     * @param writer

+     * @param format

+     * @throws XMLStreamException

+     */

+    public void serialize(Writer writer, OMOutputFormat format) throws XMLStreamException {

+        serialize(StAXUtils.createXMLStreamWriter(writer));

+    }

+

+    /**

+     * This needs to be generated inside the ADB bean

+     * @see OMDataSource#serialize(javax.xml.stream.XMLStreamWriter)

+     * @param xmlWriter

+     * @throws XMLStreamException

+     */

+    public abstract void serialize(XMLStreamWriter xmlWriter)

+            throws XMLStreamException;

+

+

+    /**

+     * @see org.apache.axiom.om.OMDataSource#getReader()

+     * @throws XMLStreamException

+     */

+    public XMLStreamReader getReader() throws XMLStreamException {

+        // since only ADBBeans related to elements can be serialized

+        // we are safe in passing null here. 

+        return bean.getPullParser(parentQName);

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBHelperDataSource.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBHelperDataSource.java
new file mode 100644
index 0000000..a593177
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBHelperDataSource.java
@@ -0,0 +1,101 @@
+package org.apache.axis2.databinding;

+

+import org.apache.axiom.om.OMDataSource;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axiom.om.util.StAXUtils;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamWriter;

+import javax.xml.stream.XMLStreamReader;

+import java.io.OutputStream;

+import java.io.Writer;

+import java.lang.reflect.Method;

+import java.lang.reflect.InvocationTargetException;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public abstract class ADBHelperDataSource implements OMDataSource {

+

+    protected QName parentQName;

+    protected Object bean;

+    protected String helperClassName;

+

+    /**

+     * Constructor taking in an ADBBean

+     * @param bean

+     */

+    protected ADBHelperDataSource(Object bean,QName parentQName,String helperClassName) {

+        this.bean = bean;

+        this.parentQName = parentQName;

+        this.helperClassName = helperClassName;

+    }

+

+

+    /**

+     * @see OMDataSource#serialize(java.io.OutputStream, org.apache.axiom.om.OMOutputFormat)

+     * @param output

+     * @param format

+     * @throws javax.xml.stream.XMLStreamException

+     */

+    public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {

+       serialize(StAXUtils.createXMLStreamWriter(output));

+    }

+

+    /**

+     * @see OMDataSource#serialize(java.io.Writer, org.apache.axiom.om.OMOutputFormat)

+     * @param writer

+     * @param format

+     * @throws XMLStreamException

+     */

+    public void serialize(Writer writer, OMOutputFormat format) throws XMLStreamException {

+        serialize(StAXUtils.createXMLStreamWriter(writer));

+    }

+

+    /**

+     * This needs to be generated inside the ADB bean

+     * @see OMDataSource#serialize(javax.xml.stream.XMLStreamWriter)

+     * @param xmlWriter

+     * @throws XMLStreamException

+     */

+    public abstract void serialize(XMLStreamWriter xmlWriter)

+            throws XMLStreamException;

+

+

+    /**

+     * @see org.apache.axiom.om.OMDataSource#getReader()

+     * @throws XMLStreamException

+     */

+    public XMLStreamReader getReader() throws XMLStreamException {

+        // since only ADBBeans related to elements can be serialized

+        try {

+            Class helperClass = Class.forName(helperClassName);

+            Method method = helperClass.getMethod("getPullParser",new Class[]{Object.class,

+                                               QName.class});

+            return (XMLStreamReader)method.invoke(null,new Object[]{bean,parentQName});

+        } catch (ClassNotFoundException e) {

+            throw new XMLStreamException(e);

+        } catch (NoSuchMethodException e) {

+           throw new XMLStreamException(e);

+        } catch (IllegalAccessException e) {

+             throw new XMLStreamException(e);

+        } catch (InvocationTargetException e) {

+            throw new XMLStreamException(e);

+        }

+

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBSOAPModelBuilder.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBSOAPModelBuilder.java
new file mode 100644
index 0000000..494bb60
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/ADBSOAPModelBuilder.java
@@ -0,0 +1,107 @@
+/*

+* Copyright 2004,2005 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.axis2.databinding;

+

+import org.apache.axiom.soap.SOAPConstants;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.util.StreamWrapper;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamReader;

+

+/**

+ * Builds a SOAPEnvelope around an ADB pull parser

+ */

+public class ADBSOAPModelBuilder extends StAXSOAPModelBuilder {

+    

+    public ADBSOAPModelBuilder(XMLStreamReader parser, SOAPFactory factory) {

+        super(new Envelope(parser).

+                getPullParser(

+                new QName(factory.getSoapVersionURI(),

+                        SOAPConstants.SOAPENVELOPE_LOCAL_NAME,

+                        SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX)),

+                factory,

+                factory.getSoapVersionURI());

+    }

+

+    public SOAPEnvelope getEnvelope() {

+        return getSOAPEnvelope();

+    }

+

+    public static class Envelope

+            implements org.apache.axis2.databinding.ADBBean {

+        Body body;

+

+        Envelope(XMLStreamReader parser) {

+            body = new Body(parser);

+        }

+

+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName) {

+            java.util.ArrayList elementList = new java.util.ArrayList();

+            elementList.add(new QName(qName.getNamespaceURI(), "Header", SOAPConstants.BODY_NAMESPACE_PREFIX));

+            elementList.add(new Header());

+            elementList.add(new QName(qName.getNamespaceURI(), "Body", SOAPConstants.BODY_NAMESPACE_PREFIX));

+            elementList.add(body);

+            return

+                    new StreamWrapper(new org.apache.axis2.databinding.utils.reader.

+                    ADBXMLStreamReaderImpl(qName, elementList.toArray(), null));

+        }

+    }

+    

+    protected void identifySOAPVersion(String soapVersionURIFromTransport) {

+        //Do nothing

+    }

+

+    public static class Body

+            implements org.apache.axis2.databinding.ADBBean {

+        Child child;

+

+        Body(XMLStreamReader parser) {

+            child = new Child(parser);

+        }

+

+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName) {

+            java.util.ArrayList elementList = new java.util.ArrayList();

+            elementList.add(qName);

+            elementList.add(child);

+            return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(), null);

+        }

+    }

+

+    public static class Header

+            implements org.apache.axis2.databinding.ADBBean {

+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName) {

+            java.util.ArrayList elementList = new java.util.ArrayList();

+            return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(), null);

+        }

+    }

+

+    public static class Child

+            implements org.apache.axis2.databinding.ADBBean {

+        XMLStreamReader parser;

+

+        Child(XMLStreamReader parser) {

+            this.parser = parser;

+        }

+

+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName) {

+            return parser;

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/i18n/ADBMessages.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/i18n/ADBMessages.java
new file mode 100644
index 0000000..a06d36f
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/i18n/ADBMessages.java
@@ -0,0 +1,154 @@
+package org.apache.axis2.databinding.i18n;

+

+import org.apache.axis2.i18n.MessagesConstants;

+import org.apache.axis2.i18n.MessageBundle;

+

+import java.util.Locale;

+import java.util.ResourceBundle;

+import java.util.MissingResourceException;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ADBMessages {

+     private static Class thisClass = ADBMessages.class;

+

+    private static final String PROJECT_NAME = MessagesConstants.projectName;

+

+    private static final String RESOURCE_NAME = MessagesConstants.resourceName;

+    private static final Locale LOCAL = MessagesConstants.locale;

+

+    private static final String PACKAGE_NAME = getPackage(thisClass.getName());

+    private static final ClassLoader CLASS_LOADER = thisClass.getClassLoader();

+

+    private static final ResourceBundle PARENT =

+            (MessagesConstants.rootPackageName.equals(PACKAGE_NAME))

+            ? null

+            : MessagesConstants.rootBundle;

+

+

+    /**

+     * ** NO NEED TO CHANGE ANYTHING BELOW ****

+     */

+

+    private static final MessageBundle messageBundle =

+            new MessageBundle(PROJECT_NAME, PACKAGE_NAME, RESOURCE_NAME,

+                    LOCAL, CLASS_LOADER, PARENT);

+

+    /**

+     * Gets a message from resource.properties from the package of the given object.

+     *

+     * @param key The resource key

+     * @return Returns the formatted message.

+     */

+    public static String getMessage(String key)

+            throws MissingResourceException {

+        return messageBundle.getMessage(key);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @return Returns the formatted message.

+     */

+    public static String getMessage(String key, String arg0)

+            throws MissingResourceException {

+        return messageBundle.getMessage(key, arg0);

+    }

+

+    /**

+     * Gets a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @return Returns the formatted message.

+     */

+    public static String getMessage(String key, String arg0, String arg1)

+            throws MissingResourceException {

+        return messageBundle.getMessage(key, arg0, arg1);

+    }

+

+    /**

+     * Gets a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @return Returns the formatted message.

+     */

+    public static String getMessage(String key, String arg0, String arg1, String arg2)

+            throws MissingResourceException {

+        return messageBundle.getMessage(key, arg0, arg1, arg2);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @param arg3 The argument to place in variable {3}

+     * @return Returns the formatted message.

+     */

+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3)

+            throws MissingResourceException {

+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3);

+    }

+

+    /**

+     * Gets a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @param arg3 The argument to place in variable {3}

+     * @param arg4 The argument to place in variable {4}

+     * @return Returns the formatted message.

+     */

+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3, String arg4)

+            throws MissingResourceException {

+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3, arg4);

+    }

+

+    /**

+     * Gets a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param args An array of objects to place in corresponding variables

+     * @return Returns the formatted message.

+     */

+    public static String getMessage(String key, String[] args)

+            throws MissingResourceException {

+        return messageBundle.getMessage(key, args);

+    }

+

+    public static ResourceBundle getResourceBundle() {

+        return messageBundle.getResourceBundle();

+    }

+

+    public static MessageBundle getMessageBundle() {

+        return messageBundle;

+    }

+

+    private static String getPackage(String name) {

+        return name.substring(0, name.lastIndexOf('.')).intern();

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/i18n/resource.properties b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/i18n/resource.properties
new file mode 100644
index 0000000..2479a47
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/i18n/resource.properties
@@ -0,0 +1,18 @@
+# Translation instructions.

+# 1.  Each message line is of the form key=value.

+#     Translate the value, DO NOT translate the key.

+# 2.  The messages may contain arguments that will be filled in

+#     by the runtime.  These are of the form: {0}, {1}, etc.

+#     These must appear as is in the message, though the order

+#     may be changed to support proper language syntax.

+# 3.  If a single quote character is to appear in the resulting

+#     message, it must appear in this file as two consecutive

+#     single quote characters.

+# 4.  Lines beginning with "#" (like this one) are comment lines

+#     and may contain translation instructions.  They need not be

+#     translated unless your translated file, rather than this file,

+#     will serve as a base for other translators.

+################## Converter Util #################################################

+converter.cannotGenerate=Cannot generate object for {0}

+converter.cannotConvert=No way to convert {0}

+converter.cannotParse=Unable to parse ''{0}''
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/typemapping/SimpleTypeMapper.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/typemapping/SimpleTypeMapper.java
new file mode 100644
index 0000000..a0b8cf6
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/typemapping/SimpleTypeMapper.java
@@ -0,0 +1,314 @@
+/*

+* Copyright 2004,2005 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.axis2.databinding.typemapping;

+

+import org.apache.axiom.om.OMElement;

+

+import javax.xml.namespace.QName;

+import java.text.SimpleDateFormat;

+import java.util.*;

+

+public class SimpleTypeMapper {

+

+    private static SimpleDateFormat zulu =

+            new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

+    //  0123456789 0 123456789

+

+    static {

+        zulu.setTimeZone(TimeZone.getTimeZone("GMT"));

+    }

+

+    private static final String STRING = "java.lang.String";

+    private static final String W_INT = "java.lang.Integer";

+    private static final String W_DOUBLE = "java.lang.Double";

+    private static final String W_LONG = "java.lang.Long";

+    private static final String W_BYTE = "java.lang.Byte";

+    private static final String W_SHORT = "java.lang.Short";

+    private static final String W_BOOLEAN = "java.lang.Boolean";

+    private static final String W_CHAR = "java.lang.Character";

+    private static final String W_FLOAT = "java.lang.Float";

+    private static final String W_CALENDAR = "java.util.Calendar";

+    private static final String W_DATE = "java.util.Date";

+    private static final String ARRAY_LIST = "java.util.ArrayList";

+    private static final String INT = "int";

+    private static final String BOOLEAN = "boolean";

+    private static final String BYTE = "byte";

+    private static final String DOUBLE = "double";

+    private static final String SHORT = "short";

+    private static final String LONG = "long";

+    private static final String FLOAT = "float";

+    private static final String CHAR = "char";

+

+    public static Object getSimpleTypeObject(Class parameter, OMElement value) {

+        if (parameter.getName().equals(STRING)) {

+            return value.getText();

+        } else if (parameter.getName().equals(INT)) {

+            return new Integer(value.getText());

+        } else if (parameter.getName().equals(BOOLEAN)) {

+            return Boolean.valueOf(value.getText());

+        } else if (parameter.getName().equals(BYTE)) {

+            return new Byte(value.getText());

+        } else if (parameter.getName().equals(DOUBLE)) {

+            return new Double(value.getText());

+        } else if (parameter.getName().equals(SHORT)) {

+            return new Short(value.getText());

+        } else if (parameter.getName().equals(LONG)) {

+            return new Long(value.getText());

+        } else if (parameter.getName().equals(FLOAT)) {

+            return new Float(value.getText());

+        } else if (parameter.getName().equals(CHAR)) {

+            return new Character(value.getText().toCharArray()[0]);

+        } else if (parameter.getName().equals(W_INT)) {

+            return new Integer(value.getText());

+        } else if (parameter.getName().equals(W_BOOLEAN)) {

+            return Boolean.valueOf(value.getText());

+        } else if (parameter.getName().equals(W_BYTE)) {

+            return new Byte(value.getText());

+        } else if (parameter.getName().equals(W_DOUBLE)) {

+            return new Double(value.getText());

+        } else if (parameter.getName().equals(W_SHORT)) {

+            return new Short(value.getText());

+        } else if (parameter.getName().equals(W_LONG)) {

+            return new Long(value.getText());

+        } else if (parameter.getName().equals(W_FLOAT)) {

+            return new Float(value.getText());

+        } else if (parameter.getName().equals(W_CHAR)) {

+            return new Character(value.getText().toCharArray()[0]);

+        } else if (parameter.getName().equals(W_CALENDAR)) {

+            return makeCalendar(value.getText(), false);

+        } else if (parameter.getName().equals(W_DATE)) {

+            return makeCalendar(value.getText(), true);

+        } else {

+            return null;

+        }

+    }

+

+    public static ArrayList getArrayList(OMElement element, String localName) {

+        Iterator childitr = element.getChildrenWithName(new QName(localName));

+        ArrayList list = new ArrayList();

+        while (childitr.hasNext()) {

+            Object o = childitr.next();

+            list.add(o);

+        }

+        return list;

+    }

+

+    public static ArrayList getArrayList(OMElement element) {

+        Iterator childitr = element.getChildren();

+        ArrayList list = new ArrayList();

+        while (childitr.hasNext()) {

+            Object o = childitr.next();

+            list.add(o);

+        }

+        return list;

+    }

+

+    public static boolean isSimpleType(Object obj) {

+        String objClassName = obj.getClass().getName();

+        if (obj instanceof Calendar) {

+            return true;

+        } else if (obj instanceof Date) {

+            return true;

+        } else {

+            return isSimpleType(objClassName);

+        }

+    }

+

+    public static boolean isSimpleType(Class obj) {

+        String objClassName = obj.getName();

+        return isSimpleType(objClassName);

+    }

+

+    public static boolean isArrayList(Class obj) {

+        String objClassName = obj.getName();

+        return ARRAY_LIST.equals(objClassName);

+    }

+

+    public static boolean isSimpleType(String objClassName) {

+        if (objClassName.equals(STRING)) {

+            return true;

+        } else if (objClassName.equals(INT)) {

+            return true;

+        } else if (objClassName.equals(BOOLEAN)) {

+            return true;

+        } else if (objClassName.equals(BYTE)) {

+            return true;

+        } else if (objClassName.equals(DOUBLE)) {

+            return true;

+        } else if (objClassName.equals(SHORT)) {

+            return true;

+        } else if (objClassName.equals(LONG)) {

+            return true;

+        } else if (objClassName.equals(FLOAT)) {

+            return true;

+        } else if (objClassName.equals(CHAR)) {

+            return true;

+        } else if (objClassName.equals(W_INT)) {

+            return true;

+        } else if (objClassName.equals(W_BOOLEAN)) {

+            return true;

+        } else if (objClassName.equals(W_BYTE)) {

+            return true;

+        } else if (objClassName.equals(W_DOUBLE)) {

+            return true;

+        } else if (objClassName.equals(W_SHORT)) {

+            return true;

+        } else if (objClassName.equals(W_LONG)) {

+            return true;

+        } else if (objClassName.equals(W_FLOAT)) {

+            return true;

+        } else if (objClassName.equals(W_CALENDAR)) {

+            return true;

+        } else if (objClassName.equals(W_DATE)) {

+            return true;

+        } else return objClassName.equals(W_CHAR);

+    }

+

+    public static String getStringValue(Object obj) {

+        if (obj instanceof Float ||

+                obj instanceof Double) {

+            double data;

+            if (obj instanceof Float) {

+                data = ((Float) obj).doubleValue();

+            } else {

+                data = ((Double) obj).doubleValue();

+            }

+            if (Double.isNaN(data)) {

+                return "NaN";

+            } else if (data == Double.POSITIVE_INFINITY) {

+                return "INF";

+            } else if (data == Double.NEGATIVE_INFINITY) {

+                return "-INF";

+            } else {

+                return obj.toString();

+            }

+        } else if (obj instanceof Calendar) {

+            return zulu.format(((Calendar) obj).getTime());

+        } else if (obj instanceof Date) {

+            return zulu.format(obj);

+        }

+        return obj.toString();

+    }

+    public static Object makeCalendar(String source, boolean returnDate) {

+        Calendar calendar = Calendar.getInstance();

+        Date date;

+        boolean bc = false;

+

+        // validate fixed portion of format

+        if (source == null || source.length() == 0) {

+            throw new NumberFormatException(

+                    "badDateTime00");

+        }

+        if (source.charAt(0) == '+') {

+            source = source.substring(1);

+        }

+        if (source.charAt(0) == '-') {

+            source = source.substring(1);

+            bc = true;

+        }

+        if (source.length() < 19) {

+            throw new NumberFormatException(

+                    "badDateTime00");

+        }

+        if (source.charAt(4) != '-' || source.charAt(7) != '-' ||

+                source.charAt(10) != 'T') {

+            throw new NumberFormatException("badDate00");

+        }

+        if (source.charAt(13) != ':' || source.charAt(16) != ':') {

+            throw new NumberFormatException("badTime00");

+        }

+        // convert what we have validated so far

+        try {

+            synchronized (zulu) {

+                date = zulu.parse(source.substring(0, 19) + ".000Z");

+            }

+        } catch (Exception e) {

+            throw new NumberFormatException(e.toString());

+        }

+        int pos = 19;

+

+        // parse optional milliseconds

+        if (pos < source.length() && source.charAt(pos) == '.') {

+            int milliseconds;

+            int start = ++pos;

+            while (pos < source.length() &&

+                    Character.isDigit(source.charAt(pos))) {

+                pos++;

+            }

+            String decimal = source.substring(start, pos);

+            if (decimal.length() == 3) {

+                milliseconds = Integer.parseInt(decimal);

+            } else if (decimal.length() < 3) {

+                milliseconds = Integer.parseInt((decimal + "000")

+                        .substring(0, 3));

+            } else {

+                milliseconds = Integer.parseInt(decimal.substring(0, 3));

+                if (decimal.charAt(3) >= '5') {

+                    ++milliseconds;

+                }

+            }

+

+            // add milliseconds to the current date

+            date.setTime(date.getTime() + milliseconds);

+        }

+

+        // parse optional timezone

+        if (pos + 5 < source.length() &&

+                (source.charAt(pos) == '+' || (source.charAt(pos) == '-'))) {

+            if (!Character.isDigit(source.charAt(pos + 1)) ||

+                    !Character.isDigit(source.charAt(pos + 2)) ||

+                    source.charAt(pos + 3) != ':' ||

+                    !Character.isDigit(source.charAt(pos + 4)) ||

+                    !Character.isDigit(source.charAt(pos + 5))) {

+                throw new NumberFormatException(

+                        "badTimezone00");

+            }

+            int hours = (source.charAt(pos + 1) - '0') * 10

+                    + source.charAt(pos + 2) - '0';

+            int mins = (source.charAt(pos + 4) - '0') * 10

+                    + source.charAt(pos + 5) - '0';

+            int milliseconds = (hours * 60 + mins) * 60 * 1000;

+

+            // subtract milliseconds from current date to obtain GMT

+            if (source.charAt(pos) == '+') {

+                milliseconds = -milliseconds;

+            }

+            date.setTime(date.getTime() + milliseconds);

+            pos += 6;

+        }

+        if (pos < source.length() && source.charAt(pos) == 'Z') {

+            pos++;

+            calendar.setTimeZone(TimeZone.getTimeZone("GMT"));

+        }

+        if (pos < source.length()) {

+            throw new NumberFormatException("badChars00");

+        }

+        calendar.setTime(date);

+

+        // support dates before the Christian era

+        if (bc) {

+            calendar.set(Calendar.ERA, GregorianCalendar.BC);

+        }

+

+        if (returnDate) {

+            return date;

+        } else {

+            return calendar;

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Day.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Day.java
new file mode 100644
index 0000000..742f2df
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Day.java
@@ -0,0 +1,161 @@
+/*

+ * Copyright 2002-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.axis2.databinding.types;

+

+

+import java.io.Serializable;

+import java.text.NumberFormat;

+

+/**

+ * Implementation of the XML Schema type gDay

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#gDay">XML Schema 3.2.13</a>

+ */

+public class Day implements Serializable {

+

+    private static final long serialVersionUID = -9024662553918598132L;

+

+    int day;

+    String timezone;

+

+    /**

+     * Constructs a Day with the given values

+     * No timezone is specified

+     */

+    public Day(int day) throws NumberFormatException {

+        setValue(day);

+    }

+

+    /**

+     * Constructs a Day with the given values, including a timezone string

+     * The timezone is validated but not used.

+     */

+    public Day(int day, String timezone)

+            throws NumberFormatException {

+        setValue(day, timezone);

+    }

+

+    /**

+     * Construct a Day from a String in the format ---DD[timezone]

+     */

+    public Day(String source) throws NumberFormatException {

+        if (source.length() < 5) {

+            throw new NumberFormatException();

+            //Messages.getMessage("badDay00"));

+        }

+

+        if (source.charAt(0) != '-' ||

+                source.charAt(1) != '-' ||

+                source.charAt(2) != '-') {

+            throw new NumberFormatException();

+            //Messages.getMessage("badDay00"));

+        }

+

+        setValue(Integer.parseInt(source.substring(3, 5)),

+                source.substring(5));

+    }

+

+    public int getDay() {

+        return day;

+    }

+

+    /**

+     * Set the day

+     */

+    public void setDay(int day) {

+        // validate day

+        if (day < 1 || day > 31) {

+            throw new NumberFormatException();

+            //Messages.getMessage("badDay00"));

+        }

+        this.day = day;

+    }

+

+    public String getTimezone() {

+        return timezone;

+    }

+

+    public void setTimezone(String timezone) {

+        // validate timezone

+        if (timezone != null && timezone.length() > 0) {

+            // Format [+/-]HH:MM

+            if (timezone.charAt(0) == '+' || (timezone.charAt(0) == '-')) {

+                if (timezone.length() != 6 ||

+                        !Character.isDigit(timezone.charAt(1)) ||

+                        !Character.isDigit(timezone.charAt(2)) ||

+                        timezone.charAt(3) != ':' ||

+                        !Character.isDigit(timezone.charAt(4)) ||

+                        !Character.isDigit(timezone.charAt(5)))

+                    throw new NumberFormatException();

+                // Messages.getMessage("badTimezone00"));

+

+            } else if (!timezone.equals("Z")) {

+                throw new NumberFormatException();

+                // Messages.getMessage("badTimezone00"));

+            }

+            // if we got this far, its good

+            this.timezone = timezone;

+        }

+    }

+

+    public void setValue(int day, String timezone)

+            throws NumberFormatException {

+        setDay(day);

+        setTimezone(timezone);

+    }

+

+    public void setValue(int day) throws NumberFormatException {

+        setDay(day);

+    }

+

+    public String toString() {

+        // use NumberFormat to ensure leading zeros

+        NumberFormat nf = NumberFormat.getInstance();

+        nf.setGroupingUsed(false);

+

+        // Day

+        nf.setMinimumIntegerDigits(2);

+        String s = "---" + nf.format(day);

+

+        // timezone

+        if (timezone != null) {

+            s = s + timezone;

+        }

+        return s;

+    }

+

+    public boolean equals(Object obj) {

+        if (!(obj instanceof Day)) return false;

+        Day other = (Day) obj;

+        if (this == obj) return true;

+

+        boolean equals = (this.day == other.day);

+        if (timezone != null) {

+            equals = equals && timezone.equals(other.timezone);

+        }

+        return equals;

+    }

+

+    /**

+     * Return the value of day XORed with the hashCode of timezone

+     * iff one is defined.

+     *

+     * @return an <code>int</code> value

+     */

+    public int hashCode() {

+        return null == timezone ? day : day ^ timezone.hashCode();

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Duration.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Duration.java
new file mode 100644
index 0000000..33a304b
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Duration.java
@@ -0,0 +1,497 @@
+/*

+ * Copyright 2002-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.axis2.databinding.types;

+

+import java.io.Serializable;

+import java.util.Calendar;

+

+/**

+ * Implementation of the XML Schema type duration. Duration supports a minimum

+ * fractional second precision of milliseconds.

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#duration">XML Schema 3.2.6</a>

+ */

+public class Duration implements Serializable {

+

+	private static final long serialVersionUID = -3736760992541369098L;

+	

+	boolean isNegative;

+    int years;

+    int months;

+    int days;

+    int hours;

+    int minutes;

+    double seconds;

+

+    /**

+     * Default no-arg constructor

+     */

+    public Duration() {

+    }

+

+    /**

+     * @param negative

+     * @param aYears

+     * @param aMonths

+     * @param aDays

+     * @param aHours

+     * @param aMinutes

+     * @param aSeconds

+     */

+    public Duration(boolean negative, int aYears, int aMonths, int aDays,

+                    int aHours, int aMinutes, double aSeconds) {

+        isNegative = negative;

+        years = aYears;

+        months = aMonths;

+        days = aDays;

+        hours = aHours;

+        minutes = aMinutes;

+        setSeconds(aSeconds);

+    }

+

+    /**

+     * Constructs Duration from a String in an xsd:duration format -

+     * PnYnMnDTnHnMnS.

+     *

+     * @param duration String

+     * @throws SchemaException if the string doesn't parse correctly.

+     */

+    public Duration(String duration) throws IllegalArgumentException {

+        int position = 1;

+        int timePosition = duration.indexOf("T");

+

+        // P is required but P by itself is invalid

+        if (duration.indexOf("P") == -1 || duration.equals("P")) {

+            throw new IllegalArgumentException();

+                   // Messages.getMessage("badDuration"));

+        }

+

+        // if present, time cannot be empty

+        if (duration.lastIndexOf("T") == duration.length() - 1) {

+            throw new IllegalArgumentException();

+//                    Messages.getMessage("badDuration"));

+        }

+

+        // check the sign

+        if (duration.startsWith("-")) {

+            isNegative = true;

+            position++;

+        }

+

+        // parse time part

+        if (timePosition != -1) {

+            parseTime(duration.substring(timePosition + 1));

+        } else {

+            timePosition = duration.length();

+        }

+

+        // parse date part

+        if (position != timePosition) {

+            parseDate(duration.substring(position, timePosition));

+        }

+    }

+

+    /**

+     * Constructs Duration from a Calendar.

+     *

+     * @param calendar Calendar

+     * @throws IllegalArgumentException if the calendar object does not

+     * represent any date nor time.

+     */

+    public Duration(boolean negative, Calendar calendar) throws

+            IllegalArgumentException {

+        this.isNegative = negative;

+        this.years = calendar.get(Calendar.YEAR);

+        this.months = calendar.get(Calendar.MONTH);

+        this.days = calendar.get(Calendar.DATE);

+        this.hours = calendar.get(Calendar.HOUR);

+        this.minutes = calendar.get(Calendar.MINUTE);

+        this.seconds = calendar.get(Calendar.SECOND);

+        this.seconds += ((double) calendar.get(Calendar.MILLISECOND)) / 100;

+        if (years == 0 && months == 0 && days == 0 && hours == 0 &&

+            minutes == 0 && seconds == 0) {

+            throw new IllegalArgumentException();

+                    //Messages.getMessage("badCalendarForDuration"));

+        }

+    }

+

+    /**

+     * This method parses the time portion of a String that represents

+     * xsd:duration - nHnMnS.

+     *

+     * @param time

+     * @throws IllegalArgumentException if time does not match pattern

+     *

+     */

+    public void parseTime(String time) throws IllegalArgumentException {

+        if (time.length() == 0 || time.indexOf("-") != -1) {

+            throw new IllegalArgumentException();

+                    //Messages.getMessage("badTimeDuration"));

+        }

+

+        // check if time ends with either H, M, or S

+        if (!time.endsWith("H") && !time.endsWith("M") && !time.endsWith("S")) {

+            throw new IllegalArgumentException();

+                    //Messages.getMessage("badTimeDuration"));

+        }

+

+        try {

+            // parse string and extract hours, minutes, and seconds

+            int start = 0;

+

+            // Hours

+            int end = time.indexOf("H");

+            // if there is H in a string but there is no value for hours,

+            // throw an exception

+            if (start == end) {

+                throw new IllegalArgumentException();

+                        //Messages.getMessage("badTimeDuration"));

+            }

+            if (end != -1) {

+                hours = Integer.parseInt(time.substring(0, end));

+                start = end + 1;

+            }

+

+            // Minutes

+            end = time.indexOf("M");

+            // if there is M in a string but there is no value for hours,

+            // throw an exception

+            if (start == end) {

+                throw new IllegalArgumentException();

+//                        Messages.getMessage("badTimeDuration"));

+            }

+

+            if (end != -1) {

+                minutes = Integer.parseInt(time.substring(start, end));

+                start = end + 1;

+            }

+

+            // Seconds

+            end = time.indexOf("S");

+            // if there is S in a string but there is no value for hours,

+            // throw an exception

+            if (start == end) {

+                throw new IllegalArgumentException();

+                        //Messages.getMessage("badTimeDuration"));

+            }

+

+            if (end != -1) {

+                setSeconds(Double.parseDouble(time.substring(start, end)));

+            }

+        } catch (NumberFormatException e) {

+            throw new IllegalArgumentException();

+                    //Messages.getMessage("badTimeDuration"));

+        }

+    }

+

+    /**

+     * This method parses the date portion of a String that represents

+     * xsd:duration - nYnMnD.

+     *

+     * @param date

+     * @throws IllegalArgumentException if date does not match pattern

+     *

+     */

+    public void parseDate(String date) throws IllegalArgumentException {

+        if (date.length() == 0 || date.indexOf("-") != -1) {

+            throw new IllegalArgumentException();

+                    //Messages.getMessage("badDateDuration"));

+        }

+

+        // check if date string ends with either Y, M, or D

+        if (!date.endsWith("Y") && !date.endsWith("M") && !date.endsWith("D")) {

+            throw new IllegalArgumentException();

+                    //Messages.getMessage("badDateDuration"));

+        }

+

+        // catch any parsing exception

+        try {

+            // parse string and extract years, months, days

+            int start = 0;

+            int end = date.indexOf("Y");

+

+            // if there is Y in a string but there is no value for years,

+            // throw an exception

+            if (start == end) {

+                throw new IllegalArgumentException();

+                       // Messages.getMessage("badDateDuration"));

+            }

+            if (end != -1) {

+                years = Integer.parseInt(date.substring(0, end));

+                start = end + 1;

+            }

+

+            // months

+            end = date.indexOf("M");

+            // if there is M in a string but there is no value for months,

+            // throw an exception

+            if (start == end) {

+                throw new IllegalArgumentException();

+                        //Messages.getMessage("badDateDuration"));

+            }

+            if (end != -1) {

+                months = Integer.parseInt(date.substring(start, end));

+                start = end + 1;

+            }

+

+            end = date.indexOf("D");

+            // if there is D in a string but there is no value for days,

+            // throw an exception

+            if (start == end) {

+                throw new IllegalArgumentException();

+                       // Messages.getMessage("badDateDuration"));

+            }

+            if (end != -1) {

+                days = Integer.parseInt(date.substring(start, end));

+            }

+        } catch (NumberFormatException e) {

+            throw new IllegalArgumentException();

+                    //Messages.getMessage("badDateDuration"));

+        }

+    }

+

+    /**

+     *

+     */

+    public boolean isNegative() {

+        return isNegative;

+    }

+

+    /**

+     *

+     */

+    public int getYears() {

+        return years;

+    }

+

+    /**

+     *

+     */

+    public int getMonths() {

+        return months;

+    }

+

+    /**

+     *

+     */

+    public int getDays() {

+        return days;

+    }

+

+    /**

+     *

+     */

+    public int getHours() {

+        return hours;

+    }

+

+    /**

+     *

+     */

+    public int getMinutes() {

+        return minutes;

+    }

+

+    /**

+     *

+     */

+    public double getSeconds() {

+        return seconds;

+    }

+

+    /**

+     * @param negative

+     */

+    public void setNegative(boolean negative) {

+        isNegative = negative;

+    }

+

+    /**

+     * @param years

+     */

+    public void setYears(int years) {

+        this.years = years;

+    }

+

+    /**

+     * @param months

+     */

+    public void setMonths(int months) {

+        this.months = months;

+    }

+

+    /**

+     * @param days

+     */

+    public void setDays(int days) {

+        this.days = days;

+    }

+

+    /**

+     * @param hours

+     */

+    public void setHours(int hours) {

+        this.hours = hours;

+    }

+

+    /**

+     * @param minutes

+     */

+    public void setMinutes(int minutes) {

+        this.minutes = minutes;

+    }

+

+    /**

+     * @param seconds

+     * @deprecated use {@link #setSeconds(double) setSeconds(double)}

+     * instead

+     */

+    public void setSeconds(int seconds) {

+        this.seconds = seconds;

+    }

+

+    /**

+     * Sets the seconds. NOTE: The fractional value of seconds is rounded up to

+     * milliseconds.

+     *

+     * @param seconds double

+     */

+    public void setSeconds(double seconds) {

+        this.seconds = ((double) (Math.round(seconds * 100))) / 100;

+    }

+

+    /**

+     * This returns the xml representation of an xsd:duration object.

+     */

+    public String toString() {

+        StringBuffer duration = new StringBuffer();

+

+        duration.append("P");

+

+        if (years != 0) {

+            duration.append(years).append("Y");

+        }

+        if (months != 0) {

+            duration.append(months).append("M");

+        }

+        if (days != 0) {

+            duration.append(days).append("D");

+        }

+        if (hours != 0 || minutes != 0 || seconds != 0.0) {

+            duration.append("T");

+

+            if (hours != 0) {

+                duration.append(hours).append("H");

+

+            }

+            if (minutes != 0) {

+                duration.append(minutes).append("M");

+

+            }

+            if (seconds != 0) {

+                if (seconds == (int) seconds) {

+                    duration.append((int) seconds).append("S");

+                } else {

+                    duration.append(seconds).append("S");

+                }

+            }

+        }

+

+        if (duration.length() == 1) {

+            duration.append("T0S");

+        }

+

+        if (isNegative) {

+            duration.insert(0, "-");

+        }

+

+        return duration.toString();

+    }

+

+    /**

+     * The equals method compares the time represented by duration object, not

+     * its string representation.

+     * Hence, a duration object representing 65 minutes is considered equal to a

+     * duration object representing 1 hour and 5 minutes.

+     *

+     * @param object

+     */

+    public boolean equals(Object object) {

+        if (!(object instanceof Duration)) {

+            return false;

+        }

+

+        Duration duration = (Duration) object;

+

+        return this.isNegative == duration.isNegative &&

+                this.getAsCalendar().equals(duration.getAsCalendar());

+    }

+

+    public int hashCode() {

+        int hashCode = 0;

+

+        if (isNegative) {

+            hashCode++;

+        }

+        hashCode += years;

+        hashCode += months;

+        hashCode += days;

+        hashCode += hours;

+        hashCode += minutes;

+        hashCode += seconds;

+        // milliseconds

+        hashCode += (seconds * 100) % 100;

+

+        return hashCode;

+    }

+

+    /**

+     * Returns duration as a calendar.  Due to the way a Calendar class works,

+     * the values for particular fields may not be the same as obtained through

+     * getter methods.  For example, if a duration's object getMonths

+     * returns 20, a similar call on a calendar object will return 1 year and

+     * 8 months.

+     *

+     * @return Calendar

+     */

+    public Calendar getAsCalendar() {

+        return getAsCalendar(Calendar.getInstance());

+    }

+

+    /**

+     * Returns duration as a calendar.  Due to the way a Calendar class works,

+     * the values for particular fields may not be the same as obtained through

+     * getter methods.  For example, if a Duration's object getMonths

+     * returns 20, a similar call on a Calendar object will return 1 year and

+     * 8 months.

+     *

+     * @param startTime Calendar

+     * @return Calendar

+     */

+    public Calendar getAsCalendar(Calendar startTime) {

+        Calendar ret = (Calendar) startTime.clone();

+        ret.set(Calendar.YEAR, years);

+        ret.set(Calendar.MONTH, months);

+        ret.set(Calendar.DATE, days);

+        ret.set(Calendar.HOUR, hours);

+        ret.set(Calendar.MINUTE, minutes);

+        ret.set(Calendar.SECOND, (int) seconds);

+        ret.set(Calendar.MILLISECOND,

+                (int) (seconds * 100 - Math.round(seconds) * 100));

+        return ret;

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Entities.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Entities.java
new file mode 100644
index 0000000..d6e182a
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Entities.java
@@ -0,0 +1,46 @@
+/*

+ * 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.axis2.databinding.types;

+

+import java.util.StringTokenizer;

+

+/**

+ * Custom class for supporting XSD data type Entities

+ * 

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#ENTITIES">XML Schema 3.3.12 ENTITIES</a>

+ */

+public class Entities extends NCName {

+	

+    private static final long serialVersionUID = -4511368195143560809L;

+    

+	private Entity[] entities;

+    

+    public Entities() {

+        super();

+    }

+    /**

+     * ctor for Entities

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public Entities (String stValue) throws IllegalArgumentException {

+        StringTokenizer tokenizer = new StringTokenizer(stValue);

+        int count = tokenizer.countTokens();

+        entities = new Entity[count];

+        for(int i=0;i<count;i++){

+            entities[i] = new Entity(tokenizer.nextToken());

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Entity.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Entity.java
new file mode 100644
index 0000000..776f1c3
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Entity.java
@@ -0,0 +1,38 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+

+/**

+ * Custom class for supporting XSD data type Entity

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#ENTITY">XML Schema 3.3.11 ENTITY</a>

+ */

+public class Entity extends NCName {

+	

+    private static final long serialVersionUID = -4868410883856961942L;

+    

+	public Entity() {

+        super();

+    }

+    /**

+     * ctor for Entity

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public Entity (String stValue) throws IllegalArgumentException {

+        super(stValue);

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/HexBinary.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/HexBinary.java
new file mode 100644
index 0000000..ad46c1c
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/HexBinary.java
@@ -0,0 +1,200 @@
+/*

+ * 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.axis2.databinding.types ;

+

+

+import java.io.ByteArrayOutputStream;

+import java.io.Serializable;

+

+/**

+ * Custom class for supporting primitive XSD data type hexBinary.

+ */

+public class HexBinary implements Serializable {

+

+    private static final long serialVersionUID = -5082403899986720767L;

+    

+	byte[] m_value;

+

+    public HexBinary() {

+    }

+

+    public HexBinary(String string){

+        m_value = decode(string);

+    }

+

+    public HexBinary(byte[] bytes){

+        m_value = bytes;

+    }

+

+    public byte[] getBytes(){

+        return m_value;

+    }

+

+    public String toString(){

+        return encode(m_value);

+    }

+

+    public int hashCode(){

+        //TODO: How do we hash this?

+        return super.hashCode();

+    }

+

+    public boolean equals(Object object){

+        //TODO: Is this good enough?

+        String s1 = object.toString();

+        String s2 = this.toString();

+        return s1.equals(s2);

+    }

+

+   // public static final String ERROR_ODD_NUMBER_OF_DIGITS =

+            //Messages.getMessage("oddDigits00");

+    //public static final String ERROR_BAD_CHARACTER_IN_HEX_STRING =

+    //        Messages.getMessage("badChars01");

+

+    // Code from Ajp11, from Apache's JServ

+

+    // Table for HEX to DEC byte translation

+    public static final int[] DEC = {

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        00, 01, 02, 03, 04, 05, 06, 07,  8,  9, -1, -1, -1, -1, -1, -1,

+        -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

+    };

+

+    /**

+     * Convert a String of hexadecimal digits into the corresponding

+     * byte array by encoding each two hexadecimal digits as a byte.

+     *

+     * @param digits Hexadecimal digits representation

+     *

+     * @exception IllegalArgumentException if an invalid hexadecimal digit

+     *  is found, or the input string contains an odd number of hexadecimal

+     *  digits

+     */

+    public static byte[] decode(String digits) {

+

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        for (int i = 0; i < digits.length(); i += 2) {

+            char c1 = digits.charAt(i);

+            if ((i+1) >= digits.length())

+                throw new IllegalArgumentException

+                    ();//ERROR_ODD_NUMBER_OF_DIGITS);

+            char c2 = digits.charAt(i + 1);

+            byte b = 0;

+            if ((c1 >= '0') && (c1 <= '9'))

+                b += ((c1 - '0') * 16);

+            else if ((c1 >= 'a') && (c1 <= 'f'))

+                b += ((c1 - 'a' + 10) * 16);

+            else if ((c1 >= 'A') && (c1 <= 'F'))

+                b += ((c1 - 'A' + 10) * 16);

+            else

+                throw new IllegalArgumentException

+                    ();//ERROR_BAD_CHARACTER_IN_HEX_STRING);

+            if ((c2 >= '0') && (c2 <= '9'))

+                b += (c2 - '0');

+            else if ((c2 >= 'a') && (c2 <= 'f'))

+                b += (c2 - 'a' + 10);

+            else if ((c2 >= 'A') && (c2 <= 'F'))

+                b += (c2 - 'A' + 10);

+            else

+                throw new IllegalArgumentException

+                    ();//ERROR_BAD_CHARACTER_IN_HEX_STRING);

+            baos.write(b);

+        }

+        return (baos.toByteArray());

+

+    }

+

+

+    /**

+     * Convert a byte array into a printable format containing a

+     * String of hexadecimal digit characters (two per byte).

+     *

+     * @param bytes Byte array representation

+     */

+    public static String encode(byte bytes[]) {

+

+        StringBuffer sb = new StringBuffer(bytes.length * 2);

+        for (int i = 0; i < bytes.length; i++) {

+            sb.append(convertDigit(bytes[i] >> 4));

+            sb.append(convertDigit(bytes[i] & 0x0f));

+        }

+        return (sb.toString());

+

+    }

+

+    /**

+     * Convert 4 hex digits to an int, and return the number of converted

+     * bytes.

+     *

+     * @param hex Byte array containing exactly four hexadecimal digits

+     *

+     * @exception IllegalArgumentException if an invalid hexadecimal digit

+     *  is included

+     */

+    public static int convert2Int( byte[] hex ) {

+        // Code from Ajp11, from Apache's JServ

+

+        // assert b.length==4

+        // assert valid data

+        int len;

+        if(hex.length < 4 ) return 0;

+        if( DEC[hex[0]]<0 )

+            throw new IllegalArgumentException();//ERROR_BAD_CHARACTER_IN_HEX_STRING);

+        len = DEC[hex[0]];

+        len = len << 4;

+        if( DEC[hex[1]]<0 )

+            throw new IllegalArgumentException();//ERROR_BAD_CHARACTER_IN_HEX_STRING);

+        len += DEC[hex[1]];

+        len = len << 4;

+        if( DEC[hex[2]]<0 )

+            throw new IllegalArgumentException();//ERROR_BAD_CHARACTER_IN_HEX_STRING);

+        len += DEC[hex[2]];

+        len = len << 4;

+        if( DEC[hex[3]]<0 )

+            throw new IllegalArgumentException();//ERROR_BAD_CHARACTER_IN_HEX_STRING);

+        len += DEC[hex[3]];

+        return len;

+    }

+

+    /**

+     * [Private] Convert the specified value (0 .. 15) to the corresponding

+     * hexadecimal digit.

+     *

+     * @param value Value to be converted

+     */

+    private static char convertDigit(int value) {

+

+        value &= 0x0f;

+        if (value >= 10)

+            return ((char) (value - 10 + 'a'));

+        else

+            return ((char) (value + '0'));

+

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/IDRef.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/IDRef.java
new file mode 100644
index 0000000..0dc50cf
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/IDRef.java
@@ -0,0 +1,39 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+

+/**

+ * Custom class for supporting XSD data type IDRef

+ * 

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#IDREF">XML Schema 3.3.10 IDREFS</a>

+ */

+public class IDRef extends NCName {

+	

+    private static final long serialVersionUID = 6821835065939868576L;

+    

+	public IDRef() {

+        super();

+    }

+    /**

+     * ctor for IDRef

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public IDRef (String stValue) throws IllegalArgumentException {

+        super(stValue);

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/IDRefs.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/IDRefs.java
new file mode 100644
index 0000000..01efd26
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/IDRefs.java
@@ -0,0 +1,103 @@
+/*

+ * 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.axis2.databinding.types;

+

+import java.util.Arrays;

+import java.util.HashSet;

+import java.util.Set;

+import java.util.StringTokenizer;

+

+/**

+ * Custom class for supporting XSD data type IDRefs

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#IDREFS">XML Schema 3.3.10 IDREFS</a>

+ */

+public class IDRefs extends NCName {

+	

+    private static final long serialVersionUID = 5394097798361075902L;

+    

+	private IDRef[] idrefs;

+

+    public IDRefs() {

+        super();

+    }

+    /**

+     * ctor for IDRefs

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public IDRefs (String stValue) throws IllegalArgumentException {

+        setValue(stValue);

+    }

+

+    public void setValue(String stValue) {

+        StringTokenizer tokenizer = new StringTokenizer(stValue);

+        int count = tokenizer.countTokens();

+        idrefs = new IDRef[count];

+        for(int i=0;i<count;i++){

+            idrefs[i] = new IDRef(tokenizer.nextToken());

+        }

+    }

+

+    public String toString() {

+        StringBuffer buf = new StringBuffer();

+        for (int i = 0; i < idrefs.length; i++) {

+            IDRef ref = idrefs[i];

+            if (i > 0) buf.append(" ");

+            buf.append(ref.toString());

+        }

+        return buf.toString();

+    }

+

+    /**

+     * IDREFs can be equal without having identical ordering because

+     * they represent a set of references.  Hence we have to compare

+     * values here as a set, not a list.

+     *

+     * @param object an <code>Object</code> value

+     * @return a <code>boolean</code> value

+     */

+    public boolean equals(Object object) {

+        if (object == this) {

+            return true;        // succeed quickly, when possible

+        }

+        if (object instanceof IDRefs) {

+            IDRefs that = (IDRefs)object;

+            if (this.idrefs.length == that.idrefs.length) {

+                Set ourSet = new HashSet(Arrays.asList(this.idrefs));

+                Set theirSet = new HashSet(Arrays.asList(that.idrefs));

+                return ourSet.equals(theirSet);

+            } else {

+                return false;

+            }

+        } else {

+            return false;

+        }

+    }

+

+    /**

+     * Returns the sum of the hashcodes of the underlying idrefs, an

+     * operation which is not sensitive to ordering.

+     *

+     * @return an <code>int</code> value

+     */

+    public int hashCode() {

+        int hash = 0;

+        for (int i = 0; i < idrefs.length; i++) {

+            hash += idrefs[i].hashCode();

+        }

+        return hash;

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Id.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Id.java
new file mode 100644
index 0000000..195eb09
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Id.java
@@ -0,0 +1,72 @@
+/*
+ * 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.axis2.databinding.types;
+
+
+/**
+ * Custom class for supporting XSD data type ID
+ * The base type of Id is NCName.
+ *
+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#ID">XML Schema 3.3.8</a>
+ */
+public class Id extends NCName {
+
+    private static final long serialVersionUID = -8442438083214211437L;
+
+	public Id() {
+        super();
+    }
+
+    /**
+     * Constructor for Id.
+     * @exception IllegalArgumentException will be thrown if validation fails
+     */
+    public Id(String stValue) throws IllegalArgumentException {
+        try {
+            setValue(stValue);
+        }
+        catch (IllegalArgumentException e) {
+            // recast normalizedString exception as token exception
+            throw new IllegalArgumentException();
+                    //Messages.getMessage("badIdType00") + "data=[" +
+                    //stValue + "]");
+        }
+    }
+
+    /**
+     *
+     * Validates the data and sets the value for the object.
+     * @param stValue String value
+     * @throws IllegalArgumentException if invalid format
+     */
+    public void setValue(String stValue) throws IllegalArgumentException {
+        if (!Id.isValid(stValue))
+            throw new IllegalArgumentException(
+              // Messages.getMessage("badIdType00") +
+               " data=[" + stValue + "]");
+        m_value = stValue;
+    }
+
+    /**
+     *
+     * Validates the value against the xsd definition.
+     *
+     * Same validation as NCName for the time being
+     */
+    public static boolean isValid(String stValue) {
+      return NCName.isValid(stValue);
+    }
+}
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Language.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Language.java
new file mode 100644
index 0000000..70b5f1c
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Language.java
@@ -0,0 +1,67 @@
+/*
+ * 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.axis2.databinding.types;
+
+
+/**
+ * Custom class for supporting XSD data type language
+ * language represents natural language identifiers as defined by [RFC 1766]. 
+ * The value space of language is the set of all strings that are valid language identifiers 
+ * as defined in the language identification section of [XML 1.0 (Second Edition)]. 
+ * The lexical space of language is the set of all strings that are valid language identifiers 
+ * as defined in the language identification section of [XML 1.0 (Second Edition)]. 
+ * The base type of language is token. 
+ *
+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#language">XML Schema 3.3.3</a>
+ */
+public class Language extends Token {
+
+    private static final long serialVersionUID = -4105320293090087959L;
+
+	public Language() {
+        super();
+    }
+
+    /**
+     * ctor for Language
+     * @exception IllegalArgumentException will be thrown if validation fails
+     */
+    public Language(String stValue) throws IllegalArgumentException {
+        try {
+            setValue(stValue);
+        }
+        catch (IllegalArgumentException e) {
+            // recast normalizedString exception as token exception
+            throw new IllegalArgumentException(
+//                Messages.getMessage("badLanguage00") +
+                  "data=[" + stValue + "]");
+        }
+    }
+
+   /**
+    *
+    * Validates the value against the xsd definition.
+    * Language-Tag = Primary-tag *( "-" Subtag )
+    * Primary-tag = 1*8ALPHA
+    * Subtag = 1*8ALPHA    
+    * TODO
+    * @see <a href="http://www.ietf.org/rfc/rfc1766.txt">RFC1766</a>
+    *     
+    */
+    public static boolean isValid(String stValue) {
+        return true;
+    }
+}
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Month.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Month.java
new file mode 100644
index 0000000..eb6cde3
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Month.java
@@ -0,0 +1,157 @@
+/*

+ * Copyright 2002-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.axis2.databinding.types;

+

+

+import java.text.NumberFormat;

+

+/**

+ * Implementation of the XML Schema type gMonth

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#gMonth">XML Schema 3.2.14</a>

+ */

+public class Month implements java.io.Serializable {

+	

+    private static final long serialVersionUID = -7469265802807262347L;

+    

+	int month;

+    String timezone;

+

+    /**

+     * Constructs a Month with the given values

+     * No timezone is specified

+     */

+    public Month(int month) throws NumberFormatException {

+        setValue(month);

+    }

+

+    /**

+     * Constructs a Month with the given values, including a timezone string

+     * The timezone is validated but not used.

+     */

+    public Month(int month, String timezone)

+        throws NumberFormatException {

+        setValue(month, timezone);

+    }

+

+    /**

+     * Construct a Month from a String in the format --MM--[timezone]

+     */

+    public Month(String source) throws NumberFormatException {

+        if (source.length() < (6)) {

+            throw new NumberFormatException();

+                   // Messages.getMessage("badMonth00"));

+        }

+

+        if (source.charAt(0) != '-' ||

+            source.charAt(1) != '-' ||

+            source.charAt(4) != '-' ||

+            source.charAt(5) != '-' ) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badMonth00"));

+        }

+

+        setValue(Integer.parseInt(source.substring(2,4)),

+                 source.substring(6));

+    }

+

+    public int getMonth() {

+        return month;

+    }

+

+    public void setMonth(int month) {

+        // validate month

+        if (month < 1 || month > 12) {

+            throw new NumberFormatException();

+                   // Messages.getMessage("badMonth00"));

+        }

+        this.month = month;

+    }

+

+    public String getTimezone() {

+        return timezone;

+    }

+

+    public void setTimezone(String timezone) {

+        // validate timezone

+        if (timezone != null && timezone.length() > 0) {

+            // Format [+/-]HH:MM

+            if (timezone.charAt(0)=='+' || (timezone.charAt(0)=='-')) {

+                    if (timezone.length() != 6 ||

+                        !Character.isDigit(timezone.charAt(1)) ||

+                        !Character.isDigit(timezone.charAt(2)) ||

+                        timezone.charAt(3) != ':'              ||

+                        !Character.isDigit(timezone.charAt(4)) ||

+                        !Character.isDigit(timezone.charAt(5)))

+                        throw new NumberFormatException();

+                                //Messages.getMessage("badTimezone00"));

+

+            } else if (!timezone.equals("Z")) {

+                throw new NumberFormatException();

+                        //Messages.getMessage("badTimezone00"));

+            }

+            // if we got this far, its good

+            this.timezone = timezone;

+        }

+    }

+

+    public void setValue(int month, String timezone) throws NumberFormatException {

+        setMonth(month);

+        setTimezone(timezone);

+    }

+

+    public void setValue(int month) throws NumberFormatException {

+        setMonth(month);

+    }

+

+    public String toString() {

+        // use NumberFormat to ensure leading zeros

+        NumberFormat nf = NumberFormat.getInstance();

+        nf.setGroupingUsed(false);

+

+        // month

+        nf.setMinimumIntegerDigits(2);

+        String s = "--" + nf.format(month) + "--";

+

+        // timezone

+        if (timezone != null) {

+            s = s + timezone;

+        }

+        return s;

+    }

+

+    public boolean equals(Object obj) {

+        if (!(obj instanceof Month)) return false;

+        Month other = (Month) obj;

+        if (this == obj) return true;

+

+        boolean equals = (this.month == other.month);

+        if (timezone != null) {

+            equals = equals && timezone.equals(other.timezone);

+        }

+        return equals;

+    }

+

+    /**

+     * Return the value of month XORed with the hashCode of timezone

+     * iff one is defined.

+     *

+     * @return an <code>int</code> value

+     */

+    public int hashCode() {

+        return null == timezone ? month : month ^ timezone.hashCode();

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/MonthDay.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/MonthDay.java
new file mode 100644
index 0000000..72bb695
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/MonthDay.java
@@ -0,0 +1,188 @@
+/*

+ * Copyright 2002-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.axis2.databinding.types;

+

+

+import java.text.NumberFormat;

+

+/**

+ * Implementation of the XML Schema type gMonthDay

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#gMonthDay">XML Schema 3.2.12</a>

+ */

+public class MonthDay implements java.io.Serializable {

+	

+    private static final long serialVersionUID = -345189609825249318L;

+    

+	int month;

+    int day;

+    String timezone;

+

+    /**

+     * Constructs a MonthDay with the given values

+     * No timezone is specified

+     */

+    public MonthDay(int month, int day)

+        throws NumberFormatException {

+        setValue(month, day);

+    }

+

+    /**

+     * Constructs a MonthDay with the given values, including a timezone string

+     * The timezone is validated but not used.

+     */

+    public MonthDay(int month, int day, String timezone)

+        throws NumberFormatException {

+        setValue(month, day, timezone);

+    }

+

+    /**

+     * Construct a MonthDay from a String in the format --MM-DD[timezone]

+     */

+    public MonthDay(String source) throws NumberFormatException {

+        if (source.length() < 6) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badMonthDay00"));

+        }

+

+        if (source.charAt(0) != '-' ||

+            source.charAt(1) != '-' ||

+            source.charAt(4) != '-' ) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badMonthDay00"));

+        }

+

+        setValue(Integer.parseInt(source.substring(2,4)),

+                 Integer.parseInt(source.substring(5,7)),

+                 source.substring(7));

+    }

+

+    public int getMonth() {

+        return month;

+    }

+

+    public void setMonth(int month) {

+        // validate month

+        if (month < 1 || month > 12) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badMonthDay00"));

+        }

+        this.month = month;

+    }

+

+    public int getDay() {

+        return day;

+    }

+

+    /**

+     * Set the day

+     * NOTE: if the month isn't set yet, the day isn't validated

+     */

+    public void setDay(int day) {

+        // validate day

+        if (day < 1 || day > 31) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badMonthDay00"));

+        }

+        // 30 days has September... All the rest have 31 (except Feb!)

+        // NOTE: if month isn't set, we don't validate day.

+        if ((month == 2 && day > 29) ||

+           ((month == 9 || month == 4 || month == 6 || month == 11) && day > 30)) {

+            throw new NumberFormatException();

+                   // Messages.getMessage("badMonthDay00"));

+        }

+        this.day = day;

+    }

+

+    public String getTimezone() {

+        return timezone;

+    }

+

+    public void setTimezone(String timezone) {

+        // validate timezone

+        if (timezone != null && timezone.length() > 0) {

+            // Format [+/-]HH:MM

+            if (timezone.charAt(0)=='+' || (timezone.charAt(0)=='-')) {

+                    if (timezone.length() != 6 ||

+                        !Character.isDigit(timezone.charAt(1)) ||

+                        !Character.isDigit(timezone.charAt(2)) ||

+                        timezone.charAt(3) != ':'              ||

+                        !Character.isDigit(timezone.charAt(4)) ||

+                        !Character.isDigit(timezone.charAt(5)))

+                        throw new NumberFormatException();

+                               // Messages.getMessage("badTimezone00"));

+

+            } else if (!timezone.equals("Z")) {

+                throw new NumberFormatException();

+                        //Messages.getMessage("badTimezone00"));

+            }

+            // if we got this far, its good

+            this.timezone = timezone;

+        }

+    }

+

+    public void setValue(int month, int day, String timezone)

+        throws NumberFormatException {

+        setMonth(month);

+        setDay(day);

+        setTimezone(timezone);

+    }

+

+    public void setValue(int month, int day) throws NumberFormatException {

+        setMonth(month);

+        setDay(day);

+    }

+

+    public String toString() {

+        // use NumberFormat to ensure leading zeros

+        NumberFormat nf = NumberFormat.getInstance();

+        nf.setGroupingUsed(false);

+

+        // month & Day: --MM-DD

+        nf.setMinimumIntegerDigits(2);

+        String s = "--" + nf.format(month) + "-" + nf.format(day);

+

+        // timezone

+        if (timezone != null) {

+            s = s + timezone;

+        }

+        return s;

+    }

+

+    public boolean equals(Object obj) {

+        if (!(obj instanceof MonthDay)) return false;

+        MonthDay other = (MonthDay) obj;

+        if (this == obj) return true;

+

+        boolean equals = (this.month == other.month && this.day == other.day);

+        if (timezone != null) {

+            equals = equals && timezone.equals(other.timezone);

+        }

+        return equals;

+    }

+

+    /**

+     * Return the value of (month + day) XORed with the hashCode of

+     * timezone iff one is defined.

+     *

+     * @return an <code>int</code> value

+     */

+    public int hashCode() {

+        return null == timezone

+            ? (month + day)

+            : (month + day) ^ timezone.hashCode();

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NCName.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NCName.java
new file mode 100644
index 0000000..3d44f9e
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NCName.java
@@ -0,0 +1,89 @@
+/*

+ * 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.axis2.databinding.types;

+

+import org.apache.axis2.util.XMLChar;

+

+

+/**

+ * Custom class for supporting XSD data type NCName

+ * NCName represents XML "non-colonized" Names

+ * The base type of NCName is Name.

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#NCName">XML Schema 3.3.7</a>

+ * @see <A href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName">NCName Production</a>

+ */

+public class NCName extends Name {

+

+    private static final long serialVersionUID = 8573451628276898297L;

+

+	public NCName() {

+        super();

+    }

+

+    /**

+     * ctor for NCName

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public NCName(String stValue) throws IllegalArgumentException {

+        try {

+            setValue(stValue);

+        }

+        catch (IllegalArgumentException e) {

+            // recast normalizedString exception as token exception

+            throw new IllegalArgumentException(

+                   // Messages.getMessage("badNCNameType00") +

+                            "data=[" +

+                    stValue + "]");

+        }

+    }

+

+    /**

+     *

+     * validates the data and sets the value for the object.

+     * @param stValue String value

+     * @throws IllegalArgumentException if invalid format

+     */

+    public void setValue(String stValue) throws IllegalArgumentException {

+        if (!NCName.isValid(stValue))

+            throw new IllegalArgumentException(

+               //Messages.getMessage("badNCNameType00") +

+               " data=[" + stValue + "]");

+        m_value = stValue;

+    }

+

+    /**

+     *

+     * validate the value against the xsd definition

+     *

+     * NCName ::=  (Letter | '_') (NCNameChar)*

+     * NCNameChar ::=  Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender

+     */

+    public static boolean isValid(String stValue) {

+        int scan;

+        boolean bValid = true;

+

+        for (scan=0; scan < stValue.length(); scan++) {

+            if (scan == 0)

+              bValid = XMLChar.isNCNameStart(stValue.charAt(scan));

+            else

+              bValid = XMLChar.isNCName(stValue.charAt(scan));

+            if (!bValid)

+              break;

+        }

+    return bValid;

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NMToken.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NMToken.java
new file mode 100644
index 0000000..c8195b2
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NMToken.java
@@ -0,0 +1,72 @@
+/*

+ * 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.axis2.databinding.types;

+

+import org.apache.axis2.util.XMLChar;

+

+

+/**

+ * Custom class for supporting XSD data type NMToken

+ *

+ * NMTOKEN represents the NMTOKEN attribute type from

+ * [XML 1.0(Second Edition)]. The value space of NMTOKEN

+ * is the set of tokens that match the Nmtoken production

+ * in [XML 1.0 (Second Edition)].

+ * The base type of NMTOKEN is token.

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#nmtoken">XML Schema 3.3.4</a>

+ */

+public class NMToken extends Token {

+

+    private static final long serialVersionUID = -1319741002733174329L;

+

+	public NMToken() {

+        super();

+    }

+

+    /**

+     * ctor for NMToken

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public NMToken(String stValue) throws IllegalArgumentException {

+        try {

+            setValue(stValue);

+        }

+        catch (IllegalArgumentException e) {

+            // recast normalizedString exception as token exception

+            throw new IllegalArgumentException(

+                    //  Messages.getMessage("badNmtoken00") + "data=[" +

+                stValue + "]");

+        }

+    }

+

+    /**

+     *

+     * validate the value against the xsd definition

+     * Nmtoken    ::=    (NameChar)+

+     * NameChar    ::=     Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender

+     */

+    public static boolean isValid(String stValue) {

+        int scan;

+

+        for (scan=0; scan < stValue.length(); scan++) {

+          if (!XMLChar.isName(stValue.charAt(scan)))

+            return false;

+        }

+

+        return true;

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NMTokens.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NMTokens.java
new file mode 100644
index 0000000..1a7fbc5
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NMTokens.java
@@ -0,0 +1,99 @@
+/*

+ * 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.axis2.databinding.types;

+

+import java.util.Arrays;

+import java.util.HashSet;

+import java.util.Set;

+import java.util.StringTokenizer;

+

+/**

+ * Custom class for supporting XSD data type NMTokens

+ */

+public class NMTokens extends NCName {

+    private static final long serialVersionUID = -2435854824216181165L;

+	private NMToken[] tokens;

+

+    public NMTokens() {

+        super();

+    }

+    /**

+     * ctor for NMTokens

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public NMTokens (String stValue) throws IllegalArgumentException {

+        setValue(stValue);

+    }

+

+    public void setValue(String stValue) {

+        StringTokenizer tokenizer = new StringTokenizer(stValue);

+        int count = tokenizer.countTokens();

+        tokens = new NMToken[count];

+        for(int i=0;i<count;i++){

+            tokens[i] = new NMToken(tokenizer.nextToken());

+        }

+    }

+

+    public String toString() {

+        StringBuffer buf = new StringBuffer();

+        for (int i = 0; i < tokens.length; i++) {

+            NMToken token = tokens[i];

+            if (i > 0) buf.append(" ");

+            buf.append(token.toString());

+        }

+        return buf.toString();

+    }

+

+    /**

+     * NMTokens can be equal without having identical ordering because

+     * they represent a set of references.  Hence we have to compare

+     * values here as a set, not a list.

+     *

+     * @param object an <code>Object</code> value

+     * @return a <code>boolean</code> value

+     */

+    public boolean equals(Object object) {

+        if (object == this) {

+            return true;        // succeed quickly, when possible

+        }

+        if (object instanceof NMTokens) {

+            NMTokens that = (NMTokens)object;

+            if (this.tokens.length == that.tokens.length) {

+                Set ourSet = new HashSet(Arrays.asList(this.tokens));

+                Set theirSet = new HashSet(Arrays.asList(that.tokens));

+                return ourSet.equals(theirSet);

+            } else {

+                return false;

+            }

+        } else {

+            return false;

+        }

+    }

+

+    /**

+     * Returns the sum of the hashcodes of the underlying tokens, an

+     * operation which is not sensitive to ordering.

+     *

+     * @return an <code>int</code> value

+     */

+    public int hashCode() {

+        int hash = 0;

+        for (int i = 0; i < tokens.length; i++) {

+            hash += tokens[i].hashCode();

+        }

+        return hash;

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Name.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Name.java
new file mode 100644
index 0000000..1294f1b
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Name.java
@@ -0,0 +1,90 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+import org.apache.axis2.util.XMLChar;

+

+/**

+ * Custom class for supporting XSD data type Name

+ * Name represents XML Names. The value space of Name is

+ * the set of all strings which match the Name production

+ * of [XML 1.0 (Second Edition)].

+ * The base type of Name is token.

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#Name">XML Schema 3.3.6</a>

+ */

+public class Name extends Token {

+

+    private static final long serialVersionUID = -8354594301737358441L;

+

+	public Name() {

+        super();

+    }

+

+    /**

+     * ctor for Name

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public Name(String stValue) throws IllegalArgumentException {

+        try {

+            setValue(stValue);

+        }

+        catch (IllegalArgumentException e) {

+            // recast normalizedString exception as token exception

+            throw new IllegalArgumentException(

+                 //Messages.getMessage("badNameType00") +

+                 "data=[" +stValue + "]");

+        }

+    }

+

+    /**

+     *

+     * validates the data and sets the value for the object.

+     * @param stValue String value

+     * @throws IllegalArgumentException if invalid format

+     */

+    public void setValue(String stValue) throws IllegalArgumentException {

+        if (!Name.isValid(stValue))

+            throw new IllegalArgumentException(

+               //Messages.getMessage("badNameType00") +

+               " data=[" + stValue + "]");

+        m_value = stValue;

+    }

+

+    /**

+     *

+     * validate the value against the xsd definition

+     *   Name    ::=    (Letter | '_' | ':') ( NameChar)*

+     * NameChar    ::=     Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender

+     */

+    //todo - Fix this

+    public static boolean isValid(String stValue) {

+        int scan;

+        boolean bValid = true;

+

+        for (scan=0; scan < stValue.length(); scan++) {

+          if (scan == 0){

+             bValid = XMLChar.isNameStart(stValue.charAt(scan));

+          }else{

+             bValid = XMLChar.isName(stValue.charAt(scan));

+          }

+          if (!bValid)

+              break;

+        }

+

+        return bValid;

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NegativeInteger.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NegativeInteger.java
new file mode 100644
index 0000000..68619dd
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NegativeInteger.java
@@ -0,0 +1,99 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+import java.io.ObjectStreamException;

+import java.math.BigInteger;

+import java.util.Random;

+

+/**

+ * Custom class for supporting primitive XSD data type negativeinteger

+ *

+ * negativeInteger is derived from nonPositiveInteger by setting the

+ * value of maxInclusive to be -1. This results in the standard 

+ * mathematical concept of the negative integers. The value space of 

+ * negativeInteger is the infinite set {...,-2,-1}. 

+ * The base type of negativeInteger is nonPositiveInteger. 

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#negativeInteger">XML Schema 3.3.15</a>

+ */

+public class NegativeInteger extends NonPositiveInteger {

+

+    private static final long serialVersionUID = -2295928715693639427L;

+    

+	public NegativeInteger(byte[] val) {

+        super(val);

+        checkValidity();

+    } // ctor

+

+    public NegativeInteger(int signum, byte[] magnitude) {

+        super(signum, magnitude);

+        checkValidity();

+    } // ctor

+

+    public NegativeInteger(int bitLength, int certainty, Random rnd) {

+        super(bitLength, certainty, rnd);

+        checkValidity();

+    } // ctor

+

+    public NegativeInteger(int numBits, Random rnd) {

+        super(numBits, rnd);

+        checkValidity();

+    } // ctor

+

+    public NegativeInteger(String val) {

+        super(val);

+        checkValidity();

+    }

+

+    public NegativeInteger(String val, int radix) {

+        super(val, radix);

+        checkValidity();

+    } // ctor

+

+    /**

+     * validate the value against the xsd definition

+     */

+    private BigInteger zero = new BigInteger("0");

+    private void checkValidity() {

+        if (compareTo(zero) >= 0) {

+            throw new NumberFormatException(

+                   // Messages.getMessage("badnegInt00") + 

+                    ":  " + this);

+        }

+    } // checkValidity

+

+    /**

+     * Work-around for http://developer.java.sun.com/developer/bugParade/bugs/4378370.html

+     * @return BigIntegerRep

+     * @throws java.io.ObjectStreamException

+     */ 

+    public Object writeReplace() throws ObjectStreamException {

+        return new BigIntegerRep(toByteArray());

+    }

+    

+    protected static class BigIntegerRep implements java.io.Serializable {

+        private static final long serialVersionUID = 1209618487031404110L;

+		private byte[] array;

+        protected BigIntegerRep(byte[] array) {

+            this.array = array;

+        }

+        protected Object readResolve() throws java.io.ObjectStreamException {

+            return new NegativeInteger(array);

+        }

+    }

+} // class NonNegativeInteger

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NonNegativeInteger.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NonNegativeInteger.java
new file mode 100644
index 0000000..9757c16
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NonNegativeInteger.java
@@ -0,0 +1,91 @@
+/*

+ * 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.axis2.databinding.types;

+

+import java.io.ObjectStreamException;

+import java.math.BigInteger;

+import java.util.Random;

+

+/**

+ * Custom class for supporting primitive XSD data type nonNegativeInteger

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger">XML Schema 3.3.20</a>

+ */

+public class NonNegativeInteger extends BigInteger {

+

+    private static final long serialVersionUID = -484577860351406054L;

+	public NonNegativeInteger(byte[] val) {

+        super(val);

+        checkValidity();

+    } // ctor

+

+    public NonNegativeInteger(int signum, byte[] magnitude) {

+        super(signum, magnitude);

+        checkValidity();

+    } // ctor

+

+    public NonNegativeInteger(int bitLength, int certainty, Random rnd) {

+        super(bitLength, certainty, rnd);

+        checkValidity();

+    } // ctor

+

+    public NonNegativeInteger(int numBits, Random rnd) {

+        super(numBits, rnd);

+        checkValidity();

+    } // ctor

+

+    public NonNegativeInteger(String val) {

+        super(val);

+        checkValidity();

+    }

+

+    public NonNegativeInteger(String val, int radix) {

+        super(val, radix);

+        checkValidity();

+    } // ctor

+

+    /**

+     * validate the value against the xsd definition

+     */

+    private BigInteger zero = new BigInteger("0");

+    private void checkValidity() {

+        if (compareTo(zero) < 0) {

+            throw new NumberFormatException(

+//                    Messages.getMessage("badNonNegInt00") +

+                     ":  " + this);

+        }

+    } // checkValidity

+    

+    /**

+     * Work-around for http://developer.java.sun.com/developer/bugParade/bugs/4378370.html

+     * @return BigIntegerRep

+     * @throws ObjectStreamException

+     */ 

+    public Object writeReplace() throws ObjectStreamException {

+        return new BigIntegerRep(toByteArray());

+    }

+    

+    protected static class BigIntegerRep implements java.io.Serializable {

+        private static final long serialVersionUID = -6135065605514678689L;

+		private byte[] array;

+        protected BigIntegerRep(byte[] array) {

+            this.array = array;

+        }

+        protected Object readResolve() throws java.io.ObjectStreamException {

+            return new NonNegativeInteger(array);

+        }

+    }

+} // class NonNegativeInteger

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NonPositiveInteger.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NonPositiveInteger.java
new file mode 100644
index 0000000..d2d3001
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NonPositiveInteger.java
@@ -0,0 +1,97 @@
+/*

+ * 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.axis2.databinding.types;

+

+import java.io.ObjectStreamException;

+import java.math.BigInteger;

+import java.util.Random;

+

+/**

+ * Custom class for supporting primitive XSD data type nonPositiveInteger

+ *

+ * nonPositiveInteger is derived from integer by setting the value of 

+ * maxInclusive to be 0. This results in the standard mathematical 

+ * concept of the non-positive integers. The value space of 

+ * nonPositiveInteger is the infinite set {...,-2,-1,0}. 

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger">XML Schema 3.3.14</a>

+ */

+public class NonPositiveInteger extends BigInteger {

+

+    private static final long serialVersionUID = -8609051961838117600L;

+    

+	public NonPositiveInteger(byte[] val) {

+        super(val);

+        checkValidity();

+    } // ctor

+

+    public NonPositiveInteger(int signum, byte[] magnitude) {

+        super(signum, magnitude);

+        checkValidity();

+    } // ctor

+

+    public NonPositiveInteger(int bitLength, int certainty, Random rnd) {

+        super(bitLength, certainty, rnd);

+        checkValidity();

+    } // ctor

+

+    public NonPositiveInteger(int numBits, Random rnd) {

+        super(numBits, rnd);

+        checkValidity();

+    } // ctor

+

+    public NonPositiveInteger(String val) {

+        super(val);

+        checkValidity();

+    }

+

+    public NonPositiveInteger(String val, int radix) {

+        super(val, radix);

+        checkValidity();

+    } // ctor

+

+    /**

+     * validate the value against the xsd definition

+     */

+    private BigInteger zero = new BigInteger("0");

+    private void checkValidity() {

+        if (compareTo(zero) > 0) {

+            throw new NumberFormatException(

+                    //Messages.getMessage("badNonPosInt00") +

+                     ":  " + this);

+        }

+    } // checkValidity

+

+    /**

+     * Work-around for http://developer.java.sun.com/developer/bugParade/bugs/4378370.html

+     * @return BigIntegerRep

+     * @throws java.io.ObjectStreamException

+     */ 

+    public Object writeReplace() throws ObjectStreamException {

+        return new BigIntegerRep(toByteArray());

+    }

+    

+    protected static class BigIntegerRep implements java.io.Serializable {

+        private static final long serialVersionUID = -3601357690365698517L;

+		private byte[] array;

+        protected BigIntegerRep(byte[] array) {

+            this.array = array;

+        }

+        protected Object readResolve() throws java.io.ObjectStreamException {

+            return new NonPositiveInteger(array);

+        }

+    }

+} // class NonPositiveInteger

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NormalizedString.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NormalizedString.java
new file mode 100644
index 0000000..d5dbcd8
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/NormalizedString.java
@@ -0,0 +1,102 @@
+/*
+ * 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.axis2.databinding.types;
+
+
+/**
+ * Custom class for supporting XSD data type NormalizedString.
+ * normalizedString represents white space normalized strings.
+ * The base type of normalizedString is string.
+ *
+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#normalizedString">XML Schema Part 2: Datatypes 3.3.1</a>
+ */
+public class NormalizedString implements java.io.Serializable {
+
+    private static final long serialVersionUID = -290878151870399401L;
+    
+	String m_value;   // JAX-RPC maps xsd:string to java.lang.String
+
+    public NormalizedString() {
+        super();
+    }
+
+    /**
+     *
+     * ctor for NormalizedString
+     * @param stValue is the String value
+     * @throws IllegalArgumentException if invalid format
+     */
+    public NormalizedString(String stValue) throws IllegalArgumentException {
+        setValue(stValue);
+    }
+
+    /**
+     *
+     * validates the data and sets the value for the object.
+     * @param stValue String value
+     * @throws IllegalArgumentException if invalid format
+     */
+    public void setValue(String stValue) throws IllegalArgumentException {
+        if (!NormalizedString.isValid(stValue))
+            throw new IllegalArgumentException(
+//               Messages.getMessage("badNormalizedString00") +
+               " data=[" + stValue + "]");
+        m_value = stValue;
+    }
+
+    public String toString(){
+        return m_value;
+    }
+
+    public int hashCode(){
+        return m_value.hashCode();
+    }
+
+    /**
+     *
+     * validate the value against the xsd definition for the object
+     *
+     * The value space of normalizedString is the set of strings that
+     * do not contain the carriage return (#xD), line feed (#xA) nor
+     * tab (#x9) characters. The lexical space of normalizedString is
+     * the set of strings that do not contain the carriage return (#xD)
+     * nor tab (#x9) characters.
+     *
+     * @param stValue the String to test
+     * @return Returns true if valid normalizedString.
+     */
+    public static boolean isValid(String stValue)  {
+        int scan;
+
+        for (scan = 0; scan < stValue.length(); scan++) {
+            char cDigit = stValue.charAt(scan);
+            switch (cDigit) {
+                case 0x09:
+                case 0x0A:
+                case 0x0D:
+                    return false;
+                default:
+                    break;
+            }
+        }
+        return true;
+    }
+
+    public boolean equals(Object object)  {
+        String s1 = object.toString();
+        return s1.equals(m_value);
+    }
+}
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Notation.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Notation.java
new file mode 100644
index 0000000..df92046
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Notation.java
@@ -0,0 +1,120 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+/**

+ * Custom class for supporting XSD data type NOTATION.

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-1/#element-notation">XML Schema Part 1: 3.12 Notation Declarations</a>

+ */

+

+public class Notation implements java.io.Serializable {

+	

+    private static final long serialVersionUID = 2393074651972192536L;

+    

+	NCName name;

+    URI publicURI;

+    URI systemURI;

+

+    public Notation() {

+    }

+

+    public Notation(NCName name, URI publicURI, URI systemURI) {

+        this.name = name;

+        this.publicURI = publicURI;

+        this.systemURI = systemURI;

+    }

+

+    public NCName getName() {

+        return name;

+    }

+

+    public void setName(NCName name) {

+        this.name = name;

+    }

+

+    public URI getPublic() {

+        return publicURI;

+    }

+

+    public void setPublic(URI publicURI) {

+        this.publicURI = publicURI;

+    }

+

+    public URI getSystem() {

+        return systemURI;

+    }

+

+    public void setSystem(URI systemURI) {

+        this.systemURI = systemURI;

+    }

+

+    public boolean equals(Object obj) {

+        if (obj == null || !(obj instanceof Notation))

+            return false;

+        Notation other = (Notation) obj;

+        if (name == null) {

+            if (other.name != null) {

+                return false;

+            }

+        } else if (!name.equals(other.name)) {

+            return false;

+        }

+        if (publicURI == null) {

+            if (other.publicURI != null) {

+                return false;

+            }

+        } else if (!publicURI.equals(other.publicURI)) {

+            return false;

+        }

+        if (systemURI == null) {

+            if (other.systemURI != null) {

+                return false;

+            }

+        } else if (!systemURI.equals(other.systemURI)) {

+            return false;

+        }

+        return true;

+    }

+

+    /**

+     * Returns the sum of the hashcodes of {name,publicURI,systemURI}

+     * for whichever properties in that set is non null.  This is

+     * consistent with the implementation of equals, as required by

+     * {@link java.lang.Object#hashCode() Object.hashCode}.

+     *

+     * @return an <code>int</code> value

+     */

+    public int hashCode() {

+        int hash = 0;

+        if (null != name) {

+            hash += name.hashCode();

+        }

+        if (null != publicURI) {

+            hash += publicURI.hashCode();

+        }

+        if (null != systemURI) {

+            hash += systemURI.hashCode();

+        }

+        return hash;

+    }

+

+    /**

+     * Note - A lot of code that depended on certain descriptions has been deleted from this class

+     */

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/PositiveInteger.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/PositiveInteger.java
new file mode 100644
index 0000000..55fe0e1
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/PositiveInteger.java
@@ -0,0 +1,97 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+import java.io.ObjectStreamException;

+import java.math.BigInteger;

+import java.util.Random;

+

+/**

+ * Custom class for supporting primitive XSD data type positiveInteger

+ *

+ * positiveInteger is derived from nonNegativeInteger by setting the value of minInclusive to be 1. 

+ * This results in the standard mathematical concept of the positive integer numbers. The value space

+ * of positiveInteger is the infinite set {1,2,...}. 

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#positiveInteger">XML Schema 3.3.25</a>

+ */

+public class PositiveInteger extends NonNegativeInteger {

+

+    private static final long serialVersionUID = -4562301423231920813L;

+    

+	public PositiveInteger(byte[] val) {

+        super(val);

+        checkValidity();

+    } // ctor

+

+    public PositiveInteger(int signum, byte[] magnitude) {

+        super(signum, magnitude);

+        checkValidity();

+    } // ctor

+

+    public PositiveInteger(int bitLength, int certainty, Random rnd) {

+        super(bitLength, certainty, rnd);

+        checkValidity();

+    } // ctor

+

+    public PositiveInteger(int numBits, Random rnd) {

+        super(numBits, rnd);

+        checkValidity();

+    } // ctor

+

+    public PositiveInteger(String val) {

+        super(val);

+        checkValidity();

+    }

+

+    public PositiveInteger(String val, int radix) {

+        super(val, radix);

+        checkValidity();

+    } // ctor

+

+    /**

+     * validate the value against the xsd definition

+     */

+    private BigInteger iMinInclusive = new BigInteger("1");

+    private void checkValidity() {

+        if (compareTo(iMinInclusive) < 0) {

+            throw new NumberFormatException(

+                    //Messages.getMessage("badposInt00")

+                    ":  " + this);

+        }

+    } // checkValidity

+

+    /**

+     * Work-around for http://developer.java.sun.com/developer/bugParade/bugs/4378370.html

+     * @return BigIntegerRep

+     * @throws java.io.ObjectStreamException

+     */ 

+    public Object writeReplace() throws ObjectStreamException {

+        return new BigIntegerRep(toByteArray());

+    }

+    

+    protected static class BigIntegerRep implements java.io.Serializable {

+        private static final long serialVersionUID = 1251664160936150499L;

+		private byte[] array;

+        protected BigIntegerRep(byte[] array) {

+            this.array = array;

+        }

+        protected Object readResolve() throws java.io.ObjectStreamException {

+            return new PositiveInteger(array);

+        }

+    }

+} // class NonNegativeInteger

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Time.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Time.java
new file mode 100644
index 0000000..e4fb893
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Time.java
@@ -0,0 +1,252 @@
+/*
+ * Copyright 2002-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.axis2.databinding.types;
+
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * Class that represents the xsd:time XML Schema type
+ */
+public class Time implements java.io.Serializable {
+	
+    private static final long serialVersionUID = -9022201555535589908L;
+
+	private Calendar _value;
+
+    /**
+     * a shared java.text.SimpleDateFormat instance used for parsing the basic
+     * component of the timestamp
+     */
+    private static SimpleDateFormat zulu =
+       new SimpleDateFormat("HH:mm:ss.SSS'Z'");
+
+    // We should always format dates in the GMT timezone
+    static {
+        zulu.setTimeZone(TimeZone.getTimeZone("GMT"));
+    }
+
+
+    /**
+     * Initializes with a Calender. Year, month and date are ignored.
+     */
+    public Time(Calendar value) {
+        this._value = value;
+        _value.set(0,0,0);      // ignore year, month, date
+    }
+
+    /**
+     * Converts a string formatted as HH:mm:ss[.SSS][+/-offset]
+     */
+    public Time(String value) throws NumberFormatException {
+        _value = makeValue(value);
+    }
+
+    /**
+     * Returns the time as a calendar. Ignores the year, month and date fields.
+     * @return Returns calendar value; may be null.
+     */
+    public Calendar getAsCalendar() {
+        return _value;
+    }
+
+    /**
+     * Sets the time; ignores year, month, date
+     * @param date
+     */
+    public void setTime(Calendar date) {
+        this._value = date;
+        _value.set(0,0,0);      // ignore year, month, date
+    }
+
+    /**
+     * Sets the time from a date instance.
+     * @param date
+     */
+    public void setTime(Date date) {
+        _value.setTime(date);
+        _value.set(0,0,0);      // ignore year, month, date
+    }
+
+    /**
+     * Utility function that parses xsd:time strings and returns a Date object
+     */
+    private Calendar makeValue(String source) throws NumberFormatException {
+        Calendar calendar = Calendar.getInstance();
+        Date date;
+
+        validateSource(source);
+
+        // convert what we have validated so far
+        date = ParseHoursMinutesSeconds(source);
+
+        int pos = 8;    // The "." in hh:mm:ss.sss
+
+        // parse optional milliseconds
+        if ( source != null ) {
+            if (pos < source.length() && source.charAt(pos)=='.') {
+                int milliseconds = 0;
+                int start = ++pos;
+                while (pos<source.length() &&
+                       Character.isDigit(source.charAt(pos))) {
+                    pos++;
+                }
+
+
+                String decimal=source.substring(start,pos);
+                if (decimal.length()==3) {
+                    milliseconds=Integer.parseInt(decimal);
+                } else if (decimal.length() < 3) {
+                    milliseconds=Integer.parseInt((decimal+"000")
+                                                  .substring(0,3));
+                } else {
+                    milliseconds=Integer.parseInt(decimal.substring(0,3));
+                    if (decimal.charAt(3)>='5') {
+                        ++milliseconds;
+                    }
+                }
+
+                // add milliseconds to the current date
+                date.setTime(date.getTime()+milliseconds);
+            }
+
+            // parse optional timezone
+            if (pos+5 < source.length() &&
+                (source.charAt(pos)=='+' || (source.charAt(pos)=='-'))) {
+                    if (!Character.isDigit(source.charAt(pos+1)) ||
+                        !Character.isDigit(source.charAt(pos+2)) ||
+                        source.charAt(pos+3) != ':'              ||
+                        !Character.isDigit(source.charAt(pos+4)) ||
+                        !Character.isDigit(source.charAt(pos+5)))
+                    {
+                        throw new NumberFormatException();
+                                //Messages.getMessage("badTimezone00"));
+                    }
+
+                    int hours = (source.charAt(pos+1)-'0')*10
+                        +source.charAt(pos+2)-'0';
+                    int mins  = (source.charAt(pos+4)-'0')*10
+                        +source.charAt(pos+5)-'0';
+                    int milliseconds = (hours*60+mins)*60*1000;
+
+                    // subtract milliseconds from current date to obtain GMT
+                    if (source.charAt(pos)=='+') {
+                        milliseconds=-milliseconds;
+                    }
+                    date.setTime(date.getTime()+milliseconds);
+                    pos+=6;
+            }
+
+            if (pos < source.length() && source.charAt(pos)=='Z') {
+                pos++;
+                calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+            }
+
+            if (pos < source.length()) {
+                throw new NumberFormatException();
+                        //Messages.getMessage("badChars00"));
+            }
+        }
+
+        calendar.setTime(date);
+        calendar.set(0,0,0);    // ignore year, month, date
+
+        return calendar;
+    }
+
+    /**
+     * Parses the hours, minutes and seconds of a string, by handing it off to
+     * the java runtime.
+     * The relevant code returns null if a null string is passed in, so this
+     * code may return a null date in response.
+     * @param source
+     * @return Returns Date.
+     * @throws NumberFormatException in the event of trouble
+     */
+    private static Date ParseHoursMinutesSeconds(String source) {
+        Date date;
+        try {
+            synchronized (zulu) {
+                String fulltime = source == null ? null :
+                                                    (source.substring(0,8)+".000Z");
+                date = zulu.parse(fulltime);
+            }
+        } catch (Exception e) {
+            throw new NumberFormatException(e.toString());
+        }
+        return date;
+    }
+
+    /**
+     * Validates the source.
+     * @param source
+     */
+    private void validateSource(String source) {
+        // validate fixed portion of format
+        if ( source != null ) {
+            if (source.charAt(2) != ':' || source.charAt(5) != ':') {
+                throw new NumberFormatException();
+                        //Messages.getMessage("badTime00"));
+            }
+            if (source.length() < 8) {
+                throw new NumberFormatException();
+                        //Messages.getMessage("badTime00"));
+            }
+        }
+    }
+
+    /**
+     * Returns the time as it would be in GMT. This is accurate to the
+     * seconds. Milliseconds probably gets lost.
+     * @return Returns String.
+     */
+    public String toString() {
+        if(_value==null) {
+            return "unassigned Time";
+        }
+        synchronized (zulu) {
+            return zulu.format(_value.getTime());
+        }
+
+    }
+
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (!(obj instanceof Time)) return false;
+        Time other = (Time) obj;
+        if (this == obj) return true;
+
+        boolean _equals;
+        _equals = ((_value == null && other._value == null) ||
+                (_value != null &&
+                        _value.getTime().equals(other._value.getTime())));
+
+        return _equals;
+
+    }
+
+    /**
+     * Returns the hashcode of the underlying calendar.
+     *
+     * @return Returns an <code>int</code> value.
+     */
+    public int hashCode() {
+        return _value == null ? 0 : _value.hashCode();
+    }
+}
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Token.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Token.java
new file mode 100644
index 0000000..4fa5e4b
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Token.java
@@ -0,0 +1,109 @@
+/*

+ * 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.axis2.databinding.types;

+

+/**

+ * Custom class for supporting primitive XSD data type Token.

+ * token represents tokenized strings.

+ * The base type of token is normalizedString.

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#token">XML Schema 3.3.2</a>

+ */

+public class Token extends NormalizedString {

+

+    private static final long serialVersionUID = -7370524740514465467L;

+

+	public Token() {

+        super();

+    }

+

+    /**

+     * ctor for Token

+     * @exception IllegalArgumentException will be thrown if validation fails

+     */

+    public Token(String stValue) throws IllegalArgumentException {

+        try {

+            setValue(stValue);

+        }

+        catch (IllegalArgumentException e) {

+            // recast normalizedString exception as token exception

+            throw new IllegalArgumentException(

+                    //Messages.getMessage("badToken00") +

+                     "data=[" + stValue + "]");

+        }

+    }

+

+    /**

+     *

+     * validate the value against the xsd definition

+     *

+     * The value space of token is the set of strings that do not

+     * contain the line feed (#xA) nor tab (#x9) characters, that

+     * have no leading or trailing spaces (#x20) and that have no

+     * internal sequences of two or more spaces. The lexical space

+     * of token is the set of strings that do not contain the line

+     * feed (#xA) nor tab (#x9) characters, that have no leading or

+     * trailing spaces (#x20) and that have no internal sequences of two

+     * or more spaces.

+     */

+    public static boolean isValid(String stValue) {

+        int scan;

+        // check to see if we have a string to review

+        if (  (stValue == null) || (stValue.length() == 0)  )

+            return true;

+            

+        // no leading space

+        if (stValue.charAt(0) == 0x20)

+            return false;

+

+        // no trail space

+        if (stValue.charAt(stValue.length() - 1) == 0x20)

+            return false;

+

+        for (scan=0; scan < stValue.length(); scan++) {

+            char cDigit = stValue.charAt(scan);

+            switch (cDigit) {

+                case 0x09:

+                case 0x0A:

+                    return false;

+                case 0x20:

+                   // no doublspace

+                    if (scan+1 < stValue.length())

+                        if (stValue.charAt(scan + 1) == 0x20) {

+                            return false;

+                        }

+                default:

+                    break;

+            }

+        }

+        return true;

+    }

+    

+    /**

+     *

+     * validates the data and sets the value for the object.

+     * @param stValue String value

+     * @throws IllegalArgumentException if invalid format

+     */

+    public void setValue(String stValue) throws IllegalArgumentException {

+        if (!Token.isValid(stValue))

+            throw new IllegalArgumentException(

+               //Messages.getMessage("badToken00") +

+               " data=[" + stValue + "]");

+        m_value = stValue;

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/URI.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/URI.java
new file mode 100644
index 0000000..8b6dcdc
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/URI.java
@@ -0,0 +1,1952 @@
+/*

+ * Copyright 1999-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.axis2.databinding.types;

+

+import java.io.IOException;

+import java.io.Serializable;

+

+/**********************************************************************

+* <i>Axis Note: This class was 'borrowed' from Xerces 2.0.2</i>

+* <p>

+* A class to represent a Uniform Resource Identifier (URI). This class

+* is designed to handle the parsing of URIs and provide access to

+* the various components (scheme, host, port, userinfo, path, query

+* string and fragment) that may constitute a URI.

+* <p>

+* Parsing of a URI specification is done according to the URI

+* syntax described in 

+* <a href="http://www.ietf.org/rfc/rfc2396.txt?number=2396">RFC 2396</a>,

+* and amended by

+* <a href="http://www.ietf.org/rfc/rfc2732.txt?number=2732">RFC 2732</a>. 

+* <p>

+* Every absolute URI consists of a scheme, followed by a colon (':'), 

+* followed by a scheme-specific part. For URIs that follow the 

+* "generic URI" syntax, the scheme-specific part begins with two 

+* slashes ("//") and may be followed by an authority segment (comprised 

+* of user information, host, and port), path segment, query segment 

+* and fragment. Note that RFC 2396 no longer specifies the use of the 

+* parameters segment and excludes the "user:password" syntax as part of 

+* the authority segment. If "user:password" appears in a URI, the entire 

+* user/password string is stored as userinfo.

+* <p>

+* For URIs that do not follow the "generic URI" syntax (e.g. mailto),

+* the entire scheme-specific part is treated as the "path" portion

+* of the URI.

+* <p>

+* Note that, unlike the java.net.URL class, this class does not provide

+* any built-in network access functionality nor does it provide any

+* scheme-specific functionality (for example, it does not know a

+* default port for a specific scheme). Rather, it only knows the

+* grammar and basic set of operations that can be applied to a URI.

+*

+**********************************************************************/

+ public class URI implements Serializable {

+

+  private static final long serialVersionUID = 2172306044361227627L;

+

+

+/*******************************************************************

+  * MalformedURIExceptions are thrown in the process of building a URI

+  * or setting fields on a URI when an operation would result in an

+  * invalid URI specification.

+  *

+  ********************************************************************/

+  public static class MalformedURIException extends IOException {

+

+   private static final long serialVersionUID = -8488692760975768757L;

+

+/******************************************************************

+    * Constructs a <code>MalformedURIException</code> with no specified

+    * detail message.

+    ******************************************************************/

+    public MalformedURIException() {

+      super();

+    }

+

+    /*****************************************************************

+    * Constructs a <code>MalformedURIException</code> with the

+    * specified detail message.

+    *

+    * @param p_msg the detail message.

+    ******************************************************************/

+    public MalformedURIException(String p_msg) {

+      super(p_msg);

+    }

+  }

+

+  private static final byte [] fgLookupTable = new byte[128];

+  

+  /**

+   * Character Classes

+   */

+  

+  /** reserved characters ;/?:@&=+$,[] */

+  //RFC 2732 added '[' and ']' as reserved characters

+  private static final int RESERVED_CHARACTERS = 0x01;

+  

+  /** URI punctuation mark characters: -_.!~*'() - these, combined with

+      alphanumerics, constitute the "unreserved" characters */

+  private static final int MARK_CHARACTERS = 0x02;

+  

+  /** scheme can be composed of alphanumerics and these characters: +-. */

+  private static final int SCHEME_CHARACTERS = 0x04;

+  

+  /** userinfo can be composed of unreserved, escaped and these

+      characters: ;:&=+$, */

+  private static final int USERINFO_CHARACTERS = 0x08;

+  

+  /** ASCII letter characters */

+  private static final int ASCII_ALPHA_CHARACTERS = 0x10;

+  

+  /** ASCII digit characters */

+  private static final int ASCII_DIGIT_CHARACTERS = 0x20;

+  

+  /** ASCII hex characters */

+  private static final int ASCII_HEX_CHARACTERS = 0x40;

+  

+  /** Path characters */

+  private static final int PATH_CHARACTERS = 0x80;

+

+  /** Mask for alpha-numeric characters */

+  private static final int MASK_ALPHA_NUMERIC = ASCII_ALPHA_CHARACTERS | ASCII_DIGIT_CHARACTERS;

+  

+  /** Mask for unreserved characters */

+  private static final int MASK_UNRESERVED_MASK = MASK_ALPHA_NUMERIC | MARK_CHARACTERS;

+  

+  /** Mask for URI allowable characters except for % */

+  private static final int MASK_URI_CHARACTER = MASK_UNRESERVED_MASK | RESERVED_CHARACTERS;

+  

+  /** Mask for scheme characters */

+  private static final int MASK_SCHEME_CHARACTER = MASK_ALPHA_NUMERIC | SCHEME_CHARACTERS;

+  

+  /** Mask for userinfo characters */

+  private static final int MASK_USERINFO_CHARACTER = MASK_UNRESERVED_MASK | USERINFO_CHARACTERS;

+  

+  /** Mask for path characters */

+  private static final int MASK_PATH_CHARACTER = MASK_UNRESERVED_MASK | PATH_CHARACTERS; 

+

+  static {

+      // Add ASCII Digits and ASCII Hex Numbers

+      for (int i = '0'; i <= '9'; ++i) {

+          fgLookupTable[i] |= ASCII_DIGIT_CHARACTERS | ASCII_HEX_CHARACTERS;

+      }

+

+      // Add ASCII Letters and ASCII Hex Numbers

+      for (int i = 'A'; i <= 'F'; ++i) {

+          fgLookupTable[i] |= ASCII_ALPHA_CHARACTERS | ASCII_HEX_CHARACTERS;

+          fgLookupTable[i+0x00000020] |= ASCII_ALPHA_CHARACTERS | ASCII_HEX_CHARACTERS;

+      }

+

+      // Add ASCII Letters

+      for (int i = 'G'; i <= 'Z'; ++i) {

+          fgLookupTable[i] |= ASCII_ALPHA_CHARACTERS;

+          fgLookupTable[i+0x00000020] |= ASCII_ALPHA_CHARACTERS;

+      }

+

+      // Add Reserved Characters

+      fgLookupTable[';'] |= RESERVED_CHARACTERS;

+      fgLookupTable['/'] |= RESERVED_CHARACTERS;

+      fgLookupTable['?'] |= RESERVED_CHARACTERS;

+      fgLookupTable[':'] |= RESERVED_CHARACTERS;

+      fgLookupTable['@'] |= RESERVED_CHARACTERS;

+      fgLookupTable['&'] |= RESERVED_CHARACTERS;

+      fgLookupTable['='] |= RESERVED_CHARACTERS;

+      fgLookupTable['+'] |= RESERVED_CHARACTERS;

+      fgLookupTable['$'] |= RESERVED_CHARACTERS;

+      fgLookupTable[','] |= RESERVED_CHARACTERS;

+      fgLookupTable['['] |= RESERVED_CHARACTERS;

+      fgLookupTable[']'] |= RESERVED_CHARACTERS;

+

+      // Add Mark Characters

+      fgLookupTable['-'] |= MARK_CHARACTERS;

+      fgLookupTable['_'] |= MARK_CHARACTERS;

+      fgLookupTable['.'] |= MARK_CHARACTERS;

+      fgLookupTable['!'] |= MARK_CHARACTERS;

+      fgLookupTable['~'] |= MARK_CHARACTERS;

+      fgLookupTable['*'] |= MARK_CHARACTERS;

+      fgLookupTable['\''] |= MARK_CHARACTERS;

+      fgLookupTable['('] |= MARK_CHARACTERS;

+      fgLookupTable[')'] |= MARK_CHARACTERS;

+

+      // Add Scheme Characters

+      fgLookupTable['+'] |= SCHEME_CHARACTERS;

+      fgLookupTable['-'] |= SCHEME_CHARACTERS;

+      fgLookupTable['.'] |= SCHEME_CHARACTERS;

+

+      // Add Userinfo Characters

+      fgLookupTable[';'] |= USERINFO_CHARACTERS;

+      fgLookupTable[':'] |= USERINFO_CHARACTERS;

+      fgLookupTable['&'] |= USERINFO_CHARACTERS;

+      fgLookupTable['='] |= USERINFO_CHARACTERS;

+      fgLookupTable['+'] |= USERINFO_CHARACTERS;

+      fgLookupTable['$'] |= USERINFO_CHARACTERS;

+      fgLookupTable[','] |= USERINFO_CHARACTERS;

+      

+      // Add Path Characters

+      fgLookupTable[';'] |= PATH_CHARACTERS;

+      fgLookupTable['/'] |= PATH_CHARACTERS;

+      fgLookupTable[':'] |= PATH_CHARACTERS;

+      fgLookupTable['@'] |= PATH_CHARACTERS;

+      fgLookupTable['&'] |= PATH_CHARACTERS;

+      fgLookupTable['='] |= PATH_CHARACTERS;

+      fgLookupTable['+'] |= PATH_CHARACTERS;

+      fgLookupTable['$'] |= PATH_CHARACTERS;

+      fgLookupTable[','] |= PATH_CHARACTERS;

+  }

+

+  /** Stores the scheme (usually the protocol) for this URI. */

+  private String m_scheme = null;

+

+  /** If specified, stores the userinfo for this URI; otherwise null */

+  private String m_userinfo = null;

+

+  /** If specified, stores the host for this URI; otherwise null */

+  private String m_host = null;

+

+  /** If specified, stores the port for this URI; otherwise -1 */

+  private int m_port = -1;

+  

+  /** If specified, stores the registry based authority for this URI; otherwise -1 */

+  private String m_regAuthority = null;

+

+  /** If specified, stores the path for this URI; otherwise null */

+  private String m_path = null;

+

+  /** If specified, stores the query string for this URI; otherwise

+      null.  */

+  private String m_queryString = null;

+

+  /** If specified, stores the fragment for this URI; otherwise null */

+  private String m_fragment;

+

+  /**

+  * Construct a new and uninitialized URI.

+  */

+  public URI() {

+  }

+

+ /**

+  * Construct a new URI from another URI. All fields for this URI are

+  * set equal to the fields of the URI passed in.

+  *

+  * @param p_other the URI to copy (cannot be null)

+  */

+  public URI(URI p_other) {

+    initialize(p_other);

+  }

+

+ /**

+  * Construct a new URI from a URI specification string. If the

+  * specification follows the "generic URI" syntax, (two slashes

+  * following the first colon), the specification will be parsed

+  * accordingly - setting the scheme, userinfo, host,port, path, query

+  * string and fragment fields as necessary. If the specification does

+  * not follow the "generic URI" syntax, the specification is parsed

+  * into a scheme and scheme-specific part (stored as the path) only.

+  *

+  * @param p_uriSpec the URI specification string (cannot be null or

+  *                  empty)

+  *

+  * @exception MalformedURIException if p_uriSpec violates any syntax

+  *                                   rules

+  */

+  public URI(String p_uriSpec) throws MalformedURIException {

+    this((URI)null, p_uriSpec);

+  }

+

+ /**

+  * Construct a new URI from a base URI and a URI specification string.

+  * The URI specification string may be a relative URI.

+  *

+  * @param p_base the base URI (cannot be null if p_uriSpec is null or

+  *               empty)

+  * @param p_uriSpec the URI specification string (cannot be null or

+  *                  empty if p_base is null)

+  *

+  * @exception MalformedURIException if p_uriSpec violates any syntax

+  *                                  rules

+  */

+  public URI(URI p_base, String p_uriSpec) throws MalformedURIException {

+    initialize(p_base, p_uriSpec);

+  }

+

+ /**

+  * Construct a new URI that does not follow the generic URI syntax.

+  * Only the scheme and scheme-specific part (stored as the path) are

+  * initialized.

+  *

+  * @param p_scheme the URI scheme (cannot be null or empty)

+  * @param p_schemeSpecificPart the scheme-specific part (cannot be

+  *                             null or empty)

+  *

+  * @exception MalformedURIException if p_scheme violates any

+  *                                  syntax rules

+  */

+  public URI(String p_scheme, String p_schemeSpecificPart)

+             throws MalformedURIException {

+    if (p_scheme == null || p_scheme.trim().length() == 0) {

+      throw new MalformedURIException(

+            "Cannot construct URI with null/empty scheme!");

+    }

+    if (p_schemeSpecificPart == null ||

+        p_schemeSpecificPart.trim().length() == 0) {

+      throw new MalformedURIException(

+          "Cannot construct URI with null/empty scheme-specific part!");

+    }

+    setScheme(p_scheme);

+    setPath(p_schemeSpecificPart);

+  }

+

+ /**

+  * Construct a new URI that follows the generic URI syntax from its

+  * component parts. Each component is validated for syntax and some

+  * basic semantic checks are performed as well.  See the individual

+  * setter methods for specifics.

+  *

+  * @param p_scheme the URI scheme (cannot be null or empty)

+  * @param p_host the hostname, IPv4 address or IPv6 reference for the URI

+  * @param p_path the URI path - if the path contains '?' or '#',

+  *               then the query string and/or fragment will be

+  *               set from the path; however, if the query and

+  *               fragment are specified both in the path and as

+  *               separate parameters, an exception is thrown

+  * @param p_queryString the URI query string (cannot be specified

+  *                      if path is null)

+  * @param p_fragment the URI fragment (cannot be specified if path

+  *                   is null)

+  *

+  * @exception MalformedURIException if any of the parameters violates

+  *                                  syntax rules or semantic rules

+  */

+  public URI(String p_scheme, String p_host, String p_path,

+             String p_queryString, String p_fragment)

+         throws MalformedURIException {

+    this(p_scheme, null, p_host, -1, p_path, p_queryString, p_fragment);

+  }

+

+ /**

+  * Construct a new URI that follows the generic URI syntax from its

+  * component parts. Each component is validated for syntax and some

+  * basic semantic checks are performed as well.  See the individual

+  * setter methods for specifics.

+  *

+  * @param p_scheme the URI scheme (cannot be null or empty)

+  * @param p_userinfo the URI userinfo (cannot be specified if host

+  *                   is null)

+  * @param p_host the hostname, IPv4 address or IPv6 reference for the URI

+  * @param p_port the URI port (may be -1 for "unspecified"; cannot

+  *               be specified if host is null)

+  * @param p_path the URI path - if the path contains '?' or '#',

+  *               then the query string and/or fragment will be

+  *               set from the path; however, if the query and

+  *               fragment are specified both in the path and as

+  *               separate parameters, an exception is thrown

+  * @param p_queryString the URI query string (cannot be specified

+  *                      if path is null)

+  * @param p_fragment the URI fragment (cannot be specified if path

+  *                   is null)

+  *

+  * @exception MalformedURIException if any of the parameters violates

+  *                                  syntax rules or semantic rules

+  */

+  public URI(String p_scheme, String p_userinfo,

+             String p_host, int p_port, String p_path,

+             String p_queryString, String p_fragment)

+         throws MalformedURIException {

+    if (p_scheme == null || p_scheme.trim().length() == 0) {

+      throw new MalformedURIException("Scheme is required!");

+    }

+

+    if (p_host == null) {

+      if (p_userinfo != null) {

+        throw new MalformedURIException(

+             "Userinfo may not be specified if host is not specified!");

+      }

+      if (p_port != -1) {

+        throw new MalformedURIException(

+             "Port may not be specified if host is not specified!");

+      }

+    }

+

+    if (p_path != null) {

+      if (p_path.indexOf('?') != -1 && p_queryString != null) {

+        throw new MalformedURIException(

+          "Query string cannot be specified in path and query string!");

+      }

+

+      if (p_path.indexOf('#') != -1 && p_fragment != null) {

+        throw new MalformedURIException(

+          "Fragment cannot be specified in both the path and fragment!");

+      }

+    }

+

+    setScheme(p_scheme);

+    setHost(p_host);

+    setPort(p_port);

+    setUserinfo(p_userinfo);

+    setPath(p_path);

+    setQueryString(p_queryString);

+    setFragment(p_fragment);

+  }

+

+ /**

+  * Initialize all fields of this URI from another URI.

+  *

+  * @param p_other the URI to copy (cannot be null)

+  */

+  private void initialize(URI p_other) {

+    m_scheme = p_other.getScheme();

+    m_userinfo = p_other.getUserinfo();

+    m_host = p_other.getHost();

+    m_port = p_other.getPort();

+    m_regAuthority = p_other.getRegBasedAuthority();

+    m_path = p_other.getPath();

+    m_queryString = p_other.getQueryString();

+    m_fragment = p_other.getFragment();

+  }

+

+ /**

+  * Initializes this URI from a base URI and a URI specification string.

+  * See RFC 2396 Section 4 and Appendix B for specifications on parsing

+  * the URI and Section 5 for specifications on resolving relative URIs

+  * and relative paths.

+  *

+  * @param p_base the base URI (may be null if p_uriSpec is an absolute

+  *               URI)

+  * @param p_uriSpec the URI spec string which may be an absolute or

+  *                  relative URI (can only be null/empty if p_base

+  *                  is not null)

+  *

+  * @exception MalformedURIException if p_base is null and p_uriSpec

+  *                                  is not an absolute URI or if

+  *                                  p_uriSpec violates syntax rules

+  */

+  private void initialize(URI p_base, String p_uriSpec)

+                         throws MalformedURIException {

+      

+    String uriSpec = p_uriSpec;

+    int uriSpecLen = (uriSpec != null) ? uriSpec.length() : 0;

+    

+    if (p_base == null && uriSpecLen == 0) {

+      throw new MalformedURIException(

+                  "Cannot initialize URI with empty parameters.");

+    }

+

+    // just make a copy of the base if spec is empty

+    if (uriSpecLen == 0) {

+      initialize(p_base);

+      return;

+    }

+

+    int index = 0;

+

+    // Check for scheme, which must be before '/', '?' or '#'. Also handle

+    // names with DOS drive letters ('D:'), so 1-character schemes are not

+    // allowed.

+    int colonIdx = uriSpec.indexOf(':');

+    if (colonIdx != -1) {

+        final int searchFrom = colonIdx - 1;

+        // search backwards starting from character before ':'.

+        int slashIdx = uriSpec.lastIndexOf('/', searchFrom);

+        int queryIdx = uriSpec.lastIndexOf('?', searchFrom);

+        int fragmentIdx = uriSpec.lastIndexOf('#', searchFrom);

+       

+        if (colonIdx < 2 || slashIdx != -1 || 

+            queryIdx != -1 || fragmentIdx != -1) {

+            // A standalone base is a valid URI according to spec

+            if (colonIdx == 0 || (p_base == null && fragmentIdx != 0)) {

+                throw new MalformedURIException("No scheme found in URI.");

+            }

+        }

+        else {

+            initializeScheme(uriSpec);

+            index = m_scheme.length()+1;

+            

+            // Neither 'scheme:' or 'scheme:#fragment' are valid URIs.

+            if (colonIdx == uriSpecLen - 1 || uriSpec.charAt(colonIdx+1) == '#') {

+                throw new MalformedURIException("Scheme specific part cannot be empty.");    

+            }

+        }

+    }

+    else if (p_base == null && uriSpec.indexOf('#') != 0) {

+        throw new MalformedURIException("No scheme found in URI.");    

+    }

+

+    // Two slashes means we may have authority, but definitely means we're either

+    // matching net_path or abs_path. These two productions are ambiguous in that

+    // every net_path (except those containing an IPv6Reference) is an abs_path. 

+    // RFC 2396 resolves this ambiguity by applying a greedy left most matching rule. 

+    // Try matching net_path first, and if that fails we don't have authority so 

+    // then attempt to match abs_path.

+    //

+    // net_path = "//" authority [ abs_path ]

+    // abs_path = "/"  path_segments

+    if (((index+1) < uriSpecLen) &&

+        (uriSpec.charAt(index) == '/' && uriSpec.charAt(index+1) == '/')) {

+      index += 2;

+      int startPos = index;

+

+      // Authority will be everything up to path, query or fragment

+      char testChar = '\0';

+      while (index < uriSpecLen) {

+        testChar = uriSpec.charAt(index);

+        if (testChar == '/' || testChar == '?' || testChar == '#') {

+          break;

+        }

+        index++;

+      }

+

+      // Attempt to parse authority. If the section is an empty string

+      // this is a valid server based authority, so set the host to this

+      // value.

+      if (index > startPos) {

+        // If we didn't find authority we need to back up. Attempt to

+        // match against abs_path next.

+        if (!initializeAuthority(uriSpec.substring(startPos, index))) {

+          index = startPos - 2;

+        }

+      }

+      else {

+        m_host = "";

+      }

+    }

+

+    initializePath(uriSpec, index);

+

+    // Resolve relative URI to base URI - see RFC 2396 Section 5.2

+    // In some cases, it might make more sense to throw an exception

+    // (when scheme is specified is the string spec and the base URI

+    // is also specified, for example), but we're just following the

+    // RFC specifications

+    if (p_base != null) {

+

+      // check to see if this is the current doc - RFC 2396 5.2 #2

+      // note that this is slightly different from the RFC spec in that

+      // we don't include the check for query string being null

+      // - this handles cases where the urispec is just a query

+      // string or a fragment (e.g. "?y" or "#s") -

+      // see <http://www.ics.uci.edu/~fielding/url/test1.html> which

+      // identified this as a bug in the RFC

+      if (m_path.length() == 0 && m_scheme == null &&

+          m_host == null && m_regAuthority == null) {

+        m_scheme = p_base.getScheme();

+        m_userinfo = p_base.getUserinfo();

+        m_host = p_base.getHost();

+        m_port = p_base.getPort();

+        m_regAuthority = p_base.getRegBasedAuthority();

+        m_path = p_base.getPath();

+

+        if (m_queryString == null) {

+          m_queryString = p_base.getQueryString();

+        }

+        return;

+      }

+

+      // check for scheme - RFC 2396 5.2 #3

+      // if we found a scheme, it means absolute URI, so we're done

+      if (m_scheme == null) {

+        m_scheme = p_base.getScheme();

+      }

+      else {

+        return;

+      }

+

+      // check for authority - RFC 2396 5.2 #4

+      // if we found a host, then we've got a network path, so we're done

+      if (m_host == null && m_regAuthority == null) {

+        m_userinfo = p_base.getUserinfo();

+        m_host = p_base.getHost();

+        m_port = p_base.getPort();

+        m_regAuthority = p_base.getRegBasedAuthority();

+      }

+      else {

+        return;

+      }

+

+      // check for absolute path - RFC 2396 5.2 #5

+      if (m_path.length() > 0 &&

+          m_path.startsWith("/")) {

+        return;

+      }

+

+      // if we get to this point, we need to resolve relative path

+      // RFC 2396 5.2 #6

+      String path = "";

+      String basePath = p_base.getPath();

+

+      // 6a - get all but the last segment of the base URI path

+      if (basePath != null && basePath.length() > 0) {

+        int lastSlash = basePath.lastIndexOf('/');

+        if (lastSlash != -1) {

+          path = basePath.substring(0, lastSlash+1);

+        }

+      }

+      else if (m_path.length() > 0) {

+          path = "/";

+      }

+

+      // 6b - append the relative URI path

+      path = path.concat(m_path);

+

+      // 6c - remove all "./" where "." is a complete path segment

+      index = -1;

+      while ((index = path.indexOf("/./")) != -1) {

+        path = path.substring(0, index+1).concat(path.substring(index+3));

+      }

+

+      // 6d - remove "." if path ends with "." as a complete path segment

+      if (path.endsWith("/.")) {

+        path = path.substring(0, path.length()-1);

+      }

+

+      // 6e - remove all "<segment>/../" where "<segment>" is a complete

+      // path segment not equal to ".."

+      index = 1;

+      int segIndex = -1;

+      String tempString = null;

+

+      while ((index = path.indexOf("/../", index)) > 0) {

+        tempString = path.substring(0, path.indexOf("/../"));

+        segIndex = tempString.lastIndexOf('/');

+        if (segIndex != -1) {

+          if (!tempString.substring(segIndex).equals("..")) {

+            path = path.substring(0, segIndex+1).concat(path.substring(index+4));

+            index = segIndex;

+          }

+          else

+            index += 4;

+        }

+        else

+          index += 4;

+      }

+

+      // 6f - remove ending "<segment>/.." where "<segment>" is a

+      // complete path segment

+      if (path.endsWith("/..")) {

+        tempString = path.substring(0, path.length()-3);

+        segIndex = tempString.lastIndexOf('/');

+        if (segIndex != -1) {

+          path = path.substring(0, segIndex+1);

+        }

+      }

+      m_path = path;

+    }

+  }

+

+ /**

+  * Initialize the scheme for this URI from a URI string spec.

+  *

+  * @param p_uriSpec the URI specification (cannot be null)

+  *

+  * @exception MalformedURIException if URI does not have a conformant

+  *                                  scheme

+  */

+  private void initializeScheme(String p_uriSpec)

+                 throws MalformedURIException {

+    int uriSpecLen = p_uriSpec.length();

+    int index = 0;

+    String scheme = null;

+    char testChar = '\0';

+

+    while (index < uriSpecLen) {

+      testChar = p_uriSpec.charAt(index);

+      if (testChar == ':' || testChar == '/' ||

+          testChar == '?' || testChar == '#') {

+        break;

+      }

+      index++;

+    }

+    scheme = p_uriSpec.substring(0, index);

+

+    if (scheme.length() == 0) {

+      throw new MalformedURIException("No scheme found in URI.");

+    }

+    else {

+      setScheme(scheme);

+    }

+  }

+

+ /**

+  * Initialize the authority (either server or registry based)

+  * for this URI from a URI string spec.

+  *

+  * @param p_uriSpec the URI specification (cannot be null)

+  * 

+  * @return true if the given string matched server or registry

+  * based authority

+  */

+  private boolean initializeAuthority(String p_uriSpec) {

+    

+    int index = 0;

+    int start = 0;

+    int end = p_uriSpec.length();

+

+    char testChar = '\0';

+    String userinfo = null;

+

+    // userinfo is everything up to @

+    if (p_uriSpec.indexOf('@', start) != -1) {

+      while (index < end) {

+        testChar = p_uriSpec.charAt(index);

+        if (testChar == '@') {

+          break;

+        }

+        index++;

+      }

+      userinfo = p_uriSpec.substring(start, index);

+      index++;

+    }

+

+    // host is everything up to last ':', or up to 

+    // and including ']' if followed by ':'.

+    String host = null;

+    start = index;

+    boolean hasPort = false;

+    if (index < end) {

+      if (p_uriSpec.charAt(start) == '[') {

+          int bracketIndex = p_uriSpec.indexOf(']', start);

+          index = (bracketIndex != -1) ? bracketIndex : end;

+          if (index+1 < end && p_uriSpec.charAt(index+1) == ':') {

+            ++index;

+            hasPort = true;

+          }

+          else {

+            index = end;

+          }

+      }

+      else {

+          int colonIndex = p_uriSpec.lastIndexOf(':', end);

+          index = (colonIndex > start) ? colonIndex : end;

+          hasPort = (index != end);

+      }

+    }

+    host = p_uriSpec.substring(start, index);

+    int port = -1;

+    if (host.length() > 0) {

+      // port

+      if (hasPort) {

+        index++;

+        start = index;

+        while (index < end) {

+          index++;

+        }

+        String portStr = p_uriSpec.substring(start, index);

+        if (portStr.length() > 0) {

+          // REVISIT: Remove this code.

+          /** for (int i = 0; i < portStr.length(); i++) {

+            if (!isDigit(portStr.charAt(i))) {

+              throw new MalformedURIException(

+                   portStr +

+                   " is invalid. Port should only contain digits!");

+            }

+          }**/

+          // REVISIT: Remove this code.

+          // Store port value as string instead of integer.

+          try {

+            port = Integer.parseInt(portStr);

+            if (port == -1) --port;

+          }

+          catch (NumberFormatException nfe) {

+            port = -2;

+          }

+        }

+      }

+    }

+    

+    if (isValidServerBasedAuthority(host, port, userinfo)) {

+      m_host = host;

+      m_port = port;

+      m_userinfo = userinfo;

+      return true;

+    }

+    // Note: Registry based authority is being removed from a

+    // new spec for URI which would obsolete RFC 2396. If the

+    // spec is added to XML errata, processing of reg_name

+    // needs to be removed. - mrglavas.

+    else if (isValidRegistryBasedAuthority(p_uriSpec)) {

+      m_regAuthority = p_uriSpec;

+      return true;

+    }

+    return false;

+  }

+  

+  /**

+   * Determines whether the components host, port, and user info

+   * are valid as a server authority.

+   * 

+   * @param host the host component of authority

+   * @param port the port number component of authority

+   * @param userinfo the user info component of authority

+   * 

+   * @return true if the given host, port, and userinfo compose

+   * a valid server authority

+   */

+  private boolean isValidServerBasedAuthority(String host, int port, String userinfo) {

+    

+    // Check if the host is well formed.

+    if (!isWellFormedAddress(host)) {

+      return false;

+    }

+    

+    // Check that port is well formed if it exists.

+    // REVISIT: There's no restriction on port value ranges, but

+    // perform the same check as in setPort to be consistent. Pass

+    // in a string to this method instead of an integer.

+    if (port < -1 || port > 65535) {

+      return false;

+    }

+    

+    // Check that userinfo is well formed if it exists.

+    if (userinfo != null) {

+      // Userinfo can contain alphanumerics, mark characters, escaped

+      // and ';',':','&','=','+','$',','

+      int index = 0;

+      int end = userinfo.length();

+      char testChar = '\0';

+      while (index < end) {

+        testChar = userinfo.charAt(index);

+        if (testChar == '%') {

+          if (index+2 >= end ||

+            !isHex(userinfo.charAt(index+1)) ||

+            !isHex(userinfo.charAt(index+2))) {

+            return false;

+          }

+          index += 2;

+        }

+        else if (!isUserinfoCharacter(testChar)) {

+          return false;

+        }

+        ++index;

+      }

+    }

+    return true;

+  }

+  

+  /**

+   * Determines whether the given string is a registry based authority.

+   * 

+   * @param authority the authority component of a URI

+   * 

+   * @return true if the given string is a registry based authority

+   */

+  private boolean isValidRegistryBasedAuthority(String authority) {

+    int index = 0;

+    int end = authority.length();

+    char testChar;

+      

+    while (index < end) {

+      testChar = authority.charAt(index);

+      

+      // check for valid escape sequence

+      if (testChar == '%') {

+        if (index+2 >= end ||

+            !isHex(authority.charAt(index+1)) ||

+            !isHex(authority.charAt(index+2))) {

+            return false;

+        }

+        index += 2;

+      }

+      // can check against path characters because the set

+      // is the same except for '/' which we've already excluded.

+      else if (!isPathCharacter(testChar)) {

+        return false;

+      }

+      ++index;

+    }

+    return true;

+  }

+      

+ /**

+  * Initialize the path for this URI from a URI string spec.

+  *

+  * @param p_uriSpec the URI specification (cannot be null)

+  * @param p_nStartIndex the index to begin scanning from

+  *

+  * @exception MalformedURIException if p_uriSpec violates syntax rules

+  */

+  private void initializePath(String p_uriSpec, int p_nStartIndex)

+                 throws MalformedURIException {

+    if (p_uriSpec == null) {

+      throw new MalformedURIException(

+                "Cannot initialize path from null string!");

+    }

+

+    int index = p_nStartIndex;

+    int start = p_nStartIndex;

+    int end = p_uriSpec.length();

+    char testChar = '\0';

+

+    // path - everything up to query string or fragment

+    if (start < end) {

+        // RFC 2732 only allows '[' and ']' to appear in the opaque part.

+        if (getScheme() == null || p_uriSpec.charAt(start) == '/') {

+        

+            // Scan path.

+            // abs_path = "/"  path_segments

+            // rel_path = rel_segment [ abs_path ]

+            while (index < end) {

+                testChar = p_uriSpec.charAt(index);

+            

+                // check for valid escape sequence

+                if (testChar == '%') {

+                    if (index+2 >= end ||

+                    !isHex(p_uriSpec.charAt(index+1)) ||

+                    !isHex(p_uriSpec.charAt(index+2))) {

+                        throw new MalformedURIException(

+                            "Path contains invalid escape sequence!");

+                    }

+                    index += 2;

+                }

+                // Path segments cannot contain '[' or ']' since pchar

+                // production was not changed by RFC 2732.

+                else if (!isPathCharacter(testChar)) {

+                      if (testChar == '?' || testChar == '#') {

+                          break;

+                      }

+                    throw new MalformedURIException(

+                        "Path contains invalid character: " + testChar);

+                }

+                ++index;

+            }

+        }

+        else {

+            

+            // Scan opaque part.

+            // opaque_part = uric_no_slash *uric

+            while (index < end) {

+                testChar = p_uriSpec.charAt(index);

+            

+                if (testChar == '?' || testChar == '#') {

+                    break;

+                  }

+                

+                // check for valid escape sequence

+                if (testChar == '%') {

+                    if (index+2 >= end ||

+                    !isHex(p_uriSpec.charAt(index+1)) ||

+                    !isHex(p_uriSpec.charAt(index+2))) {

+                        throw new MalformedURIException(

+                            "Opaque part contains invalid escape sequence!");

+                    }

+                    index += 2;

+                }

+                // If the scheme specific part is opaque, it can contain '['

+                // and ']'. uric_no_slash wasn't modified by RFC 2732, which

+                // I've interpreted as an error in the spec, since the 

+                // production should be equivalent to (uric - '/'), and uric

+                // contains '[' and ']'. - mrglavas

+                else if (!isURICharacter(testChar)) {

+                    throw new MalformedURIException(

+                        "Opaque part contains invalid character: " + testChar);

+                }

+                ++index;

+            }

+        }

+    }

+    m_path = p_uriSpec.substring(start, index);

+

+    // query - starts with ? and up to fragment or end

+    if (testChar == '?') {

+      index++;

+      start = index;

+      while (index < end) {

+        testChar = p_uriSpec.charAt(index);

+        if (testChar == '#') {

+          break;

+        }

+        if (testChar == '%') {

+           if (index+2 >= end ||

+              !isHex(p_uriSpec.charAt(index+1)) ||

+              !isHex(p_uriSpec.charAt(index+2))) {

+            throw new MalformedURIException(

+                    "Query string contains invalid escape sequence!");

+           }

+           index += 2;

+        }

+        else if (!isURICharacter(testChar)) {

+          throw new MalformedURIException(

+                "Query string contains invalid character: " + testChar);

+        }

+        index++;

+      }

+      m_queryString = p_uriSpec.substring(start, index);

+    }

+

+    // fragment - starts with #

+    if (testChar == '#') {

+      index++;

+      start = index;

+      while (index < end) {

+        testChar = p_uriSpec.charAt(index);

+

+        if (testChar == '%') {

+           if (index+2 >= end ||

+              !isHex(p_uriSpec.charAt(index+1)) ||

+              !isHex(p_uriSpec.charAt(index+2))) {

+            throw new MalformedURIException(

+                    "Fragment contains invalid escape sequence!");

+           }

+           index += 2;

+        }

+        else if (!isURICharacter(testChar)) {

+          throw new MalformedURIException(

+                "Fragment contains invalid character: "+testChar);

+        }

+        index++;

+      }

+      m_fragment = p_uriSpec.substring(start, index);

+    }

+  }

+

+ /**

+  * Get the scheme for this URI.

+  *

+  * @return the scheme for this URI

+  */

+  public String getScheme() {

+    return m_scheme;

+  }

+

+ /**

+  * Get the scheme-specific part for this URI (everything following the

+  * scheme and the first colon). See RFC 2396 Section 5.2 for spec.

+  *

+  * @return the scheme-specific part for this URI

+  */

+  public String getSchemeSpecificPart() {

+    StringBuffer schemespec = new StringBuffer();

+

+    if (m_host != null || m_regAuthority != null) {

+      schemespec.append("//");

+    

+      // Server based authority.

+      if (m_host != null) {

+

+        if (m_userinfo != null) {

+          schemespec.append(m_userinfo);

+          schemespec.append('@');

+        }

+        

+        schemespec.append(m_host);

+        

+        if (m_port != -1) {

+          schemespec.append(':');

+          schemespec.append(m_port);

+        }

+      }

+      // Registry based authority.

+      else {

+          schemespec.append(m_regAuthority);

+      }

+    }

+

+    if (m_path != null) {

+      schemespec.append((m_path));

+    }

+

+    if (m_queryString != null) {

+      schemespec.append('?');

+      schemespec.append(m_queryString);

+    }

+

+    if (m_fragment != null) {

+      schemespec.append('#');

+      schemespec.append(m_fragment);

+    }

+

+    return schemespec.toString();

+  }

+

+ /**

+  * Get the userinfo for this URI.

+  *

+  * @return the userinfo for this URI (null if not specified).

+  */

+  public String getUserinfo() {

+    return m_userinfo;

+  }

+

+  /**

+  * Get the host for this URI.

+  *

+  * @return the host for this URI (null if not specified).

+  */

+  public String getHost() {

+    return m_host;

+  }

+

+ /**

+  * Get the port for this URI.

+  *

+  * @return the port for this URI (-1 if not specified).

+  */

+  public int getPort() {

+    return m_port;

+  }

+  

+  /**

+   * Get the registry based authority for this URI.

+   * 

+   * @return the registry based authority (null if not specified).

+   */

+  public String getRegBasedAuthority() {

+    return m_regAuthority;

+  }

+

+ /**

+  * Get the path for this URI (optionally with the query string and

+  * fragment).

+  *

+  * @param p_includeQueryString if true (and query string is not null),

+  *                             then a "?" followed by the query string

+  *                             will be appended

+  * @param p_includeFragment if true (and fragment is not null),

+  *                             then a "#" followed by the fragment

+  *                             will be appended

+  *

+  * @return the path for this URI possibly including the query string

+  *         and fragment

+  */

+  public String getPath(boolean p_includeQueryString,

+                        boolean p_includeFragment) {

+    StringBuffer pathString = new StringBuffer(m_path);

+

+    if (p_includeQueryString && m_queryString != null) {

+      pathString.append('?');

+      pathString.append(m_queryString);

+    }

+

+    if (p_includeFragment && m_fragment != null) {

+      pathString.append('#');

+      pathString.append(m_fragment);

+    }

+    return pathString.toString();

+  }

+

+ /**

+  * Get the path for this URI. Note that the value returned is the path

+  * only and does not include the query string or fragment.

+  *

+  * @return the path for this URI.

+  */

+  public String getPath() {

+    return m_path;

+  }

+

+ /**

+  * Get the query string for this URI.

+  *

+  * @return the query string for this URI. Null is returned if there

+  *         was no "?" in the URI spec, empty string if there was a

+  *         "?" but no query string following it.

+  */

+  public String getQueryString() {

+    return m_queryString;

+  }

+

+ /**

+  * Get the fragment for this URI.

+  *

+  * @return the fragment for this URI. Null is returned if there

+  *         was no "#" in the URI spec, empty string if there was a

+  *         "#" but no fragment following it.

+  */

+  public String getFragment() {

+    return m_fragment;

+  }

+

+ /**

+  * Set the scheme for this URI. The scheme is converted to lowercase

+  * before it is set.

+  *

+  * @param p_scheme the scheme for this URI (cannot be null)

+  *

+  * @exception MalformedURIException if p_scheme is not a conformant

+  *                                  scheme name

+  */

+  public void setScheme(String p_scheme) throws MalformedURIException {

+    if (p_scheme == null) {

+      throw new MalformedURIException(

+                "Cannot set scheme from null string!");

+    }

+    if (!isConformantSchemeName(p_scheme)) {

+      throw new MalformedURIException("The scheme is not conformant.");

+    }

+

+    m_scheme = p_scheme.toLowerCase();

+  }

+

+ /**

+  * Set the userinfo for this URI. If a non-null value is passed in and

+  * the host value is null, then an exception is thrown.

+  *

+  * @param p_userinfo the userinfo for this URI

+  *

+  * @exception MalformedURIException if p_userinfo contains invalid

+  *                                  characters

+  */

+  public void setUserinfo(String p_userinfo) throws MalformedURIException {

+    if (p_userinfo == null) {

+      m_userinfo = null;

+      return;

+    }

+    else {

+      if (m_host == null) {

+        throw new MalformedURIException(

+                     "Userinfo cannot be set when host is null!");

+      }

+

+      // userinfo can contain alphanumerics, mark characters, escaped

+      // and ';',':','&','=','+','$',','

+      int index = 0;

+      int end = p_userinfo.length();

+      char testChar = '\0';

+      while (index < end) {

+        testChar = p_userinfo.charAt(index);

+        if (testChar == '%') {

+          if (index+2 >= end ||

+              !isHex(p_userinfo.charAt(index+1)) ||

+              !isHex(p_userinfo.charAt(index+2))) {

+            throw new MalformedURIException(

+                  "Userinfo contains invalid escape sequence!");

+          }

+        }

+        else if (!isUserinfoCharacter(testChar)) {

+          throw new MalformedURIException(

+                  "Userinfo contains invalid character:"+testChar);

+        }

+        index++;

+      }

+    }

+    m_userinfo = p_userinfo;

+  }

+

+ /**

+  * <p>Set the host for this URI. If null is passed in, the userinfo

+  * field is also set to null and the port is set to -1.</p>

+  * 

+  * <p>Note: This method overwrites registry based authority if it

+  * previously existed in this URI.</p>

+  *

+  * @param p_host the host for this URI

+  *

+  * @exception MalformedURIException if p_host is not a valid IP

+  *                                  address or DNS hostname.

+  */

+  public void setHost(String p_host) throws MalformedURIException {

+    if (p_host == null || p_host.length() == 0) {

+      if (p_host != null) {

+        m_regAuthority = null;

+      }

+      m_host = p_host;

+      m_userinfo = null;

+      m_port = -1;

+      return;

+    }

+    else if (!isWellFormedAddress(p_host)) {

+      throw new MalformedURIException("Host is not a well formed address!");

+    }

+    m_host = p_host;

+    m_regAuthority = null;

+  }

+

+ /**

+  * Set the port for this URI. -1 is used to indicate that the port is

+  * not specified, otherwise valid port numbers are  between 0 and 65535.

+  * If a valid port number is passed in and the host field is null,

+  * an exception is thrown.

+  *

+  * @param p_port the port number for this URI

+  *

+  * @exception MalformedURIException if p_port is not -1 and not a

+  *                                  valid port number

+  */

+  public void setPort(int p_port) throws MalformedURIException {

+    if (p_port >= 0 && p_port <= 65535) {

+      if (m_host == null) {

+        throw new MalformedURIException(

+                      "Port cannot be set when host is null!");

+      }

+    }

+    else if (p_port != -1) {

+      throw new MalformedURIException("Invalid port number!");

+    }

+    m_port = p_port;

+  }

+  

+  /**

+   * <p>Sets the registry based authority for this URI.</p>

+   * 

+   * <p>Note: This method overwrites server based authority

+   * if it previously existed in this URI.</p>

+   * 

+   * @param authority the registry based authority for this URI

+   * 

+   * @exception MalformedURIException it authority is not a

+   * well formed registry based authority

+   */

+  public void setRegBasedAuthority(String authority) 

+    throws MalformedURIException {

+

+      if (authority == null) {

+        m_regAuthority = null;

+        return;

+      }

+    // reg_name = 1*( unreserved | escaped | "$" | "," | 

+    //            ";" | ":" | "@" | "&" | "=" | "+" )

+      else if (authority.length() < 1 ||

+        !isValidRegistryBasedAuthority(authority) ||

+        authority.indexOf('/') != -1) {

+      throw new MalformedURIException("Registry based authority is not well formed.");           

+      }

+      m_regAuthority = authority;

+      m_host = null;

+      m_userinfo = null;

+      m_port = -1;

+  }

+

+ /**

+  * Set the path for this URI. If the supplied path is null, then the

+  * query string and fragment are set to null as well. If the supplied

+  * path includes a query string and/or fragment, these fields will be

+  * parsed and set as well. Note that, for URIs following the "generic

+  * URI" syntax, the path specified should start with a slash.

+  * For URIs that do not follow the generic URI syntax, this method

+  * sets the scheme-specific part.

+  *

+  * @param p_path the path for this URI (may be null)

+  *

+  * @exception MalformedURIException if p_path contains invalid

+  *                                  characters

+  */

+  public void setPath(String p_path) throws MalformedURIException {

+    if (p_path == null) {

+      m_path = null;

+      m_queryString = null;

+      m_fragment = null;

+    }

+    else {

+      initializePath(p_path, 0);

+    }

+  }

+

+ /**

+  * Append to the end of the path of this URI. If the current path does

+  * not end in a slash and the path to be appended does not begin with

+  * a slash, a slash will be appended to the current path before the

+  * new segment is added. Also, if the current path ends in a slash

+  * and the new segment begins with a slash, the extra slash will be

+  * removed before the new segment is appended.

+  *

+  * @param p_addToPath the new segment to be added to the current path

+  *

+  * @exception MalformedURIException if p_addToPath contains syntax

+  *                                  errors

+  */

+  public void appendPath(String p_addToPath)

+                         throws MalformedURIException {

+    if (p_addToPath == null || p_addToPath.trim().length() == 0) {

+      return;

+    }

+

+    if (!isURIString(p_addToPath)) {

+      throw new MalformedURIException(

+              "Path contains invalid character!");

+    }

+

+    if (m_path == null || m_path.trim().length() == 0) {

+      if (p_addToPath.startsWith("/")) {

+        m_path = p_addToPath;

+      }

+      else {

+        m_path = "/" + p_addToPath;

+      }

+    }

+    else if (m_path.endsWith("/")) {

+      if (p_addToPath.startsWith("/")) {

+        m_path = m_path.concat(p_addToPath.substring(1));

+      }

+      else {

+        m_path = m_path.concat(p_addToPath);

+      }

+    }

+    else {

+      if (p_addToPath.startsWith("/")) {

+        m_path = m_path.concat(p_addToPath);

+      }

+      else {

+        m_path = m_path.concat("/" + p_addToPath);

+      }

+    }

+  }

+

+ /**

+  * Set the query string for this URI. A non-null value is valid only

+  * if this is an URI conforming to the generic URI syntax and

+  * the path value is not null.

+  *

+  * @param p_queryString the query string for this URI

+  *

+  * @exception MalformedURIException if p_queryString is not null and this

+  *                                  URI does not conform to the generic

+  *                                  URI syntax or if the path is null

+  */

+  public void setQueryString(String p_queryString) throws MalformedURIException {

+    if (p_queryString == null) {

+      m_queryString = null;

+    }

+    else if (!isGenericURI()) {

+      throw new MalformedURIException(

+              "Query string can only be set for a generic URI!");

+    }

+    else if (this.m_path == null) {

+      throw new MalformedURIException(

+              "Query string cannot be set when path is null!");

+    }

+    else if (!isURIString(p_queryString)) {

+      throw new MalformedURIException(

+              "Query string contains invalid character!");

+    }

+    else {

+      m_queryString = p_queryString;

+    }

+  }

+

+ /**

+  * Set the fragment for this URI. A non-null value is valid only

+  * if this is a URI conforming to the generic URI syntax and

+  * the path value is not null.

+  *

+  * @param p_fragment the fragment for this URI

+  *

+  * @exception MalformedURIException if p_fragment is not null and this

+  *                                  URI does not conform to the generic

+  *                                  URI syntax or if the path is null

+  */

+  public void setFragment(String p_fragment) throws MalformedURIException {

+    if (p_fragment == null) {

+      m_fragment = null;

+    }

+    else if (!isGenericURI()) {

+      throw new MalformedURIException(

+         "Fragment can only be set for a generic URI!");

+    }

+    else if (getPath() == null) {

+      throw new MalformedURIException(

+              "Fragment cannot be set when path is null!");

+    }

+    else if (!isURIString(p_fragment)) {

+      throw new MalformedURIException(

+              "Fragment contains invalid character!");

+    }

+    else {

+      m_fragment = p_fragment;

+    }

+  }

+

+ /**

+  * Determines if the passed-in Object is equivalent to this URI.

+  *

+  * @param p_test the Object to test for equality.

+  *

+  * @return true if p_test is a URI with all values equal to this

+  *         URI, false otherwise

+  */

+  public boolean equals(Object p_test) {

+    if (p_test instanceof URI) {

+      URI testURI = (URI) p_test;

+      if (((m_scheme == null && testURI.m_scheme == null) ||

+           (m_scheme != null && testURI.m_scheme != null &&

+            m_scheme.equals(testURI.m_scheme))) &&

+          ((m_userinfo == null && testURI.m_userinfo == null) ||

+           (m_userinfo != null && testURI.m_userinfo != null &&

+            m_userinfo.equals(testURI.m_userinfo))) &&

+          ((m_host == null && testURI.m_host == null) ||

+           (m_host != null && testURI.m_host != null &&

+            m_host.equals(testURI.m_host))) &&

+            m_port == testURI.m_port &&

+          ((m_path == null && testURI.m_path == null) ||

+           (m_path != null && testURI.m_path != null &&

+            m_path.equals(testURI.m_path))) &&

+          ((m_queryString == null && testURI.m_queryString == null) ||

+           (m_queryString != null && testURI.m_queryString != null &&

+            m_queryString.equals(testURI.m_queryString))) &&

+          ((m_fragment == null && testURI.m_fragment == null) ||

+           (m_fragment != null && testURI.m_fragment != null &&

+            m_fragment.equals(testURI.m_fragment)))) {

+        return true;

+      }

+    }

+    return false;

+  }

+

+    /**

+     * Returns a hash-code value for this URI.  The hash code is based upon all

+     * of the URI's components, and satisfies the general contract of the

+     * {@link java.lang.Object#hashCode() Object.hashCode} method. </p>

+     *

+     * @return  A hash-code value for this URI

+     */

+    public int hashCode() {

+        return toString().hashCode();

+    }

+    

+ /**

+  * Get the URI as a string specification. See RFC 2396 Section 5.2.

+  *

+  * @return the URI string specification

+  */

+  public String toString() {

+    StringBuffer uriSpecString = new StringBuffer();

+

+    if (m_scheme != null) {

+      uriSpecString.append(m_scheme);

+      uriSpecString.append(':');

+    }

+    uriSpecString.append(getSchemeSpecificPart());

+    return uriSpecString.toString();

+  }

+

+ /**

+  * Get the indicator as to whether this URI uses the "generic URI"

+  * syntax.

+  *

+  * @return true if this URI uses the "generic URI" syntax, false

+  *         otherwise

+  */

+  public boolean isGenericURI() {

+    // presence of the host (whether valid or empty) means

+    // double-slashes which means generic uri

+    return (m_host != null);

+  }

+

+ /**

+  * Determine whether a scheme conforms to the rules for a scheme name.

+  * A scheme is conformant if it starts with an alphanumeric, and

+  * contains only alphanumerics, '+','-' and '.'.

+  *

+  * @return true if the scheme is conformant, false otherwise

+  */

+  public static boolean isConformantSchemeName(String p_scheme) {

+    if (p_scheme == null || p_scheme.trim().length() == 0) {

+      return false;

+    }

+

+    if (!isAlpha(p_scheme.charAt(0))) {

+      return false;

+    }

+

+    char testChar;

+    int schemeLength = p_scheme.length();

+    for (int i = 1; i < schemeLength; ++i) {

+      testChar = p_scheme.charAt(i);

+      if (!isSchemeCharacter(testChar)) {

+        return false;

+      }

+    }

+

+    return true;

+  }

+

+ /**

+  * Determine whether a string is syntactically capable of representing

+  * a valid IPv4 address, IPv6 reference or the domain name of a network host. 

+  * A valid IPv4 address consists of four decimal digit groups separated by a

+  * '.'. Each group must consist of one to three digits. See RFC 2732 Section 3,

+  * and RFC 2373 Section 2.2, for the definition of IPv6 references. A hostname 

+  * consists of domain labels (each of which must begin and end with an alphanumeric 

+  * but may contain '-') separated & by a '.'. See RFC 2396 Section 3.2.2.

+  *

+  * @return true if the string is a syntactically valid IPv4 address, 

+  * IPv6 reference or hostname

+  */

+  public static boolean isWellFormedAddress(String address) {

+    if (address == null) {

+      return false;

+    }

+

+    int addrLength = address.length();

+    if (addrLength == 0) {

+      return false;

+    }

+    

+    // Check if the host is a valid IPv6reference.

+    if (address.startsWith("[")) {

+      return isWellFormedIPv6Reference(address);

+    }

+

+    // Cannot start with a '.', '-', or end with a '-'.

+    if (address.startsWith(".") || 

+        address.startsWith("-") || 

+        address.endsWith("-")) {

+      return false;

+    }

+

+    // rightmost domain label starting with digit indicates IP address

+    // since top level domain label can only start with an alpha

+    // see RFC 2396 Section 3.2.2

+    int index = address.lastIndexOf('.');

+    if (address.endsWith(".")) {

+      index = address.substring(0, index).lastIndexOf('.');

+    }

+

+    if (index+1 < addrLength && isDigit(address.charAt(index+1))) {

+      return isWellFormedIPv4Address(address);

+    }

+    else {

+      // hostname      = *( domainlabel "." ) toplabel [ "." ]

+      // domainlabel   = alphanum | alphanum *( alphanum | "-" ) alphanum

+      // toplabel      = alpha | alpha *( alphanum | "-" ) alphanum

+      

+      // RFC 2396 states that hostnames take the form described in 

+      // RFC 1034 (Section 3) and RFC 1123 (Section 2.1). According

+      // to RFC 1034, hostnames are limited to 255 characters.

+      if (addrLength > 255) {

+          return false;

+      }

+      

+      // domain labels can contain alphanumerics and '-"

+      // but must start and end with an alphanumeric

+      char testChar;

+      int labelCharCount = 0;

+

+      for (int i = 0; i < addrLength; i++) {

+        testChar = address.charAt(i);

+        if (testChar == '.') {

+          if (!isAlphanum(address.charAt(i-1))) {

+            return false;

+          }

+          if (i+1 < addrLength && !isAlphanum(address.charAt(i+1))) {

+            return false;

+          }

+          labelCharCount = 0;

+        }

+        else if (!isAlphanum(testChar) && testChar != '-') {

+          return false;

+        }

+        // RFC 1034: Labels must be 63 characters or less.

+        else if (++labelCharCount > 63) {

+          return false;

+        }

+      }

+    }

+    return true;

+  }

+  

+  /**

+   * <p>Determines whether a string is an IPv4 address as defined by 

+   * RFC 2373, and under the further constraint that it must be a 32-bit

+   * address. Though not expressed in the grammar, in order to satisfy 

+   * the 32-bit address constraint, each segment of the address cannot 

+   * be greater than 255 (8 bits of information).</p>

+   *

+   * <p><code>IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT</code></p>

+   *

+   * @return true if the string is a syntactically valid IPv4 address

+   */

+  public static boolean isWellFormedIPv4Address(String address) {

+      

+      int addrLength = address.length();

+      char testChar;

+      int numDots = 0;

+      int numDigits = 0;

+

+      // make sure that 1) we see only digits and dot separators, 2) that

+      // any dot separator is preceded and followed by a digit and

+      // 3) that we find 3 dots

+      //

+      // RFC 2732 amended RFC 2396 by replacing the definition 

+      // of IPv4address with the one defined by RFC 2373. - mrglavas

+      //

+      // IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT

+      //

+      // One to three digits must be in each segment.

+      for (int i = 0; i < addrLength; i++) {

+        testChar = address.charAt(i);

+        if (testChar == '.') {

+          if ((i > 0 && !isDigit(address.charAt(i-1))) || 

+              (i+1 < addrLength && !isDigit(address.charAt(i+1)))) {

+            return false;

+          }

+          numDigits = 0;

+          if (++numDots > 3) {

+            return false;

+          }

+        }

+        else if (!isDigit(testChar)) {

+          return false;

+        }

+        // Check that that there are no more than three digits

+        // in this segment.

+        else if (++numDigits > 3) {

+          return false;

+        }

+        // Check that this segment is not greater than 255.

+        else if (numDigits == 3) {

+          char first = address.charAt(i-2);

+          char second = address.charAt(i-1);

+          if (!(first < '2' || 

+               (first == '2' && 

+               (second < '5' || 

+               (second == '5' && testChar <= '5'))))) {

+            return false;

+          }

+        }

+      }

+      return (numDots == 3);

+  }

+  

+  /**

+   * <p>Determines whether a string is an IPv6 reference as defined

+   * by RFC 2732, where IPv6address is defined in RFC 2373. The 

+   * IPv6 address is parsed according to Section 2.2 of RFC 2373,

+   * with the additional constraint that the address be composed of

+   * 128 bits of information.</p>

+   *

+   * <p><code>IPv6reference = "[" IPv6address "]"</code></p>

+   *

+   * <p>Note: The BNF expressed in RFC 2373 Appendix B does not 

+   * accurately describe section 2.2, and was in fact removed from

+   * RFC 3513, the successor of RFC 2373.</p>

+   *

+   * @return true if the string is a syntactically valid IPv6 reference

+   */

+  public static boolean isWellFormedIPv6Reference(String address) {

+

+      int addrLength = address.length();

+      int index = 1;

+      int end = addrLength-1;

+      

+      // Check if string is a potential match for IPv6reference.

+      if (!(addrLength > 2 && address.charAt(0) == '[' 

+          && address.charAt(end) == ']')) {

+          return false;

+      }

+      

+      // Counter for the number of 16-bit sections read in the address.

+      int [] counter = new int[1];

+      

+      // Scan hex sequence before possible '::' or IPv4 address.

+      index = scanHexSequence(address, index, end, counter);

+      if (index == -1) {

+          return false;

+      }

+      // Address must contain 128-bits of information.

+      else if (index == end) {

+          return (counter[0] == 8);

+      }

+      

+      if (index+1 < end && address.charAt(index) == ':') {

+          if (address.charAt(index+1) == ':') {

+              // '::' represents at least one 16-bit group of zeros.

+              if (++counter[0] > 8) {

+                  return false;

+              }

+              index += 2;

+              // Trailing zeros will fill out the rest of the address.

+              if (index == end) {

+                 return true;

+              }

+          }

+          // If the second character wasn't ':', in order to be valid,

+          // the remainder of the string must match IPv4Address, 

+          // and we must have read exactly 6 16-bit groups.

+          else {

+              return (counter[0] == 6) && 

+                  isWellFormedIPv4Address(address.substring(index+1, end));

+          }

+      }

+      else {

+          return false;

+      }

+      

+      // 3. Scan hex sequence after '::'.

+      int prevCount = counter[0];

+      index = scanHexSequence(address, index, end, counter);

+

+      // We've either reached the end of the string, the address ends in

+      // an IPv4 address, or it is invalid. scanHexSequence has already 

+      // made sure that we have the right number of bits. 

+      return (index == end) || 

+          (index != -1 && isWellFormedIPv4Address(

+          address.substring((counter[0] > prevCount) ? index+1 : index, end)));

+  }

+  

+  /**

+   * Helper method for isWellFormedIPv6Reference which scans the 

+   * hex sequences of an IPv6 address. It returns the index of the 

+   * next character to scan in the address, or -1 if the string 

+   * cannot match a valid IPv6 address. 

+   *

+   * @param address the string to be scanned

+   * @param index the beginning index (inclusive)

+   * @param end the ending index (exclusive)

+   * @param counter a counter for the number of 16-bit sections read

+   * in the address

+   *

+   * @return the index of the next character to scan, or -1 if the

+   * string cannot match a valid IPv6 address

+   */

+  private static int scanHexSequence (String address, int index, int end, int [] counter) {

+      

+      char testChar;

+      int numDigits = 0;

+      int start = index;

+      

+      // Trying to match the following productions:

+      // hexseq = hex4 *( ":" hex4)

+      // hex4   = 1*4HEXDIG

+      for (; index < end; ++index) {

+          testChar = address.charAt(index);

+          if (testChar == ':') {

+              // IPv6 addresses are 128-bit, so there can be at most eight sections.

+              if (numDigits > 0 && ++counter[0] > 8) {

+                  return -1;

+              }

+              // This could be '::'.

+              if (numDigits == 0 || ((index+1 < end) && address.charAt(index+1) == ':')) {

+                  return index;

+              }

+              numDigits = 0;

+        }

+        // This might be invalid or an IPv4address. If it's potentially an IPv4address,

+        // backup to just after the last valid character that matches hexseq.

+        else if (!isHex(testChar)) {

+            if (testChar == '.' && numDigits < 4 && numDigits > 0 && counter[0] <= 6) {

+                int back = index - numDigits - 1;

+                return (back >= start) ? back : (back+1);

+            }

+            return -1;

+        }

+        // There can be at most 4 hex digits per group.

+        else if (++numDigits > 4) {

+            return -1;

+        }

+      }

+      return (numDigits > 0 && ++counter[0] <= 8) ? end : -1;

+  } 

+

+

+ /**

+  * Determine whether a char is a digit.

+  *

+  * @return true if the char is betweeen '0' and '9', false otherwise

+  */

+  private static boolean isDigit(char p_char) {

+    return p_char >= '0' && p_char <= '9';

+  }

+

+ /**

+  * Determine whether a character is a hexadecimal character.

+  *

+  * @return true if the char is betweeen '0' and '9', 'a' and 'f'

+  *         or 'A' and 'F', false otherwise

+  */

+  private static boolean isHex(char p_char) {

+    return (p_char <= 'f' && (fgLookupTable[p_char] & ASCII_HEX_CHARACTERS) != 0);

+  }

+

+ /**

+  * Determine whether a char is an alphabetic character: a-z or A-Z

+  *

+  * @return true if the char is alphabetic, false otherwise

+  */

+  private static boolean isAlpha(char p_char) {

+      return ((p_char >= 'a' && p_char <= 'z') || (p_char >= 'A' && p_char <= 'Z' ));

+  }

+

+ /**

+  * Determine whether a char is an alphanumeric: 0-9, a-z or A-Z

+  *

+  * @return true if the char is alphanumeric, false otherwise

+  */

+  private static boolean isAlphanum(char p_char) {

+     return (p_char <= 'z' && (fgLookupTable[p_char] & MASK_ALPHA_NUMERIC) != 0);

+  }

+

+ /**

+  * Determine whether a char is a URI character (reserved or 

+  * unreserved, not including '%' for escaped octets).

+  *

+  * @return true if the char is a URI character, false otherwise

+  */

+  private static boolean isURICharacter (char p_char) {

+      return (p_char <= '~' && (fgLookupTable[p_char] & MASK_URI_CHARACTER) != 0);

+  }

+

+ /**

+  * Determine whether a char is a scheme character.

+  *

+  * @return true if the char is a scheme character, false otherwise

+  */

+  private static boolean isSchemeCharacter (char p_char) {

+      return (p_char <= 'z' && (fgLookupTable[p_char] & MASK_SCHEME_CHARACTER) != 0);

+  }

+

+ /**

+  * Determine whether a char is a userinfo character.

+  *

+  * @return true if the char is a userinfo character, false otherwise

+  */

+  private static boolean isUserinfoCharacter (char p_char) {

+      return (p_char <= 'z' && (fgLookupTable[p_char] & MASK_USERINFO_CHARACTER) != 0);

+  }

+  

+ /**

+  * Determine whether a char is a path character.

+  * 

+  * @return true if the char is a path character, false otherwise

+  */

+  private static boolean isPathCharacter (char p_char) {

+      return (p_char <= '~' && (fgLookupTable[p_char] & MASK_PATH_CHARACTER) != 0);

+  }

+

+

+ /**

+  * Determine whether a given string contains only URI characters (also

+  * called "uric" in RFC 2396). uric consist of all reserved

+  * characters, unreserved characters and escaped characters.

+  *

+  * @return true if the string is comprised of uric, false otherwise

+  */

+  private static boolean isURIString(String p_uric) {

+    if (p_uric == null) {

+      return false;

+    }

+    int end = p_uric.length();

+    char testChar = '\0';

+    for (int i = 0; i < end; i++) {

+      testChar = p_uric.charAt(i);

+      if (testChar == '%') {

+        if (i+2 >= end ||

+            !isHex(p_uric.charAt(i+1)) ||

+            !isHex(p_uric.charAt(i+2))) {

+          return false;

+        }

+        else {

+          i += 2;

+          continue;

+        }

+      }

+        if (!isURICharacter(testChar)) {

+          return false;

+        }

+    }

+    return true;

+  }

+}

+

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedByte.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedByte.java
new file mode 100644
index 0000000..21d4538
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedByte.java
@@ -0,0 +1,69 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+

+/**

+ * Custom class for supporting primitive XSD data type UnsignedByte

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#unsignedByte">XML Schema 3.3.24</a>

+ */

+public class UnsignedByte extends UnsignedShort {

+

+

+    private static final long serialVersionUID = 4631754787145526759L;

+

+	public UnsignedByte() {

+

+    }

+

+    /**

+     * ctor for UnsignedByte

+     * @exception Exception will be thrown if validation fails

+     */

+    public UnsignedByte(long sValue) throws NumberFormatException {

+      setValue(sValue);

+    }

+

+    public UnsignedByte(String sValue) throws NumberFormatException {

+      setValue(Long.parseLong(sValue));

+    }

+

+    /**

+     *

+     * validates the data and sets the value for the object.

+     *

+     * @param sValue the number to set

+     */

+    public void setValue(long sValue) throws NumberFormatException {

+        if (!UnsignedByte.isValid(sValue))

+            throw new NumberFormatException(

+                   // Messages.getMessage("badUnsignedByte00") +

+                    String.valueOf(sValue) + "]");

+        lValue = new Long(sValue);

+    }

+

+    /**

+     *

+     * validate the value against the xsd value space definition

+     * @param sValue number to check against range

+     */

+    public static boolean isValid(long sValue) {

+        return !((sValue < 0L) || (sValue > 255L));

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedInt.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedInt.java
new file mode 100644
index 0000000..bf83575
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedInt.java
@@ -0,0 +1,111 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+

+

+/**

+ * Custom class for supporting primitive XSD data type UnsignedInt

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#unsignedInt">XML Schema 3.3.22</a>

+ */

+public class UnsignedInt extends java.lang.Number {

+

+    private static final long serialVersionUID = -8915204168154746305L;

+    

+	protected Long lValue = new Long(0);

+

+    public UnsignedInt() {

+    }

+

+    /**

+     * ctor for UnsignedInt

+     * @exception NumberFormatException will be thrown if validation fails

+     */

+    public UnsignedInt(long iValue) throws NumberFormatException {

+      setValue(iValue);

+    }

+

+    public UnsignedInt(String stValue) throws NumberFormatException {

+      setValue(Long.parseLong(stValue));

+    }

+

+

+    /**

+     *

+     * validates the data and sets the value for the object.

+     *

+     * @param iValue value

+     */

+    public void setValue(long iValue) throws NumberFormatException {

+      if (!UnsignedInt.isValid(iValue))

+            throw new NumberFormatException(

+//                    Messages.getMessage("badUnsignedInt00") +

+                    String.valueOf(iValue) + "]");

+      lValue = new Long(iValue);

+    }

+

+    public String toString(){

+      if (lValue != null)

+        return lValue.toString();

+      else

+        return null;

+    }

+

+    public int hashCode(){

+      if (lValue != null)

+        return lValue.hashCode();

+      else

+        return 0;

+    }

+

+    /**

+     *

+     * validate the value against the xsd definition

+     *

+     */

+    public static boolean isValid(long iValue) {

+        return !((iValue < 0L) || (iValue > 4294967295L));

+    }

+

+    private Object __equalsCalc = null;

+    public synchronized boolean equals(Object obj) {

+        if (!(obj instanceof UnsignedInt)) return false;

+        UnsignedInt other = (UnsignedInt) obj;

+        if (this == obj) return true;

+        if (__equalsCalc != null) {

+            return (__equalsCalc == obj);

+        }

+        __equalsCalc = obj;

+        boolean _equals;

+        _equals = ((lValue == null && other.lValue == null) ||

+                (lValue != null &&

+                        lValue.equals(other.lValue)));

+        __equalsCalc = null;

+        return _equals;

+    }

+

+    // Implement java.lang.Number interface

+    public byte byteValue() { return lValue.byteValue(); }

+    public short shortValue() { return lValue.shortValue(); }

+    public int intValue() { return lValue.intValue(); }

+    public long longValue() { return lValue.longValue(); }

+    public double doubleValue() { return lValue.doubleValue(); }

+    public float floatValue() { return lValue.floatValue(); }

+

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedLong.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedLong.java
new file mode 100644
index 0000000..c244fe8
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedLong.java
@@ -0,0 +1,209 @@
+/*
+ * 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.axis2.databinding.types;
+
+// Consider removing this.
+// All operations behave as if BigIntegers were represented in two's-complement notation.
+// In its place, consider using primitive type long (which is already the right size) to hold the data.
+// This class can hide the fact that the data is stored in a signed entity, by careful implementation of the class' methods.
+
+import java.math.BigInteger;
+
+/**
+ * Custom class for supporting primitive XSD data type UnsignedLong
+ *
+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#unsignedLong">XML Schema 3.3.21</a>
+ */
+public class UnsignedLong extends java.lang.Number implements Comparable {
+
+    private static final long serialVersionUID = -5919942584284897583L;
+
+    protected BigInteger lValue = BigInteger.ZERO;
+    private static BigInteger MAX = new BigInteger("18446744073709551615"); // max unsigned long
+
+    public UnsignedLong() {
+    }
+
+    public UnsignedLong(double value) throws NumberFormatException {
+        setValue(new BigInteger(Double.toString(value)));
+    }
+
+    public UnsignedLong(BigInteger value) throws NumberFormatException {
+        setValue(value);
+    }
+
+    public UnsignedLong(long lValue) throws IllegalArgumentException {
+        // new UnsignedLong( 0xffffffffffffffffL )
+        // should not throw any Exception because, as an UnsignedLong, it is in range and nonnegative.
+        setValue(BigInteger.valueOf(lValue));
+    }
+
+    public UnsignedLong(String stValue) throws NumberFormatException {
+
+        // If stValue starts with a minus sign, that will be acceptable to the BigInteger constructor,
+        // but it is not acceptable to us.
+        // Once encoded into binary, it is too late to detect that the client intended a negative integer.
+        // That detection must be performed here.
+        try {
+            if (stValue.charAt(0) == '\u002d') {
+                throw new NumberFormatException("A String that starts with a minus sign is not a valid representation of an UnsignedLong.");
+            }
+            setValue(new BigInteger(stValue));
+        }
+
+        catch (NumberFormatException numberFormatException) {
+            throw numberFormatException;
+        }
+
+        catch (IndexOutOfBoundsException indexOutOfBoundsException) {
+            // This could happen if stValue is empty when we attempt to detect a minus sign.
+            // From the client's point of view, the empty String should cause a NumberFormatException.
+            throw new NumberFormatException("An empty string is not a valid representation of an UnsignedLong.");
+        }
+
+    }
+
+    private void setValue(BigInteger val) {
+        if (!UnsignedLong.isValid(val)) {
+            throw new IllegalArgumentException(
+//                    Messages.getMessage("badUnsignedLong00") +
+                    String.valueOf(val) + "]");
+        }
+        this.lValue = val;
+    }
+
+    public static boolean isValid(BigInteger value) {
+
+        // Converts this BigInteger to a long.
+        // This conversion is analogous to a narrowing primitive conversion from long to int as defined in the Java Language Specification:
+        // if this BigInteger is too big to fit in a long, only the low-order 64 bits are returned.
+        // Note that this conversion can lose information about the overall magnitude of the BigInteger value as well as return a result with the opposite sign.
+        long unsignedLongValue = value.longValue();
+
+        return !(compare(unsignedLongValue, BigInteger.ZERO.longValue()) < 0 || // less than zero
+                compare(unsignedLongValue, MAX.longValue()) > 0);
+    }
+
+    public String toString() {
+        return lValue.toString();
+    }
+
+    public int hashCode() {
+        if (lValue != null)
+            return lValue.hashCode();
+        else
+            return 0;
+    }
+
+    private Object __equalsCalc = null;
+
+    public synchronized boolean equals(Object obj) {
+        if (!(obj instanceof UnsignedLong)) return false;
+        UnsignedLong other = (UnsignedLong) obj;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = ((lValue == null && other.lValue == null) ||
+                (lValue != null &&
+                        lValue.equals(other.lValue)));
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    // Implement java.lang.Number interface
+    public byte byteValue() {
+        return lValue.byteValue();
+    }
+
+    public short shortValue() {
+        return lValue.shortValue();
+    }
+
+    public int intValue() {
+        return lValue.intValue();
+    }
+
+    public long longValue() {
+        return lValue.longValue();
+    }
+
+    public double doubleValue() {
+        return lValue.doubleValue();
+    }
+
+    public float floatValue() {
+        return lValue.floatValue();
+    }
+
+    /**
+     * @return the value 0 if the argument is an UnsignedLong numerically equal to this UnsignedLong; a value less than 0 if the argument is an UnsignedLong numerically greater than this UnsignedLong; and a value greater than 0 if the argument is an UnsignedLong numerically less than this UnsignedLong.
+     */
+    public int compareTo(Object o) {
+        int retVal = 0; // arbitrary default value in case of exception; required return value in case this object is equal to the specified object
+
+        if (o == null || !(o instanceof UnsignedLong)) {
+            throw new ClassCastException("The argument is not an UnsignedLong.");
+        }
+        // Only need to change retVal if this object is not equal to the specified object.
+        retVal = compare(longValue(), ((UnsignedLong) o).longValue());
+
+        return retVal;
+
+    }
+
+    /**
+     * @return the value 0 if thatLong is a long numerically equal to thisLong; a value less than 0 if thatLong is a long numerically greater than thisLong; and a value greater than 0 if thatLong is a long numerically less than thisLong (unsigned comparison).
+     */
+    private static int compare(long thisLong, long thatLong) {
+        // To avoid infinite recursion, do not instantiate UnsignedLong in this method, which may be called during UnsignedLong instantiation.
+
+        if (thisLong == thatLong) {
+            return 0;
+        } else {
+            boolean isLessThan; // This is less than that.
+
+            // Prepare the most significant half of the data for comparison.
+            // The shift distance can be any number from 1 to 32 inclusive (1 is probably fastest).
+            // A shift distance of one is sufficient to move the significant data off of the sign bit, allowing for a signed comparison of positive numbers (i.e. an unsigned comparison).
+            long thisHalfLong = (thisLong & 0xffffffff00000000L) >>> 1;
+            long thatHalfLong = (thatLong & 0xffffffff00000000L) >>> 1;
+
+            if (thisHalfLong == thatHalfLong) {
+                // We must also look at the least significant half of the data.
+
+                // Prepare the least significant half of the data for comparison.
+                thisHalfLong = (thisLong & 0x00000000ffffffffL);
+                thatHalfLong = (thatLong & 0x00000000ffffffffL);
+
+                // We already know that the data is not equal.
+                isLessThan = thisHalfLong < thatHalfLong;
+            } else {
+                // The answer is in the most significant half of the data.
+                isLessThan = thisHalfLong < thatHalfLong;
+            }
+
+            if (isLessThan) {
+                return -1; // Returns a negative integer as this object is less than than the specified object.
+            } else {
+                return 1; // Returns a positive integer as this object is greater than than the specified object.
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedShort.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedShort.java
new file mode 100644
index 0000000..97767c7
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/UnsignedShort.java
@@ -0,0 +1,67 @@
+/*

+ * 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.axis2.databinding.types;

+

+

+/**

+ * Custom class for supporting primitive XSD data type UnsignedShort

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#unsignedShort">XML Schema 3.3.23</a>

+ */

+public class UnsignedShort extends UnsignedInt {

+

+    private static final long serialVersionUID = 6822598447692816380L;

+

+	public UnsignedShort() {

+

+    }

+

+    /**

+     * ctor for UnsignedShort

+     * @exception NumberFormatException will be thrown if validation fails

+     */

+    public UnsignedShort(long sValue) throws NumberFormatException {

+      setValue(sValue);

+    }

+

+    public UnsignedShort(String sValue) throws NumberFormatException {

+      setValue(Long.parseLong(sValue));

+    }

+

+    /**

+     *

+     * validates the data and sets the value for the object.

+     *

+     * @param sValue value

+     */

+    public void setValue(long sValue) throws NumberFormatException {

+        if (!UnsignedShort.isValid(sValue))

+            throw new NumberFormatException(

+               // Messages.getMessage("badUnsignedShort00") +

+                    String.valueOf(sValue) + "]");

+        lValue = new Long(sValue);

+    }

+

+    /**

+     *

+     * validate the value against the xsd definition

+     *

+     */

+    public static boolean isValid(long sValue) {

+        return !((sValue < 0L) || (sValue > 65535L));

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Year.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Year.java
new file mode 100644
index 0000000..5b6aa62
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/Year.java
@@ -0,0 +1,162 @@
+/*

+ * Copyright 2002-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.axis2.databinding.types;

+

+

+import java.io.Serializable;

+import java.text.NumberFormat;

+

+/**

+ * Implementation of the XML Schema type gYear

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#gYear">XML Schema 3.2.11</a>

+ */

+public class Year implements Serializable {

+	

+    private static final long serialVersionUID = 7498876120334857019L;

+    

+	int year;

+    String timezone = null;

+

+    /**

+     * Constructs a Year with the given values

+     * No timezone is specified

+     */

+    public Year(int year) throws NumberFormatException {

+        setValue(year);

+    }

+

+    /**

+     * Constructs a Year with the given values, including a timezone string

+     * The timezone is validated but not used.

+     */

+    public Year(int year, String timezone) throws NumberFormatException {

+        setValue(year, timezone);

+    }

+

+    /**

+     * Construct a Year from a String in the format [-]CCYY[timezone]

+     */

+    public Year(String source) throws NumberFormatException {

+        int negative = 0;

+

+        if (source.charAt(0) == '-') {

+            negative = 1;

+        }

+        if (source.length() < (4 + negative)) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badYear00"));

+        }

+

+        // calculate how many more than 4 digits (if any) in the year

+        int pos = 4 + negative;  // skip minus sign if present

+        while (pos < source.length() && Character.isDigit(source.charAt(pos))) {

+            ++pos;

+        }

+

+        setValue(Integer.parseInt(source.substring(0,pos)),

+                 source.substring(pos));

+    }

+

+    public int getYear() {

+        return year;

+    }

+

+    public void setYear(int year) {

+        // validate year, more than 4 digits are allowed!

+        if (year == 0) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badYear00"));

+        }

+

+        this.year = year;

+    }

+

+    public String getTimezone() {

+        return timezone;

+    }

+

+    public void setTimezone(String timezone) {

+        // validate timezone

+        if (timezone != null && timezone.length() > 0) {

+            // Format [+/-]HH:MM

+            if (timezone.charAt(0)=='+' || (timezone.charAt(0)=='-')) {

+                    if (timezone.length() != 6 ||

+                        !Character.isDigit(timezone.charAt(1)) ||

+                        !Character.isDigit(timezone.charAt(2)) ||

+                        timezone.charAt(3) != ':'              ||

+                        !Character.isDigit(timezone.charAt(4)) ||

+                        !Character.isDigit(timezone.charAt(5)))

+                        throw new NumberFormatException();

+                                //Messages.getMessage("badTimezone00"));

+

+            } else if (!timezone.equals("Z")) {

+                throw new NumberFormatException();

+                       // Messages.getMessage("badTimezone00"));

+            }

+            // if we got this far, its good

+            this.timezone = timezone;

+        }

+    }

+

+    public void setValue(int year, String timezone)

+        throws NumberFormatException {

+        setYear(year);

+        setTimezone(timezone);

+    }

+

+    public void setValue(int year) throws NumberFormatException {

+        setYear(year);

+    }

+

+    public String toString() {

+        // use NumberFormat to ensure leading zeros

+        NumberFormat nf = NumberFormat.getInstance();

+        nf.setGroupingUsed(false);

+

+        // year

+        nf.setMinimumIntegerDigits(4);

+        String s = nf.format(year);

+

+        // timezone

+        if (timezone != null) {

+            s = s + timezone;

+        }

+        return s;

+    }

+

+    public boolean equals(Object obj) {

+        if (!(obj instanceof Year)) return false;

+        Year other = (Year) obj;

+        if (this == obj) return true;

+

+        boolean equals = (this.year == other.year);

+        if (timezone != null) {

+            equals = equals && timezone.equals(other.timezone);

+        }

+        return equals;

+    }

+

+    /**

+     * Return the value of year XORed with the hashCode of timezone

+     * iff one is defined.

+     *

+     * @return an <code>int</code> value

+     */

+    public int hashCode() {

+        return null == timezone ? year : year ^ timezone.hashCode();

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/YearMonth.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/YearMonth.java
new file mode 100644
index 0000000..4c03b46
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/YearMonth.java
@@ -0,0 +1,186 @@
+/*

+ * Copyright 2002-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.axis2.databinding.types;

+

+

+import java.io.Serializable;

+import java.text.NumberFormat;

+

+/**

+ * Implementation of the XML Schema type gYearMonth

+ *

+ * @see <a href="http://www.w3.org/TR/xmlschema-2/#gYearMonth">XML Schema 3.2.10</a>

+ */

+public class YearMonth implements Serializable {

+	

+    private static final long serialVersionUID = -5510739842661690551L;

+    

+	int year;

+    int month;

+    String timezone = null;

+

+    /**

+     * Constructs a YearMonth with the given values

+     * No timezone is specified

+     */

+    public YearMonth(int year, int month) throws NumberFormatException {

+        setValue(year, month);

+    }

+

+    /**

+     * Constructs a YearMonth with the given values, including a timezone string

+     * The timezone is validated but not used.

+     */

+    public YearMonth(int year, int month, String timezone) throws NumberFormatException {

+        setValue(year, month, timezone);

+    }

+

+    /**

+     * Construct a YearMonth from a String in the format [-]CCYY-MM

+     */

+    public YearMonth(String source) throws NumberFormatException {

+        int negative = 0;

+

+        if (source.charAt(0) == '-') {

+            negative = 1;

+        }

+        if (source.length() < (7 + negative)) {

+            throw new NumberFormatException();

+                   // Messages.getMessage("badYearMonth00"));

+        }

+

+        // look for first '-'

+        int pos = source.substring(negative).indexOf('-');

+        if (pos < 0) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badYearMonth00"));

+        }

+        if (negative > 0) pos++;    //adjust index for orginal string

+

+        setValue(Integer.parseInt(source.substring(0,pos)),

+                 Integer.parseInt(source.substring(pos+1,pos+3)),

+                 source.substring(pos+3));

+    }

+

+    public int getYear() {

+        return year;

+    }

+

+    public void setYear(int year) {

+        // validate year, more than 4 digits are allowed!

+        if (year == 0) {

+            throw new NumberFormatException();

+                   // Messages.getMessage("badYearMonth00"));

+        }

+

+        this.year = year;

+    }

+

+    public int getMonth() {

+        return month;

+    }

+

+    public void setMonth(int month) {

+        // validate month

+        if (month < 1 || month > 12) {

+            throw new NumberFormatException();

+                    //Messages.getMessage("badYearMonth00"));

+        }

+        this.month = month;

+    }

+

+    public String getTimezone() {

+        return timezone;

+    }

+

+    public void setTimezone(String timezone) {

+        // validate timezone

+        if (timezone != null && timezone.length() > 0) {

+            // Format [+/-]HH:MM

+            if (timezone.charAt(0)=='+' || (timezone.charAt(0)=='-')) {

+                    if (timezone.length() != 6 ||

+                        !Character.isDigit(timezone.charAt(1)) ||

+                        !Character.isDigit(timezone.charAt(2)) ||

+                        timezone.charAt(3) != ':'              ||

+                        !Character.isDigit(timezone.charAt(4)) ||

+                        !Character.isDigit(timezone.charAt(5)))

+                        throw new NumberFormatException();

+                                //Messages.getMessage("badTimezone00"));

+

+            } else if (!timezone.equals("Z")) {

+                throw new NumberFormatException();

+                        //Messages.getMessage("badTimezone00"));

+            }

+            // if we got this far, its good

+            this.timezone = timezone;

+        }

+    }

+

+    public void setValue(int year, int month, String timezone) throws NumberFormatException {

+        setYear(year);

+        setMonth(month);

+        setTimezone(timezone);

+    }

+

+    public void setValue(int year, int month) throws NumberFormatException {

+        setYear(year);

+        setMonth(month);

+    }

+

+    public String toString() {

+        // use NumberFormat to ensure leading zeros

+        NumberFormat nf = NumberFormat.getInstance();

+        nf.setGroupingUsed(false);

+

+        // year

+        nf.setMinimumIntegerDigits(4);

+        String s = nf.format(year) + "-";

+

+        // month

+        nf.setMinimumIntegerDigits(2);

+        s += nf.format(month);

+

+        // timezone

+        if (timezone != null) {

+            s = s + timezone;

+        }

+        return s;

+    }

+

+    public boolean equals(Object obj) {

+        if (!(obj instanceof YearMonth)) return false;

+        YearMonth other = (YearMonth) obj;

+        if (this == obj) return true;

+

+        boolean equals = (this.year == other.year && this.month == other.month);

+        if (timezone != null) {

+            equals = equals && timezone.equals(other.timezone);

+        }

+        return equals;

+    }

+

+    /**

+     * Return the value of (month + year) XORed with the hashCode of

+     * timezone iff one is defined.

+     *

+     * @return an <code>int</code> value

+     */

+    public int hashCode() {

+        return null == timezone

+            ? (month + year)

+            : (month + year) ^ timezone.hashCode();

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/package.html b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/package.html
new file mode 100644
index 0000000..cdacbea
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/types/package.html
@@ -0,0 +1,5 @@
+<html>

+<body>

+ These classes are directly salvaged from Axis 1 codebase. Original author comments have been preserved! 

+</body>

+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
new file mode 100644
index 0000000..a3a9a17
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
@@ -0,0 +1,685 @@
+/*

+* Copyright 2004,2005 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.axis2.databinding.utils;

+

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;

+import org.apache.axiom.om.util.Base64;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.databinding.typemapping.SimpleTypeMapper;

+import org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl;

+import org.apache.axis2.engine.ObjectSupplier;

+import org.apache.axis2.util.StreamWrapper;

+import org.apache.ws.java2wsdl.utils.TypeTable;

+import org.codehaus.jam.*;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamReader;

+import java.beans.BeanInfo;

+import java.beans.IntrospectionException;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.lang.reflect.Array;

+import java.lang.reflect.InvocationTargetException;

+import java.util.*;

+

+

+public class BeanUtil {

+

+    private static int nsCount = 1;

+

+    /**

+     * To Serilize Bean object this method is used, this will create an object array using given

+     * bean object

+     *

+     * @param beanObject

+     * @param beanName

+     */

+    public static XMLStreamReader getPullParser(Object beanObject,

+                                                QName beanName,

+                                                TypeTable typeTable, boolean qualified) {

+        try {

+            JamServiceFactory factory = JamServiceFactory.getInstance();

+            JamServiceParams jam_service_parms = factory.createServiceParams();

+            jam_service_parms.addClassLoader(beanObject.getClass().getClassLoader());

+//            beanObject.getClass().isArray()

+

+            jam_service_parms.includeClass(beanObject.getClass().getName());

+            JamService service = factory.createService(jam_service_parms);

+            JamClassIterator jClassIter = service.getClasses();

+            JClass jClass;

+            if (jClassIter.hasNext()) {

+                jClass = (JClass) jClassIter.next();

+            } else {

+                throw new AxisFault("No service class found , exception from JAM");

+            }

+            QName elemntNameSpace = null;

+            if (typeTable != null && qualified) {

+                QName qNamefortheType = typeTable.getQNamefortheType(beanObject.getClass().getName());

+                elemntNameSpace = new QName(qNamefortheType.getNamespaceURI(),

+                        "elementName");

+            }

+

+            // properties from JAM

+            JProperty properties [] = jClass.getDeclaredProperties();

+            Arrays.sort(properties);

+            BeanInfo beanInfo = Introspector.getBeanInfo(beanObject.getClass());

+            PropertyDescriptor [] propDescs = beanInfo.getPropertyDescriptors();

+            HashMap propertMap = new HashMap();

+            for (int i = 0; i < propDescs.length; i++) {

+                PropertyDescriptor propDesc = propDescs[i];

+                propertMap.put(propDesc.getName(), propDesc);

+            }

+            ArrayList object = new ArrayList();

+            for (int i = 0; i < properties.length; i++) {

+                JProperty property = properties[i];

+                PropertyDescriptor propDesc = (PropertyDescriptor) propertMap.get(

+                        getCorrectName(property.getSimpleName()));

+                if (propDesc == null) {

+                    // JAM does bad thing so I need to add this

+                    continue;

+                }

+                Class ptype = propDesc.getPropertyType();

+                if (propDesc.getName().equals("class")) {

+                    continue;

+                }

+                if (SimpleTypeMapper.isSimpleType(ptype)) {

+                    Object value = propDesc.getReadMethod().invoke(beanObject,

+                            null);

+                    if (elemntNameSpace != null) {

+                        object.add(new QName(elemntNameSpace.getNamespaceURI(),

+                                propDesc.getName(), elemntNameSpace.getPrefix()));

+                    } else {

+                        object.add(new QName(beanName.getNamespaceURI(),

+                                propDesc.getName(), beanName.getPrefix()));

+                    }

+                    object.add(value == null ? null : SimpleTypeMapper.getStringValue(value));

+                } else if (ptype.isArray()) {

+                    if (SimpleTypeMapper.isSimpleType(ptype.getComponentType())) {

+                        Object value = propDesc.getReadMethod().invoke(beanObject,

+                                null);

+                        int i1 = Array.getLength(value);

+                        for (int j = 0; j < i1; j++) {

+                            Object o = Array.get(value, j);

+                            if (elemntNameSpace != null) {

+                                object.add(new QName(elemntNameSpace.getNamespaceURI(),

+                                        propDesc.getName(), elemntNameSpace.getPrefix()));

+                            } else {

+                                object.add(new QName(beanName.getNamespaceURI(),

+                                        propDesc.getName(), beanName.getPrefix()));

+                            }

+                            object.add(o == null ? null : SimpleTypeMapper.getStringValue(o));

+                        }

+                    } else {

+                        Object value [] = (Object[]) propDesc.getReadMethod().invoke(beanObject,

+                                null);

+                        for (int j = 0; j < value.length; j++) {

+                            Object o = value[j];

+                            if (elemntNameSpace != null) {

+                                object.add(new QName(elemntNameSpace.getNamespaceURI(),

+                                        propDesc.getName(), elemntNameSpace.getPrefix()));

+                            } else {

+                                object.add(new QName(beanName.getNamespaceURI(),

+                                        propDesc.getName(), beanName.getPrefix()));

+                            }

+                            object.add(o);

+                        }

+                    }

+

+                } else if (SimpleTypeMapper.isArrayList(ptype)) {

+                    Object value = propDesc.getReadMethod().invoke(beanObject,

+                            null);

+                    ArrayList objList = (ArrayList) value;

+                    if (objList != null && objList.size() > 0) {

+                        //this was given error , when the array.size = 0

+                        // and if the array contain simple type , then the ADBPullParser asked

+                        // PullParser from That simpel type

+                        for (int j = 0; j < objList.size(); j++) {

+                            Object o = objList.get(j);

+                            if (SimpleTypeMapper.isSimpleType(o)) {

+                                if (elemntNameSpace != null) {

+                                    object.add(new QName(elemntNameSpace.getNamespaceURI(),

+                                            propDesc.getName(), elemntNameSpace.getPrefix()));

+                                } else {

+                                    object.add(new QName(beanName.getNamespaceURI(),

+                                            propDesc.getName(), beanName.getPrefix()));

+                                }

+                                object.add(o);

+                            } else {

+                                if (elemntNameSpace != null) {

+                                    object.add(new QName(elemntNameSpace.getNamespaceURI(),

+                                            propDesc.getName(), elemntNameSpace.getPrefix()));

+                                } else {

+                                    object.add(new QName(beanName.getNamespaceURI(),

+                                            propDesc.getName(), beanName.getPrefix()));

+                                }

+                                object.add(o);

+                            }

+                        }

+

+                    }

+                } else {

+                    if (typeTable != null) {

+                        QName qNamefortheType = typeTable.getQNamefortheType(ptype.getName());

+                        object.add(new QName(qNamefortheType.getNamespaceURI(),

+                                propDesc.getName(), qNamefortheType.getPrefix()));

+                    } else {

+                        object.add(new QName(beanName.getNamespaceURI(),

+                                propDesc.getName(), beanName.getPrefix()));

+                    }

+                    Object value = propDesc.getReadMethod().invoke(beanObject,

+                            null);

+                    object.add(value);

+                }

+            }

+            return new ADBXMLStreamReaderImpl(beanName, object.toArray(), null, typeTable,qualified);

+        } catch (java.io.IOException e) {

+            throw new RuntimeException(e);

+        } catch (java.beans.IntrospectionException e) {

+            throw new RuntimeException(e);

+        } catch (java.lang.reflect.InvocationTargetException e) {

+            throw new RuntimeException(e);

+        } catch (java.lang.IllegalAccessException e) {

+            throw new RuntimeException(e);

+        }

+    }

+

+    /**

+     * to get the pull parser for a given bean object , generate the wrpper element using class name

+     *

+     * @param beanObject

+     */

+    public static XMLStreamReader getPullParser(Object beanObject) {

+        String className = beanObject.getClass().getName();

+        if (className.indexOf(".") > 0) {

+            className = className.substring(className.lastIndexOf('.') + 1,

+                    className.length());

+        }

+        return getPullParser(beanObject, new QName(className), null, false);

+    }

+

+    public static Object deserialize(Class beanClass,

+                                     OMElement beanElement,

+                                     ObjectSupplier objectSupplier,

+                                     String arrayLocalName)

+            throws AxisFault {

+        Object beanObj;

+        try {

+            if (beanClass.isArray()) {

+                ArrayList valueList = new ArrayList();

+                Class arrayClassType = beanClass.getComponentType();

+                Iterator parts = beanElement.getChildElements();

+                OMElement omElement;

+                while (parts.hasNext()) {

+                    Object objValue = parts.next();

+                    if (objValue instanceof OMElement) {

+                        omElement = (OMElement) objValue;

+                        if (!arrayLocalName.equals(omElement.getLocalName())) {

+                            continue;

+                        }

+                        Object obj = deserialize(arrayClassType,

+                                omElement,

+                                objectSupplier, null);

+                        if (obj != null) {

+                            valueList.add(obj);

+                        }

+                    }

+                }

+                return ConverterUtil.convertToArray(arrayClassType,

+                        valueList);

+            } else {

+                if (SimpleTypeMapper.isSimpleType(beanClass)) {

+                    return SimpleTypeMapper.getSimpleTypeObject(beanClass, beanElement);

+                }

+                HashMap properties = new HashMap();

+                BeanInfo beanInfo = Introspector.getBeanInfo(beanClass);

+                PropertyDescriptor [] propDescs = beanInfo.getPropertyDescriptors();

+                for (int i = 0; i < propDescs.length; i++) {

+                    PropertyDescriptor proprty = propDescs[i];

+                    properties.put(proprty.getName(), proprty);

+                }

+

+                beanObj = objectSupplier.getObject(beanClass);

+                boolean tuched = false;

+                Iterator elements = beanElement.getChildren();

+                while (elements.hasNext()) {

+                    OMElement parts;

+                    Object objValue = elements.next();

+                    if (objValue instanceof OMElement) {

+                        parts = (OMElement) objValue;

+                    } else {

+                        continue;

+                    }

+                    // if parts/@href != null then need to find element with id and deserialize.

+                    // before that first check whether we already have it in the hashtable

+                    String partsLocalName = parts.getLocalName();

+                    PropertyDescriptor prty = (PropertyDescriptor) properties.get(partsLocalName);

+                    if (prty != null) {

+                        Class parameters = prty.getPropertyType();

+                        if (prty.equals("class"))

+                            continue;

+

+                        Object partObj;

+                        if (SimpleTypeMapper.isSimpleType(parameters)) {

+                            partObj = SimpleTypeMapper.getSimpleTypeObject(parameters, parts);

+                        } else if (SimpleTypeMapper.isArrayList(parameters)) {

+                            partObj = SimpleTypeMapper.getArrayList((OMElement)

+                                    parts.getParent(), prty.getName());

+                        } else if (parameters.isArray()) {

+                            partObj = deserialize(parameters, (OMElement) parts.getParent(),

+                                    objectSupplier, prty.getName());

+                        } else {

+                            partObj = deserialize(parameters, parts, objectSupplier, null);

+                        }

+                        Object [] parms = new Object[]{partObj};

+                        prty.getWriteMethod().invoke(beanObj, parms);

+                        tuched = true;

+                    }

+                }

+                if (tuched) {

+                    return beanObj;

+                } else {

+                    return null;

+                }

+            }

+        } catch (IllegalAccessException e) {

+            throw new AxisFault("IllegalAccessException : " + e);

+        } catch (InvocationTargetException e) {

+            throw new AxisFault("InvocationTargetException : " + e);

+        } catch (IntrospectionException e) {

+            throw new AxisFault("IntrospectionException : " + e);

+        }

+

+

+    }

+

+    public static Object deserialize(Class beanClass,

+                                     OMElement beanElement,

+                                     MultirefHelper helper,

+                                     ObjectSupplier objectSupplier) throws AxisFault {

+        Object beanObj;

+        try {

+            HashMap properties = new HashMap();

+            BeanInfo beanInfo = Introspector.getBeanInfo(beanClass);

+            PropertyDescriptor [] propDescs = beanInfo.getPropertyDescriptors();

+            for (int i = 0; i < propDescs.length; i++) {

+                PropertyDescriptor proprty = propDescs[i];

+                properties.put(proprty.getName(), proprty);

+            }

+

+            beanObj = objectSupplier.getObject(beanClass);

+            Iterator elements = beanElement.getChildren();

+            while (elements.hasNext()) {

+                Object child = elements.next();

+                OMElement parts;

+                if (child instanceof OMElement) {

+                    parts = (OMElement) child;

+                } else {

+                    continue;

+                }

+                String partsLocalName = parts.getLocalName();

+                PropertyDescriptor prty = (PropertyDescriptor) properties.get(

+                        partsLocalName.toLowerCase());

+                if (prty != null) {

+                    Class parameters = prty.getPropertyType();

+                    if (prty.equals("class"))

+                        continue;

+                    Object partObj;

+                    OMAttribute attr = MultirefHelper.processRefAtt(parts);

+                    if (attr != null) {

+                        String refId = MultirefHelper.getAttvalue(attr);

+                        partObj = helper.getObject(refId);

+                        if (partObj == null) {

+                            partObj = helper.processRef(parameters, refId, objectSupplier);

+                        }

+                    } else {

+                        partObj = SimpleTypeMapper.getSimpleTypeObject(parameters, parts);

+                        if (partObj == null) {

+                            partObj = deserialize(parameters, parts, objectSupplier, null);

+                        }

+                    }

+                    Object [] parms = new Object[]{partObj};

+                    prty.getWriteMethod().invoke(beanObj, parms);

+                }

+            }

+        } catch (IllegalAccessException e) {

+            throw new AxisFault("IllegalAccessException : " + e);

+        } catch (InvocationTargetException e) {

+            throw new AxisFault("InvocationTargetException : " + e);

+        } catch (IntrospectionException e) {

+            throw new AxisFault("IntrospectionException : " + e);

+        }

+        return beanObj;

+    }

+

+

+    /**

+     * To get JavaObjects from XML elemnt , the element most of the time contains only one element

+     * in that case that element will be converted to the JavaType specified by the javaTypes array

+     * The algo is as follows, get the childerns of the response element , and if it conatian more than

+     * one element then check the retuen type of that element and conver that to corresponding JavaType

+     *

+     * @param response  OMElement

+     * @param javaTypes Array of JavaTypes

+     * @return Array of objects

+     * @throws AxisFault

+     */

+    public static Object [] deserialize(OMElement response,

+                                        Object [] javaTypes,

+                                        ObjectSupplier objectSupplier) throws AxisFault {

+        /*

+         * Take the number of parameters in the method and , only take that much of child elements

+         * from the OMElement , other are ignore , as an example

+         * if the method is , foo(String a , int b)

+         * and if the OMElemet

+         * <foo>

+         *  <arg0>Val1</arg0>

+         *  <arg1>Val2</arg1>

+         *  <arg2>Val3</arg2>

+         *

+         * only the val1 and Val2 take into account

+         */

+        int length = javaTypes.length;

+        int count = 0;

+        Object [] retObjs = new Object[length];

+

+        /*

+        * If the body first child contains , then there can not be any other element withot

+        * refs , so I can assume if the first child of the body first element has ref then

+        * the message has to handle as mutiref message.

+        * as an exmple if the body is like below

+        * <foo>

+        *  <arg0 href="#0"/>

+        * </foo>

+        *

+        * then there can not be any element without refs , meaning following we are not handling

+        * <foo>

+        *  <arg0 href="#0"/>

+        *  <arg1>absbsbs</arg1>

+        * </foo>

+        */

+        Iterator parts = response.getChildren();

+        //to handle multirefs

+        //have to check the instanceof

+        MultirefHelper helper = new MultirefHelper((OMElement) response.getParent());

+        //to support array . if the parameter type is array , then all the omelemnts with that paramtre name

+        // has to  get and add to the list

+        Class classType;

+        String currentLocalName;

+        while (parts.hasNext() && count < length) {

+            Object objValue = parts.next();

+            OMElement omElement;

+            if (objValue instanceof OMElement) {

+                omElement = (OMElement) objValue;

+            } else {

+                continue;

+            }

+            currentLocalName = omElement.getLocalName();

+            classType = (Class) javaTypes[count];

+            omElement = ProcessElement(classType, omElement, helper, parts,

+                    currentLocalName, retObjs, count, objectSupplier);

+            while (omElement != null) {

+                count ++;

+                omElement = ProcessElement((Class) javaTypes[count], omElement,

+                        helper, parts, omElement.getLocalName(), retObjs, count, objectSupplier);

+            }

+            count ++;

+        }

+

+        // Ensure that we have at least a zero element array

+        for (int i = 0; i < length; i++) {

+            Class clazz = (Class) javaTypes[i];

+            if (retObjs[i] == null && clazz.isArray()) {

+                retObjs[i] = Array.newInstance(clazz.getComponentType(), 0);

+            }

+        }

+

+        helper.clean();

+        return retObjs;

+    }

+

+    private static OMElement ProcessElement(Class classType, OMElement omElement,

+                                            MultirefHelper helper, Iterator parts,

+                                            String currentLocalName,

+                                            Object[] retObjs,

+                                            int count,

+                                            ObjectSupplier objectSupplier) throws AxisFault {

+        Object objValue;

+        if (classType.isArray()) {

+            boolean done = true;

+            ArrayList valueList = new ArrayList();

+            Class arrayClassType = classType.getComponentType();

+            if ("byte".equals(arrayClassType.getName())) {

+                retObjs[count] = processObject(omElement, arrayClassType, helper, true, objectSupplier);

+                return null;

+            } else {

+                valueList.add(processObject(omElement, arrayClassType, helper, true, objectSupplier));

+            }

+            while (parts.hasNext()) {

+                objValue = parts.next();

+                if (objValue instanceof OMElement) {

+                    omElement = (OMElement) objValue;

+                } else {

+                    continue;

+                }

+                if (!currentLocalName.equals(omElement.getLocalName())) {

+                    done = false;

+                    break;

+                }

+                Object o = processObject(omElement, arrayClassType,

+                        helper, true, objectSupplier);

+                valueList.add(o);

+            }

+            retObjs[count] = ConverterUtil.convertToArray(arrayClassType,

+                    valueList);

+            if (!done) {

+                return omElement;

+            }

+        } else {

+            //handling refs

+            retObjs[count] = processObject(omElement, classType, helper, false, objectSupplier);

+        }

+        return null;

+    }

+

+    public static Object processObject(OMElement omElement,

+                                       Class classType,

+                                       MultirefHelper helper,

+                                       boolean isArrayType,

+                                       ObjectSupplier objectSupplier) throws AxisFault {

+        boolean hasRef = false;

+        OMAttribute omatribute = MultirefHelper.processRefAtt(omElement);

+        String ref = null;

+        if (omatribute != null) {

+            hasRef = true;

+            ref = MultirefHelper.getAttvalue(omatribute);

+        }

+        if (OMElement.class.isAssignableFrom(classType)) {

+            if (hasRef) {

+                OMElement elemnt = helper.getOMElement(ref);

+                if (elemnt == null) {

+                    return helper.processOMElementRef(ref);

+                } else {

+                    return elemnt;

+                }

+            } else

+                return omElement;

+        } else {

+            if (hasRef) {

+                if (helper.getObject(ref) != null) {

+                    return helper.getObject(ref);

+                } else {

+                    return helper.processRef(classType, ref, objectSupplier);

+                }

+            } else {

+                OMAttribute attribute = omElement.getAttribute(

+                        new QName("http://www.w3.org/2001/XMLSchema-instance", "nil", "xsi"));

+                if (attribute != null) {

+                    return null;

+                }

+                if (SimpleTypeMapper.isSimpleType(classType)) {

+                    if (isArrayType && "byte".equals(classType.getName())) {

+                        String value = omElement.getText();

+                        return Base64.decode(value);

+                    } else {

+                        return SimpleTypeMapper.getSimpleTypeObject(classType, omElement);

+                    }

+                } else if (SimpleTypeMapper.isArrayList(classType)) {

+                    return SimpleTypeMapper.getArrayList(omElement);

+                } else {

+                    return BeanUtil.deserialize(classType, omElement, objectSupplier, null);

+                }

+            }

+        }

+    }

+

+    public static OMElement getOMElement(QName opName,

+                                         Object [] args,

+                                         QName partName,

+                                         boolean qualifed,

+                                         TypeTable typeTable) {

+        ArrayList objects;

+        objects = new ArrayList();

+        int argCount = 0;

+        for (int i = 0; i < args.length; i++) {

+            Object arg = args[i];

+            if (arg == null) {

+                objects.add("item" + i);

+                objects.add(arg);

+                continue;

+            }

+            //todo if the request parameter has name other than argi (0<i<n) , there should be a

+            //way to do that , to solve that problem we need to have RPCRequestParameter

+            //note that The value of request parameter can either be simple type or JavaBean

+            if (arg instanceof Object[]) {

+                Object array [] = (Object[]) arg;

+                for (int j = 0; j < array.length; j++) {

+                    Object o = array[j];

+                    if (o == null) {

+                        objects.add("item" + argCount);

+                        objects.add(o);

+                    } else {

+                        if (SimpleTypeMapper.isSimpleType(o)) {

+                            objects.add("item" + argCount);

+                            objects.add(SimpleTypeMapper.getStringValue(o));

+                        } else {

+                            objects.add(new QName("item" + argCount));

+                            if (o instanceof OMElement) {

+                                OMFactory fac = OMAbstractFactory.getOMFactory();

+                                OMElement wrappingElement;

+                                if (partName == null) {

+                                    wrappingElement = fac.createOMElement("item" + argCount, null);

+                                    wrappingElement.addChild((OMElement) o);

+                                } else {

+                                    wrappingElement = fac.createOMElement(partName, null);

+                                    wrappingElement.addChild((OMElement) o);

+                                }

+                                objects.add(wrappingElement);

+                            } else {

+                                objects.add(o);

+                            }

+                        }

+                    }

+                }

+            } else {

+                if (SimpleTypeMapper.isSimpleType(arg)) {

+                    if (partName == null) {

+                        objects.add("arg" + argCount);

+                    } else {

+                        objects.add(partName);

+                    }

+                    objects.add(SimpleTypeMapper.getStringValue(arg));

+                } else {

+                    if (partName == null) {

+                        objects.add(new QName("arg" + argCount));

+                    } else {

+                        objects.add(partName);

+                    }

+                    if (arg instanceof OMElement) {

+                        OMFactory fac = OMAbstractFactory.getOMFactory();

+                        OMElement wrappingElement;

+                        if (partName == null) {

+                            wrappingElement = fac.createOMElement("arg" + argCount, null);

+                            wrappingElement.addChild((OMElement) arg);

+                        } else {

+                            wrappingElement = fac.createOMElement(partName, null);

+                            wrappingElement.addChild((OMElement) arg);

+                        }

+                        objects.add(wrappingElement);

+                    } else if (arg instanceof byte[]) {

+                        objects.add(Base64.encode((byte[]) arg));

+                    } else {

+                        objects.add(arg);

+                    }

+                }

+            }

+            argCount ++;

+        }

+

+        XMLStreamReader xr = new ADBXMLStreamReaderImpl(opName, objects.toArray(), null, typeTable, qualifed);

+

+        StreamWrapper parser = new StreamWrapper(xr);

+        StAXOMBuilder stAXOMBuilder =

+                OMXMLBuilderFactory.createStAXOMBuilder(

+                        OMAbstractFactory.getSOAP11Factory(), parser);

+        stAXOMBuilder.setDoDebug(true);

+        return stAXOMBuilder.getDocumentElement();

+    }

+

+    /**

+     * @deprecated Please use getUniquePrefix

+     */

+    public static String getUniquePrifix

+            () {

+        return "ns" + nsCount++;

+    }

+

+    /**

+     * increments the namespace counter and returns a new prefix

+     *

+     * @return unique prefix

+     */

+    public static String getUniquePrefix

+            () {

+        return "ns" + nsCount++;

+    }

+

+    /**

+     * JAM convert first name of an attribute into UpperCase as an example

+     * if there is a instance variable called foo in a bean , then Jam give that as Foo

+     * so this method is to correct that error

+     *

+     * @param wrongName

+     * @return the right name, using english as the locale for case conversion

+     */

+    private static String getCorrectName

+            (String

+                    wrongName) {

+        if (wrongName.length() > 1) {

+            return wrongName.substring(0, 1).toLowerCase(Locale.ENGLISH)

+                    + wrongName.substring(1, wrongName.length());

+        } else {

+            return wrongName.substring(0, 1).toLowerCase(Locale.ENGLISH);

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/Constants.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/Constants.java
new file mode 100644
index 0000000..3f9fbb6
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/Constants.java
@@ -0,0 +1,35 @@
+package org.apache.axis2.databinding.utils;

+

+import org.apache.axis2.databinding.utils.reader.OMAttribKey;

+import org.apache.axis2.databinding.utils.reader.OMElementKey;

+import org.apache.axiom.om.OMConstants;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public interface Constants {

+

+    static  String NIL="nil";

+    static  String TRUE="true";

+    static  String XSI_NAMESPACE ="http://www.w3.org/2001/XMLSchema-instance";

+

+    static Object OM_ATTRIBUTE_KEY = new OMAttribKey();

+    static Object OM_ELEMENT_KEY = new OMElementKey();

+

+    static final String IS_BINARY = OMConstants.IS_BINARY;

+    static final String DATA_HANDLER = OMConstants.DATA_HANDLER;

+    static final String OPTIMIZATION_ENABLED = OMConstants.IS_DATA_HANDLERS_AWARE;

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/Converter.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/Converter.java
new file mode 100644
index 0000000..c6a4d70
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/Converter.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright 2004,2005 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.axis2.databinding.utils;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Converter
+ */
+public class Converter {
+    public static Object convert(Object arg, Class destClass)
+    {
+        if (destClass == null) {
+            return arg;
+        }
+
+        Class argHeldType = null;
+        if (arg != null) {
+            argHeldType = getHolderValueType(arg.getClass());
+        }
+
+        if (arg != null && argHeldType == null && destClass.isAssignableFrom(arg.getClass())) {
+            return arg;
+        }
+
+        // See if a previously converted value is stored in the argument.
+        Object destValue = null;
+
+        // Get the destination held type or the argument held type if they exist
+        Class destHeldType = getHolderValueType(destClass);
+
+        // Convert between Calendar and Date
+        if (arg instanceof Calendar && destClass == Date.class) {
+            return ((Calendar) arg).getTime();
+        }
+        if (arg instanceof Date && destClass == Calendar.class) {
+        	Calendar calendar = Calendar.getInstance();
+        	calendar.setTime((Date) arg);
+            return calendar;
+        }
+
+        // Convert between Calendar and java.sql.Date
+        if (arg instanceof Calendar && destClass == java.sql.Date.class) {
+            return new java.sql.Date(((Calendar) arg).getTime().getTime());
+        }
+
+        // Convert between HashMap and Hashtable
+        if (arg instanceof HashMap && destClass == Hashtable.class) {
+            return new Hashtable((HashMap)arg);
+        }
+
+        // If the destination is an array and the source
+        // is a suitable component, return an array with
+        // the single item.
+        if (arg != null &&
+            destClass.isArray() &&
+            !destClass.getComponentType().equals(Object.class) &&
+            destClass.getComponentType().isAssignableFrom(arg.getClass())) {
+            Object array =
+                Array.newInstance(destClass.getComponentType(), 1);
+            Array.set(array, 0, arg);
+            return array;
+        }
+
+        // Return if no conversion is available
+        if (!(arg instanceof Collection ||
+              (arg != null && arg.getClass().isArray())) &&
+            ((destHeldType == null && argHeldType == null) ||
+             (destHeldType != null && argHeldType != null))) {
+            return arg;
+        }
+
+        // Flow to here indicates that neither arg or destClass is a Holder
+
+        if (arg == null) {
+            return arg;
+        }
+
+        // The arg may be an array or List
+        int length = 0;
+        if (arg.getClass().isArray()) {
+            length = Array.getLength(arg);
+        } else {
+            length = ((Collection) arg).size();
+        }
+        if (destClass.isArray()) {
+            if (destClass.getComponentType().isPrimitive()) {
+
+                Object array = Array.newInstance(destClass.getComponentType(),
+                                                 length);
+                // Assign array elements
+                if (arg.getClass().isArray()) {
+                    for (int i = 0; i < length; i++) {
+                        Array.set(array, i, Array.get(arg, i));
+                    }
+                } else {
+                    int idx = 0;
+                    for (Iterator i = ((Collection)arg).iterator();
+                            i.hasNext();) {
+                        Array.set(array, idx++, i.next());
+                    }
+                }
+                destValue = array;
+
+            } else {
+                Object [] array;
+                try {
+                    array = (Object [])Array.newInstance(destClass.getComponentType(),
+                                                         length);
+                } catch (Exception e) {
+                    return arg;
+                }
+
+                // Use convert to assign array elements.
+                if (arg.getClass().isArray()) {
+                    for (int i = 0; i < length; i++) {
+                        array[i] = convert(Array.get(arg, i),
+                                           destClass.getComponentType());
+                    }
+                } else {
+                    int idx = 0;
+                    for (Iterator i = ((Collection)arg).iterator();
+                            i.hasNext();) {
+                        array[idx++] = convert(i.next(),
+                                           destClass.getComponentType());
+                    }
+                }
+                destValue = array;
+            }
+        }
+        else if (Collection.class.isAssignableFrom(destClass)) {
+            Collection newList = null;
+            try {
+                // if we are trying to create an interface, build something
+                // that implements the interface
+                if (destClass == Collection.class || destClass == java.util.List.class) {
+                    newList = new ArrayList();
+                } else if (destClass == Set.class) {
+                    newList = new HashSet();
+                } else {
+                    newList = (Collection)destClass.newInstance();
+                }
+            } catch (Exception e) {
+                // Couldn't build one for some reason... so forget it.
+                return arg;
+            }
+
+            if (arg.getClass().isArray()) {
+                for (int j = 0; j < length; j++) {
+                    newList.add(Array.get(arg, j));
+                }
+            } else {
+                for (Iterator j = ((Collection)arg).iterator();
+                            j.hasNext();) {
+                    newList.add(j.next());
+                }
+            }
+            destValue = newList;
+        }
+        else {
+            destValue = arg;
+        }
+
+        return destValue;
+    }
+
+    private static Class getHolderValueType(Class aClass) {
+        return null;
+    }
+}
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
new file mode 100644
index 0000000..a6ad20b
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
@@ -0,0 +1,865 @@
+package org.apache.axis2.databinding.utils;
+
+import org.apache.axiom.attachments.ByteArrayDataSource;
+import org.apache.axiom.attachments.utils.IOUtils;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axis2.databinding.i18n.ADBMessages;
+import org.apache.axis2.databinding.types.*;
+import org.apache.axis2.util.Base64;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.SimpleDateFormat;
+import java.util.*;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * Converter methods to go from
+ * 1. simple type -> String
+ * 2. simple type -> Object
+ * 3. String -> simpletype
+ * 4. Object list -> array
+ */
+public class ConverterUtil {
+    private static final String POSITIVE_INFINITY = "INF";
+    private static final String NEGATIVE_INFINITY = "-INF";
+
+    /* String conversion methods */
+    public static String convertToString(int i) {
+        return Integer.toString(i);
+    }
+
+    public static String convertToString(float i) {
+        return Float.toString(i);
+    }
+
+    public static String convertToString(long i) {
+        return Long.toString(i);
+    }
+
+    public static String convertToString(double i) {
+        return Double.toString(i);
+    }
+
+    public static String convertToString(byte i) {
+        return Byte.toString(i);
+    }
+
+    public static String convertToString(char i) {
+        return Character.toString(i);
+    }
+
+    public static String convertToString(short i) {
+        return Short.toString(i);
+    }
+
+    public static String convertToString(boolean i) {
+        return Boolean.toString(i);
+    }
+
+    public static String convertToString(Date value) {
+        Calendar calendar = Calendar.getInstance();
+        SimpleDateFormat zulu = new SimpleDateFormat("yyyy-MM-dd");
+        StringBuffer buf = new StringBuffer();
+        synchronized (calendar) {
+            if (calendar.get(Calendar.ERA) == GregorianCalendar.BC) {
+                buf.append("-");
+                calendar.setTime(value);
+                calendar.set(Calendar.ERA, GregorianCalendar.AD);
+                value = calendar.getTime();
+            }
+            buf.append(zulu.format(value));
+        }
+        return buf.toString();
+    }
+
+    public static String convertToString(Calendar value) {
+        SimpleDateFormat zulu =
+                new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+        Date date = value.getTime();
+
+        // Serialize including convert to GMT
+        synchronized (zulu) {
+            // Sun JDK bug http://developer.java.sun.com/developer/bugParade/bugs/4229798.html
+            return zulu.format(date);
+        }
+    }
+
+    public static String convertToString(Day o) {
+        return o.toString();
+    }
+
+    public static String convertToString(YearMonth o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Year o) {
+        return o.toString();
+    }
+
+    public static String convertToString(HexBinary o) {
+        return o.toString();
+    }
+
+    public static String convertToString(MonthDay o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Time o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Byte o) {
+        return o.toString();
+    }
+
+    public static String convertToString(BigInteger o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Integer o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Long o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Short o) {
+        return o.toString();
+    }
+
+    public static String convertToString(UnsignedByte o) {
+        return o.toString();
+    }
+
+    public static String convertToString(UnsignedInt o) {
+        return o.toString();
+    }
+
+    public static String convertToString(UnsignedLong o) {
+        return o.toString();
+    }
+
+    public static String convertToString(QName o) {
+        if (o != null) {
+            return o.getLocalPart();
+        } else {
+            return "";
+        }
+    }
+
+    public static String convertToString(Object o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Double o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Duration o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Float o) {
+        return o.toString();
+    }
+
+    public static String convertToString(Month o) {
+        return o.toString();
+    }
+
+    public static String convertToString(byte[] bytes) {
+        return Base64.encode(bytes);
+    }
+
+    public static String convertToString(javax.activation.DataHandler handler) {
+        return getStringFromDatahandler(handler);
+    }
+
+    /* ################################################################################ */
+    /* String to java type conversions
+       These methods have a special signature structure
+       <code>convertTo</code> followed by the schema type name
+       Say for int, convertToint(String) is the converter method
+
+       Not very elegant but it seems to be the only way!
+
+    */
+
+
+    public static int convertToInt(String s) {
+        return Integer.parseInt(s);
+    }
+
+    public static double convertToDouble(String s) {
+        if (POSITIVE_INFINITY.equals(s)) {
+            return Double.POSITIVE_INFINITY;
+        } else if (NEGATIVE_INFINITY.equals(s)) {
+            return Double.NEGATIVE_INFINITY;
+        }
+        return Double.parseDouble(s);
+    }
+
+    public static BigDecimal convertToDecimal(String s) {
+        return new BigDecimal(s);
+    }
+
+    public static float convertToFloat(String s) {
+        if (POSITIVE_INFINITY.equals(s)) {
+            return Float.POSITIVE_INFINITY;
+        } else if (NEGATIVE_INFINITY.equals(s)) {
+            return Float.NEGATIVE_INFINITY;
+        }
+        return Float.parseFloat(s);
+    }
+
+    public static String convertToString(String s) {
+        return s;
+    }
+
+    public static long convertToLong(String s) {
+        return Long.parseLong(s);
+    }
+
+    public static short convertToShort(String s) {
+        return Short.parseShort(s);
+    }
+
+    public static boolean convertToBoolean(String s) {
+        return Boolean.valueOf(s).booleanValue();
+    }
+
+    public static String convertToAnySimpleType(String s) {
+        return s;
+    }
+
+    public static OMElement convertToAnyType(String s) {
+        try {
+            XMLStreamReader r = StAXUtils.createXMLStreamReader(
+                    new ByteArrayInputStream(s.getBytes()));
+            StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), r);
+            return builder.getDocumentElement();
+        } catch (XMLStreamException e) {
+            return null;
+        }
+    }
+
+    public static YearMonth convertToGYearMonth(String s) {
+        return new YearMonth(s);
+    }
+
+    public static MonthDay convertToGMonthDay(String s) {
+        return new MonthDay(s);
+    }
+
+    public static Year convertToGYear(String s) {
+        return new Year(s);
+    }
+
+    public static Month convertToGMonth(String s) {
+        return new Month(s);
+    }
+
+    public static Day convertToGDay(String s) {
+        return new Day(s);
+    }
+
+    public static Duration convertToDuration(String s) {
+        return new Duration(s);
+    }
+
+
+    public static HexBinary convertToHexBinary(String s) {
+        return new HexBinary(s);
+    }
+
+    public static javax.activation.DataHandler convertToBase64Binary(String s) {
+        // reusing the byteArrayDataSource from the Axiom classes
+        ByteArrayDataSource byteArrayDataSource = new ByteArrayDataSource(
+                Base64.decode(s)
+        );
+        return new DataHandler(byteArrayDataSource);
+    }
+
+    public static javax.activation.DataHandler convertToDataHandler(String s) {
+        return convertToBase64Binary(s);
+    }
+
+    /**
+     * Converts a given string into a date.
+     * Code from Axis1 DateDeserializer.
+     *
+     * @param source
+     * @return Returns Date.
+     */
+    public static Date convertToDate(String source) {
+
+        Calendar calendar = Calendar.getInstance();
+        SimpleDateFormat zulu = new SimpleDateFormat("yyyy-MM-dd");
+        //  0123456789 0 123456789
+        Date result;
+        boolean bc = false;
+
+        // validate fixed portion of format
+        if (source != null) {
+            if (source.charAt(0) == '+')
+                source = source.substring(1);
+
+            if (source.charAt(0) == '-') {
+                source = source.substring(1);
+                bc = true;
+            }
+
+            if (source.length() < 10)
+                throw new NumberFormatException("bad date format");
+
+
+            if (source.charAt(4) != '-' || source.charAt(7) != '-')
+                throw new NumberFormatException("bad Date format");
+
+        }
+
+        synchronized (calendar) {
+            // convert what we have validated so far
+            try {
+                result = zulu.parse(source == null ? null :
+                        (source.substring(0, 10)));
+            } catch (Exception e) {
+                throw new NumberFormatException(e.toString());
+            }
+
+            // support dates before the Christian era
+            if (bc) {
+                calendar.setTime(result);
+                calendar.set(Calendar.ERA, GregorianCalendar.BC);
+                result = calendar.getTime();
+            }
+        }
+        return result;
+    }
+
+    public static Time convertToTime(String s) {
+        return new Time(s);
+    }
+
+    public static Token convertToToken(String s) {
+        return new Token(s);
+    }
+
+
+    public static NormalizedString convertToNormalizedString(String s) {
+        return new NormalizedString(s);
+    }
+
+    public static UnsignedLong convertToUnsignedLong(String s) {
+        return new UnsignedLong(s);
+    }
+
+    public static UnsignedInt convertToUnsignedInt(String s) {
+        return new UnsignedInt(s);
+    }
+
+    public static UnsignedShort convertToUnsignedShort(String s) {
+        return new UnsignedShort(s);
+    }
+
+    public static UnsignedByte convertToUnsignedByte(String s) {
+        return new UnsignedByte(s);
+    }
+
+    public static NonNegativeInteger convertToNonNegativeInteger(String s) {
+        return new NonNegativeInteger(s);
+    }
+
+    public static NegativeInteger convertToNegativeInteger(String s) {
+        return new NegativeInteger(s);
+    }
+
+    public static PositiveInteger convertToPositiveInteger(String s) {
+        return new PositiveInteger(s);
+    }
+
+    public static NonPositiveInteger convertToNonPositiveInteger(String s) {
+        return new NonPositiveInteger(s);
+    }
+
+    public static Name convertToName(String s) {
+        return new Name(s);
+    }
+
+    public static NCName convertToNCName(String s) {
+        return new NCName(s);
+    }
+
+    public static Id convertToID(String s) {
+        return new Id(s);
+    }
+
+    public static Id convertToId(String s) {
+        return convertToID(s);
+    }
+
+    public static Language convertToLanguage(String s) {
+        return new Language(s);
+    }
+
+    public static NMToken convertToNMTOKEN(String s) {
+        return new NMToken(s);
+    }
+
+    public static NMTokens convertToNMTOKENS(String s) {
+        return new NMTokens(s);
+    }
+
+    public static Notation convertToNOTATION(String s) {
+        return null; //todo Need to fix this
+        // return new Notation(s);
+    }
+
+    public static Entity convertToENTITY(String s) {
+        return new Entity(s);
+    }
+
+    public static Entities convertToENTITIES(String s) {
+        return new Entities(s);
+    }
+
+    public static IDRef convertToIDREF(String s) {
+        return new IDRef(s);
+    }
+
+    public static IDRefs convertToIDREFS(String s) {
+        return new IDRefs(s);
+    }
+
+    public static URI convertToAnyURI(String s) {
+        try {
+            return new URI(s);
+        } catch (URI.MalformedURIException e) {
+            throw new ObjectConversionException(
+                    ADBMessages.getMessage("converter.cannotParse", s), e);
+        }
+    }
+
+    public static BigInteger convertToInteger(String s) {
+        return new BigInteger(s);
+    }
+
+    public static BigInteger convertToBigInteger(String s) {
+        return convertToInteger(s);
+    }
+
+    public static byte convertToByte(String s) {
+        return Byte.parseByte(s);
+    }
+
+    /**
+     * Code from Axis1 code base
+     * Note - We only follow the convention in the latest schema spec
+     *
+     * @param source
+     * @return Returns Calendar.
+     */
+    public static Calendar convertToDateTime(String source) {
+        Calendar calendar = Calendar.getInstance();
+        SimpleDateFormat zulu =
+                new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+        Date date;
+        boolean bc = false;
+
+        // validate fixed portion of format
+        if (source == null || source.length() == 0) {
+            throw new NumberFormatException();
+//                    Messages.getMessage("badDateTime00"));
+        }
+        if (source.charAt(0) == '+') {
+            source = source.substring(1);
+        }
+        if (source.charAt(0) == '-') {
+            source = source.substring(1);
+            bc = true;
+        }
+        if (source.length() < 19) {
+            throw new NumberFormatException();
+//                    Messages.getMessage("badDateTime00"));
+        }
+        if (source.charAt(4) != '-' || source.charAt(7) != '-' ||
+                source.charAt(10) != 'T') {
+            throw new NumberFormatException();//Messages.getMessage("badDate00"));
+        }
+        if (source.charAt(13) != ':' || source.charAt(16) != ':') {
+            throw new NumberFormatException();//Messages.getMessage("badTime00"));
+        }
+        // convert what we have validated so far
+        try {
+            synchronized (zulu) {
+                date = zulu.parse(source.substring(0, 19) + ".000Z");
+            }
+        } catch (Exception e) {
+            throw new NumberFormatException(e.toString());
+        }
+        int pos = 19;
+
+        // parse optional milliseconds
+        if (pos < source.length() && source.charAt(pos) == '.') {
+            int milliseconds = 0;
+            int start = ++pos;
+            while (pos < source.length() &&
+                    Character.isDigit(source.charAt(pos))) {
+                pos++;
+            }
+            String decimal = source.substring(start, pos);
+            if (decimal.length() == 3) {
+                milliseconds = Integer.parseInt(decimal);
+            } else if (decimal.length() < 3) {
+                milliseconds = Integer.parseInt((decimal + "000")
+                        .substring(0, 3));
+            } else {
+                milliseconds = Integer.parseInt(decimal.substring(0, 3));
+                if (decimal.charAt(3) >= '5') {
+                    ++milliseconds;
+                }
+            }
+
+            // add milliseconds to the current date
+            date.setTime(date.getTime() + milliseconds);
+        }
+
+        // parse optional timezone
+        if (pos + 5 < source.length() &&
+                (source.charAt(pos) == '+' || (source.charAt(pos) == '-'))) {
+            if (!Character.isDigit(source.charAt(pos + 1)) ||
+                    !Character.isDigit(source.charAt(pos + 2)) ||
+                    source.charAt(pos + 3) != ':' ||
+                    !Character.isDigit(source.charAt(pos + 4)) ||
+                    !Character.isDigit(source.charAt(pos + 5))) {
+                throw new NumberFormatException();
+                // Messages.getMessage("badTimezone00"));
+            }
+            int hours = (source.charAt(pos + 1) - '0') * 10
+                    + source.charAt(pos + 2) - '0';
+            int mins = (source.charAt(pos + 4) - '0') * 10
+                    + source.charAt(pos + 5) - '0';
+            int milliseconds = (hours * 60 + mins) * 60 * 1000;
+
+            // subtract milliseconds from current date to obtain GMT
+            if (source.charAt(pos) == '+') {
+                milliseconds = -milliseconds;
+            }
+            date.setTime(date.getTime() + milliseconds);
+            pos += 6;
+        }
+        if (pos < source.length() && source.charAt(pos) == 'Z') {
+            pos++;
+            calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+        }
+        if (pos < source.length()) {
+            throw new NumberFormatException();//Messages.getMessage("badChars00"));
+        }
+        calendar.setTime(date);
+
+        // support dates before the Christian era
+        if (bc) {
+            calendar.set(Calendar.ERA, GregorianCalendar.BC);
+        }
+        return calendar;
+
+    }
+
+    /**
+     * Code from Axis1 code base
+     *
+     * @param source
+     * @return Returns QName.
+     */
+    public static QName convertToQName(String source, String nameSpaceuri) {
+        source = source.trim();
+        int colon = source.lastIndexOf(":");
+        //context.getNamespaceURI(source.substring(0, colon));
+        String localPart = colon < 0 ? source : source.substring(colon + 1);
+        String perfix = colon <= 0 ? "" : source.substring(0, colon);
+        return new QName(nameSpaceuri, localPart, perfix);
+    }
+
+    /* ################################################################# */
+
+    /* java Primitive types to Object conversion methods */
+    public static Object convertToObject(String i) {
+        return i;
+    }
+
+    public static Object convertToObject(boolean i) {
+        return Boolean.valueOf(i);
+    }
+
+    public static Object convertToObject(double i) {
+        return new Double(i);
+    }
+
+    public static Object convertToObject(byte i) {
+        return new Byte(i);
+    }
+
+    public static Object convertToObject(char i) {
+        return new Character(i);
+    }
+
+    public static Object convertToObject(short i) {
+        return new Short(i);
+    }
+
+    /* list to array conversion methods */
+
+    public static Object convertToArray(Class baseArrayClass, String[] valueArray) {
+        //create a list using the string array
+        List valuesList = new ArrayList(valueArray.length);
+        for (int i = 0; i < valueArray.length; i++) {
+            valuesList.add(valueArray[i]);
+
+        }
+
+        return convertToArray(baseArrayClass, valuesList);
+    }
+
+
+    /**
+     * @param baseArrayClass
+     * @param objectList     -> for primitive type array conversion we assume the content to be
+     *                       strings!
+     * @return Returns Object.
+     */
+    public static Object convertToArray(Class baseArrayClass, List objectList) {
+        int listSize = objectList.size();
+        Object returnArray = Array.newInstance(baseArrayClass, listSize);
+        if (int.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.setInt(returnArray, i, Integer.parseInt(objectList.get(i).toString()));
+                }
+            }
+        } else if (float.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.setFloat(returnArray, i, Float.parseFloat(objectList.get(i).toString()));
+                }
+            }
+        } else if (short.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.setShort(returnArray, i, Short.parseShort(objectList.get(i).toString()));
+                }
+            }
+        } else if (byte.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.setByte(returnArray, i, Byte.parseByte(objectList.get(i).toString()));
+                }
+            }
+        } else if (long.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.setLong(returnArray, i, Long.parseLong(objectList.get(i).toString()));
+                }
+            }
+        } else if (boolean.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.setBoolean(returnArray, i, Boolean.getBoolean(objectList.get(i).toString()));
+                }
+            }
+        } else if (char.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.setChar(returnArray, i, objectList.get(i).toString().toCharArray()[0]);
+                }
+            }
+        } else if (double.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.setDouble(returnArray, i, Double.parseDouble(objectList.get(i).toString()));
+                }
+            }
+        } else if (Calendar.class.equals(baseArrayClass)) {
+            for (int i = 0; i < listSize; i++) {
+                if (objectList.get(i) != null) {
+                    Array.set(returnArray, i, convertToDateTime(objectList.get(i).toString()));
+                }
+            }
+        } else {
+            ConvertToArbitraryObjectArray(returnArray, baseArrayClass, objectList);
+        }
+        return returnArray;
+    }
+
+    /**
+     * @param returnArray
+     * @param baseArrayClass
+     * @param objectList
+     */
+    private static void ConvertToArbitraryObjectArray(Object returnArray,
+                                                      Class baseArrayClass,
+                                                      List objectList) {
+        try {
+            for (int i = 0; i < objectList.size(); i++) {
+                Object o = objectList.get(i);
+                if (o == null) {
+                    Array.set(returnArray, i, getObjectForClass(
+                            baseArrayClass,
+                            null));
+                } else {
+                    Array.set(returnArray, i, getObjectForClass(
+                            baseArrayClass,
+                            o.toString()));
+                }
+
+            }
+            return;
+        } catch (Exception e) {
+            //oops! - this cannot be converted fall through and
+            //try the other alternative
+        }
+
+        try {
+            objectList.toArray((Object[]) returnArray);
+        } catch (Exception e) {
+            //we are over with alternatives - throw the
+            //converison exception
+            throw new ObjectConversionException(e);
+        }
+    }
+
+    /**
+     * We could have used the Arraya.asList() method
+     * but that returns an *immutable* list !!!!!
+     *
+     * @param array
+     * @return list
+     */
+    public static List toList(Object[] array) {
+        if (array == null) {
+            return new ArrayList();
+        } else {
+            ArrayList list = new ArrayList();
+            for (int i = 0; i < array.length; i++) {
+                list.add(array[i]);
+            }
+            return list;
+        }
+    }
+
+    /**
+     * Converts the given datahandler to a string
+     *
+     * @return string
+     */
+    public static String getStringFromDatahandler(DataHandler dataHandler) {
+        try {
+            InputStream inStream;
+            if (dataHandler == null) {
+                return "";
+            }
+            inStream = dataHandler.getDataSource().getInputStream();
+            byte[] data = IOUtils.getStreamAsByteArray(inStream);
+            return Base64.encode(data);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * A reflection based method to generate an instance of
+     * a given class and populate it with a given value
+     *
+     * @param clazz
+     * @param value
+     * @return object
+     */
+    public static Object getObjectForClass(Class clazz, String value) {
+        //first see whether this class has a constructor that can
+        //take the string as an argument.
+        boolean continueFlag = false;
+        try {
+            Constructor stringConstructor = clazz.getConstructor(new Class[]{String.class});
+            return stringConstructor.newInstance(new Object[]{value});
+        } catch (NoSuchMethodException e) {
+            //oops - no such constructors - continue with the
+            //parse method
+            continueFlag = true;
+        } catch (Exception e) {
+            throw new ObjectConversionException(
+                    ADBMessages.getMessage("converter.cannotGenerate",
+                            clazz.getName()),
+                    e);
+        }
+
+        if (!continueFlag) {
+            throw new ObjectConversionException(
+                    ADBMessages.getMessage("converter.cannotConvert",
+                            clazz.getName()));
+        }
+
+        try {
+            Method parseMethod = clazz.getMethod("parse", new Class[]{String.class});
+            Object instance = clazz.newInstance();
+            return parseMethod.invoke(instance, new Object[]{value});
+        } catch (NoSuchMethodException e) {
+            throw new ObjectConversionException(
+                    ADBMessages.getMessage("converter.cannotConvert",
+                            clazz.getName()));
+        } catch (Exception e) {
+            throw new ObjectConversionException(
+                    ADBMessages.getMessage("converter.cannotGenerate",
+                            clazz.getName()),
+                    e);
+        }
+
+    }
+
+    /**
+     * A simple exception that is thrown when the conversion fails
+     */
+    public static class ObjectConversionException extends RuntimeException {
+        public ObjectConversionException() {
+        }
+
+        public ObjectConversionException(String message) {
+            super(message);
+        }
+
+        public ObjectConversionException(Throwable cause) {
+            super(cause);
+        }
+
+        public ObjectConversionException(String message, Throwable cause) {
+            super(message, cause);
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java
new file mode 100644
index 0000000..024d1fd
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java
@@ -0,0 +1,170 @@
+/*

+* Copyright 2004,2005 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.axis2.databinding.utils;

+

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.engine.ObjectSupplier;

+import org.apache.axis2.databinding.typemapping.SimpleTypeMapper;

+

+import javax.xml.namespace.QName;

+import java.util.HashMap;

+import java.util.Iterator;

+

+public class MultirefHelper {

+

+    public static final String SOAP12_REF_ATTR = "ref";

+    public static final String SOAP11_REF_ATTR = "href";

+

+    private boolean filledTable;

+

+    private OMElement parent;

+

+    private HashMap objectmap = new HashMap();

+    private HashMap elementMap = new HashMap();

+    private HashMap omElementMap = new HashMap();

+

+    public MultirefHelper(OMElement parent) {

+        this.parent = parent;

+    }

+

+    public Object getObject(String id) {

+        return objectmap.get(id);

+    }

+

+    public OMElement getOMElement(String id) {

+        return (OMElement) omElementMap.get(id);

+    }

+

+    public OMElement processOMElementRef(String id) throws AxisFault {

+        if (!filledTable) {

+            readallChildElements();

+        }

+        OMElement val = (OMElement) elementMap.get(id);

+        if (val == null) {

+            throw new AxisFault("Invalid reference :" + id);

+        } else {

+            OMElement ele = processElementforRefs(val);

+            OMElement cloneele = elementClone(ele);

+            omElementMap.put(id, cloneele);

+            return cloneele;

+        }

+    }

+

+    public OMElement processElementforRefs(OMElement elemnts) throws AxisFault {

+        Iterator itr = elemnts.getChildElements();

+        while (itr.hasNext()) {

+            OMElement omElement = (OMElement) itr.next();

+            OMAttribute attri = processRefAtt(omElement);

+            if (attri != null) {

+                String ref = getAttvalue(attri);

+                OMElement tempele = getOMElement(ref);

+                if (tempele == null) {

+                    tempele = processOMElementRef(ref);

+                }

+                OMElement ele2 = elementClone(tempele);

+                Iterator itrChild = ele2.getChildren();

+                while (itrChild.hasNext()) {

+                    Object obj = itrChild.next();

+                    if (obj instanceof OMNode) {

+                        omElement.addChild((OMNode) obj);

+                    }

+                }

+            }

+        }

+        return elemnts;

+    }

+

+    private OMElement elementClone(OMElement ele) {

+        return new StAXOMBuilder(ele.getXMLStreamReader()).getDocumentElement();

+    }

+

+    public Object processRef(Class javatype, String id  , ObjectSupplier objectSupplier) throws AxisFault {

+        if (!filledTable) {

+            readallChildElements();

+        }

+        OMElement val = (OMElement) elementMap.get(id);

+        if (val == null) {

+            throw new AxisFault("Invalid reference :" + id);

+        } else {

+            if (SimpleTypeMapper.isSimpleType(javatype)) {

+                /**

+                 * in this case OM element can not contains more child, that is no way to get

+                 * the value as an exp ,

+                 * <refernce id="12">

+                 *   <value>foo</value>

+                 * </refernce>

+                 * the above one is not valid , that should always be like below

+                 * <refernce id="12">foo</refernce>

+                 */

+                Object valObj = SimpleTypeMapper.getSimpleTypeObject(javatype, val);

+                objectmap.put(id, valObj);

+                return valObj;

+            } else if (SimpleTypeMapper.isArrayList(javatype)) {

+                Object valobj = SimpleTypeMapper.getArrayList(val);

+                objectmap.put(id, valobj);

+                return valobj;

+            } else {

+                Object obj = BeanUtil.deserialize(javatype, val, this , objectSupplier);

+                objectmap.put(id, obj);

+                return obj;

+            }

+        }

+    }

+

+    private void readallChildElements() {

+        Iterator childs = parent.getChildElements();

+        while (childs.hasNext()) {

+            OMElement omElement = (OMElement) childs.next();

+            OMAttribute id = omElement.getAttribute(new QName("id"));

+            if (id != null) {

+                omElement.build();

+                elementMap.put(id.getAttributeValue(), omElement.detach());

+            }

+        }

+        filledTable = true;

+    }

+

+    public static String getAttvalue(OMAttribute omatribute) {

+        String ref;

+        ref = omatribute.getAttributeValue();

+        if (ref != null) {

+            if (ref.charAt(0) == '#') {

+                ref = ref.substring(1);

+            }

+        }

+        return ref;

+    }

+

+    public static OMAttribute processRefAtt(OMElement omElement) {

+        OMAttribute omatribute = omElement.getAttribute(new QName(SOAP11_REF_ATTR));

+        if (omatribute == null) {

+            omatribute = omElement.getAttribute(new QName(SOAP12_REF_ATTR));

+        }

+        return omatribute;

+    }

+

+    public void clean() {

+        elementMap.clear();

+        objectmap.clear();

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/NamedStaxOMBuilder.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/NamedStaxOMBuilder.java
new file mode 100644
index 0000000..42270c6
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/NamedStaxOMBuilder.java
@@ -0,0 +1,71 @@
+package org.apache.axis2.databinding.utils;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamConstants;

+import javax.xml.stream.XMLStreamReader;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class NamedStaxOMBuilder {

+

+    //wrap a StAXOMBuilder

+    private StAXOMBuilder builder;

+    private XMLStreamReader reader;

+    private QName nameToMatch;

+

+    /**

+     *

+     * @param xmlStreamReader

+     * @param nameToMatch

+     */

+    public NamedStaxOMBuilder(XMLStreamReader xmlStreamReader, QName nameToMatch) {

+        reader = xmlStreamReader;

+        builder = new StAXOMBuilder(xmlStreamReader);

+        this.nameToMatch = nameToMatch;

+    }

+

+    /**

+     *

+     */

+    public OMElement getOMElement(){

+        //force to build within the given QName

+        boolean done = false;

+        int depth = 0;

+        while(!done){

+            if (reader.getEventType()==XMLStreamConstants.END_ELEMENT){

+                depth--;

+            }else if (reader.getEventType()==XMLStreamConstants.START_ELEMENT){

+                depth++;

+            }

+

+            if (depth==0 && reader.getEventType()==XMLStreamConstants.END_ELEMENT &&

+                    nameToMatch.equals(reader.getName())){

+                done = true;

+            }else{

+                builder.next();

+            }

+

+        }

+

+        return builder.getDocumentElement();

+    }

+

+

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/SimpleArrayReaderStateMachine.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/SimpleArrayReaderStateMachine.java
new file mode 100644
index 0000000..7a303e5
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/SimpleArrayReaderStateMachine.java
@@ -0,0 +1,220 @@
+package org.apache.axis2.databinding.utils;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamConstants;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import java.util.ArrayList;

+import java.util.List;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A state machine that reads arrays with simple content. returns a string array

+ */

+public class SimpleArrayReaderStateMachine implements States,Constants {

+

+    private QName elementNameToTest = null;

+    private int currentState = INIT_STATE;

+    private boolean nillable = false;

+

+    private boolean canbeAbsent = false;

+

+    private List list = new ArrayList();

+

+    /**

+     * @return an array of strings

+     */

+    public String[] getTextArray() {

+        return (String[])list.toArray(new String[list.size()]);

+    }

+

+

+    public void setNillable(){

+        nillable = true;

+    }

+

+    public boolean isCanbeAbsent() {

+        return canbeAbsent;

+    }

+

+    public void setCanbeAbsent(boolean canbeAbsent) {

+        this.canbeAbsent = canbeAbsent;

+    }

+

+    /**

+     * Resets the state machine. Once the reset is called

+     * the state machine is good enough for a fresh run

+     */

+    public void reset(){

+        elementNameToTest = null;

+        currentState = INIT_STATE;

+        nillable = false;

+        list=new ArrayList();

+    }

+

+    public void setElementNameToTest(QName elementNameToTest) {

+        this.elementNameToTest = elementNameToTest;

+    }

+

+    /**

+     * public read method - reads a given reader to extract the text value

+     * @param reader

+     */

+    public void read(XMLStreamReader reader) throws XMLStreamException {

+

+        do{

+            updateState(reader);

+

+            //test for the nillable attribute

+            if (currentState==START_ELEMENT_FOUND_STATE &&

+                    nillable){

+                if (TRUE.equals(reader.getAttributeValue(XSI_NAMESPACE,NIL))){

+                    list.add(null);

+                    //force the state to be null found

+                    currentState= NULLED_STATE;

+                }

+            }

+

+            if (currentState==TEXT_FOUND_STATE){

+                //read the text value and store it in the list

+                list.add(reader.getText());

+            }

+            //increment the parser only if the  state is

+            //not finished

+            if (currentState!=FINISHED_STATE

+                    && currentState!= ILLEGAL_STATE){

+                reader.next();

+            }

+

+        }while(currentState!=FINISHED_STATE

+                && currentState!= ILLEGAL_STATE);

+

+        if (currentState==ILLEGAL_STATE){

+            throw new RuntimeException("Illegal state!");

+        }

+

+    }

+

+

+

+

+

+    private void updateState(XMLStreamReader reader) throws XMLStreamException{

+        int event = reader.getEventType();

+

+        switch (currentState){

+

+            case INIT_STATE:

+                if (event== XMLStreamConstants.START_DOCUMENT){

+                    currentState = STARTED_STATE;

+                }else if (event== XMLStreamConstants.START_ELEMENT){

+                    if (elementNameToTest.equals(reader.getName())){

+                        currentState = START_ELEMENT_FOUND_STATE;

+                    }else{

+                        //we found a start element that does not have

+                        //the name of the element

+

+                        currentState = canbeAbsent?

+                                     FINISHED_STATE:

+                                     STARTED_STATE;

+                    }

+                }else if (event==XMLStreamConstants.END_ELEMENT){

+                    // an end element is found at the init state

+                    // we should break the process here ?

+                    if (!elementNameToTest.equals(reader.getName())){

+                        currentState = FINISHED_STATE ;

+                    }

+                }

+                break;

+

+            case STARTED_STATE:

+                if (event==XMLStreamConstants.END_ELEMENT){

+                    if (elementNameToTest.equals(reader.getName())){

+                        currentState = ILLEGAL_STATE;

+                    }else{

+                        currentState = FINISHED_STATE;

+                    }

+                }else if  (event==XMLStreamConstants.START_ELEMENT){

+                    QName name = reader.getName();

+                    if (elementNameToTest.equals(name)){

+                        currentState = START_ELEMENT_FOUND_STATE;

+                    }

+                }

+                break;

+

+            case START_ELEMENT_FOUND_STATE:

+                if (event==XMLStreamConstants.CHARACTERS){

+                    currentState  = TEXT_FOUND_STATE;

+                }

+                break;

+

+            case TEXT_FOUND_STATE:

+                if (event==XMLStreamConstants.END_ELEMENT){

+                    if (elementNameToTest.equals(reader.getName())){

+                        currentState = END_ELEMENT_FOUND_STATE;

+                    }else{

+                        currentState = ILLEGAL_STATE;

+                    }

+                }else if (event==XMLStreamConstants.CHARACTERS){

+                    //another char event -

+                    //so append it to the current text

+                }

+                break;

+            case NULLED_STATE:

+                //read upto the end and set the state to END_ELEMENT_FOUND_STATE

+                while (event!= XMLStreamConstants.END_ELEMENT){

+                    event=reader.next();

+                }

+                currentState = END_ELEMENT_FOUND_STATE;

+                break;

+            case END_ELEMENT_FOUND_STATE:

+                if (event==XMLStreamConstants.START_ELEMENT ) {

+                    //restart the parsing

+                    if (elementNameToTest.equals(reader.getName())){

+                        currentState = START_ELEMENT_FOUND_STATE;

+                    }else{

+                        currentState = FINISHED_STATE;

+                    }

+                    //another end element found after end-element

+                }else if (event==XMLStreamConstants.END_ELEMENT ) {

+                    currentState = FINISHED_STATE;

+                    //end  document found

+                }

+                break;

+            default:

+

+                //characters found - if this is a characters event that was in the correct place then

+                //it would have been handled already. we need to check whether this is a ignorable

+                //whitespace and if not push the state machine to a illegal state.

+                if (event==XMLStreamConstants.CHARACTERS){

+                    if (reader.getText().trim().length()==0){

+                        //the text is empty - don't change the state

+                    }else{

+                        //we do NOT handle mixed content

+                        currentState = ILLEGAL_STATE;

+                    }

+

+                } else{

+                    currentState = ILLEGAL_STATE;

+                }

+

+        }

+

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/SimpleElementReaderStateMachine.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/SimpleElementReaderStateMachine.java
new file mode 100644
index 0000000..be1c408
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/SimpleElementReaderStateMachine.java
@@ -0,0 +1,217 @@
+package org.apache.axis2.databinding.utils;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamConstants;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A state machine to read elements with simple content. Returns the text

+ * of the element and the stream reader will be one event beyond the

+ * end element at return

+ */

+public class SimpleElementReaderStateMachine implements States,Constants{

+

+

+

+    private QName elementNameToTest = null;

+    private int currentState = INIT_STATE;

+    private boolean nillable = false;

+    private String text="";

+    private String errorMessage = "";

+    private boolean elementSkipped = false;

+

+    public boolean isElementSkipped() {

+        return elementSkipped;

+    }

+

+    /**

+     *

+     */

+    public String getText() {

+        return text;

+    }

+

+    /**

+     * sets the nillable flag

+     */

+    public void setNillable(){

+        nillable = true;

+    }

+    /**

+     * the Qname of the element to be tested

+     * @param elementNameToTest

+     */

+    public void setElementNameToTest(QName elementNameToTest) {

+        this.elementNameToTest = elementNameToTest;

+

+    }

+

+    /**

+     * Resets the state machine. Once the reset is called

+     * the state machine is good enough for a fresh run

+     */

+    public void reset(){

+        elementNameToTest = null;

+        currentState = INIT_STATE;

+        nillable = false;

+        text="";

+        errorMessage = "";

+    }

+    /**

+     * public read method - reads a given reader to extract the text value

+     * @param reader

+     */

+    public void read(XMLStreamReader reader) throws XMLStreamException {

+

+        do{

+            updateState(reader);

+

+            //test for the nillable attribute

+            if (currentState==START_ELEMENT_FOUND_STATE &&

+                    nillable){

+                if (TRUE.equals(reader.getAttributeValue(XSI_NAMESPACE,NIL))){

+                    text = null;

+                    //force the state to be null found

+                    currentState= NULLED_STATE;

+                }

+            }

+

+            if (currentState==TEXT_FOUND_STATE){

+                //read the text value and store it

+                text = reader.getText();

+            }

+            if (currentState!=FINISHED_STATE

+                    && currentState!= ILLEGAL_STATE){

+                reader.next();

+            }

+

+        }while(currentState!=FINISHED_STATE

+                && currentState!= ILLEGAL_STATE);

+

+        if (currentState==ILLEGAL_STATE){

+            throw new RuntimeException("Illegal state!" + errorMessage);

+        }

+

+    }

+

+

+    /**

+     * Updates the state depending on the parser

+     * @param reader

+     */

+    private void updateState(XMLStreamReader reader) throws XMLStreamException{

+        int event = reader.getEventType();

+

+

+        switch(currentState){

+            case INIT_STATE:

+                if (event==XMLStreamConstants.START_DOCUMENT){

+                    currentState = STARTED_STATE;

+                    //start element found at init

+                }else  if (event==XMLStreamConstants.START_ELEMENT){

+                    if (elementNameToTest.equals(reader.getName())){

+                        currentState = START_ELEMENT_FOUND_STATE;

+                    }else{

+                        currentState = STARTED_STATE;

+                    }

+                }else if (event==XMLStreamConstants.END_ELEMENT){

+                    // an end element is found at the init state

+                    // we should break the process here ?

+                    currentState = FINISHED_STATE ;

+                    elementSkipped = true;

+                }

+                break;

+

+            case  STARTED_STATE:

+                if (event==XMLStreamConstants.START_ELEMENT ) {

+                    if (elementNameToTest.equals(reader.getName())){

+                        currentState = START_ELEMENT_FOUND_STATE;

+                    }

+                }

+                break;

+

+            case  START_ELEMENT_FOUND_STATE:

+                if (event==XMLStreamConstants.CHARACTERS){

+                    currentState  = TEXT_FOUND_STATE;

+                }else if (event==XMLStreamConstants.END_ELEMENT){

+                    //force the text to be empty!

+                    text = "";

+                    if (elementNameToTest.equals(reader.getName())){

+                        currentState = END_ELEMENT_FOUND_STATE;

+                    }else{

+                        currentState = ILLEGAL_STATE;

+                        errorMessage = "Wrong element name " +reader.getName();  //todo I18n this

+                    }

+                }

+                break;

+

+            case  TEXT_FOUND_STATE:

+                if (event==XMLStreamConstants.END_ELEMENT){

+                    if (elementNameToTest.equals(reader.getName())){

+                        currentState = END_ELEMENT_FOUND_STATE;

+                    }else{

+                        currentState = ILLEGAL_STATE;

+                        //set the error message

+                        errorMessage = "Wrong element name " +reader.getName();  //todo I18n this

+                    }

+                }else if (event==XMLStreamConstants.CHARACTERS){

+                    text = text +  reader.getText();  //append the text

+                    //do not change the state

+                }

+                break;

+

+            case END_ELEMENT_FOUND_STATE:

+                currentState = FINISHED_STATE;

+                break;

+

+                //the element was found to be null and this state was forced.

+                //we are sure here that the parser was at the

+                //START_ELEMENT_FOUND_STATE before

+                //being forced. Hence we need to advance the parser upto the

+                // end element and set the state to be end element found

+            case NULLED_STATE:

+                while (event!= XMLStreamConstants.END_ELEMENT){

+                    event=reader.next();

+                }

+                currentState = END_ELEMENT_FOUND_STATE;

+                break;

+

+            default:

+                if (event==XMLStreamConstants.CHARACTERS){

+                    if (reader.getText().trim().length()==0){

+                        //the text is empty - don't change the state

+                    }else{

+                        //we do NOT handle mixed content

+                        currentState = ILLEGAL_STATE;

+                        errorMessage = "Mixed Content " +reader.getText();

+                    }

+                }else{

+                    currentState = ILLEGAL_STATE;

+                    errorMessage = "Current state is " + currentState ;

+                }

+                break;

+        }

+

+    }

+

+

+

+

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/States.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/States.java
new file mode 100644
index 0000000..eb84c3b
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/States.java
@@ -0,0 +1,30 @@
+package org.apache.axis2.databinding.utils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public interface States {

+

+    static int INIT_STATE = -1;

+    static int STARTED_STATE = 0;

+    static int START_ELEMENT_FOUND_STATE = 1;

+    static int TEXT_FOUND_STATE = 2;

+    static int END_ELEMENT_FOUND_STATE = 3;

+    static int FINISHED_STATE = 4;

+    static int ILLEGAL_STATE = 5;

+    static int CONTENT_FOUND_STATE = 6;

+    static int NULLED_STATE = 7;

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBDataHandlerStreamReader.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBDataHandlerStreamReader.java
new file mode 100644
index 0000000..39e1e5d
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBDataHandlerStreamReader.java
@@ -0,0 +1,383 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import org.apache.axis2.databinding.utils.Constants;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+import org.apache.axis2.util.Base64;

+

+import javax.xml.namespace.QName;

+import javax.xml.namespace.NamespaceContext;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.Location;

+import javax.activation.DataHandler;

+import java.io.InputStream;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ADBDataHandlerStreamReader implements ADBXMLStreamReader {

+    private static final int START_ELEMENT_STATE = 0;

+    private static final int TEXT_STATE = 1;

+    private static final int END_ELEMENT_STATE = 2;

+

+    private ADBNamespaceContext namespaceContext =

+            new ADBNamespaceContext();

+

+    private QName name;

+    private DataHandler value;

+

+    private int state = START_ELEMENT_STATE;

+    //initiate at the start element state

+

+    //keeps track whether the namespace is declared

+    //false by default

+    private boolean nsDeclared = false;

+

+    public ADBDataHandlerStreamReader(QName name, DataHandler value) {

+        this.name = name;

+        this.value = value;

+    }

+

+    private String convertedText = null;

+

+    /**

+     * Return the right properties for the optimization

+     * @param propKey

+     * @throws IllegalArgumentException

+     */

+    public Object getProperty(String propKey) throws IllegalArgumentException {

+        if (OPTIMIZATION_ENABLED.equals(propKey)){

+            return Boolean.TRUE;

+        }

+        if (state==TEXT_STATE){

+            if (IS_BINARY.equals(propKey)){

+                return Boolean.TRUE;

+            }else if (DATA_HANDLER.equals(propKey)){

+                return value;

+            }

+        }

+        return null;

+

+    }

+

+    public int next() throws XMLStreamException {

+        //no need to handle null here. it should have been handled

+        //already

+        switch (state){

+            case START_ELEMENT_STATE:

+                state=TEXT_STATE;

+                return CHARACTERS;

+            case END_ELEMENT_STATE:

+                //oops, not supposed to happen!

+                throw new XMLStreamException("end already reached!");

+            case TEXT_STATE:

+                state = END_ELEMENT_STATE;

+                return END_ELEMENT;

+            default:

+                throw new XMLStreamException("unknown event type!");

+        }

+    }

+

+    public void require(int i, String string, String string1) throws XMLStreamException {

+        //not implemented

+    }

+

+    public String getElementText() throws XMLStreamException {

+        if (state==START_ELEMENT){

+            //move to the end state and return the value

+            state = END_ELEMENT_STATE;

+            if (convertedText==null){

+                convertedText = ConverterUtil.getStringFromDatahandler(value);

+            }

+            return convertedText;

+        }else{

+            throw new XMLStreamException();

+        }

+

+    }

+

+    public int nextTag() throws XMLStreamException {

+        return 0;//todo

+    }

+

+    public boolean hasNext() throws XMLStreamException {

+        return (state!=END_ELEMENT_STATE);

+    }

+

+    public void close() throws XMLStreamException {

+        //Do nothing - we've nothing to free here

+    }

+

+    public String getNamespaceURI(String prefix) {

+        return namespaceContext.getNamespaceURI(prefix);

+    }

+

+    public boolean isStartElement() {

+        return (state==START_ELEMENT_STATE);

+    }

+

+    public boolean isEndElement() {

+        return (state==END_ELEMENT_STATE);

+    }

+

+    public boolean isCharacters() {

+        return (state==TEXT_STATE);

+    }

+

+    public boolean isWhiteSpace() {

+        return false;  //no whitespaces here

+    }

+

+    public String getAttributeValue(String string, String string1) {

+        return null;

+    }

+

+    public int getAttributeCount() {

+        return 0;

+    }

+

+    public QName getAttributeName(int i) {

+        return null;

+    }

+

+    public String getAttributeNamespace(int i) {

+        return null;

+    }

+

+    public String getAttributeLocalName(int i) {

+        return null;

+    }

+

+    public String getAttributePrefix(int i) {

+        return null;

+    }

+

+    public String getAttributeType(int i) {

+        return null;

+    }

+

+    public String getAttributeValue(int i) {

+        return null;

+    }

+

+    public boolean isAttributeSpecified(int i) {

+        return false; //no attribs here

+    }

+

+    public int getNamespaceCount() {

+        return (nsDeclared)?1:0;

+    }

+

+    public String getNamespacePrefix(int i) {

+        return (nsDeclared && i==0)?name.getPrefix():null;

+    }

+

+    public String getNamespaceURI(int i) {

+        return (nsDeclared && i==0)?name.getNamespaceURI():null;

+    }

+

+    public NamespaceContext getNamespaceContext() {

+        return this.namespaceContext;

+    }

+

+    public int getEventType() {

+        switch (state){

+            case START_ELEMENT_STATE:

+                return START_ELEMENT;

+            case END_ELEMENT_STATE:

+                return END_ELEMENT;

+            case TEXT_STATE:

+                return CHARACTERS;

+            default:

+                throw new UnsupportedOperationException();

+                //we've no idea what this is!!!!!

+        }

+

+    }

+

+    public String getText() {

+        if (state==TEXT_STATE){

+            if (convertedText==null){

+                convertedText =

+                        ConverterUtil.getStringFromDatahandler(value);

+            }

+            return convertedText;

+        }else{

+            throw new IllegalStateException();

+        }

+    }

+

+    public char[] getTextCharacters() {

+        if (state==TEXT_STATE){

+            if (convertedText==null){

+                convertedText =

+                        ConverterUtil.getStringFromDatahandler(value);

+            }

+            return convertedText.toCharArray();

+        }else{

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {

+        //not implemented

+        throw new UnsupportedOperationException();

+    }

+

+    public int getTextStart() {

+        if (state==TEXT_STATE){

+            return 0;

+        }else{

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextLength() {

+        if (state==TEXT_STATE){

+            if (convertedText==null){

+                convertedText =

+                        ConverterUtil.getStringFromDatahandler(value);

+            }

+            return convertedText.length();

+        }else{

+            throw new  IllegalStateException();

+        }

+

+    }

+

+    public String getEncoding() {

+        return null;

+    }

+

+    public boolean hasText() {

+        return (state==TEXT_STATE);

+    }

+

+    public Location getLocation() {

+        return new Location(){

+            public int getLineNumber() {

+                return 0;

+            }

+

+            public int getColumnNumber() {

+                return 0;

+            }

+

+            public int getCharacterOffset() {

+                return 0;

+            }

+

+            public String getPublicId() {

+                return null;

+            }

+

+            public String getSystemId() {

+                return null;

+            }

+        };

+    }

+

+    public QName getName() {

+        if (state!=TEXT_STATE){

+            return name;

+        }else{

+            return null;

+        }

+    }

+

+    public String getLocalName() {

+        if (state!=TEXT_STATE){

+            return name.getLocalPart();

+        }else{

+            return null;

+        }

+    }

+

+    public boolean hasName() {

+        return (state != TEXT_STATE);

+

+    }

+

+    public String getNamespaceURI() {

+        if (state!=TEXT_STATE){

+            return name.getNamespaceURI();

+        }else{

+            return null;

+        }

+

+    }

+

+    public String getPrefix() {

+        if (state!=TEXT_STATE){

+            return name.getPrefix();

+        }else{

+            return null;

+        }

+    }

+

+    public String getVersion() {

+        return null;  //todo 1.0 ?

+    }

+

+    public boolean isStandalone() {

+        return false;

+    }

+

+    public boolean standaloneSet() {

+        return false;

+    }

+

+    public String getCharacterEncodingScheme() {

+        return null;

+    }

+

+    public String getPITarget() {

+        return null;

+    }

+

+    public String getPIData() {

+        return null;

+    }

+

+    public boolean isDone() {

+        return (state==END_ELEMENT_STATE);

+    }

+

+    public void addNamespaceContext(NamespaceContext nsContext) {

+        this.namespaceContext.setParentNsContext(nsContext);

+    }

+

+    public void init() {

+        //just add the current elements namespace and prefix to the this

+        //elements nscontext

+        addToNsMap(name.getPrefix(),name.getNamespaceURI());

+

+

+    }

+    /**

+     * @param prefix

+     * @param uri

+     */

+    private void addToNsMap(String prefix, String uri) {

+        //todo - need to fix this up to cater for cases where

+        //namespaces are having  no prefixes

+        if (!uri.equals(namespaceContext.getNamespaceURI(prefix))) {

+            //this namespace is not there. Need to declare it

+            namespaceContext.pushNamespace(prefix, uri);

+            nsDeclared = true;

+        }

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBNamespaceContext.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBNamespaceContext.java
new file mode 100644
index 0000000..e0a3262
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBNamespaceContext.java
@@ -0,0 +1,135 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import org.apache.axis2.util.ArrayStack;

+

+import javax.xml.namespace.NamespaceContext;

+import java.util.Iterator;

+import java.util.ArrayList;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ADBNamespaceContext implements NamespaceContext {

+

+    private NamespaceContext parentNsContext;

+

+    public NamespaceContext getParentNsContext() {

+        return parentNsContext;

+    }

+

+    public void setParentNsContext(NamespaceContext parentNsContext) {

+        this.parentNsContext = parentNsContext;

+    }

+

+    //Keep two arraylists for the prefixes and namespaces. They should be in sync

+    //since the index of the entry will be used to relate them

+    //use the minimum initial capacity to let things handle memory better

+

+    private ArrayStack prefixStack = new ArrayStack();

+    private ArrayStack uriStack = new ArrayStack();

+

+    /**

+     * Register a namespace in this context

+     * @param prefix

+     * @param uri

+     */

+    public void pushNamespace(String prefix,String uri){

+        prefixStack.push(prefix);

+        uriStack.push(uri);

+

+    }

+

+    /**

+     * Pop a namespace

+     */

+    public void popNamespace(){

+        prefixStack.pop();

+        uriStack.pop();

+    }

+    public String getNamespaceURI(String prefix) {

+        //do the corrections as per the javadoc

+        if (prefixStack.contains(prefix)){

+            int index = prefixStack.indexOf(prefix);

+            return (String)uriStack.get(index);

+        }

+        if (parentNsContext!=null){

+            return parentNsContext.getPrefix(prefix);

+        }

+        return null;

+    }

+

+    public String getPrefix(String uri) {

+        //do the corrections as per the javadoc

+        int index = uriStack.indexOf(uri);

+        if (index != -1){

+            return (String)prefixStack.get(index);

+        }

+

+        if (parentNsContext!=null){

+            return parentNsContext.getPrefix(uri);

+        }

+        return null;

+    }

+

+    public Iterator getPrefixes(String uri) {

+        //create an arraylist that contains the relevant prefixes

+        String[] uris = (String[])uriStack.toArray(new String[uriStack.size()]);

+        ArrayList tempList = new ArrayList();

+        for (int i = 0; i < uris.length; i++) {

+            if (uris[i].equals(uri)){

+                tempList.add(prefixStack.get(i));

+                //we assume that array conversion preserves the order

+            }

+        }

+        //by now all the relevant prefixes are collected

+        //make a new iterator and provide a wrapper iterator to

+        //obey the contract on the API

+        return new WrappingIterator(tempList.iterator());

+    }

+

+

+    private class WrappingIterator implements Iterator{

+

+        private Iterator containedIterator = null;

+

+        public WrappingIterator(Iterator containedIterator) {

+            this.containedIterator = containedIterator;

+        }

+

+        public Iterator getContainedIterator() {

+            return containedIterator;

+        }

+

+        public void setContainedIterator(Iterator containedIterator) {

+            this.containedIterator = containedIterator;

+        }

+

+        /**

+         * As per the contract on the API of Namespace context

+         * the returned iterator should be immutable

+         */

+        public void remove() {

+            throw new UnsupportedOperationException();

+        }

+

+        public boolean hasNext() {

+            return containedIterator.hasNext();

+        }

+

+        public Object next() {

+            return containedIterator.next();

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReader.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReader.java
new file mode 100644
index 0000000..bfac17a
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReader.java
@@ -0,0 +1,47 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import org.apache.axis2.databinding.utils.Constants;

+

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.namespace.NamespaceContext;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public interface ADBXMLStreamReader extends XMLStreamReader,Constants {

+

+    // this will help to handle Text within the current element.

+    // user should pass the element text to the property list as this

+    // ELEMENT_TEXT as the key. This key deliberately has a space in it

+    // so that it is not a valid XML name

+    static final String ELEMENT_TEXT = "Element Text";

+

+    /**

+     * Extra method to query the state of the pullparser

+     */

+     boolean isDone();

+

+    /**

+     * add the parent namespace context to this parser

+     */

+     void addNamespaceContext(NamespaceContext nsContext);

+

+    /**

+     * Initiate the parser - this will do whatever the needed

+     * tasks to initiate the parser and must be called before

+     * attempting any specific parsing using this parser

+     */

+     void init();

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
new file mode 100644
index 0000000..9587e62
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
@@ -0,0 +1,969 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.databinding.ADBBean;

+import org.apache.axis2.databinding.utils.BeanUtil;

+import org.apache.ws.java2wsdl.utils.TypeTable;

+

+import javax.activation.DataHandler;

+import javax.xml.namespace.NamespaceContext;

+import javax.xml.namespace.QName;

+import javax.xml.stream.Location;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import java.util.Arrays;

+import java.util.HashMap;

+import java.util.Map;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * This is the new implementation of the ADBpullaparser. The approach here is simple

+ * When the pull parser needs to generate events for a particular name-value(s) pair

+ * it always handes over (delegates) the task to another pull parser which knows how

+ * to deal with it

+ * The common types of name value pairs we'll come across are

+ * 1. String name/QName name - String value

+ * 2. String name/QName name - String[] value

+ * 3. OMElementkey - OMElement value

+ * 4. QName name/String name  - ADBBean value

+ * 5. QName name/String name  - Java bean

+ * 5. QName name/String name  - Datahandler

+ * <p/>

+ * As for the attributes, these are the possible combinations in the

+ * array

+ * 1. String name/QName name - String value

+ * 2. OMAttributeKey - OMAttribute

+ * <p/>

+ * Note that certain array methods have  been deliberately removed to avoid

+ * complications. The generated code will take the trouble to lay the

+ * elements of the array in the correct order

+ * <p/>

+ * <p/>

+ * Hence there will be a parser impl that knows how to handle these types, and

+ * this parent parser will always delegate these tasks to the child pullparasers

+ * in effect this is one huge state machine that has only a few states and delegates

+ * things down to the child parsers whenever possible

+ * <p/>

+ */

+public class ADBXMLStreamReaderImpl implements ADBXMLStreamReader {

+

+    private Object[] properties;

+    private Object[] attributes;

+    private QName elementQName;

+    //we always create a new namespace context

+    private ADBNamespaceContext namespaceContext = new ADBNamespaceContext();

+

+    private Map declaredNamespaceMap = new HashMap();

+

+    //states for this pullparser - it can only have four states

+    private static final int START_ELEMENT_STATE = 0;

+    private static final int END_ELEMENT_STATE = 1;

+    private static final int DELEGATED_STATE = 2;

+    private static final int TEXT_STATE = 3;

+

+    //integer field that keeps the state of this

+    //parser.

+    private int state = START_ELEMENT_STATE;

+

+    //reference to the child reader

+    private ADBXMLStreamReader childReader;

+

+    //current property index

+    //initialized at zero

+    private int currentPropertyIndex = 0;

+

+    //To keep element formdefault qualified or not

+    private boolean qualified = false;

+

+    //to keep the current types which are in AxisService

+    private TypeTable typeTable = null;

+

+

+    /*

+     * we need to pass in a namespace context since when delegated, we've no

+    * idea of the current namespace context. So it needs to be passed on

+    * here!

+    */

+    public ADBXMLStreamReaderImpl(QName adbBeansQName,

+                                  Object[] properties,

+                                  Object[] attributes) {

+        //validate the lengths, since both the arrays are supposed

+        //to have

+        this.properties = properties;

+        this.elementQName = adbBeansQName;

+        this.attributes = attributes;

+    }

+

+    public ADBXMLStreamReaderImpl(QName adbBeansQName,

+                                  Object[] properties,

+                                  Object[] attributes,

+                                  TypeTable typeTable,

+                                  boolean qualified) {

+        this(adbBeansQName, properties, attributes);

+        this.qualified = qualified;

+        this.typeTable = typeTable;

+    }

+

+    /**

+     * add the namespace context

+     */

+

+    public void addNamespaceContext(NamespaceContext nsContext) {

+        // register the namespace context passed in to this

+        this.namespaceContext.setParentNsContext(nsContext);

+

+

+    }

+

+    /**

+     * we need to split out the calling to the populate namespaces

+     * seperately since this needs to be done *after* setting the

+     * parent namespace context. We cannot assume it will happen at

+     * construction!

+     */

+    public void init() {

+        // here we have an extra issue to attend to. we need to look at the

+        // prefixes and uris (the combination) and populate a hashmap of

+        // namespaces. The hashmap of namespaces will be used to serve the

+        // namespace context

+

+        populateNamespaceContext();

+    }

+

+    /**

+     * @param key

+     * @throws IllegalArgumentException

+     */

+    public Object getProperty(String key) throws IllegalArgumentException {

+        if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {

+            if (OPTIMIZATION_ENABLED.equals(key)) {

+                return Boolean.TRUE;

+            } else {

+                return null;

+            }

+        } else if (state == TEXT_STATE) {

+            if (IS_BINARY.equals(key)) {

+                return Boolean.FALSE;

+            } else {

+                return null;

+            }

+        } else if (state == DELEGATED_STATE) {

+            return childReader.getProperty(key);

+        } else {

+            return null;

+        }

+

+    }

+

+    public void require(int i, String string, String string1)

+            throws XMLStreamException {

+        throw new UnsupportedOperationException();

+    }

+

+    /**

+     * todo implement the right contract for this

+     *

+     * @throws XMLStreamException

+     */

+    public String getElementText() throws XMLStreamException {

+        if (state == DELEGATED_STATE) {

+            return childReader.getElementText();

+        } else {

+            return null;

+        }

+

+    }

+

+    /**

+     * todo implement this

+     *

+     * @throws XMLStreamException

+     */

+    public int nextTag() throws XMLStreamException {

+        return 0;

+    }

+

+    /**

+     * @throws XMLStreamException

+     */

+    public boolean hasNext() throws XMLStreamException {

+        if (state == DELEGATED_STATE) {

+            if (childReader.isDone()) {

+                //the child reader is done. We shouldn't be getting the

+                //hasnext result from the child pullparser then

+                return true;

+            } else {

+                return childReader.hasNext();

+            }

+        } else {

+            return (state == START_ELEMENT_STATE

+                    || state == TEXT_STATE);

+

+

+        }

+    }

+

+    public void close() throws XMLStreamException {

+        //do nothing here - we have no resources to free

+    }

+

+    public String getNamespaceURI(String prefix) {

+        return namespaceContext.getNamespaceURI(prefix);

+    }

+

+    public boolean isStartElement() {

+        if (state == START_ELEMENT_STATE) {

+            return true;

+        } else if (state == END_ELEMENT_STATE) {

+            return false;

+        }

+        return childReader.isStartElement();

+    }

+

+    public boolean isEndElement() {

+        if (state == START_ELEMENT_STATE) {

+            return false;

+        } else if (state == END_ELEMENT_STATE) {

+            return true;

+        }

+        return childReader.isEndElement();

+    }

+

+    public boolean isCharacters() {

+        if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {

+            return false;

+        }

+        return childReader.isCharacters();

+    }

+

+    public boolean isWhiteSpace() {

+        if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {

+            return false;

+        }

+        return childReader.isWhiteSpace();

+    }

+

+    ///////////////////////////////////////////////////////////////////////////

+    ///  attribute handling

+    ///////////////////////////////////////////////////////////////////////////

+

+    public String getAttributeValue(String nsUri, String localName) {

+

+        int attribCount = getAttributeCount();

+        String returnValue = null;

+        QName attribQualifiedName;

+        for (int i = 0; i < attribCount; i++) {

+            attribQualifiedName = getAttributeName(i);

+            if (nsUri == null) {

+                if (localName.equals(attribQualifiedName.getLocalPart())) {

+                    returnValue = getAttributeValue(i);

+                    break;

+                }

+            } else {

+                if (localName.equals(attribQualifiedName.getLocalPart())

+                        && nsUri.equals(attribQualifiedName.getNamespaceURI())) {

+                    returnValue = getAttributeValue(i);

+                    break;

+                }

+            }

+

+        }

+

+

+        return returnValue;

+    }

+

+    public int getAttributeCount() {

+        return (state == DELEGATED_STATE) ?

+                childReader.getAttributeCount() :

+                ((attributes != null) && (state == START_ELEMENT_STATE) ? attributes.length / 2 : 0);

+    }

+

+    /**

+     * @param i

+     */

+    public QName getAttributeName(int i) {

+        if (state == DELEGATED_STATE) {

+            return childReader.getAttributeName(i);

+        } else if (state == START_ELEMENT_STATE) {

+            if (attributes == null) {

+                return null;

+            } else {

+                if ((i >= (attributes.length / 2)) || i < 0) { //out of range

+                    return null;

+                } else {

+                    //get the attribute pointer

+                    Object attribPointer = attributes[i * 2];

+                    //case one - attrib name is null

+                    //this should be the pointer to the OMAttribute then

+                    if (attribPointer == null) {

+                        Object omAttribObj = attributes[(i * 2) + 1];

+                        if (omAttribObj == null ||

+                                !(omAttribObj instanceof OMAttribute)) {

+                            // wrong object set to have in the attrib array -

+                            // this should have been detected by now but just be

+                            // sure

+                            throw new UnsupportedOperationException();

+                        }

+                        OMAttribute att = (OMAttribute) omAttribObj;

+                        return att.getQName();

+                    } else if (attribPointer instanceof OMAttribKey) {

+                        Object omAttribObj = attributes[(i * 2) + 1];

+                        if (omAttribObj == null ||

+                                !(omAttribObj instanceof OMAttribute)) {

+                            // wrong object set to have in the attrib array -

+                            // this should have been detected by now but just be

+                            // sure

+                            throw new UnsupportedOperationException();

+                        }

+                        OMAttribute att = (OMAttribute) omAttribObj;

+                        return att.getQName();

+                        //case two - attrib name is a plain string

+                    } else if (attribPointer instanceof String) {

+                        return new QName((String) attribPointer);

+                    } else if (attribPointer instanceof QName) {

+                        return (QName) attribPointer;

+                    } else {

+                        return null;

+                    }

+                }

+            }

+        } else {

+            throw new IllegalStateException();//as per the api contract

+        }

+

+    }

+

+    public String getAttributeNamespace(int i) {

+        if (state == DELEGATED_STATE) {

+            return childReader.getAttributeNamespace(i);

+        } else if (state == START_ELEMENT_STATE) {

+            QName name = getAttributeName(i);

+            if (name == null) {

+                return null;

+            } else {

+                return name.getNamespaceURI();

+            }

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public String getAttributeLocalName(int i) {

+        if (state == DELEGATED_STATE) {

+            return childReader.getAttributeLocalName(i);

+        } else if (state == START_ELEMENT_STATE) {

+            QName name = getAttributeName(i);

+            if (name == null) {

+                return null;

+            } else {

+                return name.getLocalPart();

+            }

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public String getAttributePrefix(int i) {

+        if (state == DELEGATED_STATE) {

+            return childReader.getAttributePrefix(i);

+        } else if (state == START_ELEMENT_STATE) {

+            QName name = getAttributeName(i);

+            if (name == null) {

+                return null;

+            } else {

+                return name.getPrefix();

+            }

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public String getAttributeType(int i) {

+        return null;  //not supported

+    }

+

+    public String getAttributeValue(int i) {

+        if (state == DELEGATED_STATE) {

+            return childReader.getAttributeValue(i);

+        } else if (state == START_ELEMENT_STATE) {

+            if (attributes == null) {

+                return null;

+            } else {

+                if ((i >= (attributes.length / 2)) || i < 0) { //out of range

+                    return null;

+                } else {

+                    //get the attribute pointer

+                    Object attribPointer = attributes[i * 2];

+                    Object omAttribObj = attributes[(i * 2) + 1];

+                    //case one - attrib name is null

+                    //this should be the pointer to the OMAttribute then

+                    if (attribPointer == null) {

+

+                        if (omAttribObj == null ||

+                                !(omAttribObj instanceof OMAttribute)) {

+                            // wrong object set to have in the attrib array -

+                            // this should have been detected by now but just be

+                            // sure

+                            throw new UnsupportedOperationException();

+                        }

+                        OMAttribute att = (OMAttribute) omAttribObj;

+                        return att.getAttributeValue();

+                    } else if (attribPointer instanceof OMAttribKey) {

+                        if (omAttribObj == null ||

+                                !(omAttribObj instanceof OMAttribute)) {

+                            // wrong object set to have in the attrib array -

+                            // this should have been detected by now but just be

+                            // sure

+                            throw new UnsupportedOperationException();

+                        }

+                        OMAttribute att = (OMAttribute) omAttribObj;

+                        return att.getAttributeValue();

+                        //case two - attrib name is a plain string

+                    } else if (attribPointer instanceof String) {

+                        return (String) omAttribObj;

+                    } else if (attribPointer instanceof QName) {

+                        return (String) omAttribObj;

+                    } else {

+                        return null;

+                    }

+                }

+            }

+        } else {

+            throw new IllegalStateException();

+        }

+

+    }

+

+    public boolean isAttributeSpecified(int i) {

+        return false;  //not supported

+    }

+

+///////////////////////////////////////////////////////////////////////////

+//////////////  end of attribute handling

+///////////////////////////////////////////////////////////////////////////

+

+////////////////////////////////////////////////////////////////////////////

+//////////////   namespace handling

+////////////////////////////////////////////////////////////////////////////

+

+    public int getNamespaceCount() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getNamespaceCount();

+        } else {

+            return declaredNamespaceMap.size();

+        }

+    }

+

+    /**

+     * @param i

+     */

+    public String getNamespacePrefix(int i) {

+        if (state == DELEGATED_STATE) {

+            return childReader.getNamespacePrefix(i);

+        } else if (state != TEXT_STATE) {

+            //order the prefixes

+            String[] prefixes = makePrefixArray();

+            if ((i >= prefixes.length) || (i < 0)) {

+                return null;

+            } else {

+                return prefixes[i];

+            }

+

+        } else {

+            throw new IllegalStateException();

+        }

+

+    }

+

+    /**

+     * Get the prefix list from the hastable and take that into an array

+     */

+    private String[] makePrefixArray() {

+        String[] prefixes =

+                (String[]) declaredNamespaceMap.keySet().

+                        toArray(new String[declaredNamespaceMap.size()]);

+        Arrays.sort(prefixes);

+        return prefixes;

+    }

+

+    public String getNamespaceURI(int i) {

+        if (state == DELEGATED_STATE) {

+            return childReader.getNamespaceURI(i);

+        } else if (state != TEXT_STATE) {

+            String namespacePrefix = getNamespacePrefix(i);

+            return namespacePrefix == null ? null :

+                    (String) declaredNamespaceMap.get(namespacePrefix);

+        } else {

+            throw new IllegalStateException();

+        }

+

+    }

+

+    public NamespaceContext getNamespaceContext() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getNamespaceContext();

+        } else {

+            return namespaceContext;

+        }

+

+

+    }

+

+///////////////////////////////////////////////////////////////////////////

+/////////  end of namespace handling

+///////////////////////////////////////////////////////////////////////////

+

+    public int getEventType() {

+        if (state == START_ELEMENT_STATE) {

+            return START_ELEMENT;

+        } else if (state == END_ELEMENT_STATE) {

+            return END_ELEMENT;

+        } else { // this is the delegated state

+            return childReader.getEventType();

+        }

+

+    }

+

+    public String getText() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getText();

+        } else if (state == TEXT_STATE) {

+            return (String) properties[currentPropertyIndex - 1];

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public char[] getTextCharacters() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getTextCharacters();

+        } else if (state == TEXT_STATE) {

+            return properties[currentPropertyIndex - 1] == null ? new char[0] :

+                    ((String) properties[currentPropertyIndex - 1]).toCharArray();

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextCharacters(int i, char[] chars, int i1, int i2)

+            throws XMLStreamException {

+        if (state == DELEGATED_STATE) {

+            return childReader.getTextCharacters(i, chars, i1, i2);

+        } else if (state == TEXT_STATE) {

+            //todo  - implement this

+            return 0;

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextStart() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getTextStart();

+        } else if (state == TEXT_STATE) {

+            return 0;//assume text always starts at 0

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextLength() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getTextLength();

+        } else if (state == TEXT_STATE) {

+            return 0;//assume text always starts at 0

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public String getEncoding() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getEncoding();

+        } else {

+            //we've no idea what the encoding is going to be in this case

+            //perhaps we ought to return some constant here, which the user might

+            //have access to change!

+            return null;

+        }

+    }

+

+    /**

+     * check the validity of this implementation

+     */

+    public boolean hasText() {

+        if (state == DELEGATED_STATE) {

+            return childReader.hasText();

+        } else return state == TEXT_STATE;

+

+    }

+

+    /**

+     */

+    public Location getLocation() {

+        //return a default location

+        return new Location() {

+            public int getLineNumber() {

+                return 0;

+            }

+

+            public int getColumnNumber() {

+                return 0;

+            }

+

+            public int getCharacterOffset() {

+                return 0;

+            }

+

+            public String getPublicId() {

+                return null;

+            }

+

+            public String getSystemId() {

+                return null;

+            }

+        };

+    }

+

+    public QName getName() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getName();

+        } else if (state != TEXT_STATE) {

+            return elementQName;

+        } else {

+            throw new IllegalStateException();

+        }

+

+    }

+

+    public String getLocalName() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getLocalName();

+        } else if (state != TEXT_STATE) {

+            return elementQName.getLocalPart();

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public boolean hasName() {

+        //since this parser always has a name, the hasname

+        //has to return true if we are still navigating this element

+        //if not we should ask the child reader for it.

+        if (state == DELEGATED_STATE) {

+            return childReader.hasName();

+        } else return state != TEXT_STATE;

+    }

+

+    public String getNamespaceURI() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getNamespaceURI();

+        } else if (state == TEXT_STATE) {

+            return null;

+        } else {

+            return elementQName.getNamespaceURI();

+        }

+    }

+

+    public String getPrefix() {

+        if (state == DELEGATED_STATE) {

+            return childReader.getPrefix();

+        } else if (state == TEXT_STATE) {

+            return null;

+        } else {

+            String prefix = elementQName.getPrefix();

+            return "".equals(prefix) ? null : prefix;

+        }

+    }

+

+    public String getVersion() {

+        return null;

+    }

+

+    public boolean isStandalone() {

+        return true;

+    }

+

+    public boolean standaloneSet() {

+        return true;

+    }

+

+    public String getCharacterEncodingScheme() {

+        return null;   //todo - should we return something for this ?

+    }

+

+    public String getPITarget() {

+        throw new UnsupportedOperationException("Yet to be implemented !!");

+    }

+

+    public String getPIData() {

+        throw new UnsupportedOperationException("Yet to be implemented !!");

+    }

+

+///////////////////////////////////////////////////////////////////////////

+/// Other utility methods

+//////////////////////////////////////////////////////////////////////////

+

+

+    /**

+     * Populates a namespace context

+     */

+    private void populateNamespaceContext() {

+

+        //first add the current element namespace to the namespace context

+        //declare it if not found

+        addToNsMap(elementQName.getPrefix(), elementQName.getNamespaceURI());

+

+        //traverse through the attributes and populate the namespace context

+        //the attrib list can be of many combinations

+        // the valid combinations are

+        // String - String

+        // QName - QName

+        // null - OMAttribute

+

+        if (attributes != null) {

+            for (int i = 0; i < attributes.length; i = i + 2) { //jump in two

+                Object attribName = attributes[i];

+                if (attribName == null) {

+                    //this should be the OMAttrib case!

+                    OMAttribute OMAttrib = (OMAttribute) attributes[i + 1];

+                    OMNamespace namespace = OMAttrib.getNamespace();

+                    if (namespace != null) {

+                        addToNsMap(namespace.getPrefix(),

+                                namespace.getNamespaceURI());

+                    }

+                } else if (attribName instanceof OMAttribKey) {

+                    //this is definitely the OMAttribute case

+                    OMAttribute OMAttrib = (OMAttribute) attributes[i + 1];

+                    OMNamespace namespace = OMAttrib.getNamespace();

+                    if (namespace != null) {

+                        addToNsMap(namespace.getPrefix(),

+                                namespace.getNamespaceURI());

+                    }

+                } else if (attribName instanceof String) {

+                    //ignore this case - Nothing to do

+                } else if (attribName instanceof QName) {

+                    QName attribQName = ((QName) attribName);

+                    addToNsMap(attribQName.getPrefix(),

+                            attribQName.getNamespaceURI());

+

+                }

+            }

+        }

+

+

+    }

+

+    /**

+     * @param prefix

+     * @param uri

+     */

+    private void addToNsMap(String prefix, String uri) {

+        if (!uri.equals(namespaceContext.getNamespaceURI(prefix))) {

+            namespaceContext.pushNamespace(prefix, uri);

+            declaredNamespaceMap.put(prefix, uri);

+        }

+    }

+

+    /**

+     * By far this should be the most important method in this class

+     * this method changes the state of the parser

+     */

+    public int next() throws XMLStreamException {

+        int returnEvent = -1; //invalid state is the default state

+        switch (state) {

+            case START_ELEMENT_STATE:

+                //current element is start element. We should be looking at the

+                //property list and making a pullparser for the property value

+                if (properties == null || properties.length == 0) {

+                    //no properties - move to the end element state straightaway

+                    state = END_ELEMENT_STATE;

+                    returnEvent = END_ELEMENT;

+                } else {

+                    //there are properties. now we should delegate this task to a

+                    //child reader depending on the property type

+                    returnEvent = processProperties();

+

+

+                }

+                break;

+            case END_ELEMENT_STATE:

+                //we've reached the end element already. If the user tries to push

+                // further ahead then it is an exception

+                throw new XMLStreamException(

+                        "Trying to go beyond the end of the pullparser");

+

+

+            case DELEGATED_STATE:

+                if (childReader.isDone()) {

+                    //we've reached the end!

+                    if (currentPropertyIndex > (properties.length - 1)) {

+                        state = END_ELEMENT_STATE;

+                        returnEvent = END_ELEMENT;

+                    } else {

+                        returnEvent = processProperties();

+                    }

+                } else {

+                    returnEvent = childReader.next();

+                }

+                break;

+

+            case TEXT_STATE:

+                // if there are any more event we should be delegating to

+                // processProperties. if not we just return an end element

+                if (currentPropertyIndex > (properties.length - 1)) {

+                    state = END_ELEMENT_STATE;

+                    returnEvent = END_ELEMENT;

+                } else {

+                    returnEvent = processProperties();

+                }

+                break;

+        }

+        return returnEvent;

+    }

+

+    /**

+     * A convenient method to reuse the properties

+     *

+     * @return event to be thrown

+     * @throws XMLStreamException

+     */

+    private int processProperties() throws XMLStreamException {

+        //move to the next property depending on the current property

+        //index

+        Object propPointer = properties[currentPropertyIndex];

+        QName propertyQName = null;

+        boolean textFound = false;

+        if (propPointer == null) {

+            throw new XMLStreamException("property key cannot be null!");

+        } else if (propPointer instanceof String) {

+            // propPointer being a String has a special case

+            // that is it can be a the special constant ELEMENT_TEXT that

+            // says this text event

+            if (ELEMENT_TEXT.equals(propPointer)) {

+                textFound = true;

+            } else {

+                propertyQName = new QName((String) propPointer);

+            }

+        } else if (propPointer instanceof QName) {

+            propertyQName = (QName) propPointer;

+        } else if (propPointer instanceof OMElementKey) {

+            // ah - in this case there's nothing to be done

+            //about the propertyQName in this case - we'll just leave

+            //it as it is

+        } else {

+            //oops - we've no idea what kind of key this is

+            throw new XMLStreamException(

+                    "unidentified property key!!!" + propPointer);

+        }

+

+        //ok! we got the key. Now look at the value

+        Object propertyValue = properties[currentPropertyIndex + 1];

+        //cater for the special case now

+        if (textFound) {

+            //no delegation here - make the parser null and immediately

+            //return with the event characters

+            childReader = null;

+            state = TEXT_STATE;

+            currentPropertyIndex = currentPropertyIndex + 2;

+            return CHARACTERS;

+        } else if (propertyValue == null) {

+            //if the value is null we delegate the work to a nullable

+            // parser

+            childReader = new NullXMLStreamReader(propertyQName);

+            childReader.addNamespaceContext(this.namespaceContext);

+            childReader.init();

+

+            //we've a special pullparser for a datahandler!

+        } else if (propertyValue instanceof DataHandler) {

+            childReader = new ADBDataHandlerStreamReader(propertyQName,

+                    (DataHandler) propertyValue);

+            childReader.addNamespaceContext(this.namespaceContext);

+            childReader.init();

+

+        } else if (propertyValue instanceof String) {

+            //strings are handled by the NameValuePairStreamReader

+            childReader =

+                    new NameValuePairStreamReader(propertyQName,

+                            (String) propertyValue);

+            childReader.addNamespaceContext(this.namespaceContext);

+            childReader.init();

+        } else if (propertyValue instanceof String[]) {

+            //string[] are handled by the  NameValueArrayStreamReader

+            //if the array is empty - skip it

+            if (((String[]) propertyValue).length == 0) {

+                //advance the index

+                currentPropertyIndex = currentPropertyIndex + 2;

+                return processProperties();

+            } else {

+                childReader =

+                        new NameValueArrayStreamReader(propertyQName,

+                                (String[]) propertyValue);

+                childReader.addNamespaceContext(this.namespaceContext);

+                childReader.init();

+            }

+

+        } else if (propertyValue instanceof ADBBean) {

+            //ADBbean has it's own method to get a reader

+            XMLStreamReader reader = ((ADBBean) propertyValue).

+                    getPullParser(propertyQName);

+            // we know for sure that this is an ADB XMLStreamreader.

+            // However we need to make sure that it is compatible

+            if (reader instanceof ADBXMLStreamReader) {

+                childReader = (ADBXMLStreamReader) reader;

+                childReader.addNamespaceContext(this.namespaceContext);

+                childReader.init();

+            } else {

+                //wrap it to make compatible

+                childReader = new WrappingXMLStreamReader(

+                        reader);

+            }

+        } else if (propertyValue instanceof OMElement) {

+            //OMElements do not provide the kind of parser we need

+            //there is no other option than wrapping

+            childReader = new WrappingXMLStreamReader(

+                    ((OMElement) propertyValue).getXMLStreamReader());

+            //we cannot register the namespace context here!!

+

+        } else {

+            //all special possiblilities has been tried! Let's treat

+            //the thing as a bean and try generating events from it

+            childReader = new WrappingXMLStreamReader

+                    (BeanUtil.getPullParser(propertyValue,

+                            propertyQName, typeTable, qualified));

+            //we cannot register the namespace context here

+        }

+

+        //set the state here

+        state = DELEGATED_STATE;

+        //we are done with the delegation

+        //increment the property index

+        currentPropertyIndex = currentPropertyIndex + 2;

+        return childReader.getEventType();

+    }

+

+    /**

+     * are we done ?

+     */

+    public boolean isDone() {

+        return (state == END_ELEMENT_STATE);

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NameValueArrayStreamReader.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NameValueArrayStreamReader.java
new file mode 100644
index 0000000..9f68629
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NameValueArrayStreamReader.java
@@ -0,0 +1,413 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.Location;

+import javax.xml.namespace.QName;

+import javax.xml.namespace.NamespaceContext;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class NameValueArrayStreamReader implements ADBXMLStreamReader {

+

+    private static final int START_ELEMENT_STATE = 0;

+    private static final int TEXT_STATE = 1;

+    private static final int END_ELEMENT_STATE = 2;

+    private static final int FINAL_END_ELEMENT_STATE = 3;

+    private static final int START_ELEMENT_STATE_WITH_NULL = 4;

+

+    private static final QName NIL_QNAME = new QName("http://www.w3.org/2001/XMLSchema-instance", "nil", "xsi");

+    private static final String NIL_VALUE_TRUE = "true";

+

+

+    private ADBNamespaceContext namespaceContext =

+            new ADBNamespaceContext();

+    //the index of the array

+    private int arrayIndex = 0;

+

+    private QName name;

+    private String[] values;

+

+    //start element is the default state

+    private int state = START_ELEMENT_STATE;

+

+

+    public NameValueArrayStreamReader(QName name, String[] values) {

+        this.name = name;

+        this.values = values;

+    }

+

+    public void addNamespaceContext(NamespaceContext nsContext) {

+        this.namespaceContext.setParentNsContext(nsContext);

+    }

+

+    public void init() {

+        //todo what if the Qname namespace has not been declared

+    }

+

+    public Object getProperty(String string) throws IllegalArgumentException {

+        return null;

+    }

+

+    /**

+     * @throws XMLStreamException

+     */

+    public int next() throws XMLStreamException {

+        switch (state) {

+            case START_ELEMENT_STATE:

+                if (values.length>0){

+                    state = TEXT_STATE;

+                    return CHARACTERS;

+                }else{

+                    state = FINAL_END_ELEMENT_STATE;

+                    return END_ELEMENT;

+                }

+

+            case START_ELEMENT_STATE_WITH_NULL:

+                if (arrayIndex == (values.length - 1)) {

+                    state = FINAL_END_ELEMENT_STATE;

+                } else {

+                    state = END_ELEMENT_STATE;

+                }

+                return END_ELEMENT;

+            case FINAL_END_ELEMENT_STATE:

+                //oops, not supposed to happen!

+                throw new XMLStreamException("end already reached!");

+            case END_ELEMENT_STATE:

+                //we've to have more values since this is not the

+                //last value

+                //increment the counter

+                arrayIndex++;

+                if (values[arrayIndex] == null) {

+                    state = START_ELEMENT_STATE_WITH_NULL;

+                } else {

+                    state = START_ELEMENT_STATE;

+                }

+                return START_ELEMENT;

+            case TEXT_STATE:

+                if (arrayIndex == (values.length - 1)) {

+                    state = FINAL_END_ELEMENT_STATE;

+                    return END_ELEMENT;

+                } else {

+                    state = END_ELEMENT_STATE;

+                    return END_ELEMENT;

+                }

+

+            default:

+                throw new XMLStreamException("unknown event type!");

+        }

+    }

+

+    public void require(int i, String string, String string1) throws XMLStreamException {

+        //nothing done here

+    }

+

+    public String getElementText() throws XMLStreamException {

+        return null; //not implemented

+    }

+

+    public int nextTag() throws XMLStreamException {

+        return 0; //not implemented

+    }

+

+

+    public String getAttributeValue(String string, String string1) {

+        if (state == TEXT_STATE) {

+            //todo something

+            return null;

+        } else {

+            return null;

+        }

+

+    }

+

+    public int getAttributeCount() {

+        if (state == START_ELEMENT_STATE_WITH_NULL) return 1;

+        if (state == START_ELEMENT_STATE) {

+            return 0;

+        } else {

+            throw new IllegalStateException();

+        }

+

+    }

+

+    public QName getAttributeName(int i) {

+        if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)

+            return NIL_QNAME;

+        if (state == START_ELEMENT_STATE) {

+            return null;

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public String getAttributeNamespace(int i) {

+        if (state == START_ELEMENT_STATE_WITH_NULL  && i == 0)

+            return NIL_QNAME.getNamespaceURI();

+        if (state == START_ELEMENT_STATE) {

+            return null;

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public String getAttributeLocalName(int i) {

+        if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)

+            return NIL_QNAME.getLocalPart();

+        if (state == START_ELEMENT_STATE) {

+            return null;

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public String getAttributePrefix(int i) {

+        if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)

+            return NIL_QNAME.getPrefix();

+        if (state == START_ELEMENT_STATE) {

+            return null;

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public String getAttributeType(int i) {

+        return null;  //not implemented

+    }

+

+    public String getAttributeValue(int i) {

+        if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)

+            return NIL_VALUE_TRUE;

+        if (state == START_ELEMENT_STATE) {

+            return null;

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public boolean isAttributeSpecified(int i) {

+        return false; //not supported

+    }

+

+    public int getNamespaceCount() {

+        if (state == START_ELEMENT_STATE_WITH_NULL && isXsiNamespacePresent())

+            return 1;

+        else

+            return 0;

+

+    }

+

+    public String getNamespacePrefix(int i) {

+        if (state == START_ELEMENT_STATE_WITH_NULL

+                && isXsiNamespacePresent() && i==0)

+            return NIL_QNAME.getPrefix();

+        else

+            return null;

+    }

+

+    public String getNamespaceURI(int i) {

+        if (state == START_ELEMENT_STATE_WITH_NULL

+                && isXsiNamespacePresent() && i==0)

+            return NIL_QNAME.getNamespaceURI();

+        else

+            return null;

+    }

+

+    public NamespaceContext getNamespaceContext() {

+        return this.namespaceContext;

+    }

+

+    public boolean isDone() {

+        return (state == FINAL_END_ELEMENT_STATE);

+    }

+

+    public int getEventType() {

+        switch (state) {

+            case START_ELEMENT_STATE:

+                return START_ELEMENT;

+            case END_ELEMENT_STATE:

+                return END_ELEMENT;

+            case TEXT_STATE:

+                return CHARACTERS;

+            case FINAL_END_ELEMENT_STATE:

+                return END_ELEMENT;

+            default:

+                throw new UnsupportedOperationException();

+                //we've no idea what this is!!!!!

+        }

+

+    }

+

+    public String getText() {

+        if (state == TEXT_STATE) {

+            return values[arrayIndex];

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public char[] getTextCharacters() {

+        if (state == TEXT_STATE) {

+            return values[arrayIndex].toCharArray();

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {

+        //not implemented

+        throw new UnsupportedOperationException();

+    }

+

+    public int getTextStart() {

+        if (state == TEXT_STATE) {

+            return 0;

+        } else {

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextLength() {

+        if (state == TEXT_STATE) {

+            return values[arrayIndex].length();

+        } else {

+            throw new IllegalStateException();

+        }

+

+    }

+

+    public String getEncoding() {

+        return null;

+    }

+

+    public boolean hasText() {

+        return (state == TEXT_STATE);

+    }

+

+    public Location getLocation() {

+        return null;  //not supported

+    }

+

+    public QName getName() {

+        if (state != TEXT_STATE) {

+            return name;

+        } else {

+            return null;

+        }

+    }

+

+    public String getLocalName() {

+        if (state != TEXT_STATE) {

+            return name.getLocalPart();

+        } else {

+            return null;

+        }

+    }

+

+    public boolean hasName() {

+        return (state != TEXT_STATE);

+

+    }

+

+    public String getNamespaceURI() {

+        if (state != TEXT_STATE) {

+            return name.getNamespaceURI();

+        } else {

+            return null;

+        }

+

+    }

+

+    public String getPrefix() {

+        if (state != TEXT_STATE) {

+            return name.getPrefix();

+        } else {

+            return null;

+        }

+    }

+

+    public String getVersion() {

+        return null;  //todo 1.0 ?

+    }

+

+    public boolean isStandalone() {

+        return false;

+    }

+

+    public boolean standaloneSet() {

+        return false;

+    }

+

+    public String getCharacterEncodingScheme() {

+        return null;

+    }

+

+    public String getPITarget() {

+        return null;

+    }

+

+    public String getPIData() {

+        return null;

+    }

+

+    public boolean hasNext() throws XMLStreamException {

+        return (state != FINAL_END_ELEMENT_STATE);

+    }

+

+    public void close() throws XMLStreamException {

+        //Do nothing - we've nothing to free here

+    }

+

+    public String getNamespaceURI(String prefix) {

+        return namespaceContext.getNamespaceURI(prefix);

+    }

+

+    public boolean isStartElement() {

+        return (state == START_ELEMENT_STATE);

+    }

+

+    public boolean isEndElement() {

+        return (state == END_ELEMENT_STATE);

+    }

+

+    public boolean isCharacters() {

+        return (state == TEXT_STATE);

+    }

+

+    public boolean isWhiteSpace() {

+        return false;  //no whitespaces here

+    }

+

+    /**

+     * @param prefix

+     * @param uri

+     */

+    private void addToNsMap(String prefix, String uri) {

+        //todo - need to fix this up to cater for cases where

+        //namespaces are having  no prefixes

+        if (!uri.equals(namespaceContext.getNamespaceURI(prefix))) {

+            //this namespace is not there. Need to declare it

+            namespaceContext.pushNamespace(prefix, uri);

+        }

+    }

+

+    /**

+     * Test whether the xsi namespace is present

+     */

+    private boolean isXsiNamespacePresent() {

+        return (namespaceContext.getNamespaceURI(NIL_QNAME.getPrefix()) != null);

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NameValuePairStreamReader.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NameValuePairStreamReader.java
new file mode 100644
index 0000000..00b99b4
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NameValuePairStreamReader.java
@@ -0,0 +1,356 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.Location;

+import javax.xml.namespace.QName;

+import javax.xml.namespace.NamespaceContext;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class NameValuePairStreamReader implements ADBXMLStreamReader {

+

+    private static final int START_ELEMENT_STATE = 0;

+    private static final int TEXT_STATE = 1;

+    private static final int END_ELEMENT_STATE = 2;

+

+    private ADBNamespaceContext namespaceContext =

+            new ADBNamespaceContext();

+

+    private QName name;

+    private String value;

+

+    private int state = START_ELEMENT_STATE;

+    //initiate at the start element state

+

+    //keeps track whether the namespace is declared

+    //false by default

+    private boolean nsDeclared = false;

+

+    public NameValuePairStreamReader(QName name, String value) {

+        this.name = name;

+        this.value = value;

+    }

+

+    public Object getProperty(String key) throws IllegalArgumentException {

+        //since optimization is a global property

+        //we've to implement it everywhere

+        if (OPTIMIZATION_ENABLED.equals(key)){

+            return Boolean.TRUE;

+        }else if (state==TEXT_STATE){

+            if (IS_BINARY.equals(key)){

+                return Boolean.FALSE;

+            }else{

+                return null;

+            }

+        }else{

+            return null;

+        }

+    }

+

+    public int next() throws XMLStreamException {

+        //no need to handle null here. it should have been handled

+        //already

+        switch (state){

+            case START_ELEMENT_STATE:

+                state=TEXT_STATE;

+                return CHARACTERS;

+            case END_ELEMENT_STATE:

+                //oops, not supposed to happen!

+                throw new XMLStreamException("end already reached!");

+            case TEXT_STATE:

+                state = END_ELEMENT_STATE;

+                return END_ELEMENT;

+            default:

+                throw new XMLStreamException("unknown event type!");

+        }

+    }

+

+    public void require(int i, String string, String string1) throws XMLStreamException {

+        //not implemented

+    }

+

+    public String getElementText() throws XMLStreamException {

+        if (state==START_ELEMENT){

+            //move to the end state and return the value

+            state = END_ELEMENT_STATE;

+            return value;

+        }else{

+            throw new XMLStreamException();

+        }

+

+    }

+

+    public int nextTag() throws XMLStreamException {

+        return 0;//todo

+    }

+

+    public boolean hasNext() throws XMLStreamException {

+        return (state!=END_ELEMENT_STATE);

+    }

+

+    public void close() throws XMLStreamException {

+        //Do nothing - we've nothing to free here

+    }

+

+    public String getNamespaceURI(String prefix) {

+        return namespaceContext.getNamespaceURI(prefix);

+    }

+

+    public boolean isStartElement() {

+        return (state==START_ELEMENT_STATE);

+    }

+

+    public boolean isEndElement() {

+        return (state==END_ELEMENT_STATE);

+    }

+

+    public boolean isCharacters() {

+        return (state==TEXT_STATE);

+    }

+

+    public boolean isWhiteSpace() {

+        return false;  //no whitespaces here

+    }

+

+    public String getAttributeValue(String string, String string1) {

+        return null;

+    }

+

+    public int getAttributeCount() {

+        return 0;

+    }

+

+    public QName getAttributeName(int i) {

+        return null;

+    }

+

+    public String getAttributeNamespace(int i) {

+        return null;

+    }

+

+    public String getAttributeLocalName(int i) {

+        return null;

+    }

+

+    public String getAttributePrefix(int i) {

+        return null;

+    }

+

+    public String getAttributeType(int i) {

+        return null;

+    }

+

+    public String getAttributeValue(int i) {

+        return null;

+    }

+

+    public boolean isAttributeSpecified(int i) {

+        return false; //no attribs here

+    }

+

+    public int getNamespaceCount() {

+        return (nsDeclared)?1:0;

+    }

+

+    public String getNamespacePrefix(int i) {

+        return (nsDeclared && i==0)?name.getPrefix():null;

+    }

+

+    public String getNamespaceURI(int i) {

+        return (nsDeclared && i==0)?name.getNamespaceURI():null;

+    }

+

+    public NamespaceContext getNamespaceContext() {

+        return this.namespaceContext;

+    }

+

+    public int getEventType() {

+        switch (state){

+            case START_ELEMENT_STATE:

+                return START_ELEMENT;

+            case END_ELEMENT_STATE:

+                return END_ELEMENT;

+            case TEXT_STATE:

+                return CHARACTERS;

+            default:

+                throw new UnsupportedOperationException();

+                //we've no idea what this is!!!!!

+        }

+

+    }

+

+    public String getText() {

+        if (state==TEXT_STATE){

+            return value;

+        }else{

+            throw new IllegalStateException();

+        }

+    }

+

+    public char[] getTextCharacters() {

+        if (state==TEXT_STATE){

+            return value.toCharArray();

+        }else{

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {

+        //not implemented

+        throw new UnsupportedOperationException();

+    }

+

+    public int getTextStart() {

+        if (state==TEXT_STATE){

+            return 0;

+        }else{

+            throw new IllegalStateException();

+        }

+    }

+

+    public int getTextLength() {

+        if (state==TEXT_STATE){

+            return value.length();

+        }else{

+            throw new  IllegalStateException();

+        }

+

+    }

+

+    public String getEncoding() {

+        return null;

+    }

+

+    public boolean hasText() {

+        return (state==TEXT_STATE);

+    }

+

+    public Location getLocation() {

+        return new Location(){

+            public int getLineNumber() {

+                return 0;

+            }

+

+            public int getColumnNumber() {

+                return 0;

+            }

+

+            public int getCharacterOffset() {

+                return 0;

+            }

+

+            public String getPublicId() {

+                return null;

+            }

+

+            public String getSystemId() {

+                return null;

+            }

+        };

+    }

+

+    public QName getName() {

+        if (state!=TEXT_STATE){

+            return name;

+        }else{

+            return null;

+        }

+    }

+

+    public String getLocalName() {

+        if (state!=TEXT_STATE){

+            return name.getLocalPart();

+        }else{

+            return null;

+        }

+    }

+

+    public boolean hasName() {

+        return (state != TEXT_STATE);

+

+    }

+

+    public String getNamespaceURI() {

+        if (state!=TEXT_STATE){

+            return name.getNamespaceURI();

+        }else{

+            return null;

+        }

+

+    }

+

+    public String getPrefix() {

+        if (state!=TEXT_STATE){

+            return name.getPrefix();

+        }else{

+            return null;

+        }

+    }

+

+    public String getVersion() {

+        return null;  //todo 1.0 ?

+    }

+

+    public boolean isStandalone() {

+        return false;

+    }

+

+    public boolean standaloneSet() {

+        return false;

+    }

+

+    public String getCharacterEncodingScheme() {

+        return null;

+    }

+

+    public String getPITarget() {

+        return null;

+    }

+

+    public String getPIData() {

+        return null;

+    }

+

+    public boolean isDone() {

+        return (state==END_ELEMENT_STATE);

+    }

+

+    public void addNamespaceContext(NamespaceContext nsContext) {

+        this.namespaceContext.setParentNsContext(nsContext);

+    }

+

+    public void init() {

+        //just add the current elements namespace and prefix to the this

+        //elements nscontext

+        addToNsMap(name.getPrefix(),name.getNamespaceURI());

+

+

+    }

+    /**

+     * @param prefix

+     * @param uri

+     */

+    private void addToNsMap(String prefix, String uri) {

+        //todo - need to fix this up to cater for cases where

+        //namespaces are having  no prefixes

+        if (!uri.equals(namespaceContext.getNamespaceURI(prefix))) {

+            //this namespace is not there. Need to declare it

+            namespaceContext.pushNamespace(prefix, uri);

+            nsDeclared = true;

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NullXMLStreamReader.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NullXMLStreamReader.java
new file mode 100644
index 0000000..a229f90
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/NullXMLStreamReader.java
@@ -0,0 +1,291 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import javax.xml.namespace.NamespaceContext;

+import javax.xml.namespace.QName;

+import javax.xml.stream.Location;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class NullXMLStreamReader implements ADBXMLStreamReader {

+

+    private QName outerQName = null;

+

+

+    private static final int START_ELEMENT_STATE = 1;

+    private static final int END_ELEMENT_STATE = 2;

+

+

+    private static final QName NIL_QNAME = new QName("http://www.w3.org/2001/XMLSchema-instance","nil","xsi");

+    private static final String NIL_VALUE_TRUE ="true";

+

+    private int currentState = START_ELEMENT;

+

+    public NullXMLStreamReader(QName outerQName) {

+        this.outerQName = outerQName;

+    }

+

+    public Object getProperty(String key) throws IllegalArgumentException {

+         //since optimization is a global property

+        //we've to implement it everywhere

+        if (OPTIMIZATION_ENABLED.equals(key)){

+               return Boolean.TRUE;

+           }else{

+               return null;

+           }

+    }

+

+    public int next() throws XMLStreamException {

+        int returnEvent = START_DOCUMENT;

+        switch(currentState){

+            case START_ELEMENT_STATE:

+                currentState = END_ELEMENT_STATE;

+                returnEvent =  END_ELEMENT;

+                break;

+            case END_ELEMENT_STATE:

+               throw new XMLStreamException("parser completed!");

+

+        }

+

+        return returnEvent;

+    }

+

+    public void require(int i, String string, String string1) throws XMLStreamException {

+        //nothing

+    }

+

+    public String getElementText() throws XMLStreamException {

+        return null;

+    }

+

+    public int nextTag() throws XMLStreamException {

+        throw new UnsupportedOperationException();

+    }

+

+    public boolean hasNext() throws XMLStreamException {

+        return (currentState!=END_ELEMENT_STATE);

+

+    }

+

+    public void close() throws XMLStreamException {

+        //do nothing

+    }

+

+    public String getNamespaceURI(String string) {

+        if (outerQName.getPrefix()!=null &&

+                outerQName.getPrefix().equals(string)){

+            return outerQName.getNamespaceURI();

+        }else{

+            return null;

+        }

+    }

+

+    public boolean isStartElement() {

+        return (currentState==START_ELEMENT_STATE);

+    }

+

+    public boolean isEndElement() {

+        return (currentState==END_ELEMENT_STATE);

+    }

+

+    public boolean isCharacters() {

+        return false;

+    }

+

+    public boolean isWhiteSpace() {

+        return false;

+    }

+

+    public String getAttributeValue(String string, String string1) {

+        if (string== null){//null namespace - ignore it

+            if (NIL_QNAME.getLocalPart().equals(string1)){

+                return NIL_VALUE_TRUE;

+            }

+        }

+        return null;

+    }

+

+    public int getAttributeCount() {

+        return 1;

+    }

+

+    public QName getAttributeName(int i) {

+        return (i==0)? NIL_QNAME:null;

+    }

+

+    public String getAttributeNamespace(int i) {

+        return (i==0)? NIL_QNAME.getNamespaceURI():null;

+    }

+

+    public String getAttributeLocalName(int i) {

+        return (i==0)? NIL_QNAME.getLocalPart():null;

+    }

+

+    public String getAttributePrefix(int i) {

+        return (i==0)? NIL_QNAME.getPrefix():null;

+    }

+

+    public String getAttributeType(int i) {

+        throw new UnsupportedOperationException();

+    }

+

+    public String getAttributeValue(int i) {

+        return (i==0)? NIL_VALUE_TRUE:null;

+    }

+

+    public boolean isAttributeSpecified(int i) {

+        return (i == 0);

+    }

+

+    public int getNamespaceCount() {

+        return 0;

+    }

+

+    public String getNamespacePrefix(int i) {

+        return null;

+    }

+

+    public String getNamespaceURI(int i) {

+        return null;

+    }

+

+    public NamespaceContext getNamespaceContext() {

+        throw new UnsupportedOperationException();

+    }

+

+    public int getEventType() {

+        int returnEvent = START_DOCUMENT;

+        switch(currentState){

+            case START_ELEMENT_STATE:

+                returnEvent =  START_ELEMENT;

+                break;

+            case END_ELEMENT_STATE:

+                returnEvent =  END_ELEMENT;

+                break;

+

+        }

+       return returnEvent;

+    }

+

+    public String getText() {

+        return null;

+    }

+

+    public char[] getTextCharacters() {

+        return new char[0];  //To change body of implemented methods use File | Settings | File Templates.

+    }

+

+    public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {

+        return 0;

+    }

+

+    public int getTextStart() {

+        return 0;

+    }

+

+    public int getTextLength() {

+        return 0;

+    }

+

+    public String getEncoding() {

+        return null;

+    }

+

+    public boolean hasText() {

+        return false;

+    }

+

+    public Location getLocation() {

+        return new Location(){

+            public int getLineNumber() {

+                return 0;

+            }

+

+            public int getColumnNumber() {

+                return 0;

+            }

+

+            public int getCharacterOffset() {

+                return 0;

+            }

+

+            public String getPublicId() {

+                return null;

+            }

+

+            public String getSystemId() {

+                return null;

+            }

+        };

+    }

+

+    public QName getName() {

+        return outerQName;

+    }

+

+    public String getLocalName() {

+        return outerQName.getLocalPart();

+    }

+

+    public boolean hasName() {

+        return true;

+    }

+

+    public String getNamespaceURI() {

+        return outerQName.getNamespaceURI();

+    }

+

+    public String getPrefix() {

+        return outerQName.getPrefix();

+    }

+

+    public String getVersion() {

+        throw new UnsupportedOperationException();

+    }

+

+    public boolean isStandalone() {

+        throw new UnsupportedOperationException();

+    }

+

+    public boolean standaloneSet() {

+        throw new UnsupportedOperationException();

+    }

+

+    public String getCharacterEncodingScheme() {

+        throw new UnsupportedOperationException();

+    }

+

+    public String getPITarget() {

+        throw new UnsupportedOperationException();

+    }

+

+    public String getPIData() {

+        throw new UnsupportedOperationException();

+    }

+

+    public boolean isDone() {

+        return (currentState==END_ELEMENT_STATE);

+    }

+

+    public void addNamespaceContext(NamespaceContext nsContext) {

+        //To change body of implemented methods use File | Settings | File Templates.

+    }

+

+    public void init() {

+        //To change body of implemented methods use File | Settings | File Templates.

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/OMAttribKey.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/OMAttribKey.java
new file mode 100644
index 0000000..2d40b65
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/OMAttribKey.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.databinding.utils.reader;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A dummy object that acts as the key for the OMAttribute in the

+ * attribute array - this will be provided as part of the constants

+ * 

+ */

+public class OMAttribKey {

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/OMElementKey.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/OMElementKey.java
new file mode 100644
index 0000000..4260685
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/OMElementKey.java
@@ -0,0 +1,23 @@
+package org.apache.axis2.databinding.utils.reader;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A dummy class that creates nothing but a key for the

+ * OMElement when it is passed to the ADBPullparser

+ */

+public class OMElementKey {

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/WrappingXMLStreamReader.java b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/WrappingXMLStreamReader.java
new file mode 100644
index 0000000..9bf6667
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/WrappingXMLStreamReader.java
@@ -0,0 +1,227 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.Location;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.namespace.QName;

+import javax.xml.namespace.NamespaceContext;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WrappingXMLStreamReader implements ADBXMLStreamReader{

+

+    private XMLStreamReader reader;

+

+    public WrappingXMLStreamReader(XMLStreamReader reader) {

+        this.reader = reader;

+    }

+

+    public boolean isDone() {

+        try {

+            return !hasNext();

+        } catch (XMLStreamException e) {

+             throw new RuntimeException(e);

+        }

+    }

+

+    public Object getProperty(String string) throws IllegalArgumentException {

+        return reader.getProperty(string);

+    }

+

+    public int next() throws XMLStreamException {

+         return reader.next();

+    }

+

+    public void require(int i, String string, String string1) throws XMLStreamException {

+        //nothing to do

+    }

+

+    public String getElementText() throws XMLStreamException {

+       return reader.getElementText();

+    }

+

+    public int nextTag() throws XMLStreamException {

+        return reader.nextTag();

+    }

+

+    public boolean hasNext() throws XMLStreamException {

+        return reader.hasNext();

+    }

+

+    public void close() throws XMLStreamException {

+         reader.close();

+    }

+

+    public String getNamespaceURI(String string) {

+        return reader.getNamespaceURI(string);

+    }

+

+    public boolean isStartElement() {

+         return reader.isStartElement();

+    }

+

+    public boolean isEndElement() {

+        return reader.isEndElement();

+    }

+

+    public boolean isCharacters() {

+       return reader.isCharacters();

+    }

+

+    public boolean isWhiteSpace() {

+        return reader.isWhiteSpace();

+    }

+

+    public String getAttributeValue(String string, String string1) {

+        return reader.getAttributeValue(string,string1);

+    }

+

+    public int getAttributeCount() {

+        return reader.getAttributeCount();

+    }

+

+    public QName getAttributeName(int i) {

+        return reader.getAttributeName(i);

+    }

+

+    public String getAttributeNamespace(int i) {

+       return reader.getAttributeNamespace(i);

+    }

+

+    public String getAttributeLocalName(int i) {

+        return reader.getAttributeLocalName(i);

+    }

+

+    public String getAttributePrefix(int i) {

+       return reader.getAttributeLocalName(i);

+    }

+

+    public String getAttributeType(int i) {

+        return reader.getAttributeType(i);

+    }

+

+    public String getAttributeValue(int i) {

+        return reader.getAttributeValue(i);

+    }

+

+    public boolean isAttributeSpecified(int i) {

+        return reader.isAttributeSpecified(i);

+    }

+

+    public int getNamespaceCount() {

+        return reader.getNamespaceCount();

+    }

+

+    public String getNamespacePrefix(int i) {

+          return reader.getNamespacePrefix(i);

+    }

+

+    public String getNamespaceURI(int i) {

+          return reader.getNamespaceURI(i);

+    }

+

+    public NamespaceContext getNamespaceContext() {

+        return reader.getNamespaceContext();

+    }

+

+    public int getEventType() {

+       return reader.getEventType();

+    }

+

+    public String getText() {

+        return reader.getText();

+    }

+

+    public char[] getTextCharacters() {

+       return reader.getTextCharacters();

+    }

+

+    public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {

+        return reader.getTextCharacters(i,chars,i1,i2);

+    }

+

+    public int getTextStart() {

+        return reader.getTextStart();

+    }

+

+    public int getTextLength() {

+        return reader.getTextLength();

+    }

+

+    public String getEncoding() {

+        return reader.getEncoding();

+    }

+

+    public boolean hasText() {

+        return reader.hasText();

+    }

+

+    public Location getLocation() {

+        return reader.getLocation();

+    }

+

+    public QName getName() {

+         return reader.getName();

+    }

+

+    public String getLocalName() {

+        return reader.getLocalName();

+    }

+

+    public boolean hasName() {

+         return reader.hasName();

+    }

+

+    public String getNamespaceURI() {

+         return reader.getNamespaceURI();

+    }

+

+    public String getPrefix() {

+         return reader.getPrefix();

+    }

+

+    public String getVersion() {

+        return reader.getVersion();

+    }

+

+    public boolean isStandalone() {

+        return reader.isStandalone();

+    }

+

+    public boolean standaloneSet() {

+       return reader.standaloneSet();

+    }

+

+    public String getCharacterEncodingScheme() {

+        return reader.getCharacterEncodingScheme();

+    }

+

+    public String getPITarget() {

+         return reader.getPITarget();

+    }

+

+    public String getPIData() {

+        return reader.getPIData();

+    }

+

+    public void addNamespaceContext(NamespaceContext nsContext) {

+        //nothing to do here

+    }

+

+    public void init() {

+        //Nothing to do here

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java
new file mode 100644
index 0000000..0607cad
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java
@@ -0,0 +1,134 @@
+package org.apache.axis2.rpc.client;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.client.async.Callback;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.databinding.utils.BeanUtil;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.DefaultObjectSupplier;

+

+import javax.xml.namespace.QName;

+import java.net.URL;

+

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class RPCServiceClient extends ServiceClient {

+

+    private boolean notNullService;

+

+    public RPCServiceClient(ConfigurationContext configContext, AxisService service) throws AxisFault {

+        super(configContext, service);

+        if (service != null) {

+            notNullService = true;

+        }

+    }

+

+    public RPCServiceClient() throws AxisFault {

+        super();

+    }

+

+    public RPCServiceClient(ConfigurationContext configContext,

+                            URL wsdlURL, QName wsdlServiceName,

+                            String portName) throws AxisFault {

+        super(configContext, wsdlURL, wsdlServiceName, portName);

+        notNullService = true;

+    }

+

+    /**

+     * Return value can be a single a object or an object array (itself an object) , but it is

+     * difficulty to figure the return object correctly unless we have TyepMapping in the client

+     * side too. Until it is finalized lets return OMElement as return value. And the retuen

+     * value will be the body first element user has to deal with that and create

+     * his own object out of that.

+     *

+     * @param opName Operation QName (to get the body wrapper element)

+     * @param args   Arraylist of objects

+     * @return Response OMElement

+     */

+    public OMElement invokeBlocking(QName opName, Object [] args) throws AxisFault {

+        OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);

+        if (notNullService) {

+            return super.sendReceive(opName, omElement);

+        }

+        return super.sendReceive(omElement);

+    }

+

+    /**

+     * @param opName      Operation QName (to get the body wrapper element)

+     * @param args        Arraylist of objects

+     * @param returnTypes , this array contains the JavaTypes for the return object , it could be one

+     *                    or more depending on the return type , most of the type array will contain just one element

+     *                    It should be noted that the array should only contains JavaTypes NOT real object , what this

+     *                    methods does is , get the body first element , and if it contains more than one childern take

+     *                    ith element and convert that to ith javatype and fill the return arrya

+     *                    the array will look like as follows

+     *                    [Integer, String, MyBean , etc]

+     * @return Object array , whic will contains real object , but the object can either be simple type

+     *         object or the JavaBeans, thats what this method can handle right now

+     *         the return array will contains [10, "Axis2Echo", {"foo","baa","11"}]

+     * @throws AxisFault

+     */

+

+    public Object[]  invokeBlocking(QName opName, Object [] args, Class [] returnTypes) throws AxisFault {

+        OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);

+        OMElement response;

+        if (notNullService) {

+            response = super.sendReceive(opName, omElement);

+        } else {

+            response = super.sendReceive(omElement);

+        }

+        return BeanUtil.deserialize(response, returnTypes,

+                new DefaultObjectSupplier());

+    }

+

+    /**

+     * Invoke the nonblocking/Asynchronous call

+     *

+     * @param opName

+     * @param args     -  This should be OM Element (payload)

+     *                 invocation behaves accordingly

+     * @param callback

+     * @throws org.apache.axis2.AxisFault

+     */

+

+    public void invokeNonBlocking(QName opName,

+                                  Object [] args,

+                                  Callback callback)

+            throws AxisFault {

+        OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);

+        //call the underline implementation

+        if (notNullService) {

+            super.sendReceiveNonBlocking(opName, omElement, callback);

+        } else {

+            super.sendReceiveNonBlocking(omElement, callback);

+        }

+    }

+

+    public void invokeRobust(QName opName,

+                             Object [] args) throws AxisFault {

+        OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);

+        //call the underline implementation

+        if (notNullService) {

+            super.sendRobust(opName, omElement);

+        } else {

+            super.sendRobust(omElement);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOnlyMessageReceiver.java b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOnlyMessageReceiver.java
new file mode 100644
index 0000000..27be9dd
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOnlyMessageReceiver.java
@@ -0,0 +1,113 @@
+/*

+* Copyright 2004,2005 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.axis2.rpc.receivers;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.AxisMessage;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.engine.DependencyManager;

+import org.apache.axis2.receivers.AbstractInMessageReceiver;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+

+public class RPCInOnlyMessageReceiver extends AbstractInMessageReceiver {

+

+    private Method method;

+    private static Log log = LogFactory.getLog(RPCInOnlyMessageReceiver.class);

+

+    public void invokeBusinessLogic(MessageContext inMessage) throws AxisFault {

+        try {

+            // get the implementation class for the Web Service

+            Object obj = getTheImplementationObject(inMessage);

+

+            Class ImplClass = obj.getClass();

+

+            AxisOperation op = inMessage.getOperationContext().getAxisOperation();

+

+            OMElement methodElement = inMessage.getEnvelope().getBody()

+                    .getFirstElement();

+

+            AxisMessage inAxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+            String messageNameSpace;

+            QName elementQName;

+            String methodName = op.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;

+                }

+            }

+            if (inAxisMessage != null) {

+                if (inAxisMessage.getElementQName() == null) {

+                    // method accept empty SOAPbody

+                    method.invoke(obj, new Object[0]);

+                } else {

+                    elementQName = inAxisMessage.getElementQName();

+                    messageNameSpace = elementQName.getNamespaceURI();

+                    OMNamespace namespace = methodElement.getNamespace();

+                    if (messageNameSpace != null) {

+                        if (namespace == null ||

+                                !messageNameSpace.equals(namespace.getNamespaceURI())) {

+                            throw new AxisFault("namespace mismatch require " +

+                                    messageNameSpace +

+                                    " found " +

+                                    methodElement.getNamespace().getNamespaceURI());

+                        }

+                    } else if (namespace != null) {

+                        throw new AxisFault("namespace mismatch. Axis Oepration expects non-namespace " +

+                                "qualified element. But received a namespace qualified element");

+                    }

+

+                    Object[] objectArray = RPCUtil.processRequest(methodElement, method,

+                            inMessage.getAxisService().getObjectSupplier());

+                    method.invoke(obj, objectArray);

+                }

+

+            }

+        } catch (InvocationTargetException e) {

+            String msg = null;

+

+            Throwable cause = e.getCause();

+

+            if (cause != null) {

+                msg = cause.getMessage();

+                if (msg == null) {

+                    msg = "Exception occurred while trying to invoke service method " +

+                          method.getName();

+                }

+                log.error(msg, e);

+                if (cause instanceof AxisFault) {

+                    throw (AxisFault) cause;

+                }

+            }

+            throw new AxisFault(msg);

+        } catch (Exception e) {

+            String msg = "Exception occurred while trying to invoke service method " +

+                    method.getName();

+            log.error(msg, e);

+            throw new AxisFault(msg, e);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java
new file mode 100644
index 0000000..59e9824
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java
@@ -0,0 +1,145 @@
+/*

+* Copyright 2004,2005 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.axis2.rpc.receivers;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.AxisMessage;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.receivers.AbstractInOutAsyncMessageReceiver;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+

+public class RPCInOutAsyncMessageReceiver extends AbstractInOutAsyncMessageReceiver {

+

+    private Method method;

+    private static Log log = LogFactory.getLog(RPCInOnlyMessageReceiver.class);

+

+    /**

+     * reflect and get the Java method

+     * - for each i'th param in the java method

+     * - get the first child's i'th child

+     * -if the elem has an xsi:type attr then find the deserializer for it

+     * - if not found,

+     * lookup deser for th i'th param (java type)

+     * - error if not found

+     * - deserialize & save in an object array

+     * - end for

+     * <p/>

+     * - invoke method and get the return value

+     * <p/>

+     * - look up serializer for return value based on the value and type

+     * <p/>

+     * - create response msg and add return value as grand child of <soap:body>

+     *

+     * @param inMessage

+     * @param outMessage

+     * @throws AxisFault

+     */

+

+    public void invokeBusinessLogic(MessageContext inMessage, MessageContext outMessage) throws AxisFault {

+        try {

+            // get the implementation class for the Web Service

+            Object obj = getTheImplementationObject(inMessage);

+

+            Class ImplClass = obj.getClass();

+

+            AxisOperation op = inMessage.getOperationContext().getAxisOperation();

+            AxisService service = inMessage.getAxisService();

+            OMElement methodElement = inMessage.getEnvelope().getBody()

+                    .getFirstElement();

+

+            AxisMessage inaxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+            String messageNameSpace;

+            QName elementQName;

+            String methodName = op.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 resObject = null;

+            if (inaxisMessage != null) {

+                if (inaxisMessage.getElementQName() == null) {

+                    // method accept empty SOAPbody

+                    resObject = method.invoke(obj, new Object[0]);

+                } else {

+                    elementQName = inaxisMessage.getElementQName();

+                    messageNameSpace = elementQName.getNamespaceURI();

+                    OMNamespace namespace = methodElement.getNamespace();

+                    if (messageNameSpace != null) {

+                        if (namespace == null || !messageNameSpace.equals(namespace.getNamespaceURI())) {

+                            throw new AxisFault("namespace mismatch require " +

+                                    messageNameSpace +

+                                    " found " + methodElement.getNamespace().getNamespaceURI());

+                        }

+                    } else if (namespace != null) {

+                        throw new AxisFault("namespace mismatch. Axis Oepration expects non-namespace " +

+                                "qualified element. But received a namespace qualified element");

+                    }

+

+                    Object[] objectArray = RPCUtil.processRequest(methodElement,

+                            method, inMessage.getAxisService().getObjectSupplier());

+                    resObject = method.invoke(obj, objectArray);

+                }

+

+            }

+

+

+            SOAPFactory fac = getSOAPFactory(inMessage);

+

+            // Handling the response

+            OMNamespace ns = fac.createOMNamespace(service.getSchematargetNamespace(),

+                    service.getSchematargetNamespacePrefix());

+            SOAPEnvelope envelope = fac.getDefaultEnvelope();

+            OMElement bodyContent = null;

+            RPCUtil.processResponse(resObject, service,

+                    method, envelope, fac, ns, bodyContent, outMessage);

+        } catch (InvocationTargetException e) {

+            String msg = null;

+            Throwable cause = e.getCause();

+            if (cause != null) {

+                msg = cause.getMessage();

+            }

+            if (msg == null) {

+                msg = "Exception occurred while trying to invoke service method " +

+                      method.getName();

+            }

+            log.error(msg, e);

+            if (cause instanceof AxisFault) {

+                throw (AxisFault) cause;

+            }

+            throw new AxisFault(msg);

+        } catch (Exception e) {

+            String msg = "Exception occurred while trying to invoke service method " +

+                    method.getName();

+            log.error(msg, e);

+            throw new AxisFault(msg, e);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
new file mode 100644
index 0000000..c880b79
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
@@ -0,0 +1,162 @@
+/*

+* Copyright 2004,2005 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.

+*/

+

+/*

+* Reflection based RPCMessageReceiver , request will be processed by looking at the method signature

+* of the invocation method

+*/

+package org.apache.axis2.rpc.receivers;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.AxisMessage;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+

+public class RPCMessageReceiver extends AbstractInOutSyncMessageReceiver {

+

+

+    private Method method;

+    private static Log log = LogFactory.getLog(RPCInOnlyMessageReceiver.class);

+

+    /**

+     * reflect and get the Java method

+     * - for each i'th param in the java method

+     * - get the first child's i'th child

+     * -if the elem has an xsi:type attr then find the deserializer for it

+     * - if not found,

+     * lookup deser for th i'th param (java type)

+     * - error if not found

+     * - deserialize & save in an object array

+     * - end for

+     * <p/>

+     * - invoke method and get the return value

+     * <p/>

+     * - look up serializer for return value based on the value and type

+     * <p/>

+     * - create response msg and add return value as grand child of <soap:body>

+     *

+     * @param inMessage

+     * @param outMessage

+     * @throws AxisFault

+     */

+

+    public void invokeBusinessLogic(MessageContext inMessage, MessageContext outMessage) throws AxisFault {

+        try {

+            // get the implementation class for the Web Service

+            Object obj = getTheImplementationObject(inMessage);

+

+            Class ImplClass = obj.getClass();

+

+            AxisOperation op = inMessage.getOperationContext().getAxisOperation();

+            AxisService service = inMessage.getAxisService();

+            OMElement methodElement = inMessage.getEnvelope().getBody()

+                    .getFirstElement();

+            AxisMessage inAxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+            String messageNameSpace = null;

+            QName elementQName;

+            String methodName = op.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 resObject = null;

+            if (inAxisMessage != null) {

+                if (inAxisMessage.getElementQName() == null) {

+                    // method accept empty SOAPbody

+                    resObject = method.invoke(obj, new Object[0]);

+                } else {

+                    elementQName = inAxisMessage.getElementQName();

+                    messageNameSpace = elementQName.getNamespaceURI();

+                    OMNamespace namespace = methodElement.getNamespace();

+                    if (messageNameSpace != null) {

+                        if (namespace == null) {

+                            throw new AxisFault("namespace mismatch require " +

+                                    messageNameSpace +

+                                    " found none");

+                        }

+                        if (!messageNameSpace.equals(namespace.getNamespaceURI())) {

+                            throw new AxisFault("namespace mismatch require " +

+                                    messageNameSpace +

+                                    " found " + methodElement.getNamespace().getNamespaceURI());

+                        }

+                    } else if (namespace != null) {

+                        throw new AxisFault("namespace mismatch. Axis Oepration expects non-namespace " +

+                                "qualified element. But received a namespace qualified element");

+                    }

+

+                    Object[] objectArray = RPCUtil.processRequest(methodElement, method,

+                            inMessage.getAxisService().getObjectSupplier());

+                    resObject = method.invoke(obj, objectArray);

+                }

+

+            }

+

+

+            SOAPFactory fac = getSOAPFactory(inMessage);

+

+            // Handling the response

+            AxisMessage outaxisMessage = op.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+            if (inAxisMessage != null) {

+                messageNameSpace = outaxisMessage.getElementQName().getNamespaceURI();

+            }

+

+            OMNamespace ns = fac.createOMNamespace(messageNameSpace,

+                    service.getSchematargetNamespacePrefix());

+            SOAPEnvelope envelope = fac.getDefaultEnvelope();

+            OMElement bodyContent = null;

+            RPCUtil.processResponse(resObject, service,

+                    method, envelope, fac, ns,

+                    bodyContent, outMessage);

+            outMessage.setEnvelope(envelope);

+        } catch (InvocationTargetException e) {

+            String msg = null;

+            Throwable cause = e.getCause();

+            if (cause != null) {

+                msg = cause.getMessage();

+            }

+            if (msg == null) {

+                msg = "Exception occurred while trying to invoke service method " +

+                        method.getName();

+            }

+            log.error(msg, e);

+            if(cause instanceof AxisFault) {

+                throw (AxisFault)cause;

+            }

+            throw new AxisFault(msg);

+        } catch (Exception e) {

+            String msg = "Exception occurred while trying to invoke service method " +

+                    method.getName();

+            log.error(msg, e);

+            throw new AxisFault(msg, e);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
new file mode 100644
index 0000000..c132efb
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
@@ -0,0 +1,206 @@
+package org.apache.axis2.rpc.receivers;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;

+import org.apache.axiom.om.util.Base64;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.databinding.typemapping.SimpleTypeMapper;

+import org.apache.axis2.databinding.utils.BeanUtil;

+import org.apache.axis2.databinding.utils.reader.NullXMLStreamReader;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.ObjectSupplier;

+import org.apache.axis2.util.StreamWrapper;

+import org.apache.ws.java2wsdl.utils.TypeTable;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamReader;

+import java.lang.reflect.Array;

+import java.lang.reflect.Method;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class RPCUtil {

+

+    private static String RETURN_WRAPPER = "return";

+

+    public static void processResponse(SOAPFactory fac, Object resObject,

+                                       OMElement bodyContent,

+                                       OMNamespace ns,

+                                       SOAPEnvelope envelope,

+                                       Method method,

+                                       boolean qualified,

+                                       TypeTable typeTable) {

+        if (resObject != null) {

+            //simple type

+            if (resObject instanceof OMElement) {

+                OMElement result = (OMElement) resObject;

+                bodyContent = fac.createOMElement(

+                        method.getName() + "Response", ns);

+                OMElement resWrapper;

+                if (qualified) {

+                    resWrapper = fac.createOMElement(RETURN_WRAPPER, ns.getNamespaceURI(),

+                            ns.getPrefix());

+                } else {

+                    resWrapper = fac.createOMElement(RETURN_WRAPPER, null);

+                }

+                resWrapper.addChild(result);

+                bodyContent.addChild(resWrapper);

+            } else if (SimpleTypeMapper.isSimpleType(resObject)) {

+                bodyContent = fac.createOMElement(

+                        method.getName() + "Response", ns);

+                OMElement child;

+                if (qualified) {

+                    child = fac.createOMElement(RETURN_WRAPPER, ns);

+                } else {

+                    child = fac.createOMElement(RETURN_WRAPPER, null);

+                }

+                child.addChild(fac.createOMText(child, SimpleTypeMapper.getStringValue(resObject)));

+                bodyContent.addChild(child);

+            } else {

+                bodyContent = fac.createOMElement(

+                        method.getName() + "Response", ns);

+                // Java Beans

+                QName returnWrapper;

+                if (qualified) {

+                    returnWrapper = new QName(ns.getNamespaceURI(), RETURN_WRAPPER, ns.getPrefix());

+                } else {

+                    returnWrapper = new QName(RETURN_WRAPPER);

+                }

+                XMLStreamReader xr = BeanUtil.getPullParser(resObject,

+                        returnWrapper, typeTable, qualified);

+                StAXOMBuilder stAXOMBuilder =

+                        OMXMLBuilderFactory.createStAXOMBuilder(

+                                OMAbstractFactory.getOMFactory(), new StreamWrapper(xr));

+                OMElement documentElement = stAXOMBuilder.getDocumentElement();

+                if (documentElement != null) {

+                    bodyContent.addChild(documentElement);

+                }

+            }

+        }

+        if (bodyContent != null) {

+            envelope.getBody().addChild(bodyContent);

+        }

+    }

+

+    public static Object[] processRequest(OMElement methodElement,

+                                          Method method, ObjectSupplier objectSupplier) throws AxisFault {

+        Class[] parameters = method.getParameterTypes();

+        return BeanUtil.deserialize(methodElement, parameters, objectSupplier);

+    }

+

+    public static OMElement getResponseElement(QName resname, Object [] objs,

+                                               boolean qualified, TypeTable typeTable) {

+        if (qualified) {

+            return BeanUtil.getOMElement(resname, objs,

+                    new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()), qualified, typeTable);

+        } else {

+            return BeanUtil.getOMElement(resname, objs,

+                    new QName(RETURN_WRAPPER), qualified, typeTable);

+        }

+    }

+

+    public static OMElement getResponseElementForArray(QName resname, Object [] objs,

+                                                       boolean qualified, TypeTable typeTable) {

+        if (qualified) {

+            return BeanUtil.getOMElement(resname, objs,

+                    new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()), qualified, typeTable);

+        } else {

+            return BeanUtil.getOMElement(resname, objs,

+                    new QName(RETURN_WRAPPER), qualified, typeTable);

+        }

+    }

+

+    public static void processResponse(Object resObject,

+                                       AxisService service,

+                                       Method method,

+                                       SOAPEnvelope envelope,

+                                       SOAPFactory fac,

+                                       OMNamespace ns,

+                                       OMElement bodyContent,

+                                       MessageContext outMessage

+    ) throws Exception {

+        if (resObject == null) {

+            QName resName;

+            if (service.isElementFormDefault()) {

+                resName = new QName(service.getSchematargetNamespace(),

+                        RETURN_WRAPPER,

+                        service.getSchematargetNamespacePrefix());

+            } else {

+                resName = new QName(RETURN_WRAPPER);

+            }

+            XMLStreamReader xr = new NullXMLStreamReader(resName);

+            StreamWrapper parser = new StreamWrapper(xr);

+            StAXOMBuilder stAXOMBuilder =

+                    OMXMLBuilderFactory.createStAXOMBuilder(

+                            OMAbstractFactory.getSOAP11Factory(), parser);

+            ns = fac.createOMNamespace(service.getSchematargetNamespace(),

+                    service.getSchematargetNamespacePrefix());

+            OMElement bodyChild = fac.createOMElement(method.getName() + "Response", ns);

+            bodyChild.addChild(stAXOMBuilder.getDocumentElement());

+            envelope.getBody().addChild(bodyChild);

+        } else {

+            if (resObject instanceof Object[]) {

+                QName resName = new QName(service.getSchematargetNamespace(),

+                        method.getName() + "Response",

+                        service.getSchematargetNamespacePrefix());

+                OMElement bodyChild = RPCUtil.getResponseElement(resName,

+                        (Object[]) resObject, service.isElementFormDefault(), service.getTypeTable());

+                envelope.getBody().addChild(bodyChild);

+            } else {

+                if (resObject.getClass().isArray()) {

+                    int length = Array.getLength(resObject);

+                    Object objArray [];

+                    if (resObject instanceof byte[]) {

+                        objArray = new Object[1];

+                        objArray[0] = Base64.encode((byte[]) resObject);

+                    } else {

+                        objArray = new Object[length];

+                        for (int i = 0; i < length; i++) {

+                            objArray[i] = Array.get(resObject, i);

+                        }

+                    }

+

+                    QName resName = new QName(service.getSchematargetNamespace(),

+                            method.getName() + "Response",

+                            service.getSchematargetNamespacePrefix());

+                    OMElement bodyChild = RPCUtil.getResponseElementForArray(resName,

+                            objArray, service.isElementFormDefault(), service.getTypeTable());

+                    envelope.getBody().addChild(bodyChild);

+                } else {

+                    if (service.isElementFormDefault()) {

+                        RPCUtil.processResponse(fac, resObject, bodyContent, ns,

+                                envelope, method, service.isElementFormDefault(),

+                                service.getTypeTable());

+                    } else {

+                        RPCUtil.processResponse(fac, resObject, bodyContent, ns,

+                                envelope, method, service.isElementFormDefault(),

+                                null);

+                    }

+                }

+            }

+        }

+        outMessage.setEnvelope(envelope);

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/src/org/apache/axis2/util/ArrayStack.java b/rampart_1_1/modules/adb/src/org/apache/axis2/util/ArrayStack.java
new file mode 100644
index 0000000..e29207b
--- /dev/null
+++ b/rampart_1_1/modules/adb/src/org/apache/axis2/util/ArrayStack.java
@@ -0,0 +1,186 @@
+/*

+ *  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.axis2.util;

+

+import java.util.ArrayList;

+import java.util.EmptyStackException;

+

+/**

+ * An implementation of the {@link java.util.Stack} API that is based on an

+ * <code>ArrayList</code> instead of a <code>Vector</code>, so it is not

+ * synchronized to protect against multi-threaded access.  The implementation

+ * is therefore operates faster in environments where you do not need to

+ * worry about multiple thread contention.

+ * <p>

+ * The removal order of an <code>ArrayStack</code> is based on insertion

+ * order: The most recently added element is removed first.  The iteration

+ * order is <i>not</i> the same as the removal order.  The iterator returns

+ * elements from the bottom up, whereas the {@link #remove()} method removes

+ * them from the top down.

+ * <p>

+ * Unlike <code>Stack</code>, <code>ArrayStack</code> accepts null entries.

+ */

+public class ArrayStack extends ArrayList {

+

+    /** Ensure serialization compatibility */

+    private static final long serialVersionUID = 2130079159931574599L;

+

+    /**

+     * Constructs a new empty <code>ArrayStack</code>. The initial size

+     * is controlled by <code>ArrayList</code> and is currently 10.

+     */

+    public ArrayStack() {

+        super();

+    }

+

+    /**

+     * Constructs a new empty <code>ArrayStack</code> with an initial size.

+     *

+     * @param initialSize  the initial size to use

+     * @throws IllegalArgumentException  if the specified initial size

+     *  is negative

+     */

+    public ArrayStack(int initialSize) {

+        super(initialSize);

+    }

+

+    /**

+     * Return <code>true</code> if this stack is currently empty.

+     * <p>

+     * This method exists for compatibility with <code>java.util.Stack</code>.

+     * New users of this class should use <code>isEmpty</code> instead.

+     *

+     * @return true if the stack is currently empty

+     */

+    public boolean empty() {

+        return isEmpty();

+    }

+

+    /**

+     * Returns the top item off of this stack without removing it.

+     *

+     * @return the top item on the stack

+     * @throws EmptyStackException  if the stack is empty

+     */

+    public Object peek() throws EmptyStackException {

+        int n = size();

+        if (n <= 0) {

+            throw new EmptyStackException();

+        } else {

+            return get(n - 1);

+        }

+    }

+

+    /**

+     * Returns the n'th item down (zero-relative) from the top of this

+     * stack without removing it.

+     *

+     * @param n  the number of items down to go

+     * @return the n'th item on the stack, zero relative

+     * @throws EmptyStackException  if there are not enough items on the

+     *  stack to satisfy this request

+     */

+    public Object peek(int n) throws EmptyStackException {

+        int m = (size() - n) - 1;

+        if (m < 0) {

+            throw new EmptyStackException();

+        } else {

+            return get(m);

+        }

+    }

+

+    /**

+     * Pops the top item off of this stack and return it.

+     *

+     * @return the top item on the stack

+     * @throws EmptyStackException  if the stack is empty

+     */

+    public Object pop() throws EmptyStackException {

+        int n = size();

+        if (n <= 0) {

+            throw new EmptyStackException();

+        } else {

+            return remove(n - 1);

+        }

+    }

+

+    /**

+     * Pushes a new item onto the top of this stack. The pushed item is also

+     * returned. This is equivalent to calling <code>add</code>.

+     *

+     * @param item  the item to be added

+     * @return the item just pushed

+     */

+    public Object push(Object item) {

+        add(item);

+        return item;

+    }

+

+    /**

+     * Returns the one-based position of the distance from the top that the

+     * specified object exists on this stack, where the top-most element is

+     * considered to be at distance <code>1</code>.  If the object is not

+     * present on the stack, return <code>-1</code> instead.  The

+     * <code>equals()</code> method is used to compare to the items

+     * in this stack.

+     *

+     * @param object  the object to be searched for

+     * @return the 1-based depth into the stack of the object, or -1 if not found

+     */

+    public int search(Object object) {

+        int i = size() - 1;        // Current index

+        int n = 1;                 // Current distance

+        while (i >= 0) {

+            Object current = get(i);

+            if ((object == null && current == null) ||

+                (object != null && object.equals(current))) {

+                return n;

+            }

+            i--;

+            n++;

+        }

+        return -1;

+    }

+

+    /**

+     * Returns the element on the top of the stack.

+     *

+     * @return the element on the top of the stack

+     * @throws EmptyStackException  if the stack is empty

+     */

+    public Object get() {

+        int size = size();

+        if (size == 0) {

+            throw new EmptyStackException();

+        }

+        return get(size - 1);

+    }

+

+    /**

+     * Removes the element on the top of the stack.

+     *

+     * @return the removed element

+     * @throws EmptyStackException  if the stack is empty

+     */

+    public Object remove() {

+        int size = size();

+        if (size == 0) {

+            throw new EmptyStackException();

+        }

+        return remove(size - 1);

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/test-resources/xmls/array1.xml b/rampart_1_1/modules/adb/test-resources/xmls/array1.xml
new file mode 100644
index 0000000..6be0047
--- /dev/null
+++ b/rampart_1_1/modules/adb/test-resources/xmls/array1.xml
@@ -0,0 +1,5 @@
+<wrapper>
+    <item>one</item>
+    <item>two</item>
+    <item>three</item>
+</wrapper>
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/ADBSOAPModelBuilderTest.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/ADBSOAPModelBuilderTest.java
new file mode 100644
index 0000000..287ebd3
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/ADBSOAPModelBuilderTest.java
@@ -0,0 +1,194 @@
+/*

+ * Copyright 2004,2005 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.axis2.databinding;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axiom.soap.SOAP11Constants;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.databinding.utils.PrintEvents;

+import org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl;

+import org.custommonkey.xmlunit.XMLTestCase;

+import org.w3c.dom.Document;

+import org.xml.sax.SAXException;

+

+import javax.xml.namespace.QName;

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.parsers.ParserConfigurationException;

+import javax.xml.stream.XMLStreamReader;

+import java.io.ByteArrayInputStream;

+import java.io.IOException;

+import java.io.StringReader;

+import java.io.StringWriter;

+import java.util.ArrayList;

+

+public class ADBSOAPModelBuilderTest extends XMLTestCase {

+    public void testSimpleArrayList() throws Exception {

+        String expectedXML = "<?xml version='1.0' encoding='utf-8'?>" +

+                "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +

+                "<soapenv:Header />" +

+                "<soapenv:Body>" +

+                "<Person xmlns=\"\">" +

+                "<Name xmlns=\"\">FooOne</Name>" +

+                "<DependentOne xmlns=\"\"><Name xmlns=\"\">FooTwo</Name>" +

+                "<Age xmlns=\"\">25</Age>" +

+                "<Sex xmlns=\"\">Male</Sex></DependentOne>" +

+                "<DependentTwo xmlns=\"\">" +

+                "<Name xmlns=\"\">FooTwo</Name>" +

+                "<Age xmlns=\"\">25</Age>" +

+                "<Sex xmlns=\"\">Male</Sex></DependentTwo>" +

+                "<Organization xmlns=\"\">Apache</Organization>" +

+                "</Person></soapenv:Body></soapenv:Envelope>";

+        ArrayList propertyList = new ArrayList();

+        propertyList.add("Name");

+        propertyList.add("FooOne");

+        propertyList.add(new QName("DependentOne"));

+        propertyList.add(new DummyADBBean());

+        propertyList.add(new QName("DependentTwo"));

+        propertyList.add(new DummyADBBean());

+        propertyList.add("Organization");

+        propertyList.add("Apache");

+        QName projectQName = new QName("Person");

+

+        XMLStreamReader pullParser =new ADBXMLStreamReaderImpl(projectQName, propertyList.toArray(), null);

+        ADBSOAPModelBuilder builder = new ADBSOAPModelBuilder(

+                pullParser, OMAbstractFactory.getSOAP11Factory());

+

+        OMElement root = builder.getDocumentElement();

+        assertTrue("Root element can not be null", root != null);

+        Document expectedDOM = newDocument(expectedXML);

+        Document actualDom = newDocument(root.toString());

+        assertXMLEqual(actualDom, expectedDOM);

+    }

+

+    public void testPrintEvents() throws Exception {

+        XMLStreamReader r = getTestEnvelope().getXMLStreamReader();

+        PrintEvents.print(r);

+    }

+

+    public void testPrintEvents2() throws Exception {

+        //TODO: FIXME. Check the output difference between this method and the testPrintEvents method

+        XMLStreamReader r = getTestEnvelope().getXMLStreamReaderWithoutCaching();

+        PrintEvents.print(r);

+    }

+

+    public void testConvertToDOOM() throws Exception {

+        String xml = "<?xml version='1.0' encoding='utf-8'?>" +

+                "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +

+                "<soapenv:Header /><soapenv:Body><ns1:createAccountRequest xmlns:ns1=\"http://www.wso2.com/types\">" +

+                "<clientinfo xmlns=\"http://www.wso2.com/types\"><name>bob</name><ssn>123456789</ssn></clientinfo>" +

+                "<password xmlns=\"\">passwd</password></ns1:createAccountRequest></soapenv:Body></soapenv:Envelope>";

+

+        StAXSOAPModelBuilder builder2 = new StAXSOAPModelBuilder(

+                getTestEnvelope().getXMLStreamReader(),

+                DOOMAbstractFactory.getSOAP11Factory(),

+                SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);

+

+        SOAPEnvelope envelope = builder2.getSOAPEnvelope();

+        envelope.build();

+

+        StringWriter writer = new StringWriter();

+        envelope.serialize(writer);

+        writer.flush();

+

+        String s2 = writer.toString();

+

+        assertXMLEqual(s2,xml);

+    }

+

+    private SOAPEnvelope getTestEnvelope() {

+        CreateAccountRequest request = new CreateAccountRequest();

+        ClientInfo clientInfo = new ClientInfo();

+        clientInfo.setName("bob");

+        clientInfo.setSsn("123456789");

+        request.setClientInfo(clientInfo);

+        request.setPassword("passwd");

+

+        ADBSOAPModelBuilder builder = new ADBSOAPModelBuilder(request

+                .getPullParser(CreateAccountRequest.MY_QNAME),

+                OMAbstractFactory.getSOAP11Factory());

+

+        return builder.getEnvelope();

+    }

+

+    public void testConvertToDOOM2() throws Exception {

+        String xml = "<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body><ns1:createAccountRequest xmlns:ns1=\"http://www.wso2.com/types\"><ns1:clientinfo><name xmlns=\"\">bob</name><ssn xmlns=\"\">123456789</ssn></ns1:clientinfo><password xmlns=\"\">passwd</password></ns1:createAccountRequest></soapenv:Body></soapenv:Envelope>";

+

+        CreateAccountRequest request = new CreateAccountRequest();

+        ClientInfo clientInfo = new ClientInfo();

+        clientInfo.setName("bob");

+        clientInfo.setSsn("123456789");

+        request.setClientInfo(clientInfo);

+        request.setPassword("passwd");

+

+        ADBSOAPModelBuilder builder = new ADBSOAPModelBuilder(request

+                .getPullParser(CreateAccountRequest.MY_QNAME),

+                OMAbstractFactory.getSOAP11Factory());

+

+        SOAPEnvelope env = builder.getEnvelope();

+

+        StAXSOAPModelBuilder builder2 = new StAXSOAPModelBuilder(getTestEnvelope().getXMLStreamReaderWithoutCaching(), DOOMAbstractFactory.getSOAP11Factory(), SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);

+        SOAPEnvelope envelope = builder2.getSOAPEnvelope();

+        envelope.build();

+

+        StringWriter writer = new StringWriter();

+        envelope.serialize(writer);

+        writer.flush();

+

+        XMLStreamReader r = StAXUtils.createXMLStreamReader(new StringReader(writer.toString()));

+        PrintEvents.print(r);

+

+        //TODO: FIXME. Simpler test in testPrintEvents2

+        //assertXMLEqual(writer.toString(),xml);

+    }

+

+    public class DummyADBBean implements ADBBean {

+        ArrayList propertyList = new ArrayList();

+

+        public DummyADBBean() {

+            propertyList.add("Name");

+            propertyList.add("FooTwo");

+            propertyList.add("Age");

+            propertyList.add("25");

+            propertyList.add("Sex");

+            propertyList.add("Male");

+        }

+

+        public DummyADBBean addAnotherBean() {

+            propertyList.add(new QName("Depemdent"));

+            DummyADBBean dummyBean = new DummyADBBean();

+            propertyList.add(dummyBean);

+            return dummyBean;

+        }

+

+        public XMLStreamReader getPullParser(QName adbBeanQName) {

+            return new ADBXMLStreamReaderImpl(adbBeanQName, propertyList.toArray(), null);

+        }

+    }

+

+    public Document newDocument(String xml)

+            throws ParserConfigurationException, SAXException, IOException {

+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

+        dbf.setNamespaceAware(true);

+        DocumentBuilder db = dbf.newDocumentBuilder();

+        return db.parse(new ByteArrayInputStream(xml.getBytes()));

+    }

+}

diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/ClientInfo.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/ClientInfo.java
new file mode 100644
index 0000000..6d3f3c5
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/ClientInfo.java
@@ -0,0 +1,192 @@
+/*

+* Copyright 2004,2005 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.

+*/

+

+/**

+ * ClientInfo.java

+ *

+ * This file was auto-generated from WSDL

+ * by the Apache Axis2 version: #axisVersion# #today#

+ */

+

+package org.apache.axis2.databinding;

+

+/**

+ * ClientInfo bean class

+ */

+

+public class ClientInfo

+        implements org.apache.axis2.databinding.ADBBean {

+    /* This type was generated from the piece of schema that had

+    name = ClientInfo

+    Namespace URI = http://www.wso2.com/types

+    Namespace Prefix = ns1

+    */

+

+    public ClientInfo(String localName, String localSsn) {

+        this.localName = localName;

+        this.localSsn = localSsn;

+    }

+

+    public ClientInfo() {

+    }

+

+    /**

+     * field for Name

+     */

+    protected java.lang.String localName;

+

+

+    /**

+     * Auto generated getter method

+     *

+     * @return java.lang.String

+     */

+    public java.lang.String getName() {

+        return localName;

+    }

+

+    /**

+     * Auto generated setter method

+     *

+     * @param param Name

+     */

+    public void setName(java.lang.String param) {

+

+

+        this.localName = param;

+    }

+

+

+    /**

+     * field for Ssn

+     */

+    protected java.lang.String localSsn;

+

+

+    /**

+     * Auto generated getter method

+     *

+     * @return java.lang.String

+     */

+    public java.lang.String getSsn() {

+        return localSsn;

+    }

+

+    /**

+     * Auto generated setter method

+     *

+     * @param param Ssn

+     */

+    public void setSsn(java.lang.String param) {

+

+

+        this.localSsn = param;

+    }

+

+

+    /**

+     * databinding method to get an XML representation of this object

+     */

+    public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName) {

+

+

+        java.util.ArrayList elementList = new java.util.ArrayList();

+        java.util.ArrayList attribList = new java.util.ArrayList();

+

+

+        elementList.add(new javax.xml.namespace.QName("http://www.wso2.com/types",

+                "name"));

+        elementList.add(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localName));

+

+        elementList.add(new javax.xml.namespace.QName("http://www.wso2.com/types",

+                "ssn"));

+        elementList.add(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localSsn));

+

+

+        return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl

+                (qName, elementList.toArray(), attribList.toArray());

+

+

+    }

+

+    /**

+     * Factory class that keeps the parse method

+     */

+    public static class Factory {

+        /**

+         * static method to create the object

+         */

+        public static ClientInfo parse(javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception {

+            ClientInfo object = new ClientInfo();

+            try {

+                int event = reader.getEventType();

+                int count = 0;

+                int argumentCount = 2;

+                boolean done = false;

+                //event better be a START_ELEMENT. if not we should go up to the start element here

+                while (!reader.isStartElement()) {

+                    event = reader.next();

+                }

+

+

+                while (!done) {

+                    if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) {

+

+

+                        if ("name".equals(reader.getLocalName())) {

+

+                            String content = reader.getElementText();

+                            object.setName(

+                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToString(content));

+                            count++;

+

+

+                        }

+

+

+                        if ("ssn".equals(reader.getLocalName())) {

+

+                            String content = reader.getElementText();

+                            object.setSsn(

+                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToString(content));

+                            count++;

+

+

+                        }

+

+

+                    }

+

+                    if (argumentCount == count) {

+                        done = true;

+                    }

+

+                    if (!done) {

+                        event = reader.next();

+                    }

+

+                }

+

+            } catch (javax.xml.stream.XMLStreamException e) {

+                throw new java.lang.Exception(e);

+            }

+

+            return object;

+        }

+    }//end of factory class

+

+}

+    
\ No newline at end of file
diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/CreateAccountRequest.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/CreateAccountRequest.java
new file mode 100644
index 0000000..55fc636
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/CreateAccountRequest.java
@@ -0,0 +1,174 @@
+/*

+* Copyright 2004,2005 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.

+*/

+

+/**

+ * CreateAccountRequest.java

+ *

+ * This file was auto-generated from WSDL

+ * by the Apache Axis2 version: #axisVersion# #today#

+ */

+

+package org.apache.axis2.databinding;

+

+/**

+ * CreateAccountRequest bean class

+ */

+

+public class CreateAccountRequest implements

+        org.apache.axis2.databinding.ADBBean {

+

+    public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(

+            "http://www.wso2.com/types", "createAccountRequest", "ns1");

+

+    /**

+     * field for ClientInfo

+     */

+    protected ClientInfo localClientInfo;

+

+    /**

+     * Auto generated getter method

+     * 

+     * @return com.wso2.www.types.ClientInfo

+     */

+    public ClientInfo getClientInfo() {

+        return localClientInfo;

+    }

+

+    /**

+     * Auto generated setter method

+     * 

+     * @param param

+     *            ClientInfo

+     */

+    public void setClientInfo(ClientInfo param) {

+

+        this.localClientInfo = param;

+    }

+

+    /**

+     * field for Password

+     */

+    protected java.lang.String localPassword;

+

+    /**

+     * Auto generated getter method

+     * 

+     * @return java.lang.String

+     */

+    public java.lang.String getPassword() {

+        return localPassword;

+    }

+

+    /**

+     * Auto generated setter method

+     * 

+     * @param param

+     *            Password

+     */

+    public void setPassword(java.lang.String param) {

+

+        this.localPassword = param;

+    }

+

+    /**

+     * databinding method to get an XML representation of this object

+     * 

+     */

+    public javax.xml.stream.XMLStreamReader getPullParser(

+            javax.xml.namespace.QName qName) {

+

+        java.util.ArrayList elementList = new java.util.ArrayList();

+        java.util.ArrayList attribList = new java.util.ArrayList();

+

+        elementList.add(new javax.xml.namespace.QName(

+                "http://www.wso2.com/types", "clientinfo"));

+        elementList.add(localClientInfo);

+

+        elementList.add(new javax.xml.namespace.QName("", "password"));

+        elementList.add(org.apache.axis2.databinding.utils.ConverterUtil

+                .convertToString(localPassword));

+

+        return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl

+                (qName, elementList.toArray(), attribList

+                        .toArray());

+

+    }

+

+    /**

+     * Factory class that keeps the parse method

+     */

+    public static class Factory {

+        /**

+         * static method to create the object

+         */

+        public static CreateAccountRequest parse(

+                javax.xml.stream.XMLStreamReader reader)

+                throws java.lang.Exception {

+            CreateAccountRequest object = new CreateAccountRequest();

+            try {

+                int event = reader.getEventType();

+                int count = 0;

+                int argumentCount = 2;

+                boolean done = false;

+                // event better be a START_ELEMENT. if not we should go up to

+                // the start element here

+                while (!reader.isStartElement()) {

+                    event = reader.next();

+                }

+

+                while (!done) {

+                    if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event) {

+

+                        if ("clientinfo".equals(reader.getLocalName())) {

+

+                            object

+                                    .setClientInfo(ClientInfo.Factory

+                                            .parse(reader));

+                            count++;

+

+                        }

+

+                        if ("password".equals(reader.getLocalName())) {

+

+                            String content = reader.getElementText();

+                            object

+                                    .setPassword(org.apache.axis2.databinding.utils.ConverterUtil

+                                            .convertToString(content));

+                            count++;

+

+                        }

+

+                    }

+

+                    if (argumentCount == count) {

+                        done = true;

+                    }

+

+                    if (!done) {

+                        event = reader.next();

+                    }

+

+                }

+

+            } catch (javax.xml.stream.XMLStreamException e) {

+                throw new java.lang.Exception(e);

+            }

+

+            return object;

+        }

+    }// end of factory class

+

+}

diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/ConverterUtilTest.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/ConverterUtilTest.java
new file mode 100644
index 0000000..3ae2839
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/ConverterUtilTest.java
@@ -0,0 +1,82 @@
+package org.apache.axis2.databinding.utils;

+

+import junit.framework.TestCase;

+

+import java.util.List;

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.math.BigInteger;

+import java.lang.reflect.Array;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ConverterUtilTest extends TestCase {

+

+    /**

+     * Test conversion of Big Integer

+     */

+    public void testBigInteger(){

+        List l = new ArrayList();

+        l.add("23445");

+        l.add("23446");

+        l.add("23456646");

+        l.add("1113646");

+

+        Object convertedObj = ConverterUtil.convertToArray(

+                BigInteger.class,l);

+

+        assertTrue(convertedObj.getClass().isArray());

+        assertTrue(convertedObj.getClass().equals(BigInteger[].class));

+

+    }

+

+    /**

+     * integer arrays

+     */

+    public void testInt(){

+        List l = new ArrayList();

+        l.add("23445");

+        l.add("23446");

+        l.add("23456646");

+        l.add("1113646");

+

+        Object convertedObj = ConverterUtil.convertToArray(

+                int.class,l);

+

+        assertTrue(convertedObj.getClass().isArray());

+        assertTrue(convertedObj.getClass().equals(int[].class));

+

+    }

+

+     /**

+     * boolean arrays

+     */

+    public void testBool(){

+        List l = new ArrayList();

+        l.add("true");

+        l.add("false");

+        l.add("true");

+        l.add("false");

+

+        Object convertedObj = ConverterUtil.convertToArray(

+                boolean.class,l);

+

+        assertTrue(convertedObj.getClass().isArray());

+        assertTrue(convertedObj.getClass().equals(boolean[].class));

+

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/NamedStaxOMBuilderTest.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/NamedStaxOMBuilderTest.java
new file mode 100644
index 0000000..7bde954
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/NamedStaxOMBuilderTest.java
@@ -0,0 +1,81 @@
+package org.apache.axis2.databinding.utils;

+

+import junit.framework.TestCase;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axis2.util.StreamWrapper;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import java.io.StringReader;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class NamedStaxOMBuilderTest extends TestCase {

+

+    public void testNamedOMBuilder() throws Exception{

+

+        String xmlDoc="<wrapper><myIntVal>200</myIntVal></wrapper>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+

+        NamedStaxOMBuilder  sm = new NamedStaxOMBuilder(reader,new QName("wrapper"));

+        OMElement elt = sm.getOMElement();

+

+        assertNotNull(elt);

+        assertEquals(elt.getLocalName(),"wrapper");

+

+

+

+

+    }

+

+    public void testNamedOMBuilder1() throws Exception{

+

+        String xmlDoc="<wrapper><myIntVal>200</myIntVal></wrapper>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+

+        //move upto the  myIntVal start element first

+        boolean done = false;

+        QName nameToMatch = new QName("myIntVal");

+        while(!done){

+            if (reader.isStartElement() && nameToMatch.equals(reader.getName())){

+                done = true;

+            }else{

+                reader.next();

+            }

+        }

+

+        //we need the wrapper here - it is the nature of the builders that

+        //they expect the *next* event to be the start element (not the

+        //current one) So we need the wrapper to simulate a full fledged

+        //

+        NamedStaxOMBuilder  sm = new NamedStaxOMBuilder(

+                new StreamWrapper(reader),nameToMatch);

+        OMElement elt = sm.getOMElement();

+

+        assertNotNull(elt);

+        assertEquals(elt.getLocalName(),"myIntVal");

+

+

+

+

+    }

+

+

+}

diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/PrintEvents.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/PrintEvents.java
new file mode 100644
index 0000000..843ab56
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/PrintEvents.java
@@ -0,0 +1,211 @@
+/*
+* Copyright 2004,2005 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.axis2.databinding.utils;

+

+import javax.xml.stream.XMLStreamConstants;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+public class PrintEvents {

+

+    public static void print(XMLStreamReader xmlr) throws XMLStreamException {

+        while (xmlr.hasNext()) {

+            printEvent(xmlr);

+            xmlr.next();

+        }

+    }

+

+    private static void printEvent(XMLStreamReader xmlr) {

+

+        System.out.print("EVENT:[" + getEventString(xmlr.getEventType()) + "] ");

+

+        System.out.print(" [");

+

+        switch (xmlr.getEventType()) {

+

+            case XMLStreamConstants.START_ELEMENT:

+                System.out.print("<");

+                printName(xmlr);

+                printNamespaces(xmlr);

+                printAttributes(xmlr);

+                System.out.print(">");

+                break;

+

+            case XMLStreamConstants.END_ELEMENT:

+                System.out.print("</");

+                printName(xmlr);

+                System.out.print(">");

+                break;

+

+            case XMLStreamConstants.SPACE:

+

+            case XMLStreamConstants.CHARACTERS:

+                int start = xmlr.getTextStart();

+                int length = xmlr.getTextLength();

+                System.out.print(new String(xmlr.getTextCharacters(),

+                        start,

+                        length));

+                break;

+

+            case XMLStreamConstants.PROCESSING_INSTRUCTION:

+                System.out.print("<?");

+                if (xmlr.hasText())

+                    System.out.print(xmlr.getText());

+                System.out.print("?>");

+                break;

+

+            case XMLStreamConstants.CDATA:

+                System.out.print("<![CDATA[");

+                start = xmlr.getTextStart();

+                length = xmlr.getTextLength();

+                System.out.print(new String(xmlr.getTextCharacters(),

+                        start,

+                        length));

+                System.out.print("]]>");

+                break;

+

+            case XMLStreamConstants.COMMENT:

+                System.out.print("<!--");

+                if (xmlr.hasText())

+                    System.out.print(xmlr.getText());

+                System.out.print("-->");

+                break;

+

+            case XMLStreamConstants.ENTITY_REFERENCE:

+                System.out.print(xmlr.getLocalName() + "=");

+                if (xmlr.hasText())

+                    System.out.print("[" + xmlr.getText() + "]");

+                break;

+

+            case XMLStreamConstants.START_DOCUMENT:

+                System.out.print("<?xml");

+                System.out.print(" version='" + xmlr.getVersion() + "'");

+                System.out.print(" encoding='" + xmlr.getCharacterEncodingScheme() + "'");

+                if (xmlr.isStandalone())

+                    System.out.print(" standalone='yes'");

+                else

+                    System.out.print(" standalone='no'");

+                System.out.print("?>");

+                break;

+

+        }

+        System.out.println("]");

+    }

+

+    private static void printName(XMLStreamReader xmlr) {

+        if (xmlr.hasName()) {

+            String prefix = xmlr.getPrefix();

+            String uri = xmlr.getNamespaceURI();

+            String localName = xmlr.getLocalName();

+            printName(prefix, uri, localName);

+        }

+    }

+

+    private static void printName(String prefix,

+                                  String uri,

+                                  String localName) {

+        if (uri != null && !("".equals(uri))) System.out.print("['" + uri + "']:");

+        if (prefix != null) System.out.print(prefix + ":");

+        if (localName != null) System.out.print(localName);

+    }

+

+    private static void printAttributes(XMLStreamReader xmlr) {

+        for (int i = 0; i < xmlr.getAttributeCount(); i++) {

+            printAttribute(xmlr, i);

+        }

+    }

+

+    private static void printAttribute(XMLStreamReader xmlr, int index) {

+        String prefix = xmlr.getAttributePrefix(index);

+        String namespace = xmlr.getAttributeNamespace(index);

+        String localName = xmlr.getAttributeLocalName(index);

+        String value = xmlr.getAttributeValue(index);

+        System.out.print(" ");

+        printName(prefix, namespace, localName);

+        System.out.print("='" + value + "'");

+    }

+

+    private static void printNamespaces(XMLStreamReader xmlr) {

+        for (int i = 0; i < xmlr.getNamespaceCount(); i++) {

+            printNamespace(xmlr, i);

+        }

+    }

+

+    private static void printNamespace(XMLStreamReader xmlr, int index) {

+        String prefix = xmlr.getNamespacePrefix(index);

+        String uri = xmlr.getNamespaceURI(index);

+        System.out.print(" ");

+        if (prefix == null)

+            System.out.print("xmlns='" + uri + "'");

+        else

+            System.out.print("xmlns:" + prefix + "='" + uri + "'");

+    }

+

+    private static String getEventString(int eventCode) {

+        String event = "";

+

+        switch (eventCode) {

+            case 1 :

+                event = "START_ELEMENT";

+                break;

+            case 2 :

+                event = "END_ELEMENT";

+                break;

+            case 3 :

+                event = "PROCESSING_INSTRUCTION";

+                break;

+            case 4 :

+                event = "CHARACTERS";

+                break;

+            case 5 :

+                event = "COMMENT";

+                break;

+            case 6 :

+                event = "SPACE";

+                break;

+            case 7 :

+                event = "START_DOCUMENT";

+                break;

+            case 8 :

+                event = "END_DOCUMENT";

+                break;

+            case 9 :

+                event = "ENTITY_REFERENCE";

+                break;

+            case 10 :

+                event = "ATTRIBUTE";

+                break;

+            case 11 :

+                event = "DTD";

+                break;

+            case 12 :

+                event = "CDATA";

+                break;

+            case 13 :

+                event = "NAMESPACE";

+                break;

+            case 14 :

+                event = "NOTATION_DECLARATION";

+                break;

+            case 15 :

+                event = "ENTITY_DECLARATION";

+                break;

+        }

+        return event;

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/SimpleArrayReaderStateMachineTest.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/SimpleArrayReaderStateMachineTest.java
new file mode 100644
index 0000000..ce39f1d
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/SimpleArrayReaderStateMachineTest.java
@@ -0,0 +1,106 @@
+package org.apache.axis2.databinding.utils;

+

+import junit.framework.TestCase;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamConstants;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import java.io.StringReader;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleArrayReaderStateMachineTest extends TestCase {

+

+    public void testStateMachine() throws Exception{

+        String xmlDoc="<wrapper><myIntVal>200</myIntVal><myIntVal>200</myIntVal><myIntVal>200</myIntVal>" +

+                "<myIntVal>200</myIntVal><myIntVal>200</myIntVal><myIntVal>200</myIntVal></wrapper>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+        SimpleArrayReaderStateMachine  sm = new SimpleArrayReaderStateMachine();

+        sm.setElementNameToTest(new QName("myIntVal"));

+        try {

+            sm.read(reader);

+        } catch (XMLStreamException e) {

+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.

+        }

+

+        assertEquals(6,sm.getTextArray().length);

+

+    }

+

+    public void testStateMachine3() throws Exception{

+        String xmlDoc="<wrapper><myIntVal>200</myIntVal><myIntVal>200</myIntVal><myIntVal>200</myIntVal>" +

+                "<myIntVal>200</myIntVal><myIntVal>200</myIntVal><myIntVal>200</myIntVal></wrapper>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+

+        while(reader.hasNext()){

+            int event = reader.next();

+            if (event== XMLStreamConstants.START_ELEMENT && "myIntVal".equals(reader.getLocalName())){

+                break;

+            }

+

+        }

+

+        SimpleArrayReaderStateMachine  sm = new SimpleArrayReaderStateMachine();

+        sm.setElementNameToTest(new QName("myIntVal"));

+        try {

+            sm.read(reader);

+        } catch (XMLStreamException e) {

+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.

+        }

+

+        assertEquals(6,sm.getTextArray().length);

+

+    }

+

+    public void testStateMachine2() throws Exception{

+        String xmlDoc="<wrapper><myIntVal>200</myIntVal></wrapper>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+        SimpleArrayReaderStateMachine  sm = new SimpleArrayReaderStateMachine();

+        sm.setElementNameToTest(new QName("myIntVal"));

+        try {

+            sm.read(reader);

+        } catch (XMLStreamException e) {

+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.

+        }

+

+        assertEquals("200",sm.getTextArray()[0]);

+    }

+

+     public void testStateMachineEmptyArray() throws Exception{

+        String xmlDoc="<wrapper></wrapper>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+        SimpleArrayReaderStateMachine  sm = new SimpleArrayReaderStateMachine();

+        sm.setElementNameToTest(new QName("myIntVal"));

+        try {

+            sm.read(reader);

+        } catch (Exception e) {

+

+        }

+

+        assertEquals(0,sm.getTextArray().length);

+

+

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/SimpleElementReaderStateMachineTest.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/SimpleElementReaderStateMachineTest.java
new file mode 100644
index 0000000..bfd8fd4
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/SimpleElementReaderStateMachineTest.java
@@ -0,0 +1,76 @@
+package org.apache.axis2.databinding.utils;

+

+import junit.framework.TestCase;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import java.io.StringReader;

+

+import org.apache.axiom.om.util.StAXUtils;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SimpleElementReaderStateMachineTest extends TestCase {

+

+    public void testStateMachine() throws Exception{

+        String xmlDoc="<myIntVal>200</myIntVal>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+        SimpleElementReaderStateMachine  sm = new SimpleElementReaderStateMachine();

+        sm.setElementNameToTest(new QName("myIntVal"));

+        try {

+            sm.read(reader);

+        } catch (XMLStreamException e) {

+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.

+        }

+

+        assertEquals("200",sm.getText());

+    }

+

+     public void testStateMachine2() throws Exception{

+        String xmlDoc="<wrapper><myIntVal>200</myIntVal></wrapper>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+        SimpleElementReaderStateMachine  sm = new SimpleElementReaderStateMachine();

+        sm.setElementNameToTest(new QName("myIntVal"));

+        try {

+            sm.read(reader);

+        } catch (XMLStreamException e) {

+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.

+        }

+

+        assertEquals("200",sm.getText());

+    }

+

+     public void testStateMachine3() throws Exception{

+        String xmlDoc="<myIntVal>200<a/></myIntVal>";

+        XMLStreamReader reader = StAXUtils.createXMLStreamReader(

+                new StringReader(xmlDoc));

+        SimpleElementReaderStateMachine  sm = new SimpleElementReaderStateMachine();

+        sm.setElementNameToTest(new QName("myIntVal"));

+        try {

+            sm.read(reader);

+            fail();

+        } catch (Exception e) {

+

+        }

+

+

+    }

+

+}

diff --git a/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderTest.java b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderTest.java
new file mode 100644
index 0000000..b133cd5
--- /dev/null
+++ b/rampart_1_1/modules/adb/test/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderTest.java
@@ -0,0 +1,854 @@
+package org.apache.axis2.databinding.utils.reader;

+

+import org.custommonkey.xmlunit.XMLTestCase;

+import org.apache.axis2.util.StreamWrapper;

+import org.apache.axis2.util.Base64;

+import org.apache.axis2.databinding.utils.Constants;

+import org.apache.axis2.databinding.ADBBean;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axiom.om.impl.serialize.StreamingOMSerializer;

+import org.apache.axiom.attachments.ByteArrayDataSource;

+import org.xml.sax.SAXException;

+import org.w3c.dom.Document;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamWriter;

+import javax.xml.parsers.ParserConfigurationException;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.parsers.DocumentBuilder;

+import javax.activation.DataHandler;

+import java.util.ArrayList;

+import java.util.List;

+import java.io.IOException;

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class ADBXMLStreamReaderTest extends XMLTestCase {

+

+    private DocumentBuilder db;

+

+    protected void setUp() throws Exception {

+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

+        dbf.setNamespaceAware(true);

+        db = dbf.newDocumentBuilder();

+    }

+

+    /**

+     * complex array scenario

+     */

+    public void testComplexObjectArrayScenario() {

+        try {

+            String expectedXML = "<ns1:TestComplexStringArrayScenario xmlns:ns1=\"http://testComplexStringArrayScenario.org\">" +

+                    "<Foo>Some Text</Foo>" +

+                    "<Dependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</Dependent>" +

+                    "<AdditionalDependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</AdditionalDependent>" +

+                    "<AdditionalDependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</AdditionalDependent>" +

+                    "<AdditionalDependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</AdditionalDependent>" +

+                    "<AdditionalDependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</AdditionalDependent>" +

+                    "<Bar>Some More Text</Bar><" +

+                    "/ns1:TestComplexStringArrayScenario>";

+

+            ArrayList propertyList = new ArrayList();

+            propertyList.add("Foo");

+            propertyList.add("Some Text");

+            propertyList.add(new QName("Dependent"));

+            DummyADBBean dummyBean = new DummyADBBean();

+            propertyList.add(dummyBean);

+

+            ADBBean[] adbBeans = new ADBBean[4];

+            for (int i = 0; i < 4; i++) {

+                adbBeans[i] = new DummyADBBean();

+            }

+            for (int i = 0; i < adbBeans.length; i++) {

+                propertyList.add(new QName("AdditionalDependent"));

+                propertyList.add(adbBeans[i]);

+

+            }

+

+            propertyList.add("Bar");

+            propertyList.add("Some More Text");

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(new QName("http://testComplexStringArrayScenario.org", "TestComplexStringArrayScenario", "ns1"), propertyList.toArray(), null);

+            String actualXML = getStringXML(pullParser);

+

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        } catch (Exception e) {

+            fail("Error has occurred " + e);

+        }

+    }

+

+    /**

+     * complex array scenario with nulls in between

+     */

+    public void testComplexObjectArrayScenarioWithNulls() {

+        try {

+            String expectedXML = "<ns1:TestComplexStringArrayScenario xmlns:ns1=\"http://testComplexStringArrayScenario.org\">" +

+                    "<AdditionalDependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</AdditionalDependent>" +

+                    "<AdditionalDependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</AdditionalDependent>" +

+                    "<AdditionalDependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</AdditionalDependent>" +

+                    "<AdditionalDependent xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +

+                    "</AdditionalDependent>" +

+                    "<Bar>Some More Text</Bar><" +

+                    "/ns1:TestComplexStringArrayScenario>";

+

+            ArrayList propertyList = new ArrayList();

+

+            ADBBean[] adbBeans = new ADBBean[4];

+            for (int i = 0; i < 4; i++) {

+                adbBeans[i] = new DummyADBBean();

+            }

+

+            adbBeans[3] = null;

+

+            for (int i = 0; i < adbBeans.length; i++) {

+                propertyList.add(new QName("AdditionalDependent"));

+                propertyList.add(adbBeans[i]);

+

+            }

+

+            propertyList.add("Bar");

+            propertyList.add("Some More Text");

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(new QName("http://testComplexStringArrayScenario.org", "TestComplexStringArrayScenario", "ns1"), propertyList.toArray(), null);

+            String actualXML = getStringXML(pullParser);

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        } catch (Exception e) {

+            fail("Error has occurred " + e);

+        }

+    }

+

+    /**

+     * Empty array

+     */

+    public void testComplexObjectArrayScenarioEmptyArray() {

+        try {

+            String expectedXML = "<ns1:TestComplexStringArrayScenario xmlns:ns1=\"http://testComplexStringArrayScenario.org\">" +

+                    "<Foo>Some Text</Foo>" +

+                    "<Dependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</Dependent>" +

+                    "<Bar>Some More Text</Bar><" +

+                    "/ns1:TestComplexStringArrayScenario>";

+

+            ArrayList propertyList = new ArrayList();

+            propertyList.add("Foo");

+            propertyList.add("Some Text");

+            propertyList.add(new QName("Dependent"));

+            DummyADBBean dummyBean = new DummyADBBean();

+            propertyList.add(dummyBean);

+

+            String[] array = new String[]{};

+            propertyList.add(new QName("AdditionalDependent"));

+            propertyList.add(array);

+

+            propertyList.add("Bar");

+            propertyList.add("Some More Text");

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(

+                    new QName("http://testComplexStringArrayScenario.org",

+                            "TestComplexStringArrayScenario", "ns1"),

+                    propertyList.toArray(),

+                    null);

+            String actualXML = getStringXML(pullParser);

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        } catch (Exception e) {

+            fail("Error has occurred " + e);

+        }

+    }

+    /**

+     * test a complex array list

+     */

+    public void testComplexArrayList() {

+        try {

+

+            String exptectedXML = "<Person><Name>FooOne</Name><Organization>Apache</Organization>" +

+                    "<Dependent><Name>FooTwo</Name><Age>25</Age><Sex>Male</Sex><Depemdent>" +

+                    "<Name>FooTwo</Name><Age>25</Age><Sex>Male</Sex><Depemdent><Name>FooTwo</Name>" +

+                    "<Age>25</Age><Sex>Male</Sex></Depemdent></Depemdent></Dependent>" +

+                    "<test:Dependent xmlns:test=\"http://whatever.com\"><Name>FooTwo</Name><Age>25</Age>" +

+                    "<Sex>Male</Sex><Depemdent><Name>FooTwo</Name><Age>25</Age><Sex>Male</Sex>" +

+                    "</Depemdent></test:Dependent></Person>";

+

+

+            ArrayList propertyList = new ArrayList();

+            propertyList.add("Name");

+            propertyList.add("FooOne");

+

+            propertyList.add("Organization");

+            propertyList.add("Apache");

+

+            propertyList.add(new QName("Dependent"));

+            DummyADBBean dummyBean = new DummyADBBean();

+            DummyADBBean nextdummyBean = dummyBean.addAnotherBean();

+            nextdummyBean.addAnotherBean();

+            propertyList.add(dummyBean);

+

+            propertyList.add(new QName("http://whatever.com", "Dependent", "test"));

+            dummyBean = new DummyADBBean();

+            dummyBean.addAnotherBean();

+            propertyList.add(dummyBean);

+

+            QName projectQName = new QName("Person");

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(projectQName, propertyList.toArray(), null);

+

+            Document actualDom = newDocument(getStringXML(pullParser));

+            Document expectedDocument = newDocument(exptectedXML);

+            assertXMLEqual(actualDom, expectedDocument);

+        } catch (ParserConfigurationException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (SAXException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (IOException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (XMLStreamException e) {

+            fail("Exception in parsing documents " + e);

+        }

+

+    }

+

+    public static class DummyADBBean implements ADBBean {

+        ArrayList propertyList = new ArrayList();

+

+        public DummyADBBean() {

+            propertyList.add("Name");

+            propertyList.add("FooTwo");

+            propertyList.add("Age");

+            propertyList.add("25");

+            propertyList.add("Sex");

+            propertyList.add("Male");

+        }

+

+        public DummyADBBean addAnotherBean() {

+            propertyList.add(new QName("Depemdent"));

+            DummyADBBean dummyBean = new DummyADBBean();

+            propertyList.add(dummyBean);

+            return dummyBean;

+        }

+

+        public XMLStreamReader getPullParser(QName adbBeanQName) {

+            return new ADBXMLStreamReaderImpl(adbBeanQName, propertyList.toArray(), null);

+        }

+    }

+

+    public void testWithOMElements() throws XMLStreamException {

+

+        String expectedXML = "<OMElementTest><axis2:FirstOMElement xmlns:axis2=\"http://ws.apache.org/namespaces/axis2\">" +

+                "<axis2:SecondOMElement></axis2:SecondOMElement></axis2:FirstOMElement><Foo>Some Text</Foo>" +

+                "<Dependent><Name>FooTwo</Name><Age>25</Age><Sex>Male</Sex></Dependent>" +

+                "<axis2:SecondOMElement xmlns:axis2=\"http://ws.apache.org/namespaces/axis2\">" +

+                "</axis2:SecondOMElement></OMElementTest>";

+

+        OMFactory factory = OMAbstractFactory.getOMFactory();

+        OMNamespace axis2Namespace = factory.createOMNamespace(org.apache.axis2.Constants.AXIS2_NAMESPACE_URI, org.apache.axis2.Constants.AXIS2_NAMESPACE_PREFIX);

+        OMElement firstElement = factory.createOMElement("FirstOMElement", axis2Namespace);

+        OMElement secondElement = factory.createOMElement("SecondOMElement", axis2Namespace, firstElement);

+

+        ArrayList propertyList = new ArrayList();

+

+        // add an OMElement

+        propertyList.add(firstElement.getQName());

+        propertyList.add(firstElement);

+

+        // add some more stuff

+        propertyList.add("Foo");

+        propertyList.add("Some Text");

+        propertyList.add(new QName("Dependent"));

+        DummyADBBean dummyBean = new DummyADBBean();

+        propertyList.add(dummyBean);

+

+//         lets add one more element

+        propertyList.add(secondElement.getQName());

+        propertyList.add(secondElement);

+

+

+        XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(new QName("OMElementTest"), propertyList.toArray(), null);

+        String stringXML = getStringXML(pullParser);

+        try {

+            Document actualDom = newDocument(stringXML);

+            Document expectedDocument = newDocument(expectedXML);

+            assertXMLEqual(actualDom, expectedDocument);

+        } catch (ParserConfigurationException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (SAXException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (IOException e) {

+            fail("Exception in parsing documents " + e);

+        }

+

+    }

+    /**

+     * Test a completely null element

+     */

+    public void testNullableAttribute() {

+        try {

+

+            /*

+            This is what I expect :

+

+            */

+            String exptectedXML = "<Person xmlns=\"\"><Name xmlns=\"\">FooOne</Name><DependentOne xmlns=\"\" " +

+                    "xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/>" +

+                    "</Person>";

+

+            ArrayList propertyList = new ArrayList();

+            propertyList.add("Name");

+            propertyList.add("FooOne");

+            propertyList.add(new QName("DependentOne"));

+            propertyList.add(null);

+

+            QName projectQName = new QName("Person");

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(projectQName, propertyList.toArray(), null);

+

+            Document actualDom = newDocument(getStringXML(pullParser));

+            Document expectedDocument = newDocument(exptectedXML);

+            assertXMLEqual(actualDom, expectedDocument);

+        } catch (ParserConfigurationException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (SAXException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (IOException e) {

+            fail("Exception in parsing documents " + e);

+        }  catch (XMLStreamException e) {

+            fail("Exception in parsing documents " + e);

+        }

+

+    }

+

+    /**

+     * Test a simple array

+     */

+    public void testSimpleStringArrayScenario() {

+        try {

+            String expectedXML = "<ns1:TestComplexStringArrayScenario xmlns:ns1=\"http://testComplexStringArrayScenario.org\">" +

+                    "<StringInfo>Some Text 0</StringInfo>" +

+                    "<StringInfo>Some Text 1</StringInfo>" +

+                    "<StringInfo>Some Text 2</StringInfo>" +

+                    "<StringInfo>Some Text 3</StringInfo>" +

+                    "</ns1:TestComplexStringArrayScenario>";

+

+            ArrayList propertyList = new ArrayList();

+

+            String[] stringArray = new String[4];

+            for (int i = 0; i < 4; i++) {

+                stringArray[i] = "Some Text " + i;

+            }

+            propertyList.add("StringInfo");

+            propertyList.add(stringArray);

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(

+                    new QName("http://testComplexStringArrayScenario.org",

+                            "TestComplexStringArrayScenario", "ns1"),

+                    propertyList.toArray(), null);

+            String actualXML = getStringXML(pullParser);

+

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        }catch (XMLStreamException e) {

+            fail("Error has occurred " + e);

+        }

+

+

+    }

+

+    /**

+     * Test a simple array with null's inbetween

+     */

+    public void testSimpleStringArrayScenarioWithNulls() {

+        try {

+            String expectedXML = "<ns1:TestComplexStringArrayScenario xmlns:ns1=\"http://testComplexStringArrayScenario.org\">" +

+                    "<StringInfo>Some Text 0</StringInfo>" +

+                    "<StringInfo xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/>" +

+                    "<StringInfo>Some Text 2</StringInfo>" +

+                    "<StringInfo>Some Text 3</StringInfo>" +

+                    "</ns1:TestComplexStringArrayScenario>";

+

+            ArrayList propertyList = new ArrayList();

+

+            String[] stringArray = new String[4];

+            for (int i = 0; i < 4; i++) {

+                stringArray[i] = "Some Text " + i;

+            }

+            stringArray[1] =null;

+

+            propertyList.add("StringInfo");

+            propertyList.add(stringArray);

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(

+                    new QName("http://testComplexStringArrayScenario.org",

+                            "TestComplexStringArrayScenario", "ns1"),

+                    propertyList.toArray(), null);

+            String actualXML = getStringXML(pullParser);

+

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        }catch (XMLStreamException e) {

+            fail("Error has occurred " + e);

+        }

+

+

+    }

+

+

+    /**

+     * test the mixed content

+     */

+    public void testComplexStringArrayScenarioWithMixedContent() {

+        try {

+            String expectedXML = "<ns1:TestComplexStringArrayScenario xmlns:ns1=\"http://testComplexStringArrayScenario.org\">" +

+                    "<Foo>Some Text</Foo>" +

+                    "<Dependent>" +

+                    "<Name>FooTwo</Name>" +

+                    "<Age>25</Age>" +

+                    "<Sex>Male</Sex>" +

+                    "</Dependent>" +

+                    "<StringInfo>Some Text 0</StringInfo>" +

+                    "<StringInfo>Some Text 1</StringInfo>" +

+                    "<StringInfo>Some Text 2</StringInfo>" +

+                    "<StringInfo>Some Text 3</StringInfo>" +

+                    "<Bar>Some More Text</Bar>" +

+                    "</ns1:TestComplexStringArrayScenario>";

+

+            ArrayList propertyList = new ArrayList();

+            propertyList.add("Foo");

+            propertyList.add("Some Text");

+            propertyList.add(new QName("Dependent"));

+            DummyADBBean dummyBean = new DummyADBBean();

+            propertyList.add(dummyBean);

+

+            String[] stringArray = new String[4];

+            for (int i = 0; i < 4; i++) {

+                stringArray[i] = "Some Text " + i;

+            }

+            propertyList.add("StringInfo");

+            propertyList.add(stringArray);

+

+            propertyList.add("Bar");

+            propertyList.add("Some More Text");

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(

+                    new QName("http://testComplexStringArrayScenario.org",

+                            "TestComplexStringArrayScenario", "ns1"),

+                    propertyList.toArray(),

+                    null);

+            String actualXML = getStringXML(pullParser);

+

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        }catch (Exception e) {

+            fail("Error has occurred " + e);

+        }

+

+

+    }

+    /**

+     * Test a simple array with one element nil

+     */

+    public void testComplexStringArrayScenarioWithNull() {

+        try {

+            String expectedXML = "<ns1:TestComplexStringArrayScenario " +

+                    "xmlns:ns1=\"http://testComplexStringArrayScenario.org\" " +

+                    ">" +

+                    "<StringInfo>Some Text 0</StringInfo>" +

+                    "<StringInfo xsi:nil=\"true\" " +

+                    "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"></StringInfo>" +

+                    "<StringInfo>Some Text 2</StringInfo>" +

+                    "<StringInfo>Some Text 3</StringInfo>" +

+                    "</ns1:TestComplexStringArrayScenario>";

+

+            ArrayList propertyList = new ArrayList();

+

+            String[] stringArray = new String[4];

+            for (int i = 0; i < 4; i++) {

+                if (i!=1) stringArray[i] = "Some Text " + i;

+            }

+            stringArray[1]  = null;

+

+            propertyList.add("StringInfo");

+            propertyList.add(stringArray);

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(

+                    new QName("http://testComplexStringArrayScenario.org",

+                            "TestComplexStringArrayScenario", "ns1"),

+                    propertyList.toArray(), null);

+            String actualXML = getStringXML(pullParser);

+

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        }catch (XMLStreamException e) {

+            fail("Error has occurred " + e);

+        }

+

+

+    }

+

+    /**

+     * Test multiple unqulified attributes

+     * @throws XMLStreamException

+     */

+    public void testAttributes() throws XMLStreamException {

+

+        String expectedXML = "<emp:Employee xmlns:emp=\"http://ec.org/software\" Attr2=\"Value 2\" " +

+                "Attr3=\"Value 3\" Attr1=\"Value 1\" Attr5=\"Value 5\" Attr4=\"Value 4\"></emp:Employee>";

+

+        OMFactory factory = OMAbstractFactory.getOMFactory();

+        QName elementQName = new QName("http://ec.org/software", "Employee", "emp");

+        OMAttribute[] attribute = new OMAttribute[5];

+

+        for (int i = 0; i < 5; i++) {

+            attribute[i] = factory.createOMAttribute("Attr" + (i + 1), null, "Value " + (i + 1));

+        }

+

+        List omAttribList = new ArrayList();

+        for (int i = 0; i < attribute.length; i++) {

+            omAttribList.add(Constants.OM_ATTRIBUTE_KEY);

+            omAttribList.add(attribute[i]);

+        }

+

+

+        String stringXML = getStringXML(new ADBXMLStreamReaderImpl(elementQName,

+                null,

+                omAttribList.toArray()));

+        try {

+            Document actualDom = newDocument(stringXML);

+            Document expectedDocument = newDocument(expectedXML);

+            assertXMLEqual(actualDom, expectedDocument);

+        } catch (ParserConfigurationException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (SAXException e) {

+            fail("Exception in parsing documents " + e);

+        } catch (IOException e) {

+            fail("Exception in parsing documents " + e);

+        }

+

+

+    }

+

+    /**

+     * A text only element

+     */

+    public void testElementText() {

+

+        String expectedXML = "<ns1:testElementText xmlns:ns1=\"http://testElementText.org\">" +

+                "This is some Text for the element</ns1:testElementText>";

+        try {

+            ArrayList properties = new ArrayList();

+            properties.add(ADBXMLStreamReader.ELEMENT_TEXT);

+            properties.add("This is some Text for the element");

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(

+                    new QName("http://testElementText.org", "testElementText", "ns1"), properties.toArray(), null);

+

+            String actualXML = getStringXML(pullParser);

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        } catch (Exception e) {

+            fail("Error has occurred " + e);

+        }

+    }

+

+/// todo Fails due to a bug in WSTX writer

+//    /**

+//     * Test multiple qualified attributes

+//     * @throws XMLStreamException

+//     */

+//    public void testAttributesWithNamespaces() throws XMLStreamException {

+//

+//        String expectedXML = "<emp:Employee xmlns:emp=\"http://ec.org/software\" " +

+//                "xmlns:attrNS=\"mailto:whoever@whatever.com\" attrNS:Attr2=\"Value 2\" " +

+//                "attrNS:Attr3=\"Value 3\" attrNS:Attr1=\"Value 1\"\n" +

+//                "              attrNS:Attr5=\"Value 5\" attrNS:Attr4=\"Value 4\"></emp:Employee>";

+//

+//        OMFactory factory = OMAbstractFactory.getOMFactory();

+//        QName elementQName = new QName("http://ec.org/software", "Employee", "emp");

+//        OMNamespace attrNS = factory.createOMNamespace("mailto:whoever@whatever.com", "attrNS");

+//

+//        // add some attributes with namespaces

+//        OMAttribute[] attribute = new OMAttribute[5];

+//        for (int i = 0; i < 5; i++) {

+//            attribute[i] = factory.createOMAttribute("Attr" + (i + 1), attrNS, "Value " + (i + 1));

+//        }

+//

+//        List omAttribList = new ArrayList();

+//        for (int i = 0; i < attribute.length; i++) {

+//            omAttribList.add(Constants.OM_ATTRIBUTE_KEY);

+//            omAttribList.add(attribute[i]);

+//        }

+//        String stringXML = getStringXML(new ADBXMLStreamReaderImpl(elementQName,

+//                null,

+//                omAttribList.toArray()));

+//        try {

+//            Document actualDom = newDocument(stringXML);

+//            Document expectedDocument = newDocument(expectedXML);

+//            assertXMLEqual(actualDom, expectedDocument);

+//        } catch (ParserConfigurationException e) {

+//            fail("Exception in parsing documents " + e);

+//        } catch (SAXException e) {

+//            fail("Exception in parsing documents " + e);

+//        } catch (IOException e) {

+//            fail("Exception in parsing documents " + e);

+//        }

+//    }

+    /**

+     * test for qualified attributes

+     */

+    public void testUnQualifiedAttributes() {

+

+        String expectedXML = "<ns1:testElementText xmlns:ns1=\"http://testElementText.org\" MyUnQualifiedAttribute=\"MyAttributeValue\">" +

+                "<ns2:QualifiedElement xmlns:ns2=\"http://testQElementText.org\">" +

+                "This is some Text for the element</ns2:QualifiedElement></ns1:testElementText>";

+        try {

+            ArrayList properties = new ArrayList();

+            properties.add(new QName("http://testQElementText.org", "QualifiedElement", "ns2"));

+            properties.add("This is some Text for the element");

+

+            String[] attributes = new String[2];

+            attributes[0] = "MyUnQualifiedAttribute";

+            attributes[1] = "MyAttributeValue";

+

+

+            XMLStreamReader pullParser =new ADBXMLStreamReaderImpl(

+                    new QName("http://testElementText.org", "testElementText", "ns1"),

+                    properties.toArray(),

+                    attributes);

+

+            String actualXML = getStringXML(pullParser);

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        }catch (Exception e) {

+            fail("Error has occurred " + e);

+        }

+    }

+    /**

+     * test for base64

+     */

+    public void testBase64EncodedText() {

+

+        String textTobeSent = "33344MthwrrewrIOTEN)(&**^E(W)EW";

+

+        String expectedXML = "<ns1:testElementText xmlns:ns1=\"http://testElementText.org\">" +

+                "<ns2:QualifiedElement xmlns:ns2=\"http://testQElementText.org\">" +

+                Base64.encode(textTobeSent.getBytes()) +

+                "</ns2:QualifiedElement></ns1:testElementText>";

+        try {

+            ArrayList properties = new ArrayList();

+            properties.add(new QName("http://testQElementText.org", "QualifiedElement", "ns2"));

+            properties.add(new DataHandler(new ByteArrayDataSource(textTobeSent.getBytes())));

+

+           XMLStreamReader pullParser =new ADBXMLStreamReaderImpl(

+                    new QName("http://testElementText.org", "testElementText", "ns1"),

+                    properties.toArray(),

+                    null);

+

+            String actualXML = getStringXML(pullParser);

+

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        }catch (Exception e) {

+            fail("Error has occurred " + e);

+        }

+    }

+    /**

+     * test the qualified elements

+     * A qulified element has been associated with a namespace

+     */

+    public void testQualifiedElement() {

+

+        String expectedXML = "<ns1:testElementText xmlns:ns1=\"http://testElementText.org\">" +

+                "<ns2:QualifiedElement xmlns:ns2=\"http://testQElementText.org\">" +

+                "This is some Text for the element</ns2:QualifiedElement></ns1:testElementText>";

+        try {

+            ArrayList properties = new ArrayList();

+            properties.add(new QName("http://testQElementText.org", "QualifiedElement", "ns2"));

+            properties.add("This is some Text for the element");

+

+            XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(

+                    new QName("http://testElementText.org", "testElementText", "ns1"),

+                    properties.toArray(),

+                    null);

+

+            String actualXML = getStringXML(pullParser);

+            assertXMLEqual(newDocument(expectedXML), newDocument(actualXML));

+        } catch (ParserConfigurationException e) {

+            fail("Error has occurred " + e);

+        } catch (SAXException e) {

+            fail("Error has occurred " + e);

+        } catch (IOException e) {

+            fail("Error has occurred " + e);

+        } catch (Exception e) {

+            fail("Error has occurred " + e);

+        }

+    }

+

+    /**

+     * Util method to convert the pullstream to a string

+     * @param reader

+     * @return

+     */

+    private String getStringXML(XMLStreamReader reader) throws XMLStreamException{

+        //the returned pullparser starts at an Element rather than the start

+        //document event. This is somewhat disturbing but since an ADBBean

+        //denotes an XMLFragment, it is justifiable to keep the current event

+        //at the Start-element rather than the start document

+        //What it boils down to is that we need to wrap the reader in a

+        //stream wrapper to get a fake start-document event

+

+        StreamingOMSerializer ser = new StreamingOMSerializer();

+        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

+        XMLStreamWriter writer = StAXUtils.createXMLStreamWriter(byteArrayOutputStream);

+        ser.serialize(

+                new StreamWrapper(reader),

+                writer);

+        writer.flush();

+        return byteArrayOutputStream.toString();

+    }

+

+//     /**

+//     * Util method to convert the pullstream to a string

+//     * @param reader

+//     * @return

+//     */

+//    private String getStringXML(XMLStreamReader reader) {

+//        //the returned pullparser starts at an Element rather than the start

+//        //document event. This is somewhat disturbing but since an ADBBean

+//        //denotes an XMLFragment, it is justifiable to keep the current event

+//        //at the Start-element rather than the start document

+//        //What it boils down to is that we need to wrap the reader in a

+//        //stream wrapper to get a fake start-document event

+//        StAXOMBuilder stAXOMBuilder = new StAXOMBuilder(

+//                new StreamWrapper(reader));

+//        //stAXOMBuilder.setDoDebug(true);

+//        OMElement omelement = stAXOMBuilder.getDocumentElement();

+//        return omelement.toString();

+//    }

+    /**

+     * Creates a DOM document from the string

+     * @param xml

+     * @return

+     * @throws ParserConfigurationException

+     * @throws SAXException

+     * @throws IOException

+     */

+    public Document newDocument(String xml)

+            throws ParserConfigurationException, SAXException, IOException {

+        return db.parse(new ByteArrayInputStream(xml.getBytes()));

+    }

+}

diff --git a/rampart_1_1/modules/addressing/maven.xml b/rampart_1_1/modules/addressing/maven.xml
new file mode 100644
index 0000000..82e0022
--- /dev/null
+++ b/rampart_1_1/modules/addressing/maven.xml
@@ -0,0 +1,34 @@
+<?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:u="jelly:util"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+    <postGoal name="test:compile">
+        <mkdir dir="target/classes/META-INF"/>
+        <copy file="src/META-INF/module.xml"
+            tofile="target/classes/META-INF/module.xml"/>
+        <copy file="../../LICENSE.txt"
+            tofile="target/classes/META-INF/LICENSE.txt" overwrite="true"/>
+        <copy file="./test-resources/axis2.xml"
+            tofile="target/axis2.xml"/>
+        <mkdir dir="target/modules"/>
+        <jar jarfile="target/addressing-${addressing_version}.mar" basedir="target/classes">
+            <include name="**"/>
+        </jar>
+        <copy file="target/addressing-${addressing_version}.mar"
+            tofile="target/modules/addressing-${addressing_version}.mar"/>
+        <copy file="target/addressing-${addressing_version}.mar" 
+            tofile="${maven.repo.local}/org.apache.axis2/mars/addressing-${addressing_version}.mar"/>
+    </postGoal>
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+</project>
diff --git a/rampart_1_1/modules/addressing/project.properties b/rampart_1_1/modules/addressing/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/addressing/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/addressing/project.xml b/rampart_1_1/modules/addressing/project.xml
new file mode 100644
index 0000000..5302955
--- /dev/null
+++ b/rampart_1_1/modules/addressing/project.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - Addressing</name>
+    <id>axis2-addressing</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>WS-Addressing implementation</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <!-- external JARs -->
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons.httpclient.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons.codec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>backport-util-concurrent</groupId>
+            <artifactId>backport-util-concurrent</artifactId>
+            <version>${backport_util_concurrent.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javamail.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <!--for java2wsdl generation we use JAM , so there should be a dependency on the annogen jar or-->
+        <!--XML Beans-->
+        <dependency>
+            <groupId>annogen</groupId>
+            <artifactId>annogen</artifactId>
+            <version>${annogen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+       <dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${neethi.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+    </dependencies>
+
+    <reports/>
+</project>
diff --git a/rampart_1_1/modules/addressing/src/META-INF/module.xml b/rampart_1_1/modules/addressing/src/META-INF/module.xml
new file mode 100644
index 0000000..afbaf7c
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/META-INF/module.xml
@@ -0,0 +1,37 @@
+<module name="addressing">
+    <Description>This is WS-Addressing implementation on Axis2. Currently we have implemented Submission version (2004/08) and Proposed Recommendation. </Description>
+    <InFlow>
+        <handler name="AddressingFinalInHandler" class="org.apache.axis2.handlers.addressing.AddressingFinalInHandler">
+            <order phase="PreDispatch"/>
+        </handler>
+        <handler name="AddressingSubmissionInHandler" class="org.apache.axis2.handlers.addressing.AddressingSubmissionInHandler">
+            <order phase="PreDispatch"/>
+        </handler>
+        <handler name="AddressingWSDLValidationHandler" class="org.apache.axis2.handlers.addressing.AddressingWSDLValidationHandler">
+            <order phase="Dispatch" after="InstanceDispatcher" />
+        </handler>
+    </InFlow>
+
+    <OutFlow>
+        <!-- We don't need to have two handlers to handle these two version. So lets handle both of them in one. -->
+        <handler name="AddressingOutHandler" class="org.apache.axis2.handlers.addressing.AddressingOutHandler">
+            <order phase="MessageOut"/>
+        </handler>
+    </OutFlow>
+
+    <OutFaultFlow>
+        <handler name="AddressingOutHandler" class="org.apache.axis2.handlers.addressing.AddressingOutHandler">
+            <order phase="MessageOut"/>
+        </handler>
+    </OutFaultFlow>
+    
+    <InFaultFlow>
+        <handler name="AddressingFinalInHandler" class="org.apache.axis2.handlers.addressing.AddressingFinalInHandler">
+            <order phase="PreDispatch"/>
+        </handler>
+        <handler name="AddressingSubmissionInHandler" class="org.apache.axis2.handlers.addressing.AddressingSubmissionInHandler">
+            <order phase="PreDispatch"/>
+        </handler>
+        <!-- AddressingWSDLValidationHandler not present on the INfaultflow so that we don't get faults bouncing around forever -->
+    </InFaultFlow>
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/addressing/src/org/apache/axis2/addressing/AddressingFaultsHelper.java b/rampart_1_1/modules/addressing/src/org/apache/axis2/addressing/AddressingFaultsHelper.java
new file mode 100644
index 0000000..f411205
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/org/apache/axis2/addressing/AddressingFaultsHelper.java
@@ -0,0 +1,187 @@
+/*

+ * Copyright 2004,2005 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.axis2.addressing;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.SOAPFaultCode;

+import org.apache.axiom.soap.SOAPFaultSubCode;

+import org.apache.axiom.soap.SOAPFaultValue;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.AddressingConstants.Final;

+import org.apache.axis2.addressing.AddressingConstants.Submission;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public class AddressingFaultsHelper{

+    

+    private static final Log log = LogFactory.getLog(AddressingFaultsHelper.class);

+    

+    //    wsa:InvalidAddressingHeader [Reason] the string: "A header representing a Message Addressing Property is not valid and the message cannot be processed"

+    //      wsa:InvalidAddress

+    //      wsa:InvalidEPR

+    //      wsa:InvalidCardinality

+    public static void triggerInvalidCardinalityFault(MessageContext messageContext, String incorrectHeaderName) throws AxisFault {

+        if(log.isDebugEnabled()){

+            log.debug("triggerInvalidCardinalityFault: messageContext: "+messageContext+" incorrectHeaderName: "+incorrectHeaderName);

+        }

+        String namespace = (String) messageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);

+        if (Submission.WSA_NAMESPACE.equals(namespace))

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + incorrectHeaderName, Submission.FAULT_INVALID_HEADER, null, Submission.FAULT_INVALID_HEADER_REASON);

+        else

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + incorrectHeaderName, Final.FAULT_INVALID_HEADER, "InvalidCardinality", Final.FAULT_INVALID_HEADER_REASON);

+    }

+

+    //      wsa:MissingAddressInEPR

+    public static void triggerMissingAddressInEPRFault(MessageContext messageContext, String incorrectHeaderName) throws AxisFault {

+        if(log.isDebugEnabled()){

+            log.debug("triggerMissingAddressInEPRFault: messageContext: "+messageContext+" incorrectHeaderName: "+incorrectHeaderName);

+        }

+        String namespace = (String) messageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);

+        if (Submission.WSA_NAMESPACE.equals(namespace))

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + incorrectHeaderName, Submission.FAULT_INVALID_HEADER, null, Submission.FAULT_INVALID_HEADER_REASON);

+        else

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + incorrectHeaderName, Final.FAULT_INVALID_HEADER, "MissingAddressInEPR", Final.FAULT_INVALID_HEADER_REASON);

+    }

+

+    //      wsa:DuplicateMessageID

+    //      wsa:ActionMismatch

+    public static void triggerActionMismatchFault(MessageContext messageContext) throws AxisFault {

+        if(log.isDebugEnabled()){

+            log.debug("triggerActionMismatchFault: messageContext: "+messageContext);

+        }

+        String namespace = (String) messageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);

+        if (Submission.WSA_NAMESPACE.equals(namespace))

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":Action", Submission.FAULT_INVALID_HEADER, null, Submission.FAULT_INVALID_HEADER_REASON);

+        else

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":Action", Final.FAULT_INVALID_HEADER, "ActionMismatch", Final.FAULT_INVALID_HEADER_REASON);

+    }

+

+    //      wsa:OnlyAnonymousAddressSupported

+    public static void triggerOnlyAnonymousAddressSupportedFault(MessageContext messageContext, String incorrectHeaderName) throws AxisFault {

+        if(log.isDebugEnabled()){

+            log.debug("triggerOnlyAnonymousAddressSupportedFault: messageContext: "+messageContext+" incorrectHeaderName: "+incorrectHeaderName);

+        }

+        String namespace = (String) messageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);

+        if (Submission.WSA_NAMESPACE.equals(namespace))

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + incorrectHeaderName, Submission.FAULT_INVALID_HEADER, null, Submission.FAULT_INVALID_HEADER_REASON);

+        else

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + incorrectHeaderName, Final.FAULT_INVALID_HEADER, Final.FAULT_ONLY_ANONYMOUS_ADDRESS_SUPPORTED, Final.FAULT_INVALID_HEADER_REASON);

+    }

+

+    //      wsa:OnlyNonAnonymousAddressSupported

+    public static void triggerOnlyNonAnonymousAddressSupportedFault(MessageContext messageContext, String incorrectHeaderName) throws AxisFault {

+        if(log.isDebugEnabled()){

+            log.debug("triggerOnlyNonAnonymousAddressSupportedFault: messageContext: "+messageContext+" incorrectHeaderName: "+incorrectHeaderName);

+        }

+        String namespace = (String) messageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);

+        if (Submission.WSA_NAMESPACE.equals(namespace))

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + incorrectHeaderName, Submission.FAULT_INVALID_HEADER, null, Submission.FAULT_INVALID_HEADER_REASON);

+        else

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + incorrectHeaderName, Final.FAULT_INVALID_HEADER, Final.FAULT_ONLY_NON_ANONYMOUS_ADDRESS_SUPPORTED, Final.FAULT_INVALID_HEADER_REASON);

+    }

+

+    //    wsa:MessageAddressingHeaderRequired [Reason] the string: "A required header representing a Message Addressing Property is not present"

+    public static void triggerMessageAddressingRequiredFault(MessageContext messageContext, String missingHeaderName) throws AxisFault {

+        if(log.isDebugEnabled()){

+            log.debug("triggerMessageAddressingRequiredFault: messageContext: "+messageContext+" missingHeaderName: "+missingHeaderName);

+        }

+        String namespace = (String) messageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);

+        if (Submission.WSA_NAMESPACE.equals(namespace))

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + missingHeaderName, Submission.FAULT_ADDRESSING_HEADER_REQUIRED, null, Submission.FAULT_ADDRESSING_HEADER_REQUIRED_REASON);

+        else

+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME, AddressingConstants.WSA_DEFAULT_PREFIX + ":" + missingHeaderName, Final.FAULT_ADDRESSING_HEADER_REQUIRED, null, Final.FAULT_ADDRESSING_HEADER_REQUIRED_REASON);

+    }

+

+    //    wsa:ActionNotSupported [Reason] the string: "The [action] cannot be processed at the receiver"

+    public static void triggerActionNotSupportedFault(MessageContext messageContext, String problemAction) throws AxisFault {

+        if(log.isDebugEnabled()){

+            log.debug("triggerActionNotSupportedFault: messageContext: "+messageContext+" problemAction: "+problemAction);

+        }

+        triggerAddressingFault(messageContext, Final.FAULT_PROBLEM_ACTION_NAME, problemAction, AddressingConstants.FAULT_ACTION_NOT_SUPPORTED, null, AddressingConstants.FAULT_ACTION_NOT_SUPPORTED_REASON);

+    }

+

+    //    wsa:EndpointUnavailable [Reason] the string "The endpoint is unable to process the message at this time"

+

+    private static void triggerAddressingFault(MessageContext messageContext, String faultInformationKey, Object faultInformationValue, String faultcode, String faultSubcode, String faultReason) throws AxisFault{

+        Map faultInformation = (Map) messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS);

+        if (faultInformation == null) {

+            faultInformation = new HashMap();

+            messageContext.setProperty(Constants.FAULT_INFORMATION_FOR_HEADERS, faultInformation);

+        }

+

+        faultInformation.put(faultInformationKey, faultInformationValue);

+

+        if (!messageContext.isSOAP11()) {

+            setFaultCode(messageContext, faultcode, faultSubcode);

+        }

+        

+        OperationContext oc = messageContext.getOperationContext();

+        if(oc!=null){

+        	oc.setProperty(Constants.Configuration.SEND_STACKTRACE_DETAILS_WITH_FAULTS, "false");

+        }

+

+        messageContext.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.FALSE);

+        String namespace = (String) messageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);

+        throw new AxisFault(faultReason, new QName(namespace, faultcode, AddressingConstants.WSA_DEFAULT_PREFIX));

+    }

+

+    private static void setFaultCode(MessageContext messageContext, String faultCode, String faultSubCode) {

+        SOAPFactory soapFac = OMAbstractFactory.getSOAP12Factory();

+        SOAPFaultCode soapFaultCode = soapFac.createSOAPFaultCode();

+        SOAPFaultValue soapFaultValue = soapFac.createSOAPFaultValue(soapFaultCode);

+        soapFaultValue.setText(SOAP12Constants.SOAP_DEFAULT_NAMESPACE_PREFIX + ":" + SOAP12Constants.FAULT_CODE_SENDER);

+        SOAPFaultSubCode soapFaultSubCode = soapFac.createSOAPFaultSubCode(soapFaultCode);

+        SOAPFaultValue soapFaultSubcodeValue = soapFac.createSOAPFaultValue(soapFaultSubCode);

+        soapFaultSubcodeValue.setText(AddressingConstants.WSA_DEFAULT_PREFIX + ":" + faultCode);

+        if (faultSubCode != null) {

+            SOAPFaultSubCode soapFaultSubCode2 = soapFac.createSOAPFaultSubCode(soapFaultSubCode);

+            SOAPFaultValue soapFaultSubcodeValue2 = soapFac.createSOAPFaultValue(soapFaultSubCode2);

+            soapFaultSubcodeValue2.setText(AddressingConstants.WSA_DEFAULT_PREFIX + ":" + faultSubCode);

+        }

+        messageContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, soapFaultCode);

+    }

+    

+    public static OMElement getDetailElementForAddressingFault(MessageContext messageContext, OMNamespace addressingNamespaceObject){

+        Map faultInfo = (Map) messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS);

+        OMElement problemDetail = null;

+        if (faultInfo != null) {

+            String faultyHeaderQName = (String) faultInfo.get(Final.FAULT_HEADER_PROB_HEADER_QNAME);

+            String faultyAction = (String) faultInfo.get(Final.FAULT_PROBLEM_ACTION_NAME);

+            if(faultyAction!=null && !"".equals(faultyAction)){

+                problemDetail = messageContext.getEnvelope().getOMFactory().createOMElement(Final.FAULT_PROBLEM_ACTION_NAME, addressingNamespaceObject);

+                OMElement probH2 = messageContext.getEnvelope().getOMFactory().createOMElement(AddressingConstants.WSA_ACTION, addressingNamespaceObject,problemDetail);

+                probH2.setText(faultyAction);

+            }

+            if (faultyHeaderQName != null && !"".equals(faultyHeaderQName)) {

+                problemDetail = messageContext.getEnvelope().getOMFactory().createOMElement(Final.FAULT_HEADER_PROB_HEADER_QNAME, addressingNamespaceObject);

+                problemDetail.setText(faultyHeaderQName);

+            }

+        }

+        return problemDetail;

+    }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/addressing/src/org/apache/axis2/addressing/EndpointReferenceHelper.java b/rampart_1_1/modules/addressing/src/org/apache/axis2/addressing/EndpointReferenceHelper.java
new file mode 100644
index 0000000..5884ef0
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/org/apache/axis2/addressing/EndpointReferenceHelper.java
@@ -0,0 +1,290 @@
+/*

+* Copyright 2006 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.axis2.addressing;

+

+import java.util.IdentityHashMap;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * The methods in this class are used to process {@link EndpointReference} objects

+ * according to the rules of the 2005/08 (Final) and 2004/08 (submission) WS-Addressing

+ * specifications.

+ *

+ */

+public class EndpointReferenceHelper {

+

+    private static final Log log = LogFactory.getLog(EndpointReferenceHelper.class);

+

+    private final static Map finalQNames      = new IdentityHashMap();

+    private final static Map submissionQNames = new IdentityHashMap();

+     

+    /**

+     * Populates an endpoint reference based on the <code>OMElement</code> and

+     * WS-Addressing namespace that is passed in. If the string passed in is not

+     * recognized as a valid WS-Addressing namespace then this method behaves as

+     * if http://www.w3.org/2005/08/addressing has been passed in.

+     * 

+     * @param epr an endpoint reference instance to hold the info.

+     * @param eprOMElement an element of endpoint reference type 

+     * @param addressingNamespace the namespace of the WS-Addressing spec to comply with.

+     * @throws AxisFault if unable to locate an address element

+     * @see #fromOM(OMElement)

+     */

+    public static void fromOM(EndpointReference epr, OMElement eprOMElement, String addressingNamespace) throws AxisFault {

+        boolean isFinalAddressingNamespace = false;

+        Map map = null;

+

+        //First pass, identify the addressing namespace.

+        if (AddressingConstants.Submission.WSA_NAMESPACE.equals(addressingNamespace)) {

+            OMElement address = eprOMElement.getFirstChildWithName((QName) submissionQNames.get(AddressingConstants.EPR_ADDRESS));

+            

+            if (address != null) {

+                map = submissionQNames;

+                isFinalAddressingNamespace = false;

+                

+                if (log.isDebugEnabled())

+                    log.debug("fromOM: Found address element for namespace, " + AddressingConstants.Submission.WSA_NAMESPACE);                

+            }

+            else {

+                throw new AxisFault("Unable to locate an address element for the endpoint reference type.");

+            }

+        }

+        else {

+            OMElement address = eprOMElement.getFirstChildWithName((QName) finalQNames.get(AddressingConstants.EPR_ADDRESS));

+            

+            if (address != null) {

+                map = finalQNames;

+                isFinalAddressingNamespace = true;

+                

+                if (log.isDebugEnabled())

+                    log.debug("fromOM: Found address element for namespace, " + AddressingConstants.Final.WSA_NAMESPACE);                

+            }

+            else {

+                throw new AxisFault("Unable to locate an address element for the endpoint reference type.");

+            }

+        }

+        

+        //Second pass, identify the properties.

+        fromOM(epr, eprOMElement, map, isFinalAddressingNamespace);

+    }

+    

+    /**

+     * Populates an endpoint reference based on the <code>OMElement</code> that is

+     * passed in. If the http://schemas.xmlsoap.org/ws/2004/08/addressing namespace

+     * is in effect then any reference properties will be saved as reference parameters.

+     * Regardless of the addressing namespace in effect, any elements present in the

+     * <code>OMElement</code> that are not recognised are saved as extensibility elements.

+     * 

+     * @param eprOMElement an element of endpoint reference type 

+     * @throws AxisFault if unable to locate an address element

+     */

+    public static EndpointReference fromOM(OMElement eprOMElement) throws AxisFault {

+        EndpointReference epr = new EndpointReference("");

+        boolean isFinalAddressingNamespace = false;

+        Map map = null;

+        

+        //First pass, identify the addressing namespace.

+        OMElement address = eprOMElement.getFirstChildWithName((QName) finalQNames.get(AddressingConstants.EPR_ADDRESS));

+        

+        if (address != null) {

+            map = finalQNames;

+            isFinalAddressingNamespace = true;

+            

+            if (log.isDebugEnabled())

+                log.debug("fromOM: Found address element for namespace, " + AddressingConstants.Final.WSA_NAMESPACE);                

+        }

+        else {

+            address = eprOMElement.getFirstChildWithName((QName) submissionQNames.get(AddressingConstants.EPR_ADDRESS));

+            

+            if (address != null) {

+                map = submissionQNames;

+                isFinalAddressingNamespace = false;

+                

+                if (log.isDebugEnabled())

+                    log.debug("fromOM: Found address element for namespace, " + AddressingConstants.Submission.WSA_NAMESPACE);                

+            }

+            else {

+                throw new AxisFault("Unable to locate an address element for the endpoint reference type.");

+            }

+        }

+        

+        //Second pass, identify the properties.

+        fromOM(epr, eprOMElement, map, isFinalAddressingNamespace);

+        

+        return epr;

+    }

+    

+    /**

+     * Creates an <code>OMElement</code> based on the properties of the endpoint

+     * reference. The output may differ based on the addressing namespace that is

+     * in effect when this method is called. If the http://www.w3.org/2005/08/addressing

+     * namespace is in effect, and a metadata property has been defined for the

+     * endpoint reference, then there will be a metadata element to contain the

+     * property in the output. If the http://schemas.xmlsoap.org/ws/2004/08/addressing

+     * namespace is in effect, however, then no metadata element will be included

+     * in the output, even if a metadata property element has been defined.

+     * 

+     * @param factory

+     * @param epr

+     * @param qname

+     * @param addressingNamespace

+     * @return

+     * @throws AxisFault

+     */

+    public static OMElement toOM(OMFactory factory, EndpointReference epr, QName qname, String addressingNamespace) throws AxisFault {

+        OMElement eprElement = null;

+        

+        if (log.isDebugEnabled()) {

+            log.debug("toOM: Factory, " + factory);

+            log.debug("toOM: Endpoint reference, " + epr);

+            log.debug("toOM: Element qname, " + qname);

+            log.debug("toOM: Addressing namespace, " + addressingNamespace);

+        }

+        

+        if (qname.getPrefix() != null) {

+            OMNamespace wrapNs = factory.createOMNamespace(qname.getNamespaceURI(), qname.getPrefix());

+//Temp workaround to aviod hitting -  https://issues.apache.org/jira/browse/WSCOMMONS-103 

+//since Axis2 next release (1.1) will be based on Axiom 1.1 

+//We can get rid of this fix with the Axiom SNAPSHOT

+//            if (factory instanceof SOAPFactory)

+//                eprElement = ((SOAPFactory) factory).createSOAPHeaderBlock(qname.getLocalPart(), wrapNs);

+//            else

+                eprElement = factory.createOMElement(qname.getLocalPart(), wrapNs);

+            

+            OMNamespace wsaNS = factory.createOMNamespace(addressingNamespace, AddressingConstants.WSA_DEFAULT_PREFIX);

+            OMElement addressE = factory.createOMElement(AddressingConstants.EPR_ADDRESS, wsaNS, eprElement);

+            String address = epr.getAddress();

+            addressE.setText(address);

+            

+            List metaData = epr.getMetaData();

+            if (metaData != null && AddressingConstants.Final.WSA_NAMESPACE.equals(addressingNamespace)) {

+                OMElement metadataE = factory.createOMElement(AddressingConstants.Final.WSA_METADATA, wsaNS, eprElement);

+                for (int i = 0, size = metaData.size(); i < size; i++) {

+                    OMNode omNode = (OMNode) metaData.get(i);

+                    metadataE.addChild(omNode);

+                }

+            }

+

+            Map referenceParameters = epr.getAllReferenceParameters();

+            if (referenceParameters != null) {

+                OMElement refParameterElement = factory.createOMElement(AddressingConstants.EPR_REFERENCE_PARAMETERS, wsaNS, eprElement);

+                Iterator iterator = referenceParameters.values().iterator();

+                while (iterator.hasNext()) {

+                    OMNode omNode = (OMNode) iterator.next();

+                    refParameterElement.addChild(omNode);

+                }

+            }

+            

+            List attributes = epr.getAttributes();

+            if (attributes != null) {

+                for (int i = 0, size = attributes.size(); i < size; i++) {

+                    OMAttribute omAttribute = (OMAttribute) attributes.get(i);

+                    eprElement.addAttribute(omAttribute);

+                }

+            }

+            

+            // add xs:any

+            List extensibleElements = epr.getExtensibleElements();

+            if (extensibleElements != null) {

+                for (int i = 0, size = extensibleElements.size(); i < size; i++) {

+                    OMNode omNode = (OMNode) extensibleElements.get(i);

+                    eprElement.addChild(omNode);

+                }

+            }

+        } else {

+            throw new AxisFault("prefix must be specified");

+        }

+        

+        return eprElement;

+    }

+    

+    private static void fromOM(EndpointReference epr, OMElement eprOMElement, Map map, boolean isFinalAddressingNamespace) {

+        Iterator childElements = eprOMElement.getChildElements();

+        

+        while (childElements.hasNext()) {

+            OMElement eprChildElement = (OMElement) childElements.next();

+            QName qname = eprChildElement.getQName();

+            

+            if (map.get(AddressingConstants.EPR_ADDRESS).equals(qname)) {

+                //We need to identify the address element again in order to ensure

+                //that it is not included with the extensibility elements.

+                epr.setAddress(eprChildElement.getText());

+            }

+            else if (map.get(AddressingConstants.EPR_REFERENCE_PARAMETERS).equals(qname)) {

+                Iterator iterator = eprChildElement.getChildElements();

+                while (iterator.hasNext()) {

+                    OMElement element = (OMElement) iterator.next();

+                    epr.addReferenceParameter(element);

+                }

+            }

+            else if (isFinalAddressingNamespace &&

+                    map.get(AddressingConstants.Final.WSA_METADATA).equals(qname)) {

+                Iterator iterator = eprChildElement.getChildElements();

+                while (iterator.hasNext()) {

+                    OMNode node = (OMNode) iterator.next();

+                    epr.addMetaData(node);

+                }

+            }

+            else if (!isFinalAddressingNamespace &&

+                    map.get(AddressingConstants.Submission.EPR_REFERENCE_PROPERTIES).equals(qname)) {

+                // since we have the model for WS-Final, we don't have a place to keep this reference properties.

+                // The only compatible place is reference properties

+                Iterator iterator = eprChildElement.getChildElements();

+                while (iterator.hasNext()) {

+                    OMElement element = (OMElement) iterator.next();

+                    epr.addReferenceParameter(element);

+                }

+            }

+            else {

+                epr.addExtensibleElement(eprChildElement);

+            }

+        }

+

+        Iterator attributes = eprOMElement.getAllAttributes();

+        while (attributes.hasNext()) {

+            OMAttribute attribute = (OMAttribute) attributes.next();

+            epr.addAttribute(attribute);

+        }

+        

+        if (log.isDebugEnabled()) {

+            log.debug("fromOM: Endpoint reference, " + epr);

+        }

+    }

+

+    static {

+        finalQNames.put(AddressingConstants.EPR_ADDRESS, new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.EPR_ADDRESS));

+        finalQNames.put(AddressingConstants.EPR_REFERENCE_PARAMETERS, new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.EPR_REFERENCE_PARAMETERS));

+        finalQNames.put(AddressingConstants.Final.WSA_METADATA, new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.Final.WSA_METADATA));

+        

+        submissionQNames.put(AddressingConstants.EPR_ADDRESS, new QName(AddressingConstants.Submission.WSA_NAMESPACE, AddressingConstants.EPR_ADDRESS));

+        submissionQNames.put(AddressingConstants.EPR_REFERENCE_PARAMETERS, new QName(AddressingConstants.Submission.WSA_NAMESPACE, AddressingConstants.EPR_REFERENCE_PARAMETERS));

+        submissionQNames.put(AddressingConstants.Submission.EPR_REFERENCE_PROPERTIES, new QName(AddressingConstants.Submission.WSA_NAMESPACE, AddressingConstants.Submission.EPR_REFERENCE_PROPERTIES));

+    }

+}

diff --git a/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingFinalInHandler.java b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingFinalInHandler.java
new file mode 100644
index 0000000..3aae7d8
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingFinalInHandler.java
@@ -0,0 +1,84 @@
+package org.apache.axis2.handlers.addressing;

+

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.soap.SOAPHeader;

+import org.apache.axiom.soap.SOAPHeaderBlock;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.addressing.AddressingFaultsHelper;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.MessageContext;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+

+/*

+ * 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.

+ *

+ */

+

+public class AddressingFinalInHandler extends AddressingInHandler {

+

+    private static final Log log = LogFactory.getLog(AddressingFinalInHandler.class);

+    private static final long serialVersionUID = -4020680449342946484L;

+

+    public AddressingFinalInHandler() {

+        addressingNamespace = Final.WSA_NAMESPACE;

+        addressingVersion = "WS-Addressing Final";

+    }

+

+

+    protected void extractToEprReferenceParameters(EndpointReference toEPR, SOAPHeader header, String namespace) {

+        Iterator headerBlocks = header.getChildElements();

+        while (headerBlocks.hasNext()) {

+            SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) headerBlocks.next();

+            OMAttribute isRefParamAttr = soapHeaderBlock.getAttribute(new QName(namespace, "IsReferenceParameter"));

+            if (isRefParamAttr != null && "true".equals(isRefParamAttr.getAttributeValue())) {

+                toEPR.addReferenceParameter(soapHeaderBlock.getQName(), soapHeaderBlock.getText());

+            }

+        }

+    }

+

+    protected void checkForMandatoryHeaders(ArrayList alreadyFoundAddrHeader, MessageContext messageContext) throws AxisFault {

+        if (!alreadyFoundAddrHeader.contains(WSA_ACTION)) {

+            AddressingFaultsHelper.triggerMessageAddressingRequiredFault(messageContext, WSA_ACTION);

+        } 

+    }

+    

+    protected void setDefaults(ArrayList alreadyFoundAddrHeader, MessageContext messageContext) {

+        //According to the WS-Addressing spec, we should default the wsa:To header to the

+        //anonymous URL. Doing that, however, might prevent a different value from being

+        //used instead, such as the transport URL.

+        

+        if (!alreadyFoundAddrHeader.contains(WSA_REPLY_TO)) {

+            Options messageContextOptions = messageContext.getOptions();

+            EndpointReference epr = messageContextOptions.getReplyTo();

+            

+            if (epr == null) {

+                epr = new EndpointReference("");

+                messageContextOptions.setReplyTo(epr);

+            }

+            

+            if (log.isTraceEnabled())

+                log.trace("setDefaults: Setting WS-Addressing default value for the ReplyTo property.");

+            

+            epr.setAddress(Final.WSA_ANONYMOUS_URL);

+        }        

+    }

+}

diff --git a/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingHandler.java b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingHandler.java
new file mode 100644
index 0000000..f6bc9b9
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingHandler.java
@@ -0,0 +1,35 @@
+package org.apache.axis2.handlers.addressing;

+

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.handlers.AbstractHandler;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/*

+ * 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.

+ *

+ */

+

+public abstract class AddressingHandler extends AbstractHandler implements AddressingConstants {

+

+    // this parameter has to be set by the module deployer.

+    protected boolean isAddressingOptional = true;

+

+    protected String addressingNamespace = Final.WSA_NAMESPACE;  // defaulting to final version

+    protected String addressingVersion = null;

+

+    protected static final Log log = LogFactory.getLog(AddressingHandler.class);

+

+}

diff --git a/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
new file mode 100644
index 0000000..5198e0c
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
@@ -0,0 +1,301 @@
+/*
+ * Copyright 2004,2005 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.axis2.handlers.addressing;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.EndpointReferenceHelper;
+import org.apache.axis2.addressing.AddressingFaultsHelper;
+import org.apache.axis2.addressing.RelatesTo;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.util.JavaUtils;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public abstract class AddressingInHandler extends AddressingHandler implements AddressingConstants {
+
+    private static final long serialVersionUID = 3907988439637261572L;
+
+    private static final Log log = LogFactory.getLog(AddressingInHandler.class);
+    private static final boolean isDebugEnabled = log.isDebugEnabled();
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        // if another handler has already processed the addressing headers, do not do anything here.
+        if (JavaUtils.isTrueExplicitly(msgContext.getProperty(IS_ADDR_INFO_ALREADY_PROCESSED))) {
+            if(isDebugEnabled) {
+                log.debug("Another handler has processed the addressing headers. Nothing to do here.");
+            }
+
+            return InvocationResponse.CONTINUE;        
+        }
+        
+        // check whether someone has explicitly set which addressing handler should run.
+        String namespace = (String) msgContext.getProperty(WS_ADDRESSING_VERSION);
+        if (namespace == null) { 
+            namespace = addressingNamespace;
+        }
+        else if (!namespace.equals(addressingNamespace)) {
+            if(isDebugEnabled) {
+                log.debug("This addressing handler does not match the specified namespace, " + namespace);
+            }
+
+            return InvocationResponse.CONTINUE;        
+        }
+
+        SOAPHeader header = null;
+        if(msgContext.isHeaderPresent()) {
+            header = msgContext.getEnvelope().getHeader();
+        }
+        
+        // if there are not headers put a flag to disable addressing temporary
+        if (header == null) {
+            msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
+            return InvocationResponse.CONTINUE;        
+        }
+
+		if(isDebugEnabled) {
+			log.debug("Starting " + addressingVersion + " IN handler ...");
+		}
+
+        ArrayList addressingHeaders;
+        addressingHeaders = header.getHeaderBlocksWithNSURI(namespace);
+        if (addressingHeaders != null && addressingHeaders.size() > 0) {
+            msgContext.setProperty(WS_ADDRESSING_VERSION, namespace);
+            msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.FALSE);
+
+			if(isDebugEnabled) {
+				log.debug(addressingVersion + " Headers present in the SOAP message. Starting to process ...");
+			}
+            extractAddressingInformation(header, msgContext, addressingHeaders, namespace);
+            msgContext.setProperty(IS_ADDR_INFO_ALREADY_PROCESSED, Boolean.TRUE);
+        } else {
+            msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
+			if(isDebugEnabled) {
+				log.debug("No Headers present corresponding to " + addressingVersion);
+			}
+        }
+        return InvocationResponse.CONTINUE;        
+    }
+
+    protected Options extractAddressingInformation(SOAPHeader header, MessageContext messageContext,
+                                                   ArrayList addressingHeaders, String namespace) throws AxisFault {
+
+        Options messageContextOptions = messageContext.getOptions();
+        
+        ArrayList checkedHeaderNames = new ArrayList(7); // Up to 7 header names to be recorded
+        ArrayList duplicateHeaderNames = new ArrayList(1); // Normally will not be used for more than 1 header
+        
+        // Per the SOAP Binding spec "headers with an incorrect cardinality MUST NOT be used" So these variables
+        // are used to keep track of invalid cardinality headers so they are not deserialised.
+        boolean ignoreTo = false, ignoreFrom = false, ignoreReplyTo = false, ignoreFaultTo = false, ignoreMessageID = false, ignoreAction = false; 
+        
+        // First pass just check for duplicates
+        Iterator addressingHeadersIt = addressingHeaders.iterator();
+        while (addressingHeadersIt.hasNext()) {
+            SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) addressingHeadersIt.next();
+            if (SOAP12Constants.SOAP_ROLE_NONE.equals(soapHeaderBlock.getRole()))
+                continue;
+
+	        if (WSA_TO.equals(soapHeaderBlock.getLocalName())) {
+	            ignoreTo = checkDuplicateHeaders(WSA_TO, checkedHeaderNames, duplicateHeaderNames);
+	        } else if (WSA_FROM.equals(soapHeaderBlock.getLocalName())) {
+	            ignoreFrom = checkDuplicateHeaders(WSA_FROM, checkedHeaderNames, duplicateHeaderNames);
+	        } else if (WSA_REPLY_TO.equals(soapHeaderBlock.getLocalName())) {
+	            ignoreReplyTo = checkDuplicateHeaders(WSA_REPLY_TO, checkedHeaderNames, duplicateHeaderNames);
+	        } else if (WSA_FAULT_TO.equals(soapHeaderBlock.getLocalName())) {
+	            ignoreFaultTo = checkDuplicateHeaders(WSA_FAULT_TO, checkedHeaderNames, duplicateHeaderNames);
+	        } else if (WSA_MESSAGE_ID.equals(soapHeaderBlock.getLocalName())) {
+	            ignoreMessageID = checkDuplicateHeaders(WSA_MESSAGE_ID, checkedHeaderNames, duplicateHeaderNames);
+	        } else if (WSA_ACTION.equals(soapHeaderBlock.getLocalName())) {
+	            ignoreAction = checkDuplicateHeaders(WSA_ACTION, checkedHeaderNames, duplicateHeaderNames);
+	        }
+        }
+        
+        // Now extract information
+        Iterator addressingHeadersIt2 = addressingHeaders.iterator();
+        while (addressingHeadersIt2.hasNext()) {
+            SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) addressingHeadersIt2.next();
+            if (SOAP12Constants.SOAP_ROLE_NONE.equals(soapHeaderBlock.getRole()))
+                continue;
+            
+            if (WSA_TO.equals(soapHeaderBlock.getLocalName()) && !ignoreTo) {
+                extractToEPRInformation(soapHeaderBlock, messageContextOptions, header, namespace);
+            } else if (WSA_FROM.equals(soapHeaderBlock.getLocalName()) && !ignoreFrom) {
+                extractFromEPRInformation(soapHeaderBlock, namespace, messageContext);
+            } else if (WSA_REPLY_TO.equals(soapHeaderBlock.getLocalName()) && !ignoreReplyTo) {
+                extractReplyToEPRInformation(soapHeaderBlock, namespace, messageContext);
+            } else if (WSA_FAULT_TO.equals(soapHeaderBlock.getLocalName()) && !ignoreFaultTo) {
+                extractFaultToEPRInformation(soapHeaderBlock, namespace, messageContext);
+            } else if (WSA_MESSAGE_ID.equals(soapHeaderBlock.getLocalName()) && !ignoreMessageID) {
+                messageContextOptions.setMessageId(soapHeaderBlock.getText());
+                soapHeaderBlock.setProcessed();
+            } else if (WSA_ACTION.equals(soapHeaderBlock.getLocalName()) && !ignoreAction) {
+                extractActionInformation(soapHeaderBlock, namespace, messageContext);
+            } else if (WSA_RELATES_TO.equals(soapHeaderBlock.getLocalName())) {
+                extractRelatesToInformation(soapHeaderBlock, namespace, messageContextOptions);
+            }
+        }
+
+        // Now that all the valid wsa headers have been read, throw an exception if there was an invalid cardinality
+        // This means that if for example there are multiple MessageIDs and a FaultTo, the FaultTo will be respected.
+        if(!duplicateHeaderNames.isEmpty()){
+        	// Simply choose the first problem header we came across as we can only fault for one of them.
+            AddressingFaultsHelper.triggerInvalidCardinalityFault(messageContext, (String)duplicateHeaderNames.get(0));
+        }
+        
+        // check for the presence of madatory addressing headers
+        checkForMandatoryHeaders(checkedHeaderNames, messageContext);
+         
+        // provide default values for headers that have not been found.
+        setDefaults(checkedHeaderNames, messageContext);
+         
+        return messageContextOptions;
+    }
+    
+    protected abstract void checkForMandatoryHeaders(ArrayList alreadyFoundAddrHeader, MessageContext messageContext) throws AxisFault;
+
+    protected abstract void setDefaults(ArrayList alreadyFoundAddrHeader, MessageContext messageContext) throws AxisFault;
+
+    private boolean checkDuplicateHeaders(String addressingHeaderName, ArrayList checkedHeaderNames, ArrayList duplicateHeaderNames) {//throws AxisFault {
+    	// If the header name has been seen before then we should return true and add it to the list
+    	// of duplicate header names. Otherwise it is the first time we've seen the header so add it
+    	// to the checked liat and return false. 
+    	boolean shouldIgnore = checkedHeaderNames.contains(addressingHeaderName);
+    	if(shouldIgnore){
+    		duplicateHeaderNames.add(addressingHeaderName);
+    	}else{
+    		checkedHeaderNames.add(addressingHeaderName);
+    	}
+    	return shouldIgnore;
+    }
+
+    protected abstract void extractToEprReferenceParameters(EndpointReference toEPR, SOAPHeader header, String namespace);
+
+
+    private void extractRelatesToInformation(SOAPHeaderBlock soapHeaderBlock, String addressingNamespace, Options messageContextOptions) {
+        String address = soapHeaderBlock.getText();
+        OMAttribute relationshipType =
+                soapHeaderBlock.getAttribute(
+                        new QName(AddressingConstants.WSA_RELATES_TO_RELATIONSHIP_TYPE));
+        String relationshipTypeDefaultValue =
+                Submission.WSA_NAMESPACE.equals(addressingNamespace)
+                        ? Submission.WSA_DEFAULT_RELATIONSHIP_TYPE
+                        : Final.WSA_DEFAULT_RELATIONSHIP_TYPE;
+        RelatesTo relatesTo =
+                new RelatesTo(
+                        address,
+                        relationshipType == null
+                                ? relationshipTypeDefaultValue
+                                : relationshipType.getAttributeValue());
+        messageContextOptions.addRelatesTo(relatesTo);
+        soapHeaderBlock.setProcessed();
+    }
+
+    private void extractFaultToEPRInformation(SOAPHeaderBlock soapHeaderBlock, String addressingNamespace, MessageContext messageContext) throws AxisFault {
+        Options messageContextOptions = messageContext.getOptions();
+        EndpointReference epr = messageContextOptions.getFaultTo();
+        if (epr == null) {
+            epr = new EndpointReference("");
+            messageContextOptions.setFaultTo(epr);
+        }
+        extractEPRInformation(soapHeaderBlock, epr, addressingNamespace, messageContext);
+        soapHeaderBlock.setProcessed();
+    }
+
+    private void extractReplyToEPRInformation(SOAPHeaderBlock soapHeaderBlock, String addressingNamespace, MessageContext messageContext) throws AxisFault {
+        Options messageContextOptions = messageContext.getOptions();
+        EndpointReference epr = messageContextOptions.getReplyTo();
+        if (epr == null) {
+            epr = new EndpointReference("");
+            messageContextOptions.setReplyTo(epr);
+        }
+        extractEPRInformation(soapHeaderBlock, epr, addressingNamespace, messageContext);
+        soapHeaderBlock.setProcessed();
+    }
+
+    private void extractFromEPRInformation(SOAPHeaderBlock soapHeaderBlock, String addressingNamespace, MessageContext messageContext) throws AxisFault {
+        Options messageContextOptions = messageContext.getOptions();
+        EndpointReference epr = messageContextOptions.getFrom();
+        if (epr == null) {
+            epr = new EndpointReference("");  // I don't know the address now. Let me pass the empty string now and fill this
+            // once I process the Elements under this.
+            messageContextOptions.setFrom(epr);
+        }
+        extractEPRInformation(soapHeaderBlock, epr, addressingNamespace, messageContext);
+        soapHeaderBlock.setProcessed();
+    }
+
+    private void extractToEPRInformation(SOAPHeaderBlock soapHeaderBlock, Options messageContextOptions, SOAPHeader header, String namespace) {
+
+        EndpointReference epr;
+        //here the addressing epr overidde what ever already there in the message context
+        epr = new EndpointReference(soapHeaderBlock.getText());
+        messageContextOptions.setTo(epr);
+
+        // check for reference parameters
+        extractToEprReferenceParameters(epr, header, namespace);
+        soapHeaderBlock.setProcessed();
+
+    }
+    
+    //We assume that any action that already exists in the message context must be the
+    //soapaction. We compare that action to the WS-Addressing action, and if they are
+    //different we throw a fault.
+    private void extractActionInformation(SOAPHeaderBlock soapHeaderBlock, String addressingNamespace, MessageContext messageContext) throws AxisFault {
+        Options messageContextOptions = messageContext.getOptions();
+        String soapAction = messageContextOptions.getAction();
+        
+        if (soapAction != null && !"".equals(soapAction)) {
+            if (!soapAction.equals(soapHeaderBlock.getText())) {
+                AddressingFaultsHelper.triggerActionMismatchFault(messageContext);
+            }
+        }
+        else {
+            messageContextOptions.setAction(soapHeaderBlock.getText());            
+        }
+        
+        soapHeaderBlock.setProcessed();        
+    }
+
+    /**
+     * Given the soap header block, this should extract the information within EPR.
+     *
+     * @param headerBlock
+     * @param epr
+     * @param addressingNamespace
+     */
+    private void extractEPRInformation(SOAPHeaderBlock headerBlock, EndpointReference epr, String addressingNamespace, MessageContext messageContext) throws AxisFault {
+        try {
+            EndpointReferenceHelper.fromOM(epr, headerBlock, addressingNamespace);
+        }
+        catch (AxisFault af) {
+            AddressingFaultsHelper.triggerMissingAddressInEPRFault(messageContext, headerBlock.getLocalName());
+        }
+    }
+}
diff --git a/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
new file mode 100644
index 0000000..10415d8
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
@@ -0,0 +1,352 @@
+/*
+ * Copyright 2004,2005 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.axis2.handlers.addressing;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.util.ElementHelper;
+import org.apache.axiom.soap.SOAPConstants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPFault;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.AddressingFaultsHelper;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.EndpointReferenceHelper;
+import org.apache.axis2.addressing.RelatesTo;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.util.JavaUtils;
+
+import javax.xml.namespace.QName;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class AddressingOutHandler extends AddressingHandler {
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        // it should be able to disable addressing by some one.
+        Object property = msgContext.getProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        if (property != null && JavaUtils.isTrueExplicitly(property)) {
+            log.debug("Addressing is disabled .....");
+            return InvocationResponse.CONTINUE;        
+        }
+
+        Object addressingVersionFromCurrentMsgCtxt = msgContext.getProperty(WS_ADDRESSING_VERSION);
+        boolean isFinalAddressingNamespace = true;
+        String namespace = Final.WSA_NAMESPACE;
+        
+        if (Submission.WSA_NAMESPACE.equals(addressingVersionFromCurrentMsgCtxt)) {
+            isFinalAddressingNamespace = false;
+            namespace = Submission.WSA_NAMESPACE;
+        }
+        
+        SOAPFactory factory = (SOAPFactory) msgContext.getEnvelope().getOMFactory();
+        OMNamespace addressingNamespaceObject = factory.createOMNamespace(namespace, WSA_DEFAULT_PREFIX);
+
+        Options messageContextOptions = msgContext.getOptions();
+        SOAPEnvelope envelope = msgContext.getEnvelope();
+        SOAPHeader soapHeader = envelope.getHeader();
+
+        // if there is no soap header in the envelope being processed, add one.
+        if (soapHeader == null) {
+//            SOAPFactory soapFac = msgContext.isSOAP11() ? OMAbstractFactory.getSOAP11Factory() : OMAbstractFactory.getSOAP12Factory();
+            soapHeader = factory.createSOAPHeader(envelope);
+        }
+
+        // by this time, we definitely have some addressing information to be sent. This is because,
+        // we have tested at the start of this whether messageInformationHeaders are null or not.
+        // So rather than declaring addressing namespace in each and every addressing header, lets
+        // define that in the Header itself.
+        envelope.declareNamespace(addressingNamespaceObject);
+
+        // what if there are addressing headers already in the message. Do you replace that or not?
+        // Lets have a parameter to control that. The default behavior is you won't replace addressing
+        // headers if there are any (this was the case so far).
+        Object replaceHeadersParam = msgContext.getProperty(REPLACE_ADDRESSING_HEADERS);
+        boolean replaceHeaders = false;
+        if (replaceHeadersParam != null) {
+            replaceHeaders = JavaUtils.isTrueExplicitly(replaceHeadersParam);
+        }
+
+        // processing WSA To
+        processToEPR(messageContextOptions, envelope, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+
+        // processing WSA replyTo
+        processReplyTo(envelope, messageContextOptions, msgContext, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+        
+        // processing WSA From
+        processFromEPR(messageContextOptions, envelope, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+
+        // processing WSA FaultTo
+        processFaultToEPR(messageContextOptions, envelope, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+
+        String messageID = messageContextOptions.getMessageId();
+        if (messageID != null && !isAddressingHeaderAlreadyAvailable(WSA_MESSAGE_ID, envelope,
+                addressingNamespaceObject, replaceHeaders)) {//optional
+            processStringInfo(messageID, WSA_MESSAGE_ID, envelope, addressingNamespaceObject);
+        }
+
+        // processing WSA Action
+        processWSAAction(messageContextOptions, envelope, msgContext, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+
+        // processing WSA RelatesTo
+        processRelatesTo(envelope, messageContextOptions, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+
+        // process fault headers, if present
+        processFaultsInfoIfPresent(envelope, msgContext, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+        
+        // process mustUnderstand attribute, if required.
+        processMustUnderstandProperty(envelope, msgContext, addressingNamespaceObject);
+
+        return InvocationResponse.CONTINUE;        
+    }
+
+    private void processWSAAction(Options messageContextOptions, SOAPEnvelope envelope,
+                                  MessageContext msgCtxt, OMNamespace addressingNamespaceObject, boolean replaceHeaders, boolean isFinalAddressingNamespace) {
+        String action = messageContextOptions.getAction();
+        if(action == null || "".equals(action)){
+            if(msgCtxt.getAxisOperation()!=null){
+                action = msgCtxt.getAxisOperation().getOutputAction();
+            }
+        }
+        
+        if (Final.WSA_FAULT_ACTION.equals(action) || Submission.WSA_FAULT_ACTION.equals(action)) {
+            action = isFinalAddressingNamespace ? Final.WSA_FAULT_ACTION : Submission.WSA_FAULT_ACTION;
+        }
+        else if (Final.WSA_SOAP_FAULT_ACTION.equals(action) && !isFinalAddressingNamespace) {
+            action = Submission.WSA_FAULT_ACTION;
+        }
+        
+        if (action != null && !isAddressingHeaderAlreadyAvailable(WSA_ACTION, envelope,
+                addressingNamespaceObject, replaceHeaders)) {
+            processStringInfo(action, WSA_ACTION, envelope, addressingNamespaceObject);
+        }
+    }
+
+    private void processFaultsInfoIfPresent(SOAPEnvelope envelope, MessageContext msgContext, OMNamespace addressingNamespaceObject, boolean replaceHeaders, boolean isFinalAddressingNamespace) {
+        OMElement detailElement = AddressingFaultsHelper.getDetailElementForAddressingFault(msgContext, addressingNamespaceObject);
+        if(detailElement != null){
+            //The difference between SOAP 1.1 and SOAP 1.2 fault messages is explained in the WS-Addressing Specs.
+            if(msgContext.isSOAP11() && isFinalAddressingNamespace){
+                // Add detail as a wsa:FaultDetail header
+                if (!isAddressingHeaderAlreadyAvailable(Final.FAULT_HEADER_DETAIL, envelope, addressingNamespaceObject, replaceHeaders)) {
+                    SOAPHeaderBlock faultDetail = envelope.getHeader().addHeaderBlock(Final.FAULT_HEADER_DETAIL, addressingNamespaceObject);
+                    faultDetail.addChild(detailElement);
+                }
+            }
+            else if (!msgContext.isSOAP11()) {
+                // Add detail to the Fault in the SOAP Body
+                SOAPFault fault = envelope.getBody().getFault();
+                if (fault != null && fault.getDetail() != null) {
+                    fault.getDetail().addDetailEntry(detailElement);
+                }
+            }
+        }
+    }
+
+    private void processRelatesTo(SOAPEnvelope envelope, Options messageContextOptions, OMNamespace addressingNamespaceObject, boolean replaceHeaders, boolean isFinalAddressingNamespace) {
+        if (!isAddressingHeaderAlreadyAvailable(WSA_RELATES_TO, envelope, addressingNamespaceObject, replaceHeaders))
+        {
+            RelatesTo[] relatesTo = messageContextOptions.getRelationships();
+
+            if (relatesTo != null) {
+                for (int i = 0, length = relatesTo.length; i < length; i++) {
+                    OMElement relatesToHeader = processStringInfo(relatesTo[i].getValue(),
+                                    WSA_RELATES_TO, envelope, addressingNamespaceObject);
+                    String relationshipType = relatesTo[i].getRelationshipType();
+
+                    if (relatesToHeader != null) {
+                        if (Final.WSA_DEFAULT_RELATIONSHIP_TYPE.equals(relationshipType) ||
+                            Submission.WSA_DEFAULT_RELATIONSHIP_TYPE.equals(relationshipType)) {
+                            relationshipType = isFinalAddressingNamespace ?
+                                    Final.WSA_DEFAULT_RELATIONSHIP_TYPE : Submission.WSA_DEFAULT_RELATIONSHIP_TYPE;
+                        }
+                        
+                        relatesToHeader.addAttribute(WSA_RELATES_TO_RELATIONSHIP_TYPE,
+                                relationshipType,
+                                addressingNamespaceObject);
+                    }
+                }
+            }
+        }
+    }
+
+    private void processFaultToEPR(Options messageContextOptions, SOAPEnvelope envelope, OMNamespace addressingNamespaceObject, boolean replaceHeaders, boolean isFinalAddressingNamespace) throws AxisFault {
+        EndpointReference epr = messageContextOptions.getFaultTo();
+        String headerName = AddressingConstants.WSA_FAULT_TO;
+        
+        //Omit the header if the epr is null.
+        if (epr != null && !isAddressingHeaderAlreadyAvailable(headerName, envelope, addressingNamespaceObject, replaceHeaders)) {
+            addToSOAPHeader(epr, headerName, envelope, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+        }
+    }
+
+    private void processFromEPR(Options messageContextOptions, SOAPEnvelope envelope, OMNamespace addressingNamespaceObject, boolean replaceHeaders, boolean isFinalAddressingNamespace) throws AxisFault {
+        EndpointReference epr = messageContextOptions.getFrom();
+        String headerName = AddressingConstants.WSA_FROM;
+        
+        //Omit the header if the epr is null.
+        if (epr != null && !isAddressingHeaderAlreadyAvailable(headerName, envelope, addressingNamespaceObject, replaceHeaders)) {
+            addToSOAPHeader(epr, headerName, envelope, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);
+        }
+    }
+
+    private void processReplyTo(SOAPEnvelope envelope, Options messageContextOptions, MessageContext msgContext, OMNamespace addressingNamespaceObject, boolean replaceHeaders, boolean isFinalAddressingNamespace) throws AxisFault {
+        EndpointReference epr = messageContextOptions.getReplyTo();
+        String headerName = AddressingConstants.WSA_REPLY_TO;
+        
+        //Don't check epr for null here as addToSOAPHeader() will provide an appropriate default.
+        //This default is especially useful for client side outbound processing.
+        if (!isAddressingHeaderAlreadyAvailable(headerName, envelope, addressingNamespaceObject, replaceHeaders)) {
+            addToSOAPHeader(epr, headerName, envelope, addressingNamespaceObject, replaceHeaders, isFinalAddressingNamespace);            
+        }
+    }
+
+    private void processToEPR(Options messageContextOptions, SOAPEnvelope envelope, OMNamespace addressingNamespaceObject, boolean replaceHeaders, boolean isFinalAddressingNamespace) {
+        EndpointReference epr = messageContextOptions.getTo();
+        if (epr != null && !isAddressingHeaderAlreadyAvailable(WSA_TO, envelope, addressingNamespaceObject, replaceHeaders))
+        {
+            Map referenceParameters = epr.getAllReferenceParameters();
+            String address = epr.getAddress();
+
+            if (!"".equals(address) && address != null) {
+                SOAPHeaderBlock toHeaderBlock = envelope.getHeader().addHeaderBlock(WSA_TO, addressingNamespaceObject);
+                toHeaderBlock.setText(address);
+            }
+            processToEPRReferenceInformation(referenceParameters, envelope.getHeader(), addressingNamespaceObject, isFinalAddressingNamespace);
+        }
+    }
+
+
+    private OMElement processStringInfo(String value,
+                                        String headerName,
+                                        SOAPEnvelope soapEnvelope, OMNamespace addressingNamespaceObject) {
+        if (!"".equals(value) && value != null) {
+            SOAPHeaderBlock soapHeaderBlock =
+                    soapEnvelope.getHeader().addHeaderBlock(headerName, addressingNamespaceObject);
+            soapHeaderBlock.addChild(
+                    soapEnvelope.getOMFactory().createOMText(value));
+            return soapHeaderBlock;
+        }
+        return null;
+    }
+
+    private void addToSOAPHeader(EndpointReference epr,
+                                 String headerName,
+                                 SOAPEnvelope envelope, OMNamespace addressingNamespaceObject, boolean replaceHeaders, boolean isFinalAddressingNamespace) throws AxisFault {
+        String namespace = addressingNamespaceObject.getNamespaceURI();
+        String prefix = addressingNamespaceObject.getPrefix();
+        String anonymous = isFinalAddressingNamespace ?
+                Final.WSA_ANONYMOUS_URL : Submission.WSA_ANONYMOUS_URL;
+
+        if (epr == null) {
+            epr = new EndpointReference(anonymous);
+        }
+        else if (epr.hasNoneAddress() && !isFinalAddressingNamespace) {
+            return; //Omit the header.
+        }
+        else if (epr.hasAnonymousAddress()) {
+            epr.setAddress(anonymous);
+        }
+
+        OMElement soapHeaderBlock = EndpointReferenceHelper.toOM(envelope.getOMFactory(), 
+                                        epr, 
+                                        new QName(namespace, headerName, prefix), namespace);
+        envelope.getHeader().addChild(soapHeaderBlock);
+    }
+
+    /**
+     * This will add reference parameters and/or reference properties in to the message
+     *
+     * @param referenceInformation
+     */
+    private void processToEPRReferenceInformation(Map referenceInformation, OMElement parent, OMNamespace addressingNamespaceObject, boolean isFinalAddressingNamespace) {
+        if (referenceInformation != null && parent != null) {
+            Iterator iterator = referenceInformation.keySet().iterator();
+            while (iterator.hasNext()) {
+                QName key = (QName) iterator.next();
+                OMElement omElement = (OMElement) referenceInformation.get(key);
+                parent.addChild(ElementHelper.importOMElement(omElement, parent.getOMFactory()));
+
+                if (isFinalAddressingNamespace) {
+                    omElement.addAttribute(Final.WSA_IS_REFERENCE_PARAMETER_ATTRIBUTE, Final.WSA_TYPE_ATTRIBUTE_VALUE,
+                            addressingNamespaceObject);
+                }
+            }
+        }
+    }
+
+    /**
+     * This will check for the existence of message information headers already in the message. If there are already headers,
+     * then replacing them or not depends on the replaceHeaders property.
+     *
+     * @param name - Name of the message information header
+     * @param envelope
+     * @param addressingNamespaceObject - namespace object of addressing representing the addressing version being used
+     * @param replaceHeaders - determines whether we replace the existing headers or not, if they present
+     * @return false - if one can add new headers, true - if one should not touch them.
+     */
+    private boolean isAddressingHeaderAlreadyAvailable(String name, SOAPEnvelope envelope, OMNamespace addressingNamespaceObject, boolean replaceHeaders) {
+        OMElement addressingHeader = envelope.getHeader().getFirstChildWithName(new QName(addressingNamespaceObject.getNamespaceURI(), name, addressingNamespaceObject.getPrefix()));
+
+        if (addressingHeader != null && replaceHeaders) {
+            addressingHeader.detach();
+            return false;
+        }
+
+        return addressingHeader != null;
+    }
+    
+    /**
+     * Sets a mustUnderstand="1" attribute on all headers that are found with the appropriate
+     * addressing namespace.
+     * 
+     * @param envelope
+     * @param msgContext
+     * @param addressingNamespaceObject
+     */
+    private void processMustUnderstandProperty(SOAPEnvelope envelope, MessageContext msgContext, OMNamespace addressingNamespaceObject) {
+        Object flag = msgContext.getProperty(AddressingConstants.ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS);
+        if (JavaUtils.isTrueExplicitly(flag)) {
+            List headers = envelope.getHeader().getHeaderBlocksWithNSURI(addressingNamespaceObject.getNamespaceURI());
+            Iterator iterator = headers.iterator();
+
+            while (iterator.hasNext()) {
+                OMElement elem = (OMElement)iterator.next();
+                if(elem instanceof SOAPHeaderBlock) {
+                    SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) elem;
+                    soapHeaderBlock.setMustUnderstand(true);  
+                } else {
+//                  Temp workaround to aviod hitting -  https://issues.apache.org/jira/browse/WSCOMMONS-103 
+//                  since Axis2 next release (1.1) will be based on Axiom 1.1 
+//                  We can get rid of this fix with the Axiom SNAPSHOT
+                    elem.addAttribute(SOAPConstants.ATTR_MUSTUNDERSTAND,
+                             "1",
+                            envelope.getNamespace());
+                }
+                
+            }
+        }
+    }
+}
+
diff --git a/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandler.java b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandler.java
new file mode 100644
index 0000000..7a31b70
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandler.java
@@ -0,0 +1,88 @@
+package org.apache.axis2.handlers.addressing;

+

+import org.apache.axiom.soap.SOAPHeader;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.AddressingFaultsHelper;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.MessageContext;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.util.ArrayList;

+

+/*

+ * 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.

+ *

+ */

+

+public class AddressingSubmissionInHandler extends AddressingInHandler {

+

+    private static final Log log = LogFactory.getLog(AddressingSubmissionInHandler.class);

+    private static final long serialVersionUID = 365417374773955107L;

+

+    public AddressingSubmissionInHandler() {

+        addressingNamespace = Submission.WSA_NAMESPACE;

+        addressingVersion = "WS-Addressing Submission";

+    }

+

+

+    protected void extractToEprReferenceParameters(EndpointReference toEPR, SOAPHeader header, String namespace) {

+        // there is no exact way to identify ref parameters for Submission version. So let's have a handler

+        // at the end of the flow, which puts all the handlers (which are of course mustUnderstand=false)

+        // as reference parameters

+

+        // TODO : Chinthaka

+    }

+

+    protected void checkForMandatoryHeaders(ArrayList alreadyFoundAddrHeader, MessageContext messageContext) throws AxisFault {

+        if (!alreadyFoundAddrHeader.contains(WSA_TO)) {

+            // Should write a new SubmissionFaults class but for the moment use the FinalFaults

+            AddressingFaultsHelper.triggerMessageAddressingRequiredFault(messageContext, WSA_TO);

+        }

+        

+        if (!alreadyFoundAddrHeader.contains(WSA_ACTION)) {

+            AddressingFaultsHelper.triggerMessageAddressingRequiredFault(messageContext, WSA_ACTION);

+        }

+        

+        if (alreadyFoundAddrHeader.contains(WSA_REPLY_TO) ||

+            alreadyFoundAddrHeader.contains(WSA_FAULT_TO)) {

+            

+            if (!alreadyFoundAddrHeader.contains(WSA_MESSAGE_ID)) {

+                AddressingFaultsHelper.triggerMessageAddressingRequiredFault(messageContext, WSA_MESSAGE_ID);

+            }

+        }

+    }

+    

+    protected void setDefaults(ArrayList alreadyFoundAddrHeader, MessageContext messageContext) {

+        //The none URI is not defined in the 2004/08 spec, but it is used here anyway

+        //as a flag to indicate the correct semantics to apply, i.e. in the 2004/08 spec

+        //the absence of a ReplyTo header indicates that a response is NOT required.

+        if (!alreadyFoundAddrHeader.contains(WSA_REPLY_TO)) {

+            Options messageContextOptions = messageContext.getOptions();

+            EndpointReference epr = messageContextOptions.getReplyTo();

+            

+            if (epr == null) {

+                epr = new EndpointReference("");

+                messageContextOptions.setReplyTo(epr);

+            }

+            

+            if (log.isTraceEnabled())

+                log.trace("setDefaults: Setting WS-Addressing default value for the ReplyTo property.");

+            

+            epr.setAddress(Final.WSA_NONE_URI);

+        }        

+    }

+}

diff --git a/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingWSDLValidationHandler.java b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingWSDLValidationHandler.java
new file mode 100644
index 0000000..7371046
--- /dev/null
+++ b/rampart_1_1/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingWSDLValidationHandler.java
@@ -0,0 +1,113 @@
+/*
+* Copyright 2004,2005 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.axis2.handlers.addressing;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.AddressingHelper;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.AddressingFaultsHelper;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class AddressingWSDLValidationHandler extends AbstractHandler implements AddressingConstants {
+
+    private static final Log log = LogFactory.getLog(AddressingWSDLValidationHandler.class);
+    
+    /* (non-Javadoc)
+     * @see org.apache.axis2.engine.Handler#invoke(org.apache.axis2.context.MessageContext)
+     */
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+    	// If no AxisOperation has been found at the end of the dispatch phase and addressing
+        // is in use we should throw an ActionNotSupported Fault
+        checkAction(msgContext);
+        // Check that if wsaddressing=required that addressing headers were found inbound
+        checkUsingAddressing(msgContext);
+        // Check that if anonymous flag is in effect that the replyto and faultto are valid
+        //checkAnonymous(msgContext);
+        return InvocationResponse.CONTINUE;        
+    }
+    
+    /**
+     * Check that if the wsaddressing="required" attribute exists on the service
+     * definition or <wsaw:UsingAddressing wsdl:required="true" /> was found in the
+     * WSDL that WS-Addressing headers were found on the inbound message
+     */
+    private void checkUsingAddressing(MessageContext msgContext)
+            throws AxisFault {
+        String addressingFlag = msgContext.getAxisService().getWSAddressingFlag();
+        if (log.isTraceEnabled())
+            log.trace("checkUsingAddressing: WSAddressingFlag=" + addressingFlag);
+        if (AddressingConstants.ADDRESSING_REQUIRED.equals(addressingFlag)) {
+            Object flag = msgContext.getProperty(AddressingConstants.IS_ADDR_INFO_ALREADY_PROCESSED);
+            if (log.isTraceEnabled())
+                log.trace("checkUsingAddressing: IS_ADDR_INFO_ALREADY_PROCESSED=" + flag);
+            if (JavaUtils.isFalseExplicitly(flag)) {
+                AddressingFaultsHelper.triggerMessageAddressingRequiredFault(msgContext,AddressingConstants.WSA_ACTION);
+            }
+        }
+    }
+    
+    /**
+     * Check that if a wsaw:Anonymous value was set on the AxisOperation that the values in the
+     * ReplyTo+FaultTo are valid and fault if not.
+     */
+    private void checkAnonymous(MessageContext msgContext) throws AxisFault {
+        String anonymous = AddressingHelper.getAnonymousParameterValue(msgContext.getAxisOperation());
+        if (log.isTraceEnabled())
+            log.trace("checkAnonymous: Anonymous=" + anonymous);
+        if("required".equals(anonymous)){
+            if(AddressingHelper.isReplyRedirected(msgContext)){
+                EndpointReference anonEPR = new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+                msgContext.setReplyTo(anonEPR);
+                msgContext.setFaultTo(anonEPR);
+                AddressingFaultsHelper.triggerOnlyAnonymousAddressSupportedFault(msgContext, AddressingConstants.WSA_REPLY_TO);
+            }
+            if(AddressingHelper.isFaultRedirected(msgContext)){
+                EndpointReference anonEPR = new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+                msgContext.setReplyTo(anonEPR);
+                msgContext.setFaultTo(anonEPR);
+                AddressingFaultsHelper.triggerOnlyAnonymousAddressSupportedFault(msgContext, AddressingConstants.WSA_FAULT_TO);
+            }
+        }else if("prohibited".equals(anonymous)){
+            if(!AddressingHelper.isReplyRedirected(msgContext)){
+                AddressingFaultsHelper.triggerOnlyNonAnonymousAddressSupportedFault(msgContext, AddressingConstants.WSA_REPLY_TO);
+            }
+            if(!AddressingHelper.isFaultRedirected(msgContext)){
+                AddressingFaultsHelper.triggerOnlyNonAnonymousAddressSupportedFault(msgContext, AddressingConstants.WSA_FAULT_TO);
+            }
+        }
+    }
+    
+    /**
+     * If addressing was found and the dispatch failed we SHOULD (and hence will) return a
+     * WS-Addressing ActionNotSupported fault. This will make more sense once the AddressingBasedDsipatcher
+     * is moved into the addressing module
+     */
+    private void checkAction(MessageContext msgContext) throws AxisFault{
+        Object flag = msgContext.getProperty(AddressingConstants.IS_ADDR_INFO_ALREADY_PROCESSED);
+        if (log.isTraceEnabled())
+            log.trace("checkAction: IS_ADDR_INFO_ALREADY_PROCESSED=" + flag);
+        if(JavaUtils.isTrueExplicitly(flag)){
+            if((msgContext.getAxisService() == null) || (msgContext.getAxisOperation() == null)){
+                AddressingFaultsHelper.triggerActionNotSupportedFault(msgContext, msgContext.getWSAAction());
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/addressing/test-resources/OutHandlerTest.xml b/rampart_1_1/modules/addressing/test-resources/OutHandlerTest.xml
new file mode 100644
index 0000000..704322c
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/OutHandlerTest.xml
@@ -0,0 +1,20 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+    <soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:myRef="http://reference.org">
+        <wsa:From>
+            <wsa:Address>http://www.from.org/service/</wsa:Address>
+            <wsa:ReferenceParameters>
+                <Reference2>Value 200</Reference2>
+            </wsa:ReferenceParameters>
+        </wsa:From>
+        <wsa:To>http://www.to.org/service/</wsa:To>
+        <wsa:MessageID>123456-7890</wsa:MessageID>
+        <myRef:Reference4>Value 400</myRef:Reference4>
+        <myRef:Reference3>Value 300</myRef:Reference3>
+        <wsa:Action>http://www.actions.org/action</wsa:Action>
+        <wsa:ReplyTo>
+            <wsa:Address>http://www.replyTo.org/service/</wsa:Address>
+        </wsa:ReplyTo>
+        <wsa:RelatesTo wsa:RelationshipType="TestRelation">http://www.relatesTo.org/service/</wsa:RelatesTo>
+    </soapenv:Header>
+    <soapenv:Body></soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/addressing/test-resources/axis2.xml b/rampart_1_1/modules/addressing/test-resources/axis2.xml
new file mode 100644
index 0000000..0749d6c
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/axis2.xml
@@ -0,0 +1,64 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+    <module ref="addressing"/>
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/addressing/test-resources/eprTest.xml b/rampart_1_1/modules/addressing/test-resources/eprTest.xml
new file mode 100644
index 0000000..4a24587
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/eprTest.xml
@@ -0,0 +1,15 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+    <soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
+        <wsa:Reference4>Value 400</wsa:Reference4>
+        <wsa:Reference1>Value 100</wsa:Reference1>
+        <wsa:Reference0>Value 0</wsa:Reference0>
+        <wsa:Reference2>Value 200</wsa:Reference2>
+        <wsa:Reference3>Value 300</wsa:Reference3>
+        <wsa:To>http://www.to.org/service/</wsa:To>
+        <wsa:ReplyTo>
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+        </wsa:ReplyTo>
+    </soapenv:Header>
+    <soapenv:Body></soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityActionMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityActionMessage.xml
new file mode 100644
index 0000000..d725be3
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityActionMessage.xml
@@ -0,0 +1,53 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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://www.w3.org/2005/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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">
+            <wsa:Address>
+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityFaultToMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityFaultToMessage.xml
new file mode 100644
index 0000000..9ebc1b1
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityFaultToMessage.xml
@@ -0,0 +1,55 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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://www.w3.org/2005/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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">
+            <wsa:Address>
+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityFromMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityFromMessage.xml
new file mode 100644
index 0000000..2af1a18
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityFromMessage.xml
@@ -0,0 +1,56 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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://www.w3.org/2005/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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">
+            <wsa:Address>
+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+        </wsa:From>
+        <wsa:From soapenv:mustUnderstand="0">
+            <wsa:Address>
+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityMessageIDMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityMessageIDMessage.xml
new file mode 100644
index 0000000..7d2fb36
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityMessageIDMessage.xml
@@ -0,0 +1,54 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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://www.w3.org/2005/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <wsa:MessageID soapenv:mustUnderstand="0">
+            uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>
+        <wsa:MessageID soapenv:mustUnderstand="0">
+            uuid:820C5190-0B8F-11D9-8DDD-F67EDEEBF7Z6</wsa:MessageID>
+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From soapenv:mustUnderstand="0">
+            <wsa:Address>
+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityReplyToMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityReplyToMessage.xml
new file mode 100644
index 0000000..e386f9d
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityReplyToMessage.xml
@@ -0,0 +1,58 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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://www.w3.org/2005/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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">
+            <wsa:Address>
+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct2</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityToMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityToMessage.xml
new file mode 100644
index 0000000..4dd66c9
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/final/invalidCardinalityToMessage.xml
@@ -0,0 +1,53 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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://www.w3.org/2005/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From soapenv:mustUnderstand="0">
+            <wsa:Address>
+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityActionMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityActionMessage.xml
new file mode 100644
index 0000000..a214d88
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityActionMessage.xml
@@ -0,0 +1,53 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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">
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityFaultToMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityFaultToMessage.xml
new file mode 100644
index 0000000..2b2cb59
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityFaultToMessage.xml
@@ -0,0 +1,55 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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">
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityFromMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityFromMessage.xml
new file mode 100644
index 0000000..37c433a
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityFromMessage.xml
@@ -0,0 +1,56 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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">
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <wsa:From soapenv:mustUnderstand="0">
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityMessageIDMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityMessageIDMessage.xml
new file mode 100644
index 0000000..d6e7e29
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityMessageIDMessage.xml
@@ -0,0 +1,54 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <wsa:MessageID soapenv:mustUnderstand="0">
+            uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>
+        <wsa:MessageID soapenv:mustUnderstand="0">
+            uuid:820C5190-0B8F-11D9-8DDD-F67EDEEBF7Z6</wsa:MessageID>
+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From soapenv:mustUnderstand="0">
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityReplyToMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityReplyToMessage.xml
new file mode 100644
index 0000000..8bffa32
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityReplyToMessage.xml
@@ -0,0 +1,58 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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">
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct2</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityToMessage.xml b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityToMessage.xml
new file mode 100644
index 0000000..7305ada
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/invalid-cardinality-messages/submission/invalidCardinalityToMessage.xml
@@ -0,0 +1,53 @@
+<!--
+ Copyright 2004,2005 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.
+ -->
+<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/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From soapenv:mustUnderstand="0">
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:FaultTo>
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+        </wsa:FaultTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
diff --git a/rampart_1_1/modules/addressing/test-resources/mustUnderstandTest.xml b/rampart_1_1/modules/addressing/test-resources/mustUnderstandTest.xml
new file mode 100644
index 0000000..af2d40e
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/mustUnderstandTest.xml
@@ -0,0 +1,20 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

+    <soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:myRef="http://reference.org">

+        <wsa:From soapenv:mustUnderstand="1">

+            <wsa:Address>http://www.from.org/service/</wsa:Address>

+            <wsa:ReferenceParameters>

+                <Reference2>Value 200</Reference2>

+            </wsa:ReferenceParameters>

+        </wsa:From>

+        <wsa:To soapenv:mustUnderstand="1">http://www.to.org/service/</wsa:To>

+        <wsa:MessageID soapenv:mustUnderstand="1">123456-7890</wsa:MessageID>

+        <myRef:Reference4>Value 400</myRef:Reference4>

+        <myRef:Reference3>Value 300</myRef:Reference3>

+        <wsa:Action soapenv:mustUnderstand="1">http://www.actions.org/action</wsa:Action>

+        <wsa:ReplyTo soapenv:mustUnderstand="1">

+            <wsa:Address>http://www.replyTo.org/service/</wsa:Address>

+        </wsa:ReplyTo>

+        <wsa:RelatesTo soapenv:mustUnderstand="1" wsa:RelationshipType="TestRelation">http://www.relatesTo.org/service/</wsa:RelatesTo>

+    </soapenv:Header>

+    <soapenv:Body></soapenv:Body>

+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noActionMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noActionMessage.xml
new file mode 100644
index 0000000..2821120
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noActionMessage.xml
@@ -0,0 +1,51 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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://www.w3.org/2005/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <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">

+            <wsa:Address>

+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noFaultToMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noFaultToMessage.xml
new file mode 100644
index 0000000..4e2dfa8
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noFaultToMessage.xml
@@ -0,0 +1,49 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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://www.w3.org/2005/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <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">

+            <wsa:Address>

+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noFromMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noFromMessage.xml
new file mode 100644
index 0000000..7456dc7
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noFromMessage.xml
@@ -0,0 +1,48 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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://www.w3.org/2005/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <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>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noMessageIDMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noMessageIDMessage.xml
new file mode 100644
index 0000000..ddeabc8
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noMessageIDMessage.xml
@@ -0,0 +1,50 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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://www.w3.org/2005/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>

+        <wsa:From soapenv:mustUnderstand="0">

+            <wsa:Address>

+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noReplyToMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noReplyToMessage.xml
new file mode 100644
index 0000000..01666d9
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noReplyToMessage.xml
@@ -0,0 +1,45 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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://www.w3.org/2005/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <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">

+            <wsa:Address>

+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noToMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noToMessage.xml
new file mode 100644
index 0000000..56110b1
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/final/noToMessage.xml
@@ -0,0 +1,49 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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://www.w3.org/2005/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <wsa:MessageID soapenv:mustUnderstand="0">

+            uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>

+        <wsa:From soapenv:mustUnderstand="0">

+            <wsa:Address>

+                http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>

+        </wsa:From>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noActionMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noActionMessage.xml
new file mode 100644
index 0000000..e681e98
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noActionMessage.xml
@@ -0,0 +1,51 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <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">

+            <wsa:Address>

+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noFaultToMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noFaultToMessage.xml
new file mode 100644
index 0000000..e8d7754
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noFaultToMessage.xml
@@ -0,0 +1,49 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <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">

+            <wsa:Address>

+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noFromMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noFromMessage.xml
new file mode 100644
index 0000000..65192ff
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noFromMessage.xml
@@ -0,0 +1,48 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <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>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noMessageIDMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noMessageIDMessage.xml
new file mode 100644
index 0000000..0fa31dd
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noMessageIDMessage.xml
@@ -0,0 +1,50 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>

+        <wsa:From soapenv:mustUnderstand="0">

+            <wsa:Address>

+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noMessageIDNoReplyToNoFaultToMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noMessageIDNoReplyToNoFaultToMessage.xml
new file mode 100644
index 0000000..e76da60
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noMessageIDNoReplyToNoFaultToMessage.xml
@@ -0,0 +1,40 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>

+        <wsa:From soapenv:mustUnderstand="0">

+            <wsa:Address>

+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noReplyToMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noReplyToMessage.xml
new file mode 100644
index 0000000..314ad4f
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noReplyToMessage.xml
@@ -0,0 +1,45 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <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">

+            <wsa:Address>

+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

+        </wsa:From>

+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>

+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noToMessage.xml b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noToMessage.xml
new file mode 100644
index 0000000..12cbcd2
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/omitted-header-messages/submission/noToMessage.xml
@@ -0,0 +1,49 @@
+<!--

+ Copyright 2006 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.

+ -->

+<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/08/addressing">

+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">

+        <wsa:MessageID soapenv:mustUnderstand="0">

+            uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>

+        <wsa:From soapenv:mustUnderstand="0">

+            <wsa:Address>

+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

+        </wsa:From>

+        <wsa:ReplyTo>

+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>

+            <wsa:ReferenceParameters>

+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+            </wsa:ReferenceParameters>

+        </wsa:ReplyTo>

+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>

+        <wsa:FaultTo>

+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>

+        </wsa:FaultTo>

+    </soapenv:Header>

+    <soapenv:Body>

+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">

+            <accountNo href="#id0"/>

+        </ns1:getBalance>

+        <multiRef id="id0" soapenc:root="0"

+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

+            1001</multiRef>

+    </soapenv:Body>

+</soapenv:Envelope>

diff --git a/rampart_1_1/modules/addressing/test-resources/valid-messages/final/soapmessage.xml b/rampart_1_1/modules/addressing/test-resources/valid-messages/final/soapmessage.xml
new file mode 100644
index 0000000..f064bf5
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/valid-messages/final/soapmessage.xml
@@ -0,0 +1,58 @@
+<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://www.w3.org/2005/08/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <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" axis2:AttrExt="123456789">
+            <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+             <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+            <wsa:Metadata>
+            	<axis2:MetaExt axis2:AttrExt="123456789">123456789</axis2:MetaExt>
+            </wsa:Metadata>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:ReplyTo axis2:AttrExt="123456789">
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+             <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+            <wsa:Metadata>
+            	<axis2:MetaExt axis2:AttrExt="123456789">123456789</axis2:MetaExt>
+            </wsa:Metadata>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:ReplyTo>
+        <wsa:FaultTo axis2:AttrExt="123456789">
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+             <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+            <wsa:Metadata>
+            	<axis2:MetaExt axis2:AttrExt="123456789">123456789</axis2:MetaExt>
+            </wsa:Metadata>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:FaultTo>
+        <wsa:RelatesTo>http://some.previous.message</wsa:RelatesTo>
+        <wsa:RelatesTo RelationshipType="http://some.custom.relationship">http://identifier.of.other.message/</wsa:RelatesTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/addressing/test-resources/valid-messages/submission/soapmessage.xml b/rampart_1_1/modules/addressing/test-resources/valid-messages/submission/soapmessage.xml
new file mode 100644
index 0000000..c84e287
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test-resources/valid-messages/submission/soapmessage.xml
@@ -0,0 +1,57 @@
+<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/08/addressing"
+                  xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam">
+        <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 axis2:AttrExt="123456789" soapenv:mustUnderstand="0" >
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+            </wsa:ReferenceParameters>
+            <wsa:ReferenceProperties>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceProperties>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:From>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:ReplyTo axis2:AttrExt="123456789">
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+            </wsa:ReferenceParameters>
+            <wsa:ReferenceProperties>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceProperties>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:ReplyTo>
+        
+        <wsa:FaultTo axis2:AttrExt="123456789">
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+            </wsa:ReferenceParameters>
+            <wsa:ReferenceProperties>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceProperties>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:FaultTo>
+        <wsa:RelatesTo>http://some.previous.message</wsa:RelatesTo>
+        <wsa:RelatesTo RelationshipType="axis2:some.custom.relationship">http://identifier.of.other.message/</wsa:RelatesTo>
+        
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/addressing/test/org/apache/axis2/addressing/AddressingFaultsTest.java b/rampart_1_1/modules/addressing/test/org/apache/axis2/addressing/AddressingFaultsTest.java
new file mode 100644
index 0000000..a2044fb
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test/org/apache/axis2/addressing/AddressingFaultsTest.java
@@ -0,0 +1,139 @@
+/*

+* Copyright 2006 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.axis2.addressing;

+

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.AddressingConstants.Final;

+import org.apache.axis2.context.MessageContext;

+

+import junit.framework.TestCase;

+

+public class AddressingFaultsTest extends TestCase {

+

+    /**

+     * Test method for {@link org.apache.axis2.addressing.AddressingFaultsHelper#triggerInvalidCardinalityFault(org.apache.axis2.context.MessageContext, java.lang.String)}.

+     */

+    public void testTriggerInvalidCardinalityFault() {

+        MessageContext messageContext = new MessageContext();

+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, AddressingConstants.Final.WSA_NAMESPACE);

+        try{

+            AddressingFaultsHelper.triggerInvalidCardinalityFault(messageContext, "Action");

+            fail("Should have thrown exception");

+        }catch(AxisFault af){

+            // Expected

+            assertEquals(Final.FAULT_INVALID_HEADER_REASON, af.getMessage());

+            assertEquals(new QName(Final.WSA_NAMESPACE,Final.FAULT_INVALID_HEADER), af.getFaultCode());

+            assertEquals("wsa:Action", ((Map)messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(Final.FAULT_HEADER_PROB_HEADER_QNAME));

+            assertEquals(Boolean.FALSE, messageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));

+        }

+    }

+

+    /**

+     * Test method for {@link org.apache.axis2.addressing.AddressingFaultsHelper#triggerActionMismatchFault(org.apache.axis2.context.MessageContext)}.

+     */

+    public void testTriggerActionMismatchFault() {

+        MessageContext messageContext = new MessageContext();

+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, AddressingConstants.Final.WSA_NAMESPACE);

+        try{

+            AddressingFaultsHelper.triggerActionMismatchFault(messageContext);

+            fail("Should have thrown exception");

+        }catch(AxisFault af){

+            // Expected

+            assertEquals(Final.FAULT_INVALID_HEADER_REASON, af.getMessage());

+            assertEquals(new QName(Final.WSA_NAMESPACE,Final.FAULT_INVALID_HEADER), af.getFaultCode());

+            assertEquals("wsa:Action", ((Map)messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(Final.FAULT_HEADER_PROB_HEADER_QNAME));

+            assertEquals(Boolean.FALSE, messageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));

+        }

+    }

+

+    /**

+     * Test method for {@link org.apache.axis2.addressing.AddressingFaultsHelper#triggerOnlyAnonymousAddressSupportedFault(org.apache.axis2.context.MessageContext, java.lang.String)}.

+     */

+    public void testTriggerOnlyAnonymousAddressSupportedFault() {

+        MessageContext messageContext = new MessageContext();

+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, AddressingConstants.Final.WSA_NAMESPACE);

+        try{

+            AddressingFaultsHelper.triggerOnlyAnonymousAddressSupportedFault(messageContext, "ReplyTo");

+            fail("Should have thrown exception");

+        }catch(AxisFault af){

+            // Expected

+            assertEquals(Final.FAULT_INVALID_HEADER_REASON, af.getMessage());

+            assertEquals(new QName(Final.WSA_NAMESPACE,Final.FAULT_INVALID_HEADER), af.getFaultCode());

+            assertEquals("wsa:ReplyTo", ((Map)messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(Final.FAULT_HEADER_PROB_HEADER_QNAME));

+            assertEquals(Boolean.FALSE, messageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));

+        }

+    }

+

+    /**

+     * Test method for {@link org.apache.axis2.addressing.AddressingFaultsHelper#triggerOnlyNonAnonymousAddressSupportedFault(org.apache.axis2.context.MessageContext, java.lang.String)}.

+     */

+    public void testTriggerOnlyNonAnonymousAddressSupportedFault() {

+        MessageContext messageContext = new MessageContext();

+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, AddressingConstants.Final.WSA_NAMESPACE);

+        try{

+            AddressingFaultsHelper.triggerOnlyNonAnonymousAddressSupportedFault(messageContext, "ReplyTo");

+            fail("Should have thrown exception");

+        }catch(AxisFault af){

+            // Expected

+            assertEquals(Final.FAULT_INVALID_HEADER_REASON, af.getMessage());

+            assertEquals(new QName(Final.WSA_NAMESPACE,Final.FAULT_INVALID_HEADER), af.getFaultCode());

+            assertEquals("wsa:ReplyTo", ((Map)messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(Final.FAULT_HEADER_PROB_HEADER_QNAME));

+            assertEquals(Boolean.FALSE, messageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));

+        }

+    }

+

+    /**

+     * Test method for {@link org.apache.axis2.addressing.AddressingFaultsHelper#triggerMessageAddressingRequiredFault(org.apache.axis2.context.MessageContext, java.lang.String)}.

+     */

+    public void testTriggerMessageAddressingRequiredFault() {

+        MessageContext messageContext = new MessageContext();

+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, AddressingConstants.Final.WSA_NAMESPACE);

+        try{

+            AddressingFaultsHelper.triggerMessageAddressingRequiredFault(messageContext, "Action");

+            fail("Should have thrown exception");

+        }catch(AxisFault af){

+            // Expected

+            assertEquals(Final.FAULT_ADDRESSING_HEADER_REQUIRED_REASON, af.getMessage());

+            assertEquals(new QName(Final.WSA_NAMESPACE,Final.FAULT_ADDRESSING_HEADER_REQUIRED), af.getFaultCode());

+            assertEquals("wsa:Action", ((Map)messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(Final.FAULT_HEADER_PROB_HEADER_QNAME));

+            assertEquals(Boolean.FALSE, messageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));

+        }

+    }

+

+    /**

+     * Test method for {@link org.apache.axis2.addressing.AddressingFaultsHelper#triggerActionNotSupportedFault(org.apache.axis2.context.MessageContext, java.lang.String)}.

+     */

+    public void testTriggerActionNotSupportedFault() {

+        MessageContext messageContext = new MessageContext();

+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, AddressingConstants.Final.WSA_NAMESPACE);

+        try{

+            AddressingFaultsHelper.triggerActionNotSupportedFault(messageContext, "http://incorrect/action");

+            fail("Should have thrown exception");

+        }catch(AxisFault af){

+            // Expected

+            assertEquals(AddressingConstants.FAULT_ACTION_NOT_SUPPORTED_REASON, af.getMessage());

+            assertEquals(new QName(Final.WSA_NAMESPACE,AddressingConstants.FAULT_ACTION_NOT_SUPPORTED), af.getFaultCode());

+            assertEquals("http://incorrect/action", ((Map)messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(AddressingConstants.Final.FAULT_PROBLEM_ACTION_NAME));

+            assertEquals(Boolean.FALSE, messageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/addressing/test/org/apache/axis2/addressing/EndpointReferenceHelperTest.java b/rampart_1_1/modules/addressing/test/org/apache/axis2/addressing/EndpointReferenceHelperTest.java
new file mode 100644
index 0000000..ff861e2
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test/org/apache/axis2/addressing/EndpointReferenceHelperTest.java
@@ -0,0 +1,207 @@
+/*

+* Copyright 2006 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.axis2.addressing;

+

+import java.util.ArrayList;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.context.MessageContext;

+

+import junit.framework.TestCase;

+

+public class EndpointReferenceHelperTest extends TestCase {

+

+    public void testToAndFromOMForFinalSpecEPR() throws Exception{

+        String address = "http://ws.apache.org/axis2";

+        EndpointReference epr = new EndpointReference(address);

+        

+        OMFactory omf = OMAbstractFactory.getOMFactory();

+        OMNamespace ns1 = omf.createOMNamespace("http://uri1","prefix1");

+        OMAttribute attr1 = omf.createOMAttribute("attr1",ns1,"attr1value");

+        OMNamespace ns2 = omf.createOMNamespace("http://uri2","prefix2");

+        OMAttribute attr2 = omf.createOMAttribute("attr2",ns2,"attr2value");

+        epr.addAttribute(attr1);

+        epr.addAttribute(attr2);

+        OMElement md1 = omf.createOMElement("md1", "http://mduri1", "md1prefix"); 

+        OMElement md2 = omf.createOMElement("md2", "http://mduri2", "md2prefix");

+        epr.addMetaData(md1);

+        epr.addMetaData(md2);

+        OMElement ext1 = omf.createOMElement("ext1", "http://exturi1", "ext1prefix"); 

+        OMElement ext2 = omf.createOMElement("ext2", "http://exturi2", "ext2prefix");

+        epr.addExtensibleElement(ext1);

+        epr.addExtensibleElement(ext2);

+        QName rp1Qname = new QName("http://rp1uri","refParm1","rp1prefix");

+        QName rp2Qname = new QName("http://rp2uri","refParm2","rp2prefix");

+        epr.addReferenceParameter(rp1Qname,"rp1");

+        epr.addReferenceParameter(rp2Qname,"rp2");

+        

+        OMElement om = EndpointReferenceHelper.toOM(omf, epr, new QName("http://nsurl","localName","prefix"), AddressingConstants.Final.WSA_NAMESPACE);

+        

+        //Test deserialize using fromOM(OMElement)

+        EndpointReference deser = EndpointReferenceHelper.fromOM(om);

+        

+        assertEquals(epr.getAddress(),deser.getAddress());

+        ArrayList attrs = deser.getAttributes();

+        assertEquals(attr1,attrs.get(0));

+        assertEquals(attr2,attrs.get(1));

+        

+        ArrayList metadata = deser.getMetaData();

+        assertEquals(md1, metadata.get(0));

+        assertEquals(md2, metadata.get(1));

+        

+        ArrayList extelts = deser.getExtensibleElements();

+        assertEquals(ext1,extelts.get(0));

+        assertEquals(ext2,extelts.get(1));

+        

+        Map m = deser.getAllReferenceParameters();

+        assertEquals("rp1", ((OMElement)m.get(rp1Qname)).getText());

+        assertEquals("rp2", ((OMElement)m.get(rp2Qname)).getText());

+        

+        //Test deserialize using fromOM(EndpointReference, OMElement, String)

+        deser = new EndpointReference("");

+        EndpointReferenceHelper.fromOM(deser, om, AddressingConstants.Final.WSA_NAMESPACE);

+        

+        assertEquals(epr.getAddress(),deser.getAddress());

+        attrs = deser.getAttributes();

+        assertEquals(attr1,attrs.get(0));

+        assertEquals(attr2,attrs.get(1));

+        

+        metadata = deser.getMetaData();

+        assertEquals(md1, metadata.get(0));

+        assertEquals(md2, metadata.get(1));

+        

+        extelts = deser.getExtensibleElements();

+        assertEquals(ext1,extelts.get(0));

+        assertEquals(ext2,extelts.get(1));

+        

+        m = deser.getAllReferenceParameters();

+        assertEquals("rp1", ((OMElement)m.get(rp1Qname)).getText());

+        assertEquals("rp2", ((OMElement)m.get(rp2Qname)).getText());

+        

+        //Failure test

+        try {

+            deser = new EndpointReference("");

+            EndpointReferenceHelper.fromOM(deser, om, AddressingConstants.Submission.WSA_NAMESPACE);

+            fail("An exception should have been thrown due to failure to locate a wsa:Address field.");

+        }

+        catch (Exception e) {

+            //pass

+        }

+    }

+    

+    public void testToAndFromOMForSubmissionSpecEPR() throws Exception{

+        String address = "http://ws.apache.org/axis2";

+        EndpointReference epr = new EndpointReference(address);

+        

+        OMFactory omf = OMAbstractFactory.getOMFactory();

+        OMNamespace ns1 = omf.createOMNamespace("http://uri1","prefix1");

+        OMAttribute attr1 = omf.createOMAttribute("attr1",ns1,"attr1value");

+        OMNamespace ns2 = omf.createOMNamespace("http://uri2","prefix2");

+        OMAttribute attr2 = omf.createOMAttribute("attr2",ns2,"attr2value");

+        epr.addAttribute(attr1);

+        epr.addAttribute(attr2);

+        OMElement md1 = omf.createOMElement("md1", "http://mduri1", "md1prefix"); 

+        OMElement md2 = omf.createOMElement("md2", "http://mduri2", "md2prefix");

+        epr.addMetaData(md1);

+        epr.addMetaData(md2);

+        OMElement ext1 = omf.createOMElement("ext1", "http://exturi1", "ext1prefix"); 

+        OMElement ext2 = omf.createOMElement("ext2", "http://exturi2", "ext2prefix");

+        epr.addExtensibleElement(ext1);

+        epr.addExtensibleElement(ext2);

+        QName rp1Qname = new QName("http://rp1uri","refParm1","rp1prefix");

+        QName rp2Qname = new QName("http://rp2uri","refParm2","rp2prefix");

+        epr.addReferenceParameter(rp1Qname,"rp1");

+        epr.addReferenceParameter(rp2Qname,"rp2");

+        

+        OMElement om = EndpointReferenceHelper.toOM(omf, epr, new QName("http://nsurl","localName","prefix"), AddressingConstants.Submission.WSA_NAMESPACE);

+        

+        //Add some reference properties.

+        QName p1Qname = new QName("http://p1uri","refProp1","p1prefix");

+        QName p2Qname = new QName("http://p2uri","refProp2","p2prefix");

+        QName qname = new QName(AddressingConstants.Submission.WSA_NAMESPACE, "ReferenceProperties", AddressingConstants.WSA_DEFAULT_PREFIX);

+        OMElement referenceProperties = omf.createOMElement(qname, om);

+        OMElement prop1 = omf.createOMElement(p1Qname, referenceProperties);

+        OMElement prop2 = omf.createOMElement(p2Qname, referenceProperties);

+        prop1.setText("p1");

+        prop2.setText("p2");

+        

+        //Test deserialize using fromOM(OMElement)

+        EndpointReference deser = EndpointReferenceHelper.fromOM(om);

+        

+        assertEquals(epr.getAddress(),deser.getAddress());

+        ArrayList attrs = deser.getAttributes();

+        assertEquals(attr1,attrs.get(0));

+        assertEquals(attr2,attrs.get(1));

+        

+        //Metadata will be lost unless it is saved as an extensibility element.

+        ArrayList metadata = deser.getMetaData();

+        assertNull(metadata);

+        

+        ArrayList extelts = deser.getExtensibleElements();

+        assertEquals(ext1,extelts.get(0));

+        assertEquals(ext2,extelts.get(1));

+        

+        //All reference properties are returned as reference parameters.

+        Map m = deser.getAllReferenceParameters();

+        assertEquals(4, m.size());

+        assertEquals("rp1", ((OMElement)m.get(rp1Qname)).getText());

+        assertEquals("rp2", ((OMElement)m.get(rp2Qname)).getText());

+        assertEquals("p1", ((OMElement)m.get(p1Qname)).getText());

+        assertEquals("p2", ((OMElement)m.get(p2Qname)).getText());

+        

+        //Test deserialize using fromOM(EndpointReference, OMElement, String)

+        deser = new EndpointReference("");

+        EndpointReferenceHelper.fromOM(deser, om, AddressingConstants.Submission.WSA_NAMESPACE);

+        

+        assertEquals(epr.getAddress(),deser.getAddress());

+        attrs = deser.getAttributes();

+        assertEquals(attr1,attrs.get(0));

+        assertEquals(attr2,attrs.get(1));

+        

+        //Metadata will be lost unless it is saved as an extensibility element.

+        metadata = deser.getMetaData();

+        assertNull(metadata);

+        

+        extelts = deser.getExtensibleElements();

+        assertEquals(ext1,extelts.get(0));

+        assertEquals(ext2,extelts.get(1));

+        

+        //All reference properties are returned as reference parameters.

+        m = deser.getAllReferenceParameters();

+        assertEquals(4, m.size());

+        assertEquals("rp1", ((OMElement)m.get(rp1Qname)).getText());

+        assertEquals("rp2", ((OMElement)m.get(rp2Qname)).getText());

+        assertEquals("p1", ((OMElement)m.get(p1Qname)).getText());

+        assertEquals("p2", ((OMElement)m.get(p2Qname)).getText());

+        

+        //Failure test

+        try {

+            deser = new EndpointReference("");

+            EndpointReferenceHelper.fromOM(deser, om, AddressingConstants.Final.WSA_NAMESPACE);

+            fail("An exception should have been thrown due to failure to locate a wsa:Address field.");

+        }

+        catch (Exception e) {

+            //pass

+        }

+    }

+}

diff --git a/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingFinalInHandlerTest.java b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingFinalInHandlerTest.java
new file mode 100644
index 0000000..1c792d6
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingFinalInHandlerTest.java
@@ -0,0 +1,277 @@
+/*

+ * Copyright 2004,2005 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.axis2.handlers.addressing;

+

+import java.util.ArrayList;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.MessageContext;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public class AddressingFinalInHandlerTest extends AddressingInHandlerTestBase {

+

+    private Log log = LogFactory.getLog(getClass());

+   

+    /**

+     * @param testName

+     */

+    public AddressingFinalInHandlerTest(String testName) {

+        super(testName);

+    }

+

+    protected void setUp() throws Exception {

+        super.setUp();

+        inHandler = new AddressingFinalInHandler();

+        addressingNamespace = AddressingConstants.Final.WSA_NAMESPACE;

+        versionDirectory = "final";

+        fromAddress = "http://www.w3.org/2005/08/addressing/anonymous";

+        secondRelationshipType = "http://some.custom.relationship";

+    }

+

+    public void testExtractAddressingInformationFromHeaders() {

+        try {

+            Options options = extractAddressingInformationFromHeaders();

+            

+            assertNotNull(options);

+            assertNotNull(options.getTo());

+   

+            Map allReferenceParameters = options.getTo().getAllReferenceParameters();

+            assertNotNull(allReferenceParameters);

+            QName qName = new QName("http://ws.apache.org/namespaces/axis2", "ParamOne", "axis2");

+            assertNotNull(allReferenceParameters.get(qName));

+

+            assertEPRHasCorrectMetadata(options.getFrom());

+            assertEPRHasCorrectMetadata(options.getFaultTo());

+            assertEPRHasCorrectMetadata(options.getReplyTo());

+            

+        } catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());

+        }

+    }

+    

+    public void testMessageWithOmittedAction() {

+        try {

+            testMessageWithOmittedHeaders("noAction");

+            fail("An AxisFault should have been thrown due to a missing Action header.");

+        }

+        catch (AxisFault af) {

+            //test passed

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedFaultTo() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noFaultTo");

+            EndpointReference epr = options.getFaultTo();

+            

+            assertNull("The FaultTo endpoint reference is not null.", epr);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to a missing FaultTo header.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedFrom() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noFrom");

+            EndpointReference epr = options.getFrom();

+            

+            assertNull("The From endpoint reference is not null.", epr);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to a missing From header.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedMessageID() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noMessageID");

+            String messageID = options.getMessageId();

+            

+            assertNull("The message id is not null.", messageID);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to a missing MessageID header.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedReplyTo() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noReplyTo");

+            EndpointReference epr = options.getReplyTo();

+            String address = epr.getAddress();

+            

+            assertEquals("The address of the ReplyTo endpoint reference is not the anonymous URI.", AddressingConstants.Final.WSA_ANONYMOUS_URL, address);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to a missing ReplyTo header.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedTo() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noTo");

+            EndpointReference epr = options.getTo();

+            

+            assertNull("The To endpoint reference is not null.", epr);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to a missing To header.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testDifferentSoapActionProcessing() {

+        String testfile = "valid-messages/"+versionDirectory+"/soapmessage.xml";

+        MessageContext mc = new MessageContext();

+        

+        try {

+            mc.setSoapAction("http://ws.apache.org/tests/differentAction");

+            basicExtractAddressingInformationFromHeaders(testfile, mc);

+            fail("An AxisFault should have been thrown due to the soapaction being different to the ws-a action.");            

+        }

+        catch (AxisFault af) {

+            //Test passed.

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());                        

+        }

+    }

+    

+    public void testSameSoapAction() {

+        String testfile = "valid-messages/"+versionDirectory+"/soapmessage.xml";

+        MessageContext mc = new MessageContext();

+        

+        try {

+            mc.setSoapAction("http://ws.apache.org/tests/action");

+            basicExtractAddressingInformationFromHeaders(testfile, mc);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown while testing with a soapaction and ws-a action that are the same.");            

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());                        

+        }        

+    }

+    

+    public void testEmptySoapAction() {

+        String testfile = "valid-messages/"+versionDirectory+"/soapmessage.xml";

+        MessageContext mc = new MessageContext();

+        

+        try {

+            mc.setSoapAction("");

+            basicExtractAddressingInformationFromHeaders(testfile, mc);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown while testing with an empty soapaction.");            

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());                        

+        }

+    }

+    

+    public void testNullSoapAction() {

+        String testfile = "valid-messages/"+versionDirectory+"/soapmessage.xml";

+        MessageContext mc = new MessageContext();

+        

+        try {

+            mc.setSoapAction(null);

+            basicExtractAddressingInformationFromHeaders(testfile, mc);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown while testing with a null soapaction.");            

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());                        

+        }

+    }

+    

+    private void assertEPRHasCorrectMetadata(EndpointReference epr){

+    	ArrayList metadata = epr.getMetaData();

+    	if(metadata != null){

+    		OMElement md = (OMElement)metadata.get(0);

+    		assertEquals(md.getQName(),new QName("http://ws.apache.org/namespaces/axis2","MetaExt"));

+    		assertEquals(md.getText(),"123456789");

+    		assertEquals(md.getAttributeValue(new QName("http://ws.apache.org/namespaces/axis2","AttrExt")),"123456789");

+    	}else{

+    		fail("No Metadata found in EPR");

+    	}

+    }

+}

diff --git a/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInHandlerTestBase.java b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInHandlerTestBase.java
new file mode 100644
index 0000000..ecd542b
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInHandlerTestBase.java
@@ -0,0 +1,297 @@
+/*

+ * Copyright 2004,2005 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.axis2.handlers.addressing;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+

+import junit.framework.TestCase;

+

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPHeader;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.addressing.RelatesTo;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.handlers.util.TestUtil;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public abstract class AddressingInHandlerTestBase extends TestCase {

+    private Log log = LogFactory.getLog(getClass());

+    AddressingInHandler inHandler;

+    String addressingNamespace;

+    TestUtil testUtil = new TestUtil();

+    private String testFileName = "soapmessage.xml";

+    

+    String versionDirectory;

+

+    private String action = "http://ws.apache.org/tests/action";

+    private String messageID = "uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5";

+    String fromAddress;

+    String secondRelationshipType;

+    private String faultAddress = "http://example.com/fabrikam/fault";

+    private String replyAddress = "http://example.com/fabrikam/acct";

+    private String toAddress    = "http://localhost:8081/axis/services/BankPort";

+ 

+    /**

+     * @param testName

+     */

+    public AddressingInHandlerTestBase(String testName) {

+        super(testName);

+    }

+

+    protected void basicExtractAddressingInformationFromHeaders(String testMessagePath, MessageContext mc) throws Exception{

+    	StAXSOAPModelBuilder omBuilder = testUtil.getOMBuilder(testMessagePath);

+        SOAPHeader header = ((SOAPEnvelope) omBuilder.getDocumentElement()).getHeader();

+        ArrayList addressingHeaderBlocks = header.getHeaderBlocksWithNSURI(addressingNamespace);

+        inHandler.extractAddressingInformation(header, mc, addressingHeaderBlocks, addressingNamespace);

+    }

+    

+    protected Options extractAddressingInformationFromHeaders(){

+    	try {

+            String testfile = "valid-messages/"+versionDirectory+"/"+testFileName;

+

+            MessageContext mc = new MessageContext();

+            

+            basicExtractAddressingInformationFromHeaders(testfile, mc);

+         

+            Options options = mc.getOptions();

+

+            if (options == null) {

+                fail("Addressing Information Headers have not been retrieved properly");

+            }

+            assertEquals("action header is not correct",

+                    options.getAction(),

+                    action);

+            assertEquals("message id header is not correct",

+                    options.getMessageId().trim(),

+                    messageID.trim());

+

+            assertFullFromEPR(options.getFrom());

+            assertFullFaultEPR(options.getFaultTo());

+            assertFullReplyToEPR(options.getReplyTo());

+

+            assertRelationships(options);

+            

+            return options;

+            

+        } catch (Exception e) {

+            e.printStackTrace();

+            log.info(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());

+        }

+        

+        return null;

+    }

+

+	private void testExtractAddressingInformationFromHeadersInvalidCardinality(String headerName) {

+    	String testfile = "invalid-cardinality-messages/"+versionDirectory+"/invalidCardinality"+headerName+"Message.xml";

+        try {

+            MessageContext mc = new MessageContext();

+            try{

+            	basicExtractAddressingInformationFromHeaders(testfile, mc);            

+            	fail("An AxisFault should have been thrown due to 2 wsa:"+headerName+" headers.");

+            }catch(AxisFault af){

+            	if(headerName.equals(AddressingConstants.WSA_REPLY_TO)){

+            		assertNull("No ReplyTo should be set on the MessageContext", mc.getReplyTo());

+            	}else{

+            		assertReplyToEPR(mc.getReplyTo());

+            	}

+            	

+            	if(headerName.equals(AddressingConstants.WSA_FAULT_TO)){

+            		assertNull("No FaultTo should be set on the MessageContext", mc.getFaultTo());

+            	}else{

+            		assertFaultEPR(mc.getFaultTo());

+            	}

+            	

+            	if(headerName.equals(AddressingConstants.WSA_ACTION)){

+            		assertNull("No Action should be set on the MessageContext", mc.getWSAAction());

+            	}else{

+            		assertEquals("WSAAction property is not correct", mc.getWSAAction(), action);

+            	}

+            	

+            	if(headerName.equals(AddressingConstants.WSA_MESSAGE_ID)){

+            		assertNull("No MessageID should be set on the MessageContext", mc.getMessageID());

+            	}else{

+            		assertEquals("MessageID property is not correct", mc.getMessageID().trim(), messageID.trim());

+            	}

+            	

+            	if(headerName.equals(AddressingConstants.WSA_FROM)){

+            		assertNull("No From should be set on the MessageContext", mc.getFrom());

+            	}else{

+            		assertFromEPR(mc.getFrom());

+            	}

+            	

+            	if(headerName.equals(AddressingConstants.WSA_TO)){

+            		assertNull("No To should be set on the MessageContext", mc.getTo());

+            	}else{

+            		assertToEPR(mc.getTo());

+            	}

+            }

+        } catch (Exception e) {

+            e.printStackTrace();

+            log.info(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());

+        }

+    }

+    

+    protected Options testMessageWithOmittedHeaders(String testName) throws Exception {

+        String testfile = "omitted-header-messages/"+versionDirectory+"/"+testName+"Message.xml";

+        

+        MessageContext mc = new MessageContext();

+        basicExtractAddressingInformationFromHeaders(testfile, mc);

+        

+        return mc.getOptions();

+    }

+    

+    public void testExtractAddressingInformationFromHeadersInvalidCardinalityReplyTo() {

+    	testExtractAddressingInformationFromHeadersInvalidCardinality(AddressingConstants.WSA_REPLY_TO);

+    }

+

+    public void testExtractAddressingInformationFromHeadersInvalidCardinalityFaultTo() {

+        testExtractAddressingInformationFromHeadersInvalidCardinality(AddressingConstants.WSA_FAULT_TO);

+    }

+    

+    public void testExtractAddressingInformationFromHeadersInvalidCardinalityAction() {

+        testExtractAddressingInformationFromHeadersInvalidCardinality(AddressingConstants.WSA_ACTION);

+    }

+    

+    public void testExtractAddressingInformationFromHeadersInvalidCardinalityMessageID() {

+        testExtractAddressingInformationFromHeadersInvalidCardinality(AddressingConstants.WSA_MESSAGE_ID);

+    }

+    

+    public void testExtractAddressingInformationFromHeadersInvalidCardinalityFrom() {

+        testExtractAddressingInformationFromHeadersInvalidCardinality(AddressingConstants.WSA_FROM);

+    }

+

+    public void testExtractAddressingInformationFromHeadersInvalidCardinalityTo() {

+        testExtractAddressingInformationFromHeadersInvalidCardinality(AddressingConstants.WSA_TO);

+    }

+    

+    private void assertFromEPR(EndpointReference fromEPR) {

+        assertEquals("Address in From EPR is not valid",

+                fromEPR.getAddress().trim(),

+                fromAddress.trim());

+    }

+    

+    private void assertFaultEPR(EndpointReference faultEPR) {

+        assertEquals("Address in FaultTo EPR is not valid",

+        		faultEPR.getAddress().trim(),

+                faultAddress.trim());

+    }

+    

+    private void assertReplyToEPR(EndpointReference replyEPR) {

+        assertEquals("Address in ReplytTo EPR is not valid",

+        		replyEPR.getAddress().trim(),

+                replyAddress.trim());

+    }

+    

+    private void assertToEPR(EndpointReference toEPR) {

+        assertEquals("Address in To EPR is not valid",

+        		toEPR.getAddress().trim(),

+                toAddress.trim());

+    }

+    

+    private void assertFullFromEPR(EndpointReference fromEPR) {

+        assertEquals("Address in From EPR is not valid",

+                fromEPR.getAddress().trim(),

+                fromAddress.trim());

+        assertEPRHasExtensibilityAttribute(fromEPR);

+        assertEPRHasCorrectReferenceParameters(fromEPR);

+        assertEPRHasCorrectExtensibilityElements(fromEPR);

+    }

+    

+    private void assertFullFaultEPR(EndpointReference faultEPR) {

+        assertEquals("Address in FaultTo EPR is not valid",

+        		faultEPR.getAddress().trim(),

+                faultAddress.trim());

+        assertEPRHasExtensibilityAttribute(faultEPR);

+        assertEPRHasCorrectReferenceParameters(faultEPR);

+        assertEPRHasCorrectExtensibilityElements(faultEPR);

+    }

+    

+    private void assertFullReplyToEPR(EndpointReference replyEPR) {

+        assertEquals("Address in ReplytTo EPR is not valid",

+        		replyEPR.getAddress().trim(),

+                replyAddress.trim());

+        assertEPRHasExtensibilityAttribute(replyEPR);

+        assertEPRHasCorrectReferenceParameters(replyEPR);

+        assertEPRHasCorrectExtensibilityElements(replyEPR);

+    }

+    

+    private void assertEPRHasCorrectReferenceParameters(EndpointReference epr){

+    	//<wsa:ReferenceParameters>

+        //  <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>

+        //  <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>

+    	//</wsa:ReferenceParameters>

+    	Map referenceParameters = epr.getAllReferenceParameters();

+    	if(referenceParameters != null){

+    		OMElement refparm1 = (OMElement)referenceParameters.get(new QName("http://example.com/fabrikam","CustomerKey"));

+    		assertNotNull(refparm1);

+    		assertEquals("ReferenceParameter value incorrect.",refparm1.getText(),"123456789");

+    		

+    		OMElement refparm2 = (OMElement)referenceParameters.get(new QName("http://example.com/fabrikam","ShoppingCart"));

+    		assertNotNull(refparm2);

+    		assertEquals("ReferenceParameter value incorrect.",refparm2.getText(),"ABCDEFG");

+    	}else{

+    		fail("No ReferenceParameters found in EPR");

+    	}

+    }

+    

+    private void assertEPRHasExtensibilityAttribute(EndpointReference epr){

+    	boolean attributeFound=false;

+    	ArrayList attributes = epr.getAttributes();

+    	if(attributes!=null){

+	        Iterator iter = attributes.iterator();

+	        while(iter.hasNext()){

+	        	OMAttribute oa = (OMAttribute)iter.next();

+	        	if(oa.getLocalName().equals("AttrExt")){

+	        		attributeFound = true;

+	        		assertEquals("Attribute value incorrectly deserialised",oa.getAttributeValue(),"123456789");

+	        	}

+	        }

+    	}

+        assertTrue("Extensibility attribute not found on EPR", attributeFound);

+    }

+    

+    private void assertEPRHasCorrectExtensibilityElements(EndpointReference epr){

+    	ArrayList eelements = epr.getExtensibleElements();

+    	if(eelements != null){

+    		OMElement ee = (OMElement)eelements.get(0);

+    		assertEquals(ee.getQName(),new QName("http://ws.apache.org/namespaces/axis2","EPRExt"));

+    		assertEquals(ee.getText(),"123456789");

+    		assertEquals(ee.getAttributeValue(new QName("http://ws.apache.org/namespaces/axis2","AttrExt")),"123456789");

+    	}else{

+    		fail("No Extensibility Elements found in EPR");

+    	}

+    }

+    

+    private void assertRelationships(Options options) {

+    	assertNotNull(options.getRelatesTo());

+    	assertEquals(options.getRelatesTo().getValue(),"http://some.previous.message");

+    	assertEquals(options.getRelatesTo(secondRelationshipType).getValue(),"http://identifier.of.other.message/");

+	}

+}

diff --git a/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java
new file mode 100644
index 0000000..e4eb6c3
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2004,2005 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.axis2.handlers.addressing;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.impl.llom.util.XMLComparator;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.util.TestUtil;
+
+import javax.xml.namespace.QName;
+
+public class AddressingOutHandlerTest extends TestCase implements AddressingConstants {
+    private AddressingOutHandler outHandler;
+    private MessageContext msgCtxt;
+    private TestUtil testUtil;
+
+    public AddressingOutHandlerTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        outHandler = new AddressingOutHandler();
+        testUtil = new TestUtil();
+
+    }
+
+    public void testAddToSOAPHeader() throws Exception {
+        EndpointReference replyTo = new EndpointReference("http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous");
+        EndpointReference epr = new EndpointReference("http://www.to.org/service/");
+
+        for (int i = 0; i < 5; i++) {
+            epr.addReferenceParameter(
+                    new QName(Submission.WSA_NAMESPACE, "Reference" + i, AddressingConstants.WSA_DEFAULT_PREFIX),
+                    "Value " + i * 100);
+
+        }
+
+
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
+
+        MessageContext msgCtxt = new MessageContext();
+        msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE);
+        msgCtxt.setTo(epr);
+        msgCtxt.setReplyTo(replyTo);
+        msgCtxt.setEnvelope(defaultEnvelope);
+        outHandler.invoke(msgCtxt);
+
+        StAXSOAPModelBuilder omBuilder = testUtil.getOMBuilder("eprTest.xml");
+
+        XMLComparator xmlComparator = new XMLComparator();
+
+        assertTrue(
+                xmlComparator.compare(omBuilder.getDocumentElement(),
+                        defaultEnvelope));
+
+    }
+
+    public void testHeaderCreationFromMsgCtxtInformation() throws Exception {
+        msgCtxt = new MessageContext();
+
+        EndpointReference epr = new EndpointReference("http://www.from.org/service/");
+        epr.addReferenceParameter(new QName("Reference2"),
+                "Value 200");
+        msgCtxt.setFrom(epr);
+
+        epr = new EndpointReference("http://www.to.org/service/");
+        epr.addReferenceParameter(
+                new QName("http://reference.org", "Reference4", "myRef"),
+                "Value 400");
+        epr.addReferenceParameter(
+                new QName("http://reference.org", "Reference3", "myRef"),
+                "Value 300");
+
+        msgCtxt.setTo(epr);
+        msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE);
+
+        epr =
+                new EndpointReference("http://www.replyTo.org/service/");
+        msgCtxt.setReplyTo(epr);
+
+        msgCtxt.setMessageID("123456-7890");
+        msgCtxt.setWSAAction("http://www.actions.org/action");
+
+        org.apache.axis2.addressing.RelatesTo relatesTo = new org.apache.axis2.addressing.RelatesTo(
+                "http://www.relatesTo.org/service/", "TestRelation");
+        msgCtxt.addRelatesTo(relatesTo);
+
+        msgCtxt.setEnvelope(
+                OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope());
+        outHandler.invoke(msgCtxt);
+
+        XMLComparator xmlComparator = new XMLComparator();
+        assertTrue(
+                xmlComparator.compare(msgCtxt.getEnvelope(),
+                        testUtil.getOMBuilder("OutHandlerTest.xml")
+                .getDocumentElement()));
+    }
+
+    public void testMustUnderstandSupport() throws Exception {
+        msgCtxt = new MessageContext();
+
+        msgCtxt.setProperty(AddressingConstants.ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS, Boolean.TRUE);
+        
+        EndpointReference epr = new EndpointReference("http://www.from.org/service/");
+        epr.addReferenceParameter(new QName("Reference2"),
+                "Value 200");
+        msgCtxt.setFrom(epr);
+
+        epr = new EndpointReference("http://www.to.org/service/");
+        epr.addReferenceParameter(
+                new QName("http://reference.org", "Reference4", "myRef"),
+                "Value 400");
+        epr.addReferenceParameter(
+                new QName("http://reference.org", "Reference3", "myRef"),
+                "Value 300");
+
+        msgCtxt.setTo(epr);
+        msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE);
+
+        epr =
+                new EndpointReference("http://www.replyTo.org/service/");
+        msgCtxt.setReplyTo(epr);
+
+        msgCtxt.setMessageID("123456-7890");
+        msgCtxt.setWSAAction("http://www.actions.org/action");
+
+        org.apache.axis2.addressing.RelatesTo relatesTo = new org.apache.axis2.addressing.RelatesTo(
+                "http://www.relatesTo.org/service/", "TestRelation");
+        msgCtxt.addRelatesTo(relatesTo);
+
+        msgCtxt.setEnvelope(
+                OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope());
+        outHandler.invoke(msgCtxt);
+
+        XMLComparator xmlComparator = new XMLComparator();
+        assertTrue(
+                xmlComparator.compare(msgCtxt.getEnvelope(),
+                        testUtil.getOMBuilder("mustUnderstandTest.xml")
+                .getDocumentElement()));
+    }
+
+    public void testDuplicateHeaders() throws AxisFault {
+
+        // this will check whether we can add to epr, if there is one already.
+        EndpointReference eprOne = new EndpointReference("http://whatever.org");
+        EndpointReference duplicateEpr = new EndpointReference("http://whatever.duplicate.org");
+        msgCtxt = new MessageContext();
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
+        msgCtxt.setEnvelope(defaultEnvelope);
+
+        msgCtxt.setTo(eprOne);
+        outHandler.invoke(msgCtxt);
+
+        // now the soap message within the msgCtxt must have a to header.
+        // lets invoke twice and see
+        msgCtxt.setTo(duplicateEpr);
+        outHandler.invoke(msgCtxt);
+
+        assertTrue(defaultEnvelope.getHeader().getFirstChildWithName(new QName("http://whatever.duplicate.org")) == null);
+
+
+    }
+
+    public void testDuplicateHeadersWithOverridingOn() throws AxisFault {
+
+        // this will check whether we can add to epr, if there is one already.
+        EndpointReference eprOne = new EndpointReference("http://whatever.org");
+        msgCtxt = new MessageContext();
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
+        SOAPHeaderBlock soapHeaderBlock =
+                defaultEnvelope.getHeader().addHeaderBlock(WSA_TO, factory.createOMNamespace(
+                Final.WSA_NAMESPACE, WSA_DEFAULT_PREFIX));
+        soapHeaderBlock.setText("http://oldEPR.org");
+        msgCtxt.setEnvelope(defaultEnvelope);
+
+        msgCtxt.setProperty(REPLACE_ADDRESSING_HEADERS, Boolean.TRUE);
+        msgCtxt.setTo(eprOne);
+        outHandler.invoke(msgCtxt);
+
+        assertTrue("http://whatever.org".equals(defaultEnvelope.getHeader().getFirstChildWithName(new QName(WSA_TO)).getText()));
+
+
+    }
+
+    public void testDuplicateHeadersWithOverridingOff() throws AxisFault {
+
+        // this will check whether we can add to epr, if there is one already.
+        EndpointReference eprOne = new EndpointReference("http://whatever.org");
+        msgCtxt = new MessageContext();
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
+        SOAPHeaderBlock soapHeaderBlock =
+                defaultEnvelope.getHeader().addHeaderBlock(WSA_TO, factory.createOMNamespace(
+                Final.WSA_NAMESPACE, WSA_DEFAULT_PREFIX));
+        soapHeaderBlock.setText("http://oldEPR.org");
+        msgCtxt.setEnvelope(defaultEnvelope);
+
+        msgCtxt.setProperty(REPLACE_ADDRESSING_HEADERS, Boolean.FALSE);
+        msgCtxt.setTo(eprOne);
+        outHandler.invoke(msgCtxt);
+
+        assertTrue("http://oldEPR.org".equals(defaultEnvelope.getHeader().getFirstChildWithName(new QName(WSA_TO)).getText()));
+
+
+    }
+}
diff --git a/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandlerTest.java b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandlerTest.java
new file mode 100644
index 0000000..f6f21bd
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandlerTest.java
@@ -0,0 +1,178 @@
+/*

+ * Copyright 2004,2005 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.axis2.handlers.addressing;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public class AddressingSubmissionInHandlerTest extends AddressingInHandlerTestBase {

+

+    private Log log = LogFactory.getLog(getClass());

+   

+    /**

+     * @param testName

+     */

+    public AddressingSubmissionInHandlerTest(String testName) {

+        super(testName);

+    }

+

+    protected void setUp() throws Exception {

+        super.setUp();

+        inHandler = new AddressingSubmissionInHandler();

+        addressingNamespace = AddressingConstants.Submission.WSA_NAMESPACE;

+        versionDirectory = "submission";

+        fromAddress = "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";

+        secondRelationshipType = "axis2:some.custom.relationship";

+    }

+

+    public void testExtractAddressingInformationFromHeaders() {

+        try {

+            Options options = extractAddressingInformationFromHeaders();

+            // Cannot check refparams in 2004/08 case as they can't be extracted until later

+        } catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());

+        }

+    }

+    

+    public void testMessageWithOmittedAction() {

+        try {

+            testMessageWithOmittedHeaders("noAction");

+            fail("An AxisFault should have been thrown due to a missing Action header.");

+        }

+        catch (AxisFault af) {

+            //test passed

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedFaultTo() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noFaultTo");

+            EndpointReference epr = options.getFaultTo();

+            

+            assertNull("The FaultTo endpoint reference is not null.", epr);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to a missing FaultTo header.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedFrom() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noFrom");

+            EndpointReference epr = options.getFrom();

+            

+            assertNull("The From endpoint reference is not null.", epr);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to a missing From header.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedMessageID() {

+        try {

+            testMessageWithOmittedHeaders("noMessageID");

+            fail("An AxisFault should have been thrown due to a missing MessageID header.");

+        }

+        catch (AxisFault af) {

+            //test passed

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedMessageIDReplyToAndFaultTo() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noMessageIDNoReplyToNoFaultTo");

+            String messageID = options.getMessageId();

+            

+            assertNull("The message id is not null.", messageID);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to missing MessageID, ReplyTo, and FaultTo headers.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedReplyTo() {

+        try {

+            Options options = testMessageWithOmittedHeaders("noReplyTo");

+            EndpointReference epr = options.getReplyTo();

+            String address = epr.getAddress();

+            

+            assertEquals("The address of the ReplyTo endpoint reference is not the none URI.", AddressingConstants.Final.WSA_NONE_URI, address);

+        }

+        catch (AxisFault af) {

+            af.printStackTrace();

+            log.error(af.getMessage());

+            fail("An unexpected AxisFault was thrown due to a missing ReplyTo header.");

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+    

+    public void testMessageWithOmittedTo() {

+        try {

+            testMessageWithOmittedHeaders("noTo");

+            fail("An AxisFault should have been thrown due to a missing To header.");

+        }

+        catch (AxisFault af) {

+            //test passed

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+            log.error(e.getMessage());

+            fail(" An Exception has occured " + e.getMessage());            

+        }

+    }

+}

diff --git a/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/util/TestUtil.java b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/util/TestUtil.java
new file mode 100644
index 0000000..13add3a
--- /dev/null
+++ b/rampart_1_1/modules/addressing/test/org/apache/axis2/handlers/util/TestUtil.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2004,2005 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.axis2.handlers.util;
+
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import java.io.File;
+import java.io.FileReader;
+
+public class TestUtil {
+
+    protected static final String IN_FILE_NAME = "soapmessage.xml";
+    protected StAXSOAPModelBuilder builder;
+    protected String testResourceDir = "test-resources";
+
+
+    public StAXSOAPModelBuilder getOMBuilder(String fileName) throws Exception {
+        if ("".equals(fileName) || fileName == null) {
+            fileName = IN_FILE_NAME;
+        }
+        XMLStreamReader parser = StAXUtils
+                .createXMLStreamReader(
+                        new FileReader(getTestResourceFile(fileName)));
+        builder = new StAXSOAPModelBuilder(parser, null);
+        return builder;
+    }
+
+    protected File getTestResourceFile(String relativePath) {
+        return new File(testResourceDir, relativePath);
+    }
+}
diff --git a/rampart_1_1/modules/codegen/maven.xml b/rampart_1_1/modules/codegen/maven.xml
new file mode 100644
index 0000000..603e1dd
--- /dev/null
+++ b/rampart_1_1/modules/codegen/maven.xml
@@ -0,0 +1,31 @@
+<?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:u="jelly:util"
+         xmlns:maven="jelly:maven"
+         xmlns:util="jelly:util"
+         xmlns:deploy="deploy"
+         xmlns:ant="jelly:ant">
+
+    <postGoal name="java:jar-resources">
+        <tstamp>
+            <format property="build.time" pattern="MMM dd, yyyy (hh:mm:ss z)" locale="en"/>
+        </tstamp>
+        <replace dir="${maven.build.dest}/org/apache/axis2/wsdl/template/java/">
+            <include name="*.xsl"/>
+            <replacefilter token="#today#" value="${build.time}"/>
+            <replacefilter token="#axisVersion#" value="${pom.currentVersion}"/>
+        </replace>
+    </postGoal>
+
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+
+</project>
diff --git a/rampart_1_1/modules/codegen/other/MappingFile.xsd b/rampart_1_1/modules/codegen/other/MappingFile.xsd
new file mode 100644
index 0000000..6423ad9
--- /dev/null
+++ b/rampart_1_1/modules/codegen/other/MappingFile.xsd
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by Ajith Harshana Ranabahu (W3C) -->

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

+	<xs:element name="mappings">

+		<xs:annotation>

+			<xs:documentation>Mappings root</xs:documentation>

+		</xs:annotation>

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element name="mapping" type="mappingType" maxOccurs="unbounded"/>

+			</xs:sequence>

+			<xs:attribute name="dbf" type="xs:string" use="required"/>

+		</xs:complexType>

+	</xs:element>

+	<xs:complexType name="mappingType">

+		<xs:annotation>

+			<xs:documentation>Description of the mapping </xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="qname">

+				<xs:complexType>

+					<xs:simpleContent>

+						<xs:extension base="xs:string">

+							<xs:attribute name="namespace" type="xs:string" use="optional" default=""/>

+						</xs:extension>

+					</xs:simpleContent>

+				</xs:complexType>

+			</xs:element>

+			<xs:element name="value" type="xs:string"/>

+		</xs:sequence>

+	</xs:complexType>

+</xs:schema>

diff --git a/rampart_1_1/modules/codegen/other/beanGenerationSchema.xsd b/rampart_1_1/modules/codegen/other/beanGenerationSchema.xsd
new file mode 100644
index 0000000..dc46926
--- /dev/null
+++ b/rampart_1_1/modules/codegen/other/beanGenerationSchema.xsd
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by Ajith Harshana Ranabahu (WSO2/Development) -->

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

+

+     <xs:element name="beans">

+		<xs:annotation>

+			<xs:documentation>

+                This element represents the XML docuement structure java bean writer generates for

+                a multiple classes

+            </xs:documentation>

+		</xs:annotation>

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element ref="bean" maxOccurs="unbounded"/>

+			</xs:sequence>

+            <xs:attribute name="name" type="xs:string" use="required"/>

+			<xs:attribute name="originalName" type="xs:string" use="required"/>

+			<xs:attribute name="package" type="xs:string" use="required"/>

+       </xs:complexType>

+	</xs:element>

+

+    <xs:element name="bean">

+		<xs:annotation>

+			<xs:documentation>

+                This element represents the XML docuement structure java bean writer generates for

+                a single class

+            </xs:documentation>

+		</xs:annotation>

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element name="property" type="propertyType" maxOccurs="unbounded"/>

+			</xs:sequence>

+			<xs:attribute name="name" type="xs:string" use="required"/>

+			<xs:attribute name="originalName" type="xs:string" use="required"/>

+			<xs:attribute name="package" type="xs:string" use="required"/>

+			<xs:attribute name="nsuri" type="xs:string" use="required"/>

+			<xs:attribute name="nsprefix" type="xs:string" use="required"/>

+			<xs:attribute name="type" type="xs:string" use="optional" fixed="yes"/>

+			<xs:attribute name="extension" type="xs:string" use="optional"/>

+			<xs:attribute name="anon" type="xs:string" use="optional" fixed="yes"/>

+			<xs:attribute name="unwrapped" type="xs:string" use="optional" fixed="yes"/>

+		</xs:complexType>

+	</xs:element>

+	<xs:complexType name="propertyType">

+		<xs:attribute name="name" type="xs:string" use="required"/>

+		<xs:attribute name="javaname" type="xs:string" use="required"/>

+		<xs:attribute name="type" type="xs:string" use="required"/>

+		<xs:attribute name="shorttypename" type="xs:string" use="required"/>

+		<xs:attribute name="ours" type="xs:string" use="optional" fixed="yes"/>

+		<xs:attribute name="any" type="xs:string" use="optional" fixed="yes"/>

+		<xs:attribute name="array" type="xs:string" use="optional" fixed="yes"/>

+		<xs:attribute name="anyAtt" type="xs:string" use="optional" fixed="yes"/>

+		<xs:attribute name="unbound" type="xs:string" use="optional" fixed="yes"/>

+		<xs:attribute name="minOccurs" type="xs:long" use="optional"/>

+		<xs:attribute name="maxOccurs" type="xs:long" use="optional"/>

+	</xs:complexType>

+</xs:schema>

diff --git a/rampart_1_1/modules/codegen/pom.xml b/rampart_1_1/modules/codegen/pom.xml
new file mode 100644
index 0000000..347e51e
--- /dev/null
+++ b/rampart_1_1/modules/codegen/pom.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <groupId>org.apache.axis2</groupId>

+    <artifactId>axis2-parent</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+    <relativePath>../parent/pom.xml</relativePath>    

+  </parent>

+

+  <artifactId>axis2-codegen</artifactId>

+  <name>Apache Axis 2.0 - Code Generation</name>

+  <description>Axis2 Code Generation module</description>

+

+  <dependencies>

+    <dependency>

+      <groupId>${project.groupId}</groupId>

+      <artifactId>axis2-kernel</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>${project.groupId}</groupId>

+      <artifactId>axis2-adb</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>xmlbeans</groupId>

+      <artifactId>xbean</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>xmlunit</groupId>

+      <artifactId>xmlunit</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.ws.jaxme</groupId>

+      <artifactId>jaxme2</artifactId>

+    </dependency>

+  </dependencies>

+

+  <build>

+    <sourceDirectory>src</sourceDirectory>

+    <testSourceDirectory>test</testSourceDirectory>

+    <resources>

+      <resource>

+        <directory>conf</directory>

+        <excludes>

+          <exclude>**/*.properties</exclude>

+        </excludes>

+        <filtering>false</filtering>

+      </resource>

+      <resource>

+        <directory>src</directory>

+        <excludes>

+          <exclude>**/*.java</exclude>

+        </excludes>

+      </resource>

+    </resources>

+  </build>

+</project>

diff --git a/rampart_1_1/modules/codegen/project.properties b/rampart_1_1/modules/codegen/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/codegen/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/codegen/project.xml b/rampart_1_1/modules/codegen/project.xml
new file mode 100644
index 0000000..688290b
--- /dev/null
+++ b/rampart_1_1/modules/codegen/project.xml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <id>axis2-codegen</id>
+    <name>Apache Axis 2.0 - Code Generation</name>
+    <groupId>org.apache.axis2</groupId>
+    <description>Axis2 Code Generation module</description>
+
+    <dependencies>
+       <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-java2wsdl</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${XmlSchema.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>xmlbeans</groupId>
+            <artifactId>xbean</artifactId>
+            <version>${xbean.version}</version>
+            <type>jar</type>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons.httpclient.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>httpcomponents-httpcore</groupId>
+            <artifactId>jakarta-httpcore</artifactId>
+            <version>${jakarta.httpcore.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency> 
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+            <url>http://dist.codehaus.org/stax/jars/</url>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+            <url>http://dist.codehaus.org/stax/jars/</url>
+        </dependency>
+        <dependency>
+            <groupId>stax-utils</groupId>
+            <artifactId>stax-utils</artifactId>
+            <version>${stax_utils.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>ant</groupId>
+            <artifactId>ant</artifactId>
+            <version>${ant.version}</version>
+            <type>jar</type>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xmlunit</groupId>
+            <artifactId>xmlunit</artifactId>
+            <version>${xmlunit.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+            <url>http://www.ibiblio.org/maven/xmlunit/jars/</url>
+        </dependency>
+         <dependency>
+            <groupId>annogen</groupId>
+            <artifactId>annogen</artifactId>
+            <version>${annogen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>backport-util-concurrent</groupId>
+            <artifactId>backport-util-concurrent</artifactId>
+            <version>${backport_util_concurrent.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${neethi.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxme</groupId>
+            <artifactId>jaxme2</artifactId>
+            <version>${jaxme.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxme</groupId>
+            <artifactId>jaxmejs</artifactId>
+            <version>${jaxme.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxme</groupId>
+            <artifactId>jaxmeapi</artifactId>
+            <version>${jaxme.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxme</groupId>
+            <artifactId>jaxmexs</artifactId>
+            <version>${jaxme.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+	  <dependency>
+            <groupId>incubator-woden</groupId>
+            <artifactId>woden</artifactId>
+            <version>${woden.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+    </dependencies>
+
+    <reports/>
+    <!-- add the build properties-->
+    <build>
+        <resources>
+            <resource>
+                <directory>src</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                    <include>**/*.xsl</include>
+                    <include>**/*.xsd</include>
+                </includes>
+            </resource>
+        </resources>
+    </build>
+</project>
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2C.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2C.java
new file mode 100644
index 0000000..7ebbc37
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2C.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl;
+
+public class WSDL2C {
+    public static void main(String[] args) throws Exception {
+        String[] cargs = new String[args.length + 2];
+        System.arraycopy(args, 0, cargs, 0, args.length);
+        System.setProperty("org.apache.adb.properties","/org/apache/axis2/schema/c-schema-compile.properties");
+        cargs[args.length] = "-l";
+        cargs[args.length +1] = "c";
+
+        WSDL2Code.main(cargs);
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Code.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Code.java
new file mode 100644
index 0000000..4eebb0b
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Code.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl;
+
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+import org.apache.axis2.wsdl.util.WSDL2JavaOptionsValidator;
+
+public class WSDL2Code {
+
+
+    public static void main(String[] args) throws Exception {
+        CommandLineOptionParser commandLineOptionParser = new CommandLineOptionParser(
+                args);
+        validateCommandLineOptions(commandLineOptionParser);
+        new CodeGenerationEngine(commandLineOptionParser).generate();
+
+    }
+
+    private static void printUsage() {
+
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg1"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg2"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg3"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg4"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg5"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg6"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg7"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg8"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg9"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg10"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg11"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg12"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg13"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg14"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg15"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg16"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg17"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg18"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg19"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg20"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg21"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg22"));
+        System.out.println(CodegenMessages.getMessage("wsdl2code.arg23"));
+
+        System.exit(0);
+    }
+
+
+    private static void validateCommandLineOptions(
+            CommandLineOptionParser parser) {
+        if (parser.getInvalidOptions(new WSDL2JavaOptionsValidator()).size() > 0)
+            printUsage();
+        if (null ==
+                parser.getAllOptions().get(
+                        CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION))
+            printUsage();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Java.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Java.java
new file mode 100644
index 0000000..4bd2a2d
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Java.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl;
+
+public class WSDL2Java {
+    public static void main(String[] args) throws Exception {
+        WSDL2Code.main(args);
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenConfiguration.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenConfiguration.java
new file mode 100644
index 0000000..50d2bc1
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenConfiguration.java
@@ -0,0 +1,485 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen;
+
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+public class CodeGenConfiguration implements CommandLineOptionConstants {
+
+    /**  Axis Service reference*/
+    private AxisService axisService;
+    /**  Base URI */
+    private String baseURI;
+    /** path to the repository - used for evaluating policy */
+    private String repositoryPath;
+    /** Mapping file including the qname to type map */
+    private File typeMappingFile;
+
+    /** keeps the WSDL version  - default is 1.1*/
+    private String WSDLVersion = WSDL2JavaConstants.WSDL_VERSION_1;
+
+    public String getWSDLVersion() {
+        return WSDLVersion;
+    }
+
+    public void setWSDLVersion(String WSDLVersion) {
+        this.WSDLVersion = WSDLVersion;
+    }
+
+    public File getTypeMappingFile() {
+        return typeMappingFile;
+    }
+
+    public void setTypeMappingFile(File typeMappingFile) {
+        this.typeMappingFile = typeMappingFile;
+    }
+
+    /**
+     * A map to keep the custom namespace and package name mappings
+     */
+    private Map uri2PackageNameMap;
+
+
+    public Map getUri2PackageNameMap() {
+        return uri2PackageNameMap;
+    }
+
+    public void setUri2PackageNameMap(Map uri2PackageNameMap) {
+        if (this.uri2PackageNameMap==null){
+            this.uri2PackageNameMap = uri2PackageNameMap;
+        }else{
+            this.uri2PackageNameMap.putAll(uri2PackageNameMap);
+        }
+    }
+
+    /**
+     * Says whether to flatten the files or put them in specific folders
+     */
+    private boolean flattenFiles = false;
+
+    public boolean isFlattenFiles() {
+        return flattenFiles;
+    }
+
+    public void setFlattenFiles(boolean flattenFiles) {
+        this.flattenFiles = flattenFiles;
+    }
+
+    /**
+     * Folder name for the resource files
+     */
+    private  String resourceLocation = ConfigPropertyFileLoader.getResourceFolderName();
+
+    public String getResourceLocation() {
+        return resourceLocation;
+    }
+
+    public void setResourceLocation(String resourceLocation) {
+        this.resourceLocation = resourceLocation;
+    }
+
+    /**
+     * Folder name for the source files
+     */
+    private String sourceLocation  = ConfigPropertyFileLoader.getSrcFolderName();
+
+    public String getSourceLocation() {
+        return sourceLocation;
+    }
+
+    public void setSourceLocation(String sourceLocation) {
+        this.sourceLocation = sourceLocation;
+    }
+
+    /**
+     * Determines whether the parameters are wrapped or unwrapped
+     * true by default
+     */
+    private boolean parametersWrapped = true;
+
+
+    public boolean isParametersWrapped() {
+        return parametersWrapped;
+    }
+
+    public void setParametersWrapped(boolean parametersWrapped) {
+        this.parametersWrapped = parametersWrapped;
+    }
+
+    public String getBaseURI() {
+        return baseURI;
+    }
+
+    public void setBaseURI(String baseURI) {
+        this.baseURI = baseURI;
+    }
+
+    public Map getConfigurationProperties() {
+        return configurationProperties;
+    }
+
+    public void setConfigurationProperties(Map configurationProperties) {
+        this.configurationProperties = configurationProperties;
+    }
+
+
+    public void setOutputLanguage(String outputLanguage) {
+        this.outputLanguage = outputLanguage;
+    }
+
+    public void setAdvancedCodeGenEnabled(boolean advancedCodeGenEnabled) {
+        this.advancedCodeGenEnabled = advancedCodeGenEnabled;
+    }
+
+    public void setAsyncOn(boolean asyncOn) {
+        this.asyncOn = asyncOn;
+    }
+
+    public void setSyncOn(boolean syncOn) {
+        this.syncOn = syncOn;
+    }
+
+    public void setServerSide(boolean serverSide) {
+        this.serverSide = serverSide;
+    }
+
+    public void setGenerateDeployementDescriptor(boolean generateDeployementDescriptor) {
+        this.generateDeployementDescriptor = generateDeployementDescriptor;
+    }
+
+    public void setWriteTestCase(boolean writeTestCase) {
+        this.writeTestCase = writeTestCase;
+    }
+
+    public void setOutputLocation(File outputLocation) {
+        this.outputLocation = outputLocation;
+    }
+
+    private File outputLocation;
+
+    //get the defaults for these from the property file
+    private String outputLanguage = ConfigPropertyFileLoader.getDefaultLanguage();
+    private String databindingType = ConfigPropertyFileLoader.getDefaultDBFrameworkName();
+    private boolean advancedCodeGenEnabled = false;
+
+
+    private boolean asyncOn = true;
+    private boolean syncOn = true;
+    private boolean serverSide = false;
+    private boolean generateDeployementDescriptor = true;
+    private boolean writeTestCase = false;
+    private boolean writeMessageReceiver = true;
+    private String packageName = URLProcessor.DEFAULT_PACKAGE;
+
+    // Default packClasses is true, which means the classes generated
+    // by default are wrapped. The effect of this setting will be controlled
+    // to some extent, by the other settings as well.
+    private boolean packClasses = true;
+
+    private boolean generateAll = false;
+
+    //user selected portname
+    private String portName;
+    //user selected servicename
+    private String serviceName;
+
+    //option to generate server side interface or not
+    private boolean serverSideInterface = false;
+
+
+    public boolean isServerSideInterface() {
+        return serverSideInterface;
+    }
+
+    public void setServerSideInterface(boolean serverSideInterface) {
+        this.serverSideInterface = serverSideInterface;
+    }
+
+
+    public String getPortName() {
+        return portName;
+    }
+
+    public void setPortName(String portName) {
+        this.portName = portName;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    /**
+     * A hashmap to hang the property objects
+     */
+    private Map policyMap = new HashMap();
+
+    /*
+    * A hashmap of properties that may be populated on the way. extensions can populate it
+    * This can be used to keep non specific information
+    */
+    private Map configurationProperties = new HashMap();
+
+
+    public boolean isGenerateAll() {
+        return generateAll;
+    }
+
+    public void setGenerateAll(boolean generateAll) {
+        this.generateAll = generateAll;
+    }
+
+    /**
+     * Gets the wrap classes flag.
+     *
+     * @return Returns true if it is a wrap class, else returns false.
+     */
+    public boolean isPackClasses() {
+        return packClasses;
+    }
+
+    /**
+     * Sets the wrap classes flag.
+     *
+     * @param packClasses
+     */
+    public void setPackClasses(boolean packClasses) {
+        this.packClasses = packClasses;
+    }
+
+    /**
+     * Gets the policy map.
+     *
+     * @return Returns Map.
+     */
+    public Map getPolicyMap() {
+        return policyMap;
+    }
+
+    /**
+     * Sets the policy map.
+     *
+     * @param policyMap
+     */
+    public void setPolicyMap(Map policyMap) {
+        this.policyMap = policyMap;
+    }
+
+
+    /**
+     * Puts a property into the configuration.
+     *
+     * @param key
+     * @param value
+     */
+    public void putProperty(Object key, Object value) {
+        configurationProperties.put(key, value);
+    }
+
+    /**
+     * Gets the property from the configuration.
+     *
+     * @param key
+     * @return Returns the property as Object.
+     */
+    public Object getProperty(Object key) {
+        return configurationProperties.get(key);
+    }
+
+    /**
+     * Gets all property objects.
+     *
+     * @return Returns Map of all properties.
+     */
+    public Map getProperties() {
+        return configurationProperties;
+    }
+
+    private TypeMapper typeMapper;
+
+
+    /**
+     * @return Returns TypeMapper.
+     */
+    public TypeMapper getTypeMapper() {
+        return typeMapper;
+    }
+
+    /**
+     * @param typeMapper
+     */
+    public void setTypeMapper(TypeMapper typeMapper) {
+        this.typeMapper = typeMapper;
+    }
+
+    /**
+     * @return Returns String.
+     */
+    public String getDatabindingType() {
+        return databindingType;
+    }
+
+    /**
+     * @param databindingType
+     */
+    public void setDatabindingType(String databindingType) {
+        this.databindingType = databindingType;
+    }
+
+
+    /**
+     * Constructor for the configuration. It populates the values using the options map.
+     *
+     * @param optionMap
+     */
+    public CodeGenConfiguration(AxisService service, Map optionMap) {
+        this.axisService = service;
+        CodegenConfigLoader.loadConfig(this,optionMap);
+    }
+
+    /**
+     * Constructor for the configuration. It populates the values using the options map.
+     *
+     * @param optionMap
+     */
+    public CodeGenConfiguration(Map optionMap) {
+        CodegenConfigLoader.loadConfig(this,optionMap);
+    }
+
+
+
+    /**
+     * @return Returns the outputLocation.
+     */
+    public File getOutputLocation() {
+        return outputLocation;
+    }
+
+    public String getOutputLanguage() {
+        return outputLanguage;
+    }
+
+    public boolean isAdvancedCodeGenEnabled() {
+        return advancedCodeGenEnabled;
+    }
+
+
+    /**
+     * @return Returns the packageName.
+     */
+    public String getPackageName() {
+        return packageName;
+    }
+
+    /**
+     * @param packageName The packageName to set.
+     */
+    public void setPackageName(String packageName) {
+        this.packageName = packageName;
+    }
+
+
+    public boolean isAsyncOn() {
+        return asyncOn;
+    }
+
+
+    public boolean isSyncOn() {
+        return syncOn;
+    }
+
+    public boolean isServerSide() {
+        return serverSide;
+    }
+
+    public boolean isGenerateDeployementDescriptor() {
+        return generateDeployementDescriptor;
+    }
+
+    public boolean isWriteTestCase() {
+        return writeTestCase;
+    }
+
+
+    public boolean isWriteMessageReceiver() {
+        return writeMessageReceiver;
+    }
+
+    public void setWriteMessageReceiver(boolean writeMessageReceiver) {
+        this.writeMessageReceiver = writeMessageReceiver;
+    }
+
+    public void setRepositoryPath(String repositoryPath) {
+        this.repositoryPath = repositoryPath;
+    }
+
+    public String getRepositoryPath() {
+        return repositoryPath;
+    }
+
+    public AxisService getAxisService() {
+        return axisService;
+    }
+
+    public void setAxisService(AxisService axisService) {
+        this.axisService = axisService;
+        if (packageName == null || packageName.length() == 0 || URLProcessor.DEFAULT_PACKAGE.equals(packageName)) {
+            //use the target namespace from the axis service to form a package name
+            packageName = URLProcessor.makePackageName(
+                    axisService.getTargetNamespace()
+            );
+        }
+    }
+        
+    	/**
+	 * This flag determines whether the generated classes are expected to be
+	 * backword compatible with Axis 1.x
+	 */
+	private boolean backwordCompatibilityMode = false;
+
+	public boolean isBackwordCompatibilityMode() {
+		return backwordCompatibilityMode;
+	}
+
+	public void setBackwordCompatibilityMode(boolean backwordCompatibilityMode) {
+		this.backwordCompatibilityMode = backwordCompatibilityMode;
+	}
+
+    /**
+     * Should we suppress namespace prefixes
+     */
+    private boolean suppressPrefixesMode = false;
+
+    public boolean isSuppressPrefixesMode() {
+        return suppressPrefixesMode;
+    }
+
+    public void setSuppressPrefixesMode(boolean suppressPrefixesMode) {
+        this.suppressPrefixesMode = suppressPrefixesMode;
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenerationEngine.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenerationEngine.java
new file mode 100644
index 0000000..fe6cbda
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenerationEngine.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
+import org.apache.axis2.description.WSDL20ToAxisServiceBuilder;
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.util.XMLUtils;
+import org.apache.axis2.wsdl.codegen.emitter.Emitter;
+import org.apache.axis2.wsdl.codegen.extension.CodeGenExtension;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+import javax.wsdl.Definition;
+import javax.wsdl.WSDLException;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class CodeGenerationEngine {
+
+    private static final Log log = LogFactory.getLog(CodeGenerationEngine.class);
+
+    /** Array List for pre-extensions. Extensions that run before the emitter */
+    private List preExtensions = new ArrayList();
+    /** Array List for post-extensions. Extensions that run after the codegens*/
+    private List postExtensions = new ArrayList();
+
+    /** Codegen configuration  reference */
+    private CodeGenConfiguration configuration;
+
+    /**
+     * 
+     * @param configuration
+     * @throws CodeGenerationException
+     */
+    public CodeGenerationEngine(CodeGenConfiguration configuration) throws CodeGenerationException {
+        this.configuration = configuration;
+        loadExtensions();
+    }
+
+    /**
+     *
+     * @param parser
+     * @throws CodeGenerationException
+     */
+    public CodeGenerationEngine(CommandLineOptionParser parser) throws CodeGenerationException {
+        Map allOptions = parser.getAllOptions();
+        String wsdlUri;
+        try {
+
+            CommandLineOption option =
+                    (CommandLineOption)allOptions.
+                            get(CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION);
+            wsdlUri = option.getOptionValue();
+            configuration = new CodeGenConfiguration(allOptions);
+            
+
+            if(CommandLineOptionConstants.WSDL2JavaConstants.WSDL_VERSION_2.
+                    equals(configuration.getWSDLVersion())){
+                configuration.setAxisService(
+                        new WSDL20ToAxisServiceBuilder(wsdlUri,
+                                configuration.getServiceName(),
+                                configuration.getPortName()).
+                                populateService());
+            }else{
+                //It'll be WSDL 1.1
+                Definition wsdl4jDef = readInTheWSDLFile(wsdlUri);
+                QName serviceQname = null;
+                if (configuration.getServiceName()!=null){
+                    serviceQname = new QName(wsdl4jDef.getTargetNamespace(), configuration.getServiceName());
+                }
+
+                configuration.setAxisService(new WSDL11ToAxisServiceBuilder(
+                        wsdl4jDef,
+                        serviceQname,
+                        configuration.getPortName()).
+                        populateService()
+                );
+            }
+            
+        } catch (AxisFault axisFault) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("engine.wsdlParsingException"), axisFault);
+        } catch (WSDLException e) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("engine.wsdlParsingException"), e);
+        } catch (Exception e) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("engine.wsdlParsingException"), e);
+        }
+
+        configuration.setBaseURI(getBaseURI(wsdlUri));
+        loadExtensions();
+    }
+
+    /**
+     * Loads the relevant preExtensions
+     *
+     * @throws CodeGenerationException
+     */
+    private void loadExtensions() throws CodeGenerationException {
+        //load pre extensions
+        String[] extensions = ConfigPropertyFileLoader.getExtensionClassNames();
+        if (extensions!=null){
+            for (int i = 0; i < extensions.length; i++) {
+                //load the Extension class
+                addPreExtension((CodeGenExtension) getObjectFromClassName(extensions[i].trim()));
+            }
+        }
+        
+        //load post extensions
+        String[] postExtensions = ConfigPropertyFileLoader.getPostExtensionClassNames();
+        if (postExtensions!=null){
+            for (int i = 0; i < postExtensions.length; i++) {
+                //load the Extension class
+                addPostExtension((CodeGenExtension) getObjectFromClassName(postExtensions[i].trim()));
+            }
+        }
+
+    }
+
+    /**
+     * Adds a given extension to the list
+     * @param ext
+     */
+    private void addPreExtension(CodeGenExtension ext) {
+        if(ext != null) {
+            preExtensions.add(ext);
+        }
+    }
+
+    /**
+     * Adds a given extension to the list
+     * @param ext
+     */
+    private void addPostExtension(CodeGenExtension ext) {
+        if(ext != null) {
+            postExtensions.add(ext);
+        }
+    }
+
+    /**
+     * Generate the code!!
+     * @throws CodeGenerationException
+     */
+    public void generate() throws CodeGenerationException {
+        try {
+            //engage the pre-extensions
+            for (int i = 0; i < preExtensions.size(); i++) {
+                ((CodeGenExtension) preExtensions.get(i)).engage(configuration);
+            }
+
+            Emitter emitter;
+
+
+            TypeMapper mapper = configuration.getTypeMapper();
+            if (mapper == null) {
+                // this check is redundant here. The default databinding extension should
+                // have already figured this out and thrown an error message. However in case the
+                // users decides to mess with the config it is safe to keep this check in order to throw
+                // a meaningful error message
+                throw new CodeGenerationException(CodegenMessages.getMessage("engine.noProperDatabindingException"));
+            }
+
+            //Find and invoke the emitter by reflection
+            Map emitterMap = ConfigPropertyFileLoader.getLanguageEmitterMap();
+            String className = (String)emitterMap.get(configuration.getOutputLanguage());
+            if (className != null) {
+                emitter = (Emitter) getObjectFromClassName(className);
+                emitter.setCodeGenConfiguration(configuration);
+                emitter.setMapper(mapper);
+            } else {
+                throw new Exception(CodegenMessages.getMessage("engine.emitterMissing"));
+            }
+
+
+            //invoke the necessary methods in the emitter
+            if (configuration.isServerSide()) {
+                emitter.emitSkeleton();
+                // if the users want both client and server, it would be in the
+                // generate all option
+                if (configuration.isGenerateAll()) {
+                    emitter.emitStub();
+                }
+            }else{
+                emitter.emitStub();
+            }
+
+            //engage the post-extensions
+            for (int i = 0; i < postExtensions.size(); i++) {
+                ((CodeGenExtension) postExtensions.get(i)).engage(configuration);
+            }
+
+        } catch (ClassCastException e) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("engine.wrongEmitter"), e);
+        } catch (Exception e) {
+            throw new CodeGenerationException(e);
+        }
+
+
+    }
+
+
+    /**
+     * Read the WSDL file
+     * @param uri
+     * @throws WSDLException
+     */
+    private Definition readInTheWSDLFile(String uri) throws WSDLException {
+
+        WSDLReader reader =
+                WSDLFactory.newInstance().newWSDLReader();
+        reader.setFeature("javax.wsdl.importDocuments", true);
+
+        File file = new File(uri);
+        String baseURI;
+
+        if (uri.startsWith("http://")){
+            baseURI = uri;
+        } else{
+            if(file.getParentFile() == null){
+                try {
+                    baseURI = new File(".").getCanonicalFile().toURI().toString();
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                }
+            } else {
+                baseURI = file.getParentFile().toURI().toString();
+            }
+        }
+
+
+        Document doc;
+        try {
+            doc = XMLUtils.newDocument(uri);
+        } catch (ParserConfigurationException e) {
+            throw new WSDLException(WSDLException.PARSER_ERROR,
+                    "Parser Configuration Error",
+                    e);
+        } catch (SAXException e) {
+            throw new WSDLException(WSDLException.PARSER_ERROR,
+                    "Parser SAX Error",
+                    e);
+
+        } catch (IOException e) {
+            throw new WSDLException(WSDLException.INVALID_WSDL, "IO Error", e);
+        }
+
+        return reader.readWSDL(baseURI, doc);
+    }
+
+
+
+
+    /**
+     * gets a object from the class
+     *
+     * @param className
+     */
+    private Object getObjectFromClassName(String className) throws CodeGenerationException {
+        try {
+            Class extensionClass = getClass().getClassLoader().loadClass(className);
+            return extensionClass.newInstance();
+        } catch (ClassNotFoundException e) {
+            log.debug(CodegenMessages.getMessage("engine.extensionLoadProblem"), e);
+            return null;
+        } catch (InstantiationException e) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("engine.extensionInstantiationProblem"), e);
+        } catch (IllegalAccessException e) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("engine.illegalExtension"), e);
+        } catch (NoClassDefFoundError e) {
+            log.debug(CodegenMessages.getMessage("engine.extensionLoadProblem"), e);
+            return null;
+        } catch (Exception e) {
+            throw new CodeGenerationException(e);
+        }
+
+    }
+
+    /**
+     * calculates the base URI
+     * Needs improvement but works fine for now ;)
+     * @param currentURI
+     */
+    private String getBaseURI(String currentURI){
+        String baseURI;
+        if (!currentURI.startsWith("http://")) {
+            // the uri should be a file
+            try {
+                currentURI = new File(currentURI).toURL().toString();
+            } catch (MalformedURLException e) {
+                throw new RuntimeException("Cannot find baseuri for :" + currentURI);
+            }
+        }
+        String uriFragment = currentURI.substring(0, currentURI.lastIndexOf("/"));
+        baseURI = uriFragment + (uriFragment.endsWith("/") ? "" : "/");
+        return baseURI;
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenerationException.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenerationException.java
new file mode 100644
index 0000000..048490b
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodeGenerationException.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen;
+
+public class CodeGenerationException extends Exception {
+
+    private static final long serialVersionUID = 7763140075166886795L;
+
+	public CodeGenerationException(String message) {
+        super(message);
+    }
+
+    public CodeGenerationException(String message, Throwable throwable) {
+        super(message, throwable);
+    }
+
+    public CodeGenerationException(Throwable throwable) {
+        super(throwable);
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodegenConfigLoader.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodegenConfigLoader.java
new file mode 100644
index 0000000..8649fb1
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/CodegenConfigLoader.java
@@ -0,0 +1,247 @@
+package org.apache.axis2.wsdl.codegen;

+

+import org.apache.axis2.util.CommandLineOption;

+import org.apache.axis2.util.CommandLineOptionConstants;

+import org.apache.axis2.wsdl.i18n.CodegenMessages;

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.IOException;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.Properties;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+class CodegenConfigLoader implements CommandLineOptionConstants {

+

+    public static void loadConfig(CodeGenConfiguration config, Map optionMap) {

+        String outputLocation = "."; //default output directory is the current working directory

+        CommandLineOption commandLineOption = loadOption(WSDL2JavaConstants.OUTPUT_LOCATION_OPTION, WSDL2JavaConstants.OUTPUT_LOCATION_OPTION_LONG, optionMap);

+

+        if (commandLineOption != null) {

+            outputLocation = commandLineOption.getOptionValue();

+        }

+        File outputLocationFile = new File(outputLocation);

+        config.setOutputLocation(outputLocationFile);

+

+        //check and create the directories

+        if (outputLocationFile.exists()) {

+            if (outputLocationFile.isFile()) {

+                throw new RuntimeException(

+                        CodegenMessages.getMessage("options.notADirectoryException"));

+            }

+        } else {

+            outputLocationFile.mkdirs();

+        }

+

+        config.setServerSide(loadOption(WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION, WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION_LONG, optionMap) != null);

+        config.setGenerateDeployementDescriptor(loadOption(WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION,

+                WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION_LONG, optionMap) !=

+                null);

+        config.setWriteTestCase(loadOption(WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION, WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION_LONG, optionMap) != null);

+

+        boolean asyncFlagPresent =

+                (loadOption(WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION, WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION_LONG, optionMap) != null);

+        boolean syncFlagPresent =

+                (loadOption(WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION, WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION_LONG, optionMap) != null);

+        if (asyncFlagPresent) {

+            config.setAsyncOn(true);

+            config.setSyncOn(false);

+        }

+        if (syncFlagPresent) {

+            config.setAsyncOn(false);

+            config.setSyncOn(true);

+        }

+

+        commandLineOption = loadOption(WSDL2JavaConstants.PACKAGE_OPTION, WSDL2JavaConstants.PACKAGE_OPTION_LONG, optionMap);

+        if (commandLineOption != null) {

+            config.setPackageName(commandLineOption.getOptionValue());

+        }

+

+        commandLineOption = loadOption(WSDL2JavaConstants.STUB_LANGUAGE_OPTION, WSDL2JavaConstants.STUB_LANGUAGE_OPTION_LONG, optionMap);

+        if (commandLineOption != null) {

+            config.setOutputLanguage(commandLineOption.getOptionValue());

+        }

+

+        commandLineOption = loadOption(WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION, WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION_LONG, optionMap);

+        if (commandLineOption != null) {

+            config.setDatabindingType(commandLineOption.getOptionValue());

+        }

+

+

+        commandLineOption = loadOption(WSDL2JavaConstants.UNPACK_CLASSES_OPTION, WSDL2JavaConstants.UNPACK_CLASSES_OPTION_LONG, optionMap);

+        if (commandLineOption != null) {

+            config.setPackClasses(false);

+        }

+

+        // source folder

+        commandLineOption = loadOption(WSDL2JavaConstants.SOURCE_FOLDER_NAME_OPTION,

+                WSDL2JavaConstants.SOURCE_FOLDER_NAME_OPTION_LONG, optionMap);

+        if (commandLineOption != null) {

+            config.setSourceLocation(commandLineOption.getOptionValue());

+        }

+

+         // resource folder

+        commandLineOption = loadOption(WSDL2JavaConstants.RESOURCE_FOLDER_OPTION,

+                WSDL2JavaConstants.RESOURCE_FOLDER_OPTION_LONG, optionMap);

+        if (commandLineOption != null) {

+            config.setResourceLocation(commandLineOption.getOptionValue());

+        }

+

+        commandLineOption = loadOption(WSDL2JavaConstants.PORT_NAME_OPTION, WSDL2JavaConstants.PORT_NAME_OPTION_LONG, optionMap);

+        config.setPortName(commandLineOption != null ? commandLineOption.getOptionValue() : null);

+

+        commandLineOption = loadOption(WSDL2JavaConstants.SERVICE_NAME_OPTION, WSDL2JavaConstants.SERVICE_NAME_OPTION_LONG, optionMap);

+        config.setServiceName(commandLineOption != null ? commandLineOption.getOptionValue() : null);

+

+        commandLineOption = loadOption(WSDL2JavaConstants.REPOSITORY_PATH_OPTION, WSDL2JavaConstants.REPOSITORY_PATH_OPTION_LONG, optionMap);

+        config.setRepositoryPath(commandLineOption != null ? commandLineOption.getOptionValue() : null);

+

+        config.setServerSideInterface(loadOption(WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION, WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION_LONG, optionMap)!=null);

+

+        config.setGenerateAll(loadOption(WSDL2JavaConstants.GENERATE_ALL_OPTION, WSDL2JavaConstants.GENERATE_ALL_OPTION_LONG, optionMap)!=null);

+

+        //populate the external mapping

+        commandLineOption = loadOption(

+                WSDL2JavaConstants.EXTERNAL_MAPPING_OPTION,

+                WSDL2JavaConstants.EXTERNAL_MAPPING_OPTION_LONG,

+                optionMap);

+        if (commandLineOption!=null){

+            try {

+                config.setTypeMappingFile(new File(commandLineOption.getOptionValue()));

+            } catch (Exception e) {

+                throw new RuntimeException(

+                        CodegenMessages.getMessage("options.nomappingFile"), e);

+            }

+        }

+

+        // load the namespace to package list

+        commandLineOption = loadOption(

+                WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION,

+                WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION_LONG,

+                optionMap);

+        if (commandLineOption != null) {

+            //the syntax for the value of the namespaces and packages is

+            //to be a comma seperated list with uri=packagename,uri=packagename...

+            String value = commandLineOption.getOptionValue();

+            if (value != null) {

+                // Try treating the values as a name=value pair separated by comma's

+                if (value.indexOf('=') != -1) {

+                    String valuepairs[] = value.split(",");

+                    if (valuepairs.length > 0) {

+                        //put them in the hash map

+                        HashMap map = new HashMap(valuepairs.length);

+                        for (int i = 0; i < valuepairs.length; i++) {

+                            String values[] = valuepairs[i].split("=");

+                            if (values.length == 2) {

+                                map.put(values[0], values[1]);

+                            }

+                        }

+                        config.setUri2PackageNameMap(map);

+                    }

+                } else {

+                    // Try loading the properties from the file specified

+                    try {

+                        Properties p = new Properties();

+                        p.load(new FileInputStream(value));

+                        config.setUri2PackageNameMap(p);

+                    } catch (IOException e) {

+                        throw new RuntimeException(

+                                CodegenMessages.

+                                        getMessage("options.noFile", value), e);

+                    }

+                }

+            }

+        }

+

+         commandLineOption =

+                loadOption(WSDL2JavaConstants.UNWRAP_PARAMETERS,

+                        WSDL2JavaConstants.UNWRAP_PARAMETERS_LONG,

+                        optionMap);

+          if (commandLineOption!=null){

+              config.setParametersWrapped(false);

+          }

+

+        commandLineOption =

+                loadOption(WSDL2JavaConstants.WSDL_VERSION_OPTION,

+                        WSDL2JavaConstants.WSDL_VERSION_OPTION_LONG,

+                        optionMap);

+        if (commandLineOption!=null){

+            String optionValue = commandLineOption.getOptionValue();

+

+            if (WSDL2JavaConstants.WSDL_VERSION_2.equals(optionValue) ||

+                    WSDL2JavaConstants.WSDL_VERSION_2_OPTIONAL.equals(optionValue) ){

+                //users can say either 2.0 or 2 - we  just set it to the constant

+                config.setWSDLVersion(WSDL2JavaConstants.WSDL_VERSION_2);

+            } //ignore the other cases - they'll be taken as 1.1

+

+        }

+

+        config

+				.setFlattenFiles(loadOption(

+						WSDL2JavaConstants.FLATTEN_FILES_OPTION,

+						WSDL2JavaConstants.FLATTEN_FILES_OPTION_LONG, optionMap) != null);

+

+		commandLineOption = loadOption(

+				WSDL2JavaConstants.BACKWORD_COMPATIBILITY_OPTION,

+				WSDL2JavaConstants.BACKWORD_COMPATIBILITY_OPTION_LONG,

+				optionMap);

+		if (commandLineOption != null) {

+			config.setBackwordCompatibilityMode(true);

+		}

+

+        commandLineOption = loadOption(

+                WSDL2JavaConstants.SUPPRESS_PREFIXES_OPTION,

+                WSDL2JavaConstants.SUPPRESS_PREFIXES_OPTION_LONG,

+                optionMap);

+        if (commandLineOption != null) {

+            config.setSuppressPrefixesMode(true);

+        }

+

+        // loop through the map and find parameters having the extra prefix.

+        //put them in the property map

+        Iterator keyIterator = optionMap.keySet().iterator();

+        while (keyIterator.hasNext()) {

+            Object key = keyIterator.next();

+            CommandLineOption option = (CommandLineOption) optionMap.get(key);

+            if (key.toString().startsWith(WSDL2JavaConstants.EXTRA_OPTIONTYPE_PREFIX)) {

+                //add this to the property map

+                config.getProperties().put(key.toString().replaceFirst(WSDL2JavaConstants.EXTRA_OPTIONTYPE_PREFIX, ""), option.getOptionValue());

+            }

+        }

+

+

+    }

+

+    private static CommandLineOption loadOption(String shortOption, String longOption, Map options) {

+        //short option gets precedence

+        CommandLineOption option = null;

+        if (longOption != null) {

+            option = (CommandLineOption) options.get(longOption);

+            if (option != null) {

+                return option;

+            }

+        }

+        if (shortOption != null) {

+            option = (CommandLineOption) options.get(shortOption);

+        }

+

+        return option;

+    }

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/codegen-config.properties b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/codegen-config.properties
new file mode 100644
index 0000000..80bd6a4
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/codegen-config.properties
@@ -0,0 +1,129 @@
+#######################################################################################################################
+#####################   code generator property file  #################################################################
+#######################################################################################################################
+# Extensions - The extension class names are comma separated
+# and these extensions will run before the main emitter
+# these are loaded in their lexical order
+# Note the last extension - It includes a check to figure out whether proper databinding has taken place
+# This extension should appear AFTER all the databinding extensions inorder to function properly
+codegen.extension=org.apache.axis2.wsdl.codegen.extension.SchemaUnwrapperExtension,org.apache.axis2.wsdl.codegen.extension.JaxMeExtension, \
+  org.apache.axis2.wsdl.codegen.extension.XMLBeansExtension, \
+  org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension, \
+  org.apache.axis2.wsdl.codegen.extension.JiBXExtension, \
+  org.apache.axis2.wsdl.codegen.extension.JAXBRIExtension, \
+  org.apache.axis2.wsdl.codegen.extension.TypeMapperExtension, \
+  org.apache.axis2.wsdl.codegen.extension.DefaultDatabindingExtension, \
+  org.apache.axis2.wsdl.codegen.extension.PolicyEvaluator
+#extensions that work after the main emitter. These will include functionality such as
+#formatters
+post.codegen.extension=org.apache.axis2.wsdl.codegen.extension.JavaPrettyPrinterExtension, \
+  org.apache.axis2.wsdl.codegen.extension.XMLPrettyPrinterExtension, \
+  org.apache.axis2.wsdl.codegen.extension.WSDLPrettyPrinterExtension
+#codegen.extension=org.apache.axis2.wsdl.codegen.extension.AxisBindingBuilder,org.apache.axis2.wsdl.codegen.extension.WSDLValidatorExtension,org.apache.axis2.wsdl.codegen.extension.PackageFinder,org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension
+# The third party schemas to be loaded. e.g. The Xmime extension
+# Note - these will be loaded from the org.apache.axis2.wsdl.codegen.schema package.
+# so whatever the third party schema's that are listed here should be present there
+#codegen.thirdparty.schema=
+codegen.thirdparty.schema=xmime.xsd,soap-enc.xsd
+#####################################################################################################################
+#####################################################################################################################
+# Codegen data binding frameworks and their related information
+# The names of the codegeneration frameworks in lexical order
+# these are the names that should be passed onto the tool as arguments as well
+codegen.databinding.frameworks=adb,xmlbeans,jaxme,jibx,jaxbri,none
+# this property keeps the names of the databinding frameworks which support
+# unwrapping 
+codegen.databinding.unwrap.supported=adb,xmlbeans,jibx
+# this property keeps the names of the databinding frameworks that handle unwrapping
+# directly (rather than by using the unwrapper extension)
+codegen.databinding.unwrap.direct=jibx
+# the related extensions for the specified data binding frameworks above
+# Note -  these are in the lexical order of the framework names. There is an implicit assumption
+# that a given databinding framework will be processed only by one extension
+codegen.databinding.extensions=org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension,org.apache.axis2.wsdl.codegen.extension.XMLBeansExtension,org.apache.axis2.wsdl.codegen.extension.JaxMeExtension,org.apache.axis2.wsdl.codegen.extension.JiBXExtension,org.apache.axis2.wsdl.codegen.extension.JAXBRIExtension,org.apache.axis2.wsdl.codegen.extension.DefaultDatabindingExtension
+# the default data binding framework name
+codegen.databinding.frameworks.default=adb
+# the databinding templates -
+codegen.databinding.adb.supporter.template=/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl
+codegen.databinding.xmlbeans.supporter.template=/org/apache/axis2/xmlbeans/template/XmlbeansDatabindingTemplate.xsl
+codegen.databinding.jaxme.supporter.template=/org/apache/axis2/wsdl/template/java/JaxmeDatabindingTemplate.xsl
+codegen.databinding.jibx.supporter.template=/org/apache/axis2/jibx/template/JibXDatabindingTemplate.xsl
+codegen.databinding.jaxbri.supporter.template=/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl
+codegen.databinding.none.supporter.template=/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl
+
+codegen.databinding.testobject.template=/org/apache/axis2/wsdl/template/java/TestObjectCreationTemplate.xsl
+#####################################################################################################################
+#####################################################################################################################
+# Language types - these are the language types that the code generator understands. Again this is the name of the
+# language that should be passed from the tool as well
+#
+codegen.languages=java,c-sharp,c
+# Emitter class is the  major code generator class that should be changed according to the language.
+# The emiiters need to implement the org.apache.axis2.wsdl.codegen.emitter.Emitter interface
+# Note - The emitters should appear in the lexical order of the languages. So the language java in the above
+# list corresponds to the org.apache.axis2.wsdl.codegen.emitter.JavaEmitter
+codegen.emitters=org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter,org.apache.axis2.wsdl.codegen.emitter.CSharpEmitter,org.apache.axis2.wsdl.codegen.emitter.CEmitter
+# Default language, this is the default language that would be picked when no language is specified. it should be
+# one of the languages specified above
+codegen.languages.default=java
+# Default source folder name
+codegen.general.src.name=src
+# Default resource folder name
+codegen.general.resource.name=resources
+#####################################################################################################################
+########################  Language specific section #################################################################
+#####################################################################################################################
+# The language specific section has a special custom style. The language name comes first and separated from the period
+# a unique name. These parameters will be included in a hashmap that is will be stored in another hash map with the
+# language as the key
+#####################################################################################################################
+# Java section  - Templates.
+# The format of the templates is <writer-class-name>,<template-name>
+# Note this section is specific to the emitter logic. One can have anything here!
+java.interface.template=org.apache.axis2.wsdl.codegen.writer.InterfaceWriter,/org/apache/axis2/wsdl/template/java/InterfaceTemplate.xsl
+java.interface.impl.template=org.apache.axis2.wsdl.codegen.writer.InterfaceImplementationWriter,/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
+java.bean.template=org.apache.axis2.wsdl.codegen.writer.BeanWriter,/org/apache/axis2/wsdl/template/java/BeanTemplate.xsl
+java.callback.template=org.apache.axis2.wsdl.codegen.writer.CallbackHandlerWriter,/org/apache/axis2/wsdl/template/java/CallbackHandlerTemplate.xsl
+java.exception.template=org.apache.axis2.wsdl.codegen.writer.ExceptionWriter,/org/apache/axis2/wsdl/template/java/ExceptionTemplate.xsl
+java.skeleton.template=org.apache.axis2.wsdl.codegen.writer.SkeletonWriter,/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl
+java.skeleton.interface.template=org.apache.axis2.wsdl.codegen.writer.SkeletonInterfaceWriter,/org/apache/axis2/wsdl/template/java/SkeletonInterfaceTemplate.xsl
+java.testclass.template=org.apache.axis2.wsdl.codegen.writer.TestClassWriter,/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
+java.service.template=org.apache.axis2.wsdl.codegen.writer.ServiceXMLWriter,/org/apache/axis2/wsdl/template/general/ServiceXMLTemplate.xsl
+java.message.receiver.template=org.apache.axis2.wsdl.codegen.writer.MessageReceiverWriter,/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
+#
+java.antbuild.jaxme.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/jaxmeAntBuildTemplate.xsl
+java.antbuild.xmlbeans.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl
+java.antbuild.jibx.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/jibxAntBuildTemplate.xsl
+java.antbuild.jaxbri.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/jaxbriAntBuildTemplate.xsl
+java.antbuild.adb.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/adbAntBuildTemplate.xsl
+java.antbuild.none.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/defaultAntBuildTemplate.xsl
+# file extension for generated files from this language
+java.filename.extension=java
+#
+# ##################################################################################################################
+# C sharp section - Templates
+c-sharp.interface.template=org.apache.axis2.wsdl.codegen.writer.InterfaceWriter,/org/apache/axis2/wsdl/template/csharp/InterfaceTemplate.xsl
+c-sharp.interface.impl.template=org.apache.axis2.wsdl.codegen.writer.InterfaceImplementationWriter,/org/apache/axis2/wsdl/template/csharp/InterfaceImplementationTemplate.xsl
+c-sharp.bean.template=org.apache.axis2.wsdl.codegen.writer.BeanWriter,/org/apache/axis2/wsdl/template/csharp/BeanTemplate.xsl
+c-sharp.callback.template=org.apache.axis2.wsdl.codegen.writer.CallbackHandlerWriter,/org/apache/axis2/wsdl/template/csharp/CallbackHandlerTemplate.xsl
+c-sharp.skeleton.template=org.apache.axis2.wsdl.codegen.writer.SkeletonWriter,/org/apache/axis2/wsdl/template/csharp/SkeletonTemplate.xsl
+c-sharp.testclass.template=org.apache.axis2.wsdl.codegen.writer.TestClassWriter,/org/apache/axis2/wsdl/template/csharp/TestClassTemplate.xsl
+c-sharp.service.template=org.apache.axis2.wsdl.codegen.writer.ServiceXMLWriter,/org/apache/axis2/wsdl/template/general/ServiceXMLTemplate.xsl
+c-sharp.message.receiver.template=org.apache.axis2.wsdl.codegen.writer.MessageReceiverWriter,/org/apache/axis2/wsdl/template/csharp/MessageReceiverTemplate.xsl
+c-sharp.filename.extension=cs
+
+#####################################################################################################################
+# C section  - Templates.
+# The format of the templates is <writer-class-name>,<template-name>
+# Note this section is specific to the emitter logic. One can have anything here!
+
+c.interface.header.template=org.apache.axis2.wsdl.codegen.writer.CStubHeaderWriter,/org/apache/axis2/wsdl/template/c/StubHeaderTemplate.xsl
+c.interface.impl.template=org.apache.axis2.wsdl.codegen.writer.CStubSourceWriter,/org/apache/axis2/wsdl/template/c/StubSourceTemplate.xsl
+c.skeleton.header.template=org.apache.axis2.wsdl.codegen.writer.CSkelHeaderWriter,/org/apache/axis2/wsdl/template/c/SkelHeaderTemplate.xsl
+c.skeleton.impl.template=org.apache.axis2.wsdl.codegen.writer.CSkelSourceWriter,/org/apache/axis2/wsdl/template/c/SkelSourceTemplate.xsl
+c.svc_skeleton.template=org.apache.axis2.wsdl.codegen.writer.CSvcSkeletonWriter,/org/apache/axis2/wsdl/template/c/ServiceSkeleton.xsl
+c.service.template=org.apache.axis2.wsdl.codegen.writer.CServiceXMLWriter,/org/apache/axis2/wsdl/template/c/ServiceXMLTemplate.xsl
+
+# file extension for generated source files from this language
+c.filename.extension=c
+
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java
new file mode 100644
index 0000000..c8758e2
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java
@@ -0,0 +1,2280 @@
+package org.apache.axis2.wsdl.codegen.emitter;
+
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.description.*;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.PolicyUtil;
+import org.apache.axis2.util.Utils;
+import org.apache.axis2.util.XSLTUtils;
+import org.apache.axis2.wsdl.SOAPHeaderMessage;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.WSDLUtil;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.codegen.writer.*;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+import org.apache.axis2.wsdl.util.*;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.neethi.Policy;
+import org.apache.ws.commons.schema.XmlSchema;
+//import org.apache.woden.internal.util.dom.DOM2Writer;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.*;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+
+public class AxisServiceBasedMultiLanguageEmitter implements Emitter {
+
+    protected static final String CALL_BACK_HANDLER_SUFFIX = "CallbackHandler";
+    protected static final String STUB_SUFFIX = "Stub";
+    protected static final String TEST_SUFFIX = "Test";
+    protected static final String SKELETON_CLASS_SUFFIX = "Skeleton";
+    protected static final String SKELETON_CLASS_SUFFIX_BACK = "Impl";
+    protected static final String SKELETON_INTERFACE_SUFFIX = "SkeletonInterface";
+    // keep a seperate variable for  SKELETON_INTERFACE_SUFFIX_BACK although it is
+    // "" to accomadate any future changes easily.
+    protected static final String SKELETON_INTERFACE_SUFFIX_BACK = "";
+    protected static final String MESSAGE_RECEIVER_SUFFIX = "MessageReceiver";
+    protected static final String FAULT_SUFFIX = "Exception";
+    protected static final String DATABINDING_SUPPORTER_NAME_SUFFIX = "DatabindingSupporter";
+
+    protected static Map mepToClassMap;
+    protected static Map mepToSuffixMap;
+
+    protected int uniqueFaultNameCounter = 0;
+    /**
+     * Field constructorMap
+     */
+    protected static HashMap constructorMap = new HashMap(50);
+
+    //~--- static initializers ------------------------------------------------
+
+    static {
+
+        // Type maps to a valid initialization value for that type
+        // Type var = new Type(arg)
+        // Where "Type" is the key and "new Type(arg)" is the string stored
+        // Used in emitting test cases and server skeletons.
+        constructorMap.put("int", "0");
+        constructorMap.put("float", "0");
+        constructorMap.put("boolean", "true");
+        constructorMap.put("double", "0");
+        constructorMap.put("byte", "(byte)0");
+        constructorMap.put("short", "(short)0");
+        constructorMap.put("long", "0");
+        constructorMap.put("java.lang.Boolean", "new java.lang.Boolean(false)");
+        constructorMap.put("java.lang.Byte", "new java.lang.Byte((byte)0)");
+        constructorMap.put("java.lang.Double", "new java.lang.Double(0)");
+        constructorMap.put("java.lang.Float", "new java.lang.Float(0)");
+        constructorMap.put("java.lang.Integer", "new java.lang.Integer(0)");
+        constructorMap.put("java.lang.Long", "new java.lang.Long(0)");
+        constructorMap.put("java.lang.Short", "new java.lang.Short((short)0)");
+        constructorMap.put("java.math.BigDecimal", "new java.math.BigDecimal(0)");
+        constructorMap.put("java.math.BigInteger", "new java.math.BigInteger(\"0\")");
+        constructorMap.put("java.lang.Object", "new java.lang.String()");
+        constructorMap.put("byte[]", "new byte[0]");
+        constructorMap.put("java.util.Calendar", "java.util.Calendar.getInstance()");
+        constructorMap.put("javax.xml.namespace.QName",
+                "new javax.xml.namespace.QName(\"http://foo\", \"bar\")");
+
+        //populate the MEP -> class map
+        mepToClassMap = new HashMap();
+        mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY, "org.apache.axis2.receivers.AbstractInMessageReceiver");
+        mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY, "org.apache.axis2.receivers.AbstractInMessageReceiver");
+        mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY, "org.apache.axis2.receivers.AbstractRobustInMessageReceiver");
+        mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY, "org.apache.axis2.receivers.AbstractRobustInMessageReceiver");
+        mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT, "org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver");
+        mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT, "org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver");
+
+        //populate the MEP -> suffix map
+        mepToSuffixMap = new HashMap();
+        mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
+        mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
+        mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
+        mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
+        mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT, MESSAGE_RECEIVER_SUFFIX + "InOut");
+        mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT, MESSAGE_RECEIVER_SUFFIX + "InOut");
+        //register the other types as necessary
+    }
+
+    //~--- fields -------------------------------------------------------------
+    protected static final Log log = LogFactory.getLog(AxisServiceBasedMultiLanguageEmitter.class);
+    protected URIResolver resolver;
+
+    protected Map infoHolder;
+
+    protected CodeGenConfiguration codeGenConfiguration;
+
+    protected TypeMapper mapper;
+
+    protected AxisService axisService;
+
+    //a map to keep the fault classNames
+    protected Map fullyQualifiedFaultClassNameMap = new HashMap();
+    protected Map faultClassNameMap = new HashMap();
+
+    protected Map instantiatableMessageClassNames = new HashMap();
+
+    protected static final String TEST_SRC_DIR_NAME = "test";
+
+
+    /**
+     * default constructor - builds
+     */
+    public AxisServiceBasedMultiLanguageEmitter() {
+        infoHolder = new HashMap();
+    }
+
+    /**
+     * Sets the relevant codegen configuration
+     * @see Emitter#setCodeGenConfiguration(org.apache.axis2.wsdl.codegen.CodeGenConfiguration)
+     * @param configuration
+     */
+    public void setCodeGenConfiguration(CodeGenConfiguration configuration) {
+        this.codeGenConfiguration = configuration;
+        this.axisService = codeGenConfiguration.getAxisService();
+        resolver = new XSLTIncludeResolver(codeGenConfiguration);
+    }
+
+    /**
+     * Sets the type mapper
+     * @see Emitter#setMapper(org.apache.axis2.wsdl.databinding.TypeMapper)
+     * @param mapper
+     */
+    public void setMapper(TypeMapper mapper) {
+        this.mapper = mapper;
+    }
+
+
+
+    /**
+     * Update mapper for the stub
+     */
+    protected void updateMapperForStub() {
+        updateMapperClassnames(getFullyQualifiedStubName());
+    }
+
+    /**
+     * Returns the fully qualified Stub name
+     * reused in many methods
+     * @return classname
+     */
+    protected String getFullyQualifiedStubName() {
+        String packageName = codeGenConfiguration.getPackageName();
+        String localPart = makeJavaClassName(axisService.getName());
+        return packageName + "." + localPart + STUB_SUFFIX;
+    }
+
+    /**
+     * rests the fault name maps
+     */
+    protected void resetFaultNames() {
+        fullyQualifiedFaultClassNameMap.clear();
+        faultClassNameMap.clear();
+    }
+
+    /**
+     * Populate a map of fault class names
+     */
+    protected void generateAndPopulateFaultNames() {
+        //loop through and find the faults
+        Iterator operations = axisService.getOperations();
+        AxisOperation operation;
+        AxisMessage faultMessage;
+        while (operations.hasNext()) {
+            operation = (AxisOperation) operations.next();
+            ArrayList faultMessages = operation.getFaultMessages();
+            for (int i = 0; i < faultMessages.size(); i++) {
+                faultMessage = (AxisMessage) faultMessages.get(i);
+                //make a unique name and put that in the hashmap
+                if (!fullyQualifiedFaultClassNameMap.
+                        containsKey(faultMessage.getElementQName())) {
+                    //make a name
+                    String className = makeJavaClassName(faultMessage.getName()
+                            + FAULT_SUFFIX);
+                    while (fullyQualifiedFaultClassNameMap.containsValue(className)) {
+                        className = makeJavaClassName(className + (uniqueFaultNameCounter++));
+                    }
+
+                    fullyQualifiedFaultClassNameMap.put(
+                            faultMessage.getElementQName(),
+                            className);
+                    //we've to keep track of the fault base names seperately
+                    faultClassNameMap.put(faultMessage.getElementQName(),
+                            className);
+
+                }
+            }
+
+        }
+    }
+
+    /**
+     * Emits the stubcode with bindings.
+     * @see org.apache.axis2.wsdl.codegen.emitter.Emitter#emitStub()
+     * @throws CodeGenerationException
+     */
+    public void emitStub() throws CodeGenerationException {
+        try{
+            // see the comment at updateMapperClassnames for details and reasons for
+            // calling this method
+            if (mapper.isObjectMappingPresent()) {
+                updateMapperForStub();
+            } else {
+                copyToFaultMap();
+            }
+
+            //generate and populate the fault names before hand. We need that for
+            //the smooth opration of the thing
+            //first reset the fault names and recreate it
+            resetFaultNames();
+            generateAndPopulateFaultNames();
+            updateFaultPackageForStub();
+
+            // write the inteface
+            // feed the binding information also
+            // note that we do not create this interface if the user switched on the wrap classes mode
+            if (!codeGenConfiguration.isPackClasses()) {
+                writeInterface(false);
+            }
+
+            // write the call back handlers
+            writeCallBackHandlers();
+
+            // write the Exceptions
+            writeExceptions();
+
+            // write interface implementations
+            writeInterfaceImplementation();
+
+            // write the test classes
+            writeTestClasses();
+
+            // write an ant build file
+            // Note that ant build is generated only once
+            // and that has to happen here only if the
+            // client side code is required
+            if (!codeGenConfiguration.isGenerateAll()) {
+                //our logic for the build xml is that it will
+                //only be written when not flattened
+                if (!codeGenConfiguration.isFlattenFiles()) {
+                    writeAntBuild();
+                }
+            }
+        }catch(CodeGenerationException ce){
+            throw ce;
+        }catch(Exception e){
+            throw new CodeGenerationException(e);
+        }
+    }
+
+    /**
+     * Writes the Ant build.
+     *
+     * @throws Exception
+     */
+    protected void writeAntBuild() throws Exception {
+
+        // Write the service xml in a folder with the
+        Document skeletonModel = createDOMDocumentForAntBuild();
+        debugLogDocument("Document for ant build:", skeletonModel);
+        AntBuildWriter antBuildWriter = new AntBuildWriter(codeGenConfiguration.getOutputLocation(),
+                codeGenConfiguration.getOutputLanguage());
+
+        antBuildWriter.setDatabindingFramework(codeGenConfiguration.getDatabindingType());
+        writeClass(skeletonModel, antBuildWriter);
+    }
+
+    /**
+     * Creates the DOM tree for the Ant build. Uses the interface.
+     */
+    protected Document createDOMDocumentForAntBuild() {
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("ant");
+        String serviceName = makeJavaClassName(axisService.getName());
+        String packageName = codeGenConfiguration.getPackageName();
+        String[] dotSeparatedValues = packageName.split("\\.");
+
+        addAttribute(doc, "package", dotSeparatedValues[0], rootElement);
+        addAttribute(doc, "name", serviceName, rootElement);
+        addAttribute(doc, "servicename", serviceName, rootElement);
+        addAttribute(doc, "src", codeGenConfiguration.getSourceLocation(), rootElement);
+        addAttribute(doc, "resource", codeGenConfiguration.getResourceLocation(), rootElement);
+        if (codeGenConfiguration.isServerSide()) {
+            addAttribute(doc,
+                    "isserverside",
+                    "yes",
+                    rootElement);
+        }
+
+        doc.appendChild(rootElement);
+
+        return doc;
+    }
+
+    /**
+     * Write the test classes
+     */
+    protected void writeTestClasses() throws Exception {
+        if (codeGenConfiguration.isWriteTestCase()) {
+            Document classModel = createDOMDocumentForTestCase();
+            debugLogDocument("Document for test case:", classModel);
+            TestClassWriter callbackWriter =
+                    new TestClassWriter(
+                            codeGenConfiguration.isFlattenFiles() ?
+                                    getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                                    getOutputDirectory(codeGenConfiguration.getOutputLocation(), TEST_SRC_DIR_NAME),
+                            codeGenConfiguration.getOutputLanguage());
+
+            writeClass(classModel, callbackWriter);
+        }
+    }
+
+    /**
+     * Creates the XML Model for the test case
+     * @return DOM document
+     */
+    protected Document createDOMDocumentForTestCase() {
+        String coreClassName = makeJavaClassName(axisService.getName());
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("class");
+
+        addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
+        addAttribute(doc, "name", coreClassName + TEST_SUFFIX, rootElement);
+        //todo is this right ???
+        addAttribute(doc, "namespace", axisService.getTargetNamespace(), rootElement);
+        addAttribute(doc, "interfaceName", coreClassName, rootElement);
+        addAttribute(doc, "callbackname", coreClassName + CALL_BACK_HANDLER_SUFFIX, rootElement);
+        addAttribute(doc, "stubname", coreClassName + STUB_SUFFIX, rootElement);
+
+        fillSyncAttributes(doc, rootElement);
+        loadOperations(doc, rootElement, null);
+
+        // add the databind supporters. Now the databind supporters are completly contained inside
+        // the stubs implementation and not visible outside
+        rootElement.appendChild(createDOMElementforDatabinders(doc,false));
+        doc.appendChild(rootElement);
+        //////////////////////////////////////////////////////////
+//        System.out.println(DOM2Writer.nodeToString(rootElement));
+        ////////////////////////////////////////////////////////////
+
+        return doc;
+    }
+
+    /**
+     * Writes the implementations.
+     *
+     * @throws Exception
+     */
+    protected void writeInterfaceImplementation() throws Exception {
+
+        // first check for the policies in this service and write them
+        Document interfaceImplModel = createDOMDocumentForInterfaceImplementation();
+        debugLogDocument("Document for interface implementation:", interfaceImplModel);
+        InterfaceImplementationWriter writer =
+                new InterfaceImplementationWriter(
+                        codeGenConfiguration.isFlattenFiles() ?
+                                getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                                getOutputDirectory(codeGenConfiguration.getOutputLocation(), codeGenConfiguration.getSourceLocation()),
+                        codeGenConfiguration.getOutputLanguage());
+
+        writeClass(interfaceImplModel, writer);
+    }
+
+    /**
+     * Creates the DOM tree for implementations.
+     */
+    protected Document createDOMDocumentForInterfaceImplementation() throws Exception {
+
+        String packageName = codeGenConfiguration.getPackageName();
+        String localPart = makeJavaClassName(axisService.getName());
+        String stubName = localPart + STUB_SUFFIX;
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("class");
+
+        addAttribute(doc, "package", packageName, rootElement);
+        addAttribute(doc, "name", stubName, rootElement);
+        addAttribute(doc, "servicename", localPart, rootElement);
+        //The target nemespace is added as the namespace for this service
+        addAttribute(doc, "namespace", axisService.getTargetNamespace(), rootElement);
+        addAttribute(doc, "interfaceName", localPart, rootElement);
+        addAttribute(doc, "callbackname", localPart + CALL_BACK_HANDLER_SUFFIX, rootElement);
+
+        // add the wrap classes flag
+        if (codeGenConfiguration.isPackClasses()) {
+            addAttribute(doc, "wrapped", "yes", rootElement);
+        }
+
+        // add SOAP version
+        addSoapVersion(doc, rootElement);
+
+        // add the end point
+        addEndpoint(doc, rootElement);
+
+        // set the sync/async attributes
+        fillSyncAttributes(doc, rootElement);
+
+        // ###########################################################################################
+        // this block of code specifically applies to the integration of databinding code into the
+        // generated classes tightly (probably as inner classes)
+        // ###########################################################################################
+        // check for the special models in the mapper and if they are present process them
+        if (mapper.isObjectMappingPresent()) {
+
+            // add an attribute to the root element showing that the writing has been skipped
+            addAttribute(doc, "skip-write", "yes", rootElement);
+
+            // process the mapper objects
+            processModelObjects(mapper.getAllMappedObjects(), rootElement, doc);
+        }
+
+        // #############################################################################################
+
+        // load the operations
+        loadOperations(doc, rootElement, null);
+
+        // add the databind supporters. Now the databind supporters are completly contained inside
+        // the stubs implementation and not visible outside
+        rootElement.appendChild(createDOMElementforDatabinders(doc,false));
+
+        Object moduleCodegenPolicyExtensionElement;
+
+        //if some extension has added the stub methods property, add them to the
+        //main document
+        if ((moduleCodegenPolicyExtensionElement = codeGenConfiguration.getProperty("module-codegen-policy-extensions")) != null) {
+            rootElement.appendChild(doc.importNode((Element) moduleCodegenPolicyExtensionElement, true));
+        }
+
+        //add another element to have the unique list of faults
+        rootElement.appendChild(getUniqueListofFaults(doc));
+
+
+        doc.appendChild(rootElement);
+
+        //////////////////////////////////////////////////////////
+//        System.out.println(DOM2Writer.nodeToString(rootElement));
+        ////////////////////////////////////////////////////////////
+        return doc;
+    }
+
+    /**
+     * A util method that returns a unique list of faults
+     *
+     * @param doc
+     * @return DOM element
+     */
+    protected Element getUniqueListofFaults(Document doc) {
+        Element rootElement = doc.createElement("fault-list");
+        Element faultElement;
+        QName key;
+        Iterator iterator = fullyQualifiedFaultClassNameMap.keySet().iterator();
+        while (iterator.hasNext()) {
+            faultElement = doc.createElement("fault");
+            key = (QName) iterator.next();
+
+            //as for the name of a fault, we generate an exception
+            addAttribute(doc, "name",
+                    (String) fullyQualifiedFaultClassNameMap.get(key),
+                    faultElement);
+            addAttribute(doc, "shortName",
+                    (String) faultClassNameMap.get(key),
+                    faultElement);
+
+            //the type represents the type that will be wrapped by this
+            //name
+            String typeMapping =
+                    this.mapper.getTypeMappingName(key);
+            addAttribute(doc, "type", (typeMapping == null)
+                    ? ""
+                    : typeMapping, faultElement);
+            String attribValue = (String) instantiatableMessageClassNames.
+                    get(key);
+
+            addAttribute(doc, "instantiatableType",
+                    attribValue == null ? "" : attribValue,
+                    faultElement);
+
+            // add an extra attribute to say whether the type mapping is
+            // the default
+            if (mapper.getDefaultMappingName().equals(typeMapping)) {
+                addAttribute(doc, "default", "yes", faultElement);
+            }
+            addAttribute(doc, "value", getParamInitializer(typeMapping),
+                    faultElement);
+
+
+            rootElement.appendChild(faultElement);
+        }
+        return rootElement;
+    }
+
+    /**
+     * Adds the endpoint to the document.
+     *
+     * @param doc
+     * @param rootElement
+     */
+    protected void addEndpoint(Document doc, Element rootElement) throws Exception {
+
+        PolicyInclude policyInclude = axisService.getPolicyInclude();
+        Policy servicePolicy = policyInclude.getPolicy();
+
+        if (servicePolicy != null) {
+            String policyString = PolicyUtil.policyComponentToString(servicePolicy);
+            policyString = PolicyUtil.getSafeString(policyString);
+            addAttribute(doc, "policy", policyString, rootElement);
+        }
+
+        Element endpointElement = doc.createElement("endpoint");
+
+        String endpoint = axisService.getEndpoint();
+        Text text = doc.createTextNode((endpoint != null)
+                ? endpoint
+                : "");
+
+        endpointElement.appendChild(text);
+        rootElement.appendChild(endpointElement);
+    }
+
+    /**
+     * Looks for the SOAPVersion and adds it.
+     *
+     * @param doc
+     * @param rootElement
+     */
+    protected void addSoapVersion(Document doc, Element rootElement) {
+
+        // loop through the extensibility elements to get to the bindings element
+
+        String soapNsUri = axisService.getSoapNsUri();
+        if (org.apache.axis2.namespace.Constants.URI_WSDL11_SOAP.equals(soapNsUri)) {
+            addAttribute(doc, "soap-version", "1.1", rootElement);
+        } else if (org.apache.axis2.namespace.Constants.URI_WSDL12_SOAP.equals(soapNsUri)) {
+            addAttribute(doc, "soap-version", "1.2", rootElement);
+        }
+
+    }
+
+    /**
+     * Writes the exceptions.
+     */
+    protected void writeExceptions() throws Exception {
+        Element faultElement;
+        QName key;
+        Iterator iterator = fullyQualifiedFaultClassNameMap.keySet().iterator();
+        while (iterator.hasNext()) {
+            Document doc = getEmptyDocument();
+
+            faultElement = doc.createElement("fault");
+
+            addAttribute(doc, "package", codeGenConfiguration.getPackageName(), faultElement);
+
+            key = (QName) iterator.next();
+
+            //as for the name of a fault, we generate an exception
+            addAttribute(doc, "name",
+                    (String) faultClassNameMap.get(key),
+                    faultElement);
+            addAttribute(doc, "shortName",
+                    (String) faultClassNameMap.get(key),
+                    faultElement);
+
+            //the type represents the type that will be wrapped by this
+            //name
+            String typeMapping =
+                    this.mapper.getTypeMappingName(key);
+            addAttribute(doc, "type", (typeMapping == null)
+                    ? ""
+                    : typeMapping, faultElement);
+            String attribValue = (String) instantiatableMessageClassNames.
+                    get(key);
+            addAttribute(doc, "instantiatableType",
+                    attribValue == null ? "" : attribValue,
+                    faultElement);
+
+            // add an extra attribute to say whether the type mapping is
+            // the default
+            if (mapper.getDefaultMappingName().equals(typeMapping)) {
+                addAttribute(doc, "default", "yes", faultElement);
+            }
+            addAttribute(doc, "value", getParamInitializer(typeMapping),
+                    faultElement);
+            ExceptionWriter exceptionWriter =
+                    new ExceptionWriter(
+                            codeGenConfiguration.isFlattenFiles() ?
+                                    getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                                    getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                            codeGenConfiguration.getSourceLocation()),
+                            codeGenConfiguration.getOutputLanguage());
+
+            doc.appendChild(faultElement);
+            writeClass(doc, exceptionWriter);
+        }
+    }
+
+    /**
+     * Generates the model for the callbacks.
+     */
+    protected Document createDOMDocumentForException() {
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("callback");
+
+        addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
+        addAttribute(doc, "name", makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX, rootElement);
+
+        // TODO JAXRPC mapping support should be considered here ??
+        this.loadOperations(doc, rootElement, null);
+
+        doc.appendChild(rootElement);
+        return doc;
+    }
+
+
+    /**
+     * Writes the callback handlers.
+     */
+    protected void writeCallBackHandlers() throws Exception {
+        if (codeGenConfiguration.isAsyncOn()) {
+            Document interfaceModel = createDOMDocumentForCallbackHandler();
+            debugLogDocument("Document for callback handler:", interfaceModel);
+            CallbackHandlerWriter callbackWriter =
+                    new CallbackHandlerWriter(
+                            codeGenConfiguration.isFlattenFiles() ?
+                                    getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                                    getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                            codeGenConfiguration.getSourceLocation()),
+                            codeGenConfiguration.getOutputLanguage());
+
+            writeClass(interfaceModel, callbackWriter);
+        }
+    }
+
+    /**
+     * Generates the model for the callbacks.
+     */
+    protected Document createDOMDocumentForCallbackHandler() {
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("callback");
+
+        addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
+        addAttribute(doc, "name", makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX, rootElement);
+
+        // TODO JAXRPC mapping support should be considered here ??
+        this.loadOperations(doc, rootElement, null);
+
+        doc.appendChild(rootElement);
+        return doc;
+    }
+
+    /**
+     * Writes the interfaces.
+     *
+     * @throws Exception
+     */
+    protected void writeInterface(boolean writeDatabinders) throws Exception {
+        Document interfaceModel = createDOMDocumentForInterface(writeDatabinders);
+        debugLogDocument("Document for interface:", interfaceModel);
+        InterfaceWriter interfaceWriter =
+                new InterfaceWriter(
+                        codeGenConfiguration.isFlattenFiles() ?
+                                getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                                getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                        codeGenConfiguration.getSourceLocation()),
+                        this.codeGenConfiguration.getOutputLanguage());
+
+        writeClass(interfaceModel, interfaceWriter);
+    }
+
+    /**
+     * Creates the DOM tree for the interface creation. Uses the interface.
+     */
+    protected Document createDOMDocumentForInterface(boolean writeDatabinders) {
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("interface");
+        String localPart = null;
+        if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+            localPart = makeJavaClassName(axisService.getPortTypeName());
+        } else {
+            localPart = makeJavaClassName(axisService.getName());
+        }
+
+        addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
+        addAttribute(doc, "name", localPart, rootElement);
+        addAttribute(doc, "callbackname", makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX,
+                rootElement);
+        fillSyncAttributes(doc, rootElement);
+        loadOperations(doc, rootElement, null);
+
+        // ###########################################################################################
+        // this block of code specifically applies to the integration of databinding code into the
+        // generated classes tightly (probably as inner classes)
+        // ###########################################################################################
+        // check for the special models in the mapper and if they are present process them
+        if (writeDatabinders) {
+            if (mapper.isObjectMappingPresent()) {
+
+                // add an attribute to the root element showing that the writing has been skipped
+                addAttribute(doc, "skip-write", "yes", rootElement);
+
+                // process the mapper objects
+                processModelObjects(mapper.getAllMappedObjects(), rootElement, doc);
+            }
+        }
+
+        // #############################################################################################
+        doc.appendChild(rootElement);
+
+        return doc;
+    }
+
+
+
+    /**
+     * Update mapper for message receiver
+     */
+    protected void updateMapperForMessageReceiver() {
+        updateMapperClassnames(getFullyQualifiedMessageReceiverName());
+    }
+
+    /**
+     * @return fully qualified MR name
+     */
+    protected String getFullyQualifiedMessageReceiverName() {
+        String packageName = codeGenConfiguration.getPackageName();
+        String localPart = makeJavaClassName(axisService.getName());
+        return packageName + "." + localPart + MESSAGE_RECEIVER_SUFFIX;
+    }
+
+    /**
+     * @return fully qualified skeleton name
+     */
+    protected String getFullyQualifiedSkeletonName() {
+        String packageName = codeGenConfiguration.getPackageName();
+        String localPart = makeJavaClassName(axisService.getName());
+        String skeltonName;
+        if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+             skeltonName = packageName + "." + makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK;
+        } else {
+             skeltonName = packageName + "." + localPart + SKELETON_CLASS_SUFFIX;
+        }
+        return skeltonName;
+    }
+
+    /**
+     * @return fully qualified skeleton interface name
+     */
+    protected String getFullyQualifiedSkeletonInterfaceName() {
+        String packageName = codeGenConfiguration.getPackageName();
+        String localPart = makeJavaClassName(axisService.getName());
+        String skeltonInterfaceName;
+        if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+             skeltonInterfaceName = packageName + "." + makeJavaClassName(axisService.getPortTypeName()) + SKELETON_INTERFACE_SUFFIX_BACK;
+        } else {
+             skeltonInterfaceName = packageName + "." + localPart + SKELETON_INTERFACE_SUFFIX;
+        }
+        return skeltonInterfaceName;
+    }
+    /**
+     * Emits the skeleton
+     * @throws CodeGenerationException
+     */
+    public void emitSkeleton() throws CodeGenerationException {
+
+        try{
+            // see the comment at updateMapperClassnames for details and reasons for
+            // calling this method
+            if (mapper.isObjectMappingPresent()) {
+                updateMapperForMessageReceiver();
+            } else {
+                copyToFaultMap();
+            }
+
+            //handle faults
+            generateAndPopulateFaultNames();
+
+            //
+            if (codeGenConfiguration.isServerSideInterface()) {
+                //write skeletonInterface
+                writeSkeletonInterface();
+            }
+
+            // write skeleton only if the used has
+            // asked for the deployment descriptor in the interface mode
+            // else write it anyway :)
+            if (codeGenConfiguration.isServerSideInterface()){
+                 if (codeGenConfiguration.isGenerateDeployementDescriptor()){
+                     writeSkeleton();
+                 }
+            }else{
+               writeSkeleton();
+            }
+
+            // write a MessageReceiver for this particular service.
+            writeMessageReceiver();
+
+            // write the Exceptions
+            writeExceptions();
+
+            // write service xml
+            // if asked
+            if (codeGenConfiguration.isGenerateDeployementDescriptor()) {
+                writeServiceXml();
+            }
+
+            //write the ant build
+            //we skip this for the flattened case
+            if (!codeGenConfiguration.isFlattenFiles()) {
+                writeAntBuild();
+            }
+
+            //for the server side codegen
+            //we need to serialize the WSDL's
+            writeWSDLFiles();
+
+        }catch(CodeGenerationException cgExp){
+            throw cgExp;
+        }catch(Exception e){
+            throw new CodeGenerationException(e);
+        }
+    }
+
+    /**
+     * Write out the WSDL files (and the schemas)
+     * writing the WSDL (and schemas) is somewhat special so we cannot follow
+     * the usual pattern of using the class writer
+     */
+    protected void writeWSDLFiles() {
+
+        //first modify the schema names (and locations) so that
+        //they have unique (flattened) names and the schema locations
+        //are adjusted to suit it
+        axisService.setCustomSchemaNamePrefix("");//prefix with nothing
+        axisService.setCustomSchemaNameSuffix(".xsd");//suffix with .xsd - the file name extension
+        //force the mappings to be reconstructed
+        axisService.setSchemaLocationsAdjusted(false);
+        axisService.populateSchemaMappings();
+
+        //now get the schema list and write it out
+        SchemaWriter schemaWriter = new SchemaWriter(
+                codeGenConfiguration.isFlattenFiles() ?
+                        getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                        getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                codeGenConfiguration.getResourceLocation()));
+
+
+        Map schemaMappings = axisService.getSchemaMappingTable();
+        Iterator keys = schemaMappings.keySet().iterator();
+        while (keys.hasNext()) {
+            Object key = keys.next();
+            schemaWriter.writeSchema(
+                    (XmlSchema) schemaMappings.get(key),
+                    (String) key
+            );
+        }
+
+        //switch between the correct writer
+        if (CommandLineOptionConstants.WSDL2JavaConstants.WSDL_VERSION_2.
+                equals(codeGenConfiguration.getWSDLVersion())) {
+
+            WSDL20Writer wsdl20Writer = new WSDL20Writer(
+                    codeGenConfiguration.isFlattenFiles() ?
+                            getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                            getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                    codeGenConfiguration.getResourceLocation())
+            );
+            wsdl20Writer.writeWSDL(axisService);
+        } else {
+
+            WSDL11Writer wsdl11Writer = new WSDL11Writer(
+                    codeGenConfiguration.isFlattenFiles() ?
+                            getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                            getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                    codeGenConfiguration.getResourceLocation()));
+            wsdl11Writer.writeWSDL(axisService);
+
+        }
+
+
+    }
+
+    /**
+     * Utility method to copy the faults to the correct map
+     */
+    protected void copyToFaultMap() {
+        Map classNameMap = mapper.getAllMappedNames();
+        Iterator keys = classNameMap.keySet().iterator();
+        while (keys.hasNext()) {
+            Object key = keys.next();
+            instantiatableMessageClassNames.put(key,
+                    classNameMap.get(key));
+        }
+    }
+
+    /**
+     *  Change the fault classnames to go with the package and stub
+     */
+    protected void updateFaultPackageForStub() {
+        Iterator faultClassNameKeys = fullyQualifiedFaultClassNameMap.keySet().iterator();
+        while (faultClassNameKeys.hasNext()) {
+            Object key = faultClassNameKeys.next();
+            String className = (String) fullyQualifiedFaultClassNameMap.get(key);
+            //append the skelton name
+            String fullyQualifiedStubName = getFullyQualifiedStubName();
+            fullyQualifiedFaultClassNameMap.put(key, codeGenConfiguration.getPackageName() + "."
+                    + className);
+        }
+    }
+
+    /**
+     * Writes the message receiver
+     * @throws Exception
+     */
+    protected void writeMessageReceiver() throws Exception {
+
+        if (codeGenConfiguration.isWriteMessageReceiver()) {
+            //loop through the meps and generate code for each mep
+            Iterator it = mepToClassMap.keySet().iterator();
+            while (it.hasNext()) {
+                String mep = (String) it.next();
+                Document classModel = createDocumentForMessageReceiver(
+                        mep,
+                        codeGenConfiguration.isServerSideInterface());
+                debugLogDocument("Document for message receiver (mep=" + mep +
+                        "):", classModel);
+                //write the class only if any methods are found
+                if (Boolean.TRUE.equals(infoHolder.get(mep))) {
+                    MessageReceiverWriter writer =
+                            new MessageReceiverWriter(
+                                    codeGenConfiguration.isFlattenFiles() ?
+                                            getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                                            getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                                    codeGenConfiguration.getSourceLocation()),
+                                    codeGenConfiguration.getOutputLanguage());
+
+                    writeClass(classModel, writer);
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates the XML model for the message receiver
+     * @param mep
+     * @param isServerSideInterface
+     * @return DOM Document
+     */
+    protected Document createDocumentForMessageReceiver(String mep, boolean isServerSideInterface) {
+
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("interface");
+
+        addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
+
+        String localPart = makeJavaClassName(axisService.getName());
+
+        addAttribute(doc, "name", localPart + mepToSuffixMap.get(mep), rootElement);
+        if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+            addAttribute(doc, "skeletonname", makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK, rootElement);
+            if (isServerSideInterface) {
+                addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(axisService.getPortTypeName()) + SKELETON_INTERFACE_SUFFIX_BACK,
+                        rootElement);
+            } else {
+                addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK,
+                        rootElement);
+            }
+        } else {
+            addAttribute(doc, "skeletonname", localPart + SKELETON_CLASS_SUFFIX, rootElement);
+            if (isServerSideInterface) {
+                addAttribute(doc, "skeletonInterfaceName", localPart + SKELETON_INTERFACE_SUFFIX,
+                        rootElement);
+            } else {
+                addAttribute(doc, "skeletonInterfaceName", localPart + SKELETON_CLASS_SUFFIX,
+                        rootElement);
+            }
+        }
+
+        addAttribute(doc, "basereceiver", (String) mepToClassMap.get(mep), rootElement);
+
+        fillSyncAttributes(doc, rootElement);
+
+        // ###########################################################################################
+        // this block of code specifically applies to the integration of databinding code into the
+        // generated classes tightly (probably as inner classes)
+        // ###########################################################################################
+        // check for the special models in the mapper and if they are present process them
+        if (mapper.isObjectMappingPresent()) {
+            // add an attribute to the root element showing that the writing has been skipped
+            addAttribute(doc, "skip-write", "yes", rootElement);
+            // process the mapper objects
+            processModelObjects(mapper.getAllMappedObjects(), rootElement, doc);
+        }
+        // #############################################################################################
+
+        boolean isOpsFound = loadOperations(doc, rootElement, mep);
+        //put the result in the property map
+        infoHolder.put(mep, isOpsFound ? Boolean.TRUE : Boolean.FALSE);
+        //create the databinder element with serverside as true
+        rootElement.appendChild(createDOMElementforDatabinders(doc,true));
+
+        //attach a list of faults
+        rootElement.appendChild(getUniqueListofFaults(doc));
+
+        doc.appendChild(rootElement);
+
+        //////////////////////////////////////////////////////////
+//        System.out.println(DOM2Writer.nodeToString(rootElement));
+        ////////////////////////////////////////////////////////////
+
+        return doc;
+    }
+
+    /**
+     * create a dom element for databinders. This is called by other
+     *
+     * @param doc
+     */
+    protected Element createDOMElementforDatabinders(Document doc,boolean isServerside) {
+
+        // First Iterate through the operations and find the relevant fromOM and toOM methods to be generated
+        ArrayList parameters = new ArrayList();
+
+        for (Iterator operationsIterator = axisService.getOperations();operationsIterator.hasNext();) {
+            AxisOperation axisOperation = (AxisOperation) operationsIterator.next();
+            // Add the parameters to a map with their type as the key
+            // this step is needed to remove repetitions
+
+            // process the input parameters
+            String MEP = axisOperation.getMessageExchangePattern();
+            if (WSDLUtil.isInputPresentForMEP(MEP)) {
+                Element[] inputParamElement = getInputParamElement(doc, axisOperation);
+                for (int i = 0; i < inputParamElement.length; i++) {
+                    //add an attribute to the parameter saying that this is an
+                    //input
+                    addAttribute(doc,"direction","in",inputParamElement[i]);
+                    //add the short type name
+                    parameters.add(
+                            inputParamElement[i]);
+
+                }
+            }
+            // process output parameters
+            if (WSDLUtil.isOutputPresentForMEP(MEP)) {
+                Element outputParamElement = getOutputParamElement(doc, axisOperation);
+                if (outputParamElement != null) {
+                    //set the direction as out
+                    addAttribute(doc,"direction","out",outputParamElement);
+                    parameters.add(outputParamElement);
+                }
+            }
+
+            //process faults
+            Element[] faultParamElements = getFaultParamElements(doc, axisOperation);
+            for (int i = 0; i < faultParamElements.length; i++) {
+                //set the direction as out - all faults are out messages ?
+                addAttribute(doc,"direction","out",faultParamElements[i]);
+                parameters.add(faultParamElements[i]);
+            }
+
+            // process the header parameters
+            Element newChild;
+            List headerParameterQNameList = new ArrayList();
+            addHeaderOperations(headerParameterQNameList, axisOperation, true);
+            List parameterElementList = getParameterElementList(doc, headerParameterQNameList, "header");
+
+            for (int i = 0; i < parameterElementList.size(); i++) {
+                newChild = (Element) parameterElementList.get(i);
+                parameters.add(newChild);
+            }
+
+            headerParameterQNameList.clear();
+            parameterElementList.clear();
+            addHeaderOperations(headerParameterQNameList, axisOperation, false);
+            parameterElementList = getParameterElementList(doc, headerParameterQNameList, "header");
+
+            for (int i = 0; i < parameterElementList.size(); i++) {
+                newChild = (Element) parameterElementList.get(i);
+                parameters.add(newChild);
+            }
+        }
+
+        Element rootElement = doc.createElement("databinders");
+        //add the db type attribute  - the name of the databinding type
+        //this will be used to select the correct template
+        addAttribute(doc, "dbtype", codeGenConfiguration.getDatabindingType(), rootElement);
+        //add the wrapped flag state - this is used by JiBX, but may be useful
+        //for other frameworks in the future
+        String wrapflag = Boolean.toString(codeGenConfiguration.isParametersWrapped());
+        addAttribute(doc, "wrapped", wrapflag, rootElement);
+
+        //at this point we may need to capture the extra parameters passes to the
+        //particular databinding framework
+        //these parameters showup in the property map with String keys, and we
+        //can just copy these items as attributes of the <extra> element.
+        Element extraElement = addElement(doc, "extra", null, rootElement);
+        Map propertiesMap = codeGenConfiguration.getProperties();
+        for (Iterator it = propertiesMap.keySet().iterator(); it.hasNext();){
+            Object key = it.next();
+            if (key instanceof String) {
+                Object value = propertiesMap.get(key);
+                //if the value is null set it to empty string
+                if (value==null) value="";
+                //add key="value" attribute to element iff value a string
+                if (value instanceof String){
+                     addAttribute(doc,(String)key,(String)value, extraElement);
+                }
+            }
+        }
+
+        //add the server side attribute. this helps the databinding template
+        //to determine the methods to generate
+        if (isServerside){
+            addAttribute(doc,"isserverside","yes",rootElement);
+        }
+        // add the names of the elements that have base 64 content
+        // if the base64 name list is missing then this whole step is skipped
+        rootElement.appendChild(getBase64Elements(doc));
+
+        //add the method names
+        rootElement.appendChild(getOpNames(doc));
+
+        for (Iterator iterator = parameters.iterator(); iterator.hasNext();) {
+            rootElement.appendChild((Element) iterator.next());
+        }
+
+        // finish with any extra information from service and operations
+        Parameter details = axisService.getParameter(Constants.DATABINDING_SERVICE_DETAILS);
+        if (details != null) {
+            Object value = details.getValue();
+            if (value instanceof Element) {
+                rootElement.appendChild(doc.importNode((Element)value, true));
+            } else if (value instanceof List) {
+                for (Iterator iter = ((List)value).iterator(); iter.hasNext();) {
+                    rootElement.appendChild(doc.importNode((Element)iter.next(), true));
+                }
+            }
+        }
+        for (Iterator operationsIterator = axisService.getOperations(); operationsIterator.hasNext();) {
+            AxisOperation axisOperation = (AxisOperation) operationsIterator.next();
+            details = axisOperation.getParameter(Constants.DATABINDING_OPERATION_DETAILS);
+            if (details != null) {
+                rootElement.appendChild(doc.importNode((Element)details.getValue(), true));
+            }
+        }
+
+        ///////////////////////////////////////////////
+//        System.out.println("databinding root element " + DOM2Writer.nodeToString(rootElement));
+        ////////////////////////////////////////////////
+
+        return rootElement;
+    }
+
+    /**
+     * Adds the short type name to the given parameter element
+     * if the type has no '.' characters in its name
+     * the type itself is taken as the shorttype
+     * @param paramElement
+     */
+    protected void addShortType(Element paramElement,String type) {
+        if (type!=null && type.indexOf('.')!=-1){
+            addAttribute(paramElement.getOwnerDocument(),
+                    "shorttype",
+                    type.substring(type.lastIndexOf('.')+1),
+                    paramElement);
+        }else{
+            addAttribute(paramElement.getOwnerDocument(),
+                    "shorttype",
+                    type==null?"":type,
+                    paramElement);
+        }
+
+    }
+
+    /**
+     * Gets an element representing the operation names
+     * @param doc
+     * @return Returns Element.
+     */
+    protected Element getOpNames(Document doc) {
+        Element root = doc.createElement("opnames");
+        Element elt;
+
+        for (Iterator operationsIterator = axisService.getOperations();operationsIterator.hasNext();) {
+            AxisOperation axisOperation = (AxisOperation) operationsIterator.next();
+            elt = doc.createElement("name");
+            elt.appendChild(doc.createTextNode(axisOperation.getName().getLocalPart()));
+
+            //what needs to be put here as the opertation namespace is actually the
+            //traget namespace of the service
+            addAttribute(doc,"opnsuri",axisService.getTargetNamespace(),elt);
+            root.appendChild(elt);
+        }
+
+        return root;
+    }
+
+    /**
+     * Gets the base64 types. If not available this will be empty!!!
+     * @param doc
+     * @return Returns Element.
+     */
+    protected Element getBase64Elements(Document doc) {
+        Element root = doc.createElement("base64Elements");
+        Element elt;
+        QName qname;
+
+        // this is a list of QNames
+        List list = (List) codeGenConfiguration.getProperties().get(Constants.BASE_64_PROPERTY_KEY);
+
+        if ((list != null) && !list.isEmpty()) {
+            int count = list.size();
+
+            for (int i = 0; i < count; i++) {
+                qname = (QName) list.get(i);
+                elt = doc.createElement("name");
+                addAttribute(doc, "ns-url", qname.getNamespaceURI(), elt);
+                addAttribute(doc, "localName", qname.getLocalPart(), elt);
+                root.appendChild(elt);
+            }
+        }
+
+        return root;
+    }
+
+    /**
+     * @param objectMappings
+     * @param root
+     * @param doc
+     */
+    protected void processModelObjects(Map objectMappings, Element root, Document doc) {
+        Iterator objectIterator = objectMappings.values().iterator();
+
+        while (objectIterator.hasNext()) {
+            Object o = objectIterator.next();
+
+            if (o instanceof Document) {
+                //we cannot have an empty document
+                root.appendChild(doc.importNode(((Document) o).getDocumentElement(), true));
+            } else {
+
+                // oops we have no idea how to do this, if the model provided is not a DOM document
+                // we are done. we might as well skip  it here
+            }
+        }
+    }
+
+    /**
+     * we need to modify the mapper's class name list. The issue here is that in this case we do not
+     * expect the fully qulified class names to be present in the class names list due to the simple
+     * reason that they've not been written yet! Hence the mappers class name list needs to be updated
+     * to suit the expected package to be written
+     * in this case we modify the package name to have the class a inner class of the stub,
+     * interface or the message receiver depending on the style
+     */
+    protected void updateMapperClassnames(String fullyQulifiedIncludingClassNamePrefix) {
+        Map classNameMap = mapper.getAllMappedNames();
+        Iterator keys = classNameMap.keySet().iterator();
+
+        while (keys.hasNext()) {
+            Object key = keys.next();
+            String className = (String) classNameMap.get(key);
+
+            //this is a generated class name - update the name
+            if (!TypeTesterUtil.hasPackage(className) && !TypeTesterUtil.isPrimitive(className)){
+                classNameMap.put(key, fullyQulifiedIncludingClassNamePrefix + "." + className);
+                instantiatableMessageClassNames.put(key,
+                        fullyQulifiedIncludingClassNamePrefix + "$" + className);
+            }else{
+                //this is a fully qualified class name - just leave it as it is
+                classNameMap.put(key, className);
+                instantiatableMessageClassNames.put(key,
+                        className);
+            }
+        }
+    }
+
+    /**
+     * Write the service XML
+     *
+     * @throws Exception
+     */
+    protected void writeServiceXml() throws Exception {
+
+            // Write the service xml in a folder with the
+            Document serviceXMLModel = createDOMDocumentForServiceXML();
+            debugLogDocument("Document for service XML:", serviceXMLModel);
+            ClassWriter serviceXmlWriter =
+                    new ServiceXMLWriter(
+                            codeGenConfiguration.isFlattenFiles() ?
+                                    getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                                    getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                            codeGenConfiguration.getResourceLocation()),
+                            this.codeGenConfiguration.getOutputLanguage());
+
+            writeClass(serviceXMLModel, serviceXmlWriter);
+
+    }
+
+    protected Document createDOMDocumentForServiceXML() {
+        Document doc = getEmptyDocument();
+        String className = null;
+        String serviceName = axisService.getName();
+        if(this.codeGenConfiguration.isBackwordCompatibilityMode()){
+             className = makeJavaClassName(axisService.getBindingName());
+        } else {
+             className = makeJavaClassName(serviceName);
+        }
+
+        doc.appendChild(getServiceElement(serviceName, className, doc));
+        return doc;
+
+    }
+
+    /**
+     * A resusable method to return the service element for creating the
+     * service xml
+     *
+     * @param serviceName
+     * @param className
+     * @param doc
+     * @return DOM Element
+     */
+    protected Element getServiceElement(String serviceName, String className, Document doc) {
+        Element rootElement = doc.createElement("interface");
+
+        addAttribute(doc, "package", "", rootElement);
+        addAttribute(doc, "classpackage", codeGenConfiguration.getPackageName(), rootElement);
+        if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+           addAttribute(doc, "name", className + SKELETON_CLASS_SUFFIX_BACK, rootElement);
+        } else {
+            addAttribute(doc, "name", className + SKELETON_CLASS_SUFFIX, rootElement);
+        }
+
+        if (!codeGenConfiguration.isWriteTestCase()) {
+            addAttribute(doc, "testOmit", "true", rootElement);
+        }
+        addAttribute(doc, "servicename", serviceName, rootElement);
+
+        Iterator it = mepToClassMap.keySet().iterator();
+        while (it.hasNext()) {
+            Object key = it.next();
+
+            if (Boolean.TRUE.equals(infoHolder.get(key))) {
+                Element elt = addElement(doc, "messagereceiver", makeJavaClassName(serviceName) + mepToSuffixMap.get(key), rootElement);
+                addAttribute(doc, "mepURI", key.toString(), elt);
+            }
+
+        }
+
+        loadOperations(doc, rootElement, null);
+
+        return rootElement;
+    }
+
+    protected void writeSkeleton() throws Exception {
+        Document skeletonModel = createDOMDocumentForSkeleton(codeGenConfiguration.isServerSideInterface());
+        debugLogDocument("Document for skeleton:", skeletonModel);
+        ClassWriter skeletonWriter = new SkeletonWriter(
+                codeGenConfiguration.isFlattenFiles() ?
+                        getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                        getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                codeGenConfiguration.getSourceLocation())
+                , this.codeGenConfiguration.getOutputLanguage());
+
+        writeClass(skeletonModel, skeletonWriter);
+    }
+
+    /**
+     * Write the skeletonInterface
+     * @throws Exception
+     */
+    protected void writeSkeletonInterface() throws Exception {
+        Document skeletonModel = createDOMDocumentForSkeletonInterface();
+        debugLogDocument("Document for skeleton Interface:", skeletonModel);
+        ClassWriter skeletonInterfaceWriter = new SkeletonInterfaceWriter(
+                codeGenConfiguration.isFlattenFiles() ?
+                        getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+                        getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                                codeGenConfiguration.getSourceLocation())
+                , this.codeGenConfiguration.getOutputLanguage());
+
+        writeClass(skeletonModel, skeletonInterfaceWriter);
+    }
+
+    /**
+     * Creates the XMLModel for the skeleton
+     * @param isSkeletonInterface
+     * @return DOM Document
+     */
+    protected Document createDOMDocumentForSkeleton(boolean isSkeletonInterface) {
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("interface");
+
+        String serviceName = makeJavaClassName(axisService.getName());
+        addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
+        if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+             addAttribute(doc, "name", makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK, rootElement);
+        } else {
+             addAttribute(doc, "name", serviceName + SKELETON_CLASS_SUFFIX, rootElement);
+        }
+        addAttribute(doc, "callbackname", serviceName + CALL_BACK_HANDLER_SUFFIX,
+                rootElement);
+        if (isSkeletonInterface) {
+            if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+                addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(axisService.getPortTypeName()) + SKELETON_INTERFACE_SUFFIX_BACK,
+                    rootElement);
+            } else {
+                addAttribute(doc, "skeletonInterfaceName", serviceName + SKELETON_INTERFACE_SUFFIX,
+                    rootElement);
+            }
+
+        }
+        fillSyncAttributes(doc, rootElement);
+        loadOperations(doc, rootElement, null);
+
+        //attach a list of faults
+        rootElement.appendChild(getUniqueListofFaults(doc));
+
+        doc.appendChild(rootElement);
+        return doc;
+
+    }
+
+    /**
+     * Creates the XML model for the skeleton interface
+     * @return DOM Document
+     */
+    protected Document createDOMDocumentForSkeletonInterface() {
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("interface");
+
+        String serviceName = makeJavaClassName(axisService.getName());
+        addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
+        if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+            addAttribute(doc, "name", makeJavaClassName(axisService.getPortTypeName()) + SKELETON_INTERFACE_SUFFIX_BACK, rootElement);
+        } else {
+            addAttribute(doc, "name", serviceName + SKELETON_INTERFACE_SUFFIX, rootElement);
+        }
+
+        addAttribute(doc, "callbackname", serviceName + CALL_BACK_HANDLER_SUFFIX,
+                rootElement);
+
+        fillSyncAttributes(doc, rootElement);
+        loadOperations(doc, rootElement, null);
+
+        //attach a list of faults
+        rootElement.appendChild(getUniqueListofFaults(doc));
+
+        doc.appendChild(rootElement);
+        return doc;
+
+    }
+
+    /**
+     * Loads the operations
+     * @param doc
+     * @param rootElement
+     * @param mep
+     * @return boolean
+     */
+    protected boolean loadOperations(Document doc, Element rootElement, String mep) {
+        Element methodElement;
+        String portTypeName = makeJavaClassName(axisService.getName());
+
+        Iterator operations = axisService.getOperations();
+        boolean opsFound = false;
+        while (operations.hasNext()) {
+            AxisOperation axisOperation = (AxisOperation) operations.next();
+
+            // populate info holder with mep information. This will used in determining which
+            // message receiver to use, etc.,
+
+            String messageExchangePattern = axisOperation.getMessageExchangePattern();
+            if (infoHolder.get(messageExchangePattern) == null) {
+                infoHolder.put(messageExchangePattern, Boolean.TRUE);
+            }
+
+            if (mep == null) {
+
+                opsFound = true;
+                methodElement = generateMethodElement(doc, portTypeName, axisOperation);
+                rootElement.appendChild(methodElement);
+
+            } else {
+                //mep is present - we move ahead only if the given mep matches the mep of this operation
+
+                if (mep.equals(axisOperation.getMessageExchangePattern())) {
+                    //at this point we know it's true
+                    opsFound = true;
+                    methodElement = generateMethodElement(doc, portTypeName, axisOperation);
+
+                    rootElement.appendChild(methodElement);
+                    //////////////////////
+                }
+            }
+
+        }
+
+        return opsFound;
+    }
+
+    /**
+     * Common code to generate a <method> element from an operation.
+     *
+     * @param doc
+     * @param portTypeName
+     * @param axisOperation
+     * @return generated element
+     * @throws DOMException
+     */
+    private Element generateMethodElement(Document doc, String portTypeName, AxisOperation axisOperation) throws DOMException {
+        Element methodElement;
+        List soapHeaderInputParameterList = new ArrayList();
+        List soapHeaderOutputParameterList = new ArrayList();
+        methodElement = doc.createElement("method");
+        String localPart = axisOperation.getName().getLocalPart();
+
+        addAttribute(doc, "name", localPart, methodElement);
+        addAttribute(doc, "namespace", axisOperation.getName().getNamespaceURI(), methodElement);
+        addAttribute(doc, "style", axisOperation.getStyle(), methodElement);
+        addAttribute(doc, "dbsupportname", portTypeName + localPart + DATABINDING_SUPPORTER_NAME_SUFFIX,
+                methodElement);
+        addAttribute(doc, "mep", Utils.getAxisSpecifMEPConstant(axisOperation.getMessageExchangePattern()) + "", methodElement);
+        addAttribute(doc, "mepURI", axisOperation.getMessageExchangePattern(), methodElement);
+
+        // check for this operation to be handled directly by databinding code generation
+        Parameter dbmethname = axisOperation.getParameter(Constants.DATABINDING_GENERATED_RECEIVER);
+        if (dbmethname != null) {
+            addAttribute(doc, "usedbmethod", (String)dbmethname.getValue(), methodElement);
+        }
+        Parameter dbgenimpl = axisOperation.getParameter(Constants.DATABINDING_GENERATED_IMPLEMENTATION);
+        if (dbgenimpl != null && Boolean.TRUE.equals(dbgenimpl.getValue())) {
+            addAttribute(doc, "usdbimpl", "true", methodElement);
+        } else {
+            addAttribute(doc, "usdbimpl", "false", methodElement);
+        }
+
+        addSOAPAction(doc, methodElement, axisOperation);
+        addOutputAndFaultActions(doc, methodElement, axisOperation);
+        addHeaderOperations(soapHeaderInputParameterList, axisOperation, true);
+        addHeaderOperations(soapHeaderOutputParameterList, axisOperation, false);
+
+        /*
+         * Setting the policy of the operation
+         */
+        Policy policy = axisOperation.getPolicyInclude().getPolicy();
+        if (policy != null) {
+            try  {
+            addAttribute(doc, "policy",
+                    PolicyUtil.getSafeString(PolicyUtil.policyComponentToString(policy)),
+                    methodElement);
+            } catch (Exception ex) {
+                throw new RuntimeException("can't serialize the policy ..");
+            }
+        }
+
+
+        if(WSDLUtil.isInputPresentForMEP(axisOperation.getMessageExchangePattern())){
+            methodElement.appendChild(getInputElement(doc,
+                    axisOperation, soapHeaderInputParameterList));
+        }
+        if(WSDLUtil.isOutputPresentForMEP(axisOperation.getMessageExchangePattern())){
+            methodElement.appendChild(getOutputElement(doc,
+                    axisOperation, soapHeaderOutputParameterList));
+        }
+        methodElement.appendChild(getFaultElement(doc,
+                axisOperation));
+        return methodElement;
+    }
+
+    // ==================================================================
+    //                   Util Methods
+    // ==================================================================
+
+    protected Document getEmptyDocument() {
+        try {
+            DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+            return documentBuilder.newDocument();
+        } catch (ParserConfigurationException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * @param word
+     * @return Returns character removed string.
+     */
+    protected String makeJavaClassName(String word) {
+        if (JavaUtils.isJavaKeyword(word)) {
+            return JavaUtils.makeNonJavaKeyword(word);
+        } else {
+            return JavaUtils.capitalizeFirstChar(JavaUtils.xmlNameToJava(word));
+        }
+    }
+
+    /**
+     * Utility method to add an attribute to a given element.
+     *
+     * @param document
+     * @param AttribName
+     * @param attribValue
+     * @param element
+     */
+    protected void addAttribute(Document document, String AttribName, String attribValue, Element element) {
+        XSLTUtils.addAttribute(document, AttribName, attribValue, element);
+    }
+
+    /**
+     * @param doc
+     * @param rootElement
+     */
+    protected void fillSyncAttributes(Document doc, Element rootElement) {
+        addAttribute(doc, "isAsync", this.codeGenConfiguration.isAsyncOn()
+                ? "1"
+                : "0", rootElement);
+        addAttribute(doc, "isSync", this.codeGenConfiguration.isSyncOn()
+                ? "1"
+                : "0", rootElement);
+    }
+
+    /**
+     * debugging method - write the output to the debugger
+     *
+     * @param description
+     * @param doc
+     */
+    protected void debugLogDocument(String description, Document doc) {
+        if (log.isDebugEnabled()) {
+            try {
+                DOMSource source = new DOMSource(doc);
+                StringWriter swrite = new StringWriter();
+                swrite.write(description);
+                swrite.write("\n");
+                Transformer transformer =
+                        TransformerFactory.newInstance().newTransformer();
+                transformer.setOutputProperty("omit-xml-declaration", "yes");
+                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+                transformer.transform(source, new StreamResult(swrite));
+
+                log.debug(swrite.toString());
+
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Gets the output directory for source files.
+     *
+     * @param outputDir
+     * @return Returns File.
+     */
+    protected File getOutputDirectory(File outputDir, String dir2) {
+        if (dir2 != null && !"".equals(dir2)) {
+            outputDir = new File(outputDir, dir2);
+        }
+
+        if (!outputDir.exists()) {
+            outputDir.mkdirs();
+        }
+
+
+        return outputDir;
+    }
+
+    /**
+     * A resusable method for the implementation of interface and implementation writing.
+     *
+     * @param model
+     * @param writer
+     * @throws java.io.IOException
+     * @throws Exception
+     */
+    protected void writeClass(Document model, ClassWriter writer) throws IOException, Exception {
+        writer.loadTemplate();
+
+        String packageName = model.getDocumentElement().getAttribute("package");
+        String className = model.getDocumentElement().getAttribute("name");
+
+        writer.createOutFile(packageName, className);
+
+        // use the global resolver
+        writer.parse(model, resolver);
+    }
+
+    /**
+     * Adds the soap action
+     *
+     * @param doc
+     * @param rootElement
+     * @param axisOperation
+     */
+    protected void addSOAPAction(Document doc, Element rootElement, AxisOperation axisOperation) {
+        addAttribute(doc, "soapaction", axisOperation.getInputAction(), rootElement);
+    }
+
+    /**
+     * Adds the output and fault actions
+     * @param doc
+     * @param methodElement
+     * @param operation
+     */
+    private void addOutputAndFaultActions(Document doc, Element methodElement, AxisOperation operation){
+        String outputAction = operation.getOutputAction();
+        if(outputAction != null){
+            Element outputActionElt = doc.createElement(org.apache.axis2.Constants.OUTPUT_ACTION_MAPPING);
+            outputActionElt.setAttribute(AddressingConstants.WSA_ACTION, outputAction);
+            methodElement.appendChild(outputActionElt);
+        }
+
+        String[] faultActionNames = operation.getFaultActionNames();
+        if(faultActionNames != null){
+            for(int i=0;i<faultActionNames.length; i++){
+                Element faultActionElt = doc.createElement(org.apache.axis2.Constants.FAULT_ACTION_MAPPING);
+                faultActionElt.setAttribute(org.apache.axis2.Constants.FAULT_ACTION_NAME, faultActionNames[i]);
+                faultActionElt.setAttribute(AddressingConstants.WSA_ACTION, operation.getFaultAction(faultActionNames[i]));
+                methodElement.appendChild(faultActionElt);
+            }
+        }
+    }
+
+    /**
+     * populate the header parameters
+     *
+     * @param soapHeaderParameterQNameList
+     * @param axisOperation
+     * @param input
+     */
+    protected void addHeaderOperations(List soapHeaderParameterQNameList, AxisOperation axisOperation,
+                                       boolean input) {
+        ArrayList headerparamList = new ArrayList();
+        String MEP = axisOperation.getMessageExchangePattern();
+        if (input) {
+            if (WSDLUtil.isInputPresentForMEP(MEP)) {
+                AxisMessage inaxisMessage = axisOperation
+                        .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                if (inaxisMessage != null) {
+                    headerparamList = inaxisMessage.getSoapHeaders();
+
+                }
+            }
+        } else {
+            if (WSDLUtil.isOutputPresentForMEP(MEP)) {
+                AxisMessage outAxisMessage = axisOperation
+                        .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+                if (outAxisMessage != null) {
+                    headerparamList = outAxisMessage.getSoapHeaders();
+                }
+            }
+        }
+
+        for (Iterator iterator = headerparamList.iterator(); iterator.hasNext();) {
+            SOAPHeaderMessage header = (SOAPHeaderMessage) iterator.next();
+            soapHeaderParameterQNameList.add(header.getElement());
+        }
+    }
+
+    /**
+     * Get the input element
+     * @param doc
+     * @param operation
+     * @param headerParameterQNameList
+     * @return DOM element
+     */
+    protected Element getInputElement(Document doc, AxisOperation operation, List headerParameterQNameList) {
+        Element inputElt = doc.createElement("input");
+        String MEP = operation.getMessageExchangePattern();
+
+        /*
+         * Setting the input message policy as an attribute of the input element.
+         */
+        AxisMessage inputMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        if (inputMessage != null) {
+            PolicyInclude policyInclude = inputMessage.getPolicyInclude();
+            Policy policy = policyInclude.getPolicy();
+
+            if (policy != null) {
+                policy = (Policy) policy.normalize(policyInclude.getPolicyRegistry(), false);
+                try {
+                    String policyString = PolicyUtil.policyComponentToString(policy);
+                    policyString = PolicyUtil.getSafeString(policyString);
+                    addAttribute(doc, "policy", policyString, inputElt);
+
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+
+
+        if (WSDLUtil.isInputPresentForMEP(MEP)) {
+            Element[] param = getInputParamElement(doc, operation);
+            for (int i = 0; i < param.length; i++) {
+                inputElt.appendChild(param[i]);
+
+            }
+
+            List parameterElementList = getParameterElementList(doc, headerParameterQNameList, "header");
+
+            for (int i = 0; i < parameterElementList.size(); i++) {
+                inputElt.appendChild((Element) parameterElementList.get(i));
+            }
+        }
+        return inputElt;
+    }
+
+    /**
+     * Get the fault element - No header faults are supported
+     * @param doc
+     * @param operation
+     */
+    protected Element getFaultElement(Document doc, AxisOperation operation) {
+        Element faultElt = doc.createElement("fault");
+        Element[] param = getFaultParamElements(doc, operation);
+
+        for (int i = 0; i < param.length; i++) {
+            faultElt.appendChild(param[i]);
+        }
+
+        return faultElt;
+    }
+
+    /**
+     * Finds the output element.
+     * @param doc
+     * @param operation
+     * @param headerParameterQNameList
+     */
+    protected Element getOutputElement(Document doc, AxisOperation operation, List headerParameterQNameList) {
+        Element outputElt = doc.createElement("output");
+        String MEP = operation.getMessageExchangePattern();
+
+        
+        if (WSDLUtil.isOutputPresentForMEP(MEP)) {
+
+	    AxisMessage outMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+            if (outMessage != null) {
+                PolicyInclude policyInclude = outMessage.getPolicyInclude();
+                Policy policy = policyInclude.getPolicy();
+
+                if (policy != null) {
+                    policy = (Policy) policy.normalize(policyInclude.getPolicyRegistry(), false);
+
+                    try {
+                        String policyString = PolicyUtil.policyComponentToString(policy);
+                        policyString = PolicyUtil.getSafeString(policyString);
+
+                    } catch (Exception e ) {
+                       throw new RuntimeException(e);
+                    }
+                }
+            }
+
+            Element param = getOutputParamElement(doc, operation);
+
+            if (param != null) {
+                outputElt.appendChild(param);
+            }
+
+            List outputElementList = getParameterElementList(doc, headerParameterQNameList, "header");
+            for (int i = 0; i < outputElementList.size(); i++) {
+                outputElt.appendChild((Element) outputElementList.get(i));
+            }
+        }
+        return outputElt;
+    }
+
+    /**
+     * @param doc
+     * @param operation
+     * @return Returns the parameter element.
+     */
+    protected Element[] getFaultParamElements(Document doc, AxisOperation operation) {
+        ArrayList params = new ArrayList();
+        ArrayList faultMessages = operation.getFaultMessages();
+
+        if (faultMessages != null && !faultMessages.isEmpty()) {
+            Element paramElement;
+            AxisMessage msg;
+            for (int i = 0; i < faultMessages.size(); i++) {
+                paramElement = doc.createElement("param");
+                msg = (AxisMessage) faultMessages.get(i);
+
+                if(msg.getElementQName() == null) {
+                    throw new RuntimeException("Element QName is null for " + msg.getName() + "!");
+                }
+
+                //as for the name of a fault, we generate an exception
+                addAttribute(doc, "name",
+                        (String) fullyQualifiedFaultClassNameMap.get(msg.getElementQName()),
+                        paramElement);
+                addAttribute(doc, "shortName",
+                        (String) faultClassNameMap.get(msg.getElementQName()),
+                        paramElement);
+
+                // attach the namespace and the localName
+                addAttribute(doc, "namespace",
+                        msg.getElementQName().getNamespaceURI(),
+                        paramElement);
+                addAttribute(doc, "localname",
+                        msg.getElementQName().getLocalPart(),
+                        paramElement);
+                //the type represents the type that will be wrapped by this
+                //name
+                String typeMapping =
+                        this.mapper.getTypeMappingName(msg.getElementQName());
+                addAttribute(doc, "type", (typeMapping == null)
+                        ? ""
+                        : typeMapping, paramElement);
+
+                //add the short name
+                addShortType(paramElement,typeMapping);
+
+                String attribValue = (String) instantiatableMessageClassNames.
+                        get(msg.getElementQName());
+                addAttribute(doc, "instantiatableType",
+                        attribValue == null ? "" : attribValue,
+                        paramElement);
+
+                // add an extra attribute to say whether the type mapping is
+                // the default
+                if (mapper.getDefaultMappingName().equals(typeMapping)) {
+                    addAttribute(doc, "default", "yes", paramElement);
+                }
+                addAttribute(doc, "value", getParamInitializer(typeMapping),
+                        paramElement);
+
+                Iterator iter = msg.getExtensibilityAttributes().iterator();
+                while (iter.hasNext()) {
+                    // process extensibility attributes
+                }
+                params.add(paramElement);
+            }
+
+            return (Element[]) params.toArray(new Element[params.size()]);
+        } else {
+            return new Element[]{};//return empty array
+        }
+
+
+    }
+
+
+    /**
+     * @param doc
+     * @param operation
+     * @return Returns the parameter element.
+     */
+    protected Element[] getInputParamElement(Document doc, AxisOperation operation) {
+
+        AxisMessage inputMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        List paramElementList  = new ArrayList();
+        if (inputMessage != null) {
+
+            // This is the  wrapped component - add the type mapping
+            Element mainParameter = generateParamComponent(doc,
+                    this.mapper.getParameterName(
+                            inputMessage.getElementQName()),
+                    this.mapper.getTypeMappingName(
+                            inputMessage.getElementQName()),
+                    operation.getName(),
+                    inputMessage.getElementQName()
+            );
+
+            paramElementList.add(mainParameter);
+
+            // this message has been unwrapped - find the correct references of the
+            // the message by looking at the unwrapped details object and attach the
+            // needed parameters inside main parameter element
+            if (inputMessage.getParameter(Constants.UNWRAPPED_KEY) != null) {
+
+                // we put the complex type only if unWrapped key present
+                if (inputMessage.getParameter(Constants.COMPLEX_TYPE) != null){
+                    Parameter parameter = inputMessage.getParameter(Constants.COMPLEX_TYPE);
+                    addAttribute(doc,"complextype",(String)parameter.getValue(),mainParameter);
+                }
+
+                //we have this unwrapped earlier. get the info holder
+                //and then look at the parameters
+                Parameter detailsParameter =
+                        inputMessage.getParameter(Constants.UNWRAPPED_DETAILS);
+                MessagePartInformationHolder infoHolder =
+                        (MessagePartInformationHolder)detailsParameter.getValue();
+                List partsList = infoHolder.getPartsList();
+
+                //populate the parts list - this list is needed to generate multiple
+                //parameters in the signatures
+                for (int i = 0; i < partsList.size(); i++) {
+                    QName qName = (QName) partsList.get(i);
+                    mainParameter.appendChild(generateParamComponent(doc,
+                            this.mapper.getParameterName(
+                                    qName),
+                            this.mapper.getTypeMappingName(
+                                    qName),
+                            operation.getName(),
+                            qName,
+                            qName.getLocalPart(),
+                            (this.mapper.getTypeMappingStatus(qName)!=null),
+                            Constants.ARRAY_TYPE.equals(this.mapper.getTypeMappingStatus(qName)))
+                    );
+                }
+
+                // apart from the parts list we need to get the wrapping classname
+                // as well
+
+            }
+
+
+
+
+        }
+
+        return (Element[])paramElementList.toArray(
+                new Element[paramElementList.size()]);
+    }
+
+    /**
+     * A convenient method for the generating the parameter
+     * element
+     * @param doc
+     * @param paramName
+     * @param paramType
+     * @return DOM Element
+     */
+    protected Element generateParamComponent(Document doc,
+                                             String paramName,
+                                             String paramType,
+                                             QName operationName,
+                                             QName paramQName) {
+        return generateParamComponent(doc,paramName,paramType,operationName, paramQName, null,false,false);
+
+    }
+
+    /**
+     * A convenient method for the generating the parameter
+     * element
+     * @param doc
+     * @param paramName
+     * @param paramType
+     * @return DOM Element
+     */
+    protected Element generateParamComponent(Document doc,
+                                             String paramName,
+                                             String paramType,
+                                             QName paramQName) {
+        return generateParamComponent(doc,paramName,paramType,null, paramQName, null,false,false);
+
+    }
+    /**
+     * A convenient method for the generating the parameter
+     * element
+     *
+     * @param doc
+     * @param paramName
+     * @param paramType
+     * @param opName
+     * @param paramName
+     */
+    protected Element generateParamComponent(Document doc,
+                                             String paramName,
+                                             String paramType,
+                                             QName opName,
+                                             QName paramQName,
+                                             String partName,
+                                             boolean isPrimitive,
+                                             boolean isArray) {
+        Element paramElement = doc.createElement("param");
+        addAttribute(doc, "name",
+                paramName, paramElement);
+
+        addAttribute(doc, "type",
+                (paramType == null)? "" : paramType,
+                paramElement);
+
+        //adds the short type
+        addShortType(paramElement,paramType);
+
+        // add an extra attribute to say whether the type mapping is the default
+        if (mapper.getDefaultMappingName().equals(paramType)) {
+            addAttribute(doc, "default", "yes", paramElement);
+        }
+        addAttribute(doc, "value", getParamInitializer(paramType), paramElement);
+        // add this as a body parameter
+        addAttribute(doc, "location", "body", paramElement);
+
+        //if the opName and partName are present , add them
+        if (opName!=null){
+            addAttribute(doc,"opname",opName.getLocalPart(),paramElement);
+        }
+
+        if (paramQName!=null){
+            Element qNameElement = doc.createElement("qname");
+            addAttribute(doc,"nsuri", paramQName.getNamespaceURI(), qNameElement);
+            addAttribute(doc,"localname", paramQName.getLocalPart(), qNameElement);
+            paramElement.appendChild(qNameElement);
+        }
+
+        if (partName!= null){
+            addAttribute(doc,"partname",
+                    JavaUtils.capitalizeFirstChar(partName),
+                    paramElement);
+        }
+
+        if (isPrimitive){
+            addAttribute(doc,"primitive","yes",paramElement);
+        }
+
+        if (isArray){
+            addAttribute(doc,"array","yes",paramElement);
+        }
+
+        return paramElement;
+    }
+
+    /**
+     * @param doc
+     * @param operation
+     * @return Returns Element.
+     */
+    protected Element getOutputParamElement(Document doc, AxisOperation operation) {
+        Element paramElement = doc.createElement("param");
+        AxisMessage outputMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+        String typeMappingStr;
+        String parameterName;
+
+        if (outputMessage != null) {
+            parameterName = this.mapper.getParameterName(outputMessage.getElementQName());
+            String typeMapping = this.mapper.getTypeMappingName(outputMessage.getElementQName());
+            typeMappingStr = (typeMapping == null)
+                    ? ""
+                    : typeMapping;
+        } else {
+            parameterName = "";
+            typeMappingStr = "";
+        }
+
+        addAttribute(doc, "name", parameterName, paramElement);
+        addAttribute(doc, "type", typeMappingStr, paramElement);
+
+        //adds the short type
+        addShortType(paramElement,typeMappingStr);
+
+
+        // add an extra attribute to say whether the type mapping is the default
+        if (mapper.getDefaultMappingName().equals(typeMappingStr)) {
+            addAttribute(doc, "default", "yes", paramElement);
+        }
+
+        // add this as a body parameter
+        addAttribute(doc, "location", "body", paramElement);
+        addAttribute(doc, "opname", operation.getName().getLocalPart(), paramElement);
+
+        QName paramQName = outputMessage.getElementQName();
+        if (paramQName!=null){
+            Element qNameElement = doc.createElement("qname");
+            addAttribute(doc,"nsuri", paramQName.getNamespaceURI(), qNameElement);
+            addAttribute(doc,"localname", paramQName.getLocalPart(), qNameElement);
+            paramElement.appendChild(qNameElement);
+        }
+
+        return paramElement;
+    }
+
+    /**
+     * @param paramType
+     */
+    protected String getParamInitializer(String paramType) {
+
+        // Look up paramType in the table
+        String out = (String) constructorMap.get(paramType);
+
+        if (out == null) {
+            out = "null";
+        }
+
+        return out;
+    }
+
+    /**
+     * @param doc
+     * @param parameters
+     * @param location
+     */
+    protected List getParameterElementList(Document doc, List parameters, String location) {
+        List parameterElementList = new ArrayList();
+
+        if ((parameters != null) && !parameters.isEmpty()) {
+            int count = parameters.size();
+
+            for (int i = 0; i < count; i++) {
+                Element param = doc.createElement("param");
+                QName name = (QName) parameters.get(i);
+
+                addAttribute(doc, "name", this.mapper.getParameterName(name), param);
+
+                String typeMapping = this.mapper.getTypeMappingName(name);
+                String typeMappingStr = (typeMapping == null)
+                        ? ""
+                        : typeMapping;
+
+                addAttribute(doc, "type", typeMappingStr, param);
+                addAttribute(doc, "location", location, param);
+                parameterElementList.add(param);
+            }
+        }
+
+        return parameterElementList;
+    }
+
+    /**
+     * Utility method to add an attribute to a given element.
+     *
+     * @param document
+     * @param eltName
+     * @param eltValue
+     * @param element
+     */
+    protected Element addElement(Document document, String eltName, String eltValue, Element element) {
+        Element elt = XSLTUtils.addChildElement(document, eltName, element);
+        if (eltValue!=null){
+            elt.appendChild(document.createTextNode(eltValue));
+        }
+        return elt;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CEmitter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CEmitter.java
new file mode 100644
index 0000000..4870105
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CEmitter.java
@@ -0,0 +1,651 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.emitter;
+
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.codegen.writer.*;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.Utils;
+import org.apache.axis2.util.PolicyUtil;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.PolicyInclude;
+import org.apache.axis2.description.AxisMessage;
+import org.apache.neethi.Policy;
+import org.apache.axiom.om.OMFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.namespace.QName;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
+
+import java.io.File;
+
+public class CEmitter extends AxisServiceBasedMultiLanguageEmitter {
+    protected static final String C_STUB_PREFIX = "axis2_stub_";
+    protected static final String C_SKEL_PREFIX = "axis2_skel_";
+    protected static final String C_SVC_SKEL_PREFIX = "axis2_svc_skel_";
+    protected static final String C_STUB_SUFFIX = "";
+    protected static final String C_SKEL_SUFFIX = "";
+    protected static final String C_SVC_SKEL_SUFFIX = "";
+
+    protected static final String JAVA_DEFAULT_TYPE = "org.apache.axiom.om.OMElement";
+    protected static final String C_DEFAULT_TYPE = "axiom_node_t*";
+
+    protected static final String C_OUR_TYPE_PREFIX = "axis2_";
+    protected static final String C_OUR_TYPE_SUFFIX = "_t*";
+    /**
+     * Emit the stub
+     *
+     * @throws CodeGenerationException
+     */
+    public void emitStub() throws CodeGenerationException {
+
+        try {
+            // write interface implementations
+            writeCStub();
+
+
+        } catch (Exception e) {
+            //log the error here
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Emit the skeltons
+     *
+     * @throws CodeGenerationException
+     */
+    public void emitSkeleton() throws CodeGenerationException {
+        try {
+             // write skeleton
+            writeCSkel();
+
+            // write a Service Skeleton for this particular service.
+            writeCServiceSkeleton();
+
+            writeServiceXml();
+        }
+        catch( Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Writes the Stub.
+     *
+     * @throws Exception
+     */
+    protected void writeCStub() throws Exception {
+
+        // first check for the policies in this service and write them
+        Document interfaceImplModel = createDOMDocumentForInterfaceImplementation();
+
+        CStubHeaderWriter writerHStub =
+                new CStubHeaderWriter(getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                        codeGenConfiguration.getSourceLocation()),
+                        codeGenConfiguration.getOutputLanguage());
+
+        writeClass(interfaceImplModel, writerHStub);
+
+
+        CStubSourceWriter writerCStub =
+                new CStubSourceWriter(getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                        codeGenConfiguration.getSourceLocation()),
+                        codeGenConfiguration.getOutputLanguage());
+
+        writeClass(interfaceImplModel, writerCStub);
+    }
+
+
+
+    /**
+     * Writes the Skel.
+     *
+     * @throws Exception
+     */
+    protected void writeCSkel() throws Exception {
+
+        Document skeletonModel = createDOMDocumentForSkeleton(codeGenConfiguration.isServerSideInterface());
+
+
+        CSkelHeaderWriter skeletonWriter = new CSkelHeaderWriter(getOutputDirectory(this.codeGenConfiguration.getOutputLocation(),
+                codeGenConfiguration.getSourceLocation()), this.codeGenConfiguration.getOutputLanguage());
+
+        writeClass(skeletonModel, skeletonWriter);
+
+        CSkelSourceWriter skeletonWriterStub = new CSkelSourceWriter(getOutputDirectory(this.codeGenConfiguration.getOutputLocation(),
+                codeGenConfiguration.getSourceLocation()), this.codeGenConfiguration.getOutputLanguage());
+
+        writeClass(skeletonModel, skeletonWriterStub);
+    }
+
+    /**
+     * @throws Exception
+     */
+    protected void writeCServiceSkeleton() throws Exception {
+
+        Document skeletonModel = createDOMDocumentForServiceSkeletonXML();
+        CSvcSkeletonWriter writer = new CSvcSkeletonWriter(getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+                codeGenConfiguration.getSourceLocation()),
+                                    codeGenConfiguration.getOutputLanguage());
+
+        writeClass(skeletonModel, writer);
+
+    }
+
+    /**
+     * Write the service XML
+     *
+     * @throws Exception
+     */
+    protected void writeServiceXml() throws Exception {
+        if (this.codeGenConfiguration.isGenerateDeployementDescriptor()) {
+
+            // Write the service xml in a folder with the
+            Document serviceXMLModel = createDOMDocumentForServiceXML();
+            ClassWriter serviceXmlWriter =
+                    new CServiceXMLWriter(getOutputDirectory(this.codeGenConfiguration.getOutputLocation(),
+                            codeGenConfiguration.getResourceLocation()),
+                            this.codeGenConfiguration.getOutputLanguage());
+
+            writeClass(serviceXMLModel, serviceXmlWriter);
+        }
+    }
+    /**
+     * Creates the DOM tree for implementations.
+     */
+    protected Document createDOMDocumentForInterfaceImplementation() throws Exception {
+
+        String serviceName = axisService.getName();
+        String serviceTns = axisService.getTargetNamespace();
+        String serviceCName = makeCClassName(axisService.getName());
+        String stubName = C_STUB_PREFIX + serviceCName + C_STUB_SUFFIX;
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("class");
+
+        addAttribute(doc, "name", stubName, rootElement);
+        addAttribute( doc,"prefix", stubName, rootElement); //prefix to be used by the functions
+        addAttribute(doc, "qname", serviceName + "|" + serviceTns, rootElement);
+        addAttribute(doc, "servicename", serviceCName, rootElement);
+        addAttribute(doc, "package", "", rootElement);
+
+        addAttribute(doc, "namespace", serviceTns, rootElement);
+        addAttribute(doc, "interfaceName", serviceCName, rootElement);
+
+        /* The following block of code is same as for the
+         * AxisServiceBasedMultiLanguageEmitter createDOMDocumentForInterfaceImplementation()
+         */
+        // add the wrap classes flag
+        if (codeGenConfiguration.isPackClasses()) {
+            addAttribute(doc, "wrapped", "yes", rootElement);
+        }
+
+        // add SOAP version
+        addSoapVersion(doc, rootElement);
+
+        // add the end point
+        addEndpoint(doc, rootElement);
+
+        // set the sync/async attributes
+        fillSyncAttributes(doc, rootElement);
+
+        // ###########################################################################################
+        // this block of code specifically applies to the integration of databinding code into the
+        // generated classes tightly (probably as inner classes)
+        // ###########################################################################################
+        // check for the special models in the mapper and if they are present process them
+        if (mapper.isObjectMappingPresent()) {
+
+            // add an attribute to the root element showing that the writing has been skipped
+            addAttribute(doc, "skip-write", "yes", rootElement);
+
+            // process the mapper objects
+            processModelObjects(mapper.getAllMappedObjects(), rootElement, doc);
+        }
+
+        // #############################################################################################
+
+        // load the operations
+        loadOperations(doc, rootElement, null);
+
+        // add the databind supporters. Now the databind supporters are completly contained inside
+        // the stubs implementation and not visible outside
+        rootElement.appendChild(createDOMElementforDatabinders(doc,false));
+
+        Object stubMethods;
+
+        //if some extension has added the stub methods property, add them to the
+        //main document
+        if ((stubMethods = codeGenConfiguration.getProperty("stubMethods")) != null) {
+            rootElement.appendChild(doc.importNode((Element) stubMethods, true));
+        }
+
+        //add another element to have the unique list of faults
+        rootElement.appendChild(getUniqueListofFaults(doc));
+
+        /////////////////////////////////////////////////////
+        //System.out.println(DOM2Writer.nodeToString(rootElement));
+        /////////////////////////////////////////////////////
+
+
+        doc.appendChild(rootElement);
+        return doc;
+    }
+
+    protected Document createDOMDocumentForSkeleton(boolean isSkeletonInterface) {
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("interface");
+
+        String serviceCName = makeCClassName(axisService.getName());
+        String skelName = C_SKEL_PREFIX + serviceCName + C_SKEL_SUFFIX;
+
+        // only the name is used
+        addAttribute(doc, "name", skelName , rootElement);
+        addAttribute(doc, "package", "", rootElement);
+        String serviceName = axisService.getName();
+        String serviceTns = axisService.getTargetNamespace();
+        addAttribute( doc,"prefix", skelName, rootElement); //prefix to be used by the functions
+        addAttribute(doc, "qname", serviceName + "|" + serviceTns, rootElement);
+
+
+        fillSyncAttributes(doc, rootElement);
+        loadOperations(doc, rootElement, null);
+
+        //attach a list of faults
+        rootElement.appendChild(getUniqueListofFaults(doc));
+
+        doc.appendChild(rootElement);
+        return doc;
+
+    }
+
+    protected Document createDOMDocumentForServiceSkeletonXML() {
+        Document doc = getEmptyDocument();
+        Element rootElement = doc.createElement("interface");
+
+        String localPart = makeCClassName(axisService.getName());
+        String svcSkelName = C_SVC_SKEL_PREFIX + localPart + C_SVC_SKEL_SUFFIX;
+        String skelName = C_SKEL_PREFIX + localPart + C_SKEL_SUFFIX;
+
+        // only the name is used
+        addAttribute(doc, "name", svcSkelName , rootElement);
+        addAttribute(doc, "prefix", svcSkelName , rootElement); //prefix to be used by the functions
+        String serviceName = axisService.getName();
+        String serviceTns = axisService.getTargetNamespace();
+        addAttribute(doc, "qname", serviceName + "|" + serviceTns, rootElement);
+
+        addAttribute(doc, "svcname", skelName , rootElement);
+        addAttribute(doc, "svcop_prefix", skelName , rootElement);
+        addAttribute(doc, "package", "", rootElement);
+
+        fillSyncAttributes(doc, rootElement);
+        loadOperations(doc, rootElement, null);
+
+        // add SOAP version
+        addSoapVersion(doc, rootElement);
+
+        //attach a list of faults
+        rootElement.appendChild(getUniqueListofFaults(doc));
+
+        doc.appendChild(rootElement);
+        return doc;
+
+    }
+
+    /**
+     * @param word
+     * @return Returns character removed string.
+     */
+    protected String makeCClassName(String word) {
+        //currently avoid only java key words and service names with '.' characters
+
+        if (JavaUtils.isJavaKeyword(word)) {
+            return JavaUtils.makeNonJavaKeyword(word);
+        }
+        return word.replace('.', '_');
+    }
+
+
+    /**
+     * Loads the operations
+     * @param doc
+     * @param rootElement
+     * @param mep
+     * @return operations found
+     */
+    protected boolean loadOperations(Document doc, Element rootElement, String mep) {
+        Element methodElement;
+        String portTypeName = makeJavaClassName(axisService.getName());
+
+        Iterator operations = axisService.getOperations();
+        boolean opsFound = false;
+        while (operations.hasNext()) {
+            AxisOperation axisOperation = (AxisOperation) operations.next();
+
+            // populate info holder with mep information. This will used in determining which
+            // message receiver to use, etc.,
+
+            String messageExchangePattern = axisOperation.getMessageExchangePattern();
+            if (infoHolder.get(messageExchangePattern) == null) {
+                infoHolder.put(messageExchangePattern, Boolean.TRUE);
+            }
+
+            if (mep == null) {
+
+                opsFound = true;
+
+                List soapHeaderInputParameterList = new ArrayList();
+                List soapHeaderOutputParameterList = new ArrayList();
+
+                methodElement = doc.createElement("method");
+
+                String localPart = axisOperation.getName().getLocalPart();
+                String opCName = makeCClassName(localPart);
+                String opNS = axisOperation.getName().getNamespaceURI();
+
+                addAttribute(doc, "name", opCName, methodElement);
+                addAttribute(doc, "localpart", localPart, methodElement);
+                addAttribute(doc, "qname", localPart+ "|"+ opNS, methodElement);
+
+                addAttribute(doc, "namespace", opNS, methodElement);
+                String style = axisOperation.getStyle();
+                addAttribute(doc, "style", style, methodElement);
+                addAttribute(doc, "dbsupportname", portTypeName + localPart + DATABINDING_SUPPORTER_NAME_SUFFIX,
+                        methodElement);
+
+
+                addAttribute(doc, "mep", Utils.getAxisSpecifMEPConstant(axisOperation.getMessageExchangePattern()) + "", methodElement);
+                addAttribute(doc, "mepURI", axisOperation.getMessageExchangePattern(), methodElement);
+
+
+                addSOAPAction(doc, methodElement, axisOperation);
+                //add header ops for input
+                addHeaderOperations(soapHeaderInputParameterList, axisOperation, true);
+                //add header ops for output
+                addHeaderOperations(soapHeaderOutputParameterList, axisOperation, false);
+
+                PolicyInclude policyInclude = axisOperation.getPolicyInclude();
+                Policy policy = policyInclude.getPolicy();
+                if (policy != null) {
+                    try {
+                        addAttribute(doc, "policy", PolicyUtil.policyComponentToString(policy), methodElement);
+                    } catch (Exception ex) {
+                        throw new RuntimeException("can't serialize the policy to a String " , ex);
+                    }
+                }
+
+                methodElement.appendChild(getInputElement(doc, axisOperation, soapHeaderInputParameterList));
+                methodElement.appendChild(getOutputElement(doc, axisOperation, soapHeaderOutputParameterList));
+                methodElement.appendChild(getFaultElement(doc, axisOperation));
+
+                rootElement.appendChild(methodElement);
+            } else {
+                //mep is present - we move ahead only if the given mep matches the mep of this operation
+
+                if (mep.equals(axisOperation.getMessageExchangePattern())) {
+                    //at this point we know it's true
+                    opsFound = true;
+                    List soapHeaderInputParameterList = new ArrayList();
+                    List soapHeaderOutputParameterList = new ArrayList();
+                    methodElement = doc.createElement("method");
+                    String localPart = axisOperation.getName().getLocalPart();
+                    String opCName = makeCClassName(localPart);
+                    String opNS = axisOperation.getName().getNamespaceURI();
+
+                    addAttribute(doc, "name", opCName, methodElement);
+                    addAttribute(doc, "localpart", localPart, methodElement);
+                    addAttribute(doc, "qname", localPart+ "|"+ opNS, methodElement);
+
+                    addAttribute(doc, "namespace", axisOperation.getName().getNamespaceURI(), methodElement);
+                    addAttribute(doc, "style", axisOperation.getStyle(), methodElement);
+                    addAttribute(doc, "dbsupportname", portTypeName + localPart + DATABINDING_SUPPORTER_NAME_SUFFIX,
+                            methodElement);
+
+                    addAttribute(doc, "mep", Utils.getAxisSpecifMEPConstant(axisOperation.getMessageExchangePattern()) + "", methodElement);
+                    addAttribute(doc, "mepURI", axisOperation.getMessageExchangePattern(), methodElement);
+
+
+                    addSOAPAction(doc, methodElement, axisOperation);
+                    addHeaderOperations(soapHeaderInputParameterList, axisOperation, true);
+                    addHeaderOperations(soapHeaderOutputParameterList, axisOperation, false);
+
+                    /*
+                     * Setting the policy of the operation
+                     */
+
+                    Policy policy = axisOperation.getPolicyInclude().getPolicy();
+                    if (policy != null) {
+                        try {
+                        addAttribute(doc, "policy",
+                                PolicyUtil.policyComponentToString(policy),
+                                methodElement);
+                        } catch (Exception ex) {
+                            throw new RuntimeException("can't serialize the policy to a String", ex);
+                        }
+                    }
+
+
+                    methodElement.appendChild(getInputElement(doc,
+                            axisOperation, soapHeaderInputParameterList));
+                    methodElement.appendChild(getOutputElement(doc,
+                            axisOperation, soapHeaderOutputParameterList));
+                    methodElement.appendChild(getFaultElement(doc,
+                            axisOperation));
+
+                    rootElement.appendChild(methodElement);
+                    //////////////////////
+                }
+
+            }
+
+        }
+
+        return opsFound;
+    }
+
+
+    /**
+     * A convenient method for the generating the parameter
+     * element
+     *
+     * @param doc
+     * @param paramName
+     * @param paramType
+     * @param opName
+     * @param paramName
+     */
+    protected Element generateParamComponent(Document doc,
+                                             String paramName,
+                                             String paramType,
+                                             QName opName,
+                                             String partName,
+                                             boolean isPrimitive) {
+
+        Element paramElement = doc.createElement("param");
+        //return paramElement;/*
+        addAttribute(doc, "name",
+                paramName, paramElement);
+
+        String typeMappingStr = (paramType == null)
+                ? ""
+                : paramType;
+
+
+        if (JAVA_DEFAULT_TYPE.equals(typeMappingStr))
+        {
+            typeMappingStr = C_DEFAULT_TYPE;
+        }
+
+        addAttribute(doc, "type", typeMappingStr, paramElement);
+        addAttribute(doc, "caps-type", typeMappingStr.toUpperCase(), paramElement);
+
+
+        //adds the short type
+        addShortType(paramElement,paramType);
+
+        // add an extra attribute to say whether the type mapping is the default
+        if (mapper.getDefaultMappingName().equals(paramType)) {
+            addAttribute(doc, "default", "yes", paramElement);
+        }
+        addAttribute(doc, "value", getParamInitializer(paramType), paramElement);
+        // add this as a body parameter
+        addAttribute(doc, "location", "body", paramElement);
+
+        //if the opName and partName are present , add them
+        if (opName!=null){
+            addAttribute(doc,"opname",opName.getLocalPart(),paramElement);
+
+        }
+        if (partName!= null){
+            addAttribute(doc,"partname",
+                    JavaUtils.capitalizeFirstChar(partName),
+                    paramElement);
+        }
+
+        if (isPrimitive){
+            addAttribute(doc,"primitive","yes",paramElement);
+        }
+
+        // the following methods are moved from addOurs functioin
+        Map typeMap =  CTypeInfo.getTypeMap();
+        Iterator it= typeMap.keySet().iterator();
+        boolean isOurs = true;
+        while (it.hasNext()){
+            if (it.next().equals(typeMappingStr)){
+                isOurs = false;
+                break;
+            }
+        }
+
+        if ( isOurs && typeMappingStr.length() != 0 && !typeMappingStr.equals("void") &&
+                !typeMappingStr.equals(C_DEFAULT_TYPE) ){
+            addAttribute(doc, "ours", "yes", paramElement);
+        }
+        else
+        {
+            isOurs = false;
+        }
+
+        if ( isOurs)
+        {
+            typeMappingStr = C_OUR_TYPE_PREFIX + typeMappingStr + C_OUR_TYPE_SUFFIX;
+        }
+
+        addAttribute(doc, "axis2-type", typeMappingStr, paramElement);
+        addAttribute(doc, "axis2-caps-type", typeMappingStr.toUpperCase(), paramElement);
+
+        return paramElement;  //*/
+    }
+    /**
+     * @param doc
+     * @param operation
+     * @return Returns Element.
+     */
+    protected Element getOutputParamElement(Document doc, AxisOperation operation) {
+        Element paramElement = doc.createElement("param");
+        AxisMessage outputMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+        String typeMappingStr;
+        String parameterName;
+
+        if (outputMessage != null) {
+            parameterName = this.mapper.getParameterName(outputMessage.getElementQName());
+            String typeMapping = this.mapper.getTypeMappingName(outputMessage.getElementQName());
+            typeMappingStr = (typeMapping == null)
+                    ? ""
+                    : typeMapping;
+        } else {
+            parameterName = "";
+            typeMappingStr = "";
+        }
+
+        if (JAVA_DEFAULT_TYPE.equals(typeMappingStr))
+        {
+            typeMappingStr = C_DEFAULT_TYPE;
+        }
+        addAttribute(doc, "name", parameterName, paramElement);
+        addAttribute(doc, "type", typeMappingStr, paramElement);
+        addAttribute(doc, "caps-type", typeMappingStr.toUpperCase(), paramElement);
+
+
+        // the following methods are moved from addOurs functioin
+        Map typeMap =  CTypeInfo.getTypeMap();
+        Iterator it= typeMap.keySet().iterator();
+        boolean isOurs = true;
+        while (it.hasNext()){
+            if (it.next().equals(typeMappingStr)){
+                isOurs = false;
+                break;
+            }
+        }
+
+        if ( isOurs && typeMappingStr.length() != 0 && !typeMappingStr.equals("void") &&
+                !typeMappingStr.equals(C_DEFAULT_TYPE) ){
+            addAttribute(doc, "ours", "yes", paramElement);
+        }
+        else
+        {
+            isOurs = false;
+        }
+
+        if ( isOurs)
+        {
+            typeMappingStr = C_OUR_TYPE_PREFIX + typeMappingStr + C_OUR_TYPE_SUFFIX;
+        }
+        //adds the short type
+        addShortType(paramElement,typeMappingStr);
+
+
+        // add an extra attribute to say whether the type mapping is the default
+        if (mapper.getDefaultMappingName().equals(typeMappingStr)) {
+            addAttribute(doc, "default", "yes", paramElement);
+        }
+
+        // add this as a body parameter
+        addAttribute(doc, "location", "body", paramElement);
+        addAttribute(doc, "opname", operation.getName().getLocalPart(), paramElement);
+
+        return paramElement;
+    }
+
+    /**
+     * Gets the output directory for source files.
+     *
+     * @param outputDir
+     * @return Returns File.
+     */
+    protected File getOutputDirectory(File outputDir, String dir2) {
+        if (dir2 != null && !"".equals(dir2)) {
+            if (outputDir.getName().equals(".")) {
+                outputDir = new File(outputDir, dir2);
+            }
+        }
+
+        if (!outputDir.exists()) {
+            outputDir.mkdirs();
+        }
+
+        return outputDir;
+    }
+
+
+}
+
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CSharpEmitter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CSharpEmitter.java
new file mode 100644
index 0000000..84634b7
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CSharpEmitter.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.emitter;
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+
+public class CSharpEmitter extends AxisServiceBasedMultiLanguageEmitter {
+
+    public CSharpEmitter() {
+    }
+
+    public CSharpEmitter(CodeGenConfiguration configuration) {
+        this.codeGenConfiguration = configuration;
+        this.mapper = new DefaultTypeMapper();
+
+    }
+
+    public CSharpEmitter(CodeGenConfiguration configuration,
+                         TypeMapper mapper) {
+        this.codeGenConfiguration = configuration;
+        this.mapper = mapper;
+
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CTypeInfo.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CTypeInfo.java
new file mode 100644
index 0000000..6b6e27c
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/CTypeInfo.java
@@ -0,0 +1,183 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.emitter;
+
+import org.apache.axis2.databinding.types.*;
+import org.apache.axis2.namespace.Constants;
+
+import javax.xml.namespace.QName;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * The java type map. uses a static map for caching
+ * Most code from Axis 1 Codebase*
+ * Most code JavaTypeMap
+ */
+public class CTypeInfo extends Constants{
+
+    public static Map getTypeMap() {
+        return CTypeInfo.typeMap;
+    }
+
+    private static Map typeMap = new HashMap();
+
+    static {
+        // If SOAP 1.1 over the wire, map wrapper classes to XSD primitives.
+        CTypeInfo.addTypemapping(XSD_STRING,
+                "axis2_char_t*");
+
+        // The XSD Primitives are mapped to java primitives.
+        CTypeInfo.addTypemapping(XSD_BOOLEAN,"axis2_bool_t");
+        //CTypeMap.addTypemapping(XSD_DOUBLE, double.class.getName());
+        CTypeInfo.addTypemapping(XSD_FLOAT, "float");
+        CTypeInfo.addTypemapping(XSD_INT, "int");
+        CTypeInfo.addTypemapping(XSD_INTEGER,
+                "int");
+        CTypeInfo.addTypemapping(XSD_LONG, "long");
+        CTypeInfo.addTypemapping(XSD_SHORT, "short");
+        CTypeInfo.addTypemapping(XSD_BYTE, "byte");
+        CTypeInfo.addTypemapping(XSD_ANY,  "axiom_node_t*");
+        CTypeInfo.addTypemapping(XSD_DECIMAL, "int");
+
+        //anytype is mapped to the OMElement instead of the java.lang.Object
+        CTypeInfo.addTypemapping(XSD_ANYTYPE,
+                "axiom_node_t*");
+
+        //Qname maps to  jax rpc QName class
+        CTypeInfo.addTypemapping(XSD_QNAME,
+                "axis2_qname_t*");
+
+        //xsd Date is mapped to the java.util.date!
+        CTypeInfo.addTypemapping(XSD_DATE,
+                "axis2_date_time_t*");
+
+        // Mapping for xsd:time.  Map to Axis type Time
+        CTypeInfo.addTypemapping(XSD_TIME,
+                "axis2_date_time_t*");
+        CTypeInfo.addTypemapping(XSD_DATETIME,
+                "axis2_date_time_t*");
+
+        //as for the base 64 encoded binary stuff we map it to a javax.
+        // activation.Datahandler object
+        CTypeInfo.addTypemapping(XSD_BASE64,
+                "void*");
+
+        CTypeInfo.addTypemapping(XSD_HEXBIN,
+                "void*");
+
+        // These are the g* types (gYearMonth, etc) which map to Axis types
+        CTypeInfo.addTypemapping(XSD_YEARMONTH,
+                "int");
+        CTypeInfo.addTypemapping(XSD_YEAR,
+                "int");
+        CTypeInfo.addTypemapping(XSD_MONTH,
+                "int");
+        CTypeInfo.addTypemapping(XSD_DAY,
+                "int");
+        CTypeInfo.addTypemapping(XSD_MONTHDAY,
+                "int");
+
+        // xsd:token
+        CTypeInfo.addTypemapping(XSD_TOKEN, Token.class.getName());
+
+        // a xsd:normalizedString
+        CTypeInfo.addTypemapping(XSD_NORMALIZEDSTRING,
+                "axis2_char*");
+
+        // a xsd:unsignedLong
+        CTypeInfo.addTypemapping(XSD_UNSIGNEDLONG,
+                "unsigned long");
+
+        // a xsd:unsignedInt
+        CTypeInfo.addTypemapping(XSD_UNSIGNEDINT,
+                "unsigned int");
+
+        // a xsd:unsignedShort
+        CTypeInfo.addTypemapping(XSD_UNSIGNEDSHORT,
+                "unsigned short");
+
+        // a xsd:unsignedByte
+        CTypeInfo.addTypemapping(XSD_UNSIGNEDBYTE,
+                "unsinged char");
+
+        // a xsd:nonNegativeInteger
+        CTypeInfo.addTypemapping(XSD_NONNEGATIVEINTEGER,
+                "unsinged int");
+
+        // a xsd:negativeInteger
+        CTypeInfo.addTypemapping(XSD_NEGATIVEINTEGER,
+                "int");
+
+        // a xsd:positiveInteger
+        CTypeInfo.addTypemapping(XSD_POSITIVEINTEGER,
+                "unsinged int");
+
+        // a xsd:nonPositiveInteger
+        CTypeInfo.addTypemapping(XSD_NONPOSITIVEINTEGER,
+                "int");
+
+        // a xsd:Name
+        CTypeInfo.addTypemapping(XSD_NAME, Name.class.getName());
+
+        // a xsd:NCName
+        CTypeInfo.addTypemapping(XSD_NCNAME, NCName.class.getName());
+
+        // a xsd:ID
+        CTypeInfo.addTypemapping(XSD_ID, Id.class.getName());
+
+        // a xml:lang
+        // addTypemapping(XML_LANG,Language.class.getName());
+
+        // a xsd:language
+        CTypeInfo.addTypemapping(XSD_LANGUAGE, Language.class.getName());
+
+        // a xsd:NmToken
+        CTypeInfo.addTypemapping(XSD_NMTOKEN, NMToken.class.getName());
+
+        // a xsd:NmTokens
+        CTypeInfo.addTypemapping(XSD_NMTOKENS, NMTokens.class.getName());
+
+        // a xsd:NOTATION
+        CTypeInfo.addTypemapping(XSD_NOTATION, Notation.class.getName());
+
+        // a xsd:XSD_ENTITY
+        CTypeInfo.addTypemapping(XSD_ENTITY, Entity.class.getName());
+
+        // a xsd:XSD_ENTITIES
+        CTypeInfo.addTypemapping(XSD_ENTITIES, Entities.class.getName());
+
+        // a xsd:XSD_IDREF
+        CTypeInfo.addTypemapping(XSD_IDREF, IDRef.class.getName());
+
+        // a xsd:XSD_XSD_IDREFS
+        CTypeInfo.addTypemapping(XSD_IDREFS, IDRefs.class.getName());
+
+        // a xsd:Duration
+        CTypeInfo.addTypemapping(XSD_DURATION, Duration.class.getName());
+
+        // a xsd:anyURI
+        CTypeInfo.addTypemapping(XSD_ANYURI, URI.class.getName());
+
+
+    }
+
+    private static void addTypemapping(QName name, String str) {
+        CTypeInfo.typeMap.put(name, str);
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/Emitter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/Emitter.java
new file mode 100644
index 0000000..ef9cce2
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/Emitter.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.emitter;
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+
+public interface Emitter {
+
+    public void setCodeGenConfiguration(CodeGenConfiguration configuration);
+
+    public void setMapper(TypeMapper mapper);
+
+    public void emitStub() throws CodeGenerationException;
+
+    public void emitSkeleton() throws CodeGenerationException;
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/JavaEmitter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/JavaEmitter.java
new file mode 100644
index 0000000..b5d1b04
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/JavaEmitter.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.emitter;
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+
+public class JavaEmitter extends AxisServiceBasedMultiLanguageEmitter {
+
+    public JavaEmitter() {
+        super();
+    }
+
+    /**
+     * @param configuration
+     */
+    public JavaEmitter(CodeGenConfiguration configuration) {
+        super();
+        this.codeGenConfiguration = configuration;
+        this.mapper = new DefaultTypeMapper();
+
+
+
+
+    }
+
+    /**
+     * @param configuration
+     * @param mapper
+     */
+    public JavaEmitter(CodeGenConfiguration configuration, TypeMapper mapper) {
+        super();
+        this.codeGenConfiguration = configuration;
+        this.mapper = mapper;
+
+
+    }
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractCodeGenerationExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractCodeGenerationExtension.java
new file mode 100644
index 0000000..2bcfe85
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractCodeGenerationExtension.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public abstract class AbstractCodeGenerationExtension implements CodeGenExtension {
+
+	protected Log log = LogFactory.getLog(this.getClass());
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractDBProcessingExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractDBProcessingExtension.java
new file mode 100644
index 0000000..1c5bfba
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractDBProcessingExtension.java
@@ -0,0 +1,37 @@
+package org.apache.axis2.wsdl.codegen.extension;
+
+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
+
+import java.util.Map;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public abstract class AbstractDBProcessingExtension extends AbstractCodeGenerationExtension {
+
+    /**
+     * Method to test whether the passed in framework name is
+     * relevant to this extension.
+     *
+     * @param dbFrameworkName
+     * @return Returns boolean.
+     */
+    protected boolean testFallThrough(String dbFrameworkName) {
+        Map extensionsMap = ConfigPropertyFileLoader.getDatabindingFrameworkNameToExtensionMap();
+        String mappedExtension = extensionsMap.get(dbFrameworkName) != null ? extensionsMap.get(dbFrameworkName).toString() : "";
+        return !(getClass().getName().equals(mappedExtension));
+    }
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractPrettyPrinterExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractPrettyPrinterExtension.java
new file mode 100644
index 0000000..7b3051f
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/AbstractPrettyPrinterExtension.java
@@ -0,0 +1,64 @@
+package org.apache.axis2.wsdl.codegen.extension;

+

+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;

+import org.apache.axis2.wsdl.codegen.CodeGenerationException;

+

+import java.io.File;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public abstract class AbstractPrettyPrinterExtension extends AbstractCodeGenerationExtension{

+     /**

+     * If the extension for property file changes it might effect this as

+     * well !!!

+     */

+    protected String fileExtension = "";

+

+    public void engage(CodeGenConfiguration configuration) throws CodeGenerationException {

+

+        //recurse through the output files and prettify them

+        File outputFolder = configuration.getOutputLocation();

+        prettify(outputFolder);

+

+

+    }

+

+    /**

+     * Recursive procedure to prettify the files

+     * @param file

+     */

+    protected void prettify(File file){

+        if (file.isFile() &&

+                file.exists() &&

+                file.getName().toLowerCase().endsWith(fileExtension)){

+            prettifyFile(file);

+        }else if (file.isDirectory()){

+            File[] childFiles = file.listFiles();

+            for (int i = 0; i < childFiles.length; i++) {

+                prettify(childFiles[i]);

+            }

+        }

+

+    }

+

+    /**

+     * Implement this to call the proper pretty printers

+     * @param file

+     */

+    protected abstract void prettifyFile(File file);

+

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/CodeGenExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/CodeGenExtension.java
new file mode 100644
index 0000000..6580e13
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/CodeGenExtension.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+
+public interface CodeGenExtension {
+
+    public void engage(CodeGenConfiguration configuration) throws CodeGenerationException;
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/DefaultDatabindingExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/DefaultDatabindingExtension.java
new file mode 100644
index 0000000..b66b721
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/DefaultDatabindingExtension.java
@@ -0,0 +1,57 @@
+/*

+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;

+

+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;

+import org.apache.axis2.wsdl.codegen.CodeGenerationException;

+import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;

+import org.apache.axis2.wsdl.databinding.TypeMapper;

+import org.apache.axis2.wsdl.databinding.CDefaultTypeMapper;

+import org.apache.axis2.wsdl.i18n.CodegenMessages;

+

+public class DefaultDatabindingExtension extends AbstractDBProcessingExtension {

+

+

+    public void engage(CodeGenConfiguration configuration) throws CodeGenerationException {

+        TypeMapper mapper = configuration.getTypeMapper();

+        if (testFallThrough(configuration.getDatabindingType())) {

+            //if it's fall through for the default databinding extension and a mapper has

+            //not yet being set, then there's a problem.

+            //Hence check the mapper status here

+

+            if (mapper == null) {

+                //this shouldn't happen

+                throw new CodeGenerationException(CodegenMessages.getMessage("extension.noProperDatabinding"));

+            }

+            return;

+        }

+        //the mapper has not been populated yet. since this extension is

+        //registered for -d none, we have to generate a new type mapper

+        //that serves only the default types

+        if (mapper ==null){

+            if (configuration.getOutputLanguage() != null &&

+                    !configuration.getOutputLanguage().trim().equals("") &&

+                    configuration.getOutputLanguage().toLowerCase().equals("c")) {

+                configuration.setTypeMapper(new CDefaultTypeMapper());

+

+            }  else {

+                configuration.setTypeMapper(new DefaultTypeMapper());

+            }

+

+        }

+    }

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JAXBRIExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JAXBRIExtension.java
new file mode 100644
index 0000000..e06a4df
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JAXBRIExtension.java
@@ -0,0 +1,146 @@
+/*

+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;

+

+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;

+import org.apache.axis2.wsdl.databinding.TypeMapper;

+import org.apache.axis2.wsdl.i18n.CodegenMessages;

+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;

+import org.w3c.dom.Document;

+import org.w3c.dom.Element;

+

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.parsers.ParserConfigurationException;

+import java.io.InputStream;

+import java.lang.reflect.Method;

+import java.util.ArrayList;

+import java.util.List;

+

+public class JAXBRIExtension extends AbstractDBProcessingExtension {

+	

+    public static final String SCHEMA_FOLDER = "schemas";

+

+    public static String MAPPINGS = "mappings";

+    public static String MAPPING = "mapping";

+    public static String MESSAGE = "message";

+    public static String JAVA_NAME = "javaclass";

+

+    public static final String MAPPING_FOLDER = "Mapping";

+    public static final String MAPPER_FILE_NAME = "mapper";

+    public static final String SCHEMA_PATH = "/org/apache/axis2/wsdl/codegen/schema/";

+    

+    public static final String JAXB_RI_API_CLASS  = "javax.xml.bind.JAXBContext";

+    public static final String JAXB_RI_IMPL_CLASS = "com.sun.xml.bind.Util";

+    public static final String JAXB_RI_XJC_CLASS = "com.sun.tools.xjc.api.XJC";

+    

+    public static final String JAXB_RI_UTILITY_CLASS = "org.apache.axis2.jaxbri.CodeGenerationUtility";

+

+    public static final String JAXB_RI_PROCESS_METHOD = "processSchemas";

+    

+

+    public void engage(CodeGenConfiguration configuration) {

+

+        //test the databinding type. If not just fall through

+        if (testFallThrough(configuration.getDatabindingType())) {

+            return;

+        }

+        

+        try {

+

+            // try dummy load of framework classes first to check missing jars

+            try {

+            	ClassLoader cl = getClass().getClassLoader();

+            	cl.loadClass(JAXB_RI_API_CLASS);

+                cl.loadClass(JAXB_RI_IMPL_CLASS);

+                cl.loadClass(JAXB_RI_XJC_CLASS);

+            } catch (ClassNotFoundException e) {

+                throw new RuntimeException("JAX-B RI JARs not on classpath");

+            }

+            

+            // load the actual utility class

+            Class clazz = null;

+            try {

+                clazz = JAXBRIExtension.class.getClassLoader().loadClass(JAXB_RI_UTILITY_CLASS);

+            } catch (ClassNotFoundException e) {

+                throw new RuntimeException("JAX-B RI binding extension not in classpath");

+            }

+            

+            // invoke utility class method for actual processing

+            Method method = clazz.getMethod(JAXB_RI_PROCESS_METHOD,

+                    new Class[] { List.class, Element[].class, CodeGenConfiguration.class });

+            ArrayList schemas = configuration.getAxisService().getSchema();

+            Element[] additionalSchemas = loadAdditionalSchemas();

+            TypeMapper mapper = (TypeMapper)method.invoke(null,

+                new Object[] { schemas, additionalSchemas, configuration });

+

+            // set the type mapper to the config

+            configuration.setTypeMapper(mapper);

+

+        } catch (Exception e) {

+            if (e instanceof RuntimeException) {

+                throw (RuntimeException)e;

+            } else {

+                throw new RuntimeException(e);

+            }

+        }

+        

+    }

+

+

+    /**

+     * Loading the external schemas.

+     *

+     * @return element array consisting of the the DOM element objects that represent schemas

+     */

+    private Element[] loadAdditionalSchemas() {

+        //load additional schemas

+        String[] schemaNames = ConfigPropertyFileLoader.getThirdPartySchemaNames();

+        Element[] schemaElements;

+

+        try {

+            ArrayList additionalSchemaElements = new ArrayList();

+            DocumentBuilder documentBuilder = getNamespaceAwareDocumentBuilder();

+            for (int i = 0; i < schemaNames.length; i++) {

+                //the location for the third party schema;s is hardcoded

+                if (!"".equals(schemaNames[i].trim())) {

+                    InputStream schemaStream = this.getClass().getResourceAsStream(SCHEMA_PATH + schemaNames[i]);

+                    Document doc = documentBuilder.parse(schemaStream);

+                    additionalSchemaElements.add(doc.getDocumentElement());

+                }

+            }

+

+            //Create the Schema element array

+            schemaElements = new Element[additionalSchemaElements.size()];

+            for (int i = 0; i < additionalSchemaElements.size(); i++) {

+                schemaElements[i] = (Element) additionalSchemaElements.get(i);

+

+            }

+        } catch (Exception e) {

+            throw new RuntimeException(CodegenMessages.getMessage("extension.additionalSchemaFailure"), e);

+        }

+

+        return schemaElements;

+    }

+

+    private DocumentBuilder getNamespaceAwareDocumentBuilder() throws ParserConfigurationException {

+        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

+        documentBuilderFactory.setNamespaceAware(true);

+        return documentBuilderFactory.newDocumentBuilder();

+    }

+}

+

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JavaPrettyPrinterExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JavaPrettyPrinterExtension.java
new file mode 100644
index 0000000..edd52ea
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JavaPrettyPrinterExtension.java
@@ -0,0 +1,45 @@
+package org.apache.axis2.wsdl.codegen.extension;

+

+import org.apache.axis2.util.PrettyPrinter;

+

+import java.io.File;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class JavaPrettyPrinterExtension extends AbstractPrettyPrinterExtension{

+

+

+    public JavaPrettyPrinterExtension() {

+        /*

+        * If the extension for property file changes it might effect this as

+        * well !!!

+        */

+        fileExtension = ".java";

+    }

+

+    /**

+     * Overridden to call the java pretty printer

+     * @param file

+     */

+    protected void prettifyFile(File file) {

+        // Special case jaxbri generated package-info.java 

+        // as jalopy corrupts the package level annotations

+        if(file.getName().equals("package-info.java")) {

+            return;

+        }

+        PrettyPrinter.prettify(file);

+    }

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JaxMeExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JaxMeExtension.java
new file mode 100644
index 0000000..936280a
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JaxMeExtension.java
@@ -0,0 +1,200 @@
+/*

+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;

+

+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;

+import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;

+import org.apache.axis2.wsdl.databinding.JavaTypeMapper;

+import org.apache.axis2.wsdl.databinding.TypeMapper;

+import org.apache.axis2.wsdl.i18n.CodegenMessages;

+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;

+import org.apache.ws.commons.schema.XmlSchema;

+import org.apache.ws.jaxme.generator.impl.GeneratorImpl;

+import org.apache.ws.jaxme.generator.sg.GroupSG;

+import org.apache.ws.jaxme.generator.sg.ObjectSG;

+import org.apache.ws.jaxme.generator.sg.SchemaSG;

+import org.apache.ws.jaxme.generator.sg.TypeSG;

+import org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader;

+import org.apache.ws.jaxme.js.JavaQName;

+import org.apache.ws.jaxme.xs.xml.XsQName;

+import org.w3c.dom.Document;

+import org.w3c.dom.Element;

+import org.xml.sax.InputSource;

+

+import javax.xml.namespace.QName;

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.parsers.ParserConfigurationException;

+import java.io.ByteArrayOutputStream;

+import java.io.File;

+import java.io.InputStream;

+import java.io.StringReader;

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Vector;

+

+public class JaxMeExtension extends AbstractDBProcessingExtension {

+    public static final String SCHEMA_FOLDER = "schemas";

+

+    public static String MAPPINGS = "mappings";

+    public static String MAPPING = "mapping";

+    public static String MESSAGE = "message";

+    public static String JAVA_NAME = "javaclass";

+

+    public static final String MAPPING_FOLDER = "Mapping";

+    public static final String MAPPER_FILE_NAME = "mapper";

+    public static final String SCHEMA_PATH = "/org/apache/axis2/wsdl/codegen/schema/";

+

+    boolean debug = false;

+

+    public void engage(CodeGenConfiguration configuration) {

+

+        //test the databinding type. If not just fall through

+        if (testFallThrough(configuration.getDatabindingType())) {

+            return;

+        }

+

+        try {

+            //get the types from the types section

+            List typesList = configuration.getAxisService().getSchema();

+

+            //check for the imported types. Any imported types are supposed to be here also

+            if (typesList == null || typesList.isEmpty()) {

+                //there are no types to be code generated

+                //However if the type mapper is left empty it will be a problem for the other

+                //processes. Hence the default type mapper is set to the configuration

+                configuration.setTypeMapper(new DefaultTypeMapper());

+                return;

+            }

+

+

+            Vector xmlObjectsVector = new Vector();

+             //create the type mapper

+        //First try to take the one that is already there

+        TypeMapper mapper = configuration.getTypeMapper();

+        if (mapper==null){

+            mapper =new JavaTypeMapper();

+        }

+

+            for (int i = 0; i < typesList.size(); i++) {

+                XmlSchema schema = (XmlSchema) typesList.get(i);

+                xmlObjectsVector.add(new InputSource(new StringReader(getSchemaAsString(schema))));

+            }

+

+//            TODO: FIXME            

+//            Element[] additionalSchemas = loadAdditionalSchemas();

+//            // Need to add the third party schemas

+//            for (int i = 0; i < additionalSchemas.length; i++) {

+//                String s = DOM2Writer.nodeToString(additionalSchemas[i]);

+//                xmlObjectsVector.add(new InputSource(new StringReader(s)));

+//            }

+

+            File outputDir = new File(configuration.getOutputLocation(),configuration.getSourceLocation());

+

+            JAXBSchemaReader reader = new JAXBSchemaReader();

+            reader.setSupportingExtensions(true);

+

+            GeneratorImpl generator = new GeneratorImpl();

+            generator.setTargetDirectory(outputDir);

+            generator.setForcingOverwrite(false);

+            generator.setSchemaReader(reader);

+

+            for (int i = 0; i < xmlObjectsVector.size(); i++) {

+                SchemaSG sg = generator.generate((InputSource) xmlObjectsVector.elementAt(i));

+                ObjectSG[] elements = sg.getElements();

+                for (int j = 0; j < elements.length; j++) {

+                    XsQName qName = elements[j].getName();

+                    JavaQName name = elements[j].getClassContext().getXMLInterfaceName();

+                    mapper.addTypeMappingName(new QName(qName.getNamespaceURI(), qName.getLocalName()),

+                            name.getPackageName() + '.' + name.getClassName());

+                }

+                TypeSG[] types = sg.getTypes();

+                for (int j = 0; j < types.length; j++) {

+                    XsQName qName = types[j].getName();

+                    JavaQName name = types[j].getRuntimeType();

+                    mapper.addTypeMappingName(new QName(qName.getNamespaceURI(), qName.getLocalName()),

+                            name.getPackageName() + '.' + name.getClassName());

+                }

+                GroupSG[] groups = sg.getGroups();

+                for (int j = 0; j < groups.length; j++) {

+                    XsQName qName = groups[j].getName();

+                    JavaQName name = groups[j].getClassContext().getXMLInterfaceName();

+                    mapper.addTypeMappingName(new QName(qName.getNamespaceURI(), qName.getLocalName()),

+                            name.getPackageName() + '.' + name.getClassName());

+                }

+            }

+

+            //set the type mapper to the config

+            configuration.setTypeMapper(mapper);

+

+

+        } catch (Exception e) {

+            throw new RuntimeException(e);

+        }

+

+    }

+

+

+    /**

+     * Loading the external schemas.

+     *

+     * @return element array consisting of the the DOM element objects that represent schemas

+     */

+    private Element[] loadAdditionalSchemas() {

+        //load additional schemas

+        String[] schemaNames = ConfigPropertyFileLoader.getThirdPartySchemaNames();

+        Element[] schemaElements;

+

+        try {

+            ArrayList additionalSchemaElements = new ArrayList();

+            DocumentBuilder documentBuilder = getNamespaceAwareDocumentBuilder();

+            for (int i = 0; i < schemaNames.length; i++) {

+                //the location for the third party schema;s is hardcoded

+                if (!"".equals(schemaNames[i].trim())) {

+                    InputStream schemaStream = this.getClass().getResourceAsStream(SCHEMA_PATH + schemaNames[i]);

+                    Document doc = documentBuilder.parse(schemaStream);

+                    additionalSchemaElements.add(doc.getDocumentElement());

+                }

+            }

+

+            //Create the Schema element array

+            schemaElements = new Element[additionalSchemaElements.size()];

+            for (int i = 0; i < additionalSchemaElements.size(); i++) {

+                schemaElements[i] = (Element) additionalSchemaElements.get(i);

+

+            }

+        } catch (Exception e) {

+            throw new RuntimeException(CodegenMessages.getMessage("extension.additionalSchemaFailure"), e);

+        }

+

+        return schemaElements;

+    }

+

+    private DocumentBuilder getNamespaceAwareDocumentBuilder() throws ParserConfigurationException {

+        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

+        documentBuilderFactory.setNamespaceAware(true);

+        return documentBuilderFactory.newDocumentBuilder();

+    }

+

+

+    private String getSchemaAsString(XmlSchema schema) {

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        schema.write(baos);

+        return baos.toString();

+    }

+}

+

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JiBXExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JiBXExtension.java
new file mode 100644
index 0000000..14b2315
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JiBXExtension.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2006 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.axis2.wsdl.codegen.extension;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+
+/**
+ * Code generation data binding extension for JiBX support. JiBX currently
+ * requires a predefined binding definition to be supplied in order to be used
+ * with Axis2.
+ */
+public class JiBXExtension extends AbstractDBProcessingExtension {
+
+    /** Name of "extra" option used to supply binding definition path. */
+    public static final String BINDING_PATH_OPTION = "bindingfile";
+    private static final String JIBX_MODEL_CLASS =
+            "org.jibx.binding.model.BindingElement";
+    private static final String JIBX_UTILITY_CLASS =
+            "org.apache.axis2.jibx.CodeGenerationUtility";
+    private static final String JIBX_UTILITY_METHOD = "engage";
+
+    public void engage(CodeGenConfiguration configuration) {
+
+        // just return if JiBX binding not active
+        if (testFallThrough(configuration.getDatabindingType())) {
+            return;
+        }
+
+        // check the JiBX binding definition file specified
+        String path = (String)configuration.getProperties().get(BINDING_PATH_OPTION);
+        try {
+
+            // try dummy load of framework class first to check missing jars
+            try {
+                getClass().getClassLoader().loadClass(JIBX_MODEL_CLASS);
+            } catch (ClassNotFoundException e) {
+                throw new RuntimeException("JiBX framework jars not in classpath");
+            }
+
+            // load the actual utility class
+            Class clazz;
+            try {
+                clazz = JiBXExtension.class.getClassLoader().loadClass(JIBX_UTILITY_CLASS);
+            } catch (ClassNotFoundException e) {
+                throw new RuntimeException("JiBX binding extension not in classpath");
+            }
+            
+            // create an instance of the class
+            Object inst = null;
+            Constructor constructor = clazz.getConstructor(new Class[] { CodeGenConfiguration.class });
+            inst = constructor.newInstance(new Object[] { configuration });
+            
+            // invoke utility class method for actual processing
+            Method method = clazz.getMethod(JIBX_UTILITY_METHOD,
+                new Class[] { String.class });
+            method.invoke(inst, new Object[] { path });
+
+        } catch (Exception e) {
+            if (e instanceof RuntimeException) {
+                throw (RuntimeException)e;
+            } else if (e instanceof InvocationTargetException) {
+                if (e.getCause() instanceof RuntimeException) {
+                    throw (RuntimeException)e.getCause();
+                } else {
+                    throw new RuntimeException(e);
+                }
+            } else {
+                throw new RuntimeException(e);
+            }
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/PackageFinder.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/PackageFinder.java
new file mode 100644
index 0000000..8cb42bb
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/PackageFinder.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;
+
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+
+public class PackageFinder extends AbstractCodeGenerationExtension {
+
+
+    public void engage(CodeGenConfiguration configuration) {
+        String packageName = configuration.getPackageName();
+        if (packageName == null || URLProcessor.DEFAULT_PACKAGE.equals(packageName)) {
+            //use the target namespace from the axis service to form a package
+            //name
+            packageName = URLProcessor.makePackageName(
+                    configuration.getAxisService().getTargetNamespace()
+            );
+        }
+
+        if (null == packageName || "".equals(packageName))
+            packageName = URLProcessor.DEFAULT_PACKAGE;
+
+        configuration.setPackageName(packageName.toLowerCase());
+
+    }
+
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/PolicyEvaluator.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/PolicyEvaluator.java
new file mode 100644
index 0000000..b51dc63
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/PolicyEvaluator.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.PolicyInclude;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.modules.Module;
+import org.apache.axis2.modules.ModulePolicyExtension;
+import org.apache.axis2.modules.PolicyExtension;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.util.Constants;
+import org.apache.neethi.All;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.ExactlyOne;
+import org.apache.neethi.Policy;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class PolicyEvaluator implements CodeGenExtension {
+
+    /**
+     * Init method to initialization
+     * @param configuration
+     * @param namespace2ExtsMap
+     */
+    private void init(CodeGenConfiguration configuration, Map namespace2ExtsMap) {
+
+       // adding default PolicyExtensions
+       namespace2ExtsMap.put("http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization",
+               new MTOMPolicyExtension(configuration));
+       namespace2ExtsMap.put("http://schemas.xmlsoap.org/ws/2004/09/policy/encoding",
+               new EncodePolicyExtension());
+
+       //set the policy handling template 
+       configuration.putProperty("policyExtensionTemplate", "/org/apache/axis2/wsdl/template/java/PolicyExtensionTemplate.xsl");
+
+
+        String repository = configuration.getRepositoryPath();
+
+        if (repository == null) {    return;    }
+
+
+        try {
+
+            ConfigurationContext configurationCtx = ConfigurationContextFactory
+                    .createConfigurationContextFromFileSystem(repository, null);
+            AxisConfiguration axisConfiguration = configurationCtx
+                    .getAxisConfiguration();
+
+            for (Iterator iterator = axisConfiguration.getModules().values()
+                    .iterator(); iterator.hasNext();) {
+
+                AxisModule axisModule = (AxisModule) iterator.next();
+                String[] namespaces = axisModule.getSupportedPolicyNamespaces();
+
+                if (namespaces == null) {
+                    continue;
+                }
+
+                Module module = axisModule.getModule();
+                if (!(module instanceof ModulePolicyExtension)) {
+                    continue;
+                }
+
+                PolicyExtension ext = ((ModulePolicyExtension) module).getPolicyExtension();
+
+                for (int i = 0; i < namespaces.length; i++) {
+                    namespace2ExtsMap.put(namespaces[i], ext);
+                }
+            }
+
+        } catch (Exception e) {
+            System.err
+                    .println("cannot create repository : policy will not be supported");
+        }
+    }
+
+    public void engage(CodeGenConfiguration configuration) {
+
+        Map namespace2ExtMap = new HashMap();
+         //initialize
+        init(configuration,namespace2ExtMap);
+
+        Document document = getEmptyDocument();
+        Element rootElement = document.createElement("module-codegen-policy-extensions");
+
+        AxisOperation axisOperation;
+        QName opName;
+        PolicyInclude policyInclude;
+        Policy policy;
+
+
+        for (Iterator iterator = configuration.getAxisService().getOperations(); iterator.hasNext(); ) {
+            axisOperation = (AxisOperation) iterator.next();
+            opName = axisOperation.getName();
+
+            policyInclude = axisOperation.getPolicyInclude();
+            policy = policyInclude.getEffectivePolicy();
+
+            if (policy != null) {
+                processPolicies(document, rootElement, policy, opName,namespace2ExtMap);
+            }
+        }
+
+        configuration.putProperty("module-codegen-policy-extensions", rootElement);
+    }
+
+    /**
+     * Process policies
+     * @param document
+     * @param rootElement
+     * @param policy
+     * @param opName
+     */
+    private void processPolicies(Document document, Element rootElement,
+                                 Policy policy, QName opName,Map ns2Exts) {
+
+        HashMap map = new HashMap();
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            
+            String targetNamesapce = null;
+            Assertion assertion;
+            List assertionList;
+            
+            for (Iterator assertions = ((List) iterator.next()).iterator(); assertions.hasNext();) {
+              
+                assertion = (Assertion) assertions.next();
+                targetNamesapce = assertion.getName().getNamespaceURI();
+                
+                if ((assertionList = (List) map.get(targetNamesapce)) == null)  {
+                    assertionList = new ArrayList();
+                    map.put(targetNamesapce,assertionList);
+                }
+                
+                assertionList.add(assertions);
+            }
+            
+            // here we pick the first policy alternative and ignor the rest
+            break;
+        }
+                
+        for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();) {
+            String targetNamespace = (String) iterator.next();
+            PolicyExtension policyExtension = (PolicyExtension) ns2Exts.get(targetNamespace);
+
+            if (policyExtension == null) {
+                System.err.println("cannot find a PolicyExtension to process "
+                        + targetNamespace + "type assertions");
+                continue;
+            }
+            
+            policyExtension.addMethodsToStub(document, rootElement, opName, (List) map.get(targetNamespace));
+        }
+    }
+
+    private Document getEmptyDocument() {
+        try {
+            DocumentBuilder documentBuilder = DocumentBuilderFactory
+                    .newInstance().newDocumentBuilder();
+
+            return documentBuilder.newDocument();
+        } catch (ParserConfigurationException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    class MTOMPolicyExtension implements PolicyExtension {
+
+        private boolean setOnce = false;
+        private CodeGenConfiguration configuration;
+
+        public MTOMPolicyExtension(CodeGenConfiguration configuration) {
+            this.configuration = configuration;
+        }
+
+        public void addMethodsToStub(Document document, Element element, QName operationName, List assertions) {
+            
+            // FIXME
+
+//            if (!setOnce) {
+//                 Object plainBase64PropertyMap = configuration.getProperty(Constants.PLAIN_BASE_64_PROPERTY_KEY);
+//                 configuration.putProperty(Constants.BASE_64_PROPERTY_KEY, plainBase64PropertyMap);
+//
+//                 setOnce = true;
+//            }
+//
+//            Element optimizeContent = document.createElement("optimizeContent");
+//            Element opNameElement = document.createElement("opName");
+//
+//            opNameElement.setAttribute("ns-url", operationName.getNamespaceURI());
+//            opNameElement.setAttribute("localName", operationName.getLocalPart());
+//
+//            optimizeContent.appendChild(opNameElement);
+//
+//            element.appendChild(optimizeContent);
+        }
+    }
+
+    class EncodePolicyExtension implements PolicyExtension {
+        public void addMethodsToStub(Document document, Element element, QName operationName, List assertions) {
+            // TODO implement encoding
+        }
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtension.java
new file mode 100644
index 0000000..f03ddac
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtension.java
@@ -0,0 +1,309 @@
+package org.apache.axis2.wsdl.codegen.extension;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.description.AxisMessage;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.WSDLUtil;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
+import org.apache.axis2.wsdl.util.Constants;
+import org.apache.axis2.wsdl.util.MessagePartInformationHolder;
+import org.apache.ws.commons.schema.*;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * This extension invokes the schema unwrapper depending on the users setting.
+ * it is desirable to put this extension before other extensions since extnsions
+ * such as the databinding extension may well depend on the schema being unwrapped
+ * previously.
+ * For a complete unwrap the following format of the schema is expected
+ * &lt; element &gt;
+ * &lt; complexType &gt;
+ * &lt; sequence &gt;
+ * &lt; element /&gt;
+ * &lt; /sequence &gt;
+ * &lt; /complexType &gt;
+ * &lt; /element &gt;
+ * <p/>
+ * When an unwrapped WSDL is encountered Axis2 generates a wrapper schema
+ * and that wrapper schema has the above mentioned format. This unwrapping algorithm
+ * will work on a pure doc/lit WSDL if it has the above mentioned format
+ * only
+ */
+public class SchemaUnwrapperExtension extends AbstractCodeGenerationExtension {
+
+    /**
+     * @param configuration
+     * @throws CodeGenerationException
+     */
+    public void engage(CodeGenConfiguration configuration) throws CodeGenerationException {
+        if (!configuration.isParametersWrapped()) {
+
+            // A check to avoid nasty surprises - Since unwrapping is not
+            // supported by all frameworks, we check the framework name to be
+            // compatible
+            if (!ConfigPropertyFileLoader.getUnwrapSupportedFrameworkNames().
+                    contains(configuration.getDatabindingType())) {
+                throw new CodeGenerationException(
+                        CodegenMessages.getMessage("extension.unsupportedforunwrapping"));
+            } else if (!ConfigPropertyFileLoader.getUnwrapDirectFrameworkNames().
+                    contains(configuration.getDatabindingType())) {
+
+                //walk the schema and find the top level elements
+                AxisService axisService = configuration.getAxisService();
+
+                for (Iterator operations = axisService.getOperations();
+                     operations.hasNext();) {
+                    AxisOperation op = (AxisOperation) operations.next();
+
+                    if (WSDLUtil.isInputPresentForMEP(op.getMessageExchangePattern())) {
+                        walkSchema(op.getMessage(
+                                WSDLConstants.MESSAGE_LABEL_IN_VALUE));
+                    }
+
+                }
+            }
+        }
+    }
+
+    /**
+     * walk the given schema element
+     * For a successful unwrapping the element should have the
+     * following structure
+     * &lt; element &gt;
+     * &lt; complexType &gt;
+     * &lt; sequence &gt;
+     * &lt; element /&gt;
+     * &lt; /sequence &gt;
+     * &lt; /complexType &gt;
+     * &lt; /element &gt;
+     */
+
+    public void walkSchema(AxisMessage message)
+            throws CodeGenerationException {
+        //nothing to unwrap
+        if (message.getSchemaElement() == null) {
+            return;
+        }
+
+
+        List partNameList = new LinkedList();
+
+        XmlSchemaElement schemaElement = message.getSchemaElement();
+        XmlSchemaType schemaType = schemaElement.getSchemaType();
+
+        String complexType = handleAllCasesOfComplexTypes(schemaType, message, partNameList);
+
+        try {
+            //set in the axis message that the unwrapping was success
+            message.addParameter(getParameter(
+                    Constants.UNWRAPPED_KEY,
+                    Boolean.TRUE));
+
+            // attach the opName and the parts name list into the
+            // axis message by using the holder
+            MessagePartInformationHolder infoHolder = new MessagePartInformationHolder();
+            infoHolder.setOperationName(((AxisOperation) message.getParent()).getName());
+            infoHolder.setPartsList(partNameList);
+
+            //attach it to the parameters
+            message.addParameter(
+                    getParameter(Constants.UNWRAPPED_DETAILS,
+                            infoHolder));
+            // store the complex type name for this message
+            message.addParameter(getParameter(Constants.COMPLEX_TYPE, complexType));
+
+        } catch (AxisFault axisFault) {
+            throw new CodeGenerationException(axisFault);
+        }
+
+    }
+
+    private String handleAllCasesOfComplexTypes(XmlSchemaType schemaType, AxisMessage message, List partNameList) throws CodeGenerationException {
+
+        // if a complex type name exits for a element then
+        // we keep that complex type to support unwrapping
+        String complexType = "";
+        if (schemaType instanceof XmlSchemaComplexType) {
+            XmlSchemaComplexType cmplxType = (XmlSchemaComplexType) schemaType;
+            if ((cmplxType.getName() != null) && (cmplxType.getName().length() != 0)) {
+                if ((cmplxType.getQName() != null) && (cmplxType.getQName().getNamespaceURI() != null) && (cmplxType.getQName().getNamespaceURI().length() != 0))
+                {
+                    complexType = URLProcessor.makePackageName(cmplxType.getQName().getNamespaceURI()) + ".";
+                }
+                complexType += cmplxType.getName();
+            }
+            if (cmplxType.getContentModel() == null) {
+                if (cmplxType.getParticle() != null){
+                    processXMLSchemaSequence(cmplxType.getParticle(), message, partNameList);
+                }
+            } else {
+                // now lets handle case with extensions
+                processComplexContentModel(cmplxType, message, partNameList);
+            }
+
+
+        } else {
+            //we've no idea how to unwrap a non complexType!!!!!!
+            throw new CodeGenerationException(CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+                    "unknown", "complexType"));
+        }
+        return complexType;
+    }
+
+    private void processComplexContentModel(XmlSchemaComplexType cmplxType, AxisMessage message, List partNameList) throws CodeGenerationException {
+        XmlSchemaContentModel contentModel = cmplxType.getContentModel();
+        if (contentModel instanceof XmlSchemaComplexContent) {
+            XmlSchemaComplexContent xmlSchemaComplexContent = (XmlSchemaComplexContent) contentModel;
+            XmlSchemaContent content = xmlSchemaComplexContent.getContent();
+            if (content instanceof XmlSchemaComplexContentExtension) {
+                XmlSchemaComplexContentExtension schemaExtension = (XmlSchemaComplexContentExtension) content;
+
+                // process particles inside this extension, if any
+                if (schemaExtension.getParticle() != null){
+                    processXMLSchemaSequence(schemaExtension.getParticle(), message, partNameList);
+                }
+
+                // now we need to get the schema of the extension type from the parent schema. For that let's first retrieve
+                // the parent schema
+                AxisService axisService = (AxisService) message.getParent().getParent();
+                ArrayList schemasList = axisService.getSchema();
+
+                XmlSchema parentSchema = null;
+
+                for (int i = 0; i < schemasList.size() || parentSchema == null; i++) {
+                    XmlSchema schema = (XmlSchema) schemasList.get(i);
+                    if (schema.getTargetNamespace().equals(schemaExtension.getBaseTypeName().getNamespaceURI())) {
+                        parentSchema = schema;
+                    }
+                }
+
+                // ok now we got the parent schema. Now let's get the extension's schema type
+
+                XmlSchemaType extensionSchemaType = parentSchema.getTypeByName(schemaExtension.getBaseTypeName());
+
+                handleAllCasesOfComplexTypes(extensionSchemaType, message, partNameList);
+            }
+        }
+    }
+
+    private void processXMLSchemaSequence(XmlSchemaParticle schemaParticle, AxisMessage message, List partNameList) throws CodeGenerationException {
+        if (schemaParticle instanceof XmlSchemaSequence) {
+            // get the name of the operation name and namespace,
+            // part name and hang them somewhere ? The ideal place
+            // would be the property bag in the codegen config!
+            QName opName = ((AxisOperation) message.getParent()).getName();
+
+            XmlSchemaSequence sequence = (XmlSchemaSequence) schemaParticle;
+            XmlSchemaObjectCollection items = sequence.getItems();
+
+            // if this is an empty sequence, return
+            if (items.getCount() == 0) {
+                return;
+            }
+            for (Iterator i = items.getIterator(); i.hasNext();) {
+                Object item = i.next();
+                // get each and every element in the sequence and
+                // traverse through them
+                if (item instanceof XmlSchemaElement) {
+                    //add the element name to the part name list
+                    String partName = ((XmlSchemaElement) item).getName();
+
+                    //  part names are not unique across messages. Hence
+                    //  we need some way of making the part name a unique
+                    //  one (due to the fact that the type mapper
+                    //  is a global list of types).
+                    //  The seemingly best way to do that is to
+                    //  specify a namespace for the part QName reference which
+                    //  is stored in the  list. This part qname is
+                    //  temporary and should not be used with it's
+                    //  namespace URI (which happened to be the operation name)
+                    //  with _input attached to it
+
+
+                    partNameList.add(
+                            WSDLUtil.getPartQName(opName.getLocalPart(),
+                                    WSDLConstants.INPUT_PART_QNAME_SUFFIX,
+                                    partName));
+
+                    // if the particle contains anything other than
+                    // a XMLSchemaElement then we are not in a position
+                    // to unwrap it
+                } else if (item instanceof XmlSchemaAny) {
+
+                    // if this is an instance of xs:any, then there is no part name for it. Using ANY_ELEMENT_FIELD_NAME
+                    // for it for now
+
+                    //we have to handle both maxoccurs 1 and maxoccurs > 1 situation
+                    XmlSchemaAny xmlSchemaAny = (XmlSchemaAny) item;
+
+                        partNameList.add(
+                                WSDLUtil.getPartQName(opName.getLocalPart(),
+                                        WSDLConstants.INPUT_PART_QNAME_SUFFIX,
+                                        Constants.ANY_ELEMENT_FIELD_NAME));
+                } else {
+                    throw new CodeGenerationException(CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+                            "unknown type", "Element"));
+                }
+            }
+
+            //we do not know how to deal with other particles
+            //such as xs:all or xs:choice. Usually occurs when
+            //passed with the user built WSDL where the style
+            //is document.
+        } else if (schemaParticle instanceof XmlSchemaChoice) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+                    "choice", "sequence"));
+
+        } else if (schemaParticle instanceof XmlSchemaAll) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+                    "all", "sequence"));
+        } else {
+            throw new CodeGenerationException(CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+                    "unknown", "sequence"));
+        }
+    }
+
+    /**
+     * Generate a parametes object
+     *
+     * @param key
+     * @param value
+     */
+    private Parameter getParameter(String key, Object value) {
+        Parameter myParameter = new Parameter();
+        myParameter.setName(key);
+        myParameter.setValue(value);
+
+        return myParameter;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SimpleDBExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SimpleDBExtension.java
new file mode 100644
index 0000000..7b5ac01
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SimpleDBExtension.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;
+
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+
+import java.lang.reflect.Method;
+
+/**
+ * Extension for simple data binding.
+ */
+public class SimpleDBExtension extends AbstractDBProcessingExtension {
+
+    private static final String ADB_INVOKE_CLASS_NAME =
+            "org.apache.axis2.schema.ExtensionUtility";
+    private static final String INVOKE_METHOD_NAME =
+            "invoke";
+
+    /**
+     * 
+     */
+    public void engage(CodeGenConfiguration configuration) {
+        //test the databinding type. If not just fall through
+        if (testFallThrough(configuration.getDatabindingType())) {
+            return;
+        }
+        try {
+            //invoke the adb codegen by reflection
+            Class adbGeneratorClass = Class.
+                    forName(ADB_INVOKE_CLASS_NAME);
+            Method invokeMethod = adbGeneratorClass.getMethod(
+                    INVOKE_METHOD_NAME,
+                    new Class[]{CodeGenConfiguration.class});
+            invokeMethod.invoke(null,new Object[]{configuration});
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/TypeMapperExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/TypeMapperExtension.java
new file mode 100644
index 0000000..5ee54eb
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/TypeMapperExtension.java
@@ -0,0 +1,163 @@
+package org.apache.axis2.wsdl.codegen.extension;

+

+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;

+import org.apache.axis2.wsdl.codegen.CodeGenerationException;

+import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;

+import org.apache.axis2.wsdl.databinding.TypeMapper;

+import org.apache.axis2.wsdl.i18n.CodegenMessages;

+import org.w3c.dom.Document;

+import org.w3c.dom.Element;

+import org.w3c.dom.Node;

+import org.w3c.dom.NodeList;

+

+import javax.xml.namespace.QName;

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * The purpose of this extension is to populate the type mapper from the

+ * type mapping file. The format of the type mapping file is as follows

+ * <mappings dbf="adb">

+ *     <mapping>

+ *         <qname namespace="ns" prefix="p1">localName</qname>

+ *         <value>type</value>

+ *     </mapping>

+ * </mappings>

+ *

+ * In any case it is best that the type mapper extension be after all the

+ * databinding extensions

+ */

+

+public class TypeMapperExtension implements CodeGenExtension {

+

+

+

+    private static final String MAPPING_ELEMENT_NAME = "mapping";

+    private static final String NAMESPACE_ATTRIBUTE_NAME = "namespace";

+    private static final String QNAME_ELEMENT_NAME = "qname";

+    private static final String VALUE_ELEMENT_NAME = "value";

+    private static final String DB_FRAMEWORK_ATTRIBUTE_NAME = "dbf";

+

+

+    /**

+     *

+     * @throws CodeGenerationException

+     */

+    public void engage(CodeGenConfiguration configuration) throws CodeGenerationException {

+        if (configuration.getTypeMappingFile()!=null){

+            //a type mapping is present. try building the

+            //mapping from it

+

+            // if the configuration already has a mapping then take it

+            // the external mappings will override the currently available

+            // mappings

+            TypeMapper mapper = configuration.getTypeMapper();

+            // there is no mapper present - so just create a new one

+            if (mapper==null){

+                mapper = new DefaultTypeMapper();

+            }

+

+            //read the file as a DOM

+            Document mappingDocument = buildDocument(configuration);

+            Element rootMappingsElement = mappingDocument.getDocumentElement();

+

+            //override the databinding framework name. If a mapping file is

+            //present then the databinding framework name will be overridden

+            //if present. If a user wants to mix types then it must be

+            //from the same databinding framework!

+

+            //first do a sanity check to see whether the user is trying to

+            //mix databinding types!

+

+            String databindingName = rootMappingsElement.

+                    getAttribute(DB_FRAMEWORK_ATTRIBUTE_NAME);

+            if (!databindingName.equals(configuration.getDatabindingType())){

+                throw new CodeGenerationException(

+                        CodegenMessages.

+                                getMessage("extension.databindingMismatch")

+                );

+            }

+            configuration.

+                    setDatabindingType(

+                            databindingName);

+

+

+            NodeList mappingList = rootMappingsElement.

+                                    getElementsByTagName(MAPPING_ELEMENT_NAME);

+            int length = mappingList.getLength();

+            for (int i = 0; i < length; i++) {

+                Element mappingNode = (Element)mappingList.item(i);

+                //we know this is only one - if there are multiple then

+                //it is invalid

+                Element qNameChild =

+                        (Element)mappingNode.

+                                getElementsByTagName(QNAME_ELEMENT_NAME).item(0);

+                Element valueChild =

+                        (Element)mappingNode.

+                                getElementsByTagName(VALUE_ELEMENT_NAME).item(0);

+                //generate a Qname and add to the type mapping

+                mapper.addTypeMappingName(new QName(

+                        qNameChild.getAttribute(NAMESPACE_ATTRIBUTE_NAME),

+                        getTextFromElement(qNameChild)),

+                        getTextFromElement(valueChild));

+

+            }

+

+            //set the type mapper to the configurtion

+            configuration.setTypeMapper(mapper);

+        }

+    }

+

+    /**

+     * Build a dom document from the mapping file

+     * @throws CodeGenerationException

+     */

+    private Document buildDocument(CodeGenConfiguration configuration) throws CodeGenerationException {

+        try {

+            DocumentBuilderFactory documentBuilderFactory

+                    = DocumentBuilderFactory.newInstance();

+            documentBuilderFactory.setNamespaceAware(true);

+            DocumentBuilder documentBuilder =

+                    documentBuilderFactory.newDocumentBuilder();

+            return documentBuilder.parse(configuration.getTypeMappingFile());

+        } catch (Exception e) {

+            throw new CodeGenerationException(e);

+        }

+    }

+

+    /**

+     * Gets the string content from an element. returns null if there are

+     * no test nodes found

+     * @param elt

+     * @return text cotent of the element

+     */

+    private String getTextFromElement(Element elt){

+        NodeList children = elt.getChildNodes();

+        String returnString = null;

+        int length = children.getLength();

+        for (int i = 0; i < length; i++) {

+            Node node = children.item(i);

+            if (Node.TEXT_NODE == node.getNodeType()){

+                returnString = (returnString==null?"":returnString) + node.getNodeValue();

+            }

+

+        }

+

+        return returnString;

+    }

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/WSDLPrettyPrinterExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/WSDLPrettyPrinterExtension.java
new file mode 100644
index 0000000..6cef0fe
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/WSDLPrettyPrinterExtension.java
@@ -0,0 +1,31 @@
+package org.apache.axis2.wsdl.codegen.extension;

+

+import org.apache.axis2.util.XMLPrettyPrinter;

+

+import java.io.File;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDLPrettyPrinterExtension extends AbstractPrettyPrinterExtension{

+

+    public WSDLPrettyPrinterExtension() {

+        fileExtension = ".wsdl";

+    }

+

+    protected void prettifyFile(File file) {

+        XMLPrettyPrinter.prettify(file);

+    }

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/WSDLValidatorExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/WSDLValidatorExtension.java
new file mode 100644
index 0000000..94dcfb9
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/WSDLValidatorExtension.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+import org.apache.ws.commons.schema.XmlSchema;
+
+import java.util.List;
+
+public class WSDLValidatorExtension extends AbstractCodeGenerationExtension {
+
+    public void engage(CodeGenConfiguration configuration) throws CodeGenerationException {
+        //WSDLDescription wom = this.configuration.getWom();
+        List schemaList = configuration.getAxisService().getSchema();
+        if (schemaList == null || schemaList.isEmpty()) {
+            //there are no types to be considered
+            return;
+        }
+
+        for (int i = 0; i < schemaList.size(); i++) {
+            XmlSchema s = (XmlSchema) schemaList.get(i);
+            if (s.getIncludes().getCount() != 0) {
+                //there are some included - now see whether there are any
+                //elements or types declared!
+                if (s.getElements().getCount() == 0 &&
+                        s.getSchemaTypes().getCount() == 0 &&
+                        s.getGroups().getCount() == 0 &&
+                        s.getTargetNamespace() == null) {
+                    // if there's no targetNamespace there's probably no name, but try it anyway
+                    throw new CodeGenerationException(
+                            CodegenMessages.getMessage("extension.invalidWSDL", s.toString()));
+                }
+
+            }
+        }
+
+
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLBeansExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLBeansExtension.java
new file mode 100644
index 0000000..2bd47e7
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLBeansExtension.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+public class XMLBeansExtension extends AbstractDBProcessingExtension {
+    public static final String SCHEMA_FOLDER = "schemas";
+
+    public static String MAPPINGS = "mappings";
+    public static String MAPPING = "mapping";
+    public static String MESSAGE = "message";
+    public static String JAVA_NAME = "javaclass";
+
+    public static final String MAPPING_FOLDER = "Mapping";
+    public static final String MAPPER_FILE_NAME = "mapper";
+    public static final String SCHEMA_PATH = "/org/apache/axis2/wsdl/codegen/schema/";
+    
+    public static final String XMLBEANS_CONFIG_CLASS =
+        "org.apache.xmlbeans.BindingConfig";
+    public static final String XMLBEANS_UTILITY_CLASS =
+        "org.apache.axis2.xmlbeans.CodeGenerationUtility";
+    public static final String XMLBEANS_PROCESS_METHOD = "processSchemas";
+
+    boolean debug = false;
+
+    public void engage(CodeGenConfiguration configuration) {
+
+        //test the databinding type. If not just fall through
+        if (testFallThrough(configuration.getDatabindingType())) {
+            return;
+        }
+
+        try {
+            // try dummy load of framework class first to check missing jars
+            try {
+                getClass().getClassLoader().loadClass(XMLBEANS_CONFIG_CLASS);
+            } catch (ClassNotFoundException e) {
+                throw new RuntimeException("XMLBeans framework jars not in classpath");
+            }
+            
+            // load the actual utility class
+            Class clazz = null;
+            try {
+                clazz = getClass().getClassLoader().loadClass(XMLBEANS_UTILITY_CLASS);
+            } catch (ClassNotFoundException e) {
+                throw new RuntimeException("XMLBeans binding extension not in classpath");
+            }
+            
+            // invoke utility class method for actual processing
+            Method method = clazz.getMethod(XMLBEANS_PROCESS_METHOD,
+                    new Class[] { List.class, Element[].class, CodeGenConfiguration.class });
+            ArrayList schemas = configuration.getAxisService().getSchema();
+            Element[] additionalSchemas = loadAdditionalSchemas();
+            TypeMapper mapper = (TypeMapper)method.invoke(null,
+                new Object[] { schemas, additionalSchemas, configuration });
+
+            // set the type mapper to the config
+            configuration.setTypeMapper(mapper);
+
+        } catch (Exception e) {
+            if (e instanceof RuntimeException) {
+                throw (RuntimeException)e;
+            } else {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    /**
+     * Loading the external schemas.
+     *
+     * @return element array consisting of the the DOM element objects that represent schemas
+     */
+    private Element[] loadAdditionalSchemas() {
+        //load additional schemas
+        String[] schemaNames = ConfigPropertyFileLoader.getThirdPartySchemaNames();
+        Element[] schemaElements;
+
+        try {
+            ArrayList additionalSchemaElements = new ArrayList();
+            DocumentBuilder documentBuilder = getNamespaceAwareDocumentBuilder();
+            for (int i = 0; i < schemaNames.length; i++) {
+                //the location for the third party schema;s is hardcoded
+                if (!"".equals(schemaNames[i].trim())) {
+                    InputStream schemaStream = this.getClass().getResourceAsStream(SCHEMA_PATH + schemaNames[i]);
+                    Document doc = documentBuilder.parse(schemaStream);
+                    additionalSchemaElements.add(doc.getDocumentElement());
+                }
+            }
+
+            //Create the Schema element array
+            schemaElements = new Element[additionalSchemaElements.size()];
+            for (int i = 0; i < additionalSchemaElements.size(); i++) {
+                schemaElements[i] = (Element) additionalSchemaElements.get(i);
+
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(CodegenMessages.getMessage("extension.additionalSchemaFailure"), e);
+        }
+
+        return schemaElements;
+    }
+
+    private DocumentBuilder getNamespaceAwareDocumentBuilder() throws ParserConfigurationException {
+        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+        documentBuilderFactory.setNamespaceAware(true);
+        return documentBuilderFactory.newDocumentBuilder();
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLPrettyPrinterExtension.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLPrettyPrinterExtension.java
new file mode 100644
index 0000000..91cbe8b
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/XMLPrettyPrinterExtension.java
@@ -0,0 +1,37 @@
+package org.apache.axis2.wsdl.codegen.extension;

+

+import org.apache.axis2.util.XMLPrettyPrinter;

+

+import java.io.File;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class XMLPrettyPrinterExtension extends AbstractPrettyPrinterExtension{

+

+

+    public XMLPrettyPrinterExtension() {

+        fileExtension = ".xml";

+    }

+

+    /**

+     * calls the xml pretty printers

+     * @param file

+     */

+    protected void prettifyFile(File file) {

+        XMLPrettyPrinter.prettify(file);

+    }

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/schema/soap-enc.xsd b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/schema/soap-enc.xsd
new file mode 100644
index 0000000..facd916
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/schema/soap-enc.xsd
@@ -0,0 +1,543 @@
+<?xml version='1.0' encoding='UTF-8' ?>

+

+<!-- Schema for the SOAP/1.1 encoding

+

+This schema has been produced using W3C's SOAP Version 1.2 schema

+found at:

+

+     http://www.w3.org/2001/06/soap-encoding

+

+     Copyright 2001 Martin Gudgin, Developmentor.

+	 http://www.develop.co.uk

+

+Changes made are the following:

+- reverted namespace to http://schemas.xmlsoap.org/soap/encoding/

+- reverted root to only allow 0 and 1 as lexical values

+

+

+     Original copyright:

+

+Copyright 2001 W3C (Massachusetts Institute of Technology,

+Institut National de Recherche en Informatique et en Automatique,

+Keio University). All Rights Reserved.

+http://www.w3.org/Consortium/Legal/

+

+     This document is governed by the W3C Software License [1] as

+     described in the FAQ [2].

+

+[1]http://www.w3.org/Consortium/Legal/copyright-software-19980720

+[2]http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD

+-->

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

+           xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"

+    targetNamespace="http://schemas.xmlsoap.org/soap/encoding/" >

+

+ <xs:attribute name="root" default="0" >

+   <xs:annotation>

+     <xs:documentation>

+	   'root' can be used to distinguish serialization roots from

+       other elements that are present in a serialization but are

+       not roots of a serialized value graph

+	 </xs:documentation>

+   </xs:annotation>

+   <xs:simpleType>

+     <xs:restriction base='xs:boolean'>

+	   <xs:pattern value='0|1' />

+	 </xs:restriction>

+   </xs:simpleType>

+ </xs:attribute>

+

+  <xs:attributeGroup name="commonAttributes" >

+    <xs:annotation>

+	  <xs:documentation>

+	    Attributes common to all elements that function as

+        accessors or represent independent (multi-ref) values.

+        The href attribute is intended to be used in a manner

+        like CONREF.  That is, the element content should be

+        empty iff the href attribute appears

+	  </xs:documentation>

+	</xs:annotation>

+    <xs:attribute name="id" type="xs:ID" />

+    <xs:attribute name="href" type="xs:anyURI" />

+    <xs:anyAttribute namespace="##other" processContents="lax" />

+  </xs:attributeGroup>

+

+  <!-- Global Attributes.  The following attributes are intended

+       to be usable via qualified attribute names on any complex

+       type referencing them. -->

+

+  <!-- Array attributes. Needed to give the type and dimensions

+       of an array's contents, and the offset for

+       partially-transmitted arrays. -->

+

+  <xs:simpleType name="arrayCoordinate" >

+    <xs:restriction base="xs:string" />

+  </xs:simpleType>

+

+  <xs:attribute name="arrayType" type="xs:string" />

+  <xs:attribute name="offset" type="tns:arrayCoordinate" />

+

+  <xs:attributeGroup name="arrayAttributes" >

+    <xs:attribute ref="tns:arrayType" />

+    <xs:attribute ref="tns:offset" />

+  </xs:attributeGroup>

+

+  <xs:attribute name="position" type="tns:arrayCoordinate" />

+

+  <xs:attributeGroup name="arrayMemberAttributes" >

+    <xs:attribute ref="tns:position" />

+  </xs:attributeGroup>

+

+  <xs:group name="Array" >

+    <xs:sequence>

+      <xs:any namespace="##any" minOccurs="0"

+              maxOccurs="unbounded" processContents="lax" />

+	</xs:sequence>

+  </xs:group>

+

+  <xs:element name="Array" type="tns:Array" />

+  <xs:complexType name="Array" >

+    <xs:annotation>

+	  <xs:documentation>

+	 'Array' is a complex type for accessors identified by position

+	  </xs:documentation>

+	</xs:annotation>

+    <xs:group ref="tns:Array" minOccurs="0" />

+    <xs:attributeGroup ref="tns:arrayAttributes" />

+    <xs:attributeGroup ref="tns:commonAttributes" />

+  </xs:complexType>

+

+  <!-- 'Struct' is a complex type for accessors identified by

+       name. Constraint: No element may be have the same name as

+       any other, nor may any element have a maxOccurs > 1. -->

+

+  <xs:element name="Struct" type="tns:Struct" />

+

+  <xs:group name="Struct" >

+    <xs:sequence>

+      <xs:any namespace="##any" minOccurs="0"

+              maxOccurs="unbounded" processContents="lax" />

+	</xs:sequence>

+  </xs:group>

+

+  <xs:complexType name="Struct" >

+    <xs:group ref="tns:Struct" minOccurs="0" />

+    <xs:attributeGroup ref="tns:commonAttributes"/>

+  </xs:complexType>

+

+  <!-- 'Base64' can be used to serializeAndConsume binary data using base64

+       encoding as defined in RFC2045 but without the MIME line

+       length limitation. -->

+

+  <xs:simpleType name="base64" >

+    <xs:restriction base="xs:base64Binary" />

+  </xs:simpleType>

+

+ <!-- Element declarations corresponding to each of the simple

+      types in the XML Schemas Specification. -->

+

+  <xs:element name="duration" type="tns:duration" />

+  <xs:complexType name="duration" >

+    <xs:simpleContent>

+      <xs:extension base="xs:duration" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="dateTime" type="tns:dateTime" />

+  <xs:complexType name="dateTime" >

+    <xs:simpleContent>

+      <xs:extension base="xs:dateTime" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+

+

+  <xs:element name="NOTATION" type="tns:NOTATION" />

+  <xs:complexType name="NOTATION" >

+    <xs:simpleContent>

+      <xs:extension base="xs:QName" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+

+  <xs:element name="time" type="tns:time" />

+  <xs:complexType name="time" >

+    <xs:simpleContent>

+      <xs:extension base="xs:time" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="date" type="tns:date" />

+  <xs:complexType name="date" >

+    <xs:simpleContent>

+      <xs:extension base="xs:date" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="gYearMonth" type="tns:gYearMonth" />

+  <xs:complexType name="gYearMonth" >

+    <xs:simpleContent>

+      <xs:extension base="xs:gYearMonth" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="gYear" type="tns:gYear" />

+  <xs:complexType name="gYear" >

+    <xs:simpleContent>

+      <xs:extension base="xs:gYear" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="gMonthDay" type="tns:gMonthDay" />

+  <xs:complexType name="gMonthDay" >

+    <xs:simpleContent>

+      <xs:extension base="xs:gMonthDay" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="gDay" type="tns:gDay" />

+  <xs:complexType name="gDay" >

+    <xs:simpleContent>

+      <xs:extension base="xs:gDay" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="gMonth" type="tns:gMonth" />

+  <xs:complexType name="gMonth" >

+    <xs:simpleContent>

+      <xs:extension base="xs:gMonth" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="boolean" type="tns:boolean" />

+  <xs:complexType name="boolean" >

+    <xs:simpleContent>

+      <xs:extension base="xs:boolean" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="base64Binary" type="tns:base64Binary" />

+  <xs:complexType name="base64Binary" >

+    <xs:simpleContent>

+      <xs:extension base="xs:base64Binary" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="hexBinary" type="tns:hexBinary" />

+  <xs:complexType name="hexBinary" >

+    <xs:simpleContent>

+     <xs:extension base="xs:hexBinary" >

+       <xs:attributeGroup ref="tns:commonAttributes" />

+     </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="float" type="tns:float" />

+  <xs:complexType name="float" >

+    <xs:simpleContent>

+      <xs:extension base="xs:float" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="double" type="tns:double" />

+  <xs:complexType name="double" >

+    <xs:simpleContent>

+      <xs:extension base="xs:double" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="anyURI" type="tns:anyURI" />

+  <xs:complexType name="anyURI" >

+    <xs:simpleContent>

+      <xs:extension base="xs:anyURI" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="QName" type="tns:QName" />

+  <xs:complexType name="QName" >

+    <xs:simpleContent>

+      <xs:extension base="xs:QName" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+

+  <xs:element name="string" type="tns:string" />

+  <xs:complexType name="string" >

+    <xs:simpleContent>

+      <xs:extension base="xs:string" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="normalizedString"

+              type="tns:normalizedString" />

+  <xs:complexType name="normalizedString" >

+    <xs:simpleContent>

+      <xs:extension base="xs:normalizedString" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="token" type="tns:token" />

+  <xs:complexType name="token" >

+    <xs:simpleContent>

+      <xs:extension base="xs:token" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="language" type="tns:language" />

+  <xs:complexType name="language" >

+    <xs:simpleContent>

+      <xs:extension base="xs:language" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="Name" type="tns:Name" />

+  <xs:complexType name="Name" >

+    <xs:simpleContent>

+      <xs:extension base="xs:Name" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="NMTOKEN" type="tns:NMTOKEN" />

+  <xs:complexType name="NMTOKEN" >

+    <xs:simpleContent>

+      <xs:extension base="xs:NMTOKEN" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="NCName" type="tns:NCName" />

+  <xs:complexType name="NCName" >

+    <xs:simpleContent>

+      <xs:extension base="xs:NCName" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="NMTOKENS" type="tns:NMTOKENS" />

+  <xs:complexType name="NMTOKENS" >

+    <xs:simpleContent>

+      <xs:extension base="xs:NMTOKENS" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="ID" type="tns:ID" />

+  <xs:complexType name="ID" >

+    <xs:simpleContent>

+      <xs:extension base="xs:ID" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="IDREF" type="tns:IDREF" />

+  <xs:complexType name="IDREF" >

+    <xs:simpleContent>

+      <xs:extension base="xs:IDREF" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="ENTITY" type="tns:ENTITY" />

+  <xs:complexType name="ENTITY" >

+    <xs:simpleContent>

+      <xs:extension base="xs:ENTITY" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="IDREFS" type="tns:IDREFS" />

+  <xs:complexType name="IDREFS" >

+    <xs:simpleContent>

+      <xs:extension base="xs:IDREFS" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="ENTITIES" type="tns:ENTITIES" />

+  <xs:complexType name="ENTITIES" >

+    <xs:simpleContent>

+      <xs:extension base="xs:ENTITIES" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="decimal" type="tns:decimal" />

+  <xs:complexType name="decimal" >

+    <xs:simpleContent>

+      <xs:extension base="xs:decimal" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="integer" type="tns:integer" />

+  <xs:complexType name="integer" >

+    <xs:simpleContent>

+      <xs:extension base="xs:integer" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="nonPositiveInteger"

+              type="tns:nonPositiveInteger" />

+  <xs:complexType name="nonPositiveInteger" >

+    <xs:simpleContent>

+      <xs:extension base="xs:nonPositiveInteger" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="negativeInteger" type="tns:negativeInteger"/>

+  <xs:complexType name="negativeInteger" >

+    <xs:simpleContent>

+      <xs:extension base="xs:negativeInteger" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="long" type="tns:long" />

+  <xs:complexType name="long" >

+    <xs:simpleContent>

+      <xs:extension base="xs:long" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="int" type="tns:int" />

+  <xs:complexType name="int" >

+    <xs:simpleContent>

+      <xs:extension base="xs:int" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="short" type="tns:short" />

+  <xs:complexType name="short" >

+    <xs:simpleContent>

+      <xs:extension base="xs:short" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="byte" type="tns:byte" />

+  <xs:complexType name="byte" >

+    <xs:simpleContent>

+      <xs:extension base="xs:byte" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="nonNegativeInteger"

+              type="tns:nonNegativeInteger" />

+  <xs:complexType name="nonNegativeInteger" >

+    <xs:simpleContent>

+      <xs:extension base="xs:nonNegativeInteger" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="unsignedLong" type="tns:unsignedLong" />

+  <xs:complexType name="unsignedLong" >

+    <xs:simpleContent>

+      <xs:extension base="xs:unsignedLong" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="unsignedInt" type="tns:unsignedInt" />

+  <xs:complexType name="unsignedInt" >

+    <xs:simpleContent>

+      <xs:extension base="xs:unsignedInt" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="unsignedShort" type="tns:unsignedShort" />

+  <xs:complexType name="unsignedShort" >

+    <xs:simpleContent>

+      <xs:extension base="xs:unsignedShort" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="unsignedByte" type="tns:unsignedByte" />

+  <xs:complexType name="unsignedByte" >

+    <xs:simpleContent>

+      <xs:extension base="xs:unsignedByte" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="positiveInteger" type="tns:positiveInteger"/>

+  <xs:complexType name="positiveInteger" >

+    <xs:simpleContent>

+      <xs:extension base="xs:positiveInteger" >

+        <xs:attributeGroup ref="tns:commonAttributes" />

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

+  <xs:element name="anyType" />

+</xs:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/schema/xmime.xsd b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/schema/xmime.xsd
new file mode 100644
index 0000000..e63aaf7
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/schema/xmime.xsd
@@ -0,0 +1,21 @@
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

+           xmlns:tns="http://www.w3.org/2004/06/xmlmime"

+           targetNamespace="http://www.w3.org/2004/06/xmlmime" >

+ <xs:attribute name="contentType" >

+    <xs:simpleType>

+      <xs:restriction base="xs:string" >

+        <xs:pattern value="(text|application|image|audio|video|model|x-[-.a-z0-9]+)/[a-z0-9][-.+a-z0-9]+(;\s?.+=.+)*" />

+      </xs:restriction>

+    </xs:simpleType>

+</xs:attribute>

+<xs:element name="expectedMediaType" >

+    <xs:simpleType>

+      <xs:list itemType="tns:expectedMediaTypeItem" />

+    </xs:simpleType>

+</xs:element>

+<xs:simpleType name="expectedMediaTypeItem" >

+    <xs:restriction base="xs:string" >

+        <xs:pattern value="(text|application|image|audio|video|model|x-[-.a-z0-9]+)/(([a-z0-9][-.+a-z0-9]+)|\*)" />

+    </xs:restriction>

+</xs:simpleType>

+</xs:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/AntBuildWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/AntBuildWriter.java
new file mode 100644
index 0000000..cc38b47
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/AntBuildWriter.java
@@ -0,0 +1,102 @@
+package org.apache.axis2.wsdl.codegen.writer;

+

+import org.apache.axis2.util.FileWriter;

+import org.apache.axis2.util.XSLTTemplateProcessor;

+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;

+import org.w3c.dom.Document;

+

+import javax.xml.transform.URIResolver;

+import java.io.File;

+import java.io.FileOutputStream;

+import java.util.Iterator;

+import java.util.Map;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class AntBuildWriter extends ClassWriter {

+

+    private String databindingFramework = ConfigPropertyFileLoader.getDefaultDBFrameworkName();

+

+    public AntBuildWriter(String outputFileLocation) {

+        this.outputFileLocation = new File(outputFileLocation);

+    }

+

+    public AntBuildWriter(File outputFileLocation, String language) {

+        this.outputFileLocation = outputFileLocation;

+        this.language = language;

+    }

+

+    public void setDatabindingFramework(String databindingFramework) {

+        this.databindingFramework = databindingFramework;

+    }

+

+    public void createOutFile(String packageName, String fileName) throws Exception {

+        File outputFile = FileWriter.createClassFile(outputFileLocation,

+                "",

+                "build",

+                ".xml");

+        //set the existing flag

+        fileExists = outputFile.exists();

+        if (!fileExists) {

+            this.stream = new FileOutputStream(outputFile);

+        }

+    }

+

+    //overridden to get the correct behavior

+    protected String findTemplate(Map languageSpecificPropertyMap) {

+        String ownClazzName = this.getClass().getName();

+        String key;

+        String propertyValue;

+        String templateName = null;

+        Iterator keys = languageSpecificPropertyMap.keySet().iterator();

+

+

+        while (keys.hasNext()) {

+            //check for template entries

+            key = keys.next().toString();

+            if (key.endsWith(TEMPLATE_SUFFIX)) {

+                // check if the class name is there

+                propertyValue = languageSpecificPropertyMap.get(key).toString();

+                if (propertyValue.startsWith(ownClazzName)) {

+                    if (key.indexOf(databindingFramework) != -1) {

+                        templateName = propertyValue.substring(propertyValue.indexOf(SEPARATOR_STRING) + 1);

+                        break;

+                    }

+                }

+            }

+

+        }

+

+        return templateName;

+    }

+

+    /**

+     * Writes the output file.

+     *

+     * @param doc

+     * @throws Exception

+     */

+    public void parse(Document doc, URIResolver resolver) throws Exception {

+        if (!fileExists) {

+            XSLTTemplateProcessor.parse(this.stream,

+                    doc,

+                    this.xsltStream,

+                    resolver);

+            this.stream.flush();

+            this.stream.close();

+        }

+    }

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CServiceXMLWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CServiceXMLWriter.java
new file mode 100644
index 0000000..16a2f3f
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CServiceXMLWriter.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import org.apache.axis2.util.FileWriter;
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+public class CServiceXMLWriter extends ClassWriter {
+
+
+    public CServiceXMLWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public CServiceXMLWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+    public void createOutFile(String packageName, String fileName) throws Exception {
+        outputFile = FileWriter.createClassFile(outputFileLocation,
+                "",
+                "services",
+                ".xml");
+        //set the existing flag
+        fileExists = outputFile.exists();
+        if (!fileExists) {
+            this.stream = new FileOutputStream(outputFile);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSkelHeaderWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSkelHeaderWriter.java
new file mode 100644
index 0000000..ac207b5
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSkelHeaderWriter.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import java.io.File;
+
+
+public class CSkelHeaderWriter extends CStubHeaderWriter {
+
+    public CSkelHeaderWriter(String outputFileLocation) {
+        super ( outputFileLocation);
+    }
+
+    public CSkelHeaderWriter(File outputFileLocation, String language) {
+        super ( outputFileLocation, language );
+    }
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSkelSourceWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSkelSourceWriter.java
new file mode 100644
index 0000000..6804c99
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSkelSourceWriter.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import java.io.File;
+
+public class CSkelSourceWriter extends CStubSourceWriter {
+
+    public CSkelSourceWriter(String outputFileLocation) {
+        super ( outputFileLocation);
+    }
+
+    public CSkelSourceWriter(File outputFileLocation, String language) {
+        super ( outputFileLocation, language );
+    }
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CStubHeaderWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CStubHeaderWriter.java
new file mode 100644
index 0000000..ca4d19c
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CStubHeaderWriter.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import org.apache.axis2.util.FileWriter;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import javax.xml.transform.URIResolver;
+import org.apache.axis2.util.XSLTTemplateProcessor;
+import org.w3c.dom.Document;
+
+public class CStubHeaderWriter extends ClassWriter {
+
+     public CStubHeaderWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public CStubHeaderWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+    public void createOutFile(String packageName, String fileName) throws Exception {
+        outputFile = FileWriter.createClassFile(outputFileLocation,
+                "",
+                fileName,
+                ".h");
+        //set the existing flag
+        fileExists = outputFile.exists();
+        if (!fileExists) {
+            this.stream = new FileOutputStream(outputFile);
+        }
+    }
+    
+    /**
+     * Writes the output file.
+     *
+     * @param doc
+     * @throws Exception
+     */
+    public void parse(Document doc, URIResolver resolver) throws Exception {
+        if (!fileExists) {
+            XSLTTemplateProcessor.parse(this.stream,
+                    doc,
+                    this.xsltStream,
+                    resolver);
+            this.stream.write('\n');
+            this.stream.write('\n');
+            this.stream.flush();
+            this.stream.close();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CStubSourceWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CStubSourceWriter.java
new file mode 100644
index 0000000..7e58357
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CStubSourceWriter.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import org.apache.axis2.util.FileWriter;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import javax.xml.transform.URIResolver;
+import org.apache.axis2.util.XSLTTemplateProcessor;
+import org.w3c.dom.Document;
+
+public class CStubSourceWriter extends ClassWriter {
+
+     public CStubSourceWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public CStubSourceWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+    public void createOutFile(String packageName, String fileName) throws Exception {
+        outputFile = FileWriter.createClassFile(outputFileLocation,
+                "",
+                fileName,
+                getFileExtensionForLanguage(language));
+        //set the existing flag
+        fileExists = outputFile.exists();
+        if (!fileExists) {
+            this.stream = new FileOutputStream(outputFile);
+        }
+
+    }
+    
+    /**
+     * Writes the output file.
+     *
+     * @param doc
+     * @throws Exception
+     */
+    public void parse(Document doc, URIResolver resolver) throws Exception {
+        if (!fileExists) {
+            XSLTTemplateProcessor.parse(this.stream,
+                    doc,
+                    this.xsltStream,
+                    resolver);
+            this.stream.write('\n');
+            this.stream.write('\n');
+            this.stream.flush();
+            this.stream.close();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSvcSkeletonWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSvcSkeletonWriter.java
new file mode 100644
index 0000000..f43f74f
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CSvcSkeletonWriter.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import org.apache.axis2.util.FileWriter;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import javax.xml.transform.URIResolver;
+import org.apache.axis2.util.XSLTTemplateProcessor;
+import org.w3c.dom.Document;
+
+public class CSvcSkeletonWriter extends ClassWriter {
+
+    public CSvcSkeletonWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public CSvcSkeletonWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+    public void createOutFile(String packageName, String fileName) throws Exception {
+        outputFile = FileWriter.createClassFile(outputFileLocation,
+                "",
+                fileName,
+                getFileExtensionForLanguage(language));
+        //set the existing flag
+        fileExists = outputFile.exists();
+        if (!fileExists) {
+            this.stream = new FileOutputStream(outputFile);
+        }
+    }
+
+    /**
+     * Writes the output file.
+     *
+     * @param doc
+     * @throws Exception
+     */
+    public void parse(Document doc, URIResolver resolver) throws Exception {
+        if (!fileExists) {
+            XSLTTemplateProcessor.parse(this.stream,
+                    doc,
+                    this.xsltStream,
+                    resolver);
+            this.stream.write('\n');
+            this.stream.write('\n');
+            this.stream.flush();
+            this.stream.close();
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CallbackHandlerWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CallbackHandlerWriter.java
new file mode 100644
index 0000000..c4b9757
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/CallbackHandlerWriter.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import java.io.File;
+
+public class CallbackHandlerWriter extends ClassWriter {
+
+    public CallbackHandlerWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public CallbackHandlerWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ClassWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ClassWriter.java
new file mode 100644
index 0000000..fb4b892
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ClassWriter.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.util.FileWriter;
+import org.apache.axis2.util.XSLTTemplateProcessor;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+
+import javax.xml.transform.URIResolver;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.Map;
+
+public abstract class ClassWriter {
+
+	private static final Log log = LogFactory.getLog(ClassWriter.class);
+
+    protected File outputFileLocation = null;
+    protected File outputFile = null;
+    protected FileOutputStream stream = null;
+    protected InputStream xsltStream = null;
+    protected String language = ConfigPropertyFileLoader.getDefaultLanguage(); //default would java
+
+    protected static final String TEMPLATE_SUFFIX = ".template";
+    protected static final String EXTENSION_SUFFIX = ".extension";
+    protected static final String SEPARATOR_STRING = ",";
+
+    protected boolean fileExists = false;//a flag saying the file is existing
+
+    /**
+     * Sets the language.
+     *
+     * @param language
+     */
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    /**
+     * Loads the template.
+     */
+    public void loadTemplate() throws CodeGenerationException {
+        // the default behavior for the class writers is to use the property map from the languge specific types
+        // The properties are arranged in the following order
+        // <lang-name>.* .template=<write-class>,<template-name>
+
+        //first get the language specific property map
+        Class clazz = this.getClass();
+        Map languageSpecificPropertyMap = (Map) ConfigPropertyFileLoader.getLanguageSpecificPropertiesMap().get(this.language);
+        if (languageSpecificPropertyMap == null) {
+            throw new CodeGenerationException(CodegenMessages.getMessage("writer.noLangPropertiesExtension"));
+        }
+
+        String templateName = findTemplate(languageSpecificPropertyMap);
+        if (templateName != null) {
+            this.xsltStream = clazz.getResourceAsStream(templateName);
+        } else {
+            throw new CodeGenerationException(CodegenMessages.getMessage("writer.templateMissing"));
+        }
+
+
+    }
+
+    protected String findTemplate(Map languageSpecificPropertyMap) {
+        //search through the proprty names to find the template relevant to this class
+
+        String ownClazzName = this.getClass().getName();
+        String key;
+        String propertyValue;
+        String templateName = null;
+        Iterator keys = languageSpecificPropertyMap.keySet().iterator();
+
+        while (keys.hasNext()) {
+            //check for template entries
+            key = keys.next().toString();
+            if (key.endsWith(TEMPLATE_SUFFIX)) {
+                // check if the class name is there
+                propertyValue = languageSpecificPropertyMap.get(key).toString();
+                if (propertyValue.startsWith(ownClazzName)) {
+                    //bingo! we found the right template
+                    templateName = propertyValue.substring(propertyValue.indexOf(SEPARATOR_STRING) + 1);
+                    break;
+                }
+            }
+
+        }
+        return templateName;
+    }
+
+    /**
+     * Creates the output file.
+     *
+     * @param packageName
+     * @param fileName
+     * @throws Exception
+     */
+    public void createOutFile(String packageName, String fileName) throws Exception {
+        outputFile = FileWriter.createClassFile(outputFileLocation,
+                packageName,
+                fileName,
+                getFileExtensionForLanguage(language));
+        //set the existing flag
+        fileExists = outputFile.exists();
+        if (!fileExists) {
+            this.stream = new FileOutputStream(outputFile);
+        } else {
+            log.info(Messages.getMessage("fileExistsNoOverwrite", outputFile.toString()));
+        }
+    }
+
+    /**
+     * Finds the file name extension.
+     *
+     * @param language
+     * @return Returns the file extension.
+     */
+    protected String getFileExtensionForLanguage(String language) {
+        Map languageSpecificPropertyMap = (Map) ConfigPropertyFileLoader.getLanguageSpecificPropertiesMap().get(this.language);
+        Iterator keys = languageSpecificPropertyMap.keySet().iterator();
+        String key;
+        String extension = null;
+        while (keys.hasNext()) {
+            //check for template entries
+            key = keys.next().toString();
+            if (key.endsWith(EXTENSION_SUFFIX)) {
+                extension = languageSpecificPropertyMap.get(key).toString();
+                //add a . to the front
+                extension = "." + extension;
+            }
+        }
+
+        return extension;
+    }
+
+    /**
+     * Writes the output file.
+     *
+     * @param doc
+     * @throws Exception
+     */
+    public void parse(Document doc, URIResolver resolver) throws Exception {
+        if (!fileExists) {
+            XSLTTemplateProcessor.parse(this.stream,
+                    doc,
+                    this.xsltStream,
+                    resolver);
+            this.stream.flush();
+            this.stream.close();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ExceptionWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ExceptionWriter.java
new file mode 100644
index 0000000..b584e0e
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ExceptionWriter.java
@@ -0,0 +1,33 @@
+/*

+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;

+

+import java.io.File;

+

+public class ExceptionWriter extends ClassWriter {

+

+    public ExceptionWriter(String outputFileLocation) {

+        this.outputFileLocation = new File(outputFileLocation);

+    }

+

+    public ExceptionWriter(File outputFileLocation, String language) {

+        this.outputFileLocation = outputFileLocation;

+        this.language = language;

+    }

+

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/InterfaceImplementationWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/InterfaceImplementationWriter.java
new file mode 100644
index 0000000..48a41fe
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/InterfaceImplementationWriter.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import java.io.File;
+
+public class InterfaceImplementationWriter extends ClassWriter {
+    public InterfaceImplementationWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public InterfaceImplementationWriter(File outputFileLocation,
+                                         String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/InterfaceWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/InterfaceWriter.java
new file mode 100644
index 0000000..e26131e
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/InterfaceWriter.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import java.io.File;
+
+public class InterfaceWriter extends ClassWriter {
+
+
+    public InterfaceWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public InterfaceWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/MessageReceiverWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/MessageReceiverWriter.java
new file mode 100644
index 0000000..e4a96a7
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/MessageReceiverWriter.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import java.io.File;
+
+public class MessageReceiverWriter extends ClassWriter {
+
+    public MessageReceiverWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public MessageReceiverWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/PolicyFileWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/PolicyFileWriter.java
new file mode 100644
index 0000000..4c0bfef
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/PolicyFileWriter.java
@@ -0,0 +1,42 @@
+package org.apache.axis2.wsdl.codegen.writer;

+

+import org.apache.axis2.util.FileWriter;

+

+import java.io.File;

+import java.io.FileOutputStream;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class PolicyFileWriter extends ClassWriter {

+

+    public PolicyFileWriter(File outputFileLocation) {

+        this.outputFileLocation = outputFileLocation;

+    }

+

+

+    public void createOutFile(String packageName, String fileName) throws Exception {

+        File outputFile = FileWriter.createClassFile(outputFileLocation,

+                packageName,

+                fileName,

+                ".xml");

+        //set the existing flag

+        fileExists = outputFile.exists();

+        if (!fileExists) {

+            this.stream = new FileOutputStream(outputFile);

+        }

+    }

+}

+

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SchemaWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SchemaWriter.java
new file mode 100644
index 0000000..c1755ff
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SchemaWriter.java
@@ -0,0 +1,54 @@
+package org.apache.axis2.wsdl.codegen.writer;

+

+import org.apache.ws.commons.schema.XmlSchema;

+import org.apache.axis2.util.FileWriter;

+

+import java.io.File;

+import java.io.FileOutputStream;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A convenient class to write out the schemas into a file in the

+ * output location

+ */

+public class SchemaWriter {

+

+    private File baseFolder = null;

+

+    public SchemaWriter(File baseFolder) {

+        this.baseFolder = baseFolder;

+    }

+

+    public void writeSchema(XmlSchema schema,String schemaFileName){

+        try {

+            if (schema!= null){

+                //create a output file

+                File outputFile = FileWriter.createClassFile(baseFolder,

+                        null,

+                        schemaFileName.substring(0,schemaFileName.lastIndexOf(".")),

+                        ".xsd");

+                FileOutputStream fos = new FileOutputStream(outputFile);

+                schema.write(fos);

+                fos.flush();

+                fos.close();

+            }

+        } catch (Exception e) {

+            throw new RuntimeException("Schema writing failed!", e);

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ServiceXMLWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ServiceXMLWriter.java
new file mode 100644
index 0000000..103f6bf
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/ServiceXMLWriter.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import org.apache.axis2.util.FileWriter;
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+public class ServiceXMLWriter extends ClassWriter {
+
+
+    public ServiceXMLWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public ServiceXMLWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+    public void createOutFile(String packageName, String fileName) throws Exception {
+        File outputFile = FileWriter.createClassFile(outputFileLocation,
+                packageName,
+                "services",
+                ".xml");
+        //set the existing flag
+        fileExists = outputFile.exists();
+        if (!fileExists) {
+            this.stream = new FileOutputStream(outputFile);
+        }
+    }
+}
+
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SkeletonInterfaceWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SkeletonInterfaceWriter.java
new file mode 100644
index 0000000..94f70a3
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SkeletonInterfaceWriter.java
@@ -0,0 +1,32 @@
+package org.apache.axis2.wsdl.codegen.writer;

+

+import java.io.File;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class SkeletonInterfaceWriter extends ClassWriter {

+

+

+    public SkeletonInterfaceWriter(String outputFileLocation) {

+        this.outputFileLocation = new File(outputFileLocation);

+    }

+

+    public SkeletonInterfaceWriter(File outputFileLocation, String language) {

+        this.outputFileLocation = outputFileLocation;

+        this.language = language;

+    }

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SkeletonWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SkeletonWriter.java
new file mode 100644
index 0000000..19f4331
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/SkeletonWriter.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import java.io.File;
+
+public class SkeletonWriter extends ClassWriter {
+
+
+    public SkeletonWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public SkeletonWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/TestClassWriter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/TestClassWriter.java
new file mode 100644
index 0000000..9a67d09
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/TestClassWriter.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.writer;
+
+import java.io.File;
+
+public class TestClassWriter extends ClassWriter {
+
+    public TestClassWriter(String outputFileLocation) {
+        this.outputFileLocation = new File(outputFileLocation);
+    }
+
+    public TestClassWriter(File outputFileLocation, String language) {
+        this.outputFileLocation = outputFileLocation;
+        this.language = language;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/WSDL11Writer.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/WSDL11Writer.java
new file mode 100644
index 0000000..918511e
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/WSDL11Writer.java
@@ -0,0 +1,50 @@
+package org.apache.axis2.wsdl.codegen.writer;

+

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.util.FileWriter;

+

+import java.io.File;

+import java.io.FileOutputStream;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL11Writer {

+      private File baseFolder = null;

+

+

+       public WSDL11Writer(File baseFolder) {

+           this.baseFolder = baseFolder;

+       }

+

+       public void writeWSDL(AxisService axisService){

+           try {

+               if (axisService!= null){

+                   //create a output file

+                   File outputFile = FileWriter.createClassFile(baseFolder,

+                           null,

+                           axisService.getName(),

+                           ".wsdl");

+                   FileOutputStream fos = new FileOutputStream(outputFile);

+                   axisService.printWSDL(fos);

+                   fos.flush();

+                   fos.close();

+               }

+           } catch (Exception e) {

+               throw new RuntimeException("WSDL writing failed!", e);

+           }

+       }

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/WSDL20Writer.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/WSDL20Writer.java
new file mode 100644
index 0000000..02f8330
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/codegen/writer/WSDL20Writer.java
@@ -0,0 +1,51 @@
+package org.apache.axis2.wsdl.codegen.writer;

+

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.util.FileWriter;

+

+import java.io.File;

+import java.io.FileOutputStream;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL20Writer {

+    private File baseFolder = null;

+

+

+    public WSDL20Writer(File baseFolder) {

+        this.baseFolder = baseFolder;

+    }

+

+    public void writeWSDL(AxisService axisService){

+        try {

+            if (axisService!= null){

+                //create a output file

+                File outputFile = FileWriter.createClassFile(baseFolder,

+                        null,

+                        axisService.getName(),

+                        ".wsdl");

+                FileOutputStream fos = new FileOutputStream(outputFile);

+                axisService.printWSDL2(fos);

+                fos.flush();

+                fos.close();

+            }

+        } catch (Exception e) {

+            throw new RuntimeException("WSDL writing failed!", e);

+        }

+    }

+

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/CDefaultTypeMapper.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/CDefaultTypeMapper.java
new file mode 100755
index 0000000..7b5fded
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/CDefaultTypeMapper.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.databinding;
+
+import javax.xml.namespace.QName;
+
+public class CDefaultTypeMapper extends TypeMappingAdapter {
+    private String defaultStructName = "axiom_node_t*";
+    public CDefaultTypeMapper() {
+    }
+
+    /**
+     * Gets the type mapping name.
+     * always returns the default mapping
+     *
+     * @see TypeMapper#getTypeMappingName(javax.xml.namespace.QName)
+     */
+    public String getTypeMappingName(QName qname) {
+
+        if ((qname != null)) {
+            return defaultStructName;
+        }else{
+            return null;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/CSharpTypeMapper.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/CSharpTypeMapper.java
new file mode 100644
index 0000000..0802916
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/CSharpTypeMapper.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.databinding;
+
+
+public class CSharpTypeMapper extends TypeMappingAdapter {
+
+    /**
+     * Creats a basic Csharp type mapper. This is not complete
+     */
+    public CSharpTypeMapper() {
+        //Todo create the type mapping hastable here
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/DefaultTypeMapper.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/DefaultTypeMapper.java
new file mode 100644
index 0000000..5d9c0fd
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/DefaultTypeMapper.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.databinding;
+
+import org.apache.axis2.namespace.Constants;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+
+import javax.xml.namespace.QName;
+
+/**
+ * The default type mapper. This type mapper has no default configurations
+ */
+public class DefaultTypeMapper extends TypeMappingAdapter {
+
+    public DefaultTypeMapper() {
+    }
+
+    /**
+     * Gets the type mapping name.
+     * always returns the default mapping
+     *
+     * @see TypeMapper#getTypeMappingName(javax.xml.namespace.QName)
+     */
+    public String getTypeMappingName(QName qname) {
+
+        if ((qname != null)) {
+            return defaultClassName;
+        }else{
+            return null;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/JavaTypeMapper.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/JavaTypeMapper.java
new file mode 100644
index 0000000..2d5bbe9
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/JavaTypeMapper.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.databinding;
+
+
+/**
+ * The java type mapper can do without any default configuration
+ * However if any such default type mappings are needed, they can be
+ * put inside the constructor
+ */
+public class JavaTypeMapper extends TypeMappingAdapter {
+
+    public JavaTypeMapper() {
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMapper.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMapper.java
new file mode 100644
index 0000000..96fc6dd
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMapper.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.databinding;
+
+import org.apache.axiom.om.OMElement;
+
+import javax.xml.namespace.QName;
+import java.util.Map;
+
+public interface TypeMapper {
+
+   
+
+    /**
+     * Returns whether the mapping is the object type or the normal class name type
+     * @return Returns boolean.
+     */
+    public boolean isObjectMappingPresent();
+
+    /**
+     * Gets the type mapping class name.
+     *
+     * @param qname name of the XML element to be mapped
+     * @return Returns a string that represents the particular type.
+     */
+    public String getTypeMappingName(QName qname);
+
+    /**
+     * Gets the type mapping Object.
+     *
+     * @param qname name of the XML element to be mapped
+     * @return Returns an Object that represents the particular class in a pre specified form.
+     *         It can be a specific format to the databinding framework used.
+     *         This allows tight integrations with the databinding framework, allowing the emitter
+     *         to write the databinding classes in its own way.
+     */
+    public Object getTypeMappingObject(QName qname);
+
+    /**
+     * Gets the parameter name.
+     *
+     * @param qname name of the XML element to get a parameter
+     * @return Returns a unique parameter name.
+     */
+    public String getParameterName(QName qname);
+
+    /**
+     * Adds a type mapping name to the type mapper.
+     *
+     * @param qname
+     * @param value
+     * @see #getTypeMappingName(javax.xml.namespace.QName)
+     */
+    public void addTypeMappingName(QName qname, String value);
+
+    /**
+     * Adds a type mapping object to the type mapper.
+     *
+     * @param qname the xml Qname that this type refers to
+     * @param value the type mapping object
+     * @see #getTypeMappingObject(javax.xml.namespace.QName)
+     */
+    public void addTypeMappingObject(QName qname, Object value);
+
+    /**
+     * @return Returns a map containing all type mapping names
+     * i.e. Qname to  classname
+     */
+    public Map getAllMappedNames();
+
+    /**
+     * @return Returns a map containing all type mapping model objects
+     * i.e. Qname to model objects
+     */
+    public Map getAllMappedObjects();
+
+    /**
+     *
+     * @return the default mapping name for this type mapper
+     */
+    public String getDefaultMappingName();
+
+    /**
+     * Sets the default type mapping - the databinders may
+     * change the default mapping to suit their default
+     * mapping
+     * @param defaultMapping
+     */
+    public void setDefaultMappingName(String defaultMapping);
+
+
+    /**
+     * Allows the storage of a status object with a mapping to
+     * the qname. This may be used to store certain status information
+     * that will be used by different type mappers. A given type mapper
+     * may choose not to implement this!
+     * @param qname
+     * @param status
+     */
+    public void addTypeMappingStatus(QName qName,Object status);
+
+    /**
+     * Returns the relevant status object given the qName of the xml element
+     * @see #addTypeMappingStatus(javax.xml.namespace.QName, Object)
+     * @param qName
+     * @return the status object
+     */
+    public Object getTypeMappingStatus(QName qName);
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMappingAdapter.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMappingAdapter.java
new file mode 100644
index 0000000..f88f7c3
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMappingAdapter.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.databinding;
+
+import org.apache.axis2.namespace.Constants;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+import org.apache.axiom.om.OMElement;
+
+import javax.xml.namespace.QName;
+import java.util.HashMap;
+import java.util.Map;
+
+public abstract class TypeMappingAdapter implements TypeMapper {
+
+    /**
+     * Default class name is the OMElement or the default case
+     * However the extensions can override the default class
+     * to suit the databinding framework!
+     */
+    protected String defaultClassName = OMElement.class.getName();
+
+    protected static final String XSD_SCHEMA_URL = Constants.URI_2001_SCHEMA_XSD;
+
+    //hashmap that contains the type mapping names
+    protected HashMap qName2NameMap = new HashMap();
+
+    //hashmap that contains the type mapping objects
+    protected HashMap qName2ObjectMap = new HashMap();
+
+    //hashmap for keeping the status objects.
+    protected HashMap qName2StatusMap = new HashMap();
+
+    //counter variable to generate unique parameter ID's
+    protected int counter = 0;
+
+    protected boolean isObject = false;
+
+    //Upper limit for the paramete count
+    protected static final int UPPER_PARAM_LIMIT = 1000;
+    private static final String PARAMETER_NAME_SUFFIX = "param";
+
+
+    /**
+     * Gets the type mapping name.
+     * If type mapping is not found, returns default.
+     *
+     * @see TypeMapper#getTypeMappingName(javax.xml.namespace.QName)
+     */
+    public String getTypeMappingName(QName qname) {
+
+        if ((qname != null)) {
+            Object o = qName2NameMap.get(qname);
+            if (o != null) {
+                return (String) o;
+            } else if (Constants.XSD_ANYTYPE.equals(qname) ||
+                     Constants.XSD_ANY.equals(qname)) {
+                return defaultClassName;
+            }else{
+                throw new UnmatchedTypeException(
+                        CodegenMessages.getMessage("databinding.typemapper.typeunmatched",
+                                qname.getLocalPart(),
+                                qname.getNamespaceURI())
+                );
+            }
+        }else{
+           return null;
+        }
+
+
+    }
+
+    /**
+     * @see TypeMapper#getParameterName(javax.xml.namespace.QName)
+     */
+    public String getParameterName(QName qname) {
+        if (counter == UPPER_PARAM_LIMIT) {
+            counter = 0;
+        }
+        return PARAMETER_NAME_SUFFIX + counter++;
+    }
+
+    /**
+     * @see TypeMapper#addTypeMappingName(javax.xml.namespace.QName,String)
+     */
+    public void addTypeMappingName(QName qname, String value) {
+        qName2NameMap.put(qname, value);
+    }
+
+    /**
+     * @param qname
+     * @return Returns object representing a specific form of the XSD compilation.
+     * @see TypeMapper#getTypeMappingObject(javax.xml.namespace.QName)
+     */
+    public Object getTypeMappingObject(QName qname) {
+        return qName2ObjectMap.get(qname);
+    }
+
+    /**
+     * @param qname
+     * @param value
+     * @see TypeMapper#addTypeMappingObject(javax.xml.namespace.QName, Object)
+     */
+    public void addTypeMappingObject(QName qname, Object value) {
+        isObject = true;
+        qName2ObjectMap.put(qname, value);
+    }
+
+    /**
+     * @see org.apache.axis2.wsdl.databinding.TypeMapper#isObjectMappingPresent()
+     * @return Returns boolean.
+     */
+    public boolean isObjectMappingPresent() {
+        return isObject;
+    }
+
+    /**
+     * @see org.apache.axis2.wsdl.databinding.TypeMapper#getAllMappedNames()
+     */
+    public Map getAllMappedNames() {
+        return qName2NameMap;
+    }
+
+    /**
+     * @see org.apache.axis2.wsdl.databinding.TypeMapper#getAllMappedObjects()
+     */
+    public Map getAllMappedObjects() {
+        return qName2ObjectMap;
+    }
+
+    /**
+     * @see org.apache.axis2.wsdl.databinding.TypeMapper#getDefaultMappingName()
+     */
+    public String getDefaultMappingName() {
+        return defaultClassName;
+    }
+
+    /**
+     * @see TypeMapper#setDefaultMappingName(String) 
+     * @param defaultMapping
+     */
+    public void setDefaultMappingName(String defaultMapping) {
+        this.defaultClassName = defaultMapping;
+    }
+
+    /**
+     * @see TypeMapper#addTypeMappingStatus(javax.xml.namespace.QName, Object)
+     * @param qName
+     * @param status
+     */
+    public void addTypeMappingStatus(QName qName, Object status) {
+        this.qName2StatusMap.put(qName, status);
+    }
+
+    /**
+     * @see TypeMapper#getTypeMappingStatus(javax.xml.namespace.QName) 
+     * @param qName
+     */
+    public Object getTypeMappingStatus(QName qName) {
+        return this.qName2StatusMap.get(qName);
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/UnmatchedTypeException.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/UnmatchedTypeException.java
new file mode 100644
index 0000000..f491a56
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/databinding/UnmatchedTypeException.java
@@ -0,0 +1,37 @@
+package org.apache.axis2.wsdl.databinding;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A simple exception that will be thrown if a type is not matched!

+ */

+public class UnmatchedTypeException extends RuntimeException{

+

+    public UnmatchedTypeException() {

+    }

+

+    public UnmatchedTypeException(String message) {

+        super(message);

+    }

+

+    public UnmatchedTypeException(Throwable cause) {

+        super(cause);

+    }

+

+    public UnmatchedTypeException(String message, Throwable cause) {

+        super(message, cause);

+    }

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/i18n/CodegenMessages.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/i18n/CodegenMessages.java
new file mode 100644
index 0000000..7b9ff9e
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/i18n/CodegenMessages.java
@@ -0,0 +1,162 @@
+package org.apache.axis2.wsdl.i18n;
+
+import org.apache.axis2.i18n.MessageBundle;
+import org.apache.axis2.i18n.MessagesConstants;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/**
+ * @see org.apache.axis2.i18n.Messages
+ * The implementation is the same but just 
+ * thisClass static reference has CodegenMessages.class
+ */
+public class CodegenMessages {
+
+    //Only this changes from the original class
+    private static Class thisClass = CodegenMessages.class;
+
+    private static final String projectName = MessagesConstants.projectName;
+
+    private static final String resourceName = MessagesConstants.resourceName;
+    private static final Locale locale = MessagesConstants.locale;
+
+    private static final String packageName = getPackage(thisClass.getName());
+    private static final ClassLoader classLoader = thisClass.getClassLoader();
+
+    private static final ResourceBundle parent =
+            (MessagesConstants.rootPackageName.equals(packageName))
+                    ? null
+                    : MessagesConstants.rootBundle;
+
+
+    /**
+     * ** NO NEED TO CHANGE ANYTHING BELOW ****
+     */
+
+    private static final MessageBundle messageBundle =
+            new MessageBundle(projectName, packageName, resourceName,
+                    locale, classLoader, parent);
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key The resource key
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0, String arg1)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0, arg1);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0, arg1, arg2);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @param arg4 The argument to place in variable {4}
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3, String arg4)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3, arg4);
+    }
+
+    /**
+     * Gets a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param args An array of objects to place in corresponding variables
+     * @return Returns the formatted message.
+     */
+    public static String getMessage(String key, String[] args)
+            throws MissingResourceException {
+        return messageBundle.getMessage(key, args);
+    }
+
+    public static ResourceBundle getResourceBundle() {
+        return messageBundle.getResourceBundle();
+    }
+
+    public static MessageBundle getMessageBundle() {
+        return messageBundle;
+    }
+
+    private static String getPackage(String name) {
+        return name.substring(0, name.lastIndexOf('.')).intern();
+    }
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties
new file mode 100644
index 0000000..3479af2
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties
@@ -0,0 +1,116 @@
+# Translation instructions.

+# 1.  Each message line is of the form key=value.

+#     Translate the value, DO NOT translate the key.

+# 2.  The messages may contain arguments that will be filled in

+#     by the runtime.  These are of the form: {0}, {1}, etc.

+#     These must appear as is in the message, though the order

+#     may be changed to support proper language syntax.

+# 3.  If a single quote character is to appear in the resulting

+#     message, it must appear in this file as two consecutive

+#     single quote characters.

+# 4.  Lines beginning with "#" (like this one) are comment lines

+#     and may contain translation instructions.  They need not be

+#     translated unless your translated file, rather than this file,

+#     will serve as a base for other translators.

+#

+################## WSDL2Code ######################################

+wsdl2code.arg1=Usage: WSDL2Java -uri <url or path> : A url or path to a WSDL

+wsdl2code.arg2=\t  -o <path>                Specify a directory path for the generated code.

+wsdl2code.arg3=\t  -a                       Generate async style code only (Default: off).

+wsdl2code.arg4=\t  -s                       Generate sync style code only (Default: off). Takes precedence over -a.

+wsdl2code.arg5=\t  -p <pkg1>                Specify a custom package name for the generated code.

+wsdl2code.arg6=\t  -l <language>            Valid languages are java and csharp (Default: java).

+wsdl2code.arg7=\t  -t                       Generate a test case for the generated code.

+wsdl2code.arg8=\t  -ss                      Generate server side code (i.e. skeletons) (Default: off).

+wsdl2code.arg9=\t  -sd                      Generate service descriptor (i.e. services.xml). (Default: off). Valid with -ss.

+wsdl2code.arg10=\t  -d <databinding>         Valid databinding(s) are adb, xmlbeans, jibx, jaxme and jaxbri (Default: adb).

+wsdl2code.arg11=\t  -g                       Generates all the classes. Valid only with -ss.

+wsdl2code.arg12=\t  -pn <port_name>          Choose a specific port when there are multiple ports in the wsdl.

+wsdl2code.arg13=\t  -sn <service_name>       Choose a specific service when there are multiple services in the wsdl.

+wsdl2code.arg14=\t  -u                       Unpacks the databinding classes

+wsdl2code.arg15=\t  -r <path>                Specify a repository against which code is generated.

+wsdl2code.arg16=\t  -ns2p ns1=pkg1,ns2=pkg2  Specify a custom package name for each namespace specified in the wsdl's schema.

+wsdl2code.arg17=\t  -ssi                     Generate an interface for the service implementation (Default: off).

+wsdl2code.arg18=\t  -wv                      WSDL Version. Valid Options : 2, 2.0, 1.1

+wsdl2code.arg19=\t  -S                      Specify a directory path for generated source

+wsdl2code.arg20=\t  -R                      Specify a directory path for generated resources

+wsdl2code.arg21=\t  -em                      Specify an external mapping file

+wsdl2code.arg22=\t  -f                      Flattens the generated files

+wsdl2code.arg23=\t  -uw                      Switch on un-wrapping.

+#wsdl2code.arg19=\t  -b                       Generate Axis 1.x backword compatible code

+

+################## prop file loader #################################

+propfileload.frameworkMismatch=Number of frameworks and extension names do not match!

+propfileload.unknownFramework=Unknown framework specified for default!

+propfileload.emitterMissing=No emitters found!

+propfileload.unknownDefaultLang=Unknown Language specified for default!

+propfileload.generalException=Exception while loading the property file

+

+#################  template resolver #################################

+resolver.templateNotFound={0} template not found!

+

+################### Codegen engine ###################################

+engine.wsdlParsingException=Error parsing WSDL

+engine.invalidWsdlLocation=Invalid WSDL Location

+engine.noProperDatabindingException=Unable to use specified databinding!

+engine.emitterMissing=Emitter class not found!

+engine.wrongEmitter=Non emitter class found!

+engine.extensionLoadProblem=Extension class loading problem

+engine.extensionInstantiationProblem=Extension class instantiation problem

+engine.illegalExtension=Illegal extension!

+

+################### Options ###################################

+options.notADirectoryException=The specified output location is not a directory!

+options.nomappingFile=Unable to load mapping file!

+options.noFile=The specified output location is not a directory!

+

+writer.noLangPropertiesExtension=No language specific properties!!!

+writer.templateMissing=template for this writer is not found!

+

+extension.bindingMissing=bindings are not present in the original document

+extension.noProperDatabinding=No proper databinding has taken place

+extension.invalidWSDL=Invalid WSDL: The WSDL Types Schema does not define a targetNamespace in {0}

+extension.additionalSchemaFailure=Additional schema loading failed!!

+extension.encodedNotSupported=The use 'encoded' is not supported!

+extension.databindingMismatch=The specified databinding frameworks do not match!

+extension.unhandledSchemaConstruct=Unhandled schema construct!

+extension.unsupportedforunwrapping=Unsupported framework for unwrapping!

+extension.unsupportedSchemaFormat=Unsupported Schema format for unwrapping! found {0} but expected {1}

+

+emitter.unknownStyle=Unknown code generation style {0}

+emitter.cannotFindBinding=Cannot find a binding!!

+emitter.logEntryInterface1=Interface mode is selected.The following items will not be generated

+emitter.logEntryInterface2=1. Message Receiver

+emitter.logEntryInterface3=2. Stub

+emitter.logEntryInterface4=3. CallbackHandler

+emitter.logEntryInterface5=4. Test Classes

+emitter.logEntryInterface6=5. Databinding Supporters

+emitter.coreclassNameError=Cannot form the core class name

+emitter.serviceNotFoundError=specified service {0} not found

+emitter.endpointNotFoundError=specified end point {0} not found

+emitter.noEndpointsFoundError=endpoints not found

+emitter.warningMultipleServices=Warning - Multiple services found - picking the first service!

+emitter.warningMultipleEndpoints=Warning - Multiple endpoints found - picking the first endpoint!

+emitter.switchingMessages=Warning -No services found - switched to the interface mode!

+emitter.warningMultiplePorttypes=Warning - Found multiple porttypes - picking the first

+

+# Type mappers

+databinding.typemapper.typeunmatched=No type was mapped to the name {0} with namespace {1}

+databinding.typemapper.typeunmatched.null=No type can be matched to a null QName!

+

+##################### java2WSDL

+java2wsdl.arg1=Usage java2wsdl -cn <fully qualified class name> : class file name

+java2wsdl.arg2=-o <output Location> : output file location

+java2wsdl.arg3=-cp <class path uri> : list of classpath entries - (urls)

+java2wsdl.arg4=-tn <target namespace> : target namespace

+java2wsdl.arg5=-tp <target namespace prefix> : target namespace prefix

+java2wsdl.arg6=-stn <schema target namespace> : target namespace for schema

+java2wsdl.arg7=-stp <schema target namespace prefix> : target namespace prefix for schema

+java2wsdl.arg8=-sn <service name> : service name

+java2wsdl.arg9=-of <output file name> : output file name for the WSDL

+

+java2wsdl.generalError=An error occured while generating code

+java2wsdl.notAFolder=The specivied location {0} is not a folder

+java2wsdl.classIsMust=class name must be present!

+

+

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/ServiceSkeleton.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/ServiceSkeleton.xsl
new file mode 100644
index 0000000..d4cb69d
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/ServiceSkeleton.xsl
@@ -0,0 +1,264 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+
+      <!--Template for in out message receiver -->
+      <xsl:template match="/interface">
+        <xsl:variable name="skeletonname"><xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="qname"><xsl:value-of select="@qname"/></xsl:variable>
+        <xsl:variable name="method-prefix"><xsl:value-of select="@prefix"/></xsl:variable>
+        <xsl:variable name="svcop-prefix"><xsl:value-of select="@svcop_prefix"/></xsl:variable>
+        <xsl:variable name="svcname"><xsl:value-of select="@svcname"/></xsl:variable>
+        <xsl:variable name="soapVersion"><xsl:value-of select="@soap-version"/></xsl:variable>
+
+        /**
+         * <xsl:value-of select="@name"/>.c
+         *
+         * This file was auto-generated from WSDL for "<xsl:value-of select="$qname"/>" service
+         * by the Apache Axis2 version: #axisVersion# #today#
+         *  <xsl:value-of select="$skeletonname"/>
+         */
+
+        #include "<xsl:value-of select="$svcop-prefix"/>.h"
+        #include &lt;axis2_svc_skeleton.h&gt;
+        #include &lt;axis2_array_list.h&gt;
+        #include &lt;stdio.h&gt;
+
+        /**
+         * functions prototypes
+         */
+
+        /* On fault, handle the fault */
+        axiom_node_t* AXIS2_CALL
+        <xsl:value-of select="$method-prefix"/>_on_fault(axis2_svc_skeleton_t *svc_skeleton,
+                  const axis2_env_t *env, axiom_node_t *node);
+
+        /* Free the service */
+        int AXIS2_CALL
+        <xsl:value-of select="$method-prefix"/>_free(axis2_svc_skeleton_t *svc_skeleton,
+                  const axis2_env_t *env);
+
+        /* This method invokes the right service method */
+        axiom_node_t* AXIS2_CALL
+        <xsl:value-of select="$method-prefix"/>_invoke(axis2_svc_skeleton_t *svc_skeleton,
+                    const axis2_env_t *env,
+                    axiom_node_t *node,
+                    axis2_msg_ctx_t *msg_ctx);
+
+        /* Initializing the environment  */
+        int AXIS2_CALL
+        <xsl:value-of select="$method-prefix"/>_init(axis2_svc_skeleton_t *svc_skeleton,
+                        const axis2_env_t *env);
+
+        /* Create the service  */
+        axis2_svc_skeleton_t* AXIS2_CALL
+        <xsl:value-of select="$method-prefix"/>_create(const axis2_env_t *env);
+
+        /**
+         * Implementations for the functions
+         */
+
+	axis2_svc_skeleton_t* AXIS2_CALL
+	<xsl:value-of select="$method-prefix"/>_create(const axis2_env_t *env)
+	{
+	    axis2_svc_skeleton_t *svc_skeleton = NULL;
+	    svc_skeleton = AXIS2_MALLOC(env->allocator,
+	        sizeof(axis2_svc_skeleton_t));
+
+
+	    svc_skeleton->ops = AXIS2_MALLOC(
+	        env->allocator, sizeof(axis2_svc_skeleton_ops_t));
+
+	    svc_skeleton->func_array = NULL;
+
+	    svc_skeleton->ops->free = <xsl:value-of select="$method-prefix"/>_free;
+	    svc_skeleton->ops->init = <xsl:value-of select="$method-prefix"/>_init;
+	    svc_skeleton->ops->invoke = <xsl:value-of select="$method-prefix"/>_invoke;
+	    svc_skeleton->ops->on_fault = <xsl:value-of select="$method-prefix"/>_on_fault;
+
+	    return svc_skeleton;
+	}
+
+
+	int AXIS2_CALL
+	<xsl:value-of select="$method-prefix"/>_init(axis2_svc_skeleton_t *svc_skeleton,
+	                        const axis2_env_t *env)
+	{
+	    svc_skeleton->func_array = axis2_array_list_create(env, 10);
+        <xsl:for-each select="method">
+	      AXIS2_ARRAY_LIST_ADD(svc_skeleton->func_array, env, "<xsl:value-of select="@localpart"/>");
+        </xsl:for-each>
+
+	    /* Any initialization stuff of <xsl:value-of select="$svcname"/> goes here */
+	    return AXIS2_SUCCESS;
+	}
+
+	int AXIS2_CALL
+	<xsl:value-of select="$method-prefix"/>_free(axis2_svc_skeleton_t *svc_skeleton,
+				 const axis2_env_t *env)
+	{
+          if(svc_skeleton->func_array)
+          {
+            AXIS2_ARRAY_LIST_FREE(svc_skeleton->func_array, env);
+            svc_skeleton->func_array = NULL;
+          }
+
+          if(svc_skeleton->ops)
+          {
+            AXIS2_FREE(env->allocator, svc_skeleton->ops);
+            svc_skeleton->ops = NULL;
+          }
+
+          if(svc_skeleton)
+          {
+            AXIS2_FREE(env->allocator, svc_skeleton);
+            svc_skeleton = NULL;
+          }
+          return AXIS2_SUCCESS;
+	}
+
+
+	/*
+	 * This method invokes the right service method
+	 */
+	axiom_node_t* AXIS2_CALL
+	<xsl:value-of select="$method-prefix"/>_invoke(axis2_svc_skeleton_t *svc_skeleton,
+				const axis2_env_t *env,
+				axiom_node_t *content_node,
+				axis2_msg_ctx_t *msg_ctx)
+	{
+         /* depending on the function name invoke the
+          * corresponding  method
+          */
+
+          axiom_element_t *element = NULL;
+          axiom_node_t *ret_node = NULL;
+
+          <xsl:for-each select="method">
+            <xsl:text>
+            </xsl:text>
+            <xsl:variable name="position"><xsl:value-of select="position()"/></xsl:variable>
+            <xsl:variable name="outputtype">
+              <xsl:choose>
+                <xsl:when test="output/param/@ours">axis2_<xsl:value-of select="output/param/@type"></xsl:value-of>_t*</xsl:when>
+                <xsl:otherwise><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:otherwise>
+              </xsl:choose>
+            </xsl:variable>
+            <xsl:value-of select="$outputtype"/> ret_val<xsl:value-of select="$position"/><xsl:if test="output/param/@ours"> = NULL</xsl:if>;
+            <xsl:for-each select="input/param[@type!='']">
+              <xsl:variable name="inputtype">
+                <xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
+              </xsl:variable>
+              <xsl:value-of select="$inputtype"/> input_val<xsl:value-of select="$position"/>_<xsl:value-of select="position()"/><xsl:if test="input/param/@ours"> = NULL</xsl:if>;
+            </xsl:for-each>
+          </xsl:for-each>
+          if (content_node)
+	      {
+            if (AXIOM_NODE_GET_NODE_TYPE(content_node, env) == AXIOM_ELEMENT)
+            {
+               element = (axiom_element_t *)AXIOM_NODE_GET_DATA_ELEMENT(content_node, env);
+               if (element)
+               {
+                  axis2_char_t *op_name = AXIOM_ELEMENT_GET_LOCALNAME(element, env);
+                  if (op_name)
+                  {
+                    <xsl:for-each select="method">
+                      <xsl:variable name="position"><xsl:value-of select="position()"/></xsl:variable>
+                      <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+                      <xsl:variable name="method-name"><xsl:value-of select="@name"/></xsl:variable>
+                      <xsl:variable name="method-ns"><xsl:value-of select="@namespace"/> </xsl:variable>
+                      <xsl:variable name="outputCapsType"><xsl:value-of select="@output/param/@caps-type"/> </xsl:variable>
+                      <xsl:variable name="outputtype"><xsl:value-of select="output/param/@type"/></xsl:variable>
+
+                      if ( AXIS2_STRCMP(op_name, "<xsl:value-of select="@localpart"/>") == 0 )
+                      {
+                           <xsl:for-each select="input/param[@type!='']">
+                             input_val<xsl:value-of select="$position"/>_<xsl:value-of select="position()"/> = <xsl:choose>
+                                    <xsl:when test="@ours">
+                                       axis2_<xsl:value-of select="@type"/>_create( env);
+                                       AXIS2_<xsl:value-of select="@caps-type"/>_BUILD_OM(input_val<xsl:value-of select="$position"/>_<xsl:value-of select="position()"/>, env, content_node );
+                                    </xsl:when>
+                                    <xsl:otherwise>content_node;</xsl:otherwise>
+                                  </xsl:choose>
+                             ret_val<xsl:value-of select="$position"/> =  <xsl:value-of select="$svcop-prefix"/>_<xsl:value-of select="$method-name"/>(env,
+                                                        input_val<xsl:value-of select="$position"/>_<xsl:value-of select="position()"/> );
+                             if ( NULL == ret_val<xsl:value-of select="$position"/> )
+                             {
+                                AXIS2_LOG_ERROR( env->log, AXIS2_LOG_SI, "NULL returnted from the business logic from <xsl:value-of select="$method-name"/> "
+                                                    " %d :: %s", env->error->error_number,
+                                                    AXIS2_ERROR_GET_MESSAGE(env->error));
+                                return <xsl:value-of select="$method-prefix"/>_on_fault( svc_skeleton, env, NULL);
+                             }
+                             ret_node = <xsl:choose>
+                                    <xsl:when test="@ours">
+                                       AXIS2_<xsl:value-of select="@caps-type"/>_PARSE_OM(ret_val<xsl:value-of select="$position"/>, env, NULL );
+                                    </xsl:when>
+                                    <xsl:otherwise>ret_val<xsl:value-of select="$position"/>;</xsl:otherwise>
+                                    </xsl:choose>
+                              return ret_node;
+                           </xsl:for-each>
+
+                          <!-- below was  prior to the databinding -->
+                          <!-- <xsl:if test="$outputtype!=''">return </xsl:if>
+                           <xsl:text> </xsl:text>
+                           <xsl:value-of select="$svcop-prefix"/>_<xsl:value-of select="$method-name"/>(env <xsl:for-each select="input/param[@type!='']"> ,
+                                                content_node </xsl:for-each>);
+                           <xsl:if test="$outputtype=''">return NULL;</xsl:if> -->
+
+                      }
+                      </xsl:for-each>
+                  }
+                }
+             }
+          }
+          printf("<xsl:value-of select="$skeletonname"/> service ERROR: invalid OM parameters in request\n");
+          return content_node;
+        }
+
+    axiom_node_t* AXIS2_CALL
+    <xsl:value-of select="$method-prefix"/>_on_fault(axis2_svc_skeleton_t *svc_skeleton,
+                  const axis2_env_t *env, axiom_node_t *node)
+	{
+		axiom_node_t *error_node = NULL;
+		axiom_element_t *error_ele = NULL;
+		error_ele = axiom_element_create(env, node, "fault", NULL,
+    					&amp;error_node);
+		AXIOM_ELEMENT_SET_TEXT(error_ele, env, "<xsl:value-of select="$qname"/> failed",
+    					error_node);
+		return error_node;
+	}
+
+
+	/**
+	 * Following block distinguish the exposed part of the dll.
+ 	 */
+
+    AXIS2_EXTERN int AXIS2_CALL
+    axis2_get_instance(struct axis2_svc_skeleton **inst,
+	                        const axis2_env_t *env)
+	{
+		*inst = <xsl:value-of select="$method-prefix"/>_create(env);
+
+        if(!(*inst))
+        {
+            return AXIS2_FAILURE;
+        }
+
+  		return AXIS2_SUCCESS;
+	}
+
+	AXIS2_EXTERN int AXIS2_CALL
+    axis2_remove_instance(axis2_svc_skeleton_t *inst,
+                            const axis2_env_t *env)
+	{
+        axis2_status_t status = AXIS2_FAILURE;
+       	if (inst)
+        {
+            status = AXIS2_SVC_SKELETON_FREE(inst, env);
+        }
+    	return status;
+	}
+
+
+    </xsl:template>
+
+</xsl:stylesheet>
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/ServiceXMLTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/ServiceXMLTemplate.xsl
new file mode 100644
index 0000000..2dffaa2
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/ServiceXMLTemplate.xsl
@@ -0,0 +1,25 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
+
+    <xsl:template match="/">
+        <xsl:comment> This file was auto-generated from WSDL </xsl:comment>
+        <xsl:comment> by the Apache Axis2 version: #axisVersion# #today# </xsl:comment>
+        <xsl:apply-templates/>
+    </xsl:template>
+
+    <xsl:template match="interface">
+
+        <service>
+            <xsl:attribute name="name"><xsl:value-of select="@servicename"/></xsl:attribute>
+
+            <parameter name="ServiceClass" locked="false">
+                        <xsl:value-of select="@servicename"/>
+            </parameter>
+			<xsl:for-each select="method">
+				<operation>
+					<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+				</operation>
+			</xsl:for-each>
+        </service>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/SkelHeaderTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/SkelHeaderTemplate.xsl
new file mode 100644
index 0000000..6c580f7
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/SkelHeaderTemplate.xsl
@@ -0,0 +1,70 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+    <xsl:template match="/interface">
+    <xsl:variable name="svc_name"><xsl:value-of select="@name"/></xsl:variable>
+    <xsl:variable name="method-prefix"><xsl:value-of select="@prefix"/></xsl:variable>
+    <xsl:variable name="qname"><xsl:value-of select="@qname"/></xsl:variable>
+
+    /**
+     * <xsl:value-of select="@name"/>.h
+     *
+     * This file was auto-generated from WSDL for "<xsl:value-of select="$qname"/>" service
+     * by the Apache Axis2/C version: #axisVersion# #today#
+     * <xsl:value-of select="@name"/> Axis2/C skeleton for the axisService- Header file
+     */
+
+
+	#include &lt;axis2_svc_skeleton.h&gt;
+	#include &lt;axis2_log_default.h&gt;
+	#include &lt;axis2_error_default.h&gt;
+	#include &lt;axiom_text.h&gt;
+	#include &lt;axiom_node.h&gt;
+	#include &lt;axiom_element.h&gt;
+    #include &lt;stdio.h&gt;
+
+
+   <xsl:for-each select="method">
+    <xsl:if test="output/param[@ours and @type!='']">
+     <xsl:variable name="outputtype">axis2_<xsl:value-of select="output/param/@type"></xsl:value-of></xsl:variable>
+     #include  "<xsl:value-of select="$outputtype"/>.h"
+    </xsl:if>
+    <xsl:for-each select="input/param[@type!='' and @ours]">
+     <xsl:variable name="inputtype">axis2_<xsl:value-of select="@type"></xsl:value-of></xsl:variable>
+     #include "<xsl:value-of select="$inputtype"/>.h"
+    </xsl:for-each>
+   </xsl:for-each>
+
+
+     <xsl:for-each select="method">
+         <xsl:variable name="outputours"><xsl:value-of select="output/param/@ours"></xsl:value-of></xsl:variable>
+         <xsl:variable name="outputtype">
+           <xsl:choose>
+             <xsl:when test="output/param/@ours">axis2_<xsl:value-of select="output/param/@type"></xsl:value-of>_t*</xsl:when>
+             <xsl:otherwise><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:otherwise>
+           </xsl:choose>
+         </xsl:variable>
+         <xsl:variable name="count"><xsl:value-of select="count(output/param)"/></xsl:variable>
+
+		 <!-- regardless of the sync or async status, the generated method signature would be just a usual
+	           c function-->
+        /**
+         * auto generated function declaration
+         * for "<xsl:value-of select="@qname"/>" operation.
+         <!--  select only the body parameters  -->
+         <xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
+         */
+        <xsl:choose>
+        <xsl:when test="$outputtype=''">axis2_status_t </xsl:when>
+        <xsl:when test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:when>
+        </xsl:choose>
+        <xsl:text> </xsl:text>
+        <xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/> (const axis2_env_t *env <xsl:for-each select="input/param[@type!='']"> ,
+                                          <xsl:variable name="inputtype">
+                                             <xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
+                                          </xsl:variable>
+                                          <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                          </xsl:for-each> );
+     </xsl:for-each>
+
+    </xsl:template>
+ </xsl:stylesheet>
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/SkelSourceTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/SkelSourceTemplate.xsl
new file mode 100644
index 0000000..1dde1db
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/SkelSourceTemplate.xsl
@@ -0,0 +1,55 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+    <xsl:template match="/interface">
+    <xsl:variable name="svc_name"><xsl:value-of select="@name"/></xsl:variable>
+    <xsl:variable name="method-prefix"><xsl:value-of select="@prefix"/></xsl:variable>
+    <xsl:variable name="qname"><xsl:value-of select="@qname"/></xsl:variable>
+
+    /**
+     * <xsl:value-of select="@name"/>.c
+     *
+     * This file was auto-generated from WSDL for "<xsl:value-of select="$qname"/>" service
+     * by the Apache Axis2/C version: #axisVersion# #today#
+     * <xsl:value-of select="@name"/> Axis2/C skeleton for the axisService
+     */
+
+     #include "<xsl:value-of select="@name"/>.h"
+
+     <xsl:for-each select="method">
+         <xsl:variable name="outputours"><xsl:value-of select="output/param/@ours"></xsl:value-of></xsl:variable>
+         <xsl:variable name="count"><xsl:value-of select="count(output/param)"/></xsl:variable>
+         <xsl:variable name="outputtype">
+           <xsl:choose>
+             <xsl:when test="output/param/@ours">axis2_<xsl:value-of select="output/param/@type"></xsl:value-of>_t*</xsl:when>
+             <xsl:otherwise><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:otherwise>
+           </xsl:choose>
+         </xsl:variable>
+
+		 <!-- regardless of the sync or async status, the generated method signature would be just a usual
+	           c function-->
+        /**
+         * auto generated function definition signature
+         * for "<xsl:value-of select="@qname"/>" operation.
+         <!--  select only the body parameters  -->
+         <xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
+         */
+        <xsl:choose>
+        <xsl:when test="$outputtype=''">axis2_status_t </xsl:when>
+        <xsl:when test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:when>
+        </xsl:choose>
+        <xsl:text> </xsl:text>
+        <xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/> (const axis2_env_t *env <xsl:for-each select="input/param[@type!='']"> ,
+                                              <xsl:variable name="inputtype">
+                                                  <xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
+                                              </xsl:variable>
+                                              <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                          </xsl:for-each> )
+        {
+          /* TODO fill this with the necessary business logic */
+          <xsl:if test="$outputtype!=''">return NULL;</xsl:if>
+          <xsl:if test="$outputtype=''">return AXIS2_SUCCESS;</xsl:if>
+        }
+     </xsl:for-each>
+
+    </xsl:template>
+ </xsl:stylesheet>
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/StubHeaderTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/StubHeaderTemplate.xsl
new file mode 100644
index 0000000..ed367e5
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/StubHeaderTemplate.xsl
@@ -0,0 +1,117 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+
+    <xsl:template match="/class">
+        <xsl:variable name="interfaceName"><xsl:value-of select="@interfaceName"/></xsl:variable>
+        <xsl:variable name="callbackname"><xsl:value-of select="@callbackname"/></xsl:variable>
+        <xsl:variable name="isSync"><xsl:value-of select="@isSync"/></xsl:variable>
+        <xsl:variable name="isAsync"><xsl:value-of select="@isAsync"/></xsl:variable>
+        <xsl:variable name="soapVersion"><xsl:value-of select="@soap-version"/></xsl:variable>
+        <xsl:variable name="method-prefix"><xsl:value-of select="@prefix"/></xsl:variable>
+        <xsl:variable name="qname"><xsl:value-of select="@qname"/></xsl:variable>
+
+        /**
+        * <xsl:value-of select="@name"/>.h
+        *
+        * This file was auto-generated from WSDL for "<xsl:value-of select="$qname"/>" service
+        * by the Apache Axis2/C version: #axisVersion# #today#
+        */
+
+        #include &lt;stdio.h&gt;
+        #include &lt;axiom.h&gt;
+        #include &lt;axis2_util.h&gt;
+        #include &lt;axiom_soap.h&gt;
+        #include &lt;axis2_client.h&gt;
+        #include &lt;axis2_stub.h&gt;
+
+       <xsl:for-each select="method">
+        <xsl:if test="output/param[@ours and @type!='']">
+         <xsl:variable name="outputtype">axis2_<xsl:value-of select="output/param/@type"></xsl:value-of></xsl:variable>
+         #include "<xsl:value-of select="$outputtype"/>.h"
+        </xsl:if>
+        <xsl:for-each select="input/param[@type!='' and @ours ]">
+         <xsl:variable name="inputtype">axis2_<xsl:value-of select="@type"></xsl:value-of></xsl:variable>
+         #include "<xsl:value-of select="$inputtype"/>.h"
+        </xsl:for-each>
+       </xsl:for-each>
+        /* function prototypes - for header file*/
+        /**
+         * <xsl:value-of select="$method-prefix"/>_create
+         * create and return the stub with services populated
+         * params - env : environment ( mandatory)
+         *        - client_home : Axis2/C home ( mandatory )
+         *        - endpoint_uri : service endpoint uri( optional ) - if NULL default picked from wsdl used
+         */
+        axis2_stub_t*
+        <xsl:value-of select="$method-prefix"/>_create (const axis2_env_t *env,
+                                        axis2_char_t *client_home,
+                                        axis2_char_t *endpoint_uri);
+        /**
+         * <xsl:value-of select="$method-prefix"/>_populate_services
+         * populate the svc in stub with the service and operations
+         */
+        void <xsl:value-of select="$method-prefix"/>_populate_services( axis2_stub_t *stub, const axis2_env_t *env);
+        /**
+         * <xsl:value-of select="$method-prefix"/>_get_endpoint_uri_from_wsdl
+         * return the endpoint URI picked from wsdl
+         */
+        axis2_char_t *<xsl:value-of select="$method-prefix"/>_get_endpoint_uri_from_wsdl ( const axis2_env_t *env );
+
+        <xsl:if test="$isSync='1'">
+        <xsl:for-each select="method">
+        /**
+         * auto generated function declaration
+         * for "<xsl:value-of select="@qname"/>" operation.
+         <!--  select only the body parameters  -->
+         <xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
+         */
+
+        <xsl:variable name="outputours"><xsl:value-of select="output/param/@ours"></xsl:value-of></xsl:variable>
+        <xsl:variable name="outputtype">
+            <xsl:choose>
+                <xsl:when test="output/param/@ours">axis2_<xsl:value-of select="output/param/@type"></xsl:value-of>_t*</xsl:when>
+                <xsl:otherwise><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <xsl:choose>
+        <xsl:when test="$outputtype=''">axis2_status_t</xsl:when>
+        <xsl:when test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:when>
+        </xsl:choose>
+        <xsl:text> </xsl:text>
+        <xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/>( axis2_stub_t *stub, const axis2_env_t *env<xsl:for-each select="input/param[@type!='']">,
+                                                    <xsl:variable name="inputtype">
+                                                        <xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
+                                                    </xsl:variable>
+                                                    <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                                </xsl:for-each>);
+        </xsl:for-each>
+        </xsl:if>  <!--close for  test="$isSync='1'-->
+
+        <!-- Async method prototype generation -->
+        <xsl:if test="$isAsync='1'">
+        <xsl:for-each select="method">
+        /**
+         * auto generated function declaration
+         * for "<xsl:value-of select="@qname"/>" operation.
+         <!--  select only the body parameters  -->
+         <xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
+         * @param on_complete callback to handle on complete
+         * @param on_error callback to handle on error
+         */
+
+        <xsl:variable name="mep"><xsl:value-of select="@mep"/></xsl:variable>
+        <xsl:if test="$mep='12'">
+        void <xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/>_start( axis2_stub_t *stub, const axis2_env_t *env<xsl:for-each select="input/param[@type!='']">,
+                                                        <xsl:variable name="inputtype">
+                                                            <xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
+                                                        </xsl:variable>
+                                                        <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                                    </xsl:for-each>,
+                                                        axis2_status_t ( AXIS2_CALL *on_complete ) (struct axis2_callback *, const axis2_env_t* ) ,
+                                                        axis2_status_t ( AXIS2_CALL *on_error ) (struct axis2_callback *, const axis2_env_t*, int ) );
+
+        </xsl:if>  <!--close for  test="$mep='http://www.w3.org/2004/08/wsdl/in-out'"-->
+        </xsl:for-each>
+        </xsl:if>  <!--close for  test="$isAsync='1'-->
+   </xsl:template>
+</xsl:stylesheet>
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/StubSourceTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/StubSourceTemplate.xsl
new file mode 100644
index 0000000..8f80f86
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/StubSourceTemplate.xsl
@@ -0,0 +1,375 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+
+    <xsl:template match="/class">
+      <xsl:variable name="interfaceName"><xsl:value-of select="@interfaceName"/></xsl:variable>
+      <xsl:variable name="package"><xsl:value-of select="@package"/></xsl:variable>
+      <xsl:variable name="isSync"><xsl:value-of select="@isSync"/></xsl:variable>
+      <xsl:variable name="isAsync"><xsl:value-of select="@isAsync"/></xsl:variable>
+      <xsl:variable name="soapVersion"><xsl:value-of select="@soap-version"/></xsl:variable>
+      <xsl:variable name="callbackname"><xsl:value-of select="@callbackname"/></xsl:variable>
+      <xsl:variable name="method-prefix"><xsl:value-of select="@prefix"/></xsl:variable>
+      <xsl:variable name="qname"><xsl:value-of select="@qname"/></xsl:variable>
+
+      /**
+       * <xsl:value-of select="@name"/>.c
+       *
+       * This file was auto-generated from WSDL for "<xsl:value-of select="$qname"/>" service
+       * by the Apache Axis2/C version: #axisVersion# #today#
+       */
+
+      #include "<xsl:value-of select="@name"/>.h"
+
+      /**
+       * <xsl:value-of select="@name"/> C implementation
+       */
+
+      axis2_stub_t*
+      <xsl:value-of select="$method-prefix"/>_create (const axis2_env_t *env,
+                                      axis2_char_t *client_home,
+                                      axis2_char_t *endpoint_uri)
+      {
+         axis2_stub_t *stub = NULL;
+         axis2_endpoint_ref_t *endpoint_ref = NULL;
+         AXIS2_FUNC_PARAM_CHECK ( client_home, env, NULL)
+
+         if (NULL == endpoint_uri )
+         {
+            endpoint_uri = <xsl:value-of select="$method-prefix"/>_get_endpoint_uri_from_wsdl( env );
+         }
+
+         endpoint_ref = axis2_endpoint_ref_create(env, endpoint_uri);
+
+         stub = axis2_stub_create_with_endpoint_ref_and_client_home ( env, endpoint_ref, client_home );
+         <xsl:value-of select="$method-prefix"/>_populate_services( stub, env );
+         return stub;
+      }
+
+
+      void <xsl:value-of select="$method-prefix"/>_populate_services( axis2_stub_t *stub, const axis2_env_t *env)
+      {
+         axis2_svc_client_t *svc_client = NULL;
+         axis2_qname_t *svc_qname =  NULL;
+         axis2_qname_t *op_qname =  NULL;
+         axis2_svc_t *svc = NULL;
+         axis2_op_t *op = NULL;
+
+         /* Modifying the Service */
+         svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
+         svc = (axis2_svc_t*)AXIS2_SVC_CLIENT_GET_AXIS_SERVICE ( svc_client, env );
+         axis2_qname_create(env,"<xsl:value-of select="@servicename"/>" ,NULL, NULL);
+         AXIS2_SVC_SET_QNAME (svc, env, svc_qname);
+
+         /* creating the operations*/
+
+         <xsl:for-each select="method">
+
+           op_qname = axis2_qname_create(env,
+                                         "<xsl:value-of select="@localpart"/>" ,
+                                         "<xsl:value-of select="@namespace"/>",
+                                         NULL);
+           op = axis2_op_create_with_qname(env, op_qname);
+           <xsl:choose>
+             <xsl:when test="@mep='10'">
+               AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_IN_ONLY);
+             </xsl:when>
+             <xsl:otherwise>
+               AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_OUT_IN);
+             </xsl:otherwise>
+           </xsl:choose>
+           AXIS2_SVC_ADD_OP(svc, env, op);
+
+         </xsl:for-each>
+      }
+
+      /**
+       *return end point picked from wsdl
+       */
+      axis2_char_t*
+      <xsl:value-of select="$method-prefix"/>_get_endpoint_uri_from_wsdl ( const axis2_env_t *env )
+      {
+        axis2_char_t *endpoint_uri = NULL;
+        /* set the address from here */
+        <xsl:for-each select="endpoint">
+          <xsl:choose>
+            <xsl:when test="position()=1">
+              endpoint_uri = "<xsl:value-of select="."/>";
+            </xsl:when>
+           </xsl:choose>
+        </xsl:for-each>
+        return endpoint_uri;
+      }
+
+
+  <xsl:for-each select="method">
+    <xsl:variable name="outputours"><xsl:value-of select="output/param/@ours"></xsl:value-of></xsl:variable>
+    <xsl:variable name="outputtype">
+      <xsl:choose>
+        <xsl:when test="output/param/@ours">axis2_<xsl:value-of select="output/param/@type"></xsl:value-of>_t*</xsl:when>
+        <xsl:otherwise><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:variable name="caps-outputtype"><xsl:value-of select="output/param/@caps-type"></xsl:value-of></xsl:variable>
+    <xsl:variable name="style"><xsl:value-of select="@style"></xsl:value-of></xsl:variable>
+    <xsl:variable name="soapAction"><xsl:value-of select="@soapaction"></xsl:value-of></xsl:variable>
+    <xsl:variable name="mep"><xsl:value-of select="@mep"/></xsl:variable>
+
+    <xsl:variable name="method-name"><xsl:value-of select="@name"/></xsl:variable>
+    <xsl:variable name="method-ns"><xsl:value-of select="@namespace"/> </xsl:variable>
+
+    <!-- Code generation for the in-out mep -->
+    <xsl:if test="$mep='12'">
+      <xsl:if test="$isSync='1'">
+         /**
+          * auto generated method signature
+          * for "<xsl:value-of select="@qname"/>" operation.
+          <xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
+          * @return
+          */
+         <xsl:choose>
+         <xsl:when test="$outputtype=''">void</xsl:when> <!--this case is unexpected-->
+         <xsl:otherwise><xsl:value-of select="$outputtype"/></xsl:otherwise>
+         </xsl:choose>
+         <xsl:text> </xsl:text>
+         <xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/>( axis2_stub_t *stub, const axis2_env_t *env<xsl:for-each select="input/param[@type!='']">,
+                                              <xsl:variable name="inputtype">
+                                                  <xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
+                                              </xsl:variable>
+                                              <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                              </xsl:for-each>)
+         {
+            axis2_svc_client_t *svc_client = NULL;
+            axis2_options_t *options = NULL;
+            axiom_node_t *ret_node = NULL;
+
+            const axis2_char_t *soap_action = NULL;
+            axis2_qname_t *op_qname =  NULL;
+            axiom_node_t *payload = NULL;
+            <xsl:if test="output/param/@ours">
+           	    <!-- this means data binding is enable -->
+                <xsl:value-of select="$outputtype"/> ret_val = NULL;
+            </xsl:if>
+
+
+            <!-- for service client currently suppported only 1 input param -->
+            <xsl:for-each select="input/param[@type!='']">
+                <xsl:if test="position()=1">
+                    <xsl:choose>
+                        <xsl:when test="@ours">
+                            payload = AXIS2_<xsl:value-of select="@caps-type"/>_PARSE_OM(<xsl:value-of select="@name"/>, env, NULL);
+                        </xsl:when>
+                        <xsl:otherwise>
+                            payload = <xsl:value-of select="@name"/>;
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:if>
+            </xsl:for-each>
+
+
+            options = AXIS2_STUB_GET_OPTIONS( stub, env);
+            if ( NULL == options )
+            {
+              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "options is null in stub: Error code:"
+                    " %d :: %s", env->error->error_number,
+                    AXIS2_ERROR_GET_MESSAGE(env->error));
+              return NULL;
+            }
+            svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
+            soap_action = AXIS2_OPTIONS_GET_ACTION ( options, env );
+            if ( NULL == soap_action )
+            {
+              soap_action = "<xsl:value-of select="$soapAction"/>";
+              AXIS2_OPTIONS_SET_ACTION( options, env, soap_action );
+            }
+            <xsl:if test="$soapVersion='1.2'">
+            AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP12 );
+            </xsl:if>
+            <xsl:if test="$soapVersion!='1.1'">
+            AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP11 );
+            </xsl:if>
+            op_qname = axis2_qname_create(env,
+                                        "<xsl:value-of select="@localpart"/>" ,
+                                        "<xsl:value-of select="@namespace"/>",
+                                        NULL);
+            ret_node =  AXIS2_SVC_CLIENT_SEND_RECEIVE_WITH_OP_QNAME( svc_client, env, op_qname, payload);
+
+
+            <xsl:choose>
+                <xsl:when test="$outputtype=''">
+                    return;
+                </xsl:when>
+                <xsl:when test="output/param/@ours">
+                    if ( NULL == ret_node )
+                    {
+                        return NULL;
+                    }
+                    ret_val = axis2_<xsl:value-of select="output/param/@type"/>_create(env);
+
+                    AXIS2_<xsl:value-of select="$caps-outputtype"/>_BUILD_OM(ret_val, env, ret_node );
+                    return ret_val;
+                </xsl:when>
+                <xsl:otherwise>
+                    return ret_node;
+                </xsl:otherwise>
+            </xsl:choose>
+        }
+        </xsl:if>  <!--close for  test="$isSync='1'-->
+        <!-- Async method generation -->
+        <xsl:if test="$isAsync='1'">
+        /**
+          * auto generated method signature for asynchronous invocations
+          * for "<xsl:value-of select="@qname"/>" operation.
+          <!--  select only the body parameters  -->
+          <xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
+          * @param on_complete callback to handle on complete
+          * @param on_error callback to handle on error
+          */
+         <xsl:variable name="callbackoncomplete"><xsl:value-of select="$callbackname"></xsl:value-of><xsl:text>_on_complete</xsl:text></xsl:variable>
+         <xsl:variable name="callbackonerror"><xsl:value-of select="$callbackname"></xsl:value-of><xsl:text>_on_error</xsl:text></xsl:variable>
+         void <xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/>_start( axis2_stub_t *stub, const axis2_env_t *env<xsl:for-each select="input/param[@type!='']">,
+                                                    <xsl:variable name="inputtype">
+                                                        <xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
+                                                    </xsl:variable>
+                                                    <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                                  </xsl:for-each>,
+                                                  axis2_status_t ( AXIS2_CALL *on_complete ) (struct axis2_callback *, const axis2_env_t *) ,
+                                                  axis2_status_t ( AXIS2_CALL *on_error ) (struct axis2_callback *, const axis2_env_t *, int ) )
+         {
+
+            axis2_callback_t *callback = NULL;
+
+            axis2_svc_client_t *svc_client = NULL;
+            axis2_options_t *options = NULL;
+
+            const axis2_char_t *soap_action = NULL;
+            axiom_node_t *payload = NULL;
+
+            <!-- for service client currently suppported only 1 input param -->
+            <xsl:for-each select="input/param[@type!='']">
+                <xsl:if test="position()=1">
+                    <xsl:choose>
+                        <xsl:when test="@ours">
+                            payload = AXIS2_<xsl:value-of select="@caps-type"/>_PARSE_OM(<xsl:value-of select="@name"/>, env, NULL);
+                        </xsl:when>
+                        <xsl:otherwise>
+                            payload = <xsl:value-of select="@name"/>;
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:if>
+            </xsl:for-each>
+
+
+            options = AXIS2_STUB_GET_OPTIONS( stub, env);
+            if ( NULL == options )
+            {
+              AXIS2_LOG_ERROR( env->log, AXIS2_LOG_SI, "options is null in stub: Error code:"
+                      " %d :: %s", env->error->error_number,
+                      AXIS2_ERROR_GET_MESSAGE(env->error));
+              return;
+            }
+            svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
+            soap_action = AXIS2_OPTIONS_GET_ACTION ( options, env );
+            if ( NULL == soap_action )
+            {
+              soap_action = "<xsl:value-of select="$soapAction"/>";
+              AXIS2_OPTIONS_SET_ACTION( options, env, soap_action );
+            }
+            <xsl:choose>
+             <xsl:when test="$soapVersion='1.2'">
+            AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP12 );
+             </xsl:when>
+             <xsl:otherwise>
+            AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP11 );
+             </xsl:otherwise>
+            </xsl:choose>
+
+            callback = axis2_callback_create(env);
+            /* Set our on_complete fucntion pointer to the callback object */
+            AXIS2_CALLBACK_SET_ON_COMPLETE(callback, on_complete);
+            /* Set our on_error function pointer to the callback object */
+            AXIS2_CALLBACK_SET_ON_ERROR(callback, on_error);
+
+            /* Send request */
+            AXIS2_SVC_CLIENT_SEND_RECEIVE_NON_BLOCKING(svc_client, env, payload, callback);
+         }
+
+         </xsl:if>  <!--close for  test="$isASync='1'-->
+       <!-- End of in-out mep -->
+       </xsl:if> <!-- close for  test="$mep='http://www.w3.org/2004/08/wsdl/in-out' -->
+
+       <xsl:if test="$mep='10'">
+         /**
+          * auto generated method signature for in only mep invocations
+          * for "<xsl:value-of select="@qname"/>" operation.
+          <!--  select only the body parameters  -->
+          <xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
+          * @param on_complete callback to handle on complete
+          * @param on_error callback to handle on error
+          */
+         axis2_status_t
+         <xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/>( axis2_stub_t *stub, const axis2_env_t *env <xsl:for-each select="input/param[@type!='']"> ,
+                                                 <xsl:variable name="inputtype">
+                                                    <xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
+                                                 </xsl:variable>
+                                                 <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                              </xsl:for-each>)
+         {
+            axis2_status_t status;
+
+            axis2_svc_client_t *svc_client = NULL;
+            axis2_options_t *options = NULL;
+
+            const axis2_char_t *soap_action = NULL;
+            axis2_qname_t *op_qname =  NULL;
+            axiom_node_t *payload = NULL;
+
+            <!-- for service client currently suppported only 1 input param -->
+            <xsl:for-each select="input/param[@type!='']">
+                <xsl:if test="position()=1">
+                    <xsl:choose>
+                        <xsl:when test="@ours">
+                            payload = AXIS2_<xsl:value-of select="@caps-type"/>_PARSE_OM(<xsl:value-of select="@name"/>, env, NULL);
+                        </xsl:when>
+                        <xsl:otherwise>
+                            payload = <xsl:value-of select="@name"/>;
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:if>
+            </xsl:for-each>
+
+
+            options = AXIS2_STUB_GET_OPTIONS( stub, env);
+            if ( NULL == options )
+            {
+              AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "options is null in stub: Error code:"
+                      " %d :: %s", env->error->error_number,
+                      AXIS2_ERROR_GET_MESSAGE(env->error));
+              return AXIS2_FAILURE;
+            }
+            svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
+            soap_action = AXIS2_OPTIONS_GET_ACTION ( options, env );
+            if ( NULL == soap_action )
+            {
+              soap_action = "<xsl:value-of select="$soapAction"/>";
+              AXIS2_OPTIONS_SET_ACTION( options, env, soap_action );
+            }
+            <xsl:choose>
+             <xsl:when test="$soapVersion='1.2'">
+            AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP12 );
+             </xsl:when>
+             <xsl:otherwise>
+            AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP11 );
+             </xsl:otherwise>
+            </xsl:choose>
+            op_qname = axis2_qname_create(env,
+                                        "<xsl:value-of select="@localpart"/>" ,
+                                        "<xsl:value-of select="@namespace"/>",
+                                        NULL);
+            status =  AXIS2_SVC_CLIENT_SEND_ROBUST_WITH_OP_QNAME( svc_client, env, op_qname, payload);
+            return status;
+
+        }
+       </xsl:if> <!-- close for  test="$mep='http://www.w3.org/2004/08/wsdl/in-only' -->
+     </xsl:for-each>   <!-- close of for-each select = "method" -->
+   </xsl:template>
+</xsl:stylesheet>
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/package.html b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/package.html
new file mode 100644
index 0000000..815ec43
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/c/package.html
@@ -0,0 +1,6 @@
+<html>
+<body>
+This package is a "non class containing" one that has the xsl templates for the c class generation
+
+</body>
+</html>
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/BeanTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/BeanTemplate.xsl
new file mode 100644
index 0000000..65f8b5e
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/BeanTemplate.xsl
@@ -0,0 +1,45 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:template match="/bean">

+    namespace <xsl:value-of select="@package"/>

+    {

+

+    ///  &lt;summary&gt;

+    ///  Auto generated bean class by the Axis code generator

+    ///  This is meant to be used with the IKVM converted Axis libraries

+    /// &lt;/summary&gt;

+

+    public class <xsl:value-of select="@name"/> {

+

+

+     <xsl:for-each select="property">

+         <xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable>

+         <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>

+

+        /// &lt;summary&gt;

+        /// field for <xsl:value-of select="$propertyName"/>

+        ///&lt;/summary&gt;

+         private <xsl:value-of select="$propertyType"/> local<xsl:value-of select="$propertyName"/>;

+

+        /// &lt;summary&gt;

+        /// Auto generated getter method

+        ///&lt;/summary&gt;

+        /// <returns><xsl:value-of select="$propertyType"/></returns>

+        ///

+        public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$propertyName"/>(){

+             return local<xsl:value-of select="$propertyName"/>;

+        }

+

+        /// &lt;summary&gt;

+        /// Auto generated setter method

+        ///&lt;/summary&gt;

+        ///<param name="param{$propertyName}"> </param>

+        ///

+        public void set<xsl:value-of select="$propertyName"/>(<xsl:value-of select="$propertyType"/> param<xsl:value-of select="$propertyName"/>){

+             this.local<xsl:value-of select="$propertyName"/>=param<xsl:value-of select="$propertyName"/>;

+        }

+     </xsl:for-each>

+    }

+    }

+    </xsl:template>

+ </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/CallbackHandlerTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/CallbackHandlerTemplate.xsl
new file mode 100644
index 0000000..bee4d53
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/CallbackHandlerTemplate.xsl
@@ -0,0 +1,42 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:template match="/callback">

+    namespace <xsl:value-of select="@package"/>

+    {

+    ///&lt;summary&gt;

+    /// Auto generated C# Callback class by the Axis code generator

+    /// This is meant to be used with the IKVM converted Axis libraries

+    /// &lt;/summary&gt;

+

+    public class <xsl:value-of select="@name"/>

+    {

+

+

+	<xsl:for-each select="method">

+

+        /// &lt;summary&gt;

+        /// Auto generated Axis2 call back method

+        ///&lt;/summary&gt;

+        ///

+        public void receiveResult<xsl:value-of select="@name"/>(org.apache.axis2.client.async.AsyncResult result)

+        {

+			//Fill here with the code to handle the response

+			

+        }

+

+         ///&lt;summary&gt;

+         /// Auto generated Axis2 Error handler

+         /// &lt;/summary&gt;

+         ///

+        public void receiveError<xsl:value-of select="@name"/>(java.lang.Exception e)

+        {

+			//Fill here with the code to handle the exception

+

+        }

+     </xsl:for-each>

+

+     

+    }

+  }

+    </xsl:template>

+ </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/InterfaceImplementationTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/InterfaceImplementationTemplate.xsl
new file mode 100644
index 0000000..e2f9c38
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/InterfaceImplementationTemplate.xsl
@@ -0,0 +1,106 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:template match="/class">

+    <xsl:variable name="interfaceName"><xsl:value-of select="@interfaceName"/></xsl:variable>

+    <xsl:variable name="package"><xsl:value-of select="@package"/></xsl:variable>

+    <xsl:variable name="callbackname"><xsl:value-of select="@callbackname"/></xsl:variable>

+    <xsl:variable name="isSync"><xsl:value-of select="@isSync"/></xsl:variable>

+    <xsl:variable name="isAsync"><xsl:value-of select="@isAsync"/></xsl:variable>

+    namespace <xsl:value-of select="$package"/>{

+

+    /// &lt;summary&gt;

+    /// Auto generated C# implementation by the Axis code generator

+    /// This is meant to be used with the IKVM converted Axis libraries

+    ///&lt;/summary&gt;

+

+    public class <xsl:value-of select="@name"/> :org.apache.axis2.client.Stub,<xsl:value-of select="$interfaceName"/>{

+

+        private static org.apache.axis2.description.AxisGlobal  _axisGlobal = null;

+        private static org.apache.axis2.engine.AxisSystemImpl   _axisSystem = null;

+        private static org.apache.axis2.context.SystemContext   _systemContext = null;

+        private static org.apache.axis2.description.AxisService   _service = null;

+        private static org.apache.axis2.description.AxisOperation[] _operations = new org.apache.axis2.description.AxisOperation[<xsl:value-of select="count(method)"/>];

+

+       ///&lt;summary&gt;

+       /// static constructor

+       ///&lt; /summary &gt;

+       static <xsl:value-of select="@name"/>(){

+         _axisGlobal = new org.apache.axis2.description.AxisGlobal();

+         _axisSystem = new org.apache.axis2.engine.AxisSystemImpl(_axisGlobal);

+		 _systemContext = new org.apache.axis2.context.SystemContext(_axisSystem);

+		 _service = new org.apache.axis2.description.AxisService();

+         _service.setName(new javax.xml.namespace.QName("<xsl:value-of select="@namespace"/>", "<xsl:value-of select="@servicename"/>"));

+         org.apache.axis2.description.AxisOperation __operation;

+

+      <xsl:for-each select="method">

+          __operation = new org.apache.axis2.description.AxisOperation();

+          __operation.setName(new javax.xml.namespace.QName("<xsl:value-of select="@namespace"/>", "<xsl:value-of select="@name"/>"));

+          // more things are supposed to come here

+          _operations[<xsl:value-of select="position()-1"/>]=__operation;

+     </xsl:for-each>

+       }

+     <xsl:for-each select="method">

+         <xsl:variable name="outputtype"><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:variable>

+         <xsl:variable name="inputtype"><xsl:value-of select="input/param/@type"></xsl:value-of></xsl:variable>  <!-- this needs to change-->

+         <xsl:variable name="inputparam"><xsl:value-of select="input/param/@name"></xsl:value-of></xsl:variable>  <!-- this needs to change-->

+

+         <xsl:if test="$isSync='1'">

+        /// &lt;summary&gt;

+        /// Auto generated method signature

+        ///&lt;/summary&gt;

+        ///<xsl:if test="$inputtype!=''">&lt;param name="<xsl:value-of select="$inputparam"/>"/&gt;</xsl:if>

+        ///

+        public  <xsl:if test="$outputtype=''">void</xsl:if><xsl:if test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:if><xsl:text> </xsl:text><xsl:value-of select="@name"/>(<xsl:if test="$inputtype!=''"><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="$inputparam"></xsl:value-of></xsl:if>)

+        {

+

+		    org.apache.axis2.client.Call _call = new org.apache.axis2.client.Call(_systemContext.getServiceContext("<xsl:value-of select="generate-id()"/>"));<!-- this needs to change -->

+ 		    org.apache.axis2.context.MessageContext _messageContext = getMessageContext();

+             <xsl:if test="$outputtype=''">

+             _call.invokeBlocking(_operations[<xsl:value-of select="position()-1"/>], _messageContext);

+             return null;

+             </xsl:if>

+             <xsl:if test="$outputtype!=''">

+             Object obj = _call.invokeBlocking(_operations[<xsl:value-of select="position()-1"/>], _messageContext);

+             return (<xsl:value-of select="$outputtype"/>)obj;

+            </xsl:if>

+            <!-- this needs to be changed -->

+        }

+        </xsl:if>

+        <xsl:if test="$isAsync='1'">

+        ///&lt;summary&gt;

+        ///Auto generated method signature

+        ///&lt;/summary&gt;

+        ///<xsl:if test="$inputtype!=''">&lt;param name="<xsl:value-of select="$inputparam"/>"/&gt;</xsl:if>

+        ///

+        public void start<xsl:value-of select="@name"/>(<xsl:if test="$inputtype!=''"><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="$inputparam"></xsl:value-of></xsl:if>)

+        {

+                // we know its call because we have the mep at the time of the stub generation.

+		        org.apache.axis2.client.Call _call = new org.apache.axis2.client.Call(_systemContext.getServiceContext("<xsl:value-of select="generate-id()"/>"));<!-- this needs to change -->

+ 		        org.apache.axis2.context.MessageContext _messageContext = getMessageContext();

+		        _call.invokeNonBlocking(_operations[<xsl:value-of select="position()-1"/>], _messageContext, new CallBack<xsl:value-of select="generate-id()"/>());

+            <!-- this needs to be changed -->

+        }

+

+        ///&lt;summary&gt;

+        ///  C# does not support anoynmous inner classes

+        ///&lt;/summary&gt;

+        private class CallBack<xsl:value-of select="generate-id()"/>:org.apache.axis2.client.CallBack

+        {

+          public void onComplete(org.apache.axis2.client.async.AsyncResult result)

+           {

+                    new <xsl:value-of select="$package"/>.<xsl:value-of select="$callbackname"/>().receiveResult<xsl:value-of select="@name"/>(result);

+           }

+           public void reportError(java.lang.Exception e)

+           {

+                     new <xsl:value-of select="$package"/>.<xsl:value-of select="$callbackname"/>().receiveError<xsl:value-of select="@name"/>(e);

+           }

+

+

+

+        }

+      </xsl:if>

+     </xsl:for-each>

+    }

+    }

+    </xsl:template>

+ </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/InterfaceTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/InterfaceTemplate.xsl
new file mode 100644
index 0000000..4618077
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/InterfaceTemplate.xsl
@@ -0,0 +1,41 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:template match="/interface">

+    <xsl:variable name="isSync"><xsl:value-of select="@isSync"/></xsl:variable>

+    <xsl:variable name="isAsync"><xsl:value-of select="@isAsync"/></xsl:variable>    

+    namespace <xsl:value-of select="@package"/>

+    {

+

+    /// &lt;summary&gt;

+    /// Auto generated C# interface by the Axis code generator

+    /// This is meant to be used with the IKVM converted Axis libraries

+    /// &lt;/summary&gt;

+

+    public interface <xsl:value-of select="@name"></xsl:value-of>

+    {

+

+     <xsl:for-each select="method">

+         <xsl:variable name="outputtype"><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:variable>

+         <xsl:variable name="inputtype"><xsl:value-of select="input/param/@type"></xsl:value-of></xsl:variable>  <!-- this needs to change-->

+         <xsl:variable name="inputparam"><xsl:value-of select="input/param/@name"></xsl:value-of></xsl:variable>  <!-- this needs to change-->

+         <xsl:if test="$isSync='1'">

+        /// &lt;summary&gt;

+        ///  Auto generated interface method

+        /// &lt;/summary&gt;

+         public  <xsl:if test="$outputtype=''">void</xsl:if><xsl:if test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:if><xsl:text> </xsl:text><xsl:value-of select="@name"/>(<xsl:if test="$inputtype!=''"><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="$inputparam"></xsl:value-of></xsl:if>);

+         </xsl:if>

+

+         <xsl:if test="$isAsync='1'">

+        ///&lt;summary&gt;

+        ///Auto generated interface method

+        ///&lt;/summary&gt;

+        ///<xsl:if test="$inputtype!=''">&lt;param  name="<xsl:value-of select="$inputparam"/>"/&gt;</xsl:if>

+        ///

+        public void start<xsl:value-of select="@name"/>(<xsl:if test="$inputtype!=''"><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="$inputparam"></xsl:value-of></xsl:if>) ;

+        </xsl:if>

+

+     </xsl:for-each>

+    }

+   }

+    </xsl:template>

+ </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/package.html b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/package.html
new file mode 100644
index 0000000..8d0cfc4
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/csharp/package.html
@@ -0,0 +1,5 @@
+<html>

+<body>

+This package is a "non class containing" one that has the xsl templates for the C# class generation

+</body>

+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/ServiceXMLTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/ServiceXMLTemplate.xsl
new file mode 100644
index 0000000..c57f0f1
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/ServiceXMLTemplate.xsl
@@ -0,0 +1,67 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

+

+    <xsl:template match="/">

+        <xsl:comment> This file was auto-generated from WSDL </xsl:comment>

+        <xsl:comment> by the Apache Axis2 version: #axisVersion# #today# </xsl:comment>

+        <serviceGroup>

+            <xsl:apply-templates/>

+        </serviceGroup>

+    </xsl:template>

+

+    <xsl:template match="interface">

+        <xsl:variable name="package"><xsl:value-of select="@classpackage"/></xsl:variable>

+

+        <service>

+            <xsl:attribute name="name"><xsl:value-of select="@servicename"/></xsl:attribute>

+            <messageReceivers>

+                <xsl:for-each select="messagereceiver">

+                    <xsl:if test=".">

+                        <messageReceiver>

+                            <xsl:attribute name="mep"><xsl:value-of select="@mepURI"/></xsl:attribute>

+                            <xsl:choose>

+                                <xsl:when test="$package=''">

+                                    <xsl:attribute name="class"><xsl:value-of select="."/></xsl:attribute>

+                                </xsl:when>

+                                <xsl:otherwise>

+                                    <xsl:attribute name="class"><xsl:value-of select="$package"/>.<xsl:value-of select="."/></xsl:attribute>

+                                </xsl:otherwise>

+                            </xsl:choose>

+                        </messageReceiver>

+                    </xsl:if>

+                </xsl:for-each>

+             </messageReceivers>

+

+            <parameter name="ServiceClass" locked="false">

+                <xsl:choose>

+                    <xsl:when test="$package=''">

+                        <xsl:value-of select="@name"/>

+                    </xsl:when>

+                    <xsl:otherwise>

+                        <xsl:value-of select="$package"/>.<xsl:value-of select="@name"/>

+                    </xsl:otherwise>

+                </xsl:choose>

+            </parameter>

+			<xsl:for-each select="method">

+				<operation>

+					<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>

+					<xsl:attribute name="mep"><xsl:value-of select="@mepURI"/></xsl:attribute>

+					<actionMapping>

+						<xsl:value-of select="@soapaction"/>

+					</actionMapping>

+					<xsl:for-each select="outputActionMapping">

+					<outputActionMapping>

+						<xsl:value-of select="@Action"/>

+					</outputActionMapping>

+					</xsl:for-each>

+					<xsl:for-each select="faultActionMapping">

+					<faultActionMapping>

+						<xsl:attribute name="faultName"><xsl:value-of select="@faultName"/></xsl:attribute>

+						<xsl:value-of select="@Action"/>

+					</faultActionMapping>

+					</xsl:for-each>

+				</operation>

+			</xsl:for-each>

+        </service>

+    </xsl:template>

+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/adbAntBuildTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/adbAntBuildTemplate.xsl
new file mode 100644
index 0000000..9fcfda9
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/adbAntBuildTemplate.xsl
@@ -0,0 +1,247 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

+    <xsl:template match="/ant">

+        <xsl:variable name="package" select="@package"/>

+        <xsl:variable name="src" select="@src"/>

+        <xsl:variable name="resource" select="@resource"/>

+

+        <project basedir=".">

+            <xsl:choose>

+                <xsl:when test="@isserverside">

+                   <xsl:attribute name="default">jar.server</xsl:attribute>

+                </xsl:when>

+                <xsl:otherwise>

+                    <xsl:attribute name="default">jar.client</xsl:attribute> 

+                </xsl:otherwise>

+            </xsl:choose>

+

+            <xsl:comment>Auto generated ant build file</xsl:comment>

+            <property environment="env"/>

+            <property name="axis2.home">

+                <xsl:attribute name="value">${env.AXIS2_HOME}</xsl:attribute>

+            </property>

+            <property name="project.base.dir">

+                <xsl:attribute name="value">.</xsl:attribute>

+            </property>

+            <property name="maven.class.path">

+                <xsl:attribute name="value"></xsl:attribute>

+            </property>

+            <property name="name">

+                <xsl:attribute name="value"><xsl:value-of select="@servicename"/></xsl:attribute>

+            </property>

+            <property name="src">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$src"/></xsl:attribute>

+            </property>

+            <property name="test">

+                <xsl:attribute name="value">${project.base.dir}/test</xsl:attribute>

+            </property>

+            <property name="build">

+                <xsl:attribute name="value">${project.base.dir}/build</xsl:attribute>

+            </property>

+            <property name="classes">

+                <xsl:attribute name="value">${build}/classes</xsl:attribute>

+            </property>

+            <property name="lib">

+                <xsl:attribute name="value">${build}/lib</xsl:attribute>

+            </property>

+            <property name="resources">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$resource"/></xsl:attribute>

+            </property>

+

+            <property name="jars.ok" value=""></property>

+

+            <path id="axis2.class.path">

+                <pathelement>

+                    <xsl:attribute name="path">${java.class.path}</xsl:attribute>

+                </pathelement>

+                <pathelement>

+                    <xsl:attribute name="path">${maven.class.path}</xsl:attribute>

+                </pathelement>

+                <fileset>

+                    <xsl:attribute name="dir">${axis2.home}</xsl:attribute>

+                    <include>

+                        <xsl:attribute name="name">lib/*.jar</xsl:attribute>

+                    </include>

+                </fileset>

+            </path>

+

+            <target name="init">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${classes}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${lib}</xsl:attribute>

+                </mkdir>

+                <xsl:if test="not(@testOmit)">

+                    <mkdir>

+                        <xsl:attribute name="dir">${test}</xsl:attribute>

+                    </mkdir>

+                </xsl:if>

+            </target>

+

+            <target name="pre.compile.test" depends="init">

+                <xsl:comment>Test the classpath for the availability of necesary classes</xsl:comment>

+

+                <available classname="javax.xml.stream.XMLStreamReader" property="stax.available" classpathref="axis2.class.path"/>

+                <available classname="org.apache.axis2.engine.AxisEngine" property="axis2.available" classpathref="axis2.class.path"/>

+                <condition property="jars.ok">

+                    <and>

+                        <isset property="stax.available"/>

+                        <isset property="axis2.available"/>

+                    </and>

+                </condition>

+

+                <xsl:comment>Print out the availabilities</xsl:comment>

+                <echo>

+                    <xsl:attribute name="message">Stax Availability= ${stax.available}</xsl:attribute>

+                </echo>

+                <echo>

+                    <xsl:attribute name="message">Axis2 Availability= ${axis2.available}</xsl:attribute>

+                </echo>

+

+            </target>

+

+            <target name="compile.src" depends="pre.compile.test">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <xsl:attribute name="srcdir">${src}</xsl:attribute>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+            <target name="compile.test" depends="compile.src">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <src>

+                        <xsl:attribute name="path">${test}</xsl:attribute>

+                    </src>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+            <target name="echo.classpath.problem" depends="pre.compile.test">

+                <xsl:attribute name="unless">jars.ok</xsl:attribute>

+                <echo message="The class path is not set right!

+                               Please make sure the following classes are in the classpath

+                               1. XmlBeans

+                               2. Stax

+                               3. Axis2

+                "></echo>

+            </target>

+            <target name="jar.all" depends="jar.server, jar.client">

+            </target>

+            <target name="jar.server" depends="compile.src,echo.classpath.problem">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <copy>

+                    <xsl:attribute name="toDir">${classes}/META-INF</xsl:attribute>

+                    <xsl:attribute name="failonerror">false</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${resources}</xsl:attribute>

+                        <include><xsl:attribute name="name">*.xml</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.wsdl</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.xsd</xsl:attribute></include>

+                    </fileset>

+                </copy>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}.aar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="excludes">**/Test.class</xsl:attribute>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                    </fileset>

+                </jar>

+            </target>

+

+            <!-- select between the -->

+

+            <target name="jar.client" if="jars.ok">

+                 <!--set the correct depends target-->

+                <xsl:choose>

+                    <xsl:when test="@testOmit">

+                        <xsl:attribute name="depends">compile.src</xsl:attribute>

+                    </xsl:when>

+                    <xsl:otherwise>

+                        <xsl:attribute name="depends">compile.test</xsl:attribute>

+                    </xsl:otherwise>

+                </xsl:choose>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}-test-client.jar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                        <exclude><xsl:attribute name="name">**/META-INF/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/lib/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*MessageReceiver.class</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*Skeleton.class</xsl:attribute></exclude>

+                    </fileset>

+                </jar>

+            </target>

+

+

+

+

+            <target depends="jar.server" name="make.repo" if="jars.ok">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/services</xsl:attribute>

+                </mkdir>

+                <copy>

+                    <xsl:attribute name="file">${build}/lib/${name}.aar</xsl:attribute>

+                    <xsl:attribute name="toDir">${build}/repo/services/</xsl:attribute>

+                </copy>

+            </target>

+            <target depends="make.repo" name="start.server" if="jars.ok">

+                <java classname="org.apache.axis2.transport.http.SimpleHTTPServer" fork="true">

+                    <arg>

+                        <xsl:attribute name="value">${build}/repo</xsl:attribute>

+                    </arg>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </java>

+            </target>

+            <target if="jars.ok" name="run.test" depends="compile.test">

+                <path id="test.class.path">

+                    <pathelement>

+                        <xsl:attribute name="location">${lib}/${name}-test-client.jar</xsl:attribute>

+                    </pathelement>

+                    <path>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </path>

+                </path>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/test-reports/</xsl:attribute>

+                </mkdir>

+                <junit printsummary="yes" haltonfailure="yes">

+                    <classpath>

+                        <xsl:attribute name="refid">test.class.path</xsl:attribute>

+                    </classpath>

+                    <formatter type="plain"/>

+                    <batchtest fork="yes">

+                        <xsl:attribute name="toDir">${build}/test-reports/</xsl:attribute>

+                        <fileset>

+                            <xsl:attribute name="dir">${test}</xsl:attribute>

+                            <include>

+                                <xsl:attribute name="name">**/*Test*.java</xsl:attribute>

+                            </include>

+                        </fileset>

+                    </batchtest>

+                </junit>

+            </target>

+            <target name="clean">

+                <delete>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </delete>

+            </target>

+        </project>

+    </xsl:template>

+</xsl:stylesheet>

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/defaultAntBuildTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/defaultAntBuildTemplate.xsl
new file mode 100644
index 0000000..64b5c13
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/defaultAntBuildTemplate.xsl
@@ -0,0 +1,195 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

+    <xsl:template match="/ant">

+        <xsl:variable name="package" select="@package"/>

+        <xsl:variable name="src" select="@src"/>

+        <xsl:variable name="resource" select="@resource"/>

+

+        <project basedir=".">

+             <xsl:choose>

+                <xsl:when test="@isserverside">

+                   <xsl:attribute name="default">jar.server</xsl:attribute>

+                </xsl:when>

+                <xsl:otherwise>

+                    <xsl:attribute name="default">jar.client</xsl:attribute>

+                </xsl:otherwise>

+            </xsl:choose>

+

+            <xsl:comment>Auto generated ant build file</xsl:comment>

+            <property name="project.base.dir">

+                <xsl:attribute name="value">.</xsl:attribute>

+            </property>

+            <property name="src">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$src"/></xsl:attribute>

+            </property>

+            <property name="test">

+                <xsl:attribute name="value">${project.base.dir}/test</xsl:attribute>

+            </property>

+            <property name="build">

+                <xsl:attribute name="value">${project.base.dir}/build</xsl:attribute>

+            </property>

+            <property name="classes">

+                <xsl:attribute name="value">${build}/classes</xsl:attribute>

+            </property>

+            <property name="lib">

+                <xsl:attribute name="value">${build}/lib</xsl:attribute>

+            </property>

+             <property name="resources">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$resource"/></xsl:attribute>

+            </property>

+            <property name="name">

+                <xsl:attribute name="value"><xsl:value-of select="@servicename"/></xsl:attribute>

+            </property>

+

+            <property name="jars.ok" value=""></property>

+

+            <path id="axis2.class.path">

+                <pathelement>

+                    <xsl:attribute name="path">${java.class.path}</xsl:attribute>

+                </pathelement>

+                <pathelement>

+                    <xsl:attribute name="path">${maven.class.path}</xsl:attribute>

+                </pathelement>

+                <fileset>

+                    <xsl:attribute name="dir">${axis2.home}</xsl:attribute>

+                    <include>

+                        <xsl:attribute name="name">lib/*.jar</xsl:attribute>

+                    </include>

+                </fileset>

+            </path>

+

+            <target name="init">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${classes}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${lib}</xsl:attribute>

+                </mkdir>

+                <xsl:if test="not(@testOmit)">

+                    <mkdir>

+                        <xsl:attribute name="dir">${test}</xsl:attribute>

+                    </mkdir>

+                </xsl:if>

+            </target>

+

+            <target name="pre.compile.test" depends="init">

+                <xsl:comment>Test the classpath for the availability of necesary classes</xsl:comment>

+

+                <available classname="javax.xml.stream.XMLStreamReader" property="stax.available"/>

+                <available classname="org.apache.axis2.engine.AxisEngine" property="axis2.available"/>

+                <condition property="jars.ok" >

+                    <and>

+                        <isset property="stax.available"/>

+                        <isset property="axis2.available"/>

+                    </and>

+                </condition>

+

+                <xsl:comment>Print out the availabilities</xsl:comment>

+                <echo>

+                    <xsl:attribute name="message">Stax Availability= ${stax.available}</xsl:attribute>

+                </echo>

+                <echo>

+                    <xsl:attribute name="message">Axis2 Availability= ${axis2.available}</xsl:attribute>

+                </echo>

+

+            </target>

+

+            <target name="compile.src" depends="echo.classpath.problem">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <xsl:attribute name="srcdir">${src}</xsl:attribute>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+            <target name="compile.test" depends="compile.src">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <xsl:attribute name="srcdir">${test}</xsl:attribute>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+            <target name="echo.classpath.problem" depends="pre.compile.test">

+                <xsl:attribute name="unless">jars.ok</xsl:attribute>

+                <echo message="The class path is not set right!

+                               Please make sure the following classes are in the classpath

+                               1. Stax

+                               2. Axis2

+                "></echo>

+            </target>

+

+

+            <target name="jar.client"  if="jars.ok">

+                 <xsl:choose>

+                    <xsl:when test="@testOmit">

+                        <xsl:attribute name="depends">compile.src</xsl:attribute>

+                    </xsl:when>

+                    <xsl:otherwise>

+                        <xsl:attribute name="depends">compile.test</xsl:attribute>

+                    </xsl:otherwise>

+                </xsl:choose>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}-client.jar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                        <exclude>

+                            <xsl:attribute name="name">**/META-INF/*.*</xsl:attribute>

+                        </exclude>

+                        <exclude>

+                            <xsl:attribute name="name">**/lib/*.*</xsl:attribute>

+                        </exclude>

+                        <exclude>

+                            <xsl:attribute name="name">**/*MessageReceiver.class</xsl:attribute>

+                        </exclude>

+                        <exclude>

+                            <xsl:attribute name="name">**/*Skeleton.class</xsl:attribute>

+                        </exclude>

+                    </fileset>

+                </jar>

+            </target>

+

+

+

+

+

+            <target name="jar.server" depends="compile.src,echo.classpath.problem">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <copy>

+                    <xsl:attribute name="toDir">${classes}/META-INF</xsl:attribute>

+                    <xsl:attribute name="failonerror">false</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${resources}</xsl:attribute>

+                        <include>

+                            <xsl:attribute name="name">*.xml</xsl:attribute>

+                        </include>

+                        <include>

+                            <xsl:attribute name="name">*.wsdl</xsl:attribute>

+                        </include>

+                        <include>

+                            <xsl:attribute name="name">*.xsd</xsl:attribute>

+                        </include>

+                    </fileset>

+                </copy>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}.aar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="excludes">**/Test.class</xsl:attribute>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                    </fileset>

+                </jar>

+            </target>

+

+            <target name="jar.all" depends="jar.server,jar.client"/>

+        </project>

+    </xsl:template>

+</xsl:stylesheet>

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jaxbriAntBuildTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jaxbriAntBuildTemplate.xsl
new file mode 100644
index 0000000..ddd4c68
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jaxbriAntBuildTemplate.xsl
@@ -0,0 +1,264 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

+    <xsl:template match="/ant">

+        <xsl:variable name="package" select="@package"/>

+        <xsl:variable name="src" select="@src"/>

+        <xsl:variable name="resource" select="@resource"/>

+

+        <project basedir=".">

+             <xsl:choose>

+                <xsl:when test="@isserverside">

+                   <xsl:attribute name="default">jar.server</xsl:attribute>

+                </xsl:when>

+                <xsl:otherwise>

+                    <xsl:attribute name="default">jar.client</xsl:attribute>

+                </xsl:otherwise>

+            </xsl:choose>

+            <xsl:comment>Auto generated ant build file</xsl:comment>

+            <property environment="env"/>

+            <property name="axis2.home">

+                <xsl:attribute name="value">${env.AXIS2_HOME}</xsl:attribute>

+            </property>

+            <property name="project.base.dir">

+                <xsl:attribute name="value">.</xsl:attribute>

+            </property>

+            <property name="maven.class.path">

+                <xsl:attribute name="value"></xsl:attribute>

+            </property>

+            <property name="name">

+                <xsl:attribute name="value"><xsl:value-of select="@servicename"/></xsl:attribute>

+            </property>

+             <property name="src">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$src"/></xsl:attribute>

+            </property>

+            <property name="test">

+                <xsl:attribute name="value">${project.base.dir}/test</xsl:attribute>

+            </property>

+            <property name="build">

+                <xsl:attribute name="value">${project.base.dir}/build</xsl:attribute>

+            </property>

+            <property name="classes">

+                <xsl:attribute name="value">${build}/classes</xsl:attribute>

+            </property>

+            <property name="lib">

+                <xsl:attribute name="value">${build}/lib</xsl:attribute>

+            </property>

+            <property name="resources">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$resource"/></xsl:attribute>

+            </property>

+

+            <property name="xbeans.packaged.jar.name" value="XBeans-packaged.jar"></property>

+

+            <property name="jars.ok" value=""></property>

+

+            <path id="axis2.class.path">

+                <pathelement>

+                    <xsl:attribute name="path">${java.class.path}</xsl:attribute>

+                </pathelement>

+                <pathelement>

+                    <xsl:attribute name="path">${maven.class.path}</xsl:attribute>

+                </pathelement>

+                <fileset>

+                    <xsl:attribute name="dir">${axis2.home}</xsl:attribute>

+                    <include>

+                        <xsl:attribute name="name">lib/*.jar</xsl:attribute>

+                    </include>

+                </fileset>

+            </path>

+

+            <target name="init">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${classes}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${lib}</xsl:attribute>

+                </mkdir>

+                <xsl:if test="not(@testOmit)">

+                    <mkdir>

+                        <xsl:attribute name="dir">${test}</xsl:attribute>

+                    </mkdir>

+                </xsl:if>

+

+            </target>

+

+            <target name="pre.compile.test" depends="init">

+                <xsl:comment>Test the classpath for the availability of necesary classes</xsl:comment>

+                <available classname="com.sun.tools.xjc.api.XJC" property="jaxbri.available" classpathref="axis2.class.path"/>

+                <available classname="javax.xml.stream.XMLStreamReader" property="stax.available" classpathref="axis2.class.path"/>

+                <available classname="org.apache.axis2.engine.AxisEngine" property="axis2.available" classpathref="axis2.class.path"/>

+                <condition property="jars.ok" >

+                    <and>

+                        <isset property="jaxbri.available"/>

+                        <isset property="stax.available"/>

+                        <isset property="axis2.available"/>

+                    </and>

+                </condition>

+

+                <xsl:comment>Print out the availabilities</xsl:comment>

+                <echo>

+                    <xsl:attribute name="message">JAX-B RI Availability = ${jaxbri.available}</xsl:attribute>

+                </echo>

+                <echo>

+                    <xsl:attribute name="message">Stax Availability= ${stax.available}</xsl:attribute>

+                </echo>

+                <echo>

+                    <xsl:attribute name="message">Axis2 Availability= ${axis2.available}</xsl:attribute>

+                </echo>

+

+            </target>

+

+            <target name="compile.src" depends="pre.compile.test" >

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <xsl:attribute name="srcdir">${src}</xsl:attribute>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+

+            <target name="compile.test" depends="compile.src">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+

+                    <src>

+                        <xsl:attribute name="path">${test}</xsl:attribute>

+                    </src>

+

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+

+                    <!-- todo -->

+

+                </javac>

+            </target>

+

+            <target name="echo.classpath.problem" depends="pre.compile.test">

+                <xsl:attribute name="unless">jars.ok</xsl:attribute>

+                <echo message="The class path is not set right!

+                               Please make sure the following classes are in the classpath

+                               1. XmlBeans

+                               2. Stax

+                               3. Axis2

+                "></echo>

+            </target>

+            <target name="jar.all" depends="jar.server, jar.client">

+            </target>

+            <target name="jar.server" depends="compile.src,echo.classpath.problem">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <copy>

+                    <xsl:attribute name="toDir">${classes}/META-INF</xsl:attribute>

+                    <xsl:attribute name="failonerror">false</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${resources}</xsl:attribute>

+                        <include><xsl:attribute name="name">*.xml</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.wsdl</xsl:attribute></include>

+                        <exclude><xsl:attribute name="name">**/schemaorg_apache_xmlbean/**</xsl:attribute></exclude>

+                    </fileset>

+                </copy>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}.aar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="excludes">**/Test.class</xsl:attribute>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                    </fileset>

+                </jar>

+            </target>

+

+

+

+            <target  name="jar.client" if="jars.ok">

+                <!--set the correct depends target-->

+                <xsl:choose>

+                    <xsl:when test="@testOmit">

+                        <xsl:attribute name="depends">compile.src</xsl:attribute>

+                    </xsl:when>

+                    <xsl:otherwise>

+                        <xsl:attribute name="depends">compile.test</xsl:attribute>

+                    </xsl:otherwise>

+                </xsl:choose>

+

+

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}-test-client.jar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                        <exclude><xsl:attribute name="name">**/META-INF/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/lib/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*MessageReceiver.class</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*Skeleton.class</xsl:attribute></exclude>

+

+                    </fileset>

+                </jar>

+            </target>

+

+

+

+

+

+

+            <target depends="jar.server" name="make.repo" if="jars.ok">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/services</xsl:attribute>

+                </mkdir>

+                <copy>

+                    <xsl:attribute name="file">${build}/lib/${name}.aar</xsl:attribute>

+                    <xsl:attribute name="toDir">${build}/repo/services/</xsl:attribute>

+                </copy>

+            </target>

+            <target depends="make.repo" name="start.server" if="jars.ok">

+                <java classname="org.apache.axis2.transport.http.SimpleHTTPServer" fork="true">

+                    <arg>

+                        <xsl:attribute name="value">${build}/repo</xsl:attribute>

+                    </arg>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </java>

+            </target>

+            <target if="jars.ok" name="run.test" depends="jar.client">

+                <path id="test.class.path">

+                    <pathelement>

+                        <xsl:attribute name="location">${lib}/${name}-test-client.jar</xsl:attribute>

+                    </pathelement>

+                    <path>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </path>

+                </path>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/test-reports/</xsl:attribute>

+                </mkdir>

+                <junit printsummary="yes" haltonfailure="yes">

+                    <classpath>

+                        <xsl:attribute name="refid">test.class.path</xsl:attribute>

+                    </classpath>

+                    <formatter type="plain"/>

+                    <batchtest fork="yes">

+                        <xsl:attribute name="toDir">${build}/test-reports/</xsl:attribute>

+                        <fileset>

+                            <xsl:attribute name="dir">${test}</xsl:attribute>

+                            <include>

+                                <xsl:attribute name="name">**/*Test*.java</xsl:attribute>

+                            </include>

+                        </fileset>

+                    </batchtest>

+                </junit>

+            </target>

+            <target name="clean">

+                <delete>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </delete>

+            </target>

+        </project>

+    </xsl:template>

+</xsl:stylesheet>

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jaxmeAntBuildTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jaxmeAntBuildTemplate.xsl
new file mode 100644
index 0000000..c5190ea
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jaxmeAntBuildTemplate.xsl
@@ -0,0 +1,259 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

+    <xsl:template match="/ant">

+        <xsl:variable name="package" select="@package"/>

+        <xsl:variable name="src" select="@src"/>

+        <xsl:variable name="resource" select="@resource"/>

+

+        <project basedir=".">

+             <xsl:choose>

+                <xsl:when test="@isserverside">

+                   <xsl:attribute name="default">jar.server</xsl:attribute>

+                </xsl:when>

+                <xsl:otherwise>

+                    <xsl:attribute name="default">jar.client</xsl:attribute>

+                </xsl:otherwise>

+            </xsl:choose>

+            

+            <xsl:comment>Auto generated ant build file</xsl:comment>

+            <property environment="env"/>

+            <property name="axis2.home">

+                <xsl:attribute name="value">${env.AXIS2_HOME}</xsl:attribute>

+            </property>

+            <property name="project.base.dir">

+                <xsl:attribute name="value">.</xsl:attribute>

+            </property>

+            <property name="maven.class.path">

+                <xsl:attribute name="value"></xsl:attribute>

+            </property>

+            <property name="name">

+                <xsl:attribute name="value"><xsl:value-of select="@servicename"/></xsl:attribute>

+            </property>

+             <property name="src">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$src"/></xsl:attribute>

+            </property>

+            <property name="test">

+                <xsl:attribute name="value">${project.base.dir}/test</xsl:attribute>

+            </property>

+            <property name="build">

+                <xsl:attribute name="value">${project.base.dir}/build</xsl:attribute>

+            </property>

+            <property name="classes">

+                <xsl:attribute name="value">${build}/classes</xsl:attribute>

+            </property>

+            <property name="lib">

+                <xsl:attribute name="value">${build}/lib</xsl:attribute>

+            </property>

+           <property name="resources">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$resource"/></xsl:attribute>

+            </property>

+            <property name="xbeans.packaged.jar.name" value="XBeans-packaged.jar"></property>

+

+            <property name="jars.ok" value=""></property>

+

+            <path id="axis2.class.path">

+                <pathelement>

+                    <xsl:attribute name="path">${java.class.path}</xsl:attribute>

+                </pathelement>

+                <pathelement>

+                    <xsl:attribute name="path">${maven.class.path}</xsl:attribute>

+                </pathelement>

+                <fileset>

+                    <xsl:attribute name="dir">${axis2.home}</xsl:attribute>

+                    <include>

+                        <xsl:attribute name="name">lib/*.jar</xsl:attribute>

+                    </include>

+                </fileset>

+            </path>

+            

+            <target name="init">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${classes}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${lib}</xsl:attribute>

+                </mkdir>

+            </target>

+

+            <target name="jar.xbeans">

+                <!-- jar the  XMLbeans stuff to the lib folder-->

+                <jar>

+                    <xsl:attribute name="basedir">${resources}</xsl:attribute>

+                    <xsl:attribute name="destfile">${lib}/${xbeans.packaged.jar.name}</xsl:attribute>

+                    <xsl:attribute name="excludes">**/services.xml, **/*.xsd</xsl:attribute>

+                </jar>

+            </target>

+

+            <target name="pre.compile.test" depends="init, jar.xbeans">

+                <xsl:comment>Test the classpath for the availability of necesary classes</xsl:comment>

+                <available classname="org.apache.xmlbeans.XmlObject" property="xbeans.available" classpathref="axis2.class.path"/>

+                <available classname="javax.xml.stream.XMLStreamReader" property="stax.available" classpathref="axis2.class.path"/>

+                <available classname="org.apache.axis2.engine.AxisEngine" property="axis2.available" classpathref="axis2.class.path"/>

+                <condition property="jars.ok" >

+                    <and>

+                        <isset property="xbeans.available"/>

+                        <isset property="stax.available"/>

+                        <isset property="axis2.available"/>

+                    </and>

+                </condition>

+

+                <xsl:comment>Print out the availabilities</xsl:comment>

+                <echo>

+                     <xsl:attribute name="message">XmlBeans Availability = ${xbeans.available}</xsl:attribute>

+                </echo>

+                <echo>

+                     <xsl:attribute name="message">Stax Availability= ${stax.available}</xsl:attribute>

+                </echo>

+                <echo>

+                     <xsl:attribute name="message">Axis2 Availability= ${axis2.available}</xsl:attribute>

+                </echo>

+

+            </target>

+

+            <target name="compile.all" depends="pre.compile.test">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <xsl:attribute name="srcdir">${src}</xsl:attribute>

+                    <classpath>

+                        <xsl:attribute name="location">${lib}/${xbeans.packaged.jar.name}</xsl:attribute>

+                    </classpath>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+            <target name="compile.test" depends="pre.compile.test">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <src>

+                        <xsl:attribute name="path">${src}</xsl:attribute>

+                    </src>

+                    <src>

+                        <xsl:attribute name="path">${test}</xsl:attribute>

+                    </src>

+                    <classpath>

+                        <xsl:attribute name="location">${lib}/${xbeans.packaged.jar.name}</xsl:attribute>

+                    </classpath>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+            <target name="echo.classpath.problem" depends="pre.compile.test">

+                <xsl:attribute name="unless">jars.ok</xsl:attribute>

+                <echo message="The class path is not set right!

+                               Please make sure the following classes are in the classpath

+                               1. XmlBeans

+                               2. Stax

+                               3. Axis2

+                "></echo>

+            </target>

+            <target name="jar.all" depends="jar.server, jar.client">

+            </target>

+            <target name="jar.server" depends="compile.all,echo.classpath.problem">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <copy>

+                    <xsl:attribute name="toDir">${classes}/META-INF</xsl:attribute>

+                    <xsl:attribute name="failonerror">false</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${resources}</xsl:attribute>

+                        <include><xsl:attribute name="name">*.xml</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.wsdl</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.xsd</xsl:attribute></include>

+                        <exclude><xsl:attribute name="name">**/schemaorg_apache_xmlbean/**</xsl:attribute></exclude>

+                    </fileset>

+                </copy>

+                <copy>

+                    <xsl:attribute name="file">${lib}/${xbeans.packaged.jar.name}</xsl:attribute>

+                    <xsl:attribute name="toDir">${classes}/lib</xsl:attribute>

+                </copy>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}.aar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="excludes">**/Test.class</xsl:attribute>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                    </fileset>

+                </jar>

+            </target>

+            <target depends="compile.test" name="jar.client" if="jars.ok">

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}-test-client.jar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                        <exclude><xsl:attribute name="name">**/META-INF/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/lib/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*MessageReceiver.class</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*Skeleton.class</xsl:attribute></exclude>

+                    </fileset>

+                    <fileset>

+                        <xsl:attribute name="dir">${resources}</xsl:attribute>

+                        <exclude><xsl:attribute name="name">**/*.wsdl</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*.xsd</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*.xml</xsl:attribute></exclude>

+                    </fileset>

+                </jar>

+            </target>

+            <target depends="jar.server" name="make.repo" if="jars.ok">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/services</xsl:attribute>

+                </mkdir>

+                <copy>

+                    <xsl:attribute name="file">${build}/lib/${name}.aar</xsl:attribute>

+                    <xsl:attribute name="toDir">${build}/repo/services/</xsl:attribute>

+                </copy>

+            </target>

+            <target depends="make.repo" name="start.server" if="jars.ok">

+                <java classname="org.apache.axis2.transport.http.SimpleHTTPServer" fork="true">

+                    <arg>

+                        <xsl:attribute name="value">${build}/repo</xsl:attribute>

+                    </arg>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </java>

+            </target>

+            <target if="jars.ok" name="run.test" depends="jar.client">

+                <path id="test.class.path">

+                    <pathelement>

+                        <xsl:attribute name="location">${lib}/${name}-test-client.jar</xsl:attribute>

+                    </pathelement>

+                    <path>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </path>

+                </path>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/test-reports/</xsl:attribute>

+                </mkdir>

+                <junit printsummary="yes" haltonfailure="yes">

+                    <classpath>

+                        <xsl:attribute name="refid">test.class.path</xsl:attribute>

+                    </classpath>

+                    <formatter type="plain"/>

+                    <batchtest fork="yes">

+                        <xsl:attribute name="toDir">${build}/test-reports/</xsl:attribute>

+                        <fileset>

+                            <xsl:attribute name="dir">${test}</xsl:attribute>

+                            <include>

+                                <xsl:attribute name="name">**/*Test*.java</xsl:attribute>

+                            </include>

+                        </fileset>

+                    </batchtest>			

+                </junit>

+            </target>

+            <target name="clean">

+              <delete>

+                <xsl:attribute name="dir">${build}</xsl:attribute>

+              </delete>

+            </target>

+        </project>

+    </xsl:template>

+</xsl:stylesheet>

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jibxAntBuildTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jibxAntBuildTemplate.xsl
new file mode 100644
index 0000000..36cdb97
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/jibxAntBuildTemplate.xsl
@@ -0,0 +1,252 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

+    <xsl:template match="/ant">

+        <xsl:variable name="package" select="@package"/>

+        <xsl:variable name="src" select="@src"/>

+        <xsl:variable name="resource" select="@resource"/>

+

+        <project basedir=".">

+             <xsl:choose>

+                <xsl:when test="@isserverside">

+                   <xsl:attribute name="default">jar.server</xsl:attribute>

+                </xsl:when>

+                <xsl:otherwise>

+                    <xsl:attribute name="default">jar.client</xsl:attribute>

+                </xsl:otherwise>

+            </xsl:choose>

+            

+            <xsl:comment>Auto generated ant build file</xsl:comment>

+            <property environment="env"/>

+            <property name="axis2.home">

+                <xsl:attribute name="value">${env.AXIS2_HOME}</xsl:attribute>

+            </property>

+            <property name="project.base.dir">

+                <xsl:attribute name="value">.</xsl:attribute>

+            </property>

+            <property name="maven.class.path">

+                <xsl:attribute name="value"></xsl:attribute>

+            </property>

+            <property name="name">

+                <xsl:attribute name="value"><xsl:value-of select="@servicename"/></xsl:attribute>

+            </property>

+            <property name="src">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$src"/></xsl:attribute>

+            </property>

+            <property name="test">

+                <xsl:attribute name="value">${project.base.dir}/test</xsl:attribute>

+            </property>

+            <property name="build">

+                <xsl:attribute name="value">${project.base.dir}/build</xsl:attribute>

+            </property>

+            <property name="classes">

+                <xsl:attribute name="value">${build}/classes</xsl:attribute>

+            </property>

+            <property name="lib">

+                <xsl:attribute name="value">${build}/lib</xsl:attribute>

+            </property>

+            <property name="resources">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$resource"/></xsl:attribute>

+            </property>

+

+            <property name="jars.ok" value=""></property>

+

+            <path id="axis2.class.path">

+                <pathelement>

+                    <xsl:attribute name="path">${java.class.path}</xsl:attribute>

+                </pathelement>

+                <pathelement>

+                    <xsl:attribute name="path">${maven.class.path}</xsl:attribute>

+                </pathelement>

+                <fileset>

+                    <xsl:attribute name="dir">${axis2.home}</xsl:attribute>

+                    <include>

+                        <xsl:attribute name="name">lib/*.jar</xsl:attribute>

+                    </include>

+                </fileset>

+            </path>

+

+            <target name="init">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${classes}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${lib}</xsl:attribute>

+                </mkdir>

+                <xsl:if test="not(@testOmit)">

+                    <mkdir>

+                        <xsl:attribute name="dir">${test}</xsl:attribute>

+                    </mkdir>

+                </xsl:if>

+            </target>

+

+            <target name="pre.compile.test" depends="init">

+                <xsl:comment>Test the classpath for the availability of necesary classes</xsl:comment>

+

+                <available classname="javax.xml.stream.XMLStreamReader" property="stax.available" classpathref="axis2.class.path"/>

+                <available classname="org.apache.axis2.engine.AxisEngine" property="axis2.available" classpathref="axis2.class.path"/>

+                <available classname="org.jibx.runtime.BindingDirectory" property="jibx.available" classpathref="axis2.class.path"/>

+                <condition property="jars.ok">

+                    <and>

+                        <isset property="stax.available"/>

+                        <isset property="axis2.available"/>

+                        <isset property="jibx.available"/>

+                    </and>

+                </condition>

+

+                <xsl:comment>Print out the availabilities</xsl:comment>

+                <echo>

+                    <xsl:attribute name="message">Stax Availability= ${stax.available}</xsl:attribute>

+                </echo>

+                <echo>

+                    <xsl:attribute name="message">Axis2 Availability= ${axis2.available}</xsl:attribute>

+                </echo>

+                <echo>

+                    <xsl:attribute name="message">JiBX Availability= ${jibx.available}</xsl:attribute>

+                </echo>

+

+            </target>

+

+            <target name="compile.src" depends="pre.compile.test">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <xsl:attribute name="srcdir">${src}</xsl:attribute>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+            <target name="compile.test" depends="compile.src">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <src>

+                        <xsl:attribute name="path">${test}</xsl:attribute>

+                    </src>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+            <target name="echo.classpath.problem" depends="pre.compile.test">

+                <xsl:attribute name="unless">jars.ok</xsl:attribute>

+                <echo message="The class path is not set right!

+                               Please make sure the following classes are in the classpath

+                               1. XmlBeans

+                               2. Stax

+                               3. Axis2

+                "></echo>

+            </target>

+            <target name="jar.all" depends="jar.server, jar.client">

+            </target>

+            <target name="jar.server" depends="compile.src,echo.classpath.problem">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <copy>

+                    <xsl:attribute name="toDir">${classes}/META-INF</xsl:attribute>

+                    <xsl:attribute name="failonerror">false</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${resources}</xsl:attribute>

+                        <include><xsl:attribute name="name">*.xml</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.wsdl</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.xsd</xsl:attribute></include>

+                    </fileset>

+                </copy>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}.aar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="excludes">**/Test.class</xsl:attribute>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                    </fileset>

+                </jar>

+            </target>

+

+            <!-- select between the -->

+

+            <target name="jar.client" if="jars.ok">

+                 <!--set the correct depends target-->

+                <xsl:choose>

+                    <xsl:when test="@testOmit">

+                        <xsl:attribute name="depends">compile.src</xsl:attribute>

+                    </xsl:when>

+                    <xsl:otherwise>

+                        <xsl:attribute name="depends">compile.test</xsl:attribute>

+                    </xsl:otherwise>

+                </xsl:choose>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}-test-client.jar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                        <exclude><xsl:attribute name="name">**/META-INF/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/lib/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*MessageReceiver.class</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*Skeleton.class</xsl:attribute></exclude>

+                    </fileset>

+                </jar>

+            </target>

+

+

+

+

+            <target depends="jar.server" name="make.repo" if="jars.ok">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/services</xsl:attribute>

+                </mkdir>

+                <copy>

+                    <xsl:attribute name="file">${build}/lib/${name}.aar</xsl:attribute>

+                    <xsl:attribute name="toDir">${build}/repo/services/</xsl:attribute>

+                </copy>

+            </target>

+            <target depends="make.repo" name="start.server" if="jars.ok">

+                <java classname="org.apache.axis2.transport.http.SimpleHTTPServer" fork="true">

+                    <arg>

+                        <xsl:attribute name="value">${build}/repo</xsl:attribute>

+                    </arg>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </java>

+            </target>

+            <target if="jars.ok" name="run.test" depends="compile.test">

+                <path id="test.class.path">

+                    <pathelement>

+                        <xsl:attribute name="location">${lib}/${name}-test-client.jar</xsl:attribute>

+                    </pathelement>

+                    <path>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </path>

+                </path>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/test-reports/</xsl:attribute>

+                </mkdir>

+                <junit printsummary="yes" haltonfailure="yes">

+                    <classpath>

+                        <xsl:attribute name="refid">test.class.path</xsl:attribute>

+                    </classpath>

+                    <formatter type="plain"/>

+                    <batchtest fork="yes">

+                        <xsl:attribute name="toDir">${build}/test-reports/</xsl:attribute>

+                        <fileset>

+                            <xsl:attribute name="dir">${test}</xsl:attribute>

+                            <include>

+                                <xsl:attribute name="name">**/*Test*.java</xsl:attribute>

+                            </include>

+                        </fileset>

+                    </batchtest>

+                </junit>

+            </target>

+            <target name="clean">

+                <delete>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </delete>

+            </target>

+        </project>

+    </xsl:template>

+</xsl:stylesheet>

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl
new file mode 100644
index 0000000..ba0b5dd
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl
@@ -0,0 +1,292 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

+    <xsl:template match="/ant">

+

+        <xsl:variable name="package" select="@package"/>

+        <xsl:variable name="src" select="@src"/>

+        <xsl:variable name="resource" select="@resource"/>

+

+        <project basedir=".">

+             <xsl:choose>

+                <xsl:when test="@isserverside">

+                   <xsl:attribute name="default">jar.server</xsl:attribute>

+                </xsl:when>

+                <xsl:otherwise>

+                    <xsl:attribute name="default">jar.client</xsl:attribute>

+                </xsl:otherwise>

+            </xsl:choose>

+            

+            <xsl:comment>Auto generated ant build file</xsl:comment>

+            <property environment="env"/>

+            <property name="axis2.home">

+                <xsl:attribute name="value">${env.AXIS2_HOME}</xsl:attribute>

+            </property>

+            <property name="project.base.dir">

+                <xsl:attribute name="value">.</xsl:attribute>

+            </property>

+            <property name="maven.class.path">

+                <xsl:attribute name="value"></xsl:attribute>

+            </property>

+            <property name="name">

+                <xsl:attribute name="value"><xsl:value-of select="@servicename"/></xsl:attribute>

+            </property>

+          <property name="src">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$src"/></xsl:attribute>

+            </property>

+            <property name="test">

+                <xsl:attribute name="value">${project.base.dir}/test</xsl:attribute>

+            </property>

+            <property name="build">

+                <xsl:attribute name="value">${project.base.dir}/build</xsl:attribute>

+            </property>

+            <property name="classes">

+                <xsl:attribute name="value">${build}/classes</xsl:attribute>

+            </property>

+            <property name="lib">

+                <xsl:attribute name="value">${build}/lib</xsl:attribute>

+            </property>

+         <property name="resources">

+                <xsl:attribute name="value">${project.base.dir}/<xsl:value-of select="$resource"/></xsl:attribute>

+            </property>

+

+            <property name="xbeans.packaged.jar.name" value="XBeans-packaged.jar"></property>

+

+            <property name="jars.ok" value=""></property>

+

+            <path id="axis2.class.path">

+                <pathelement>

+                    <xsl:attribute name="path">${java.class.path}</xsl:attribute>

+                </pathelement>

+                <pathelement>

+                    <xsl:attribute name="path">${maven.class.path}</xsl:attribute>

+                </pathelement>

+                <fileset>

+                    <xsl:attribute name="dir">${axis2.home}</xsl:attribute>

+                    <include>

+                        <xsl:attribute name="name">lib/*.jar</xsl:attribute>

+                    </include>

+                </fileset>

+            </path>

+

+            <target name="init">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${classes}</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${lib}</xsl:attribute>

+                </mkdir>

+                <xsl:if test="not(@testOmit)">

+                    <mkdir>

+                        <xsl:attribute name="dir">${test}</xsl:attribute>

+                    </mkdir>

+                </xsl:if>

+

+            </target>

+

+            <target name="jar.xbeans">

+                <!-- jar the  XMLbeans stuff to the lib folder-->

+                <jar>

+                    <xsl:attribute name="basedir">${resources}</xsl:attribute>

+                    <xsl:attribute name="destfile">${lib}/${xbeans.packaged.jar.name}</xsl:attribute>

+                    <xsl:attribute name="excludes">**/services.xml, **/*.xsd</xsl:attribute>

+                </jar>

+            </target>

+

+            <target name="pre.compile.test" depends="init, jar.xbeans">

+                <xsl:comment>Test the classpath for the availability of necesary classes</xsl:comment>

+                <available classname="org.apache.xmlbeans.XmlObject" property="xbeans.available" classpathref="axis2.class.path"/>

+                <available classname="javax.xml.stream.XMLStreamReader" property="stax.available" classpathref="axis2.class.path"/>

+                <available classname="org.apache.axis2.engine.AxisEngine" property="axis2.available" classpathref="axis2.class.path"/>

+                <condition property="jars.ok" >

+                    <and>

+                        <isset property="xbeans.available"/>

+                        <isset property="stax.available"/>

+                        <isset property="axis2.available"/>

+                    </and>

+                </condition>

+

+                <xsl:comment>Print out the availabilities</xsl:comment>

+                <echo>

+                    <xsl:attribute name="message">XmlBeans Availability = ${xbeans.available}</xsl:attribute>

+                </echo>

+                <echo>

+                    <xsl:attribute name="message">Stax Availability= ${stax.available}</xsl:attribute>

+                </echo>

+                <echo>

+                    <xsl:attribute name="message">Axis2 Availability= ${axis2.available}</xsl:attribute>

+                </echo>

+

+            </target>

+

+            <target name="compile.src" depends="pre.compile.test" >

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+                    <xsl:attribute name="srcdir">${src}</xsl:attribute>

+                    <classpath>

+                        <xsl:attribute name="location">${lib}/${xbeans.packaged.jar.name}</xsl:attribute>

+                    </classpath>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </javac>

+            </target>

+

+

+            <target name="compile.test" depends="compile.src">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="256m" debug="on">

+                    <xsl:attribute name="destdir">${classes}</xsl:attribute>

+

+                    <src>

+                        <xsl:attribute name="path">${test}</xsl:attribute>

+                    </src>

+

+                    <classpath>

+                        <xsl:attribute name="location">${lib}/${xbeans.packaged.jar.name}</xsl:attribute>

+                    </classpath>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+

+                    <!-- todo -->

+

+                </javac>

+            </target>

+

+            <target name="echo.classpath.problem" depends="pre.compile.test">

+                <xsl:attribute name="unless">jars.ok</xsl:attribute>

+                <echo message="The class path is not set right!

+                               Please make sure the following classes are in the classpath

+                               1. XmlBeans

+                               2. Stax

+                               3. Axis2

+                "></echo>

+            </target>

+            <target name="jar.all" depends="jar.server, jar.client">

+            </target>

+            <target name="jar.server" depends="compile.src,echo.classpath.problem">

+                <xsl:attribute name="if">jars.ok</xsl:attribute>

+                <copy>

+                    <xsl:attribute name="toDir">${classes}/META-INF</xsl:attribute>

+                    <xsl:attribute name="failonerror">false</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${resources}</xsl:attribute>

+                        <include><xsl:attribute name="name">*.xml</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.wsdl</xsl:attribute></include>

+                        <include><xsl:attribute name="name">*.xsd</xsl:attribute></include>

+                        <exclude><xsl:attribute name="name">**/schemaorg_apache_xmlbean/**</xsl:attribute></exclude>

+                    </fileset>

+                </copy>

+                <copy>

+                    <xsl:attribute name="file">${lib}/${xbeans.packaged.jar.name}</xsl:attribute>

+                    <xsl:attribute name="toDir">${classes}/lib</xsl:attribute>

+                </copy>

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}.aar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="excludes">**/Test.class</xsl:attribute>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                    </fileset>

+                </jar>

+            </target>

+

+

+

+            <target  name="jar.client" if="jars.ok">

+                <!--set the correct depends target-->

+                <xsl:choose>

+                    <xsl:when test="@testOmit">

+                        <xsl:attribute name="depends">compile.src</xsl:attribute>

+                    </xsl:when>

+                    <xsl:otherwise>

+                        <xsl:attribute name="depends">compile.test</xsl:attribute>

+                    </xsl:otherwise>

+                </xsl:choose>

+

+

+                <jar>

+                    <xsl:attribute name="destfile">${lib}/${name}-test-client.jar</xsl:attribute>

+                    <fileset>

+                        <xsl:attribute name="dir">${classes}</xsl:attribute>

+                        <exclude><xsl:attribute name="name">**/META-INF/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/lib/*.*</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*MessageReceiver.class</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*Skeleton.class</xsl:attribute></exclude>

+

+                    </fileset>

+                    <fileset>

+                        <xsl:attribute name="dir">${resources}</xsl:attribute>

+                        <exclude><xsl:attribute name="name">**/*.wsdl</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*.xsd</xsl:attribute></exclude>

+                        <exclude><xsl:attribute name="name">**/*.xml</xsl:attribute></exclude>

+                    </fileset>

+                </jar>

+            </target>

+

+

+

+

+

+

+            <target depends="jar.server" name="make.repo" if="jars.ok">

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/</xsl:attribute>

+                </mkdir>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/repo/services</xsl:attribute>

+                </mkdir>

+                <copy>

+                    <xsl:attribute name="file">${build}/lib/${name}.aar</xsl:attribute>

+                    <xsl:attribute name="toDir">${build}/repo/services/</xsl:attribute>

+                </copy>

+            </target>

+            <target depends="make.repo" name="start.server" if="jars.ok">

+                <java classname="org.apache.axis2.transport.http.SimpleHTTPServer" fork="true">

+                    <arg>

+                        <xsl:attribute name="value">${build}/repo</xsl:attribute>

+                    </arg>

+                    <classpath>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </classpath>

+                </java>

+            </target>

+            <target if="jars.ok" name="run.test" depends="jar.client">

+                <path id="test.class.path">

+                    <pathelement>

+                        <xsl:attribute name="location">${lib}/${name}-test-client.jar</xsl:attribute>

+                    </pathelement>

+                    <path>

+                        <xsl:attribute name="refid">axis2.class.path</xsl:attribute>

+                    </path>

+                </path>

+                <mkdir>

+                    <xsl:attribute name="dir">${build}/test-reports/</xsl:attribute>

+                </mkdir>

+                <junit printsummary="yes" haltonfailure="yes">

+                    <classpath>

+                        <xsl:attribute name="refid">test.class.path</xsl:attribute>

+                    </classpath>

+                    <formatter type="plain"/>

+                    <batchtest fork="yes">

+                        <xsl:attribute name="toDir">${build}/test-reports/</xsl:attribute>

+                        <fileset>

+                            <xsl:attribute name="dir">${test}</xsl:attribute>

+                            <include>

+                                <xsl:attribute name="name">**/*Test*.java</xsl:attribute>

+                            </include>

+                        </fileset>

+                    </batchtest>

+                </junit>

+            </target>

+            <target name="clean">

+                <delete>

+                    <xsl:attribute name="dir">${build}</xsl:attribute>

+                </delete>

+            </target>

+        </project>

+    </xsl:template>

+</xsl:stylesheet>

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/CallbackHandlerTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/CallbackHandlerTemplate.xsl
new file mode 100644
index 0000000..ff7e1eb
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/CallbackHandlerTemplate.xsl
@@ -0,0 +1,81 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:template match="/callback">

+    /**

+     * <xsl:value-of select="@name"/>.java

+     *

+     * This file was auto-generated from WSDL

+     * by the Apache Axis2 version: #axisVersion# #today#

+     */

+    package <xsl:value-of select="@package"/>;

+

+    /**

+     *  <xsl:value-of select="@name"/> Callback class, Users can extend this class and implement

+     *  their own receiveResult and receiveError methods.

+     */

+    public abstract class <xsl:value-of select="@name"/>{

+

+

+

+    protected Object clientData;

+

+    /**

+    * User can pass in any object that needs to be accessed once the NonBlocking

+    * Web service call is finished and appropriate method of this CallBack is called.

+    * @param clientData Object mechanism by which the user can pass in user data

+    * that will be avilable at the time this callback is called.

+    */

+    public <xsl:value-of select="@name"/>(Object clientData){

+        this.clientData = clientData;

+    }

+

+    /**

+    * Please use this constructor if you don't want to set any clientData

+    */

+    public <xsl:value-of select="@name"/>(){

+        this.clientData = null;

+    }

+

+    /**

+     * Get the client data

+     */

+

+     public Object getClientData() {

+        return clientData;

+     }

+

+        <xsl:for-each select="method">

+            <xsl:variable name="outParamType"><xsl:value-of select="output/param/@type"/></xsl:variable>

+            <xsl:variable name="outParamName"><xsl:value-of select="output/param/@name"/></xsl:variable>

+            <xsl:variable name="mep"><xsl:value-of select="@mep"/></xsl:variable>

+            <xsl:choose>

+                <!-- Code generation for in-out only. Need to consider the other meps also

+                    They should be parts of this xsl:choose loop -->

+                <xsl:when test="$mep='12'">

+           /**

+            * auto generated Axis2 call back method for <xsl:value-of select="@name"/> method

+            *

+            */

+           public void receiveResult<xsl:value-of select="@name"/>(

+                    <xsl:if test="$outParamType!=''"><xsl:value-of select="$outParamType"/><xsl:text> </xsl:text><xsl:value-of select="$outParamName"/></xsl:if>) {

+           }

+

+          /**

+           * auto generated Axis2 Error handler

+           *

+           */

+            public void receiveError<xsl:value-of select="@name"/>(java.lang.Exception e) {

+            }

+                </xsl:when>

+                <xsl:otherwise>

+               // No methods generated for meps other than in-out

+                </xsl:otherwise>

+            </xsl:choose>

+

+

+        </xsl:for-each>

+

+

+    }

+    </xsl:template>

+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/ExceptionTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/ExceptionTemplate.xsl
new file mode 100644
index 0000000..414d727
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/ExceptionTemplate.xsl
@@ -0,0 +1,37 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:template match="/fault">

+/**

+ * <xsl:value-of select="@name"/>.java

+ *

+ * This file was auto-generated from WSDL

+ * by the Apache Axis2 version: #axisVersion# #today#

+ */

+package <xsl:value-of select="@package"/>;

+

+public class <xsl:value-of select="@shortName"/> extends java.lang.Exception{

+    

+    private <xsl:value-of select="@type"/> faultMessage;

+    

+    public <xsl:value-of select="@shortName"/>() {

+        super("<xsl:value-of select="@shortName"/>");

+    }

+           

+    public <xsl:value-of select="@shortName"/>(java.lang.String s) {

+       super(s);

+    }

+    

+    public <xsl:value-of select="@shortName"/>(java.lang.String s, java.lang.Throwable ex) {

+      super(s, ex);

+    }

+    

+    public void setFaultMessage(<xsl:value-of select="@type"/> msg){

+       faultMessage = msg;

+    }

+    

+    public <xsl:value-of select="@type"/> getFaultMessage(){

+       return faultMessage;

+    }

+}

+    </xsl:template>

+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
new file mode 100644
index 0000000..412c634
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
@@ -0,0 +1,787 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+
+    <!-- import the databinding template-->
+    <xsl:include href="databindsupporter"/>
+    <!-- import the other templates for databinding
+         Note  -  these names would be handled by a special
+         URI resolver during the xslt transformations
+     -->
+    <xsl:include href="externalTemplate"/>
+    
+    
+    <xsl:include href="policyExtensionTemplate"/>
+
+    <xsl:template match="/class">
+        <xsl:variable name="interfaceName"><xsl:value-of select="@interfaceName"/></xsl:variable>
+        <xsl:variable name="package"><xsl:value-of select="@package"/></xsl:variable>
+        <xsl:variable name="callbackname"><xsl:value-of select="@callbackname"/></xsl:variable>
+        <xsl:variable name="isSync"><xsl:value-of select="@isSync"/></xsl:variable>
+        <xsl:variable name="isAsync"><xsl:value-of select="@isAsync"/></xsl:variable>
+        <xsl:variable name="soapVersion"><xsl:value-of select="@soap-version"/></xsl:variable>
+        /**
+        * <xsl:value-of select="@name"/>.java
+        *
+        * This file was auto-generated from WSDL
+        * by the Apache Axis2 version: #axisVersion# #today#
+        */
+        package <xsl:value-of select="$package"/>;
+
+        <!-- Put the MTOM enable flag -->
+
+        /*
+        *  <xsl:value-of select="@name"/> java implementation
+        */
+
+        <xsl:variable name="fullyQualifiedClassName"><xsl:value-of select="$package"/>.<xsl:value-of select="@name"/></xsl:variable>
+        public class <xsl:value-of select="@name"/> extends org.apache.axis2.client.Stub
+        <xsl:if test="not(@wrapped)">implements <xsl:value-of select="$interfaceName"/></xsl:if>{
+        protected org.apache.axis2.description.AxisOperation[] _operations;
+
+        //hashmaps to keep the fault mapping
+        private java.util.HashMap faultExeptionNameMap = new java.util.HashMap();
+        private java.util.HashMap faultExeptionClassNameMap = new java.util.HashMap();
+        private java.util.HashMap faultMessageMap = new java.util.HashMap();
+
+    
+    private void populateAxisService() throws org.apache.axis2.AxisFault {
+
+     //creating the Service with a unique name
+     _service = new org.apache.axis2.description.AxisService("<xsl:value-of select="@servicename"/>" + this.hashCode());
+     
+    <xsl:if test="@policy">     
+     java.lang.String _endpoint_policy_string = "<xsl:value-of select="@policy"/>";
+     org.apache.neethi.Policy _endpoint_policy = getPolicy(_endpoint_policy_string);
+     ((org.apache.axis2.description.PolicyInclude) _service.getPolicyInclude()).setPolicy(_endpoint_policy);
+    </xsl:if>
+
+        //creating the operations
+        org.apache.axis2.description.AxisOperation __operation;
+    <xsl:if test="//method[@policy]">
+    java.lang.String __operation_policy_string;
+    </xsl:if>
+
+
+        _operations = new org.apache.axis2.description.AxisOperation[<xsl:value-of select="count(method)"/>];
+        <xsl:for-each select="method">
+            <xsl:choose>
+                <xsl:when test="@mep='10'">
+                    __operation = new org.apache.axis2.description.OutOnlyAxisOperation();
+                </xsl:when>
+                <xsl:when test="@mep='11'">
+                    __operation = new org.apache.axis2.description.RobustOutOnlyAxisOperation();
+                </xsl:when>
+                <xsl:otherwise>
+                   __operation = new org.apache.axis2.description.OutInAxisOperation();
+                </xsl:otherwise>
+            </xsl:choose>
+
+            __operation.setName(new javax.xml.namespace.QName("<xsl:value-of select="@namespace"/>", "<xsl:value-of select="@name"/>"));
+	    _service.addOperation(__operation);
+	    
+	    <xsl:if test="input/@policy">
+	    (__operation).getMessage(org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_OUT_VALUE).getPolicyInclude().setPolicy(getPolicy("<xsl:value-of select="input/@policy"/>"));
+	    </xsl:if>
+	    
+	    <xsl:if test="output/@policy">
+	    (__operation).getMessage(org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE).getPolicyInclude().setPolicy(getPolicy("<xsl:value-of select="output/@policy"/>"));
+	    </xsl:if>
+	    
+            _operations[<xsl:value-of select="position()-1"/>]=__operation;
+            
+        </xsl:for-each>
+        }
+
+    //populates the faults
+    private void populateFaults(){
+         <xsl:for-each select="method">
+           <xsl:for-each select="fault/param">
+              faultExeptionNameMap.put( new javax.xml.namespace.QName(
+                 "<xsl:value-of select="@namespace"/>",
+                 "<xsl:value-of select="@localname"/>"),
+                 "<xsl:value-of select="@name"/>"
+               );
+              faultExeptionClassNameMap.put(new javax.xml.namespace.QName(
+                "<xsl:value-of select="@namespace"/>",
+                "<xsl:value-of select="@localname"/>"),
+                "<xsl:value-of select="@name"/>");
+               faultMessageMap.put( new javax.xml.namespace.QName(
+                 "<xsl:value-of select="@namespace"/>",
+                 "<xsl:value-of select="@localname"/>"),
+                 "<xsl:value-of select="@instantiatableType"/>"
+               );
+           </xsl:for-each>
+        </xsl:for-each>
+
+
+    }
+
+   /**
+    Constructor that takes in a configContext
+    */
+   public <xsl:value-of select="@name"/>(org.apache.axis2.context.ConfigurationContext configurationContext,
+        java.lang.String targetEndpoint)
+        throws org.apache.axis2.AxisFault {
+         //To populate AxisService
+         populateAxisService();
+         populateFaults();
+
+        _serviceClient = new org.apache.axis2.client.ServiceClient(configurationContext,_service);
+        <xsl:if test="@policy">
+        _service.applyPolicy();
+        </xsl:if>
+	
+        configurationContext = _serviceClient.getServiceContext().getConfigurationContext();
+
+        _serviceClient.getOptions().setTo(new org.apache.axis2.addressing.EndpointReference(
+                targetEndpoint));
+        <xsl:if test="$soapVersion='1.2'">
+            //Set the soap version
+            _serviceClient.getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        </xsl:if>
+    
+    }
+
+    /**
+     * Default Constructor
+     */
+    public <xsl:value-of select="@name"/>() throws org.apache.axis2.AxisFault {
+        <xsl:for-each select="endpoint">
+            <xsl:choose>
+                <xsl:when test="position()=1">
+                    this("<xsl:value-of select="."/>" );
+                </xsl:when>
+                <xsl:otherwise>
+                    //this("<xsl:value-of select="."/>" );
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:for-each>
+    }
+
+    /**
+     * Constructor taking the target endpoint
+     */
+    public <xsl:value-of select="@name"/>(java.lang.String targetEndpoint) throws org.apache.axis2.AxisFault {
+        this(null,targetEndpoint);
+    }
+
+
+
+        <xsl:for-each select="method">
+                        
+          <!-- If usedbmethod attribute present, gives name of method to call for implementation -->
+          <xsl:variable name="usedbimpl"><xsl:value-of select="@usdbimpl"/></xsl:variable>
+          <xsl:if test="$usedbimpl!='true'">
+          
+            <xsl:variable name="outputtype"><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:variable>
+            <xsl:variable name="style"><xsl:value-of select="@style"></xsl:value-of></xsl:variable>
+            <xsl:variable name="soapAction"><xsl:value-of select="@soapaction"></xsl:value-of></xsl:variable>
+            <xsl:variable name="mep"><xsl:value-of select="@mep"/></xsl:variable>
+        
+        <!-- MTOM -->
+        <xsl:variable name="method-name"><xsl:value-of select="@name"/></xsl:variable>
+        <xsl:variable name="method-ns"><xsl:value-of select="@namespace"/> </xsl:variable>
+        <!-- MTOM -->
+
+            <!-- Code generation for the in-out mep -->
+            <xsl:if test="$mep='12'">  <!-- These constants can be found in org.apache.axis2.wsdl.WSDLConstants -->
+                <xsl:if test="$isSync='1'">
+                    /**
+                    * Auto generated method signature
+                    * @see <xsl:value-of select="$package"/>.<xsl:value-of select="$interfaceName"/>#<xsl:value-of select="@name"/>
+                    <xsl:for-each select="input/param[@type!='']">
+                        * @param <xsl:value-of select="@name"></xsl:value-of><xsl:text>
+                    </xsl:text></xsl:for-each>
+                    */
+                    public <xsl:choose><xsl:when test="$outputtype=''">void</xsl:when><xsl:otherwise><xsl:value-of select="$outputtype"/></xsl:otherwise></xsl:choose>
+                    <xsl:text> </xsl:text><xsl:value-of select="@name"/>(
+
+                    <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>
+                    <xsl:choose>
+                        <xsl:when test="$inputcount=1">
+                            <!-- Even when the parameters are 1 we have to see whether we have the
+                          wrapped parameters -->
+                            <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>
+                            <xsl:choose>
+                                <xsl:when test="$inputWrappedCount &gt; 0">
+                                   <xsl:for-each select="input/param[@location='body' and @type!='']/param">
+                                        <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                    </xsl:for-each>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:value-of select="input/param[@location='body' and @type!='']/@type"/><xsl:text> </xsl:text><xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <xsl:otherwise><!-- Just leave it - nothing we can do here --></xsl:otherwise>
+                    </xsl:choose>
+
+                    <xsl:if test="$inputcount=1 and input/param[not(@location='body') and @type!='']">,</xsl:if>
+                    <xsl:for-each select="input/param[not(@location='body') and @type!='']">
+                        <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                    </xsl:for-each>)
+                    throws java.rmi.RemoteException
+                    <!--add the faults-->
+                    <xsl:for-each select="fault/param[@type!='']">
+                        ,<xsl:value-of select="@name"/>
+                    </xsl:for-each>{
+              try{
+               org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[<xsl:value-of select="position()-1"/>].getName());
+              _operationClient.getOptions().setAction("<xsl:value-of select="$soapAction"/>");
+              _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
+
+              <!--todo if the stub was generated with unwrapping, wrap all parameters into a single element-->
+
+              // create SOAP envelope with that payload
+              org.apache.axiom.soap.SOAPEnvelope env = null;
+                    <xsl:variable name="count" select="count(input/param[@type!=''])"/>
+                    <xsl:choose>
+                        <!-- test the number of input parameters
+                        If the number of parameter is more then just run the normal test-->
+                        <xsl:when test="$count &gt; 0">
+                            <xsl:choose>
+                                <!-- style being doclit or rpc does not matter -->
+                                <xsl:when test="$style='rpc' or $style='document'">
+                                    //Style is Doc.
+                                    <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>
+                                    <xsl:choose>
+                                        <xsl:when test="$inputcount=1">
+                                            <!-- Even when the parameters are 1 we have to see whether we have the
+                                                wrapped parameters -->
+                                           <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>
+                                           <xsl:variable name="inputElementType" select="input/param[@location='body' and @type!='']/@type"></xsl:variable>
+
+                                            <xsl:choose>
+                                                <xsl:when test="$inputWrappedCount &gt; 0">
+                                                    <xsl:value-of select="$inputElementType"/><xsl:text> </xsl:text>dummyWrappedType = null;
+                                                    env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
+                                                    <xsl:for-each select="input/param[@location='body' and @type!='']/param">
+                                                        <xsl:value-of select="@name"/>,
+                                                    </xsl:for-each>dummyWrappedType,
+                                                    optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>",
+                                                    "<xsl:value-of select="$method-name"/>")));
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                    <!-- there are no unwrapped parameters - go ahead and use the normal wrapped codegen-->
+                                                    env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
+                                                    <xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>,
+                                                    optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>",
+                                                    "<xsl:value-of select="$method-name"/>")));
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                        </xsl:when>
+                                        <xsl:otherwise>
+                                              env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()));
+                                        </xsl:otherwise>
+                                    </xsl:choose>
+
+                                   <xsl:if test="count(input/param[@location='header']) &gt; 0">
+                                               env.build();
+                                    </xsl:if>
+                                    <xsl:for-each select="input/param[@location='header']">
+                                        // add the children only if the parameter is not null
+                                        if (<xsl:value-of select="@name"/>!=null){
+                                        env.getHeader().addChild(toOM(<xsl:value-of select="@name"/>, optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>", "<xsl:value-of select="$method-name"/>"))));
+                                        }
+                                    </xsl:for-each>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    //Unknown style detected !! No code is generated
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <!-- No input parameters present. So generate assuming no input parameters-->
+                        <xsl:otherwise>
+                            <xsl:choose>
+                                <xsl:when test="$style='rpc' or $style='document'">
+                                    //Style is taken to be "document". No input parameters
+                                    org.apache.axiom.soap.SOAPFactory factory = getFactory(_operationClient.getOptions().getSoapVersionURI());
+                                    env = factory.getDefaultEnvelope();
+                                    env.getBody().addChild(factory.createOMElement("<xsl:value-of select="$method-name"/>", "<xsl:value-of select="$method-ns"/>", ""));
+                                </xsl:when>
+                                <xsl:otherwise>
+                                     //Unknown style detected !! No code is generated
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:otherwise>
+                    </xsl:choose>
+        //adding SOAP headers
+         _serviceClient.addHeadersToEnvelope(env);
+        // create message context with that soap envelope
+        org.apache.axis2.context.MessageContext _messageContext = new org.apache.axis2.context.MessageContext() ;
+        _messageContext.setEnvelope(env);
+
+        // add the message contxt to the operation client
+        _operationClient.addMessageContext(_messageContext);
+
+        //execute the operation client
+        _operationClient.execute(true);
+
+         <xsl:choose>
+            <xsl:when test="$outputtype=''">
+                return;
+            </xsl:when>
+            <xsl:otherwise>
+               org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient.getMessageContext(
+                                           org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
+                <!-- todo need to change this to cater for unwrapped messages (multiple parts) -->
+                <xsl:choose>
+                    <xsl:when test="$style='document' or $style='rpc'">
+                           java.lang.Object object = fromOM(
+                                        _returnEnv.getBody().getFirstElement() ,
+                                        <xsl:value-of select="$outputtype"/>.class,
+                                         getEnvelopeNamespaces(_returnEnv));
+                           _messageContext.getTransportOut().getSender().cleanup(_messageContext);
+                           return (<xsl:value-of select="$outputtype"/>)object;
+                    </xsl:when>
+                    <xsl:otherwise>
+                         //Unknown style detected !! No code is generated
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:otherwise>
+        </xsl:choose>
+         }catch(org.apache.axis2.AxisFault f){
+            org.apache.axiom.om.OMElement faultElt = f.getDetail();
+            if (faultElt!=null){
+                if (faultExeptionNameMap.containsKey(faultElt.getQName())){
+                    //make the fault by reflection
+                    try{
+                        java.lang.String exceptionClassName = (java.lang.String)faultExeptionClassNameMap.get(faultElt.getQName());
+                        java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
+                        java.lang.Exception ex=
+                                (java.lang.Exception) exceptionClass.newInstance();
+                        //message class
+                        java.lang.String messageClassName = (java.lang.String)faultMessageMap.get(faultElt.getQName());
+                        java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
+                        java.lang.Object messageObject = fromOM(faultElt,messageClass,null);
+                        java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
+                                   new java.lang.Class[]{messageClass});
+                        m.invoke(ex,new java.lang.Object[]{messageObject});
+                        <xsl:for-each select="fault/param">
+                        if (ex instanceof <xsl:value-of select="@name"/>){
+                          throw (<xsl:value-of select="@name"/>)ex;
+                        }
+                        </xsl:for-each>
+
+                        throw new java.rmi.RemoteException(ex.getMessage(), ex);
+                    }catch(java.lang.ClassCastException e){
+                       // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    } catch (java.lang.ClassNotFoundException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    }catch (java.lang.NoSuchMethodException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    } catch (java.lang.reflect.InvocationTargetException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    }  catch (java.lang.IllegalAccessException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    }   catch (java.lang.InstantiationException e) {
+                        // we cannot intantiate the class - throw the original Axis fault
+                        throw f;
+                    }
+                }else{
+                    throw f;
+                }
+            }else{
+                throw f;
+            }
+        }
+        }
+            </xsl:if>
+            <!-- Async method generation -->
+            <xsl:if test="$isAsync='1'">
+                /**
+                * Auto generated method signature for Asynchronous Invocations
+                * @see <xsl:value-of select="$package"/>.<xsl:value-of select="$interfaceName"/>#start<xsl:value-of select="@name"/>
+                <xsl:for-each select="input/param[@type!='']">
+                    * @param <xsl:value-of select="@name"></xsl:value-of><xsl:text>
+                </xsl:text></xsl:for-each>
+                */
+                public  void start<xsl:value-of select="@name"/>(
+
+                 <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>
+                    <xsl:choose>
+                        <xsl:when test="$inputcount=1">
+                            <!-- Even when the parameters are 1 we have to see whether we have the
+                          wrapped parameters -->
+                            <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>
+                            <xsl:choose>
+                                <xsl:when test="$inputWrappedCount &gt; 0">
+                                   <xsl:for-each select="input/param[@location='body' and @type!='']/param">
+                                        <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                    </xsl:for-each>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:value-of select="input/param[@location='body' and @type!='']/@type"/><xsl:text> </xsl:text><xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <xsl:otherwise><!-- Just leave it - nothing we can do here --></xsl:otherwise>
+                    </xsl:choose>                                                
+                    <xsl:if test="$inputcount=1">,</xsl:if>
+                    <xsl:for-each select="input/param[not(@location='body') and @type!='']">
+                       <xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>,
+                    </xsl:for-each>
+
+                  final <xsl:value-of select="$package"/>.<xsl:value-of select="$callbackname"/> callback)
+
+                throws java.rmi.RemoteException{
+
+              org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[<xsl:value-of select="position()-1"/>].getName());
+             _operationClient.getOptions().setAction("<xsl:value-of select="$soapAction"/>");
+             _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
+
+          <!--todo if the stub was generated with unwrapping, wrap all parameters into a single element-->
+
+              // create SOAP envelope with that payload
+              org.apache.axiom.soap.SOAPEnvelope env=null;
+                    <xsl:variable name="count" select="count(input/param[@type!=''])"/>
+                    <xsl:choose>
+                        <!-- test the number of input parameters
+                        If the number of parameter is more then just run the normal test-->
+                        <xsl:when test="$count &gt; 0">
+                            <xsl:choose>
+                                <xsl:when test="$style='document' or $style='rpc'">
+                                    //Style is Doc.
+                                    <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>
+                                    <xsl:choose>
+                                        <xsl:when test="$inputcount=1">
+                                            <!-- Even when the parameters are 1 we have to see whether we have the
+                                                wrapped parameters -->
+                                           <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>
+                                            <xsl:variable name="inputElementType" select="input/param[@location='body' and @type!='']/@type"></xsl:variable>
+
+                                            <xsl:choose>
+                                                <xsl:when test="$inputWrappedCount &gt; 0">
+                                                    <xsl:value-of select="$inputElementType"/><xsl:text> </xsl:text>dummyWrappedType = null;
+                                                    env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
+                                                    <xsl:for-each select="input/param[@location='body' and @type!='']/param">
+                                                        <xsl:value-of select="@name"/>,
+                                                    </xsl:for-each> dummyWrappedType,
+                                                    optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>",
+                                                    "<xsl:value-of select="$method-name"/>")));
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                    <!-- there are no unwrapped parameters - go ahead and use the normal wrapped codegen-->
+                                                    env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
+                                                    <xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>,
+                                                    optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>",
+                                                    "<xsl:value-of select="$method-name"/>")));
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                        </xsl:when>
+                                        <xsl:otherwise>
+                                              env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()));
+                                        </xsl:otherwise>
+                                    </xsl:choose>
+
+                                    <xsl:for-each select="input/param[@location='header']">
+                                         // add the headers only if they are not null
+                                        if (<xsl:value-of select="@name"/>!=null){
+                                           env.getHeader().addChild(toOM(<xsl:value-of select="@name"/>, optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>", "<xsl:value-of select="$method-name"/>"))));
+                                        }
+                                    </xsl:for-each>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    //Unknown style detected !! No code is generated
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <!-- No input parameters present. So generate assuming no input parameters-->
+                        <xsl:otherwise>
+                            <xsl:choose>
+                                <xsl:when test="$style='document' or $style='rpc'">
+                                    //Style is Doc. No input parameters
+                                    org.apache.axiom.soap.SOAPFactory factory = getFactory(_operationClient.getOptions().getSoapVersionURI());
+                                    env = factory.getDefaultEnvelope();
+                                    env.getBody().addChild(factory.createOMElement("<xsl:value-of select="$method-name"/>", "<xsl:value-of select="$method-ns"/>", ""));
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    //Unknown style detected !! No code is generated
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:otherwise>
+                    </xsl:choose>
+        //adding SOAP headers
+         _serviceClient.addHeadersToEnvelope(env);
+        // create message context with that soap envelope
+        org.apache.axis2.context.MessageContext _messageContext = new org.apache.axis2.context.MessageContext() ;
+        _messageContext.setEnvelope(env);
+
+        // add the message contxt to the operation client
+        _operationClient.addMessageContext(_messageContext);
+
+
+                    <xsl:choose>
+                        <xsl:when test="$outputtype=''">
+                            //Nothing to pass as the callback!!!
+                        </xsl:when>
+                        <xsl:otherwise>
+                           _operationClient.setCallback(new org.apache.axis2.client.async.Callback() {
+                    public void onComplete(
+                            org.apache.axis2.client.async.AsyncResult result) {
+                        java.lang.Object object = fromOM(result.getResponseEnvelope().getBody().getFirstElement(),
+                               <xsl:value-of select="$outputtype"/>.class,
+                               getEnvelopeNamespaces(result.getResponseEnvelope())
+                            );
+                        callback.receiveResult<xsl:value-of select="@name"/>((<xsl:value-of select="$outputtype"/>) object);
+                    }
+
+                    public void onError(java.lang.Exception e) {
+                        callback.receiveError<xsl:value-of select="@name"/>(e);
+                    }
+                });
+                        </xsl:otherwise>
+                    </xsl:choose>
+
+          org.apache.axis2.util.CallbackReceiver _callbackReceiver = null;
+        if ( _operations[<xsl:value-of select="position()-1"/>].getMessageReceiver()==null &amp;&amp;  _operationClient.getOptions().isUseSeparateListener()) {
+           _callbackReceiver = new org.apache.axis2.util.CallbackReceiver();
+          _operations[<xsl:value-of select="position()-1"/>].setMessageReceiver(
+                    _callbackReceiver);
+        }
+
+           //execute the operation client
+           _operationClient.execute(false);
+
+                    }
+                </xsl:if>
+                <!-- End of in-out mep -->
+            </xsl:if>
+
+
+
+
+            <!-- Start of in only mep-->
+            <xsl:if test="$mep='10' or $mep='11'"> <!-- These constants can be found in org.apache.axis2.wsdl.WSDLConstants -->
+                <!-- for the in only mep there is no notion of sync or async. And there is no return type also -->
+                public void <xsl:text> </xsl:text><xsl:value-of select="@name"/>(
+                 <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>
+                    <xsl:choose>
+                        <xsl:when test="$inputcount=1">
+                            <!-- Even when the parameters are 1 we have to see whether we have the
+                          wrapped parameters -->
+                            <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>
+                            <xsl:choose>
+                                <xsl:when test="$inputWrappedCount &gt; 0">
+                                   <xsl:for-each select="input/param[@location='body' and @type!='']/param">
+                                        <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                                    </xsl:for-each>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:value-of select="input/param[@location='body' and @type!='']/@type"/><xsl:text> </xsl:text><xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <xsl:otherwise><!-- Just leave it - nothing we can do here --></xsl:otherwise>
+                    </xsl:choose>
+
+                   <xsl:if test="$inputcount=1 and input/param[not(@location='body') and @type!='']">,</xsl:if>
+                    <xsl:for-each select="input/param[not(@location='body') and @type!='']">
+                        <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                    </xsl:for-each>
+
+                ) throws java.rmi.RemoteException
+                <!--add the faults-->
+                <xsl:if test="$mep='11'">
+                    <xsl:for-each select="fault/param[@type!='']">
+                        ,<xsl:value-of select="@name"/>
+                    </xsl:for-each>
+                </xsl:if>
+                {
+
+                <xsl:if test="$mep='11'">try {</xsl:if>
+                org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[<xsl:value-of select="position()-1"/>].getName());
+                _operationClient.getOptions().setAction("<xsl:value-of select="$soapAction"/>");
+                _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
+
+                <xsl:for-each select="input/param[@Action!='']">_operationClient.getOptions().setAction("<xsl:value-of select="@Action"/>");</xsl:for-each>
+                org.apache.axiom.soap.SOAPEnvelope env = null;
+
+                <xsl:variable name="count" select="count(input/param[@type!=''])"/>
+                                    <xsl:choose>
+                                        <!-- test the number of input parameters
+                                        If the number of parameter is more then just run the normal test-->
+                                        <xsl:when test="$count &gt; 0">
+                                            <xsl:choose>
+                                                <!-- style being doclit or rpc does not matter -->
+                                                <xsl:when test="$style='rpc' or $style='document'">
+                                                    //Style is Doc.
+                                                    <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>
+                                                    <xsl:choose>
+                                                        <xsl:when test="$inputcount=1">
+                                                            <!-- Even when the parameters are 1 we have to see whether we have the
+                                                                wrapped parameters -->
+                                                           <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>
+                                                            <xsl:variable name="inputElementType" select="input/param[@location='body' and @type!='']/@type"></xsl:variable>
+
+                                                            <xsl:choose>
+                                                                <xsl:when test="$inputWrappedCount &gt; 0">
+                                                                    <xsl:value-of select="$inputElementType"/><xsl:text> </xsl:text>dummyWrappedType = null;
+                                                                    env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
+                                                                    <xsl:for-each select="input/param[@location='body' and @type!='']/param">
+                                                                        <xsl:value-of select="@name"/>,
+                                                                    </xsl:for-each>dummyWrappedType,
+                                                                    optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>",
+                                                                    "<xsl:value-of select="$method-name"/>")));
+                                                                </xsl:when>
+                                                                <xsl:otherwise>
+                                                                    <!-- there are no unwrapped parameters - go ahead and use the normal wrapped codegen-->
+                                                                    env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
+                                                                    <xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>,
+                                                                    optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>",
+                                                                    "<xsl:value-of select="$method-name"/>")));
+                                                                </xsl:otherwise>
+                                                            </xsl:choose>
+                                                        </xsl:when>
+                                                        <xsl:otherwise>
+                                                              env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()));
+                                                        </xsl:otherwise>
+                                                  </xsl:choose>
+
+                                                    <xsl:for-each select="input/param[@location='header']">
+                                                        // add the children only if the parameter is not null
+                                                        if (<xsl:value-of select="@name"/>!=null){
+                                                        env.getHeader().addChild(toOM(<xsl:value-of select="@name"/>, optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>", "<xsl:value-of select="$method-name"/>"))));
+                                                        }
+                                                    </xsl:for-each>
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                    //Unknown style detected !! No code is generated
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                        </xsl:when>
+                                        <!-- No input parameters present. So generate assuming no input parameters-->
+                                        <xsl:otherwise>
+                                            <xsl:choose>
+                                                <xsl:when test="$style='rpc' or $style='document'">
+                                                    //Style is taken to be "document". No input parameters
+                                                    org.apache.axiom.soap.SOAPFactory factory = getFactory(_operationClient.getOptions().getSoapVersionURI());
+                                                    env = factory.getDefaultEnvelope();
+                                                    env.getBody().addChild(factory.createOMElement("<xsl:value-of select="$method-name"/>", "<xsl:value-of select="$method-ns"/>", ""));
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                     //Unknown style detected !! No code is generated
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                        </xsl:otherwise>
+                                    </xsl:choose>
+
+              //adding SOAP headers
+         _serviceClient.addHeadersToEnvelope(env);
+                // create message context with that soap envelope
+            org.apache.axis2.context.MessageContext _messageContext = new org.apache.axis2.context.MessageContext() ;
+            _messageContext.setEnvelope(env);
+
+            // add the message contxt to the operation client
+            _operationClient.addMessageContext(_messageContext);
+
+             _operationClient.execute(true);
+           <xsl:if test="$mep='11'">
+               }catch(org.apache.axis2.AxisFault f){
+                  org.apache.axiom.om.OMElement faultElt = f.getDetail();
+                  if (faultElt!=null){
+                      if (faultExeptionNameMap.containsKey(faultElt.getQName())){
+                          //make the fault by reflection
+                          try{
+                              java.lang.String exceptionClassName = (java.lang.String)faultExeptionClassNameMap.get(faultElt.getQName());
+                              java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
+                              java.lang.Exception ex=
+                                      (java.lang.Exception) exceptionClass.newInstance();
+                              //message class
+                              java.lang.String messageClassName = (java.lang.String)faultMessageMap.get(faultElt.getQName());
+                              java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
+                              java.lang.Object messageObject = fromOM(faultElt,messageClass,null);
+                              java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
+                                         new java.lang.Class[]{messageClass});
+                              m.invoke(ex,new java.lang.Object[]{messageObject});
+                              <xsl:for-each select="fault/param">
+                              if (ex instanceof <xsl:value-of select="@name"/>){
+                                throw (<xsl:value-of select="@name"/>)ex;
+                              }
+                              </xsl:for-each>
+
+                              throw new java.rmi.RemoteException(ex.getMessage(), ex);
+                          }catch(java.lang.ClassCastException e){
+                             // we cannot intantiate the class - throw the original Axis fault
+                              throw f;
+                          } catch (java.lang.ClassNotFoundException e) {
+                              // we cannot intantiate the class - throw the original Axis fault
+                              throw f;
+                          }catch (java.lang.NoSuchMethodException e) {
+                              // we cannot intantiate the class - throw the original Axis fault
+                              throw f;
+                          } catch (java.lang.reflect.InvocationTargetException e) {
+                              // we cannot intantiate the class - throw the original Axis fault
+                              throw f;
+                          }  catch (java.lang.IllegalAccessException e) {
+                              // we cannot intantiate the class - throw the original Axis fault
+                              throw f;
+                          }   catch (java.lang.InstantiationException e) {
+                              // we cannot intantiate the class - throw the original Axis fault
+                              throw f;
+                          }
+                      }else{
+                          throw f;
+                      }
+                  }else{
+                      throw f;
+                  }
+              }
+           </xsl:if>
+             return;
+           }
+            </xsl:if>
+          </xsl:if>
+        </xsl:for-each>
+
+       /**
+        *  A utility method that copies the namepaces from the SOAPEnvelope
+        */
+       private java.util.Map getEnvelopeNamespaces(org.apache.axiom.soap.SOAPEnvelope env){
+        java.util.Map returnMap = new java.util.HashMap();
+        java.util.Iterator namespaceIterator = env.getAllDeclaredNamespaces();
+        while (namespaceIterator.hasNext()) {
+            org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace) namespaceIterator.next();
+            returnMap.put(ns.getPrefix(),ns.getNamespaceURI());
+        }
+       return returnMap;
+    }
+
+    <xsl:if test="//@policy">
+    ////////////////////////////////////////////////////////////////////////
+    
+    private static org.apache.neethi.Policy getPolicy (java.lang.String policyString) {
+    	java.io.ByteArrayInputStream bais = new java.io.ByteArrayInputStream(policyString.getBytes());
+    	return org.apache.neethi.PolicyEngine.getPolicy(bais);
+    }
+    
+    /////////////////////////////////////////////////////////////////////////
+
+    </xsl:if>
+    
+    private javax.xml.namespace.QName[] opNameArray = null;
+    private boolean optimizeContent(javax.xml.namespace.QName opName) {
+        <xsl:if test="stubMethods">
+            setOpNameArray();
+        </xsl:if>
+
+        if (opNameArray == null) {
+            return false;
+        }
+        for (int i = 0; i &lt; opNameArray.length; i++) {
+            if (opName.equals(opNameArray[i])) {
+                return true;   
+            }
+        }
+        return false;
+    }
+     //<xsl:apply-templates><xsl:with-param name="context">interface-implementation</xsl:with-param></xsl:apply-templates>
+   }
+   </xsl:template>
+</xsl:stylesheet>
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceTemplate.xsl
new file mode 100644
index 0000000..08a3a2b
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceTemplate.xsl
@@ -0,0 +1,167 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+

+     <!-- import the databinding template-->

+    <xsl:include href="databindsupporter"/>

+    <!-- import the other templates for databinding

+         Note  -  these names would be handled by a special

+         URI resolver during the xslt transformations

+     -->

+    <xsl:include href="externalTemplate"/>

+

+

+    <xsl:template match="/interface">

+    <xsl:variable name="isSync"><xsl:value-of select="@isSync"/></xsl:variable>

+    <xsl:variable name="isAsync"><xsl:value-of select="@isAsync"/></xsl:variable>

+    <xsl:variable name="callbackname"><xsl:value-of select="@callbackname"/></xsl:variable>

+    <xsl:variable name="package"><xsl:value-of select="@package"/></xsl:variable>

+

+    /**

+     * <xsl:value-of select="@name"/>.java

+     *

+     * This file was auto-generated from WSDL

+     * by the Apache Axis2 version: #axisVersion# #today#

+     */

+    package <xsl:value-of select="$package"/>;

+

+    /*

+     *  <xsl:value-of select="@name"/> java interface

+     */

+

+    public interface <xsl:value-of select="@name"></xsl:value-of> {

+          <xsl:for-each select="method">

+            <!-- Code for in-out mep -->

+         <xsl:if test="@mep='12'">

+         <xsl:variable name="outputtype"><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:variable>

+

+        <!-- start of the sync block -->                                          

+         <xsl:if test="$isSync='1'">

+

+        /**

+                * Auto generated method signature

+                <xsl:for-each select="input/param[@type!='']">

+                    * @param <xsl:value-of select="@name"></xsl:value-of><xsl:text>

+                </xsl:text></xsl:for-each>

+         */

+         public <xsl:choose><xsl:when test="$outputtype=''">void</xsl:when><xsl:otherwise><xsl:value-of select="$outputtype"/></xsl:otherwise></xsl:choose>

+        <xsl:text> </xsl:text><xsl:value-of select="@name"/>(

+

+                <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>

+                <xsl:choose>

+                    <xsl:when test="$inputcount=1">

+                        <!-- Even when the parameters are 1 we have to see whether we have the

+                      wrapped parameters -->

+                        <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>

+                        <xsl:choose>

+                            <xsl:when test="$inputWrappedCount &gt; 0">

+                               <xsl:for-each select="input/param[@location='body' and @type!='']/param">

+            <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+          </xsl:for-each>             

+             </xsl:when>

+             <xsl:otherwise>

+                                <xsl:value-of select="input/param[@location='body' and @type!='']/@type"/><xsl:text> </xsl:text><xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>

+                            </xsl:otherwise>

+                        </xsl:choose>

+                    </xsl:when>

+                    <xsl:otherwise><!-- Just leave it - nothing we can do here --></xsl:otherwise>

+                </xsl:choose>

+

+                <xsl:if test="$inputcount=1 and input/param[not(@location='body') and @type!='']">,</xsl:if>

+                <xsl:for-each select="input/param[not(@location='body') and @type!='']">

+            <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+                </xsl:for-each>)

+                throws java.rmi.RemoteException

+          <!--add the faults-->

+          <xsl:for-each select="fault/param[@type!='']">

+          ,<xsl:value-of select="@name"/>

+                </xsl:for-each>;

+

+        </xsl:if>

+

+       <!-- start of the async block -->

+        <xsl:if test="$isAsync='1'">

+         /**

+            * Auto generated method signature for Asynchronous Invocations

+            <xsl:for-each select="input/param[@type!='']">

+                * @param <xsl:value-of select="@name"></xsl:value-of><xsl:text>

+            </xsl:text></xsl:for-each>

+          */

+        public void start<xsl:value-of select="@name"/>(

+

+             <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>

+         <xsl:choose>

+                    <xsl:when test="$inputcount=1">

+                        <!-- Even when the parameters are 1 we have to see whether we have the

+                      wrapped parameters -->

+                        <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>

+                        <xsl:choose>

+                            <xsl:when test="$inputWrappedCount &gt; 0">

+                               <xsl:for-each select="input/param[@location='body' and @type!='']/param">

+                                    <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+                                </xsl:for-each>

+           </xsl:when>

+           <xsl:otherwise>

+                                <xsl:value-of select="input/param[@location='body' and @type!='']/@type"/><xsl:text> </xsl:text><xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>

+           </xsl:otherwise>

+         </xsl:choose>

+                    </xsl:when>

+                    <xsl:otherwise><!-- Just leave it - nothing we can do here --></xsl:otherwise>

+                </xsl:choose>

+                <xsl:if test="$inputcount=1">,</xsl:if>

+                <xsl:for-each select="input/param[not(@location='body') and @type!='']">

+                   <xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>,

+                </xsl:for-each>

+

+            final <xsl:value-of select="$package"/>.<xsl:value-of select="$callbackname"/> callback)

+

+            throws java.rmi.RemoteException;

+

+     </xsl:if>

+     </xsl:if>

+        <!-- Code for in-only mep -->

+       <xsl:if test="@mep='10' or @mep='11'">

+       <xsl:variable name="mep"><xsl:value-of select="@mep"/></xsl:variable>

+

+        public void <xsl:text> </xsl:text><xsl:value-of select="@name"/>(

+         <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>

+         <xsl:choose>

+                <xsl:when test="$inputcount=1">

+                    <!-- Even when the parameters are 1 we have to see whether we have the

+                  wrapped parameters -->

+                    <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>

+                    <xsl:choose>

+                        <xsl:when test="$inputWrappedCount &gt; 0">

+                           <xsl:for-each select="input/param[@location='body' and @type!='']/param">

+                                <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+               </xsl:for-each>

+           </xsl:when>

+           <xsl:otherwise>

+                            <xsl:value-of select="input/param[@location='body' and @type!='']/@type"/><xsl:text> </xsl:text><xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>

+                        </xsl:otherwise>

+                    </xsl:choose>

+                </xsl:when>

+                <xsl:otherwise><!-- Just leave it - nothing we can do here --></xsl:otherwise>

+            </xsl:choose>

+

+           <xsl:if test="$inputcount=1 and input/param[not(@location='body') and @type!='']">,</xsl:if>

+            <xsl:for-each select="input/param[not(@location='body') and @type!='']">

+                <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+            </xsl:for-each>

+

+        ) throws java.rmi.RemoteException

+        <!--add the faults-->

+        <xsl:if test="$mep='11'">

+               <xsl:for-each select="fault/param[@type!='']">

+               ,<xsl:value-of select="@name"/>

+               </xsl:for-each>

+        </xsl:if>;

+

+        </xsl:if>

+

+      </xsl:for-each>

+

+       <!-- Apply other templates --> 

+       //<xsl:apply-templates/>

+       }

+    </xsl:template>

+   </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxmeDatabindingTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxmeDatabindingTemplate.xsl
new file mode 100644
index 0000000..231c571
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxmeDatabindingTemplate.xsl
@@ -0,0 +1,78 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+

+    <!-- #################################################################################  -->

+    <!-- ############################   jaxme template   ##############################  -->

+    <xsl:template match="databinders[@dbtype='jaxme']">

+

+        <xsl:variable name="base64"><xsl:value-of select="base64Elements/name"/></xsl:variable>

+        <xsl:if test="$base64">

+            private static javax.xml.namespace.QName[] qNameArray = {

+            <xsl:for-each select="base64Elements/name">

+                <xsl:if test="position()>1">,</xsl:if>new javax.xml.namespace.QName("<xsl:value-of select="@ns-url"/>","<xsl:value-of select="@localName"/>")

+            </xsl:for-each>

+            };

+        </xsl:if>

+

+        private org.apache.axiom.om.OMElement toOM(Object param) {

+            try {

+                javax.xml.bind.JAXBContext ctx = javax.xml.bind.JAXBContext.newInstance(param.getClass().getInterfaces()[0].getPackage()

+                                                                                            .getName());

+                org.apache.axiom.om.impl.builder.SAXOMBuilder builder = new org.apache.axiom.om.impl.builder.SAXOMBuilder();

+                javax.xml.bind.Marshaller marshaller = ctx.createMarshaller();

+                marshaller.marshal(param, builder);

+                return builder.getRootElement();

+            } catch (javax.xml.bind.JAXBException e) {

+                throw new RuntimeException(e);

+            }

+        }

+

+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(

+            org.apache.axiom.soap.SOAPFactory factory, Object param, boolean optimizeContent) {

+            org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();

+            if (param != null){

+                envelope.getBody().addChild(toOM(param));

+            }

+

+            return envelope;

+        }

+

+        public java.lang.Object fromOM(org.apache.axiom.om.OMElement param,

+        java.lang.Class type,

+         java.util.Map extraNamespaces){

+            try{

+                javax.xml.transform.Source source =

+                        new javanet.staxutils.StAXSource(param.getXMLStreamReader());

+                javax.xml.bind.JAXBContext ctx = javax.xml.bind.JAXBContext.newInstance(

+                        type.getPackage().getName());

+                javax.xml.bind.Unmarshaller u = ctx.createUnmarshaller();

+                return u.unmarshal(source);

+            } catch(java.lang.Exception e) {

+                throw new RuntimeException("Data binding error",e);

+            }

+        }

+    <!-- Generate the base 64 optimize methods only if the base64 items are present -->

+   <xsl:if test="$base64">

+   private void optimizeContent(org.apache.axiom.om.OMElement element, javax.xml.namespace.QName[] qNames){

+        for (int i = 0; i &lt; qNames.length; i++) {

+            markElementsAsOptimized(qNames[i],element);

+        }

+    }

+

+    private void markElementsAsOptimized(javax.xml.namespace.QName qName,org.apache.axiom.om.OMElement rootElt){

+        if (rootElt.getQName().equals(qName)){

+            //get the text node and mark it

+            org.apache.axiom.om.OMNode node = rootElt.getFirstOMChild();

+            if (node.getType()==org.apache.axiom.om.OMNode.TEXT_NODE){

+                ((org.apache.axiom.om.OMText)node).setOptimize(true);

+            }

+

+        }

+        java.util.Iterator childElements = rootElt.getChildElements();

+        while (childElements.hasNext()) {

+            markElementsAsOptimized(qName,(org.apache.axiom.om.OMElement)childElements.next());

+        }

+    }

+    </xsl:if>

+    </xsl:template>

+</xsl:stylesheet>

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
new file mode 100644
index 0000000..31f63c8
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
@@ -0,0 +1,486 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+

+    <!-- include the databind supporters  -->

+    <xsl:include href="databindsupporter"/>

+    <!-- import the other templates for databinding

+           Note  -  these names would be handled by a special

+           URI resolver during the xslt transformations

+       -->

+    <xsl:include href="externalTemplate"/>

+

+

+    <!--Template for in out message receiver -->

+    <xsl:template match="/interface[@basereceiver='org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver']">

+

+        <xsl:variable name="skeletonname"><xsl:value-of select="@skeletonInterfaceName"/></xsl:variable>

+        <xsl:variable name="dbsupportpackage"><xsl:value-of select="@dbsupportpackage"/></xsl:variable>

+

+        /**

+        * <xsl:value-of select="@name"/>.java

+        *

+        * This file was auto-generated from WSDL

+        * by the Apache Axis2 version: #axisVersion# #today#

+        */

+        package <xsl:value-of select="@package"/>;

+

+        /**

+        *  <xsl:value-of select="@name"/> message receiver

+        */

+

+        public class <xsl:value-of select="@name"/> extends <xsl:value-of select="@basereceiver"/>{

+

+

+        public void invokeBusinessLogic(org.apache.axis2.context.MessageContext msgContext, org.apache.axis2.context.MessageContext newMsgContext)

+        throws org.apache.axis2.AxisFault{

+

+        try {

+

+        // get the implementation class for the Web Service

+        Object obj = getTheImplementationObject(msgContext);

+

+        <xsl:value-of select="$skeletonname"/> skel = (<xsl:value-of select="$skeletonname"/>)obj;

+        //Out Envelop

+        org.apache.axiom.soap.SOAPEnvelope envelope = null;

+        //Find the axisOperation that has been set by the Dispatch phase.

+        org.apache.axis2.description.AxisOperation op = msgContext.getOperationContext().getAxisOperation();

+        if (op == null) {

+        throw new org.apache.axis2.AxisFault("Operation is not located, if this is doclit style the SOAP-ACTION should specified via the SOAP Action to use the RawXMLProvider");

+        }

+

+        java.lang.String methodName;

+        if(op.getName() != null &amp; (methodName = op.getName().getLocalPart()) != null){

+

+        <xsl:for-each select="method">

+

+            if("<xsl:value-of select="@name"/>".equals(methodName)){

+

+            <!-- If usedbmethod attribute present, gives name of method to call for implementation -->

+            <xsl:variable name="usedbmethod"><xsl:value-of select="@usedbmethod"/></xsl:variable>

+

+

+

+            <xsl:choose>

+                <xsl:when test="string-length(normalize-space($usedbmethod))=0">

+

+                    <xsl:variable name="namespace"><xsl:value-of select="@namespace"/></xsl:variable>

+

+                    <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>

+                    <xsl:variable name="style"><xsl:value-of select="@style"/></xsl:variable>

+

+                    <xsl:variable name="returntype" select="output/param/@type"/>

+                    <xsl:variable name="returnvariable" select="output/param/@name"/>

+

+                    <xsl:if test="string-length(normalize-space($returntype)) &gt; 0">

+                        <xsl:value-of select="$returntype"/>

+                        <xsl:text> </xsl:text>

+                        <xsl:value-of select="$returnvariable"/> = null;

+                    </xsl:if>

+

+                    <xsl:choose>

+                        <!-- We really don't need to make a difference between these-->

+                        <xsl:when test="$style='document' or $style='rpc'">

+                            //doc style

+                            <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>

+                            <xsl:variable name="inputtype" select="input/param[@location='body' and @type!='']/@type"/>

+

+                            <xsl:choose>

+                                <xsl:when test="$inputcount=1">

+                                     <xsl:value-of select="$inputtype"/> wrappedParam =

+                                                 (<xsl:value-of select="$inputtype"/>)fromOM(

+                        msgContext.getEnvelope().getBody().getFirstElement(),

+                        <xsl:value-of select="$inputtype"/>.class,

+                        getEnvelopeNamespaces(msgContext.getEnvelope()));

+                                    <!-- Even when the parameters are 1 we have to see whether we have the

+                                  wrapped parameters -->

+                                   <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>

+                                    <xsl:choose>

+                                        <xsl:when test="$inputWrappedCount &gt; 0">

+                                            <!-- generate the references. the getters need to be

+                                                generated by the databinding-->

+                                            <!--<xsl:for-each select="input/param[@location='body' and @type!='']/param">-->

+                                                <!--<xsl:value-of select="@type"/> param<xsl:value-of select="position()"/>-->

+                                                        <!--= get<xsl:value-of select="@partname"/>(wrappedParam);-->

+                                            <!--</xsl:for-each>-->

+

+                                            <xsl:if test="string-length(normalize-space($returntype)) &gt; 0"><xsl:value-of select="$returnvariable"/> =</xsl:if>

+                                       skel.<xsl:value-of select="@name"/>(

+                                            <xsl:for-each select="input/param[@location='body' and @type!='']/param">

+                                                <xsl:if test="position() &gt; 1">,</xsl:if>

+                                                get<xsl:value-of select="@partname"/>(wrappedParam)

+                                            </xsl:for-each>

+

+                                        );

+

+                                        </xsl:when>

+                                        <xsl:otherwise>

+                                            <xsl:if test="string-length(normalize-space($returntype)) &gt; 0"><xsl:value-of select="$returnvariable"/> =</xsl:if>

+                                             skel.<xsl:value-of select="@name"/>(wrappedParam) ;

+                                        </xsl:otherwise>

+                                    </xsl:choose>

+                                </xsl:when>

+                                <xsl:otherwise>

+                                     <xsl:if test="string-length(normalize-space($returntype)) &gt; 0"><xsl:value-of select="$returnvariable"/> =</xsl:if>

+                                     skel.<xsl:value-of select="@name"/>();

+                                </xsl:otherwise>

+                            </xsl:choose>

+

+                            <xsl:choose>

+                                <xsl:when test="string-length(normalize-space($returntype)) &gt; 0">

+                                    envelope = toEnvelope(getSOAPFactory(msgContext), <xsl:value-of select="$returnvariable"/>, false);

+                                </xsl:when>

+                                <xsl:otherwise>

+                                    envelope = getSOAPFactory(msgContext).getDefaultEnvelope();

+                                </xsl:otherwise>

+                            </xsl:choose>

+                        </xsl:when>

+

+                        <xsl:otherwise>

+                            //Unknown style!! No code is generated

+                            throw new UnsupportedOperationException("Unknown Style");

+                        </xsl:otherwise>

+                    </xsl:choose>

+                </xsl:when>

+

+                <xsl:otherwise>

+                    envelope = <xsl:value-of select="$usedbmethod"/>(msgContext.getEnvelope().getBody().getFirstElement(), skel, getSOAPFactory(msgContext));

+                </xsl:otherwise>

+

+            </xsl:choose>

+

+            }

+        </xsl:for-each>

+

+        newMsgContext.setEnvelope(envelope);

+        }

+        <xsl:for-each select="fault-list/fault">

+            <xsl:if test="position()=1">}</xsl:if>catch (<xsl:value-of select="@name"/> e) {

+

+            org.apache.axis2.AxisFault f = createAxisFault(e);

+

+            f.setDetail(toOM(e.getFaultMessage(),false));

+

+            throw f;

+            }

+        </xsl:for-each>

+        <!-- put the extra bracket-->

+        <xsl:if test="count(fault-list/fault)=0">}</xsl:if>

+        catch (Exception e) {

+        throw org.apache.axis2.AxisFault.makeFault(e);

+        }

+        }

+        <!-- Call templates recursively-->

+        //<xsl:apply-templates><xsl:with-param name="context">message-receiver</xsl:with-param></xsl:apply-templates>

+

+        /**

+        *  A utility method that copies the namepaces from the SOAPEnvelope

+        */

+        private java.util.Map getEnvelopeNamespaces(org.apache.axiom.soap.SOAPEnvelope env){

+        java.util.Map returnMap = new java.util.HashMap();

+        java.util.Iterator namespaceIterator = env.getAllDeclaredNamespaces();

+        while (namespaceIterator.hasNext()) {

+        org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace) namespaceIterator.next();

+        returnMap.put(ns.getPrefix(),ns.getNamespaceURI());

+        }

+        return returnMap;

+        }

+

+        private org.apache.axis2.AxisFault createAxisFault(java.lang.Exception e) {

+        org.apache.axis2.AxisFault f;

+        Throwable cause = e.getCause();

+        if (cause != null) {

+            f = new org.apache.axis2.AxisFault(e.getMessage(), cause);

+        } else {

+            f = new org.apache.axis2.AxisFault(e.getMessage());

+        }

+

+        return f;

+    }

+

+        }//end of class

+    </xsl:template>

+    <!-- end of template for in-out message receiver -->

+

+    <!-- start of in-only -->

+    <xsl:template match="/interface[@basereceiver='org.apache.axis2.receivers.AbstractInMessageReceiver']">

+        <xsl:variable name="skeletonname"><xsl:value-of select="@skeletonInterfaceName"/></xsl:variable>

+        <xsl:variable name="dbsupportpackage"><xsl:value-of select="@dbsupportpackage"/></xsl:variable>

+

+        /**

+        * <xsl:value-of select="@name"/>.java

+        *

+        * This file was auto-generated from WSDL

+        * by the Apache Axis2 version: #axisVersion# #today#

+        */

+        package <xsl:value-of select="@package"/>;

+

+        /**

+        *  <xsl:value-of select="@name"/> message receiver

+        */

+

+        public class <xsl:value-of select="@name"/> extends <xsl:value-of select="@basereceiver"/>{

+

+        public void invokeBusinessLogic(org.apache.axis2.context.MessageContext inMessage) throws org.apache.axis2.AxisFault{

+

+        try {

+

+        // get the implementation class for the Web Service

+        Object obj = getTheImplementationObject(inMessage);

+

+        <xsl:value-of select="$skeletonname"/> skel = (<xsl:value-of select="$skeletonname"/>)obj;

+        //Out Envelop

+        org.apache.axiom.soap.SOAPEnvelope envelope = null;

+        //Find the axisOperation that has been set by the Dispatch phase.

+        org.apache.axis2.description.AxisOperation op = inMessage.getOperationContext().getAxisOperation();

+        if (op == null) {

+        throw new org.apache.axis2.AxisFault("Operation is not located, if this is doclit style the SOAP-ACTION should specified via the SOAP Action to use the RawXMLProvider");

+        }

+

+        java.lang.String methodName;

+        if(op.getName() != null &amp; (methodName = op.getName().getLocalPart()) != null){

+

+        <xsl:for-each select="method">

+

+            <xsl:variable name="namespace"><xsl:value-of select="@namespace"/></xsl:variable>

+            <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>

+            <xsl:variable name="style"><xsl:value-of select="@style"/></xsl:variable>

+

+            if("<xsl:value-of select="@name"/>".equals(methodName)){

+

+            <!-- If usedbmethod attribute present, gives name of method to call for implementation -->

+            <xsl:variable name="usedbmethod"><xsl:value-of select="@usedbmethod"/></xsl:variable>

+            <xsl:choose>

+                <xsl:when test="string-length(normalize-space($usedbmethod))=0">

+                    <xsl:choose>

+                        <xsl:when test="$style='rpc'">

+    

+                            //rpc style  -- this needs to be filled

+    

+                        </xsl:when>

+                        <xsl:when test="$style='document'">

+                            //doc style

+                            <xsl:variable name="paramCount"><xsl:value-of select="count(input/param[@location='body'])"/></xsl:variable>

+                            <xsl:choose>

+                                <xsl:when test="$paramCount &gt; 0"> skel.<xsl:value-of select="@name"/>(

+                                    <xsl:for-each select="input/param[@location='body']">

+                                        <xsl:if test="@type!=''">(<xsl:value-of select="@type"/>)fromOM(

+                                            inMessage.getEnvelope().getBody().getFirstElement(),

+                                            <xsl:value-of select="@type"/>.class,

+                                            getEnvelopeNamespaces(inMessage.getEnvelope())

+                                            )<xsl:if test="position() &gt; 1">,</xsl:if></xsl:if>

+                                    </xsl:for-each>);

+                                </xsl:when>

+                                <xsl:otherwise>skel.<xsl:value-of select="@name"/>();</xsl:otherwise>

+                            </xsl:choose>

+                        </xsl:when>

+    

+                        <xsl:otherwise>

+                            //Unknown style!! No code is generated

+                            throw new UnsupportedOperationException("Unknown Style");

+                        </xsl:otherwise>

+                    </xsl:choose>

+                </xsl:when>

+

+                <xsl:otherwise>

+                    <xsl:value-of select="$usedbmethod"/>(inMessage.getEnvelope().getBody().getFirstElement(), skel, null);

+                </xsl:otherwise>

+

+            </xsl:choose>

+

+            }

+        </xsl:for-each>

+

+        }

+        } catch (Exception e) {

+        throw org.apache.axis2.AxisFault.makeFault(e);

+        }

+        }

+

+

+        <!-- Call templates recursively-->

+        //<xsl:apply-templates><xsl:with-param name="context">message-receiver</xsl:with-param></xsl:apply-templates>

+

+

+

+        /**

+        *  A utility method that copies the namepaces from the SOAPEnvelope

+        */

+        private java.util.Map getEnvelopeNamespaces(org.apache.axiom.soap.SOAPEnvelope env){

+        java.util.Map returnMap = new java.util.HashMap();

+        java.util.Iterator namespaceIterator = env.getAllDeclaredNamespaces();

+        while (namespaceIterator.hasNext()) {

+        org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace) namespaceIterator.next();

+        returnMap.put(ns.getPrefix(),ns.getNamespaceURI());

+        }

+        return returnMap;

+        }

+

+

+

+        }//end of class

+

+    </xsl:template>

+

+    <!--Template for robust in message receiver -->

+    <xsl:template match="/interface[@basereceiver='org.apache.axis2.receivers.AbstractRobustInMessageReceiver']">

+

+        <xsl:variable name="skeletonname"><xsl:value-of select="@skeletonInterfaceName"/></xsl:variable>

+        <xsl:variable name="dbsupportpackage"><xsl:value-of select="@dbsupportpackage"/></xsl:variable>

+

+        /**

+        * <xsl:value-of select="@name"/>.java

+        *

+        * This file was auto-generated from WSDL

+        * by the Apache Axis2 version: #axisVersion# #today#

+        */

+        package <xsl:value-of select="@package"/>;

+

+        /**

+        *  <xsl:value-of select="@name"/> message receiver

+        */

+

+        public class <xsl:value-of select="@name"/> extends <xsl:value-of select="@basereceiver"/>{

+

+

+        public void invokeBusinessLogic(org.apache.axis2.context.MessageContext msgContext)

+        throws org.apache.axis2.AxisFault{

+

+        try {

+

+        // get the implementation class for the Web Service

+        Object obj = getTheImplementationObject(msgContext);

+

+        <xsl:value-of select="$skeletonname"/> skel = (<xsl:value-of select="$skeletonname"/>)obj;

+        //Out Envelop

+        org.apache.axiom.soap.SOAPEnvelope envelope = null;

+        //Find the axisOperation that has been set by the Dispatch phase.

+        org.apache.axis2.description.AxisOperation op = msgContext.getOperationContext().getAxisOperation();

+        if (op == null) {

+        throw new org.apache.axis2.AxisFault("Operation is not located, if this is doclit style the SOAP-ACTION should specified via the SOAP Action to use the RawXMLProvider");

+        }

+

+        java.lang.String methodName;

+        if(op.getName() != null &amp; (methodName = op.getName().getLocalPart()) != null){

+

+        <xsl:for-each select="method">

+

+            if("<xsl:value-of select="@name"/>".equals(methodName)){

+

+            <!-- If usedbmethod attribute present, gives name of method to call for implementation -->

+            <xsl:variable name="usedbmethod"><xsl:value-of select="@usedbmethod"/></xsl:variable>

+

+

+

+            <xsl:choose>

+                <xsl:when test="string-length(normalize-space($usedbmethod))=0">

+

+                    <xsl:variable name="namespace"><xsl:value-of select="@namespace"/></xsl:variable>

+

+                    <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>

+                    <xsl:variable name="style"><xsl:value-of select="@style"/></xsl:variable>

+

+                    <xsl:choose>

+                        <!-- We really don't need to make a difference between these-->

+                        <xsl:when test="$style='document' or $style='rpc'">

+                            //doc style

+                            <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>

+                            <xsl:variable name="inputtype" select="input/param[@location='body' and @type!='']/@type"/>

+

+                            <xsl:choose>

+                                <xsl:when test="$inputcount=1">

+                                     <xsl:value-of select="$inputtype"/> wrappedParam =

+                                                 (<xsl:value-of select="$inputtype"/>)fromOM(

+                        msgContext.getEnvelope().getBody().getFirstElement(),

+                        <xsl:value-of select="$inputtype"/>.class,

+                        getEnvelopeNamespaces(msgContext.getEnvelope()));

+                                    <!-- Even when the parameters are 1 we have to see whether we have the

+                                  wrapped parameters -->

+                                   <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>

+                                    <xsl:choose>

+                                        <xsl:when test="$inputWrappedCount &gt; 0">

+                                       skel.<xsl:value-of select="@name"/>(

+                                            <xsl:for-each select="input/param[@location='body' and @type!='']/param">

+                                                <xsl:if test="position() &gt; 1">,</xsl:if>

+                                                get<xsl:value-of select="@partname"/>(wrappedParam)

+                                            </xsl:for-each>

+

+                                        );

+

+                                        </xsl:when>

+                                        <xsl:otherwise>

+                                             skel.<xsl:value-of select="@name"/>(wrappedParam) ;

+                                        </xsl:otherwise>

+                                    </xsl:choose>

+                                </xsl:when>

+                                <xsl:otherwise>

+                                     skel.<xsl:value-of select="@name"/>();

+                                </xsl:otherwise>

+                            </xsl:choose>

+                                    envelope = getSOAPFactory(msgContext).getDefaultEnvelope();

+                        </xsl:when>

+

+                        <xsl:otherwise>

+                            //Unknown style!! No code is generated

+                            throw new UnsupportedOperationException("Unknown Style");

+                        </xsl:otherwise>

+                    </xsl:choose>

+                </xsl:when>

+

+                <xsl:otherwise>

+                    envelope = <xsl:value-of select="$usedbmethod"/>(msgContext.getEnvelope().getBody().getFirstElement(), skel, getSOAPFactory(msgContext));

+                </xsl:otherwise>

+

+            </xsl:choose>

+

+            }

+        </xsl:for-each>

+        }

+        <xsl:for-each select="fault-list/fault">

+            <xsl:if test="position()=1">}</xsl:if>catch (<xsl:value-of select="@name"/> e) {

+

+            org.apache.axis2.AxisFault f = createAxisFault(e);

+

+            f.setDetail(toOM(e.getFaultMessage(),false));

+

+            throw f;

+            }

+        </xsl:for-each>

+        <!-- put the extra bracket-->

+        <xsl:if test="count(fault-list/fault)=0">}</xsl:if>

+        catch (Exception e) {

+        throw org.apache.axis2.AxisFault.makeFault(e);

+        }

+        }

+        <!-- Call templates recursively-->

+        //<xsl:apply-templates><xsl:with-param name="context">message-receiver</xsl:with-param></xsl:apply-templates>

+

+        /**

+        *  A utility method that copies the namepaces from the SOAPEnvelope

+        */

+        private java.util.Map getEnvelopeNamespaces(org.apache.axiom.soap.SOAPEnvelope env){

+        java.util.Map returnMap = new java.util.HashMap();

+        java.util.Iterator namespaceIterator = env.getAllDeclaredNamespaces();

+        while (namespaceIterator.hasNext()) {

+        org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace) namespaceIterator.next();

+        returnMap.put(ns.getPrefix(),ns.getNamespaceURI());

+        }

+        return returnMap;

+        }

+

+        private org.apache.axis2.AxisFault createAxisFault(java.lang.Exception e) {

+        org.apache.axis2.AxisFault f;

+        Throwable cause = e.getCause();

+        if (cause != null) {

+            f = new org.apache.axis2.AxisFault(e.getMessage(), cause);

+        } else {

+            f = new org.apache.axis2.AxisFault(e.getMessage());

+        }

+

+        return f;

+    }

+

+        }//end of class

+    </xsl:template>

+    <!-- end of template for robust in message receiver -->

+

+</xsl:stylesheet>

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl
new file mode 100644
index 0000000..4d9c3e8
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl
@@ -0,0 +1,34 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+
+
+    <!-- #################################################################################  -->
+    <!-- ############################   none template!!!   ##############################  -->
+    <xsl:template match="databinders[@dbtype='none']">
+        private  org.apache.axiom.om.OMElement fromOM(
+        org.apache.axiom.om.OMElement param,
+        java.lang.Class type,
+        java.util.Map extraNamespaces){
+        return param;
+        }
+
+        private  org.apache.axiom.om.OMElement  toOM(org.apache.axiom.om.OMElement param, boolean optimizeContent){
+        return param;
+        }
+
+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, org.apache.axiom.om.OMElement param, boolean optimizeContent){
+        org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();
+        envelope.getBody().addChild(param);
+        return envelope;
+        }
+
+        /**
+        *  get the default envelope
+        */
+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory){
+        return factory.getDefaultEnvelope();
+        }
+
+    </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/PolicyExtensionTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/PolicyExtensionTemplate.xsl
new file mode 100644
index 0000000..91e2098
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/PolicyExtensionTemplate.xsl
@@ -0,0 +1,123 @@
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+    <xsl:template match="module-codegen-policy-extensions">
+        
+        <xsl:if test="//createSequence">
+        /**
+         * Starts a reliabel message sequence
+         */
+        public void startSequence() {
+            _getServiceClient().getOptions().setProperty("START_RM_SEQUENCE", "true");            
+        }
+        </xsl:if>
+        
+        <xsl:if test="//setLastMessage">
+        /**
+         * Marks the last message for the sequence
+         */
+         public void setLastMessage() {
+             _getServiceClient().getOptions().setProperty("Sandesha2ClientAPIPropertyWSRMLastMessage", "true");
+         }
+        </xsl:if>
+        
+        <xsl:if test="//endSequence">
+        /**
+         * Terminates the reliabel message sequence
+         */
+        public void endSequence() {
+            _getServiceClient().getOptions().setProperty("END_RM_SEQUENCE", "true");
+        }
+        </xsl:if>
+        
+        <xsl:variable name="optimized">
+            <xsl:value-of select="//optimizeContent"/>
+        </xsl:variable>
+        
+        
+        <xsl:if test="//security-codegen-policy-extensions/usernametoken-action">
+    // auto genenrated stub methods 
+    
+    public void setUsername(java.lang.String username) {
+        _serviceClient.getOptions().setProperty(org.apache.ws.security.handler.WSHandlerConstants.USER, username);
+    }
+
+    public void setPassword(java.lang.String password) {
+        _UTCallback pwCallback = new _UTCallback();
+        pwCallback.setPassword(password);
+    _serviceClient
+                .getOptions()
+                .setProperty(
+                        org.apache.ws.security.handler.WSHandlerConstants.PASSWORD_TYPE,
+                        "PasswordText");
+        _serviceClient
+                .getOptions()
+                .setProperty(
+                        org.apache.ws.security.handler.WSHandlerConstants.PW_CALLBACK_REF,
+                        pwCallback);    }
+
+    private class _UTCallback implements
+            javax.security.auth.callback.CallbackHandler {
+
+        private java.lang.String password;
+
+        public _UTCallback() {
+        }
+
+        public void setPassword(java.lang.String password) {
+            this.password = password;
+        }
+
+        public void handle(javax.security.auth.callback.Callback[] callbacks)
+
+        throws java.io.IOException,
+                javax.security.auth.callback.UnsupportedCallbackException {
+
+            for (int i = 0; i &lt; callbacks.length; i++) {
+
+                if (callbacks[i] instanceof org.apache.ws.security.WSPasswordCallback) {
+
+                    org.apache.ws.security.WSPasswordCallback pc = (org.apache.ws.security.WSPasswordCallback) callbacks[i];
+
+                    if (pc.getIdentifer().equals(getUsername())) {
+                        pc.setPassword(password);
+
+                    } else {
+                        pc.setPassword(password);
+                    }
+
+                } else {
+
+                    throw new javax.security.auth.callback.UnsupportedCallbackException(
+                            callbacks[i], "Unrecognized Callback");
+                }
+            }
+        }
+
+        private java.lang.String getUsername() {
+            return (String) _serviceClient.getOptions().getProperty(
+                    org.apache.ws.security.handler.WSHandlerConstants.USER);
+        }
+    }
+        </xsl:if>
+        
+
+        <xsl:choose>
+            <xsl:when test="$optimized">
+            private void setOpNameArray(){
+            opNameArray = new javax.xml.namespace.QName[] {
+            <xsl:for-each select="optimizeContent/opName">
+                <xsl:if test="position()>1">,
+                </xsl:if>new javax.xml.namespace.QName("<xsl:value-of select="@ns-url"/>","<xsl:value-of select="@localName"/>")
+            </xsl:for-each>
+            };
+           }
+           </xsl:when>
+            <xsl:otherwise>
+            private void setOpNameArray(){
+            opNameArray = null;
+            }
+           </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/SkeletonInterfaceTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/SkeletonInterfaceTemplate.xsl
new file mode 100644
index 0000000..cbb89d5
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/SkeletonInterfaceTemplate.xsl
@@ -0,0 +1,54 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:template match="/interface">

+    /**

+     * <xsl:value-of select="@name"/>.java

+     *

+     * This file was auto-generated from WSDL

+     * by the Apache Axis2 version: #axisVersion# #today#

+     */

+    package <xsl:value-of select="@package"/>;

+    /**

+     *  <xsl:value-of select="@name"/> java skeleton interface for the axisService

+     */

+    public interface <xsl:value-of select="@name"></xsl:value-of> {

+     <xsl:for-each select="method">

+         <xsl:variable name="count"><xsl:value-of select="count(output/param)"/></xsl:variable>

+         <xsl:variable name="outputtype"><xsl:value-of select="output/param/@type"/></xsl:variable>

+         <!-- regardless of the sync or async status, the generated method signature would be just a usual

+               java method -->

+        /**

+         * Auto generated method signature

+         */

+        public  <xsl:if test="$count=0 or $outputtype=''">void</xsl:if><xsl:if test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:if><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+        (

+          <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>

+                    <xsl:choose>

+                        <xsl:when test="$inputcount=1">

+                            <!-- Even when the parameters are 1 we have to see whether we have the

+                          wrapped parameters -->

+                            <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>

+                            <xsl:choose>

+                                <xsl:when test="$inputWrappedCount &gt; 0">

+                                   <xsl:for-each select="input/param[@location='body' and @type!='']/param">

+                                        <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+                                    </xsl:for-each>

+                                </xsl:when>

+                                <xsl:otherwise>

+                                    <xsl:value-of select="input/param[@location='body' and @type!='']/@type"/><xsl:text> </xsl:text><xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>

+                                </xsl:otherwise>

+                            </xsl:choose>

+                        </xsl:when>

+                        <xsl:otherwise><!-- Just leave it - nothing we can do here --></xsl:otherwise>

+                    </xsl:choose>     

+         )

+         <!--add the faults-->

+           <xsl:for-each select="fault/param[@type!='']">

+               <xsl:if test="position()=1">throws </xsl:if>

+               <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@name"/>

+           </xsl:for-each>;

+     </xsl:for-each>

+

+         }

+    </xsl:template>

+ </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl
new file mode 100644
index 0000000..c4f49de
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl
@@ -0,0 +1,61 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:template match="/interface">

+    /**

+     * <xsl:value-of select="@name"/>.java

+     *

+     * This file was auto-generated from WSDL

+     * by the Apache Axis2 version: #axisVersion# #today#

+     */

+    package <xsl:value-of select="@package"/>;

+    /**

+     *  <xsl:value-of select="@name"/> java skeleton for the axisService

+     */

+    public class <xsl:value-of select="@name"></xsl:value-of>

+        <xsl:if test="@skeletonInterfaceName"> implements <xsl:value-of select="@skeletonInterfaceName"/></xsl:if>{

+     <xsl:for-each select="method">

+         <xsl:variable name="count"><xsl:value-of select="count(output/param)"/></xsl:variable>

+         <xsl:variable name="outputtype" select="output/param/@type"/>

+         <!-- regardless of the sync or async status, the generated method signature would be just a usual

+               java method -->

+        /**

+         * Auto generated method signature

+         <!--  select only the body parameters  -->

+          <xsl:for-each select="input/param[@location='body']">

+            <xsl:if test="@type!=''">* @param <xsl:value-of select="@name"></xsl:value-of><xsl:text>

+         </xsl:text></xsl:if></xsl:for-each>

+         */

+        public  <xsl:if test="$count=0 or $outputtype=''">void</xsl:if><xsl:if test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:if><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+                  (

+          <xsl:variable name="inputcount" select="count(input/param[@location='body' and @type!=''])"/>

+                    <xsl:choose>

+                        <xsl:when test="$inputcount=1">

+                            <!-- Even when the parameters are 1 we have to see whether we have the

+                                 wrapped parameters -->

+                            <xsl:variable name="inputWrappedCount" select="count(input/param[@location='body' and @type!='']/param)"/>

+                            <xsl:choose>

+                                <xsl:when test="$inputWrappedCount &gt; 0">

+                                   <xsl:for-each select="input/param[@location='body' and @type!='']/param">

+                                        <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>

+                                    </xsl:for-each>

+                                </xsl:when>

+                                <xsl:otherwise>

+                                    <xsl:value-of select="input/param[@location='body' and @type!='']/@type"/><xsl:text> </xsl:text><xsl:value-of select="input/param[@location='body' and @type!='']/@name"/>

+                                </xsl:otherwise>

+                            </xsl:choose>

+                        </xsl:when>

+                        <xsl:otherwise><!-- Just leave it - nothing we can do here --></xsl:otherwise>

+                    </xsl:choose>

+          )

+         <!--add the faults-->

+           <xsl:for-each select="fault/param[@type!='']">

+               <xsl:if test="position()=1">throws </xsl:if>

+               <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@name"/>

+           </xsl:for-each>{

+                //Todo fill this with the necessary business logic

+                <xsl:if test="string-length(normalize-space($outputtype)) &gt; 0">throw new  java.lang.UnsupportedOperationException("Please implement " + this.getClass().getName() + "#<xsl:value-of select="@name"/>");</xsl:if>

+        }

+     </xsl:for-each>

+    }

+    </xsl:template>

+ </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
new file mode 100644
index 0000000..338f172
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
@@ -0,0 +1,228 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="text"/>
+    <!-- Incldue the test object creation template  -->
+    <xsl:include href="testObject"/>
+
+    <xsl:template match="/class">
+    <xsl:variable name="interfaceName"><xsl:value-of select="@interfaceName"/></xsl:variable>
+    <xsl:variable name="package"><xsl:value-of select="@package"/></xsl:variable>
+    <xsl:variable name="callbackname"><xsl:value-of select="@callbackname"/></xsl:variable>
+    <xsl:variable name="stubname"><xsl:value-of select="@stubname"/></xsl:variable>
+    <xsl:variable name="isSync"><xsl:value-of select="@isSync"/></xsl:variable>
+    <xsl:variable name="isAsync"><xsl:value-of select="@isAsync"/></xsl:variable>
+
+    /**
+     * <xsl:value-of select="@name"/>.java
+     *
+     * This file was auto-generated from WSDL
+     * by the Apache Axis2 version: #axisVersion# #today#
+     */
+    package <xsl:value-of select="$package"/>;
+
+    /*
+     *  <xsl:value-of select="@name"/> Junit test case
+    */
+
+    public class <xsl:value-of select="@name"/> extends junit.framework.TestCase{
+
+     <xsl:for-each select="method">
+         <xsl:if test="@mep='12'">
+          <xsl:variable name="outputtype"><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:variable>
+          <xsl:if test="$isSync='1'">
+        /**
+         * Auto generated test method
+         */
+        public  void test<xsl:value-of select="@name"/>() throws java.lang.Exception{
+
+        <xsl:value-of select="$package"/>.<xsl:value-of select="$stubname"/> stub =
+                    new <xsl:value-of select="$package"/>.<xsl:value-of select="$stubname"/>();//the default implementation should point to the right endpoint
+
+           <xsl:choose>
+             <xsl:when test="count(input/param)>0">
+                <xsl:for-each select="input/param[@type!='']">
+                    <xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text>=
+                                                        </xsl:text>(<xsl:value-of select="@type"/>)getTestObject(<xsl:value-of select="@type"/>.class);
+                    // todo Fill in the <xsl:value-of select="@name"/> here
+                </xsl:for-each>
+                <xsl:choose>
+                    <xsl:when test="$outputtype=''">
+                    <!-- for now think there is only one input element -->
+                    //There is no output to be tested!
+                    stub.<xsl:value-of select="@name"/>(
+                        <xsl:for-each select="input/param[@type!='']">
+                             <xsl:variable name="opname" select="@opname"/>
+                             <xsl:variable name="paramname" select="@name"/>
+                             <xsl:variable name="paramcount" select="count(param[@type!='' and @opname=$opname])"/>
+
+                             <xsl:choose>
+                                 <xsl:when test="$paramcount > 0">
+                                      <xsl:for-each select="param[@type!='' and @opname=$opname]">
+                                            <xsl:if test="position()>1">,</xsl:if>get<xsl:value-of select="@partname"/>(<xsl:value-of select="$paramname"/>)
+                                      </xsl:for-each>
+                                 </xsl:when>
+                                 <xsl:otherwise>
+                                     <xsl:if test="@type!=''"><xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@name"/></xsl:if>
+                                 </xsl:otherwise>
+                             </xsl:choose>
+                        </xsl:for-each>);
+                    </xsl:when>
+                    <xsl:otherwise>
+                        assertNotNull(stub.<xsl:value-of select="@name"/>(
+                        <xsl:for-each select="input/param[@type!='']">
+
+                             <xsl:variable name="opname" select="@opname"/>
+                             <xsl:variable name="paramname" select="@name"/>
+                             <xsl:variable name="paramcount" select="count(param[@type!='' and @opname=$opname])"/>
+
+                             <xsl:choose>
+                                 <xsl:when test="$paramcount > 0">
+                                      <xsl:for-each select="param[@type!='' and @opname=$opname]">
+                                            <xsl:if test="position()>1">,</xsl:if>get<xsl:value-of  select="@partname"/>(<xsl:value-of select="$paramname"/>)
+                                      </xsl:for-each>
+                                 </xsl:when>
+                                 <xsl:otherwise>
+                                     <xsl:if test="@type!=''"><xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@name"/></xsl:if>
+                                 </xsl:otherwise>
+                             </xsl:choose>
+                             <!-- if the input/param element contain any attributes then we have to unwrap them-->
+
+                        </xsl:for-each>));
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:otherwise>
+                  <xsl:choose>
+                    <xsl:when test="$outputtype=''">
+                    //There is no output to be tested!
+                    stub.<xsl:value-of select="@name"/>();
+                    </xsl:when>
+                    <xsl:otherwise>
+                    assertNotNull(stub.<xsl:value-of select="@name"/>());
+                    </xsl:otherwise>
+                </xsl:choose>
+             </xsl:otherwise>
+            </xsl:choose>
+
+
+
+        }
+        </xsl:if>
+        <xsl:if test="$isAsync='1'">
+            <xsl:variable name="tempCallbackName">tempCallback<xsl:value-of select="generate-id()"/></xsl:variable>
+         /**
+         * Auto generated test method
+         */
+        public  void testStart<xsl:value-of select="@name"/>() throws java.lang.Exception{
+            <xsl:value-of select="$package"/>.<xsl:value-of select="$stubname"/> stub = new <xsl:value-of select="$package"/>.<xsl:value-of select="$stubname"/>();
+             <xsl:choose>
+             <xsl:when test="count(input/param)>0">
+                  <xsl:for-each select="input/param[@type!='']">
+                    <xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text>=
+                                                        </xsl:text>(<xsl:value-of select="@type"/>)getTestObject(<xsl:value-of select="@type"/>.class);
+                    // todo Fill in the <xsl:value-of select="@name"/> here
+                </xsl:for-each>
+
+                stub.start<xsl:value-of select="@name"/>(
+                         <xsl:for-each select="input/param[@type!='']">
+                             <xsl:variable name="opname" select="@opname"/>
+                             <xsl:variable name="paramname" select="@name"/>
+                             <xsl:variable name="paramcount" select="count(param[@type!='' and @opname=$opname])"/>
+
+                             <xsl:choose>
+                                 <xsl:when test="$paramcount > 0">
+                                      <xsl:for-each select="param[@type!='' and @opname=$opname]">
+                                           <xsl:if test="position()>1">,</xsl:if>get<xsl:value-of select="@partname"/>(<xsl:value-of select="$paramname"/>)
+                                      </xsl:for-each>
+                                 </xsl:when>
+                                 <xsl:otherwise>
+                                     <xsl:if test="@type!=''"><xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@name"/></xsl:if>
+                                 </xsl:otherwise>
+                             </xsl:choose>
+                        </xsl:for-each>,
+                    new <xsl:value-of select="$tempCallbackName"/>()
+                );
+              </xsl:when>
+              <xsl:otherwise>
+                stub.start<xsl:value-of select="@name"/>(
+                    new <xsl:value-of select="$tempCallbackName"/>()
+                );
+             </xsl:otherwise>
+            </xsl:choose>
+
+
+        }
+
+        private class <xsl:value-of select="$tempCallbackName"/>  extends <xsl:value-of select="$package"/>.<xsl:value-of select="$callbackname"/>{
+            public <xsl:value-of select="$tempCallbackName"/>(){ super(null);}
+
+            public void receiveResult<xsl:value-of select="@name"/>(org.apache.axis2.client.async.AsyncResult result) {
+                assertNotNull(result.getResponseEnvelope().getBody().getFirstElement());
+            }
+
+            public void receiveError<xsl:value-of select="@name"/>(java.lang.Exception e) {
+                fail();
+            }
+
+        }
+      </xsl:if>
+      <!-- end of in-out mep -->
+      </xsl:if>
+      <!-- start of in-only mep-->
+      <xsl:if test="@mep='10' or @mep='11'">
+          /**
+          * Auto generated test method
+          */
+          public  void test<xsl:value-of select="@name"/>() throws java.lang.Exception{
+
+          <xsl:value-of select="$package"/>.<xsl:value-of select="$stubname"/> stub =
+          new <xsl:value-of select="$package"/>.<xsl:value-of select="$stubname"/>();//the default implementation should point to the right endpoint
+          <xsl:choose>
+              <xsl:when test="count(input/param)>0">
+                  <xsl:for-each select="input/param[@type!='']">
+                      <xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text>=
+                  </xsl:text>(<xsl:value-of select="@type"/>)getTestObject(<xsl:value-of select="@type"/>.class);
+                      // todo Fill in the <xsl:value-of select="@name"/> here
+                  </xsl:for-each>
+
+                  //There is no output to be tested!
+                  stub.<xsl:value-of select="@name"/>(
+                  <xsl:for-each select="input/param[@type!='']">
+                      <xsl:variable name="opname" select="@opname"/>
+                             <xsl:variable name="paramname" select="@name"/>
+                             <xsl:variable name="paramcount" select="count(param[@type!='' and @opname=$opname])"/>
+                             <xsl:variable name="shorttype" select="@shorttype"/>
+
+                             <xsl:choose>
+                                 <xsl:when test="$paramcount > 0">
+                                      <xsl:for-each select="param[@type!='' and @opname=$opname]">
+                                            <xsl:if test="position()>1">,</xsl:if>get<xsl:value-of select="@partname"/>(<xsl:value-of select="$paramname"/>)
+                                      </xsl:for-each>
+                                 </xsl:when>
+                                 <xsl:otherwise>
+                                     <xsl:if test="@type!=''"><xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@name"/></xsl:if>
+                                 </xsl:otherwise>
+                             </xsl:choose>
+                  </xsl:for-each>);
+
+              </xsl:when>
+              <xsl:otherwise>
+
+
+                  //There is no output to be tested!
+                  stub.<xsl:value-of select="@name"/>();
+
+
+              </xsl:otherwise>
+          </xsl:choose>
+          }
+      </xsl:if>
+
+     </xsl:for-each>
+
+       <!-- generate the test object -->
+        <xsl:apply-templates/>
+
+    }
+    </xsl:template>
+
+ </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestObjectCreationTemplate.xsl b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestObjectCreationTemplate.xsl
new file mode 100644
index 0000000..7d8a1f0
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/TestObjectCreationTemplate.xsl
@@ -0,0 +1,157 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+    <xsl:key name="paramsIn" match="//databinders/param[@direction='in']" use="@type"/>

+    <xsl:key name="innerParams" match="//databinders/param[@direction='in']/param" use="@partname"/>

+

+    <!-- #################################################################################  -->

+    <!-- ############################   xmlbeans template   ##############################  -->

+    <xsl:template match="databinders[@dbtype='xmlbeans']">

+        //Create the desired XmlObject and provide it as the test object

+        public  org.apache.xmlbeans.XmlObject getTestObject(java.lang.Class type) throws Exception{

+        java.lang.reflect.Method creatorMethod = null;

+                if (org.apache.xmlbeans.XmlObject.class.isAssignableFrom(type)){

+                    Class[] declaredClasses = type.getDeclaredClasses();

+                    for (int i = 0; i &lt; declaredClasses.length; i++) {

+                        Class declaredClass = declaredClasses[i];

+                        if (declaredClass.getName().endsWith("$Factory")){

+                            creatorMethod = declaredClass.getMethod("newInstance",null);

+                            break;

+                        }

+

+                    }

+                }

+                if (creatorMethod!=null){

+                    return  (org.apache.xmlbeans.XmlObject)creatorMethod.invoke(null,null);

+                }else{

+                    throw new Exception("Creator not found!");

+                }

+

+        }

+

+         <xsl:for-each select="opnames/name">

+

+            <xsl:variable name="opname" select="."/>

+

+              <xsl:if test="count(../../param[@type!='' and @direction='in' and @opname=$opname])=1">

+                    <!-- generate the get methods -->

+                   <xsl:variable name="inputElement" select="../../param[@type!='' and @direction='in' and @opname=$opname]"></xsl:variable>

+                   <xsl:variable name="inputElementType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@type"></xsl:variable>

+                   <xsl:variable name="inputElementShortType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@shorttype"></xsl:variable>

+

+                    <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+                        <xsl:variable name="paramElement" select="."></xsl:variable>

+                        <xsl:variable name="partName" select="@partname"></xsl:variable>

+

+                        <xsl:if test="(generate-id($paramElement) = generate-id(key('innerParams', $partName)[1])) or

+                        (generate-id($inputElement) = generate-id(key('paramsIn', $inputElementType)[1]))">

+

+                            private <xsl:value-of select="@type"/> get<xsl:value-of select="@partname"/>(

+                            <xsl:value-of select="../@type"/> wrappedType){

+

+                            <!-- there is not difference betwee having a seperate complex type and the

+                                inline complex type implementation -->

+                            <xsl:choose>

+                                 <xsl:when test="@array">

+                                     return wrappedType.get<xsl:value-of select="substring-before($inputElementShortType,'Document')"/>().xget<xsl:value-of select="$partName"/>Array();

+                                 </xsl:when>

+                                 <xsl:otherwise>

+                                     return wrappedType.get<xsl:value-of select="substring-before($inputElementShortType,'Document')"/>().xget<xsl:value-of select="$partName"/>();

+                                 </xsl:otherwise>

+                            </xsl:choose>

+                        }

+                       </xsl:if>

+                    </xsl:for-each>

+                </xsl:if>

+        </xsl:for-each>

+

+    </xsl:template>

+    <!-- #################################################################################  -->

+    <!-- ############################   jaxme template   ##############################  -->

+    <xsl:template match="databinders[@dbtype='jaxme']">

+        //Create the desired Object and provide it as the test object

+        public  java.lang.Object getTestObject(java.lang.Class type) throws Exception{

+            Class factoryClazz = org.apache.axis2.util.Loader.loadClass(type.getPackage().getName() + ".ObjectFactory"); 

+            Object factory = factoryClazz.newInstance();   

+            java.lang.reflect.Method creatorMethod = factoryClazz.getMethod("newInstance", new Class[]{ Class.class });

+            if (creatorMethod != null) {

+                return creatorMethod.invoke(factory, null);

+            } else {

+                throw new Exception("newInstance method not found!");

+            }

+        }

+

+    </xsl:template>

+    <!-- #################################################################################  -->

+    <!-- ############################   ADB template   ###################################  -->

+    <xsl:template match="databinders[@dbtype='adb']">

+        //Create an ADBBean and provide it as the test object

+        public org.apache.axis2.databinding.ADBBean getTestObject(java.lang.Class type) throws Exception{

+           return (org.apache.axis2.databinding.ADBBean) type.newInstance();

+        }

+

+        <!-- generate the getter methods for each databinders if it is in uwwrapped mode -->

+        <xsl:for-each select="opnames/name">

+            <xsl:variable name="opname" select="."/>

+

+            <xsl:if test="count(../../param[@type!='' and @direction='in' and @opname=$opname])=1">

+                    <!-- generate the get methods -->

+                    <xsl:variable name="inputElement" select="../../param[@type!='' and @direction='in' and @opname=$opname]"></xsl:variable>

+                    <xsl:variable name="inputElementType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@type"></xsl:variable>

+                    <xsl:variable name="inputElementShortType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@shorttype"></xsl:variable>

+                    <xsl:variable name="inputElementComplexType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@complextype"></xsl:variable>

+

+                    <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+

+                        <xsl:variable name="paramElement" select="."></xsl:variable>

+                        <xsl:variable name="partName" select="@partname"></xsl:variable>

+

+                        <xsl:if test="(generate-id($paramElement) = generate-id(key('innerParams', $partName)[1])) or

+                            (generate-id($inputElement) = generate-id(key('paramsIn', $inputElementType)[1]))">

+

+                            private <xsl:value-of select="@type"/> get<xsl:value-of select="@partname"/>(

+                            <xsl:value-of select="../@type"/> wrappedType){

+                            <xsl:choose>

+                                <!--<xsl:when test="$inputElementComplexType != ''">-->

+                                <xsl:when test="string-length(normalize-space($inputElementComplexType)) > 0">

+                                    return wrappedType.get<xsl:value-of select="$inputElementShortType"/>().get<xsl:value-of select="@partname"/>();

+                                </xsl:when>

+                                <xsl:otherwise>

+                                    return wrappedType.get<xsl:value-of select="@partname"/>();

+                                </xsl:otherwise>

+                            </xsl:choose>

+                            }

+                         </xsl:if>

+                    </xsl:for-each>

+                </xsl:if>

+        </xsl:for-each>

+

+    </xsl:template>

+    <!-- #################################################################################  -->

+    <!-- ############################   Jaxbri template   ###################################  -->

+    <xsl:template match="databinders[@dbtype='jaxbri']">

+        //Create an object and provide it as the test object

+        public Object getTestObject(java.lang.Class type) throws Exception{

+           return type.newInstance();

+        }

+    </xsl:template>

+    <!-- #################################################################################  -->

+    <!-- ############################   jaxme template   ##############################  -->

+    <xsl:template match="databinders[@dbtype='jibx']">

+        // create the desired object and provide it as the test object

+        public java.lang.Object getTestObject(java.lang.Class type) throws Exception {

+            return type.newInstance();

+        }

+

+    </xsl:template>

+    <!-- #################################################################################  -->

+    <!-- ############################   none template!!!   ###############################  -->

+    <xsl:template match="databinders[@dbtype='none']">

+        //Create an OMElement and provide it as the test object

+        public org.apache.axiom.om.OMElement getTestObject(java.lang.Object dummy){

+           org.apache.axiom.om.OMFactory factory = org.apache.axiom.om.OMAbstractFactory.getOMFactory();

+           org.apache.axiom.om.OMNamespace defNamespace = factory.createOMNamespace("",null);

+           return org.apache.axiom.om.OMAbstractFactory.getOMFactory().createOMElement("test",defNamespace);

+        }

+    </xsl:template>

+

+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/package.html b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/package.html
new file mode 100644
index 0000000..58a9039
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/template/java/package.html
@@ -0,0 +1,6 @@
+<html>

+<body>

+This package is a "non class containing" one that has the xsl templates for the Java class generation

+

+</body>

+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/ConfigPropertyFileLoader.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/ConfigPropertyFileLoader.java
new file mode 100644
index 0000000..b64659e
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/ConfigPropertyFileLoader.java
@@ -0,0 +1,433 @@
+/*
+* Copyright 2004,2005 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.axis2.wsdl.util;
+
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+import java.util.List;
+import java.util.Arrays;
+
+/**
+ * Loads the properties from the config properties.
+ */
+public class ConfigPropertyFileLoader {
+
+
+
+    private static Map dbSupporterTemplateNameMap;
+    private static String testObjectTemplateName;
+    private static String srcFolderName;
+    private static String resourceFolderName;
+    private static String[] extensionClassNames;
+    private static String[] postExtensionClassNames;
+    private static String[] thirdPartySchemaNames;
+    private static String[] languageTypes;
+    private static String[] databindingFrameworkNames;
+    private static String[] unwrapSuppoerteddatabindingFrameworkNames;
+    private static String[] unwrapDirectdatabindingFrameworkNames;
+
+    private static Map languageEmitterMap;
+    private static Map languageSpecificPropertiesMap;
+    private static Map databindingFrameworkNameToExtensionMap;
+
+    private static String defaultLanguage;
+    private static String defaultDBFrameworkName;
+
+
+    private static final String CODE_GEN_KEY_PREFIX = "codegen.extension";
+    private static final String POST_CODE_GEN_KEY_PREFIX = "post.codegen.extension";
+    private static final String THIRD_PARTY_SCHEMA_KEY_PREFIX = "codegen.thirdparty.schema";
+    private static final String LANGUAGE_TYPE_KEY_PREFIX = "codegen.languages";
+    private static final String DEFAULT_LANGUAGE_TYPE_KEY = "codegen.languages.default";
+    private static final String EMITTER_CLASS_KEY = "codegen.emitters";
+    private static final String DATA_BINDING_FRAMEWORK_NAME_KEY = "codegen.databinding.frameworks";
+    private static final String DATA_BINDING_UNWRAP_SUPPORTED_FRAMEWORK_NAME_KEY = "codegen.databinding.unwrap.supported";
+    private static final String DATA_BINDING_UNWRAP_DIRECT_FRAMEWORK_NAME_KEY = "codegen.databinding.unwrap.direct";
+    private static final String DATA_BINDING_FRAMEWORK_DEFAULT_NAME_KEY = "codegen.databinding.frameworks.default";
+    private static final String DATA_BINDING_FRAMEWORK_EXTENSION_NAME_KEY = "codegen.databinding.extensions";
+    private static final String DATA_BINDING_TEMPLATE_NAME_KEY_PREFIX = "codegen.databinding.";
+    private static final String DATA_BINDING_TEMPLATE_NAME_KEY_SUFFIX = "template";
+    private static final String DATA_BINDING_TEST_OBJECT_TEMPLATE_NAME_KEY = "codegen.databinding.testobject.template";
+    private static final String SOURCE_FOLDER_NAME_KEY = "codegen.general.src.name";
+    private static final String RESOURCE_FOLDER_NAME_KEY = "codegen.general.resource.name";
+
+
+    public static final String DEFAULT_CODEGEN_CONFIG_PROPERTIES =
+            "/org/apache/axis2/wsdl/codegen/codegen-config.properties";
+
+    /* Note - Should be a non regular expression character. If not it should be properly escaped */
+    private static final String SEPARATOR_CHAR = ",";
+
+    /**
+     * Loads a stream from the given
+     * @param propertiesReference
+     * @throws FileNotFoundException
+     */
+    private static InputStream getStream(String propertiesReference) throws FileNotFoundException {
+        InputStream stream = ConfigPropertyFileLoader.class.getResourceAsStream(propertiesReference);
+        if (stream == null) {
+            URL url = ConfigPropertyFileLoader.class.getResource(propertiesReference);
+            stream = new FileInputStream(url.toString());
+        }
+        return stream;
+    }
+
+    static {
+        loadAllProperties();
+    }
+
+    public static void reload(){
+        reset();
+        loadAllProperties();
+    }
+
+    private static void reset(){
+        dbSupporterTemplateNameMap = new HashMap();
+        testObjectTemplateName = null;
+        extensionClassNames = null;
+        thirdPartySchemaNames = null;
+        languageTypes = null;
+        databindingFrameworkNames = null;
+        languageEmitterMap = null;
+        languageSpecificPropertiesMap = null;
+        databindingFrameworkNameToExtensionMap = null;
+        defaultLanguage = null;
+        defaultDBFrameworkName = null;
+        srcFolderName = null;
+        resourceFolderName = null;
+
+    }
+    private static void loadAllProperties() {
+        try {
+            //look for the system property "org.apache.axis2.codegen.config" to for a property
+            //entry refering to the config properties
+            String property = System.getProperty("org.apache.axis2.codegen.config");
+            InputStream stream;
+
+            if (property!=null){
+                stream = getStream(property);
+            }else{
+                stream = getStream(DEFAULT_CODEGEN_CONFIG_PROPERTIES);
+            }
+
+            if (stream==null){
+                throw new RuntimeException(CodegenMessages.getMessage("propfileload.generalException"));
+            }
+
+            Properties props = new Properties();
+            props.load(stream);
+
+            //create a new map for the lang specific properties
+            languageSpecificPropertiesMap = new HashMap();
+
+            //create a new map for the databinding frameworks and their extensions
+            databindingFrameworkNameToExtensionMap = new HashMap();
+
+            //load the extension class names
+            String tempString = props.getProperty(CODE_GEN_KEY_PREFIX);
+            if (tempString != null) {
+                extensionClassNames = tempString.split(SEPARATOR_CHAR);
+
+            }
+
+            //load the post extension class names
+            tempString = props.getProperty(POST_CODE_GEN_KEY_PREFIX);
+            if (tempString != null) {
+                postExtensionClassNames = tempString.split(SEPARATOR_CHAR);
+
+            }
+            //load the data binding framework names
+            tempString = props.getProperty(DATA_BINDING_FRAMEWORK_NAME_KEY);
+            if (tempString != null) {
+                databindingFrameworkNames = tempString.split(SEPARATOR_CHAR);
+            }
+
+              //load the unwrap supported data binding framework names
+            tempString = props.getProperty(DATA_BINDING_UNWRAP_SUPPORTED_FRAMEWORK_NAME_KEY);
+            if (tempString != null) {
+                unwrapSuppoerteddatabindingFrameworkNames = tempString.split(SEPARATOR_CHAR);
+            }
+            
+            //load the unwrap supported data binding framework names
+            tempString = props.getProperty(DATA_BINDING_UNWRAP_DIRECT_FRAMEWORK_NAME_KEY);
+            if (tempString != null) {
+                unwrapDirectdatabindingFrameworkNames = tempString.split(SEPARATOR_CHAR);
+            }
+
+            //load the source folder
+            tempString = props.getProperty(SOURCE_FOLDER_NAME_KEY);
+            if (tempString != null) {
+                srcFolderName = tempString;
+            }
+
+            //load the resource folder name
+            tempString = props.getProperty(RESOURCE_FOLDER_NAME_KEY);
+            if (tempString != null) {
+                resourceFolderName = tempString;
+            }
+
+            //populate the data binding framework name to extension name map
+            tempString = props.getProperty(DATA_BINDING_FRAMEWORK_EXTENSION_NAME_KEY);
+            if (tempString != null) {
+                String[] frameworkExtensionNames = tempString.split(SEPARATOR_CHAR);
+
+                try {
+                    for (int i = 0; i < frameworkExtensionNames.length; i++) {
+                        databindingFrameworkNameToExtensionMap.put(databindingFrameworkNames[i], frameworkExtensionNames[i]);
+                    }
+                } catch (ArrayIndexOutOfBoundsException e) {
+                    throw new Exception(CodegenMessages.getMessage("propfileload.frameworkMismatch"));
+                }
+
+            }
+
+            //load the default framework name
+            tempString = props.getProperty(DATA_BINDING_FRAMEWORK_DEFAULT_NAME_KEY);
+
+            if (tempString == null || !databindingFrameworkNameToExtensionMap.containsKey(tempString)) {
+                throw new Exception(CodegenMessages.getMessage("propfileload.unknownFramework"));
+            }
+            defaultDBFrameworkName = tempString;
+            //load the third party schema names
+            tempString = props.getProperty(THIRD_PARTY_SCHEMA_KEY_PREFIX);
+            if (tempString != null) {
+                thirdPartySchemaNames = tempString.split(SEPARATOR_CHAR);
+
+            }
+
+            //populate the db supporter template names.
+            dbSupporterTemplateNameMap = new HashMap();
+            String key;
+            for (Iterator allProperties = props.keySet().iterator();
+                 allProperties.hasNext();){
+                key = (String)allProperties.next();
+                if (key.startsWith(DATA_BINDING_TEMPLATE_NAME_KEY_PREFIX) &&
+                        key.endsWith(DATA_BINDING_TEMPLATE_NAME_KEY_SUFFIX)){
+                    dbSupporterTemplateNameMap.put(key,
+                            props.getProperty(key));
+                }
+
+            }
+
+            testObjectTemplateName = props.getProperty(DATA_BINDING_TEST_OBJECT_TEMPLATE_NAME_KEY);
+
+
+
+            //load the language names
+            tempString = props.getProperty(LANGUAGE_TYPE_KEY_PREFIX);
+            if (tempString != null) {
+                languageTypes = tempString.split(SEPARATOR_CHAR);
+
+                //load the language emitter map
+                tempString = props.getProperty(EMITTER_CLASS_KEY);
+                if (tempString == null) {
+                    throw new Exception(CodegenMessages.getMessage("propfileload.emitterMissing"));
+                } else {
+                    String[] tempClassNames = tempString.split(SEPARATOR_CHAR);
+                    //populate the map
+                    languageEmitterMap = new HashMap();
+                    for (int i = 0; i < tempClassNames.length; i++) {
+                        languageEmitterMap.put(languageTypes[i], tempClassNames[i]);
+                    }
+
+                }
+            }
+
+            // load the default language
+            tempString = props.getProperty(DEFAULT_LANGUAGE_TYPE_KEY);
+            if (null == tempString || !languageEmitterMap.containsKey(tempString)) {
+                throw new Exception(CodegenMessages.getMessage("propfileload.unknownDefaultLang"));
+            }
+            defaultLanguage = tempString;
+
+            // run through the language specific properties and populate the
+            // language specific property map
+            //
+            String languageType;
+            String tempkey;
+            HashMap langSpecificMap;
+            for (int i = 0; i < languageTypes.length; i++) {
+                languageType = languageTypes[i];
+                langSpecificMap = new HashMap();
+                Enumeration keyEnum = props.keys();
+                while (keyEnum.hasMoreElements()) {
+                    tempkey = keyEnum.nextElement().toString();
+                    if (tempkey.startsWith(languageType + ".")) {
+                        langSpecificMap.put(tempkey, props.get(tempkey));
+                    }
+                }
+                //now add this to the lang specific properties map
+                languageSpecificPropertiesMap.put(languageType, langSpecificMap);
+            }
+
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } catch (Exception e) {
+            throw new RuntimeException(CodegenMessages.getMessage("propfileload.generalException"), e);
+        }
+    }
+
+    /**
+     *
+     * @return the source folder name
+     */
+    public static String getResourceFolderName() {
+        return resourceFolderName;
+    }
+
+
+    /**
+     *
+     * @return the resource folder name
+     */
+    public static String getSrcFolderName() {
+        return srcFolderName;
+    }
+
+    /**
+     * Gets the test object support template. This is used in the
+     * generated test class.
+     * @return Returns String.
+     */
+    public static String getTestObjectTemplateName() {
+        return testObjectTemplateName;
+    }
+
+    /**
+     * Gets the databinder template names. This is the template that has the
+     * logic for creating the databind supporters.
+     * @return Returns String.
+     */
+    public static Map getDbSupporterTemplatesMap() {
+        return dbSupporterTemplateNameMap;
+    }
+    /**
+     * Gets the extension class names.
+     * @return Returns String[].
+     */
+    public static String[] getExtensionClassNames() {
+        return extensionClassNames;
+    }
+
+    /**
+     * get the post extension class names
+     * @return Returns String[].
+     */
+     public static String[] getPostExtensionClassNames() {
+        return postExtensionClassNames;
+    }
+    /**
+     * Gets the third party schema names list.
+     *
+     * @return Returns String[].
+     */
+    public static String[] getThirdPartySchemaNames() {
+        return thirdPartySchemaNames;
+    }
+
+    /**
+     * Gets the language type names.
+     *
+     * @return Returns String[].
+     */
+    public static String[] getLanguageTypes() {
+        return languageTypes;
+    }
+
+    /**
+     * Gets the emitter names map keys with the language name.
+     *
+     * @return Returns Map.
+     */
+    public static Map getLanguageEmitterMap() {
+        return languageEmitterMap;
+    }
+
+    /**
+     * Get the list of unwrap supported data binding frameworks
+     * @return list
+     */
+    public static List getUnwrapSupportedFrameworkNames(){
+        return Arrays.asList(unwrapSuppoerteddatabindingFrameworkNames);
+    }
+
+    /**
+     * Get the list of data binding frameworks that handle unwrapping directly.
+     * 
+     * @return names
+     */
+    public static List getUnwrapDirectFrameworkNames(){
+        return Arrays.asList(unwrapDirectdatabindingFrameworkNames);
+    }
+    
+    /**
+     * Gets the default language name.
+     *
+     * @return Returns String.
+     */
+    public static String getDefaultLanguage() {
+        return defaultLanguage;
+    }
+
+    /**
+     * Gets the language specific properties.
+     *
+     * @return Returns Map.
+     */
+    public static Map getLanguageSpecificPropertiesMap() {
+        return languageSpecificPropertiesMap;
+    }
+
+    /**
+     * Gets the databinding framework names.
+     *
+     * @return Returns String[].
+     */
+    public static String[] getDatabindingFrameworkNames() {
+        return databindingFrameworkNames;
+    }
+
+    /**
+     * Gets the extensions map for the databinding frameworks.
+     * The entries are keys by the framework name.
+     *
+     * @return Returns Map.
+     */
+    public static Map getDatabindingFrameworkNameToExtensionMap() {
+        return databindingFrameworkNameToExtensionMap;
+    }
+
+    /**
+     * Gets the default DB framwork name.
+     *
+     * @return Returns String.
+     */
+    public static String getDefaultDBFrameworkName() {
+        return defaultDBFrameworkName;
+    }
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/Constants.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/Constants.java
new file mode 100644
index 0000000..b3f96f7
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/Constants.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.util;
+
+import java.util.List;
+
+public interface Constants {
+
+    String BASE_64_PROPERTY_KEY = "base64map";
+    String PLAIN_BASE_64_PROPERTY_KEY = "plainbase64map";
+
+    String EXTERNAL_TEMPLATE_PROPERTY_KEY = "externalTemplate";
+    String XSLT_INCLUDE_DATABIND_SUPPORTER_HREF_KEY = "databindsupporter";
+    String XSLT_INCLUDE_TEST_OBJECT_HREF_KEY = "testObject";
+    String UNWRAPPED_KEY = "UnWrapped";
+    String UNWRAPPED_DETAILS = "UnWrapped_details";
+
+    String COMPLEX_TYPE = "complexType";
+    String ARRAY_TYPE = "arrayType";
+
+    public static final String ANY_ELEMENT_FIELD_NAME = "extraElement";
+
+    /** Property for message receiver operation method handled by databinding
+     code generation. This is an optional parameter for an {@link
+     org.apache.axis2.description.AxisOperation}. If present, the value is the
+     name of a method to be generated by the databinding code generation and
+     called by the message receiver code generation in order to process the
+     OMElement and invoke the service method. */
+    String DATABINDING_GENERATED_RECEIVER = "databinding-generated-receiver";
+
+    /** Property for interface implementation method handled by databinding
+     code generation. This is an optional parameter for an {@link
+     org.apache.axis2.description.AxisOperation}. If present, the value is a
+     <code>Boolean</code> flag to indicate that the method corresponding to that
+     operation will be generated by the data binding code generation. */
+    String DATABINDING_GENERATED_IMPLEMENTATION = "databinding-generated-implementation";
+
+    /** Property for details to be passed inside the &lt;databinders> element.
+     This is an optional parameter for an {@link
+     org.apache.axis2.description.AxisOperation}. If present, the value is a DOM
+     element to be appended to the &lt;databinders> content. */
+    String DATABINDING_OPERATION_DETAILS = "databinding-operation-details";
+
+    /** Property for details to be passed inside the &lt;databinders> element.
+     This is an optional parameter for an {@link
+     org.apache.axis2.description.AxisService}. If present, the value is a DOM
+     element to be appended to the &lt;databinders> content. */
+    String DATABINDING_SERVICE_DETAILS = "databinding-service-details";
+
+
+    public interface CodegenStyle {
+        final int AUTOMATIC = 0;
+        final int INTERFACE = 1;
+        static final int BINDING = 2;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/Java2WSDLOptionsValidator.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/Java2WSDLOptionsValidator.java
new file mode 100644
index 0000000..e28e663
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/Java2WSDLOptionsValidator.java
@@ -0,0 +1,57 @@
+package org.apache.axis2.wsdl.util;

+

+import org.apache.axis2.util.CommandLineOption;

+import org.apache.axis2.util.CommandLineOptionConstants;

+import org.apache.axis2.util.OptionsValidator;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class Java2WSDLOptionsValidator implements OptionsValidator,CommandLineOptionConstants {

+

+    public boolean isInvalid(CommandLineOption option) {

+        boolean invalid;

+        String optionType = option.getOptionType();

+

+        if (optionType.startsWith(WSDL2JavaConstants.EXTRA_OPTIONTYPE_PREFIX)){

+            invalid = false;

+        } else{

+            invalid = !((Java2WSDLConstants.CLASSNAME_OPTION).equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.OUTPUT_LOCATION_OPTION.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.OUTPUT_FILENAME_OPTION.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.CLASSPATH_OPTION.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.TARGET_NAMESPACE_OPTION.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.TARGET_NAMESPACE_PREFIX_OPTION.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_OPTION.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.SERVICE_NAME_OPTION.equalsIgnoreCase(optionType) ||

+

+                       Java2WSDLConstants.CLASSNAME_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.OUTPUT_FILENAME_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.OUTPUT_LOCATION_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.CLASSNAME_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.CLASSPATH_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.TARGET_NAMESPACE_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.TARGET_NAMESPACE_PREFIX_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION_LONG.equalsIgnoreCase(optionType) ||

+                       Java2WSDLConstants.SERVICE_NAME_OPTION_LONG.equalsIgnoreCase(optionType));

+

+        }

+

+        return invalid;

+    }

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/MessagePartInformationHolder.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/MessagePartInformationHolder.java
new file mode 100644
index 0000000..e1ca896
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/MessagePartInformationHolder.java
@@ -0,0 +1,50 @@
+package org.apache.axis2.wsdl.util;

+

+import javax.xml.namespace.QName;

+import java.util.List;

+import java.util.ArrayList;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * This class acts as the holder for the information

+ * that is required to be attached to the AxisMessage

+ * during unwrapping

+ */

+public class MessagePartInformationHolder  {

+

+    private QName operationName;

+    private List partsList = new ArrayList();

+

+    public QName getOperationName() {

+        return operationName;

+    }

+

+    public void setOperationName(QName operationName) {

+        this.operationName = operationName;

+    }

+

+    public List getPartsList() {

+        return partsList;

+    }

+

+    public void setPartsList(List partsList) {

+        this.partsList = partsList;

+    }

+

+    

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/TypeTesterUtil.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/TypeTesterUtil.java
new file mode 100644
index 0000000..31fcb54
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/TypeTesterUtil.java
@@ -0,0 +1,46 @@
+package org.apache.axis2.wsdl.util;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class TypeTesterUtil {

+

+    /**

+     * Check whether a given classname is primitives

+     * @param className

+     */

+    public static boolean isPrimitive(String className){

+

+        return  "int".equals(className) ||

+                "float".equals(className) ||

+                "boolean".equals(className) ||

+                "double".equals(className) ||

+                "byte".equals(className) ||

+                "short".equals(className) ||

+                "long".equals(className);

+

+

+    }

+

+    /**

+     * Tests whether the given classname has a package

+     * the current logic is simple where we look for a

+     * '.' inside the classname string

+     * @param className

+     */

+     public static boolean hasPackage(String className){

+        return  (className.indexOf('.')!= -1);

+    }

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/WSDL2JavaOptionsValidator.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/WSDL2JavaOptionsValidator.java
new file mode 100644
index 0000000..ef4dcf3
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/WSDL2JavaOptionsValidator.java
@@ -0,0 +1,92 @@
+package org.apache.axis2.wsdl.util;

+

+import org.apache.axis2.util.CommandLineOption;

+import org.apache.axis2.util.CommandLineOptionConstants;

+import org.apache.axis2.util.OptionsValidator;

+

+/*

+ * Copyright 2004,2005 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.

+ */

+

+

+public class WSDL2JavaOptionsValidator implements CommandLineOptionConstants,OptionsValidator{

+

+    public boolean isInvalid(CommandLineOption option) {

+

+        boolean invalid;

+        String optionType = option.getOptionType();

+

+        if (optionType.startsWith(WSDL2JavaConstants.EXTRA_OPTIONTYPE_PREFIX)){

+            invalid = false;

+        } else{

+            invalid = !((WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.OUTPUT_LOCATION_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.PACKAGE_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.STUB_LANGUAGE_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.UNPACK_CLASSES_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.GENERATE_ALL_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.PORT_NAME_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SERVICE_NAME_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.REPOSITORY_PATH_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.EXTERNAL_MAPPING_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.WSDL_VERSION_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.FLATTEN_FILES_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.UNWRAP_PARAMETERS).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.BACKWORD_COMPATIBILITY_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SUPPRESS_PREFIXES_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SOURCE_FOLDER_NAME_OPTION).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.RESOURCE_FOLDER_OPTION).equalsIgnoreCase(optionType) ||

+

+                    (WSDL2JavaConstants.OUTPUT_LOCATION_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.PACKAGE_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.STUB_LANGUAGE_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.UNPACK_CLASSES_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.PORT_NAME_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SERVICE_NAME_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.GENERATE_ALL_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.EXTERNAL_MAPPING_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.WSDL_VERSION_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.FLATTEN_FILES_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.UNWRAP_PARAMETERS_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.REPOSITORY_PATH_OPTION_LONG).equalsIgnoreCase(optionType)||

+                    (WSDL2JavaConstants.SOURCE_FOLDER_NAME_OPTION_LONG).equalsIgnoreCase(optionType)||

+                    (WSDL2JavaConstants.RESOURCE_FOLDER_OPTION_LONG).equalsIgnoreCase(optionType)||

+                    (WSDL2JavaConstants.BACKWORD_COMPATIBILITY_OPTION_LONG).equalsIgnoreCase(optionType) ||

+                    (WSDL2JavaConstants.SUPPRESS_PREFIXES_OPTION_LONG).equalsIgnoreCase(optionType)

+            );

+

+        }

+

+        return invalid;

+    }

+

+

+}

diff --git a/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java
new file mode 100644
index 0000000..1e2a247
--- /dev/null
+++ b/rampart_1_1/modules/codegen/src/org/apache/axis2/wsdl/util/XSLTIncludeResolver.java
@@ -0,0 +1,109 @@
+package org.apache.axis2.wsdl.util;

+

+import org.apache.axis2.wsdl.i18n.CodegenMessages;

+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;

+

+import javax.xml.transform.Source;

+import javax.xml.transform.TransformerException;

+import javax.xml.transform.URIResolver;

+import javax.xml.transform.stream.StreamSource;

+import java.io.ByteArrayInputStream;

+import java.io.InputStream;

+import java.util.Map;

+import java.util.Iterator;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class XSLTIncludeResolver implements URIResolver,Constants {

+

+    private CodeGenConfiguration configuration;

+

+    public XSLTIncludeResolver() {

+    }

+

+    /**

+     * 

+     * @param config

+     */

+    public XSLTIncludeResolver(CodeGenConfiguration config) {

+        this.configuration = config;

+    }

+

+

+    /**

+     * Resolves a given href and base combination

+     * @param href

+     * @param base

+     * @throws TransformerException

+     */

+    public Source resolve(String href, String base) throws TransformerException {

+        String templateName;

+        Map externalPropertyMap = configuration.getProperties();

+

+        InputStream supporterTemplateStream;

+        if (XSLT_INCLUDE_DATABIND_SUPPORTER_HREF_KEY.equals(href)){

+            //use the language name from the configuration to search the key

+            //our search only consists of looking for the data binding name

+            //in the key

+            Map dbSupporterMap = ConfigPropertyFileLoader.getDbSupporterTemplatesMap();

+            String key;

+            for (Iterator keys = dbSupporterMap.keySet().iterator();keys.hasNext();){

+                key = (String) keys.next();

+                if (key.indexOf(configuration.getDatabindingType())!=-1){

+                    return getSourceFromTemplateName((String)dbSupporterMap.get(key));

+                }

+            }

+        }

+

+        if (XSLT_INCLUDE_TEST_OBJECT_HREF_KEY.equals((href))){

+              return getSourceFromTemplateName(ConfigPropertyFileLoader.getTestObjectTemplateName());

+        }

+

+        if (externalPropertyMap.get(href)!=null){

+            templateName = externalPropertyMap.get(href).toString();

+            if(templateName!=null){

+                supporterTemplateStream = getClass().getResourceAsStream(templateName);

+                return new StreamSource(supporterTemplateStream);

+            }

+        }

+        //if nothing could be found return an empty source

+        return getEmptySource();

+    }

+

+    /**

+     * load the template from a given resource path

+     * @param templateName

+     * @return  the loaded transform source

+     * @throws TransformerException

+     */

+    private Source getSourceFromTemplateName(String templateName) throws TransformerException {

+        InputStream supporterTemplateStream;

+        if(templateName!=null){

+            supporterTemplateStream = getClass().getResourceAsStream(templateName);

+            return new StreamSource(supporterTemplateStream);

+        } else{

+            throw new TransformerException(CodegenMessages.getMessage("resolver.templateNotFound",templateName));

+        }

+    }

+

+    /**

+     * returns an empty source

+     * @return stream source

+     */

+    private Source getEmptySource(){

+        return new StreamSource(new ByteArrayInputStream("<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"/>".getBytes()));

+    }

+}

diff --git a/rampart_1_1/modules/codegen/test-resources/schemas/schema-1.xsd b/rampart_1_1/modules/codegen/test-resources/schemas/schema-1.xsd
new file mode 100644
index 0000000..e7ead04
--- /dev/null
+++ b/rampart_1_1/modules/codegen/test-resources/schemas/schema-1.xsd
@@ -0,0 +1,16 @@
+<!--
+    AddRequest is a complex type
+-->
+
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+           targetNamespace="http://ws.apache.org/schemas/axis2" xmlns="http://ws.apache.org/schemas/axis2"
+           xmlns:ns="http://ws.apache.org/schemas/axis2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:element name="AddRequest">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element maxOccurs="1" minOccurs="1" name="ParameterOne" type="xs:int"/>
+                <xs:element maxOccurs="1" minOccurs="1" name="ParameterTwo" type="xs:string"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+</xs:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/test-resources/schemas/schema-2.xsd b/rampart_1_1/modules/codegen/test-resources/schemas/schema-2.xsd
new file mode 100644
index 0000000..d5f0b2b
--- /dev/null
+++ b/rampart_1_1/modules/codegen/test-resources/schemas/schema-2.xsd
@@ -0,0 +1,16 @@
+<!--
+    1. AddRequest is of AddRequestType
+    2. AddRequestType has a sequence
+-->
+
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+           targetNamespace="http://ws.apache.org/schemas/axis2" xmlns="http://ws.apache.org/schemas/axis2"
+           xmlns:ns="http://ws.apache.org/schemas/axis2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:element name="AddRequest" type="AddRequestType"/>
+    <xs:complexType name="AddRequestType">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="1" name="ParameterOne" type="xs:int"/>
+            <xs:element maxOccurs="1" minOccurs="1" name="ParameterTwo" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/test-resources/schemas/schema-3.xsd b/rampart_1_1/modules/codegen/test-resources/schemas/schema-3.xsd
new file mode 100644
index 0000000..f0bc63a
--- /dev/null
+++ b/rampart_1_1/modules/codegen/test-resources/schemas/schema-3.xsd
@@ -0,0 +1,25 @@
+
+<!--
+     1. AddRequest is of AddRequestType
+     2. AddRequestType extends from AbstractParameterType
+     3. AbstractParameterType has primitive types only
+ -->
+
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+           targetNamespace="http://ws.apache.org/schemas/axis2" xmlns="http://ws.apache.org/schemas/axis2"
+           xmlns:ns="http://ws.apache.org/schemas/axis2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:element name="AddRequest" type="AddRequestType"/>
+    <xs:complexType name="AddRequestType">
+        <xs:complexContent>
+            <xs:extension base="ns:AbstractParameterType">
+                <xs:sequence/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+    <xs:complexType abstract="true" name="AbstractParameterType">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="1" name="ParameterOne" type="xs:int"/>
+            <xs:element maxOccurs="1" minOccurs="1" name="ParameterTwo" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/test-resources/schemas/schema-4.xsd b/rampart_1_1/modules/codegen/test-resources/schemas/schema-4.xsd
new file mode 100644
index 0000000..ddf85de
--- /dev/null
+++ b/rampart_1_1/modules/codegen/test-resources/schemas/schema-4.xsd
@@ -0,0 +1,28 @@
+<!--
+    1. AddRequest is of AddRequestType
+    2. AddRequestType extends from AbstractParameterType and it AddRequestType has more stuff defined in a sequence, in
+    addition to the extension.
+    3. AbstractParameterType has primitive types only
+-->
+
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+           targetNamespace="http://ws.apache.org/schemas/axis2" xmlns="http://ws.apache.org/schemas/axis2"
+           xmlns:ns="http://ws.apache.org/schemas/axis2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:element name="AddRequest" type="AddRequestType"/>
+    <xs:complexType name="AddRequestType">
+        <xs:complexContent>
+            <xs:extension base="ns:AbstractParameterType">
+                <xs:sequence>
+                    <xs:element maxOccurs="1" minOccurs="1" name="ParameterThree" type="xs:int"/>
+                    <xs:element maxOccurs="1" minOccurs="1" name="ParameterFour" type="xs:string"/>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+    <xs:complexType abstract="true" name="AbstractParameterType">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="1" name="ParameterOne" type="xs:int"/>
+            <xs:element maxOccurs="1" minOccurs="1" name="ParameterTwo" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/test-resources/xmls/MultiDimArray.xml b/rampart_1_1/modules/codegen/test-resources/xmls/MultiDimArray.xml
new file mode 100644
index 0000000..7d445ca
--- /dev/null
+++ b/rampart_1_1/modules/codegen/test-resources/xmls/MultiDimArray.xml
@@ -0,0 +1,11 @@
+<wrapper>

+    <item>

+        <inner>one</inner>

+        <inner>two</inner>

+    </item>

+    <item>

+        <inner>1</inner>

+        <inner>2</inner>

+        <inner>3</inner>

+    </item>

+</wrapper>
\ No newline at end of file
diff --git a/rampart_1_1/modules/codegen/test-resources/xmls/axis2.xml b/rampart_1_1/modules/codegen/test-resources/xmls/axis2.xml
new file mode 100644
index 0000000..0ef02d1
--- /dev/null
+++ b/rampart_1_1/modules/codegen/test-resources/xmls/axis2.xml
@@ -0,0 +1,79 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="enableMTOM" locked="false">false</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <parameter name="seralizeLocation" locked="false">.</parameter>

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->

+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+    <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+        <phase name="TransportIn"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="userphase1"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="userphase1"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="userphase1"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="userphase1"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/codegen/test/org/apache/axis2/wsdl/WSDLServiceBuilderTest.java b/rampart_1_1/modules/codegen/test/org/apache/axis2/wsdl/WSDLServiceBuilderTest.java
new file mode 100644
index 0000000..b6fa9c1
--- /dev/null
+++ b/rampart_1_1/modules/codegen/test/org/apache/axis2/wsdl/WSDLServiceBuilderTest.java
@@ -0,0 +1,87 @@
+package org.apache.axis2.wsdl;

+

+import junit.framework.TestCase;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;

+import org.apache.axis2.engine.ListenerManager;

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.FileOutputStream;

+import java.io.OutputStream;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class WSDLServiceBuilderTest extends TestCase {

+

+    private ConfigurationContext configContext;

+    ListenerManager lm;

+

+    protected void setUp() throws Exception {

+        configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        lm = new ListenerManager();

+        lm.init(configContext);

+        lm.start();

+    }

+

+    protected void tearDown() throws AxisFault {

+        lm.stop();

+    }

+

+    public void testWSDLClient() throws Exception {

+        File testResourceFile = new File("target/test-classes");

+        File outLocation = new File("target/test-resources");

+        outLocation.mkdirs();

+        if (testResourceFile.exists()) {

+            File files [] = testResourceFile.listFiles();

+            for (int i = 0; i < files.length; i++) {

+                File file1 = files[i];

+                if (file1.isFile() && file1.getName().endsWith(".wsdl")) {

+                    if (file1.getName().equals("ping-modified.wsdl") ||

+                            file1.getName().equals("ping-unbound.wsdl") ||

+                            file1.getName().equals("wsat.wsdl") ||

+                            file1.getName().equals("no-service.wsdl")) {

+                        continue;

+                    }

+                    try {

+                        WSDL11ToAxisServiceBuilder builder = new WSDL11ToAxisServiceBuilder(new FileInputStream(file1), null, null);

+                        AxisService service = builder.populateService();

+                        System.out.println("Testinf file: " + file1.getName());

+                        configContext.getAxisConfiguration().addService(service);

+                        OutputStream out = new FileOutputStream(new File(outLocation, file1.getName()));

+                        service.printWSDL(out, "http://google.com/axis2/services" ,"services");

+                        out.flush();

+                        out.close();

+//                        URL wsdlURL = new URL("http://localhost:" + 6060 +

+//                                "/axis2/services/" + service.getName() + "?wsdl");

+//                        builder = new WSDL11ToAxisServiceBuilder(wsdlURL.openStream(), null, null);

+//                        service = builder.populateService();

+                        configContext.getAxisConfiguration().removeService(service.getName());

+                    } catch (Exception e) {

+                        System.out.println("Error in WSDL : " + file1.getName());

+                        throw e;

+                    }

+

+                }

+            }

+        }

+    }

+}

diff --git a/rampart_1_1/modules/codegen/test/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtensionTest.java b/rampart_1_1/modules/codegen/test/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtensionTest.java
new file mode 100644
index 0000000..74da795
--- /dev/null
+++ b/rampart_1_1/modules/codegen/test/org/apache/axis2/wsdl/codegen/extension/SchemaUnwrapperExtensionTest.java
@@ -0,0 +1,163 @@
+package org.apache.axis2.wsdl.codegen.extension;
+
+import junit.framework.TestCase;
+import org.apache.axis2.description.*;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.WSDLUtil;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.util.Constants;
+import org.apache.axis2.wsdl.util.MessagePartInformationHolder;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+
+import javax.xml.namespace.QName;
+import javax.xml.transform.stream.StreamSource;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.List;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class SchemaUnwrapperExtensionTest extends TestCase {
+
+    private AxisMessage axisMessage;
+    private AxisService axisService;
+
+    private static final String PARAMETER_ONE = "ParameterOne";
+    private static final String PARAMETER_TWO = "ParameterTwo";
+    private static final String PARAMETER_THREE = "ParameterThree";
+    private static final String PARAMETER_FOUR = "ParameterFour";
+    private static final String ADD_OPERATION = "Add";
+
+    protected void setUp() throws Exception {
+        AxisOperation axisOperation = new InOutAxisOperation(new QName(ADD_OPERATION));
+        axisMessage = new AxisMessage();
+        axisMessage.setName("AddRequest");
+        axisMessage.setElementQName(new QName("http://ws.apache.org/schemas/axis2", "AddRequest"));
+        axisOperation.addMessage(axisMessage, WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        axisMessage.setParent(axisOperation);
+
+        axisService = new AxisService("DummyService");
+        axisService.addOperation(axisOperation);
+        axisOperation.setParent(axisService);
+    }
+
+    /**
+     * This refers to the schema-1.xsd which has an AddRequest element which is of complex type
+     */
+    public void testScenarioOne() {
+        String schemaLocation = "test-resources/schemas/schema-1.xsd";
+
+        createAndWalkSchema(schemaLocation);
+
+        assertTrue(axisMessage.getParameter(Constants.UNWRAPPED_KEY).getValue() == Boolean.TRUE);
+
+        Parameter parameter = axisMessage.getParameter(Constants.UNWRAPPED_DETAILS);
+        MessagePartInformationHolder messagePartInformationHolder = (MessagePartInformationHolder) parameter.getValue();
+        List partsList = messagePartInformationHolder.getPartsList();
+
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_ONE)));
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_TWO)));
+        assertTrue(partsList.size() == 2);
+
+
+    }
+
+    /**
+     * This refers to the schema-2.xsd which has an AddRequest element which is of AddRequestType.
+     * AddRequestType is a complex type
+     */
+    public void testScenarioTwo() {
+        String schemaLocation = "test-resources/schemas/schema-2.xsd";
+
+        createAndWalkSchema(schemaLocation);
+
+        assertTrue(axisMessage.getParameter(Constants.UNWRAPPED_KEY).getValue() == Boolean.TRUE);
+
+        Parameter parameter = axisMessage.getParameter(Constants.UNWRAPPED_DETAILS);
+        MessagePartInformationHolder messagePartInformationHolder = (MessagePartInformationHolder) parameter.getValue();
+        List partsList = messagePartInformationHolder.getPartsList();
+
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_ONE)));
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_TWO)));
+        assertTrue(partsList.size() == 2);
+    }
+
+    /**
+     * 1. AddRequest is of AddRequestType
+     * 2. AddRequestType extends from AbstractParameterType
+     * 3. AbstractParameterType has primitive types only
+     */
+    public void testScenarioThree() {
+        String schemaLocation = "test-resources/schemas/schema-3.xsd";
+
+        createAndWalkSchema(schemaLocation);
+
+        assertTrue(axisMessage.getParameter(Constants.UNWRAPPED_KEY).getValue() == Boolean.TRUE);
+
+        Parameter parameter = axisMessage.getParameter(Constants.UNWRAPPED_DETAILS);
+        MessagePartInformationHolder messagePartInformationHolder = (MessagePartInformationHolder) parameter.getValue();
+        List partsList = messagePartInformationHolder.getPartsList();
+
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_ONE)));
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_TWO)));
+        assertTrue(partsList.size() == 2);
+    }
+
+    /**
+     * 1. AddRequest is of AddRequestType
+     * 2. AddRequestType extends from AbstractParameterType and it AddRequestType has more stuff defined in a sequence, in
+     * addition to the extension.
+     * 3. AbstractParameterType has primitive types only
+     */
+    public void testScenarioFour() {
+        String schemaLocation = "test-resources/schemas/schema-4.xsd";
+
+        createAndWalkSchema(schemaLocation);
+
+        assertTrue(axisMessage.getParameter(Constants.UNWRAPPED_KEY).getValue() == Boolean.TRUE);
+
+        Parameter parameter = axisMessage.getParameter(Constants.UNWRAPPED_DETAILS);
+        MessagePartInformationHolder messagePartInformationHolder = (MessagePartInformationHolder) parameter.getValue();
+        List partsList = messagePartInformationHolder.getPartsList();
+
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_ONE)));
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_TWO)));
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_THREE)));
+        assertTrue(partsList.contains(WSDLUtil.getPartQName(ADD_OPERATION, WSDLConstants.INPUT_PART_QNAME_SUFFIX, PARAMETER_FOUR)));
+        assertTrue(partsList.size() == 4);
+    }
+
+    private void createAndWalkSchema(String schemaLocation) {
+        try {
+            XmlSchema xmlSchema = loadSchema(schemaLocation);
+            axisService.addSchema(xmlSchema);
+            SchemaUnwrapperExtension extension = new SchemaUnwrapperExtension();
+            extension.walkSchema(axisMessage);
+        } catch (FileNotFoundException e) {
+            fail(schemaLocation + " file can not be found");
+        } catch (CodeGenerationException e) {
+            fail(e.getMessage());
+        }
+    }
+
+    private XmlSchema loadSchema(String schemaLocation) throws FileNotFoundException {
+        InputStream is = new FileInputStream(schemaLocation);
+        XmlSchemaCollection schemaCol = new XmlSchemaCollection();
+        return schemaCol.read(new StreamSource(is), null);
+    }
+}
diff --git a/rampart_1_1/modules/integration/build.xml b/rampart_1_1/modules/integration/build.xml
new file mode 100644
index 0000000..c168a56
--- /dev/null
+++ b/rampart_1_1/modules/integration/build.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0"?>

+

+<project name="interop-doclit" default="main" basedir=".">

+    <description>

+        Interop tests for doc-lit, code generated samples

+    </description>

+    <property name="dir.doclit" value="doclit-interop"/>

+    <property name="dir.wsdl" value="./itest-resources/WSDLs"/>

+    <property name="dir.temp" value="${dir.doclit}/temp"/>

+    <property name="dir.clients" value="${dir.doclit}/clients"/>

+    <property environment="env"/>

+    <property name="dir.src" value="${dir.doclit}/src"/>

+    <property name="dir.classes" value="${dir.doclit}/classes"/>

+    <property name="dir.home" value="${user.home}"/>

+

+    <!-- Allthe required jars here -->

+    <path id="jarpath.axis2">

+        <fileset dir="../../target/lib">

+            <include name="*.jar"/>

+        </fileset>

+<!--        <fileset dir="${dir.home}/.maven/repository">-->

+<!--            <include name="**/**/*.jar"/>-->

+<!--        </fileset>-->

+    </path>

+

+    <!-- preparing paths -->

+

+    <target name="prepare">

+

+        <mkdir dir="${dir.classes}"/>

+        <mkdir dir="${dir.src}"/>

+        <mkdir dir="${dir.src}/test"/>

+        <mkdir dir="${dir.temp}"/>

+    </target>

+

+    <!-- This is where the classes are located for run-1-->

+    <path id="interop.path">

+        <path refid="classpath.interop"/>

+        <path refid="jarpath.axis2"/>

+    </path>

+

+    <!-- This is where the classes are located for run-2>-->

+

+

+    <path id="classpath.interop">

+        <pathelement path="${dir.classes}"/>

+        <fileset dir="${dir.classes}">

+            <include name="**/*.*"/>

+        </fileset>

+    </path>

+

+    <path id="classpath.interop2">

+        <!--        <pathelement path="${dir.classes}"/>-->

+        <fileset dir="${dir.classes}">

+            <include name="**/*.*"/>

+        </fileset>

+    </path>

+

+

+    <target name="clean">

+        <delete dir="${dir.classes}"/>

+        <delete dir="${dir.classes}"/>

+        <delete dir="${dir.classes}"/>

+        <delete dir="${dir.src}"/>

+        <delete dir="${dir.src}"/>

+        <delete dir="${dir.src}"/>

+    </target>

+

+    <target name="temp-clean">

+        <delete dir="${dir.src}/test"/>

+        <delete dir="${dir.classes}/schema**/*"/>

+        <delete dir="${dir.classes}/test"/>

+    </target>

+

+    <description>

+    ////////////////////////////////// CodeGen with WSDL2Java /////////////////////////////////////////////////////////////////////////

+    </description>

+

+    <!-- generating the first file src files-->

+    <target name="gen" depends="prepare">

+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">

+            <classpath refid="jarpath.axis2"/>

+            <arg value="-uri"/>

+            <arg file="./${dir.temp}/current.wsdl"/>

+            <arg value="-sd"/>

+            <arg value="-o"/>

+            <arg file="${dir.src}"/>

+            <arg value="-p"/>

+            <arg value="test.stub"/>

+        </java>

+        <move todir="${dir.classes}">

+            <fileset dir="${dir.src}">

+                <include name="**/schema**/**/*.class"/>

+            </fileset>

+            <fileset dir="${dir.src}/resources">

+                <include name="**/schema**/**/*.xsb"/>

+            </fileset>

+        </move>

+        <delete includeemptydirs="true">

+           <!-- <fileset dir="${dir.src}/schema**/*" includes="**/*"/>

+            <fileset dir="${dir.src}" includes="**/schema**/*.xsb"/> -->

+          <fileset dir="${dir.src}">

+                <include name="**/schema**/*.class"/>

+                <include name="**/schema**/*.xsb"/>

+            </fileset>

+        </delete>

+        <delete file="${dir.temp}/current.wsdl"/>

+    </target>

+

+

+    <description>

+    /////////////////////////////////// Compiling the generated codes ////////////////////////////////////////////////////////////////////////

+    </description>

+

+    <!-- compiling the first source generated from gen-1 to be used in run-1-->

+    <target name="compile" depends="gen">

+        <javac srcdir="${dir.src}" destdir="${dir.classes}">

+            <include name="**/*.*"/>

+            <classpath refid="interop.path"/>

+        </javac>

+    </target>

+

+

+    <description>

+    ////////////////////////////////////// Compiling the testcases /////////////////////////////////////////////////////////////////////

+    </description>

+

+    <!-- compiling the test case1 to be used in run-1-->

+    <target name="compile-client1">

+        <javac srcdir="${dir.clients}" destdir="${dir.classes}">

+            <include name="**/**/WMRound3Compound1InteropTest.java"/>

+            <classpath refid="interop.path1"/>

+        </javac>

+    </target>

+

+

+    <description>

+    /////////////////////////////////// Running Tests ////////////////////////////////////////////////////////////////////////

+    </description>

+

+    <!-- runing first test case -->

+    <target name="run-test" depends="compile">

+        <junit fork="true" printsummary="false" haltonfailure="false"

+            failureproperty="tests.failed" showoutput="true">

+            <classpath>

+                <pathelement path="${dir.classes}"/>

+                <path>

+                   <fileset dir="../../target/lib">

+                     <include name="*.jar"/>

+                    </fileset>

+                </path>

+            </classpath>

+            <formatter type="brief" usefile="false"/>

+            <batchtest>

+                <fileset dir="${dir.src}">

+                    <include name="**/**/*Test.java"/>

+                </fileset>

+            </batchtest>

+        </junit>

+        <fail if="tests.failed"/>

+        <antcall target="temp-clean"/>

+    </target>

+

+

+    <target name="run" depends="run-test"/>

+

+    <target name="main">

+        <antcall target="clean"></antcall>

+        <!-- Server Whitemesa -->

+                <copy file="${dir.wsdl}/compound1.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/WMRound3Compound1InteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+                <copy file="${dir.wsdl}/compound2.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/WMRound3Compound2InteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+                <copy file="${dir.wsdl}/interoptestheaders.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/Round3DoclitHeadersInteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+

+        <!-- Server MS stk v3.0-->

+                <copy file="${dir.wsdl}/stkv3Compound1.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/MsStkv3Round3Compound1InteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+                <copy file="${dir.wsdl}/stkv3Compound2.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/MsStkv3Round3Compound2InteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+

+        <!-- Test Failed, JIRA 238 -->

+        <!--        <copy file="${dir.wsdl}/stkv3interopTestDocLit.wsdl" tofile="${dir.temp}/current.wsdl"/>-->

+        <!--        <copy file="${dir.clients}/test/WMRound3DoclitInteropTest.java" todir="${dir.src}/test"  />-->

+        <!--        <antcall target="run"/>-->

+

+        <!-- Test Failed, JIRA 233 -->

+        <!--        <copy file="${dir.wsdl}/stkv3interopTestDocLitParameters.wsdl" tofile="${dir.temp}/current.wsdl"/>-->

+        <!--        <copy file="${dir.clients}/test/Round3DoclitparamInteropTest.java" todir="${dir.src}/test"  />-->

+        <!--        <antcall target="run"/>-->

+

+        <!-- Server ASP.NET -->

+                <copy file="${dir.wsdl}/aspnetcompound1.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/ASPNetRound3Compound1InteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+                <copy file="${dir.wsdl}/aspnetcompound2.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/AspNetRound3Compound2InteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+                <copy file="${dir.wsdl}/aspnetInteropTestDocLit.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/AspNetRound3DoclitInteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+        <!-- this test failed, JIRA 233 -->

+<!--                <copy file="${dir.wsdl}/aspnetInteropTestDocLitParameters.wsdl" tofile="${dir.temp}/current.wsdl"/>-->

+<!--                <copy file="${dir.clients}/test/AspNetRound3DoclitparamInteropTest.java" todir="${dir.src}/test"  />-->

+<!--                <antcall target="run"/>-->

+

+        <!-- Sun Server -->

+                <copy file="${dir.wsdl}/suncompound1.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/SunRound3Compound1InteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+                <copy file="${dir.wsdl}/suncompound2.wsdl" tofile="${dir.temp}/current.wsdl"/>

+                <copy file="${dir.clients}/test/SunRound3Compound2InteropTest.java" todir="${dir.src}/test"  />

+                <antcall target="run"/>

+        <!-- Test failed, JIRA 238 -->

+        <!--        <copy file="${dir.wsdl}/sundoclit.wsdl" tofile="${dir.temp}/current.wsdl"/>-->

+        <!--        <copy file="${dir.clients}/test/WMRound3DoclitInteropTest.java" todir="${dir.src}/test"  />-->

+        <!--        <antcall target="run"/>-->

+        <!-- Test Failed, JIRA 233 -->

+<!--        <copy file="${dir.wsdl}/sundoclitparams.wsdl" tofile="${dir.temp}/current.wsdl"/>-->

+<!--        <copy file="${dir.clients}/test/SunRound3DoclitparamInteropTest.java" todir="${dir.src}/test"/>-->

+<!--        <antcall target="run"/>-->

+

+

+    </target>

+

+

+</project>

diff --git a/rampart_1_1/modules/integration/conf/axis2.xml b/rampart_1_1/modules/integration/conf/axis2.xml
new file mode 100755
index 0000000..66762e8
--- /dev/null
+++ b/rampart_1_1/modules/integration/conf/axis2.xml
@@ -0,0 +1,272 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">false</parameter>

+    <parameter name="enableSwA" locked="false">false</parameter>

+

+    <!--Uncomment if you want to enable file caching for attachments -->

+    <!--parameter name="cacheAttachments" locked="false">true</parameter>

+    <parameter name="attachmentDIR" locked="false"></parameter>

+    <parameter name="sizeThreshold" locked="false">4000</parameter-->

+

+    <!--This will give out the timout of the configuration contexts, in seconds-->

+    <parameter name="ConfigContextTimeoutInterval" locked="false">30</parameter>

+

+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->

+    <!--that behaviour.-->

+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>

+

+    <!--If there aren't any information available to find out the fault reason, we set the message of the expcetion-->

+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->

+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->

+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->

+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->

+    <!--root which can configured using the following contextRoot parameter-->

+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->

+

+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distingiush those endpoints-->

+    <!--In case of a servlet, if you change this you have to manually change the settings of your servlet container to map this -->

+    <!--context path to proper Axis2 servlets-->

+    <!--<parameter name="servicePath" locked="false">services</parameter>-->

+    <!--<parameter name="restPath" locked="false">rest</parameter>-->

+

+

+    <!--Set the flag to true if you want to enable transport level session mangment-->

+    <parameter name="manageTransportSession" locked="false">false</parameter>

+

+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->

+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->

+    <!--parameters help to tweak the message handling of two main servlets. -->

+

+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->

+    <parameter name="enableRESTInAxis2MainServlet" locked="true">false</parameter>

+

+    <!-- Following parameter will completely disable REST handling in both the servlets-->

+    <parameter name="disableREST" locked="true">false</parameter>

+

+    <!-- This will disable the separate servlet we have for REST handling. -->

+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>

+

+    <!-- If you have a frontend host which exposes this webservice using a different public URL  -->

+    <!-- use this parameter to override autodetected url -->

+    <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->

+

+

+    <!--    The way of adding listener to the system-->

+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->

+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->

+    <!--    </listener>-->

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->

+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->

+    <!--any operation -->

+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </messageReceivers>

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http"

+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!-- Here is the complete list of supported parameters (see example settings further below):

+            port: the port to listen on (default 6060)

+            hostname:  if non-null, url prefix used in reply-to endpoint references                                 (default null)

+            originServer:  value of http Server header in outgoing messages                                         (default "Simple-Server/1.1")

+            requestTimeout:  value in millis of time that requests can wait for data                                (default 20000)

+            requestTcpNoDelay:  true to maximize performance and minimize latency                                   (default true)

+                                false to minimize bandwidth consumption by combining segments

+            requestCoreThreadPoolSize:  number of threads available for request processing (unless queue fills up)  (default 25)

+            requestMaxThreadPoolSize:  number of threads available for request processing if queue fills us         (default 150)

+                                       note that default queue never fills up:  see HttpFactory

+            threadKeepAliveTime:  time to keep threads in excess of core size alive while inactive                  (default 180)

+                                  note that no such threads can exist with default unbounded request queue

+            threadKeepAliveTimeUnit:  TimeUnit of value in threadKeepAliveTime (default SECONDS)                    (default SECONDS)

+        -->

+        <!-- <parameter name="hostname"                  locked="false">http://www.myApp.com/ws</parameter> -->

+        <!-- <parameter name="originServer"              locked="false">My-Server/1.1</parameter>           -->

+        <!-- <parameter name="requestTimeout"            locked="false">10000</parameter>                   -->

+        <!-- <parameter name="requestTcpNoDelay"         locked="false">false</parameter>                   -->

+        <!-- <parameter name="requestCoreThreadPoolSize" locked="false">50</parameter>                      -->

+        <!-- <parameter name="RequestMaxThreadPoolSize"  locked="false">100</parameter>                     -->

+        <!-- <parameter name="threadKeepAliveTime"       locked="false">240000</parameter>                  -->

+        <!-- <parameter name="threadKeepAliveTimeUnit"   locked="false">MILLISECONDS</parameter>            -->

+    </transportReceiver>

+    

+    <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)

+    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">

+        <parameter name="myTopicConnectionFactory" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>

+        </parameter>

+

+        <parameter name="myQueueConnectionFactory" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>

+        </parameter>

+

+        <parameter name="default" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>

+        </parameter>

+    </transportReceiver>-->

+

+    <!--Uncomment if you want to have SMTP transport support-->

+    <!--<transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">-->

+    <!--<parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>-->

+    <!--<parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.port" locked="false">110</parameter>-->

+    <!--<parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>-->

+    <!--</transportReceiver>-->

+

+    <transportReceiver name="tcp"

+                       class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncommet following paramter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp"

+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local"

+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="http"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+    <transportSender name="jms"

+                     class="org.apache.axis2.transport.jms.JMSSender"/>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+   <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">

+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>

+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>

+   </transportSender>

+   -->

+

+    <!-- ================================================= -->

+    <!-- Global Modules  -->

+    <!-- ================================================= -->

+    <!-- Comment this to disable Addressing -->

+    <module ref="addressing"/>

+

+    <!--Configuring module , providing parameters for modules whether they refer or not-->

+    <!--<moduleConfig name="addressing">-->

+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->

+    <!--</moduleConfig>-->

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+    <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+        <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Transport"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Transport"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+        <phase name="Security"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/ASPNetRound3Compound1InteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/ASPNetRound3Compound1InteropTest.java
new file mode 100644
index 0000000..3f26d03
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/ASPNetRound3Compound1InteropTest.java
@@ -0,0 +1,85 @@
+/*
+* Copyright 2004,2005 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 test;

+

+ import junit.framework.TestCase;

+ import test.stub.Compound1SoapStub;

+ import test.stub.databinding.org.soapinterop.*;

+

+ import java.rmi.RemoteException;

+

+public class ASPNetRound3Compound1InteropTest extends TestCase{

+

+

+

+

+        Compound1SoapStub stub = null;

+        XDocumentDocument1 xDocDoc1 = null;

+        Document doc = null;

+        String id = "Document1";

+        String val = "this is a document";

+        XPersonDocument persDoc = null;

+        Person person = null;

+        String name = "Gayan Asanka";

+        double age = 25;

+        boolean male = true;

+        float personID = (float)456.3123;

+        ResultPersonDocument retPersDoc =null;

+        Person retPers = null;

+

+

+

+        ResultDocumentDocument1 retDoc1 = null;

+        Document retDoc=null;

+

+        public void setUp() throws Exception {

+           stub = new Compound1SoapStub();

+        }

+

+        public void testEchoDocument() throws Exception {

+

+            doc = Document.Factory.newInstance();

+            xDocDoc1 = XDocumentDocument1.Factory.newInstance();

+            doc.setStringValue(val);

+            doc.setID(id);

+            xDocDoc1.setXDocument(doc);

+            retDoc1 = stub.echoDocument(xDocDoc1);

+            retDoc =retDoc1.getResultDocument();

+            //id = "nothing"; //to fail the test

+            assertEquals(id,retDoc.getID());

+            assertEquals(val,retDoc.getStringValue());

+        }

+

+        public void testEchoPerson() throws RemoteException {

+            person = Person.Factory.newInstance();

+            person.setName(name);

+            person.setAge(age);

+            person.setMale(male);

+            person.setID(personID);

+            persDoc = XPersonDocument.Factory.newInstance();

+            persDoc.setXPerson(person);

+            retPersDoc = stub.echoPerson(persDoc);

+            retPers = retPersDoc.getResultPerson();

+            assertEquals(name,retPers.getName());

+            assertEquals(age,retPers.getAge(),0);

+            assertEquals(male,retPers.getMale());

+            assertEquals(personID,retPers.getID(),0);

+        }

+    }

+

+

+

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3Compound2InteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3Compound2InteropTest.java
new file mode 100644
index 0000000..0a411ee
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3Compound2InteropTest.java
@@ -0,0 +1,65 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.Compound2SoapStub;

+import test.stub.databinding.org.soapinterop.Employee;

+import test.stub.databinding.org.soapinterop.Person;

+import test.stub.databinding.org.soapinterop.ResultEmployeeDocument;

+import test.stub.databinding.org.soapinterop.XEmployeeDocument;

+

+

+

+public class AspNetRound3Compound2InteropTest extends TestCase{

+

+    Compound2SoapStub stub = null;

+    XEmployeeDocument xEmpDoc = null;

+    Employee emp = null;

+    Person person = null;

+    String name = "Gayan Asanka";

+    boolean male = true;

+    float personID = (float)456.3123;

+    int id = 123456;

+    double sal = 15000;

+    ResultEmployeeDocument retEmpDoc = null;

+    Employee retEmployee = null;

+

+

+     public void setUp() throws Exception {

+       stub = new Compound2SoapStub();

+    }

+

+    public void testEchoEmployee() throws Exception {

+        person = Person.Factory.newInstance();

+        person.setName(name);

+        person.setMale(male);

+        emp = Employee.Factory.newInstance();

+        emp.setPerson(person);

+        emp.setID(id);

+        emp.setSalary(sal);

+        xEmpDoc = XEmployeeDocument.Factory.newInstance();

+        xEmpDoc.setXEmployee(emp);

+        retEmpDoc = stub.echoEmployee(xEmpDoc);

+        retEmployee = retEmpDoc.getResultEmployee();

+        assertEquals(name,retEmployee.getPerson().getName());

+        assertEquals(male,retEmployee.getPerson().getMale());

+        assertEquals(id,retEmployee.getID());

+        assertEquals(sal,retEmployee.getSalary(),0);

+

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3DoclitInteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3DoclitInteropTest.java
new file mode 100644
index 0000000..9b5cc66
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3DoclitInteropTest.java
@@ -0,0 +1,80 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.WSDLInteropTestDocLitSoapStub;

+import test.stub.databinding.org.soapinterop.*;

+

+import java.rmi.RemoteException;

+

+public class AspNetRound3DoclitInteropTest extends TestCase{

+

+    WSDLInteropTestDocLitSoapStub stub = null;

+    EchoStringParamDocument strParaDoc = null;

+    String str = "Gayan Asanka";

+    EchoStringReturnDocument retStrDoc = null;

+    EchoStringArrayParamDocument strArrayParaDoc = null;

+    ArrayOfString strLitArr = null;

+    EchoStringArrayReturnDocument retArrayDoc = null;

+    String[] strArry = {"String 1", "String 2", "String 3"};

+    ArrayOfString retArray = null;

+    EchoStructParamDocument structParaDoc = null;

+    SOAPStruct soapStruct = null;

+    float flt = (float)1234.456;

+    int i = 123456;

+    EchoStructReturnDocument retStructDoc = null;

+    SOAPStruct retStruct = null;

+

+    public void setUp() throws Exception {

+        stub = new WSDLInteropTestDocLitSoapStub();

+    }

+

+    public void testEchoString() throws RemoteException {

+        strParaDoc = EchoStringParamDocument.Factory.newInstance();

+        strParaDoc.setEchoStringParam(str);

+        retStrDoc = stub.echoString(strParaDoc);

+        assertEquals(str,retStrDoc.getEchoStringReturn());

+    }

+

+    public void testEchoStringArray() throws RemoteException {

+        strLitArr = ArrayOfString.Factory.newInstance();

+        strLitArr.setStringArray(strArry);

+        strArrayParaDoc = EchoStringArrayParamDocument.Factory.newInstance();

+        strArrayParaDoc.setEchoStringArrayParam(strLitArr);

+        retArrayDoc = stub.echoStringArray(strArrayParaDoc);

+        retArray=retArrayDoc.getEchoStringArrayReturn();

+        assertEquals(strArry[0],retArray.getStringArray()[0]);

+        assertEquals(strArry[1],retArray.getStringArray()[1]);

+        assertEquals(strArry[2],retArray.getStringArray()[2]);

+    }

+

+    public void testEchoStruct() throws RemoteException {

+        soapStruct = SOAPStruct.Factory.newInstance();

+        soapStruct.setVarFloat(flt);

+        soapStruct.setVarInt(i);

+        soapStruct.setVarString(str);

+        structParaDoc = EchoStructParamDocument.Factory.newInstance();

+        structParaDoc.setEchoStructParam(soapStruct);

+        retStructDoc = stub.echoStruct(structParaDoc);

+        retStruct = retStructDoc.getEchoStructReturn();

+        assertEquals(flt,retStruct.getVarFloat(),0);

+        assertEquals(i,retStruct.getVarInt());

+        assertEquals(str,retStruct.getVarString());

+

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3DoclitparamInteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3DoclitparamInteropTest.java
new file mode 100644
index 0000000..9b60c38
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/AspNetRound3DoclitparamInteropTest.java
@@ -0,0 +1,91 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.WSDLInteropTestDocLitParametersSoapStub;

+import test.stub.databinding.org.soapinterop.*;

+

+import java.rmi.RemoteException;

+

+public class AspNetRound3DoclitparamInteropTest extends TestCase{

+

+    WSDLInteropTestDocLitParametersSoapStub stub = null;

+    EchoStringDocument strParaDoc = null;

+    EchoStringDocument.EchoString echoStr = null;

+    String str = "Gayan Asanka";

+    EchoStringResponseDocument retStrDoc = null;

+    EchoStringArrayDocument strArrayParaDoc = null;

+    EchoStringArrayDocument.EchoStringArray echoStrArray = null;

+    ArrayOfString strLitArr = null;

+    EchoStringArrayResponseDocument retArrayDoc = null;

+    String[] strArry = {"String 1", "String 2", "String 3"};

+    ArrayOfString retArray = null;

+    EchoStructDocument structParaDoc = null;

+    SOAPStruct soapStruct = null;

+    float flt = (float)1234.456;

+    int i = 123456;

+    EchoStructDocument.EchoStruct echoStruct = null;

+    EchoStructResponseDocument retStructDoc = null;

+    SOAPStruct retStruct = null;

+

+

+    public void setUp() throws Exception {

+        stub = new WSDLInteropTestDocLitParametersSoapStub();

+    }

+

+    public void testEchoString() throws RemoteException {

+        echoStr= EchoStringDocument.EchoString.Factory.newInstance();

+        echoStr.setParam0(str);

+        strParaDoc = EchoStringDocument.Factory.newInstance();

+        strParaDoc.setEchoString(echoStr);

+        retStrDoc = stub.echoString(strParaDoc);

+        assertEquals(str,retStrDoc.getEchoStringResponse().getReturn());

+    }

+

+    public void testEchoStringArray() throws Exception {

+        strLitArr = ArrayOfString.Factory.newInstance();

+        strLitArr.setStringArray(strArry);

+        echoStrArray = EchoStringArrayDocument.EchoStringArray.Factory.newInstance();

+        echoStrArray.setParam0(strLitArr);

+        strArrayParaDoc = EchoStringArrayDocument.Factory.newInstance();

+        strArrayParaDoc.setEchoStringArray1(echoStrArray);

+        retArrayDoc = stub.echoStringArray(strArrayParaDoc);

+        retArray=retArrayDoc.getEchoStringArrayResponse().getReturn();

+        assertEquals(strArry[0],retArray.getStringArray()[0]);

+        assertEquals(strArry[1],retArray.getStringArray()[1]);

+        assertEquals(strArry[2],retArray.getStringArray()[2]);

+    }

+

+    public void testEchoStruct() throws Exception {

+        soapStruct = SOAPStruct.Factory.newInstance();

+        soapStruct.setVarFloat(flt);

+        soapStruct.setVarInt(i);

+        soapStruct.setVarString(str);

+        echoStruct = EchoStructDocument.EchoStruct.Factory.newInstance();

+        echoStruct.setParam0(soapStruct);

+        structParaDoc = EchoStructDocument.Factory.newInstance();

+        structParaDoc.setEchoStruct(echoStruct);

+        retStructDoc = stub.echoStruct(structParaDoc);

+        retStruct = retStructDoc.addNewEchoStructResponse().getReturn();

+        assertEquals(flt,retStruct.getVarFloat(),0);

+        assertEquals(i,retStruct.getVarInt());

+        assertEquals(str,retStruct.getVarString());

+

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/MsStkv3Round3Compound1InteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/MsStkv3Round3Compound1InteropTest.java
new file mode 100644
index 0000000..48ec767
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/MsStkv3Round3Compound1InteropTest.java
@@ -0,0 +1,80 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.SoapInteropCompound1PortTypeStub;

+import test.stub.databinding.org.soapinterop.*;

+

+import java.rmi.RemoteException;

+

+public class MsStkv3Round3Compound1InteropTest extends TestCase{

+

+

+    SoapInteropCompound1PortTypeStub stub = null;

+    XDocumentDocument1 xDocDoc1 = null;

+    Document doc = null;

+    String id = "Document1";

+    String val = "this is a document";

+    XPersonDocument persDoc = null;

+    Person person = null;

+    String name = "Gayan Asanka";

+    double age = 25;

+    boolean male = true;

+    float personID = (float)456.3123;

+    ResultPersonDocument retPersDoc =null;

+    Person retPers = null;

+

+

+

+    ResultDocumentDocument1 retDoc1 = null;

+    Document retDoc=null;

+

+    public void setUp() throws Exception {

+       stub = new SoapInteropCompound1PortTypeStub();

+    }

+

+    public void testEchoDocument() throws Exception {

+

+        doc = Document.Factory.newInstance();

+        xDocDoc1 = XDocumentDocument1.Factory.newInstance();

+        doc.setStringValue(val);

+        doc.setID(id);

+        xDocDoc1.setXDocument(doc);

+        retDoc1 = stub.echoDocument(xDocDoc1);

+        retDoc =retDoc1.getResultDocument();

+        //id = "nothing"; //to fail the test

+        assertEquals(id,retDoc.getID());

+        assertEquals(val,retDoc.getStringValue());

+    }

+

+    public void testEchoPerson() throws RemoteException {

+        person = Person.Factory.newInstance();

+        person.setName(name);

+        person.setAge(age);

+        person.setMale(male);

+        person.setID(personID);

+        persDoc = XPersonDocument.Factory.newInstance();

+        persDoc.setXPerson(person);

+        retPersDoc = stub.echoPerson(persDoc);

+        retPers = retPersDoc.getResultPerson();

+        assertEquals(name,retPers.getName());

+        assertEquals(age,retPers.getAge(),0);

+        assertEquals(male,retPers.getMale());

+        assertEquals(personID,retPers.getID(),0);

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/MsStkv3Round3Compound2InteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/MsStkv3Round3Compound2InteropTest.java
new file mode 100644
index 0000000..1be68f4
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/MsStkv3Round3Compound2InteropTest.java
@@ -0,0 +1,63 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.SoapInteropCompound2PortTypeStub;

+import test.stub.databinding.org.soapinterop.Employee;

+import test.stub.databinding.org.soapinterop.Person;

+import test.stub.databinding.org.soapinterop.ResultEmployeeDocument;

+import test.stub.databinding.org.soapinterop.XEmployeeDocument;

+

+public class MsStkv3Round3Compound2InteropTest extends TestCase{

+

+    SoapInteropCompound2PortTypeStub stub = null;

+    XEmployeeDocument xEmpDoc = null;

+    Employee emp = null;

+    Person person = null;

+    String name = "Gayan Asanka";

+    boolean male = true;

+    float personID = (float)456.3123;

+    int id = 123456;

+    double sal = 15000;

+    ResultEmployeeDocument retEmpDoc = null;

+    Employee retEmployee = null;

+

+

+     public void setUp() throws Exception {

+       stub = new SoapInteropCompound2PortTypeStub();

+    }

+

+    public void testEchoEmployee() throws Exception {

+        person = Person.Factory.newInstance();

+        person.setName(name);

+        person.setMale(male);

+        emp = Employee.Factory.newInstance();

+        emp.setPerson(person);

+        emp.setID(id);

+        emp.setSalary(sal);

+        xEmpDoc = XEmployeeDocument.Factory.newInstance();

+        xEmpDoc.setXEmployee(emp);

+        retEmpDoc = stub.echoEmployee(xEmpDoc);

+        retEmployee = retEmpDoc.getResultEmployee();

+        assertEquals(name,retEmployee.getPerson().getName());

+        assertEquals(male,retEmployee.getPerson().getMale());

+        assertEquals(id,retEmployee.getID());

+        assertEquals(sal,retEmployee.getSalary(),0);

+

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DocLitInteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DocLitInteropTest.java
new file mode 100644
index 0000000..222ce03
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DocLitInteropTest.java
@@ -0,0 +1,47 @@
+/*
+* Copyright 2004,2005 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 test;

+//

+//import junit.framework.TestCase;

+//import org.soapinterop.xsd.Document;

+//import org.soapinterop.xsd.XDocumentDocument1;

+//import org.soapinterop.xsd.Person;

+//import org.soapinterop.xsd.XPersonDocument;

+//import test.stub1.SoapInteropCompound1PortTypeStub;

+//

+//public class Round3DocLitInteropTest extends TestCase{

+//

+//    public void testTest1() throws Exception{

+//        SoapInteropCompound1PortTypeStub stub = new SoapInteropCompound1PortTypeStub();

+//            Document xDoc = Document.Factory.newInstance();

+//            xDoc.setID("123");

+//            xDoc.setStringValue("Gayan Asanka");

+//            XDocumentDocument1 doc = XDocumentDocument1.Factory.newInstance();

+//            doc.setXDocument(xDoc);

+//            System.out.println( stub.echoDocument(doc));

+//

+//            Person pers = Person.Factory.newInstance();

+//            pers.setName("Gayan Asanka");

+//            pers.setAge(28);

+//            pers.setID((float)123.456);

+//            pers.setMale(true);

+//            XPersonDocument xPersDoc = XPersonDocument.Factory.newInstance();

+//            xPersDoc.setXPerson(pers);

+//            System.out.println(stub.echoPerson(xPersDoc));

+//    }

+//

+//}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DoclitHeadersInteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DoclitHeadersInteropTest.java
new file mode 100644
index 0000000..d405322
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DoclitHeadersInteropTest.java
@@ -0,0 +1,51 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.RetHeaderPortTypeStub;

+import test.stub.databinding.org.soapinterop.*;

+

+public class Round3DoclitHeadersInteropTest extends TestCase{

+

+    RetHeaderPortTypeStub stub = null;

+    Header2 h2 = null;

+    Header2Document h2Doc = null;

+    Header1 h1 = null;

+    Header1Document h1Doc = null;

+    EchoStringParamDocument paraDoc = null;

+    String str = "String Parameter";

+

+

+    public void testEchoString() throws Exception{

+        stub = new RetHeaderPortTypeStub();

+        h2 = Header2.Factory.newInstance();

+        h2.setInt(456);

+        h2.setString("Header2 para");

+        h2Doc = Header2Document.Factory.newInstance();

+        h2Doc.setHeader2(h2);

+        h1 = Header1.Factory.newInstance();

+        h1.setInt(123);

+        h1.setString("string header1 para");

+        h1Doc = Header1Document.Factory.newInstance();

+        h1Doc.setHeader1(h1);

+        paraDoc = EchoStringParamDocument.Factory.newInstance();

+        paraDoc.setEchoStringParam(str);

+        EchoStringReturnDocument retDoc = stub.echoString(paraDoc, h1Doc, h2Doc);

+        assertEquals(str,retDoc.getEchoStringReturn());

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DoclitparamInteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DoclitparamInteropTest.java
new file mode 100644
index 0000000..e6edc2b
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/Round3DoclitparamInteropTest.java
@@ -0,0 +1,101 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.WSDLInteropTestDocLitPortTypeStub;

+import test.stub.databinding.org.soapinterop.*;

+

+import java.rmi.RemoteException;

+

+

+public class Round3DoclitparamInteropTest extends TestCase{

+

+    WSDLInteropTestDocLitPortTypeStub stub = null;

+    EchoStringDocument strParaDoc = null;

+    EchoStringDocument.EchoString echoStr = null;

+    String str = "Gayan Asanka";

+    EchoStringResponseDocument retStrDoc = null;

+    EchoStringArrayDocument strArrayParaDoc = null;

+    EchoStringArrayDocument.EchoStringArray echoStrArray = null;

+    ArrayOfstringLiteral strLitArr = null;

+    EchoStringArrayResponseDocument retArrayDoc = null;

+    String[] strArry = {"String 1", "String 2", "String 3"};

+    ArrayOfstringLiteral retArray = null;

+    EchoStructDocument structParaDoc = null;

+    SOAPStruct soapStruct = null;

+    float flt = (float)1234.456;

+    int i = 123456;

+    EchoStructDocument.EchoStruct echoStruct = null;

+    EchoStructResponseDocument retStructDoc = null;

+    SOAPStruct retStruct = null;

+    EchoVoidDocument.EchoVoid echoVoid = null;

+    EchoVoidDocument echVoidDoc = null;

+    EchoVoidResponseDocument echoVoidResDoc=null;

+

+    public void setUp() throws Exception {

+        stub = new WSDLInteropTestDocLitPortTypeStub();

+    }

+

+    public void testEchoString() throws RemoteException {

+        echoStr= EchoStringDocument.EchoString.Factory.newInstance();

+        echoStr.setParam0(str);

+        strParaDoc = EchoStringDocument.Factory.newInstance();

+        strParaDoc.setEchoString(echoStr);

+        retStrDoc = stub.echoString(strParaDoc);

+        assertEquals(str,retStrDoc.getEchoStringResponse().getReturn());

+    }

+

+    public void testEchoStringArray() throws RemoteException {

+        strLitArr = ArrayOfstringLiteral.Factory.newInstance();

+        strLitArr.setStringArray(strArry);

+        echoStrArray = EchoStringArrayDocument.EchoStringArray.Factory.newInstance();

+        echoStrArray.setParam0(strLitArr);

+        strArrayParaDoc = EchoStringArrayDocument.Factory.newInstance();

+        strArrayParaDoc.setEchoStringArray1(echoStrArray);

+        retArrayDoc = stub.echoStringArray(strArrayParaDoc);

+        retArray=retArrayDoc.getEchoStringArrayResponse().getReturn();

+        assertEquals(strArry[0],retArray.getStringArray()[0]);

+        assertEquals(strArry[1],retArray.getStringArray()[1]);

+        assertEquals(strArry[2],retArray.getStringArray()[2]);

+    }

+

+    public void testEchoStruct() throws RemoteException {

+        soapStruct = SOAPStruct.Factory.newInstance();

+        soapStruct.setVarFloat(flt);

+        soapStruct.setVarInt(i);

+        soapStruct.setVarString(str);

+        echoStruct = EchoStructDocument.EchoStruct.Factory.newInstance();

+        echoStruct.setParam0(soapStruct);

+        structParaDoc = EchoStructDocument.Factory.newInstance();

+        structParaDoc.setEchoStruct(echoStruct);

+        retStructDoc = stub.echoStruct(structParaDoc);

+        retStruct = retStructDoc.addNewEchoStructResponse().getReturn();

+        assertEquals(flt,retStruct.getVarFloat(),0);

+        assertEquals(i,retStruct.getVarInt());

+        assertEquals(str,retStruct.getVarString());

+

+    }

+

+    public void testEchoVoid() throws RemoteException {

+

+        echoVoid = EchoVoidDocument.EchoVoid.Factory.newInstance();

+        echVoidDoc = EchoVoidDocument.Factory.newInstance();

+        echVoidDoc.setEchoVoid(echoVoid);

+        echoVoidResDoc = stub.echoVoid(echVoidDoc);

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3Compound1InteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3Compound1InteropTest.java
new file mode 100644
index 0000000..fbacfcb
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3Compound1InteropTest.java
@@ -0,0 +1,79 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.SoapInteropCompound1PortTypeStub;

+import test.stub.databinding.org.soapinterop.*;

+

+import java.rmi.RemoteException;

+

+public class SunRound3Compound1InteropTest extends TestCase{

+

+    SoapInteropCompound1PortTypeStub stub = null;

+    XDocumentDocument1 xDocDoc1 = null;

+    Document doc = null;

+    String id = "Document1";

+    String val = "this is a document";

+    XPersonDocument persDoc = null;

+    Person person = null;

+    String name = "Gayan Asanka";

+    double age = 25;

+    boolean male = true;

+    float personID = (float)456.3123;

+    ResultPersonDocument retPersDoc =null;

+    Person retPers = null;

+

+

+

+    ResultDocumentDocument1 retDoc1 = null;

+    Document retDoc=null;

+

+    public void setUp() throws Exception {

+       stub = new SoapInteropCompound1PortTypeStub();

+    }

+

+    public void testEchoDocument() throws Exception {

+

+        doc = Document.Factory.newInstance();

+        xDocDoc1 = XDocumentDocument1.Factory.newInstance();

+        doc.setStringValue(val);

+        doc.setID(id);

+        xDocDoc1.setXDocument(doc);

+        retDoc1 = stub.echoDocument(xDocDoc1);

+        retDoc =retDoc1.getResultDocument();

+        //id = "nothing"; //to fail the test

+        assertEquals(id,retDoc.getID());

+        assertEquals(val,retDoc.getStringValue());

+    }

+

+    public void testEchoPerson() throws RemoteException {

+        person = Person.Factory.newInstance();

+        person.setName(name);

+        person.setAge(age);

+        person.setMale(male);

+        person.setID(personID);

+        persDoc = XPersonDocument.Factory.newInstance();

+        persDoc.setXPerson(person);

+        retPersDoc = stub.echoPerson(persDoc);

+        retPers = retPersDoc.getResultPerson();

+        assertEquals(name,retPers.getName());

+        assertEquals(age,retPers.getAge(),0);

+        assertEquals(male,retPers.getMale());

+        assertEquals(personID,retPers.getID(),0);

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3Compound2InteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3Compound2InteropTest.java
new file mode 100644
index 0000000..49b9620
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3Compound2InteropTest.java
@@ -0,0 +1,63 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.SoapInteropCompound2PortTypeStub;

+import test.stub.databinding.org.soapinterop.Employee;

+import test.stub.databinding.org.soapinterop.Person;

+import test.stub.databinding.org.soapinterop.ResultEmployeeDocument;

+import test.stub.databinding.org.soapinterop.XEmployeeDocument;

+

+public class SunRound3Compound2InteropTest extends TestCase{

+

+    SoapInteropCompound2PortTypeStub stub = null;

+    XEmployeeDocument xEmpDoc = null;

+    Employee emp = null;

+    Person person = null;

+    String name = "Gayan Asanka";

+    boolean male = true;

+    float personID = (float)456.3123;

+    int id = 123456;

+    double sal = 15000;

+    ResultEmployeeDocument retEmpDoc = null;

+    Employee retEmployee = null;

+

+

+     public void setUp() throws Exception {

+       stub = new SoapInteropCompound2PortTypeStub();

+    }

+

+    public void testEchoEmployee() throws Exception {

+        person = Person.Factory.newInstance();

+        person.setName(name);

+        person.setMale(male);

+        emp = Employee.Factory.newInstance();

+        emp.setPerson(person);

+        emp.setID(id);

+        emp.setSalary(sal);

+        xEmpDoc = XEmployeeDocument.Factory.newInstance();

+        xEmpDoc.setXEmployee(emp);

+        retEmpDoc = stub.echoEmployee(xEmpDoc);

+        retEmployee = retEmpDoc.getResultEmployee();

+        assertEquals(name,retEmployee.getPerson().getName());

+        assertEquals(male,retEmployee.getPerson().getMale());

+        assertEquals(id,retEmployee.getID());

+        assertEquals(sal,retEmployee.getSalary(),0);

+

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3DoclitparamInteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3DoclitparamInteropTest.java
new file mode 100644
index 0000000..c4b1f30
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/SunRound3DoclitparamInteropTest.java
@@ -0,0 +1,100 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.WSDLInteropTestDocLitPortTypeStub;

+import test.stub.databinding.org.soapinterop.*;

+

+import java.rmi.RemoteException;

+

+public class SunRound3DoclitparamInteropTest extends TestCase{

+

+    WSDLInteropTestDocLitPortTypeStub stub = null;

+    EchoStringDocument strParaDoc = null;

+    EchoStringDocument.EchoString echoStr = null;

+    String str = "Gayan Asanka";

+    EchoStringResponseDocument retStrDoc = null;

+    EchoStringArrayDocument strArrayParaDoc = null;

+    EchoStringArrayDocument.EchoStringArray echoStrArray = null;

+    ArrayOfstringLiteral strLitArr = null;

+    EchoStringArrayResponseDocument retArrayDoc = null;

+    String[] strArry = {"String 1", "String 2", "String 3"};

+    ArrayOfstringLiteral retArray = null;

+    EchoStructDocument structParaDoc = null;

+    SOAPStruct soapStruct = null;

+    float flt = (float)1234.456;

+    int i = 123456;

+    EchoStructDocument.EchoStruct echoStruct = null;

+    EchoStructResponseDocument retStructDoc = null;

+    SOAPStruct retStruct = null;

+    EchoVoidDocument.EchoVoid echoVoid = null;

+    EchoVoidDocument echVoidDoc = null;

+    EchoVoidResponseDocument echoVoidResDoc=null;

+

+    public void setUp() throws Exception {

+        stub = new WSDLInteropTestDocLitPortTypeStub();

+    }

+

+    public void testEchoString() throws RemoteException {

+        echoStr= EchoStringDocument.EchoString.Factory.newInstance();

+        echoStr.setParam0(str);

+        strParaDoc = EchoStringDocument.Factory.newInstance();

+        strParaDoc.setEchoString(echoStr);

+        retStrDoc = stub.echoString(strParaDoc);

+        assertEquals(str,retStrDoc.getEchoStringResponse().getReturn());

+    }

+

+    public void testEchoStringArray() throws RemoteException {

+        strLitArr = ArrayOfstringLiteral.Factory.newInstance();

+        strLitArr.setStringArray(strArry);

+        echoStrArray = EchoStringArrayDocument.EchoStringArray.Factory.newInstance();

+        echoStrArray.setParam0(strLitArr);

+        strArrayParaDoc = EchoStringArrayDocument.Factory.newInstance();

+        strArrayParaDoc.setEchoStringArray1(echoStrArray);

+        retArrayDoc = stub.echoStringArray(strArrayParaDoc);

+        retArray=retArrayDoc.getEchoStringArrayResponse().getReturn();

+        assertEquals(strArry[0],retArray.getStringArray()[0]);

+        assertEquals(strArry[1],retArray.getStringArray()[1]);

+        assertEquals(strArry[2],retArray.getStringArray()[2]);

+    }

+

+    public void testEchoStruct() throws RemoteException {

+        soapStruct = SOAPStruct.Factory.newInstance();

+        soapStruct.setVarFloat(flt);

+        soapStruct.setVarInt(i);

+        soapStruct.setVarString(str);

+        echoStruct = EchoStructDocument.EchoStruct.Factory.newInstance();

+        echoStruct.setParam0(soapStruct);

+        structParaDoc = EchoStructDocument.Factory.newInstance();

+        structParaDoc.setEchoStruct(echoStruct);

+        retStructDoc = stub.echoStruct(structParaDoc);

+        retStruct = retStructDoc.addNewEchoStructResponse().getReturn();

+        assertEquals(flt,retStruct.getVarFloat(),0);

+        assertEquals(i,retStruct.getVarInt());

+        assertEquals(str,retStruct.getVarString());

+

+    }

+

+    public void testEchoVoid() throws RemoteException {

+

+        echoVoid = EchoVoidDocument.EchoVoid.Factory.newInstance();

+        echVoidDoc = EchoVoidDocument.Factory.newInstance();

+        echVoidDoc.setEchoVoid(echoVoid);

+        echoVoidResDoc = stub.echoVoid(echVoidDoc);

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3Compound1InteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3Compound1InteropTest.java
new file mode 100644
index 0000000..bd6da60
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3Compound1InteropTest.java
@@ -0,0 +1,80 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.SoapInteropCompound1PortTypeStub;

+import test.stub.databinding.org.soapinterop.*;

+

+import java.rmi.RemoteException;

+

+public class WMRound3Compound1InteropTest extends TestCase{

+

+

+    SoapInteropCompound1PortTypeStub stub = null;

+    XDocumentDocument1 xDocDoc1 = null;

+    Document doc = null;

+    String id = "Document1";

+    String val = "this is a document";

+    XPersonDocument persDoc = null;

+    Person person = null;

+    String name = "Gayan Asanka";

+    double age = 25;

+    boolean male = true;

+    float personID = (float)456.3123;

+    ResultPersonDocument retPersDoc =null;

+    Person retPers = null;

+

+

+

+    ResultDocumentDocument1 retDoc1 = null;

+    Document retDoc=null;

+

+    public void setUp() throws Exception {

+       stub = new SoapInteropCompound1PortTypeStub();

+    }

+

+    public void testEchoDocument() throws Exception {

+

+        doc = Document.Factory.newInstance();

+        xDocDoc1 = XDocumentDocument1.Factory.newInstance();

+        doc.setStringValue(val);

+        doc.setID(id);

+        xDocDoc1.setXDocument(doc);

+        retDoc1 = stub.echoDocument(xDocDoc1);

+        retDoc =retDoc1.getResultDocument();

+        //id = "nothing"; //to fail the test

+        assertEquals(id,retDoc.getID());

+        assertEquals(val,retDoc.getStringValue());

+    }

+

+    public void testEchoPerson() throws RemoteException {

+        person = Person.Factory.newInstance();

+        person.setName(name);

+        person.setAge(age);

+        person.setMale(male);

+        person.setID(personID);

+        persDoc = XPersonDocument.Factory.newInstance();

+        persDoc.setXPerson(person);

+        retPersDoc = stub.echoPerson(persDoc);

+        retPers = retPersDoc.getResultPerson();

+        assertEquals(name,retPers.getName());

+        assertEquals(age,retPers.getAge(),0);

+        assertEquals(male,retPers.getMale());

+        assertEquals(personID,retPers.getID(),0);

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3Compound2InteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3Compound2InteropTest.java
new file mode 100644
index 0000000..1f670de
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3Compound2InteropTest.java
@@ -0,0 +1,63 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.SoapInteropCompound2PortTypeStub;

+import test.stub.databinding.org.soapinterop.Employee;

+import test.stub.databinding.org.soapinterop.Person;

+import test.stub.databinding.org.soapinterop.ResultEmployeeDocument;

+import test.stub.databinding.org.soapinterop.XEmployeeDocument;

+

+public class WMRound3Compound2InteropTest extends TestCase{

+

+    SoapInteropCompound2PortTypeStub stub = null;

+    XEmployeeDocument xEmpDoc = null;

+    Employee emp = null;

+    Person person = null;

+    String name = "Gayan Asanka";

+    boolean male = true;

+    float personID = (float)456.3123;

+    int id = 123456;

+    double sal = 15000;

+    ResultEmployeeDocument retEmpDoc = null;

+    Employee retEmployee = null;

+

+

+     public void setUp() throws Exception {

+       stub = new SoapInteropCompound2PortTypeStub();

+    }

+

+    public void testEchoEmployee() throws Exception {

+        person = Person.Factory.newInstance();

+        person.setName(name);

+        person.setMale(male);

+        emp = Employee.Factory.newInstance();

+        emp.setPerson(person);

+        emp.setID(id);

+        emp.setSalary(sal);

+        xEmpDoc = XEmployeeDocument.Factory.newInstance();

+        xEmpDoc.setXEmployee(emp);

+        retEmpDoc = stub.echoEmployee(xEmpDoc);

+        retEmployee = retEmpDoc.getResultEmployee();

+        assertEquals(name,retEmployee.getPerson().getName());

+        assertEquals(male,retEmployee.getPerson().getMale());

+        assertEquals(id,retEmployee.getID());

+        assertEquals(sal,retEmployee.getSalary(),0);

+

+    }

+}

diff --git a/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3DoclitInteropTest.java b/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3DoclitInteropTest.java
new file mode 100644
index 0000000..d81cee7
--- /dev/null
+++ b/rampart_1_1/modules/integration/doclit-interop/clients/test/WMRound3DoclitInteropTest.java
@@ -0,0 +1,86 @@
+/*
+* Copyright 2004,2005 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 test;

+

+import junit.framework.TestCase;

+import test.stub.WSDLInteropTestDocLitPortTypeStub;

+import test.stub.databinding.org.soapinterop.*;

+

+import java.rmi.RemoteException;

+

+public class WMRound3DoclitInteropTest extends TestCase{

+

+    WSDLInteropTestDocLitPortTypeStub stub = null;

+    EchoStringParamDocument strParaDoc = null;

+    String str = "Gayan Asanka";

+    EchoStringReturnDocument retStrDoc = null;

+    EchoStringArrayParamDocument strArrayParaDoc = null;

+    ArrayOfstringLiteral strLitArr = null;

+    EchoStringArrayReturnDocument retArrayDoc = null;

+    String[] strArry = {"String 1", "String 2", "String 3"};

+    ArrayOfstringLiteral retArray = null;

+    EchoStructParamDocument structParaDoc = null;

+    SOAPStruct soapStruct = null;

+    float flt = (float)1234.456;

+    int i = 123456;

+    EchoStructReturnDocument retStructDoc = null;

+    SOAPStruct retStruct = null;

+

+    public void setUp() throws Exception {

+        stub = new WSDLInteropTestDocLitPortTypeStub();

+    }

+

+    public void testEchoString() throws RemoteException {

+        strParaDoc = EchoStringParamDocument.Factory.newInstance();

+        strParaDoc.setEchoStringParam(str);

+        retStrDoc = stub.echoString(strParaDoc);

+        assertEquals(str,retStrDoc.getEchoStringReturn());

+    }

+

+    public void testEchoStringArray() throws RemoteException {

+        strLitArr = ArrayOfstringLiteral.Factory.newInstance();

+        strLitArr.setStringArray(strArry);

+        strArrayParaDoc = EchoStringArrayParamDocument.Factory.newInstance();

+        strArrayParaDoc.setEchoStringArrayParam(strLitArr);

+        retArrayDoc = stub.echoStringArray(strArrayParaDoc);

+        retArray=retArrayDoc.getEchoStringArrayReturn();

+        assertEquals(strArry[0],retArray.getStringArray()[0]);

+        assertEquals(strArry[1],retArray.getStringArray()[1]);

+        assertEquals(strArry[2],retArray.getStringArray()[2]);

+    }

+

+    public void testEchoStruct() throws RemoteException {

+        soapStruct = SOAPStruct.Factory.newInstance();

+        soapStruct.setVarFloat(flt);

+        soapStruct.setVarInt(i);

+        soapStruct.setVarString(str);

+        structParaDoc = EchoStructParamDocument.Factory.newInstance();

+        structParaDoc.setEchoStructParam(soapStruct);

+        retStructDoc = stub.echoStruct(structParaDoc);

+        retStruct = retStructDoc.getEchoStructReturn();

+        assertEquals(flt,retStruct.getVarFloat(),0);

+        assertEquals(i,retStruct.getVarInt());

+        assertEquals(str,retStruct.getVarString());

+

+    }

+

+//    public void testEchoVoid() throws RemoteException {

+//        OMFactory fac = OMAbstractFactory.getOMFactory();

+//        OMElement elem = fac.createOMElement("gayan",null);

+//        stub.echoVoid(elem);

+//    }

+}

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetInteropTestDocLit.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetInteropTestDocLit.wsdl
new file mode 100644
index 0000000..d10ce24
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetInteropTestDocLit.wsdl
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>

+<definitions xmlns:s1="http://soapinterop.org" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://soapinterop.org/xsd" xmlns:s2="http://soapinterop.org/AbstractTypes" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://soapinterop.org" xmlns="http://schemas.xmlsoap.org/wsdl/">

+  <types>

+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/xsd">

+      <s:import namespace="http://soapinterop.org" />

+      <s:element name="echoStructParam" type="s0:SOAPStruct" />

+      <s:complexType name="SOAPStruct">

+        <s:sequence>

+          <s:element minOccurs="1" maxOccurs="1" name="varFloat" type="s:float" />

+          <s:element minOccurs="1" maxOccurs="1" name="varInt" type="s:int" />

+          <s:element minOccurs="0" maxOccurs="1" name="varString" type="s:string" />

+        </s:sequence>

+      </s:complexType>

+      <s:element name="echoStructReturn" type="s0:SOAPStruct" />

+      <s:element name="echoStringArrayParam" type="s1:ArrayOfString" />

+      <s:element name="string" type="s:string" />

+      <s:element name="echoStringArrayReturn" type="s1:ArrayOfString" />

+      <s:element name="echoStringParam" type="s:string" />

+      <s:element name="echoStringReturn" type="s:string" />

+    </s:schema>

+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org">

+      <s:import namespace="http://soapinterop.org/xsd" />

+      <s:complexType name="ArrayOfString">

+        <s:sequence>

+          <s:element minOccurs="0" maxOccurs="unbounded" ref="s0:string" />

+        </s:sequence>

+      </s:complexType>

+      <s:element name="ArrayOfString1" nillable="true" type="s1:ArrayOfString1" />

+      <s:complexType name="ArrayOfString1">

+        <s:sequence>

+          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />

+        </s:sequence>

+      </s:complexType>

+      <s:element name="string" nillable="true" type="s:string" />

+    </s:schema>

+    <s:schema targetNamespace="http://soapinterop.org/AbstractTypes">

+      <s:complexType name="StringArray">

+        <s:complexContent mixed="false">

+          <s:restriction base="soapenc:Array">

+            <s:sequence>

+              <s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string" />

+            </s:sequence>

+          </s:restriction>

+        </s:complexContent>

+      </s:complexType>

+    </s:schema>

+  </types>

+  <message name="echoStructSoapIn">

+    <part name="echoStructParam" element="s0:echoStructParam" />

+  </message>

+  <message name="echoStructSoapOut">

+    <part name="echoStructResult" element="s0:echoStructReturn" />

+  </message>

+  <message name="echoStringArraySoapIn">

+    <part name="echoStringArrayParam" element="s0:echoStringArrayParam" />

+  </message>

+  <message name="echoStringArraySoapOut">

+    <part name="echoStringArrayResult" element="s0:echoStringArrayReturn" />

+  </message>

+  <message name="echoStringSoapIn">

+    <part name="echoStringParam" element="s0:echoStringParam" />

+  </message>

+  <message name="echoStringSoapOut">

+    <part name="echoStringResult" element="s0:echoStringReturn" />

+  </message>

+  <portType name="WSDLInteropTestDocLitSoap">

+    <operation name="echoStruct">

+      <input message="s1:echoStructSoapIn" />

+      <output message="s1:echoStructSoapOut" />

+    </operation>

+    <operation name="echoStringArray">

+      <input message="s1:echoStringArraySoapIn" />

+      <output message="s1:echoStringArraySoapOut" />

+    </operation>

+    <operation name="echoString">

+      <input message="s1:echoStringSoapIn" />

+      <output message="s1:echoStringSoapOut" />

+    </operation>

+  </portType>

+  <binding name="WSDLInteropTestDocLitSoap" type="s1:WSDLInteropTestDocLitSoap">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

+    <operation name="echoStruct">

+      <soap:operation soapAction="http://soapinterop.org/" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+    <operation name="echoStringArray">

+      <soap:operation soapAction="http://soapinterop.org/" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+    <operation name="echoString">

+      <soap:operation soapAction="http://soapinterop.org/" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+  </binding>

+  <service name="WSDLInteropTestDocLit">

+    <port name="WSDLInteropTestDocLitSoap" binding="s1:WSDLInteropTestDocLitSoap">

+      <soap:address location="http://mssoapinterop.org/asmx/wsdl/InteropTestDocLit.asmx" />

+    </port>

+  </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetInteropTestDocLitParameters.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetInteropTestDocLitParameters.wsdl
new file mode 100644
index 0000000..f185ce5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetInteropTestDocLitParameters.wsdl
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="utf-8"?>

+<definitions xmlns:s1="http://soapinterop.org/AbstractTypes" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://soapinterop.org/xsd" xmlns:s2="http://soapinterop.org" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://soapinterop.org" xmlns="http://schemas.xmlsoap.org/wsdl/">

+  <types>

+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/xsd">

+      <s:element name="echoStruct">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="param0" type="s0:SOAPStruct" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+      <s:complexType name="SOAPStruct">

+        <s:sequence>

+          <s:element minOccurs="1" maxOccurs="1" form="unqualified" name="varFloat" type="s:float" />

+          <s:element minOccurs="1" maxOccurs="1" form="unqualified" name="varInt" type="s:int" />

+          <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="varString" type="s:string" />

+        </s:sequence>

+      </s:complexType>

+      <s:element name="echoStructResponse">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="return" type="s0:SOAPStruct" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+      <s:element name="echoStringArray">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="param0" type="s0:ArrayOfString" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+      <s:complexType name="ArrayOfString">

+        <s:sequence>

+          <s:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="string" type="s:string" />

+        </s:sequence>

+      </s:complexType>

+      <s:element name="echoStringArrayResponse">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="return" type="s0:ArrayOfString" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+      <s:element name="echoString">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="param0" type="s:string" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+      <s:element name="echoStringResponse">

+        <s:complexType>

+          <s:sequence>

+            <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="return" type="s:string" />

+          </s:sequence>

+        </s:complexType>

+      </s:element>

+    </s:schema>

+    <s:schema targetNamespace="http://soapinterop.org/AbstractTypes">

+      <s:complexType name="StringArray">

+        <s:complexContent mixed="false">

+          <s:restriction base="soapenc:Array">

+            <s:sequence>

+              <s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string" />

+            </s:sequence>

+          </s:restriction>

+        </s:complexContent>

+      </s:complexType>

+    </s:schema>

+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org">

+      <s:element name="ArrayOfString" nillable="true" type="s2:ArrayOfString" />

+      <s:complexType name="ArrayOfString">

+        <s:sequence>

+          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />

+        </s:sequence>

+      </s:complexType>

+      <s:element name="string" nillable="true" type="s:string" />

+    </s:schema>

+  </types>

+  <message name="echoStructSoapIn">

+    <part name="parameters" element="s0:echoStruct" />

+  </message>

+  <message name="echoStructSoapOut">

+    <part name="parameters" element="s0:echoStructResponse" />

+  </message>

+  <message name="echoStringArraySoapIn">

+    <part name="parameters" element="s0:echoStringArray" />

+  </message>

+  <message name="echoStringArraySoapOut">

+    <part name="parameters" element="s0:echoStringArrayResponse" />

+  </message>

+  <message name="echoStringSoapIn">

+    <part name="parameters" element="s0:echoString" />

+  </message>

+  <message name="echoStringSoapOut">

+    <part name="parameters" element="s0:echoStringResponse" />

+  </message>

+  <portType name="WSDLInteropTestDocLitParametersSoap">

+    <operation name="echoStruct">

+      <input message="s2:echoStructSoapIn" />

+      <output message="s2:echoStructSoapOut" />

+    </operation>

+    <operation name="echoStringArray">

+      <input message="s2:echoStringArraySoapIn" />

+      <output message="s2:echoStringArraySoapOut" />

+    </operation>

+    <operation name="echoString">

+      <input message="s2:echoStringSoapIn" />

+      <output message="s2:echoStringSoapOut" />

+    </operation>

+  </portType>

+  <binding name="WSDLInteropTestDocLitParametersSoap" type="s2:WSDLInteropTestDocLitParametersSoap">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

+    <operation name="echoStruct">

+      <soap:operation soapAction="http://soapinterop.org/" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+    <operation name="echoStringArray">

+      <soap:operation soapAction="http://soapinterop.org/" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+    <operation name="echoString">

+      <soap:operation soapAction="http://soapinterop.org/" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+  </binding>

+  <service name="WSDLInteropTestDocLitParameters">

+    <port name="WSDLInteropTestDocLitParametersSoap" binding="s2:WSDLInteropTestDocLitParametersSoap">

+      <soap:address location="http://mssoapinterop.org/asmx/wsdl/InteropTestDocLitParameters.asmx" />

+    </port>

+  </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetcompound1.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetcompound1.wsdl
new file mode 100644
index 0000000..5560f3b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetcompound1.wsdl
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>

+<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://soapinterop.org/xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://soapinterop.org" xmlns="http://schemas.xmlsoap.org/wsdl/">

+  <types>

+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/xsd">

+      <s:element name="x_Document" type="s0:Document" />

+      <s:complexType name="Document">

+        <s:simpleContent>

+          <s:extension base="s:string">

+            <s:attribute name="ID" type="s:string" />

+          </s:extension>

+        </s:simpleContent>

+      </s:complexType>

+      <s:element name="result_Document" type="s0:Document" />

+      <s:element name="x_Person" type="s0:Person" />

+      <s:complexType name="Person">

+        <s:sequence>

+          <s:element minOccurs="1" maxOccurs="1" name="Age" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="ID" type="s:float" />

+        </s:sequence>

+        <s:attribute name="Name" type="s:string" />

+        <s:attribute name="Male" type="s:boolean" />

+      </s:complexType>

+      <s:element name="result_Person" type="s0:Person" />

+    </s:schema>

+  </types>

+  <message name="echoDocumentSoapIn">

+    <part name="x_Document" element="s0:x_Document" />

+  </message>

+  <message name="echoDocumentSoapOut">

+    <part name="echoDocumentResult" element="s0:result_Document" />

+  </message>

+  <message name="echoPersonSoapIn">

+    <part name="x_Person" element="s0:x_Person" />

+  </message>

+  <message name="echoPersonSoapOut">

+    <part name="echoPersonResult" element="s0:result_Person" />

+  </message>

+  <portType name="Compound1Soap">

+    <operation name="echoDocument">

+      <input message="tns:echoDocumentSoapIn" />

+      <output message="tns:echoDocumentSoapOut" />

+    </operation>

+    <operation name="echoPerson">

+      <input message="tns:echoPersonSoapIn" />

+      <output message="tns:echoPersonSoapOut" />

+    </operation>

+  </portType>

+  <binding name="Compound1Soap" type="tns:Compound1Soap">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

+    <operation name="echoDocument">

+      <soap:operation soapAction="http://soapinterop/echoDocument" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+    <operation name="echoPerson">

+      <soap:operation soapAction="http://soapinterop/echoPerson" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+  </binding>

+  <service name="Compound1">

+    <port name="Compound1Soap" binding="tns:Compound1Soap">

+      <soap:address location="http://mssoapinterop.org/asmx/wsdl/compound1.asmx" />

+    </port>

+  </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetcompound2.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetcompound2.wsdl
new file mode 100644
index 0000000..c30a207
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/aspnetcompound2.wsdl
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>

+<definitions xmlns:s1="http://soapinterop.org/person" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://soapinterop.org/employee" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://soapinterop.org" xmlns="http://schemas.xmlsoap.org/wsdl/">

+  <types>

+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/employee">

+      <s:import namespace="http://soapinterop.org/person" />

+      <s:element name="x_Employee" type="s0:Employee" />

+      <s:complexType name="Employee">

+        <s:sequence>

+          <s:element minOccurs="0" maxOccurs="1" name="person" type="s1:Person" />

+          <s:element minOccurs="1" maxOccurs="1" name="salary" type="s:double" />

+          <s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int" />

+        </s:sequence>

+      </s:complexType>

+      <s:element name="result_Employee" type="s0:Employee" />

+    </s:schema>

+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/person">

+      <s:complexType name="Person">

+        <s:sequence>

+          <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />

+          <s:element minOccurs="1" maxOccurs="1" name="Male" type="s:boolean" />

+        </s:sequence>

+      </s:complexType>

+    </s:schema>

+  </types>

+  <message name="echoEmployeeSoapIn">

+    <part name="x_Employee" element="s0:x_Employee" />

+  </message>

+  <message name="echoEmployeeSoapOut">

+    <part name="echoEmployeeResult" element="s0:result_Employee" />

+  </message>

+  <portType name="Compound2Soap">

+    <operation name="echoEmployee">

+      <input message="tns:echoEmployeeSoapIn" />

+      <output message="tns:echoEmployeeSoapOut" />

+    </operation>

+  </portType>

+  <binding name="Compound2Soap" type="tns:Compound2Soap">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

+    <operation name="echoEmployee">

+      <soap:operation soapAction="#echoEmployee" style="document" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+  </binding>

+  <service name="Compound2">

+    <port name="Compound2Soap" binding="tns:Compound2Soap">

+      <soap:address location="http://mssoapinterop.org/asmx/wsdl/compound2.asmx" />

+    </port>

+  </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/compound1.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/compound1.wsdl
new file mode 100644
index 0000000..c3126b0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/compound1.wsdl
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="SoapInteropCompound" 

+		targetNamespace="http://soapinterop.org/" 

+		xmlns:wsdlns="http://soapinterop.org/" 

+		xmlns:typens="http://soapinterop.org/xsd"

+		xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+		xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+		xmlns="http://schemas.xmlsoap.org/wsdl/">

+	<types>

+		<schema targetNamespace="http://soapinterop.org/xsd" 

+		xmlns="http://www.w3.org/2001/XMLSchema" 

+		elementFormDefault="qualified">			

+			<complexType name="Person">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="Age" type="double"/>

+					<element minOccurs="1" maxOccurs="1" name="ID" type="xsd:float"/>					

+				</sequence>

+				<attribute name="Name" type="string"/>

+				<attribute name="Male" type="boolean"/>

+			</complexType>

+			<element name="x_Person" type="typens:Person"/>	

+			<element name="result_Person" type="typens:Person"/>

+			

+			<complexType name="Document">

+			<simpleContent>

+			 <extension base="string">

+			   <xsd:attribute name ="ID" type="string"/>

+			 </extension>

+			</simpleContent>

+			</complexType>	

+			<element name="x_Document" type="typens:Document"/>	

+			<element name="result_Document" type="typens:Document"/>	

+		</schema>

+	</types>

+	<message name="echoPerson">

+		<part name="x" element="typens:x_Person"/>

+	</message>

+	<message name="echoPersonResponse">

+		<part name="Result" element="typens:result_Person"/>

+	</message>

+	<message name="echoDocument">

+		<part name="x" element="typens:x_Document"/>

+	</message>

+	<message name="echoDocumentResponse">

+		<part name="Result" element="typens:result_Document"/>

+	</message>

+	<portType name="SoapInteropCompound1PortType">

+		<operation name="echoPerson" parameterOrder="x">

+			<input message="wsdlns:echoPerson"/>

+			<output message="wsdlns:echoPersonResponse"/>

+		</operation>

+		<operation name="echoDocument" parameterOrder="x">

+			<input message="wsdlns:echoDocument"/>

+			<output message="wsdlns:echoDocumentResponse"/>

+		</operation>

+	</portType>

+	<binding name="SoapInteropCompound1Binding" type="wsdlns:SoapInteropCompound1PortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<operation name="echoPerson">

+			<soap:operation soapAction="http://soapinterop/echoPerson"/>

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+		</operation>

+		<operation name="echoDocument">

+			<soap:operation soapAction="http://soapinterop/echoDocument"/>

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+		</operation>

+

+	</binding>

+	<service name="Compound1">

+		<port name="SoapInteropCompound1Port" binding="wsdlns:SoapInteropCompound1Binding">

+			<soap:address location="http://www.whitemesa.net/interop/r3/compound1"/>

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/compound2.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/compound2.wsdl
new file mode 100644
index 0000000..da31dd5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/compound2.wsdl
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="SoapInteropCompound" targetNamespace="http://soapinterop.org/" 

+		xmlns:wsdlns="http://soapinterop.org/" 

+		xmlns:emp="http://soapinterop.org/employee" 

+		xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+		xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+		xmlns="http://schemas.xmlsoap.org/wsdl/">

+	<types>

+		<schema targetNamespace="http://soapinterop.org/person" 

+			xmlns="http://www.w3.org/2001/XMLSchema" 

+			elementFormDefault="qualified">

+					

+			<complexType name="Person">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="Name" type="string"/>

+					<element minOccurs="1" maxOccurs="1" name="Male" type="boolean"/>					

+				</sequence>

+			</complexType>

+		</schema>

+		<schema targetNamespace = "http://soapinterop.org/employee" 

+			xmlns:prs = "http://soapinterop.org/person"			 

+			xmlns="http://www.w3.org/2001/XMLSchema" 

+			elementFormDefault="qualified">

+                        <import namespace="http://soapinterop.org/person" /> 

+			<complexType name="Employee">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="person" type="prs:Person"/>

+					<element minOccurs="1" maxOccurs="1" name="salary" type="double"/>					

+					<element minOccurs="1" maxOccurs="1" name="ID" type="int"/>

+				</sequence>

+			</complexType>

+			<element name="x_Employee" type="emp:Employee"/>	

+			<element name="result_Employee" type="emp:Employee"/>

+		</schema>

+	</types>

+	<message name="echoEmployee">

+		<part name="x" element="emp:x_Employee"/>

+	</message>

+	<message name="echoEmployeeResponse">

+		<part name="result" element="emp:result_Employee"/>

+	</message>

+	<portType name="SoapInteropCompound2PortType">

+		<operation name="echoEmployee" parameterOrder="x">

+			<input message="wsdlns:echoEmployee"/>

+			<output message="wsdlns:echoEmployeeResponse"/>

+		</operation>

+	</portType>

+	<binding name="SoapInteropCompound2Binding" type="wsdlns:SoapInteropCompound2PortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<operation name="echoEmployee">

+			<soap:operation soapAction="#echoEmployee"/>

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+		</operation>		

+	</binding>

+	<service name="Compound2">

+		<port name="SoapInteropCompound2Port" binding="wsdlns:SoapInteropCompound2Binding">

+			<soap:address location="http://www.whitemesa.net/interop/r3/compound2"/>

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestdoclit.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestdoclit.wsdl
new file mode 100644
index 0000000..986e8d5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestdoclit.wsdl
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="WSDLInteropTestDocLitService" 

+    targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+    xmlns="http://schemas.xmlsoap.org/wsdl/" 

+    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+    xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit" 

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+    xmlns:xsd1="http://soapinterop.org/xsd"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+    <types>

+        <schema targetNamespace="http://soapinterop.org/xsd"

+            xmlns="http://www.w3.org/2001/XMLSchema" 

+            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+            elementFormDefault="qualified">

+            <complexType name="ArrayOfstring_literal">

+                <sequence>

+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>

+                </sequence>

+            </complexType>

+	    <complexType name="SOAPStruct">

+                <all>

+                    <element name="varFloat" type="xsd:float"/>

+                    <element name="varInt" type="xsd:int"/>

+                    <element name="varString" type="xsd:string"/>

+                </all>

+            </complexType>

+  

+            <element name="echoStringParam" type="xsd:string"/>

+         

+            <element name="echoStringReturn" type="xsd:string"/>

+            <element name="echoStringArrayParam" type="xsd1:ArrayOfstring_literal"/>

+                

+            <element name="echoStringArrayReturn" type="xsd1:ArrayOfstring_literal"/>

+               

+            <element name="echoStructParam" type="xsd1:SOAPStruct"/>

+                   

+            <element name="echoStructReturn" type="xsd1:SOAPStruct"/>

+        </schema>

+    </types>

+    <message name="echoString">

+        <part element="xsd1:echoStringParam" name="a"/>

+    </message>

+    <message name="echoStringResponse">

+        <part element="xsd1:echoStringReturn" name="result"/>

+    </message>

+    <message name="echoStringArray">

+        <part element="xsd1:echoStringArrayParam" name="a"/>

+    </message>

+    <message name="echoStringArrayResponse">

+        <part element="xsd1:echoStringArrayReturn" name="result"/>

+    </message>

+    <message name="echoStruct">

+        <part element="xsd1:echoStructParam" name="a"/>

+    </message>

+    <message name="echoStructResponse">

+        <part element="xsd1:echoStructReturn" name="result"/>

+    </message>

+    <message name="echoVoid"/>

+    <message name="echoVoidResponse"/>

+

+    <portType name="WSDLInteropTestDocLitPortType">

+        <operation name="echoString">

+            <input message="tns:echoString" name="echoString"/>

+            <output message="tns:echoStringResponse" name="echoStringResponse"/>

+        </operation>

+        <operation name="echoStringArray">

+            <input message="tns:echoStringArray" name="echoStringArray"/>

+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>

+        </operation>

+        <operation name="echoStruct">

+            <input message="tns:echoStruct" name="echoStruct"/>

+            <output message="tns:echoStructResponse" name="echoStructResponse"/>

+        </operation>

+        <operation name="echoVoid">

+            <input message="tns:echoVoid" name="echoVoid"/>

+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>

+        </operation>

+    </portType>

+    <binding name="WSDLInteropTestDocLitPortBinding" 

+        type="tns:WSDLInteropTestDocLitPortType">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="echoString">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoString">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStringResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStringArray">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStringArray">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStringArrayResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStruct">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStruct">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStructResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoVoid">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoVoid">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoVoidResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="WSDLInteropTestDocLitService">

+        <port binding="tns:WSDLInteropTestDocLitPortBinding" 

+            name="WSDLInteropTestDocLitPort">

+            <soap:address 

+                location="http://www.whitemesa.net/interop/r3/doclit"/>

+        </port>

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestdoclitparameters.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestdoclitparameters.wsdl
new file mode 100644
index 0000000..0039ae1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestdoclitparameters.wsdl
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="WSDLInteropTestDocLitService" 

+    targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+    xmlns="http://schemas.xmlsoap.org/wsdl/" 

+    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+    xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit" 

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+    xmlns:xsd1="http://soapinterop.org/xsd"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+    <types>

+        <schema targetNamespace="http://soapinterop.org/xsd"

+            xmlns="http://www.w3.org/2001/XMLSchema" 

+            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

+	     <complexType name="ArrayOfstring_literal">

+                <sequence>

+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>

+                </sequence>

+            </complexType>

+	    <complexType name="SOAPStruct">

+                <all>

+                    <element name="varFloat" type="xsd:float"/>

+                    <element name="varInt" type="xsd:int"/>

+                    <element name="varString" type="xsd:string"/>

+                </all>

+            </complexType>            

+

+            <element name="echoString">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd:string"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd:string"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringArray">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd1:ArrayOfstring_literal"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringArrayResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd1:ArrayOfstring_literal"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStruct">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd1:SOAPStruct"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStructResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd1:SOAPStruct"/>

+                    </sequence>

+                </complexType>

+            </element>           

+            <element name="echoVoid">

+                <complexType/>

+            </element>

+            <element name="echoVoidResponse">

+                <complexType/>

+            </element>

+        </schema>

+    </types>

+    <message name="echoString">

+        <part element="xsd1:echoString" name="parameters"/>

+    </message>

+    <message name="echoStringResponse">

+        <part element="xsd1:echoStringResponse" name="parameters"/>

+    </message>

+    <message name="echoStringArray">

+        <part element="xsd1:echoStringArray" name="parameters"/>

+    </message>

+    <message name="echoStringArrayResponse">

+        <part element="xsd1:echoStringArrayResponse" name="parameters"/>

+    </message>

+    <message name="echoStruct">

+        <part element="xsd1:echoStruct" name="parameters"/>

+    </message>

+    <message name="echoStructResponse">

+        <part element="xsd1:echoStructResponse" name="parameters"/>

+    </message>

+    <message name="echoVoid">

+        <part element="xsd1:echoVoid" name="parameters"/>

+    </message>

+    <message name="echoVoidResponse">

+        <part element="xsd1:echoVoidResponse" name="parameters"/>

+    </message>

+    <portType name="WSDLInteropTestDocLitPortType">

+        <operation name="echoString">

+            <input message="tns:echoString" name="echoString"/>

+            <output message="tns:echoStringResponse" name="echoStringResponse"/>

+        </operation>

+        <operation name="echoStringArray">

+            <input message="tns:echoStringArray" name="echoStringArray"/>

+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>

+        </operation>

+        <operation name="echoStruct">

+            <input message="tns:echoStruct" name="echoStruct"/>

+            <output message="tns:echoStructResponse" name="echoStructResponse"/>

+        </operation>

+        <operation name="echoVoid">

+            <input message="tns:echoVoid" name="echoVoid"/>

+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>

+        </operation>

+    </portType>

+    <binding name="WSDLInteropTestDocLitPortBinding" 

+        type="tns:WSDLInteropTestDocLitPortType">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="echoString">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoString">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStringResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStringArray">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStringArray">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStringArrayResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStruct">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStruct">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStructResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoVoid">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoVoid">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoVoidResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="WSDLInteropTestDocLitService">

+        <port binding="tns:WSDLInteropTestDocLitPortBinding" 

+            name="WSDLInteropTestDocLitPort">

+            <soap:address 

+                location="http://www.whitemesa.net/interop/r3/doclitparam"/>

+        </port>

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestheaders.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestheaders.wsdl
new file mode 100644
index 0000000..0f30518
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/interoptestheaders.wsdl
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>

+<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+	     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+             xmlns:s="http://www.w3.org/2001/XMLSchema" 

+             xmlns:tns="http://soapinterop.org/"

+	     xmlns:types="http://soapinterop.org/xsd" 

+             targetNamespace="http://soapinterop.org/" 

+	     xmlns="http://schemas.xmlsoap.org/wsdl/">

+  <types>

+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/xsd">

+      <s:element name="echoStringParam" type="s:string"/>

+         

+      <s:element name="echoStringReturn" type="s:string"/>

+

+      <s:element name="Header1" type="types:Header1" />

+      <s:complexType name="Header1">

+        <s:sequence>

+          <s:element name="string" type="s:string" />

+          <s:element name="int" type="s:int" />

+        </s:sequence>

+	<s:anyAttribute />

+      </s:complexType>

+      <s:element name="Header2" type="types:Header2" />

+      <s:complexType name="Header2">

+        <s:sequence>

+          <s:element name="int" type="s:int" />

+          <s:element name="string" type="s:string" />

+        </s:sequence>

+	<s:anyAttribute />

+      </s:complexType>

+    </s:schema>

+  </types>

+  <message name="echoString">

+        <part element="types:echoStringParam" name="a"/>

+    </message>

+    <message name="echoStringResponse">

+        <part element="types:echoStringReturn" name="result"/>

+    </message>

+  <message name="Header1">

+    <part name="Header1" element="types:Header1" />

+  </message>

+  <message name="Header2">

+    <part name="Header2" element="types:Header2" />

+  </message>

+  <portType name="RetHeaderPortType">

+    <operation name="echoString">

+      <input message="tns:echoString" />

+      <output message="tns:echoStringResponse" />

+    </operation>

+  </portType>

+  <binding name = "RetHeaderBinding" type="tns:RetHeaderPortType">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

+    <operation name="echoString">

+      <soap:operation soapAction="http://soapinterop.org/" style="document" />

+      <input>

+        <soap:body use="literal" />

+        <soap:header message="tns:Header1" part="Header1" use="literal"/>

+        <soap:header message="tns:Header2" part="Header2" use="literal"/>

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+    </operation>

+  </binding>

+  <service name="RetHeaderService">

+    <port name="RetHeaderPort" binding="tns:RetHeaderBinding">

+      <soap:address location="http://www.whitemesa.net/interop/r3/testheaders" />

+    </port>

+  </service>

+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3Compound1.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3Compound1.wsdl
new file mode 100644
index 0000000..3b1524b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3Compound1.wsdl
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="SoapInteropCompound" 

+		targetNamespace="http://soapinterop.org/" 

+		xmlns:wsdlns="http://soapinterop.org/" 

+		xmlns:typens="http://soapinterop.org/xsd"

+		xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+		xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+		xmlns="http://schemas.xmlsoap.org/wsdl/">

+	<types>

+		<schema targetNamespace="http://soapinterop.org/xsd" 

+		xmlns="http://www.w3.org/2001/XMLSchema" 

+		elementFormDefault="qualified">			

+			<complexType name="Person">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="Age" type="double"/>

+					<element minOccurs="1" maxOccurs="1" name="ID" type="xsd:float"/>					

+				</sequence>

+				<attribute name="Name" type="string"/>

+				<attribute name="Male" type="boolean"/>

+			</complexType>

+			<element name="x_Person" type="typens:Person"/>	

+			<element name="result_Person" type="typens:Person"/>

+			

+			<complexType name="Document">

+			<simpleContent>

+			 <extension base="string">

+			   <xsd:attribute name ="ID" type="string"/>

+			 </extension>

+			</simpleContent>

+			</complexType>	

+			<element name="x_Document" type="typens:Document"/>	

+			<element name="result_Document" type="typens:Document"/>	

+		</schema>

+	</types>

+	<message name="echoPerson">

+		<part name="x" element="typens:x_Person"/>

+	</message>

+	<message name="echoPersonResponse">

+		<part name="Result" element="typens:result_Person"/>

+	</message>

+	<message name="echoDocument">

+		<part name="x" element="typens:x_Document"/>

+	</message>

+	<message name="echoDocumentResponse">

+		<part name="Result" element="typens:result_Document"/>

+	</message>

+	<portType name="SoapInteropCompound1PortType">

+		<operation name="echoPerson" parameterOrder="x">

+			<input message="wsdlns:echoPerson"/>

+			<output message="wsdlns:echoPersonResponse"/>

+		</operation>

+		<operation name="echoDocument" parameterOrder="x">

+			<input message="wsdlns:echoDocument"/>

+			<output message="wsdlns:echoDocumentResponse"/>

+		</operation>

+	</portType>

+	<binding name="SoapInteropCompound1Binding" type="wsdlns:SoapInteropCompound1PortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<operation name="echoPerson">

+			<soap:operation soapAction="http://soapinterop/echoPerson"/>

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+		</operation>

+		<operation name="echoDocument">

+			<soap:operation soapAction="http://soapinterop/echoDocument"/>

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+		</operation>

+

+	</binding>

+	<service name="Compound1">

+		<port name="SoapInteropCompound1Port" binding="wsdlns:SoapInteropCompound1Binding">

+			<soap:address location="http://mssoapinterop.org/stkv3/wsdl/Compound1.wsdl"/>

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3Compound2.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3Compound2.wsdl
new file mode 100644
index 0000000..841fb9a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3Compound2.wsdl
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="SoapInteropCompound" targetNamespace="http://soapinterop.org/" 

+		xmlns:wsdlns="http://soapinterop.org/" 

+		xmlns:emp="http://soapinterop.org/employee" 

+		xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+		xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+		xmlns="http://schemas.xmlsoap.org/wsdl/">

+	<types>

+		<schema targetNamespace="http://soapinterop.org/person" 

+			xmlns="http://www.w3.org/2001/XMLSchema" 

+			elementFormDefault="qualified">

+					

+			<complexType name="Person">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="Name" type="string"/>

+					<element minOccurs="1" maxOccurs="1" name="Male" type="boolean"/>					

+				</sequence>

+			</complexType>

+		</schema>

+		<schema targetNamespace = "http://soapinterop.org/employee" 

+			xmlns:prs = "http://soapinterop.org/person"			 

+			xmlns="http://www.w3.org/2001/XMLSchema" 

+			elementFormDefault="qualified">

+			<complexType name="Employee">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="person" type="prs:Person"/>

+					<element minOccurs="1" maxOccurs="1" name="salary" type="double"/>					

+					<element minOccurs="1" maxOccurs="1" name="ID" type="int"/>

+				</sequence>

+			</complexType>

+			<element name="x_Employee" type="emp:Employee"/>	

+			<element name="result_Employee" type="emp:Employee"/>

+		</schema>

+	</types>

+	<message name="echoEmployee">

+		<part name="x" element="emp:x_Employee"/>

+	</message>

+	<message name="echoEmployeeResponse">

+		<part name="result" element="emp:result_Employee"/>

+	</message>

+	<portType name="SoapInteropCompound2PortType">

+		<operation name="echoEmployee" parameterOrder="x">

+			<input message="wsdlns:echoEmployee"/>

+			<output message="wsdlns:echoEmployeeResponse"/>

+		</operation>

+	</portType>

+	<binding name="SoapInteropCompound2Binding" type="wsdlns:SoapInteropCompound2PortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<operation name="echoEmployee">

+			<soap:operation soapAction="#echoEmployee"/>

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+		</operation>		

+	</binding>

+	<service name="Compound2">

+		<port name="SoapInteropCompound2Port" binding="wsdlns:SoapInteropCompound2Binding">

+			<soap:address location="http://mssoapinterop.org/stkv3/wsdl/Compound2.wsdl"/>

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3interopTestDocLit.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3interopTestDocLit.wsdl
new file mode 100644
index 0000000..25262be
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3interopTestDocLit.wsdl
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="WSDLInteropTestDocLitService" 

+    targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+    xmlns="http://schemas.xmlsoap.org/wsdl/" 

+    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+    xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit" 

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+    xmlns:xsd1="http://soapinterop.org/xsd"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+    <types>

+        <schema targetNamespace="http://soapinterop.org/xsd"

+            xmlns="http://www.w3.org/2001/XMLSchema" 

+            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+            elementFormDefault="qualified">

+            <complexType name="ArrayOfstring_literal">

+                <sequence>

+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>

+                </sequence>

+            </complexType>

+	    <complexType name="SOAPStruct">

+                <all>

+                    <element name="varFloat" type="xsd:float"/>

+                    <element name="varInt" type="xsd:int"/>

+                    <element name="varString" type="xsd:string"/>

+                </all>

+            </complexType>

+  

+            <element name="echoStringParam" type="xsd:string"/>

+         

+            <element name="echoStringReturn" type="xsd:string"/>

+            <element name="echoStringArrayParam" type="xsd1:ArrayOfstring_literal"/>

+                

+            <element name="echoStringArrayReturn" type="xsd1:ArrayOfstring_literal"/>

+               

+            <element name="echoStructParam" type="xsd1:SOAPStruct"/>

+                   

+            <element name="echoStructReturn" type="xsd1:SOAPStruct"/>

+        </schema>

+    </types>

+    <message name="echoString">

+        <part element="xsd1:echoStringParam" name="a"/>

+    </message>

+    <message name="echoStringResponse">

+        <part element="xsd1:echoStringReturn" name="result"/>

+    </message>

+    <message name="echoStringArray">

+        <part element="xsd1:echoStringArrayParam" name="a"/>

+    </message>

+    <message name="echoStringArrayResponse">

+        <part element="xsd1:echoStringArrayReturn" name="result"/>

+    </message>

+    <message name="echoStruct">

+        <part element="xsd1:echoStructParam" name="a"/>

+    </message>

+    <message name="echoStructResponse">

+        <part element="xsd1:echoStructReturn" name="result"/>

+    </message>

+    <message name="echoVoid"/>

+    <message name="echoVoidResponse"/>

+

+    <portType name="WSDLInteropTestDocLitPortType">

+        <operation name="echoString">

+            <input message="tns:echoString" name="echoString"/>

+            <output message="tns:echoStringResponse" name="echoStringResponse"/>

+        </operation>

+        <operation name="echoStringArray">

+            <input message="tns:echoStringArray" name="echoStringArray"/>

+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>

+        </operation>

+        <operation name="echoStruct">

+            <input message="tns:echoStruct" name="echoStruct"/>

+            <output message="tns:echoStructResponse" name="echoStructResponse"/>

+        </operation>

+        <operation name="echoVoid">

+            <input message="tns:echoVoid" name="echoVoid"/>

+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>

+        </operation>

+    </portType>

+    <binding name="WSDLInteropTestDocLitPortBinding" 

+        type="tns:WSDLInteropTestDocLitPortType">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="echoString">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoString">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStringResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStringArray">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStringArray">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStringArrayResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStruct">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStruct">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStructResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoVoid">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoVoid">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoVoidResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="WSDLInteropTestDocLitService">

+        <port binding="tns:WSDLInteropTestDocLitPortBinding" 

+            name="WSDLInteropTestDocLitPort">

+            <soap:address 

+                location="http://mssoapinterop.org/stkv3/wsdl/interopTestDocLit.wsdl"/>

+        </port>

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3interopTestDocLitParameters.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3interopTestDocLitParameters.wsdl
new file mode 100644
index 0000000..1b531e5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/stkv3interopTestDocLitParameters.wsdl
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="WSDLInteropTestDocLitService" 

+    targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+    xmlns="http://schemas.xmlsoap.org/wsdl/" 

+    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+    xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit" 

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+    xmlns:xsd1="http://soapinterop.org/xsd"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+    <types>

+        <schema targetNamespace="http://soapinterop.org/xsd"

+            xmlns="http://www.w3.org/2001/XMLSchema" 

+            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

+	     <complexType name="ArrayOfstring_literal">

+                <sequence>

+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>

+                </sequence>

+            </complexType>

+	    <complexType name="SOAPStruct">

+                <all>

+                    <element name="varFloat" type="xsd:float"/>

+                    <element name="varInt" type="xsd:int"/>

+                    <element name="varString" type="xsd:string"/>

+                </all>

+            </complexType>            

+

+            <element name="echoString">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd:string"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd:string"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringArray">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd1:ArrayOfstring_literal"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringArrayResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd1:ArrayOfstring_literal"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStruct">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd1:SOAPStruct"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStructResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd1:SOAPStruct"/>

+                    </sequence>

+                </complexType>

+            </element>           

+            <element name="echoVoid">

+                <complexType/>

+            </element>

+            <element name="echoVoidResponse">

+                <complexType/>

+            </element>

+        </schema>

+    </types>

+    <message name="echoString">

+        <part element="xsd1:echoString" name="parameters"/>

+    </message>

+    <message name="echoStringResponse">

+        <part element="xsd1:echoStringResponse" name="parameters"/>

+    </message>

+    <message name="echoStringArray">

+        <part element="xsd1:echoStringArray" name="parameters"/>

+    </message>

+    <message name="echoStringArrayResponse">

+        <part element="xsd1:echoStringArrayResponse" name="parameters"/>

+    </message>

+    <message name="echoStruct">

+        <part element="xsd1:echoStruct" name="parameters"/>

+    </message>

+    <message name="echoStructResponse">

+        <part element="xsd1:echoStructResponse" name="parameters"/>

+    </message>

+    <message name="echoVoid">

+        <part element="xsd1:echoVoid" name="parameters"/>

+    </message>

+    <message name="echoVoidResponse">

+        <part element="xsd1:echoVoidResponse" name="parameters"/>

+    </message>

+    <portType name="WSDLInteropTestDocLitPortType">

+        <operation name="echoString">

+            <input message="tns:echoString" name="echoString"/>

+            <output message="tns:echoStringResponse" name="echoStringResponse"/>

+        </operation>

+        <operation name="echoStringArray">

+            <input message="tns:echoStringArray" name="echoStringArray"/>

+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>

+        </operation>

+        <operation name="echoStruct">

+            <input message="tns:echoStruct" name="echoStruct"/>

+            <output message="tns:echoStructResponse" name="echoStructResponse"/>

+        </operation>

+        <operation name="echoVoid">

+            <input message="tns:echoVoid" name="echoVoid"/>

+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>

+        </operation>

+    </portType>

+    <binding name="WSDLInteropTestDocLitPortBinding" 

+        type="tns:WSDLInteropTestDocLitPortType">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="echoString">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoString">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStringResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStringArray">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStringArray">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStringArrayResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStruct">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStruct">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoStructResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoVoid">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoVoid">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </input>

+            <output name="echoVoidResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" 

+                    use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="WSDLInteropTestDocLitService">

+        <port binding="tns:WSDLInteropTestDocLitPortBinding" 

+            name="WSDLInteropTestDocLitPort">

+            <soap:address 

+                location="http://mssoapinterop.org/stkv3/wsdl/interopTestDocLitParameters.wsdl"/>

+        </port>

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/suncompound1.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/suncompound1.wsdl
new file mode 100644
index 0000000..70f52fe
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/suncompound1.wsdl
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlns="http://soapinterop.org/" xmlns:typens="http://soapinterop.org/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SoapInteropCompound" targetNamespace="http://soapinterop.org/">
+	<types>
+		<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/xsd" elementFormDefault="qualified">			
+			<complexType name="Person">
+				<sequence>
+					<element minOccurs="1" maxOccurs="1" name="Age" type="double"/>
+					<element minOccurs="1" maxOccurs="1" name="ID" type="xsd:float"/>					
+				</sequence>
+				<attribute name="Name" type="string"/>
+				<attribute name="Male" type="boolean"/>
+			</complexType>
+			<element name="x_Person" type="typens:Person"/>	
+			<element name="result_Person" type="typens:Person"/>
+			
+			<complexType name="Document">
+			<simpleContent>
+			 <extension base="string">
+			   <xsd:attribute name="ID" type="string"/>
+			 </extension>
+			</simpleContent>
+			</complexType>	
+			<element name="x_Document" type="typens:Document"/>	
+			<element name="result_Document" type="typens:Document"/>	
+		</schema>
+	</types>
+	<message name="echoPerson">
+		<part name="x" element="typens:x_Person"/>
+	</message>
+	<message name="echoPersonResponse">
+		<part name="Result" element="typens:result_Person"/>
+	</message>
+	<message name="echoDocument">
+		<part name="x" element="typens:x_Document"/>
+	</message>
+	<message name="echoDocumentResponse">
+		<part name="Result" element="typens:result_Document"/>
+	</message>
+	<portType name="SoapInteropCompound1PortType">
+		<operation name="echoPerson" parameterOrder="x">
+			<input message="wsdlns:echoPerson"/>
+			<output message="wsdlns:echoPersonResponse"/>
+		</operation>
+		<operation name="echoDocument" parameterOrder="x">
+			<input message="wsdlns:echoDocument"/>
+			<output message="wsdlns:echoDocumentResponse"/>
+		</operation>
+	</portType>
+	<binding name="SoapInteropCompound1Binding" type="wsdlns:SoapInteropCompound1PortType">
+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+		<operation name="echoPerson">
+			<soap:operation soapAction="http://soapinterop/echoPerson"/>
+			<input>
+				<soap:body use="literal"/>
+			</input>
+			<output>
+				<soap:body use="literal"/>
+			</output>
+		</operation>
+		<operation name="echoDocument">
+			<soap:operation soapAction="http://soapinterop/echoDocument"/>
+			<input>
+				<soap:body use="literal"/>
+			</input>
+			<output>
+				<soap:body use="literal"/>
+			</output>
+		</operation>
+
+	</binding>
+	<service name="Compound1">
+		<port name="SoapInteropCompound1Port" binding="wsdlns:SoapInteropCompound1Binding">
+			<soap:address xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" location="http://soapinterop.java.sun.com:80/round3/groupd/compound1"/>
+		</port>
+	</service>
+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/suncompound2.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/suncompound2.wsdl
new file mode 100644
index 0000000..4b5f580
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/suncompound2.wsdl
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlns="http://soapinterop.org/" xmlns:emp="http://soapinterop.org/employee" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SoapInteropCompound" targetNamespace="http://soapinterop.org/">
+	<types>
+		<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/person" elementFormDefault="qualified">
+					
+			<complexType name="Person">
+				<sequence>
+					<element minOccurs="1" maxOccurs="1" name="Name" type="string"/>
+					<element minOccurs="1" maxOccurs="1" name="Male" type="boolean"/>					
+				</sequence>
+			</complexType>
+		</schema>
+		<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:prs="http://soapinterop.org/person" targetNamespace="http://soapinterop.org/employee" elementFormDefault="qualified">
+                        <import namespace="http://soapinterop.org/person"/> 
+			<complexType name="Employee">
+				<sequence>
+					<element minOccurs="1" maxOccurs="1" name="person" type="prs:Person"/>
+					<element minOccurs="1" maxOccurs="1" name="salary" type="double"/>					
+					<element minOccurs="1" maxOccurs="1" name="ID" type="int"/>
+				</sequence>
+			</complexType>
+			<element name="x_Employee" type="emp:Employee"/>	
+			<element name="result_Employee" type="emp:Employee"/>
+		</schema>
+	</types>
+	<message name="echoEmployee">
+		<part name="x" element="emp:x_Employee"/>
+	</message>
+	<message name="echoEmployeeResponse">
+		<part name="result" element="emp:result_Employee"/>
+	</message>
+	<portType name="SoapInteropCompound2PortType">
+		<operation name="echoEmployee" parameterOrder="x">
+			<input message="wsdlns:echoEmployee"/>
+			<output message="wsdlns:echoEmployeeResponse"/>
+		</operation>
+	</portType>
+	<binding name="SoapInteropCompound2Binding" type="wsdlns:SoapInteropCompound2PortType">
+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+		<operation name="echoEmployee">
+			<soap:operation soapAction="#echoEmployee"/>
+			<input>
+				<soap:body use="literal"/>
+			</input>
+			<output>
+				<soap:body use="literal"/>
+			</output>
+		</operation>		
+	</binding>
+	<service name="Compound2">
+		<port name="SoapInteropCompound2Port" binding="wsdlns:SoapInteropCompound2Binding">
+			<soap:address xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" location="http://soapinterop.java.sun.com:80/round3/groupd/compound2"/>
+		</port>
+	</service>
+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/sundoclit.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/sundoclit.wsdl
new file mode 100644
index 0000000..451edee
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/sundoclit.wsdl
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="WSDLInteropTestDocLitService" targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit">
+    <types>
+        <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://soapinterop.org/xsd" elementFormDefault="qualified">
+            <complexType name="ArrayOfstring_literal">
+                <sequence>
+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>
+                </sequence>
+            </complexType>
+	    <complexType name="SOAPStruct">
+                <all>
+                    <element name="varFloat" type="xsd:float"/>
+                    <element name="varInt" type="xsd:int"/>
+                    <element name="varString" type="xsd:string"/>
+                </all>
+            </complexType>
+  
+            <element name="echoStringParam" type="xsd:string"/>
+         
+            <element name="echoStringReturn" type="xsd:string"/>
+            <element name="echoStringArrayParam" type="xsd1:ArrayOfstring_literal"/>
+                
+            <element name="echoStringArrayReturn" type="xsd1:ArrayOfstring_literal"/>
+               
+            <element name="echoStructParam" type="xsd1:SOAPStruct"/>
+                   
+            <element name="echoStructReturn" type="xsd1:SOAPStruct"/>
+        </schema>
+    </types>
+    <message name="echoString">
+        <part element="xsd1:echoStringParam" name="a"/>
+    </message>
+    <message name="echoStringResponse">
+        <part element="xsd1:echoStringReturn" name="result"/>
+    </message>
+    <message name="echoStringArray">
+        <part element="xsd1:echoStringArrayParam" name="a"/>
+    </message>
+    <message name="echoStringArrayResponse">
+        <part element="xsd1:echoStringArrayReturn" name="result"/>
+    </message>
+    <message name="echoStruct">
+        <part element="xsd1:echoStructParam" name="a"/>
+    </message>
+    <message name="echoStructResponse">
+        <part element="xsd1:echoStructReturn" name="result"/>
+    </message>
+    <message name="echoVoid"/>
+    <message name="echoVoidResponse"/>
+
+    <portType name="WSDLInteropTestDocLitPortType">
+        <operation name="echoString">
+            <input message="tns:echoString" name="echoString"/>
+            <output message="tns:echoStringResponse" name="echoStringResponse"/>
+        </operation>
+        <operation name="echoStringArray">
+            <input message="tns:echoStringArray" name="echoStringArray"/>
+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>
+        </operation>
+        <operation name="echoStruct">
+            <input message="tns:echoStruct" name="echoStruct"/>
+            <output message="tns:echoStructResponse" name="echoStructResponse"/>
+        </operation>
+        <operation name="echoVoid">
+            <input message="tns:echoVoid" name="echoVoid"/>
+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>
+        </operation>
+    </portType>
+    <binding name="WSDLInteropTestDocLitPortBinding" type="tns:WSDLInteropTestDocLitPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <operation name="echoString">
+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+            <input name="echoString">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </input>
+            <output name="echoStringResponse">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </output>
+        </operation>
+        <operation name="echoStringArray">
+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+            <input name="echoStringArray">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </input>
+            <output name="echoStringArrayResponse">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </output>
+        </operation>
+        <operation name="echoStruct">
+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+            <input name="echoStruct">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </input>
+            <output name="echoStructResponse">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </output>
+        </operation>
+        <operation name="echoVoid">
+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+            <input name="echoVoid">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </input>
+            <output name="echoVoidResponse">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="WSDLInteropTestDocLitService">
+        <port binding="tns:WSDLInteropTestDocLitPortBinding" name="WSDLInteropTestDocLitPort">
+            <soap:address xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" location="http://soapinterop.java.sun.com:80/round3/groupd/doclit"/>
+        </port>
+    </service>
+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/WSDLs/sundoclitparams.wsdl b/rampart_1_1/modules/integration/itest-resources/WSDLs/sundoclitparams.wsdl
new file mode 100644
index 0000000..9c837fd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/WSDLs/sundoclitparams.wsdl
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="WSDLInteropTestDocLitService" targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit">
+    <types>
+        <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://soapinterop.org/xsd">
+	     <complexType name="ArrayOfstring_literal">
+                <sequence>
+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>
+                </sequence>
+            </complexType>
+	    <complexType name="SOAPStruct">
+                <all>
+                    <element name="varFloat" type="xsd:float"/>
+                    <element name="varInt" type="xsd:int"/>
+                    <element name="varString" type="xsd:string"/>
+                </all>
+            </complexType>            
+
+            <element name="echoString">
+                <complexType>
+                    <sequence>
+                        <element name="param0" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="echoStringResponse">
+                <complexType>
+                    <sequence>
+                        <element name="return" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="echoStringArray">
+                <complexType>
+                    <sequence>
+                        <element name="param0" type="xsd1:ArrayOfstring_literal"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="echoStringArrayResponse">
+                <complexType>
+                    <sequence>
+                        <element name="return" type="xsd1:ArrayOfstring_literal"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="echoStruct">
+                <complexType>
+                    <sequence>
+                        <element name="param0" type="xsd1:SOAPStruct"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="echoStructResponse">
+                <complexType>
+                    <sequence>
+                        <element name="return" type="xsd1:SOAPStruct"/>
+                    </sequence>
+                </complexType>
+            </element>           
+            <element name="echoVoid">
+                <complexType/>
+            </element>
+            <element name="echoVoidResponse">
+                <complexType/>
+            </element>
+        </schema>
+    </types>
+    <message name="echoString">
+        <part element="xsd1:echoString" name="parameters"/>
+    </message>
+    <message name="echoStringResponse">
+        <part element="xsd1:echoStringResponse" name="parameters"/>
+    </message>
+    <message name="echoStringArray">
+        <part element="xsd1:echoStringArray" name="parameters"/>
+    </message>
+    <message name="echoStringArrayResponse">
+        <part element="xsd1:echoStringArrayResponse" name="parameters"/>
+    </message>
+    <message name="echoStruct">
+        <part element="xsd1:echoStruct" name="parameters"/>
+    </message>
+    <message name="echoStructResponse">
+        <part element="xsd1:echoStructResponse" name="parameters"/>
+    </message>
+    <message name="echoVoid">
+        <part element="xsd1:echoVoid" name="parameters"/>
+    </message>
+    <message name="echoVoidResponse">
+        <part element="xsd1:echoVoidResponse" name="parameters"/>
+    </message>
+    <portType name="WSDLInteropTestDocLitPortType">
+        <operation name="echoString">
+            <input message="tns:echoString" name="echoString"/>
+            <output message="tns:echoStringResponse" name="echoStringResponse"/>
+        </operation>
+        <operation name="echoStringArray">
+            <input message="tns:echoStringArray" name="echoStringArray"/>
+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>
+        </operation>
+        <operation name="echoStruct">
+            <input message="tns:echoStruct" name="echoStruct"/>
+            <output message="tns:echoStructResponse" name="echoStructResponse"/>
+        </operation>
+        <operation name="echoVoid">
+            <input message="tns:echoVoid" name="echoVoid"/>
+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>
+        </operation>
+    </portType>
+    <binding name="WSDLInteropTestDocLitPortBinding" type="tns:WSDLInteropTestDocLitPortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <operation name="echoString">
+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+            <input name="echoString">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </input>
+            <output name="echoStringResponse">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </output>
+        </operation>
+        <operation name="echoStringArray">
+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+            <input name="echoStringArray">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </input>
+            <output name="echoStringArrayResponse">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </output>
+        </operation>
+        <operation name="echoStruct">
+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+            <input name="echoStruct">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </input>
+            <output name="echoStructResponse">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </output>
+        </operation>
+        <operation name="echoVoid">
+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+            <input name="echoVoid">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </input>
+            <output name="echoVoidResponse">
+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit" use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="WSDLInteropTestDocLitService">
+        <port binding="tns:WSDLInteropTestDocLitPortBinding" name="WSDLInteropTestDocLitPort">
+            <soap:address xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" location="http://soapinterop.java.sun.com:80/round3/groupd/doclitparams"/>
+        </port>
+    </service>
+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resBaseStrutFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resBaseStrutFault.xml
new file mode 100644
index 0000000..ab04cfa
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resBaseStrutFault.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.complexrpcenc.server.BaseStruct_Exception</faultstring>
+            <detail>
+               <ns1:part2 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns0:BaseStruct">
+                  <floatMessage xsi:type="xsd:float">10.3</floatMessage>
+                  <shortMessage xsi:type="xsd:short">1</shortMessage>
+               </ns1:part2>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resExtendedStructFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resExtendedStructFault.xml
new file mode 100644
index 0000000..8a9ee03
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resExtendedStructFault.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.complexrpcenc.server.ExtendedStruct_Exception</faultstring>
+            <detail>
+               <ns1:part3 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns0:ExtendedStruct">
+                  <floatMessage xsi:type="xsd:float">0.99</floatMessage>
+                  <shortMessage xsi:type="xsd:short">10</shortMessage>
+                  <stringMessage xsi:type="xsd:string">hi</stringMessage>
+                  <intMessage xsi:type="xsd:int">1</intMessage>
+                  <anotherIntMessage xsi:type="xsd:int">56</anotherIntMessage>
+               </ns1:part3>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resMultipleFaults1.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resMultipleFaults1.xml
new file mode 100644
index 0000000..7b6d373
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resMultipleFaults1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault>
+            <faultcode>env:Client</faultcode>
+            <faultstring>caught exception while handling request: deserialization error: unexpected XML reader state. expected: END but found: START: varString</faultstring>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resMultipleFaults2.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resMultipleFaults2.xml
new file mode 100644
index 0000000..7d0fb49
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resMultipleFaults2.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.complexrpcenc.server.ExtendedStruct_Exception</faultstring>
+            <detail>
+               <ns1:part3 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns0:ExtendedStruct">
+                  <floatMessage xsi:type="xsd:float">0.555</floatMessage>
+                  <shortMessage xsi:type="xsd:short">9</shortMessage>
+                  <stringMessage xsi:type="xsd:string">hi</stringMessage>
+                  <intMessage xsi:type="xsd:int">10</intMessage>
+                  <anotherIntMessage xsi:type="xsd:int">20</anotherIntMessage>
+               </ns1:part3>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resSoapStructFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resSoapStructFault.xml
new file mode 100644
index 0000000..7b6d373
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/complex/resSoapStructFault.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault>
+            <faultcode>env:Client</faultcode>
+            <faultstring>caught exception while handling request: deserialization error: unexpected XML reader state. expected: END but found: START: varString</faultstring>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resEmptyfault.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resEmptyfault.xml
new file mode 100644
index 0000000..c1b71cb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resEmptyfault.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.simplerpcenc.server.EmptyFault</faultstring>
+            <detail>
+               <ns1:part1 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns0:EmptyFault"/>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resIntArrayFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resIntArrayFault.xml
new file mode 100644
index 0000000..d01239a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resIntArrayFault.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.simplerpcenc.server.IntArrayFault</faultstring>
+            <detail>
+               <ns1:part5 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="enc:Array" enc:arrayType="xsd:int[3]">
+                  <item xsi:type="xsd:int">99</item>
+                  <item xsi:type="xsd:int">10</item>
+                  <item xsi:type="xsd:int">12</item>
+               </ns1:part5>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults1.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults1.xml
new file mode 100644
index 0000000..c1b71cb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults1.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.simplerpcenc.server.EmptyFault</faultstring>
+            <detail>
+               <ns1:part1 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns0:EmptyFault"/>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults2.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults2.xml
new file mode 100644
index 0000000..06551c7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults2.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.simplerpcenc.server.StringFault</faultstring>
+            <detail>
+               <ns1:part2 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:string">hi</ns1:part2>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults3.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults3.xml
new file mode 100644
index 0000000..2b996eb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults3.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.simplerpcenc.server.StringFault</faultstring>
+            <detail>
+               <ans1:part2 xmlns:ans1="http://soapinterop.org/wsdl/fault1" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:string">param 1</ans1:part2>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults4.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults4.xml
new file mode 100644
index 0000000..5d43554
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resMultipleFaults4.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault>
+            <faultcode>env:Client</faultcode>
+            <faultstring>caught exception while handling request: deserialization error: java.lang.IllegalArgumentException</faultstring>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resStringFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resStringFault.xml
new file mode 100644
index 0000000..28e0276
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/sun/round4/simple/resStringFault.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://soapinterop.org/types" xmlns:ns1="http://soapinterop.org/wsdl">
+      <env:Body>
+         <env:Fault xsi:type="env:Fault">
+            <faultcode>env:Server</faultcode>
+            <faultstring>round4.grouph.simplerpcenc.server.StringFault</faultstring>
+            <detail>
+               <ns1:part2 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:string">Axis2 Echo String </ns1:part2>
+            </detail>
+         </env:Fault>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1FloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1FloatArrayRes.xml
new file mode 100644
index 0000000..5a9eceb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1FloatArrayRes.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='utf-8'?><E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/">
+<return A:arrayType="y:float[3]" s:type="A:Array">
+<item>45.7687607</item>
+<item>43.4539986</item>
+<item>2523.54199</item>
+</return>
+</m:echoFloatArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1FloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1FloatRes.xml
new file mode 100644
index 0000000..b1b2078
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1FloatRes.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?><E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoFloatResponse xmlns:m="http://soapinterop.org/">
+<return s:type="y:float">50.25</return>
+</m:echoFloatResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1IntArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1IntArrayRes.xml
new file mode 100644
index 0000000..c4af7e4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1IntArrayRes.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='utf-8'?><E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/">
+<return A:arrayType="y:int[3]" s:type="A:Array">
+<item>451</item>
+<item>425</item>
+<item>2523</item>
+</return>
+</m:echoIntegerArrayResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1IntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1IntegerRes.xml
new file mode 100644
index 0000000..92c488b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1IntegerRes.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?><E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoIntegerResponse xmlns:m="http://soapinterop.org/">
+<return s:type="y:int">52</return>
+</m:echoIntegerResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StringArrayRes.xml
new file mode 100644
index 0000000..4bb4aad
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StringArrayRes.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='utf-8'?><E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoStringArrayResponse xmlns:m="http://soapinterop.org/">
+<return A:arrayType="y:string[3]" s:type="A:Array">
+<item>Apache Axis2</item>
+<item>Lanka Software Foundation</item>
+<item>www.opensource.lk</item>
+</return>
+</m:echoStringArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StringUtilRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StringUtilRes.xml
new file mode 100644
index 0000000..acfd40f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StringUtilRes.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoStringResponse xmlns:m="http://soapinterop.org/">
+<return s:type="y:string">Lanka Software Foundation</return>
+</m:echoStringResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StructArrayRes.xml
new file mode 100644
index 0000000..5088bc5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StructArrayRes.xml
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='utf-8'?><E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoStructArrayResponse xmlns:m="http://soapinterop.org/">
+<return A:arrayType="ns1:SOAPStruct[3]" s:type="A:Array" xmlns:ns1="http://soapinterop.org/xsd">
+<item>
+<varString s:type="y:string">strss fdfing1</varString>
+<varInt s:type="y:int">25</varInt>
+<varFloat s:type="y:float">25.2299995</varFloat>
+</item>
+<item>
+<varString s:type="y:string">strss fdfing1</varString>
+<varInt s:type="y:int">25</varInt>
+<varFloat s:type="y:float">25.2299995</varFloat>
+</item>
+<item>
+<varString s:type="y:string">strss fdfing1</varString>
+<varInt s:type="y:int">25</varInt>
+<varFloat s:type="y:float">25.2299995</varFloat>
+</item>
+</return>
+</m:echoStructArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StructRes.xml
new file mode 100644
index 0000000..1abf1a9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1StructRes.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='utf-8'?><E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoStructResponse xmlns:m="http://soapinterop.org/">
+<return s:type="ns1:SOAPStruct" xmlns:ns1="http://soapinterop.org/xsd">
+<varString s:type="y:string">strss fdfing1</varString>
+<varInt s:type="y:int">25</varInt>
+<varFloat s:type="y:float">25.2299995</varFloat>
+</return>
+</m:echoStructResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1VoidUtilRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1VoidUtilRes.xml
new file mode 100644
index 0000000..9b76c3e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round1/Round1VoidUtilRes.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='utf-8'?><E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance">
+<E:Body>
+<m:echoVoidResponse xmlns:m="http://soapinterop.org/"></m:echoVoidResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseBase64Res.xml
new file mode 100644
index 0000000..6180a1e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseBase64Res.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoBase64Response xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:base64Binary">SGVsbG8gV29ybGQ=</return>
+</m:echoBase64Response>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseBooleanRes.xml
new file mode 100644
index 0000000..0bce5ef
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseBooleanRes.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoBooleanResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:boolean">true</return>
+</m:echoBooleanResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseDateRes.xml
new file mode 100644
index 0000000..97dafee
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseDateRes.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoDateResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:dateTime">2006-10-18T22:20:00-07:00</return>
+</m:echoDateResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseDecimalRes.xml
new file mode 100644
index 0000000..f7ce71a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseDecimalRes.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoDecimalResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:decimal">455646152</return>
+</m:echoDecimalResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseFloatArrayRes.xml
new file mode 100644
index 0000000..c59fc44
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseFloatArrayRes.xml
@@ -0,0 +1,11 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" A:arrayType="y:float[3]" s:type="A:Array">
+<item xmlns="">45.7687607</item>
+<item xmlns="">43.4539986</item>
+<item xmlns="">2523.54199</item>
+</return>
+</m:echoFloatArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseFloatRes.xml
new file mode 100644
index 0000000..6da82ee
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseFloatRes.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoFloatResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:float">50.25</return>
+</m:echoFloatResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseHexBinaryRes.xml
new file mode 100644
index 0000000..bd1b383
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseHexBinaryRes.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoHexBinaryResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:hexBinary">AAABBAAE</return>
+</m:echoHexBinaryResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..4a3c4ce
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseIntegerArrayRes.xml
@@ -0,0 +1,11 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" A:arrayType="y:int[3]" s:type="A:Array">
+<item xmlns="">451</item>
+<item xmlns="">425</item>
+<item xmlns="">2523</item>
+</return>
+</m:echoIntegerArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseIntegerRes.xml
new file mode 100644
index 0000000..60aa25b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseIntegerRes.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoIntegerResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:int">52</return>
+</m:echoIntegerResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStringArrayRes.xml
new file mode 100644
index 0000000..16188ce
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStringArrayRes.xml
@@ -0,0 +1,11 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoStringArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" A:arrayType="y:string[3]" s:type="A:Array">
+<item xmlns="">String Value1</item>
+<item xmlns="">String Value2</item>
+<item xmlns="">String Value3</item>
+</return>
+</m:echoStringArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStringRes.xml
new file mode 100644
index 0000000..4a0caa9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStringRes.xml
@@ -0,0 +1,7 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoStringResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:string">String Argument</return>
+</m:echoStringResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStructArrayRes.xml
new file mode 100644
index 0000000..15d59b0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStructArrayRes.xml
@@ -0,0 +1,23 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoStructArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" A:arrayType="ns1:SOAPStruct[3]" s:type="A:Array">
+<item xmlns="">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</item>
+<item xmlns="">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</item>
+<item xmlns="">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</item>
+</return>
+</m:echoStructArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStructRes.xml
new file mode 100644
index 0000000..4996f73
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseStructRes.xml
@@ -0,0 +1,11 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoStructResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" s:type="ns1:SOAPStruct">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</return>
+</m:echoStructResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseVoidRes.xml
new file mode 100644
index 0000000..3f94f5f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESBaseVoidRes.xml
@@ -0,0 +1,5 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoVoidResponse xmlns:m="http://soapinterop.org/" />
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..0256931
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupb2DStringArrayRes.xml
@@ -0,0 +1,12 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echo2DStringArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" A:arrayType="y:string[2,2]" s:type="A:Array">
+<item xmlns="">strss fdfing1</item>
+<item xmlns="">sdfsdf25</item>
+<item xmlns="">25dsasd dfasdas23</item>
+<item xmlns="">25dsasd dfasdas23</item>
+</return>
+</m:echo2DStringArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..eff2c40
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbNestedArrayRes.xml
@@ -0,0 +1,16 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoNestedArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" s:type="ns1:SOAPArrayStruct">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+<varArray xmlns="" A:arrayType="y:string[3]" s:type="A:Array">
+<item xmlns="">strss fdfing1</item>
+<item xmlns="">strss fdfing2</item>
+<item xmlns="">strss fdfing3</item>
+</varArray>
+</return>
+</m:echoNestedArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbNestedStructRes.xml
new file mode 100644
index 0000000..6eb91d4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbNestedStructRes.xml
@@ -0,0 +1,16 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoNestedStructResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" s:type="ns1:SOAPStructStruct">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+<varStruct xmlns="" s:type="ns1:SOAPStruct">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</varStruct>
+</return>
+</m:echoNestedStructResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..e64adda
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1,11 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoSimpleTypesAsStructResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" s:type="ns1:SOAPStruct">
+<varString xmlns="" s:type="y:string">45ascasc  acasa asd52</varString>
+<varInt xmlns="" s:type="y:int">4552</varInt>
+<varFloat xmlns="" s:type="y:float">450.519989</varFloat>
+</return>
+</m:echoSimpleTypesAsStructResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..2dbc43f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1,9 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoStructAsSimpleTypesResponse xmlns:m="http://soapinterop.org/">
+<outputString xmlns="" s:type="y:string">strss fdfing1</outputString>
+<outputInteger xmlns="" s:type="y:int">25</outputInteger>
+<outputFloat xmlns="" s:type="y:float">25.2299995</outputFloat>
+</m:echoStructAsSimpleTypesResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcBase64Res.xml
new file mode 100644
index 0000000..88bec18
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcBase64Res.xml
@@ -0,0 +1,15 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoBase64Response xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:base64Binary">SGVsbG8gV29ybGQ=</return>
+</m:echoBase64Response>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcBooleanRes.xml
new file mode 100644
index 0000000..980f3e8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcBooleanRes.xml
@@ -0,0 +1,15 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">852</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoBooleanResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:boolean">true</return>
+</m:echoBooleanResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcEchoStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcEchoStringRes.xml
new file mode 100644
index 0000000..c09cfa1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcEchoStringRes.xml
@@ -0,0 +1,15 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoStringResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:string">strssfdfing1</return>
+</m:echoStringResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcFloatArrayRes.xml
new file mode 100644
index 0000000..6ccd612
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcFloatArrayRes.xml
@@ -0,0 +1,19 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" A:arrayType="y:float[3]" s:type="A:Array">
+<item xmlns="">45.7687607</item>
+<item xmlns="">43.4539986</item>
+<item xmlns="">2523.54199</item>
+</return>
+</m:echoFloatArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcFloatRes.xml
new file mode 100644
index 0000000..1dd7c1a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcFloatRes.xml
@@ -0,0 +1,15 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoFloatResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:float">50.25</return>
+</m:echoFloatResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcHexBinaryRes.xml
new file mode 100644
index 0000000..06ff424
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcHexBinaryRes.xml
@@ -0,0 +1,15 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">852</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoHexBinaryResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:hexBinary">41394644363445313243</return>
+</m:echoHexBinaryResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcIntegerArrayRes.xml
new file mode 100644
index 0000000..c73fa25
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcIntegerArrayRes.xml
@@ -0,0 +1,19 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" A:arrayType="y:int[3]" s:type="A:Array">
+<item xmlns="">451</item>
+<item xmlns="">425</item>
+<item xmlns="">2523</item>
+</return>
+</m:echoIntegerArrayResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcIntergerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcIntergerRes.xml
new file mode 100644
index 0000000..ca911e5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcIntergerRes.xml
@@ -0,0 +1,15 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoIntegerResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" s:type="y:int">456</return>
+</m:echoIntegerResponse>
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStringArrayRes.xml
new file mode 100644
index 0000000..e2ea4b1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStringArrayRes.xml
@@ -0,0 +1,19 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoStringArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" A:arrayType="y:string[3]" s:type="A:Array">
+<item xmlns="">Apache Axis2</item>
+<item xmlns="">Lanka Software Foundation</item>
+<item xmlns="">www.opensource.lk</item>
+</return>
+</m:echoStringArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStructArrayRes.xml
new file mode 100644
index 0000000..b4c4b52
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStructArrayRes.xml
@@ -0,0 +1,31 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoStructArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns4="http://soapinterop.org/xsd" A:arrayType="ns4:SOAPStruct[3]" s:type="A:Array">
+<item xmlns="">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</item>
+<item xmlns="">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</item>
+<item xmlns="">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</item>
+</return>
+</m:echoStructArrayResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStructRes.xml
new file mode 100644
index 0000000..e337b10
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcStructRes.xml
@@ -0,0 +1,19 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Header>
+<ns1:echoMeStringResponse xmlns:ns1="http://soapinterop.org/echoheader/" s:type="y:string">string</ns1:echoMeStringResponse>
+<ns2:echoMeStructResponse xmlns:ns2="http://soapinterop.org/echoheader/" xmlns:ns3="http://soapinterop.org/xsd" s:type="ns3:SOAPStruct">
+<varString xmlns="" s:type="y:string">string</varString>
+<varInt xmlns="" s:type="y:int">150</varInt>
+<varFloat xmlns="" s:type="y:float">456.321014</varFloat>
+</ns2:echoMeStructResponse>
+</E:Header>
+<E:Body>
+<m:echoStructResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns4="http://soapinterop.org/xsd" s:type="ns4:SOAPStruct">
+<varString xmlns="" s:type="y:string">strss fdfing1</varString>
+<varInt xmlns="" s:type="y:int">25</varInt>
+<varFloat xmlns="" s:type="y:float">25.2299995</varFloat>
+</return>
+</m:echoStructResponse>
+</E:Body>
+</E:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcVoidRes.xml
new file mode 100644
index 0000000..24ac0e3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/ESGroupcVoidRes.xml
@@ -0,0 +1,5 @@
+<E:Envelope xmlns:E="http://schemas.xmlsoap.org/soap/envelope/" xmlns:y="http://www.w3.org/2001/XMLSchema" xmlns:A="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://www.w3.org/2001/XMLSchema-instance" E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<E:Body>
+<m:echoVoidResponse xmlns:m="http://soapinterop.org/" />
+</E:Body>
+</E:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseBase64Res.xml
new file mode 100644
index 0000000..a296825
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseBase64Res.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoBase64Response xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:base64Binary">SGVsbG8gV29ybGQ=</return></ns:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseBooleanRes.xml
new file mode 100644
index 0000000..35949e2
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseBooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoBooleanResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:boolean">true</return></ns:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseDateRes.xml
new file mode 100644
index 0000000..c9ea8ee
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseDateRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoDateResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:dateTime">2006-10-18T22:20:00-07:00</return></ns:echoDateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseDecimalRes.xml
new file mode 100644
index 0000000..7b783ef
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseDecimalRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoDecimalResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:decimal">455646152</return></ns:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseFloatArrayRes.xml
new file mode 100644
index 0000000..2d28026
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoFloatArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="xsd:float[3]" SOAP-ENC:offset="[0]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:float">45.7687607</item><item xmlns="" xsi:type="xsd:float">43.4539986</item><item xmlns="" xsi:type="xsd:float">2523.54199</item></return></ns:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseFloatRes.xml
new file mode 100644
index 0000000..1790a46
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseFloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoFloatResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:float">50.25</return></ns:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseHexBinaryRes.xml
new file mode 100644
index 0000000..0b672fd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoHexBinaryResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:hexBinary">AAABBAAE</return></ns:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..aca1bdd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoIntegerArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="xsd:int[3]" SOAP-ENC:offset="[0]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:int">451</item><item xmlns="" xsi:type="xsd:int">425</item><item xmlns="" xsi:type="xsd:int">2523</item></return></ns:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseIntegerRes.xml
new file mode 100644
index 0000000..a91b5b8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseIntegerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoIntegerResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:int">52</return></ns:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStringArrayRes.xml
new file mode 100644
index 0000000..156c778
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStringArrayRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoStringArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="xsd:string[3]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:string">String Value1</item><item xmlns="" xsi:type="xsd:string">String Value2</item><item xmlns="" xsi:type="xsd:string">String Value3</item></return></ns:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStringRes.xml
new file mode 100644
index 0000000..9c263ca
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoStringResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:string">String Argument</return></ns:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStructArrayRes.xml
new file mode 100644
index 0000000..9afa460
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoStructArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="s:SOAPStruct[3]" SOAP-ENC:offset="[0]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="s:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995</varFloat></item><item xmlns="" xsi:type="s:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995</varFloat></item><item xmlns="" xsi:type="s:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995</varFloat></item></return></ns:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStructRes.xml
new file mode 100644
index 0000000..4244ea3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseStructRes.xml
@@ -0,0 +1,12 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:a="http://xml.apache.org/xml-soap" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Header></SOAP-ENV:Header>
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoStructResponse>
+            <return xsi:type="s:SOAPStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.2299995</varFloat>
+            </return>
+         </ns:echoStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseVoidRes.xml
new file mode 100644
index 0000000..1de8d48
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSBaseVoidRes.xml
@@ -0,0 +1,6 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:a="http://xml.apache.org/xml-soap" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Header></SOAP-ENV:Header>
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoVoidResponse></ns:echoVoidResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..684f628
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echo2DStringArrayResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echo2DStringArrayResponse><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="xsd:string[3]" id="id1"><Item xmlns="">Apache Axis2</Item><Item xmlns="">Lanka Software Foundation</Item><Item xmlns="">www.opensource.lk</Item></soapenc:Array></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..e5b880e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbNestedArrayRes.xml
@@ -0,0 +1,16 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoNestedArrayResponse>
+            <return xsi:type="s:SOAPArrayStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.2299995</varFloat>
+               <varArray xsi:type="SOAP-ENC:Array" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="xsd:string[3]">
+                  <item xsi:type="xsd:string">strss fdfing1</item>
+                  <item xsi:type="xsd:string">strss fdfing2</item>
+                  <item xsi:type="xsd:string">strss fdfing3</item>
+               </varArray>
+            </return>
+         </ns:echoNestedArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbNestedStructRes.xml
new file mode 100644
index 0000000..be89610
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbNestedStructRes.xml
@@ -0,0 +1,16 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoNestedStructResponse>
+            <return xsi:type="s:SOAPStructStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.2299995</varFloat>
+               <varStruct xsi:type="s:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.2299995</varFloat>
+               </varStruct>
+            </return>
+         </ns:echoNestedStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..a7d38ad
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1,12 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Header></SOAP-ENV:Header>
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoSimpleTypesAsStructResponse>
+            <return xsi:type="s:SOAPStruct">
+               <varString xsi:type="xsd:string">45ascasc  acasa asd52</varString>
+               <varInt xsi:type="xsd:int">4552</varInt>
+               <varFloat xsi:type="xsd:float">450.519989</varFloat>
+            </return>
+         </ns:echoSimpleTypesAsStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..42543f2
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1,9 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoStructAsSimpleTypesResponse>
+            <outputString xsi:type="xsd:string">strss fdfing1</outputString>
+            <outputInteger xsi:type="xsd:int">25</outputInteger>
+            <outputFloat xsi:type="xsd:float">25.2299995</outputFloat>
+         </ns:echoStructAsSimpleTypesResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupcVoidRes.xml
new file mode 100644
index 0000000..46da25a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GSGroupcVoidRes.xml
@@ -0,0 +1,13 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:h="http://soapinterop.org/echoheader/" xmlns:m="http://soapinterop.org/">
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/">string</echoMeStringResponse>
+         <echoMeStructRequest xmlns="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321014</varFloat>
+         </echoMeStructRequest>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <m:echoVoidResponse></m:echoVoidResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcBase64Res.xml
new file mode 100644
index 0000000..c549dde
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcBase64Res.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoBase64Response xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:base64Binary">SGVsbG8gV29ybGQ=</return></ns0:echoBase64Response></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcBooleanRes.xml
new file mode 100644
index 0000000..a6f6c8b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcBooleanRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoBooleanResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:boolean">true</return></ns0:echoBooleanResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcEchoStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcEchoStringRes.xml
new file mode 100644
index 0000000..4460263
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcEchoStringRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStringResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:string">strssfdfing1</return></ns0:echoStringResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcFloatArrayRes.xml
new file mode 100644
index 0000000..04f763a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcFloatArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoFloatArrayResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" href="#ID1" /></ns0:echoFloatArrayResponse><ns1:ArrayOffloat xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:float[3]" xsi:type="enc:Array" id="ID1"><item xmlns="" xsi:type="xsd:float">45.76876</item><item xmlns="" xsi:type="xsd:float">43.454</item><item xmlns="" xsi:type="xsd:float">2523.542</item></ns1:ArrayOffloat></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcFloatRes.xml
new file mode 100644
index 0000000..55ca144
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcFloatRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoFloatResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:float">50.25</return></ns0:echoFloatResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcHexBinaryRes.xml
new file mode 100644
index 0000000..b825eab
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcHexBinaryRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoHexBinaryResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:hexBinary">41394644363445313243</return></ns0:echoHexBinaryResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcIntegerArrayRes.xml
new file mode 100644
index 0000000..ad6176d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcIntegerArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoIntegerArrayResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" href="#ID1" /></ns0:echoIntegerArrayResponse><ns1:ArrayOfint xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:int[3]" xsi:type="enc:Array" id="ID1"><item xmlns="" xsi:type="xsd:int">451</item><item xmlns="" xsi:type="xsd:int">425</item><item xmlns="" xsi:type="xsd:int">2523</item></ns1:ArrayOfint></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcIntergerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcIntergerRes.xml
new file mode 100644
index 0000000..1a95c80
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcIntergerRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoIntegerResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:int">456</return></ns0:echoIntegerResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStringArrayRes.xml
new file mode 100644
index 0000000..267e559
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStringArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStringArrayResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" href="#ID1" /></ns0:echoStringArrayResponse><ns1:ArrayOfstring xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:string[3]" xsi:type="enc:Array" id="ID1"><item xmlns="" xsi:type="xsd:string">Apache Axis2</item><item xmlns="" xsi:type="xsd:string">Lanka Software Foundation</item><item xmlns="" xsi:type="xsd:string">www.opensource.lk</item></ns1:ArrayOfstring></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStructArrayRes.xml
new file mode 100644
index 0000000..585bc9f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStructArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStructArrayResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" href="#ID1" /></ns0:echoStructArrayResponse><ns1:ArrayOfSOAPStruct xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="ns1:SOAPStruct[3]" xsi:type="enc:Array" id="ID1"><item xmlns="" href="#ID2" /><item xmlns="" href="#ID3" /><item xmlns="" href="#ID4" /></ns1:ArrayOfSOAPStruct><ns1:SOAPStruct xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID2"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct><ns1:SOAPStruct xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID3"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct><ns1:SOAPStruct xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID4"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStructRes.xml
new file mode 100644
index 0000000..a17a652
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcStructRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStructResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" href="#ID1" /></ns0:echoStructResponse><ns1:SOAPStruct xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID1"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcVoidRes.xml
new file mode 100644
index 0000000..b22fd88
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/GroupcVoidRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoVoidResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /></env:Body></env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseBase64Res.xml
new file mode 100644
index 0000000..4a09184
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseBase64Res.xml
@@ -0,0 +1,10 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoBase64 id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return xsi:type="xsd:base64Binary">SGVsbG8gV29ybGQ=</return>
+      </i5:echoBase64>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseBooleanRes.xml
new file mode 100644
index 0000000..090bd8f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseBooleanRes.xml
@@ -0,0 +1,10 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoBoolean id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return xsi:type="xsd:boolean">true</return>
+      </i5:echoBoolean>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseDateRes.xml
new file mode 100644
index 0000000..b5bec12
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseDateRes.xml
@@ -0,0 +1,10 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoDate id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return xsi:type="xsd:dateTime">2002-07-18T18:40:30.3870000-07:00</return>
+      </i5:echoDate>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseDecimalRes.xml
new file mode 100644
index 0000000..7f39e04
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseDecimalRes.xml
@@ -0,0 +1,10 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoDecimal id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return xsi:type="xsd:decimal">455646152</return>
+      </i5:echoDecimal>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseFloatArrayRes.xml
new file mode 100644
index 0000000..7e487f8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseFloatArrayRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoFloatArray id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return href="#ref-6"/>
+      </i5:echoFloatArray>
+      <SOAP-ENC:Array id="ref-6" SOAP-ENC:arrayType="xsd:float[3]">
+         <item>45.76876</item>
+         <item>43.454</item>
+         <item>2523.542</item>
+      </SOAP-ENC:Array>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseFloatRes.xml
new file mode 100644
index 0000000..6453ad4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseFloatRes.xml
@@ -0,0 +1,10 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoFloat id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return xsi:type="xsd:float">50.25</return>
+      </i5:echoFloat>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseHexBinaryRes.xml
new file mode 100644
index 0000000..35ad02e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<!--Test failed-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..8d8d73d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseIntegerArrayRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoIntegerArray id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return href="#ref-6"/>
+      </i5:echoIntegerArray>
+      <SOAP-ENC:Array id="ref-6" SOAP-ENC:arrayType="xsd:int[3]">
+         <item>451</item>
+         <item>425</item>
+         <item>2523</item>
+      </SOAP-ENC:Array>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseIntegerRes.xml
new file mode 100644
index 0000000..a4a33a4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseIntegerRes.xml
@@ -0,0 +1,10 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoInteger id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return xsi:type="xsd:int">52</return>
+      </i5:echoInteger>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStringArrayRes.xml
new file mode 100644
index 0000000..db540a4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStringArrayRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoStringArray id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return href="#ref-6"/>
+      </i5:echoStringArray>
+      <SOAP-ENC:Array id="ref-6" SOAP-ENC:arrayType="xsd:string[3]">
+         <item>Apache Axis2</item>
+         <item>Lanka Software Foundation</item>
+         <item>www.opensource.lk</item>
+      </SOAP-ENC:Array>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStringRes.xml
new file mode 100644
index 0000000..4f6f5a6
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStringRes.xml
@@ -0,0 +1,10 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoString id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return xsi:type="xsd:string">String Argument</return>
+      </i5:echoString>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStructArrayRes.xml
new file mode 100644
index 0000000..0cdc194
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStructArrayRes.xml
@@ -0,0 +1,30 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoStructArray id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return href="#ref-7"/>
+      </i5:echoStructArray>
+      <SOAP-ENC:Array id="ref-7" SOAP-ENC:arrayType="i6:SOAPStruct[3]" xmlns:i6="http://soapinterop.org/xsd">
+         <item href="#ref-8"/>
+         <item href="#ref-9"/>
+         <item href="#ref-10"/>
+      </SOAP-ENC:Array>
+      <i6:SOAPStruct id="ref-8" xmlns:i6="http://soapinterop.org/xsd">
+         <varString xsi:type="xsd:string">strss fdfing1</varString>
+         <varInt xsi:type="xsd:int">25</varInt>
+         <varFloat xsi:type="xsd:float">25.23</varFloat>
+      </i6:SOAPStruct>
+      <i6:SOAPStruct id="ref-9" xmlns:i6="http://soapinterop.org/xsd">
+         <varString xsi:type="xsd:string">strss fdfing1</varString>
+         <varInt xsi:type="xsd:int">25</varInt>
+         <varFloat xsi:type="xsd:float">25.23</varFloat>
+      </i6:SOAPStruct>
+      <i6:SOAPStruct id="ref-10" xmlns:i6="http://soapinterop.org/xsd">
+         <varString xsi:type="xsd:string">strss fdfing1</varString>
+         <varInt xsi:type="xsd:int">25</varInt>
+         <varFloat xsi:type="xsd:float">25.23</varFloat>
+      </i6:SOAPStruct>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStructRes.xml
new file mode 100644
index 0000000..8e41001
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseStructRes.xml
@@ -0,0 +1 @@
+<!--test failed-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseVoidRes.xml
new file mode 100644
index 0000000..9dd67b7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemBaseVoidRes.xml
@@ -0,0 +1,8 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoVoid id="ref-1" xmlns:i5="http://soapinterop.org/"></i5:echoVoid>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..26dcf88
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupb2DStringArrayRes.xml
@@ -0,0 +1,16 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echo2DStringArray id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return href="#ref-6"/>
+      </i5:echo2DStringArray>
+      <SOAP-ENC:Array id="ref-6" SOAP-ENC:arrayType="xsd:string[2,2]">
+         <item>strss fdfing1</item>
+         <item>sdfsdf25</item>
+         <item>25dsasd dfasdas23</item>
+         <item>25dsasd dfasdas23</item>
+      </SOAP-ENC:Array>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..7101ed3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbNestedArrayRes.xml
@@ -0,0 +1,21 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoNestedArray id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return href="#ref-7"/>
+      </i5:echoNestedArray>
+      <i6:SOAPArrayStruct id="ref-7" xmlns:i6="http://soapinterop.org/xsd">
+         <varString xsi:type="xsd:string">strss fdfing1</varString>
+         <varInt xsi:type="xsd:int">25</varInt>
+         <varFloat xsi:type="xsd:float">25.23</varFloat>
+         <varArray href="#ref-8"/>
+      </i6:SOAPArrayStruct>
+      <SOAP-ENC:Array id="ref-8" SOAP-ENC:arrayType="xsd:string[3]">
+         <item>strss fdfing1</item>
+         <item>strss fdfing2</item>
+         <item>strss fdfing3</item>
+      </SOAP-ENC:Array>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbNestedStructRes.xml
new file mode 100644
index 0000000..3336fdd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbNestedStructRes.xml
@@ -0,0 +1,21 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoNestedStruct id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return href="#ref-7"/>
+      </i5:echoNestedStruct>
+      <i6:SOAPStructStruct id="ref-7" xmlns:i6="http://soapinterop.org/xsd">
+         <varString xsi:type="xsd:string">strss fdfing1</varString>
+         <varInt xsi:type="xsd:int">25</varInt>
+         <varFloat xsi:type="xsd:float">25.23</varFloat>
+         <varStruct href="#ref-8"/>
+      </i6:SOAPStructStruct>
+      <i6:SOAPStruct id="ref-8" xmlns:i6="http://soapinterop.org/xsd">
+         <varString xsi:type="xsd:string">strss fdfing1</varString>
+         <varInt xsi:type="xsd:int">25</varInt>
+         <varFloat xsi:type="xsd:float">25.23</varFloat>
+      </i6:SOAPStruct>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..21b150b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoSimpleTypesAsStruct id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <return href="#ref-7"/>
+      </i5:echoSimpleTypesAsStruct>
+      <i6:SOAPStruct id="ref-7" xmlns:i6="http://soapinterop.org/xsd">
+         <varString xsi:type="xsd:string">45ascasc  acasa asd52</varString>
+         <varInt xsi:type="xsd:int">4552</varInt>
+         <varFloat xsi:type="xsd:float">450.52</varFloat>
+      </i6:SOAPStruct>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..1b5c784
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSRemGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1,12 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+   <SOAP-ENV:Header>
+      <h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
+      <a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging"></a1:LogicalCallContext>
+   </SOAP-ENV:Header>
+   <SOAP-ENV:Body>
+      <i5:echoStructAsSimpleTypes id="ref-1" xmlns:i5="http://soapinterop.org/">
+         <outputString xsi:type="xsd:string">strss fdfing1</outputString>
+         <outputInteger xsi:type="xsd:int">25</outputInteger>
+         <outputFloat xsi:type="xsd:float">25.23</outputFloat>
+      </i5:echoStructAsSimpleTypes>
+   </SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseBase64Res.xml
new file mode 100644
index 0000000..4c1b05a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseBase64Res.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoDecimalResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="">455646152</return></SOAPSDK4:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseBooleanRes.xml
new file mode 100644
index 0000000..a4bce57
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseBooleanRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoBooleanResponse xmlns:types="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:boolean">true</return></types:echoBooleanResponse></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseDateRes.xml
new file mode 100644
index 0000000..cd2d72c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseDateRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoDateResponse xmlns:types="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:dateTime">2006-10-18T22:20:00.0000000-07:00</return></types:echoDateResponse></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseDecimalRes.xml
new file mode 100644
index 0000000..27f9c53
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseDecimalRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoDecimalResponse xmlns:types="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:decimal">455646152</return></types:echoDecimalResponse></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseFloatArrayRes.xml
new file mode 100644
index 0000000..01e7154
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoFloatArrayResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echoFloatArrayResponse><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="xsd:float[3]" id="id1"><Item xmlns="">45.76876</Item><Item xmlns="">43.454</Item><Item xmlns="">2523.542</Item></soapenc:Array></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseFloatRes.xml
new file mode 100644
index 0000000..9cf4176
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseFloatRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoFloatResponse xmlns:types="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:float">50.25</return></types:echoFloatResponse></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseHexBinaryRes.xml
new file mode 100644
index 0000000..897c697
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoHexBinaryResponse xmlns:types="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:hexBinary">AAABBAAE</return></types:echoHexBinaryResponse></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..e4d9791
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoIntegerArrayResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echoIntegerArrayResponse><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="xsd:int[3]" id="id1"><Item xmlns="">451</Item><Item xmlns="">425</Item><Item xmlns="">2523</Item></soapenc:Array></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseIntegerRes.xml
new file mode 100644
index 0000000..a371812
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseIntegerRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoIntegerResponse xmlns:types="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:int">52</return></types:echoIntegerResponse></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStringArrayRes.xml
new file mode 100644
index 0000000..505e2b5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStringArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoStringArrayResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echoStringArrayResponse><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="xsd:string[3]" id="id1"><Item xmlns="">String Value1</Item><Item xmlns="">String Value2</Item><Item xmlns="">String Value3</Item></soapenc:Array></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStringRes.xml
new file mode 100644
index 0000000..5c6d73e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStringRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoStringResponse xmlns:types="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:string">String Argument</return></types:echoStringResponse></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStructArrayRes.xml
new file mode 100644
index 0000000..4fdef96
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStructArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoStructArrayResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echoStructArrayResponse><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:q1="http://soapinterop.org/xsd" soapenc:arrayType="q1:SOAPStruct[3]" id="id1"><Item xmlns="" href="#id2" /><Item xmlns="" href="#id3" /><Item xmlns="" href="#id4" /></soapenc:Array><q2:SOAPStruct xmlns:q2="http://soapinterop.org/xsd" xsi:type="q2:SOAPStruct" id="id2"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q2:SOAPStruct><q3:SOAPStruct xmlns:q3="http://soapinterop.org/xsd" xsi:type="q3:SOAPStruct" id="id3"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q3:SOAPStruct><q4:SOAPStruct xmlns:q4="http://soapinterop.org/xsd" xsi:type="q4:SOAPStruct" id="id4"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q4:SOAPStruct></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStructRes.xml
new file mode 100644
index 0000000..506f880
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseStructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoStructResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echoStructResponse><q1:SOAPStruct xmlns:q1="http://soapinterop.org/xsd" xsi:type="q1:SOAPStruct" id="id1"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q1:SOAPStruct></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseVoidRes.xml
new file mode 100644
index 0000000..233f78c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsBaseVoidRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoVoidResponse xmlns:types="http://soapinterop.org/" /></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..684f628
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echo2DStringArrayResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echo2DStringArrayResponse><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="xsd:string[3]" id="id1"><Item xmlns="">Apache Axis2</Item><Item xmlns="">Lanka Software Foundation</Item><Item xmlns="">www.opensource.lk</Item></soapenc:Array></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..3d54e89
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoNestedArrayResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echoNestedArrayResponse><q1:SOAPArrayStruct xmlns:q1="http://soapinterop.org/xsd" xsi:type="q1:SOAPArrayStruct" id="id1"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varArray xmlns="" href="#id2" /></q1:SOAPArrayStruct><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="xsd:string[3]" id="id2"><Item xmlns="">strss fdfing1</Item><Item xmlns="">strss fdfing2</Item><Item xmlns="">strss fdfing3</Item></soapenc:Array></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbNestedStructRes.xml
new file mode 100644
index 0000000..f57943b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoNestedStructResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echoNestedStructResponse><q1:SOAPStructStruct xmlns:q1="http://soapinterop.org/xsd" xsi:type="q1:SOAPStructStruct" id="id1"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varStruct xmlns="" href="#id2" /></q1:SOAPStructStruct><q2:SOAPStruct xmlns:q2="http://soapinterop.org/xsd" xsi:type="q2:SOAPStruct" id="id2"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q2:SOAPStruct></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..f3db1bf
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoSimpleTypesAsStructResponse xmlns:types="http://soapinterop.org/"><return xmlns="" href="#id1" /></types:echoSimpleTypesAsStructResponse><q1:SOAPStruct xmlns:q1="http://soapinterop.org/xsd" xsi:type="q1:SOAPStruct" id="id1"><varString xmlns="" xsi:type="xsd:string">45ascasc  acasa asd52</varString><varInt xmlns="" xsi:type="xsd:int">4552</varInt><varFloat xmlns="" xsi:type="xsd:float">450.52</varFloat></q1:SOAPStruct></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..746fe5a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><types:echoStructAsSimpleTypesResponse xmlns:types="http://soapinterop.org/"><outputString xmlns="" xsi:type="xsd:string">strss fdfing1</outputString><outputInteger xmlns="" xsi:type="xsd:int">25</outputInteger><outputFloat xmlns="" xsi:type="xsd:float">25.23</outputFloat></types:echoStructAsSimpleTypesResponse></soap:Body></soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupcVoidRes.xml
new file mode 100644
index 0000000..79f4281
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MSaxmsGroupcVoidRes.xml
@@ -0,0 +1,7 @@
+<!--test failed, response message doesn't have a soap header-->
+
+<!--<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">-->
+<!--      <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">-->
+<!--         <q1:echoVoidResponse xmlns:q1="http://soapinterop.org/" />-->
+<!--      </soap:Body>-->
+<!--   </soap:Envelope>-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupTypedbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupTypedbNestedArrayRes.xml
new file mode 100644
index 0000000..af0307d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupTypedbNestedArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echoNestedArrayResponse xmlns:SOAPSDK1="http://soapinterop.org/"><return xmlns="" xmlns:si="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="si:SOAPArrayStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995422363</varFloat><varArray xmlns="" xmlns:SOAPSDK2="http://schemas.xmlsoap.org/soap/encoding/" SOAPSDK2:arrayType="xsd:string[3]" xsi:type="SOAPSDK2:Array"><SOAPSDK2:string xmlns:SOAPSDK2="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing1</SOAPSDK2:string><SOAPSDK2:string xmlns:SOAPSDK2="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing2</SOAPSDK2:string><SOAPSDK2:string xmlns:SOAPSDK2="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing3</SOAPSDK2:string></varArray></return></SOAPSDK1:echoNestedArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2Groupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2Groupb2DStringArrayRes.xml
new file mode 100644
index 0000000..d857c00
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2Groupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echo2DStringArrayResponse xmlns:SOAPSDK1="http://soapinterop.org/"><return xmlns="" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK4="http://www.w3.org/2001/XMLSchema-instance" SOAPSDK3:arrayType="SOAPSDK2:string[2,2]" SOAPSDK4:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing1</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">sdfsdf25</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">25dsasd dfasdas23</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">25dsasd dfasdas23</SOAPSDK3:string></return></SOAPSDK1:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbNestedArrayRes.xml
new file mode 100644
index 0000000..af0307d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echoNestedArrayResponse xmlns:SOAPSDK1="http://soapinterop.org/"><return xmlns="" xmlns:si="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="si:SOAPArrayStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995422363</varFloat><varArray xmlns="" xmlns:SOAPSDK2="http://schemas.xmlsoap.org/soap/encoding/" SOAPSDK2:arrayType="xsd:string[3]" xsi:type="SOAPSDK2:Array"><SOAPSDK2:string xmlns:SOAPSDK2="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing1</SOAPSDK2:string><SOAPSDK2:string xmlns:SOAPSDK2="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing2</SOAPSDK2:string><SOAPSDK2:string xmlns:SOAPSDK2="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing3</SOAPSDK2:string></varArray></return></SOAPSDK1:echoNestedArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbNestedStructRes.xml
new file mode 100644
index 0000000..d740697
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echoNestedStructResponse xmlns:SOAPSDK1="http://soapinterop.org/"><return xmlns="" xmlns:si="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="si:SOAPStructStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995422363</varFloat><varStruct xmlns="" xsi:type="si:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995422363</varFloat></varStruct></return></SOAPSDK1:echoNestedStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..c36a9b9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echoSimpleTypesAsStructResponse xmlns:SOAPSDK1="http://soapinterop.org/"><return xmlns="" xmlns:si="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="si:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">45ascasc  acasa asd52</varString><varInt xmlns="" xsi:type="xsd:int">4552</varInt><varFloat xmlns="" xsi:type="xsd:float">450.519989013672</varFloat></return></SOAPSDK1:echoSimpleTypesAsStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..91af938
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echoStructAsSimpleTypesResponse xmlns:SOAPSDK1="http://soapinterop.org/"><outputString xmlns="">strss fdfing1</outputString><outputInteger xmlns="">25</outputInteger><outputFloat xmlns="">25.2299995422363</outputFloat></SOAPSDK1:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTyped2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTyped2DStringArrayRes.xml
new file mode 100644
index 0000000..d857c00
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTyped2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echo2DStringArrayResponse xmlns:SOAPSDK1="http://soapinterop.org/"><return xmlns="" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK4="http://www.w3.org/2001/XMLSchema-instance" SOAPSDK3:arrayType="SOAPSDK2:string[2,2]" SOAPSDK4:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing1</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">sdfsdf25</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">25dsasd dfasdas23</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">25dsasd dfasdas23</SOAPSDK3:string></return></SOAPSDK1:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedNestedStructRes.xml
new file mode 100644
index 0000000..d740697
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedNestedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echoNestedStructResponse xmlns:SOAPSDK1="http://soapinterop.org/"><return xmlns="" xmlns:si="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="si:SOAPStructStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995422363</varFloat><varStruct xmlns="" xsi:type="si:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995422363</varFloat></varStruct></return></SOAPSDK1:echoNestedStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..c36a9b9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echoSimpleTypesAsStructResponse xmlns:SOAPSDK1="http://soapinterop.org/"><return xmlns="" xmlns:si="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="si:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">45ascasc  acasa asd52</varString><varInt xmlns="" xsi:type="xsd:int">4552</varInt><varFloat xmlns="" xsi:type="xsd:float">450.519989013672</varFloat></return></SOAPSDK1:echoSimpleTypesAsStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..44b493b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupbTypedStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAPSDK1:echoStructAsSimpleTypesResponse xmlns:SOAPSDK1="http://soapinterop.org/"><outputString xmlns="" xmlns:SOAPSDK3="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" SOAPSDK2:type="SOAPSDK3:string">strss fdfing1</outputString><outputInteger xmlns="" xmlns:SOAPSDK4="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK5="http://www.w3.org/2001/XMLSchema" SOAPSDK4:type="SOAPSDK5:int">25</outputInteger><outputFloat xmlns="" xmlns:SOAPSDK7="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK6="http://www.w3.org/2001/XMLSchema-instance" SOAPSDK6:type="SOAPSDK7:float">25.2299995422363</outputFloat></SOAPSDK1:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupcVoidRes.xml
new file mode 100644
index 0000000..996b091
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk2GroupcVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Header /><SOAP-ENV:Body><SOAPSDK1:echoVoidResponse xmlns:SOAPSDK1="http://soapinterop.org/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseBase64Res.xml
new file mode 100644
index 0000000..6f48a84
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseBase64Res.xml
@@ -0,0 +1,2 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoBase64Response xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="">SGVsbG8gV29ybGQ=
+</Result></SOAPSDK4:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseBooleanRes.xml
new file mode 100644
index 0000000..e4d24d3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseBooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoBooleanResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="">true</return></SOAPSDK4:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseDateRes.xml
new file mode 100644
index 0000000..02f8501
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseDateRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoDateResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="">2006-10-19T05:20:00Z</Result></SOAPSDK4:echoDateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseDecimalRes.xml
new file mode 100644
index 0000000..4c1b05a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseDecimalRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoDecimalResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="">455646152</return></SOAPSDK4:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseFloatArrayRes.xml
new file mode 100644
index 0000000..96d1103
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoFloatArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:float[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:float xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">45.7687606811523</SOAPSDK3:float><SOAPSDK3:float xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">43.4539985656738</SOAPSDK3:float><SOAPSDK3:float xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">2523.5419921875</SOAPSDK3:float></Result></SOAPSDK4:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseFloatRes.xml
new file mode 100644
index 0000000..e740116
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseFloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoFloatResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="">50.25</Result></SOAPSDK4:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseHexBinaryRes.xml
new file mode 100644
index 0000000..25c0d55
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoHexBinaryResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="">AAABBAAE</Result></SOAPSDK4:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseIntegerArrayRes.xml
new file mode 100644
index 0000000..8488768
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoIntegerArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:int[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:int xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">451</SOAPSDK3:int><SOAPSDK3:int xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">425</SOAPSDK3:int><SOAPSDK3:int xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">2523</SOAPSDK3:int></Result></SOAPSDK4:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseIntegerRes.xml
new file mode 100644
index 0000000..9109168
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseIntegerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoIntegerResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="">52</Result></SOAPSDK4:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStringArrayRes.xml
new file mode 100644
index 0000000..0319b07
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:string[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">String Value1</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">String Value2</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">String Value3</SOAPSDK3:string></Result></SOAPSDK4:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStringRes.xml
new file mode 100644
index 0000000..0de182c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="">String Argument</Result></SOAPSDK4:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStructArrayRes.xml
new file mode 100644
index 0000000..605d4b7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK5:SOAPStruct[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id1" /><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id2" /><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id3" /></Result></SOAPSDK4:echoStructArrayResponse><SOAPSDK6:SOAPStruct xmlns:SOAPSDK6="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK6:SOAPStruct" id="id1"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK6:SOAPStruct><SOAPSDK7:SOAPStruct xmlns:SOAPSDK7="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK7:SOAPStruct" id="id2"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK7:SOAPStruct><SOAPSDK8:SOAPStruct xmlns:SOAPSDK8="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK8:SOAPStruct" id="id3"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK8:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStructRes.xml
new file mode 100644
index 0000000..810e718
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" href="#id1" /></SOAPSDK4:echoStructResponse><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStruct" id="id1"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK5:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedBase64Res.xml
new file mode 100644
index 0000000..779b7f9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedBase64Res.xml
@@ -0,0 +1,2 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoBase64Response xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK2:type="SOAPSDK1:base64Binary">SGVsbG8gV29ybGQ=
+</Result></SOAPSDK4:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedBooleanRes.xml
new file mode 100644
index 0000000..0b7309f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedBooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoBooleanResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" SOAPSDK2:type="SOAPSDK1:boolean">true</return></SOAPSDK4:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedDateRes.xml
new file mode 100644
index 0000000..968f535
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedDateRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoDateResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK2:type="SOAPSDK1:dateTime">2006-10-19T05:20:00Z</Result></SOAPSDK4:echoDateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedDecimalRes.xml
new file mode 100644
index 0000000..5e96cc5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedDecimalRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoDecimalResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" SOAPSDK2:type="SOAPSDK1:decimal">455646152</return></SOAPSDK4:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedFloatArrayRes.xml
new file mode 100644
index 0000000..96d1103
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedFloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoFloatArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:float[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:float xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">45.7687606811523</SOAPSDK3:float><SOAPSDK3:float xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">43.4539985656738</SOAPSDK3:float><SOAPSDK3:float xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">2523.5419921875</SOAPSDK3:float></Result></SOAPSDK4:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedFloatRes.xml
new file mode 100644
index 0000000..56f57b2
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedFloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoFloatResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK2:type="SOAPSDK1:float">50.25</Result></SOAPSDK4:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedHexBinaryRes.xml
new file mode 100644
index 0000000..25c0d55
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedHexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoHexBinaryResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="">AAABBAAE</Result></SOAPSDK4:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedIntegerArrayRes.xml
new file mode 100644
index 0000000..8488768
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedIntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoIntegerArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:int[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:int xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">451</SOAPSDK3:int><SOAPSDK3:int xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">425</SOAPSDK3:int><SOAPSDK3:int xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">2523</SOAPSDK3:int></Result></SOAPSDK4:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedIntegerRes.xml
new file mode 100644
index 0000000..fd7437d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedIntegerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoIntegerResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK2:type="SOAPSDK1:int">52</Result></SOAPSDK4:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStringArrayRes.xml
new file mode 100644
index 0000000..ed9dc1b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:string[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">Apache Axis2</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">Lanka Software Foundation</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">www.opensource.lk</SOAPSDK3:string></Result></SOAPSDK4:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStructArrayRes.xml
new file mode 100644
index 0000000..2e2b068
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK5:SOAPStruct[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id1" /><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id2" /><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id3" /></Result></SOAPSDK4:echoStructArrayResponse><SOAPSDK6:SOAPStruct xmlns:SOAPSDK6="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK6:SOAPStruct" id="id1"><varString xmlns="" SOAPSDK2:type="SOAPSDK1:string">strss fdfing1</varString><varInt xmlns="" SOAPSDK2:type="SOAPSDK1:int">25</varInt><varFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">25.2299995422363</varFloat></SOAPSDK6:SOAPStruct><SOAPSDK7:SOAPStruct xmlns:SOAPSDK7="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK7:SOAPStruct" id="id2"><varString xmlns="" SOAPSDK2:type="SOAPSDK1:string">strss fdfing1</varString><varInt xmlns="" SOAPSDK2:type="SOAPSDK1:int">25</varInt><varFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">25.2299995422363</varFloat></SOAPSDK7:SOAPStruct><SOAPSDK8:SOAPStruct xmlns:SOAPSDK8="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK8:SOAPStruct" id="id3"><varString xmlns="" SOAPSDK2:type="SOAPSDK1:string">strss fdfing1</varString><varInt xmlns="" SOAPSDK2:type="SOAPSDK1:int">25</varInt><varFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">25.2299995422363</varFloat></SOAPSDK8:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStructRes.xml
new file mode 100644
index 0000000..0c50ac0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" href="#id1" /></SOAPSDK4:echoStructResponse><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStruct" id="id1"><varString xmlns="" SOAPSDK2:type="SOAPSDK1:string">strss fdfing1</varString><varInt xmlns="" SOAPSDK2:type="SOAPSDK1:int">25</varInt><varFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">25.2299995422363</varFloat></SOAPSDK5:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedVoidRes.xml
new file mode 100644
index 0000000..d09881c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseTypedVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoVoidResponse xmlns:SOAPSDK4="http://soapinterop.org/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseVoidRes.xml
new file mode 100644
index 0000000..d09881c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3BaseVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoVoidResponse xmlns:SOAPSDK4="http://soapinterop.org/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3Groupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3Groupb2DStringArrayRes.xml
new file mode 100644
index 0000000..50d542e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3Groupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echo2DStringArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" SOAPSDK3:offset="[0,0]" SOAPSDK3:arrayType="SOAPSDK1:string[2,2]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing1</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">sdfsdf25</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">25dsasd dfasdas23</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">25dsasd dfasdas23</SOAPSDK3:string></return></SOAPSDK4:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbNestedArrayRes.xml
new file mode 100644
index 0000000..eabf7c8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoNestedArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" href="#id1" /></SOAPSDK4:echoNestedArrayResponse><SOAPSDK5:SOAPArrayStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPArrayStruct" id="id1"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat><varArray xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:string[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing1</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing2</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing3</SOAPSDK3:string></varArray></SOAPSDK5:SOAPArrayStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbNestedStructRes.xml
new file mode 100644
index 0000000..169a0b1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoNestedStructResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" href="#id1" /></SOAPSDK4:echoNestedStructResponse><SOAPSDK5:SOAPStructStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStructStruct" id="id1"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat><varStruct xmlns="" href="#id2" /></SOAPSDK5:SOAPStructStruct><SOAPSDK6:SOAPStruct xmlns:SOAPSDK6="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK6:SOAPStruct" id="id2"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK6:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..5213ea3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoSimpleTypesAsStructResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" href="#id1" /></SOAPSDK4:echoSimpleTypesAsStructResponse><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStruct" id="id1"><varString xmlns="">45ascasc  acasa asd52</varString><varInt xmlns="">4552</varInt><varFloat xmlns="">450.519989013672</varFloat></SOAPSDK5:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..ca0e777
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructAsSimpleTypesResponse xmlns:SOAPSDK4="http://soapinterop.org/"><outputString xmlns="">strss fdfing1</outputString><outputInteger xmlns="">25</outputInteger><outputFloat xmlns="">25.2299995422363</outputFloat></SOAPSDK4:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTyped2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTyped2DStringArrayRes.xml
new file mode 100644
index 0000000..50d542e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTyped2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echo2DStringArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" SOAPSDK3:offset="[0,0]" SOAPSDK3:arrayType="SOAPSDK1:string[2,2]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing1</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">sdfsdf25</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">25dsasd dfasdas23</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">25dsasd dfasdas23</SOAPSDK3:string></return></SOAPSDK4:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedNestedArrayRes.xml
new file mode 100644
index 0000000..2aee548
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedNestedArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoNestedArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" href="#id1" /></SOAPSDK4:echoNestedArrayResponse><SOAPSDK5:SOAPArrayStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPArrayStruct" id="id1"><varString xmlns="" SOAPSDK2:type="SOAPSDK1:string">strss fdfing1</varString><varInt xmlns="" SOAPSDK2:type="SOAPSDK1:int">25</varInt><varFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">25.2299995422363</varFloat><varArray xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:string[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing1</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing2</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">strss fdfing3</SOAPSDK3:string></varArray></SOAPSDK5:SOAPArrayStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedNestedStructRes.xml
new file mode 100644
index 0000000..01d2889
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedNestedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoNestedStructResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" href="#id1" /></SOAPSDK4:echoNestedStructResponse><SOAPSDK5:SOAPStructStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStructStruct" id="id1"><varString xmlns="" SOAPSDK2:type="SOAPSDK1:string">strss fdfing1</varString><varInt xmlns="" SOAPSDK2:type="SOAPSDK1:int">25</varInt><varFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">25.2299995422363</varFloat><varStruct xmlns="" href="#id2" /></SOAPSDK5:SOAPStructStruct><SOAPSDK6:SOAPStruct xmlns:SOAPSDK6="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK6:SOAPStruct" id="id2"><varString xmlns="" SOAPSDK2:type="SOAPSDK1:string">strss fdfing1</varString><varInt xmlns="" SOAPSDK2:type="SOAPSDK1:int">25</varInt><varFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">25.2299995422363</varFloat></SOAPSDK6:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..afc1dd2
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoSimpleTypesAsStructResponse xmlns:SOAPSDK4="http://soapinterop.org/"><return xmlns="" href="#id1" /></SOAPSDK4:echoSimpleTypesAsStructResponse><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStruct" id="id1"><varString xmlns="" SOAPSDK2:type="SOAPSDK1:string">45ascasc  acasa asd52</varString><varInt xmlns="" SOAPSDK2:type="SOAPSDK1:int">4552</varInt><varFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">450.519989013672</varFloat></SOAPSDK5:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..7d1015e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupbTypedStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructAsSimpleTypesResponse xmlns:SOAPSDK4="http://soapinterop.org/"><outputString xmlns="" SOAPSDK2:type="SOAPSDK1:string">strss fdfing1</outputString><outputInteger xmlns="" SOAPSDK2:type="SOAPSDK1:int">25</outputInteger><outputFloat xmlns="" SOAPSDK2:type="SOAPSDK1:float">25.2299995422363</outputFloat></SOAPSDK4:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupcVoidRes.xml
new file mode 100644
index 0000000..996b091
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3GroupcVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Header /><SOAP-ENV:Body><SOAPSDK1:echoVoidResponse xmlns:SOAPSDK1="http://soapinterop.org/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3TypedBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3TypedBaseStringRes.xml
new file mode 100644
index 0000000..be35556
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/MStk3TypedBaseStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringResponse xmlns:SOAPSDK4="http://soapinterop.org/"><Result xmlns="" SOAPSDK2:type="SOAPSDK1:string">String Argument</Result></SOAPSDK4:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseBase64Res.xml
new file mode 100644
index 0000000..ce974d8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseBase64Res.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoBase64Response>
+            <return xsi:type="xsd:base64Binary">UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</return>
+         </echoBase64Response>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseBooleanRes.xml
new file mode 100644
index 0000000..d4c23a9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseBooleanRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoBooleanResponse>
+            <return xsi:type="xsd:boolean">1</return>
+         </echoBooleanResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseDateRes.xml
new file mode 100644
index 0000000..9928265
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseDateRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoDateResponse>
+            <return xsi:type="xsd:dateTime">2002-07-18T19:40:30.387-06:00</return>
+         </echoDateResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseDecimalRes.xml
new file mode 100644
index 0000000..e22a54a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseDecimalRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoDecimalResponse>
+            <return xsi:type="xsd:decimal">455646152</return>
+         </echoDecimalResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseFloatArrayRes.xml
new file mode 100644
index 0000000..1ae4d05
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseFloatArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoFloatArrayResponse>
+            <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:float[3]">
+               <item xsi:type="xsd:float">45.76876</item>
+               <item xsi:type="xsd:float">43.454</item>
+               <item xsi:type="xsd:float">2523.542</item>
+            </return>
+         </echoFloatArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseFloatRes.xml
new file mode 100644
index 0000000..bc0f73f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseFloatRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoFloatResponse>
+            <return xsi:type="xsd:float">50.25</return>
+         </echoFloatResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseHexBinaryRes.xml
new file mode 100644
index 0000000..7db7c85
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseHexBinaryRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoHexBinaryResponse>
+            <return xsi:type="xsd:hexBinary">AAABBAAE</return>
+         </echoHexBinaryResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..705b0f0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseIntegerArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoIntegerArrayResponse>
+            <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:int[3]">
+               <item xsi:type="xsd:int">451</item>
+               <item xsi:type="xsd:int">425</item>
+               <item xsi:type="xsd:int">2523</item>
+            </return>
+         </echoIntegerArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseIntegerRes.xml
new file mode 100644
index 0000000..4f88920
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseIntegerRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoIntegerResponse>
+            <outputInteger xsi:type="xsd:int">52</outputInteger>
+         </echoIntegerResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStringArrayRes.xml
new file mode 100644
index 0000000..3e932fb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStringArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoStringArrayResponse>
+            <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[3]">
+               <item xsi:type="xsd:string">Apache Axis2</item>
+               <item xsi:type="xsd:string">Lanka Software Foundation</item>
+               <item xsi:type="xsd:string">www.opensource.lk</item>
+            </return>
+         </echoStringArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStringRes.xml
new file mode 100644
index 0000000..3509f50
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStringRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoStringResponse>
+            <return xsi:type="xsd:string">String Argument</return>
+         </echoStringResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStructArrayRes.xml
new file mode 100644
index 0000000..ff34ddb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStructArrayRes.xml
@@ -0,0 +1,23 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoStructArrayResponse>
+            <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType=":SOAPStruct[3]">
+               <item xsi:type=":SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </item>
+               <item xsi:type=":SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </item>
+               <item xsi:type=":SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </item>
+            </return>
+         </echoStructArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStructRes.xml
new file mode 100644
index 0000000..db48a4b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseStructRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd"  xmlns:tns="http://soapinterop.org/">
+      <SOAP-ENV:Body>
+         <echoStructResponse>
+            <return xsi:type="tns:SOAPStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.23</varFloat>
+            </return>
+         </echoStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseVoidRes.xml
new file mode 100644
index 0000000..7cda033
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusBaseVoidRes.xml
@@ -0,0 +1,5 @@
+<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"  xmlns:si="http://soapinterop.org/xsd">
+      <SOAP-ENV:Body>
+         <echoVoidResponse></echoVoidResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..8e41001
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<!--test failed-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..8e41001
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<!--test failed-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbNestedStructRes.xml
new file mode 100644
index 0000000..8e41001
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<!--test failed-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..8e41001
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<!--test failed-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..8e41001
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/NusGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<!--test failed-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseBase64Res.xml
new file mode 100644
index 0000000..9d7b408
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseBase64Res.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoBase64Response xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:base64Binary">SGVsbG8gV29ybGQ=</return>
+</ns1:echoBase64Response>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseBooleanRes.xml
new file mode 100644
index 0000000..c247375
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseBooleanRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoBooleanResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:boolean">1</return>
+</ns1:echoBooleanResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseDateRes.xml
new file mode 100644
index 0000000..56ba2b5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseDateRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoDateResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:dateTime">xsd:dateTime</return>
+</ns1:echoDateResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseDecimalRes.xml
new file mode 100644
index 0000000..8e5ce80
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseDecimalRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoDecimalResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:decimal">455646152</return>
+</ns1:echoDecimalResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseFloatArrayRes.xml
new file mode 100644
index 0000000..2d2b744
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseFloatArrayRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoFloatArrayResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://soapinterop.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENC:arrayType="xsd:float[3]" xsi:type="SOAP-ENC:Array">
+  <item xmlns="" xsi:type="xsd:float">4.576876e+01</item>
+  <item xmlns="" xsi:type="xsd:float">4.345400e+01</item>
+  <item xmlns="" xsi:type="xsd:float">2.523542e+03</item>
+</return>
+</ns1:echoFloatArrayResponse>
+</env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseFloatRes.xml
new file mode 100644
index 0000000..71a61b7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseFloatRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoFloatResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:float">5.025000e+01</return>
+</ns1:echoFloatResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseHexBinaryRes.xml
new file mode 100644
index 0000000..2f2490a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseHexBinaryRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoHexBinaryResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:hexBinary">AAABBAAE</return>
+</ns1:echoHexBinaryResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..070dea9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseIntegerArrayRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoIntegerArrayResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://soapinterop.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENC:arrayType="xsd:int[3]" xsi:type="SOAP-ENC:Array">
+  <item xmlns="" xsi:type="xsd:int">451</item>
+  <item xmlns="" xsi:type="xsd:int">425</item>
+  <item xmlns="" xsi:type="xsd:int">2523</item>
+</return>
+</ns1:echoIntegerArrayResponse>
+</env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseIntegerRes.xml
new file mode 100644
index 0000000..7bb68fc
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseIntegerRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoIntegerResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:int">52</return>
+</ns1:echoIntegerResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStringArrayRes.xml
new file mode 100644
index 0000000..aa4843b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStringArrayRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoStringArrayResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://soapinterop.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENC:arrayType="xsd:string[3]" xsi:type="SOAP-ENC:Array">
+  <item xmlns="" xsi:type="xsd:string">Apache Axis2</item>
+  <item xmlns="" xsi:type="xsd:string">Lanka Software Foundation</item>
+  <item xmlns="" xsi:type="xsd:string">www.opensource.lk</item>
+</return>
+</ns1:echoStringArrayResponse>
+</env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStringRes.xml
new file mode 100644
index 0000000..0e28c07
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStringRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoStringResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:string">String Argument</return>
+</ns1:echoStringResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStructArrayRes.xml
new file mode 100644
index 0000000..c039831
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStructArrayRes.xml
@@ -0,0 +1,23 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoStructArrayResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://soapinterop.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENC:arrayType="s:SOAPStruct[3]">
+  <item xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+    <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+    <varFloat xmlns="" xsi:type="xsd:float">2.523000e+01</varFloat>
+  </item>
+  <item xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+    <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+    <varFloat xmlns="" xsi:type="xsd:float">2.523000e+01</varFloat>
+  </item>
+  <item xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+    <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+    <varFloat xmlns="" xsi:type="xsd:float">2.523000e+01</varFloat>
+  </item>
+</return>
+</ns1:echoStructArrayResponse>
+</env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStructRes.xml
new file mode 100644
index 0000000..a160b6c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseStructRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoStructResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+  <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+  <varFloat xmlns="" xsi:type="xsd:float">2.523000e+01</varFloat>
+</return>
+</ns1:echoStructResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseVoidRes.xml
new file mode 100644
index 0000000..2bb78e3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWBaseVoidRes.xml
@@ -0,0 +1,6 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoVoidResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+</ns1:echoVoidResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..d6ab6a8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupb2DStringArrayRes.xml
@@ -0,0 +1,12 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echo2DStringArrayResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://soapinterop.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENC:arrayType="xsd:string[2,2]" xsi:type="SOAP-ENC:Array">
+  <item xmlns="" xsi:type="xsd:string">strss fdfing1</item>
+  <item xmlns="" xsi:type="xsd:string">sdfsdf25</item>
+  <item xmlns="" xsi:type="xsd:string">25dsasd dfasdas23</item>
+  <item xmlns="" xsi:type="xsd:string">25dsasd dfasdas23</item>
+</return>
+</ns1:echo2DStringArrayResponse>
+</env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..53d4a8f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbNestedArrayRes.xml
@@ -0,0 +1,16 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoNestedArrayResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+  <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+  <varFloat xmlns="" xsi:type="xsd:float">2.523000e+01</varFloat>
+  <varArray xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://soapinterop.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENC:arrayType="xsd:string[3]">
+    <item xmlns="" xsi:type="xsd:string">strss fdfing1</item>
+    <item xmlns="" xsi:type="xsd:string">strss fdfing2</item>
+    <item xmlns="" xsi:type="xsd:string">strss fdfing3</item>
+  </varArray>
+</return>
+</ns1:echoNestedArrayResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbNestedStructRes.xml
new file mode 100644
index 0000000..220b858
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbNestedStructRes.xml
@@ -0,0 +1,16 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoNestedStructResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+  <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+  <varFloat xmlns="" xsi:type="xsd:float">2.523000e+01</varFloat>
+  <varStruct xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+    <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+    <varFloat xmlns="" xsi:type="xsd:float">2.523000e+01</varFloat>
+  </varStruct>
+</return>
+</ns1:echoNestedStructResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..601ebc7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoSimpleTypesAsStructResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <varString xmlns="" xsi:type="xsd:string">45ascasc  acasa asd52</varString>
+  <varInt xmlns="" xsi:type="xsd:int">4552</varInt>
+  <varFloat xmlns="" xsi:type="xsd:float">4.505200e+02</varFloat>
+</return>
+</ns1:echoSimpleTypesAsStructResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..08df9fc
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1,9 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoStructAsSimpleTypesResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<outputString xmlns="" xsi:type="xsd:string">strss fdfing1</outputString>
+<outputInteger xmlns="" xsi:type="xsd:int">25</outputInteger>
+<outputFloat xmlns="" xsi:type="xsd:float">2.523000e+01</outputFloat>
+</ns1:echoStructAsSimpleTypesResponse>
+</env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupcEchoStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupcEchoStringRes.xml
new file mode 100644
index 0000000..5707aed
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/RWGroupcEchoStringRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<env:Body>
+<ns1:echoStringResponse xmlns:ns1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<return xmlns="" xsi:type="xsd:string">strssfdfing1</return>
+</ns1:echoStringResponse>
+</env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseBase64Res.xml
new file mode 100644
index 0000000..6320f3e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseBase64Res.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoBase64Response xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xsi:type="xsd:base64Binary">WebServi</return>
+    </n1:echoBase64Response>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseBooleanRes.xml
new file mode 100644
index 0000000..077337b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseBooleanRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoBooleanResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xsi:type="xsd:boolean">true</return>
+    </n1:echoBooleanResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseDateRes.xml
new file mode 100644
index 0000000..58213ee
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseDateRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoDateResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xsi:type="xsd:dateTime">2002-07-18T19:40:30.387-06:00</return>
+    </n1:echoDateResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseDecimalRes.xml
new file mode 100644
index 0000000..cbe2e47
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseDecimalRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoDecimalResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xsi:type="xsd:decimal">455646152</return>
+    </n1:echoDecimalResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseFloatArrayRes.xml
new file mode 100644
index 0000000..15597da
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseFloatArrayRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoFloatArrayResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/" n2:arrayType="xsd:float[3]" xsi:type="n2:Array">
+        <item xmlns="">+45.76876</item>
+        <item xmlns="">+43.454</item>
+        <item xmlns="">+2523.542</item>
+      </return>
+    </n1:echoFloatArrayResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseFloatRes.xml
new file mode 100644
index 0000000..2c690c5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseFloatRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoFloatResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xsi:type="xsd:float">+50.25</return>
+    </n1:echoFloatResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseHexBinaryRes.xml
new file mode 100644
index 0000000..5571f8d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseHexBinaryRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoHexBinaryResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xsi:type="xsd:hexBinary">AAABBAAE</return>
+    </n1:echoHexBinaryResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..42e5b95
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseIntegerArrayRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoIntegerArrayResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/" n2:arrayType="xsd:int[3]" xsi:type="n2:Array">
+        <item xmlns="">451</item>
+        <item xmlns="">425</item>
+        <item xmlns="">2523</item>
+      </return>
+    </n1:echoIntegerArrayResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseIntegerRes.xml
new file mode 100644
index 0000000..2df4507
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseIntegerRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoIntegerResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xsi:type="xsd:int">52</return>
+    </n1:echoIntegerResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStringArrayRes.xml
new file mode 100644
index 0000000..81bcb51
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStringArrayRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoStringArrayResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/" n2:arrayType="xsd:string[3]" xsi:type="n2:Array">
+        <item xmlns="">Apache Axis2</item>
+        <item xmlns="">Lanka Software Foundation</item>
+        <item xmlns="">www.opensource.lk</item>
+      </return>
+    </n1:echoStringArrayResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStringRes.xml
new file mode 100644
index 0000000..7e0ddca
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStringRes.xml
@@ -0,0 +1,7 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoStringResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xsi:type="xsd:string">String Argument</return>
+    </n1:echoStringResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStructArrayRes.xml
new file mode 100644
index 0000000..b8794db
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStructArrayRes.xml
@@ -0,0 +1,23 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoStructArrayResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n3="http://soapinterop.org/xsd" xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/" n2:arrayType="n3:SOAPStruct[3]" xsi:type="n2:Array">
+        <item xmlns="">
+          <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+          <varFloat xmlns="" xsi:type="xsd:float">+25.23</varFloat>
+          <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+        </item>
+        <item xmlns="">
+          <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+          <varFloat xmlns="" xsi:type="xsd:float">+25.23</varFloat>
+          <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+        </item>
+        <item xmlns="">
+          <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+          <varFloat xmlns="" xsi:type="xsd:float">+25.23</varFloat>
+          <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+        </item>
+      </return>
+    </n1:echoStructArrayResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStructRes.xml
new file mode 100644
index 0000000..271b568
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseStructRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoStructResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n2="http://soapinterop.org/xsd" xsi:type="n2:SOAPStruct">
+        <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+        <varFloat xmlns="" xsi:type="xsd:float">+25.23</varFloat>
+        <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+      </return>
+    </n1:echoStructResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseVoidRes.xml
new file mode 100644
index 0000000..28c2f4a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rBaseVoidRes.xml
@@ -0,0 +1,6 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoVoidResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+    </n1:echoVoidResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..a29c893
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupb2DStringArrayRes.xml
@@ -0,0 +1,12 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echo2DStringArrayResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/" n2:arrayType="xsd:string[2,2]" xsi:type="n2:Array">
+        <item xmlns="">strss fdfing1</item>
+        <item xmlns="">sdfsdf25</item>
+        <item xmlns="">25dsasd dfasdas23</item>
+        <item xmlns="">25dsasd dfasdas23</item>
+      </return>
+    </n1:echo2DStringArrayResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..2746414
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbNestedArrayRes.xml
@@ -0,0 +1,16 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoNestedArrayResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n2="http://soapinterop.org/xsd" xsi:type="n2:SOAPArrayStruct">
+        <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+        <varFloat xmlns="" xsi:type="xsd:float">+25.23</varFloat>
+        <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+        <varArray xmlns="" xmlns:n3="http://schemas.xmlsoap.org/soap/encoding/" n3:arrayType="xsd:string[3]" xsi:type="n3:Array">
+          <item xmlns="">strss fdfing1</item>
+          <item xmlns="">strss fdfing2</item>
+          <item xmlns="">strss fdfing3</item>
+        </varArray>
+      </return>
+    </n1:echoNestedArrayResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbNestedStructRes.xml
new file mode 100644
index 0000000..e86413f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbNestedStructRes.xml
@@ -0,0 +1,16 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoNestedStructResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n2="http://soapinterop.org/xsd" xsi:type="n2:SOAPStructStruct">
+        <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+        <varFloat xmlns="" xsi:type="xsd:float">+25.23</varFloat>
+        <varStruct xmlns="" xsi:type="xsd:anyType">
+          <varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+          <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+          <varFloat xmlns="" xsi:type="xsd:float">+25.23</varFloat>
+        </varStruct>
+        <varInt xmlns="" xsi:type="xsd:int">25</varInt>
+      </return>
+    </n1:echoNestedStructResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..79f9321
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <env:Body>
+    <n1:echoSimpleTypesAsStructResponse xmlns:n1="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+      <return xmlns="" xmlns:n2="http://soapinterop.org/xsd" xsi:type="n2:SOAPStruct">
+        <varString xmlns="" xsi:type="xsd:string">45ascasc  acasa asd52</varString>
+        <varFloat xmlns="" xsi:type="xsd:float">+450.52</varFloat>
+        <varInt xmlns="" xsi:type="xsd:int">4552</varInt>
+      </return>
+    </n1:echoSimpleTypesAsStructResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..7d26a7b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4rGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1,9 @@
+<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+      <env:Body>
+         <n1:echoStructAsSimpleTypesResponse xmlns:n1="http://soapinterop.org/"        env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <outputString xsi:type="xsd:string">strss fdfing1</outputString>
+            <outputInteger xsi:type="xsd:int">25</outputInteger>
+            <outputFloat xsi:type="xsd:float">25.23</outputFloat>
+         </n1:echoStructAsSimpleTypesResponse>
+      </env:Body>
+   </env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseBase64Res.xml
new file mode 100644
index 0000000..c98b889
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseBase64Res.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoBase64Response xmlns:m="http://soapinterop.org/"><outputBase64 xmlns="" xsi:type="SOAP-ENC:base64">WebServi</outputBase64></m:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseBooleanRes.xml
new file mode 100644
index 0000000..7e5df3c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseBooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoBooleanResponse xmlns:m="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:boolean">true</return></m:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseDateRes.xml
new file mode 100644
index 0000000..1f43c07
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseDateRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoDateResponse xmlns:m="http://soapinterop.org/"><outputDate xmlns="" xsi:type="xsd:dateTime">2002-07-19T01:40:30Z</outputDate></m:echoDateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseDecimalRes.xml
new file mode 100644
index 0000000..51e0fbf
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseDecimalRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoDecimalResponse xmlns:m="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:decimal">455646152</return></m:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseFloatArrayRes.xml
new file mode 100644
index 0000000..830378e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/"><outputFloatArray xmlns="" SOAP-ENC:arrayType="xsd:float[3]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:float">45.76876</item><item xmlns="" xsi:type="xsd:float">43.454</item><item xmlns="" xsi:type="xsd:float">2523.542</item></outputFloatArray></m:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseFloatRes.xml
new file mode 100644
index 0000000..b12b9ba
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseFloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoFloatResponse xmlns:m="http://soapinterop.org/"><outputFloat xmlns="" xsi:type="xsd:float">50.25</outputFloat></m:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseHexBinaryRes.xml
new file mode 100644
index 0000000..850b11e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoHexBinaryResponse xmlns:m="http://soapinterop.org/"><return xmlns="" xsi:type="SOAP-ENC:base64">AAABBAAE</return></m:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..3d844c1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/"><outputIntegerArray xmlns="" SOAP-ENC:arrayType="xsd:int[3]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:int">451</item><item xmlns="" xsi:type="xsd:int">425</item><item xmlns="" xsi:type="xsd:int">2523</item></outputIntegerArray></m:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseIntegerRes.xml
new file mode 100644
index 0000000..6d62936
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseIntegerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoIntegerResponse xmlns:m="http://soapinterop.org/"><outputInteger xmlns="" xsi:type="xsd:int">52</outputInteger></m:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStringArrayRes.xml
new file mode 100644
index 0000000..a0cb9c4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoStringArrayResponse xmlns:m="http://soapinterop.org/"><outputStringArray xmlns="" SOAP-ENC:arrayType="xsd:string[3]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:string">Apache Axis2</item><item xmlns="" xsi:type="xsd:string">Lanka Software Foundation</item><item xmlns="" xsi:type="xsd:string">www.opensource.lk</item></outputStringArray></m:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStringRes.xml
new file mode 100644
index 0000000..d8e65cf
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoStringResponse xmlns:m="http://soapinterop.org/"><outputString xmlns="" xsi:type="xsd:string">String Argument</outputString></m:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStructArrayRes.xml
new file mode 100644
index 0000000..3d4b5c8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoStructArrayResponse xmlns:m="http://soapinterop.org/"><outputStructArray xmlns="" xmlns:ns1="http://soapinterop.org/xsd" SOAP-ENC:arrayType="ns1:SOAPStruct[3]" xsi:type="SOAP-ENC:Array"><SOAPStruct xmlns="" xsi:type="ns1:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></SOAPStruct><SOAPStruct xmlns="" xsi:type="ns1:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></SOAPStruct><SOAPStruct xmlns="" xsi:type="ns1:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></SOAPStruct></outputStructArray></m:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStructRes.xml
new file mode 100644
index 0000000..e82c2dc
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoStructResponse xmlns:m="http://soapinterop.org/"><outputStruct xmlns="" xmlns:ns1="http://soapinterop.org/xsd" xsi:type="ns1:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></outputStruct></m:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseVoidRes.xml
new file mode 100644
index 0000000..a958021
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cBaseVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoVoidResponse xmlns:m="http://soapinterop.org/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..1ab5d4b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echo2DStringArrayResponse xmlns:m="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="xsd:string[4]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:string">strss fdfing1</item><item xmlns="" xsi:type="xsd:string">sdfsdf25</item><item xmlns="" xsi:type="xsd:string">25dsasd dfasdas23</item><item xmlns="" xsi:type="xsd:string">25dsasd dfasdas23</item></return></m:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..360434f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoNestedArrayResponse xmlns:m="http://soapinterop.org/"><return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" xsi:type="ns1:SOAPArrayStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varArray xmlns="" SOAP-ENC:arrayType="xsd:string[3]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:string">strss fdfing1</item><item xmlns="" xsi:type="xsd:string">strss fdfing2</item><item xmlns="" xsi:type="xsd:string">strss fdfing3</item></varArray></return></m:echoNestedArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbNestedStructRes.xml
new file mode 100644
index 0000000..e0839f6
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoNestedStructResponse xmlns:m="http://soapinterop.org/"><return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" xsi:type="ns1:SOAPStructStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varStruct xmlns="" xsi:type="ns1:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></varStruct></return></m:echoNestedStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..53b75cd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoSimpleTypesAsStructResponse xmlns:m="http://soapinterop.org/"><return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" xsi:type="ns1:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">45ascasc  acasa asd52</varString><varInt xmlns="" xsi:type="xsd:int">4552</varInt><varFloat xmlns="" xsi:type="xsd:float">450.52</varFloat></return></m:echoSimpleTypesAsStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..9e69f8b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/S4s4cGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:echoStructAsSimpleTypesResponse xmlns:m="http://soapinterop.org/"><outputString xmlns="" xsi:type="xsd:string">strss fdfing1</outputString><outputInteger xmlns="" xsi:type="xsd:int">25</outputInteger><outputFloat xmlns="" xsi:type="xsd:float">25.23</outputFloat></m:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_2DStringArrayRes.xml
new file mode 100644
index 0000000..c7a1f2b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_2DStringArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echo2DStringArrayResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" soapenc:id="id1" soapenc:arraySize="4" soapenc:itemType="xsd:string"><Item xmlns="">strss fdfing1</Item><Item xmlns="">sdfsdf25</Item><Item xmlns="">25dsasd dfasdas23</Item><Item xmlns="">25dsasd dfasdas23</Item></return></types:echo2DStringArrayResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_NestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_NestedArrayRes.xml
new file mode 100644
index 0000000..06d1ade
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_NestedArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoNestedArrayResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xmlns:q1="http://soapinterop.org/xsd" soapenc:id="id1" xsi:type="q1:SOAPArrayStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varArray xmlns="" soapenc:id="id2" soapenc:arraySize="3" soapenc:itemType="xsd:string"><Item xmlns="">strss fdfing1</Item><Item xmlns="">strss fdfing2</Item><Item xmlns="">strss fdfing3</Item></varArray></return></types:echoNestedArrayResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_NestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_NestedStructRes.xml
new file mode 100644
index 0000000..e7d067d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_NestedStructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoNestedStructResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xmlns:q1="http://soapinterop.org/xsd" soapenc:id="id1" xsi:type="q1:SOAPStructStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varStruct xmlns="" soapenc:id="id2" xsi:type="q1:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></varStruct></return></types:echoNestedStructResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_SimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_SimpletypesAsStructRes.xml
new file mode 100644
index 0000000..15d71c4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_SimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoSimpleTypesAsStructResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xmlns:q1="http://soapinterop.org/xsd" soapenc:id="id1" xsi:type="q1:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">45ascasc  acasa asd52</varString><varInt xmlns="" xsi:type="xsd:int">4552</varInt><varFloat xmlns="" xsi:type="xsd:float">450.52</varFloat></return></types:echoSimpleTypesAsStructResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_StructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_StructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..fad315f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2Gb_S12_StructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoStructAsSimpleTypesResponse xmlns:types="http://soapinterop.org/"><outputString xmlns="" xsi:type="xsd:string">strss fdfing1</outputString><outputInteger xmlns="" xsi:type="xsd:int">25</outputInteger><outputFloat xmlns="" xsi:type="xsd:float">25.23</outputFloat></types:echoStructAsSimpleTypesResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_Base64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_Base64Res.xml
new file mode 100644
index 0000000..22fec74
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_Base64Res.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoBase64Response xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xsi:type="xsd:base64Binary">UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</return></types:echoBase64Response></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_BooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_BooleanRes.xml
new file mode 100644
index 0000000..e77086f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_BooleanRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoBooleanResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xsi:type="xsd:boolean">true</return></types:echoBooleanResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_DateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_DateRes.xml
new file mode 100644
index 0000000..8337717
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_DateRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoDateResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xsi:type="xsd:dateTime">2002-07-18T18:40:30.3870000-07:00</return></types:echoDateResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_DecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_DecimalRes.xml
new file mode 100644
index 0000000..d050372
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_DecimalRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoDecimalResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xsi:type="xsd:decimal">455646152</return></types:echoDecimalResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_FloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_FloatArrayRes.xml
new file mode 100644
index 0000000..56ef9cf
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_FloatArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoFloatArrayResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" soapenc:id="id1" soapenc:arraySize="3" soapenc:itemType="xsd:float"><Item xmlns="">45.76876</Item><Item xmlns="">43.454</Item><Item xmlns="">2523.542</Item></return></types:echoFloatArrayResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_FloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_FloatRes.xml
new file mode 100644
index 0000000..f45687e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_FloatRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoFloatResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xsi:type="xsd:float">50.25</return></types:echoFloatResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_HexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_HexBinaryRes.xml
new file mode 100644
index 0000000..578fbac
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_HexBinaryRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoHexBinaryResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xsi:type="xsd:hexBinary">AAABBAAE</return></types:echoHexBinaryResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_IntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_IntegerArrayRes.xml
new file mode 100644
index 0000000..99d2e64
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_IntegerArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoIntegerArrayResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" soapenc:id="id1" soapenc:arraySize="3" soapenc:itemType="xsd:int"><Item xmlns="">451</Item><Item xmlns="">425</Item><Item xmlns="">2523</Item></return></types:echoIntegerArrayResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_IntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_IntegerRes.xml
new file mode 100644
index 0000000..68bbd4c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_IntegerRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoIntegerResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xsi:type="xsd:int">52</return></types:echoIntegerResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StringArrayRes.xml
new file mode 100644
index 0000000..5713672
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StringArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoStringArrayResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" soapenc:id="id1" soapenc:arraySize="3" soapenc:itemType="xsd:string"><Item xmlns="">Apache Axis2</Item><Item xmlns="">Lanka Software Foundation</Item><Item xmlns="">www.opensource.lk</Item></return></types:echoStringArrayResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StringRes.xml
new file mode 100644
index 0000000..1fe572b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StringRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoStringResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xsi:type="xsd:string">String Argument</return></types:echoStringResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StructArrayRes.xml
new file mode 100644
index 0000000..cc84df8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StructArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoStructArrayResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xmlns:q1="http://soapinterop.org/xsd" soapenc:id="id1" soapenc:arraySize="3" soapenc:itemType="q1:SOAPStruct"><Item xmlns="" soapenc:id="id2"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></Item><Item xmlns="" soapenc:id="id3"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></Item><Item xmlns="" soapenc:id="id4"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></Item></return></types:echoStructArrayResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StructRes.xml
new file mode 100644
index 0000000..6f84593
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_StructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoStructResponse xmlns:types="http://soapinterop.org/"><rpc:result xmlns:rpc="http://www.w3.org/2003/05/soap-rpc">return</rpc:result><return xmlns="" xmlns:q1="http://soapinterop.org/xsd" soapenc:id="id1" xsi:type="q1:SOAPStruct"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></return></types:echoStructResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_VoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_VoidRes.xml
new file mode 100644
index 0000000..0b66ebe
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/ASPNetR2_S12_VoidRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://soapinterop.org/" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:types="http://soapinterop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><types:echoVoidResponse xmlns:types="http://soapinterop.org/" /></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_2DStringArrayRes.xml
new file mode 100644
index 0000000..d4c949f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://soapinterop.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echo2DStringArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="xsd:string[2,2]" SOAP-ENC:offset="[0,0]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:string">strss fdfing1</item><item xmlns="" xsi:type="xsd:string">sdfsdf25</item><item xmlns="" xsi:type="xsd:string">25dsasd dfasdas23</item><item xmlns="" xsi:type="xsd:string">25dsasd dfasdas23</item></return></ns:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_NestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_NestedArrayRes.xml
new file mode 100644
index 0000000..7a867c7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_NestedArrayRes.xml
@@ -0,0 +1,16 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoNestedArrayResponse>
+            <return xsi:type="s:SOAPArrayStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.2299995</varFloat>
+               <varArray xsi:type="SOAP-ENC:Array" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="xsd:string[3]">
+                  <item xsi:type="xsd:string">strss fdfing1</item>
+                  <item xsi:type="xsd:string">strss fdfing2</item>
+                  <item xsi:type="xsd:string">strss fdfing3</item>
+               </varArray>
+            </return>
+         </ns:echoNestedArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_NestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_NestedStructRes.xml
new file mode 100644
index 0000000..f654a4b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_NestedStructRes.xml
@@ -0,0 +1,16 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoNestedStructResponse>
+            <return xsi:type="s:SOAPStructStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.2299995</varFloat>
+               <varStruct xsi:type="s:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.2299995</varFloat>
+               </varStruct>
+            </return>
+         </ns:echoNestedStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_SimpleTypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_SimpleTypesAsStructRes.xml
new file mode 100644
index 0000000..ee5c366
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_SimpleTypesAsStructRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoSimpleTypesAsStructResponse>
+            <return xsi:type="s:SOAPStruct">
+               <varString xsi:type="xsd:string">45ascasc  acasa asd52</varString>
+               <varInt xsi:type="xsd:int">4552</varInt>
+               <varFloat xsi:type="xsd:float">450.519989</varFloat>
+            </return>
+         </ns:echoSimpleTypesAsStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_StructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_StructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..03317f8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2Gb_S12_StructAsSimpleTypesRes.xml
@@ -0,0 +1,9 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoStructAsSimpleTypesResponse>
+            <outputString xsi:type="xsd:string">strss fdfing1</outputString>
+            <outputInteger xsi:type="xsd:int">25</outputInteger>
+            <outputFloat xsi:type="xsd:float">25.2299995</outputFloat>
+         </ns:echoStructAsSimpleTypesResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_Base64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_Base64Res.xml
new file mode 100644
index 0000000..33dc499
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_Base64Res.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoBase64Response xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:base64Binary">UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</return></ns:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_BooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_BooleanRes.xml
new file mode 100644
index 0000000..ccfef93
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_BooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoBooleanResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:boolean">true</return></ns:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_DateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_DateRes.xml
new file mode 100644
index 0000000..24b4ff6
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_DateRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoDateResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:dateTime">2002-07-18T19:40:30.387-06:00</return></ns:echoDateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_DecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_DecimalRes.xml
new file mode 100644
index 0000000..563bc47
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_DecimalRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoDecimalResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:decimal">455646152</return></ns:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_FloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_FloatArrayRes.xml
new file mode 100644
index 0000000..61f6f7a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_FloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoFloatArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="xsd:float[3]" SOAP-ENC:offset="[0]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:float">45.7687607</item><item xmlns="" xsi:type="xsd:float">43.4539986</item><item xmlns="" xsi:type="xsd:float">2523.54199</item></return></ns:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_FloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_FloatRes.xml
new file mode 100644
index 0000000..02078fe
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_FloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoFloatResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:float">50.25</return></ns:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_HexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_HexBinaryRes.xml
new file mode 100644
index 0000000..c6bbb96
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_HexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoHexBinaryResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:hexBinary">AAABBAAE</return></ns:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_IntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_IntegerArrayRes.xml
new file mode 100644
index 0000000..99b5443
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_IntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoIntegerArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="xsd:int[3]" SOAP-ENC:offset="[0]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:int">451</item><item xmlns="" xsi:type="xsd:int">425</item><item xmlns="" xsi:type="xsd:int">2523</item></return></ns:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_IntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_IntegerRes.xml
new file mode 100644
index 0000000..ad21f1f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_IntegerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoIntegerResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:int">52</return></ns:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StringArrayRes.xml
new file mode 100644
index 0000000..2497cf4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoStringArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="xsd:string[3]" SOAP-ENC:offset="[0]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="xsd:string">Apache Axis2</item><item xmlns="" xsi:type="xsd:string">Lanka Software Foundation</item><item xmlns="" xsi:type="xsd:string">www.opensource.lk</item></return></ns:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StringRes.xml
new file mode 100644
index 0000000..0ad5353
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoStringResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" xsi:type="xsd:string">String Argument</return></ns:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StructArrayRes.xml
new file mode 100644
index 0000000..488441f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Header /><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0"><ns:echoStructArrayResponse xmlns:ns="http://soapinterop.org/"><return xmlns="" SOAP-ENC:arrayType="s:SOAPStruct[3]" SOAP-ENC:offset="[0]" xsi:type="SOAP-ENC:Array"><item xmlns="" xsi:type="s:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995</varFloat></item><item xmlns="" xsi:type="s:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995</varFloat></item><item xmlns="" xsi:type="s:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.2299995</varFloat></item></return></ns:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StructRes.xml
new file mode 100644
index 0000000..9c283a5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_StructRes.xml
@@ -0,0 +1,12 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:a="http://xml.apache.org/xml-soap" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Header></SOAP-ENV:Header>
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoStructResponse>
+            <return xsi:type="s:SOAPStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.2299995</varFloat>
+            </return>
+         </ns:echoStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_VoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_VoidRes.xml
new file mode 100644
index 0000000..45f77bd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapR2_S12_VoidRes.xml
@@ -0,0 +1,5 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:a="http://xml.apache.org/xml-soap" xmlns:ns="http://soapinterop.org/">
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <ns:echoVoidResponse></ns:echoVoidResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapRound2Soap12GroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapRound2Soap12GroupcVoidRes.xml
new file mode 100644
index 0000000..331f1e5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/GSoapRound2Soap12GroupcVoidRes.xml
@@ -0,0 +1,13 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd" xmlns:h="http://soapinterop.org/echoheader/" xmlns:m="http://soapinterop.org/">
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/">string</echoMeStringResponse>
+         <echoMeStructRequest xmlns="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321014</varFloat>
+         </echoMeStructRequest>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" id="_0">
+         <m:echoVoidResponse></m:echoVoidResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_2DStringArrayRes.xml
new file mode 100644
index 0000000..a0c4fca
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echo2DStringArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:itemType="nsa:string" SOAP-ENC:arraySize="4"><item xmlns="">strss fdfing1</item><item xmlns="">sdfsdf25</item><item xmlns="">25dsasd dfasdas23</item><item xmlns="">25dsasd dfasdas23</item></return></m:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_NestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_NestedArrayRes.xml
new file mode 100644
index 0000000..ace0e38
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_NestedArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoNestedArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat><varArray xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:itemType="nsa:string" SOAP-ENC:arraySize="3"><item xmlns="">strss fdfing1</item><item xmlns="">strss fdfing2</item><item xmlns="">strss fdfing3</item></varArray></return></m:echoNestedArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_NestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_NestedStructRes.xml
new file mode 100644
index 0000000..1450467
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_NestedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoNestedStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat><varStruct xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></varStruct></return></m:echoNestedStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_SimpleTypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_SimpleTypesAsStructRes.xml
new file mode 100644
index 0000000..fc3e771
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_SimpleTypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoSimpleTypesAsStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns=""><varString xmlns="">45ascasc  acasa asd52</varString><varInt xmlns="">4552</varInt><varFloat xmlns="">450.52</varFloat></return></m:echoSimpleTypesAsStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_StructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_StructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..d28d4fa
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2Gb_S12_StructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoStructAsSimpleTypesResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><outputString xmlns="">strss fdfing1</outputString><outputInteger xmlns="">25</outputInteger><outputFloat xmlns="">25.23</outputFloat></m:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_Base64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_Base64Res.xml
new file mode 100644
index 0000000..82ff991
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_Base64Res.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoBase64Response xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</return></m:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_BooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_BooleanRes.xml
new file mode 100644
index 0000000..fa73fbe
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_BooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoBooleanResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">1</return></m:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_DateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_DateRes.xml
new file mode 100644
index 0000000..60f701c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_DateRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoDateResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">2002-07-19T01:40:30Z</return></m:echoDateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_DecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_DecimalRes.xml
new file mode 100644
index 0000000..ae3d731
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_DecimalRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoDecimalResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">455646152</return></m:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_FloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_FloatArrayRes.xml
new file mode 100644
index 0000000..4547be6
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_FloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:itemType="nsa:float" SOAP-ENC:arraySize="3"><item xmlns="">45.76876</item><item xmlns="">43.454</item><item xmlns="">2523.542</item></return></m:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_FloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_FloatRes.xml
new file mode 100644
index 0000000..eecc697
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_FloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoFloatResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">50.25</return></m:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_HexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_HexBinaryRes.xml
new file mode 100644
index 0000000..a8b8ad4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_HexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoHexBinaryResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">AAABBAAE</return></m:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_IntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_IntegerArrayRes.xml
new file mode 100644
index 0000000..655dd68
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_IntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:itemType="nsa:int" SOAP-ENC:arraySize="3"><item xmlns="">451</item><item xmlns="">425</item><item xmlns="">2523</item></return></m:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_IntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_IntegerRes.xml
new file mode 100644
index 0000000..4c61185
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_IntegerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoIntegerResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">52</return></m:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StringArrayRes.xml
new file mode 100644
index 0000000..37d7676
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoStringArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:itemType="nsa:string" SOAP-ENC:arraySize="3"><item xmlns="">Apache Axis2</item><item xmlns="">Lanka Software Foundation</item><item xmlns="">www.opensource.lk</item></return></m:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StringRes.xml
new file mode 100644
index 0000000..fcc3db9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoStringResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">String Argument</return></m:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StructArrayRes.xml
new file mode 100644
index 0000000..a86cd4e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoStructArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://soapinterop.org/xsd" SOAP-ENC:itemType="nsa:SOAPStruct" SOAP-ENC:arraySize="3"><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item></return></m:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StructRes.xml
new file mode 100644
index 0000000..15850d7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_StructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></return></m:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_VoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_VoidRes.xml
new file mode 100644
index 0000000..ac8d1c4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMR2_S12_VoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Body><m:echoVoidResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcBase64Res.xml
new file mode 100644
index 0000000..06fd6c5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcBase64Res.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoBase64Response xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">SGVsbG8gV29ybGQ=</return></m:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcBooleanRes.xml
new file mode 100644
index 0000000..af48fe9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcBooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">852</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoBooleanResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">1</return></m:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcEchoStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcEchoStringRes.xml
new file mode 100644
index 0000000..60e6eec
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcEchoStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoStringResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">Apache Software Foundation</return></m:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcFloatArrayRes.xml
new file mode 100644
index 0000000..5bb6a48
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcFloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:itemType="nsa:float" SOAP-ENC:arraySize="3"><item xmlns="">45.76876</item><item xmlns="">43.454</item><item xmlns="">2523.542</item></return></m:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcFloatRes.xml
new file mode 100644
index 0000000..2af6f89
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcFloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoFloatResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">50.25</return></m:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcHexBinaryRes.xml
new file mode 100644
index 0000000..768f102
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcHexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">852</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoHexBinaryResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">41394644363445313243</return></m:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcIntegerArrayRes.xml
new file mode 100644
index 0000000..ba421de
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcIntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:itemType="nsa:int" SOAP-ENC:arraySize="3"><item xmlns="">451</item><item xmlns="">425</item><item xmlns="">2523</item></return></m:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcIntergerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcIntergerRes.xml
new file mode 100644
index 0000000..37d9b59
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcIntergerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoIntegerResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="">456</return></m:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStringArrayRes.xml
new file mode 100644
index 0000000..17d27ce
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoStringArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:itemType="nsa:string" SOAP-ENC:arraySize="3"><item xmlns="">Apache Axis2</item><item xmlns="">Lanka Software Foundation</item><item xmlns="">www.opensource.lk</item></return></m:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStructArrayRes.xml
new file mode 100644
index 0000000..1dc86e7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoStructArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns="" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:nsa="http://soapinterop.org/xsd" SOAP-ENC:itemType="nsa:SOAPStruct" SOAP-ENC:arraySize="3"><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item></return></m:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStructRes.xml
new file mode 100644
index 0000000..d529113
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">return</SOAP-RPC:result><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></return></m:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcVoidRes.xml
new file mode 100644
index 0000000..1cf9d79
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SOAP12/WMRound2Soap12GroupcVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoVoidResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseBase64Res.xml
new file mode 100644
index 0000000..4a2bac9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseBase64Res.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoBase64Response xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="SOAP-ENC:base64Binary">SGVsbG8gV29ybGQ=</tns:result></tns:echoBase64Response></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseBooleanRes.xml
new file mode 100644
index 0000000..85b5d53
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseBooleanRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoBooleanResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="xsd:boolean">true</tns:result></tns:echoBooleanResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseDateRes.xml
new file mode 100644
index 0000000..841ae07
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseDateRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoDateResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="xsd:dateTime">2002-07-19T01:40:30Z</tns:result></tns:echoDateResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseDecimalRes.xml
new file mode 100644
index 0000000..e16940f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseDecimalRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoDecimalResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="xsd:decimal">455646152</tns:result></tns:echoDecimalResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseFloatArrayRes.xml
new file mode 100644
index 0000000..e8b095b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoFloatArrayResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result SOAP-ENC:arrayType="xsd:float[3]" xsi:type="SOAP-ENC:Array"><tns:item xsi:type="xsd:float">45.76876</tns:item><tns:item xsi:type="xsd:float">43.454</tns:item><tns:item xsi:type="xsd:float">2523.542</tns:item></tns:result></tns:echoFloatArrayResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseFloatRes.xml
new file mode 100644
index 0000000..39d0cc1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseFloatRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoFloatResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="xsd:float">50.25</tns:result></tns:echoFloatResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseHexBinaryRes.xml
new file mode 100644
index 0000000..5c62569
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoHexBinaryResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="xsd:hexBinary">FFFFFFAAFFFFFFABFFFFFFBAFFFFFFAE</tns:result></tns:echoHexBinaryResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..7042c9f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoIntegerArrayResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result SOAP-ENC:arrayType="xsd:int[3]" xsi:type="SOAP-ENC:Array"><tns:item xsi:type="xsd:int">451</tns:item><tns:item xsi:type="xsd:int">425</tns:item><tns:item xsi:type="xsd:int">2523</tns:item></tns:result></tns:echoIntegerArrayResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseIntegerRes.xml
new file mode 100644
index 0000000..a4d608c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseIntegerRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soapenv:Body><tns:echoIntegerResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="xsd:int">52</tns:result></tns:echoIntegerResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStringArrayRes.xml
new file mode 100644
index 0000000..2acf3c7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStringArrayRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soapenv:Body><tns:echoStringArrayResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result SOAP-ENC:arrayType="xsd:string[3]" xsi:type="SOAP-ENC:Array"><tns:item xsi:type="xsd:string">Apache Axis2</tns:item><tns:item xsi:type="xsd:string">Lanka Software Foundation</tns:item><tns:item xsi:type="xsd:string">www.opensource.lk</tns:item></tns:result></tns:echoStringArrayResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStringRes.xml
new file mode 100644
index 0000000..3529766
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStringRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soapenv:Body><tns:echoStringResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="xsd:string">String Argument</tns:result></tns:echoStringResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStructArrayRes.xml
new file mode 100644
index 0000000..dc0294b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStructArrayRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoStructArrayResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result SOAP-ENC:arrayType="s:SOAPStruct[3]" xsi:type="SOAP-ENC:Array"><tns:item xsi:type="s:SOAPStruct"><tns:varString xsi:type="xsd:string">strss fdfing1</tns:varString><tns:varInt xsi:type="xsd:int">25</tns:varInt><tns:varFloat xsi:type="xsd:float">25.23</tns:varFloat></tns:item><tns:item xsi:type="s:SOAPStruct"><tns:varString xsi:type="xsd:string">strss fdfing1</tns:varString><tns:varInt xsi:type="xsd:int">25</tns:varInt><tns:varFloat xsi:type="xsd:float">25.23</tns:varFloat></tns:item><tns:item xsi:type="s:SOAPStruct"><tns:varString xsi:type="xsd:string">strss fdfing1</tns:varString><tns:varInt xsi:type="xsd:int">25</tns:varInt><tns:varFloat xsi:type="xsd:float">25.23</tns:varFloat></tns:item></tns:result></tns:echoStructArrayResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStructRes.xml
new file mode 100644
index 0000000..4b26d2e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseStructRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoStructResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="s:SOAPStruct"><tns:varString xsi:type="xsd:string">strss fdfing1</tns:varString><tns:varInt xsi:type="xsd:int">25</tns:varInt><tns:varFloat xsi:type="xsd:float">25.23</tns:varFloat></tns:result></tns:echoStructResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseVoidRes.xml
new file mode 100644
index 0000000..e28f906
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJBaseVoidRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoVoidResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..a8fbfcc
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echo2DStringArrayResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result SOAP-ENC:arrayType="xsd:string[2,2]" xsi:type="SOAP-ENC:Array"><tns:item xsi:type="xsd:string">strss fdfing1</tns:item><tns:item xsi:type="xsd:string">sdfsdf25</tns:item><tns:item xsi:type="xsd:string">25dsasd dfasdas23</tns:item><tns:item xsi:type="xsd:string">25dsasd dfasdas23</tns:item></tns:result></tns:echo2DStringArrayResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..98cc03d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoNestedArrayResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="s:SOAPArrayStruct"><tns:varString xsi:type="xsd:string">strss fdfing1</tns:varString><tns:varInt xsi:type="xsd:int">25</tns:varInt><tns:varFloat xsi:type="xsd:float">25.23</tns:varFloat><tns:varArray SOAP-ENC:arrayType="xsd:string[3]" xsi:type="SOAP-ENC:Array"><tns:item xsi:type="xsd:string">strss fdfing1</tns:item><tns:item xsi:type="xsd:string">strss fdfing2</tns:item><tns:item xsi:type="xsd:string">strss fdfing3</tns:item></tns:varArray></tns:result></tns:echoNestedArrayResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbNestedStructRes.xml
new file mode 100644
index 0000000..465b4a5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoNestedStructResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="s:SOAPStructStruct"><tns:varString xsi:type="xsd:string">strss fdfing1</tns:varString><tns:varInt xsi:type="xsd:int">25</tns:varInt><tns:varFloat xsi:type="xsd:float">25.23</tns:varFloat><tns:varStruct xsi:type="s:SOAPStruct"><tns:varString xsi:type="xsd:string">strss fdfing1</tns:varString><tns:varInt xsi:type="xsd:int">25</tns:varInt><tns:varFloat xsi:type="xsd:float">25.23</tns:varFloat></tns:varStruct></tns:result></tns:echoNestedStructResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..e4a91b9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoSimpleTypesAsStructResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:result xsi:type="s:SOAPStruct"><tns:varString xsi:type="xsd:string">45ascasc  acasa asd52</tns:varString><tns:varInt xsi:type="xsd:int">4552</tns:varInt><tns:varFloat xsi:type="xsd:float">450.52</tns:varFloat></tns:result></tns:echoSimpleTypesAsStructResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..649f4f7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SpJGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><tns:echoStructAsSimpleTypesResponse xmlns:tns="http://soapinterop.org/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:outputString xsi:type="xsd:string">strss fdfing1</tns:outputString><tns:outputInt xsi:type="xsd:int">25</tns:outputInt><tns:outputFloat xsi:type="xsd:float">25.23</tns:outputFloat></tns:echoStructAsSimpleTypesResponse></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseBase64Res.xml
new file mode 100644
index 0000000..de7f525
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseBase64Res.xml
@@ -0,0 +1,2 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoBase64Response xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:base64Binary">SGVsbG8gV29ybGQ=
+</return></mns:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseBooleanRes.xml
new file mode 100644
index 0000000..fc664c5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseBooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoBooleanResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:boolean">true</return></mns:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseDateRes.xml
new file mode 100644
index 0000000..4c38c5e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseDateRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoDateResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:dateTime">2002-07-18T19:40:30.387-06:00</return></mns:echoDateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseDecimalRes.xml
new file mode 100644
index 0000000..2a30f24
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseDecimalRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoDecimalResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:decimal">455646152</return></mns:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseFloatArrayRes.xml
new file mode 100644
index 0000000..c201bc5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoFloatArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" SOAP-ENC:arrayType="xsd:float[3]" xsi:type="SOAP-ENC:Array"><Item0 xmlns="" xsi:type="xsd:float">45.76876</Item0><Item1 xmlns="" xsi:type="xsd:float">43.454</Item1><Item2 xmlns="" xsi:type="xsd:float">2523.542</Item2></return></mns:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseFloatRes.xml
new file mode 100644
index 0000000..68b2764
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseFloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoFloatResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:float">50.25</return></mns:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseHexBinaryRes.xml
new file mode 100644
index 0000000..bdc7456
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoHexBinaryResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:hexBinary">AAABBAAE</return></mns:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..fd93ceb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoIntegerArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" SOAP-ENC:arrayType="xsd:int[3]" xsi:type="SOAP-ENC:Array"><Item0 xmlns="" xsi:type="xsd:int">451</Item0><Item1 xmlns="" xsi:type="xsd:int">425</Item1><Item2 xmlns="" xsi:type="xsd:int">2523</Item2></return></mns:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseIntegerRes.xml
new file mode 100644
index 0000000..2b5e55f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseIntegerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoIntegerResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:int">52</return></mns:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStringArrayRes.xml
new file mode 100644
index 0000000..a9faa52
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoStringArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" SOAP-ENC:arrayType="xsd:string[3]" xsi:type="SOAP-ENC:Array"><Item0 xmlns="" xsi:type="xsd:string">Apache Axis2</Item0><Item1 xmlns="" xsi:type="xsd:string">Lanka Software Foundation</Item1><Item2 xmlns="" xsi:type="xsd:string">www.opensource.lk</Item2></return></mns:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStringRes.xml
new file mode 100644
index 0000000..a0ac4c6
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoStringResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:string">String Argument</return></mns:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStructArrayRes.xml
new file mode 100644
index 0000000..e78310f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoStructArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" SOAP-ENC:arrayType="typens:SOAPStruct[3]" xsi:type="SOAP-ENC:Array"><Item0 xmlns="" xsi:type="typens:SOAPStruct"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString></Item0><Item1 xmlns="" xsi:type="typens:SOAPStruct"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString></Item1><Item2 xmlns="" xsi:type="typens:SOAPStruct"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString></Item2></return></mns:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStructRes.xml
new file mode 100644
index 0000000..8156263
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoStructResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="typens:SOAPStruct"><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString></return></mns:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseVoidRes.xml
new file mode 100644
index 0000000..7a8475a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataBaseVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typens="http://soapinterop.org/xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://soapinterop.org/"><SOAP-ENV:Body><mns:echoVoidResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..bdb4608
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Body><mns:echo2DStringArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" SOAP-ENC:arrayType="xsd:string[2,2]" xsi:type="SOAP-ENC:Array"><Item0 xmlns="" xsi:type="xsd:string">strss fdfing1</Item0><Item1 xmlns="" xsi:type="xsd:string">sdfsdf25</Item1><Item2 xmlns="" xsi:type="xsd:string">25dsasd dfasdas23</Item2><Item3 xmlns="" xsi:type="xsd:string">25dsasd dfasdas23</Item3></return></mns:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..52bff96
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Body><mns:echoNestedArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="s:SOAPArrayStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varArray xmlns="" SOAP-ENC:arrayType="xsd:string[3]" xsi:type="SOAP-ENC:Array"><Item0 xmlns="" xsi:type="xsd:string">strss fdfing1</Item0><Item1 xmlns="" xsi:type="xsd:string">strss fdfing2</Item1><Item2 xmlns="" xsi:type="xsd:string">strss fdfing3</Item2></varArray></return></mns:echoNestedArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbNestedStructRes.xml
new file mode 100644
index 0000000..33a0b1a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Body><mns:echoNestedStructResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="s:SOAPStructStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varStruct xmlns="" xsi:type="s:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></varStruct></return></mns:echoNestedStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..826afe1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Body><mns:echoSimpleTypesAsStructResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="s:SOAPStruct"><varString xmlns="" xsi:type="xsd:string">45ascasc  acasa asd52</varString><varInt xmlns="" xsi:type="xsd:int">4552</varInt><varFloat xmlns="" xsi:type="xsd:float">450.52</varFloat></return></mns:echoSimpleTypesAsStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..66d69c4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://soapinterop.org/xsd"><SOAP-ENV:Body><mns:echoStructAsSimpleTypesResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><outputString xmlns="" xsi:type="xsd:string">strss fdfing1</outputString><outputInteger xmlns="" xsi:type="xsd:int">25</outputInteger><outputFloat xmlns="" xsi:type="xsd:float">25.23</outputFloat></mns:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcBase64Res.xml
new file mode 100644
index 0000000..552e281
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcBase64Res.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoBase64Response xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="xsd:base64Binary">SGVsbG8gV29ybGQ=</return>
+         </mns:echoBase64Response>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcBooleanRes.xml
new file mode 100644
index 0000000..6ea28e5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcBooleanRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">852</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoBooleanResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="xsd:boolean">1</return>
+         </mns:echoBooleanResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcEchoStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcEchoStringRes.xml
new file mode 100644
index 0000000..b4949b7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcEchoStringRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoStringResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="xsd:string">strssfdfing1</return>
+         </mns:echoStringResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcFloatArrayRes.xml
new file mode 100644
index 0000000..f6a3610
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcFloatArrayRes.xml
@@ -0,0 +1,19 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoFloatArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:float[3]">
+               <Item0 xsi:type="xsd:float">45.76876</Item0>
+               <Item1 xsi:type="xsd:float">43.454</Item1>
+               <Item2 xsi:type="xsd:float">2523.542</Item2>
+            </return>
+         </mns:echoFloatArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcFloatRes.xml
new file mode 100644
index 0000000..5698cec
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcFloatRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoFloatResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="xsd:float">50.25</return>
+         </mns:echoFloatResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcHexBinaryRes.xml
new file mode 100644
index 0000000..8a46a33
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcHexBinaryRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">852</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoHexBinaryResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="xsd:hexBinary">41394644363445313243</return>
+         </mns:echoHexBinaryResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcIntegerArrayRes.xml
new file mode 100644
index 0000000..248a86b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcIntegerArrayRes.xml
@@ -0,0 +1,19 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoIntegerArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:int[3]">
+               <Item0 xsi:type="xsd:int">451</Item0>
+               <Item1 xsi:type="xsd:int">425</Item1>
+               <Item2 xsi:type="xsd:int">2523</Item2>
+            </return>
+         </mns:echoIntegerArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcIntergerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcIntergerRes.xml
new file mode 100644
index 0000000..e57a1c3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcIntergerRes.xml
@@ -0,0 +1,15 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoIntegerResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="xsd:int">456</return>
+         </mns:echoIntegerResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStringArrayRes.xml
new file mode 100644
index 0000000..1314c25
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStringArrayRes.xml
@@ -0,0 +1,19 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoStringArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[3]">
+               <Item0 xsi:type="xsd:string">Apache Axis2</Item0>
+               <Item1 xsi:type="xsd:string">Lanka Software Foundation</Item1>
+               <Item2 xsi:type="xsd:string">www.opensource.lk</Item2>
+            </return>
+         </mns:echoStringArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStructArrayRes.xml
new file mode 100644
index 0000000..d3674ed
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStructArrayRes.xml
@@ -0,0 +1,31 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoStructArrayResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="s:SOAPStruct[3]">
+               <Item0 xsi:type="s:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </Item0>
+               <Item1 xsi:type="s:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </Item1>
+               <Item2 xsi:type="s:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </Item2>
+            </return>
+         </mns:echoStructArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStructRes.xml
new file mode 100644
index 0000000..7f87098
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcStructRes.xml
@@ -0,0 +1,19 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoStructResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+            <return xsi:type="s:SOAPStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.23</varFloat>
+            </return>
+         </mns:echoStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcVoidRes.xml
new file mode 100644
index 0000000..2d9690b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/SqlDataGroupcVoidRes.xml
@@ -0,0 +1,13 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+      <SOAP-ENV:Header>
+         <echoMeStringResponse xmlns="http://soapinterop.org/echoheader/" xsi:type="xsd:string">string</echoMeStringResponse>
+         <mns1:echoMeStructResponse xmlns:mns1="http://soapinterop.org/echoheader/" xsi:type="s:SOAPStruct">
+            <varString xsi:type="xsd:string">string</varString>
+            <varInt xsi:type="xsd:int">150</varInt>
+            <varFloat xsi:type="xsd:float">456.321</varFloat>
+         </mns1:echoMeStructResponse>
+      </SOAP-ENV:Header>
+      <SOAP-ENV:Body>
+         <mns:echoVoidResponse xmlns:mns="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"></mns:echoVoidResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseBase64Res.xml
new file mode 100644
index 0000000..fbd23dd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseBase64Res.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoBase64Response xmlns:ns1="http://soapinterop.org/">
+            <return xsi:type="xsd:base64Binary">UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</return>
+         </ns1:echoBase64Response>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseBooleanRes.xml
new file mode 100644
index 0000000..200110f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseBooleanRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoBooleanResponse xmlns:ns1="http://soapinterop.org/">
+            <return xsi:type="xsd:boolean">true</return>
+         </ns1:echoBooleanResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseDateRes.xml
new file mode 100644
index 0000000..00afb89
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseDateRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoDateResponse xmlns:ns1="http://soapinterop.org/">
+            <return xsi:type="xsd:dateTime">2002-07-19T01:40:30Z</return>
+         </ns1:echoDateResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseDecimalRes.xml
new file mode 100644
index 0000000..b6db3f0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseDecimalRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoDecimalResponse xmlns:ns1="http://soapinterop.org/">
+            <return xsi:type="xsd:decimal">455646152</return>
+         </ns1:echoDecimalResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseFloatArrayRes.xml
new file mode 100644
index 0000000..b448b98
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseFloatArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoFloatArrayResponse xmlns:ns1="http://soapinterop.org/">
+            <return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"  xsi:type="ns2:Array" ns2:arrayType="xsd:float[3]">
+               <item xsi:type="xsd:float">45.76876</item>
+               <item xsi:type="xsd:float">43.454</item>
+               <item xsi:type="xsd:float">2523.542</item>
+            </return>
+         </ns1:echoFloatArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseFloatRes.xml
new file mode 100644
index 0000000..e716ec7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseFloatRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoFloatResponse xmlns:ns1="http://soapinterop.org/">
+            <return xsi:type="xsd:float">50.25</return>
+         </ns1:echoFloatResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseHexBinaryRes.xml
new file mode 100644
index 0000000..e19f1cb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseHexBinaryRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoHexBinaryResponse xmlns:ns1="http://soapinterop.org/">
+            <return xsi:type="xsd:hexBinary">AAABBAAE</return>
+         </ns1:echoHexBinaryResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..39cfc31
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseIntegerArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoIntegerArrayResponse xmlns:ns1="http://soapinterop.org/">
+            <return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"  xsi:type="ns2:Array" ns2:arrayType="xsd:int[3]">
+               <item xsi:type="xsd:int">451</item>
+               <item xsi:type="xsd:int">425</item>
+               <item xsi:type="xsd:int">2523</item>
+            </return>
+         </ns1:echoIntegerArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseIntegerRes.xml
new file mode 100644
index 0000000..59d1c88
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseIntegerRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoIntegerResponse xmlns:ns1="http://soapinterop.org/">
+            <return xsi:type="xsd:int">52</return>
+         </ns1:echoIntegerResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStringArrayRes.xml
new file mode 100644
index 0000000..275edb2
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStringArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoStringArrayResponse xmlns:ns1="http://soapinterop.org/">
+            <return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"  xsi:type="ns2:Array" ns2:arrayType="xsd:string[3]">
+               <item xsi:type="xsd:string">Apache Axis2</item>
+               <item xsi:type="xsd:string">Lanka Software Foundation</item>
+               <item xsi:type="xsd:string">www.opensource.lk</item>
+            </return>
+         </ns1:echoStringArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStringRes.xml
new file mode 100644
index 0000000..a66f5f0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStringRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoStringResponse xmlns:ns1="http://soapinterop.org/">
+            <return xsi:type="xsd:string">String Argument</return>
+         </ns1:echoStringResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStructArrayRes.xml
new file mode 100644
index 0000000..9c4a8b3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStructArrayRes.xml
@@ -0,0 +1,23 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoStructArrayResponse xmlns:ns1="http://soapinterop.org/">
+            <return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"  xsi:type="ns2:Array" xmlns:ns3="http://soapinterop.org/xsd"  ns2:arrayType="ns3:SOAPStruct[3]">
+               <item xsi:type="ns3:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </item>
+               <item xsi:type="ns3:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </item>
+               <item xsi:type="ns3:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </item>
+            </return>
+         </ns1:echoStructArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStructRes.xml
new file mode 100644
index 0000000..30d3482
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseStructRes.xml
@@ -0,0 +1,11 @@
+ <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoStructResponse xmlns:ns1="http://soapinterop.org/">
+            <return xmlns:ns2="http://soapinterop.org/xsd"  xsi:type="ns2:SOAPStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.23</varFloat>
+            </return>
+         </ns1:echoStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseVoidRes.xml
new file mode 100644
index 0000000..441f88d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFBaseVoidRes.xml
@@ -0,0 +1,5 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoVoidResponse xmlns:ns1="http://soapinterop.org/"></ns1:echoVoidResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..50c8eb0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<!--test failed!!!-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..6ca9507
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbNestedArrayRes.xml
@@ -0,0 +1,16 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoNestedArrayResponse xmlns:ns1="http://soapinterop.org/">
+            <return xmlns:ns2="http://soapinterop.org/xsd"  xsi:type="ns2:SOAPArrayStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.23</varFloat>
+               <varArray xmlns:ns3="http://schemas.xmlsoap.org/soap/encoding/"  xsi:type="ns3:Array" ns3:arrayType="xsd:string[3]">
+                  <item xsi:type="xsd:string">strss fdfing1</item>
+                  <item xsi:type="xsd:string">strss fdfing2</item>
+                  <item xsi:type="xsd:string">strss fdfing3</item>
+               </varArray>
+            </return>
+         </ns1:echoNestedArrayResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbNestedStructRes.xml
new file mode 100644
index 0000000..e6bffc7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbNestedStructRes.xml
@@ -0,0 +1,16 @@
+<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <SOAP-ENV:Body>
+         <ns1:echoNestedStructResponse xmlns:ns1="http://soapinterop.org/">
+            <return xmlns:ns2="http://soapinterop.org/xsd"  xsi:type="ns2:SOAPStructStruct">
+               <varString xsi:type="xsd:string">strss fdfing1</varString>
+               <varInt xsi:type="xsd:int">25</varInt>
+               <varFloat xsi:type="xsd:float">25.23</varFloat>
+               <varStruct xsi:type="ns2:SOAPStruct">
+                  <varString xsi:type="xsd:string">strss fdfing1</varString>
+                  <varInt xsi:type="xsd:int">25</varInt>
+                  <varFloat xsi:type="xsd:float">25.23</varFloat>
+               </varStruct>
+            </return>
+         </ns1:echoNestedStructResponse>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..d93d814
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoSimpleTypesAsStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns=""><varString xmlns="">45ascasc  acasa asd52</varString><varInt xmlns="">4552</varInt><varFloat xmlns="">450.52</varFloat></return></m:echoSimpleTypesAsStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..64609c9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WFGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStructAsSimpleTypesResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><outputString xmlns="">strss fdfing1</outputString><outputInteger xmlns="">25</outputInteger><outputFloat xmlns="">25.23</outputFloat></m:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseBase64Res.xml
new file mode 100644
index 0000000..1e8f9db
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseBase64Res.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoBase64Response xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">SGVsbG8gV29ybGQ=</return></m:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseBooleanRes.xml
new file mode 100644
index 0000000..6450350
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseBooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoBooleanResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">1</return></m:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseDateRes.xml
new file mode 100644
index 0000000..281a43a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseDateRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoDateResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">2002-07-19T01:40:30Z</return></m:echoDateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseDecimalRes.xml
new file mode 100644
index 0000000..906eec7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseDecimalRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoDecimalResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">455646152</return></m:echoDecimalResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseFloatArrayRes.xml
new file mode 100644
index 0000000..594f4a9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:float[3]"><item xmlns="">45.76876</item><item xmlns="">43.454</item><item xmlns="">2523.542</item></return></m:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseFloatRes.xml
new file mode 100644
index 0000000..29ee160
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseFloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoFloatResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">50.25</return></m:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseHexBinaryRes.xml
new file mode 100644
index 0000000..b32c261
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoHexBinaryResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">AAABBAAE</return></m:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..5f9e58f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:int[3]"><item xmlns="">451</item><item xmlns="">425</item><item xmlns="">2523</item></return></m:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseIntegerRes.xml
new file mode 100644
index 0000000..f5a87df
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseIntegerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoIntegerResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">52</return></m:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStringArrayRes.xml
new file mode 100644
index 0000000..56f3dd4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStringArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:string[3]"><item xmlns="">Apache Axis2</item><item xmlns="">Lanka Software Foundation</item><item xmlns="">www.opensource.lk</item></return></m:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStringRes.xml
new file mode 100644
index 0000000..1436e74
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStringResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">String Argument</return></m:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStructArrayRes.xml
new file mode 100644
index 0000000..c4b3dc1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStructArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://soapinterop.org/xsd" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:SOAPStruct[3]"><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item></return></m:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStructRes.xml
new file mode 100644
index 0000000..2f97d35
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></return></m:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseVoidRes.xml
new file mode 100644
index 0000000..972f915
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMBaseVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoVoidResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcBase64Res.xml
new file mode 100644
index 0000000..bb20322
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcBase64Res.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoBase64Response xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">SGVsbG8gV29ybGQ=</return></m:echoBase64Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcBooleanRes.xml
new file mode 100644
index 0000000..3b5b22c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcBooleanRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">852</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoBooleanResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">1</return></m:echoBooleanResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcEchoStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcEchoStringRes.xml
new file mode 100644
index 0000000..0302a08
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcEchoStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoStringResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">strssfdfing1</return></m:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcFloatArrayRes.xml
new file mode 100644
index 0000000..2715d07
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcFloatArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:float[3]"><item xmlns="">45.76876</item><item xmlns="">43.454</item><item xmlns="">2523.542</item></return></m:echoFloatArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcFloatRes.xml
new file mode 100644
index 0000000..8823c97
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcFloatRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoFloatResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">50.25</return></m:echoFloatResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcHexBinaryRes.xml
new file mode 100644
index 0000000..de04eaa
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcHexBinaryRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">852</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoHexBinaryResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">41394644363445313243</return></m:echoHexBinaryResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcIntegerArrayRes.xml
new file mode 100644
index 0000000..4d70f18
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcIntegerArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:int[3]"><item xmlns="">451</item><item xmlns="">425</item><item xmlns="">2523</item></return></m:echoIntegerArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcIntergerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcIntergerRes.xml
new file mode 100644
index 0000000..185152c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcIntergerRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoIntegerResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">456</return></m:echoIntegerResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStringArrayRes.xml
new file mode 100644
index 0000000..3d9de1b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoStringArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:string[3]"><item xmlns="">Apache Axis2</item><item xmlns="">Lanka Software Foundation</item><item xmlns="">www.opensource.lk</item></return></m:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStructArrayRes.xml
new file mode 100644
index 0000000..65c864e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoStructArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://soapinterop.org/xsd" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:SOAPStruct[3]"><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item></return></m:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStructRes.xml
new file mode 100644
index 0000000..87acecc
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><h:echoMeStringResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">string</h:echoMeStringResponse><h:echoMeStructResponse xmlns:h="http://soapinterop.org/echoheader/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><varString xmlns="">string</varString><varInt xmlns="">150</varInt><varFloat xmlns="">456.321</varFloat></h:echoMeStructResponse></SOAP-ENV:Header><SOAP-ENV:Body><m:echoStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></return></m:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcVoidRes.xml
new file mode 100644
index 0000000..972f915
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGcVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoVoidResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..8f8500a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echo2DStringArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0,0]" SOAP-ENC:arrayType="nsa:string[2,2]"><item xmlns="">strss fdfing1</item><item xmlns="">sdfsdf25</item><item xmlns="">25dsasd dfasdas23</item><item xmlns="">25dsasd dfasdas23</item></return></m:echo2DStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..b7cc098
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoNestedArrayResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat><varArray xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:string[3]"><item xmlns="">strss fdfing1</item><item xmlns="">strss fdfing2</item><item xmlns="">strss fdfing3</item></varArray></return></m:echoNestedArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbNestedStructRes.xml
new file mode 100644
index 0000000..97cf309
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoNestedStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat><varStruct xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></varStruct></return></m:echoNestedStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..d93d814
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoSimpleTypesAsStructResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns=""><varString xmlns="">45ascasc  acasa asd52</varString><varInt xmlns="">4552</varInt><varFloat xmlns="">450.52</varFloat></return></m:echoSimpleTypesAsStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..64609c9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WMGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStructAsSimpleTypesResponse xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><outputString xmlns="">strss fdfing1</outputString><outputInteger xmlns="">25</outputInteger><outputFloat xmlns="">25.23</outputFloat></m:echoStructAsSimpleTypesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseBase64Res.xml
new file mode 100644
index 0000000..1779e45
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseBase64Res.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoBase64Response xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="d:base64Binary">SGVsbG8gV29ybGQ=</return></n0:echoBase64Response></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseBooleanRes.xml
new file mode 100644
index 0000000..ac7d6f7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseBooleanRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoBooleanResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="d:boolean">1</return></n0:echoBooleanResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseDateRes.xml
new file mode 100644
index 0000000..e168408
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseDateRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoDateResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="d:dateTime">2006-10-19T06:20:00+01:00</return></n0:echoDateResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseDecimalRes.xml
new file mode 100644
index 0000000..e4f9f11
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseDecimalRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoDecimalResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="d:decimal">455646152</return></n0:echoDecimalResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseFloatArrayRes.xml
new file mode 100644
index 0000000..dba9d21
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoFloatArrayResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" wn0:arrayType="d:float[3]"><item xmlns="" i:type="d:float">45.76876</item><item xmlns="" i:type="d:float">43.454</item><item xmlns="" i:type="d:float">2523.542</item></return></n0:echoFloatArrayResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseFloatRes.xml
new file mode 100644
index 0000000..20661b2
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseFloatRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoFloatResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="d:float">50.25</return></n0:echoFloatResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseHexBinaryRes.xml
new file mode 100644
index 0000000..de0784d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoHexBinaryResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="d:hexBinary">AAABBAAE</return></n0:echoHexBinaryResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..b670d35
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoIntegerArrayResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" wn0:arrayType="d:int[3]"><item xmlns="" i:type="d:int">451</item><item xmlns="" i:type="d:int">425</item><item xmlns="" i:type="d:int">2523</item></return></n0:echoIntegerArrayResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseIntegerRes.xml
new file mode 100644
index 0000000..d3eea48
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseIntegerRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoIntegerResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="d:int">52</return></n0:echoIntegerResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStringArrayRes.xml
new file mode 100644
index 0000000..4486e29
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStringArrayRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoStringArrayResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" wn0:arrayType="d:string[3]"><item xmlns="" i:type="d:string">Apache Axis2</item><item xmlns="" i:type="d:string">Lanka Software Foundation</item><item xmlns="" i:type="d:string">www.opensource.lk</item></return></n0:echoStringArrayResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStringRes.xml
new file mode 100644
index 0000000..7e8c129
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStringRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoStringResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="d:string">String Argument</return></n0:echoStringResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStructArrayRes.xml
new file mode 100644
index 0000000..f37d92f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStructArrayRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoStructArrayResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" wn0:arrayType="wn2:SOAPStruct[3]"><item xmlns="" i:type="wn2:SOAPStruct"><varString xmlns="" i:type="d:string">strss fdfing1</varString><varInt xmlns="" i:type="d:int">25</varInt><varFloat xmlns="" i:type="d:float">25.23</varFloat></item><item xmlns="" i:type="wn2:SOAPStruct"><varString xmlns="" i:type="d:string">strss fdfing1</varString><varInt xmlns="" i:type="d:int">25</varInt><varFloat xmlns="" i:type="d:float">25.23</varFloat></item><item xmlns="" i:type="wn2:SOAPStruct"><varString xmlns="" i:type="d:string">strss fdfing1</varString><varInt xmlns="" i:type="d:int">25</varInt><varFloat xmlns="" i:type="d:float">25.23</varFloat></item></return></n0:echoStructArrayResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStructRes.xml
new file mode 100644
index 0000000..c56a953
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseStructRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoStructResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="wn2:SOAPStruct"><varString xmlns="" i:type="d:string">strss fdfing1</varString><varInt xmlns="" i:type="d:int">25</varInt><varFloat xmlns="" i:type="d:float">25.23</varFloat></return></n0:echoStructResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseVoidRes.xml
new file mode 100644
index 0000000..013826f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspBaseVoidRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoVoidResponse xmlns:n0="http://soapinterop.org/" /></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..dec66a1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echo2DStringArrayResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" wn0:arrayType="d:string[2,2]"><item xmlns="" i:type="d:string">strss fdfing1</item><item xmlns="" i:type="d:string">sdfsdf25</item><item xmlns="" i:type="d:string">25dsasd dfasdas23</item><item xmlns="" i:type="d:string">25dsasd dfasdas23</item></return></n0:echo2DStringArrayResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..a0930a9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoNestedArrayResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="wn2:SOAPArrayStruct"><varString xmlns="" i:type="d:string">strss fdfing1</varString><varInt xmlns="" i:type="d:int">25</varInt><varFloat xmlns="" i:type="d:float">25.23</varFloat><varArray xmlns="" wn0:arrayType="d:string[3]"><item xmlns="" i:type="d:string">strss fdfing1</item><item xmlns="" i:type="d:string">strss fdfing2</item><item xmlns="" i:type="d:string">strss fdfing3</item></varArray></return></n0:echoNestedArrayResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbNestedStructRes.xml
new file mode 100644
index 0000000..190ca14
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoNestedStructResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="wn2:SOAPStructStruct"><varString xmlns="" i:type="d:string">strss fdfing1</varString><varInt xmlns="" i:type="d:int">25</varInt><varFloat xmlns="" i:type="d:float">25.23</varFloat><varStruct xmlns="" i:type="wn2:SOAPStruct"><varString xmlns="" i:type="d:string">strss fdfing1</varString><varInt xmlns="" i:type="d:int">25</varInt><varFloat xmlns="" i:type="d:float">25.23</varFloat></varStruct></return></n0:echoNestedStructResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..e3f46e4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoSimpleTypesAsStructResponse xmlns:n0="http://soapinterop.org/"><return xmlns="" i:type="wn2:SOAPStruct"><varString xmlns="" i:type="d:string">45ascasc  acasa asd52</varString><varInt xmlns="" i:type="d:int">4552</varInt><varFloat xmlns="" i:type="d:float">450.52</varFloat></return></n0:echoSimpleTypesAsStructResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..7d96300
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wn2="http://soapinterop.org/xsd" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="http://idoox.com/interface" xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/"><e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><n0:echoStructAsSimpleTypesResponse xmlns:n0="http://soapinterop.org/"><outputString xmlns="" i:type="d:string">strss fdfing1</outputString><outputInteger xmlns="" i:type="d:int">25</outputInteger><outputFloat xmlns="" i:type="d:float">25.23</outputFloat></n0:echoStructAsSimpleTypesResponse></e:Body></e:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupcVoidRes.xml
new file mode 100644
index 0000000..9dda815
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/WaspGroupcVoidRes.xml
@@ -0,0 +1,8 @@
+<e:Envelope xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:e="http://schemas.xmlsoap.org/soap/envelope/">
+      <e:Header>
+         <ns0:echoMeStringResponse i:type="xsd:string" xmlns:ns0="http://soapinterop.org/echoheader/">string</ns0:echoMeStringResponse>
+      </e:Header>
+      <e:Body e:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+         <n0:echoVoidResponse xmlns:n0="http://soapinterop.org/"/>
+      </e:Body>
+   </e:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseBase64Res.xml
new file mode 100644
index 0000000..d4e6801
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseBase64Res.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoBase64Response xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:base64">SGVsbG8gV29ybGQ=</return>
+</m:echoBase64Response>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseBooleanRes.xml
new file mode 100644
index 0000000..be37ec0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseBooleanRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoBooleanResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xsi:type="xsd:boolean">1</return>
+</m:echoBooleanResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseDateRes.xml
new file mode 100644
index 0000000..8e41001
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseDateRes.xml
@@ -0,0 +1 @@
+<!--test failed-->
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseDecimalRes.xml
new file mode 100644
index 0000000..3da244b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseDecimalRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoDecimalResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xsi:type="xsd:decimal">455646152</return>
+</m:echoDecimalResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseFloatArrayRes.xml
new file mode 100644
index 0000000..986d93b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseFloatArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoFloatArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" xmlns:n1="http://www.w3.org/2001/XMLSchema" xsi:type="ns1:Array" SOAP-ENC:arrayType="n1:float[3]" id="id1">
+<f xmlns="">45.76876</f>
+<f xmlns="">43.454</f>
+<f xmlns="">2523.542</f>
+</return>
+</m:echoFloatArrayResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseFloatRes.xml
new file mode 100644
index 0000000..85d4420
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseFloatRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoFloatResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xsi:type="xsd:float">50.25</return>
+</m:echoFloatResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseHexBinaryRes.xml
new file mode 100644
index 0000000..a54e87a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseHexBinaryRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoHexBinaryResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://www.w3.org/2001/XMLSchema" xsi:type="ns1:hexBinary">aaabbaae</return>
+</m:echoHexBinaryResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..78eabaf
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseIntegerArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoIntegerArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" xmlns:n1="http://www.w3.org/1999/XMLSchema" xsi:type="ns1:Array" SOAP-ENC:arrayType="n1:int[3]" id="id1">
+<i xmlns="">451</i>
+<i xmlns="">425</i>
+<i xmlns="">2523</i>
+</return>
+</m:echoIntegerArrayResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseIntegerRes.xml
new file mode 100644
index 0000000..3a8684d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseIntegerRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoIntegerResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xsi:type="xsd:int">52</return>
+</m:echoIntegerResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStringArrayRes.xml
new file mode 100644
index 0000000..a562834
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStringArrayRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoStringArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" xmlns:n1="http://www.w3.org/1999/XMLSchema" xsi:type="ns1:Array" SOAP-ENC:arrayType="n1:string[3]" id="id1">
+<s xmlns="">Apache Axis2</s>
+<s xmlns="">Lanka Software Foundation</s>
+<s xmlns="">www.opensource.lk</s>
+</return>
+</m:echoStringArrayResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStringRes.xml
new file mode 100644
index 0000000..18b3610
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStringRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoStringResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xsi:type="xsd:string">String Argument</return>
+</m:echoStringResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStructArrayRes.xml
new file mode 100644
index 0000000..0a1496a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStructArrayRes.xml
@@ -0,0 +1,23 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoStructArrayResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" xmlns:n1="http://soapinterop.org/xsd" xsi:type="ns1:Array" SOAP-ENC:arrayType="n1:SOAPStruct[3]" id="id1">
+<i xmlns="" xmlns:ns2="http://soapinterop.org/xsd" xsi:type="ns2:SOAPStruct" id="id2">
+<varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat>
+<varInt xmlns="" xsi:type="xsd:int">25</varInt>
+<varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+</i>
+<i xmlns="" xmlns:ns2="http://soapinterop.org/xsd" xsi:type="ns2:SOAPStruct" id="id3">
+<varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat>
+<varInt xmlns="" xsi:type="xsd:int">25</varInt>
+<varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+</i>
+<i xmlns="" xmlns:ns2="http://soapinterop.org/xsd" xsi:type="ns2:SOAPStruct" id="id4">
+<varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat>
+<varInt xmlns="" xsi:type="xsd:int">25</varInt>
+<varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+</i>
+</return>
+</m:echoStructArrayResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStructRes.xml
new file mode 100644
index 0000000..dca13da
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseStructRes.xml
@@ -0,0 +1,11 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoStructResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xmlns:ns1="http://soapinterop.org/xsd" xsi:type="ns1:SOAPStruct" id="id1">
+<varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat>
+<varInt xmlns="" xsi:type="xsd:int">25</varInt>
+<varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString>
+</return>
+</m:echoStructResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseVoidRes.xml
new file mode 100644
index 0000000..f2fc1a0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/XSBaseVoidRes.xml
@@ -0,0 +1,6 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoVoidResponse xmlns:m="http://soapinterop.org/">
+</m:echoVoidResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseBase64Res.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseBase64Res.xml
new file mode 100644
index 0000000..b3921c0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseBase64Res.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoBase64Response xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:base64Binary">UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</return></ns0:echoBase64Response></env:Body></env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseBooleanRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseBooleanRes.xml
new file mode 100644
index 0000000..5046d93
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseBooleanRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoBooleanResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="xsd:boolean">true</return></ns0:echoBooleanResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseDateRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseDateRes.xml
new file mode 100644
index 0000000..6d29fc1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseDateRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoDateResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="xsd:dateTime">2002-07-18T19:40:30.387-06:00</return></ns0:echoDateResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseDecimalRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseDecimalRes.xml
new file mode 100644
index 0000000..5fa1385
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseDecimalRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoDecimalResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="xsd:decimal">455646152</return></ns0:echoDecimalResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseFloatArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseFloatArrayRes.xml
new file mode 100644
index 0000000..a36b25e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseFloatArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoFloatArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoFloatArrayResponse><ns1:ArrayOffloat env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:float[3]" xsi:type="enc:Array" id="ID1"><item xsi:type="xsd:float">45.76876</item><item xsi:type="xsd:float">43.454</item><item xsi:type="xsd:float">2523.542</item></ns1:ArrayOffloat></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseFloatRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseFloatRes.xml
new file mode 100644
index 0000000..2e35559
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseFloatRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoFloatResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="xsd:float">50.25</return></ns0:echoFloatResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseHexBinaryRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseHexBinaryRes.xml
new file mode 100644
index 0000000..d4ef098
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseHexBinaryRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoHexBinaryResponse xmlns:ns0="http://soapinterop.org/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xsi:type="xsd:hexBinary">aaabbaae</return></ns0:echoHexBinaryResponse></env:Body></env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseIntegerArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseIntegerArrayRes.xml
new file mode 100644
index 0000000..46a198e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseIntegerArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoIntegerArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoIntegerArrayResponse><ns1:ArrayOfint env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:int[3]" xsi:type="enc:Array" id="ID1"><item xsi:type="xsd:int">451</item><item xsi:type="xsd:int">425</item><item xsi:type="xsd:int">2523</item></ns1:ArrayOfint></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseIntegerRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseIntegerRes.xml
new file mode 100644
index 0000000..e09540c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseIntegerRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoIntegerResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="xsd:int">52</return></ns0:echoIntegerResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStringArrayRes.xml
new file mode 100644
index 0000000..0670a73
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStringArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStringArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoStringArrayResponse><ns1:ArrayOfstring env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:string[3]" xsi:type="enc:Array" id="ID1"><item xsi:type="xsd:string">Apache Axis2</item><item xsi:type="xsd:string">Lanka Software Foundation</item><item xsi:type="xsd:string">www.opensource.lk</item></ns1:ArrayOfstring></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStringRes.xml
new file mode 100644
index 0000000..18b3610
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStringRes.xml
@@ -0,0 +1,7 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+<SOAP-ENV:Body>
+<m:echoStringResponse xmlns:m="http://soapinterop.org/">
+<return xmlns="" xsi:type="xsd:string">String Argument</return>
+</m:echoStringResponse>
+</SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStructArrayRes.xml
new file mode 100644
index 0000000..44a4c6e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStructArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStructArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoStructArrayResponse><ns1:ArrayOfSOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="ns1:SOAPStruct[3]" xsi:type="enc:Array" id="ID1"><item href="#ID2"></item><item href="#ID3"></item><item href="#ID4"></item></ns1:ArrayOfSOAPStruct><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID2"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID3"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID4"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStructRes.xml
new file mode 100644
index 0000000..23680e5
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseStructRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStructResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoStructResponse><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID1"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseVoidRes.xml
new file mode 100644
index 0000000..70b0211
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunBaseVoidRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoVoidResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"></ns0:echoVoidResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupb2DStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupb2DStringArrayRes.xml
new file mode 100644
index 0000000..b72ae13
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupb2DStringArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echo2DStringArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echo2DStringArrayResponse><ns1:ArrayOfString2D env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:string[2,2]" xsi:type="enc:Array" id="ID1"><item xsi:type="xsd:string">strss fdfing1</item><item xsi:type="xsd:string">sdfsdf25</item><item xsi:type="xsd:string">25dsasd dfasdas23</item><item xsi:type="xsd:string">25dsasd dfasdas23</item></ns1:ArrayOfString2D></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbNestedArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbNestedArrayRes.xml
new file mode 100644
index 0000000..3dbd8f1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbNestedArrayRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoNestedArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoNestedArrayResponse><ns1:SOAPArrayStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPArrayStruct" id="ID1"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat><varArray href="#ID2"></varArray></ns1:SOAPArrayStruct><ns1:ArrayOfstring env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:string[3]" xsi:type="enc:Array" id="ID2"><item xsi:type="xsd:string">strss fdfing1</item><item xsi:type="xsd:string">strss fdfing2</item><item xsi:type="xsd:string">strss fdfing3</item></ns1:ArrayOfstring></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbNestedStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbNestedStructRes.xml
new file mode 100644
index 0000000..3f38e8a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbNestedStructRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoNestedStructResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoNestedStructResponse><ns1:SOAPStructStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStructStruct" id="ID1"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat><varStruct href="#ID2"></varStruct></ns1:SOAPStructStruct><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID2"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbSimpletypesAsStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbSimpletypesAsStructRes.xml
new file mode 100644
index 0000000..2879b08
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbSimpletypesAsStructRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoSimpleTypesAsStructResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoSimpleTypesAsStructResponse><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID1"><varString xsi:type="xsd:string">45ascasc  acasa asd52</varString><varInt xsi:type="xsd:int">4552</varInt><varFloat xsi:type="xsd:float">450.52</varFloat></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbStructAsSimpleTypesRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbStructAsSimpleTypesRes.xml
new file mode 100644
index 0000000..a96113c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round2/sunGroupbStructAsSimpleTypesRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStructAsSimpleTypesResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><outputString xsi:type="xsd:string">strss fdfing1</outputString><outputInteger xsi:type="xsd:int">25</outputInteger><outputFloat xsi:type="xsd:float">25.23</outputFloat></ns0:echoStructAsSimpleTypesResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/GFHeaderTestRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/GFHeaderTestRes.xml
new file mode 100644
index 0000000..0369ddd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/GFHeaderTestRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Header /><env:Body><ans1:echoStringReturn xmlns:ans1="http://soapinterop.org/xsd">apache axis2</ans1:echoStringReturn></env:Body></env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport1StringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport1StringRes.xml
new file mode 100644
index 0000000..d5b9fe8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport1StringRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoStringResponse xmlns:q1="http://soapinterop/echoStringResponse/"><Result xmlns="" xsi:type="xsd:string">strss fdfing1</Result></q1:echoStringResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport2StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport2StructRes.xml
new file mode 100644
index 0000000..ed79b61
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport2StructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoStructResponse xmlns:q1="http://soapinterop/"><Result xmlns="" href="#id1" /></q1:echoStructResponse><q2:SOAPStruct xmlns:q2="http://soapinterop.org/xsd" xsi:type="q2:SOAPStruct" id="id1"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q2:SOAPStruct></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport3StructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport3StructArrayRes.xml
new file mode 100644
index 0000000..294237d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport3StructArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoStructArrayResponse xmlns:q1="http://soapinterop/"><Result xmlns="" href="#id1" /></q1:echoStructArrayResponse><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:q2="http://soapinterop.org/xsd" soapenc:arrayType="q2:SOAPStruct[3]" id="id1"><Item xmlns="" href="#id2" /><Item xmlns="" href="#id3" /><Item xmlns="" href="#id4" /></soapenc:Array><q3:SOAPStruct xmlns:q3="http://soapinterop.org/xsd" xsi:type="q3:SOAPStruct" id="id2"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q3:SOAPStruct><q4:SOAPStruct xmlns:q4="http://soapinterop.org/xsd" xsi:type="q4:SOAPStruct" id="id3"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q4:SOAPStruct><q5:SOAPStruct xmlns:q5="http://soapinterop.org/xsd" xsi:type="q5:SOAPStruct" id="id4"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q5:SOAPStruct></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport3StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport3StructRes.xml
new file mode 100644
index 0000000..682e78e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDImport3StructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoStructResponse xmlns:q1="http://soapinterop/"><Result xmlns="" href="#id1" /></q1:echoStructResponse><q2:SOAPStruct xmlns:q2="http://soapinterop.org/xsd" xsi:type="q2:SOAPStruct" id="id1"><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString><varInt xmlns="" xsi:type="xsd:int">25</varInt><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat></q2:SOAPStruct></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStringArrayRes.xml
new file mode 100644
index 0000000..e0d6dee
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStringArrayRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoStringArrayResponse xmlns:q1="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="" href="#id1" /></q1:echoStringArrayResponse><soapenc:Array xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="xsd:string[3]" id="id1"><Item xmlns="">Apache Axis2</Item><Item xmlns="">Lanka Software Foundation</Item><Item xmlns="">www.opensource.lk</Item></soapenc:Array></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStringRes.xml
new file mode 100644
index 0000000..205078d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStringRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoStringResponse xmlns:q1="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="" xsi:type="xsd:string">strss fdfing1</return></q1:echoStringResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStructRes.xml
new file mode 100644
index 0000000..656c170
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcStructRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoStructResponse xmlns:q1="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="" href="#id1" /></q1:echoStructResponse><q2:SOAPStruct xmlns:q2="http://soapinterop.org/xsd" xsi:type="q2:SOAPStruct" id="id1"><varFloat xmlns="" xsi:type="xsd:float">25.23</varFloat><varInt xmlns="" xsi:type="xsd:int">25</varInt><varString xmlns="" xsi:type="xsd:string">strss fdfing1</varString></q2:SOAPStruct></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcVoidRes.xml
new file mode 100644
index 0000000..f1d3733
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGDRpcVoidRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoVoidResponse xmlns:q1="http://soapinterop.org/WSDLInteropTestRpcEnc" /></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGEListRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGEListRes.xml
new file mode 100644
index 0000000..7d931d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxGEListRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org" xmlns:types="http://soapinterop.org/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoLinkedListResponse xmlns:q1="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="" href="#id1" /></q1:echoLinkedListResponse><q2:List xmlns:q2="http://soapinterop.org/xsd" xsi:type="q2:List" id="id1"><varInt xmlns="" xsi:type="xsd:int">255</varInt><varString xmlns="" xsi:type="xsd:string">Axis2</varString></q2:List></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxR3EmptySAEchoStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxR3EmptySAEchoStringRes.xml
new file mode 100644
index 0000000..b7ff24c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsAsmxR3EmptySAEchoStringRes.xml
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://tempuri.org/" xmlns:types="http://tempuri.org/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:echoStringResponse xmlns:q1="http://soapinterop/"><Result xmlns="" xsi:type="xsd:string">strss fdfing1</Result></q1:echoStringResponse></soap:Body></soap:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport1StringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport1StringRes.xml
new file mode 100644
index 0000000..afdcdd7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport1StringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringResponse xmlns:SOAPSDK4="http://soapinterop/echoStringResponse/"><Result xmlns="">strss fdfing1</Result></SOAPSDK4:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport2StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport2StructRes.xml
new file mode 100644
index 0000000..054c37a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport2StructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructResponse xmlns:SOAPSDK4="http://soapinterop/"><Result xmlns="" href="#id1" /></SOAPSDK4:echoStructResponse><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStruct" id="id1"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK5:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport3StructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport3StructArrayRes.xml
new file mode 100644
index 0000000..0fc7fd4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport3StructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructArrayResponse xmlns:SOAPSDK4="http://soapinterop/"><Result xmlns="" xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK5:SOAPStruct[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id1" /><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id2" /><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" href="#id3" /></Result></SOAPSDK4:echoStructArrayResponse><SOAPSDK6:SOAPStruct xmlns:SOAPSDK6="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK6:SOAPStruct" id="id1"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK6:SOAPStruct><SOAPSDK7:SOAPStruct xmlns:SOAPSDK7="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK7:SOAPStruct" id="id2"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK7:SOAPStruct><SOAPSDK8:SOAPStruct xmlns:SOAPSDK8="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK8:SOAPStruct" id="id3"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK8:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport3StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport3StructRes.xml
new file mode 100644
index 0000000..054c37a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDImport3StructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructResponse xmlns:SOAPSDK4="http://soapinterop/"><Result xmlns="" href="#id1" /></SOAPSDK4:echoStructResponse><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStruct" id="id1"><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.2299995422363</varFloat></SOAPSDK5:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStringArrayRes.xml
new file mode 100644
index 0000000..34ca9d2
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringArrayResponse xmlns:SOAPSDK4="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="" SOAPSDK3:offset="[0]" SOAPSDK3:arrayType="SOAPSDK1:string[3]" SOAPSDK2:type="SOAPSDK3:Array"><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">Apache Axis2</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">Lanka Software Foundation</SOAPSDK3:string><SOAPSDK3:string xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/">www.opensource.lk</SOAPSDK3:string></return></SOAPSDK4:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStringRes.xml
new file mode 100644
index 0000000..70b18ea
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringResponse xmlns:SOAPSDK4="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="">strss fdfing1</return></SOAPSDK4:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStructRes.xml
new file mode 100644
index 0000000..98bb164
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStructResponse xmlns:SOAPSDK4="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="" href="#id1" /></SOAPSDK4:echoStructResponse><SOAPSDK5:SOAPStruct xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:SOAPStruct" id="id1"><varFloat xmlns="">25.2299995422363</varFloat><varInt xmlns="">25</varInt><varString xmlns="">strss fdfing1</varString></SOAPSDK5:SOAPStruct></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcVoidRes.xml
new file mode 100644
index 0000000..19e0cc3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GDRpcVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoVoidResponse xmlns:SOAPSDK4="http://soapinterop.org/WSDLInteropTestRpcEnc" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GEListRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GEListRes.xml
new file mode 100644
index 0000000..63776a4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GEListRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoLinkedListResponse xmlns:SOAPSDK4="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="" href="#id1" /></SOAPSDK4:echoLinkedListResponse><SOAPSDK5:List xmlns:SOAPSDK5="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK5:List" id="id1"><varInt xmlns="">255</varInt><varString xmlns="">Axis2</varString><child xmlns="" href="#id2" /></SOAPSDK5:List><SOAPSDK6:List xmlns:SOAPSDK6="http://soapinterop.org/xsd" SOAPSDK3:root="0" SOAPSDK2:type="SOAPSDK6:List" id="id2"><varInt xmlns="">21</varInt><varString xmlns="">LSF</varString><child xmlns="" SOAPSDK2:nil="true" /></SOAPSDK6:List></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GERpcStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GERpcStringRes.xml
new file mode 100644
index 0000000..70b18ea
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3GERpcStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringResponse xmlns:SOAPSDK4="http://soapinterop.org/WSDLInteropTestRpcEnc"><return xmlns="">strss fdfing1</return></SOAPSDK4:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3R3EsaEchoStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3R3EsaEchoStringRes.xml
new file mode 100644
index 0000000..e07becb
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/MsStkv3R3EsaEchoStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAPSDK4:echoStringResponse xmlns:SOAPSDK4="http://soapinterop/"><Result xmlns="">strss fdfing1</Result></SOAPSDK4:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGEListRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGEListRes.xml
new file mode 100644
index 0000000..e22a141
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGEListRes.xml
@@ -0,0 +1 @@
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoLinkedListResponse xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" href="#ID1" /></ns0:echoLinkedListResponse><ns1:List xmlns:ns1="http://soapinterop.org/xsd" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:List" id="ID1"><varInt xmlns="" xsi:type="xsd:int">255</varInt><varString xmlns="" xsi:type="xsd:string">Axis2</varString><child xmlns="" xsi:nil="1" xsi:type="ns1:List" /></ns1:List></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStringArrayRes.xml
new file mode 100644
index 0000000..3dca082
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStringArrayRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStringArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoStringArrayResponse><ns1:ArrayOfstring env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:string[3]" xsi:type="enc:Array" id="ID1"><item xsi:type="xsd:string">Apache Axis2</item><item xsi:type="xsd:string">Lanka Software Foundation</item><item xsi:type="xsd:string">www.opensource.lk</item></ns1:ArrayOfstring></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStringRes.xml
new file mode 100644
index 0000000..4781f98
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStringRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStringResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="xsd:string">strss fdfing1</return></ns0:echoStringResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStructRes.xml
new file mode 100644
index 0000000..05d9309
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcStructRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStructResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoStructResponse><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID1"><varFloat xsi:type="xsd:float">25.23</varFloat><varInt xsi:type="xsd:int">25</varInt><varString xsi:type="xsd:string">strss fdfing1</varString></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcVoidRes.xml
new file mode 100644
index 0000000..729942b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/SunGERpcVoidRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoVoidResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"></ns0:echoVoidResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport1StringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport1StringRes.xml
new file mode 100644
index 0000000..a0b1fa7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport1StringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStringResponse xmlns:m="http://soapinterop/echoString/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><Result xmlns="">strss fdfing1</Result></m:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport2StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport2StructRes.xml
new file mode 100644
index 0000000..1a30033
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport2StructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStructResponse xmlns:m="http://soapinterop/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><Result xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></Result></m:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport3StructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport3StructArrayRes.xml
new file mode 100644
index 0000000..d4903d1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport3StructArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStructArrayResponse xmlns:m="http://soapinterop/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><Result xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://soapinterop.org/xsd" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:SOAPStruct[3]"><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item><item xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></item></Result></m:echoStructArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport3StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport3StructRes.xml
new file mode 100644
index 0000000..1a30033
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDImport3StructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStructResponse xmlns:m="http://soapinterop/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><Result xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></Result></m:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStringArrayRes.xml
new file mode 100644
index 0000000..f3fff8e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStringArrayRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStringArrayResponse xmlns:m="http://soapinterop.org/WSDLInteropTestRpcEnc" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:nsa="http://www.w3.org/2001/XMLSchema" SOAP-ENC:offset="[0]" SOAP-ENC:arrayType="nsa:string[3]"><item xmlns="">Apache Axis2</item><item xmlns="">Lanka Software Foundation</item><item xmlns="">www.opensource.lk</item></return></m:echoStringArrayResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStringRes.xml
new file mode 100644
index 0000000..ffa2e1a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStringRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStringResponse xmlns:m="http://soapinterop.org/WSDLInteropTestRpcEnc" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns="">strss fdfing1</return></m:echoStringResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStructRes.xml
new file mode 100644
index 0000000..34dbe96
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcStructRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoStructResponse xmlns:m="http://soapinterop.org/WSDLInteropTestRpcEnc" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xmlns=""><varString xmlns="">strss fdfing1</varString><varInt xmlns="">25</varInt><varFloat xmlns="">25.23</varFloat></return></m:echoStructResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcVoidRes.xml
new file mode 100644
index 0000000..d601813
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/WMGDRpcVoidRes.xml
@@ -0,0 +1 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><m:echoVoidResponse xmlns:m="http://soapinterop.org/WSDLInteropTestRpcEnc" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport1StringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport1StringRes.xml
new file mode 100644
index 0000000..85ad90c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport1StringRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop/echoString/" xmlns:ns1="http://soapinterop/echoStringResponse/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns1:echoStringResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><Result xsi:type="xsd:string">strss fdfing1</Result></ns1:echoStringResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport2StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport2StructRes.xml
new file mode 100644
index 0000000..499e258
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport2StructRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop/" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStructResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><Result href="#ID1"></Result></ns0:echoStructResponse><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID1"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport3StructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport3StructArrayRes.xml
new file mode 100644
index 0000000..426b2c7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport3StructArrayRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"><env:Body><ns0:echoStructArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><Result href="#ID1"></Result></ns0:echoStructArrayResponse><ns1:ArrayOfSOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="ns2:SOAPStruct[3]" xsi:type="enc:Array" id="ID1"><item href="#ID2"></item><item href="#ID3"></item><item href="#ID4"></item></ns1:ArrayOfSOAPStruct><ns2:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:SOAPStruct" id="ID2"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns2:SOAPStruct><ns2:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:SOAPStruct" id="ID3"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns2:SOAPStruct><ns2:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:SOAPStruct" id="ID4"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns2:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport3StructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport3StructRes.xml
new file mode 100644
index 0000000..54f3bd8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDImport3StructRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://soapinterop.org/xsd2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/xsd" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"><env:Body><ns0:echoStructResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><Result href="#ID1"></Result></ns0:echoStructResponse><ns2:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:SOAPStruct" id="ID1"><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></ns2:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStringArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStringArrayRes.xml
new file mode 100644
index 0000000..3dca082
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStringArrayRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStringArrayResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoStringArrayResponse><ns1:ArrayOfstring env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" enc:arrayType="xsd:string[3]" xsi:type="enc:Array" id="ID1"><item xsi:type="xsd:string">Apache Axis2</item><item xsi:type="xsd:string">Lanka Software Foundation</item><item xsi:type="xsd:string">www.opensource.lk</item></ns1:ArrayOfstring></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStringRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStringRes.xml
new file mode 100644
index 0000000..4781f98
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStringRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStringResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return xsi:type="xsd:string">strss fdfing1</return></ns0:echoStringResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStructArrayRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStructArrayRes.xml
new file mode 100644
index 0000000..433a22a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStructArrayRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://soapinterop.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://soapinterop/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://soapinterop.org/xsd"><soapenv:Body><ns1:echoStructArray soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><inputArray xmlns="" xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="s:SOAPStruct[3]"><item0><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></item0><item0><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></item0><item0><varString xsi:type="xsd:string">strss fdfing1</varString><varInt xsi:type="xsd:int">25</varInt><varFloat xsi:type="xsd:float">25.23</varFloat></item0></inputArray></ns1:echoStructArray></soapenv:Body></soapenv:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStructRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStructRes.xml
new file mode 100644
index 0000000..05d9309
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcStructRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoStructResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><return href="#ID1"></return></ns0:echoStructResponse><ns1:SOAPStruct env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SOAPStruct" id="ID1"><varFloat xsi:type="xsd:float">25.23</varFloat><varInt xsi:type="xsd:int">25</varInt><varString xsi:type="xsd:string">strss fdfing1</varString></ns1:SOAPStruct></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcVoidRes.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcVoidRes.xml
new file mode 100644
index 0000000..729942b
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round3/sunGDRpcVoidRes.xml
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://soapinterop.org/WSDLInteropTestRpcEnc" xmlns:ns1="http://soapinterop.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><env:Body><ns0:echoVoidResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"></ns0:echoVoidResponse></env:Body></env:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resBaseStructFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resBaseStructFault.xml
new file mode 100644
index 0000000..2a27040
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resBaseStructFault.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoBaseStructFault'.</faultstring>
+            <detail>
+               <d:part2 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl">
+                  <floatMessage>10.3</floatMessage>
+                  <shortMessage>1</shortMessage>
+               </d:part2>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resExtendedStructFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resExtendedStructFault.xml
new file mode 100644
index 0000000..5e43997
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resExtendedStructFault.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoExtendedStructFault'.</faultstring>
+            <detail>
+               <d:part3 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl">
+                  <floatMessage>0.023</floatMessage>
+                  <shortMessage>1</shortMessage>
+                  <stringMessage>hi</stringMessage>
+                  <intMessage>6</intMessage>
+                  <anotherIntMessage>78</anotherIntMessage>
+               </d:part3>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resMultipleFaults1.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resMultipleFaults1.xml
new file mode 100644
index 0000000..49754e3
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resMultipleFaults1.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring>
+            <detail>
+               <d:part1 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl">
+                  <soapStruct>
+                     <varString>hi</varString>
+                     <varInt>1</varInt>
+                     <varFloat>1</varFloat>
+                  </soapStruct>
+               </d:part1>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resMultipleFaults2.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resMultipleFaults2.xml
new file mode 100644
index 0000000..4455695
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resMultipleFaults2.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring>
+            <detail>
+               <d:part2 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl">
+                  <floatMessage>0.1</floatMessage>
+                  <shortMessage>10</shortMessage>
+               </d:part2>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resSoapStructFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resSoapStructFault.xml
new file mode 100644
index 0000000..870bd3f
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/complex/resSoapStructFault.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoSOAPStructFault'.</faultstring>
+            <detail>
+               <d:part1 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl">
+                  <soapStruct>
+                     <varString>hi</varString>
+                     <varInt>10</varInt>
+                     <varFloat>5.3</varFloat>
+                  </soapStruct>
+               </d:part1>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resEmptyFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resEmptyFault.xml
new file mode 100644
index 0000000..ed60dc9
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resEmptyFault.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoEmptyFault'.</faultstring>
+            <detail>
+               <d:part1 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl" />
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resIntArray.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resIntArray.xml
new file mode 100644
index 0000000..5fadd30
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resIntArray.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode><faultstring>Fault in response to 'echoIntArrayFault'.</faultstring><detail><d:part5 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENC:arrayType="nsa:int[3]" SOAP-ENC:offset="[0]" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl" xmlns:nsa="http://www.w3.org/2001/XMLSchema"><item>10</item><item>11</item><item>1</item></d:part5></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults1.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults1.xml
new file mode 100644
index 0000000..85bff99
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults1.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring>
+            <detail>
+               <d:part1 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl" />
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults3.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults3.xml
new file mode 100644
index 0000000..650083d
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults3.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoMultipleFaults3'.</faultstring>
+            <detail>
+               <d:part2 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl/fault1">hi</d:part2>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults4.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults4.xml
new file mode 100644
index 0000000..dce39d8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultipleFaults4.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoMultipleFaults4'.</faultstring>
+            <detail>
+               <d:part3 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl">11</d:part3>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultiplefaults2.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultiplefaults2.xml
new file mode 100644
index 0000000..905e692
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resMultiplefaults2.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring>
+            <detail>
+               <d:part4 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl">0.236</d:part4>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resStringFault.xml b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resStringFault.xml
new file mode 100644
index 0000000..8696e9c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/interop/whitemesa/round4/res/resStringFault.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+      <SOAP-ENV:Body>
+         <SOAP-ENV:Fault>
+            <faultcode xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/">ns:Server</faultcode>
+            <faultstring>Fault in response to 'echoStringFault'.</faultstring>
+            <detail>
+               <d:part2 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:d="http://soapinterop.org/wsdl">Axis2 Echo String </d:part2>
+            </detail>
+         </SOAP-ENV:Fault>
+      </SOAP-ENV:Body>
+   </SOAP-ENV:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest-resources/mtom/mtom.bin b/rampart_1_1/modules/integration/itest-resources/mtom/mtom.bin
new file mode 100644
index 0000000..cff9324
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest-resources/mtom/mtom.bin
@@ -0,0 +1 @@
+saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda 
diff --git a/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/GetTest.java b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/GetTest.java
new file mode 100644
index 0000000..4c653a7
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/GetTest.java
@@ -0,0 +1,71 @@
+/*

+ * Copyright 2004,2005 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.axis2.rest;

+

+import java.io.ByteArrayInputStream;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+

+public class GetTest extends TestCase {

+

+    public void testRESTGet() throws Exception {

+

+        String epr = "http://localhost:8080/axis2/services/MyService";

+

+        String xml = "<echo>" +

+                "<Text>Hello</Text>" +

+                "</echo>";

+

+        byte arr[] = xml.getBytes();

+        ByteArrayInputStream bais = new ByteArrayInputStream(arr);

+

+        XMLStreamReader reader = null;

+        try {

+            reader = StAXUtils.createXMLStreamReader(bais);

+        } catch (XMLStreamException e) {

+            e.printStackTrace();

+        }

+        StAXOMBuilder builder = new StAXOMBuilder(reader);

+        OMElement data = builder.getDocumentElement();

+

+        Options options = new Options();

+        options.setTo(new EndpointReference(epr));

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);

+        options.setProperty(Constants.Configuration.ENABLE_REST_THROUGH_GET, Constants.VALUE_TRUE);

+

+        ServiceClient sender = new ServiceClient();

+        sender.setOptions(options);

+        options.setTo(new EndpointReference (epr));

+        OMElement response = sender.sendReceive(data);

+

+        response.serialize(System.out);

+    }

+}

+

diff --git a/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/HttpGetRESTBasedTest.java b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/HttpGetRESTBasedTest.java
new file mode 100644
index 0000000..1008fa1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/HttpGetRESTBasedTest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2004,2005 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.axis2.rest;
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.util.Utils;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class HttpGetRESTBasedTest { //extends UtilServerBasedTestCase implements TestConstants {
+
+
+//    public HttpGetRESTBasedTest() {
+//        super(HttpGetRESTBasedTest.class.getName());
+//    }
+//
+//    public HttpGetRESTBasedTest(String testName) {
+//        super(testName);
+//    }
+//
+//    public static Test suite() {
+//        return getTestSetup(new TestSuite(HttpGetRESTBasedTest.class));
+//    }
+
+//    protected void setUp() throws Exception {
+//        AxisService service =
+//                Utils.createSimpleService(serviceName,
+//                        Echo.class.getName(),
+//                        operationName);
+//        UtilServer.deployService(service);
+//
+//    }
+//
+//    protected void tearDown() throws Exception {
+//        UtilServer.unDeployService(serviceName);
+//    }
+
+    public void testEchoXMLSync() throws Exception {
+        //TODO support the GET with the Simple Axis Server and enable this test case
+        URL wsdlrequestUrl =
+                new URL(
+                        "http://127.0.0.1:5555/axis2/services/EchoXMLService/echoOMElement?value1=value1,value2=value2");
+
+        HttpURLConnection connection = (HttpURLConnection) wsdlrequestUrl.openConnection();
+        BufferedReader reader =
+                new BufferedReader(
+                        new InputStreamReader(connection.getInputStream()));
+        connection.getResponseCode();
+        String line = reader.readLine();
+        while (line != null) {
+            line = reader.readLine();
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/PostTest.java b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/PostTest.java
new file mode 100644
index 0000000..24828a1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/PostTest.java
@@ -0,0 +1,96 @@
+/*

+ * Copyright 2004,2005 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.axis2.rest;

+

+import java.io.ByteArrayInputStream;

+import java.io.StringWriter;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.transport.http.HTTPConstants;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+

+/**

+ * Sample for synchronous single channel blocking service invocation.

+ * Message Exchage Pattern IN-OUT

+ */

+public class PostTest extends TestCase {

+    private static EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:8070/onca/xml");

+

+    public void testRESTPost() throws Exception {

+        try {

+            String xml =

+                    "<websearch>" +

+                            "<Service>AWSECommerceService</Service>" +

+                            "<SubscriptionId>03WM83XFMP0X52C7A9R2</SubscriptionId>" +

+                            "<Operation>ItemSearch</Operation>" +

+                            "<SearchIndex>Books</SearchIndex>" +

+                            "<Keywords>Sanjiva,Web,Services</Keywords>" +

+                            "<ResponseGroup>Request,Small</ResponseGroup>" +

+                            "</websearch>";

+

+            byte arr[] = xml.getBytes();

+            ByteArrayInputStream bais = new ByteArrayInputStream(arr);

+

+            XMLStreamReader reader = null;

+            try {

+                reader = StAXUtils.createXMLStreamReader(bais);

+            } catch (XMLStreamException e) {

+                e.printStackTrace();

+            }

+            StAXOMBuilder builder = new StAXOMBuilder(reader);

+            OMElement websearch = builder.getDocumentElement();

+

+            Options options = new Options();

+            options.setTo(targetEPR);

+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+            options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);

+            options.setProperty(HTTPConstants.HTTP_CONTENT_TYPE, "application/x-www-form-urlencoded");

+

+            ServiceClient sender = new ServiceClient();

+            sender.setOptions(options);

+            options.setTo(targetEPR);

+            OMElement result = sender.sendReceive(websearch);

+

+            StringWriter writer = new StringWriter();

+            result.serialize(StAXUtils

+                    .createXMLStreamWriter(writer));

+            writer.flush();

+

+            System.out.println(writer.toString());

+

+        } catch (AxisFault axisFault) {

+            axisFault.printStackTrace();

+        } catch (XMLStreamException e) {

+            e.printStackTrace();

+        }

+    }

+}

+

diff --git a/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/RESTBasedEchoRawXMLTest.java b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/RESTBasedEchoRawXMLTest.java
new file mode 100644
index 0000000..e98fb31
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/RESTBasedEchoRawXMLTest.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2004,2005 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.axis2.rest;
+
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.util.Utils;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+
+import javax.xml.stream.XMLOutputFactory;
+
+
+public class RESTBasedEchoRawXMLTest extends TestCase { //extends UtilServerBasedTestCase implements TestConstants {
+
+    public RESTBasedEchoRawXMLTest() {
+        super(RESTBasedEchoRawXMLTest.class.getName());
+    }
+
+    public RESTBasedEchoRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    private OMElement createEnvelope() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Assimov, the foundation Sega"));
+        method.addChild(value);
+
+        return method;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/RESTGetTest.java b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/RESTGetTest.java
new file mode 100644
index 0000000..72d4489
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/org/apache/axis2/rest/RESTGetTest.java
@@ -0,0 +1,75 @@
+/*
+* Copyright 2004,2005 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.axis2.rest;

+

+import java.io.ByteArrayInputStream;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+

+//This Sample test Client is written for Yahoo Web Search

+

+public class RESTGetTest extends TestCase {

+

+    public void testRESTGet() throws Exception {

+        String epr = "http://api.search.yahoo.com/WebSearchService/V1/webSearch";

+

+        String xml =

+                "<websearch>" +

+                        "<appid>ApacheRestDemo</appid>" +

+                        "<query>finances</query>" +

+                        "<format>pdf</format>" +

+                        "</websearch>";

+

+        byte arr[] = xml.getBytes();

+        ByteArrayInputStream bais = new ByteArrayInputStream(arr);

+

+        XMLStreamReader reader = null;

+        try {

+            reader = StAXUtils.createXMLStreamReader(bais);

+        } catch (XMLStreamException e) {

+            e.printStackTrace();

+        }

+        StAXOMBuilder builder = new StAXOMBuilder(reader);

+        OMElement data = builder.getDocumentElement();

+        Options options = new Options();

+        options.setTo(new EndpointReference(epr));

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);

+        options.setProperty(Constants.Configuration.ENABLE_REST_THROUGH_GET, Constants.VALUE_TRUE);

+

+        //if post is through GET of HTTP

+

+        ServiceClient sender = new ServiceClient();

+        sender.setOptions(options);

+        options.setTo(new EndpointReference (epr));

+        OMElement response = sender.sendReceive(data);

+

+        response.serialize(System.out);

+    }

+}

diff --git a/rampart_1_1/modules/integration/itest/test/interop/mtom/MTOMEchoTestMultipleTest.java b/rampart_1_1/modules/integration/itest/test/interop/mtom/MTOMEchoTestMultipleTest.java
new file mode 100644
index 0000000..ffbfc52
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/mtom/MTOMEchoTestMultipleTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2004,2005 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 test.interop.mtom;
+
+import junit.framework.TestCase;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAP12Constants;
+import test.interop.util.BodyElements;
+
+import java.util.Iterator;
+
+/**
+ * white mesa cr interop test
+ */
+public class MTOMEchoTestMultipleTest extends TestCase {
+    private EndpointReference targetEPR = new EndpointReference("http://www.whitemesa.net/mtom-test-cr-inter");
+    private int repeat = 8;
+
+    public MTOMEchoTestMultipleTest() {
+        super(MTOMEchoTestMultipleTest.class.getName());
+    }
+
+    public MTOMEchoTestMultipleTest(String testName) {
+        super(testName);
+    }
+
+    public void runTest(boolean optimized, int repeat) throws Exception {
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(Constants.Configuration.ENABLE_MTOM,
+                Constants.VALUE_TRUE);
+        options.setProperty(HTTPConstants.CHUNKED, Constants.VALUE_FALSE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+        ServiceClient sender = new ServiceClient(configContext,null);
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+        OMElement resultElem = sender.sendReceive(BodyElements.bodyMultiple(optimized, repeat));
+        responseAssertion(resultElem);
+    }
+
+    public void testNonOptimized() throws Exception {
+        runTest(false, repeat);
+    }
+
+    public void testOptimized() throws Exception {
+        runTest(true, repeat);
+    }
+
+    private void responseAssertion(OMElement response) {
+        int child = 0;
+        TestCase.assertNotNull(response);
+
+        Iterator iterator = response.getChildren();
+        while (iterator.hasNext()) {
+            OMElement ele = (OMElement) iterator.next();
+            if (ele != null) {
+                child++;
+            }
+        }
+        TestCase.assertEquals(repeat, child);
+
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/itest/test/interop/mtom/MTOMEchoTestSingleTest.java b/rampart_1_1/modules/integration/itest/test/interop/mtom/MTOMEchoTestSingleTest.java
new file mode 100644
index 0000000..da39806
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/mtom/MTOMEchoTestSingleTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2004,2005 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 test.interop.mtom;
+
+import junit.framework.TestCase;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAP12Constants;
+import test.interop.util.BodyElements;
+
+/**
+ * white mesa interop test
+ */
+public class MTOMEchoTestSingleTest extends TestCase {
+    private EndpointReference targetEPR = new EndpointReference("http://www.whitemesa.net/mtom-test-cr-inter");
+
+    public MTOMEchoTestSingleTest() {
+        super(MTOMEchoTestSingleTest.class.getName());
+    }
+
+    public MTOMEchoTestSingleTest(String testName) {
+        super(testName);
+    }
+
+    public void runTest(boolean optimized) throws Exception {
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(HTTPConstants.CHUNKED, Constants.VALUE_FALSE);
+        options.setProperty(Constants.Configuration.ENABLE_MTOM,
+                Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+        OMElement resultElem = sender.sendReceive(BodyElements.bodySingle(optimized));
+        responseAssertion(resultElem, optimized);
+    }
+
+    public void testNonOptimized() throws Exception {
+        runTest(false);
+    }
+
+    public void testOptimized() throws Exception {
+        runTest(true);
+    }
+
+    private void responseAssertion(OMElement response, boolean optimized) {
+        TestCase.assertNotNull(response);
+
+        String responseText = response.getText();
+        TestCase.assertEquals(BodyElements.bodySingle(optimized).getText(), responseText);
+    }
+}
diff --git a/rampart_1_1/modules/integration/itest/test/interop/sun/complex/SunGroupHMain.java b/rampart_1_1/modules/integration/itest/test/interop/sun/complex/SunGroupHMain.java
new file mode 100644
index 0000000..9328063
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/sun/complex/SunGroupHMain.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.complex;
+
+import java.io.InputStream;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+
+import junit.framework.TestCase;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.om.impl.exception.XMLComparisonException;
+import org.apache.axiom.om.impl.llom.util.XMLComparator;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+
+import test.interop.sun.round4.complex.EchoBaseStructFaultClientutil;
+import test.interop.sun.round4.complex.EchoBlockingClient;
+import test.interop.sun.round4.complex.EchoExtendedStructFaultClientUtil;
+import test.interop.sun.round4.complex.EchoMultipleFaults1ClientUtil;
+import test.interop.sun.round4.complex.EchoMultipleFaults2ClientUtil;
+import test.interop.sun.round4.complex.EchoSOAPStructFaultClientUtil;
+import test.interop.sun.round4.complex.SunGroupHClientUtil;
+public class SunGroupHMain extends TestCase {
+
+    EchoBlockingClient client=null;
+    OMElement retEle;
+    SunGroupHClientUtil util=null;
+    String soapAction="";
+
+    public void setUp(){
+        client=new EchoBlockingClient();
+    }
+
+    private boolean Compare(OMElement retEle,String filepath) throws XMLStreamException,
+            XMLComparisonException {
+        boolean compare=false;
+        if(retEle!=null){
+             InputStream stream = Thread.currentThread()
+                     .getContextClassLoader().getResourceAsStream(filepath);
+            javax.xml.stream.XMLStreamReader parser = StAXUtils.createXMLStreamReader(stream);
+            OMXMLParserWrapper builder = new StAXSOAPModelBuilder(parser, null);
+            SOAPEnvelope resEnv = (SOAPEnvelope) builder.getDocumentElement();
+            OMElement resElementtobe = resEnv.getBody().getFirstElement();
+            XMLComparator comparator = new XMLComparator();
+            compare = comparator.compare(retEle,resElementtobe);
+        }
+        return compare;
+    }
+
+
+
+    //echoSoapStructFault
+    public void testSoapStructFault() throws Exception {
+        util=new EchoSOAPStructFaultClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(
+                Compare(retEle,"interop/sun/round4/complex/resSoapStructFault.xml"));
+    }
+
+
+    //echoBaseSoapStructFault
+    public void testBaseStructFault()throws Exception{
+        util=new EchoBaseStructFaultClientutil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(
+                Compare( retEle,"interop/sun/round4/complex/resBaseStrutFault.xml"));
+
+    }
+
+    //echoExtendedStructFault
+    public void testExtendedStructFault()throws Exception{
+        util=new EchoExtendedStructFaultClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(
+                Compare(retEle,"interop/sun/round4/complex/resExtendedStructFault.xml"));
+
+    }
+
+    //echomultiplefaults1
+    public void testMultiplefaults1()throws Exception{
+        util=new EchoMultipleFaults1ClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(
+                Compare( retEle,"interop/sun/round4/complex/resMultipleFaults1.xml"));
+    }
+
+    //echomultiplefaults2
+    public void testMultiplefaults2()throws Exception{
+        util=new EchoMultipleFaults2ClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(
+                Compare( retEle,"interop/sun/round4/complex/resMultipleFaults2.xml"));
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/sun/simple/SunGroupHMain.java b/rampart_1_1/modules/integration/itest/test/interop/sun/simple/SunGroupHMain.java
new file mode 100644
index 0000000..bf29992
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/sun/simple/SunGroupHMain.java
@@ -0,0 +1,140 @@
+/*
+* Copyright 2004,2005 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 test.interop.sun.simple;
+
+import java.io.InputStream;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+
+import junit.framework.TestCase;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.om.impl.exception.XMLComparisonException;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+
+import test.interop.sun.round4.simple.EchoBlockingClient;
+import test.interop.sun.round4.simple.util.EchoEmptyFaultClientUtil;
+import test.interop.sun.round4.simple.util.EchoIntArrayFaultClientUtil;
+import test.interop.sun.round4.simple.util.EchoMultipleFaults1ClientUtil;
+import test.interop.sun.round4.simple.util.EchoMultipleFaults2ClientUtil;
+import test.interop.sun.round4.simple.util.EchoMultipleFaults3Clientutil;
+import test.interop.sun.round4.simple.util.EchoMultipleFaults4ClientUtil;
+import test.interop.sun.round4.simple.util.EchoStringFaultClientUtil;
+import test.interop.sun.round4.simple.util.SunGroupHClientUtil;
+import test.interop.util.XMLComparatorInterop;
+
+public class SunGroupHMain extends TestCase{
+
+    EchoBlockingClient client=null;
+    OMElement retEle;
+    SunGroupHClientUtil util=null;
+    String soapAction="";
+
+    public void setUp(){
+        client=new EchoBlockingClient();
+
+    }
+
+    private boolean Compare(OMElement retEle,String filepath) throws XMLStreamException,
+            XMLComparisonException{
+        boolean compare=false;
+        if(retEle!=null){
+             InputStream stream = Thread.currentThread()
+                     .getContextClassLoader().getResourceAsStream(filepath);
+            javax.xml.stream.XMLStreamReader parser = StAXUtils.createXMLStreamReader(stream);
+            OMXMLParserWrapper builder = new StAXSOAPModelBuilder(parser, null);
+            SOAPEnvelope resEnv = (SOAPEnvelope) builder.getDocumentElement();
+            OMElement resElementtobe = resEnv.getBody().getFirstElement();
+            XMLComparatorInterop comparator = new XMLComparatorInterop();
+            compare = comparator.compare(retEle,resElementtobe);
+        }
+        return compare;
+    }
+
+
+
+
+
+    public void testEchoEmptyFault()  throws Exception{
+        util=new EchoEmptyFaultClientUtil();
+        retEle =client.sendMsg(util,soapAction);
+        assertTrue(Compare(retEle,"interop/sun/round4/simple/resEmptyfault.xml"));
+
+
+    }
+
+
+    //todo fix me Nadana , this fails due to bug in XML Comparator
+    //echoBaseSoapStructFault
+    public void testIntArrayFault()throws Exception{
+        util=new EchoIntArrayFaultClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(Compare( retEle,"interop/sun/round4/simple/resIntArrayFault.xml"));
+    }
+
+
+
+
+    //echoExtendedStructFault
+    public void testStringFault()throws Exception{
+        util=new EchoStringFaultClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(Compare( retEle,"interop/sun/round4/simple/resStringFault.xml"));
+
+
+
+    }
+
+
+    //echomultiplefaults1
+    public void testMultiplefaults1()throws Exception{
+        util=new EchoMultipleFaults1ClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(Compare( retEle,"interop/sun/round4/simple/resMultipleFaults1.xml"));
+    }
+
+    //echomultiplefaults2
+    public void testMultiplefaults2()throws Exception{
+        util=new EchoMultipleFaults2ClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(Compare( retEle,"interop/sun/round4/simple/resMultipleFaults2.xml"));
+
+
+    }
+
+    //echomultiplefaults3
+    public void testMultiplefaults3()throws Exception{
+        util=new EchoMultipleFaults3Clientutil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(Compare( retEle,"interop/sun/round4/simple/resMultipleFaults3.xml"));
+
+
+    }
+    //echomultiplefaults4
+    public void testMultiplefaults4()throws Exception{
+        util=new EchoMultipleFaults4ClientUtil();
+        retEle = client.sendMsg(util,soapAction);
+        assertTrue(Compare( retEle,"interop/sun/round4/simple/resMultipleFaults4.xml"));
+
+    }
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round1/Round1InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round1/Round1InteropTest.java
new file mode 100644
index 0000000..e61d886
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round1/Round1InteropTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round1.util.Round1FloatArrayUtil;
+import test.interop.whitemesa.round1.util.Round1FloatUtil;
+import test.interop.whitemesa.round1.util.Round1IntArrayUtil;
+import test.interop.whitemesa.round1.util.Round1IntegerUtil;
+import test.interop.whitemesa.round1.util.Round1StringArrayUtil;
+import test.interop.whitemesa.round1.util.Round1StringUtil;
+import test.interop.whitemesa.round1.util.Round1StructArrayUtil;
+import test.interop.whitemesa.round1.util.Round1StructUtil;
+import test.interop.whitemesa.round1.util.Round1VoidUtil;
+
+public class Round1InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    String url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+    String soapAction = "urn:soapinterop";
+    String resFilePath = "interop/whitemesa/round1/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    public void testEchoString() throws AxisFault {
+        util = new Round1StringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1StringUtilRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    public void testEchoVoid() throws AxisFault {
+        util = new Round1VoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1VoidUtilRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    public void testEchoStringArray() throws AxisFault {
+        util = new Round1StringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1StringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    public void testInteger() throws AxisFault {
+        util = new Round1IntegerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1IntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    public void testIntegerArray() throws AxisFault {
+        util = new Round1IntArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1IntArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    public void testEchoFloat() throws AxisFault {
+        util = new Round1FloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1FloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    public void testEchoFloatArray() throws AxisFault {
+        util = new Round1FloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1FloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    public void testEchoStruct() throws AxisFault {
+        util = new Round1StructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    public void testEchoStructArray() throws AxisFault {
+        util = new Round1StructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round1StructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/ESRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/ESRound2InteropTest.java
new file mode 100644
index 0000000..02cf4b1
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/ESRound2InteropTest.java
@@ -0,0 +1,561 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcBase64Util;
+import test.interop.whitemesa.round2.util.GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+/**
+ * Class ESRound2InteropTest
+ * To test interoperability of Axis2 clients vs EasySoap++ server
+ * WSDLs:-
+ * base   :- http://easysoap.sourceforge.net/interopA.wsdl
+ * Group b:- http://easysoap.sourceforge.net/interopB.wsdl
+ * Group c:- http://easysoap.sourceforge.net/interopC.wsdl
+ * 
+
+ */
+
+/**
+ * Some of the test cases that work on float values may fail since the endpoint seems to be sending
+ * approximated values for e.g.: 47.459999 as the echo of 47.46
+ */
+
+public class ESRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+	private static final Log log = LogFactory.getLog(ESRound2InteropTest.class);
+    
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseStringArrayRes.xml";
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseIntegerArrayRes.xml";
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        log.info("This may fail if the echoed float value is different");
+        
+    	url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        log.info("This may fail if the echoed float value is different");
+                
+    	url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseFloatArrayRes.xml";
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        log.info("This may fail if an echoed float value is different");
+        
+    	url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseStructRes.xml";
+        assertR2DefaultEchoStructResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        log.info("This may fail if an echoed float value is different");
+        
+    	url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseStructArrayRes.xml";
+        assertR2DefaultEchoStructArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESBaseBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://easysoap.sourceforge.net/cgi-bin/interopserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ESGroupcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/FrtrRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/FrtrRound2InteropTest.java
new file mode 100644
index 0000000..7a93316
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/FrtrRound2InteropTest.java
@@ -0,0 +1,278 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class FrtrRound2InteropTest
+ * To test Interoperability in Axis2 clients vs Frontier Server, Round 2
+ * WSDLs:-
+ * "base"  	http://www.whitemesa.com/interop/InteropTest.wsdl
+ *
+ * All Tests failed, since the service tag is missing in the given WSDL
+ */
+
+/**
+ * All tests are failing since :
+ * Service does not seems to be following the default wsdl even though it is claimed to be in the Whitemesa site.
+ */
+
+public class FrtrRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunBaseStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat()  throws AxisFault {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray()  throws AxisFault {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructArrayRes.xml";
+       compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault  {
+        url = "http://www.soapware.org/xmethodsInterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/GSRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/GSRound2InteropTest.java
new file mode 100644
index 0000000..f8147a8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/GSRound2InteropTest.java
@@ -0,0 +1,386 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+
+import java.io.File;
+
+/**
+ * class GSRound2InteropTest
+ * To test Interoperability Axis2 clients vs gSOAP Server, Round2
+ * WSDLs:-
+ * "base" 	 http://www.cs.fsu.edu/~engelen/interop2.wsdl
+ * "Group B" http://www.cs.fsu.edu/~engelen/interop2B.wsdl
+ * "Group C" http://www.cs.fsu.edu/~engelen/interop2C.wsdl
+ * Todo - The commented Tests are failing.
+ * IMO: the request and response SOAP envelopes are correct.
+ */
+
+/**
+ * Some of the test cases that work on float values may fail since the endpoint seems to be sending
+ * approximated values for e.g.: 47.459999 as the echo of 47.46
+ */
+
+public class GSRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+	private static final Log log = LogFactory.getLog(GSRound2InteropTest.class);
+    
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseStringArrayRes.xml";
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseIntegerArrayRes.xml";
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+
+        log.info("This may fail if the echoed float value is different");    
+
+    	url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        log.info("This may fail if an echoed float value is different");     
+
+    	url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseFloatArrayRes.xml";
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+        
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    /*public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        System.out.println(retEnv.toString());
+        tempPath = resFilePath + "GSBaseStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        
+        log.info("This may fail if an echoed float value is different");
+
+    	url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseStructArrayRes.xml";
+        assertR2DefaultEchoStructArrayResult(retEnv);
+     }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    /*public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+*/
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDate
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSBaseBooleanRes.xml";
+//        checkR2EchoBooleanResult(retEnv);
+        
+//        checkForValueInThePayload(retEnv,WhiteMesaConstants.ECHO_BOOLEAN);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    /*  public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+            url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+            soapAction = "http://soapinterop.org/";
+
+            util = new GroupbEchoStructAsSimpleTypesUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            tempPath = resFilePath + "GSGroupbStructAsSimpleTypesRes.xml";
+            compareXML(retEnv, tempPath);
+        }
+    */
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    /*public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    /*public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    /* public void testR2GBEchoNestedStruct() throws AxisFault {
+            url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+            soapAction = "http://soapinterop.org/";
+
+            util = new GroupbEchoNestedStructUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            tempPath = resFilePath + "GSGroupbNestedStructRes.xml";
+            compareXML(retEnv, tempPath);
+        }
+    */
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    /* public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    /*public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://www.cs.fsu.edu/~engelen/interop2C.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSGroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+*/
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/KSRoun2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/KSRoun2InteropTest.java
new file mode 100644
index 0000000..3fc2ef4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/KSRoun2InteropTest.java
@@ -0,0 +1,282 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class  KSRoun2InteropTest
+ * To test Interoperability Axis2 clients vs kSOAP Server, Round2
+ * WSDL:-
+ * "base"  	http://www.whitemesa.com/interop/kSOAP.wsdl
+ * Todo - All Tests fail. Is the Endpoint deprecated or removed ?.
+ */
+
+/**
+ * All tests are failing since the endpoint is giving a SOAP fault.
+ * 
+ */
+
+public class KSRoun2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+	private static final Log log = LogFactory.getLog(KSRoun2InteropTest.class);
+    
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunBaseStringArrayRes.xml";
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerArrayRes.xml";
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatArrayRes.xml";
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructRes.xml";
+        assertR2DefaultEchoStructResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructArrayRes.xml";
+        assertR2DefaultEchoStructArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://kissen.cs.uni-dortmund.de:8080/ksoapinterop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MSRemRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MSRemRound2InteropTest.java
new file mode 100644
index 0000000..06b6c25
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MSRemRound2InteropTest.java
@@ -0,0 +1,392 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class MSRemRound2InteropTest
+ * To test Interoperability Axis2 clients vs MS NET Remoting Server, Round2
+ * WSDLs:-
+ * "base"    http://www.mssoapinterop.org/remoting/ServiceA.soap?wsdl
+ * "Group B" http://www.mssoapinterop.org/remoting/ServiceB.soap?wsdl
+ * <p/>
+ * All Tests failed due to a server error. The endpoint might have removed or deprecated.
+ * Todo - Shall we remove this Test Case?
+ */
+
+/**
+ * EchoDate testcase is failing since the result is sent in a diferent date format
+ * request :2006-10-18T22:20:00-07:00
+ * response:2006-10-18T22:20:00.0000000-07:00
+ */
+
+public class MSRemRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+    
+	private static final Log log = LogFactory.getLog(MSRemRound2InteropTest.class);
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        try {
+			soapAction = "http://soapinterop.org/";
+
+			util = new Round2EchoStringclientUtil();
+			retEnv = client.sendMsg(util, url, soapAction);
+			tempPath = resFilePath + "MSRemBaseStringRes.xml";
+
+			assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING);
+		} catch (AxisFault e) {
+			e.printStackTrace();
+		}
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseStringArrayRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseIntegerRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseIntegerArrayRes.xml";
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseFloatRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseFloatArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseStructRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseStructArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseVoidRes.xml";
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseBase64Res.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BASE_64);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+
+
+        log.info("This may fail if the echoed date format is different");    
+
+    	url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseDateRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DATE);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseHexBinaryRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_HEX_BINARY);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseDecimalRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DECIMAL);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceA.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemBaseBooleanRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BOOLEAN);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceB.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceB.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceB.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceB.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org:80/Remoting/ServiceB.soap";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSRemGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MSaxmsRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MSaxmsRound2InteropTest.java
new file mode 100644
index 0000000..0b9fa04
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MSaxmsRound2InteropTest.java
@@ -0,0 +1,410 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.R2MSaxms2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class MSaxmsRound2InteropTest
+ * To test interoperability of Axis2 clients vs ASP.NET Web Services
+ * WSDLs:-
+ * "base"    http://www.mssoapinterop.org/asmx/simple.asmx?wsdl
+ * "Group B" http://www.mssoapinterop.org/asmx/simpleb.asmx?wsdl
+ * "Group C" http://mssoapinterop.org/asmx/header.asmx?wsdl
+ */
+
+/**
+ * EchoDate testcase is failing since the result is sent in a diferent date format
+ * request :2006-10-18T22:20:00-07:00
+ * response:2006-10-18T22:20:00.0000000-07:00
+ */
+
+public class MSaxmsRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+    
+	private static final Log log = LogFactory.getLog(MSaxmsRound2InteropTest.class);
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseStringRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseStringArrayRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseIntegerRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseIntegerArrayRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseFloatRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseFloatArrayRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseStructRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+ 
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseStructArrayRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+
+        log.info("This may fail if the echoed date format is different");    
+
+    	url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseDateRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DATE);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsBaseBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleb.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleb.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleb.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new R2MSaxms2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleb.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleb.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    /* public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/header.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MSaxmsGroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MStk2Round2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MStk2Round2InteropTest.java
new file mode 100644
index 0000000..6b3c4cd
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MStk2Round2InteropTest.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+
+import java.io.File;
+
+/**
+ * class  MStk2Round2InteropTest
+ * To test Interoperability Axis2 clients vs MS SOAP ToolKit 2.0 Server, Round2
+ * WSDLs:-
+ * Group b         http://mssoapinterop.org/stk/InteropB.wsdl
+ * group b(Typed)  http://mssoapinterop.org/stk/InteropBtyped.wsdl
+ * Group c         http://mssoapinterop.org/stk/InteropC.wsdl
+ */
+
+public class MStk2Round2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2Groupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B typed
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBTypedEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupbTypedStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBTypedEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupbTypedSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echo2DStringArray
+     */
+    public void testR2GBTypedEcho2DStringArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupbTyped2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echoNestedStruct
+     */
+    public void testR2GBTypedEchoNestedStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupbTypedNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echoNestedArray
+     */
+    public void testR2GBTypedEchoNestedArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupTypedbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/InteropC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk2GroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MStk3Round2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MStk3Round2InteropTest.java
new file mode 100644
index 0000000..be0a0d8
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/MStk3Round2InteropTest.java
@@ -0,0 +1,705 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class  MStk3Round2InteropTest
+ * To test Interoperability Axis2 clients vs MS SOAP ToolKit 3.0 Server, Round2
+ * WSDLs:-
+ * base            http://mssoapinterop.org/stkV3/Interop.wsdl
+ * base (Typed)    http://mssoapinterop.org/stkV3/InteropTyped.wsdl
+ * Group b         http://mssoapinterop.org/stkV3/InteropB.wsdl
+ * Group b (Typed) http://mssoapinterop.org/stkV3/InteropBtyped.wsdl
+ * Group c         http://mssoapinterop.org/stkV3/InteropC.wsdl
+ */
+
+/**
+ * Some of the test cases that work on float values may fail since the endpoint seems to be sending
+ * approximated values for e.g.: 45.7599983215332 as the echo of 45.76
+ */
+
+/**
+ * EchoDate testcase is failing since the result is sent in a diferent date format
+ * request :2006-10-18T22:20:00-07:00
+ * response:2006-10-19T05:20:00Z
+ */
+
+public class MStk3Round2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+    
+	private static final Log log = LogFactory.getLog(MStk3Round2InteropTest.class);
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseStringRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseStringArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseIntegerRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseIntegerArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseFloatRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseFloatArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseStructRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseStructArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseBase64Res.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BASE_64);
+}
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+
+        log.info("This may fail if the echoed date format is different");    
+
+    	url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseDateRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DATE);
+
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseHexBinaryRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_HEX_BINARY);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseDecimalRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DECIMAL);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/Interop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseBooleanRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BOOLEAN);
+
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoString
+     */
+    public void testR2BaseTypedEchoString() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3TypedBaseStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoStringArray
+     */
+    public void testR2BaseTypedEchoStringArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoInteger
+     */
+    public void testR2BaseTypedEchoInteger() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedIntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoIntegerArray
+     */
+    public void testR2BaseTypedEchoIntegerArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoFloat
+     */
+    public void testR2BaseTypedEchoFloat() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoFloatArray
+     */
+    public void testR2BaseTypedEchoFloatArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoStruct
+     */
+    public void testRBaseTypedEchoStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoStructArray
+     */
+    public void testR2BaseTypedEchoStructArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoVoid
+     */
+    public void testR2BaseTypedEchoVoid() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoBase64
+     */
+    public void testR2BaseTypedEchoBase64() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoBase64
+     */
+    public void testR2BaseTypedEchoDate() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedDateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoHexBinary
+     */
+    public void testR2BaseTypedEchoHexBinary() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoDecimal
+     */
+    public void testR2BaseTypedEchoDecimal() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedDecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base Typed
+     * operation echoBoolean
+     */
+    public void testR2BaseTypedEchoBoolean() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/InteropTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3BaseTypedBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3Groupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBTypedEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbTypedStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBTypedEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbTypedSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echo2DStringArray
+     */
+    public void testR2GBTypedEcho2DStringArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbTyped2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echoNestedStruct
+     */
+    public void testR2GBTypedEchoNestedStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbTypedNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B Typed
+     * operation echoNestedArray
+     */
+    public void testR2GBTypedEchoNestedArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/interopBTyped.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupbTypedNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://mssoapinterop.org/stk/InteropC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MStk3GroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/NusRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/NusRound2InteropTest.java
new file mode 100644
index 0000000..92d6eda
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/NusRound2InteropTest.java
@@ -0,0 +1,360 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class  NusRound2InteropTest
+ * To test Interoperability Axis2 clients vs NuSOAP Server, Round2
+ * WSDLs:-
+ * "base" 	  http://dietrich.ganx4.com/nusoap/testbed/round2_base.wsdl
+ * "Group B"  http://dietrich.ganx4.com/nusoap/testbed/round2_groupb.wsdl
+ * <p/>
+ * All tests fail
+ * <p/>
+ * In the returned envelope, the charset encoding in the declaration part (UTF-8) is different from the charset
+ * encoding in the XML (ISO-8859-1).
+ */
+public class NusRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        System.out.println("Returned Envelope    " + retEnv);
+        tempPath = resFilePath + "NusBaseStringRes.xml";
+
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseIntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseDateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseDecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_base_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusBaseBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_groupb_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_groupb_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+        
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_groupb_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_groupb_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://dietrich.ganx4.com/nusoap/testbed/round2_groupb_server.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "NusGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/PSRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/PSRound2InteropTest.java
new file mode 100644
index 0000000..2d996ec
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/PSRound2InteropTest.java
@@ -0,0 +1,551 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcBase64Util;
+import test.interop.whitemesa.round2.util.GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class PSRound2InteropTest
+ * To test Interoperability Axis2 clients vs PEAR SOAP Server, Round2
+ * WSDLs:-
+ * "base"     http://caraveo.com/soap_interop/interop.wsdl
+ * "Group B"  http://caraveo.com/soap_interop/interopB.wsdl
+ * <p/>
+ * Todo - All Tests fail
+ * The returned envelope doesn't contain a valid xml content.
+ */
+
+/**
+ * All test cases are failing since the server is not sending response
+ * messages.
+ */
+
+public class PSRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunBaseStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://www.caraveo.com/soap_interop/server_round2.php";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/RWRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/RWRound2InteropTest.java
new file mode 100644
index 0000000..83e6c61
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/RWRound2InteropTest.java
@@ -0,0 +1,567 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcBase64Util;
+import test.interop.whitemesa.round2.util.GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class  RWRound2InteropTest
+ * To test Interoperability Axis2 clients vs Rogue Wave Server, Round2
+ * WSDLs:-
+ * "base"     http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest
+ * "Group B"  http://soapinterop.roguewave.com:8013/interop2testB/InteropRound2TestB
+ * "Group C"  http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC
+ * <p/>
+ * Todo - Group C tests fail. Check the request.
+ */
+
+/**
+ * Following test cases are failing with the Fault: Couldn't find end tag
+ * testR2BaseEchoStringArray, testR2BaseEchoIntegerArray, testR2BaseEchoFloatArray ,
+ * testR2GBEcho2DStringArray
+ * 
+ */
+
+/**
+ * Test cases that work on float values may fail since the response value is in a different
+ * format. E.g:
+ * request :12.45
+ * response:1.245000e+01
+ */
+
+public class RWRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseStringArrayRes.xml";
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseIntegerArrayRes.xml";
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseFloatArrayRes.xml";
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseStructRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseStructArrayRes.xml";
+        assertR2DefaultEchoStructArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2base/InteropRound2BaseTest";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWBaseBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testB/InteropRound2TestB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testB/InteropRound2TestB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testB/InteropRound2TestB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testB/InteropRound2TestB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testB/InteropRound2TestB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+
+    //Todo - Group C tests fail
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcEchoStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcIntergerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcStringArrayRes.xml";
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcIntegerArrayRes.xml";
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcFloatArrayRes.xml";
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcStructRes.xml";
+        assertR2DefaultEchoStructResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcStructArrayRes.xml";
+        assertR2DefaultEchoStructArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://soapinterop.roguewave.com:8013/interop2testC/InteropRound2TestC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "RWGroupcBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4rRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4rRound2InteropTest.java
new file mode 100644
index 0000000..15fa447
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4rRound2InteropTest.java
@@ -0,0 +1,358 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class  S4rRound2InteropTest
+ * To test Interoperability Axis2 clients vs SOAP4R Server, Round2
+ * WSDLs:-
+ * "base"     http://www.jin.gr.jp/~nahi/Ruby/SOAP4R/SOAPBuildersInterop/SOAP4R_SOAPBuildersInteropTest_R2base.wsdl
+ * "Group B"  http://www.jin.gr.jp/~nahi/Ruby/SOAP4R/SOAPBuildersInterop/SOAP4R_SOAPBuildersInteropTest_R2GroupB.wsdl
+ */
+
+/**
+ * Test cases that work on float values may fail since the response value is in a different
+ * format.
+ */
+public class S4rRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+	private static final Log log = LogFactory.getLog(S4rRound2InteropTest.class);
+    
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseStringRes.xml";
+
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseStringArrayRes.xml";
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault  {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseIntegerArrayRes.xml";
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat()  throws AxisFault {
+
+        log.info("This may fail if the echoed float value is different");    
+
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray()  throws AxisFault {
+    	
+        log.info("This may fail if the echoed float values is different");    
+
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseFloatArrayRes.xml";
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault  {
+
+        log.info("This may fail if the echoed float value is different");    
+
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseStructRes.xml";
+        assertR2DefaultEchoStructResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault  {
+
+        log.info("This may fail if the echoed float value is different");    
+
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseStructArrayRes.xml";
+        assertR2DefaultEchoStructArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault  {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault  {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault  {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault  {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault  {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault  {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rBaseBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://dev.ctor.org/soapsrv";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4rGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4s4c2Round2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4s4c2Round2InteropTest.java
new file mode 100644
index 0000000..c11b496
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4s4c2Round2InteropTest.java
@@ -0,0 +1,601 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcBase64Util;
+import test.interop.whitemesa.round2.util.GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+/**
+ * class
+ * To test Interoperability Axis2 clients vs 4s4c 2.0 Server, Round2
+ * WSDLs:-
+ * "base"     http://soap.4s4c.com/ilab2/ilab.wsdl
+ * "Group B"  http://soap.4s4c.com/ilab2/ilab_b.wsdl
+ * "Group C"  http://soap.4s4c.com/ilab2/ilab_c.wsdl
+ * Todo - All tests failed giving a null pointer exception.
+ */
+
+
+
+/**
+ * Test cases that work on date values may fail since the response comes in
+ * a different format. E.g.:
+ * 
+ * request :2006-10-18T22:20:00-07:00
+ * response:2006-10-19T05:20:00Z
+ */
+
+/**
+ * Test cases that work on Hex Binary may fail since the response look different from
+ * the request
+ * 
+ * request :AAABBAAE
+ * response:qqu6rg==
+ */
+public class S4s4c2Round2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+    
+	private static final Log log = LogFactory.getLog(S4s4c2Round2InteropTest.class);
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoString";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStringRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoStringArray";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunBaseStringArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoInteger";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoIntegerArray";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat()  throws AxisFault {
+    	
+
+        log.info("This may fail if the echoed float format is different");    
+
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoFloat";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray()  throws AxisFault {
+    	
+        log.info("This may fail if the echoed float format is different");    
+
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoFloatArray";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault  {
+    	
+        log.info("This may fail if the echoed float format is different");    
+
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoStruct";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault  {
+    	
+        log.info("This may fail if the echoed float format is different");    
+
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoStructArray";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoVoid";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoBase64";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBase64Res.xml";
+        
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BASE_64);
+     }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDate
+     */
+    public void testR2BaseEchoDate() throws AxisFault  {
+
+        log.info("This may fail if the echoed date format is different");    
+
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "urn:interopLab#echoDate";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDateRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DATE);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseHexBinaryRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_HEX_BINARY);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDecimalRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DECIMAL);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBooleanRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BOOLEAN);
+   }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab2/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4s4cRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4s4cRound2InteropTest.java
new file mode 100644
index 0000000..522fc49
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/S4s4cRound2InteropTest.java
@@ -0,0 +1,385 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+/**
+ * class
+ * To test interoperability Axis2 clients vs 4s4c server
+ * WSDLs:-
+ * "base"     http://www.pocketsoap.com/services/ilab.wsdl
+ * "Group B"  http://www.pocketsoap.com/services/ilab_b.wsdl
+ */
+
+/**
+ * Test cases that work on Date values may fail since the response look different from
+ * the requst date. E.g:
+ * request :2006-10-18T22:20:00-07:00
+ * response:2006-10-19T05:20:00Z
+ */
+
+public class S4s4cRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    String url = "";
+    String soapAction = "";
+    String FS = System.getProperty("file.separator");
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+    
+	private static final Log log = LogFactory.getLog(S4s4cRound2InteropTest.class);
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseStringRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseStringArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseIntegerRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseIntegerArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat()  throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseFloatRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray()  throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseFloatArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseStructRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseStructArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseBase64Res.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BASE_64);
+        
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault  {
+    	
+        log.info("This may fail if the echoed date format is different");    
+
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseDateRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DATE);
+   }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseHexBinaryRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_HEX_BINARY);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseDecimalRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DECIMAL);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault  {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cBaseBooleanRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BOOLEAN);
+
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://soap.4s4c.com/ilab/soap.asp";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "S4s4cGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SLRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SLRound2InteropTest.java
new file mode 100644
index 0000000..be30da0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SLRound2InteropTest.java
@@ -0,0 +1,559 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcBase64Util;
+import test.interop.whitemesa.round2.util.GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class SLRound2InteropTest
+ * To test Interoperability Axis2 clients vs Soap:Lite Server, Round2
+ * WSDL:-
+ * "base"     http://services.soaplite.com/interop2.wsdl
+ * "Group B"  http://services.soaplite.com/InteropTestB.wsdl
+ * "Group C"  http://services.soaplite.com/InteropTestC.wsdl
+ * <p/>
+ */
+
+public class SLRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStringRes.xml";
+
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunBaseStringArrayRes.xml";
+
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerRes.xml";
+
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerArrayRes.xml";
+
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatRes.xml";
+
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatArrayRes.xml";
+
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructRes.xml";
+
+        assertR2DefaultEchoStructResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructArrayRes.xml";
+
+        assertR2DefaultEchoStructArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseVoidRes.xml";
+
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBase64Res.xml";
+
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDateRes.xml";
+
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseHexBinaryRes.xml";
+
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDecimalRes.xml";
+
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBooleanRes.xml";
+
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://services.soaplite.com/interop.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://services.soaplite.com/interopC.cgi";
+        soapAction = "\"http://soapinterop.org/\"";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SPJRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SPJRound2InteropTest.java
new file mode 100644
index 0000000..20cfcbf
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SPJRound2InteropTest.java
@@ -0,0 +1,393 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs Spheon JSOAP Server, Round2
+ * WSDLs:-
+ * "base"    http://soap.fmui.de/interop.wsdl
+ * "Group B" http://soap.fmui.de/interopb.wsdl
+ */
+
+/**
+ * test cases that contain date values may fail since the response format could be 
+ * different.
+ */
+
+/**
+ * test cases that contain hex binary values may fail since the response format could be 
+ * different.
+ */
+public class SPJRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    boolean success = false;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+    
+	private static final Log log = LogFactory.getLog(SPJRound2InteropTest.class);
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseStringRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseStringArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseIntegerRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseIntegerArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseFloatRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseFloatArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseStructRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseStructArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseBase64Res.xml";
+        
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BASE_64);
+        
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+
+        log.info("This may fail if the echoed date format is different");    
+
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseDateRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DATE);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+
+        log.info("This may fail if the echoed hex binary format is different");    
+
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseHexBinaryRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_HEX_BINARY);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseDecimalRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_DECIMAL);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJBaseBooleanRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_BOOLEAN);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://soap.fmui.de/RPC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SpJGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SSRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SSRound2InteropTest.java
new file mode 100644
index 0000000..231e229
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SSRound2InteropTest.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs SilverStream Server, Round2
+ * WSDL:-
+ * "base"  	http://www.xmethods.net/soapbuilders/silverstream/InteropTest.wsdl
+ * <p/>
+ * All tests failed since no service tag is available in the endpoint WSDL
+ */
+
+/**
+ * All the test cases fails since the endpoint seems to be unavailable
+ */
+public class SSRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunBaseStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://explorer.ne.mediaone.net/app/interop/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/ASPNetRound2Soap12Test.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/ASPNetRound2Soap12Test.java
new file mode 100644
index 0000000..2f7f9fc
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/ASPNetRound2Soap12Test.java
@@ -0,0 +1,371 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.Soap12;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12Echo2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupcSoap12VoidUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2SOAP12EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoHexBinaryUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoVoidClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12IntegerUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12StringArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12StringUtil;
+
+import java.io.File;
+
+//import test.interop.whitemesa.round2.util.soap12
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs sun Server, Round2
+ * WSDLs:-
+ * "base"     http://soapinterop.java.sun.com/round2/base?WSDL
+ * "Group B"  http://soapinterop.java.sun.com/round2/groupb?WSDL
+ * "Group C"  http://soapinterop.java.sun.com/round2/groupc?WSDL
+ */
+
+public class ASPNetRound2Soap12Test extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/SOAP12/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12StringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_StringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12StringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_StringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12IntegerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_IntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2SOAP12EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_IntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_FloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_FloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_StructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_VoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_Base64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_DateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_HexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_DecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simple.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2_S12_BooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleB.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2Gb_S12_StructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleB.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2Gb_S12_SimpleTypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleB.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12Echo2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2Gb_S12_2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleB.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2Gb_S12_NestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/simpleB.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2Gb_S12_NestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://www.mssoapinterop.org/asmx/header.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcSoap12VoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "ASPNetR2Gc_S12_VoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/GSoapRound2Soap12InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/GSoapRound2Soap12InteropTest.java
new file mode 100644
index 0000000..44d1081
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/GSoapRound2Soap12InteropTest.java
@@ -0,0 +1,362 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.Soap12;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12Echo2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2SOAP12EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoHexBinaryUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoVoidClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12IntegerUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12StringArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12StringUtil;
+
+import java.io.File;
+
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs sun Server, Round2
+ * WSDLs:-
+ * "base"     http://soapinterop.java.sun.com/round2/base?WSDL
+ * "Group B"  http://soapinterop.java.sun.com/round2/groupb?WSDL
+ * "Group C"  http://soapinterop.java.sun.com/round2/groupc?WSDL
+ * <p/>
+ * Todo - Some test cases fail.
+ */
+
+public class GSoapRound2Soap12InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/SOAP12/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12StringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_StringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12StringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_StringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12IntegerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_IntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2SOAP12EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_IntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_FloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_FloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    //Todo : This test fails due to Axis2 Client Error
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_StructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    //Todo : This test fails due to Axis2 Client Error
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_VoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_Base64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_DateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_HexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_DecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2_S12_BooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    //Todo : This test fails due to Axis2 Client Error
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2Gb_S12_StructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    //Todo : This test fails due to Axis2 Client Error
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2Gb_S12_SimpleTypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12Echo2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2Gb_S12_2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    //Todo : This test fails due to Axis2 Client Error
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2Gb_S12_NestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    //Todo : This test fails due to Axis2 Client Error
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://websrv.cs.fsu.edu/~engelen/interop2B.cgi";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GSoapR2Gb_S12_NestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/WMRound2Soap12InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/WMRound2Soap12InteropTest.java
new file mode 100644
index 0000000..f4d43e0
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/Soap12/WMRound2Soap12InteropTest.java
@@ -0,0 +1,544 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.Soap12;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12Echo2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.soap12.GroupbSoap12EchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2SOAP12EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoHexBinaryUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12EchoVoidClientUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12IntegerUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12StringArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.Round2Soap12StringUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Saop12GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcBase64Util;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcStructUtil;
+import test.interop.whitemesa.round2.util.soap12.WMRound2Soap12GroupcVoidUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs sun Server, Round2
+ * WSDLs:-
+ * "base"     http://soapinterop.java.sun.com/round2/base?WSDL
+ * "Group B"  http://soapinterop.java.sun.com/round2/groupb?WSDL
+ * "Group C"  http://soapinterop.java.sun.com/round2/groupc?WSDL
+ */
+
+public class WMRound2Soap12InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/SOAP12/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12StringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_StringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12StringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_StringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12IntegerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_IntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2SOAP12EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_IntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_FloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_FloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_StructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_VoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_Base64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_DateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_HexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_DecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2Soap12EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2_S12_BooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2Gb_S12_StructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2Gb_S12_SimpleTypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12Echo2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2Gb_S12_2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2Gb_S12_NestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbSoap12EchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMR2Gb_S12_NestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Saop12GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r2/groupC";
+        soapAction = "http://soapinterop.org/";
+
+        util = new WMRound2Soap12GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMRound2Soap12GroupcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SqlDataRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SqlDataRound2InteropTest.java
new file mode 100644
index 0000000..f02b42a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SqlDataRound2InteropTest.java
@@ -0,0 +1,563 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcBase64Util;
+import test.interop.whitemesa.round2.util.GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs SQLData SOAP Server, Round2
+ * WSDLs:-
+ * "base"     http://soapclient.com/interop/sqldatainterop.wsdl
+ * "GroupB"   http://soapclient.com/interop/InteropB.wsdl
+ * "Group C"  http://soapclient.com/interop/interopC.wsdl
+ */
+
+public class SqlDataRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseStringArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseIntegerArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+   }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseFloatArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseStructRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseStructArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+         url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://soapclient.com/interop/sqldatainterop.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataBaseBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://soapclient.com/interop/InteropB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://soapclient.com/interop/InteropB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://soapclient.com/interop/InteropB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://soapclient.com/interop/InteropB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://soapclient.com/interop/InteropB.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://soapclient.com/interop/interopC.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SqlDataGroupcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SunRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SunRound2InteropTest.java
new file mode 100644
index 0000000..2745af4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/SunRound2InteropTest.java
@@ -0,0 +1,575 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcBase64Util;
+import test.interop.whitemesa.round2.util.GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs sun Server, Round2
+ * WSDLs:-
+ * "base"     http://soapinterop.java.sun.com/round2/base?WSDL
+ * "Group B"  http://soapinterop.java.sun.com/round2/groupb?WSDL
+ * "Group C"  http://soapinterop.java.sun.com/round2/groupc?WSDL
+ */
+
+/**
+ * Test cases that work on date values may fail since the response
+ * date format may be different from the request date format.
+ */
+
+public class SunRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+	private static final Log log = LogFactory.getLog(SunRound2InteropTest.class);
+    
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunBaseStringArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+     }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+
+        log.info("This may fail if the echoed date format is different");    
+
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/base";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupb";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupb";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupb";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupb2DStringArrayRes.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupb";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupb";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round2/groupc";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/VWRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/VWRound2InteropTest.java
new file mode 100644
index 0000000..f145f29
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/VWRound2InteropTest.java
@@ -0,0 +1,357 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs VW OpentalkSoap 1.0 Server, Round2
+ * WSDLs:-
+ * "base"     http://www.cincomsmalltalk.com:8080/CincomSmalltalkWiki/DOWNLOAD/WebServices/vwInteropSchema.wsdl
+ * "Group B"  http://www.cincomsmalltalk.com:8080/CincomSmalltalkWiki/DOWNLOAD/WebServices/vwInteropR2GroupB.wsdl
+ * <p/>
+ * 
+ */
+
+/**
+ * verify the availability of this endpoint
+ */ 
+public class VWRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunBaseStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseDecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/soap/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunBaseBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/r2groupb/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/r2groupb/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/r2groupb/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/r2groupb/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://www.cincomsmalltalk.com/r2groupb/interop";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WFRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WFRound2InteropTest.java
new file mode 100644
index 0000000..2c45124
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WFRound2InteropTest.java
@@ -0,0 +1,342 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * Class  WFRound2InteropTest
+ * To test the interoperability with Wingfoot SOAP Server, Soapbuilders lab Round 2 tests
+ * WSDLs:-
+ * "base"     http://www.wingfoot.com/interop/wingfootBase.wsdl
+ * "Group B"  http://www.wingfoot.com/interop/wingfootGroupB.wsdl
+ * Todo - Endpoint is confusing.
+ * 
+ */
+
+/**
+ * Endpoint seems to be unavailable.
+ * 
+ */
+public class WFRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseIntegerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseDateRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseDecimalRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFBaseBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://www.wingfoot.com/servlet/wserver";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WFGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WMRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WMRound2InteropTest.java
new file mode 100644
index 0000000..824725a
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WMRound2InteropTest.java
@@ -0,0 +1,568 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.GroupcBase64Util;
+import test.interop.whitemesa.round2.util.GroupcBooleanUtil;
+import test.interop.whitemesa.round2.util.GroupcEchoStringUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcFloatUtil;
+import test.interop.whitemesa.round2.util.GroupcHexBinaryUtil;
+import test.interop.whitemesa.round2.util.GroupcIntegerArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcIntergerUtil;
+import test.interop.whitemesa.round2.util.GroupcStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructArrayUtil;
+import test.interop.whitemesa.round2.util.GroupcStructUtil;
+import test.interop.whitemesa.round2.util.GroupcVoidUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test interoperability Axis2 clients vs Whitemesa server
+ * WSDLs:-
+ * "base"     http://www.whitemesa.net/wsdl/std/interop.wsdl
+ * "Group B"  http://www.whitemesa.net/wsdl/std/interopB.wsdl
+ * "Group C"  http://www.whitemesa.net/wsdl/std/echoheadersvc.wsdl
+ */
+
+/**
+ * Test cases that work on date values may fail since the response date format
+ * could be different.
+ * 
+ */
+public class WMRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+	private static final Log log = LogFactory.getLog(WMRound2InteropTest.class);
+    
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseStringArrayRes.xml";
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseIntegerArrayRes.xml";
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseFloatArrayRes.xml";
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseStructRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+ 
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseStructArrayRes.xml";
+        assertR2DefaultEchoStructArrayResult(retEnv);
+
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+
+        log.info("This may fail if the echoed date format is different");    
+
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+   }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMBaseBooleanRes.xml";
+        String booleanResult = "1";
+        assertValueIsInThePayload(retEnv,booleanResult);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/groupB";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    public void testR2GCEchoString() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    public void testR2GCEchoStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/std/echohdr";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WaspRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WaspRound2InteropTest.java
new file mode 100644
index 0000000..8d22bc4
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/WaspRound2InteropTest.java
@@ -0,0 +1,538 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round2.util.GroupbEcho2DStringArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedArrayUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoNestedStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoSimpleTypesAsStructUtil;
+import test.interop.whitemesa.round2.util.GroupbEchoStructAsSimpleTypesUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDateClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test Interoperability Axis2 clients Vs WASP for Java Server, Round2
+ * WSDLs:-
+ * "base"     http://soap.systinet.net/ssj/InteropService/wsdl
+ * "Group B"  http://soap.systinet.net/ssj/InteropBService/wsdl
+ * "Group C"  http://soap.systinet.net/ssj/InteropCService/wsdl
+ * Todo - Group C tests fail giving a "Method Not Found" exception.
+ */
+
+public class WaspRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseStringArrayRes.xml";
+        assertR2DefaultEchoStringArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseIntegerArrayRes.xml";
+        assertR2DefaultEchoIntegerArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseFloatArrayRes.xml";
+        assertR2DefaultEchoFloatArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseStructRes.xml";
+
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseStructArrayRes.xml";
+        assertR2DefaultEchoStructArrayResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDate
+     */
+    public void testR2BaseEchoDate() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseDateRes.xml";
+        assertR2DefaultEchoDateResult(retEnv);
+    }
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspBaseBooleanRes.xml";
+        assertR2DefaultEchoBooleanResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoStructAsSimpleTypes
+     */
+    public void testR2GBEchoStructAsSimpleTypes() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropBService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoStructAsSimpleTypesUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspGroupbStructAsSimpleTypesRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoSimpleTypesAsStruct
+     */
+    public void testR2GBEchoSimpleTypesAsStruct() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropBService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoSimpleTypesAsStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspGroupbSimpletypesAsStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echo2DStringArray
+     */
+    public void testR2GBEcho2DStringArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropBService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEcho2DStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspGroupb2DStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedStruct
+     */
+    public void testR2GBEchoNestedStruct() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropBService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspGroupbNestedStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group B
+     * operation echoNestedArray
+     */
+    public void testR2GBEchoNestedArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropBService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupbEchoNestedArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspGroupbNestedArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round2
+     * Group C
+     * operation echoString
+     */
+    /*public void testR2GCEchoString() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoInterger
+     */
+    /*public void testR2GCEchoInterger() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntergerUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntergerRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStringArray
+     */
+    /*public void testR2GCEchoStringArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoIntergerArray
+     */
+    /*public void testR2GCEchoIntergerArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcIntegerArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcIntegerArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+*/
+    /**
+     * Round2
+     * Group C
+     * operation echoFloat
+     */
+    /* public void testR2GCEchoFloat() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoFloatArray
+     */
+    /*public void testR2GCEchoFloatArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcFloatArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcFloatArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoStruct
+     */
+    /* public void testR2GCEchoStruct() throws AxisFault {
+            url = "http://soap.systinet.net:6060/InteropCService/";
+            soapAction = "http://soapinterop.org/";
+
+            util = new GroupcStructUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            tempPath = resFilePath + "GroupcStructRes.xml";
+            compareXML(retEnv, tempPath);
+        }
+    */
+    /**
+     * Round2
+     * Group C
+     * operation echoStructArray
+     */
+    /*public void testR2GCEchoStructArray() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcStructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcStructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+*/
+    /**
+     * Round2
+     * Group C
+     * operation echoVoid
+     */
+    /*public void testR2GCEchoVoid() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WaspGroupcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBase64
+     */
+    /*public void testR2GCEchoBase64() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBase64Util();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBase64Res.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoHexBinary
+     */
+    /*public void testR2GCEchoHexBinary() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcHexBinaryUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcHexBinaryRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+    /**
+     * Round2
+     * Group C
+     * operation echoBoolean
+     */
+    /*public void testR2GCEchoBoolean() throws AxisFault {
+        url = "http://soap.systinet.net:6060/InteropCService/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GroupcBooleanUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GroupcBooleanRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+*/
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/XSRound2InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/XSRound2InteropTest.java
new file mode 100644
index 0000000..8219247
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round2/XSRound2InteropTest.java
@@ -0,0 +1,292 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.WhiteMesaConstants;
+import test.interop.whitemesa.round2.util.Round2EchoBase64ClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoBooleanClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoDecimalClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoFloatClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoHexBinaryClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerArrayclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoIntegerClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStringclientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructArrayClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoStructClientUtil;
+import test.interop.whitemesa.round2.util.Round2EchoVoidClientUtil;
+
+import java.io.File;
+
+/**
+ * class
+ * To test Interoperability Axis2 clients vs XSOAP 1.2 Server, Round2
+ * WSDLs:-
+ * "base"  	http://www.extreme.indiana.edu/~aslom/XSOAP_1_2_SoapRMI.wsdl
+ * Todo - The test case "echoDate" fails due to an error with the date format.
+ * But IMO: the date format is correct.
+ */
+
+public class XSRound2InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    File file = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round2/";
+    String tempPath = "";
+    SunClientUtil util;
+    SunClient client = new SunClient();
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoString
+     */
+    public void testR2BaseEchoString() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseStringRes.xml";
+        assertR2DefaultEchoStringResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStringArray
+     */
+    public void testR2BaseEchoStringArray() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStringArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseStringArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRING_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoInteger
+     */
+    public void testR2BaseEchoInteger() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseIntegerRes.xml";
+        assertR2DefaultEchoIntegerResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoIntegerArray
+     */
+    public void testR2BaseEchoIntegerArray() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoIntegerArrayclientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseIntegerArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloat
+     */
+    public void testR2BaseEchoFloat() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseFloatRes.xml";
+        assertR2DefaultEchoFloatResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoFloatArray
+     */
+    public void testR2BaseEchoFloatArray() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoFloatArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseFloatArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStruct
+     */
+    public void testRBaseEchoStruct() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "";
+
+        util = new Round2EchoStructClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseStructRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_INT);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_STRING);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoStructArray
+     */
+    public void testR2BaseEchoStructArray() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoStructArrayClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseStructArrayRes.xml";
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+        assertValueIsInThePayload(retEnv,WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);  
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoVoid
+     */
+    public void testR2BaseEchoVoid() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoVoidClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseVoidRes.xml";
+        assertR2DefaultEchoVoidResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBase64
+     */
+    public void testR2BaseEchoBase64() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBase64ClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseBase64Res.xml";
+        assertR2DefaultEchoBase64Result(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDate
+     * todo - this test failed, have to check the dateTime format that remote server is asking
+     */
+    /*public void testR2BaseEchoDate() throws AxisFault {
+        //url = "http://www.extreme.indiana.edu:1568/";
+        url = "http://127.0.0.1:8080/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDateClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseDateRes.xml";
+        compareXML(retEnv, tempPath);
+    }*/
+
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoHexBinary
+     */
+    public void testR2BaseEchoHexBinary() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoHexBinaryClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseHexBinaryRes.xml";
+        assertR2DefaultEchoHexBinaryResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoDecimal
+     */
+    public void testR2BaseEchoDecimal() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoDecimalClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseDecimalRes.xml";
+        assertR2DefaultEchoDecimalResult(retEnv);
+    }
+
+    /**
+     * Round2
+     * Group Base
+     * operation echoBoolean
+     */
+    public void testR2BaseEchoBoolean() throws AxisFault {
+        url = "http://www.extreme.indiana.edu:1568/";
+        soapAction = "http://soapinterop.org/";
+
+        util = new Round2EchoBooleanClientUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "XSBaseBooleanRes.xml";
+        String booleanResult = "1"; //this gives 1 as the response for 'true'.
+        assertValueIsInThePayload(retEnv,booleanResult);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/MsAsmxRound3InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/MsAsmxRound3InteropTest.java
new file mode 100644
index 0000000..5d2da76
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/MsAsmxRound3InteropTest.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round3.util.GDImport1EchoStringUtil;
+import test.interop.whitemesa.round3.util.GDImport2EchoStructUtil;
+import test.interop.whitemesa.round3.util.GDImport3StructArrayUtil;
+import test.interop.whitemesa.round3.util.GDRpcStringArrayUtil;
+import test.interop.whitemesa.round3.util.GDRpcStringUtil;
+import test.interop.whitemesa.round3.util.GDRpcStructUtil;
+import test.interop.whitemesa.round3.util.GDRpcVoidUtil;
+import test.interop.whitemesa.round3.util.GEListUtil;
+import test.interop.whitemesa.round3.util.GFHeaderTestUtil;
+import test.interop.whitemesa.round3.util.Round3EmptySAEchoStringUtil;
+
+/**
+ * class MsAsmxRound3InteropTest
+ * To test interoperability in Axis2 Clients Vs ASP NET Server, Round 3
+ */
+
+public class MsAsmxRound3InteropTest extends WhiteMesaIneterop {
+
+    SOAPEnvelope retEnv = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round3/";
+    String tempPath = "";
+    SunClientUtil util = null;
+    SunClient client = new SunClient();
+
+    /**
+     * Round 3
+     * Group EmptySA
+     * operation EchoString
+     */
+    public void testR3EsaEchoString() throws AxisFault {
+
+        url = "http://mssoapinterop.org/asmx/wsdl/emptysa.asmx";
+        soapAction = "";
+
+        util = new Round3EmptySAEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxR3EmptySAEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import1
+     * operation EchoString
+     */
+    public void testR3GDEchoString() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/import1.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport1EchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGDImport1StringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import2
+     * operation EchoStruct
+     */
+    public void testR3GDEchoStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/import2.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport2EchoStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGDImport2StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import3
+     * operation EchoStruct
+     */
+    public void testR3GDI3EchoStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/import3.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport2EchoStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGDImport3StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import3
+     * operation EchoStructArray
+     */
+    public void testR3GDI3EchoStructArray() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/import3.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport3StructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGDImport3StructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service rpcencoded
+     * operation EchoString
+     */
+    public void testR3GDI3EchoString() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/WSDLInteropTestRpcEncService.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGDRpcStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service rpcencoded
+     * operation EchoStringArray
+     */
+    public void testR3GDI3EchoStringArray() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/WSDLInteropTestRpcEncService.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGDRpcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service Rpcencoded
+     * operation EchoStruct
+     */
+    public void testR3GDRpcEchoStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/WSDLInteropTestRpcEncService.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGDRpcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service Rpcencoded
+     * operation EchoVoid
+     */
+    public void testR3GDRpcEchoVoid() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/WSDLInteropTestRpcEncService.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGDRpcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round 3
+     * Group E
+     * Service List
+     * operation echoLinkedList
+     */
+    public void testR3GEEchoList() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/WSDLInteropTestListService.asmx";
+        soapAction = "";
+
+        util = new GEListUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsAsmxGEListRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group F
+     * Service Headers
+     * operation echoString
+     */
+    public void testR3GFEchoString() throws AxisFault {
+        url = "http://mssoapinterop.org/asmx/wsdl/InteropTestHeaders.asmx";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GFHeaderTestUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GFHeaderTestRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/MsStkv3Round3InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/MsStkv3Round3InteropTest.java
new file mode 100644
index 0000000..4618113
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/MsStkv3Round3InteropTest.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round3.util.GDImport1EchoStringUtil;
+import test.interop.whitemesa.round3.util.GDImport2EchoStructUtil;
+import test.interop.whitemesa.round3.util.GDImport3StructArrayUtil;
+import test.interop.whitemesa.round3.util.GDRpcStringArrayUtil;
+import test.interop.whitemesa.round3.util.GDRpcStringUtil;
+import test.interop.whitemesa.round3.util.GDRpcStructUtil;
+import test.interop.whitemesa.round3.util.GDRpcVoidUtil;
+import test.interop.whitemesa.round3.util.GELinkedListUtil;
+import test.interop.whitemesa.round3.util.Round3EmptySAEchoStringUtil;
+
+/**
+ * class MsStkv3Round3InteropTest
+ * To test interoperability in Axis2 Clients Vs MS STK v3.0 Server, Round 3
+ *
+ */
+
+public class MsStkv3Round3InteropTest extends WhiteMesaIneterop {
+
+    SunClient client = new SunClient();
+    SOAPEnvelope retEnv = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round3/";
+    String tempPath = "";
+    SunClientUtil util = null;
+
+    /**
+     * Round 3
+     * Group EmptySA
+     * operation EchoString
+     */
+    public void testR3EsaEchoString() throws AxisFault {
+
+        url = "http://mssoapinterop.org/stkV3/wsdl/EmptySA.wsdl";
+        soapAction = "";
+
+        util = new Round3EmptySAEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3R3EsaEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import1
+     * operation EchoString
+     */
+    public void testR3GDEchoString() throws AxisFault {
+        url = "http://mssoapinterop.org/stkv3/wsdl/import1.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport1EchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GDImport1StringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import2
+     * operation EchoStruct
+     */
+    public void testR3GDEchoStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/wsdl/import2.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport2EchoStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GDImport2StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import3
+     * operation EchoStruct
+     */
+    public void testR3GDI3EchoStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/wsdl/import3.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport2EchoStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GDImport3StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import3
+     * operation EchoStructArray
+     */
+    public void testR3GDI3EchoStructArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkV3/wsdl/import3.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport3StructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GDImport3StructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service rpcencoded
+     * operation EchoString
+     */
+    public void testR3GDI3EchoString() throws AxisFault {
+        url = "http://mssoapinterop.org/stkv3/wsdl/interopTestRpcEnc.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GDRpcStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service rpcencoded
+     * operation EchoStringArray
+     */
+    public void testR3GDI3EchoStringArray() throws AxisFault {
+        url = "http://mssoapinterop.org/stkv3/wsdl/interopTestRpcEnc.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GDRpcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service Rpcencoded
+     * operation EchoStruct
+     */
+    public void testR3GDRpcEchoStruct() throws AxisFault {
+        url = "http://mssoapinterop.org/stkv3/wsdl/interopTestRpcEnc.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GDRpcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service Rpcencoded
+     * operation EchoVoid
+     */
+    public void testR3GDRpcEchoVoid() throws AxisFault {
+        url = "http://mssoapinterop.org/stkv3/wsdl/interopTestRpcEnc.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GDRpcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group E
+     * Service Rpcencoded
+     * operation EchoString
+     */
+    public void testR3GERpcEchoString() throws AxisFault {
+        url = "http://mssoapinterop.org/stkv3/wsdl/interopTestRpcEnc.wsdl";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GERpcStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round 3
+     * Group E
+     * Service List
+     * operation echoLinkedList
+     */
+    public void testR3GEEchoList() throws AxisFault {
+        url = "http://mssoapinterop.org/stkv3/wsdl/interopTestList.wsdl";
+        soapAction = "";
+
+        util = new GELinkedListUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "MsStkv3GEListRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/SunRound3InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/SunRound3InteropTest.java
new file mode 100644
index 0000000..3131811
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/SunRound3InteropTest.java
@@ -0,0 +1,290 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round3.util.GDImport1EchoStringUtil;
+import test.interop.whitemesa.round3.util.GDImport2EchoStructUtil;
+import test.interop.whitemesa.round3.util.GDImport3StructArrayUtil;
+import test.interop.whitemesa.round3.util.GDRpcStringArrayUtil;
+import test.interop.whitemesa.round3.util.GDRpcStringUtil;
+import test.interop.whitemesa.round3.util.GDRpcStructUtil;
+import test.interop.whitemesa.round3.util.GDRpcVoidUtil;
+import test.interop.whitemesa.round3.util.GEListUtil;
+import test.interop.whitemesa.round3.util.GFHeaderTestUtil;
+import test.interop.whitemesa.round3.util.Round3EmptySAEchoStringUtil;
+
+/**
+ * class SunRound3InteropTest
+ * To test interoperability in Axis2 Clients Vs ASP NET Server, Round 3
+ */
+
+public class SunRound3InteropTest extends WhiteMesaIneterop {
+
+    SunClient client = new SunClient();
+    SOAPEnvelope retEnv = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round3/";
+    String tempPath = "";
+    SunClientUtil util = null;
+
+    /**
+     * Round 3
+     * Group EmptySA
+     * operation EchoString
+     */
+    public void testR3EsaEchoString() throws AxisFault {
+
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/emptysa";
+        soapAction = "";
+
+        util = new Round3EmptySAEchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "Round3EmptySAEchoStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import1
+     * operation EchoString
+     */
+    public void testR3GDEchoString() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/import1";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport1EchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGDImport1StringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import2
+     * operation EchoStruct
+     */
+    public void testR3GDEchoStruct() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/import2";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport2EchoStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGDImport2StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import3
+     * operation EchoStruct
+     */
+    public void testR3GDI3EchoStruct() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/import3";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport2EchoStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGDImport3StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import3
+     * operation EchoStructArray
+     */
+    public void testR3GDI3EchoStructArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/import3";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport3StructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGDImport3StructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service rpcencoded
+     * operation EchoString
+     */
+    public void testR3GDI3EchoString() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/rpcencoded";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGDRpcStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service rpcencoded
+     * operation EchoStringArray
+     */
+    public void testR3GDI3EchoStringArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/rpcencoded";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGDRpcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service Rpcencoded
+     * operation EchoStruct
+     */
+    public void testR3GDRpcEchoStruct() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/rpcencoded";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGDRpcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service Rpcencoded
+     * operation EchoVoid
+     */
+    public void testR3GDRpcEchoVoid() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupd/rpcencoded";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "sunGDRpcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group E
+     * Service Rpcencoded
+     * operation EchoString
+     */
+    public void testR3GERpcEchoString() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupe/rpcencoded";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunGERpcStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group E
+     * Service Rpcencoded
+     * operation EchoStringArray
+     */
+    public void testR3GERpcEchoStringArray() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupe/rpcencoded";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunGERpcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group E
+     * Service Rpcencoded
+     * operation EchoStruct
+     */
+    public void testR3GERpcEchoStruct() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupe/rpcencoded";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunGERpcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+
+    /**
+     * Round 3
+     * Group E
+     * Service Rpcencoded
+     * operation EchoVoid
+     */
+    public void testR3GERpcEchoVoid() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupe/rpcencoded";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDRpcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunGERpcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group E
+     * Service List
+     * operation echoLinkedList
+     */
+    public void testR3GEEchoList() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupe/list";
+        soapAction = "";
+
+        util = new GEListUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "SunGEListRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group F
+     * Service Headers
+     * operation echoString
+     */
+    public void testR3GFEchoString() throws AxisFault {
+        url = "http://soapinterop.java.sun.com:80/round3/groupf/headers";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GFHeaderTestUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "GFHeaderTestRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/WMRound3InteropTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/WMRound3InteropTest.java
new file mode 100644
index 0000000..5ee6823
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round3/WMRound3InteropTest.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round3.util.GDImport1EchoStringUtil;
+import test.interop.whitemesa.round3.util.GDImport2EchoStructUtil;
+import test.interop.whitemesa.round3.util.GDImport3StructArrayUtil;
+import test.interop.whitemesa.round3.util.GDRpcStringArrayUtil;
+import test.interop.whitemesa.round3.util.GDRpcStringUtil;
+import test.interop.whitemesa.round3.util.GDRpcStructUtil;
+import test.interop.whitemesa.round3.util.GDRpcVoidUtil;
+
+/**
+ * class MsAsmxRound3InteropTest
+ * To test interoperability in Axis2 Clients Vs White Mesa Server, Round 3 *
+ */
+public class WMRound3InteropTest extends WhiteMesaIneterop {
+
+    SunClient client = new SunClient();
+    SOAPEnvelope retEnv = null;
+    String url = "";
+    String soapAction = "";
+    String resFilePath = "interop/whitemesa/round3/";
+    String tempPath = "";
+    SunClientUtil util = null;
+
+    /**
+     * Round 3
+     * Group D
+     * Service import1
+     * operation EchoString
+     */
+    public void testR3GDEchoString() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r3/import1";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport1EchoStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGDImport1StringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import2
+     * operation EchoStruct
+     */
+    public void testR3GDEchoStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r3/import2";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport2EchoStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGDImport2StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import3
+     * operation EchoStruct
+     */
+    public void testR3GDI3EchoStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r3/import3";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport2EchoStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGDImport3StructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service import3
+     * operation EchoStructArray
+     */
+    public void testR3GDI3EchoStructArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r3/import3";
+        soapAction = "http://soapinterop.org/";
+
+        util = new GDImport3StructArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGDImport3StructArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service rpcencoded
+     * operation EchoString
+     */
+    public void testR3GDRpcEchoString() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r3/rpcEnc";
+        soapAction = "";
+
+        util = new GDRpcStringUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGDRpcStringRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service rpcencoded
+     * operation EchoStringArray
+     */
+    public void testR3GDRpcEchoStringArray() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r3/rpcEnc";
+        soapAction = "";
+
+        util = new GDRpcStringArrayUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGDRpcStringArrayRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service Rpcencoded
+     * operation EchoStruct
+     */
+    public void testR3GDRpcEchoStruct() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r3/rpcEnc";
+        soapAction = "";
+
+        util = new GDRpcStructUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGDRpcStructRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+
+    /**
+     * Round 3
+     * Group D
+     * Service Rpcencoded
+     * operation EchoVoid
+     */
+    public void testR3GDRpcEchoVoid() throws AxisFault {
+        url = "http://www.whitemesa.net/interop/r3/rpcEnc";
+        soapAction = "";
+
+        util = new GDRpcVoidUtil();
+        retEnv = client.sendMsg(util, url, soapAction);
+        tempPath = resFilePath + "WMGDRpcVoidRes.xml";
+        compareXML(retEnv, tempPath);
+    }
+}
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round4/complex/WhitemesaR4ComplexTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round4/complex/WhitemesaR4ComplexTest.java
new file mode 100644
index 0000000..79e116c
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round4/complex/WhitemesaR4ComplexTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.complex;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round4.complex.utils.EchoBaseStructFaultClientutil;
+import test.interop.whitemesa.round4.complex.utils.EchoExtendedStructFaultClientUtil;
+import test.interop.whitemesa.round4.complex.utils.EchoMultipleFaults1ClientUtil;
+import test.interop.whitemesa.round4.complex.utils.EchoMultipleFaults2ClientUtil;
+import test.interop.whitemesa.round4.complex.utils.EchoSOAPStructFaultClientUtil;
+
+/**
+ * Class WhitemesaR4ComplexTest
+ * Group H - complex-rpc-encoded
+ * WSDL:-
+ * http://soapinterop.java.sun.com/round4/grouph/complexrpcenc?WSDL
+ */
+
+public class WhitemesaR4ComplexTest extends WhiteMesaIneterop {
+    SunClient client = new SunClient();
+    SOAPEnvelope retEnv;
+    SunClientUtil util = null;
+    String soapAction = "";
+    String url = "http://soapinterop.java.sun.com:80/round4/grouph/complexrpcenc";
+
+    //echoSoapStructFault
+    public void testSoapStructFault() {
+        try {
+            util = new EchoSOAPStructFaultClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+
+    //echoBaseSoapStructFault
+    public void testBaseStructFault() {
+        try {
+            util = new EchoBaseStructFaultClientutil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+
+    }
+
+    //echoExtendedStructFault
+    public void testExtendedStructFault() {
+        try {
+            util = new EchoExtendedStructFaultClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+
+    }
+
+    //echomultiplefaults1
+    public void testMultiplefaults1() {
+        try {
+            util = new EchoMultipleFaults1ClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+
+    //echomultiplefaults2
+    public void testMultiplefaults2() {
+        try {
+            util = new EchoMultipleFaults2ClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+
+    }
+
+}
+
+
diff --git a/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round4/simple/WhitemesaR4SimpleTest.java b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round4/simple/WhitemesaR4SimpleTest.java
new file mode 100644
index 0000000..a65411e
--- /dev/null
+++ b/rampart_1_1/modules/integration/itest/test/interop/whitemesa/round4/simple/WhitemesaR4SimpleTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.simple;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import test.interop.whitemesa.SunClient;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaIneterop;
+import test.interop.whitemesa.round4.simple.utils.EchoEmptyFaultClientUtil;
+import test.interop.whitemesa.round4.simple.utils.EchoIntArrayFaultClientUtil;
+import test.interop.whitemesa.round4.simple.utils.EchoMultipleFaults1ClientUtil;
+import test.interop.whitemesa.round4.simple.utils.EchoMultipleFaults2ClientUtil;
+import test.interop.whitemesa.round4.simple.utils.EchoMultipleFaults3Clientutil;
+import test.interop.whitemesa.round4.simple.utils.EchoMultipleFaults4ClientUtil;
+import test.interop.whitemesa.round4.simple.utils.EchoStringFaultClientUtil;
+
+/**
+ * Class WhitemesaR4SimpleTest
+ * Group H - simple-rpc-encoded
+ * WSDL:-
+ * http://soapinterop.java.sun.com/round4/grouph/simplerpcenc?WSDL
+ */
+
+public class WhitemesaR4SimpleTest extends WhiteMesaIneterop {
+
+    SunClient client = new SunClient();
+    SOAPEnvelope retEnv = null;
+    SunClientUtil util = null;
+    String soapAction = "";
+    String url = "http://soapinterop.java.sun.com:80/round4/grouph/simplerpcenc";
+
+    //Operation - echoEmptyFault
+    public void testEchoEmptyFault() {
+        try {
+            util = new EchoEmptyFaultClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+
+    //Operation - echoStringFault
+    public void testEchoStringFault() {
+        try {
+            util = new EchoStringFaultClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+
+    //Operation - echoIntArrayFault
+    public void testEchoIntArrayFault() {
+        try {
+            util = new EchoIntArrayFaultClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+
+    //Operation - echoMultipleFaults1
+    public void testEchoMultipleFaults1() {
+        try {
+            util = new EchoMultipleFaults1ClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+
+    //Operation - echoMultipleFaults2
+    public void testEchoMultipleFaults2() {
+        try {
+            util = new EchoMultipleFaults2ClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+
+    //Operation - echoMultipleFaults3
+    public void testEchoMultipleFaults3() {
+        try {
+            util = new EchoMultipleFaults3Clientutil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+
+    //Operation - echoMultipleFaults4
+    public void testEchoMultipleFaults4() {
+        try {
+            util = new EchoMultipleFaults4ClientUtil();
+            retEnv = client.sendMsg(util, url, soapAction);
+            fail("Internal Server Error");
+        } catch (Exception e) {
+        }
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/maven.xml b/rampart_1_1/modules/integration/maven.xml
new file mode 100644
index 0000000..daa8646
--- /dev/null
+++ b/rampart_1_1/modules/integration/maven.xml
@@ -0,0 +1,1067 @@
+<?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:u="jelly:util"
+         xmlns:maven="jelly:maven"	
+         xmlns:deploy="deploy"
+         xmlns:ant="jelly:ant">
+    <j:set var="samples.dir" value="target/samples"/>
+
+    <postGoal name="itest:compile">
+        <mkdir dir="target/itest-classes/modules"/>
+        <copy file="../addressing/target/addressing-${addressing_version}.mar"
+              tofile="target/itest-classes/modules/addressing-${addressing_version}.mar"/>
+    </postGoal>
+
+    <preGoal name="test:compile">
+
+		<!-- Set a property that can be picked up from the ant build.xml's -->
+		<ant:property name="maven.class.path" refid="maven.dependency.classpath"/>
+
+		<!-- copy the mars so that they are available on the test classpath -->
+		<copy file="../addressing/target/addressing-${addressing_version}.mar"
+			  tofile="target/test-classes/modules/addressing-${addressing_version}.mar"/>
+		<copy file="../security/target/rampart-${rampart_module_version}.mar"
+			  tofile="target/test-classes/modules/rampart-${rampart_module_version}.mar"/>
+
+		
+		<j:set var="axis2.home" value="${basedir}/target"/>
+		<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+			<classpath refid="maven.dependency.classpath"/>
+			<arg line="-d xmlbeans -p samples.wsdl.perf -o target/perf -s -t -ss -sd -g -uri test/samples/wsdl/perf/perf.wsdl"/>
+		</java>
+		<ant:copy overwrite="yes" todir="target/perf/src/samples/wsdl/perf">
+			<ant:fileset dir="test/samples/wsdl/perf">
+				<ant:include name="*Skeleton.java"/>
+			</ant:fileset>
+		</ant:copy>
+		<ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/perf"
+				 target="make.repo"/>
+		<ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/perf"
+				 target="jar.client"/>
+		 <ant:move file="target/perf/build/lib/PerfPortType-test-client.jar" 
+			  tofile="target/perf/build/lib/PerfSoapService-test-client.jar" />
+			  
+		  <ant:move file="target/perf/build/lib/PerfPortType.aar" 
+			  tofile="target/perf/build/lib/PerfSoapService.aar" />
+			  
+		 <ant:path id="samples.wsdl.perf.client.jar"
+				  location="target/perf/build/lib/PerfSoapService-test-client.jar"/>
+		
+		<maven:addPath id="maven.dependency.classpath" refid="samples.wsdl.perf.client.jar"/>
+		<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+			<classpath refid="maven.dependency.classpath"/>
+			<arg line="-d adb -p samples.wsdl.perf2 -o target/perf2 -s -t -ss -sd -g -uri test/samples/wsdl/perf2/perf.wsdl"/>
+		</java>
+		<ant:copy overwrite="yes" todir="target/perf2/src/samples/wsdl/perf2">
+			<ant:fileset dir="test/samples/wsdl/perf2">
+				<ant:include name="*Skeleton.java"/>
+			</ant:fileset>
+		</ant:copy>
+		<ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/perf2"
+				 target="make.repo"/>
+		<ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/perf2"
+				 target="jar.client"/>
+		<ant:move file="target/perf2/build/lib/PerfPortType-test-client.jar" 
+				tofile="target/perf2/build/lib/PerfSoapService2-test-client.jar" />
+		<ant:path id="samples.wsdl.perf2.client.jar"
+				  location="target/perf2/build/lib/PerfSoapService2-test-client.jar"/>
+		<maven:addPath id="maven.dependency.classpath" refid="samples.wsdl.perf2.client.jar"/>
+
+		<!-- compile the schema for XMLbeans -->
+		<java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler" fork="true">
+			<classpath refid="maven.dependency.classpath"/>
+			<arg line="-src target/xmlbeans-src -d target/classes test-resources/xsd/type-test.xsd"/>
+		</java>
+	  
+		<j:if test="${context.getVariable('skip.enterprise.tests') != 'true'}">	
+		  <ant:echo>Running codegen RPC WSDLs - take 1</ant:echo>
+		  <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+			<classpath refid="maven.dependency.classpath"/>
+				<arg line="-o target/rpc-test1 -uri test-resources/rpc/test-rpc-2.wsdl -uw"/>
+		   </java>
+		  <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/rpc-test1"
+							 target="jar.client"/>
+			  
+			  <ant:echo>Running codegen RPC WSDLs - take 2</ant:echo>
+		  <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+			<classpath refid="maven.dependency.classpath"/>
+				<arg line="-o target/rpc-test2 -uri test-resources/rpc/test-rpc-3.wsdl -uw"/>
+		   </java>
+		  <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/rpc-test2"
+							 target="jar.client"/>
+			  
+		  
+			  <ant:echo>Running codegen RPC WSDLs - take 3</ant:echo>
+		  <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+			<classpath refid="maven.dependency.classpath"/>
+			<arg line="-o target/rpc-test3 -uri test-resources/rpc/test-rpc-2.wsdl -uw -d xmlbeans"/>
+		   </java>
+		  <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/rpc-test3"
+							 target="jar.client"/>
+			  
+			   <ant:echo>Running codegen RPC WSDLs - take 4</ant:echo>
+		  <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+			<classpath refid="maven.dependency.classpath"/>
+			<arg line="-o target/rpc-test4 -uri test-resources/rpc/test-rpc-2.wsdl -uw -d xmlbeans -ss -sd"/>
+		   </java>
+		  <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/rpc-test4"
+							 target="jar.server"/>
+	
+			<ant:echo>Running codegen RPC WSDLs with helper mode -  take 1</ant:echo>
+			<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+				<classpath refid="maven.dependency.classpath"/>
+				<arg line="-o target/helper-test1 -uri test-resources/rpc/test-rpc-2.wsdl -u -Eh"/>
+			</java>
+			<ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/helper-test1"
+					 target="jar.client"/>
+	
+			<ant:echo>Running codegen RPC WSDLs with helper mode -  take 2</ant:echo>
+			<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+				<classpath refid="maven.dependency.classpath"/>
+				<arg line="-o target/helper-test2 -uri test-resources/rpc/test-rpc-2.wsdl -u -Eh"/>
+			</java>
+			<ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/helper-test2"
+					 target="jar.client"/>
+	
+			<j:if test="${context.getVariable('maven.test.skip') != 'true'}">
+	
+				<!-- codegen for the enterprise wsdl -->
+				<ant:echo>Running codegen for Enterprise WSDL - take 1</ant:echo>
+					<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+						<classpath refid="maven.dependency.classpath"/>
+						<arg line="-d xmlbeans -o target/enterprise-test1 -s -uri test-resources/enterprise.wsdl"/>
+					</java>
+				 <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/enterprise-test1"
+							 target="jar.client"/>
+				<ant:echo>Running codegen for Enterprise WSDL - take 2</ant:echo>
+					<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+						<classpath refid="maven.dependency.classpath"/>
+						<arg line="-o target/enterprise-test2 -s -uri test-resources/enterprise.wsdl"/>
+					</java>
+				 <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/enterprise-test2"
+							 target="jar.client"/>
+			
+				
+				<ant:echo>Running codegen for Enterprise WSDL - take 3</ant:echo>
+					<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+						<classpath refid="maven.dependency.classpath"/>
+						<arg line="-d xmlbeans -ss -sd -g -o target/enterprise-test3 -s -uri test-resources/enterprise.wsdl"/>
+					</java>
+				 <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/enterprise-test3"
+							 target="jar.server"/>
+			
+				<ant:echo>Running codegen for Enterprise WSDL - take 4</ant:echo>
+					<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+						<classpath refid="maven.dependency.classpath"/>
+						<arg line="-ns2p urn:sobject.enterprise.soap.sforce.com=com.salesforce -d xmlbeans -ss -sd -g -o target/enterprise-test4 -s -uri test-resources/enterprise.wsdl"/>
+					</java>
+				 <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/enterprise-test4"
+							 target="jar.server"/>
+				<ant:echo>Running codegen for eBaySvc WSDL</ant:echo>
+					<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+						<classpath refid="maven.dependency.classpath"/>
+						<arg line="-ss -sd -g -b -o target/eBaySvc -s -uri test-resources/eBaySvc.wsdl"/>
+					</java>
+				 <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/eBaySvc"
+							 target="jar.server"/>
+                <ant:echo>Running codegen for eBaySvc WSDL with un wrapping </ant:echo>
+					<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+						<classpath refid="maven.dependency.classpath"/>
+						<arg line="-ss -sd -g -b -o target/eBaySvcUW -s -t -uw -uri test-resources/eBaySvc.wsdl"/>
+					</java>
+				 <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="target/eBaySvcUW"
+							 target="jar.server"/>
+            </j:if>
+        </j:if>
+    </preGoal>
+
+    <postGoal name="test:compile">
+        <j:if test="${context.getVariable('maven.test.skip') != 'true'}">
+		
+			<!--Setting up service and client repos for org.apache.rampart.* tests -->
+			<mkdir dir="target/temp-ramp"/>
+			<mkdir dir="target/temp-ramp/META-INF"/>
+			
+			<copy overwrite="yes" file="target/test-classes/org/apache/rampart/Service.class"
+                  tofile="target/temp-ramp/org/apache/rampart/Service.class"/>
+			<copy overwrite="yes" file="target/test-classes/org/apache/rampart/PWCallback.class"
+                  tofile="target/temp-ramp/org/apache/rampart/PWCallback.class"/>
+
+			<copy overwrite="yes" file="test-resources/rampart/store.jks"
+                  tofile="target/temp-ramp/store.jks"/>
+			
+		    <ant:path id="ramp.client.props" location="test-resources/rampart"/>
+            <maven:addPath id="maven.dependency.classpath" refid="ramp.client.props"/>
+			
+			<mkdir dir="target/test-resources/rampart_client_repo"/>
+            <mkdir dir="target/test-resources/rampart_client_repo/conf"/>
+            <mkdir dir="target/test-resources/rampart_client_repo/modules"/>
+
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/rampart_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+		    <copy file="../rahas/target/rahas-${rahas_module_version}.mar"
+                  tofile="target/test-resources/rampart_client_repo/modules/rahas-${rahas_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/rampart_client_repo/modules/addressing-${addressing_version}.mar"/>
+
+            <mkdir dir="target/test-resources/rampart_service_repo"/>
+            <mkdir dir="target/test-resources/rampart_service_repo/conf"/>
+            <mkdir dir="target/test-resources/rampart_service_repo/services"/>
+            <mkdir dir="target/test-resources/rampart_service_repo/modules"/>
+
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/rampart_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+		    <copy file="../rahas/target/rahas-${rahas_module_version}.mar"
+                  tofile="target/test-resources/rampart_service_repo/modules/rahas-${rahas_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/rampart_service_repo/modules/addressing-${addressing_version}.mar"/>
+
+		    <ant:path id="ramp.interop.test.classes" location="../security/target/interop/classes"/>
+            <maven:addPath id="maven.dependency.classpath" refid="ramp.interop.test.classes"/>
+        	
+		    <!-- Service 1 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-1.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService1.aar"
+                 basedir="target/temp-ramp"/>
+
+		    <!-- Service 2 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-2.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService2.aar"
+                 basedir="target/temp-ramp"/>
+
+		    <!-- Service 3 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-3.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService3.aar"
+                 basedir="target/temp-ramp"/>
+
+		    <!-- Service 4 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-4.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService4.aar"
+                 basedir="target/temp-ramp"/>
+
+		    <!-- Service 5 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-5.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService5.aar"
+                 basedir="target/temp-ramp"/>
+
+		    <!-- Service 6 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-6.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService6.aar"
+                 basedir="target/temp-ramp"/>
+
+			<!-- Service 7 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-7.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService7.aar"
+                 basedir="target/temp-ramp"/>
+				 
+			<!-- Service 8 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-8.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService8.aar"
+                 basedir="target/temp-ramp"/>
+
+			<!-- Service 9 -->
+			<copy overwrite="yes" file="test-resources/rampart/services-9.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureService9.aar"
+                 basedir="target/temp-ramp"/>
+
+			<!-- Service SC-1 -->
+			<copy overwrite="yes" file="test-resources/rampart/issuer.properties"
+                  tofile="target/temp-ramp/issuer.properties"/>
+				  
+			<copy overwrite="yes" file="test-resources/rampart/services-sc-1.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureServiceSC1.aar"
+                 basedir="target/temp-ramp"/>
+				 
+			<copy overwrite="yes" file="test-resources/rampart/issuer.properties"
+                  tofile="target/temp-ramp/issuer.properties"/>
+				  
+			<copy overwrite="yes" file="test-resources/rampart/services-sc-2.xml"
+                  tofile="target/temp-ramp/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/rampart_service_repo/services/SecureServiceSC2.aar"
+                 basedir="target/temp-ramp"/>
+				 
+			<!-- Service classes for the SecConv tests -->
+			<mkdir dir="target/temp-sc"/>
+			<mkdir dir="target/temp-sc/META-INF"/>
+			
+			<copy overwrite="yes" file="target/test-classes/org/apache/axis2/security/sc/Service.class"
+                  tofile="target/temp-sc/org/apache/axis2/security/sc/Service.class"/>
+			<copy overwrite="yes" file="target/test-classes/org/apache/axis2/security/sc/PWCallback.class"
+                  tofile="target/temp-sc/org/apache/axis2/security/sc/PWCallback.class"/>
+				  
+			<copy overwrite="yes" todir="target/temp-sc">
+            	<fileset dir="test-resources/security/sc">
+					<include name="sctIssuer.properties"/>
+					<include name="sts.jks"/>
+				</fileset>
+			</copy>
+
+			<ant:path id="sc.client.props" location="test-resources/security/sc"/>
+            <maven:addPath id="maven.dependency.classpath" refid="sc.client.props"/>
+			
+			<mkdir dir="target/test-resources/sc_client_repo"/>
+            <mkdir dir="target/test-resources/sc_client_repo/conf"/>
+            <mkdir dir="target/test-resources/sc_client_repo/modules"/>
+			
+			<copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/sc_client_repo/modules/addressing-${addressing_version}.mar"/>
+			<copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/sc_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- SecConv Test - 1  -->
+
+            <mkdir dir="target/test-resources/sc_service_repo_1"/>
+            <mkdir dir="target/test-resources/sc_service_repo_1/conf"/>
+            <mkdir dir="target/test-resources/sc_service_repo_1/services"/>
+            <mkdir dir="target/test-resources/sc_service_repo_1/modules"/>
+
+	    
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_1/modules/rampart-${rampart_module_version}.mar"/>
+		    <copy file="../rahas/target/rahas-${rahas_module_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_1/modules/rahas-${rahas_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_1/modules/addressing-${addressing_version}.mar"/>
+				  
+			<!-- copy the services.xml and create the aar -->
+			<copy overwrite="yes" file="test-resources/security/sc/s1-services.xml"
+                  tofile="target/temp-sc/META-INF/services.xml"/>
+
+		    <jar jarfile="target/test-resources/sc_service_repo_1/services/SecureService.aar"
+                 basedir="target/temp-sc"/>
+
+            <!-- SecConv Test - 1 :END -->
+
+            <!-- SecConv Test - 2  -->
+
+            <mkdir dir="target/test-resources/sc_service_repo_2"/>
+            <mkdir dir="target/test-resources/sc_service_repo_2/conf"/>
+            <mkdir dir="target/test-resources/sc_service_repo_2/services"/>
+            <mkdir dir="target/test-resources/sc_service_repo_2/modules"/>
+
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_2/modules/rampart-${rampart_module_version}.mar"/>
+		    <copy file="../rahas/target/rahas-${rahas_module_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_2/modules/rahas-${rahas_module_version}.mar"/>
+		    <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_2/modules/addressing-${addressing_version}.mar"/>
+
+			<!-- copy the services.xml and create the aar -->
+			<copy overwrite="yes" file="test-resources/security/sc/s2-services.xml"
+                  tofile="target/temp-sc/META-INF/services.xml"/>
+
+		    <jar  overwrite="yes" jarfile="target/test-resources/sc_service_repo_2/services/SecureService.aar"
+                 basedir="target/temp-sc"/>
+
+            <!-- SecConv Test - 2 :END -->
+
+			<!-- SecConv Test - 3  -->
+
+            <mkdir dir="target/test-resources/sc_service_repo_3"/>
+            <mkdir dir="target/test-resources/sc_service_repo_3/conf"/>
+            <mkdir dir="target/test-resources/sc_service_repo_3/services"/>
+            <mkdir dir="target/test-resources/sc_service_repo_3/modules"/>
+
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_3/modules/rampart-${rampart_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_3/modules/addressing-${addressing_version}.mar"/>
+			<!-- copy the services.xml and create the aar -->
+			<copy overwrite="yes" file="test-resources/security/sc/s3-services.xml"
+                  tofile="target/temp-sc/META-INF/services.xml"/>
+
+		    <jar  overwrite="yes" jarfile="target/test-resources/sc_service_repo_3/services/SecureService.aar"
+                 basedir="target/temp-sc"/>
+
+            <!-- SecConv Test - 3 :END -->
+
+			<!-- SecConv Test - 4  -->
+
+            <mkdir dir="target/test-resources/sc_service_repo_4"/>
+            <mkdir dir="target/test-resources/sc_service_repo_4/conf"/>
+            <mkdir dir="target/test-resources/sc_service_repo_4/services"/>
+            <mkdir dir="target/test-resources/sc_service_repo_4/modules"/>
+
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_4/modules/rampart-${rampart_module_version}.mar"/>
+		    <copy file="../rahas/target/rahas-${rahas_module_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_4/modules/rahas-${rahas_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/sc_service_repo_4/modules/addressing-${addressing_version}.mar"/>
+
+			<!-- copy the services.xml and create the aar -->
+			<copy overwrite="yes" file="test-resources/security/sc/s4-services.xml"
+                  tofile="target/temp-sc/META-INF/services.xml"/>
+
+		    <jar  overwrite="yes" jarfile="target/test-resources/sc_service_repo_4/services/SecureService.aar"
+                 basedir="target/temp-sc"/>
+
+            <!-- SecConv Test - 4 :END -->
+			
+			<!-- clean up temp sc stuff -->
+			<delete dir="target/temp-sc"/>
+			
+			<!-- Set up the infra for rahas tests and the rahas client repo -->
+			
+			<mkdir dir="target/temp-rahas"/>
+			<mkdir dir="target/temp-rahas/META-INF"/>
+			
+			<copy overwrite="yes" file="target/test-classes/org/apache/rahas/Service.class"
+                  tofile="target/temp-rahas/org/apache/rahas/Service.class"/>
+			<copy overwrite="yes" file="target/test-classes/org/apache/rahas/PWCallback.class"
+                  tofile="target/temp-rahas/org/apache/rahas/PWCallback.class"/>
+				  
+			<copy overwrite="yes" todir="target/temp-rahas">
+            	<fileset dir="test-resources/rahas">
+					<include name="issuer.properties"/>
+					<include name="rahas-sts.jks"/>
+				</fileset>
+			</copy>
+
+			<ant:path id="rahas.client.props" location="test-resources/rahas"/>
+            <maven:addPath id="maven.dependency.classpath" refid="rahas.client.props"/>
+			
+			<mkdir dir="target/test-resources/rahas_client_repo"/>
+            <mkdir dir="target/test-resources/rahas_client_repo/conf"/>
+            <mkdir dir="target/test-resources/rahas_client_repo/modules"/>
+			
+			<copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/rahas_client_repo/modules/addressing-${addressing_version}.mar"/>
+			<copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/rahas_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copying the DOM3 stuff to the endorsed dir -->
+            <mkdir dir="target/test-resources/endorsed"/>
+            <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('on')}">
+				<copy file="${dependencies.dir}/xercesImpl-${xerces.version}.jar"
+					  todir="target/test-resources/endorsed"/>
+				<copy file="${dependencies.dir}/xml-apis-${xml_apis.version}.jar"
+					  todir="target/test-resources/endorsed"/>
+            </j:if>
+            <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('off')}">
+				<copy file="${maven.repo.local}/xerces/jars/xercesImpl-${xerces.version}.jar"
+					  todir="target/test-resources/endorsed"/>
+				<copy file="${maven.repo.local}/xml-apis/jars/xml-apis-${xml_apis.version}.jar"
+					  todir="target/test-resources/endorsed"/>
+            </j:if>
+			
+			<!-- Rahas Test1: SAML Token test -->
+            <mkdir dir="target/test-resources/rahas_service_repo_1"/>
+            <mkdir dir="target/test-resources/rahas_service_repo_1/conf"/>
+            <mkdir dir="target/test-resources/rahas_service_repo_1/services"/>
+            <mkdir dir="target/test-resources/rahas_service_repo_1/modules"/>
+
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/rahas_service_repo_1/modules/rampart-${rampart_module_version}.mar"/>
+		    <copy file="../rahas/target/rahas-${rahas_module_version}.mar"
+                  tofile="target/test-resources/rahas_service_repo_1/modules/rahas-${rahas_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/rahas_service_repo_1/modules/addressing-${addressing_version}.mar"/>
+				  
+				  
+			<!-- copy the services.xml and create the aar -->
+			<copy overwrite="yes" file="test-resources/rahas/s1-services.xml"
+                  tofile="target/temp-rahas/META-INF/services.xml"/>
+
+		    <jar  overwrite="yes" jarfile="target/test-resources/rahas_service_repo_1/services/SecureService.aar"
+                 basedir="target/temp-rahas"/>
+
+			<!-- Rahas Test1: SAML Token test : END -->
+
+
+			<!-- Rahas Test 3 & 4: RahasSAMLTokenUTForHoKTest and RahasSAMLTokenUTForHoKV1205Test -->
+            <mkdir dir="target/test-resources/rahas_service_repo_3"/>
+            <mkdir dir="target/test-resources/rahas_service_repo_3/conf"/>
+            <mkdir dir="target/test-resources/rahas_service_repo_3/services"/>
+            <mkdir dir="target/test-resources/rahas_service_repo_3/modules"/>
+
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/rahas_service_repo_3/modules/rampart-${rampart_module_version}.mar"/>
+		    <copy file="../rahas/target/rahas-${rahas_module_version}.mar"
+                  tofile="target/test-resources/rahas_service_repo_3/modules/rahas-${rahas_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/rahas_service_repo_3/modules/addressing-${addressing_version}.mar"/>
+				  
+				  
+			<!-- copy the services.xml and create the aar -->
+			<copy overwrite="yes" file="test-resources/rahas/s3-services.xml"
+                  tofile="target/temp-rahas/META-INF/services.xml"/>
+
+		    <jar  overwrite="yes" jarfile="target/test-resources/rahas_service_repo_3/services/SecureService.aar"
+                 basedir="target/temp-rahas"/>
+
+			<!-- Rahas Test 3 & 4: RahasSAMLTokenUTForHoKTest and RahasSAMLTokenUTForHoKV1205Test : END-->
+
+
+			<mkdir dir="target/test-resources/samples/modules"/>
+            <mkdir dir="target/test-resources/samples/conf"/>
+            <mkdir dir="target/test-resources/repository-client/modules"/>
+            <mkdir dir="target/test-resources/repository-client/conf"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/samples/modules/addressing-${addressing_version}.mar"/>
+            <copy file="conf/axis2.xml"
+                  tofile="target/test-resources/samples/conf/axis2.xml"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/repository-client/modules/addressing-${addressing_version}.mar"/>
+            <copy file="conf/axis2.xml"
+                  tofile="target/test-resources/repository-client/conf/axis2.xml"/>
+            <mkdir dir="target/toWar/services/"/>
+
+            <!-- Create Chunked enabled Repository -->
+            <mkdir dir="target/test-resources/chunking-enabledRepository"/>
+            <mkdir dir="target/test-resources/chunking-enabledRepository/conf"/>
+            <copy file="test/org/apache/axis2/engine/chunking-enabled-axis2.xml"
+                  tofile="target/test-resources/chunking-enabledRepository/conf/axis2.xml"/>
+
+            <!-- Create Chunked disabled Repository -->
+            <mkdir dir="target/test-resources/chunking-disabledRepository"/>
+            <mkdir dir="target/test-resources/chunking-disabledRepository/conf"/>
+            <copy file="test/org/apache/axis2/engine/chunking-disabled-axis2.xml"
+                  tofile="target/test-resources/chunking-disabledRepository/conf/axis2.xml"/>
+
+            <!-- Create JMS enabled Server Repository -->
+            <mkdir dir="target/test-resources/jms-enabled-server-repository"/>
+            <mkdir dir="target/test-resources/jms-enabled-server-repository/conf"/>
+            <mkdir dir="target/test-resources/jms-enabled-server-repository/modules"/>
+            <copy file="test/org/apache/axis2/jms/jms-enabled-server-axis2.xml"
+                  tofile="target/test-resources/jms-enabled-server-repository/conf/axis2.xml"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/jms-enabled-server-repository/modules/addressing-${addressing_version}.mar"/>
+
+            <!-- Create JMS enabled Client Repository -->
+            <mkdir dir="target/test-resources/jms-enabled-client-repository"/>
+            <mkdir dir="target/test-resources/jms-enabled-client-repository/conf"/>
+            <mkdir dir="target/test-resources/jms-enabled-client-repository/modules"/>
+            <copy file="test/org/apache/axis2/jms/jms-enabled-client-axis2.xml"
+                  tofile="target/test-resources/jms-enabled-client-repository/conf/axis2.xml"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/jms-enabled-client-repository/modules/addressing-${addressing_version}.mar"/>
+
+            <!-- Create Mail Client transport enabled Repository -->
+            <mkdir dir="target/test-resources/mail-transport-client-enabledRepository"/>
+            <mkdir dir="target/test-resources/mail-transport-client-enabledRepository/conf"/>
+            <mkdir dir="target/test-resources/mail-transport-client-enabledRepository/modules"/>
+            <copy file="test/org/apache/axis2/mail/mail-enabled-client-axis2.xml"
+                  tofile="target/test-resources/mail-transport-client-enabledRepository/conf/axis2.xml"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/mail-transport-client-enabledRepository/modules/addressing-${addressing_version}.mar"/>
+
+            <!-- Create Mail Server transport enabled Repository -->
+            <mkdir dir="target/test-resources/mail-transport-server-enabledRepository"/>
+            <mkdir dir="target/test-resources/mail-transport-server-enabledRepository/conf"/>
+            <mkdir dir="target/test-resources/mail-transport-server-enabledRepository/modules"/>
+            <copy file="test/org/apache/axis2/mail/mail-enabled-server-axis2.xml"
+                  tofile="target/test-resources/mail-transport-server-enabledRepository/conf/axis2.xml"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/mail-transport-server-enabledRepository/modules/addressing-${addressing_version}.mar"/>
+
+            <mkdir dir="target/test-resources/MessageContextInjectionRepo"/>
+            <mkdir dir="target/test-resources/integrationRepo/modules"/>
+            <mkdir dir="target/test-resources/integrationRepo/conf"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/integrationRepo/modules/addressing-${addressing_version}.mar"/>
+            <copy file="conf/axis2.xml"
+                  tofile="target/test-resources/integrationRepo/conf/axis2.xml"/>
+
+
+            <!-- Commons transport enabled enabled Repository -->
+            <mkdir dir="target/test-resources/commons-http-enabledRepository"/>
+            <mkdir dir="target/test-resources/commons-http-enabledRepository/conf"/>
+            <copy file="test/org/apache/axis2/engine/commons-http-enabled-axis2.xml"
+                  tofile="target/test-resources/commons-http-enabledRepository/conf/axis2.xml"/>
+
+           <!-- MTOM enabled Repository -->
+            <mkdir dir="target/test-resources/MTOM-enabledRepository"/>
+            <mkdir dir="target/test-resources/MTOM-enabledRepository/conf"/>
+            <copy file="test-resources/mtom/MTOM-enabled-axis2.xml"
+                  tofile="target/test-resources/MTOM-enabledRepository/conf/axis2.xml"/>
+        	<copy file="../addressing/target/addressing-${addressing_version}.mar"
+        	      tofile="target/test-resources/MTOM-enabledRepository/modules/addressing-${addressing_version}.mar"/>
+
+            <!-- MTOM file cache enabled Repository -->
+            <mkdir dir="target/test-resources/MTOM-fileCache-enabledRepository"/>
+            <mkdir dir="target/test-resources/MTOM-fileCache-enabledRepository/conf"/>
+            <copy file="test-resources/mtom/MTOM-fileCache-enabled-axis2.xml"
+                  tofile="target/test-resources/MTOM-fileCache-enabledRepository/conf/axis2.xml"/>
+        	<copy file="../addressing/target/addressing-${addressing_version}.mar"
+        	        	      tofile="target/test-resources/MTOM-fileCache-enabledRepository/modules/addressing-${addressing_version}.mar"/>
+
+            <!-- SwA enabled Repository -->
+              <mkdir dir="target/test-resources/SwA-enabledRepository"/>
+              <mkdir dir="target/test-resources/SwA-enabledRepository/conf"/>
+              <copy file="test-resources/swa/SwA-enabled-axis2.xml"
+                    tofile="target/test-resources/SwA-enabledRepository/conf/axis2.xml"/>
+          	<copy file="../addressing/target/addressing-${addressing_version}.mar"
+          	      tofile="target/test-resources/SwA-enabledRepository/modules/addressing-${addressing_version}.mar"/>
+
+              <!-- SwA file cache enabled Repository -->
+              <mkdir dir="target/test-resources/SwA-fileCache-enabledRepository"/>
+              <mkdir dir="target/test-resources/SwA-fileCache-enabledRepository/conf"/>
+              <copy file="test-resources/swa/SwA-fileCache-enabled-axis2.xml"
+                    tofile="target/test-resources/SwA-fileCache-enabledRepository/conf/axis2.xml"/>
+          	<copy file="../addressing/target/addressing-${addressing_version}.mar"
+          	        	      tofile="target/test-resources/SwA-fileCache-enabledRepository/modules/addressing-${addressing_version}.mar"/>
+
+            <!-- Groovy repository -->
+            <mkdir dir="target/groovyRepo"/>
+            <mkdir dir="target/groovyRepo/conf"/>
+            <mkdir dir="target/groovyRepo/services"/>
+            <mkdir dir="target/groovyRepo/modules"/>
+            <ant:copy file="../samples/target/groovy/groovyService.aar"
+                      tofile="target/groovyRepo/services/groovyService.aar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/groovyRepo/modules/addressing-${addressing_version}.mar"/>
+            <copy file="conf/axis2.xml"
+                  tofile="target/groovyRepo/conf/axis2.xml"/>
+
+            <!-- Spring resources -->
+            <mkdir dir="target/test-resources/spring"/>
+            <copy file="../spring/test-resources/applicationContext.xml"
+                  tofile="target/test-classes/spring/applicationContext.xml"/>
+
+            <!--Axis2 repositories for WS-Security interop tests -->
+
+            <!-- A default repository with security and addressing modules -->
+            <mkdir dir="target/test-resources/default_security_client_repo"/>
+            <mkdir dir="target/test-resources/default_security_client_repo/conf"/>
+            <mkdir dir="target/test-resources/default_security_client_repo/modules"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/default_security_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/default_security_client_repo/modules/addressing-${addressing_version}.mar"/>
+            <copy file="conf/axis2.xml"
+                  tofile="target/test-resources/default_security_client_repo/conf/axis2.xml"/>
+
+            <!-- Scenario 1 -->
+            <mkdir dir="target/test-resources/scenario1_client_repo"/>
+            <mkdir dir="target/test-resources/scenario1_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario1_client_repo/modules"/>
+            <mkdir dir="target/test-resources/scenario1_client_repo/services"/>
+
+            <mkdir dir="target/test-resources/scenario1_service_repo"/>
+            <mkdir dir="target/test-resources/scenario1_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario1_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenario1_service_repo/modules"/>
+
+            <!-- setup scenario 1 client repository-->
+            <copy file="test-resources/security/s1.client.axis2.xml"
+                  tofile="target/test-resources/scenario1_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario1_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- This is to add the PWCallback in to the classpath for the client to pick
+                 the password callback class.
+            -->
+            <ant:path id="sec.interop.service.jar" location="../security/target/PingPort.aar"/>
+            <maven:addPath id="maven.dependency.classpath" refid="sec.interop.service.jar"/>
+
+            <!-- setup scenario 1 service repository-->
+            <copy file="test-resources/security/s1.service.axis2.xml"
+                  tofile="target/test-resources/scenario1_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario1_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/s1.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenario1_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+            <!-- Scenario 2 -->
+            <mkdir dir="target/test-resources/scenario2_client_repo"/>
+            <mkdir dir="target/test-resources/scenario2_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario2_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/scenario2_service_repo"/>
+            <mkdir dir="target/test-resources/scenario2_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario2_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenario2_service_repo/modules"/>
+
+            <!-- setup scenario 2 client repository-->
+            <copy file="test-resources/security/s2.client.axis2.xml"
+                  tofile="target/test-resources/scenario2_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario2_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- setup scenario 2 service repository-->
+            <copy file="test-resources/security/s2.service.axis2.xml"
+                  tofile="target/test-resources/scenario2_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario2_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/s2.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenario2_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+            <!-- Scenario 2a -->
+            <mkdir dir="target/test-resources/scenario2a_client_repo"/>
+            <mkdir dir="target/test-resources/scenario2a_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario2a_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/scenario2a_service_repo"/>
+            <mkdir dir="target/test-resources/scenario2a_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario2a_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenario2a_service_repo/modules"/>
+
+            <!-- setup scenario 2a client repository-->
+            <copy file="test-resources/security/s2a.client.axis2.xml"
+                  tofile="target/test-resources/scenario2a_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario2a_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- setup scenario 2a service repository-->
+            <copy file="test-resources/security/s2a.service.axis2.xml"
+                  tofile="target/test-resources/scenario2a_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario2a_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/s2a.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenario2a_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+            <!-- Scenario 3 -->
+            <mkdir dir="target/test-resources/scenario3_client_repo"/>
+            <mkdir dir="target/test-resources/scenario3_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario3_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/scenario3_service_repo"/>
+            <mkdir dir="target/test-resources/scenario3_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario3_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenario3_service_repo/modules"/>
+
+            <!-- setup scenario 3 client repository-->
+            <copy file="test-resources/security/s3.client.axis2.xml"
+                  tofile="target/test-resources/scenario3_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario3_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- setup scenario 3 service repository-->
+            <copy file="test-resources/security/s3.service.axis2.xml"
+                  tofile="target/test-resources/scenario3_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario3_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/s3.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenario3_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+
+            <!-- Scenario 4 -->
+            <mkdir dir="target/test-resources/scenario4_client_repo"/>
+            <mkdir dir="target/test-resources/scenario4_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario4_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/scenario4_service_repo"/>
+            <mkdir dir="target/test-resources/scenario4_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario4_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenario4_service_repo/modules"/>
+
+            <!-- setup scenario 4 client repository-->
+            <copy file="test-resources/security/s4.client.axis2.xml"
+                  tofile="target/test-resources/scenario4_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario4_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- setup scenario 4 service repository-->
+            <copy file="test-resources/security/s4.service.axis2.xml"
+                  tofile="target/test-resources/scenario4_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario4_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/s4.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenario4_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+
+            <!-- Scenario 5 -->
+            <mkdir dir="target/test-resources/scenario5_client_repo"/>
+            <mkdir dir="target/test-resources/scenario5_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario5_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/scenario5_service_repo"/>
+            <mkdir dir="target/test-resources/scenario5_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario5_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenario5_service_repo/modules"/>
+
+            <!-- setup scenario 5 client repository-->
+            <copy file="test-resources/security/s5.client.axis2.xml"
+                  tofile="target/test-resources/scenario5_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario5_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- setup scenario 5 service repository-->
+            <copy file="test-resources/security/s5.service.axis2.xml"
+                  tofile="target/test-resources/scenario5_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario5_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/s5.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenario5_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+
+            <!-- Scenario 6 -->
+            <mkdir dir="target/test-resources/scenario6_client_repo"/>
+            <mkdir dir="target/test-resources/scenario6_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario6_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/scenario6_service_repo"/>
+            <mkdir dir="target/test-resources/scenario6_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario6_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenario6_service_repo/modules"/>
+
+            <!-- setup scenario 6 client repository-->
+            <copy file="test-resources/security/s6.client.axis2.xml"
+                  tofile="target/test-resources/scenario6_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario6_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- setup scenario 6 service repository-->
+            <copy file="test-resources/security/s6.service.axis2.xml"
+                  tofile="target/test-resources/scenario6_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario6_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/s6.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenario6_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+
+            <!-- Scenario 7 -->
+            <mkdir dir="target/test-resources/scenario7_client_repo"/>
+            <mkdir dir="target/test-resources/scenario7_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario7_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/scenario7_service_repo"/>
+            <mkdir dir="target/test-resources/scenario7_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenario7_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenario7_service_repo/modules"/>
+
+            <!-- setup scenario 7 client repository-->
+            <copy file="test-resources/security/s7.client.axis2.xml"
+                  tofile="target/test-resources/scenario7_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario7_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- setup scenario 7 service repository-->
+            <copy file="test-resources/security/s7.service.axis2.xml"
+                  tofile="target/test-resources/scenario7_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenario7_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/s7.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenario7_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+            <!-- Scenario ST1 -->
+            <mkdir dir="target/test-resources/scenarioST1_client_repo"/>
+            <mkdir dir="target/test-resources/scenarioST1_client_repo/conf"/>
+            <mkdir dir="target/test-resources/scenarioST1_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/scenarioST1_service_repo"/>
+            <mkdir dir="target/test-resources/scenarioST1_service_repo/conf"/>
+            <mkdir dir="target/test-resources/scenarioST1_service_repo/services"/>
+            <mkdir dir="target/test-resources/scenarioST1_service_repo/modules"/>
+
+            <!-- setup scenario ST1 client repository-->
+            <copy file="test-resources/security/sST1.client.axis2.xml"
+                  tofile="target/test-resources/scenarioST1_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenarioST1_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- setup scenario ST1 service repository-->
+            <copy file="test-resources/security/sST1.service.axis2.xml"
+                  tofile="target/test-resources/scenarioST1_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/scenarioST1_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/sST1.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/scenarioST1_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+
+            <!-- MTOM Optimized Security Test -->
+            <mkdir dir="target/test-resources/mtom_sec_client_repo"/>
+            <mkdir dir="target/test-resources/mtom_sec_client_repo/conf"/>
+            <mkdir dir="target/test-resources/mtom_sec_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/mtom_sec_service_repo"/>
+            <mkdir dir="target/test-resources/mtom_sec_service_repo/conf"/>
+            <mkdir dir="target/test-resources/mtom_sec_service_repo/services"/>
+            <mkdir dir="target/test-resources/mtom_sec_service_repo/modules"/>
+
+            <!-- MTOM Optimized Security Test client repository-->
+            <copy file="test-resources/security/secMtom.client.axis2.xml"
+                  tofile="target/test-resources/mtom_sec_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/mtom_sec_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- MTOM Optimized Security Test service repository-->
+            <copy file="test-resources/security/secMtom.service.axis2.xml"
+                  tofile="target/test-resources/mtom_sec_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/mtom_sec_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/secMtom.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/mtom_sec_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+
+            <!-- Test with addressing and MTOM  -->
+            <mkdir dir="target/test-resources/complete_client_repo"/>
+            <mkdir dir="target/test-resources/complete_client_repo/conf"/>
+            <mkdir dir="target/test-resources/complete_client_repo/modules"/>
+
+            <mkdir dir="target/test-resources/complete_service_repo"/>
+            <mkdir dir="target/test-resources/complete_service_repo/conf"/>
+            <mkdir dir="target/test-resources/complete_service_repo/services"/>
+            <mkdir dir="target/test-resources/complete_service_repo/modules"/>
+
+            <!-- Test with target resolver  -->
+            <mkdir dir="target/test-resources/deployment_repo"/>
+            <mkdir dir="target/test-resources/deployment_repo/conf"/>
+            <mkdir dir="target/test-resources/deployment_repo/services"/>
+            <mkdir dir="target/test-resources/deployment_repo/modules"/>
+                  	
+            <copy file="test-resources/deployment/deployment.both.axis2.xml"
+            	  tofile="target/test-resources/deployment_repo/conf/axis2.xml"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+            	  tofile="target/test-resources/deployment_repo/modules/addressing-${addressing_version}.mar"/>
+        	
+            <!-- Test with addressing and MTOM client repository-->
+            <copy file="test-resources/security/complete.client.axis2.xml"
+                  tofile="target/test-resources/complete_client_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/complete_client_repo/modules/rampart-${rampart_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/complete_client_repo/modules/addressing-${addressing_version}.mar"/>
+
+            <!-- Test with addressing and MTOMservice repository-->
+            <copy file="test-resources/security/complete.service.axis2.xml"
+                  tofile="target/test-resources/complete_service_repo/conf/axis2.xml"/>
+            <copy file="../security/target/rampart-${rampart_module_version}.mar"
+                  tofile="target/test-resources/complete_service_repo/modules/rampart-${rampart_module_version}.mar"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/test-resources/complete_service_repo/modules/addressing-${addressing_version}.mar"/>
+
+            <!-- Copy services.xml to ../security/target/interop/classes/META-INF/ -->
+            <copy file="test-resources/security/complete.service.xml"
+                  tofile="../security/target/interop/classes/META-INF/services.xml"
+                  overwrite="true"/>
+
+            <!-- Create the .aar file -->
+            <jar jarfile="target/test-resources/complete_service_repo/services/PingPort.aar"
+                 basedir="../security/target/interop/classes"/>
+
+            <!-- Standard repository -->
+            <mkdir dir="target/Repository"/>
+            <mkdir dir="target/Repository/conf"/>
+            <mkdir dir="target/Repository/services"/>
+            <mkdir dir="target/Repository/modules"/>
+            <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/Repository/modules/addressing-${addressing_version}.mar"/>
+            <copy file="conf/axis2.xml"
+                  tofile="target/Repository/conf/axis2.xml"/>
+           
+           <mkdir dir="target/perf2/build/repo/conf"/>
+           <mkdir dir="target/perf/build/repo/conf"/>
+
+           <copy file="conf/axis2.xml"
+                  tofile="target/perf2/build/repo/conf/axis2.xml"/>
+           <copy file="conf/axis2.xml"
+                  tofile="target/perf/build/repo/conf/axis2.xml"/>
+
+           <mkdir dir="target/perf2/build/repo/modules"/>
+                        <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/perf2/build/repo/modules/addressing-${addressing_version}.mar"/>
+
+           <mkdir dir="target/perf/build/repo/modules"/>
+                        <copy file="../addressing/target/addressing-${addressing_version}.mar"
+                  tofile="target/perf/build/repo/modules/addressing-${addressing_version}.mar"/>
+
+            <j:jelly xmlns="jelly:ant">
+                <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true"
+                         dir="test-resources/SOAP12Testing/SOAP12TestModuleB"/>
+                <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true"
+                         dir="test-resources/SOAP12Testing/SOAP12TestModuleC"/>
+                <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true"
+                         dir="test-resources/SOAP12Testing/SOAP12TestServiceB"/>
+                <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true"
+                         dir="test-resources/SOAP12Testing/SOAP12TestServiceC"/>
+            </j:jelly>
+        </j:if>
+    </postGoal>
+</project>
diff --git a/rampart_1_1/modules/integration/project.properties b/rampart_1_1/modules/integration/project.properties
new file mode 100644
index 0000000..1a3efea
--- /dev/null
+++ b/rampart_1_1/modules/integration/project.properties
@@ -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.
+# -------------------------------------------------------------------
+
+maven.multiproject.type=jar
+
+maven.itest.src=${basedir}/itest
+maven.itest.src.excludes=test/interop/mtom/**/*.java,\
+                     test/interop/whitemesa/round2/**/*.java
+                     test/interop/whitemesa/round1/**/*.java,\
+                     test/interop/whitemesa/round3/**/*.java,\
+                     test/interop/whitemesa/round4/**/*.java
+maven.itest.includes=test/interop/sun/**/*.java
+
+#This doesn't seem to exclude the unwanted tests
+#Therefore we have to add the required tests to includes one by one
+#we have to fix this!!!
+#maven.itest.exclude=org/apache/axis2/interop/whitemesa/round2/**/*.java
+
+maven.junit.fork=true
+maven.junit.jvmargs=-Djava.endorsed.dirs=target/test-resources/endorsed
+
+maven.test.search.classdir=true
+
+maven.itest.resources=itestConfig
+
+itestConfig.dir=${basedir}/itest-resources
+itestConfig.includes=**/*.xml
+itestConfig.excludes=
+
+
diff --git a/rampart_1_1/modules/integration/project.xml b/rampart_1_1/modules/integration/project.xml
new file mode 100644
index 0000000..062c55d
--- /dev/null
+++ b/rampart_1_1/modules/integration/project.xml
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+* 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.
+*/
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - Integration</name>
+    <id>axis2-integration</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>Integration tests</description>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-security</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-secpolicy</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-java2wsdl</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+          <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb-codegen</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-samples</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-spring</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+		<dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-dom</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-codegen</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-xmlbeans</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-addressing</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-tools</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-rahas</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+
+        <!-- external JARs -->
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>groovy</groupId>
+            <artifactId>groovy-all</artifactId>
+            <version>${groovy.all.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+            <url>http://dist.codehaus.org/groovy/jars/</url>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons.httpclient.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons.codec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>httpcomponents-httpcore</groupId>
+            <artifactId>jakarta-httpcore</artifactId>
+            <version>${jakarta.httpcore.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency> 
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javamail.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xmlbeans</groupId>
+            <artifactId>xbean</artifactId>
+            <version>${xbean.version}</version>
+            <type>jar</type>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>maven-itest-plugin</groupId>
+            <artifactId>maven-itest-plugin</artifactId>
+            <version>${maven.itest.plugin.version}</version>
+            <type>plugin</type>
+        </dependency>
+        <dependency>
+            <groupId>wss4j</groupId>
+            <artifactId>wss4j</artifactId>
+            <version>${wss4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-security</groupId>
+            <artifactId>xmlsec</artifactId>
+            <version>${xmlsec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>bouncycastle</groupId>
+            <artifactId>bcprov</artifactId>
+            <version>${bcprov.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>opensaml</groupId>
+            <artifactId>opensaml</artifactId>
+            <version>${opensaml.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+                <properties>
+                    <classloader>root</classloader>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+            <version>${xml_apis.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+            <version>${xerces.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxen</groupId>
+            <artifactId>jaxen</artifactId>
+            <version>${jaxen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xalan</groupId>
+            <artifactId>xalan</artifactId>
+            <version>${xalan.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+         <!--for java2wsdl generation we use JAM , so there should be a dependency on the annogen jar or-->
+        <!--XML Beans-->
+         <dependency>
+            <groupId>annogen</groupId>
+            <artifactId>annogen</artifactId>
+            <version>${annogen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+         <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${XmlSchema.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>backport-util-concurrent</groupId>
+            <artifactId>backport-util-concurrent</artifactId>
+            <version>${backport_util_concurrent.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${neethi.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xmlunit</groupId>
+            <artifactId>xmlunit</artifactId>
+            <version>${xmlunit.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+	  <dependency>
+            <groupId>incubator-woden</groupId>
+            <artifactId>woden</artifactId>
+            <version>${woden.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+	<dependency>
+	  <groupId>log4j</groupId>
+	  <artifactId>log4j</artifactId>
+	  <version>${log4j.version}</version>
+	</dependency>
+        <dependency>
+          <groupId>incubator-activemq</groupId>
+          <artifactId>incubator-activemq</artifactId>
+          <version>4.0.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+            <version>${spring.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-beans</artifactId>
+            <version>${spring.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>${spring.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-web</artifactId>
+            <version>${spring.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+
+    </dependencies>
+
+    <!-- build information for the project -->
+    <build>
+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
+        <sourceDirectory>src</sourceDirectory>
+        <unitTestSourceDirectory>test</unitTestSourceDirectory>
+    <sourceModifications>
+      <sourceModification>
+        <className>fakeClazz</className>
+        <property/>
+        <directory/>
+        <includes/>
+        <excludes>
+            <exclude>**/SOAP12Testing/**/*.java</exclude>
+        </excludes>
+      </sourceModification>
+    </sourceModifications>
+        <unitTest>
+            <includes>
+                <include>**/*Test.class</include>
+            </includes>
+            <excludes>
+                <exclude>**/*Abstract*.class</exclude>
+                <exclude>**/*Util*.class</exclude>
+                <exclude>**/*InteropStubTest.class</exclude>
+                <exclude>**/*EchoRawSwAFileInputTest.class</exclude>
+                <exclude>**org/apache/axis2/mail/*.class</exclude>
+		<exclude>**org/apache/axis2/transport/DualChannelRequestResponseRawXMLTest.class</exclude>
+                <exclude>**org/apache/axis2/soap12testing/soap12testsuite/*.class</exclude>
+                <exclude>**/ScenarioST1Test.class</exclude>
+                <exclude>**/samples/wsdl/perf2/*.class</exclude>
+
+
+            </excludes>
+
+            <resources>
+                <resource>
+                    <directory>${basedir}/test-resources</directory>
+                </resource>
+                <resource>
+                    <directory>conf</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                    </includes>
+                </resource>
+                <resource>
+                    <directory>src</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                        <include>**/*.xml</include>
+                    </includes>
+                </resource>
+            </resources>
+        </unitTest>
+
+        <resources>
+            <resource>
+                <directory>conf</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+
+                </includes>
+            </resource>
+            <resource>
+                <directory>test</directory>
+                <includes>
+                    <include>**/*.jpg</include>
+                </includes>
+            </resource>
+        <resource>
+                <directory>test</directory>
+                <includes>
+                    <include>**/*.bin</include>
+                </includes>
+            </resource>
+        </resources>
+    </build>
+
+    <reports/>
+
+</project>
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoBaseStructFaultClientutil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoBaseStructFaultClientutil.java
new file mode 100644
index 0000000..8bcb850
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoBaseStructFaultClientutil.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.complex;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoBaseStructFaultClientutil implements SunGroupHClientUtil{
+
+    public OMElement getEchoOMElement() {
+
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "mns");
+
+        OMElement method = fac.createOMElement("echoBaseStructFault", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+
+
+        OMElement value1 = fac.createOMElement("param", null);
+        method.addChild(value1);
+
+        OMElement value2 = fac.createOMElement("floatMessage", null);
+        OMElement value3 = fac.createOMElement("shortMessage ", null);
+
+        value1.addChild(value2);
+        value1.addChild(value3);
+        method.addChild(value1);
+
+        value2.addChild(fac.createOMText(value2, "10.3"));
+        value3.addChild(fac.createOMText(value3, "1"));
+
+        return method;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoBlockingClient.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoBlockingClient.java
new file mode 100644
index 0000000..9fe9310
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoBlockingClient.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.complex;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+public class EchoBlockingClient {
+
+
+    public OMElement sendMsg(SunGroupHClientUtil util, String soapAction) {
+        OMElement firstchild = null;
+
+        EndpointReference targetEPR = new EndpointReference("http://soapinterop.java.sun.com:80/round4/grouph/complexrpcenc");
+        try {
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setExceptionToBeThrownOnSOAPFault(false);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setAction(soapAction);
+
+            //Blocking invocation
+
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+            options.setTo(targetEPR);
+            firstchild = sender.sendReceive(util.getEchoOMElement());
+
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+
+        }
+        return firstchild;
+
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoExtendedStructFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoExtendedStructFaultClientUtil.java
new file mode 100644
index 0000000..eb08b0f
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoExtendedStructFaultClientUtil.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.complex;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoExtendedStructFaultClientUtil implements SunGroupHClientUtil{
+
+    public OMElement getEchoOMElement() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoExtendedStructFault", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+
+
+        OMElement value1 = fac.createOMElement("param", null);
+        method.addChild(value1);
+
+        OMElement value2 = fac.createOMElement("floatMessage", null);
+        OMElement value3 = fac.createOMElement("shortMessage", null);
+        OMElement value4 = fac.createOMElement("stringMessage", null);
+        OMElement value5 = fac.createOMElement("intMessage", null);
+        OMElement value6 = fac.createOMElement("anotherIntMessage", null);
+
+        value1.addChild(value2);
+        value1.addChild(value3);
+        value1.addChild(value4);
+        value1.addChild(value5);
+        value1.addChild(value6);
+
+        method.addChild(value1);
+
+        value2.addChild(fac.createOMText(value2, "0.99"));
+        value3.addChild(fac.createOMText(value3, "10"));
+        value4.addChild(fac.createOMText(value4, "hi"));
+        value5.addChild(fac.createOMText(value5, "1"));
+        value6.addChild(fac.createOMText(value6, "56"));
+
+
+
+        return method;
+    }
+
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoMultipleFaults1ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoMultipleFaults1ClientUtil.java
new file mode 100644
index 0000000..5a2c85b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoMultipleFaults1ClientUtil.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.complex;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoMultipleFaults1ClientUtil implements SunGroupHClientUtil{
+
+    public OMElement getEchoOMElement() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoMultipleFaults1", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+        OMElement value1 = fac.createOMElement("whichFault", null);
+        method.addChild(value1);
+
+
+        OMElement value2 = fac.createOMElement("param1", null);
+        OMElement value3 = fac.createOMElement("varInt", null);
+        OMElement value4 = fac.createOMElement("varFloat", null);
+        OMElement value5 = fac.createOMElement("varString", null);
+        OMElement value6 = fac.createOMElement("param2", null);
+        OMElement value7 = fac.createOMElement("floatMessage", null);
+        OMElement value8 = fac.createOMElement("shortMessage", null);
+
+
+        value2.addChild(value3);
+        value2.addChild(value4);
+        value2.addChild(value5);
+
+        value6.addChild(value7);
+        value6.addChild(value8);
+
+
+        method.addChild(value2);
+        method.addChild(value6);
+
+        value1.addChild(fac.createOMText(value1, "1"));
+        value3.addChild(fac.createOMText(value3, "210"));
+        value4.addChild(fac.createOMText(value4, "0.256"));
+        value5.addChild(fac.createOMText(value5, "hi"));
+        value7.addChild(fac.createOMText(value7, "0.569"));
+        value8.addChild(fac.createOMText(value8, "56"));
+
+
+
+        return method;
+
+
+    }
+
+
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoMultipleFaults2ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoMultipleFaults2ClientUtil.java
new file mode 100644
index 0000000..d96985e
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoMultipleFaults2ClientUtil.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.complex;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoMultipleFaults2ClientUtil implements SunGroupHClientUtil{
+
+    public OMElement getEchoOMElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoMultipleFaults2", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+
+
+        OMElement value1 = fac.createOMElement("whichFault", null);
+        method.addChild(value1);
+
+
+        OMElement value2 = fac.createOMElement("param1", null);
+
+        OMElement value3 = fac.createOMElement("floatMessage", null);
+        OMElement value4 = fac.createOMElement("shortMessage", null);
+        OMElement value5 = fac.createOMElement("param2", null);
+        OMElement value6 = fac.createOMElement("floatMessage", null);
+        OMElement value7 = fac.createOMElement("shortMessage", null);
+        OMElement value8 = fac.createOMElement("stringMessage", null);
+        OMElement value9 = fac.createOMElement("intMessage", null);
+        OMElement value10 = fac.createOMElement("anotherIntMessage", null);
+        OMElement value11 = fac.createOMElement("param3", null);
+        OMElement value12 = fac.createOMElement("floatMessage", null);
+        OMElement value13 = fac.createOMElement("shortMessage", null);
+        OMElement value14 = fac.createOMElement("stringMessage", null);
+        OMElement value15 = fac.createOMElement("intMessage", null);
+        OMElement value16 = fac.createOMElement("anotherIntMessage", null);
+        OMElement value17 = fac.createOMElement("booleanMessage", null);
+
+
+        value2.addChild(value3);
+        value2.addChild(value4);
+        value5.addChild(value6);
+        value5.addChild(value7);
+        value5.addChild(value8);
+        value5.addChild(value9);
+        value5.addChild(value10);
+        value11.addChild(value12);
+        value11.addChild(value13);
+        value11.addChild(value14);
+        value11.addChild(value15);
+        value11.addChild(value16);
+        value11.addChild(value17);
+
+
+        method.addChild(value2);
+        method.addChild(value5);
+        method.addChild(value11);
+
+
+        value1.addChild(fac.createOMText(value1, "2"));
+        value3.addChild(fac.createOMText(value3, "0.21"));
+        value4.addChild(fac.createOMText(value4, "6"));
+        value6.addChild(fac.createOMText(value6, "0.555"));
+        value7.addChild(fac.createOMText(value7, "9"));
+        value8.addChild(fac.createOMText(value8, "hi"));
+        value9.addChild(fac.createOMText(value9, "10"));
+
+        value10.addChild(fac.createOMText(value10, "20"));
+
+        value12.addChild(fac.createOMText(value12, "0.111"));
+
+        value13.addChild(fac.createOMText(value13, "11"));
+
+        value14.addChild(fac.createOMText(value14, "hi"));
+        value15.addChild(fac.createOMText(value15, "8"));
+        value16.addChild(fac.createOMText(value16, "9"));
+        value17.addChild(fac.createOMText(value17, "1"));
+
+        return method;
+    }
+
+
+
+
+
+
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoSOAPStructFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoSOAPStructFaultClientUtil.java
new file mode 100644
index 0000000..e212ae5
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/EchoSOAPStructFaultClientUtil.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.complex;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoSOAPStructFaultClientUtil implements SunGroupHClientUtil{
+
+    public OMElement getEchoOMElement() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoSOAPStructFault", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+
+        OMElement value1 = fac.createOMElement("param", null);
+        method.addChild(value1);
+
+
+        OMElement value2 = fac.createOMElement("soapStruct", null);
+        OMElement value3 = fac.createOMElement("varInt", null);
+        OMElement value4 = fac.createOMElement("varFloat", null);
+        OMElement value5 = fac.createOMElement("varString", null);
+
+
+        value2.addChild(value3);
+        value2.addChild(value4);
+        value2.addChild(value5);
+
+        value1.addChild(value2);
+        value3.addChild(fac.createOMText(value3, "10"));
+        value4.addChild(fac.createOMText(value4, "0.568"));
+        value5.addChild(fac.createOMText(value5, "String"));
+
+        return method;
+    }
+
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/SunGroupHClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/SunGroupHClientUtil.java
new file mode 100644
index 0000000..8cead98
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/complex/SunGroupHClientUtil.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.complex;
+
+import org.apache.axiom.om.OMElement;
+
+public interface SunGroupHClientUtil {
+    OMElement getEchoOMElement();
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/EchoBlockingClient.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/EchoBlockingClient.java
new file mode 100644
index 0000000..951b747
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/EchoBlockingClient.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import test.interop.sun.round4.simple.util.SunGroupHClientUtil;
+
+public class EchoBlockingClient {
+    public OMElement sendMsg(SunGroupHClientUtil util, String soapAction) {
+        OMElement firstchild = null;
+        EndpointReference targetEPR =
+                new EndpointReference("http://soapinterop.java.sun.com:80/round4/grouph/simplerpcenc");
+        try {
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setExceptionToBeThrownOnSOAPFault(false);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setAction(soapAction);
+            options.setProperty(HTTPConstants.CHUNKED, Constants.VALUE_FALSE);
+
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+            options.setTo(targetEPR);
+            firstchild = sender.sendReceive(util.getEchoOMElement());
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+
+
+        }
+        return firstchild;
+
+    }
+
+
+}
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoEmptyFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoEmptyFaultClientUtil.java
new file mode 100644
index 0000000..c70cd81
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoEmptyFaultClientUtil.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoEmptyFaultClientUtil implements SunGroupHClientUtil{
+
+
+    public OMElement getEchoOMElement() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "mns");
+
+        OMElement method = fac.createOMElement("echoEmptyFault", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+
+
+
+        return method;
+
+
+
+
+    }
+
+
+
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoIntArrayFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoIntArrayFaultClientUtil.java
new file mode 100644
index 0000000..3ab533a
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoIntArrayFaultClientUtil.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoIntArrayFaultClientUtil implements SunGroupHClientUtil {
+
+
+    public OMElement getEchoOMElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoIntArrayFault", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+
+        OMElement value1 = fac.createOMElement("param", null);
+        method.addChild(value1);
+        value1.addAttribute("soapenc:arrayType","nsa:int[3]",null);
+        value1.addAttribute("soapenc:offset","[0]",null);
+        value1.addAttribute("xmlns:soapenc","http://schemas.xmlsoap.org/soap/encoding/",null);
+        value1.addAttribute("xmlns:nsa","http://www.w3.org/2001/XMLSchema",null);
+        OMElement value2 = fac.createOMElement("Item", null);
+        OMElement value3 = fac.createOMElement("Item", null);
+        OMElement value4 = fac.createOMElement("Item", null);
+
+        value1.addChild(value2);
+        value1.addChild(value3);
+        value1.addChild(value4);
+
+
+
+
+        value2.addChild(fac.createOMText(value2, "99"));
+        value3.addChild(fac.createOMText(value3, "10"));
+        value4.addChild(fac.createOMText(value4, "12"));
+
+
+
+
+        return method;
+    }
+
+
+
+
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults1ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults1ClientUtil.java
new file mode 100644
index 0000000..43ee8ff
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults1ClientUtil.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoMultipleFaults1ClientUtil implements SunGroupHClientUtil {
+
+    public OMElement getEchoOMElement() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoMultipleFaults1", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+        method.declareNamespace("http://www.w3.org/2001/XMLSchema-instance","xsi");
+        method.declareNamespace("http://soapinterop.org/types","ns2");
+        method.declareNamespace("http://schemas.xmlsoap.org/wsdl/","wsdl");
+
+        OMElement value = fac.createOMElement("whichFault", null);
+        method.addChild(value);
+        OMElement value1 = fac.createOMElement("param1", null);
+        OMElement value2 = fac.createOMElement("param2", null);
+        OMElement value3 = fac.createOMElement("Item", null);
+        OMElement value4 = fac.createOMElement("Item", null);
+        OMElement value5 = fac.createOMElement("Item", null);
+
+        value2.addAttribute("soapenc:arrayType","nsa:float[3]",null);
+        value2.addAttribute("soapenc:offset","[0]",null);
+        value2.addAttribute("xmlns:soapenc","http://schemas.xmlsoap.org/soap/encoding/",null);
+        value2.addAttribute("xmlns:nsa","http://www.w3.org/2001/XMLSchema",null);
+
+
+        value.addChild(fac.createOMText(value, "10"));
+        value1.addChild(fac.createOMText(value1, "hi"));
+        value3.addChild(fac.createOMText(value3, "1.0"));
+        value4.addChild(fac.createOMText(value4, "20.6"));
+        value5.addChild(fac.createOMText(value5, "2.6"));
+
+        value2.addChild(value3);
+        value2.addChild(value4);
+        value2.addChild(value5);
+
+
+        method.addChild(value1);
+        method.addChild(value2);
+
+
+
+        return method;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults2ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults2ClientUtil.java
new file mode 100644
index 0000000..1b72c1b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults2ClientUtil.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoMultipleFaults2ClientUtil implements SunGroupHClientUtil{
+
+    public OMElement getEchoOMElement() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoMultipleFaults2", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+        method.declareNamespace("http://www.w3.org/2001/XMLSchema-instance","xsi");
+        method.declareNamespace("http://soapinterop.org/types","ns2");
+        method.declareNamespace("http://schemas.xmlsoap.org/wsdl/","wsdl");
+
+        OMElement value = fac.createOMElement("whichFault", null);
+        method.addChild(value);
+        OMElement value1 = fac.createOMElement("param1", null);
+        OMElement value2 = fac.createOMElement("param2", null);
+        OMElement value3 = fac.createOMElement("param3", null);
+        OMElement value4 = fac.createOMElement("Item", null);
+        OMElement value5 = fac.createOMElement("Item", null);
+        OMElement value6 = fac.createOMElement("Item", null);
+
+        value3.addAttribute("soapenc:arrayType","nsa:string[3]",null);
+        value3.addAttribute("soapenc:offset","[0]",null);
+        value3.addAttribute("xmlns:soapenc","http://schemas.xmlsoap.org/soap/encoding/",null);
+        value3.addAttribute("xmlns:nsa","http://www.w3.org/2001/XMLSchema",null);
+
+
+        value.addChild(fac.createOMText(value, "2"));
+        value1.addChild(fac.createOMText(value1, "hi"));
+        value2.addChild(fac.createOMText(value2, "0.23"));
+        value4.addChild(fac.createOMText(value4, "String 1"));
+        value5.addChild(fac.createOMText(value5, "String 2"));
+        value6.addChild(fac.createOMText(value6, "String 3"));
+
+        value3.addChild(value4);
+        value3.addChild(value5);
+        value3.addChild(value6);
+
+
+        method.addChild(value1);
+        method.addChild(value2);
+        method.addChild(value3);
+
+
+        return method;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults3Clientutil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults3Clientutil.java
new file mode 100644
index 0000000..8d26c98
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults3Clientutil.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoMultipleFaults3Clientutil implements SunGroupHClientUtil{
+    public OMElement getEchoOMElement() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoMultipleFaults3", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+        method.declareNamespace("http://www.w3.org/2001/XMLSchema-instance","xsi");
+        method.declareNamespace("http://soapinterop.org/types","ns2");
+        method.declareNamespace("http://schemas.xmlsoap.org/wsdl/","wsdl");
+
+        OMElement value = fac.createOMElement("whichFault", null);
+        method.addChild(value);
+        OMElement value1 = fac.createOMElement("param1", null);
+        OMElement value2 = fac.createOMElement("param2", null);
+
+
+
+        value.addChild(fac.createOMText(value, "3"));
+        value1.addChild(fac.createOMText(value1, "param 1"));
+        value2.addChild(fac.createOMText(value2, "Param 2"));
+
+
+
+
+
+        method.addChild(value1);
+        method.addChild(value2);
+
+
+        return method;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults4ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults4ClientUtil.java
new file mode 100644
index 0000000..36a0f54
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoMultipleFaults4ClientUtil.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoMultipleFaults4ClientUtil implements SunGroupHClientUtil{
+    public OMElement getEchoOMElement() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoMultipleFaults4", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+
+        OMElement value = fac.createOMElement("whichFault", null);
+        method.addChild(value);
+        OMElement value1 = fac.createOMElement("param1", null);
+        OMElement value2 = fac.createOMElement("param2", null);
+
+
+
+        value.addChild(fac.createOMText(value, "3"));
+        value1.addChild(fac.createOMText(value1, "1"));
+        value2.addChild(fac.createOMText(value2, "8"));
+
+
+
+
+
+        method.addChild(value1);
+        method.addChild(value2);
+
+
+        return method;
+    }
+
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoStringFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoStringFaultClientUtil.java
new file mode 100644
index 0000000..257b59f
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/EchoStringFaultClientUtil.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+
+public class EchoStringFaultClientUtil implements SunGroupHClientUtil{
+
+    public OMElement getEchoOMElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoStringFault", omNs);
+        OMNamespace soapEnvNS = method.declareNamespace(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNS);
+
+
+
+
+        OMElement value = fac.createOMElement("param", null);
+
+        value.addChild(fac.createOMText(value, "Axis2 Echo String "));
+
+        method.addChild(value);
+
+        return method;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/SunGroupHClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/SunGroupHClientUtil.java
new file mode 100644
index 0000000..dc7c1ad
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/sun/round4/simple/util/SunGroupHClientUtil.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2004,2005 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 test.interop.sun.round4.simple.util;
+
+import org.apache.axiom.om.OMElement;
+
+public interface SunGroupHClientUtil {
+    OMElement getEchoOMElement();
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/util/BodyElements.java b/rampart_1_1/modules/integration/src/test/interop/util/BodyElements.java
new file mode 100644
index 0000000..063f821
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/util/BodyElements.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2004,2005 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 test.interop.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import java.io.File;
+
+/**
+ * white Mesa Cr interop test
+ */
+public class BodyElements {
+
+    public static OMElement bodySingle(boolean optimized) {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNS = fac.createOMNamespace("http://example.org/mtom/data", "x");
+        OMElement data = fac.createOMElement("Data", omNS);
+        File file;
+        DataHandler handler = null;
+        file = new File("modules/integration/itest-resources/mtom/mtom.bin");
+        if (file.exists()) {
+            handler = new DataHandler(new FileDataSource(file));//
+        } else {
+            file = new File("itest-resources/mtom/mtom.bin");
+            if (file.exists()) {
+                handler = new DataHandler(new FileDataSource(file));//
+            }
+        }
+
+        OMText txt = fac.createOMText(handler, optimized);
+        data.addChild(txt);
+        return data;
+    }
+
+    public static OMElement bodyMultiple(boolean optimzed, int repeat) {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNS = fac.createOMNamespace("http://example.org/mtom/data", "x");
+        OMElement echoTest = fac.createOMElement("EchoTest", omNS);
+
+        File file;
+        DataHandler handler = null;
+        file = new File("modules/integration/itest-resources/mtom/mtom.bin");
+        if (file.exists()) {
+            handler = new DataHandler(new FileDataSource(file));//
+        } else {
+            file = new File("itest-resources/mtom/mtom.bin");
+            if (file.exists()) {
+                handler = new DataHandler(new FileDataSource(file));//
+            }
+        }
+        for (int i = 0; i < repeat; i++) {
+            OMElement ele = fac.createOMElement("Data", omNS);
+            OMText txt = fac.createOMText(handler, optimzed);
+            ele.addChild(txt);
+            echoTest.addChild(ele);
+        }
+        return echoTest;
+    }
+
+    public static OMText getOriginalText(boolean optimized) {
+        File file = new File("modules/integration/itest-resources/mtom/mtom.bin");
+        DataHandler handler = new DataHandler(new FileDataSource(file));//
+        return new OMTextImpl(handler, optimized, OMAbstractFactory.getOMFactory());
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/util/XMLComparatorInterop.java b/rampart_1_1/modules/integration/src/test/interop/util/XMLComparatorInterop.java
new file mode 100644
index 0000000..1e4fe03
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/util/XMLComparatorInterop.java
@@ -0,0 +1,229 @@
+/*
+ * Copyright 2004,2005 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 test.interop.util;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Iterator;
+import java.util.Vector;
+public class XMLComparatorInterop {
+	private static final Log log = LogFactory.getLog(XMLComparatorInterop.class);
+
+    String failureNotice = "";
+
+    private Vector ignorableNamespaceList = new Vector();
+
+    public void addIgnorableNamespace(String nsURI) {
+        ignorableNamespaceList.add(nsURI);
+    }
+
+    public void clearIgnorableNamespaces() {
+        ignorableNamespaceList.clear();
+    }
+
+
+    public boolean compare(OMElement elementOne, OMElement elementTwo) {
+
+        boolean status = false;
+        //ignore if the elements belong to any of the ignorable namespaces list
+
+        if (isIgnorable(elementOne) ||
+                isIgnorable(elementTwo)) {
+            return true;
+        }
+
+        if (elementOne == null && elementTwo == null) {
+            log.info("Both Elements are null.");
+            return true;
+        }
+        if (elementOne == null && elementTwo != null) {
+            //failureNotice = "Element One is null and Element Two is not null";
+            return false;
+        }
+        if (elementOne != null && elementTwo == null) {
+            //failureNotice = "Element Two is null and Element One is not null";
+            return false;
+        }
+
+        log.info("Now Checking " + elementOne.getLocalName() + " and " +
+                elementTwo.getLocalName() +
+                "=============================");
+
+        log.info("Comparing Element Names .......");
+        status = compare(elementOne.getLocalName(),elementTwo.getLocalName());
+        if (!status)
+            return false;
+
+        log.info("Comparing Namespaces .........");
+        status = compare(elementOne.getNamespace(),
+                elementTwo.getNamespace());
+        if (!status)
+            return false;
+
+        log.info("Comparing attributes .....");
+        status = compareAllAttributes(elementOne, elementTwo);
+        if (!status)
+            return false;
+
+        log.info("Comparing texts .....");
+
+        /*
+        * Trimming the value of the XMLElement is not correct
+        * since this compare method cannot be used to compare
+        * element contents with trailing and leading whitespaces
+        * BUT for the practicalltiy of tests and to get the current
+        * tests working we have to trim() the contents
+        */
+        status = compare(
+                elementOne.getText().trim(),
+                elementTwo.getText().trim());
+        if (!status)
+            return false;
+
+        log.info("Comparing Children ......");
+        status = compareAllChildren(elementOne, elementTwo);
+
+        return status;
+    }
+
+    private boolean compareAllAttributes(OMElement elementOne,
+                                         OMElement elementTwo) {
+        boolean status = false;
+        status = compareAttibutes(elementOne, elementTwo);
+        status = compareAttibutes(elementTwo, elementOne);
+        return status;
+    }
+
+    private boolean compareAllChildren(OMElement elementOne,
+                                       OMElement elementTwo) {
+        boolean status = false;
+        status = compareChildren(elementOne, elementTwo);
+        //status =compareChildren(elementTwo, elementOne);
+        return status;
+    }
+
+
+    private boolean isIgnorable(OMElement elt) {
+        if (elt != null) {
+            OMNamespace namespace = elt.getNamespace();
+            if (namespace != null) {
+                return ignorableNamespaceList.contains(namespace.getNamespaceURI());
+            } else {
+                return false;
+            }
+        } else {
+            return false;
+        }
+    }
+
+
+    private boolean compareChildren(OMElement elementOne, OMElement elementTwo) {
+        //ignore if the elements belong to any of the ignorable namespaces list
+        boolean status = true;
+        if (isIgnorable(elementOne) ||
+                isIgnorable(elementTwo)) {
+            return true;
+        }
+        Iterator elementOneChildren = elementOne.getChildren();
+        while (elementOneChildren.hasNext()) {
+            OMNode omNode = (OMNode) elementOneChildren.next();
+            if (omNode instanceof OMElement) {
+                OMElement elementOneChild = (OMElement) omNode;
+                OMElement elementTwoChild = null;
+                //Do the comparison only if the element is not ignorable
+                if (!isIgnorable(elementOneChild)) {
+                    Iterator elementTwoChildren = elementTwo.getChildren();
+                    while (elementTwoChildren.hasNext() ) {
+                        status = false;
+                        OMNode node = (OMNode) elementTwoChildren.next();
+                        if (node.getType() == OMNode.ELEMENT_NODE) {
+                            elementTwoChild = (OMElement) node;
+                            if (elementTwoChild.getLocalName().equals(elementOneChild.getLocalName())) {
+                                //Do the comparison only if the element is not ignorable
+                                if (!isIgnorable(elementTwoChild)) {
+                                    if (elementTwoChild == null) {
+                                        return false;
+                                    }
+                                }
+
+                                status = compare(elementOneChild, elementTwoChild);
+
+                            }
+                        }
+                        if(status){
+                            break;
+                        }
+                    }
+                    if (!status) {
+                        return false;
+                    }
+                } else
+                    status = compare(elementOneChild, elementTwoChild);
+            }
+        }
+
+        return status;
+    }
+
+    private boolean compareAttibutes(OMElement elementOne, OMElement elementTwo) {
+        int elementOneAtribCount = 0;
+        int elementTwoAtribCount = 0;
+        Iterator attributes = elementOne.getAllAttributes();
+        while (attributes.hasNext()) {
+            OMAttribute omAttribute = (OMAttribute) attributes.next();
+            OMAttribute attr = elementTwo.getAttribute(omAttribute.getQName());
+            if (attr == null) {
+                return false;
+            }
+            elementOneAtribCount++;
+        }
+
+        Iterator elementTwoIter = elementTwo.getAllAttributes();
+        while (elementTwoIter.hasNext()) {
+            elementTwoIter.next();
+            elementTwoAtribCount++;
+
+        }
+
+        return elementOneAtribCount == elementTwoAtribCount;
+    }
+
+    private boolean compare(String one, String two) {
+        return one.equals(two);
+    }
+
+    private boolean compare(OMNamespace one,OMNamespace two) {
+        if (one == null && two == null) {
+            return true;
+        } else if (one != null && two == null) {
+            return false;
+        } else if (one == null && two != null) {
+            return false;
+        }
+        if (!one.getNamespaceURI().equals(two.getNamespaceURI())) {
+            return false;
+        }
+
+        // Do we need to compare prefixes as well
+        return true;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/SunClient.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/SunClient.java
new file mode 100644
index 0000000..bce8c82
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/SunClient.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+
+import java.net.URL;
+
+
+public class SunClient {
+
+    public SOAPEnvelope sendMsg(SunClientUtil util, String epUrl, String soapAction) throws AxisFault {
+
+        SOAPEnvelope resEnv;
+        URL url;
+        try {
+            url = new URL(epUrl);
+
+            Options options = new Options();
+            options.setProperty(HTTPConstants.CHUNKED, Constants.VALUE_FALSE);
+            options.setTo(new EndpointReference(url.toString()));
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setAction(soapAction);
+
+            MessageContext messageContext = new MessageContext();
+            SOAPEnvelope requestEnvilope = util.getEchoSoapEnvelope();
+            messageContext.setEnvelope(requestEnvilope);
+
+            ConfigurationContextFactory factory = new ConfigurationContextFactory();
+            ConfigurationContext configContext =
+                    //factory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+            factory.createConfigurationContextFromFileSystem("itest-resources/integrationRepo", null);
+            ServiceClient serviceClient = new ServiceClient(configContext, null);
+            serviceClient.setOptions(options);
+            OperationClient opClient = serviceClient.createClient(ServiceClient.ANON_OUT_IN_OP);
+            opClient.addMessageContext(messageContext);
+            opClient.execute(true);
+            MessageContext responseMCtx = opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+
+            resEnv = responseMCtx.getEnvelope();
+
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+        return resEnv;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/SunClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/SunClientUtil.java
new file mode 100644
index 0000000..4b19a60
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/SunClientUtil.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+
+public interface SunClientUtil {
+    SOAPEnvelope getEchoSoapEnvelope();
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/WhiteMesaConstants.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/WhiteMesaConstants.java
new file mode 100644
index 0000000..3450bf0
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/WhiteMesaConstants.java
@@ -0,0 +1,78 @@
+/*

+ * Copyright 2004,2005 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 test.interop.whitemesa;

+

+public interface WhiteMesaConstants {

+

+	//text values of the generated SOAP envelopes.

+	String ECHO_STRING = "String Argument";

+	String ECHO_STRING_ARR_1 = "String Value1";

+	String ECHO_STRING_ARR_2 = "String Value2";

+	String ECHO_STRING_ARR_3 = "String Value3";

+	String ECHO_INTEGER = "42";

+	String ECHO_INTEGER_ARR_1 = "451";

+	String ECHO_INTEGER_ARR_2 = "425";

+	String ECHO_INTEGER_ARR_3 = "2523";

+	String ECHO_FLOAT = "50.25";

+	String ECHO_FLOAT_ARR_1 = "45.76";

+	String ECHO_FLOAT_ARR_2 = "43.45";

+	String ECHO_FLOAT_ARR_3 = "2523.54";

+	String ECHO_STRUCT_INT = "42";

+	String ECHO_STRUCT_FLOAT = "12.45";

+	String ECHO_STRUCT_STRING = "hello world";

+	String ECHO_STRUCT_ARRAY_STR_1 = "String Value1"; 

+	String ECHO_STRUCT_ARRAY_STR_2 = "String Value2"; 

+	String ECHO_STRUCT_ARRAY_STR_3 = "String Value3";

+	String ECHO_STRUCT_ARRAY_INT_1 = "25"; 

+	String ECHO_STRUCT_ARRAY_INT_2 = "26"; 

+	String ECHO_STRUCT_ARRAY_INT_3 = "27"; 

+	String ECHO_STRUCT_ARRAY_FLOAT_1 = "25.23"; 

+	String ECHO_STRUCT_ARRAY_FLOAT_2 = "25.25"; 

+	String ECHO_STRUCT_ARRAY_FLOAT_3 = "25.25"; 

+	String ECHO_BASE_64 = "SGVsbG8gV29ybGQ=";

+	String ECHO_HEX_BINARY = "AAABBAAE";

+	String ECHO_DATE = "2006-10-18T22:20:00-07:00";

+	String ECHO_DECIMAL = "455646152";

+	String ECHO_BOOLEAN = "true";

+	

+	

+	String seperator = "/";

+	String nsValue = "http://soapinterop.org/";

+	String nsPrefix = "ns1";

+	String echoIntegerResponse  = "echoIntegerResponse";

+	String ret = "return";

+	String echoStringResponse  = "echoStringResponse";

+	String echoStringArrayResponse = "echoStringArrayResponse";

+	String item = "item";

+	String echoIntegerArrayResponse = "echoIntegerArrayResponse";

+	String echoFloatResponse  = "echoFloatResponse";

+	String echoFloatArrayResponse = "echoFloatArrayResponse";

+	String echoStructResponse = "echoStructResponse";

+	String varInt = "varInt";

+	String varFloat = "varFloat";

+	String varString = "varString";

+	String echoVoidResponse  = "echoVoidResponse";

+	String echoBase64Response = "echoBase64Response";

+	String echoHexBinaryResponse = "echoHexBinaryResponse";

+	String echoDateResponse = "echoDateResponse";

+	String echoDecimalResponse = "echoDecimalResponse";

+	String echoBooleanResponse = "echoBooleanResponse";

+	String echoStructArrayResponse = "echoStructArrayResponse";

+	String textNodeSelector = "text()";

+	String colon = ":";

+	

+}

diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/WhiteMesaIneterop.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/WhiteMesaIneterop.java
new file mode 100644
index 0000000..5212755
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/WhiteMesaIneterop.java
@@ -0,0 +1,486 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa;
+
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.custommonkey.xmlunit.XMLTestCase;
+import org.jaxen.JaxenException;
+import org.jaxen.SimpleNamespaceContext;
+import org.jaxen.XPath;
+
+public class WhiteMesaIneterop extends XMLTestCase implements WhiteMesaConstants {
+
+    protected void compareXML(SOAPEnvelope retEnv, String filePath)
+            throws AxisFault {
+
+        try {
+            if (retEnv != null) {
+                SOAPBody body = retEnv.getBody();
+                if (!body.hasFault()) {
+                    InputStream stream = Thread.currentThread()
+                            .getContextClassLoader().getResourceAsStream(
+                            filePath);
+
+                    XMLStreamReader parser = StAXUtils
+                            .createXMLStreamReader(stream);
+                    OMXMLParserWrapper builder = new StAXSOAPModelBuilder(
+                            parser, null);
+                    SOAPEnvelope refEnv = (SOAPEnvelope) builder
+                            .getDocumentElement();
+                    String refXML = refEnv.toString();
+                    String retXML = retEnv.toString();
+                    
+                    assertXMLEqual(refXML, retXML);
+                }
+            }
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+    }
+    
+    /**
+     * Validation for the echoString operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoStringResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoStringResponse + seperator + ret + seperator + textNodeSelector;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_STRING);
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoStringArray operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoStringArrayResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoStringArrayResponse + seperator + ret + seperator + item;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			List itemElems = xpath.selectNodes(payload);
+			assertNotNull(itemElems);
+			assertEquals(itemElems.size(),3);
+			
+			Iterator iter=itemElems.iterator();
+			OMElement itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_STRING_ARR_1);
+			itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_STRING_ARR_2);
+			itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_STRING_ARR_3);
+			
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoInteger operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoIntegerResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoIntegerResponse + seperator + ret + seperator + textNodeSelector;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_INTEGER);
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoIntegerArray operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoIntegerArrayResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoIntegerArrayResponse + seperator + ret + seperator + item;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			List itemElems = xpath.selectNodes(payload);
+			assertNotNull(itemElems);
+			assertEquals(itemElems.size(),3);
+			
+			Iterator iter=itemElems.iterator();
+			OMElement itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_INTEGER_ARR_1);
+			itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_INTEGER_ARR_2);
+			itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_INTEGER_ARR_3);
+			
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoFloat operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoFloatResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoFloatResponse + seperator + ret + seperator + textNodeSelector;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_FLOAT);
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoFloatArray operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoFloatArrayResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoFloatArrayResponse + seperator + ret + seperator + item;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			List itemElems = xpath.selectNodes(payload);
+			assertNotNull(itemElems);
+			assertEquals(itemElems.size(),3);
+			
+			Iterator iter=itemElems.iterator();
+			OMElement itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_FLOAT_ARR_1);
+			itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_FLOAT_ARR_2);
+			itemElem = (OMElement) iter.next();
+			assertNotNull(itemElem);
+			assertEquals(itemElem.getText(),WhiteMesaConstants.ECHO_FLOAT_ARR_3);
+			
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoStruct operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoStructResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoStructResponse + seperator + ret + seperator + varInt;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_STRUCT_INT);
+			
+			xPathExpr = seperator + seperator + nsPrefix + colon + echoFloatResponse + seperator + ret + seperator + varFloat;
+			xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_STRUCT_FLOAT);
+			
+			xPathExpr = seperator + seperator + nsPrefix + colon + echoFloatResponse + seperator + ret + seperator + varFloat;
+			xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_STRUCT_STRING);
+			
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoStructArray operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoStructArrayResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoStructArrayResponse + seperator + 
+			                   ret + seperator + item + seperator + varString + seperator + textNodeSelector;
+			
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			List varStringElems = xpath.selectNodes(payload);
+			assertEquals(varStringElems.size(),3);
+			OMText varStringElem = (OMText) varStringElems.get(0);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
+			varStringElem = (OMText) varStringElems.get(1);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
+			varStringElem = (OMText) varStringElems.get(2);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);
+			
+			
+			xPathExpr = seperator + seperator + nsPrefix + colon + echoStructArrayResponse + seperator + 
+            ret + seperator + item + seperator + varInt + seperator + textNodeSelector;
+
+			xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			varStringElems = xpath.selectNodes(payload);
+			assertEquals(varStringElems.size(),3);
+			varStringElem = (OMText) varStringElems.get(0);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
+			varStringElem = (OMText) varStringElems.get(1);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
+			varStringElem = (OMText) varStringElems.get(2);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);
+			
+			xPathExpr = seperator + seperator + nsPrefix + colon + echoStructArrayResponse + seperator + 
+			ret + seperator + item + seperator + varFloat + seperator + textNodeSelector;
+			
+			xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			varStringElems = xpath.selectNodes(payload);
+			assertEquals(varStringElems.size(),3);
+			varStringElem = (OMText) varStringElems.get(0);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
+			varStringElem = (OMText) varStringElems.get(1);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
+			varStringElem = (OMText) varStringElems.get(2);
+			assertNotNull(varStringElem);
+			assertEquals(varStringElem.getText(),WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);		
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoVoid operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoVoidResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement echoVoidResponseElem = body.getFirstChildWithName(new QName (nsValue,echoVoidResponse));
+    	assertNotNull(echoVoidResponseElem);
+    }
+    
+    /**
+     * Validation for the EchoBase64 operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoBase64Result (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoBase64Response + seperator + ret + seperator + textNodeSelector;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_BASE_64);
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoHexBinary operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoHexBinaryResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoHexBinaryResponse + seperator + ret + seperator + textNodeSelector;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			
+			boolean equal = WhiteMesaConstants.ECHO_HEX_BINARY.equalsIgnoreCase(textElem.getText());
+			assertTrue(equal);
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoDate operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoDateResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoDateResponse + seperator + ret + seperator + textNodeSelector;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_DATE);
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoDecimal operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoDecimalResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoDecimalResponse + seperator + ret + seperator + textNodeSelector;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_DECIMAL);
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    /**
+     * Validation for the EchoBoolean operaion according the the default wsdl
+     * A subclass should overrid this if if works with a different wsdl.
+     * 
+     * @param resultEnv
+     */
+    protected void assertR2DefaultEchoBooleanResult (SOAPEnvelope resultEnv) throws AxisFault {
+    	SOAPBody body = resultEnv.getBody();
+    	OMElement payload = body.getFirstElement();
+    	assertNotNull(payload);
+    	try {
+			String xPathExpr = seperator + seperator + nsPrefix + colon + echoBooleanResponse + seperator + ret + seperator + textNodeSelector;
+			AXIOMXPath xpath = new AXIOMXPath (xPathExpr);
+			addNamespaces(xpath);
+			OMText textElem =  (OMText) xpath.selectSingleNode(payload);
+			assertNotNull(textElem);
+			
+			assertEquals(textElem.getText(),WhiteMesaConstants.ECHO_BOOLEAN);
+		} catch (JaxenException e) {
+			throw new AxisFault (e);
+		}
+    }
+    
+    protected void assertValueIsInThePayload (SOAPEnvelope envelope,String value) {
+    	SOAPBody body = envelope.getBody();
+
+        assertTrue(body.toString().indexOf(value)!=-1);
+    }
+    
+    private void addNamespaces (XPath xpath) {
+    	SimpleNamespaceContext nsCtx = new SimpleNamespaceContext ();
+        nsCtx.addNamespace(nsPrefix,nsValue);
+        xpath.setNamespaceContext(nsCtx);
+    }
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/Round1Client.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/Round1Client.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/Round1Client.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1ClientUtil.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1ClientUtil.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1FloatArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1FloatArrayUtil.java
new file mode 100644
index 0000000..e4f384b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1FloatArrayUtil.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1FloatArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+
+        OMElement operation = omfactory.createOMElement("echoFloatArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputFloatArray", null);
+        part.declareNamespace(typeNs);
+        part.declareNamespace(encNs);
+        part.addAttribute("type", "xsd:int", typeNs);
+        part.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        part.addAttribute("arrayType", "xsd:float[3]", encNs);
+
+        OMElement value0 = omfactory.createOMElement("varString", null);
+        value0.declareNamespace(typeNs);
+        value0.addAttribute("type", "xsd:float", typeNs);
+        value0.addChild(omfactory.createOMText("45.76876"));
+        OMElement value1 = omfactory.createOMElement("varInt", null);
+        value1.declareNamespace(typeNs);
+        value1.addAttribute("type", "xsd:float", typeNs);
+        value1.addChild(omfactory.createOMText("43.454"));
+        OMElement value2 = omfactory.createOMElement("varFloat", null);
+        value2.declareNamespace(typeNs);
+        value2.addAttribute("type", "xsd:float", typeNs);
+        value2.addChild(omfactory.createOMText("2523.542"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1FloatUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1FloatUtil.java
new file mode 100644
index 0000000..47ecacd
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1FloatUtil.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1FloatUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+
+        OMElement operation = omfactory.createOMElement("echoFloat", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputFloat", null);
+        part.declareNamespace(typeNs);
+        part.addAttribute("type", "xsd:float", typeNs);
+        part.addChild(omfactory.createOMText("50.25"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1IntArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1IntArrayUtil.java
new file mode 100644
index 0000000..d4efeff
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1IntArrayUtil.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1IntArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+
+        OMElement operation = omfactory.createOMElement("echoIntegerArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        OMElement part = omfactory.createOMElement("inputIntegerArray", "", null);
+        part.declareNamespace(typeNs);
+        part.declareNamespace(encNs);
+        part.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        part.addAttribute("arrayType", "xsd:int[3]", encNs);
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.declareNamespace(typeNs);
+        value0.addAttribute("type", "xsd:int", typeNs);
+        value0.addChild(omfactory.createOMText("451"));
+        OMElement value1 = omfactory.createOMElement("varString", null);
+        value1.declareNamespace(typeNs);
+        value1.addAttribute("type", "xsd:int", typeNs);
+        value1.addChild(omfactory.createOMText("425"));
+        OMElement value2 = omfactory.createOMElement("varString", null);
+        value2.declareNamespace(typeNs);
+        value2.addAttribute("type", "xsd:int", typeNs);
+        value2.addChild(omfactory.createOMText("2523"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1IntegerUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1IntegerUtil.java
new file mode 100644
index 0000000..99a844d
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1IntegerUtil.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1IntegerUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+
+        OMElement operation = omfactory.createOMElement("echoInteger", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputInteger", "", null);
+        part.declareNamespace(typeNs);
+        part.addAttribute("type", "xsd:int", typeNs);
+        part.addChild(omfactory.createOMText("52"));
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StringArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StringArrayUtil.java
new file mode 100644
index 0000000..74e1b42
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StringArrayUtil.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1StringArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/1999/XMLSchema-instance/", "xsi");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAPENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+
+        OMElement operation = omfactory.createOMElement("echoStringArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputStringArray", null);
+        part.declareNamespace(typeNs);
+        part.declareNamespace(encNs);
+        part.addAttribute("type", "SOAPENC:Array", typeNs);
+        part.addAttribute("arrayType", "xsd:string[3]", encNs);
+
+        OMElement value0 = omfactory.createOMElement("item", "", null);
+        value0.declareNamespace(typeNs);
+        value0.addAttribute("type", "xsd:string", typeNs);
+        value0.addChild(omfactory.createOMText("Apache Axis2"));
+        OMElement value1 = omfactory.createOMElement("item", "", null);
+        value1.declareNamespace(typeNs);
+        value1.addAttribute("type", "xsd:string", typeNs);
+        value1.addChild(omfactory.createOMText("Lanka Software Foundation"));
+        OMElement value2 = omfactory.createOMElement("item", "", null);
+        value2.declareNamespace(typeNs);
+        value2.addAttribute("type", "xsd:string", typeNs);
+        value2.addChild(omfactory.createOMText("www.opensource.lk"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StringUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StringUtil.java
new file mode 100644
index 0000000..e22b805
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StringUtil.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1StringUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+        SOAPFactory omFactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omFactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://soapinterop.org/", "ns1");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/1999/XMLSchema", "xsd");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/1999/XMLSchema-instance/", "xsi");
+
+        OMElement method = omFactory.createOMElement("echoString", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(method);
+        method.addAttribute("encordingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement value = omFactory.createOMElement("inputString", "http://soapinterop.org/", null);
+        value.declareNamespace(typeNs);
+        value.addAttribute("type", "xsd:string", typeNs);
+        value.addChild(omFactory.createOMText("Lanka Software Foundation"));
+        method.addChild(value);
+
+        return reqEnv;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StructArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StructArrayUtil.java
new file mode 100644
index 0000000..68757a9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StructArrayUtil.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1StructArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+
+        OMElement operation = omfactory.createOMElement("echoStructArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputStructArray", null);
+        part.declareNamespace(encNs);
+        part.declareNamespace(typeNs);
+        part.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        part.addAttribute("arrayType", "s:SOAPStruct[3]", encNs);
+
+        OMElement item0 = omfactory.createOMElement("item0", null);
+
+        OMElement value00 = omfactory.createOMElement("varString", null);
+        value00.declareNamespace(typeNs);
+        value00.addAttribute("type", "xsd:string", typeNs);
+        value00.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value01 = omfactory.createOMElement("varInt", null);
+        value01.declareNamespace(typeNs);
+        value01.addAttribute("type", "xsd:int", typeNs);
+        value01.addChild(omfactory.createOMText("25"));
+        OMElement value02 = omfactory.createOMElement("varFloat", null);
+        value02.declareNamespace(typeNs);
+        value02.addAttribute("type", "xsd:float", typeNs);
+        value02.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item1 = omfactory.createOMElement("item0", null);
+
+        OMElement value10 = omfactory.createOMElement("varString", null);
+        value10.declareNamespace(typeNs);
+        value10.addAttribute("type", "xsd:string", typeNs);
+        value10.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value11 = omfactory.createOMElement("varInt", null);
+        value11.declareNamespace(typeNs);
+        value11.addAttribute("type", "xsd:int", typeNs);
+        value11.addChild(omfactory.createOMText("25"));
+        OMElement value12 = omfactory.createOMElement("varFloat", null);
+        value12.declareNamespace(typeNs);
+        value12.addAttribute("type", "xsd:float", typeNs);
+        value12.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item2 = omfactory.createOMElement("item0", null);
+
+        OMElement value20 = omfactory.createOMElement("varString", null);
+        value20.declareNamespace(typeNs);
+        value20.addAttribute("type", "xsd:string", typeNs);
+        value20.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value21 = omfactory.createOMElement("varInt", null);
+        value21.declareNamespace(typeNs);
+        value21.addAttribute("type", "xsd:int", typeNs);
+        value21.addChild(omfactory.createOMText("25"));
+        OMElement value22 = omfactory.createOMElement("varFloat", null);
+        value22.declareNamespace(typeNs);
+        value22.addAttribute("type", "xsd:float", typeNs);
+        value22.addChild(omfactory.createOMText("25.23"));
+
+        item0.addChild(value00);
+        item0.addChild(value01);
+        item0.addChild(value02);
+
+        item1.addChild(value10);
+        item1.addChild(value11);
+        item1.addChild(value12);
+
+        item2.addChild(value20);
+        item2.addChild(value21);
+        item2.addChild(value22);
+
+        part.addChild(item0);
+        part.addChild(item1);
+        part.addChild(item2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StructUtil.java
new file mode 100644
index 0000000..5fa79b3
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1StructUtil.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1StructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+
+        OMElement operation = omfactory.createOMElement("echoStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        OMElement part = omfactory.createOMElement("inputStruct", null);
+        part.declareNamespace(typeNs);
+        part.addAttribute("type", "xsd:SOAPStruct", typeNs);
+
+        OMElement value0 = omfactory.createOMElement("varString", null);
+        value0.declareNamespace(typeNs);
+        value0.addAttribute("type", "xsd:string", typeNs);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varInt", null);
+        value1.declareNamespace(typeNs);
+        value1.addAttribute("type", "xsd:int", typeNs);
+        value1.addChild(omfactory.createOMText("25"));
+        OMElement value2 = omfactory.createOMElement("varFloat", null);
+        value2.declareNamespace(typeNs);
+        value2.addAttribute("type", "xsd:float", typeNs);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1VoidUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1VoidUtil.java
new file mode 100644
index 0000000..b81a1a3
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round1/util/Round1VoidUtil.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round1.util;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round1VoidUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+
+        OMElement operation = omfactory.createOMElement("echoVoid", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/SunRound2Client.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/SunRound2Client.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/SunRound2Client.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEcho2DStringArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEcho2DStringArrayUtil.java
new file mode 100644
index 0000000..0e91772
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEcho2DStringArrayUtil.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbEcho2DStringArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echo2DStringArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("input2DStringArray", null);
+        part.declareNamespace(typeNs);
+        part.declareNamespace(encNs);
+        part.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        part.addAttribute("arrayType", "xsd:string[2,2]", encNs);
+
+        OMElement value0 = omfactory.createOMElement("varString", null);
+        value0.declareNamespace(typeNs);
+        value0.addAttribute("type", "xsd:string", typeNs);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varString", null);
+        value1.declareNamespace(typeNs);
+        value1.addAttribute("type", "xsd:string", typeNs);
+        value1.addChild(omfactory.createOMText("sdfsdf25"));
+        OMElement value2 = omfactory.createOMElement("varString", null);
+        value2.declareNamespace(typeNs);
+        value2.addAttribute("type", "xsd:string", typeNs);
+        value2.addChild(omfactory.createOMText("25dsasd dfasdas23"));
+        OMElement value3 = omfactory.createOMElement("varString", null);
+        value3.declareNamespace(typeNs);
+        value3.addAttribute("type", "xsd:string", typeNs);
+        value3.addChild(omfactory.createOMText("25dsasd dfasdas23"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+        part.addChild(value3);
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoNestedArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoNestedArrayUtil.java
new file mode 100644
index 0000000..f2e68ca
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoNestedArrayUtil.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbEchoNestedArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+
+        OMElement operation = omfactory.createOMElement("echoNestedArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputStruct", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+
+        OMElement value0 = omfactory.createOMElement("varString", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+
+        OMElement value1 = omfactory.createOMElement("varInt", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+
+        OMElement value2 = omfactory.createOMElement("varFloat", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        OMElement value3 = omfactory.createOMElement("varArray", null);
+        part.addAttribute("xsi:type", "s:SOAPArrayStruct", null);
+        value3.declareNamespace(encNs);
+        value3.addAttribute("arrayType", "xsd:string[3]", encNs);
+
+        OMElement value30 = omfactory.createOMElement("item", null);
+        value30.addAttribute("xsi:type", "xsd:string", null);
+        value30.addChild(omfactory.createOMText("strss fdfing1"));
+
+        OMElement value31 = omfactory.createOMElement("item", null);
+        value31.addAttribute("xsi:type", "xsd:string", null);
+        value31.addChild(omfactory.createOMText("strss fdfing2"));
+
+        OMElement value32 = omfactory.createOMElement("item", null);
+        value32.addAttribute("xsi:type", "xsd:string", null);
+        value32.addChild(omfactory.createOMText("strss fdfing3"));
+
+        value3.addChild(value30);
+        value3.addChild(value31);
+        value3.addChild(value32);
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+        part.addChild(value3);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoNestedStructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoNestedStructUtil.java
new file mode 100644
index 0000000..67ae4f4
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoNestedStructUtil.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbEchoNestedStructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoNestedStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStructStruct", null);
+
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        OMElement value3 = omfactory.createOMElement("varStruct", "", null);
+
+        OMElement value30 = omfactory.createOMElement("varString", "", null);
+        value30.addAttribute("xsi:type", "xsd:string", null);
+        value30.addChild(omfactory.createOMText("strss fdfing1"));
+
+        OMElement value31 = omfactory.createOMElement("varInt", "", null);
+        value31.addAttribute("xsi:type", "xsd:int", null);
+        value31.addChild(omfactory.createOMText("25"));
+
+        OMElement value32 = omfactory.createOMElement("varFloat", "", null);
+        value32.addAttribute("xsi:type", "xsd:float", null);
+        value32.addChild(omfactory.createOMText("25.23"));
+
+        value3.addChild(value30);
+        value3.addChild(value31);
+        value3.addChild(value32);
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+        part.addChild(value3);
+
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoSimpleTypesAsStructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoSimpleTypesAsStructUtil.java
new file mode 100644
index 0000000..de0f415
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoSimpleTypesAsStructUtil.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbEchoSimpleTypesAsStructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+
+        OMElement operation = omfactory.createOMElement("echoSimpleTypesAsStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part0 = omfactory.createOMElement("inputString", null);
+        part0.addAttribute("xsi:type", "xsd:string", null);
+        part0.addChild(omfactory.createOMText("45ascasc  acasa asd52"));
+
+        OMElement part1 = omfactory.createOMElement("inputInteger", null);
+        part1.addAttribute("xsi:type", "xsd:int", null);
+        part1.addChild(omfactory.createOMText("4552"));
+
+        OMElement part2 = omfactory.createOMElement("inputFloat", null);
+        part2.addAttribute("xsi:type", "xsd:float", null);
+        part2.addChild(omfactory.createOMText("450.52"));
+
+        operation.addChild(part0);
+        operation.addChild(part1);
+        operation.addChild(part2);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoStructAsSimpleTypesUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoStructAsSimpleTypesUtil.java
new file mode 100644
index 0000000..5d3e227
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupbEchoStructAsSimpleTypesUtil.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbEchoStructAsSimpleTypesUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStructAsSimpleTypes", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcBase64Util.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcBase64Util.java
new file mode 100644
index 0000000..cb08609
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcBase64Util.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcBase64Util implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoBase64", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputBase64", "", null);
+        part.addAttribute("xsi:type", "xsd:base64Binary", null);
+        part.addChild(omfactory.createOMText("SGVsbG8gV29ybGQ="));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcBooleanUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcBooleanUtil.java
new file mode 100644
index 0000000..40c6ca7
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcBooleanUtil.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcBooleanUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.createSOAPEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC"); //xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns"); //xmlns:m0="http://soapinterop.org/echoheader/
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        // header.addChild(headerChild);
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("852"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoBoolean", "http://soapinterop.org/", null);
+        SOAPBody body = omfactory.createSOAPBody(reqEnv);
+        body.addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputBoolean", "", null);
+        part.addAttribute("xsi:type", "xsd:boolean", null);
+        part.addChild(omfactory.createOMText("1"));
+
+        operation.addChild(part);
+        //reqEnv.getBody().addChild(method);    inputBoolean" type="xsd:boolean"/>
+        return reqEnv;
+
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcDateUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcDateUtil.java
new file mode 100644
index 0000000..a46133f
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcDateUtil.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcDateUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC"); //xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns"); //xmlns:m0="http://soapinterop.org/echoheader/
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoDate", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputDate", null);
+        part.addAttribute("xsi:type", "xsd:dateTime", null);
+        part.addChild(omfactory.createOMText("2002-07-18T19:40:30.387-06:00"));
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcDecimalUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcDecimalUtil.java
new file mode 100644
index 0000000..e50774b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcDecimalUtil.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcDecimalUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC"); //xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns"); //xmlns:m0="http://soapinterop.org/echoheader/
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoDecimal", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputDecimal", "", null);
+        part.addAttribute("xsi:type", "xsd:decimal", null);
+        part.addChild(omfactory.createOMText("455646152"));
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcEchoStringUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcEchoStringUtil.java
new file mode 100644
index 0000000..5246a7b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcEchoStringUtil.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcEchoStringUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.createSOAPEnvelope();
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.declareNamespace(typeNs);
+        block1.addAttribute("type", "xsd:string", typeNs);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.declareNamespace(typeNs);
+        block2.addAttribute("type", "s:SOAPStruct", typeNs);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.declareNamespace(typeNs);
+        h2Val1.addAttribute("type", "xsd:string", typeNs);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.declareNamespace(typeNs);
+        h2Val2.addAttribute("type", "xsd:int", typeNs);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.declareNamespace(typeNs);
+        h2Val3.addAttribute("type", "xsd:float", typeNs);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoString", "http://soapinterop.org/", null);
+
+        SOAPBody body = omfactory.createSOAPBody(reqEnv);
+        body.addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputString", null);
+        part.declareNamespace(typeNs);
+        part.addAttribute("type", "xsd:string", typeNs);
+        part.addChild(omfactory.createOMText("strssfdfing1"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcFloatArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcFloatArrayUtil.java
new file mode 100644
index 0000000..4f02381
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcFloatArrayUtil.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcFloatArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        // header.addChild(headerChild);
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoFloatArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputFloatArray", "", null);
+        part.addAttribute("xsi:type", "xsd:int", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:float[3]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:float", null);
+        value0.addChild(omfactory.createOMText("45.76876"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:float", null);
+        value1.addChild(omfactory.createOMText("43.454"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("2523.542"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcFloatUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcFloatUtil.java
new file mode 100644
index 0000000..0779a38
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcFloatUtil.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcFloatUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoFloat", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputFloat", "", null);
+        part.addAttribute("xsi:type", "xsd:float", null);
+        part.addChild(omfactory.createOMText("50.25"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+
+}
+
+
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcHexBinaryUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcHexBinaryUtil.java
new file mode 100644
index 0000000..4c7d4ba
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcHexBinaryUtil.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcHexBinaryUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("852"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoHexBinary", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+        OMElement part = omfactory.createOMElement("inputHexBinary", "", null);
+        part.addAttribute("xsi:type", "xsd:hexBinary", null);
+        part.addChild(omfactory.createOMText("41394644363445313243"));
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
+
+/**
+ <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <SOAP-ENV:Body>
+ <m:echoHexBinary xmlns:m="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+ <inputHexBinary xsi:type="xsd:hexBinary">41394644363445313243</inputHexBinary>
+ </m:echoHexBinary>
+ </SOAP-ENV:Body>
+ </SOAP-ENV:Envelope>
+ */
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcIntegerArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcIntegerArrayUtil.java
new file mode 100644
index 0000000..4a20376
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcIntegerArrayUtil.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcIntegerArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.createSOAPEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoIntegerArray", "http://soapinterop.org/", null);
+        SOAPBody body = omfactory.createSOAPBody(reqEnv);
+        body.addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+        OMElement part = omfactory.createOMElement("inputIntegerArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:int[3]", null);
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:int", null);
+        value0.addChild(omfactory.createOMText("451"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("425"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:int", null);
+        value2.addChild(omfactory.createOMText("2523"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcIntergerUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcIntergerUtil.java
new file mode 100644
index 0000000..c466027
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcIntergerUtil.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcIntergerUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.createSOAPEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/","soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema","xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/","SOAP-ENC"); //xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance","xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd","s");
+        reqEnv.declareNamespace("http://soapinterop.org/","m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns= reqEnv.declareNamespace("http://soapinterop.org/echoheader/","hns"); //xmlns:m0="http://soapinterop.org/echoheader/
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest",hns);
+        block1.addAttribute("xsi:type","xsd:string",null);
+        block1.addChild(omfactory.createOMText("string"));
+       // header.addChild(headerChild);
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest",hns);
+        block2.addAttribute("xsi:type","s:SOAPStruct",null);
+
+        OMElement h2Val1=omfactory.createOMElement("varString",null);
+        h2Val1.addAttribute("xsi:type","xsd:string",null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2=omfactory.createOMElement("varInt",null);
+        h2Val2.addAttribute("xsi:type","xsd:int",null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3=omfactory.createOMElement("varFloat",null);
+        h2Val3.addAttribute("xsi:type","xsd:float",null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoInteger","http://soapinterop.org/",  null);
+
+        //operation.setNamespace(ns);
+        SOAPBody body = omfactory.createSOAPBody(reqEnv);
+        body.addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputInteger", null);
+        part.addAttribute("xsi:type", "xsd:int", null);
+        part.addChild(omfactory.createOMText("456"));
+
+        operation.addChild(part);
+        //reqEnv.getBody().addChild(method);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStringArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStringArrayUtil.java
new file mode 100644
index 0000000..dbf9276
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStringArrayUtil.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcStringArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.createSOAPEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/","soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema","xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/","SOAP-ENC"); //xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance","xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd","s");
+        reqEnv.declareNamespace("http://soapinterop.org/","m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns= reqEnv.declareNamespace("http://soapinterop.org/echoheader/","hns"); //xmlns:m0="http://soapinterop.org/echoheader/
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest",hns);
+        block1.addAttribute("xsi:type","xsd:string",null);
+        block1.addChild(omfactory.createOMText("string"));
+       // header.addChild(headerChild);
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest",hns);
+        block2.addAttribute("xsi:type","s:SOAPStruct",null);
+
+        OMElement h2Val1=omfactory.createOMElement("varString",null);
+        h2Val1.addAttribute("xsi:type","xsd:string",null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2=omfactory.createOMElement("varInt",null);
+        h2Val2.addAttribute("xsi:type","xsd:int",null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3=omfactory.createOMElement("varFloat",null);
+        h2Val3.addAttribute("xsi:type","xsd:float",null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoStringArray", "http://soapinterop.org/", null);
+        SOAPBody body = omfactory.createSOAPBody(reqEnv);
+        body.addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputStringArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:string[3]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("Apache Axis2"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:string", null);
+        value1.addChild(omfactory.createOMText("Lanka Software Foundation"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:string", null);
+        value2.addChild(omfactory.createOMText("www.opensource.lk"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        //reqEnv.getBody().addChild(method);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStructArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStructArrayUtil.java
new file mode 100644
index 0000000..5a20631
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStructArrayUtil.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcStructArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoStructArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputStructArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "s:SOAPStruct[3]", null);
+
+        OMElement item0 = omfactory.createOMElement("item0", null);
+
+        OMElement value00 = omfactory.createOMElement("varString", "", null);
+        value00.addAttribute("xsi:type", "xsd:string", null);
+        value00.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value01 = omfactory.createOMElement("varInt", "", null);
+        value01.addAttribute("xsi:type", "xsd:int", null);
+        value01.addChild(omfactory.createOMText("25"));
+        OMElement value02 = omfactory.createOMElement("varFloat", "", null);
+        value02.addAttribute("xsi:type", "xsd:float", null);
+        value02.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item1 = omfactory.createOMElement("item0", null);
+
+        OMElement value10 = omfactory.createOMElement("varString", "", null);
+        value10.addAttribute("xsi:type", "xsd:string", null);
+        value10.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value11 = omfactory.createOMElement("varInt", "", null);
+        value11.addAttribute("xsi:type", "xsd:int", null);
+        value11.addChild(omfactory.createOMText("25"));
+        OMElement value12 = omfactory.createOMElement("varFloat", "", null);
+        value12.addAttribute("xsi:type", "xsd:float", null);
+        value12.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item2 = omfactory.createOMElement("item0", null);
+
+        OMElement value20 = omfactory.createOMElement("varString", "", null);
+        value20.addAttribute("xsi:type", "xsd:string", null);
+        value20.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value21 = omfactory.createOMElement("varInt", "", null);
+        value21.addAttribute("xsi:type", "xsd:int", null);
+        value21.addChild(omfactory.createOMText("25"));
+        OMElement value22 = omfactory.createOMElement("varFloat", "", null);
+        value22.addAttribute("xsi:type", "xsd:float", null);
+        value22.addChild(omfactory.createOMText("25.23"));
+
+        item0.addChild(value00);
+        item0.addChild(value01);
+        item0.addChild(value02);
+
+        item1.addChild(value10);
+        item1.addChild(value11);
+        item1.addChild(value12);
+
+        item2.addChild(value20);
+        item2.addChild(value21);
+        item2.addChild(value22);
+
+        part.addChild(item0);
+        part.addChild(item1);
+        part.addChild(item2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStructUtil.java
new file mode 100644
index 0000000..15dbb48
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcStructUtil.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcStructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcVoidUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcVoidUtil.java
new file mode 100644
index 0000000..5b081c1
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/GroupcVoidUtil.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcVoidUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+
+        OMElement operation = omfactory.createOMElement("echoVoid", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        return reqEnv;
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/R2MSaxms2DStringArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/R2MSaxms2DStringArrayUtil.java
new file mode 100644
index 0000000..1bd3288
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/R2MSaxms2DStringArrayUtil.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class R2MSaxms2DStringArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echo2DStringArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("input2DStringArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:string[2]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("Apache Axis2"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:string", null);
+        value1.addChild(omfactory.createOMText("Lanka Software Foundation"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:string", null);
+        value2.addChild(omfactory.createOMText("www.opensource.lk"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        //reqEnv.getBody().addChild(method);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoBase64ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoBase64ClientUtil.java
new file mode 100644
index 0000000..933bd86
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoBase64ClientUtil.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+public class Round2EchoBase64ClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoBase64", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputBase64", "", null);
+        part.addAttribute("xsi:type", "xsd:base64Binary", null);
+//        DataHandler data = new DataHandler(new ByteArrayDataSource("WebServices".getBytes()));
+//        OMText base64EncodedText = omfactory.createOMText(data, true );
+//        part.addChild(base64EncodedText);
+        part.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_BASE_64));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoBooleanClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoBooleanClientUtil.java
new file mode 100644
index 0000000..4f63830
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoBooleanClientUtil.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+public class Round2EchoBooleanClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoBoolean", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputBoolean", "", null);
+        part.addAttribute("xsi:type", "xsd:boolean", null);
+        part.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_BOOLEAN));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoDateClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoDateClientUtil.java
new file mode 100644
index 0000000..f39dffd
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoDateClientUtil.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+
+public class Round2EchoDateClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+
+        OMElement operation = omfactory.createOMElement("echoDate", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputDate", null);
+        part.addAttribute("xsi:type", "xsd:dateTime", null);
+        part.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_DATE));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoDecimalClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoDecimalClientUtil.java
new file mode 100644
index 0000000..15ead4b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoDecimalClientUtil.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+
+public class Round2EchoDecimalClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoDecimal", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputDecimal", "", null);
+        part.addAttribute("xsi:type", "xsd:decimal", null);
+        part.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_DECIMAL));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoFloatArrayClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoFloatArrayClientUtil.java
new file mode 100644
index 0000000..f444a05
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoFloatArrayClientUtil.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+public class Round2EchoFloatArrayClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance","xsi");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        
+
+        OMElement operation = omfactory.createOMElement("echoFloatArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputFloatArray", null);
+        part.declareNamespace(typeNs);
+        part.declareNamespace(encNs);
+        part.addAttribute("type", "xsd:int", typeNs);
+        part.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        part.addAttribute("arrayType", "xsd:float[3]", encNs);
+
+        OMElement value0 = omfactory.createOMElement("varString", null);
+        value0.addAttribute("xsi:type", "xsd:float", null);
+        value0.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_FLOAT_ARR_1));
+        OMElement value1 = omfactory.createOMElement("varInt", null);
+        value1.addAttribute("xsi:type", "xsd:float", null);
+        value1.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_FLOAT_ARR_2));
+        OMElement value2 = omfactory.createOMElement("varFloat", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_FLOAT_ARR_3));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoFloatClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoFloatClientUtil.java
new file mode 100644
index 0000000..ad63c1b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoFloatClientUtil.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+
+public class Round2EchoFloatClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+
+        OMElement operation = omfactory.createOMElement("echoFloat", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputFloat", "", null);
+        part.addAttribute("xsi:type", "xsd:float", null);
+        part.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_FLOAT));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoHexBinaryClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoHexBinaryClientUtil.java
new file mode 100644
index 0000000..55a6dfe
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoHexBinaryClientUtil.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+
+public class Round2EchoHexBinaryClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://microsoft.com/wsdl/mime/textMatching/", "tm");
+
+        OMElement operation = omfactory.createOMElement("echoHexBinary", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputHexBinary", "", null);
+        part.addAttribute("xsi:type", "xsd:hexBinary", null);
+        part.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_HEX_BINARY));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoIntegerArrayclientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoIntegerArrayclientUtil.java
new file mode 100644
index 0000000..a7fa494
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoIntegerArrayclientUtil.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+public class Round2EchoIntegerArrayclientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+
+        OMElement operation = omfactory.createOMElement("echoIntegerArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        OMElement part = omfactory.createOMElement("inputIntegerArray", null);
+        part.declareNamespace(typeNs);
+        part.declareNamespace(encNs);
+        part.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        part.addAttribute("arrayType", "xsd:int[3]", encNs);
+        OMElement value0 = omfactory.createOMElement("varString", null);
+        value0.declareNamespace(typeNs);
+        value0.addAttribute("type", "xsd:int", typeNs);
+        value0.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_INTEGER_ARR_1));
+        OMElement value1 = omfactory.createOMElement("varString", null);
+        value1.declareNamespace(typeNs);
+        value1.addAttribute("type", "xsd:int", typeNs);
+        value1.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_INTEGER_ARR_2));
+        OMElement value2 = omfactory.createOMElement("varString", null);
+        value2.declareNamespace(typeNs);
+        value2.addAttribute("type", "xsd:int", typeNs);
+        value2.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_INTEGER_ARR_3));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoIntegerClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoIntegerClientUtil.java
new file mode 100644
index 0000000..849c0df
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoIntegerClientUtil.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+public class Round2EchoIntegerClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoInteger", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputInteger", "", null);
+        part.addAttribute("xsi:type", "xsd:int", null);
+        part.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_INTEGER));
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStringArrayClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStringArrayClientUtil.java
new file mode 100644
index 0000000..8053273
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStringArrayClientUtil.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+public class Round2EchoStringArrayClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStringArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputStringArray", null);
+       // part.declareNamespace(typeNs);
+        part.declareNamespace(encNs);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("arrayType", "xsd:string[3]", encNs);
+
+        OMElement value0 = omfactory.createOMElement("varString", null);
+        value0.declareNamespace(typeNs);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRING_ARR_1));
+        OMElement value1 = omfactory.createOMElement("varString", null);
+        value1.declareNamespace(typeNs);
+        value1.addAttribute("xsi:type", "xsd:string", null);
+        value1.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRING_ARR_2));
+        OMElement value2 = omfactory.createOMElement("varString", null);
+        value2.declareNamespace(typeNs);
+        value2.addAttribute("xsi:type", "xsd:string", null);
+        value2.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRING_ARR_3));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStringclientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStringclientUtil.java
new file mode 100644
index 0000000..c19edcd
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStringclientUtil.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+
+public class Round2EchoStringclientUtil implements SunClientUtil {
+
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoString", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("inputString", null);
+        part.declareNamespace(typeNs);
+        part.addAttribute("type", "xsd:string", typeNs);
+        part.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRING));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStructArrayClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStructArrayClientUtil.java
new file mode 100644
index 0000000..d27a111
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStructArrayClientUtil.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+public class Round2EchoStructArrayClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance","xsi");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+
+        OMElement operation = omfactory.createOMElement("echoStructArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputStructArray", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.declareNamespace(encNs);
+        part.addAttribute("arrayType", "s:SOAPStruct[3]", encNs);
+
+        OMElement item0 = omfactory.createOMElement("item0", null);
+
+        OMElement value00 = omfactory.createOMElement("varString", null);
+        value00.addAttribute("xsi:type", "xsd:string", null);
+        value00.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1));
+        OMElement value01 = omfactory.createOMElement("varInt", null);
+        value01.addAttribute("xsi:type", "xsd:int", null);
+        value01.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1));
+        OMElement value02 = omfactory.createOMElement("varFloat", null);
+        value02.addAttribute("xsi:type", "xsd:float", null);
+        value02.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1));
+
+        OMElement item1 = omfactory.createOMElement("item0", null);
+
+        OMElement value10 = omfactory.createOMElement("varString", null);
+        value10.addAttribute("xsi:type", "xsd:string", null);
+        value10.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2));
+        OMElement value11 = omfactory.createOMElement("varInt", null);
+        value11.addAttribute("xsi:type", "xsd:int", null);
+        value11.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2));
+        OMElement value12 = omfactory.createOMElement("varFloat", null);
+        value12.addAttribute("xsi:type", "xsd:float", null);
+        value12.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2));
+
+        OMElement item2 = omfactory.createOMElement("item0", null);
+
+        OMElement value20 = omfactory.createOMElement("varString", null);
+        value20.addAttribute("xsi:type", "xsd:string", null);
+        value20.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3));
+        OMElement value21 = omfactory.createOMElement("varInt", null);
+        value21.addAttribute("xsi:type", "xsd:int", null);
+        value21.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3));
+        OMElement value22 = omfactory.createOMElement("varFloat", null);
+        value22.addAttribute("xsi:type", "xsd:float", null);
+        value22.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3));
+
+        item0.addChild(value00);
+        item0.addChild(value01);
+        item0.addChild(value02);
+
+        item1.addChild(value10);
+        item1.addChild(value11);
+        item1.addChild(value12);
+
+        item2.addChild(value20);
+        item2.addChild(value21);
+        item2.addChild(value22);
+
+        part.addChild(item0);
+        part.addChild(item1);
+        part.addChild(item2);
+
+        operation.addChild(part);
+
+        //reqEnv.getBody().addChild(method);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStructClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStructClientUtil.java
new file mode 100644
index 0000000..d23ac87
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoStructClientUtil.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+import test.interop.whitemesa.WhiteMesaConstants;
+
+
+public class Round2EchoStructClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_STRING));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_INT));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText(WhiteMesaConstants.ECHO_STRUCT_FLOAT));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+    }
+}    
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoVoidClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoVoidClientUtil.java
new file mode 100644
index 0000000..c3b1cff
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/Round2EchoVoidClientUtil.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2EchoVoidClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+
+        OMElement operation = omfactory.createOMElement("echoVoid", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        return reqEnv;
+
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/SunRound2ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/SunRound2ClientUtil.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/SunRound2ClientUtil.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12Echo2DStringArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12Echo2DStringArrayUtil.java
new file mode 100644
index 0000000..78088ab
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12Echo2DStringArrayUtil.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbSoap12Echo2DStringArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echo2DStringArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("input2DStringArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:string[2,2]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:string", null);
+        value1.addChild(omfactory.createOMText("sdfsdf25"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:string", null);
+        value2.addChild(omfactory.createOMText("25dsasd dfasdas23"));
+        OMElement value3 = omfactory.createOMElement("varString", "", null);
+        value3.addAttribute("xsi:type", "xsd:string", null);
+        value3.addChild(omfactory.createOMText("25dsasd dfasdas23"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+        part.addChild(value3);
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoNestedArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoNestedArrayUtil.java
new file mode 100644
index 0000000..6e08afd
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoNestedArrayUtil.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbSoap12EchoNestedArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoNestedArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        OMElement value3 = omfactory.createOMElement("varArray", "", null);
+        part.addAttribute("xsi:type", "s:SOAPArrayStruct", null);
+        value3.addAttribute("SOAP-ENC:arrayType", "xsd:string[3]", null);
+
+        OMElement value30 = omfactory.createOMElement("item", "", null);
+        value30.addAttribute("xsi:type", "xsd:string", null);
+        value30.addChild(omfactory.createOMText("strss fdfing1"));
+
+        OMElement value31 = omfactory.createOMElement("item", "", null);
+        value31.addAttribute("xsi:type", "xsd:string", null);
+        value31.addChild(omfactory.createOMText("strss fdfing2"));
+
+        OMElement value32 = omfactory.createOMElement("item", "", null);
+        value32.addAttribute("xsi:type", "xsd:string", null);
+        value32.addChild(omfactory.createOMText("strss fdfing3"));
+
+        value3.addChild(value30);
+        value3.addChild(value31);
+        value3.addChild(value32);
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+        part.addChild(value3);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoNestedStructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoNestedStructUtil.java
new file mode 100644
index 0000000..9824616
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoNestedStructUtil.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbSoap12EchoNestedStructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoNestedStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStructStruct", null);
+
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        OMElement value3 = omfactory.createOMElement("varStruct", "", null);
+
+        OMElement value30 = omfactory.createOMElement("varString", "", null);
+        value30.addAttribute("xsi:type", "xsd:string", null);
+        value30.addChild(omfactory.createOMText("strss fdfing1"));
+
+        OMElement value31 = omfactory.createOMElement("varInt", "", null);
+        value31.addAttribute("xsi:type", "xsd:int", null);
+        value31.addChild(omfactory.createOMText("25"));
+
+        OMElement value32 = omfactory.createOMElement("varFloat", "", null);
+        value32.addAttribute("xsi:type", "xsd:float", null);
+        value32.addChild(omfactory.createOMText("25.23"));
+
+        value3.addChild(value30);
+        value3.addChild(value31);
+        value3.addChild(value32);
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+        part.addChild(value3);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoSimpleTypesAsStructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoSimpleTypesAsStructUtil.java
new file mode 100644
index 0000000..6a6f81a
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoSimpleTypesAsStructUtil.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbSoap12EchoSimpleTypesAsStructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoSimpleTypesAsStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part0 = omfactory.createOMElement("inputString", "", null);
+        part0.addAttribute("xsi:type", "xsd:string", null);
+        part0.addChild(omfactory.createOMText("45ascasc  acasa asd52"));
+
+        OMElement part1 = omfactory.createOMElement("inputInteger", "", null);
+        part1.addAttribute("xsi:type", "xsd:int", null);
+        part1.addChild(omfactory.createOMText("4552"));
+
+        OMElement part2 = omfactory.createOMElement("inputFloat", "", null);
+        part2.addAttribute("xsi:type", "xsd:float", null);
+        part2.addChild(omfactory.createOMText("450.52"));
+
+        operation.addChild(part0);
+        operation.addChild(part1);
+        operation.addChild(part2);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoStructAsSimpleTypesUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoStructAsSimpleTypesUtil.java
new file mode 100644
index 0000000..150899a
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupbSoap12EchoStructAsSimpleTypesUtil.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupbSoap12EchoStructAsSimpleTypesUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStructAsSimpleTypes", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupcSoap12EchoStringUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupcSoap12EchoStringUtil.java
new file mode 100644
index 0000000..07e0d66
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupcSoap12EchoStringUtil.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcSoap12EchoStringUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoString", "http://soapinterop.org/", null);
+
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputString", null);
+        part.addAttribute("xsi:type", "xsd:string", null);
+        part.addChild(omfactory.createOMText("strssfdfing1"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupcSoap12VoidUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupcSoap12VoidUtil.java
new file mode 100644
index 0000000..6f234e7
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/GroupcSoap12VoidUtil.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GroupcSoap12VoidUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        OMNamespace ns1 =reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", ns1);
+        block2.addAttribute("xsi:type", "hns:echoMeStructRequest", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoVoid", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2SOAP12EchoIntegerArrayclientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2SOAP12EchoIntegerArrayclientUtil.java
new file mode 100644
index 0000000..1141e23
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2SOAP12EchoIntegerArrayclientUtil.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2SOAP12EchoIntegerArrayclientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoIntegerArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+        OMElement part = omfactory.createOMElement("inputIntegerArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:int[3]", null);
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:int", null);
+        value0.addChild(omfactory.createOMText("451"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("425"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:int", null);
+        value2.addChild(omfactory.createOMText("2523"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoBase64ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoBase64ClientUtil.java
new file mode 100644
index 0000000..b80a6d5
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoBase64ClientUtil.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoBase64ClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoBase64", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputBase64", "", null);
+        part.addAttribute("xsi:type", "xsd:base64Binary", null);
+        part.addChild(omfactory.createOMText("UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoBooleanClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoBooleanClientUtil.java
new file mode 100644
index 0000000..3c23cdf
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoBooleanClientUtil.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoBooleanClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoBoolean", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputBoolean", "", null);
+        part.addAttribute("xsi:type", "xsd:boolean", null);
+        part.addChild(omfactory.createOMText("true"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoDateClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoDateClientUtil.java
new file mode 100644
index 0000000..f049176
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoDateClientUtil.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoDateClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoDate", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputDate", "", null);
+        part.addAttribute("xsi:type", "xsd:dateTime", null);
+        part.addChild(omfactory.createOMText("2002-07-18T19:40:30.387-06:00"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoDecimalClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoDecimalClientUtil.java
new file mode 100644
index 0000000..e2e0cf5
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoDecimalClientUtil.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoDecimalClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoDecimal", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputDecimal", "", null);
+        part.addAttribute("xsi:type", "xsd:decimal", null);
+        part.addChild(omfactory.createOMText("455646152"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoFloatArrayClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoFloatArrayClientUtil.java
new file mode 100644
index 0000000..c2f8d68
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoFloatArrayClientUtil.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoFloatArrayClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoFloatArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputFloatArray", "", null);
+        part.addAttribute("xsi:type", "xsd:int", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:float[3]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:float", null);
+        value0.addChild(omfactory.createOMText("45.76876"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:float", null);
+        value1.addChild(omfactory.createOMText("43.454"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("2523.542"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoFloatClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoFloatClientUtil.java
new file mode 100644
index 0000000..7e47908
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoFloatClientUtil.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoFloatClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoFloat", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputFloat", "", null);
+        part.addAttribute("xsi:type", "xsd:float", null);
+        part.addChild(omfactory.createOMText("50.25"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoHexBinaryUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoHexBinaryUtil.java
new file mode 100644
index 0000000..62900ed
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoHexBinaryUtil.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoHexBinaryUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoHexBinary", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputHexBinary", "", null);
+        part.addAttribute("xsi:type", "xsd:hexBinary", null);
+        part.addChild(omfactory.createOMText("AAABBAAE"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoStructArrayClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoStructArrayClientUtil.java
new file mode 100644
index 0000000..48f37a6
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoStructArrayClientUtil.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoStructArrayClientUtil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStructArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputStructArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "s:SOAPStruct[3]", null);
+
+        OMElement item0 = omfactory.createOMElement("item0", null);
+
+        OMElement value00 = omfactory.createOMElement("varString", "", null);
+        value00.addAttribute("xsi:type", "xsd:string", null);
+        value00.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value01 = omfactory.createOMElement("varInt", "", null);
+        value01.addAttribute("xsi:type", "xsd:int", null);
+        value01.addChild(omfactory.createOMText("25"));
+        OMElement value02 = omfactory.createOMElement("varFloat", "", null);
+        value02.addAttribute("xsi:type", "xsd:float", null);
+        value02.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item1 = omfactory.createOMElement("item0", null);
+
+        OMElement value10 = omfactory.createOMElement("varString", "", null);
+        value10.addAttribute("xsi:type", "xsd:string", null);
+        value10.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value11 = omfactory.createOMElement("varInt", "", null);
+        value11.addAttribute("xsi:type", "xsd:int", null);
+        value11.addChild(omfactory.createOMText("25"));
+        OMElement value12 = omfactory.createOMElement("varFloat", "", null);
+        value12.addAttribute("xsi:type", "xsd:float", null);
+        value12.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item2 = omfactory.createOMElement("item0", null);
+
+        OMElement value20 = omfactory.createOMElement("varString", "", null);
+        value20.addAttribute("xsi:type", "xsd:string", null);
+        value20.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value21 = omfactory.createOMElement("varInt", "", null);
+        value21.addAttribute("xsi:type", "xsd:int", null);
+        value21.addChild(omfactory.createOMText("25"));
+        OMElement value22 = omfactory.createOMElement("varFloat", "", null);
+        value22.addAttribute("xsi:type", "xsd:float", null);
+        value22.addChild(omfactory.createOMText("25.23"));
+
+        item0.addChild(value00);
+        item0.addChild(value01);
+        item0.addChild(value02);
+
+        item1.addChild(value10);
+        item1.addChild(value11);
+        item1.addChild(value12);
+
+        item2.addChild(value20);
+        item2.addChild(value21);
+        item2.addChild(value22);
+
+        part.addChild(item0);
+        part.addChild(item1);
+        part.addChild(item2);
+
+        operation.addChild(part);
+
+        //reqEnv.getBody().addChild(method);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoStructClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoStructClientUtil.java
new file mode 100644
index 0000000..0c0d0f4
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoStructClientUtil.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoStructClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        //reqEnv.getBody().addChild(method);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoVoidClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoVoidClientUtil.java
new file mode 100644
index 0000000..6ae768c
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12EchoVoidClientUtil.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12EchoVoidClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoVoid", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12IntegerUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12IntegerUtil.java
new file mode 100644
index 0000000..4e4cc97
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12IntegerUtil.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12IntegerUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoInteger", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputInteger", "", null);
+        part.addAttribute("xsi:type", "xsd:int", null);
+        part.addChild(omfactory.createOMText("52"));
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12StringArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12StringArrayUtil.java
new file mode 100644
index 0000000..5c6d016
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12StringArrayUtil.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12StringArrayUtil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStringArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputStringArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:string[3]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("Apache Axis2"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:string", null);
+        value1.addChild(omfactory.createOMText("Lanka Software Foundation"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:string", null);
+        value2.addChild(omfactory.createOMText("www.opensource.lk"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12StringUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12StringUtil.java
new file mode 100644
index 0000000..34889df
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/Round2Soap12StringUtil.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class Round2Soap12StringUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+
+        OMElement operation = omfactory.createOMElement("echoString", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputString", "", null);
+        part.addAttribute("xsi:type", "xsd:string", null);
+        part.addChild(omfactory.createOMText("String Argument"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Saop12GroupcFloatUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Saop12GroupcFloatUtil.java
new file mode 100644
index 0000000..e5d7b99
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Saop12GroupcFloatUtil.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Saop12GroupcFloatUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoFloat", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputFloat", "", null);
+        part.addAttribute("xsi:type", "xsd:float", null);
+        part.addChild(omfactory.createOMText("50.25"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcBase64Util.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcBase64Util.java
new file mode 100644
index 0000000..05e9062
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcBase64Util.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcBase64Util implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoBase64", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputBase64", "", null);
+        part.addAttribute("xsi:type", "xsd:base64Binary", null);
+        part.addChild(omfactory.createOMText("SGVsbG8gV29ybGQ="));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcBooleanUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcBooleanUtil.java
new file mode 100644
index 0000000..d70e0c1
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcBooleanUtil.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcBooleanUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("852"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoBoolean", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputBoolean", "", null);
+        part.addAttribute("xsi:type", "xsd:boolean", null);
+        part.addChild(omfactory.createOMText("1"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcEchoStringUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcEchoStringUtil.java
new file mode 100644
index 0000000..862b587
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcEchoStringUtil.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcEchoStringUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoString", "http://soapinterop.org/", null);
+
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputString", null);
+        part.addAttribute("xsi:type", "xsd:string", null);
+        part.addChild(omfactory.createOMText("Apache Software Foundation"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcFloatArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcFloatArrayUtil.java
new file mode 100644
index 0000000..53e46e1
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcFloatArrayUtil.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcFloatArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoFloatArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputFloatArray", "", null);
+        part.addAttribute("xsi:type", "xsd:int", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:float[3]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:float", null);
+        value0.addChild(omfactory.createOMText("45.76876"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:float", null);
+        value1.addChild(omfactory.createOMText("43.454"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("2523.542"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcHexBinaryUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcHexBinaryUtil.java
new file mode 100644
index 0000000..7a96707
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcHexBinaryUtil.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcHexBinaryUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("852"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoHexBinary", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+        OMElement part = omfactory.createOMElement("inputHexBinary", "", null);
+        part.addAttribute("xsi:type", "xsd:hexBinary", null);
+        part.addChild(omfactory.createOMText("41394644363445313243"));
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcIntegerArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcIntegerArrayUtil.java
new file mode 100644
index 0000000..1df15bb
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcIntegerArrayUtil.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcIntegerArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoIntegerArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+        OMElement part = omfactory.createOMElement("inputIntegerArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:int[3]", null);
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:int", null);
+        value0.addChild(omfactory.createOMText("451"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("425"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:int", null);
+        value2.addChild(omfactory.createOMText("2523"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        //reqEnv.getBody().addChild(method);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcIntergerUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcIntergerUtil.java
new file mode 100644
index 0000000..6c4d9b8
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcIntergerUtil.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcIntergerUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoInteger", "http://soapinterop.org/", null);
+
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputInteger", null);
+        part.addAttribute("xsi:type", "xsd:int", null);
+        part.addChild(omfactory.createOMText("456"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStringArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStringArrayUtil.java
new file mode 100644
index 0000000..751e7a1
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStringArrayUtil.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcStringArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoStringArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputStringArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:string[3]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("Apache Axis2"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:string", null);
+        value1.addChild(omfactory.createOMText("Lanka Software Foundation"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:string", null);
+        value2.addChild(omfactory.createOMText("www.opensource.lk"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStructArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStructArrayUtil.java
new file mode 100644
index 0000000..7dae10f
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStructArrayUtil.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcStructArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoStructArray", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        OMElement part = omfactory.createOMElement("inputStructArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "s:SOAPStruct[3]", null);
+
+        OMElement item0 = omfactory.createOMElement("item0", null);
+
+        OMElement value00 = omfactory.createOMElement("varString", "", null);
+        value00.addAttribute("xsi:type", "xsd:string", null);
+        value00.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value01 = omfactory.createOMElement("varInt", "", null);
+        value01.addAttribute("xsi:type", "xsd:int", null);
+        value01.addChild(omfactory.createOMText("25"));
+        OMElement value02 = omfactory.createOMElement("varFloat", "", null);
+        value02.addAttribute("xsi:type", "xsd:float", null);
+        value02.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item1 = omfactory.createOMElement("item0", null);
+
+        OMElement value10 = omfactory.createOMElement("varString", "", null);
+        value10.addAttribute("xsi:type", "xsd:string", null);
+        value10.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value11 = omfactory.createOMElement("varInt", "", null);
+        value11.addAttribute("xsi:type", "xsd:int", null);
+        value11.addChild(omfactory.createOMText("25"));
+        OMElement value12 = omfactory.createOMElement("varFloat", "", null);
+        value12.addAttribute("xsi:type", "xsd:float", null);
+        value12.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item2 = omfactory.createOMElement("item0", null);
+
+        OMElement value20 = omfactory.createOMElement("varString", "", null);
+        value20.addAttribute("xsi:type", "xsd:string", null);
+        value20.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value21 = omfactory.createOMElement("varInt", "", null);
+        value21.addAttribute("xsi:type", "xsd:int", null);
+        value21.addChild(omfactory.createOMText("25"));
+        OMElement value22 = omfactory.createOMElement("varFloat", "", null);
+        value22.addAttribute("xsi:type", "xsd:float", null);
+        value22.addChild(omfactory.createOMText("25.23"));
+
+        item0.addChild(value00);
+        item0.addChild(value01);
+        item0.addChild(value02);
+
+        item1.addChild(value10);
+        item1.addChild(value11);
+        item1.addChild(value12);
+
+        item2.addChild(value20);
+        item2.addChild(value21);
+        item2.addChild(value22);
+
+        part.addChild(item0);
+        part.addChild(item1);
+        part.addChild(item2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStructUtil.java
new file mode 100644
index 0000000..05bfe45
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcStructUtil.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcStructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+        header.addChild(block1);
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        OMElement operation = omfactory.createOMElement("echoStruct", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcVoidUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcVoidUtil.java
new file mode 100644
index 0000000..673e20b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round2/util/soap12/WMRound2Soap12GroupcVoidUtil.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round2.util.soap12;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import test.interop.whitemesa.SunClientUtil;
+
+public class WMRound2Soap12GroupcVoidUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/", "m");
+        reqEnv.declareNamespace("http://soapinterop.org", "m1");
+
+        SOAPHeader header = omfactory.createSOAPHeader(reqEnv);
+        OMNamespace hns = reqEnv.declareNamespace("http://soapinterop.org/echoheader/", "hns");
+
+        SOAPHeaderBlock block2 = header.addHeaderBlock("echoMeStructRequest", hns);
+        block2.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement h2Val1 = omfactory.createOMElement("varString", null);
+        h2Val1.addAttribute("xsi:type", "xsd:string", null);
+        h2Val1.addChild(omfactory.createOMText("string"));
+
+        OMElement h2Val2 = omfactory.createOMElement("varInt", null);
+        h2Val2.addAttribute("xsi:type", "xsd:int", null);
+        h2Val2.addChild(omfactory.createOMText("150"));
+
+        OMElement h2Val3 = omfactory.createOMElement("varFloat", null);
+        h2Val3.addAttribute("xsi:type", "xsd:float", null);
+        h2Val3.addChild(omfactory.createOMText("456.321"));
+
+        block2.addChild(h2Val1);
+        block2.addChild(h2Val2);
+        block2.addChild(h2Val3);
+
+        SOAPHeaderBlock block1 = header.addHeaderBlock("echoMeStringRequest", hns);
+        block1.addAttribute("xsi:type", "xsd:string", null);
+        block1.addChild(omfactory.createOMText("string"));
+
+        OMElement operation = omfactory.createOMElement("echoVoid", "http://soapinterop.org/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://www.w3.org/2003/05/soap-encoding", null);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/SunRound3Client.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/SunRound3Client.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/SunRound3Client.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport1EchoStringUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport1EchoStringUtil.java
new file mode 100644
index 0000000..b52576a
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport1EchoStringUtil.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GDImport1EchoStringUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/wsdl/soap/", "soap");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop/echoString/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoString", "http://soapinterop/echoString/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("x", "", null);
+        part.addAttribute("xsi:type", "xsd:string", null);
+        part.addChild(omfactory.createOMText("strss fdfing1"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport2EchoStructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport2EchoStructUtil.java
new file mode 100644
index 0000000..f0edd59
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport2EchoStructUtil.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GDImport2EchoStructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/main/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop/", "ns1");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStruct", "http://soapinterop/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputStruct", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+        operation.addChild(part);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport3StructArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport3StructArrayUtil.java
new file mode 100644
index 0000000..33d2fdf
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDImport3StructArrayUtil.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+
+public class GDImport3StructArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop/", "ns1");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStructArray", "http://soapinterop/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("inputArray", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "s:SOAPStruct[3]", null);
+
+        OMElement item0 = omfactory.createOMElement("item0", null);
+
+        OMElement value00 = omfactory.createOMElement("varString", "", null);
+        value00.addAttribute("xsi:type", "xsd:string", null);
+        value00.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value01 = omfactory.createOMElement("varInt", "", null);
+        value01.addAttribute("xsi:type", "xsd:int", null);
+        value01.addChild(omfactory.createOMText("25"));
+        OMElement value02 = omfactory.createOMElement("varFloat", "", null);
+        value02.addAttribute("xsi:type", "xsd:float", null);
+        value02.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item1 = omfactory.createOMElement("item0", null);
+
+        OMElement value10 = omfactory.createOMElement("varString", "", null);
+        value10.addAttribute("xsi:type", "xsd:string", null);
+        value10.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value11 = omfactory.createOMElement("varInt", "", null);
+        value11.addAttribute("xsi:type", "xsd:int", null);
+        value11.addChild(omfactory.createOMText("25"));
+        OMElement value12 = omfactory.createOMElement("varFloat", "", null);
+        value12.addAttribute("xsi:type", "xsd:float", null);
+        value12.addChild(omfactory.createOMText("25.23"));
+
+        OMElement item2 = omfactory.createOMElement("item0", null);
+
+        OMElement value20 = omfactory.createOMElement("varString", "", null);
+        value20.addAttribute("xsi:type", "xsd:string", null);
+        value20.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value21 = omfactory.createOMElement("varInt", "", null);
+        value21.addAttribute("xsi:type", "xsd:int", null);
+        value21.addChild(omfactory.createOMText("25"));
+        OMElement value22 = omfactory.createOMElement("varFloat", "", null);
+        value22.addAttribute("xsi:type", "xsd:float", null);
+        value22.addChild(omfactory.createOMText("25.23"));
+
+        item0.addChild(value00);
+        item0.addChild(value01);
+        item0.addChild(value02);
+
+        item1.addChild(value10);
+        item1.addChild(value11);
+        item1.addChild(value12);
+
+        item2.addChild(value20);
+        item2.addChild(value21);
+        item2.addChild(value22);
+
+        part.addChild(item0);
+        part.addChild(item1);
+        part.addChild(item2);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStringArrayUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStringArrayUtil.java
new file mode 100644
index 0000000..d6295fb
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStringArrayUtil.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+
+public class GDRpcStringArrayUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/WSDLInteropTestRpcEnc", "tns");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStringArray", "http://soapinterop.org/WSDLInteropTestRpcEnc", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("param0", "", null);
+        part.addAttribute("xsi:type", "SOAP-ENC:Array", null);
+        part.addAttribute("SOAP-ENC:arrayType", "xsd:string[3]", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("Apache Axis2"));
+        OMElement value1 = omfactory.createOMElement("varString", "", null);
+        value1.addAttribute("xsi:type", "xsd:string", null);
+        value1.addChild(omfactory.createOMText("Lanka Software Foundation"));
+        OMElement value2 = omfactory.createOMElement("varString", "", null);
+        value2.addAttribute("xsi:type", "xsd:string", null);
+        value2.addChild(omfactory.createOMText("www.opensource.lk"));
+
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+
+        operation.addChild(part);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStringUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStringUtil.java
new file mode 100644
index 0000000..5e25284
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStringUtil.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+
+public class GDRpcStringUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/WSDLInteropTestRpcEnc", "tns");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoString", "http://soapinterop.org/WSDLInteropTestRpcEnc", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("param0", "", null);
+        part.addAttribute("xsi:type", "xsd:string", null);
+        part.addChild(omfactory.createOMText("strss fdfing1"));
+
+        operation.addChild(part);
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStructUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStructUtil.java
new file mode 100644
index 0000000..5044460
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcStructUtil.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GDRpcStructUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/main/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/WSDLInteropTestRpcEnc", "ns1");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStruct", "http://soapinterop.org/WSDLInteropTestRpcEnc", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("param0", "", null);
+        part.addAttribute("xsi:type", "s:SOAPStruct", null);
+
+        OMElement value0 = omfactory.createOMElement("varString", "", null);
+        value0.addAttribute("xsi:type", "xsd:string", null);
+        value0.addChild(omfactory.createOMText("strss fdfing1"));
+        OMElement value1 = omfactory.createOMElement("varInt", "", null);
+        value1.addAttribute("xsi:type", "xsd:int", null);
+        value1.addChild(omfactory.createOMText("25"));
+        OMElement value2 = omfactory.createOMElement("varFloat", "", null);
+        value2.addAttribute("xsi:type", "xsd:float", null);
+        value2.addChild(omfactory.createOMText("25.23"));
+        part.addChild(value0);
+        part.addChild(value1);
+        part.addChild(value2);
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcVoidUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcVoidUtil.java
new file mode 100644
index 0000000..dadc83a
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GDRpcVoidUtil.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GDRpcVoidUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://soapinterop.org/WSDLInteropTestRpcEnc", "tns");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoVoid", "http://soapinterop.org/WSDLInteropTestRpcEnc", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GELinkedListUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GELinkedListUtil.java
new file mode 100644
index 0000000..17ad986
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GELinkedListUtil.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+
+public class GELinkedListUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+
+        OMElement operation = omfactory.createOMElement("echoLinkedList", "http://soapinterop.org/WSDLInteropTestRpcEnc", null);
+        SOAPBody body = omfactory.createSOAPBody(reqEnv);
+        body.addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("param0", "", null);
+        part.addAttribute("xsi:type", "s:List", null);
+
+
+        OMElement value00 = omfactory.createOMElement("varInt", "", null);
+        value00.addAttribute("xsi:type", "xsd:int", null);
+        value00.addChild(omfactory.createOMText("255"));
+        OMElement value01 = omfactory.createOMElement("varString", "", null);
+        value01.addAttribute("xsi:type", "xsd:string", null);
+        value01.addChild(omfactory.createOMText("Axis2"));
+        OMElement value02 = omfactory.createOMElement("child", "", null);
+        value02.addAttribute("href", "#ID1", null);
+
+
+        OMElement part2 = omfactory.createOMElement("item0", null);
+        part2.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        part2.addAttribute("xsi:type", "s:List", null);
+        part2.addAttribute("id", "ID1", null);
+
+
+        OMElement value10 = omfactory.createOMElement("varInt", "", null);
+        value10.addAttribute("xsi:type", "xsd:int", null);
+        value10.addChild(omfactory.createOMText("21"));
+        OMElement value11 = omfactory.createOMElement("varString", "", null);
+        value11.addAttribute("xsi:type", "xsd:string", null);
+        value11.addChild(omfactory.createOMText("LSF"));
+        OMElement value12 = omfactory.createOMElement("child", "", null);
+        value12.addAttribute("xsi:type", "xsd:anyType", null);
+        value12.addAttribute(" xsi:nil", "1", null);
+        part.addChild(value00);
+        part.addChild(value01);
+        part.addChild(value02);
+
+        part2.addChild(value10);
+        part2.addChild(value11);
+        part2.addChild(value12);
+
+        operation.addChild(part);
+        body.addChild(part2);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GEListUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GEListUtil.java
new file mode 100644
index 0000000..e0e3151
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GEListUtil.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class GEListUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoLinkedList", "http://soapinterop.org/WSDLInteropTestRpcEnc", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("param0", "", null);
+        part.addAttribute("xsi:type", "s:List", null);
+
+        OMElement value00 = omfactory.createOMElement("varInt", "", null);
+        value00.addAttribute("xsi:type", "xsd:int", null);
+        value00.addChild(omfactory.createOMText("255"));
+        OMElement value01 = omfactory.createOMElement("varString", "", null);
+        value01.addAttribute("xsi:type", "xsd:string", null);
+        value01.addChild(omfactory.createOMText("Axis2"));
+//        OMElement value02 = omfactory.createOMElement("child", "", null);
+//        value02.addAttribute("href", "#ID1", null);
+
+        part.addChild(value00);
+        part.addChild(value01);
+//        part.addChild(value02);
+
+        operation.addChild(part);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GFHeaderTestUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GFHeaderTestUtil.java
new file mode 100644
index 0000000..c244516
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/GFHeaderTestUtil.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+
+public class GFHeaderTestUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop.org/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStringParam", "http://soapinterop.org/xsd", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addChild(omfactory.createOMText("apache axis2"));
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/Round3EmptySAEchoStringUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/Round3EmptySAEchoStringUtil.java
new file mode 100644
index 0000000..7c0cad3
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/Round3EmptySAEchoStringUtil.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round3.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+
+public class Round3EmptySAEchoStringUtil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        reqEnv.declareNamespace("http://soapinterop/", "tns");
+        reqEnv.declareNamespace("http://soapinterop.org/xsd", "s");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoString", "http://soapinterop/", null);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        OMElement part = omfactory.createOMElement("a", "", null);
+        part.addAttribute("xsi:type", "xsd:string", null);
+        part.addChild(omfactory.createOMText("strss fdfing1"));
+
+        operation.addChild(part);
+        return reqEnv;
+
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/SunRound3ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/SunRound3ClientUtil.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round3/util/SunRound3ClientUtil.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/EchoBlockingClient.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/EchoBlockingClient.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/EchoBlockingClient.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoBaseStructFaultClientutil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoBaseStructFaultClientutil.java
new file mode 100644
index 0000000..53762ab
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoBaseStructFaultClientutil.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.complex.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoBaseStructFaultClientutil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMElement method = fac.createOMElement("echoBaseStructFault", omNs);
+        method.addAttribute("soapenv:encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", null);
+        method.addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance", null);
+        method.addAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema", null);
+        method.addAttribute("xmlns:ns2", "http://soapinterop.org/types", null);
+        method.addAttribute("xmlns:wsdl", "http://schemas.xmlsoap.org/wsdl/", null);
+
+        reqEnv.getBody().addChild(method);
+
+        OMElement para = fac.createOMElement("param", null);
+        OMElement floatMsg = fac.createOMElement("floatMessage", null);
+        OMElement shortMsg = fac.createOMElement("shortMessage ", null);
+
+        floatMsg.addChild(fac.createOMText(floatMsg, "10.3"));
+        shortMsg.addChild(fac.createOMText(shortMsg, "10"));
+
+        para.addChild(floatMsg);
+        para.addChild(shortMsg);
+        method.addChild(para);
+
+        return reqEnv;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoExtendedStructFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoExtendedStructFaultClientUtil.java
new file mode 100644
index 0000000..2d61079
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoExtendedStructFaultClientUtil.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.complex.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoExtendedStructFaultClientUtil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+
+        OMElement method = fac.createOMElement("echoExtendedStructFault", omNs);
+        method.declareNamespace(envNs);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        reqEnv.getBody().addChild(method);
+
+        OMElement param = fac.createOMElement("param", null);
+        OMElement floatMsg = fac.createOMElement("floatMessage", null);
+        OMElement shortMsg = fac.createOMElement("shortMessage", null);
+        OMElement stringMsg = fac.createOMElement("stringMessage", null);
+        OMElement intMsg = fac.createOMElement("intMessage", null);
+        OMElement anotherMsg = fac.createOMElement("anotherIntMessage", null);
+
+        floatMsg.addChild(fac.createOMText(floatMsg, "2.023"));
+        shortMsg.addChild(fac.createOMText(shortMsg, "13"));
+        stringMsg.addChild(fac.createOMText(stringMsg, "String"));
+        intMsg.addChild(fac.createOMText(intMsg, "6"));
+        anotherMsg.addChild(fac.createOMText(anotherMsg, "10"));
+
+        param.addChild(floatMsg);
+        param.addChild(shortMsg);
+        param.addChild(stringMsg);
+        param.addChild(intMsg);
+        param.addChild(anotherMsg);
+
+        method.addChild(param);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoMultipleFaults1ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoMultipleFaults1ClientUtil.java
new file mode 100644
index 0000000..8e52acc
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoMultipleFaults1ClientUtil.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.complex.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoMultipleFaults1ClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+
+        OMElement method = fac.createOMElement("echoMultipleFaults1", omNs);
+        method.declareNamespace(envNs);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        reqEnv.getBody().addChild(method);
+
+        OMElement whichfault = fac.createOMElement("whichFault", null);
+        OMElement param1 = fac.createOMElement("param1", null);
+        OMElement param2 = fac.createOMElement("param2", null);
+        OMElement vInt = fac.createOMElement("varInt", null);
+        OMElement vFloat = fac.createOMElement("varFloat", null);
+        OMElement vString = fac.createOMElement("varString", null);
+        OMElement floatMsg = fac.createOMElement("floatMessage", null);
+        OMElement shortMsg = fac.createOMElement("shortMessage", null);
+
+        whichfault.addChild(fac.createOMText(whichfault, "10"));
+        vInt.addChild(fac.createOMText(vInt, "1"));
+        vFloat.addChild(fac.createOMText(vFloat, "1.0"));
+        vString.addChild(fac.createOMText(vString, "String"));
+        floatMsg.addChild(fac.createOMText(floatMsg, "0.23"));
+        shortMsg.addChild(fac.createOMText(shortMsg, "45"));
+
+        param1.addChild(vString);
+        param1.addChild(vInt);
+        param1.addChild(vFloat);
+
+        param2.addChild(floatMsg);
+        param2.addChild(shortMsg);
+        method.addChild(whichfault);
+        method.addChild(param1);
+        method.addChild(param2);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoMultipleFaults2ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoMultipleFaults2ClientUtil.java
new file mode 100644
index 0000000..b0f6b9e
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoMultipleFaults2ClientUtil.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.complex.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoMultipleFaults2ClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/","SOAP-ENC");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance","xsi");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema","xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/types","m0");
+
+        OMElement method = fac.createOMElement("echoMultipleFaults2", omNs);
+        method.declareNamespace(envNs);
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        reqEnv.getBody().addChild(method);
+
+        OMElement wfault = fac.createOMElement("whichFault", null);
+        OMElement para1 = fac.createOMElement("param1", null);
+        OMElement para2 = fac.createOMElement("param2", null);
+        OMElement para3 = fac.createOMElement("param3", null);
+        OMElement floatMsg1 = fac.createOMElement("floatMessage", null);
+        OMElement shortMsg1 = fac.createOMElement("shortMessage", null);
+        OMElement floatMsg2 = fac.createOMElement("floatMessage", null);
+        OMElement shortMsg2 = fac.createOMElement("shortMessage", null);
+        OMElement stringMsg2 = fac.createOMElement("stringMessage", null);
+        OMElement intMsg2 = fac.createOMElement("intMessage", null);
+        OMElement anotherMsg2 = fac.createOMElement("anotherIntMessage", null);
+        OMElement floatMsg3 = fac.createOMElement("floatMessage", null);
+        OMElement shortMsg3 = fac.createOMElement("shortMessage", null);
+        OMElement stringMsg3 = fac.createOMElement("stringMessage", null);
+        OMElement intMsg3 = fac.createOMElement("intMessage", null);
+        OMElement anotherMsg3 = fac.createOMElement("anotherIntMessage", null);
+        OMElement booleanMsg3 = fac.createOMElement("booleanMessage", null);
+
+        wfault.addChild(fac.createOMText(wfault, "0"));
+        floatMsg1.addChild(fac.createOMText(floatMsg1, "7.22"));
+        shortMsg1.addChild(fac.createOMText(shortMsg1, "10"));
+        floatMsg2.addChild(fac.createOMText(floatMsg2, "1.414"));
+        shortMsg2.addChild(fac.createOMText(shortMsg2, "10"));
+        stringMsg2.addChild(fac.createOMText(stringMsg2, "String Value1"));
+        intMsg2.addChild(fac.createOMText(intMsg2, "1"));
+        anotherMsg2.addChild(fac.createOMText(anotherMsg2, "15"));
+        floatMsg3.addChild(fac.createOMText(floatMsg3, "0.569"));
+        shortMsg3.addChild(fac.createOMText(shortMsg3, "2"));
+        stringMsg3.addChild(fac.createOMText(stringMsg3, "String Value3"));
+        intMsg3.addChild(fac.createOMText(intMsg3, "14"));
+        anotherMsg3.addChild(fac.createOMText(anotherMsg3, "11"));
+        booleanMsg3.addChild(fac.createOMText(booleanMsg3, "true"));
+
+        para1.addChild(floatMsg1);
+        para1.addChild(shortMsg1);
+        para2.addChild(floatMsg2);
+        para2.addChild(shortMsg2);
+        para2.addChild(stringMsg2);
+        para2.addChild(intMsg2);
+        para2.addChild(anotherMsg2);
+        para3.addChild(floatMsg3);
+        para3.addChild(shortMsg3);
+        para3.addChild(stringMsg3);
+        para3.addChild(intMsg3);
+        para3.addChild(anotherMsg3);
+        para3.addChild(booleanMsg3);
+
+        method.addChild(wfault);
+        method.addChild(para1);
+        method.addChild(para2);
+        method.addChild(para3);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoSOAPStructFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoSOAPStructFaultClientUtil.java
new file mode 100644
index 0000000..4e7063b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/EchoSOAPStructFaultClientUtil.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.complex.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoSOAPStructFaultClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+
+        OMNamespace omNs = reqEnv.declareNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://soapinterop.org/types", "m0");
+
+        OMElement method = fac.createOMElement("echoSOAPStructFault", omNs);
+        OMNamespace soapEnvNs = method.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+        method.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", soapEnvNs);
+
+        reqEnv.getBody().addChild(method);
+
+        OMElement param = fac.createOMElement("param", null);
+        OMElement sstruct = fac.createOMElement("soapStruct", null);
+        OMElement vstring = fac.createOMElement("varString", null);
+        OMElement vint = fac.createOMElement("varInt", null);
+        OMElement vfloat = fac.createOMElement("varFloat", null);
+
+        param.declareNamespace(typeNs);
+        sstruct.declareNamespace(typeNs);
+        vstring.declareNamespace(typeNs);
+        vint.declareNamespace(typeNs);
+        vfloat.declareNamespace(typeNs);
+
+        param.addAttribute("type", "m0:SOAPStructFault", typeNs);
+        sstruct.addAttribute("type", "m0:SOAPStruct", typeNs);
+        vstring.addAttribute("type", "xsd:string", typeNs);
+        vint.addAttribute("type", "xsd:int", typeNs);
+        vfloat.addAttribute("type", "xsd:float", typeNs);
+
+        vstring.addChild(fac.createOMText(vstring, "String"));
+        vint.addChild(fac.createOMText(vint, "0"));
+        vfloat.addChild(fac.createOMText(vfloat, "3.14159E0"));
+
+        sstruct.addChild(vstring);
+        sstruct.addChild(vint);
+        sstruct.addChild(vfloat);
+        param.addChild(sstruct);
+        method.addChild(param);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/WhitemesaR4ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/WhitemesaR4ClientUtil.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/complex/utils/WhitemesaR4ClientUtil.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/EchoBlockingClient.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/EchoBlockingClient.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/EchoBlockingClient.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoEmptyFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoEmptyFaultClientUtil.java
new file mode 100644
index 0000000..3669e88
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoEmptyFaultClientUtil.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.simple.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoEmptyFaultClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+
+        OMElement operation = fac.createOMElement("echoEmptyFault", omNs);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        reqEnv.getBody().addChild(operation);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoIntArrayFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoIntArrayFaultClientUtil.java
new file mode 100644
index 0000000..65d802e
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoIntArrayFaultClientUtil.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.simple.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoIntArrayFaultClientUtil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace omNs = omfactory.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "m0");
+
+        OMElement operation = omfactory.createOMElement("echoIntArrayFault", omNs);
+        operation.declareNamespace(envNs);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("param", null);
+        part.declareNamespace(encNs);
+        part.declareNamespace(typeNs);
+        part.addAttribute("arrayType", "m0:int[3]", encNs);
+        part.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        OMElement item0 = omfactory.createOMElement("item0", null);
+        item0.declareNamespace(typeNs);
+        item0.addAttribute("type", "m0:int", typeNs);
+        item0.addChild(omfactory.createOMText("451"));
+        OMElement item1 = omfactory.createOMElement("item1", null);
+        item1.declareNamespace(typeNs);
+        item1.addAttribute("type", "m0:int", typeNs);
+        item1.addChild(omfactory.createOMText("425"));
+        OMElement item2 = omfactory.createOMElement("item2", null);
+        item2.declareNamespace(typeNs);
+        item2.addAttribute("type", "m0:int", typeNs);
+        item2.addChild(omfactory.createOMText("2523"));
+
+        part.addChild(item0);
+        part.addChild(item1);
+        part.addChild(item2);
+
+        operation.addChild(part);
+        return reqEnv;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults1ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults1ClientUtil.java
new file mode 100644
index 0000000..57188b5
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults1ClientUtil.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.simple.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoMultipleFaults1ClientUtil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "m0");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        OMNamespace omNs = omfactory.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        OMNamespace encNs1 = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+
+        OMElement operation = omfactory.createOMElement("echoMultipleFaults1", omNs);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        reqEnv.getBody().addChild(operation);
+
+        OMElement wfault = omfactory.createOMElement("whichFault", null);
+        OMElement param1 = omfactory.createOMElement("param1", null);
+        OMElement param2 = omfactory.createOMElement("param2", null);
+        OMElement item0 = omfactory.createOMElement("item0", null);
+
+        wfault.declareNamespace(typeNs);
+        param1.declareNamespace(typeNs);
+        param2.declareNamespace(typeNs);
+        param2.declareNamespace(encNs1);
+        item0.declareNamespace(typeNs);
+
+        wfault.addAttribute("type", "xsd:int", typeNs);
+        param1.addAttribute("type", "xsd:string", typeNs);
+        param2.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        param2.addAttribute("arrayType", "xsd:float[1]", encNs1);
+        item0.addAttribute("type", "xsd:float", typeNs);
+
+        wfault.addChild(omfactory.createOMText(wfault, "0"));
+        param1.addChild(omfactory.createOMText(param1, "String"));
+        item0.addChild(omfactory.createOMText(item0, "1.3456"));
+        param2.addChild(item0);
+
+        operation.addChild(wfault);
+        operation.addChild(param1);
+        operation.addChild(param2);
+
+        return reqEnv;
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults2ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults2ClientUtil.java
new file mode 100644
index 0000000..81a12a5
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults2ClientUtil.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.simple.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoMultipleFaults2ClientUtil implements SunClientUtil {
+
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+        OMNamespace encNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "m0");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+
+        OMElement operation = fac.createOMElement("echoMultipleFaults2", omNs);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        reqEnv.getBody().addChild(operation);
+
+        OMElement wfault = fac.createOMElement("whichFault", null);
+        wfault.declareNamespace(typeNs);
+        wfault.addAttribute("type", "xsd:int", typeNs);
+        OMElement para1 = fac.createOMElement("param1", null);
+        para1.declareNamespace(typeNs);
+        para1.addAttribute("type", "xsd:string", typeNs);
+        OMElement para2 = fac.createOMElement("param2", null);
+        para2.declareNamespace(typeNs);
+        para2.addAttribute("type", "xsd:float", typeNs);
+        OMElement para3 = fac.createOMElement("param3", null);
+        para3.declareNamespace(typeNs);
+        para3.declareNamespace(encNs);
+        para3.addAttribute("type", "SOAP-ENC:Array", typeNs);
+        para3.addAttribute("arrayType", "xsd:string[3]", encNs);
+
+        OMElement item0 = fac.createOMElement("Item", null);
+        OMElement item1 = fac.createOMElement("Item", null);
+        OMElement item2 = fac.createOMElement("Item", null);
+
+        item0.declareNamespace(typeNs);
+        item1.declareNamespace(typeNs);
+        item2.declareNamespace(typeNs);
+        item0.addAttribute("type", "xsd:string", typeNs);
+        item1.addAttribute("type", "xsd:string", typeNs);
+        item2.addAttribute("type", "xsd:string", typeNs);
+
+        wfault.addChild(fac.createOMText(wfault, "10"));
+        para1.addChild(fac.createOMText(para1, "String"));
+        para2.addChild(fac.createOMText(para2, "1.2365"));
+        item0.addChild(fac.createOMText(item0, "StringValue0"));
+        item1.addChild(fac.createOMText(item1, "StringValue1"));
+        item2.addChild(fac.createOMText(item2, "StringValue2"));
+
+        para3.addChild(item0);
+        para3.addChild(item1);
+        para3.addChild(item2);
+
+        operation.addChild(wfault);
+        operation.addChild(para1);
+        operation.addChild(para2);
+        operation.addChild(para3);
+
+        return reqEnv;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults3Clientutil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults3Clientutil.java
new file mode 100644
index 0000000..47a6df7
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults3Clientutil.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.simple.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoMultipleFaults3Clientutil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "m0");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+
+        OMElement operation = fac.createOMElement("echoMultipleFaults3", omNs);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        reqEnv.getBody().addChild(operation);
+
+        OMElement wfault = fac.createOMElement("whichFault", null);
+        OMElement para1 = fac.createOMElement("param1", null);
+        OMElement para2 = fac.createOMElement("param2", null);
+
+        wfault.addChild(fac.createOMText(wfault, "10"));
+        para1.addChild(fac.createOMText(para1, "String Value1"));
+        para2.addChild(fac.createOMText(para2, "String Value2"));
+
+        operation.addChild(wfault);
+        operation.addChild(para1);
+        operation.addChild(para2);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults4ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults4ClientUtil.java
new file mode 100644
index 0000000..9b84db2
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoMultipleFaults4ClientUtil.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.simple.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+public class EchoMultipleFaults4ClientUtil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = fac.getDefaultEnvelope();
+
+        OMNamespace omNs = fac.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "m0");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsd");
+        reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
+
+        OMElement operation = fac.createOMElement("echoMultipleFaults4", omNs);
+        operation.declareNamespace(envNs);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+        reqEnv.getBody().addChild(operation);
+
+        OMElement value = fac.createOMElement("whichFault", null);
+        OMElement value1 = fac.createOMElement("param1", null);
+        OMElement value2 = fac.createOMElement("param2", null);
+
+        value.addChild(fac.createOMText(value, "10"));
+        value1.addChild(fac.createOMText(value1, "11"));
+        value2.addChild(fac.createOMText(value2, "1"));
+
+        operation.addChild(value);
+        operation.addChild(value1);
+        operation.addChild(value2);
+
+        return reqEnv;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoStringFaultClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoStringFaultClientUtil.java
new file mode 100644
index 0000000..82025b4
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/EchoStringFaultClientUtil.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004,2005 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 test.interop.whitemesa.round4.simple.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import test.interop.whitemesa.SunClientUtil;
+
+
+public class EchoStringFaultClientUtil implements SunClientUtil {
+    public SOAPEnvelope getEchoSoapEnvelope() {
+
+        SOAPFactory omfactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope reqEnv = omfactory.getDefaultEnvelope();
+
+        OMNamespace omNs = omfactory.createOMNamespace("http://soapinterop.org/wsdl", "m");
+        OMNamespace envNs = reqEnv.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv");
+        OMNamespace typeNs = reqEnv.declareNamespace("http://www.w3.org/2001/XMLSchema", "xsi");
+
+        OMElement operation = omfactory.createOMElement("echoStringFault", omNs);
+        operation.declareNamespace(envNs);
+        reqEnv.getBody().addChild(operation);
+        operation.addAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/encoding/", envNs);
+
+        OMElement part = omfactory.createOMElement("param", null);
+        part.declareNamespace(typeNs);
+        part.addAttribute("type", "xsd:string", typeNs);
+        part.addChild(omfactory.createOMText("String"));
+
+        operation.addChild(part);
+
+        return reqEnv;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/WhitemesaR4ClientUtil.java b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/WhitemesaR4ClientUtil.java
new file mode 100644
index 0000000..4d524d9
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/interop/whitemesa/round4/simple/utils/WhitemesaR4ClientUtil.java
@@ -0,0 +1,16 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
diff --git a/rampart_1_1/modules/integration/src/test/soap12testing/client/MessageComparator.java b/rampart_1_1/modules/integration/src/test/soap12testing/client/MessageComparator.java
new file mode 100644
index 0000000..e630bde
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/soap12testing/client/MessageComparator.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2004,2005 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 test.soap12testing.client;
+
+import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.om.impl.exception.XMLComparisonException;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.transport.http.HTTPTransportReceiver;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.InputStream;
+
+public class MessageComparator {
+    //public static final String TEST_MAIN_DIR = "./modules/samples/";
+    public static final String TEST_MAIN_DIR = "./";
+	private static final Log log = LogFactory.getLog(MessageComparator.class);
+
+    public boolean compare(String testNumber, InputStream replyMessage) {
+        SOAPEnvelope replyMessageEnvelope;
+        SOAPEnvelope requiredMessageEnvelope;
+        try {
+            File file = new File(TEST_MAIN_DIR+"test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT" + testNumber + ".xml");
+
+            HTTPTransportReceiver receiver = new HTTPTransportReceiver();
+            //This step is needed to skip the headers :)
+            receiver.parseTheHeaders(replyMessage, false);
+
+            XMLStreamReader requiredMessageParser = StAXUtils.createXMLStreamReader(new FileReader(file));
+            OMXMLParserWrapper requiredMessageBuilder = new StAXSOAPModelBuilder(requiredMessageParser,null);
+            requiredMessageEnvelope = (SOAPEnvelope) requiredMessageBuilder.getDocumentElement();
+
+            XMLStreamReader replyMessageParser = StAXUtils.createXMLStreamReader(replyMessage);
+            OMXMLParserWrapper replyMessageBuilder = new StAXSOAPModelBuilder(replyMessageParser,null);
+            replyMessageEnvelope = (SOAPEnvelope) replyMessageBuilder.getDocumentElement();
+
+            SOAPComparator soapComparator = new SOAPComparator();
+            //ignore elements that belong to the addressing namespace
+            soapComparator.addIgnorableNamespace("http://schemas.xmlsoap.org/ws/2004/08/addressing");
+
+            System.out.println("######################################################");
+            requiredMessageEnvelope.serialize(System.out);
+            System.out.println("");
+            System.out.println("-------------------------------------------------------");
+            replyMessageEnvelope.serialize(System.out);
+            System.out.println("");
+                   System.out.println("`######################################################");
+
+            return soapComparator.compare(requiredMessageEnvelope,replyMessageEnvelope);
+
+        } catch (XMLStreamException e) {
+            log.info(e.getMessage());
+        } catch (FileNotFoundException e) {
+            log.info(e.getMessage());
+        } catch (XMLComparisonException e) {
+            log.info(e.getMessage());
+        } catch (AxisFault axisFault) {
+            log.info(axisFault.getMessage());
+        }
+        return false;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAP12TestClient.java b/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAP12TestClient.java
new file mode 100644
index 0000000..078c609
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAP12TestClient.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2004,2005 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 test.soap12testing.client;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
+import java.net.Socket;
+import java.net.URL;
+
+public class SOAP12TestClient {
+
+	private static final Log log = LogFactory.getLog(SOAP12TestClient.class);
+
+    public String getReply(int port, String webserviceName,String testNumber) {
+        String replyMessage = "";
+        try {
+            URL netUrl = new URL("http://localhost:"+port+"/axis2/services/"+webserviceName+"/echo");
+
+            Socket socket =  new Socket("127.0.0.1",port);
+
+            SOAPCreater soapCreater = new SOAPCreater();
+            String requestMessage = soapCreater.getStringFromSOAPMessage(testNumber,netUrl);
+            PrintWriter out = new PrintWriter(
+                    socket.getOutputStream());
+            out.println(requestMessage);
+            out.flush();
+            out.close();
+
+            BufferedReader reader = new BufferedReader( new InputStreamReader(socket.getInputStream()));
+            StringBuffer sb = new StringBuffer();
+            String response = reader.readLine();
+            while( null != response ) {
+                sb.append(response.trim());
+                response = reader.readLine();
+            }
+            replyMessage = sb.toString();
+            socket.close();
+
+        } catch (MalformedURLException e) {
+            log.info(e.getMessage());
+        } catch (IOException e) {
+            log.info(e.getMessage());
+        }
+        return replyMessage;
+    }
+
+    public InputStream getRelpy(int port,String webserviceName,String testNumber) {
+        try {
+            URL netUrl = new URL("http://localhost:"+port+"/axis2/services/"+webserviceName+"/echo");
+            Socket socket =  new Socket("127.0.0.1",port);
+            SOAPCreater soapCreater = new SOAPCreater();
+            String requestMessage = soapCreater.getStringFromSOAPMessage(testNumber,netUrl);
+            PrintWriter out = new PrintWriter(
+                    socket.getOutputStream());
+            out.println(requestMessage);
+            out.flush();
+            socket.shutdownOutput();
+            return socket.getInputStream();
+        } catch (MalformedURLException e) {
+            log.info(e.getMessage());
+        } catch (IOException e) {
+            log.info(e.getMessage());
+        }
+        return null;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAPComparator.java b/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAPComparator.java
new file mode 100644
index 0000000..2a7d8b5
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAPComparator.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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.
+ */
+
+/*Speacial Notice : -
+  This SOAPComparator was implementd for only SOAP 1.2 Tests. Chekings are concerend on specific
+  tests in SOAP 1.2 Testing. Therefore this can not be used for comman soap comparisons.
+*/
+
+package test.soap12testing.client;
+
+import org.apache.axiom.om.impl.exception.XMLComparisonException;
+import org.apache.axiom.om.impl.llom.util.XMLComparator;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFault;
+
+public class SOAPComparator extends XMLComparator {
+
+    public boolean compare(SOAPEnvelope expectedEnvelope, SOAPEnvelope ReplyEnvelope) throws XMLComparisonException {
+
+        if (expectedEnvelope.getNamespace().getNamespaceURI().equals(ReplyEnvelope.getNamespace().getNamespaceURI())) {
+            //a!=null && b==null
+            if ((expectedEnvelope.getHeader() != null && ReplyEnvelope.getHeader() != null) ||
+                    (expectedEnvelope.getHeader() == null && ReplyEnvelope.getHeader() == null)) {
+
+                if (expectedEnvelope.getHeader() != null)
+                    super.compare(ReplyEnvelope.getHeader(), expectedEnvelope.getHeader());
+
+                if (expectedEnvelope.getBody().hasFault()) {
+                    SOAPFault replyFault = ReplyEnvelope.getBody().getFault();
+                    SOAPFault expectedFault = expectedEnvelope.getBody().getFault();
+
+                    super.compare(replyFault.getCode(), expectedFault.getCode());
+                    super.compare(replyFault.getReason(), expectedFault.getReason());
+
+                    if (expectedFault.getRole() != null) {
+                        super.compare(replyFault.getRole(), expectedFault.getRole());
+                    }
+                    if (expectedFault.getNode() != null) {
+                        super.compare(replyFault.getNode(), expectedFault.getNode());
+                    }
+                    if (expectedFault.getDetail() != null) {
+                        super.compare(replyFault.getDetail(), expectedFault.getDetail());
+                    }
+                } else {
+                    super.compare(ReplyEnvelope.getBody(), expectedEnvelope.getBody());
+                }
+            } else {
+                throw new XMLComparisonException("Envelope headers mismatched...!");
+            }
+        } else {
+            throw new XMLComparisonException("Envelope namespaces mismatched...!");
+        }
+        return true;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAPCreater.java b/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAPCreater.java
new file mode 100644
index 0000000..d99c68e
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/soap12testing/client/SOAPCreater.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2004,2005 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 test.soap12testing.client;
+
+import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+public class SOAPCreater {
+
+	private static final Log log = LogFactory.getLog(SOAPCreater.class);
+    public String getStringFromSOAPMessage(String testNumber, URL url) throws IOException {
+        File file =
+            new File(
+                MessageComparator.TEST_MAIN_DIR + "test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT" + testNumber + ".xml");
+        FileInputStream stream = new FileInputStream(file);
+        StringBuffer sb = new StringBuffer();
+
+        sb.append(HTTPConstants.HEADER_POST).append(" ");
+        sb.append(url.getFile()).append(" ").append(HTTPConstants.HEADER_PROTOCOL_10).append("\n");
+        sb.append(HTTPConstants.HEADER_CONTENT_TYPE).append(": ").append(
+            SOAP12Constants.SOAP_12_CONTENT_TYPE);
+        sb.append("; charset=utf-8\n");
+        sb.append("\n");
+
+        String record;
+        BufferedReader reder = new BufferedReader(new InputStreamReader(stream));
+        while ((record = reder.readLine()) != null) {
+            sb.append(record.trim());
+        }
+        return sb.toString();
+    }
+
+    public SOAPEnvelope getEnvelopeFromSOAPMessage(String pathAndFileName) {
+        File file = new File(pathAndFileName);
+        try {
+            XMLStreamReader parser =
+                StAXUtils.createXMLStreamReader(new FileReader(file));
+            OMXMLParserWrapper builder = new StAXSOAPModelBuilder(parser, null);
+            return (SOAPEnvelope) builder.getDocumentElement();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return null;
+    }
+}
diff --git a/rampart_1_1/modules/integration/src/test/soap12testing/server/SimpleServer.java b/rampart_1_1/modules/integration/src/test/soap12testing/server/SimpleServer.java
new file mode 100644
index 0000000..74b594b
--- /dev/null
+++ b/rampart_1_1/modules/integration/src/test/soap12testing/server/SimpleServer.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004,2005 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 test.soap12testing.server;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import test.soap12testing.client.MessageComparator;
+
+import java.io.File;
+
+public class SimpleServer {
+    private int port;
+	private static final Log log = LogFactory.getLog(SimpleServer.class);
+
+    public SimpleServer() {
+        this.port = 8008;
+    }
+
+    public SimpleServer(int port) {
+        this.port = port;
+    }
+
+    public void start() {
+        try {
+            File file = new File(MessageComparator.TEST_MAIN_DIR + "target/Repository");
+            if (!file.exists()) {
+                throw new AxisFault(file.getAbsolutePath() + " File does not exist");
+            }
+            ConfigurationContext configctx =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(
+                            file.getAbsolutePath(), file.getAbsolutePath() + "/axis2.xml");
+            SimpleHTTPServer receiver = new SimpleHTTPServer(configctx, port);
+            receiver.start();
+        } catch (Exception e) {
+            log.info(e.getMessage());
+        }
+    }
+}
diff --git a/rampart_1_1/modules/integration/test-resources/Invalid.wsdl b/rampart_1_1/modules/integration/test-resources/Invalid.wsdl
new file mode 100644
index 0000000..3492ab8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/Invalid.wsdl
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns:mh="http://www.Monson-Haefel.com/jwsbook/BookQuote"

+             xmlns="http://schemas.xmlsoap.org/wsdl/"

+             xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+             targetNamespace="http://www.Monson-Haefel.com/jwsbook/BookQuote"

+             name="BookQuote">

+    <message name="BookQuote_getBookPrice">

+        <part name="isbn" type="xsd:anyType"/>

+        <part name="number" type="xsd:int"/>

+    </message>

+    <message name="BookQuote_getBookPriceResponse">

+        <part name="result" type="xsd:anyType"/>

+    </message>

+    <message name="InvalidIsbnFault">

+        <part name="message" type="xsd:anyType"/>

+    </message>

+    <portType name="BookQuote">

+        <operation name="getBookPrice">

+            <input message="mh:BookQuote_getBookPrice"/>

+            <output message="mh:BookQuote_getBookPriceResponse"/>

+            <fault name="InvalidIsbnFault" message="mh:InvalidIsbnFault"/>

+        </operation>

+        <operation name="getBookPriceNonRobust">

+            <input message="mh:BookQuote_getBookPrice"/>

+            <output message="mh:BookQuote_getBookPriceResponse"/>

+        </operation>

+    </portType>

+    <binding name="BookQuoteBinding" type="mh:BookQuote">

+        <soap:binding style="rpc"

+                      transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="getBookPrice">

+            <soap:operation soapAction="myAction"/>

+            <input>

+                <soap:body use="literal"

+                           namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>

+            </input>

+            <output>

+                <soap:body use="literal"

+                           namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>

+            </output>

+            <fault name="InvalidIsbnFault">

+                <soap:fault name="InvalidIsbnFault" use="literal"/>

+            </fault>

+        </operation>

+        <operation name="getBookPriceNonRobust">

+            <soap:operation soapAction="myAction2"/>

+            <input>

+                <soap:body use="literal"

+                           namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>

+            </input>

+            <output>

+                <soap:body use="literal"

+                           namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="BookQuoteService">

+        <port name="BookQuotePort" binding="mh:BookQuoteBinding">

+            <soap:address

+                    location="http://www.Monson-Haefel.com/jwsbook/BookQuoteService"/>

+        </port>

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ReqT24.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ReqT24.xml
new file mode 100644
index 0000000..81204f6
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ReqT24.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://wrong-version/"> 
+  <env:Body>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT1.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT1.xml
new file mode 100644
index 0000000..65b9297
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT1.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+ <env:Header>
+  <test:responseOk xmlns:test="http://example.org/ts-tests">
+    foo
+  </test:responseOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT10.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT10.xml
new file mode 100644
index 0000000..e36614e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT10.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+    <env:Body>
+    </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT11.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT11.xml
new file mode 100644
index 0000000..e36614e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT11.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+    <env:Body>
+    </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT12.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT12.xml
new file mode 100644
index 0000000..022470c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT12.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <env:NotUnderstood qname="test:Unknown"
+       xmlns:test="http://example.org/ts-tests" />
+  </env:Header>
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:MustUnderstand</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US"> Header not understood </env:Text>
+      </env:Reason>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT13.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT13.xml
new file mode 100644
index 0000000..7b50b80
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT13.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <env:NotUnderstood qname="test:Unknown"
+       xmlns:test="http://example.org/ts-tests" />
+  </env:Header>
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:MustUnderstand</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US">
+          Header not understood
+        </env:Text>
+      </env:Reason>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT14.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT14.xml
new file mode 100644
index 0000000..479dd24
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT14.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:Sender</env:Value>
+       </env:Code>
+       <env:Reason>
+        <env:Text xml:lang="en-US">
+          env:mustUnderstand value is not boolean
+        </env:Text>
+       </env:Reason>
+     </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT15.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT15.xml
new file mode 100644
index 0000000..d8fe1ac
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT15.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">    
+    <env:Body>
+    </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT16.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT16.xml
new file mode 100644
index 0000000..022470c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT16.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <env:NotUnderstood qname="test:Unknown"
+       xmlns:test="http://example.org/ts-tests" />
+  </env:Header>
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:MustUnderstand</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US"> Header not understood </env:Text>
+      </env:Reason>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT17_B.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT17_B.xml
new file mode 100644
index 0000000..99bcc02
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT17_B.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <env:NotUnderstood qname="test:Unknown"
+       xmlns:test="http://example.org/ts-tests"/>
+  </env:Header>
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:MustUnderstand</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US"> Header not understood </env:Text>
+      </env:Reason>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT18_C.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT18_C.xml
new file mode 100644
index 0000000..fecea9e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT18_C.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+    <env:Header>
+    </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT19.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT19.xml
new file mode 100644
index 0000000..153c1ee
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT19.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT2.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT2.xml
new file mode 100644
index 0000000..2a91803
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT2.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+  <test:responseOk xmlns:test="http://example.org/ts-tests">
+    foo
+  </test:responseOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT21_B.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT21_B.xml
new file mode 100644
index 0000000..0fea2df
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT21_B.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <env:NotUnderstood qname="test:Unknown" 
+       xmlns:test="http://example.org/ts-tests" />
+  </env:Header>
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:MustUnderstand</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US"> Header not understood </env:Text>
+      </env:Reason>
+      <env:Node>http://example.org/ts-tests/B</env:Node>
+      <env:Role>http://example.org/ts-tests/B</env:Role>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT22.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT22.xml
new file mode 100644
index 0000000..ba5ae5f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT22.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT23.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT23.xml
new file mode 100644
index 0000000..479dd24
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT23.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:Sender</env:Value>
+       </env:Code>
+       <env:Reason>
+        <env:Text xml:lang="en-US">
+          env:mustUnderstand value is not boolean
+        </env:Text>
+       </env:Reason>
+     </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT24.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT24.xml
new file mode 100644
index 0000000..1a59bf8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT24.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:VersionMismatch</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US"> Wrong Version </env:Text>
+      </env:Reason>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT25.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT25.xml
new file mode 100644
index 0000000..9ff5db4
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT25.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+     <env:Fault>
+       <env:Code>
+        <env:Value>env:Sender</env:Value>
+       </env:Code>
+       <env:Reason>
+        <env:Text xml:lang="en-US">
+          DTD are not supported by SOAP 1.2
+        </env:Text>
+       </env:Reason>
+     </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT26.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT26.xml
new file mode 100644
index 0000000..8de6ba6
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT26.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+ </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT29.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT29.xml
new file mode 100644
index 0000000..153c1ee
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT29.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT3.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT3.xml
new file mode 100644
index 0000000..2a55f6e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT3.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT30.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT30.xml
new file mode 100644
index 0000000..79f217e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT30.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope">
+  <env:Header>
+    <env:Upgrade>
+      <env:SupportedEnvelope qname="ns2:Envelope"
+                xmlns:ns2="http://www.w3.org/2003/05/soap-envelope"/>
+     </env:Upgrade>
+  </env:Header>
+  <env:Body>
+    <env:Fault>
+      <faultcode>env:VersionMismatch</faultcode>
+      <faultstring>Wrong Version</faultstring>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT31.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT31.xml
new file mode 100644
index 0000000..6578297
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT31.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+    <test:returnVoidResponse xmlns:test="http://example.org/ts-tests">
+    </test:returnVoidResponse>
+ </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT32.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT32.xml
new file mode 100644
index 0000000..85e5aaa
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT32.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+    <test:echoHeaderResponse xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoHeaderResponse>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT33.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT33.xml
new file mode 100644
index 0000000..cdded8d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT33.xml
@@ -0,0 +1,16 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+     <env:Fault>
+       <env:Code>
+         <env:Value>env:Sender</env:Value>
+         <env:Subcode>
+           <env:Value>rpc:ProcedureNotPresent</env:Value>
+         </env:Subcode>
+       </env:Code>
+       <env:Reason>
+        <env:Text xml:lang="en-US"> Procedure Not Present </env:Text>
+       </env:Reason>
+     </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT34.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT34.xml
new file mode 100644
index 0000000..5ff3a33
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT34.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">    
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT35.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT35.xml
new file mode 100644
index 0000000..022470c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT35.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <env:NotUnderstood qname="test:Unknown"
+       xmlns:test="http://example.org/ts-tests" />
+  </env:Header>
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:MustUnderstand</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US"> Header not understood </env:Text>
+      </env:Reason>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT36.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT36.xml
new file mode 100644
index 0000000..022470c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT36.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <env:NotUnderstood qname="test:Unknown"
+       xmlns:test="http://example.org/ts-tests" />
+  </env:Header>
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:MustUnderstand</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US"> Header not understood </env:Text>
+      </env:Reason>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT37.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT37.xml
new file mode 100644
index 0000000..aeaeea3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT37.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">  
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT38_1.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT38_1.xml
new file mode 100644
index 0000000..fd71348
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT38_1.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT38_2.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT38_2.xml
new file mode 100644
index 0000000..1b1a6e8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT38_2.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      bar
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
+
+
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT39.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT39.xml
new file mode 100644
index 0000000..32383d5
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT39.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+    <env:Fault>
+      <env:Code>
+        <env:Value>env:Sender</env:Value>
+      </env:Code>
+      <env:Reason>
+        <env:Text xml:lang="en-US">
+          env:mustUnderstand is a xsd:boolean
+        </env:Text>
+      </env:Reason>
+    </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT4.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT4.xml
new file mode 100644
index 0000000..2a55f6e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT4.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT40.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT40.xml
new file mode 100644
index 0000000..5ff3a33
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT40.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">    
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT5.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT5.xml
new file mode 100644
index 0000000..5ff3a33
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT5.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">    
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT62_C.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT62_C.xml
new file mode 100644
index 0000000..a30ca03
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT62_C.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      StringAStringB
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT63.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT63.xml
new file mode 100644
index 0000000..053719a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT63.xml
@@ -0,0 +1,18 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:validateCountryCodeFault xmlns:test="http://example.org/ts-tests">
+      Country code must be 2 letters.
+    </test:validateCountryCodeFault>
+  </env:Header>
+  <env:Body>
+     <env:Fault>
+       <env:Code>env:Sender</env:Code>
+       <env:Reason>
+         <env:Text xml:lang="en-US">
+           Not a valid country code
+         </env:Text>
+       </env:Reason>
+     </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT66.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT66.xml
new file mode 100644
index 0000000..9af4387
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT66.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT67.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT67.xml
new file mode 100644
index 0000000..9af4387
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT67.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT68.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT68.xml
new file mode 100644
index 0000000..fd71348
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT68.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT69.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT69.xml
new file mode 100644
index 0000000..835b387
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT69.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Body>
+     <env:Fault>
+       <env:Code>
+        <env:Value>env:Sender</env:Value>
+       </env:Code>
+       <env:Reason>
+        <env:Text xml:lang="en-US">
+          env:Body must be present in a SOAP 1.2 envelope
+        </env:Text>
+       </env:Reason>
+     </env:Fault>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT74.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT74.xml
new file mode 100644
index 0000000..fd71348
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT74.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:responseOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:responseOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT78.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT78.xml
new file mode 100644
index 0000000..2a91803
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/SOAP12ResT78.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+  <test:responseOk xmlns:test="http://example.org/ts-tests">
+    foo
+  </test:responseOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/test.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/test.xml
new file mode 100644
index 0000000..af261db
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/ReplyMessages/test.xml
@@ -0,0 +1,18 @@
+<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
+    <soapenv:Header></soapenv:Header>
+    <soapenv:Body>
+        <soapenv:Fault>
+            <soapenv:Node></soapenv:Node>
+            <soapenv:Role></soapenv:Role>
+            <soapenv:Detail>
+                <soapenv:Exception>org.apache.axis2.AxisFault: Intentional Failure from SOAP 1.2 testing ...; nested exception is:org.apache.axis2.AxisFault: Intentional Failure from SOAP 1.2 testing ...at org.apache.axis2.engine.AxisEngine.handleFault(AxisEngine.java:186)at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:127)at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:102)at org.apache.axis2.transport.http.HTTPWorker.doWork(HTTPWorker.java:110)at org.apache.axis2.util.threadpool.ThreadWorker.run(ThreadWorker.java:34)Caused by: org.apache.axis2.AxisFault: Intentional Failure from SOAP 1.2 testing ...at org.apache.axis2.soap12testing.handlers.SOAP12InFlowHandlerDefaultC.invoke(SOAP12InFlowHandlerDefaultC.java:120)at org.apache.axis2.engine.Phase.invoke(Phase.java:161)at org.apache.axis2.engine.AxisEngine.invokePhases(AxisEngine.java:252)at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:118)... 3 more</soapenv:Exception>
+            </soapenv:Detail>
+            <soapenv:Code>
+                <soapenv:Value>env:MustUnderstand</soapenv:Value>
+            </soapenv:Code>
+            <soapenv:Reason>
+                <soapenv:Text xml:lang="en-US">Header not understood</soapenv:Text>
+            </soapenv:Reason>
+        </soapenv:Fault>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT1.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT1.xml
new file mode 100644
index 0000000..0f32d7c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT1.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT10.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT10.xml
new file mode 100644
index 0000000..b5a3afd
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT10.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests" 
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT11.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT11.xml
new file mode 100644
index 0000000..f414699
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT11.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+          env:mustUnderstand="false">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT12.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT12.xml
new file mode 100644
index 0000000..0f1f97d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT12.xml
@@ -0,0 +1,11 @@
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+          env:mustUnderstand="1">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT13.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT13.xml
new file mode 100644
index 0000000..5ddfb1d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT13.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+          env:mustUnderstand="true">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT14.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT14.xml
new file mode 100644
index 0000000..162ac40
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT14.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+          env:mustUnderstand="wrong">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT15.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT15.xml
new file mode 100644
index 0000000..b43daa1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT15.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/B"
+          env:mustUnderstand="1">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT16.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT16.xml
new file mode 100644
index 0000000..ccc261d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT16.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/C"
+          env:mustUnderstand="1">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT17_A.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT17_A.xml
new file mode 100644
index 0000000..d6b5c0e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT17_A.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
+          env:mustUnderstand="1">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT18_A.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT18_A.xml
new file mode 100644
index 0000000..077bea0
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT18_A.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/none">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT18_B.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT18_B.xml
new file mode 100644
index 0000000..077bea0
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT18_B.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/none">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT19.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT19.xml
new file mode 100644
index 0000000..fe73962
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT19.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/none"
+          env:mustUnderstand="true">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT2.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT2.xml
new file mode 100644
index 0000000..55326f3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT2.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/C">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT20.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT20.xml
new file mode 100644
index 0000000..6aa9e90
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT20.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests" 
+          env:mustUnderstand="1"
+          env:role="http://example.org/ts-tests/B">
+      foo
+    </test:Unknown>
+    <test:echoOk xmlns:test="http://example.org/ts-tests" 
+          env:mustUnderstand="1"
+          env:role="http://example.org/ts-tests/C">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT21_A.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT21_A.xml
new file mode 100644
index 0000000..6aa9e90
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT21_A.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests" 
+          env:mustUnderstand="1"
+          env:role="http://example.org/ts-tests/B">
+      foo
+    </test:Unknown>
+    <test:echoOk xmlns:test="http://example.org/ts-tests" 
+          env:mustUnderstand="1"
+          env:role="http://example.org/ts-tests/C">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT22.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT22.xml
new file mode 100644
index 0000000..2decf26
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT22.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests" 
+          env:mustUnderstand = "1">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT23.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT23.xml
new file mode 100644
index 0000000..0503d67
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT23.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests" 
+          env:mustUnderstand="1">
+      foo
+    </test:Unknown>
+    <test:echoOk xmlns:test="http://example.org/ts-tests" 
+          env:mustUnderstand="wrong">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT24.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT24.xml
new file mode 100644
index 0000000..58395ea
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT24.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://wrong-version/"> 
+  <env:Body>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT25.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT25.xml
new file mode 100644
index 0000000..b7cfddc
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT25.xml
@@ -0,0 +1,9 @@
+<?xml version='1.0' ?>
+<!DOCTYPE env:Envelope SYSTEM "env.dtd"[]>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Body>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>
+ </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT26.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT26.xml
new file mode 100644
index 0000000..d8a2aa1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT26.xml
@@ -0,0 +1,9 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+<?xml-stylesheet href="http://example.org/ts-tests/sub.xsl" type = "text/xsl"?>
+  <env:Body>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT29.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT29.xml
new file mode 100644
index 0000000..13de453
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT29.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/Czzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT3.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT3.xml
new file mode 100644
index 0000000..4ca3806
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT3.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT30.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT30.xml
new file mode 100644
index 0000000..2e2e5a1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT30.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope">
+  <env:Body>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT31.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT31.xml
new file mode 100644
index 0000000..4be58c3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT31.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Body>
+    <test:returnVoid xmlns:test="http://example.org/ts-tests">
+    </test:returnVoid>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT32.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT32.xml
new file mode 100644
index 0000000..df74886
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT32.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:requiredHeader xmlns:test="http://example.org/ts-tests"
+          env:mustUnderstand="true">
+      foo
+    </test:requiredHeader>
+  </env:Header>
+  <env:Body>
+    <test:echoHeader xmlns:test="http://example.org/ts-tests">
+    </test:echoHeader>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT33.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT33.xml
new file mode 100644
index 0000000..6699d63
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT33.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Body>
+    <test:DoesNotExist xmlns:test="http://example.org/ts-tests">
+  </test:DoesNotExist>
+ </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT34.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT34.xml
new file mode 100644
index 0000000..b5013c3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT34.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests" 
+          xmlns:env1="http://schemas.xmlsoap.org/soap/envelope/"
+          env1:mustUnderstand="true">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT35.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT35.xml
new file mode 100644
index 0000000..f313526
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT35.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:mustUnderstand="1">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT36.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT36.xml
new file mode 100644
index 0000000..51faa5f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT36.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:mustUnderstand="1" 
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT37.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT37.xml
new file mode 100644
index 0000000..537935d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT37.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT38_1.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT38_1.xml
new file mode 100644
index 0000000..6d5a2f1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT38_1.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:mustUnderstand="false"
+          env:role="http://example.org/ts-tests/B">
+      foo
+    </test:Unknown>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:mustUnderstand="0"
+          env:role="http://example.org/ts-tests/C">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT38_2.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT38_2.xml
new file mode 100644
index 0000000..4bc2601
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT38_2.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:mustUnderstand="true"
+          env:role="http://example.org/ts-tests/B">
+      foo
+    </test:echoOk>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:mustUnderstand="1"
+          env:role="http://example.org/ts-tests/C">
+      bar
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT39.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT39.xml
new file mode 100644
index 0000000..d1c87a9
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT39.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://example.org/ts-tests"
+          env:mustUnderstand="9">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT4.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT4.xml
new file mode 100644
index 0000000..d80d357
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT4.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT40.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT40.xml
new file mode 100644
index 0000000..69ad2a7
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT40.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Unknown xmlns:test="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver" 
+          env:mustUnderstand="false">
+      foo
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT5.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT5.xml
new file mode 100644
index 0000000..db2b9c1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT5.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/B">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT62_A.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT62_A.xml
new file mode 100644
index 0000000..272fd61
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT62_A.xml
@@ -0,0 +1,20 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:concatAndForwardEchoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/B"
+          env:mustUnderstand="1"/>
+    <test:concatAndForwardEchoOkArg1 xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/B"
+          env:mustUnderstand="1">
+      StringA
+    </test:concatAndForwardEchoOkArg1>
+    <test:concatAndForwardEchoOkArg2 xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/B"
+          env:mustUnderstand="1">
+      StringB
+    </test:concatAndForwardEchoOkArg2>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT62_B.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT62_B.xml
new file mode 100644
index 0000000..dc92495
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT62_B.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/C"
+          env:mustUnderstand="1">
+      StringAStringB
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT63.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT63.xml
new file mode 100644
index 0000000..c4de265
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT63.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:validateCountryCode xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/C"
+          env:mustUnderstand="1">
+      ABCD
+    </test:validateCountryCode>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
+
+
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT66.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT66.xml
new file mode 100644
index 0000000..fe8d9da
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT66.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF8'?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT67.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT67.xml
new file mode 100644
index 0000000..163ca6b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT67.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' standalone='yes'?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+ <env:Header>
+  <test:echoOk xmlns:test="http://example.org/ts-tests"
+        env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
+    foo
+  </test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+
+
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT68.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT68.xml
new file mode 100644
index 0000000..c041147
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT68.xml
@@ -0,0 +1,20 @@
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+
+
+ <env:Header           >
+
+                          <test:echoOk xmlns:test="http://example.org/ts-tests"
+        env:role="http://www.w3.org/2003/05/soap-envelope/role/next"  >
+    foo
+  </test:echoOk>
+
+
+ </env:Header>
+ <env:Body>
+
+
+ </env:Body>
+
+
+
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT69.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT69.xml
new file mode 100644
index 0000000..993a6ee
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT69.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+	<test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk>
+ </env:Header>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT6_A.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT6_A.xml
new file mode 100644
index 0000000..55326f3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT6_A.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/C">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT6_B.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT6_B.xml
new file mode 100644
index 0000000..55326f3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT6_B.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/C">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT74.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT74.xml
new file mode 100644
index 0000000..72fbfa0
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT74.xml
@@ -0,0 +1,16 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
+      foo
+    </test:echoOk>
+    <test:Unknown xmlns:test="http://example.org/ts-tests">
+      <test:raiseFault env:mustUnderstand="1"
+            env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
+      </test:raiseFault>
+    </test:Unknown>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT75.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT75.xml
new file mode 100644
index 0000000..451ad51
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT75.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+  <test:echoResolvedRef xmlns:test="http://example.org/ts-tests"
+        env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
+        env:mustUnderstand="1">
+    <test:RelativeReference xml:base="http://example.org/today/"
+          xlink:href="new.xml"
+          xmlns:xlink="http://www.w3.org/1999/xlink" />
+  </test:echoResolvedRef>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT78.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT78.xml
new file mode 100644
index 0000000..b60a4cf
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT78.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+  <test:echoOk xmlns:test="http://example.org/ts-tests"
+        env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">
+    foo
+  </test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT7_A.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT7_A.xml
new file mode 100644
index 0000000..8934aec
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT7_A.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:Ignore xmlns:test="http://example.org/ts-tests"
+          env:role="http://example.org/ts-tests/B">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT7_B.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT7_B.xml
new file mode 100644
index 0000000..607db3d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT7_B.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT8_A.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT8_A.xml
new file mode 100644
index 0000000..6c42c36
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT8_A.xml
@@ -0,0 +1,18 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>
+    <test:Ignore xmlns:test="http://example.org/ts-tests" 
+          env:role="http://example.org/ts-tests/B">
+      foo
+    </test:echoOk>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/none">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT8_B.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT8_B.xml
new file mode 100644
index 0000000..c0fdd35
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT8_B.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests">
+      foo
+    </test:echoOk>  
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/none">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body> 
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT9_A.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT9_A.xml
new file mode 100644
index 0000000..d80d357
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT9_A.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT9_B.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT9_B.xml
new file mode 100644
index 0000000..d80d357
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/RequestMessages/SOAP12ReqT9_B.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+  <env:Header>
+    <test:echoOk xmlns:test="http://example.org/ts-tests"
+          env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">
+      foo
+    </test:echoOk>
+  </env:Header>
+  <env:Body>
+  </env:Body>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/META-INF/module.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/META-INF/module.xml
new file mode 100644
index 0000000..a7b5f87
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/META-INF/module.xml
@@ -0,0 +1,14 @@
+<module name="SOAP12TestModuleB">
+    <InFlow>
+	<handler name="SOAP12InFlowHandlerDefaultB" class="org.apache.axis2.soap12testing.handlers.SOAP12InFlowHandlerDefaultB">
+	    <order phase="userphase1" />
+	</handler>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="SOAP12OutFlowHandlerDefault" class="org.apache.axis2.soap12testing.handlers.SOAP12OutFlowHandlerDefault">
+            <order phase="userphase1" />
+        </handler>
+    </OutFlow>
+
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/build.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/build.xml
new file mode 100644
index 0000000..1267d78
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/build.xml
@@ -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/Repository/modules/"/>
+
+    <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}/SOAP12TestModuleB.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/SOAP12TestModuleB.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>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/HeaderConstants.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/HeaderConstants.java
new file mode 100644
index 0000000..42a2663
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/HeaderConstants.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.handlers;
+
+public interface HeaderConstants {
+
+    String REQUEST_HEADERBLOCK_NAME = "echoOk";
+    String RESPONSE_HEADERBLOCK_NAME = "responseOk";
+    String SAMPLE_ROLE = "http://example.org/ts-tests";
+    String SOAP12_ROLE = "http://www.w3.org/2003/05/soap-envelope/role";
+    String ULTIMATERECEIVER_ROLE = "ultimateReceiver";
+    String NEXT_ROLE = "next";
+    String NONE_ROLE = "none";
+    String ROLE_BY_B = "B";
+    String ROLE_BY_C = "C";
+}
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12InFlowHandlerDefaultB.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12InFlowHandlerDefaultB.java
new file mode 100644
index 0000000..b1ce267
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12InFlowHandlerDefaultB.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.handlers;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPFault;
+import org.apache.axiom.soap.SOAPFaultCode;
+import org.apache.axiom.soap.SOAPFaultNode;
+import org.apache.axiom.soap.SOAPFaultReason;
+import org.apache.axiom.soap.SOAPFaultRole;
+import org.apache.axiom.soap.SOAPFaultText;
+import org.apache.axiom.soap.SOAPFaultValue;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.SOAPProcessingException;
+
+import java.util.Iterator;
+
+public class SOAP12InFlowHandlerDefaultB extends AbstractHandler implements HeaderConstants {
+    private OMNamespace attributeNS;
+    private boolean attributePresent = false;
+    Integer headerBlockPresent = new Integer(0);
+
+    SOAPHeaderBlock headerBlock;
+
+
+    public void revoke(MessageContext msgContext) {
+
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        SOAPEnvelope envelope = msgContext.getEnvelope();
+        SOAPFactory factory = OMAbstractFactory.getSOAP12Factory();
+        SOAPHeader headerAdd = factory.createSOAPHeader(envelope);
+        if (envelope.getHeader() != null) {
+            Iterator headerBlocks = envelope.getHeader().examineAllHeaderBlocks();
+            while (headerBlocks.hasNext()) {
+                try {
+                    headerBlock = (SOAPHeaderBlock) headerBlocks.next();
+                } catch (ClassCastException e) {
+                    continue;
+                }
+                Iterator attributes = headerBlock.getAllAttributes();
+
+                if (attributes.hasNext()) {
+                    OMAttribute firstAttribute = (OMAttribute) attributes.next();
+                    attributeNS = firstAttribute.getNamespace();
+                    attributePresent = true;
+                }
+
+                String roleValue = headerBlock.getRole();
+                boolean mustUnderstand = headerBlock.getMustUnderstand();
+                String elementName = headerBlock.getLocalName();
+                OMNamespace headerBlockNamespace = headerBlock.getNamespace();
+
+                if (elementName.equals(REQUEST_HEADERBLOCK_NAME)) {
+                    if (roleValue == null || roleValue.equals(SAMPLE_ROLE + "/" + ROLE_BY_B) || roleValue.equals(SOAP12_ROLE + "/" + ULTIMATERECEIVER_ROLE) ||
+                            roleValue.equals(SOAP12_ROLE + "/" + NEXT_ROLE)) {
+                        headerBlock.setLocalName(RESPONSE_HEADERBLOCK_NAME);
+                        if (attributePresent)
+                            headerBlock.removeAttribute((OMAttribute) headerBlock.getAllAttributes().next());
+                        headerBlockPresent = new Integer(1);
+                        msgContext.getOperationContext().setProperty("HEADER_BLOCK_PRESENT", headerBlockPresent);
+                        headerAdd.addChild(headerBlock);
+                        msgContext.getOperationContext().setProperty("HEADER_BLOCK", headerAdd);
+
+                    }
+                } else {
+                    if (roleValue == null || roleValue.equals(SAMPLE_ROLE + "/" + ROLE_BY_B) || roleValue.equals(SAMPLE_ROLE + "/" + ROLE_BY_C) ||
+                            roleValue.equals(SOAP12_ROLE + "/" + ULTIMATERECEIVER_ROLE) || roleValue.equals(SOAP12_ROLE + "/" + NEXT_ROLE)) {
+                        if (mustUnderstand) {
+
+                            SOAPBody body = factory.getDefaultEnvelope().getBody();
+                            if (attributePresent && attributeNS.getName() == "http://schemas.xmlsoap.org/soap/envelope/") {
+
+                            } else {
+
+                                try {
+                                    SOAPFault fault = factory.createSOAPFault(body);
+                                    SOAPFaultCode code = factory.createSOAPFaultCode(fault);
+                                    SOAPFaultValue value = factory.createSOAPFaultValue(code);
+                                    value.setText("env:MustUnderstand");
+                                    SOAPFaultReason reason = factory.createSOAPFaultReason(fault);
+                                    SOAPFaultText text = factory.createSOAPFaultText(reason);
+                                    text.setLang("en-US");
+                                    text.setText("Header not understood");
+                                    reason.addSOAPText(text);
+                                    //fault.setReason(reason);
+                                    if (roleValue != null && roleValue.equals(SAMPLE_ROLE + "/" + ROLE_BY_B)) {
+                                        SOAPFaultNode node = factory.createSOAPFaultNode(fault);
+                                        node.setNodeValue(SAMPLE_ROLE + "/" + ROLE_BY_B);
+                                        SOAPFaultRole role = factory.createSOAPFaultRole(fault);
+                                        role.setRoleValue(SAMPLE_ROLE + "/" + ROLE_BY_B);
+                                        msgContext.setProperty(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME, node);
+                                        msgContext.setProperty(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME, role);
+                                    }
+
+                                    msgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, code);
+                                    msgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, reason);
+
+                                } catch (SOAPProcessingException e) {
+                                   throw new AxisFault(e);
+                                }
+
+                                headerBlock.discard();
+                                SOAPHeaderBlock newHeaderBlock = null;
+                                try {
+                                    newHeaderBlock = envelope.getHeader().addHeaderBlock("NotUnderstood", envelope.getNamespace());
+                                    newHeaderBlock.declareNamespace(headerBlockNamespace);
+                                    newHeaderBlock.addAttribute("qname", headerBlockNamespace.getName() + ":" + elementName, null);
+                                } catch (SOAPProcessingException e) {
+                                    //e.printStackTrace();
+                                }
+                                headerBlockPresent = new Integer(1);
+                                msgContext.getOperationContext().setProperty("HEADER_BLOCK_PRESENT", headerBlockPresent);
+                                headerAdd.addChild(newHeaderBlock);
+                                msgContext.getOperationContext().setProperty("HEADER_BLOCK", headerAdd);
+
+                                throw new AxisFault("Intentional Failure from SOAP 1.2 testing ...");
+                            }
+                        } else {
+                            headerBlockPresent = new Integer(0);
+                        }
+
+                    }
+                }
+            }
+            if (headerBlockPresent.equals(new Integer(0))) {
+                msgContext.getOperationContext().setProperty("HEADER_BLOCK_PRESENT", headerBlockPresent);
+            }
+            headerBlockPresent = new Integer(0);
+        } else {
+            headerBlockPresent = new Integer(0);
+            msgContext.getOperationContext().setProperty("HEADER_BLOCK_PRESENT", headerBlockPresent);
+        }
+        return InvocationResponse.CONTINUE;
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12OutFaultFlowHandlerDefault.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12OutFaultFlowHandlerDefault.java
new file mode 100644
index 0000000..7bf6b17
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12OutFaultFlowHandlerDefault.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.handlers;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+
+import java.util.Iterator;
+
+public class SOAP12OutFaultFlowHandlerDefault extends AbstractHandler {
+
+
+    public void revoke(MessageContext msgContext) {
+
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) {
+        Integer headerBlockPresent = (Integer) msgContext.getOperationContext().getProperty("HEADER_BLOCK_PRESENT");
+        if (headerBlockPresent.equals(new Integer(1))) {
+            SOAPHeader headerAdd = (SOAPHeader) msgContext.getOperationContext().getProperty("HEADER_BLOCK");
+           Iterator headerBlocks = headerAdd.examineAllHeaderBlocks();
+            while(headerBlocks.hasNext()){
+                SOAPHeaderBlock headerBlock=(SOAPHeaderBlock) headerBlocks.next();
+                msgContext.getEnvelope().getHeader().addChild(headerBlock);
+            }
+        } else {
+            msgContext.getEnvelope().getHeader().discard();
+        }
+        return InvocationResponse.CONTINUE;
+    }
+}
+
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12OutFlowHandlerDefault.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12OutFlowHandlerDefault.java
new file mode 100644
index 0000000..e15c25e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleB/org/apache/axis2/soap12testing/handlers/SOAP12OutFlowHandlerDefault.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.handlers;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+
+import java.util.Iterator;
+
+public class SOAP12OutFlowHandlerDefault extends AbstractHandler {
+
+
+    public void revoke(MessageContext msgContext) {
+
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) {
+        Integer headerBlockPresent = (Integer) msgContext.getOperationContext().getProperty("HEADER_BLOCK_PRESENT");
+        if (headerBlockPresent.equals(new Integer(1))) {
+            SOAPHeader headerAdd = (SOAPHeader) msgContext.getOperationContext().getProperty("HEADER_BLOCK");
+           Iterator headerBlocks = headerAdd.examineAllHeaderBlocks();
+            while(headerBlocks.hasNext()){
+                SOAPHeaderBlock headerBlock=(SOAPHeaderBlock) headerBlocks.next();
+                msgContext.getEnvelope().getHeader().addChild(headerBlock);
+            }
+        } else {
+            msgContext.getEnvelope().getHeader().discard();
+        }
+        return InvocationResponse.CONTINUE;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/META-INF/module.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/META-INF/module.xml
new file mode 100644
index 0000000..5b4420c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/META-INF/module.xml
@@ -0,0 +1,14 @@
+<module name="SOAP12TestModuleC">
+    <InFlow>
+	<handler name="SOAP12InFlowHandlerDefaultC" class="org.apache.axis2.soap12testing.handlers.SOAP12InFlowHandlerDefaultC">
+	    <order phase="userphase1" />
+	</handler>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="SOAP12OutFlowHandlerDefault" class="org.apache.axis2.soap12testing.handlers.SOAP12OutFlowHandlerDefault">
+            <order phase="userphase1" />
+        </handler>
+    </OutFlow>
+
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/build.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/build.xml
new file mode 100644
index 0000000..b97bf37
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/build.xml
@@ -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/Repository/modules/"/>
+
+    <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}/SOAP12TestModuleC.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/SOAP12TestModuleC.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>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/HeaderConstants.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/HeaderConstants.java
new file mode 100644
index 0000000..42a2663
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/HeaderConstants.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.handlers;
+
+public interface HeaderConstants {
+
+    String REQUEST_HEADERBLOCK_NAME = "echoOk";
+    String RESPONSE_HEADERBLOCK_NAME = "responseOk";
+    String SAMPLE_ROLE = "http://example.org/ts-tests";
+    String SOAP12_ROLE = "http://www.w3.org/2003/05/soap-envelope/role";
+    String ULTIMATERECEIVER_ROLE = "ultimateReceiver";
+    String NEXT_ROLE = "next";
+    String NONE_ROLE = "none";
+    String ROLE_BY_B = "B";
+    String ROLE_BY_C = "C";
+}
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12InFlowHandlerDefaultC.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12InFlowHandlerDefaultC.java
new file mode 100644
index 0000000..c9c578a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12InFlowHandlerDefaultC.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.handlers;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPFault;
+import org.apache.axiom.soap.SOAPFaultCode;
+import org.apache.axiom.soap.SOAPFaultNode;
+import org.apache.axiom.soap.SOAPFaultReason;
+import org.apache.axiom.soap.SOAPFaultRole;
+import org.apache.axiom.soap.SOAPFaultText;
+import org.apache.axiom.soap.SOAPFaultValue;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.SOAPProcessingException;
+
+import java.util.Iterator;
+
+public class SOAP12InFlowHandlerDefaultC extends AbstractHandler implements HeaderConstants {
+    private OMNamespace attributeNS;
+    private boolean attributePresent = false;
+    Integer headerBlockPresent = new Integer(0);
+    SOAPHeaderBlock headerBlock;
+
+
+    public void revoke(MessageContext msgContext) {
+
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        SOAPEnvelope envelope = msgContext.getEnvelope();
+        if (envelope.getHeader() != null) {
+            Iterator headerBlocks = envelope.getHeader().examineAllHeaderBlocks();
+            SOAPFactory factory = OMAbstractFactory.getSOAP12Factory();
+            SOAPHeader headerAdd = factory.createSOAPHeader(envelope);
+
+            while (headerBlocks.hasNext()) {
+                try {
+                    headerBlock = (SOAPHeaderBlock) headerBlocks.next();
+                } catch (ClassCastException e) {
+                    continue;
+                }
+                Iterator attributes = headerBlock.getAllAttributes();
+
+                if (attributes.hasNext()) {
+                    OMAttribute firstAttribute = (OMAttribute) attributes.next();
+                    attributeNS = firstAttribute.getNamespace();
+                    attributePresent = true;
+                }
+
+                String roleValue = headerBlock.getRole();
+                boolean mustUnderstand = headerBlock.getMustUnderstand();
+                String elementName = headerBlock.getLocalName();
+                OMNamespace headerBlockNamespace = headerBlock.getNamespace();
+
+                if (elementName.equals(REQUEST_HEADERBLOCK_NAME)) {
+                    if (roleValue == null || roleValue.equals(SAMPLE_ROLE + "/" + ROLE_BY_C) || roleValue.equals(SOAP12_ROLE + "/" + ULTIMATERECEIVER_ROLE) ||
+                            roleValue.equals(SOAP12_ROLE + "/" + NEXT_ROLE)) {
+                        headerBlock.setLocalName(RESPONSE_HEADERBLOCK_NAME);
+                        if (attributePresent) {
+                            headerBlock.removeAttribute((OMAttribute) headerBlock.getAllAttributes().next());
+                            attributePresent = false;
+                        }
+                        headerBlockPresent = new Integer(1);
+                        msgContext.getOperationContext().setProperty("HEADER_BLOCK_PRESENT", headerBlockPresent);
+                        headerAdd.addChild(headerBlock);
+                        msgContext.getOperationContext().setProperty("HEADER_BLOCK", headerAdd);
+
+                    }
+                } else {
+                    if (roleValue == null || roleValue.equals(SAMPLE_ROLE + "/" + ROLE_BY_C) ||
+                            roleValue.equals(SOAP12_ROLE + "/" + ULTIMATERECEIVER_ROLE) || roleValue.equals(SOAP12_ROLE + "/" + NEXT_ROLE)) {
+
+                        if (mustUnderstand) {
+
+                            SOAPBody body = factory.getDefaultEnvelope().getBody();
+                            if (attributePresent && attributeNS.getName() == "http://schemas.xmlsoap.org/soap/envelope/") {
+
+                            } else {
+
+                                try {
+                                    SOAPFault fault = factory.createSOAPFault(body);
+                                    SOAPFaultCode code = factory.createSOAPFaultCode(fault);
+                                    SOAPFaultValue value = factory.createSOAPFaultValue(code);
+                                    value.setText("env:MustUnderstand");
+                                    SOAPFaultReason reason = factory.createSOAPFaultReason(fault);
+                                    SOAPFaultText text = factory.createSOAPFaultText(reason);
+                                    text.setLang("en-US");
+                                    text.setText("Header not understood");
+                                    reason.addSOAPText(text);
+                                    //fault.setReason(reason);
+                                    if (roleValue != null && roleValue.equals(SAMPLE_ROLE + "/" + ROLE_BY_B)) {
+                                        SOAPFaultNode node = factory.createSOAPFaultNode(fault);
+                                        node.setNodeValue(SAMPLE_ROLE + "/" + ROLE_BY_B);
+                                        SOAPFaultRole role = factory.createSOAPFaultRole(fault);
+                                        role.setRoleValue(SAMPLE_ROLE + "/" + ROLE_BY_B);
+                                        msgContext.setProperty(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME, node);
+                                        msgContext.setProperty(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME, role);
+                                    }
+
+                                    msgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, code);
+                                    msgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, reason);
+
+                                } catch (SOAPProcessingException e) {
+                                    //e.printStackTrace();
+                                }
+
+
+                                headerBlock.discard();
+                                SOAPHeaderBlock newHeaderBlock = null;
+                                try {
+                                    newHeaderBlock = envelope.getHeader().addHeaderBlock("NotUnderstood", envelope.getNamespace());
+                                    newHeaderBlock.declareNamespace(headerBlockNamespace);
+                                    newHeaderBlock.addAttribute("qname", headerBlockNamespace.getName() + ":" + elementName, null);
+                                } catch (SOAPProcessingException e) {
+                                    //e.printStackTrace();
+                                }
+                                headerBlockPresent = new Integer(1);
+                                msgContext.getOperationContext().setProperty("HEADER_BLOCK_PRESENT", headerBlockPresent);
+                                headerAdd.addChild(newHeaderBlock);
+                                msgContext.getOperationContext().setProperty("HEADER_BLOCK", headerAdd);
+                                throw new AxisFault("Intentional Failure from SOAP 1.2 testing ...");
+                            }
+                        }
+
+                    }
+                }
+            }
+            if (headerBlockPresent.equals(new Integer(0))) {
+                msgContext.getOperationContext().setProperty("HEADER_BLOCK_PRESENT", headerBlockPresent);
+            }
+
+            headerBlockPresent = new Integer(0);
+
+        } else {
+            headerBlockPresent = new Integer(0);
+            msgContext.getOperationContext().setProperty("HEADER_BLOCK_PRESENT", headerBlockPresent);
+        }
+        return InvocationResponse.CONTINUE;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12OutFaultFlowHandlerDefault.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12OutFaultFlowHandlerDefault.java
new file mode 100644
index 0000000..00932f3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12OutFaultFlowHandlerDefault.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.handlers;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+
+import java.util.Iterator;
+
+public class SOAP12OutFaultFlowHandlerDefault extends AbstractHandler {
+
+
+    public void revoke(MessageContext msgContext) {
+
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) {
+        Integer headerBlockPresent = (Integer) msgContext.getOperationContext().getProperty("HEADER_BLOCK_PRESENT");
+        if (headerBlockPresent.equals(new Integer(1))) {
+            SOAPHeader headerAdd = (SOAPHeader) msgContext.getOperationContext().getProperty("HEADER_BLOCK");
+           Iterator headerBlocks = headerAdd.examineAllHeaderBlocks();
+            while(headerBlocks.hasNext()){
+                SOAPHeaderBlock headerBlock=(SOAPHeaderBlock) headerBlocks.next();
+                msgContext.getEnvelope().getHeader().addChild(headerBlock);
+            }
+        } else {
+            msgContext.getEnvelope().getHeader().discard();
+        }
+        return InvocationResponse.CONTINUE;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12OutFlowHandlerDefault.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12OutFlowHandlerDefault.java
new file mode 100644
index 0000000..e15c25e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestModuleC/org/apache/axis2/soap12testing/handlers/SOAP12OutFlowHandlerDefault.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.handlers;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+
+import java.util.Iterator;
+
+public class SOAP12OutFlowHandlerDefault extends AbstractHandler {
+
+
+    public void revoke(MessageContext msgContext) {
+
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) {
+        Integer headerBlockPresent = (Integer) msgContext.getOperationContext().getProperty("HEADER_BLOCK_PRESENT");
+        if (headerBlockPresent.equals(new Integer(1))) {
+            SOAPHeader headerAdd = (SOAPHeader) msgContext.getOperationContext().getProperty("HEADER_BLOCK");
+           Iterator headerBlocks = headerAdd.examineAllHeaderBlocks();
+            while(headerBlocks.hasNext()){
+                SOAPHeaderBlock headerBlock=(SOAPHeaderBlock) headerBlocks.next();
+                msgContext.getEnvelope().getHeader().addChild(headerBlock);
+            }
+        } else {
+            msgContext.getEnvelope().getHeader().discard();
+        }
+        return InvocationResponse.CONTINUE;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/META-INF/services.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/META-INF/services.xml
new file mode 100644
index 0000000..3313fac
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/META-INF/services.xml
@@ -0,0 +1,8 @@
+<service name="SOAP12TestServiceB">
+    <description>This is a sample Web Service for SOAP 1.2 Testing</description>
+    <module ref="SOAP12TestModuleB"/>
+    <parameter name="ServiceClass" locked="xsd:false">org.apache.axis2.soap12testing.webservices.SOAP12TestWebServiceDefault</parameter>
+    <operation name="echo">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/build.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/build.xml
new file mode 100644
index 0000000..66f2908
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/build.xml
@@ -0,0 +1,53 @@
+<?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/Repository/services/"/>
+
+    <path id="axis.test.classpath">
+        <path refid="maven.dependency.classpath"></path>
+        <pathelement location="../../../target/classes"/>
+        <pathelement location="../../../target/test-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}/SOAP12TestServiceB.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/SOAP12TestServiceB.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>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/org/apache/axis2/soap12testing/webservices/SOAP12TestWebServiceDefault.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/org/apache/axis2/soap12testing/webservices/SOAP12TestWebServiceDefault.java
new file mode 100644
index 0000000..7c0c676
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceB/org/apache/axis2/soap12testing/webservices/SOAP12TestWebServiceDefault.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.webservices;
+
+import org.apache.axiom.om.OMElement;
+
+public class SOAP12TestWebServiceDefault {
+    public OMElement echo(OMElement element) {
+        if (element != null) {
+            if (element.getLocalName().equals("echoOk")) {
+                element.setLocalName("responseOk");
+
+            } else if (element.getLocalName().equals("returnVoid")) {
+                element.setLocalName("returnVoidResponse");
+            }
+        }
+        return element;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/META-INF/services.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/META-INF/services.xml
new file mode 100644
index 0000000..249654c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/META-INF/services.xml
@@ -0,0 +1,8 @@
+<service name="SOAP12TestServiceC">
+    <description>This is a sample Web Service for SOAP 1.2 Testing</description>
+    <module ref="SOAP12TestModuleC"/>
+    <parameter name="ServiceClass" locked="xsd:false">org.apache.axis2.soap12testing.webservices.SOAP12TestWebServiceDefault</parameter>
+    <operation name="echo">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/build.xml b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/build.xml
new file mode 100644
index 0000000..17bbd22
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/build.xml
@@ -0,0 +1,53 @@
+<?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/Repository/services/"/>
+
+    <path id="axis.test.classpath">
+        <path refid="maven.dependency.classpath"></path>
+        <pathelement location="../../../target/classes"/>
+        <pathelement location="../../../target/test-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}/SOAP12TestServiceC.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/SOAP12TestServiceC.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>
diff --git a/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/org/apache/axis2/soap12testing/webservices/SOAP12TestWebServiceDefault.java b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/org/apache/axis2/soap12testing/webservices/SOAP12TestWebServiceDefault.java
new file mode 100644
index 0000000..7c0c676
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SOAP12Testing/SOAP12TestServiceC/org/apache/axis2/soap12testing/webservices/SOAP12TestWebServiceDefault.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.webservices;
+
+import org.apache.axiom.om.OMElement;
+
+public class SOAP12TestWebServiceDefault {
+    public OMElement echo(OMElement element) {
+        if (element != null) {
+            if (element.getLocalName().equals("echoOk")) {
+                element.setLocalName("responseOk");
+
+            } else if (element.getLocalName().equals("returnVoid")) {
+                element.setLocalName("returnVoidResponse");
+            }
+        }
+        return element;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test-resources/SwA-enabled-axis2.xml b/rampart_1_1/modules/integration/test-resources/SwA-enabled-axis2.xml
new file mode 100755
index 0000000..3649bd3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SwA-enabled-axis2.xml
@@ -0,0 +1,156 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableSwA" locked="false">true</parameter>
+    <parameter name="cacheAttachments" locked="false">false</parameter>
+    <!-- Uncomment this to enable REST support -->
+    <!--    <parameter name="eanbleREST" locked="false">true</parameter>-->
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+   <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+  <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+            <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing-->
+    <module ref="addressing"/> 
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="inflow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="outflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="INfaultflow">
+       <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="Outfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/SwA-fileCache-enabled-axis2.xml b/rampart_1_1/modules/integration/test-resources/SwA-fileCache-enabled-axis2.xml
new file mode 100755
index 0000000..3ad648f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/SwA-fileCache-enabled-axis2.xml
@@ -0,0 +1,158 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableSwA" locked="false">true</parameter>
+    <parameter name="cacheAttachments" locked="false">true</parameter>
+    <parameter name="attachmentDIR" locked="false">target/test-resources/</parameter>
+    <parameter name="sizeThreshold" locked="false">4000</parameter>
+    <!-- Uncomment this to enable REST support -->
+    <!--    <parameter name="eanbleREST" locked="false">true</parameter>-->
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+   <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+  <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+            <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing-->
+    <module ref="addressing"/> 
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+   <phaseOrder type="inflow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="outflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="INfaultflow">
+       <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="Outfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/deployment/deployment.both.axis2.xml b/rampart_1_1/modules/integration/test-resources/deployment/deployment.both.axis2.xml
new file mode 100644
index 0000000..db791f7
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/deployment/deployment.both.axis2.xml
@@ -0,0 +1,135 @@
+<axisconfig name="AxisJava2.0">

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">true</parameter>

+    <parameter name="enableMTOM" locked="false">true</parameter>

+

+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+

+    <!-- Engage the addressing module -->

+    <module ref="addressing"/>

+

+    <!-- Target Resolver for TargetResolverTest -->

+    <targetResolvers>

+    	<targetResolver class="org.apache.axis2.deployment.TestTargetResolver" />

+    </targetResolvers>

+

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+    </transportReceiver>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">

+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>

+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>

+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>

+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>

+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>

+      </transportReceiver> -->

+

+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter>

+    </transportReceiver>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>

+    </transportSender>

+    <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+    </transportSender>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">

+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>

+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>

+   </transportSender>

+   -->

+  <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+         <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+

+</axisconfig>

diff --git a/rampart_1_1/modules/integration/test-resources/eBaySvc.wsdl b/rampart_1_1/modules/integration/test-resources/eBaySvc.wsdl
new file mode 100644
index 0000000..95e5aab
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/eBaySvc.wsdl
@@ -0,0 +1,77461 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!-- Version 471 -->

+<!-- Copyright (c) 2003-2006 eBay Inc. All Rights Reserved. -->

+<wsdl:definitions 

+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

+	xmlns:xs="http://www.w3.org/2001/XMLSchema" 

+	xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 

+	xmlns:ns="urn:ebay:apis:eBLBaseComponents" 

+	xmlns="urn:ebay:apis:eBLBaseComponents"

+	targetNamespace="urn:ebay:apis:eBLBaseComponents">

+	<wsdl:types>

+		<xs:schema targetNamespace="urn:ebay:apis:eBLBaseComponents"  

+		xmlns:ns="urn:ebay:apis:eBLBaseComponents" 

+		xmlns="urn:ebay:apis:eBLBaseComponents"

+		xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

+

+	<!-- Custom Security header element-->

+	<xs:element name="RequesterCredentials" type="ns:CustomSecurityHeaderType">

+		<xs:annotation>

+			<xs:documentation>

+				Authentication information for the user on whose behalf the

+				application is making the request. Only registered eBay users are

+				allowed to make API calls. To verify that a user is registered,

+				your application needs to pass a user-specific value called an

+				"authentication token" in the request. This is equivalent to

+				signing in on the eBay Web site. As API calls do not pass session

+				information, you need to pass the user's authentication token every

+				time you invoke a call on their behalf. All calls require an

+				authentication token, except the calls you use to retrieve a token

+				in the first place. (For such calls, you use the eBay member's

+				username and password instead.)

+			</xs:documentation>

+			<xs:appinfo>

+				<CallInfo>

+					<AllCalls/>

+					<RequiredInput>Yes</RequiredInput>

+				</CallInfo>

+			</xs:appinfo>

+		</xs:annotation>

+	</xs:element>

+		<!--  Call: AddDispute -->

+	<xs:element name="AddDisputeRequest" type="ns:AddDisputeRequestType"/>

+	<xs:complexType name="AddDisputeRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Allows a seller to create a new Unpaid Item dispute. Can only be used by

+				the seller at least 7 days after the transaction is created, unless the

+				buyer is no longer a registered eBay user or has requested shipment to a

+				country the seller does not ship to. A buyer creates an Item Not

+				Received dispute on the eBay site.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to use an item ID and transaction ID to create a new Unpaid Item dispute.  

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="DisputeExplanation" type="ns:DisputeExplanationCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An explanation of the dispute that supplements the

+								DisputeReason. The allowed value depends on the value of

+								DisputeReason.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDispute</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DisputeReason" type="ns:DisputeReasonCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The top-level reason for the Unpaid Item Dispute.

+								DisputeReasonCodeType has several possible values. However, only

+								BuyerHasNotPaid and TransactionMutuallyCanceled apply to

+								AddDispute--you can only use AddDisputeCall to create Unpaid

+								Item disputes.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDispute</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The eBay ID of the item in dispute, an item which has been

+								sold but not yet paid for.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>AddDispute</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The eBay ID of a transaction, created when the buyer committed

+								to purchasing the item. A transaction ID is unique to the item

+								but not across the entire eBay site. The transaction ID must be

+								combined with an item ID to uniquely identify an item.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>AddDispute</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddDispute -->

+	<xs:element name="AddDisputeResponse" type="ns:AddDisputeResponseType"/>

+	<xs:complexType name="AddDisputeResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returned after calling AddDisputeRequest. The response confirms that

+				the Unpaid Item dispute was successfully created.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="DisputeID" type="ns:DisputeIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+	    					The unique identifier of the Unpaid Item dispute.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDispute</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddDisputeResponse -->

+	<xs:element name="AddDisputeResponseRequest" type="ns:AddDisputeResponseRequestType"/>

+	<xs:complexType name="AddDisputeResponseRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Allows a seller to respond to an Unpaid Item or Item Not Received dispute.

+				The response can add a comment or close the dispute.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Adds a response or comment to a dispute, or closes a dispute.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="DisputeID" type="ns:DisputeIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique identifier of the dispute,

+								returned when the dispute was created.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDisputeResponse</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MessageText" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The text of a comment or response being posted

+								to the dispute. Required when DisputeActivity is

+								SellerAddInformation, SellerComment, or

+								SellerPaymentNotReceived; otherwise, optional.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDisputeResponse</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DisputeActivity" type="ns:DisputeActivityCodeType"  minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The type of activity the seller is taking on the dispute.

+								The allowed value is determined by the current value of

+								DisputeState, returned by GetDispute or GetUserDisputes.

+								Some values are for Unpaid Item disputes and some are for Item

+								Not Received disputes.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDisputeResponse</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingCarrierUsed" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The shipping carrier used for the item in dispute. Required if DisputeActivity

+								is SellerShippedItem; otherwise, optional.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDisputeResponse</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShipmentTrackNumber" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The shipper's tracking number for the item being shipped. Required

+								if DisputeActivity is SellerShippedItem; otherwise, optional.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDisputeResponse</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The date the item under dispute was shipped. Required if DisputeActivity

+								is SellerShippedItem; otherwise, optional.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddDisputeResponse</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddDisputeResponse -->

+	<xs:element name="AddDisputeResponseResponse" type="ns:AddDisputeResponseResponseType"/>

+	<xs:complexType name="AddDisputeResponseResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returned after taking an action on a dispute with AddDisputeResponseRequest.

+				Includes the status of the request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddItem -->

+	<xs:element name="AddItemRequest" type="ns:AddItemRequestType"/>

+	<xs:complexType name="AddItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines a single new item and lists it on a specified eBay site.

+				To list multiple new items, execute AddItem once for each item,

+				with a new item definition each time.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Sends data defining a new item (specified by a seller) to eBay,

+						where it becomes a new listing. Returns the item ID for the new listing

+						and estimates fees the seller will incur for the listing

+						(not including the Final Value Fee, which cannot be calculated until the item is sold). 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Item" type="ns:ItemType"  minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements hold the values that define the new item. Item is a

+								required input.

+								Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExternalProductID" type="ns:ExternalProductIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								This field will be removed from the schema

+								in a future release. Recommended usage as of release 439 varies for

+								eBay.com listings and Half.com listings.

+								&lt;br&gt;&lt;br&gt;

+								For eBay.com listings:

+								As of release 439, this field can still be passed in, but we recommend

+								that you update your applications to use the ExternalProductID field

+								defined on the item instead (i.e., Item.ExternalProductID).

+								If you specify both Item.ExternalProductID and this field in the same

+								request, eBay uses the value in Item.ExternalProductID and ignores the

+								value in this field. See Item.ExternalProductID for information on using

+								an external ID for eBay.com listings.

+								&lt;br&gt;&lt;br&gt;

+								For Half.com listings:

+								As of release 439, this field is required for Half.com listings.

+								Causes Half.com to list the item with Pre-filled Item Information based

+								on an ISBN value or other supported external ID, plus other meta-data

+								that you specify. See the eBay Web Services guide for information about

+								listing to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+									<TagStatus>Deprecated</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddItem -->

+	<xs:element name="AddItemResponse" type="ns:AddItemResponseType"/>

+	<xs:complexType name="AddItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+          Returns the item ID and the estimated fees for the new listing, as well as

+          the start and end times of the listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique item ID for the new listing.

+								Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>AddItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Starting date and time for the new listing.

+								Also returned for Half.com (for Half.com, the start time is always the time the item was listed).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Date and time when the new listing ends. This is the starting time

+								plus the listing duration.

+								Also returned for Half.com, but for Half.com the actual end time is GTC

+								(not the end time returned in the response).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Fees" type="ns:FeesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements contain the estimated listing fees for the new item listing.

+								The fees do not include the Final Value Fee (FVF), which cannot be determined

+								until an item is sold.

+								Also returned for Half.com, but the values are not applicable to Half.com listings.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the primary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID you passed in PrimaryCategory was mapped to a new ID by eBay.

+								If the primary category has not changed or it has expired with no replacement,

+								CategoryID does not return a value.

+								Not applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>AddItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Category2ID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the secondary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID you passed in SecondaryCategory was mapped to a new ID by eBay.

+								If the secondary category has not changed or it has expired with no replacement,

+								Category2ID does not return a value.

+								Not applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>AddItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddLiveAuctionItem -->

+	<xs:element name="AddLiveAuctionItemRequest" type="ns:AddLiveAuctionItemRequestType"/>

+	<xs:complexType name="AddLiveAuctionItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Lists a lot item on the eBay Live Auctions site. The lot item will

+				also be visible to users who search and browse the US eBay.com

+				site. Only authorized eBay Live Auctions sellers can list lot

+				items.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Available to eBay Live Auctions sellers. Sends data defining a single new lot item

+						to the eBay Live Auctions site, where it becomes a new lot in a seller's Live Auction catalog.

+						The listing also appears on the main eBay site. As in the case of AddItem,

+						the data returned includes an item ID for the new listing and estimated fees,

+						not including the Final Value Fee. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Item" type="ns:ItemType"  minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the values that define the new lot item.

+								Item is a required input.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddLiveAuctionItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddLiveAuctionItem -->

+	<xs:element name="AddLiveAuctionItemResponse" type="ns:AddLiveAuctionItemResponseType"/>

+	<xs:complexType name="AddLiveAuctionItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the item ID and the estimated fees for the new lot item listing,

+				as well as the state of the lot item (e.g., categories that changed).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The item ID of the lot.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>AddLiveAuctionItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Fees" type="ns:FeesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements contain the estimated listing fees for the new item listing.

+								The fees do not include the Final Value Fee (FVF), which cannot be determined

+								until an item is sold.

+								For consistency in the response, the call returns the same kinds of fees

+								as other listing calls, but some fees are not applicable to eBay Live Auctions listings.

+								See "Fees Resulting from Listing an Item" in the eBay Web Services guide

+								for information about fees.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddLiveAuctionItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the primary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID you passed in PrimaryCategory was mapped to a new ID by eBay.

+								If the primary category has not changed or it has expired with no replacement,

+								CategoryID does not return a value.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>AddLiveAuctionItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Category2ID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the secondary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID you passed in SecondaryCategory was mapped to a new ID by eBay.

+								If the secondary category has not changed or it has expired with no replacement,

+								Category2ID does not return a value.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>AddLiveAuctionItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddMemberMessage -->

+	<xs:element name="AddMemberMessageRequest" type="ns:AddMemberMessageRequestType"/>

+	<xs:complexType name="AddMemberMessageRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to respond to eBay users who have asked

+				questions about an active item listings. To be deprecated in Oct 2006.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to respond to eBay users who have asked

+						questions about an active item listing.

+						To be deprecated in Oct 2006. Use AddMemberMessageRTQ instead.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique ID of the item about which

+								the question was asked. Required input

+								for AddMemberMessage MessageType = ResponseToASQQuestion.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>AddMemberMessage</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MemberMessage" type="ns:MemberMessageType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The message itself.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddMemberMessage</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddMemberMessage -->

+	<xs:element name="AddMemberMessageResponse" type="ns:AddMemberMessageResponseType"/>

+	<xs:complexType name="AddMemberMessageResponseType">

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddMemberMessageAAQToPartner -->

+	<xs:element name="AddMemberMessageAAQToPartnerRequest" type="ns:AddMemberMessageAAQToPartnerRequestType"/>

+	<xs:complexType name="AddMemberMessageAAQToPartnerRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a buyer and seller in a transactional relationship to send messages to each other

+				within 90 days of the creation of the transaction.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a buyer and seller in a transactional relationship to

+						send messages to each other's My Messages Inboxes within 90 days of the creation of

+						the transaction. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique ID of the item about which the question was asked.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddMemberMessageAAQToPartner</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MemberMessage" type="ns:MemberMessageType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The message itself.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddMemberMessageAAQToPartner</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddMemberMessageAAQToPartner -->

+	<xs:element name="AddMemberMessageAAQToPartnerResponse" type="ns:AddMemberMessageAAQToPartnerResponseType"/>

+	<xs:complexType name="AddMemberMessageAAQToPartnerResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response to AddMemberMessageAAQToPartner request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddMemberMessageRTQ -->

+	<xs:element name="AddMemberMessageRTQRequest" type="ns:AddMemberMessageRTQRequestType"/>

+	<xs:complexType name="AddMemberMessageRTQRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to reply to a question about an active item listing.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to reply to a question about an active item listing. The reply is sent

+						to the user's My Messages inbox.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique ID of the item about which

+								the question was asked.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddMemberMessageRTQ</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MemberMessage" type="ns:MemberMessageType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The message itself.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddMemberMessageRTQ</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddMemberMessageRTQ -->

+	<xs:element name="AddMemberMessageRTQResponse" type="ns:AddMemberMessageRTQResponseType"/>

+	<xs:complexType name="AddMemberMessageRTQResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response to AddMemberMessageRTQ request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddMemberMessagesAAQToBidder -->

+	<xs:element name="AddMemberMessagesAAQToBidderRequest" type="ns:AddMemberMessagesAAQToBidderRequestType"/>

+	<xs:complexType name="AddMemberMessagesAAQToBidderRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to send up to 10 messages to bidders and

+				users who have made offers (via Best Offer) during an

+				active listing.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to send up to 10 messages to bidders and

+						users who have made offers (via Best Offer) during an

+						active listing. Messages to a user appear in the user's My Messages inbox. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="AddMemberMessagesAAQToBidderRequestContainer" type="ns:AddMemberMessagesAAQToBidderRequestContainerType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+							Allows a seller to send up to 10 messages to

+							bidders and users who have made offers (via Best

+							Offer) during an active listing.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddMemberMessagesAAQToBidder</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddMemberMessagesAAQToBidder -->

+<!-- auto-generated by API Schema Generation Tool-->

+	<xs:element name="AddMemberMessagesAAQToBidderResponse" type="ns:AddMemberMessagesAAQToBidderResponseType"/>

+	<xs:complexType name="AddMemberMessagesAAQToBidderResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the response information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="AddMemberMessagesAAQToBidderResponseContainer" type="ns:AddMemberMessagesAAQToBidderResponseContainerType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the response information.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddMemberMessagesAAQToBidder</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddOrder -->

+	<xs:element name="AddOrderRequest" type="ns:AddOrderRequestType"/>

+	<xs:complexType name="AddOrderRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Combines two or more transactions into a single order. A transaction is

+				the commitment by a buyer to purchase an item. On a successful call to

+				AddOrder, the multiple transactions are combined into a single order.

+				&lt;br&gt;&lt;br&gt;

+				We strongly recommend that you avoid mixing digital and non-digital listings in the same order.

+				(In the future, AddOrder may enforce this recommendation.)

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Combines two or more transactions into a single order. The order has a unique identifier and the buyer can make a single payment for purchases. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Order" type="ns:OrderType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The order that is being created.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddOrder</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddOrder -->

+	<xs:element name="AddOrderResponse" type="ns:AddOrderResponseType"/>

+	<xs:complexType name="AddOrderResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns a unique identifier for the order. A buyer may make a single

+				payment to purchase all of the item transactions that are included

+				in the order.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="OrderID" type="ns:OrderIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique identifier for the order.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddOrder</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CreatedTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The date and time the order was created.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddOrder</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddSecondChanceItem -->

+	<xs:element name="AddSecondChanceItemRequest" type="ns:AddSecondChanceItemRequestType"/>

+	<xs:complexType name="AddSecondChanceItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Creates a new Second Chance Offer listing for an item to one of that item's

+				non-winning bidders.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Creates a new Second Chance Offer (that is, an offer for an unsold item) to a non-winning bidder.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="RecipientBidderUserID" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the bidder from the original,

+								ended listing to whom the seller is extending

+								the second chance offer. Specify only one

+								RecipientBidderUserID per call. If multiple

+								users are specified (each in a

+								RecipientBidderUserID node), only the last one

+								specified receives the offer.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BuyItNowPrice" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the amount the offer recipient

+								must pay to purchase the item from the second

+								chance offer listing. Use only when the original

+								item was an eBay Motors (or in some categories

+								on U.S. and international sites for high-priced

+								items, such as items in many U.S. and Canada

+								Business and Industrial categories) and it ended

+								unsold because the reserve price was not met.

+								Call fails with an error for any other item

+								conditions.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CopyEmailToSeller" type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether to send a

+								copy to the seller of the second chance offer

+								notification email that goes to the recipient

+								user. With 457, the seller always receives a

+								copy of the email, and this tag is ignored as

+								input.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<RequiredInput>No</RequiredInput>

+									<TagStatus>Obsolete</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Duration" type="ns:SecondChanceOfferDurationCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the length of time the second

+								chance offer listing will be active. The

+								recipient bidder has that much time to

+								purchase the item or the listing expires.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the item ID for the original,

+								ended listing from which the second chance

+								offer item comes. A new ItemID is returned for

+								the second chance offer item.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Site" type="ns:SiteCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Reserved for internal or future use.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<NoCalls/>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerMessage" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Message content. Cannot contain HTML,

+								asterisks, or quotes. This content is

+								included in the second chance offer email sent

+								to the recipient, which can be retrieved with

+								GetMyMessages.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>1000</MaxLength>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddSecondChanceItem -->

+	<xs:element name="AddSecondChanceItemResponse" type="ns:AddSecondChanceItemResponseType"/>

+	<xs:complexType name="AddSecondChanceItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				AddSecondChanceItem response for a new Second Chance

+				Offer listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Fees" type="ns:FeesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the listing fees for the new second

+								chance offer listing.

+							</xs:documentation>

+							<xs:appinfo>

+								<SeeLink>

+									<Title>Value-Added Tax (VAT)</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/B2BandVAT-Value-Added_Tax_(VAT).html</URL>

+								</SeeLink>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the item ID for the new second chance

+								offer listing. Different from the original ItemID passed in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the date and time when the the new

+								second chance offer listing became active and

+								the recipient user could purchase the item.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the date and time when the second

+								chance offer listing expires, at which time

+								the listing ends (if the recipient user does

+								not purchase the item first).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddSecondChanceItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddToItemDescription -->

+	<xs:element name="AddToItemDescriptionRequest" type="ns:AddToItemDescriptionRequestType"/>

+	<xs:complexType name="AddToItemDescriptionRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Adds text to the end of the description section of an item listing.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Adds text to the end of the description section of an item listing.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique item ID that identifies the target item listing, the description

+								of which is appended with the text specified in Description.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>AddToItemDescription</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Description" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the text to append to the end of the listings description.

+								Text appended to a listing's description must abide by the rules

+								applicable to this data (such as no JavaScript) as is the case when

+								first listing the item.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddToItemDescription</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddToItemDescription -->

+	<xs:element name="AddToItemDescriptionResponse" type="ns:AddToItemDescriptionResponseType"/>

+	<xs:complexType name="AddToItemDescriptionResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Indicates the success or failure of the attempt to add text to the end of the 

+				description section of an item listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddToWatchList -->

+	<xs:element name="AddToWatchListRequest" type="ns:AddToWatchListRequestType"/>

+	<xs:complexType name="AddToWatchListRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Adds one or more items to the user's My eBay watch list.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Adds one or more items to the user's My eBay watch list.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The ItemID of the item that is to be added

+								to the watch list. The item must be a currently

+								active item, and the total number of items in

+								the watchlist (after the items in the request

+								have been added) cannot exceed the maximum

+								allowed number of watch list items.

+								One or more ItemIDs can be specified, each in

+								its own ItemID container. A separate error node

+								will be returned for each item that fails.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>AddToWatchList</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddToWatchList -->

+	<xs:element name="AddToWatchListResponse" type="ns:AddToWatchListResponseType"/>

+	<xs:complexType name="AddToWatchListResponseType">

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="WatchListCount" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The number of items in the user's watch list (after those specified

+								in the call request have been added)

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddToWatchList</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="WatchListMaximum" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The maximum number of items allowed in watch lists. Currently this

+								value is the same for all sites and all users.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddToWatchList</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddTransactionConfirmationItem -->

+	<xs:element name="AddTransactionConfirmationItemRequest" type="ns:AddTransactionConfirmationItemRequestType"/>

+	<xs:complexType name="AddTransactionConfirmationItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Ends the listing specified by ItemID and creates a new Transaction

+				Confirmation Request (TCR) for an item. A TCR enables a buyer

+				to purchase an item. Applies to the US eBay Motors site (except

+				Parts and Accessories category), effective in early July 2006.

+				You can use this call for an item after the item has been

+				listed for at least 24 hours. A TCR is sent by a seller to one

+				of the following: a bidder, a best offer buyer, a member with

+				an ASQ question, or any member with a postal code.

+				Alternatively, this call can be used to verify that a new TCR

+				can be created.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Ends the listing specified by ItemID and creates a new Transaction

+						Confirmation Request (TCR) for an item.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="RecipientUserID" type="ns:UserIDType">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the user to whom the seller is offering the Transaction Confirmation Request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="VerifyEligibilityOnly" type="xs:string">

+						<xs:annotation>

+							<xs:documentation>

+								If true, specifies that the seller is verifying whether a new Transaction Confirmation Request

+								(TCR) can be created.

+								Thus, if this value is passed as true, then no Transaction Confirmation Request is actually made. If VerifyEligibilityOnly

+								is not passed, or is false, a Transaction Confirmation Request is actually made.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RecipientPostalCode" type="xs:string">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the postal code of the user to whom the seller is offering the Transaction Confirmation Request.

+								Required only if the user does not meet the other options listed in RecipientRelationCodeType.

+								An error is returned if RecipientUserID and RecipientPostalCode do not match for more than 3 times

+								for a seller per day.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RecipientRelationType" type="ns:RecipientRelationCodeType">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the current relationship between the seller and the potential buyer.

+								A seller can make a Transaction Confirmation Request (TCR) for an item

+								to a potential buyer if the buyer meets one of several criteria.

+								A TCR is sent by a seller to one of the following: a bidder, a best offer buyer,

+								a member with an ASQ question, or any member with a postal code. See the values and annotations in RecipientRelationCodeType.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="NegotiatedPrice" type="ns:AmountType">

+						<xs:annotation>

+							<xs:documentation>

+								The amount the offer recipient must pay to buy the item

+								specified in the Transaction Confirmation Request (TCR).

+								A negotiated amount between the buyer and the seller.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ListingDuration" type="ns:SecondChanceOfferDurationCodeType">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the length of time the item in the Transaction Confirmation Request (TCR) will be

+								available for purchase.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemID" type="ns:ItemIDType">

+						<xs:annotation>

+							<xs:documentation>

+							  The ItemID of the item that the seller wants to end in order to create a Transaction Confirmation Request (TCR).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Comments" type="xs:string">

+						<xs:annotation>

+							<xs:documentation>

+								Comments the seller wants to send to the recipient (bidder, best offer buyer, member with an ASQ question, or

+								member with a postal code).

+     					</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: AddTransactionConfirmationItem -->

+	<xs:element name="AddTransactionConfirmationItemResponse" type="ns:AddTransactionConfirmationItemResponseType"/>

+	<xs:complexType name="AddTransactionConfirmationItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+          Returns an item ID for a new Transaction Confirmation Request (TCR). 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  The new item ID for the item in the new Transaction Confirmation Request (TCR). 

+                  This field is not returned if the request was only used to verify that a new TCR could be created.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  The date and time when the item in the new Transaction Confirmation Request (TCR)

+                  becomes available for purchase.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  The date and time when the item in the new Transaction Confirmation Request (TCR)

+                  is no longer available for purchase.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddTransactionConfirmationItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ApproveLiveAuctionBidders -->

+	<xs:element name="ApproveLiveAuctionBiddersRequest" type="ns:ApproveLiveAuctionBiddersRequestType"/>

+	<xs:complexType name="ApproveLiveAuctionBiddersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Provides Live Auction sellers with the ability to approve, decline,

+				and set the bidding limit of the bidders that have signed up for a catalog.

+				Includes the list of bidders for the requested item as part of the

+				general item listing data.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Provides Live Auction sellers with the ability to approve, decline,

+						and set the bidding limit of the bidders that have signed up for a catalog.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="UserCatalogID" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Number that identifies the seller's eBay Live Auctions catalog for which

+								they want to set bidding limits and approve or decline bidders.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ApproveLiveAuctionBidders</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BidApproval" type="ns:BidApprovalArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Approval details for a specific set of bidders.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ApproveLiveAuctionBidders</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ApproveAllPending" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								This will approve all bidders in the catalog in the pending status only.

+								This is an optional field. If provided and set to true, do not send BidApproval.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ApproveLiveAuctionBidders</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AllApprovedBiddingLimit" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								This is the amount that bidders are beings approved for.

+								This is required if user has set ApproveAllPending to true.

+								It only applies to bidder requests that are in pending status.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ApproveLiveAuctionBidders</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ApproveLiveAuctionBidders -->

+<!-- W3C Schema generated by XMLSPY v5 rel. 4 U (http://www.xmlspy.com)

+  -->

+	<xs:element name="ApproveLiveAuctionBiddersResponse" type="ns:ApproveLiveAuctionBiddersResponseType"/>

+	<xs:complexType name="ApproveLiveAuctionBiddersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+			Provides the Live Auction sellers with the ability to approve, decline,

+			and set the bidding limit of the bidders that have signed up for a catalog.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="BidderUpdateStatus" type="ns:LiveAuctionApprovalStatusArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Contains the results of the request for each item.

+							Mulitple bidders can be approved with one call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ApproveLiveAuctionBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: CompleteSale -->

+	<xs:element name="CompleteSaleRequest" type="ns:CompleteSaleRequestType"/>

+	<xs:complexType name="CompleteSaleRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to do various tasks after processing a

+				transaction.

+				The seller can leave feedback for the buyer, change the paid

+				status in My eBay, and/or change the shipped status in My eBay.

+				Only the seller who listed the item can perform these tasks. This

+				call can be executed at any time after a transaction has been

+				created. However, it is a good idea to wait until the sale is

+				complete before using this call.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to do the following tasks after processing a

+						transaction: leave feedback for the buyer, change the paid status in My eBay, or change the shipped status in My eBay (or any combination of these). 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the listing associated with the transaction that the

+								seller is completing.

+								Required.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>CompleteSale</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique identifier for a transaction from the listing indicated by ItemID.

+								Call GetItemTransactions or GetSellerTransactions to determine

+								the appropriate transaction ID.

+								Required for all listing types (pass 0 for Chinese auctions).

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>CompleteSale</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FeedbackInfo" type="ns:FeedbackInfoType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies feedback the seller is leaving for the buyer.

+								For a given transaction, the seller can leave feedback once,

+								and no further modifications can be made to that feedback entry.

+								If feedback has already been left, FeedbackInfo is not allowed.

+								Call GetFeedback to determine whether feedback has already been left.

+								Optional.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>CompleteSale</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Shipped" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, the transaction is marked as shipped in My eBay

+								(applicable for Selling Manager Pro users).

+								If false, the transaction is marked as not shipped in My eBay.

+								If not specified, the shipped status in My eBay is not modified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>CompleteSale</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Paid" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, the transaction is marked as paid in My eBay.

+								If false, the transaction is marked as not paid in My eBay.

+								If not specified, the paid status in My eBay is not modified.

+								Optional.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>CompleteSale</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: CompleteSale -->

+	<xs:element name="CompleteSaleResponse" type="ns:CompleteSaleResponseType"/>

+	<xs:complexType name="CompleteSaleResponseType">

+		<xs:annotation>

+			<xs:documentation>

+      Indicates the success or failure of the attempt to leave feedback for the buyer, 

+      change the paid status in My eBay, and/or change the shipped status in My eBay.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: DeleteMyMessages -->

+	<xs:element name="DeleteMyMessagesRequest" type="ns:DeleteMyMessagesRequestType" />

+	<xs:complexType name="DeleteMyMessagesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Removes selected alerts and messages for a given user. Alerts that

+				require action and have not been resolved by the user cannot be

+				deleted.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Removes selected alerts and messages for a given user.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="AlertIDs" type="ns:MyMessagesAlertIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of up to 10 AlertID values.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>DeleteMyMessages</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MessageIDs" type="ns:MyMessagesMessageIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of up to 10 MessageID values.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>DeleteMyMessages</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: DeleteMyMessages -->

+	<xs:element name="DeleteMyMessagesResponse" type="ns:DeleteMyMessagesResponseType"/>

+	<xs:complexType name="DeleteMyMessagesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				The response to DeleteMyMessagesRequestType. If the request was successful, 

+				DeleteMyMessages returns nothing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: EndItem -->

+	<xs:element name="EndItemRequest" type="ns:EndItemRequestType"/>

+	<xs:complexType name="EndItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Ends the specified item listing. Used by a seller to end the

+				listing before it would normally end, such as before the

+				specified duration has passed or the item was purchased via

+				a Buy It Now option. Only the item's seller may call EndItem

+				to end the item listing. Applicable to items listed on eBay.com

+				and Half.com.

+				For eBay Live Auctions, you cannot delete items that have been closed or that

+				are part of a Live Auction event that has started.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Ends the specified item listing before the date and time at which

+						it would normally end (per the listing duration). For competitive-bidding listings

+						that have bids on them, the listing ends as a successful auction with

+						winning bidder(s) unless the seller first cancels the bids. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique item ID that identifies the item listing to end.

+								Also applicable to Half.com. For Half.com listings, you can either

+								specify ItemID or SellerInventoryID.

+								For eBay Live Auctions, you cannot delete items that have been closed

+								or that are part of a Live Auction event that has started.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>EndItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndingReason" type="ns:EndReasonCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the seller's reason for ending the listing early.

+								This field is required if the seller is ending the item early and the item

+								did not successfully sell.

+								Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>EndItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerInventoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique identifier that the seller specified when they listed the

+								Half.com item. For Half.com items, you can either specify ItemID or SellerInventoryID.

+								If you specify both ItemID and SellerInventoryID, they must be for the same item

+								(otherwise an error will occur).

+								Only applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>EndItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: EndItem -->

+	<xs:element name="EndItemResponse" type="ns:EndItemResponseType"/>

+	<xs:complexType name="EndItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Includes the acknowledgement of date and time the auction was

+				ended due to the call to EndItem.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the date and time (returned in GMT) the specified item listing

+								was ended.

+								Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>EndItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: FetchToken -->

+	<xs:element name="FetchTokenRequest" type="ns:FetchTokenRequestType"/>

+	<xs:complexType name="FetchTokenRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves an authentication token for the user. Can be used to get

+				the token only after the user gives consent for the token to be

+				generated via the eBay signin page. This call must be

+				authenticated using the username and password of the application,

+				rather than a token. After retrieval, the token can be used to authenticate other calls. 

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves an authentication token for the user.

+					</Summary>

+				</Overview>

+				<SeeLink>

+					<Title>Authentication &amp; Authorization</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="SecretID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A value that is associated with the token retrieval request. The secret ID

+								is a value that is defined by the application, and is passed in redirect

+								URL to the eBay signin page. eBay recommends using a UUID for the secret

+								ID value. You must also set Username (part of the RequesterCredentials)

+								for the particular user of interest.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>FetchToken</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: FetchToken -->

+	<xs:element name="FetchTokenResponse" type="ns:FetchTokenResponseType"/>

+	<xs:complexType name="FetchTokenResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Includes the authentication token for the user and the date it expires.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="eBayAuthToken" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The authentication token for the user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>FetchToken</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+								<SeeLink>

+									<Title>Authentication &amp; Authorization</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HardExpirationTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Date and time at which the token returned in eBayAuthToken expires

+								and can no longer be used to authenticate the user for that application.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>FetchToken</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAccount -->

+	<xs:element name="GetAccountRequest" type="ns:GetAccountRequestType"/>

+	<xs:complexType name="GetAccountRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to retreive his or her own account data. Returns account

+				entries, including credits and debits, in a report format the user selects.

+				Also returns summary data for the account.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to retreive his or her own account data.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="AccountHistorySelection" type="ns:AccountHistorySelectionCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the report format in which to return account entries.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="InvoiceDate" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Specifies the month and year of the invoice requested. The report

+							includes only the entries that appear on the seller's invoice in the specified month

+							and year. An entry can occur in one month and appear on the next month's

+							invoice. Used with SpecifiedInvoice reports.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BeginDate" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Specifies the beginning of a date range during which a credit or debit

+							occurred. Used when AccountHistorySelection is BetweenSpecifiedDates.

+							Value must be less than or equal to the value specified in EndDate. The allowed date

+							formats are YYYY-MM-DD and YYYY-MM-DD HH:mm:ss.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndDate" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Specifies the end of a date range during which a credit or debit

+							occurred. Used when AccountHistorySelection is BetweenSpecifiedDates.

+							Value must be greater than or equal to the value specified in BeginDate. The

+							allowed date formats are YYYY-MM-DD and YYYY-MM-DD HH:mm:ss.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Controls pagination of the response. For this request, the valid values

+							of Pagination.EntriesPerPage are 0 to 2000, with a default of 500.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExcludeBalance" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+					          Specifies whether to calculate balances. Default is

+							  false, which calculates balances. The value true means

+							  do not calculate balances. If true, AccountEntry.Balance and

+							  AccountSummary.CurrentBalance are never returned in the response.

+					    </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExcludeSummary" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether to return account summary information in an

+								AccountSummary node. Default is true, to return AccountSummary.

+						  </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AccountEntrySortType" type="ns:AccountEntrySortTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how account entries should be sorted in

+								the response, by an element and then in ascending or

+								descending order.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+						  	Specifies the currency used in the account report. Do not specify Currency in the request

+						  	unless the following conditions are met. First, the user has or had multiple accounts under

+						  	the same UserID. Second, the account identified in the request uses the currency you specify in the request. An error is returned if no account is found that uses the currency you specify in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAccount -->

+	<xs:element name="GetAccountResponse" type="ns:GetAccountResponseType"/>

+	<xs:complexType name="GetAccountResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns information about an eBay seller's own account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="AccountID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the seller's unique account number. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AccountSummary" type="ns:AccountSummaryType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains summary data for the seller's account, such as the overall

+								balance, bank account and credit card information, and amount and

+								date of any past due balances. Can also contain data for

+								one or more additional accounts, if the user has changed country

+								of residence.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the currency used for monetary amounts in the report.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AccountEntries" type="ns:AccountEntriesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Contains individual account entries, according to the report's scope and date range.

+							Each account entry represents one credit, debit, or administrative account action.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the total number of pages (TotalNumberOfPages) and the total

+								number of account entries (TotalNumberOfEntries) that can be returned

+								on repeated calls with the same format and report criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreEntries" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether there are more items yet to be retrieved. Additional calls 

+								must be made to retrieve those items.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EntriesPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Specifies the number of items that are being returned per virtual page of date.

+							Value is the same as that specified in Pagination.EntriesPerPage.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Indicates which page of data was just returned. Value is the same as the value

+							specified in Pagination.PageNumber. If PageNumber in the request is higher than

+							the total number of pages, the call fails with an error.)

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAccount</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAdFormatLeads -->

+	<xs:element name="GetAdFormatLeadsRequest" type="ns:GetAdFormatLeadsRequestType"/>

+	<xs:complexType name="GetAdFormatLeadsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieve sales lead information for a real estate

+				advertisement listing. GetAdFormatLeadsRequest returns

+				the number of leads for an ad and any contact

+				information that the buyer submitted.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieve sales lead information for a real estate

+						advertisement listing.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique identifier of an item listed on the eBay site.

+								Returned by eBay when the item is created. This ID must correspond to an ad format item.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+							  <CallInfo>

+  								<CallName>GetAdFormatLeads</CallName>

+  								<RequiredInput>Yes</RequiredInput>

+  							</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAdFormatLeads -->

+	<xs:element name="GetAdFormatLeadsResponse" type="ns:GetAdFormatLeadsResponseType"/>

+	<xs:complexType name="GetAdFormatLeadsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Returns number of leads and contact and other information for each lead. One AdFormatLead node is returned for each lead.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="AdFormatLead" type="ns:AdFormatLeadType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+							(out) Contains contact and other information for one lead. One node is returned for each lead. Only returned at a detail level of ReturnAll. At least one lead must be available for the specified item to return AdFormatLead.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAdFormatLeads</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AdFormatLeadCount" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							(out) The total number of leads returned. Only returned if you do not specify a detail level.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAdFormatLeads</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAllBidders -->

+	<xs:element name="GetAllBiddersRequest" type="ns:GetAllBiddersRequestType"/>

+	<xs:complexType name="GetAllBiddersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Includes the list of bidders for the requested item as part of the general item listing data.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Provides three modes for retrieving a list of the users that bid

+						on a listing. One of the modes is of particular value in support of

+						the Second Chance Offer feature. Includes the list of bidders for the

+						requested item as part of the general item listing data.

+					</Summary>

+				</Overview>

+				<SeeLink>

+					<Title>Extending a Second Chance Offer</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExtendingSecondChanceOffer</URL>

+					<For>detailed information on working with the result set</For>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The item ID for which to retrieve the list of bidders.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetAllBidders</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CallMode" type="ns:GetAllBiddersModeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies which bidder information to return.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAllBidders</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAllBidders -->

+	<xs:element name="GetAllBiddersResponse" type="ns:GetAllBiddersResponseType"/>

+	<xs:complexType name="GetAllBiddersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Includes the list of bidders for the requested item as part of the general item listing data.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="BidArray" type="ns:OfferArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of OfferType objects. Each

+								OfferType object represents the data for one bidder and bid.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAllBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HighBidder" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								eBay user ID for the user with the highest bid (or the earliest timestamp, in the

+								event of a tie); a second chance off candidate.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAllBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HighestBid" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Bid amount offered by the HighBidder.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAllBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ListingStatus" type="ns:ListingStatusCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies an active or ended listing's status in eBay's processing workflow.

+								If a listing ends with a sale (or sales), eBay needs to update the sale details

+								(e.g., winning bidder) and other information. This processing

+								can take several minutes. If you retrieve a sold item, use this listing status information

+								to determine whether eBay has finished processing the listing so that you can

+								be sure the winning bidder and other details are correct and complete.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAllBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetApiAccessRules -->

+	<xs:element name="GetApiAccessRulesRequest" type="ns:GetApiAccessRulesRequestType"/>

+	<xs:complexType name="GetApiAccessRulesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests the rules for accessing eBay API calls and your

+				application's daily, hourly, and periodic usage of each call.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests the rules for accessing eBay API calls and your

+						application's daily, hourly, and periodic usage of each call.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetApiAccessRules -->

+	<xs:element name="GetApiAccessRulesResponse" type="ns:GetApiAccessRulesResponseType"/>

+	<xs:complexType name="GetApiAccessRulesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+Returns a list of API access rules, in response

+to a GetApiAccessRulesRequest.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ApiAccessRule" type="ns:ApiAccessRuleType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the description of an API access rule, including the

+								call name, the application's current daily and hourly usage,

+								and other values.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetApiAccessRules</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAttributesCS -->

+	<xs:element name="GetAttributesCSRequest" type="ns:GetAttributesCSRequestType"/>

+	<xs:complexType name="GetAttributesCSRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves an XML string that describes how to present Item

+				Specifics to a seller. Use this information to present users with

+				the equivalent of the Item Specifics portion of the eBay Title

+				and Description pages and to validate selected eBay attributes on

+				the client before including them in an AddItem call or related

+				calls. The XML string contains a list of all the attributes that

+				are applicable for one or more requested categories, along with

+				related meta-data. The meta-data specifies all the possible

+				values of each attribute, the logic for presenting the attributes

+				to a user, and rules for validating the user's selections. See

+				the Developer's Guide for an overview of Item Specifics and

+				details about the eBay attribute model.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves an XML string that describes how to present Item

+						Specifics to a seller. Item Specifics are optional when listing in most categories;

+						however, some categories (such as Real Estate, US Tickets, and US eBay Motors)

+						require Item Specifics to be specified.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="AttributeSystemVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A version of the Item Specifics meta-data definitions for the site.

+								Typically, an application passes the version value that was returned the last

+								time the application executed this call.

+								Filter that causes the call to return only the characteristics sets

+								for which the attribute meta-data has changed since the specified version.

+								If not specified, all characteristics sets are returned.

+								The latest version value is not necessarily greater than the previous

+								value that was returned. Therefore, when comparing versions, only

+								compare whether the value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesCS</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AttributeSetID" type="xs:int" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								An array of characteristic setIDs (which always correspond to attribute set IDs).

+								Each characteristic setcorresponds to a level in the eBay category hierarchy at

+								which all items share common characteristics.

+								Multiple categories can be mapped to the same characteristics set.

+								AttributeSetIDs is an optional input. When IDs are specified, the call

+								only returns meta-data for the corresponding characteristics sets.

+								When no IDs are specified, the call returns all the current meta-data in the system.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesCS</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeCategoryMappingDetails" type="xs:boolean" default="false" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, includes a list of CategoryMapping nodes in the response.

+								Each CategoryMapping node specifies category information as well as

+								attributes and values that your application can auto-fill for

+								items listed in that category. See the eBay Web Services Guide for more

+								information about options for maintaining category data and

+								auto-filling Item Specifics.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesCS</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DigitalDelivery" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, the characteristic set data is customized for digitally delivered items.

+								In the digital delivery variation of the response, there are no changes to the attribute set IDs,

+								attribute IDs, or value IDs, but "return policy" text is replaced with "refund policy" text

+								and the Item Condition attribute is removed from all applicable characteristic sets.

+								If a seller specifies that they are listing a digital item,

+								you can render this variation of the applicable meta-data in your Item Specifics or Return Policy form.

+								(You can use the Item Specifics SYI XSL stylesheet to render the data as usual.)

+								Usage of this information is optional.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesCS</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAttributesCS -->

+	<xs:element name="GetAttributesCSResponse" type="ns:GetAttributesCSResponseType"/>

+	<xs:complexType name="GetAttributesCSResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns XML that describes how to present Item Specifics to a seller

+				and how to validate selected eBay attributes on the client before including

+				them in an AddItem call or related calls.

+				See the Developer's Guide for an overview of Item Specifics and details about

+				the eBay attribute model. Also returns the current version of the meta-data system.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="AttributeSystemVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Current version of the Item Specifics meta-data system for the site.

+								This value changes each time changes are made to the meta-data.

+								The current version value is not necessarily greater than the previous

+								value. Therefore, when comparing versions, only compare whether the

+								value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesCS</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AttributeData" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A string containing a list of all the attributes that are applicable

+								to the site (or characteristic sets in the request), along with related meta-data.

+								The meta-data specifies all the possible values of each attribute, the

+								logic for presenting attributes to a user, and rules for validating the

+								user's selections. This data is in the same XML format that was used in the

+								Legacy XML API so that you can apply the same Item Specifics XSL stylesheet and

+								your own patching stylesheets to it. That is, individual

+								elements are not described using the new eBay XML schema format.

+								For information about each element in the AttributeData string,

+								see the attribute model documentation in the eBay Web Services guide (see links below).&lt;br&gt;

+								&lt;br&gt;

+								Because this is returned as a string, the XML markup elements are escaped with

+								character entity references (e.g.,&amp;amp;lt;eBay&amp;amp;gt;&amp;amp;lt;Attributes&amp;amp;gt;...).

+								See the appendices in the eBay Web Services guide for general information about

+								string data types.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesCS</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+								<SeeLink>

+									<Title>The Attribute Meta-Data Model</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AttrModel</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAttributesXSL -->

+	<xs:element name="GetAttributesXSLRequest" type="ns:GetAttributesXSLRequestType"/>

+	<xs:complexType name="GetAttributesXSLRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the Item Specifics SYI XSL stylesheet. Apply the stylesheet to the

+				XML returned from a call to GetAttributesCS or GetProductSellingPages to

+				render a form like the Item Specifics portion of eBay's Title and Description page.

+				See the eBay Web Services Guide for an overview of Item Specifics and information

+				on working with the XSL.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the Item Specifics SYI XSL stylesheet for use with

+						the GetAttributesCS and GetProductSellingPages response.

+						You use the stylesheet to render Item Specifics in a user interface,

+						as applicable within a particular category.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="FileName" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The name of the XSL file to retrieve. If not specified, the call

+								returns the latest versions of all available XSL files.

+								FileName is an optional input. Valid values&lt;br&gt;

+								&lt;br&gt;

+                  syi_attributes.xsl

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesXSL</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FileVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The desired version of the XSL file. Required if FileName is specified.

+								If not specified, the call returns the latest version of the file.

+								(This is not a filter for retrieving changes to the XSL file.)

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesXSL</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetAttributesXSL -->

+	<xs:element name="GetAttributesXSLResponse" type="ns:GetAttributesXSLResponseType"/>

+	<xs:complexType name="GetAttributesXSLResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the Item Specifics SYI XSL stylesheet.Apply the stylesheet to the

+				XML returned from a call to GetAttributesCS or GetProductSellingPages to

+				render a form like the Item Specifics portion of eBay's Title and Description page.

+				See the Developer's Guide for an overview of Item Specifics and information

+				on working with the XSL.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="XSLFile" type="ns:XSLFileType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements contain data related to one XSL file.

+ 								Multiple XSLFile objects can be returned. However, currently only

+ 								one is returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetAttributesXSL</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetBestOffers -->

+	<xs:element name="GetBestOffersRequest" type="ns:GetBestOffersRequestType"/>

+	<xs:complexType name="GetBestOffersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the best offers associated with ItemID according to the

+				BestOfferStatus filter, where Active is the default.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the best offers associated with ItemID according to the

+						BestOfferStatus filter, where Active is the default.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The item for which Best Offer information is to be returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetBestOffers</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BestOfferID" type="ns:BestOfferIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The specific Best Offer for which details are to be

+								retrieved. Omit this tag to get a list of all best offers

+								(according to BestOfferStatus).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBestOffers</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BestOfferStatus" type="ns:BestOfferStatusCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A filter determining which Best Offers to return for an item. Active is the default.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBestOffers</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetBestOffers -->

+	<xs:element name="GetBestOffersResponse" type="ns:GetBestOffersResponseType"/>

+	<xs:complexType name="GetBestOffersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				All best offers for the item according to the filter or best offer 

+				id (or both) used in the input.

+				For the notification client usage, this response includes a 

+				single Best Offer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="BestOfferArray" type="ns:BestOfferArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								All best offers for the item according to the filter or 

+								best offer id (or both) used in the input. The buyer and 

+								seller messages are returned only if the detail level is 

+								defined. Includes the buyer and seller message only if 

+								detail level ReturnAll is used.

+								Only returned if best offers have been made.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBestOffers</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The item for which Best Offers are being returned.

+								Only returned if best offers have been made.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBestOffers</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetBidderList -->

+	<xs:element name="GetBidderListRequest" type="ns:GetBidderListRequestType"/>

+	<xs:complexType name="GetBidderListRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves all items on which the user is currently bidding or

+				which the buyer has won or purchased.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves all items on which the user is currently bidding or

+						which the buyer has won or purchased.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:annotation>

+				<xs:documentation>

+					Retrieves all items on which the user is currently bidding or

+					which the buyer has won or purchased.

+				</xs:documentation>

+			</xs:annotation>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ActiveItemsOnly" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether to limit the result set to active items.

+								If true, only active items are returned and the EndTimeFrom

+								and EndTimeTo filters are ignored. If false (or not sent),

+								active and ended items are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBidderList</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits returned items to only those for which the item's

+								end date is on or after the date-time specified. Specify an

+								end date within 30 days prior to today. Items that ended

+								more than 30 days ago are omitted from the results. If

+								specified, EndTimeTo must also be specified. Express

+								date-time in the format YYYY-MM-DD HH:MM:SS, and in GMT.

+								(For information on how to convert between your local time zone

+								and GMT, see Time Values Note.) This field is ignored if ActiveItemsOnly is true.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBidderList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits returned items to only those for which the item's

+								end date is on or before the date-time specified. If

+								specified, EndTimeFrom must also be specified. Express

+								date-time in the format YYYY-MM-DD HH:MM:SS, and in GMT.

+								This field is ignored if ActiveItemsOnly is true.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBidderList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UserID" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The user for whom information should be returned. If

+								provided, overrides user defined via RequesterCredentials

+								in header.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBidderList</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="GranularityLevel" type="ns:GranularityLevelCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								For GetBidderList, you can reduce the ItemType fields and other fields returned

+								by specifying one of two values in the GranularityLevel field, Coarse or Medium.

+								If you specify Coarse, the primary fields returned are the following: Item.ItemID and Item.ListingDetails.EndTime. If you specify Medium, an abbreviated result set is returned

+								that includes many more fields than in the case of Coarse, including the following:

+								Item.BuyItNowPrice, Item.Currency, Item.Site, and Item.Title.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBidderList</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetBidderList -->

+	<xs:element name="GetBidderListResponse" type="ns:GetBidderListResponseType"/>

+	<xs:complexType name="GetBidderListResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response to GetBidderListRequest.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:annotation>

+				<xs:documentation>

+					Response to GetBidderListRequest.

+				</xs:documentation>

+			</xs:annotation>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Bidder" type="ns:UserType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Data for one eBay bidder.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBidderList</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BidItemArray" type="ns:ItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Array of items the bidder has bid on, has won or has lost.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetBidderList</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategories -->

+	<xs:element name="GetCategoriesRequest" type="ns:GetCategoriesRequestType"/>

+	<xs:complexType name="GetCategoriesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the inputs that determine which categories to return and from

+				which eBay site to get them. Retrieves the category hierarchy including

+				and under the category (or categories) specified in CategoryParent.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves from eBay the latest category hierarchy.

+						Information returned for each category includes the category name

+						and the unique identifier for the category

+						(unique within the eBay site for which categories are retrieved).

+						A category ID is a required input for most new items.

+					</Summary>

+					<TempInfo>dl</TempInfo>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategorySiteID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the eBay site for which to retrieve the category hierarchy.

+								Use the numeric site code (e.g., 77 for eBay Germany).

+								Only necessary if you want to retrieve category data

+								for a site other than the site to which you are submitting the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<RequiredInput>No</RequiredInput>

+									<Default>The site ID of the request</Default>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryParent" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the ID of the highest-level category to return, along with its subcategories.

+								If no parent category is specified, all categories are returned for the specified site.

+								To determine available category IDs, call GetCategories with no filters and use a DetailLevel value of ReturnAll.

+								If you specify multiple parent categories, the hierarchy for each one is returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<RequiredInput>No</RequiredInput>

+									<Default>0</Default>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LevelLimit" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the maximum depth of the category hierarchy to retrieve, where the top-level categories

+								(meta-categories) are at level 1. Retrieves all category nodes with

+								a category level less than or equal to this value.

+								If not specified, then categories at all applicable levels can be returned.

+								As with all calls, the actual data returned will vary depending on how you configure

+								other fields in the request (inicluding the DetailLevel).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<RequiredInput>No</RequiredInput>

+									<Default>0</Default>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ViewAllNodes" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If false or omitted, only leaf categories are returned.

+								(You can only list in leaf categories.)

+								If true, both leaf and internal (non-leaf) categories are returned.

+								As with all calls, the actual data returned will vary depending on how you configure

+								other fields in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<RequiredInput>No</RequiredInput>

+									<Default>false</Default>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategories -->

+	<xs:element name="GetCategoriesResponse" type="ns:GetCategoriesResponseType"/>

+	<xs:complexType name="GetCategoriesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the category data for the eBay site specified as input. The category

+				data is contained in a CategoryArrayType object, within which are zero, one, or

+				multiple CategoryType objects. Each CategoryType object contains the detail data

+				for one category. Other fields tell how many categories are returned in a call,

+				when the category hierarchy was last updated, and the version of the category

+				hierarchy (all three of which can differ from one eBay site to the next).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="CategoryArray" type="ns:CategoryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								List of the returned categories. The category array contains one CategoryType

+								object for each returned category. Returns empty if no detail level is specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryCount" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the number of categories returned (i.e., the number of CategoryType

+								objects in CategoryArray).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UpdateTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the last date and time that eBay modified the category hierarchy for the

+								specified eBay site.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the version of the category hierarchy on the 

+								specified eBay site.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReservePriceInclusive" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							The ReservePriceInclusive and ReduceReserveInclusive fields will be deprecated 

+							in a future release. We recommend that you start using ReduceReserveAllowed and 

+							ReservePriceAllowed instead of these "inclusive" fields as soon as possible.

+							The names of ReservePriceInclusive and ReduceReserveInclusive are REVERSED.

+							If true, ReservePriceInclusive indicates that all categories on the 

+							site allow the seller to REDUCE an item's reserve price. 

+							If false, all categories on the site do not normally allow sellers to reduce an 

+							item's reserve price.

+							The Category.ORRA (override reduce reserve price) field can override (or toggle)

+							the reserve price reduction setting for a given category.

+							For example, if ReservePriceInclusive is false and Category.ORRA is true,

+							the category overrides the site setting and supports reducing reserve prices. 

+							If ReservePriceInclusive is true and Category.ORRA is true, the category

+							overrides the site setting and does does not support reducing reserve prices.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<TagStatus>Deprecated</TagStatus>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReservePriceAllowed" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							If true, ReservePriceAllowed indicates that all categories on the 

+							site allow the seller to specify a reserve price for an item.

+							If false, all categories on the site do not normally allow sellers to specify reserve prices.

+							The Category.ORPA (override reserve price allowed) field can override (or toggle)

+							the reserve price allowed setting for a given category.

+							For example, if ReservePriceAllowed is false and Category.ORPA is true,

+							the category overrides the site setting and supports reserve prices. 

+							If ReservePriceAllowed is true and Category.ORPA is true, the category

+							overrides the site setting and does does not support reserve prices.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MinimumReservePrice" type="xs:double" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+	    					Indicates the lowest possible reserve price allowed for any item

+	    					listed in any category on the site. You can use the fields returned by GetCategoryFeatures to determine if a different Minimum Reserve Price is defined for the category you want to use.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation> 

+							Not used.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Conditionally</Returned>

+									<TagStatus>Obsolete</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReduceReserveInclusive" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							The ReservePriceInclusive and ReduceReserveInclusive fields will be deprecated 

+							in a future release. We recommend that you start using ReduceReserveAllowed and 

+							ReservePriceAllowed instead of these "inclusive" fields as soon as possible.

+							The names of ReservePriceInclusive and ReduceReserveInclusive are REVERSED.

+							If true, ReduceReserveInclusive indicates that all categories on the 

+							site allow the seller to SPECIFY a reserve price for an item.

+							If false, all categories on the site do not normally allow sellers to specify reserve prices.

+							The Category.ORPA (override reserve price allowed) field can override (or toggle)

+							the reserve price inclusive setting for a given category.

+							For example, if ReduceReserveInclusive is false and Category.ORPA is true,

+							the category overrides the site setting and supports reserve prices. 

+							If ReduceReserveInclusive is true and Category.ORPA is true, the category

+							overrides the site setting and does does not support reserve prices.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<TagStatus>Deprecated</TagStatus>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReduceReserveAllowed" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							If true, ReduceReserveAllowed indicates that all categories on the 

+							site allow the seller to reduce an item's reserve price. 

+							If false, all categories on the site do not normally allow sellers to reduce an 

+							item's reserve price.

+							The Category.ORRA (override reduce reserve price) field can override (or toggle)

+							the reserve price reduction setting for a given category.

+							For example, if ReduceReserveAllowed is false and Category.ORRA is true,

+							the category overrides the site setting and supports reducing reserve prices. 

+							If ReduceReserveAllowed is true and Category.ORRA is true, the category

+							overrides the site setting and does does not support reducing reserve prices.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategories</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategory2CS -->

+	<xs:element name="GetCategory2CSRequest" type="ns:GetCategory2CSRequestType"/>

+	<xs:complexType name="GetCategory2CSRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves mappings between categories and characteristics sets that are available for an eBay site.

+				Retrieves all mappings or just those that match category IDs passed in the call.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves mappings between categories and characteristics

+						sets that are available for an eBay site.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of a category for which to retrieve mappings. If not specified, the call

+								retrieves a map for all categories.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetCategory2CS</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AttributeSystemVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A version of the mappings for the site.

+								Typically, an application passes the version value that was returned the last

+								time the application executed this call.

+								Filter that causes the call to return only the categories

+								for which the mappings have changed since the specified version.

+								If not specified, all category-to-characteristics set mappings are returned.

+								This value changes each time changes are made to the mappings.

+								The current version value is not necessarily greater than the previous

+								value. Therefore, when comparing versions, only compare whether the

+								value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategory2CS</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategory2CS -->

+	<xs:element name="GetCategory2CSResponse" type="ns:GetCategory2CSResponseType"/>

+	<xs:complexType name="GetCategory2CSResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns data that indicates the categories that are mapped to characteristics sets,

+				for the eBay site to which the call was routed.

+				Retrieves all mappings or just the one that matches the category ID passed as input.

+				The data is returned in a CategoryArrayType object, which can contain multiple mappings.

+				The response also contains information about categories for which the mappings have changed.&lt;br&gt;

+				&lt;br&gt;

+				&lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt; The Pre-filled Item Information feature depends on the Item Specifics feature.

+				This means the set of catalog-enabled categories is a subset of the categories

+				that are mapped to characteristic sets. That is, there are no catalog-enabled categories

+				that are not mapped to characteristic sets.&lt;/span&gt;

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="MappedCategoryArray" type="ns:CategoryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains data about categories that are mapped to characteristics sets.

+								Use this data to determine:

+								- The names and IDs of the characteristics sets

+								- The availability of the Pre-filled Item Information feature for listings in that category

+									(i.e., whether the category is catalog-enabled)

+								- For catalog-enabled categories, the available product search methods

+								- The current version information for the complete mapping

+								- The version information for each characteristics set

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategory2CS</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UnmappedCategoryArray" type="ns:CategoryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains data about categories (if any) whose characteristics set mappings have changed

+								since the version specified in the request. When a characteristics set mapping

+								changes, the data appears in both the UnmappedCategoryArray object

+								(to indicate that the change occurred) and the MappedCategoryArray object.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategory2CS</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AttributeSystemVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Current version of the mappings for the site.

+								This value changes each time changes are made to the mappings.

+								The current version value is not necessarily greater than the previous

+								value. Therefore, when comparing versions, only compare whether the

+								value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategory2CS</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SiteWideCharacteristicSets" type="ns:SiteWideCharacteristicsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								A list of one or more characteristics sets mapped to the category, if any. Use this

+								information when working with Item Specifics (Attributes) and Pre-filled Item

+								Information (Catalogs) functionality.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategory2CS</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategory2FinanceOffer -->

+	<xs:element name="GetCategory2FinanceOfferRequest" type="ns:GetCategory2FinanceOfferRequestType"/>

+	<xs:complexType name="GetCategory2FinanceOfferRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the promotional financing offers available in a specified category

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the promotional financing offers available in a specified category.

+					</Summary>

+					<TempInfo>dl</TempInfo>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Retrieve the promotional financing offers for this category.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetCategory2FinanceOffer</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LastModifiedDate" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Date from which to retrieve financing offers.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategory2FinanceOffer</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategory2FinanceOffer -->

+	<xs:element name="GetCategory2FinanceOfferResponse" type="ns:GetCategory2FinanceOfferResponseType"/>

+	<xs:complexType name="GetCategory2FinanceOfferResponseType">

+		<xs:complexContent>

+			<xs:annotation>

+				<xs:documentation>

+					Contains either the set of finance offers for a given category, or the number

+					of finance offers for a given category.

+				</xs:documentation>

+			</xs:annotation>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Count" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Number of finance offers that apply to the specified category.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategory2FinanceOffer</CallName>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryFinanceOfferArray" type="ns:CategoryFinanceOfferArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Set of finance offers that apply to the specified category.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategory2FinanceOffer</CallName>

+									<DetailLevels>ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategoryFeatures -->

+	<xs:element name="GetCategoryFeaturesRequest" type="ns:GetCategoryFeaturesRequestType"/>

+	<xs:complexType name="GetCategoryFeaturesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the categories on the site that have the features you

+				requested in FeatureDefinitions. The return set might have fewer

+				categories than the site has defined, because only some

+				categories implement those features.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns information about features that may only be applicable to

+						certain categories on the site, such as particular listing durations,

+						shipping term requirements, and Best Offer features.

+					</Summary>

+					<TempInfo>dl</TempInfo>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Defines the category for which you want information.

+								If not specified, returns all categories for the site.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LevelLimit" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the levels of categories to return. By specifying a value in

+								LevelLimit, you retrieve all category nodes with a CategoryLevel less

+								than or equal to the LevelLimit value.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ViewAllNodes" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies, when false or not specified, that just leaf category nodes

+								be returned. When true, all applicable category nodes are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<RequiredInput>No</RequiredInput>

+									<Default>false</Default>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FeatureID" type="ns:FeatureIDCodeType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Identifies the feature you want information about. If no value is

+								specified, the value defaults to all feature IDs.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategoryFeatures -->

+	<xs:element name="GetCategoryFeaturesResponse" type="ns:GetCategoryFeaturesResponseType"/>

+	<xs:complexType name="GetCategoryFeaturesResponseType">

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="CategoryVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Returns the categories on the site that have the features you requested in FeatureIds. 

+								The return set might have fewer categories than the site has defined, because only 

+								some categories implement those features.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UpdateTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Gives the time in GMT that the category hierarchy was last updated. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Category" type="ns:CategoryFeatureType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation> 

+								Lists the categories on the site that have the features you requested in FeatureID. 

+								The return set might have fewer categories than the site has defined, because only

+								some categories implement those features. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<DetailLevels>ReturnAll</DetailLevels>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SiteDefaults" type="ns:SiteDefaultsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Returns feature definitions defined for the entire site. Each feature has a node

+								in this section.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<DetailLevels>ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FeatureDefinitions" type="ns:FeatureDefinitionsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Returns definitions and values for the various features you requested. Each feature

+								has a node within FeatureDefinitions.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryFeatures</CallName>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategoryListings -->

+	<xs:element name="GetCategoryListingsRequest" type="ns:GetCategoryListingsRequestType"/>

+	<xs:complexType name="GetCategoryListingsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns items in a specified category.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns items in a specified category. A number of inputs are provided

+						for filtering the item listings returned using such criteria as

+						location, whether the item is listed in an ebay Store, the listing type, and including or excluding specified sellers. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="MotorsGermanySearchable" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Filters the response based on each item's eligibility to appear on the mobile.de site.

+								If false, excludes eligible items from search results. If true, queries for

+								eligible items only. If not specified, the search results are not affected.

+								Only applicable for items listed on the eBay Germany site (site ID 77) in subcategories of

+								mobile.de search-enabled categories.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the category for which to retrieve item listings.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AdFormat" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Reserved for future use.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Numeric ID for a currency type. Limits the result set to just those items listed

+								using a specified currency. Not applicable to US eBay Motors searches.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemTypeFilter" type="ns:ItemTypeFilterCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Filters items based on the ListingType set for the items. 

+								If you search for Store Inventory items, you should use values in ItemTypeFilter

+								instead of StoresFixedPrice.								

+								If ItemTypeFilter is not specified (or if the AllItemTypes value of ItemTypeFilter is specified), all listing types can be returned unless another relevant filter is specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StoresFixedPrice" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Ignored if Store-related values in ItemTypeFilterCodeType are used as input filters.

+								Using values in ItemTypeFilterCodeType is preferable to using StoresFixedPrice.

+								StoresFixedPrice controls whether or not to use Store Inventory format as a filtering criterion.

+								If true, the results only include Store Inventory listings (with no listings in other formats).

+								If false, the results only include listings in other formats (with no Store Inventory listings).

+								If not specified (the default), this filter is not applied at all, so all formats can be returned.

+								If you do not sort the results, Store Inventory listings normally appear after

+								all matching auction and basic fixed price listings

+								(for eBay sites that default to sorting by items ending soonest).

+								If you pass StoresFixedPrice in the same request with ItemTypeFilter,

+								"AND" logic may be applied, and you might not get the desired results.

+								For example, if you specify StoresFixedPrice=true and ItemTypeFilter=AuctionItemsOnly,

+								the call will succeed but no listings will be returned (because no listings can use both

+								auction and Store Inventory formats).

+								This is why it is recommended that you use values in ItemTypeFilterCodeType instead of StoresFixedPrice.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+									<TagStatus>ObsoleteSoon</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SearchType" type="ns:CategoryListingsSearchCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether to limit the item listings to just those that are

+								category featured or super featured or all items.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="OrderBy" type="ns:CategoryListingsOrderCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the order in which the item listings returned will be sorted.

+								Store Inventory listings are usually returned after other listing types, regardless of the sort order.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Controls the pagination of the result set. Child elements specify the

+								maximum number of item listings to return per call and which page of data

+								to return.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SearchLocation" type="ns:SearchLocationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the result set to just those items that meet location criteria:

+								listed in a specified eBay site, location where the seller has the item,

+								location from which the user is searching, and/or items listed with a

+								specified currency.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProximitySearch" type="ns:ProximitySearchType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the result set to just those items that meet proximity search criteria:

+								postal code and max distance.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeGetItFastItems" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(in) When passed with a value of 1 (true), only Get It Fast listings are returned.

+								Controls the set of listings to return (not the details to return for each listing).

+							</xs:documentation>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentMethod" type="ns:PaymentMethodSearchCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies items that accept a specific payment method or methods.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeCondition" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								For eBay Germany only. If true, each item in the result set can also include the item condition attribute

+								(whether the item is new or used). The item's condition is returned in Item.AttributeSetArray.

+								An item only includes condition attribute if the item's seller filled in

+								the Item Condition in the Item Specifics section of the listing.

+								(That is, the condition attribute is not returned if the seller only put the word

+								"New" in the listing's title but did not specify the condition in the listing's Item Specifics.)

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeFeedback" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							If true, each item in the result set also includes information about the seller's feedback.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LocalSearchPostalCode" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Include local items in returning results near this postal code. This postal code is the basis for local search.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategoryListings -->

+	<xs:element name="GetCategoryListingsResponse" type="ns:GetCategoryListingsResponseType"/>

+	<xs:complexType name="GetCategoryListingsResponseType">

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemArray" type="ns:ItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Contains the item listings for the specified category and which meet the

+                  input filtering criteria (if any is specified). Consists of one ItemType

+                  object for each returned item listing.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Category" type="ns:CategoryType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Indicates the category from which the listings were drawn.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SubCategories" type="ns:CategoryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Collection of the sub-categories that are child to the category indicated

+                  in Category. Data for each sub-category is conveyed in a CategoryType

+                  object.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemsPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Indicates the maximum number of item listings that will be returned per

+                  call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Indicates the page of data returned in the current call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreItems" type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+                  Indicates whether there are more item listings that can be returned

+                  (items listed in the specified category and that meet any input filtering

+                  criteria).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Indicates the results of the pagination, including the total number of

+                  pages of data there are to be returned and the total number of items

+                  there are to be returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BuyingGuideDetails" type="ns:BuyingGuideDetailsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Contains information about relevant buying guides (if any) and the site's buying guide hub.

+                  Buying guides are useful to buyers who do not have a specific product in mind. 

+                  For example, a digital camera buying guide could help a buyer determine what kind of 

+                  digital camera is right for them.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryListings</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategoryMappings -->

+	<xs:element name="GetCategoryMappingsRequest" type="ns:GetCategoryMappingsRequestType"/>

+	<xs:complexType name="GetCategoryMappingsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves a map of old category IDs and corresponding active

+				category IDs defined for the site to which the request is sent.

+				Typically used to update an older item definition with a new

+				category ID prior to listing the item.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves a map of old category IDs and corresponding active

+						category IDs defined for the site to which the request is sent.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategoryVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								 A version of the category mapping for the site. Filters

+								 out data from the call to return only the category

+								 mappings for which the data has changed since the

+								 specified version. If not specified, all category

+								 mappings are returned. Typically, an application passes

+								 the version value of the last set of category mappings

+								 that the application stored locally. The latest version

+								 value is not necessarily greater than the previous value

+								 that was returned. Therefore, when comparing versions,

+								 only compare whether the value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryMappings</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCategoryMappings -->

+	<xs:element name="GetCategoryMappingsResponse" type="ns:GetCategoryMappingsResponseType"/>

+	<xs:complexType name="GetCategoryMappingsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+Returns a map of old category IDs and corresponding active category IDs defined for 

+the site to which the request was sent.

+Typically used to update an older item definition with a new category ID 

+prior to listing the item.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="CategoryMapping" type="ns:CategoryMappingType" minOccurs="0" maxOccurs="unbounded">

+					<xs:annotation>

+						<xs:documentation>

+               Mapping between an old category ID and an active category ID. 

+               Returned when category mappings exist and the value of CategoryVersion is 

+               different from the current version on the site.

+						</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetCategoryMappings</CallName>

+								<Returned>Conditionally</Returned>

+								<DetailLevels>ReturnAll</DetailLevels>

+							</CallInfo>

+						</xs:appinfo>

+					</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryVersion" type="xs:string" minOccurs="0" maxOccurs="1">

+						<xs:annotation>

+							<xs:documentation>

+                  Version value assigned to the current category mapping data for the site. 

+                  Compare this value to the version value the application stored with the mappings 

+                  the last time the application executed the call. If the versions are the same, 

+                  the data has not changed since the last time the data was retrieved and stored.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCategoryMappings</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCharities -->

+	<xs:element name="GetCharitiesRequest" type="ns:GetCharitiesRequestType"/>

+	<xs:complexType name="GetCharitiesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Searches for nonprofit charity organizations that meet the criteria specified in the request.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Searches for nonprofit charity organizations that meet the criteria specified in the request.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CharityID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A unique identification number assigned by eBay to registered nonprofit charity organizations.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCharities</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CharityName" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A name assigned to a specified nonprofit

+								organization. Accepts full charity nonprofit name

+								or partial name as input. For example, enter a

+								CharityName of "heart" (case-insensitive) to

+								return all charity nonprofits that start with

+								"heart." Use with a MatchType value of "Contains"

+								to return all charity nonprofits that contain the

+								string "heart."

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>150</MaxLength>

+								<CallInfo>

+									<CallName>GetCharities</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Query" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Accepts a case-insensitive string used to

+								find a nonprofit charity organization. Default

+								behavior is to search the CharityName field. Use

+								with an IncludeDescription value of true to

+								include the Mission field in the search.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>350 (characters)</MaxLength>

+								<CallInfo>

+									<CallName>GetCharities</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CharityRegion" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Region that the nonprofit charity organization is associated

+								with. A specific nonprofit charity organization may be associated

+								with only one region. Meaning of input values differs depending on

+								the site. See GetCharities in the API Developer's Guide for the meaning

+								of each input/output value. CharityRegion input value must be

+								valid for that SiteID.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCharities</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CharityDomain" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Domain (mission area) that a nonprofit charity organization

+								belongs to. Nonprofit charity organizations may belong to multiple

+								mission areas. Meaning of input values differs depending on the

+								site. See GetCharities in the API Developer's Guide for the meaning

+								of each input/output value. CharityDomain input value must be valid for

+								that SiteID.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCharities</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeDescription" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Used with Query to search for charity nonprofit

+								organizations. A value of true will search the Mission field as

+								well as the CharityName field for a string specified in Query.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCharities</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MatchType" type="ns:StringMatchCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the type of string matching to use

+								when a value is submitted in CharityName. If no

+								value is specified, default behavior is

+								"StartsWith." Does not apply to Query.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCharities</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCharities -->

+	<xs:element name="GetCharitiesResponse" type="ns:GetCharitiesResponseType"/>

+	<xs:complexType name="GetCharitiesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+			Contains information about charity nonprofit organizations that meet the 

+			criteria specified in the request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Charity" type="ns:CharityInfoType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+							Contains information about charity nonprofit organizations that 

+							meet the criteria specified in the request. One Charity node is 

+							returned for each applicable nonprofit charity organization. The 

+							CharityID value is returned as an id attribute of this node. If no 

+							nonprofit charity organization is applicable, this node is not 

+							returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+								<CallName>GetCharities</CallName>

+								<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetContextualKeywords -->

+	<xs:element name="GetContextualKeywordsRequest" type="ns:GetContextualKeywordsRequestType"/>

+	<xs:complexType name="GetContextualKeywordsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves top-ranked contextual eBay keywords and categories

+				for a specified web page. Results are ranked according

+				to score. This enables developers to create applications that are different from

+				traditional contextual ad serving. For instance, instead of building a standard

+				ad banner or skyscraper ad like those from eBay AdContext, a developer could

+				create an application that does inline hyperlinking of keywords on any page or

+				create widgets for blog platforms.

+				Not available for CN, TW, SG and HK sites.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves top-ranked contextual eBay keywords and categories

+						for a specified web page.

+					</Summary>

+				</Overview>

+				<SiteInfo>

+					<ExcludeFromDefaultSites>CN, TW, SG, HK</ExcludeFromDefaultSites>

+				</SiteInfo>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="URL" type="xs:anyURI" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The URL of the web page from which eBay is to extract keywords.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetContextualKeywords</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Encoding" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Web page encoding by which the URL is to be handled, such as ISO-8859-1.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetContextualKeywords</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The ID of the category to which keywords are to be limited.

+								Zero or more category IDs can be specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetContextualKeywords</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetContextualKeywords -->

+	<xs:element name="GetContextualKeywordsResponse" type="ns:GetContextualKeywordsResponseType"/>

+	<xs:complexType name="GetContextualKeywordsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response to a GetContextualKeywords request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ContextSearchAsset" type="ns:ContextSearchAssetType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								An array of either keyword/category pairs or categories, with ranking and score.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetContextualKeywords</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCrossPromotions -->

+	<xs:element name="GetCrossPromotionsRequest" type="ns:GetCrossPromotionsRequestType"/>

+	<xs:complexType name="GetCrossPromotionsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests a list of cross-promoted items associated with a

+				referring item.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests a list of cross-promoted items associated with a

+						referring item.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique ID of the referring item. The cross-promoted

+								items will supplement this item.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetCrossPromotions</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PromotionMethod" type="ns:PromotionMethodCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The cross-promotion method you want to use for the

+								returned list, either UpSell or CrossSell.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCrossPromotions</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PromotionViewMode" type="ns:TradingRoleCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The role of the person requesting to view the cross-promoted

+								items, either seller or buyer. Default is buyer.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCrossPromotions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetCrossPromotions -->

+	<xs:element name="GetCrossPromotionsResponse" type="ns:GetCrossPromotionsResponseType"/>

+	<xs:complexType name="GetCrossPromotionsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns a list of either upsell or cross-sell items for a given item ID.

+				The list can be filtered by the viewer's role, either buyer or seller. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="CrossPromotion" type="ns:CrossPromotionsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation> 

+							  A list of cross-promoted items defined for a specific

+							  referring item. The list is either upsell or cross-sell

+							  items, according to the value of PromotionMethod in 

+							  GetCrossPromotionsRequest.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetCrossPromotions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetDescriptionTemplates -->

+	<xs:element name="GetDescriptionTemplatesRequest" type="ns:GetDescriptionTemplatesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the DescriptionTemplates for a category.

+			</xs:documentation>

+		</xs:annotation>

+	</xs:element>

+	<xs:complexType name="GetDescriptionTemplatesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Request for DescriptionTemplates.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the DescriptionTemplates for a category.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The category for which to retrieve templates. Enter any

+								category ID, including Motors vehicle categories. This

+								is ignored if you also send MotorVehicles.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LastModifiedTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If specified, only those templates modified on or after the

+								specified date are returned. If not specified, all templates are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MotorVehicles" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether to retrieve templates for motor vehicle

+								categories for eBay Motors (site 100). If true, templates

+								are returned for motor vehicle categories. If false,

+								templates are returned for non-motor vehicle categories

+								such as Parts and Accessories. If included as an input field (whether true or false), this overrides any value provided for CategoryID.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetDescriptionTemplates -->

+	<xs:element name="GetDescriptionTemplatesResponse" type="ns:GetDescriptionTemplatesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns one or more DescriptionTemplate nodes. Each DescriptionTemplate node contains the information for one Theme or one Layout. DescriptionTemplate.DescriptionTemplateType indicates whether it contains data for a Theme or a Layout.

+			</xs:documentation>

+		</xs:annotation>

+	</xs:element>

+	<xs:complexType name="GetDescriptionTemplatesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returned after calling GetDescriptionTemplatesRequest.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="DescriptionTemplate" type="ns:DescriptionTemplateType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The information for one Theme or one Layout. There 

+								can be multiple DescriptionTemplates.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LayoutTotal" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The number of Layout templates returned (that is, the 

+								number of DescriptionTemplates for which Type is "Layout").

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ObsoleteLayoutID" type="xs:int" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The ID of a returned layout that is obsolete. There can be zero or more IDs.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ObsoleteThemeID" type="xs:int" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The ID of a returned theme that is obsolete. There can be zero or more IDs.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ThemeGroup" type="ns:ThemeGroupType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Data for one theme group. There can be multiple 

+								ThemeGroups in the response.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ThemeTotal" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The number of Theme templates returned (that is, the number 

+								of DescriptionTemplates for which Type is "Theme").					

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDescriptionTemplates</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetDispute -->

+	<xs:element name="GetDisputeRequest" type="ns:GetDisputeRequestType"/>

+	<xs:complexType name="GetDisputeRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests the record of a dispute with a given dispute ID.

+				The dispute record contains the dispute state, dispute type, and other

+				information. Can be used with Unpaid Item or Item Not Received disputes.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests the record of a dispute with a given dispute ID. Returns the entire record of a dispute,

+						any time after the dispute was opened and up to five years after it was closed.

+						Returns just one dispute, including any comments

+						and resolutions and the dispute state. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="DisputeID" type="ns:DisputeIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique identifier of the dispute, returned when the dispute is created.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDispute</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetDispute -->

+	<xs:element name="GetDisputeResponse" type="ns:GetDisputeResponseType"/>

+	<xs:complexType name="GetDisputeResponseType">

+		<xs:annotation>

+			<xs:documentation>

+        Returned after calling GetDisputeRequest. Returns the record of

+      	a dispute, including the dispute state and other information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Dispute" type="ns:DisputeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The dispute record, containing information about

+								the buyer, seller, dispute state, dispute status,

+								comments added to the dispute, or resolutions.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetDispute</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetFeedback -->

+	<xs:element name="GetFeedbackRequest" type="ns:GetFeedbackRequestType"/>

+	<xs:complexType name="GetFeedbackRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the accumulation of feedback left for the specified user by

+				other users. Returns summary feedback data and (in a detail level value

+				of ReturnAll is specified) individual feedbacks.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the accumulation of feedback left for the specified user

+						by other users.

+					</Summary>

+				</Overview>

+				<TempInfo>dl</TempInfo>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Controls the pagination of the result set. Child elements specify the

+								maximum number of individual feedbacks to return per call and which page

+								of data to return. Only applicable if a detail level value of ReturnAll

+								is specified to return feedback details. feedback summary data is not

+								paginated (but is still returned when pagination is used).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFeedback</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UserID" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the user whose feedback data is to be returned. If not specified,

+								then the feedback returned is that for the requesting user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFeedback</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FeedbackID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An ID that uniquely identifies a feedback to be retrieved.

+								Used by the Feedback notification only.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFeedback</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetFeedback -->

+	<xs:element name="GetFeedbackResponse" type="ns:GetFeedbackResponseType"/>

+	<xs:complexType name="GetFeedbackResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				The GetFeedback response contains the specified user's total

+				feedback score, feedback summary data, and (if the applicable

+				detail level is specified) an array of individual feedbacks.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="FeedbackDetailArray" type="ns:FeedbackDetailArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Contains the individual feedbacks for the user, one FeedbackDetailType

+								object for each feedback. Only populated with data when a detail level of

+								ReturnAll is specified in the request. Not returned if you specify FeedbackID in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFeedback</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FeedbackDetailItemTotal" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Indicates the number of FeedbackDetailType objects returned in the

+								FeedbackDetailArray property. Only applicable if feedback details are

+								returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFeedback</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FeedbackSummary" type="ns:FeedbackSummaryType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Summary feedback data for the user. Contains counts of positive, neutral,

+								and negative feedback for predefined time periods. Only applicable if feedback details are

+								returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFeedback</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FeedbackScore" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Indicates the total feedback score for the user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFeedback</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetFinanceOffers -->

+	<xs:element name="GetFinanceOffersRequest" type="ns:GetFinanceOffersRequestType"/>

+	<xs:complexType name="GetFinanceOffersRequestType">

+		<xs:annotation>

+				<xs:documentation>

+					Retrieves either the current set of finance offers or a specific

+					finance offer. Only supported on US and Canada sites. Payment method must be PayPal.

+				</xs:documentation>

+				<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves either the current set of finance offers or a specific

+						finance offer. Only supported on US and Canada sites. Payment method must be PayPal.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="FinanceOfferID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+          			ID for promotional financing offer with which the seller is listing an item. If this is specified, the function returns only the finance offer associated with this ID number. If FinanceOfferID and LastModifiedDate are both used as input, LastModifiedDate is ignored.

+            	</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFinanceOffers</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LastModifiedDate" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+          			Date from which to search for finance offers. If this is specified but

+          			FinanceOfferID is not, this call will return those finance offers that

+          			have been changed since this date.

+            	</xs:documentation>

+ 							<xs:appinfo>

+								<CallInfo>

+	 								<CallName>GetFinanceOffers</CallName>

+	 								<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetFinanceOffers -->

+	<xs:element name="GetFinanceOffersResponse" type="ns:GetFinanceOffersResponseType"/>

+	<xs:complexType name="GetFinanceOffersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the number of finance offers and the current set of finance offers.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Count" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The number of finance offers available on the

+								site and specified in the call request. If no

+								finance offers exist that meet the request

+								criteria, a count of 0 is returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFinanceOffers</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FinanceOfferArray" type="ns:FinanceOfferArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Set of currently available finance offers or a

+								set that contains a specific finance offer (if a

+								particular finance offer ID was specified in the

+								call input). Only returned if finance offers

+								meeting the request criteria exist.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetFinanceOffers</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetHighBidders -->

+	<xs:element name="GetHighBiddersRequest" type="ns:GetHighBiddersRequestType"/>

+	<xs:complexType name="GetHighBiddersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves a list of high bidders for the Dutch auction specified

+				in the ItemID property of the request.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves a list of high bidders for the Dutch auction specified

+						in the ItemId property of the request. A seller can use

+						this list to determine which buyers

+						are winning bidders and how many items each is able to purchase. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique item ID that identifies the Dutch auction listing for which to

+								retrieve a list of the high bidders.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetHighBidders</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetHighBidders -->

+	<xs:element name="GetHighBiddersResponse" type="ns:GetHighBiddersResponseType"/>

+	<xs:complexType name="GetHighBiddersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns a list of high bidders for the Dutch auction specified in the

+				ItemId property of the request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="BidArray" type="ns:OfferArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of zero, one, or multiple OfferType objects. Each

+								OfferType object represents the data for one high bidder. See the schema

+								documentation for OfferType for details on its properties and their

+								meanings.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetHighBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ListingStatus" type="ns:ListingStatusCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Specifies an active or ended listing's status in eBay's processing workflow.

+							If a listing ends with a sale (or sales), eBay needs to update the sale details 

+							(e.g., winning bidder) and other information. This processing 

+							can take several minutes. If you retrieve a sold item, use this listing status information 

+							to determine whether eBay has finished processing the listing so that you can 

+							be sure the winning bidder and other details are correct and complete.

+						</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetHighBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItem -->

+	<xs:element name="GetItemRequest" type="ns:GetItemRequestType"/>

+	<xs:complexType name="GetItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests data for a specific item identified by item ID. Use no

+				DetailLevel to return all item fields without Item.Description.

+				Use a DetailLevel of ReturnAll to return all item fields. See

+				GetItem in the eBay Web Services Guide for more information.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests data for a specific item identified by item ID.

+						Data returned includes title, description,

+						minimum bid price, seller information, high bidder information (if there currently is a high bidder),

+						and shipping specifications (if the seller elected to have the buyer pay for shipping). 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the item ID that uniquely identifies the item listing for which

+								to retrieve the data. ItemID is a required input.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeWatchCount" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates if the caller wants to include watch count for that item in the response.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeCrossPromotion" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates if the caller wants to include cross promotions for that item in the response. Default is set to true for backward compatibility.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItem -->

+	<xs:element name="GetItemResponse" type="ns:GetItemResponseType"/>

+	<xs:complexType name="GetItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the item data returned by the call. The data for the specified item

+				listing is returned in an ItemType object.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ItemType object that contains the data for the specified item.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItem</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItemRecommendations -->

+	<xs:element name="GetItemRecommendationsRequest" type="ns:GetItemRecommendationsRequestType"/>

+	<xs:complexType name="GetItemRecommendationsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Examines potential item data that a seller

+				has specified and returns recommended changes or opportunities for

+				improvement. The types of recommendations returned for a given

+				item can be configured by choosing one or more recommendation

+				engines in the request. This call supports batch requests. That

+				is, you can retrieve recommendations for multiple items at once.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Examines potential item data that a seller

+						has specified and returns recommended changes or opportunities for

+						improvement.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="GetRecommendationsRequestContainer" type="ns:GetRecommendationsRequestContainerType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the data for a single item and configures the recommendation engines to use

+								when processing the item.

+								To retrieve recommendations for multiple items, pass a separate

+								GetRecommendationsRequestContainer for each item. In this case,

+								pass a user-defined correlation ID for each item to identify the matching response.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemRecommendations</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItemRecommendations -->

+	<xs:element name="GetItemRecommendationsResponse" type="ns:GetItemRecommendationsResponseType"/>

+	<xs:complexType name="GetItemRecommendationsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+GetItemRecommendations returns recommended changes or opportunities for improvement 

+related to listing data that was passed in the request.

+This call supports batch requests. That is, it can retrieve recommendations for multiple 

+items at once.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="GetRecommendationsResponseContainer" type="ns:GetRecommendationsResponseContainerType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+                  Specifies recommended changes or opportunities for improving the data of a single item.

+                  If multiple items were processed, a separate GetRecommendationsResponseContainer

+                  is returned for each item. Each container includes a user-defined correlation ID 

+                  to help you match items in the request to recommendations in the response.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemRecommendations</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItemShipping -->

+	<xs:element name="GetItemShippingRequest" type="ns:GetItemShippingRequestType"/>

+	<xs:complexType name="GetItemShippingRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the input necessary to determine shipping information

+				for an item.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns shipping cost estimates for an item.

+						This is analogous to the Shipping Calculator seen in both the buyer and seller web pages.

+						It is another way for a buyer or seller to obtain shipping cost information for

+						an existing item (for which the caller is either the buyer or seller)

+						at any point in the life of of the listing, before or after a buyer has committed to purchasing the item(s).

+						This enables the user to determine the costs associated with a particular

+						shipping service shipping to a specified postal code.

+						(Note, however, that shipping insurance cost can only be determined once the final item price is known.) 

+					</Summary>

+				</Overview>

+				<SeeLink>

+					<Title>Getting Shipping Cost Information</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShippingGettingCosts</URL>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The item ID that uniquely identifies the item listing for which

+								to retrieve the data. Required input.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetItemShipping</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="QuantitySold" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Number of items sold to a single buyer and to be shipped together.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemShipping</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DestinationPostalCode" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Destination country postal code (or zipcode, for US). Ignored if no

+								country code is provided. Optional tag for some countries. More likely to

+								be required for large countries.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemShipping</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DestinationCountryCode" type="ns:CountryCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Destination country code. If DestinationCountryCode is US,

+								postal code is required and represents US zip code.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>US</Default>

+								<CallInfo>

+									<CallName>GetItemShipping</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItemShipping -->

+	<xs:element name="GetItemShippingResponse" type="ns:GetItemShippingResponseType"/>

+	<xs:complexType name="GetItemShippingResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the data returned by the call. The shipping

+				details for the specified item are returned in a

+				ShippingDetails object.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ShippingDetails" type="ns:ShippingDetailsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Shipping-related details for the specified item. Any error about shipping services

+								(returned by a vendor of eBay's who calculates shipping costs) is returned in

+								ShippingRateErrorMessage. Errors from a shipping service are likely to be related to

+								issues with shipping specifications, such as package size and the selected shipping

+								method not supported by a particular shipping service.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemShipping</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItemTransactions -->

+	<xs:element name="GetItemTransactionsRequest" type="ns:GetItemTransactionsRequestType"/>

+	<xs:complexType name="GetItemTransactionsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the transactions associated with the sale of one or more items. A

+				transaction contains the information about the sale of one or more items by one

+				buyer from a single listing. GetItemTransactions retrieves a report containing

+				information you can use to process one listing's transactions. (Often, it is more

+				efficient to use GetSellerTransactions instead. See the reference guide for more

+				information.) As some listings can return large numbers of transactions, use the

+				supplied time filters to retrieve only those transactions whose status has been

+				modified between two dates. Optionally, also configure the request to retrieve one

+				page of data at a time (where each page contains a more manageable number of

+				transactions). All the listing's transactions that were modified within the

+				specified date range can be retrieved, or a single transaction can be retrieved.

+				However, retrieving transactions one at a time is inefficent and requires more API

+				calls.

+				&lt;br&gt;&lt;br&gt;

+				In general, only fields that are necessary for processing transactions are

+				returned. For example, reserve price information would not be returned because the

+				data is not relevant once the agreement to purchase the item has occurred. Also,

+				fields that are not logically applicable are not returned. For example,

+				TransactionArray.Transaction.Buyer.SellerInfo is not returned because the buyer is

+				not acting in the role of a seller for the transaction.

+				&lt;br&gt;&lt;br&gt;

+				As the ItemType object is returned at the root level of the response, and as all

+				transactions returned from this call are from the same item, each individual

+				TransactionType object does not return an ItemType object.

+				&lt;br&gt;&lt;br&gt;

+				Notes:

+				&lt;br&gt;

+				- In the TransactionArray.Transaction.ShippingDetails object, only one of

+				FlatShippingRate or CalculatedRate will be returned, depending on which one the

+				seller set.

+				&lt;br&gt;

+				- In the Item.Buyer and Item.Seller objects, email and address data is only

+				returned under certain conditions.

+				&lt;br&gt;

+				- The Item.ListingDetails.RelistedItemID object is only returned if the item was

+				re-listed.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves data for transactions created by the sale

+						of items from a single, specified listing. Input is the

+						item ID for the item that spawned the transactions. GetItemTransactions

+						returns zero, one, or multiple transactions (depending on the sale of

+						items from the listing and the listing type). The result set can include

+						only the transactions created between two specified dates. 

+					</Summary>

+				</Overview>

+				<TempInfo>dl</TempInfo>

+				<SeeLink>

+					<Title>Email and Address Privacy Policy</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=EmailPrivacyPolicy</URL>

+					<For>the conditions under which buyer and seller email and address are returned</For>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique item ID for the item for which to retrieve transactions.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the earliest (oldest) date to use in a date range filter based on the

+								time the transaction status was modified. Filters out transactions whose status was

+								last modified before this date. The date range between ModTimeFrom to ModTimeTo

+								cannot be greater than 30 days.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the latest (most recent) date to use in a date range filter based on the

+								time a transaction's status was modified. Filters out transactions whose status

+								was last modified after this date. The date range between ModTimeFrom to ModTimeTo

+								cannot be greater than 30 days. It is considered a best practice to always pass

+								the current date-time, to ensure that no data is missed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Identifies one transaction for a listing.

+								For Chinese auctions listings (single-item listings for which there can be

+								only one transaction), TransactionID is always 0, and for multi-quantity

+								listings (for which there can be multiple transactions), TransactionID has

+								a non-0 value.

+								To determine the valid transaction IDs

+								for a listing, you typically need to have previously executed GetItemTransactionsCall

+								or GetSellerTransactionsCall and stored all the listing's transactions.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements control pagination of the output. Use its EntriesPerPage

+								property to control the number of transactions to return per call and its

+								PageNumber property to specify the page of data to return.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeFinalValueFee" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether to include final value fees in the response.

+								For most listing types, the fee is returned in Transaction.FinalValueFee.

+								For Dutch auctions that end with bids (not Buy It Now purchases), the fee

+								is returned in Item.SellingStatus.FinalValueFee.

+								The Final Value Fee for FixedPriceItem, StoresFixedPrice, and Buy It Now

+								Dutch listing types is returned on a transaction by transaction basis.

+								For all other listing types, including Chinese and Dutch (no Buy It Now

+								purchases), the Final Value Fee is returned when the listing status is

+								Completed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeContainingOrder" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								For future use.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItemTransactions -->

+	<xs:element name="GetItemTransactionsResponse" type="ns:GetItemTransactionsResponseType"/>

+	<xs:complexType name="GetItemTransactionsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns an array of transaction data for the item specified in the request.

+				The results can be used to create a report of data that is commonly

+				necessary for end-of-auction processing.

+				Zero, one, or many Transaction objects can be returned in the array.

+				The set of transactions returned is limited to those that were modified between

+				the times specified in the request's ModTimeFrom and ModTime filters.

+				Also returns the item object that spawned the transactions.

+				If pagination filters were specified in the request, returns meta-data describing

+				the effects of those filters on the current response and the estimated effects if

+				the same filters are used in subsequent calls.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the total number of pages (TotalNumberOfPages) and the total number

+								of entries (TotalNumberOfEntries) that could be returned given repeated calls

+								that use the same selection criteria as the call that returned this response.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreTransactions" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether there are additional transactions to retrieve.

+								That is, indicates whether more pages of data are available to be

+								returned, given the filters that were specified in the request.

+								Returns false for the last page of data.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionsPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Number of transactions returned per page (per call). May be a higher value

+								than ReturnedTransactionCountActual if the page returned is the last page

+								and more than one page of data exists.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Page number for the page of transactions the response returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReturnedTransactionCountActual" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Number of transactions retrieved in the current page of results just returned.

+								May be a lower value than TransactionsPerPage if the page returned is the last

+								page and more than one page of data exists.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Item object that spawned the transaction. It is a purchase from this item's listing

+								that the transaction represents.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionArray" type="ns:TransactionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								List of Transaction objects representing the transactions resulting

+								from the listing. Each Transaction object contains the data for one purchase

+								(of one or more items in the same listing). The Transaction.Item field is not

+								returned because the Item object is returned at the root level of the response.

+								See the reference guide for more information about the fields that are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PayPalPreferred" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether the item's seller has the preference enabled that shows that the seller

+								prefers PayPal as the method of payment for an item. This preference is indicated on

+								an item's View Item page and is intended to influence a buyer to use PayPal

+								to pay for the item.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItemsAwaitingFeedback -->

+	<xs:element name="GetItemsAwaitingFeedbackRequest" type="ns:GetItemsAwaitingFeedbackRequestType"/>

+	<xs:complexType name="GetItemsAwaitingFeedbackRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests items awaiting feedback from the user's My eBay account.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests items awaiting feedback from the user's My eBay account.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Sort" type="ns:ItemSortTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how the returned feedback items should be sorted. Valid values

+								are Title, TitleDescending, UserID, UserIDDescending, EndTime, EndTimeDescending,

+								FeedbackReceived, FeedbackReceivedDescending, FeedbackLeft, and

+								FeedbackLeftDescending.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemsAwaitingFeedback</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the number of entries per page and the page number to return

+								in the result set.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemsAwaitingFeedback</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetItemsAwaitingFeedback -->

+	<xs:element name="GetItemsAwaitingFeedbackResponse" type="ns:GetItemsAwaitingFeedbackResponseType"/>

+	<xs:complexType name="GetItemsAwaitingFeedbackResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Returns items from a user's My eBay account that

+				do not yet have feedback.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemsAwaitingFeedback" type="ns:PaginatedTransactionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Contains the items awaiting feedback.

+								Returned only if there are items that do not yet

+								have feedback.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetItemsAwaitingFeedback</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetLiveAuctionBidders -->

+	<xs:element name="GetLiveAuctionBiddersRequest" type="ns:GetLiveAuctionBiddersRequestType"/>

+	<xs:complexType name="GetLiveAuctionBiddersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Includes the list of bidders for the requested catalog.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Gets a list of users who have

+						signed up to participate in their auctions,

+						including the bid approval status of each user. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="UserCatalogID" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Number that identifies the seller's eBay Live Auctions catalog for which they

+								want to retrieve bidder requests.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BidderStatus" type="ns:BidderStatusCodeType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The seller can ask to retrieve a subset of users in the bidder approval list

+								who are either "approved","denied", or "pending" or a combination of these.

+								If this field is not specified in the request, all records are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements control pagination of the output.

+								Use its EntriesPerPage property to control the number of bidders to return per call

+								and its PageNumber property to specify the page of data to return.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetLiveAuctionBidders -->

+<!-- W3C Schema generated by XMLSPY v5 rel. 4 U (http://www.xmlspy.com)

+  -->

+	<xs:element name="GetLiveAuctionBiddersResponse" type="ns:GetLiveAuctionBiddersResponseType"/>

+	<xs:complexType name="GetLiveAuctionBiddersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+			Includes the list of bidders for the requested catalog.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>				

+					<xs:element name="BidderDetails" type="ns:BidderDetailArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the bidder details that match the bidder query 

+								passed in the request. 

+								Returned when bidder search results are found.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>					

+					<xs:element name="TotalPending" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Total number of bidders in Pending state.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TotalApproved" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Total number of bidders in Approved state.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TotalDenied" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Total number of bidders in Denied state.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							The page number for the page of data returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>					

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Shows the pagination of data returned by requests. Only returned

+							if Pagination was specified in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionBidders</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetLiveAuctionCatalogDetails -->

+	<xs:element name="GetLiveAuctionCatalogDetailsRequest" type="ns:GetLiveAuctionCatalogDetailsRequestType"/>

+	<xs:complexType name="GetLiveAuctionCatalogDetailsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves all the eBay Live Auctions catalogs and upcoming sale

+				schedules that the user has created. Only returns data if the

+				requestor is an authorized eBay Live Auctions seller with at least

+				one catalog. If the seller's auction house has no upcoming sales,

+				no schedules are returned.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves all the eBay Live Auctions catalogs and upcoming

+						sale schedules that the user has created.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetLiveAuctionCatalogDetails -->

+	<xs:element name="GetLiveAuctionCatalogDetailsResponse" type="ns:GetLiveAuctionCatalogDetailsResponseType"/>

+	<xs:complexType name="GetLiveAuctionCatalogDetailsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns all the upcoming eBay Live Auctions catalogs and sale schedules that the user has created.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="LiveAuctionCatalog" type="ns:LiveAuctionCatalogType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Each eBay Live Auctions catalog describes one live auction catalog created by the user,

+								along with one or more sale schedules.

+								Use this information to determine an appropriate combination of catalog and schedule IDs

+								in which to list lot items with AddLiveAuctionItem.

+								Only returns details about catalogs that contain pending sales. 

+								That is, if a catalog has no sales or all its sales have ended, 

+								the catalog details are not returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetLiveAuctionCatalogDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMemberMessages -->

+	<xs:element name="GetMemberMessagesRequest" type="ns:GetMemberMessagesRequestType"/>

+	<xs:complexType name="GetMemberMessagesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves a list of the messages buyers have posted about your

+				active item listings.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves messages

+						posted to the

+						Ask Seller A Question messaging system. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The ID of the message.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MailMessageType" type="ns:MessageTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The type of message.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MessageStatus" type="ns:MessageStatusTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The status of the message.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DisplayToPublic" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies if the message should be displayed on the

+								website with the item listing.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartCreationTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Used as beginning of date range filter.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndCreationTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Used as end of date range filter.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Standard pagination argument used to reduce response.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MemberMessageID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An ID that uniquely identifies the message for a given user to be retrieved.

+								Used for the AskSellerQuestion notification only.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMemberMessages -->

+	<xs:element name="GetMemberMessagesResponse" type="ns:GetMemberMessagesResponseType"/>

+	<xs:complexType name="GetMemberMessagesResponseType">

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="MemberMessage" type="ns:MemberMessageExchangeArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The returned member messages. Returned if messages that meet the request criteria exist.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Shows the pagination of data returned by requests.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreItems" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether the response has more items.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMemberMessages</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyMessages -->

+	<xs:element name="GetMyMessagesRequest" type="ns:GetMyMessagesRequestType"/>

+	<xs:complexType name="GetMyMessagesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Used to retrieve information about the messages and alerts sent

+				to a given user. Depending on the detail level, this information

+				can include message and alert counts, resolution and flagged

+				status, message and/or alert headers, and message and/or alert

+				body text. Note that this call requires a DetailLevel in the

+				request. Omitting the Detail Level returns an error.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves information about the messages and alerts sent to

+						a given user.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="AlertIDs" type="ns:MyMessagesAlertIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of up to 10 AlertID values.

+								When AlertID values are used as input, you must

+								generally specify either AlertID values, or

+								MessageID values, or both.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MessageIDs" type="ns:MyMessagesMessageIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of up to 10 MessageID values.

+								When MessageID values are used as input, you must

+								generally specify either AlertID values, or

+								MessageID values, or both.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FolderID" type="xs:long" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An ID that uniquely identifies the My Messages folder from which to retrieve alerts or messages.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyMessages</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyMessages -->

+  <xs:element name="GetMyMessagesResponse" type="ns:GetMyMessagesResponseType"/>

+	<xs:complexType name="GetMyMessagesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+			Conains information about the messages and alerts sent to

+			a given user. Depending on the detail level, this

+			information can include message and alert counts,

+			resolution and flagged status, message and/or alert

+			headers, and message and/or alert body text.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Summary" type="ns:MyMessagesSummaryType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Summary data for a given user's alerts and

+								messages. This includes the numbers of

+								new alerts and messages, unresolved alerts,

+								flagged messages, and total alerts and messages.

+								The amount and type of data returned is the same

+								whether or not the request included specific

+								AlertID or MessageID values.

+								Always/Conditionally returned logic assumes a

+								detail level of ReturnMessages.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyMessages</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>ReturnSummary</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Alerts" type="ns:MyMessagesAlertArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the alert information for each alert

+								specified in AlertIDs. The amount and type of

+								information returned varies based on the

+								requested detail level. Contains one

+								MyMessagesAlertType object per alert. Returned

+								as an empty node if user has no alerts.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyMessages</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Messages" type="ns:MyMessagesMessageArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the message information for each

+								message specified in MessageIDs. The amount and

+								type of information returned varies based on the

+								requested detail level. Contains one

+								MyMessagesMessageType object per message.

+								Returned as an empty node if user has no

+								messages.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyMessages</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyeBay -->

+  <xs:element name="GetMyeBayRequest" type="ns:GetMyeBayRequestType"/>

+  <xs:complexType name="GetMyeBayRequestType">

+    <xs:annotation>

+      <xs:documentation>

+				GetMyeBay will be DEPRECATED SOON and should not be used.

+				Instead, please use GetMyeBayBuying and related calls to retrieve

+				a users's My eBay data. Retrieves data for the requesting user's

+				My eBay page. This data includes a list of items the user is

+				watching and a list of items the user has bid on. You must

+				specify at least one field in the request to receive data in the

+				response. In addition, you must include at least one sort field -

+				BiddingSort, LostSort, WatchSort, or WonSort.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						To be deprecated. Use GetMyeBayBuying and related calls.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="BiddingSort" type="ns:ItemSortTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how the items in the active list (the items the user has bid

+								on) are sorted in the result set. The items may be sorted by item ID,

+								price, title, bid count, and listing end time. See the code list

+								ItemSortTypeCodeType for valid input values.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBay</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LostSort" type="ns:ItemSortTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how the items in the lost list (items the user has bid on but has

+								not won) are sorted in the result set. The items may be sorted by item ID,

+								price, title, bid count, and listing end time. See the code list

+								ItemSortTypeCodeType for valid input values.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBay</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MaxItemsPerList" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies maximum number of items to display in each of the lists.

+								Recommended value is 5. If not specified, all possible items for each

+								list are returned. One maximum is specified and applies to all of the

+								lists in the result set.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBay</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MaxItemAgeInDays" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the number of days prior to the current time (based on item

+								end time) to retrieve items. Applies only to the items won and items

+								lost lists. Default value is 2. Maximum value is 30.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBay</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="WatchSort" type="ns:ItemSortTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how the items in the watch list (the items the user is watching)

+								are sorted in the result set. The valid values of ItemSortTypeCodeType

+								are ItemID, ItemIDDescending, Price, PriceDescending,

+								BidCount, BidCountDescending, SellerUserID, SellerUserIDDescending,

+								TimeLeft, and TimeLeftDescending.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBay</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="WonSort" type="ns:ItemSortTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how the items in the won list (the items the user has won)

+								are sorted in the result set. The items may be sorted by item ID,

+								price, title, bid count, and listing end time. See the code list

+								ItemSortTypeCodeType for valid input values.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBay</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FavoriteSearches" type="ns:MyeBaySelectionType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                A user's favorite eBay searches. Corresponds to the Searches selection under All Favorites

+                on the My eBay page.

+              </xs:documentation>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FavoriteSellers" type="ns:MyeBaySelectionType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                A user's favorite eBay sellers. Corresponds to the Sellers selection under All Favorites

+                on the My eBay page.

+              </xs:documentation>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SecondChanceOffers" type="ns:MyeBaySelectionType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                Second Chance Offers for items. Corresponds to the Second Chance Offers listed

+                on the My eBay page.

+              </xs:documentation>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyeBay -->

+  <xs:element name="GetMyeBayResponse" type="ns:GetMyeBayResponseType"/>

+  <xs:complexType name="GetMyeBayResponseType">

+    <xs:annotation>

+      <xs:documentation>

+GetMyeBay will be DEPRECATED SOON and should not be used. Instead, please use 

+GetMyeBayBuying and related calls to retrieve a users's My eBay data.

+Contains the lists of items from the requesting user's My

+eBay page. This includes a list of the items the user has bid

+on and a list of the items the user is watching. The number of

+items returned in any list can be controlled using the MaxItemsPerList

+property of the request object.

+			</xs:documentation>

+    </xs:annotation>

+    <xs:complexContent>

+      <xs:extension base="ns:AbstractResponseType">

+        <xs:sequence>

+          <xs:element name="BiddingItemArray" type="ns:ItemArrayType" minOccurs="0">

+            <xs:annotation>

+              <xs:documentation>

+                  Contains the list of items the requesting user has bid on. BiddingItemArray is

+                  an array of ItemType objects, each of which represents one item.

+							</xs:documentation>

+              <xs:appinfo>

+                <CallInfo>

+                  <CallName>GetMyeBay</CallName>

+									<Returned>Conditionally</Returned>

+                </CallInfo>

+              </xs:appinfo>

+            </xs:annotation>

+          </xs:element>

+          <xs:element name="LostItemArray" type="ns:ItemArrayType" minOccurs="0">

+            <xs:annotation>

+              <xs:documentation>

+								Contains the list of items the requesting user has bid on but not has won. 

+								LostItemArray is an array of ItemType objects, each of which represents one item.

+							</xs:documentation>

+              <xs:appinfo>

+                <CallInfo>

+                  <CallName>GetMyeBay</CallName>

+									<Returned>Conditionally</Returned>

+                </CallInfo>

+              </xs:appinfo>

+            </xs:annotation>

+          </xs:element>

+          <xs:element name="WatchItemArray" type="ns:ItemArrayType" minOccurs="0">

+            <xs:annotation>

+              <xs:documentation>

+								Contains the list of items the requesting user is watching. WatchItemArray is

+								an array of ItemType objects, each of which represents one item.

+							</xs:documentation>

+              <xs:appinfo>

+                <CallInfo>

+                  <CallName>GetMyeBay</CallName>

+									<Returned>Conditionally</Returned>

+                </CallInfo>

+              </xs:appinfo>

+            </xs:annotation>

+          </xs:element>

+          <xs:element name="WonItemArray" type="ns:ItemArrayType" minOccurs="0">

+            <xs:annotation>

+              <xs:documentation>

+								Contains the list of items the requesting user has won. WonItemArray is

+								an array of ItemType objects, each of which represents one item.

+							</xs:documentation>

+              <xs:appinfo>

+                <CallInfo>

+                  <CallName>GetMyeBay</CallName>

+									<Returned>Conditionally</Returned>

+                </CallInfo>

+              </xs:appinfo>

+            </xs:annotation>

+          </xs:element>

+          <xs:element name="FavoriteSearches" type="ns:MyeBayFavoriteSearchListType" minOccurs="0">

+            <xs:annotation>

+              <xs:documentation>

+								Contains a list of the user's My eBay Favorite Searches.

+							</xs:documentation>

+              <xs:appinfo>

+                <CallInfo>

+                  <CallName>GetMyeBay</CallName>

+									<Returned>Conditionally</Returned>

+                </CallInfo>

+              </xs:appinfo>

+            </xs:annotation>

+          </xs:element>

+          <xs:element name="FavoriteSellers" type="ns:MyeBayFavoriteSellerListType" minOccurs="0">

+            <xs:annotation>

+              <xs:documentation>

+								Contains a list of the user's My eBay Favorite Sellers.

+							</xs:documentation>

+              <xs:appinfo>

+                <CallInfo>

+                  <CallName>GetMyeBay</CallName>

+									<Returned>Conditionally</Returned>

+                </CallInfo>

+              </xs:appinfo>

+            </xs:annotation>

+          </xs:element>

+          <xs:element name="SecondChanceOffers" type="ns:MyeBaySecondChanceOfferListType" minOccurs="0">

+            <xs:annotation>

+              <xs:documentation>

+								Contains a list of the user's My eBay Second Chance Offers.

+							</xs:documentation>

+              <xs:appinfo>

+                <CallInfo>

+                  <CallName>GetMyeBay</CallName>

+									<Returned>Conditionally</Returned>

+                </CallInfo>

+              </xs:appinfo>

+            </xs:annotation>

+          </xs:element>

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+	<!--  Call: GetMyeBayBuying -->

+	<xs:element name="GetMyeBayBuyingRequest" type="ns:GetMyeBayBuyingRequestType"/>

+	<xs:complexType name="GetMyeBayBuyingRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns items from the All Buying section of the user's My eBay

+				account, including items the user is watching, bidding on, has

+				won, has not won, or has made best offers on. Use DetailLevel of

+				ReturnSummary to return only the BuyingSummary and the specific

+				containers requested. The DetailLevel ReturnAll returns the

+				BuyingSummary and all containers.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns items from the All Buying section of the user's My eBay

+						account, including items the user is watching, bidding on, has

+						won, has not won, or has made best offers on.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="WatchList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how to return the list of watched items in the user's My eBay list. Include in the request to return this container at a DetailLevel of ReturnSummary.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BidList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how to return the list of items bid on in the user's My eBay list.

+								Allowed values are Sort and IncludeNotes.Include in the request to return this container at a DetailLevel of ReturnSummary.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BestOfferList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how to return the list of items on which the user has placed best offers.

+								Allowed values are Include, ListingType, Sort, DurationInDays (0-60 valid), IncludeNotes, and

+								Pagination. Include in the request to return this container at a DetailLevel of ReturnSummary.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="WonList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how to return the list of items bid on and won in the user's My eBay list.

+								Allowed values are DurationInDays (valid values 0-60), Sort, IncludeNotes, and Pagination. Include in the request to return this container at a DetailLevel of ReturnSummary.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LostList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how to return the list of items bid on and lost in the user's My eBay list.

+								Allowed values are DurationInDays (valid values 0-60), Sort, IncludeNotes,

+								and Pagination. Include in the request to return this container at a DetailLevel of ReturnSummary.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FavoriteSearches" type="ns:MyeBaySelectionType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how to return the list of favorite searches in the user's My eBay list.

+								All values are allowed. Include in the request to return this container at a DetailLevel of ReturnSummary.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FavoriteSellers" type="ns:MyeBaySelectionType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how to return the list of favorite sellers in the user's My eBay list.

+								All values are allowed. Include in the request to return this container at a DetailLevel of ReturnSummary.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+					  </xs:annotation>

+					</xs:element>

+					<xs:element name="SecondChanceOffer" type="ns:MyeBaySelectionType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies how to return the list of second chance offers in the user's My eBay list.

+								All values are allowed. Include in the request to return this container at a DetailLevel of ReturnSummary.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+					  </xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyeBayBuying -->

+	<xs:element name="GetMyeBayBuyingResponse" type="ns:GetMyeBayBuyingResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns items from All Buying or All Favorites in the user's GetMyeBay account.

+			</xs:documentation>

+		</xs:annotation>

+	</xs:element>

+	<xs:complexType name="GetMyeBayBuyingResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns items from All Buying or All Favorites in the user's My eBay account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="BuyingSummary" type="ns:BuyingSummaryType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a summary of the items the user has bid on. Returned at all detail levels.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="WatchList" type="ns:PaginatedItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the items the user is watching. Only returned if items exist that meet the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BidList" type="ns:PaginatedItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains all the items the user has bid on. Only returned if items exist that meet the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BestOfferList" type="ns:PaginatedItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the items the user has placed best offers on. Only returned if items exist that meet the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="WonList" type="ns:PaginatedOrderTransactionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the items the user has bid on and won. Only returned if items exist that meet the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LostList" type="ns:PaginatedItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the items the user has bid on and lost. Only returned if items exist that meet the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FavoriteSearches" type="ns:MyeBayFavoriteSearchListType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of the user's favorite searches. Only returned if items exist that meet the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FavoriteSellers" type="ns:MyeBayFavoriteSellerListType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of the user's favorite sellers. Only returned if items exist that meet the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SecondChanceOffer" type="ns:ItemType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the list of second chance offers the user has received. Only returned if items exist that meet the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayBuying</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyeBayReminders -->

+	<xs:element name="GetMyeBayRemindersRequest" type="ns:GetMyeBayRemindersRequestType"/>

+	<xs:complexType name="GetMyeBayRemindersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests reminder type totals from the user's MyeBay account.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests totals of various reminder types from the user's

+						MyeBay account.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="BuyingReminders" type="ns:ReminderCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the type of buying reminders for which you want information.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayReminders</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellingReminders" type="ns:ReminderCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the type of selling reminders for which you want information.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayReminders</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyeBayReminders -->

+	<xs:element name="GetMyeBayRemindersResponse" type="ns:GetMyeBayRemindersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+			Returns totals of various reminder types from the user's My eBay account.

+			</xs:documentation>

+		</xs:annotation>

+	</xs:element>

+	<xs:complexType name="GetMyeBayRemindersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns totals of various reminder types from the user's My eBay account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="BuyingReminders" type="ns:RemindersType" minOccurs="0">

+						<xs:annotation>

+								<xs:documentation>

+									(out) Contains the buying reminders in the user's My eBay account that match

+									the request criteria.

+								</xs:documentation>

+								<xs:appinfo>

+									<CallInfo>

+										<CallName>GetMyeBayReminders</CallName>

+										<Returned>Conditionally</Returned>

+									</CallInfo>

+								</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellingReminders" type="ns:RemindersType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Contains the selling reminders in the user's My eBay account that match

+								the request criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBayReminders</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyeBaySelling -->

+	<xs:element name="GetMyeBaySellingRequest" type="ns:GetMyeBaySellingRequestType"/>

+	<xs:complexType name="GetMyeBaySellingRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns a summary and details of items a user is selling from the

+				user's My eBay account. Use no DetailLevel to return

+				SellingSummary and any containers specified in the request. The

+				DetailLevel ReturnAll returns SellingSummary and all containers.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns a summary and details of items a user is selling from the

+						user's My eBay account.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ScheduledList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the list of items the user has scheduled to sell but whose listings have not yet opened.

+								Valid subelements are Sort, IncludeNotes, and Pagination.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBaySelling</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ActiveList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the list of items the user is actively selling whose listings are active.

+								Valid subelements are Sort, IncludeNotes, Pagination, and ListingType (with valid

+								values Auction, FixedPriceItem, StoresFixedPrice, or AdType).

+								Note that if a DetailLevel of ReturnAll is specified in the request, this element is ignored as a way to filter the response, and ALL containers are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBaySelling</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SoldList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the list of items the user has sold. Valid subelements are DurationInDays

+								(with valid values 0-60), IncludeNotes, and Pagination.

+								Note that if a DetailLevel of ReturnAll is specified in the request, this element is ignored as a way to filter the response, and ALL containers are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBaySelling</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UnsoldList" type="ns:ItemListCustomizationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the list of items the user has listed but whose listings have ended

+								without being sold. Valid subelements are DurationInDays (with valid values 0-60),

+								Sort, IncludeNotes, and Pagination.

+								Note that if a DetailLevel of ReturnAll is specified in the request, this element is ignored as a way to filter the response, and ALL containers are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBaySelling</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetMyeBaySelling -->

+	<xs:element name="GetMyeBaySellingResponse" type="ns:GetMyeBaySellingResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns summary and detail information about items the user is selling,

+				items scheduled to sell, currently listed, sold, and closed but not sold.

+			</xs:documentation>

+		</xs:annotation>

+	</xs:element>

+	<xs:complexType name="GetMyeBaySellingResponseType">

+			<xs:annotation>

+				<xs:documentation>

+					Returns summary and detail information about items the user is selling,

+					items scheduled to sell, currently listed, sold, and closed but not sold.

+				</xs:documentation>

+			</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="SellingSummary" type="ns:SellingSummaryType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains summary information about the items the user is selling.

+							</xs:documentation>

+							<xs:appinfo>

+							<CallInfo>

+								<CallName>GetMyeBaySelling</CallName>

+								<Returned>Always</Returned>

+							</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ScheduledList" type="ns:PaginatedItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the items the user has scheduled for sale, but whose listings have

+								not yet started.

+							</xs:documentation>

+							<xs:appinfo>

+							<CallInfo>

+								<CallName>GetMyeBaySelling</CallName>

+								<Returned>Conditionally</Returned>

+							</CallInfo>

+						</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ActiveList" type="ns:PaginatedItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the items the user is selling that have active listings.

+							</xs:documentation>

+							<xs:appinfo>

+							<CallInfo>

+								<CallName>GetMyeBaySelling</CallName>

+								<Returned>Conditionally</Returned>

+							</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SoldList" type="ns:PaginatedOrderTransactionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the items the user has sold.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBaySelling</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UnsoldList" type="ns:PaginatedItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the items whose listings have ended but that have not sold.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetMyeBaySelling</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetNotificationPreferences -->

+	<xs:element name="GetNotificationPreferencesRequest" type="ns:GetNotificationPreferencesRequestType"/>

+	<xs:complexType name="GetNotificationPreferencesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the requesting application's notification preferences.

+				GetNotificationPreferences retrieves preferences that you have

+				deliberately set. For example, if you enable the EndOfAuction

+				event and then later disable it, the response shows the

+				EndOfAuction event preference as Disabled. But if you have never

+				set a preference for the EndOfAuction event, no EndOfAuction

+				preference is returned at all.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the requesting application's notification preferences.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="PreferenceLevel" type="ns:NotificationRoleCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies what type of Preference to retrieve.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationPreferences</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetNotificationPreferences -->

+	<xs:element name="GetNotificationPreferencesResponse"  type="ns:GetNotificationPreferencesResponseType"/>

+	<xs:complexType name="GetNotificationPreferencesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the requesting application's notification preferences.

+				GetNotificationPreferences retrieves preferences that you have

+				deliberately set. For example, if you enable the EndOfAuction event and

+				then later disable it, the response shows the EndOfAuction event

+				preference as Disabled. But if you have never set a preference for the

+				EndOfAuction event, no EndOfAuction preference is returned at all.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ApplicationDeliveryPreferences" type="ns:ApplicationDeliveryPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Specifies application-based event preferences that have been enabled.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UserDeliveryPreferenceArray" type="ns:NotificationEnableArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Specifies user-based event preferences that have been enabled or disabled.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UserData" type="ns:NotificationUserDataType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) return user data for notification settings such as set mobile phone number etc.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EventProperty" type="ns:NotificationEventPropertyType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								(out) Characteristics or details of an event such as type, name and value.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetNotificationsUsage -->

+	<xs:element name="GetNotificationsUsageRequest" type="ns:GetNotificationsUsageRequestType"/>

+	<xs:complexType name="GetNotificationsUsageRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves information about notifications sent to a given application. The

+				application (AppID) is determined the requester credentials. Use this

+				notification information to troubleshoot issues with platform notifications.

+				Developers can make up to 50 GetNotificationsUsage calls per hour for a

+				given application.

+			</xs:documentation>

+		<xs:appinfo>

+			<Overview>

+				<Summary>

+					Retrieves information about platform notifications sent to a given application.

+				</Summary>

+			</Overview>

+		</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the start date and time for which notification information

+								will be retrieved. StartTime is optional. If no StartTime is specified,

+								the default value of 24 hours prior to the call time is used. If no

+								StartTime is specified or if an invalid StartTime is specified, date

+								range errors are returned in the response. For a StartTime to be valid,

+								it must be no more than 72 hours before the time of the call, it cannot

+								be more recent than the EndTime, and it cannot be later than the time of

+								the call. If an invalid StartTime is specified, the default value is

+								used.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationsUsage</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the end date and time for which notification information

+								will be retrieved. EndTime is optional. If no EndTime is specified,

+								the current time (the time the call is made) is used. If no EndTime

+								is specified or if an invalid EndTime is specified, date range errors

+								are returned in the response. For an EndTime to be valid, it must be no

+								more than 72 hours before the time the of the call, it cannot be before

+								the StartTime, and it cannot be later than the time of the call. If an

+								invalid EndTime is specified, the current time is used.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationsUsage</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies an item ID for which detailed notification information will be

+								retrieved. ItemID is optional. If no ItemID is specified, the response

+								will not include any individual notification details.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetNotificationsUsage</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetNotificationsUsage -->

+	<xs:element name="GetNotificationsUsageResponse" type="ns:GetNotificationsUsageResponseType"/>

+	<xs:complexType name="GetNotificationsUsageResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns an array of notifications sent to a given application identified by the appID

+				(comes in the credentials). The result can be used by third-party developers troubleshoot

+				issues with notifications.

+				Zero, one or many notifications can be returned in the array. The set of notifications

+				returned is limited to those that were sent between the StartTime and EndTime specified

+				in the request. If StartTime or EndTime filters were not found in the request, then

+				the response will contain the data for only one day (Now-1day). By default, maximum

+				duration is limited to 3 days (Now-3days). These min (1day) and max(3days) applies

+				to Notifications,MarkDownMarkUpHistory and NotificationStatistics.

+

+				Notifications are sent only if the ItemID is included in the request. If there is no

+				ItemID, then only Statistics and MarkDownMarkUpHistory information is included.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Returns the start date and time for the notification information that is

+								returned by this call. The oldest date allowed for this field is Now-3days.

+								Default is Now-1day.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationsUsage</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Returns the end date and time for the notification information that is

+								returned by this call. The default is Now.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationsUsage</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="NotificationDetailsArray" type="ns:NotificationDetailsArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								List of notification objects representing the notifications sent to an 

+								application for the given time period. It will only be returned if ItemID 

+								was specified in the input request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationsUsage</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MarkUpMarkDownHistory" type="ns:MarkUpMarkDownHistoryType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								List of objects representing MarkUp or MarkDown history for a given appID

+								and for given StartTime and EndTime. This node will always be returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationsUsage</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="NotificationStatistics" type="ns:NotificationStatisticsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Summary information about number of notifications that were successfully

+								delivered, queued, failed, connection attempts made, connection timeouts,

+								http errors for the given appID and given time period. By default, statistics

+								for only one day (Now-1day) is included. Maximum time duration allowed is 3 days

+								(Now-3days).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetNotificationsUsage</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetOrderTransactions -->

+	<xs:element name="GetOrderTransactionsRequest" type="ns:GetOrderTransactionsRequestType"/>

+	<xs:complexType name="GetOrderTransactionsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves information about one or more orders or one or more transactions

+				(or both), thus displacing the need to call GetOrders and GetItemTransactions

+				separately.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves information about one or more orders or one or more

+						transactions (or both). You can use GetOrderTransactions instead of

+						making separate GetOrders and GetItemTransactions calls.

+					</Summary>

+				</Overview>

+				<TempInfo>dl</TempInfo>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemTransactionIDArray" type="ns:ItemTransactionIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An array of ItemTransactionIDs.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrderTransactions</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="OrderIDArray" type="ns:OrderIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An array of OrderIDs.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrderTransactions</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetOrderTransactions -->

+	<xs:element name="GetOrderTransactionsResponse" type="ns:GetOrderTransactionsResponseType"/>

+	<xs:complexType name="GetOrderTransactionsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response to GetOrderTransactions request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="OrderArray" type="ns:OrderArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An array of Orders.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrderTransactions</CallName>

+									<DetailLevels>none</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetOrders -->

+	<xs:element name="GetOrdersRequest" type="ns:GetOrdersRequestType"/>

+	<xs:complexType name="GetOrdersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves all of the orders for which the user is a participant (as

+				either buyer or seller) that meet the criteria specified in the request

+				object.

+				There are two mutually exclusive sets of filtering input arguments

+				that can be used to query for orders. The first set is based on specific

+				order IDs (one or more order IDs are passed in the call). The second set

+				is a combination of date range, order role, and order status. If one set

+				of filtering arguments is used, the arguments for the other set should not

+				be specified in the same call. If a given call to GetOrders includes both

+				criteria sets, the query based on order IDs is used, and the criteria for

+				date range/order status/order role is ignored.

+				This call can also be used to retrieve unshipped Half.com orders (i.e.,

+				orders that the seller has received but has not yet processed).

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves all of the orders for which the user is a participant (as

+						either buyer or seller) that meet the criteria specified in the request

+						object.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="OrderIDArray" type="ns:OrderIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A set of orders to retrieve.

+								Not applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CreateTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The starting date of the date range for the orders to retrieve.

+								Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CreateTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The ending date of the date range for the orders to retrieve.

+								Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="OrderRole" type="ns:TradingRoleCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Filters the returned orders to only those where the user for

+								whom the call is being made is a participant in the order in the specified role.

+								Not applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="OrderStatus" type="ns:OrderStatusCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Filters the returned orders by order status. &lt;br&gt;

+								&lt;br&gt;

+								Not applicable to Half.com. If you set ListingType to Half and you

+								include OrderStatus in the request, GetOrders may return incomplete information

+								or have indeterminate results. Therefore, please do not specify OrderStatus

+								when you retrieve Half.com orders.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ListingType" type="ns:ListingTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Cannot be used as a filter on eBay.com. If not provided or if any value other than Half is specified,

+								the call retrieves eBay orders. If Half is specified,

+								the call retrieves Half.com orders. (You cannot retrieve both

+								eBay and Half.com orders in the same response.)

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Not applicable to eBay.com. Applicable to Half.com. If many orders are available,

+							you may need to call GetOrders multiple times to retrieve all the data.

+							Each result set is returned as a page of entries.

+							Use this Pagination information to indicate the maximum number of entries to

+							retrieve per page (i.e., per call), the page number to retrieve, and other data.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetOrders -->

+	<xs:element name="GetOrdersResponse" type="ns:GetOrdersResponseType"/>

+	<xs:complexType name="GetOrdersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the set of orders that match the order IDs or filter criteria specified.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Applies only to Half.com. Contains information regarding the pagination of data (if pagination is used),

+							including total number of pages and total number of entries. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreOrders" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Applies only to Half.com. If true, there are more orders yet to be retrieved. Additional GetOrders calls

+							with higher page numbers or more entries per page must be made to retrieve these orders.

+							If false, no more orders are available or no orders match the request

+							(based on the input filters).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="OrderArray" type="ns:OrderArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The set of orders that match the order IDs or filter criteria specified.

+								Also applicable to Half.com (only returns orders that have not been marked as shipped).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="OrdersPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Applies only to Half.com. Indicates the number of orders that can be returned per page of data

+							(i.e., per call). This is the same as the value specified in the Pagination.EntriesPerPage input

+							(or the default value, if EntriesPerPage was not specified).

+							This is not necessarily the actual number of orders returned per page (see ReturnedOrderCountActual).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Applies only to Half.com. Indicates which page of data holds the current result set. Will be the same as the value specified in the Pagination.PageNumber input. If orders are returned, the first page is 1.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReturnedOrderCountActual" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Applies only to Half.com. Indicates the total number of orders returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetOrders</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetPictureManagerDetails -->

+	<xs:element name="GetPictureManagerDetailsRequest" type="ns:GetPictureManagerDetailsRequestType"/>

+	<xs:complexType name="GetPictureManagerDetailsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests information about folders or pictures in a Picture Manager account

+				or the account settings.

+	    </xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests information about folders or pictures in a Picture

+						Manager account or the account settings.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="FolderID" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The ID of a folder in the user's Picture Manager album for which you want information.

+								If you specify both FolderID and PictureURL, the picture must exist

+								in the folder.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPictureManagerDetails</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PictureURL" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The URL of a picture in the user's Picture Manager album.

+								If you specify both FolderID and PictureURL, the picture must

+								exist in the folder.

+					    </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPictureManagerDetails</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PictureManagerDetailLevel" type="ns:PictureManagerDetailLevelCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The type of information you want returned, about pictures and folders,

+								the account subscription, or both. Use this element rather than the generic DetailLevel element defined in AbstractRequestType. You can use the following values: ReturnAll, ReturnSubscription, or ReturnPicture.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPictureManagerDetails</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetPictureManagerDetails -->

+	<xs:element name="GetPictureManagerDetailsResponse" type="ns:GetPictureManagerDetailsResponseType"/>

+	<xs:complexType name="GetPictureManagerDetailsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Responds with information about content in a Picture Manager album

+				or the account settings.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="PictureManagerDetails" type="ns:PictureManagerDetailsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains details of the account settings, folders or

+								pictures in the user's album, or both.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPictureManagerDetails</CallName>

+									<DetailLevels>none, ReturnSubscription, ReturnPicture, ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetPictureManagerOptions -->

+	<xs:element name="GetPictureManagerOptionsRequest" type="ns:GetPictureManagerOptionsRequestType"/>

+	<xs:complexType name="GetPictureManagerOptionsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+	      Requests a list of Picture Manager options and allowed values,

+				such as subscription type and picture display.

+	    </xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests a list of Picture Manager options and allowed values,

+						such as subscription type and picture display.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetPictureManagerOptions -->

+	<xs:element name="GetPictureManagerOptionsResponse" type="ns:GetPictureManagerOptionsResponseType"/>

+	<xs:complexType name="GetPictureManagerOptionsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+	      Returns a list of Picture Manager options and allowed values.

+	    </xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Subscription" type="ns:PictureManagerSubscriptionType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+					     A type of Picture Manager subscription, with a subscription level, fee, and allowed storage size.

+					    </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPictureManagerOptions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PictureType" type="ns:PictureManagerPictureDisplayType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+					     A global definition for displaying pictures, with a maximum size.

+					    </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPictureManagerOptions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetPopularKeywords -->

+	<xs:element name="GetPopularKeywordsRequest" type="ns:GetPopularKeywordsRequestType"/>

+	<xs:complexType name="GetPopularKeywordsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the words more frequently used by eBay users when

+				searching for listings. These keywords are generated weekly by

+				eBay. Thus, calls retrieve static data. GetPopularKeywords is not

+				available for the following SiteIDs 71 ,201, 207, 211, 212, 216,

+				218.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the words more frequently used by eBay users

+						when searching for listings.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								A category ID for which you want keywords returned.

+								When IncludeChildCategories is true, one and only one

+								CategoryID is allowed. Otherwise, up

+								to 100 CategoryIds are allowed.

+								To retrieve the keywords for root category, set one of

+								the CategoryIDs to -1 or submit no CategoryIDs at all.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetPopularKeywords</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeChildCategories" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, only one CategoryID can be specified, and keywords

+								are returned for that category and its subcategories.

+								If false, keywords are returned only for the categories

+								identified by CategoryID. Default is false.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPopularKeywords</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MaxKeywordsRetrieved" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The maximum number of keywords to be retrieved per category

+								for this call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPopularKeywords</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+								<Min>1</Min>

+								<Max>1000</Max>

+								<Default>20</Default>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Details about how many categories to return per

+								page and which page to view.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPopularKeywords</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetPopularKeywords -->

+	<xs:element name="GetPopularKeywordsResponse" type="ns:GetPopularKeywordsResponseType"/>

+	<xs:complexType name="GetPopularKeywordsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the keyword data for the requested categories. A category's data are contained in a CategoryArrayType object if there is no error (one or more CategoryType objects). Each CategoryType contains its ID, parent ID and keyword list.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+											Contains information regarding the pagination of data (if pagination is used),

+											including total number of pages and total number of entries.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPopularKeywords</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryArray" type="ns:CategoryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Organization of keywords by category. For each

+								category, its ID and its parent's ID and keywords

+								are listed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPopularKeywords</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMore" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether there are more categories beyond the 

+								subset returned in the last 

+								call to GetPopularKeywords. Returned only when 

+								IncludeChildCategories is true.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPopularKeywords</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductFamilyMembers -->

+	<xs:element name="GetProductFamilyMembersRequest" type="ns:GetProductFamilyMembersRequestType"/>

+	<xs:complexType name="GetProductFamilyMembersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+GetProductFamilyMembers is intended to be used combination with GetProductSearchResults.

+If a search result returned from GetProductSearchResults does not return all

+product versions in a family, and if the user wants to see more versions (editions)

+of the product, you can use GetProductFamilyMembers to retrieve all versions of the product.

+That is, if GetProductSearchResultsonly returns the product family header (ParentProduct),

+use this call to zoom in on a particular family of product versions.

+(This situation usually occurs when you call GetProductSearchResults and more more

+matches are found than the MaxChildrenPerFamily value you specified.)&lt;br&gt;

+&lt;br&gt;

+The structure of tGetProductFamilyMembers is similar to that of GetProductSearchResults.

+Instead of passing in a query, you pass in a product ID. This product ID is used to

+find all the members of the product family that the specified product is a member of.

+The results are compatible with the results from GetProductSearchResults,

+so similar application logic can be used to handle both requests and responses.

+This call supports batch requests. This means you can retrieve products in

+multiple families by using a single request. To perform a batch request,

+pass an array of ProductSearch objects in the call.&lt;br&gt;

+&lt;br&gt;

+For each ProductSearch object, GetProductFamilyMembers returns a list of all the

+products in the specified product family. Each product is represented as a list of

+attributes (Item Specifics) plus other identifying information, such as a product ID

+and a stock photo.&lt;br&gt;

+&lt;br&gt;

+Once the user selects a product from the results, pass its ID in a GetProductSellingPages

+request to retrieve more detailed information about the product, including a set of

+optional Item Specifics that the seller can use in addition to the

+pre-filled Item Specifics (see GetProductSellingPages). &lt;br&gt;

+&lt;br&gt;

+To use this data in a listing, pass the product ID and the optional Item Specifics

+in the seller's listing request (AddItem).

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						If a search result returned from GetProductSearchResults

+						does not return all product versions in a family, and if the user wants to

+						see more versions (editions) of the product, you can use

+						GetProductFamilyMembers to retrieve all versions of the product.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ProductSearch" type="ns:ProductSearchType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the ID of a product in the family to be retrieved,

+								along with pagination and sorting instructions.

+								ProductSearch is a required input.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFamilyMembers</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductFamilyMembers -->

+	<xs:element name="GetProductFamilyMembersResponse" type="ns:GetProductFamilyMembersResponseType"/>

+	<xs:complexType name="GetProductFamilyMembersResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				GetProductFamilyMembers performs a product search and returns results comprising

+				all the children in the product family identified by a product ID that was 

+				specified in the request. Use this call when more matches are found than the 

+				max amount specified per family in a call to GetProductSearchResults.

+				This call supports batch requests. This means you can retrieve products in 

+				multiple families by using a single request.

+				The results are compatible with the results from GetProductSearchResults,  

+				so similar application logic can be used to handle both requests and responses.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="DataElementSets" type="ns:DataElementSetType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Container for one or more DataElement fields containing supplemental helpful data. 

+								A DataElement field is an HTML snippet that specifies hints for the user, help links, 

+								help graphics, and other supplemental information that varies per characteristics set. 

+								Usage of this information is optional and may require developers to inspect the information 

+								to determine how it can be applied in an application. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFamilyMembers</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductSearchResult" type="ns:ProductSearchResultType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the attributes and summary product details for all products that match  

+								the product ID (or IDs) passed in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFamilyMembers</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductFinder -->

+	<xs:element name="GetProductFinderRequest" type="ns:GetProductFinderRequestType"/>

+	<xs:complexType name="GetProductFinderRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves data that you use to construct valid "product finder" queries

+				(queries against multiple attributes) against catalog products or listed items.

+				The attributes describe search criteria (e.g., Manufacturer), as appropriate for the category.

+				Use the results in combination with GetProductFinderXSL to render the Product Finder

+				in a graphical user interface.

+				GetProductFinder does not conduct the actual product or listing search.

+				It only returns data about what you can search on. Use the data as input to

+				GetProductSearchResults to conduct the actual search for product information

+				or as input to GetSearchResults to conduct the search for listed items.

+				To retrieve single-attribute search criteria (querying against a single attribute, like UPC),

+				use GetProductSearchPage instead (only applicable for catalog searches).

+				See the Developer's Guide for an overview of Pre-filled Item Information and details about

+				searching for catalog products and for information about searching for listed items.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves data that you use to construct valid "product

+						finder" queries (queries against multiple attributes) against

+						catalog products or listed items.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="AttributeSystemVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A version of the product finder attribute definitions for the site.

+								Typically, an application passes the version value that was returned the last

+								time the application executed this call.

+								Filter that causes the call to return only the Product Finders

+								for which the attribute meta-data has changed since the specified version.

+								The latest version value is not necessarily greater than the previous

+								value that was returned. Therefore, when comparing versions, only

+								compare whether the value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFinder</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductFinderID" type="xs:int" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								A number that uniequely identifies a product finder. To determine the

+								product finder IDs for a category, call GetCategory2CS.

+								Multiple categories can be mapped to the same product finder ID.

+								You can pass zero or multiple IDs in the request. When IDs are specified, the call

+								only returns product finder meta-data for the specified product finders.

+								When no IDs are specified, the call returns all the current product finder

+								meta-data available on the site.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFinder</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductFinder -->

+	<xs:element name="GetProductFinderResponse" type="ns:GetProductFinderResponseType"/>

+	<xs:complexType name="GetProductFinderResponseType">

+		<xs:annotation>

+			<xs:documentation>

+      For a category that supports product finders, GetProductFinder returns an XML string

+      that decribes the attributes a seller can use to form a query when searching for

+      Pre-filled Item Information, or attributes that can be used to search for listed items.

+      Specifically, it retrieves data that you use to construct valid "product finder" queries

+      (queries against multiple attributes).

+      Use the results in combination with GetProductFinderXSL to render the Product Finder

+      in a graphical user interface.

+      See the Developer's Guide for an overview of Pre-filled Item Information and details about

+      searching for catalog products and for information about searching for listed items.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="AttributeSystemVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Current version of the product search page data for the site.

+                  This value changes each time changes are made to the search page data.

+                  The current version value is not necessarily greater than the previous

+                  value. Therefore, when comparing versions, only compare whether the

+                  value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFinder</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductFinderData" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							A string containing a list of search attributes that can be used in a

+							"Product Finder" style query, along with related meta-data.

+							The meta-data specifies possible values of each attribute, the

+							logic for presenting attributes to a user, and rules for validating the

+							user's selections. For backward compatibility, this data is in

+							the same XML format that was used in the Legacy XML API so that you can

+							apply the same Product Finder XSL stylesheet to it. That is, individual

+							elements are not described using the new eBay XML schema format.

+							For information about each element in the ProductFinderData string,

+							see the product finder model documentation in the eBay Web Services guide (see links below).&lt;br&gt;

+							&lt;br&gt;

+							Because this is returned as a string, the XML markup is escaped with

+							character entity references (e.g., &amp;amp;lt;eBay&amp;amp;gt;&amp;amp;lt;ProductFinders&amp;amp;gt;...).

+							See the appendices in the eBay Web Services guide for general information about

+							string data types.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFinder</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>ReturnAll</DetailLevels>

+								</CallInfo>

+								<SeeLink>

+									<Title>The Product Finder Meta-Data Model</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AttrPFModel</URL>

+								</SeeLink>

+								<SeeLink>

+									<Title>Data Types</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=DataTypes</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductFinderXSL -->

+	<xs:element name="GetProductFinderXSLRequest" type="ns:GetProductFinderXSLRequestType"/>

+	<xs:complexType name="GetProductFinderXSLRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the Product Finder XSL stylesheet. Apply the stylesheet

+				to the XML returned from a call to GetProductFinder to render a

+				form that lets a user form a multi-attribute query against eBay

+				catalog data. See the Developer's Guide for an overview of Pre-

+				filled Item Information and information on searching for catalog

+				products.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the Product Finder XSL stylesheet for use with

+						the XML returned from GetProductFinder.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="FileName" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The name of the XSL file to retrieve. If not specified, the call

+								returns the latest versions of all available XSL files.

+								FileName is an optional input.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFinderXSL</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FileVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The desired version of the XSL file. Required if FileName is specified.

+								IIf not specified, the call returns the latest versions of all

+								available XSL files that could be returned by the call.

+								This is not a filter for retrieving changes to the XSL files.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFinderXSL</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductFinderXSL -->

+	<xs:element name="GetProductFinderXSLResponse" type="ns:GetProductFinderXSLResponseType"/>

+	<xs:complexType name="GetProductFinderXSLResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the Product Finder XSL stylesheet. Apply the stylesheet to the 

+				XML returned from a call to GetProductFinder to

+				render a form that lets a user form a multi-attribute query against 

+				eBay catalog data.

+				See the Developer's Guide for an overview of Pre-filled Item Information

+				and information on searching for catalog products.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="XSLFile" type="ns:XSLFileType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements specify data related to one XSL file. See XSLFileType.

+								Multiple XSLFile objects can be returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductFinderXSL</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductSearchPage -->

+	<xs:element name="GetProductSearchPageRequest" type="ns:GetProductSearchPageRequestType"/>

+	<xs:complexType name="GetProductSearchPageRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the attributes a seller can use to form a query when

+				searching for Pre-filled Item Information to use in a listing for

+				a category that is catalog-enabled. This call is applicable for

+				use cases related to listing items with Pre-filled Item

+				Information. Specifically, it retrieves data

+				that you use to construct valid "single-attribute" queries. The

+				attributes describe search criteria (e.g., Author) and sorting

+				criteria (e.g., Publication Year), as appropriate for the

+				category. GetProductSearchPage does not conduct the actual

+				product search. It only returns data about what you can search

+				on. Use the data as input to GetProductSearchResults to conduct

+				the actual search for product information. To retrieve Product

+				Finder search criteria (querying against multiple attributes),

+				use GetProductFinder instead. See the eBay Web Services guide for

+				an overview of Pre-filled Item Information and details about

+				searching for catalog products.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the attributes a seller can use to form a query when

+						searching for Pre-filled Item Information to use in a listing for

+						a category that is catalog-enabled.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="AttributeSystemVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A version of the search page definitions for the site. Typically, an

+								application passes the version value that was returned the last time the

+								application executed this call. Filter that causes the call to return only

+								the search pages for which the attribute meta-data has changed since the

+								specified version. The latest version value is not necessarily greater

+								than the previous value that was returned. Therefore, when comparing

+								versions, only compare whether the value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSearchPage</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AttributeSetID" type="xs:int" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								A characteristic set ID that is associated with a

+								catalog-enabled category that supports product search pages.

+								You can pass an array of these IDs in the request.

+								Each characteristic set corresponds to a level in the

+								eBay category hierarchy at which all items share common characteristics.

+								Multiple categories can be mapped to the same characteristic set.

+								Each ID is used as a filter to limit the response content to fewer

+								characteristic sets. When IDs are specified, the call only returns

+								search page data for the corresponding characteristic sets.

+								When no IDs are specified, the call returns all the current

+								search page data in the system.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSearchPage</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductSearchPage -->

+	<xs:element name="GetProductSearchPageResponse" type="ns:GetProductSearchPageResponseType"/>

+	<xs:complexType name="GetProductSearchPageResponseType">

+		<xs:annotation>

+			<xs:documentation>

+      For a category that is catalog-enabled, GetProductSearchPage retrieves the attributes 

+      a seller can use to form a query when searching for Pre-filled Item Information. 

+      See the Developer's Guide for an overview of Pre-filled Item Information and details about 

+      searching for catalog products.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="AttributeSystemVersion" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Current version of the product search page data for the site.

+								This value changes each time changes are made to the search page data.

+								The current version value is not necessarily greater than the previous

+								value. Therefore, when comparing versions, only compare whether the 

+								value has changed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSearchPage</CallName>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductSearchPage" type="ns:ProductSearchPageType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								A list of catalog search criteria and sort keys associated with a catalog-enabled category, 

+								plus supplemental information to help the seller understand how to make selections.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSearchPage</CallName>

+									<DetailLevels>ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductSearchResults -->

+	<xs:element name="GetProductSearchResultsRequest" type="ns:GetProductSearchResultsRequestType"/>

+	<xs:complexType name="GetProductSearchResultsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+Searches for Pre-filled Item Information within one or more

+characteristic sets. This kind of search is only applicable in the context of the Sell Your Item use case.

+Use the response to present the seller with a list of products found in a catalog.

+(For buy-side searches, use GetSearchResults.)&lt;br&gt;

+&lt;br&gt;

+See the Attributes and Catalogs section of the eBay Web Services guide for background information

+and terminology definitions, as well as information about how to use this call in the Sell Your Item flow.&lt;br&gt;

+&lt;br&gt;

+You can use this call to search for different products at the same time.

+That is, this call can perform batch searches.&lt;br&gt;

+&lt;br&gt;

+Given an array of ProductSearch properties that are configured with a list of search attributes or keywords

+(and other information), GetProductSearchResults searches an eBay catalog for products that match each query.

+Some queries can be configured to also specify a sort order for the results.&lt;br&gt;

+&lt;br&gt;

+To configure a ProductSearch object to search by attributes, you need a valid combination of search attributes.

+If you want to use a sort order other than the default order, you also need a valid sort attribute.

+We offer two calls that return product search and sort attributes.

+Use GetCategory2CS to determine which one of these calls you can use for a given category.

+At least one approach is offered for each catalog-enabled category, and some cases, both are offered.&lt;br&gt;

+&lt;br&gt;

+&lt;b&gt;GetProductSearchPage&lt;/b&gt;: Use this call when you want to configure a simple query that consists of a

+single search attribute (with a value). This retrieves a single product or a very short list of search results

+to choose from. Some products are fairly easy to find based on a single attribute. For example, in

+Consumer Electronics categories (Digital Cameras, Cell Phones, and PDAs), you can specify a unique (or nearly unique) identifier, like a part number. In Media categories (Books, DVDs &amp; Movies, Music, and Video Games), you can specify a descriptive name, like a title. &lt;br&gt;

+&lt;br&gt;

+&lt;b&gt;GetProductFinder&lt;/b&gt;: Use this call when you want to configure a complex query. In the Sell Your Item flow, this is a complex query against the eBay product catalog. Currently, this type of search is available in Consumer Electronics categories only. In this type of search, you specify values for multiple attributes, like Brand and Resolution (i.e., number of megapixels). This retrieves a list of matching products.

+This approach is useful when the user does not know the part number, or a product does not have a single, distinguishing feature that is easy to search on. For example, searching for a digital camera based solely on the brand would likely yield far too many results to be useful. Searching on the brand, product line, and resolution will retrieve a much shorter list of results. &lt;br&gt;

+&lt;br&gt;

+Alternatively, you can search on a particular keyword that appears in a product's title or Item Specifics.

+For this, you use GetProductSearchResults and and pass in one or more text strings (with optional wildcards)

+in ProductSearch.QueryKeywords. &lt;br&gt;

+&lt;br&gt;

+When you use a keyword query, the search criteria are not restricted to the results of a product search page or

+product finder, so the criteria are not tied to a particular characteristic set. This means you can search across

+multiple characteristic sets using the same query. This is useful when the user wants to broaden their search

+across multiple categories. For example, a seller who sells Jazz books, Jazz CDs, and Jazz movies may want to

+search for "Bird" across multiple categories. Specify the characteristic set IDs of interest by using CharacteristicSetIDs. &lt;br&gt;

+&lt;br&gt;

+GetProductSearchResults returns a list of matching products, if any. Each product is represented as a list of

+attributes (Item Specifics) plus other identifying information, such as a product ID and a stock photo. &lt;br&gt;

+&lt;br&gt;

+Once the user selects a product from the list (this may require a call to GetProductFamilyMembers to retrieve

+additional products to choose from), pass its ID in a GetProductSellingPages request to retrieve more

+detailed information about each product, including a set of optional Item Specifics that the seller

+can use in addition to the pre-filled Item Specifics (see GetProductSellingPages). &lt;br&gt;

+&lt;br&gt;

+To use this data in a listing, pass the product ID and the optional Item Specifics in the seller's listing request (AddItem).

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Searches for Pre-filled Item Information within one or more

+						characteristic sets.

+						Use the response from GetProductSearchPage or GetProductFinder to determine

+						the attributes that can be used as criteria for the search.

+						After a user selects a product by its ID, use the ID as input to GetProductSellingPages.

+						This call also supports batch requests (i.e., searching for several products in the same call). 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ProductSearch" type="ns:ProductSearchType"  minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+                  Specifies the keywords or attributes that make up the product query,

+                  with pagination instructions.

+								ProductSearch is a required input. To search for multiple different products at the same time

+								(i.e., to perform a batch search), pass in multiple ProductSearch properties.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSearchResults</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductSearchResults -->

+	<xs:element name="GetProductSearchResultsResponse" type="ns:GetProductSearchResultsResponseType"/>

+	<xs:complexType name="GetProductSearchResultsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+      GetProductSearchResults performs a product search and collects the results. 

+      Result attributes for each product/product family are grouped and identified 

+      with a product ID. If more matches are found than the max amount specified per family, 

+      only the product family information is returned. In this case, call GetProductFamilyMembers 

+      to retrieve more products within the same family.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="DataElementSets" type="ns:DataElementSetType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+                  Container for one or more DataElement fields containing supplemental helpful data. 

+                  A DataElement field is an HTML snippet that specifies hints for the user, help links, 

+								help graphics, and other supplemental information that varies per characteristic set.

+								Usage of this information is optional and may require you to inspect the information

+                  to determine how it can be applied in an application. 

+                  Also returned with warnings when no matches are found.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductSearchResult" type="ns:ProductSearchResultType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the attributes and product details that match the attributes or query keywords

+                  passed in the request. Always returned when product search results are found.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductSellingPages -->

+	<xs:element name="GetProductSellingPagesRequest" type="ns:GetProductSellingPagesRequestType"/>

+	<xs:complexType name="GetProductSellingPagesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+      	Retrieves information that describes how to present catalog

+				product information to a seller. Use this information to present

+				users with the equivalent of the Item Specifics portion of the

+				eBay Title and Description pages and to validate user-specified

+				values for eBay attributes on the client before including them in

+				an AddItem call or related calls. The data contains a list of all

+				the attributes that are applicable for one or more requested

+				products, along with related meta-data. The meta-data specifies

+				the pre-filled values of each attribute, the possible values of

+				attributes that are not pre-filled, the logic for presenting the

+				attributes to a user, and rules for validating the user's

+				selections. Use the results in combination with GetAttributesXSL

+				to render the Item Specifics in a graphical user interface. See

+				the eBay Web Services Guide for an overview of Pre-filled Item

+				Information, details about searching for catalog products, and

+				information about the ProductSellingPages content model.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves information that describes how to present catalog

+						product information to a seller.

+						Use this data when listing an item with Pre-filled

+						Item Information. 

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="UseCase" type="ns:ProductUseCaseCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the context in which the call is being executed, which will imply

+								certain validation rules. Use this property to make sure you retrieve the

+								appropriate version of product information and attribute meta-data

+								when you are listing, revising, or relisting an item with Pre-filled Item Information.

+								Valid values:&lt;br&gt;

+								&lt;b&gt;SYI&lt;/b&gt; = Sell Your Item. Use before adding an item. Causes the response to include the

+								latest product ID in the system (given an ID specified in the Products element)

+								and the corresponding characteristic meta-data.&lt;br&gt;

+								&lt;b&gt;RYI&lt;/b&gt; = Revise Your Item. Use this before revising an item. Causes the response to return

+								the product ID, attribute data, and other data associated with the version of the product

+								that you pass in the Products element. This is useful in case the product ID or associated data

+								has changed in the system since the item was originally listed. When revising

+								an item, this helps you make changes that are consistent with the original listing.&lt;br&gt;

+								&lt;b&gt;RELIST&lt;/b&gt; = Use this before relisting an item. Causes the response to include the

+								latest product ID in the system (given an ID specified in the Products element)

+								and the corresponding characteristic meta-data. (Same as SYI).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSellingPages</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Product" type="ns:ProductType"  minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								A catalog product identifies a prototype description

+								of a well-known type of item, such as a popular book.

+								As this call supports batch requests, you can pass in an array of products

+								to retrieve data for several products at the same time.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSellingPages</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetProductSellingPages -->

+	<xs:element name="GetProductSellingPagesResponse" type="ns:GetProductSellingPagesResponseType"/>

+	<xs:complexType name="GetProductSellingPagesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+      Retrieves an XML string that describes how to present catalog product information to a seller.

+      Use this information to present users with the equivalent of the Item Specifics portion

+      of the eBay Title and Description pages and to validate user-specified values for

+      eBay attributes on the client before including them in an AddItem call or related calls. 

+      Use the results in combination with GetAttributesXSL to render the Item Specifics

+      in a graphical user interface.

+      See the Developer's Guide for an overview of Pre-filled Item Information and details about 

+      searching for catalog products.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ProductSellingPagesData" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							A string containing a list of all the attributes that are applicable 

+							to the products specified in the request, along with related meta-data. 

+							The meta-data specifies the pre-filled values of each attribute, the 

+							possible values of attributes that are not pre-filled, the logic for presenting 

+							the attributes to a user, and rules for validating the user's selections.

+							&lt;br&gt;&lt;br&gt; 

+							For backward compatibility, this data is in

+							the same XML format that was used in the Legacy XML API so that you can 

+							apply the same Item Specifics XSL stylesheet to it. That is, individual 

+							elements are not described using the unified schema format.

+							&lt;br&gt;&lt;br&gt;

+							The data is based on the GetAttributesCS response (AttributeData), with 

+							additional information that is specific to catalog products.

+							Product and attribute information is nested within a set of Product tags. 

+							The product-specific data is merged into the attribute data so that the same 

+							XSL stylesheet used to render the results of GetAttributeCS can be used to render 

+							catalog product data. See GetAttributesXSL.

+							&lt;br&gt;&lt;br&gt;

+							See the Attribute Meta-Data Model section of the eBay Web Services guide 

+							for information about each element in the ProductSellingPagesData string.

+							&lt;br&gt;&lt;br&gt;

+							Because the content is returned as a string, the XML markup elements are escaped with 

+							character entity references (e.g.,&amp;amp;lt;eBay&amp;amp;gt;&amp;amp;lt;Attributes&amp;amp;gt;...). 

+							See the appendices in the eBay Web Services guide for general information about 

+							string data types.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetProductSellingPages</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetPromotionRules -->

+	<xs:element name="GetPromotionRulesRequest" type="ns:GetPromotionRulesRequestType"/>

+	<xs:complexType name="GetPromotionRulesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests a list of the cross-promotion rules associated with

+				a specific referring item or store category.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests a list of the cross-promotion rules associated

+						with a specific referring item or store category.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique ID of the referring item for which

+								you want promotion rules. Specify a value for

+								either ItemID or StoreCategoryID, never both.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetPromotionRules</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StoreCategoryID" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique ID of the store category for which you

+								want promotion rules. Specify a value for

+								either ItemID or StoreCategoryID, never both.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPromotionRules</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PromotionMethod" type="ns:PromotionMethodCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The type of promotion rules to retrieve, either UpSell

+								or CrossSell.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPromotionRules</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetPromotionRules -->

+	<xs:element name="GetPromotionRulesResponse" type="ns:GetPromotionRulesResponseType"/>

+	<xs:complexType name="GetPromotionRulesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns a list of promotion rules associated with a specific

+				item or store category. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="PromotionRuleArray" type="ns:PromotionRuleArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation> 

+								An array of upsell or cross-sell promotion rules

+								associated with the item or category specified in

+								the request. All rules in the array are either

+								upsell or cross-sell, according to the value of

+								PromotionMethod specified in GetPromotionRulesRequest.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetPromotionRules</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetRecommendations -->

+	<xs:element name="GetRecommendationsRequest" type="ns:GetRecommendationsRequestType"/>

+	<xs:complexType name="GetRecommendationsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				(Use GetItemRecommendations instead of GetRecommendations.

+				GetItemRecommendations supports

+				all the same features as GetRecommendations and adds support for batch requests.)

+				Invokes one or more specified recommendation engines. These engines can examine potential item data

+				that a seller has specified and return recommended changes or opportunities for improvement.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Deprecated soon.

+						Please use GetItemRecommendations instead.

+						Invokes one or more specified recommendation engines.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ListingFlow" type="ns:ListingFlowCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The listing flow for which the seller is seeking Listing Analyzer recommendations.

+								Not applicable to results from other recommendation engines.

+								The default flow is AddItem.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains fields that describe the item for which you are seeking recommendations.

+								If the Listing Analyzer recommendation engine is run, the applicable fields are

+								the same as the fields for AddItem, ReviseItem, or RelistItem

+								requests, as determined by the value specified in ListingFlow.

+								The item ID (Item.ItemID) is required when the ListingFlow is ReviseItem or RelistItem.

+								All other item fields are optional, even if listed as required for other calls.

+								However, as some tips are dependent on the properties of the item, and as some properties

+								have dependencies on other properties, we strongly recommend that you include all the item properties

+								that will be included in the AddItem, ReviseItem, or RelistItem request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExternalProductID" type="ns:ExternalProductIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An ISBN value, UPC value, or eBay catalog product ID. Identifies

+								Pre-filled Item Information that the seller wants to include in the listing.

+								Only applicable for certain categories and only applicable when the value of

+								ListingFlow is AddItem. Not applicable when the recommendation engine is ProductPricing.

+								See the Developer's Guide for information on the categories

+								that currently support usage of this field.

+								Either ExternalProductID or Item.ProductListingDetails can be specified

+								in the request, but not both.

+								If the primary and secondary category are both catalog-enabled,

+								this ID must be for a product associated with the primary category.

+								If only one category is catalog-enabled, this ID must be for a product

+								that is associated with the catalog-enabled category.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModifiedFields" type="ns:ModifiedFieldType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Applicable when the ListingFlow is ReviseItem or RelistItem.

+								Array of item properties that are being changed.

+								See the Developer's Guide for rules on adding, modifying, and removing

+								values when revising or relisting items.

+								In release 439 and later, ModifiedFields is no longer required to revise

+								field values, but it is still supported for backward compatibility.

+								See the Developer's Guide for rules on adding, modifying, and removing

+								values when revising or relisting items.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RecommendationEngine" type="ns:RecommendationEngineCodeType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								An array of recommendation engines. If no engines are specified, all available

+								recommendation engines will run. Certain input fields (such as Item.PrimaryCategory.CategoryID)

+								are required in order to run all engines with no errors.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Query" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the search string, consisting of one or

+								more words to search for in the listing title.

+								The words "and" and "or" are treated like any other

+								word.

+								Required when the Suggested Attributes engine is used.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>350 (characters)</MaxLength>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetRecommendations -->

+	<xs:element name="GetRecommendationsResponse" type="ns:GetRecommendationsResponseType"/>

+	<xs:complexType name="GetRecommendationsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+Please use GetItemRecommendations instead of GetRecommendations. GetItemRecommendations supports 

+all the same features as GetRecommendations and adds support for batch requests.

+GetRecommendations returns recommended changes or opportunities for improvement 

+related to listing data that was passed in the request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ListingAnalyzerRecommendations" type="ns:ListingAnalyzerRecommendationsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains tips returned from the Listing Analyzer recommendation engine, 

+								if this engine was specified in the request (or if no engine was specified).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SIFFTASRecommendations" type="ns:SIFFTASRecommendationsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Reserved for future use.

+							</xs:documentation>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PricingRecommendations" type="ns:PricingRecommendationsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains pricing data returned from the Product Pricing engine, 

+								if this engine was specified in the request (or if no engine was specified).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AttributeRecommendations" type="ns:AttributeRecommendationsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains attribute suggestions returned from the Suggested Attributes engine, 

+								if this engine was specified in the request.

+								The results include suggested attributes and values based on the primary category 

+								and a string you specify in the Query field. Suggestions may only be returned when the 

+								Suggested Attributes engine is specified alone. If you request recommendations by using 

+								multiple engines, suggested attribute data might not be returned. If attributes are returned 

+								with multiple values, the values are returned in order of rank (i.e., the value that best meets 

+								eBay's recommendation criteria is returned first). 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductRecommendations" type="ns:ProductRecommendationsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains zero or more product titles and IDs returned from the Suggested Attributes engine, 

+								if this engine was specified in the request (or if no engine was specified).

+								If applicable, use one of the suggested product IDs to list the item with Pre-filled Item Information. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRecommendations</CallName>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetReturnURL -->

+	<xs:element name="GetReturnURLRequest" type="ns:GetReturnURLRequestType"/>

+	<xs:complexType name="GetReturnURLRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns all of your application's authentication and authorization

+				preferences and related data, such as the URLs that eBay should

+				redirect users to after they complete the authentication and

+				authorization process. This call must be authenticated using the

+				application's username and password (not an authentication token).

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns all of your application's authentication and authorization

+						preferences and related data.

+					</Summary>

+				</Overview>

+				<SeeLink>

+					<Title>Authentication &amp; Authorization</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetReturnURL -->

+	<xs:element name="GetReturnURLResponse" type="ns:GetReturnURLResponseType"/>

+	<xs:complexType name="GetReturnURLResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns all the authentication and authorization preferences and related data for

+				the application.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ApplicationDisplayName" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Display name for the application. When your application

+								redirects users to eBay to complete the authentication and

+								authorization process, eBay displays this value to identify

+								your application to the user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetReturnURL</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AuthenticationEntryArray" type="ns:AuthenticationEntryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+						    One or more sets of authentication preferences and other data that you

+								have configured for your application (if any). Call SetReturnURL to

+								configure this data.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetReturnURL</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+								<SeeLink>

+									<Title>Authentication &amp; Authorization</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetRuName -->

+	<xs:element name="GetRuNameRequest" type="ns:GetRuNameRequestType"/>

+	<xs:complexType name="GetRuNameRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns a globally unique runame (unique identifier for an authentication data

+				entry). This call must be authenticated using the application's username and

+				password, rather than a token.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns a globally unique runame (unique identifier for an authentication data entry).

+					</Summary>

+				</Overview>

+				<SeeLink>

+					<Title>Authentication &amp; Authorization</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ClientUseCase" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Optional value that is appended to the generated runame.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRuName</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetRuName -->

+	<xs:element name="GetRuNameResponse" type="ns:GetRuNameResponseType"/>

+	<xs:complexType name="GetRuNameResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the generated runame (unique identifier for an authentication data entry).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="RuName" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The generated globally unique runame.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetRuName</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSearchResults -->

+	<xs:element name="GetSearchResultsRequest" type="ns:GetSearchResultsRequestType"/>

+	<xs:complexType name="GetSearchResultsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Conducts a search for items on eBay based on a user-specified set of one or more

+				keywords. Returns those item listings where the keywords appear in the

+				title, subtitle, and (optionally) the description. The request includes

+				various kinds of fields that control the output. Some fields (e.g.,

+				Query) are primary search criteria that let you specify data to match in

+				listings. For example, you can search for all listings that include the

+				word "Toy" in the title. Some fields (e.g., ItemTypeFilter) are

+				secondary search criteria that let you further refine data to match in

+				listings. For example, you can search for all toys that are listed as

+				auctions. In general, the effect of secondary search fields is

+				cumulative (using "AND" logic) unless otherwise specified. Some fields

+				(e.g., TotalOnly) control what is actually returned in the result set.

+				For example, you can search for all toys that are listed as Chinese

+				auctions, but just retrieve the total count (not the listings

+				themselves). Some fields (e.g., IncludeCondition) affect the data to

+				retrieve for each listing in the result set. For example, for each toy

+				returned in the result, you can also choose to see the toy's new or used

+				condition. Some fields (e.g., Order) control the way the listings are

+				organized in the response. For example, you can retrieve all the toy

+				listings in chronological order, with the newest one first. Use the

+				DetailLevel ItemReturnCategories to return the primary category and, if

+				applicable, the secondary category. Use the DetailLevel

+				ItemReturnAttributes (or ReturnAll) to return summary Item Specifics

+				(only returned for categories that support summary Item Specifics in

+				search results).&lt;br&gt;&lt;br&gt;Not applicable to eBay Express or Half.com.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves item listings based on keywords you specify. 

+						The keywords can include wildcards. 

+						The response is in the form of an array whose size and contents you specify,

+						using a variety of input fields.  

+						You can filter the item listings returned

+						using such criteria as the listing category, location, whether the item is listed

+						in an ebay Store, and listing type. You can include or exclude specified sellers.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="MotorsGermanySearchable" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the results based on each item's eligibility to appear on the

+								mobile.de site. If false, excludes eligible items from search results. If

+								true, queries for eligible items only. If not specified, the search

+								results are not affected. Only applicable for items listed on the eBay

+								Germany site (site ID 77) in subcategories of mobile.de search-enabled

+								categories.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Query" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A query that specifies a search string. The search string consists of one or more

+								keywords to search for in the listing title and/or description.

+								The words "and" and "or" are treated like any other word. Only use "and",

+								"or", or "the" if you are searching for listings containing these words.

+								You can use AND or OR logic by including certain modifiers.

+								Wildcards (e.g., *) are also supported. Be careful when using spaces before

+								or after modifiers and wildcards (+, -, or *). See the

+								eBay Web Services Guide	for a list of valid modifiers and examples.

+								Query is not applicable in combination with ExternalProductID or ProductID.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>350 (characters)</MaxLength>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the result set to just those items listed in the specified

+								category. You can use the ItemReturnCategories detail level. If you use

+								the ItemReturnCategories detail level, the results include the primary

+								category of retrieved items and, if applicable, the secondary category.

+								Defaults to all categories if no category ID is specified. If

+								the specified category ID does not match an existing category for the

+								site, an invalid-category error message is returned.

+								You must pass ProductID, Query, ExternalProductID, or CategoryID in the request.

+								CategoryID can be used in combination with Query. It is not

+								allowed with ExternalProductID, ProductID, or when SearchRequest is used.

+								If you pass CategoryID without Query, it must specify a leaf category ID.

+								That is, it cannot be a meta-category ID (e.g., 267 for "Books").

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SearchFlags" type="ns:SearchFlagsCodeType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Secondary search criterion that checks item descriptions for keywords that

+								match the query, limits the search results to only charity items, limits

+								the result set to those items with PayPal as a payment method, and/or

+								provides other criteria to refine the search. Not allowed with

+								UserIdFilter (IncludeSellers or ExcludeSellers).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PriceRangeFilter" type="ns:PriceRangeFilterType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the result set to just those items where the price is within the

+								specified range. The PriceRangeFilterType includes a minimum and a maximum

+								price.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProximitySearch" type="ns:ProximitySearchType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the result set to just those items whose location is within a

+								specified distance of a postal code. The ProximitySearchType includes

+								a maximum distance and a postal code.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemTypeFilter" type="ns:ItemTypeFilterCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Filters items based on the ListingType set for the items. 

+								If you search for Store Inventory items, you should use values in ItemTypeFilter

+								instead of StoresFixedPrice.								

+								If ItemTypeFilter is not specified (or if the AllItemTypes value of ItemTypeFilter is specified), all listing types can be returned unless another relevant filter is specified.

+								You cannot use GetSearchResults to search eBay Express.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+									<Default>AllItems</Default>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SearchType" type="ns:SearchTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the listings in the result set based on whether they are in the

+								Gallery. The choices are items in the Gallery or Gallery and non-Gallery

+								items.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UserIdFilter" type="ns:UserIdFilterType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the the result set to just those items listed by one or more

+								specified sellers or those items not listed by the one or more specified

+								sellers.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SearchLocationFilter" type="ns:SearchLocationFilterType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the result set to just those items that meet location criteria:

+								listed in a specified eBay site, location where the seller has the item,

+								location from which the user is searching, and/or items listed with a

+								specified currency. You cannot use GetSearchResults to search eBay Express.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StoreSearchFilter" type="ns:SearchStoreFilterType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the result set to just those items that meet criteria related to

+								eBay Stores sellers and eBay Stores. Use this to retrieve items listed in a particular

+								seller's eBay Store or in all store sellers' eBay Stores.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Order" type="ns:SearchSortOrderCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the order in which listings are returned in a result set. Listings may be

+								sorted by end time, start time, and in other ways listed in the

+								SearchSortOrderCodeType. Controls the way the listings are organized in the response

+								(not the details to return for each listing).

+								For most sites, the default sort order is by items ending soonest.

+								Store Inventory listings are usually returned after other listing types, regardless of the sort order.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Controls the pagination of the result set. Child elements specify the maximum number of

+								item listings to return per call and which page of data to return. Controls the way the

+								listings are organized in the response (not the details to return for each listing).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SearchRequest" type="ns:SearchRequestType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A query consisting of a set of attributes (Item Specifics). Use this kind of

+								query to search against the Item Specifics in listings (e.g., to search for

+								a particular shoe size). If the query includes multiple attributes, the search engine will apply "AND"

+								logic to the query and narrow the results. Use GetProductFinder to determine the list of

+								valid attributes and how many are permitted for the specified characteristic set.

+								Retrieves items along with any buying guide details that are associated with

+								the specified product finder.

+								Applicable in combination with the Query argument. Cannot be used in

+								combination with ProductID or ExternalProductID.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An exclusive query to retrieve items that were listed with the specified eBay catalog

+								product. You must pass ProductID, Query, ExternalProductID, or CategoryID in the

+								request. If you use ProductID, do not use Query, ExternalProductID, or CategoryID.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExternalProductID" type="ns:ExternalProductIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An exclusive query to only retrieve items that were listed with the specified ISBN or UPC.

+								Only applicable for items that were listed with Pre-filled Item Information

+								in media categories (Books, Music, DVDs and Movies, and Video Games).

+								You must pass ProductID, Query, ExternalProductID, or CategoryID in the request.

+								If you use ExternalProductID, do not use Query, ProductID, or CategoryID.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Categories" type="ns:RequestCategoriesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Retrieves statistical information about categories that contain items that match the query.

+                  Can also cause the result to include information about buying guides that are

+                  associated with the matching categories.

+                  Does not control the set of listings to return or the details to return for each listing.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TotalOnly" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Retrieves the total quantity of matching items, without

+								returning the item data. See PaginationResult.TotalNumberOfEntries

+								in the response. If TotalOnly and Categories.CategoriesOnly are both specified

+								in the request and their values are inconsistent with each other,

+								TotalOnly overrides Categories.CategoriesOnly.

+								That is, if TotalOnly is true and Categories.CategoriesOnly is false,

+								the results include matching categories but no item data or buying guides.

+								If TotalOnly is false and Categories.CategoriesOnly is true, the results

+								include matching categories, item data, and buying guides.

+								If TotalOnly is not specified, it has no logical effect.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the results to items ending within a time range.

+								EndTimeFrom specifies the beginning of the time range. Specify a time in the future.

+								If you specify a time in the past, the current time is used. If specified,

+								EndTimeTo must also be specified (with a value equal to or later than EndTimeFrom).

+								Express the time in GMT. Cannot be used with the ModTimeFrom filter.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the results to items ending within a time range. EndTimeTo specifies

+								the end of the time range. If specified, EndTimeFrom must also be specified

+								(with a value equal to or earlier than EndTimeTo). Express the time in GMT.

+								Cannot be used with the ModTimeFrom filter.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the results to active items whose status has changed

+								since the specified time. Specify a time in the past.

+								Time must be in GMT. Cannot be used with the EndTime filters.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeGetItFastItems" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								When passed with a value of true, limits the results to Get It Fast listings.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StoresFixedPrice" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Ignored if Store-related values in ItemTypeFilterCodeType are used as input filters.

+								Using values in ItemTypeFilterCodeType is preferable to using StoresFixedPrice.

+								StoresFixedPrice controls whether or not to use the Store Inventory format as a filtering criterion.&lt;br&gt;&lt;br&gt;

+								For US, Canada, and Motors:&lt;br&gt;

+								The StoresFixedPrice input field does not currently work for these sites.

+								For all other sites:&lt;br&gt;

+								If true, the results only include Store Inventory listings (with no listings in other formats).&lt;br&gt;

+								If false, the results only include listings in other formats (with no Store Inventory listings).&lt;br&gt;

+								If omitted (the default), this filter is not applied at all,

+								so all formats can be returned (depending on other criteria you pass in the request).

+								In this case, Store Inventory listings appear after

+								all other matching auction and basic fixed price listings. &lt;br&gt;&lt;br&gt;

+								You can use this filter regardless of whether you are searching in eBay Stores.

+								If you pass StoresFixedPrice in the same request with StoreSearchFilter or ItemTypeFilter,

+								"AND" logic may be applied, and you might not get the desired results.

+								For example, if you specify StoresFixedPrice=true and ItemTypeFilter=AuctionItemsOnly,

+								the call will succeed but no listings will be returned (because no listings can use both

+								auction and Store Inventory formats).

+								This is why it is recommended that you use values in ItemTypeFilterCodeType instead of StoresFixedPrice.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+									<TagStatus>ObsoleteSoon</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentMethod" type="ns:PaymentMethodSearchCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the results to items that accept a specific payment method or methods.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="GranularityLevel" type="ns:GranularityLevelCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Optional tag that currently accepts only one value for this call: Coarse. Other values

+								return an error. Specify the value Coarse if you want only the following fields to be

+								returned for items (if applicable to the result set): ItemID, Title, ViewItemURL,

+								ListingType, StartTime, EndTime, BuyItNowPrice, CurrentPrice, ConvertedCurrentPrice,

+								LocalizedCurrentPrice, Currency, ShippingType, DefaultShippingCost, Country,

+								PostalCode, and any tags resulting from the detail level you specify. Controls the

+								details to return for each listing (not the set of listings that match the query).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExpandSearch" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Expands search results when a small result set is returned. For example, on the US site

+								(site ID 0), if a search would normally result in fewer than 10 items, then if you

+								specify true for this tag, the search results are expanded. Specifically, the search

+								returns items (if there are matches) in one or more of the following containers:

+								InternationalExpansionArray (for items available from international sellers),

+								FilterRemovedExpansionArray (items that would be returned if filters such as PriceRangeFilter are removed),

+								and AllCategoriesExpansionArray (for items available if category filters are removed).

+								Maximum number of items returned in each expansion container is 6 to 10.

+              </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Lot" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Limits the results to only those listings for which Item.LotSize is 2 or greater.

+              </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AdFormat" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							  Restricts listings to return only items that have the Ad Format feature.

+								If true, the values of ItemTypeFilter, StoresFixedPrice, and

+								StoreSearchFilter are ignored (if they are specified). That is, "AND"

+								logic is not applied.

+              </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Quantity" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							  Limits the results to listings that offer a certain number of items

+								matching the query. If Lot is also specified, then Quantity is the number

+								of lots multiplied by the number of objects in each lot. Use

+								QuantityOperator to specify that you are seeking listings with quantities

+								greater than, equal to, or less than Quantity.

+              </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="QuantityOperator" type="ns:QuantityOperatorCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							  Limits the results to listings with quantities greater than, equal to, or

+								less than Quantity. Controls the set of listings to return (not the

+								details to return for each listing).

+              </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerBusinessType" type="ns:SellerBusinessCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the results to those of a particular seller

+								business type such as commercial or private.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+

+

+					<xs:element name="DigitalDelivery" type="xs:boolean" minOccurs="0">

+					<xs:annotation>

+						<xs:documentation>

+							If true, limits the results to digitally delivered good only. If false, this flag is

+							ignored (i.e., false is the same as not specifying the flag at all).

+						</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetSearchResults</CallName>

+								<RequiredInput>No</RequiredInput>

+							</CallInfo>

+						</xs:appinfo>

+					</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeCondition" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								For eBay Germany only. If true, each item in the result set can also include the item condition attribute

+								(e.g., New or Used) in the ItemSpecific property of the response.

+								An item only includes a condition attribute in the response if the seller filled in

+								the Item Condition in the Item Specifics section of the listing.

+								(That is, the condition attribute is not returned if the seller only put the word

+								"New" in the listing's title but did not specify the condition in the listing's Item Specifics.)

+								Controls the details to return for each listing (not the set of listings that match the query).

+								Note: This field does not control whether to retrieve only new or used items.

+								In some categories, you can use a product finder search (SearchRequest)

+								to only retrieve new or used items.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeFeedback" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, each item in the result set also includes information about the seller's feedback.

+								Controls the details to return for each listing (not the set of listings that match the query).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CharityID" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							(in) Restricts listings to return only items that support the specified nonprofit charity organization. Retrieve CharityID values with GetCharities.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LocalSearchPostalCode" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Include local items in returning results near this postal code. This postal code is the basis for local search.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSearchResults -->

+	<xs:element name="GetSearchResultsResponse" type="ns:GetSearchResultsResponseType"/>

+	<xs:complexType name="GetSearchResultsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response contains the item listings that have the specified keyword(s) in the 

+				title, sub-title, and (optionally) the description. If the request uses any of 

+				the optional filtering properties, the item listings returned are those 

+				containing the keyword(s) and meeting the filter criteria. &lt;br&gt;&lt;br&gt;

+				Not applicable to eBay Express or Half.com.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="SearchResultItemArray" type="ns:SearchResultItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the returned item listings, if any. The data for each listing is 

+								returned in an ItemType object.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemsPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the maximum number of ItemType objects that can be returned in 

+								SearchResultItemArray for any given call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the page of data returned by the current call. For instance, 

+								for the first set of items can be returned, this field has a value of 

+								one.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreItems" type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether there are more items, not yet returned, that match the 

+								search criteria.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the results of the pagination, including the total number of 

+								pages of data that can be returned and the total number of items that can 

+								be returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryArray" type="ns:CategoryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Statistical information about categories that contain items that match 

+								the query, if any. Returns empty if no matches are found or when the 

+								Categories filter was not passed in the request. (For categories 

+								associated with specific items, see items returned in each search 

+								result.) Shows the distribution of items across each category.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BuyingGuideDetails" type="ns:BuyingGuideDetailsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains URLs and other information about relevant buying guides (if 

+								any), as well as the site's buying guide hub. Unavailable in the Sandbox 

+								environment. Buying guides are useful to buyers who do not have a 

+								specific product in mind. For example, a digital camera buying guide 

+								could help a buyer determine what kind of digital camera is right for 

+								them. Only returned for product finder searches (using 

+								SearchRequest.SearchAttributes) and for searches that retrieve matching 

+								categories along with item data (using Categories.CategoriesOnly=false).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StoreExpansionArray" type="ns:ExpansionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								No longer returned as of mid-February 2006 (because Store

+								Inventory listings are no longer limited to searches within eBay Stores).

+								Used to contain items that were listed in the Store Inventory Format,

+								if the request specified that ExpandSearch was true. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Conditionally</Returned>

+									<TagStatus>Obsolete</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="InternationalExpansionArray" type="ns:ExpansionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Can be returned if the request specifies that ExpandSearch is true. 

+								Provides additional search results when a small result set would have 

+								been returned with the original search. For example, on the US site (site 

+								ID 0), if a search would normally result in fewer than 10 items, and 

+								ExpandSearch is true, the search results are expanded to include (if 

+								matching the query) the InternationalExpansionArray container for items, 

+								as well as other containers. The InternationalExpansionArray container 

+								contains items available from international sellers.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FilterRemovedExpansionArray" type="ns:ExpansionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Can be returned if the request specifies that ExpandSearch is true. 

+								Provides additional search results when a small result set would have 

+								been returned with the original search. For example, on the US site (site 

+								ID 0), if a search would normally result in fewer than 10 items, and 

+								ExpandSearch is true, the search results are expanded to include (if 

+								matching the query) the FilterRemovedExpansionArray container for items, 

+								as well as other containers. The FilterRemovedExpansionArray container 

+								contains items that would be returned if filters such as PriceRangeFilter 

+								are removed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AllCategoriesExpansionArray" type="ns:ExpansionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Can be returned if the request specifies that ExpandSearch is true. 

+								Provides additional search results when a small result set would have 

+								been returned with the original search. For example, on the US site (site 

+								ID 0), if a search would normally result in fewer than 10 items, and 

+								ExpandSearch is true, the search results are expanded to include (if 

+								matching the query) the AllCategoriesExpansionArray container for items, 

+								as well as other containers. The AllCategoriesExpansionArray container 

+								contains items available if category filters are removed. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SpellingSuggestion" type="ns:SpellingSuggestionType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Suggestion for a different spelling of the search term or terms, along 

+								with the number of matching items that would have been returned if the 

+								suggestions had been used. The suggestions are given in Text tags and the 

+								suggestion for the first word is given before the suggestion for 

+								subsequent words. Suggestions are based on correctly-spelled terms in 

+								items, so suggestions vary over time and depend on whether a word or word 

+								combination is in one or more items.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResults</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSearchResultsExpress -->

+	<xs:element name="GetSearchResultsExpressRequest" type="ns:GetSearchResultsExpressRequestType"/>

+	<xs:complexType name="GetSearchResultsExpressRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves brief details about active items that are listed on eBay Express, eBay

+				catalog products that have been used to pre-fill data in these items, and a

+				histogram that shows the distribution of items and catalog products across Express

+				departments, aisles, and/or product types.&lt;br&gt;

+				&lt;p&gt;This call only returns Express data for the site associated with the site

+				ID that you specify in the request URL (for the SOAP API) or the X-EBAY-API-SITEID

+				header (for the XML API). For example, if you specify site ID 0, then data for

+				Express US is returned. &lt;br&gt;

+				&lt;br&gt;

+				Currently, this call is only supported for site ID 0 (Express US).

+				&lt;br&gt;

+				&lt;br&gt;

+				The Sandbox does not support GetSearchResultsExpress.&lt;br&gt;

+				&lt;br&gt;

+				You can configure the call to retrieve only the item data, only the catalog

+				product data, only the histogram, or any combination of these results. By default,

+				the call returns brief summaries of each.&lt;br&gt;

+				&lt;br&gt;

+				&lt;b&gt;Item Results:&lt;/b&gt; For each item returned (if any), the response

+				includes a brief set of details, such as the item price (including shipping). You

+				can retrieve more or fewer details about each item by using the ItemDetails field.

+				To retrieve other details about a given item, use a call like GetSellerList or

+				GetItem.&lt;br&gt;

+				&lt;br&gt;

+				&lt;b&gt;Catalog Product Results:&lt;/b&gt; For each eBay catalog product returned

+				(if any), the response includes a brief set of details, such as the minimum and

+				maximum price of listings that have been pre-filled based on that product. You can

+				retrieve more or fewer details about each product by using the ProductDetails

+				field.&lt;br&gt;

+				&lt;br&gt;

+				&lt;b&gt;Histogram Results:&lt;/b&gt; Instead of grouping items by category, the

+				Express search engine groups items into &lt;i&gt;domains&lt;/i&gt;. A domain is a

+				set of items to which Express can apply a common set of search rules. Express

+				supports three kinds of domains: &lt;i&gt;Product types&lt;/i&gt;,

+				&lt;i&gt;aisles&lt;/i&gt;, and &lt;i&gt;departments&lt;/i&gt;, like a typical

+				department store. (The fact that we call these "domains" is not important to

+				buyers and sellers, but it can be helpful to understand the domain relationships

+				when you are working with the API.)&lt;br&gt;

+				&lt;br&gt;

+				Listings with similar properties are classified into product type domains. For

+				example, "DVDs &amp; Movies" is a product type domain. Think of a product type as

+				a type of good or service that can be purchased and as a leaf domain (which cannot

+				be the parent of other domains).&lt;br&gt;

+				&lt;br&gt;

+				&lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt; An Express product type is

+				not the same as an eBay catalog product. Some Express product types are associated

+				with eBay catalog products, but other Express product types are not.&lt;/span&gt;

+				&lt;br&gt;

+				&lt;br&gt;

+				When multiple product types share a common theme, Express groups them into an

+				aisle or a department. For example, the Men's Jeans product type can be grouped

+				with Men's Pants into a Men's Clothing aisle. When multiple aisles share a common

+				theme, Express groups them into departments. For example, the Men's Clothing aisle

+				can be grouped with a Men's Accessories aisle to form an Apparel &amp; Accessories

+				department. If no groups make sense, a product type can stand alone without being

+				grouped. For example, "DVDs &amp; Movies" would not be grouped with other product

+				types like Men's Jeans, so "DVDs &amp; Movies" has no parent aisle or department.

+				(From a user's perspective, this product type is elevated to look like a

+				department, but in the API it is still classified as a product type.) Similarly,

+				an aisle can stand alone without being grouped with other aisles into a

+				department.&lt;br&gt;

+				&lt;br&gt;

+				See &lt;a

+				href="http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=

+				eBay_XML_API&amp;topic=ExpressSearch" target="_blank"&gt;Searching and Browsing

+				eBay Express&lt;/a&gt; for more information about departments, aisles, and product

+				types.

+				&lt;p&gt;

+				This call returns a histogram that shows the number of items and catalog products

+				that were found in each department, aisle, and/or product type that matches your

+				search criteria.&lt;br&gt;

+				&lt;br&gt;

+				The domain names and groupings are subject to change. They are determined by the

+				Express search engine based on the items that are currently listed on Express as

+				well as historical buyer behavior. This means you need to call

+				GetSearchResultsExpress to determine the current domain names and their

+				hierarchical relationships.&lt;br&gt;

+				&lt;br&gt;

+				&lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt; A domain is a search notion

+				only. That is, items are not stored in domains on eBay, and domains are not

+				equivalent to eBay categories (although Express may choose to organize and name

+				some domains to match eBay categories).&lt;/span&gt; &lt;br&gt;

+				&lt;br&gt;

+				&lt;b&gt;Search Tips:&lt;/b&gt;&lt;/p&gt;

+				&lt;ul&gt;

+					&lt;li&gt;Use either Query, ProductReferenceID, or the ExternalProductID fields

+					to search for specific items and/or products. See the descriptions below for

+					information about using these fields. (Only one of these query formats can be

+					used per request.)&lt;/li&gt;

+					&lt;li&gt;Use DepartmentName, AisleName, and/or ProductTypeName to browse or

+					search within a particular domain. You can also specify the value "Express" in

+					DepartmentName to retrieve a complete list of all available department, aisle,

+					and product type names.&lt;/li&gt;

+					&lt;li&gt;Use one or more filters like HighestPrice to refine the

+					search.&lt;/li&gt;

+					&lt;li&gt;Use sort options like ItemSort to control the order in which the

+					results are returned.&lt;/li&gt;

+					&lt;li&gt;Use pagination options like EntriesPerPage to control how many results

+					to return at a time.&lt;/li&gt;

+					&lt;li&gt;Use verbose controls like ItemDetails to specify the data to return

+					within each result.&lt;/li&gt;

+				&lt;/ul&gt;

+				&lt;p&gt;The item results, catalog product results, and histogram results do not

+				provide references to each other. That is, the items don't indicate which domains

+				they were found in, and the histogram doesn't specify which items were counted.

+				However, you can infer these relationships by modifying your search parameters.

+				For example, once you determine which domains match your query, you can call

+				GetSearchResultsExpress again to browse or search each of those domains to find

+				out which items they contain.

+				&lt;/p&gt;

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves brief details about active items that are listed on eBay Express,

+						eBay catalog products that have been used to pre-fill data in these items, and

+						a histogram that shows the distribution of items and catalog products across

+						Express departments, aisles, and/or product types.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Query" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A free-text query that retrieves items, information about eBay catalog

+								products that were used to list the items, and/or applicable domain

+								details. For a quick, targeted search, use keywords that best fit the item

+								you're looking for. You can also search by brand name or descriptive

+								features. The search engine checks all specified keywords against the item

+								title, description, eBay category, Item Specifics, and/or Pre-filled Item

+								Information. (Express does not necessarily check all Item Specifics

+								defined on the item.) The exact combination of fields that are checked for

+								any given set of keywords varies by a number of factors that are not

+								disclosed in this documentation.&lt;br&gt;

+								&lt;br&gt;

+								Specify at least two characters when you use Query. If you specify

+								multiple words, AND logic is used. The keywords can be specified any

+								order. The words "and" and "or" are treated like any other word. Only use

+								"and", "or", or "the" if you are searching for listings containing these

+								words.&lt;br&gt;

+								&lt;br&gt;

+								You can control AND or OR logic by including certain modifiers. Wildcards

+								(e.g., *) are also supported. Be careful when using spaces before or after

+								modifiers and wildcards (+, -, or *). These are the same modifiers that

+								GetSearchResults supports. See "Searching by Keywords" in the eBay Web

+								Services Guide for a list of valid modifiers and examples. Modifiers do

+								not count in the 2-character minimum.

+								&lt;br&gt;

+								&lt;br&gt;

+								Alternatively, you can specify an item ID to retrieve a specific item's

+								Express search details. To search by ISBN or UPC, use

+								ExternalProductIDType and ExternalProductIDValue instead.&lt;br&gt;

+								&lt;br&gt;

+								The Query, ProductReferenceID, and ExternalProductID query formats are

+								mutually exclusive. That is, they cannot be used together in the same

+								request. At least one of Query, ProductReferenceID, ExternalProductIDValue

+								(and Type), SellerID, DepartmentName, AisleName, or ProductTypeName is

+								required.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>350</MaxLength>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExternalProductIDType" type="ns:ExternalProductCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The combination of ExternalProductIDType and ExternalProductIDValue create

+								a query that only retrieves items that were listed with Pre-filled Item

+								Information in categories that support ISBN or UPC codes.

+								ExternalProductIDType identifies whether the search is by ISBN or UPC. If

+								specified, also specify the ISBN or UPC code in

+								ExternalProductIDValue.&lt;br&gt;

+								&lt;br&gt;

+								The Query, ProductReferenceID, and ExternalProductID query formats are

+								mutually exclusive. That is, they cannot be used together in the same

+								request. At least one of Query, ProductReferenceID, ExternalProductIDValue

+								(and Type), SellerID, DepartmentName, AisleName, or ProductTypeName is

+								required.&lt;br&gt;

+								&lt;br&gt;

+								&lt;b&gt;Note:&lt;/b&gt; The ExternalProductID type and value structure is

+								flat to support REST API requests in the future.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExternalProductIDValue" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An ISBN or UPC code (depending on ExternalProductIDType) for the eBay

+								catalog product that you are searching for. Only valid when

+								ExternalProductIDType is specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>15</MaxLength>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductReferenceID" type="xs:long" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The global reference ID for an eBay catalog product. eBay catalog products

+								provide stock information that sellers can use to pre-fill Item Specifics

+								and other listing details. Use this query to retrieve items that were

+								listed with any version of the catalog product.&lt;br&gt;

+								&lt;br&gt;

+								To determine valid reference IDs, call GetSearchResultsExpress without

+								using this value. The IDs that match the query (if any) are returned in

+								ProductArray.Product.ProductReferenceID fields.&lt;br&gt;

+								&lt;br&gt;

+								&lt;b&gt;Note:&lt;/b&gt; This value is not the same as the ProductID used

+								in AddItem and related calls. You cannot use this call or the catalog

+								search calls to determine a relationship between ProductReferenceID and

+								ProductID.&lt;br&gt;

+								&lt;br&gt;

+								The Query, ProductReferenceID, and ExternalProductID query formats are

+								mutually exclusive. That is, they cannot be used together in the same

+								request. At least one of Query, ProductReferenceID, ExternalProductIDValue

+								(and Type), SellerID, DepartmentName, AisleName, or ProductTypeName is

+								required.

+							</xs:documentation>

+							<xs:appinfo>

+								<Min/>

+								<Max/>

+								<Default/>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DepartmentName" type="xs:string" minOccurs="0" maxOccurs="1">

+						<xs:annotation>

+							<xs:documentation>

+								A department is a grouping of aisles and/or product types that share a

+								common theme. This filter limits the search to the specified Express

+								department. If not specified, this filter is ignored by the search

+								engine.&lt;br&gt;

+								&lt;br&gt;

+								You can specify the value "Express" (without quotes) as the department

+								name to retrieve all departments on Express. With this use case, the

+								ItemArray and ProductArray nodes aren't returned. The valid department

+								names are returned in the Histogram.Department.DomainDetails.Name fields.

+								When DepartmentName=Express, you can only specify HistogramSort and/or

+								HistogramDetails. Set HistogramDetail to Fine to also retrieve all aisles

+								and product types. Do not specify ItemDetails or ProductDetails at all in

+								the request. (Setting the values to None will return an error). Also do

+								not specify any other query, pagination, price, or sorting fields in the

+								request.&lt;br&gt;

+								&lt;br&gt;

+								The Query, ProductReferenceID, and ExternalProductID query formats are

+								mutually exclusive. That is, they cannot be used together in the same

+								request. At least one of Query, ProductReferenceID, ExternalProductIDValue

+								(and Type), SellerID, DepartmentName, AisleName, or ProductTypeName is

+								required.&lt;br&gt;

+								&lt;br&gt;

+								Note: The potential max length will be documented in a future release.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AisleName" type="xs:string" minOccurs="0" maxOccurs="1">

+						<xs:annotation>

+							<xs:documentation>

+								An aisle is a grouping of product types that share a common theme. This

+								filter limits the search to the specified Express aisle. If not specified,

+								this filter is ignored by the search engine.&lt;br&gt;

+								&lt;br&gt;

+								See DepartmentName for information about how to retrieve all available

+								department, aisle, and product type names. The valid aisle names are

+								returned in the Histogram.Department.Aisle.DomainDetails.Name

+								fields.&lt;br&gt;

+								&lt;br&gt;

+								At least one of Query, ProductReferenceID, ExternalProductIDValue (and

+								Type), SellerID, DepartmentName, AisleName, or ProductTypeName is required.

+								Optionally, both DepartmentName and AisleName can be specified in the same

+								request. In this case, the search engine treats the combination as a fully

+								qualified aisle name (and it returns an error if the combination is

+								invalid).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductTypeName" type="xs:string" minOccurs="0" maxOccurs="1">

+						<xs:annotation>

+							<xs:documentation>

+								A product type is a type of good or service that can be purchased. This

+								filter limits the search to the specified Express product type. If not

+								specified, this filter is ignored by the search engine.&lt;br&gt;

+								&lt;br&gt;

+								&lt;b&gt;Note:&lt;/b&gt; Express product types are not eBay catalog

+								products. This field does not support eBay catalog product names or

+								IDs.&lt;br&gt;

+								&lt;br&gt;

+								See DepartmentName for information about how to retrieve all available

+								department, aisle, and product type names. The valid product type names

+								are returned in Histogram.Department.Aisle.ProductType.DomainDetails.Name

+								fields.&lt;br&gt;

+								&lt;br&gt;

+								Optionally, DepartmentName and/or AisleName can be specified in the same

+								request with ProductTypeName. In this case, the search engine treats the

+								combination as a fully qualified product type name (and it returns an

+								error if the combination is invalid).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HistogramSort" type="ns:ExpressHistogramSortCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the order of the data in the histogram (if any). Controls the

+								way the histogram data is organized in the response (not the details to

+								return). If not specified, the default sort order is ItemCount.&lt;br&gt;

+								&lt;br&gt;

+								This option has no effect on how item or product results are sorted.

+								Histogram, item, and product results are sorted independently.&lt;br&gt;

+								&lt;br&gt;

+								Note: If you want to sort the results by criteria that eBay has not

+								defined, retrieve the desired histogram data and then sort the results

+								locally in your application.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>ItemCount</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemSort" type="ns:ExpressItemSortCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the order in which listings (if any) are returned in the result

+								set. If not specified, the items are sorted by relevance (as determined by

+								eBay). If you choose to sort by total cost, a PostalCode must also be

+								specified (so that eBay can calculate the shipping cost as part of the

+								total cost for each item).&lt;br&gt;

+								&lt;br&gt;

+								Controls the way the data is organized in the response (not the details to

+								return).&lt;br&gt;

+								&lt;br&gt;

+								This option has no effect on how histogram or product results are sorted.

+								Histogram, item, and product results are sorted independently.&lt;br&gt;

+								&lt;br&gt;

+								Note: If you want to sort the results by criteria that eBay has not

+								defined, retrieve all available pages and then sort the results locally in

+								your application.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>Relevance</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductSort" type="ns:ExpressProductSortCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the order in which Express products are returned in a result

+								set. If not specified, the products are sorted by sales rank (bestselling

+								first).&lt;br&gt;

+								&lt;br&gt;

+								This option has no effect on how histogram or item results are sorted.

+								Histogram, item, and product results are sorted independently.&lt;br&gt;

+								&lt;br&gt;

+								Note: If you want to sort the results by criteria that eBay has not

+								defined, retrieve all available pages and then sort the results locally in

+								your application.&lt;br&gt;

+								&lt;br&gt;

+								Controls the way the data is organized in the response (not the details to

+								return).

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>SalesRank</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HighestPrice" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A filter that limits the results to items with a SellingStatus.CurrentPrice

+								value lower than this value. For example, if you specify 10.01, the results

+								will include items with a CurrentPrice of 10.00 or lower. Use without

+								LowestPrice to specify a maximum price, or use with LowestPrice to define a

+								price range that bounds the results. Must be higher than LowestPrice if both

+								are specified. If not specified, no maximum price filter is applied to the

+								query.&lt;br&gt;

+								&lt;br&gt;

+								You can specify any double value, but in practice the highest price of any

+								item on Express is USD 10000 for Express US and (in the future) EUR 10000

+								for Express Germany. If you specify a value of 0.0 or lower, this filter is

+								ignored. See "Data Types" in the eBay Web Services Guide for information

+								about specifying double values.&lt;br&gt;

+								&lt;br&gt;

+								Does not control the order in which items are returned. (To sort by highest

+								total price, use ItemSort.)

+							</xs:documentation>

+							<xs:appinfo>

+								<Min/>

+								<Max/>

+								<Default/>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LowestPrice" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A filter that limits the results to items with a

+								SellingStatus.CurrentPrice value equal to or higher than this value. For

+								example, if you specify 6.00, the results will include items with a

+								CurrentPrice of 6.00 or higher. If specified, HighestPrice must also be

+								specified; otherwise, the lowest price filter is ignored. Must be lower

+								than HighestPrice. If not specified or if the value is less than 0.0, no

+								minimum price filter is applied to the query.&lt;br&gt;

+								&lt;br&gt;

+								You can specify any double value, but in practice the highest price of any

+								item on Express is USD 10000 for Express US and (in the future) EUR 10000

+								for Express Germany. See "Data Types" in the eBay Web Services Guide for

+								information about specifying double values .&lt;br&gt;

+								&lt;br&gt;

+								Does not control the order in which items are returned. (To sort by lowest

+								total price, use ItemSort.)

+							</xs:documentation>

+							<xs:appinfo>

+								<Min/>

+								<Max/>

+								<Default/>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Condition" type="ns:ConditionSelectionCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A filter that limits the results by the item condition. If not specified,

+								the default is New. If the item is listed in a category that does not

+								normally require the condition to be specified (like Event Tickets), the

+								item is returned regardless of this condition setting.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>New</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerID" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A filter that limits the search to a particular seller's listings that are

+								included on Express. Retrieves all of the seller's eligible items, without

+								consolidating (deduping) similar items into single representative results.

+								If specified, you can only search within one seller's listings per call.

+								(It is not possible to exclude a particular seller's listings from the

+								search.) If not specified, the engine searches across all listings on

+								Express. If the seller has no items listed on Express, no results are

+								returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PostalCode" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Postal code of the buyer. For the US site, this is a 5-digit zip code.

+								(Other sites may support longer alphanumeric values in the future.) The

+								postal code enables Express to calculate the item's default shipping cost

+								based on the buyer's postal code, the postal code defined on the item, and

+								the cost of the default shipping service that the seller specified in the

+								listing. The default shipping cost is returned in the

+								Item.ShippingDetails.DefaultShippingCost field. If not specified, items

+								with calculated shipping will return an

+								Item.ShippingDetails.ShippingRateErrorMessage string that indicates that a

+								postal code is needed to calculate shipping.&lt;br&gt;

+								&lt;br&gt;

+								Required if ItemSort is set to LowestTotalCost or HighestTotalCost

+								(because the total cost calculation depends on the shipping cost

+								calculation).&lt;br&gt;

+								&lt;br&gt;

+								This is not a query or filter, so it has no effect on which items or

+								products are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>5</MaxLength>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HistogramDetails" type="ns:ExpressDetailLevelCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Controls the amount of statistical data to return in the response. If not

+								specified, the default is Coarse.&lt;br&gt;

+								&lt;br&gt;

+								This setting is not a filter that limits the search; it only configures

+								how much detail to retrieve in the resulting histogram. This setting has

+								no effect on the product or item details.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>Coarse</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductDetails" type="ns:ExpressDetailLevelCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Selects the set of fields to retrieve for each catalog product that

+								matches the query. If not specified, the default is Coarse.&lt;br&gt;

+								&lt;br&gt;

+								This setting is not a filter that limits the search; it only configures

+								which fields to retrieve for each product found. This setting has no

+								effect on the histogram or item details.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>Coarse</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemDetails" type="ns:ExpressDetailLevelCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Selects the set of fields to retrieve for each item that matches the

+								query. If not specified, the default is Coarse.&lt;br&gt;

+								&lt;br&gt;

+								This setting is not a filter that limits the search; it only configures

+								which fields to retrieve for each item found. This setting has no effect

+								on the histogram or product details.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>Coarse</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EntriesPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The maximum number of entries to return in the ProductArray or ItemArray.

+								That is, if you specify 10, then up to 10 products and up to 10 items are

+								returned in the current call's response.&lt;br&gt;

+								&lt;br&gt;

+								If the number of entries found is less than the value specified in

+								EntriesPerPage, then that number of entries is returned instead. For

+								example, if you specify 10, Express might only return 4 products and 9

+								items (if no more matches are found). If not specified, the default is 15.

+							</xs:documentation>

+							<xs:appinfo>

+								<Min>1</Min>

+								<Max>200</Max>

+								<Default>15</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the number of the page of data to return in the current call. If

+								not specified, the default is 1 (the first page).

+							</xs:documentation>

+							<xs:appinfo>

+								<Min>1</Min>

+								<Max/>

+								<Default>1</Default>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSearchResultsExpress -->

+	<xs:element name="GetSearchResultsExpressResponse" type="ns:GetSearchResultsExpressResponseType"/>

+	<xs:complexType name="GetSearchResultsExpressResponseType">

+		<xs:annotation>

+			<xs:documentation>

+The GetSearchResultsExpress response contains the listings that match the query or ID

+specified in the request,

+related eBay catalog product information, and a histogram showing the the quantity (count)

+of matching items

+in Express departments, aisles, and product types.

+The results may be limited by filters that were specified in the request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Histogram" type="ns:DomainHistogramType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Indicates the quantity of items and catalog products that fall into

+							departments, aisles,

+							and/or product types that match the criteria in the request.

+							The sort order is controlled by the value of HistogramSort in the

+							request.

+							Only returned when matching data is found and HistogramDetails is

+							Coarse (the default) or Fine.&lt;br&gt;

+							&lt;br&gt;

+							When HistogramDetails==Coarse and no DepartmentName, AisleName, or

+							ProductTypeName is specified in the request, Express only returns

+							histogram details for departments. In this particular case, Express

+							returns no histogram details when no departments match the request.

+							This could occur when Express only finds matching results in

+							stand-alone product types or stand-alone aisles (because they aren't

+							grouped into departments).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemArray" type="ns:ItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Contains a list of items on Express that match all the criteria

+							specified in the request.

+							The sort order is controlled by the value of ItemSort in the request.

+							Only returned when matching data is found and ItemDetails is Coarse

+							(the default) or Fine.&lt;br&gt;

+							&lt;br&gt;

+							If the same seller has listed multiple items with the same title and

+							costs, only one of

+							those items is returned by default. This is treated as a consolidated

+							(deduped) search result item

+							that represents the seller's other, identical items.

+							If you want to retrieve all duplicates for an item, pass the seller's

+							user ID in the SellerID field

+							in the request. Use the results to identify items with duplicate

+							titles and costs.&lt;br&gt;

+							&lt;br&gt;

+							Items can belong to multiple departments, aisles, or product types at

+							any given time,

+							and this information is not stored or returned in the item data. To

+							determine which items

+							are currently available in a given domain, specify the

+							DepartmentName, AisleName, or ProductTypeName

+							in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProductArray" type="ns:ProductArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Contains a list of eBay catalog products have been used to pre-fill

+							listings

+							that match the criteria specified in the request.

+							The sort order is controlled by the value of ProductSort in the

+							request.

+							Only returned when matching data is found and ProductDetails is

+							Coarse (the default) or Fine.

+							To determine which products are currently available in a given

+							domain,

+							specify the DepartmentName, AisleName, or ProductTypeName in the

+							request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EntriesPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the number of item and product results per page that you

+								requested.

+								To determine how many items or products were actually returned,

+								count the number of Item nodes in ItemArray (if any) and the

+								number of

+								Product nodes in ProductArray (if any).

+							</xs:documentation>

+							<xs:appinfo>

+								<Min>1</Min>

+								<Max>200</Max>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                  Indicates the page of data returned by the current call.

+							</xs:documentation>

+							<xs:appinfo>

+								<Min>1</Min>

+								<Max/>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreEntries" type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+								If true, there are additional item and/or product results (on

+								higher-numbered pages)

+								that match the query.

+								To retrieve them, call GetSearchResultsExpress again

+								and increment the page number or specify a higher value for

+								EntriesPerPage in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSearchResultsExpress</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+

+	<!--  Call: GetSellerEvents -->

+	<xs:element name="GetSellerEventsRequest" type="ns:GetSellerEventsRequestType"/>

+	<xs:complexType name="GetSellerEventsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the inputs that control the items that are returned for seller events.

+				This includes time-based filtering on the start time, end time, and/or modification

+				time of the item listings.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+					Retrieves price changes, item revisions, description revisions,

+					and other changes that have occurred within the last 48 hours

+					related to a seller's eBay listings.

+					Input is the user ID for the seller whose events are returned.

+					GetSellerEvents returns zero, one, or multiple item events.

+					The result set is filtered to include only events for those items

+					that start, end, or are modified within a span of time delineated by input values. 

+					</Summary>

+				</Overview>

+				<TempInfo>dl</TempInfo>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="UserID" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								eBay user ID for the seller whose events are to be returned.

+								If not specified, retrieves events for the user identified by

+								the authentication token passed in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the earliest (oldest) date to use in a date range filter based

+								on item start time. Must be specified if StartTimeTo is specified. Either

+								the StartTime, EndTime, or ModTime filter must be specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the latest (most recent) date to use in a date range filter

+								based on item start time. Must be specified if StartTimeFrom is specified.

+								Either the StartTime, EndTime, or ModTime filter must be specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the earliest (oldest) date to use in a date range filter based

+								on item end time. Must be specified if EndTimeTo is specified. Either the

+								StartTime, EndTime, or ModTime filter must be specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the latest (most recent) date to use in a date range filter

+								based on item end time. Must be specified if EndTimeFrom is specified.

+								Either the StartTime, EndTime, or ModTime filter must be specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the earliest (oldest) date to use in a date range filter based

+								on the time an item's record was modified. Must be specified if ModTimeTo

+								is specified. Either the StartTime, EndTime, or ModTime filter must be

+								specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the latest (most recent) date to use in a date range filter

+								based on the time an item's record was modified. Must be specified if

+								ModTimeFrom is specified. Either the StartTime, EndTime, or ModTime filter

+								must be specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="NewItemFilter" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies that only new items are to be returned. NewItemFilter is an

+								optional input.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeWatchCount" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether to include WatchCount in Item nodes returned. WatchCount

+								is the number of watches buyers have placed on the item from their My eBay

+								accounts.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSellerEvents -->

+	<xs:element name="GetSellerEventsResponse" type="ns:GetSellerEventsResponseType"/>

+	<xs:complexType name="GetSellerEventsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+          Contains the items returned by the call. Items for which a seller event has

+          occurred (and that meet any filters specified as input) are returned in an

+          ItemArrayType object, within which are zero, one, or multiple ItemType objects.

+          Each ItemType object contains the detail data for one item listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="TimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                      Indicates the latest (most recent) date for any date-based filtering specified as

+                      input. Specifically, this field contains the value you specified in the StartTimeTo, EndTimeTo, or ModTimeTo filter, if you used a time filter in the request. If no time filter was specified, TimeTo returns the current time.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemArray" type="ns:ItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+                      Collection of Item objects, each of which represents an item listing

+                      that incurred the type of seller event change specified in the call's

+                      inputs. Returns empty if the seller has no item events within the 

+                      time window indicated in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerEvents</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSellerList -->

+	<xs:element name="GetSellerListRequest" type="ns:GetSellerListRequestType"/>

+	<xs:complexType name="GetSellerListRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests a list of items a seller has listed for auction. Use no

+				DetailLevel to return brief item information (ItemID, StartTime,

+				and EndTime only). Use the DetailLevel ReturnAll to return all

+				information on the item, including Item.Description. Use

+				ItemReturnDescription to return a shorter item description (see

+				the eBay Web Services Guide for details).

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves a list of the items a specified seller has

+						listed on eBay. Input is the ID for the seller whose

+						items are returned. Returns an array of

+						zero, one, or multiple items for that seller. Inputs are

+						provided to filter the returned items to just those that

+						end within a specified date range or those items for

+						which the listings start within a date range. A special

+						set of inputs is provided to retrieve the list of items

+						in smaller, more manageable chunks, or pages.

+					</Summary>

+				</Overview>

+				<TempInfo>dl</TempInfo>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="UserID" type="ns:UserIDType" minOccurs="0" maxOccurs="1">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the seller whose items will be returned. UserID is an optional input.

+								If not specified, the requesting user is the seller whose items are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MotorsDealerUsers" type="ns:UserIDArrayType" minOccurs="0" maxOccurs="1">

+						<xs:annotation>

+							<xs:documentation>

+								Reserved for future use.

+							</xs:documentation>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the earliest (oldest) date to use in a date range filter based on item end time.

+								Specify either the end time range or start time range filter in every request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the latest (most recent) date to use in a date range filter based on item end time.

+								Must be specified if EndTimeFrom is specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Sort" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the order in which returned items are sorted (based on the end dates of the

+								item listings). Valid values:&lt;br&gt;

+									0 = No sorting&lt;br&gt;

+									1 = Sort in descending order&lt;br&gt;

+									2 = Sort in ascending order&lt;br&gt;

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the earliest (oldest) date to use in a date range filter based on item

+								start time. Specify either the end time range or start time range filter in every request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the latest (most recent) date to use in a date range filter based on item

+								start time. Must be specified if StartTimeFrom is specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the data controlling the pagination of the returned values: how many items

+								are returned per page of data (per call) and the number of the page to return with

+								the current call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="GranularityLevel" type="ns:GranularityLevelCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the subset of item and user fields to return.

+								See GetSellerList in the eBay Web Services guide for a list

+								of the fields that are returned for each granularity level.

+								For GetSellerList, use DetailLevel or GranularityLevel in a request, but not both.

+								For GetSellerList, if GranularityLevel is specified, DetailLevel is ignored.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SKUArray" type="ns:SKUArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies a set of seller SKUs to use as a filter. Only items with the specified SKUs are

+								returned. Do not specify this tag if you do not want to filter by SKU. Corresponds to the SKU property

+								that is part of ItemType and that can be provided when, for example, you use the AddItem call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeWatchCount" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether to include WatchCount in Item nodes returned.

+								WatchCount is only returned with DetailLevel ReturnAll.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSellerList -->

+	<xs:element name="GetSellerListResponse" type="ns:GetSellerListResponseType"/>

+	<xs:complexType name="GetSellerListResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains a list of the items listed by the seller specified as input. The list of

+				items is returned in an ItemArrayType object, in which are returned zero, one, or

+				multiple ItemType objects. Each ItemType object contains the detail data for one

+				item listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains information regarding the pagination of data (if pagination is 

+								used), including total number of pages and total number of entries.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreItems" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, there are more items yet to be retrieved. Additional 

+								GetSellerList calls with higher page numbers or more items per page must 

+								be made to retrieve these items. Not returned if no items match the 

+								request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemArray" type="ns:ItemArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the list of the seller's items, one ItemType object per item.

+								Returns empty if no items are available that match the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemsPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the number of items that are being returned per page of data 

+								(i.e., per call). Will be the same as the value specified in the 

+								Pagination.EntriesPerPage input. Only returned if items are returned. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates which page of data was just returned. Will be the same as the 

+								value specified in the Pagination.PageNumber input. (If the input is 

+								higher than the total number of pages, the call fails with an error.)

+								Only returned if items are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReturnedItemCountActual" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the total number of items returned (i.e., the number of 

+								ItemType objects in ItemArray). 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Seller" type="ns:UserType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the seller whose items are returned. The seller is the eBay 

+								member whose UserID was passed in the request. If UserID was not 

+								specified, the seller is the user who made the request (identified by 

+								eBayAuthToken).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerList</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSellerPayments -->

+	<xs:element name="GetSellerPaymentsRequest" type="ns:GetSellerPaymentsRequestType"/>

+	<xs:complexType name="GetSellerPaymentsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves a summary of pending or paid payments that Half.com created for the

+				seller identified by the authentication token in the request. Only retrieves

+				payments that occurred within a particular pay period. Each payment is for one

+				transaction for one item in one order. An order can contain transactions for

+				multiple items from multiple sellers, but this call only retrieves payments that

+				are relevant to one seller. The financial value of a payment is typically based on

+				an amount that a buyer paid to Half.com for a transaction, with adjustments for

+				shipping costs and Half.com's commission. For most sellers, each month contains

+				two pay periods: One from the 1st to the 15th of the month, and one from the 16th

+				to the last day of the month. Sellers can refer to their account information on

+				the Half.com site to determine their pay periods. (You cannot retrieve a seller's

+				pay periods by using eBay Web Services.) When a buyer makes a purchase and an

+				order is created, Half.com creates a payment for the seller and marks it as

+				Pending in the seller's Half.com account. Within a certain number of days after

+				the pay period ends, Half.com settles payments for that period and marks each

+				completed payment as Paid. See the Half.com Web site online help for more

+				information about how payments are managed.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves a summary of pending or paid payments that Half.com

+						created for the seller identified by the authentication token

+						in the request.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="PaymentStatus" type="ns:RCSPaymentStatusCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Filter to retrieve only items with the specified payment status (Paid or

+								Pending). "Pending payments" are payments that Half.com has created but

+								that have not yet been sent to the seller's financial institution. Pending

+								payments are typically available once a buyer pays for an order. As

+								Half.com processes payments by using periodic batch jobs, the

+								GetSellerPayments response might not include a transaction's payment for

+								up to 20 minutes after the buyer has paid. You can retrieve pending

+								payments for the current pay period. Pending payments that have not been

+								settled yet can also be retrieved for previous pay periods. "Paid

+								payments" are payments that Half.com processed during previous pay

+								periods. Paid payments might not appear in the seller's financial

+								institution account balance until a certain number of days after the

+								current pay period ends (see the Half.com online help for details). You

+								can only retrieve paid payments for one previous pay period at a time.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Time range filter that retrieves Half.com payments that were created within

+								a single pay period. Sellers can refer to the Half.com site to determine

+								their pay periods. PaymentTimeFrom is the earliest (oldest) time and

+								PaymentTimeTo is the latest (most recent) time in the range. Half.com pay

+								periods start and end at midnight Pacific time, but the time values are

+								stored in the database in GMT (not Pacific time). See "Time Values" in the

+								eBay Web Services guide for information about converting between GMT and

+								Pacific time. &lt;br&gt;

+								&lt;br&gt;

+								If you specify a PaymentStatus of Pending, add a buffer of one hour (or one

+								day) to both ends of the time range to retrieve more data than you need, and

+								then filter the results on the client side as needed. If any pending

+								payments match the request, the response may include all payments since the

+								beginning of the period. &lt;br&gt;

+								&lt;br&gt;

+								If you specify a PaymentStatus of Paid, the time range must contain one

+								full pay period. That is, PaymentTimeFrom must be earlier or equal the

+								start time of the pay period, and PaymentTimeTo must be later than or

+								equal to the end time of the pay period. Otherwise, no paid payments are

+								returned. For example, if the pay period starts on 2005-09-16 and ends on

+								2005-09-30, you could specify an earlier PaymentTimeFrom value of

+								2005-09-16T00:00:00.000Z and a later PaymentTimeTo value of

+								2005-10-01T12:00:00.000Z. &lt;br&gt;

+								&lt;br&gt;

+								If you specify a time range that covers two pay periods, only the payments

+								from the most recent pay period are returned. The earliest time you can

+								specify is 18 months ago.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Time range filter that retrieves Half.com payments for a single pay

+								period. See the description of PaymentTimeTo for details about using this

+								time range filter. For paid payments, this value should be equal to or

+								later than the end of the last day of the pay period, where the time is

+								converted to GMT. For example, if the period ends on 2005-09-30, you could

+								specify 2005-10-01T09:00:00.000Z, which is later than the end of the last

+								day.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If many payments are available, you may need to call GetSellerPayments

+								multiple times to retrieve all the data. Each result set is returned as a

+								page of entries. Use this Pagination information to indicate the maximum

+								number of entries to retrieve per page (i.e., per call), the page number

+								to retrieve, and other data.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSellerPayments -->

+	<xs:element name="GetSellerPaymentsResponse" type="ns:GetSellerPaymentsResponseType"/>

+	<xs:complexType name="GetSellerPaymentsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns a summary of pending or paid payments that Half.com created for the seller

+				identified by the authentication token in the request. Only returns payments that

+				occurred within a particular pay period. Each payment is for one transaction for

+				one item in one order. An order can contain transactions for multiple items from

+				multiple sellers, but this call only retrieves payments that are relevant to one

+				seller. Payments are only issued for items and transactions that the seller has

+				confirmed (see the Half.com online help for details). The financial value of a

+				payment is typically based on an amount that a buyer paid to Half.com for a

+				transaction, plus the shipping cost the buyer paid to Half.com for the item, minus

+				Half.com's commission. For most sellers, each month contains two pay periods: One

+				from the 1st to the 15th of the month, and one from the 16th to the last day of

+				the month. Payments are submitted to the seller's financial institution a certain

+				number of days after the current pay period ends (see the Half.com online help for

+				details).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Contains information regarding the pagination of data (if pagination is used),

+							including total number of pages and total number of entries.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMorePayments" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, there are more payments yet to be retrieved. Additional

+								GetSellerPayments calls with higher page numbers or more entries per page

+								must be made to retrieve these payments. If false, no more payments are

+								available or no payments match the request (based on the payment status

+								and time filter).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerPayment" type="ns:SellerPaymentType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Information about a single payment that matches the criteria in the

+								request. A payment is between Half.com and a seller. Each payment is for

+								one transaction for one item in one order. An order can contain

+								transactions for multiple items from multiple sellers, but this call only

+								retrieves payments that are relevant to one seller. The financial value of

+								a payment is typically based on an amount that a buyer paid to Half.com

+								for a transaction, plus the shipping cost the buyer paid for the item,

+								minus Half.com's commission. Payments can also describe refunds that the

+								seller has issued. Multiple SellerPayment entries can be returned per page

+								of results. Typically, they are returned in reverse chronological order

+								(most recent PaidTime first). Only returned if payments exist that match

+								the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentsPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the number of payments that can be returned per page of data

+								(i.e., per call). This is the same as the value specified in the

+								Pagination.EntriesPerPage input (or the default value, if EntriesPerPage

+								was not specified). This is not necessarily the actual number of payments

+								returned per page (see ReturnedPaymentCountActual).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates which page of data holds the current result set. Will be the

+								same as the value specified in the Pagination.PageNumber input. (If the

+								input is higher than the total number of pages, the call fails with an

+								error.) If no payments are returned, the value is 0. If payments are

+								returned, the first page number is 1.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReturnedPaymentCountActual" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the total number of payments returned (i.e., the number of

+								SellerPayment entries returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerPayments</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSellerTransactions -->

+	<xs:element name="GetSellerTransactionsRequest" type="ns:GetSellerTransactionsRequestType"/>

+	<xs:complexType name="GetSellerTransactionsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves a report containing information you can use to process the requesting

+				seller's transactions. A transaction contains the information about the sale of

+				one or more items by one buyer from a single listing. As some listings can return

+				large numbers of transactions, use the supplied time filters to retrieve only

+				those transactions whose status has been modified between two dates. Optionally,

+				also configure the request to retrieve one page of data at a time (where each page

+				contains a more manageable number of transactions). The user making the request

+				can only retrieve their own transactions. That is, a user cannot retrieve all the

+				transactions for another seller. If the user needs to retrieve transactions for

+				another seller's listing, use GetItemTransactions instead.

+				&lt;br&gt;&lt;br&gt;

+				In general, only fields that are necessary for processing transactions are

+				returned. For example, reserve price information would not be returned because the

+				data is not relevant once the agreement to purchase the item has occurred. Also,

+				fields that are not logically applicable are not returned. For example,

+				TransactionArray.Transaction.Buyer.SellerInfo is not returned because the buyer is

+				not acting in the role of a seller for the transaction.

+				&lt;br&gt;&lt;br&gt;

+				As the SellerType object is returned at the root level of the response, and as all

+				transactions returned from this call are for the same seller, each individual

+				Transaction.Item object does not return a SellerType object.

+				&lt;br&gt;&lt;br&gt;

+				Some fields that are defined on Transaction.Item (e.g.,

+				Item.SellingStatus.QuantitySold) sound similar to fields defined on Transaction

+				(e.g., QuantityPurchased). The difference is that the item fields are applicable

+				across the entire listing; whereas the transaction fields are only applicable for

+				the particular transaction identified. For example, suppose a listing has 20 items

+				and 10 of them have sold. This would cause the

+				Transaction.Item.SellingStatus.QuantitySold value to be set to 10. If one

+				transaction returned from GetSellerTransactionsCall represents one buyer's

+				purchase of 3 of those items, the Transaction.QuantityPurchased value would be set

+				3 for that particular transaction.

+				&lt;br&gt;&lt;br&gt;

+				Notes:

+				&lt;br&gt;

+				- In the TransactionArray.Transaction.ShippingDetails object, only one of

+				FlatShippingRate or CalculatedRate will be returned, depending on which one the

+				seller set.

+				&lt;br&gt;

+				- In the Seller and Transaction.Item.Buyer objects, email and address data is only

+				returned under certain conditions.

+				&lt;br&gt;

+				- The TransactionArray.Transaction.Item.ListingDetails.RelistItemID object is only

+				returned if the item was re-listed.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves data for transactions created by the sale of

+						items that were listed by the user making the request.

+						GetSellerTransactions returns zero, one, or multiple

+						transactions (depending on the sale of items from the

+						listing and the listing type). Input values allow the

+						result set to contain just those transactions created between two

+						specified dates.

+						The return data contains information you can use to

+						process transactions.

+					</Summary>

+				</Overview>

+				<TempInfo>dl</TempInfo>

+				<SeeLink>

+					<Title>Email and Address Privacy Policy</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=EmailPrivacyPolicy</URL>

+					<For>the conditions under which buyer and seller email and address are returned</For>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ModTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the earliest (oldest) date to use in a date range filter based

+								on the time a transaction's status was modified. Filters out transactions

+								whose status was last modified before this date. The date range between

+								ModTimeFrom to ModTimeTo cannot be greater than 30 days.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModTimeTo" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Describes the latest (most recent) date to use in a date range filter based on the

+								time a transaction's status was modified. Filters out transactions whose status

+								was last modified after this date. The date range between ModTimeFrom to ModTimeTo

+								cannot be greater than 30 days. It is considered a best practice to always pass

+								the current date-time, to ensure that no data is missed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements control pagination of the output. Use its EntriesPerPage

+								property to control the number of transactions to return per call and its

+								PageNumber property to specify the page of data to return.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeFinalValueFee" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether to include final value fees in the response.

+								For most listing types, the fee is returned in Transaction.FinalValueFee.

+								For Dutch auctions that end with bids (not Buy It Now purchases), the fee

+								is returned in Item.SellingStatus.FinalValueFee.

+								The Final Value Fee for FixedPriceItem, StoresFixedPrice, and Buy It Now

+								Dutch listing types is returned on a transaction by transaction basis.

+								For all other listing types, including Chinese and Dutch (no Buy It Now

+								purchases), the Final Value Fee is returned when the listing status is

+								Completed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="IncludeContainingOrder" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								For future use.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SKUArray" type="ns:SKUArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies a set of seller SKUs to use as a filter. Only items with the

+								specified SKUs are returned. Do not specify this tag if you do not want to

+								filter by SKU. Corresponds to the SKU property that is part of ItemType

+								and that can be provided when, for example, you use the AddItem call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSellerTransactions -->

+	<xs:element name="GetSellerTransactionsResponse" type="ns:GetSellerTransactionsResponseType"/>

+	<xs:complexType name="GetSellerTransactionsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns an array of transaction data for the seller specified in the request.

+				The results can be used to create a report of data that is commonly

+				necessary for end-of-auction processing.

+				Zero, one, or many Transaction objects can be returned in the array.

+				The set of transactions returned is limited to those that were modified between

+				the times specified in the request's ModTimeFrom and ModTimeTo filters.

+				The transactions returned are sorted by Transaction.Status.LastTimeModified,

+				ascending order (that is, transactions that more recently were modified are returned last).

+				Also returns information about the seller whose transactions were requested.

+				If pagination filters were specified in the request, returns meta-data describing

+				the effects of those filters on the current response and the estimated effects if

+				the same filters are used in subsequent calls.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the total number of pages (TotalNumberOfPages) and the total number

+								of entries (TotalNumberOfEntries) that could be returned given repeated calls

+								that use the same selection criteria as the call that returned this response.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreTransactions" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether there are additional transactions to retrieve.

+								That is, indicates whether more pages of data are available to be

+								returned, given the filters that were specified in the request.

+								Returns false for the last page of data.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionsPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Number of transactions returned per page (per call). May be a higher value

+								than ReturnedTransactionCountActual if the page returned is the last page

+								and more than one page of data exists.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Page number for the page of transactions the response returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ReturnedTransactionCountActual" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Number of transactions retrieved in the current page of results just returned.

+								May be a lower value than TransactionsPerPage if the page returned is the last

+								page and more than one page of data exists.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Seller" type="ns:UserType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains information about the seller whose transactions are being returned.

+								See the reference guide for information about the fields of the Seller object

+								that are returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionArray" type="ns:TransactionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								List of Transaction objects representing the seller's recent sales.

+								Each Transaction object contains the data for one purchase

+								(of one or more items in the same listing).

+								See the reference guide for more information about the fields that are returned

+								for each transaction.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PayPalPreferred" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether the seller has the preference enabled that shows that the seller

+								prefers PayPal as the method of payment for an item. This preference is indicated on

+								an item's View Item page and is intended to influence a buyer to use PayPal

+								to pay for the item.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSellerTransactions</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>none, ReturnAll, ItemReturnDescription</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStore -->

+	<xs:element name="GetStoreRequest" type="ns:GetStoreRequestType"/>

+	<xs:complexType name="GetStoreRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests data about a seller's eBay store. The caller must be the owner of an

+				eBay store. The return value from GetStoreResponse is a StoreType, which contains

+				the store's configuration, including the store name, URL, subscription level, and

+				other data. You can set CategoryStructureOnly to True to retrieve information

+				about the category hierarchy of the store only.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests data about a seller's eBay store.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategoryStructureOnly" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								 If this is set to True, only the category structure of the store is

+								 returned. If this is not specified or set to False, the complete store

+								 configuration is returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStore</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RootCategoryID" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the category ID for the topmost category to return (along with

+								the subcategories under it, the value of the LevelLimit property

+								determining how deep). This tag is optional. If RootCategoryID is not

+								specified, then the category tree starting at that root Category is

+								returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStore</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LevelLimit" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								 Specifies the limit for the number of levels of the category hierarchy

+								 to return, where the given root category is level 1 and its children are

+								 level 2. Only categories at or above the level specified are returned.

+								 This tag is optional. If LevelLimit is not set, the complete category

+								 hierarchy is returned. Stores support category hierarchies up to 3

+								 levels only.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStore</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStore -->

+	<xs:element name="GetStoreResponse" type="ns:GetStoreResponseType"/>

+	<xs:complexType name="GetStoreResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the data describing a seller's eBay store, including name, description,

+				URL, and other information. The caller making the request must be the owner

+				of an eBay store. If the authenticated caller does not have an eBay store, the

+				response is an error. A successful response contains either the complete store

+				configuration or information about the category hierarchy for the store only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Store" type="ns:StoreType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The data describing the store configuration.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStore</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStoreCategoryUpdateStatus -->

+	<xs:element name="GetStoreCategoryUpdateStatusRequest" type="ns:GetStoreCategoryUpdateStatusRequestType"/>

+	<xs:complexType name="GetStoreCategoryUpdateStatusRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the status of the processing progress for category structure changes

+				specified with a SetStoreCategories request. Use this call to retrieve status

+				when the SetStoreCategories call is being processed asynchronously.

+				SetStoreCategories will be processed asynchronously when many listings are

+				affected by the category structure changes.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns the status of the processing progress for category

+						structure changes specified with a SetStoreCategories request.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="TaskID" type="xs:long" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The task ID returned by the SetStoreCategories call. If the

+								SetStoreCategories call was processed asynchronously, the TaskID will be

+								a positive number, otherwise the TaskID will be 0.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreCategoryUpdateStatus</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStoreCategoryUpdateStatus -->

+	<xs:element name="GetStoreCategoryUpdateStatusResponse" type="ns:GetStoreCategoryUpdateStatusResponseType"/>

+	<xs:complexType name="GetStoreCategoryUpdateStatusResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the store category structure update status, when a prior 

+				SetStoreCategories call was processed asynchronously. If a SetStoreCategories 

+				request affects many listings, then the category structure changes will be 

+				processed asynchronously. If not many listings are affected by category structure 

+				changes, the status is returned in the SetStoreCategories response.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Status" type="ns:TaskStatusCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The status (Pending, InProgress, Complete, or Failed) of an update to the 

+								store category structure. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreCategoryUpdateStatus</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStoreCustomPage -->

+	<xs:element name="GetStoreCustomPageRequest" type="ns:GetStoreCustomPageRequestType"/>

+	<xs:complexType name="GetStoreCustomPageRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the custom page or pages for the user's Store.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the custom page or pages for the user's Store.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="PageID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If a PageID is specified, then that page is returned, and

+								the returned page contains the page Content.

+								If no PageID is specified, then all pages are returned, without

+								the page Content.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreCustomPage</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStoreCustomPage -->

+	<xs:element name="GetStoreCustomPageResponse" type="ns:GetStoreCustomPageResponseType"/>

+	<xs:complexType name="GetStoreCustomPageResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the custom page or pages for the user's Store.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="CustomPageArray" type="ns:StoreCustomPageArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The custom page or custom pages.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreCustomPage</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>					

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStoreOptions -->

+	<xs:element name="GetStoreOptionsRequest" type="ns:GetStoreOptionsRequestType"/>

+	<xs:complexType name="GetStoreOptionsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the current list of Store configuration options.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the current list of Store configuration options.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStoreOptions -->

+	<xs:element name="GetStoreOptionsResponse" type="ns:GetStoreOptionsResponseType"/>

+	<xs:complexType name="GetStoreOptionsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the current list of options for Store configurations.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="BasicThemeArray" type="ns:StoreThemeArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The current set of basic themes. Each basic theme definition

+								specifies a valid color scheme for the theme.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreOptions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AdvancedThemeArray" type="ns:StoreThemeArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The current set of advances themes. Unlike basic themes, you

+								can use any color	scheme with an advanced theme. These themes 

+								are suitable for more advanced customization.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreOptions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="LogoArray" type="ns:StoreLogoArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The current set of Store logos. These logos are used in the Store header.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreOptions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SubscriptionArray" type="ns:StoreSubscriptionArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The current set of eBay Store subscription tiers and corresponding 

+								subscription prices.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreOptions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MaxCategories" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The maximum number of categories in this store.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreOptions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MaxCategoryLevels" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The maximum number of category levels in this store.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStoreOptions</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStorePreferences -->

+	<xs:element name="GetStorePreferencesRequest" type="ns:GetStorePreferencesRequestType"/>

+	<xs:complexType name="GetStorePreferencesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves a user's Store preferences.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves a user's Store preferences.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetStorePreferences -->

+	<xs:element name="GetStorePreferencesResponse" type="ns:GetStorePreferencesResponseType"/>

+	<xs:complexType name="GetStorePreferencesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the Store preferences retrieved for a user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="StorePreferences" type="ns:StorePreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The user's Store preferences.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetStorePreferences</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSuggestedCategories -->

+	<xs:element name="GetSuggestedCategoriesRequest" type="ns:GetSuggestedCategoriesRequestType"/>

+	<xs:complexType name="GetSuggestedCategoriesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests a list of up to 10 categories with

+				the highest percentage of listings whose titles or descriptions

+				contain the keywords you specify.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests a list of up to 10 categories with

+						the highest percentage of listings whose titles or descriptions

+						contain the keywords you specify.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Query" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the search string, consisting of one or

+								more words to search for in the listing title.

+								The words "and" and "or" are treated like any other

+								word.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>350 (characters)</MaxLength>

+								<CallInfo>

+									<CallName>GetSuggestedCategories</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetSuggestedCategories -->

+	<xs:element name="GetSuggestedCategoriesResponse" type="ns:GetSuggestedCategoriesResponseType"/>

+	<xs:complexType name="GetSuggestedCategoriesResponseType">

+	  <xs:annotation>

+	    <xs:documentation>

+				Returns a list of categories with the highest number 

+				of listings whose titles or descriptions contain the keywords 

+				specified in a GetSuggestedCategoriesRequest.

+	    </xs:documentation>

+	  </xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="SuggestedCategoryArray" type="ns:SuggestedCategoryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Contains the categories that contain listings

+							that match the query string in the request. The array

+							can have up to 10 categories. Not returned if no categories match 

+							the query in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSuggestedCategories</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+					  </xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryCount" type="xs:int" minOccurs="0">

+					  <xs:annotation>

+					    <xs:documentation>

+								Indicates the number of categories in the array.

+					    </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetSuggestedCategories</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+					  </xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetTaxTable -->

+	<xs:element name="GetTaxTableRequest" type="ns:GetTaxTableRequestType"/>

+	<xs:complexType name="GetTaxTableRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves the tax table for a user on a given site or retrieves the valid jurisdictions (if any) for a given site.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves the tax table for a user on a given site or retrieves the valid

+						jurisdictions (if any) for a given site.

+					</Summary>

+				</Overview>

+				<TempInfo>dl</TempInfo>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetTaxTable -->

+	<xs:element name="GetTaxTableResponse" type="ns:GetTaxTableResponseType"/>

+	<xs:complexType name="GetTaxTableResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response to GetTaxTableRequest.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="LastUpdateTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The last time (in GMT) that the tax table was updated.

+								Only returned if the user previously created a tax table

+								and if the site has jurisdictions.

+								LastUpdateTime is useful for synchronization. If you cache the user's

+								tax table, you can use GetTaxTable to check if it has changed and

+								whether you need to update the cached tax table.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetTaxTable</CallName>

+									<Returned>Conditionally</Returned>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TaxTable" type="ns:TaxTableType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A container of tax jurisdiction information unique to

+								a user/site combination. Empty if not set for user.

+								If DetailLevel is not specified, information is only

+								returned for the jurisdictions for which the user provided tax

+								information. If DetailLevel is ReturnAll, tax information

+								is returned for all possible jurisdictions, whether

+								specified by the user or not. ShippingIncludedInTax and

+								SalesTaxPercent are returned but are empty.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetTaxTable</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetUser -->

+	<xs:element name="GetUserRequest" type="ns:GetUserRequestType"/>

+	<xs:complexType name="GetUserRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves information about a user. Inputs controls what user

+				data is returned. This includes the eBay user ID for the user

+				whose data is to be returned and the item ID for a listing to

+				indicate a transactional relationship between the requestor and

+				the target user.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves data for one eBay user. Input is the eBay user

+						ID for the user about whom to return data.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+ 								Specifies the item ID for a successfully concluded listing in which

+								the requestor and target user were participants (one as seller and

+								the other as buyer). Necessary to return certain data (like an email

+								address). Not necessary of the requestor is retrieving own data.

+								ItemID is an optional input.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetUser</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UserID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the user whose data will returned by the call. UserID is

+								optional. If not specified, the user data returned is that for

+								the requesting user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUser</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetUser -->

+	<xs:element name="GetUserResponse" type="ns:GetUserResponseType"/>

+	<xs:complexType name="GetUserResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the data retrieved by the call. User data is returned in a User object.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="User" type="ns:UserType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the returned user data for the specified eBay user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUser</CallName>

+									<DetailLevels>none, ReturnAll</DetailLevels>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetUserContactDetails -->

+	<xs:element name="GetUserContactDetailsRequest" type="ns:GetUserContactDetailsRequestType"/>

+	<xs:complexType name="GetUserContactDetailsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns contact information for a specified user if a

+				bidding relationship exists between them. That is, the

+				bidder must be bidding on the seller's active

+				item, or an eBay user must have made an offer on

+				the item via Best Offer.

+				The item must be in the Motors or Business &amp; Industrial categories.

+				Note that GetUserContactDetails does NOT return an email address.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Returns contact information for a specified user. Sellers

+						can retrieve contact information for both bidders and

+						users who have made offers (via Best Offer) during an

+						active listing. Buyers can also use this call to contact

+						sellers of an item they are bidding on or have made an

+						offer on (via Best Offer). Note that this call does not

+						return an email address. Sellers who wish to send an

+						email message to their bidders should use

+						AddMemberMessagesAAQToBidder instead.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An eBay ID that uniquely identifies a given

+								item. Must be a currently active item.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>GetUserContactDetails</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ContactID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An eBay ID that uniquely identifies a given

+								user. The same as the contact's eBay username.

+								Either the seller's or bidder's username may be

+								specified here, as long as a bidding

+								relationship exists between them. That is, the

+								bidder must be bidding on the seller's active

+								item, or an eBay user must have made an offer on

+								the item via Best Offer.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserContactDetails</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RequesterID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An eBay ID that uniquely identifies a given

+								user. The same as the seller's eBay username.

+								Either the seller's or bidder's username may be

+								specified here, as long as a bidding

+								relationship exists between them. That is, the

+								bidder must be bidding on the seller's active

+								item, or an eBay user must have made an offer on

+								the item via Best Offer.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserContactDetails</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetUserContactDetails -->

+	<xs:element name="GetUserContactDetailsResponse" type="ns:GetUserContactDetailsResponseType"/>

+	<xs:complexType name="GetUserContactDetailsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns contact information to a seller for both bidders

+				and users who have made offers (via Best Offer) during

+				an active listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="UserID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An eBay ID that uniquely identifies a given

+								user. The eBay username of the requested

+								contact.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserContactDetails</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ContactAddress" type="ns:AddressType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contact information for the requested contact.

+								Note that the email address is NOT returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserContactDetails</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RegistrationDate" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The date and time that the requested contact

+								registered with eBay.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserContactDetails</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetUserDisputes -->

+	<xs:element name="GetUserDisputesRequest" type="ns:GetUserDisputesRequestType"/>

+	<xs:complexType name="GetUserDisputesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests a list of disputes the requester is involved in as buyer or seller.

+				The list includes both Unpaid Item and Item Not Received disputes and can

+				be filtered according to DisputeFilterType. Use a DetailLevel of ReturnAll to

+				return all data about each dispute, including DisputeResolution and DisputeMessage

+				elements.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests a list of disputes the requester is involved in as buyer or seller.

+					</Summary>

+				</Overview>

+				<TempInfo>dl</TempInfo>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="DisputeFilterType" type="ns:DisputeFilterTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A filter that specifies a subset of disputes to return. The return list

+								includes both Item Not Received and Unpaid Item disputes.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DisputeSortType" type="ns:DisputeSortTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The value and sequence to use to sort the returned disputes.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModTimeFrom" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							A filter that retrieves disputes whose DisputeModifiedTime is later

+							than or equal to this value. Specify the time value in GMT.

+							See the eBay Web Services documentation for information about specifying time values.

+							For more precise control of the date range filter, it is a good practice to also

+							specify ModTimeTo. Otherwise, the end of the date range is the present time.

+							Filtering by date range is optional. You can use date range filters in combination

+							with other filters like DisputeFilterType to control the amount of data returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModTimeTo" type="xs:dateTime" minOccurs="0">

+					<xs:annotation>

+						<xs:documentation>

+							A filter that retrieves disputes whose DisputeModifiedTime is earlier

+							than or equal to this value. Specify the time value in GMT.

+							See the eBay Web Services documentation for information about specifying time values.

+							For more precise control of the date range filter, it is a good practice to also

+							specify ModTimeFrom. Otherwise, all available disputes modified prior to the ModTimeTo value are returned.

+							Filtering by date range is optional. You can use date range filters in combination

+							with other filters like DisputeFilterType to control the amount of data returned.

+						</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetUserDisputes</CallName>

+								<RequiredInput>No</RequiredInput>

+							</CallInfo>

+						</xs:appinfo>

+					</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The virtual page number of the result set to display. A result set has a number of disputes

+								divided into virtual pages, with 200 disputes per page. The response can only display one page.

+								The first page in the result set is number 1. Required. If not specified, a warning is returned

+								and Pagination.PageNumber is set to 1 by default.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetUserDisputes -->

+	<xs:element name="GetUserDisputesResponse" type="ns:GetUserDisputesResponseType"/>

+	<xs:complexType name="GetUserDisputesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns a list of disputes that involve the calling user

+				as buyer or seller, in response to a GetUserDisputesRequest.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="StartingDisputeID" type="ns:DisputeIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The index of the first dispute in the current result set, relative

+								to the total number of disputes available.

+								Primarily useful for interpreting paginated results.

+								For example, if 228 disputes are available and

+								200 results are returned per page: The first page returns

+								a StartingDisputeID value of 1 and the second page returns a

+								StartingDisputeID value of 201.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndingDisputeID" type="ns:DisputeIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The index of the last dispute in the current result set, relative

+								to the total number of disputes available.

+								Primarily useful for interpreting paginated results.

+								For example, if 228 disputes are available and

+								200 results are returned per page: The first page returns

+								an EndingDisputeID value of 200 and the second page returns an

+								EndingDisputeID value of 228.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DisputeArray" type="ns:DisputeArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The array of disputes returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemsPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The number of disputes on each virtual page in the result set.

+								The virtual page returned is determined by PageNumber.

+								Default is 200.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The page of the total result set returned in the call. The entire result set

+								is virtual and the call returns only one page of it.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DisputeFilterCount" type="ns:DisputeFilterCountType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The number of disputes that involve the requester as

+								buyer or seller and match a given filter type.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The result of the pagination, including the total number

+								of virtual pages in the result set and the total number of

+								disputes returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserDisputes</CallName>

+									<Returned>Always</Returned>

+									<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetUserPreferences -->

+	<xs:element name="GetUserPreferencesRequest" type="ns:GetUserPreferencesRequestType"/>

+	<xs:complexType name="GetUserPreferencesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves some or all of a user's preferences. The set of preferences retrieved depends

+				on the set of flags specified in the request.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves some or all of a user's preferences.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ShowBidderNoticePreferences" type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+								If true, requests a seller's preferences for receiving bidder notices.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShowCombinedPaymentPreferences" type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+								If true, requests a seller's preferences for accepting payments

+								that combine item purchases into one order.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShowCrossPromotionPreferences"  type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+								If true, requests a seller's cross-promotion preferences, such as

+								whether cross-promotions are enabled and the sort filters used.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShowSellerPaymentPreferences"  type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+								If true, displays a seller's payment preferences, for displaying

+								a Pay Now button, accepting PayPal, and so on.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShowEndOfAuctionEmailPreferences"  type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, displays the seller's end of auction email preferences.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+					  </xs:annotation>

+					</xs:element>

+					<xs:element name="ShowSellerFavoriteItemPreferences" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, retrieves preferences the seller has set for displaying items

+								on a buyer's favorite sellers page and in the favorite sellers email digest.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShoweBxOptInPreference" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, displays the seller's preference regarding

+								whether they want their eligible listings to be included on eBay Express.&lt;br&gt;

+								&lt;br&gt;

+								As of release 463, this flag is no longer recommended.

+								Instead, the ExpressPreferences node will always be returned if the user is

+								eligible for Express, and it will never be returned if the user is not eligible.

+								That is, there is no "Show" filter to retrieve the ExpressPreferences node.

+								Express preferences are dependent on the user's site of registration, not

+								the site to which you send the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+									<TagStatus>Obsolete</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+						</xs:element>

+						<xs:element name="ShowProStoresPreferences" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, returns ProStores checkout preferences.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>false</Default>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+						</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetUserPreferences -->

+	<xs:element name="GetUserPreferencesResponse" type="ns:GetUserPreferencesResponseType"/>

+	<xs:complexType name="GetUserPreferencesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns some or all of a user's preferences. The preferences are grouped

+				in sets, according to the sets requested.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="BidderNoticePreferences" type="ns:BidderNoticePreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a seller's preferences for receiving bidder notices.

+								Returned when the request sets ShowBidderNoticePreferences to true.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CombinedPaymentPreferences" type="ns:CombinedPaymentPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a seller's preferences for accepting combined payments.

+								Returned when ShowCombinedPaymentPreferences is true.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CrossPromotionPreferences" type="ns:CrossPromotionPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a seller's cross-promotion preferences.

+								Returned when ShowCrossPromotionPreferences is true.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerPaymentPreferences" type="ns:SellerPaymentPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a seller's preferences for accepting payments.

+								Returned when ShowSellerPaymentPreferences is true.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerFavoriteItemPreferences" type="ns:SellerFavoriteItemPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a seller's preferences for displaying items on a buyer's

+								Favorite Sellers' Items page or Favorite Sellers' Items digest.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndOfAuctionEmailPreferences" type="ns:EndOfAuctionEmailPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the user's end of auction email preferences.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="eBxOptInPreference" type="ns:eBxOptInPreferenceType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Contains a seller's eBay Express preference regarding

+							whether they want their eligible listings to be included on eBay Express.

+							Returned when the request sets ShoweBxOptInPreference to true.&lt;br&gt;

+							&lt;br&gt;

+							As of release 463, applications should start using ExpressPreferences instead.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+									<TagStatus>Deprecated</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExpressPreferences" type="ns:ExpressPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The seller's Express preferences.

+								Always returned for sellers who are eligible to list on Express.

+								Not returned for sellers who are not eligible per eBay's requirements.

+								If ExpressPreferences is not returned, call GetUser and check the value

+								of SellerInfo.ExpressEligible. If the seller is not eligible, see

+								"eBay Express" in the eBay Web Services guide for possible reasons.

+								Note that if the seller opts out of Express themselves (but would otherwise be eligible),

+								ExpressPreferences is returned. In this case, GetUser may show that the user is

+								not eligible to list on Express.&lt;br&gt;

+								&lt;br&gt;

+								Express preferences are returned based on the seller's registration site,

+								not the site to which you send the request. For example, a US seller's

+								preferences will be returned even if you submit the request to site 77 (Germany).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ProStoresPreference" type="ns:ProStoresCheckoutPreferenceType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Details about ProStores and checkout preferences.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetUserPreferences</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetWantItNowPost -->

+	<xs:element name="GetWantItNowPostRequest" type="ns:GetWantItNowPostRequestType"/>

+	<xs:complexType name="GetWantItNowPostRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests data for a specific, active Want It Now post identified by a post ID.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests data for a specific, active Want It Now post identified by a post ID.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="PostID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the post ID that uniquely identifies the Want It Now post for

+								which to retrieve the data. PostID is a required input. PostID is unique

+								across all eBay sites.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowPost</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetWantItNowPost -->

+	<xs:element name="GetWantItNowPostResponse" type="ns:GetWantItNowPostResponseType"/>

+	<xs:complexType name="GetWantItNowPostResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the Want It Now post data returned by the call. The data for the 

+				specified post listing is returned in a WantItNowPostType object.

+ 			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="WantItNowPost" type="ns:WantItNowPostType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the data defining a single Want It Now post. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowPost</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetWantItNowSearchResults -->

+	<xs:element name="GetWantItNowSearchResultsRequest" type="ns:GetWantItNowSearchResultsRequestType"/>

+	<xs:complexType name="GetWantItNowSearchResultsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves a list of active Want It Now posts that match specified keywords and/or other

+				search criteria.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves a list of active Want It Now posts that match specified keywords and/or other

+						search criteria.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Limits the result set to just those Want It Now posts listed in the

+								specified category. Defaults to all categories if no category ID is

+								specified. If the specified category ID does not match an existing

+								category for the site, an invalid-category error message is returned.

+								Controls the set of listings to return (not the details to return for each

+								listing).

+								You must specify a Query and/or a CategoryID in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Query" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies a search string. The search string consists of one or more

+								keywords to search for in the listing title. Note that the post

+								description will also be searched if SearchInDescription is enabled.

+								By default, requests return a list of Want It Now posts that include all

+								of the keywords specified in the Query. All words used in the query,

+								including "and," "or," and "the,"  will be treated as keywords. You can,

+								however, use modifiers and wildcards (e.g., +, -, and *) in the Query

+								field to create more complex searches. Be careful when using spaces before

+								or after modifiers and wildcards (+, -, or *), as the spaces can affect

+								the query logic.

+								See the eBay Web Services Guide for a list of valid search keyword query

+								operators and examples.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>350 (characters)</MaxLength>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SearchInDescription" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, include the description field of Want It Now posts in the keyword search. Want

+								It Now posts returned are those where specified search keywords appear in

+								either the description or the title. This is the default behavior if SearchInDescription

+								is not specified. If false, only the title will be searched. SearchInDescription is an

+								optional input.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SearchWorldwide" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, the search applies to all eBay sites. If false, the search is

+								limited to the site specified in the URL query string when the call is

+								made.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Controls the pagination of the result set. Child elements specify the

+								maximum number of item listings to return per call and which page of data

+								to return.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GetWantItNowSearchResults -->

+	<xs:element name="GetWantItNowSearchResultsResponse" type="ns:GetWantItNowSearchResultsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response contains the Want It Now posts that have the specified keyword(s) in the 

+				title and (optionally) the description. 

+			</xs:documentation>

+		</xs:annotation>

+	</xs:element>

+	<xs:complexType name="GetWantItNowSearchResultsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response contains the Want It Now posts that have the specified keyword(s) in the 

+				title and (optionally) the description. 

+ 			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="WantItNowPostArray" type="ns:WantItNowPostArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the returned Want It Now posts, if any. The data for each post is 

+								returned in a WantItNowPostType object. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="HasMoreItems" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates whether there are additional Want It Now posts that meet the 

+								search criteria. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemsPerPage" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the maximum number of Want It Now posts that can be returned in 

+								a WantItNowPostArray for a request. This value can be specified in the 

+								request by  EntriesPerPage in Pagination in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the page of data returned by the current call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the results of the pagination, including the total number of 

+								pages of data there are to be returned and the total number of posts there 

+								are to be returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GetWantItNowSearchResults</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GeteBayDetails -->

+	<xs:element name="GeteBayDetailsRequest" type="ns:GeteBayDetailsRequestType"/>

+	<xs:complexType name="GeteBayDetailsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Retrieves eBay IDs and codes (e.g., site IDs and shipping service

+				codes), enumerated data (e.g., payment methods), and other common eBay

+				meta-data. This call enables you to keep certain data up to date in your

+				applications without referring to the schema, the documentation, or the

+				eBay online help. Other data is returned for your reference, but you may

+				need to refer to the schema or the documentation for information about

+				valid values and usage.

+				&lt;br&gt;&lt;br&gt; In some cases, the data returned in the response

+				will vary according to the site that you use for the request.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Retrieves eBay IDs and codes (e.g., site IDs and shipping service

+						codes), enumerated data (e.g., payment methods), and other common

+						eBay meta-data.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="DetailName" type="ns:DetailNameCodeType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								A designation of what kind of information you wish returned

+								for the specified eBay site. If omitted, all details are

+								returned.

+								The possible values for input (the enumeration values of

+								DetailNameCodeType) are the same name as fields returned by

+								the response. See the documentation for the

+								GeteBayDetails response to better understand the DetailName

+								options.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GeteBayDetails -->

+	<xs:element name="GeteBayDetailsResponse" type="ns:GeteBayDetailsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a specified site in response to GeteBayDetailsRequest.

+				If no DetailName is identified in the request, all elements of

+				GeteBayDetailsResponse are returned. Otherwise, only the element

+				corresponding to the specified DetailName is returned.

+			</xs:documentation>

+		</xs:annotation>

+	</xs:element>

+	<xs:complexType name="GeteBayDetailsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a specified site in response to GeteBayDetailsRequest.

+				If no DetailName is identified in the request, all elements of

+				GeteBayDetailsResponse are returned. Otherwise, only the element

+				corresponding to the specified DetailName is returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="CountryDetails" type="ns:CountryDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific country. GeteBayDetails returns all countries in

+								the system, regardless of the site to which you sent the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CurrencyDetails" type="ns:CurrencyDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific currency that can be used for listing on an eBay

+								site. GeteBayDetails returns all site currencies in the system, regardless

+								of the site to which you sent the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DispatchTimeMaxDetails" type="ns:DispatchTimeMaxDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific max dispatch time. A dispatch time specifies the

+								maximum number of business days a seller commits to for shipping an item

+								to domestic buyers after receiving a cleared payment. GeteBayDetails

+								returns all dispatch times in the system, regardless of the site to which

+								you sent the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentOptionDetails" type="ns:PaymentOptionDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific buyer payment method. GeteBayDetails only returns

+								payment methods that are applicable to the site to which you sent the

+								request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RegionDetails" type ="ns:RegionDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific geographical region. GeteBayDetails only returns

+								regions that are applicable to the site to which you sent the request.

+								However, you should ignore region values for all sites except China.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingLocationDetails" type="ns:ShippingLocationDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a location or region to which the seller is willing to ship.

+								GeteBayDetails returns all shipping locations in the system, regardless of

+								the site to which you sent the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingServiceDetails" type="ns:ShippingServiceDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific shipping service. GeteBayDetails only returns

+								shipping services that are applicable to the site to which you sent the

+								request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SiteDetails" type ="ns:SiteDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific eBay site. GeteBayDetails returns all sites in

+								the system, regardless of the site to which you sent the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TaxJurisdiction" type="ns:TaxJurisdictionType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific tax jurisdiction or tax region. GeteBayDetails

+								only returns jurisdictions that are applicable to the site to which you

+								sent the request.&lt;br&gt;&lt;br&gt;

+								Related fields:&lt;br&gt;

+								TaxTable.TaxJurisdiction in SetTaxTable&lt;br&gt;

+								Item.UseTaxTable in Additem

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="URLDetails" type="ns:URLDetailsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Details about a specific eBay URL. GeteBayDetails only returns URLs that

+								are applicable to the site to which you sent the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>GeteBayDetails</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GeteBayOfficialTime -->

+	<xs:element name="GeteBayOfficialTimeRequest" type="ns:GeteBayOfficialTimeRequestType"/>

+	<xs:complexType name="GeteBayOfficialTimeRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Gets the official eBay system time in GMT.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Gets the official eBay system time in GMT.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: GeteBayOfficialTime -->

+	<xs:element name="GeteBayOfficialTimeResponse" type="ns:GeteBayOfficialTimeResponseType"/>

+	<xs:complexType name="GeteBayOfficialTimeResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				The Timestamp field indicates the official eBay system time in GMT.

+				For information about converting between GMT and other time zones, 

+				see "Time Values" in the Data Types appendix in the eBay Web Services guide.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: IssueRefund -->

+	<xs:element name="IssueRefundRequest" type="ns:IssueRefundRequestType"/>

+	<xs:complexType name="IssueRefundRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Issues a refund for a single Half.com transaction. Can only be

+				called by a seller. Refunds may only be issued for a specific

+				transaction. Sellers do not have the ability to issue a general

+				refund (not tied to a transaction) to a buyer.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Issues a refund for a single Half.com transaction.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the Half.com item associated with the refund payment to the buyer.

+								To uniquely identify a transaction, you need to specify both ItemID

+								and TransactionID. Use GetSellerPayments to determine the item ID

+								and transaction ID associated with the original sale payment.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>IssueRefund</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the Half.com transaction associated with the refund payment.

+								To uniquely identify a transaction, you need to specify both ItemID

+								and TransactionID. Use GetSellerPayments to determine the item ID

+								and transaction ID associated with the original sale payment.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>IssueRefund</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RefundReason" type="ns:RefundReasonCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Explanation of the reason that the refund is being issued.

+						</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>IssueRefund</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RefundType" type="ns:RefundTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Explanation of the costs that the refund amount covers.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>IssueRefund</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RefundAmount" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The amount the seller wants to refund to the buyer, in US Dollars (USD).

+								Must be greater than 0.00. Half.com allows a maximum of the original item

+								sale price (transaction price plus original shipping reimbursement) plus

+								return shipping costs (the amount the buyer paid to return the item).

+								Typically, the return shipping cost is based on the current cost of

+								shipping the individual item (not the discounted cost calculated during

+								the original checkout for a multi-item order). You can also issue a

+								partial refund for the amount you want the buyer to receive. If

+								RefundType=Full or RefundType=FullPlusShipping and you do not pass

+								RefundAmount in the request, Half.com will calculate the refund amount for

+								you. If you pass RefundAmount in the request, the amount you specify will

+								override Half.com's calculated value. Required if RefundType=

+								CustomOrPartial.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>IssueRefund</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RefundMessage" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Note to the buyer. Cannot include HTML.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>400</MaxLength>

+								<CallInfo>

+									<CallName>IssueRefund</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: IssueRefund -->

+	<xs:element name="IssueRefundResponse" type="ns:IssueRefundResponseType"/>

+	<xs:complexType name="IssueRefundResponseType">

+		<xs:annotation>

+			<xs:documentation>

+Indicates the refund amount that a seller issued to a buyer for a single Half.com transaction.

+Refunds may only be issued for a specific transaction. Sellers do not have the ability to issue a 

+general refund (not tied to a transaction) to a buyer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="RefundFromSeller" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Total amount that the seller asked Half.com to refund to 

+							a buyer for a Half.com transaction.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>IssueRefund</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TotalRefundToBuyer" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							Total amount that Half.com refunded to the buyer (which could include the refund amount 

+							from the seller plus a refund amount from Half.com).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>IssueRefund</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: LeaveFeedback -->

+	<xs:element name="LeaveFeedbackRequest" type="ns:LeaveFeedbackRequestType"/>

+	<xs:complexType name="LeaveFeedbackRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a user to leave feedback about another user. Both users (the

+				sender  and the recipient) must have a transactional relationship.

+				That is, they must have both been participants in a successfully

+				concluded item sale transaction that took place no more than 90 days

+				prior. Also, the sending user cannot have already left feedback for

+				the recipient for the transaction.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a user to leave feedback about another user.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Item ID for the listing from which the transaction relating the users

+								(the feedback sender and recipient). Transaction must not have been

+								created more than 90 days prior to the attempt to leave feedback.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>LeaveFeedback</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CommentText" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Textual comment that explains, clarifies, or justifies the feedback

+								score specified in CommentType.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>LeaveFeedback</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CommentType" type="ns:CommentTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Score for the feedback being left. May be Positive, Neutral, or

+								Negative.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>LeaveFeedback</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The item purchase transaction from the listing specified in ItemID for

+								which the feedback is being left. Required if the listing identified in

+								ItemID was a multi-item listing (Dutch auction or multi-item fixed-price

+								listing).

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>LeaveFeedback</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TargetUser" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the recipient user about whom the feedback is being left.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>LeaveFeedback</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: LeaveFeedback -->

+	<xs:element name="LeaveFeedbackResponse" type="ns:LeaveFeedbackResponseType"/>

+	<xs:complexType name="LeaveFeedbackResponseType">

+		<xs:annotation>

+			<xs:documentation>

+          LeaveFeedback response message includes an acknowledgement if the

+          feedback was successfully left.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="FeedbackID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) The ID of the feedback that has been left.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>LeaveFeedback</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: PlaceOffer -->

+	<xs:element name="PlaceOfferRequest" type="ns:PlaceOfferRequestType"/>

+	<xs:complexType name="PlaceOfferRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables the requesting user to submit a bid (make an offer) on the

+				item listing specified in ItemID. For competitive-bidding listings

+				(Chinese and Dutch auctions), makes a bid. For fixed-price listings

+				(Basic Fixed-Price and eBay Stores Inventory listings), purchases

+				the item.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables the requesting user to submit a bid (make an offer) on the

+						item listing specified in ItemID.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Offer" type="ns:OfferType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the type of offer being made. If the item is a

+								competitive-bidding listing, the offer is a bid. If the item is a

+								fixed-price listing, then the offer purchases the item. If the item is a

+								competitive-bidding listing and the offer is of type with an active,

+								unexercised Buy It Now option, then the offer can either purchase the

+								item or be a bid. See the schema documentation for OfferType for deatils

+								on its properties and their meanings.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>PlaceOffer</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique item ID that identifies the item listing for which the offer is

+								being submitted.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>PlaceOffer</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BlockOnWarning" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(in) If a warning message exists and BlockOnWarning is true,

+								the warning message is returned and the bid is blocked. If no warning message

+								exists and BlockOnWarning is true, the bid is placed. If BlockOnWarning

+								is false, the bid is placed, regardless of warning.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>PlaceOffer</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: PlaceOffer -->

+	<xs:element name="PlaceOfferResponse" type="ns:PlaceOfferResponseType"/>

+	<xs:complexType name="PlaceOfferResponseType">

+		<xs:annotation>

+			<xs:documentation> 

+				The PlaceOffer result set provides feedback on the success and result

+				of the offer made.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="SellingStatus" type="ns:SellingStatusType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the current bidding/purchase state of the item listing, as of

+								the offer extended using PlaceOffer. See the schema documentation for

+								the SellingStatus object, the properties of which contain such

+								post-offer information as the current high bidder, the current price for

+								the item, and the bid increment.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>PlaceOffer</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RelistItem -->

+	<xs:element name="RelistItemRequest" type="ns:RelistItemRequestType"/>

+	<xs:complexType name="RelistItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to take a single item (or a single multi-item

+				listing) that ended without bidders or buyers and re-list it on a

+				specified eBay site. The listing may be re-listed with the same item

+				properties as the original or the seller may change a number of the

+				item's defining properties at re-listing time. The new listing will

+				have a different item ID than the original one. RelistItem re-lists a

+				single item (or a single multi-item listing) that has already ended.

+				To re-list multiple items (multiple listings) that have ended,

+				execute RelistItem once for each ended listing.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to take a single item (or a single multi-item

+						listing) that ended without bidders or buyers and re-list it on a

+						specified eBay site.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements hold the values for item properties that change for the

+								item re-list. Item is a required input. At a minimum, the Item.ItemID

+								property must be set to the ID of the listing being re-listed (a

+								listing that ended in the past 90 days). By default, the new listing's

+								Item object properties are the same as those of the original (ended)

+								listing. By setting a new value in the Item object, the new listing

+								uses the new value rather than the corresponding value from the old

+								listing.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModifiedFields" type="ns:ModifiedFieldType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								In release 439 and later, ModifiedFields is no longer required to change

+								field values, but it is still supported for backward compatibility.

+								It is strongly recommended that you do not use ModifiedFields in this call.

+								See the eBay Web Services Guide for information about the DeletedField tag and for

+								rules and guidelines for changing values when relisting items.

+								ModifiedFields contains an array of item property changes.

+								Each element in the array indicates a first

+								level property in the Item object (specified in the Item property) that is

+								changing in the re-list. Item properties not specified in ModifiedFields are

+								not changed in the item re-list, even if a new value is specified in the

+								property in the Item object. Properties not specified retain the same value

+								as is present in the ended item listing being re-listed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+									<TagStatus>Deprecated</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DeletedField" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the name of the field to delete from a listing.

+								See the eBay Web Services guide for rules on deleting values when relisting items.

+								Also see the relevant field descriptions to determine when to use DeletedField (and potential consequences).

+								The request can contain zero, one, or many instances of DeletedField (one for each field to be deleted).

+								DeletedField accepts the following path names, which delete the corresponding nodes:&lt;br&gt;&lt;br&gt;

+								<!-- Item.ApplicationData (coming soon)&lt;br&gt; -->

+								Item.AttributeSetArray&lt;br&gt;

+								<!-- Item.BuyItNowPrice (coming soon)&lt;br&gt; -->

+								Item.Charity&lt;br&gt;

+								Item.DigitalDeliveryDetails&lt;br&gt;

+								Item.ListingDesigner.LayoutID&lt;br&gt;

+								Item.ListingDesigner.ThemeID&lt;br&gt;

+								Item.ListingEnhancement[Value]&lt;br&gt;

+								Item.PayPalEmailAddress&lt;br&gt;

+								Item.PictureDetails.GalleryURL&lt;br&gt;

+								Item.PictureDetails.PictureURL&lt;br&gt;

+								Item.ProductListingDetails&lt;br&gt;

+								Item.ProximitySearchDetails.PostalCode&lt;br&gt;

+								<!-- Item.ReservePrice (coming soon)&lt;br&gt; -->

+								Item.SecondaryCategory&lt;br&gt;

+								Item.ShippingDetails.PaymentInstructions&lt;br&gt;

+								Item.SKU&lt;br&gt;

+								Item.SubTitle&lt;br&gt;&lt;br&gt;

+								These values are case-sensitive. Use values that match the case of the schema element names

+								(Item.PictureDetails.GalleryURL) or make the initial letter of each field name lowercase (item.pictureDetails.galleryURL).

+								However, do not change the case of letters in the middle of a field name.

+								For example, item.picturedetails.galleryUrl is not allowed.&lt;br&gt;&lt;br&gt;

+								To delete a listing enhancement like Featured, specify the value you are deleting;

+								for example, Item.ListingEnhancement[Featured].

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RelistItem -->

+	<xs:element name="RelistItemResponse" type="ns:RelistItemResponseType"/>

+	<xs:complexType name="RelistItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the item ID and the estimated fees for the re-listed listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique item ID for the new listing.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Fees" type="ns:FeesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements contain the estimated listing fees for the new item

+								listing. The fees do not include the Final Value Fee (FVF), which cannot

+								be determined until an item is sold.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Date and time the new listing became active on the eBay site.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Date and time when the new listing ends. This is the starting time plus

+								the listing duration.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the primary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID passed in Item.PrimaryCategory was mapped to a new ID by eBay.

+								If the primary category has not changed or it has expired with no replacement,

+								CategoryID does not return a value.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Category2ID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the secondary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID passed in Item.SecondaryCategory was mapped to a new ID by eBay.

+								If the secondary category has not changed or it has expired with no replacement,

+								Category2ID does not return a value.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>RelistItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RemoveFromWatchList -->

+	<xs:element name="RemoveFromWatchListRequest" type="ns:RemoveFromWatchListRequestType"/>

+	<xs:complexType name="RemoveFromWatchListRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Provides users the ability to remove items from their

+				My eBay watch list.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Provides users the ability to remove items from their

+						My eBay watch list.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The ID of the item to be removed from the

+								watch list. Either ItemID or RemoveAllItems must

+								be specified, but NOT both. One or more Item IDs

+								can be specified, each in it's own ItemID container.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>RemoveFromWatchList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RemoveAllItems" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								If true, then all the items in the user's

+								watch list are removed. Either ItemID or

+								RemoveAllItems must be specified, but NOT both.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RemoveFromWatchList</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RemoveFromWatchList -->

+	<xs:element name="RemoveFromWatchListResponse" type="ns:RemoveFromWatchListResponseType"/>

+	<xs:complexType name="RemoveFromWatchListResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns information about the user's My eBay watch list.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="WatchListCount" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) The current number of items in the user's

+								watch list (after those specified in the call

+								request have been removed)

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddToWatchList</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="WatchListMaximum" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) The maximum number of items allowed in

+								watch lists. Currently this value is the same

+								for all sites and all users.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>AddToWatchList</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RespondToBestOffer -->

+	<xs:element name="RespondToBestOfferRequest" type="ns:RespondToBestOfferRequestType"/>

+	<xs:complexType name="RespondToBestOfferRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables the seller of a Best Offer item to respond

+				with Accept or Decline to offers made by bidders.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables the seller of a Best Offer item to respond

+						with Accept or Decline to offers made by bidders.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the item for which the BestOffer data is to be returned.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>RespondToBestOffer</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BestOfferID" type="ns:BestOfferIDType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								The ID of a Best Offer for the item.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToBestOffer</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Action" type="ns:BestOfferActionCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The action taken on the best offer by the seller (e.g.,

+								Accept, Decline, or Counter). Bulk Accept and Bulk 

+								Counter are not supported. That is, you cannot accept or 

+								counter multiple offers in a single call. You can, 

+								however, decline multiple offers in a single call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToBestOffer</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerResponse" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A comment from the seller to the buyer.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>250</MaxLength>

+								<CallInfo>

+									<CallName>RespondToBestOffer</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CounterOfferPrice" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The counter offer price. When Action is set to Counter, 

+								you must specify the amount for the counteroffer with 

+								CounterOfferPrice. The value of CounterOfferPrice cannot 

+								exceed the Buy It Now price for a single quantity item. 

+								The value of CounterOfferPrice may exceed the Buy It Now 

+								price if the value for CounterOfferQuantity is greater 

+								than 1.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToBestOffer</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CounterOfferQuantity" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The counter offer quantity. When Action is set to 

+								Counter you must specify the quantity of items for the 

+								counteroffer with CounterOfferQuantity. 

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToBestOffer</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RespondToBestOffer -->

+	<xs:element name="RespondToBestOfferResponse" type="ns:RespondToBestOfferResponseType"/>

+	<xs:complexType name="RespondToBestOfferResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains a list of BestOffers that were either accepted or declined.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="RespondToBestOffer" type="ns:BestOfferArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A list of BestOffers that were either accepted or declined.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToBestOffer</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RespondToFeedback -->

+	<xs:element name="RespondToFeedbackRequest" type="ns:RespondToFeedbackRequestType"/>

+	<xs:complexType name="RespondToFeedbackRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables users to reply to feedback left by the other

+				party in the transaction and/or follow up on the

+				feedback left for the other party.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables users to reply to feedback left by the other

+						party in the transaction and/or follow up on the

+						feedback left for the other party.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="FeedbackID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID that uniquely identifies the feedback.

+								FeedbackIDs can be retrieved by using

+								GetFeedback. Required if ItemID is not

+								specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToFeedback</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique identifier of an item to which the

+								feedback is attached. Required if FeedbackID is

+								not provided.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>RespondToFeedback</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique identifier for a purchase from an

+								eBay Stores Inventory or basic fixed price

+								listing. If TransactionID is specified, ItemID

+								must also be specified.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>RespondToFeedback</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TargetUserID" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								User who left the feedback that is being

+								replied to or followed up on.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToFeedback</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ResponseType" type="ns:FeedbackResponseCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether the response is a reply

+								or a follow-up.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToFeedback</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ResponseText" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Textual comment that the user who is

+								subject of feedback may leave in response or

+								rebuttal to the feedback. Alternatively, when

+								the  ResponseType is FollowUp, this value

+								contains the text of the follow-up comment. Max

+								length is 125 for the Taiwan site.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>80</MaxLength>

+								<CallInfo>

+									<CallName>RespondToFeedback</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RespondToFeedback -->

+	<xs:element name="RespondToFeedbackResponse" type="ns:RespondToFeedbackResponseType"/>

+	<xs:complexType name="RespondToFeedbackResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Indicates the success or failure of the attempt to reply

+				to feedback that has been left for a user, or to post a

+				follow-up comment to a feedback comment a user has left

+				for someone else.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RespondToWantItNowPost -->

+	<xs:element name="RespondToWantItNowPostRequest" type="ns:RespondToWantItNowPostRequestType"/>

+	<xs:complexType name="RespondToWantItNowPostRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to respond to a Want It Now post with an item listed on the eBay

+				site.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to respond to a Want It Now post with an item listed on the eBay

+						site.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique identifier of an item listed on the eBay site.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>RespondToWantItNowPost</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PostID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique identifier of a Want It Now post on the eBay site.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>RespondToWantItNowPost</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: RespondToWantItNowPost -->

+	<xs:element name="RespondToWantItNowPostResponse" type="ns:RespondToWantItNowPostResponseType"/>

+	<xs:complexType name="RespondToWantItNowPostResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Indicates the success or failure of the attempt to respond to a Want It Now post.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType" />

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseCheckoutStatus -->

+	<xs:element name="ReviseCheckoutStatusRequest" type="ns:ReviseCheckoutStatusRequestType"/>

+	<xs:complexType name="ReviseCheckoutStatusRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to update the payment status of an item.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to update the payment status of an item.

+					</Summary>

+				</Overview>

+				<SeeLink>

+					<Title>Third Party Checkout</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ThirdPartyCheckout</URL>

+				</SeeLink>

+				<SeeLink>

+					<Title>Checkout</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=Checkout</URL>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique ID for the item associated with the checkout. A transaction is

+								uniquely identified by one of two means: (a) You provide a TransactionID

+								and ItemID. (This is the preferred approach.), OR, (b) You provide a

+								BuyerID and ItemID and eBay identifies only one transaction for that

+								combination (an error is returned if there are multiple transactions for

+								that combination). Note: If all three are provided (that is, BuyerID,

+								ItemID and TransactionID), BuyerID is ignored.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique ID for the transaction associated with the checkout. For Chinese

+								auctions, the value passed in the TransactionID argument must be 0 or the

+								call will fail with an error. For all other auction types, TransactionID

+								accepts the actual, nonzero transaction ID. Call GetItemTransactionsCall

+								or GetSellerTransactionsCall to determine the correct transaction ID. A

+								transaction is uniquely identified by one of two means: (a) You provide a

+								TransactionID and ItemID. (This is the preferred approach.), OR, (b) You

+								provide a BuyerID and ItemID and eBay identifies only one transaction for

+								that combination (an error is returned if there are multiple transactions

+								for that combination). Note: If all three are provided (that is, BuyerID,

+								ItemID and TransactionID), BuyerID is ignored.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="OrderID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique ID for a multi-item order. If specified, ItemID and

+								TransactionID are ignored if specified in the same call.

+								Changes to the checkout status are applied to the specified

+								order as a whole (and thus the child transactions

+								associated with the order).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AmountPaid" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The amount paid by the buyer. For an eBay Stores item, the value passed in

+								AmountPaid is the transaction/item price. For a US eBay Motors item,

+								AmountPaid is the total amount paid by the buyer for the deposit.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentMethodUsed" type="ns:BuyerPaymentMethodCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Payment method used by the buyer.

+								Required if CheckoutStatus is Complete.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CheckoutStatus" type="ns:CompleteStatusCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The current status of the checkout process for the transaction.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingService" type="xs:token" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The shipping service selected by the buyer from among the shipping

+								services offered by the seller (such as UPS Ground). For a list of valid

+								values that you can cache for future use, call GeteBayDetails with

+								DetailName set to ShippingServiceDetails.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingIncludedInTax" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An indicator of whether shipping costs were included in the

+								taxable amount. For Third-Party Checkout applications.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+								<Default>false</Default>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CheckoutMethod" type="ns:CheckoutMethodCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Not supported.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="InsuranceType" type="ns:InsuranceSelectedCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The insurance option selected by the buyer.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentStatus" type="ns:RCSPaymentStatusCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Not supported.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AdjustmentAmount" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Discount or charge agreed to by the buyer and seller. A positive value

+								indicates that the amount is an extra charge being paid to the seller by

+								the buyer. A negative value indicates that the amount is a discount given

+								to the buyer by the seller.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingAddress" type="ns:AddressType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+							  For internal use.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BuyerID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								eBay ID for the buyer in the transaction being revised. A transaction is

+								uniquely identified by one of two means: (a) You provide a TransactionID

+								and ItemID. (This is the preferred approach.), OR, (b) You provide a

+								BuyerID and ItemID and eBay identifies only one transaction for that

+								combination (an error is returned if there are multiple transactions for

+								that combination). Note: If all three are provided (that is, BuyerID,

+								ItemID and TransactionID), BuyerID is ignored.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingInsuranceCost" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Amount of money paid for insurance. For Third Party Checkout

+								applications.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SalesTax" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Amount of money paid for sales tax. For Third-Party Checkout

+								applications.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingCost" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Amount of money paid for shipping. For Third-party Checkout

+								applications.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EncryptedID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Not supported.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>20</MaxLength>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExternalTransaction" type="ns:ExternalTransactionType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Not supported.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="MultipleSellerPaymentID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Not supported.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseCheckoutStatus</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseCheckoutStatus -->

+	<xs:element name="ReviseCheckoutStatusResponse" type="ns:ReviseCheckoutStatusResponseType"/>

+	<xs:complexType name="ReviseCheckoutStatusResponseType">

+		<xs:annotation>

+			<xs:documentation>

+      	Indicates success or failure of the attempt to revise the listing's checkout status.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseItem -->

+	<xs:element name="ReviseItemRequest" type="ns:ReviseItemRequestType"/>

+	<xs:complexType name="ReviseItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to make changes to the definition of an active item

+				listing.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to change the properties of a

+						currently active listing. Inputs are the item ID of

+						the ended item being re-listed and any properties

+						that are being changed for the revision.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Required. Child elements hold the values for properties that are changing.

+								The Item.ItemID property must always be set to the ID of the item listing being

+								changed. Set values in the Item object only for those properties that are

+								changing. Use DeletedField to remove a property.

+				  			Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModifiedFields" type="ns:ModifiedFieldType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								In release 439 and later, ModifiedFields is no longer required to change

+								field values, but it is still supported for backward compatibility.

+								It is strongly recommended that you do not use ModifiedFields in this call.

+								See the eBay Web Services Guide for information about the DeletedField tag and for

+								rules and guidelines for changing values when revising items.

+								ModifiedFields contains an array of item property changes. Each element in the array indicates a

+								first level property in the Item object (specified in the Item property)

+								that is changing in the revision. Item properties not specified in

+								ModifiedFields are not changed in the item revision - even if a new value

+								is specified in the property in the Item object. Properties not specified

+								retain the same value as is present in the active item listing being

+								revised. To remove a property from the item, specify it as changed

+								in ModifiedFields, but do not specify a value in Item.

+								Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+									<TagStatus>Deprecated</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DeletedField" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the name of a field to delete from a listing.

+								You cannot delete required fields from a listing.&lt;br&gt;&lt;br&gt;

+								Some fields are optional when you first list an item (e.g., ListingEnhancement),

+								but once they are set they cannot be deleted when you revise an item.

+								Some optional fields cannot be deleted if the item has bids and/or ends within 12 hours.

+								Some optional fields cannot be deleted if other fields depend on them.

+								For example, if GalleryType was already set for the item you are revising,

+								you cannot remove it. Therefore, you still need to include at least one picture URL, a gallery URL,

+								or a catalog stock photo in your revised listing.

+								See the eBay Web Services guide for rules on removing values when revising items.

+								Also see the relevant field descriptions for details on when to use DeletedField

+								(and potential consequences).&lt;br&gt;&lt;br&gt;

+								The request can contain zero, one, or many instances of DeletedField (one for each field to be deleted).

+								DeletedField accepts the following path names, which delete the corresponding nodes:&lt;br&gt;&lt;br&gt;

+								<!-- Item.ApplicationData (coming soon)&lt;br&gt; -->

+								Item.AttributeSetArray&lt;br&gt;

+								<!-- Item.BuyItNowPrice (coming soon)&lt;br&gt; -->

+								Item.DigitalDeliveryDetails&lt;br&gt;

+								Item.ListingDesigner.LayoutID&lt;br&gt;

+								Item.ListingDesigner.ThemeID&lt;br&gt;

+								Item.PayPalEmailAddress&lt;br&gt;

+								Item.PictureDetails.GalleryURL&lt;br&gt;

+								Item.PictureDetails.PictureURL&lt;br&gt;

+								Item.PostalCode&lt;br&gt;

+								Item.ProductListingDetails&lt;br&gt;

+								Item.ProximitySearchDetails.PostalCode&lt;br&gt;

+								<!-- Item.ReservePrice (coming soon)&lt;br&gt; -->

+								Item.ShippingDetails.PaymentInstructions&lt;br&gt;

+								Item.SKU&lt;br&gt;&lt;br&gt;

+								These values are case-sensitive. Use values that match the case of the schema element names

+								(Item.PictureDetails.GalleryURL) or make the initial letter of each field name lowercase (item.pictureDetails.galleryURL).

+								However, do not change the case of letters in the middle of a field name.

+								For example, item.picturedetails.galleryUrl is not allowed.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseItem -->

+	<xs:element name="ReviseItemResponse" type="ns:ReviseItemResponseType"/>

+	<xs:complexType name="ReviseItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the item ID and the estimated fees for the revised listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Item ID that uniquely identifies the item listing that was revised.

+								Provided for confirmation purposes. The value returned should be the

+								same as the item ID specified in the ItemID property of the Item object

+								specified as input for the call.

+								Also applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Starting date and time for the new listing.

+								Also returned for Half.com (for Half.com, the start time is

+								always the time the item was listed).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Date and time when the new listing ends. This is the starting time

+								plus the listing duration.

+								Also returned for Half.com, but for Half.com the actual end time is GTC

+								(not the end time returned in the response).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Fees" type="ns:FeesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements contain the estimated listing fees for the revised item

+								listing. The fees do not include the Final Value Fee (FVF), which cannot

+								be determined until an item is sold. Revising an item does not itself

+								incur a fee. However, certain item properties are fee-based and result

+								in the return of fees in the call's response.

+								Not applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the primary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID passed in Item.PrimaryCategory was mapped to a new ID by eBay.

+								If the primary category has not changed or it has expired with no replacement,

+								CategoryID does not return a value.

+								Not applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Category2ID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the secondary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID passed in Item.SecondaryCategory was mapped to a new ID by eBay.

+								If the secondary category has not changed or it has expired with no replacement,

+								Category2ID does not return a value.

+								Not applicable to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>ReviseItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseLiveAuctionItem -->

+	<xs:element name="ReviseLiveAuctionItemRequest" type="ns:ReviseLiveAuctionItemRequestType"/>

+	<xs:complexType name="ReviseLiveAuctionItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to make changes to the definition of an active item

+				listing that listed for the Live Auction.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables an eBay Live Auctions seller to modify a

+						single lot item on the eBay Live Auctions site.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Required. Child elements hold the values for properties that are changing.

+								The Item.ID property must always be set to the ID of the item listing being

+								changed. Set values in the Item object only for those properties that are

+								changing. To remove a property, do not give it a value in Item, but

+								specify it as changed in ModifiedFields. Each first-level property

+								that has a changed value must be listed in the ModifiedFields property.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseLiveAuctionItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ModifiedFields" type="ns:ModifiedFieldType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Array of item property changes. Each element in the array indicates a

+								first level property in the Item object (specified in the Item property)

+								that is changing in the revision. Item properties not specified in

+								ModifiedFields are not changed in the item revision - even if a new value

+								is specified in the property in the Item object. Properties not specified

+								retain the same value as is present in the active item listing being

+								revised. To remove a property from the item, specify it as changed

+								in ModifiedFields, but do not specify a value in Item.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseLiveAuctionItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DeletedField" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+					<xs:annotation>

+						<xs:documentation>

+							Reserved for future use.

+						</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>ReviseLiveAuctionItem</CallName>

+								<RequiredInput>No</RequiredInput>

+							</CallInfo>

+						</xs:appinfo>

+					</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseLiveAuctionItem -->

+	<xs:element name="ReviseLiveAuctionItemResponse" type="ns:ReviseLiveAuctionItemResponseType"/>

+	<xs:complexType name="ReviseLiveAuctionItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the item ID and the estimated fees for the revised listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Item ID that uniquely identifies the item listing that was revised.

+								Provided for confirmation purposes. The value returned should be the

+								same as the item ID specified in the ItemID property of the Item object

+								specified as input for the call.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>ReviseLiveAuctionItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Fees" type="ns:FeesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements contain the estimated listing fees for the revised item

+								listing. The fees do not include the Final Value Fee (FVF), which cannot

+								be determined until an item is sold. Revising an item does not itself

+								incur a fee. However, certain item properties are fee-based and result

+								in the return of fees in the call's response.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseLiveAuctionItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the primary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID passed in Item.PrimaryCategory was mapped to a new ID by eBay.

+								If the primary category has not changed or it has expired with no replacement,

+								CategoryID does not return a value.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>ReviseLiveAuctionItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Category2ID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the secondary category in which the item was listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID passed in Item.SecondaryCategory was mapped to a new ID by eBay.

+								If the secondary category has not changed or it has expired with no replacement,

+								Category2ID does not return a value.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>ReviseLiveAuctionItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseMyMessages -->

+	<xs:element name="ReviseMyMessagesRequest" type="ns:ReviseMyMessagesRequestType"/>

+	<xs:complexType name="ReviseMyMessagesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Sets the read state for messages and alerts, the flagged state of messages, and moves

+				alerts and messages into and out of folders.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Sets the read state for messages and alerts, the flagged state of messages, and moves

+						alerts and messages into and out of folders.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="MessageIDs" type="ns:MyMessagesMessageIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of up to 10 MessageID values. Either AlertIDs, MessageIDs,

+								or both must be included in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseMyMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="AlertIDs" type="ns:MyMessagesAlertIDArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains a list of up to 10 AlertID values. Either AlertIDs, MessageIDs,

+								or both must be included in the request

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseMyMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Read" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Changes the read states of all alerts and

+								messages specified in a request by their AlertID

+								or MessageID values. At least one of Read,

+								Flagged, or FolderID must be specified in the

+								request. Note that alerts and messages retrieved

+								with the API are not automatically marked Read,

+								and must be marked Read with this call.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseMyMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Flagged" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Changes the flagged states of all messages specified in a request

+								by their MessageID values. At least one of Read, Flagged, or FolderID

+								 must be specified in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseMyMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FolderID" type="xs:long" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								An ID that uniquely identifies the My Messages folder to move

+								alerts and messages into. At least one of Read, Flagged, or FolderID

+								 must be specified in the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseMyMessages</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseMyMessages -->

+	<xs:element name="ReviseMyMessagesResponse" type="ns:ReviseMyMessagesResponseType"/>

+	<xs:complexType name="ReviseMyMessagesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				The response to ReviseMyMessagesRequestType. If the request was successful, 

+				ReviseMyMessages returns nothing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseMyMessagesFolders -->

+	<xs:element name="ReviseMyMessagesFoldersRequest" type="ns:ReviseMyMessagesFoldersRequestType"/>

+	<xs:complexType name="ReviseMyMessagesFoldersRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Renames, removes, or restores specified My Messages folders for

+				a given user.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Renames, removes, or restores specified My Messages folders

+						for a given user.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Operation" type="ns:MyMessagesFolderOperationCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the type of operation to perform on a

+								specified My Messages folder. Operations include

+								renaming, removing, and restoring folders. Operations

+								cannot be performed on the Inbox and Sent folders.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseMyMessagesFolders</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FolderID" type="xs:long" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								An ID that uniquely identifies the My Messages

+								folder to perform the operation on. Retrieve FolderIDs

+								by calling GetMyMessages with a DetailLevel of

+								ReturnSummary. Inbox is FolderID = 0, and Sent is

+								FolderID = 1.

+								</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseMyMessagesFolders</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="FolderName" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+							The name of a specified My Messages folder. Depending

+							on the specified Operation, the value is an existing

+							folder name or a new folder name. Retrieve existing

+							FolderNames by calling GetMyMessages with a DetailLevel

+							of ReturnSummary. Inbox is FolderID = 0, and Sent is

+							FolderID = 1.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ReviseMyMessagesFolders</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ReviseMyMessagesFolders -->

+	<xs:element name="ReviseMyMessagesFoldersResponse" type="ns:ReviseMyMessagesFoldersResponseType"/>

+	<xs:complexType name="ReviseMyMessagesFoldersResponseType">

+		<xs:complexContent>

+		<xs:annotation>

+			<xs:documentation>

+				The response to ReviseMyMessagesFoldersRequestType. If the request was successful, 

+				ReviseMyMessagesFolders returns nothing.

+			</xs:documentation>

+		</xs:annotation>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SellerReverseDispute -->

+	<xs:element name="SellerReverseDisputeRequest" type="ns:SellerReverseDisputeRequestType"/>

+	<xs:complexType name="SellerReverseDisputeRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to reverse an Unpaid Item dispute that has been

+				closed, for example, if buyer and seller reach an agreement. The

+				seller's Final Value Fee credit and the buyer's strike are both

+				reversed.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to reverse an Unpaid Item dispute that has been

+						closed, for example, if buyer and seller reach an agreement.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="DisputeID" type="ns:DisputeIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The unique identifier of the dispute that was returned when the dispute was created.

+								The dispute must be an Unpaid Item dispute that the seller opened. Required.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SellerReverseDispute</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DisputeResolutionReason" type="ns:DisputeResolutionReasonCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The reason the dispute is being reversed. Required.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SellerReverseDispute</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SellerReverseDispute -->

+	<xs:element name="SellerReverseDisputeResponse" type="ns:SellerReverseDisputeResponseType"/>

+	<xs:complexType name="SellerReverseDisputeResponseType">

+		<xs:annotation>

+			<xs:documentation>

+            		 Returned after calling SellerReverseDisputeRequest. Contains the status

+            		 of the call and any errors or warnings.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SendInvoice -->

+	<xs:element name="SendInvoiceRequest" type="ns:SendInvoiceRequestType"/>

+	<xs:complexType name="SendInvoiceRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables a seller to send an invoice to buyer for a transaction.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to send an invoice to a buyer for a transaction.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Item ID. If OrderID is not provided, both ItemID and

+								TransactionID must be provided.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID for the transaction with which the item was sold.

+								If OrderID is not provided, both ItemID and

+								TransactionID must be provided.

+								For Chinese auctions, the value passed in the TransactionId

+								argument must be 0 or the call will fail with an error.

+								Call GetItemTransactions or GetSellerTransactions to

+								determine the correct transaction ID.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="OrderID" type="ns:OrderIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Unique ID for a multi-item order. Either this OrderID must

+								be specified or ItemID plus TransactionID must be specified.

+								If OrderID is specified, ItemID and

+								TransactionID are ignored if present in the same request. Changes to the

+								checkout status are applied to the specified order as a whole

+								(and thus to the child transactions associated with the order).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="InternationalShippingServiceOptions" type="ns:InternationalShippingServiceOptionsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Shipping costs and options related to an international

+								shipping service. When used as input, if one is provided,

+								at least one domestic ShippingService must be provided.&lt;br&gt;

+								&lt;br&gt;

+								Not applicable to invoices for digital listings.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ShippingServiceOptions" type="ns:ShippingServiceOptionsType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates the shipping service that would be used to ship the item (such

+								as UPS Ground). Seller can provide up to three. Shipping insurance cost

+								should be identical for all domestic services.&lt;br&gt;

+								&lt;br&gt;

+								Not applicable to invoices for digital listings.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SalesTax" type="ns:SalesTaxType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The details of the sales tax added to the invoice.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="InsuranceOption" type="ns:InsuranceOptionCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether insurance fee is required. An InsuranceOption value of

+								IncludedInShippingHandling cannot be used if the item will use calculated

+								shipping. Some shipping carriers automatically include shipping insurance

+								for qualifying items.&lt;br&gt;

+								&lt;br&gt;

+								Not applicable to invoices for digital listings.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+								<SeeLink>

+									<Title>Getting Shipping Cost Information</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShippingGettingCosts</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="InsuranceFee" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>Insurance cost, as set by seller, if ShippingType = 1.

+								Specify if InsuranceOption is optional or required. Must

+								be greater than zero value if a value of Optional or Required is passed in

+								InsuranceOption. Value specified should be the total cost of insuring the

+								item.&lt;br&gt;

+								&lt;br&gt;

+								Not applicable to invoices for digital listings.

+							</xs:documentation>

+							<xs:appinfo>

+								<Default>0.0</Default>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+								<SeeLink>

+									<Title>Getting Shipping Cost Information</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShippingGettingCosts</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PaymentMethods" type="ns:BuyerPaymentMethodCodeType" minOccurs="0"  maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Optional ability for the seller to add certain payment methods on

+								transaction if they were not originally specified on the item.  Valid

+								values are PayPal in the US, MoneyXferAcceptedInCheckout (CIP+) in

+								Germany, and Escrow in China

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PayPalEmailAddress" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Provide PayPal email address if the payment method added is PayPal.

+								For digital listings, this must be an email address associated with

+								a verified PayPal Premier or Business account.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CheckoutInstructions" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								 Seller's Payment instructions/message to the buyer and return policy.

+								 Default is null.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>500</MaxLength>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EmailCopyToSeller" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether the seller wishes to be copied on the invoice email that

+								will be sent to the buyer. Default will be true.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SendInvoice</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SendInvoice -->

+	<xs:element name="SendInvoiceResponse" type="ns:SendInvoiceResponseType"/>

+	<xs:complexType name="SendInvoiceResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the status.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetNotificationPreferences -->

+	<xs:element name="SetNotificationPreferencesRequest"	type="ns:SetNotificationPreferencesRequestType"/>

+	<xs:complexType name="SetNotificationPreferencesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Manages a user's notification preferences. These preferences can be at the application

+				level, or at the user level.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Manages a user's notification preferences. Part of

+						eBay Platform Notifications, which

+						can be used to alert Production-certified

+						applications when certain events occur on the eBay

+						site.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ApplicationDeliveryPreferences" type="ns:ApplicationDeliveryPreferencesType" minOccurs="0">

+						<xs:annotation>

+		 					<xs:documentation>

+								Specifies application-based event preferences that have been enabled.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetNotificationPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UserDeliveryPreferenceArray" type="ns:NotificationEnableArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Array of NotificationEventEnableTypes. Each NotificationEventEnableType

+								contains an EventSetting and an EventType.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetNotificationPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="UserData" type="ns:NotificationUserDataType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies user data for notification settings such as mobile phone number.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetNotificationPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EventProperty" type="ns:NotificationEventPropertyType" minOccurs="0" maxOccurs="unbounded">

+						<xs:annotation>

+							<xs:documentation>

+								Characteristics or details of an event such as type, name and value.

+								Currently can only be set for wireless applications.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetNotificationPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetNotificationPreferences -->

+	<xs:element name="SetNotificationPreferencesResponse"  type="ns:SetNotificationPreferencesResponseType"/>

+	<xs:complexType name="SetNotificationPreferencesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Returned after a call to SetNotificationPreferences to indicate that the call succeeded.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetPictureManagerDetails -->

+	<xs:element name="SetPictureManagerDetailsRequest" type="ns:SetPictureManagerDetailsRequestType"/>

+	<xs:complexType name="SetPictureManagerDetailsRequestType">

+		<xs:annotation>

+			<xs:documentation>

+	      Creates, updates, or deletes Picture Manager account settings, folders, or pictures.

+	    </xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Creates, updates, or deletes Picture Manager account settings, folders, or pictures.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="PictureManagerDetails" type="ns:PictureManagerDetailsType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the setting or folder to create, update, or delete, or the picture to update. You cannot upload or delete pictures using SetPictureManagerDetails; you must use the eBay site.

+					    </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetPictureManagerDetails</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Action" type="ns:PictureManagerActionCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the action to take on the setting, folder, or picture.

+								The values Add and Delete apply only to folders.

+					   	</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetPictureManagerDetails</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetPictureManagerDetails -->

+	<xs:element name="SetPictureManagerDetailsResponse" type="ns:SetPictureManagerDetailsResponseType"/>

+	<xs:complexType name="SetPictureManagerDetailsResponseType">

+		<xs:annotation>

+			<xs:documentation>

+	     Returns the status of an action on a setting, folder, or picture in a Picture Manager account.

+	    </xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetPromotionRules -->

+	<xs:element name="SetPromotionRulesRequest" type="ns:SetPromotionRulesRequestType"/>

+	<xs:complexType name="SetPromotionRulesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests to define cross-promotion rules for an item

+				or store category.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests to define cross-promotion rules for an item

+						or store category.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="OperationType" type="ns:OperationTypeCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether the update is for item rules or default rules for the promotion

+								type. Allowed values are ItemRules or ReplaceAllDefaultRules. Required when

+								setting default rules.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetPromotionRules</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="PromotionRuleArray" type="ns:PromotionRuleArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies a list of cross-promotion rules to set.

+								Each rule defines a referring item or store category

+								and the cross-promoted items or store categories.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetPromotionRules</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetPromotionRules -->

+	<xs:element name="SetPromotionRulesResponse" type="ns:SetPromotionRulesResponseType"/>

+	<xs:complexType name="SetPromotionRulesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+          	  Returned after calling SetPromotionRulesRequest to indicate

+			  whether the rules have been set successfully.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetReturnURL -->

+	<xs:element name="SetReturnURLRequest" type="ns:SetReturnURLRequestType"/>

+	<xs:complexType name="SetReturnURLRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Configures your application's Auth n Auth preferences and other data, such as the

+				URLs that eBay should redirect users to after they complete the authentication and

+				authorization process. This call must be authenticated using the application's

+				username and password (not an authentication token).

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Configures your application's authentication and authorization preferences and

+						other data, such as the URLs that eBay should redirect users to after they

+						complete the authentication and authorization process.

+					</Summary>

+				</Overview>

+				<SeeLink>

+					<Title>Authentication &amp; Authorization</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="AuthenticationEntry" type="ns:AuthenticationEntryType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The authentication preferences and other data that you are

+								adding, deleting, or modifying.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetReturnURL</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+								<SeeLink>

+									<Title>Authentication &amp; Authorization</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ApplicationDisplayName" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Sets an application display name for the eBay sign-in page.

+								Need not be set with every call. Optional.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetReturnURL</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+								<SeeLink>

+									<Title>Authentication &amp; Authorization</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Action" type="ns:ModifyActionCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether the authentication entry is being added, deleted, or

+								modified.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetReturnURL</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+								<SeeLink>

+									<Title>Authentication &amp; Authorization</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+								</SeeLink>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetReturnURL -->

+	<xs:element name="SetReturnURLResponse" type="ns:SetReturnURLResponseType"/>

+	<xs:complexType name="SetReturnURLResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Confirms whether your application's authentication preferences and other details

+				were configured successfully.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetStore -->

+	<xs:element name="SetStoreRequest" type="ns:SetStoreRequestType"/>

+	<xs:complexType name="SetStoreRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the Store configuration that is being set by this call.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Contains the Store configuration that is being set by this call.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Store" type="ns:StoreType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+					      Specifies the Store configuration that is being set for the user.

+					    </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStore</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetStore -->

+	<xs:element name="SetStoreResponse" type="ns:SetStoreResponseType"/>

+	<xs:complexType name="SetStoreResponseType">

+	  <xs:annotation>

+	    <xs:documentation>

+	      Returned after calling SetStoreRequest. This serves as confirmation that

+        the Store configuration was successfully submitted.

+	    </xs:documentation>

+	  </xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetStoreCategories -->

+	<xs:element name="SetStoreCategoriesRequest" type="ns:SetStoreCategoriesRequestType"/>

+	<xs:complexType name="SetStoreCategoriesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests changes to the category structure for a store. Use this

+				call to add, delete, move, or rename a list of categories.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests changes to the category structure for a store.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Action" type="ns:StoreCategoryUpdateActionCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the type of action (Add, Move, Delete, or Rename) to carry out

+								for the specified categories.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStoreCategories</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemDestinationCategoryID" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Items can only be contained within child categories. A parent category

+								cannot contain items. If adding, moving, or deleting categories displaces

+								items, you must specify a destination child category under which the

+								displaced items will be moved. The destination category must have no

+								child categories.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStoreCategories</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="DestinationParentCategoryID" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								When adding or moving store categories, specifies the category under

+								which the listed categories will be located. To add or move categories to

+								the top level, set the value to -999.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStoreCategories</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element  name="StoreCategories"  type="ns:StoreCustomCategoryArrayType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains information for specifying the store categories being acted on.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStoreCategories</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetStoreCategories -->

+	<xs:element name="SetStoreCategoriesResponse" type="ns:SetStoreCategoriesResponseType"/>

+	<xs:complexType name="SetStoreCategoriesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the status of the processing progress for changes to the category 

+				structure for a store.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="TaskID" type="xs:long" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The task ID associated with the category structure change request. If the 

+								SetStoreCategories call is process synchronously, the task ID is 0. If the 

+								category structure changes affect many listings, the changes will be 

+								processed asynchronously and the task ID will be a positive number. Use 

+								the task ID with GetStoreCategoryUpdateStatus to monitor the status of 

+								asynchronously processed changes.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStoreCategories</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Status" type="ns:TaskStatusCodeType" minOccurs="0">  <!-- Done/Queued/InProgress/Failed -->

+						<xs:annotation>

+							<xs:documentation>

+								When a category structure change is processed synchronously, the status 

+								is returned as Complete or Failed. For asynchronously processed changes, 

+								the status is reported as Pending. Use GetStoreCategoryUpdateStatus to 

+								monitor the status of asynchronously processed changes.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStoreCategories</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetStoreCustomPage -->

+	<xs:element name="SetStoreCustomPageRequest" type="ns:SetStoreCustomPageRequestType"/>

+	<xs:complexType name="SetStoreCustomPageRequestType">

+		<xs:annotation>

+			<xs:documentation>

+	      Sets a Store custom page.

+	    </xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+			      Sets a custom page for a user's eBay Store. The

+			      page can include static HTML content as well as

+			      dynamic content that is added using the special eBay

+			      Stores tags.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="CustomPage" type="ns:StoreCustomPageType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+	   				  	The custom page being submitted.

+	  					</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStoreCustomPage</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetStoreCustomPage -->

+	<xs:element name="SetStoreCustomPageResponse" type="ns:SetStoreCustomPageResponseType"/>

+	<xs:complexType name="SetStoreCustomPageResponseType">

+	  <xs:annotation>

+	    <xs:documentation>

+	      Returned after calling SetStoreCustomPageRequest. This serves as

+	      confirmation that the custom page was successfully submitted.

+	    </xs:documentation>

+	  </xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="CustomPage" type="ns:StoreCustomPageType" minOccurs="0">

+		  			<xs:annotation>

+	    				<xs:documentation>

+	   				  	The custom page that was submitted.

+	  					</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStoreCustomPage</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>				

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetStorePreferences -->

+	<xs:element name="SetStorePreferencesRequest" type="ns:SetStorePreferencesRequestType"/>

+	<xs:complexType name="SetStorePreferencesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the Store configuration that is being set by this call.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Sets the preferences for a user's eBay Store. These

+						preferences include various seller vacation options.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="StorePreferences" type="ns:StorePreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+					      Specifies the store preferences.

+					    </xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetStorePreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetStorePreferences -->

+	<xs:element name="SetStorePreferencesResponse" type="ns:SetStorePreferencesResponseType"/>

+	<xs:complexType name="SetStorePreferencesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+	      Returned after calling SetStorePreferencesRequest. This serves as confirmation that 

+        the Store preferences were successfully submitted.

+	    </xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetTaxTable -->

+	<xs:element name="SetTaxTableRequest" type="ns:SetTaxTableRequestType"/>

+	<xs:complexType name="SetTaxTableRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Sets the tax table for a seller on a given site.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Sets the tax table for a seller on a given site.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="TaxTable" type="ns:TaxTableType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								A container of tax jurisdiction information unique to a user/site combination.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetTaxTable</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetTaxTable -->

+	<xs:element name="SetTaxTableResponse" type="ns:SetTaxTableResponseType"/>

+	<xs:complexType name="SetTaxTableResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Response to SetTaxTableRequest.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetUserNotes -->

+	<xs:element name="SetUserNotesRequest" type="ns:SetUserNotesRequestType"/>

+	<xs:complexType name="SetUserNotesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Enables users to add, modify and delete Notes from the items that are being tracked in

+				the My eBay All Selling and All Buying areas.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables users to add, modify and delete Notes from the items that are being tracked in

+						the My eBay All Selling and All Buying areas.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the item to which the note will be attached.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>SetUserNotes</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Action" type="ns:SetUserNotesActionCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies whether to add/update the note or delete.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserNotes</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="NoteText" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Text of the note. Maximum 250 characters.

+								Required only if the Action is AddOrUpdate.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>250</MaxLength>

+								<CallInfo>

+									<CallName>SetUserNotes</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetUserNotes -->

+	<xs:element name="SetUserNotesResponse" type="ns:SetUserNotesResponseType"/>

+	<xs:complexType name="SetUserNotesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the status of the call.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType"/>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetUserPreferences -->

+	<xs:element name="SetUserPreferencesRequest" type="ns:SetUserPreferencesRequestType"/>

+	<xs:complexType name="SetUserPreferencesRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Sets the user's preferences to those specified in the request. As

+				a general rule, once you set a preference,  GetUserPreferences

+				and the user's preferences displayed on the eBay Web site should

+				reflect the new setting immediately. However, it could take up to

+				7 days for the change to have any logical or functional effect.

+				For example, if you change your combined payment preferences, it

+				could take up to 7 days for eBay to apply the updated combined

+				payment settings to your listings. Also, once you set a

+				preference, you cannot change its setting again within 7 days.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Sets the user's preferences to those specified in the request.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="BidderNoticePreferences" type="ns:BidderNoticePreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The user's bidder notice preferences to be set.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CombinedPaymentPreferences" type="ns:CombinedPaymentPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The user's combined payment preferences to be set.

+								When you change these preferences, it can take up to 7 days for the change

+								to have any logical or functional effect on eBay. &lt;br&gt;

+								&lt;br&gt;

+								For the US and Germany sites, combined payment preferences can also affect whether a

+								seller is eligible to list on Express.

+								A seller needs to allow shoppers to pay by single, combined payments for their purchases.

+								A seller is not eligible for Express if they don't allow combined payments.

+								Once changes to these preferences take effect on eBay (within 7 days), it can take up to 7 more days for

+								existing items to be added to or removed from Express. Thus, it can take up to 14 days (total)

+								for combined payment preference changes to affect whether listings appear on Express.

+								Also see ExpressPreferences.ExpressSellingPreferences.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CrossPromotionPreferences" type="ns:CrossPromotionPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The user's cross promotion preferences to be set.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerPaymentPreferences" type="ns:SellerPaymentPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The user's seller payment preferences to be set.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerFavoriteItemPreferences" type="ns:SellerFavoriteItemPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Seller's favorite item preferences to be set.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndOfAuctionEmailPreferences" type="ns:EndOfAuctionEmailPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The seller's end of auction email preferences to be set.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="eBxOptInPreference" type="ns:eBxOptInPreferenceType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								TThe seller's Express opt-in preference, which indicates

+								whether they want their eligible listings to be included on eBay Express.

+								As of release 463, you should use ExpressPreferences instead.

+								Only applicable to sellers who are eligible to list on Express.

+								Call GetUser to determine the seller's eligibility.

+								This flag may be obsolete soon.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+									<TagStatus>ObsoleteSoon</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExpressPreferences" type="ns:ExpressPreferencesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								The seller's Express preferences. Currently used to indicate

+								which of the seller's eligible listings to include on Express.

+								You can only set these preferences for sellers who are eligible

+								to list on Express.

+								To determine the seller's eligibility, call GetUser and check the value of SellerInfo.ExpressEligible.

+								Once you set Express preferences, you cannot set them again

+								(e.g., to change the value) within 7 days.

+								Also see CombinedPaymentPreferences, which affect a seller's

+								eligibility to list on Express.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>SetUserPreferences</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: SetUserPreferences -->

+	<xs:element name="SetUserPreferencesResponse" type="ns:SetUserPreferencesResponseType"/>

+	<xs:complexType name="SetUserPreferencesResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returned after a call to SetUserPreferences to indicate that the call succeeded.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ValidateTestUserRegistration -->

+	<xs:element name="ValidateTestUserRegistrationRequest" type="ns:ValidateTestUserRegistrationRequestType"/>

+	<xs:complexType name="ValidateTestUserRegistrationRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Requests to enable a test user to sell items in the Sandbox environment.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Requests to enable a test user to sell items in the Sandbox environment.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="FeedbackScore" type="xs:int" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Value for the feedback score of a user. If no value is passed in the request,

+								or if the value is zero, the feedback score is unchanged. This element is not intended

+								for regularly testing feedback because the feedback value can change after the request.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ValidateTestUserRegistration</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="RegistrationDate" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Value for the date and time that a user's registration begins.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ValidateTestUserRegistration</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SubscribeSA" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates if a user subscribes to Seller's Assistant. You cannot

+								request to subscribe a user to both Seller's Assistant and

+								Seller's Assistant Pro. You cannot request to unsubscribe a user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ValidateTestUserRegistration</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SubscribeSAPro" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates if a user subscribes to Seller's Assistant Pro. You cannot

+								request to subscribe a user to both Seller's Assistant and

+								Seller's Assistant Pro. You cannot request to unsubscribe a user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ValidateTestUserRegistration</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SubscribeSM" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates if a user subscribes to Selling Manager. You cannot

+								request to subscribe a user to both Selling Manager and

+								Selling Manager Pro. You cannot request to unsubscribe a user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ValidateTestUserRegistration</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SubscribeSMPro" type="xs:boolean" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Indicates if a user subscribes to Selling Manager Pro. You cannot

+								request to subscribe a user to both Selling Manager and

+								Selling Manager Pro. You cannot request to unsubscribe a user.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>ValidateTestUserRegistration</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: ValidateTestUserRegistration -->

+	<xs:element name="ValidateTestUserRegistrationResponse" type="ns:ValidateTestUserRegistrationResponseType"/>

+	<xs:complexType name="ValidateTestUserRegistrationResponseType">

+	  <xs:annotation>

+	    <xs:documentation>

+	      Returned after calling ValidateTestUserRegistrationRequest; confirms a successful

+	      call.

+	    </xs:documentation>

+	  </xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: VerifyAddItem -->

+	<xs:element name="VerifyAddItemRequest" type="ns:VerifyAddItemRequestType"/>

+	<xs:complexType name="VerifyAddItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines a single new item and tests the definition for validity. Behaves exactly

+				the same as AddItem (same inputs, same outputs, and same behavior and usage rules),

+				but without actually listing the item to an eBay site. Applications can use this call

+				to test the definition of an item before actually listing it to eBay with AddItem,

+				reducing item listing-related errors.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Enables a seller to specify the properties for a new

+						item and submit to eBay without creating a

+						listing. This enables the seller to test

+						the specified item properties for validity and get

+						an estimate of the listing fees before actually

+						listing the item. Inputs are the same as for AddItem.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ItemType object, the properties of which define the new item listing.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ExternalProductID" type="ns:ExternalProductIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								&lt;b&gt;Deprecated.&lt;/b&gt; This field will be removed from the schema

+								in a future release. Recommended usage as of release 439 varies for

+								eBay.com listings and Half.com listings.

+								&lt;br&gt;&lt;br&gt;

+								For eBay.com listings:

+								As of release 439, this field can still be passed in, but we recommend

+								that you update your applications to use the ExternalProductID field

+								defined on the item instead (i.e., Item.ExternalProductID). If you

+								specify both Item.ExternalProductID and this field in the same request,

+								eBay uses the value in Item.ExternalProductID and ignores the value in

+								this field. See Item.ExternalProductID for information on using an

+								external ID for eBay.com listings.

+								&lt;br&gt;&lt;br&gt;

+								For Half.com listings:

+								As of release 439, this field is required for Half.com listings.

+								Causes Half.com to list the item with Pre-filled Item Information based on

+								an ISBN value or other supported external ID, plus other meta-data that

+								you specify. See the eBay Web Services guide for information about

+								listing to Half.com.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddItem</CallName>

+									<RequiredInput>Conditionally</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: VerifyAddItem -->

+	<xs:element name="VerifyAddItemResponse" type="ns:VerifyAddItemResponseType"/>

+	<xs:complexType name="VerifyAddItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				Returns the estimated fees that would be applicable for a new listing

+				(were the item actually listed to eBay with AddItem).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Represents the item ID for the new listing. VerifyAddItem does not

+								actually list an item, so 0 is returned instead of a normal item ID.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>VerifyAddItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Fees" type="ns:FeesType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Child elements contain the estimated listing fees for the new item listing.

+								The fees do not include the Final Value Fee (FVF), which cannot be determined

+								until an item is sold.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the primary category in which the item would be listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID you passed in PrimaryCategory was mapped to a new ID by eBay.

+								If the primary category has not changed or it has expired with no replacement,

+								CategoryID does not return a value.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>VerifyAddItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Category2ID" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								ID of the secondary category in which the item would be listed.

+								Only returned if you set Item.CategoryMappingAllowed to true in the request

+								and the ID you passed in SecondaryCategory was mapped to a new ID by eBay.

+								If the secondary category has not changed or it has expired with no replacement,

+								Category2ID does not return a value.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>10</MaxLength>

+								<CallInfo>

+									<CallName>VerifyAddItem</CallName>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<!--  Call: VerifyAddSecondChanceItem -->

+	<xs:element name="VerifyAddSecondChanceItemRequest" type="ns:VerifyAddSecondChanceItemRequestType"/>

+	<xs:complexType name="VerifyAddSecondChanceItemRequestType">

+		<xs:annotation>

+			<xs:documentation>

+				Emulates the creation of a new Second Chance Offer

+				listing for an item to one of that item's non-winning

+				bidders.

+			</xs:documentation>

+			<xs:appinfo>

+				<Overview>

+					<Summary>

+						Tests the input for AddSecondChanceItem, without

+						actually creating the second chance offer listing.

+						Used for testing the listing of an item

+						that will be made for one of the item's non-winning

+						bidders.

+					</Summary>

+				</Overview>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractRequestType">

+				<xs:sequence>

+					<xs:element name="RecipientBidderUserID" type="ns:UserIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the bidder from the original,

+								ended listing to whom the seller is extending

+								the second chance offer. Specify only one

+								RecipientBidderUserID per call. If multiple

+								users are specified (each in a

+								RecipientBidderUserID node), only the last one

+								specified receives the offer.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="BuyItNowPrice" type="ns:AmountType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the amount the offer recipient

+								must pay to purchase the item from the second

+								chance offer listing. Use only when the original

+								item was an eBay Motors (or in some categories

+								on U.S. and international sites for high-priced

+								items, such as items in many U.S. and Canada

+								Business and Industrial categories) and it ended

+								unsold because the reserve price was not met.

+								Call fails with an error for any other item

+								conditions.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="CopyEmailToSeller" type="xs:boolean">

+						<xs:annotation>

+							<xs:documentation>

+									Specifies whether to send a

+									copy to the seller of the second chance offer

+									notification email that goes to the recipient

+									user. With 457, the seller always receives a

+									copy of the email, and this tag is ignored as

+									input.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<RequiredInput>No</RequiredInput>

+									<TagStatus>Obsolete</TagStatus>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Duration" type="ns:SecondChanceOfferDurationCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+									Specifies the length of time the second

+									chance offer listing will be active. The

+									recipient bidder has that much time to

+									purchase the item or the listing expires.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Specifies the item ID for the original,

+								ended listing from which the second chance

+								offer item comes. A new ItemID is returned for

+								the second chance offer item.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<RequiredInput>Yes</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="Site" type="ns:SiteCodeType" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Reserved for internal or future use.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<NoCalls/>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="SellerMessage" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Message content. Cannot contain HTML,

+								asterisks, or quotes. This content is

+								included in the second chance offer email sent

+								to the recipient, which can be retrieved with

+								GetMyMessages.

+							</xs:documentation>

+							<xs:appinfo>

+								<MaxLength>1000</MaxLength>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<RequiredInput>No</RequiredInput>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+

+	<!--  Call: VerifyAddSecondChanceItem -->

+	<xs:element name="VerifyAddSecondChanceItemResponse" type="ns:VerifyAddSecondChanceItemResponseType"/>

+	<xs:complexType name="VerifyAddSecondChanceItemResponseType">

+		<xs:annotation>

+			<xs:documentation>

+				VerifyAddSecondChanceItem request to emulate creation of a new Second Chance Offer for an item to one of

+				that item's bidders.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="Fees" type="ns:FeesType"  minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								Contains the listing fees for the new second

+								chance offer listing. No fees are actually

+								assessed as VerifyAddSecondChanceItem does not actually create the new second chance offer

+								listing. Provides an estimate of the fees should

+								the offer actually be made using

+								AddSecondChanceItem.

+								See the documentation on Value-Added Tax.

+							</xs:documentation>

+							<xs:appinfo>

+								<SeeLink>

+									<Title>Value-Added Tax (VAT)</Title>

+									<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/B2BandVAT-Value-Added_Tax_(VAT).html</URL>

+								</SeeLink>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+									Indicates the date and time when the the new

+									second chance offer listing became active and

+									the recipient user could purchase the item.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+									Indicates the date and time when the second

+									chance offer listing expires, at which time

+									the listing ends (if the recipient user does

+									not purchase the item first).

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<CallName>VerifyAddSecondChanceItem</CallName>

+									<Returned>Always</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+

+

+	<!--  

+##### from file ../Shared/public/AbstractRequestType.xsd #####

+

+-->

+	<xs:complexType name="AbstractRequestType" abstract="true">

+		<xs:annotation>

+			<xs:documentation>

+				Base type definition of the request payload, which can carry any type of payload

+				content plus optional versioning information and detail level requirements. All

+				concrete request types (e.g., AddItemRequestType) are derived from the abstract

+				request type. The naming convention we use for the concrete type names is the name

+				of the service (the verb or call name) followed by "RequestType":

+				VerbNameRequestType

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DetailLevel" type="ns:DetailLevelCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Detail levels are instructions that define standard subsets of

+						data to return for particular data components (e.g., each

+						Item, Transaction, or User) within the response payload.

+						For example, a particular detail level might cause the

+						response to include buyer-related data in every result

+						(e.g., for every Item), but no seller-related data.

+						Specifying a detail level is like using a

+						predefined attribute list in the SELECT clause of an SQL query.

+						Use the DetailLevel element to specify the required detail level

+						that the client application needs pertaining to the data components

+						that are applicable to the request.&lt;br&gt;

+						&lt;br&gt;

+						The DetailLevelCodeType defines the

+						global list of available detail levels for all request types.

+						Most request types support certain detail

+						levels or none at all. If you pass a detail level that exists

+						in the schema but that isn't valid for a particular request,

+						eBay ignores it processes the request without it.

+						For each request type, see the detail level tables in the

+						Input/Output Reference to determine which detail levels are

+						applicable and which elements are returned for each applicable

+						detail level. (Some detail level tables are still in the

+						eBay Web Services guide. They will be moved to the

+						Input/Output Reference in a future release.)&lt;br&gt;

+						&lt;br&gt;Note that DetailLevel is required input for

+						GetMyMessages. &lt;br&gt;

+						&lt;br&gt;

+						With GetSellerList and other calls that retrieve large data sets,

+						please avoid using ReturnAll when possible. For example, if you use

+						GetSellerList, use a GranularityLevel or use the

+						GetSellerEvents call instead. If you do use ReturnAll with

+						GetSellerList, use a small EntriesPerPage value and a short

+						EndTimeFrom/EndTimeTo range for better performance.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAttributesCS</CallName>

+							<CallName>GetAttributesXSL</CallName>

+							<CallName>GetCategories</CallName>

+							<CallName>GetCategory2CS</CallName>

+							<CallName>GetCategory2FinanceOffer</CallName>

+							<CallName>GetCategoryFeatures</CallName>

+							<CallName>GetCategoryMappings</CallName>

+							<CallName>GetFeedback</CallName>

+							<CallName>GetFinanceOffers</CallName>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetMyMessages</CallName>

+							<CallName>GetOrders</CallName>

+							<CallName>GetOrderTransactions</CallName>

+							<CallName>GetProductFinder</CallName>

+							<CallName>GetProductFinderXSL</CallName>

+							<CallName>GetProductSearchPage</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSellerEvents</CallName>

+							<CallName>GetSellerList</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<CallName>GetTaxTable</CallName>

+							<CallName>GetUser</CallName>

+							<CallName>GetUserDisputes</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ErrorLanguage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Use ErrorLanguage to return error strings for the call in a different language

+						from the language commonly associated with the site that the requesting user

+						is registered with. Specify the standard RFC 3066 language identification tag

+						(e.g., en_US).

+						&lt;br&gt;

+						ID--- country&lt;br&gt;

+						----- -----&lt;br&gt;

+						de_AT Austria&lt;br&gt;

+						de_CH Switzerland&lt;br&gt;

+						de_DE Germany &lt;br&gt;

+						en_AU Australia &lt;br&gt;

+						en_CA Canada &lt;br&gt;

+						en_GB United Kingdom&lt;br&gt;

+						en_SG Singapore&lt;br&gt;

+						en_US United States &lt;br&gt;

+						es_ES Spain &lt;br&gt;

+						fr_BE Belgium (French)&lt;br&gt;

+						fr_FR France &lt;br&gt;

+						it_IT Italy &lt;br&gt;

+						nl_BE Belgium (Dutch)&lt;br&gt;

+						nl_NL Netherlands &lt;br&gt;

+						zh_TW Taiwan&lt;br&gt;

+						zh_CN China&lt;br&gt;

+						en_IN India&lt;br&gt;

+						en_IE Ireland&lt;br&gt;

+						zh_HK Hong Kong&lt;br&gt;

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<SeeLink>

+							<URL>http://www.ietf.org/rfc/rfc3066.txt</URL>

+							<Title>Tags for the Identification of Languages</Title>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MessageID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						In most cases, all calls support a MessageID element in the request and a

+						CorrelationID element in the response. If you pass a message ID in a request,

+						we will return the same value in CorrelationID in the response. You can use

+						this for tracking that a response is returned for every request and to match

+						particular responses to particular requests. If you do not pass MessageID in

+						the request, CorrelationID is not returned. Note that some calls are designed

+						to retrieve large sets of meta-data that only change once a day or less often.

+						To improve performance, these calls return cached responses when you request

+						all available data (with no filters). In these cases, the correlation ID is

+						not applicable. However, if you specify an input filter to reduce the amount

+						data returned, you can use MessageID and CorrelationID for these meta-data

+						calls. These are the meta-data calls that can return cached responses:

+						GetCategories, GetAttributesCS, GetCategory2CS, GetAttributesXsl,

+						GetProductFinder, GetProductFinderXsl, and GetProductSearchPage.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Version" type="xs:string"  minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The version of the request payload schema. If you are using the SOAP API, this

+						field is required in the body of the request. Specify the version of the

+						schema your application is using. If you are using the XML API, this field has

+						no effect. Instead, specify the version in the X-EBAY-API-COMPATIBILITY-LEVEL

+						HTTP header. (eBay only uses the value in this HTTP header when processing XML

+						API requests. If you specify Version in the body of an XML API request and it

+						is different from the value in the HTTP header, eBay returns an informational

+						warning that the value in the HTTP header was used instead.) The version you

+						specify for a call has two effects:&lt;br&gt;

+						- It directly indicates the version of the code lists and other data that eBay

+						should use to process your request.&lt;br&gt;

+						- It indirectly indicates the API compatibility level of the data and

+						functionality you are using.&lt;br&gt;

+						See the eBay Web Services guide for information about schema versions, code

+						lists, and compatibility levels.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ErrorHandling" type="ns:ErrorHandlingCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Error tolerance level for the call. For calls that support Item Specifics,

+						this is a preference that controls how eBay handles listing requests when

+						invalid attribute data is passed in. See Attribute Error Handling in the

+						eBay Web Services guide for details about this field in listing requests.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>CompleteSale</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InvocationID" type="ns:UUIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A unique identifer for a particular call. If the same InvocationID is passed

+						in after it has been passed in once on a call that succeeded for a particular

+						application and user, then an error will be returned. The identifier can

+						only contain digits from 0-9 and letters from A-F. The

+						identifier must be 32 characters long.  For example,

+						1FB02B2-9D27-3acb-ABA2-9D539C374228.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>32</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddMemberMessage</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>AddToItemDescription</CallName>

+							<CallName>PlaceOffer</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WarningLevel" type="ns:WarningLevelCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Controls whether or not to return warnings when the application passes

+						unrecognized elements in a request (i.e., elements that are not defined in the

+						schema). (This does not control warnings related to unrecognized values within

+						elements.) Schema element names are case-sensitive, so this option can also

+						help you remove any potential hidden bugs within your application due to

+						incorrect case or spelling in tag names before you put your application into

+						the Production environment. Note that this setting only validates elements; it

+						does not validate XML attributes.&lt;br&gt;

+						&lt;br&gt;

+						We recommend that you only use this during development and debugging. Do not

+						use this in requests in your production code.&lt;br&gt;

+					</xs:documentation>

+					<xs:appinfo>

+					  <CallInfo>

+							<AllCalls/>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<SeeLink>

+							<URL>https://ebay.custhelp.com/cgi-bin/ebay.cfg/php/enduser/std_adp.php?p_faqid=499</URL>

+							<Title>Warning Level</Title>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/AbstractResponseType.xsd #####

+

+-->

+	<xs:complexType name="AbstractResponseType" abstract="true">

+		<xs:annotation>

+			<xs:documentation>

+				Base type definition of a response payload that can carry any

+				type of payload content with following optional elements:&lt;br&gt;

+				- timestamp of response message&lt;br&gt;

+				- application-level acknowledgement&lt;br&gt;

+				- application-level (business-level) errors and warnings

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Timestamp" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						This value represents the date and time when eBay processed the

+						request. The time zone of this value is GMT and the format is the

+						ISO 8601 date and time format (YYYY-MM-DDTHH:MM:SS.SSSZ). See Time

+						Values in the eBay Web Services guide for information about this

+						time format and converting to and from the GMT time zone. Certain

+						calls, such as GetCategories, can return very large responses that

+						change once a day or less often. For better performance, such calls

+						may return cached data. In these cases, this time value reflects the

+						time the cached response was created. Thus, this value is not

+						necessarily within a few seconds of the time you submitted the

+						request.

+						These are the meta-data calls that can return cached responses:

+						GetCategories, GetAttributesCS, GetCategory2CS, GetAttributesXsl,

+						GetProductFinder, GetProductFinderXsl, and GetProductSearchPage.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Ack" type="ns:AckCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A token representing the application-level acknowledgement code that indicates

+						the response status (e.g., success). The AckCodeType list specifies

+						the possible values for Ack.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CorrelationID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						In most cases, all calls support a MessageID element in the request

+						and a CorrelationID element in the response. If you pass a message

+						ID in a request, we will return the same value in CorrelationID in

+						the response. You can use this for tracking that a response is

+						returned for every request and to match particular responses to

+						particular requests. If you do not pass MessageID in the request,

+						CorrelationID is not returned. Note that some calls are designed to

+						retrieve large sets of meta-data that only change once a day or less

+						often. To improve performance, these calls return cached responses

+						when you request all available data (with no filters). In these

+						cases, the correlation ID is not applicable. However, if you specify

+						an input filter to reduce the amount data returned, you can use

+						MessageID and CorrelationID for these meta-data calls.

+						These are the calls that can return cached responses:

+						GetCategories, GetAttributesCS, GetCategory2CS, GetAttributesXsl,

+						GetProductFinder, GetProductFinderXsl, and GetProductSearchPage.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Errors" type="ns:ErrorType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A list of application-level errors (if any) that occurred when eBay

+						processed the request.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Message" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Supplemental information from eBay, if applicable. May elaborate on errors or

+						provide useful hints for the seller. This data can accompany the call's normal

+						data result set or a result set that contains only errors. The string can

+						return HTML, including TABLE, IMG, and HREF elements. In this case, an HTML-

+						based application should be able to include the HTML as-is in the HTML page

+						that displays the results. A non-HTML application would need to parse the HTML

+						and convert the table elements and image references into UI elements

+						particular to the programming language used. Because this data is returned as

+						a string, the HTML markup elements are escaped with character entity

+						references (e.g.,&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;...). See the

+						appendices in the eBay Web Services guide for general information about string

+						data types.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddToItemDescription</CallName>

+							<CallName>EndItem</CallName>

+							<CallName>PlaceOffer</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>RespondToWantItNowPost</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Version" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The version of the response payload schema. Indicates the version of the

+						schema that eBay used to process the request.

+						See "Standard Data for All Calls" in the eBay Web Services Guide for information

+						on using the response version when troubleshooting "CustomCode" values that appear

+						in the response.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Build" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						This refers to the specific software build that eBay used when processing the request

+						and generating the response. This includes the version number plus additional

+						information. eBay Developer Support may request the build information

+						when helping you resolve technical issues.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NotificationEventName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Event name of the notification. Only returned by Platform Notifications.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DuplicateInvocationDetails" type="ns:DuplicateInvocationDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Information that explains a failure due to a duplicate InvocationID being

+						passed in.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddMemberMessage</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>AddToItemDescription</CallName>

+							<CallName>PlaceOffer</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RecipientUserID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Recipient user ID of the notification. Only returned by Platform Notifications.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="EIASToken" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique Identifier of Recipient user ID of the notification. Only returned by

+						Platform Notifications (not for regular API call responses).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NotificationSignature" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A Base64-encoded MD5 hash that allows the recipient of a Platform

+						Notification to verify this is a valid Platform Notification sent by

+						eBay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HardExpirationWarning" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Expiration date of the user's authentication token. Only returned

+						within the 7-day period prior to a token's expiration. To ensure

+						that user authentication tokens are secure and to help avoid a

+						user's token being compromised, tokens have a limited life span. A

+						token is only valid for a period of time (set by eBay). After this

+						amount of time has passed, the token expires and must be replaced

+						with a new token.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCallsExcept>FetchToken, GetReturnURL, GetRuName, SetReturnURL</AllCallsExcept>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/AckCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AckCodeType">

+		<xs:annotation>

+			<xs:documentation>

+AckCodeType - Type declaration to be used by other schema.

+This code identifies the acknowledgement code types that 

+eBay could use to communicate the status of processing a 

+(request) message to an application. This code would be used 

+as part of a response message that contains an  

+application-level acknowledgement element.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Success">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Request processing succeeded

+				      </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Failure">

+				<xs:annotation>

+					<xs:documentation> 

+					   (out) Request processing failed

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Warning">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Request processing completed with warning information

+					   being included in the response message

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PartialFailure">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Request processing completed with some failures.

+						See the Errors data to determine which portions of the request failed.

+					 </xs:documentation>

+					 <xs:appinfo>

+					 	<CallInfo>

+					 		<CallName>CompleteSale</CallName>

+					 		<CallName>GetPopularKeywords</CallName>

+							<Returned>Conditionally</Returned>

+					 	</CallInfo>

+					 </xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/BuyerPaymentMethodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BuyerPaymentMethodCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Identifies payment methods used by a buyer to pay a

+				seller. On item listings, identifies one of the payment methods

+				seller will accept for the item. Available payment methods can 

+				differ by site and item. Payment methods are not applicable to eBay 

+				Real Estate ad format listings.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) No payment method specified.

+						For example, no payment methods would be specified for Ad format listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MOCC">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Money order/cashiers check.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>RelistItem</CallName>						  

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AmEx">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) American Express.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentSeeDescription">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Payment instructions are contained in the item's description.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CCAccepted">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Credit card. 

+						Not applicable to Real Estate or US/CA eBay Motors listings.  

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PersonalCheck">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Personal check.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="COD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Cash on delivery. 

+						This payment method is obsolete (ignored) for the US, US eBay Motors, UK, and Canada sites. 

+						See "Field Differences for eBay Sites" in the eBay Web Services Guide for a list of sites 

+						that accept COD as a payment method. Not applicable to Real Estate listings. 

+						When revising an item (on sites that still support COD), you can add or change its value. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+							<CallName>VerifyAddItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VisaMC">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Visa/Mastercard.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaisaPayAccepted">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) PaisaPay (for India site only).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other forms of payment. Some custom methods are accepted by seller

+						as the payment method in the transaction.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPal">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) PayPal is accepted as a payment method. If true for a listing, Item.PayPalEmailAddress 

+						must also be set for the listing.

+						If you don't pass PayPal in the listing request but the seller's eBay preferences are set to accept PayPal 

+						on all listings, eBay will add PayPal as a payment method and return a warning.

+						PayPal must be accepted when the seller requires immediate payment (Item.AutoPay) or 

+						offers other PayPal-based features, such as a finance offer (Item.FinanceOfferID).

+						PayPal must be accepted for charity listings.

+						PayPal must be accepted for event ticket listings when the venue is in New York state or Illinois, 

+						so that eBay can offer buyer protection (per state law). (For some applications, it may be 

+						simplest to use errors returned from VerifyAddItem to flag the PayPal requirement for 

+						New York and Illinois ticket listings.) 

+						For additional information about PayPal, see the eBay Web Services Guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Discover">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Discover card.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CashOnPickup">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Payment on delivery.

+						Not applicable to Real Estate or US/CA eBay Motors listings. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MoneyXferAccepted">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Direct transfer of money.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MoneyXferAcceptedInCheckout">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If the seller has bank account information on file, and

+						MoneyXferAcceptedInCheckout = true, then the bank account information will

+						be displayed in Checkout. Applicable only to certain global eBay sites. See

+						the "International Differences Overview" in the eBay Web Services Guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>							

+						  <CallName>VerifyAddItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OtherOnlinePayments">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) All other online payments.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>VerifyAddItem</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Escrow">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) China site payment method: Escrow managed payment.

+						If a seller on the eBay China site has a feedback score less than 5 

+						OR a positive feedback rate less than 90% OR the seller is unverified 

+						(CN verified status), then escrow is required for the seller to list an 

+						item. If escrow is required and an attempt is made to list an item 

+						without offering escrow, then an error message is returned. For additional

+						information, see the International Differences Overview in the eBay Web Services Guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PrePayDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) China site payment method: PrePayDelivery.  

+						NOTE: This value is deprecated.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>VerifyAddItem</CallName>						  

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						  <TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						  <TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CODPrePayDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Cash On Delivery After Paid. Applicable for eBay China site only (site ID 223).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>VerifyAddItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PostalTransfer">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) China site payment method: PostalTransfer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>VerifyAddItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LoanCheck">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Loan check option (applicable only to the US eBay Motors site,

+						except in the Parts and Accessories category, and the eBay Canada site for motors).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>VerifyAddItem</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CashInPerson">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Cash-in-person option. Applicable only to US and Canada eBay Motors vehicles,

+						(not the Parts and Accessories category).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>VerifyAddItem</CallName>

+						  <RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/CustomSecurityHeaderType.xsd #####

+

+-->

+	<xs:complexType name="CustomSecurityHeaderType">

+		<xs:annotation>

+			<xs:documentation>

+				Security header used for SOAP API calls.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="eBayAuthToken" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Authentication token representing the user who is making the

+						request. The user's token must be retrieved from eBay. To determine

+						a user's authentication token, see the Authentication and

+						Authorization information in the eBay Web Services guide. For calls

+						that list or retrieve item or transaction data, the user usually

+						needs to be the seller of the item in question or, in some cases,

+						the buyer. Similarly, calls that retrieve user or account data may

+						be restricted to the user whose data is being requested. The

+						documentation for each call includes information about such

+						restrictions.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>2000</MaxLength>

+						<CallInfo>

+							<AllCallsExcept>FetchToken, GetReturnURL, GetRuName, SetReturnURL</AllCallsExcept>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<SeeLink>

+							<Title>Authentication &amp; Authorization</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HardExpirationWarning" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Expiration date of the user's authentication token. Only returned

+						within the 7-day period prior to a token's expiration. To ensure

+						that user authentication tokens are secure and to help avoid a

+						user's token being compromised, tokens have a limited life span. A

+						token is only valid for a period of time (set by eBay). After this

+						amount of time has passed, the token expires and must be replaced

+						with a new token.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCallsExcept>FetchToken, GetReturnURL, GetRuName, SetReturnURL</AllCallsExcept>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Credentials" type="ns:UserIdPasswordType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Authentication information for the user on whose behalf the

+						application is making the request, and authorization information for

+						the application making the request. Only registered eBay users are

+						allowed to make API calls. To verify that a user is registered, your

+						application normally needs to pass a user-specific value called an

+						"authentication token" in the request. This is equivalent to signing

+						in on the eBay Web site. As API calls do not pass session

+						information, you need to pass the user's authentication token every

+						time you invoke a call on their behalf. All calls require an

+						authentication token, except the calls you use to retrieve a token

+						in the first place. For such calls, you use the eBay member's

+						username and password instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>FetchToken</CallName>

+							<CallName>GetReturnURL</CallName>

+							<CallName>GetRuName</CallName>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NotificationSignature" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A Base64-encoded MD5 hash that allows the recepient of a Platform

+						Notification to verify this is a valid Platform Notification sent by

+						eBay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/DetailLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DetailLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+DetailLevelCodeType - Type declaration to be used by other schema.

+Specifies standard subsets of data to return for each result

+within the set of results in the response payload. If no

+detail level is specified, a base set of data is returned.

+The base set of data varies per call.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ReturnAll">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns all available data.

+						With GetSellerList and other calls that retrieve large data sets,

+						please avoid using ReturnAll when possible. For example, if you use

+						GetSellerList, use a GranularityLevel or use the

+						GetSellerEvents call instead. If you use ReturnAll with GetSellerList,

+						use a small EntriesPerPage value and a short

+						EndTimeFrom/EndTimeTo range for better performance.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemReturnDescription">

+				<xs:annotation>

+					<xs:documentation>

+						  (in) Returns Description, plus the

+						  ListingDesigner node and some additional information if applicable

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemReturnAttributes">

+				<xs:annotation>

+					<xs:documentation>

+						  (in) Returns Item Specifics and Pre-filled Item Information,

+						  if applicable

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemReturnCategories">

+				<xs:annotation>

+					<xs:documentation>

+						  (in) For the GetSearchResults call, returns the primary category and, if applicable, the secondary category

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReturnSummary">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns the summary data.

+						For GetMyMessages, this detail level returns the same data

+						whether or not you include MessageIDs or AlertIDs in the

+						request. Returns up to 10 FolderID and FolderName values.

+						Currently, this detail level is the only way to retrieve

+						FolderID and FolderName values. See "GetMyMessages" in the

+						eBay Web Services Guide for a code sample that demonstrates

+						this.

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<CallNames>GetMyMessages</CallNames>

+							<Title>"Retrieving FolderID and FolderName Values"</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/GetMyMessagesCall-GetMyMessages_Samples.html</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+		</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReturnHeaders">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns message headers.

+						For GetMyMessages, if you include MessageIDs or AlertIDs in

+						the request, this detail level returns header information,

+						without body text, for the specified message ID or alert ID

+						values. If you include a FolderID, header information is

+						returned only for the messages and alerts in the specified

+						folder.

+						If you do not include MessageIDs or AlertIDs, this detail

+						level returns header information for:

+						- All alerts in priority order with the highest priority

+						  alerts first

+						- All messages in ascending order by date received with the

+						  oldest messages first.

+						Note that even when restricted by this detail level to

+						return only header information, GetMyMessages may return a

+						high volume of data.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReturnMessages">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns full message information.

+						For GetMyMessages, if you include MessageIDs or AlertIDs in

+						the request, this detail level returns message information

+						for the specified message ID or alert ID values. If you

+						include a FolderID, message information is returned only for

+						the messages and alerts in the specified folder.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeActivityCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeActivityCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines the action taken on a dispute with AddDisputeResponse. The value

+				you can use at a given time depends on the current value of DisputeState

+				(see the Developer Guide for more information). Some values are for

+				Unpaid Item disputes and some are for Item Not Received disputes.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="SellerAddInformation">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The seller wants to add a response to the dispute. For Unpaid

+						Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerCompletedTransaction">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The buyer has paid or the seller otherwise does not need to

+						pursue the dispute any longer. For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CameToAgreementNeedFVFCredit">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The seller has made an agreement with the buyer and requires a

+						credit for a Final Value Fee already paid. For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerEndCommunication">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The seller wants to end communication or stop waiting for the

+						buyer. For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MutualAgreementOrNoBuyerResponse">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The seller wants to end communication or stop waiting for the

+						buyer. Mutual agreement has been reached or the buyer has not

+						responded within 7 days. For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerOffersRefund">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The seller offers a full refund if the buyer did not receive

+						the item or a partial refund if the item is significantly not as

+						described. For Item Not Received or Significantly Not As Described

+						disputes. Can be used when DisputeState is:&lt;br&gt;

+						NotReceivedNoSellerResponse&lt;br&gt;

+						NotAsDescribedNoSellerResponse&lt;br&gt;

+						NotReceivedMutualCommunication&lt;br&gt;

+						NotAsDescribedMutualCommunication

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerShippedItem">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The seller has shipped the item or a replacement and provides

+						shipping information. For Item Not Received and Significantly Not As

+						Described disputes. Can be used when DisputeState is:&lt;br&gt;

+						NotReceivedNoSellerResponse&lt;br&gt; NotReceivedMutualCommunication

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerComment">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The seller communicates with the buyer, offering a response or

+						comment. For Item Not Received and Significantly Not As Described

+						disputes. Can be used when DisputeState is:&lt;br&gt;

+						NotReceivedNoSellerResponse&lt;br&gt;

+						NotAsDescribedNoSellerResponse&lt;br&gt;

+						NotReceivedMutualCommunication&lt;br&gt;

+						NotAsDescribedMutualCommunication

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerPaymentNotReceived">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Seller hasn't received payment or the payment hasn't cleared

+						yet. For Item Not Received disputes. Can be used when DisputeState

+						is:&lt;br&gt; NotReceivedNoSellerResponse&lt;br&gt;

+						NotReceivedMutualCommunication&lt;br&gt;

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeCreditEligibilityCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeCreditEligibilityCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Indicates whether the dispute is currently eligible for Final Value Fee credit. The value

+			does not indicate whether the credit will actually be made. Applies to Unpaid Item

+			disputes.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="InEligible">

+				<xs:annotation>

+					<xs:documentation>

+    					(out) The seller is not currently eligible for a credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Eligible">

+				<xs:annotation>

+					<xs:documentation>

+    					(out) The seller is eligible for a credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                			(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeExplanationCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeExplanationCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			 Contains the dispute explanation, entered when the dispute was created.

+			 Provides additional information to supplement the dispute reason. The values allowed

+			 depend on the value of DisputeReason.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="BuyerHasNotResponded">

+				<xs:annotation>

+					<xs:documentation>

+					 (in/out) The buyer has not responded within the 7-day waiting period.

+					 Allowed when DisputeReason is BuyerHasNotPaid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerRefusedToPay">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) The buyer has refused to pay. Allowed when DisputeReason is BuyerHasNotPaid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerNotClearedToPay">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) The buyer is not cleared to pay. Allowed when DisputeReason is BuyerHasNotPaid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerReturnedItemForRefund">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer returned the item for a refund. Allowed when DisputeReason is TransactionMutuallyCanceled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UnableToResolveTerms">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer and seller were unable to resolve a disagreement over terms. Allowed when DisputeReason

+    				is TransactionMutuallyCanceled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerNoLongerWantsItem">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer no longer wants the item. Allowed when DisputeReason is

+    				TransactionMutuallyCanceled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerPurchasingMistake">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer made a mistake. Allowed when DisputeReason is

+    				TransactionMutuallyCanceled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShipCountryNotSupported">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer requests shipment to a country that the seller

+    				does not ship to. Allowed when DisputeReason is BuyerHasNotPaid.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddDispute</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingAddressNotConfirmed">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer requests shipment to an unconfirmed address.

+    				Allowed when DisputeReason is BuyerHasNotPaid or TransactionMutuallyCanceled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentMethodNotSupported">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer requests a payment method that the seller does not accept.

+    				Allowed when DisputeReason is BuyerHasNotPaid or TransactionMutuallyCanceled.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddDispute</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerNoLongerRegistered">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer is no longer a registered user.

+    				Allowed when DisputeReason is BuyerHasNotPaid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OtherExplanation">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) Some other reason not specified in this code list.

+    				Allowed when DisputeReason is BuyerHasNotPaid or TransactionMutuallyCanceled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Unspecified">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Used when DisputeReason is ItemNotReceived or SignificantlyNotAsDescribed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                	(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeFilterCountType.xsd #####

+

+-->

+	<xs:complexType name="DisputeFilterCountType">

+		<xs:annotation>

+			<xs:documentation>

+				The number of disputes that match a given filter.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DisputeFilterType" type="ns:DisputeFilterTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A filter used to reduce the number of disputes returned. The filter uses criteria

+						such as whether the dispute is awaiting a response, is closed, or is eligible for

+						credit. Both Unpaid Item and Item Not Received disputes can be returned for the

+						same filter value.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalAvailable" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The number of disputes that match the filter.

+						In the GetUserDisputes response, not returned for the filter type

+						that was used in the request.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/DisputeFilterTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeFilterTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies which disputes are returned. Filtering is done for disputes

+			that are awaiting a certain party's response or are closed. The returned list

+			can contain both Unpaid Item and Item Not Received disputes.

+			All disputes returned involve the requester as buyer or seller.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AllInvolvedDisputes">

+				<xs:annotation>

+					<xs:documentation>

+					(in) All disputes that involve me as buyer or seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DisputesAwaitingMyResponse">

+				<xs:annotation>

+					<xs:documentation>

+					(in) All disputes that involve me as buyer or seller and

+					are awaiting my response. Default value.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DisputesAwaitingOtherPartyResponse">

+				<xs:annotation>

+					<xs:documentation>

+					(in) All disputes that involve me as buyer or seller and

+					are awaiting the other party's response.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AllInvolvedClosedDisputes">

+				<xs:annotation>

+					<xs:documentation>

+					(in) All disputes that involve me as buyer or seller and

+					are closed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EligibleForCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(in) All disputes that involve me as buyer or seller and

+					are eligible for a Final Value Fee credit, whether or not

+					the credit has been granted.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UnpaidItemDisputes">

+				<xs:annotation>

+					<xs:documentation>

+					(in) All Unpaid item disputes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemNotReceivedDisputes">

+				<xs:annotation>

+					<xs:documentation>

+					(in) All Item Not Received disputes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                	(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeIDType.xsd #####

+

+-->

+	<xs:simpleType name="DisputeIDType">

+		<xs:annotation>

+			<xs:documentation>

+				An identifier of a dispute.			

+ 			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeMessageSourceCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeMessageSourceCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			  Defines who added a message to a dispute. Used for both Unpaid Item

+			  and Item Not Received disputes.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Buyer">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer of the item under dispute.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Seller">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The seller of the item under dispute.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBay">

+				<xs:annotation>

+					<xs:documentation>

+					(out) eBay, either an administrator or the site itself.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                	(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeMessageType.xsd #####

+

+-->

+	<xs:complexType name="DisputeMessageType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains a message posted to a dispute. The message can be posted

+				by the buyer, the seller, or an eBay representative.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MessageID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) An ID that uniquely identifies the message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MessageSource" type="ns:DisputeMessageSourceCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The party who posted the message: the buyer, the seller,

+						or an eBay representative.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MessageCreationTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The date and time the message was created, in GMT.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MessageText" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The text of the message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/DisputeReasonCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeReasonCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies the top-level reason for the dispute and determines the values you

+			can use for DisputeExplanation. Some values are for Item Not Received disputes

+			and others are for Unpaid Item Process disputes.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="BuyerHasNotPaid">

+				<xs:annotation>

+					<xs:documentation>

+    					(in/out) The buyer has not paid for the item. For Unpaid Item Process disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TransactionMutuallyCanceled">

+				<xs:annotation>

+					<xs:documentation>

+    				(in/out) The buyer and seller have agreed not to complete the transaction.

+    				For Unpaid Item Process disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemNotReceived">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer did not receive the item. An output value for Item Not Received disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SignificantlyNotAsDescribed">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The item was significantly not as described in the listing. 

+					An output value for Item Not Received disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                			(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeRecordTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeRecordTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Describes the type of dispute, either Unpaid Item or Item Not Received.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="UnpaidItem">

+				<xs:annotation>

+					<xs:documentation>

+    					(out) An Unpaid Item dispute.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemNotReceived">

+				<xs:annotation>

+					<xs:documentation>

+    				(out) An Item Not Received dispute.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                	(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeResolutionReasonCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeResolutionReasonCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Defines the reason a dispute was resolved. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Unresolved">

+				<xs:annotation>

+					<xs:documentation>	

+					(out) The dispute was not resolved.			

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProofOfPayment">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer provided proof of payment in feedback.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ComputerTechnicalProblem">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer or seller had a technical problem with a computer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NoContact">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer and seller have not made contact.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FamilyEmergency">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer or seller had a family emergency.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProofGivenInFeedback">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer provided proof of payment in feedback.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FirstInfraction">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The dispute was the buyer's first infraction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CameToAgreement">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer and seller came to agreement.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemReturned">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer returned the item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerPaidAuctionFees">

+				<xs:annotation>

+					<xs:documentation>

+ 					(out) The buyer reimbursed the seller's auction fees.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerReceivedPayment">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The seller received payment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OtherResolution">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Some other resolution occurred.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                			(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeResolutionRecordTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeResolutionRecordTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies the action taken by eBay as a result of the dispute resolution.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="StrikeBuyer">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer received an Unpaid Item Strike.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SuspendBuyer">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer is suspended and unable to use

+					the eBay site.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FVFCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The seller received a Final Value Fee credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InsertionFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The seller's listing fee was credited.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AppealBuyerStrike">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer's unpaid item strike was appealed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UnsuspendBuyer">

+				<xs:annotation>

+					<xs:documentation>

+					(out)The buyer's suspension was reversed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReverseFVFCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The seller's Final Value Fee credit was reversed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReverseInsertionFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The seller's listing fee was reversed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GenerateCSTicketForSuspend">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer is given a ticket.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FVFCreditNotGranted">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The seller did not receive a Final Value Fee credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                	(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeResolutionType.xsd #####

+

+-->

+	<xs:complexType name="DisputeResolutionType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains all information about a dispute resolution. A dispute

+				can have a resolution even if the seller does not receive payment.

+				The resolution can have various results, including a Final Value Fee credit to

+				the seller or a strike to the buyer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DisputeResolutionRecordType" type="ns:DisputeResolutionRecordTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The action resulting from the resolution, affecting either

+						the buyer or the seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeResolutionReason" type="ns:DisputeResolutionReasonCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The reason for the resolution. The DisputeResolutionReason

+						results in the action described by the DisputeResolutionRecordType.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ResolutionTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The date and time the dispute was resolved, in GMT.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/DisputeSortTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeSortTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies how a list of returned disputes should be sorted.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the time the dispute was created, in descending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DisputeCreatedTimeAscending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the time the dispute was created, in ascending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DisputeCreatedTimeDescending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the time the dispute was created, in descending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DisputeStatusAscending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the dispute status, in ascending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DisputeStatusDescending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the dispute status, in descending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DisputeCreditEligibilityAscending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by whether the dispute is eligible for

+					Final Value Fee credit, in ascending

+					order. Ineligible disputes are listed before eligible disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DisputeCreditEligibilityDescending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by whether the dispute is eleigible for

+					Final Value Fee credit, in descending

+					order. Eligible disputes are listed before i(ineligible disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                			(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeStateCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeStateCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines the current state of the dispute, which determines the values

+				that are valid for DisputeActivity. DisputeState is an internal value

+				returned in the response. A value can apply to an Unpaid Item or Item

+				Not Received dispute. A dispute filed when an item is significantly not

+				as described in the product listing is a variation of an Item Not

+				Received dispute.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Locked">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The dispute is locked and cannot be updated. For any type of

+						dispute. No values of DisputeActivity are vald.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Closed">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The dispute is closed. In some cases, it can be reversed with

+						SellerReverseDispute. For any type of dispute. No values of

+						DisputeActivity are valid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerFirstResponsePayOption">

+				<xs:annotation>

+					<xs:documentation>

+						(out) eBay sent the buyer an Unpaid Item Reminder with a Pay Now

+						option. Waiting for the buyer's first response. It is within the 7-

+						day grace period. For Unpaid Item disputes. DisputeActivity can be

+						SellerAddInformation or SellerCompletedTransaction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerFirstResponseNoPayOption">

+				<xs:annotation>

+					<xs:documentation>

+						(out) eBay sent the buyer an Unpaid Item Reminder with no Pay Now

+						option. Waiting for the buyer's first response. It is within the 7-

+						day grace period. For Unpaid Item disputes. DisputeActivity can be

+						SellerAddInformation or SellerCompletedTransaction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerFirstResponsePayOptionLateResponse">

+				<xs:annotation>

+					<xs:documentation>

+						(out) eBay sent the buyer an Unpaid Item Reminder with a Pay Now

+						option. Waiting for the buyer's first response. The 7-day grace

+						period has expired. For Unpaid Item disputes. DisputeActivity can be

+						SellerAddInformation, SellerCompletedTransaction, or

+						SellerEndCommunication.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerFirstResponseNoPayOptionLateResponse">

+				<xs:annotation>

+					<xs:documentation>

+						(out) eBay sent the buyer an Unpaid Item Reminder with no Pay Now

+						option. Waiting for the buyer's first response. The 7-day grace

+						period has expired. For Unpaid Item disputes. DisputeActivity can be

+						SellerAddInformation, SellerCompletedTransaction, or

+						SellerEndCommunication.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MutualCommunicationPayOption">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The buyer and seller have communicated, and the buyer was

+						offered a Pay Now option. For Unpaid Item disputes. DisputeActivity

+						can be SellerAddInformation, SellerCompletedTransaction,

+						SellerEndCommunication, or CameToAgreementNeedFVFCredit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MutualCommunicationNoPayOption">

+				<xs:annotation>

+					<xs:documentation>

+				    (out) The buyer and seller have communicated. The buyer does not

+						have a Pay Now option. For Unpaid Item disputes. DisputeActivity can

+						be SellerAddInformation, SellerCompletedTransaction,

+						SellerEndCommunication, or CameToAgreementNeedFVFCredit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PendingResolve">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The dispute is pending resolution. For Unpaid Item disputes.

+						No values of DisputeActivity are valid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MutualWithdrawalAgreement">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The buyer and seller have agreed within the grace period not

+						to complete the transaction. For Unpaid Item disputes.

+						DisputeActivity can be SellerAddInformation.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MutualWithdrawalAgreementLate">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The buyer and seller have agreed not to complete the

+						transaction, after the grace period. For Unpaid Item disputes.

+						DisputeActivity can be SellerAddInformation,

+						SellerCompletedTransaction, or SellerEndCommunication.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotReceivedNoSellerResponse">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The buyer filed an Item Not Received dispute, and the seller

+						has not responded. For Item Not Received disputes. DisputeActivity

+						can be SellerOffersRefund, SellerShippedItem, or SellerComment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotAsDescribedNoSellerResponse">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The buyer filed an Item Not Received dispute for an item

+						significantly not as described, and the seller has not responded.

+						DisputeActivity can be SellerOffersRefund or SellerComment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotReceivedMutualCommunication">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The buyer filed an Item Not Received dispute and is

+						communicating with the seller. DisputeActivity can be

+						SellerOffersRefund, SellerShippedItem, or SellerComment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotAsDescribedMutualCommunication">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The buyer filed an Item Not Received dispute for an item

+						significantly not as described and is communicating with the seller.

+						DisputeActivity can be SellerOffersRefund.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MutualAgreementOrBuyerReturningItem">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The seller says mutual agreement has been reached and is

+						waiting for the buyer to confirm, or the buyer is returning the item

+						to the seller. DisputeActivity can be SellerAddInformation.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DisputeStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisputeStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Describes the status of the dispute, which supplements the DisputeState.

+			Some values apply to Unpaid Item disputes and some to Item Not Received disputes.

+			Disputes can be sorted by DisputeStatus. Ascending order is:&lt;br&gt;

+			 1 - WaitingForSellerResponse&lt;br&gt;

+			 2 - WaitingForBuyerResponse&lt;br&gt;

+			 3 - ClosedFVFCreditStrike&lt;br&gt;

+			 4 - ClosedNoFVFCreditStrike&lt;br&gt;

+			 5 - ClosedFVFCreditNoStrike&lt;br&gt;

+			 6 - ClosedNoFVFCreditNoStrike&lt;br&gt;

+			 7 - Closed&lt;br&gt;

+			 8 - StrikeAppealedAfterClosing&lt;br&gt;

+			 9  - FVFCreditReversedAfterClosing&lt;br&gt;

+			 10 - StrikeAppealedAndFVFCreditReversed&lt;br&gt;

+			Descending order is the reverse.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Closed">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The dispute is closed. For Item Not Received disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WaitingForSellerResponse">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The dispute is waiting for the seller's response. For both

+					Unpaid Item and Item Not Received disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WaitingForBuyerResponse">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The dispute is waiting for the buyer's response. For both

+					Unpaid Item and Item Not Received disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ClosedFVFCreditStrike">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The dispute is closed, the seller received

+					a Final Value Fee credit, and the buyer received a strike.

+					For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ClosedNoFVFCreditStrike">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The dispute is closed, the seller did not receive

+					a Final Value Fee credit, and the buyer received a strike.

+					For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ClosedFVFCreditNoStrike">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The dispute is closed, the seller received a

+					Final Value Fee credit, and the buyer did not receive a strike.

+					For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ClosedNoFVFCreditNoStrike">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The dispute is closed, the seller did not receive

+					a Final Value Fee credit, and the buyer did not receive a strike.

+					For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StrikeAppealedAfterClosing">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The buyer's strike was appealed after the dispute was closed.

+					For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FVFCreditReversedAfterClosing">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The seller's Final Value Fee credit was reversed after the

+					dispute was closed. For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StrikeAppealedAndFVFCreditReversed">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Both the seller's Final Value Fee credit and the buyer's strike

+					were reversed after the dispute was closed. For Unpaid Item disputes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                			(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/DuplicateInvocationDetailsType.xsd #####

+

+-->

+	<xs:complexType name="DuplicateInvocationDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains properties that provide information on duplicate uses of InvocationIDs.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DuplicateInvocationID" type="ns:UUIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The duplicate InvocationID.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddMemberMessage</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>AddToItemDescription</CallName>

+							<CallName>PlaceOffer</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<CallName>ReviseItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:InvocationStatusType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The status of the previous call that used the InvocationID.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddMemberMessage</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>AddToItemDescription</CallName>

+							<CallName>PlaceOffer</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InvocationTrackingID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						The id that identifies the business item the previous API invocation 

+						created. For example, the ItemID of the item created by an AddItem call.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddMemberMessage</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>AddToItemDescription</CallName>

+							<CallName>PlaceOffer</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/ErrorClassificationCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ErrorClassificationCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="RequestError">

+				<xs:annotation>

+					<xs:documentation>

+					An error has occurred either as a result of a problem in the sending application or because

+					the application's end-user has attempted to submit invalid data (or missing data).

+					In these cases, do not retry the request. The problem must be corrected before the request

+					can be made again. If the problem is due to something in the application (such as a missing

+					required field), the application must be changed. If the problem is a result of end-user data,

+					the application must alert the end-user to the problem and provide the means for the end-user

+					to correct the data. Once the problem in the application or data is resolved, resend the request to eBay

+					with the corrected data.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SystemError">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates that an error has occurred on the eBay system side, such as a database or server down.

+					An application can retry the request as-is a reasonable number of times (eBay recommends twice).

+					If the error persists, contact Developer Technical Support. Once the problem has been resolved,

+					the request may be resent in its original form.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/ErrorHandlingCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ErrorHandlingCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Preferences that specify how eBay should handle certain requests that contain 

+invalid data or that could partially fail. 

+These preferences give you some control over whether eBay returns warnings or errors in response to 

+invalid data and how eBay handles listing requests when such data is passed in. 

+For example, these preferences are applicable to AddItem and related calls when Item Specifics 

+are specified, and to CompleteSale.

+See the developer guide for details about these preferences, their effects, and defaults for

+applicable calls, 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Legacy">

+				<xs:annotation>

+					<xs:documentation>

+         (in) Apply validation rules that were in effect prior to the time the 

+         call started supporting ErrorHandling. 

+         As of March 2005, only applicable to listing requests that include Item Specifics.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BestEffort">

+				<xs:annotation>

+					<xs:documentation>

+         (in) Drop the invalid data, continue processing the request with the valid data.

+         If dropping the invalid data leaves the request in a state where required data is missing, 

+         reject the request. See the developer guide for applicable calls and features.

+         For the AddItem family of calls, this value is used as the default error handling preference 

+         (if no preference is specified).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>CompleteSale</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AllOrNothing">

+				<xs:annotation>

+					<xs:documentation>

+         (in) As of March 2005, only applicable to listing requests that include Item Specifics. 

+         If any attribute data is invalid, drop the entire attribute set and proceed with listing the item. 

+         If the category has required attributes and the attribute set is dropped, reject the listing. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FailOnError">

+				<xs:annotation>

+					<xs:documentation>

+         (in) If any data is invalid, reject the request.

+         See the developer guide for information about applicable calls and features.

+         For CompleteSale, this value is used as the default error handling preference 

+         (if BestEffort is not specified).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>CompleteSale</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/ErrorParameterType.xsd #####

+

+-->

+	<xs:complexType name="ErrorParameterType">

+		<xs:annotation>

+			<xs:documentation>

+				A variable that contains specific information about the context of this error.

+				For example, if you pass in an attribute set ID that does not match

+				the specified category, the attribute set ID might be returned as an error parameter.

+				Use error parameters to flag fields that users need to correct.

+				Also use error parameters to distinguish between errors when multiple

+				errors are returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Value" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The value of the variable (e.g., the attribute set ID)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="ParamID" type="xs:string">

+			<xs:annotation>

+				<xs:documentation>

+				The index of the parameter in the list of parameter types returned

+				within the error type.

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/ErrorType.xsd #####

+

+-->

+	<xs:complexType name="ErrorType">

+		<xs:annotation>

+			<xs:documentation>

+				These are request errors (as opposed to system errors) that occur due to problems

+				with business-level data (e.g., an invalid combination of arguments) that

+				the application passed in.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ShortMessage" type="xs:string"  minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A brief description of the condition that raised the error.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LongMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A more detailed description of the condition that raised the error.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ErrorCode" type="xs:token" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A unique code that identifies the particular error condition that occurred.

+						Your application can use error codes as identifiers

+						in your customized error-handling algorithms.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserDisplayHint" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the error message text is intended to be displayed to an end user

+						or intended only to be parsed by the application. If true or not present (the default),

+						the message text is intended for the end user. If false, the message text is intended for

+						the application, and the application should translate the error into a more appropriate message.

+						Only applicable to Item Specifics errors and warnings returned from listing requests.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SeverityCode" type="ns:SeverityCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the error is a severe error (causing the request to fail)

+						or an informational error (a warning) that should be communicated to the user.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ErrorParameters" type="ns:ErrorParameterType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						This optional element carries a list of context-specific

+						error variables that indicate details about the error condition.

+						These are useful when multiple instances of ErrorType are returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ErrorClassification" type="ns:ErrorClassificationCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						API errors are divided between two classes: system errors and request errors.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<AllCalls/>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/FaultDetailsType.xsd #####

+

+-->

+	<xs:complexType name="FaultDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+            SOAP faults are used to indicate that an infrastructure error has occurred, 

+            such as a problem on eBay's side with database or server going down, or a 

+            problem with the client or server-side SOAP framework.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ErrorCode" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                  Error code can be used by a receiving application to debug a SOAP response 

+                  message that contains one or more SOAP fault details. 

+                  Each error code is uniquely defined for each fault scenario.

+                  See the eBay documentation for more information.

+                  Your application can use error codes as identifiers 

+                  in your customized error-handling algorithms.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Severity" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                   Indicates whether the error is a severe error (causing the request to fail)

+                   or an informational error (a warning).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DetailedMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                   Description of the condition that caused the SOAP fault.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/InvocationStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="InvocationStatusType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="InProgress">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Success">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Failure">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode"/>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/MeasureType.xsd #####

+

+-->

+	<xs:complexType name="MeasureType">

+		<xs:annotation>

+			<xs:documentation>

+				Basic type for specifying measures and the system of measurement.

+				A decimal value (e.g., 10.25) is meaningful

+				as a measure when accompanied by a definition of the unit of measure (e.g., Pounds),

+				in which case the value specifies the quantity of that unit.

+				A MeasureType expresses both the value (a decimal) and, optionally, the unit and

+				the system of measurement.

+				Details such as shipping weights are specified as measure types.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:simpleContent>

+			<xs:extension base="xs:decimal">

+				<xs:attribute name="unit" type="xs:token" use="optional">

+					<xs:annotation>

+						<xs:documentation>

+							The unit of measure (e.g., Pounds).

+						</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetItemShipping</CallName>

+								<CallName>GetSellerTransactions</CallName>

+								<Returned>Conditionally</Returned>

+							</CallInfo>

+							<CallInfo>

+								<CallName>GetItem</CallName>

+								<Returned>Conditionally</Returned>

+								<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							</CallInfo>

+						</xs:appinfo>

+					</xs:annotation>

+				</xs:attribute>

+				<xs:attribute name="system" type="ns:MeasurementSystemCodeType" use="optional">

+					<xs:annotation>

+						<xs:documentation>

+							The system of measurement (e.g., Metric).

+						</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetItem</CallName>

+								<Returned>Conditionally</Returned>

+								<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							</CallInfo>

+						</xs:appinfo>

+					</xs:annotation>

+				</xs:attribute>

+			</xs:extension>

+		</xs:simpleContent>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/MeasurementSystemCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MeasurementSystemCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="English">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) English system of measurement.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Metric">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Metric system of measurement.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/PaginationType.xsd #####

+

+-->

+	<xs:complexType name="PaginationType">

+		<xs:annotation>

+			<xs:documentation>

+				(in) Contains data for controlling pagination in API requests.

+				Pagination of returned data is required for some calls and not

+				needed in or not supported for some calls. See the documentation

+				for individual calls to determine whether pagination is supported,

+				required, or desirable.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="EntriesPerPage" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Specifies the maximum number of entries to return in a single call.

+						If the number of entries that can be returned is less

+						than the value in EntriesPerPage, then the lower number

+						is returned.

+						For most calls, the max is 200 and the default is 25.

+						For GetUserDisputes, the value is hard-coded at 200, and any input is ignored.

+						See the documentation for other individual calls to determine the correct

+						max and default values. For GetOrders, not applicable to eBay.com (for GetOrders, applicable to Half.com).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetFeedback</CallName>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetOrders</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMemberMessages</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<Min>1</Min>

+							<Max>50000</Max>

+							<Default>50</Default>

+							<CallName>GetProductSearchResults</CallName>

+							<CallName>GetProductFamilyMembers</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<Min>1</Min>

+							<Max>400</Max>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<Min>1</Min>

+							<Max>200</Max>

+							<Default>200</Default>

+							<CallName>GetSellerPayments</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<Min>200</Min>

+							<Max>200</Max>

+							<Default>200</Default>

+							<CallName>GetUserDisputes</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<Default>100</Default>

+							<CallName>GetPopularKeywords</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PageNumber" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Specifies the number of the page of data to return in the current call.

+						Default is 1 for most calls. For some calls, the default is 0.

+						Specify a positive value equal to or lower than the number of pages available (which you determine by examining

+						the results of your initial request).

+						See the documentation for other individual calls to determine the correct

+						default value. For GetOrders, not applicable to eBay.com (for GetOrders, applicable to Half.com).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetFeedback</CallName>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetOrders</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Min>0</Min>

+							<Max>2147483647</Max>

+							<Default>0</Default>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetUserDisputes</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<CallName>GetProductFamilyMembers</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Min>0</Min>

+							<Max>2147483647</Max>

+							<Default>0</Default>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Min>1</Min>

+							<Max>2147483647</Max>

+							<Default>1</Default>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPopularKeywords</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Default>1</Default>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/QuantityType.xsd #####

+

+-->

+	<xs:complexType name="QuantityType">

+      <xs:annotation>

+			<xs:documentation>

+        Basic type for specifying quantities.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:simpleContent>

+			<xs:extension base="xs:decimal">

+				<xs:attribute name="unit" type="xs:token" use="optional"/>

+			</xs:extension>

+		</xs:simpleContent>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/SeverityCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SeverityCodeType">

+		<xs:annotation>

+			<xs:documentation>

+SeverityCodeType - Type declaration to be used by other schema.

+This code identifies the severity of an API error. A code indicates

+whether there is an API-level error or warning that needs to be

+communicated to the client.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Warning">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Warning or informational error

+				      </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Error">

+				<xs:annotation>

+					<xs:documentation> 

+					   (out) Application-level error										

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/UUIDType.xsd #####

+

+-->

+	<xs:simpleType name="UUIDType">

+		<xs:annotation>

+			<xs:documentation>

+		  	Specifies a universally unique identifier. The identifier can 

+        only contain digits from 0-9 and letters from A-F. The 

+        identifier must be 32 characters long.  For example, 

+        9CEBD9A6825644EC8D06C436D6CF494B.        

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/UserIdPasswordType.xsd #####

+

+-->

+	<xs:complexType name="UserIdPasswordType">

+		<xs:sequence>

+			<xs:element name="AppId" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The application ID that is unique to each application you (or your company)

+						has registered with the eBay Developers Program. If you are executing a call

+						in the Sandbox, this is the "AppId" value that eBay issued to you when you

+						received your Sandbox keys. If you are executing a call in Production, this is

+						the "AppId" value that eBay issued to you when you received your Production

+						keys.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>FetchToken</CallName>

+							<CallName>GetReturnURL</CallName>

+							<CallName>GetRuName</CallName>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DevId" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The unique developer ID that the eBay Developers Program issued to you (or

+						your company). If you are executing a call in the Sandbox, this is the "DevId"

+						value that eBay issued to you when you received your Sandbox keys. Typically,

+						you receive your Sandbox keys when you register as a new developer. If you are

+						executing a call in Production, this is the "DevId" value that eBay issued to

+						you when you received your Production keys. Typically, you receive your

+						Production keys when you certify an application.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>FetchToken</CallName>

+							<CallName>GetReturnURL</CallName>

+							<CallName>GetRuName</CallName>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AuthCert" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Authentication certificate that authenticates the application when making API

+						calls. If you are executing a call in the Sandbox, this is the "CertId" value

+						that eBay issued to you when you received your Sandbox keys. If you are

+						executing a call in Production, this is the "CertId" value that eBay issued to

+						you when you received your Production keys. This is unrelated to auth tokens.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>FetchToken</CallName>

+							<CallName>GetReturnURL</CallName>

+							<CallName>GetRuName</CallName>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Username" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						eBay user ID (i.e., eBay.com Web site login name) for the user the application

+						is retrieving a token for. This is typically the application's end-user (not

+						the developer).

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>64</MaxLength>

+						<CallInfo>

+							<CallName>FetchToken</CallName>

+							<CallName>GetReturnURL</CallName>

+							<CallName>GetRuName</CallName>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Password" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Password for the user specified in Username.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>64</MaxLength>

+						<CallInfo>

+							<CallName>GetReturnURL</CallName>

+							<CallName>GetRuName</CallName>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+							<!-- N/A: FetchToken -->

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+##### from file ../Shared/public/WarningLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="WarningLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Low">

+				<xs:annotation>

+					<xs:documentation>

+					Do not return warnings when the application passes

+					unrecognized elements in a request.

+					This is the default value if WarningLevel is not specified.

+ 					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="High">

+				<xs:annotation>

+					<xs:documentation>

+					Return warnings when the application passes

+					unrecognized elements in a request.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+##### from file ../Shared/public/XMLRequesterCredentialsType.xsd #####

+

+-->

+	<xs:complexType name="XMLRequesterCredentialsType">

+		<xs:sequence>

+			<xs:element name="Username" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						eBay user ID (i.e., eBay.com Web site login name) for the user the application

+						is retrieving a token for. This is typically the application's end-user (not

+						the developer).

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>64</MaxLength>

+						<CallInfo>

+							<CallName>FetchToken</CallName>

+							<CallName>GetReturnURL</CallName>

+							<CallName>GetRuName</CallName>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Password" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Password for the user specified in Username.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>64</MaxLength>

+						<CallInfo>

+							<CallName>GetReturnURL</CallName>

+							<CallName>GetRuName</CallName>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+							<!-- N/A: FetchToken -->

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="eBayAuthToken" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Authentication token representing the user who is making the request. The

+						user's token must be retrieved from eBay. To determine a user's authentication

+						token, see the Authentication and Authorization information in the eBay Web

+						Services guide. For calls that list or retrieve item or transaction data, the

+						user usually needs to be the seller of the item in question or, in some cases,

+						the buyer. Similarly, calls that retrieve user or account data may be

+						restricted to the user whose data is being requested. The documentation for

+						each call includes information about such restrictions.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>2000</MaxLength>

+						<CallInfo>

+							<AllCallsExcept>FetchToken, GetReturnURL, GetRuName, SetReturnURL</AllCallsExcept>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<SeeLink>

+							<Title>Authentication &amp; Authorization</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+

+

+	<!--  

+

+##### from file eBLBaseComponents/public/AccessRuleCurrentStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AccessRuleCurrentStatusCodeType">

+      <xs:annotation>

+        <xs:documentation>

+Describes the current status of your application with regard to 

+rules governing the number of times your application can

+execute API calls.

+        </xs:documentation>

+      </xs:annotation>	  

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NotSet">

+				<xs:annotation>

+  					<xs:documentation>

+	    			  (out) The rule is not set and usage limits do not apply.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HourlyLimitExceeded">

+				<xs:annotation>

+  					<xs:documentation>

+	    			 (out) Your application has exceeded its hourly hard limit.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="DailyLimitExceeded">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Your application has exceeded its daily hard limit.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PeriodicLimitExceeded">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Your application has exceeded its periodic hard limit.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HourlySoftLimitExceeded">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Your application has exceeded its hourly soft limit.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DailySoftLimitExceeded">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Your application has exceeded its daily soft limit.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PeriodicSoftLimitExceeded">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Your application has exceeded its periodic soft limit.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+  					<xs:documentation>

+	    			 (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AccessRuleStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AccessRuleStatusCodeType">

+		<xs:annotation>

+				<xs:documentation>

+					Defines values that describe an application's current status

+					with respect to an API access rule. The rules specify daily,

+					hourly, and periodic usage limits for various eBay Web Services calls.

+				</xs:documentation>

+			</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="RuleOff">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The rule is turned off, and no rule validation

+						was performed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RuleOn">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The rule is turned on, and rule validation was

+						performed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ApplicationBlocked">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The application is blocked from making

+						requests to the call named in this rule.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AccountDetailEntryCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AccountDetailEntryCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			  Specifies values that describe a transaction on an account. Details of

+			  the transaction are returned in AccountEntry. The transaction can

+			  be a debit or credit to the account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Unknown">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) The reason for the charge is unknown.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeInsertion">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) The fee for listing an item for sale on eBay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeBold">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) The fee for a listing title in boldface font.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeFeatured">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) The fee for adding an optional feature to a listing,

+					  such as a reserve fee or a listing upgrade fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeCategoryFeatured">

+				<xs:annotation>

+					<xs:documentation>

+					 (out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeFinalValue">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) The fee charged when a listed item sells. The fee

+					 is a percentage of the final sale price.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentCheck">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A payment by check made by a seller to eBay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentCC">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A payment by credit card made by a seller to eBay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCourtesy">

+				<xs:annotation>

+					<xs:documentation>

+					 (out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditNoSale">

+				<xs:annotation>

+					<xs:documentation>

+					 (out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditPartialSale">

+				<xs:annotation>

+					<xs:documentation>

+					 (out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RefundCC">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) A refund made by eBay to the seller&apos;s credit card.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RefundCheck">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A refund made by eBay to the seller by check.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FinanceCharge">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A finance charge made to the seller&apos;s account, for example,

+					the monthly finance charge added to an account whose balance has not been

+					paid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AWDebit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AWCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AWMemo">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditDuplicateListing">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit made by eBay for a duplicate listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeePartialSale">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for a partial sale.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentElectronicTransferReversal">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A reversal of an electronic transfer payment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentCCOnce">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A one-time payment to the account made by

+					credit card.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeReturnedCheck">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for a returned check.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeRedepositCheck">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay when a check must be redeposited

+					to collect funds.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentCash">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A cash payment made on the seller&apos;s account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditInsertion">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for an insertion fee.

+					If a listed item does not sell or results in an

+					Unpaid Item (UPI) dispute, the seller can relist

+					the item. If the item sells the second time, eBay

+					credits the insertion fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditBold">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for the Bold listing fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditFeatured">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for the Featured listing fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCategoryFeatured">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditFinalValue">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for the Final Value Fee.

+					Issued as a result of an Unpaid Item dispute, under

+					some circumstances.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeNSFCheck">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay when the seller&apos;s check does not clear

+					due to insufficient funds.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeReturnCheckClose">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay when the seller&apos;s check does not clear

+					because the account has been closed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Memo">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentMoneyOrder">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A payment made to the account by money order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCardOnFile">

+				<xs:annotation>

+					<xs:documentation>

+					(out) An automatic monthly charge of the seller&apos;s invoice

+					amount made by eBay to a credit card the seller has placed

+					on file.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCardNotOnFile">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A one-time payment made by a credit card

+					that is not on file with eBay for automatic monthly

+					payments.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Invoiced">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InvoicedCreditCard">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditTransferFrom">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A transfer from another account to this account,

+					resulting in a credit to this account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DebitTransferTo">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A transfer from this account to another account,

+					resulting in a debit to this account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InvoiceCreditBalance">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit balance for an account&apos;s invoice period,

+					meaning that the seller should not pay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBayDebit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) An all-purpose code for debits that are manually applied to auctions,

+					for example, when the credit cannot be applied to an item number

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBayCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) An all-purpose code for credits that are manually applied to auctions,

+					for example, when the credit cannot be applied to an item number

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PromotionalCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CCNotOnFilePerCustReq">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A note that the credit card is not

+					on file at the customer&apos;s request.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditInsertionFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for an insertion

+					fee when an item is relisted.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CCPaymentRejected">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeGiftIcon">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for adding a gift icon to

+					a listing. The gift icon highlights the item as a good

+					gift and might offer gift services, such as wrapping

+					or shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditGiftIcon">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for the gift item

+					fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeGallery">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for listing an item

+					in the Picture Gallery. A buyer sees a picture of

+					the item when browsing a category, before moving to

+					the item&apos;s listing page.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeFeaturedGallery">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for listing an item

+					in the Featured section at the top of the Picture Gallery

+					page.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditGallery">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for the Gallery fee

+					charged when the item was listed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditFeaturedGallery">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for the Featured Gallery

+					fee charged when the item was listed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemMoveFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OutageCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay when listings are not available

+					due to system downtime. The downtime can be a title search

+					outage or a hard outage. See the online help for details.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditPSA">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditPCGS">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeReserve">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay when an item is listed with

+					a reserve price. The fee is credited when the auction

+					completes successfully.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditReserve">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for a reserve price auction

+					when the auction completes successfully.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBayVISACredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BBAdminCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BBAdminDebit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReferrerCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay to a Store owner

+					who has promoted items outside of eBay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReferrerDebit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SwitchCurrency">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A switch from one billing currency to another.

+					The billing currency can be USD, EUR, CAD, GBP, AUD,

+					JPY, or TWD.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentGiftCertificate">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A payment made to the account by gift certificate.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentWireTransfer">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A payment made to the account by wire transfer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentHomeBanking">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentElectronicTransfer">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A one-time payment made to the account by electronic

+					transfer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentAdjustmentCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit (addition) made by eBay to the seller&apos;s account

+					when a payment needs to be adjusted.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentAdjustmentDebit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A debit (deduction) made by eBay to the seller&apos;s account

+					when a payment needs to be adjusted.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Chargeoff">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeoffRecovery">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeoffBankruptcy">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A writeoff of the account charge by eBay

+					because the seller has declared bankruptcy.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeoffSuspended">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeoffDeceased">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A writeoff of the account charge by eBay

+					because the seller is deceased.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeoffOther">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeoffWacko">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FinanceChargeReversal">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A reversal of a finance charge, made by eBay.

+					The finance charge is added if the seller does not pay

+					the monthly account balance on time.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FVFCreditReversal">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A reversal of a Final Value Fee credit, resulting

+					in the fee being charged to the seller. The Final Value

+					Fee can be credited as a result of an Unpaid Item Dispute.

+					If the buyer later pays, the seller can request a reversal.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ForeignFundsConvert">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for currency conversion.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ForeignFundsCheckReversal">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EOMRestriction">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AllFeesCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SetOnHold">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RevertUserState">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DirectDebitOnFile">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A monthly payment made by automatic direct debit to the

+					seller&apos;s checking account, when the account information

+					is on file.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DirectDebitNotOnFile">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A one-time payment made by direct debit to the seller&apos;s

+					checking account, when the account information is not on file,

+					but is provided for this payment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentDirectDebit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A payment made by direct debit from the seller&apos;s

+					checking account when the seller has requested automatic

+					monthly invoice payments.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DirectDebitReversal">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A reversal of a payment made by direct debit

+					from the seller&apos;s checking account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DirectDebitReturnedItem">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A reversal of a payment made by direct debit

+					from a seller&apos;s checking account when an item is returned

+					by the buyer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeHighlight">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) A fee charged by eBay for adding a colored band to

+					 emphasize a listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditHighlight">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for a highlight fee on an

+					item&apos;s listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BulkUserSuspension">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeRealEstate30DaysListing">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for a 30-day real estate

+					listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditRealEstate30DaysListing">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit for a 30-day real estate listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TradingLimitOverrideOn">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TradingLimitOverrideOff">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EquifaxRealtimeFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged to sellers who do not provide a credit card

+					or checking account number to verify identify.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditEquifaxRealtimeFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for an EquifaxRealtimeFee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentEquifaxDebit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentEquifaxCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Merged">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Two accounts with the same owner but different user IDs

+					have been merged into one.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AutoTraderOn">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AutoTraderOff">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaperInvoiceOn">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The option to send the seller paper invoices

+					has been turned on.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaperInvoiceOff">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The option to send the seller paper invoices

+					has been turned off.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountStateSwitch">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FVFCreditReversalAutomatic">

+				<xs:annotation>

+					<xs:documentation>

+					(out) An automatic reversal of a Final Value Fee

+					credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditSoftOutage">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted by eBay when a title search

+					outage of one hour or longer occurs on the site.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LACatalogFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for listing a lot (one or more items) in a

+					Live Auction catalog.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LAExtraItem">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for listing an extra item in a Live Auction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LACatalogItemFeeRefund">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LACatalogInsertionRefund">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit for listing an item in a Live Auction catalog.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LAFinalValueFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A Final Value Fee charged by eBay when a lot listed

+					on a Live Auction is sold.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LAFinalValueFeeRefund">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A refund of a Final Value Fee that was charged

+					when a Live Auction lot was sold.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LABuyerPremiumPercentageFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee paid by the buyer to the auction house for

+					a purchase in a Live Auction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LABuyerPremiumPercentageFeeRefund">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A refund of the fee paid by a buyer to the auction

+					house for a purchase in a Live Auction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LAAudioVideoFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for audio or video services provided

+					during the sale of lots at a Live Auction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LAAudioVideoFeeRefund">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A refund for audio or video services provided at

+					a Live Auction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeIPIXPhoto">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for a panoramic 360-degree photo

+					in a listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeIPIXSlideShow">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for a slide show of panoramic 360-degree

+					photos.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditIPIXPhoto">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted to reverse an IPIX photo fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditIPIXSlideShow">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted to reverse an IPIX slideshow fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeTenDayAuction">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for listing an item for 10 days,

+					rather than one, three, five, or seven days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditTenDayAuction">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted to reverse a 10-day auction

+					fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TemporaryCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TemporaryCreditReversal">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SubscriptionAABasic">

+				<xs:annotation>

+					<xs:documentation>

+				      (out) A fee charged for a subscription to Auction Assistant Basic.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SubscriptionAAPro">

+				<xs:annotation>

+					<xs:documentation>

+				      (out) A fee charged for a subscription to Auction Assistant Pro.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditAABasic">

+				<xs:annotation>

+					<xs:documentation>

+				     (out) A credit granted for a subscription fee charged for Auction Assistant Basic.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditAAPro">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for a subscription fee charged for Auction Assistant Pro.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeLargePicture">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for a supersized picture

+					in a listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditLargePicture">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for a supersized picture.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeePicturePack">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for the Picture Pack feature.

+					The fee differs according to the number of pictures you

+					use. See the online help for details.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditPicturePackPartial">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) A partial credit issued by eBay for the Picture Pack fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditPicturePackFull">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) A full credit issued by eBay for the Picture Pack fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SubscriptioneBayStores">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) A monthly subscription fee charged for an eBay Store.

+					  The fee can be Basic, Featured, or Anchor.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CrediteBayStores">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) A credit issued by eBay for the monthly fee charged

+					 for an eBay store.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeInsertionFixedPrice">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The fee charged by eBay for listing a Fixed Price item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditInsertionFixedPrice">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for listing a Fixed Price item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeFinalValueFixedPrice">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) The Final Value Fee credit charged by eBay when

+					 a fixed price item sells.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditFinalValueFixedPrice">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for the Final Value Fee

+					for a fixed price item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ElectronicInvoiceOn">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ElectronicInvoiceOff">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FlagDDDDPending">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FlagDDPaymentConfirmed">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FixedPriceDurationFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The fee charged by eBay for creating a Fixed Price

+					listing with a 10-day duration. Fixed Price listings

+					of 1, 3, 5, and 7 days are not charged this fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FixedPriceDurationCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for a Fixed Price listing

+					with a 10-day duration.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyItNowFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for listing a Buy It Now item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyItNowCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for the fee charged for a

+					Buy It Now listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeSchedule">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee for scheduling a listing to start at some

+					later time, up to 3 weeks after the listing is created.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditSchedule">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit made by eBay for the fee charged for

+					scheduling a listing to start after the listing is created.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SubscriptionSMBasic">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) The monthly subscription fee charged for

+					 Selling Manager Basic. The monthly charge is billed

+					 in advance.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SubscriptionSMBasicPro">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The monthly subscription fee charged for

+					Selling Manager Pro. The monthly charge is billed

+					in advance.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditSMBasic">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A one-time credit for a free one-month

+					trial of Selling Manager Basic.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditSMBasicPro">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A one-time credit for a free one-month

+					trial of Selling Manager Pro.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoresGTCFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The fee charged for a Good-Til-Cancelled

+					listing in an eBay Store. The charge is made once

+					each 30 days, until the listing ends.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoresGTCCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit for the fee charged for a Good-Til-Cancelled

+					listing in an eBay Store.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ListingDesignerFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The fee charged for using a Listing Designer theme and layout

+					template for a listing. The fee is displayed to the seller during

+					the listing process.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ListingDesignerCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit issued by eBay for a Listing Designer fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExtendedAuctionFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The fee charged for listing an auction item

+					for 10 days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExtendedAcutionCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit for the fee charged for listing an

+					auction item for 10 days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalOTPSucc">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalOTPPend">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalFailed">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalChargeBack">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeBack">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeBackReversal">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalRefund">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BonusPointsAddition">

+				<xs:annotation>

+					<xs:documentation>

+					(out) An addition to the seller&apos;s eBay

+					Anything Points account. Each point is

+					equivalent to $0.01.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BonusPointsReduction">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A reduction to the seller&apos;s eBay

+					Anything Points account. Each point is

+					equivalent to $0.01.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BonusPointsPaymentAutomatic">

+				<xs:annotation>

+					<xs:documentation>

+					(out) An automatic payment of seller fees

+					from the seller&apos;s eBay Anything Points account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BonusPointsPaymentManual">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A one-time payment of seller fees from

+					the seller&apos;s eBay Anything Points account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BonusPointsPaymentReversal">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A reversal of a seller fee payment made

+					from the seller&apos;s eBay Anything Points account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BonusPointsCashPayout">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A cash payment made from the seller&apos;s eBay

+					Anything Points account and credited to the seller&apos;s

+					account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit (return) to your account of Value-Added Tax

+					previously paid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATDebit">

+				<xs:annotation>

+					<xs:documentation>

+					 (out) A debit to your account for a Value-Added Tax charge.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATStatusChangePending">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATStatusChangeApproved">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATStatusChange_Denied">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATStatusDeletedByCSR">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATStatusDeletedByUser">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SMProListingDesignerFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SMProListingDesignerCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoresSuccessfulListingFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for the difference between an eBay Store inventory listing

+					fee and an auction listing fee if a Store inventory item sells.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoresSuccessfulListingFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit for a StoresSuccessfulListingFee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoresReferralFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoresReferralCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit posted to a seller&apos;s account

+					for sale of Stores Inventory items by buyers

+					referred to the seller&apos;s Store by printed materials

+					and emails outside eBay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SubtitleFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The fee charged for adding a subtitle

+					to a listing. The subtitle adds information

+					to the title.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SubtitleFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit of the fee charged for adding a

+					subtitle to a listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBayStoreInventorySubscriptionCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AutoPmntReqExempt">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AutoPmntReqRein">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerSubscriptionFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The monthly fee charged for subscribing to

+					Picture Manager. The fee varies according to

+					the level of subscription.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerSubscriptionFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for a Picture Manageer subscription

+					fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerReportsBasicFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for a basic subscription to Seller Reports.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerReportsBasicCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for a basic subscription to Seller Reports.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerReportsPlusFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for a subscription to Seller Reports Plus.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerReportsPlusCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for a subscription to Seller Reports Plus.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaypalOnFile">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaypalOnFileByCSR">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaypalOffFile">

+				<xs:annotation>

+					<xs:documentation>

+					(out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BorderFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The fee for adding a border that outlines a listing with a frame.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BorderFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit for the border fee charged for a listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeSearchableMobileDE">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged to a seller for upgrading

+					a listing from eBay Germany&apos;s Car, Motorcycle,

+					and Special Vehicle categories so that it is also

+					searchable on the mobile.de classifieds site.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SalesReportsPlusFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A monthly subscription fee charged for

+					Sales Reports Plus.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SalesReportsPlusCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for a Sales Reports Plus

+					monthly subscription fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditSearchableMobileDE">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for upgrading a listing

+					to make it searchable on the mobile.de platform.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EmailMarketingFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged to owners of eBay Stores

+					who have a sent a marketing email to buyers,

+					for the number of email recipients over

+					the Store&apos;s monthly free allocation. The

+					monthly allocation varies according to the type

+					of Store.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EmailMarketingCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for an email marketing fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeePictureShow">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for the Picture Show

+					service, which lets buyers browse or see a slide

+					show of 2 or more pictures at the top of the

+					item page.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditPictureShow">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted for a Picture Show fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProPackBundleFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged for the ProPackBundle feature pack (currently available to US and Canada eBay motor vehicle sellers).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProPackBundleFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted by eBay for the ProPackBundle feature pack (currently available to US and Canada eBay motor vehicle sellers).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BasicUpgradePackBundleFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for the BasicUpgradePackBundle feature pack. Australia site (site ID 15, abbreviation AU) only. Effective beginning February 22, 2006.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BasicUpgradePackBundleFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted by eBay for the BasicUpgradePackBundle feature pack. Australia site (site ID 15, abbreviation AU) only. Effective beginning February 22, 2006.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ValuePackBundleFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for the ValuePackBundle feature pack. Effective beginning February 22, 2006.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ValuePackBundleFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted by eBay for the ValuePackBundle feature pack. Effective beginning February 22, 2006.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProPackPlusBundleFee">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A fee charged by eBay for the ProPackPlusBundle feature pack. Effective beginning February 22, 2006.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProPackPlusBundleFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					(out) A credit granted by eBay for the ProPackPlusBundle feature pack. Effective beginning February 22, 2006.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FinalEntry">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The final entry in an account before it is closed

+					or merged with another account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExtendedDurationFee">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A fee charged for extended listing duration.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExtendedDurationFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A credit granted by eBay for extended listing duration.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InternationalListingFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) The fee for an international listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InternationalListingCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A credit issued by eBay for an international listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarketplaceResearchExpiredSubscriptionFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A MarketPlace Research fee for expired subscriptions.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarketplaceResearchExpiredSubscriptionFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A MarketPlace Research credit for expired subscriptions.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarketplaceResearchBasicSubscriptionFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A MarketPlace Research basic subscription fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarketplaceResearchBasicSubscriptionFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A MarketPlace Research basic subscription credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarketplaceResearchProSubscriptionFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A MarketPlace Research pro subscription fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BasicBundleFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) Basic bundle fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BasicBundleFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) Basic bundle fee credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarketplaceResearchProSubscriptionFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A MarketPlace Research pro subscription fee credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VehicleLocalSubscriptionFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A Vehicle Local subscription fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VehicleLocalSubscriptionFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A Vehicle Local subscription fee credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VehicleLocalInsertionFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A Vehicle Local insertion fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VehicleLocalInsertionFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A Vehicle Local insertion fee credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VehicleLocalFinalValueFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A Vehicle Local final value fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VehicleLocalFinalValueFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A Vehicle Local final value fee credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VehicleLocalGTCFee">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A Vehicle Local GTC fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VehicleLocalGTCFeeCredit">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) A Vehicle Local GTC fee credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeeGalleryPlus">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A fee charged by eBay for listing an item with the

+						Gallery Plus feature enabled. This feature cannot be removed

+						with ReviseItem or RelistItem. However, if the feature is

+						upgraded, for example, to Gallery Featured, the fee for

+						Gallery Plus is refunded and a fee for Gallery Feature is

+						charged instead.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditGalleryPlus">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A credit issued by eBay when refunding the fee for

+						enabling the Gallery Plus feature. A Gallery Plus credit may

+						be issued if, for example, a user upgrades their feature

+						with ReviseItem or RelistItem to Gallery Featured. In this

+						case, the original Gallery Plus fee is refunded and a

+						Gallery Featured fee is charged instead.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AccountEntriesType.xsd #####

+

+-->

+	<xs:complexType name="AccountEntriesType">

+		<xs:annotation>

+			<xs:documentation> 

+        Collection of zero, one, or multiple individual detail account entries. Contains

+        one AccountEntry object for each account entry returned. See the schema

+        documentation for AccountEntryType for details on its properties. You can uniquely identify

+        the entries that the GetAccount call returns within the AccountEntries tag.

+        Specifically, the following fields, returned within the AccountEntries tag,

+        can be used in combination as a unique key: AccountEntry.Date, AccountEntry.AccountDetailsEntryType,

+        AccountEntry.ItemID, and AccountEntry.RefNumber. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AccountEntry" type="ns:AccountEntryType"  minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+                Contains the data for one account entry. (See the schema

+                documentation for AccountEntryType for details on its properties.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AccountEntrySortTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AccountEntrySortTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			  Specifies how account entries should be sorted in a response

+			  from eBay.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+					 (in) Sort by the AccountEntry.Date value in the response,

+					 in ascending order. Same as AccountEntryCreatedTimeAscending.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountEntryCreatedTimeAscending">

+				<xs:annotation>

+					<xs:documentation>

+					 (in) Sort by the AccountEntry.Date value in the response,

+					 in ascending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountEntryCreatedTimeDescending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the AccountEntry.Date value in the response, in

+					descending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountEntryItemNumberAscending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the AccountEntry.ItemID value in the response, in

+					ascending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountEntryItemNumberDescending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the AccountEntry.ItemID value in the response,

+					in descending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountEntryFeeTypeAscending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the value returned in AccountEntry.Description,

+					with entries starting with lowercase letters before entries starting

+					with uppercase letters and each group in alphabetical order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountEntryFeeTypeDescending">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the value returned in AccountEntry.Description, with entries 

+					starting with uppercase letters before entries starting with lowercase

+					letters and each group in reverse alphabetical order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                    (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AccountEntryType.xsd #####

+

+-->

+	<xs:complexType name="AccountEntryType">

+		<xs:annotation>

+			<xs:documentation>

+        Contains the data for a single account detail entry. Each detail entry is a

+        transaction posted to the account and may be: a credit, a debit, or an

+        administrative action (such as an update putting a credit card on file for

+        the account). You can uniquely identify

+        the entries that the GetAccount call returns within the AccountEntries tag.

+        Specifically, the following fields, returned within the AccountEntries tag,

+        can be used in combination as a unique key: AccountEntry.Date, AccountEntry.AccountDetailsEntryType,

+        AccountEntry.ItemID, and AccountEntry.RefNumber.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AccountDetailsEntryType" type="ns:AccountDetailEntryCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the type of transaction or reason for the transaction. For example,

+						a value of FeeGallery indicates a debit for listing an item in the Gallery.

+						Possible values are enumerated in the AccountDetailEntryCodeType code list.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+				  A description of the transaction. Returned with compatibility

+				  level 387.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Balance" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Balance after the account entry's credit or debit amount has been applied.

+                Can be 0.00. With compatibility level 387, the value is positive for debits

+				and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Credit" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Credit amount for a detail entry. Will be 0.00 if the entry is a debit.

+                Obsolete (not returned) with compatibility level 387 and higher.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Obsolete</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Date" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Date entry was posted to the account, in GMT. (Also see the Data Types

+                appendix for more information on how GMT dates are handled in SOAP.)

+					</xs:documentation>

+						<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Debit" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Debit amount for this detail entry. Will be 0.00 if the entry is a credit.

+				Obsolete (not returned) with compatibility level 387 and higher.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Obsolete</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GrossDetailAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Gross fees that are assessed by eBay (net fees plus VAT, if any).

+				Returned even if VAT does not apply.

+				With compatibility level 387, the value is positive for debits

+				and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Item ID (if the account detail entry is associated with an item listing) or

+						0 (if no item listing is associated with the account entry).

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Memo" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Memo line for the account entry, can be an empty string.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NetDetailAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Net fees that are assessed by eBay, excluding additional surcharges and VAT (if any).

+				Returned even if VAT does not apply.

+				With compatibility level 387, the value is positive for debits

+				and negative for credits, reversing the sign of earlier versions.

+ 					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RefNumber" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                eBay reference number for the account entry. May return no value for some

+                account transactions, such as an administrative action like placing the

+                user's credit card on file.  You can uniquely identify

+				        the entries that the GetAccount call returns within the AccountEntries tag.

+				        Specifically, the following fields, returned within the AccountEntries tag,

+				        can be used in combination as a unique key: AccountEntry.Date, AccountEntry.AccountDetailsEntryType,

+				        AccountEntry.ItemID, and AccountEntry.RefNumber.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="VATPercent" type="xs:decimal" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						VAT rate for the item. When the VATPercent is specified, the

+						item's VAT information appears on the item's listing page. In

+						addition, the seller can choose to print an invoice that

+						includes the item's net price, VAT percent, VAT amount, and

+						total price. Since VAT rates vary

+						depending on the item and on the user's country of residence, a

+						seller is responsible for entering the correct VAT rate; it is

+						not calculated by eBay. To specify a VATPercent, a seller must

+						have a VAT-ID registered with eBay and must be listing the item

+						on a VAT-enabled site. Max precision 3

+						decimal places. Max length 5 characters. Note: The View Item

+						page displays the precision to 2 decimal places with no

+						trailing zeros. However, the full value you send in is stored.

+						Returned for all users, not just VAT users, with GetAccountResponse.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Title" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Title of the entry.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AccountHistorySelectionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AccountHistorySelectionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+             Specifies a report format to be used to describe the seller's account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="LastInvoice">

+				<xs:annotation>

+					<xs:documentation>

+                 (in) Contains the entries since the last invoice eBay sent to the seller.

+				 With LastInvoice, InvoiceDate, BeginDate and EndDate (in GetAccountRequest) 

+				 are ignored.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SpecifiedInvoice">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Contains the entries for a

+                specific invoice, identified by the invoice month and year.

+				With SpecifiedInvoice, you must specify InvoiceDate in GetAccountRequest.

+				However, BeginDate and EndDate are ignored.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BetweenSpecifiedDates">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Contains entries that were posted to the seller's account between two dates.

+                The period covered may cross the boundaries of formal invoices.

+				With BetweenSpecifiedDates, you must specify BeginDate and EndDate in 

+				GetAccountRequest. However, InvoiceDate is ignored.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AccountStateCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AccountStateCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				State of an account of an eBay user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Active">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The account is active.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Pending">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The account has been created but is not yet active,

+						pending additional information or processing by eBay.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Inactive">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The account is inactive. No new seller account entries

+						would be posted by eBay to the account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AccountSummaryType.xsd #####

+

+-->

+	<xs:complexType name="AccountSummaryType">

+		<xs:annotation>

+			<xs:documentation>

+				Summary data for the requesting user's seller account as a whole. This includes a

+				balance for the account, any past due amount and date, and defining data for

+				additional accounts (if the user has changed country of residency while having an

+				active eBay account).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AccountState" type="ns:AccountStateCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the current state of the account (such as active or inactive).

+						Possible values are enumerated in the AccountStateCodeType code list.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InvoicePayment" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies payment made since the previous invoice, but is

+						returned only if AccountHistorySelection is LastInvoice or Specified

+						Invoice. With compatibility level 387, the value is positive for

+						debits and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InvoiceCredit" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies credits granted since the previous invoice, but

+						is only returned AccountHistorySelection is LastInvoice or Specified

+						Invoice.

+						With compatibility level 387, the value is positive for debits

+						and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InvoiceNewFee" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies fees incurred since the last invoice, including

+						tax if applicable. Returned only if AccountHistorySelection

+						is LastInvoice or Specified Invoice. With compatibility level 387,

+						the value is positive for debits and negative for credits, reversing

+						the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AdditionalAccount" type="ns:AdditionalAccountType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+                Contains the data for one additional account. An AccountSummaryType object

+                may return zero, one, or multiple additional accounts. See the schema

+                documentation for AdditionalAccountType for details on additional accounts.

+                With compatibility level 387, the value is positive for debits

+                and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AmountPastDue" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount past due, 0.00 if not past due.

+						With compatibility level 387, the value is positive for debits

+						and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BankAccountInfo" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						First four digits of the bank account the user associated with the seller

+						account (with remainder Xed-out). This may be an empty string depending

+						upon the payment type the user selected for the account (e.g., if no

+						debit-card specified).

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>4</MaxLength>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BankModifyDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the date and time BankAccountInfo was last modified, in GMT.

+						(Also see the Data Types appendix for more information on how GMT dates are

+						handled in SOAP.) This may be an empty string depending upon the payment

+						type the user selected for the account (e.g., if no debit-card specified).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BillingCycleDate" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the billing cycle in which eBay sends a billing invoice to the

+						user. A value of 0 (zero) indicates an invoice sent on the last day of the

+						month. A value of 15 indicates an invoice sent on the 15th day of the

+						month.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CreditCardExpiration" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Expiration date for the credit card selected by the user as payment method

+						for the account, in GMT. (Also see the Data Types appendix for more

+						information on how GMT dates are handled in SOAP.) Empty string if no

+						credit card is on file or if the account is inactive - even if there is a

+						credit card on file.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CreditCardInfo" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Last four digits of the credit card the user selected as payment method for

+						the account. Empty string if no credit is on file.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CreditCardModifyDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the date and time credit card or credit card expiration date was

+						last modified, in GMT. (Also see the Data Types appendix for more

+						information on how GMT dates are handled in SOAP.) This may be an empty

+						string depending on the payment method the user selected for the account

+						(e.g., Empty string if no credit card is on file.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CurrentBalance" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Current balance for the account. Can be 0.00, positive, or negative.

+						With compatibility level 387, the value is positive for debits

+						and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Email" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Email address for the user.

+						You cannot retrieve an email address for any user with whom

+						you do not have a transactional relationship, regardless of

+						site. Email is only returned for applicable calls when you

+						are retrieving your own user data OR when you and the other

+						user are in a transactional relationship and the call is

+						being executed within a certain amount of time after the

+						transaction is created.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InvoiceBalance" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount of last invoice. 0.00 if account not yet invoiced.

+						With compatibility level 387, the value is positive for debits

+						and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InvoiceDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Date of last invoice sent by eBay to the user, in GMT. (Also see the Data

+						Types appendix for more information on how GMT dates are handled in SOAP.)

+						Empty string if this account has not been invoiced yet.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LastAmountPaid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount of last payment posted, 0.00 if no payments posted.

+						With compatibility level 387, the value is positive for debits

+						and negative for credits, reversing the sign of earlier versions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LastPaymentDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Date of last payment by the user to eBay, in GMT. (Also see the Data Types

+						appendix for more information on how GMT dates are handled in SOAP.) Empty

+						string if no payments have been posted.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PastDue" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the account has past due amounts outstanding. A value of

+						true indicates that the account is past due. A value of false indicates the

+						account is current.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentMethod" type="ns:SellerPaymentMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the method the user selected to pay eBay with for the account.

+						The values for PaymentMethod vary from one global eBay site to the next.

+						Payment methods are enumerated in the SellerPaymentMethodCodeType code

+						list.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AdFormatEnabledCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AdFormatEnabledCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Used to indicate whether the Ad Format feature is enabled for a category. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Disabled">

+				<xs:annotation>

+					<xs:documentation>

+						The Ad Format feature is disabled for the category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Enabled">

+				<xs:annotation>

+					<xs:documentation>

+						The Ad Format feature is enabled for the category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Only">

+				<xs:annotation>

+					<xs:documentation>

+						The category supports the Ad Format feature only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ClassifiedAdEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+				  </xs:documentation>

+				  <xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ClassifiedAdOnly">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+				  </xs:documentation>

+				  <xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AdFormatEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="AdFormatEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the AdFormatEnabled feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (e.g., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AdFormatLeadType.xsd #####

+

+-->

+	<xs:complexType name="AdFormatLeadType">

+		<xs:annotation>

+			<xs:documentation>

+			(out) Contains contact and other information for one lead.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AdditionalInformation" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Additional information that the lead wants to tell the seller. Not returned if information is unavailable.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAdFormatLeads</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Address" type="ns:AddressType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Address information for the lead. Not returned if information is unavailable.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAdFormatLeads</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestTimeToCall" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					(out) The time of day when the lead prefers the seller to contact him or her. Not returned if information is unavailable.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAdFormatLeads</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Email" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Email address for the lead.

+						You cannot retrieve an email address for any user with whom 

+						you do not have a transactional relationship, regardless of 

+						site. Email is only returned for applicable calls when you 

+						are retrieving your own user data OR when you and the other 

+						user are in a transactional relationship and the call is 

+						being executed within a certain amount of time after the 

+						transaction is created.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAdFormatLeads</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FirstName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					(out) First name of the lead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAdFormatLeads</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LastName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Last name of the lead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAdFormatLeads</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Phone" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Phone number of the lead. Not returned if information is unavailable.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAdFormatLeads</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SubmittedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Date and time (in GMT) that the lead was submitted.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAdFormatLeads</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AddMemberMessagesAAQToBidderRequestContainerType.xsd #####

+

+-->

+	<xs:complexType name="AddMemberMessagesAAQToBidderRequestContainerType">

+		<xs:annotation>

+			<xs:documentation>

+				Holds the content of the request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CorrelationID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Use to track that a response is returned for every

+						request and to match particular responses to

+						particular requests.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddMemberMessagesAAQToBidder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						An eBay ID that uniquely identifies a given

+						item. Must be a currently active item.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+						<CallInfo>

+							<CallName>AddMemberMessagesAAQToBidder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MemberMessage" type="ns:MemberMessageType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Holds the content of the message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddMemberMessagesAAQToBidder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AddMemberMessagesAAQToBidderResponseContainerType.xsd #####

+

+-->

+	<xs:complexType name="AddMemberMessagesAAQToBidderResponseContainerType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the response information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CorrelationID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Use to track that a response is returned for every

+						request and to match particular responses to

+						particular requests.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddMemberMessagesAAQToBidder</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Ack" type="ns:AckCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the response status (e.g., success).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddMemberMessagesAAQToBidder</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AdditionalAccountType.xsd #####

+

+-->

+	<xs:complexType name="AdditionalAccountType">

+		<xs:annotation>

+			<xs:documentation>

+            Contains the data for one additional account. An additional account is

+            created when the user has an active account and changes country of

+            registry (i.e., registers with the eBay site for the new country). A

+            new account is created and the old account becomes inactive as an

+            additional account. A user who never changes country of residency while

+            having an account will never have any additional accounts.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Balance" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Indicates the current balance of the additional account.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Indicates the currency in which monetary amounts for the additional account

+                are expressed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AccountCode" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+                Indicates the unique identifier for the additional account (the account ID).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AddressOwnerCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AddressOwnerCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Indicates who owns the user's address.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="PayPal">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) PayPal owns the address.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBay">

+				<xs:annotation>

+					<xs:documentation> 

+						(in/out) eBay owns the address.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AddressRecordTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AddressRecordTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           AddressRecordTypeCodeType - Type declaration to be used by other schemas.

+           Codes indicate the address type.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Residential">

+			</xs:enumeration>

+			<xs:enumeration value="Business"/>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AddressStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="AddressStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				PayPal address status.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None"/>

+			<xs:enumeration value="Confirmed"/>

+			<xs:enumeration value="Unconfirmed"/>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/AddressType.xsd #####

+

+-->

+	<xs:complexType name="AddressType">

+	<xs:annotation>

+		<xs:documentation>

+			Contains the data for one user address. This is the base type for a

+			number of user addresses, including seller payment address, buyer

+			shipping address and buyer and seller registration address.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="Name" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					User's name for the address.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>64</MaxLength>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>SellerPaymentAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUserContactDetails</CallName>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Street" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					A concatenation of Street1 and Street2 (only for the

+					RegistrationAddress instance of AddressType).

+					Not applicable to Half.com. Output only.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Street1" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Line 1 of the user's address.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>64</MaxLength>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetAdFormatLeads</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>SellerPaymentAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Street2" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Line 2 of the user's address. Returned if applicable.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>64</MaxLength>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>SellerPaymentAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CityName" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The name of the user's city.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>64</MaxLength>

+					<CallInfo>

+						<CallName>GetAdFormatLeads</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>SellerPaymentAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<CallName>GetUserContactDetails</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="County" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="StateOrProvince" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The region of the user's address.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>64</MaxLength>

+					<CallInfo>

+						<CallName>GetAdFormatLeads</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>SellerPaymentAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<CallName>GetUserContactDetails</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Country" type="ns:CountryCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The country code of the user.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetUserPreferences</CallName>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>HighBidder</Context>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>ShippingAddress</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetHighBidders</CallName>

+						<CallName>GetOrders</CallName>

+						<CallName>GetUserContactDetails</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>SetUserPreferences</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CountryName" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The name of the user's country.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>SellerPaymentAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Phone" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					User's primary phone number.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>SellerPaymentAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<CallName>GetUserContactDetails</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="PhoneCountryCode" type="ns:CountryCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="PhoneCountryPrefix" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="PhoneAreaOrCityCode" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="PhoneLocalNumber" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<!-- phone number set 2 -->

+		<xs:element name="Phone2CountryCode" type="ns:CountryCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Phone2CountryPrefix" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Phone2AreaOrCityCode" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Phone2LocalNumber" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="PostalCode" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					User's postal code.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>12</MaxLength>

+					<CallInfo>

+						<CallName>GetAdFormatLeads</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>HighBidder</Context>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>ShippingAddress</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+						<Context>SellerPaymentAddress</Context>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>SoldList</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetHighBidders</CallName>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="AddressID" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					ID assigned to the address in the eBay database.

+					For GetOrders, applies only to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="AddressOwner" type="ns:AddressOwnerCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The realm to which the address belongs (e.g. eBay vs PayPal).

+					For GetOrders, applies only to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="AddressStatus" type="ns:AddressStatusCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					PayPal address status.

+					Not applicable to Half.com.

+				</xs:documentation>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ExternalAddressID" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					ID assigned to the address by the owner of the address (fitting

+					only if the address is owned by PayPal; see AddressOwner).

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>20</MaxLength>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="InternationalName" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Seller's international name that is associated with the payment address.

+					Only applicable to SellerPaymentAddress.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>SellerPaymentAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="InternationalStateAndCity" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					International state and city for the seller's payment address.

+					Only applicable to SellerPaymentAddress.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>SellerPaymentAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="InternationalStreet" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Seller's international street address that is associated with the payment address.

+					Only applicable to SellerPaymentAddress.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>SellerPaymentAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CompanyName" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					User's company name. Only returned if available.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUserContactDetails</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ShippingAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>RegistrationAddress</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="AddressRecordType" type="ns:AddressRecordTypeCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates the nature of the address (e.g., residential or business).

+					Not applicable to Half.com.

+				</xs:documentation>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AmountType.xsd #####

+

+-->

+	<xs:complexType name="AmountType">

+	<xs:annotation>

+		<xs:documentation>

+			Basic type for specifying monetary amounts. A double value (e.g.,

+			1.00 or 1.0) is meaningful as a monetary amount when accompanied by a

+			specification of the currency, in which case the value specifies

+			the amount in that currency. An AmountType expresses both the value

+			(a double) and the currency. Details such as prices, fees, costs,

+			and payments are specified as amount types.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:simpleContent>

+		<xs:extension base="xs:double">

+			<xs:attribute name="currencyID" type="ns:CurrencyCodeType" use="required">

+				<xs:annotation>

+					<xs:documentation>

+						Currency in which the monetary amount is specified.

+						Note that SendInvoice does not support this attribute for

+						ShippingInsuranceCost, ShippingServiceCost, ShippingServiceAdditionalCost,

+						SalesTaxAmount, and InsuranceFee.

+					</xs:documentation>

+					<xs:appinfo>

+						<!-- N/A to several SendInvoice input fields -->

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Always</Returned>

+							<Context>TotalWinningCost</Context>

+							<Context>TotalWonCost</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOffer</Context>

+							<Context>BuyItNowPrice</Context>

+							<Context>ConvertedMaxBid</Context>

+							<Context>CurrentPrice</Context>

+							<Context>MaxBid</Context>

+							<Context>SecondChanceOffer</Context>

+							<Context>ShippingServiceCost</Context>

+							<Context>StartPrice</Context>

+							<Context>Subtotal</Context>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>RespondToBestOffer</CallName>

+							<CallName>ReviseCheckoutStatus</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetOrders</CallName>

+							<ExcludeFromContext>InternationalShippingServiceOption</ExcludeFromContext>

+							<ExcludeFromContext>ShippingServiceOptions</ExcludeFromContext>

+							<ExcludeFromContext>ShippingServiceSelected</ExcludeFromContext>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<ExcludeFromContext>InternationalShippingServiceOption</ExcludeFromContext>

+							<ExcludeFromContext>ShippingServiceOptions</ExcludeFromContext>

+							<ExcludeFromContext>ShippingServiceSelected</ExcludeFromContext>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Context>InternationalShippingServiceOption</Context>

+							<Context>ShippingServiceOptions</Context>

+							<Context>ShippingServiceSelected</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Context>InternationalShippingServiceOption</Context>

+							<Context>ShippingServiceOptions</Context>

+							<Context>ShippingServiceSelected</Context>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<Returned>Always</Returned>

+							<Context>ConvertedCurrentPrice</Context>

+							<Context>CurrentPrice</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MinimumToBid</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>GetStoreOptions</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<CallName>VerifyAddSecondChanceItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>RelistItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddTransactionConfirmationItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:attribute>

+		</xs:extension>

+	</xs:simpleContent>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ApiAccessRuleType.xsd #####

+

+-->

+	<xs:complexType name="ApiAccessRuleType">

+		<xs:annotation>

+			<xs:documentation> 

+Contains the definition of a rule that governs the number of times your application 

+can access the eBay API (invoke a call) on an hourly, daily, or periodic basis.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CallName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The name of the call that has an access rule.

+					Can be a call name (e.g., AddItem), 

+					ApplicationAggregate (returns totals for all calls), or

+					PasswordAuthenticationLimiter.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CountsTowardAggregate" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Whether access to this call counts toward the application's 

+					aggregate limit for all calls.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DailyHardLimit" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The number of calls per day that your application

+					can make to this call before being refused. The

+					day starts at midnight, 00:00:00 PST. Note that the

+					time is in PST, not GMT.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DailySoftLimit" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 The number of calls per day that your application

+					 can make to this call before you receive a warning.

+					 The day starts at midnight, 00:00:00 PST.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DailyUsage" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 The number of times your application has used this

+					 call today. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HourlyHardLimit" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 The number of calls per hour that your application

+					 can make to this call before being refused. Each count

+					 begins on the hour, at 12:00:00, 1:00:00, and so on.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HourlySoftLimit" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 The number of calls per hour that your application

+					 can make to this call before you receive a warning.

+					 Each count begins on the hour, at 12:00:00, 1:00:00, and so on.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HourlyUsage" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 Number of times your application has executed this call this hour.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Period" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The length of time before your application's perodic usage counter restarts for this call.

+					If the number of calls you make exceeds the periodic hard limit before the current period ends,

+					further calls will be refused until the next period starts.

+					Possible values: -1 (Periodic limit not enforced, could be any negative integer),

+					0 (Calendar month), 30 (Number of days, could be any positive integer).

+					If the period is based on the calendar month, the usage counters restart on 

+					the same day of every month, regardless of the number of days in the month.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PeriodicHardLimit" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Number of calls per period that your application may make before a call is refused, 

+					if the periodic limit is enforced. The length of the period is specified in Period. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PeriodicSoftLimit" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Number of calls per period that your application may make before 

+					you receive a warning, if the periodic limit is enforced. 

+					The length of the period is specified in Period.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PeriodicUsage" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Number of calls that your application has already made this period. 

+					Returns 0 if the periodic access rule has not been configured for the application. 

+					The length of the period is specified in Period. 

+					The start date of the period is specified in PeriodicStartDate. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PeriodicStartDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The time (in GMT) when this access rule's period started. 

+					The period starts at midnight Pacific time. For example, if the period 

+					begins on June 29 in 2005 when California is on Pacific Daylight Time, 

+					the GMT value returned would be 2005-06-29T07:00:00.000Z

+					If the period begins on December 29 in 2005 when California is on 

+					Pacific Standard Time, the GMT value returned would be 

+					2005-12-29T08:00:00.000Z. Only returned when the eBay Developers Program 

+					has configured the start date for the access rule. 

+					The start date can vary per application and per call name (i.e., per access rule).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ModTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The date and time this access rule was last modified.

+					Indicates last time that values for RuleCurrentStatus, RuleStatus, 

+					URL, or EnforceURL changed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RuleCurrentStatus" type="ns:AccessRuleCurrentStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 Your application's current status for this rule,

+					 including whether the rule is set, the hourly

+					 limit is exceeded, the daily limit is exceeded,

+					 or the periodic limit is exceeded.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RuleStatus" type="ns:AccessRuleStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The status of the access rule, including whether the

+					rule is turned on or off, or whether the application is

+					currently blocked from using this call. No effect if 

+					RuleCurrentStatus=NotSet.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetApiAccessRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ApplicationDeliveryPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="ApplicationDeliveryPreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+				(in/out) Specifies preferences describing how notifications are

+				delivered to an application. Note that notifications are subject

+				to Anti-Spam rules. See Anti-Spam Rules in the eBay Web Services Guide for more information about these rules.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ApplicationURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The URL where eBay delivers all notifications sent

+						to the application. For delivery to a server, the URL

+						begins with http:// or https:// and must be well

+						formed. Use a URL that is functional at the time of the

+						call. For delivery to an email address, the URL begins

+						with mailto: and specifies a valid email address.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ApplicationEnable" type="ns:EnableCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A token indicating whether notifications are

+						enabled or disabled. If you disable notifications,

+						the application does not receive them, but notification

+						preferences are not erased.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AlertEmail" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The email address where eBay sends all application

+						markup and markdown event notifications. When setting the

+						email address, input must be in the format

+						mailto://youremailaddress@yoursite.com (with the mailto://

+						prefix). The application has to subscribe to recieve these

+						events using the AlertEnable field.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>Length of valid email ids</MaxLength>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AlertEnable" type="ns:EnableCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A token indicating whether markup and markdown alerts are enabled or disabled.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NotificationPayloadType" type="ns:NotificationPayloadTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If this field is specified, the value must be eBLSchemaSOAP.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeviceType" type="ns:DeviceTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The means of receipt of notification. In most cases, it is

+						Platform (typical API calls and web interaction), so this is the

+						default, if not specified. For wireless applications, use SMS.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SiteInfo>

+							<TheseSites>CN</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AttributeArrayType.xsd #####

+

+-->

+	<xs:complexType name="AttributeArrayType">

+		<xs:annotation>

+			<xs:documentation>

+		Reserved for future use.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Attribute" type="ns:AttributeType"  minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            Only applicable to Half.com. Not applicable to eBay listings.

+            You can revise this field for Half.com listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>ReviseItem</CallName>

+							<!-- Half.com does not support RelistItem. -->

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AttributeRecommendationsType.xsd #####

+

+-->

+	<xs:complexType name="AttributeRecommendationsType">

+		<xs:annotation>

+			<xs:documentation> 

+				Item Specifics data returned from the Suggested Attributes engine.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AttributeSetArray" type="ns:AttributeSetArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					A list of attribute sets containing recommended attributes and values. 

+					Returned from GetItemRecommendations when the Suggested Attributes engine is used 

+					See the eBay Web Services guide for additional details.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AttributeSetArrayType.xsd #####

+

+-->

+	<xs:complexType name="AttributeSetArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+		(in/out) Applicable for listings that include eBay's Item Specifics or Pre-filled Item Information features.

+      A list of attribute sets. An attribute set contains a list of attributes

+      that describe category-specific aspects or features of an item in a standardized way.

+      See the Developer's Guide for more information. In item-listing requests, 

+      this property is required if attributes are identified as required in the 

+      characteristics set meta-data. 

+      See the Developer's Guide for information about characteristics meta-data and how to 

+      determine when attributes are required.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AttributeSet" type="ns:AttributeSetType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+            (in/out) Contains a list of attributes that describe category-specific aspects or 

+            features of an item in a standardized way. 

+            For the AddItem family of calls and GetItem, an AttributeSetArrayType can contain a maximum of 2 full attribute sets 

+            (one for each category in which the item is listed) if the primary and secondary categories 

+            are mapped to different characteristics sets. If they are mapped to the same characteristics set, 

+            the AttributeSetArrayType can contain one full attribute set.

+            An AttributeSetArrayType can also contain any number of additional site-wide attribute sets.

+            In item-listing requests, this property is required if attributes 

+            are identified as required in the characteristics set meta-data. 

+            See the Developer's Guide for information about 

+            characteristics meta-data and validation rules that are applicable when listing items.

+            Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AttributeSetType.xsd #####

+

+-->

+	<xs:complexType name="AttributeSetType">

+		<xs:annotation>

+			<xs:documentation> 

+      (in/out) A set of salient aspects or features that describe an item in a standardized way.

+      Most commonly used in the Item Specifics section of a listing.

+      See the Developer's Guide information on 

+      working with Item Specifics and Pre-filled Item Information.

+      See the Developer's Guide for information about 

+      characteristics meta-data and how to determine when attributes are required.

+               </xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Attribute" type="ns:AttributeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+            A salient aspect or feature of an item in a given category. 

+            Attributes are known as "Item Specifics" in the eBay Web site. 

+            Use attributes to describe an item in a standard way so that buyers can find it more easily.

+            For example, "Publication Year" is a standard attribute for books.

+            In item-listing requests, multiple attributes can be specified. 

+            Some categories (e.g., Tickets) always require certain attributes to be specified. 

+            Therefore, in item-listing requests you need to at least specify "editable" attributes 

+            (EditType 0 and EditType 2 attributes) if they are identified as required 

+            in the attribute meta-data. See the eBay Web Services guide for information 

+            about attrribute meta-data, how to determine the valid attributes for a category, 

+            and how to determine whether attributes are required.

+            &lt;br&gt;&lt;br&gt;

+            If you are revising or relisting an item, you don't need to pass in attributes 

+            that were already specified in the original listing.

+            To remove an optional attribute, set all its value IDs to "-100". If the item has bids 

+            (or items have been sold) but there are more than 12 hours remaining until the listing ends, 

+            you can add Attribute nodes but you cannot remove or modify data in previously 

+            specified Attribute nodes. If the item has bids and the listing ends within 12 hours, 

+            you cannot add or remove Attribute nodes or modify the contents of previously 

+            specified Attribute nodes. 

+            &lt;br&gt;&lt;br&gt;

+            For GetCategoryListings, this returns the item condition only (and it is 

+            only returned if IncludeCondition = true in the request).

+            Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="attributeSetID" type="xs:int">

+			<xs:annotation>

+				<xs:documentation>

+         Constant value that identifies the attribute set in a language-independent way.

+         Unique across all eBay sites. Corresponds to a characteristics set ID. 

+         Call GetCategory2CS to determine valid characteristics set IDs.

+         For GetCategoryListings, you can ignore this value.

+         Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>AddLiveAuctionItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>Conditionally</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSearchResults</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>ReviseLiveAuctionItem</CallName>

+						<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetCategoryListings</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>GetSearchResults</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+		<xs:attribute name="attributeSetVersion" type="xs:string" use="optional">

+			<xs:annotation>

+				<xs:documentation>

+         Version of the attribute set being specified (in requests) or that is

+         currently on the site. This value changes each time changes are made to the 

+         category-to-characteristic set mappings or characteristic set data.

+         The current version value is not necessarily greater than the previous

+         value. Therefore, when comparing versions, only compare whether the

+         value has changed.&lt;br&gt;&lt;br&gt;

+         In listing requests, if you do not specify this value, eBay assumes you are 

+         using the current attribute set version. If you specify the version number of 

+         the attribute meta-data that you have stored locally, eBay will compare it to 

+         the current version on the site and return a warning if the versions do not match. 

+         If an error occurs due to invalid attribute data, this warning can be useful to help you

+         determine if you might be sending outdated data.

+         Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>AddLiveAuctionItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>Conditionally</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSearchResults</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>ReviseLiveAuctionItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<Returned>Conditionally</Returned>

+						<!-- N/A to GetSearchResults output -->

+					</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AttributeType.xsd #####

+

+-->

+	<xs:complexType name="AttributeType">

+	<xs:annotation>

+		<xs:documentation>

+			A salient aspect or feature of an item. On eBay.com, this information is used in the Item Specifics

+			section of a listing to describe an item

+			in a standard way so that buyers can find it more easily.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="Value" type="ns:ValType" maxOccurs="unbounded" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					A value the seller selected or entered for the attribute.

+					At least one value is required for each Attribute that you specify.

+					Some attributes can have multiple values.

+					See the eBay Web Services guide sections on

+					Item Specifics (Attributes) and Pre-filled Item Information (Catalogs)

+					for information about using GetAttributesCS to determine valid

+					attribute values.&lt;br&gt;&lt;br&gt;

+

+					For eBay.com listings, use AttributeSetArray.AttributeSet.Attribute.Value.

+					For Half.com, use AttributeArray.Attribute.Value. That is, the parent elements

+					and usage for Half.com differs from

+					eBay's standard Item Specifics format (and there is no relationship to GetAttributesCS).

+					For Half.com, this does not use the same Attributes logic as eBay's Item Specifics.

+					For Half.com, AttributeArray.Attribute.Value is required when you use AddItem.

+					see the eBay Web Services Guide for valid values.

+					You can revise AttributeArray.Attribute.Value for Half.com listings.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>AddLiveAuctionItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>Conditionally</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSearchResults</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>ReviseLiveAuctionItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetCategoryListings</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>GetSearchResults</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+	<xs:attribute name="attributeID" type="xs:int">

+		<xs:annotation>

+			<xs:documentation>

+				Constant value that identifies the attribute in a language-independent way.

+				Unique within the attribute set.

+				See the Developer's Guide topics on Item Specifics and Pre-filled Item Information

+				for information about determining valid attribute IDs.

+				Not applicable to Half.com.

+			</xs:documentation>

+			<xs:appinfo>

+				<CallInfo>

+					<CallName>AddItem</CallName>

+					<CallName>AddLiveAuctionItem</CallName>

+					<CallName>GetItemRecommendations</CallName>

+					<CallName>VerifyAddItem</CallName>

+					<Context>AttributeSetArray</Context>

+					<RequiredInput>Conditionally</RequiredInput>

+				</CallInfo>

+				<CallInfo>

+					<CallName>GetSearchResults</CallName>

+					<CallName>RelistItem</CallName>

+					<CallName>ReviseItem</CallName>

+					<CallName>ReviseLiveAuctionItem</CallName>

+					<Context>AttributeSetArray</Context>

+					<RequiredInput>No</RequiredInput>

+				</CallInfo>

+				<CallInfo>

+					<CallName>GetBidderList</CallName>

+					<CallName>GetCategoryListings</CallName>

+					<CallName>GetItemRecommendations</CallName>

+					<CallName>GetSearchResults</CallName>

+					<Returned>Conditionally</Returned>

+				</CallInfo>

+				<CallInfo>

+					<CallName>GetItem</CallName>

+					<Returned>Conditionally</Returned>

+					<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+				</CallInfo>

+			</xs:appinfo>

+		</xs:annotation>

+	</xs:attribute>

+	<xs:attribute name="attributeLabel" type="xs:string">

+		<xs:annotation>

+			<xs:documentation>

+				Name of the attribute being specified. This is not part of

+				eBay's standard Item Specifics format (i.e., there is no

+				relationship to GetAttributesCS). For GetCategoryListings, this

+				returns the value "Condition" to identify the item condition

+				attribute. For GetOrders, this is always returned for Half.com

+				orders. (It is not applicable to orders on the eBay.com site.)

+				For Half.com, see the eBay Web Services Guide for valid input

+				values. For Half.com, this field is required when you use

+				AddItem. You can revise this value for Half.com listings.

+			</xs:documentation>

+			<xs:appinfo>

+				<CallInfo>

+					<CallName>AddItem</CallName>

+					<CallName>GetItemRecommendations</CallName>

+					<CallName>VerifyAddItem</CallName>

+					<Context>AttributeArray</Context>

+					<RequiredInput>Conditionally</RequiredInput>

+				</CallInfo>

+				<CallInfo>

+					<CallName>ReviseItem</CallName>

+					<Context>AttributeArray</Context>

+					<RequiredInput>No</RequiredInput>

+					<!-- N/A to RelistItem -->

+				</CallInfo>

+				<CallInfo>

+					<CallName>GetCategoryListings</CallName>

+					<Returned>Conditionally</Returned>

+					<!-- N/A to GetItem or related calls -->

+				</CallInfo>

+				<CallInfo>

+					<CallName>GetOrders</CallName>

+					<Returned>Always</Returned>

+				</CallInfo>

+			</xs:appinfo>

+		</xs:annotation>

+	</xs:attribute>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AuthenticationEntryArrayType.xsd #####

+

+-->

+	<xs:complexType name="AuthenticationEntryArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Container for a list of AuthenticationEntries. Can contain zero, one, or multiple

+				AuthenticationEntryType objects.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AuthenticationEntry" type="ns:AuthenticationEntryType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            Contains the data properties that define one authentication entry.

+            Multiple AuthenticationEntry fields can be returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetReturnURL</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/AuthenticationEntryType.xsd #####

+

+-->

+	<xs:complexType name="AuthenticationEntryType">

+		<xs:annotation>

+			<xs:documentation>

+				A set of application-level authentication preferences and related data that

+				you configure to support the user authentication and authorization process.

+    	</xs:documentation>

+			<xs:appinfo>

+				<SeeLink>

+					<Title>Authentication &amp; Authorization</Title>

+					<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+				</SeeLink>

+			</xs:appinfo>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AcceptURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            A URL that you set up in order to determine when a

+            user's authentication and authorization process succeeded.

+            After a user signs into eBay and authorizes your application

+            to execute secure calls on their behalf, eBay redirects the

+            user's browser to this URL and, if TokenReturnMethod is set

+            to Redirect, appends the user's authentication token plus

+            other data that you specified to identify the user.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>500</MaxLength>

+						<CallInfo>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetReturnURL</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Authentication &amp; Authorization</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PrivacyPolicyURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Your privacy policy URL, which is shown to end users on the eBay sign-in page.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>500</MaxLength>

+						<CallInfo>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetReturnURL</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Authentication &amp; Authorization</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RejectURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            A URL that you set up in order to determine when a

+            user's authentication and authorization process did not succeed.

+            After a user signs into eBay but chooses NOT to authorize your application

+            to execute secure calls on their behalf, eBay redirects the

+            user's browser to this URL and appends data that you specified

+            to identify the user (but does not return an authentication token).

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>500</MaxLength>

+						<CallInfo>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetReturnURL</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Authentication &amp; Authorization</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RuName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            A unique identifier associated with application and the combination

+            of URLs within this authentication entry.

+            Unique across all applications that execute eBay Web Services calls.

+            For convenience, you can call GetRuName to generate a unique value.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>255</MaxLength>

+						<CallInfo>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetReturnURL</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Authentication &amp; Authorization</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TokenReturnMethod" type="ns:TokenReturnMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Specifies whether to return the token in the HTTP response stream

+            sent to the accept URL, or to make it available for retrieval via FetchToken.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetReturnURL</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetReturnURL</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Authentication &amp; Authorization</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=AuthNAuth</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BalanceCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BalanceCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           BalanceCodeType - Type declaration to be used by other schema. This

+           code identifies the types of balances in an account, e.g., a PayPal

+           account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Custom Code.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BasicAmountType.xsd #####

+

+-->

+	<xs:complexType name="BasicAmountType">

+		<xs:simpleContent>

+			<xs:extension base="xs:string">

+				<xs:attribute name="currencyID" type="ns:CurrencyCodeType" use="required"/>

+			</xs:extension>

+		</xs:simpleContent>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BasicUpgradePackEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="BasicUpgradePackEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the BasicUpgradePack feature (a feature pack). If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned). Australia site (site ID 15, abbreviation AU) only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferActionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BestOfferActionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Indicates the action taken by a seller for a best offer. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Accept">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) To accept something.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Decline">

+				<xs:annotation>

+					<xs:documentation> 

+						To decline something.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Counter">

+				<xs:annotation>

+					<xs:documentation> 

+						To counter offer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+				<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferArrayType.xsd #####

+

+-->

+	<xs:complexType name="BestOfferArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+				A collection of Best Offers. Empty if there are no best offers.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BestOffer" type="ns:BestOfferType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+						A container of details about a best offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<CallName>RespondToBestOffer</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferAutoDeclineEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="BestOfferAutoDeclineEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the BestOfferAutoDeclineEnabled feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferCounterEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="BestOfferCounterEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the BestOfferCounterEnabled feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferDetailsType.xsd #####

+

+-->

+	<xs:complexType name="BestOfferDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Container for BestOffer properties associated with the item.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BestOfferCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The number of best offers made for this item, if any.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether best offer is enabled for this item.

+						If a listing has no active best offers, you can change this value (true to false, and vice versa).

+						If a listing does have active best offers, you cannot change the value to false.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>GetItemRecommendations</CallName>

+						  <CallName>RelistItem</CallName>

+						  <CallName>ReviseItem</CallName>

+						  <CallName>VerifyAddItem</CallName>

+						  <RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOffer" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(GetMyeBayBuying only) Indicates the latest BestOffer the user has provided for the item .

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferStatus" type="ns:BestOfferStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(GetMyeBayBuying only) Indicates the status of the latest BestOffer the user has provided for the item .

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferType" type="ns:BestOfferTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the best offer type of the latest BestOffer the user has provided for the item .

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="BestOfferEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the BestOfferEnabled feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferIDType.xsd #####

+

+-->

+	<xs:simpleType name="BestOfferIDType">

+		<xs:annotation>

+			<xs:documentation>

+				Unique identifier for a best offer (to differentiate from

+				other best offers for the same item).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BestOfferStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The status of the best offer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Pending">

+				<xs:annotation>

+					<xs:documentation>

+						The best offer is awaiting seller response or will naturally expire after 48 hours.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Accepted">

+				<xs:annotation>

+					<xs:documentation>

+						The best offer was accepted by the seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Declined">

+				<xs:annotation>

+					<xs:documentation>

+						The best offer was rejected by the seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Expired">

+				<xs:annotation>

+					<xs:documentation>

+						The best offer expired after 48 hours due to no action by the seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Retracted">

+				<xs:annotation>

+					<xs:documentation>

+						The best offer was retracted by the buyer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AdminEnded">

+				<xs:annotation>

+					<xs:documentation>

+						The best offer was ended by an administrator.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Active">

+				<xs:annotation>

+					<xs:documentation>

+						Retrieve active best offers only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Countered">

+				<xs:annotation>

+					<xs:documentation>

+						Retrieve all counter best offers.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="All">

+				<xs:annotation>

+					<xs:documentation>

+						Retrieve all best offers (including declined offers, etc.).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferType.xsd #####

+

+-->

+	<xs:complexType name="BestOfferType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a best offer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BestOfferID" type="ns:BestOfferIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) An id to distinguish this best offer from other best offers

+						made on the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpirationTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Date and time (in GMT) the offer naturally expires (if the

+						seller has not accepted or declined the offer).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Buyer" type="ns:UserType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Information about the buyer who made the best offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Price" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The amount of the best offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:BestOfferStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The state of the offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Quantity" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of items for which the buyer is making an offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Text message provided by buyer when placing best offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>500 (in bytes)</MaxLength>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Text response to buyer from seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>500 (in bytes)</MaxLength>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferCodeType" type="ns:BestOfferTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The best offer type.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CallStatus" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The status of the call, either Success or Failure.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>RespondToBestOffer</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BestOfferTypeCodeType.xsd #####

+

+-->

+	<xs:simpleType name="BestOfferTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The offer type of the best offer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="BuyerBestOffer">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has placed best offer on the item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerCounterOffer">

+				<xs:annotation>

+					<xs:documentation> 

+						The buyer has made a counter offer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerCounterOffer">

+				<xs:annotation>

+					<xs:documentation>

+						The seller has made a counter offer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidActionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BidActionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+          BidActionCodeType - Type declaration to be used by other schema.

+          These are the possible codes for types of bid.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Unknown">

+				<xs:annotation>

+					<xs:documentation>

+                Unknown

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Bid">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Bid. The offer is being or was placed on a competitive-bidding

+                listing (a Chinese or Dutch auction).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotUsed">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Not used.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Retraction">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Retraction. The offer was retracted by the user who extended the

+                offer. (Must be done on the eBay site, not possible through the API.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AutoRetraction">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Auto-retraction. The offer was auto-retracted. (Must be done on the

+                eBay site, not possible through the API.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Cancelled">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Cancelled. The offer was cancelled. (Must be done on the eBay site,

+                not possible through the API.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AutoCancel">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Auto-cancel. The offer was auto-cancelled. (Must be done on the eBay

+                site, not possible through the API.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Absentee">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Absentee. The offer placed was an absentee bid. (Must be done on the

+                eBay site, not possible through the API.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyItNow">

+				<xs:annotation>

+					<xs:documentation>

+                (out) BuyItNow. The offer resulted in the successful exercise of the Buy It

+                Now option for a Chinese auction.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Purchase">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Purchase. The offer is being or was placed on a fixed-price listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidApprovalArrayType.xsd #####

+

+-->

+	<xs:complexType name="BidApprovalArrayType">

+		<xs:annotation>

+			<xs:documentation>

+			Mulitple bidders can be approved with one call.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="LiveAuctionBid" type="ns:BidApprovalType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					The settings the seller specifies about one user when approving or denying 

+					that user's request to bid on items in the seller's Live Auctions catalog.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidApprovalType.xsd #####

+

+-->

+	<xs:complexType name="BidApprovalType">

+		<xs:annotation>

+			<xs:documentation>

+			Information that a Live Auction seller selects when approving or denying 

+			a user who wants to bid on items in the seller's Live Auctions catalog.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UserID" type="ns:UserIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						User ID for the bidder to be approved.

+						Only users that have requested approval can be approved. 

+						That is, the seller cannot approve a bidder that has not requested approval 

+						via the web flow. When you are approving bidders, if you pass in multiple 

+						BidApproval entries with duplicate UserID values,

+						the last entry with that UserID is used for the request (and the earlier 

+						duplicate UserID entries are ignored).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>					

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ApprovedBiddingLimit" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount that seller is approving the bidders for. 

+						This field is required if the seller has requested for the bidders 

+						to enter the amount to be approved.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>					

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeclinedComment" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Comments entered by seller when an appoval request is declined. 

+						This is required if seller is setting Status="Denied".

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>					

+				</xs:annotation>

+			</xs:element>			

+			<xs:element name="Status" type="ns:BidderStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Sellers set the status. See BidderStatusCodeType for possible values.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>					

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+			

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidderDetailArrayType.xsd #####

+

+-->

+	<xs:complexType name="BidderDetailArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+				A collection of Bidder Detail.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BidderDetail" type="ns:BidderDetailType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+						Details about a Live Auctions bidder.

+						Returned if at least one bidder has requested approval.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidderDetailType.xsd #####

+

+-->

+	<xs:complexType name="BidderDetailType">

+		<xs:annotation>

+			<xs:documentation> 

+        Contains the data for a user who is interested in bidding on items in a Live Auctions catalog.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UserID" type="ns:UserIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					ID of the user requesting approval.

+					</xs:documentation>

+					<xs:appinfo> 	

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Email" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						E-mail address of the bidder. 

+						You cannot retrieve an email address for any user with whom 

+						you do not have a transactional relationship, regardless of 

+						site. Email is only returned for applicable calls when you 

+						are retrieving your own user data OR when you and the other 

+						user are in a transactional relationship and the call is 

+						being executed within a certain amount of time after the 

+						transaction is created.

+						Returned as CDATA. When an email address can not be returned, 

+						the string "Invalid Request" is returned instead.

+					</xs:documentation>

+					<xs:appinfo> 	

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeedbackScore" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Aggegate feedback score for the specified user. 

+					Feedback score is only return if the user has not chosen to make his 

+					or her feeback private.

+					</xs:documentation>

+					<xs:appinfo> 	

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UniqueNegativeFeedbackCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Total count of negative feeback entries from unique users who have left 

+					feedback for the user.

+					</xs:documentation>

+					<xs:appinfo> 	

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UniquePositiveFeedbackCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Total count of positive feeback entries from unique users who have left 

+					feedback for the user.

+					</xs:documentation>

+					<xs:appinfo> 	

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>	

+			<xs:element name="LiveAuctionBidResult" type="ns:LiveAuctionBidType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains the bidder details that match the bidder query

+						passed in the request. 

+						Always returned when bidder search results are found.

+					</xs:documentation>

+					<xs:appinfo> 	

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+			

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidderIdType.xsd #####

+

+-->

+	<xs:simpleType name="BidderIdType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:int"/>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidderNoticePreferencesType.xsd #####

+

+-->

+	<xs:complexType name="BidderNoticePreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+			  Contains a seller's preferences for receiving bidder notices.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UnsuccessfulBidderNoticeIncludeMyItems" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  If true, sends the seller a notice containing the contact information for unsuccessful

+					  bidders.

+				  </xs:documentation>

+				  <xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidderStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BidderStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+This code identifies the status of the Bidder's request 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Approved">

+				<xs:annotation>

+					<xs:documentation>

+               (in/out) Bidder's request is approved.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>			

+			<xs:enumeration value="Denied">

+				<xs:annotation>

+					<xs:documentation>

+               (in/out) Bidder's request is denied.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Pending">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Bidder's request is pending.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+				

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                			(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BidderTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BidderTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				BidderTypeCodeType - Type declaration to be used by other schema.

+				Specifies the whether to retrieve all bidders for ended or open

+				listings. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AllBidder">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Retrieve all bidders for ended or open listings.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HighBidder">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Retrieve all high bidders.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BiddingDetailsType.xsd #####

+

+-->

+	<xs:complexType name="BiddingDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ConvertedMaxBid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Converted value of the value in MaxBid, in the currency indicated by SiteCurrency.

+						For active items, refresh the listing's data every 24

+						hours to pick up the current conversion rates. Under conditions where this value

+						would be N/A on the eBay site, this element is not returned at all.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxBid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+								Indicates the maximum amount the user has agreed to pay for the item when the

+								user last submitted a bid. Under conditions where this value would be

+								N/A on the eBay site, this element is not returned at all.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QuantityBid" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(GetMyeBay only) Number of items from the listing the user agreed to

+						purchase with a bid. For single-item listings, always 1.

+						For multi-item listings, will be between 1 and the number of items offered in the auction.

+						Number of items purchased so far.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QuantityWon" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(GetMyeBay only) Used mainly for Dutch auction. For an active listing,

+						number of items the user stands to win if the user is a current winning bidder.

+						For an ended listing, number of items the user actually won.

+						In both cases, the number may be less than that returned in

+						QuantityBid as the lowest winning bidder in a Dutch auction might not win

+						the number of items the user has bid on.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Winning" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(GetMyeBay only) Indicates whether the user is the current

+						high bidder in a currently active listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BulkCatalogListerStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BulkCatalogListerStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Preapproved">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Active">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OnWatch">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OnHold">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Suspended">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WatchWarn">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BuyerProtectionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="BuyerProtectionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           BuyerProtectionCodeType - Type declaration to be used by other

+           schema. Indicates the status of the item's eligibility for the Buyer

+           Protection Program.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ItemIneligible">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Item is ineligible (e.g., category not applicable).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemEligible">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Item is eligible per standard criteria.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemMarkedIneligible">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Item marked ineligible per special criteria (e.g., seller's account closed).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemMarkedEligible">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Item marked eligible per other criteria.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/BuyerRequirementsType.xsd #####

+

+-->

+	<xs:complexType name="BuyerRequirementsType">

+		<xs:annotation>

+			<xs:documentation>

+				Container for all buyer requirements in listing calls.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ShipToRegistrationCountry" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If true, blocks bidders who are registered in countries to which

+						the seller has specified he will not shipo.

+						Ignored as input if the application uses version 451 or older.

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>false</Default>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ZeroFeedbackScore" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If true, blocks bidders with a feedback score of 0 who attempt to bid on

+						Buy It Now items worth 100 RMB or more.

+						Ignored as input if the application uses version 451 or older.

+						This requirement is only enabled for the CN site.

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>false</Default>

+						<SiteInfo>

+							<TheseSites>CN</TheseSites>

+						</SiteInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumFeedbackScore" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If true, blocks bidders with this feedback score or lower.

+						Ignored as input if the application uses version 451 or older.

+						Valid values: -3, -2, -1.

+					</xs:documentation>

+					<xs:appinfo>

+						<Min/>

+						<Max/>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaximumUnpaidItemStrikes" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If true, blocks bidders who have received two unpaid item

+						strikes in the last 30 days.

+						Ignored as input if the application uses version 451 or older.

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>false</Default>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaximumItemRequirements" type="ns:MaximumItemRequirementsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A means of limiting unpaying, low feedback bidders.

+						Ignored as input if the application uses version 451 or older.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LinkedPayPalAccount" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If true, only bidders with PayPal accounts linked to eBay may bid.

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>false</Default>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="VerifiedUserRequirements" type="ns:VerifiedUserRequirementsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A means of limiting unverified bidders.

+						Ignored as input if the application uses version 451 or older.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BuyerType.xsd #####

+

+-->

+	<xs:complexType name="BuyerType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains information about a user as a buyer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ShippingAddress" type="ns:AddressType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains the address of the buyer in the transaction, to which the seller

+						would ship the item(s). See AddressType for its child elements. GetAllBidders

+						is returning only Country and PostalCode currently.

+						Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+					<!-- N/A: GetUser -->

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BuyingGuideDetailsType.xsd #####

+

+-->

+	<xs:complexType name="BuyingGuideDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+          Information about zero or more buying guides and the site's buying guide hub.

+          Buying guides contain content about particular product areas, categories, or subjects 

+          to help buyers decide which type of item to purchase based on their particular interests.  

+          Multiple buying guides can be returned. See the eBay Web Services Guide for additional information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BuyingGuide" type="ns:BuyingGuideType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            Information that identifies a buying guide. A buying guide contains content about particular 

+            product areas, categories, or subjects to help buyers decide which type of item 

+            to purchase based on their particular interests.  

+            Buying guides are useful to buyers who do not have a specific product in mind. 

+            For example, a digital camera buying guide could help a buyer determine what kind of 

+            digital camera is right for them.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyingGuideHub" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            URL of the buying guide home page for the site being searched.

+            Your application can present this URL as a link. Optionally, 

+            you can use a value like "See all buying guides" as the link's display name.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BuyingGuideType.xsd #####

+

+-->

+	<xs:complexType name="BuyingGuideType">

+		<xs:annotation>

+			<xs:documentation>

+				Information that identifies a buying guide. A buying guide provides content about particular

+				product areas, categories, or subjects to help buyers decide which type of item

+				to purchase based on their particular interests.

+				Buying guides are useful to buyers who do not have a specific product in mind.

+				For example, a digital camera buying guide could help a buyer determine what kind of

+				digital camera is right for them.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+		<xs:element name="Name" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Display name of the buying guide. Typically similar to the name of the category

+					or product finder associated with the buying guide.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryListings</CallName>

+						<CallName>GetSearchResults</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="URL" type="xs:anyURI" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					URL for the buying guide. Your application can

+					present this as a link. Use the value of Name as the link's display name.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryListings</CallName>

+						<CallName>GetSearchResults</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Identifies the category (if any) that is associated

+					with the buying guide. This can be a category that is higher or lower in the hierarchy

+					than the category specified in the request. For a matching categories search,

+					you can use this information to determine the order that the buying guides are

+					returned in when multiple guides are found.

+					Optionally, you can use this information to determine where to present

+					the buying guide link in your application.

+					Not returned for product finder searches.

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>10</MaxLength>

+					<CallInfo>

+						<CallName>GetCategoryListings</CallName>

+						<CallName>GetSearchResults</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ProductFinderID" type="xs:int" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Identifies the product finder (if any) that is associated with the buying guide.

+					Only returned for product finder searches.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetSearchResults</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/BuyingSummaryType.xsd #####

+

+-->

+	<xs:complexType name="BuyingSummaryType">

+		<xs:sequence>

+			<xs:element name="BiddingCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+				     	The number of items the user has bid on.

+					</xs:documentation>

+				 <xs:appinfo>

+					<CallInfo>

+						<CallName>GetMyeBayBuying</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WinningCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 The number of items the user has bid on and is winning, but that have not yet ended.

+					</xs:documentation>

+					 <xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalWinningCost" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+				     	The total cost of items the user is presently winning.

+					</xs:documentation>

+					 <xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WonCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The number of items the user has bid on and won.

+					</xs:documentation>

+					 <xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalWonCost" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 The total cost of items the user has bid on and won.

+					</xs:documentation>

+					 <xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WonDurationInDays" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The time period for which won items are displayed. Default is 31 days.

+					</xs:documentation>

+					 <xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferCount" type="xs:int" minOccurs="0">

+			  	<xs:annotation>

+			    		<xs:documentation>

+			    		The number of items the user has made best offers on.

+			    		</xs:documentation>

+					 <xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+			  	</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CalculatedShippingChargeOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CalculatedShippingChargeOptionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Calculated Shipping Charge Options

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ChargeEachItem">

+				<xs:annotation>

+					<xs:documentation>

+						Charge the actual shipping cost and my full packaging and handling

+						fee for each item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ChargeEntireOrder">

+				<xs:annotation>

+					<xs:documentation>

+						Charge the actual shipping cost and a packaging and handling fee of

+						X amount for the entire order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CalculatedShippingPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="CalculatedShippingPreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+				Calculated shipping preferences for the user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CalculatedShippingAmountForEntireOrder" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The calculated shipping amount for the entire order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CalculatedShippingChargeOption" type="ns:CalculatedShippingChargeOptionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether to charge the actual shipping and handling cost for the entire order

+						or for each item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CalculatedShippingRateOption" type="ns:CalculatedShippingRateOptionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether to calculate the actual rate shipping based on the combined item weight

+						or the individual item weight.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InsuranceOption" type="ns:InsuranceOptionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Whether the seller offers shipping insurance and, if

+						so, whether the insurance is optional or required. Flat and

+						calculated shipping.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CalculatedShippingRateOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CalculatedShippingRateOptionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Calculated Shipping Rate Options.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="CombinedItemWeight">

+				<xs:annotation>

+					<xs:documentation>

+						Calculate the Actual Shipping Rate from Combined Item Weight

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IndividualItemWeight">

+				<xs:annotation>

+					<xs:documentation>

+						Calculate the Actual Shipping Rate from Individual Item Weight

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CalculatedShippingRateType.xsd #####

+

+-->

+	<xs:complexType name="CalculatedShippingRateType">

+		<xs:annotation>

+			<xs:documentation>

+				(in/out) Details pertinent to one or more items for which

+				calculated shipping has been offered by the seller, such as package

+				dimension and weight and packaging/handling costs. Also returned

+				with the data for an item's transaction.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="OriginatingPostalCode" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Postal code for the location from which the package will be shipped.

+						For calculated shipping only.

+						Use Item.PostalCode to specify the location of the item and where it will be

+						shipped from. The value of Item.PostalCode overrides any value specified with

+						OriginatingPostalCode, and will be used to calculate shipping costs.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PackageDepth" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Depth of the package needed to ship the items.

+						This is validated against the selected shipping service.

+						Upon mismatch, a message is returned, such as, "Package

+						dimensions exceeds maximum allowable limit for

+						service XXXXX," where XXXXX is the name of the shipping service.

+						For calculated shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PackageLength" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Length of the package needed to ship the items.

+						Upon mismatch, a message is returned, such as, "Package

+						dimensions exceeds maximum allowable limit for

+						service XXXXX," where XXXXX is the name of the shipping service.

+						For calculated shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PackageWidth" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Width of the package needed to ship the items.

+						Upon mismatch, a message is returned, such as, "Package

+						dimensions exceeds maximum allowable limit for

+						service XXXXX," where XXXXX is the name of the shipping service.

+						For calculated shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PackagingHandlingCosts" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Fees a seller might assess for the shipping of the

+						item (in addition to whatever the shipping service might

+						charge). For calculated shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingIrregular" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Whether a package is irregular and therefore cannot go

+						through the stamping machine at the shipping service office and

+						thus requires special or fragile handling. For calculated

+						shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingPackage" type="ns:ShippingPackageCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The nature of the package used to ship the item(s).

+						Required for calculated shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WeightMajor" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) An aspect of shipping weight whose value depends on

+						the unit attribute. The following would represent a package

+						weight of 5 lbs 2 oz: &amp;lt;WeightMajor unit="lbs"&amp;gt;5&amp;lt;/WeightMajor&amp;gt;

+						&amp;lt;WeightMinor unit="oz"&amp;gt;2&amp;lt;/WeightMinor&amp;gt;

+						See http://www.ups.com for UPS' maximum weight allowed.

+						Above this maximum, the shipping type would become Freight.

+						This is validated against the selected shipping service.

+						Upon mismatch, a message is returned, such as, "Package weight

+						exceeds maximum allowable limit for service XXXXX," where

+						XXXXX is the name of the shipping service.

+						For calculated shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WeightMinor" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) An aspect of shipping weight whose value depends on

+						the unit attribute. The following would represent a package

+						weight of 5 lbs 2 oz: &amp;lt;WeightMajor unit="lbs"&amp;gt;5&amp;lt;/WeightMajor&amp;gt;

+						&amp;lt;WeightMinor unit="oz"&amp;gt;2&amp;lt;/WeightMinor&amp;gt;

+						For calculated shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CancelOfferArrayType.xsd #####

+

+-->

+	<xs:complexType name="CancelOfferArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+        Container for a list of offers. May contain zero, one, or multiple

+        OfferType objects, each of which represents one offer extended by

+        a user on a listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CancelOffer" type="ns:CancelOfferType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            Contains the data for one offer. This includes: data for the user making the

+            offer, the amount of the offer, the quantity of items being bought from the

+            listing, the type of offer being made, and more.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CancelOfferType.xsd #####

+

+-->

+	<xs:complexType name="CancelOfferType">

+		<xs:annotation>

+			<xs:documentation> 

+        Container for a list of offers. May contain zero, one, or multiple

+        OfferType objects, each of which represents one offer extended by

+        a user on a listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Offer" type="ns:OfferType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Contains the data for one offer. This includes: data for the user making the

+            offer, the amount of the offer, the quantity of items being bought from the

+            listing, the type of offer being made, and more.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Explanation" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryArrayType.xsd #####

+

+-->

+	<xs:complexType name="CategoryArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+				Container for a list of categories.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Category" type="ns:CategoryType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            Contains the data for one category. See the schema documentation for

+            CategoryType for details on its properties and their meanings.

+            For GetCategories, not returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetCategoryListings</CallName>

+						  <CallName>GetPopularKeywords</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Always</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>UnmappedCategoryArray</Context>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryFeatureDetailLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CategoryFeatureDetailLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The Detail Level argument for GetCategories allows the following settings to

+				control the detail level of the result set.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ReturnAll">

+				<xs:annotation>

+					<xs:documentation>

+					  Return all available data.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReturnFeatureDefinitions">

+				<xs:annotation>

+					<xs:documentation>

+					  Return the category feature definitions only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryFeatureType.xsd #####

+

+-->

+	<xs:complexType name="CategoryFeatureType">

+		<xs:annotation>

+			<xs:documentation>

+				A container node that identifies a category that has one of the features specified in

+				FeatureID (in GetCategoryFeaturesRequest).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the identifier of the category that has the feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingDuration" type="ns:ListingDurationReferenceType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					  Identifies the listing duration set that applies to the category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTermsRequired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether sellers are required to specify shipping tems

+						for this category. Returned only if this category overrides the

+						site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  Indicates whether best offers are allowed for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DutchBINEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  Indicates whether DutchBIN are allowed for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserConsentRequired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  Indicates whether a bidder must consent to the bid by confirming that

+					  he or she read and agrees to the terms in eBay's privacy policy.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HomePageFeaturedEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  Indicates whether or not it is possible to enhance a listing by putting

+						it into a rotation for display on a special area of the eBay home page.

+						Support for this feature varies by site. Item or feedback restrictions may apply.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProPackEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether ProPackBundle (a feature pack) is enabled for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BasicUpgradePackEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the Basic Upgrade Pack bundle feature

+						is enabled for this category. Australia site

+						(site ID 15, abbreviation AU) only. Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ValuePackEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether ValuePack bundle (a feature pack) is enabled

+						for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProPackPlusEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the ProPackPlus bundle (a feature pack) is enabled for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AdFormatEnabled" type="ns:AdFormatEnabledCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the Ad Format feature is enabled for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DigitalDeliveryEnabled" type="ns:DigitalDeliveryEnabledCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether or not the digital delivery listing option is available

+						for this category. Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferCounterEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether counter offers are allowed on best offers for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferAutoDeclineEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether auto decline for best offers are allowed for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketSpecialitySubscription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether LocalMarketSpecialitySubscription feature is supported for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketRegularSubscription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether LocalMarketRegularSubscription feature is supported for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketPremiumSubscription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether LocalMarketPremiumSubscription feature is supported for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketNonSubscription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether LocalMarketNonSubscription feature is supported for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether listings in this category are eligible for eBay Express

+						(assuming other item and user eligibility requirements are also met).

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressPicturesRequired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether a listing requires a picture (or gallery image) in order

+						to qualify for eBay Express when listed in this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressConditionRequired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether a listing requires the Item Condition

+						to be specified (using Item Specifics in AttributeSetArray) in order

+						to qualify for eBay Express when listed in this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumReservePrice" type="xs:double" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether Minimum Reserve Price is enabled for this

+						category. Returned only if this category overrides the site default.

+						Beginning mid- to late June, 2006, on the Germany, Austria, Belgium French, and Belgium Dutch

+						sites, Minimum Reserve Price is supported for the Art and Antiques, Watches and Jewelry, and

+						Motorbikes categories.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>		

+			<xs:element name="SellerContactDetailsEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionConfirmationRequestEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the Transaction Confirmation Request feature is supported for this category.

+						Returned only if this category overrides the site default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryFinanceOfferArrayType.xsd #####

+

+-->

+	<xs:complexType name="CategoryFinanceOfferArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				A set of financing offers, each valid within one particular category.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CategoryFinanceOffer" type="ns:CategoryFinanceOfferType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A financing offer valid within a particular category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2FinanceOffer</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryFinanceOfferType.xsd #####

+

+-->

+	<xs:complexType name="CategoryFinanceOfferType">

+		<xs:annotation>

+			<xs:documentation>

+				A financing offer valid within a particular category.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FinanceOfferID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						The unique ID for the financing offer. Call GetFinanceOffers using the FinanceOfferID

+						to get more information about the offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2FinanceOffer</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The category within which the financing offer is valid.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetCategory2FinanceOffer</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryListingsOrderCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CategoryListingsOrderCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           CategoryListingsOrderCodeType - Type declaration to be used by other

+           schema. This code identifies the CategoryListingsOrder codes (e.g.,

+           for GetCategoryListings request) to be used to filter the returned

+           data in the ways enumerated below.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NoFilter">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Applies no filter.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemsBy24Hr">

+				<xs:annotation>

+					<xs:documentation> 

+                (in) Returns items that were listed in the past 24 hours.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemsEndToday">

+				<xs:annotation>

+					<xs:documentation> 

+                (in) Reserved for internal use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemsEndIn5Hr">

+				<xs:annotation>

+					<xs:documentation> 

+                (in) Reserved for internal use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByPriceAsc">

+				<xs:annotation>

+					<xs:documentation> 

+				(in) Sort items by price (lowest first)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByPriceDesc">

+				<xs:annotation>

+					<xs:documentation> 

+				(in) Sort items by price (highest first)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DistanceSort">

+				<xs:annotation>

+					<xs:documentation> 

+				(in) Sort items by distance

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryListingsSearchTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CategoryListingsSearchCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           CategoryListingsSearchCodeType - Type declaration to be used by

+           other schema. Used to filter returned item listings to just those

+           that are featured or super-featured.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Featured">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Return only featured item listings.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SuperFeatured">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Return only super-featured item listings.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryMappingType.xsd #####

+

+-->

+	<xs:complexType name="CategoryMappingType">

+	  <xs:annotation>

+			<xs:documentation>

+Mapping between an old category ID and an active category ID.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="oldID" type="xs:string">

+			<xs:annotation>

+				<xs:documentation>

+         Identifier for an old category that has been combined with an active category. 

+         Unique for the site. These IDs correspond to older category IDs that 

+         calls like GetCategories have returned in the past. 

+         In GetCategoryMappings, this is always returned when CategoryMapping is returned.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryMappings</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+		<xs:attribute name="id" type="xs:string">

+			<xs:annotation>

+				<xs:documentation>

+					Identifier for an active category. Unique for the site. 

+					These IDs correspond to the current IDs in the category hierarchy 

+					(returned from GetCategories and related calls). Multiple mappings can 

+					specify the same active category ID, because different old IDs can be mapped 

+					to the same active category. See "Mapping Categories on the Client Side" in the 

+					eBay Web Services guide.

+					In GetCategoryMappings, this is always returned when CategoryMapping is returned.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryMappings</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>		

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CategoryType.xsd #####

+

+-->

+	<xs:complexType name="CategoryType">

+		<xs:annotation>

+			<xs:documentation>

+        Container for data on one listing category.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BestOfferEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, the category supports best offers.

+						If false or not present, the category does not support best offers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AutoPayEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, indicates that the category supports Immediate Payment.

+						If false or not present, the category does not support Immediate Payment.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="B2BVATEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, the category supports business-to-business (B2B) VAT

+						listings. Applicable for the eBay Germany (DE), Austria (AT), or Switzerland

+						CH) site only. If false or not present, the category does not support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CatalogEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, the category is associated with catalog content and the corresponding

+						catalog is identified by the characteristics set ID. See CharacteristicsSets.

+						As the Pre-filled Item Information feature uses the Item Specifics feature, the

+						set of catalog-enabled categories is a subset of the categories that are mapped

+						to characteristics sets. Not returned if false.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Distinct numeric ID for a category on eBay.

+						For GetPopularKeywords, -1 represents the root

+						category.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+							<Context>PrimaryCategory</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>FreeAddedCategory</Context>

+							<Context>SecondaryCategory</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetContextualKeywords</CallName>

+							<CallName>GetPopularKeywords</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Always</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>UnmappedCategoryArray</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>PrimaryCategory</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>FreeAddedCategory</Context>

+							<Context>SecondaryCategory</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSuggestedCategories</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>FreeAddedCategory</Context>

+							<Context>SecondaryCategory</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>PrimaryCategory</Context>

+							<Context>SecondaryCategory</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CategoryLevel" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The level where the category fits in the site's category hierarchy.

+						For example, if this field has a value of 2, then the category is two

+						levels below the root category in the site's category hierarchy. Output only.

+						For the GetSearchResults response, NumOfItems indicates the total quantity of

+						matching items in a category. Matching categories at the same level

+						(i.e., in sibling categories) are sorted by NumOfItems, descending order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>CategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CategoryName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Display (text) name of the category as displayed on the eBay Web site.

+						In GetItem, this is a fully qualified category name

+						(e.g., Collectibles:Decorative Collectibles:Hummel, Goebel).

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>30 (21 for China)</MaxLength>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetContextualKeywords</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+							<Context>PrimaryCategory</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>FreeAddedCategory</Context>

+							<Context>SecondaryCategory</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>PrimaryCategory</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>FreeAddedCategory</Context>

+							<Context>SecondaryCategory</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSuggestedCategories</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>CategoryArray</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CategoryParentID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Category ID identifying a category that is an ancestor of

+						the category indicated in CategoryID. For GetCategories, returns the same

+						value as CategoryID if the CategoryLevel is 1.

+						For GetSuggestedCategories, multiple CategoryParentID fields can be returned

+						in sequence, starting with the root category and ending with the category that

+						is the direct parent of the category specified in CategoryID.

+						Use these parent fields and the CategoryID field to build the fully qualified

+						category browse path or "breadcrumbs" (e.g., 58058:3516:3517).

+						For GetPopularKeywords, -1 represents the root category.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSuggestedCategories</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CategoryParentName" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Textual name of the category indicated in CategoryParentID.

+						For GetSuggestedCategories, multiple CategoryParentName fields can be returned

+						in sequence, starting with the root category and ending with the category that

+						is the direct parent of the category specified in CategoryName.

+						Use these parent fields and the CategoryName field to build the fully qualified

+						category browse path or "breadcrumbs" (e.g., Computers &amp; Networking > Technology Books > Certification).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSuggestedCategories</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFinderID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returned from GetCategory2CS calls with compatibility levels lower than 369.

+						Supports listing with Pre-filled Item Information.

+						Specifies the product finder ID associated with this category, if any. Only

+						returns a value when ProductFinderAvailable is true. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<TagStatus>Obsolete</TagStatus>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductSearchPageAvailable" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Returned from GetCategory2CS calls. Supports listing with Pre-filled Item Information.

+						If the category supports single-attribute search, this field returns a value of

+						true. Otherwise this field not returned or returned as false.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFinderAvailable" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Returned from GetCategory2CS calls with compatibility levels lower than 369.

+						Supports listing with Pre-filled Item Information.

+						If the category supports a product finder-based search, this field returns a

+						value of true. Otherwise this field returns null or false. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<TagStatus>Obsolete</TagStatus>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFinderIDs" type="ns:ExtendedProductFinderIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					(out) Returned from GetCategory2CS calls with compatibility level 369 and higher.

+					Supports listing with Pre-filled Item Information.

+					Specifies the buy-side and/or sell-side product finder IDs associated with this category, if any.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharacteristicsSets" type="ns:CharacteristicsSetType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Returned from GetCategory2CS calls.

+						A list of one or more characteristics sets mapped to the category. Use this

+						information when working with Item Specifics (Attributes) and Pre-filled Item

+						Information (Catalogs) functionality. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+							<Context>SiteWideCharacteristicSets</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Expired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) If true, indicates a category that has expired and to which items may not be

+						listed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="IntlAutosFixedCat" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, indicates that the category is a fixed-fee category. Use this

+						information to identify categories are not eligible for eBay Stores Inventory

+						format listings. You cannot list eBay Store Inventory format listings in

+						fixed-fee categories on international sites. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LeafCategory" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, indicates that the category indicated in CategoryID is a leaf category,

+						in which items may be listed (if the category is not also expired or virtual).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Virtual" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, indicates the that category indicated in CategoryID is a

+						virtual category, to which items may not be listed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NumOfItems" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The total quantity of matching items in the category.

+						In the GetSearchResults response, matching categories at the same level

+						(i.e., sibling categories) are sorted by this value. That is, if the request

+						specifies that fewer categories or subcategories should be returned,

+						the ones with the most matching items are returned first.

+						See the Developer's guide for more information.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>CategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>CategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerGuaranteeEligible" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether this category is eligible for Motors Seller Guarantee program.

+						This tag is emitted for eligible categories only on the eBay Motors site.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ORPA" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the category allows or disallows listing with a reserve price,

+						depending on the prevailing site configuration indicated by ReservePriceAllowed.

+						ORPA (override reserve price allowed) indicates when the category is an exception

+						to the site's ReservePriceAllowed policy.&lt;br&gt;&lt;br&gt;

+						If ORPA is true, the category overrides (toggles or reverses) the

+						site's ReservePriceAllowed setting. In other words:&lt;br&gt;

+						- If ReservePriceAllowed is true, reserve price is not allowed in this category.&lt;br&gt;

+						- If ReservePriceAllowed is false, reserve price is allowed in this category.&lt;br&gt;&lt;br&gt;

+						If ORPA is not present (or false), there is no override.

+						That is, the category's setting is the same as the site's ReservePriceAllowed setting.&lt;br&gt;&lt;br&gt;

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ORRA" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the category allows or disallows reducing a listing's reserve price,

+						depending on the prevailing site configuration indicated by ReduceReserveAllowed.

+						ORRA (override reduce reserve allowed) indicates when the category is an exception

+						to the site's ReduceReserveAllowed policy.&lt;br&gt;&lt;br&gt;

+						If ORRA is true, the category overrides (toggles or reverses) the

+						site's ReduceReserveAllowed setting. In other words:&lt;br&gt;

+						- If ReduceReserveAllowed is true, reserve price reduction is not allowed in this category.&lt;br&gt;

+						- If ReduceReserveAllowed is false, reserve price reduction is allowed in this category.&lt;br&gt;&lt;br&gt;

+						If ORRA is not present (false), there is no override.

+						That is, the category's setting is the same as the site's ReduceReserveAllowed setting.&lt;br&gt;&lt;br&gt;

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LSD" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Item.LotSize is not permitted when you list in this category.

+						If true, indicates that lot sizes are disabled in the specified category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategories</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Keywords" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The list of keywords returned by GetPopularKeywords.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPopularKeywords</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharacteristicSetIDsType.xsd #####

+

+-->

+	<xs:complexType name="CharacteristicSetIDsType">

+		<xs:annotation>

+			<xs:documentation>

+(in) A list of one or more characteristic set IDs. In GetProductSearchResults,

+these IDs indicate which characteristic sets to search in. If not specified,

+the search is conducted across all characteristic sets.

+Only applicable when QueryKeywords is specified.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Numeric identifier for a characteristic set.

+						Use GetCategory2CS to determine mappings between categories and

+						characteristic sets that are catalog-enabled.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharacteristicType.xsd #####

+

+-->

+	<xs:complexType name="CharacteristicType">

+		<xs:annotation>

+			<xs:documentation>

+        A salient aspect or feature of an item. Used to describe an item in a

+        standard way so that buyers can find it more easily. An individual,

+        standardized characteristic that is common to all items within the

+        specified characteristics set. Applicable when working with Item

+        Specifics (Attributes) and Pre-filled Item Information (Catalogs)

+				functionality. See the eBay Web Services guide for more information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AttributeID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+         Constant value that identifies the characteristic in a language-independent way.

+						Unique within the characteristic set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchPage</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DateFormat" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Applicable when working with Pre-filled Item Information (Catalogs) functionality.

+            Returned if the characteristic is a Date data type. Specifies the pattern

+            to use when presenting the date to a user. Possible values:

+            Day/Month/Year, Month/Year, Year Only.

+            For example, the Year Only format would indicate that the date

+            should be a value like 1999.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>SortCharacteristics</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisplaySequence" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The suggested order in which the characteristic should be presented

+						to the user in a list. Indicates the relative position of the sort

+						key in the list of characteristics. The characteristic with the

+						lowest display sequence is considered the default sort key in calls

+						to GetProductSearchResults. Aside from that, usage of this display

+						sequence information is optional. For example, in an application

+						with a graphical user interface, a characteristic with a display

+						sequence of 2 could be presented before one with a display sequence

+						of 3 in a drop-down list. If multiple sort characteristics are

+						returned for a characteristic set, compare their display sequence

+						values to determine the lowest available value (usually 0) and the

+						overall sequence.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchPage</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisplayUOM" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Applicable when working with Pre-filled Item Information (Catalogs) functionality.

+					The unit of measure (e.g., Inch) to use when the characteristic is numeric indicates a measurement.

+					Not returned if not applicable.

+					Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>SortCharacteristics</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Label" type="ns:LabelType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Applicable when working with Pre-filled Item Information (Catalogs) functionality.

+            The label to display when presenting the attribute to a user.

+            Not necessarily the same as the attribute's label as defined in the

+						characteristic set (i.e., the label could be overridden by the catalog).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchPage</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SortOrder" type="ns:SortOrderCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Applicable when working with Pre-filled Item Information (Catalogs) functionality.

+						Indicates the order in which eBay's search engine will sort the results if you

+            pass this characteristic as a sort attribute in GetProductSearchResults.

+						You cannot change the sort order of a characteristic when you perform a search.

+						(Of course, you can change the sort order when you present results in your own application.)

+						In GetProductSearchPage, if SortOrder is not returned at all, it means the results will be returned

+						in the order in which they are stored on eBay (which can be useful for

+						international sites that use ideographic characters).

+						Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>SortCharacteristics</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ValueList" type="ns:ValType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            List of one or more valid values for the characteristic.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharacteristicsSearchCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CharacteristicsSearchCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Indicates whether one attribute or multiple attributes can be used 

+as the search criteria when calling GetProductSearchResults. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Single">

+				<xs:annotation>

+					<xs:documentation>

+            (in/out) The search criteria can consist of one attribute.

+            Applications should validate that only one searchable attribute 

+            is selected for the query.

+				      </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Multi">

+				<xs:annotation>

+					<xs:documentation> 

+            (in/out) The search criteria can consist of multiple attributes.

+            One or more searchable attributes can be selected, and users should be informed 

+            that the search engine will apply "AND" logic to the query.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharacteristicsSetType.xsd #####

+

+-->

+	<xs:complexType name="CharacteristicsSetType">

+		<xs:annotation>

+			<xs:documentation>

+      A level in the eBay category hierarchy at which a particular group of

+      items can share a common set of attributes. A set of characteristics

+      that can be used to describe similar kinds of items in a standardized way.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The well-known name of the characteristic set (e.g., "Tickets" or "Books").

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+							<Context>SiteWideCharacteristicSets</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeSetID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+         Numeric value that identifies the characteristic set in a language-independent way.

+         Identifies the characteristic set that is mapped to a catalog-enabled category 

+         associated with the product. Unique across all eBay sites.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+							<Context>SiteWideCharacteristicSets</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchPage</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductSellingPages</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeSetVersion" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Version of the characteristics set. Not to be confused with AttributeSystemVersion,

+            which can be used to retrieve changes to attribute meta-data.

+            In item-listing requests, if you specify the version of the attribute set

+            that you have stored locally, eBay will compare it to the current version on

+            the site and return a warning if the versions do not match.

+            If an error occurs due to invalid attribute data, this warning can be useful

+            to help determine if you might be sending outdated data.

+            The current value of version is not necessarily "greater than" the

+            previous value.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+							<Context>SiteWideCharacteristicSets</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Characteristics" type="ns:CharacteristicType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            A salient aspect or feature of an item. Used to describe an item

+            in a standard way so that buyers can find it more easily.

+            An individual, standardized characteristic that is common to all

+            items within the specified characteristic set.

+            In the context of GetProductSearchPage, each characteristic identifies a

+            single searchable attribute. A searchable attribute is a product aspect or feature

+            that can be used as a criterion in a search for catalog content.

+            For example, "Title" might be a criterion for searching the book catalog

+            for Pre-filled Item Information related to books.

+            See the eBay Web Services guide for more information.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchPage</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharityAffiliationType.xsd #####

+

+-->

+	<xs:complexType name="CharityAffiliationType">

+		<xs:annotation>

+			<xs:documentation>

+				 Defines the affiliation status for a nonprofit charity organization registered with the dedicated eBay Giving Works provider.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="id" type="xs:string"/>

+		<xs:attribute name="type" type="ns:CharityAffiliationTypeCodeType"/>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharityAffiliationTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CharityAffiliationTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			    CharityAffiliationTypeCodeType - Type declaration to be used by other schema.

+			    Indicates the affiliation status for nonprofit charity organizations registered with the dedicated eBay Giving Works provider.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Community">

+				<xs:annotation>

+					<xs:documentation>

+					  (out)	The specified nonprofit charity organization has a community affiliation.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Direct">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) The specified nonprofit charity organization has direct affiliation.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Remove">

+				<xs:annotation>

+					<xs:documentation>

+					  (out)	The specified nonprofit charity organization is no longer affiliated.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						 (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharityAffiliationsType.xsd #####

+

+-->

+	<xs:complexType name="CharityAffiliationsType">

+		<xs:annotation>

+			<xs:documentation>

+				Lists the nonprofit charity organization affiliations for a specified user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CharityID" type="ns:CharityIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the affiliation status for nonprofit charity organizations registered with the dedicated eBay Giving Works provider.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharityIDType.xsd #####

+

+-->

+	<xs:complexType name="CharityIDType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines the affiliation status for a nonprofit charity organization registered with the

+				dedicated eBay Giving Works provider.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:simpleContent>

+			<xs:extension base="xs:string">

+				<xs:attribute name="type" type="ns:CharityAffiliationTypeCodeType" use="required"/>

+			</xs:extension>

+		</xs:simpleContent>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharityInfoType.xsd #####

+

+-->

+	<xs:complexType name="CharityInfoType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains information about a nonprofit charity organization.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A name assigned to a specified nonprofit organization.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>150</MaxLength>

+						<CallInfo>

+							<CallName>GetCharities</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Mission" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The stated mission of the nonprofit charity organization. This

+						mission is displayed in the Giving Works item listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>150</MaxLength>

+						<CallInfo>

+							<CallName>GetCharities</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LogoURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A URL with the location of the nonprofit charity organization's logo image.

+						Logo must be JPG  or GIF format, with a size maximum of 50 KB. This image is

+						displayed in the Giving Works item listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCharities</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:CharityStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The status of the nonprofit charity organization.

+					</xs:documentation>

+					<!-- N/A: GetCharities -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchableString" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Keyword string to be used for search purposes.

+					</xs:documentation>

+					<!-- N/A: GetCharities -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharityRegion" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Region that the nonprofit charity organization is associated with.

+						A specific nonprofit charity organization may be associated with only one

+						region. Meaning of input values differs depending on the site. See GetCharities

+						in the API Developer's Guide for the meaning of each input/output value. CharityRegion

+						input value must be valid for that SiteID.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCharities</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharityDomain" type="xs:int" minOccurs="0" maxOccurs="3">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Domain (mission area) that a nonprofit charity organization belongs to.

+						Nonprofit charity organizations may belong to multiple mission areas. Meaning

+						of input values differs depending on the site. See GetCharities in the

+						API Developer's Guide for the meaning of each input/output value. CharityDomain

+						input value must be valid for that SiteID.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCharities</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharityID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A unique identification number assigned by eBay to registered

+						nonprofit charity organizations. This number is returned in

+						GetCharitiesResponse as an id attribute in the parent Charity node.

+					</xs:documentation>

+					<!-- N/A: GetCharities -->

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="id" type="xs:string">

+			<xs:annotation>

+				<xs:documentation>

+					(out) A unique identification number assigned by eBay to registered

+					nonprofit charity organizations.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCharities</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharitySellerStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CharitySellerStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			    CharitySellerStatusCodeType - Type declaration to be used by other schema.

+			    Indicates the status of the seller's charity seller account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Suspended">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out) The seller's charity seller account is suspended.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Registered">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out) The seller is a registered charity seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Closed">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out) The seller is no longer a registered charity seller. The account with the eBay Giving Works provider is closed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCardExpired">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out)	The credit card associated with a seller's charity seller account has expired.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TokenExpired">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out)	The token associated with a seller's charity seller account has expired.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCardAboutToExpire">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out)	The credit card associated with a seller's charity seller account will expire in 15 (or fewer) days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RegisteredNoCreditCard">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out)	The seller is a registered charity seller, but has no credit card associated with the charity seller account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotRegisteredLostDirectSellerStatus">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out)	The seller is no longer a registered charity seller and has lost direct seller status.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DirectDebitRejected">

+				<xs:annotation>

+					<xs:documentation>

+					  (in)	The seller's direct debit card was rejected.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharitySellerType.xsd #####

+

+-->

+	<xs:complexType name="CharitySellerType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains information about one seller with a eBay Giving Works provider 

+				charity seller account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CharitySellerStatus" type="ns:CharitySellerStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the status of the seller's charity seller account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharityAffiliation" type="ns:CharityAffiliationType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						 Indicates the affiliation status for nonprofit charity organizations registered with the dedicated eBay Giving Works provider.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharityStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CharityStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			    CharityStatusCodeType - Type declaration to be used by other schema.

+			    Indicates the nonprofit status of the nonprofit charity organization registered with the dedicated eBay Giving Works provider.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Valid">

+				<xs:annotation>

+					<xs:documentation>

+					  (out)	The specified nonprofit charity organization is a valid nonprofit charity organization according to the requirements of the dedicated eBay Giving Works provider.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NoLongerValid">

+				<xs:annotation>

+					<xs:documentation>

+					  (out)	The specified nonprofit charity organization is no longer a valid nonprofit charity organization according to the requirements of the dedicated eBay Giving Works provider.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CharityType.xsd #####

+

+-->

+	<xs:complexType name="CharityType">

+		<xs:annotation>

+			<xs:documentation>

+				Identifies a Giving Works listing and benefiting nonprofit charity organization.

+				Currently supported through the US and eBay Motors sites only. The Ad Format and

+				Mature Audiences categories are not supported.

+				Not applicable for US eBay Motors, international, Real Estate, and Tickets.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CharityName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The name of the benefiting nonprofit charity organization selected by the

+						charity seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>150</MaxLength>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharityNumber" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A unique identification number assigned to a nonprofit charity organization by the dedicated provider of

+						eBay Giving Works. Being superseded by CharityID. Max 10 digits.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<!-- N/A to ReviseItem -->

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DonationPercent" type="xs:float" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) The percentage of the purchase price that the seller donates to the selected nonprofit organization. This percentage is displayed in the Giving Works item listing. Possible values: 1.0 to 100.0. Minimum donation percentages may be required for Giving Works listings, see http://pages.ebay.com/help/sell/selling-nonprofit.html for details. DonationPercent is required input when listing Giving Works items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharityID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A unique identification number assigned by eBay to

+						registered nonprofit charity organizations. Required input when listing Giving Works items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<!-- N/A to ReviseItem -->

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Mission" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The stated mission of the nonprofit charity organization.

+						This mission is displayed in the Giving Works item listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>512</MaxLength>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LogoURL" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The URL of the nonprofit charity organization. This URL is

+						displayed in the Giving Works item listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:CharityStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The status of the nonprofit charity organization.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharityListing" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) If true, indicates that the seller has chosen to use eBay

+						Giving Works to donate a percentage of the item purchase price

+						to a selected nonprofit organization.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CheckoutMethodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CheckoutMethodCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The checkout method used by the buyer at external site.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+						Other Checkout Method was used.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ThirdPartyCheckout">

+				<xs:annotation>

+					<xs:documentation>

+						Checkout is handled by a third party.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CheckoutStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CheckoutStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           CheckoutStatusCodeType - Type declaration to be used by other schema.

+           Indicates the current state of the checkout process for a transaction.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="CheckoutComplete">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Checkout complete. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CheckoutIncomplete">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Checkout incomplete--no details specified.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerRequestsTotal">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Buyer requests total from seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerResponded">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Seller responded to buyer's request.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CheckoutStatusType.xsd #####

+

+-->

+	<xs:complexType name="CheckoutStatusType">

+		<xs:sequence>

+			<xs:element name="eBayPaymentStatus" type="ns:PaymentStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the success or failure of a buyer's online payment.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LastModifiedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The time the status was last modified.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentMethod" type="ns:BuyerPaymentMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The payment method the buyer uses to purchase the

+						item.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:CompleteStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The status of the order.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CombinedPaymentOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CombinedPaymentOptionCodeType">

+	<xs:annotation>

+		<xs:documentation>

+			Combined Purchase Options

+		</xs:documentation>

+	</xs:annotation>

+	<xs:restriction base="xs:token">

+		<xs:enumeration value="NoCombinedPayment">

+			<xs:annotation>

+				<xs:documentation>

+					No Combined Purchase

+				</xs:documentation>

+			</xs:annotation>

+		</xs:enumeration>

+		<xs:enumeration value="DiscountSpecified">

+			<xs:annotation>

+				<xs:documentation>

+					Yes Specify Discount Now

+				</xs:documentation>

+			</xs:annotation>

+		</xs:enumeration>

+		<xs:enumeration value="SpecifyDiscountLater">

+			<xs:annotation>

+				<xs:documentation>

+					Yes Specify Discount Later

+				</xs:documentation>

+			</xs:annotation>

+		</xs:enumeration>

+		<xs:enumeration value="CustomCode">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for internal or future use

+				</xs:documentation>

+			</xs:annotation>

+		</xs:enumeration>

+	</xs:restriction>

+</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CombinedPaymentPeriodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CombinedPaymentPeriodCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Combined Purchase Days

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Days_3">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 3 Days

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_5">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 5 Days

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_7">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 7 Days

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_14">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 14 Days

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_30">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 30 Days

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CombinedPaymentPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="CombinedPaymentPreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+			Defines a seller's preferences for allowing buyers to combine more than one

+			purchase into one payment.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CalculatedShippingPreferences" type="ns:CalculatedShippingPreferencesType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains a seller's preferences for having shipping costs calculated

+						by eBay.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CombinedPaymentOption" type="ns:CombinedPaymentOptionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether or not a seller wants to allow buyers 

+						to combine purchases in order to receive a discount.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CombinedPaymentPeriod" type="ns:CombinedPaymentPeriodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the period in which the user will allow buyers to combine purchases in

+						order to receive a discount.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FlatShippingPreferences" type="ns:FlatShippingPreferencesType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies a seller's preferences for flat-rate shipping.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CommentTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CommentTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				CommentTypeCodeType - Type declaration to be used by other schema.

+				These are the possible codes to specify the types of feedback/comment.

+				Additional information about feedback is available in the online Help of the eBay site.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Positive">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Positive feedback. Increases total feedback score.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Neutral">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Neutral feedback. No effect on total feedback score.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Negative">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Negative feedback. Decreases total feedback score.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Withdrawn">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Withdrawn feedback. Removes the effect of the original 

+								feedback on total feedback score. Comments from withdrawn feedback 

+								are still visible.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IndependentlyWithdrawn">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Applies to the eBay Motors site only. Feedback is withdrawn based on 

+								the decision of a third party.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CompleteStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CompleteStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Indicates whether the transaction process is complete, incomplete, or pending.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Incomplete">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Transaction is incomplete.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Complete">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Transaction is complete.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Pending">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Transaction is pending.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ConditionSelectionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ConditionSelectionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Filter that retrieves only items with the specified item conditon.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="All">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Retrieve all items that match the query, regardless of condition.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="New">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Only retrieve items that are listed as new (or the equivalent).

+						That is, do not retrieve used or refurbished items (or the equivalent).

+						New is the default setting. (Items that waive the Item Condition requirement

+						are also returned with this setting. If necessary, you can use GetCategoryFeatures to determine 

+						which categories waive the Item Condition requirement.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                			(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ContextSearchAssetType.xsd #####

+

+-->

+	<xs:complexType name="ContextSearchAssetType">

+		<xs:annotation>

+			<xs:documentation>

+				Score and rank for a keyword identified for a web page.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Keyword" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The keyword.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>64</MaxLength>

+						<CallInfo>

+							<CallName>GetContextualKeywords</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Category" type="ns:CategoryType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The eBay category in which the keyword is used.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetContextualKeywords</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Score" type="xs:float" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The relevance of this keyword and category to the web page.

+					</xs:documentation>

+					<xs:appinfo>

+						<Min>0</Min>

+						<Max>1</Max>

+						<CallInfo>

+							<CallName>GetContextualKeywords</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Ranking" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The ranking of this keyword and category relative to

+						other keywords and categories (when scores are sorted).

+					</xs:documentation>

+					<xs:appinfo>

+						<Min>1</Min>

+						<Max>2147483647</Max>

+						<CallInfo>

+							<CallName>GetContextualKeywords</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CountryCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CountryCodeType">

+		<xs:annotation>

+			<xs:documentation>

+CountryCodeType - Type declaration to be used by other schema.

+This code list module defines the enumerated types of standard

+2-letter ISO 3166 country codes. This code list also contains

+some additional country codes not defined in the ISO 3166

+country code set, which appear at the end of this code list and

+are noted as non-ISO. Country codes may be used as input and as

+output. For more information on ISO 3166 country codes, see the ISO site:

+http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AF"/>

+			<xs:enumeration value="AL"/>

+			<xs:enumeration value="DZ"/>

+			<xs:enumeration value="AS"/>

+			<xs:enumeration value="AD"/>

+			<xs:enumeration value="AO"/>

+			<xs:enumeration value="AI"/>

+			<xs:enumeration value="AQ"/>

+			<xs:enumeration value="AG"/>

+			<xs:enumeration value="AR"/>

+			<xs:enumeration value="AM"/>

+			<xs:enumeration value="AW"/>

+			<xs:enumeration value="AU"/>

+			<xs:enumeration value="AT"/>

+			<xs:enumeration value="AZ"/>

+			<xs:enumeration value="BS"/>

+			<xs:enumeration value="BH"/>

+			<xs:enumeration value="BD"/>

+			<xs:enumeration value="BB"/>

+			<xs:enumeration value="BY"/>

+			<xs:enumeration value="BE"/>

+			<xs:enumeration value="BZ"/>

+			<xs:enumeration value="BJ"/>

+			<xs:enumeration value="BM"/>

+			<xs:enumeration value="BT"/>

+			<xs:enumeration value="BO"/>

+			<xs:enumeration value="BA"/>

+			<xs:enumeration value="BW"/>

+			<xs:enumeration value="BV"/>

+			<xs:enumeration value="BR"/>

+			<xs:enumeration value="IO"/>

+			<xs:enumeration value="BN"/>

+			<xs:enumeration value="BG"/>

+			<xs:enumeration value="BF"/>

+			<xs:enumeration value="BI"/>

+			<xs:enumeration value="KH"/>

+			<xs:enumeration value="CM"/>

+			<xs:enumeration value="CA"/>

+			<xs:enumeration value="CV"/>

+			<xs:enumeration value="KY"/>

+			<xs:enumeration value="CF"/>

+			<xs:enumeration value="TD"/>

+			<xs:enumeration value="CL"/>

+			<xs:enumeration value="CN"/>

+			<xs:enumeration value="CX"/>

+			<xs:enumeration value="CC"/>

+			<xs:enumeration value="CO"/>

+			<xs:enumeration value="KM"/>

+			<xs:enumeration value="CG"/>

+			<xs:enumeration value="CD"/>

+			<xs:enumeration value="CK"/>

+			<xs:enumeration value="CR"/>

+			<xs:enumeration value="CI"/>

+			<xs:enumeration value="HR"/>

+			<xs:enumeration value="CU"/>

+			<xs:enumeration value="CY"/>

+			<xs:enumeration value="CZ"/>

+			<xs:enumeration value="DK"/>

+			<xs:enumeration value="DJ"/>

+			<xs:enumeration value="DM"/>

+			<xs:enumeration value="DO"/>

+			<xs:enumeration value="TP"/>

+			<xs:enumeration value="EC"/>

+			<xs:enumeration value="EG"/>

+			<xs:enumeration value="SV"/>

+			<xs:enumeration value="GQ"/>

+			<xs:enumeration value="ER"/>

+			<xs:enumeration value="EE"/>

+			<xs:enumeration value="ET"/>

+			<xs:enumeration value="FK"/>

+			<xs:enumeration value="FO"/>

+			<xs:enumeration value="FJ"/>

+			<xs:enumeration value="FI"/>

+			<xs:enumeration value="FR"/>

+			<xs:enumeration value="GF"/>

+			<xs:enumeration value="PF"/>

+			<xs:enumeration value="TF"/>

+			<xs:enumeration value="GA"/>

+			<xs:enumeration value="GM"/>

+			<xs:enumeration value="GE"/>

+			<xs:enumeration value="DE"/>

+			<xs:enumeration value="GH"/>

+			<xs:enumeration value="GI"/>

+			<xs:enumeration value="GR"/>

+			<xs:enumeration value="GL"/>

+			<xs:enumeration value="GD"/>

+			<xs:enumeration value="GP"/>

+			<xs:enumeration value="GU"/>

+			<xs:enumeration value="GT"/>

+			<xs:enumeration value="GN"/>

+			<xs:enumeration value="GW"/>

+			<xs:enumeration value="GY"/>

+			<xs:enumeration value="HT"/>

+			<xs:enumeration value="HM"/>

+			<xs:enumeration value="VA"/>

+			<xs:enumeration value="HN"/>

+			<xs:enumeration value="HK"/>

+			<xs:enumeration value="HU"/>

+			<xs:enumeration value="IS"/>

+			<xs:enumeration value="IN"/>

+			<xs:enumeration value="ID"/>

+			<xs:enumeration value="IR"/>

+			<xs:enumeration value="IQ"/>

+			<xs:enumeration value="IE"/>

+			<xs:enumeration value="IL"/>

+			<xs:enumeration value="IT"/>

+			<xs:enumeration value="JM"/>

+			<xs:enumeration value="JP"/>

+			<xs:enumeration value="JO"/>

+			<xs:enumeration value="KZ"/>

+			<xs:enumeration value="KE"/>

+			<xs:enumeration value="KI"/>

+			<xs:enumeration value="KP"/>

+			<xs:enumeration value="KR"/>

+			<xs:enumeration value="KW"/>

+			<xs:enumeration value="KG"/>

+			<xs:enumeration value="LA"/>

+			<xs:enumeration value="LV"/>

+			<xs:enumeration value="LB"/>

+			<xs:enumeration value="LS"/>

+			<xs:enumeration value="LR"/>

+			<xs:enumeration value="LY"/>

+			<xs:enumeration value="LI"/>

+			<xs:enumeration value="LT"/>

+			<xs:enumeration value="LU"/>

+			<xs:enumeration value="MO"/>

+			<xs:enumeration value="MK"/>

+			<xs:enumeration value="MG"/>

+			<xs:enumeration value="MW"/>

+			<xs:enumeration value="MY"/>

+			<xs:enumeration value="MV"/>

+			<xs:enumeration value="ML"/>

+			<xs:enumeration value="MT"/>

+			<xs:enumeration value="MH"/>

+			<xs:enumeration value="MQ"/>

+			<xs:enumeration value="MR"/>

+			<xs:enumeration value="MU"/>

+			<xs:enumeration value="YT"/>

+			<xs:enumeration value="MX"/>

+			<xs:enumeration value="FM"/>

+			<xs:enumeration value="MD"/>

+			<xs:enumeration value="MC"/>

+			<xs:enumeration value="MN"/>

+			<xs:enumeration value="MS"/>

+			<xs:enumeration value="MA"/>

+			<xs:enumeration value="MZ"/>

+			<xs:enumeration value="MM"/>

+			<xs:enumeration value="NA"/>

+			<xs:enumeration value="NR"/>

+			<xs:enumeration value="NP"/>

+			<xs:enumeration value="NL"/>

+			<xs:enumeration value="AN"/>

+			<xs:enumeration value="NC"/>

+			<xs:enumeration value="NZ"/>

+			<xs:enumeration value="NI"/>

+			<xs:enumeration value="NE"/>

+			<xs:enumeration value="NG"/>

+			<xs:enumeration value="NU"/>

+			<xs:enumeration value="NF"/>

+			<xs:enumeration value="MP"/>

+			<xs:enumeration value="NO"/>

+			<xs:enumeration value="OM"/>

+			<xs:enumeration value="PK"/>

+			<xs:enumeration value="PW"/>

+			<xs:enumeration value="PS"/>

+			<xs:enumeration value="PA"/>

+			<xs:enumeration value="PG"/>

+			<xs:enumeration value="PY"/>

+			<xs:enumeration value="PE"/>

+			<xs:enumeration value="PH"/>

+			<xs:enumeration value="PN"/>

+			<xs:enumeration value="PL"/>

+			<xs:enumeration value="PT"/>

+			<xs:enumeration value="PR"/>

+			<xs:enumeration value="QA"/>

+			<xs:enumeration value="RE"/>

+			<xs:enumeration value="RO"/>

+			<xs:enumeration value="RU"/>

+			<xs:enumeration value="RW"/>

+			<xs:enumeration value="SH"/>

+			<xs:enumeration value="KN"/>

+			<xs:enumeration value="LC"/>

+			<xs:enumeration value="PM"/>

+			<xs:enumeration value="VC"/>

+			<xs:enumeration value="WS"/>

+			<xs:enumeration value="SM"/>

+			<xs:enumeration value="ST"/>

+			<xs:enumeration value="SA"/>

+			<xs:enumeration value="SN"/>

+			<xs:enumeration value="SC"/>

+			<xs:enumeration value="SL"/>

+			<xs:enumeration value="SG"/>

+			<xs:enumeration value="SK"/>

+			<xs:enumeration value="SI"/>

+			<xs:enumeration value="SB"/>

+			<xs:enumeration value="SO"/>

+			<xs:enumeration value="ZA"/>

+			<xs:enumeration value="GS"/>

+			<xs:enumeration value="ES"/>

+			<xs:enumeration value="LK"/>

+			<xs:enumeration value="SD"/>

+			<xs:enumeration value="SR"/>

+			<xs:enumeration value="SJ"/>

+			<xs:enumeration value="SZ"/>

+			<xs:enumeration value="SE"/>

+			<xs:enumeration value="CH"/>

+			<xs:enumeration value="SY"/>

+			<xs:enumeration value="TW"/>

+			<xs:enumeration value="TJ"/>

+			<xs:enumeration value="TZ"/>

+			<xs:enumeration value="TH"/>

+			<xs:enumeration value="TG"/>

+			<xs:enumeration value="TK"/>

+			<xs:enumeration value="TO"/>

+			<xs:enumeration value="TT"/>

+			<xs:enumeration value="TN"/>

+			<xs:enumeration value="TR"/>

+			<xs:enumeration value="TM"/>

+			<xs:enumeration value="TC"/>

+			<xs:enumeration value="TV"/>

+			<xs:enumeration value="UG"/>

+			<xs:enumeration value="UA"/>

+			<xs:enumeration value="AE"/>

+			<xs:enumeration value="GB"/>

+			<xs:enumeration value="US"/>

+			<xs:enumeration value="UM"/>

+			<xs:enumeration value="UY"/>

+			<xs:enumeration value="UZ"/>

+			<xs:enumeration value="VU"/>

+			<xs:enumeration value="VE"/>

+			<xs:enumeration value="VN"/>

+			<xs:enumeration value="VG"/>

+			<xs:enumeration value="VI"/>

+			<xs:enumeration value="WF"/>

+			<xs:enumeration value="EH"/>

+			<xs:enumeration value="YE"/>

+			<xs:enumeration value="YU"/>

+			<xs:enumeration value="ZM"/>

+			<xs:enumeration value="ZW"/>

+			<xs:enumeration value="AA">

+				<xs:annotation>

+					<xs:documentation>

+		                NOTE: APO/FPO was defined in eBay list previously 

+		                but they are not defined in ISO 3166. This country 

+		                will remain on eBay country code list for backward 

+		                compatibility.

+		             </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QM">

+				<xs:annotation>

+					<xs:documentation>

+		                NOTE: Guernsey was defined in eBay list previously 

+		                but they are not defined in ISO 3166. This country 

+		                will remain on eBay country list for backward 

+		                compatibility.

+		             </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QN">

+				<xs:annotation>

+					<xs:documentation>

+		                 NOTE: Jan Mayen was defined in eBay list previously 

+		                 but they are not defined in ISO 3166. This country 

+		                 will remain on eBay country list for backward 

+		                 compatibility.

+		             </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QO">

+				<xs:annotation>

+					<xs:documentation>

+		                 NOTE: Jersey was defined in eBay list previously 

+		                 but they are not defined in ISO 3166. This country 

+		                 will remain on eBay country list for backward 

+		                 compatibility.

+		             </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QP">

+				<xs:annotation>

+					<xs:documentation>

+		                 NOTE: Tahiti was defined in eBay list previously 

+		                 but they are not defined in ISO 3166. This country 

+		                 will remain on eBay country list for backward 

+		                 compatibility.

+		             </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CountryDetailsType.xsd #####

+

+-->

+	<xs:complexType name="CountryDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a specific country.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Country" type="ns:CountryCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Two-letter country abbreviation.&lt;br&gt;&lt;br&gt;

+						Related fields:&lt;br&gt;

+						Item.Country in AddItem&lt;br&gt;

+						SearchLocationFilter.CountryCode in GetSearchResults

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Full country name for display purposes. May be similar to (but not necessarily identical to)

+						CountryName in addresses (e.g., User.RegistrationAddress.CountryName in GetUser).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CrossPromotionPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="CrossPromotionPreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+			  Contains preferences describing how items similar to the one the user is

+			  presently viewing are promoted.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CrossPromotionEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(For eBay store owners only)

+						Specifies whether cross-promotions are enabled for the seller's listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CrossSellItemFormatSortFilter" type="ns:ItemFormatSortFilterCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(For eBay store owners only) Specifies which items should be shown

+						in cross-sell promotions (such as Buy It Now or Store Inventory items) and 

+						in which sequence.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CrossSellGallerySortFilter" type="ns:GallerySortFilterCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(For eBay store owners only) Specifies whether to display only items with

+						gallery images and whether they should precede other items in cross-sell

+						promotions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CrossSellItemSortFilter" type="ns:ItemSortFilterCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(For eBay store owners only) Specifies how to sort items displayed in 

+						a cross-sell promotion.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UpSellItemFormatSortFilter" type="ns:ItemFormatSortFilterCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(For eBay store owners only) Specifies which items (such as Buy It Now or

+						Store Inventory items) should be shown in upsell promotions and in which

+						sequence.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UpSellGallerySortFilter" type="ns:GallerySortFilterCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(For eBay store owners only) Specifies whether to display only items with

+						gallery images in upsell promotions and whether they should precede other items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UpSellItemSortFilter" type="ns:ItemSortFilterCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(For eBay store owners only) Specifies how to sort items used in an upsell promotion.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CrossPromotionsType.xsd #####

+

+-->

+	<xs:complexType name="CrossPromotionsType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Contains one or more items cross-promoted with

+				the display or purchase of a referring item.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Unique item ID for the referring item.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PrimaryScheme" type="ns:PromotionSchemeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The primary cross-promotion rule scheme that

+						was applied to return the cross-promoted item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotionMethod" type="ns:PromotionMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The type of promotion, CrossSell or UpSell.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The eBay user ID of the seller offering the

+						cross-promoted item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingDiscount" type="xs:boolean">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Whether a shipping discount is offered by the seller

+						when the cross-promoted item is purchased.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerKey" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The key of the seller who is promoting the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StoreName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The store name of the seller offering the cross-promoted

+					item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotedItem" type="ns:PromotedItemType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Contains one cross-promoted item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/CurrencyCodeList.xsd #####

+

+-->

+	<xs:simpleType name="CurrencyCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				This code list module defines the enumerated types of standard

+				3-letter ISO 4217 currency codes. Currency codes can be used

+				as input or output (in/out); however, only certain currency

+				codes are currently valid for use on eBay. The valid codes are

+				documented below with the notation "(in/out)". Other codes in

+				this list are for future use.

+				A reference: http://www.xe.com/iso4217.htm

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AFA"/>

+			<xs:enumeration value="ALL"/>

+			<xs:enumeration value="DZD"/>

+			<xs:enumeration value="ADP"/>

+			<xs:enumeration value="AOA"/>

+			<xs:enumeration value="ARS"/>

+			<xs:enumeration value="AMD"/>

+			<xs:enumeration value="AWG"/>

+			<xs:enumeration value="AZM"/>

+			<xs:enumeration value="BSD"/>

+			<xs:enumeration value="BHD"/>

+			<xs:enumeration value="BDT"/>

+			<xs:enumeration value="BBD"/>

+			<xs:enumeration value="BYR"/>

+			<xs:enumeration value="BZD"/>

+			<xs:enumeration value="BMD"/>

+			<xs:enumeration value="BTN"/>

+			<xs:enumeration value="INR">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Indian Rupee. 

+					For eBay, you can only specify this currency for listings you submit to the

+					India site (site ID 203).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BOV"/>

+			<xs:enumeration value="BOB"/>

+			<xs:enumeration value="BAM"/>

+			<xs:enumeration value="BWP"/>

+			<xs:enumeration value="BRL"/>

+			<xs:enumeration value="BND"/>

+			<xs:enumeration value="BGL"/>

+			<xs:enumeration value="BGN"/>

+			<xs:enumeration value="BIF"/>

+			<xs:enumeration value="KHR"/>

+			<xs:enumeration value="CAD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canadian Dollar. 

+						For eBay, you can only specify this currency for listings you submit to the 

+						Canada site (site ID 2)

+						(Items listed on the Canada site can also specify USD.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CVE"/>

+			<xs:enumeration value="KYD"/>

+			<xs:enumeration value="XAF"/>

+			<xs:enumeration value="CLF"/>

+			<xs:enumeration value="CLP"/>

+			<xs:enumeration value="CNY">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Chinese Yuan Renminbi.

+            For eBay, you can only specify this currency for listings you submit to the

+						China site (site ID 223).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="COP"/>

+			<xs:enumeration value="KMF"/>

+			<xs:enumeration value="CDF"/>

+			<xs:enumeration value="CRC"/>

+			<xs:enumeration value="HRK"/>

+			<xs:enumeration value="CUP"/>

+			<xs:enumeration value="CYP"/>

+			<xs:enumeration value="CZK"/>

+			<xs:enumeration value="DKK"/>

+			<xs:enumeration value="DJF"/>

+			<xs:enumeration value="DOP"/>

+			<xs:enumeration value="TPE"/>

+			<xs:enumeration value="ECV"/>

+			<xs:enumeration value="ECS"/>

+			<xs:enumeration value="EGP"/>

+			<xs:enumeration value="SVC"/>

+			<xs:enumeration value="ERN"/>

+			<xs:enumeration value="EEK"/>

+			<xs:enumeration value="ETB"/>

+			<xs:enumeration value="FKP"/>

+			<xs:enumeration value="FJD"/>

+			<xs:enumeration value="GMD"/>

+			<xs:enumeration value="GEL"/>

+			<xs:enumeration value="GHC"/>

+			<xs:enumeration value="GIP"/>

+			<xs:enumeration value="GTQ"/>

+			<xs:enumeration value="GNF"/>

+			<xs:enumeration value="GWP"/>

+			<xs:enumeration value="GYD"/>

+			<xs:enumeration value="HTG"/>

+			<xs:enumeration value="HNL"/>

+			<xs:enumeration value="HKD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Hong Kong Dollar. 

+						For eBay, you can only specify this currency for listings you submit to the

+						Hong Kong site (site ID 201).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HUF"/>

+			<xs:enumeration value="ISK"/>

+			<xs:enumeration value="IDR"/>

+			<xs:enumeration value="IRR"/>

+			<xs:enumeration value="IQD"/>

+			<xs:enumeration value="ILS"/>

+			<xs:enumeration value="JMD"/>

+			<xs:enumeration value="JPY"/>

+			<xs:enumeration value="JOD"/>

+			<xs:enumeration value="KZT"/>

+			<xs:enumeration value="KES"/>

+			<xs:enumeration value="AUD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Australian Dollar. 

+						For eBay, you can only specify this currency for listings you submit to the 

+						Australia site (site ID 15).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="KPW"/>

+			<xs:enumeration value="KRW"/>

+			<xs:enumeration value="KWD"/>

+			<xs:enumeration value="KGS"/>

+			<xs:enumeration value="LAK"/>

+			<xs:enumeration value="LVL"/>

+			<xs:enumeration value="LBP"/>

+			<xs:enumeration value="LSL"/>

+			<xs:enumeration value="LRD"/>

+			<xs:enumeration value="LYD"/>

+			<xs:enumeration value="CHF">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Swiss Franc. 

+						For eBay, you can only specify this currency for listings you submit to the

+						Switzerland site (site ID 193).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LTL"/>

+			<xs:enumeration value="MOP"/>

+			<xs:enumeration value="MKD"/>

+			<xs:enumeration value="MGF"/>

+			<xs:enumeration value="MWK"/>

+			<xs:enumeration value="MYR">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Malaysian Ringgit. 

+						For eBay, you can only specify this currency for listings you submit to the

+						Malaysia site (site ID 207).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MVR"/>

+			<xs:enumeration value="MTL"/>

+			<xs:enumeration value="EUR">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Euro. 

+						For eBay, you can only specify this currency for listings you submit to these sites:

+						Austria (site 16), Belgium_French (site 23), 

+						France (site 71), Germany (site 77), Italy (site 101), Belgium_Dutch (site 123),

+						Netherlands (site 146), Spain (site 186), Ireland (site 205).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MRO"/>

+			<xs:enumeration value="MUR"/>

+			<xs:enumeration value="MXN"/>

+			<xs:enumeration value="MXV"/>

+			<xs:enumeration value="MDL"/>

+			<xs:enumeration value="MNT"/>

+			<xs:enumeration value="XCD"/>

+			<xs:enumeration value="MZM"/>

+			<xs:enumeration value="MMK"/>

+			<xs:enumeration value="ZAR"/>

+			<xs:enumeration value="NAD"/>

+			<xs:enumeration value="NPR"/>

+			<xs:enumeration value="ANG"/>

+			<xs:enumeration value="XPF"/>

+			<xs:enumeration value="NZD"/>

+			<xs:enumeration value="NIO"/>

+			<xs:enumeration value="NGN"/>

+			<xs:enumeration value="NOK"/>

+			<xs:enumeration value="OMR"/>

+			<xs:enumeration value="PKR"/>

+			<xs:enumeration value="PAB"/>

+			<xs:enumeration value="PGK"/>

+			<xs:enumeration value="PYG"/>

+			<xs:enumeration value="PEN"/>

+			<xs:enumeration value="PHP">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Philippines Peso. 

+						For eBay, you can only specify this currency for listings you submit to the

+						Philippines site (site ID 211).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PLN">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Poland, Zloty. 

+						For eBay, you can only specify this currency for listings you submit to the

+						Poland site (site ID 212).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) US Dollar. 

+						For eBay, you can only specify this currency for listings you submit to the 

+						US (site ID 0), eBayMotors (site 100), and Canada (site 2) sites.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QAR"/>

+			<xs:enumeration value="ROL"/>

+			<xs:enumeration value="RUB"/>

+			<xs:enumeration value="RUR"/>

+			<xs:enumeration value="RWF"/>

+			<xs:enumeration value="SHP"/>

+			<xs:enumeration value="WST"/>

+			<xs:enumeration value="STD"/>

+			<xs:enumeration value="SAR"/>

+			<xs:enumeration value="SCR"/>

+			<xs:enumeration value="SLL"/>

+			<xs:enumeration value="SGD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Singapore Dollar. 

+						For eBay, you can only specify this currency for listings you submit to the

+						Singapore site (site 216).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SKK"/>

+			<xs:enumeration value="SIT"/>

+			<xs:enumeration value="SBD"/>

+			<xs:enumeration value="SOS"/>

+			<xs:enumeration value="LKR"/>

+			<xs:enumeration value="SDD"/>

+			<xs:enumeration value="SRG"/>

+			<xs:enumeration value="SZL"/>

+			<xs:enumeration value="SEK">

+				<xs:annotation>

+					<xs:documentation>

+						 (in/out) Swedish Krona. 

+						 For eBay, you can only specify this currency for listings you submit to the

+						 Sweden site (site 218).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SYP"/>

+			<xs:enumeration value="TWD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) New Taiwan Dollar. 

+						For eBay, you can only specify this currency for listings you submit to the

+						Taiwan site (site 196).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TJS"/>

+			<xs:enumeration value="TZS"/>

+			<xs:enumeration value="THB"/>

+			<xs:enumeration value="XOF"/>

+			<xs:enumeration value="TOP"/>

+			<xs:enumeration value="TTD"/>

+			<xs:enumeration value="TND"/>

+			<xs:enumeration value="TRL"/>

+			<xs:enumeration value="TMM"/>

+			<xs:enumeration value="UGX"/>

+			<xs:enumeration value="UAH"/>

+			<xs:enumeration value="AED"/>

+			<xs:enumeration value="GBP">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Pound Sterling.

+						For eBay, you can only specify this currency for listings you submit to the

+						UK site (site ID 3).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USS"/>

+			<xs:enumeration value="USN"/>

+			<xs:enumeration value="UYU"/>

+			<xs:enumeration value="UZS"/>

+			<xs:enumeration value="VUV"/>

+			<xs:enumeration value="VEB"/>

+			<xs:enumeration value="VND"/>

+			<xs:enumeration value="MAD"/>

+			<xs:enumeration value="YER"/>

+			<xs:enumeration value="YUM"/>

+			<xs:enumeration value="ZMK"/>

+			<xs:enumeration value="ZWD"/>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/CurrencyDetailsType.xsd #####

+

+-->

+	<xs:complexType name="CurrencyDetailsType">

+		<xs:annotation>

+			<xs:documentation> 

+				Details about a currency.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Currency abbreviation.&lt;br&gt;&lt;br&gt;

+						Related fields:&lt;br&gt;

+						Item.Currency and Item.StartPrice in AddItem&lt;br&gt;

+						SearchLocationFilter.Currency in GetSearchResults

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Full currency name for display purposes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DataElementSetType.xsd #####

+

+-->

+	<xs:complexType name="DataElementSetType">

+		<xs:annotation>

+			<xs:documentation>

+Container for a set of data elements (see below) that are applicable for a set

+of products that were returned within the same response. The data elements contain

+supplemental information that can help end users understand product search results.

+Usage of this information is optional and may require developers to inspect

+the information to determine how it can be applied in an application.

+Output only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DataElement" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						An HTML snippet that specifies hints for the user, help links, help graphics, 

+						and other supplemental information that varies per characteristic set.

+						In GetProductSearchPage, one DataElement value contains a hint (including an empty HTML achor element),

+						one DataElement value may contain a URL to insert into the HTML anchor as the href value,

+						and one DataElement value may contain a URL that eBay uses as a help graphic.

+						If no value is available in the meta-data, a dash ("--") is returned instead.

+						Usage of this information is optional and may require developers to inspect 

+						the information to determine how it can be applied in an application. 

+						Because this is returned as a string, the HTML markup elements are escaped with 

+						character entity references (e.g.,&amp;lt;a href=""&amp;gt;&amp;lt;Attributes&amp;gt;...). 

+						See the appendices in the eBay Web Services guide for general information about 

+						string data types.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DataElementID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Identifier for a data element. This is primarily for internal use by eBay.

+						Developers can choose to inspect this information and determine how it 

+						can be applied in their applications.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="attributeSetID" type="xs:int">

+			<xs:annotation>

+				<xs:documentation>

+					Matches the AttributeSetID associated with a response

+					returned from the same call that returned the data element set.

+					As calls like GetProductSearchResults can perform batch searches, this ID helps

+					you determine which attribute set the data element set is associated with.

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchPage</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DateSpecifierCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DateSpecifierCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				 Specifies a subcomponent of a date. Useful in cases when it is

+				 helpful to allow separate text fields or drop-down lists to be

+				 rendered for each date subcomponent. (For example, when calling

+				 GetProductSearchResults, you use date specifiers to indicate the

+				 date subcomponent that the attribute represents.)

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="M">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The month subcomponent of a date.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="D">

+				<xs:annotation>

+					<xs:documentation> 

+						(in/out) The day subcomponent of a date.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Y">

+				<xs:annotation>

+					<xs:documentation> 

+						(in/out) The year subcomponent of a date.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/DepositTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DepositTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+DepositTypeCodeType - Type declaration to be used by other schema.

+For vehicles listed through the US eBay Motors site, DepositType 

+indicates how the buyer should pay the deposit amount. It is 

+used in conjunction with a buyer payment method (BuyerPaymentMethodCodeType).

+If the item listed is not a US eBay Motors item, the DepositType value 

+is returned as "None".

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out) No deposit needed

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OtherMethod">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out) Pay the deposit using one of the specified

+					  PaymentMethods (BuyerPaymentMethodCodeType)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FastDeposit">

+				<xs:annotation>

+					<xs:documentation> 

+					   (in/out) No longer in use (defaults to OtherMethod)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/DescriptionTemplateCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DescriptionTemplateCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Layout">

+				<xs:annotation>

+					<xs:documentation>

+						The template details establish how pictures are to be

+						positioned relative to the description text.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Theme">

+				<xs:annotation>

+					<xs:documentation>

+						The template determines which eBay-provided theme (e.g. 

+						Valentine's Day) is to be applied for presenting pictures

+						and description text.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/DescriptionTemplateType.xsd #####

+

+-->

+	<xs:complexType name="DescriptionTemplateType">

+		<xs:annotation>

+			<xs:documentation>

+				The information for one Theme or one Layout.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="GroupID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique identifier for the group in which a Theme falls 

+						(holidays, special events, etc.). Not returned for Layouts.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique identifier for one Theme or Layout.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ImageURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						URL for a small (100x120 pixel) image providing a sample of how a Theme or Layout looks.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique text name of the Theme or Layout.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TemplateXML" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						XML defining the template. Elements you must include

+						in your XML: ThemeTop, ThemeUserCellTop, ThemeUserContent, 

+						ThemeUserCellBottom, ThemeBottom. Not returned for Layouts.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Type" type="ns:DescriptionTemplateCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Either Layout or Theme.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DetailNameCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DetailNameCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				A designation of what kind of information you wish returned by

+				GeteBayDetails for the specified eBay site.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="CountryDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific country.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CurrencyDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific currency.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentOptionDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific payment option.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RegionDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific geographical area.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingLocationDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific location or region to which the

+						seller is willing to ship.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingServiceDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific shipping service.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SiteDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific eBay site.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TaxJurisdiction">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific tax jurisdiction or region.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="URLDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific eBay URL.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DispatchTimeMaxDetails">

+				<xs:annotation>

+					<xs:documentation>

+						Details about a specific maximum dispatch time. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/DeviceTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DeviceTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The means of receipt of notification.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Platform">

+				<xs:annotation>

+					<xs:documentation>

+						Typical API, web page interaction.

+					</xs:documentation>

+					<xs:appinfo>

+					  <CallInfo>

+					    <CallName>SetNotificationPreferences</CallName>

+					    <RequiredInput>No</RequiredInput>

+					  </CallInfo>

+					  <CallInfo>

+					    <CallName>GetNotificationPreferences</CallName>

+					    <Returned>Conditionally</Returned>

+					  </CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SMS">

+				<xs:annotation>

+					<xs:documentation>

+						For SMS/wireless application.

+					</xs:documentation>

+					<xs:appinfo>

+					  <CallInfo>

+					    <CallName>SetNotificationPreferences</CallName>

+					    <RequiredInput>No</RequiredInput>

+					  </CallInfo>

+					  <CallInfo>

+					    <CallName>GetNotificationPreferences</CallName>

+					    <Returned>Conditionally</Returned>

+					  </CallInfo>

+						<SiteInfo>

+							<TheseSites>CN</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/DigitalDeliveryDetailsType.xsd #####

+

+-->

+	<xs:complexType name="DigitalDeliveryDetailsType">

+		<xs:sequence>

+			<xs:element name="Requirements" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						File type, operating system specifications,

+						or other requirements for using the digital item.

+						In this section, specify the following information about your digital item, if applicable:&lt;br&gt;

+						- Type of file (file format). Examples include MP3, MOV, etc.&lt;br&gt;

+						- Any computer hardware or software requirements. For example, is your file compatible with both PCs and Macintosh computers?

+							Will it work with all operating systems (Windows XP, Windows 2000, Mac OS X, etc.)?

+							Does the buyer need a specific software program, such as Microsoft Word, to use the item?&lt;br&gt;

+						- Any other requirements. For example, does the buyer need to provide an email address where you will send the item?&lt;br&gt;

+						For example: "Adobe PDF (Portable Document Format) file;

+						buyer will need Adobe Acrobat Reader 5.0 or higher and 5MB of available hard-disk space."

+						Be as specific as possible so that buyers know exactly what they need to access and use

+						the item successfully. This information will appear in your listing so that buyers can

+						make an informed purchase decision.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSearchResults</CallName>

+							<!-- N/A to GetItemTransactions, GetSellerTransactions, GetOrderTransactions -->

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Method" type="ns:DigitalDeliveryMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The digital download method.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSearchResults</CallName>

+							<!-- N/A to GetItemTransactions, GetSellerTransactions, GetOrderTransactions -->

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="URL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The download URL for the digital item. Provide a Web address for your digital item that uses

+						one of the following protocols: HTTP, HTTPS, or FTP. If you do not have a Web address that meets these criteria,

+						specify alternate delivery information in the Instructions field instead.

+						The information will be displayed to the buyer only after payment has been confirmed.

+						Required if Method value is DownloadURL.

+						Ignored if Method value is AlternateDeliveryInstructions (or None).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<!-- N/A to GetItemTransactions, GetSellerTransactions, GetOrderTransactions -->

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Instructions" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Text instructions for accessing the digital item. For example, if no delivery URL

+						is provided, the seller may ask the buyer to specify an email address when they pay for the item so that

+						the seller can send the file to the buyer. If a Web address is specified in URL,

+						the seller may provide instructions on using the Web address.

+						The text will be displayed as is (so do not pass in HTML or Javascript).

+						The information will be displayed to the buyer only after payment has been confirmed.

+						Required if Method value is AlternateDeliveryInstructions.

+						Optional if Method value is DownloadURL and a DownloadURL value is specified.

+						Ignored if Method value is None.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>500 (characters)</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<!-- N/A to GetItemTransactions, GetSellerTransactions, GetOrderTransactions -->

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DigitalDeliveryEnabledCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DigitalDeliveryEnabledCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Disabled">

+				<xs:annotation>

+					<xs:documentation>

+						The digital delivery listing option is disabled for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Enabled">

+				<xs:annotation>

+					<xs:documentation>

+					The digital delivery listing option is available in this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Promoted">

+				<xs:annotation>

+					<xs:documentation>

+					The digital delivery listing option is available in this category, 

+					and eBay normally displays this option by default in this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode"/>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/DigitalDeliveryEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="DigitalDeliveryEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				If the field is present, the digital delivery feature applies to the category. 

+				If applicable, the field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DigitalDeliveryMethodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DigitalDeliveryMethodCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+					The item cannot be downloaded.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>			

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DownloadURL">

+				<xs:annotation>

+					<xs:documentation>

+					The item can be downloaded by using a URL.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>			

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AlternateDeliveryInstructions">

+				<xs:annotation>

+					<xs:documentation>

+					The item can be downloaded according to instructions specified by the seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>			

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode"/>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/DispatchTimeMaxDetailsType.xsd #####

+

+-->

+	<xs:complexType name="DispatchTimeMaxDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a specific maximum dispatch time, the maximum number of business 

+				days required to ship an item to domestic buyers after receiving a cleared 

+				payment.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DispatchTimeMax" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Integer value (1, 2, 3, 4, 5, 10, 15, or 20) corresponding to the 

+						maximum dispatch time. &lt;br&gt;&lt;br&gt;

+						Related field:&lt;br&gt;

+						Item.DispatchTimeMax in AddItem

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Value and unit (e.g., 10 Days) for the maximum dispatch time.

+						Useful for display purposes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DisplayPayNowButtonCodeList.xsd #####

+

+-->

+	<xs:simpleType name="DisplayPayNowButtonCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Ways to Display PayNow Button

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ShowPayNowButtonForAllPaymentMethods">

+				<xs:annotation>

+					<xs:documentation>

+						 Show PayNow Button For All Payment Methods

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShowPayNowButtonForPayPalOnly">

+				<xs:annotation>

+					<xs:documentation>

+						 Show PayNow Button For PayPal Only

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						 Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/DisputeArrayType.xsd #####

+

+-->

+	<xs:complexType name="DisputeArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Represents a list of disputes. Can hold zero or more Dispute

+				types, each of which describes a dispute.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Dispute" type="ns:DisputeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						The information that describes a dispute, including

+						the buyer's name, the transaction ID, the dispute state

+						and status, whether the dispute is resolved,

+						and any messages posted to the dispute.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DisputeType.xsd #####

+

+-->

+	<xs:complexType name="DisputeType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains all information describing a dispute.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DisputeID" type="ns:DisputeIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The unique identifier of a dispute, returned by the eBay site

+						when the dispute is created.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeRecordType" type="ns:DisputeRecordTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The type of dispute.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeState" type="ns:DisputeStateCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The internal state of the dispute. The value determines

+						which values of DisputeActivity are valid when responding

+						to a dispute.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeStatus" type="ns:DisputeStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The status of the dispute, which provides additional

+						information about the dispute state.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="OtherPartyRole" type="ns:TradingRoleCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The role of the person involved in the dispute who is

+						not taking action or requesting information. The role is

+						either Buyer or Seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="OtherPartyName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The user name of the person involved in the dispute who

+						is not taking action or requesting information. The role is

+						either Buyer or Seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserRole" type="ns:TradingRoleCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  The role of the person involved in the dispute who is taking action or

+					  requesting information. The role is either Buyer or Seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerUserID" type="ns:UserIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The eBay user ID of the buyer involved in the dispute.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerUserID" type="ns:UserIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The eBay user ID of the seller involved in the dispute.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The unique identifier of the transaction under dispute.

+						The transaction is created when the winning bidder commits to

+						purchasing the item but before the bidder pays.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Information about the item that spawned the transaction.

+						The transaction is a purchase from this item's listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeReason" type="ns:DisputeReasonCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The top-level reason for the dispute. The value of DisputeReason

+						determines which values of DisputeExplanation are valid.

+						See DisputeExplanationCodeList for details.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeExplanation" type="ns:DisputeExplanationCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The detailed explanation for the dispute. Valid values

+						depend on the value of DisputeReason. See DisputeExplanationCodeList

+						for details.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeCreditEligibility" type="ns:DisputeCreditEligibilityCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether the dispute is currently eligible for Final Value Fee credit.

+						The value is usually Ineligible until 7 days after the

+						dispute was created, unless a fee exception applies.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeCreatedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The date and time the dispute was created, in GMT.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeModifiedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The date and time the dispute was modified, in GMT.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeResolution" type="ns:DisputeResolutionType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						The action resulting from the dispute resolution. The

+						action might include a Final Value Fee credit to the seller, a strike

+						to the buyer, a reversal, or an appeal.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisputeMessage" type="ns:DisputeMessageType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A response or message posted to a dispute, either by

+						an application or by a user on the eBay site.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Escalation" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether the buyer can close a dispute unhappy and escalate it

+						to the eBay Standard Purchase Protection Program. To escalate, the buyer

+						must be eligible for the PPP. Used in Item Not Received disputes.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PurchaseProtection" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether the buyer is eligible for the eBay Standard Purchase Protection

+						Program. The eligibility rules are described in the eBay site online help.

+						Used in Item Not Received disputes.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DistanceType.xsd #####

+

+-->

+	<xs:complexType name="DistanceType">

+		<xs:annotation>

+			<xs:documentation>

+			 	DistanceType used in proximity search

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DistanceMeasurement" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+						The measurement used in a proximity search distance calculation.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DistanceUnit" minOccurs="0" type="xs:string" >

+				<xs:annotation>

+					<xs:documentation>

+						The unit used in a proximity search distance calculation.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DomainHistogramType.xsd #####

+

+-->

+	<xs:complexType name="DomainHistogramType">

+		<xs:annotation>

+			<xs:documentation> 

+Container for a list of Express departments, aisles, and/or products. 

+Can contain zero, one, or multiple ExpressHistogramDepartmentType objects.

+        		</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Department" type="ns:ExpressHistogramDepartmentType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+					Contains item and product counts for a department, aisles, and/or Express product types.

+					Only returned when HistogramDetails is configured to retrieve histogram data.

+					Multiple Department nodes can be returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/DutchBINEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="DutchBINEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the DutchBINEnabled feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/EBaySubscriptionTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="EBaySubscriptionTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="SellerAssistant">

+				<xs:annotation>

+					<xs:documentation>

+				      </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerAssistantPro">

+				<xs:annotation>

+					<xs:documentation> 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EBayStoreBasic">

+				<xs:annotation>

+					<xs:documentation> 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EBayStoreFeatured">

+				<xs:annotation>

+					<xs:documentation> 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EBayStoreAnchor">

+				<xs:annotation>

+					<xs:documentation> 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellingManager">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellingManagerPro">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerLevel1">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerLevel2">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerLevel3">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerLevel4">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerLevel5">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerLevel6">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManagerLevel7">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerReportsBasic">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerReportsPlus">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FileExchange">

+				<xs:annotation>

+					<xs:documentation>

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocalMarketSpecialty">

+				<xs:annotation>

+					<xs:documentation>

+						Allowed categories are Motorcycles, Powersports, and Other Vehicles.

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocalMarketRegular">

+				<xs:annotation>

+					<xs:documentation>

+						In addition to the categories allowed by LocalMarketSpecialty, allows 

+						Passenger Vehicles.

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocalMarketPremium">

+				<xs:annotation>

+					<xs:documentation>

+						Allows same categories as LocalMarketRegular.

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/EnableCodeList.xsd #####

+

+-->

+	<xs:simpleType name="EnableCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The status of a particular entry.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Enable">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The entry is enabled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Disable">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The entry is disabled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/EndOfAuctionEmailPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="EndOfAuctionEmailPreferencesType">

+		<xs:annotation>

+			<xs:documentation>Contains the seller's preferences for the end of auction (EOA) email to the buyer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="TemplateText" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The text of the custom message for the end of auction (for auctions) or end of transaction (for Buy It Now) emails. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LogoURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The URL of the logo to include in the customized email.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LogoType" type="ns:EndOfAuctionLogoTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The type of logo to include in the customized email.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="EmailCustomized" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates whether or not the seller wishes to send a customized email to winning buyers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TextCustomized" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates whether or not the text of the customized message will be customized.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LogoCustomized" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates whether or not the seller wishes to include a logo in the customized email.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CopyEmail" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates whether or not the seller wishes to receive a copy of the customized email sent to the winning buyer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/EndOfAuctionLogoTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="EndOfAuctionLogoTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			EndOfAuctionLogoTypeCodeType - Type declaration to be used by other schema. 

+			Indicatest the type of logo to be used in a customize end of auction (EOA) email.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="WinningBidderNotice">

+				<xs:annotation>

+					<xs:documentation>

+					 The PayPal Winning Bidder Notice logo.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Store">

+				<xs:annotation>

+					<xs:documentation>

+					 The eBay Store logo.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Customized">

+				<xs:annotation>

+					<xs:documentation>

+					 A customized logo specified in LogoURL.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					  Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Indicates that no logo has been specified for use in the end of auction 

+						(EOA) email.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/EndReasonCodeList.xsd #####

+

+-->

+	<xs:simpleType name="EndReasonCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           ReasonCodeType - Type declaration to be used by other schema.

+           Specifies the seller's reason for ending an item listing early. This

+           is required if the seller ended the listing early and the item did

+           not successfully sell.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="LostOrBroken">

+				<xs:annotation>

+					<xs:documentation>

+                (in) The item was lost or broken.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>EndItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotAvailable">

+				<xs:annotation>

+					<xs:documentation>

+                (in) The item is no longer available for sale.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>EndItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Incorrect">

+				<xs:annotation>

+					<xs:documentation>

+                (in) The minimum bid or reserve price is incorrect.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>EndItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OtherListingError">

+				<xs:annotation>

+					<xs:documentation>

+                (in) The listing contained an error (other than minimum bid or reserve

+                price).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>EndItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/EscrowCodeList.xsd #####

+

+-->

+	<xs:simpleType name="EscrowCodeType">

+		<xs:annotation>

+			<xs:documentation>

+EscrowCodeType - Type declaration to be used by other schema. Indicates whether

+escrow is used for a listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ByBuyer">

+				<xs:annotation>

+					<xs:documentation>

+						    (in/out) By Buyer

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BySeller">

+				<xs:annotation>

+					<xs:documentation>

+						   (in/out) By Seller

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						   (in/out) None

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpansionArrayType.xsd #####

+

+-->

+	<xs:complexType name="ExpansionArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+				Container for items returned with an expanded search.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ExpansionItem" type="ns:SearchResultItemType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Item that is the result of an expanded search. If, in a GetSearchResults 

+						request, you specify true for ExpandSearch, the search is expanded when a 

+						small result set is returned. For example, on the US site (site ID 0), if a 

+						search would normally result in fewer than 10 items, then the search results 

+						are expanded. Specifically, the search returns items (if there are matches) 

+						in one or more of the following containers: InternationalExpansionArray (for 

+						items available from international sellers), FilterRemovedExpansionArray 

+						(items that would be returned if filters such as PriceRangeFilter are 

+						removed), and AllCategoriesExpansionArray (for items available if category 

+						filters are removed). The maximum number of items returned in each container 

+						is 6 to 10.	

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalAvailable" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  The number of matching items available under the expansion.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressConditionRequiredDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="ExpressConditionRequiredDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+For the US and Germany sites, an eBay item must meet a number of eligibility requirements 

+in order to also be included on eBay Express. 

+One requirement is that the item must include the Item Condition attribute (using Item Specifics).

+Some categories may waive this requirement.

+Currently, this type defines no special meta-data. (An empty element is returned.)

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressDetailLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ExpressDetailLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				For GetSearchResultsExpress, controls the details to retrieve per

+				item, product, or histogram.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Coarse">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The effect of Coarse varies for HistogramDetails, ProductDetails,

+						and ItemDetails.&lt;br&gt;

+						&lt;br&gt;

+						For HistogramDetails, this is primarily useful for reducing the

+						histogram depth when you search across all departments or within a

+						specific department. (When you search by AisleName or ProductTypeName,

+						there is no difference between Coarse and Fine).&lt;br&gt;

+						&lt;br&gt;

+						If the request includes no DepartmentName, AisleName, or ProductName,

+						retrieve a histogram for all departments that match the

+						criteria in the request, but don't retrieve aisle or

+						product type details.

+						Stand-alone domains (aisles and product types) aren't grouped into

+						departments, so Express ignores them in this departments-only histogram.

+						That is, the data in the histogram is only based on matching departments

+						and their grouped subdomains.

+						(Please note the following consequences of retrieving a departments-only

+						histogram:

+						If Express only finds items or products in stand-alone domains,

+						then ItemCount or ProductCount could be 0. For example, if Express finds

+						catalog products in two departments, but only finds items in a

+						stand-alone product type (like DVDs &amp; Movies),

+						ItemCount would be 0 in the two departments.

+						Furthermore, if all matching items and catalog products are in

+						stand-alone domains, no histogram is returned at all (because there are

+						no matching departments). This might occur when you also add filters

+						(e.g., LowestPrice) or more query keywords to your request.)&lt;br&gt;

+						&lt;br&gt;

+						If the request only specifies DepartmentName, retrieve a histogram

+						for that department and all of its aisles (but no histogram details

+						for any product types it contains).

+						If the request only specifies AisleName, retrieve the full histogram

+						for that aisle, including all of its product types and the

+						parent department.

+						If the request only specifies ProductTypeName, retrieve the histogram

+						for its parent department (and any aisles), or only retrieve the

+						histogram for the product type if isn't grouped into

+						a department.&lt;br&gt;

+						&lt;br&gt;

+						For ProductDetails, retrieve the Title, MinPrice, and MaxPrice fields

+						for each product found.&lt;br&gt;

+						&lt;br&gt;

+						For ItemDetails, retrieve the ItemID, Title, BuyItNowPrice,

+						and ShippingDetails node for each item found.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Fine">

+				<xs:annotation>

+					<xs:documentation>

+						(in) For HistogramDetails, retrieve a full histogram (all levels of the

+						domain hierarchy) that matches the request.

+						If you specify Fine, you must also specify DepartmentName, AisleName,

+						and/or ProductTypeName in the request.

+						If the request only specifies DepartmentName, retrieve a full histogram

+						for that department, all of its aisles, and all of its product types.

+						If the request only specifies AisleName or ProductTypeName, the results

+						are the same as specifying Coarse.&lt;br&gt;

+						&lt;br&gt;

+						For ProductDetails, retrieve all applicable fields for each

+						catalog product found.&lt;br&gt;

+						&lt;br&gt;

+						For ItemDetails, retrieve all applicable fields for each item found.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						(in) For HistogramDetails, omits the histogram from the response.

+						For ProductDetails, omits the ProductArray from the response.

+						For ItemDetails, omits the ItemArray from the response.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ExpressDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+Item details that are only applicable to listings on Express (not the main eBay site).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ExpressLargeImage" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					Large gallery image that appears in the "Grid View" in search results on the Express site.

+					The longest dimenstion  is 140 pixels.

+					Only returned when ItemDetails is set to Fine.&lt;br&gt;

+					&lt;br&gt;

+					Express generates the image based on pictures that the seller includes in 

+					the listing. For details about Express listing criteria, see the 

+					"eBay Express" section of the eBay Web Services Guide.&lt;br&gt;

+					&lt;br&gt;

+					If the item was listed in an eBay category that does not require 

+					pictures for Express (like Tickets), a generic image may be returned instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressSmallImage" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Small gallery image that appears in the "List View" in search results on the Express site.

+					The longest dimenstion is 96 pixels.

+					Only returned when ItemDetails is set to Fine.&lt;br&gt;

+					&lt;br&gt;

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Condition" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					The item condition, if any. On Express US, this is often a value like "New", "Used", or "Refurbished",

+					but the exact value can vary based on the Item Condition data that the seller used in the listing.&lt;br&gt;

+					For example, in some eBay categories, the condition can have a value like "New: With Tags" instead.

+					(At the time of this writing, GetSearchResultsExpress mapped all conditions to "New" and "Used".

+					However, this could change in the future.)

+					By default, only new items (or the equivalent) are returned from GetSearchResultsExpress.

+					Use Condition in the request to include used and refurbished items (or the equivalent) as well.

+					Only returned when ItemDetails is set to Fine.&lt;br&gt;

+					&lt;br&gt;

+					Not applicable to calls that browse or search items on the main eBay site.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="ExpressEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+For the US and Germany sites, an eBay item must meet a number of eligibility requirements 

+in order to also be included on eBay Express. 

+One requirement is that the category needs to support Express.

+Currently, this type defines no special meta-data. (An empty element is returned.)

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressHistogramAisleType.xsd #####

+

+-->

+	<xs:complexType name="ExpressHistogramAisleType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about an Express aisle and matching item and catalog product counts 

+				in that aisle, if any.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DomainDetails" type="ns:ExpressHistogramDomainDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					Identifies the aisle and provides matching item and 

+					eBay catalog product counts in the specified aisle, if any.

+					Only returned if an aisle matched the request.&lt;br&gt;

+					&lt;br&gt;

+					If this node is missing but Aisle.ProductType is present, it means that the 

+					product type specified in Aisle.ProductType is not grouped into an aisle.

+					In the Express Web site UI, such product types are elevated to (treated as) aisles

+					from the user's perspective (or as Departments, if Department.DomainDetails is also missing).

+					However, the API always maintains the Department/Aisle/ProductType

+					structure to help you distinguish between actual departments, aisles, and stand-alone product types.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductType" type="ns:ExpressHistogramProductType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+						Contains item and catalog product counts for an Express product type.

+						Only returned when HistogramDetails is configured to return product types.&lt;br&gt;

+						&lt;br&gt;

+						An Aisle node can contain multiple ProductType nodes. 

+            </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressHistogramDepartmentType.xsd #####

+

+-->

+	<xs:complexType name="ExpressHistogramDepartmentType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about an Express department and matching item and catalog product counts 

+				in that department, if any.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DomainDetails" type="ns:ExpressHistogramDomainDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					Identifies the department and provides matching item and 

+					eBay catalog product counts in the specified department.

+					Only returned if a department matched the request.&lt;br&gt;

+					&lt;br&gt;

+					If this node is missing but Department.Aisle.ProductType is present, it means that the product type 

+					specified in Department.Aisle.ProductType is not grouped into a department.

+					In the Express Web site UI, stand-alone product types are elevated to (treated as) departments

+					from the user's perspective. However, the API always maintains the Department/Aisle/ProductType

+					structure to help you distinguish between actual departments, aisles, and stand-alone product types.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Aisle" type="ns:ExpressHistogramAisleType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+					Contains item and catalog product counts for an aisle (if any) and may contain a list of product types.

+					Only returned when HistogramDetails is configured to return aisles and/or product types.&lt;br&gt;

+						&lt;br&gt;

+						A Department node can contain multiple Aisle nodes. 

+            			</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressHistogramDomainDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ExpressHistogramDomainDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Identifies a domain and provides statistics for items and

+				catalog products found in that domain.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The domain name, with no spaces.

+					Use this to determine DepartmentName, AisleName, and/or ProductTypeName

+					values to pass in the request.&lt;br&gt;

+					&lt;br&gt;

+					Note: The potential max length will be documented in a future release.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BreadCrumb" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The fully qualified display name of the domain, as it would appear in the

+					Express Web site user interface.

+					For example, a fully qualified aisle breadcrumb would include the

+					department's display name and the aisle's display name.

+					The names can contain spaces, and a greater-than character ("&gt;") is used

+					as the delimiter; for example:

+					Consumer Electronics &gt; Cell Phones &amp; PDAs &gt; PDA Accessories.

+					As with all string data types, reserved characters like "&gt;" are escaped

+					in the raw response.&lt;br&gt;

+					&lt;br&gt;

+					Note: The potential max length will be documented in a future release.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The number of matching items that were found in the

+					specified department, aisle, or product type.&lt;br&gt;

+					&lt;br&gt;

+					If HistogramDetails==Coarse and you don't specify

+					DepartmentName, AisleName, or ProductTypeName in the request,

+					Express only counts items found in matching departments.

+					In this particular case, ItemCount could be 0 in all domain histogram

+					results when the only matching items are in stand-alone product types

+					or aisles (because they aren't grouped into departments).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The number of matching eBay catalog products that were found in the

+					specified department, aisle, or product type.&lt;br&gt;

+					&lt;br&gt;

+					If HistogramDetails==Coarse and you don't specify

+					DepartmentName, AisleName, or ProductTypeName in the request,

+					Express only counts catalog products found in matching departments.

+					In this particular case, ProductCount could be 0 in all domain histogram

+					results when the only matching catalog products are in

+					stand-alone product types or aisles (because they aren't

+					grouped into departments).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ImageURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The image associated with the department, aisle, or product, if any.

+					All domains should be associated with an image. However, there may be

+					rare cases when an image is not available.

+            	</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressHistogramProductType.xsd #####

+

+-->

+	<xs:complexType name="ExpressHistogramProductType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about an Express product type and matching item and catalog product counts 

+				in that product type, if any.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DomainDetails" type="ns:ExpressHistogramDomainDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					Identifies an Express product type and provides item and 

+					eBay catalog product counts in that product type.

+					Only returned if a product type matched the request.&lt;br&gt;

+					&lt;br&gt;

+					A product type domain can stand alone, or it can be grouped with other product types into 

+					an aisle or a department.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressHistogramSortCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ExpressHistogramSortCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Sort options for the Express histogram.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ItemCount">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort the domains in the histogram by the item count in descending order. 

+						The domain with the most matching items is returned first.

+						This is the default setting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProductCount">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort the domains by the product count in descending order.

+						The domain with the most matching products is returned first.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Alphabetical">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort the domains alphabetically by DomainDetails.Name.

+					Domains at the same depth are sorted first. Within each domain,

+					child domains are also sorted. For example, a "Books_Dept" department

+					and its aisles or product types would be returned before a 

+					stand-alone "Hard_Domain_Music" product type.  

+					And that "Hard_Domain_Music" product type would be returned before 

+					a stand-alone "OldNavyAisle" aisle and its product types.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressItemSortCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ExpressItemSortCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Sorts the items in the ItemArray.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="LowestTotalCost">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort the items by the lowest total cost, including shipping. 

+						The item with the lowest total cost is returned first.

+						To calculate the total cost, PostalCode must also be specified in the request.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HighestTotalCost">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort the items by the highest total cost, including shipping. 

+						The item with the highest total cost is returned first.

+						To calculate the total cost, PostalCode must also be specified in the request.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Relevance">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort the items by relevance. This is the default.

+						The item with the highest relevance is returned first.

+						The relevance is determined by various factors, such as matching item details

+						and historical buyer behavior.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                			(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressPicturesRequiredDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="ExpressPicturesRequiredDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+For the US and Germany sites, an eBay item must meet a number of eligibility requirements 

+in order to also be included on eBay Express. 

+One requirement is that the item must include a picture (or gallery image).

+Currently, this type defines no special meta-data. (An empty element is returned.)

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="ExpressPreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+			Contains a seller's preferences related to listing items on Express.

+		</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ExpressSellingPreference" type="ns:ExpressSellingPreferenceCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Specifies the kinds of eligible listings the seller wants to include on Express.

+					Some values are only applicable to certain sites.

+					Only applicable to sellers who are eligible to list on Express.&lt;br&gt;

+					&lt;br&gt;

+					For the US site, if the seller opts out of Express, their listings are immediately removed

+					from Express. (Please note that other changes that affect a user or item's eligibility

+					can take up to 7 days to be reflected.)

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Default>omitted</Default>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DefaultPayPalAccount" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					&lt;b&gt;Coming soon:&lt;/b&gt; For eBay Germany users only.

+					The PayPal account (email address) to use for eBay Express payments during checkout.

+					If the first item in an order doesn't specify a PayPal account,

+					Express Germany uses this default PayPal account for the item.

+					(The account specified for the first item

+					is used for all items in the same order.)&lt;br&gt;

+					&lt;br&gt;

+					This default account is only used for Express payments during checkout;

+					it has no effect on item data.

+					(To specify a default PayPal account for items, use the PayPal fields in

+					the SellerPaymentPreferences node.)&lt;br&gt;

+					&lt;br&gt;

+					Only applicable to sellers who are qualified to list on Express Germany.

+					Call GetUser to determine the seller's Express eligibility.

+					&lt;br&gt;

+					&lt;br&gt;

+					When you set this value using SetUserPreferences, eBay validates that the

+					PayPal account qualifies for Express. We check that the account

+					is in good standing, it is a Business or Premier account,

+					and it does not block unconfirmed addresses.

+					This means the seller needs to configure their PayPal account correctly

+					before calling SetUserPreferences.&lt;br&gt;

+					&lt;br&gt;

+					&lt;span class="tablenote"&gt;&lt;b&gt;Note:&lt;/b&gt; If the PayPal account

+					becomes ineligible later (e.g., the seller blocks unconfirmed addresses),

+					GetUserPreferences still returns the specified email address. Therefore, the existence of

+					this preference in GetUserPreferences does not guarantee that the specified address is valid for Express.

+					When a PayPal account becomes ineligible, Express reevaluates the eligibility of the

+					seller and their items, and may remove the seller's items from Express.

+					See the eBay Web Services guide links below for more information.&lt;/span&gt;&lt;br&gt;

+					&lt;br&gt;

+					This preference does not control the seller's eligibility for Express.

+					However, it can control an item's eligibility in some cases.

+					That is, for a fixed-price or Store Inventory item to be eligible for Express Germany,

+					either the item or this Express preference must

+					specify a valid PayPal email address. (For other eligibility requirements,

+					see the eBay Web Services guide.)&lt;br&gt;

+					&lt;br&gt;

+					In GetUserPreferences, this preference is only returned if a default PayPal account has been specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<Title>eBay Express</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=eBayExpress</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>Listing Criteria for eBay Express</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExpressListingCriteria</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>(AddItem) Item.PayPalEmailAddress</Title>

+							<URL>io_AddItem.html#Request.Item.PayPalEmailAddress</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+							<SeeLink>

+								<Title>SellerPaymentPreferences node</Title>

+								<URL>#Response.SellerPaymentPreferences</URL>

+							</SeeLink>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Default>omitted</Default>

+							<SeeLink>

+								<Title>SellerPaymentPreferences node</Title>

+								<URL>#Request.SellerPaymentPreferences</URL>

+							</SeeLink>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressProductSortCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ExpressProductSortCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Sorts the products in ProductArray.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="LowestPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort the products by the lowest current price of the items available. 

+						The product with the lowest-priced item is returned first.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>			

+			<xs:enumeration value="HighestPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort the products by the highest current price of the items available. 

+						The product with the highest-priced item is returned first.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SalesRank">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort the products by sales rank. 

+						The product with the highest sales rank (i.e., the best-selling product) 

+						is returned first.

+						The rules that are used to determine the sales rank vary for 

+						each product type and are not disclosed in this documentation.

+						However, in general, the sales rank is based on the number of items sold 

+						on Express and/or the main eBay site.

+						This is the default.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>			

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressProductType.xsd #####

+

+-->

+	<xs:complexType name="ExpressProductType">

+		<xs:annotation>

+			<xs:documentation>

+			Information that eBay Express collects about an eBay catalog product.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Title" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						The title of the eBay catalog product. Always returned when Product is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Lowest current price of active and ended listings on the specified eBay site that were

+						pre-filled based on the eBay catalog product. The value is in the Express site's currency

+						(i.e., the price is not converted).

+						Round numbers might only show one zero after the decimal (e.g., 15.0).

+						Always returned when Product is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Highest current price of active and ended listings on the specified eBay site that were

+						pre-filled based on this product. The value is in the Express site's currency

+						(i.e., the price is not converted).

+						Round numbers might only show one zero after the decimal (e.g., 15.0).

+						Always returned when Product is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StockPhotoURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Fully qualified URL for a stock image (if any) that is associated with the 

+						eBay catalog product. Only returned when ProductDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Total number of active listings (on the specified Express site)

+					that were pre-filled based on this eBay catalog product.

+					Only returned when ProductDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalProductID" type="ns:ExternalProductIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					An ISBN or UPC value (if any) that is associated with this eBay catalog product.

+					Only returned when ProductDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductReferenceID" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The Express reference ID for an eBay catalog product (if any) that was used to pre-fill 

+					the listing's Item Specifics and other details. 

+					Only returned when ProductDetails is set to Fine.&lt;br&gt;

+					&lt;br&gt;

+					&lt;b&gt;Note: &lt;/b&gt; This value is not the same as the ProductID used in AddItem and related calls.

+					You cannot use this call or the catalog search calls to determine a relationship between 

+					this reference ID and the eBay catalog ProductID that is used for listing on eBay.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemSpecifics" type="ns:NameValueListArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A list of attribute and value pairs that are included in the product's 

+						pre-filled Item Specifics and that are applicable in Express search results.

+						This does not necessarily include all Item Specifics that are defined for 

+						the product in the catalog. Typically, it returns only the top attributes

+						(as determined by Express). See ExternalProductID for the ISBN or UPC, if applicable.

+						Only returned when ProductDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExpressSellingPreferenceCodeType.xsd #####

+

+-->

+	<xs:simpleType name="ExpressSellingPreferenceCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies the kinds of eligible listings tht the seller prefers to include on Express.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="All">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller wants all of their eligible listings to appear on Express 

+						(in addition to the main eBay site), regardless of the listing format.

+						Only applicable to sellers who are eligible for Express US or Express Germany.

+						(By default, eBay sets this option for every eligible seller.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExpressOnly">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller only wants their Express format listings 

+						to appear on Express. 

+						(They don't want their fixed-price and Store Inventory format listings 

+						to appear on Express.)

+						Only applicable to sellers who are eligible for Express Germany.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OptOut">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller does not want any of their eligible listings to appear on Express.

+						That is, the seller prefers to completely opt out of Express.

+						Only applicable to sellers who are eligible for Express US.

+						(Germany sellers can't use the API to opt out of Express.

+						Germany sellers should see the Express Web site online help for information on how

+						to end their Express qualification.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExtendedProductFinderIDType.xsd #####

+

+-->

+	<xs:complexType name="ExtendedProductFinderIDType">

+		<xs:sequence>

+			<xs:element name="ProductFinderID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            A product finder ID. GetCategory2CS always (and only) returns this 

+            when Category.ProductFinderIDs is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFinderBuySide" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (out) If true, the product finder can be used as input to GetSearchResults

+            to search for listings with Item Specifics on the eBay site.

+            If false or not present, the product finder can be used as input to 

+            GetProductSearchResults to search for catalog data (Pre-filled Item Information) 

+            that a seller might want to include in a listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>MappedCategoryArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExternalAlertIDArrayType.xsd #####

+

+-->

+	<xs:complexType name="ExternalAlertIDArrayType">

+		<xs:sequence>

+			<xs:element name="ExternalAlertID" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExternalProductCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ExternalProductCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				As input, only applicable for AddItem, VerifyAddItem, and

+				GetSearchResults requests that include the ExternalProductID property.

+				Indicates the type of ID being used to identify a stock product. Used

+				when listing or searching for an item with Pre-filled Item Information

+				in certain categories. Certain values are also returned from

+				GetSellerPayments for Half.com listings only. See the Developer's Guide

+				for applicable categories.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ISBN">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) ExternalProductID.Value contains an ISBN value.

+						In listing calls, required when you pass an ISBN as the external product ID.

+						(This value is also applicable to Half.com listings.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSearchResultsExpress</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPC">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) ExternalProductID.Value contains a UPC value.

+						For AddItem and VerifyAddItem, required when you pass a UPC as the external product ID.

+						(This value is also applicable to Half.com listings.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSearchResultsExpress</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProductID">

+				<xs:annotation>

+					<xs:documentation>

+						(in) ExternalProductID.Value contains an eBay catalog product ID.

+						For AddItem and VerifyAddItem, required when you pass an eBay product ID

+						as the external product ID.

+						Not applicable with GetSearchResults or GetSearchResultsExpress.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EAN">

+				<xs:annotation>

+					<xs:documentation>

+						(in) ExternalProductID.Value contains an EAN value.

+						For AddItem and VerifyAddItem, required when you pass an EAN as the external product ID.

+						Not applicable with GetSearchResults or GetSearchResultsExpress.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Keywords">

+				<xs:annotation>

+					<xs:documentation>

+						(in) ExternalProductID.Value contains a set of keywords that uniquely identify the product.

+						Only applicable to event ticket listings.

+						See the eBay Web Services guide for information about using ticket keywords as an external product ID.

+						For AddItem and VerifyAddItem, required when you pass a set of keywords as the external product ID.

+						Not applicable with GetSearchResults or GetSearchResultsExpress.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExternalProductIDType.xsd #####

+

+-->

+	<xs:complexType name="ExternalProductIDType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains an ISBN value, EAN value, UPC value, ticket keywords, or eBay

+				catalog product ID, plus other meta-data. For event tickets, this type

+				can contain a set of keywords that uniquely identify the product. Only

+				applicable for certain categories that support Pre-filled Item

+				Information. For items listed to eBay.com, either ExternalProductID or

+				Item.ProductListingDetails can be specified in listing use cases

+				(AddItem or GetItemRecommendations), but do not specify both in the same

+				requst. Either ExternalProductID or ProductID can be specified in a

+				GetSearchResults request, but not both. See the Developer's Guide for

+				information on the categories that support usage of this field in

+				listing and searching use cases. Not applicable when revising and

+				relisting items. For Half.com listing use cases, contains an ISBN, UPC,

+				or EAN value plus other meta-data.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Value" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						An industry-standard value that uniquely identifies the product. The

+						valid values are dictated by the Type property. For convenience in AddItem, 

+						you can pass an eBay product ID as input (not limited to media categories). 

+						If the primary and secondary categories are both catalog-enabled, the value must apply to the

+						primary category. Event tickets listings support a set of keywords

+						that uniquely identify the listing. The ticket keywords specify the

+						event name (the title shown on the ticket), venue name, and event

+						date and time. See the eBay Web Services guide for more information

+						and validation rules.

+						Max length 10 for ISBN, 13 for EAN, 12 for UPC, and 4000 for

+						ProductID. No max length for ticket keywords (passing too much data

+						results in "no match found" errors).&lt;br&gt;

+						&lt;br&gt;

+						Only ISBN and UPC values can be passed in GetSearchResults. 

+						For AddItem and GetSearchResults, required if Type is specified.&lt;br&gt;

+						&lt;br&gt;

+						Required for Half.com listing use cases, and this can only be an

+						ISBN, UPC, or EAN value.

+						&lt;br&gt;

+						&lt;br&gt;

+						GetSearchResultsExpress returns this value in ProductArray.Product.ExternalProductID.Value.

+						To pass an external product ID in the request, use ExternalProductIDValue.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>See description</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<!-- N/A to ReviseItem and RelistItem -->

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReturnSearchResultOnDuplicates" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Applicable for listing use cases only (not buy-side searching).

+						Indicates what eBay should do if more than one product matches

+						the value passed in Value. Only takes effect when more than one

+						match is found. If true, the response should include an error

+						and all matching product IDs. If false, the response should include

+						an error but should not return the matching product IDs.

+						This field is also applicable when listing Half.com items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<!-- N/A to ReviseItem and RelistItem -->

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Type" type="ns:ExternalProductCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The kind of identifier being passed in. The choices are listed

+						in the ExternalProductCodeType code list.

+						For AddItem and GetSearchResults, required if Value is specified.

+						For Half.com listing use cases, only ISBN, UPC, and EAN are supported.&lt;br&gt;

+						&lt;br&gt;

+						GetSearchResultsExpress returns this value in ProductArray.Product.ExternalProductID.Type.

+						To pass an external product ID in the request, use ExternalProductIDType.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<!-- N/A to ReviseItem and RelistItem -->

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ExternalTransactionType.xsd #####

+

+-->

+	<xs:complexType name="ExternalTransactionType">

+		<xs:annotation>

+			<xs:documentation>

+				Container for external transaction information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ExternalTransactionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique payment transaction ID.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalTransactionTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Date on which transaction occurs in PayPal.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeeOrCreditAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentOrRefundAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If positive, the amount the buyer pays

+						the seller through PayPal on the purchase of items. If

+						negative, the amount refunded the buyer. Default = 0.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeatureDefinitionsType.xsd #####

+

+-->

+	<xs:complexType name="FeatureDefinitionsType">

+		<xs:annotation>

+			<xs:documentation>

+				A container node for definitions of the features specified in FeatureID in the

+				GetCategoryFeatures request. If no feature ID was specified, all definitions are

+				returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingDurations" type="ns:ListingDurationDefinitionsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies one or more sets of listing durations. Each set gives durations for

+						listing types a category could allow. If present, the corresponding feature ID

+						was passed in the request or all features were requested (i.e., no feature IDs

+						were specified). Use the data provided in SiteDefaults and Category to

+						determine which listing formats support each listing duration and whether any

+						categories override the standard settings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTermsRequired" type="ns:ShippingTermRequiredDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferEnabled" type="ns:BestOfferEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DutchBINEnabled" type="ns:DutchBINEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserConsentRequired" type="ns:UserConsentRequiredDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HomePageFeaturedEnabled" type="ns:HomePageFeaturedEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Some categories allow you to enhance a listing by putting it into a rotation

+						for display on a special area of the eBay home page. Item or feedback

+						restrictions may apply.&lt;br&gt;&lt;br&gt; If present, the corresponding

+						feature ID was passed in the request or all features were requested (i.e., no

+						feature IDs were specified). Currently, this field contains no other special

+						meta-data. (An empty element is returned.) Use the data provided in

+						SiteDefaults and Category to determine which categories (if any) support this

+						feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProPackEnabled" type="ns:ProPackEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Defines the ProPack feature (a feature pack).

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BasicUpgradePackEnabled" type="ns:BasicUpgradePackEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Defines the BasicUpgradePack bundle feature (a feature pack).

+						Applicable to Australia site (site ID 15, abbreviation AU) only.

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ValuePackEnabled" type="ns:ValuePackEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Defines the ValuePack bundle feature (a feature pack).

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProPackPlusEnabled" type="ns:ProPackPlusEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Defines the ProPackPlus bundle feature (a feature pack).

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AdFormatEnabled" type="ns:AdFormatEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DigitalDeliveryEnabled" type="ns:DigitalDeliveryEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						eBay enables you to list and sell digital files (such as Adobe PDF files) or

+						information that buyers can access online or have delivered electronically. If

+						a category supports digital listings, it means that you have the option to

+						list digital items in that category (i.e., Item.DigitalDeliveryDetails can be

+						specified in your listing request). It does not mean the category requires you

+						to list items digitally. Digital listings are not eligible for eBay

+						Express.&lt;br&gt;&lt;br&gt; If present, the corresponding feature ID was

+						passed in the request or all features were requested (i.e., no feature IDs

+						were specified). Currently, this field contains no other special meta-data.

+						(An empty element is returned.) Use the data provided in SiteDefaults and

+						Category to determine which categories (if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferCounterEnabled" type="ns:BestOfferCounterEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferAutoDeclineEnabled" type="ns:BestOfferAutoDeclineEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketSpecialitySubscription" type="ns:LocalMarketSpecialitySubscriptionDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketRegularSubscription" type="ns:LocalMarketRegularSubscriptionDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketPremiumSubscription" type="ns:LocalMarketPremiumSubscriptionDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketNonSubscription" type="ns:LocalMarketNonSubscriptionDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						(if any) support this feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressEnabled" type="ns:ExpressEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For the US and Germany sites, an eBay item must meet a number of eligibility

+						requirements in order to also be included on eBay Express. One requirement is

+						that the category needs to support Express. For example, categories that are

+						not covered by PayPal Buyer Protection (e.g., Live Auctions and Motors

+						vehicles) are excluded from Express.&lt;br&gt;&lt;br&gt; If present, the

+						corresponding feature ID was passed in the request or all features were

+						requested (i.e., no feature IDs were specified). Currently, this field

+						contains no other special meta-data. (An empty element is returned.) Use the

+						data provided in SiteDefaults and Category to determine which categories are

+						enabled for Express.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressPicturesRequired" type="ns:ExpressPicturesRequiredDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For the US and Germany sites, an eBay item must meet a number of eligibility

+						requirements in order to also be included on eBay Express. One requirement is

+						that the item must include a picture (or gallery image). Some categories

+						(e.g., Event Tickets) may waive this requirement if a picture is not normally

+						expected.&lt;br&gt;&lt;br&gt; If present, the corresponding feature ID was

+						passed in the request or all features were requested (i.e., no feature IDs

+						were specified). Currently, this field contains no other special meta-data.

+						(An empty element is returned.) Use the data provided in SiteDefaults and

+						Category to determine which categories requires an item to include a picture

+						in order to be eligible for Express.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressConditionRequired" type="ns:ExpressConditionRequiredDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For the US and Germany sites, an eBay item must meet a number of eligibility

+						requirements in order to also be included on eBay Express. One requirement is

+						that the item must include the Item Condition attribute (using Item

+						Specifics). Some categories may waive this requirement.&lt;br&gt;&lt;br&gt; If

+						present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Currently, this

+						field contains no other special meta-data. (An empty element is returned.) Use

+						the data provided in SiteDefaults and Category to determine which categories

+						require an item to include the Item Condition attribute in order to be

+						eligible for Express.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumReservePrice" type="ns:MinimumReservePriceDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If present, the corresponding feature ID was passed in the request or all

+						features were requested (i.e., no feature IDs were specified). Beginning in

+						mid- to late June, 2006, on the Germany, Austria, Belgium French, and Belgium

+						Dutch sites, Minimum Reserve Price is supported for the Art and Antiques,

+						Watches and Jewelry, and Motorbikes categories.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionConfirmationRequestEnabled" type="ns:TCREnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Applies to the US eBay Motors site (except Parts and Accessories category).

+						Defines the Transaction Confirmation Request feature. If the field is

+						present, the corresponding feature applies to the category. The field is

+						returned as an empty element (i.e., a boolean value is not returned).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerContactDetailsEnabled" type="ns:SellerContactDetailsEnabledDefinitionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeatureIDCodeList.xsd #####

+

+-->

+	<xs:simpleType name="FeatureIDCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies the feature IDs for which you want information. If you do not specify a value,

+			it defaults to all feature IDs.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ListingDurations">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about the durations of listings you can use in a given category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BestOfferEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports best offers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DutchBINEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returned if a site and category allow Buy It Now for Dutch auctions.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingTermsRequired">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a seller is required to specify a shipping

+						service and associated cost in order to list the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UserConsentRequired">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a bidder must consent to the bid 

+						by confirming that he or she read and agrees to the terms in eBay&apos;s privacy policy.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HomePageFeaturedEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Indicates whether or not it is possible to enhance a listing by putting 

+						it into a rotation for display on a special area of the eBay home page. 

+						Support for this feature varies by site. Item or feedback restrictions may apply.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AdFormatEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Indicates whether the category supports ad-format

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DigitalDeliveryEnabled"/>

+			<xs:enumeration value="BestOfferCounterEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports counter offers for best

+						offers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BestOfferAutoDeclineEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports auto decline for best

+						offers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProPack">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about ProPackBundle (a feature pack). Applies only to US and Canadian eBay motor vehicle sellers. Contains the Bold, Border, Featured and Highlight features.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BasicUpgradePack">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about the BasicUpgradePack bundle (a feature pack),

+						 which combines the features Gallery and Subtitle for a discounted price. 

+						 Australia site (site ID 15, abbreviation AU) only. Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ValuePack">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about the ValuePack bundle (a feature pack),

+						 which combines the features Gallery, Subtitle, and Listing Designer for a discounted price. Support for this feature varies by site and category. Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProPackPlus">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about the ProPackPlus bundle (a feature pack),

+						which combines the features BoldTitle, Border, Highlight, Featured, and Gallery for a discounted price. Support for this feature varies by site and category. Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocalMarketSpecialitySubscription">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports local market speciality subscription.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocalMarketRegularSubscription">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports local market regular subscription.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocalMarketPremiumSubscription">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports local market premium subscription.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocalMarketNonSubscription">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports local market non subscription.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExpressEnabled">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Returns information about whether a category is eligible for eBay express

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExpressPicturesRequired">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Returns information about whether a category requires pictures to be listed on express.

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExpressConditionRequired">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Returns information about whether a category requires item condition to be listed on express.

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerContactDetailsEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MinimumReservePrice">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports Minimum Reserve Price.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TransactionConfirmationRequestEnabled">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns information about whether a category supports the Transaction 

+						Confirmation Request (TCR) feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeeType.xsd #####

+

+-->

+	<xs:complexType name="FeeType">

+		<xs:annotation>

+			<xs:documentation>

+				Identifies the name and monetary amount of a fee that a member pays to eBay 

+				(or an eBay company). These fee names and values are intended only as an aid to 

+				help estimate the fees for a listing. Use GetAccount for an accurate final fee 

+				breakdown. Returned in AddItemResponseType and related response types.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Name of the fee, for identification purposes.

+						See the eBay Web Services guide for a list of current fee names.

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<Title>Fees Resulting from Listing an Item</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/ListingItems-Fees_Resulting_from_Listing_an_Item.html</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<CallName>VerifyAddSecondChanceItem</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Fee" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount of the fee that eBay will charge the member for the item.

+						See the eBay.com Web site online help for a current fee schedule.

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<Title>eBay.com Fees</Title>

+							<URL>http://pages.ebay.com/help/sell/fees.html</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<CallName>VerifyAddSecondChanceItem</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeedbackDetailArrayType.xsd #####

+

+-->

+	<xs:complexType name="FeedbackDetailArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+					Contains multiple individual feedback detail entries.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FeedbackDetail" type="ns:FeedbackDetailType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Contains a single feedback detail entry. Output only.

+					</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetFeedback</CallName>

+								<Returned>Conditionally</Returned>

+								<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeedbackDetailType.xsd #####

+

+-->

+	<xs:complexType name="FeedbackDetailType">

+	<xs:annotation>

+		<xs:documentation>

+				Detailed feedback information for a user. Conveys the score for the

+				feedback, textual comment from the leaving user, and other

+				information.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="CommentingUser" type="ns:UserIDType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) eBay user ID for the user who left the feedback.

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CommentingUserScore" type="xs:int" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Feedback score of the user indicated in CommentingUser.

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CommentText" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Text message left by user specified in CommentingUser. Used to provide a more

+					in-depth description of the user's opinion of their transaction with the user

+					about whom they left feedback. Returned as text in the language that the

+					comment was originally left in.

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>80 (125 for Taiwan)</MaxLength>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CommentTime" type="xs:dateTime" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Date and time (in GMT) that the feedback was submitted to eBay.

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CommentType" type="ns:CommentTypeCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Type of feedback. Can be Positive, Neutral, Negative, or Withdrawn (see the

+					CommentTypeCodeType code list). Positive feedbacks add to the user's total

+					feedback score, negative feedbacks lower the score, and neutral feedbacks do

+					not affect the score (but do affect the overall picture of the user's online

+					reputation).

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="FeedbackResponse" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Textual comment that the user targeted by feedback may leave in response or

+					rebuttal to the feedback. (Cannot be submitted

+					or edited via the API.)

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>80 (125 for Taiwan)</MaxLength>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Followup" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Explanation a user can give to a response.

+					(Cannot be submitted or edited via the API.)

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>80 (125 for Taiwan)</MaxLength>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) The ID that uniquely identifies the item listing.

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Role" type="ns:TradingRoleCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Indicates whether the user who was the feedback recipient was a Buyer or the

+					Seller for that transaction.

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ItemTitle" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Name of the listing for which feedback was provided.

+					Returned as CDATA. This value is returned only if

+					the site is China (site ID 223).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>55</MaxLength>

+					<SiteInfo>

+						<TheseSites>CN</TheseSites>

+					</SiteInfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ItemPrice" type="ns:AmountType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) The final price for the item, associated with

+					the currency identified by the currencyId attribute of the AmountType.

+					This value is returned only if the site is China (site ID 223).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="FeedbackID" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Unique identifier for the feedback entry.

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Unique identifier for the transaction about which

+					this feedback entry was left.

+					Returned for a detail level of ReturnAll (if the parent is returned).

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>10</MaxLength>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CommentReplaced" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+				 (out) Indicates whether eBay replaced the comment with a message

+				 that the comment was removed.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ResponseReplaced" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+				 (out) Indicates whether eBay replaced the response with a message

+				 that the response was removed.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="FollowUpReplaced" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+				 (out) Indicates whether eBay replaced the follow-up with a message

+				 that the follow-up was removed.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetFeedback</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeedbackInfoType.xsd #####

+

+-->

+	<xs:complexType name="FeedbackInfoType">

+		<xs:annotation>

+			<xs:documentation>

+				Information used to add a feedback note for a user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CommentText" type="xs:string" minOccurs="0" >

+				<xs:annotation>

+					<xs:documentation>

+						Textual comment that explains, clarifies, or justifies the feedback

+						rating specified in CommentType. Still displayed if feedback is withdrawn.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>CompleteSale</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CommentType" type="ns:CommentTypeCodeType" minOccurs="0" >

+				<xs:annotation>

+					<xs:documentation>

+						Rating of the feedback being left (e.g., Positive).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>CompleteSale</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TargetUser" type="ns:UserIDType" minOccurs="0" >

+				<xs:annotation>

+					<xs:documentation>

+						Recipient user for whom the feedback is being left.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>CompleteSale</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>FeedbackLeft</Context>

+							<Context>FeedbackReceived</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeedbackPeriodArrayType.xsd #####

+

+-->

+	<xs:complexType name="FeedbackPeriodArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+					Container for a set of feedback statistics. Contains zero one or

+					multiple FeedbackPeriod objects. Output only, for the summary

+					feedback data returned by GetFeedback.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FeedbackPeriod" type="ns:FeedbackPeriodType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Contains one feedback statistic giving length of the period being reported

+						(e.g. last 7 days prior to the call), and total number of feedback entries

+						(of the type given by the container, e.g. positive feedback) submitted during

+						the indicated period. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeedbackPeriodType.xsd #####

+

+-->

+	<xs:complexType name="FeedbackPeriodType">

+		<xs:annotation>

+			<xs:documentation> 

+					Contains the data for one type of feedback for one predefined time

+					period. Parent FeedbackPeriodArrayType object indicates the type of

+					feedback counted: positive, neutral, negative, or total. Output only,

+					in the summary feedback data returned by GetFeedback.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="PeriodInDays" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Indicates the time period for the feedback count. Returns a value indicating

+						the number of days prior to the call for which feedbacks of the particular

+						type are counted. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Count" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Count of the feedbacks received by the user for the time period prior to the

+						call indicated in PeriodInDays. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeedbackRatingStarCodeList.xsd #####

+

+-->

+	<xs:simpleType name="FeedbackRatingStarCodeType">

+		<xs:annotation>

+			<xs:documentation>

+					 FeedbackRatingStarCodeType - Type declaration to be used by other

+					 schema. The color of a feedback score star visually denotes the

+					 range in which the member's summary feedback score falls. The score

+					 is the net positive feedback minus the net negative feedback left

+					 for the member.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+								(out) No graphic displayed, feedback score 0-9.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Yellow">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Yellow Star, feedback score 10-49.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Blue">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Blue Star, feedback score 50-99.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Turquoise">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Turquoise Star, feedback score 100-499.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Purple">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Purple Star, feedback score 500-999.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Red">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Red Star, feedback score 1,000-4,999

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Green">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Green Star, feedback score 5,000-9,999.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="YellowShooting">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Yellow Shooting Star, feedback score 10,000-24,999.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TurquoiseShooting">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Turquoise Shooting Star, feedback score 25,000-49,999.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PurpleShooting">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Purple Shooting Star, feedback score 50,000-99,999.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RedShooting">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Red Shooting Star, feedback score 100,000 and above.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+								(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeedbackResponseCodeList.xsd #####

+

+-->

+	<xs:simpleType name="FeedbackResponseCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Types of feedback responses.				

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Reply">

+				<xs:annotation>

+					<xs:documentation>

+						A reply to feedback left by another user.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FollowUp">

+				<xs:annotation>

+					<xs:documentation>

+						A follow-up to a feedback comment left for another user.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeedbackSummaryType.xsd #####

+

+-->

+	<xs:complexType name="FeedbackSummaryType">

+		<xs:annotation>

+			<xs:documentation>

+          Specifies all feedback summary information (except Score). Contains

+          FeedbackPeriodArrayType objects that each convey feedback counts for

+          positive, negative, neutral, and total feedback counts - for various

+          time periods each. Also conveys counts of bid retractions for the

+          predefined time periods.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BidRetractionFeedbackPeriodArray" type="ns:FeedbackPeriodArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Bid retractions count, for multiple predefined time periods preceding the call. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NegativeFeedbackPeriodArray" type="ns:FeedbackPeriodArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Negative feedback entries count, for multiple predefined time periods preceding

+            the call. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NeutralFeedbackPeriodArray" type="ns:FeedbackPeriodArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Neutral feedback entries count, for multiple predefined time periods preceding

+            the call. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PositiveFeedbackPeriodArray" type="ns:FeedbackPeriodArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Positive feedback entries count, for multiple predefined time periods preceding

+            the call. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalFeedbackPeriodArray" type="ns:FeedbackPeriodArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Total feedback score, for multiple predefined time periods preceding the call. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NeutralCommentCountFromSuspendedUsers" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Number of neutral comments received from suspended users. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UniqueNegativeFeedbackCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Number of unique negative comments. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UniquePositiveFeedbackCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Number of unique positive comments. Returned if no detail level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FeesType.xsd #####

+

+-->

+	<xs:complexType name="FeesType">

+		<xs:annotation>

+			<xs:documentation>

+          Identifies a set of one or more fees that a member pays to eBay (or

+          an eBay company). Instances of this type can hold one or more fees.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Fee" type="ns:FeeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+            Contains the data for one fee (such as name and amount).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>AddSecondChanceItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<CallName>VerifyAddSecondChanceItem</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FinanceOfferArrayType.xsd #####

+

+-->

+	<xs:complexType name="FinanceOfferArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				A set of financing offers: promotional offers that allow

+				a buyer to purchase items on credit.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FinanceOffer" type="ns:FinanceOfferType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A financing offer.

+					</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetFinanceOffers</CallName>

+								<Returned>Conditionally</Returned>

+								<DetailLevels>ReturnAll</DetailLevels>

+							</CallInfo>

+						</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FinanceOfferType.xsd #####

+

+-->

+	<xs:complexType name="FinanceOfferType">

+		<xs:annotation>

+			<xs:documentation>

+				A promotional offer that allow the buyer to purchase items on credit.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FinanceOfferID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The unique ID associated with a particular financing

+						offer. This value is used in other calls such as AddItem to indicate that an item has

+						a particular financing offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerTerms" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Text that the buyer sees describing the details of the financing offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerTerms" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Text that the seller sees describing the details of the financing offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StartDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Date on which the offer first becomes active.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LastModifiedDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The date the offer was last modified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The minimum amount for an item to which the offer applies.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RateFactor" type="xs:double">

+				<xs:annotation>

+					<xs:documentation>

+						Interest charges associated with the finance offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Priority" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+						The priority of the financing offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetFinanceOffers</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FlatRateInsuranceRangeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="FlatRateInsuranceRangeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Flat Rate Insurance Ranges

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="FlatRateInsuranceRange1">

+				<xs:annotation>

+					<xs:documentation>

+						Range from 0.01 to 9.99

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FlatRateInsuranceRange2">

+				<xs:annotation>

+					<xs:documentation>

+						Range from 10.00 to 49.99

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FlatRateInsuranceRange3">

+				<xs:annotation>

+					<xs:documentation>

+						Range from 50.00 to 99.99

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FlatRateInsuranceRange4">

+				<xs:annotation>

+					<xs:documentation>

+						Range from 100.00 to 199.99

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FlatRateInsuranceRange5">

+				<xs:annotation>

+					<xs:documentation>

+						Range from 200.00 to 299.99

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FlatRateInsuranceRange6">

+				<xs:annotation>

+					<xs:documentation>

+						Range from 300.00 to more

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						 Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/FlatRateInsuranceRangeCostType.xsd #####

+

+-->

+	<xs:complexType name="FlatRateInsuranceRangeCostType">

+		<xs:annotation>

+			<xs:documentation>

+				Insurance Cost for Item Price Range

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FlatRateInsuranceRange" type="ns:FlatRateInsuranceRangeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The price range for the shipment for which the insurance cost is being specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InsuranceCost" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The cost of insurance for the specified price range.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FlatShippingPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="FlatShippingPreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AmountPerAdditionalItem" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If the user specifies ChargeAmountForEachAdditionalItem for

+						FlatShippingRateOption, then this value is used to specify how much to charge

+						for each additional item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeductionAmountPerAdditionalItem" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If the user specifies DeductAmountFromEachAdditionalItem for

+						FlatShippingRateOption, then this value is used to specify how much to deduct

+						for each additional item shipped.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FlatRateInsuranceRangeCost" type="ns:FlatRateInsuranceRangeCostType" minOccurs="0" maxOccurs="6">

+				<xs:annotation>

+					<xs:documentation>

+						For the given range, specifies the cost of insurance. If the InsuranceOption

+						is either Optional or Required, then 6 instances of this field must be

+						specifies, one for each cost range.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FlatShippingRateOption" type="ns:FlatShippingRateOptionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies how the user wants flat-rate shipping to be calculated.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InsuranceOption" type="ns:InsuranceOptionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Whether the seller offers shipping insurance and, if

+						so, whether the insurance is optional or required. Flat and

+						calculated shipping.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/FlatShippingRateOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="FlatShippingRateOptionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Flat Shipping Rate Options

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ChargeAmountForEachAdditionalItem">

+				<xs:annotation>

+					<xs:documentation>

+						Charge highest shipping cost for the first item and 

+						X amount for each 

+						additional item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DeductAmountFromEachAdditionalItem">

+				<xs:annotation>

+					<xs:documentation>

+						Charge highest shipping cost for the first item and deduct X amount from the 

+						shipping cost of each additional item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShipAdditionalItemsFree">

+				<xs:annotation>

+					<xs:documentation>

+						Charge highest shipping cost for the first item and ship each additional item free.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/GallerySortFilterCodeList.xsd #####

+

+-->

+	<xs:simpleType name="GallerySortFilterCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies how cross-promoted items with gallery images 

+			should be displayed.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ShowAnyItems">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Show any items, in no particular order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShowItemsWithGalleryImagesFirst">

+				<xs:annotation>

+					<xs:documentation> 

+					(in/out) Show items with gallery images first, before

+					other items.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShowOnlyItemsWithGalleryImages">

+				<xs:annotation>

+					<xs:documentation> 

+					(in/out) Show only items with gallery images.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation> 

+					(out) Reserved for internal or future use. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/GalleryTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="GalleryTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				GalleryTypeCodeType - Indicates whether listing images are

+				included in the search results (in both Picture Gallery and

+				List Views) and, if so, which image listing enhancements apply

+				to them. Items that have pictures but do not have image listing

+				enhancements display a generic photo image in search results.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing image is not included in the search results

+						(in either Picture Gallery or List Views), and no other

+						image listing enhancements apply. Items that have pictures

+						but do not have image listing enhancements display a generic

+						photo image in search results.

+						&lt;br&gt;&lt;br&gt;

+						Mainly useful for RelistItem use cases when you want to

+						remove an existing gallery setting. However, not all image

+						listing enhancements can be removed on revise or relist.

+						&lt;br&gt;&lt;br&gt;

+						Note that specifying None is not necessarily the same as

+						omitting GalleryType from a request. For example, specifying

+						other item properties may cause the listing to be

+						included in the search results Gallery by default if

+						GalleryType is not specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Featured">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing is highlighted and included at the top of

+						search results.

+						&lt;br&gt;&lt;br&gt;

+						When "Featured" is included in an item listing, the listing

+						also automatically gets the Gallery and Gallery Plus

+						functionality. "Gallery" and "Plus" do not need to be

+						specified separately in the listing. Passing "Featured",

+						"Plus", and "Gallery" in the same request will return an

+						error.

+						&lt;br&gt;&lt;br&gt;

+						For eBay Motors (SiteId 100), this may also feature certain items on the eBay Motors home page.

+						&lt;br&gt;&lt;br&gt;

+						Not applicable to eBay Stores Inventory listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Gallery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing image is included in the search results (in

+						both Picture Gallery and List Views). Items that have

+						pictures but do not have the Gallery feature will have a

+						generic photo image shown in search results.

+						&lt;br&gt;&lt;br&gt;

+						Some listing enhancements (for example, "Featured" and

+						"Plus") automatically include the Gallery functionality, so

+						"Gallery" does not need to be specified separately in the

+						listing. Passing "Featured", "Plus", and "Gallery" in the

+						same request will return an error.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Plus">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing image has Gallery Plus funtionality. That

+						is, listing includes a Gallery Plus icon that, when moused

+						over or clicked, displays a large (400 px x 400 px) preview

+						image of the item. Clicking the image

+						displays the View Item page for that listing.

+						&lt;br&gt;&lt;br&gt;

+						Listing images that are originally smaller than 400 px x 400 px are centered in the preview frame. Images that are originally larger than 400 px x 400 px are scaled down to 400 px on their longest side (maintaining their original aspect ratio).

+						&lt;br&gt;&lt;br&gt;

+						Note that the Gallery Plus feature requires that the image

+						be hosted with the eBay Picture Service (EPS). One EPS image

+						is included at no cost with the Gallery Plus feature.

+						&lt;br&gt;&lt;br&gt;

+						When "Plus" is included in an item listing, the listing

+						also automatically gets the Gallery functionality. "Gallery"

+						does not need to be specified separately in the listing.

+						Passing "Featured", "Plus", and "Gallery" in the same

+						request will return an error.

+						&lt;br&gt;&lt;br&gt;

+						Not applicable to eBay Stores Inventory listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/GeneralPaymentMethodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="GeneralPaymentMethodCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           GeneralPaymentMethodCodeType - Type declaration to be used by other

+           schema. This code identifies the general types of payment means,

+           e.g., used by payment service provider applications.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Custom Code.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Echeck">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Electronic check.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ACH">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) ACH.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Creditcard">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Credit-card.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalBalance">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Pay balance.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/GetAllBiddersModeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="GetAllBiddersModeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies which bidder information to return.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ViewAll">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns all bidders for an ended or still-active 

+						listing. It may be used by any user.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EndedListing">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns all non-winning bidders for ended 

+						listings only. It may be used only by a seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SecondChanceEligibleEndedListing">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Returns all non-winning bidders for an ended listing 

+						who have not yet received a Second Chance Offer and noted 

+						interest in receiving a Second Chance Offer. It may be used 

+						only by a seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/GetRecommendationsRequestContainerType.xsd #####

+

+-->

+	<xs:complexType name="GetRecommendationsRequestContainerType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies the data for a single item and configures the recommendation engines to use

+				when processing the item with GetItemRecommendations.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingFlow" type="ns:ListingFlowCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The listing flow for which the seller is seeking Listing Analyzer recommendations.

+						Not applicable to results from other recommendation engines

+						(i.e., the Suggested Attributes engine or the Product Pricing engine).

+						The default flow is AddItem.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Default>AddItem</Default>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains fields that describe the item for which you are seeking recommendations. &lt;br&gt;

+						&lt;br&gt;

+						If the Listing Analyzer recommendation engine is run, the applicable fields are

+						the same as the fields for AddItem, ReviseItem, or RelistItem

+						requests, as determined by the value specified in ListingFlow.

+						The item ID (Item.ItemID) is required when the ListingFlow is ReviseItem or RelistItem,

+						and it is not applicable when the ListingFlow is AddItem.

+						All other item fields are optional, even if listed as required for other calls.

+						However, as some tips are dependent on the properties of the item, and as some properties

+						have dependencies on other properties, we strongly recommend that you include all the item properties

+						that will be included in the AddItem, ReviseItem, or RelistItem request.

+						When the Listing Analyzer engine is run, tips will only be returned for fields that are specfied on the item.&lt;br&gt;

+						&lt;br&gt;

+						When the Product Pricing engine is run, pricing data will be based on the catalog product you specify.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalProductID" type="ns:ExternalProductIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						This field will be removed in a future

+						release. As of release 439, this field can still be passed in, but we

+						recommend that you update your applications to use the ExternalProductID

+						field defined on the item instead (i.e., Item.ExternalProductID). If you

+						specify both Item.ExternalProductID and this field in the same request,

+						eBay uses the value in Item.ExternalProductID and ignores the value in

+						this field. Causes eBay to list the item with Pre-filled Item Information

+						based on an ISBN value, UPC value, EAN value, ticket keywords, or eBay

+						catalog product ID, plus  other meta-data that you specify.

+						Only applicable when the value of ListingFlow is AddItem. See

+						Item.ExternalProductID for more information and validation rules.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ModifiedFields" type="ns:ModifiedFieldType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Applicable when the ListingFlow is ReviseItem or RelistItem.

+						Array of item properties that are being changed.

+						In release 439 and later, ModifiedFields is no longer required to revise

+						field values, but it is still supported for backward compatibility.

+						See the Developer's Guide for rules on adding, modifying, and removing

+						values when revising or relisting items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RecommendationEngine" type="ns:RecommendationEngineCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A recommendation engine to run. If no engines are specified, all available

+						recommendation engines will run. Some engines require additional fields,

+						such as Item.PrimaryCategory.CategoryID, to be specified.

+						If the ProductPricing engine is specified but Item.ProductListingDetails is not specified,

+						no Product Pricing engine results are returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Query" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						One or more keywords to search for when using the Suggested Attributes engine.

+						Required when SuggestedAttributes is specified as the recommendation engine

+						(including when no recommendation engines are specified). Only the listing title

+						is searched. The words "and" and "or" are treated like any other word.

+						Blank searches are not allowed (and result in a warning).

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>350 (characters)</MaxLength>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CorrelationID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique key to identify the response that matches this recommendation request container.

+						Use this key to distinguish between responses when multiple

+						recommendation containers are specified (i.e., for batch requests).

+						You define the key. To be useful, each correlation ID should be unique within

+						the same call. That is, define a different correlation ID for each recommendation

+						request container. (eBay does not validate the uniqueness of these IDs.)

+						If specified, the same correlation ID will be returned in the corresponding

+						recommendation response (or error response).

+						We recommend that you use this when retrieving recommendations for multiple items at once.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeletedField" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the name of the field to remove from a listing.

+						Applicable when the ListingFlow is ReviseItem or RelistItem.

+						See the Developer's Guide for rules on removing values when revising or

+						relisting items. DeletedField accepts the following values for removing

+						fields: item.pictureDetails.pictureURL, item.pictureDetails.galleryURL,

+						item.listingDesigner.themeID, item.listingDesigner.layoutID,

+						item.payPalEmailAddress, item.proximitySearchDetails.postalCode,

+						item.shippingDetails.paymentInstructions, and item.SKU. When the ListingFlow

+						is RelistItem, the following values for DeletedField are also allowed:

+						item.charity, item.secondaryCategory, and item.subTitle.

+						DeletedField is case sensitive. The request can contain zero, one, or many

+						instances of DeletedField.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/GetRecommendationsResponseContainerType.xsd #####

+

+-->

+	<xs:complexType name="GetRecommendationsResponseContainerType">

+		<xs:annotation>

+			<xs:documentation>

+Returns recommended changes or opportunities for improvement 

+related to listing data that was passed in a GetItemRecommendations request.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingAnalyzerRecommendations" type="ns:ListingAnalyzerRecommendationsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Contains tips returned from the Listing Analyzer recommendation engine, 

+            if this engine was specified in the request (or if no engine was specified).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SIFFTASRecommendations" type="ns:SIFFTASRecommendationsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+             Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PricingRecommendations" type="ns:PricingRecommendationsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Contains pricing data returned from the Product Pricing engine, 

+            if this engine was specified in the request (or if no engine was specified).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeRecommendations" type="ns:AttributeRecommendationsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains attribute suggestions returned from the Suggested Attributes engine, 

+						if this engine was specified in the request.

+						The results include suggested attributes and values based on the primary category 

+						and a string you specify in the Query field. Suggestions may only be returned when the 

+						Suggested Attributes engine is specified alone. If you request recommendations by using 

+						multiple engines, suggested attribute data might not be returned. If attributes are returned 

+						with multiple values, the values are returned in order of rank (i.e., the value that best meets 

+						eBay's recommendation criteria is returned first). 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductRecommendations" type="ns:ProductRecommendationsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains zero or more product titles and IDs returned from the Suggested Attributes engine, 

+						if this engine was specified in the request (or if no engine was specified).

+						If applicable, use one of the suggested product IDs to list the item with Pre-filled Item Information. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CorrelationID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+             Unique key to distinguish between recommendations for each item. 

+             Matches a correlation ID you defined in the request, if any.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/GiftServicesCodeList.xsd #####

+

+-->

+	<xs:simpleType name="GiftServicesCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Each code identifies an optional service that the seller is offering if the buyer

+				chooses to purchase the item as a gift. Not applicable for eBay Store Inventory

+				listings.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="GiftExpressShipping">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller is offering to ship the item via

+						an express shipping method as explained in the item description.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GiftShipToRecipient">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller is offering to ship to the gift recipient

+						(instead of to the buyer) after payment clears.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GiftWrap">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller is offering to wrap the item (and optionally include a

+						card) as explained in the item description.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/GranularityLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="GranularityLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Specifies a predefined subset of fields to return.

+The predefined set of fields can vary for different calls.

+Only applicable to certain calls (see request types that include

+a GranularityLevel property). For calls that support this filter, 

+see the eBay Web Services guide for a list of the output fields that are 

+returned for each level.

+Only one level can be specified at a time.

+For GetSellerList, use DetailLevel or GranularityLevel in a given request, but not both.

+For GetSellerList, if GranularityLevel is specified, DetailLevel is ignored.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Coarse">

+				<xs:annotation>

+					<xs:documentation>

+					(in) For each record in the response, retrieves less data than Medium.

+					See the eBay Web Services guide for a list of the output fields 

+					that are returned when this level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Fine">

+				<xs:annotation>

+					<xs:documentation>

+					For each record in the response, retrieves more data than Medium.

+					See the eBay Web Services guide for a list of the output fields 

+					that are returned when this level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Medium">

+				<xs:annotation>

+					<xs:documentation>

+					For each record in the response, retrieves more data than 

+					Coarse and less data than Fine.

+					See the eBay Web Services guide for a list of the output fields 

+					that are returned when this level is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/HitCounterCodeList.xsd #####

+

+-->

+	<xs:simpleType name="HitCounterCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			HitCounterCodeType - Type declaration to be used by other schema.

+			Indicates whether a hit counter is used for the item's listing page

+			and, if so, what type.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NoHitCounter">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) No hit counter. The number of page views will not be available.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HonestyStyle">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A basic style hit counter (US only). Non-US sites will return errors if they use HonestyStyle as input, and should use BasicStyle instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<SiteInfo>

+							<TheseSites>US</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GreenLED">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A green LED, computer-style hit counter (US only). Non-US sites will return errors if they use GreenLED as input, and should use RetroStyle instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<SiteInfo>

+							<TheseSites>US</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Hidden">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A hidden hit counter (US only). The number of page views will only be available to

+						the item's seller. For faster "View Item" page loads, use HiddenStyle.

+					</xs:documentation>

+					<xs:appinfo>

+						<SiteInfo>

+							<TheseSites>US</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BasicStyle">

+				<xs:annotation>

+					<xs:documentation>

+							(in/out) A basic style hit counter.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RetroStyle">

+				<xs:annotation>

+					<xs:documentation>

+						 (in/out) A retro, computer-style hit counter.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HiddenStyle">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A hidden hit counter. The number of page views will only be available to

+						the item's seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+							(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/HomePageFeaturedEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="HomePageFeaturedEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines whether Home Page Featured is available on the site.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/InsuranceOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="InsuranceOptionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The seller's requirements regarding whether the buyer pays

+				for shipping insurance.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Optional">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller offers the buyer the choice of paying

+						for shipping insurance or not.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Required">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller requires that the buyer pay for

+						shipping insurance.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotOffered">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller does not offer shipping insurance to the buyer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IncludedInShippingHandling">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller is not charging separately for shipping

+						insurance costs; any insurance is already included in the

+						base shipping cost.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotOfferedOnSite">

+				<xs:annotation>

+					<xs:documentation>

+            (in/out) Shipping insurance is not offered as a separate option on the site

+						where the item is listed. (Some shipping services, such as

+						DE_InsuredExpressOrCourier, include insurance as part of the service.) If

+						another insurance option is specified in the listing request and the site does

+						not support shipping insurance as a separate option, eBay will reset the

+						insurance option to this value. At the time of this writing, this option is

+						only meaningful for the eBay Germany, Austria, and Switzerland sites.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/InsuranceSelectedCodeList.xsd #####

+

+-->

+	<xs:simpleType name="InsuranceSelectedCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The insurance selected by the buyer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NotOffered">

+				<xs:annotation>

+					<xs:documentation>

+						Shipping insurance was not offered.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OfferedNotSelected">

+				<xs:annotation>

+					<xs:documentation>

+						Shipping insurance was offered but not selected.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OfferedSelected">

+				<xs:annotation>

+					<xs:documentation>

+						Shipping insurance was offered and selected.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Required">

+				<xs:annotation>

+					<xs:documentation>

+						Shipping insurance was required.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IncludedInShippingHandling">

+				<xs:annotation>

+					<xs:documentation>

+						Shipping insurance was included in Shipping and Handling fee.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/InternationalShippingServiceOptionsType.xsd #####

+

+-->

+	<xs:complexType name="InternationalShippingServiceOptionsType">

+		<xs:annotation>

+			<xs:documentation>

+        Shipping costs and options related to an international shipping service. When used

+				as input, if one is provided, at least one domestic ShippingService must be

+				provided. This type does not exist before compatibility level 383.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ShippingService" type="xs:token" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) An international shipping service offered for shipping the item (for

+						example, UPS Ground). For a list of valid values that you can cache for future

+						use, call GeteBayDetails with DetailName set to ShippingServiceDetails. For

+						flat and calculated shipping.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceCost" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The meaning of this element depends on the call and on whether flat

+						or calculated shipping has been selected. (For example, it could be the cost

+						to ship a single item, the cost to ship all items, or the cost to ship just

+						the first of many items, with ShippingServiceAdditionalCost accounting for the

+						rest.) When returned by GetItemShipping, it includes the packaging and

+						handling cost. For flat and calculated shipping.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<SeeLink>

+							<Title>Getting Shipping Cost Information</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShippingGettingCosts</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceAdditionalCost" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Cost of shipping each additional item beyond the first

+						item. Should be zero for single-item listings. Default value is

+						0.00. For flat shipping only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServicePriority" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller-preferred presentation order relative to other

+						service options. Valid values are: 1, 2 and 3 (first, second

+						and third choices). For flat and calculated shipping.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShipToLocation" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						An international location or region to which the item may be

+						shipped via this particular shipping service. Associated with

+						the shipping service by the seller. Use GeteBayDetails to

+						determine which locations are valid per site. These values

+						are string equivalents of values found in

+						ShippingRegionCodeType and CountryCodeType. For the AddItem family

+						of calls, this field is required if any international shipping service

+						has been specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemArrayType.xsd #####

+

+-->

+	<xs:complexType name="ItemArrayType">

+		<xs:annotation>

+			<xs:documentation>

+			Container for a list of items. Can contain zero, one, or multiple

+			ItemType objects, each of which conveys the data for one item listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Item" type="ns:ItemType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					Contains the data properties that define one item listing.

+					GetSellerEvents and GetSellerList only return items if any are available for the seller

+					within the time window specified in the request.&lt;br&gt;

+					&lt;br&gt;

+					Some optional fields are only returned if the seller defined them for the item.

+					Some fields are only returned under particular conditions specified in the individual

+					field descriptions. For example, a buyer's contact information might only be returned 

+					if the member who is making the request (as identified in eBayAuthToken) has a 

+					transactional relationship with that buyer. &lt;br&gt;

+					&lt;br&gt;

+					For calls that support detail levels, the set of fields 

+					returned is also controlled by the value of DetailLevel in the request.

+					For some calls, other parameters in the request can also control the data returned for each item.

+					For example, GranularityLevel controls the fields to return for each item in the GetSellerList response.

+					&lt;br&gt;

+					&lt;br&gt;

+					For GetSearchResultsExpress, ItemDetails controls the fields to return for each item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+							<!-- Using separate CallInfo due to detail levels. -->

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemFormatSortFilterCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ItemFormatSortFilterCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			  Specifies that you want to display items based

+			  on selling format, such as Buy It Now or Store items.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ShowAnyItems">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Show any items, in no particular order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShowItemsWithBINFirst">

+				<xs:annotation>

+					<xs:documentation> 

+					(in/out) Show items with a Buy It Now price first.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShowOnlyItemsWithBIN">

+				<xs:annotation>

+					<xs:documentation> 

+					(in/out) Show only items with a Buy It Now price.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShowOnlyStoreItems">

+				<xs:annotation>

+					<xs:documentation> 

+					(in/out) Show only store inventory items.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation> 

+					(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemIDType.xsd #####

+

+-->

+	<xs:simpleType name="ItemIDType">

+		<xs:annotation>

+			<xs:documentation>

+				Type that represents the unique identifier for a single

+				item listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemListCustomizationType.xsd #####

+

+-->

+	<xs:complexType name="ItemListCustomizationType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines how a list of items should be returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Include" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returns the list using the default settings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingType" type="ns:ListingTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the listing type of items in the returned list.

+						Valid for ActiveList.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>ActiveList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Sort" type="ns:ItemSortTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies how the items returned should be sorted.

+						Valid for WatchList, BidList, WonList, LostList,

+						ScheduledList, ActiveList, UnsoldList, and GetItemsAwaitingFeedback.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DurationInDays" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the time period during which an item was

+						won or lost. Similar to the Period drop-down menu

+						in the My eBay user interface. Valid for WonList, LostList, SoldList,

+						UnsoldList, BuyingReminders, and SellingReminders. 

+					</xs:documentation>

+					<xs:appinfo>

+						<Min>0</Min>

+						<Max>60</Max>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+							<Context>LostList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="IncludeNotes" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether to include Item.PrivateNotes and Item.eBayNotes

+						in the response. Valid for WatchList, BidList, WonList, LostList,

+						ScheduledList, ActiveList, SoldList, and UnsoldList.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies how to create virtual pages in the returned list.

+						Valid for BidList, WonList, LostList, ScheduledList, ActiveList, SoldList, UnsoldList,

+						and GetItemsAwaitingFeedback. Default for EntriesPerPage with GetMyeBayBuying is 200.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemLocationCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ItemLocationCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           ItemLocationCodeType - Type declaration to be used by other schema.

+           Use with Country Code argument in GetSearchResults.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ItemAvailableIn">

+				<xs:annotation>

+					<xs:documentation>

+                Items available to the specified country.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemLocatedIn">

+				<xs:annotation>

+					<xs:documentation> 

+                Items located in the specified country.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemSortFilterCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ItemSortFilterCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies how items should be sorted.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="EndingLast">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Sort items by ending time, with items ending last first.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EndingSoonest">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Sort items by ending time, with items ending soonest first.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HighestPrice">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Sort items by price, with the highest price first.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LowestPrice">

+				<xs:annotation>

+					<xs:documentation> 

+					(in/out) Sort items by price, with the lowest price first.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NewlyListed">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Sort items by listing time, with newly listed items first.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RandomlySelected">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Sort items in a randomly selected order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation> 

+					(out) Reserved for internal or future use. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemSortTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ItemSortTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				(in) Indicates the field and direction (ascending or

+				descending) by which to sort a returned list of items.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ItemID">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by Item ID (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>LostList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Price">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by price (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StartPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by start price (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>LostList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Title">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by item title (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BidCount">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by number of bids on the item (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>LostList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Quantity">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by quantity (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StartTime">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by listing start time (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>LostList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EndTime">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by listing end time (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerUserID">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the seller's user ID, in alphabetical order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>LostList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TimeLeft">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the time left for the item's listing,

+						in ascending order: active items, good-til-cancelled items,

+						and completed items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ListingDuration">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by listing duration (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ListingType">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by listing type (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CurrentPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by current price (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>LostList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReservePrice">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by reserve price (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MaxBid">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by maximum bid price (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>LostList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BidderCount">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by number of bidders (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HighBidderUserID">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the user ID of the highest bidder (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>LostList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerUserID">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the user ID of the buyer (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerPostalCode">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the buyer's postal code (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerEmail">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the buyer's email address, in alphabetical order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerEmail">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the seller's email address, in alphabetical order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TotalPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by total price (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WatchCount">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the number of items being watched (ascending). The WatchCount of an item is the number of watches that buyers have placed on an item using their eBay accounts.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BestOfferCount">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the number of best offers (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QuestionCount">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the number of questions (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingServiceCost">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the cost indicated for shipping (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BestOfferList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WatchList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeedbackReceived">

+				<xs:annotation>

+					<xs:documentation>

+							(in) Sort by type of feedback received, positive, negative, or neutral.

+							In ascending order - negative, neutral, positive.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeedbackLeft">

+				<xs:annotation>

+					<xs:documentation>

+							(in) Sort by type of feedback received, positive, negative, or neutral.

+							In ascending order - negative, neutral, positive.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UserID">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by user ID, in alphabetical order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QuantitySold">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the number of items sold (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BestOffer">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QuantityAvailable">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the number of items available (ascending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QuantityPurchased">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the number of items purchased (ascending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WonPlatform">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the platform on which the item was won (eBay items last).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SoldPlatform">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sort by the platform on which the item was sold (eBay items last).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>SoldList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ListingDurationDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the duration of the listing (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ListingTypeDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the listing type (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CurrentPriceDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the current price of the listed item (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReservePriceDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the listing's reserve price (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MaxBidDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the highest bid on the item (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BidderCountDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by number of bidders (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HighBidderUserIDDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the user ID of the highest bidder (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerUserIDDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the user ID of the buyer, in reserve

+					alphabetical order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerPostalCodeDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the buyer's postal code, in descending

+						order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerEmailDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the buyer's email address, in

+						reverse alphabetical order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerEmailDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the seller's email address,

+						in reverse alphabetical order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TotalPriceDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the total price of the order, (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WatchCountDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by watch count (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QuestionCountDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by number of questions (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingServiceCostDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the cost of shipping (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeedbackReceivedDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by type of feedback received, positive, negative, or neutral.

+						In descending order - positive, neutral, negative.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeedbackLeftDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by type of feedback received, positive, negative, or neutral.

+						In descending order - positive, neutral, negative.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UserIDDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by user ID, in descending order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QuantitySoldDescending"/>

+			<xs:enumeration value="BestOfferCountDescending"/>

+			<xs:enumeration value="QuantityAvailableDescending"/>

+			<xs:enumeration value="QuantityPurchasedDescending"/>

+			<xs:enumeration value="BestOfferDescending"/>

+			<xs:enumeration value="ItemIDDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by Item ID (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PriceDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by price (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StartPriceDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by start price (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TitleDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by item title (descending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BidCountDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by number of bids on the item (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="QuantityDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the quantity of items sold (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StartTimeDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by listing start time (descending).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EndTimeDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by listing end time (descending).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerUserIDDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by seller user ID, in reverse alphabetical order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TimeLeftDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by time left on the listing, in descending

+						order: completed items, good-til-cancelled items,

+						and active items.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WonPlatformDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the platform on which the item was won (ebay Express items last).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SoldPlatformDescending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sort by the platform on which the item was sold (ebay Express items last).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>SoldList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemTotalsType.xsd #####

+

+-->

+	<xs:complexType name="ItemTotalsType">

+	<xs:annotation>

+		<xs:documentation>

+			Details about items involved in the summary for the specified time period.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="TotalQuantity" type="xs:long" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Number of items involved in the summary.

+				</xs:documentation>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="TotalValue" type="ns:AmountType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Total value associated with the items in this summary.

+				</xs:documentation>

+			</xs:annotation>

+		</xs:element>

+	</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemTransactionIDArrayType.xsd #####

+

+-->

+	<xs:complexType name="ItemTransactionIDArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Container of ItemTransactionIDs.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ItemTransactionID" type="ns:ItemTransactionIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						An ItemID-TransactionID container.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemTransactionIDType.xsd #####

+

+-->

+	<xs:complexType name="ItemTransactionIDType">

+		<xs:annotation>

+			<xs:documentation>

+				A container for item and transaction IDs.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The ID of an item.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The ID of a transaction.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemType.xsd #####

+

+-->

+	<xs:complexType name="ItemType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the data defining one item. A seller populates an object of

+				this type at listing time with the definition of a new item. A seller

+				also uses an object of this type to re-list or revise an item. Calls

+				that retrieve item data (such as the GetSellerList call) return an object of

+				this type, filled with the item's data. Some fields are applicable both

+				to eBay listings and Half.com listings. Some fields are only applicable to eBay listings,

+				and others are only applicable to Half.com listings.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ApplicationData" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returns custom, application-specific data associated with the item.

+						The data you specify is stored by eBay with the item for your own reference,

+						but it is not used by eBay in any way. Use ApplicationData to store

+						special information for yourself, such as a part number.

+						For a SKU in an eBay.com listing, use the SKU element instead.

+						ApplicationData is not applicable to Half.com. For Half.com listings,

+						use SellerInventoryID instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>32</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeSetArray" type="ns:AttributeSetArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Item Specifics (such as new or used condition) to include in a listing.

+						Carries one or more instances of AttributeSet in a list. For Item Specifics in

+						general, an item will be associated with no more than two full attribute sets

+						(one for the primary category and one for the secondary category). For some

+						international sites, an item can specify additional site-wide attribute sets.

+						Some categories (such as Event Tickets and US Real Estate) require Item

+						Specifics. See "Working with Attribute-Based Features" in the eBay Web

+						Services Guide for information on working with Item Specifics. Use

+						GetCategory2CS and GetAttributesCS to determine when attributes are required

+						for a category. Also see "Specifying an Item's Condition".&lt;br&gt;&lt;br&gt;

+						For a listing to be eligible for eBay Express, the item condition is required

+						in most cases. Some categories are exempt from this requirement. See "eBay

+						Express" in the eBay Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						When you revise a listing, if the listing has bids and ends within 12 hours,

+						you cannot change or add attributes. If the listing has bids but ends in more

+						than 12 hours, you cannot change existing attribute data, but you can add

+						attributes that were not previously specified. To delete all attributes when

+						you revise or relist, specify Item.AttributeSetArray in DeletedField and don't

+						pass AttributeSetArray in the request.&lt;br&gt;&lt;br&gt; For

+						AddLiveAuctionItem and ReviseLiveAuctionItem, specify a maximum of one

+						AttributeSet for Item Specifics that are associated with SecondaryCategory (a

+						US eBay site category), plus any number of additional AttributeSet properties

+						for site-wide attributes that are applicable to the US eBay

+						site.&lt;br&gt;&lt;br&gt; For GetCategoryListings, AttributeSetArray can

+						return the item condition (not other Item Specifics) for eBay

+						Germany.&lt;br&gt;&lt;br&gt; GetSearchResults can return Item Specifics when

+						the request either specifies IncludeCondition as true or specifies a product

+						finder search, and a detail level of ItemReturnAttributes or ReturnAll. If

+						IncludeCondition was true, AttributeSetArray may return the item condition

+						(e.g., New). If SearchRequest was used to perform a product finder search, the

+						list of attributes is limited to Item Specifics that would be included in the

+						summary search results on the Web site, if any. For example, event ticket

+						listings may return the venue name, section, and row. In some categories, no

+						summary attributes are returned in search results (even when the item is

+						listed with Item Specifics.) &lt;br&gt;&lt;br&gt; In GetItemRecommendations,

+						if you use the Suggested Attributes engine, the engine interprets attributes

+						you pass in as attributes that do NOT need recommendations (i.e., attributes

+						that the seller has already filled in as desired). The engine only returns

+						recommendations for attributes that you do not specify, and only for

+						attributes associated with the primary category.&lt;br&gt;&lt;br&gt; Not

+						applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeArray" type="ns:AttributeArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Used to specify the item condition. Only applicable to Half.com (not eBay listings).

+						You can revise this property for Half.com listings.

+						This does not use the same Attributes format as eBay's Item Specifics.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>ReviseItem</CallName>

+							<!-- Half.com does not support RelistItem. -->

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LookupAttributeArray" type="ns:LookupAttributeArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Use this as a shortcut for specifying the Item Condition attribute by name

+						instead of by ID. Only valid when using AddItem for items in Media categories

+						(Books, DVD and Movies, Music, and Video Game categories). You can pass either

+						AttributeSetArray or LookupAttributeArray, but you cannot pass both in the

+						same request. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ApplyShippingDiscount" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Multiple Item Shipping Discount. Seller specifies as input when listing,

+						re-listing, or revising an item to indicate whether a shipping discount is to

+						be applied when the buyer pays for the item in the checkout process and the

+						item's transaction is combined with other transactions into an order. Returned

+						with retrieved item data, indicating a shipping discount is applicable.&lt;br&gt;

+						&lt;br&gt;

+						Not returned by GetItem (see Item.ShippingDetails.ApplyShippingDiscount instead).&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<!-- N/A to GetItem -->

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AutoPay" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, the seller requests immediate payment for the item. If false or not

+						specified, immediate payment is not requested. (In responses, does not

+						indicate whether the item is actually still a candidate for purchase via

+						immediate payment.) Only applicable for items listed on PayPal-enabled sites

+						in categories that support immediate payment (see AutoPayEnabled in

+						GetCategories), when seller has a Premier or Business PayPal account (see

+						PayPalAccountType in Getuser). If true, the seller must also accept PayPal as

+						a payment method for the item (see Item.PaymentMethods). Required for

+						digitally delivered goods (see Item.DigitalDeliveryDetails). See the eBay Web

+						Services guide section on Immediate Payment for additional requirements and

+						dependencies. Also see the section on working with the eBay Motors site for

+						additional rules. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<Default>false</Default>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentDetails" type="ns:PaymentDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains data associated with eBay Motors payments (Durations for deposit and

+						full payments). Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BiddingDetails" type="ns:BiddingDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MotorsGermanySearchable" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Listing upgrade that features the item in eBay search results on the mobile.de

+						partner site. If true in listing requests and responses, the seller is

+						purchasing or has purchased cross-promotional placement on the mobile.de site.

+						See the eBay Web Services Guide for applicable categories, revise and relist

+						rules, and additional information on featuring vehicles on the Mobile.de Site.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerProtection" type="ns:BuyerProtectionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the status of the item's eligibility for the PayPal Buyer Protection

+						program. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyItNowPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For Chinese auction listings, Buy It Now allows a user to purchase the item at

+						a fixed price and end the auction immediately. eBay China also supports Buy It

+						Now for Dutch auction listings (see International Differences Overview in the

+						eBay Web Services guide). Use this field to add Buy It Now and specify the

+						amount a buyer would need to bid to take advantage of the Buy It Now feature.

+						&lt;br&gt;&lt;br&gt;

+						On the main eBay site, not applicable to fixed-price items

+						(ListingTypeCodeType type StoresFixedPrice or FixedPriceItem), AdFormat

+						listings, or Half.com listings. For fixed-price and Half.com listings, see

+						StartPrice instead. See the eBay Web Services Guide for validation rules when

+						revising US eBay Motors listings, including rules for lowering the Buy It Now

+						price of a Motors listing.&lt;br&gt;&lt;br&gt; On most sites, once a Chinese

+						auction has bids, the listing is no longer eligible for Buy It Now. However,

+						calls like GetItem and GetSearchResults still return the BuyItNowPrice that

+						the seller set for the listing. You can use Item.SellingStatus.BidCount to

+						determine whether an auction with Buy It Now has bids or not. With

+						GetSearchResults, you can examine the Item.SearchDetails.BuyItNowEnabled flag

+						to determine whether an auction is still a Buy It Now listing. With GetItem,

+						you can examine the Item.ListingDetails.BuyItNowAvailable flag to determine

+						whether a Dutch auction is still a Buy It Now listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>16</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CategoryMappingAllowed" type="xs:boolean" default="false" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Controls how eBay handles cases in which an ID specified in PrimaryCategory

+						and/or SecondaryCategory no longer exists in the current category structure:

+						If you pass a value of true in CategoryMappingAllowed, eBay will look up the

+						current ID that is mapped to the same category and use the new ID for the

+						listing (if any). The new ID will be returned in the response as CategoryID

+						(for the primary category) or Category2ID (for the secondary category). If

+						CategoryMappingAllowed is not set or contains a value of "false" (the

+						default), an error will be returned if a selected category ID no longer

+						exists. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Charity" type="ns:CharityType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Identifies a Giving Works listing and the benefiting nonprofit charity

+						organization selected by the charity seller, if any. If specified, the seller must

+						also accept PayPal as a payment method for the item (see Item.PaymentMethods).

+						Giving Works listings are not eligible for eBay Express. Not applicable to

+						Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<!-- N/A to ReviseItem -->

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Country" type="ns:CountryCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Two-letter ISO 3166 country code. In some calls, used with the Location field

+						to indicate the city and country where the item is located. Also applicable as

+						input to AddItem and related calls when you list items to Half.com (specify

+						US).

+						&lt;br&gt;

+						&lt;br&gt;

+						In GetSearchResultsExpress, only returned when ItemDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CrossPromotion" type="ns:CrossPromotionsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Container for cross-promoted items related to a specific item ID.

+						The items are either upsell or cross-sell, according to the promotion

+						method passed in the request.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Currency associated with the item's price information. 3-letter ISO 4217

+						currency code that corresponds to the site specified in the item-listing

+						request. Also applicable as input to AddItem and related calls when you list

+						items to Half.com (specify USD). You cannot modify a listing's currency when

+						you revise or relist an item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Description of the item. In listing requests, you can submit your description

+						using CDATA if you want to use HTML or XML-reserved characters in the

+						description. An error is returned if this contains malicious JavaScript

+						content. (For related eBay policy, see

+						http://pages.ebay.com/help/policies/listing-javascript.html.)

+						&lt;br&gt;&lt;br&gt;

+						The Description field is required for all listings, except certain listings

+						that include Pre-filled Item Information. (See "About the Pre- filled Item

+						Information API." in the eBay Web Services Guide.) Even if your application

+						does not support listings items with Pre-filled Item Information, you should

+						be aware that this also means GetItem, GetSellerList, and GetBidderList may

+						return some items with empty Description fields.

+						&lt;br&gt;&lt;br&gt;

+						If you embed pictures in the description (by using IMG tags) instead of using

+						PictureURL, but you want a camera icon to appear in search and listing pages,

+						specify the following null-image URL in PictureURL:

+						http://pics.ebay.com/aw/pics/dot_clear.gif. See "Including Pictures in an Item

+						Listing" in the eBay Web Services Guide.

+						&lt;br&gt;&lt;br&gt;

+						For eBay Live Auctions listings, JavaScript is not allowed.

+						&lt;br&gt;&lt;br&gt;

+						Not applicable to Half.com. (For Half.com, use AttributeArray.Attribute with

+						attributeLabel="Notes" to specify a brief description or note to the buyer.)

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>500000 (some sites may allow more, but the exact number may vary)</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Distance" type="ns:DistanceType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The distance used in a proximity search distance calculation.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FinanceOfferID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies a promotional offer that allow the buyer to purchase items on

+						credit. You can call GetFinanceOffers to retrieve the current set of valid

+						offers that can be specified for items. If specified, the seller must also

+						accept PayPal as a payment method for the item (see Item.PaymentMethods). Not

+						applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GiftIcon" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If set, a generic gift icon displays next the listing's title in search and

+						browse pages. GiftIcon must be set to be able to use GiftServices options.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GiftServices" type="ns:GiftServicesCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Optional gift services that the seller is offering if the buyer chooses to

+						purchase the item as a gift. Only returned if offered by the seller.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HitCounter" type="ns:HitCounterCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether an optional hit counter is displayed on the item's listing

+						page and, if so, what type. See HitCounterCodeType for specific values.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The ID that uniquely identifies the item listing. The ID is generated

+						by eBay after an item is listed. You cannot choose or revise this

+						value.&lt;br&gt;

+						&lt;br&gt;

+						Also applicable to Half.com. For Half.com, you can specify either ItemID or

+						SellerInventoryID in a ReviseItem request to uniquely identify the

+						listing.&lt;br&gt;

+						&lt;br&gt;

+						In GetItemRecommendations, the item ID is required when the value of

+						ListingFlow is ReviseItem or RelistItem, but it is not applicable when the

+						value of ListingFlow is AddItem.

+						&lt;br&gt;

+						&lt;br&gt;

+						In GetSearchResultsExpress, always returned when ItemArray.Item is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19. (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits.)</MaxLength>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<CallName>GetBestOffers</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>SecondChanceOffer</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>ScheduledList</Context>

+							<Context>Transaction</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingDetails" type="ns:ListingDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Various details about a listing, some of which are calculated or derived after

+						the item is listed. These include the start and end time, converted

+						(localized) prices, and certain flags that indicate whether the seller

+						specified fields whose values are not visible to the requesting user.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>SecondChanceOffer</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>ScheduledList</Context>

+							<Context>Transaction</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingDesigner" type="ns:ListingDesignerType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains the detail data for the Listing Designer theme and template (if either

+						are used), which can optionally be used to enhance the appearance of the

+						description area of an item's description. See ListingDesignerType for its

+						child elements.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingDuration" type="xs:token" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Describes the number of days the seller wants the listing to be active

+						(available for bidding/buying). The valid choice of values depends on the

+						listing type. The duration specifies the seller's initial intent at listing

+						time. If the listing ends early, the value of the listing duration does not

+						change. The end time for an auction is calculated by adding the duration to

+						the item's start time. When a listing's duration is changed, any related fees

+						(e.g., 10-day fee) may be debited or credited (as applicable). When you revise

+						a listing, the duration cannot be reduced if it will result in ending the

+						listing within 24 hours of the current date-time. You can change the value of

+						this field only if the listing has no bids (or no items have sold) and the

+						listing does not end within 12 hours. For a list of valid values that you can

+						cache for future use, call GetCategoryFeatures with DetailLevel set to

+						ReturnAll and look for ListingDuration results.

+						Also required to Half.com (but only specify GTC).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ScheduledList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingEnhancement" type="ns:ListingEnhancementsCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Describes listing upgrades that sellers can select for a fee, such as the

+						BoldTitle upgrade. Also includes feature packs for saving on listing upgrades.

+						See &lt;a href="http://pages.ebay.com/help/sell/ia/promoting_your_item.html"&gt;Listing Upgrades&lt;/a&gt;

+						in the eBay Web site online help. You cannot remove listing upgrades when you

+						revise a listing. &lt;br&gt;

+						&lt;br&gt;

+						For AddLiveAuctionItem and ReviseLiveAuctionItem, you can specify a maximum of

+						10 featured lot items per live auction catalog.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingType" type="ns:ListingTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the format of the listing the seller wants to use, such as

+						Chinese auction or fixed price. See Different Ways of Selling in the eBay online help:

+						http://pages.ebay.com/help/sell/ia/formats.html

+						Also see Listing Types in the eBay Web Services guide.

+						You cannot modify the listing type of an active listing.&lt;br&gt;

+						&lt;br&gt;

+						Optional for eBay.com listings (defaults to Chinese). Required for Half.com

+						listings (and the value must be Half). Required for Express format listings on

+						Express Germany (and the value must be Express). Eligible items listed in the

+						fixed price or Store Inventory format on the US or Germany site are also

+						included on eBay Express. See "eBay Express" in the eBay Web Services guide

+						for more information about listing on Express.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<!-- N/A to ReviseItem -->

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>ScheduledList</Context>

+							<Context>Transaction</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingSubtype" type="ns:ListingSubtypeEnum" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Location" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the geographical location of the item (along with Country). When you

+						revise a listing, you can add or change this value only if the listing has no

+						bids (or no items have sold) and it does not end within 12 hours. Also

+						applicable as input to AddItem and related calls when you list items to

+						Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>45</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LotSize" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A lot is a set of two or more similar items that must be purchased together in

+						a single transaction. A listing can have multiple lots (instead of multiple

+						items). When LotSize is specified, the listing price reflects the price of

+						each lot (not each item within the lot). In this case, Quantity indicates the

+						number of lots being listed, and LotSize indicates the number of items in each

+						lot. (If a listing has no lots, Quantity indicates the number of separate

+						items being listed.) Important: Lot items can be listed only in lot-enabled

+						categories. GetCategories returns LSD (lot size disabled) with a value of true

+						for categories that do not support lots.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NowAndNew" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true in listing requests and responses, the item is listed with Now and

+						New. Only applicable to Buy It Now, fixed-price, and Store Inventory listings

+						on certain eBay sites. See the eBay Web Services guide for details. In

+						requests that list items, only valid if the seller also specifies the item

+						condition (as new), predefined return policy attributes, a buy it now or fixed

+						price, and shipping costs. To remove Now and New from a listing, set the value

+						to false. If the listing has bids (or items have been sold) or the listing

+						ends within 12 hours, you cannot add or remove NowAndNew when you revise the

+						listing.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PartnerCode" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Not currently operational.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PartnerName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Not currently operational.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentMethods" type="ns:BuyerPaymentMethodCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Identifies the payment method (such as credit card or PayPal) the seller will

+						accept for the buyer to pay for the purchase of the item. &lt;br&gt;&lt;br&gt;

+						If you specify multiple PaymentMethods fields, the repeating fields must be

+						contiguous. For example, you can specify PayPalEmailAddress after a list of

+						repeating PaymentMethods fields, but not between them:&lt;br&gt;

+						&lt;br&gt;

+						&amp;lt;PaymentMethods&amp;gt;AmEx&amp;lt;/PaymentMethods&amp;gt;&lt;br&gt;

+						&amp;lt;PaymentMethods&amp;gt;PersonalCheck&amp;lt;/PaymentMethods&amp;gt;&lt;br&gt;

+						&amp;lt;PaymentMethods&amp;gt;PayPal&amp;lt;/PaymentMethods&amp;gt;&lt;br&gt;

+						&amp;lt;PayPalEmailAddress&amp;gt;mypaypalemail@ebay.com&amp;lt;/PayPalEmailAddress&amp;gt;&lt;br&gt;&lt;br&gt;

+						In general, if you separate repeating instances of a field, the results will

+						be unpredictable. This rule applies to all repeating fields

+						(maxOccurs="unbounded" or greater than 1) in the schema. See "Overview of the

+						Schema" in the eBay Web Services guide.&lt;br&gt;

+						&lt;br&gt;

+						A listing must have at least one valid payment method. When you revise or

+						relist an item and you specify a payment method that is invalid for the target

+						site, eBay ignores the invalid payment method, applies the other valid

+						changes, and returns a warning to indicate that the invalid payment method was

+						ignored. If multiple payment methods were invalid, the warning indicates that

+						they were all ignored. If you modify the listing so that it includes no valid

+						payment methods, an error is returned. This situation could occur when the

+						seller removes all valid payment methods or when all the payment methods

+						specified for the item are no longer valid on the target site.&lt;br&gt;

+						&lt;br&gt;

+						For a listing to be eligible for Express US, PayPal is a required payment

+						method. For Express Germany, Express format listings must include PayPal, but

+						fixed-price and Store Inventory listings do not require PayPal (as long as a

+						default PayPal account is specified in the seller's Express preferences). See

+						eBay Express information in the eBay Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						Payment methods are not applicable to eBay Real Estate ad format listings or Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<Title>Listing an Item</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ListingAnItem</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>(SetUserPreferences) SellerPaymentPreferences</Title>

+							<URL>io_SetUserPreferences.html#Request.SellerPaymentPreferences</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>Accept PayPal as a Payment Method</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExpressPaymentMethods</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>Overview of the XML API Schema</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SchemaOverview</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PayPalEmailAddress" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Valid PayPal email address for the PayPal account that the seller will use if

+						they offer PayPal as a payment method for the listing. eBay uses this to

+						identify the correct PayPal account when the buyer pays via PayPal during the

+						checkout process. (As a seller can have more than one PayPal account, you

+						cannot necessarily rely on PayPal account data returned from GetUser for

+						details about the account associated with the PayPal email address that the

+						seller specifies.)&lt;br&gt;

+						&lt;br&gt;

+						Required if seller has chosen PayPal as a payment method (PaymentMethods) for

+						the listing.&lt;br&gt;

+						&lt;br&gt;

+						For a listing to be eligible for Express US, the seller needs to use an email

+						address that is in good standing and that is associated with a PayPal Premier

+						or PayPal business account that is set to ship to unconfirmed addresses. For

+						Express Germany, PayPalEmailAddress must be specified for Express format

+						listings, but it is optional for fixed-price and Store Inventory listings (as

+						long as an eligible default PayPal account is specified in the seller's

+						Express preferences). If the specified PayPal account becomes ineligible for

+						eBay Express payments (because the seller blocked unconfirmed addresses or

+						some other change occurred), the items associated with that account may become

+						ineligible for Express and may no longer appear on Express.

+						See eBay Express information in the eBay Web Services Guide for more

+						information.&lt;br&gt;

+						&lt;br&gt;

+						For digital listings, the seller needs to use an email address that is

+						associated with a PayPal Premier or PayPal business account. &lt;br&gt;

+						&lt;br&gt;

+						To remove this value when you revise or relist an item, use DeletedField. When

+						you revise a listing, if the listing has bids (or items have been sold) or it

+						ends within 12 hours, you can add PayPalEmailAddress, but you cannot remove

+						it.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to eBay Motors listings. Also not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<Title>Listing an Item</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ListingAnItem</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>Accept PayPal as a Payment Method</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExpressPaymentMethods</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>(SetUserPreferences) SellerPaymentPreferences</Title>

+							<URL>io_SetUserPreferences.html#Request.SellerPaymentPreferences</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>(SetUserPreferences) ExpressPreferences.DefaultPayPalAccount</Title>

+							<URL>io_SetUserPreferences.html#Request.ExpressPreferences.DefaultPayPalAccount</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PrimaryCategory" type="ns:CategoryType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Category ID for the first (or only) category in which the item is listed (or

+						is to be listed in the case of new, as-yet unlisted items). Use calls like

+						GetCategories and GetCategoryFeatures to determine valid values for the site

+						on which you are listing (see the eBay Web Services Guide for information on

+						working with categories). Also see Item.CategoryMappingAllowed and

+						Item.CategoryBasedAttributesPrefill.&lt;br&gt;

+						&lt;br&gt;

+						Most eBay.com categories are also eligible for eBay Express. Categories not

+						covered by PayPal Buyer Protection are excluded. Also, certain categories that

+						do not support item condition may be excluded. See "eBay Express" in the eBay

+						Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						When revising a listing, you can change the primary category only if an item

+						has no bids (or no items have sold) and the listing does not end within 12

+						hours. If you change the listing category, any Item Specifics (attributes)

+						that were previously specified may be dropped from the listing if they aren't

+						valid for the new category. In that case, if you still want to include Item

+						Specifics, you need to specify attributes that are appropriate for the

+						category. See Item.AttributeSetArray.&lt;br&gt;

+						&lt;br&gt;

+						You cannot change the meta-categories for vehicles (i.e., you cannot change a

+						truck to a motorcycle), but you can change the leaf category (e.g., change one

+						motorcycle subcategory to another motorcycle subcategory). See the eBay Web

+						Services Guide for additional rules. International sites (such as the eBay

+						Germany site) have similar rules for revising vehicle categories. &lt;br&gt;

+						&lt;br&gt;

+						For eBay Live Auctions (e.g., in AddLiveAuctionItem), this is the eBay Live

+						Auctions site category in which to list the item. This can be different from

+						the category that is associated with the seller's catalog. See Specifying eBay

+						Live Auctions Categories in the eBay Web Services guide.&lt;br&gt;

+						&lt;br&gt;

+						For GetItemRecommendations, use this to control the category that will be

+						searched for recommendations. Specify the category in which the item will be

+						listed. See the eBay Web Services guide for differences in validation rules

+						depending on whether you are using the Listing Analyzer engine, Product

+						Pricing engine, or Suggested Attributes engine.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<Title>Categories</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=CategoryOverview</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>Specifying eBay Live Auctions Categories</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=LiveAuctionCategories</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PrivateListing" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, designates the listing as a private auction. The list of bidders on

+						private auctions is hidden when the active listing is viewed. Sellers may want

+						to use this option when they believe that potential bidders for a listing

+						would not want their User IDs disclosed to others. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductListingDetails" type="ns:ProductListingDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies stock product information to include in a listing. Only applicable

+						when listing items with Pre-filled Item Information. If the item's primary and

+						secondary category are both catalog-enabled, the product listing details must

+						be applicable to the primary category. If only one category is catalog-

+						enabled, the product listing details must be applicable to the catalog-enabled

+						category. Either Item.ExternalProductID or Item.ProductListingDetails can be

+						specified in an AddItem request, but not both. See the eBay Web Services Guide

+						for information on listing with Pre-filled Item Information.

+						&lt;br&gt;&lt;br&gt; If a listing includes Pre-filled Item Information and you

+						change a category, the rules for continuing to include Pre-filled Item

+						Information depend on whether or not the new category is mapped to a

+						characteristic set associated with the same product ID. When you revise a

+						listing, if it has bids or it ends within 12 hours, you cannot change the

+						product ID and you cannot remove existing product data. However, you can

+						change or add preferences such as IncludeStockPhotoURL,

+						UseStockPhotoURLAsGallery, and IncludePrefilledItemInformation. To delete all

+						catalog data when you revise or relist an item, specify

+						Item.ProductListingDetails in DeletedField and don't pass

+						ProductListingDetails in the request.&lt;br&gt;&lt;br&gt; For

+						GetItemRecommendations, see the eBay Web Services guide for differences in

+						validation rules when using the Product Pricing engine.&lt;br&gt;&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProximitySearchDetails" type="ns:ProximitySearchDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Proximity search information for the item. This response type is deprecated

+						and may be removed from the schema in a future release. Remove application

+						dependencies on this type. For item location, refer to Item.PostalCode

+						instead.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Quantity" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For AddItem and related calls, this is the number of items in the listing. For

+						new listings being defined, this is the initial number of items the seller

+						offers for sale. Even during a Dutch auction, where one of several items can

+						be purchased during the auction, this number does not change. Sellers need to

+						meet certain feedback requirements to specify a quantity greater than 1.

+						&lt;br&gt;&lt;br&gt;

+						When you revise a listing, you can add or change this value only if the

+						listing has no bids (or no items have sold) and it does not end within 12

+						hours. For auction items, a change in the auction's quantity could result in a

+						change in the auction type. For example, if the quantity is changed from 1 (a

+						Chinese auction) to 2, the auction is now a Dutch auction. This may impose new

+						requirements and fees on the seller. &lt;br&gt;&lt;br&gt; For GetSellerEvents

+						calls, Quantity is returned only for listings where item quantity is greater

+						than 1. Also applicable to Half.com (valid range 1 to 1000).

+						You can revise this field for Half.com listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>ScheduledList</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PrivateNotes" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Not supported as input in listing calls. Use SetUserNotes

+						instead&lt;br&gt;

+						&lt;br&gt;

+						A note a user makes on an item in their My eBay account.

+						The note is prefaced with the words My Note.

+						For eBay.com, only GetMyeBayBuying and GetMyeBaySelling (not GetItem)

+						return this field, and only if you pass IncludeNotes in the request.

+						Only visible to the user who created the note.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com (instead, use

+						Item.AttributeArray.Attribute.Value.ValueLiteral for Half.com notes.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<TagStatus>Obsolete</TagStatus>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RegionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						This field is used by the China site only. On all other sites, the use of

+						regions for locating items has been replaced by distance-based searching

+						and searches by location name. For sites that no longer support the use of

+						regions, use Item.PostalCode and Item.Location instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RelistLink" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Applicable only to re-listing an item. If true, creates a link in the item's

+						old listing for the item that points to the new relist page, which

+						accommodates users who might still look for the item under its old item ID.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReservePrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The lowest price at which the seller is willing to sell the item. (StartPrice

+						must be lower than ReservePrice.) Not all categories support reserve prices.

+						See GetCategories and "Determining Whether a Category Supports Reserve Prices"

+						in the eBay Web Services guide. In calls that retrieve item data, ReservePrice

+						only has a non-zero value for listings with a reserve price and where the user

+						requesting the item data is also the item's seller. Not applicable to fixed-

+						price items or ad format listings. For more information on reserve price

+						auctions, see

+						http://pages.ebay.com/help/sell/reserve.html. &lt;br&gt;&lt;br&gt;

+						You can remove the reserve price of a US eBay Motors listing if the category

+						allows it, the current reserve price has not been met, and the reserve price

+						is at least $2.00 more than the current high bid. In this case, if the item

+						has bids, the reserve price is set to $1.00 over the current high bid. The

+						next bid meets the reserve and wins.

+						See the Fees Overview on the eBay Web site (http://pages.ebay.com/help/sell/fees.html)

+						for information about fee credits that may be available when the reserve price

+						is removed for a Motors listing. See the eBay Web Services guide for

+						validation rules when revising US Motors listings.&lt;br&gt;&lt;br&gt;

+						For AddLiveAuctionItem and ReviseLiveAuctionItem, the seller needs to make

+						sure they specify the amount in the currency selected for the live auction

+						event. When you revise a Live Auction item, you can lower an existing reserve

+						price, but you cannot add a reserve price or remove an existing reserve price

+						if the item has absentee bids or ends in less than 12

+						hours.&lt;br&gt;&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>16</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>ScheduledList</Context>

+							<Context>SoldList</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReviseStatus" type="ns:ReviseStatusType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether an item has been revised since the listing became

+						active and, if so, which among a subset of properties have been changed

+						by the revision.

+						Output only.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ScheduleTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Allows a user to schedule a listing to start at the specified time in the

+						future. Specify the time (in GMT) that the item's listing is scheduled to be

+						active on eBay. Input only. For ReviseItem, you can modify this value if the

+						current schedule time is in the future. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SecondaryCategory" type="ns:CategoryType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						ID for second category in which the item is listed (also see

+						Item.PrimaryCategory). Listing an item in a second category is optional. Also

+						see Item.CategoryMappingAllowed and Item.CategoryBasedAttributesPrefill. Not

+						applicable to eBay China (site 223). Not applicable to Half.com. &lt;br&gt;

+						&lt;br&gt;

+						Most eBay.com categories are also eligible for eBay Express. Categories not

+						covered by PayPal Buyer Protection are excluded. Also, certain categories that

+						do not support item condition may be excluded. See "eBay Express" in the eBay

+						Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						When revising a listing, you can add, remove, or change the secondary category

+						only if the listing has no bids (or no items have sold) and it does not end

+						within 12 hours. If you change the secondary category, any corresponding Item

+						Specifics (attributes) that were previously specified may be dropped from the

+						listing if they aren't valid for the category. In that case, if you still want

+						to include Item Specifics, you need to specify attributes that are valid for

+						the category. See Item.AttributeSetArray.&lt;br&gt;

+						&lt;br&gt;

+						You cannot list US eBay Motors vehicles in two categories. However, you can

+						list Parts &amp; Accessories in two categories. Furthermore, as of June 2006,

+						you can list the same item in an eBay Motors Parts &amp; Accessories category

+						and in an eligible eBay category, as long as the primary category is

+						associated with the site on which you are listing. That is, the two categories

+						can be a mix of Motors Parts &amp; Accessories and eBay site categories. (Real

+						Estate, Mature Audience (adult), and Business &amp; Industrial categories are

+						not eligible for listing in two categories in this manner.) For example, if

+						you list on Motors, the primary category could be 6750 (eBay Motors &gt; Parts

+						&amp; Accessories &gt; Apparel &amp; Merchandise &gt; Motorcycle &gt; Jackets

+						&amp; Leathers), and the secondary category could be 57988 (eBay &gt;

+						Clothing, Shoes &gt; Accessories &gt; Men's Clothing &gt; Outerwear), If you

+						list on the main eBay site, the primary category could be 57988 and the

+						secondary category could be 6750. When you revise an item, you can change the

+						secondary category from a Motors Parts &amp; Accessories category to an eBay

+						category or vice versa if the listing has no bids (or no items have sold) and

+						it does not end within 12 hours. The Final Value Fee is based on the primary

+						category in which the item is listed.&lt;br&gt;

+						&lt;br&gt;

+						For eBay Live Auctions (e.g., AddLiveAuctionItem), this is the eBay US site

+						category in which to list the item. (This can be any eBay US category except

+						Motors or Real Estate categories.) Note that eBay Live Auctions does not

+						charge a fee to specify an eBay category (i.e., no List in Two Category fees).

+						See Specifying eBay Live Auctions Categories in the eBay Web Services guide.

+						In AddLiveAuctionItem, you need to specify SecondaryCategory if you are

+						including Item Specifics (AttributeSetArray). For eBay Live Auctions, you can

+						add SecondaryCategory when you revise the lot item, but you cannot change or

+						remove an existing secondary category if the item has absentee bids or it ends

+						in less than 12 hours.&lt;br&gt;

+						&lt;br&gt;

+						For GetItemRecommendataions, use this to control the category that will be

+						searched for recommendations. Specify the category in which the item will be

+						listed. See the eBay Web Services guide for differences in validation rules

+						depending on whether you are using the Listing Analyzer engine, Product

+						Pricing engine, or Suggested Attributes engine.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FreeAddedCategory" type="ns:CategoryType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						ID for a second category that eBay added as a free promotion. You cannot add this yourself.

+						Only returned if the item was listed in a single category and eBay added a free second category.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SiteHostedPicture" type="ns:SiteHostedPictureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Deprecated in the response with compatibility level 439 and higher.

+						PictureDetails returned instead. Applications should remove dependencies on

+						SiteHostedPicture: SiteHostedPicture contains the data for pictures associated

+						with an item, when those pictures are hosted on the eBay site (eBay Picture

+						Services). The similar element, VendorHostedPicture, contains the data for

+						pictures hosted somewhere other than on the eBay site. Both SiteHostedPicture

+						and VendorHostedPicture are being phased out and may be removed in a future

+						release. Applications should use PictureDetails instead. If SiteHostedPicture

+						or VendorHostedPicture are passed in with PictureDetails, PictureDetails will

+						take precedence.&lt;br&gt;&lt;br&gt;

+						For a listing to be eligible for eBay Express, it must include a picture,

+						gallery, or stock photo URL. Some categories are exempt from this requirement.

+						See "eBay Express" in the eBay Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<TagStatus>Deprecated</TagStatus>

+							<Context>BidList</Context>

+							<Context>SecondChanceOffer</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Seller" type="ns:UserType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Container for information about this listing's seller.

+						Not applicable to Half.com.

+						&lt;br&gt;

+						&lt;br&gt;

+						In GetSearchResultsExpress, only returned when ItemDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellingStatus" type="ns:SellingStatusType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Various details about the current status of the listing, such as the current

+						number of bids and the current high bidder. Not applicable to

+						Half.com.&lt;br&gt;

+						&lt;br&gt;

+						For GetSearchResultsExpress, this is always returned when ItemArray.Item is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>SoldList</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingOption" type="ns:ShippingOptionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates where the seller is willing to ship the item. Default is SiteOnly.

+						See ShippingOptionCodeType for specific values. If SitePlusRegions is

+						selected, when the item is listed, then at least one region must also be

+						specified (in ShippingRegions). Obsolete with compatibility level 383 and

+						higher. Use Item.ShipToLocations instead.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Obsolete</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingDetails" type="ns:ShippingDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The shipping-related details for an item or transaction, including flat and

+						calculated shipping costs and shipping insurance costs.&lt;br&gt;

+						&lt;br&gt;

+						For a listing to be eligible for eBay Express, shipping details are required

+						to support the eBay Express shopping cart. For flat shipping, this means the

+						shipping service and cost are required. For calculated shipping, all of the

+						usual parameters (weight, originating postal code, etc.) are required. See

+						"eBay Express" in the eBay Web Services Guide. In GetSearchResultsExpress,

+						always returned when ItemArray.Item is returned.

+						&lt;br&gt;

+						&lt;br&gt;

+						Shipping details are not applicable to Real Estate listings and Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ScheduledList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingRegions" type="ns:ShippingRegionCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the global regions to which the seller is willing to ship the

+						item(s). Only applicable if the seller specifies SitePlusRegions for the

+						shipping option (ShippingOptionCodeType). See ShippingRegionCodeType for

+						specific shipping regions values. Obsolete with compatibility level 373 and

+						higher. Use Item.ShipToLocations instead.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Obsolete</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTerms" type="ns:ShippingTermsCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates who pays the shipping costs for the item(s), the buyer or the seller.

+						Deprecated with compatibility level less than 309 and obsolete with

+						compatibility level 309 or higher.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<TagStatus>Obsolete</TagStatus>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShipToLocations" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						An international location or region to which the seller is willing to ship,

+						regardless of shipping service. The country of the listing site is added by

+						eBay. Use GeteBayDetails with a DetailName of ShippingLocationDetails to

+						determine which international locations are valid for the site. Omit

+						ShipToLocations if you want to ship only within the country of the listing

+						site. To state that you do not wish to ship at all, set ShipToLocations to

+						None. ReviseItem can add a ShipToLocation.

+						Applicable with compatibility level 373 and higher.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>length of longest name in ShippingRegionCodeType and CountryCodeType</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>ShipToLocation: Two Types, Two Meanings</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShipToLocation</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Site" type="ns:SiteCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The name of the site on which the item is listed. The listing site affects the

+						business logic and validation rules that are applied to the request, which in

+						turn affect the values that are returned in the response, as well as values

+						that appear on the eBay Web site. For example, the listing site can affect the

+						validation of Category in listing requests, international business seller

+						requirements, the values of converted (localized) prices in responses, the

+						item-related time stamps that are displayed on the eBay Web site, the

+						visibility of the item in some types of searches (e.g., GetCategoryListings),

+						and other information. In some cases (such as with listings on eBay Express),

+						the rules are determined by a combination of the site, the user's registration

+						address, and other information. You cannot change the site when you revise a

+						listing.&lt;br&gt;

+						&lt;br&gt;

+						When you specify Item.Site in AddItem, it must be consistent with the numeric

+						site ID that you specify in the request URL (for the SOAP API) or the X-EBAY-

+						API-SITEID header (for the XML API).

+						Not applicable to Half.com.

+						For eBay Live Auctions, pass a value of US.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<!-- N/A to ReviseItem -->

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>SecondChanceOffer</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StartPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The original price of the item at listing or re-listing time. If this

+						value changes when the item is revised, the new value becomes the original

+						price.

+						&lt;br&gt;&lt;br&gt;

+						For auction-type listings, competitive bidding starts at this value. Once at

+						least one bid has been placed, StartPrice remains the same but CurrentPrice is

+						incremented to the amount of each succeeding bid. If ReservePrice is also

+						specified, the value of StartPrice must be lower than the value of

+						ReservePrice.

+						&lt;br&gt;&lt;br&gt;

+						For fixed-price listings (FixedPriceItem), Store Inventory (StoresFixedPrice)

+						listings, and Express format listings, this is the constant price at which a

+						buyer may purchase the item.

+						&lt;br&gt;&lt;br&gt;

+						For a listing to be eligible for Express, the max start price is USD 10,000.00

+						for the US and EUR 10000 for Germany. (Additional price limits may be imposed

+						by the seller's PayPal account or the payment method used. Such limits cannot

+						be determined via the eBay API and are not covered in eBay's API

+						documentation, as they may vary for each user.)&lt;br&gt;

+						&lt;br&gt;

+						Also applicable to Half.com (valid range 0.75 to 9999.99). You can revise this

+						field for Half.com listings.

+						&lt;br&gt;

+						For eBay Live Auctions items, this is the amount at which absentee Internet

+						bidding for the item begins. Maximum length 16. Must be greater than zero. The

+						seller needs to make sure they specify the amount in the currency selected for

+						the live auction event.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>RelistItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>ScheduledList</Context>

+							<Context>SoldList</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Storefront" type="ns:StorefrontType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains information related to the item in the context of a seller's eBay

+						Store. Applicable for auction formats, Basic Fixed Price, and Store Inventory

+						format items listed by eBay Stores sellers.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SubTitle" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Subtitle to use in addition to the title. Provides more keywords when buyers

+						search in titles and descriptions. You cannot use HTML in the Subtitle. (HTML

+						characters will be interpreted literally as plain text.) If you pass any

+						value, this feature is applied (with applicable fees).&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to listings in US eBay Motors passenger vehicle, motorcycle,

+						and "other vehicle" categories or to listings in CA eBay Motors passenger

+						vehicle and motorcycle categories. (Other US and CA eBay Motors categories

+						support this field as of December 2005.) For eBay Motors categories that do

+						not support this field, use Item Specifics (AttributeSetArray) to specify the

+						vehicle subtitle.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.&lt;br&gt;

+						&lt;br&gt;

+						When you revise a item, you can add or change the subtitle, but you cannot

+						remove it.&lt;br&gt;

+						&lt;br&gt;

+						In GetSearchResultsExpress, only returned when ItemDetails is set to Fine

+						and a subtitle was specified for the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>55</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TimeLeft" type="xs:duration" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Time left before the listing ends.

+						The duration is represented in the ISO 8601 duration format (PnYnMnDTnHnMnS).

+						See Data Types in the eBay Web Services guide for information about this format.

+						For ended listings, the time left is PT0S (zero seconds).

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>SecondChanceOffer</Context>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Context>WatchList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Title" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						 Name of the item as it appears in the listing or the Gallery. Required for

+						 most items. Optional if you list in Books, Music, Movies, or Video Games

+						 categories and you use Pre-filled Item Information (as the title can be pre-

+						 filled based on the catalog product title).&lt;br&gt;

+						 &lt;br&gt;

+						 You cannot use HTML or JavaScript in the Title. (HTML characters will be

+						 interpreted literally as plain text.)&lt;br&gt;

+						 &lt;br&gt;

+						 For AddItem, not applicable to Half.com. For GetOrders, not returned from eBay.com,

+						 but a title from the Half.com catalog is returned from Half.com instead.&lt;br&gt;

+						 &lt;br&gt;

+						 You can add or change the value of this tag only if an item has no bids

+						 (or no items have sold) and the listing does not end for 12 hours.

+						 &lt;br&gt;

+						 &lt;br&gt;

+						 In GetSearchResultsExpress, always returned when ItemArray.Item is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>55</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>SecondChanceOffer</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>ScheduledList</Context>

+							<Context>SoldList</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UUID" type="ns:UUIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						We recommend that you use InvocationID instead of Item.UUID. InvocationID

+						provides more flexibility than UUID. Universally unique constraint tag. Use

+						UUID to ensure that you only list a particular item once, particularly if you

+						are listing many items at once. If you add an item and do not get a response,

+						resend the request with the same UUID. If the item was successfully listed the

+						first time, you will receive an error message for trying to use a UUID that

+						you have already used. The error will also include the item ID for the

+						duplicated item and a boolean value indicating whether the duplicate UUID was

+						sent by the same application. The UUID can only contain digits from 0-9 and

+						letters from A-F and must be 32 characters long. The UUID value must be unique

+						across all categories that are children of the same meta-category (i.e.,

+						within the hierarchy of each level-1 category). UUID is not applicable to

+						ReviseItem (because you are modifying an existing item, not creating a new

+						one.) Also applicable as input to AddItem and related calls when you list

+						items to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>32</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>RelistItem</CallName>

+							<!-- N/A to ReviseItem -->

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="VATDetails" type="ns:VATDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Container for eBay's Business User features. A business seller can choose to

+						offer an item exclusively to bidders and buyers that also represent businesses.

+						Only applicable when the item is listed in a B2B-enabled category (on a site

+						that supports B2B business features).

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="VendorHostedPicture" type="ns:VendorHostedPictureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Deprecated in the response with compatibility level 439 and higher.

+						PictureDetails returned instead. Applications should remove dependencies on

+						VendorHostedPicture: VendorHostedPicture contains the data for a picture

+						associated with an item, when that picture is hosted on a site of the seller's

+						choice (other than on the eBay site with eBay Picture Services). The similar

+						element, SiteHostedPicture, contains the data for pictures hosted on the eBay

+						site.  Both SiteHostedPicture and VendorHostedPicture are being phased out and

+						may be removed in a future release. Applications should use PictureDetails

+						instead. If SiteHostedPicture or VendorHostedPicture are passed in with

+						PictureDetails, PictureDetails will take precedence.&lt;br&gt;&lt;br&gt;

+						For a listing to be eligible for eBay Express, it must include a picture,

+						gallery, or stock photo URL. Some categories are exempt from this requirement.

+						See "eBay Express" in the eBay Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<Context>SecondChanceOffer</Context>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerVacationNote" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The seller is on vacation (as determined by the seller's store preferences) in

+						two cases: i.) the item is a Store Inventory item and the seller has chosen to

+						hide Store Inventory items while on vacation, and ii.) the seller has chosen

+						to add a message to listed items while on vacation.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WatchCount" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The number of watches placed on this item from buyers' My eBay accounts.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HitCount" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The number of page views for the item. This number is calculated by eBay and

+						cannot be set via the API. Returned if the hit counter type is BasicStyle,

+						RetroStyle, or HiddenStyle. For HiddenStyle, HitCount is returned only if the

+						requestor is the item's seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisableBuyerRequirements" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If false (or omitted): if BuyerRequirements is present, its requirements are

+						to be used; otherwise, any requirements specified in My eBay are to be used.

+						If true: no requirements are considered from any source (and if

+						BuyerRequirements is present, it is ignored).

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>false</Default>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerRequirements" type="ns:BuyerRequirementsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Container for buyer requirements. Individual buyer requirements cannot be

+						modified or added. The call needs to provide the entire set of buyer

+						requirements to modify or add any. This is only returned if the caller is the

+						seller. See also the eBay Web site help regarding

+						&lt;a target="_blank" href="http://pages.ebay.com/help/sell/buyer-requirements.html"&gt;Selecting

+						Buyer Requirements&lt;/a&gt;.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferDetails" type="ns:BestOfferDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Container for BestOffer properties associated with the item.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AnythingPoints" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether the seller is offering Anything Points for the item.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LiveAuctionDetails" type="ns:LiveAuctionDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Describes the live auction-specific details of a lot item.

+						Applicable to eBay Live Auctions only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocationDefaulted" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						True if eBay provided a central location as a result of the user

+						not specifying a location.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ThirdPartyCheckout" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether checkout for this is to be handled by a Third-Party Checkout

+						application. Only for authorized Third-Party Checkout applications. See

+						"Third-Party Checkout" in the main documentation.&lt;br&gt;

+						&lt;br&gt;

+						For a listing to be eligible to appear on eBay Express, you also need to agree

+						to use a Platform Notification (or transaction calls) instead of Third-Party

+						Checkout to process Express sales. To do this, specify

+						ThirdPartyCheckoutIntegration with a value of true.&lt;br&gt;

+						IMPORTANT: If you are not authorized to support Third Party Checkout and your

+						application is not the original listing application, never specify

+						ThirdPartyCheckout or ThirdPartyCheckoutIntegration in your request (even if

+						you revise a listing that already includes these flags). Otherwise, the

+						listing may be dropped from Express or you may get unexpected results. See

+						"eBay Express" in the eBay Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Third Party Checkout</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ThirdPartyCheckout</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UseTaxTable" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the seller's tax table is to be used when applying and

+						calculating taxes. If true, a tax table must exist for the seller, and the

+						following tags should not be used: SalesTaxState, SalesTaxPercent,

+						ShippingIncludedInTax.&lt;br&gt;

+						&lt;br&gt;

+						If the seller wants to charge sales tax for eBay Express sales, the seller

+						needs to create a tax table on eBay and use it for their listings. As eBay

+						Express payments are handled via a shopping cart, you will not be able to

+						calculate and add sales tax during your own checkout flow.

+						&lt;br&gt;&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<SeeLink>

+							<Title>eBay Express</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=eBayExpress</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>Enabling Multi-jurisdiction Sales Tax</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SalesTax</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GetItFast" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the seller has opted the listing into the Get

+						It Fast feature. If GetItFast is true and if at least one of

+						the domestic shipping services offered by the seller is an

+						expedited shipping service, every shipping service offered by

+						the seller is considered a Get It Fast service, and the seller

+						commits to delivering the item to the buyer-selected shipping

+						service within one day.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Enabling Multi-jurisdiction Sales Tax</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SalesTax</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerResponsibleForShipping" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Applicable for listings in vehicle categories on the US eBay Motors site and

+						eBay Canada site. (No business effect if specified for other categories or

+						sites, as the Web site will not display the information to buyers.) If true,

+						the buyer is responsible for vehicle pickup or shipping. If false, specify

+						vehicle shipping arrangements in the item description. Default is true. (The

+						description can also include vehicle shipping arrangements when this value is

+						true.) If the item has bids or ends within 12 hours, you cannot modify this

+						flag. Do not specify ShippingOption or ShippingDetails.ShippingServiceOptions

+						for vehicle listings.

+						&lt;br&gt;&lt;br&gt;

+						If true and the listing is on the US eBay Motors site, and you want the

+						listing to be visible on the eBay Canada site, set Item.ShipToLocations to CA.

+						If true and the listing is on the eBay Canada site , and you want your listing

+						to be visible on the US eBay Motors site, set Item.ShipToLocations to US. Not

+						applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LimitedWarrantyEligible" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Applicable to US eBay Motors vehicle listings only. If false, the vehicle will

+						not be considered for a limited warranty by eBay. If your application lists

+						Motors vehicles, you must provide the seller with an opportunity to indicate

+						whether the vehicle has not been modified and is not a special type (e.g.,

+						Corvette ZR1). If LimitedWarrantyEligible is passed in, it means the

+						application has presented the seller with checkboxes to indicate this

+						information. If true, the seller has verified that the vehicle has not been

+						modified and is not a special type. If false, the seller has verified that

+						vehicle has been modified or it is a special type. Passing a value of true

+						does not guarantee that eBay will offer a limited warranty. It only makes the

+						listing eligible for consideration. See the eBay Web Services Guide for more

+						information about Motors vehicle listings.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="eBayNotes" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returns a note from eBay displayed below items in the user's My eBay account.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QuestionCount" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the number of questions buyers have posted about the item.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Relisted" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether or not the item is a relisted item. This value is determined by eBay

+						and cannot be set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QuantityAvailable" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies how many of a certain item are available.

+						Not applicable to Half.com.&lt;br&gt;

+						&lt;br&gt;

+						For GetSearchResultsExpress, only returned when ItemDetails is set to Fine.&lt;br&gt;

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<Context>WatchList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SKU" type="ns:SKUType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						This element is a SKU (stock-keeping unit) defined by a seller. The seller can

+						use a SKU to identify one item or use the same SKU for multiple items.

+						Preferable to ApplicationData for SKUs and inventory tracking. Different

+						sellers can use the same SKUs. This element can be used by sellers to track

+						complex flows of products and information. This element preserves a SKU,

+						enabling a seller to obtain it before and after a transaction is created. To

+						remove a SKU when you revise or relist an item, use DeletedField. Not

+						applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>50</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CategoryBasedAttributesPrefill" type="xs:boolean" default="false" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Allows eBay to auto-fill some of a listing's Item Specifics (attribute) values

+						based on the listing's category (or categories). Auto-filling attributes based

+						on a category is not the same as using Pre-filled Item Information based on a

+						catalog product (see ProductListingDetails). If true, also specify

+						Item.CategoryMappingAllowed with a value of true. (Alternatively, you can

+						auto-fill attributes on the client side by using mapping meta-data returned by

+						GetAttributesCS.) See the eBay Web Services guide for more information.

+						Ignored if the category does not support auto-filling attributes.&lt;br&gt;

+						&lt;br&gt;

+						If you also pass in attributes in AttributeSetArray, your values will override

+						any auto-filled values for the same attributes. Once you have overridden the

+						value of an auto-filled attribute for a given listing, eBay will not auto-fill

+						it on subsequent ReviseItem requests (even if you remove the overridden

+						value). &lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchDetails" type="ns:SearchDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Container for values that indicate whether a listing uses the Buy It Now feature,

+						whether a listing is no more than one day old, and whether a listing has an image

+						associated with it. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PostalCode" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Postal code of the place where the item is located. This value is used for

+						proximity searches.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTermsInDescription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether details about shipping costs and

+						arrangements are specified in the item description.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalProductID" type="ns:ExternalProductIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Causes eBay to list the item with Pre-filled Item Information based on an ISBN

+						value, UPC value, EAN value, ticket keywords, or eBay catalog product ID, plus

+						other meta-data that you specify. Only applicable for certain categories. See

+						the eBay Web Services Guide for information on the categories that currently

+						support usage of this field. If you are listing in a media category and the

+						primary and secondary category are both catalog-enabled, the external ID must

+						be for a product associated with the primary category. If only one category is

+						catalog-enabled, this external ID must be for a product that is associated

+						with the catalog-enabled category. If you are listing an event ticket, the

+						external ID must be associated with the primary category.&lt;br&gt;&lt;br&gt;

+						Either Item.ExternalProductID or Item.ProductListingDetails can be specified

+						in an AddItem (or VerifyAddItem) request. Do not specify both.

+						ExternalProductID is not applicable when revising and relisting items (use

+						Item.ProductListingDetails instead). If you use Item.ExternalProductID instead

+						of Item.ProductListingDetails, eBay sets IncludeStockPhotoURL and

+						UseStockPhotoAsGallery to true automatically.&lt;br&gt;

+						&lt;br&gt;

+						The stock photo URL satisfies the eBay Express picture requirement. See "eBay

+						Express" in the eBay Web Services Guide.&lt;br&gt;&lt;br&gt;

+						In GetItemRecommendations, only applicable when the value of ListingFlow is

+						AddItem. Not applicable when the recommendation engine is ProductPricing.

+						&lt;br&gt;&lt;br&gt;

+						Optional for eBay.com listings.

+						Not applicable as input to AddItem for Half.com listings. (Use ExternalProductID

+						at the root level of the AddItem request instead for Half.com listings.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerInventoryID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique identifier for a Half.com item. Must be an alphanumeric value (with no

+						symbols) that is unique across the seller's active (unsold) inventory on

+						Half.com. For Half.com, you can specify either ItemID or SellerInventoryID in

+						a ReviseItem request to uniquely identify the listing. Only returned from

+						GetOrders if the seller specified a value when the item was listed. You cannot

+						revise this field. Not applicable to eBay.com listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>100</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PictureDetails" type="ns:PictureDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains the data for a picture associated with an item. Replaces the

+						deprecated SiteHostedPicture and VendorHostedPicture in the response with

+						compatibility level 439 or greater. With the future deprecation of

+						SiteHostedPicture and VendorHostedPicture in the input, applications should

+						use PictureDetails in the input as well. If SiteHostedPicture or

+						VendorHostedPicture are passed in with PictureDetails, PictureDetails will

+						take precedence.&lt;br&gt;&lt;br&gt;

+						For a listing to be eligible for eBay Express, it must include a picture,

+						gallery, or stock photo URL. Some categories are exempt from this requirement.

+						See "eBay Express" in the eBay Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<Context>SecondChanceOffer</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DigitalDeliveryDetails" type="ns:DigitalDeliveryDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates that the listing is a digitally delivered item. For listing calls,

+						specifies information about the file and how it is delivered. By specifying

+						the digital delivery fields, the seller agrees that they are the legal rights

+						owner of this digital item or they have been authorized by the rights owner to

+						sell this digital item.&lt;br&gt;

+						&lt;br&gt;

+						Transaction-retrieval calls like GetSellerTransactions return an

+						(intentionally) empty DigitalDeliveryDetails node for digital listing

+						purchases. (If the transaction is not for a digital listing, the node is not

+						returned.)&lt;br&gt;

+						&lt;br&gt;

+						If you are listing in two categories and you specify this option, both

+						categories must support digital listings. Call GetCategoryFeatures to

+						determine which categories (if any) support digitally delivered goods. If a

+						category supports this feature, it does not mean you are required to use this

+						feature. (It only means that this feature is an option in that category.)

+						&lt;br&gt;&lt;br&gt;

+						If specified, the item must be sold at a fixed price (basic fixed price or

+						Store Inventory), and the seller must require PayPal as the only payment

+						method. The seller also needs to use a verified PayPal Premier or Business

+						acount. On some sites, the seller must require Immediate Payment (see

+						Item.AutoPay) unless the seller is using Third-Party Checkout. Some sites may

+						require the seller to be VAT registered (see the eBay online help for

+						requirements). For digital items, the Item Condition attribute (Item

+						Specifics) is not applicable in AttributeSetArray, AttributeArray, or

+						LookupAttributeArray. If you pass in the item condition, it will be dropped.

+						Fields that specify the item location, shipping details, payment methods other

+						than PayPal, gift options, Now and New, and Best Offer are not applicable to

+						digitally delivered items.&lt;br&gt;

+						&lt;br&gt;

+						Digital listings are not eligible for eBay Express.&lt;br&gt;

+						&lt;br&gt;

+						When you revise or relist an item, if you change the listing format (e.g., to

+						Chinese auction) or select a category that does not support this feature, eBay

+						will remove the digital delivery option from the listing. As a result, you may

+						need to specify different or additional information in the listing details. To

+						remove DigitalDeliveryDetails when you modify a listing, use DeletedField. If

+						any quantity of a multiple quantity digital delivery listing has been sold,

+						the seller cannot remove the digital delivery option, edit the system

+						requirements, or alter the delivery method information during the Revise flow.

+						&lt;br&gt;&lt;br&gt;

+						Not supported for Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DispatchTimeMax" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the maximum number of business days the seller

+						commits to for shipping an item to domestic buyers after receiving a

+						cleared payment. The seller sets this to an integer value (1, 2, 3,

+						4, 5, 10, 15, or 20) corresponding to the number of days. To add

+						Get It Fast to listings, in addition to setting GetItFast to true,

+						DispatchTimeMax must be set to 1 and the seller must specify at least

+						one qualifying expedited shipping service.

+						GetItem returns DispatchTimeMax only when shipping service options are

+						specified for the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SkypeEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies that Skype-related information is included with an item listing,

+						including, for example, Skype Voice. Skype-related information provides

+						buttons that enable potential buyers to contact sellers through Skype.

+						Information about Skype is available at www.Skype.com. If all of the

+						prerequisites for adding Skype buttons to listings are met (see the eBay Web

+						Services Guide), you can make communication through Skype available in

+						listings. SkypeEnabled must be true if SkypeID and SkypeContactOption are

+						specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SkypeID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The Skype name of the seller. Requires that SkypeEnabled is set to true.

+						Available if the seller has a Skype account and has linked it (on the eBay

+						site) with his or her eBay account.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SkypeOption" type="ns:SkypeOptionCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Deprecated; use SkypeContactOption instead. If you use SkypeOption when adding

+						an item, it is mapped to the corresponding values of SkypeContactOption.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SkypeContactOption" type="ns:SkypeContactOptionCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the Skype contact options supported. Requires that SkypeEnabled is

+						set to true. Available if the seller has a Skype account and has linked it (on

+						the eBay site) with his or her eBay account.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates, when true, that an item is available by Best Offer.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalListing" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates, when true, that an item is available locally.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ThirdPartyCheckoutIntegration" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Only authorized Third-Party Checkout providers can use this flag.

+						&lt;br&gt;&lt;br&gt;

+						IMPORTANT: If you are not authorized to support Third Party Checkout and your

+						application is not the original listing application, never specify

+						ThirdPartyCheckout or ThirdPartyCheckoutIntegration in your request (even if

+						you revise a listing that already includes these flags). Otherwise, the

+						listing may be dropped from Express or you may get unexpected

+						results.&lt;br&gt;

+						&lt;br&gt;

+						A Third-Party Checkout provider uses this flag in two ways:&lt;br&gt;

+						&lt;br&gt;

+						1) Set this flag to true to specify that you consent to use the Checkout

+						notification (or calls like GetSellerTransactions and GetItemTransactions) to

+						obtain data about eBay Express sales from the item, and to confirm that buyers

+						will use the Express shopping cart for checkout processing without being

+						redirected to your Third-Party Checkout site. If ThirdPartyCheckout is true,

+						the ThirdPartyCheckoutIntegration field must also be true if you want an

+						eligible listing to be included on eBay Express (and the Third Party Checkout

+						checkout flow will be then be ignored for Express purchases). See "eBay

+						Express" in the eBay Web Services Guide.&lt;br&gt;

+						&lt;br&gt;

+						In other words, assuming the seller and item meet all other eligibility

+						requirements for Express, the seller opts into Express,

+						and the seller (optionally) subscribes to the Checkout notification:&lt;br&gt;

+						- If ThirdPartyCheckout == true

+						   and ThirdPartyCheckoutIntegration == true,

+						   the item will be listed on Express

+						   and Checkout notifications will be sent.&lt;br&gt;

+						- If ThirdPartyCheckout == true

+						   and ThirdPartyCheckoutIntegration == omitted or false,

+						   the item will be disqualified for Express

+						   and no Checkout notification will be sent.&lt;br&gt;

+						- If ThirdPartyCheckout == omitted or false,

+						   and ThirdPartyCheckoutIntegration == true,

+						   the item will be listed on Express

+						   and Checkout notifications will be sent.&lt;br&gt;

+						- If ThirdPartyCheckout == omitted or false,

+						  and ThirdPartyCheckoutIntegration == omitted or false,

+						  the item will be listed on Express

+						   but no Checkout notifications will be sent.&lt;br&gt;

+						   &lt;br&gt;

+						2) If you subscribe to the Checkout notification, set this flag to true to

+						enable Checkout notifications for a particular listing. These notifications

+						can be sent for any transaction created from the listing, regardless of

+						whether the listing is included on Express and regardless of the value of

+						ThirdPartyCheckout. Checkout notifications are not sent if

+						ThirdPartyCheckoutIntegration is false.&lt;br&gt;

+						&lt;br&gt;

+						Returned only if true for a listing.&lt;br&gt;

+						&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Default>false</Default>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Listing Criteria for eBay Express</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExpressListingCriteria</URL>

+						</SeeLink>

+						<SeeLink>

+							<Title>Third Party Checkout and eBay Express</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ThirdPartyCheckoutIntegration</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressOptOut" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Preference to opt out an individual fixed price or Store Inventory item from

+						eBay Express. Specify as input when listing an item to indicate that the item

+						should not be listed on eBay Express. By default, an item is opted in unless

+						the seller has configured their user preferences to opt all items out of

+						Express (see GetUserPreferences). So, if the seller and item qualify for eBay

+						Express, the item will be made available on the Express site unless you set

+						this flag to true to opt out.&lt;br&gt;&lt;br&gt; ExpressOptOut has no effect

+						if the seller opts out in their user preferences. Also, you cannot set

+						ExpressOptOut to false to force an ineligible item to be included on

+						Express.&lt;br&gt;&lt;br&gt; Coming soon: For Express Germany, this value is

+						ignored for Express format listings. That is, sellers cannot opt out of

+						Express when listing in the Express-only format.

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<Title>Listing Criteria for eBay Express</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExpressListingCriteria</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Default>false</Default>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingCheckoutRedirectPreference" type="ns:ListingCheckoutRedirectPreferenceType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						ProStores listing level preferences regarding the store to which

+						checkout should be redirected for the listing if ThirdPartyCheckout

+						is true.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressDetails" type="ns:ExpressDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Additional item details that only appear in eBay Express search results.

+						In GetSearchResultsExpress, only returned when ItemDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element  name="SellerContactDetails" type="ns:AddressType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalQuestionCount" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProxyItem" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ItemTypeFilterCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ItemTypeFilterCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				ItemTypeFilterCodeType - Type declaration to be used by other

+				schema. This code identifies the ItemTypeFilters (e.g., for

+				GetSearchResults requests) used to filter items returned by the type

+				of listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AuctionItemsOnly">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Only retrieve listings eligible for competitive bidding at auction.

+						That is, only retrieve listings for which ListingType is Chinese, Dutch, or Live

+						(regardless of the BuyItNowEnabled value).

+						If a listing has a ListingType of any of the following,

+						it is not retrieved: StoresFixedPrice, FixedPriceItem, and AdType.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FixedPricedItem">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Whether StoresFixedPrice items are retrieved depends on the site default.

+						Only retrieves listings that can be purchased at a fixed price.

+						That is, only retrieves listings for which ListingType is StoresFixedPrice or FixedPriceItemStore.

+						Also retrieves Chinese and Dutch auction listings for which BuyItNowEnabled is true.

+						Does not retrieve listings for which ListingType is AdType or Live,

+						and does not retrieve auction listings for which BuyItNowEnabled is false.  

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AllItems">

+				<xs:annotation>

+					<xs:documentation>

+						(in) It is recommended that you use AllItemTypes instead of AllItems.

+						Return all listing types (the default for GetSearchResults).

+						Whether StoresFixedPrice items are retrieved depends on the site default.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoreInventoryOnly">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Only retrieve listings for which ListingType is StoresFixedPrice.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FixedPriceExcludeStoreInventory">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Exclude listings that have ListingType set to StoresFixedPrice.

+						Exclude listings that have ListingType set to AdType or Live.

+						Exclude auction listings in which BuyItNowEnabled is false.  

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExcludeStoreInventory">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Exclude listings that have ListingType set to StoresFixedPrice. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AllItemTypes">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Retrieve listings whether or not ListingType is set to StoresFixedPrice; include auction items.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AllFixedPriceItemTypes">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Retrieves fixed-price items.

+						Whether StoresFixedPrice items are retrieved does not depend on the site default.

+						Retrieves listings whether or not ListingType is set to StoresFixedPrice.

+						Does not retrieve listings for which ListingType is AdType or Live.

+						Does not retrieve auction listings for which BuyItNowEnabled is false.  

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ClassifiedItemsOnly">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/LabelType.xsd #####

+

+-->

+	<xs:complexType name="LabelType">

+<xs:annotation>

+	<xs:documentation>

+		Applicable when working with Pre-filled Item Information (Catalogs) functionality.

+		The label to display when presenting the attribute to a user.

+		Not necessarily the same as the attribute's label as defined in the

+		characteristic set (i.e., the label could be overridden by the catalog).

+	</xs:documentation>

+</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The label to display when presenting the attribute to a user (e.g., "Title" or "Manufacturer"). 

+            The label is defined for the product, and is therefore not necessarily the same as the label 

+						that is defined in the characteristic set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchPage</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="visible" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+         If true, the label name is visible on the eBay site. If false, the label is not visible. 

+         Usage of this information is optional. You are not required to display labels in 

+         the same manner as eBay. 

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetProductFamilyMembers</CallName>

+						<CallName>GetProductSearchPage</CallName>

+						<CallName>GetProductSearchResults</CallName>

+						<DetailLevels>ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingAnalyzerRecommendationsType.xsd #####

+

+-->

+	<xs:complexType name="ListingAnalyzerRecommendationsType">

+		<xs:annotation>

+			<xs:documentation> 

+	         (out) Contains results returned from the Listing Analyzer recommendation engine.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingTipArray" type="ns:ListingTipArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (out) A collection of tips returned from the Listing Analyzer recommendation engine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingCheckoutRedirectPreferenceType.xsd #####

+

+-->

+	<xs:complexType name="ListingCheckoutRedirectPreferenceType">

+		<xs:annotation>

+			<xs:documentation>

+				ProStores listing level preferences.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ProStoresStoreName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The name of the store, if Item.ThirdPartyCheckout is true.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingDesignerType.xsd #####

+

+-->

+	<xs:complexType name="ListingDesignerType">

+		<xs:annotation>

+			<xs:documentation>

+        Contains the IDs for the Listing Designer theme and template (if either are

+				used) associated with an item, which can optionally be used to enhance the

+				appearance of the item's description. Cannot be used with Photo Display. With

+				compatibility levels 439 or higher, specified in PictureDetails.PhotoDisplay.

+				With lower compatibility levels, specified in SiteHostedPictureType.PhotoDisplay

+        or VendorHostedPictureType.PhotoDisplay.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="LayoutID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Identifies the Layout template to use when displaying the

+            item's description. When relisting an item, LayoutID

+            is removed from the listing if you specify ListingDesignerType

+            without LayoutID. Call GetDescriptionTemplates for valid IDs.

+            Set to false in GetDescriptionTemplates (or do not specify

+            LayoutID) to get the standard layout. If a Listing Designer

+            layout is used (except standard layout), PhotoDisplayType must

+            be false (or not be specified).

+			  	</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="OptimalPictureSize" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            If true, indicates that the item's picture will be enlarged to fit description

+            of the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ThemeID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						ID for the Listing Designer theme template to use when

+						displaying the item's description.

+            When relisting, if you specify ListingDesignerType without

+            ThemeID, ThemeID is removed from the listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ListingDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Various details about a listing. Some of the details are calculated or derived after

+				an item is listed. The details in this type include the start and end time and

+				the converted (localized) prices. The details in this type also include

+				input values applicable to the Best Offer feature.

+				Additional details in this type include flags indicating if a seller

+				specified fields whose values are not visible to the requesting user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Adult" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) If true, the item is listed in a Mature category. Users must accept

+						the Mature Category agreement on the eBay site to retrieve

+						items listed in Mature categories. (Users do not need to sign

+						this agreement to be able to list items in Mature Categories.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BindingAuction" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Applicable for Real Estate auctions only. If true, buyers and sellers

+						are expected to follow through on the sale. If false, bids for the

+						Real Estate auction are only expressions of interest.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CheckoutEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Indicates whether checkout is enabled for this item. If true, indicates

+						that the seller elects to allow the item purchase to go through the

+						checkout process, if the buyer chooses to do so.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<SeeLink>

+							<Title>Checkout</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=Checkout</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ConvertedBuyItNowPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Converted value of the BuyItNowPrice in the currency of

+						the site that returned this response.

+						For active items, refresh this value every 24 hours to

+						pick up the current conversion rates.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SecondChanceOffer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ConvertedStartPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Converted value of the StartPrice in the currency of

+						the site that returned this response.

+						For active items, refresh this value every 24 hours to

+						pick up the current conversion rates.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ConvertedReservePrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Converted value of the ReservePrice in the currency of the

+						site that returned this response. Only returned for listings with

+						a reserve price when the requesting user is the listing's seller.

+						For active items, refresh this value every 24 hours to

+						pick up the current conversion rates.

+						Not applicable to Fixed Price and Store Inventory listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HasReservePrice" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) If true, the seller specified a value in ReservePrice.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RegionName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Obsolete: the use of regions for locating items is being phased out and

+						has been replaced on most sites by distance-based searching and searches

+						by location. Some sites, such as the China site, still use region. Although

+						all sites will still allow you to specify Item.RegionID in AddItem when

+						listing an item, only those sites that support the use of regions will

+						return RegionName in the response for GetItem, and the region information

+						will not appear on or be used by the web site. For sites that no longer

+						support the use of regions, use Address.PostalCode and Item.Location instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<NoCalls/>

+							<TagStatus>Obsolete</TagStatus>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RelistedItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Indicates the new item ID for a re-listed item. When an item is

+						re-listed, the item ID for the new (re-list) item is added to the

+						old (expired) listing to provide buyers a means to navigate to

+						the new listing. This value only appears when the old listing is

+						retrieved.

+						Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SecondChanceOriginalItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The item ID for the original listing from which a second chance offer

+						is made. This value is only returned when the data for the second chance

+						offer listing is retrieved.

+						Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Time stamp (in GMT) that eBay recorded as the moment that

+						the listing became available for bidding or buying.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Context>ActiveList</Context>

+							<Context>ScheduledList</Context>

+							<Context>Transaction</Context>

+							<Context>UnsoldList</Context>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="EndTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Time stamp (in GMT) when the listing is scheduled to end

+						(calculated based on the values of StartTime and ListingDuration)

+						or the actual end time if the item has ended.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>SecondChanceOffer</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Transaction</Context>

+							<Context>UnsoldList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ViewItemURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The URL of the Web page where a user can view the listing.

+						On the US site, this is called the "View Item" page.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HasUnansweredQuestions" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+			      (out) Indicates whether the item has any unanswered questions. Use GetMemberMessages to

+			      retrieve unanswered questions for the item if this flag indicates that there

+			      are any.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HasPublicMessages" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+			      (out) Indicates whether the item has any publicly displayed messages. Use GetMemberMessages

+			      to retrieve public messages for the item if this flag indicates that there are any.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyItNowAvailable" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+			      (out) Indicates whether, for a Dutch Auction, there is a Buy It Now option. Germany site (site ID 77) and China site (site ID 223) only.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerBusinessType" type="ns:SellerBusinessCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Type of seller account. This value can be returned if the German site (site ID 77) or eBay Motors site (site ID 100) is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumBestOfferPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies the minimum acceptable best offer price. If a buyer

+						submits a best offer that is below this value, the offer is automatically

+						declined by the seller. Applies only to items listed in categories that

+						support the Best Offer Auto-Decline feature. Best Offer must be enabled

+						for the item, and only the seller who listed the item can see this value.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumBestOfferMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies the message sent from the seller to the buyer when a

+						submitted best offer is automatically declined by the seller. A best offer

+						is automatically declined if it does not meet the minimum acceptable best

+						offer price specified by the seller with MinimumBestOfferPrice. Applies only

+						to items listed in categories that support the Best Offer Auto-Decline

+						feature. Best Offer must be enabled for the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalListingDistance" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies a distance in miles. This distance is used as the radius

+						of the area about the supplied postal code that constitutes the

+						local market. Local listings are limited to a distance of 100 miles.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressListing" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					If true, the item appears on the eBay Express site associated with the item's

+					listing site (US or Germany).

+					</xs:documentation>

+					<xs:appinfo>

+						<SeeLink>

+							<Title>Retrieving eBay Express Listings</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExpressGetItem</URL>

+						</SeeLink>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TCROriginalItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Indicates the item ID of the original item listing from which a Transaction Confirmation Request

+						(TCR) was created. This value is only returned when the data for a TCR is retrieved.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingDurationCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ListingDurationCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Applications should not depend on the completeness of ListingDurationCodeType.

+			GetCategoryFeatures will return the complete list of listing durations.

+			Each code in this code list specifies a number of days that a listing can be

+			active (i.e., available for bidding/buying). The validity of a code

+			depends on the listing type.

+			Call GetCategoryFeatures to determine which listing formats

+			support each duration for the site you are using.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Days_1">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) 1 Day - A seller must have a positive feedback rating of 10 or

+					more or must be ID Verified to use the 1-day listing duration on the US

+					site. Typically applicable for Chinese and Dutch auction formats (including Real

+					Estate) and Personal Offer (Second Chance Offer).

+					Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_3">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) 3 Days - Typically applicable to Chinese, Dutch, and Live auction formats

+					(including Real Estate); Personal Offer (Second Chance Offer); and Basic

+					Fixed-Price format.

+					Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_5">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) 5 Days - Typically applicable to Chinese, Dutch, and Live auction formats

+					(including Real Estate); Personal Offer (Second Chance Offer); and Basic

+					Fixed-Price format.

+					Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_7">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) 7 Days - Typically applicable to Chinese, Dutch, and Live auction formats

+					(including Real Estate); Personal Offer (Second Chance Offer); and Basic

+					Fixed-Price format.

+					Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_10">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 10 Days - Subject to an additional listing upgrade fee. 

+						Typically applicable to Chinese, Dutch, and Live auction formats 

+						(including Real Estate) and Basic Fixed-Price format.

+						Call GetCategoryFeatures to determine which listing formats

+						support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_14">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) 14 Days - Subject to an additional listing upgrade fee. 

+					Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_21">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_30">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) 30 Days - Typically applicable to Real Estate Ad format and Store Inventory

+					format. Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		<xs:enumeration value="Days_60">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_90">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) 90 Days - Typically applicable to Real Estate Ad format. 

+					Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_120">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out)	Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GTC">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) GTC  - Relist automatically every 30 days until all the items sell

+					or the seller ends the listing. Typically applicable to Store Inventory format 

+					and Half.com listings.

+					Call GetCategoryFeatures to determine which listing formats

+					support this duration for the site you are using.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingDurationDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="ListingDurationDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				A container node for a set of durations that apply to a certain listing type.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Duration" type="xs:token" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the length of time an auction can be open, in days. The allowed durations 

+						vary according to the type of listing. The value GTC means Good Til Canceled. 

+					</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryFeatures</CallName>

+						<DetailLevels>ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="durationSetID" type="xs:int">

+			<xs:annotation>

+				<xs:documentation>

+					Identifies the type of listing to which the set of durations applies. The durationSetID value corresponds to the listing types returned in  Category.ListingDuration (also in the call response).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryFeatures</CallName>

+						<DetailLevels>ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingDurationDefinitionsType.xsd #####

+

+-->

+	<xs:complexType name="ListingDurationDefinitionsType">

+		<xs:annotation>

+			<xs:documentation> 

+				A container node for sets of durations, each set describing the durations allowed for

+				one listing type.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingDuration" type="ns:ListingDurationDefinitionType" minOccurs="0" maxOccurs="unbounded">

+			<xs:annotation>

+				<xs:documentation>

+					Contains the duration periods that apply to a certain listing type.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryFeatures</CallName>

+						<DetailLevels>ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+		<xs:attribute name="Version" type="xs:int">

+			<xs:annotation>

+				<xs:documentation>

+					The current version of the feature. Some features (for example, ShippingTermsRequired) 

+					do not have version numbers. 

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetCategoryFeatures</CallName>

+						<DetailLevels>ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingDurationReferenceType.xsd #####

+

+-->

+	<xs:complexType name="ListingDurationReferenceType">

+		<xs:annotation>

+			<xs:documentation>

+				Identifies the type of listing as an attribute on the ListingDuration node.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:simpleContent>

+			<xs:extension base="xs:int">

+				<xs:attribute name="type" type="ns:ListingTypeCodeType">

+					<xs:annotation>

+						<xs:documentation>

+							The type of listing a set of durations describes.

+						</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetCategoryFeatures</CallName>

+								<DetailLevels>ReturnAll</DetailLevels>

+								<Returned>Conditionally</Returned>

+							</CallInfo>

+						</xs:appinfo>

+					</xs:annotation>

+				</xs:attribute>

+			</xs:extension>

+		</xs:simpleContent>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingEnhancementsCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ListingEnhancementsCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				ListingEnhancementsCodeType - Type declaration to be used by other

+				schema. Indicates optional featuring properties of an item.

+				Featuring properties make a listing stand out in a search or listing

+				page, or let the item be featured on the eBay home page.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Border">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If specified, the seller wants the item to be displayed with a border that goes

+						around the item in search result pages that return multiple items.

+						The border differentiates the item from other items in the list.

+						Applicable listing fees apply.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BoldTitle">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If specified, the seller wants the title for the item's listing to 

+						be in boldface type. Applicable listing fees apply. 

+						Does not affect the item subtitle (Item.SubTitle), if any.

+						Not applicable to eBay Motors. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Featured">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing is a &quot;Featured Plus&quot; item.

+						The item will display prominently in the Featured Items section of its category list, 

+						and it will stand out on search results pages. It will also display in the regular, 

+						non-featured item list. Only available to users with a Feedback rating of 10 or greater. 

+						Not applicable to eBay Motors listings. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Highlight">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing is highlighted in a different color in lists.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HomePageFeatured">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing will have a chance to rotate into a special display 

+						on eBay's Home page. Your item is very likely to show up on the Home page, 

+						although eBay does not guarantee that your item will be highlighted 

+						in this way. This is the highest level of visibility on eBay.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProPackBundle">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing is using ProPackBundle (a feature pack). Applies only to US and Canadian eBay motor vehicle sellers. Contains the BoldTitle, Border, Featured and Highlight features.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BasicUpgradePackBundle">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing is using BasicUpgradePackBundle (a feature pack). Australia site (site ID 15, abbreviation AU) only. Effective beginning February 22, 2006. Contains the Gallery and Subtitle features.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ValuePackBundle">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing is using ValuePack bundle (a feature pack),

+						which combines the features Gallery, Subtitle, and Listing Designer for a discounted price. Support for this feature varies by site and category. Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProPackPlusBundle">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Listing is using ProPackPlus bundle (a feature pack),

+						which combines the features BoldTitle, Border, Highlight, Featured, and Gallery for a discounted price. Support for this feature varies by site and category. Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+	<xs:annotation>

+				<xs:documentation>

+					eBay Listing Enhancements Codes

+				</xs:documentation>

+			</xs:annotation>

+	<xs:annotation>

+				<xs:documentation>

+					Code List Agency - eBay, Inc.

+				</xs:documentation>

+			</xs:annotation>

+	<xs:annotation>

+				<xs:documentation>

+					Code List Version - 1.0

+				</xs:documentation>

+			</xs:annotation>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingFlowCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ListingFlowCodeType">

+		<xs:annotation>

+			<xs:documentation>

+ListingFlowCodeType - Type declaration to be used by other schema.

+Identifies the listing flows on the eBay Web site for use with calls like

+GetItemRecommendations.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AddItem">

+				<xs:annotation>

+					<xs:documentation>

+                (in) AddItem (Sell Your Item) listing flow.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReviseItem">

+				<xs:annotation>

+					<xs:documentation>

+                (in) ReviseItem (Revise Your Item) listing flow.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RelistItem">

+				<xs:annotation>

+					<xs:documentation>

+                (in) RelistItem listing flow.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ListingStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies an active or ended listing's status in eBay's processing

+				workflow. If a listing ends with a sale (or sales), eBay needs to

+				update the sale details (e.g., total price and buyer/high bidder)

+				and the final value fee. This processing can take several minutes.

+				If you retrieve a sold item and no details about the buyer/high

+				bidder are returned or no final value fee is available, use this

+				listing status information to determine whether eBay has finished

+				processing the listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Active">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The listing is still active or the listing has ended with

+						a sale but eBay has not completed processing the sale details

+						(e.g., total price and high bidder). A multi-item listing is

+						considered active until all items have winning bids or

+						purchases or the listing ends with at least one winning bid or

+						purchase. If the listing has ended with a sale but this Active

+						status is returned, please allow several minutes for eBay to

+						finish processing the listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<CallName>GetAllBidders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Ended">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The listing has ended. If the listing ended with a sale,

+						eBay has completed processing of the sale. All sale information

+						returned from eBay (e.g., total price and high bidder) should be

+						considered accurate and complete. However, the final value fee is

+						not yet available.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<CallName>GetAllBidders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Completed">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The listing has closed and eBay has completed processing

+						the sale. All sale information returned from eBay (e.g., total

+						price and high bidder) should be considered accurate and

+						complete.

+						Although the Final Value Fee for FixedPriceItem, StoresFixedPrice,

+						and Buy It Now Dutch listing types is returned by

+						GetSellerTransactions and GetItemTransactions on a transaction by

+						transaction basis, all other listing types, including Chinese and

+						Dutch (no Buy It Now purchases), require the listing status to be

+						Completed before the Final Value Fee is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<CallName>GetAllBidders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Custom">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingSubtypeEnum.xsd #####

+

+-->

+	<xs:simpleType name="ListingSubtypeEnum">

+	<xs:annotation>

+		<xs:documentation>

+			Indicates the specific type of lead generation format listing (i.e., classified 

+			subtypes).

+		</xs:documentation>

+	</xs:annotation>

+	<xs:restriction base="xs:token">

+		<xs:enumeration value="ClassifiedAd">

+			<xs:annotation>

+				<xs:documentation>

+					Reserved for future use.

+				</xs:documentation>

+			</xs:annotation>

+		</xs:enumeration>

+	</xs:restriction>		

+</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingTipArrayType.xsd #####

+

+-->

+	<xs:complexType name="ListingTipArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+      (out) Contains a list of tips on improving a listing's details, if any. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingTip" type="ns:ListingTipType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					An individual tip on improving a listing's details. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingTipFieldType.xsd #####

+

+-->

+	<xs:complexType name="ListingTipFieldType">

+		<xs:annotation>

+			<xs:documentation>

+      (out) Identifies the item field that the tip relates to.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingTipFieldID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Identifier associated with the item field. Primarily for internal use. This value may change over time.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FieldTip" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Related text that appears near a field or at the top of the section within which

+            the field appears in the selling flow.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>125</MaxLength>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CurrentFieldText" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            A label used to preface the current value of a field. For example,

+            "Current value" would be the CurrentValueText in "Current value: 25".

+            If no label exists, this element is not returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>50</MaxLength>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CurrentFieldValue" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+             Current value of the field (in the listing or in the candidate item) or meta-data about the value.

+             For example, if the tip is recommending a longer item title, the CurrentFieldValue might specify

+             the current length of the title. If no current value is available, this information is not returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingTipMessageType.xsd #####

+

+-->

+	<xs:complexType name="ListingTipMessageType">

+		<xs:annotation>

+			<xs:documentation>

+      (out) Contains the message portion of a listing tip that is returned by the Listing Analyzer engine.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingTipMessageID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+              Identifier for the tip message. Primarily for internal use. This value may change over time.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShortMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+              Brief version of the tip message.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>125</MaxLength>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LongMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Detailed version of the tip message.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>125</MaxLength>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HelpURLPath" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Path part of a URL for a "Learn More" link that points to a relevant eBay Web site online help page.

+            The path is relative to http://pages.ebay.XX, where XX is the 2-letter site code

+            (e.g., http://pages.ebay.de for the eBay Germany site). Applications should append the

+            URL to the appropriate path for the user's site.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>125</MaxLength>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingTipType.xsd #####

+

+-->

+	<xs:complexType name="ListingTipType">

+		<xs:annotation>

+			<xs:documentation>

+      (out) A tip on improving a listing's details. Tips are returned from the Listing Analyzer engine.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingTipID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Identifier for the tip. Primarily for internal use. This value may change over time. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Priority" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The rank of the tip. All tips are ranked by importance. Ranking varies for each site. 

+            The rank is always greater than 0.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Message" type="ns:ListingTipMessageType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The tip's message content.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Field" type="ns:ListingTipFieldType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The item field that is associated with the tip.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ListingTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ListingTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Specifies the selling format used for a listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Unknown">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Unknown auction type.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Chinese">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Single-quantity online auction format.

+						A Chinese auction has a Quantity of 1. Buyers engage in competitive bidding,

+						although Buy It Now may be offered as long as no bids have been placed.

+						Online auctions are listed on eBay.com, and they are also listed in

+						the seller's eBay Store if the seller is a Store owner.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Dutch">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Multiple-quantity online auction format.

+						A Dutch auction has a Quantity greater than 1. Buyers engage in

+						competitive bidding. Some sites also offer Buy It Now for Dutch auctions.

+						Online auctions are listed on eBay.com, and they are also listed in

+						the seller's eBay Store if the seller is a Store owner.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Live">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Live auction, on-site auction that can include non-eBay bidders.

+						Use AddLiveAuctionItem to list live auctions.

+						Live auctions are listed on the eBay Live Auctions site, in live auction categories.

+						They can also appear on eBay if the seller lists the lot in a secondary category

+						that is an eBay category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Auction">

+				<xs:annotation>

+					<xs:documentation>

+						(in) An optional input parameter used with GetMyeBaySelling. When used in

+						the request, returns items of the following auction types: Chinese, Dutch,

+						and Live.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>ActiveList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AdType">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Advertisement to solicit inquiries on listings such as real estate.

+						Permits no bidding on that item, service, or property. To express interest,

+						a buyer fills out a contact form that eBay forwards to the the seller as a lead.

+						This format does not enable buyers and sellers to transact online through eBay,

+						and eBay Feedback is not available for ad format listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>ActiveList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoresFixedPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A fixed-price format for eBay Store sellers.

+						Store Inventory listings appear after other listings in regular browse and search

+						item lists on eBay. They have a lower Insertion Fee and longer listing durations.

+						Only available to sellers who have an eBay Store.

+						Store Inventory listings are listed on eBay.com, and they are also listed in

+						the seller's eBay Store.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>ActiveList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PersonalOffer">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Second chance offer made to a non-winning bidder on an ended listing.

+						A seller can make an offer to a non-winning bidder when either the winning bidder

+						has failed to pay for an item or the seller has a duplicate of the item.

+						A seller can create a Second Chance Offer immediately after a listing ends and up to

+						60 days after the end of the listing. eBay does not charge an Insertion Fee,

+						but if the bidder accepts the offer, the regular Final Value Fee is charged.

+						In the case of an Unpaid Item, the seller should ensure that everything has

+						been done to resolve the issue with the winning bidder before sending a

+						Second Chance Offer to another bidder. See the Unpaid Items Process for details.

+						Make sure you're aware of other rules and restrictions surrounding Second Chance Offers.

+						Use AddSecondChanceItem to submit Second Chance Offers.

+						Listed on eBay, but does not appear when browsing or searching listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FixedPriceItem">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A basic fixed-price format.

+						A fixed-price listing with a Quantity of 1 or more. Allows no auction-style bidding.

+						Also known as Buy It Now Only on some sites (not to be confused with the BuyItNow option that

+						is available for Chinese auctions).

+						Sellers need to meet certain feedback requirements and/or be ID Verified to use this format.

+						See Minimum Feedback Requirements for Various Features in the eBay Web Services guide.

+						Fixed-price listings are listed on eBay.com, and they are also listed in

+						the seller's eBay Store if the seller is a Store owner.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Context>ActiveList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Half">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Half.com listing (item is listed on Half.com, not on eBay).

+					You must be a registered Half.com seller to use this format.

+					See Working with Half.com Listings in the eBay Web Services guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LeadGeneration">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Lead Generation format (advertisement-style listing to solicit

+						inquiries or offers, no bidding or fixed price, listed on eBay).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Express">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Coming soon for Germany only:

+					eBay Express format (item is listed only on eBay Express only, not on eBay).

+					You must be a vetted Express Germany seller to use this format.

+					See "List Items in a Fixed Price Format" in the eBay Web Services guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/LiveAuctionApprovalStatusArrayType.xsd #####

+

+-->

+	<xs:complexType name="LiveAuctionApprovalStatusArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+			Contains the results of the request for each bidder.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="LiveAuctionStatus" type="ns:LiveAuctionApprovalStatusType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates the current approval status of a bidder.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LiveAuctionApprovalStatusType.xsd #####

+

+-->

+	<xs:complexType name="LiveAuctionApprovalStatusType">

+		<xs:annotation>

+			<xs:documentation>

+			The approval status of a user who wants to bid on a live auction.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UserID" type="ns:UserIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					User ID of the bidder.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The bidder's approval status. Possible values are Approvied, Denied, 

+					or a message indicating a problem that prevented the bidder from 

+					being approved (or denied), such as an invalid ApproveBiddingLimit value.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ApproveLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LiveAuctionBidArrayType.xsd #####

+

+-->

+	<xs:complexType name="LiveAuctionBidArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+        Container for a list of Live Auction Bidders, such as returned by

+        GetLiveAuctionBidders. Will contain zero, one, or multiple

+        LiveAuctionBidType bidders, each of which represents one bidder's request listing

+        that was found by the search.

+        Output only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="LiveAuctionBid" type="ns:LiveAuctionBidType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+            Contains data for an item listing found by a search.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LiveAuctionBidType.xsd #####

+

+-->

+	<xs:complexType name="LiveAuctionBidType">

+		<xs:annotation>

+			<xs:documentation> 

+        			Contains the data for one listing found by a search .

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="RequestedBiddingLimit" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Amount that user has requested for the approval.

+					This is returned if the auction house has requested that the bidder 

+					enter an amount for the approval.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BidderStatus" type="ns:BidderStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates whether the user is "approved","denied", or "pending" or a combination of these.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ApprovedBiddingLimit" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Amount that has been approved by the seller.

+					If the seller has not yet approved, return value "Pending"

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeclinedComment" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Comments entered by the seller when it declined an approval request, if any.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LiveAuctionCatalogType.xsd #####

+

+-->

+	<xs:complexType name="LiveAuctionCatalogType">

+		<xs:annotation>

+			<xs:documentation>

+      (out) Describes one live auction catalog and its sale schedules.

+      Use this information to determine an appropriate combination of catalog and schedule IDs

+      in which to list a lot item when you use AddLiveAuctionItem.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UserCatalogID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) ID number identifiying a specific eBay Live Auctions catalog that the user has created.

+            Pass as input to AddLiveAuctionItem when you list a lot item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionCatalogDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CatalogName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Descriptive name that the seller created for the catalog.

+            Pass as input to AddLiveAuctionItem when you list a lot item.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>45</MaxLength>

+						<CallInfo>

+							<CallName>GetLiveAuctionCatalogDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Schedule" type="ns:ScheduleType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Describes a single live auction sale schedule that the user defined.

+            A seller can define a maximum of 5 schedules for each catalog.

+            Each schedule defines the start and end time of a live auction event.

+            (Only the start time is returned from GetLiveAuctionCatalogDetails.)

+            A schedule must be created at least 48 hours in advance of the auction.

+            The seller then lists one or more lots that will be auctioned during that event.

+            Only schedules for future sales are returned. That is, schedules for

+            ended sales or sales in progress are not returned.

+            Pass as input to AddLiveAuctionItem when you list a lot item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionCatalogDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LiveAuctionDetailsType.xsd #####

+

+-->

+	<xs:complexType name="LiveAuctionDetailsType">

+		<xs:annotation>

+			<xs:documentation> 

+      (in) Describes the live auction-specific details of a lot item.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UserCatalogID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (in) Number that identifies the seller's eBay Live Auctions catalog 

+            within which the lot item will be listed. Use GetLiveAuctionCatalogDetails 

+            to determine the seller's available catalog IDs.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddLiveAuctionItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ScheduleID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (in) Number that identifies the sale schedule for the lot. The schedule ID must be 

+            for a pending sale associated with the catalog identified in UserCatalogID. 

+            Call GetLiveAuctionCatalogDetails to determine the valid schedule IDs for the catalog.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LotNumber" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (in) Lot number defined by the seller. Each lot number must be unique within the schedule. 

+            A lot number can consist of 1-10 alphanumeric characters beginning with a 

+            number from 0-9. If all values are numbers, the highest allowed value is 2147483647.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddLiveAuctionItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>						

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HighEstimate" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (in) Highest appraised value for the item. 

+            Must be greater than zero and greater than the value in LowEstimate. 

+            (Pass an integer value only, not a double.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddLiveAuctionItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>						

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LowEstimate" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (in) Lowest appraised value for the item. Must be greater than zero and 

+            less than the value in HighEstimate.

+            (Pass an integer value only, not a double.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddLiveAuctionItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>						

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LocalMarketNonSubscriptionDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="LocalMarketNonSubscriptionDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the LocalMarketNonSubscription feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LocalMarketPremiumSubscriptionDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="LocalMarketPremiumSubscriptionDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the LocalMarketPremiumSubscription feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LocalMarketRegularSubscriptionDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="LocalMarketRegularSubscriptionDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the LocalMarketRegularSubscription feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LocalMarketSpecialitySubscriptionDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="LocalMarketSpecialitySubscriptionDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the LocalMarketSpecialitySubscription feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LocalSearchType.xsd #####

+

+-->

+	<xs:complexType name="LocalSearchType">

+		<xs:annotation>

+			<xs:documentation>

+					Contains data for filtering a search by proximity.

+				</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MaxDistance" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+							The maximum distance from the specified postal code to search for items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PostalCode" type="xs:string">

+				<xs:annotation>

+					<xs:documentation>

+							The postal code to use as the basis for the proximity search.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>							

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LogoTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="LogoTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="WinningBidderNotice"/>

+			<xs:enumeration value="Store"/>

+			<xs:enumeration value="Custom"/>

+			<xs:enumeration value="CustomCode"/>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/LookupAttributeArrayType.xsd #####

+

+-->

+	<xs:complexType name="LookupAttributeArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+       Only valid when using AddItem for items in Media categories 

+       (Books, DVD and Movies, Music, and Video Game categories). 

+       You can pass either AttributeSetArrayType or 

+       LookupAttributeArrayType, but you cannot pass both containers in the same request.

+       See the eBay Web Services guide for additional information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="LookupAttribute" type="ns:LookupAttributeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+					The condition of the item.

+					</xs:documentation>

+					<xs:appinfo>

+					<CallInfo>

+					  <CallName>AddItem</CallName>

+					  <CallName>GetItemRecommendations</CallName>

+					  <CallName>RelistItem</CallName>

+					  <CallName>VerifyAddItem</CallName>

+					  <RequiredInput>No</RequiredInput>

+					</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/LookupAttributeType.xsd #####

+

+-->

+	<xs:complexType name="LookupAttributeType">

+		<xs:annotation>

+			<xs:documentation> 

+          (in) An optional attribute that the seller wants to include in the listing. 

+          Enables you to specify an attribute by name rather than by ID.

+          Only valid in Media categories (Books, DVD and Movies, Music, and Video Game categories).

+          Currently, only the Condition attribute is supported.

+				</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (in) The literal name of the attribute. Pass "Condition" (without quotes).

+            Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>GetItemRecommendations</CallName>

+						  <CallName>RelistItem</CallName>

+						  <CallName>VerifyAddItem</CallName>						  

+						  <RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Value" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            (in) The literal name of the attribute value. Pass "New" or "Used" (without quotes).

+            Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>GetItemRecommendations</CallName>

+						  <CallName>RelistItem</CallName>

+						  <CallName>VerifyAddItem</CallName>						  

+						  <RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MailOptionsTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MailOptionsTypeCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="DoNotSendEmail">

+			</xs:enumeration>

+			<xs:enumeration value="EmailCopyToSender">

+			</xs:enumeration>

+			<xs:enumeration value="HideSenderEmailAddress">

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MarkUpMarkDownEventType.xsd #####

+

+-->

+	<xs:complexType name="MarkUpMarkDownEventType">

+		<xs:annotation>

+			<xs:documentation> 

+				Describes an individual mark-up or mark-down event. eBay will automatically 

+				mark an application as down if attempts to deliver a notification fail 

+				repeatedly. eBay may mark an application down manually under certain 

+				circumstances. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Type" type="ns:MarkUpMarkDownEventTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Whether the application has been marked up or marked down.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Time" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Time when the application was marked up or marked down.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Reason" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Describes how the application was marked down, automatically or 

+						manually. When an application is automatically marked down, eBay will 

+						ping the application periodically, and if communication is restored, eBay 

+						will automatically mark the application up. If your application is marked 

+						down manually, you must contact eBay Developer Support to get your 

+						application marked up. A Reason is not provided for mark up events.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MarkUpMarkDownEventTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MarkUpMarkDownEventTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Valid application status codes, either MarkUp (application was marked up, 

+				communication is restored) or MarkDown (application was marked down, no 

+				communication).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="MarkUp">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Status indicating the application was or is marked up.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarkDown">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Status indicating the application was marked down.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for future internal or external use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MarkUpMarkDownHistoryType.xsd #####

+

+-->

+	<xs:complexType name="MarkUpMarkDownHistoryType">

+		<xs:annotation>

+			<xs:documentation>

+				List of objects representing markup or markdown events for a given application 

+				and time period. If no time period is specified in the request, the information 

+				for only one day (24 hours before the time the call is made to the time the call 

+				is made) is included. The maximum time period is allowed is 3 days (72 hours 

+				before the call is made to the time the call is made). 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MarkUpMarkDownEvent" type="ns:MarkUpMarkDownEventType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Details for a MarkDown or MarkUp event.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MaximumItemRequirementsType.xsd #####

+

+-->

+	<xs:complexType name="MaximumItemRequirementsType">

+		<xs:annotation>

+			<xs:documentation>

+				Container for items bid.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MaximumItemCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If this field is present, blocking is enabled,

+						where the value of this field represents the

+						maximum number of this seller's items a bidder is allowed to bid

+						on in a 10 day period before being blocked.

+						Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 75, 100.

+					</xs:documentation>

+					<xs:appinfo>

+						<Min/>

+						<Max/>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumFeedbackScore" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) This field is ignored on input unless MaximumItemCount has

+						been provided.

+						If this field is present, the user's feedback score is also considered:

+						a user is blocked from bidding if the user's feedback score is

+						less than or equal to the value of this field.

+						Valid values: 0, 1, 2, 3, 4, 5.

+					</xs:documentation>

+					<xs:appinfo>

+						<Min/>

+						<Max/>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MemberMessageExchangeArrayType.xsd #####

+

+-->

+	<xs:complexType name="MemberMessageExchangeArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Container for messages. Returned for GetMemberMessages if messages that meet the request criteria exist.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MemberMessageExchange" type="ns:MemberMessageExchangeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Information about individual messages. Returned if the parent container is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMemberMessages</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MemberMessageExchangeType.xsd #####

+

+-->

+	<xs:complexType name="MemberMessageExchangeType">

+	<xs:annotation>

+		<xs:documentation>

+			Container for message metadata.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The item about which the question was asked. Returned if the parent container is returned.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Question" type="ns:MemberMessageType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Contains all the information about the question being asked.  Returned if the parent container is returned.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Response" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+			<xs:annotation>

+				<xs:documentation>

+					An answer to the question. Returned if the parent container is returned.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="MessageStatus" type="ns:MessageStatusTypeCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The status of the message. Returned if the parent container is returned.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CreationDate" type="xs:dateTime" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Date the message was created. Used to filter response. Returned if the parent container is returned.

+				</xs:documentation>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="LastModifiedDate" type="xs:dateTime" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Date the message was last modified. Returned if the parent container is returned.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MemberMessageType.xsd #####

+

+-->

+	<xs:complexType name="MemberMessageType">

+	<xs:annotation>

+		<xs:documentation>

+			(in/out) Container for individual message information.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="MessageType" type="ns:MessageTypeCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(in/out) The type of message being retrieved.

+					For AddMemberMessage, any value besides ResponseToASQQuestion returns

+					an error.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<CallName>AddMemberMessagesAAQToBidder</CallName>

+						<RequiredInput>Yes</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="QuestionType" type="ns:QuestionTypeCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(in/out) The context of the question (e.g. Shipping, General). Ignored input

+					for AddMemberMessage.MessageType = ResponseToASQQuestion.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddMemberMessageAAQToPartner</CallName>

+						<RequiredInput>Yes</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="EmailCopyToSender" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(in) Specifies whether or not to email a copy of the

+					message to the sender. If omitted, this defaults to whatever

+					the user set in preferences.

+				</xs:documentation>

+				<xs:appinfo>

+					<Default>omitted</Default>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<CallName>AddMemberMessageAAQToPartner</CallName>

+						<CallName>AddMemberMessageRTQ</CallName>

+						<CallName>AddMemberMessagesAAQToBidder</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="HideSendersEmailAddress" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Specifies whether or not to hide sender's email address

+					from the recipient. If omitted, this defaults to whatever

+					the user set in preferences--or on site policy, which

+					determines whether or not this field is recognized.

+				</xs:documentation>

+				<xs:appinfo>

+					<Default>omitted</Default>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<CallName>AddMemberMessageAAQToPartner</CallName>

+						<CallName>AddMemberMessageRTQ</CallName>

+						<CallName>AddMemberMessagesAAQToBidder</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="DisplayToPublic" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(in/out) Specifies if the body should be displayed to the public. Ignored input

+					for AddMemberMessage.MessageType = ResponseToASQQuestion.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SenderID" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) The eBay user ID of the person who asked the question or sent

+					the message.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SenderEmail" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The email address of the person who asked the question or sent

+					the message. Returned by the AskSellerQuestion notification.

+				</xs:documentation>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="RecipientID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+			<xs:annotation>

+				<xs:documentation>

+					(in/out) Recipient's eBay user ID. For

+					AddMemberMessagesAAQToBidder, must be the seller of an

+					item, that item's bidder, or a user who has made an

+					offer on that item via Best Offer.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<CallName>AddMemberMessageAAQToPartner</CallName>

+						<CallName>AddMemberMessageRTQ</CallName>

+						<CallName>AddMemberMessagesAAQToBidder</CallName>

+						<RequiredInput>Yes</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Subject" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) Subject of this email message. Ignored input

+					for AddMemberMessage.MessageType = ResponseToASQQuestion.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Body" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(in/out) Message content. Required input

+					for AddMemberMessage.MessageType = ResponseToASQQuestion.

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>1000</MaxLength>

+					<CallInfo>

+						<CallName>AddMemberMessageAAQToPartner</CallName>

+						<CallName>AddMemberMessageRTQ</CallName>

+						<CallName>AddMemberMessagesAAQToBidder</CallName>

+						<RequiredInput>Yes</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<RequiredInput>Conditionally</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="MessageID" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(out) An ID that uniquely identifies a message for a given user.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMemberMessages</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ParentMessageID" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					(in) ID number of the question this message is responding to.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddMemberMessage</CallName>

+						<RequiredInput>Yes</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddMemberMessageRTQ</CallName>

+						<RequiredInput>Yes</RequiredInput>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MerchDisplayCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MerchDisplayCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies whether an eBay Stores seller prefers to promote items with a

+			cross-promotion widget that is customized with the store theme or uses

+			the default eBay theme. This option is the same as the one set on the

+			seller's Customize Cross-Promotion Display page.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="DefaultTheme">

+				<xs:annotation>

+					<xs:documentation>

+               		 (in/out) Uses the default eBay theme for cross-promotion widgets. 									</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoreTheme">

+				<xs:annotation>

+					<xs:documentation>

+					(in/out) Uses the store theme for cross-promotion widgets.										</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                		(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MerchandizingPrefCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MerchandizingPrefCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           MerchandizingPrefCodeType - Type declaration to be used by other

+           schema. Indicates whether the seller has opted to participate in

+           item cross-promotion through the Merchandising Manager feature. This

+           option is set on the user's My eBay page and determines whether the

+           seller's other items are cross-promoted with items from the seller

+           that are listed or sold.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="OptIn">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Seller allows item cross-promotion.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OptOut">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Seller does not allow item cross-promotion.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MessageStatusTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MessageStatusTypeCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Answered">

+				<xs:annotation>

+					<xs:documentation>

+						The question has been answered at least once.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>	

+			<xs:enumeration value="Unanswered">

+				<xs:annotation>

+					<xs:documentation>

+						The question has not yet been answered.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Not available.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MessageTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MessageTypeCodeType">

+    <xs:restriction base="xs:token">

+      <xs:enumeration value="AskSellerQuestion">

+        <xs:annotation>

+          <xs:documentation>

+						Member to Member message initiated by bidder/potential bidder

+						to a seller of a particular item.

+					</xs:documentation>

+        </xs:annotation>

+      </xs:enumeration>

+			<xs:enumeration value="ResponseToASQQuestion">

+        <xs:annotation>

+          <xs:documentation>

+						Member to Member message initiated as a response

+						to an Ask A Question message.

+					</xs:documentation>

+        </xs:annotation>

+      </xs:enumeration>

+      <xs:enumeration value="ContactEbayMember">

+        <xs:annotation>

+          <xs:documentation>

+						Member to Member message initiated by any eBay member

+						to another eBay member.

+					</xs:documentation>

+        </xs:annotation>

+      </xs:enumeration>

+      <xs:enumeration value="ContactTransactionPartner">

+        <xs:annotation>

+          <xs:documentation>

+						Member message between transaction partners within 90 days

+						after the transaction.

+					</xs:documentation>

+        </xs:annotation>

+      </xs:enumeration>

+      <xs:enumeration value="CustomCode">

+        <xs:annotation>

+          <xs:documentation>

+						Reserved for future or internal use.

+					</xs:documentation>

+        </xs:annotation>

+      </xs:enumeration>

+    </xs:restriction>

+  </xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MinimumReservePriceDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="MinimumReservePriceDefinitionType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines the Minimum Reserve Price feature. If the field is present, the feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ModifiedFieldType.xsd #####

+

+-->

+	<xs:complexType name="ModifiedFieldType">

+		<xs:annotation>

+			<xs:documentation> 

+				Identifies the fields that are being modified. Only applies when 

+				revising and relisting items. To remove a property from an object,

+				specify it in ModifiedFieldType, but do not specify a value in the

+				object type (for example, ItemType).

+				</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Field" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						The name of the field that is being modified. Use only first-level

+						properties. The first letter of each node in the field is case insensitive, 

+						so item.startPrice is the same as Item.StartPrice.

+						In RelistItem, this is required if you are also modifying fields of the item 

+						that you are relisting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>RelistItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ModifyType" type="ns:ModifyCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Instruction describing the nature of the modification. 

+						In RelistItem, this is required if you are modifying fields of the item 

+						that you are relisting.

+						See the ModifyCodeList for valid values.

+						</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>RelistItem</CallName>

+								<RequiredInput>Conditionally</RequiredInput>

+								<TagStatus>Deprecated</TagStatus>

+							</CallInfo>

+							<CallInfo>

+								<CallName>ReviseItem</CallName>

+								<RequiredInput>Yes</RequiredInput>

+								<TagStatus>Deprecated</TagStatus>

+							</CallInfo>

+							<CallInfo>

+								<CallName>ReviseLiveAuctionItem</CallName>

+								<RequiredInput>Yes</RequiredInput>

+							</CallInfo>

+						</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ModifyActionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ModifyActionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+          Specifies what action to take with the entry that is being modified.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Add">

+				<xs:annotation>

+					<xs:documentation>

+						  (in) Add the entry

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Delete">

+				<xs:annotation>

+					<xs:documentation>

+						  (in) Delete the entry

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+				<xs:enumeration value="Update">

+				<xs:annotation>

+					<xs:documentation>

+						  (in) Update the entry

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ModifyCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ModifyCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           ModifyCodeType - Type declaration to be used by other schema. This

+           code identifies the types of modifications that can be made to an object.

+           For example, use this when changing or removing field values when

+           re-listing an item.  

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Dropped">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Indicates that the value of the specified field should be removed.

+				Do not use to remove a property from a listing with ReviseItem

+				or RelistItem. See the Developer's Guide for details.

+				Also applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Modify">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Indicates that the value of the specified field should be modified.

+                Also applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>ReviseItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesAlertArrayType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesAlertArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains a list of alert data.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Alert" type="ns:MyMessagesAlertType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Contains the data for one alert. Returned for

+						detail levels ReturnHeaders and ReturnMessages.

+						Parent returned as an empty node if user has no

+						alerts.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesAlertIDArrayType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesAlertIDArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains a list of up to 10 AlertID values.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AlertID" type="ns:MyMessagesAlertIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) An ID that uniquely identifies an alert for a given user. When AlertID values

+						are used as input, you must generally specify either AlertID values, or MessageID values,

+						or both.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>DeleteMyMessages</CallName>

+							<CallName>GetMyMessages</CallName>

+							<CallName>ReviseMyMessages</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesAlertIDType.xsd #####

+

+-->

+	<xs:simpleType name="MyMessagesAlertIDType">

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesAlertResolutionStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MyMessagesAlertResolutionStatusCode">

+		<xs:annotation>

+			<xs:documentation>

+				MyMessagesAlertResolutionStatusCode - Whether or not an alert was resolved, and how. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Unresolved">

+				<xs:annotation>

+					<xs:documentation>

+						The alert has not been resolved. If the alert requires user action, an unresolved status 

+						means that the user did not take action on the alert. If the alert does not require user 

+						action, an unresolved status means that the alert has not been read. Note that an 

+						unresolved alert can not be deleted.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ResolvedByAutoResolution">

+				<xs:annotation>

+					<xs:documentation>

+						The alert was resolved by auto resolution. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ResolvedByUser">

+				<xs:annotation>

+					<xs:documentation>

+						The alert was resolved by user. If the alert requires user action, resolved status 

+						means that the user took the necessary action on the alert. If the alert does not require user 

+						action, resolved status means that the alert was read by the user. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesAlertType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesAlertType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Returns an alert header and full alert

+				information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Sender" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The display name of the eBay application that

+						sends the alert.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RecipientUserID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The displayable user ID of the recipient.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Subject" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The subject of the alert.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Priority" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A number ranging from 0 to 10000 (inclusive),

+						with 10000 having the highest priority.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AlertID" type="ns:MyMessagesAlertIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) An ID that uniquely identifies an alert for a

+						given user.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalAlertID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) An ID used by an external application to

+						uniquely identify an alert.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ContentType" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The content type of the body text. The two

+						acceptable values are "TEXT" and "HTML" (case

+						sensitive).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Text" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The alert body. This can be either plain text

+						or HTML, depending on which format the alert was

+						originally written in. Note that the API does not

+						currently check the user email format preferences

+						that can be specified in My Messages on the eBay.com

+						Web site.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ResolutionStatus" type="ns:MyMessagesAlertResolutionStatusCode" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Whether or not an alert was resolved, and how.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Read" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Whether or not an alert was viewed by a given

+						user. Note that retrieving an alert with the API

+						does not mark it as read.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CreationDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The date and time an alert was created by a sender.

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReceiveDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The date and time that an alert was received

+						by My Messages and stored in a database for the

+						recipient.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpirationDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The date and time at which an alert expires.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ResolutionDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The date and time at which an alert is resolved.

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LastReadDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The date and time an alert was last viewed by

+						a given user.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A unique eBay item ID associated with an

+						alert.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="IsTimedResolution" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Indicates whether or not a time-delayed

+						resolution is applicable for an alert.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ActionURL" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A URL that the recipient must visit to resolve

+						an alert. May be returned as an empty tag if there is no applicable URL.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ResponseDetails" type="ns:MyMessagesResponseDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Details relating to the response to an alert

+						or message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ForwardDetails" type="ns:MyMessagesForwardDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Details relating to the forwarding of an alert

+						or message.

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Folder" type="ns:MyMessagesFolderType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Details relating to a My Messages folder.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesFolderOperationCodeList.xsd #####

+

+-->

+	<xs:simpleType name="MyMessagesFolderOperationCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			MyMessagesFolderOperationCodeType - Indicates the type of

+			operation to perform on a specified My Messsages folder.

+			Operations cannot be performed on the Inbox or Sent folders.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Display">

+				<xs:annotation>

+					<xs:documentation>

+						If a folder has been removed, restores the specified folder

+						in My Messages. Because the Inbox and Sent folders cannot be

+						removed, they can also not be restored. Requires FolderName

+						as input.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Rename">

+				<xs:annotation>

+					<xs:documentation>

+						Renames a specified folder. Inbox and Sent folders cannot be

+						renamed. To rename a folder, use FolderID to indicate the

+						folder to rename, and FolderName to indicate the new name.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Remove">

+				<xs:annotation>

+					<xs:documentation>

+						Removes a specified folder. Inbox and Sent folders cannot be

+						removed. Removing a folder that is not empty returns an

+						error. Requires FolderID as input.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future or internal use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesFolderSummaryType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesFolderSummaryType">

+		<xs:annotation>

+			<xs:documentation>

+				Summary details for a specified My Messages folder.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FolderID" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) An ID that uniquely identifies a My Messages

+						folder. Always returned for detail level

+						ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FolderName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The name of a specified My Messages folder. For

+						GetMyMessages, Inbox (FolderID = 0) and Sent (FolderID = 1)

+						are not returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NewAlertCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of new alerts in a given folder.

+						Always returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NewMessageCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of new messages in a given folder.

+						Always returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalAlertCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The total number of alerts in a given folder.

+						Always returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalMessageCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The total number of messages in a given

+						folder. Always returned for detail level

+						ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesFolderType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesFolderType">

+		<xs:annotation>

+			<xs:documentation>

+				Details relating to a My Messages folder.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FolderID" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						An ID that uniquely identifies a My Messages folder.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Alerts</Context>

+							<Context>Messages</Context>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FolderName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The name of a specified My Messages folder.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesForwardDetailsType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesForwardDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Details relating to the forwarding of an alert or message.	

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UserForwardDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The date and time a user forwarded an alert or message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ForwardMessageEncoding" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Encoding used to forward an alert or message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesMessageArrayType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesMessageArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains a list of message data.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Message" type="ns:MyMessagesMessageType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Contains the data for one message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesMessageIDArrayType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesMessageIDArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+				Contains a list of up to 10 MessageID values.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MessageID" type="ns:MyMessagesMessageIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) An ID that uniquely identifies a message for a given user. When MessageID values 

+						are used as input, you must generally specify either AlertID values, or MessageID values, 

+						or both.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>DeleteMyMessages</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>ReviseMyMessages</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesMessageIDType.xsd #####

+

+-->

+	<xs:simpleType name="MyMessagesMessageIDType">

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesMessageType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesMessageType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Contains the message information for each message specified in

+				MessageIDs. The amount and type of information returned varies based on

+				the requested detail level.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Sender" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The display name of the eBay user that sent the message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RecipientUserID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The displayable user ID of the recipient.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SendToName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The displayable name of the user or eBay

+						application to which the message is sent. Only

+						returned for M2M, and if a value exists.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Subject" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The subject of the message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MessageID" type="ns:MyMessagesMessageIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) An ID that uniquely identifies a message for a given user.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalMessageID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) An ID used by an external application to uniquely identify

+						a message.

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ContentType" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The content type of the body text. The three acceptable values

+						are "TEXT", "HTML",  and "XML" (case sensitive).

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Text" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The message body. This can be either plain

+						text or HTML, depending on which format the message

+						was originally written in. Note that the API does

+						not currently check the user email format

+						preferences that can be specified in My Messages on

+						the eBay.com Web site.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Flagged" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Whether or not a message has been flagged.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Read" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Whether or not a message has been viewed by a given user. Note that retrieving a message with the

+						API does not mark it as read.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CreationDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The date and time that a message was created by the sender.

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReceiveDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The date and time that a message was received by My Messages and stored in a

+						database for the recipient.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpirationDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The date and time at which a message expires.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) A unique eBay Item ID associated with a message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ResponseDetails" type="ns:MyMessagesResponseDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Details relating to the response to an alert or message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ForwardDetails" type="ns:MyMessagesForwardDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Details relating to the forwarding of an alert or message.

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Folder" type="ns:MyMessagesFolderType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Details relating to a My Messages folder.

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesResponseDetailsType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesResponseDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Details relating to the response to an alert or message.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ResponseEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether or not an alert or message can be responded

+						to. To respond to an alert or message, use the URL

+						in ResponseURL. You may need to log into the eBay

+						Web site to complete the response.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Alerts</Context>

+							<Context>Messages</Context>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ResponseURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A URL that the recipient must visit to respond to an

+						alert or message. Responding may require logging

+						into the eBay Web site.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Alerts</Context>

+							<DetailLevels>ReturnMessages</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Messages</Context>

+							<DetailLevels>ReturnHeaders, ReturnMessages</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserResponseDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The date and time the user responded to an alert or

+						message

+					</xs:documentation>

+				<!-- N/A: GetMyMessages -->

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyMessagesSummaryType.xsd #####

+

+-->

+	<xs:complexType name="MyMessagesSummaryType">

+		<xs:annotation>

+			<xs:documentation>

+				Summary data for a given user's alerts and messages.

+				This includes the numbers of new alerts and messages,

+				unresolved alerts, flagged messages, and total alerts

+				and messages.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FolderSummary" type="ns:MyMessagesFolderSummaryType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Folder summary for each folder. Always

+						returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NewAlertCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of new alerts that a given user

+						has. Always returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NewMessageCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of new messages that a given user has. Always returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UnresolvedAlertCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of alerts that are not yet

+						resolved. Always returned for detail level

+						ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FlaggedMessageCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of messages that have been flagged.

+						Always returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalAlertCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The total number of alerts for a given user.

+						Always returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalMessageCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The total number of messages for a given user.

+						Always returned for detail level ReturnSummary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyMessages</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnSummary</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyeBayFavoriteSearchListType.xsd #####

+

+-->

+	<xs:complexType name="MyeBayFavoriteSearchListType">

+		<xs:annotation>

+			<xs:documentation>

+					A list of favorite searches a user has saved on the My eBay page.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="TotalAvailable" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+								The total number of favorite searches saved.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FavoriteSearch" type="ns:MyeBayFavoriteSearchType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+								A favorite search the user has saved, with a name and a search query.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyeBayFavoriteSearchType.xsd #####

+

+-->

+	<xs:complexType name="MyeBayFavoriteSearchType">

+		<xs:annotation>

+			<xs:documentation>

+        Characteristics of a saved My eBay Favorite Search.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SearchName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The name of the My eBay Favorite Search.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchQuery" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The query string of a My eBay Favorite Search.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyeBayFavoriteSellerListType.xsd #####

+

+-->

+	<xs:complexType name="MyeBayFavoriteSellerListType">

+		<xs:annotation>

+			<xs:documentation>

+					A list of favorite sellers the user has saved on the My eBay page.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="TotalAvailable" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+ 							The total number of favorite sellers saved. 

+					</xs:documentation>

+					<xs:appinfo>

+						<Max>100</Max>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FavoriteSeller" type="ns:MyeBayFavoriteSellerType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+							A favorite seller the user has saved, with a user ID and store name.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyeBayFavoriteSellerType.xsd #####

+

+-->

+	<xs:complexType name="MyeBayFavoriteSellerType">

+		<xs:annotation>

+			<xs:documentation>

+				 Characteristics of the My eBay Favorite Seller.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UserID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The favorite seller's eBay user ID.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StoreName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The name of the store owned by the favorite seller, if applicable.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyeBaySecondChanceOfferListType.xsd #####

+

+-->

+	<xs:complexType name="MyeBaySecondChanceOfferListType">

+		<xs:annotation>

+			<xs:documentation> 

+         A list of possible My eBay Second Chance Offers.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="TotalAvailable" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The total number of My eBay Second Chance Offers available.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SecondChanceOffer" type="ns:ItemType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            A Second Chance Offer item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/MyeBaySelectionType.xsd #####

+

+-->

+	<xs:complexType name="MyeBaySelectionType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies how the result list for My eBay features such as favorite searches,

+				favorite sellers, and second chance offers should be returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Include" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					 Specifies whether to include a container in the response.

+					 Required if you do not specify any other tags to filter the

+					 result list. If so, the list is returned according to

+					 the default values. Ignored if you specify at least

+					 one other tag for the result list.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Sort" type="ns:SortOrderCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the result sort order. Default is Ascending.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxResults" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the maximum number of items in the returned list.

+						If not specified, returns all items in the list.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NameValueListArrayType.xsd #####

+

+-->

+	<xs:complexType name="NameValueListArrayType">

+		<xs:annotation>

+			<xs:documentation>

+      A list of one or more valid names and corresponding values.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="NameValueList" type="ns:NameValueListType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					A name and corresponding value (a name/value pair).&lt;br&gt;

+					&lt;br&gt;

+					In the GetSearchResults response, this is only returned for applicable items 

+					when the value of IncludeCondition was true in the GetSearchResults request,

+					or when SearchRequest was used to perform a "Product Finder" search.&lt;br&gt;

+					&lt;br&gt;

+					In the GetSearchResultsExpress response, this is only returned when ProductDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+							<!-- Separate appinfo due to detail levels. -->

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NameValueListType.xsd #####

+

+-->

+	<xs:complexType name="NameValueListType">

+		<xs:annotation>

+			<xs:documentation>

+				A name and corresponding value (a name/value pair).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A name in a name/value pair.&lt;br&gt;

+						&lt;br&gt;

+						In the GetSearchResults response, this is an attribute name. Specifically:

+						If SearchRequest was used to perform a "Product Finder" search, this contains the 

+						name of one attribute (i.e, the name of one Item Specifics field).

+						If IncludeCondition was true in the request, this returns the condition attribute name 

+						(e.g., "Item Condition").&lt;br&gt;

+						&lt;br&gt;

+						In the GetSearchResultsExpress response, this is an attribute name.

+						Only returned when ProductDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+							<!-- Separate appinfo due to detail levels. -->

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Value" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						The value in a name/value pair.&lt;br&gt;

+						&lt;br&gt;

+						In the GetSearchResults response, if SearchRequest was used to perform 

+						a "Product Finder" search, this contains the

+						value of one attribute (i.e., the value of one Item Specifics field).

+						If IncludeCondition was true in the request, this returns the 

+						condition attribute value (e.g., "New").&lt;br&gt;

+						&lt;br&gt;

+						In the GetSearchResultsExpress response, this is an attribute value.

+						Only returned when ProductDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+							<!-- Separate appinfo due to detail levels. -->

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationDeliveryStatusCodeTypeList.xsd #####

+

+-->

+	<xs:simpleType name="NotificationDeliveryStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Valid notification status codes

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future internal or external use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Delivered">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was delivered

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Failed">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was failed

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Rejected">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was rejected

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarkedDown">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was marked down

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationDetailsArrayType.xsd #####

+

+-->

+	<xs:complexType name="NotificationDetailsArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+				Returns information about notifications sent to the given application

+				for the given ItemID. It will only be returned if ItemID was specified in the

+				input parameters.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="NotificationDetails" type="ns:NotificationDetailsType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) List of notifications, if there are any, for the given ItemID and given

+						time period.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationDetailsType.xsd #####

+

+-->

+	<xs:complexType name="NotificationDetailsType">

+		<xs:annotation>

+			<xs:documentation> 

+				Information about a single notification. Notification information includes 

+				the reference ID, notification type, current status, time delivered, error code, 

+				and error message for the notification. If notification details are included in 

+				the response, all of the detail fields are returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DeliveryURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Returns the destination address for the notification. This is the value set 

+						using SetNotificationPreferences.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReferenceID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Reference identifier for the notification.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpirationTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Date and time when this notification will be removed from the 

+						eBay system.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Type" type="ns:NotificationEventTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Returns the notification type. Possible values include: AskSellerQuestion, 

+						AuctionCheckoutComplete, BestOffer, CheckoutBuyerRequestTotal, EndOfAuction, 

+						Feedback, FixedPriceEndOfTransaction, FixedPriceTransaction, ItemNotReceived, 

+						MyMessages, OutBid, SecondChanceOffer, UPIBuyerResponseDispute, UPISellerClosedDispute, 

+						UPISellerOpenedDispute, and UPISellerRespondedToDispute.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Retries" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Returns the total number of retries for the given notification.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeliveryStatus" type="ns:NotificationEventStateCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Returns the notification status. Possible values include Delivered, 

+						Failed, Rejected, and MarkedDown. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NextRetryTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Returns the time when the notification is scheduled for retry. 

+						This won't be included if the DeliveryStatus is Delivered.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeliveryTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Returns the time when the notification was delivered.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ErrorMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Returns the error message.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationEnableArrayType.xsd #####

+

+-->

+	<xs:complexType name="NotificationEnableArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				(in/out) A list of NotificationEnable entries. Each entry specifies

+				one notification and whether it is enabled.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="NotificationEnable" type="ns:NotificationEnableType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies one notification event and whether it is

+						enabled or disabled. Returned if previously set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationEnableType.xsd #####

+

+-->

+	<xs:complexType name="NotificationEnableType">

+		<xs:annotation>

+			<xs:documentation>

+				(in/out) Specifies a notification event and whether the

+				notification is enabled or disabled.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="EventType" type="ns:NotificationEventTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The name of the notification event.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="EventEnable" type="ns:EnableCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Whether the event is enabled or disabled.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationEventPropertyNameCodeList.xsd #####

+

+-->

+	<xs:simpleType name="NotificationEventPropertyNameCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines all property names that can be used.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="TimeLeft">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Property name for WatchItemEndingSoon event, part of

+						enabling a user to specify a time in minutes before the end

+						of the listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationEventPropertyType.xsd #####

+

+-->

+	<xs:complexType name="NotificationEventPropertyType">

+		<xs:annotation>

+			<xs:documentation>

+				(in/out) Defines properties associated with particular event.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="EventType" type="ns:NotificationEventTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The name of the notification event.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Name" type="ns:NotificationEventPropertyNameCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specify property name associated with an particular event.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Value" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies the value for the property.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationEventStateCodeList.xsd #####

+

+-->

+	<xs:simpleType name="NotificationEventStateCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Valid notification status codes

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="New">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification is newly created

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Failed">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was failed

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarkedDown">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the end user application is marked down

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Pending">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification is pending

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FailedPending">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification is failed pending

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarkedDownPending">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification is marked down pending

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Delivered">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was successfully delivered

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Undeliverable">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was unable to deliver

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Rejected">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was rejected

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Canceled">

+				<xs:annotation>

+					<xs:documentation>

+						Status indicating the notification was cancelled

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future internal or external use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationEventTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="NotificationEventTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			    Defines all notification events that can be used.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+					  (out)	Not a notification event.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OutBid">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)	Sent to a user when another buyer has placed a higher maximum bid

+						and the user is no longer the current high bidder.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EndOfAuction">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)	Sent when an auction ends. An auction ends either when its duration

+						expires, the buyer purchases an item with Buy It Now, or the auction is

+						canceled. Applies to both Chinese and Dutch auctions.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AuctionCheckoutComplete">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)	Sent to a seller when a buyer completes the checkout process for an

+						item. Occurs even when a seller has disabled checkout and the buyer uses

+						eBayPayments.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FixedPriceEndOfTransaction">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)	Sent to a seller when a fixed-price item is sold and the buyer

+						completes the checkout process. Not sent when a fixed-price item's duration

+						expires without purchase.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CheckoutBuyerRequestsTotal">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to a seller each time a buyer requests a total price. Occurs

+						before checkout is complete.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Feedback">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to a partner when a buyer leaves a feedback entry for a seller

+						or when the seller responds.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FeedbackForSeller">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to a partner when a buyer leaves a feedback entry for a seller

+						or when the seller responds. This tag is to be phased out. It is used here

+						only for backward compatibility.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FixedPriceTransaction">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to a user when a listing for a fixed price item ends. A fixed

+						price listing ends when a buyer starts to move through checkout or purchases

+						the item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SecondChanceOffer">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AskSellerQuestion">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to a seller when a question is posted about one of the seller's

+						active listings.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemListed">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to an eBay partner on behalf of a seller when a seller has

+						listed an item. Sent for each item the seller lists.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemRevised">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies an ItemRevised notification event.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerResponseDispute">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to an eBay partner on behalf of a seller when a buyer responds

+						to a dispute the seller has opened. Sent for each response the buyer makes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerOpenedDispute">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to an eBay partner on behalf of a seller when a seller opens a

+						dispute. Sent for each dispute the seller opens.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerRespondedToDispute">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to an eBay partner on behalf of a seller when a seller responds

+						to a dispute they had opened. Sent for each response the seller makes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerClosedDispute">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to an eBay partner on behalf of a seller when a seller closes a

+						dispute they had opened. Sent for each closure the seller performs.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BestOffer">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sent to a seller when a bidder makes a best offer on an item opted

+						into the Best Offer feature by the seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyMessagesAlertHeader">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where a specified user or application is notified

+						when an alert is sent to My Messages. This notification type sends a

+						GetMyMessages response at a detail level of ReturnHeaders.

+						MyMessagesAlertHeader and MyMessagesAlert cannot be subscribed to at the same

+						time or specified in the same call.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyMessagesAlert">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where a specified user or application is

+						notified when an alert is sent to My Messages. This notification type sends

+						a GetMyMessages response at a detail level of ReturnMessages.

+						MyMessagesAlertHeader and MyMessagesAlert cannot be subscribed to at the

+						same time or specified in the same call.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyMessageseBayMessageHeader">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where a specified user or application is

+						notified when a message from eBay is sent to My Messages. This notification

+						type sends a GetMyMessages response at a detail level of ReturnHeaders.

+						MyMessageseBayMessageHeader and MyMessageseBayMessage cannot be subscribed

+						to at the same time or specified in the same call.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyMessageseBayMessage">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where a specified user or application is

+						notified when a message from eBay is sent to My Messages. This notification

+						type sends a GetMyMessages response at a detail level of ReturnMessages.

+						MyMessageseBayMessageHeader and MyMessageseBayMessage cannot be subscribed

+						to at the same time or specified in the same call.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyMessagesM2MMessageHeader">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where a specified user or application is

+						notified when a member to member (M2M) message is sent to My Messages. This

+						notification type sends a GetMyMessages response at a detail level of

+						ReturnHeaders. MyMessagesM2MMessageHeader and MyMessagesM2MMessage cannot

+						be subscribed to at the same time or specified in the same call.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyMessagesM2MMessage">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where a specified user or application is

+						notified when a member to member (M2M) message is sent to My Messages. This

+						notification type sends a GetMyMessages response at a detail level of

+						ReturnMessages. MyMessagesM2MMessageHeader and MyMessagesM2MMessage cannot

+						be subscribed to at the same time or specified in the same call.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="INRBuyerOpenedDispute">

+				<xs:annotation>

+					<xs:documentation>

+					  (in/out) A notification type where a specified user or application is

+						notified on behalf of a buyer when a buyer opens an Item Not Received dispute.

+						Sent for each dispute the buyer opens.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="INRBuyerRespondedToDispute">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where a specified user or application is

+						notified on behalf of a buyer when a buyer responds to Item Not Received

+						dispute that buyer had opened. Sent for each response the buyer makes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="INRBuyerClosedDispute">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where a specified user or application is

+						notified on behalf of a buyer when a buyer closes Item Not Received

+						dispute that buyer had opened. Sent for each closure the buyer performs.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="INRSellerRespondedToDispute">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)  A notification type where a specified user or application is

+						notified on behalf of a seller when a seller responds to an Item Not Received

+						dispute that buyer had opened. Sent for each response the seller makes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Checkout">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where an application is notified

+						that checkout has been handled by eBay Express.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WatchedItemEndingSoon">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A notification type where the listing of the watched item is about to

+						end. This event has a property with which caller can specify the TimeLeft

+						before the listing ends.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemClosed">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemSuspended">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemSold">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemExtended">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UserIDChanged">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EmailAddressChanged">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PasswordChanged">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PasswordHintChanged">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentDetailChanged">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountSuspended">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountSummary">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) An informational alert about account activity. It is not

+						triggered by an event but rather by an eBay daemon process that

+						monitors a schedule database.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					  (out)	Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationMessageType.xsd #####

+

+-->

+		<xs:element name="NotificationMessage" type="ns:NotificationMessageType"/>

+<xs:complexType name="NotificationMessageType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) A template for an SMS notification message.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="ns:AbstractResponseType">

+				<xs:sequence>

+					<xs:element name="MessageBody" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) The SMS message.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<NoCalls/>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+					<xs:element name="EIAS" type="xs:string" minOccurs="0">

+						<xs:annotation>

+							<xs:documentation>

+								(out) The EIAS userId.

+							</xs:documentation>

+							<xs:appinfo>

+								<CallInfo>

+									<NoCalls/>

+									<Returned>Conditionally</Returned>

+								</CallInfo>

+							</xs:appinfo>

+						</xs:annotation>

+					</xs:element>

+				</xs:sequence>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationPayloadTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="NotificationPayloadTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The schema options for Platform Notifications.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="eBLSchemaSOAP">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) New Schema format (used by the new schema XML API and SOAP API).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationRoleCodeList.xsd #####

+

+-->

+	<xs:simpleType name="NotificationRoleCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines roles for platform notifications.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Application">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies that you want to set or return application-level

+						preferences. Default value.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="User">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies that you want to set or return user-level preferences.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UserData">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies that you want to set or return user data-level preferences.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Event">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Specifies that you want to set or return event-level preferences.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationStatisticsType.xsd #####

+

+-->

+	<xs:complexType name="NotificationStatisticsType">

+		<xs:annotation>

+			<xs:documentation> 

+				Summary information about notifications delivered, failed, errors, queued for 

+				a given application ID and time period.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DeliveredCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returns the number of notifications delivered successfully during the given 

+						time period.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QueuedNewCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returns the number of new notifications that were queued during 

+						the given time period.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QueuedPendingCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returns the number of pending notifications in the queue during 

+						the given time period.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpiredCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returns the number of notifications that permanently failed during 

+						the given time period.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ErrorCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Returns the number of notifications for which there were delivery errors 

+						during the given time period.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetNotificationsUsage</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/NotificationUserDataType.xsd #####

+

+-->

+	<xs:complexType name="NotificationUserDataType">

+		<xs:annotation>

+			<xs:documentation>

+				User data related to notifications.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SMSSubscription" type="ns:SMSSubscriptionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						User data related to SMS notifications.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SummarySchedule" type="ns:SummaryEventScheduleType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						User account activity summary alert delivery schedule.

+						Returned if PreferenceLevel is set to UserData in

+						GetNotificationPreferences.

+						See "Working with Platform Notifications" for instructions on

+						"Informational Alerts".

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/OfferArrayType.xsd #####

+

+-->

+	<xs:complexType name="OfferArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+        Container for a list of offers. May contain zero, one, or multiple

+        OfferType objects, each of which represents one offer extended by

+        a user on a listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Offer" type="ns:OfferType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            Contains the data for one offer. This includes: data for the user making the

+            offer, the amount of the offer, the quantity of items being bought from the

+            listing, the type of offer being made, and more.

+					</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetAllBidders</CallName>

+								<CallName>GetHighBidders</CallName>

+								<Returned>Conditionally</Returned>

+							</CallInfo>

+						</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/OfferType.xsd #####

+

+-->

+	<xs:complexType name="OfferType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains information pertaining to an offer made on an item listing and

+				the current bidding or purchase state of the listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Action" type="ns:BidActionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the type of offer being made on the specified listing. Valid

+						values are enumerated in the BidActionCodeType code list.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Numeric ID for the currency for the auction. Valid values are

+						enumerated in the CurrencyCodeType code list.

+					</xs:documentation>

+					<xs:appinfo>

+						<!-- N/A to PlaceOffer -->

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The unique identifier of an item listed on the eBay site.

+						Returned by eBay when the item is created.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxBid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount of the offer placed. For competitive-bidding listings, the amount

+						bid on the item (subject to outbid by other buyers). For fixed-price

+						listings, the fixed sale price at which the item is purchased. For

+						competitive-bidding listings with an active Buy It Now option, this amount

+						will be either the Buy It Now price for purchase or the amount of a bid,

+						depending on the offer type (as specified in Action). For PlaceOffer,

+						the currencyID attribute is ignored if provided.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Quantity" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the number of items from the specified listing the user

+						tendering the offer intends to purchase or bid on. For Chinese auctions and

+						other listing formats that only allow one item per listing, value may not

+						exceed one. For multi-item listings, must be greater than zero and not

+						exceeding the number of items offered for sale in the listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SecondChanceEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the user's preference to accept second chance offers. If true,

+						the user is willing to be the recipient of second chance offers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SiteCurrency" type="ns:CurrencyCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique ID identifying the currency in which the localized offer amounts are

+						expressed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TimeBid" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Date and time the offer or bid was placed.

+					</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetAllBidders</CallName>

+								<CallName>GetHighBidders</CallName>

+								<Returned>Always</Returned>

+							</CallInfo>

+						</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HighestBid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount the highest bidder had bid on the item. Applicable only to

+						competitive-bidding listings (Chinese and Dutch auctions) where there is

+						progressive bidding and winning bidders are determined based on the highest

+						bid.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ConvertedPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Localized amount for the item's current price.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+  						<CallName>GetHighBidders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The unique identifier of the transaction. The transaction

+						is created when a winning bidder commits to purchasing an

+						item, even before the bidder has paid.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="User" type="ns:UserType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Bidder information. See the schema documentation for UserType for details

+						on its properties and their meanings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserConsent" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, confirms that the bidder read and agrees to eBay's

+						privacy policy. Applies if the subject item is in a category

+						that requires user consent. If user consent (that is,

+						confirmation that a bidder read and agrees to eBay's privacy

+						policy) is required for a category that the subject item is in,

+						this value must be true for a bid to occur.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/OperationTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="OperationTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies whether the rules being defined are item rules

+			or default rules. A new item rule is created if no rule exists with 

+			the same scheme; otherwise, it replaces one existing item rule.

+			A new default rule replaces the entire set of rules for that promotion method.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ItemRules">

+				<xs:annotation>

+					<xs:documentation>

+					Use when setting item-specific rules.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReplaceAllDefaultRules">

+				<xs:annotation>

+					<xs:documentation>

+					Use when setting default rules.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/OrderArrayType.xsd #####

+

+-->

+	<xs:complexType name="OrderArrayType">

+	<xs:annotation>

+		<xs:documentation>

+			An array of Orders.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="Order" type="ns:OrderType" minOccurs="0" maxOccurs="unbounded">

+		<xs:annotation>

+			<xs:documentation>

+				Also applicable to Half.com.

+			</xs:documentation>

+			<xs:appinfo>

+				<CallInfo>

+					<CallName>GetOrders</CallName>

+					<Returned>Always</Returned>

+				</CallInfo>

+				<CallInfo>

+					<CallName>GetOrderTransactions</CallName>

+					<DetailLevels>none</DetailLevels>

+					<Returned>Always</Returned>

+				</CallInfo>

+			</xs:appinfo>

+		</xs:annotation>

+		</xs:element>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/OrderIDArrayType.xsd #####

+

+-->

+	<xs:complexType name="OrderIDArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				A list of unique identifiers for orders.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="OrderID" type="ns:OrderIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A unique identifier for an order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<CallName>GetOrderTransactions</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/OrderIDType.xsd #####

+

+-->

+	<xs:simpleType name="OrderIDType">

+		<xs:annotation>

+			<xs:documentation>

+				A unique identifier for an order.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/OrderRoleCodeList.xsd #####

+

+-->

+	<xs:simpleType name="OrderRoleCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Buyer">

+			</xs:enumeration>

+			<xs:enumeration value="Seller">

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/OrderStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="OrderStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The set of valid states for an order.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Active">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Active order status.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Inactive">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Inactive order status.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Completed">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Completed order status.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Cancelled">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Cancelled order status.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/OrderTransactionArrayType.xsd #####

+

+-->

+	<xs:complexType name="OrderTransactionArrayType">

+		<xs:annotation>

+			<xs:documentation>

+						Contains a list of orders, transactions, or both, each of OrderTransactionType.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="OrderTransaction" type="ns:OrderTransactionType"  minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+								The individual order or transaction.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/OrderTransactionType.xsd #####

+

+-->

+	<xs:complexType name="OrderTransactionType">

+		<xs:annotation>

+			<xs:documentation>

+					Contains an order or a transaction. A transaction is the sale of one or

+					more items from a seller's listing to a buyer. An order combines two or more transactions

+					into a single payment.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Order" type="ns:OrderType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+							Contains the information describing an order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Transaction" type="ns:TransactionType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+							Contains the information describing a transaction.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/OrderType.xsd #####

+

+-->

+	<xs:complexType name="OrderType">

+		<xs:annotation>

+			<xs:documentation>

+				A combination of two or more transactions that can be paid for with a

+				single payment.&lt;br&gt;

+				&lt;br&gt;

+				We strongly recommend that you avoid mixing digital and non-digital listings in

+				the same order. (In the future, AddOrder may enforce this recommendation.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="OrderID" type="ns:OrderIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique identifier for the order.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="OrderStatus" type="ns:OrderStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The current status of the order.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AdjustmentAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount by which the buyer is adjusting the order total. Used when

+						the seller has not supplied payment details such as shipping and

+						handling or insurance fee.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AmountPaid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount the buyer has paid the seller for the order.

+						For GetOrders, applies only to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AmountSaved" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount the buyer saved by having multiple items combined into

+						a single order, versus purchasing the items separately.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CheckoutStatus" type="ns:CheckoutStatusType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The current checkout status of the order.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingDetails" type="ns:ShippingDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The shipping-related details for an item or transaction,

+						including flat or calculated shipping costs and shipping

+						insurance costs.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CreatingUserRole" type="ns:TradingRoleCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the order is created by the buyer or by the seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CreatedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Date and time the order was created.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FinanceOfferID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies a promotional offer that allow the buyer to purchase items on credit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentMethods" type="ns:BuyerPaymentMethodCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+	    		  The payment methods the buyer uses to pay for

+	    		  the order. An order can have multiple payment methods if the

+	    		  buyer combines several transactions into one order.

+	    		  Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerEmail" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The email of the order's seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingAddress" type="ns:AddressType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Shipping address the order has been or will be sent to.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceSelected" type="ns:ShippingServiceOptionsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The shipping service selected by the buyer from the services

+						offered by the seller.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Subtotal" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The sum of the sale prices of all of the transactions in the order, where

+						a transaction sale price is the item sale price times the quantity sold.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Total" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Subtotal plus the shipping cost plus the sales tax plus cost of insurance.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalTransaction" type="ns:ExternalTransactionType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Not applicable to Half.com.

+						A PayPal transaction that relates to this eBay transaction.

+						Returned only if there is at least one PayPal transaction related to this

+						eBay transaction.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DigitalDelivery" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the order contains at least one transaction for a digital listing.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionArray" type="ns:TransactionArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The set of two or more transactions that make up the order.

+						Also applicable to Half.com (for GetOrders).&lt;br&gt;

+						&lt;br&gt;

+						We strongly recommend that you avoid mixing transactions for digital and non-digital listings in the same order.

+						(In the future, AddOrder may enforce this recommendation.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerUserID" type="ns:UserIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						User ID of the order's buyer.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaginatedItemArrayType.xsd #####

+

+-->

+	<xs:complexType name="PaginatedItemArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains a paginated list of items.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ItemArray" type="ns:ItemArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains a list of Item types.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>BestOfferList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Provides information about the list, including number of pages and number

+						of entries.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaginatedOrderTransactionArrayType.xsd #####

+

+-->

+	<xs:complexType name="PaginatedOrderTransactionArrayType">

+		<xs:annotation>

+			<xs:documentation>

+			Contains a paginated list of orders, transactions, or both, with each

+			item an OrderTransactionType.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="OrderTransactionArray" type="ns:OrderTransactionArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Contains the list of orders, transactions, or both.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SoldList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies information about the list, including number of pages and

+						number of entries.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaginatedTransactionArrayType.xsd #####

+

+-->

+	<xs:complexType name="PaginatedTransactionArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Contains a paginated list of transactions.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="TransactionArray" type="ns:TransactionArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Contains a list of transactions. Returned as an

+						empty tag if no applicable transactions exist.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaginationResult" type="ns:PaginationResultType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Provides information about the list of transactions,

+						including number of pages and number of entries.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaginationResultType.xsd #####

+

+-->

+	<xs:complexType name="PaginationResultType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Shows the pagination of data returned by requests.

+				Pagination of returned data is not needed in and not

+				supported for every call. See the documentation for

+				individual calls to determine whether pagination is

+				supported, required, or desirable.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="TotalNumberOfPages" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Indicates the total number of pages of data

+						that could be returned by repeated requests. For

+						GetOrders, not applicable to eBay.com (for

+						GetOrders, applicable to Half.com). Returned with a

+						value of 0 if no pages are available.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAccount</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetOrders</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSellerPayments</CallName>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUserDisputes</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnSummary, ReturnAll, none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetPopularKeywords</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>BestOfferList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalNumberOfEntries" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Indicates the total number of entries that

+						could be returned by repeated requests. For

+						GetOrders, not applicable to eBay.com (for

+						GetOrders, applicable to Half.com). Returned with a

+						value of 0 if no entries are available.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetOrders</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetSellerPayments</CallName>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionBidders</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetPopularKeywords</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>BestOfferList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaidStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PaidStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies the payment status of a transaction, as

+			seen by the buyer and seller.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NotPaid">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has not completed checkout, but has not paid through PayPal or

+						PaisaPay. The buyer might have paid using another method, but the payment

+						might not have been received or cleared.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerHasNotCompletedCheckout">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has not completed the checkout process and so has not made payment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentPendingWithPayPal">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has made a PayPal payment, but the seller has not yet received it.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaidWithPayPal">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has made a PayPal payment, and the payment is complete.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MarkedAsPaid">

+				<xs:annotation>

+					<xs:documentation>

+						The transaction is marked as paid by either buyer or seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentPendingWithEscrow">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has made an escrow payment, but the seller has not yet received it.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaidWithEscrow">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has made an escrow payment, and the seller has received payment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EscrowPaymentCancelled">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has made an escrow payment, but has cancelled the payment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentPendingWithPaisaPay">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has paid with PaisaPay, but the payment is still being processed.

+						The seller has not yet received payment.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaidWithPaisaPay">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has paid with PaisaPay, and the payment is complete.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaymentPending">

+				<xs:annotation>

+					<xs:documentation>

+						The buyer has made a payment other than PayPal, escrow, or PaisaPay, but the

+						payment is still being processed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PayPalAccountLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PayPalAccountLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				PayPal account level.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Unverified">

+				<xs:annotation>

+					<xs:documentation>

+						Account unverified

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InternationalUnverified">

+				<xs:annotation>

+					<xs:documentation>

+						Account international unverified

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Verified">

+				<xs:annotation>

+					<xs:documentation>

+						Account verified

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InternationalVerified">

+				<xs:annotation>

+					<xs:documentation>

+						Account international verified

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Trusted">

+				<xs:annotation>

+					<xs:documentation>

+						Account trusted

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Unknown"/>

+			<xs:enumeration value="Invalid"/>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						 Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PayPalAccountStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PayPalAccountStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				PayPal account status.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Active">

+				<xs:annotation>

+					<xs:documentation>

+						Account is active.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Closed">

+				<xs:annotation>

+					<xs:documentation>

+						Account is closed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HighRestricted">

+				<xs:annotation>

+					<xs:documentation>

+						Account is highly restricted.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LowRestricted">

+				<xs:annotation>

+					<xs:documentation>

+						Account restriction is low.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Locked">

+				<xs:annotation>

+					<xs:documentation>

+						Account is locked.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WireOff"/>

+			<xs:enumeration value="Unknown"/>

+			<xs:enumeration value="Invalid"/>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PayPalAccountTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PayPalAccountTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				PayPal account type.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Personal">

+				<xs:annotation>

+					<xs:documentation>

+						Personal account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Premier">

+				<xs:annotation>

+					<xs:documentation>

+						Premier account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Business">

+				<xs:annotation>

+					<xs:documentation>

+						Business account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Unknown"/>

+			<xs:enumeration value="Invalid"/>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						 Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaymentDetailsType.xsd #####

+

+-->

+	<xs:complexType name="PaymentDetailsType">

+		<xs:annotation>

+			<xs:documentation> 

+			Data associated with payment (payment durations).

+		</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="HoursToDeposit" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+				Applies to US eBay Motors site (except Parts and Accessories category).

+				Number of hours after a listing closes that the buyer can put down a deposit

+				on an item. The choices are 24, 48, and 72, and the default is 48.  

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>GetItemRecommendations</CallName>

+						  <CallName>RelistItem</CallName>

+						  <CallName>ReviseItem</CallName>

+						  <CallName>VerifyAddItem</CallName>

+						  <RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetBidderList</CallName>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DaysToFullPayment" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+				Applies to US eBay Motors site (except Parts and Accessories category) and eBay Canada site for motors.

+				Number of days after a listing closes that the buyer can take to pay for the item. 

+				The choices are 3, 7, 10, and 14, and the default is 7.  

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+						  <CallName>AddItem</CallName>

+						  <CallName>GetItemRecommendations</CallName>

+						  <CallName>RelistItem</CallName>

+						  <CallName>ReviseItem</CallName>

+						  <CallName>VerifyAddItem</CallName>

+						  <RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+						  <CallName>GetBidderList</CallName>

+						  <CallName>GetItem</CallName>

+						  <Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaymentMethodSearchCodeType.xsd #####

+

+-->

+	<xs:simpleType name="PaymentMethodSearchCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Used for specifying items for which a specific payment method or methods are accepted. 

+   		</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="PayPal">

+				<xs:annotation>

+					<xs:documentation>

+					  PayPal payment method.

+				  </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PaisaPay">

+				<xs:annotation>

+					<xs:documentation> 

+					  PaisaPay payment method. The PaisaPay payment method is only for the India site (site ID 203).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalOrPaisaPay">

+				<xs:annotation>

+					<xs:documentation>

+					  Either the PayPal or the PaisaPay payment method. The PaisaPay payment method is only for the India site (site ID 203).

+					 </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaymentOptionDetailsType.xsd #####

+

+-->

+	<xs:complexType name="PaymentOptionDetailsType">

+		<xs:annotation>

+			<xs:documentation> 

+				Details about a specific payment option.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="PaymentOption" type="ns:BuyerPaymentMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						A payment method value defined in the schema.&lt;br&gt;&lt;br&gt;

+						Related fields:&lt;br&gt;

+						Item.PaymentMethods in AddItem&lt;br&gt;

+						PaymentMethodUsed in ReviseCheckoutStatus

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Full name of the payment method for display purposes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaymentStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PaymentStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			Indicates the success or failure of the buyer's online 

+			payment for a transaction.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NoPaymentFailure">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) No payment failure.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerECheckBounced">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) The buyer's eCheck bounced.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerCreditCardFailed">

+				<xs:annotation>

+					<xs:documentation>

+						   (out) The buyer's credit card failed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerFailedPaymentReportedBySeller">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) The seller reports that the buyer's payment

+						  failed. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalPaymentInProcess">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) The payment from buyer to seller is in PayPal process, 

+                           but has not yet been completed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PaymentTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PaymentTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				For GetSellerPayments, indicates the type of Half.com payment being

+				made (sale or refund).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Sale">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The buyer paid the seller.

+						Also applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Refund">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The seller issued a refund to the buyer.

+						Also applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SellerDeniedPayment">

+				<xs:annotation>

+					<xs:documentation>

+						For eBay internal use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AdminReversal">

+				<xs:annotation>

+					<xs:documentation>

+						For eBay internal use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AllOther">

+				<xs:annotation>

+					<xs:documentation>

+						All other payment types.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PhotoDisplayCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PhotoDisplayCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies the type of image display used in a listing. Some options are

+				only available if images are hosted through eBay Picture Services (EPS).

+				Cannot be used with Listing Designer layouts (specified in Item.ListingDesigner).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) No special image display options. Valid for US Motors listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SlideShow">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Display multiple pictures in a slideshow format. Only available for

+						site-hosted pictures. Deprecated with a compatibility level of 381. Use

+						SiteHostedPictureShow or VendorHostedPictureShow instead. Not valid

+						for US Motors listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SuperSize">

+				<xs:annotation>

+					<xs:documentation>

+							 (in/out) Increase the size of each image and allow buyers to enlarge images

+							 further. Only available for site-hosted images. Not valid for US Motors listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PicturePack">

+				<xs:annotation>

+					<xs:documentation>

+							(in/out) Increase the number of images displayed. Only available for site-hosted images.

+							Valid for US Motors listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SiteHostedPictureShow">

+				<xs:annotation>

+					<xs:documentation>

+							(in/out) Display multiple, site-hosted pictures in a slideshow format.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VendorHostedPictureShow">

+				<xs:annotation>

+					<xs:documentation>

+							(in/out) Display multiple, vendor-hosted pictures in a slideshow format.

+							 Not valid for US Motors listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SuperSizePictureShow">

+				<xs:annotation>

+					<xs:documentation>

+							(in/out) Display multiple, super-size, site-hosted pictures in a slideshow format.

+							Valid for US Motors listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetMyeBayBuying</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+							(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureDetailsType.xsd #####

+

+-->

+	<xs:complexType name="PictureDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the data for a picture associated with an item.

+				Replaces the deprecated SiteHostedPicture and

+				VendorHostedPicture in the response with compatibility level 439

+				or greater. With the future deprecation of SiteHostedPicture and

+				VendorHostedPicture as input, applications should use

+				PictureDetails in the input instead.

+		Not applicable to Half.com.

+		</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="GalleryType" type="ns:GalleryTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether listing images are included in the search

+						results (in both Picture Gallery and List Views) and, if so,

+						which image listing enhancements apply to them. Items that

+						have pictures but do not have image listing enhancements

+						display a generic photo image in search results.

+						&lt;br&gt;&lt;br&gt;

+						If the value is Gallery, Plus, or Featured, eBay checks the

+						available image URLs in the following order to determine

+						which URL to use (if more than one of these URLs is

+						available):

+						&lt;br&gt;&lt;br&gt;

+            a) Use the URL in GalleryURL, if it is specified.&lt;br&gt;

+						b) Otherwise, if

+						ProductListingDetails.UseStockPhotoURLAsGallery is true, use

+						the eBay stock photo.&lt;br&gt;

+						c) Otherwise, use the value of the first PictureURL in the

+						array of PictureURL fields, if any.&lt;br&gt;

+						d) Otherwise, if ProductListingDetails.ProductID is

+						specified, use the eBay stock photo for that ProductID

+								(eBay resets UseStockPhotoURLAsGallery to true in this

+								case).&lt;br&gt;

+						e) If eBay is unable to find an image URL for the listing,

+						an error is returned.

+						&lt;br&gt;&lt;br&gt;

+						Note that the Gallery Plus feature requires that the image

+						be hosted with the eBay Picture Service (EPS). One EPS image

+						is included at no cost with the Gallery Plus feature.

+						&lt;br&gt;&lt;br&gt;

+						See "Describing Items in a Listing" in the eBay Web Services

+						Guide for additional information about working with pictures and related validation rules.

+						&lt;br&gt;&lt;br&gt;

+						You cannot remove Gallery, Plus, or Featured when revising or relisting, however you can upgrade to a higher feature. On upgrade, the original feature fee is credited, and the new feature fee is charged.

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<SeeLink>

+							<Title>Describing Items in a Listing</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=DescribingItems</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GalleryURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						URL for a picture to be used as the Gallery thumbnail. Ignored if

+						GalleryType is None or unspecified. If the value of GalleryType is

+						Gallery or Featured, you can either specify GalleryURL or allow eBay

+						to use another picture that you have included in the listing. (See

+						GalleryType for the rules that determine which URL is used if you do

+						not specify GalleryURL.) The image used for the Gallery thumbnail

+						must be in one of the graphics formats JPEG, BMP, TIF, or GIF. See

+						"Describing Items in a Listing" in the eBay Web Services Guide for

+						additional validation rules. For eBay Live Auctions, lots are listed

+						in the gallery for free. To remove GalleryURL when revising or

+						relisting an item, use DeletedField. When you revise an item, you

+						can only remove GalleryURL if the item has at least one PictureURL

+						or a stock photo to use instead. If the item has bids (or items have

+						been sold) or the listing ends within 12 hours, you can add

+						GalleryURL or change its value, but you cannot remove the gallery

+						URL value if it was previously specified. Not applicable to eBay

+						Motors listings.

+						If the value of GalleryType is Gallery or Plus or Featured,

+				</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>1024</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>SecondChanceOffer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PhotoDisplay" type="ns:PhotoDisplayCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Specifies the type of image display used in a listing. Some options are

+					only available if images are hosted through eBay Picture Services (EPS).

+					eBay determines this by parsing the associated PictureURL.

+					Cannot be used in combination with Listing Designer layouts.

+					Specify None or do not add PhotoDisplay when ListingDesigner.LayoutID

+					is a value other than 0.

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PictureURL" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Contains the URL for an image associated with the item. Images can

+						be hosted by eBay Picture Services (EPS) (or by eBay Picture

+						Manager) or they can be self-hosted. Some options are only available

+						if images are hosted through eBay Picture Services (EPS). eBay

+						determines this by parsing the associated PictureURL value. If

+						specified, this cannot have an empty/null value.&lt;br&gt;&lt;br&gt;

+						To specify multiple pictures, send each URL in a separate, adjacent

+						PictureURL element. In most cases, the image at the first URL is

+						also used for the picture at the top of the View Item page on the

+						Web site.&lt;br&gt;&lt;br&gt;

+						On the main eBay site, a listing can have a maximum of 12 picture

+						URLs hosted by eBay Picture Services or a maximum of 6 picture URLs

+						hosted by a third-party vendor. If you specify multiple vendor-hosted

+						pictures in listing calls, PhotoDisplay must be set to

+						VendorHostedPictureShow. You cannot mix vendor-hosted and

+						site-hosted pictures within the same listing.&lt;br&gt;&lt;br&gt;

+						On the US eBay Motors site (for all vehicle listings), and on the

+						eBay Canada site for motors, the picture pack of a listing can

+						contain up to 24 photos. &lt;br&gt;&lt;br&gt;

+						On the eBay Live Auctions site, a listing can have a maximum of 5

+						picture URLs hosted by eBay Picture Services or a third

+						party.&lt;br&gt;&lt;br&gt;

+						If you embed pictures in the description (by using IMG tags) instead

+						of using PictureURL, but you want a camera icon to appear in search

+						and listing pages, specify the following "clear image" URL in

+						PictureURL: http://pics.ebay.com/aw/pics/dot_clear.gif. This clear

+						image is not supported for eBay Express.&lt;br&gt;&lt;br&gt;

+						For VerifyAddItem, you can use the following fake eBay Picture

+						Services URL (http://i2.ebayimg.com/abc/M28/dummy.jpg) to verify

+						that your application is obtaining the correct fees for the quantity

+						of images you pass in.&lt;br&gt;&lt;br&gt;

+						To remove a picture when revising or relisting an item, specify

+						PictureDetails with all the pictures that you want the listing to

+						include. That is, you need to completely replace the original set of

+						URLs with the revised set. To remove all pictures from a listing,

+						specify item.PictureDetails.PictureURL in DeletedField.

+					</xs:documentation>

+					<xs:appinfo>

+							<MaxLength>150</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PictureSource" type="ns:PictureSourceCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The service hosting the images in PictureURL, if any.

+					This information is primarily useful for Picture Manager subscribers, who pay a

+					flat subscription fee instead of individual picture fees per listing.

+					Only returned when PictureURL is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerActionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PictureManagerActionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies an action to be performed on a folder or setting in the user's Picture

+				Manager account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Add">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Adds a folder, picture, or setting  to the account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Delete">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Deletes a folder, picture, or setting from the account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Rename">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Renames a folder or picture.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Move">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Moves a picture to another folder.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Change">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Changes a subscription level.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerDetailLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PictureManagerDetailLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies a detail level for a response to a Picture Manager call.

+				Use a value for this element, rather than a value for DetailLevel.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ReturnAll">

+				<xs:annotation>

+					<xs:documentation>

+						(in) All pictures, folders, and account settings. Default value.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReturnSubscription">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Only data about the account subscription.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReturnPicture">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Return only data about pictures and folders in the authenticated user's account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerDetailsType.xsd #####

+

+-->

+	<xs:complexType name="PictureManagerDetailsType">

+		<xs:sequence>

+			<xs:element name="SubscriptionLevel" type="ns:PictureManagerSubscriptionLevelCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The level of Picture Manager subscription. Each level has a monthly fee

+						and provides a certain amount of storage space.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnSubscription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StorageUsed" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The amount of storage already in use. Measured in bytes. Read-only value.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnSubscription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalStorageAvailable" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The amount of storage space remaining in the authenticated user's album.

+						Measured in bytes. Read-only value.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnSubscription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="KeepOriginal" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether to keep a copy of the original picture without resizing.

+						Default is false. true = keep originals.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WatermarkEPS" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether to show the EPS watermark when photos are displayed.

+						Default is false. true = show.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WatermarkUserID" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether to show the user ID watermark when photos are displayed.

+						Default is false. true = show.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Folder" type="ns:PictureManagerFolderType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						The folder requested in the album.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerFolderType.xsd #####

+

+-->

+	<xs:complexType name="PictureManagerFolderType">

+		<xs:annotation>

+			<xs:documentation>

+				 A folder in the authenticated user's album. By default, all folders and their pictures are

+				 returned. If a folder ID is specified, the folders' metadata and contents are returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FolderID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The ID of the folder.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The name of the folder.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>55</MaxLength>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Picture" type="ns:PictureManagerPictureType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A picture within the folder, identified by a name, date, URL, and other metadata.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerPictureDisplayType.xsd #####

+

+-->

+	<xs:complexType name="PictureManagerPictureDisplayType">

+		<xs:annotation>

+			<xs:documentation>

+				Defines various styles of picture display for images in Picture Manager albums.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DisplayType" type="ns:PictureManagerPictureDisplayTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						 The style of picture display, with a maximum size.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="URL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The URL to the image in the Picture Manager album.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Size" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The total file size of the picture, in bytes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Height" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The height of a specific image, or the maximum allowed height, in pixels.

+						Varies for different calls.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Width" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The width of a specific image, or the maximum allowed width, in pixels.

+						Varies for different calls.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerPictureDisplayTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PictureManagerPictureDisplayTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies the types of images that can be stored in a Picture Manager album.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Thumbnail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A small image, thumbnail size. Maximum size 96 pixels.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BIBO">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A BIBO image. Maximum size 200 pixels.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Standard">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A standard size image. Maximum size 400 pixels.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Large">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A large image. Maximum size 500 pixels.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Supersize">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) A very large image. Maximum size 800 pixels.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Original">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The original uploaded image.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerPictureType.xsd #####

+

+-->

+	<xs:complexType name="PictureManagerPictureType">

+		<xs:annotation>

+			<xs:documentation>

+				A picture in a Picture Manager album.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="PictureURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The URL that identifies the picture in the album. If a URI has

+						spaces, replace them with %20.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The name of the picture, specified by the user.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Date" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The date the picture was uploaded to the Picture Manager account.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisplayFormat" type="ns:PictureManagerPictureDisplayType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						The type of picture display in Picture Manager.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerDetails</CallName>

+							<DetailLevels>none, ReturnPicture, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPictureManagerDetails</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerSubscriptionLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PictureManagerSubscriptionLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies the level of the authenticated user's Picture Manager subscription.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Free">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Free to Stores users.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Level1">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 10 MB of storage.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Level2">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 50 MB of storage.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Level3">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 125 MB of storage.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Level4">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) 300 MB of storage.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureManagerSubscriptionType.xsd #####

+

+-->

+	<xs:complexType name="PictureManagerSubscriptionType">

+		<xs:annotation>

+			<xs:documentation>

+				Describes one type of Picture Manager subscription that is available.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SubscriptionLevel" type="ns:PictureManagerSubscriptionLevelCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+			      The level of the subscription.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Fee" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+			      The monthly fee for the subscription. Read-only value.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StorageSize" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+			      The total amount of storage space available for the subscription type.

+			      Read-only value.

+			    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetPictureManagerOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PictureSourceCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PictureSourceCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Specifies the service that is used to host a listing's pictures.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="EPS">

+				<xs:annotation>

+					<xs:documentation>

+                (out) The PictureURL images are hosted by eBay Picture Services

+                and the seller is not a Picture Manager subscriber.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PictureManager">

+				<xs:annotation>

+					<xs:documentation>

+                (out) The PictureURL images are hosted by eBay Picture Manager

+                and the seller is a Picture Manager subscriber.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Vendor">

+				<xs:annotation>

+					<xs:documentation>

+                (out) The PictureURL images are not hosted by eBay.

+                (Only applicable to PictureDetails. Not applicable to SiteHostedPicture.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PriceRangeFilterType.xsd #####

+

+-->

+	<xs:complexType name="PriceRangeFilterType">

+		<xs:annotation>

+			<xs:documentation> 

+        One of the data filters used when searching for items using

+        GetSearchResults. Allows filtering based on the current price of items.

+        Properties allow for defining a range within prices must fall to be

+        returned in the result set, a minimum price for items returned, or a

+        maximum price for items returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MaxPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Specifies the maximum current price an item listing can have to be included in

+            the searches result set. Use alone to specify a maximum price or with MinPrice

+            to define a range the items' prices must be.

+            See "Data Types" in the eBay Web Services Guide for information about specifying

+            double values.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Specifies the minimum current price an item listing can have to be included in

+            the searches result set. Use alone to specify a minimum price or with MaxPrice

+            to define a range the items' prices must be.

+            See "Data Types" in the eBay Web Services Guide for information about specifying

+            double values.

+					</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetSearchResults</CallName>

+								<RequiredInput>No</RequiredInput>

+							</CallInfo>

+						</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PricingRecommendationsType.xsd #####

+

+-->

+	<xs:complexType name="PricingRecommendationsType">

+		<xs:annotation>

+			<xs:documentation> 

+				Pricing data returned from the Product Pricing engine.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ProductInfo" type="ns:ProductInfoType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            A product's pricing data (if any) and brief information about the product. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProPackEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="ProPackEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the ProPack feature (a feature pack). If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProPackPlusEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="ProPackPlusEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the ProPackPlus feature (a feature pack). If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProStoresCheckoutPreferenceType.xsd #####

+

+-->

+	<xs:complexType name="ProStoresCheckoutPreferenceType">

+	<xs:annotation>

+		<xs:documentation>

+			Details about ProStores and checkout preferences.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="CheckoutRedirectProStores" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates whether third party checkout was enabled for ProStores.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUserPreferences</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ProStoresDetails" type="ns:ProStoresDetailsType" minOccurs="0" maxOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Details about the store.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUserPreferences</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProStoresDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ProStoresDetailsType">

+	<xs:annotation>

+		<xs:documentation>

+			Details about the store.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="SellerThirdPartyUsername" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The username associated with the store.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUserPreferences</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="StoreName" type="xs:string" minOccurs="0" >

+			<xs:annotation>

+				<xs:documentation>

+					The name of the store.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUserPreferences</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="Status" type="ns:EnableCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The status--whether enabled or disabled.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUserPreferences</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductArrayType.xsd #####

+

+-->

+	<xs:complexType name="ProductArrayType">

+		<xs:annotation>

+			<xs:documentation>

+Container for a list of eBay Express products. Can contain zero, one, or multiple

+ExpressProductType objects, each of which conveys the data for one product.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Product" type="ns:ExpressProductType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					Contains the data properties that define one eBay catalog product that matches the request, if any.

+					GetSearchResultsExpress only returns products when matching products are found.

+					For each product, the set of fields returned is controlled by the value of ProductDetails in the request.

+					Multiple Product nodes can be returned (up to the amount specified in EntriesPerPage).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductFamilyType.xsd #####

+

+-->

+	<xs:complexType name="ProductFamilyType">

+		<xs:annotation>

+			<xs:documentation>

+A set of results returned from a catalog product search. Use GetProductSearchResults 

+or GetProductFamilyMembers to perform the search.

+      See the guide for information about Pre-filled Item Information (Catalogs) functionality.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ParentProduct" type="ns:ProductType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            A transient header that describes the current search results. Contains a 

+            an ID, a subset of attributes, and a typical stock photo 

+            to help a user easily distinguish the products in the current result set

+            from products in other result sets returned in the same response. 

+            One ParentProduct is returned per ProductFamily.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FamilyMembers" type="ns:ProductType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            A set of products (within the same product family) that match the search query. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="hasMoreChildren" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+         If true, the product family has more products than you requested in

+         MaxChildrenPerFamily for a query in the GetProductSearchResults request. 

+         In this case, no products are returned in the GetProductSearchResults response.

+         (Call GetProductFamilyMembers to retrieve all products in the family.)

+					If false, the product family has MaxChildrenPerFamily or fewer product

+					children, and the call returns all products in the family.

+         	</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductFinderConstraintType.xsd #####

+

+-->

+	<xs:complexType name="ProductFinderConstraintType">

+		<xs:annotation>

+			<xs:documentation>

+      An attribute (constraint) that was specified in a search request that was 

+      based on a product finder query. Used to help you map each query in a batch

+      request to the corresponding search result in the response.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DisplayName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The search attribute name (e.g., Manufacturer). 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisplayValue" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The search attribute value the user specified in the query 

+            (e.g., the actual name the user chose for the manufacturer).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductInfoType.xsd #####

+

+-->

+	<xs:complexType name="ProductInfoType">

+		<xs:sequence>

+			<xs:element name="AverageStartPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The average start price (minimum bid), if any, of completed auction items that were listed

+            with Pre-filled Item Information from this product.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>PricingRecommendations</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AverageSoldPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The average sold price (winning bid, Buy It Now price, or fixed price), if any, of

+					completed items that were listed with Pre-filled Item Information from this product.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>PricingRecommendations</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Title" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Title associated with the product. This value can be used as the basis for a

+					suggested listing title. If the title is longer than 55 characters, your application

+					should make sure the suggested title has a max length of 55 characters so that

+					it will be valid for the AddItem family of calls.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>1024</MaxLength>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+		<xs:attribute name="productInfoID" type="xs:string">

+			<xs:annotation>

+				<xs:documentation>

+				Unique identifier for the product. See the Developer's Guide for information about

+				eBay product IDs. If the primary and secondary category are both catalog-enabled, this

+				ID corresponds to the primary category.

+				</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>4000</MaxLength>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductListingDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ProductListingDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains product information that can be included in a listing.

+				Applicable for listings that use eBay's Pre-filled Item Information feature.

+				See the Developer's Guide for details on working with Pre-filled Item Information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ProductID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Applicable when ProductListingDetails is used. Unique identifier for

+						the product. See the Developer's Guide for information about determining product IDs.

+						If the primary and secondary categories are both catalog-enabled, this ID should correspond to the primary

+						category (not the secondary category).

+						In item-listing requests, if you pass in an old product ID, eBay will

+						list the item with the latest version of the product and the latest product ID, and the call

+						will return a warning indicating that the data has changed.

+						To list an item with Pre-filled Item Information by

+						using an ISBN, EAN, or UPC value, use ExternalProductID (defined on AddItem) instead.

+						Either ExternalProductID (for an ISBN, UPC, EAN or eBay product ID)

+						or Item.ProductListingDetails.ProductID (for an eBay product ID) can be specified

+						in AddItem requests, but not both.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>4000</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="IncludeStockPhotoURL" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, indicates that the item listing includes the stock photo.

+						To use an eBay stock photo in an item listing, set IncludeStockPhotoURL to true.

+						If a stock photo is available, it is used at the top of the View Item page and in

+						the Item Specifics section of the listing. If you also include Item.PictureDetails.PictureURL,

+						the stock photo only appears in the Item Specifics section of the listing. Other pictures

+						you specify by using Item.PictureDetails.PictureURL appear in a separate section of the listing.

+						If you use Item.ExternalProductID instead of Item.ProductListingDetails,

+						eBay sets IncludeStockPhotoURL to true (and you cannot set it to false).

+						In GetItem, the URL of the stock photo will be returned in StockPhotoURL.

+						If you set IncludeStockPhotoURL to false, the stock photo does not appear in the listing at all.&lt;br&gt;&lt;br&gt;

+						To be considered for eBay Express, in most cases a listing must include a picture or a gallery URL.

+						You can choose to use the eBay stock photo for this purpose.

+						See "Working with eBay Express Listings" in the eBay Web Services Guide.&lt;br&gt;&lt;br&gt;

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="IncludePrefilledItemInformation" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, specifies that the listing should include additional information about the product,

+						such as a publisher's description or film credits. Such information is hosted through the eBay site

+						and cannot be edited. If true, Item.Description is optional in item-listing requests.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UseStockPhotoURLAsGallery" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, indicates that the stock photo for an item (if available) is

+						used as the gallery thumbnail. When listing an item, IncludeStockPhotoURL

+						must also be true and Item.PictureDetails.GalleryType must be passed in with a value of Gallery

+						or Gallery Featured (but not both). Passing in Item.PictureDetails.GalleryURL takes precedence

+						over UseStockPhotoURLAsGallery. See "Describing Items in a Listing" in the

+						eBay Web Services Guide for additional validation rules for pictures.

+						If you use Item.ExternalProductID instead of Item.ProductListingDetails,

+						eBay sets UseStockPhotoAsGallery to true (and you cannot set it to false).

+						To be considered for eBay Express, in most cases a listing must include a picture or a gallery URL.

+						You can choose to use the eBay stock photo for this purpose.

+						See "Working with eBay Express Listings" in the eBay Web Services Guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StockPhotoURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Fully qualified URL for a standard image (if any) that is associated with the product.

+						A seller can choose to include the stock photo in the listing and as the gallery thumbnail

+						by setting IncludeStockPhotoURL and UseStockPhotoURLAsGallery to true. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>							

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Copyright" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Copyright statement indicating the source of the product information. This information will be

+						included in the listing with Pre-filled Item Information. Your application should also display

+						the copyright statement when rendering the Pre-filled Item Information.

+						If more than one copyright statement is applicable, they can be presented to the

+						user in alphabetical order. Returned as HTML.

+						Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductRecommendationsType.xsd #####

+

+-->

+	<xs:complexType name="ProductRecommendationsType">

+		<xs:annotation>

+			<xs:documentation> 

+				A list of products returned from the Suggested Attributes engine.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Product" type="ns:ProductInfoType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+            A suggested product to use to list an item with Pre-filled Item Information.

+            Returned from GetItemRecommendations when the Suggested Attributes engine is used 

+            See the Developer's Guide for additional details.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemRecommendations</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductSearchPageType.xsd #####

+

+-->

+	<xs:complexType name="ProductSearchPageType">

+		<xs:annotation>

+			<xs:documentation>

+

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DataElements" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Replaced by DataElementSet.DataElement as of release 449. 

+						This field is still returned for backward compatibility, but it may be deprecated 

+						in a future release. Applications should remove dependencies on this element and 

+						start using DataElementSet.DataElement instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchCharacteristicsSet" type="ns:CharacteristicsSetType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+          A list of attributes that describe the choice of search criteria 

+          for the specified characteristic set. The order in which the criteria are returned 

+          is not significant and may vary for different requests. See the eBay Web Services guide 

+          for details about how to use this data as input to GetProductSearchResults.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchType" type="ns:CharacteristicsSearchCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+          Indicates whether one attribute or multiple attributes can be used as the search keyword 

+          when calling GetProductSearchResults. Applications can ignore this data because 

+          GetProductSearchPage only supports single-attribute searches.

+          Use GetProductFinder to determine valid multi-attribute searches.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SortCharacteristics" type="ns:CharacteristicType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+          A product aspect or feature that can be used as a key for sorting catalog search results. 

+          This does not necessarily match a searchable attribute. For example, you might be able to 

+          search on a product's title but sort the results by the release date or the manufacturer's 

+          suggested retail price (MSRP). At least one sort attribute is always returned.

+          Applications should ensure that only one attribute is selected as a sort key from 

+          these results (before calling GetProductSearchResults). The default sort key is the one 

+          with the lowest DisplaySequence value.

+          The order in which the SortCharacteristics nodes are returned is not significant and may vary for 

+          different requests.

+          See the eBay Web Services guide for details about how to use this data as input to 

+          GetProductSearchResults.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DataElementSet" type="ns:DataElementSetType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					Contains helpful hints for the user. Usage of this information is optional. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchPage</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductSearchResultType.xsd #####

+

+-->

+	<xs:complexType name="ProductSearchResultType">

+		<xs:annotation>

+			<xs:documentation>

+Container for the results of a product query. 

+Supports Pre-filled Product Information functionality.

+See the Developer's Guide for more information about working with this data.

+				</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ApproximatePages" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+               (out) The approximate quantity of pages of results that match the product search query 

+               (TotalProducts divided by the median number of products per page examined so far). 

+               Lowest value is 1.

+               For GetProductSearchResults, obsolete (not returned) with compatibility level 387 and higher.

+               For GetProductFamilyMembers, obsolete (not returned) with compatibility level 415 and higher.

+               Applications should remove dependencies on this field and use AttributeSet.ApproximatePages instead.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeSetID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+               (out) Constant value that identifies the attribute set in a language-independent way.

+               Unique across all eBay sites. Corresponds to a characteristic set associated 

+               with the current set of search results.

+               For GetProductSearchResults, obsolete (not returned) with compatibility level 387 and higher.

+               For GetProductFamilyMembers, obsolete (not returned) with compatibility level 415 and higher.

+               Applications should remove dependencies on this field and use AttributeSet.AttributeSetID instead.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HasMore" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	            (out) If true, the query results contain additional pages (higher than the current page number). 

+               For GetProductSearchResults, obsolete (not returned) with compatibility level 387 and higher.

+               For GetProductFamilyMembers, obsolete (not returned) with compatibility level 415 and higher.

+               Applications should remove dependencies on this field and use AttributeSet.HasMore instead.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFamilies" type="ns:ProductFamilyType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+               (out) ProductFamilies represents one product family. Multiple ProductFamilies 

+               properties can be returned. A product family identifies a group of related products. 

+               For example, the movie "My Favorite Movie: The Sequel" might be released on DVD, but there 

+               might be several editions of the DVD (e.g., in different languages) with different ISBN numbers. 

+               All variations are part of the same product family ("My Favorite Movie: The Sequel" in the DVD format). 

+               For GetProductSearchResults, obsolete (not returned) with compatibility level 387 and higher.

+               For GetProductFamilyMembers, obsolete (not returned) with compatibility level 415 and higher.

+               Applications should remove dependencies on this field and use AttributeSet.ProductFamilies instead.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFinderConstraints" type="ns:ProductFinderConstraintType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+	            A list of attributes (constraints) that were specified in the search request.

+               This information is useful when multiple queries were specified in a 

+               GetProductSearchResults request. Use this information to map each query

+               to each result in the response object.

+               Applicable when the search request was constructed based on a product finder.

+               For GetProductSearchResults, obsolete (not returned) with compatibility level 387 and higher.

+               Applications should remove dependencies on this field and use AttributeSet.ProductFinderConstraints instead.

+               Not applicable to GetProductFamilyMembers.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TooManyMatchesFound" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+               (out) If too many search results match the query, the TooManyMatchesFound tag is returned with a warning. 

+               In this case, it may be a good idea to ask the user to specify more details to narrow the search 

+               (e.g., specify "My Favorite Movie" instead of "My").

+               For GetProductSearchResults, obsolete (not returned) with compatibility level 387 and higher.

+               Applications should remove dependencies on this field and use AttributeSet.TooManyMatchesFound instead.

+	            Not applicable to GetProductFamilyMembers.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalProducts" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	            (out) The total quantity of products that match the query

+	            (within the characteristic set). 

+               This can exceed the actual number of products returned in 

+               the current virtual page.

+               For GetProductSearchResults, obsolete (not returned) with compatibility level 387 and higher.

+               For GetProductFamilyMembers, obsolete (not returned) with compatibility level 415 and higher.

+               Applications should remove dependencies on this field and use AttributeSet.TotalProducts instead.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+               (out) Key you specified in ProductSearchID in the search request to 

+               distinguish between query results. Primarily useful when conducting 

+               multiple searches in the same call. If no ProductSearchID value was 

+               specified in the request, returns the array index of the search result 

+               (beginning with 0). Not applicable to GetProductFamilyMembers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NumProducts" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+               (out) Total quantity of products that match the search request 

+               (across all characteristic sets). This value can exceed the actual 

+               quantity of products returned in the current virtual page.

+               Not applicable to GetProductFamilyMembers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeSet" type="ns:ResponseAttributeSetType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+               (out) A result containing a set of one or more product families. 

+               For GetProductSearchResults, if QueryKeywords and multiple characteristic set IDs were 

+               specified in the request, multiple AttributeSet objects can be returned. 

+               Each AttributeSet corresponds to a characteristic set ID specified 

+               in the request. See the eBay Web Services guide for more information 

+               about working with this data.

+               For GetProductSearchResults, only returned with compatibility level 387 and higher.

+               For GetProductFamilyMembers, only returned with compatibility level 415 and higher.

+               For lower compatibility levels, see ProductSearchResult.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisplayStockPhotos" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+               (out) If true, your application should attempt to display stock photos that are returned. 

+               If false, your application should not attempt to display any stock photos that are returned. 

+               This recommendation is useful for catalog data related to products like coins, 

+               where stock photos are not applicable. 

+               An application with a graphical user interface can use this flag 

+               to determine when to hide stock photo widgets for a set of search results.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductSearchType.xsd #####

+

+-->

+	<xs:complexType name="ProductSearchType">

+		<xs:annotation>

+			<xs:documentation>

+      Container for a product query and pagination instructions.

+      This data is applicable when searching eBay catalogs for stock product

+      information (to use in listings with Pre-filled Item Information.)

+      Input only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ProductSearchID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Unique alphanumeric key help you distinguish between query results in the response.

+            You define the key. Each search request ID must be unique within the same call.

+            Primarily useful when conducting multiple searches in the same call.

+            If not specified, the ProductSearchResult.ID values in the response are

+            indexed starting from 0 (zero).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeSetID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+						Identifier for a characteristic set (an attribute set) that is mapped to

+						a catalog-enabled category (unique across all eBay sites).

+						Required when you use SearchAttributes

+						(for searches based on product search page and product finder data).

+						Returns an error with QueryKeywords (use CharacteristicSetIDs instead).

+						Use GetProductSearchPage or GetProductFinder to determine valid IDs for the

+						type of search you are performing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFinderID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Required when you are performing a sell-side product finder search.

+						(Not applicable to product search page searches.)

+            Numeric identifier for a sell-side product finder that was used to retrieve

+            the search attributes being used in the request. The product finder must be

+            mapped to a catalog-enabled category (i.e., it cannot be a buy-side product finder ID)

+            associated with the characteristics set.

+            Use a product finder when you want to specify multiple attributes in a

+            product search query. Call GetCategory2CS to determine which categories

+            support sell-side product finder searches.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Identifier for a representative stock product in a product family.

+            Used as input in GetProductFamilyMembers requests to identify a product family.

+            Use GetProductSearchResults to determine the available IDs.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>4000</MaxLength>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SortAttributeID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique identifier for a sortable attribute. Use GetProductSearchPage

+						or GetProductFinder to determine the valid sort attribute IDs for the

+						specified characteristic set (including the default sort attribute that will be

+						used if you do not specify this field).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxChildrenPerFamily" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Pagination instruction that specifies the maximum quantity of products to return for each

+            product family within the search response whose ID matches the current request's ID.

+            In the response, if the last family returned contains MaxChildrenPerFamily or fewer

+            additional products, those additional products are also returned (i.e., the actual quantity

+            returned for the last family can exceed the specified maximum value).

+            See "Limit the Quantity of Products Returned Per Family" in the eBay Web Services Guide.

+            The value should not include punctuation (i.e., a thousands separator is not valid).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<Min>1</Min>

+							<Max>20000</Max>

+							<Default>5</Default>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchAttributes" type="ns:SearchAttributesType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A predefined attribute against which to search (e.g., Author).

+						Use this to create a query based on a set of Item Specifics from the catalog.

+						Both the product title and product Item Specifics are searched.

+						If the query includes multiple SearchAttributes fields (one for each attribute),

+						the search engine will apply "AND" logic to the query.

+						Call GetProductSearchPage or GetProductFinder to determine the list of valid attributes and how many are

+						permitted for the specified characteristic set. See the eBay Web Services guide for details.

+						For each ProductSearch, either SearchAttributes or QueryKeywords is required (but do not pass both).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Pagination" type="ns:PaginationType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Pagination instruction that specifies the virtual page of data to return

+            per search request. Default page number is 0 (the first page).

+            Specify a page number of 0 or a positive value lower

+            than the approximate number of pages available.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AvailableItemsOnly" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Filter to only retrieve products that match active eBay listings.

+						This may be used as an indicator to determine which products other sellers

+						recently used to pre-fill similar listings.

+						If true, only retrieve products that have been used to pre-fill active listings on the

+            specified eBay site.

+						If false, retrieve all products that match the query.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+							<Default>false</Default>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QueryKeywords" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						One or more keywords to search for in the characteristic set specified in

+            CharacteristicSetIDs. Both the product title and Item Specifics are searched.

+						For each ProductSearch, either SearchAttributes or QueryKeywords is required

+						(but do not pass both). Blank searches are not applicable (and result in a warning).

+						The words "and" and "or" are treated like any other word.

+						Only use "and", "or", or "the" if you are searching for products containing

+						these words. To use AND or OR logic, use eBay's standard search string modifiers.

+						Wildcards (+, -, or *) are also supported. Be careful when using spaces before or after

+						modifiers and wildcards.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>350</MaxLength>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharacteristicSetIDs" type="ns:CharacteristicSetIDsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+             List of one or more characteristic set IDs that indicate which characteristic sets

+             to search in. If not specified, the search is conducted across all characteristic sets.

+						Only applicable when QueryKeywords is specified. Ignored when SearchAttributes is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductType.xsd #####

+

+-->

+	<xs:complexType name="ProductType">

+		<xs:annotation>

+			<xs:documentation>

+      A prototype description of a well-known type of item, such as a popular book.

+      Applicable when working with eBay's Pre-filled Item Information feature.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CharacteristicsSet" type="ns:CharacteristicsSetType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            A set of characteristics that describe the product in a standardized way.

+            In responses, only the attributes and values that applicable for the

+            specified product are returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductSellingPages</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DetailsURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Fully qualified URL for optional information about the product,

+            such as a movie's description or film credits. This information

+            is hosted through the eBay site and cannot be edited.

+            Applications can include this URL as a link in product search results

+            so that end users can view additional descriptive details about the product.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<Context>FamilyMembers</Context>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NumItems" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Total number of active listings on the specified eBay site

+            that were pre-filled based on this product.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Context>FamilyMembers</Context>

+							<Returned>Always</Returned>

+							<Min>0</Min>

+							<Max/>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Lowest current price of active and ended listings on the specified eBay site that were

+            pre-filled based on this product. The value is in the specified site's currency.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Context>FamilyMembers</Context>

+							<Returned>Always</Returned>

+							<Min>0.0</Min>

+							<Max/>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Highest current price of active and ended listings on the specified eBay site that were

+						pre-filled based on this product. The value is in the specified site's currency.

+						Round numbers (such as 15.0) may only show one zero after the decimal (as with any double in the schema).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Context>FamilyMembers</Context>

+							<Returned>Always</Returned>

+							<Min>0.0</Min>

+							<Max/>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+		<xs:attribute name="productID" type="xs:string">

+			<xs:annotation>

+				<xs:documentation>

+         Unique identifier for the product. The ID is defined in an eBay catalog.

+         Product IDs may change over time. Therefore, use the catalog search calls

+         (GetProductSearchResults and GetProductFamilyMembers)

+         to update any product IDs that you store locally.

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>4000</MaxLength>

+					<CallInfo>

+						<CallName>GetProductFamilyMembers</CallName>

+						<CallName>GetProductSearchResults</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetProductSellingPages</CallName>

+						<RequiredInput>Yes</RequiredInput>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+		<xs:attribute name="stockPhotoURL" type="xs:anyURI">

+			<xs:annotation>

+				<xs:documentation>

+					Fully qualified URL for a standard image that is associated with the product, if available.

+         Allows the user to preview the image from your application.

+         A user can choose to include the stock photo in a listing.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetProductFamilyMembers</CallName>

+						<CallName>GetProductSearchResults</CallName>

+						<CallName>GetProductSearchPage</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+		<xs:attribute name="title" type="xs:string">

+			<xs:annotation>

+				<xs:documentation>

+         The name of the product, as defined within the catalog. Not necessarily the

+         same as the "Title" attribute in the characteristics set meta-data, if any.

+         On the eBay site, this title serves as the basis for the suggested item title

+         (truncated to the max length permitted for Title in item-listing calls).

+         Applications can use this value to supply a suggested listing title to users.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetProductFamilyMembers</CallName>

+						<Context>FamilyMembers</Context>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetProductSearchResults</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:attribute>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProductUseCaseCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ProductUseCaseCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Specifies the context in which the product selling page is being called, 

+which will imply certain validation rules. Use this code list to make sure 

+you retrieve the appropriate version of product information and characteristic 

+meta-data when you are listing an item with Pre-filled Item Information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AddItem">

+				<xs:annotation>

+					<xs:documentation>

+            (in) Use this code when calling GetProductSellingPages 

+            before adding an item. This retrieves the latest product ID and the corresponding characteristic meta-data. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSellingPages</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ReviseItem">

+				<xs:annotation>

+					<xs:documentation>

+            (in) Use this code when calling GetProductSellingPages 

+            before revising an item that already contains product information. 

+            If the product ID or data has changed, the original 

+            product ID that you passed in and the data associated with that original version of the 

+            product is returned. This is useful because the original Pre-filled Item Information 

+            is used when you call ReviseItem.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSellingPages</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RelistItem">

+				<xs:annotation>

+					<xs:documentation>

+            (in) Use this code when calling GetProductSellingPages 

+            before relisting an item that already contains product information. 

+            This retrieves the latest product ID and the 

+            corresponding characteristic meta-data (same data as AddItem). 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSellingPages</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PromotedItemType.xsd #####

+

+-->

+	<xs:complexType name="PromotedItemType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the data describing one cross-promoted item.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  The unique ID of the cross-promoted item.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PictureURL" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						URL for an image hosted by eBay Picture Services (EPS) or self-hosted for

+						the promoted item, if any.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SelfHostedURL" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For an item listed with multiple self-hosted pictures, contains the URLs of the

+						self-hosted pictures in addition to the one listed in PictureURL.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Position" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The ordinal position of the cross-promoted item

+						in the display. If the display is from top to bottom,

+						1 is at top. If the display is from left to right, 1

+						is at left. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotionPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The price of the cross-promoted item. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotionPriceType" type="ns:PromotionItemPriceTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The listing type for the promoted item and how the item price

+						is used, either AuctionPrice or BuyItNowPrice.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SelectionType" type="ns:PromotionItemSelectionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The manner in which the cross-promoted item was chosen

+						to be associated with the referring item. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Title" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The title of the promoted item for display in the

+						referring item's page. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingType" type="ns:ListingTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The listing type under which the cross-promoted item

+						is being offered. Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCrossPromotions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PromotionItemPriceTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PromotionItemPriceTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				PromotionItemPriceTypeCodeType - Type declaration to be used by other schema. 

+				Indicates the type of offer that can be made for a cross-promoted item. Note that 

+				for a Chinese listing with a still-active Buy It Now option, either a Bid 

+				(Auction) or a Buy It Now type offer may be made.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AuctionPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Bid offer in a competitive-bidding listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyItNowPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Buy It Now offer in a fixed-price or Buy It Now listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BestOfferOnlyPrice">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Best Offer in Best Offer Only listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ClassifiedAdPrice">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PromotionItemSelectionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PromotionItemSelectionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           PromotionItemSelectionCodeType - Type declaration to be used by

+           other schema. Indicates how the cross-promoted item was selected for

+           association with the referring item. If the seller defined an

+           item-to-item cross-promotion rule and the item was selected because

+           of that rule, then "Manual" is returned. If the seller defined some

+           other rule and the item was selected because of that rule (or the

+           seller defined no rules that could be applied), then "Automatic" is

+           returned.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Manual">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Manual selection.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Automatic">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Automatic selection.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PromotionMethodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PromotionMethodCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			  Indicates the type of cross-promotion used.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="CrossSell">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) A cross-sell. The seller presents items that are

+				related to or can be used with the item the buyer is bidding on or has

+				purchased.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UpSell">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) An upsell. The seller presents items that are higher 

+				quality or more expensive than the item the buyer is bidding 

+				on or has purchased.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/PromotionRuleArrayType.xsd #####

+

+-->

+	<xs:complexType name="PromotionRuleArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+			Contains a list of cross-promotion rules. Each PromotionRuleType

+			defines one rule.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="PromotionRule" type="ns:PromotionRuleType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+					  Defines one cross-promotion rule.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PromotionRuleType.xsd #####

+

+-->

+	<xs:complexType name="PromotionRuleType">

+		<xs:annotation>

+			<xs:documentation>

+			  Defines a rule that promotes items or a store category when

+			  a buyer views a specific item or store category.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="PromotedItem" type="ns:PromotedItemType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					The unique item ID of the cross-promoted item. Use for an

+					ItemToItem rule.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SiteID" type="ns:SiteCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						 The site associated with the referring eBay category. Required only if

+						 the rule uses a referring eBay category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotedStoreCategoryID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The ID of the Store category being promoted. Use with a promotion scheme of

+					ItemToStoreCat, StoreToStoreCat, ItemToDefaultRule, or

+					DefaultRule. Only for Store owners.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotedeBayCategoryID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The ID of the eBay category being promoted. Use with a promotion scheme of

+					ItemToDefaultRule or DefaultRule.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotedKeywords" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The keywords that identify promoted items. Use with a promotion scheme of

+					ItemToDefaultRule or DefaultRule. Only for Store owners.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReferringItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The unique ID of the item the buyer is viewing or purchasing.

+					Use with a promotion scheme of ItemToItem or ItemToStoreCat.

+					Always use ReferringItemID or ReferringStoreCategoryID, but

+					not both.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReferringStoreCategoryID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The ID of the store category the user is browsing. Use with a

+					promotion scheme of 

+					StoreToStoreCat, ItemToDefaultRule or DefaultRule.

+					Always use ReferringStoreCategoryID or ReferringItemID, but

+					not both.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReferringeBayCategoryID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The ID of the eBay category being referred. Use with a promotion scheme

+					or ItemToDefaultRule or DefaultRule.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReferringKeywords" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The keywords that identify referring items. Use with a promotion scheme of

+					ItemToDefaultRule or DefaultRule. Only for Store owners.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotionScheme" type="ns:PromotionSchemeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					The type of cross-promotion scheme you are defining.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PromotionMethod" type="ns:PromotionMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					The type of cross promotion, CrossSell or UpSell.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetPromotionRules</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetPromotionRules</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PromotionSchemeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PromotionSchemeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           Identifies the scheme used for a cross-promotion rule.

+           The scheme defines referring and promoted items and categories.

+           To define a rule scheme, you must be the owner of an eBay Store.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ItemToItem">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) The seller specifies individual items in the store that are

+				promoted when a buyer views, bids on, or

+				purchases a store item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemToStoreCat">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) The seller specifies a store category from 

+				which items are promoted when a buyer views, bids on,

+				or purchases an individual item in the store.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StoreToStoreCat">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) The seller specifies referring and promoted categories, both from

+                the store. When a buyer views or acts on any item from that category, items

+                from the promoted category are also displayed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemToDefaultRule">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) The seller specifies a referring item and defines promoted items

+                selected from a store category, eBay category, or keywords.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DefaultRule">

+				<xs:annotation>

+					<xs:documentation>

+                (in/out) The seller specifies a store category or eBay category, with optional

+                keywords, for referring items and one for promoted items. When a referring item

+                is selected from the category and keywords, items from the promoted category and

+                keywords are also displayed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CategoryProximity">

+				<xs:annotation>

+					<xs:documentation>

+		(out) This scheme is returned as a backfill scheme used to promote items.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProximitySearchDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ProximitySearchDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains information for use in proximity search.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="PostalCode" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The postal code where the item is located. This response element is 

+						deprecated and may be removed from the schema in a future release. 

+						Remove application dependencies on this element. For item location, refer to 

+						Item.PostalCode instead.

+					</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetSellerList</CallName>

+								<Returned>Conditionally</Returned>

+								<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+								<TagStatus>Deprecated</TagStatus>

+							</CallInfo>

+							<CallInfo>

+								<CallName>GetBidderList</CallName>

+								<Returned>Always</Returned>

+								<TagStatus>Deprecated</TagStatus>

+							</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ProximitySearchType.xsd #####

+

+-->

+	<xs:complexType name="ProximitySearchType">

+		<xs:annotation>

+			<xs:documentation>

+					Contains data for filtering a search by proximity.

+				</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MaxDistance" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+							The maximum distance from the specified postal code to search for items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PostalCode" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+							The postal code to use as the basis for the proximity search.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>							

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/PurchasePurposeTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="PurchasePurposeTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The purpose of a purchase (e.g., by a PayPal application).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+						Custom Code

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyNowItem">

+				<xs:annotation>

+					<xs:documentation/>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShoppingCart">

+				<xs:annotation>

+					<xs:documentation/>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AuctionItem">

+				<xs:annotation>

+					<xs:documentation/>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GiftCertificates">

+				<xs:annotation>

+					<xs:documentation/>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Subscription">

+				<xs:annotation>

+					<xs:documentation/>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Donation">

+				<xs:annotation>

+					<xs:documentation/>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBayBilling">

+				<xs:annotation>

+					<xs:documentation/>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/QuantityOperatorCodeList.xsd #####

+

+-->

+	<xs:simpleType name="QuantityOperatorCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="LessThan">

+				<xs:annotation>

+					<xs:documentation>

+						Used by QuantityOperator to specify that you are seeking quantities less than Quantity.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LessThanOrEqual">

+				<xs:annotation>

+					<xs:documentation>

+						Used by QuantityOperator to specify that you are seeking quantities less than or equal to Quantity.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Equal">

+				<xs:annotation>

+					<xs:documentation>

+						Used by QuantityOperator to specify that you are seeking quantities equal to Quantity.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GreaterThan">

+				<xs:annotation>

+					<xs:documentation>

+						Used by QuantityOperator to specify that you are seeking quantities greater than Quantity.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GreaterThanOrEqual">

+				<xs:annotation>

+					<xs:documentation>

+						Used by QuantityOperator to specify that you are seeking quantities greater than or equal to Quantity.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/QuestionTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="QuestionTypeCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="General">

+			  <xs:annotation>

+			  	<xs:documentation>

+			  		General questions about the item.

+			  	</xs:documentation>

+			  </xs:annotation>		

+			</xs:enumeration>

+			<xs:enumeration value="Shipping">

+				<xs:annotation>

+					<xs:documentation>

+						 Questions related to the shipping of the item.

+					</xs:documentation>

+			  </xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Payment">

+				<xs:annotation>

+					<xs:documentation>

+						Questions related to the payment for the item.

+					</xs:documentation>

+			  </xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MultipleItemShipping">

+				<xs:annotation>

+					<xs:documentation>

+						Questions related to the shipping of this item

+						bundled with other items also purchased on eBay.

+					</xs:documentation>

+			  </xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Not available.

+					</xs:documentation>

+			  </xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/RCSPaymentStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="RCSPaymentStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The status of a payment.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Canceled">

+				<xs:annotation>

+					<xs:documentation>

+						Payment is in canceled state.

+					</xs:documentation>

+					<!-- N/A to GetSellerPayments -->

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Paid">

+				<xs:annotation>

+					<xs:documentation>

+						Payment is in completed state.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Pending">

+				<xs:annotation>

+					<xs:documentation>

+						Payment is in pending state.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/RangeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="RangeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           Type declaration to be used by other schema. Indicates that the data

+           represents the high or low end in a range, such as a date range,

+           price range, or width range. (For example, when calling

+           GetProductSearchResults, you use range codes to indicate the role of

+           an attribute in a range.)

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="High">

+				<xs:annotation>

+					<xs:documentation>

+                High end of the range.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Low">

+				<xs:annotation>

+					<xs:documentation> 

+                Low end of the range.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/RecipientRelationTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="RecipientRelationCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				A seller can make a Transaction Confirmation Request (TCR) for an item.

+				This code list contains values to specify the current relationship between the seller and the potential buyer.

+				For a seller to make a Transaction Confirmation Request (TCR) for an item, the potential buyer must

+				meet one of the criteria in this code list.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="1">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates that the recipient has one or more bids on the item; the relationship is "bidder."

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="2">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates that the recipient has one or more best offers on the item; the relationship is "best offer buyer." 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="3">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates that the recipient has asked the seller a question about the item; the relationship is "a member with an ASQ question." 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="4">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates that the recipient has a postal code; the relationship is "a member with a postal code."

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+            Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/RecommendationEngineCodeList.xsd #####

+

+-->

+	<xs:simpleType name="RecommendationEngineCodeType">

+		<xs:annotation>

+			<xs:documentation>

+RecommendationEngineCodeType - Type declaration to be used by other schema.

+Identifies the engines that can be used to analyze proposed listing data. 

+See the Developer's Guide for a list of recommendation engines that 

+are currently operational.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ListingAnalyzer">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Listing Analyzer engine; Returns tips related to fields 

+                that a seller wants to specify in a listing.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SIFFTAS">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ProductPricing">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Product Pricing engine. Returns average start and sold prices 

+                of completed items that were listed a specified product ID.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>				

+			</xs:enumeration>

+			<xs:enumeration value="SuggestedAttributes">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Suggested Attributes engine. Returns suggested Item Specifics

+                and catalog products (for Pre-filled Item Information) that have been 

+                used by other sellers who listed similar items in the same category.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>			

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/RefundReasonCodeList.xsd #####

+

+-->

+	<xs:simpleType name="RefundReasonCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Explanation of the reason that the refund is being issued. Applicable to Half.com refunds only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="CannotShipProduct">

+				<xs:annotation>

+					<xs:documentation>

+					Seller is unable to ship the product to the buyer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WrongItemShipped">

+				<xs:annotation>

+					<xs:documentation>

+					Seller shipped the wrong item to the buyer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemBadQuality">

+				<xs:annotation>

+					<xs:documentation>

+					The buyer returned the item due to its quality.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ItemDamaged">

+				<xs:annotation>

+					<xs:documentation>

+					The buyer returned the item due to damage.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerRemorse">

+				<xs:annotation>

+					<xs:documentation>

+					The buyer decided they did not want the item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/RefundTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="RefundTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Explanation of the reason that the refund is being issued. Applicable to Half.com

+				refunds only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Full">

+				<xs:annotation>

+					<xs:documentation>

+					The seller has issued a refund for the transaction price that

+					was originally paid to the seller.

+					(The seller's shipping reimbursement is not included

+					if Half.com calculates the refund amount).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FullPlusShipping">

+				<xs:annotation>

+					<xs:documentation>

+						The seller has issued a refund for the transaction price and

+						shipping reimbursement that was originally paid to the seller.

+						(The buyer's return shipping costs

+						might not be included if Half.com calculates the refund amount.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomOrPartial">

+				<xs:annotation>

+					<xs:documentation>

+						The seller has issued a refund amount that is different from

+						the full refund (with or without shipping). If specified,

+						it may be helpful to explain the amount in your note to the buyer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/RegionDetailsType.xsd #####

+

+-->

+	<xs:complexType name="RegionDetailsType">

+		<xs:annotation>

+			<xs:documentation> 

+				Details about a region.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="RegionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Numeric identifier for a region within a country.&lt;br&gt;&lt;br&gt;

+						Related field:&lt;br&gt;

+						Item.RegionID in GetItem&lt;br&gt;

+						(Ignore region values for all sites except China.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Full name of the region.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ReminderCustomizationType.xsd #####

+

+-->

+	<xs:complexType name="ReminderCustomizationType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies how to return certain reminder types from the user's My eBay account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DurationInDays" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+							(in) The length of time the reminder has existed in the user's My eBay account,

+							in days. Valid values are 1-60.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Include" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+						<xs:documentation>

+								(in) Whether to include information about this type of reminder in the response.

+								When true, the container is returned with default input parameters.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/RemindersType.xsd #####

+

+-->

+	<xs:complexType name="RemindersType">

+	 <xs:annotation>

+			<xs:documentation>

+				Specifies the type of reminders for which you want information.

+			</xs:documentation>

+	 </xs:annotation>

+		<xs:sequence>

+			<xs:element name="PaymentToSendCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of reminders requesting that the buyer send payment.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BuyingReminders</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeedbackToReceiveCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of reminders that feedback has not yet been received by the buyer or seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeedbackToSendCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of reminders that feedback has not yet been sent by the buyer or seller.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="OutbidCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of reminders advising the buyer that the buyer has been

+						outbid.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BuyingReminders</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentToReceiveCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of reminders that the seller has not yet received a payment.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SellingReminders</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SecondChanceOfferCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of reminders requesting that the seller review second

+						chance offers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SellingReminders</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingNeededCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of reminders advising the seller that shipping is

+						needed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SellingReminders</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RelistingNeededCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The number of reminders advising the seller that relisting is needed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayReminders</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SellingReminders</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/RequestCategoriesType.xsd #####

+

+-->

+	<xs:complexType name="RequestCategoriesType">

+		<xs:annotation>

+			<xs:documentation> 

+		A set of parameters that control the retrieval of categories (not items) 

+		that match a search query. In GetSearchResults, at least one child element must 

+		be specified in order to retrieve matching categories. If empty or not present, 

+		no matching category information is returned. .

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CategoriesOnly" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+				Filter to retrieve matching categories but not matching items or buying guides. 

+				If true, only matching categories are returned (with no item or buying guide details). 

+				If false or not present, matching items and matching categories are both returned, 

+				along with buying guide details (if any). 

+				If TotalOnly and Categories.CategoriesOnly are both specified

+				in the request and their values are inconsistent with each other, 

+				TotalOnly overrides Categories.CategoriesOnly.

+				That is, if TotalOnly is true and Categories.CategoriesOnly is false, 

+				the results include matching categories but no item data or buying guides.

+				If TotalOnly is false and Categories.CategoriesOnly is true, the results

+				include matching categories, item data, and buying guides.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxCategories" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Maximum quantity of matching categories to return at the first level of the 

+            category hierarchy (CategoryLevel 1). 

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>3</Default>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxSubcategories" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Maximum quantity of matching subcategories to return at each lower level 

+            of the hierarchy.  

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>3</Default>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Levels" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Filter to control the deepest matching category level to return. 

+            If you specify 0, no category data is returned. If you specify a negative number, 

+            the results are unpredictable.

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>2</Default>

+						<Min>1</Min>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ResponseAttributeSetType.xsd #####

+

+-->

+	<xs:complexType name="ResponseAttributeSetType">

+		<xs:annotation>

+			<xs:documentation>

+A single set of one or more product families and related information

+returned in the results of a product search. Supports Pre-filled Item Information

+functionality. See the Developer's Guide for more information about

+working with this data.

+				</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ApproximatePages" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+						The approximate quantity of pages of results that match the product search query

+               (TotalProducts divided by the median number of products per page examined so far).

+               Always returned when AttributeSet is returned.

+               For GetProductSearchResults, only returned with compatibility level 387 and higher.

+               For GetProductFamilyMembers, only returned with compatibility level 415 and higher.

+               With lower compatibility levels, ProductSearchResult.ApproximatePages is returned instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+							<Min>1</Min>

+							<Max/>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AttributeSetID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+					Numeric value that identifies the attribute set in a language-independent way.

+               Unique across all eBay sites. Corresponds to a characteristic set associated

+               with the current set of search results.

+               Always returned when AttributeSet is returned.

+               For GetProductSearchResults, only returned with compatibility level 387 and higher.

+               For GetProductFamilyMembers, only returned with compatibility level 415 and higher.

+               With lower compatibility levels, ProductSearchResult.AttributeSetID is returned instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HasMore" type="xs:boolean">

+				<xs:annotation>

+					<xs:documentation>

+					If true, the query results contain additional pages (higher than the current page number).

+					You can retrieve more results by incrementing the PageNumber value that was passed in the request.

+               For GetProductSearchResults, only returned with compatibility level 387 and higher.

+               For GetProductFamilyMembers, only returned with compatibility level 415 and higher.

+               With lower compatibility levels, ProductSearchResult.HasMore is returned instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFamilies" type="ns:ProductFamilyType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						ProductFamilies represents one product family. Multiple ProductFamilies

+               properties can be returned. A product family identifies a group of related products.

+               For example, the movie "My Favorite Movie: The Sequel" might be released on DVD, but there

+               might be several editions of the DVD (e.g., in different languages) with different ISBN numbers.

+               All variations are part of the same product family ("My Favorite Movie: The Sequel" in the DVD format).

+               See "Limit the Quantity of Products Returned Per Family" in the eBay Web Services Guide.

+               Always returned when AttributeSet is returned.

+               For GetProductSearchResults, only returned with compatibility level 387 and higher.

+               For GetProductFamilyMembers, only returned with compatibility level 415 and higher.

+               With lower compatibility levels, ProductSearchResult.ProductFamilies is returned instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFinderConstraints" type="ns:ProductFinderConstraintType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					A list of attributes (constraints) that were specified in the search request.

+               This information is useful when multiple queries were specified in a

+               GetProductSearchResults request. Use this information to map each query

+               to each result in the response object.

+               Applicable when the search request was constructed based on a product finder.

+               For GetProductSearchResults, only returned with compatibility level 387 and higher.

+               With lower compatibility levels, ProductSearchResult.ProductFinderConstraints is returned instead.

+               Not applicable to GetProductFamilyMembers.

+               </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TooManyMatchesFound" type="xs:boolean">

+				<xs:annotation>

+					<xs:documentation>

+						If too many search results match the query, the TooManyMatchesFound tag is returned

+            with a value of true, and a warning is returned.

+            If this occurs, it may be a good idea to ask the user to specify more details to narrow the search

+            (e.g., specify "My Favorite Movie" instead of "My").

+            For GetProductSearchResults, only returned with compatibility level 387 and higher.

+            With lower compatibility levels, ProductSearchResult.TooManyMatchesFound is returned instead.

+						Returns false for GetProductFamilyMembers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalProducts" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+						The total quantity of products that match the query (within

+               the characteristic set). This can exceed the actual number

+               of products returned in the current virtual page. Always returned when AttributeSet is returned.

+               For GetProductSearchResults, only returned with compatibility level 387 and higher.

+               For GetProductFamilyMembers, only returned with compatibility level 415 and higher.

+               With lower compatibility levels, ProductSearchResult.TotalProducts is returned instead.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ReviseStatusType.xsd #####

+

+-->

+	<xs:complexType name="ReviseStatusType">

+		<xs:annotation>

+			<xs:documentation> 

+        Contains data indicating whether an item has been revised since the

+        listing became active and, if so, which among a subset of properties

+        have been changed by the revision.

+        Output only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ItemRevised" type="xs:boolean">

+				<xs:annotation>

+					<xs:documentation> 

+            If true, indicates the item was revised since the listing became

+            active.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>							

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyItNowAdded" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            If true, indicates that a Buy It Now Price was added for the item.

+            Only applicable to US eBay Motors items.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyItNowLowered" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            If true, indicates that the item's Buy It Now price was lowered.

+            Only applicable to US eBay Motors items.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReserveLowered" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            If true, indicates that the reserve price was lowered for

+            the item. Only applicable to US eBay Motors items.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReserveRemoved" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            If true, indicates that the reserve price was removed

+            from the item. Only applicable to US eBay Motors items.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SIFFTASRecommendationsType.xsd #####

+

+-->

+	<xs:complexType name="SIFFTASRecommendationsType">

+		<xs:annotation>

+			<xs:documentation> 

+	         Reserved for future use..

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AttributeSetArray" type="ns:AttributeSetArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SKUArrayType.xsd #####

+

+-->

+	<xs:complexType name="SKUArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				A list of stock-keeping unit (SKU) identifiers that a seller uses in listings.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SKU" type="ns:SKUType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Identifier defined and used by a seller to identify an item. The

+						seller can use a SKU to identify one item or use the same SKU for

+						multiple items. Preferable to ApplicationData for SKUs and inventory

+						tracking. Different sellers can use the same SKUs. This element can

+						be used by sellers to track complex flows of products and

+						information. This element preserves a SKU, enabling a seller to

+						obtain it before and after a transaction is created.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>50</MaxLength>

+						<CallInfo>

+							<CallName>GetSellerTransactions</CallName>

+							<CallName>GetSellerList</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SKUType.xsd #####

+

+-->

+	<xs:simpleType name="SKUType">

+		<xs:annotation>

+			<xs:documentation>

+        Type that represents a stock-keeping unit (SKU). The seller can use a

+				SKU to identify one item or use the same SKU for multiple items.

+				Preferable to ApplicationData for SKUs and inventory tracking. Different

+				sellers can use the same SKUs. This element can be used by sellers to

+				track complex flows of products and information. This element preserves

+				a SKU, enabling a seller to obtain it before and after a transaction is

+				created.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SMSSubscriptionErrorCodeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SMSSubscriptionErrorCodeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Type of SMS subscription error.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="SMSAggregatorNotAvailable">

+				<xs:annotation>

+					<xs:documentation>

+						Aggregator not available.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PhoneNumberInvalid">

+				<xs:annotation>

+					<xs:documentation>

+						Phone number invalid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PhoneNumberChanged">

+				<xs:annotation>

+					<xs:documentation>

+						Phone number has changed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PhoneNumberCarrierChanged">

+				<xs:annotation>

+					<xs:documentation>

+						The carrier has changed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UserRequestedUnregistration">

+				<xs:annotation>

+					<xs:documentation>

+						The user has requested to be unregistered.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SMSSubscriptionType.xsd #####

+

+-->

+	<xs:complexType name="SMSSubscriptionType">

+		<xs:annotation>

+			<xs:documentation>

+				(in/out) User data related to notifications.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SMSPhone" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The wireless phone number to be used for receiving SMS messages.

+						Max length of phone number varies by country.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>varies by country</MaxLength>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SiteInfo>

+							<TheseSites>CN</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserStatus" type="ns:SMSSubscriptionUserStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Registered/Unregistered/Pending.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SiteInfo>

+							<TheseSites>CN</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CarrierID" type="ns:WirelessCarrierIDCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The wireless carrier ID.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SiteInfo>

+							<TheseSites>CN</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ErrorCode" type="ns:SMSSubscriptionErrorCodeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reason for SMS subscription error (postback from thired-party integrator).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SiteInfo>

+							<TheseSites>CN</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemToUnsubscribe" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						ID of item to unsubscribe from SMS notification.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SiteInfo>

+							<TheseSites>CN</TheseSites>

+						</SiteInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SMSSubscriptionUserStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SMSSubscriptionUserStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The current state of user SMS subscription.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Registered">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Registered.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Unregistered">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Unregistered.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Pending">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Pending subscription.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Failed">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Subscription failed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SalesTaxType.xsd #####

+

+-->

+	<xs:complexType name="SalesTaxType">

+		<xs:annotation>

+			<xs:documentation>

+        Type for expressing sales tax data.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SalesTaxPercent" type="xs:float" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Percent of an item's price to be charged as the sales

+						tax for the transaction. The value passed in is stored with a

+						precision of 3 digits after the decimal point (##.###).

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>SendInvoice</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetTaxTable</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SalesTaxState" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            State or jurisdiction for which the sales tax is being collected.

+            Also returned for Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>SendInvoice</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingIncludedInTax" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            (US only) Whether shipping costs were part of the base amount

+            that was taxed. Flat or calculated shipping.

+            Also returned for Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>SendInvoice</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SalesTaxAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(US only) The amount of sales tax.

+						Also returned for Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ScheduleType.xsd #####

+

+-->

+	<xs:complexType name="ScheduleType">

+		<xs:annotation>

+			<xs:documentation> 

+Sellers create live auction catalogs and schedule their live auction events by using the 

+eBay Live Auctions Web site user interface. The seller can create a catalog in the Live Auctions 

+system several months before a sale. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ScheduleID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            	Identifier for an event schedule in the seller's Live Auctions catalog. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionCatalogDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ScheduleTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            	Date and time that the sale schedule starts.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetLiveAuctionCatalogDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SchedulingInfoType.xsd #####

+

+-->

+	<xs:complexType name="SchedulingInfoType">

+		<xs:annotation>

+			<xs:documentation> 

+        Contains information for scheduling limits for the user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MaxScheduledMinutes" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Maximum number of minutes that a listing may be scheduled in advance of its going live.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinScheduledMinutes" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Minimum number of minutes that a listing may be scheduled in advance of its going live.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxScheduledItems" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Maximum number of Items that a user may schedule.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchAttributesType.xsd #####

+

+-->

+	<xs:complexType name="SearchAttributesType">

+		<xs:annotation>

+			<xs:documentation>

+      A product or item aspect or feature that can be used as a criterion in a search 

+      for catalog content or for listed items. 

+      For example, "Format" might be a criterion for searching the catalogs for 

+      Pre-filled Item Information related to hardcover books. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AttributeID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+            Unique identifier for the attribute within the characteristic set.

+            Required if SearchAttributes is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DateSpecifier" type="ns:DateSpecifierCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Specifies the date sub-component that the attribute represents.

+						This only applies to date attributes. Required when searching by date attributes.

+            Allows for separate text fields or drop-down lists to be rendered for

+            each sub-component. For example, the day, month, and year can be rendered as

+            separate drop-down lists. See DateSpecifierCodeType for possible values.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RangeSpecifier" type="ns:RangeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Indicates that the attribute represents the high or low end in a range,

+						such as a date range or a price range. Required when searching on ranges.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ValueList" type="ns:ValType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            Container for the list of one or more valid values that the user has selected for 

+            the searchable attribute. If multiple values are specified, the search engine 

+            applies "OR" logic to the query (i.e., at least one of the specified values must match).

+            Required if SearchAttributes is specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchDetailsType.xsd #####

+

+-->

+	<xs:complexType name="SearchDetailsType">

+		<xs:sequence>

+			<xs:element name="BuyItNowEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates whether a listing uses the Buy It Now feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Picture" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+          Indicates whether a listing has an image associated with it.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RecentListing" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Indicates whether a listing is no more than one day old.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchFlagsCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SearchFlagsCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           SearchFlagsCodeType - Search flags for GetSearchResults.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Charity">

+				<xs:annotation>

+					<xs:documentation>

+                Return only charity item listings.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SearchInDescription">

+				<xs:annotation>

+					<xs:documentation>

+                Include the description field of item listings in keyword search. Item

+                listings returned are those where specified search keywords appear in

+                the description, as well as the title and sub-title.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PayPalBuyerPaymentOption">

+				<xs:annotation>

+					<xs:documentation>

+                Return only item listings where PayPal is a payment method offered by the

+                seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NowAndNew">

+				<xs:annotation>

+					<xs:documentation>

+               (in) Return only items that have been listed with Now and New. Applicable for 

+               certain sites only. See the Developer's Guide.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchLocationFilterType.xsd #####

+

+-->

+	<xs:complexType name="SearchLocationFilterType">

+		<xs:annotation>

+			<xs:documentation> 

+        One of the data filters used when searching for items using

+        GetSearchResults. Allows filtering based on an item's location (where

+        the seller would be shipping the item from) or an item's availability

+        (which eBay sites the item can be purchased from).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CountryCode" type="ns:CountryCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Country the item is either located in or available to (depending on the value

+            specified in ItemLocation).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemLocation" type="ns:ItemLocationCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Specifies whether the filter should be for items located in the country

+            specified in Country or available to that country.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchLocation" type="ns:SearchLocationType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Specifies filtering based on site ID.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Currency" type="ns:CurrencyCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchLocationType.xsd #####

+

+-->

+	<xs:complexType name="SearchLocationType">

+		<xs:annotation>

+			<xs:documentation> 

+				One of the data filters used when searching for items using

+				GetSearchResults. Allows filtering based on the location of the item or

+				its availability relative to an eBay site. Or allows for filtering

+				based on regional listing.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="RegionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies a region ID. The item must have been listed for the specified region

+						to be returned in the search result set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SiteLocation" type="ns:SiteLocationType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Specifies a filter based on a particular eBay site and the 

+            item's relation to

+            that site (items listed with a site's currency, items located 

+            in the country

+            for the site, items available to the country for the site, and 

+            items listed

+            on the specified site).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchRequestType.xsd #####

+

+-->

+	<xs:complexType name="SearchRequestType">

+		<xs:annotation>

+			<xs:documentation>

+      Specifies a query consisting of attributes. Only attributes that are returned 

+      from GetProductFinder can be used. See the Developer's Guide for more information.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AttributeSetID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+            Numeric identifier for a characteristic set that defines the attributes

+            (unique across all eBay sites). 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductFinderID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Numeric identifier for a buy-side product finder. A product finder defines how to 

+            search for Item Specifics in listings (e.g., how to search against a particular shoe size).

+            See the eBay Web Services guide for details about product finders.

+            You need to specify a product finder ID when you are searching against a listing's 

+            Item Specifics (i.e., when you use SearchAttributes).

+				A few categories, such as US Event Tickets and US eBay Motors, can also return a subset of Item Specifics 

+				(e.g., the event venue, section, and row for a ticket listing) in the search results. 

+				To retrieve this data, you must specify the product finder ID, and also specify a detail level of

+				ItemReturnAttributes or ReturnAll. Use GetProductFinder to determine valid product finder IDs.

+					</xs:documentation>

+						<xs:appinfo>

+							<CallInfo>

+								<CallName>GetSearchResults</CallName>

+								<RequiredInput>Conditionally</RequiredInput>

+							</CallInfo>

+						</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchAttributes" type="ns:SearchAttributesType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            A query consisting of a set of attributes (search criteria). If the query 

+            includes multiple attributes, the search engine will apply "AND" logic to the 

+            query. Use GetProductFinder to determine the list of valid attributes 

+            and how many are permitted for the specified characteristic set.

+            If specified, ProductFinderID must also be specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchResultItemArrayType.xsd #####

+

+-->

+	<xs:complexType name="SearchResultItemArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+        Container for a list of search result items, such as returned by

+        GetSearchResults. Will contain zero, one, or multiple

+        SearchResultItemType items, each of which represents one item listing

+        that was found by the search.

+        Output only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SearchResultItem" type="ns:SearchResultItemType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+            Contains data for an item listing found by a search.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchResultItemType.xsd #####

+

+-->

+	<xs:complexType name="SearchResultItemType">

+		<xs:annotation>

+			<xs:documentation> 

+        Contains the data for one item listing found by a search (such as by

+        GetSearchResults).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Contains summary data for the item listing itself, with the properties that define

+            the listing. For all item data, use an item-retrieval call, such as GetItem.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemSpecific" type="ns:NameValueListArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            A list of attribute and value pairs. GetSearchResults can return this

+            when the request either specifies IncludeCondition as true or specifies a product finder 

+            search by using SearchRequest.

+            If IncludeCondition was true, this returns the item condition (e.g., New).

+            If SearchRequest was used to perform a product finder search, the list 

+            is limited to attributes that would be included in the 

+            summary search results on the Web site, if any. In some categories, 

+            no summary attributes are returned in search results (even when the item 

+            is listed with Item Specifics.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchResultValues" type="ns:SearchResultValuesCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+            Contains additional information about the item listing returned in Item. This

+            information includes whether the item has an image associated with it, 

+            and more. May contain zero, one, or multiple SearchResultValuesCodeType 

+            values indicating different pieces of additional information about 

+            the listing. These values are analogous to the icons that appear in an 

+            item listing's line in a Search page.

+            Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchResultValuesCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SearchResultValuesCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Escrow">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="New">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Indicates items listed one day or less earlier than the current query. 

+            If the listing is no more than one day old, New returns a value of true. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CharityListing">

+				<xs:annotation>

+					<xs:documentation>

+            (out) Indicates that the seller has chosen to use eBay Giving Works to donate 

+            a percentage of the item purchase price to a selected nonprofit organization. 

+            Not applicable for eBay Motors, international sites, and Real Estate and Tickets listings. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Picture">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Gift">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchSortOrderCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SearchSortOrderCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Determines the order in which items are returned when you use the GetSearchResults call.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="SortByEndDate">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items by the end date (items ending soonest). This is the default for most sites,

+						except where noted for other values.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByStartDate">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items by the start date (most recently listed first).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByCurrentBid">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items by CurrentPrice (lowest bid first).

+						Note that if an item was listed in a different currency from the

+						site's currency, that item is sorted is based on its ConvertedCurrentPrice value.

+						(It is a good idea to use SortByCurrentBidAsc instead.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByListingDate">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items by the listing date in descending order.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByCurrentBidAsc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items by the current bid price in ascending order (lowest bid first).

+						Note that if an item was listed in a different currency from the

+						site currency, the item is sorted based on its ConvertedCurrentPrice value.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByCurrentBidDesc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items by the current bid price in descending order (highest bid first).

+						Note that if an item was listed in a different currency from the

+						site's currency, the item is sorted based on its ConvertedCurrentPrice value.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByPayPalAsc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items in ascending order based on whether PayPal is accepted (accepted followed by unaccepted).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByPayPalDesc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items in descending order based on whether PayPal is accepted (unaccepted followed by accepted).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByEscrowAsc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items in ascending order based on whether Escrow is applicable (applicable followed by inapplicable).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByEscrowDesc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items in descending order based on whether Escrow is applicable (inapplicable followed by applicable).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByCountryAsc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items in ascending order by the country in which the items are located.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByCountryDesc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items in descending order by the country in which the items are located.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByDistanceAsc">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Sorts items based on distance from the buyer, with the nearest items returned first.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByBidCountAsc">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sorts items based on the number of bids, fewest bids first.

+					Applicable to China and Taiwan sites only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SortByBidCountDesc">

+				<xs:annotation>

+					<xs:documentation>

+					(in) Sorts items based on the number of bids, most bids first.

+					Applicable to China and Taiwan sites only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchStoreFilterType.xsd #####

+

+-->

+	<xs:complexType name="SearchStoreFilterType">

+		<xs:annotation>

+			<xs:documentation> 

+        One of the data filters used when searching for items using

+        GetSearchResults. Allows filtering based on an item's appearing in a

+        specific eBay Store.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="StoreName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Name of the eBay Store the item must be listed in.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StoreSearch" type="ns:StoreSearchCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+            Specifies the type of store search used in the filtering: one eBay Store (name

+            specified in StoreName) or all eBay stores, and also by listing type. Possible

+            values are enumerated in the StoreSearchCodeType code list.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SearchTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SearchTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           SearchTypeCodeType - Type declaration to be used by other schema.

+           Identifies the SearchTypes (e.g., for GetSearchResults requests)

+           used to restrict items returned to: only Gallery items or gallery

+           and non-Gallery items.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="All">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Return Gallery and non-Gallery item listings.

+				      </xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Gallery">

+				<xs:annotation>

+					<xs:documentation> 

+                (in) Return Gallery items only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SecondChanceOfferDurationCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SecondChanceOfferDurationCodeType">

+		<xs:annotation>

+			<xs:documentation>

+           SecondChanceOfferDurationCodeType - Type declaration to be used by

+           other schema. Specifies the number of days the second chance offer

+           active. The recipient bidder must purchase the item within that time

+           or the listing expires. The duration for a new second chance offer

+           listing is limited to these values.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Days_1">

+				<xs:annotation>

+					<xs:documentation>

+                (in) 1 Day.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_3">

+				<xs:annotation>

+					<xs:documentation>

+                (in) 3 Days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_5">

+				<xs:annotation>

+					<xs:documentation>

+                (in) 5 Days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Days_7">

+				<xs:annotation>

+					<xs:documentation>

+                (in) 7 Days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SelectionModeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SelectionModeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+						This is automatic or manual depending on selection.

+					</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:string">

+			<xs:enumeration value="Automatic">

+				<xs:annotation>

+					<xs:documentation>

+               Automatic criteria

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Manual">

+				<xs:annotation>

+					<xs:documentation>

+               Manual criteria

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerBusinessCodeTypeList.xsd #####

+

+-->

+	<xs:simpleType name="SellerBusinessCodeType">

+			<xs:annotation>

+				<xs:documentation>

+					Type of seller account. This value can be returned if the German site (site ID 77) or eBay Motors site (site ID 100) is specified.

+				</xs:documentation>

+			</xs:annotation>

+			<xs:restriction base="xs:token">

+				<xs:enumeration value="Undefined">

+					<xs:annotation>

+						<xs:documentation>

+							Type of seller account not defined.

+						</xs:documentation>

+					</xs:annotation>

+				</xs:enumeration>

+				<xs:enumeration value="Private">

+					<xs:annotation>

+						<xs:documentation>

+							Private seller account.

+						</xs:documentation>

+					</xs:annotation>

+				</xs:enumeration>

+				<xs:enumeration value="Commercial">

+					<xs:annotation>

+						<xs:documentation>

+							Commercial seller account.

+						</xs:documentation>

+					</xs:annotation>

+				</xs:enumeration>

+			</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerContactDetailsEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="SellerContactDetailsEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation>

+				Reserved for future use.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerFavoriteItemPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="SellerFavoriteItemPreferencesType">

+		<xs:annotation>

+			<xs:documentation> 

+				Contains the data for the seller favorite item preferences, i.e.  the manual or automatic selection criteria to display items for buyer's favourite seller opt in email marketing.  

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SearchKeywords" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The keywords in the item title for the automatic item search criteria.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StoreCategoryID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(For eBay Store owners only) The store custom category for the  automatic item search criteria.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingType" type="ns:ListingTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The listing format (fixed price, auction, etc) for the automatic item search criteria.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchSortOrder" type="ns:StoreItemListSortOrderCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The sort order chosen from the standard ebay sorts for the automatic search criteria.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the lower limit of price range for the automatic search criteria.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MaxPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the upper limit of price range for the automatic search criteria.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FavoriteItemID" type="ns:ItemIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the list of favorite items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerGuaranteeLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SellerGuaranteeLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Maximum level of guarantee a seller is authorized to offer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NotEligible">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Not eligible for Seller Level Guarantee

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Regular">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Regular eligibility level

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Premium">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Premium eligibility level

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Ultra">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Ultra eligibility level

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SellerLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+SellerLevelCodeType - Type declaration to be used by other schema.

+Indicates the user's eBay PowerSeller tier.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Bronze">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Bronze

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Silver">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Silver

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Gold">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Gold

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Platinum">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Platinum

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Titanium">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Titanium

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						(out) None

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerPaymentMethodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SellerPaymentMethodCodeType">

+		<xs:annotation>

+			<xs:documentation>

+SellerPaymentMethodCodeType - Type declaration to be used by other schema.

+These are payment methods that sellers can use to pay eBay fees.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NothingOnFile">

+				<xs:annotation>

+					<xs:documentation>

+						    Used for all other payment methods (e.g., payment via PayPal) which are not specifically listed in other columns.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCard">

+				<xs:annotation>

+					<xs:documentation>

+						    Credit Card

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DirectDebit">

+				<xs:annotation>

+					<xs:documentation>

+						    Direct Debit

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DirectDebitPendingSignatureMandate">

+				<xs:annotation>

+					<xs:documentation>

+						   Direct Debit, pending signature mandate

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBayDirectPay">

+				<xs:annotation>

+					<xs:documentation>

+						   eBay Direct Pay

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerPaymentPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="SellerPaymentPreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+			  Defines the values that make up the seller's preferences.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AlwaysUseThisPaymentAddress" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the seller wants all transactions

+						with eBay to use the address specified in SellerPaymentAddress.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisplayPayNowButton" type="ns:DisplayPayNowButtonCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Determines whether the Pay Now button should always be displayed 

+						for the user's listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PayPalPreferred" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether a seller wants to let buyers know that PayPal payments

+						are preferred.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DefaultPayPalEmailAddress" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default email address the seller uses for receiving PayPal payments.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PayPalAlwaysOn" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether PayPal is always accepted for the seller's listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerPaymentAddress" type="ns:AddressType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the address the seller uses to receive payments from buyers.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UPSRateOption" type="ns:UPSRateOptionCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the type of United Postal Service rates to use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUserPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetUserPreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerPaymentType.xsd #####

+

+-->

+	<xs:complexType name="SellerPaymentType">

+		<xs:annotation>

+			<xs:documentation>

+				A payment between Half.com and a seller. The financial value of a payment is

+				typically based on an amount that a buyer paid to Half.com for a transaction, plus

+				the shipping cost the buyer paid for the item, minus Half.com's commission. Each

+				payment is for one transaction for one item in one order.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ItemID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						ID of the Half.com item associated with the payment.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>19 (Note: The eBay database specifies 38. Currently, Item IDs are usually 9 to 12 digits)</MaxLength>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						ID of the Half.com transaction associated with the payment.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="OrderID" type="ns:OrderIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						ID of the Half.com order associated with the payment.

+						Returns 0 for single-transaction orders.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerInventoryID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						An ID that the seller specified when they listed the Half.com item, if any. It

+						can be used for the seller's SKU. Note that SellerInventoryID is not returned

+						if no ID was specified. (Note: The SKU field used for eBay.com listings is not

+						applicable to Half.com listings.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PrivateNotes" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A text note that the seller specified for the Half.com item, if any. Only

+						visible to the seller. Not returned if the seller specified no notes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalProductID" type="ns:ExternalProductIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains an ISBN, UPC, or EAN value from the catalog product associated with

+						the Half.com item. All Half.com items are listed with Pre-filled Item

+						Information.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Title" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The title of the listing, as it appears on Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentType" type="ns:PaymentTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the payment is for a Half.com sale or a refund.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Price of the transaction specified by TransactionID (before shipping and other

+						costs).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingReimbursement" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The adjusted shipping cost that Half.com pays the seller. If multiple items

+						from the same seller are in the same order, this amount may be less than the

+						rate for shipping the item individually. This amount may also be adjusted due

+						to Half.com handling charges. (Due to the way shipping costs are calculated,

+						this value may be different for identical items in different orders.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Commission" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Amount of commission charged by Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AmountPaid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Payment amount made by buyer for the Half.com transaction.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaidTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The time and date when Half.com created the payment. This time is specified in

+						GMT (not Pacific time). See "Time Values" in the eBay Web Services guide for

+						information about converting between GMT and other time zones A payment is

+						created when the buyer pays for an order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerPayments</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellerType.xsd #####

+

+-->

+	<xs:complexType name="SellerType">

+	<xs:annotation>

+		<xs:documentation>

+			Information about a user returned in the context of an item's seller.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="PaisaPayStatus" type="xs:int" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates the seller's PaisaPay registration status.&lt;br&gt;

+					0 - Seller not registered&lt;br&gt;

+					1 - Seller registered&lt;br&gt;

+					2 - Seller registered but registration suspended&lt;br&gt;

+					3 - Seller registered but outbound payment suspended&lt;br&gt;

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="AllowPaymentEdit" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates whether the user as a seller by default allows buyers to edit the

+					total cost of an item (while in checkout). (Sellers enable this property in

+					their My eBay user preferences on the eBay site.)

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="BillingCurrency" type="ns:CurrencyCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Currency type in which the user is billed seller fees.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CheckoutEnabled" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates whether the user as a seller has the option set to default new

+					item listings to go through checkout. (Sellers enable this property in

+					their My eBay user preferences on the eBay site.)

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CIPBankAccountStored" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+					If true, indicates that the user has stored bank account information with eBay

+					in order to use the "CIP in checkout" feature. Applicable to all eBay sites

+					that support CIP as a payment method.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="GoodStanding" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+					If true, indicates that the user is in good standing with eBay. (One of the

+					requirements for listing a new item with Immediate Payment.)

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="LiveAuctionAuthorized" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+					If true, the user is authorized to list lot items to the eBay Live Auctions

+					site.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="MerchandizingPref" type="ns:MerchandizingPrefCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates whether the seller participates in the

+					Merchandising Manager feature. If so, the seller can

+					set up rules for cross-promoting items from the seller's store.

+					If not, eBay cross-promotes items as the seller's items are

+					being viewed or purchased.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="QualifiesForB2BVAT" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates whether the user is subject to VAT. Users who have registered with

+					eBay as VAT-exempt are not subject to VAT.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SellerGuaranteeLevel" type="ns:SellerGuaranteeLevelCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Maximum level of Motor's Seller guarantee the seller is authorized to offer.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItem</CallName>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SellerLevel" type="ns:SellerLevelCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The user's eBay PowerSeller tier. Possible values are enumerated in the

+					SellerLevelCodeType code list.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SellerPaymentAddress" type="ns:AddressType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Address used by eBay for purposes of billing the user for seller fees.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SchedulingInfo" type="ns:SchedulingInfoType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Container for scheduling limits for the user. Conveys the minimum and maximum

+					minutes the user may schedule listings in advance, as well as the maximum

+					number of items the user may schedule.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="StoreOwner" type="xs:boolean">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates whether the user has an eBay Store (boolean value).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<CallName>GetBidderList</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="StoreURL" type="xs:anyURI" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					URL for the user's eBay Store, if the user is a Store owner. Blank if not.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetAllBidders</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>SellerInfo</Context>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SellerBusinessType" type="ns:SellerBusinessCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Type of seller account. This value can be returned if the German site (site ID 77) or eBay Motors site (site ID 100) is specified.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+				<!-- N/A: GetUser -->

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="RegisteredBusinessSeller" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					If true, the user is registered as a vehicle dealer on the eBay Motors site.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ExpressEligible" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					If true, the user is eligible to sell items on eBay Express,

+					based on the data available to eBay at the time you execute the call (e.g., GetUser).

+					For users registered in the US or Canada, the user is eligible to sell on Express US.

+					For users registed in Germany, the user is eligible to sell on Express Germany.

+					However, a user can still be disqualified at any time if

+					their feedback score changes or some other event occurs

+					that would normally disqualify a seller for Express.&lt;br&gt;

+					&lt;br&gt;

+					If false, the user is not eligible to sell items on Express. In this case,

+					you may be able to determine probable causes by examining these fields:&lt;br&gt;

+					- User.FeedbackPrivate&lt;br&gt;

+					- User.FeedbackScore&lt;br&gt;

+					- User.PositiveFeedbackPercent&lt;br&gt;

+					- User.RegistrationAddress.CountryName&lt;br&gt;

+					- User.Site&lt;br&gt;

+					- CombinedPaymentPreferences (in GetUserPreferences)

+				</xs:documentation>

+				<xs:appinfo>

+					<SeeLink>

+						<Title>Seller Eligibility Criteria for eBay Express</Title>

+						<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ExpressSellerCriteria</URL>

+					</SeeLink>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<!-- N/A to GetOrderTransactions -->

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="PaymentMethod" type="ns:SellerPaymentMethodCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+				</xs:documentation>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ProStoresPreference" type="ns:ProStoresCheckoutPreferenceType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Details about the store and checkout preferences.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ExpressWallet" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+				If true, the seller has an Express wallet, which is used to store information about

+				multiple credit cards associated with the seller's account.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<!-- N/A to GetOrderTransactions -->

+					<CallInfo>

+						<CallName>GetUser</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Always</Returned>

+						<Context>Seller</Context>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellingManagerProductDetailsType.xsd #####

+

+-->

+	<xs:complexType name="SellingManagerProductDetailsType">

+		<xs:annotation>

+			<xs:documentation>Returned if the user is a Selling Manager

+			Pro user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ProductName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>The exact product name of an item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PartNumber" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>The numeric part number of an item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProductPartNumber" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>The alphanumeric part number of an item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellingStatusType.xsd #####

+

+-->

+	<xs:complexType name="SellingStatusType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains various details about the current status of a listing. These

+				values are computed by eBay and cannot be specified at listing time.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BidCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Number of bids placed so far against the item. Only applicable to

+						competitive-bidding listings (Chinese and Dutch auctions).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WonList</Context>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>UnsoldList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BidIncrement" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Smallest amount a bid must be above the current high bid. Only applicable

+						to competitive-bidding listings (Chinese and Dutch auctions). Returns zero

+						(0.00) for Ad type, eBay Stores Inventory (Stores Fixed-price), and Basic

+						Fixed-Price (Fixed Price Item) listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ConvertedCurrentPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Converted value of the CurrentPrice in the currency of the site that

+						returned this response. For active items, refresh the listing's data every 24

+						hours to pick up the current conversion rates.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<CallName>PlaceOffer</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBay</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>WonList</Context>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CurrentPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For competitive-bidding listings (Chinese and Dutch auctions), current minimum

+						asking price (start price) or the current highest bid for the item if bids have

+						been placed. Shows minimum bid if no bids have been placed on the item. For

+						Basic Fixed-Price (FixedPriceItem), Store Inventory (StoresFixedPrice), or Ad

+						type (AdType) listings this returns the original price specified when the item

+						was listed/re-listed or the revised price if the item was revised.&lt;br&gt;

+						&lt;br&gt;

+						For GetSearchResultsExpress, this is the current fixed price of the listing, and

+						it is always returned when ItemArray.Item is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetDispute</CallName>

+							<CallName>GetMyeBay</CallName>

+							<CallName>PlaceOffer</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMemberMessages</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BestOfferList</Context>

+							<Context>BidList</Context>

+							<Context>LostList</Context>

+							<Context>WatchList</Context>

+							<Context>WonList</Context>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>ActiveList</Context>

+							<Context>SoldList</Context>

+							<Context>UnsoldList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HighBidder" type="ns:UserType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For auctions that have ended and have a winning bidder, indicates the user who

+						is the current high bidder. For Basic Fixed Price (FixedPriceItem) and Store

+						Inventory (StoresFixedPrice) listings that have ended, indicates the user who

+						purchased the item. Not returned for auctions that have received no bids or

+						Fixed Price Item and Stores Fixed-price listings that are still active.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>ActiveList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LeadCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Applicable to Ad type listings only. Indicates how many leads to

+						potential buyers are associated with this item. Returns 0 (zero) for listings in

+						other formats.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumToBid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Smallest amount the next bid on the item can be. Returns same value as

+						Item.StartPrice (if no bids have yet been placed) or CurrentPrice plus

+						BidIncrement (if at least one bid has been placed). Only applicable to Chinese and

+						Dutch auction listings. Returns null for basic Fixed Price (FixedPriceItem),

+						Store Inventory (StoresFixedPrice), and Ad type listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<CallName>PlaceOffer</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QuantitySold" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Number of items purchased so far. (Subtract from the value returned in

+						the Item.Quantity field to calculate the number of items remaining.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReserveMet" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the reserve price has been met for the listing. Returns

+						true if the reserve price was met or no reserve price was specified.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Context>BidList</Context>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>ActiveList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SecondChanceEligible" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Part of the Second Chance Offer feature, indicates whether the seller can

+						extend a second chance offer for the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBay</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BidderCount" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Number of bidders for an item. Only applicable to

+					competitive-bidding listings (Chinese and Dutch auctions). Only returned

+					for the seller of the item.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>ActiveList</Context>

+							<Context>UnsoldList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ListingStatus" type="ns:ListingStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies an active or ended listing's status in eBay's processing workflow.

+						If a listing ends with a sale (or sales), eBay needs to update the sale details

+						(e.g., total price and buyer/high bidder) and the final value fee. This processing

+						can take several minutes. If you retrieve a sold item and no details about the buyer/high bidder

+						are returned or no final value fee is available, use this listing status information

+						to determine whether eBay has finished processing the listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FinalValueFee" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						You are charged a Final Value Fee if your item is sold, ends with a winning bid,

+						or is purchased. This fee applies whether or not you actually

+						complete the sale with the buyer.

+						See the eBay.com Web site online help for more information about the Final Value Fee.&lt;br&gt;&lt;br&gt;

+						If the item was a Dutch auction that ended with bids (not Buy It Now purchases),

+						the Final Value Fee is returned in Item.SellingStatus.FinalValueFee. For all other

+						listing types, including Dutch auctions that end with Buy It Now purchases, the

+						Final Value Fee is returned in Transaction.FinalValueFee.&lt;br&gt;&lt;br&gt;

+						The Final Value Fee for fixed price format (FixedPriceItem), Store Inventory format (StoresFixedPrice),

+						and Dutch listings purchased with Buy It Now is returned by GetSellerTransactions and GetItemTransactions

+						on a transaction by transaction basis, regardless of the listing status.

+						For all other listing types, including Chinese and Dutch (with no Buy It Now purchases),

+						the Final Value Fee is returned when the listing status is Completed.&lt;br&gt;&lt;br&gt;

+						If you request a Final Value Fee Credit, the value of Transaction.FinalValueFee will not

+						change for the item if a credit is issued. (The credit only appears in the seller's account data.)

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SellingSummaryType.xsd #####

+

+-->

+	<xs:complexType name="SellingSummaryType">

+		<xs:sequence>

+			<xs:element name="ActiveAuctionCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+								The number of listings the user has open.

+					</xs:documentation>

+					<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AuctionSellingCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+								The total number of items the user is currently selling.

+					</xs:documentation>

+					<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AuctionBidCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+							The total number of bids made on the user's active listings.

+					</xs:documentation>

+					<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalAuctionSellingValue" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+							The total value of all items the user has for sale in all listings.

+					</xs:documentation>

+					<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalSoldCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+							The total number of items the user has sold.

+					</xs:documentation>

+					<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalSoldValue" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+								The total monetary value of the items the user has sold.

+					</xs:documentation>

+					<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SoldDurationInDays" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+							The average duration, in days, of all items sold.

+					</xs:documentation>

+					<xs:appinfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SetUserNotesActionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SetUserNotesActionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AddOrUpdate">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Delete">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShipmentDeliveryStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShipmentDeliveryStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Status of the delivery.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Created">

+				<xs:annotation>

+					<xs:documentation>

+						Created (default).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DroppedOff">

+				<xs:annotation>

+					<xs:documentation>

+						Dropped off.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InTransit">

+				<xs:annotation>

+					<xs:documentation>

+						In transit.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Delivered">

+				<xs:annotation>

+					<xs:documentation>

+						Delivered.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Returned">

+				<xs:annotation>

+					<xs:documentation>

+						Returned.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Canceled">

+				<xs:annotation>

+					<xs:documentation>

+						Cancelled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LabelPrinted">

+				<xs:annotation>

+					<xs:documentation>

+						Label printed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShipmentStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShipmentStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Active">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Canceled">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShipmentType.xsd #####

+

+-->

+	<xs:complexType name="ShipmentType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="EstimatedDeliveryDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InsuredValue" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PackageDepth" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Depth dimension of the package needed to ship the item after it is sold.

+            For calculated shipping only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PackageLength" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Length dimension of the package needed to ship the item after it is sold.

+            For calculated shipping only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PackageWidth" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Width dimension of the package needed to ship the item after it is sold.

+            For calculated shipping only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PayPalShipmentID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShipmentID" type="xs:long" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PostageTotal" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PrintedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShipFromAddress" type="ns:AddressType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  The address from which the item is being shipped.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingAddress" type="ns:AddressType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The address to which the item is to be shipped.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingCarrierUsed" type="ns:ShippingCarrierCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The shipping carrier used.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingFeature" type="ns:ShippingFeatureCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingPackage" type="ns:ShippingPackageCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The size of the package used to ship the item(s). See ShippingPackageCodeType

+            for its possible values. Input.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceUsed" type="xs:token" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The size of the package used to ship the item(s). See ShippingPackageCodeType

+            for its possible values. Input.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShipmentTrackingNumber" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WeightMajor" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            See the documentation regarding "Working with Item Weights".

+            The 'unit' attribute can have a value of lbs.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="WeightMinor" type="ns:MeasureType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            See the documentation regarding "Working with Item Weights".

+						The 'unit' attribute is optional and assumed to be the

+						minor compared to the value of 'unit' in WeightMajor.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemTransactionID" type="ns:ItemTransactionIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeliveryDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Revise only

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DeliveryStatus" type="ns:ShipmentDeliveryStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Revise only

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RefundGrantedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Revise only

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RefundRequestedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Revise only

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:ShipmentStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						TODO probably not needed, why two statuses? - revise only

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingCarrierCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingCarrierCodeType">

+		<xs:annotation>

+			<xs:documentation>

+         Identifies a shipping carrier.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="UPS">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) United Parcel Service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPS">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) U.S. Postal Service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DeutschePost">

+				<xs:annotation>

+					<xs:documentation>

+						Deutsche Post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DHL">

+				<xs:annotation>

+					<xs:documentation>

+						DHL service

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Hermes">

+				<xs:annotation>

+					<xs:documentation>

+						Hermes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="iLoxx">

+				<xs:annotation>

+					<xs:documentation>

+						iLoxx.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+						Other Postal Service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ShippingDetailsType">

+	<xs:annotation>

+		<xs:documentation>

+			Type for the shipping-related details for an item or transaction,

+			including flat and calculated shipping costs and shipping

+			insurance costs.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="AllowPaymentEdit" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Instead of using this tag, see the PaymentEdited tag.

+					Originally, the AllowPaymentEdit tag specified whether the seller allows the

+					buyer to edit the payment amount for the transaction. (Sellers

+					enabled this property in their My eBay user preferences on the

+					eBay site.) ShippingDetails.AllowPaymentEdit is no longer being

+					populated by calls to GetItemTransactions.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<TagStatus>Deprecated</TagStatus>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						<TagStatus>Deprecated</TagStatus>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<TagStatus>Deprecated</TagStatus>

+						<DetailLevels>none</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<TagStatus>Deprecated</TagStatus>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ApplyShippingDiscount" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Whether the seller specifies that a shipping discount is to be

+					applied (in the event that an item's transaction is later

+					combined with others into a single order).

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddOrder</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="CalculatedShippingRate" type="ns:CalculatedShippingRateType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Details pertinent to one or more items for which

+					calculated shipping has been offered by the seller, such as

+					package dimension and weight and packaging/handling costs.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>Conditionally</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ChangePaymentInstructions" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Whether the seller specified payment and shipping instructions during checkout (for

+					example, to update the details of a transaction). Flat and

+					calculated shipping.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<!-- N/A to AddItem family of calls -->

+					<CallInfo>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="InsuranceFee" type="ns:AmountType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Cost of shipping insurance set by the seller. If the

+					buyer bought more than one of this item, this is the insurance

+					for just a single item. Exception: for GetItemShipping, this is

+					proportional to QuantitySold. Value should be greater than 0.00 if InsuranceOption

+					is Optional or Required. For flat shipping only.

+					Optional as input and only allowed if ChangePaymentInstructions

+					is true.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<Default>0.00</Default>

+					<Min/>

+					<Max/>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>AddOrder</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Always</Returned>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+						<DetailLevels>none</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="InsuranceOption" type="ns:InsuranceOptionCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Whether the seller offers shipping insurance and, if

+					so, whether the insurance is optional or required. Flat and

+					calculated shipping. Optional as input and only allowed if

+					ChangePaymentInstructions is true.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>AddOrder</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+						<Context>Order</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Always</Returned>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+						<Context>Order</Context>

+						<DetailLevels>none</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="InsuranceWanted" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Whether the buyer selected to pay for insurance offered

+					by the seller as an option. This only has a value after the

+					buyer has gone through checkout and selected the insurance

+					preference.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none</DetailLevels>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="PaymentEdited" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Whether the seller allows the buyer to edit the payment amount

+					for the transaction. (Sellers enable this property in their My

+					eBay user preferences on the eBay site.)

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="PaymentInstructions" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Payment instructions/message from the seller to the

+					buyer. Flat and calculated shipping and return policy instructions.

+					(Some sites also let you specify a standard return policy by using

+					site-wide attributes in addition or instead. See Item.AttributeSet.)

+					See the eBay Web Services Guide for information about specifying shipping

+					instructions and return policies.

+					Characters like &amp; and ' (apostrophe/single quote) count as 5 characters

+					each. To remove this value when revising or relisting an item, use DeletedField.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<MaxLength>500 (250 for China and Taiwan)</MaxLength>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItem</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SalesTax" type="ns:SalesTaxType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Sales tax details. US site only. Flat and calculated shipping.

+					Also applicable to Half.com (for GetOrders).

+					If your application normally calculates sales tax without using eBay's tax

+					tables, you should understand how purchases via eBay Express will affect the way

+					you process payments. For general information about listings on eBay Express,

+					see "eBay Express" in the eBay Web Services Guide.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>AddOrder</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none</DetailLevels>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SellerPostalCode" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Deprecated. Will be removed in a future release. Postal code from seller's

+					registration address. Not for calculating shipping costs--see

+					CalculatedShippingRateType.OriginatingPostalCode.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						<TagStatus>Deprecated</TagStatus>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<Returned>Conditionally</Returned>

+						<TagStatus>Deprecated</TagStatus>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+						<TagStatus>Deprecated</TagStatus>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ShippingRateErrorMessage" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					For most applicable calls, returns the words No Error or returns an error

+					message related to an attempt to calculate shipping rates. For calculated

+					shipping only.

+					Not applicable to Half.com.

+					&lt;br&gt;

+					&lt;br&gt;

+					GetSearchResultsExpress returns this when no PostalCode was specified in the

+					request and the item was listed with calculated shipping rates. The message text

+					explains that a postal code is needed to calculate shipping. Only returned when

+					ItemDetails is set to Fine.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSearchResultsExpress</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ShippingRateType" type="ns:ShippingRateTypeCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					A shipping rate scale for shipping through UPS that affects the shipping cost

+					calculated for UPS (lower if ShippingRateType is DailyPickup). ShippingRateType

+					is only returned if ShippingService is one of the UPS shipping services. For

+					calculated shipping only.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItem</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<SeeLink>

+						<Title>Shipping</Title>

+						<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=Shipping</URL>

+					</SeeLink>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ShippingServiceOptions" type="ns:ShippingServiceOptionsType" minOccurs="0" maxOccurs="unbounded">

+			<xs:annotation>

+				<xs:documentation>

+					Shipping costs and options related to domestic shipping services offered by the

+					seller. Flat and calculated shipping. Required if

+					InternationalShippingServiceOption is specified.&lt;br&gt;

+					&lt;br&gt;

+					If you specify multiple ShippingServiceOptions nodes, the repeating nodes must

+					be contiguous. For example, you can insert InternationalShippingServiceOption

+					nodes after a list of repeating ShippingServiceOptions nodes, but not between

+					them:&lt;br&gt;

+					&lt;br&gt;

+					&amp;lt;ShippingServiceOptions&amp;gt;...&amp;lt;/ShippingServiceOptions&amp;gt;&lt;br&gt;

+					&amp;lt;ShippingServiceOptions&amp;gt;...&amp;lt;/ShippingServiceOptions&amp;gt;&lt;br&gt;

+					&amp;lt;ShippingServiceOptions&amp;gt;...&amp;lt;/ShippingServiceOptions&amp;gt;&lt;br&gt;

+					&amp;lt;InternationalShippingServiceOption&amp;gt;...&amp;lt;/InternationalShippingServiceOption&amp;gt;&lt;br&gt;

+					&amp;lt;InternationalShippingServiceOption&amp;gt;...&amp;lt;/InternationalShippingServiceOption&amp;gt;&lt;br&gt;&lt;br&gt;

+					&lt;br&gt;

+					&lt;br&gt;

+					If you specify ShippingDetails when you revise or relist an item but you omit

+					ShippingServiceOptions, eBay will drop the domestic shipping services from the

+					listing. This may also have unintended side effects, as other fields that depend

+					on this data may be dropped as well. To retain the shipping services and

+					dependent fields when you modify other shipping details, it may be simplest to

+					specify all ShippingDetails that you still want to include in the

+					listing.&lt;br&gt;

+					&lt;br&gt;

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>Conditionally</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMyeBayBuying</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>BidList</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetMyeBaySelling</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>ScheduledList</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none</DetailLevels>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<CallInfo>

+						<CallName>AddOrder</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<SeeLink>

+						<Title>Overview of the XML API Schema</Title>

+						<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SchemaOverview</URL>

+						<For>rules regarding repeating instances of a nodes (nodes for which maxOccurs is "unbounded" or is greater than 1)</For>

+					</SeeLink>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="InternationalShippingServiceOption" type="ns:InternationalShippingServiceOptionsType" minOccurs="0" maxOccurs="unbounded">

+			<xs:annotation>

+				<xs:documentation>

+					Shipping costs and options related to an international shipping service. If

+					used, at least one domestic shipping service must also be provided in

+					ShippingServiceOptions.&lt;br&gt;

+					&lt;br&gt;

+					If you specify multiple InternationalShippingServiceOption nodes, the repeating

+					nodes must be contiguous. That is, you cannot insert other nodes between

+					InternationalShippingServiceOption nodes.&lt;br&gt;

+					&lt;br&gt;

+					If you specify ShippingDetails when you revise or relist an item but you omit

+					InternationalShippingServiceOption, eBay will drop the international shipping

+					services from the listing. This may also have unintended side effects, as other

+					fields that depend on this data may be dropped as well. To retain the shipping

+					services and dependent fields when you modify other shipping details, it may be

+					simplest to specify all ShippingDetails that you still want to include in the

+					listing.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>AddOrder</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItem</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none</DetailLevels>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<SeeLink>

+						<Title>Overview of the XML API Schema</Title>

+						<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=SchemaOverview</URL>

+						<For>rules regarding repeating instances of a nodes (nodes for which maxOccurs is "unbounded" or is greater than 1)</For>

+					</SeeLink>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ShippingType" type="ns:ShippingTypeCodeType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The shipping cost model offered by the seller. This is not returned for various

+					calls since shipping type can be deduced: if a CalculatedShippingRate structure

+					is returned by the call, the shipping type is Calculated. Otherwise, it is Flat

+					or Freight.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddItem</CallName>

+						<CallName>GetItemRecommendations</CallName>

+						<CallName>RelistItem</CallName>

+						<CallName>ReviseItem</CallName>

+						<CallName>VerifyAddItem</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetSearchResults</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="SellingManagerSalesRecordNumber" type="xs:int" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Applicable to Selling Manager Pro sellers. Also applicable to

+					Half.com (for GetOrders). For GetOrders, the Transaction container

+					includes this element within ShippingDetails.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItem</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+						<DetailLevels>none</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ThirdPartyCheckout" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Whether checkout for this is to be handled by a

+					Third-Party Checkout application. The counterpart in the Add

+					family of calls is Item.ThirdPartyCheckout.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>AddOrder</CallName>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<SeeLink>

+						<Title>Third Party Checkout</Title>

+						<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ThirdPartyCheckout</URL>

+					</SeeLink>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="TaxTable" type="ns:TaxTableType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Tax details for a jurisdiction such as a state or province.

+					Returns empty in GetItem if no tax table was used.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItem</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetSellerList</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="GetItFast" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Indicates whether the seller has opted the listing into the Get

+					It Fast feature. If GetItFast is true and if at least one of

+					the domestic shipping services offered by the seller is an

+					expedited shipping service, every shipping service offered by

+					the seller is considered a Get It Fast service, and the seller

+					commits to delivering the item to the buyer-selected shipping

+					service within one day.

+					Also applicable to Half.com (for GetOrders).

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetBidderList</CallName>

+						<CallName>GetItem</CallName>

+						<CallName>GetItemShipping</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ReturnAll</DetailLevels>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrders</CallName>

+						<Returned>Always</Returned>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+						<Context>Order</Context>

+					</CallInfo>

+					<CallInfo>

+						<CallName>GetOrderTransactions</CallName>

+						<Returned>Always</Returned>

+						<DetailLevels>none</DetailLevels>

+						<Context>Order</Context>

+						<ExcludeFromContext>Transaction</ExcludeFromContext>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ShipmentTrackingNumber" type="xs:string" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					Shipment tracking number supplied by the shipping carrier.

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="ShippingServiceUsed" type="xs:token" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The shipping service that actually shipped the item(s).

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetItemTransactions</CallName>

+						<CallName>GetSellerTransactions</CallName>

+						<Returned>Conditionally</Returned>

+						<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:element name="DefaultShippingCost" type="ns:AmountType" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					The default shipping cost for the item.&lt;br&gt;

+					&lt;br&gt;

+					For GetSearchResults:&lt;br&gt;

+					If ShippingType has the value Flat, then the actual shipping cost is shown. If

+					ShippingType has the value Free, then zero is shown. If ShippingType has the

+					value Calculated, then this tag (DefaultShippingCost) is not shown. If

+					ShippingType has the value NotSpecified, then this tag (DefaultShippingCost) is

+					not shown. If ShippingType has the value Freight, then this tag

+					(DefaultShippingCost) is not shown.

+					&lt;br&gt;

+					&lt;br&gt;

+					In GetSearchResultsExpress:&lt;br&gt;

+					If flat or free shipping was specified for the item, then the actual shipping

+					cost is shown. If calculated shipping was specified for the item, then this tag

+					(DefaultShippingCost) is only shown if PostalCode is specified in the

+					GetSearchResultsExpress request. Otherwise, ShippingRateErrorMessage is returned

+					with a message that the postal code is required for the shipping calculation.

+					Only returned when ItemDetails is set to Fine.

+					&lt;br&gt;

+					&lt;br&gt;

+					Not applicable to Half.com.

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetSearchResultsExpress</CallName>

+						<CallName>GetSearchResults</CallName>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingFeatureCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingFeatureCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Miscellaneous details of the shipment.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="DeliveryConfirmation">

+				<xs:annotation>

+					<xs:documentation>

+						Confirmation requested.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SignatureConfirmation">

+				<xs:annotation>

+					<xs:documentation>

+						Signature requested upon receipt.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StealthPostage">

+				<xs:annotation>

+					<xs:documentation>

+						Stealth postage.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SaturdayDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						Saturday delivery.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+						Other.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotDefined">

+				<xs:annotation>

+					<xs:documentation>

+						Not defined.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingLocationDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ShippingLocationDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a region or location to which the seller is willing to ship.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ShippingLocation" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Short name or abbreviation for a region (e.g., Asia) or location (e.g. Japan).&lt;br&gt;&lt;br&gt;

+						Related field:&lt;br&gt;

+						Item.ShippingDetails.InternationalShippingServiceOption.ShipToLocation in AddItem

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Display name of region or location (sometimes more descriptive than the

+						ShippingLocation short name).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingOptionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			  Where the seller is willing to ship the item.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="SiteOnly">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller will only ship to a buyer in the same country/region as the

+						eBay site the item is listed on.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WorldWide">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller will ship to a buyer anywhere in the world.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SitePlusRegions">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller will ship to a buyer on the same eBay site or in one of the

+						specified regions (ShippingRegionCodeType).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WillNotShip">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller will not (or cannot) ship the item to any buyer at any

+						location.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingPackageCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingPackageCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				(in/out) The nature of the package used to ship the item(s).

+				Required for calculated shipping only. Not all package types

+				are supported by a specific shipping service (ShippingServiceCodeType).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) None

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Letter">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Letter

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LargeEnvelope">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) LargeEnvelope

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSLargePack">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) USPS Large Package/Oversize 1

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VeryLargePack">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Very Large Package/Oversize 2

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExtraLargePack">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Extra Large Package/Oversize 3

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSLetter">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) UPS Letter

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSFlatRateEnvelope">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) USPS Flat Rate Envelope

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PackageThickEnvelope">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Package/thick envelope

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Roll">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Roll

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Europallet">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Europallet

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OneWayPallet">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Onewaypallet

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BulkyGoods">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Bulky goods

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Furniture">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Furniture

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Cars">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Cars

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Motorbikes">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Motorbikes

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Caravan">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Caravan

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IndustryVehicles">

+				<xs:annotation>

+					<xs:documentation>

+ 						(in/out) Industry vehicles

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+ 						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingRateTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingRateTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				A shipping rate scale for shipping through UPS that

+				affects the shipping cost calculated for UPS (lower if

+				ShippingRateType is DailyPickup). For calculated shipping only.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="OnDemand">

+				<xs:annotation>

+					<xs:documentation>

+						"On-demand" shipping rate scale.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DailyPickup">

+				<xs:annotation>

+					<xs:documentation>

+						"Daily pickup" shipping rate scale.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingRegionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingRegionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Regions to which the seller is willing to ship the item.

+				Only applicable if the seller specifies SitePlusRegions for the shipping

+				option (ShippingOptionCodeType).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Africa">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Africa

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Asia">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Asia

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Caribbean">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Caribbean

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Europe">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Europe

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LatinAmerica">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Latin America

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MiddleEast">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Middle East

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NorthAmerica">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) NorthA merica

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Oceania">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Oceania (Pacific region other than Asia)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SouthAmerica">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) South America

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EuropeanUnion">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) European Union

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="WillNotShip">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller will not ship the item.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Worldwide">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller has specified Worldwide or eBay has

+						determined that the specified regions add up to Worldwide.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Americas">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingServiceCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingServiceCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				A shipping service used to ship an item. Applications should not depend on the

+				completeness of ShippingServiceCodeType. GeteBayDetails will return the complete

+				list of shipping services. To check whether a shipping service is domestic or

+				international, call GeteBayDetails with a DetailName of ShippingServiceDetails,

+				specifying a site in the header. Shipping services with a ShippingServiceID of

+				50000 or higher are international, and the other services are domestic, for that

+				site.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="UPSGround">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Ground.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPS3rdDay">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS 3rd Day.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPS2ndDay">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS 2nd Day.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSNextDay">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Next Day.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSPriority">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Priority.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSParcel">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Parcel.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSMedia">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Media.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSFirstClass">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS First Class.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingMethodStandard">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standard shipping method.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingMethodExpress">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSExpressMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Express Mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSNextDayAir">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Next Day Air.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPS2DayAirAM">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Next Day Air.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Other">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other (see description).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocalDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Local Delivery/Pickup.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotSelected">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Not Selected.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InternationalNotSelected">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International Not Selected.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="StandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standard International Flat Rate Shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ExpeditedInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Expedited International Flat Rate Shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSGlobalExpress">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Global Express Mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSGlobalPriority">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Global Priority Mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSEconomyParcel">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Economy Parcel Post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSEconomyLetter">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Economy Letter Post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSAirmailLetter">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Airmail Letter Post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSAirmailParcel">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Airmail Parcel Post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSWorldWideExpressPlus">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express Plus.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSWorldWideExpress">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSWorldWideExpedited">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Expedited.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSStandardToCanada">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Standard To Canada.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="OtherInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other International Shipping (see description).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_StandardDispatch">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standardversand (unversichert).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_InsuredDispatch">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Versand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_Writing"/>

+			<xs:enumeration value="AT_COD"/>

+			<xs:enumeration value="AT_ExpressOrCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Express- oder Kurierversand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_InsuredExpressOrCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Express- oder Kurierversand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_SpecialDispatch"/>

+			<xs:enumeration value="AT_InsuredSpecialDispatch"/>

+			<xs:enumeration value="AT_Sonstige">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sonstige (Siehe Artikelbeschreibung).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_UnversicherterVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Unversicherter Versand International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_VersicherterVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Versand International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_SonstigerVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sonstiger Versand International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_UnversicherterExpressVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Unversicherter Express Versand International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AT_VersicherterExpressVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Express Versand International

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_Regular">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Regular.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_Express">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Express.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_Registered">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Registered.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_Courier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_Other">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_EMSInternationalCourierParcels">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) EMS International Courier - Parcels.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_EMSInternationalCourierDocuments">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) EMS International Courier - Documents.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_ExpressPostInternationalDocuments">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Express Post International - Documents.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_AirMailInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Air Mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_EconomyAirInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Economy Air.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_SeaMailInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sea Mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_StandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standard International Flat Rate Postage.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_ExpeditedInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Expedited International Flat Rate Postage.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AU_OtherInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other International Postage (see description).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_StandardDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_PriorityDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_ParcelPost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_RegisteredMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_Other">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_DePostInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) De Post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_UPSInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_FedExInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Fedex.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_DHLInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) DHL.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_TPGPostTNTInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) TPG Post/TNT (Netherlands).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_StandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Frais de livraison internationale fixes.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_ExpeditedInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Frais fixes pour livraison internationale express.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_OtherInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Autres livraisons internationales (voir description).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BEFR_LaPosteInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) La Poste (France).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_StandardDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standard Delivery.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_PriorityDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Priority Delivery

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_ParcelPost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Parcel Post

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_RegisteredMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Registered Mail

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_Other">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other Shipping Service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_DePostInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) De Post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_UPSInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_FedExInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Fedex.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_DHLInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) DHL.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_TPGPostTNTInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) TPG Post/TNT (Netherlands).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_StandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standard International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_ExpeditedInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Expedited International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_OtherInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other International Shipping Services.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BENL_LaPosteInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) La Poste (France).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_StandardDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standard Delivery.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_ExpeditedDelivery"/>

+			<xs:enumeration value="CA_PostLettermail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada Post Lettermail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostRegularParcel">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada Post Regular Parcel.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostExpeditedParcel">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada Post Expedited Parcel.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostXpresspost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostPriorityCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada Post Priority Courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_StandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standard International Flat Rate Shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_ExpeditedInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Expedited International Flat Rate Shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_OtherInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other International Shipping (see description).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostExpeditedParcelUSA">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostSmallPacketsUSA">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostXpresspostUSA">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostXpresspostInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostInternationalParcelSurface">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostInternationalParcelAir">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_SmallPacketsInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Small Packets - International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PurolatorInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Purolator International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostSmallPacketsUSAGround">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada Post Small Packets - USA - Ground.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostSmallPacketsUSAAir">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada Post Small Packets - USA - Air.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_SmallPacketsInternationalGround">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Small Packets - International - Ground.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_SmallPacketsInternationalAir">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Small Packets - International - Air.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostUSALetterPost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada Post USA Letter-post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_PostInternationalLetterPost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada Post International Letter-post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSExpressCanada">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Express Canada.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSExpressSaverCanada">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Express Saver Canada.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSExpeditedCanada">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Expedited Canada.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSStandardCanada">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Standard Canada.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSExpressUnitedStates">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Express United States.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSExpeditedUnitedStates">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Expedited United States.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPS3DaySelectUnitedStates">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS 3 Day Select United States.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSStandardUnitedStates">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Standard United States.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSWorldWideExpress">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CA_UPSWorldWideExpedited">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Expedited.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_StandardDispatchAPost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standardversand (A-Post/Priority).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_StandardDispatchBPost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standardversand (B-Post/Economy).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_InsuredDispatch">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Versand (z.B. Assurance/Fragile).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_Writing"/>

+			<xs:enumeration value="CH_COD"/>

+			<xs:enumeration value="CH_ExpressOrCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Express- oder Kurierversand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_InsuredExpressOrCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Express- oder Kurierversand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_SpecialDispatch"/>

+			<xs:enumeration value="CH_InsuredSpecialDispatch"/>

+			<xs:enumeration value="CH_Sonstige">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sonstige (Siehe Artikelbeschreibung).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_SonstigerVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sonstiger Versand (Siehe Artikelbeschreibung).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_EconomySendungenInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) ECONOMY Sendungen.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_PrioritySendungenInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) PRIORITY Sendungen.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CH_UrgentSendungenInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) URGENT Sendungen.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CN_PersonalDelivery"/>

+			<xs:enumeration value="CN_RegularPackage"/>

+			<xs:enumeration value="CN_DeliveryCompanyExpress"/>

+			<xs:enumeration value="CN_PostOfficeExpress"/>

+			<xs:enumeration value="CN_Others"/>

+			<xs:enumeration value="CN_FastPostOffice"/>

+			<xs:enumeration value="CN_ExpressDeliverySameCity"/>

+			<xs:enumeration value="CN_ExpressDeliveryOtherCities"/>

+			<xs:enumeration value="CN_StandardInternational"/>

+			<xs:enumeration value="CN_ExpeditedInternational"/>

+			<xs:enumeration value="CN_OtherInternational"/>

+			<xs:enumeration value="CN_CODInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CN_StandardMailingInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CN_RegularLogisticsInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CN_EMSInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CN_OthersInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_StandardDispatch">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Unversicherter Versand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_InsuredDispatch">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Versand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_Writing"/>

+			<xs:enumeration value="DE_COD"/>

+			<xs:enumeration value="DE_ExpressOrCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Express- oder Kurierversand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_InsuredExpressOrCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Express- oder Kurierversand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_SpecialDispatch"/>

+			<xs:enumeration value="DE_InsuredSpecialDispatch"/>

+			<xs:enumeration value="DE_UnversicherterVersand">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Unversicherter Versand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_DeutschePostBrief">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Deutsche Post Brief.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_DHLPostpaket">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) DHL Postpaket.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_DHLPackchen"/>

+			<xs:enumeration value="DE_DeutschePostWarensendung">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Deutsche Post Warensendung.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_DeutschePostBuchersendung"/>

+			<xs:enumeration value="DE_HermesPaketUnversichert">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Hermes Paket (unversichert).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_HermesPaketVersichert">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Hermes Paket (versichert).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_IloxxTransportXXL">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) iloxx Transport XXL.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_IloxxUbernachtExpress"/>

+			<xs:enumeration value="DE_IloxxStandard">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) iloxx Standard.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_Sonstige">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sonstige (Siehe Artikelbeschreibung).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_UnversicherterVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Unversicherter Versand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_VersicherterVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Versand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_DHLPostpaketInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) DHL Postpaket International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_DHLPackchenInternational"/>

+			<xs:enumeration value="DE_SonstigerVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sonstiger Versand (Siehe Artikelbeschreibung).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_UnversicherterExpressVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Unversicherter Express - Versand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_VersicherterExpressVersandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Versicherter Express - Versand.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_DeutschePostBriefLandInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Deutsche Post Brief (Land).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_DeutschePostBriefLuftInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Deutsche Post Brief (Luft).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_IloxxEuropaInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) iloxx Europa.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="DE_IloxxWorldWideInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) iloxx World Wide.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ES_CartasNacionalesHasta20">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Cartas nacionales hasta 20 gr.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ES_CartasNacionalesDeMas20"/>

+			<xs:enumeration value="ES_CartasInternacionalesHasta20">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Cartas internacionales hasta 20 gr.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ES_CartasInternacionalesDeMas20">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Cartas internacionales de mas de 20 gr.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ES_PaqueteAzulHasta2kg">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Paquete Azul (nacional) hasta 2 kg.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ES_PaqueteAzulDeMas2kg"/>

+			<xs:enumeration value="ES_PaqueteInternacionalEconomico"/>

+			<xs:enumeration value="ES_Urgente"/>

+			<xs:enumeration value="ES_Otros"/>

+			<xs:enumeration value="ES_StandardInternational"/>

+			<xs:enumeration value="ES_ExpeditedInternational"/>

+			<xs:enumeration value="ES_OtherInternational"/>

+			<xs:enumeration value="ES_CartasPostalInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Cartas y tarjetas postales internacionales.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ES_EmsPostalExpressInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Ems postal expres internacional.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ES_EconomyPacketInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Paquete internacional economico.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_ChronoposteInternationalClassic">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Chronoposte International Classic.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_ColiposteColissimoDirect">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Coliposte Colissimo Direct.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_DHLExpressEuropack">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) DHL Express Europack.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_UPSStandard">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Standard.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_PostOfficeLetter">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Lettre.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_PostOfficeLetterFollowed">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Lettre avec suivi.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_PostOfficeLetterRecommended"/>

+			<xs:enumeration value="FR_ColiposteColissimo">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Colissimo.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_ColiposteColissimoRecommended"/>

+			<xs:enumeration value="FR_UPSStandardAgainstRefund">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Contre remboursement.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_Autre">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Autre mode d'envoi de courrier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_Ecopli">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Ecopli.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_Colieco"/>

+			<xs:enumeration value="FR_AuteModeDenvoiDeColis">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Autre mode d'envoi de colis.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_RemiseEnMainPropre">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Remise en main propre.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_StandardInternational"/>

+			<xs:enumeration value="FR_ExpeditedInternational"/>

+			<xs:enumeration value="FR_OtherInternational"/>

+			<xs:enumeration value="FR_LaPosteInternationalPriorityCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) La Poste - Courrier International Prioritaire.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_LaPosteInternationalEconomyCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) La Poste - Courrier International Economique.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_LaPosteColisPostalPriorityInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) La Poste - Colis Postal Prioritaire.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_LaPosteColisPostalEconomyInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) La Poste - Colis Postal Economique.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_EmballageColissimoInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Emballage Colissimo International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_ChronopostClassicInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Chronopost Classic International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_ChronopostPremiumInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Chronopost Premium International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_UPSStandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Standard.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_UPSExpressInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Express.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FR_DHLInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) DHL.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_Regular">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) National - Regular

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_Express">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) National - Express

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_NationalCOD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) National - COD

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_Courier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Local - Courier

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_LocalCOD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Local - COD

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_StandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International - Standard

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_ExpeditedInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International - Expedited

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_OtherInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International - other

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_FlatRateCOD">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Flat Rate COD

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IN_BuyerPicksUpAndPays">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Buyer picks up and pays

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_RegularMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Posta ordinaria.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_PriorityMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Posta prioritaria.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_MailRegisteredLetter">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Posta raccomandata.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_MailRegisteredLetterWithMark">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Posta raccomandata con contrassegno.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_InsuredMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Posta assicurata.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_QuickMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Posta celere.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_RegularPackage">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Pacco ordinario.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_QuickPackage1">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Pacco celere 1.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_QuickPackage3">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Pacco celere 3.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_ExpressCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Corriere espresso.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_StandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Spedizione internazionale standard a prezzo fisso.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_ExpeditedInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Spedizione internazionale celere a prezzo fisso.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IT_OtherInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Altre spedizioni internazionali (vedi descrizione).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_StandardDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Standaardverzending.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_ParcelPost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Pakketpost.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_RegisteredMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Verzending met ontvangstbevestiging.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_Other">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Andere verzendservice.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_TPGPostTNTInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) TPG Post/TNT.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_UPSInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_FedExInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Fedex.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_DHLInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) DHL.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_DPDGBRInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) DPD (Germany).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_GLSBusinessInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) GLS (Business only).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_StandardInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Vaste kosten standaard internationale verzending.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_ExpeditedInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Vaste kosten versnelde internationale verzending.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NL_OtherInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Andere internationale verzending (zie beschrijving).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TW_RegisteredMail"/>

+			<xs:enumeration value="TW_UnregisteredMail"/>

+			<xs:enumeration value="TW_COD"/>

+			<xs:enumeration value="TW_DwellingMatchPost"/>

+			<xs:enumeration value="TW_DwellingMatchCOD"/>

+			<xs:enumeration value="TW_SelfPickup"/>

+			<xs:enumeration value="TW_ParcelPost"/>

+			<xs:enumeration value="TW_ExpressMail"/>

+			<xs:enumeration value="TW_Other"/>

+			<xs:enumeration value="TW_CPInternationalLetterPost"/>

+			<xs:enumeration value="TW_CPInternationalParcelPost"/>

+			<xs:enumeration value="TW_CPInternationalRegisteredLetterPost"/>

+			<xs:enumeration value="TW_CPInternationalRegisteredParcelPost"/>

+			<xs:enumeration value="TW_CPInternationalEMS"/>

+			<xs:enumeration value="TW_CPInternationalOceanShippingParcel"/>

+			<xs:enumeration value="TW_FedExInternationalPriority">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Fedex International Priority.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TW_FedExInternationalEconomy">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Fedex International Economy.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TW_UPSWorldwideExpedited">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Expedited.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TW_UPSWorldwideExpress">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TW_UPSWorldwideExpressPlus">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express Plus.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TW_OtherInternational"/>

+			<xs:enumeration value="UK_RoyalMailFirstClassStandard">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail 1st Class Standard.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailSecondClassStandard">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail 2nd Class Standard.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailFirstClassRecorded">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail 1st Class Recorded.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailSecondClassRecorded">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail 2nd Class Recorded.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailSpecialDelivery">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail Special Delivery.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailStandardParcel">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail Standard Parcels.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_Parcelforce24">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Parcelforce 24.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_Parcelforce48">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Parcelforce 48.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_OtherCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other Courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_SellersStandardRate">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller's Standard Rate.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_CollectInPerson">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Collection in Person.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_SellersStandardInternationalRate">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sellers Standard International Rate.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailAirmailInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail Airmail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailAirsureInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail Airsure.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailSurfaceMailInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail Surface Mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailInternationalSignedFor">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail International Signed-for.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_RoyalMailHMForcesMailInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Royal Mail HM Forces Mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_ParcelForceInternationalDatapost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Parcelforce International Datapost.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_ParcelForceIreland24International">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Parcelforce Ireland 24.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_ParcelForceEuro48International">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Parcelforce Euro 48.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_ParcelForceInternationalScheduled">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Parcelforce International Scheduled.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_OtherCourierOrDeliveryInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other courier or delivery service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK_CollectInPersonInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Collect in person.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_SellersStandardRate">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller's standard rate.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_FirstClassLetterService">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) First Class Letter Service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_SwiftPostNational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) SwiftPost National.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_RegisteredPost">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Registered Post.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_EMSSDSCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) EMS SDS Courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_EconomySDSCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Economy SDS Courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_OtherCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_CollectionInPerson">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Collection in person.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_SellersStandardRateInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller's Standard International Rate.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_InternationalEconomyService">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International Economy Service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_InternationalPriorityService">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International Priority Service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_SwiftPostExpressInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) SwiftPost Express.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_SwiftPostInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) SwiftPost International.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_EMSSDSCourierInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) EMS SDS Courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_EconomySDSCourierInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Economy SDS Courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_OtherCourierInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Other courier or delivery service.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="IE_CollectionInPersonInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International collection in person.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PL_DomesticRegular">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Domestic Regular shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="PL_DomesticSpecial">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Domestic Special shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FreightShipping">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Freight Shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FreightShippingInternational">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Freight Shipping International

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSGround">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ShippingMethodOvernight">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Overnight flat rate shipping service. Domestic only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSPriorityFlatRateEnvelope">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Priority.Flat Rate Envelope

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSPriorityFlatRateBox">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Priority.Flat Rate Box

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSGlobalPrioritySmallEnvelope">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Global Priority Mail Small Envelope

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSGlobalPriorityLargeEnvelope">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Global Priority Mail Large Envelope

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="USPSExpressFlatRateEnvelope">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USPS Express Mail.Flat Rate Envelope

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSWorldWideExpressBox10kg">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express Box 10 Kg.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSWorldWideExpressBox25kg">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express Box 25 Kg.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSWorldWideExpressPlusBox10kg">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express Plus Box 10 Kg.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSWorldWideExpressPlusBox25kg">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) UPS Worldwide Express Plus box 25 Kg..

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HK_LocalPickUpOnly">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Local pick up only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HK_LocalCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Local courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HK_DomesticRegularShipping">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Domestic regular shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HK_DomesticSpecialShipping">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Domestic special shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HK_InternationalRegularShipping">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International regular shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HK_InternationalSpecialShipping">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International special shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SG_LocalPickUpOnly">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Local pick up only.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SG_LocalCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Local courier.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SG_DomesticStandardMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Domestic standard mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SG_DomesticNonStandardMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Domestic non standard mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SG_DomesticSpeedpostIslandwide">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Domestic Speedpost Islandwide.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SG_InternationalStandardMail">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International standard mail.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SG_InternationalExpressMailService">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International Express Mail Service (EMS).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SG_InternationalCourier">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) International courier (DHL, FedEx, UPS).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingServiceDetailsType.xsd #####

+

+-->

+	<xs:complexType name="ShippingServiceDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a specific shipping service.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Full name of the shipping service for display purposes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpeditedService" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the service is an expedited shipping service.

+						See Enabling Get It Fast. Whether the service is an expedited

+						shipping service. Only returned for sites for which the Get It

+						Fast feature is enabled and only if true.&lt;br&gt;&lt;br&gt;

+						Related fields:&lt;br&gt;

+						Item.DispatchTimeMax and Item.GetItFast in AddItem

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="InternationalService" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether the shipping service is an international shipping service, i.e.

+						one that ships from to another country from the country of the

+						specified site.&lt;br&gt;&lt;br&gt;

+						Related field:&lt;br&gt;

+						Item.ShippingDetails.InternationalShippingServiceOption in AddItem

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingService" type="xs:token" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Value used for the shipping service.

+						For a list of valid values that you can cache for future use, call GeteBayDetails

+						with DetailName set to ShippingServiceDetails.&lt;br&gt;&lt;br&gt;

+						Related fields:&lt;br&gt;

+						Item.ShippingDetails.InternationalShippingServiceOption.ShippingService in AddItem&lt;br&gt;

+						Item.ShippingDetails.ShippingServiceOptions.ShippingService in AddItem

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Numeric identifier. A value greater than 50000 represents an

+						international shipping service (confirmed by

+						InternationalShippingService being true). Some applications use this ID

+						to look up shipping services more efficiently.

+						Also useful for applications that have migrated from the legacy XML API.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTimeMax" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The maximum guaranteed number of days the shipping carrier will

+						take to ship an item (not including the time it takes the

+						seller to deliver the item to the shipping carrier). Always

+						returned when ExpeditedService is true or if defined for a particular service.

+						See Enabling Get It Fast feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTimeMin" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The minimum guaranteed number of days the shipping carrier will

+						take to ship an item (not including the time it takes the

+						seller to deliver the item to the shipping carrier). Always

+						returned when ExpeditedService is true or if defined for a particular service.

+						See Enabling Get It Fast feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceCode" type="ShippingServiceCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						For future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingServiceOptionsType.xsd #####

+

+-->

+	<xs:complexType name="ShippingServiceOptionsType">

+		<xs:annotation>

+			<xs:documentation>

+				Shipping costs and options related to a domestic shipping service.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ShippingInsuranceCost" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The insurance cost associated with shipping a single item

+						with this shipping service. Exception: for GetItemShipping,

+						this is proportional to QuantitySold. If the item has not yet been

+						sold, insurance information cannot be calculated and the value is

+						0.00. For calculated shipping only.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<SeeLink>

+							<Title>Getting Shipping Cost Information</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShippingGettingCosts</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingService" type="xs:token" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A domestic shipping service offered for shipping the item (for example, UPS

+						Ground). For a list of valid values that you can cache for future use, call

+						GeteBayDetails with DetailName set to ShippingServiceDetails. For flat and

+						calculated shipping.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceCost" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The meaning of this element depends on the call and on whether flat or

+						calculated shipping has been selected. (For example, it could be the

+						cost to ship a single item, the cost to ship all items, or the cost to ship

+						just the first of many items, with ShippingServiceAdditionalCost accounting

+						for the rest.) When returned by GetItemShipping, it includes the packaging and

+						handling cost. For flat and calculated shipping.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>ScheduledList</Context>

+						</CallInfo>

+						<SeeLink>

+							<Title>Getting Shipping Cost Information</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShippingGettingCosts</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceAdditionalCost" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The cost of shipping each additional item beyond the first item. For input,

+						this is required if the listing is for multiple items and should be zero for

+						single-item listings. Default value is 0.00. For flat shipping only.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<SeeLink>

+							<Title>Getting Shipping Cost Information</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=ShippingGettingCosts</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServicePriority" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Seller-preferred presentation order relative to other

+						service options. Valid values: 1 (1st choice), 2 (2nd choice),

+						3 (3rd choice). For flat and calculated shipping.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SendInvoice</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddOrder</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpeditedService" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the service is an expedited shipping service. See Enabling Get It Fast.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTimeMin" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The minimum guaranteed number of days in which the shipping carrier

+						can ship an item (not including the time it takes the seller to

+						deliver the item to the shipping carrier). See Enabling Get It Fast.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTimeMax" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The maximum guaranteed number of days the shipping carrier will

+						take to ship an item (not including the time it takes the seller to

+						deliver the item to the shipping carrier). See Enabling Get It Fast.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingTermRequiredDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="ShippingTermRequiredDefinitionType">

+		<xs:annotation>

+			<xs:documentation>

+				If the field is present, the corresponding feature applies to the category. The

+				field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingTermsCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingTermsCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Shipping terms codes indicate who pays for the shipping of

+				an item, the seller or the buyer.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="SellerPays">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Seller pays all shipping costs.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyerPays">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Buyer pays all shipping costs.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ShippingTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="ShippingTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The shipping cost model offered by the seller.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Flat">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Flat shipping model: the seller establishes the cost

+						of shipping and cost of shipping insurance, regardless of

+						what any buyer-selected shipping service might charge the

+						seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Calculated">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Calculated shipping model: the cost of shipping is

+						determined in large part by the seller-offered and

+						buyer-selected shipping service. The seller might assess an

+						additional fee via PackagingHandlingCosts.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Freight">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Freight shipping model: the cost of shipping is

+						determined by a third party, FreightQuote.com, based on the item

+						location (zip code). Currently, Freight can only be specified

+						on input via eBay Web site, not API.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Free">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Free shipping.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="NotSpecified">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The seller did not specify the shipping type.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SiteCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SiteCodeType">

+		<xs:annotation>

+			<xs:documentation>

+SiteCodeType - Type declaration to be used by other schema.

+Identifies eBay sites (by the country in which each resides) on

+which a user is registered and on which items can be listed.   

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="US">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) USA, site ID 0, abbreviation US, currency USD.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Canada">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Canada, site ID 2, abbreviation CA, currencies CAD and USD.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UK">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) United Kingdom, site ID 3, abbreviation UK, currency GBP.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Australia">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Australia, site ID 15, abbreviation AU, currency AUD.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Austria">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Austria, site ID 16, abbreviation AT, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Belgium_French">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Belgium (French), site ID 23, abbreviation BEFR, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="France">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) France, site ID 71, abbreviation FR, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Germany">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Germany, site ID 77, abbreviation DE, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Italy">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Italy, site ID 101, abbreviation IT, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Belgium_Dutch">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Belgium (Dutch), site ID 123, abbreviation BENL, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Netherlands">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Netherlands, site ID 146, abbreviation NL, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Spain">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Spain, site ID 186, abbreviation ES, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Switzerland">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Switzerland, site ID 193, abbreviation CH, currency CHF.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Taiwan">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Taiwan, site ID 196, abbreviation TW, currency TWD.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBayMotors">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) eBay Motors, site ID 100, currency USD.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="HongKong">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Hong Kong, site ID 201, abbreviation HK, currency HKD.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Singapore">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Singapore, site ID 216, abbreviation SG, currency SGD.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="India">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) India, site ID 203, abbreviation IN, currency INR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="China">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) China, site ID 223, abbreviation CN, currency CNY.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Ireland">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Ireland, site ID 205, abbreviation IE, currency EUR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Malaysia">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Malaysia, site ID 207, abbreviation MY, currency MYR.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Philippines">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Philippines, site ID 211, abbreviation PH, currency PHP.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Poland">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Poland, site ID 212, abbreviation PL, currency PLN.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Sweden">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Sweden, site ID 218, abbreviation SE, currency SEK.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SiteDefaultsType.xsd #####

+

+-->

+	<xs:complexType name="SiteDefaultsType">

+		<xs:annotation>

+			<xs:documentation>

+				A container node for feature definitions that apply to the entire site.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ListingDuration" type="ns:ListingDurationReferenceType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the ID of a set of default durations for a certain type of listing.

+						The actual duration values are returned within the FeatureDefinitions node.

+						The type of listing is named in the type attribute.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingTermsRequired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether sellers are

+						required to specify a shipping service and its associated cost

+						when listing items. True means the shipping terms are required

+						unless a specific category overrides this setting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether categories allow

+						best offers. True means best offers are allowed site-wide,

+						unless a specific category overrides the setting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DutchBINEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether categories allow

+						DutchBIN. True means best offers are allowed site-wide,

+						unless a specific category overrides the setting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserConsentRequired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether a bidder must consent to the bid

+						by confirming that he or she read and agrees to the terms in eBay&apos;s privacy policy.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HomePageFeaturedEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether or not it is possible to enhance a listing by putting

+						it into a rotation for display on a special area of the eBay home page.

+						Support for this feature varies by site. Item or feedback restrictions may apply.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProPackEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether categories allow

+						the ProPack feature (a feature pack). True means ProPack is allowed site-wide,

+						unless a specific category overrides the setting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BasicUpgradePackEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether

+						categories allow the BasicUpgradePack feature (a feature pack).

+						True means it is allowed site-wide, unless a specific category overrides the setting.

+						Australia site (site ID 15, abbreviation AU) only. Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ValuePackEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether

+						categories allow the ValuePack feature (a feature pack).

+						True means it is allowed site-wide, unless a specific category overrides the setting.

+						Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProPackPlusEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether

+						categories allow the ProPackPlus feature (a feature pack).

+						True means it is allowed site-wide, unless a specific category overrides the setting.

+						Effective beginning February 22, 2006.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AdFormatEnabled" type="ns:AdFormatEnabledCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether categories allow

+						the Ad Format feature. True means the feature is allowed site-wide,

+						unless a specific category overrides the setting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DigitalDeliveryEnabled" type="ns:DigitalDeliveryEnabledCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						eBay enables you to list and sell digital files (such as Adobe PDF files) or information that buyers

+						can access online or have delivered electronically.

+						This flag specifies whether most categories on the site allow digitally delivered items

+						(i.e., the default setting for the site's categories).&lt;br&gt;&lt;br&gt;

+						If true, digitally delivered items are allowed site-wide,

+						but specific categories can override the setting if they don't support it.&lt;br&gt;

+						If false, digitally delivered items are not normally allowed for the site,

+						but some categories may override the setting.&lt;br&gt;&lt;br&gt;

+						If a category supports digital listings, it means that you have the option to list digital items in

+						that category (i.e., Item.DigitalDeliveryDetails can be specified in your listing request).

+						It does not mean the category requires you to list items digitally.

+						If you list in two categories, an item can only specify this option if

+						both categories support digital listings.

+						Digital listings are not eligible for eBay Express.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferCounterEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether categories allow

+						counter offers for best offers. True means counter offers are allowed site-wide,

+						unless a specific category overrides the setting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferAutoDeclineEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether categories allow

+						auto decline for best offers. True means auto decline is allowed site-wide,

+						unless a specific category overrides the setting.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketSpecialitySubscription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for  whether 

+						LocalMarketSpecialitySubscription feature is supported for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketRegularSubscription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether LocalMarketRegularSubscription 

+						feature is supported for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketPremiumSubscription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether LocalMarketPremiumSubscription 

+						feature is supported for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LocalMarketNonSubscription" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether LocalMarketNonSubscription 

+						feature is supported for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether most categories on the site are eligible for eBay Express.

+						eBay Express is a specialty site where customers can buy new, fixed-price goods in a more

+						conventional e-commerce experience.&lt;br&gt;&lt;br&gt;

+						If true, items on the site are eligible for Express,

+						but specific categories can override the setting if they don't support Express.

+						For example, categories that are not covered by PayPal Buyer Protection

+						(e.g., Live Auctions and Motors vehicles) are excluded from Express.&lt;br&gt;

+						If false, items on the site are not eligible for Express,

+						but some categories may override the setting.&lt;br&gt;&lt;br&gt;

+						If you list in an Express-enabled category, it does not necessarily mean that

+						the item will appear in that category when buyers browse and search Express.

+						It only means that the item can also be included on Express,

+						assuming all other Express eligibility requirements are met.

+						See "eBay Express" in the eBay Web Services guide for information about other

+						eligibility requirements.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressPicturesRequired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether most categories on the site require a listing to include a picture

+						in order to qualify for eBay Express.&lt;br&gt;&lt;br&gt;

+						If true, items on the site require a picture in order to qualify for Express,

+						but specific categories can override this requirement.

+						For example, on the US site, pictures are normally required for Express listings. However,

+						the Event Tickets category could override this requirement if pictures

+						are not commonly expected for tickets.&lt;br&gt;

+						If false, items on the site do not require a picture,

+						but some categories may override the setting.&lt;br&gt;&lt;br&gt;

+						Only meaningful if ExpressEnabled is true for the category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExpressConditionRequired" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether most categories on the site require a listing to include the Item Condition attribute

+						in order to qualify for eBay Express. &lt;br&gt;&lt;br&gt;

+						If true, items on the site require the Item Condition in order to qualify for Express,

+						but specific categories can override this requirement.

+						For example, on the US site, the Item Condition is normally required for Express listings. However,

+						the Event Tickets category could override this requirement because there is little need

+						to distinguish between new and used tickets. (People rarely sell used tickets

+						after an event unless the ticket is also a collectible item.)&lt;br&gt;

+						If false, items on the site do not require the Item Condition,

+						but some categories may override the setting.&lt;br&gt;&lt;br&gt;

+						Only meaningful if ExpressEnabled is true for the category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumReservePrice" type="xs:double" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether the Minimum Reserve Price 

+						feature is supported for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerContactDetailsEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionConfirmationRequestEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the default site setting for whether the Transaction Confirmation 

+						Request feature is supported for this category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryFeatures</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SiteDetailsType.xsd #####

+

+-->

+	<xs:complexType name="SiteDetailsType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a specific site.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Site" type="ns:SiteCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Short name that identifies an eBay site. Usually, an eBay site is associated 

+						with a particular country or region (e.g., US or Belgium_French). 

+						Specialty sites (e.g., eBay Express or eBay Stores) use the same site ID as 

+						their associated main eBay site. The US eBay Motors site is an exception to this convention.&lt;br&gt;&lt;br&gt;

+						Related fields:&lt;br&gt;

+						Item.Site in AddItem&lt;br&gt;

+						User.Site in GetUser

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SiteID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Numeric identifier for an eBay site. If you are using the 

+						SOAP API, you use numeric site IDs in the request URL. 

+						If you are using the XML API, you use numeric site IDs in the 

+						X-EBAY-API-SITEID header.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SiteHostedPictureType.xsd #####

+

+-->

+	<xs:complexType name="SiteHostedPictureType">

+		<xs:annotation>

+			<xs:documentation>

+        Data for images hosted by eBay Picture Services (EPS).With compatibility

+				level 439 and higher, deprecated in the response in favor of Item.PictureDetails.

+				With the future deprecation of SiteHostedPicture as input, Applications should

+				use Item.PictureDetails instead.

+				&lt;br&gt;&lt;br&gt;

+				Note that the Gallery Plus image enhancement does not support

+				SiteHostedPicture. Use Item.PictureDetails with that feature.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="PictureURL" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Contains the URL for an image hosted by eBay Picture

+						Services (EPS) or by Picture Manager and associated with an item.

+						If specified, this cannot have an empty/null value. In general, a

+						listing can have a maximum of 12 picture URLs hosted by eBay Picture

+						Services. For the US eBay Motors site (for all vehicle listings),

+						and for the eBay Canada site for motors, the picture pack of a

+						listing can contain up to 24 photos. To specify multiple pictures,

+						send each URL in a separate, adjacent PictureURL element. In most

+						cases, the image at the first URL is also used for the picture at

+						the top of the View Item page on the Web site. For eBay Live

+						Auctions, a listing can have a maximum of 5 picture URLs hosted by

+						eBay Picture Services. For VerifyAddItem, you can use a fake eBay

+						Picture Services URL (http://i2.ebayimg.com/abc/M28/dummy.jpg) to

+						verify that your application is obtaining the correct fees for the

+						quantity of images you pass in. For listing calls (e.g., AddItem):

+						With the future deprecation of SiteHostedPicture as input,

+						applications should use Item.PictureDetails.PictureURL instead. See

+						Item.PictureDetails.PictureURL for information about how to remove

+						pictures from a listing. For retrieval calls (e.g., GetItem): With

+						compatibility 439 and higher, Item.PictureDetails.PictureURL is

+						returned instead.

+						&lt;br&gt;&lt;br&gt;

+						Note that the Gallery Plus image enhancement does not support

+						SiteHostedPicture. Use Item.PictureDetails with that feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>150</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PhotoDisplay" type="ns:PhotoDisplayCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the type of image display used in a listing. Some options

+						are only available if images are hosted through eBay Picture

+						Services (EPS), and others are not. eBay determines this by parsing

+						the associated PictureURL. Cannot be used in combination with

+						Listing Designer layouts. Specify None or do not add PhotoDisplay

+						when ListingDesigner.LayoutID is a value other than 0.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GalleryType" type="ns:GalleryTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether a picture for the item is included in the Gallery

+						and, if so whether the item is also featured in the Gallery. If the

+						value is Gallery or Featured, eBay checks the available image URLs

+						in the following order to determine which URL to use (if more than

+						one of these URLs is available):&lt;br&gt;&lt;br&gt;

+				whether the item is also featured or Plus in the Gallery.

+				If the value is Gallery or Plus or Featured, eBay checks the available image URLs

+            a) Use the URL in GalleryURL, if it is specified.&lt;br&gt;

+            b) Otherwise, if ProductListingDetails.UseStockPhotoURLAsGallery is true, use the eBay stock photo.&lt;br&gt;

+            c) Otherwise, use the value of the first PictureURL in the array of PictureURL fields, if any.&lt;br&gt;

+            d) Otherwise, if ProductListingDetails.ProductID is specified, use the eBay stock photo

+               (eBay resets UseStockPhotoURLAsGallery to true in this case).&lt;br&gt;

+            e) If eBay is unable to find an image URL for the listing, an error is returned.&lt;br&gt;&lt;br&gt;

+            See "Describing Items in a Listing" in the eBay Web Services Guide for additional information

+            about working with pictures and related validation rules.

+            You cannot remove Gallery or Plus or Featured when you revise a listing.

+						&lt;br&gt;&lt;br&gt;

+						Note that the Gallery Plus image enhancement does not support

+						SiteHostedPicture. Use Item.PictureDetails with that feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GalleryURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						URL for a picture to be used as the Gallery thumbnail (item must be

+						listed with the fee-based option to be in the Gallery or Gallery

+						Featured). If the item is Gallery Featured, a value must be supplied

+						for either GalleryURL or PictureURL. In either case:&lt;br&gt;

+						(a) If a URL is provided only for PictureURL, it is used as the gallery thumbnail.&lt;br&gt;

+						(b) If a URL is provided for both GalleryURL and PictureURL, then

+						the picture indicated in GalleryURL is used as the thumbnail. The

+						image used for the Gallery thumbnail must be in one of the graphics

+						formats JPEG, BMP, TIF, or GIF.&lt;br&gt;

+						If the item has bids (or items have been sold) or the listing ends

+						within 12 hours, you can add GalleryURL or change its value, but you

+						cannot remove the gallery picture if it was previously specified.

+						Not applicable to eBay Motors listings. See "Describing Items in a

+						Listing" in the eBay Web Services Guide for additional validation

+						rules. For eBay Live Auctions, lots are listed in the gallery for

+						free.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>1024</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>SecondChanceOffer</Context>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						option to be in the Gallery or Plus or Gallery Featured). If the item is Gallery Featured, a value must

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PictureSource" type="ns:PictureSourceCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					The service hosting the images in PictureURL, if any.

+					This information is primarily useful for Picture Manager subscribers, who pay a

+					flat subscription fee instead of individual picture fees per listing.

+					Only returned when PictureURL is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SiteIDFilterCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SiteIDFilterCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				SiteIDFilterCodeType - Type declaration to be used by other schema.

+				This code identifies the SiteIDFilters  to allow user to filter the

+				category listings by SiteID. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ListedInCurrencyImplied">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Items listed in the currency implied by SiteID. 

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LocatedInCountryImplied">

+				<xs:annotation>

+					<xs:documentation> 

+						(in) Items located in the country implied by SiteID.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AvailableInCountryImplied">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Items available to the country implied by SiteID. (For the US site,

+						this implies listings from ALL English-language countries that are

+						available to the US.)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SiteImplied">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Items listed on the site implied by SiteID, regardless of listing

+						currency.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BelgiumListing">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Items located in Belgium or listed on one of the two Belgian sites.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SiteLocationType.xsd #####

+

+-->

+	<xs:complexType name="SiteLocationType">

+		<xs:annotation>

+			<xs:documentation>

+            Contains the data that defines a site-based filter (used when

+            searching for items and filtering the search result set).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SiteID" type="ns:SiteIDFilterCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A filter to use when listing categories or items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SiteWideCharacteristicsType.xsd #####

+

+-->

+	<xs:complexType name="SiteWideCharacteristicsType">

+		<xs:annotation>

+			<xs:documentation> 

+A list of one or more characteristics sets mapped to the category, if any. Use this information when working with Item Specifics (Attributes) and Pre-filled Item Information (Catalogs) functionality.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CharacteristicsSet" type="ns:CharacteristicsSetType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						Container for site-wide characteristics set information.  

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExcludeCategoryID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+					A category that does not support the specified site-wide characteristics set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategory2CS</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SkypeContactOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SkypeContactOptionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			  Indicates Skype contact options.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Chat">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The Skype Chat contact option.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Voice">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The Skype Voice contact option.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode"/>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SkypeOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SkypeOptionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Deprecated. Use values or values of SkypeContactOptionCodeType. 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Deprecated. Use values or values of SkypeContactOptionCodeType.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Voice">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Deprecated. Use values or values of SkypeContactOptionCodeType.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SortOrderCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SortOrderCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Indicates the order in which the catalog search engine will sort the results

+if you pass a sort attribute (SortAttributeID) in search requests.

+Applications cannot change the sort order of a sort attribute.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Ascending">

+				<xs:annotation>

+					<xs:documentation>

+						The results will be sorted by the specified attribute in ascending (low to high) order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Descending">

+				<xs:annotation>

+					<xs:documentation>

+						The results will be sorted by the specified attribute in descending (high to low) order.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SpellingSuggestionType.xsd #####

+

+-->

+	<xs:complexType name="SpellingSuggestionType">

+		<xs:annotation>

+			<xs:documentation>

+				Suggested spelling of mispelled search terms, along with the number of matching items that would have been returned if the suggestions had been used.	

+		  </xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="MatchingItemCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						The number of matching items if the suggested spelling of the search term or terms had 

+						been used. If multiple terms are used, MatchingItemCount applies to the terms taken as a unit.

+		      </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Text" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+					  Suggestion for a different spelling of the search term or terms. The suggestions are given in Text tags

+					  and the suggestion for the first word is given before the suggestion for subsequent words.

+					  Suggestions are based on correctly-spelled terms in items, so suggestions vary over time and depend on 

+					  whether a word or word combination is in one or more items. 									  

+  		    </xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCategoryUpdateActionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreCategoryUpdateActionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies the type of action to carry out with SetStoreCategories.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Add">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Add the listed categories to the store.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Delete">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Delete the listed categories from the store.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Move">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Move the listed categories from one place in the store category 

+						structure to another.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Rename">

+				<xs:annotation>

+					<xs:documentation>

+						(in) Rename the listed store categories to the names provided.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreColorSchemeArrayType.xsd #####

+

+-->

+	<xs:complexType name="StoreColorSchemeArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Set of eBay Store color schemes.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ColorScheme" type="ns:StoreColorSchemeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A Store color scheme.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreColorSchemeType.xsd #####

+

+-->

+	<xs:complexType name="StoreColorSchemeType">

+		<xs:annotation>

+			<xs:documentation>

+				Store color scheme.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ColorSchemeID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store color scheme ID. (use GetStoreOptions to get the list of

+						valid theme color scheme IDs).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store color scheme name. Provides a user-friendly name for the

+						color scheme.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Color" type="ns:StoreColorType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store color set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Font" type="ns:StoreFontType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store font set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreColorType.xsd #####

+

+-->

+	<xs:complexType name="StoreColorType">

+		<xs:annotation>

+			<xs:documentation>

+				Store color set.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Primary" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Primary color for the Store. Specified in 6-digit Hex format.

+						For example: F6F6C9

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>6</MaxLength>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Secondary" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Secondary color for the Store. Specified in 6-digit Hex format.

+						For example: F6F6C9

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>6</MaxLength>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Accent" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Accent color for the Store. Specified in 6-digit Hex format.

+						For example: F6F6C9

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>6</MaxLength>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomCategoryArrayType.xsd #####

+

+-->

+	<xs:complexType name="StoreCustomCategoryArrayType">

+		<xs:annotation>

+			<xs:documentation>

+	  		Set of custom categories for the Store.

+	  	</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CustomCategory" type="ns:StoreCustomCategoryType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+	  				A Store custom category.

+	  			</xs:documentation>

+  				<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStore</CallName>

+  						<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCategories</CallName>

+  						<RequiredInput>Yes</RequiredInput>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomCategoryType.xsd #####

+

+-->

+	<xs:complexType name="StoreCustomCategoryType">

+		<xs:annotation>

+			<xs:documentation>

+				Configuration of a store custom category.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CategoryID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+						Custom category ID.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStoreCategories</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Name of the custom category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStoreCategories</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Order" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+						Order in which the custom category appears in the list of store

+						categories.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStoreCategories</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ChildrenCategories" type="ns:StoreCustomCategoryType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Container for store custom subcategory configuration information. This field

+						is being deprecated. Use ChildCategory to specify subcategories.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ChildCategory" type="ns:StoreCustomCategoryType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Describes the configuration of a store custom subcategory. Stores support

+						three levels of categories.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStoreCategories</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomHeaderLayoutCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreCustomHeaderLayoutCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies whether the Store has a custom header.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NoHeader">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies that the Store does not have a custom header.

+					</xs:documentation>

+				</xs:annotation>		

+			</xs:enumeration>

+			<xs:enumeration value="CustomHeaderShown">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies that the Store does have a custom header.

+					</xs:documentation>

+				</xs:annotation>		

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomListingHeaderDisplayCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreCustomListingHeaderDisplayCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies how the custom listing header will be displayed.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						No custom listing header is displayed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Full">

+				<xs:annotation>

+					<xs:documentation>

+						The full custom listing header is displayed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FullAndLeftNavigationBar">

+				<xs:annotation>

+					<xs:documentation>

+						The full custom listing header and the left navigation bar is displayed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomListingHeaderLinkCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreCustomListingHeaderLinkCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies the type of link in the custom listing header.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="None">

+				<xs:annotation>

+					<xs:documentation>

+						No type.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AboutMePage">

+				<xs:annotation>

+					<xs:documentation>

+						Link is to an About Me page.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="CustomPage">

+				<xs:annotation>

+					<xs:documentation>

+						Link is to a custom page.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="CustomCategory">

+				<xs:annotation>

+					<xs:documentation>

+						Link is to a custom category.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomListingHeaderLinkType.xsd #####

+

+-->

+	<xs:complexType name="StoreCustomListingHeaderLinkType">

+		<xs:annotation>

+			<xs:documentation>

+				Custom listing header link.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="LinkID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+			  		Link ID for the listing header link. The ID is used when the link

+			  		is a custom category or for a custom page, and it is not needed

+			  		when the LinkType property is "AboutMe" or "None".

+			  	</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Order" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+			  		Order in which to show the custom listing header link.

+			  	</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LinkType" type="ns:StoreCustomListingHeaderLinkCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+			  		Type of link to include in the custom listing header.

+			  	</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomListingHeaderType.xsd #####

+

+-->

+	<xs:complexType name="StoreCustomListingHeaderType">

+	<xs:annotation>

+		<xs:documentation>

+			Configuration of a Store custom listing header.

+		</xs:documentation>

+	</xs:annotation>

+		<xs:sequence>

+			<xs:element name="DisplayType" type="ns:StoreCustomListingHeaderDisplayCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Display type for the custom listing header.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Logo" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+			  		Specifies whether the custom header has a logo.

+			  	</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SearchBox" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether the custom header has a search box.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LinkToInclude" type="ns:StoreCustomListingHeaderLinkType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Link to include in the custom header.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AddToFavoriteStores" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether the custom header has a link to Add to 

+						Favorite Stores.

+					</xs:documentation> 

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SignUpForStoreNewsletter" type="xs:boolean" minOccurs="0">

+				<xs:annotation>	

+					<xs:documentation>

+						Specifies whether the custom header has a link to Sign up for Store 

+						Newsletter.

+					</xs:documentation> 

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BreadCrumb" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether the bread crumb needs to be displayed above the listing 

+						header.

+					</xs:documentation> 

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomPageArrayType.xsd #####

+

+-->

+	<xs:complexType name="StoreCustomPageArrayType">

+		<xs:annotation>

+			<xs:documentation>

+	  		Set of Store custom pages.

+	  	</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CustomPage" type="ns:StoreCustomPageType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+	  				A Store custom page.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Always</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomPageStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreCustomPageStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				List of possible statuses for Store custom pages.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Active">

+				<xs:annotation>

+					<xs:documentation>

+						(in,out) The page is visible.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Delete">

+				<xs:annotation>

+					<xs:documentation>

+						(in) The page is to be deleted.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="Inactive">

+				<xs:annotation>

+					<xs:documentation>

+						(in,out) The page is not visible.

+					</xs:documentation>

+				</xs:annotation>		

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreCustomPageType.xsd #####

+

+-->

+	<xs:complexType name="StoreCustomPageType">

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				Name of the Store custom page. This value is required if you are creating a 

+	  				new page (by not specifying a PageID). Note that you must include a Name for 

+	  				the page even if you are using the PreviewEnabled tag. However, since using 

+	  				the preview functionality means that the page will not be persisted, you can 

+	  				enter a dummy value for this field if you have not decided on a name for the 

+	  				page. The Name is used in links to the page.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Always</Returned>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<RequiredInput>Conditionally</RequiredInput>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PageID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				Unique identifier for the Store custom page. When you are using 

+	  				SetStoreCustomPage, if you specify a valid PageID, the custom page

+	  				is updated. If you do not specify a PageID, the custom page is

+	  				added.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Always</Returned>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<RequiredInput>Conditionally</RequiredInput>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="URLPath" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				The URL path of the custom page. Only if you are using Chinese characters in 

+	  				the Name property for the custom page do you need to use this field, such as 

+	  				if you are opening a Store on the Taiwan site. The reason for this is that 

+	  				the URL path is normally derived from the Store custom page name, but it 

+	  				cannot be derived from the name of the custom page if it contains Chinese 

+	  				characters because URLs cannot contain Chinese characters.

+	  				URLPath is included in the GetStoreCustomPage response when PageID is 

+	  				specified.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<RequiredInput>Conditionally</RequiredInput>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="URL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				Full URL of the Store custom page. URLPath is included in the 

+	  				GetStoreCustomPage response when PageID is specified in the request.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:StoreCustomPageStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				Status of the custom page, active or inactive. Set Status to Delete with SetStoreCustomPage to delete the page.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Always</Returned>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<RequiredInput>Conditionally</RequiredInput>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Content" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				The HTML content of the custom page. This field has a maximum size

+	  				of 96 kilobytes. If PreviewEnabled is true, then this value is required. 

+	  				Otherwise, it is optional.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<RequiredInput>Conditionally</RequiredInput>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LeftNav" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				Specifies whether the left navigation bar is visible on the page. LeftNav 

+	  				is included in the GetStoreCustomPage response when PageID is specified 

+	  				in the request.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<RequiredInput>Conditionally</RequiredInput>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PreviewEnabled" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				If true, then the other inputs are ignored, and the content of the

+	  				page as it will be displayed within the Store is returned. If

+	  				false, then the page is either modified or added, and the content

+	  				of the page is not returned.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<RequiredInput>No</RequiredInput>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Order" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+	  				Order in which the page is displayed in the list of custom pages.

+	  			</xs:documentation>

+  				<xs:appinfo>

+  					<CallInfo>

+  						<CallName>GetStoreCustomPage</CallName>

+  						<Returned>Always</Returned>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<RequiredInput>Conditionally</RequiredInput>

+  					</CallInfo>

+  					<CallInfo>

+  						<CallName>SetStoreCustomPage</CallName>

+  						<Returned>Conditionally</Returned>

+  					</CallInfo>

+  				</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreFontFaceCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreFontFaceCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Font selection for Store configuration.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Arial">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Arial font.

+					</xs:documentation>

+				</xs:annotation>		

+			</xs:enumeration>

+			<xs:enumeration value="Courier">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Courier font.

+					</xs:documentation>

+				</xs:annotation>		

+			</xs:enumeration>

+			<xs:enumeration value="Times">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Times New Roman font.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="Verdana">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Verdana font.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreFontSizeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreFontSizeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Font size selection for Store configuration.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="XXS">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Extra extra small.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="XS">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Extra small.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="S">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Small.

+					</xs:documentation>

+				</xs:annotation>		

+			</xs:enumeration>

+			<xs:enumeration value="M">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Medium.

+					</xs:documentation>

+				</xs:annotation>		

+			</xs:enumeration>

+			<xs:enumeration value="L">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Large.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="XL">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Extra large.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="XXL">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Extra extra large.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreFontType.xsd #####

+

+-->

+	<xs:complexType name="StoreFontType">

+		<xs:annotation>

+			<xs:documentation>

+	  		Store font set.

+	  	</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="NameFace" type="ns:StoreFontFaceCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font for the Store name.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NameSize" type="ns:StoreFontSizeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font size for the Store name.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NameColor" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font color for the Store name. Specified in 6-digit Hex format.

+						For example: F6F6C9

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>6</MaxLength>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TitleFace" type="ns:StoreFontFaceCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font for the Store section title.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TitleSize" type="ns:StoreFontSizeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font size for the Store section title.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TitleColor" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font color for the Store section title. Specified in 6-digit Hex

+						format. For example: F6F6C9

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DescFace" type="ns:StoreFontFaceCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font for the Store description.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DescSize" type="ns:StoreFontSizeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font size for the Store description.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DescColor" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Font color for the Store description. Specified in 6-digit Hex

+						format. For example: F6F6C9

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreHeaderStyleCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreHeaderStyleCodeType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Full">

+				<xs:annotation>

+					<xs:documentation>

+						The full Store header is used.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Minimized">

+				<xs:annotation>

+					<xs:documentation>

+						A minimized Store header is used.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreItemListLayoutCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreItemListLayoutCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Set of available layouts for items listed in an eBay Store.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ListView">

+				<xs:annotation>

+					<xs:documentation>

+						Displays item list as a single column, with smaller item pictures.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="GalleryView">

+				<xs:annotation>

+					<xs:documentation>

+						Displays item list in two columns, with larger item pictures.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreItemListSortOrderCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreItemListSortOrderCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				List of available options for how items are sorted in an eBay Store.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="EndingFirst">

+				<xs:annotation>

+					<xs:documentation>

+						(in,out) Lists items with those ending soon listed first.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="NewlyListed">

+				<xs:annotation>

+					<xs:documentation>

+						(in,out) Lists items with those newly listed appearing in the list first.

+					</xs:documentation>

+				</xs:annotation>					

+			</xs:enumeration>

+			<xs:enumeration value="LowestPriced">

+				<xs:annotation>

+					<xs:documentation>

+						(in,out) Lists items by price in ascending order. The item with the lowest

+						starting price is listed first.

+					</xs:documentation>

+				</xs:annotation>					

+			</xs:enumeration>

+			<xs:enumeration value="HighestPriced">

+				<xs:annotation>

+					<xs:documentation>

+						(in,out) Lists items by price in descending order. The item with the highest

+						starting price is listed first.

+					</xs:documentation>

+				</xs:annotation>				

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreLogoArrayType.xsd #####

+

+-->

+	<xs:complexType name="StoreLogoArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Set of Store logos.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Logo" type="ns:StoreLogoType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A Store logo.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreLogoType.xsd #####

+

+-->

+	<xs:complexType name="StoreLogoType">

+		<xs:annotation>

+			<xs:documentation>

+				Store logo.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="LogoID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store logo ID (use GetStoreOptions to get the list of valid logo IDs).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store logo name. Provides a user-friendly name for the logo.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="URL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						URL of the logo. Must have a .gif or .jpg extention. Specified when

+						you are using a customized logo.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StorePreferencesType.xsd #####

+

+-->

+	<xs:complexType name="StorePreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+				Store Preferences type.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="VacationPreferences" type="ns:StoreVacationPreferencesType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store vacation hold preferences.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStorePreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStorePreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreSearchCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreSearchCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Identifies the StoreSearch codes (e.g., for GetSearchResults requests).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="AllItemsInTheStore">

+				<xs:annotation>

+					<xs:documentation>

+                (in) Within a single store for all items (specify store in

+                SearchStoreFilterType.StoreName).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AuctionItemsInTheStore">

+				<xs:annotation>

+					<xs:documentation> 

+                (in) Within a single store for auction items (specify store in

+                SearchStoreFilterType.StoreName).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyItNowItemsInTheStore">

+				<xs:annotation>

+					<xs:documentation> 

+                (in) Within a single store for basic fixed price items, Store Inventory format items, 

+                and auction items with Buy It Now. (Specify store in SearchStoreFilterType.StoreName).

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="BuyItNowItemsInAllStores">

+				<xs:annotation>

+					<xs:documentation> 

+                (in) Across all stores for basic fixed price items, Store Inventory format items, 

+                and auction items with Buy It Now.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreSubscriptionArrayType.xsd #####

+

+-->

+	<xs:complexType name="StoreSubscriptionArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Set of eBay Store subscription levels.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Subscription" type="ns:StoreSubscriptionType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A Store subscription level.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreSubscriptionLevelCodeList.xsd #####

+

+-->

+	<xs:simpleType name="StoreSubscriptionLevelCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				User's eBay Store subscription level.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Close">

+				<xs:annotation>

+					<xs:documentation>

+					   (in) Used to cancel the user's eBay Store subscription.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="Basic">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Basic level subscription.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="Featured">

+				<xs:annotation>

+					<xs:documentation>

+					   (in,out) Featured level subscription.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="Anchor">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Anchor level subscription.

+					</xs:documentation>

+				</xs:annotation>			

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+					   (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreSubscriptionType.xsd #####

+

+-->

+	<xs:complexType name="StoreSubscriptionType">

+		<xs:sequence>

+			<xs:element name="Level" type="ns:StoreSubscriptionLevelCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store subscription level.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Fee" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Monthly fee for the Store subscription level.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreThemeArrayType.xsd #####

+

+-->

+	<xs:complexType name="StoreThemeArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Set of Store themes.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Theme" type="ns:StoreThemeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A Store theme.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GenericColorSchemeArray" type="ns:StoreColorSchemeArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Set of color schemes. This set is for use with those themes that do

+						not explicitly list a color scheme in the theme definition (these

+						themes are also known as advanced themes).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+							<Context>AdvancedThemeArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreThemeType.xsd #####

+

+-->

+	<xs:complexType name="StoreThemeType">

+		<xs:annotation>

+			<xs:documentation>

+				Store theme.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ThemeID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store theme ID (use GetStoreOptions to get the list of valid theme

+						IDs).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store theme name. Provides a user-friendly name for the theme.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ColorScheme" type="ns:StoreColorSchemeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Theme color scheme.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStoreOptions</CallName>

+							<Returned>Always</Returned>

+							<Context>BasicThemeArray</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreType.xsd #####

+

+-->

+	<xs:complexType name="StoreType">

+		<xs:annotation>

+			<xs:documentation>

+	      The configuration of an eBay Store.

+	    </xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Name" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Name of the eBay Store. The name is shown

+						at the top of the Store page.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>35</MaxLength>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="URLPath" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The URL path of the Store (58 characters maximum). Only if you

+						are using Chinese characters in the Name property do you need to

+						use this field, such as if you are opening a Store on the Taiwan

+						site. The reason for this is that the URL path is normally derived

+						from the Store name, but it cannot be derived from the name of the

+						Store if it contains Chinese characters because URLs cannot

+						contain Chinese characters.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="URL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The complete URL of the user's Store. This field is only ever

+						returned, and does not need to be explicitly set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SubscriptionLevel" type="ns:StoreSubscriptionLevelCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Subscription level (tier) for the user's eBay Store.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store description (300 characters maximum).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Logo" type="ns:StoreLogoType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store logo.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Theme" type="ns:StoreThemeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Store theme.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HeaderStyle" type="ns:StoreHeaderStyleCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Style for the Store header.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HomePage" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Page to use as the Store's homepage (default is 0). To change the

+						homepage, specify the PageID of one of the Store's custom pages.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemListLayout" type="ns:StoreItemListLayoutCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The default layout type to use for the Store items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ItemListSortOrder" type="ns:StoreItemListSortOrderCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The default sort order to use for the items for sale in the Store.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CustomHeaderLayout" type="ns:StoreCustomHeaderLayoutCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Layout for the Store's custom header.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CustomHeader" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Custom header text for the Store.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExportListings" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether to export the Store listings to comparison

+						shopping websites.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CustomCategories" type="ns:StoreCustomCategoryArrayType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Custom categories for the Store. Deprecated (input ignored) for SetStore with

+						compatibility level 449 or higher. Use SetStoreCategories with compatibility

+						level 449 or higher to modify store category structures.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CustomListingHeader" type="ns:StoreCustomListingHeaderType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Custom listing header for the Store.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MerchDisplay" type="ns:MerchDisplayCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the chosen customization display scheme for this store's Merch Widgets.

+						See MerchDisplayCodeType for specific values.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LastOpenedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Indicates the time the store was last opened or reopened.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetStore</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetStore</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StoreVacationPreferencesType.xsd #####

+

+-->

+	<xs:complexType name="StoreVacationPreferencesType">

+		<xs:annotation>

+			<xs:documentation>

+				Specifies a set of Store vacation preferences.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="OnVacation" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies whether the Store owner is on vacation.&lt;br&gt;

+						When OnVacation is true, the Store owner's listings do not appear on Express,

+						regardless of the listing format and regardless of how the seller has configured

+						their vacation settings for items that appear on eBay.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStorePreferences</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStorePreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ReturnDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Seller return date from vacation.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStorePreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStorePreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="HideFixedPriceStoreItems" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Hide Store Inventory format items when the Store owner is on vacation.&lt;br&gt;&lt;br&gt;

+						When OnVacation is true, the Store owner's listings do not appear on Express,

+						regardless of the listing format and regardless of how the seller has configured

+						their vacation settings for items that appear on eBay.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStorePreferences</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStorePreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MessageItem" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Add a message when the Store owner is on vacation to all their active items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStorePreferences</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStorePreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MessageStore" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Add a message to all the Store pages when the Store owner is on vacation.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStorePreferences</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStorePreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DisplayMessageStoreCustomText" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Display custom message on the Store pages instead of the default message.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10000</MaxLength>

+						<CallInfo>

+							<CallName>GetStorePreferences</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStorePreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MessageStoreCustomText" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The custom message to display for the Store when the user is on vacation.

+						May contain HTML markup.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetStorePreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetStorePreferences</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StorefrontType.xsd #####

+

+-->

+	<xs:complexType name="StorefrontType">

+		<xs:annotation>

+			<xs:documentation> 

+				Contains information related to the item in the context of 

+				a seller's eBay Store. Applicable for auction format, Basic Fixed Price, 

+				and Store Inventory format items listed by eBay Stores sellers. 

+ 			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="StoreCategoryID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation> 

+						Numeric ID for a custom category that the seller created in their eBay Store, 

+						if any. eBay Stores sellers can create up to three levels of custom 

+						categories for their stores. Items can only be listed in store categories 

+						that have no child categories (subcategories). If you attempt to list an item 

+						in a category that has subcategories, the call response contains a warning, 

+						and the item is listed in the Other store category.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>							

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StoreCategory2ID" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+						Applicable for eBay Store sellers only. Numeric ID for a second custom 

+						category that the seller created in their eBay Store. eBay Stores sellers can 

+						create up to 300 custom categories for their stores. (One additional Store 

+						category cannot be customized and retains the value of "Other"). &lt;br&gt;

+						If you specify an invalid value, the values are the same for both the primary 

+						and secondary store categories, or if the seondary store category is 

+						specified but the primary is left blank (or other),  the system resets the 

+						value to 0 (None). In short, the primary store category must be set to 

+						something meaningful and different from the second store category

+						in order to set the secondary store category to a value other than 0.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>							

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StoreURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						The URL of the seller's eBay Store page. 

+						Output only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>							

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+            <xs:element name="StoreName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+					The name of the seller's eBay Store.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>		

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/StringMatchCodeType.xsd #####

+

+-->

+	<xs:simpleType name="StringMatchCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				(in) Indicates the type of string matching to use

+				when a value is submitted in CharityName. If no value is

+				specified, default behavior is "StartsWith." Does not

+				apply to Query.

+			</xs:documentation>

+		</xs:annotation>

+			<xs:restriction base="xs:token">

+				<xs:enumeration value="CustomCode">

+					<xs:annotation>

+						<xs:documentation>

+							(in) Reserved for internal or future use.

+						</xs:documentation>

+					</xs:annotation>

+				</xs:enumeration>

+				<xs:enumeration value="StartsWith">

+					<xs:annotation>

+						<xs:documentation>

+							(in) Matches strings that begin with the submitted

+							value. For example, submitting a CharityName value

+							of "heart" matches "Heart of Gold," but not "Open

+							Hearts." Default behavior if no value is

+							specified.

+						</xs:documentation>

+					</xs:annotation>

+				</xs:enumeration>

+				<xs:enumeration value="Contains">

+					<xs:annotation>

+						<xs:documentation>

+							(in) Matches strings that contain the submitted

+							value. For example, submitting a CharityName value

+							of "heart" matches both "Heart of Gold" and "Open

+							Hearts."

+						</xs:documentation>

+					</xs:annotation>

+				</xs:enumeration>

+			</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SubscriptionType.xsd #####

+

+-->

+	<xs:complexType name="SubscriptionType">

+		<xs:annotation>

+			<xs:documentation> 

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="EIASToken" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SiteID" type="ns:SiteCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Active" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SuggestedCategoryArrayType.xsd #####

+

+-->

+	<xs:complexType name="SuggestedCategoryArrayType">

+		<xs:annotation>

+			<xs:documentation>

+	     Contains an array of categories that contain listings with

+	     specified keywords in their titles or descriptions. The array

+	     can contain up to 10 categories.

+        </xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="SuggestedCategory" type="ns:SuggestedCategoryType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+	    			Describes a category that contains listings that match

+	    			specified keywords in the query. Returned if a category matches the query.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSuggestedCategories</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SuggestedCategoryType.xsd #####

+

+-->

+	<xs:complexType name="SuggestedCategoryType">

+		<xs:annotation>

+			<xs:documentation>

+	      Defines a suggested category, returned

+	      in response to a search for categories that contain

+	      listings with certain keywords in their titles and descriptions.

+	    </xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Category" type="ns:CategoryType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Describes a category that contains items that match the query.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSuggestedCategories</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PercentItemFound" type="xs:int">

+				<xs:annotation>

+					<xs:documentation>

+					Percentage of the matching items that were found in this category, 

+					relative to other categories in which matching items were also found. 

+					Indicates the distribution of matching items across the suggested categories. 

+				</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSuggestedCategories</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SummaryEventScheduleType.xsd #####

+

+-->

+	<xs:complexType name="SummaryEventScheduleType">

+		<xs:annotation>

+			<xs:documentation>

+				Details about a summary event schedule.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="EventType" type="ns:NotificationEventTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The event type associated with this alert.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SummaryPeriod" type="ns:SummaryWindowPeriodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The period of time for which to create a summary.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Frequency" type="ns:SummaryFrequencyCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						How often the summary is to be delivered.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetNotificationPreferences</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetNotificationPreferences</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/SummaryFrequencyCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SummaryFrequencyCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				How often the summary is to be delivered.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="EverySunday">

+				<xs:annotation>

+					<xs:documentation>

+						Deliver every Sunday.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EveryMonday">

+				<xs:annotation>

+					<xs:documentation>

+						Deliver every Monday.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EveryTuesday">

+				<xs:annotation>

+					<xs:documentation>

+						Deliver every Tuesday.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EveryWednesday">

+				<xs:annotation>

+					<xs:documentation>

+						Deliver every Wednesday.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EveryThursday">

+				<xs:annotation>

+					<xs:documentation>

+						Deliver every Thursday.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EveryFriday">

+				<xs:annotation>

+					<xs:documentation>

+						Deliver every Friday.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="EverySaturday">

+				<xs:annotation>

+					<xs:documentation>

+						Deliver every Saturday.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn1st">

+				<xs:annotation>

+					<xs:documentation>

+						On day 1 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn2nd">

+				<xs:annotation>

+					<xs:documentation>

+						On day 2 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn3rd">

+				<xs:annotation>

+					<xs:documentation>

+						On day 3 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn4th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 4 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn5th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 5 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn6th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 6 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn7th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 7 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn8th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 8 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn9th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 9 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn10th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 10 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn11th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 11 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn12th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 12 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn13th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 13 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn14th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 14 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn15th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 15 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn16th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 16 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn17th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 17 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn18th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 18 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn19th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 19 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn20th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 20 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn21st">

+				<xs:annotation>

+					<xs:documentation>

+						On day 21 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn22nd">

+				<xs:annotation>

+					<xs:documentation>

+						On day 22 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn23rd">

+				<xs:annotation>

+					<xs:documentation>

+						On day 23 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn24th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 24 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn25th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 25 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn26th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 26 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn27th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 27 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn28th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 28 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn29th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 29 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn30th">

+				<xs:annotation>

+					<xs:documentation>

+						On day 30 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MonthlyOn31st">

+				<xs:annotation>

+					<xs:documentation>

+						On day 31 of the month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Every31Days">

+				<xs:annotation>

+					<xs:documentation>

+						Every 31 days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Every60Days">

+				<xs:annotation>

+					<xs:documentation>

+						Every 60 days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SummaryWindowPeriodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="SummaryWindowPeriodCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				The period of time for which to create a summary.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Last24Hours">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The last 24 hours.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Last7Days">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The last 7 days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Last31Days">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The last 31 days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CurrentWeek">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The current week.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LastWeek">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The prior week.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CurrentMonth">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The current month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LastMonth">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The prior month.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Last60Days">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) The last 60 days.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/SupportedEventTypesArrayType.xsd #####

+

+-->

+	<xs:complexType name="SupportedEventTypesArrayType">

+		<xs:annotation>

+			<xs:documentation>

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="EventType" type="ns:NotificationEventTypeCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/TCREnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="TCREnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the Transaction Confirmation Request feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/TaskStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="TaskStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Status values for the processing progress for the category structure changes 

+				specified by a SetStoreCategories request. If the SetStoreCategories call is 

+				processed asynchronously, then the status is returned by 

+				GetStoreCategoryUpdateStatus, otherwise, the status is returned in the 

+				SetStoreCategories response.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Pending">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The category changes have not started.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InProgress">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The category changes are in progress.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Complete">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The category changes completed successfully.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Failed">

+				<xs:annotation>

+					<xs:documentation>

+						(out) The category changes failed.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/TaxJurisdictionType.xsd #####

+

+-->

+	<xs:complexType name="TaxJurisdictionType">

+		<xs:annotation>

+			<xs:documentation>

+				Tax-related details for a region or jurisdiction.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="JurisdictionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Representative identifier for the jurisdiction. Typically an

+						abbreviation (e.g. CA for California).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GeteBayDetails</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetTaxTable</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetTaxTable</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SalesTaxPercent" type="xs:float" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The tax percent to apply for a listing shipped to this

+						jurisdiction. The value passed in is stored with a precision of

+						3 digits after the decimal point (##.###).

+						GetTaxTable: this tag has no value if the user's tax table has not been set.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetTaxTable</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetSellerList</CallName>

+							<CallName>GetTaxTable</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingIncludedInTax" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether shipping costs are to be part of the base amount that is taxed.

+						GetTaxTable: This tag is empty if the user did not previously provide information.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<CallName>GetSellerList</CallName>

+							<CallName>GetTaxTable</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>SetTaxTable</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="JurisdictionName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Full name for the jurisdiction or region for display purposes.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/TaxTableType.xsd #####

+

+-->

+	<xs:complexType name="TaxTableType">

+		<xs:annotation>

+			<xs:documentation>

+				Sales tax details for zero or more jurisdictions (states,

+				provinces, etc).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="TaxJurisdiction" type="ns:TaxJurisdictionType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Sales tax details for zero or more jurisdictions (states,

+						provinces, etc).

+						For GetTaxTable, if DetailLevel is not specified, information is only

+						returned for the jurisdictions for which the user provided tax

+						information. If DetailLevel is ReturnAll, tax information

+						is returned for all possible jurisdictions, whether

+						specified by the user or not. ShippingIncludedInTax and

+						SalesTaxPercent are returned but are empty.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>SetTaxTable</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetTaxTable</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll, none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItemShipping</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ThemeGroupType.xsd #####

+

+-->

+	<xs:complexType name="ThemeGroupType">

+		<xs:annotation>

+			<xs:documentation>

+				Data for one theme group. Returned for GetDescriptionTemplates

+				if theme groups are requested.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="GroupID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique identifier for this theme group.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GroupName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Name of this theme group (localized to the language associated 

+						with the eBay site).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ThemeID" type="xs:int" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Unique identifier for each theme in this group. There

+						is at least one theme in a theme group.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ThemeTotal" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The number of ThemeID elements in this group.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetDescriptionTemplates</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/TokenReturnMethodCodeList.xsd #####

+

+-->

+	<xs:simpleType name="TokenReturnMethodCodeType">

+		<xs:annotation>

+			<xs:documentation>

+Used to specify how the application wants eBay to handle the user's token after the 

+user signs in. There are two options: redirect with token, or leave the token at 

+eBay and fetch the token through an API call to FetchToken.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Redirect">

+				<xs:annotation>

+					<xs:documentation>

+						     (out) Return the token in the HTTP redirect to the application-specified

+						     accept URL

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="FetchToken">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) Leaves the token at eBay so that the application can get 

+						    the token through the FetchToken API call (SecretId required)

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/TradingRoleCodeList.xsd #####

+

+-->

+	<xs:simpleType name="TradingRoleCodeType">

+		<xs:annotation>

+			<xs:documentation>

+              Specifies a person's role in doing business on eBay.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Buyer">

+				<xs:annotation>

+					<xs:documentation>

+                      (out) The buyer.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Seller">

+				<xs:annotation>

+					<xs:documentation>

+                     (out) The seller.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+                      (out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/TransactionArrayType.xsd #####

+

+-->

+	<xs:complexType name="TransactionArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) Contains an array of transactions.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="Transaction" type="ns:TransactionType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Information about one transaction.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/TransactionPlatformType.xsd #####

+

+-->

+	<xs:simpleType name="TransactionPlatformType">

+		<xs:annotation>

+			<xs:documentation>

+			Specifies the site on which the purchase was made.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="eBay">

+				<xs:annotation>

+					<xs:documentation>

+					The transaction was created (i.e., the purchase was made) 

+					on the main eBay site.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Express">

+				<xs:annotation>

+					<xs:documentation>

+					The transaction was created on the eBay Express site.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/TransactionStatusType.xsd #####

+

+-->

+	<xs:complexType name="TransactionStatusType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the status of the transaction, such as the buyer's online

+				payment and whether the checkout process for the transaction has

+				been completed.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="eBayPaymentStatus" type="ns:PaymentStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the success or failure of the buyer's online payment

+						for a transaction. Only applicable if the buyer chose PayPal as

+						the payment method for the transaction. If the payment failed,

+						the value returned indicates the reason for the failure. Output

+						only.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CheckoutStatus" type="ns:CheckoutStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the current status of the checkout process for the transaction.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="LastTimeModified" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates date and time a transaction's status or incomplete

+						state was last updated (in GMT).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaymentMethodUsed" type="ns:BuyerPaymentMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Payment method the buyer selected for paying the seller

+						for the transaction. If checkout is not yet complete,

+						PaymentMethodUsed is set to whatever the buyer selected as his

+						or her preference on the Review Your Purchase page.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CompleteStatus" type="ns:CompleteStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the transaction process is complete or incomplete.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerSelectedShipping" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the buyer has selected shipping details

+						during checkout. False indicates that the shipping service was

+						selected by eBay for the buyer. For example, if the buyer has

+						not yet completed the Review Your Purchase page, he has not

+						picked a shipping service. If it is false, the application

+						should ignore ShippingServiceCost and ShippingServiceSelected

+						(items whose values are defaulted by eBay).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<DetailLevels>none</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/TransactionType.xsd #####

+

+-->

+	<xs:complexType name="TransactionType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains information about a single transaction. A transaction contains information

+				about the sale one or multiple items from a listing to a single buyer. The eBay

+				system creates a transaction when a buyer has made a purchase (fixed-price listings)

+				or is the winning bidder (BIN and competitive-bidding listings). A listing can spawn

+				one or more transactions in these cases: multi-item fixed-price listings and Dutch

+				listings. A listing can spawn only a single transaction in these cases: single-item

+				fixed-price listings and Chinese listings.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AmountPaid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The amount the buyer paid for the item(s) in the transaction.

+						If the seller allowed the buyer to change the item total, the buyer

+						is able to change the total until the time that the transaction's

+						status moves to Complete. Determine whether the buyer

+						changed the amount by retrieving the transaction data and comparing

+						the AmountPaid value to what the seller expected. For Motors items,

+						AmountPaid is the amount paid by the buyer for the deposit.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="AdjustmentAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Adjustment amount entered by the buyer. A positive amount indicates the amount

+						is an extra charge being paid to the seller by the buyer. A negative value

+						indicates this amount is a credit given to the buyer by the seller. Not

+						applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ConvertedAdjustmentAmount" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Converted value of AdjustmentAmount in the currency of the site that returned

+						the response. Refresh this value every 24 hours to pick up the current

+						conversion rates. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Buyer" type="ns:UserType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains the data for the transaction&apos;s buyer. See UserType for its

+						child elements.

+						Not applicable to Half.com except for GetOrders.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetOrders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingDetails" type="ns:ShippingDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The shipping-related details for an item or transaction, including flat and

+						calculated shipping costs and shipping insurance costs. For GetOrders, also

+						applicable to Half.com. For GetOrders, minimal ShippingDetails information is

+						returned under the Transaction container.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<SeeLink>

+							<Title>Shipping</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=Shipping</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ConvertedAmountPaid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+						<xs:documentation>

+							Converted value of AmountPaid in the currency of the site that returned the

+							response. Refresh this value every 24 hours to pick up the current

+							conversion rates.

+							Not applicable to Half.com.

+					 	</xs:documentation>

+						<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ConvertedTransactionPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Converted value of TransactionPrice in the currency of the site that returned the

+						response. Refresh this value every 24 hours to pick up the current conversion rates.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CreatedDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates when the transaction was created. For fixed-price, Stores, and BIN items

+						this indicates when the purchase (or BIN) occurred. For competitive-bidding listing

+						types this indicates when listing ended, the winning bidder(s) determined, and the

+						transaction created.

+						For GetOrders, only applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DepositType" type="ns:DepositTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Deposit type for US eBay Motors items. If item is not a Motors item, then

+						returns an empty value for DepositType. See DepositTypeCodeType for specific

+						values.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Item" type="ns:ItemType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Information about the item that spawned the transaction. It is a purchase from

+						this item&apos;s listing that the transaction represents. To remove a property

+						from an item, specify it in ModifyType as a changed property, but do not give

+						it a value in Item.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="QuantityPurchased" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the number of items the buyer purchased from the listing identified

+						in ItemID.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SoldList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:TransactionStatusType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains the status of the transaction, such as the buyer&apos;s online payment and

+						whether the checkout process for the transaction has been completed. See

+						TransactionStatusType for its child elements.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Identifier for the transaction.

+						A value of zero is used for the Chinese auction format.

+						Thus, a value of zero is a valid transaction ID.

+						A transaction ID is only unique to the listing

+						that spawned it, so a transaction is only uniquely identified on a global basis by

+						a combination of ItemID and TransactionID.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SoldList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>AddOrder</CallName>

+							<RequiredInput>Yes</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Price of the transaction (before shipping and sales tax) that the buyer needs to pay

+						to complete the purchase. For eBay Motors, TransactionPrice is the deposit amount.

+						Also applicable to Half.com (for GetOrders).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BestOfferSale" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Whether the transaction was completed with the seller selecting

+						a best offer.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="VATPercent" type="xs:decimal" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						VAT rate for the item. When the VATPercent is specified, the item&apos;s VAT

+						information appears on the item&apos;s listing page. In addition, the seller

+						can choose to print an invoice that includes the item&apos;s net price, VAT

+						percent, VAT amount, and total price. Since VAT rates vary depending on the

+						item and on the user&apos;s country of residence, a seller is responsible for

+						entering the correct VAT rate; it is not calculated by eBay. To specify a

+						VATPercent, a seller must have a VAT-ID registered with eBay and must be

+						listing the item on a VAT-enabled site. Max precision 3 decimal places. Max

+						length 5 characters. Note: The View Item page displays the precision to 2

+						decimal places with no trailing zeros. However, the full value you send in is

+						stored. Not applicable to Half.com.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ExternalTransaction" type="ns:ExternalTransactionType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						A PayPal transaction that relates to this eBay transaction.

+						Returned only if there is at least one PayPal transaction related to this

+						eBay transaction.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellingManagerProductDetails" type="ns:SellingManagerProductDetailsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippingServiceSelected" type="ns:ShippingServiceOptionsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The shipping service selected by the buyer from the services

+						offered by the seller.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<SeeLink>

+							<Title>Shipping</Title>

+							<URL>http://developer.ebay.com/DevZone/XML/docs/WebHelp/index.htm?context=eBay_XML_API&amp;topic=Shipping</URL>

+						</SeeLink>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerMessage" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Display message from buyer. This field holds transient

+						data that is only being returned in the notification flow.

+						This field is only returned in the Checkout related notifications.

+						Not applicable to Half.com.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="DutchAuctionBid" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						This field holds the Dutch Auction Offer Bid by the buyer in this transaction,

+						if this is a Dutch Auction Item. This field will only be returned if caller has set

+						IncludeDuctionAuctionBid to true.

+						Not applicable to Half.com.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerPaidStatus" type="ns:PaidStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the transaction's paid status, as seen by the buyer.

+						Returned in lists of won and sold items.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerPaidStatus" type="ns:PaidStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the transaction's payment status, as seen by the seller.

+						Returned in lists of won and sold items.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SoldList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PaidTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the time when the transaction was marked paid, if known.

+						The value is set by eBay when payment is made via PayPal or a

+						third-party checkout flow.

+						This value is also set when the seller marks the item as

+						paid by using ReviseCheckoutStatus or CompleteSale.

+						The seller can also mark the item as paid by using My eBay

+						or Selling Manager Pro.

+						Note that this value is only visible if the request user is

+						the buyer or seller associated with the transaction.

+						If the item is marked as paid but the seller is not a

+						Selling Manager Pro user, PaidTime returns the

+						transaction creation time instead.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ShippedTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the time when the item(s) associated with the transaction were

+						marked as shipped, if known. The value is set when the seller uses shipment

+						tracking features offered by eBay or an eBay partner. This value is also set

+						when the seller marks the item as shipped by using CompleteSale. If the seller

+						is a Selling Manager Pro user, they can also mark the item as shipped by using

+						My eBay. Note that this value is only visible if the request user is the buyer

+						or seller associated with the transaction. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TotalPrice" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Not applicable to Half.com.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeedbackLeft" type="ns:FeedbackInfoType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeedbackReceived" type="ns:FeedbackInfoType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ContainingOrder" type="ns:OrderType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The order to which the transaction belongs.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FinalValueFee" type="ns:AmountType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						You are charged a Final Value Fee if your item is sold, ends with a winning

+						bid, or is purchased. This fee applies whether or not you actually complete

+						the sale with the buyer. If you request a Final Value Fee Credit, the value of

+						Transaction.FinalValueFee will not change for the item if a credit is issued.

+						(The credit only appears in the seller's account data.) See the eBay.com Web

+						site online help for more information about the Final Value Fee. The Final

+						Value Fee for FixedPriceItem, StoresFixedPrice, and Buy It Now Dutch listing

+						types is returned by GetSellerTransactions and GetItemTransactions on a

+						transaction by transaction basis. For all other listing types, including

+						Chinese and Dutch (no Buy It Now purchases), the Final Value Fee is returned

+						when the listing status is Completed. If the item was a Dutch auction that

+						ended with bids (not Buy It Now purchases), the Final Value Fee is returned in

+						Item.SellingStatus.FinalValueFee. For all other listing types, including Dutch

+						auctions that end with Buy It Now purchases, the Final Value Fee is returned

+						in Transaction.FinalValueFee. Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TransactionPlatform" type="ns:TransactionPlatformType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the platform the item was purchased on (such as eBay or eBay Express).

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SoldList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ProStoresStoreName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The name of the store, if Item.ThirdPartyCheckout is true.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetOrders</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/UPSRateOptionCodeList.xsd #####

+

+-->

+	<xs:simpleType name="UPSRateOptionCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				UPS Rate Options

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="UPSDailyRates">

+				<xs:annotation>

+					<xs:documentation>

+						UPS Daily Rates

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UPSOnDemandRates">

+				<xs:annotation>

+					<xs:documentation>

+						UPS On-Demand Rates

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						 Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/URLDetailsType.xsd #####

+

+-->

+	<xs:complexType name="URLDetailsType">

+		<xs:annotation>

+			<xs:documentation> 

+				Details about a specific eBay URL.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="URLType" type="ns:URLTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						A compressed, representative title for the eBay URL.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="URL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						A commonly used eBay URL. Applications use some of these URLs (such as the View Item URL)

+						to launch eBay Web site pages in a browser.&lt;br&gt;&lt;br&gt;

+						Logo URLs are required to be used in certain types of applications.

+						See your API license agreement. Also see this page for logo usage rules:&lt;br&gt;

+						http://developer.ebay.com/join/licenses/apilogousage

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GeteBayDetails</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/URLTypeCodeList.xsd #####

+

+-->

+	<xs:simpleType name="URLTypeCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				A compressed, representative title for the eBay URL.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="ViewItemURL">

+				<xs:annotation>

+					<xs:documentation>

+						URL Prefix for viewing a particular listing. Just add an item id.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ViewUserURL">

+				<xs:annotation>

+					<xs:documentation>

+						URL Prefix for viewing the feedback for a particular userid. Just add a userid.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyeBayURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for an eBay login page.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyeBayBiddingURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for viewing the items on which the user is bidding.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyeBayNotWonURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for viewing the items on which the user bid but did not win.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyeBayWonURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for viewing the items on which the user bid and also won.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MyeBayWatchingURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for viewing the items the user is currently watching.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="eBayStoreURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for eBay Stores.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="SmallLogoURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for the small version of the "An eBay Marketplace" logo.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="MediumLogoURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for the medium version of the "An eBay Marketplace" logo.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="LargeLogoURL">

+				<xs:annotation>

+					<xs:documentation>

+						Full URL for the large version of the "An eBay Marketplace" logo.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/UnitCodeList.xsd #####

+

+-->

+	<xs:simpleType name="UnitCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Units of measure used to express such properties as weight and size 

+				dimensions.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="kg">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Kilograms

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="lbs">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Pounds

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="oz">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Ounces

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="cm">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Centimeters

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="inches">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Inches

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="ft">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Feet

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/UserConsentRequiredDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="UserConsentRequiredDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the UserConsentRequired feature. If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/UserIDArrayType.xsd #####

+

+-->

+	<xs:complexType name="UserIDArrayType">

+		<xs:annotation>

+			<xs:documentation>

+				Reserved for future use.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="UserID" type="ns:UserIDType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>										

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/UserIDType.xsd #####

+

+-->

+	<xs:simpleType name="UserIDType">

+		<xs:annotation>

+			<xs:documentation>

+				(out) An eBay ID that uniquely identifies a user.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:string"/>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/UserIdFilterType.xsd #####

+

+-->

+	<xs:complexType name="UserIdFilterType">

+		<xs:annotation>

+			<xs:documentation> 

+        One of the data filters used when searching for items using

+        GetSearchResults. Allows filtering based on the eBay user IDs of

+        sellers. May be used to limit the list of found items to just those

+        listed by one or more specified sellers. Or may be used to limit the

+        list to those items NOT listed by specified excluded sellers.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="ExcludeSellers" type="ns:UserIDType" minOccurs="0" maxOccurs="100">

+				<xs:annotation>

+					<xs:documentation> 

+            Specifies a list of one or more eBay user IDs that represent sellers whose item

+            listings should NOT be returned in the search result set. That is, the sellers'

+            items are excluded from the search results.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="IncludeSellers" type="ns:UserIDType" minOccurs="0" maxOccurs="100">

+				<xs:annotation>

+					<xs:documentation> 

+            Specifies a list of one or more eBay user IDs that represent sellers whose item

+            listings are returned in the search result set (and only listings by the

+            specified sellers. That is, the sellers' items are included in the search

+            results.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetSearchResults</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/UserStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="UserStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+UserStatusCodeType - Type declaration to be used by other schema.

+These codes indicate the current state or status of a an eBay

+user account.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Unknown">

+				<xs:annotation>

+					<xs:documentation>

+						     (out) User properties have never been set; this value should

+						     seldom, if ever, be returned and typically represents a

+						     problem

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Suspended">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) User has been suspended from selling and buying, such as

+						    for violations of eBay terms or agreement

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Confirmed">

+				<xs:annotation>

+					<xs:documentation>

+						   (out) User has completed online registration and has properly

+						   responded to confirmation email; most users should fall

+						   in this category

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Unconfirmed">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) User has completed online registration, but has either

+						    not responded to confirmation email or has not yet been

+						    sent the confirmation email

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Ghost">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) Registered users of AuctionWeb (pre-eBay) who never

+						    re-registered on eBay

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="InMaintenance">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) Temporary user record state indicating the record is in

+						    the process of being changed by eBay; query user

+						    information again to get new status

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Deleted">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) Records for the specified user have been deleted

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCardVerify">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) User has completed registration and confirmation, but is

+						    pending a verification of credit card information

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="AccountOnHold">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) User's account is on hold, such as for non-payment of

+						    amounts due eBay; user cannot sell or buy items

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="Merged">

+				<xs:annotation>

+					<xs:documentation>

+						      (out) User record has been merged with another account record

+						      for the same user

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="RegistrationCodeMailOut">

+				<xs:annotation>

+					<xs:documentation>

+						    (out) User has completed online registration and has been sent

+						    the confirmation email, but has not yet responded to the

+						    confirmation email

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="TermPending">

+				<xs:annotation>

+					<xs:documentation>

+						      (out) User has been scheduled for account closure (typically

+						      when a user has requested to have their account closed)

+						      A user in this state should not be considered an active

+						      user

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UnconfirmedHalfOptIn">

+				<xs:annotation>

+					<xs:documentation>

+						      (out) User has completed the registration for Half.com and opted

+						      to automatically also be registered with eBay, but the

+						      registration confirmation is still pending

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCardVerifyHalfOptIn">

+				<xs:annotation>

+					<xs:documentation>

+						      (out) User has completed the registration for Half.com and opted

+						      to automatically also be registered with eBay, but the

+						      verification of credit card information is still pending

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UnconfirmedPassport">

+				<xs:annotation>

+					<xs:documentation>

+						      (out) Obsolete; signing in with Microsoft Passport is no longer supported

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Obsolete</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CreditCardVerifyPassport">

+				<xs:annotation>

+					<xs:documentation>

+						     (out) Obsolete; signing in with Microsoft Passport is no longer supported

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Obsolete</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="UnconfirmedExpress">

+				<xs:annotation>

+					<xs:documentation>

+						     (out) Half.com User; user has completed the registration for Half.com

+						     and opted to automatically also be registered with eBay, but the

+						     registration confirmation is still pending

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						  (out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/UserType.xsd #####

+

+-->

+	<xs:complexType name="UserType">

+		<xs:annotation>

+			<xs:documentation>

+				Type to contain the data for one eBay user. Depending on the context, the user

+				might be the seller or the buyer in a transaction, or the bidder or winning bidder

+				in a listing. An object of this type is returned by a number of calls, including

+				the GetUser call.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="AboutMePage" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, indicates that the user has set up an About Me page.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="EIASToken" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique identifier for the user that does not change when the eBay user name

+						is changed. Use when an application needs to associate a new eBay user name

+						with the corresponding eBay user.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RESTToken" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						REST token (if available) for the user who is making the request. Not returned

+						when UserID is for a different user than the one identified in eBayAuthToken.

+						Use the REST token to authenticate REST API calls. For more information about

+						REST tokens and the REST API, see http://developer.ebay.com/rest/.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<DetailLevels>ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Email" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Email address for the user. You cannot retrieve an email address for any user

+						with whom you do not have a transactional relationship, regardless of site.

+						Email is only returned for applicable calls when you are retrieving your own

+						user data OR when you and the other user are in a transactional relationship

+						and the call is being executed within a certain amount of time after the

+						transaction is created. Based on Trust and Safety policies, the time is

+						unspecified and can vary by site.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<CallName>GetOrders</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SoldList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeedbackScore" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The aggregate feedback score for a user. A user's feedback score is the net

+						positive feedback minus the net negative feedback left for the user. Feedback

+						scores are a quantitative expression of the desirability of dealing with a

+						user as a buyer or a seller in transactions. Each transaction can result in

+						one feedback entry for a given user (the buyer can leave feedback for the

+						seller, and the seller can leave feedback for the buyer.). That one feedback

+						can be positive, negative, or neutral. The aggregated feedback counts for a

+						particular user represent that user's overall feedback score (referred to as a

+						"feedback rating" on the eBay site). If the user has chosen to make their

+						feedback private and that user is not the user identified in the request's

+						authentication token, FeedbackScore is not returned and FeedbackPrivate is

+						returned with a value of true.&lt;br&gt;

+						&lt;br&gt;

+						To be eligible to list on Express, a seller's feedback score needs to be 100 or higher.

+						See "eBay Express" in the eBay Web Services guide.

+						In GetSearchResultsExpress, only returned when ItemDetails is set to Fine.&lt;br&gt;

+						&lt;br&gt;

+						In GetSearchResults and GetCategoryListings, feedback information is only

+						returned if IncludeFeedback = true in the request.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetHighBidders</CallName>

+							<CallName>GetUser</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UniqueNegativeFeedbackCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Total count of negative feedback entries from unique (distinct) users.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UniquePositiveFeedbackCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Total count of positive feedback entries from unique (distinct) users.

+						Contains the aggregate feedback score for a user. A member's feedback score is

+						the net positive feedback minus the net negative feedback left for the member.

+						Feedback scores are a quantitative expression of the desirability of dealing

+						with that person as a Buyer or a Seller in auction transactions. Each auction

+						transaction can result in one feedback entry for a given user (the buyer can

+						leave feedback for the seller, and the seller can leave feedback for the

+						buyer.). That one feedback can be positive, negative, or neutral. The

+						aggregated feedback counts for a particular user represent that user's overall

+						feedback score (referred to as a "feedback rating" on the eBay site). This

+						rating is commonly expressed as the eBay Feedback score for the user.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PositiveFeedbackPercent" type="xs:float" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Percent of total feedback that is positive. For example, if the member has 50

+						feedbacks, where 49 are positive and 1 is neutral or negative, the positive

+						feedback percent could be 98.0. The value uses a max precision of 4 and a

+						scale of 1. If the user has feedback, this value can be returned regardless of

+						whether the member has chosen to make their feedback private. Not returned if

+						the user has no feedback. To be eligible to list on Express, a seller's

+						feedback percent needs to be 98 or higher. See "eBay Express" in the eBay Web

+						Services guide. In GetSearchResults and GetCategoryListings, feedback

+						information is only returned if IncludeFeedback = true in the request.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeedbackPrivate" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the user has chosen to make their feedback score and

+						feedback details private (hidden from other users). Note that the percentage

+						of positive feedback can still be returned, even if other feedback details are

+						private. To be eligible to list on Express, a seller's feedback needs to be

+						public. See "eBay Express" in the eBay Web Services guide. In GetSearchResults

+						and GetCategoryListings, feedback information is only returned if

+						IncludeFeedback = true in the request.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FeedbackRatingStar" type="ns:FeedbackRatingStarCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Visual indicator of user's feedback score. See FeedbackRatingStarCodeType for

+						specific values.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="IDVerified" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether the user has been verified. For more information

+						about the ID Verify program, see:

+						http://pages.ebay.com/help/policies/identity-idverify.html

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="eBayGoodStanding" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, indicates that the user is in good standing with eBay.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="NewUser" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, identifies a new user who has been a registered eBay user for 30 days

+						or less. Always false after the user has been registered for more than 30

+						days. Does not indicate an ID change (see UserIdChanged).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RegistrationAddress" type="ns:AddressType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Registration address for a user. eBay always returns complete

+						RegistrationAddress details (including Phone) when you retrieve your own user

+						data. RegistrationAddress for another user (except for Phone) is only returned

+						if you have a transactional relationship with that user AND that user is

+						registered on DE/AT/CH, regardless of your registration site and the site to

+						which you send the request. To be eligible to list on Express US, a seller's

+						registration address must be in the US or Canada. To list on Express Germany,

+						a seller's registration address must be in Germany. See "eBay Express" in the

+						eBay Web Services guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RegistrationDate" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the date the specified user originally registered with eBay.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Site" type="ns:SiteCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						eBay site the user is registered with.

+						To be eligible to list on Express US, a seller must be registered

+						on the eBay US or Canada site. To be eligible to list on Express Germany,

+						a seller must registered on the eBay Germany site. See "eBay Express"

+						in the eBay Web Services guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Status" type="ns:UserStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the user's registration/user status.

+						To be eligible to list on Express, a seller's status must be Confirmed.

+						See "eBay Express" in the eBay Web Services guide.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserID" type="ns:UserIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Unique eBay user ID for the user.&lt;br&gt;

+						&lt;br&gt;

+						In GetSearchResultsExpress, only returned when ItemDetails is set to Fine.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>PlaceOffer</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBestOffers</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemsAwaitingFeedback</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BestOfferList</Context>

+							<Context>HighBidder</Context>

+							<Context>LostList</Context>

+							<Context>Seller</Context>

+							<Context>WonList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>ActiveList</Context>

+							<Context>SoldList</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSearchResultsExpress</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerEvents</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserIDChanged" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If true, identifies a user whose ID has changed within the last 30 days. Does not

+						indicate a new user (see NewUser).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserIDLastChanged" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Date and time the user's data was last changed (in GMT).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="VATStatus" type="ns:VATStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether or not the user is subject to VAT.

+						Users who have registered with eBay as VAT-exempt are not

+						subject to VAT. See documentation on Value-Added Tax (VAT).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="BuyerInfo" type="ns:BuyerType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains information about the user as a buyer, such as

+						the shipping address. See BuyerType for its child elements.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetHighBidders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Bidder</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrderTransactions</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>HighBidder</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+							<Context>Buyer</Context>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>SoldList</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerInfo" type="ns:SellerType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains information about the user as a seller, such as whether the seller is

+						authorized to list Live Auctions items or opts to have items cross-promoted. See

+						SellerType for its child elements.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>none, ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+							<Context>Seller</Context>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharityAffiliations" type="ns:CharityAffiliationsType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains information about the seller's charity affliations. Returned if the

+						user is affiliated with one or more charities.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="CharitySeller" type="ns:CharitySellerType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains information about the seller with the eBay Giving Works provider

+						charity seller account.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PayPalAccountLevel" type="ns:PayPalAccountLevelCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The user's PayPal account level. Only returned for the user identified in

+						eBayAuthToken. That is, you cannot see someone else's PayPal account level.

+						Use this information to check whether a seller is eligible to specify

+						Item.DigitalDeliveryDetails in listing requests. See the eBay Web site online

+						help for current PayPal requirements for listing digital items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PayPalAccountType" type="ns:PayPalAccountTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The user's PayPal account type. Only returned for the user identified in

+						eBayAuthToken. That is, you cannot see someone else's PayPal account type. Use

+						this information to check whether a seller is likely to be eligible to specify

+						Item.DigitalDeliveryDetails in listing requests. See the eBay Web site online

+						help for current PayPal requirements for listing digital items. Please note

+						that this information cannot necessarily be used to determine whether a seller

+						is eligible to list items on eBay Express, because a seller can have more than

+						one PayPal account (and any of these accounts can be used for a given

+						listing).

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PayPalAccountStatus" type="ns:PayPalAccountStatusCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The user's PayPal account status. Only returned for the user identified in

+						eBayAuthToken. That is, you cannot see someone else's PayPal account status.

+						Use this information to check whether a seller is eligible to specify

+						Item.DigitalDeliveryDetails in listing requests. See the eBay Web site online

+						help for current PayPal requirements for listing digital items.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="UserSubscription" type="ns:EBaySubscriptionTypeCodeType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Specifies the subscription level for a user.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SiteVerified" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						If the user is a registered eBay China site user, this indicates whether the

+						user has been verified. This value is based on the user's registration site,

+						not the site that was specified in the request. If true, the China site user

+						is verified. If false, the China site user is unverified. Not applicable to

+						users who are not registered China site users.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAllBidders</CallName>

+							<CallName>GetBidderList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItemTransactions</CallName>

+							<CallName>GetSellerTransactions</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SkypeID" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates the Skype name of the user. Available if

+						the seller has a Skype account and has linked it (on the eBay site)

+						with his or her eBay account.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="eBayWikiReadOnly" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Indicates whether a user has read-only access to the eBay Wiki (true)

+						or whether the user is able contribute or edit articles on the eBay Wiki

+						(false). By default, all registered eBay users have access to contribute and

+						edit articles on the eBay Wiki. All content contributed to the eBay Wiki is

+						subject to the Community Content Policy.

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>false</Default>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="TUVLevel" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="VATID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MotorsDealer" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<CallName>GetSellerList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>Seller</Context>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SellerPaymentMethod" type="ns:SellerPaymentMethodCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Reserved for future use.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetUser</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/VATDetailsType.xsd #####

+

+-->

+	<xs:complexType name="VATDetailsType">

+		<xs:annotation>

+			<xs:documentation> 

+             Container for eBay's Business User features. A business seller can choose 

+             to offer an item exclusively to bidders and buyers that also represent businesses.

+             Only applicable when the item is listed in a B2B-enabled category. 

+             Currently, the eBay Germany (DE), Austria (AT), and Switzerland (CH) sites support

+             B2B business features.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="BusinessSeller" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						(in) If true, this indicates that the seller is a business user 

+						and intends to use listing features that are offered to 

+						business users only. Applicable only to business sellers 

+						residing in Germany, Austria, or Switzerland who are listing in 

+						a B2B VAT- enabled category on the eBay Germany (DE), Austria 

+						(AT), or Switzerland (CH) sites. The seller must have a valid 

+						VAT ID registered with eBay. This must be set to true if 

+						RestrictedToBusiness is true. It has no effect if 

+						RestrictedToBusiness is false. If an item was not qualified as a 

+						business item when originally listed, but meets the conditions for 

+						business items when the item is revised or relisted, the seller can 

+						convert the item to a business item by specifying the appropriate 

+						VAT details. See the eBay Web Services guide for more information and additional rules.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>							

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>					

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="RestrictedToBusiness" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						If true, this indicates that the seller elects to offer the 

+						item exclusively to business users. If false, this indicates 

+						that the seller elects to offer the item to all users. 

+						Applicable only to business sellers residing in Germany, 

+						Austria, or Switzerland who are listing in a B2B VAT-enabled 

+						category on the eBay Germany (DE), Austria (AT), or Switzerland 

+						(CH) sites. If this argument is true, the seller must have a 

+						valid VAT-ID registered with eBay, and BusinessSeller must also 

+						be true. 

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>							

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="VATPercent" type="xs:float" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation> 

+						VAT rate for the item. When the VATPercent is specified, the 

+						item's VAT information appears on the item's listing page. In 

+						addition, the seller can choose to print an invoice that 

+						includes the item's net price, VAT percent, VAT amount, and 

+						total price. Since VAT rates vary 

+						depending on the item and on the user's country of residence, a 

+						seller is responsible for entering the correct VAT rate; it is 

+						not calculated by eBay. To specify a VATPercent, a seller must 

+						have a VAT-ID registered with eBay and must be listing the item on a VAT-enabled site.

+						Max precision 3 

+						decimal places. Max length 5 characters. Note: The View Item 

+						page displays the precision to 2 decimal places with no 

+						trailing zeros. However, the full value you send in is stored.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/VATStatusCodeList.xsd #####

+

+-->

+	<xs:simpleType name="VATStatusCodeType">

+		<xs:annotation>

+			<xs:documentation>

+				Indicates whether or not the user is subject to VAT.

+				Users who have registered with eBay as VAT-exempt are not

+				subject to VAT. See documentation on Value-Added Tax (VAT).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="NoVATTax">

+				<xs:annotation>

+					<xs:documentation>

+						(out) VAT is not applicable

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATTax">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Residence in a country with VAT and user is not registered as VAT-exempt

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="VATExempt">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Residence in a country with VAT and user is registered as VAT-exempt

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+			<xs:enumeration value="CustomCode">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for internal or future use

+					</xs:documentation>

+				</xs:annotation>

+			</xs:enumeration>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/ValType.xsd #####

+

+-->

+	<xs:complexType name="ValType">

+		<xs:sequence>

+			<xs:element name="ValueLiteral" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The descriptive name of an attribute or characteristic value

+						(e.g., "New" might be a literal value for a Condition

+						attribute). In item-listing requests, if you send ValueID with

+						an id of -3 or -6, you must use ValueLiteral to enter the value the user

+						specified. Otherwise, eBay treats the request as if no value

+						was sent at all. For eBay.com listings,

+						use AttributeSetArray.AttributeSet.Attribute.Value.ValueLiteral.

+						The max length allowed varies per attribute.

+						&lt;br&gt;&lt;br&gt;

+						For Half.com, use AttributeArray.Attribute.Value.ValueLiteral.

+						That is, the parent elements and usage for Half.com differs

+						from eBay's standard Item Specifics format (and there is no

+						relationship to GetAttributesCS). For Half.com,

+						AttributeArray.Attribute.Value.ValueLiteral is required when

+						you use AddItem. See the eBay Web Services Guide for valid

+						values. For the Half.com Notes attribute, the max

+						length is 500 characters. You can revise

+						AttributeArray.Attribute.Value.ValueLiteral for Half.com

+						listings.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>see description</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetOrders</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SuggestedValueLiteral" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Reserved for future use. Suggested alternative text for

+						ValueLiteral. Multiple SuggestedValueLiteral elements can be

+						returned in a Value node. Not applicable to Half.com.

+					</xs:documentation>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ValueID" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Constant value that identifies the attribute or characteristic

+						in a language-independent way. Unique within the

+						characteristics set. In item-listing requests, if the ID is -3

+						or -6 (Other), use ValueLiteral to specify the value that the

+						user entered. In item-listing requests and product searches,

+						the possible ID values are:&lt;br&gt;

+						-3 = User entered an arbitrary value (not an "Other" field)&lt;br&gt;

+						-6 = User entered a value in an "Other" field&lt;br&gt;

+						-100 = Value not specified (null)&lt;br&gt;

+						#### (positive integer) = Identifier for a pre-defined value

+						that the user selected (e.g., 1001)&lt;br&gt;

+						For eBay.com, required if ValueList is specified.

+						Not applicable to Half.com.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<CallName>GetSearchResults</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<Context>AttributeSetArray</Context>

+							<RequiredInput>Conditionally</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetProductFamilyMembers</CallName>

+							<CallName>GetProductSearchResults</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/ValuePackEnabledDefinitionType.xsd #####

+

+-->

+	<xs:complexType name="ValuePackEnabledDefinitionType">

+		<xs:annotation>

+			<xs:documentation> 

+				Defines the ValuePack feature (a feature pack). If the field is present, the corresponding feature applies to the category. The field is returned as an empty element (i.e., a boolean value is not returned).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/VendorHostedPictureType.xsd #####

+

+-->

+	<xs:complexType name="VendorHostedPictureType">

+		<xs:annotation>

+			<xs:documentation>

+				Data for images hosted on a location of the seller's choice (other than eBay).

+				Specify 1 PictureURL value and up to 5 SelfHostedURL values. With compatibility

+				level 439 and higher, deprecated in the response in favor of Item.PictureDetails.

+				With the future deprecation of VendorHostedPicture as input, Applications should

+				use Item.PictureDetails instead.

+				&lt;br&gt;&lt;br&gt;

+				Note that the Gallery Plus image enhancement does not support

+				VendorHostedPicture. Use Item.PictureDetails with that feature.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="PictureURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) Deprecated with compatibility level 383 and higher.

+						Contains the URL for an image hosted on a location of the seller's

+						choice (other than eBay) and associated with an item. If specified,

+						this cannot have an empty/null value. You cannot specify multiple

+						PictureURL fields. In most cases, the picture URL is also used for

+						the picture at the top of the View Item page on the Web site.&lt;br&gt;

+						For listing calls (e.g., AddItem):&lt;br&gt;

+						With compatibility levels lower than 383, specify 1 PictureURL argument.&lt;br&gt;

+						With compatibility 383 and higher, see SelfHostedURL instead.&lt;br&gt;

+						With the future deprecation of VendorHostedPicture as input,

+						applications should use Item.PictureDetails.PictureURL instead. See

+						Item.PictureDetails.PictureURL for information about how to remove

+						pictures from a listing.&lt;br&gt;

+						For retrieval calls (e.g., GetItem):&lt;br&gt;

+						With compatibility levels lower than 383, PictureURL is returned.&lt;br&gt;

+						With compatibility levels between 383 and 439, SelfHostedURL is returned instead.&lt;br&gt;

+						With compatibility 439 and higher,  Item.PictureDetails.PictureURL is returned instead.

+						&lt;br&gt;&lt;br&gt;

+						Note that the Gallery Plus image enhancement does not support

+						VendorHostedPicture. Use Item.PictureDetails with that feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>150</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="SelfHostedURL" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) URL for multiple, self-hosted pictures (if any) that are

+						stored/hosted at a non-eBay site and used for the item. If

+						specified, do not pass an empty/null value. On the main eBay site,

+						if you specify multiple SelfHostedURL fields in listing calls,

+						PhotoDisplay must be set to VendorHostedPictureShow.&lt;br&gt;

+						For listing calls (e.g., AddItem):&lt;br&gt;

+						With compatibility levels lower than 383, specify 1 PictureURL field.&lt;br&gt;

+						With compatibility 383 and higher, specify up to 6 SelfHostedURL fields.&lt;br&gt;

+						For eBay Live Auctions, specify up to 5 SelfHostedURL fields. With

+						the future deprecation of VendorHostedPicture as input, Applications

+						should use Item.PictureDetails.PictureURL instead.&lt;br&gt;

+						For retrieval calls (e.g., GetItem):&lt;br&gt;

+						With compatibility levels lower than 383, PictureURL is returned.&lt;br&gt;

+						With compatibility levels between 383 and 439, SelfHostedURL is returned.&lt;br&gt;

+						With compatibility 439 and higher,  Item.PictureDetails.PictureURL is returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>150</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PhotoDisplay" type="ns:PhotoDisplayCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					Specifies the type of image display used in a listing. Some options are

+					only available if images are hosted through eBay Picture Services (EPS).

+					eBay determines this by parsing the associated PictureURL.

+					Cannot be used in combination with Listing Designer layouts.

+					Specify None or do not add PhotoDisplay when ListingDesigner.LayoutID

+					is a value other than 0.

+					</xs:documentation>

+						<xs:appinfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+						</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GalleryURL" type="xs:anyURI" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						URL for a picture to be used as the Gallery thumbnail. Ignored if

+						GalleryType is None or unspecified. If the value of GalleryType is

+						Gallery or Featured, you can either specify GalleryURL or allow eBay

+						to use another picture that you have included in the listing. (See

+						GalleryType for the rules that determine which URL is used if you do

+						not specify GalleryURL.) The image used for the Gallery thumbnail

+						must be in one of the graphics formats JPEG, BMP, TIF, or GIF. eBay

+						Live Auctions lots are listed in the gallery for free. With the

+						future deprecation of VendorHostedPicture as input, Applications

+						should use Item.PictureDetails.GalleryURL instead. If the item has

+						bids (or items have been sold) or the listing ends within 12 hours,

+						you can add GalleryURL or change its value, but you cannot remove

+						the gallery picture if it was previously specified. Not applicable

+						to eBay Motors listings. See "Describing Items in a Listing" in the

+						If the value of GalleryType is Gallery or Plus or Featured,

+						see eBay Web Services Guide for additional validation rules.

+						&lt;br&gt;&lt;br&gt;

+						Note that the Gallery Plus image enhancement does not support

+						VendorHostedPicture. Use Item.PictureDetails with that feature.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>1024</MaxLength>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>AddLiveAuctionItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>ReviseLiveAuctionItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetMyeBayBuying</CallName>

+							<Returned>Conditionally</Returned>

+							<Context>BidList</Context>

+							<Context>SecondChanceOffer</Context>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ReturnSummary, ReturnAll</DetailLevels>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+							<DetailLevels>none, ItemReturnDescription, ItemReturnAttributes, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="GalleryType" type="ns:GalleryTypeCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            Indicates whether a picture for the item is included in the Gallery and, if so

+				whether the item is also featured or Plus in the Gallery.

+				If the value is Gallery or Plus or Featured, eBay checks the available image URLs

+				in the following order to determine which URL to use

+				(if more than one of these URLs is available):&lt;br&gt;&lt;br&gt;

+            a) Use the URL in GalleryURL, if it is specified.&lt;br&gt;

+            b) Otherwise, if ProductListingDetails.UseStockPhotoURLAsGallery is true, use the eBay stock photo.&lt;br&gt;

+            c) Otherwise, use the value of the first SelfHostedURL in the array of SelfHostedURL fields, if any.&lt;br&gt;

+            d) Otherwise, if ProductListingDetails.ProductID is specified, use the eBay stock photo

+               (eBay resets UseStockPhotoURLAsGallery to true in this case).&lt;br&gt;

+            e) If eBay is unable to find an image URL for the listing, an error is returned.&lt;br&gt;&lt;br&gt;

+            See "Describing Items in a Listing" in the eBay Web Services Guide for additional information

+            about working with pictures and related validation rules.

+            You cannot remove Gallery or Plus or Featured when you revise a listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+							<DetailLevels>ItemReturnDescription, ReturnAll</DetailLevels>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetCategoryListings</CallName>

+							<CallName>GetMyeBaySelling</CallName>

+							<CallName>GetSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetItem</CallName>

+							<Returned>Conditionally</Returned>

+							<TagStatus>Deprecated</TagStatus>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/VerifiedUserRequirementsType.xsd #####

+

+-->

+	<xs:complexType name="VerifiedUserRequirementsType">

+		<xs:annotation>

+			<xs:documentation>

+				Container for verified user requirements.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="VerifiedUser" type="xs:boolean" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) If true, blocks bidding by users who do not pass

+						a simple check (for example, for credit card on file).

+						See "Buyer Requirements - VerifiedUser" in the chapter

+						"Field Differences for eBay Sites."

+					</xs:documentation>

+					<xs:appinfo>

+						<Default>false</Default>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="MinimumFeedbackScore" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) This field is ignored unless VerifiedUser is true.

+						If this field is present, the user's feedback score is also considered:

+						a user is blocked from bidding if the user's feedback score is

+						less than or equal to the value of this field.

+					</xs:documentation>

+					<xs:appinfo>

+						<Min/>

+						<Max/>

+						<Default>5</Default>

+						<CallInfo>

+							<CallName>AddItem</CallName>

+							<CallName>GetItemRecommendations</CallName>

+							<CallName>RelistItem</CallName>

+							<CallName>ReviseItem</CallName>

+							<CallName>VerifyAddItem</CallName>

+							<RequiredInput>No</RequiredInput>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetBidderList</CallName>

+							<CallName>GetItem</CallName>

+							<CallName>GetSellerList</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/WantItNowPostArrayType.xsd #####

+

+-->

+	<xs:complexType name="WantItNowPostArrayType">

+		<xs:annotation>

+			<xs:documentation> 

+				(out) Container for a list of search result items. Can contain zero, one, or multiple

+				WantItNowPostType objects, each of which contains data for a single Want It Now 

+				post found by the search.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="WantItNowPost" type="ns:WantItNowPostType" minOccurs="0" maxOccurs="unbounded">

+				<xs:annotation>

+					<xs:documentation> 

+						(out) Contains data for a Want It Now post found by a search.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/WantItNowPostType.xsd #####

+

+-->

+	<xs:complexType name="WantItNowPostType">

+		<xs:annotation>

+			<xs:documentation>

+				Contains the data describing a single Want It Now post. Buyers create Want It Now

+				posts to communicate to sellers specific requirements for items they would like to

+				buy.

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="CategoryID" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) ID of the category in which the Want It Now post is listed.

+					</xs:documentation>

+					<xs:appinfo>

+						<MaxLength>10</MaxLength>

+						<CallInfo>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetWantItNowPost</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Description" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Description of a Want It Now post. Description will not be returned for

+						GetWantItNowSearchResults.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetWantItNowPost</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="PostID" type="ns:ItemIDType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(in/out) ID that uniquely identifies a Want It Now post.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetWantItNowPost</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Site" type="ns:SiteCodeType" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Site where the Want It Now post is listed.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetWantItNowPost</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="StartTime" type="xs:dateTime" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Date and time (in GMT) that a Want It Now post was added.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetWantItNowPost</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="ResponseCount" type="xs:int" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						(out) Number of responses for a Want It Now post. Sellers respond to a Want It

+						Now post by submitting an item number, so each response corresponds to an item

+						listing.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetWantItNowPost</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="Title" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+					  (out) Title of a Want It Now post.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetWantItNowSearchResults</CallName>

+							<Returned>Conditionally</Returned>

+						</CallInfo>

+						<CallInfo>

+							<CallName>GetWantItNowPost</CallName>

+							<Returned>Always</Returned>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/WirelessCarrierIDCodeList.xsd #####

+

+-->

+	<xs:simpleType name="WirelessCarrierIDCodeType">

+		<xs:restriction base="xs:token">

+			<xs:enumeration value="Cingular"/>

+			<xs:enumeration value="TMobile"/>

+			<xs:enumeration value="Sprint"/>

+			<xs:enumeration value="Nextel"/>

+			<xs:enumeration value="Verizon"/>

+			<xs:enumeration value="CincinnatiBell"/>

+			<xs:enumeration value="Dobson"/>

+			<xs:enumeration value="Alltel"/>

+			<xs:enumeration value="Leap"/>

+			<xs:enumeration value="USCellular"/>

+			<xs:enumeration value="Movistar"/>

+			<xs:enumeration value="Amena"/>

+			<xs:enumeration value="Vodafone"/>

+			<xs:enumeration value="ATT"/>

+			<xs:enumeration value="CustomCode"/>

+		</xs:restriction>

+	</xs:simpleType>

+<!--  

+

+##### from file eBLBaseComponents/public/XSLFileType.xsd #####

+

+-->

+	<xs:complexType name="XSLFileType">

+		<xs:annotation>

+			<xs:documentation>

+				Describes an XSL file that would be returned

+				from an Item Specifics or Pre-filled Item Information meta-data call

+				(such as GetAttributesXSL or GetProductFinderXSL).

+			</xs:documentation>

+		</xs:annotation>

+		<xs:sequence>

+			<xs:element name="FileName" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						The name of the XSL file. Store this information to use it

+						as input to the call in the future.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAttributesXSL</CallName>

+							<CallName>GetProductFinderXSL</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FileVersion" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+            The version number of the XSL file. Store this information to use it

+            as input to the call in the future.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAttributesXSL</CallName>

+							<CallName>GetProductFinderXSL</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>none, ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:element name="FileContent" type="xs:string" minOccurs="0">

+				<xs:annotation>

+					<xs:documentation>

+						Contains a MIME base-64-encoded representation of the XSL file.

+						See the eBay Web Services Guide for information on decoding

+						the XSL stylesheet file. If no XSL file is available (or if you passed no detail level),

+						this property is empty or not returned.

+					</xs:documentation>

+					<xs:appinfo>

+						<CallInfo>

+							<CallName>GetAttributesXSL</CallName>

+							<CallName>GetProductFinderXSL</CallName>

+							<Returned>Always</Returned>

+							<DetailLevels>ReturnAll</DetailLevels>

+						</CallInfo>

+					</xs:appinfo>

+				</xs:annotation>

+			</xs:element>

+			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xs:sequence>

+	</xs:complexType>

+<!--  

+

+##### from file eBLBaseComponents/public/eBxOptInPreferenceType.xsd #####

+

+-->

+	<xs:complexType name="eBxOptInPreferenceType">

+	<xs:annotation>

+		<xs:documentation>

+			Contains a seller's preferences for listing items on Ebay Express.

+		</xs:documentation>

+	</xs:annotation>

+	<xs:sequence>

+		<xs:element name="eBxOptInPreference" type="xs:boolean" minOccurs="0">

+			<xs:annotation>

+				<xs:documentation>

+					If true: The seller wants their eligible eBay listings to be included on

+					eBay Express (in addition to the main eBay site). If false: The seller

+					does not want their listings to be included on eBay Express. If omitted

+					(in SetUserPreferences): The seller does not want to change their

+					existing preference. (Initially, eBay sets this preference to true for

+					every seller.)

+				</xs:documentation>

+				<xs:appinfo>

+					<CallInfo>

+						<CallName>GetUserPreferences</CallName>

+						<TagStatus>Deprecated</TagStatus>

+						<Returned>Conditionally</Returned>

+					</CallInfo>

+					<CallInfo>

+						<CallName>SetUserPreferences</CallName>

+						<Default>omitted</Default>

+						<TagStatus>ObsoleteSoon</TagStatus>

+						<RequiredInput>No</RequiredInput>

+					</CallInfo>

+				</xs:appinfo>

+			</xs:annotation>

+		</xs:element>

+		<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+	</xs:sequence>

+</xs:complexType>

+

+

+		</xs:schema>

+	</wsdl:types>

+	<wsdl:message name="RequesterCredentials">

+		<wsdl:part name="RequesterCredentials" element="ns:RequesterCredentials"/>

+	</wsdl:message>

+	

+	<wsdl:message name="AddDisputeResponse">

+		<wsdl:part name="AddDisputeResponse" element="ns:AddDisputeResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddDisputeRequest">

+		<wsdl:part name="AddDisputeRequest" element="ns:AddDisputeRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddDisputeResponseResponse">

+		<wsdl:part name="AddDisputeResponseResponse" element="ns:AddDisputeResponseResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddDisputeResponseRequest">

+		<wsdl:part name="AddDisputeResponseRequest" element="ns:AddDisputeResponseRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddItemResponse">

+		<wsdl:part name="AddItemResponse" element="ns:AddItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddItemRequest">

+		<wsdl:part name="AddItemRequest" element="ns:AddItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddLiveAuctionItemResponse">

+		<wsdl:part name="AddLiveAuctionItemResponse" element="ns:AddLiveAuctionItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddLiveAuctionItemRequest">

+		<wsdl:part name="AddLiveAuctionItemRequest" element="ns:AddLiveAuctionItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddMemberMessageResponse">

+		<wsdl:part name="AddMemberMessageResponse" element="ns:AddMemberMessageResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddMemberMessageRequest">

+		<wsdl:part name="AddMemberMessageRequest" element="ns:AddMemberMessageRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddMemberMessageAAQToPartnerResponse">

+		<wsdl:part name="AddMemberMessageAAQToPartnerResponse" element="ns:AddMemberMessageAAQToPartnerResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddMemberMessageAAQToPartnerRequest">

+		<wsdl:part name="AddMemberMessageAAQToPartnerRequest" element="ns:AddMemberMessageAAQToPartnerRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddMemberMessageRTQResponse">

+		<wsdl:part name="AddMemberMessageRTQResponse" element="ns:AddMemberMessageRTQResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddMemberMessageRTQRequest">

+		<wsdl:part name="AddMemberMessageRTQRequest" element="ns:AddMemberMessageRTQRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddMemberMessagesAAQToBidderResponse">

+		<wsdl:part name="AddMemberMessagesAAQToBidderResponse" element="ns:AddMemberMessagesAAQToBidderResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddMemberMessagesAAQToBidderRequest">

+		<wsdl:part name="AddMemberMessagesAAQToBidderRequest" element="ns:AddMemberMessagesAAQToBidderRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddOrderResponse">

+		<wsdl:part name="AddOrderResponse" element="ns:AddOrderResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddOrderRequest">

+		<wsdl:part name="AddOrderRequest" element="ns:AddOrderRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddSecondChanceItemResponse">

+		<wsdl:part name="AddSecondChanceItemResponse" element="ns:AddSecondChanceItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddSecondChanceItemRequest">

+		<wsdl:part name="AddSecondChanceItemRequest" element="ns:AddSecondChanceItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddToItemDescriptionResponse">

+		<wsdl:part name="AddToItemDescriptionResponse" element="ns:AddToItemDescriptionResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddToItemDescriptionRequest">

+		<wsdl:part name="AddToItemDescriptionRequest" element="ns:AddToItemDescriptionRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddToWatchListResponse">

+		<wsdl:part name="AddToWatchListResponse" element="ns:AddToWatchListResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddToWatchListRequest">

+		<wsdl:part name="AddToWatchListRequest" element="ns:AddToWatchListRequest"/>

+	</wsdl:message>

+	<wsdl:message name="AddTransactionConfirmationItemResponse">

+		<wsdl:part name="AddTransactionConfirmationItemResponse" element="ns:AddTransactionConfirmationItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="AddTransactionConfirmationItemRequest">

+		<wsdl:part name="AddTransactionConfirmationItemRequest" element="ns:AddTransactionConfirmationItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="ApproveLiveAuctionBiddersResponse">

+		<wsdl:part name="ApproveLiveAuctionBiddersResponse" element="ns:ApproveLiveAuctionBiddersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="ApproveLiveAuctionBiddersRequest">

+		<wsdl:part name="ApproveLiveAuctionBiddersRequest" element="ns:ApproveLiveAuctionBiddersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="CompleteSaleResponse">

+		<wsdl:part name="CompleteSaleResponse" element="ns:CompleteSaleResponse"/>

+	</wsdl:message>

+	<wsdl:message name="CompleteSaleRequest">

+		<wsdl:part name="CompleteSaleRequest" element="ns:CompleteSaleRequest"/>

+	</wsdl:message>

+	<wsdl:message name="DeleteMyMessagesResponse">

+		<wsdl:part name="DeleteMyMessagesResponse" element="ns:DeleteMyMessagesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="DeleteMyMessagesRequest">

+		<wsdl:part name="DeleteMyMessagesRequest" element="ns:DeleteMyMessagesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="EndItemResponse">

+		<wsdl:part name="EndItemResponse" element="ns:EndItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="EndItemRequest">

+		<wsdl:part name="EndItemRequest" element="ns:EndItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="FetchTokenResponse">

+		<wsdl:part name="FetchTokenResponse" element="ns:FetchTokenResponse"/>

+	</wsdl:message>

+	<wsdl:message name="FetchTokenRequest">

+		<wsdl:part name="FetchTokenRequest" element="ns:FetchTokenRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetAccountResponse">

+		<wsdl:part name="GetAccountResponse" element="ns:GetAccountResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetAccountRequest">

+		<wsdl:part name="GetAccountRequest" element="ns:GetAccountRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetAdFormatLeadsResponse">

+		<wsdl:part name="GetAdFormatLeadsResponse" element="ns:GetAdFormatLeadsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetAdFormatLeadsRequest">

+		<wsdl:part name="GetAdFormatLeadsRequest" element="ns:GetAdFormatLeadsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetAllBiddersResponse">

+		<wsdl:part name="GetAllBiddersResponse" element="ns:GetAllBiddersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetAllBiddersRequest">

+		<wsdl:part name="GetAllBiddersRequest" element="ns:GetAllBiddersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetApiAccessRulesResponse">

+		<wsdl:part name="GetApiAccessRulesResponse" element="ns:GetApiAccessRulesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetApiAccessRulesRequest">

+		<wsdl:part name="GetApiAccessRulesRequest" element="ns:GetApiAccessRulesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetAttributesCSResponse">

+		<wsdl:part name="GetAttributesCSResponse" element="ns:GetAttributesCSResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetAttributesCSRequest">

+		<wsdl:part name="GetAttributesCSRequest" element="ns:GetAttributesCSRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetAttributesXSLResponse">

+		<wsdl:part name="GetAttributesXSLResponse" element="ns:GetAttributesXSLResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetAttributesXSLRequest">

+		<wsdl:part name="GetAttributesXSLRequest" element="ns:GetAttributesXSLRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetBestOffersResponse">

+		<wsdl:part name="GetBestOffersResponse" element="ns:GetBestOffersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetBestOffersRequest">

+		<wsdl:part name="GetBestOffersRequest" element="ns:GetBestOffersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetBidderListResponse">

+		<wsdl:part name="GetBidderListResponse" element="ns:GetBidderListResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetBidderListRequest">

+		<wsdl:part name="GetBidderListRequest" element="ns:GetBidderListRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategoriesResponse">

+		<wsdl:part name="GetCategoriesResponse" element="ns:GetCategoriesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategoriesRequest">

+		<wsdl:part name="GetCategoriesRequest" element="ns:GetCategoriesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategory2CSResponse">

+		<wsdl:part name="GetCategory2CSResponse" element="ns:GetCategory2CSResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategory2CSRequest">

+		<wsdl:part name="GetCategory2CSRequest" element="ns:GetCategory2CSRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategory2FinanceOfferResponse">

+		<wsdl:part name="GetCategory2FinanceOfferResponse" element="ns:GetCategory2FinanceOfferResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategory2FinanceOfferRequest">

+		<wsdl:part name="GetCategory2FinanceOfferRequest" element="ns:GetCategory2FinanceOfferRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategoryFeaturesResponse">

+		<wsdl:part name="GetCategoryFeaturesResponse" element="ns:GetCategoryFeaturesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategoryFeaturesRequest">

+		<wsdl:part name="GetCategoryFeaturesRequest" element="ns:GetCategoryFeaturesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategoryListingsResponse">

+		<wsdl:part name="GetCategoryListingsResponse" element="ns:GetCategoryListingsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategoryListingsRequest">

+		<wsdl:part name="GetCategoryListingsRequest" element="ns:GetCategoryListingsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategoryMappingsResponse">

+		<wsdl:part name="GetCategoryMappingsResponse" element="ns:GetCategoryMappingsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetCategoryMappingsRequest">

+		<wsdl:part name="GetCategoryMappingsRequest" element="ns:GetCategoryMappingsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetCharitiesResponse">

+		<wsdl:part name="GetCharitiesResponse" element="ns:GetCharitiesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetCharitiesRequest">

+		<wsdl:part name="GetCharitiesRequest" element="ns:GetCharitiesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetContextualKeywordsResponse">

+		<wsdl:part name="GetContextualKeywordsResponse" element="ns:GetContextualKeywordsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetContextualKeywordsRequest">

+		<wsdl:part name="GetContextualKeywordsRequest" element="ns:GetContextualKeywordsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetCrossPromotionsResponse">

+		<wsdl:part name="GetCrossPromotionsResponse" element="ns:GetCrossPromotionsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetCrossPromotionsRequest">

+		<wsdl:part name="GetCrossPromotionsRequest" element="ns:GetCrossPromotionsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetDescriptionTemplatesResponse">

+		<wsdl:part name="GetDescriptionTemplatesResponse" element="ns:GetDescriptionTemplatesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetDescriptionTemplatesRequest">

+		<wsdl:part name="GetDescriptionTemplatesRequest" element="ns:GetDescriptionTemplatesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetDisputeResponse">

+		<wsdl:part name="GetDisputeResponse" element="ns:GetDisputeResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetDisputeRequest">

+		<wsdl:part name="GetDisputeRequest" element="ns:GetDisputeRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetFeedbackResponse">

+		<wsdl:part name="GetFeedbackResponse" element="ns:GetFeedbackResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetFeedbackRequest">

+		<wsdl:part name="GetFeedbackRequest" element="ns:GetFeedbackRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetFinanceOffersResponse">

+		<wsdl:part name="GetFinanceOffersResponse" element="ns:GetFinanceOffersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetFinanceOffersRequest">

+		<wsdl:part name="GetFinanceOffersRequest" element="ns:GetFinanceOffersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetHighBiddersResponse">

+		<wsdl:part name="GetHighBiddersResponse" element="ns:GetHighBiddersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetHighBiddersRequest">

+		<wsdl:part name="GetHighBiddersRequest" element="ns:GetHighBiddersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemResponse">

+		<wsdl:part name="GetItemResponse" element="ns:GetItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemRequest">

+		<wsdl:part name="GetItemRequest" element="ns:GetItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemRecommendationsResponse">

+		<wsdl:part name="GetItemRecommendationsResponse" element="ns:GetItemRecommendationsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemRecommendationsRequest">

+		<wsdl:part name="GetItemRecommendationsRequest" element="ns:GetItemRecommendationsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemShippingResponse">

+		<wsdl:part name="GetItemShippingResponse" element="ns:GetItemShippingResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemShippingRequest">

+		<wsdl:part name="GetItemShippingRequest" element="ns:GetItemShippingRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemTransactionsResponse">

+		<wsdl:part name="GetItemTransactionsResponse" element="ns:GetItemTransactionsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemTransactionsRequest">

+		<wsdl:part name="GetItemTransactionsRequest" element="ns:GetItemTransactionsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemsAwaitingFeedbackResponse">

+		<wsdl:part name="GetItemsAwaitingFeedbackResponse" element="ns:GetItemsAwaitingFeedbackResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetItemsAwaitingFeedbackRequest">

+		<wsdl:part name="GetItemsAwaitingFeedbackRequest" element="ns:GetItemsAwaitingFeedbackRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetLiveAuctionBiddersResponse">

+		<wsdl:part name="GetLiveAuctionBiddersResponse" element="ns:GetLiveAuctionBiddersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetLiveAuctionBiddersRequest">

+		<wsdl:part name="GetLiveAuctionBiddersRequest" element="ns:GetLiveAuctionBiddersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetLiveAuctionCatalogDetailsResponse">

+		<wsdl:part name="GetLiveAuctionCatalogDetailsResponse" element="ns:GetLiveAuctionCatalogDetailsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetLiveAuctionCatalogDetailsRequest">

+		<wsdl:part name="GetLiveAuctionCatalogDetailsRequest" element="ns:GetLiveAuctionCatalogDetailsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetMemberMessagesResponse">

+		<wsdl:part name="GetMemberMessagesResponse" element="ns:GetMemberMessagesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetMemberMessagesRequest">

+		<wsdl:part name="GetMemberMessagesRequest" element="ns:GetMemberMessagesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyMessagesResponse">

+		<wsdl:part name="GetMyMessagesResponse" element="ns:GetMyMessagesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyMessagesRequest">

+		<wsdl:part name="GetMyMessagesRequest" element="ns:GetMyMessagesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyeBayResponse">

+		<wsdl:part name="GetMyeBayResponse" element="ns:GetMyeBayResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyeBayRequest">

+		<wsdl:part name="GetMyeBayRequest" element="ns:GetMyeBayRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyeBayBuyingResponse">

+		<wsdl:part name="GetMyeBayBuyingResponse" element="ns:GetMyeBayBuyingResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyeBayBuyingRequest">

+		<wsdl:part name="GetMyeBayBuyingRequest" element="ns:GetMyeBayBuyingRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyeBayRemindersResponse">

+		<wsdl:part name="GetMyeBayRemindersResponse" element="ns:GetMyeBayRemindersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyeBayRemindersRequest">

+		<wsdl:part name="GetMyeBayRemindersRequest" element="ns:GetMyeBayRemindersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyeBaySellingResponse">

+		<wsdl:part name="GetMyeBaySellingResponse" element="ns:GetMyeBaySellingResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetMyeBaySellingRequest">

+		<wsdl:part name="GetMyeBaySellingRequest" element="ns:GetMyeBaySellingRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetNotificationPreferencesResponse">

+		<wsdl:part name="GetNotificationPreferencesResponse" element="ns:GetNotificationPreferencesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetNotificationPreferencesRequest">

+		<wsdl:part name="GetNotificationPreferencesRequest" element="ns:GetNotificationPreferencesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetNotificationsUsageResponse">

+		<wsdl:part name="GetNotificationsUsageResponse" element="ns:GetNotificationsUsageResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetNotificationsUsageRequest">

+		<wsdl:part name="GetNotificationsUsageRequest" element="ns:GetNotificationsUsageRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetOrderTransactionsResponse">

+		<wsdl:part name="GetOrderTransactionsResponse" element="ns:GetOrderTransactionsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetOrderTransactionsRequest">

+		<wsdl:part name="GetOrderTransactionsRequest" element="ns:GetOrderTransactionsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetOrdersResponse">

+		<wsdl:part name="GetOrdersResponse" element="ns:GetOrdersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetOrdersRequest">

+		<wsdl:part name="GetOrdersRequest" element="ns:GetOrdersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetPictureManagerDetailsResponse">

+		<wsdl:part name="GetPictureManagerDetailsResponse" element="ns:GetPictureManagerDetailsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetPictureManagerDetailsRequest">

+		<wsdl:part name="GetPictureManagerDetailsRequest" element="ns:GetPictureManagerDetailsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetPictureManagerOptionsResponse">

+		<wsdl:part name="GetPictureManagerOptionsResponse" element="ns:GetPictureManagerOptionsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetPictureManagerOptionsRequest">

+		<wsdl:part name="GetPictureManagerOptionsRequest" element="ns:GetPictureManagerOptionsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetPopularKeywordsResponse">

+		<wsdl:part name="GetPopularKeywordsResponse" element="ns:GetPopularKeywordsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetPopularKeywordsRequest">

+		<wsdl:part name="GetPopularKeywordsRequest" element="ns:GetPopularKeywordsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductFamilyMembersResponse">

+		<wsdl:part name="GetProductFamilyMembersResponse" element="ns:GetProductFamilyMembersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductFamilyMembersRequest">

+		<wsdl:part name="GetProductFamilyMembersRequest" element="ns:GetProductFamilyMembersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductFinderResponse">

+		<wsdl:part name="GetProductFinderResponse" element="ns:GetProductFinderResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductFinderRequest">

+		<wsdl:part name="GetProductFinderRequest" element="ns:GetProductFinderRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductFinderXSLResponse">

+		<wsdl:part name="GetProductFinderXSLResponse" element="ns:GetProductFinderXSLResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductFinderXSLRequest">

+		<wsdl:part name="GetProductFinderXSLRequest" element="ns:GetProductFinderXSLRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductSearchPageResponse">

+		<wsdl:part name="GetProductSearchPageResponse" element="ns:GetProductSearchPageResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductSearchPageRequest">

+		<wsdl:part name="GetProductSearchPageRequest" element="ns:GetProductSearchPageRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductSearchResultsResponse">

+		<wsdl:part name="GetProductSearchResultsResponse" element="ns:GetProductSearchResultsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductSearchResultsRequest">

+		<wsdl:part name="GetProductSearchResultsRequest" element="ns:GetProductSearchResultsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductSellingPagesResponse">

+		<wsdl:part name="GetProductSellingPagesResponse" element="ns:GetProductSellingPagesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetProductSellingPagesRequest">

+		<wsdl:part name="GetProductSellingPagesRequest" element="ns:GetProductSellingPagesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetPromotionRulesResponse">

+		<wsdl:part name="GetPromotionRulesResponse" element="ns:GetPromotionRulesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetPromotionRulesRequest">

+		<wsdl:part name="GetPromotionRulesRequest" element="ns:GetPromotionRulesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetRecommendationsResponse">

+		<wsdl:part name="GetRecommendationsResponse" element="ns:GetRecommendationsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetRecommendationsRequest">

+		<wsdl:part name="GetRecommendationsRequest" element="ns:GetRecommendationsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetReturnURLResponse">

+		<wsdl:part name="GetReturnURLResponse" element="ns:GetReturnURLResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetReturnURLRequest">

+		<wsdl:part name="GetReturnURLRequest" element="ns:GetReturnURLRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetRuNameResponse">

+		<wsdl:part name="GetRuNameResponse" element="ns:GetRuNameResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetRuNameRequest">

+		<wsdl:part name="GetRuNameRequest" element="ns:GetRuNameRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetSearchResultsResponse">

+		<wsdl:part name="GetSearchResultsResponse" element="ns:GetSearchResultsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetSearchResultsRequest">

+		<wsdl:part name="GetSearchResultsRequest" element="ns:GetSearchResultsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetSearchResultsExpressResponse">

+		<wsdl:part name="GetSearchResultsExpressResponse" element="ns:GetSearchResultsExpressResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetSearchResultsExpressRequest">

+		<wsdl:part name="GetSearchResultsExpressRequest" element="ns:GetSearchResultsExpressRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetSellerEventsResponse">

+		<wsdl:part name="GetSellerEventsResponse" element="ns:GetSellerEventsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetSellerEventsRequest">

+		<wsdl:part name="GetSellerEventsRequest" element="ns:GetSellerEventsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetSellerListResponse">

+		<wsdl:part name="GetSellerListResponse" element="ns:GetSellerListResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetSellerListRequest">

+		<wsdl:part name="GetSellerListRequest" element="ns:GetSellerListRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetSellerPaymentsResponse">

+		<wsdl:part name="GetSellerPaymentsResponse" element="ns:GetSellerPaymentsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetSellerPaymentsRequest">

+		<wsdl:part name="GetSellerPaymentsRequest" element="ns:GetSellerPaymentsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetSellerTransactionsResponse">

+		<wsdl:part name="GetSellerTransactionsResponse" element="ns:GetSellerTransactionsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetSellerTransactionsRequest">

+		<wsdl:part name="GetSellerTransactionsRequest" element="ns:GetSellerTransactionsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetStoreResponse">

+		<wsdl:part name="GetStoreResponse" element="ns:GetStoreResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetStoreRequest">

+		<wsdl:part name="GetStoreRequest" element="ns:GetStoreRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetStoreCategoryUpdateStatusResponse">

+		<wsdl:part name="GetStoreCategoryUpdateStatusResponse" element="ns:GetStoreCategoryUpdateStatusResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetStoreCategoryUpdateStatusRequest">

+		<wsdl:part name="GetStoreCategoryUpdateStatusRequest" element="ns:GetStoreCategoryUpdateStatusRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetStoreCustomPageResponse">

+		<wsdl:part name="GetStoreCustomPageResponse" element="ns:GetStoreCustomPageResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetStoreCustomPageRequest">

+		<wsdl:part name="GetStoreCustomPageRequest" element="ns:GetStoreCustomPageRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetStoreOptionsResponse">

+		<wsdl:part name="GetStoreOptionsResponse" element="ns:GetStoreOptionsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetStoreOptionsRequest">

+		<wsdl:part name="GetStoreOptionsRequest" element="ns:GetStoreOptionsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetStorePreferencesResponse">

+		<wsdl:part name="GetStorePreferencesResponse" element="ns:GetStorePreferencesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetStorePreferencesRequest">

+		<wsdl:part name="GetStorePreferencesRequest" element="ns:GetStorePreferencesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetSuggestedCategoriesResponse">

+		<wsdl:part name="GetSuggestedCategoriesResponse" element="ns:GetSuggestedCategoriesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetSuggestedCategoriesRequest">

+		<wsdl:part name="GetSuggestedCategoriesRequest" element="ns:GetSuggestedCategoriesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetTaxTableResponse">

+		<wsdl:part name="GetTaxTableResponse" element="ns:GetTaxTableResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetTaxTableRequest">

+		<wsdl:part name="GetTaxTableRequest" element="ns:GetTaxTableRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetUserResponse">

+		<wsdl:part name="GetUserResponse" element="ns:GetUserResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetUserRequest">

+		<wsdl:part name="GetUserRequest" element="ns:GetUserRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetUserContactDetailsResponse">

+		<wsdl:part name="GetUserContactDetailsResponse" element="ns:GetUserContactDetailsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetUserContactDetailsRequest">

+		<wsdl:part name="GetUserContactDetailsRequest" element="ns:GetUserContactDetailsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetUserDisputesResponse">

+		<wsdl:part name="GetUserDisputesResponse" element="ns:GetUserDisputesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetUserDisputesRequest">

+		<wsdl:part name="GetUserDisputesRequest" element="ns:GetUserDisputesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetUserPreferencesResponse">

+		<wsdl:part name="GetUserPreferencesResponse" element="ns:GetUserPreferencesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetUserPreferencesRequest">

+		<wsdl:part name="GetUserPreferencesRequest" element="ns:GetUserPreferencesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetWantItNowPostResponse">

+		<wsdl:part name="GetWantItNowPostResponse" element="ns:GetWantItNowPostResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetWantItNowPostRequest">

+		<wsdl:part name="GetWantItNowPostRequest" element="ns:GetWantItNowPostRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GetWantItNowSearchResultsResponse">

+		<wsdl:part name="GetWantItNowSearchResultsResponse" element="ns:GetWantItNowSearchResultsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GetWantItNowSearchResultsRequest">

+		<wsdl:part name="GetWantItNowSearchResultsRequest" element="ns:GetWantItNowSearchResultsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GeteBayDetailsResponse">

+		<wsdl:part name="GeteBayDetailsResponse" element="ns:GeteBayDetailsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GeteBayDetailsRequest">

+		<wsdl:part name="GeteBayDetailsRequest" element="ns:GeteBayDetailsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="GeteBayOfficialTimeResponse">

+		<wsdl:part name="GeteBayOfficialTimeResponse" element="ns:GeteBayOfficialTimeResponse"/>

+	</wsdl:message>

+	<wsdl:message name="GeteBayOfficialTimeRequest">

+		<wsdl:part name="GeteBayOfficialTimeRequest" element="ns:GeteBayOfficialTimeRequest"/>

+	</wsdl:message>

+	<wsdl:message name="IssueRefundResponse">

+		<wsdl:part name="IssueRefundResponse" element="ns:IssueRefundResponse"/>

+	</wsdl:message>

+	<wsdl:message name="IssueRefundRequest">

+		<wsdl:part name="IssueRefundRequest" element="ns:IssueRefundRequest"/>

+	</wsdl:message>

+	<wsdl:message name="LeaveFeedbackResponse">

+		<wsdl:part name="LeaveFeedbackResponse" element="ns:LeaveFeedbackResponse"/>

+	</wsdl:message>

+	<wsdl:message name="LeaveFeedbackRequest">

+		<wsdl:part name="LeaveFeedbackRequest" element="ns:LeaveFeedbackRequest"/>

+	</wsdl:message>

+	<wsdl:message name="PlaceOfferResponse">

+		<wsdl:part name="PlaceOfferResponse" element="ns:PlaceOfferResponse"/>

+	</wsdl:message>

+	<wsdl:message name="PlaceOfferRequest">

+		<wsdl:part name="PlaceOfferRequest" element="ns:PlaceOfferRequest"/>

+	</wsdl:message>

+	<wsdl:message name="RelistItemResponse">

+		<wsdl:part name="RelistItemResponse" element="ns:RelistItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="RelistItemRequest">

+		<wsdl:part name="RelistItemRequest" element="ns:RelistItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="RemoveFromWatchListResponse">

+		<wsdl:part name="RemoveFromWatchListResponse" element="ns:RemoveFromWatchListResponse"/>

+	</wsdl:message>

+	<wsdl:message name="RemoveFromWatchListRequest">

+		<wsdl:part name="RemoveFromWatchListRequest" element="ns:RemoveFromWatchListRequest"/>

+	</wsdl:message>

+	<wsdl:message name="RespondToBestOfferResponse">

+		<wsdl:part name="RespondToBestOfferResponse" element="ns:RespondToBestOfferResponse"/>

+	</wsdl:message>

+	<wsdl:message name="RespondToBestOfferRequest">

+		<wsdl:part name="RespondToBestOfferRequest" element="ns:RespondToBestOfferRequest"/>

+	</wsdl:message>

+	<wsdl:message name="RespondToFeedbackResponse">

+		<wsdl:part name="RespondToFeedbackResponse" element="ns:RespondToFeedbackResponse"/>

+	</wsdl:message>

+	<wsdl:message name="RespondToFeedbackRequest">

+		<wsdl:part name="RespondToFeedbackRequest" element="ns:RespondToFeedbackRequest"/>

+	</wsdl:message>

+	<wsdl:message name="RespondToWantItNowPostResponse">

+		<wsdl:part name="RespondToWantItNowPostResponse" element="ns:RespondToWantItNowPostResponse"/>

+	</wsdl:message>

+	<wsdl:message name="RespondToWantItNowPostRequest">

+		<wsdl:part name="RespondToWantItNowPostRequest" element="ns:RespondToWantItNowPostRequest"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseCheckoutStatusResponse">

+		<wsdl:part name="ReviseCheckoutStatusResponse" element="ns:ReviseCheckoutStatusResponse"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseCheckoutStatusRequest">

+		<wsdl:part name="ReviseCheckoutStatusRequest" element="ns:ReviseCheckoutStatusRequest"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseItemResponse">

+		<wsdl:part name="ReviseItemResponse" element="ns:ReviseItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseItemRequest">

+		<wsdl:part name="ReviseItemRequest" element="ns:ReviseItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseLiveAuctionItemResponse">

+		<wsdl:part name="ReviseLiveAuctionItemResponse" element="ns:ReviseLiveAuctionItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseLiveAuctionItemRequest">

+		<wsdl:part name="ReviseLiveAuctionItemRequest" element="ns:ReviseLiveAuctionItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseMyMessagesResponse">

+		<wsdl:part name="ReviseMyMessagesResponse" element="ns:ReviseMyMessagesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseMyMessagesRequest">

+		<wsdl:part name="ReviseMyMessagesRequest" element="ns:ReviseMyMessagesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseMyMessagesFoldersResponse">

+		<wsdl:part name="ReviseMyMessagesFoldersResponse" element="ns:ReviseMyMessagesFoldersResponse"/>

+	</wsdl:message>

+	<wsdl:message name="ReviseMyMessagesFoldersRequest">

+		<wsdl:part name="ReviseMyMessagesFoldersRequest" element="ns:ReviseMyMessagesFoldersRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SellerReverseDisputeResponse">

+		<wsdl:part name="SellerReverseDisputeResponse" element="ns:SellerReverseDisputeResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SellerReverseDisputeRequest">

+		<wsdl:part name="SellerReverseDisputeRequest" element="ns:SellerReverseDisputeRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SendInvoiceResponse">

+		<wsdl:part name="SendInvoiceResponse" element="ns:SendInvoiceResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SendInvoiceRequest">

+		<wsdl:part name="SendInvoiceRequest" element="ns:SendInvoiceRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetNotificationPreferencesResponse">

+		<wsdl:part name="SetNotificationPreferencesResponse" element="ns:SetNotificationPreferencesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetNotificationPreferencesRequest">

+		<wsdl:part name="SetNotificationPreferencesRequest" element="ns:SetNotificationPreferencesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetPictureManagerDetailsResponse">

+		<wsdl:part name="SetPictureManagerDetailsResponse" element="ns:SetPictureManagerDetailsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetPictureManagerDetailsRequest">

+		<wsdl:part name="SetPictureManagerDetailsRequest" element="ns:SetPictureManagerDetailsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetPromotionRulesResponse">

+		<wsdl:part name="SetPromotionRulesResponse" element="ns:SetPromotionRulesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetPromotionRulesRequest">

+		<wsdl:part name="SetPromotionRulesRequest" element="ns:SetPromotionRulesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetReturnURLResponse">

+		<wsdl:part name="SetReturnURLResponse" element="ns:SetReturnURLResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetReturnURLRequest">

+		<wsdl:part name="SetReturnURLRequest" element="ns:SetReturnURLRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetStoreResponse">

+		<wsdl:part name="SetStoreResponse" element="ns:SetStoreResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetStoreRequest">

+		<wsdl:part name="SetStoreRequest" element="ns:SetStoreRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetStoreCategoriesResponse">

+		<wsdl:part name="SetStoreCategoriesResponse" element="ns:SetStoreCategoriesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetStoreCategoriesRequest">

+		<wsdl:part name="SetStoreCategoriesRequest" element="ns:SetStoreCategoriesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetStoreCustomPageResponse">

+		<wsdl:part name="SetStoreCustomPageResponse" element="ns:SetStoreCustomPageResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetStoreCustomPageRequest">

+		<wsdl:part name="SetStoreCustomPageRequest" element="ns:SetStoreCustomPageRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetStorePreferencesResponse">

+		<wsdl:part name="SetStorePreferencesResponse" element="ns:SetStorePreferencesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetStorePreferencesRequest">

+		<wsdl:part name="SetStorePreferencesRequest" element="ns:SetStorePreferencesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetTaxTableResponse">

+		<wsdl:part name="SetTaxTableResponse" element="ns:SetTaxTableResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetTaxTableRequest">

+		<wsdl:part name="SetTaxTableRequest" element="ns:SetTaxTableRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetUserNotesResponse">

+		<wsdl:part name="SetUserNotesResponse" element="ns:SetUserNotesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetUserNotesRequest">

+		<wsdl:part name="SetUserNotesRequest" element="ns:SetUserNotesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="SetUserPreferencesResponse">

+		<wsdl:part name="SetUserPreferencesResponse" element="ns:SetUserPreferencesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="SetUserPreferencesRequest">

+		<wsdl:part name="SetUserPreferencesRequest" element="ns:SetUserPreferencesRequest"/>

+	</wsdl:message>

+	<wsdl:message name="ValidateTestUserRegistrationResponse">

+		<wsdl:part name="ValidateTestUserRegistrationResponse" element="ns:ValidateTestUserRegistrationResponse"/>

+	</wsdl:message>

+	<wsdl:message name="ValidateTestUserRegistrationRequest">

+		<wsdl:part name="ValidateTestUserRegistrationRequest" element="ns:ValidateTestUserRegistrationRequest"/>

+	</wsdl:message>

+	<wsdl:message name="VerifyAddItemResponse">

+		<wsdl:part name="VerifyAddItemResponse" element="ns:VerifyAddItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="VerifyAddItemRequest">

+		<wsdl:part name="VerifyAddItemRequest" element="ns:VerifyAddItemRequest"/>

+	</wsdl:message>

+	<wsdl:message name="VerifyAddSecondChanceItemResponse">

+		<wsdl:part name="VerifyAddSecondChanceItemResponse" element="ns:VerifyAddSecondChanceItemResponse"/>

+	</wsdl:message>

+	<wsdl:message name="VerifyAddSecondChanceItemRequest">

+		<wsdl:part name="VerifyAddSecondChanceItemRequest" element="ns:VerifyAddSecondChanceItemRequest"/>

+	</wsdl:message>

+	<wsdl:portType name="eBayAPIInterface">

+			

+		<wsdl:operation name="AddDispute">

+			<wsdl:input message="ns:AddDisputeRequest"/>

+			<wsdl:output message="ns:AddDisputeResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddDisputeResponse">

+			<wsdl:input message="ns:AddDisputeResponseRequest"/>

+			<wsdl:output message="ns:AddDisputeResponseResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddItem">

+			<wsdl:input message="ns:AddItemRequest"/>

+			<wsdl:output message="ns:AddItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddLiveAuctionItem">

+			<wsdl:input message="ns:AddLiveAuctionItemRequest"/>

+			<wsdl:output message="ns:AddLiveAuctionItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddMemberMessage">

+			<wsdl:input message="ns:AddMemberMessageRequest"/>

+			<wsdl:output message="ns:AddMemberMessageResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddMemberMessageAAQToPartner">

+			<wsdl:input message="ns:AddMemberMessageAAQToPartnerRequest"/>

+			<wsdl:output message="ns:AddMemberMessageAAQToPartnerResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddMemberMessageRTQ">

+			<wsdl:input message="ns:AddMemberMessageRTQRequest"/>

+			<wsdl:output message="ns:AddMemberMessageRTQResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddMemberMessagesAAQToBidder">

+			<wsdl:input message="ns:AddMemberMessagesAAQToBidderRequest"/>

+			<wsdl:output message="ns:AddMemberMessagesAAQToBidderResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddOrder">

+			<wsdl:input message="ns:AddOrderRequest"/>

+			<wsdl:output message="ns:AddOrderResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddSecondChanceItem">

+			<wsdl:input message="ns:AddSecondChanceItemRequest"/>

+			<wsdl:output message="ns:AddSecondChanceItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddToItemDescription">

+			<wsdl:input message="ns:AddToItemDescriptionRequest"/>

+			<wsdl:output message="ns:AddToItemDescriptionResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddToWatchList">

+			<wsdl:input message="ns:AddToWatchListRequest"/>

+			<wsdl:output message="ns:AddToWatchListResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AddTransactionConfirmationItem">

+			<wsdl:input message="ns:AddTransactionConfirmationItemRequest"/>

+			<wsdl:output message="ns:AddTransactionConfirmationItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="ApproveLiveAuctionBidders">

+			<wsdl:input message="ns:ApproveLiveAuctionBiddersRequest"/>

+			<wsdl:output message="ns:ApproveLiveAuctionBiddersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="CompleteSale">

+			<wsdl:input message="ns:CompleteSaleRequest"/>

+			<wsdl:output message="ns:CompleteSaleResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="DeleteMyMessages">

+			<wsdl:input message="ns:DeleteMyMessagesRequest"/>

+			<wsdl:output message="ns:DeleteMyMessagesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="EndItem">

+			<wsdl:input message="ns:EndItemRequest"/>

+			<wsdl:output message="ns:EndItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="FetchToken">

+			<wsdl:input message="ns:FetchTokenRequest"/>

+			<wsdl:output message="ns:FetchTokenResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetAccount">

+			<wsdl:input message="ns:GetAccountRequest"/>

+			<wsdl:output message="ns:GetAccountResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetAdFormatLeads">

+			<wsdl:input message="ns:GetAdFormatLeadsRequest"/>

+			<wsdl:output message="ns:GetAdFormatLeadsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetAllBidders">

+			<wsdl:input message="ns:GetAllBiddersRequest"/>

+			<wsdl:output message="ns:GetAllBiddersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetApiAccessRules">

+			<wsdl:input message="ns:GetApiAccessRulesRequest"/>

+			<wsdl:output message="ns:GetApiAccessRulesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetAttributesCS">

+			<wsdl:input message="ns:GetAttributesCSRequest"/>

+			<wsdl:output message="ns:GetAttributesCSResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetAttributesXSL">

+			<wsdl:input message="ns:GetAttributesXSLRequest"/>

+			<wsdl:output message="ns:GetAttributesXSLResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetBestOffers">

+			<wsdl:input message="ns:GetBestOffersRequest"/>

+			<wsdl:output message="ns:GetBestOffersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetBidderList">

+			<wsdl:input message="ns:GetBidderListRequest"/>

+			<wsdl:output message="ns:GetBidderListResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategories">

+			<wsdl:input message="ns:GetCategoriesRequest"/>

+			<wsdl:output message="ns:GetCategoriesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategory2CS">

+			<wsdl:input message="ns:GetCategory2CSRequest"/>

+			<wsdl:output message="ns:GetCategory2CSResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategory2FinanceOffer">

+			<wsdl:input message="ns:GetCategory2FinanceOfferRequest"/>

+			<wsdl:output message="ns:GetCategory2FinanceOfferResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategoryFeatures">

+			<wsdl:input message="ns:GetCategoryFeaturesRequest"/>

+			<wsdl:output message="ns:GetCategoryFeaturesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategoryListings">

+			<wsdl:input message="ns:GetCategoryListingsRequest"/>

+			<wsdl:output message="ns:GetCategoryListingsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategoryMappings">

+			<wsdl:input message="ns:GetCategoryMappingsRequest"/>

+			<wsdl:output message="ns:GetCategoryMappingsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetCharities">

+			<wsdl:input message="ns:GetCharitiesRequest"/>

+			<wsdl:output message="ns:GetCharitiesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetContextualKeywords">

+			<wsdl:input message="ns:GetContextualKeywordsRequest"/>

+			<wsdl:output message="ns:GetContextualKeywordsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetCrossPromotions">

+			<wsdl:input message="ns:GetCrossPromotionsRequest"/>

+			<wsdl:output message="ns:GetCrossPromotionsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetDescriptionTemplates">

+			<wsdl:input message="ns:GetDescriptionTemplatesRequest"/>

+			<wsdl:output message="ns:GetDescriptionTemplatesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetDispute">

+			<wsdl:input message="ns:GetDisputeRequest"/>

+			<wsdl:output message="ns:GetDisputeResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetFeedback">

+			<wsdl:input message="ns:GetFeedbackRequest"/>

+			<wsdl:output message="ns:GetFeedbackResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetFinanceOffers">

+			<wsdl:input message="ns:GetFinanceOffersRequest"/>

+			<wsdl:output message="ns:GetFinanceOffersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetHighBidders">

+			<wsdl:input message="ns:GetHighBiddersRequest"/>

+			<wsdl:output message="ns:GetHighBiddersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetItem">

+			<wsdl:input message="ns:GetItemRequest"/>

+			<wsdl:output message="ns:GetItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetItemRecommendations">

+			<wsdl:input message="ns:GetItemRecommendationsRequest"/>

+			<wsdl:output message="ns:GetItemRecommendationsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetItemShipping">

+			<wsdl:input message="ns:GetItemShippingRequest"/>

+			<wsdl:output message="ns:GetItemShippingResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetItemTransactions">

+			<wsdl:input message="ns:GetItemTransactionsRequest"/>

+			<wsdl:output message="ns:GetItemTransactionsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetItemsAwaitingFeedback">

+			<wsdl:input message="ns:GetItemsAwaitingFeedbackRequest"/>

+			<wsdl:output message="ns:GetItemsAwaitingFeedbackResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetLiveAuctionBidders">

+			<wsdl:input message="ns:GetLiveAuctionBiddersRequest"/>

+			<wsdl:output message="ns:GetLiveAuctionBiddersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetLiveAuctionCatalogDetails">

+			<wsdl:input message="ns:GetLiveAuctionCatalogDetailsRequest"/>

+			<wsdl:output message="ns:GetLiveAuctionCatalogDetailsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetMemberMessages">

+			<wsdl:input message="ns:GetMemberMessagesRequest"/>

+			<wsdl:output message="ns:GetMemberMessagesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyMessages">

+			<wsdl:input message="ns:GetMyMessagesRequest"/>

+			<wsdl:output message="ns:GetMyMessagesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyeBay">

+			<wsdl:input message="ns:GetMyeBayRequest"/>

+			<wsdl:output message="ns:GetMyeBayResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyeBayBuying">

+			<wsdl:input message="ns:GetMyeBayBuyingRequest"/>

+			<wsdl:output message="ns:GetMyeBayBuyingResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyeBayReminders">

+			<wsdl:input message="ns:GetMyeBayRemindersRequest"/>

+			<wsdl:output message="ns:GetMyeBayRemindersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyeBaySelling">

+			<wsdl:input message="ns:GetMyeBaySellingRequest"/>

+			<wsdl:output message="ns:GetMyeBaySellingResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetNotificationPreferences">

+			<wsdl:input message="ns:GetNotificationPreferencesRequest"/>

+			<wsdl:output message="ns:GetNotificationPreferencesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetNotificationsUsage">

+			<wsdl:input message="ns:GetNotificationsUsageRequest"/>

+			<wsdl:output message="ns:GetNotificationsUsageResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetOrderTransactions">

+			<wsdl:input message="ns:GetOrderTransactionsRequest"/>

+			<wsdl:output message="ns:GetOrderTransactionsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetOrders">

+			<wsdl:input message="ns:GetOrdersRequest"/>

+			<wsdl:output message="ns:GetOrdersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetPictureManagerDetails">

+			<wsdl:input message="ns:GetPictureManagerDetailsRequest"/>

+			<wsdl:output message="ns:GetPictureManagerDetailsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetPictureManagerOptions">

+			<wsdl:input message="ns:GetPictureManagerOptionsRequest"/>

+			<wsdl:output message="ns:GetPictureManagerOptionsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetPopularKeywords">

+			<wsdl:input message="ns:GetPopularKeywordsRequest"/>

+			<wsdl:output message="ns:GetPopularKeywordsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductFamilyMembers">

+			<wsdl:input message="ns:GetProductFamilyMembersRequest"/>

+			<wsdl:output message="ns:GetProductFamilyMembersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductFinder">

+			<wsdl:input message="ns:GetProductFinderRequest"/>

+			<wsdl:output message="ns:GetProductFinderResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductFinderXSL">

+			<wsdl:input message="ns:GetProductFinderXSLRequest"/>

+			<wsdl:output message="ns:GetProductFinderXSLResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductSearchPage">

+			<wsdl:input message="ns:GetProductSearchPageRequest"/>

+			<wsdl:output message="ns:GetProductSearchPageResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductSearchResults">

+			<wsdl:input message="ns:GetProductSearchResultsRequest"/>

+			<wsdl:output message="ns:GetProductSearchResultsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductSellingPages">

+			<wsdl:input message="ns:GetProductSellingPagesRequest"/>

+			<wsdl:output message="ns:GetProductSellingPagesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetPromotionRules">

+			<wsdl:input message="ns:GetPromotionRulesRequest"/>

+			<wsdl:output message="ns:GetPromotionRulesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetRecommendations">

+			<wsdl:input message="ns:GetRecommendationsRequest"/>

+			<wsdl:output message="ns:GetRecommendationsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetReturnURL">

+			<wsdl:input message="ns:GetReturnURLRequest"/>

+			<wsdl:output message="ns:GetReturnURLResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetRuName">

+			<wsdl:input message="ns:GetRuNameRequest"/>

+			<wsdl:output message="ns:GetRuNameResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetSearchResults">

+			<wsdl:input message="ns:GetSearchResultsRequest"/>

+			<wsdl:output message="ns:GetSearchResultsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetSearchResultsExpress">

+			<wsdl:input message="ns:GetSearchResultsExpressRequest"/>

+			<wsdl:output message="ns:GetSearchResultsExpressResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetSellerEvents">

+			<wsdl:input message="ns:GetSellerEventsRequest"/>

+			<wsdl:output message="ns:GetSellerEventsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetSellerList">

+			<wsdl:input message="ns:GetSellerListRequest"/>

+			<wsdl:output message="ns:GetSellerListResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetSellerPayments">

+			<wsdl:input message="ns:GetSellerPaymentsRequest"/>

+			<wsdl:output message="ns:GetSellerPaymentsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetSellerTransactions">

+			<wsdl:input message="ns:GetSellerTransactionsRequest"/>

+			<wsdl:output message="ns:GetSellerTransactionsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetStore">

+			<wsdl:input message="ns:GetStoreRequest"/>

+			<wsdl:output message="ns:GetStoreResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetStoreCategoryUpdateStatus">

+			<wsdl:input message="ns:GetStoreCategoryUpdateStatusRequest"/>

+			<wsdl:output message="ns:GetStoreCategoryUpdateStatusResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetStoreCustomPage">

+			<wsdl:input message="ns:GetStoreCustomPageRequest"/>

+			<wsdl:output message="ns:GetStoreCustomPageResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetStoreOptions">

+			<wsdl:input message="ns:GetStoreOptionsRequest"/>

+			<wsdl:output message="ns:GetStoreOptionsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetStorePreferences">

+			<wsdl:input message="ns:GetStorePreferencesRequest"/>

+			<wsdl:output message="ns:GetStorePreferencesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetSuggestedCategories">

+			<wsdl:input message="ns:GetSuggestedCategoriesRequest"/>

+			<wsdl:output message="ns:GetSuggestedCategoriesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetTaxTable">

+			<wsdl:input message="ns:GetTaxTableRequest"/>

+			<wsdl:output message="ns:GetTaxTableResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetUser">

+			<wsdl:input message="ns:GetUserRequest"/>

+			<wsdl:output message="ns:GetUserResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetUserContactDetails">

+			<wsdl:input message="ns:GetUserContactDetailsRequest"/>

+			<wsdl:output message="ns:GetUserContactDetailsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetUserDisputes">

+			<wsdl:input message="ns:GetUserDisputesRequest"/>

+			<wsdl:output message="ns:GetUserDisputesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetUserPreferences">

+			<wsdl:input message="ns:GetUserPreferencesRequest"/>

+			<wsdl:output message="ns:GetUserPreferencesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetWantItNowPost">

+			<wsdl:input message="ns:GetWantItNowPostRequest"/>

+			<wsdl:output message="ns:GetWantItNowPostResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GetWantItNowSearchResults">

+			<wsdl:input message="ns:GetWantItNowSearchResultsRequest"/>

+			<wsdl:output message="ns:GetWantItNowSearchResultsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GeteBayDetails">

+			<wsdl:input message="ns:GeteBayDetailsRequest"/>

+			<wsdl:output message="ns:GeteBayDetailsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="GeteBayOfficialTime">

+			<wsdl:input message="ns:GeteBayOfficialTimeRequest"/>

+			<wsdl:output message="ns:GeteBayOfficialTimeResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="IssueRefund">

+			<wsdl:input message="ns:IssueRefundRequest"/>

+			<wsdl:output message="ns:IssueRefundResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="LeaveFeedback">

+			<wsdl:input message="ns:LeaveFeedbackRequest"/>

+			<wsdl:output message="ns:LeaveFeedbackResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="PlaceOffer">

+			<wsdl:input message="ns:PlaceOfferRequest"/>

+			<wsdl:output message="ns:PlaceOfferResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="RelistItem">

+			<wsdl:input message="ns:RelistItemRequest"/>

+			<wsdl:output message="ns:RelistItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="RemoveFromWatchList">

+			<wsdl:input message="ns:RemoveFromWatchListRequest"/>

+			<wsdl:output message="ns:RemoveFromWatchListResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="RespondToBestOffer">

+			<wsdl:input message="ns:RespondToBestOfferRequest"/>

+			<wsdl:output message="ns:RespondToBestOfferResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="RespondToFeedback">

+			<wsdl:input message="ns:RespondToFeedbackRequest"/>

+			<wsdl:output message="ns:RespondToFeedbackResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="RespondToWantItNowPost">

+			<wsdl:input message="ns:RespondToWantItNowPostRequest"/>

+			<wsdl:output message="ns:RespondToWantItNowPostResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseCheckoutStatus">

+			<wsdl:input message="ns:ReviseCheckoutStatusRequest"/>

+			<wsdl:output message="ns:ReviseCheckoutStatusResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseItem">

+			<wsdl:input message="ns:ReviseItemRequest"/>

+			<wsdl:output message="ns:ReviseItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseLiveAuctionItem">

+			<wsdl:input message="ns:ReviseLiveAuctionItemRequest"/>

+			<wsdl:output message="ns:ReviseLiveAuctionItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseMyMessages">

+			<wsdl:input message="ns:ReviseMyMessagesRequest"/>

+			<wsdl:output message="ns:ReviseMyMessagesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseMyMessagesFolders">

+			<wsdl:input message="ns:ReviseMyMessagesFoldersRequest"/>

+			<wsdl:output message="ns:ReviseMyMessagesFoldersResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SellerReverseDispute">

+			<wsdl:input message="ns:SellerReverseDisputeRequest"/>

+			<wsdl:output message="ns:SellerReverseDisputeResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SendInvoice">

+			<wsdl:input message="ns:SendInvoiceRequest"/>

+			<wsdl:output message="ns:SendInvoiceResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetNotificationPreferences">

+			<wsdl:input message="ns:SetNotificationPreferencesRequest"/>

+			<wsdl:output message="ns:SetNotificationPreferencesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetPictureManagerDetails">

+			<wsdl:input message="ns:SetPictureManagerDetailsRequest"/>

+			<wsdl:output message="ns:SetPictureManagerDetailsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetPromotionRules">

+			<wsdl:input message="ns:SetPromotionRulesRequest"/>

+			<wsdl:output message="ns:SetPromotionRulesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetReturnURL">

+			<wsdl:input message="ns:SetReturnURLRequest"/>

+			<wsdl:output message="ns:SetReturnURLResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetStore">

+			<wsdl:input message="ns:SetStoreRequest"/>

+			<wsdl:output message="ns:SetStoreResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetStoreCategories">

+			<wsdl:input message="ns:SetStoreCategoriesRequest"/>

+			<wsdl:output message="ns:SetStoreCategoriesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetStoreCustomPage">

+			<wsdl:input message="ns:SetStoreCustomPageRequest"/>

+			<wsdl:output message="ns:SetStoreCustomPageResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetStorePreferences">

+			<wsdl:input message="ns:SetStorePreferencesRequest"/>

+			<wsdl:output message="ns:SetStorePreferencesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetTaxTable">

+			<wsdl:input message="ns:SetTaxTableRequest"/>

+			<wsdl:output message="ns:SetTaxTableResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetUserNotes">

+			<wsdl:input message="ns:SetUserNotesRequest"/>

+			<wsdl:output message="ns:SetUserNotesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="SetUserPreferences">

+			<wsdl:input message="ns:SetUserPreferencesRequest"/>

+			<wsdl:output message="ns:SetUserPreferencesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="ValidateTestUserRegistration">

+			<wsdl:input message="ns:ValidateTestUserRegistrationRequest"/>

+			<wsdl:output message="ns:ValidateTestUserRegistrationResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="VerifyAddItem">

+			<wsdl:input message="ns:VerifyAddItemRequest"/>

+			<wsdl:output message="ns:VerifyAddItemResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="VerifyAddSecondChanceItem">

+			<wsdl:input message="ns:VerifyAddSecondChanceItemRequest"/>

+			<wsdl:output message="ns:VerifyAddSecondChanceItemResponse"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:binding name="eBayAPISoapBinding" type="ns:eBayAPIInterface">	

+	<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+			

+		<wsdl:operation name="AddDispute">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddDisputeResponse">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddLiveAuctionItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddMemberMessage">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddMemberMessageAAQToPartner">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddMemberMessageRTQ">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddMemberMessagesAAQToBidder">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddOrder">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddSecondChanceItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddToItemDescription">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddToWatchList">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AddTransactionConfirmationItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="ApproveLiveAuctionBidders">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="CompleteSale">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="DeleteMyMessages">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="EndItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="FetchToken">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetAccount">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetAdFormatLeads">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetAllBidders">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetApiAccessRules">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetAttributesCS">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetAttributesXSL">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetBestOffers">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetBidderList">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategories">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategory2CS">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategory2FinanceOffer">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategoryFeatures">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategoryListings">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetCategoryMappings">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetCharities">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetContextualKeywords">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetCrossPromotions">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetDescriptionTemplates">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetDispute">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetFeedback">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetFinanceOffers">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetHighBidders">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetItemRecommendations">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetItemShipping">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetItemTransactions">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetItemsAwaitingFeedback">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetLiveAuctionBidders">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetLiveAuctionCatalogDetails">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetMemberMessages">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyMessages">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyeBay">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyeBayBuying">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyeBayReminders">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetMyeBaySelling">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetNotificationPreferences">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetNotificationsUsage">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetOrderTransactions">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetOrders">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetPictureManagerDetails">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetPictureManagerOptions">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetPopularKeywords">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductFamilyMembers">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductFinder">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductFinderXSL">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductSearchPage">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductSearchResults">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetProductSellingPages">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetPromotionRules">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetRecommendations">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetReturnURL">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetRuName">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetSearchResults">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetSearchResultsExpress">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetSellerEvents">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetSellerList">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetSellerPayments">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetSellerTransactions">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetStore">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetStoreCategoryUpdateStatus">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetStoreCustomPage">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetStoreOptions">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetStorePreferences">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetSuggestedCategories">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetTaxTable">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetUser">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetUserContactDetails">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetUserDisputes">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetUserPreferences">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetWantItNowPost">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GetWantItNowSearchResults">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GeteBayDetails">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="GeteBayOfficialTime">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="IssueRefund">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="LeaveFeedback">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="PlaceOffer">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="RelistItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="RemoveFromWatchList">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="RespondToBestOffer">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="RespondToFeedback">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="RespondToWantItNowPost">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseCheckoutStatus">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseLiveAuctionItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseMyMessages">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="ReviseMyMessagesFolders">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SellerReverseDispute">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SendInvoice">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetNotificationPreferences">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetPictureManagerDetails">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetPromotionRules">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetReturnURL">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetStore">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetStoreCategories">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetStoreCustomPage">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetStorePreferences">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetTaxTable">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetUserNotes">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="SetUserPreferences">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="ValidateTestUserRegistration">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="VerifyAddItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="VerifyAddSecondChanceItem">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:header use="literal" message="ns:RequesterCredentials" part="RequesterCredentials"/>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:service name="eBayAPIInterfaceService">

+			<wsdl:documentation>Version 471</wsdl:documentation>

+			<wsdl:port binding="ns:eBayAPISoapBinding" name="eBayAPI">

+				<wsdlsoap:address location="https://api.ebay.com/wsapi"/>

+			</wsdl:port>

+	</wsdl:service>

+</wsdl:definitions>

+	
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/enterprise.wsdl b/rampart_1_1/modules/integration/test-resources/enterprise.wsdl
new file mode 100644
index 0000000..97e95f0
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/enterprise.wsdl
@@ -0,0 +1,3832 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+Salesforce.com Enterprise Web Services API Version 7.0 
+Generated on 2006-04-19 00:28:06 +0000.
+
+Copyright 1999-2006 salesforce.com, inc.
+All Rights Reserved
+-->
+
+<definitions targetNamespace="urn:enterprise.soap.sforce.com"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"

+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+             xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+             xmlns:tns="urn:enterprise.soap.sforce.com"

+             xmlns:fns="urn:fault.enterprise.soap.sforce.com"

+             xmlns:ens="urn:sobject.enterprise.soap.sforce.com">
+    <types>
+
+        <schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:sobject.enterprise.soap.sforce.com">
+
+            <import namespace="urn:enterprise.soap.sforce.com"/>
+
+
+            <!-- Base sObject (abstract) -->

+            <complexType name="sObject">

+                <sequence>

+                    <element name="fieldsToNull"       type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>

+                    <element name="Id"                 type="tns:ID" nillable="true" minOccurs="0" maxOccurs="1" />

+                </sequence>

+            </complexType>
+            <complexType name="Account">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="ANewField__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="AccountNumber" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Active__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="AnnualRevenue" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="BillingCity" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="BillingCountry" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="BillingPostalCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="BillingState" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="BillingStreet" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CustomerPriority__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Fax" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Foo__c" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Industry" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="NumberOfEmployees" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberofLocations__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Ownership" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ParentId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Phone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Rating" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SLAExpirationDate__c" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="SLASerialNumber__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SLA__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ShippingCity" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ShippingCountry" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ShippingPostalCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ShippingState" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ShippingStreet" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Sic" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Site" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TickerSymbol" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UpsellOpportunity__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Website" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="guid__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Account" type="ens:Account"/>

+
+            <complexType name="AccountContactRole">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ContactId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPrimary" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Role" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="AccountContactRole" type="ens:AccountContactRole"/>

+
+            <complexType name="AccountPartner">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountFromId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="AccountToId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPrimary" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Role" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="AccountPartner" type="ens:AccountPartner"/>

+
+            <complexType name="AccountShare">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountAccessLevel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CaseAccessLevel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityAccessLevel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RowCause" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UserOrGroupId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="AccountShare" type="ens:AccountShare"/>

+
+            <complexType name="AccountTeamMember">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TeamMemberRole" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UserId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="AccountTeamMember" type="ens:AccountTeamMember"/>

+
+            <complexType name="Approval">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="ApproveComment" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ParentId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="RequestComment" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Approval" type="ens:Approval"/>

+
+            <complexType name="Asset">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ContactId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="InstallDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="IsCompetitorProduct" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Price" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="Product2Id" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="PurchaseDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="Quantity" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="SerialNumber" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="UsageEndDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Asset" type="ens:Asset"/>

+
+            <complexType name="AssignmentRule">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Active" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RuleType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="AssignmentRule" type="ens:AssignmentRule"/>

+
+            <complexType name="Attachment">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Body" nillable="true" minOccurs="0" type="xsd:base64Binary"/>
+                        <element name="BodyLength" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="ContentType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPrivate" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ParentId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Attachment" type="ens:Attachment"/>

+
+            <complexType name="BusinessHours">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="FridayEnd" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FridayStart" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MondayEnd" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MondayStart" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SaturdayEnd" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SaturdayStart" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SundayEnd" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SundayStart" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="ThursdayEnd" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ThursdayStart" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="TuesdayEnd" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="TuesdayStart" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="WednesdayEnd" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="WednesdayStart" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="BusinessHours" type="ens:BusinessHours"/>

+
+            <complexType name="BusinessProcess">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TableEnumOrId" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="BusinessProcess" type="ens:BusinessProcess"/>

+
+            <complexType name="Campaign">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="ActualCost" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="AmountAllOpportunities" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="AmountWonOpportunities" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="BudgetedCost" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="CMP_SYSTM_001__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CPM__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Creative_Director__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="EndDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="ExpectedResponse" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="ExpectedRevenue" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="Geography__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="List_Vendor__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="NumberOfContacts" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberOfConvertedLeads" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberOfLeads" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberOfOpportunities" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberOfResponses" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberOfWonOpportunities" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberSent" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Publication_Name__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="StartDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Campaign" type="ens:Campaign"/>

+
+            <complexType name="CampaignMember">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CampaignId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ContactId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="FirstRespondedDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="HasResponded" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LeadId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="CampaignMember" type="ens:CampaignMember"/>

+
+            <complexType name="Can__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Account__c" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Can__c" type="ens:Can__c"/>

+
+            <complexType name="Case">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AssetId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CaseNumber" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ClosedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="ClosedOnCreate" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="ContactId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="EngineeringReqNumber__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsClosed" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsEscalated" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsVisibleInCss" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Origin" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="PotentialLiability__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Priority" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Product__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Reason" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RecordTypeId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SLAViolation__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Subject" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SuppliedCompany" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SuppliedEmail" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SuppliedName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SuppliedPhone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="eng_rev__c" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="extId1__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="extId2__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Case" type="ens:Case"/>

+
+            <complexType name="CaseComment">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CommentBody" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPublished" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="ParentId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="CaseComment" type="ens:CaseComment"/>

+
+            <complexType name="CaseHistory">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CaseId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Field" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="NewValue" nillable="true" minOccurs="0" type="xsd:anyType"/>
+                        <element name="OldValue" nillable="true" minOccurs="0" type="xsd:anyType"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="CaseHistory" type="ens:CaseHistory"/>

+
+            <complexType name="CaseShare">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CaseAccessLevel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CaseId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="RowCause" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UserOrGroupId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="CaseShare" type="ens:CaseShare"/>

+
+            <complexType name="CaseSolution">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CaseId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="SolutionId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="CaseSolution" type="ens:CaseSolution"/>

+
+            <complexType name="CaseStatus">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsClosed" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsDefault" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MasterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="CaseStatus" type="ens:CaseStatus"/>

+
+            <complexType name="Collateral_Request_Object__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Date__c" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="Delivery_Method__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Document__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FK_Contact2__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FK_Contact__c" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Personal_Message__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Status__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Subject__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Collateral_Request_Object__c" type="ens:Collateral_Request_Object__c"/>

+
+            <complexType name="Contact">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="AssistantName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="AssistantPhone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Birthdate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Department" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DoNotCall" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Email" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Fax" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FirstName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Golf__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="HasOptedOutOfEmail" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="HomePhone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Languages__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastCURequestDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastCUUpdateDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LeadSource" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Level__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MSP__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MailingCity" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MailingCountry" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MailingPostalCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MailingState" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MailingStreet" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MobilePhone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OtherCity" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OtherCountry" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OtherPhone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OtherPostalCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OtherState" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OtherStreet" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Phone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ReportsToId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Salutation" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Title" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Contact" type="ens:Contact"/>

+
+            <complexType name="Contract">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ActivatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ActivatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="BillingCity" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="BillingCountry" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="BillingPostalCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="BillingState" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="BillingStreet" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CompanySignedDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="CompanySignedId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ContractNumber" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ContractTerm" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CustomerSignedDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="CustomerSignedId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CustomerSignedTitle" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="EndDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="LastApprovedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OwnerExpirationNotice" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SpecialTerms" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="StartDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="StatusCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Contract" type="ens:Contract"/>

+
+            <complexType name="ContractContactRole">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="ContactId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ContractId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPrimary" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Role" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="ContractContactRole" type="ens:ContractContactRole"/>

+
+            <complexType name="ContractStatus">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsDefault" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MasterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="StatusCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="ContractStatus" type="ens:ContractStatus"/>

+
+            <complexType name="CurrencyType">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="ConversionRate" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="DecimalPlaces" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsCorporate" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="CurrencyType" type="ens:CurrencyType"/>

+
+            <complexType name="Distribution_Lot__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Avail_Capacity__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="Capacity__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="City__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Country__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Email__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Facility_Manager__c" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Fax__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Phone__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Primary_Contact__c" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Region__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Secondary_Contact__c" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="State__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Street_Address_1__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Street_Address_2__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Zip_Code__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Distribution_Lot__c" type="ens:Distribution_Lot__c"/>

+
+            <complexType name="Document">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AuthorId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Body" nillable="true" minOccurs="0" type="xsd:base64Binary"/>
+                        <element name="BodyLength" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="ContentType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FolderId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="IsInternalUseOnly" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsPublic" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Keywords" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Url" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Document" type="ens:Document"/>

+
+            <complexType name="EntityHistory">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="FieldName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="NewValue" nillable="true" minOccurs="0" type="xsd:anyType"/>
+                        <element name="OldValue" nillable="true" minOccurs="0" type="xsd:anyType"/>
+                        <element name="ParentId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ParentSobjectType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="EntityHistory" type="ens:EntityHistory"/>

+
+            <complexType name="Event">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ActivityDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="ActivityDateTime" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="ChandlerId__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DurationInMinutes" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="IsAllDayEvent" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsChild" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsGroupEvent" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsPrivate" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsRecurrence" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Location" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="RecurrenceActivityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="RecurrenceDayOfMonth" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="RecurrenceDayOfWeekMask" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="RecurrenceEndDateOnly" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="RecurrenceInstance" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RecurrenceInterval" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="RecurrenceMonthOfYear" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RecurrenceStartDateTime" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="RecurrenceTimeZoneSidKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RecurrenceType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ShowAs" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Subject" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="WhatId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="WhoId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Event" type="ens:Event"/>

+
+            <complexType name="EventAttendee">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AttendeeId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="EventId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="RespondedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Response" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="EventAttendee" type="ens:EventAttendee"/>

+
+            <complexType name="ExtendedProducts__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Area__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FK_ProductCode__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Fuel__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Install__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ProdName__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Region__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SLA__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Usage__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="ExtendedProducts__c" type="ens:ExtendedProducts__c"/>

+
+            <complexType name="FiscalYearSettings">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="IsStandardYear" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="PeriodId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="PeriodLabelScheme" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="PeriodPrefix" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="QuarterLabelScheme" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="QuarterPrefix" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="WeekLabelScheme" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="YearType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="FiscalYearSettings" type="ens:FiscalYearSettings"/>

+
+            <complexType name="Folder">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccessType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsReadonly" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Folder" type="ens:Folder"/>

+
+            <complexType name="Foo__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Foo__c" type="ens:Foo__c"/>

+
+            <complexType name="Group">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Email" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="RelatedId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Group" type="ens:Group"/>

+
+            <complexType name="GroupMember">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="GroupId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="UserOrGroupId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="GroupMember" type="ens:GroupMember"/>

+
+            <complexType name="Inventory__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Distribution_Lot__c" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Qty_Available__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="Qty_Committed__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Inventory__c" type="ens:Inventory__c"/>

+
+            <complexType name="Lead">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AnnualRevenue" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="City" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Company" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ContactMSP__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ConvertedAccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ConvertedContactId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ConvertedDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="ConvertedOpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Country" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CurrentGenerators__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DoNotCall" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Email" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Fax" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FirstName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="HasOptedOutOfEmail" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Industry" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsConverted" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsUnreadByOwner" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LeadSource" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MobilePhone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="NumberOfEmployees" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberofLocations__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="OpptyMSP__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Phone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="PostalCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Primary__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ProductInterest__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Rating" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SICCode__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Salutation" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="State" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Street" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Title" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Website" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Lead" type="ens:Lead"/>

+
+            <complexType name="LeadShare">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LeadAccessLevel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LeadId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="RowCause" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UserOrGroupId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="LeadShare" type="ens:LeadShare"/>

+
+            <complexType name="LeadStatus">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsConverted" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsDefault" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MasterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="LeadStatus" type="ens:LeadStatus"/>

+
+            <complexType name="MailmergeTemplate">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Body" nillable="true" minOccurs="0" type="xsd:base64Binary"/>
+                        <element name="BodyLength" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Filename" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastUsedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="MailmergeTemplate" type="ens:MailmergeTemplate"/>

+
+            <complexType name="Metrics__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Amount__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="As_of__c" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Department__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Label__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Note__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Value__c" nillable="true" minOccurs="0" type="xsd:double"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Metrics__c" type="ens:Metrics__c"/>

+
+            <complexType name="My_Tab__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Account__c" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Great_Customer__c" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="My_Tab_Email_Address__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="My_Tab_Phone_Number__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="My_Tab_Web_Address__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="My_Tab__c" type="ens:My_Tab__c"/>

+
+            <complexType name="Note">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Body" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPrivate" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ParentId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Title" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Note" type="ens:Note"/>

+
+            <complexType name="Opportunity">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Amount" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="CampaignId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CloseDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DeliveryInstallationStatus__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ExpectedRevenue" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="ForecastCategory" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="HasOpportunityLineItem" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsClosed" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsPrivate" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsWon" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LeadSource" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MSP__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="NextStep" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OrderNumber__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Pricebook2Id" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="PricebookId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Probability" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="RecordTypeId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="StageName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TotalOpportunityQuantity" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="TrackingNumber__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="img__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Opportunity" type="ens:Opportunity"/>

+
+            <complexType name="OpportunityCompetitor">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CompetitorName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Strengths" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Weaknesses" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityCompetitor" type="ens:OpportunityCompetitor"/>

+
+            <complexType name="OpportunityContactRole">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="ContactId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPrimary" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Role" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityContactRole" type="ens:OpportunityContactRole"/>

+
+            <complexType name="OpportunityHistory">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Amount" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="CloseDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ExpectedRevenue" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="ForecastCategory" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Probability" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="StageName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityHistory" type="ens:OpportunityHistory"/>

+
+            <complexType name="OpportunityLineItem">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="HasQuantitySchedule" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="HasRevenueSchedule" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="ListPrice" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="PricebookEntryId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ProductId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Quantity" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="ServiceDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TotalPrice" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="UnitPrice" nillable="true" minOccurs="0" type="xsd:double"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityLineItem" type="ens:OpportunityLineItem"/>

+
+            <complexType name="OpportunityLineItemSchedule">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityLineItemId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Quantity" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="Revenue" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="ScheduleDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityLineItemSchedule" type="ens:OpportunityLineItemSchedule"/>

+
+            <complexType name="OpportunityPartner">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountToId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPrimary" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Role" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityPartner" type="ens:OpportunityPartner"/>

+
+            <complexType name="OpportunityShare">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityAccessLevel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="RowCause" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UserOrGroupId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityShare" type="ens:OpportunityShare"/>

+
+            <complexType name="OpportunityStage">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="DefaultProbability" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ForecastCategory" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsClosed" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsWon" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MasterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityStage" type="ens:OpportunityStage"/>

+
+            <complexType name="OpportunityTeamMember">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TeamMemberRole" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UserId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="OpportunityTeamMember" type="ens:OpportunityTeamMember"/>

+
+            <complexType name="Organization">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="City" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ComplianceBccEmail" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Country" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="DefaultAccountAndContactAccess" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DefaultCalendarAccess" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DefaultCaseAccess" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DefaultLeadAccess" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DefaultLocaleSidKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DefaultOpportunityAccess" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DefaultPricebookAccess" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DelegatedAuthenticationServiceUrl" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Division" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Fax" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FiscalYearStartMonth" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="LanguageLocaleKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MaxActionsPerRule" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="MaxRulesPerEntity" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Phone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="PostalCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="PrimaryContact" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ReceivesAdminInfoEmails" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="ReceivesInfoEmails" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="State" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Street" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="UiSkin" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UsesStartDateAsFiscalYearName" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="WebToCaseDefaultOrigin" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Organization" type="ens:Organization"/>

+
+            <complexType name="Partner">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountFromId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="AccountToId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsPrimary" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Role" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Partner" type="ens:Partner"/>

+
+            <complexType name="PartnerRole">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MasterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ReverseRole" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="PartnerRole" type="ens:PartnerRole"/>

+
+            <complexType name="Period">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="EndDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="IsForecastPeriod" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Number" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="PeriodLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="QuarterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="StartDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Period" type="ens:Period"/>

+
+            <complexType name="Pricebook">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Pricebook" type="ens:Pricebook"/>

+
+            <complexType name="Pricebook2">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsStandard" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Pricebook2" type="ens:Pricebook2"/>

+
+            <complexType name="PricebookEntry">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Pricebook2Id" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Product2Id" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ProductCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="UnitPrice" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="UseStandardPrice" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="PricebookEntry" type="ens:PricebookEntry"/>

+
+            <complexType name="Product">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CanUseQuantitySchedule" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="CanUseRevenueSchedule" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="DefaultPrice" nillable="true" minOccurs="0" type="xsd:double"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="NumberOfQuantityInstallments" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberOfRevenueInstallments" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="PricebookId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ProductCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="QuantityInstallmentPeriod" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="QuantityScheduleType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RevenueInstallmentPeriod" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RevenueScheduleType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Product" type="ens:Product"/>

+
+            <complexType name="Product2">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CanUseQuantitySchedule" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="CanUseRevenueSchedule" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Capacity__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Container_Purpose__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Container_Type__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Dimension__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Extended_Description__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Family" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="NumberOfQuantityInstallments" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="NumberOfRevenueInstallments" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="ProductCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="QuantityInstallmentPeriod" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="QuantityScheduleType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RevenueInstallmentPeriod" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RevenueScheduleType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Product2" type="ens:Product2"/>

+
+            <complexType name="Profile">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsSsoEnabled" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="PermissionsApiUserOnly" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsConvertLeads" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsCreateMultiforce" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsCustomizeApplication" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsDisableNotifications" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsEditActivatedOrders" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsEditEvent" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsEditForecast" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsEditOppLineItemUnitPrice" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsEditPublicDocuments" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsEditReadonlyFields" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsEditTask" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsImportLeads" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsInstallMultiforce" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageCases" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageCategories" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageCssUsers" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageDashboards" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageLeads" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageSelfService" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageSolutions" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageTerritories" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsManageUsers" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsModifyAllData" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsPasswordNeverExpires" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsPublishMultiforce" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsRunReports" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsSendSitRequests" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsTransferAnyEntity" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsTransferAnyLead" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsUseTeamReassignWizards" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsViewAgentConsole" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsViewAllData" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="PermissionsViewSetup" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Profile" type="ens:Profile"/>

+
+            <complexType name="RecordType">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="BusinessProcessId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SobjectType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="RecordType" type="ens:RecordType"/>

+
+            <complexType name="Scontrol">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Binary" nillable="true" minOccurs="0" type="xsd:base64Binary"/>
+                        <element name="BodyLength" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Filename" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="HtmlWrapper" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Scontrol" type="ens:Scontrol"/>

+
+            <complexType name="SelfServiceUser">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="ContactId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Email" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FirstName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LanguageLocaleKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastLoginDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LocaleSidKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SuperUser" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TimeZoneSidKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Username" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="SelfServiceUser" type="ens:SelfServiceUser"/>

+
+            <complexType name="Solution">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Applicable_Region__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsPublished" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsPublishedInPublicKb" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsReviewed" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Primary_Audience__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="RecordTypeId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SolutionName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SolutionNote" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SolutionNumber" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Solution_Expiration_Date__c" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Solution" type="ens:Solution"/>

+
+            <complexType name="SolutionStatus">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsDefault" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsReviewed" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MasterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="SolutionStatus" type="ens:SolutionStatus"/>

+
+            <complexType name="Task">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="AccountId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ActivityDate" nillable="true" minOccurs="0" type="xsd:date"/>
+                        <element name="ChandlerId__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsClosed" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Priority" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Status" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Subject" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="WhatId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="WhoId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="Task" type="ens:Task"/>

+
+            <complexType name="TaskPriority">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsDefault" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsHighPriority" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MasterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="TaskPriority" type="ens:TaskPriority"/>

+
+            <complexType name="TaskStatus">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="IsClosed" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="IsDefault" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="MasterLabel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SortOrder" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="TaskStatus" type="ens:TaskStatus"/>

+
+            <complexType name="User">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="Alias" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="City" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CompanyName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Company_Officer__c" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Country" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="DefaultCurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Department" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Division" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Email" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="EmailEncodingKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="EmployeeNumber" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Fax" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="FirstName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LanguageLocaleKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastLoginDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastName" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LocaleSidKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="MobilePhone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OfflinePdaTrialExpirationDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OfflineTrialExpirationDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Phone" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="PostalCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ProfileId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ReceivesAdminInfoEmails" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="ReceivesInfoEmails" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Region__c" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="State" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Street" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TimeZoneSidKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Title" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UserPermissionsAvantgoUser" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="UserPermissionsMarketingUser" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="UserPermissionsOfflineUser" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="UserRoleId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="Username" nillable="true" minOccurs="0" type="xsd:string"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="User" type="ens:User"/>

+
+            <complexType name="UserRole">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CaseAccessForAccountOwner" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OpportunityAccessForAccountOwner" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ParentRoleId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="RollupDescription" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="UserRole" type="ens:UserRole"/>

+
+            <complexType name="UserTeamMember">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="OpportunityAccessLevel" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="TeamMemberRole" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="UserId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="UserTeamMember" type="ens:UserTeamMember"/>

+
+            <complexType name="WebLink">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="EncodingKey" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="HasMenubar" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="HasScrollbars" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="HasToolbar" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="Height" nillable="true" minOccurs="0" type="xsd:int"/>
+                        <element name="IsResizable" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="LinkType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OpenType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="PageOrSobjectType" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Position" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="ScontrolId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="ShowsLocation" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="ShowsStatus" nillable="true" minOccurs="0" type="xsd:boolean"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Url" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="Width" nillable="true" minOccurs="0" type="xsd:int"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="WebLink" type="ens:WebLink"/>

+
+            <complexType name="apiTest__c">
+                <complexContent>
+                    <extension base="ens:sObject">
+                        <sequence>
+                        <element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="CurrencyIsoCode" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        <element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
+                        <element name="OwnerId" nillable="true" minOccurs="0" type="tns:ID"/>
+                        <element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <element name="apiTest__c" type="ens:apiTest__c"/>

+
+
+        </schema>
+
+        <schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:enterprise.soap.sforce.com">
+
+            <import namespace="urn:sobject.enterprise.soap.sforce.com"/>
+
+            <!-- Our simple ID Type -->

+            <simpleType name="ID">

+                <restriction base="xsd:string">

+                    <length value="18"/>

+                    <pattern value='[a-zA-Z0-9]{18}'/>

+                </restriction>

+            </simpleType>
+
+            <simpleType name="QueryLocator">
+                <restriction base="xsd:string"/>
+            </simpleType>
+
+            <!-- Shared Result Types -->
+            <complexType name="QueryResult">
+                <sequence>
+                    <element name="done"         type="xsd:boolean"/>
+                    <element name="queryLocator" type="tns:QueryLocator" nillable="true"/>
+                    <element name="records"      type="ens:sObject" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="size"         type="xsd:int"/>
+                </sequence>
+            </complexType>
+
+
+
+            <!-- Search Result -->
+            <complexType name="SearchResult">
+                <sequence>
+                    <element name="searchRecords"  minOccurs="0" maxOccurs="unbounded" type="tns:SearchRecord"/>
+                    <element name="sforceReserved" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="SearchRecord">
+                <sequence>
+                    <element name="record" type="ens:sObject"/>
+                </sequence>
+            </complexType>
+
+            <!-- GetUpdated Result -->
+            <complexType name="GetUpdatedResult">
+                <sequence>
+                    <element name="ids" minOccurs="0" maxOccurs="unbounded" type="tns:ID"/>
+                    <element name="sforceReserved" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+                </sequence>
+            </complexType>
+
+            <!-- GetDeleted Result -->
+            <complexType name="GetDeletedResult">
+                <sequence>
+                    <element name="deletedRecords" minOccurs="0" maxOccurs="unbounded" type="tns:DeletedRecord"/>
+                    <element name="sforceReserved" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="DeletedRecord">
+                <sequence>
+                    <element name="deletedDate" type="xsd:dateTime"/>
+                    <element name="id"          type="tns:ID"/>
+                </sequence>
+            </complexType>
+
+
+            <complexType name="GetServerTimestampResult">
+                <sequence>
+                    <element name="timestamp" type="xsd:dateTime"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="SetPasswordResult">
+            </complexType>
+
+            <complexType name="ResetPasswordResult">
+                <sequence>
+                    <element name="password" type="xsd:string"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="GetUserInfoResult">
+                <sequence>
+                    <element name="accessibilityMode"          type="xsd:boolean"/>
+                    <element name="currencySymbol"             type="xsd:string" nillable="true"/>
+                    <element name="organizationId"             type="tns:ID"/>
+                    <element name="organizationMultiCurrency"  type="xsd:boolean"/>
+                    <element name="organizationName"           type="xsd:string"/>
+                    <element name="userDefaultCurrencyIsoCode" type="xsd:string" nillable="true"/>
+                    <element name="userEmail"                  type="xsd:string"/>
+                    <element name="userFullName"               type="xsd:string"/>
+                    <element name="userId"                     type="tns:ID"/>
+                    <element name="userLanguage"               type="xsd:string"/>
+                    <element name="userLocale"                 type="xsd:string"/>
+                    <element name="userTimeZone"               type="xsd:string"/>
+                    <element name="userUiSkin"                 type="xsd:string"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="LoginResult">
+                <sequence>
+                    <element name="passwordExpired"  type="xsd:boolean" />
+                    <element name="serverUrl"        type="xsd:string" nillable="true"/>
+                    <element name="sessionId"        type="xsd:string" nillable="true"/>
+
+                    <element name="userId"           type="tns:ID" nillable="true"/>
+                    <element name="userInfo"         type="tns:GetUserInfoResult"/>
+                </sequence>
+            </complexType>
+
+            <simpleType name="StatusCode">
+                <restriction base="xsd:string">
+                    <enumeration value="ASSIGNEE_TYPE_REQUIRED"/>
+                    <enumeration value="BAD_CUSTOM_ENTITY_PARENT_DOMAIN"/>
+                    <enumeration value="CANNOT_CASCADE_PRODUCT_ACTIVE"/>
+                    <enumeration value="CANNOT_DEACTIVATE_DIVISION"/>
+                    <enumeration value="CANNOT_DISABLE_LAST_ADMIN"/>
+                    <enumeration value="CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY"/>
+                    <enumeration value="CANNOT_REPARENT_RECORD"/>
+                    <enumeration value="CANNOT_RESOLVE_NAME"/>
+                    <enumeration value="CANNOT_UPDATE_CONVERTED_LEAD"/>
+                    <enumeration value="CANT_DISABLE_CORP_CURRENCY"/>
+                    <enumeration value="CANT_UNSET_CORP_CURRENCY"/>
+                    <enumeration value="CHILD_SHARE_FAILS_PARENT"/>
+                    <enumeration value="CIRCULAR_DEPENDENCY"/>
+                    <enumeration value="CUSTOM_ENTITY_OR_FIELD_LIMIT"/>
+                    <enumeration value="CUSTOM_FIELD_INDEX_LIMIT_EXCEEDED"/>
+                    <enumeration value="CUSTOM_INDEX_EXISTS"/>
+                    <enumeration value="CUSTOM_LINK_LIMIT_EXCEEDED"/>
+                    <enumeration value="CUSTOM_TAB_LIMIT_EXCEEDED"/>
+                    <enumeration value="DELETE_FAILED"/>
+                    <enumeration value="DELETE_REQUIRED_ON_CASCADE"/>
+                    <enumeration value="DEPENDENCY_EXISTS"/>
+                    <enumeration value="DUPLICATE_CASE_SOLUTION"/>
+                    <enumeration value="DUPLICATE_CUSTOM_TAB_MOTIF"/>
+                    <enumeration value="DUPLICATE_DEVELOPER_NAME"/>
+                    <enumeration value="DUPLICATE_EXTERNAL_ID"/>
+                    <enumeration value="DUPLICATE_MASTER_LABEL"/>
+                    <enumeration value="DUPLICATE_USERNAME"/>
+                    <enumeration value="DUPLICATE_VALUE"/>
+                    <enumeration value="ENTITY_FAILED_IFLASTMODIFIED_ON_UPDATE"/>
+                    <enumeration value="ENTITY_IS_ARCHIVED"/>
+                    <enumeration value="ENTITY_IS_DELETED"/>
+                    <enumeration value="ENTITY_IS_LOCKED"/>
+                    <enumeration value="FAILED_ACTIVATION"/>
+                    <enumeration value="FIELD_INTEGRITY_EXCEPTION"/>
+                    <enumeration value="INACTIVE_OWNER_OR_USER"/>
+                    <enumeration value="INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY"/>
+                    <enumeration value="INSUFFICIENT_ACCESS_OR_READONLY"/>
+                    <enumeration value="INVALID_ACCESS_LEVEL"/>
+                    <enumeration value="INVALID_ARGUMENT_TYPE"/>
+                    <enumeration value="INVALID_ASSIGNEE_TYPE"/>
+                    <enumeration value="INVALID_ASSIGNMENT_RULE"/>
+                    <enumeration value="INVALID_BATCH_OPERATION"/>
+                    <enumeration value="INVALID_CREDIT_CARD_INFO"/>
+                    <enumeration value="INVALID_CROSS_REFERENCE_KEY"/>
+                    <enumeration value="INVALID_CROSS_REFERENCE_TYPE_FOR_FIELD"/>
+                    <enumeration value="INVALID_CURRENCY_CONV_RATE"/>
+                    <enumeration value="INVALID_CURRENCY_ISO"/>
+                    <enumeration value="INVALID_EMAIL_ADDRESS"/>
+                    <enumeration value="INVALID_EMPTY_KEY_OWNER"/>
+                    <enumeration value="INVALID_FIELD"/>
+                    <enumeration value="INVALID_FIELD_FOR_INSERT_UPDATE"/>
+                    <enumeration value="INVALID_FILTER_ACTION"/>
+                    <enumeration value="INVALID_ID_FIELD"/>
+                    <enumeration value="INVALID_INET_ADDRESS"/>
+                    <enumeration value="INVALID_LINEITEM_CLONE_STATE"/>
+                    <enumeration value="INVALID_OPERATION"/>
+                    <enumeration value="INVALID_OPERATOR"/>
+                    <enumeration value="INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST"/>
+                    <enumeration value="INVALID_STATUS"/>
+                    <enumeration value="INVALID_TYPE"/>
+                    <enumeration value="INVALID_TYPE_FOR_OPERATION"/>
+                    <enumeration value="INVALID_TYPE_ON_FIELD_IN_RECORD"/>
+                    <enumeration value="LAST_MODIFIED_SINCE_TOO_OLD"/>
+                    <enumeration value="LICENSE_LIMIT_EXCEEDED"/>
+                    <enumeration value="LIMIT_EXCEEDED"/>
+                    <enumeration value="MALFORMED_ID"/>
+                    <enumeration value="MAXIMUM_CCEMAILS_EXCEEDED"/>
+                    <enumeration value="MAXIMUM_DASHBOARD_COMPONENTS_EXCEEDED"/>
+                    <enumeration value="MAXIMUM_SIZE_OF_ATTACHMENT"/>
+                    <enumeration value="MAXIMUM_SIZE_OF_DOCUMENT"/>
+                    <enumeration value="MAX_ACTIONS_PER_RULE_EXCEEDED"/>
+                    <enumeration value="MAX_ACTIVE_RULES_EXCEEDED"/>
+                    <enumeration value="MAX_RULES_EXCEEDED"/>
+                    <enumeration value="MAX_RULE_ENTRIES_EXCEEDED"/>
+                    <enumeration value="MAX_TASK_DESCRIPTION_EXCEEEDED"/>
+                    <enumeration value="MAX_TM_RULES_EXCEEDED"/>
+                    <enumeration value="MISSING_ARGUMENT"/>
+                    <enumeration value="NONUNIQUE_SHIPPING_ADDRESS"/>
+                    <enumeration value="NUMBER_OUTSIDE_VALID_RANGE"/>
+                    <enumeration value="NUM_HISTORY_FIELDS_BY_SOBJECT_EXCEEDED"/>
+                    <enumeration value="PRIVATE_CONTACT_ON_ASSET"/>
+                    <enumeration value="REQUIRED_FIELD_MISSING"/>
+                    <enumeration value="SHARE_NEEDED_FOR_CHILD_OWNER"/>
+                    <enumeration value="STANDARD_PRICE_NOT_DEFINED"/>
+                    <enumeration value="STORAGE_LIMIT_EXCEEDED"/>
+                    <enumeration value="TABSET_LIMIT_EXCEEDED"/>
+                    <enumeration value="TEXT_DATA_OUTSIDE_SUPPORTED_CHARSET"/>
+                    <enumeration value="TOO_MANY_ENUM_VALUE"/>
+                    <enumeration value="TRANSFER_REQUIRES_READ"/>
+                    <enumeration value="UNKNOWN_EXCEPTION"/>
+                    <enumeration value="UNSPECIFIED_EMAIL_ADDRESS"/>
+                </restriction>
+            </simpleType>
+
+
+            <complexType name="Error">
+                <sequence>
+                    <element name="fields"     type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="message"    type="xsd:string"/>
+                    <element name="statusCode" type="tns:StatusCode"/>
+                </sequence>
+            </complexType>
+            
+            <complexType name="SaveResult">
+                <sequence>
+                    <element name="errors"    type="tns:Error" nillable="true" minOccurs="0" maxOccurs="unbounded"/>     
+                    <element name="id"        type="tns:ID" nillable="true"/>
+                    <element name="success"   type="xsd:boolean"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="UpsertResult">
+                <sequence>
+                    <element name="created"  type="xsd:boolean"/>
+                    <element name="errors"    type="tns:Error" nillable="true" minOccurs="0" maxOccurs="unbounded"/>     
+                    <element name="id"       type="tns:ID" nillable="true"/>
+                    <element name="success"   type="xsd:boolean"/>
+                </sequence>
+            </complexType>
+            
+            <complexType name="DeleteResult">
+                <sequence>
+                    <element name="errors"    type="tns:Error" nillable="true" minOccurs="0" maxOccurs="unbounded"/>     
+                    <element name="id"        type="tns:ID" nillable="true"/>
+                    <element name="success"   type="xsd:boolean"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="LeadConvert">
+                <sequence>
+                    <element name="accountId"              type="tns:ID" nillable="true"/>
+                    <element name="contactId"              type="tns:ID" nillable="true"/>
+                    <element name="convertedStatus"        type="xsd:string"/>
+                    <element name="doNotCreateOpportunity" type="xsd:boolean"/>
+                    <element name="leadId"                 type="tns:ID"/>
+                    <element name="opportunityName"        type="xsd:string" nillable="true"/>
+                    <element name="overwriteLeadSource"    type="xsd:boolean"/>
+                    <element name="ownerId"                type="tns:ID"     nillable="true"/>
+                    <element name="sendNotificationEmail"  type="xsd:boolean"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="LeadConvertResult">
+                <sequence>
+                    <element name="accountId"     type="tns:ID" nillable="true"/>
+                    <element name="contactId"     type="tns:ID" nillable="true"/>
+                    <element name="errors"        type="tns:Error" nillable="true" minOccurs="0" maxOccurs="unbounded"/>     
+                    <element name="leadId"        type="tns:ID" nillable="true"/>
+                    <element name="opportunityId" type="tns:ID" nillable="true"/>
+                    <element name="success"       type="xsd:boolean"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="DescribeSObjectResult">
+                <sequence>
+                    <element name="activateable"   		type="xsd:boolean"/>
+                    <element name="childRelationships" 	type="tns:ChildRelationship" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="createable"     		type="xsd:boolean"/>
+                    <element name="custom"         		type="xsd:boolean"/>
+                    <element name="deletable"      		type="xsd:boolean"/>
+                    <element name="fields"         		type="tns:Field" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="keyPrefix"      		type="xsd:string" nillable="true"/>
+                    <element name="label"          		type="xsd:string"/>
+                    <element name="labelPlural"    		type="xsd:string"/>
+                    <element name="layoutable"     		type="xsd:boolean"/>
+                    <element name="name"           		type="xsd:string"/>
+                    <element name="queryable"      		type="xsd:boolean"/>
+                    <element name="replicateable"  		type="xsd:boolean"/>
+                    <element name="retrieveable"   		type="xsd:boolean"/>
+                    <element name="searchable"     		type="xsd:boolean"/>
+                    <element name="undeletable"    		type="xsd:boolean"/>
+                    <element name="updateable"     		type="xsd:boolean"/>
+                    <element name="urlDetail"      		type="xsd:string" nillable="true"/>
+                    <element name="urlEdit"        		type="xsd:string" nillable="true"/>
+                    <element name="urlNew"         		type="xsd:string" nillable="true"/>
+                </sequence>
+            </complexType>
+
+			<complexType name="ChildRelationship">
+				<sequence>
+					<element name="cascadeDelete" 	 type="xsd:boolean"/>
+					<element name="childSObject"  	 type="xsd:string"/>
+					<element name="field"		  	 type="xsd:string"/>
+					<element name="relationshipName" type="xsd:string" minOccurs="0"/>
+				</sequence>
+			</complexType>
+			
+            <complexType name="DescribeGlobalResult">
+                <sequence>
+                    <element name="encoding"       type="xsd:string" nillable="true"/>
+                    <element name="maxBatchSize"   type="xsd:int"/>
+                    <element name="types"          type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+                </sequence>
+            </complexType>
+
+            <simpleType name="fieldType">
+                <restriction base="xsd:string">
+                    <enumeration value="string"/>
+                    <enumeration value="picklist"/>
+                    <enumeration value="multipicklist"/>
+                    <enumeration value="combobox"/>
+                    <enumeration value="reference"/>
+                    <enumeration value="base64"/>
+                    <enumeration value="boolean"/>
+                    <enumeration value="currency"/>
+                    <enumeration value="textarea"/>
+                    <enumeration value="int"/>
+                    <enumeration value="double"/>
+                    <enumeration value="percent"/>
+                    <enumeration value="phone"/>
+                    <enumeration value="id"/>
+                    <enumeration value="date"/>
+                    <enumeration value="datetime"/>
+                    <enumeration value="url"/>
+                    <enumeration value="email"/>
+                    <enumeration value="anyType"/> <!-- can be string, picklist, reference, boolean, int, double, percent, id, date, datetime, url, email -->
+                </restriction>
+            </simpleType>
+
+            <simpleType name="soapType"> 
+                <restriction base="xsd:string">
+                    <enumeration value="tns:ID"/>
+                    <enumeration value="xsd:base64Binary"/>
+                    <enumeration value="xsd:boolean"/>
+                    <enumeration value="xsd:double"/>
+                    <enumeration value="xsd:int"/>
+                    <enumeration value="xsd:string"/>
+                    <enumeration value="xsd:date"/>
+                    <enumeration value="xsd:dateTime"/>
+                    <enumeration value="xsd:anyType"/> <!-- can be id, booolean, double, int, string, date, dateTime -->
+                </restriction>
+            </simpleType>
+
+            <complexType name="Field">
+                <sequence>
+                    <element name="autoNumber"         type="xsd:boolean"/>
+                    <element name="byteLength"         type="xsd:int"/>
+                    <element name="calculated"		   type="xsd:boolean"/>
+                    <element name="controllerName"     type="xsd:string" minOccurs="0"/>
+                    <element name="createable"         type="xsd:boolean"/>
+                    <element name="custom"             type="xsd:boolean"/>
+					<element name="defaultedOnCreate"  type="xsd:boolean"/>
+                    <element name="dependentPicklist"  type="xsd:boolean" minOccurs="0"/>
+                    <element name="digits"             type="xsd:int"/>
+                    <element name="externalId"		   type="xsd:boolean" minOccurs="0"/>
+                    <element name="filterable"         type="xsd:boolean"/>
+                    <element name="htmlFormatted"	   type="xsd:boolean" minOccurs="0"/>
+                    <element name="label"              type="xsd:string"/>
+                    <element name="length"             type="xsd:int"/>
+                    <element name="name"               type="xsd:string"/>
+                    <element name="nameField"          type="xsd:boolean"/>
+                    <element name="nillable"           type="xsd:boolean"/>
+                    <element name="picklistValues"     type="tns:PicklistEntry" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="precision"          type="xsd:int"/>
+                    <element name="referenceTo"        type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+					<element name="relationshipName"   type="xsd:string" minOccurs="0"/>
+                    <element name="restrictedPicklist" type="xsd:boolean"/>
+                    <element name="scale"              type="xsd:int"/>
+                    <element name="soapType"           type="tns:soapType"/> 
+                    <element name="type"               type="tns:fieldType"/>
+                    <element name="updateable"         type="xsd:boolean"/>
+                </sequence>
+            </complexType>
+           
+            <complexType name="PicklistEntry">
+                <sequence>
+                    <element name="active"       type="xsd:boolean"/>
+                    <element name="defaultValue" type="xsd:boolean"/>
+                    <element name="label"        type="xsd:string" nillable="true"/>
+                    <element name="validFor"     type="xsd:base64Binary" minOccurs="0"/>
+                    <element name="value"        type="xsd:string"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="DescribeLayoutResult">
+                <sequence>
+                    <element name="layouts"            type="tns:DescribeLayout" maxOccurs="unbounded"/>
+                    <element name="recordTypeMappings" type="tns:RecordTypeMapping" minOccurs="0" maxOccurs="unbounded"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="DescribeLayout">
+                <sequence>
+                    <element name="detailLayoutSections" type="tns:DescribeLayoutSection" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="editLayoutSections"   type="tns:DescribeLayoutSection" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="id"                   type="tns:ID"/>
+
+                </sequence>
+            </complexType>
+
+            <complexType name="DescribeLayoutSection">
+                <sequence>
+                    <element name="columns"          		type="xsd:int"/>
+                    <element name="heading"          		type="xsd:string"/>
+                    <element name="layoutRows"       		type="tns:DescribeLayoutRow" maxOccurs="unbounded"/>
+                    <element name="rows"             		type="xsd:int"/>
+                    <element name="useCollapsibleSection" 	type="xsd:boolean"/>
+                    <element name="useHeading"       		type="xsd:boolean"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="DescribeLayoutRow">
+                <sequence>
+                    <element name="layoutItems"      type="tns:DescribeLayoutItem" maxOccurs="unbounded"/>
+                    <element name="numItems"         type="xsd:int"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="DescribeLayoutItem">
+                <sequence>
+                    <element name="editable"         type="xsd:boolean"/>
+                    <element name="label"            type="xsd:string" nillable="true"/>
+                    <element name="layoutComponents" type="tns:DescribeLayoutComponent" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="placeholder"      type="xsd:boolean"/>
+                    <element name="required"         type="xsd:boolean"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="DescribeLayoutComponent">
+                <sequence>
+                    <element name="tabOrder"          type="xsd:int"/>
+                    <element name="type"              type="tns:layoutComponentType"/> 
+                    <element name="value"             type="xsd:string"/>
+                </sequence>
+            </complexType>
+
+            <simpleType name="layoutComponentType"> 
+                <restriction base="xsd:string">
+                    <enumeration value="Field"/>
+                    <enumeration value="Separator"/>
+                </restriction>
+            </simpleType>
+
+            <complexType name="RecordTypeMapping">
+                <sequence>
+                    <element name="available"                 type="xsd:boolean"/>
+                    <element name="defaultRecordTypeMapping"  type="xsd:boolean"/>
+                    <element name="layoutId"                  type="tns:ID"/>
+                    <element name="name"                      type="xsd:string"/>
+                    <element name="picklistsForRecordType"    type="tns:PicklistForRecordType" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+                    <element name="recordTypeId"              type="tns:ID" nillable="true"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="PicklistForRecordType">
+                <sequence>
+                    <element name="picklistName"      type="xsd:string"/>
+                    <element name="picklistValues"    type="tns:PicklistEntry" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+                </sequence>
+            </complexType>
+
+
+
+            <complexType name="DescribeTabSetResult">
+                <sequence>
+                    <element name="label"           type="xsd:string" />
+                    <element name="logoUrl"			type="xsd:string" />
+                    <element name="selected"		type="xsd:boolean" />
+                    <element name="tabs"			type="tns:DescribeTab" minOccurs="0" maxOccurs="unbounded"/>
+                </sequence>
+            </complexType>
+
+            <complexType name="DescribeTab">
+                <sequence>
+                    <element name="custom"           type="xsd:boolean" />
+                    <element name="label"            type="xsd:string" />
+                    <element name="sobjectName"      type="xsd:string" nillable="true" />
+                    <element name="url"              type="xsd:string" />
+                </sequence>
+            </complexType>
+
+
+            
+            <!-- Login Message Types -->
+            <element name="login">
+                <complexType>
+                    <sequence>
+                        <element name="username" type="xsd:string"/>
+                        <element name="password" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="loginResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:LoginResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Describe Message Types -->
+            <element name="describeSObject">
+                <complexType>
+                    <sequence>
+                        <element name="sObjectType" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="describeSObjectResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:DescribeSObjectResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- DescibeSObjects Message Types -->
+            <element name="describeSObjects">
+                <complexType>
+                    <sequence>
+                        <element name="sObjectType" type="xsd:string" minOccurs='0' maxOccurs='100' />
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="describeSObjectsResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:DescribeSObjectResult" minOccurs='0' maxOccurs='100'/>
+                    </sequence>
+                </complexType>
+            </element>
+            
+            <!-- Describe Global Message Types -->
+            <element name="describeGlobal">
+                <complexType> 
+                    <sequence/> 
+                </complexType> 
+            </element>
+            <element name="describeGlobalResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:DescribeGlobalResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <element name="describeLayout">
+                <complexType>
+                    <sequence>
+                        <element name="sObjectType" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="describeLayoutResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:DescribeLayoutResult"/>
+                    </sequence>
+                </complexType>
+            </element>                   
+
+            <element name="describeTabs">
+                <complexType>
+                    <sequence/>
+                </complexType>
+            </element>
+            <element name="describeTabsResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:DescribeTabSetResult" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Create Message Types -->
+            <element name="create">
+                <complexType>
+                    <sequence>
+                        <element name="sObjects" type="ens:sObject" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="createResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:SaveResult" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+
+
+            
+            <!-- Update Message Types -->
+            <element name="update">
+                <complexType>
+                    <sequence>
+                        <element name="sObjects" type="ens:sObject" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="updateResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:SaveResult" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Upsert Message Types -->
+            <element name="upsert">
+                <complexType>
+                    <sequence>
+                    	<element name="externalIDFieldName" type="xsd:string"/>
+                        <element name="sObjects" type="ens:sObject" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="upsertResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:UpsertResult" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Delete Message Types -->
+            <element name="delete">
+                <complexType>
+                    <sequence>
+                        <element name="ids" type="tns:ID" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="deleteResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:DeleteResult" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Retrieve (ID List) Message Types -->
+            <element name="retrieve">
+                <complexType>
+                    <sequence>
+                        <element name="fieldList"   type="xsd:string"/>
+                        <element name="sObjectType" type="xsd:string"/>
+                        <element name="ids"         type="tns:ID" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="retrieveResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="ens:sObject" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Convert Lead Message Types -->
+            <element name="convertLead">
+                <complexType>
+                    <sequence>
+                        <element name="leadConverts" type="tns:LeadConvert" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="convertLeadResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:LeadConvertResult" minOccurs="0" maxOccurs="unbounded"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Get Updated Message Types -->
+            <element name="getUpdated">
+                <complexType>
+                    <sequence>
+                        <element name="sObjectType" type="xsd:string"/>
+                        <element name="startDate" type="xsd:dateTime"/>
+                        <element name="endDate" type="xsd:dateTime"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="getUpdatedResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:GetUpdatedResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Get Deleted Message Types -->
+            <element name="getDeleted">
+                <complexType>
+                    <sequence>
+                        <element name="sObjectType" type="xsd:string"/>
+                        <element name="startDate" type="xsd:dateTime"/>
+                        <element name="endDate" type="xsd:dateTime"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="getDeletedResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:GetDeletedResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Create Query -->
+            <element name="query">
+                <complexType>
+                    <sequence>
+                        <element name="queryString" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="queryResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:QueryResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <!-- Next Batch of sObjects from a query -->
+            <element name="queryMore">
+                <complexType>
+                    <sequence>
+                        <element name="queryLocator" type="tns:QueryLocator"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="queryMoreResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:QueryResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+
+
+            <!-- Create Search -->
+            <element name="search">
+                <complexType>
+                    <sequence>
+                        <element name="searchString" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="searchResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:SearchResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+
+            
+            <element name="getServerTimestamp">
+                <complexType> 
+                    <sequence/> 
+                </complexType> 
+            </element>
+            <element name="getServerTimestampResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:GetServerTimestampResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <element name="setPassword">
+                <complexType>
+                    <sequence>
+                        <element name="userId" type="tns:ID"/>
+                        <element name="password" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="setPasswordResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:SetPasswordResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <element name="resetPassword">
+                <complexType>
+                    <sequence>
+                        <element name="userId" type="tns:ID"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="resetPasswordResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:ResetPasswordResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <element name="getUserInfo">
+                <complexType> 
+                    <sequence/> 
+                </complexType> 
+            </element>
+            <element name="getUserInfoResponse">
+                <complexType>
+                    <sequence>
+                        <element name="result" type="tns:GetUserInfoResult"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+
+
+            <!-- Header Elements -->
+            <element name="SessionHeader">
+                <complexType>
+                    <sequence>
+                        <element name="sessionId" type="xsd:string"/> 
+                    </sequence>
+                </complexType>
+            </element>
+
+
+            
+            <element name="QueryOptions">
+                <complexType>
+                    <sequence>
+                        <element name="batchSize"       type="xsd:int" minOccurs="0"/>
+
+                    </sequence>
+                </complexType>
+            </element>
+
+
+        
+        	<!-- ideally this could of just been elem name="..." type="xsd:boolean" 
+	        	however for some reason .NET 1.1 can't handle that, so we end up having
+	        	to create a nested complexType to keep .NET happy, all those wasted bytes -->
+        	<element name="MruHeader">
+                <complexType>
+                    <sequence>
+                        <element name="updateMru" type="xsd:boolean" />
+                    </sequence>
+                </complexType>
+            </element>
+        	    
+            <element name="AssignmentRuleHeader">
+                <complexType>
+                    <sequence>
+                        <element name="assignmentRuleId"    type="tns:ID"  nillable="true" />
+                        <element name="useDefaultRule"      type="xsd:boolean" nillable="true" />
+                    </sequence>
+                </complexType>
+            </element>
+            
+        </schema>
+
+        <schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:fault.enterprise.soap.sforce.com" xmlns:fns="urn:fault.enterprise.soap.sforce.com">
+
+            <simpleType name="ExceptionCode">
+                <restriction base="xsd:string">
+                    <enumeration value="API_CURRENTLY_DISABLED"/>
+                    <enumeration value="API_DISABLED_FOR_ORG"/>
+                    <enumeration value="EMAIL_TO_CASE_LIMIT_EXCEEDED"/>
+                    <enumeration value="EMAIL_TO_CASE_NOT_ENABLED"/>
+                    <enumeration value="EXCEEDED_ID_LIMIT"/>
+                    <enumeration value="EXCEEDED_LEAD_CONVERT_LIMIT"/>
+                    <enumeration value="EXCEEDED_MAX_SIZE_REQUEST"/>
+                    <enumeration value="EXCEEDED_MAX_TYPES_LIMIT"/>
+                    <enumeration value="EXCEEDED_QUOTA"/>
+                    <enumeration value="EXCEEDED_RATE_LIMIT"/>
+                    <enumeration value="FUNCTIONALITY_NOT_ENABLED"/>
+                    <enumeration value="IMAGE_TOO_LARGE"/>
+                    <enumeration value="INACTIVE_OWNER_OR_USER"/>
+                    <enumeration value="INSUFFICIENT_ACCESS"/>
+                    <enumeration value="INVALID_ASSIGNMENT_RULE"/>
+                    <enumeration value="INVALID_BATCH_SIZE"/>
+                    <enumeration value="INVALID_CLIENT"/>
+                    <enumeration value="INVALID_CROSS_REFERENCE_KEY"/>
+                    <enumeration value="INVALID_FIELD"/>
+                    <enumeration value="INVALID_ID_FIELD"/>
+                    <enumeration value="INVALID_LOGIN"/>
+                    <enumeration value="INVALID_NEW_PASSWORD"/>
+                    <enumeration value="INVALID_OPERATION"/>
+                    <enumeration value="INVALID_OPERATION_WITH_EXPIRED_PASSWORD"/>
+                    <enumeration value="INVALID_QUERY_FILTER_OPERATOR"/>
+                    <enumeration value="INVALID_QUERY_LOCATOR"/>
+                    <enumeration value="INVALID_QUERY_SCOPE"/>
+                    <enumeration value="INVALID_REPLICATION_DATE"/>
+                    <enumeration value="INVALID_SEARCH"/>
+                    <enumeration value="INVALID_SEARCH_SCOPE"/>
+                    <enumeration value="INVALID_SESSION_ID"/>
+                    <enumeration value="INVALID_SOAP_HEADER"/>
+                    <enumeration value="INVALID_SSO_GATEWAY_URL"/>
+                    <enumeration value="INVALID_TYPE"/>
+                    <enumeration value="INVALID_TYPE_FOR_OPERATION"/>
+                    <enumeration value="LOGIN_DURING_RESTRICTED_DOMAIN"/>
+                    <enumeration value="LOGIN_DURING_RESTRICTED_TIME"/>
+                    <enumeration value="MALFORMED_ID"/>
+                    <enumeration value="MALFORMED_QUERY"/>
+                    <enumeration value="MALFORMED_SEARCH"/>
+                    <enumeration value="MISSING_ARGUMENT"/>
+                    <enumeration value="NOT_MODIFIED"/>
+                    <enumeration value="OPERATION_TOO_LARGE"/>
+                    <enumeration value="ORG_LOCKED"/>
+                    <enumeration value="PASSWORD_LOCKOUT"/>
+                    <enumeration value="QUERY_TIMEOUT"/>
+                    <enumeration value="QUERY_TOO_COMPLICATED"/>
+                    <enumeration value="REQUEST_LIMIT_EXCEEDED"/>
+                    <enumeration value="REQUEST_RUNNING_TOO_LONG"/>
+                    <enumeration value="SERVER_UNAVAILABLE"/>
+                    <enumeration value="SSO_SERVICE_DOWN"/>
+                    <enumeration value="TRIAL_EXPIRED"/>
+                    <enumeration value="UNKNOWN_EXCEPTION"/>
+                    <enumeration value="UNSUPPORTED_API_VERSION"/>
+                    <enumeration value="UNSUPPORTED_CLIENT"/>
+                </restriction>
+            </simpleType>
+            <!-- For convenience these QNames are returned in the standard soap faultcode element -->
+            <simpleType name="FaultCode">
+                <restriction base="xsd:QName">
+                    <enumeration value="fns:API_CURRENTLY_DISABLED"/>
+                    <enumeration value="fns:API_DISABLED_FOR_ORG"/>
+                    <enumeration value="fns:EMAIL_TO_CASE_LIMIT_EXCEEDED"/>
+                    <enumeration value="fns:EMAIL_TO_CASE_NOT_ENABLED"/>
+                    <enumeration value="fns:EXCEEDED_ID_LIMIT"/>
+                    <enumeration value="fns:EXCEEDED_LEAD_CONVERT_LIMIT"/>
+                    <enumeration value="fns:EXCEEDED_MAX_SIZE_REQUEST"/>
+                    <enumeration value="fns:EXCEEDED_MAX_TYPES_LIMIT"/>
+                    <enumeration value="fns:EXCEEDED_QUOTA"/>
+                    <enumeration value="fns:EXCEEDED_RATE_LIMIT"/>
+                    <enumeration value="fns:FUNCTIONALITY_NOT_ENABLED"/>
+                    <enumeration value="fns:IMAGE_TOO_LARGE"/>
+                    <enumeration value="fns:INACTIVE_OWNER_OR_USER"/>
+                    <enumeration value="fns:INSUFFICIENT_ACCESS"/>
+                    <enumeration value="fns:INVALID_ASSIGNMENT_RULE"/>
+                    <enumeration value="fns:INVALID_BATCH_SIZE"/>
+                    <enumeration value="fns:INVALID_CLIENT"/>
+                    <enumeration value="fns:INVALID_CROSS_REFERENCE_KEY"/>
+                    <enumeration value="fns:INVALID_FIELD"/>
+                    <enumeration value="fns:INVALID_ID_FIELD"/>
+                    <enumeration value="fns:INVALID_LOGIN"/>
+                    <enumeration value="fns:INVALID_NEW_PASSWORD"/>
+                    <enumeration value="fns:INVALID_OPERATION"/>
+                    <enumeration value="fns:INVALID_OPERATION_WITH_EXPIRED_PASSWORD"/>
+                    <enumeration value="fns:INVALID_QUERY_FILTER_OPERATOR"/>
+                    <enumeration value="fns:INVALID_QUERY_LOCATOR"/>
+                    <enumeration value="fns:INVALID_QUERY_SCOPE"/>
+                    <enumeration value="fns:INVALID_REPLICATION_DATE"/>
+                    <enumeration value="fns:INVALID_SEARCH"/>
+                    <enumeration value="fns:INVALID_SEARCH_SCOPE"/>
+                    <enumeration value="fns:INVALID_SESSION_ID"/>
+                    <enumeration value="fns:INVALID_SOAP_HEADER"/>
+                    <enumeration value="fns:INVALID_SSO_GATEWAY_URL"/>
+                    <enumeration value="fns:INVALID_TYPE"/>
+                    <enumeration value="fns:INVALID_TYPE_FOR_OPERATION"/>
+                    <enumeration value="fns:LOGIN_DURING_RESTRICTED_DOMAIN"/>
+                    <enumeration value="fns:LOGIN_DURING_RESTRICTED_TIME"/>
+                    <enumeration value="fns:MALFORMED_ID"/>
+                    <enumeration value="fns:MALFORMED_QUERY"/>
+                    <enumeration value="fns:MALFORMED_SEARCH"/>
+                    <enumeration value="fns:MISSING_ARGUMENT"/>
+                    <enumeration value="fns:NOT_MODIFIED"/>
+                    <enumeration value="fns:OPERATION_TOO_LARGE"/>
+                    <enumeration value="fns:ORG_LOCKED"/>
+                    <enumeration value="fns:PASSWORD_LOCKOUT"/>
+                    <enumeration value="fns:QUERY_TIMEOUT"/>
+                    <enumeration value="fns:QUERY_TOO_COMPLICATED"/>
+                    <enumeration value="fns:REQUEST_LIMIT_EXCEEDED"/>
+                    <enumeration value="fns:REQUEST_RUNNING_TOO_LONG"/>
+                    <enumeration value="fns:SERVER_UNAVAILABLE"/>
+                    <enumeration value="fns:SSO_SERVICE_DOWN"/>
+                    <enumeration value="fns:TRIAL_EXPIRED"/>
+                    <enumeration value="fns:UNKNOWN_EXCEPTION"/>
+                    <enumeration value="fns:UNSUPPORTED_API_VERSION"/>
+                    <enumeration value="fns:UNSUPPORTED_CLIENT"/>
+                </restriction>
+            </simpleType>
+
+
+            <!-- Fault -->
+            <complexType name="ApiFault">
+                <sequence>
+                    <element name="exceptionCode"    type="fns:ExceptionCode"/>
+                    <element name="exceptionMessage" type="xsd:string"/>
+
+                </sequence>
+            </complexType>
+
+            <complexType name="ApiQueryFault">
+                <complexContent>
+                    <extension base="fns:ApiFault">
+                        <sequence>
+                        <element name="row" type="xsd:int"/>
+                        <element name="column" type="xsd:int"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+
+            <complexType name="LoginFault">
+                <complexContent>
+                    <extension base="fns:ApiFault"/>
+                </complexContent>
+            </complexType>
+            <element name="LoginFault" type="fns:LoginFault"/>

+
+            <complexType name="InvalidQueryLocatorFault">
+                <complexContent>
+                    <extension base="fns:ApiFault"/>
+                </complexContent>
+            </complexType>
+            <element name="InvalidQueryLocatorFault" type="fns:InvalidQueryLocatorFault"/>

+
+            <complexType name="InvalidNewPasswordFault">
+                <complexContent>
+                    <extension base="fns:ApiFault"/>
+                </complexContent>
+            </complexType>
+            <element name="InvalidNewPasswordFault" type="fns:InvalidNewPasswordFault"/>

+
+            <complexType name="InvalidIdFault">
+                <complexContent>
+                    <extension base="fns:ApiFault"/>
+                </complexContent>
+            </complexType>
+            <element name="InvalidIdFault" type="fns:InvalidIdFault"/>

+
+            <complexType name="UnexpectedErrorFault">
+                <complexContent>
+                    <extension base="fns:ApiFault"/>
+                </complexContent>
+            </complexType>
+            <element name="UnexpectedErrorFault" type="fns:UnexpectedErrorFault"/>

+
+            <complexType name="InvalidFieldFault">
+                <complexContent>
+                    <extension base="fns:ApiQueryFault"/>
+                </complexContent>
+            </complexType>
+            <element name="InvalidFieldFault" type="fns:InvalidFieldFault"/>

+
+            <complexType name="InvalidSObjectFault">
+                <complexContent>
+                    <extension base="fns:ApiQueryFault"/>
+                </complexContent>
+            </complexType>
+            <element name="InvalidSObjectFault" type="fns:InvalidSObjectFault"/>

+
+            <complexType name="MalformedQueryFault">
+                <complexContent>
+                    <extension base="fns:ApiQueryFault"/>
+                </complexContent>
+            </complexType>
+            <element name="MalformedQueryFault" type="fns:MalformedQueryFault"/>

+
+            <complexType name="MalformedSearchFault">
+                <complexContent>
+                    <extension base="fns:ApiQueryFault"/>
+                </complexContent>
+            </complexType>
+            <element name="MalformedSearchFault" type="fns:MalformedSearchFault"/>

+
+
+        </schema>
+
+    </types>
+    
+    <!-- Header Message -->
+    <message name="Header">
+        <part element="tns:SessionHeader"    			name="SessionHeader"/>
+
+        <part element="tns:QueryOptions"     			name="QueryOptions"/>
+        <part element="tns:AssignmentRuleHeader"   		name="AssignmentRuleHeader"/>
+        <part element="tns:MruHeader"   					name="MruHeader"/>
+
+    </message>
+    
+    <!-- Fault Messages -->
+    
+    <message name="ApiFault">
+        <part name="fault" type="fns:ApiFault"/>
+    </message>
+
+    <message name="LoginFault">
+        <part name="fault" element="fns:LoginFault"/>
+    </message>
+    <message name="InvalidQueryLocatorFault">
+        <part name="fault" element="fns:InvalidQueryLocatorFault"/>
+    </message>
+    <message name="InvalidNewPasswordFault">
+        <part name="fault" element="fns:InvalidNewPasswordFault"/>
+    </message>
+    <message name="InvalidIdFault">
+        <part name="fault" element="fns:InvalidIdFault"/>
+    </message>
+    <message name="UnexpectedErrorFault">
+        <part name="fault" element="fns:UnexpectedErrorFault"/>
+    </message>
+    <message name="InvalidFieldFault">
+        <part name="fault" element="fns:InvalidFieldFault"/>
+    </message>
+    <message name="InvalidSObjectFault">
+        <part name="fault" element="fns:InvalidSObjectFault"/>
+    </message>
+    <message name="MalformedQueryFault">
+        <part name="fault" element="fns:MalformedQueryFault"/>
+    </message>
+    <message name="MalformedSearchFault">
+        <part name="fault" element="fns:MalformedSearchFault"/>
+    </message>
+
+    
+    <!-- Method Messages -->
+    
+    <message name="loginRequest">
+        <part element="tns:login" name="parameters"/>
+    </message>
+    <message name="loginResponse">
+        <part element="tns:loginResponse" name="parameters"/>
+    </message>
+
+    <message name="describeSObjectRequest">
+        <part element="tns:describeSObject" name="parameters"/>
+    </message>
+    <message name="describeSObjectResponse">
+        <part element="tns:describeSObjectResponse" name="parameters"/>
+    </message>
+
+    <message name="describeSObjectsRequest">
+        <part element="tns:describeSObjects" name="parameters"/>
+    </message>
+    <message name="describeSObjectsResponse">
+        <part element="tns:describeSObjectsResponse" name="parameters"/>
+    </message>
+    
+    <message name="describeGlobalRequest">
+        <part element="tns:describeGlobal" name="parameters"/>
+    </message>
+    <message name="describeGlobalResponse">
+        <part element="tns:describeGlobalResponse" name="parameters"/>
+    </message>
+
+    <message name="describeLayoutRequest">
+        <part element="tns:describeLayout" name="parameters"/>
+    </message>
+    <message name="describeLayoutResponse">
+        <part element="tns:describeLayoutResponse" name="parameters"/>
+    </message>
+
+    <message name="describeTabsRequest">
+        <part element="tns:describeTabs" name="parameters"/>
+    </message>
+    <message name="describeTabsResponse">
+        <part element="tns:describeTabsResponse" name="parameters"/>
+    </message>
+
+
+
+    <message name="createRequest">
+        <part element="tns:create" name="parameters"/>
+    </message>
+    <message name="createResponse">
+        <part element="tns:createResponse" name="parameters"/>
+    </message>
+
+    <message name="updateRequest">
+        <part element="tns:update" name="parameters"/>
+    </message>
+    <message name="updateResponse">
+        <part element="tns:updateResponse" name="parameters"/>
+    </message>
+
+    <message name="upsertRequest">
+        <part element="tns:upsert" name="parameters"/>
+    </message>
+    <message name="upsertResponse">
+        <part element="tns:upsertResponse" name="parameters"/>
+    </message>
+
+    <message name="deleteRequest">
+        <part element="tns:delete" name="parameters"/>
+    </message>
+    <message name="deleteResponse">
+        <part element="tns:deleteResponse" name="parameters"/>
+    </message>
+
+    <message name="retrieveRequest">
+        <part element="tns:retrieve" name="parameters"/>
+    </message>
+    <message name="retrieveResponse">
+        <part element="tns:retrieveResponse" name="parameters"/>
+    </message>
+
+    <message name="convertLeadRequest">
+        <part element="tns:convertLead" name="parameters"/>
+    </message>
+    <message name="convertLeadResponse">
+        <part element="tns:convertLeadResponse" name="parameters"/>
+    </message>
+
+    <message name="getDeletedRequest">
+        <part element="tns:getDeleted" name="parameters"/>
+    </message>
+    <message name="getDeletedResponse">
+        <part element="tns:getDeletedResponse" name="parameters"/>
+    </message>
+
+    <message name="getUpdatedRequest">
+        <part element="tns:getUpdated" name="parameters"/>
+    </message>
+    <message name="getUpdatedResponse">
+        <part element="tns:getUpdatedResponse" name="parameters"/>
+    </message>
+
+    <message name="queryRequest">
+        <part element="tns:query" name="parameters"/>
+    </message>
+    <message name="queryResponse">
+        <part element="tns:queryResponse" name="parameters"/>
+    </message>
+
+    <message name="queryMoreRequest">
+        <part element="tns:queryMore" name="parameters"/>
+    </message>
+    <message name="queryMoreResponse">
+        <part element="tns:queryMoreResponse" name="parameters"/>
+    </message>
+
+
+
+    <message name="searchRequest">
+        <part element="tns:search" name="parameters"/>
+    </message>
+    <message name="searchResponse">
+        <part element="tns:searchResponse" name="parameters"/>
+    </message>
+
+
+    
+    <message name="getServerTimestampRequest">
+        <part element="tns:getServerTimestamp" name="parameters"/>
+    </message>
+    <message name="getServerTimestampResponse">
+        <part element="tns:getServerTimestampResponse" name="parameters"/>
+    </message>
+
+    <message name="setPasswordRequest">
+        <part element="tns:setPassword" name="parameters"/>
+    </message>
+    <message name="setPasswordResponse">
+        <part element="tns:setPasswordResponse" name="parameters"/>
+    </message>
+
+    <message name="resetPasswordRequest">
+        <part element="tns:resetPassword" name="parameters"/>
+    </message>
+    <message name="resetPasswordResponse">
+        <part element="tns:resetPasswordResponse" name="parameters"/>
+    </message>
+
+    <message name="getUserInfoRequest">
+        <part element="tns:getUserInfo" name="parameters"/>
+    </message>
+    <message name="getUserInfoResponse">
+        <part element="tns:getUserInfoResponse" name="parameters"/>
+    </message>
+
+
+
+    <!-- Soap PortType -->
+    <portType name="Soap">
+        <operation name="login">
+            <documentation>Login to the Salesforce.com SOAP Api.</documentation>
+            <input  message="tns:loginRequest"/>
+            <output message="tns:loginResponse"/>
+            <fault  message="tns:LoginFault" name="LoginFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+        
+        <operation name="describeSObject">
+            <documentation>Describe an sObject</documentation>
+            <input message="tns:describeSObjectRequest"/>
+            <output message="tns:describeSObjectResponse"/>
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="describeSObjects">
+            <documentation>Describe a number sObjects</documentation>
+            <input message="tns:describeSObjectsRequest"/>
+            <output message="tns:describeSObjectsResponse"/>
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="describeGlobal">
+            <documentation>Describe the Global state</documentation>
+            <input message="tns:describeGlobalRequest"/>
+            <output message="tns:describeGlobalResponse"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="describeLayout">
+            <documentation>Describe the layout of an sObject</documentation>
+            <input message="tns:describeLayoutRequest"/>
+            <output message="tns:describeLayoutResponse"/>
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="describeTabs">
+            <documentation>Describe the tabs that appear on a users page</documentation>
+            <input message="tns:describeTabsRequest"/>
+            <output message="tns:describeTabsResponse"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+
+        <operation name="create">
+            <documentation>Create a set of new sObjects</documentation>
+            <input  message="tns:createRequest"/>
+            <output message="tns:createResponse"/>
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+            <fault  message="tns:InvalidIdFault" name="InvalidIdFault"/>
+        </operation>
+
+        <operation name="update">
+            <documentation>Update a set of sObjects</documentation>
+            <input  message="tns:updateRequest"/>
+            <output message="tns:updateResponse"/>
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+            <fault  message="tns:InvalidIdFault" name="InvalidIdFault"/>
+        </operation>
+        
+        <operation name="upsert">
+            <documentation>Update or insert a set of sObjects based on object id</documentation>
+            <input  message="tns:upsertRequest"/>
+            <output message="tns:upsertResponse"/>
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+            <fault  message="tns:InvalidIdFault" name="InvalidIdFault"/>
+        </operation>
+        
+        <operation name="delete">
+            <documentation>Delete a set of sObjects</documentation>
+            <input  message="tns:deleteRequest"/>
+            <output message="tns:deleteResponse"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+        
+        <operation name="retrieve">
+            <documentation>Get a set of sObjects</documentation>
+            <input  message="tns:retrieveRequest"/>
+            <output message="tns:retrieveResponse"/>
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:InvalidFieldFault" name="InvalidFieldFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="convertLead">
+            <documentation>convert a set of leads</documentation>
+            <input  message="tns:convertLeadRequest"/>
+            <output message="tns:convertLeadResponse"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="getDeleted">
+            <documentation>Get the IDs for deleted sObjects</documentation>
+            <input  message="tns:getDeletedRequest" />
+            <output message="tns:getDeletedResponse" />
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="getUpdated">
+            <documentation>Get the IDs for updated sObjects</documentation>
+            <input  message="tns:getUpdatedRequest" />
+            <output message="tns:getUpdatedResponse" />
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="query">
+            <documentation>Create a Query Cursor</documentation>
+            <input  message="tns:queryRequest"/>
+            <output message="tns:queryResponse"/>
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:InvalidFieldFault" name="InvalidFieldFault"/>
+            <fault  message="tns:MalformedQueryFault" name="MalformedQueryFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+        
+        <operation name="queryMore">
+            <documentation>Gets the next batch of sObjects from a query</documentation>
+            <input  message="tns:queryMoreRequest"/>
+            <output message="tns:queryMoreResponse"/>
+            <fault  message="tns:InvalidQueryLocatorFault" name="InvalidQueryLocatorFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+
+
+        <operation name="search">
+            <documentation>Search for sObjects</documentation>
+            <input  message="tns:searchRequest" />
+            <output message="tns:searchResponse" />
+            <fault  message="tns:InvalidSObjectFault" name="InvalidSObjectFault"/>
+            <fault  message="tns:InvalidFieldFault" name="InvalidFieldFault" />
+            <fault  message="tns:MalformedSearchFault" name="MalformedSearchFault" />
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+
+
+        <operation name="getServerTimestamp">
+            <documentation>Gets server timestamp</documentation>
+            <input  message="tns:getServerTimestampRequest"/>
+            <output message="tns:getServerTimestampResponse"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="setPassword">
+            <documentation>Set a user's password</documentation>
+            <input  message="tns:setPasswordRequest"/>
+            <output message="tns:setPasswordResponse"/>
+            <fault  message="tns:InvalidIdFault" name="InvalidIdFault"/>
+            <fault  message="tns:InvalidNewPasswordFault" name="InvalidNewPasswordFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="resetPassword">
+            <documentation>Reset a user's password</documentation>
+            <input  message="tns:resetPasswordRequest"/>
+            <output message="tns:resetPasswordResponse"/>
+            <fault  message="tns:InvalidIdFault" name="InvalidIdFault"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+        <operation name="getUserInfo">
+            <documentation>Returns standard information relevant to the current user</documentation>
+            <input  message="tns:getUserInfoRequest"/>
+            <output message="tns:getUserInfoResponse"/>
+            <fault  message="tns:UnexpectedErrorFault" name="UnexpectedErrorFault"/>
+        </operation>
+
+
+        
+
+	</portType> 
+    <!-- Soap Binding -->
+    <binding name="SoapBinding" type="tns:Soap">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        
+        <operation name="login">
+            <soap:operation soapAction=""/>
+            <input>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output> 
+                <soap:body use="literal"/>
+            </output>
+            <fault name="LoginFault">
+               <soap:fault name="LoginFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+        
+        <operation name="describeSObject">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+                <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+           <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+           </fault>
+        </operation>
+
+        <operation name="describeSObjects">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+                <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+           <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+           </fault>
+        </operation>
+        
+        <operation name="describeGlobal">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="UnexpectedErrorFault">
+                <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="describeLayout">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+                <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+           <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+           </fault>
+        </operation>
+
+        <operation name="describeTabs">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+           <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+           </fault>
+        </operation>
+
+        <operation name="create">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:header use="literal" message="tns:Header" part="AssignmentRuleHeader"/>
+                <soap:header use="literal" message="tns:Header" part="MruHeader"/>
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+                <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+                <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+            <fault name="InvalidIdFault">
+                <soap:fault name="InvalidIdFault" use="literal"/> 
+            </fault>
+        </operation>
+        
+        <operation name="update">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:header use="literal" message="tns:Header" part="AssignmentRuleHeader"/>
+                <soap:header use="literal" message="tns:Header" part="MruHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+                <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+                <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+            <fault name="InvalidIdFault">
+                <soap:fault name="InvalidIdFault" use="literal"/> 
+            </fault>
+        </operation>
+        
+        <operation name="upsert">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:header use="literal" message="tns:Header" part="AssignmentRuleHeader"/>
+                <soap:header use="literal" message="tns:Header" part="MruHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+                <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+                <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+            <fault name="InvalidIdFault">
+                <soap:fault name="InvalidIdFault" use="literal"/> 
+            </fault>
+        </operation>
+        
+        <operation name="delete">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="retrieve">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:header use="literal" message="tns:Header" part="QueryOptions"/>
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+               <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+            <fault name="InvalidFieldFault">
+               <soap:fault name="InvalidFieldFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="convertLead">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="getDeleted">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+               <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="getUpdated">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+               <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="query">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:header use="literal" message="tns:Header" part="QueryOptions"/>
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+               <soap:fault name="InvalidSObjectFault" use="literal"/> 
+            </fault>
+            <fault name="InvalidFieldFault">
+               <soap:fault name="InvalidFieldFault" use="literal"/> 
+            </fault>
+            <fault name="MalformedQueryFault">
+               <soap:fault name="MalformedQueryFault" use="literal"/>
+            </fault>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="queryMore">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:header use="literal" message="tns:Header" part="QueryOptions"/>
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidQueryLocatorFault">
+               <soap:fault name="InvalidQueryLocatorFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+
+
+        <operation name="search">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidSObjectFault">
+               <soap:fault name="InvalidSObjectFault" use="literal"/>
+            </fault>
+            <fault name="InvalidFieldFault">
+               <soap:fault name="InvalidFieldFault" use="literal"/>
+            </fault>
+            <fault name="MalformedSearchFault">
+               <soap:fault name="MalformedSearchFault" use="literal"/>
+            </fault>
+            <fault name="UnexpectedErrorFault">
+               <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+
+
+        <operation name="getServerTimestamp">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="UnexpectedErrorFault">
+                <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="setPassword">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidIdFault">
+                <soap:fault name="InvalidIdFault" use="literal"/> 
+            </fault>
+            <fault name="InvalidNewPasswordFault">
+                <soap:fault name="InvalidNewPasswordFault" use="literal"/> 
+            </fault>            
+            <fault name="UnexpectedErrorFault">
+                <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="resetPassword">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="InvalidIdFault">
+                <soap:fault name="InvalidIdFault" use="literal"/> 
+            </fault>
+            <fault name="UnexpectedErrorFault">
+                <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+        <operation name="getUserInfo">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:header use="literal" message="tns:Header" part="SessionHeader"/>
+
+                <soap:body parts="parameters" use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="UnexpectedErrorFault">
+                <soap:fault name="UnexpectedErrorFault" use="literal"/> 
+            </fault>
+        </operation>
+
+
+
+ 
+
+    </binding>
+    
+    <!-- Soap Service Endpoint -->
+    <service name="SforceService">
+        <documentation>Sforce SOAP API</documentation>
+        <port binding="tns:SoapBinding" name="Soap">
+            <soap:address location="https://www.salesforce.com/services/Soap/c/7.0"/>
+        </port>
+    </service>
+
+</definitions>
+    
+
diff --git a/rampart_1_1/modules/integration/test-resources/mtom/MTOM-enabled-axis2.xml b/rampart_1_1/modules/integration/test-resources/mtom/MTOM-enabled-axis2.xml
new file mode 100644
index 0000000..5a46b73
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/mtom/MTOM-enabled-axis2.xml
@@ -0,0 +1,153 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">true</parameter>
+    <parameter name="cacheAttachments" locked="false">false</parameter>
+    <!-- Uncomment this to enable REST support -->
+    <!--    <parameter name="eanbleREST" locked="false">true</parameter>-->
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+  <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+            <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing-->
+    <module ref="addressing"/> 
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+       <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/mtom/MTOM-fileCache-enabled-axis2.xml b/rampart_1_1/modules/integration/test-resources/mtom/MTOM-fileCache-enabled-axis2.xml
new file mode 100644
index 0000000..697c5ac
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/mtom/MTOM-fileCache-enabled-axis2.xml
@@ -0,0 +1,155 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">true</parameter>
+    <parameter name="cacheAttachments" locked="false">true</parameter>
+    <parameter name="attachmentDIR" locked="false">target/test-resources/</parameter>
+    <parameter name="sizeThreshold" locked="false">4000</parameter>
+    <!-- Uncomment this to enable REST support -->
+    <!--    <parameter name="eanbleREST" locked="false">true</parameter>-->
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+  <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+            <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing-->
+    <module ref="addressing"/> 
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+       <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/mtom/test.jpg b/rampart_1_1/modules/integration/test-resources/mtom/test.jpg
new file mode 100644
index 0000000..59c10ca
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/mtom/test.jpg
Binary files differ
diff --git a/rampart_1_1/modules/integration/test-resources/mtom/wmtom.bin b/rampart_1_1/modules/integration/test-resources/mtom/wmtom.bin
new file mode 100644
index 0000000..01f9c8c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/mtom/wmtom.bin
@@ -0,0 +1,21 @@
+----MIMEBoundary258DE2D105298B756D
+content-type:application/xop+xml; charset=utf-8; type="application/soap+xml"
+content-transfer-encoding:binary
+content-id:<0.15B50EF49317518B01@apache.org>
+
+<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header><wsa:To xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://localhost:8070/axis2/services/MTOMService/mtomSample</wsa:To></soapenv:Header><soapenv:Body><x:EchoTest xmlns:x="http://example.org/mtom/data"><x:Data><xop:Include href="cid:1.BBFC8D48A21258EBBD@apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"></xop:Include></x:Data><x:Data><xop:Include href="cid:2.CB365E36E21BD6491A@apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"></xop:Include></x:Data></x:EchoTest></soapenv:Body></soapenv:Envelope>
+----MIMEBoundary258DE2D105298B756D
+content-id:<11.BBFC8D48A21258EBBD@apache.org>
+content-type:application/octet-stream
+content-transfer-encoding:binary
+
+saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda 
+
+----MIMEBoundary258DE2D105298B756D
+content-id:<2.CB365E36E21BD6491A@apache.org>
+content-type:application/octet-stream
+content-transfer-encoding:binary
+
+saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda saminda 
+
+----MIMEBoundary258DE2D105298B756D--
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/issuer.properties b/rampart_1_1/modules/integration/test-resources/rahas/issuer.properties
new file mode 100755
index 0000000..40abfa2
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/issuer.properties
@@ -0,0 +1,4 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=rahas-sts.jks
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/policy/service-policy-symm-binding.xml b/rampart_1_1/modules/integration/test-resources/rahas/policy/service-policy-symm-binding.xml
new file mode 100644
index 0000000..a2c7e40
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/policy/service-policy-symm-binding.xml
@@ -0,0 +1,70 @@
+<wsp:Policy wsu:Id="4" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+  <wsp:All>
+	<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:ProtectionToken>
+		  <wsp:Policy>
+			<sp:IssuedToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+			  <sp:RequestSecurityTokenTemplate>
+				<t:TokenType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType>
+				<t:KeyType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey</t:KeyType>
+				<t:KeySize xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">256</t:KeySize>
+			  </sp:RequestSecurityTokenTemplate>
+			  <wsp:Policy>
+				<sp:RequireDerivedKeys/>
+				<sp:RequireInternalReference/>
+			  </wsp:Policy>
+			</sp:IssuedToken>
+		  </wsp:Policy>
+		</sp:ProtectionToken>
+		<sp:AlgorithmSuite>
+		  <wsp:Policy>
+			<sp:Basic256/>
+		  </wsp:Policy>
+		</sp:AlgorithmSuite>
+		<sp:Layout>
+		  <wsp:Policy>
+			<sp:Lax/>
+		  </wsp:Policy>
+		</sp:Layout>
+		<sp:IncludeTimestamp/>
+		<sp:OnlySignEntireHeadersAndBody/>
+	  </wsp:Policy>
+	</sp:SymmetricBinding>
+	<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportRefKeyIdentifier/>
+		<sp:MustSupportRefIssuerSerial/>
+	  </wsp:Policy>
+	</sp:Wss10>
+	<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportIssuedTokens/>
+		<sp:RequireClientEntropy/>
+		<sp:RequireServerEntropy/>
+	  </wsp:Policy>
+	</sp:Trust10>
+	<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+		<ramp:user>alice</ramp:user>
+		<ramp:encryptionUser>bob</ramp:encryptionUser>
+		<ramp:passwordCallbackClass>org.apache.rahas.PWCallback</ramp:passwordCallbackClass>
+		
+		<ramp:signatureCrypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:signatureCrypto>
+		<ramp:encryptionCypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:encryptionCypto>
+	</ramp:RampartConfig>
+  </wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/policy/service-policy-transport-binding.xml b/rampart_1_1/modules/integration/test-resources/rahas/policy/service-policy-transport-binding.xml
new file mode 100644
index 0000000..311c68d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/policy/service-policy-transport-binding.xml
@@ -0,0 +1,73 @@
+<wsp:Policy wsu:Id="5" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+  <wsp:All>
+	<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:TransportToken>
+		  <wsp:Policy>
+			<sp:HttpsToken RequireClientCertificate="false"/>
+		  </wsp:Policy>
+		</sp:TransportToken>
+		<sp:AlgorithmSuite>
+		  <wsp:Policy>
+			<sp:Basic256/>
+		  </wsp:Policy>
+		</sp:AlgorithmSuite>
+		<sp:Layout>
+		  <wsp:Policy>
+			<sp:Lax/>
+		  </wsp:Policy>
+		</sp:Layout>
+		<sp:IncludeTimestamp/>
+	  </wsp:Policy>
+	</sp:TransportBinding>
+	<sp:EndorsingSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:IssuedToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+		  <sp:RequestSecurityTokenTemplate>
+			<t:TokenType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType>
+			<t:KeyType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey</t:KeyType>
+			<t:KeySize xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">256</t:KeySize>
+		  </sp:RequestSecurityTokenTemplate>
+		  <wsp:Policy>
+			<sp:RequireInternalReference/>
+		  </wsp:Policy>
+		</sp:IssuedToken>
+	  </wsp:Policy>
+	</sp:EndorsingSupportingTokens>
+	<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportRefKeyIdentifier/>
+		<sp:MustSupportRefIssuerSerial/>
+	  </wsp:Policy>
+	</sp:Wss10>
+	<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportIssuedTokens/>
+		<sp:RequireClientEntropy/>
+		<sp:RequireServerEntropy/>
+	  </wsp:Policy>
+	</sp:Trust10>
+	<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+		<ramp:user>alice</ramp:user>
+		<ramp:encryptionUser>bob</ramp:encryptionUser>
+		<ramp:passwordCallbackClass>org.apache.rahas.PWCallback</ramp:passwordCallbackClass>
+		
+		<ramp:signatureCrypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:signatureCrypto>
+		<ramp:encryptionCypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:encryptionCypto>
+	</ramp:RampartConfig>
+  </wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/policy/store.jks b/rampart_1_1/modules/integration/test-resources/rahas/policy/store.jks
new file mode 100644
index 0000000..02d7c4e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/policy/store.jks
Binary files differ
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-asymm-binding.xml b/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-asymm-binding.xml
new file mode 100644
index 0000000..be9fc99
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-asymm-binding.xml
@@ -0,0 +1,66 @@
+<wsp:Policy wsu:Id="1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rahas.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-symm-binding.xml b/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-symm-binding.xml
new file mode 100644
index 0000000..d6f672b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-symm-binding.xml
@@ -0,0 +1,73 @@
+<wsp:Policy wsu:Id="3" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:RequireThumbprintReference/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptSignature/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:EndorsingSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+						<wsp:Policy>
+							<sp:RequireThumbprintReference/>
+							<sp:WssX509V3Token10/>
+						</wsp:Policy>
+					</sp:X509Token>
+				</wsp:Policy>
+			</sp:EndorsingSupportingTokens>
+			<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+					<sp:RequireSignatureConfirmation/>
+				</wsp:Policy>
+			</sp:Wss11>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rahas.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-transport-binding.xml b/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-transport-binding.xml
new file mode 100644
index 0000000..18b9005
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/policy/sts-policy-transport-binding.xml
@@ -0,0 +1,63 @@
+<wsp:Policy wsu:Id="2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:TransportToken>
+						<wsp:Policy>
+							<sp:HttpsToken RequireClientCertificate="false"/>
+						</wsp:Policy>
+					</sp:TransportToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+				</wsp:Policy>
+			</sp:TransportBinding>
+			<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+						<wsp:Policy>
+							<sp:WssUsernameToken10/>
+						</wsp:Policy>
+					</sp:UsernameToken>
+				</wsp:Policy>
+			</sp:SignedSupportingTokens>
+			<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+				</wsp:Policy>
+			</sp:Wss11>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rahas.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rahas/policy/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/rahas-sec.properties b/rampart_1_1/modules/integration/test-resources/rahas/rahas-sec.properties
new file mode 100755
index 0000000..b16fa45
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/rahas-sec.properties
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=rahas-sts.jks
+
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/rahas-sts.jks b/rampart_1_1/modules/integration/test-resources/rahas/rahas-sts.jks
new file mode 100644
index 0000000..02d7c4e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/rahas-sts.jks
Binary files differ
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/s1-services.xml b/rampart_1_1/modules/integration/test-resources/rahas/s1-services.xml
new file mode 100644
index 0000000..681867f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/s1-services.xml
@@ -0,0 +1,74 @@
+<service name="SecureService">

+

+	<module ref="rampart"/>

+	<module ref="rahas"/>

+

+	<parameter locked="false" name="ServiceClass">org.apache.axis2.security.sc.Service</parameter>

+

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+		<actionMapping>urn:echo</actionMapping>

+	</operation>    

+

+    <parameter name="saml-issuer-config">

+		<saml-issuer-config>

+			<issuerName>Test_STS</issuerName>

+			<issuerKeyAlias>ip</issuerKeyAlias>

+			<issuerKeyPassword>password</issuerKeyPassword>

+            <cryptoProperties>

+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>

+                    <property name="org.apache.ws.security.crypto.merlin.file">rahas-sts.jks</property>

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>

+                </crypto>

+            </cryptoProperties>

+            <timeToLive>300000</timeToLive>

+			<keySize>256</keySize>

+			<addRequestedAttachedRef />

+			<addRequestedUnattachedRef />

+

+            <!--

+               Key computation mechanism

+               1 - Use Request Entropy

+               2 - Provide Entropy

+               3 - Use Own Key

+            -->

+            <keyComputation>2</keyComputation>

+

+            <!--

+               proofKeyType element is valid only if the keyComputation is set to 3

+               i.e. Use Own Key

+

+               Valid values are: EncryptedKey & BinarySecret

+            -->

+            <proofKeyType>BinarySecret</proofKeyType>

+            <trusted-services>

+				<service alias="bob">http://localhost:5555/axis2/services/SecureService</service>

+				<service alias="bob1">http://localhost:5555/axis2/services/SecureService1</service>

+				<service alias="bob2">http://localhost:5555/axis2/services/SecureService2</service>

+				<service alias="bob3">http://localhost:5555/axis2/services/SecureService3</service>

+			</trusted-services>

+		</saml-issuer-config>

+    </parameter>

+	

+	<parameter name="InflowSecurity">

+      <action>

+        <items>Signature Encrypt Timestamp</items>

+        <signaturePropFile>issuer.properties</signaturePropFile>

+		<decryptionPropFile>issuer.properties</decryptionPropFile>

+		<passwordCallbackClass xmlns="">org.apache.rahas.PWCallback</passwordCallbackClass>

+      </action>

+    </parameter>

+

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Signature Encrypt Timestamp</items>

+        <user>ip</user>

+		<encryptionUser>useReqSigCert</encryptionUser>

+		<signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>

+        <signaturePropFile xmlns="">issuer.properties</signaturePropFile>

+	    <passwordCallbackClass xmlns="">org.apache.rahas.PWCallback</passwordCallbackClass>

+      </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/integration/test-resources/rahas/s3-services.xml b/rampart_1_1/modules/integration/test-resources/rahas/s3-services.xml
new file mode 100644
index 0000000..97d8d36
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/s3-services.xml
@@ -0,0 +1,70 @@
+<service name="SecureService">
+
+	<module ref="rampart"/>
+	<module ref="rahas"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.security.sc.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+
+    <parameter name="saml-issuer-config">
+		<saml-issuer-config>
+			<issuerName>Test_STS</issuerName>
+			<issuerKeyAlias>ip</issuerKeyAlias>
+			<issuerKeyPassword>password</issuerKeyPassword>
+            <cryptoProperties>
+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">
+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>
+                    <property name="org.apache.ws.security.crypto.merlin.file">rahas-sts.jks</property>
+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>
+                </crypto>
+            </cryptoProperties>
+            <timeToLive>300000</timeToLive>
+			<keySize>256</keySize>
+			<addRequestedAttachedRef />
+			<addRequestedUnattachedRef />
+
+            <!--
+               Key computation mechanism
+               1 - Use Request Entropy
+               2 - Provide Entropy
+               3 - Use Own Key
+            -->
+            <keyComputation>2</keyComputation>
+
+            <!--
+               proofKeyType element is valid only if the keyComputation is set to 3
+               i.e. Use Own Key
+
+               Valid values are: EncryptedKey & BinarySecret
+            -->
+            <proofKeyType>BinarySecret</proofKeyType>
+            <trusted-services>
+				<service alias="bob">http://localhost:5555/axis2/services/SecureService</service>
+				<service alias="bob1">http://localhost:5555/axis2/services/SecureService1</service>
+				<service alias="bob2">http://localhost:5555/axis2/services/SecureService2</service>
+				<service alias="bob3">http://localhost:5555/axis2/services/SecureService3</service>
+			</trusted-services>
+		</saml-issuer-config>
+    </parameter>
+
+	<parameter name="InflowSecurity">
+      <action>
+        <items>UsernameToken Timestamp</items>
+		<passwordCallbackClass xmlns="">org.apache.rahas.PWCallback</passwordCallbackClass>
+      </action>
+    </parameter>
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Timestamp</items>
+        <user>ip</user>
+	    <passwordCallbackClass xmlns="">org.apache.rahas.PWCallback</passwordCallbackClass>
+		<enableSignatureConfirmation>false</enableSignatureConfirmation>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/saml.s1.properties b/rampart_1_1/modules/integration/test-resources/rahas/saml.s1.properties
new file mode 100644
index 0000000..90487b1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/saml.s1.properties
@@ -0,0 +1,9 @@
+org.apache.ws.security.saml.issuerClass=org.apache.ws.security.saml.SAMLIssuerImpl
+org.apache.ws.security.saml.issuer.cryptoProp.file=sctIssuer.properties
+org.apache.ws.security.saml.issuer.key.name=bob
+org.apache.ws.security.saml.issuer.key.password=security
+org.apache.ws.security.saml.issuer=www.example.com
+org.apache.ws.security.saml.subjectNameId.name=uid=joe,ou=people,ou=saml-demo,o=example.com
+org.apache.ws.security.saml.subjectNameId.qualifier=www.example.com
+org.apache.ws.security.saml.authenticationMethod=password
+#org.apache.ws.security.saml.confirmationMethod=senderVouches
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/samlIssuer.properties b/rampart_1_1/modules/integration/test-resources/rahas/samlIssuer.properties
new file mode 100755
index 0000000..c126c57
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/samlIssuer.properties
@@ -0,0 +1,4 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=sts.jks
diff --git a/rampart_1_1/modules/integration/test-resources/rahas/sec.jks b/rampart_1_1/modules/integration/test-resources/rahas/sec.jks
new file mode 100755
index 0000000..02d7c4e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rahas/sec.jks
Binary files differ
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/issuer.properties b/rampart_1_1/modules/integration/test-resources/rampart/issuer.properties
new file mode 100755
index 0000000..240d524
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/issuer.properties
@@ -0,0 +1,4 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=store.jks
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/1.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/1.xml
new file mode 100644
index 0000000..bba55b3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/1.xml
@@ -0,0 +1,52 @@
+<wsp:Policy wsu:Id="UTOverTransport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+  <wsp:All>
+	<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:TransportToken>
+		  <wsp:Policy>
+			<sp:HttpsToken RequireClientCertificate="false"/>
+		  </wsp:Policy>
+		</sp:TransportToken>
+		<sp:AlgorithmSuite>
+		  <wsp:Policy>
+			<sp:Basic256/>
+		  </wsp:Policy>
+		</sp:AlgorithmSuite>
+		<sp:Layout>
+		  <wsp:Policy>
+			<sp:Lax/>
+		  </wsp:Policy>
+		</sp:Layout>
+		<sp:IncludeTimestamp/>
+	  </wsp:Policy>
+	</sp:TransportBinding>
+	<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+		<wsp:Policy>
+			<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
+	  </wsp:Policy>
+	</sp:SignedSupportingTokens>
+	
+	<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+		<ramp:user>alice</ramp:user>
+		<ramp:encryptionUser>bob</ramp:encryptionUser>
+		<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+		
+		<ramp:signatureCrypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:signatureCrypto>
+		<ramp:encryptionCypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:encryptionCypto>
+	</ramp:RampartConfig>
+  </wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/2.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/2.xml
new file mode 100644
index 0000000..079037f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/2.xml
@@ -0,0 +1,69 @@
+<wsp:Policy wsu:Id="SigOnly" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/3.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/3.xml
new file mode 100644
index 0000000..324beec
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/3.xml
@@ -0,0 +1,73 @@
+<wsp:Policy wsu:Id="SigEncr" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
+
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/4.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/4.xml
new file mode 100644
index 0000000..d52c0cb
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/4.xml
@@ -0,0 +1,74 @@
+<wsp:Policy wsu:Id="EncrSig" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptBeforeSigning />
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
+
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/5.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/5.xml
new file mode 100644
index 0000000..505ec25
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/5.xml
@@ -0,0 +1,75 @@
+<wsp:Policy wsu:Id="SigEncrDK" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
+
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/6.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/6.xml
new file mode 100644
index 0000000..4494117
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/6.xml
@@ -0,0 +1,72 @@
+<wsp:Policy wsu:Id="SigEncrTripleDesRSA15" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+	<wsp:All>
+		<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:InitiatorToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+							<wsp:Policy>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:InitiatorToken>
+				<sp:RecipientToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+							<wsp:Policy>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:RecipientToken>
+				<sp:AlgorithmSuite>
+					<wsp:Policy>
+						<sp:TripleDesRsa15/>
+					</wsp:Policy>
+				</sp:AlgorithmSuite>
+				<sp:Layout>
+					<wsp:Policy>
+						<sp:Strict/>
+					</wsp:Policy>
+				</sp:Layout>
+				<sp:IncludeTimestamp/>
+				<sp:OnlySignEntireHeadersAndBody/>
+			</wsp:Policy>
+		</sp:AsymmetricBinding>
+		<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:MustSupportRefKeyIdentifier/>
+				<sp:MustSupportRefIssuerSerial/>
+			</wsp:Policy>
+		</sp:Wss10>
+		<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:SignedParts>
+		<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:EncryptedParts>
+		<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+			<ramp:user>alice</ramp:user>
+			<ramp:encryptionUser>bob</ramp:encryptionUser>
+			<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+			
+			<ramp:signatureCrypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:signatureCrypto>
+			<ramp:encryptionCypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:encryptionCypto>
+		</ramp:RampartConfig>
+	</wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/7.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/7.xml
new file mode 100644
index 0000000..d0aa401
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/7.xml
@@ -0,0 +1,74 @@
+<wsp:Policy wsu:Id="SigEncrTripleDesRSA15DK" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+	<wsp:All>
+		<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:InitiatorToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+							<wsp:Policy>
+								<sp:RequireDerivedKeys/>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:InitiatorToken>
+				<sp:RecipientToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+							<wsp:Policy>
+								<sp:RequireDerivedKeys/>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:RecipientToken>
+				<sp:AlgorithmSuite>
+					<wsp:Policy>
+						<sp:TripleDesRsa15/>
+					</wsp:Policy>
+				</sp:AlgorithmSuite>
+				<sp:Layout>
+					<wsp:Policy>
+						<sp:Strict/>
+					</wsp:Policy>
+				</sp:Layout>
+				<sp:IncludeTimestamp/>
+				<sp:OnlySignEntireHeadersAndBody/>
+			</wsp:Policy>
+		</sp:AsymmetricBinding>
+		<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:MustSupportRefKeyIdentifier/>
+				<sp:MustSupportRefIssuerSerial/>
+			</wsp:Policy>
+		</sp:Wss10>
+		<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:SignedParts>
+		<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:EncryptedParts>
+		<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+			<ramp:user>alice</ramp:user>
+			<ramp:encryptionUser>bob</ramp:encryptionUser>
+			<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+			
+			<ramp:signatureCrypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:signatureCrypto>
+			<ramp:encryptionCypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:encryptionCypto>
+		</ramp:RampartConfig>
+	</wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/8.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/8.xml
new file mode 100644
index 0000000..d0aa401
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/8.xml
@@ -0,0 +1,74 @@
+<wsp:Policy wsu:Id="SigEncrTripleDesRSA15DK" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+	<wsp:All>
+		<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:InitiatorToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+							<wsp:Policy>
+								<sp:RequireDerivedKeys/>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:InitiatorToken>
+				<sp:RecipientToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+							<wsp:Policy>
+								<sp:RequireDerivedKeys/>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:RecipientToken>
+				<sp:AlgorithmSuite>
+					<wsp:Policy>
+						<sp:TripleDesRsa15/>
+					</wsp:Policy>
+				</sp:AlgorithmSuite>
+				<sp:Layout>
+					<wsp:Policy>
+						<sp:Strict/>
+					</wsp:Policy>
+				</sp:Layout>
+				<sp:IncludeTimestamp/>
+				<sp:OnlySignEntireHeadersAndBody/>
+			</wsp:Policy>
+		</sp:AsymmetricBinding>
+		<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:MustSupportRefKeyIdentifier/>
+				<sp:MustSupportRefIssuerSerial/>
+			</wsp:Policy>
+		</sp:Wss10>
+		<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:SignedParts>
+		<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:EncryptedParts>
+		<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+			<ramp:user>alice</ramp:user>
+			<ramp:encryptionUser>bob</ramp:encryptionUser>
+			<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+			
+			<ramp:signatureCrypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:signatureCrypto>
+			<ramp:encryptionCypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:encryptionCypto>
+		</ramp:RampartConfig>
+	</wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/9.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/9.xml
new file mode 100644
index 0000000..b3a25f4
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/9.xml
@@ -0,0 +1,73 @@
+<wsp:Policy wsu:Id="SigEncrTripleDesRSA15" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+	<wsp:All>
+		<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:InitiatorToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+							<wsp:Policy>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:InitiatorToken>
+				<sp:RecipientToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+							<wsp:Policy>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:RecipientToken>
+				<sp:AlgorithmSuite>
+					<wsp:Policy>
+						<sp:TripleDesRsa15/>
+					</wsp:Policy>
+				</sp:AlgorithmSuite>
+				<sp:Layout>
+					<wsp:Policy>
+						<sp:Strict/>
+					</wsp:Policy>
+				</sp:Layout>
+				<sp:IncludeTimestamp/>
+				<sp:EncryptSignature />
+				<sp:OnlySignEntireHeadersAndBody/>
+			</wsp:Policy>
+		</sp:AsymmetricBinding>
+		<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:MustSupportRefKeyIdentifier/>
+				<sp:MustSupportRefIssuerSerial/>
+			</wsp:Policy>
+		</sp:Wss10>
+		<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:SignedParts>
+		<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:EncryptedParts>
+		<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+			<ramp:user>alice</ramp:user>
+			<ramp:encryptionUser>bob</ramp:encryptionUser>
+			<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+			
+			<ramp:signatureCrypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:signatureCrypto>
+			<ramp:encryptionCypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:encryptionCypto>
+		</ramp:RampartConfig>
+	</wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/sc-1.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/sc-1.xml
new file mode 100644
index 0000000..d06a4de
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/sc-1.xml
@@ -0,0 +1,123 @@
+<wsp:Policy wsu:Id="SecConvPolicy1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:BootstrapPolicy>
+										<wsp:Policy wsu:Id="SigEncrTripleDesRSA15" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+										<wsp:ExactlyOne>
+											<wsp:All>
+												<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+													<wsp:Policy>
+														<sp:InitiatorToken>
+															<wsp:Policy>
+																<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+																	<wsp:Policy>
+																		<sp:WssX509V3Token10/>
+																	</wsp:Policy>
+																</sp:X509Token>
+															</wsp:Policy>
+														</sp:InitiatorToken>
+														<sp:RecipientToken>
+															<wsp:Policy>
+																<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+																	<wsp:Policy>
+																		<sp:WssX509V3Token10/>
+																	</wsp:Policy>
+																</sp:X509Token>
+															</wsp:Policy>
+														</sp:RecipientToken>
+														<sp:AlgorithmSuite>
+															<wsp:Policy>
+																<sp:TripleDesRsa15/>
+															</wsp:Policy>
+														</sp:AlgorithmSuite>
+														<sp:Layout>
+															<wsp:Policy>
+																<sp:Strict/>
+															</wsp:Policy>
+														</sp:Layout>
+														<sp:IncludeTimestamp/>
+														<sp:OnlySignEntireHeadersAndBody/>
+													</wsp:Policy>
+												</sp:AsymmetricBinding>
+												<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+													<wsp:Policy>
+														<sp:MustSupportRefKeyIdentifier/>
+														<sp:MustSupportRefIssuerSerial/>
+													</wsp:Policy>
+												</sp:Wss10>
+												<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+													<sp:Body/>
+												</sp:SignedParts>
+												<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+													<sp:Body/>
+												</sp:EncryptedParts>
+											</wsp:All>
+										</wsp:ExactlyOne>
+										</wsp:Policy>
+									</sp:BootstrapPolicy>
+								</wsp:Policy>
+							</sp:SecureConversationToken>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptSignature/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+				
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/policy/sc-2.xml b/rampart_1_1/modules/integration/test-resources/rampart/policy/sc-2.xml
new file mode 100644
index 0000000..81d4eb4
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/policy/sc-2.xml
@@ -0,0 +1,131 @@
+<wsp:Policy wsu:Id="SecConvPolicy2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:BootstrapPolicy>
+										<wsp:Policy>
+											<sp:EncryptedParts>
+												<sp:Body/>
+											</sp:EncryptedParts>
+											<sp:SymmetricBinding>
+												<wsp:Policy>
+													<sp:ProtectionToken>
+														<wsp:Policy>
+															<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+																<wsp:Policy>
+																	<sp:RequireDerivedKeys/>
+																	<sp:RequireThumbprintReference/>
+																	<sp:WssX509V3Token10/>
+																</wsp:Policy>
+															</sp:X509Token>
+														</wsp:Policy>
+													</sp:ProtectionToken>
+													<sp:AlgorithmSuite>
+														<wsp:Policy>
+															<sp:Basic128Rsa15/>
+														</wsp:Policy>
+													</sp:AlgorithmSuite>
+													<sp:Layout>
+														<wsp:Policy>
+															<sp:Strict/>
+														</wsp:Policy>
+													</sp:Layout>
+													<sp:IncludeTimestamp/>
+													<sp:EncryptSignature/>
+													<sp:OnlySignEntireHeadersAndBody/>
+												</wsp:Policy>
+											</sp:SymmetricBinding>
+											<sp:EndorsingSupportingTokens>
+												<wsp:Policy>
+													<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+														<wsp:Policy>
+															<sp:RequireThumbprintReference/>
+															<sp:WssX509V3Token10/>
+														</wsp:Policy>
+													</sp:X509Token>
+												</wsp:Policy>
+											</sp:EndorsingSupportingTokens>
+											<sp:Wss11>
+												<wsp:Policy>
+													<sp:MustSupportRefKeyIdentifier/>
+													<sp:MustSupportRefIssuerSerial/>
+													<sp:MustSupportRefThumbprint/>
+													<sp:MustSupportRefEncryptedKey/>
+													<sp:RequireSignatureConfirmation/>
+												</wsp:Policy>
+											</sp:Wss11>
+											<sp:Trust10>
+												<wsp:Policy>
+													<sp:MustSupportIssuedTokens/>
+													<sp:RequireClientEntropy/>
+													<sp:RequireServerEntropy/>
+												</wsp:Policy>
+											</sp:Trust10>
+										</wsp:Policy>
+									</sp:BootstrapPolicy>
+								</wsp:Policy>
+							</sp:SecureConversationToken>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic128Rsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptSignature/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+				</wsp:Policy>
+			</sp:Wss11>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">test-resources/rampart/store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-1.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-1.xml
new file mode 100644
index 0000000..4c727d3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-1.xml
@@ -0,0 +1,51 @@
+<service name="SecureService1">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+
+	<wsp:Policy wsu:Id="UTOverTransport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+	  <wsp:All>
+		<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+		  <wsp:Policy>
+			<sp:TransportToken>
+			  <wsp:Policy>
+				<sp:HttpsToken RequireClientCertificate="false"/>
+			  </wsp:Policy>
+			</sp:TransportToken>
+			<sp:AlgorithmSuite>
+			  <wsp:Policy>
+				<sp:Basic256/>
+			  </wsp:Policy>
+			</sp:AlgorithmSuite>
+			<sp:Layout>
+			  <wsp:Policy>
+				<sp:Lax/>
+			  </wsp:Policy>
+			</sp:Layout>
+			<sp:IncludeTimestamp/>
+		  </wsp:Policy>
+		</sp:TransportBinding>
+		<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
+		  </wsp:Policy>
+		</sp:SignedSupportingTokens>
+		
+		<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+			<ramp:user>alice</ramp:user>
+			<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+		</ramp:RampartConfig>
+		
+	  </wsp:All>
+	</wsp:ExactlyOne>
+	</wsp:Policy>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-2.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-2.xml
new file mode 100644
index 0000000..ec80dd5
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-2.xml
@@ -0,0 +1,76 @@
+<service name="SecureService2">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+	
+	<wsp:Policy wsu:Id="SigOnly" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-3.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-3.xml
new file mode 100644
index 0000000..3d1bf60
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-3.xml
@@ -0,0 +1,88 @@
+<service name="SecureService3">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+
+	<wsp:Policy wsu:Id="SigEncr" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+		<wsp:ExactlyOne>
+			<wsp:All>
+				<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<wsp:Policy>
+						<sp:InitiatorToken>
+							<wsp:Policy>
+								<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+									<wsp:Policy>
+										<sp:WssX509V3Token10/>
+									</wsp:Policy>
+								</sp:X509Token>
+							</wsp:Policy>
+						</sp:InitiatorToken>
+						<sp:RecipientToken>
+							<wsp:Policy>
+								<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+									<wsp:Policy>
+										<sp:WssX509V3Token10/>
+									</wsp:Policy>
+								</sp:X509Token>
+							</wsp:Policy>
+						</sp:RecipientToken>
+						<sp:AlgorithmSuite>
+							<wsp:Policy>
+								<sp:Basic256/>
+							</wsp:Policy>
+						</sp:AlgorithmSuite>
+						<sp:Layout>
+							<wsp:Policy>
+								<sp:Strict/>
+							</wsp:Policy>
+						</sp:Layout>
+						<sp:IncludeTimestamp/>
+						<sp:OnlySignEntireHeadersAndBody/>
+					</wsp:Policy>
+				</sp:AsymmetricBinding>
+				<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<wsp:Policy>
+						<sp:MustSupportRefKeyIdentifier/>
+						<sp:MustSupportRefIssuerSerial/>
+					</wsp:Policy>
+				</sp:Wss10>
+				<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<sp:Body/>
+				</sp:SignedParts>
+				<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<sp:Body/>
+				</sp:EncryptedParts>
+
+				<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+					<ramp:user>alice</ramp:user>
+					<ramp:encryptionUser>bob</ramp:encryptionUser>
+					<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+					
+					<ramp:signatureCrypto>
+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+						</ramp:crypto>
+					</ramp:signatureCrypto>
+					<ramp:encryptionCypto>
+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+						</ramp:crypto>
+					</ramp:encryptionCypto>
+				</ramp:RampartConfig>
+
+			</wsp:All>
+		</wsp:ExactlyOne>
+	</wsp:Policy>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-4.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-4.xml
new file mode 100644
index 0000000..537164f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-4.xml
@@ -0,0 +1,89 @@
+<service name="SecureService4">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+
+<wsp:Policy wsu:Id="EncrSig" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptBeforeSigning />
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-5.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-5.xml
new file mode 100644
index 0000000..64fcecb
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-5.xml
@@ -0,0 +1,89 @@
+<service name="SecureService5">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+	
+	<wsp:Policy wsu:Id="SigEncrDK" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+		<wsp:ExactlyOne>
+			<wsp:All>
+				<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<wsp:Policy>
+						<sp:InitiatorToken>
+							<wsp:Policy>
+								<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+									<wsp:Policy>
+										<sp:RequireDerivedKeys/>
+										<sp:WssX509V3Token10/>
+									</wsp:Policy>
+								</sp:X509Token>
+							</wsp:Policy>
+						</sp:InitiatorToken>
+						<sp:RecipientToken>
+							<wsp:Policy>
+								<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+									<wsp:Policy>
+										<sp:RequireDerivedKeys/>
+										<sp:WssX509V3Token10/>
+									</wsp:Policy>
+								</sp:X509Token>
+							</wsp:Policy>
+						</sp:RecipientToken>
+						<sp:AlgorithmSuite>
+							<wsp:Policy>
+								<sp:Basic256/>
+							</wsp:Policy>
+						</sp:AlgorithmSuite>
+						<sp:Layout>
+							<wsp:Policy>
+								<sp:Strict/>
+							</wsp:Policy>
+						</sp:Layout>
+						<sp:IncludeTimestamp/>
+						<sp:OnlySignEntireHeadersAndBody/>
+					</wsp:Policy>
+				</sp:AsymmetricBinding>
+				<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<wsp:Policy>
+						<sp:MustSupportRefKeyIdentifier/>
+						<sp:MustSupportRefIssuerSerial/>
+					</wsp:Policy>
+				</sp:Wss10>
+				<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<sp:Body/>
+				</sp:SignedParts>
+				<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<sp:Body/>
+				</sp:EncryptedParts>
+
+				<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+					<ramp:user>alice</ramp:user>
+					<ramp:encryptionUser>bob</ramp:encryptionUser>
+					<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+					
+					<ramp:signatureCrypto>
+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+						</ramp:crypto>
+					</ramp:signatureCrypto>
+					<ramp:encryptionCypto>
+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+						</ramp:crypto>
+					</ramp:encryptionCypto>
+				</ramp:RampartConfig>
+			</wsp:All>
+		</wsp:ExactlyOne>
+	</wsp:Policy>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-6.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-6.xml
new file mode 100644
index 0000000..ff37936
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-6.xml
@@ -0,0 +1,86 @@
+<service name="SecureService6">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+	
+	<wsp:Policy wsu:Id="SigEncrTripleDesRSA15" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:TripleDesRsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+	</wsp:Policy>
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-7.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-7.xml
new file mode 100644
index 0000000..b476623
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-7.xml
@@ -0,0 +1,89 @@
+<service name="SecureService7">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+	
+	<wsp:Policy wsu:Id="SigEncrTripleDesRSA15DK" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:TripleDesRsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+
+		</wsp:All>
+	</wsp:ExactlyOne>
+	</wsp:Policy>
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-8.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-8.xml
new file mode 100644
index 0000000..5e67653
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-8.xml
@@ -0,0 +1,89 @@
+<service name="SecureService8">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+	
+	<wsp:Policy wsu:Id="SigEncrTripleDesRSA15DK" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:TripleDesRsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>useReqSigCert</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+
+		</wsp:All>
+	</wsp:ExactlyOne>
+	</wsp:Policy>
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-9.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-9.xml
new file mode 100644
index 0000000..fbf1eda
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-9.xml
@@ -0,0 +1,87 @@
+<service name="SecureService9">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+	
+	<wsp:Policy wsu:Id="SigEncrTripleDesRSA15" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:TripleDesRsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptSignature />
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+	</wsp:Policy>
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-sc-1.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-sc-1.xml
new file mode 100644
index 0000000..1bd254f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-sc-1.xml
@@ -0,0 +1,176 @@
+<service name="SecureServiceSC1">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+	<module ref="rahas"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+
+	<wsp:Policy wsu:Id="SecConvPolicy1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:BootstrapPolicy>
+										<wsp:Policy wsu:Id="SigEncrTripleDesRSA15" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+										<wsp:ExactlyOne>
+											<wsp:All>
+												<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+													<wsp:Policy>
+														<sp:InitiatorToken>
+															<wsp:Policy>
+																<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+																	<wsp:Policy>
+																		<sp:WssX509V3Token10/>
+																	</wsp:Policy>
+																</sp:X509Token>
+															</wsp:Policy>
+														</sp:InitiatorToken>
+														<sp:RecipientToken>
+															<wsp:Policy>
+																<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+																	<wsp:Policy>
+																		<sp:WssX509V3Token10/>
+																	</wsp:Policy>
+																</sp:X509Token>
+															</wsp:Policy>
+														</sp:RecipientToken>
+														<sp:AlgorithmSuite>
+															<wsp:Policy>
+																<sp:TripleDesRsa15/>
+															</wsp:Policy>
+														</sp:AlgorithmSuite>
+														<sp:Layout>
+															<wsp:Policy>
+																<sp:Strict/>
+															</wsp:Policy>
+														</sp:Layout>
+														<sp:IncludeTimestamp/>
+														<sp:OnlySignEntireHeadersAndBody/>
+													</wsp:Policy>
+												</sp:AsymmetricBinding>
+												<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+													<wsp:Policy>
+														<sp:MustSupportRefKeyIdentifier/>
+														<sp:MustSupportRefIssuerSerial/>
+													</wsp:Policy>
+												</sp:Wss10>
+												<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+													<sp:Body/>
+												</sp:SignedParts>
+												<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+													<sp:Body/>
+												</sp:EncryptedParts>
+											</wsp:All>
+										</wsp:ExactlyOne>
+										</wsp:Policy>
+									</sp:BootstrapPolicy>
+								</wsp:Policy>
+							</sp:SecureConversationToken>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptSignature/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+	</wsp:Policy>
+	
+    <parameter name="sct-issuer-config">
+		<sct-issuer-config>
+			<cryptoProperties>
+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">
+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>
+                    <property name="org.apache.ws.security.crypto.merlin.file">sts.jks</property>
+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>
+                </crypto>
+			</cryptoProperties>
+			<addRequestedAttachedRef />
+			<addRequestedUnattachedRef />
+
+            <!--
+               Key computation mechanism
+               1 - Use Request Entropy
+               2 - Provide Entropy
+               3 - Use Own Key
+            -->
+            <keyComputation>3</keyComputation>
+
+            <!--
+               proofKeyType element is valid only if the keyComputation is set to 3
+               i.e. Use Own Key
+
+               Valid values are: EncryptedKey & BinarySecret
+            -->
+            <proofKeyType>BinarySecret</proofKeyType>
+        </sct-issuer-config>
+    </parameter>
+	
+	<parameter name="token-canceler-config">
+		<token-canceler-config>
+			<!--<proofToken>EncryptedKey</proofToken>-->
+			<!--<cryptoProperties>sctIssuer.properties</cryptoProperties>-->
+			<!--<addRequestedAttachedRef />-->
+		</token-canceler-config>
+    </parameter>
+	
+	
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/services-sc-2.xml b/rampart_1_1/modules/integration/test-resources/rampart/services-sc-2.xml
new file mode 100644
index 0000000..2d0febe
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/services-sc-2.xml
@@ -0,0 +1,186 @@
+<service name="SecureServiceSC2">
+
+	<module ref="addressing"/>
+	<module ref="rampart"/>
+	<module ref="rahas"/>
+
+	<parameter locked="false" name="ServiceClass">org.apache.rampart.Service</parameter>
+
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+		<actionMapping>urn:echo</actionMapping>
+	</operation>
+
+	<wsp:Policy wsu:Id="SecConvPolicy2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:BootstrapPolicy>
+										<wsp:Policy>
+											<sp:EncryptedParts>
+												<sp:Body/>
+											</sp:EncryptedParts>
+											<sp:SymmetricBinding>
+												<wsp:Policy>
+													<sp:ProtectionToken>
+														<wsp:Policy>
+															<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+																<wsp:Policy>
+																	<sp:RequireDerivedKeys/>
+																	<sp:RequireThumbprintReference/>
+																	<sp:WssX509V3Token10/>
+																</wsp:Policy>
+															</sp:X509Token>
+														</wsp:Policy>
+													</sp:ProtectionToken>
+													<sp:AlgorithmSuite>
+														<wsp:Policy>
+															<sp:Basic128Rsa15/>
+														</wsp:Policy>
+													</sp:AlgorithmSuite>
+													<sp:Layout>
+														<wsp:Policy>
+															<sp:Strict/>
+														</wsp:Policy>
+													</sp:Layout>
+													<sp:IncludeTimestamp/>
+													<sp:EncryptSignature/>
+													<sp:OnlySignEntireHeadersAndBody/>
+												</wsp:Policy>
+											</sp:SymmetricBinding>
+											<sp:EndorsingSupportingTokens>
+												<wsp:Policy>
+													<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+														<wsp:Policy>
+															<sp:RequireThumbprintReference/>
+															<sp:WssX509V3Token10/>
+														</wsp:Policy>
+													</sp:X509Token>
+												</wsp:Policy>
+											</sp:EndorsingSupportingTokens>
+											<sp:Wss11>
+												<wsp:Policy>
+													<sp:MustSupportRefKeyIdentifier/>
+													<sp:MustSupportRefIssuerSerial/>
+													<sp:MustSupportRefThumbprint/>
+													<sp:MustSupportRefEncryptedKey/>
+													<sp:RequireSignatureConfirmation/>
+												</wsp:Policy>
+											</sp:Wss11>
+											<sp:Trust10>
+												<wsp:Policy>
+													<sp:MustSupportIssuedTokens/>
+													<sp:RequireClientEntropy/>
+													<sp:RequireServerEntropy/>
+												</wsp:Policy>
+											</sp:Trust10>
+										</wsp:Policy>
+									</sp:BootstrapPolicy>
+								</wsp:Policy>
+							</sp:SecureConversationToken>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic128Rsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptSignature/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+				</wsp:Policy>
+			</sp:Wss11>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>bob</ramp:user>
+				<ramp:encryptionUser>alice</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.PWCallback</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">store.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+				
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+	</wsp:Policy>
+	
+    <parameter name="sct-issuer-config">
+		<sct-issuer-config>
+			<cryptoProperties>
+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">
+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>
+                    <property name="org.apache.ws.security.crypto.merlin.file">sts.jks</property>
+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>
+                </crypto>
+			</cryptoProperties>
+			<addRequestedAttachedRef />
+			<addRequestedUnattachedRef />
+
+            <!--
+               Key computation mechanism
+               1 - Use Request Entropy
+               2 - Provide Entropy
+               3 - Use Own Key
+            -->
+            <keyComputation>3</keyComputation>
+
+            <!--
+               proofKeyType element is valid only if the keyComputation is set to 3
+               i.e. Use Own Key
+
+               Valid values are: EncryptedKey & BinarySecret
+            -->
+            <proofKeyType>BinarySecret</proofKeyType>
+        </sct-issuer-config>
+    </parameter>
+	
+	<parameter name="token-canceler-config">
+		<token-canceler-config>
+			<!--<proofToken>EncryptedKey</proofToken>-->
+			<!--<cryptoProperties>sctIssuer.properties</cryptoProperties>-->
+			<!--<addRequestedAttachedRef />-->
+		</token-canceler-config>
+    </parameter>
+	
+	
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/rampart/store.jks b/rampart_1_1/modules/integration/test-resources/rampart/store.jks
new file mode 100644
index 0000000..02d7c4e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rampart/store.jks
Binary files differ
diff --git a/rampart_1_1/modules/integration/test-resources/rpc/test-rpc-2.wsdl b/rampart_1_1/modules/integration/test-resources/rpc/test-rpc-2.wsdl
new file mode 100644
index 0000000..ece01c0
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rpc/test-rpc-2.wsdl
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:types="http://www.example.com/types" xmlns:y="http://www.example.com" targetNamespace="http://www.example.com">

+	<types></types>

+	<message name="requestMessage">

+		<part name="part1" type="xs:string"/>

+		<part name="part2" type="xs:int"/>

+	</message>

+	<message name="responseMessage">

+		<part name="part1" type="xs:string"/>

+	</message>

+	<portType name="echoPortType">

+		<operation name="echo">

+			<input message="y:requestMessage"/>

+			<output message="y:responseMessage"/>

+		</operation>

+	</portType>

+	<binding name="echoBinding" type="y:echoPortType">

+		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<operation name="echo">

+			<soap:operation soapAction="echo"/>

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+		</operation>

+	</binding>

+	<service name="serviceName">

+		<port binding="y:echoBinding" name="httpPort">

+			<soap:address location="http://localhost:8080/axis2/services/echo"/>

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/test-resources/rpc/test-rpc-3.wsdl b/rampart_1_1/modules/integration/test-resources/rpc/test-rpc-3.wsdl
new file mode 100644
index 0000000..e0bc518
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/rpc/test-rpc-3.wsdl
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:types="http://www.example.com/types" xmlns:y="http://www.example.com" targetNamespace="http://www.example.com">

+	<types/>

+	<types>

+		<xs:schema targetNamespace="http://www.example.com/types">

+			<xs:complexType name="myComplexType">

+				<xs:sequence>

+					<xs:element name="myElt" type="xs:string"/>

+				</xs:sequence>

+			</xs:complexType>

+		</xs:schema>

+	</types>

+	<message name="requestMessage">

+		<part name="part1" type="xs:string"/>

+		<part name="part2" type="xs:int"/>

+		<part name="part3" type="types:myComplexType"/>

+	</message>

+	<message name="responseMessage">

+		<part name="part1" type="xs:string"/>

+	</message>

+	<portType name="echoPortType">

+		<operation name="echo">

+			<input message="y:requestMessage"/>

+			<output message="y:responseMessage"/>

+		</operation>

+	</portType>

+	<binding name="echoBinding" type="y:echoPortType">

+		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<operation name="echo">

+			<soap:operation soapAction="echo"/>

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+		</operation>

+	</binding>

+	<service name="serviceName">

+		<port name="httpPort" binding="y:echoBinding">

+			<soap:address location="http://localhost:8080/axis2/services/echo"/>

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/integration/test-resources/security/complete.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/complete.client.axis2.xml
new file mode 100644
index 0000000..a2f910c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/complete.client.axis2.xml
@@ -0,0 +1,120 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <module ref="addressing"/>
+
+    <!-- Test with addressing and MTOM: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Timestamp Signature Encrypt</items>
+        <user>alice</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <signatureKeyIdentifier>SKIKeyIdentifier</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+        <encryptionUser>bob</encryptionUser>
+        <signatureParts>{Element}{http://www.w3.org/2005/08/addressing}To;{Element}{http://www.w3.org/2005/08/addressing}ReplyTo;{Element}{http://www.w3.org/2005/08/addressing}MessageID;{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp</signatureParts>
+
+        <optimizeParts>//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</optimizeParts>
+      </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Timestamp Signature Encrypt</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+      </action>
+    </parameter>
+
+    <!-- Test with addressing and MTOM: Client's Configuration:END-->
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+
+  <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/complete.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/complete.service.axis2.xml
new file mode 100644
index 0000000..f2410ef
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/complete.service.axis2.xml
@@ -0,0 +1,135 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+    <parameter name="enableMTOM" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the addressing module -->
+    <module ref="addressing"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+  <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/complete.service.xml b/rampart_1_1/modules/integration/test-resources/security/complete.service.xml
new file mode 100644
index 0000000..9ebf528
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/complete.service.xml
@@ -0,0 +1,31 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Timestamp Signature Encrypt</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+      </action>
+    </parameter>
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Timestamp Signature Encrypt</items>
+        <user>bob</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <signatureKeyIdentifier>SKIKeyIdentifier</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+        <encryptionUser>alice</encryptionUser>
+        <signatureParts>{Element}{http://www.w3.org/2005/08/addressing}To;{Element}{http://www.w3.org/2005/08/addressing}ReplyTo;{Element}{http://www.w3.org/2005/08/addressing}MessageID;{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp</signatureParts>
+
+        <optimizeParts>//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</optimizeParts>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/s1.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s1.client.axis2.xml
new file mode 100644
index 0000000..23f61a3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s1.client.axis2.xml
@@ -0,0 +1,102 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 1: Client's Configuration:START-->
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>UsernameToken</items>
+        <user>Chris</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <passwordType>PasswordText</passwordType>
+      </action>
+    </parameter>
+    <!-- Scenario 1: Client's Configuration:END-->
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s1.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s1.service.axis2.xml
new file mode 100644
index 0000000..ad9fdea
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s1.service.axis2.xml
@@ -0,0 +1,131 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s1.service.xml b/rampart_1_1/modules/integration/test-resources/security/s1.service.xml
new file mode 100644
index 0000000..d6afa98
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s1.service.xml
@@ -0,0 +1,15 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>UsernameToken</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/s2.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s2.client.axis2.xml
new file mode 100644
index 0000000..27d00c3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s2.client.axis2.xml
@@ -0,0 +1,110 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 2: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>UsernameToken Encrypt</items>
+        <user>Chris</user>
+        <addUTElements>Nonce Created</addUTElements>
+        <encryptionParts>{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken</encryptionParts>
+        <encryptionUser>bob</encryptionUser>
+        <encryptionPropFile>interop.properties</encryptionPropFile>
+        <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <passwordType>PasswordText</passwordType>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+      </action>
+    </parameter>
+
+    <!-- Scenario 2: Client's Configuration:END-->
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+ <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s2.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s2.service.axis2.xml
new file mode 100644
index 0000000..301d582
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s2.service.axis2.xml
@@ -0,0 +1,132 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s2.service.xml b/rampart_1_1/modules/integration/test-resources/security/s2.service.xml
new file mode 100644
index 0000000..77c8eac
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s2.service.xml
@@ -0,0 +1,16 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>UsernameToken Encrypt</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <decryptionPropFile>interop.properties</decryptionPropFile>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/s2a.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s2a.client.axis2.xml
new file mode 100644
index 0000000..a6baf87
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s2a.client.axis2.xml
@@ -0,0 +1,108 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 2: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>UsernameTokenSignature Encrypt Timestamp</items>
+        <user>Chris</user>
+        <encryptionParts>{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken</encryptionParts>
+        <encryptionUser>bob</encryptionUser>
+        <encryptionPropFile>interop.properties</encryptionPropFile>
+        <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+      </action>
+    </parameter>
+
+    <!-- Scenario 2: Client's Configuration:END-->
+
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+<phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s2a.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s2a.service.axis2.xml
new file mode 100644
index 0000000..9eea2ff
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s2a.service.axis2.xml
@@ -0,0 +1,130 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+  <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s2a.service.xml b/rampart_1_1/modules/integration/test-resources/security/s2a.service.xml
new file mode 100644
index 0000000..d2e7727
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s2a.service.xml
@@ -0,0 +1,16 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>UsernameTokenSignature UsernameToken Encrypt Timestamp</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <decryptionPropFile>interop.properties</decryptionPropFile>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/s3.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s3.client.axis2.xml
new file mode 100644
index 0000000..98eb1de
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s3.client.axis2.xml
@@ -0,0 +1,119 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 3: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <user>alice</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+        <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+        <encryptionUser>bob</encryptionUser>
+        <enableSignatureConfirmation>false</enableSignatureConfirmation>
+      </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <enableSignatureConfirmation>false</enableSignatureConfirmation>
+      </action>
+    </parameter>
+
+    <!-- Scenario 3: Client's Configuration:END-->
+
+
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s3.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s3.service.axis2.xml
new file mode 100644
index 0000000..5cbfacf
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s3.service.axis2.xml
@@ -0,0 +1,130 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+<phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s3.service.xml b/rampart_1_1/modules/integration/test-resources/security/s3.service.xml
new file mode 100644
index 0000000..12cf1c7
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s3.service.xml
@@ -0,0 +1,31 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <enableSignatureConfirmation>false</enableSignatureConfirmation>
+      </action>
+    </parameter>
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <user>bob</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+        <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+        <encryptionUser>alice</encryptionUser>
+        <enableSignatureConfirmation>false</enableSignatureConfirmation>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/s4.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s4.client.axis2.xml
new file mode 100644
index 0000000..7ec31ce
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s4.client.axis2.xml
@@ -0,0 +1,116 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 4: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+        <action>
+            <items>Signature Encrypt Timestamp</items>
+            <user>alice</user>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+            <encryptionKeyIdentifier>EmbeddedKeyName</encryptionKeyIdentifier>
+            <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+            <signaturePropFile>interop.properties</signaturePropFile>
+            <EmbeddedKeyCallbackClass>org.apache.axis2.security.PWCallback</EmbeddedKeyCallbackClass>
+            <EmbeddedKeyName>SessionKey</EmbeddedKeyName>
+        </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+        <action>
+            <items>Signature Encrypt Timestamp</items>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <signaturePropFile>interop.properties</signaturePropFile>
+        </action>
+    </parameter>
+
+    <!-- Scenario 4: Client's Configuration:END-->
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s4.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s4.service.axis2.xml
new file mode 100644
index 0000000..1dc5f01
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s4.service.axis2.xml
@@ -0,0 +1,131 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s4.service.xml b/rampart_1_1/modules/integration/test-resources/security/s4.service.xml
new file mode 100644
index 0000000..7f422a9
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s4.service.xml
@@ -0,0 +1,30 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+      </action>
+    </parameter>
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <user>bob</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signatureKeyIdentifier>SKIKeyIdentifier</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>EmbeddedKeyName</encryptionKeyIdentifier>
+        <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <EmbeddedKeyCallbackClass>org.apache.axis2.security.PWCallback</EmbeddedKeyCallbackClass>
+        <EmbeddedKeyName>SessionKey</EmbeddedKeyName>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/s5.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s5.client.axis2.xml
new file mode 100644
index 0000000..8588496
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s5.client.axis2.xml
@@ -0,0 +1,114 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 5: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+
+        <action>
+            <items>Signature NoSerialization</items>
+            <user>alice</user>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+            <signatureParts>{}{http://xmlsoap.org/Ping}ticket</signatureParts>
+            <signaturePropFile>interop.properties</signaturePropFile>
+        </action>
+
+        <action>
+            <items>Signature Timestamp</items>
+            <user>alice</user>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <signaturePropFile>interop.properties</signaturePropFile>
+        </action>
+
+    </parameter>
+
+    <!-- Scenario 5: Client's Configuration:END-->
+   
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s5.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s5.service.axis2.xml
new file mode 100644
index 0000000..833dc0e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s5.service.axis2.xml
@@ -0,0 +1,132 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s5.service.xml b/rampart_1_1/modules/integration/test-resources/security/s5.service.xml
new file mode 100644
index 0000000..6c9089d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s5.service.xml
@@ -0,0 +1,16 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Signature Signature Timestamp</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/s6.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s6.client.axis2.xml
new file mode 100644
index 0000000..d4a3f28
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s6.client.axis2.xml
@@ -0,0 +1,117 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 6: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+        <action>
+            <items>Encrypt Signature Timestamp</items>
+            <user>alice</user>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+            <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+            <encryptionUser>bob</encryptionUser>
+            <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+            <signaturePropFile>interop.properties</signaturePropFile>
+        </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+        <action>
+            <items>Encrypt Signature Timestamp</items>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <signaturePropFile>interop.properties</signaturePropFile>
+        </action>
+    </parameter>
+
+    <!-- Scenario 6: Client's Configuration:END-->
+
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s6.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s6.service.axis2.xml
new file mode 100644
index 0000000..833dc0e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s6.service.axis2.xml
@@ -0,0 +1,132 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s6.service.xml b/rampart_1_1/modules/integration/test-resources/security/s6.service.xml
new file mode 100644
index 0000000..c67c3d8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s6.service.xml
@@ -0,0 +1,29 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Encrypt Signature Timestamp</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+      </action>
+    </parameter>
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Encrypt Signature Timestamp</items>
+        <user>bob</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <encryptionKeyIdentifier>DirectReference</encryptionKeyIdentifier>
+        <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+        <encryptionUser>alice</encryptionUser>
+        <signatureKeyIdentifier>SKIKeyIdentifier</signatureKeyIdentifier>
+        <signaturePropFile>interop.properties</signaturePropFile>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/s7.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s7.client.axis2.xml
new file mode 100644
index 0000000..d5574d8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s7.client.axis2.xml
@@ -0,0 +1,118 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 7: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+        <action>
+            <items>Signature Encrypt Timestamp</items>
+            <user>alice</user>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+            <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+            <encryptionUser>bob</encryptionUser>
+            <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+            <signaturePropFile>interop.properties</signaturePropFile>
+            <encryptionPropFile>interop.properties</encryptionPropFile>
+            <signatureParts>{}{http://schemas.xmlsoap.org/soap/envelope/}Body;STRTransform</signatureParts>
+        </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+        <action>
+            <items>Signature Encrypt Timestamp</items>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <signaturePropFile>interop.properties</signaturePropFile>
+            <decryptionPropFile>interop.properties</decryptionPropFile>
+        </action>
+    </parameter>
+
+    <!-- Scenario 7: Client's Configuration:END-->
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s7.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/s7.service.axis2.xml
new file mode 100644
index 0000000..9dfe931
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s7.service.axis2.xml
@@ -0,0 +1,132 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/s7.service.xml b/rampart_1_1/modules/integration/test-resources/security/s7.service.xml
new file mode 100644
index 0000000..f8111e7
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/s7.service.xml
@@ -0,0 +1,31 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation> 
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <decryptionPropFile>interop.properties</decryptionPropFile>
+      </action>
+    </parameter>
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <user>bob</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <encryptionKeyIdentifier>DirectReference</encryptionKeyIdentifier>
+        <encryptionSymAlgorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</encryptionSymAlgorithm>
+        <encryptionUser>alice</encryptionUser>
+        <signatureKeyIdentifier>SKIKeyIdentifier</signatureKeyIdentifier>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <encryptionPropFile>interop.properties</encryptionPropFile>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/sST1.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/sST1.client.axis2.xml
new file mode 100644
index 0000000..5786ada
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sST1.client.axis2.xml
@@ -0,0 +1,100 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario ST1: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+        <action>
+            <items>Timestamp SAMLTokenUnsigned</items>
+            <samlPropFile>axis2.saml.properties</samlPropFile>
+        </action>
+    </parameter>
+
+    <!-- Scenario ST1: Client's Configuration:END-->
+   
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/sST1.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/sST1.service.axis2.xml
new file mode 100644
index 0000000..42a69a3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sST1.service.axis2.xml
@@ -0,0 +1,131 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/sST1.service.xml b/rampart_1_1/modules/integration/test-resources/security/sST1.service.xml
new file mode 100644
index 0000000..1bb5dc7
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sST1.service.xml
@@ -0,0 +1,14 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Timestamp SAMLTokenUnsigned</items>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/security/sc/s1-services.xml b/rampart_1_1/modules/integration/test-resources/security/sc/s1-services.xml
new file mode 100644
index 0000000..1d92054
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sc/s1-services.xml
@@ -0,0 +1,84 @@
+<service name="SecureService">

+

+	<module ref="rampart"/>

+	<module ref="rahas"/>

+

+	<parameter locked="false" name="ServiceClass">org.apache.axis2.security.sc.Service</parameter>

+

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+		<actionMapping>urn:echo</actionMapping>

+	</operation>

+

+ <!--   <parameter name="sct-issuer-config">

+		<sct-issuer-config>

+			<proofToken>EncryptedKey</proofToken>

+			<cryptoProperties>sctIssuer.properties</cryptoProperties>

+			<addRequestedAttachedRef />

+		</sct-issuer-config>

+    </parameter>-->

+

+    <parameter name="sct-issuer-config">

+        <sct-issuer-config>

+            <addRequestedAttachedRef/>

+            <addRequestedUnattachedRef/>

+            <cryptoProperties>

+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>

+                    <property name="org.apache.ws.security.crypto.merlin.file">sts.jks</property>

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>

+                </crypto>

+            </cryptoProperties>

+

+            <!--

+               Key computation mechanism

+               1 - Use Request Entropy

+               2 - Provide Entropy

+               3 - Use Own Key

+            -->

+            <keyComputation>3</keyComputation>

+

+            <!--

+               proofKeyType element is valid only if the keyComputation is set to 3

+               i.e. Use Own Key

+

+               Valid values are: EncryptedKey & BinarySecret

+            -->

+            <proofKeyType>EncryptedKey</proofKeyType>

+        </sct-issuer-config>

+    </parameter>

+

+     <parameter name="token-canceler-config">

+		<token-canceler-config>

+			<!--<proofToken>EncryptedKey</proofToken>-->

+			<!--<cryptoProperties>sctIssuer.properties</cryptoProperties>-->

+			<!--<addRequestedAttachedRef />-->

+		</token-canceler-config>

+    </parameter>

+

+    <parameter xmlns="" name="sc-configuration">

+		<sc-configuration xmlns="">

+			<scope xmlns="">service</scope>

+			<passwordCallbackClass xmlns="">org.apache.axis2.security.sc.PWCallback</passwordCallbackClass>

+			<cryptoProperties xmlns="">sctIssuer.properties</cryptoProperties>

+		</sc-configuration>

+    </parameter>

+

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature</items>

+        <signaturePropFile>sctIssuer.properties</signaturePropFile>

+      </action>

+    </parameter>

+

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <encryptionUser>useReqSigCert</encryptionUser>

+        <user>sts</user>

+        <signaturePropFile xmlns="">sctIssuer.properties</signaturePropFile>

+	<passwordCallbackClass xmlns="">org.apache.axis2.security.sc.PWCallback</passwordCallbackClass>

+      </action>

+    </parameter>

+

+</service>

diff --git a/rampart_1_1/modules/integration/test-resources/security/sc/s2-services.xml b/rampart_1_1/modules/integration/test-resources/security/sc/s2-services.xml
new file mode 100644
index 0000000..8c942a6
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sc/s2-services.xml
@@ -0,0 +1,64 @@
+<service name="SecureService">

+

+	<module ref="rampart"/>

+	<module ref="rahas"/>

+

+	<parameter locked="false" name="ServiceClass">org.apache.axis2.security.sc.Service</parameter>

+

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+		<actionMapping>urn:echo</actionMapping>

+	</operation>    

+

+    <parameter name="sct-issuer-config">

+		<sct-issuer-config>

+			<addRequestedAttachedRef />

+			<addRequestedUnattachedRef />

+            <cryptoProperties>

+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>

+                    <property name="org.apache.ws.security.crypto.merlin.file">sts.jks</property>

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>

+                </crypto>

+            </cryptoProperties>

+

+            <!--

+               Key computation mechanism

+               1 - Use Request Entropy

+               2 - Provide Entropy

+               3 - Use Own Key

+            -->

+            <keyComputation>3</keyComputation>

+

+            <!--

+               proofKeyType element is valid only if the keyComputation is set to 3

+               i.e. Use Own Key

+

+               Valid values are: EncryptedKey & BinarySecret

+            -->

+            <proofKeyType>BinarySecret</proofKeyType>

+        </sct-issuer-config>

+    </parameter>

+    

+    <parameter xmlns="" name="sc-configuration">

+		<sc-configuration xmlns="">

+			<scope xmlns="">service</scope>

+			<passwordCallbackClass xmlns="">org.apache.axis2.security.sc.PWCallback</passwordCallbackClass>

+			<cryptoProperties xmlns="">sctIssuer.properties</cryptoProperties>

+		</sc-configuration>

+	</parameter>

+

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature</items>

+        <signaturePropFile>sctIssuer.properties</signaturePropFile>

+      </action>

+    </parameter>

+

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp</items>

+      </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/integration/test-resources/security/sc/s3-services.xml b/rampart_1_1/modules/integration/test-resources/security/sc/s3-services.xml
new file mode 100644
index 0000000..754a0ca
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sc/s3-services.xml
@@ -0,0 +1,66 @@
+<service name="SecureService">

+

+	<module ref="rampart"/>

+

+	<parameter locked="false" name="ServiceClass">org.apache.axis2.security.sc.Service</parameter>

+

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+		<actionMapping>urn:echo</actionMapping>

+	</operation>    

+

+    <parameter name="sct-issuer-config">

+		<sct-issuer-config>

+            <cryptoProperties>

+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>

+                    <property name="org.apache.ws.security.crypto.merlin.file">sts.jks</property>

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>

+                </crypto>

+            </cryptoProperties>

+            <addRequestedAttachedRef />

+

+            <!--

+               Key computation mechanism

+               1 - Use Request Entropy

+               2 - Provide Entropy

+               3 - Use Own Key

+            -->

+            <keyComputation>3</keyComputation>

+

+            <!--

+               proofKeyType element is valid only if the keyComputation is set to 3

+               i.e. Use Own Key

+

+               Valid values are: EncryptedKey & BinarySecret

+            -->

+            <proofKeyType>BinarySecret</proofKeyType>

+        </sct-issuer-config>

+    </parameter>

+    

+    <parameter xmlns="" name="sc-configuration">

+		<sc-configuration xmlns="">

+			<scope xmlns="">service</scope>

+			<passwordCallbackClass xmlns="">org.apache.axis2.security.sc.PWCallback</passwordCallbackClass>

+			<cryptoProperties xmlns="">sctIssuer.properties</cryptoProperties>

+		</sc-configuration>

+    </parameter>

+

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature</items>

+        <signaturePropFile>sctIssuer.properties</signaturePropFile>

+      </action>

+    </parameter>

+

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <encryptionUser>useReqSigCert</encryptionUser>

+        <user>sts</user>

+        <signaturePropFile xmlns="">sctIssuer.properties</signaturePropFile>

+	<passwordCallbackClass xmlns="">org.apache.axis2.security.sc.PWCallback</passwordCallbackClass>

+      </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/integration/test-resources/security/sc/s4-services.xml b/rampart_1_1/modules/integration/test-resources/security/sc/s4-services.xml
new file mode 100644
index 0000000..50b850a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sc/s4-services.xml
@@ -0,0 +1,67 @@
+<service name="SecureService">

+

+	<module ref="rampart"/>

+	<module ref="rahas"/>

+

+	<parameter locked="false" name="ServiceClass">org.apache.axis2.security.sc.Service</parameter>

+

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+		<actionMapping>urn:echo</actionMapping>

+	</operation>    

+

+    <parameter name="sct-issuer-config">

+		<sct-issuer-config>

+            <cryptoProperties>

+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>

+                    <property name="org.apache.ws.security.crypto.merlin.file">sts.jks</property>

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>

+                </crypto>

+            </cryptoProperties>

+            <addRequestedAttachedRef />

+

+            <!--

+               Key computation mechanism

+               1 - Use Request Entropy

+               2 - Provide Entropy

+               3 - Use Own Key

+            -->

+            <keyComputation>3</keyComputation>

+

+            <!--

+               proofKeyType element is valid only if the keyComputation is set to 3

+               i.e. Use Own Key

+

+               Valid values are: EncryptedKey & BinarySecret

+            -->

+            <proofKeyType>BinarySecret</proofKeyType>

+        </sct-issuer-config>

+    </parameter>

+    

+    <parameter xmlns="" name="sc-configuration">

+		<sc-configuration xmlns="">

+			<scope xmlns="">service</scope>

+			<passwordCallbackClass xmlns="">org.apache.axis2.security.sc.PWCallback</passwordCallbackClass>

+			<cryptoProperties xmlns="">sctIssuer.properties</cryptoProperties>

+		</sc-configuration>

+    </parameter>

+

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature</items>

+        <signaturePropFile>sctIssuer.properties</signaturePropFile>

+      </action>

+    </parameter>

+

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <encryptionUser>useReqSigCert</encryptionUser>

+        <user>sts</user>

+        <signaturePropFile xmlns="">sctIssuer.properties</signaturePropFile>

+	<passwordCallbackClass xmlns="">org.apache.axis2.security.sc.PWCallback</passwordCallbackClass>

+      </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/integration/test-resources/security/sc/sctIssuer.properties b/rampart_1_1/modules/integration/test-resources/security/sc/sctIssuer.properties
new file mode 100755
index 0000000..c126c57
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sc/sctIssuer.properties
@@ -0,0 +1,4 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=sts.jks
diff --git a/rampart_1_1/modules/integration/test-resources/security/sc/sec.jks b/rampart_1_1/modules/integration/test-resources/security/sc/sec.jks
new file mode 100755
index 0000000..7af24b2
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sc/sec.jks
Binary files differ
diff --git a/rampart_1_1/modules/integration/test-resources/security/sc/sec.properties b/rampart_1_1/modules/integration/test-resources/security/sc/sec.properties
new file mode 100755
index 0000000..3c3298d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sc/sec.properties
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=sec.jks
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/sc/sts.jks b/rampart_1_1/modules/integration/test-resources/security/sc/sts.jks
new file mode 100644
index 0000000..2db0a7c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/sc/sts.jks
Binary files differ
diff --git a/rampart_1_1/modules/integration/test-resources/security/secMtom.client.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/secMtom.client.axis2.xml
new file mode 100644
index 0000000..1cd840f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/secMtom.client.axis2.xml
@@ -0,0 +1,118 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Scenario 3 with MTOM: Client's Configuration:START-->
+
+    <parameter name="OutflowSecurity">
+        <action>
+            <items>Signature Encrypt Timestamp</items>
+            <user>alice</user>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <signaturePropFile>interop.properties</signaturePropFile>
+            <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+            <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+            <encryptionUser>bob</encryptionUser>
+
+            <optimizeParts>//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</optimizeParts>
+        </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+        <action>
+            <items>Signature Encrypt Timestamp</items>
+            <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+            <signaturePropFile>interop.properties</signaturePropFile>
+        </action>
+    </parameter>
+
+    <!-- Scenario 3 with MTOM: Client's Configuration:END-->
+
+
+   
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/secMtom.service.axis2.xml b/rampart_1_1/modules/integration/test-resources/security/secMtom.service.axis2.xml
new file mode 100644
index 0000000..3451dcc
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/secMtom.service.axis2.xml
@@ -0,0 +1,133 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+    <parameter name="enableMTOM" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the security module -->
+    <module ref="rampart"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/security/secMtom.service.xml b/rampart_1_1/modules/integration/test-resources/security/secMtom.service.xml
new file mode 100644
index 0000000..45f7a1f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/security/secMtom.service.xml
@@ -0,0 +1,31 @@
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiverInOut"/>
+	</operation>    
+
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+      </action>
+    </parameter>
+
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Signature Encrypt Timestamp</items>
+        <user>bob</user>
+        <passwordCallbackClass>org.apache.axis2.security.PWCallback</passwordCallbackClass>
+        <signaturePropFile>interop.properties</signaturePropFile>
+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+        <encryptionUser>alice</encryptionUser>
+
+        <optimizeParts>//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</optimizeParts>
+      </action>
+    </parameter>
+
+</service>
diff --git a/rampart_1_1/modules/integration/test-resources/service.wsdl b/rampart_1_1/modules/integration/test-resources/service.wsdl
new file mode 100644
index 0000000..a2e9728
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/service.wsdl
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions targetNamespace="http://services.axis.apache.org" xmlns:impl="http://services.axis.apache.org-impl" xmlns:intf="http://services.axis.apache.org" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

+    <!--WSDL created by Apache Axis version: 1.2.1

+    Built on Jun 14, 2005 (09:15:57 EDT)-->

+

+    <wsdl:message name="runRequest">

+

+    </wsdl:message>

+

+    <wsdl:message name="runResponse">

+

+    </wsdl:message>

+

+    <wsdl:portType name="OutService">

+

+        <wsdl:operation name="run">

+

+            <wsdl:input name="runRequest" message="intf:runRequest"/>

+

+            <wsdl:output name="runResponse" message="intf:runResponse"/>

+

+        </wsdl:operation>

+

+    </wsdl:portType>

+

+    <wsdl:binding name="localhost:8080SoapBinding" type="intf:OutService">

+

+        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+

+        <wsdl:operation name="run">

+

+            <wsdlsoap:operation soapAction=""/>

+

+            <wsdl:input name="runRequest">

+

+                <wsdlsoap:body use="literal"/>

+

+            </wsdl:input>

+

+            <wsdl:output name="runResponse">

+

+                <wsdlsoap:body use="literal"/>

+

+            </wsdl:output>

+

+        </wsdl:operation>

+

+    </wsdl:binding>

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/integration/test-resources/soap/emtyBodymessage.xml b/rampart_1_1/modules/integration/test-resources/soap/emtyBodymessage.xml
new file mode 100644
index 0000000..ea20929
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/emtyBodymessage.xml
@@ -0,0 +1,18 @@
+<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
diff --git a/rampart_1_1/modules/integration/test-resources/soap/minimalMessage.xml b/rampart_1_1/modules/integration/test-resources/soap/minimalMessage.xml
new file mode 100644
index 0000000..ea76d72
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/minimalMessage.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
+    <env:Body/>
+</env:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/soap/reallyReallyBigMessage.xml b/rampart_1_1/modules/integration/test-resources/soap/reallyReallyBigMessage.xml
new file mode 100644
index 0000000..687ed22
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/reallyReallyBigMessage.xml
@@ -0,0 +1,2529 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/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="Echo1">
+                <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:Echo1">
+                <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
diff --git a/rampart_1_1/modules/integration/test-resources/soap/sample1.txt b/rampart_1_1/modules/integration/test-resources/soap/sample1.txt
new file mode 100644
index 0000000..a5f7560
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/sample1.txt
@@ -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
diff --git a/rampart_1_1/modules/integration/test-resources/soap/sample1.xml b/rampart_1_1/modules/integration/test-resources/soap/sample1.xml
new file mode 100644
index 0000000..9d74dfe
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/sample1.xml
@@ -0,0 +1,9 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/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
diff --git a/rampart_1_1/modules/integration/test-resources/soap/security2-soap.xml b/rampart_1_1/modules/integration/test-resources/soap/security2-soap.xml
new file mode 100644
index 0000000..4d6c272
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/security2-soap.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
+    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+    xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext"
+    xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+    <S:Header>
+        <m:path xmlns:m="http://schemas.xmlsoap.org/rp">
+            <m:action>http://fabrikam123.com/getQuote</m:action>
+            <m:to>http://fabrikam123.com/stocks</m:to>
+            <m:from>mailto:johnsmith@fabrikam123.com</m:from>
+            <m:id>uuid:84b9f5d0-33fb-4a81-b02b-5b760641c1d6</m:id>
+        </m:path>
+        <wsse:Security>
+            <wsse:BinarySecurityToken
+                ValueType="wsse:X509v3"
+                EncodingType="wsse:Base64Binary"
+                Id="X509Token">
+                MIIEZzCCA9CgAwIBAgIQEmtJZc0rqrKh5i...
+            </wsse:BinarySecurityToken>
+            <ds:Signature>
+                <ds:SignedInfo>
+                    <ds:CanonicalizationMethod Algorithm=
+                                               "http://www.w3.org/2001/10/xml-exc-c14n#"/>
+                    <ds:SignatureMethod Algorithm=
+                                        "http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+                    <ds:Reference>
+                        <ds:Transforms>
+                            <ds:Transform Algorithm=
+                                          "http://...#RoutingTransform"/>
+                            <ds:Transform Algorithm=
+                                          "http://www.w3.org/2001/10/xml-exc-c14n#"/>
+                        </ds:Transforms>
+                        <ds:DigestMethod Algorithm=
+                                         "http://www.w3.org/2000/09/xmldsig#sha1"/>
+                        <ds:DigestValue>EULddytSo1...</ds:DigestValue>
+                    </ds:Reference>
+                </ds:SignedInfo>
+                <ds:SignatureValue>
+                    BL8jdfToEb1l/vXcMZNNjPOV...
+                </ds:SignatureValue>
+                <ds:KeyInfo>
+                    <wsse:SecurityTokenReference>
+                        <wsse:Reference URI="#X509Token"/>
+                    </wsse:SecurityTokenReference>
+                </ds:KeyInfo>
+            </ds:Signature>
+        </wsse:Security>
+    </S:Header>
+    <S:Body>
+        <tru:StockSymbol xmlns:tru="http://fabrikam123.com/payloads">
+            QQQ
+        </tru:StockSymbol>
+    </S:Body>
+</S:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/soap/soapmessage.txt b/rampart_1_1/modules/integration/test-resources/soap/soapmessage.txt
new file mode 100644
index 0000000..64e6139
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/soapmessage.txt
@@ -0,0 +1,17 @@
+POST /axis/services/EchoService HTTP/1.1

+Host: 127.0.0.1

+Content-Type: application/soap+xml; charset="utf-8"

+Connection: close

+

+<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
diff --git a/rampart_1_1/modules/integration/test-resources/soap/soapmessage.xml b/rampart_1_1/modules/integration/test-resources/soap/soapmessage.xml
new file mode 100644
index 0000000..0f49778
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/soapmessage.xml
@@ -0,0 +1,20 @@
+<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
diff --git a/rampart_1_1/modules/integration/test-resources/soap/soapmessage1.xml b/rampart_1_1/modules/integration/test-resources/soap/soapmessage1.xml
new file mode 100644
index 0000000..3d69585
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/soapmessage1.xml
@@ -0,0 +1,27 @@
+<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>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+            xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <ns1:accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef xmlns="tempUri" id="id0" soapenc:root="0"
+            soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+            xsi:type="xsd:int"
+            xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">1001
+        </multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/soap/whitespacedMessage.xml b/rampart_1_1/modules/integration/test-resources/soap/whitespacedMessage.xml
new file mode 100644
index 0000000..0af632b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soap/whitespacedMessage.xml
@@ -0,0 +1,27 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/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
diff --git a/rampart_1_1/modules/integration/test-resources/soapmessage.xml b/rampart_1_1/modules/integration/test-resources/soapmessage.xml
new file mode 100644
index 0000000..185af5e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/soapmessage.xml
@@ -0,0 +1,15 @@
+<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>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/swa/SwA-enabled-axis2.xml b/rampart_1_1/modules/integration/test-resources/swa/SwA-enabled-axis2.xml
new file mode 100755
index 0000000..256485b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/swa/SwA-enabled-axis2.xml
@@ -0,0 +1,155 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableSwA" locked="false">true</parameter>
+    <parameter name="cacheAttachments" locked="false">false</parameter>
+    <!-- Uncomment this to enable REST support -->
+    <!--    <parameter name="eanbleREST" locked="false">true</parameter>-->
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+   <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+  <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+            <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing-->
+    <module ref="addressing"/> 
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+       <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/swa/SwA-fileCache-enabled-axis2.xml b/rampart_1_1/modules/integration/test-resources/swa/SwA-fileCache-enabled-axis2.xml
new file mode 100755
index 0000000..72cf017
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/swa/SwA-fileCache-enabled-axis2.xml
@@ -0,0 +1,157 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableSwA" locked="false">true</parameter>
+    <parameter name="cacheAttachments" locked="false">true</parameter>
+    <parameter name="attachmentDIR" locked="false">target/test-resources/</parameter>
+    <parameter name="sizeThreshold" locked="false">4000</parameter>
+    <!-- Uncomment this to enable REST support -->
+    <!--    <parameter name="eanbleREST" locked="false">true</parameter>-->
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+   <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+  <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+            <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing-->
+    <module ref="addressing"/> 
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+       <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test-resources/swa/swainput.bin b/rampart_1_1/modules/integration/test-resources/swa/swainput.bin
new file mode 100755
index 0000000..8357796
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/swa/swainput.bin
@@ -0,0 +1,25 @@
+POST /axis2/services/EchoSwAService/echoAttachment HTTP/1.0

+Content-Type: multipart/related; type="text/xml"; start="<9D645C8EBB837CE54ABD027A3659535D>"; 	boundary="----=_Part_0_1977511.1123163571138"

+Accept: application/soap+xml, application/dime, multipart/related, text/*

+User-Agent: Axis/1.2.1

+Host: 127.0.0.1:8081

+Cache-Control: no-cache

+Pragma: no-cache

+Connection: close

+SOAPAction: ""

+

+

+------=_Part_0_1977511.1123163571138

+Content-Type: text/xml; charset=UTF-8

+Content-Transfer-Encoding: binary

+Content-Id: <9D645C8EBB837CE54ABD027A3659535D>

+

+<?xml version="1.0" encoding="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"><soapenv:Body><echoAttachment xmlns=""><source href="cid:3936AE19FBED55AE4620B81C73BDD76E" xmlns=""/></echoAttachment></soapenv:Body></soapenv:Envelope>

+------=_Part_0_1977511.1123163571138

+Content-Type: text/plain

+Content-Transfer-Encoding: binary

+Content-Id: <3936AE19FBED55AE4620B81C73BDD76E>

+

+Apache Axis2 - The NExt Generation Web Services Engine

+

+------=_Part_0_1977511.1123163571138--

diff --git a/rampart_1_1/modules/integration/test-resources/swa/test.jpg b/rampart_1_1/modules/integration/test-resources/swa/test.jpg
new file mode 100755
index 0000000..59c10ca
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/swa/test.jpg
Binary files differ
diff --git a/rampart_1_1/modules/integration/test-resources/wsdl20/GreatH.wsdl b/rampart_1_1/modules/integration/test-resources/wsdl20/GreatH.wsdl
new file mode 100644
index 0000000..a048a65
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/wsdl20/GreatH.wsdl
@@ -0,0 +1,55 @@
+<description xmlns="http://www.w3.org/2005/05/wsdl" targetNamespace="http://greath.example.com/2004/wsdl/resSvc" xmlns:tns="http://greath.example.com/2004/wsdl/resSvc" xmlns:ghns="http://greath.example.com/2004/schemas/resSvc" xmlns:wsoap="http://www.w3.org/2005/05/wsdl/soap" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
+    <documentation>
+        This document describes the GreatH Web service. Additional
+        application-level requirements for use of this service --
+        beyond what WSDL 2.0 is able to describe -- are available
+        at http://greath.example.com/2004/reservation-documentation.html
+    </documentation>
+    <types>
+        <xs:schema
+                xmlns:xs="http://www.w3.org/2001/XMLSchema"
+                targetNamespace="http://greath.example.com/2004/schemas/resSvc"
+                xmlns="http://greath.example.com/2004/schemas/resSvc">
+            <xs:element name="checkAvailability" type="tCheckAvailability"/>
+            <xs:complexType name="tCheckAvailability">
+                <xs:sequence>
+                    <xs:element name="checkInDate" type="xs:date"/>
+                    <xs:element name="checkOutDate" type="xs:date"/>
+                    <xs:element name="roomType" type="xs:string"/>
+                </xs:sequence>
+            </xs:complexType>
+            <xs:element name="checkAvailabilityResponse" type="xs:double"/>
+            <xs:element name="invalidDataError" type="xs:string"/>
+        </xs:schema>
+    </types>
+    <interface name="reservationInterface">
+        <fault name="invalidDataFault"
+               element="ghns:invalidDataError"/>
+        <operation name="opCheckAvailability"
+                   pattern="http://www.w3.org/2005/05/wsdl/in-out"
+                   style="http://www.w3.org/2005/05/wsdl/style/uri"
+                   safe="true">
+            <input messageLabel="In"
+                   element="ghns:checkAvailability"/>
+            <output messageLabel="Out"
+                    element="ghns:checkAvailabilityResponse"/>
+            <outfault ref="tns:invalidDataFault" messageLabel="Out"/>
+        </operation>
+    </interface>
+    <binding name="reservationSOAPBinding"
+             interface="tns:reservationInterface"
+             type="http://www.w3.org/2005/05/wsdl/soap"
+             wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP">
+        <fault ref="tns:invalidDataFault"
+               wsoap:code="soap:Sender"/>
+        <operation ref="tns:opCheckAvailability"
+                   wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/>
+    </binding>
+    <service name="reservationService"
+             interface="tns:reservationInterface">
+        <endpoint name="reservationEndpoint"
+                  binding="tns:reservationSOAPBinding"
+                  address="http://greath.example.com/2004/reservation"/>
+    </service>
+</description>
+
diff --git a/rampart_1_1/modules/integration/test-resources/wsdl20/HotelReservationService.wsdl b/rampart_1_1/modules/integration/test-resources/wsdl20/HotelReservationService.wsdl
new file mode 100644
index 0000000..0d50e33
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/wsdl20/HotelReservationService.wsdl
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<description
+    xmlns="http://www.w3.org/2006/01/wsdl"
+    targetNamespace= "http://greath.example.com/2004/wsdl/resSvc"
+    xmlns:tns= "http://greath.example.com/2004/wsdl/resSvc"
+    xmlns:ghns = "http://greath.example.com/2004/schemas/resSvc"
+    xmlns:wsoap= "http://www.w3.org/2006/01/wsdl/soap"
+    xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
+
+  <documentation>
+    This document describes the GreatH Web service.  Additional
+    application-level requirements for use of this service --
+    beyond what WSDL 2.0 is able to describe -- are available
+    at http://greath.example.com/2004/reservation-documentation.html
+  </documentation>
+
+  <types>
+    <xs:schema
+        xmlns:xs="http://www.w3.org/2001/XMLSchema"
+        targetNamespace="http://greath.example.com/2004/schemas/resSvc"
+        xmlns="http://greath.example.com/2004/schemas/resSvc">
+
+      <xs:element name="checkAvailability" type="tCheckAvailability"/>
+      <xs:complexType name="tCheckAvailability">
+        <xs:sequence>
+          <xs:element  name="checkInDate" type="xs:date"/>
+          <xs:element  name="checkOutDate" type="xs:date"/>
+          <xs:element  name="roomType" type="xs:string"/>
+        </xs:sequence>
+      </xs:complexType>
+
+      <xs:element name="checkAvailabilityResponse" type="xs:double"/>
+
+      <xs:element name="invalidDataError" type="xs:string"/>
+
+    </xs:schema>
+  </types>
+
+  <interface  name = "reservationInterface" >
+
+    <fault name = "invalidDataFault"
+            element = "ghns:invalidDataError"/>
+
+    <operation name="opCheckAvailability"
+            pattern="http://www.w3.org/2006/01/wsdl/in-out" >
+        <input messageLabel="In"
+              element="ghns:checkAvailability" />
+        <output messageLabel="Out"
+              element="ghns:checkAvailabilityResponse" />
+        <outfault ref="tns:invalidDataFault" messageLabel="Out"/>
+    </operation>
+
+  </interface>
+
+  <binding name="reservationSOAPBinding"
+	  interface="tns:reservationInterface"
+	  type="http://www.w3.org/2004/08/wsdl/soap12"
+	  wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP">
+
+    <operation ref="tns:opCheckAvailability"
+      wsoap:mep="http://www.w3.org/2006/01/wsdl/in-out"/>
+
+    <fault ref="tns:invalidDataFault"
+      wsoap:code="soap:Sender"/>
+
+  </binding>
+
+  <service name="reservationService"
+       interface="tns:reservationInterface">
+
+     <endpoint name="reservationEndpoint"
+               binding="tns:reservationSOAPBinding"
+               address ="http://greath.example.com/2004/reservation"/>
+
+  </service>
+
+</description>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test-resources/xsd/type-test.xsd b/rampart_1_1/modules/integration/test-resources/xsd/type-test.xsd
new file mode 100644
index 0000000..3898447
--- /dev/null
+++ b/rampart_1_1/modules/integration/test-resources/xsd/type-test.xsd
@@ -0,0 +1,1611 @@
+<?xml version="1.0" ?>

+<!-- 

+1st Draft release (27/10/2005)

+1. Removed all Meter and Revenue specific objects.

+2. Renamed all "ED" to "Meter".

+3. Moved <DayLastPurchase> element from <CustDetail> complex type to a new complex type <CustVendDetail>. <CustVendDetail> extends <CustDetail>.	

+4. Added generic STS business rule exceptions.

+5. Removed <header> enumeration.

+6. Created abstract <DeviceID> and <EANDeviceID> as a extension.

+7. Replaced <Token> with <CreditTokenTx> for <VerifyResp>.

+8. <ClientStatus> now associated with <BaseVendResp>.

+9.<CustVendDetail> now associated with <BaseVendResp>

+10. Removed <CreditUpdate> from <ClientStatus>.

+11. Login and Logout message pairs removed.

+28/10/2005	

+12. <CreditStatus> removed, <availCredit> element added to <ClientStatus>.

+13. <ean> changed to an attribute.

+14. <terminalID> <id> changed to attribute.

+15. <msgID> changed to attribute.

+16. <MsgIDUniqueNumber> datatype change"postiveInteger"

+7/11/2005

+17. <header> renamed to <dispHeader> and made optional.'

+18. corrected naming convention for <Currency>.

+10/11/2005

+19. Added <respDateTime> to <BaseResp>.	

+20. Renamed <CustomerIdentifier> to <CustIdentifier>.	

+21. Rename <customerMsg> to <custMsg>

+22. <TAX>, <amt> made mandatory.

+23. <XMLVendFault> renamed to <XMLVendFaultEx>.

+24. <LastestKRNEx> corrected to <LatestKRNEx>

+16/11/2005

+25. Added <desc> to <MeterSpecificTokenIssue> complex type.

+26. Added the following <CreditVendTokenIssue> specialisations, <SaleTokenIssue>, <FBETokenIssue>, <MCTTokenIssue> and <FreeToKenIssue>. This enables more than one type of token to be returned.

+27. Updated <KCTokenIssue> to be a specialisation of <MeterSpecificEngTokenIssue> and not <MeterSpecificTokenIssue>.

+28. <Currency>, <value> changed to an attribute.

+29. <UtilityDetail>, all sub elements made attributes.

+30. <VendorDetail>, all sub elements made attributes.

+31. Created <Units> complex type, update <CreditTokenIssue> with it.

+32. <CustDetail>, all sub elements made attributes.

+33. <CustVendDetail> sub elements made attributes.

+34. <MeterDetail>, <ExtMeterDetail>, <MeterType>, sub element made attributes.	

+35. <track2Data> made "required" in <ExtMeterDetail> complex type.

+36. <KCTData>, sub elements made attributes.

+22/11/2005	

+37. <MSNO> regular expression updated to (\S){3,13} 	

+-->

+<schema xmlns="http://www.w3.org/2001/XMLSchema"

+	targetNamespace="http://www.nrs.eskom.co.za/xmlvend/base/2.0/schema"

+	xmlns:i0="http://www.nrs.eskom.co.za/xmlvend/base/2.0/schema" elementFormDefault="qualified"

+	attributeFormDefault="unqualified">

+	<annotation>

+		<documentation> Hand coded XML Schema for NRS Prepaid Utility Vending Service defining base

+			(common) library for the Vending Markup Language (XMLVend) for SOAP request and response

+			messages [*** WS-I Compliant *** see http://www.ws-i.org] Version Number Date Namespace

+			2.0 October 2005

+		http://www.nrs.eskom.co.za/xmlvend/base/2.0/schema/2005/10</documentation>

+	</annotation>

+	<element name="adviceReq" type="i0:AdviceReq">

+		<annotation>

+			<documentation> System generated client request message to advise the server of the

+				outcome of a use case on the client. </documentation>

+		</annotation>

+	</element>

+	<complexType name="AdviceReq" abstract="true">

+		<annotation>

+			<documentation> Request must be extended to advise the server to take an appropriate

+				action based on the outcome of previous use case on the client. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BaseReq">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="adviceReqMsgID" type="i0:MsgID">

+						<annotation>

+							<documentation> The original request MsgID that is being advised.

+							</documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<element name="adviceResp" type="i0:AdviceResp">

+		<annotation>

+			<documentation> Server response message to a advice request message. </documentation>

+		</annotation>

+	</element>

+	<complexType name="AdviceResp" abstract="true">

+		<annotation>

+			<documentation> Response to advice request. Confirming that the advice has been

+				processed by the server. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BaseResp">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="adviceReqMsgID" type="i0:MsgID">

+						<annotation>

+							<documentation> The original request MsgID that has been advised.

+							</documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<element name="xmlvendFaultResp" type="i0:XMLVendFaultResp">

+		<annotation>

+			<documentation> Response to a XMLVend exception, business rule exception or a system

+				exception that occurs on the server when processing any other request.

+			</documentation>

+		</annotation>

+	</element>

+	<complexType name="XMLVendFaultResp">

+		<annotation>

+			<documentation> Response to a XMLVend exception or business rule exception that occurs

+				on the server when processing any other request. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BaseResp">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="fault" type="i0:Fault"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!-- Message Definitions  Ends-->

+	<!-- Complex Element Definitions Starts -->

+	<!--Advice Req Specialisations -->

+	<complexType name="ConfirmationAdviceReq">

+		<annotation>

+			<documentation> Advice specialisation, used to by the client to confirm that a previous

+				used case has been completed successfully. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:AdviceReq">

+				<sequence>

+					<element minOccurs="0" maxOccurs="1" name="payType" type="i0:PayType">

+						<annotation>

+							<documentation> Used to advise the server of the pay type that was used

+								in the transaction. That is, the pay type may not have been

+								available in the original request. </documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="ReversalAdviceReq">

+		<annotation>

+			<documentation> Advise specialisation, used to advise the server that the previous

+				transaction was not successfully completed on the client and the server should

+				reverse the transaction. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:AdviceReq"/>

+		</complexContent>

+	</complexType>

+	<complexType name="LastRespAdviceReq">

+		<annotation>

+			<documentation> Advise specialisation, used to advise the server the server to resend

+				the last response to the last client request, as the transaction was not

+				successfully completed on the client. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:AdviceReq"/>

+		</complexContent>

+	</complexType>

+	<!--Advice Req Specialisations Ends-->

+	<!--Advice Response Specialisations -->

+	<complexType name="ConfirmationAdviceResp">

+		<annotation>

+			<documentation> Response to confirmation advice. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:AdviceResp">

+				<attribute use="required" name="txConfirmed" type="boolean">

+					<annotation>

+						<documentation> true - transaction confirmed, false - transaction could not

+							be confirmed. </documentation>

+					</annotation>

+				</attribute>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="ReversalAdviceResp">

+		<complexContent>

+			<extension base="i0:AdviceResp">

+				<attribute use="required" name="txReversed" type="boolean">

+					<annotation>

+						<documentation> true - transaction reverse on server, false - transaction

+							could not be reversed on server. </documentation>

+					</annotation>

+				</attribute>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="LastRespAdviceResp">

+		<annotation>

+			<documentation> Response to lastResponse advice request, contains the complete last

+				response message sent by the server to this client. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:AdviceResp">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="lastResponse" type="i0:BaseResp">

+						<annotation>

+							<documentation> The complete last response message that was requested.

+							</documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--Advice Response Specialisations Ends-->

+	<complexType name="AuthCred">

+		<annotation>

+			<documentation> Provides operator authentication data to the server from the client.

+			</documentation>

+		</annotation>

+		<sequence>

+			<element minOccurs="1" maxOccurs="1" name="opName" type="i0:OpName"/>

+			<element minOccurs="0" maxOccurs="1" name="password" type="i0:Password"/>

+			<element minOccurs="0" maxOccurs="1" name="newPassword" type="i0:Password">

+				<annotation>

+					<documentation> A new pass phrase that will replace the one specified in the

+						"password" field. </documentation>

+				</annotation>

+			</element>

+		</sequence>

+	</complexType>

+	<complexType name="BaseResp">

+		<annotation>

+			<documentation> Returned in every response and defines the response message context.

+			</documentation>

+		</annotation>

+		<sequence>

+			<element minOccurs="1" maxOccurs="1" name="clientID" type="i0:DeviceID">

+				<annotation>

+					<documentation> This identifier is used to uniquely identify the vending client

+						that initiated a use case. If client side X509 certificates are used, then

+						the identifier must match the subject field specified in the certificate.

+						This identifier is usually mapped to a specific vendor account registered on

+						the vending server. The clientID may also be mapped to CDU ID for legacy

+						purposes. </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="1" maxOccurs="1" name="serverID" type="i0:DeviceID">

+				<annotation>

+					<documentation> This identifier is used to uniquely identify the vending server.

+						If server side X509 certificates are used, then the identifier must match

+						the subject field specified in the certificate. </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="1" maxOccurs="1" name="terminalID" type="i0:DeviceID">

+				<annotation>

+					<documentation> This identifier is used to identify the vending terminal that

+						initiated the use case. If the vending client also is a terminal then the

+						terminalID must default to "1". </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="1" maxOccurs="1" name="reqMsgID" type="i0:MsgID">

+				<annotation>

+					<documentation> This field contains the "msgID" that was created in the

+						corresponding request message. </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="1" maxOccurs="1" name="respDateTime" type="dateTime">

+				<annotation>

+					<documentation> The date time stamp of when the response was

+					created.</documentation>

+				</annotation>

+			</element>

+			<element minOccurs="0" maxOccurs="1" name="dispHeader" type="i0:Msg">

+				<annotation>

+					<documentation> A message targeted at the operator e.g. "Vendor credit limit is

+						about to be reached". </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="0" maxOccurs="1" name="operatorMsg" type="i0:Msg">

+				<annotation>

+					<documentation> A message targeted at the operator e.g. "Vendor credit limit is

+						about to be reached". </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="0" maxOccurs="1" name="custMsg" type="i0:Msg">

+				<annotation>

+					<documentation> A message targeted at the customer e.g. "Your FBE token for

+						the current month has not been claimed." </documentation>

+				</annotation>

+			</element>

+		</sequence>

+	</complexType>

+	<complexType name="BaseReq">

+		<annotation>

+			<documentation> Present in all requests, defines the request message context.

+			</documentation>

+		</annotation>

+		<sequence>

+			<element minOccurs="1" maxOccurs="1" name="clientID" type="i0:DeviceID"/>

+			<element minOccurs="1" maxOccurs="1" name="terminalID" type="i0:DeviceID"/>

+			<element minOccurs="1" maxOccurs="1" name="msgID" type="i0:MsgID">

+				<annotation>

+					<documentation> This is a identify for the request message. It is should be

+						unique across the system, when combined with the clientID. </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="0" maxOccurs="1" name="authCred" type="i0:AuthCred"/>

+		</sequence>

+	</complexType>

+	<complexType name="BaseVendReq">

+		<complexContent mixed="false">

+			<extension base="i0:BaseReq">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="resource" type="i0:Resource"/>

+					<element minOccurs="1" maxOccurs="1" name="idMethod" type="i0:VendIDMethod"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="BaseVendResp">

+		<complexContent>

+			<extension base="i0:BaseResp">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="clientStatus" type="i0:ClientStatus"/>

+					<element minOccurs="1" maxOccurs="1" name="utility" type="i0:UtilityDetail"/>

+					<element minOccurs="0" maxOccurs="1" name="vendor" type="i0:VendorDetail"/>

+					<element minOccurs="0" maxOccurs="1" name="custVendDetail"

+						type="i0:CustVendDetail">

+						<annotation>

+							<documentation> Details about the customer that "owns" the meter.

+							</documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--Batch Specialisations -->

+	<!--Batch Specialisations Ends-->

+	<complexType name="BatchStatus">

+		<annotation>

+			<documentation> Reports the status (open / closed) of the all the batches.

+			</documentation>

+		</annotation>

+		<attribute use="required" name="banking" type="i0:BatchStatusType"/>

+		<attribute use="required" name="sales" type="i0:BatchStatusType"/>

+		<attribute use="required" name="shift" type="i0:BatchStatusType"/>

+	</complexType>

+	<complexType name="ClientStatus">

+		<annotation>

+			<documentation> The server state in terms of the client's credit and batch statuses.

+			</documentation>

+		</annotation>

+		<sequence>

+			<element minOccurs="1" maxOccurs="1" name="availCredit" type="i0:Currency">

+				<annotation>

+					<documentation> The current vendor credit that is available for further

+						transactions. </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="0" maxOccurs="1" name="batchStatus" type="i0:BatchStatus"/>

+		</sequence>

+	</complexType>

+	<!--CustIdentifier Specialisation -->

+	<complexType name="CustIdentifier" abstract="true"/>

+	<complexType name="CustName">

+		<annotation>

+			<documentation> Contains the name of the customer - used as a search string.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:CustIdentifier">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="name" type="i0:PersonName"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="CustAddress">

+		<annotation>

+			<documentation> Contains the address of the customer - used as a search string.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:CustIdentifier">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="address" type="i0:Address"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="CustAccountNo">

+		<annotation>

+			<documentation> Contains the account number of the customer with a specific

+				organisation, usually the Utility - used as a search string. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:CustIdentifier">

+				<sequence>

+					<element minOccurs="0" maxOccurs="1" name="organisation"

+						type="i0:OrganisationName"/>

+				</sequence>

+				<attribute use="required" name="accNo" type="i0:AccountNo"/>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="CustIDNumber">

+		<annotation>

+			<documentation> Contains the government issued identity number of the customer - used as

+				a search string. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:CustIdentifier">

+				<attribute use="required" name="idNo" type="i0:IDNo"/>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--CustIdentifier Specialisation Ends-->

+	<complexType name="CustDetail">

+		<annotation>

+			<documentation> Contains the details of customer. </documentation>

+		</annotation>

+			<attribute use="required"  name="name" type="i0:PersonName"/>

+			<attribute use="required" name="address" type="i0:Address"/>

+			<attribute use="optional" name="contactNo" type="i0:ContactNo"/>

+			<attribute use="optional" name="accNo" type="i0:AccountNo"/>

+			<attribute use="optional" name="locRef" type="i0:LocRef">

+				<annotation>

+					<documentation> Contains an alternative reference to the customer location, such

+						as a Erf number. </documentation>

+				</annotation>

+			</attribute>

+	</complexType>

+	<complexType name="CustVendDetail">

+		<complexContent>

+			<extension base="i0:CustDetail">

+				<attribute use="optional" name="daysLastPurchase" type="integer">

+						<annotation>

+							<documentation> The number of days since the customer last purchased a

+								token. Typically used to calculate the service charge applicable.

+							</documentation>

+						</annotation>

+				 </attribute>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="Currency">

+		<annotation>

+			<documentation> Contains the amount and currency symbol. </documentation>

+		</annotation>

+		<attribute use="required" name="value" type="decimal"/>

+		<attribute use="required" name="symbol" type="i0:CurrencySymbol">

+			<annotation>

+				<documentation> The symbol of the currency used, as per ISO 4217. </documentation>

+			</annotation>

+		</attribute>

+	</complexType>

+	<complexType name="DeviceID" abstract="true">

+		<annotation>

+			<documentation> Abstract identifier for the client, server or terminal. </documentation>

+		</annotation>

+	</complexType>

+	<complexType name="EANDeviceID">

+		<annotation>

+			<documentation> The EAN is simply a 13-digit number used to uniquely identify the

+				client, server or terminal. Its basic components are: An EAN.UCC Company Prefix, a

+				Location Reference and a Check Digit. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:DeviceID">

+				<attribute use="required" name="ean" type="i0:EAN"/>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="GenericDeviceID">

+		<annotation>

+			<documentation> This is a generic identifier, that may be used to identifier a client,

+				server or terminal. It is however recommended that it be used for terminals only and

+				EAN's used for clients and servers. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:DeviceID">

+				<attribute use="required" name="id" type="i0:Msg"/>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--MeterSpecificTokenIssue Specialiations-->

+	<complexType name="MeterSpecificTokenIssue" abstract="true">

+		<annotation>

+			<documentation>Token information for a specific meter. </documentation>

+		</annotation>

+		<sequence>

+			<element minOccurs="1" maxOccurs="1" name="desc" type="i0:Msg">

+				<annotation>

+					<documentation>

+						Description of the meter specific token issue, eg. Prepayment Sale, Key Change 

+					</documentation>

+				</annotation>

+			</element>

+			<element minOccurs="1" maxOccurs="1" name="meterDetail" type="i0:MeterDetail">

+				<annotation>

+					<documentation> Details about the meter where the token will be entered. In the

+						case of KCTokenIssue, it will be contain the updated (To) meter key data.

+					</documentation>

+				</annotation>

+			</element>

+			<element minOccurs="1" maxOccurs="1" name="token" type="i0:Token">

+				<annotation>

+					<documentation> The cipher that will be entered into the meter as per the AT of

+						the meter. </documentation>

+				</annotation>

+			</element>

+		</sequence>

+	</complexType>

+	<complexType name="CreditTokenIssue">

+		<annotation>

+			<documentation> Information that is returned with all credit tokens that are vended by

+				the server. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:MeterSpecificTokenIssue">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="units" type="i0:Units"/>

+					<element minOccurs="1" maxOccurs="1" name="resource" type="i0:Resource">

+						<annotation>

+							<documentation> The type of resource being vended, e.g. Electricity,

+								water... </documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!-- Credit Token Issue Specialisations -->

+	<complexType name="SaleCredTokenIssue">

+		<annotation>

+			<documentation>

+				Credit Token issue returned for a normal prepayment sale token. Maps to transaction type, 000 - Prepayment Sale, NRS009-3.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:CreditTokenIssue"/>

+		</complexContent>

+	</complexType>

+	<complexType name="FBECredTokenIssue">

+		<annotation>

+			<documentation>

+				Credit Token issue returned for a free basic electricity token. Maps to transaction type, 010 - FBE token, NRS009-3.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:CreditTokenIssue"/>

+		</complexContent>

+	</complexType>

+	<complexType name="FreeCredTokenIssue">

+		<annotation>

+			<documentation>

+				Credit Token issue returned for a free token. Maps to transaction type, 005 - Free Issue, NRS009-3.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:CreditTokenIssue"/>

+		</complexContent>

+	</complexType>

+	<complexType name="MCTCredTokenIssue">

+		<annotation>

+			<documentation>

+				Credit Token issue returned for a meter credit transfer token. Maps to transaction type, 003 - Replacement, NRS009-3.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:CreditTokenIssue"/>

+		</complexContent>

+	</complexType>

+	

+	<complexType name="MeterSpecificEngTokenIssue" abstract="true">

+		<annotation>

+			<documentation> Generic Meter specific engineering token issue. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:MeterSpecificTokenIssue"/>

+		</complexContent>

+	</complexType>

+	<!--MeterSpecificEngTokenIssue Specialiations-->

+	<complexType name="KCTokenIssue">

+		<annotation>

+			<documentation> Information returned with all Key Change Token issues. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:MeterSpecificEngTokenIssue">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="kctData" type="i0:KCTData">

+						<annotation>

+							<documentation> The FROM and TO meter key data. </documentation>

+						</annotation>

+					</element>

+					<element minOccurs="0" maxOccurs="1" name="pwrLmtToken"

+						type="i0:PwrLmtTokenIssue">

+						<annotation>

+							<documentation> A power limit token that matches the specific tariff

+								index that is being updated. </documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="PwrLmtTokenIssue">

+		<annotation>

+			<documentation> Details of the power limit token being issued. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:MeterSpecificEngTokenIssue">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="pwrLmt" type="i0:PwrLmt">

+						<annotation>

+							<documentation> The power limit value that the meter will be set to.

+							</documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="PhUnbalTokenIssue">

+		<complexContent>

+			<extension base="i0:MeterSpecificEngTokenIssue">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="pwrLmt" type="i0:PwrLmt"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="ClearCreditTokenIssue">

+		<complexContent>

+			<extension base="i0:MeterSpecificEngTokenIssue"/>

+		</complexContent>

+	</complexType>

+	<complexType name="ClearTamperTokenIssue">

+		<complexContent>

+			<extension base="i0:MeterSpecificEngTokenIssue"/>

+		</complexContent>

+	</complexType>

+	<complexType name="WaterFactorTokenIssue">

+		<complexContent>

+			<extension base="i0:MeterSpecificEngTokenIssue">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="waterFactor" type="i0:WaterFactor"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--MeterSpecificEngTokenIssue Specialisations Ends-->

+	<!--IDMethod Specialisation -->

+	<complexType name="IDMethod" abstract="true"/>

+	<complexType name="CustIDMethod">

+		<annotation>

+			<documentation> Identifier used to identify the customer. </documentation>

+		</annotation>

+		<complexContent mixed="false">

+			<extension base="i0:IDMethod">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="custIdentifier"

+						type="i0:CustIdentifier"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="VendIDMethod">

+		<annotation>

+			<documentation> This identifier is typically used to identfiy the meter where the

+				requested token will be entered. </documentation>

+		</annotation>

+		<complexContent mixed="false">

+			<extension base="i0:IDMethod">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="meterIdentifier"

+						type="i0:MeterIdentifier">

+						<annotation>

+							<documentation> Identifier that identify the specific meter where the

+								token will be entered. </documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--IDMethod Specialisation Ends -->

+	<complexType name="KCTData">

+		<annotation>

+			<documentation> The FROM and TO meter key data. </documentation>

+		</annotation>

+		<attribute use="required" name="fromSGC" type="i0:STSSupplyGroupCode">

+				<annotation>

+					<documentation> The current meter supply group code(SGC). </documentation>

+				</annotation>

+		</attribute>

+		<attribute use="required" name="fromKRN" type="i0:STSKeyRevNo">

+				<annotation>

+					<documentation> The current meter key revision number (KRN) for the SGC.

+					</documentation>

+				</annotation>

+		</attribute>

+		<attribute use="required" name="fromTI" type="i0:STSTariffIndex">

+				<annotation>

+					<documentation> The current meter tariff index (TI). </documentation>

+				</annotation>

+		</attribute>

+		<attribute use="required" name="toSGC" type="i0:STSSupplyGroupCode">

+				<annotation>

+					<documentation> The new SGC. </documentation>

+				</annotation>

+		</attribute>

+		<attribute use="required" name="toKRN" type="i0:STSKeyRevNo">

+				<annotation>

+					<documentation> The new KRN. </documentation>

+				</annotation>

+		</attribute>

+		<attribute use="required" name="toTI" type="i0:STSTariffIndex">

+				<annotation>

+					<documentation> The new TI. </documentation>

+				</annotation>

+		</attribute>

+	</complexType>

+	<complexType name="MeterType">

+		<attribute use="required" name="at" type="i0:STSAT"/>

+		<attribute use="required" name="tt" type="i0:STSTT"/>

+	</complexType>

+	<!--MeterIdentifier Specialisation -->

+	<complexType name="MeterIdentifier" abstract="true"/>

+	<complexType name="MeterNumber">

+		<complexContent mixed="false">

+			<extension base="i0:MeterIdentifier">

+				<attribute use="required" name="msno" type="i0:MSNO"/>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="MeterConfig" abstract="true">

+		<annotation>

+			<documentation> Contains all information that describes the configuration of the meter.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:MeterIdentifier"/>

+		</complexContent>

+	</complexType>

+	<complexType name="MeterCard">

+		<annotation>

+			<documentation> The meter configuration information as obtained from the meter card, as

+				per NRS009-4-1. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:MeterConfig">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="track2Data" type="i0:NRSTrack2Data"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="MeterDetail">

+		<annotation>

+			<documentation> The meter configuration information as obtained from a meter card or old

+				token or some other source where all the meter configuration data is available.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:MeterConfig">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="meterType" type="i0:MeterType"/>

+					

+				</sequence>

+				<attribute use="required" name="msno" type="i0:MSNO"/>

+				<attribute use="required" name="sgc" type="i0:STSSupplyGroupCode"/>

+				<attribute use="required" name="krn" type="i0:STSKeyRevNo"/>

+				<attribute use="required" name="ti" type="i0:STSTariffIndex"/>

+				

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="ExtMeterDetail">

+		<annotation>

+			<documentation> Extension of the meter detail, to include further information about the

+				meter. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:MeterDetail">

+				<attribute use="optional" name="useSTT" type="boolean">

+						<annotation>

+							<documentation> Token generated with a Standard Token Translator (STT).

+							</documentation>

+						</annotation>

+				</attribute>

+				<attribute use="required" name="track2Data" type="i0:NRSTrack2Data">

+						<annotation>

+							<documentation> Containing the meter cards track 2 data, as per

+								NRS009-4-1. </documentation>

+						</annotation>

+				</attribute>			

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--MeterIdentifier Specialisation Ends -->

+	<complexType name="MsgID">

+		<annotation>

+			<documentation> Sequential identifier that allows each client request message to be

+				uniquely identified. </documentation>

+		</annotation>

+		<attribute use="required" name="dateTime" type="i0:MsgIDDateTime"/>

+		<attribute use="required" name="uniqueNumber" type="i0:MsgIDUniqueNumber"/>

+	</complexType>

+	<!--Pay Type Specialisations -->

+	<complexType name="PayType" abstract="true">

+		<annotation>

+			<documentation> Indicates the mechanism used to pay. It is extended to allow for

+				different types of payment mechanisms. </documentation>

+		</annotation>

+	</complexType>

+	<complexType name="Cash">

+		<complexContent>

+			<extension base="i0:PayType">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="tenderAmt" type="i0:Currency">

+						<annotation>

+							<documentation> The cash amount tendered. </documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="Cheque">

+		<complexContent>

+			<extension base="i0:PayType">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="cheqAmt" type="i0:Currency"/>

+					<element minOccurs="1" maxOccurs="1" name="accHolderName" type="i0:PersonName"/>

+					<element minOccurs="1" maxOccurs="1" name="AccHolderIDNo" type="i0:IDNo"/>

+					<element minOccurs="1" maxOccurs="1" name="accNo" type="i0:AccountNo"/>

+					<element minOccurs="1" maxOccurs="1" name="bankName" type="i0:OrganisationName"/>

+					<element minOccurs="1" maxOccurs="1" name="branchCode" type="i0:BranchCode"/>

+					<element minOccurs="1" maxOccurs="1" name="cheqNo" type="i0:ChequeNo"/>

+					<element minOccurs="1" maxOccurs="1" name="cheqType" type="i0:ChequeType"/>

+					<element minOccurs="0" maxOccurs="1" name="micr" type="i0:MICR"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="Card" abstract="true">

+		<complexContent>

+			<extension base="i0:PayType">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="cardAmt" type="i0:Currency"/>

+					<element minOccurs="1" maxOccurs="1" name="accHolderName" type="i0:PersonName"/>

+					<element minOccurs="1" maxOccurs="1" name="pan" type="i0:AccountNo">

+						<annotation>

+							<documentation> The primary account number. </documentation>

+						</annotation>

+					</element>

+					<element minOccurs="1" maxOccurs="1" name="expDate" type="i0:BankCardExpiry"/>

+					<element minOccurs="1" maxOccurs="1" name="cvNum" type="i0:BankCardCVNum"/>

+					<element minOccurs="1" maxOccurs="1" name="clearingHouse"

+						type="i0:OrganisationName">

+						<annotation>

+							<documentation> The name of the card association, e.g. VISA, MasterCard,

+								etc </documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="CreditCard">

+		<complexContent>

+			<extension base="i0:Card"/>

+		</complexContent>

+	</complexType>

+	<complexType name="DebitCard">

+		<complexContent>

+			<extension base="i0:Card"/>

+		</complexContent>

+	</complexType>

+	<complexType name="Unknown">

+		<annotation>

+			<documentation> Refers to a payment type that may not be known at the time of the

+				request. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:PayType"/>

+		</complexContent>

+	</complexType>

+	<!--Resource Specialisations-->

+	<complexType name="Resource" abstract="true">

+		<annotation>

+			<documentation> The type of prepaid resource being requested. </documentation>

+		</annotation>

+	</complexType>

+	<complexType name="Electricity">

+		<complexContent>

+			<extension base="i0:Resource"/>

+		</complexContent>

+	</complexType>

+	<complexType name="Water">

+		<complexContent>

+			<extension base="i0:Resource"/>

+		</complexContent>

+	</complexType>

+	<complexType name="Gas">

+		<complexContent>

+			<extension base="i0:Resource"/>

+		</complexContent>

+	</complexType>

+	<complexType name="ConnectionTime">

+		<complexContent>

+			<extension base="i0:Resource"/>

+		</complexContent>

+	</complexType>

+	<complexType name="CurrencyResource">

+		<complexContent>

+			<extension base="i0:Resource"/>

+		</complexContent>

+	</complexType>

+	<!--Resource Specialisations Ends-->

+	<complexType name="Tariff">

+		<annotation>

+			<documentation> Contains information about the tariff that was used to process the

+				transaction. </documentation>

+		</annotation>

+		<sequence>

+			<element minOccurs="1" maxOccurs="1" name="name" type="i0:Msg">

+				<annotation>

+					<documentation> Name of the tariff. e.g. Home Light 1 </documentation>

+				</annotation>

+			</element>

+			<element minOccurs="0" maxOccurs="1" name="desc" type="i0:Msg">

+				<annotation>

+					<documentation>Optional description of the tariff. </documentation>

+				</annotation>

+			</element>

+		</sequence>

+	</complexType>

+	<!--Tax specialisations -->

+	<complexType name="Tax" abstract="true">

+		<annotation>

+			<documentation> TAX that is applicable to a transaction. </documentation>

+		</annotation>

+		<sequence>

+			<element minOccurs="1" maxOccurs="1" name="amt" type="i0:Currency">

+				<annotation>

+					<documentation> The TAX amount of a transaction. </documentation>

+				</annotation>

+			</element>

+		</sequence>

+	</complexType>

+	<complexType name="VAT">

+		<annotation>

+			<documentation> A instance of TAX, referred to Value Added Tax and expressed as a

+				percentage. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:Tax">

+				<attribute use="required" name="rate" type="i0:Percentage">

+					<annotation>

+						<documentation> The percentage rate of VAT, as applied to the transaction

+							value. </documentation>

+					</annotation>

+				</attribute>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--Tax specialisations -->

+	<!--Token Specialisations-->

+	<complexType name="Token" abstract="true">

+		<annotation>

+			<documentation> Generic prepaid token that is generated by the server. </documentation>

+		</annotation>

+	</complexType>

+	<complexType name="KCToken">

+		<annotation>

+			<documentation> A key change token, that consists of two STS tokens. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:Token">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="set1stMeterKey" type="i0:STS1Token">

+						<annotation>

+							<documentation> First 20 digit STS token. </documentation>

+						</annotation>

+					</element>

+					<element minOccurs="1" maxOccurs="1" name="set2ndMeterKey" type="i0:STS1Token">

+						<annotation>

+							<documentation> Second 20 digit STS token. </documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="STS1Token">

+		<annotation>

+			<documentation> The 20 digit STS 1 token as defined in the STS 1 specifications. For the

+				TrialCredit Vend request the STS1Token value will dfault to "0000000000000000".

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:Token">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="stsCipher" type="i0:STSCipherText"/>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<!--Token Specialisations Ends-->

+	<!--Token Info Specialisations -->

+	<complexType name="TokenInfo" abstract="true">

+		<annotation>

+			<documentation> Information about the prepaid token generated. </documentation>

+		</annotation>

+	</complexType>

+	<complexType name="STS1TokenInfo">

+		<annotation>

+			<documentation> Token information for STS1 tokens. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:TokenInfo">

+				<sequence>

+					<element minOccurs="1" maxOccurs="1" name="tokenID" type="decimal">

+						<annotation>

+							<documentation> As defined by STS. </documentation>

+						</annotation>

+					</element>

+					<element minOccurs="1" maxOccurs="1" name="transferAmt" type="decimal">

+						<annotation>

+							<documentation> As defined by STS. </documentation>

+						</annotation>

+					</element>

+					<element minOccurs="1" maxOccurs="1" name="tokenClass"

+						type="i0:TokenSubClassType">

+						<annotation>

+							<documentation> As defined by STS. </documentation>

+						</annotation>

+					</element>

+				</sequence>

+			</extension>

+		</complexContent>

+	</complexType>

+	<complexType name="TokenSubClassType">

+		<annotation>

+			<documentation> Potential token sub class types, as per STS. </documentation>

+		</annotation>

+		<sequence>

+			<choice maxOccurs="1" minOccurs="1">

+				<element name="credit" type="i0:CreditTokenSubClassType"/>

+				<element name="nonMeterManagement" type="i0:NonMeterSpecificEng"/>

+				<element name="meterManagement" type="i0:MeterSpecificEng"/>

+			</choice>

+		</sequence>

+	</complexType>

+	<complexType name="VendorDetail">

+		<annotation>

+			<documentation> Organisation who is contracted with the utility to provide prepaid

+				token's to it customers. </documentation>

+		</annotation>

+		<attribute use="required" name="name" type="i0:OrganisationName">

+				<annotation>

+					<documentation> Name of the vendor, e.g. Foo Bank </documentation>

+				</annotation>

+		</attribute>

+		<attribute use="required" name="address" type="i0:Address">

+				<annotation>

+					<documentation> Address of the vendor. </documentation>

+				</annotation>

+		</attribute>	

+	</complexType>

+	<complexType name="UtilityDetail">

+		<annotation>

+			<documentation> Details of the utility that is supply authority for the prepaid

+				resource. </documentation>

+		</annotation>

+		<attribute use="required" name="name" type="i0:OrganisationName"/>

+		<attribute use="required" name="address" type="i0:Address"/>

+		<attribute use="required" name="taxRef" type="i0:TaxRef">

+				<annotation>

+					<documentation> Tax reference number of the utility. </documentation>

+				</annotation>

+		</attribute>

+	</complexType>

+	<!-- Issue Fault  and XMLvend Fault Specialisations -->

+	<complexType name="Fault" abstract="true">

+		<annotation>

+			<documentation> A generic fault returned by the server to an exception scenario.

+			</documentation>

+		</annotation>

+		<sequence>

+			<element minOccurs="1" maxOccurs="1" name="desc" type="i0:Msg">

+				<annotation>

+					<documentation> Description of the fault scenario. </documentation>

+				</annotation>

+			</element>

+		</sequence>

+	</complexType>

+	<complexType name="SystemEx">

+		<annotation>

+			<documentation> A system error has occurred while processing the request and therefore

+				the normal response message cannot be returned. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:Fault"/>

+		</complexContent>

+	</complexType>

+	<complexType name="BusinessRuleEx">

+		<annotation>

+			<documentation> A business rule exception has occurred while processing the request

+				message, the server is therefore unable to continue with the happy path.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:Fault"/>

+		</complexContent>

+	</complexType>

+	<complexType name="RequestAuthorisationEx">

+		<annotation>

+			<documentation> The vendor is not authorised to perform the requested operation.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BusinessRuleEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="MSNOCheckDigitEx">

+		<annotation>

+			<documentation> The check digit of the supplied MSNO can not be verified.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BusinessRuleEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="SGCAuthorisationEx">

+		<annotation>

+			<documentation> The vendor is not authorised to produce tokens for meters on the

+				supplied SGC. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BusinessRuleEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="LatestKRNEx">

+		<annotation>

+			<documentation> The supplied KRN for the supplied SGC has expired. An update meter key

+				operation is required. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BusinessRuleEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="FBEEx">

+		<annotation>

+			<documentation> The customer is not registered for FBE. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BusinessRuleEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="BlockedMeterEx">

+		<annotation>

+			<documentation> The meter has been blocked, no transactions are possible, the reason for

+				blocking will vary.. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BusinessRuleEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="STSDataEx">

+		<annotation>

+			<documentation> The supplied data for MSNO, SGC, KRN, TI, AT, TT are not valid.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BusinessRuleEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="VendorCreditEx">

+		<annotation>

+			<documentation> Insufficient vendor credit to compete the requested operation.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:BusinessRuleEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="XMLVendFaultEx" abstract="true">

+		<annotation>

+			<documentation> A XMLVend protocol related fault has occurred. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:Fault"/>

+		</complexContent>

+	</complexType>

+	<complexType name="UseCaseSupportEx">

+		<annotation>

+			<documentation> Specialisation of XMLVend protocol exception, indicating that the

+				requested use case is not supported by this XMLVend implementation. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:XMLVendFaultEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="ClientIDSSLEx">

+		<annotation>

+			<documentation> Specialisation of XMLVend protocol exception, indicating that the

+				clientID supplied in the request does not match the X509 certificate clientID.

+			</documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:XMLVendFaultEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="XMLVendSchemaEx">

+		<annotation>

+			<documentation> Specialisation of XMLVend protocol exception, indicating that the

+				request message does not conform to the XMLVend schema. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:XMLVendFaultEx"/>

+		</complexContent>

+	</complexType>

+	<complexType name="LastResponseEx">

+		<annotation>

+			<documentation> Specialisation of XMLVend protocol exception, indicating that the

+				requested response message can not be returned as there is not transaction

+				associated with the requested MsgID. </documentation>

+		</annotation>

+		<complexContent>

+			<extension base="i0:XMLVendFaultEx"/>

+		</complexContent>

+	</complexType>

+	

+	<complexType name="Units">

+		<annotation>

+			<documentation>

+				Amount of a specfic resource, in terms of its siUnit.

+			</documentation>

+		</annotation>

+		<attribute use="required" name="value" type="decimal"/>

+		<attribute use="required" name="siUnit" type="i0:ResourceSIUnit">

+			<annotation>

+				<documentation>

+					The SI Unit of measurement of the resource be vended,

+					eg. "kWh" for electricity.

+				</documentation>

+			</annotation>

+		</attribute>

+	</complexType>

+	<!-- Complex Element Definations Ends-->

+	<!-- Element Constraints Start -->

+	<!-- Define Simple / Base Restrictive & Enumerated TYPES: -->

+	<!-- Consumer Account Number Type [20] digits, chars, no white space -->

+	<simpleType name="AccountNo">

+		<annotation>

+			<documentation> Generic account number, used in several contexts. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\S){0,20}"/>

+		</restriction>

+	</simpleType>

+	<!-- String with whitespace [0..80] any chars -->

+	<simpleType name="Address">

+		<restriction base="string">

+			<maxLength value="80"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="BranchCode">

+		<annotation>

+			<documentation> Contains the branch code of the bank. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){1,10}"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="BankCardExpiry">

+		<annotation>

+			<documentation> Expiry date of the bank card, in the format YYYYMM. [6] only digits no

+				whitespace. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){6}"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="BankCardCVNum">

+		<annotation>

+			<documentation> Contains the Card verification number (typically printed on the back of

+				the card, but not embossed on the front). [1..10] digits only, no whitespace.

+			</documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){1,10}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..20] digits only, no whitespace -->

+	<simpleType name="ChequeNo">

+		<annotation>

+			<documentation> Account Holder’s next unused cheque number. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){1,20}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..20] alphanumneric, no whitespace -->

+	<simpleType name="RefNo">

+		<annotation>

+			<documentation> Generic reference number, used in several contexts. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\S){1,20}"/>

+		</restriction>

+	</simpleType>

+	<!-- [7..12] chars and digits only, no whitespace -->

+	<simpleType name="ContactNo">

+		<annotation>

+			<documentation> A telephone number. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\S){7,12}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..15] chars and digits only, no whitespace -->

+	<simpleType name="CurrencySymbol">

+		<annotation>

+			<documentation> The currency symbol of the currency being used in a transaction, as per

+				ISO 4217. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\S){1,3}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..20] chars and digits only, no whitespace -->

+	<simpleType name="CustRef">

+		<restriction base="string">

+			<pattern value="(\S){1,20}"/>

+		</restriction>

+	</simpleType>

+	<!-- [13] digits only, no whitespace -->

+	<simpleType name="EAN">

+		<annotation>

+			<documentation> Generic logical identifier, used for a client, server or terminal.

+			</documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){13}"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="IDNo">

+		<annotation>

+			<documentation> Government issued number for a citizen. Government Identity Number Type

+				[20] digits, chars, no white space. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\S){0,20}"/>

+		</restriction>

+	</simpleType>

+	<!-- Consumer Location Reference such as GiS data[20] digits, chars, no white space-->

+	<simpleType name="LocRef">

+		<restriction base="string">

+			<pattern value="(\S){0,20}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..40] digits only, no whitespace -->

+	<simpleType name="MICR">

+		<annotation>

+			<documentation> The Magnetic Ink Cheque Reader (MICR) is the entire line of numbers at

+				the bottom of the cheque. Includes the transit number, account number, and cheque

+				number. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){1,40}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..6] digits only, no whitespace -->

+	<simpleType name="MsgIDUniqueNumber">

+		<annotation>

+			<documentation> 6 digit sequential number forms part of the request message identifier.

+			</documentation>

+		</annotation>

+		<restriction base="positiveInteger">

+			<totalDigits value="6"/>

+		</restriction>

+	</simpleType>

+	<!-- [14] only digits no whitespace -->

+	<simpleType name="MsgIDDateTime">

+		<annotation>

+			<documentation> Date Time stamp in the following format, yyyymmddHHMMSS. Forms part of

+				the request message identifier. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){14}"/>

+		</restriction>

+	</simpleType>

+	<!-- String with whitespace [0..160] any chars -->

+	<simpleType name="Msg">

+		<restriction base="string">

+			<maxLength value="160"/>

+		</restriction>

+	</simpleType>

+	<!-- [3..13] chars & digits, no whitespace, no whitespace -->

+	<simpleType name="MSNO">

+		<annotation>

+			<documentation> Meter serial number of the meter where the token will be entered.

+			</documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\S){3,13}"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="NRSTrack2Data">

+		<annotation>

+			<documentation> Magnetic Meter ID Card Track 2 Type (see NRS 009-4:1993) 

+			</documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern

+				value="600727(\d){12}=(=|(([0-6][0-9]|7[0-9])(0[0-9]|1[0-2])))=([0-9][1-9])([0-9][1-9])(\d){6}([0-9][1-9])([0-9])"

+			/>

+		</restriction>

+	</simpleType>

+	<!-- String with whitespace [0..80] any chars -->

+	<simpleType name="OrganisationName">

+		<restriction base="string">

+			<maxLength value="80"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..10] chars & digits, no whitespace -->

+	<simpleType name="OpName">

+		<annotation>

+			<documentation> Name of the operator initiating the use case. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\S){1,10}"/>

+		</restriction>

+	</simpleType>

+	<!-- [6..15] chars & digits, no whitespace -->

+	<simpleType name="Password">

+		<restriction base="string">

+			<pattern value="(\S){6,15}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..40] Anything except digits -->

+	<simpleType name="PersonName">

+		<restriction base="string">

+			<pattern value="(\D){1,40}"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="Percentage">

+		<restriction base="decimal">

+			<minInclusive value="0"/>

+			<maxInclusive value="100"/>

+		</restriction>

+	</simpleType>

+	<!-->>>>>>>>>>>>>>>>>>>>-->

+	<simpleType name="PwrLmt">

+		<annotation>

+			<documentation> Power limit value. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){1,3}\.(\d){1}"/>

+		</restriction>

+	</simpleType>

+	<!-- String with whitespace [1..4] any chars -->

+	<simpleType name="ResourceSIUnit">

+		<annotation>

+			<documentation> SI unit of the resource being vended. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\S){1,4}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1] digit no whitespace -->

+	<simpleType name="STSKeyRevNo">

+		<annotation>

+			<documentation> Key Revision number of a supply group, as specified by STS.

+			</documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){1}"/>

+		</restriction>

+	</simpleType>

+	<!-- [2] only digits no whitespace -->

+	<simpleType name="STSTT">

+		<annotation>

+			<documentation> Token technology see NRS009-4-1:1994, for STS, MagCard(01) or

+				Numeric(02). </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){2}"/>

+		</restriction>

+	</simpleType>

+	<!-- [2] only digits no whitespace -->

+	<simpleType name="STSAT">

+		<annotation>

+			<documentation> Algorithm Technology see NRS009-4-1:1994, for STS 1, (07).

+			</documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){2}"/>

+		</restriction>

+	</simpleType>

+	<!-- [6] only digits no whitespace -->

+	<simpleType name="STSSupplyGroupCode">

+		<annotation>

+			<documentation> Supply Group Code (SGC) as defined by STS, generally refers to which

+				utility will receive the revenue. Group coded SGC must be avoided in Online Vending

+				systems as these can be abused for fraudulent purposes.</documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){6}"/>

+		</restriction>

+	</simpleType>

+	<!-- [2] only digits no whitespace -->

+	<simpleType name="STSTariffIndex">

+		<annotation>

+			<documentation> Refers to the tariff index (TI) as defined by STS. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){2}"/>

+		</restriction>

+	</simpleType>

+	<!-- [1..20] digits only, no whitespace -->

+	<simpleType name="STSCipherText">

+		<annotation>

+			<documentation> Encrypted text as specified by STS. </documentation>

+		</annotation>

+		<restriction base="string">

+			<pattern value="(\d){20}"/>

+		</restriction>

+	</simpleType>

+	<!-- Tax ref [10] digits no whitespace -->

+	<simpleType name="TaxRef">

+		<restriction base="string">

+			<pattern value="(\d){10}"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="WaterFactor">

+		<restriction base="string">

+			<pattern value="(\d){1,6}"/>

+		</restriction>

+	</simpleType>

+	<!-- Element Constraints Ends-->

+	<!-- Non-Volitile Enumerated  Types starts -->

+	<simpleType name="ChequeType">

+		<restriction base="string">

+			<enumeration value="Personal"/>

+			<enumeration value="Company"/>

+			<enumeration value="Government"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="BatchStatusType">

+		<annotation>

+			<documentation> Enumeration that is used to indicate a status of a batch, "open" or

+				"closed". </documentation>

+		</annotation>

+		<restriction base="string">

+			<enumeration value="open"/>

+			<enumeration value="closed"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="CreditTokenSubClassType">

+		<annotation>

+			<documentation> Token sub-class types as specified by STS. </documentation>

+		</annotation>

+		<restriction base="string">

+			<enumeration value="Electricity Token"/>

+			<enumeration value="Water Token"/>

+			<enumeration value="Gas Token"/>

+			<enumeration value="Connection time Token"/>

+			<enumeration value="Currency Token"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="NonMeterSpecificEng">

+		<annotation>

+			<documentation> Shortened names for non-Meter specific engineering tokens as defined by

+				STS. </documentation>

+		</annotation>

+		<restriction base="string">

+			<enumeration value="TestAll"/>

+			<enumeration value="TestBreaker"/>

+			<enumeration value="TestDisp"/>

+			<enumeration value="DispPwrLmt"/>

+			<enumeration value="DispTI"/>

+			<enumeration value="DispKRN"/>

+			<enumeration value="DispTamper"/>

+			<enumeration value="DispInstPwr"/>

+			<enumeration value="DispConsTot"/>

+			<enumeration value="DispUnbalance"/>

+			<enumeration value="DispVer"/>

+		</restriction>

+	</simpleType>

+	<simpleType name="MeterSpecificEng">

+		<annotation>

+			<documentation> Shortened names for Meter specific engineering tokens as defined by STS.

+			</documentation>

+		</annotation>

+		<restriction base="string">

+			<enumeration value="SetPwrLmt"/>

+			<enumeration value="SetPhUnbalance"/>

+			<enumeration value="AddDefaultCred"/>

+			<enumeration value="ClearCred"/>

+			<enumeration value="ClearTamper"/>

+			<enumeration value="EngKCT"/>

+			<enumeration value="SetWaterFact"/>

+		</restriction>

+	</simpleType>

+</schema>

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/addressing/AddressingServiceTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/addressing/AddressingServiceTest.java
new file mode 100644
index 0000000..a4ec4b1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/addressing/AddressingServiceTest.java
@@ -0,0 +1,251 @@
+package org.apache.axis2.addressing;

+

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.AddressingConstants.Final;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.description.*;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.Echo;

+import org.apache.axis2.engine.util.TestConstants;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver;

+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;

+import org.apache.axis2.util.Utils;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+import javax.xml.namespace.QName;

+/*

+* Copyright 2004,2005,2006 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.

+*

+*

+*/

+

+public class AddressingServiceTest extends UtilServerBasedTestCase implements TestConstants {

+

+    protected QName transportName = new QName("http://localhost/my",

+            "NullTransport");

+    EndpointReference targetEPR = new EndpointReference(

+            "http://127.0.0.1:" + (UtilServer.TESTING_PORT) + "/axis2/services/EchoXMLService/echoOMElement");

+

+    EndpointReference replyTo = new EndpointReference(

+            "http://127.0.0.1:" + (UtilServer.TESTING_PORT) + "/axis2/services/RedirectReceiverService/echoOMElementResponse");

+

+    EndpointReference faultTo = new EndpointReference(

+            "http://127.0.0.1:" + (UtilServer.TESTING_PORT) + "/axis2/services/RedirectReceiverService/fault");

+

+    protected AxisConfiguration engineRegistry;

+    protected MessageContext mc;

+    protected ServiceContext serviceContext;

+    protected AxisService echoService;

+    protected AxisService rrService;

+

+    public static Test suite() {

+        return getTestSetup(new TestSuite(AddressingServiceTest.class));

+    }

+

+    protected void setUp() throws Exception {

+        echoService = Utils.createSimpleService(serviceName,

+                new RawXMLINOutMessageReceiver(),

+                Echo.class.getName(),

+                operationName);

+        UtilServer.deployService(echoService);

+

+        rrService = createRedirectReceiverService();

+        UtilServer.deployService(rrService);

+    }

+

+    AxisService createRedirectReceiverService() throws AxisFault {

+        AxisService service = new AxisService("RedirectReceiverService");

+

+        service.setClassLoader(Thread.currentThread().getContextClassLoader());

+        service.addParameter(new Parameter(Constants.SERVICE_CLASS, RedirectReceiver.class.getName()));

+

+        AxisOperation axisOp = new InOnlyAxisOperation(new QName("echoOMElementResponse"));

+

+        axisOp.setMessageReceiver(new RawXMLINOnlyMessageReceiver());

+        axisOp.setStyle(WSDLConstants.STYLE_RPC);

+        service.addOperation(axisOp);

+        service.mapActionToOperation(Constants.AXIS2_NAMESPACE_URI + "/" + "echoOMElementResponse", axisOp);

+

+        AxisOperation axisOp2 = new InOnlyAxisOperation(new QName("fault"));

+

+        axisOp2.setMessageReceiver(new RawXMLINOnlyMessageReceiver());

+        axisOp2.setStyle(WSDLConstants.STYLE_RPC);

+        service.addOperation(axisOp2);

+        service.mapActionToOperation(Constants.AXIS2_NAMESPACE_URI + "/" + "fault", axisOp2);

+

+        return service;

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.unDeployService(new QName("RedirectReceiverService"));

+        UtilServer.unDeployClientService();

+    }

+

+    public static AxisService createSimpleOneWayServiceforClient(QName serviceName,

+                                                                 String className,

+                                                                 QName opName)

+            throws AxisFault {

+        AxisService service = new AxisService(serviceName.getLocalPart());

+

+        service.setClassLoader(Thread.currentThread().getContextClassLoader());

+        service.addParameter(new Parameter(Constants.SERVICE_CLASS, className));

+

+        AxisOperation axisOp = new OutOnlyAxisOperation(opName);

+

+        axisOp.setMessageReceiver(new RawXMLINOnlyMessageReceiver());

+        axisOp.setStyle(WSDLConstants.STYLE_RPC);

+        service.addOperation(axisOp);

+

+        return service;

+    }

+

+    public void testEchoToReplyTo() throws Exception {

+        OMElement method = createEchoOMElement("this message should not cause a fault.");

+        ServiceClient sender = null;

+

+        try {

+            sender = createServiceClient();

+            sender.fireAndForget(operationName, method);

+            System.out.println("send the reqest");

+            int index = 0;

+            while (!RedirectReceiver.hasReceivedResponse()) {

+                Thread.sleep(100);

+                index++;

+                if (index > 45) {

+                    throw new AxisFault(

+                            "Tests was failed as redirected response not received in time");

+                }

+            }

+        } finally {

+            if (sender != null)

+                sender.cleanup();

+        }

+    }

+

+    public void testFaultToFaultTo() throws Exception {

+        OMElement method = createEchoOMElement("fault");

+        ServiceClient sender = null;

+

+        try {

+            sender = createServiceClient();

+            sender.fireAndForget(operationName, method);

+            System.out.println("send the reqest");

+            int index = 0;

+            while (!RedirectReceiver.hasReceivedFault()) {

+                Thread.sleep(100);

+                index++;

+                if (index > 45) {

+                    throw new AxisFault(

+                            "Tests was failed as redirected fault not received in time");

+                }

+            }

+        } finally {

+            if (sender != null)

+                sender.cleanup();

+        }

+    }

+

+    private OMElement createEchoOMElement(String text) {

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");

+        OMElement method = fac.createOMElement("echoOMElement", omNs);

+        OMElement value = fac.createOMElement("myValue", omNs);

+        value.setText(text);

+        method.addChild(value);

+

+        return method;

+    }

+

+    private ServiceClient createServiceClient() throws AxisFault {

+        AxisService service =

+                createSimpleOneWayServiceforClient(serviceName,

+                        Echo.class.getName(),

+                        operationName);

+

+        ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();

+

+        ServiceClient sender;

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        options.setAction(operationName.getLocalPart());

+        options.setReplyTo(replyTo);

+        options.setFaultTo(faultTo);

+

+        sender = new ServiceClient(configcontext, service);

+        sender.setOptions(options);

+        sender.engageModule(new QName("addressing"));

+

+        return sender;

+    }

+

+    public void testUsingAddressingRequired() throws Exception {

+        echoService.setWSAddressingFlag("required");

+

+        OMElement method = createEchoOMElement("this message should cause a fault.");

+        ServiceClient sender = null;

+

+        try {

+            sender = createNoAddressingServiceClient();

+            try {

+                sender.sendReceive(operationName, method);

+                fail("Should have received a specific fault");

+            } catch (AxisFault af) {

+                af.printStackTrace();

+                assertEquals(Final.FAULT_ADDRESSING_HEADER_REQUIRED_REASON, af.getMessage());

+            }

+        } finally {

+            if (sender != null)

+                sender.cleanup();

+        }

+    }

+

+    private ServiceClient createNoAddressingServiceClient() throws AxisFault {

+        AxisService service =

+                Utils.createSimpleServiceforClient(serviceName,

+                        Echo.class.getName(),

+                        operationName);

+

+        ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();

+        ServiceClient sender;

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setAction(operationName.getLocalPart());

+        options.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);

+        options.setProperty(Constants.Configuration.DISABLE_SOAP_ACTION, Boolean.TRUE);

+

+        sender = new ServiceClient(configcontext, service);

+        sender.setOptions(options);

+

+        return sender;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/addressing/RedirectReceiver.java b/rampart_1_1/modules/integration/test/org/apache/axis2/addressing/RedirectReceiver.java
new file mode 100644
index 0000000..edd15c9
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/addressing/RedirectReceiver.java
@@ -0,0 +1,43 @@
+/*

+* Copyright 2006 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.axis2.addressing;

+

+import org.apache.axiom.om.OMElement;

+

+public class RedirectReceiver {

+

+    private static boolean responseRecieved = false;

+    public static boolean hasReceivedResponse(){

+        return responseRecieved;

+    }

+    

+    private static boolean faultRecieved = false;

+    public static boolean hasReceivedFault(){

+        return faultRecieved;

+    }

+    

+    public void echoOMElementResponse(OMElement omEle) {

+        System.out.println("echoOMElementResponse: "+omEle);

+        responseRecieved = true;

+    }

+    

+    public void fault(OMElement omEle) {

+        System.out.println("fault: "+omEle);

+        faultRecieved = true;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/async/AsyncMessageReceiver.java b/rampart_1_1/modules/integration/test/org/apache/axis2/async/AsyncMessageReceiver.java
new file mode 100644
index 0000000..ea4431a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/async/AsyncMessageReceiver.java
@@ -0,0 +1,101 @@
+package org.apache.axis2.async;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.DependencyManager;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.receivers.AbstractInOutAsyncMessageReceiver;

+

+import java.lang.reflect.Method;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class AsyncMessageReceiver extends AbstractInOutAsyncMessageReceiver {

+

+    public void invokeBusinessLogic(MessageContext msgContext,

+                                    MessageContext newmsgContext) throws AxisFault {

+        try {

+            // get the implementation class for the Web Service

+            Object obj = getTheImplementationObject(msgContext);

+

+            // find the WebService method

+            Class ImplClass = obj.getClass();

+

+            AxisOperation opDesc = msgContext.getOperationContext().getAxisOperation();

+            Method method = findOperation(opDesc, ImplClass);

+

+            if (method != null) {

+                Class[]  parameters = method.getParameterTypes();

+                Object[] args;

+

+                if ((parameters == null) || (parameters.length == 0)) {

+                    args = new Object[0];

+                } else if (parameters.length == 1) {

+                    OMElement omElement = msgContext.getEnvelope().getBody().getFirstElement();

+                    args = new Object[]{omElement};

+                } else {

+                    throw new AxisFault(Messages.getMessage("rawXmlProivdeIsLimited"));

+                }

+

+                OMElement result = (OMElement) method.invoke(obj, args);

+                AxisService service = msgContext.getAxisService();

+                service.getTargetNamespace();

+                result.declareNamespace(service.getTargetNamespace(),

+                        service.getTargetNamespacePrefix());

+                OMElement bodyContent;

+

+                SOAPFactory fac = getSOAPFactory(msgContext);

+                bodyContent = result;

+

+                SOAPEnvelope envelope = fac.getDefaultEnvelope();

+

+                if (bodyContent != null) {

+                    envelope.getBody().addChild(bodyContent);

+                }

+

+                newmsgContext.setEnvelope(envelope);

+            } else {

+                throw new AxisFault(Messages.getMessage("methodNotImplemented",

+                        opDesc.getName().toString()));

+            }

+        } catch (Exception e) {

+            throw AxisFault.makeFault(e);

+        }

+    }

+

+    public Method findOperation(AxisOperation op, Class ImplClass) {

+        Method method = null;

+        String methodName = op.getName().getLocalPart();

+        Method[] methods = ImplClass.getMethods();

+

+        for (int i = 0; i < methods.length; i++) {

+            if (methods[i].getName().equals(methodName)) {

+                method = methods[i];

+

+                break;

+            }

+        }

+

+        return method;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/async/AsyncServiceTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/async/AsyncServiceTest.java
new file mode 100644
index 0000000..2318a07
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/async/AsyncServiceTest.java
@@ -0,0 +1,145 @@
+package org.apache.axis2.async;

+

+import javax.xml.namespace.QName;

+

+import junit.framework.Test;

+import junit.framework.TestSuite;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.client.async.AsyncResult;

+import org.apache.axis2.client.async.Callback;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.Echo;

+import org.apache.axis2.engine.util.TestConstants;

+import org.apache.axis2.integration.TestingUtils;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.util.Utils;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class AsyncServiceTest extends UtilServerBasedTestCase implements TestConstants {

+

+	private static final Log log = LogFactory.getLog(AsyncServiceTest.class);

+    protected QName transportName = new QName("http://localhost/my",

+            "NullTransport");

+    EndpointReference targetEPR = new EndpointReference(

+            "http://127.0.0.1:" + (UtilServer.TESTING_PORT)

+//            "http://127.0.0.1:" + 5556

+                    + "/axis2/services/EchoXMLService/echoOMElement");

+

+    protected AxisConfiguration engineRegistry;

+    protected MessageContext mc;

+    protected ServiceContext serviceContext;

+    protected AxisService service;

+    private boolean finish = false;

+

+    public static Test suite() {

+        return getTestSetup(new TestSuite(AsyncServiceTest.class));

+    }

+

+    protected void setUp() throws Exception {

+        service = Utils.createSimpleService(serviceName,

+                new AsyncMessageReceiver(),

+                Echo.class.getName(),

+                operationName);

+        UtilServer.deployService(service);

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.unDeployClientService();

+    }

+

+    public void testEchoXMLCompleteASync() throws Exception {

+        AxisService service =

+                Utils.createSimpleServiceforClient(serviceName,

+                        Echo.class.getName(),

+                        operationName);

+

+        ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();

+

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");

+        OMElement method = fac.createOMElement("echoOMElement", omNs);

+        OMElement value = fac.createOMElement("myValue", omNs);

+        value.setText("Isaac Asimov, The Foundation Trilogy");

+        method.addChild(value);

+        ServiceClient sender = null;

+

+        try {

+            Options options = new Options();

+            options.setTo(targetEPR);

+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+            options.setUseSeparateListener(true);

+            options.setAction(operationName.getLocalPart());

+

+            Callback callback = new Callback() {

+                public void onComplete(AsyncResult result) {

+                    TestingUtils.campareWithCreatedOMElement(

+                            result.getResponseEnvelope().getBody()

+                                    .getFirstElement());

+                    System.out.println("result = " + result.getResponseEnvelope().getBody()

+                                    .getFirstElement());

+                    finish = true;

+                }

+

+                public void onError(Exception e) {

+                    log.info(e.getMessage());

+                    finish = true;

+                }

+            };

+

+            sender = new ServiceClient(configcontext, service);

+            sender.setOptions(options);

+

+            sender.sendReceiveNonBlocking(operationName, method, callback);

+            System.out.println("send the reqest");

+            log.info("send the reqest");

+            int index = 0;

+            while (!finish) {

+                Thread.sleep(1000);

+                index++;

+                if (index > 45) {

+                    throw new AxisFault(

+                            "Server was shutdown as the async response take too long to complete");

+                }

+            }

+        } finally {

+            if (sender != null)

+                sender.cleanup();

+        }

+

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/codegen/InvalidFaultWsdlTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/codegen/InvalidFaultWsdlTest.java
new file mode 100644
index 0000000..53dffd1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/codegen/InvalidFaultWsdlTest.java
@@ -0,0 +1,38 @@
+package org.apache.axis2.codegen;

+

+import junit.framework.TestCase;

+import org.apache.axis2.wsdl.WSDL2Code;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class InvalidFaultWsdlTest extends TestCase {

+    public void testInvaidWsdl() {

+        try {

+            String wsdluri = "test-resources/Invalid.wsdl";

+            String args[] = new String[]{"-uri", wsdluri, "-o", "target/invalidwsdloutlocation"};

+            new WSDL2Code().main(args);

+            fail("This must fail with the excetion :" +

+                    "No element reference found for the part in fault message " +

+                    "InvalidIsbnFault. Fault message part should always be refer " +

+                    "to an element.");

+        } catch (Exception e) {

+            assertTrue(e.getCause().getMessage().startsWith(

+                    "Part 'message' of fault message '{http://www.Monson-Haefel.com/jwsbook/BookQuote}InvalidIsbnFault'"));

+        }

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/deployment/TargetResolverServiceTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/deployment/TargetResolverServiceTest.java
new file mode 100644
index 0000000..006a7f0
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/deployment/TargetResolverServiceTest.java
@@ -0,0 +1,151 @@
+/*

+* Copyright 2004,2005,2006 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.axis2.deployment;

+

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.OutInAxisOperation;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.Echo;

+import org.apache.axis2.engine.util.TestConstants;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver;

+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;

+import org.apache.axis2.util.Utils;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+import javax.xml.namespace.QName;

+

+

+public class TargetResolverServiceTest extends UtilServerBasedTestCase implements TestConstants {

+

+    protected QName transportName = new QName("http://localhost/my",

+            "NullTransport");

+

+    // 2 special urls that the TestTargetResolver will modify into ones that can be targeted

+    EndpointReference targetEPR = new EndpointReference(

+            "trtest://" + (UtilServer.TESTING_PORT) + "/axis2/services/EchoXMLService/echoOMElement");

+

+    EndpointReference replyTo = new EndpointReference(

+            "http://ws.apache.org/new/anonymous/address");

+

+    protected AxisConfiguration engineRegistry;

+    protected MessageContext mc;

+    protected ServiceContext serviceContext;

+    protected AxisService echoService;

+    protected AxisService rrService;

+

+    public static Test suite() {

+        return getTestSetup2(new TestSuite(TargetResolverServiceTest.class), Constants.TESTING_PATH + "deployment_repo");

+    }

+

+    protected void setUp() throws Exception {

+        echoService = Utils.createSimpleService(serviceName,

+                new RawXMLINOutMessageReceiver(),

+                Echo.class.getName(),

+                operationName);

+        UtilServer.deployService(echoService);

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.unDeployClientService();

+    }

+

+    public static AxisService createSimpleServiceforClient(QName serviceName,

+                                                           String className,

+                                                           QName opName)

+            throws AxisFault {

+        AxisService service = new AxisService(serviceName.getLocalPart());

+

+        service.setClassLoader(Thread.currentThread().getContextClassLoader());

+        service.addParameter(new Parameter(Constants.SERVICE_CLASS, className));

+

+        AxisOperation axisOp = new OutInAxisOperation(opName);

+

+        axisOp.setMessageReceiver(new RawXMLINOnlyMessageReceiver());

+        axisOp.setStyle(WSDLConstants.STYLE_RPC);

+        service.addOperation(axisOp);

+

+        return service;

+    }

+

+    public void testEchoToReplyTo() throws Exception {

+        OMElement method = createEchoOMElement("this message should not cause a fault.");

+        ServiceClient sender = null;

+        try {

+            sender = createServiceClient();

+            OMElement result = sender.sendReceive(operationName, method);

+            assertEquals("echoOMElementResponse", result.getLocalName());

+        } finally {

+            if (sender != null)

+                sender.cleanup();

+        }

+    }

+

+    private OMElement createEchoOMElement(String text) {

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");

+        OMElement method = fac.createOMElement("echoOMElement", omNs);

+        OMElement value = fac.createOMElement("myValue", omNs);

+        value.setText(text);

+        method.addChild(value);

+

+        return method;

+    }

+

+    private ServiceClient createServiceClient() throws AxisFault {

+        AxisService service =

+                createSimpleServiceforClient(serviceName,

+                        Echo.class.getName(),

+                        operationName);

+

+        ConfigurationContext configcontext = UtilServer.createClientConfigurationContext(Constants.TESTING_PATH + "deployment_repo");

+        ServiceClient sender ;

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        options.setAction(operationName.getLocalPart());

+        options.setReplyTo(replyTo);

+

+        sender = new ServiceClient(configcontext, service);

+        sender.setOptions(options);

+        sender.engageModule(new QName("addressing"));

+

+        return sender;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/deployment/TestTargetResolver.java b/rampart_1_1/modules/integration/test/org/apache/axis2/deployment/TestTargetResolver.java
new file mode 100644
index 0000000..193228f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/deployment/TestTargetResolver.java
@@ -0,0 +1,34 @@
+/*

+* Copyright 2006 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.axis2.deployment;

+

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.util.TargetResolver;

+

+public class TestTargetResolver implements TargetResolver{

+

+    public void resolveTarget(MessageContext messageContext) {

+        System.out.println("resolveTarget:" +messageContext.getTo().getAddress());

+        if(messageContext.getTo().getAddress().equals("http://ws.apache.org/new/anonymous/address")){

+            messageContext.getTo().setAddress(AddressingConstants.Final.WSA_ANONYMOUS_URL);

+        }else if(messageContext.getTo().getAddress().startsWith("trtest://")){

+            messageContext.getTo().setAddress("http://127.0.0.1:"+messageContext.getTo().getAddress().substring(9));

+        }

+        System.out.println("resolveTarget:" +messageContext.getTo().getAddress());

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CallUnregisteredServiceTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CallUnregisteredServiceTest.java
new file mode 100644
index 0000000..d98df03
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CallUnregisteredServiceTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+//todo
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+
+public class CallUnregisteredServiceTest extends UtilServerBasedTestCase {
+
+    public CallUnregisteredServiceTest() {
+        super(CallUnregisteredServiceTest.class.getName());
+    }
+
+    public CallUnregisteredServiceTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(CallUnregisteredServiceTest.class));
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        try {
+            SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+
+            OMNamespace omNs = fac.createOMNamespace("http://localhost/my",
+                    "my");
+            OMElement method = fac.createOMElement("echoOMElement", omNs);
+            OMElement value = fac.createOMElement("myValue", omNs);
+            value.addChild(
+                    fac.createOMText(value,
+                            "Isaac Asimov, The Foundation Trilogy"));
+            method.addChild(value);
+
+            EndpointReference targetEPR =
+                    new EndpointReference("http://127.0.0.1:"
+                            + (UtilServer.TESTING_PORT)
+                            + "/axis2/services/EchoXMLService1");
+
+            Options options = new Options();
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setTo(targetEPR);
+
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+            ServiceClient sender = new ServiceClient(configContext, null);
+            sender.setOptions(options);
+
+            sender.sendReceive(method);
+            fail("The test must fail due to wrong service Name");
+
+        } catch (AxisFault e) {
+            assertTrue(e.getMessage().indexOf("Service not found") >= 0);
+            tearDown();
+            return;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CharactersetEncodingTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CharactersetEncodingTest.java
new file mode 100644
index 0000000..84d72d5
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CharactersetEncodingTest.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Testing character encoding support
+ */
+public class CharactersetEncodingTest extends UtilServerBasedTestCase implements TestConstants {
+
+	private static final Log log = LogFactory.getLog(CharactersetEncodingTest.class);
+
+    private AxisService service;
+
+    public CharactersetEncodingTest(String arg0) {
+        super(arg0);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(CharactersetEncodingTest.class),
+                Constants.TESTING_PATH + "chunking-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+
+    private void runTest(String value, String expected) {
+
+        try {
+            OMFactory fac = OMAbstractFactory.getOMFactory();
+            OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+            OMElement payload = fac.createOMElement("echoOMElement", omNs);
+            OMElement text = fac.createOMElement("Text", omNs);
+            text.addChild(fac.createOMText(text, value));
+            payload.addChild(text);
+
+            Options options = new Options();
+            options.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, "utf-16");
+
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(Constants.TESTING_PATH + "chunking-enabledRepository", null);
+            ServiceClient sender = new ServiceClient(configContext, null);
+            sender.setOptions(options);
+
+            OMElement resultElem = sender.sendReceive(payload);
+
+
+            assertNotNull("Result is null", resultElem);
+            String result = ((OMElement) resultElem.getFirstOMChild()).getText();
+
+            assertNotNull("Result value is null", result);
+
+            assertEquals("Expected result not received.", expected, result);
+            sender.cleanup();
+        } catch (AxisFault e) {
+            log.error(e, e);
+            assertFalse("Failure in processing", true);
+        }
+    }
+
+
+    private void runtest(String value) throws Exception {
+        runTest(value, value);
+    }
+
+    public void testSimpleString() throws Exception {
+        runtest("a simple string");
+    }
+
+    public void testStringWithApostrophes() throws Exception {
+        runtest("this isn't a simple string");
+    }
+
+    public void testStringWithEntities() throws Exception {
+        runTest("&amp;&lt;&gt;&apos;&quot;", "&amp;&lt;&gt;&apos;&quot;");
+    }
+
+    public void testStringWithRawEntities() throws Exception {
+        runTest("&<>'\"", "&<>'\"");
+    }
+
+    public void testStringWithLeadingAndTrailingSpaces() throws Exception {
+        runtest("          centered          ");
+    }
+
+    public void testWhitespace() throws Exception {
+        runtest(" \n \t "); // note: \r fails
+    }
+
+    public void testFrenchAccents() throws Exception {
+        runtest("\u00e0\u00e2\u00e4\u00e7\u00e8\u00e9\u00ea\u00eb\u00ee\u00ef\u00f4\u00f6\u00f9\u00fb\u00fc");
+    }
+
+    public void testGermanUmlauts() throws Exception {
+        runtest(" Some text \u00df with \u00fc special \u00f6 chars \u00e4.");
+    }
+
+    public void testWelcomeUnicode() throws Exception {
+        // welcome in several languages
+        runtest(
+                "Chinese (trad.) : \u6b61\u8fce  ");
+    }
+
+    public void testWelcomeUnicode2() throws Exception {
+        // welcome in several languages
+        runtest(
+                "Greek : \u03ba\u03b1\u03bb\u03ce\u03c2 \u03bf\u03c1\u03af\u03c3\u03b1\u03c4\u03b5");
+    }
+
+    public void testWelcomeUnicode3() throws Exception {
+        // welcome in several languages
+        runtest(
+                "Japanese : \u3088\u3046\u3053\u305d");
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CommonsHTTPEchoRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CommonsHTTPEchoRawXMLTest.java
new file mode 100644
index 0000000..51d0996
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/CommonsHTTPEchoRawXMLTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+//todo
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class CommonsHTTPEchoRawXMLTest extends UtilServerBasedTestCase implements TestConstants {
+
+	private static final Log log = LogFactory.getLog(CommonsHTTPEchoRawXMLTest.class);
+
+    private AxisService service;
+
+
+    private boolean finish = false;
+
+    public CommonsHTTPEchoRawXMLTest() {
+        super(CommonsHTTPEchoRawXMLTest.class.getName());
+    }
+
+    public CommonsHTTPEchoRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(CommonsHTTPEchoRawXMLTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+    public void testEchoXMLASync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                TestingUtils.campareWithCreatedOMElement(
+                        result.getResponseEnvelope().getBody().getFirstElement());
+                finish = true;
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(Constants.TESTING_PATH + "commons-http-enabledRepository", null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+
+        sender.sendReceiveNonBlocking(payload, callback);
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response take too long to complete");
+            }
+        }
+//        call.close();
+//
+        sender.cleanup();
+        log.info("send the reqest");
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(Constants.TESTING_PATH + "commons-http-enabledRepository", null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+
+        OMElement result = sender.sendReceive(payload);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+        sender.cleanup();
+//        call.close();
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/Echo.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/Echo.java
new file mode 100644
index 0000000..84d9fca
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/Echo.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMText;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @version $Rev: $ $Date: $
+ */
+
+public class Echo {
+
+	private static final Log log = LogFactory.getLog(Echo.class);
+    public Echo() {
+    }
+
+    public void echoVoid() {
+        log.info("echo Service Called");
+    }
+
+
+    public OMElement echoOMElement(OMElement omEle) {
+    	omEle.buildWithAttachments();
+        omEle.setLocalName(omEle.getLocalName() + "Response");
+        if(omEle.getFirstElement().getText().trim().startsWith("fault")){
+            throw new RuntimeException("fault string found in echoOMElement");
+        }
+        return omEle;
+    }
+     public OMElement echoOM(OMElement omEle) {
+        return omEle;
+    }
+
+    public String echoString(String in) {
+        return in;
+    }
+
+    public int echoInt(int in) {
+        return in;
+    }
+
+    public OMElement echoMTOMtoBase64(OMElement omEle) {
+        OMText omText =  (OMText) (omEle.getFirstElement()).getFirstOMChild();
+        omText.setOptimize(false);
+        return omEle;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawRuntimeProxyTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawRuntimeProxyTest.java
new file mode 100644
index 0000000..6ffd09c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawRuntimeProxyTest.java
@@ -0,0 +1,103 @@
+package org.apache.axis2.engine;
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.http.HttpTransportProperties;
+import org.apache.axis2.util.Utils;
+
+import javax.xml.namespace.QName;
+/*
+* Copyright 2004,2005 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.
+*
+*/
+
+public class EchoRawRuntimeProxyTest extends UtilServerBasedTestCase {
+    public static final EndpointReference targetEPR = new EndpointReference(
+            "http://apache.axis2.host"
+                    + "/axis2/services/EchoXMLService/echoOMElement");
+
+    public static final QName serviceName = new QName("EchoXMLService");
+
+    public static final QName operationName = new QName("echoOMElement");
+
+
+    public EchoRawRuntimeProxyTest() {
+        super(EchoRawXMLLoadTest.class.getName());
+    }
+
+    public EchoRawRuntimeProxyTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(EchoRawRuntimeProxyTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+
+
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+
+    public void testEchoXMLSync() throws Exception {
+
+        OMElement payload = TestingUtils.createDummyOMElement();
+        /**
+         * Proxy setting in runtime
+         */
+        HttpTransportProperties.ProxyProperties proxyproperties = new HttpTransportProperties.ProxyProperties();
+        proxyproperties.setProxyName("localhost");
+        proxyproperties.setProxyPort(5555);
+        proxyproperties.setDomain("anonymous");
+        proxyproperties.setPassWord("anonymous");
+        proxyproperties.setUserName("anonymous");
+
+        Options options = new Options();
+        options.setProperty(HTTPConstants.PROXY, proxyproperties);
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(
+                       null, null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+
+        OMElement result = sender.sendReceive(payload);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLChunkedTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLChunkedTest.java
new file mode 100644
index 0000000..f60f853
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLChunkedTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+//todo
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.framework.Test;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+
+public class EchoRawXMLChunkedTest extends UtilServerBasedTestCase implements TestConstants {
+
+    private static final String CLIENT_HOME = Constants.TESTING_PATH + "chunking-enabledRepository";
+
+    public EchoRawXMLChunkedTest() {
+        super(EchoRawXMLChunkedTest.class.getName());
+    }
+
+    public EchoRawXMLChunkedTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawXMLChunkedTest.class),CLIENT_HOME);
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service = Utils.createSimpleService(serviceName,
+                Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+
+        Options clientOptions = new Options();
+        clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(CLIENT_HOME,null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(clientOptions);
+        clientOptions.setTo(targetEPR);
+
+        OMElement result = sender.sendReceive(payload);
+
+
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLLoadTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLLoadTest.java
new file mode 100644
index 0000000..b468fa3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLLoadTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+//todo
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+
+public class EchoRawXMLLoadTest extends UtilServerBasedTestCase implements TestConstants {
+
+    public EchoRawXMLLoadTest() {
+        super(EchoRawXMLLoadTest.class.getName());
+    }
+
+    public EchoRawXMLLoadTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(EchoRawXMLLoadTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null,null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+
+        OMElement result = sender.sendReceive(payload);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLMultipleTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLMultipleTest.java
new file mode 100644
index 0000000..3b293e6
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLMultipleTest.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+
+public class EchoRawXMLMultipleTest extends UtilServerBasedTestCase implements TestConstants {
+
+    private static final Log log = LogFactory.getLog(EchoRawXMLMultipleTest.class);
+    protected QName transportName = new QName("http://localhost/my",
+            "NullTransport");
+
+    protected AxisConfiguration engineRegistry;
+    protected MessageContext mc;
+    protected ServiceContext serviceContext;
+    protected AxisService service;
+
+    protected boolean finish = false;
+
+    public EchoRawXMLMultipleTest() {
+        super(EchoRawXMLTest.class.getName());
+    }
+
+    public EchoRawXMLMultipleTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(EchoRawXMLMultipleTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+
+    public void testEchoXMLMultipleASync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",
+                        "target/test-resources/integrationRepo/conf/axis2.xml");
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        options.setAction("urn:echoOMElement");
+        options.setTo(targetEPR);
+        for (int i = 0; i < 5; i++) {
+            Callback callback = new Callback() {
+                public void onComplete(AsyncResult result) {
+                    TestingUtils.campareWithCreatedOMElement(
+                            result.getResponseEnvelope()
+                                    .getBody().getFirstElement());
+                    finish = true;
+                }
+
+                public void onError(Exception e) {
+                    log.info(e.getMessage());
+                    finish = true;
+                }
+            };
+            sender.sendReceiveNonBlocking(payload, callback);
+            int index = 0;
+            while (!finish) {
+                Thread.sleep(1000);
+                index++;
+                if (index > 10) {
+                    throw new AxisFault(
+                            "Server was shutdown as the async response take too long to complete");
+                }
+            }
+        }
+        sender.cleanup();
+        configContext.getListenerManager().stop();
+        log.info("send the request");
+
+    }
+
+    public void testEchoXMLMultipleDuelASync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",
+                        "target/test-resources/integrationRepo/conf/axis2.xml");
+        ServiceClient sender = new ServiceClient(configContext, null);
+        for (int i = 0; i < 5; i++) {
+            Options options = new Options();
+            options.setAction("urn:echoOMElement");
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setUseSeparateListener(true);
+            options.setAction(Constants.AXIS2_NAMESPACE_URI + "/" + operationName.getLocalPart());
+
+
+            Callback callback = new Callback() {
+                public void onComplete(AsyncResult result) {
+                    TestingUtils.campareWithCreatedOMElement(
+                            result.getResponseEnvelope()
+                                    .getBody().getFirstElement());
+                    finish = true;
+                }
+
+                public void onError(Exception e) {
+                    log.info(e.getMessage());
+                    finish = true;
+                }
+            };
+
+            sender.setOptions(options);
+            options.setTo(targetEPR);
+
+            sender.sendReceiveNonBlocking(payload, callback);
+
+            int index = 0;
+            while (!finish) {
+                Thread.sleep(1000);
+                index++;
+                if (index > 10) {
+                    throw new AxisFault(
+                            "Server is shutdown as the Async response take too longs time");
+                }
+            }
+        }
+        sender.cleanup();
+        configContext.getListenerManager().stop();
+        log.info("send the request");
+    }
+
+    public void testEchoXMLMultipleSync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        for (int i = 0; i < 5; i++) {
+            OMElement result = sender.sendReceive(payload);
+            TestingUtils.campareWithCreatedOMElement(result);
+        }
+        sender.cleanup();
+        configContext.getListenerManager().stop();
+    }
+
+    public void testEchoXMLMultipleDuelSync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTo(targetEPR);
+
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setUseSeparateListener(true);
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",
+                        "target/test-resources/integrationRepo/conf/axis2.xml");
+        ServiceClient sender = new ServiceClient(configContext, null);
+        options.setAction(Constants.AXIS2_NAMESPACE_URI + "/" + operationName.getLocalPart());
+        options.setAction("urn:echoOMElement");
+        sender.setOptions(options);
+
+        for (int i = 0; i < 5; i++) {
+            OMElement result = sender.sendReceive(payload);
+            TestingUtils.campareWithCreatedOMElement(result);
+        }
+        sender.cleanup();
+        configContext.getListenerManager().stop();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLOnTwoChannelsSyncTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLOnTwoChannelsSyncTest.java
new file mode 100644
index 0000000..9cabcf9
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLOnTwoChannelsSyncTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+
+public class EchoRawXMLOnTwoChannelsSyncTest extends UtilServerBasedTestCase implements TestConstants {
+
+    public EchoRawXMLOnTwoChannelsSyncTest() {
+        super(EchoRawXMLOnTwoChannelsSyncTest.class.getName());
+    }
+
+    public EchoRawXMLOnTwoChannelsSyncTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(EchoRawXMLOnTwoChannelsSyncTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+
+    public void testEchoXMLCompleteSync() throws Exception {
+        AxisService service =
+                Utils.createSimpleServiceforClient(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+
+        ConfigurationContext configConetxt = UtilServer.createClientConfigurationContext();
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.setText("Isaac Asimov, The Foundation Trilogy");
+        method.addChild(value);
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setUseSeparateListener(true);
+        options.setAction(operationName.getLocalPart());
+
+        ServiceClient sender = new ServiceClient(configConetxt, service);
+        sender.setOptions(options);
+
+        OMElement result = sender.sendReceive(operationName, method);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+        sender.cleanup();
+
+    }
+
+    public void testEchoXMLCompleteSyncwithTwoTransport() throws Exception {
+          AxisService service =
+                  Utils.createSimpleServiceforClient(serviceName,
+                          Echo.class.getName(),
+                          operationName);
+
+          ConfigurationContext configConetxt = UtilServer.createClientConfigurationContext();
+
+          OMFactory fac = OMAbstractFactory.getOMFactory();
+
+          OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+          OMElement method = fac.createOMElement("echoOMElement", omNs);
+          OMElement value = fac.createOMElement("myValue", omNs);
+          value.setText("Isaac Asimov, The Foundation Trilogy");
+          method.addChild(value);
+          Options options = new Options();
+          options.setTo(targetEPR);
+          options.setTransportInProtocol(Constants.TRANSPORT_TCP);
+          options.setUseSeparateListener(true);
+          options.setAction(operationName.getLocalPart());
+
+          ServiceClient sender = new ServiceClient(configConetxt, service);
+          sender.setOptions(options);
+
+          OMElement result = sender.sendReceive(operationName, method);
+
+          TestingUtils.campareWithCreatedOMElement(result);
+          sender.cleanup();
+
+      }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLOnTwoChannelsTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLOnTwoChannelsTest.java
new file mode 100644
index 0000000..029336e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLOnTwoChannelsTest.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.framework.Test;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class EchoRawXMLOnTwoChannelsTest extends UtilServerBasedTestCase implements TestConstants {
+
+	private static final Log log = LogFactory.getLog(EchoRawXMLOnTwoChannelsTest.class);
+
+
+    private boolean finish = false;
+
+    public EchoRawXMLOnTwoChannelsTest() {
+        super(EchoRawXMLOnTwoChannelsTest.class.getName());
+    }
+
+    public EchoRawXMLOnTwoChannelsTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(EchoRawXMLOnTwoChannelsTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+
+    public void testEchoXMLCompleteASync() throws Exception {
+        AxisService service =
+                Utils.createSimpleServiceforClient(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+
+        ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.setText("Isaac Asimov, The Foundation Trilogy");
+        method.addChild(value);
+        ServiceClient sender =null;
+
+        try {
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setUseSeparateListener(true);
+            options.setAction(operationName.getLocalPart());
+
+            Callback callback = new Callback() {
+                public void onComplete(AsyncResult result) {
+                    TestingUtils.campareWithCreatedOMElement(
+                            result.getResponseEnvelope().getBody()
+                                    .getFirstElement());
+                    finish = true;
+                }
+
+                public void onError(Exception e) {
+                    log.info(e.getMessage());
+                    finish = true;
+                }
+            };
+
+            sender = new ServiceClient(configcontext, service);
+            sender.setOptions(options);
+
+            sender.sendReceiveNonBlocking(operationName, method, callback);
+            int index = 0;
+            while (!finish) {
+                Thread.sleep(1000);
+                index++;
+                if (index > 10) {
+                    throw new AxisFault(
+                            "Server was shutdown as the async response take too long to complete");
+                }
+            }
+            log.info("send the reqest");
+        } finally {
+            sender.cleanup();
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLTest.java
new file mode 100644
index 0000000..eacdb5e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/EchoRawXMLTest.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+//todo
+
+import junit.framework.TestSuite;
+import junit.framework.Test;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+public class EchoRawXMLTest extends UtilServerBasedTestCase implements TestConstants {
+
+	private static final Log log = LogFactory.getLog(EchoRawXMLTest.class);
+    protected QName transportName = new QName("http://localhost/my",
+            "NullTransport");
+
+    protected AxisConfiguration engineRegistry;
+    protected MessageContext mc;
+    protected ServiceContext serviceContext;
+    protected AxisService service;
+
+    protected boolean finish = false;
+
+    public EchoRawXMLTest() {
+        super(EchoRawXMLTest.class.getName());
+    }
+
+    public EchoRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(EchoRawXMLTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+
+    public void testEchoXMLASync() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                TestingUtils.campareWithCreatedOMElement(
+                        result.getResponseEnvelope().getBody().getFirstElement());
+                finish = true;
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+        sender.sendReceiveNonBlocking(payload, callback);
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response take too long to complete");
+            }
+        }
+        log.info("send the request");
+    }
+
+    public void testEchoXMLSync() throws Exception {
+
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+
+        OMElement result = sender.sendReceive(payload);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+
+    public void testCorrectSOAPEnvelope() throws Exception {
+
+        OMElement payload = TestingUtils.createDummyOMElement();
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+
+        OMElement result = sender.sendReceive(payload);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+
+    public void testEchoXMLSyncHttpVersion() throws Exception {
+
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setProperty(HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10);
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+
+        OMElement result = sender.sendReceive(payload);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/FaultHandlingTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/FaultHandlingTest.java
new file mode 100644
index 0000000..d971a08
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/FaultHandlingTest.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.util.FaultHandler;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.ArrayList;
+
+public class FaultHandlingTest extends UtilServerBasedTestCase implements TestConstants {
+
+    protected String testResourceDir = "test-resources";
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(FaultHandlingTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        ConfigurationContext configurationContext = UtilServer.getConfigurationContext();
+        ArrayList inPhasesUptoAndIncludingPostDispatch = configurationContext.getAxisConfiguration().getGlobalInFlow();
+        Phase phaseOne = (Phase) inPhasesUptoAndIncludingPostDispatch.get(0);
+        phaseOne.addHandler(new FaultHandler());
+    }
+
+    public void testFaultHandlingWithParamsSetToMsgCtxt() throws AxisFault {
+        OMElement payload = getOMElement(FaultHandler.ERR_HANDLING_WITH_MSG_CTXT);
+        testFaultHandling(payload);
+    }
+
+    public void testFaultHandlingWithParamsSetToAxisFault() throws AxisFault {
+        OMElement payload = getOMElement(FaultHandler.ERR_HANDLING_WITH_AXIS_FAULT);
+        testFaultHandling(payload);
+    }
+
+    private void testFaultHandling(OMElement payload) throws AxisFault {
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+
+        // test with SOAP 1.2
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setExceptionToBeThrownOnSOAPFault(false);
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        sender.setOptions(options);
+
+        String result = sender.sendReceive(payload).toString();
+
+        assertTrue(result.indexOf(FaultHandler.M_FAULT_EXCEPTION) > -1);
+        assertTrue(result.indexOf(FaultHandler.DETAIL_MORE_INFO) > -1);
+        assertTrue(result.indexOf(FaultHandler.FAULT_REASON) > -1);
+
+        // test with SOAP 1.1
+        options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setExceptionToBeThrownOnSOAPFault(false);
+        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        sender.setOptions(options);
+
+        result = sender.sendReceive(payload).toString();
+
+        assertTrue(result.indexOf(FaultHandler.M_FAULT_EXCEPTION) > -1);
+        assertTrue(result.indexOf(FaultHandler.DETAIL_MORE_INFO) > -1);
+        assertTrue(result.indexOf(FaultHandler.FAULT_REASON) > -1);
+    }
+
+    private OMElement getOMElement(String elementLocalName) {
+        return OMAbstractFactory.getOMFactory().createOMElement(elementLocalName, null);
+    }
+
+
+    public void testRefParamsWithFaultTo() throws AxisFault, XMLStreamException {
+        SOAPEnvelope soapEnvelope = getSOAPEnvelopeWithRefParamsInFaultTo();
+        SOAPEnvelope resposeEnvelope = getResponse(soapEnvelope);
+
+        System.out.println("resposeEnvelope = " + resposeEnvelope);
+    }
+
+    private SOAPEnvelope getSOAPEnvelopeWithRefParamsInFaultTo() throws XMLStreamException {
+        String soap = "<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">  \n" +
+                "      <env:Header>    \n" +
+                "         <wsa:Action>http://example.org/action/echoIn</wsa:Action>    \n" +
+                "         <wsa:To>http://www-lk.wso2.com:9762/axis2/services/wsaTestService/</wsa:To>    \n" +
+                "         <wsa:MessageID>urn:uuid:BAB79B77-E9AE-4B9F-A8B4-624BB9E7E919</wsa:MessageID>    \n" +
+                "         <wsa:ReplyTo>      \n" +
+                "            <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>      \n" +
+                "            <wsa:ReferenceParameters xmlns:customer=\"http://example.org/customer\">        \n" +
+                "               <customer:CustomerKey>Key#123456789</customer:CustomerKey>      \n" +
+                "            </wsa:ReferenceParameters>    \n" +
+                "         </wsa:ReplyTo>    \n" +
+                "         <wsa:FaultTo>      \n" +
+                "            <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>      \n" +
+                "            <wsa:ReferenceParameters xmlns:customer=\"http://example.org/customer\">        \n" +
+                "               <customer:CustomerKey>Fault#123456789</customer:CustomerKey>      \n" +
+                "            </wsa:ReferenceParameters>    \n" +
+                "         </wsa:FaultTo>  \n" +
+                "      </env:Header>  \n" +
+                "      <env:Body>    \n" +
+                "         <m:echoIn xmlns:m=\"http://example.org/echo\" />  \n" +
+                "      </env:Body>\n" +
+                "   </env:Envelope>";
+        return (SOAPEnvelope) new StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(
+                new ByteArrayInputStream(soap.getBytes())),
+                SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI).getDocumentElement();
+    }
+
+    private SOAPEnvelope getResponse(SOAPEnvelope inEnvelope) throws AxisFault {
+        ConfigurationContext confctx = ConfigurationContextFactory.
+                createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+        ServiceClient client = new ServiceClient(confctx, null);
+        Options options = new Options();
+        client.setOptions(options);
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setExceptionToBeThrownOnSOAPFault(false);
+        MessageContext msgctx = new MessageContext();
+        msgctx.setEnvelope(inEnvelope);
+        OperationClient opClient = client.createClient(ServiceClient.ANON_OUT_IN_OP);
+        opClient.addMessageContext(msgctx);
+        opClient.execute(true);
+        return opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE).getEnvelope();
+    }
+
+    public File getTestResourceFile(String relativePath) {
+        return new File(testResourceDir, relativePath);
+    }
+
+    protected void tearDown() throws Exception {
+    }
+
+    public void testExceptionInformationExtractionFromAxisFault() {
+        try {
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+            ServiceClient sender = new ServiceClient(configContext, null);
+
+            OMElement payload = getOMElement(FaultHandler.ERR_HANDLING_WITH_AXIS_FAULT);
+
+            // test with SOAP 1.2
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setExceptionToBeThrownOnSOAPFault(true);
+            options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+            sender.setOptions(options);
+
+            sender.sendReceive(payload).toString();
+        } catch (AxisFault axisFault) {
+            assertTrue(axisFault.getFaultCodeElement().toString().indexOf(FaultHandler.M_FAULT_EXCEPTION) > -1);
+            assertTrue(axisFault.getFaultDetailElement().toString().indexOf(FaultHandler.DETAIL_MORE_INFO) > -1);
+            assertTrue(axisFault.getFaultReasonElement().toString().indexOf(FaultHandler.FAULT_REASON) > -1);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/HandlerFailureTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/HandlerFailureTest.java
new file mode 100644
index 0000000..23566da
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/HandlerFailureTest.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+//todo
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.phaseresolver.PhaseMetadata;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.stream.XMLOutputFactory;
+import java.util.ArrayList;
+
+
+public class HandlerFailureTest extends UtilServerBasedTestCase implements TestConstants {
+	private static final Log log = LogFactory.getLog(HandlerFailureTest.class);
+
+    public HandlerFailureTest() {
+        super(HandlerFailureTest.class.getName());
+    }
+
+    public HandlerFailureTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(HandlerFailureTest.class));
+    }
+
+
+    public void testFailureAtServerRequestFlow() throws Exception {
+
+        AxisService service = Utils.createSimpleService(serviceName,
+                Echo.class.getName(),
+                operationName);
+
+        UtilServer.deployService(service);
+        AxisOperation operation = service.getOperation(operationName);
+        ArrayList phasec = new ArrayList();
+        phasec.add(new Phase(PhaseMetadata.PHASE_POLICY_DETERMINATION));
+        operation.setRemainingPhasesInFlow(phasec);
+        ArrayList phase = operation.getRemainingPhasesInFlow();
+        for (int i = 0; i < phase.size(); i++) {
+            Phase phase1 = (Phase) phase.get(i);
+            if (PhaseMetadata.PHASE_POLICY_DETERMINATION.equals(phase1.getPhaseName())) {
+                phase1.addHandler(culprit);
+            }
+        }
+        try {
+            callTheService();
+        } finally {
+            UtilServer.unDeployService(serviceName);
+        }
+    }
+
+    private void callTheService() throws Exception {
+        try {
+            SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+
+            OMNamespace omNs = fac.createOMNamespace("http://localhost/my",
+                    "my");
+            OMElement method = fac.createOMElement("echoOMElement", omNs);
+            OMElement value = fac.createOMElement("myValue", omNs);
+            value.setText("Isaac Asimov, The Foundation Trilogy");
+            method.addChild(value);
+            Options options = new Options();
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setTo(targetEPR);
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(null,null);
+            ServiceClient sender = new ServiceClient(configContext, null);
+            sender.setOptions(options);
+
+            OMElement result = sender.sendReceive(method);
+
+
+            result.serializeAndConsume(StAXUtils.createXMLStreamWriter(
+                    System.out));
+            fail("the test must fail due to the intentional failure of the \"culprit\" handler");
+        } catch (AxisFault e) {
+            log.info(e.getMessage());
+            String message = e.getMessage();
+            assertTrue((message.indexOf(UtilServer.FAILURE_MESSAGE)) >= 0);
+        }
+
+    }
+
+    private Handler culprit = new AbstractHandler() {
+        public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+            throw new AxisFault(UtilServer.FAILURE_MESSAGE);
+        }
+    };
+}
+
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageContextEnabledEcho.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageContextEnabledEcho.java
new file mode 100644
index 0000000..0a67894
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageContextEnabledEcho.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+public class MessageContextEnabledEcho {
+    private MessageContext msgcts;
+	private static final Log log = LogFactory.getLog(MessageContextEnabledEcho.class);
+
+    public MessageContextEnabledEcho() {
+    }
+
+    public void init(MessageContext msgcts) {
+        this.msgcts = msgcts;
+
+    }
+
+    public OMElement echoOMElement(OMElement omEle) throws AxisFault {
+        if (msgcts != null) {
+            log.info("MessageContext injected");
+        } else {
+            throw new AxisFault("Message Context not injected");
+        }
+        return null;
+    }
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageContextInjectionTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageContextInjectionTest.java
new file mode 100644
index 0000000..087e746
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageContextInjectionTest.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver;
+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.transport.local.LocalTransportReceiver;
+import org.apache.axis2.transport.local.LocalTransportSender;
+
+import javax.xml.namespace.QName;
+
+public class MessageContextInjectionTest extends TestCase implements TestConstants {
+    private TransportOutDescription tOut;
+
+    public MessageContextInjectionTest() {
+        super(MessageContextInjectionTest.class.getName());
+    }
+
+    public MessageContextInjectionTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        AxisConfiguration config = new AxisConfiguration();
+
+        config.addMessageReceiver(
+                "http://www.w3.org/2004/08/wsdl/in-only", new RawXMLINOnlyMessageReceiver());
+        config.addMessageReceiver(
+                "http://www.w3.org/2004/08/wsdl/in-out", new RawXMLINOutMessageReceiver());
+
+        DispatchPhase dispatchPhase = new DispatchPhase();
+
+        dispatchPhase.setName("Dispatch");
+
+        AddressingBasedDispatcher abd = new AddressingBasedDispatcher();
+
+        abd.initDispatcher();
+
+        RequestURIBasedDispatcher rud = new RequestURIBasedDispatcher();
+
+        rud.initDispatcher();
+
+        SOAPActionBasedDispatcher sabd = new SOAPActionBasedDispatcher();
+
+        sabd.initDispatcher();
+
+        SOAPMessageBodyBasedDispatcher smbd = new SOAPMessageBodyBasedDispatcher();
+
+        smbd.initDispatcher();
+
+        InstanceDispatcher id = new InstanceDispatcher();
+
+        id.init(new HandlerDescription("InstanceDispatcher"));
+        dispatchPhase.addHandler(abd);
+        dispatchPhase.addHandler(rud);
+        dispatchPhase.addHandler(sabd);
+        dispatchPhase.addHandler(smbd);
+        dispatchPhase.addHandler(id);
+        config.getGlobalInFlow().add(dispatchPhase);
+        TransportInDescription tIn = new TransportInDescription(new QName(Constants.TRANSPORT_LOCAL));
+        tIn.setReceiver(new TransportListener() {
+
+            public void init(ConfigurationContext axisConf, TransportInDescription transprtIn) {
+                //To change body of implemented methods use File | Settings | File Templates.
+            }
+
+            public void start() {
+                //To change body of implemented methods use File | Settings | File Templates.
+            }
+
+            public void stop() {
+                //To change body of implemented methods use File | Settings | File Templates.
+            }
+
+            public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
+                return null;  //To change body of implemented methods use File | Settings | File Templates.
+            }
+
+            public EndpointReference[] getEPRsForService(String serviceName, String ip){
+                return null;
+            }
+        });
+        config.addTransportIn(tIn);
+
+        tOut = new TransportOutDescription(new QName(Constants.TRANSPORT_LOCAL));
+        tOut.setSender(new LocalTransportSender());
+        config.addTransportOut(tOut);
+
+        LocalTransportReceiver.CONFIG_CONTEXT = new ConfigurationContext(
+                config);
+
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        service.addParameter(
+                new Parameter(Constants.SERVICE_CLASS,
+                        MessageContextEnabledEcho.class.getName()));
+        AxisOperation axisOperation = new InOnlyAxisOperation(
+                operationName);
+        axisOperation.setMessageReceiver(new RawXMLINOnlyMessageReceiver());
+        service.addOperation(axisOperation);
+        service.setClassLoader(Thread.currentThread().getContextClassLoader());
+        LocalTransportReceiver.CONFIG_CONTEXT.getAxisConfiguration()
+                .addService(service);
+    }
+
+    protected void tearDown() throws Exception {
+    }
+
+    private OMElement createEnvelope() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        OMElement payload = createEnvelope();
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        Options options = new Options();
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+        options.setTransportOut(tOut);
+        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        sender.fireAndForget(payload);
+
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageWithServerTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageWithServerTest.java
new file mode 100644
index 0000000..485042a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MessageWithServerTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+//todo
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axis2.description.*;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver;
+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.net.Socket;
+
+public class MessageWithServerTest extends UtilServerBasedTestCase {
+    private static final Log log = LogFactory.getLog(MessageWithServerTest.class);
+    private QName serviceName = new QName("", "EchoService");
+    private QName operationName =
+            new QName("http://ws.apache.org/axis2", "echoVoid");
+
+    private AxisConfiguration config;
+    private ClassLoader cl;
+
+    public MessageWithServerTest(String testName) {
+        super(testName);
+        cl = Thread.currentThread().getContextClassLoader();
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(MessageWithServerTest.class));
+    }
+
+
+    protected void setUp() throws Exception {
+        AxisService service = Utils.createSimpleService(serviceName,
+                Echo.class.getName(),
+                operationName);
+
+        //service.setFaultInFlow(new MockFlow("service faultflow", 1));
+
+        AxisModule m1 = new AxisModule(
+                new QName("", "A Module 1"));
+        m1.setInFlow(new MockFlow("service module inflow", 4));
+        //m1.setFaultInFlow(new MockFlow("service module faultflow", 1));
+        config = new AxisConfiguration();
+        config.addMessageReceiver(
+                "http://www.w3.org/2004/08/wsdl/in-only", new RawXMLINOnlyMessageReceiver());
+        config.addMessageReceiver(
+                "http://www.w3.org/2004/08/wsdl/in-out", new RawXMLINOutMessageReceiver());
+
+        DispatchPhase dispatchPhase = new DispatchPhase();
+
+        dispatchPhase.setName("Dispatch");
+
+        AddressingBasedDispatcher abd = new AddressingBasedDispatcher();
+
+        abd.initDispatcher();
+
+        RequestURIBasedDispatcher rud = new RequestURIBasedDispatcher();
+
+        rud.initDispatcher();
+
+        SOAPActionBasedDispatcher sabd = new SOAPActionBasedDispatcher();
+
+        sabd.initDispatcher();
+
+        SOAPMessageBodyBasedDispatcher smbd = new SOAPMessageBodyBasedDispatcher();
+
+        smbd.initDispatcher();
+
+        InstanceDispatcher id = new InstanceDispatcher();
+
+        id.init(new HandlerDescription("InstanceDispatcher"));
+        dispatchPhase.addHandler(abd);
+        dispatchPhase.addHandler(rud);
+        dispatchPhase.addHandler(sabd);
+        dispatchPhase.addHandler(smbd);
+        dispatchPhase.addHandler(id);
+        config.getGlobalInFlow().add(dispatchPhase);
+        service.engageModule(m1, config);
+
+        AxisOperation axisOperation = new OutInAxisOperation(
+        );
+        axisOperation.setName(operationName);
+        service.addOperation(axisOperation);
+
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+    public void testEchoStringServer() throws Exception {
+        InputStream in = cl.getResourceAsStream("soap/soapmessage.txt");
+
+        Socket socket = new Socket("127.0.0.1", UtilServer.TESTING_PORT);
+        OutputStream out = socket.getOutputStream();
+        byte[] buf = new byte[1024];
+        int index = -1;
+        while ((index = in.read(buf)) > 0) {
+            out.write(buf, 0, index);
+        }
+
+        InputStream respose = socket.getInputStream();
+        Reader rReader = new InputStreamReader(respose);
+        char[] charBuf = new char[1024];
+        while ((index = rReader.read(charBuf)) > 0) {
+            log.info(new String(charBuf));
+        }
+
+        in.close();
+        out.close();
+
+        rReader.close();
+        socket.close();
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MockFlow.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MockFlow.java
new file mode 100644
index 0000000..cfb1199
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MockFlow.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.description.Flow;
+
+import javax.xml.namespace.QName;
+
+public class MockFlow extends Flow {
+    public MockFlow(String message, int length) {
+        super();
+        for (int i = 0; i < length; i++) {
+            SpeakingHandler1 h1 = new SpeakingHandler1(
+                    "Executing " + i + " inside " + message, new QName("SpeakingHandler" + i));
+            h1.setName("SpeakingHandler" + i);
+            this.addHandler(h1.getHandlerDescription());
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MyService.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MyService.java
new file mode 100644
index 0000000..694f70e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/MyService.java
@@ -0,0 +1,28 @@
+package org.apache.axis2.engine;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class MyService {

+

+    public int add(int a, int b) {

+        return a + b;

+    }

+

+    public void putValue(String value) {

+

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/OneWayRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/OneWayRawXMLTest.java
new file mode 100644
index 0000000..dbcbcfb
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/OneWayRawXMLTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+//todo
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+
+public class OneWayRawXMLTest extends UtilServerBasedTestCase implements TestConstants {
+
+    private SOAPEnvelope envelope;
+
+
+    public OneWayRawXMLTest() {
+        super(OneWayRawXMLTest.class.getName());
+    }
+
+    public OneWayRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(OneWayRawXMLTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        AxisOperation axisOperation = new OutInAxisOperation(
+                operationName);
+        axisOperation.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+                envelope = messageCtx.getEnvelope();
+                TestingUtils.campareWithCreatedOMElement(
+                        envelope.getBody().getFirstElement());
+            }
+        });
+        service.addOperation(axisOperation);
+        UtilServer.deployService(service);
+    }
+
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+
+    public void testEchoXMLSync() throws Exception {
+
+        OMElement payload = TestingUtils.createDummyOMElement();
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null,null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+
+        Options options = new Options();
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+        sender.fireAndForget(payload);
+        int index = 0;
+        while (envelope == null) {
+            Thread.sleep(1000);
+            index++;
+            if (index == 5) {
+                throw new AxisFault("error Occured");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SOAPversionTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SOAPversionTest.java
new file mode 100644
index 0000000..1321b50
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SOAPversionTest.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+import javax.xml.namespace.QName;
+
+public class SOAPversionTest extends UtilServerBasedTestCase implements TestConstants {
+
+    QName assumedServiceName = new QName("AnonymousService");
+
+
+    private AxisService service;
+
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(SOAPversionTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+
+    public void testSOAP11() throws AxisFault {
+        OMElement payload = createEnvelope();
+        ConfigurationContext configCtx = ConfigurationContextFactory.
+                createConfigurationContextFromFileSystem(null, null);
+        ServiceClient client = new ServiceClient(configCtx, null);
+
+
+        Options options = new Options();
+        client.setOptions(options);
+        options.setSoapVersionURI(
+                SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        OperationClient opClinet = client.createClient(ServiceClient.ANON_OUT_IN_OP);
+        opClinet.addMessageContext(prepareTheSOAPEnvelope(payload, options));
+        opClinet.execute(true);
+
+        SOAPEnvelope result = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE).getEnvelope();
+        assertEquals("SOAP Version received is not compatible",
+                SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                result.getNamespace().getNamespaceURI());
+    }
+
+    public void testSOAP12() throws AxisFault {
+        OMElement payload = createEnvelope();
+        ConfigurationContext configCtx = ConfigurationContextFactory.
+                createConfigurationContextFromFileSystem(null, null);
+        ServiceClient client = new ServiceClient(configCtx, null);
+        Options options = new Options();
+        options.setSoapVersionURI(
+                SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        client.setOptions(options);
+
+        OperationClient opClinet = client.createClient(ServiceClient.ANON_OUT_IN_OP);
+        opClinet.addMessageContext(prepareTheSOAPEnvelope(payload, options));
+        opClinet.execute(true);
+
+        SOAPEnvelope result = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE).getEnvelope();
+        assertEquals("SOAP Version received is not compatible",
+                SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI,
+                result.getNamespace().getNamespaceURI());
+    }
+
+    private MessageContext prepareTheSOAPEnvelope(OMElement toSend, Options options) throws AxisFault {
+        MessageContext msgctx = new MessageContext();
+        SOAPFactory sf = getSOAPFactory(options);
+        SOAPEnvelope se = sf.getDefaultEnvelope();
+        if (toSend != null) {
+            se.getBody().addChild(toSend);
+        }
+        msgctx.setEnvelope(se);
+        return msgctx;
+    }
+
+    private SOAPFactory getSOAPFactory(Options options) {
+        String soapVersionURI = options.getSoapVersionURI();
+        if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapVersionURI)) {
+            return OMAbstractFactory.getSOAP12Factory();
+        } else {
+            // if its not SOAP 1.2 just assume SOAP 1.1
+            return OMAbstractFactory.getSOAP11Factory();
+        }
+    }
+
+    public void testSOAPfault() throws AxisFault {
+        OMElement payload = createEnvelope();
+        ConfigurationContext configCtx = ConfigurationContextFactory.
+                createConfigurationContextFromFileSystem(null, null);
+        ServiceClient client = new ServiceClient(configCtx, null);
+        Options options = new Options();
+        client.setOptions(options);
+        options.setSoapVersionURI(
+                SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        OperationClient opClinet = client.createClient(ServiceClient.ANON_OUT_IN_OP);
+        opClinet.addMessageContext(prepareTheSOAPEnvelope(payload, options));
+        opClinet.execute(true);
+
+        opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE).getEnvelope();
+//        assertEquals("SOAP Version received is not compatible", SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI, result.getNamespace().getName());
+
+    }
+
+    private OMElement createEnvelope() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+
+        return method;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceCreateTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceCreateTest.java
new file mode 100644
index 0000000..cc230fa
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceCreateTest.java
@@ -0,0 +1,88 @@
+package org.apache.axis2.engine;

+

+import junit.framework.TestCase;

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisMessage;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.rpc.client.RPCServiceClient;

+

+import javax.xml.namespace.QName;

+import java.util.ArrayList;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class ServiceCreateTest extends UtilServerBasedTestCase {

+

+    ConfigurationContext configContext;

+    ConfigurationContext clinetConfigurationctx;

+

+    public static Test suite() {

+        return getTestSetup(new TestSuite(ServiceCreateTest.class));

+    }

+

+    protected void setUp() throws Exception {

+        configContext = UtilServer.getConfigurationContext();

+        clinetConfigurationctx = ConfigurationContextFactory.

+                createConfigurationContextFromFileSystem(null, null);

+    }

+

+    public void testServiceCreate() throws AxisFault {

+        AxisConfiguration axisConfig = configContext.getAxisConfiguration();

+        AxisService service = AxisService.createService("org.apache.axis2.engine.MyService", axisConfig);

+        assertNotNull(service);

+        axisConfig.addService(service);

+        assertEquals("MyService", service.getName());

+        AxisOperation axisOperation = service.getOperation(new QName("add"));

+        assertNotNull(axisOperation);

+        AxisMessage messge = axisOperation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+        // messge.getSchemaElement().toString()

+        assertNotNull(messge);

+        assertNotNull(messge.getSchemaElement());

+        assertNotNull(service.getOperation(new QName("putValue")));

+        assertNotNull(axisConfig.getService("MyService"));

+        service.printWSDL(System.out, null,"services");

+

+        RPCServiceClient client = new RPCServiceClient(clinetConfigurationctx, null);

+

+        EndpointReference targetEPR = new EndpointReference(

+                "http://127.0.0.1:" + (UtilServer.TESTING_PORT)

+                        + "/axis2/services/MyService/add");

+        Options options = new Options();

+

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        client.setOptions(options);

+        ArrayList args = new ArrayList();

+        args.add("100");

+        args.add("200");

+

+        OMElement response = client.invokeBlocking(new QName("http://engine.axis2.apache.org/xsd", "add", "ns1"), args.toArray());

+        assertEquals(Integer.parseInt(response.getFirstElement().getText()), 300);

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceDispatchingTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceDispatchingTest.java
new file mode 100644
index 0000000..a970ba4
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceDispatchingTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.framework.Test;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+
+public class ServiceDispatchingTest extends UtilServerBasedTestCase implements TestConstants {
+    public ServiceDispatchingTest() {
+        super(ServiceDispatchingTest.class.getName());
+    }
+
+    public ServiceDispatchingTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(ServiceDispatchingTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service = Utils.createSimpleService(serviceName,
+                Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+
+    public void testDispatchWithURLOnly() throws Exception {
+        OMElement payload = TestingUtils.createDummyOMElement();
+        Options options = new Options();
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+
+        OMElement result = sender.sendReceive(payload);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+
+    public void testDispatchWithURLAndSOAPAction() throws Exception {
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        OMNamespace omNs = fac.createOMNamespace("http://dummyURL", "my");
+        OMElement payload = fac.createOMElement("echoOMElementRequest", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        payload.addChild(value);
+        Options options = new Options();
+        options.setTo(
+                new EndpointReference("http://127.0.0.1:5555/axis2/services/EchoXMLService/"));
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setAction("echoOMElement");
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+
+        OMElement result = sender.sendReceive(payload);
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+
+    public void testDispatchWithSOAPBody() throws Exception {
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://127.0.0.1:5555/axis2/services/EchoXMLService", "my");
+        OMElement payload = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        payload.addChild(value);
+        Options options = new Options();
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+
+        OMElement result = sender.sendReceive(payload);
+
+        TestingUtils.campareWithCreatedOMElement(result);
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceFaultTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceFaultTest.java
new file mode 100644
index 0000000..32cfe82
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceFaultTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.FaultThrowingService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+
+import javax.xml.namespace.QName;
+
+/**
+ * This test will make sure, faults thrown by services are handled properly.
+ */
+public class ServiceFaultTest extends UtilServerBasedTestCase implements TestConstants {
+
+    protected String testResourceDir = "test-resources";
+    private AxisService service;
+
+    private QName serviceName = new QName("FaultThrowingService");
+    private QName operationName = new QName("echoWithFault");
+
+    private EndpointReference targetEPR;
+
+    protected void setUp() throws Exception {
+        UtilServer.start();
+        service =
+                Utils.createSimpleService(serviceName,
+                        FaultThrowingService.class.getName(),
+                        operationName);
+        UtilServer.deployService(service);
+        targetEPR = new EndpointReference(
+                "http://127.0.0.1:" + (UtilServer.TESTING_PORT)
+//                "http://127.0.0.1:5556"
+                        + "/axis2/services/" + serviceName.getLocalPart() + "/" + operationName.getLocalPart());
+    }
+
+    /**
+     * Service throws a fault from the service impl, by just creating an AxisFault from all the fault
+     * information.
+     */
+    public void testFaultThrownByServiceUsingAxisFaultOnly() {
+        try {
+            OMElement payload = getOMElementWithText(FaultThrowingService.THROW_FAULT_AS_AXIS_FAULT);
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setExceptionToBeThrownOnSOAPFault(false);
+
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+            ServiceClient sender = new ServiceClient(configContext, null);
+            sender.setOptions(options);
+
+            String result = sender.sendReceive(payload).toString();
+
+            assertTrue(result.indexOf("test:TestFault") > -1);
+            assertTrue(result.indexOf("FaultReason</soapenv:Text>") > -1);
+            assertTrue(result.indexOf("This is a test Exception") > -1);
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+            fail();
+        }
+    }
+
+    /**
+     * Service sends out a fault, filling all the information to the message context
+     */
+    public void testFaultThrownByServiceUsingMessageContext() {
+        try {
+            OMElement payload = getOMElementWithText(FaultThrowingService.THROW_FAULT_WITH_MSG_CTXT);
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setExceptionToBeThrownOnSOAPFault(false);
+
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+            ServiceClient sender = new ServiceClient(configContext, null);
+            sender.setOptions(options);
+
+            String result = sender.sendReceive(payload).toString();
+
+            assertTrue(result.indexOf("test:TestFault") > -1);
+            assertTrue(result.indexOf("FaultReason</soapenv:Text>") > -1);
+            assertTrue(result.indexOf("This is a test Exception") > -1);
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+            fail();
+        }
+    }
+
+    private OMElement getOMElementWithText(String text) {
+        OMFactory omFactory = OMAbstractFactory.getOMFactory();
+        OMElement omElement = omFactory.createOMElement("EchoOMElement", null);
+        omElement.setText(text);
+        return omElement;
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+        UtilServer.stop();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java
new file mode 100644
index 0000000..6b48e4c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java
@@ -0,0 +1,114 @@
+package org.apache.axis2.engine;

+

+import junit.framework.TestCase;

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.util.RequestCounter;

+import org.apache.axis2.engine.util.RequestCounterMessageReceiver;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.util.Utils;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+

+/*

+* 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.

+*

+*/

+

+public class ServiceGroupContextTest extends UtilServerBasedTestCase {

+

+    /**

+     * This test will first sends a request to a dummy service deployed. That service will get

+     * message contexts as inputs and will put a property in the service group context to count the

+     * number of requests.

+     * Then the client, upon receiving the response, extracts the sgc id from the received message

+     * (this will come as a reference parameter in the ReplyTo EPR) and sets that as a top level

+     * soap header in the next request to the same service group.

+     * Server will correctly identify the service group from the information sent by the client and

+     * retrieve the sgc earlier used and will use that for the current request as well.

+     * The service will retrieve the request count from the sgc and increase that by one.

+     * <p/>

+     * Test will asserts whether the client gets the number of requests as 2, when he invokes two times.

+     */

+

+    protected EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:" +

+            (UtilServer.TESTING_PORT) +

+            "/axis2/services/RequestCounter");

+	private static final Log log = LogFactory.getLog(ServiceGroupContextTest.class);

+    protected QName serviceName = new QName("RequestCounter");

+    protected QName operationName = new QName("getRequestCount");

+    protected QName transportName = new QName("http://localhost/my", "NullTransport");

+    protected AxisService service;

+

+    public static Test suite() {

+        return getTestSetup(new TestSuite(ServiceGroupContextTest.class));

+    }

+

+    protected void setUp() throws Exception {

+        service = Utils.createSimpleService(serviceName, new RequestCounterMessageReceiver(),

+                RequestCounter.class.getName(), operationName);

+//        service.setScope(Constants.SCOPE_TRANSPORT_SESSION);

+        service.setScope(Constants.SCOPE_SOAP_SESSION);

+        UtilServer.deployService(service);

+        UtilServer.getConfigurationContext().getAxisConfiguration().setManageTransportSession(true);

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.unDeployClientService();

+    }

+

+    public void testEchoXMLSync() throws Exception {

+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();

+

+        SOAPEnvelope payload = fac.getDefaultEnvelope();

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setManageSession(true);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        options.setAction(operationName.getLocalPart());

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);

+        configContext.getAxisConfiguration().engageModule(new QName("addressing"));

+        ServiceClient sender = new ServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        sender.sendReceive(payload.getBody().getFirstElement());

+

+        SOAPEnvelope defaultEnvelope = fac.getDefaultEnvelope();

+

+        //TODO : ple imporove this , what I have done is a hack

+        OMElement result2 = sender.sendReceive(defaultEnvelope.getBody().getFirstElement());

+        String text = result2.getText();

+        assertEquals("Number of requests should be 2", 2, Integer.parseInt(text));

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SpeakingHandler.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SpeakingHandler.java
new file mode 100644
index 0000000..3f4b2fc
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SpeakingHandler.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class SpeakingHandler extends AbstractHandler implements Handler {
+    private static final Log log = LogFactory.getLog(SpeakingHandler.class);
+    private String message;
+    private String name;
+
+    public SpeakingHandler() {
+        this.message = "Hi I amtesting ";
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        log.info("I am " + message + " Handler Running :)");
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public void revoke(MessageContext msgContext) {
+        log.info("I am " + message + " Handler Running :)");
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SpeakingHandler1.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SpeakingHandler1.java
new file mode 100644
index 0000000..16e3380
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/SpeakingHandler1.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.phaseresolver.PhaseMetadata;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+public class SpeakingHandler1 extends AbstractHandler implements Handler {
+	private static final Log log = LogFactory.getLog(SpeakingHandler1.class);
+    private String message;
+    private String name;
+
+    public SpeakingHandler1(String message, QName name) {
+        this.message = message;
+        HandlerDescription handlerDesc = new HandlerDescription();
+        handlerDesc.setName("SpeakingHandler1");
+        PhaseRule rule = new PhaseRule();
+        rule.setPhaseName(PhaseMetadata.PHASE_DISPATCH);
+        handlerDesc.setRules(rule);
+        handlerDesc.setHandler(this);
+        handlerDesc.setName(name.getLocalPart());
+        init(handlerDesc);
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        log.info("I am " + message + " Handler Running :)");
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public void revoke(MessageContext msgContext) {
+        log.info("I am " + message + " Handler Running :)");
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public HandlerDescription getHandlerDescription() {
+        return handlerDesc;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ThreadingTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ThreadingTest.java
new file mode 100644
index 0000000..7e39ce3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/ThreadingTest.java
@@ -0,0 +1,108 @@
+package org.apache.axis2.engine;

+

+import junit.framework.TestCase;

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.util.InvokerThread;

+import org.apache.axis2.engine.util.TestConstants;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.util.Utils;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+import java.util.Calendar;

+import java.util.GregorianCalendar;

+

+/*

+ * 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.

+ *

+ */

+

+public class ThreadingTest extends UtilServerBasedTestCase implements TestConstants {

+

+

+	private static final Log log = LogFactory.getLog(ThreadingTest.class);

+

+    protected QName transportName = new QName("http://localhost/my",

+            "NullTransport");

+

+    protected AxisConfiguration engineRegistry;

+    protected MessageContext mc;

+    protected ServiceContext serviceContext;

+    protected AxisService service;

+

+    protected boolean finish = false;

+

+    public static Test suite() {

+        return getTestSetup(new TestSuite(ThreadingTest.class));

+    }

+

+    protected void setUp() throws Exception {

+        service =

+                Utils.createSimpleService(serviceName,

+                        Echo.class.getName(),

+                        operationName);

+        UtilServer.deployService(service);

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.unDeployClientService();

+    }

+

+    public void testEchoXMLSync() throws Exception {

+        int numberOfThreads = 5;

+        InvokerThread[] invokerThreads = new InvokerThread[numberOfThreads];

+

+        for (int i = 0; i < numberOfThreads; i++) {

+            InvokerThread invokerThread = new InvokerThread(i + 1);

+            invokerThreads[i] = invokerThread;

+            invokerThread.start();

+        }

+

+        boolean threadsAreRunning;

+        Calendar cal = new GregorianCalendar();

+        int min = cal.get(Calendar.MINUTE);

+

+        do {

+            threadsAreRunning = false;

+            for (int i = 0; i < numberOfThreads; i++) {

+                if (invokerThreads[i].isAlive()) {

+                    threadsAreRunning = true;

+                    break;

+                }

+                Exception exception = invokerThreads[i].getThrownException();

+                if (exception != null) {

+                    throw new Exception("Exception thrown in thread "+ i + " ....", exception);

+                }

+            }

+

+            // waiting 3 seconds, if not finish, time out.

+            if (Math.abs(min - new GregorianCalendar().get(Calendar.MINUTE)) > 1) {

+                log.info("I'm timing out. Can't wait more than this to finish.");

+                fail("Timing out");

+            }

+

+            Thread.sleep(100);

+        } while (threadsAreRunning);

+

+        assertTrue(true);

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/WSDLClientTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/WSDLClientTest.java
new file mode 100644
index 0000000..49876d1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/WSDLClientTest.java
@@ -0,0 +1,79 @@
+package org.apache.axis2.engine;

+

+import junit.framework.TestCase;

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.rpc.receivers.RPCMessageReceiver;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.util.TestConstants;

+import org.apache.axis2.integration.TestingUtils;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+

+import javax.xml.namespace.QName;

+import java.io.IOException;

+import java.net.URL;

+/*

+* Copyright 2004,2005 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.

+*/

+

+public class WSDLClientTest extends UtilServerBasedTestCase implements TestConstants {

+

+    protected AxisService service;

+

+    public static Test suite() {

+        return getTestSetup(new TestSuite(WSDLClientTest.class));

+    }

+

+    protected void setUp() throws Exception {

+        service = AxisService.createService(Echo.class.getName(),

+                UtilServer.getConfigurationContext().getAxisConfiguration(),RPCMessageReceiver.class );

+        service.setName(serviceName.getLocalPart());

+        UtilServer.deployService(service);

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.unDeployClientService();

+    }

+

+    public void testWSDLClient() throws AxisFault {

+        try {

+            URL wsdlURL = new URL("http://localhost:" + UtilServer.TESTING_PORT +

+                    "/axis2/services/EchoXMLService?wsdl");

+            ServiceClient serviceClient = new ServiceClient(null, wsdlURL,

+                    new QName("http://engine.axis2.apache.org/xsd", "EchoXMLService"),

+                    "EchoXMLServiceSOAP11port_http");

+            OMElement payload = TestingUtils.createDummyOMElement("http://engine.axis2.apache.org/xsd");

+            String epr = "http://127.0.0.1:" + UtilServer.TESTING_PORT + "/axis2/services/EchoXMLService";

+            //This is not smt we need to do but , my build is fail if I dont do that :)

+            serviceClient.getOptions().setTo(new EndpointReference(epr));

+            System.out.println(serviceClient.getOptions().getTo().getAddress());

+            OMElement response = serviceClient.sendReceive(

+                    new QName("http://engine.axis2.apache.org/xsd", "echoOM"), payload);

+            assertNotNull(response);

+            String textValue = response.getFirstElement().getFirstElement().getText();

+            assertEquals(textValue, "Isaac Asimov, The Foundation Trilogy");

+        } catch (Exception e) {

+            e.printStackTrace();

+            throw new AxisFault(e);

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/chunking-disabled-axis2.xml b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/chunking-disabled-axis2.xml
new file mode 100644
index 0000000..22193c1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/chunking-disabled-axis2.xml
@@ -0,0 +1,181 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">false</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <parameter name="seralizeLocation" locked="false">.</parameter>

+    <hostConfiguration>

+        <ip>127.0.0.1</ip>

+        <port>5555</port>

+    </hostConfiguration>

+

+

+    <!--if you want to extract the service archive file and work with that please uncomment this-->

+    <!--else , it wont extract archive file or does not take into consideration if someone drop-->

+    <!--exploded directory into /service directory-->

+    <!--<parameter name="extractServiceArchive" locked="false">true</parameter>-->

+

+

+    <!--    The way of adding listener to the system-->

+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->

+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->

+    <!--    </listener>-->

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->

+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->

+    <!--any operation -->

+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </messageReceivers>

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+    </transportReceiver>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">

+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>

+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>

+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>

+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>

+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>

+      </transportReceiver> -->

+

+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter>

+    </transportReceiver>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+    </transportSender>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+   <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">

+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>

+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>

+   </transportSender>

+   -->

+

+    <!-- ================================================= -->

+    <!-- Global Modules  -->

+    <!-- ================================================= -->

+    <!-- Comment this to disable Addressing -->

+    <module ref="addressing"/>

+

+

+    <!--Configuring module , providing parameters for modules whether they refer or not-->

+    <!--<moduleConfig name="addressing">-->

+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->

+    <!--</moduleConfig>-->

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+    <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+        <phase name="TransportIn"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="userphase1"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="userphase1"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+       <phase name="TransportIn"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="userphase1"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="userphase1"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/chunking-enabled-axis2.xml b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/chunking-enabled-axis2.xml
new file mode 100644
index 0000000..ce5a165
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/chunking-enabled-axis2.xml
@@ -0,0 +1,149 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing
+    <module ref="addressing"/> -->
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+       <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/commons-http-enabled-axis2.xml b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/commons-http-enabled-axis2.xml
new file mode 100644
index 0000000..c184313
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/commons-http-enabled-axis2.xml
@@ -0,0 +1,131 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing
+    <module ref="addressing"/> -->
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+       <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/FaultHandler.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/FaultHandler.java
new file mode 100644
index 0000000..5cebe27
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/FaultHandler.java
@@ -0,0 +1,81 @@
+package org.apache.axis2.engine.util;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.SOAPFaultCode;

+import org.apache.axiom.soap.SOAPFaultDetail;

+import org.apache.axiom.soap.SOAPFaultReason;

+import org.apache.axiom.soap.SOAPFaultText;

+import org.apache.axiom.soap.SOAPFaultValue;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.handlers.AbstractHandler;

+

+import javax.xml.namespace.QName;

+

+/*

+ * 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.

+ *

+ */

+

+public class FaultHandler extends AbstractHandler {

+    public static final String FAULT_REASON = "This is a test fault message which happened suddenly";

+    public static final String DETAIL_MORE_INFO = "This error is a result due to a fake problem in Axis2 engine. Do not worry ;)";

+    public static final String M_FAULT_EXCEPTION = "m:FaultException";

+

+    public static final String ERR_HANDLING_WITH_MSG_CTXT = "ErrorHandlingWithParamsSetToMsgCtxt";

+    public static final String ERR_HANDLING_WITH_AXIS_FAULT = "ErrorHandlingWithParamsSetToAxisFault";

+

+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {

+        // this handler will be used to check the fault handling of Axis2.

+        // this will create some dummy faults and send

+

+        SOAPFactory soapFac = msgContext.isSOAP11() ? OMAbstractFactory.getSOAP11Factory() : OMAbstractFactory.getSOAP12Factory();

+

+        // I have a sudden fake error ;)

+        OMElement firstElement = msgContext.getEnvelope().getBody().getFirstElement();

+

+        OMElement detailEntry = soapFac.createOMElement("MoreInfo", null);

+        detailEntry.setText(DETAIL_MORE_INFO);

+

+        if (ERR_HANDLING_WITH_MSG_CTXT.equals(firstElement.getLocalName())) {

+            SOAPFaultCode soapFaultCode = soapFac.createSOAPFaultCode();

+            soapFaultCode.declareNamespace("http://someuri.org", "m");

+            SOAPFaultValue soapFaultValue = soapFac.createSOAPFaultValue(soapFaultCode);

+            soapFaultValue.setText(M_FAULT_EXCEPTION);

+

+            SOAPFaultText soapFaultText = soapFac.createSOAPFaultText();

+            soapFaultText.setLang("en");

+            soapFaultText.setText(FAULT_REASON);

+            SOAPFaultReason soapFaultReason = soapFac.createSOAPFaultReason();

+            soapFaultReason.addSOAPText(soapFaultText);

+

+

+            SOAPFaultDetail faultDetail = soapFac.createSOAPFaultDetail();

+            faultDetail.addDetailEntry(detailEntry);

+

+            msgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, soapFaultCode);

+            msgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, soapFaultReason);

+            msgContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, faultDetail);

+

+            throw new AxisFault("A dummy exception has occurred");

+        } else if (ERR_HANDLING_WITH_AXIS_FAULT.equals(firstElement.getLocalName())) {

+            throw new AxisFault(new QName(M_FAULT_EXCEPTION), FAULT_REASON, null, null, detailEntry);

+        }

+        return InvocationResponse.CONTINUE;        

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/FaultThrowingService.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/FaultThrowingService.java
new file mode 100644
index 0000000..a6e26b8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/FaultThrowingService.java
@@ -0,0 +1,82 @@
+package org.apache.axis2.engine.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.*;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+
+import javax.xml.namespace.QName;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class FaultThrowingService {
+
+    public static final String THROW_FAULT_AS_AXIS_FAULT = "ThrowFaultAsAxisFault";
+    public static final String THROW_FAULT_WITH_MSG_CTXT = "ThrowFaultWithMsgCtxt";
+
+    private SOAPFaultCode soapFaultCode;
+    private SOAPFaultReason soapFaultReason;
+    private SOAPFaultDetail soapFaultDetail;
+
+    public OMElement echoWithFault(OMElement echoOMElement) throws AxisFault {
+        String text = echoOMElement.getText();
+        if (THROW_FAULT_AS_AXIS_FAULT.equalsIgnoreCase(text)) {
+            throw new AxisFault(new QName("http://test.org", "TestFault", "test"), "FaultReason", new Exception("This is a test Exception"));
+        } else if (THROW_FAULT_WITH_MSG_CTXT.equalsIgnoreCase(text)) {
+            MessageContext inMessageContext = MessageContext.getCurrentMessageContext();
+            initFaultInformation(inMessageContext);
+
+            inMessageContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, soapFaultCode);
+            inMessageContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, soapFaultReason);
+            inMessageContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, soapFaultDetail);
+            throw new AxisFault("Fake exception occurred !!");
+        } else {
+            return echoOMElement;
+        }
+    }
+
+    private void initFaultInformation(MessageContext inMessageContext) {
+        SOAPFactory soapFactory;
+        if (inMessageContext.isSOAP11()) {
+            soapFactory = OMAbstractFactory.getSOAP11Factory();
+        } else {
+            soapFactory = OMAbstractFactory.getSOAP12Factory();
+        }
+
+        soapFaultCode = soapFactory.createSOAPFaultCode();
+        SOAPFaultValue soapFaultValue = soapFactory.createSOAPFaultValue(soapFaultCode);
+        soapFaultValue.setText(new QName("http://test.org", "TestFault", "test"));
+
+        soapFaultReason = soapFactory.createSOAPFaultReason();
+        SOAPFaultText soapFaultText = soapFactory.createSOAPFaultText(soapFaultReason);
+        soapFaultText.setText("This is some FaultReason");
+
+        soapFaultDetail = soapFactory.createSOAPFaultDetail();
+        QName qName = new QName("http://someuri.org", "FaultException");
+        OMElement detail = soapFactory.createOMElement(qName, soapFaultDetail);
+        qName = new QName("http://someuri.org", "ExceptionMessage");
+        Throwable e = new Exception("This is a test Exception");
+        while (e != null) {
+            OMElement exception = soapFactory.createOMElement(qName, null);
+            exception.setText(e.getMessage());
+            detail.addChild(exception);
+            e = e.getCause();
+        }
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/InvokerThread.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/InvokerThread.java
new file mode 100644
index 0000000..1b61862
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/InvokerThread.java
@@ -0,0 +1,77 @@
+package org.apache.axis2.engine.util;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.integration.TestingUtils;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+

+/*

+ * 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.

+ *

+ */

+

+public class InvokerThread extends Thread {

+

+    private int threadNumber;

+    protected EndpointReference targetEPR =

+            new EndpointReference("http://127.0.0.1:"

+                    + (UtilServer.TESTING_PORT)

+                    + "/axis2/services/EchoXMLService/echoOMElement");

+    protected QName operationName = new QName("echoOMElement");

+	private static final Log log = LogFactory.getLog(InvokerThread.class);

+    private Exception thrownException = null;

+    ConfigurationContext configContext;

+

+    public InvokerThread(int threadNumber) throws AxisFault {

+        this.threadNumber = threadNumber;

+        configContext =

+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(

+                            null, null);

+    }

+

+    public void run() {

+        try {

+            log.info("Starting Thread number " + threadNumber + " .............");

+            OMElement payload = TestingUtils.createDummyOMElement();

+

+            Options options = new Options();

+            options.setTo(targetEPR);

+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+            ServiceClient sender = new ServiceClient(configContext, null);

+            sender.setOptions(options);

+            OMElement result = sender.sendReceive(payload);

+

+            TestingUtils.campareWithCreatedOMElement(result);

+            log.info("Finishing Thread number " + threadNumber + " .....");

+        } catch (AxisFault axisFault) {

+            thrownException = axisFault;

+            log.error("Error has occured invoking the service ", axisFault);

+        }

+    }

+

+    public Exception getThrownException() {

+        return thrownException;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/RequestCounter.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/RequestCounter.java
new file mode 100644
index 0000000..cd55434
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/RequestCounter.java
@@ -0,0 +1,37 @@
+package org.apache.axis2.engine.util;

+

+import org.apache.axis2.context.MessageContext;

+

+/*

+ * 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.

+ *

+ */

+

+public class RequestCounter {

+

+    public static final String REQUEST_COUNT = "Request_Count";

+

+    public void getRequestCount(MessageContext inMessageContext, MessageContext outMessageContext) {

+        Integer requestCount = (Integer) inMessageContext.getServiceGroupContext().getProperty(REQUEST_COUNT);

+        if (requestCount == null) {

+            requestCount = new Integer(1);

+        } else {

+            requestCount = new Integer(requestCount.intValue() + 1);

+        }

+

+        inMessageContext.getServiceGroupContext().setProperty(REQUEST_COUNT, requestCount);

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/RequestCounterMessageReceiver.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/RequestCounterMessageReceiver.java
new file mode 100644
index 0000000..0c8be2b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/RequestCounterMessageReceiver.java
@@ -0,0 +1,55 @@
+package org.apache.axis2.engine.util;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;

+

+/*

+ * 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.

+ *

+ */

+

+public class RequestCounterMessageReceiver extends AbstractInOutSyncMessageReceiver {

+

+    public RequestCounterMessageReceiver() {

+    }

+

+    public void invokeBusinessLogic(MessageContext inMessage, MessageContext outMessage) throws AxisFault {

+        RequestCounter requestCounter = new RequestCounter();

+        requestCounter.getRequestCount(inMessage, outMessage);

+

+        SOAPFactory factory;

+

+        if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(inMessage.getEnvelope().getNamespace().getNamespaceURI())) {

+            factory = OMAbstractFactory.getSOAP12Factory();

+        } else {

+            factory = OMAbstractFactory.getSOAP11Factory();

+        }

+

+        SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();

+        outMessage.setEnvelope(defaultEnvelope);

+

+        OMNamespace axis2Namespace = factory.createOMNamespace("http://ws.apache.org/axis2/namespaces/", "axis2");

+        OMElement firstElement = factory.createOMElement("RequestCount", axis2Namespace, defaultEnvelope.getBody());

+        firstElement.setText(""+((Integer)inMessage.getServiceGroupContext().getProperty(RequestCounter.REQUEST_COUNT)).intValue());

+

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/TestConstants.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/TestConstants.java
new file mode 100644
index 0000000..5d3d29c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/TestConstants.java
@@ -0,0 +1,38 @@
+package org.apache.axis2.engine.util;

+

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.integration.UtilServer;

+

+import javax.xml.namespace.QName;

+

+/*

+ * 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.

+ */

+

+/**

+ * This will contain the information shared across the integration test cases.

+ */

+public interface TestConstants {

+    public static final EndpointReference targetEPR = new EndpointReference(

+            "http://127.0.0.1:" + (UtilServer.TESTING_PORT)

+//            "http://127.0.0.1:" + 5556

+                    + "/axis2/services/EchoXMLService/echoOMElement");

+

+    public static final QName serviceName = new QName("EchoXMLService");

+

+    public static final QName operationName = new QName("echoOMElement");

+    

+    public static final QName swaServiceName = new QName("EchoSwAService");

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/Client.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/Client.java
new file mode 100644
index 0000000..3d5336e
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/Client.java
@@ -0,0 +1,45 @@
+package org.apache.axis2.engine.util.profiling;

+

+/*

+ * 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.

+ *

+ */

+

+public class Client {

+

+    public static void main(String[] args) {

+        ContextMemoryHandlingUtil contextMemoryHandlingTest = new ContextMemoryHandlingUtil();

+

+        try {

+            long initialMemory = Runtime.getRuntime().freeMemory();

+            System.out.println("initialMemory = " + initialMemory);

+            int numberOfTimes = 0;

+

+            while (true) {

+//            while (numberOfTimes < 50) {

+

+                System.out.println("Iterations # = " + ++numberOfTimes);

+                contextMemoryHandlingTest.runOnce();

+                Runtime.getRuntime().gc();

+                System.out.println("Memory Usage = " + (initialMemory - Runtime.getRuntime().freeMemory()));

+

+            }

+        } catch (Exception e) {

+            e.printStackTrace();

+            System.exit(-1);

+        }

+

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/ContextMemoryHandlingUtil.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/ContextMemoryHandlingUtil.java
new file mode 100644
index 0000000..992be6a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/ContextMemoryHandlingUtil.java
@@ -0,0 +1,73 @@
+package org.apache.axis2.engine.util.profiling;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.Constants;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.engine.util.TestConstants;

+import org.apache.axis2.integration.TestingUtils;

+

+/*

+ * 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.

+ */

+

+public class ContextMemoryHandlingUtil implements TestConstants {

+

+//    public static final EndpointReference targetEPR = new EndpointReference(

+//            "http://192.168.1.219:" + 8080

+//                    + "/axis2/services/echo/echoOMElement");

+//

+//    public static final QName serviceName = new QName("echo");

+//    public static final QName operationName = new QName("echoOMElement");

+

+    public ContextMemoryHandlingUtil() {

+    }

+

+    public void runOnce() throws Exception {

+        OMElement payload = TestingUtils.createDummyOMElement();

+        Options options = new Options();

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);

+        ServiceClient sender = new ServiceClient(configContext, null);

+        sender.setOptions(options);

+        options.setTo(targetEPR);

+        OMElement result = sender.sendReceive(payload);

+

+        TestingUtils.campareWithCreatedOMElement(result);

+    }

+

+

+    public static void main(String[] args) throws Exception {

+        ContextMemoryHandlingUtil contextMemoryHandlingTest = new ContextMemoryHandlingUtil();

+

+        try {

+            long initialMemory = Runtime.getRuntime().freeMemory();

+            System.out.println("initialMemory = " + initialMemory);

+            int numberOfTimes = 0;

+

+            while (true) {

+                System.out.println("Iterations # = " + ++numberOfTimes);

+                contextMemoryHandlingTest.runOnce();

+                System.out.println("Memory Usage = " + (initialMemory - Runtime.getRuntime().freeMemory()));

+            }

+        } catch (Exception e) {

+            e.printStackTrace();

+            System.exit(-1);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/Server.java b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/Server.java
new file mode 100644
index 0000000..4108da9
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/engine/util/profiling/Server.java
@@ -0,0 +1,55 @@
+package org.apache.axis2.engine.util.profiling;

+

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.Echo;

+import org.apache.axis2.engine.util.TestConstants;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.util.Utils;

+

+/*

+ * 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.

+ *

+ */

+

+public class Server implements TestConstants {

+    protected AxisService service;

+

+    public void start() throws Exception {

+        UtilServer.start();

+        service =

+                Utils.createSimpleService(serviceName,

+                        Echo.class.getName(),

+                        operationName);

+        UtilServer.deployService(service);

+    }

+

+    public void shutdown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.stop();

+        UtilServer.unDeployClientService();

+    }

+

+

+    public static void main(String[] args) throws Exception {

+        Server server = new Server();

+        try {

+            server.start();

+        } catch (Exception e) {

+            e.printStackTrace();

+            server.shutdown();

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/groovy/GroovyServiceTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/groovy/GroovyServiceTest.java
new file mode 100644
index 0000000..e89be14
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/groovy/GroovyServiceTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2004,2005 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.axis2.groovy;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.EchoRawXMLTest;
+import org.apache.axis2.integration.UtilServer;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+import java.io.StringWriter;
+
+public class GroovyServiceTest extends TestCase {
+
+
+    private EndpointReference targetEPR =
+            new EndpointReference("http://127.0.0.1:"
+                    + (UtilServer.TESTING_PORT)
+                    + "/axis2/services/GroovyService/echo");
+    private QName serviceName = new QName("GroovyService");
+    private QName operationName = new QName("echo");
+
+
+    public GroovyServiceTest() {
+        super(EchoRawXMLTest.class.getName());
+    }
+
+    public GroovyServiceTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        String repository = "target/groovyRepo";
+        UtilServer.start(repository);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.stop();
+    }
+
+
+    public void testServiceExists() throws Exception {
+        AxisService desc = UtilServer.getConfigurationContext().
+                getAxisConfiguration().getService(serviceName.getLocalPart());
+        assertNotNull(desc);
+    }
+
+
+    public void testEchoXMLSync() throws Exception {
+        OMElement payload = getpayLoad();
+
+//        Call call =
+//                new Call("target/test-resources/integrationRepo");
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setAction(operationName.getLocalPart());
+
+//        call.setClientOptions(options);
+
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        OMElement result = sender.sendReceive(payload);
+
+        assertNotNull(result);
+        OMElement person = (OMElement) result.getFirstOMChild();
+        assertEquals(person.getLocalName(), "person");
+
+        StringWriter writer = new StringWriter();
+        result.build();
+        result.serialize(writer);
+        writer.flush();
+    }
+
+
+    private OMElement getpayLoad() throws XMLStreamException {
+        String str = "<ADDRESS><DET><NAME>Ponnampalam Thayaparan</NAME> <OCC>Student</OCC>" +
+                "<ADD>3-2/1,Hudson Road,Colombo-03</ADD><GENDER>Male</GENDER>" +
+                "</DET><DET><NAME>Eranka Samaraweera</NAME><OCC>Student</OCC><ADD>Martara</ADD>" +
+                "<GENDER>Male</GENDER></DET><DET><NAME>Sriskantharaja Ahilan</NAME>" +
+                "<OCC>Student</OCC><ADD>Trincomalee</ADD><GENDER>Male</GENDER>" +
+                "</DET></ADDRESS>";
+        XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new
+                ByteArrayInputStream(str.getBytes()));
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        StAXOMBuilder staxOMBuilder = new
+                StAXOMBuilder(fac, xmlReader);
+        return staxOMBuilder.getDocumentElement();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/integration/TestingUtils.java b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/TestingUtils.java
new file mode 100644
index 0000000..31732ac
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/TestingUtils.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004,2005 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.axis2.integration;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+
+public class TestingUtils {
+    public static OMElement createDummyOMElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://org.apache.axis2/xsd", "ns1");
+        OMElement method = fac.createOMElement("echoOM", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+        return method;
+    }
+
+    public static OMElement createDummyOMElement(String nameSpace) {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(nameSpace, "ns1");
+        OMElement method = fac.createOMElement("echoOM", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+        return method;
+    }
+
+
+    public static void campareWithCreatedOMElement(OMElement element) {
+        OMElement firstChild = element.getFirstElement();
+        TestCase.assertNotNull(firstChild);
+        String textValue = firstChild.getText();
+        TestCase.assertEquals(textValue, "Isaac Asimov, The Foundation Trilogy");
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilServer.java b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilServer.java
new file mode 100644
index 0000000..2565890
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilServer.java
@@ -0,0 +1,248 @@
+/*
+ * Copyright 2004,2005 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.axis2.integration;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.deployment.DeploymentEngine;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.io.FilenameFilter;
+
+public class UtilServer {
+    private static int count = 0;
+
+    private static SimpleHTTPServer receiver;
+
+    public static final int TESTING_PORT = 5555;
+
+    public static final String FAILURE_MESSAGE = "Intentional Failure";
+
+
+    public static synchronized void deployService(AxisService service)
+            throws AxisFault {
+        receiver.getConfigurationContext().getAxisConfiguration().addService(
+                service);
+    }
+
+    public static synchronized void unDeployService(QName service)
+            throws AxisFault {
+        receiver.getConfigurationContext().getAxisConfiguration()
+                .removeService(service.getLocalPart());
+    }
+
+    public static synchronized void unDeployClientService() throws AxisFault {
+        if (receiver.getConfigurationContext().getAxisConfiguration() != null) {
+            receiver.getConfigurationContext().getAxisConfiguration()
+                    .removeService("AnonymousService");
+        }
+    }
+
+    public static synchronized void start() throws Exception {
+        start(org.apache.axis2.Constants.TESTING_REPOSITORY);
+    }
+
+    public static synchronized void start(String repository) throws Exception {
+        if (count == 0) {
+            ConfigurationContext er = getNewConfigurationContext(repository);
+
+            receiver = new SimpleHTTPServer(er, TESTING_PORT);
+
+            try {
+                receiver.start();
+                ListenerManager listenerManager = er.getListenerManager();
+                TransportInDescription trsIn = new TransportInDescription(
+                        new QName(Constants.TRANSPORT_HTTP));
+                trsIn.setReceiver(receiver);
+                if (listenerManager == null) {
+                    listenerManager = new ListenerManager();
+                    listenerManager.init(er);
+                }
+                listenerManager.addListener(trsIn, true);
+                System.out.print("Server started on port "
+                        + TESTING_PORT + ".....");
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+        try {
+            Thread.sleep(2000);
+        } catch (InterruptedException e1) {
+            throw new AxisFault("Thread interuptted", e1);
+        }
+
+
+        count++;
+    }
+
+    public static synchronized void start(String repository, String axis2xml) throws Exception {
+        if (count == 0) {
+            ConfigurationContext er = getNewConfigurationContext(repository, axis2xml);
+
+            receiver = new SimpleHTTPServer(er, TESTING_PORT);
+
+            try {
+                receiver.start();
+                System.out.print("Server started on port "
+                        + TESTING_PORT + ".....");
+            } catch (Exception e) {
+                throw new AxisFault(e);
+            }
+
+            try {
+                Thread.sleep(2000);
+            } catch (InterruptedException e1) {
+                throw new AxisFault("Thread interuptted", e1);
+            }
+
+        }
+        count++;
+    }
+
+    public static ConfigurationContext getNewConfigurationContext(
+            String repository) throws Exception {
+        File file = new File(repository);
+        if (!file.exists()) {
+            throw new Exception("repository directory "
+                    + file.getAbsolutePath() + " does not exists");
+        }
+        return ConfigurationContextFactory.createConfigurationContextFromFileSystem(file.getAbsolutePath(),
+                file.getAbsolutePath() + "/conf/axis2.xml");
+    }
+
+    public static ConfigurationContext getNewConfigurationContext(
+            String repository, String axis2xml) throws Exception {
+        File file = new File(repository);
+        if (!file.exists()) {
+            throw new Exception("repository directory "
+                    + file.getAbsolutePath() + " does not exists");
+        }
+        return ConfigurationContextFactory.createConfigurationContextFromFileSystem(file.getAbsolutePath(),
+                axis2xml);
+    }
+
+    public static synchronized void stop() throws AxisFault {
+        if (count == 1) {
+            receiver.stop();
+            while (receiver.isRunning()) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e1) {
+                    //nothing to do here
+                }
+            }
+            count = 0;
+// tp.doStop();
+            System.out.print("Server stopped .....");
+        } else {
+            count--;
+        }
+        ListenerManager listenerManager =
+                receiver.getConfigurationContext().getListenerManager();
+        if (listenerManager != null) {
+            listenerManager.stop();
+        }
+    }
+
+    public static ConfigurationContext getConfigurationContext() {
+        return receiver.getConfigurationContext();
+    }
+
+    public static ServiceContext createAdressedEnabledClientSide(
+            AxisService service) throws AxisFault {
+        File file = getAddressingMARFile();
+        TestCase.assertTrue(file.exists());
+        ConfigurationContext configContext = ConfigurationContextFactory
+                .createConfigurationContextFromFileSystem(
+                        "target/test-resources/integrationRepo", null);
+        AxisModule axisModule = DeploymentEngine.buildModule(file,
+                configContext.getAxisConfiguration());
+        configContext.getAxisConfiguration().addModule(axisModule);
+
+        configContext.getAxisConfiguration().addService(service);
+
+        return new ServiceGroupContext(configContext, (AxisServiceGroup) service.getParent())
+                .getServiceContext(service);
+    }
+
+    static class AddressingFilter implements FilenameFilter {
+        public boolean accept(File dir, String name) {
+            return name.startsWith("addressing") && name.endsWith(".mar");
+        }
+    }
+
+    private static File getAddressingMARFile() {
+        File dir = new File(org.apache.axis2.Constants.TESTING_REPOSITORY + "/modules");
+        File[] files = dir.listFiles(new AddressingFilter());
+        TestCase.assertTrue(files.length == 1);
+        File file = files[0];
+        TestCase.assertTrue(file.exists());
+        return file;
+    }
+
+    public static ConfigurationContext createClientConfigurationContext() throws AxisFault {
+        File file = getAddressingMARFile();
+        TestCase.assertTrue(file.exists());
+
+        ConfigurationContext configContext = ConfigurationContextFactory .createConfigurationContextFromFileSystem(
+                "target/test-resources/integrationRepo",
+                "target/test-resources/integrationRepo/conf/axis2.xml");
+        AxisModule axisModule = DeploymentEngine.buildModule(file,
+                configContext.getAxisConfiguration());
+        configContext.getAxisConfiguration().addModule(axisModule);
+        return configContext;
+    }
+
+    public static ConfigurationContext createClientConfigurationContext(String repo) throws AxisFault {
+        return ConfigurationContextFactory .createConfigurationContextFromFileSystem(
+                repo,
+                repo + "/conf/axis2.xml");
+    }
+
+    public static ServiceContext createAdressedEnabledClientSide(
+            AxisService service, String clientHome) throws AxisFault {
+        File file = getAddressingMARFile();
+        TestCase.assertTrue(file.exists());
+
+        ConfigurationContext configContext = ConfigurationContextFactory
+                .createConfigurationContextFromFileSystem(clientHome, null);
+        AxisModule axisModule = DeploymentEngine.buildModule(file,
+                configContext.getAxisConfiguration());
+
+        configContext.getAxisConfiguration().addModule(axisModule);
+// sysContext.getAxisConfiguration().engageModule(moduleDesc.getName());
+
+        configContext.getAxisConfiguration().addService(service);
+
+        return new ServiceGroupContext(configContext, (AxisServiceGroup) service.getParent())
+                .getServiceContext(service);
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilServerBasedTestCase.java b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilServerBasedTestCase.java
new file mode 100644
index 0000000..f89f10d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilServerBasedTestCase.java
@@ -0,0 +1,68 @@
+/*

+* Copyright 2004-2006 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.axis2.integration;

+

+import junit.extensions.TestSetup;

+import junit.framework.Test;

+import junit.framework.TestCase;

+

+public class UtilServerBasedTestCase extends TestCase {

+

+    public UtilServerBasedTestCase() {

+        super(UtilServerBasedTestCase.class.getName());

+    }

+

+    public UtilServerBasedTestCase(java.lang.String string) {

+        super(string);

+    }

+

+    protected static Test getTestSetup(Test test) {

+        return new TestSetup(test) {

+            public void setUp() throws Exception {

+                UtilServer.start();

+            }

+

+            public void tearDown() throws Exception {

+                UtilServer.stop();

+            }

+        };

+    }

+

+    protected static Test getTestSetup2(Test test, final String param) {

+        return new TestSetup(test) {

+            public void setUp() throws Exception {

+                UtilServer.start(param);

+            }

+

+            public void tearDown() throws Exception {

+                UtilServer.stop();

+            }

+        };

+    }

+

+    protected static Test getTestSetup3(Test test, final String param1, final String param2) {

+        return new TestSetup(test) {

+            public void setUp() throws Exception {

+                UtilServer.start(param1, param2);

+            }

+

+            public void tearDown() throws Exception {

+                UtilServer.stop();

+            }

+        };

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilsJMSServer.java b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilsJMSServer.java
new file mode 100644
index 0000000..458a11f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilsJMSServer.java
@@ -0,0 +1,94 @@
+/*

+ * Copyright 2004,2005 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.axis2.integration;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.TransportInDescription;

+import org.apache.axis2.engine.ListenerManager;

+import org.apache.axis2.transport.jms.JMSListener;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+import java.io.File;

+

+public class UtilsJMSServer {

+    private static JMSListener receiver;

+

+    public static final int TESTING_PORT = 5555;

+

+    public static final String FAILURE_MESSAGE = "Intentional Failure";

+

+    public static final String REPOSITORY_JMS = "target/test-resources/jms-enabled-server-repository";

+

+	private static final Log log = LogFactory.getLog(UtilsJMSServer.class);

+

+    public static synchronized void deployService(AxisService service)

+            throws AxisFault {

+

+        receiver.getConfigurationContext().getAxisConfiguration().addService(service);

+

+    }

+

+    public static synchronized void unDeployService(QName service)

+            throws AxisFault {

+        receiver.getConfigurationContext().getAxisConfiguration().removeService(

+                service.getLocalPart());

+    }

+

+    public static synchronized void start() throws Exception {

+            // start JMS Listener

+            File file = new File(REPOSITORY_JMS);

+            System.out.println(file.getAbsoluteFile());

+            if (!file.exists()) {

+                throw new Exception("Repository directory does not exist");

+            }

+

+            ConfigurationContext configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(file

+                    .getAbsolutePath(),REPOSITORY_JMS + "/conf/axis2.xml");

+            try {

+                Thread.sleep(2000);

+            } catch (InterruptedException e1) {

+                throw new AxisFault("Thread interuptted", e1);

+            }

+            receiver = new JMSListener();

+            ListenerManager listenerManager = configurationContext.getListenerManager();

+            TransportInDescription trsIn = configurationContext.getAxisConfiguration().getTransportIn(new QName(Constants.TRANSPORT_JMS));

+            trsIn.setReceiver(receiver);

+            if (listenerManager == null) {

+                listenerManager = new ListenerManager();

+                listenerManager.init(configurationContext);

+            }

+            listenerManager.addListener(trsIn, true);

+            receiver.init(configurationContext, trsIn);

+            receiver.start();

+    }

+

+    public static synchronized void stop() {

+        try {

+                receiver.stop();

+                System.out.print("Server stopped .....");

+        } catch (Exception e) {

+            log.error(e.getMessage(), e);

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java
new file mode 100644
index 0000000..3f92a42
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2004,2005 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.axis2.integration;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.tcp.TCPServer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+
+public class UtilsTCPServer {
+    private static int count = 0;
+
+    private static TCPServer receiver;
+
+    public static final int TESTING_PORT = 5555;
+
+    public static final String FAILURE_MESSAGE = "Intentional Failure";
+
+	private static final Log log = LogFactory.getLog(UtilsTCPServer.class);
+
+    public static synchronized void deployService(AxisService service)
+            throws AxisFault {
+
+        receiver.getConfigurationContext().getAxisConfiguration().addService(service);
+        ServiceGroupContext serviceGroupContext = new ServiceGroupContext(
+                receiver.getConfigurationContext(), (AxisServiceGroup) service.getParent());
+    }
+
+    public static synchronized void unDeployService(QName service)
+            throws AxisFault {
+        receiver.getConfigurationContext().getAxisConfiguration().removeService(
+                service.getLocalPart());
+    }
+
+    public static synchronized void start() throws Exception {
+        if (count == 0) {
+
+            // start tcp server
+
+            File file = new File(org.apache.axis2.Constants.TESTING_REPOSITORY);
+            System.out.println(file.getAbsoluteFile());
+            if (!file.exists()) {
+                throw new Exception("Repository directory does not exist");
+            }
+
+            ConfigurationContext er = ConfigurationContextFactory.createConfigurationContextFromFileSystem(file
+                    .getAbsolutePath(), file
+                    .getAbsolutePath() + "/conf/axis2.xml");
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e1) {
+                throw new AxisFault("Thread interuptted", e1);
+            }
+            receiver = new TCPServer(UtilServer.TESTING_PORT, er);
+            receiver.start();
+
+        }
+        count++;
+    }
+
+    public static synchronized void stop() throws AxisFault {
+        try {
+            if (count == 1) {
+                receiver.stop();
+                count = 0;
+                System.out.print("Server stopped .....");
+            } else {
+                count--;
+            }
+        } catch (AxisFault e) {
+            log.error(e.getMessage(), e);
+        }
+        ListenerManager listenerManager =
+                receiver.getConfigurationContext().getListenerManager();
+        if (listenerManager != null) {
+            listenerManager.stop();
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
new file mode 100644
index 0000000..bad4cf8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
@@ -0,0 +1,253 @@
+/*
+ * Copyright 2004,2005 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.axis2.jms;
+
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.jms.JMSConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilsJMSServer;
+import org.apache.axis2.util.Utils;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.activemq.broker.BrokerService;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
+public class JMSEchoRawXMLTest extends TestCase {
+    private EndpointReference targetEPR =
+            new EndpointReference("jms:/EchoXMLService?"+JMSConstants.CONFAC_JNDI_NAME_PARAM+"=ConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616");
+    private QName serviceName = new QName("EchoXMLService");
+    private QName operationName = new QName("echoOMElement");
+
+
+    String destination = "EchoXMLService";
+    BrokerService broker = new BrokerService();
+
+    private AxisService clientService;
+    private ConfigurationContext configContext;
+
+    private boolean finish = false;
+	private static final Log log = LogFactory.getLog(JMSEchoRawXMLTest.class);
+
+    public JMSEchoRawXMLTest() {
+        super(JMSEchoRawXMLTest.class.getName());
+    }
+
+    public JMSEchoRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        // Start ActiveMQ embedded broker
+        broker.setUseJmx(false);
+        broker.addConnector("tcp://localhost:61616");
+        broker.start();
+
+        UtilsJMSServer.start();
+
+        //create and deploy the service
+        AxisService service = Utils.createSimpleService(serviceName,
+                Echo.class.getName(),
+                operationName);
+        service.getExposedTransports().add(Constants.TRANSPORT_JMS);
+        Parameter param = new Parameter();
+        param.setName(JMSConstants.DEST_PARAM);
+        param.setValue(destination);
+        service.getParameters().add(param);
+        UtilsJMSServer.deployService(service);
+        clientService = Utils.createSimpleServiceforClient(serviceName,
+                Echo.class.getName(),
+                operationName);
+        configContext = UtilServer.createClientConfigurationContext();
+    }
+
+    protected void tearDown() throws Exception {
+        UtilsJMSServer.stop();
+        broker.stop();
+    }
+
+    private OMElement createPayload() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/axis2/services/EchoXMLService", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public void testEchoXMLASync() throws Exception {
+        OMElement payload = createPayload();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_JMS);
+        options.setAction(serviceName.getLocalPart());
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                try {
+                    result.getResponseEnvelope().serialize(StAXUtils
+                            .createXMLStreamWriter(System.out));
+                } catch (XMLStreamException e) {
+                    onError(e);
+                } finally {
+                    finish = true;
+                }
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ServiceClient sender = new ServiceClient(configContext, clientService);
+        sender.setOptions(options);
+        sender.sendReceiveNonBlocking(operationName, payload, callback);
+
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(10000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response take too long to complete");
+            }
+        }
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        OMElement payload = createPayload();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_JMS);
+        options.setAction(serviceName.getLocalPart());
+        ServiceClient sender = new ServiceClient(configContext, clientService);
+        sender.setOptions(options);
+
+        OMElement result = sender.sendReceive(operationName, payload);
+
+
+        result.serialize(StAXUtils.createXMLStreamWriter(
+                System.out));
+
+    }
+
+    public void testEchoXMLCompleteSync() throws Exception {
+        ConfigurationContext configContext = UtilServer.createClientConfigurationContext("target/test-resources/jms-enabled-client-repository");
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/axis2/services/EchoXMLService", "my");
+        OMElement payloadElement = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.setText("Isaac Asimov, The Foundation Trilogy");
+        payloadElement.addChild(value);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+        options.setTransportInProtocol(Constants.TRANSPORT_JMS);
+        options.setUseSeparateListener(true);
+        options.setTimeOutInMilliSeconds(60*60*1000);
+
+        ServiceClient sender = new ServiceClient(configContext, clientService);
+        sender.setOptions(options);
+        OMElement result = sender.sendReceive(operationName, payloadElement);
+
+        result.serialize(StAXUtils.createXMLStreamWriter(
+                System.out));
+
+    }
+    
+    public void testEchoXMLSyncMC() throws Exception {
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(Constants.TESTING_REPOSITORY, Constants.TESTING_REPOSITORY + "/conf/axis2.xml");
+
+        AxisOperation opdesc = new OutInAxisOperation(new QName("echoOMElement"));
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(operationName.getLocalPart());
+        options.setTransportInProtocol(Constants.TRANSPORT_JMS);
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/axis2/services/EchoXMLService", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.setText("Isaac Asimov, The Foundation Trilogy");
+        method.addChild(value);
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope envelope = factory.getDefaultEnvelope();
+        envelope.getBody().addChild(method);
+
+        MessageContext requestContext = new MessageContext();
+        requestContext.setConfigurationContext(configContext);
+        requestContext.setAxisService(clientService);
+        requestContext.setAxisOperation(opdesc);
+        requestContext.setEnvelope(envelope);
+
+        ServiceClient sender = new ServiceClient(configContext, clientService);
+        sender.setOptions(options);
+        OperationClient opClient = sender.createClient(new QName("echoOMElement"));
+        opClient.addMessageContext(requestContext);
+        opClient.setOptions(options);
+        opClient.execute(true);
+
+        MessageContext response = opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        SOAPEnvelope env = response.getEnvelope();
+        assertNotNull(env);
+        env.getBody().serialize(StAXUtils.createXMLStreamWriter(
+                System.out));
+        sender.cleanup();
+    }
+}
+
+
+
+
+
+
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/jms/jms-enabled-client-axis2.xml b/rampart_1_1/modules/integration/test/org/apache/axis2/jms/jms-enabled-client-axis2.xml
new file mode 100644
index 0000000..c0ef145
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/jms/jms-enabled-client-axis2.xml
@@ -0,0 +1,190 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">false</parameter>

+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <!--    The way of adding listener to the system-->

+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->

+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->

+    <!--    </listener>-->

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->

+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->

+    <!--any operation -->

+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </messageReceivers>

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http"

+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncommet following paramter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <!--Uncomment if you want to have SMTP transport support-->

+    <!--<transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">-->

+    <!--<parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>-->

+    <!--<parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.port" locked="false">110</parameter>-->

+    <!--<parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>-->

+    <!--</transportReceiver>-->

+

+    <transportReceiver name="tcp"

+                       class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncommet following paramter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">

+        <parameter name="default" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>

+        </parameter>

+    </transportReceiver>

+

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp"

+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local"

+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="jms"

+                     class="org.apache.axis2.transport.jms.JMSSender"/>

+    <transportSender name="http"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+   <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">

+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>

+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>

+   </transportSender>

+   -->

+

+    <!-- ================================================= -->

+    <!-- Global Modules  -->

+    <!-- ================================================= -->

+    <!-- Comment this to disable Addressing -->

+    <module ref="addressing"/>

+

+    <!--Configuring module , providing parameters for modules whether they refer or not-->

+    <!--<moduleConfig name="addressing">-->

+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->

+    <!--</moduleConfig>-->

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+    <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+         <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/jms/jms-enabled-server-axis2.xml b/rampart_1_1/modules/integration/test/org/apache/axis2/jms/jms-enabled-server-axis2.xml
new file mode 100644
index 0000000..82cd52b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/jms/jms-enabled-server-axis2.xml
@@ -0,0 +1,189 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">false</parameter>

+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <!--    The way of adding listener to the system-->

+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->

+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->

+    <!--    </listener>-->

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->

+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->

+    <!--any operation -->

+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </messageReceivers>

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http"

+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncommet following paramter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <!--Uncomment if you want to have SMTP transport support-->

+    <!--<transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">-->

+    <!--<parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>-->

+    <!--<parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.port" locked="false">110</parameter>-->

+    <!--<parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>-->

+    <!--</transportReceiver>-->

+

+    <transportReceiver name="tcp"

+                       class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncommet following paramter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">

+        <parameter name="default" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>

+        </parameter>

+    </transportReceiver>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp"

+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local"

+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="jms"

+                     class="org.apache.axis2.transport.jms.JMSSender"/>

+    <transportSender name="http"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+   <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">

+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>

+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>

+   </transportSender>

+   -->

+

+    <!-- ================================================= -->

+    <!-- Global Modules  -->

+    <!-- ================================================= -->

+    <!-- Comment this to disable Addressing -->

+    <module ref="addressing"/>

+

+    <!--Configuring module , providing parameters for modules whether they refer or not-->

+    <!--<moduleConfig name="addressing">-->

+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->

+    <!--</moduleConfig>-->

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+    <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+         <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailCharSetEncodingTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailCharSetEncodingTest.java
new file mode 100644
index 0000000..4dbb4e1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailCharSetEncodingTest.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright 2004,2005 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.axis2.mail;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.transport.mail.SimpleMailListener;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+/**
+ * These tests willcheck wheather the mail transport works ok with charactor set
+ * encoding changes.
+ */
+public class MailCharSetEncodingTest extends TestCase {
+
+    private EndpointReference targetEPR = new EndpointReference("mail:foo@127.0.0.1"
+            + "/axis2/services/EchoXMLService/echoOMElement");
+
+	private static final Log log = LogFactory.getLog(MailCharSetEncodingTest.class);
+
+    private String stringServiceName = "EchoXMLService";
+
+    private QName serviceName = new QName(stringServiceName);
+
+    private QName operationName = new QName("echoOMElement");
+
+    OMElement resultElem = null;
+
+    private AxisConfiguration engineRegistry;
+
+    private SOAPEnvelope envelope;
+
+    private boolean finish = false;
+
+    ServiceContext clientServiceContext;
+
+    ConfigurationContext clientConfigContext;
+
+    ConfigurationContext serverConfigContext;
+
+    public MailCharSetEncodingTest() {
+        super(MailCharSetEncodingTest.class.getName());
+    }
+
+    protected void setUp() throws Exception {
+    	    serverConfigContext = UtilsMailServer.start();
+        if (serverConfigContext.getAxisConfiguration().getService(stringServiceName) == null){
+		    AxisService service = Utils.createSimpleService(serviceName,
+		            Echo.class.getName(), operationName);
+		    serverConfigContext.getAxisConfiguration().addService(service);
+        }
+
+        SimpleMailListener ml = new SimpleMailListener();
+
+        ml.init(serverConfigContext, serverConfigContext.getAxisConfiguration()
+                .getTransportIn(new QName(Constants.TRANSPORT_MAIL)));
+        ml.start();
+
+    }
+
+    protected void tearDown() throws Exception {
+        UtilsMailServer.stop();
+    }
+
+    public void runTest(String value) throws Exception {
+        finish = false;
+        resultElem = null;
+        envelope = null;
+        ConfigurationContext configContext = UtilsMailServer
+                .createClientConfigurationContext();
+        AxisService service = null;
+        AxisOperation axisOperation = null;
+        if (configContext.getAxisConfiguration().getService(stringServiceName) != null){
+            configContext.getAxisConfiguration().removeService(stringServiceName);
+        }
+        service = new AxisService(serviceName.getLocalPart());
+        axisOperation = new OutInAxisOperation();
+        axisOperation.setName(operationName);
+        axisOperation.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+                envelope = messageCtx.getEnvelope();
+            }
+        });
+        service.addOperation(axisOperation);
+        configContext.getAxisConfiguration().addService(service);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(operationName.getLocalPart());
+        options.setTransportInProtocol(Constants.TRANSPORT_MAIL);
+        options.setUseSeparateListener(true);
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                resultElem = result.getResponseEnvelope();
+                finish = true;
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ServiceClient sender = new ServiceClient(configContext, service);
+        sender.setOptions(options);
+        //options.setTo(targetEPR);
+        sender.sendReceiveNonBlocking(operationName, createEnvelope(value), callback);
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response is taking too long to complete.");
+            }
+        }
+        assertNotNull("Result is null", resultElem);
+        String result = ((OMElement) resultElem.getFirstOMChild()
+                .getNextOMSibling()).getFirstElement().getFirstElement()
+                .getText();
+
+        assertNotNull("Result value is null", result);
+        assertEquals("Expected result not received.", value, result);
+
+    }
+
+    public void testSimpleString() throws Exception {
+        runTest("a simple string");
+    }
+
+    public void testStringWithApostrophes() throws Exception {
+        runTest("this isn't a simple string");
+    }
+
+    public void testStringWithEntities() throws Exception {
+        runTest("&amp;&lt;&gt;&apos;&quot;");
+    }
+
+    public void testStringWithRawEntities() throws Exception {
+        runTest("&<>'\"");
+    }
+
+    public void testStringWithLeadingAndTrailingSpaces() throws Exception {
+        runTest("          centered          ");
+    }
+
+    private OMElement createEnvelope(String text) {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(fac.createOMText(value, text));
+        method.addChild(value);
+
+        return method;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailOneWayRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailOneWayRawXMLTest.java
new file mode 100644
index 0000000..e1b9a3f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailOneWayRawXMLTest.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2004,2005 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.axis2.mail;
+
+//todo
+
+import java.util.Iterator;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.description.OutOnlyAxisOperation;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.transport.mail.SimpleMailListener;
+
+import javax.xml.namespace.QName;
+
+public class MailOneWayRawXMLTest extends TestCase {
+    private EndpointReference targetEPR =
+            new EndpointReference("mail:foo@127.0.0.1" +
+                    "/axis2/services/EchoXMLService/echoOMElement");
+    private QName serviceName = new QName("EchoXMLService");
+    private QName operationName = new QName("echoOMElement");
+
+
+    private ConfigurationContext configContext;
+    private ConfigurationContext clientConfigContext;
+
+    private SOAPEnvelope envelope;
+
+
+    public MailOneWayRawXMLTest() {
+        super(MailOneWayRawXMLTest.class.getName());
+    }
+
+    public MailOneWayRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        //start the mail server      
+        configContext = UtilsMailServer.start();
+        clientConfigContext = UtilsMailServer.createClientConfigurationContext();
+
+        SimpleMailListener ml = new SimpleMailListener();
+        ml.init(configContext,
+                configContext.getAxisConfiguration().getTransportIn(
+                        new QName(Constants.TRANSPORT_MAIL)));
+        ml.start();
+
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        AxisOperation axisOperation = new OutInAxisOperation(
+        );
+        axisOperation.setName(operationName);
+        axisOperation.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+                envelope = messageCtx.getEnvelope();
+            }
+        });
+        service.addOperation(axisOperation);
+        configContext.getAxisConfiguration().addService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilsMailServer.stop();
+    }
+
+    private OMElement createEnvelope() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public void testOneWay() throws Exception {
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        AxisOperation axisOperation = new OutOnlyAxisOperation(
+        );
+        axisOperation.setName(operationName);
+        axisOperation.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+                envelope = messageCtx.getEnvelope();
+            }
+        });
+        service.addOperation(axisOperation);
+        //configContext.getAxisConfiguration().addService(service);
+
+        OMElement payload = createEnvelope();
+
+        ServiceClient servicClient = new ServiceClient(clientConfigContext, service);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+
+        servicClient.setOptions(options);
+
+        servicClient.fireAndForget(operationName, payload);
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailRequestResponseRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailRequestResponseRawXMLTest.java
new file mode 100644
index 0000000..520c4cd
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailRequestResponseRawXMLTest.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright 2004,2005 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.axis2.mail;
+
+// todo
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.transport.mail.SimpleMailListener;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
+public class MailRequestResponseRawXMLTest extends TestCase {
+    private EndpointReference targetEPR = new EndpointReference("mail:foo@127.0.0.1"
+            + "/axis2/services/EchoXMLService/echoOMElement");
+
+	private static final Log log = LogFactory.getLog(MailRequestResponseRawXMLTest.class);
+
+    private QName serviceName = new QName("EchoXMLService");
+
+    private QName operationName = new QName("echoOMElement");
+
+    private boolean finish = false;
+
+    private SOAPEnvelope envelope;
+
+    private ConfigurationContext serverConfigContext;
+    
+    public MailRequestResponseRawXMLTest() {
+        super(MailRequestResponseRawXMLTest.class.getName());
+    }
+
+    public MailRequestResponseRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        serverConfigContext = UtilsMailServer.start();
+
+        SimpleMailListener ml = new SimpleMailListener();
+        ml.init(serverConfigContext, serverConfigContext.getAxisConfiguration()
+                .getTransportIn(new QName(Constants.TRANSPORT_MAIL)));
+        ml.start();
+        // configContext.getAxisConfiguration().engageModule(
+        // new QName(Constants.MODULE_ADDRESSING));
+        AxisService service = Utils.createSimpleService(serviceName, Echo.class
+                .getName(), operationName);
+        serverConfigContext.getAxisConfiguration().addService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilsMailServer.stop();
+    }
+
+    private OMElement createEnvelope() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(fac.createOMText(value,
+                "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public void testEchoXMLCompleteASync() throws Exception {
+
+        ConfigurationContext configContext = UtilsMailServer
+                .createClientConfigurationContext();
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        AxisOperation axisOperation = new OutInAxisOperation();
+        axisOperation.setName(operationName);
+        axisOperation.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+                envelope = messageCtx.getEnvelope();
+            }
+        });
+        service.addOperation(axisOperation);
+ //       configContext.getAxisConfiguration().addService(service);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(operationName.getLocalPart());
+        options.setTransportInProtocol(Constants.TRANSPORT_MAIL);
+        options.setUseSeparateListener(true);
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                try {
+                    result.getResponseEnvelope().serializeAndConsume(
+                            StAXUtils
+                                    .createXMLStreamWriter(System.out));
+                } catch (XMLStreamException e) {
+                    onError(e);
+                } finally {
+                    finish = true;
+                }
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ServiceClient sender = new ServiceClient(configContext, service);
+        sender.setOptions(options);
+        //options.setTo(targetEPR);
+        sender.sendReceiveNonBlocking(operationName, createEnvelope(), callback);
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response is taking too long to complete.");
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailetRequestResponseRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailetRequestResponseRawXMLTest.java
new file mode 100644
index 0000000..9e54c4b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/MailetRequestResponseRawXMLTest.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2004,2005 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.axis2.mail;
+
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+
+/**
+ * This will use the In out functionality to test the mailet functionality. This code was
+ * based on the code on the MailRequestResponseRawXMLTest.java.
+ */
+public class MailetRequestResponseRawXMLTest extends TestCase {
+    private EndpointReference targetEPR =
+            new EndpointReference("mail:axis2-server@127.0.0.1" +
+                    "/axis2/services/EchoXMLService/echoOMElement");
+	private static final Log log = LogFactory.getLog(MailetRequestResponseRawXMLTest.class);
+    private QName serviceName = new QName("EchoXMLService");
+    private QName operationName = new QName("echoOMElement");
+
+    private SOAPEnvelope envelope;
+
+    private boolean finish = false;
+
+    public MailetRequestResponseRawXMLTest() {
+        super(MailetRequestResponseRawXMLTest.class.getName());
+    }
+
+    public MailetRequestResponseRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        ConfigurationContext configContext = UtilsMailServer.start();
+
+//        configContext.getAxisConfiguration().engageModule(
+//                new QName(Constants.MODULE_ADDRESSING));
+        AxisService service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        configContext.getAxisConfiguration().addService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilsMailServer.stop();
+    }
+
+    private OMElement createEnvelope() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public void testEchoXMLCompleteASync() throws Exception {
+
+        ConfigurationContext configContext = UtilsMailServer.createClientConfigurationContext();
+
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        AxisOperation axisOperation = new OutInAxisOperation();
+        axisOperation.setName(operationName);
+        axisOperation.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+                envelope = messageCtx.getEnvelope();
+            }
+        });
+        service.addOperation(axisOperation);
+        //configContext.getAxisConfiguration().addService(service);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(operationName.getLocalPart());
+        options.setTransportInProtocol(Constants.TRANSPORT_MAIL);
+        options.setUseSeparateListener(true);
+        
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                try {
+                    result.getResponseEnvelope().serializeAndConsume(
+                            StAXUtils
+                                    .createXMLStreamWriter(System.out));
+                } catch (XMLStreamException e) {
+                    onError(e);
+                } finally {
+                    finish = true;
+                }
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+        ServiceClient sender = new ServiceClient(configContext, service);
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+        sender.sendReceiveNonBlocking(operationName, createEnvelope(), callback);
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Async response is taking too long[10s+]. Server is being shut down.");
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mail/UtilsMailServer.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/UtilsMailServer.java
new file mode 100644
index 0000000..06424c5
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/UtilsMailServer.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2004,2005 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.axis2.mail;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.transport.mail.server.MailServer;
+import org.apache.axis2.transport.mail.Constants;
+
+import java.io.File;
+
+public class UtilsMailServer {
+    private static final String MAIL_TRANSPORT_SERVER_ENABLED_REPO_PATH =
+            org.apache.axis2.Constants.TESTING_PATH + "mail-transport-server-enabledRepository";
+    private static final String MAIL_TRANSPORT_CLIENT_ENABLED_REPO_PATH =
+            org.apache.axis2.Constants.TESTING_PATH + "mail-transport-client-enabledRepository";
+
+    private static MailServer server;
+    private static ConfigurationContext SERVER_CONFIG_CONTEXT;
+    private static ConfigurationContext CLIENT_CONFIG_CONTEXT;
+    private static int runningServerCount = 0;
+
+    public synchronized static ConfigurationContext start() throws Exception {
+
+        //start the mail server
+        if (runningServerCount == 0) {
+            SERVER_CONFIG_CONTEXT = createServerConfigurationContext();
+            server =
+                    new MailServer(
+                            SERVER_CONFIG_CONTEXT,
+                            Constants.POP_SERVER_PORT,
+                            Constants.SMTP_SERVER_PORT);
+        }
+        runningServerCount++;
+        return SERVER_CONFIG_CONTEXT;
+    }
+    public static ConfigurationContext createServerConfigurationContext() throws Exception {
+        if(SERVER_CONFIG_CONTEXT == null){
+            File file = new File(MAIL_TRANSPORT_SERVER_ENABLED_REPO_PATH);
+            TestCase.assertTrue(
+                    "Mail repository directory " + file.getAbsolutePath() + " does not exsist",
+                    file.exists());
+            SERVER_CONFIG_CONTEXT =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(file.getAbsolutePath(), file.getAbsolutePath() + "/conf/axis2.xml");
+        }
+        return SERVER_CONFIG_CONTEXT;
+    }
+
+
+    public static ConfigurationContext createClientConfigurationContext() throws Exception {
+        if(CLIENT_CONFIG_CONTEXT == null){
+        File file = new File(MAIL_TRANSPORT_CLIENT_ENABLED_REPO_PATH);
+        TestCase.assertTrue(
+                "Mail repository directory " + file.getAbsolutePath() + " does not exsist",
+                file.exists());
+        CLIENT_CONFIG_CONTEXT =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(file.getAbsolutePath(), file.getAbsolutePath() + "/conf/axis2.xml");
+        }
+        return CLIENT_CONFIG_CONTEXT;
+    }
+
+    public static synchronized void stop() throws AxisFault{
+        runningServerCount--;
+        if(runningServerCount == 0){
+            server.stop();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-axis2.xml b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-axis2.xml
new file mode 100644
index 0000000..e30c911
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-axis2.xml
@@ -0,0 +1,115 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+        <parameter name="mail.pop3.host" locked="false">127.0.0.1</parameter>
+        <parameter name="mail.pop3.user" locked="false">axis2@127.0.0.1</parameter>
+        <parameter name="mail.pop3.port" locked="false">1134</parameter>
+        <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+        <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+    </transportReceiver>
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+
+
+    <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+        <parameter name="mail.smtp.host" locked="false">127.0.0.1</parameter>
+        <parameter name="mail.smtp.user" locked="false">axis2</parameter>
+        <parameter name="mail.smtp.port" locked="false">1049</parameter>
+        <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing -->
+    <module ref="addressing"/>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-client-axis2.xml b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-client-axis2.xml
new file mode 100644
index 0000000..666f15d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-client-axis2.xml
@@ -0,0 +1,180 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!-- If you have a frontend host which exposes this webservice using a different public URL  -->
+    <!-- use this parameter to override autodetected url -->
+    <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->
+
+
+    <!--    The way of adding listener to the system-->
+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->
+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->
+    <!--    </listener>-->
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncommet following paramter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+        <parameter name="mail.pop3.host" locked="false">127.0.0.1</parameter>
+        <parameter name="mail.pop3.user" locked="false">bar@127.0.0.1</parameter>
+        <parameter name="mail.pop3.port" locked="false">1134</parameter>
+        <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+        <parameter name="transport.mail.replyToAddress" locked="false">bar@127.0.0.1</parameter>
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncommet following paramter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+        <parameter name="mail.smtp.host" locked="false">127.0.0.1</parameter>
+        <parameter name="mail.smtp.user" locked="false">bar</parameter>
+        <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+        <parameter name="transport.mail.smtp.port" locked="false">1049</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Comment this to disable Addressing -->
+    <module ref="addressing"/>
+
+    <!--Configuring module , providing parameters for modules whether they refer or not-->
+    <!--<moduleConfig name="addressing">-->
+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
+    <!--</moduleConfig>-->
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-server-axis2.xml b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-server-axis2.xml
new file mode 100644
index 0000000..677fcac
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mail/mail-enabled-server-axis2.xml
@@ -0,0 +1,180 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!-- If you have a frontend host which exposes this webservice using a different public URL  -->
+    <!-- use this parameter to override autodetected url -->
+    <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->
+
+
+    <!--    The way of adding listener to the system-->
+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->
+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->
+    <!--    </listener>-->
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncommet following paramter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+        <parameter name="mail.pop3.host" locked="false">127.0.0.1</parameter>
+        <parameter name="mail.pop3.user" locked="false">foo@127.0.0.1</parameter>
+        <parameter name="mail.pop3.port" locked="false">1134</parameter>
+        <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+        <parameter name="transport.mail.replyToAddress" locked="false">foo@127.0.0.1</parameter>
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncommet following paramter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+        <parameter name="mail.smtp.host" locked="false">127.0.0.1</parameter>
+        <parameter name="mail.smtp.user" locked="false">foo</parameter>
+        <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+        <parameter name="transport.mail.smtp.port" locked="false">1049</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Comment this to disable Addressing -->
+    <module ref="addressing"/>
+
+    <!--Configuring module , providing parameters for modules whether they refer or not-->
+    <!--<moduleConfig name="addressing">-->
+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
+    <!--</moduleConfig>-->
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMCommonsChunkingTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMCommonsChunkingTest.java
new file mode 100755
index 0000000..bc7bf6b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMCommonsChunkingTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2004,2005 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.axis2.mtom;
+
+import java.net.URL;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+
+public class EchoRawMTOMCommonsChunkingTest extends UtilServerBasedTestCase implements TestConstants {
+
+    private OMElement data;
+    private String fileName = "test-resources/mtom/test.jpg";
+
+    public EchoRawMTOMCommonsChunkingTest() {
+        super(EchoRawMTOMCommonsChunkingTest.class.getName());
+    }
+
+    public EchoRawMTOMCommonsChunkingTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawMTOMCommonsChunkingTest.class),Constants.TESTING_PATH + "MTOM-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service = Utils.createSimpleService(serviceName, Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+    private OMElement createEnvelope() throws Exception {
+
+        DataHandler expectedDH;
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement rpcWrapEle = fac.createOMElement("echoOMElement", omNs);
+        data = fac.createOMElement("data", omNs);
+        FileDataSource dataSource = new FileDataSource(fileName);
+        expectedDH = new DataHandler(dataSource);
+        OMElement subData = fac.createOMElement("subData", omNs);
+        OMText textData = new OMTextImpl(expectedDH, fac);
+        subData.addChild(textData);
+        data.addChild(subData);
+        rpcWrapEle.addChild(data);
+        return rpcWrapEle;
+
+    }
+
+    public void testEchoXMLSync() throws Exception {
+
+        OMElement payload = createEnvelope();
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(
+                        Constants.TESTING_PATH + "commons-http-enabledRepository", null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+
+        sender.sendReceive(payload);
+        this.campareWithCreatedOMElement(data);
+
+    }
+
+    private URL getResourceAsStream(String path) {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        return cl.getResource(path);
+    }
+
+    private void campareWithCreatedOMElement(OMElement element) {
+        OMElement firstChild = element.getFirstElement();
+        TestCase.assertNotNull(firstChild);
+        String originalTextValue = data.getFirstElement().getText();
+        String returnedTextValue = firstChild.getText();
+        TestCase.assertEquals(returnedTextValue, originalTextValue);
+    }
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFaultReportTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFaultReportTest.java
new file mode 100644
index 0000000..ebdc198
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFaultReportTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2004,2005 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.axis2.mtom;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.HttpMethodRetryHandler;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.NoHttpResponseException;
+import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.params.HttpMethodParams;
+
+public class EchoRawMTOMFaultReportTest extends UtilServerBasedTestCase {
+
+    private QName serviceName = new QName("EchoService");
+
+    private QName operationName = new QName("mtomSample");
+
+    public EchoRawMTOMFaultReportTest() {
+        super(EchoRawMTOMFaultReportTest.class.getName());
+    }
+
+    public EchoRawMTOMFaultReportTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawMTOMFaultReportTest.class), Constants.TESTING_PATH + "MTOM-enabledRepository");
+    }
+
+
+    protected void setUp() throws Exception {
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        service.setClassLoader(Thread.currentThread().getContextClassLoader());
+        service.addParameter(new Parameter(Constants.SERVICE_CLASS,
+                EchoService.class.getName()));
+
+        AxisOperation axisOp = new OutInAxisOperation(operationName);
+        axisOp.setMessageReceiver(new RawXMLINOutMessageReceiver());
+        axisOp.setStyle(WSDLConstants.STYLE_DOC);
+        service.addOperation(axisOp);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+    public void testEchoFaultSync() throws Exception {
+        HttpClient client = new HttpClient();
+
+        PostMethod httppost = new PostMethod("http://127.0.0.1:"
+                + (UtilServer.TESTING_PORT)
+                + "/axis2/services/EchoService/mtomSample");
+
+        HttpMethodRetryHandler myretryhandler = new HttpMethodRetryHandler() {
+            public boolean retryMethod(final HttpMethod method,
+                                       final IOException exception,
+                                       int executionCount) {
+                if (executionCount >= 10) {
+                    return false;
+                }
+                if (exception instanceof NoHttpResponseException) {
+                    return true;
+                }
+                if (!method.isRequestSent()) {
+                    return true;
+                }
+                // otherwise do not retry
+                return false;
+            }
+        };
+        httppost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
+                myretryhandler);
+        httppost.setRequestEntity(new InputStreamRequestEntity(
+                new FileInputStream("test-resources/mtom/wmtom.bin")));
+
+        httppost.setRequestHeader("Content-Type",
+                "multipart/related; boundary=--MIMEBoundary258DE2D105298B756D; type=\"application/xop+xml\"; start=\"<0.15B50EF49317518B01@apache.org>\"; start-info=\"application/soap+xml\"");
+        try {
+            client.executeMethod(httppost);
+
+            if (httppost.getStatusCode() ==
+                    HttpStatus.SC_INTERNAL_SERVER_ERROR) {
+                assertEquals("HTTP/1.1 500 Internal server error",
+                        httppost.getStatusLine().toString());
+            }
+        } catch (NoHttpResponseException e) {
+        } finally {
+            httppost.releaseConnection();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFileCacheLoadTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFileCacheLoadTest.java
new file mode 100644
index 0000000..a16d38a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFileCacheLoadTest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2004,2005 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.axis2.mtom;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.util.Utils;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestSuite;
+import junit.framework.Test;
+
+public class EchoRawMTOMFileCacheLoadTest extends EchoRawMTOMLoadTest {
+
+    private QName serviceName = new QName("EchoXMLService");
+
+    private QName operationName = new QName("echoOMElement");
+
+    private AxisService service;
+
+    public EchoRawMTOMFileCacheLoadTest() {
+        super(EchoRawMTOMFileCacheLoadTest.class.getName());
+    }
+
+    public EchoRawMTOMFileCacheLoadTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawMTOMFileCacheLoadTest.class),Constants.TESTING_PATH + "MTOM-fileCache-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        service = Utils.createSimpleService(serviceName, Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+
+    public void testEchoXMLSync() throws Exception {
+        super.testEchoXMLSync();
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFileCacheTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFileCacheTest.java
new file mode 100644
index 0000000..212b42b
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMFileCacheTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2004,2005 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.axis2.mtom;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.util.Utils;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class EchoRawMTOMFileCacheTest extends EchoRawMTOMTest{
+
+    private AxisService service;
+
+
+    public EchoRawMTOMFileCacheTest() {
+        super(EchoRawMTOMFileCacheTest.class.getName());
+    }
+
+    public EchoRawMTOMFileCacheTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawMTOMFileCacheTest.class),Constants.TESTING_PATH + "MTOM-fileCache-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        service = Utils.createSimpleService(serviceName, Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+    public void testEchoXMLASync() throws Exception {
+        super.testEchoXMLASync();
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        super.testEchoXMLSync();
+    }
+    
+    public void testEchoXMLSyncSeperateListener() throws Exception {
+        super.testEchoXMLSyncSeperateListener();
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMLoadTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMLoadTest.java
new file mode 100644
index 0000000..873e74c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMLoadTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2004,2005 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.axis2.mtom;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.framework.Test;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.activation.DataHandler;
+
+public class EchoRawMTOMLoadTest extends UtilServerBasedTestCase implements TestConstants {
+
+	private static final Log log = LogFactory.getLog(EchoRawMTOMLoadTest.class);
+
+    private ServiceContext serviceContext;
+
+    private AxisService service;
+
+    private OMText textData;
+
+
+    byte[] expectedByteArray;
+
+    public EchoRawMTOMLoadTest() {
+        super(EchoRawMTOMLoadTest.class.getName());
+    }
+
+    public EchoRawMTOMLoadTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawMTOMLoadTest.class),Constants.TESTING_PATH + "MTOM-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        service = Utils.createSimpleService(serviceName, Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+
+    protected OMElement createEnvelope() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement rpcWrapEle = fac.createOMElement("echoOMElement", omNs);
+        OMElement data = fac.createOMElement("data", omNs);
+        expectedByteArray = new byte[]{13, 56, 65, 32, 12, 12, 7, -3, -2, -1,
+                98};
+        for (int i = 0; i < 4; i++) {
+            OMElement subData = fac.createOMElement("subData", omNs);
+            DataHandler dataHandler = new DataHandler("Thilina", "text/plain");
+            //new ByteArrayDataSource(expectedByteArray));
+            textData = new OMTextImpl(dataHandler, true, fac);
+            subData.addChild(textData);
+            data.addChild(subData);
+
+        }
+
+        rpcWrapEle.addChild(data);
+        return rpcWrapEle;
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        for (int i = 0; i < 10; i++) {
+            OMElement payload = createEnvelope();
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setProperty(Constants.Configuration.ENABLE_MTOM,
+                    Constants.VALUE_TRUE);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+            ServiceClient sender = new ServiceClient(configContext, null);
+            sender.setOptions(options);
+            OMElement result = sender.sendReceive(payload);
+
+            OMElement ele = (OMElement) result.getFirstOMChild();
+            OMElement ele1 = (OMElement) ele.getFirstOMChild();
+            OMText binaryNode = (OMText) ele1.getFirstOMChild();
+            compareWithActualOMText(binaryNode);
+            OMElement ele2 = (OMElement) ele1.getNextOMSibling();
+            binaryNode = (OMText) ele2.getFirstOMChild();
+            compareWithActualOMText(binaryNode);
+            log.info("" + i);
+            UtilServer.unDeployClientService();
+        }
+    }
+
+    protected void compareWithActualOMText(OMText binaryNode) {
+        assertEquals(textData.getText(), binaryNode.getText());
+    }
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMStreamingTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMStreamingTest.java
new file mode 100644
index 0000000..babfd11
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMStreamingTest.java
@@ -0,0 +1,138 @@
+/*
+* Copyright 2004,2005 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.axis2.mtom;

+

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.engine.util.TestConstants;

+import org.apache.axis2.engine.Echo;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.util.Utils;

+import org.apache.axis2.description.AxisService;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.OMText;

+import org.apache.axiom.om.impl.llom.OMTextImpl;

+import org.apache.axiom.attachments.ByteArrayDataSource;

+import org.apache.axiom.soap.SOAP12Constants;

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import junit.framework.TestCase;

+

+import javax.activation.DataHandler;

+import javax.xml.namespace.QName;

+import java.awt.*;

+import java.io.InputStream;

+

+public class EchoRawMTOMStreamingTest extends UtilServerBasedTestCase implements TestConstants {

+

+    public static final EndpointReference targetEPR = new EndpointReference(

+            "http://127.0.0.1:" + (UtilServer.TESTING_PORT)

+//            "http://127.0.0.1:" + 5556

+                    + "/axis2/services/EchoService2/mtomSample");

+

+    private QName serviceName = new QName("EchoService2");

+

+    private QName operationName = new QName("mtomSample");

+

+    private OMElement data;

+

+    public EchoRawMTOMStreamingTest() {

+        super(EchoRawMTOMStreamingTest.class.getName());

+    }

+

+    public EchoRawMTOMStreamingTest(String testName) {

+        super(testName);

+    }

+

+    public static Test suite() {

+        return getTestSetup2(new TestSuite(EchoRawMTOMStreamingTest.class),

+                Constants.TESTING_PATH + "MTOM-enabledRepository");

+    }

+

+    protected void setUp() throws Exception {

+        AxisService service = Utils.createSimpleService(serviceName, EchoService2.class.getName(),

+                operationName);

+        UtilServer.deployService(service);

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+    }

+

+    private OMElement createEnvelope() throws Exception {

+

+        DataHandler expectedDH;

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");

+        OMElement rpcWrapEle = fac.createOMElement("mtomSample", omNs);

+        data = fac.createOMElement("data", omNs);

+        expectedDH = new DataHandler(new ByteArrayDataSource(new byte[]{13, 56, 65, 32, 12, 12, 7, -3, -2, -1,

+                98}));

+        OMElement subData = fac.createOMElement("subData", omNs);

+        OMText textData = new OMTextImpl(expectedDH, fac);

+        subData.addChild(textData);

+        data.addChild(subData);

+        rpcWrapEle.addChild(data);

+        return rpcWrapEle;

+

+    }

+

+    public void testEchoXMLSync() throws Exception {

+

+        OMElement payload = createEnvelope();

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(

+                        Constants.TESTING_PATH + "commons-http-enabledRepository", null);

+        ServiceClient sender = new ServiceClient(configContext, null);

+        sender.setOptions(options);

+        options.setTo(targetEPR);

+

+        OMElement result = sender.sendReceive(payload);

+        this.campareWithCreatedOMElement(result);

+

+    }

+

+    private InputStream getResourceAsStream(String path) {

+        ClassLoader cl = Thread.currentThread().getContextClassLoader();

+        return cl.getResourceAsStream(path);

+    }

+

+    private void campareWithCreatedOMElement(OMElement element) {

+        OMElement firstChild = element.getFirstElement();

+        TestCase.assertNotNull(firstChild);

+        String originalTextValue = data.getFirstElement().getText();

+        String returnedTextValue = firstChild.getText();

+        TestCase.assertEquals(returnedTextValue, originalTextValue);

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMTest.java
new file mode 100644
index 0000000..e7b710d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMTest.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright 2004,2005 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.axis2.mtom;
+
+import java.awt.Image;
+import java.io.InputStream;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.imageio.ImageIO;
+import javax.xml.namespace.QName;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class EchoRawMTOMTest extends UtilServerBasedTestCase implements TestConstants {
+
+
+	private static final Log log = LogFactory.getLog(EchoRawMTOMTest.class);
+
+    private AxisService service;
+
+    private OMTextImpl expectedTextData;
+
+    private boolean finish = false;
+
+    public EchoRawMTOMTest() {
+        super(EchoRawMTOMTest.class.getName());
+    }
+
+    public EchoRawMTOMTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawMTOMTest.class),Constants.TESTING_PATH + "MTOM-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        service = Utils.createSimpleService(serviceName, Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+    protected OMElement createEnvelope() throws Exception {
+
+        DataHandler expectedDH;
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement rpcWrapEle = fac.createOMElement("echoOMElement", omNs);
+        OMElement data = fac.createOMElement("data", omNs);
+        FileDataSource fileDataSource = new FileDataSource("test-resources/mtom/test.jpg");
+        expectedDH = new DataHandler(fileDataSource);
+        expectedTextData = new OMTextImpl(expectedDH, true, fac);
+        data.addChild(expectedTextData);
+        rpcWrapEle.addChild(data);
+        return rpcWrapEle;
+
+    }
+
+    public void testEchoXMLASync() throws Exception {
+        OMElement payload = createEnvelope();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, MessageContext.UTF_16);
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                SOAPEnvelope envelope = result.getResponseEnvelope();
+
+                OMElement ele = (OMElement) envelope.getBody().getFirstElement().getFirstOMChild();
+                OMText binaryNode = (OMText) ele.getFirstOMChild();
+
+                // to the assert equal
+                compareWithCreatedOMText(binaryNode);
+                finish = true;
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+        sender.setOptions(options);
+
+        sender.sendReceiveNonBlocking(payload, callback);
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response take too long to complete");
+            }
+        }
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        OMElement payload = createEnvelope();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+        
+        ServiceClient sender = new ServiceClient(configContext,null);
+        options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+        sender.setOptions(options);
+        options.setTo(targetEPR);
+        OMElement result = sender.sendReceive(payload);
+
+        OMElement ele = (OMElement) result.getFirstOMChild();
+        OMText binaryNode = (OMText) ele.getFirstOMChild();
+
+        // to the assert equal
+        compareWithCreatedOMText(binaryNode);
+
+        // Save the image
+        DataHandler actualDH;
+        actualDH = (DataHandler) binaryNode.getDataHandler();
+       ImageIO.read(actualDH.getDataSource()
+                .getInputStream());
+    }
+    
+    public void testEchoXMLSyncSeperateListener() throws Exception {
+        OMElement payload = createEnvelope();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+        
+        ServiceClient sender = new ServiceClient(configContext,null);
+        sender.engageModule( new QName("addressing"));
+        options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+        sender.setOptions(options);
+        options.setUseSeparateListener(true);
+        options.setTo(targetEPR);
+        OMElement result = sender.sendReceive(payload);
+
+        OMElement ele = (OMElement) result.getFirstOMChild();
+        OMText binaryNode = (OMText) ele.getFirstOMChild();
+        // to the assert equal
+        compareWithCreatedOMText(binaryNode);
+    }
+
+    protected InputStream getResourceAsStream(String path) {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        return cl.getResourceAsStream(path);
+    }
+
+    protected void compareWithCreatedOMText(OMText actualTextData) {
+        String originalTextValue = expectedTextData.getText();
+        String returnedTextValue = actualTextData.getText();
+        TestCase.assertEquals(returnedTextValue, originalTextValue);
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMToBase64Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMToBase64Test.java
new file mode 100644
index 0000000..56c62bc
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoRawMTOMToBase64Test.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2004,2005 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.axis2.mtom;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.framework.Test;
+import org.apache.axiom.attachments.ByteArrayDataSource;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+
+public class EchoRawMTOMToBase64Test extends UtilServerBasedTestCase {
+    private EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:"
+            + (UtilServer.TESTING_PORT)
+            + "/axis2/services/EchoXMLService/echoMTOMtoBase64");
+
+	private static final Log log = LogFactory.getLog(EchoRawMTOMToBase64Test.class);
+
+    private QName serviceName = new QName("EchoXMLService");
+
+    private QName operationName = new QName("echoMTOMtoBase64");
+
+    OMText expectedTextData;
+
+    private boolean finish = false;
+
+    public EchoRawMTOMToBase64Test() {
+        super(EchoRawMTOMToBase64Test.class.getName());
+    }
+
+    public EchoRawMTOMToBase64Test(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(EchoRawMTOMToBase64Test.class));
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service = Utils.createSimpleService(serviceName, Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+    private OMElement createPayload() {
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement rpcWrapEle = fac.createOMElement("echoMTOMtoBase64", omNs);
+        OMElement data = fac.createOMElement("data", omNs);
+        byte[] byteArray = new byte[]{13, 56, 65, 32, 12, 12, 7, -3, -2, -1,
+                98};
+        DataHandler dataHandler = new DataHandler(new ByteArrayDataSource(byteArray));
+        expectedTextData = new OMTextImpl(dataHandler, true, fac);
+        data.addChild(expectedTextData);
+        rpcWrapEle.addChild(data);
+        return rpcWrapEle;
+    }
+
+    public void testEchoXMLASync() throws Exception {
+        OMElement payload = createPayload();
+        Options clientOptions = new Options();
+        clientOptions.setTo(targetEPR);
+        clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                SOAPEnvelope envelope = result.getResponseEnvelope();
+
+                OMElement data = (OMElement) envelope.getBody().getFirstElement().getFirstOMChild();
+                compareWithCreatedOMText(data.getText());
+                finish = true;
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+        ServiceClient sender = new ServiceClient(configContext, null);
+        sender.setOptions(clientOptions);
+
+        sender.sendReceiveNonBlocking(payload, callback);
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response take too long to complete");
+            }
+        }
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        for (int i = 0; i < 10; i++) {
+            OMElement payload = createPayload();
+
+            Options clientOptions = new Options();
+            clientOptions.setTo(targetEPR);
+            clientOptions.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+            clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            clientOptions.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(null,null);
+            ServiceClient sender = new ServiceClient(configContext, null);
+            sender.setOptions(clientOptions);
+
+            OMElement result = sender.sendReceive(payload);
+
+            OMElement data = (OMElement) result.getFirstOMChild();
+            compareWithCreatedOMText(data.getText());
+            log.info("" + i);
+            UtilServer.unDeployClientService();
+        }
+    }
+
+    private void compareWithCreatedOMText(String actualText) {
+        String originalTextValue = expectedTextData.getText();
+        TestCase.assertEquals(actualText, originalTextValue);
+    }
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoService.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoService.java
new file mode 100644
index 0000000..d5c1fb4
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoService.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.axis2.mtom;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMText;
+
+import java.util.Iterator;
+
+
+public class EchoService {
+    public OMElement mtomSample(OMElement element) throws Exception {
+        if (element.getLocalName().equalsIgnoreCase("Data")
+                && element.getNamespace().getNamespaceURI().equalsIgnoreCase(
+                        "http://example.org/mtom/data")) {
+                OMText binaryNode = (OMText)element.getFirstOMChild();
+                binaryNode.setOptimize(!binaryNode.isOptimized());
+            }
+         else if (element.getLocalName().equalsIgnoreCase("EchoTest") && element.getNamespace().getNamespaceURI().equalsIgnoreCase("http://example.org/mtom/data")) {
+            Iterator childrenIterator = element.getChildren();
+            while (childrenIterator.hasNext()) {
+                OMElement dataElement = (OMElement) childrenIterator.next();
+                OMText binaryNode = (OMText)dataElement.getFirstOMChild();
+                binaryNode.setOptimize(!binaryNode.isOptimized());
+            }
+        }
+        return element;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoService2.java b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoService2.java
new file mode 100644
index 0000000..638e470
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/mtom/EchoService2.java
@@ -0,0 +1,57 @@
+/*

+* Copyright 2004,2005 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.axis2.mtom;

+

+import org.apache.axiom.attachments.Attachments;

+import org.apache.axiom.attachments.IncomingAttachmentInputStream;

+import org.apache.axiom.attachments.IncomingAttachmentStreams;

+import org.apache.axiom.attachments.utils.IOUtils;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.impl.MTOMConstants;

+import org.apache.axiom.om.util.Base64;

+import org.apache.axis2.context.MessageContext;

+

+public class EchoService2 {

+

+

+    public OMElement mtomSample(OMElement element) throws Exception {

+

+        Attachments attachments = null;

+        attachments = (Attachments) MessageContext.getCurrentMessageContext().getProperty(MTOMConstants.ATTACHMENTS);

+        // Get image data

+        IncomingAttachmentStreams streams = attachments.getIncomingAttachmentStreams();

+        IncomingAttachmentInputStream stream = streams.getNextStream();

+

+        byte[] data = IOUtils.getStreamAsByteArray(stream);

+

+        //setting response

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace ns = fac.createOMNamespace("urn://fakenamespace", "ns");

+        OMElement response, elem;

+

+        response = fac.createOMElement("response", ns);

+

+        elem = fac.createOMElement("data", ns);

+        elem.setText(Base64.encode(data));

+        response.addChild(elem);

+

+        return response;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/om/OMAttributeTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/om/OMAttributeTest.java
new file mode 100644
index 0000000..68ab290
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/om/OMAttributeTest.java
@@ -0,0 +1,63 @@
+package org.apache.axis2.om;

+

+import junit.framework.TestCase;

+import za.co.eskom.nrs.xmlvend.base.x20.schema.AdviceReqDocument;

+import za.co.eskom.nrs.xmlvend.base.x20.schema.MsgID;

+import za.co.eskom.nrs.xmlvend.base.x20.schema.ConfirmationAdviceReq;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axis2.util.StreamWrapper;

+

+import javax.xml.namespace.QName;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * To run this test,maven build should have been run and the

+ * relevant type classes need to be generated

+ */

+public class OMAttributeTest extends TestCase {

+

+    public void testAttribNamespace(){

+

+        //create a documentType

+        AdviceReqDocument doc = AdviceReqDocument.Factory.newInstance();

+        ConfirmationAdviceReq req = ConfirmationAdviceReq.Factory.newInstance();

+        MsgID msgID = req.addNewAdviceReqMsgID();

+        msgID.setUniqueNumber(11);

+        req.addNewClientID();

+        doc.setAdviceReq(req);

+

+        //get the pull parser and construct the OMElement

+        StAXOMBuilder builder = new StAXOMBuilder(

+                OMAbstractFactory.getOMFactory(),

+                new StreamWrapper(doc.newXMLStreamReader())

+        );

+        OMElement elt = builder.getDocumentElement();

+

+        //traverse the element and look at the namespace of the attribute

+        OMAttribute att = elt.getAttribute(new QName("http://www.w3.org/2001/XMLSchema-instance","type"));

+        assertNotNull(att);

+

+        String prefix = att.getNamespace().getPrefix();

+        assertNotNull(prefix);

+        assertEquals(prefix,"xsi");

+

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java
new file mode 100644
index 0000000..4b795c6
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2004,2005 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.axis2.processingModel;
+
+// todo
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.framework.Test;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.TestingUtils;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+
+public class SoapProcessingModelTest extends UtilServerBasedTestCase implements TestConstants {
+
+    private AxisService clientService;
+
+    private boolean finish = false;
+
+    public SoapProcessingModelTest() {
+        super(SoapProcessingModelTest.class.getName());
+    }
+
+    public SoapProcessingModelTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup(new TestSuite(SoapProcessingModelTest.class));
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service = Utils.createSimpleService(serviceName, Echo.class.getName(),
+                operationName);
+        clientService = Utils.createSimpleServiceforClient(serviceName, Echo.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+    public void sendMessageWithHeader(SOAPEnvelope envelope) throws AxisFault {
+        ServiceClient serviceClient = null;
+
+        try {
+            ConfigurationContext configContext = Utils
+                    .getNewConfigurationContext(Constants.TESTING_REPOSITORY);
+            serviceClient = new ServiceClient(configContext, clientService);
+
+            MessageContext msgctx = new MessageContext();
+            msgctx.setConfigurationContext(configContext);
+
+            msgctx.setEnvelope(envelope);
+
+            Options options = new Options();
+            serviceClient.setOptions(options);
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+                 
+            OperationClient opClient = serviceClient.createClient(operationName);
+            opClient.addMessageContext(msgctx);
+            opClient.setOptions(options);
+            opClient.execute(true);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception Occurred !! ." + e.getMessage());
+            throw new AxisFault(e);
+        } finally {
+        }
+    }
+
+    public void testSendingMustUnderstandWithNextRole() throws Exception {
+        SOAPFactory fac = OMAbstractFactory.getSOAP12Factory();
+        SOAPEnvelope envelope = fac.getDefaultEnvelope();
+        OMNamespace headerNs = fac
+                .createOMNamespace("http://dummyHeader", "dh");
+        SOAPHeaderBlock h1 = fac.createSOAPHeaderBlock("DummyHeader", headerNs,
+                envelope.getHeader());
+        h1.setMustUnderstand(true);
+        h1.addChild(fac.createOMText("Dummy String"));
+        h1.setRole(SOAP12Constants.SOAP_ROLE_NEXT);
+        OMElement payload = TestingUtils.createDummyOMElement();
+        envelope.getBody().addChild(payload);
+        sendMessageWithHeader(envelope);
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/AddressBean.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/AddressBean.java
new file mode 100644
index 0000000..8ac4c5a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/AddressBean.java
@@ -0,0 +1,48 @@
+package org.apache.axis2.rpc;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Oct 12, 2005

+ * Time: 12:03:55 PM

+ */

+public class AddressBean {

+    private String town;

+    private int number ;

+

+    public String getTown() {

+        return town;

+    }

+

+    public void setTown(String town) {

+        this.town = town;

+    }

+

+    public int getNumber() {

+        return number;

+    }

+

+    public void setNumber(int number) {

+        this.number = number;

+    }

+

+    public String toString(){

+        return ("town: " + town + " number :" + number);

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Company.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Company.java
new file mode 100644
index 0000000..bb411f6
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Company.java
@@ -0,0 +1,41 @@
+package org.apache.axis2.rpc;

+

+import java.util.ArrayList;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class Company {

+

+    private ArrayList persons;

+    private String name;

+

+    public ArrayList getPersons() {

+        return persons;

+    }

+

+    public void setPersons(ArrayList persons) {

+        this.persons = persons;

+    }

+

+    public String getName() {

+        return name;

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Employee.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Employee.java
new file mode 100644
index 0000000..71d6d6f
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Employee.java
@@ -0,0 +1,44 @@
+package org.apache.axis2.rpc;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class Employee extends Person{

+

+    protected Person emplyer;

+    protected AddressBean address;

+

+    public Person getEmplyer() {

+        return emplyer;

+    }

+

+    public void setEmplyer(Person emplyer) {

+        this.emplyer = emplyer;

+    }

+

+    public AddressBean getAddress() {

+        return address;

+    }

+

+    public void setAddress(AddressBean address) {

+        this.address = address;

+    }

+

+    public String toString(){

+        String str = "Name:" + getName() + " Age: " + getAge();

+        return str;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Mail.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Mail.java
new file mode 100644
index 0000000..acd24d1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Mail.java
@@ -0,0 +1,76 @@
+package org.apache.axis2.rpc;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class Mail {

+    

+    private String id = null;

+    private String from = null;

+    private String to = null;

+    private String subject = null;

+    private String body = null;

+    private String contentType = null;

+

+    public String getId() {

+        return id;

+    }

+

+    public void setId(String id) {

+        this.id = id;

+    }

+

+    public String getBody() {

+        return body;

+    }

+

+    public void setBody(String body) {

+        this.body = body;

+    }

+

+    public String getFrom() {

+        return from;

+    }

+

+    public void setFrom(String from) {

+        this.from = from;

+    }

+

+    public String getSubject() {

+        return subject;

+    }

+

+    public void setSubject(String subject) {

+        this.subject = subject;

+    }

+

+    public String getTo() {

+        return to;

+    }

+

+    public void setTo(String to) {

+        this.to = to;

+    }

+

+    public String getContentType() {

+        return contentType;

+    }

+

+    public void setContentType(String contentType) {

+        this.contentType = contentType;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
new file mode 100644
index 0000000..90e888a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
@@ -0,0 +1,618 @@
+/*

+* Copyright 2004,2005 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.axis2.rpc;

+

+import junit.framework.TestCase;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.OperationClient;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.databinding.utils.BeanUtil;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.DefaultObjectSupplier;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.rpc.client.RPCServiceClient;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.FactoryConfigurationError;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import java.io.ByteArrayInputStream;

+import java.util.ArrayList;

+

+public class MultirefTest extends TestCase {

+

+    protected EndpointReference targetEPR =

+            new EndpointReference("http://127.0.0.1:"

+                    + (UtilServer.TESTING_PORT)

+                    + "/axis2/services/EchoXMLService/concat");

+	private static final Log log = LogFactory.getLog(MultirefTest.class);

+    protected QName serviceName = new QName("EchoXMLService");

+    protected QName operationName = new QName(NAMESPACE, "concat");

+    protected QName transportName = new QName(NAMESPACE,

+            "NullTransport");

+

+    protected AxisConfiguration engineRegistry;

+    protected MessageContext mc;

+    protected ServiceContext serviceContext;

+    protected AxisService service;

+

+    protected boolean finish = false;

+    public static final String NAMESPACE = "http://rpc.axis2.apache.org/xsd";

+

+    protected void setUp() throws Exception {

+         UtilServer.start();

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.unDeployClientService();

+         UtilServer.stop();

+    }

+

+    private void configureSystem(String opName) throws AxisFault {

+        targetEPR =

+                new EndpointReference("http://127.0.0.1:"

+                        + (UtilServer.TESTING_PORT)

+                        + "/axis2/services/EchoXMLService/" + opName);

+        String className = "org.apache.axis2.rpc.RPCServiceClass";

+        operationName = new QName("http://rpc.axis2.apache.org/xsd", opName, "req");

+        AxisService service = AxisService.createService(

+                className,UtilServer.getConfigurationContext().getAxisConfiguration());

+        service.setName("EchoXMLService");

+        service.setClassLoader(Thread.currentThread().getContextClassLoader());

+        UtilServer.deployService(service);

+    }

+

+    public void testMulitref1() throws AxisFault {

+        configureSystem("echoString");

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+        OMElement method = fac.createOMElement("echoString", omNs);

+        OMElement value = fac.createOMElement("arg0", null);

+        value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value);

+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = factory.getDefaultEnvelope();

+        envelope.getBody().addChild(method);

+

+        OMElement ref = fac.createOMElement("reference", null);

+        ref.addAttribute(fac.createOMAttribute("id", null, "1"));

+        ref.setText("hello Axis2");

+        envelope.getBody().addChild(ref);

+

+        Options options = new Options();

+

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configConetxt = ConfigurationContextFactory

+                .createConfigurationContextFromFileSystem(null,null);

+        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+        rpcClient.setOptions(options);

+        MessageContext reqMessageContext = new MessageContext();

+        reqMessageContext.setConfigurationContext(configConetxt);

+        OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+        opClinet.setOptions(options);

+        reqMessageContext.setEnvelope(envelope);

+

+        opClinet.addMessageContext(reqMessageContext);

+        opClinet.execute(true);

+

+        MessageContext responseMessageContx = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+

+        SOAPEnvelope env = responseMessageContx.getEnvelope();

+

+

+        assertEquals(env.getBody().getFirstElement().getFirstElement().getText(), "hello Axis2");

+    }

+

+    public void testadd() throws AxisFault {

+        configureSystem("add");

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+        OMElement method = fac.createOMElement("add", omNs);

+        OMElement value = fac.createOMElement("arg0", null);

+        value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value);

+

+        OMElement value2 = fac.createOMElement("arg1", null);

+        value2.addAttribute(fac.createOMAttribute("href", null, "#2"));

+        method.addChild(value2);

+

+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = factory.getDefaultEnvelope();

+        envelope.getBody().addChild(method);

+

+        OMElement ref = fac.createOMElement("reference", null);

+        ref.addAttribute(fac.createOMAttribute("id", null, "1"));

+        ref.setText("10");

+        envelope.getBody().addChild(ref);

+

+        OMElement ref2 = fac.createOMElement("reference", null);

+        ref2.addAttribute(fac.createOMAttribute("id", null, "2"));

+        ref2.setText("10");

+        envelope.getBody().addChild(ref2);

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configConetxt = ConfigurationContextFactory

+                .createConfigurationContextFromFileSystem(null,null);

+        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+        rpcClient.setOptions(options);

+        MessageContext reqMessageContext = new MessageContext();

+         reqMessageContext.setConfigurationContext(configConetxt);

+        OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+        opClinet.setOptions(options);

+        reqMessageContext.setEnvelope(envelope);

+

+        opClinet.addMessageContext(reqMessageContext);

+        opClinet.execute(true);

+

+        MessageContext responseMessageContx = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+

+        SOAPEnvelope env = responseMessageContx.getEnvelope();

+

+

+        assertEquals(env.getBody().getFirstElement().getFirstElement().getText(), "20");

+    }

+

+    public void testaddSameRef() throws AxisFault {

+        configureSystem("add");

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+        OMElement method = fac.createOMElement("add", omNs);

+        OMElement value = fac.createOMElement("arg0", null);

+        value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value);

+

+        OMElement value2 = fac.createOMElement("arg1", null);

+        value2.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value2);

+

+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = factory.getDefaultEnvelope();

+        envelope.getBody().addChild(method);

+

+        OMElement ref = fac.createOMElement("reference", null);

+        ref.addAttribute(fac.createOMAttribute("id", null, "1"));

+        ref.setText("10");

+        envelope.getBody().addChild(ref);

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configConetxt = ConfigurationContextFactory

+                .createConfigurationContextFromFileSystem(null,null);

+        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+        rpcClient.setOptions(options);

+        MessageContext reqMessageContext = new MessageContext();

+         reqMessageContext.setConfigurationContext(configConetxt);

+        OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+        opClinet.setOptions(options);

+        reqMessageContext.setEnvelope(envelope);

+

+        opClinet.addMessageContext(reqMessageContext);

+        opClinet.execute(true);

+

+        MessageContext responseMessageContx = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+        SOAPEnvelope env = responseMessageContx.getEnvelope();

+

+        assertEquals(env.getBody().getFirstElement().getFirstElement().getText(), "20");

+    }

+

+    public void testaddError() {

+        try {

+            configureSystem("add");

+            OMFactory fac = OMAbstractFactory.getOMFactory();

+

+            OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+            OMElement method = fac.createOMElement("add", omNs);

+            OMElement value = fac.createOMElement("arg0", null);

+            value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+            method.addChild(value);

+

+            OMElement value2 = fac.createOMElement("arg1", null);

+            value2.addAttribute(fac.createOMAttribute("href", null, "#2"));

+            method.addChild(value2);

+

+            SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+            SOAPEnvelope envelope = factory.getDefaultEnvelope();

+            envelope.getBody().addChild(method);

+

+            OMElement ref = fac.createOMElement("reference", null);

+            ref.addAttribute(fac.createOMAttribute("id", null, "1"));

+            ref.setText("10");

+            envelope.getBody().addChild(ref);

+

+            OMElement ref2 = fac.createOMElement("reference", null);

+            ref2.addAttribute(fac.createOMAttribute("id", null, "3"));

+            ref2.setText("10");

+            envelope.getBody().addChild(ref2);

+

+            Options options = new Options();

+            options.setTo(targetEPR);

+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+            ConfigurationContext configConetxt = ConfigurationContextFactory

+                    .createConfigurationContextFromFileSystem(null,null);

+            RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+            rpcClient.setOptions(options);

+            MessageContext reqMessageContext = new MessageContext();

+             reqMessageContext.setConfigurationContext(configConetxt);

+            OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+            opClinet.setOptions(options);

+            reqMessageContext.setEnvelope(envelope);

+

+            opClinet.addMessageContext(reqMessageContext);

+            opClinet.execute(true);

+

+            fail("This should fail with : " + "org.apache.axis2.AxisFault: Invalid reference :2");

+        } catch (AxisFault axisFault) {

+            String val = axisFault.getFaultDetailElement().toString();

+            System.out.println("val = " + val);

+            int index = val.indexOf("org.apache.axis2.AxisFault: Invalid reference :2");

+            if (index < 0) {

+                fail("This should fail with : " + "org.apache.axis2.AxisFault: Invalid reference :2");

+            }

+        }

+    }

+

+

+    public void testMulitrefBean() throws AxisFault {

+        configureSystem("editBean");

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+        OMElement method = fac.createOMElement("editBean", omNs);

+        OMElement value = fac.createOMElement("arg0", null);

+        value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value);

+        OMElement value2 = fac.createOMElement("arg1", null);

+        value2.setText("159");

+        method.addChild(value2);

+

+

+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = factory.getDefaultEnvelope();

+        envelope.getBody().addChild(method);

+

+

+        String ref1 = "<reference id=\"1\"><name>Deepal</name><value href=\"#2\"/><address href=\"#3\"/></reference>";

+        OMElement om1 = getOMelemnt(ref1, fac);

+        envelope.getBody().addChild(om1);

+        String ref2 = "<reference id=\"2\">false</reference>";

+        OMElement om2 = getOMelemnt(ref2, fac);

+        envelope.getBody().addChild(om2);

+        String ref3 = "<reference id=\"3\"><town href=\"#4\"/><number>1010</number></reference>";

+        OMElement om3 = getOMelemnt(ref3, fac);

+        envelope.getBody().addChild(om3);

+        String ref4 = "<reference id=\"4\">Colombo3</reference>";

+        OMElement om4 = getOMelemnt(ref4, fac);

+        envelope.getBody().addChild(om4);

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configConetxt = ConfigurationContextFactory

+                .createConfigurationContextFromFileSystem(null,null);

+        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+        rpcClient.setOptions(options);

+        MessageContext reqMessageContext = new MessageContext();

+         reqMessageContext.setConfigurationContext(configConetxt);

+        OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+        opClinet.setOptions(options);

+        reqMessageContext.setEnvelope(envelope);

+

+        opClinet.addMessageContext(reqMessageContext);

+        opClinet.execute(true);

+

+        MessageContext responseMessageContx = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+

+        SOAPEnvelope env = responseMessageContx.getEnvelope();

+

+        OMElement response = env.getBody().getFirstElement();

+        MyBean resBean = (MyBean) BeanUtil.deserialize(MyBean.class, response.getFirstElement() , new DefaultObjectSupplier(), null);

+        assertNotNull(resBean);

+        assertEquals(resBean.getAge(), 159);

+    }

+

+

+    public void testbeanOM() throws AxisFault {

+        configureSystem("beanOM");

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+        OMElement method = fac.createOMElement("beanOM", omNs);

+        OMElement value = fac.createOMElement("arg0", null);

+        value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value);

+        OMElement value2 = fac.createOMElement("arg1", null);

+        value2.setText("159");

+        method.addChild(value2);

+

+

+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = factory.getDefaultEnvelope();

+        envelope.getBody().addChild(method);

+

+

+        String ref1 = "<reference id=\"1\"><name>Deepal</name><value href=\"#2\"/><address href=\"#3\"/></reference>";

+        OMElement om1 = getOMelemnt(ref1, fac);

+        envelope.getBody().addChild(om1);

+        String ref2 = "<reference id=\"2\">false</reference>";

+        OMElement om2 = getOMelemnt(ref2, fac);

+        envelope.getBody().addChild(om2);

+        String ref3 = "<reference id=\"3\"><town href=\"#4\"/><number>1010</number></reference>";

+        OMElement om3 = getOMelemnt(ref3, fac);

+        envelope.getBody().addChild(om3);

+        String ref4 = "<reference id=\"4\">Colombo3</reference>";

+        OMElement om4 = getOMelemnt(ref4, fac);

+        envelope.getBody().addChild(om4);

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configConetxt = ConfigurationContextFactory

+                .createConfigurationContextFromFileSystem(null,null);

+        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+        rpcClient.setOptions(options);

+        MessageContext reqMessageContext = new MessageContext();

+         reqMessageContext.setConfigurationContext(configConetxt);

+        OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+        opClinet.setOptions(options);

+        reqMessageContext.setEnvelope(envelope);

+

+        opClinet.addMessageContext(reqMessageContext);

+        opClinet.execute(true);

+

+        MessageContext responseMessageContx = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+

+        SOAPEnvelope env = responseMessageContx.getEnvelope();

+

+        OMElement response = env.getBody().getFirstElement();

+        MyBean resBean = (MyBean) BeanUtil.deserialize(MyBean.class, response.getFirstElement()  , new DefaultObjectSupplier(), null);

+        assertNotNull(resBean);

+        assertEquals(resBean.getAge(), 159);

+    }

+

+

+    public void testomrefs() throws AxisFault {

+        configureSystem("omrefs");

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+        OMElement method = fac.createOMElement("omrefs", omNs);

+

+        OMElement value = fac.createOMElement("arg0", null);

+        value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value);

+

+        OMElement value2 = fac.createOMElement("arg1", null);

+        value2.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value2);

+

+

+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = factory.getDefaultEnvelope();

+        envelope.getBody().addChild(method);

+

+

+        String ref1 = "<reference id=\"1\"><name>Deepal</name><value href=\"#2\"/><address href=\"#3\"/></reference>";

+        OMElement om1 = getOMelemnt(ref1, fac);

+        envelope.getBody().addChild(om1);

+        String ref2 = "<reference id=\"2\">false</reference>";

+        OMElement om2 = getOMelemnt(ref2, fac);

+        envelope.getBody().addChild(om2);

+        String ref3 = "<reference id=\"3\"><town href=\"#4\"/><number>1010</number></reference>";

+        OMElement om3 = getOMelemnt(ref3, fac);

+        envelope.getBody().addChild(om3);

+        String ref4 = "<reference id=\"4\">Colombo3</reference>";

+        OMElement om4 = getOMelemnt(ref4, fac);

+        envelope.getBody().addChild(om4);

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configConetxt = ConfigurationContextFactory

+                .createConfigurationContextFromFileSystem(null,null);

+        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+        rpcClient.setOptions(options);

+        MessageContext reqMessageContext = new MessageContext();

+         reqMessageContext.setConfigurationContext(configConetxt);

+        OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+        opClinet.setOptions(options);

+        reqMessageContext.setEnvelope(envelope);

+

+        opClinet.addMessageContext(reqMessageContext);

+        opClinet.execute(true);

+

+        MessageContext responseMessageContx = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+

+        SOAPEnvelope env = responseMessageContx.getEnvelope();

+

+        OMElement response = env.getBody().getFirstElement();

+

+        ArrayList args = new ArrayList();

+        args.add(boolean.class);

+

+        Object [] resBean = BeanUtil.deserialize(response, args.toArray()  , new DefaultObjectSupplier());

+        assertNotNull(resBean);

+        assertEquals(((Boolean) resBean[0]).booleanValue(), true);

+    }

+

+    private OMElement getOMelemnt(String str, OMFactory fac) throws AxisFault {

+        StAXOMBuilder staxOMBuilder;

+        try {

+            XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new

+                    ByteArrayInputStream(str.getBytes()));

+            staxOMBuilder = new

+                    StAXOMBuilder(fac, xmlReader);

+        } catch (XMLStreamException e) {

+            throw new AxisFault(e);

+        } catch (FactoryConfigurationError factoryConfigurationError) {

+            throw new AxisFault(factoryConfigurationError);

+        }

+        return staxOMBuilder.getDocumentElement();

+    }

+

+

+    public void testechoEmployee() throws AxisFault {

+        configureSystem("echoEmployee");

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+        OMElement method = fac.createOMElement("echoEmployee", omNs);

+

+        OMElement value = fac.createOMElement("arg0", null);

+        value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value);

+

+

+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = factory.getDefaultEnvelope();

+        envelope.getBody().addChild(method);

+

+

+        String str = "<reference id=\"1\">\n" +

+                " <name>John</name>\n" +

+                " <age>50</age>\n" +

+                " <emplyer href=\"#1\"/>\n" +

+                " <address href=\"#2\"/>\n" +

+                "</reference>";

+        envelope.getBody().addChild(getOMelemnt(str, fac));

+        str = "<reference id=\"2\">\n" +

+                "<town>Colombo3</town><number>1010</number>\n" +

+                "</reference>";

+        envelope.getBody().addChild(getOMelemnt(str, fac));

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        ConfigurationContext configConetxt = ConfigurationContextFactory

+                .createConfigurationContextFromFileSystem(null,null);

+        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+        rpcClient.setOptions(options);

+        MessageContext reqMessageContext = new MessageContext();

+         reqMessageContext.setConfigurationContext(configConetxt);

+        OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+        opClinet.setOptions(options);

+        reqMessageContext.setEnvelope(envelope);

+

+        opClinet.addMessageContext(reqMessageContext);

+        opClinet.execute(true);

+

+        MessageContext responseMessageContx = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+

+        SOAPEnvelope env = responseMessageContx.getEnvelope();

+

+        Employee emp = (Employee) BeanUtil.deserialize(Employee.class, env.getBody().getFirstElement().getFirstElement()  , new DefaultObjectSupplier(), null);

+        assertNotNull(emp);

+    }

+

+

+    public void testMulitrefArray() throws AxisFault {

+        configureSystem("handleArrayList");

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+

+        OMNamespace omNs = fac.createOMNamespace(NAMESPACE, "my");

+        OMElement method = fac.createOMElement("handleArrayList", omNs);

+

+        OMElement value = fac.createOMElement("arg0", null);

+        value.addAttribute(fac.createOMAttribute("href", null, "#1"));

+        method.addChild(value);

+

+        OMElement value2 = fac.createOMElement("arg1", null);

+        value2.setText("10");

+        method.addChild(value2);

+

+

+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = factory.getDefaultEnvelope();

+        envelope.getBody().addChild(method);

+

+

+        String str = "<reference id=\"1\">\n" +

+                "    <item0>abc</item0>\n" +

+                "    <item0>def</item0>\n" +

+                "    <item0>ghi</item0>\n" +

+                "    <item0>klm</item0>\n" +

+                "</reference>";

+        StAXOMBuilder staxOMBuilder;

+        try {

+            XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new

+                    ByteArrayInputStream(str.getBytes()));

+            staxOMBuilder = new

+                    StAXOMBuilder(fac, xmlReader);

+        } catch (XMLStreamException e) {

+            throw new AxisFault(e);

+        } catch (FactoryConfigurationError factoryConfigurationError) {

+            throw new AxisFault(factoryConfigurationError);

+        }

+        envelope.getBody().addChild(staxOMBuilder.getDocumentElement());

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+

+        ConfigurationContext configConetxt = ConfigurationContextFactory

+                .createConfigurationContextFromFileSystem(null,null);

+        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);

+        rpcClient.setOptions(options);

+        MessageContext reqMessageContext = new MessageContext();

+        reqMessageContext.setConfigurationContext(configConetxt);

+        OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+        opClinet.setOptions(options);

+        reqMessageContext.setEnvelope(envelope);

+

+        opClinet.addMessageContext(reqMessageContext);

+        opClinet.execute(true);

+

+        MessageContext responseMessageContx = opClinet.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+

+        SOAPEnvelope env = responseMessageContx.getEnvelope();

+        assertEquals(env.getBody().getFirstElement().getFirstElement().getText(), "abcdefghiklm10");

+    }

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/MyBean.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/MyBean.java
new file mode 100644
index 0000000..61c67e2
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/MyBean.java
@@ -0,0 +1,66 @@
+package org.apache.axis2.rpc;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Oct 12, 2005

+ * Time: 11:24:03 AM

+ */

+public class MyBean {

+    private String name;

+    private int age;

+    private boolean value;

+    private AddressBean address;

+

+    public String getName() {

+        return name;

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+

+    public int getAge() {

+        return age;

+    }

+

+    public void setAge(int age) {

+        this.age = age;

+    }

+

+    public boolean isValue() {

+        return value;

+    }

+

+    public void setValue(boolean value) {

+        this.value = value;

+    }

+

+    public AddressBean getAddress() {

+        return address;

+    }

+

+    public void setAddress(AddressBean address) {

+        this.address = address;

+    }

+

+    public String toString(){

+        return ("name:" + name + " Age : " + age + " Value : " + value + " Address : " );

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Person.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Person.java
new file mode 100644
index 0000000..b572020
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/Person.java
@@ -0,0 +1,38 @@
+package org.apache.axis2.rpc;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class Person {

+    protected String name;

+    protected int age;

+

+    public String getName() {

+        return name;

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+

+    public int getAge() {

+        return age;

+    }

+

+    public void setAge(int age) {

+        this.age = age;

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
new file mode 100644
index 0000000..c90ba47
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
@@ -0,0 +1,754 @@
+/*

+* Copyright 2004,2005 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.axis2.rpc;

+

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.databinding.utils.BeanUtil;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.InOutAxisOperation;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.DefaultObjectSupplier;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.rpc.client.RPCServiceClient;

+import org.apache.axis2.rpc.receivers.RPCMessageReceiver;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.FactoryConfigurationError;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import java.io.ByteArrayInputStream;

+import java.text.SimpleDateFormat;

+import java.util.ArrayList;

+import java.util.Calendar;

+import java.util.Date;

+import java.util.TimeZone;

+

+public class RPCCallTest extends UtilServerBasedTestCase {

+

+    private SimpleDateFormat zulu = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

+    //  0123456789 0 123456789

+

+

+    protected EndpointReference targetEPR;

+    protected QName serviceName = new QName("EchoXMLService");

+    protected QName operationName = new QName("http://org.apache.axis2/xsd", "concat");

+    protected QName transportName = new QName("http://org.apache.axis2/xsd",

+            "NullTransport");

+

+    protected AxisConfiguration engineRegistry;

+    protected MessageContext mc;

+    protected ServiceContext serviceContext;

+    protected AxisService service;

+

+    protected boolean finish = false;

+

+    public RPCCallTest() {

+        super(RPCCallTest.class.getName());

+    }

+

+    public RPCCallTest(String testName) {

+        super(testName);

+    }

+

+    public static Test suite() {

+        return getTestSetup(new TestSuite(RPCCallTest.class));

+    }

+

+

+    protected void setUp() throws Exception {

+        String className = "org.apache.axis2.rpc.RPCServiceClass";

+        UtilServer.start();

+        service = AxisService.createService(

+                className, UtilServer.getConfigurationContext().getAxisConfiguration());

+        service.setName("EchoXMLService");

+        service.setClassLoader(Thread.currentThread().getContextClassLoader());

+

+        UtilServer.deployService(service);

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(serviceName);

+        UtilServer.unDeployClientService();

+    }

+

+    public void testEditBean() throws AxisFault {

+        configureSystem("editBean");

+

+        Options options = new Options();

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+        options.setTo(targetEPR);

+

+        MyBean bean = new MyBean();

+        bean.setAge(100);

+        bean.setName("Deepal");

+        bean.setValue(false);

+        AddressBean ab = new AddressBean();

+        ab.setNumber(1010);

+        ab.setTown("Colombo3");

+        bean.setAddress(ab);

+

+

+        ArrayList args = new ArrayList();

+        args.add(bean);

+        args.add("159");

+

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        MyBean resBean = (MyBean) BeanUtil.deserialize(MyBean.class, response.getFirstElement(), new DefaultObjectSupplier(), null);

+        assertNotNull(resBean);

+        assertEquals(resBean.getAge(), 159);

+    }

+

+    private void configureSystem(String opName) {

+        targetEPR =

+                new EndpointReference("http://127.0.0.1:"

+                        + (UtilServer.TESTING_PORT)

+                        + "/axis2/services/EchoXMLService/" + opName);

+        operationName = new QName("http://rpc.axis2.apache.org/xsd", opName, "req");

+        AxisOperation axisOp = new InOutAxisOperation(operationName);

+        axisOp.setMessageReceiver(new RPCMessageReceiver());

+        axisOp.setStyle(WSDLConstants.STYLE_RPC);

+        service.addOperation(axisOp);

+    }

+

+    public void testEchoBean() throws AxisFault {

+        configureSystem("echoBean");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        MyBean bean = new MyBean();

+        bean.setAge(100);

+        bean.setName("Deepal");

+        bean.setValue(false);

+        AddressBean ab = new AddressBean();

+        ab.setNumber(1010);

+        ab.setTown("Colombo3");

+        bean.setAddress(ab);

+

+        ArrayList args = new ArrayList();

+        args.add(bean);

+

+

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        MyBean resBean = (MyBean) BeanUtil.deserialize(MyBean.class,

+                response.getFirstElement(), new DefaultObjectSupplier(), null);

+//        MyBean resBean =(MyBean) new  BeanSerializer(MyBean.class,response).deserilze();

+        assertNotNull(resBean);

+        assertEquals(resBean.getAge(), 100);

+    }

+

+    public void testechoMail() throws AxisFault {

+        configureSystem("echoMail");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        Mail mail = new Mail();

+        mail.setBody("My Body");

+        mail.setContentType("ContentType");

+        mail.setFrom("From");

+        mail.setId("ID");

+        mail.setSubject("Subject");

+        mail.setTo("To");

+

+        ArrayList args = new ArrayList();

+        args.add(mail);

+

+

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        Mail resBean = (Mail) BeanUtil.deserialize(Mail.class, response.getFirstElement(),

+                new DefaultObjectSupplier(), null);

+//        MyBean resBean =(MyBean) new  BeanSerializer(MyBean.class,response).deserilze();

+        assertNotNull(resBean);

+        assertEquals(resBean.getBody(), "My Body");

+    }

+

+

+    public void testEchoString() throws AxisFault {

+        configureSystem("echoString");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        args.add("foo");

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(response.getFirstElement().getText(), "foo");

+    }

+

+    public void testEchoInt() throws AxisFault {

+        configureSystem("echoInt");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        args.add("100");

+

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(Integer.parseInt(response.getFirstElement().getText()), 100);

+    }

+

+    public void testAdd() throws AxisFault {

+        configureSystem("add");

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        sender.setOptions(options);

+        ArrayList args = new ArrayList();

+        args.add("100");

+        args.add("200");

+

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(Integer.parseInt(response.getFirstElement().getText()), 300);

+    }

+

+    public void testByteArray() throws AxisFault {

+        configureSystem("testByteArray");

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        sender.setOptions(options);

+        ArrayList args = new ArrayList();

+        String hello = "hello";

+        args.add(hello.getBytes());

+

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(response.getFirstElement().getText(), hello);

+    }

+

+    //

+

+    public void testDivide() throws AxisFault {

+        configureSystem("divide");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+

+        ArrayList args = new ArrayList();

+        args.add("10");

+        args.add("0");

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(response.getFirstElement().getText(), "INF");

+    }

+

+    public void testEchoBool() throws AxisFault {

+        configureSystem("echoBool");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        args.add("true");

+

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(Boolean.valueOf(response.getFirstElement().getText()).booleanValue(), true);

+    }

+

+    public void testEchoByte() throws AxisFault {

+        configureSystem("echoByte");

+

+        Options options = new Options();

+

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        args.add("1");

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(Byte.parseByte(response.getFirstElement().getText()), 1);

+    }

+

+    public void testCompany() throws AxisFault {

+        configureSystem("echoCompany");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        Company com = new Company();

+        com.setName("MyCompany");

+

+        ArrayList ps = new ArrayList();

+

+        Person p1 = new Person();

+        p1.setAge(10);

+        p1.setName("P1");

+        ps.add(p1);

+

+        Person p2 = new Person();

+        p2.setAge(15);

+        p2.setName("P2");

+        ps.add(p2);

+

+        Person p3 = new Person();

+        p3.setAge(20);

+        p3.setName("P3");

+        ps.add(p3);

+

+        com.setPersons(ps);

+        ArrayList args = new ArrayList();

+        args.add(com);

+        sender.invokeBlocking(operationName, args.toArray());

+    }

+

+

+    public void testtestCompany() throws AxisFault {

+        configureSystem("testCompanyArray");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        Company com = new Company();

+        com.setName("MyCompany");

+

+        ArrayList ps = new ArrayList();

+

+        Person p1 = new Person();

+        p1.setAge(10);

+        p1.setName("P1");

+        ps.add(p1);

+

+        Person p2 = new Person();

+        p2.setAge(15);

+        p2.setName("P2");

+        ps.add(p2);

+

+        Person p3 = new Person();

+        p3.setAge(20);

+        p3.setName("P3");

+        ps.add(p3);

+

+        com.setPersons(ps);

+        ArrayList args = new ArrayList();

+        args.add(com);

+        args.add(com);

+        args.add(com);

+        args.add(com);

+

+        ArrayList req = new ArrayList();

+        req.add(args.toArray());

+        OMElement value = sender.invokeBlocking(operationName, req.toArray());

+        assertEquals("4", value.getFirstElement().getText());

+    }

+

+    public void testCompanyArray() throws AxisFault {

+        configureSystem("CompanyArray");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        Company com = new Company();

+        com.setName("MyCompany");

+

+        ArrayList ps = new ArrayList();

+

+        Person p1 = new Person();

+        p1.setAge(10);

+        p1.setName("P1");

+        ps.add(p1);

+

+        Person p2 = new Person();

+        p2.setAge(15);

+        p2.setName("P2");

+        ps.add(p2);

+

+        Person p3 = new Person();

+        p3.setAge(20);

+        p3.setName("P3");

+        ps.add(p3);

+

+        com.setPersons(ps);

+        ArrayList args = new ArrayList();

+        args.add(com);

+        args.add(com);

+        args.add(com);

+        args.add(com);

+

+        ArrayList req = new ArrayList();

+        req.add(args.toArray());

+        ArrayList resobj = new ArrayList();

+        resobj.add(Company.class);

+        resobj.add(Company.class);

+        resobj.add(Company.class);

+        resobj.add(Company.class);

+        Object [] value = sender.invokeBlocking(operationName, req.toArray(), (Class[])resobj.toArray(new Class[resobj.size()]));

+        assertEquals(4, value.length);

+        assertEquals(((Company) value[0]).getName(), "MyCompany");

+    }

+

+

+    public void testEchoOM() throws AxisFault {

+        configureSystem("echoOM");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        args.add("1");

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(Byte.parseByte(response.getFirstElement().getFirstElement().getText()), 1);

+    }

+

+    public void testCalender() throws AxisFault {

+        zulu.setTimeZone(TimeZone.getTimeZone("GMT"));

+        configureSystem("echoCalander");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        Date date = Calendar.getInstance().getTime();

+        args.add(zulu.format(date));

+        OMElement response = sender.invokeBlocking(operationName, args.toArray());

+        assertEquals(response.getFirstElement().getText(), zulu.format(date));

+    }

+

+

+    ////////////////////////////////////////////////// Invoking by Passing Return types //////////

+    public void testechoBean2() throws AxisFault {

+        configureSystem("echoBean");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        MyBean bean = new MyBean();

+        bean.setAge(100);

+        bean.setName("Deepal");

+        bean.setValue(false);

+        AddressBean ab = new AddressBean();

+        ab.setNumber(1010);

+        ab.setTown("Colombo3");

+        bean.setAddress(ab);

+

+        ArrayList args = new ArrayList();

+        args.add(bean);

+

+        ArrayList ret = new ArrayList();

+        ret.add(MyBean.class);

+

+        Object [] response = sender.invokeBlocking(operationName, args.toArray(), (Class[])ret.toArray(new Class[ret.size()]));

+        MyBean resBean = (MyBean) response[0];

+        assertNotNull(resBean);

+        assertEquals(resBean.getAge(), 100);

+    }

+

+    public void testechoInt2() throws AxisFault {

+        configureSystem("echoInt");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        args.add("100");

+

+        ArrayList ret = new ArrayList();

+        ret.add(Integer.class);

+

+        Object [] response = sender.invokeBlocking(operationName, args.toArray(), (Class[])ret.toArray(new Class[ret.size()]));

+        assertEquals(((Integer) response[0]).intValue(), 100);

+    }

+

+//    public void testmultireturn() throws AxisFault {

+//        configureSystem("multireturn");

+//

+//        Options options = new Options();

+//        options.setTo(targetEPR);

+//        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+//

+//        ConfigurationContext configContext =

+//                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+//        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+//        sender.setOptions(options);

+//

+//        ArrayList args = new ArrayList();

+//        args.add("1");

+//

+//        ArrayList ret = new ArrayList();

+//        ret.add(Integer.class);

+//        ret.add(String.class);

+//

+//        Object [] response = sender.invokeBlocking(operationName, args.toArray(), ret.toArray());

+//        assertEquals(((Integer) response[0]).intValue(), 10);

+//        assertEquals(response[1], "foo");

+//    }

+

+    public void testStringArray() throws AxisFault {

+        configureSystem("handleStringArray");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        String [] values = new String[]{"abc", "cde", "efg"};

+        args.add(values);

+        ArrayList ret = new ArrayList();

+        ret.add(Boolean.class);

+        Object [] objs = sender.invokeBlocking(operationName, args.toArray(),

+                (Class[])ret.toArray(new Class[ret.size()]));

+        assertNotNull(objs);

+        assertEquals(Boolean.TRUE, Boolean.valueOf(objs[0].toString()));

+    }

+

+    public void testmultiArrays() throws AxisFault {

+        configureSystem("multiArrays");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        String [] values = new String[]{"abc", "cde", "efg"};

+        args.add(values);

+

+        String [] values2 = new String[]{"abc", "cde", "efg"};

+        args.add(values2);

+        String [] values3 = new String[]{"abc", "cde", "efg"};

+        args.add(values3);

+        args.add("10");

+

+        ArrayList ret = new ArrayList();

+        ret.add(Integer.class);

+        Object [] objs = sender.invokeBlocking(operationName, args.toArray(),

+                (Class[])ret.toArray(new Class[ret.size()]));

+        assertNotNull(objs);

+        assertEquals(19, Integer.parseInt(objs[0].toString()));

+    }

+

+    public void testmulReturn() throws AxisFault {

+        configureSystem("mulReturn");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        ArrayList args = new ArrayList();

+        args.add("foo");

+

+

+        OMElement element = sender.invokeBlocking(operationName, args.toArray());

+        System.out.println("element = " + element);

+//        assertEquals(response.getFirstElement().getText(), "foo");

+    }

+

+

+    public void testhandleArrayList() throws AxisFault {

+        configureSystem("handleArrayList");

+

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        OMElement elem = sender.sendReceive(getpayLoad());

+        assertEquals(elem.getFirstElement().getText(), "abcdefghiklm10");

+    }

+

+    public void testomElementArray() throws AxisFault {

+        configureSystem("omElementArray");

+        String str = "<req:omElementArray xmlns:req=\"http://rpc.axis2.apache.org/xsd\">\n" +

+                "    <arg0><abc>vaue1</abc></arg0>\n" +

+                "    <arg0><abc>vaue2</abc></arg0>\n" +

+                "    <arg0><abc>vaue3</abc></arg0>\n" +

+                "    <arg0><abc>vaue4</abc></arg0>\n" +

+                "</req:omElementArray>";

+        StAXOMBuilder staxOMBuilder;

+        try {

+            XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new

+                    ByteArrayInputStream(str.getBytes()));

+            OMFactory fac = OMAbstractFactory.getOMFactory();

+

+            staxOMBuilder = new

+                    StAXOMBuilder(fac, xmlReader);

+        } catch (XMLStreamException e) {

+            throw new AxisFault(e);

+        } catch (FactoryConfigurationError factoryConfigurationError) {

+            throw new AxisFault(factoryConfigurationError);

+        }

+        Options options = new Options();

+        options.setTo(targetEPR);

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        ConfigurationContext configContext =

+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);

+        RPCServiceClient sender = new RPCServiceClient(configContext, null);

+        sender.setOptions(options);

+

+        OMElement elem = sender.sendReceive(staxOMBuilder.getDocumentElement());

+        assertEquals("4", elem.getFirstElement().getText());

+    }

+

+    private OMElement getpayLoad() throws AxisFault {

+        String str = "<req:handleArrayList xmlns:req=\"http://rpc.axis2.apache.org/xsd\">\n" +

+                "  <arg0>\n" +

+                "    <item0>abc</item0>\n" +

+                "    <item0>def</item0>\n" +

+                "    <item0>ghi</item0>\n" +

+                "    <item0>klm</item0>\n" +

+                "  </arg0><arg1>10</arg1>" +

+                "</req:handleArrayList>";

+        StAXOMBuilder staxOMBuilder;

+        try {

+            XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new

+                    ByteArrayInputStream(str.getBytes()));

+            OMFactory fac = OMAbstractFactory.getOMFactory();

+

+            staxOMBuilder = new

+                    StAXOMBuilder(fac, xmlReader);

+        } catch (XMLStreamException e) {

+            throw new AxisFault(e);

+        } catch (FactoryConfigurationError factoryConfigurationError) {

+            throw new AxisFault(factoryConfigurationError);

+        }

+        return staxOMBuilder.getDocumentElement();

+    }

+

+

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/RPCServiceClass.java b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/RPCServiceClass.java
new file mode 100644
index 0000000..fdeca4c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/rpc/RPCServiceClass.java
@@ -0,0 +1,202 @@
+/**

+ * Copyright 2004,2005 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.axis2.rpc;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.engine.DefaultObjectSupplier;

+import org.apache.axis2.databinding.utils.BeanUtil;

+

+import javax.xml.stream.XMLStreamException;

+import java.util.ArrayList;

+import java.util.Calendar;

+import java.util.Date;

+

+public class RPCServiceClass {

+

+    public MyBean editBean(MyBean bean, int a) {

+        bean.setAge(a);

+        return bean;

+    }

+

+

+    public MyBean echoBean(MyBean bean) {

+        return bean;

+    }

+

+    public String echoString(String in) {

+        return in;

+    }

+

+    public int echoInt(int i) {

+        return i;

+    }

+

+    public int add(int a, int b) {

+        return a + b;

+    }

+

+    public boolean echoBool(boolean b) {

+        return b;

+    }

+

+    public byte echoByte(byte b) {

+        return b;

+    }

+

+    public OMElement echoOM(OMElement b) {

+        b.build();

+//        SOAPFactory fac = OMAbstractFactory.getSOAP12Factory();

+//        OMNamespace ns = fac.createOMNamespace(

+//                "http://soapenc/", "res");

+//        OMElement bodyContent = fac.createOMElement(

+//                "echoOMResponse", ns);

+//        OMElement child = fac.createOMElement("return", null);

+//        child.addChild(fac.createOMText(child, b.getText()));

+//        bodyContent.addChild(child);

+////        bodyContent.addChild(b);

+        return (OMElement) b.detach();

+    }

+

+    public double divide(double a, double b) {

+        return (a / b);

+    }

+

+    public Calendar echoCalander(Calendar in) {

+        return in;

+    }

+

+    public OMElement multireturn(OMElement ele) throws XMLStreamException {

+        SOAPFactory fac = OMAbstractFactory.getSOAP12Factory();

+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "res");

+        OMElement method = fac.createOMElement("multiretuenResponse", omNs);

+        OMElement value1 = fac.createOMElement("return0", null);

+        value1.addChild(

+                fac.createOMText(value1, "10"));

+        method.addChild(value1);

+        OMElement value2 = fac.createOMElement("return1", null);

+        value2.addChild(

+                fac.createOMText(value2, "foo"));

+        method.addChild(value2);

+        return method;

+    }

+

+

+    /**

+     * This methods return mutiple object , so it creat an Object array and retuen that

+     * so , if a method want to return mutiple value , this way can be used

+     *

+     * @param obj

+     * @return Object []

+     */

+    public Object[] mulReturn(OMElement obj) {

+        ArrayList objs = new ArrayList();

+        objs.add(new Integer(100));

+        MyBean bean = new MyBean();

+        bean.setAge(100);

+        bean.setName("Deepal");

+        bean.setValue(false);

+        AddressBean ab = new AddressBean();

+        ab.setNumber(1010);

+        ab.setTown("Colombo3");

+        bean.setAddress(ab);

+        objs.add(bean);

+        return objs.toArray();

+    }

+

+    public MyBean beanOM(OMElement element, int val) throws AxisFault {

+        MyBean bean = (MyBean) BeanUtil.deserialize(MyBean.class, element , new DefaultObjectSupplier(), null);

+        bean.setAge(val);

+        return bean;

+    }

+

+    public boolean omrefs(OMElement element, OMElement element2) throws AxisFault {

+        MyBean bean = (MyBean) BeanUtil.deserialize(MyBean.class, element , new DefaultObjectSupplier(), null);

+        MyBean bean2 = (MyBean) BeanUtil.deserialize(MyBean.class, element2 , new DefaultObjectSupplier(), null);

+        return bean2 != null && bean != null;

+    }

+

+    public String handleArrayList(ArrayList list, int b) {

+        String str = "";

+        for (int i = 0; i < list.size(); i++) {

+            Object obj = list.get(i);

+            if (obj instanceof OMElement) {

+                OMElement omElement = (OMElement) obj;

+                str = str + omElement.getText();

+            }

+        }

+        return str + b;

+    }

+

+    public Employee echoEmployee(Employee em) {

+        return em;

+    }

+

+    public int testCompanyArray(Company [] com) {

+        return com.length;

+    }

+

+    public Company [] CompanyArray(Company [] com) {

+        ArrayList res = new ArrayList();

+        for (int i = 0; i < com.length; i++) {

+            Company company = com[i];

+            res.add(company);

+        }

+        return (Company []) res.toArray(new Company[res.size()]);

+    }

+

+

+    public Company echoCompany(Company com) throws AxisFault {

+        ArrayList pss = com.getPersons();

+        ArrayList tems = new ArrayList();

+        for (int i = 0; i < pss.size(); i++) {

+            OMElement omElement = (OMElement) pss.get(i);

+            Person p = (Person) BeanUtil.deserialize(Person.class, omElement  , new DefaultObjectSupplier(), null);

+            tems.add(p);

+        }

+        com.setPersons(tems);

+        return com;

+    }

+

+    public void handlAnyThing(String value1, int abc, Date date) {

+

+    }

+

+    public boolean handleStringArray(String [] value) {

+        return value.length > 0;

+    }

+

+    public int omElementArray(OMElement [] omElement) {

+        return omElement.length;

+    }

+

+    public Mail echoMail(Mail mail) {

+        return mail;

+    }

+

+    public int multiArrays(String [] a, String b [], String d [], int c) {

+        return a.length + b.length + d.length + c;

+    }

+

+    public String testByteArray(byte [] value) {

+        return new String(value);

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/AddressingMTOMSecurityTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/AddressingMTOMSecurityTest.java
new file mode 100644
index 0000000..6136cdb
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/AddressingMTOMSecurityTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+
+public class AddressingMTOMSecurityTest extends InteropTestBase {
+
+    protected OutflowConfiguration getOutflowConfiguration() {
+
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("Timestamp Signature Encrypt");
+        ofc.setUser("alice");
+        ofc.setEncryptionUser("bob");
+        ofc.setSignaturePropFile("interop.properties");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setSignatureParts("{Element}{" + ADDR_NS + "}To;" +
+                                "{Element}{" + ADDR_NS + "}ReplyTo;" +
+                                "{Element}{" + ADDR_NS + "}MessageID;" +
+                                "{Element}{" + WSU_NS + "}Timestamp");
+        ofc.setOptimizeParts(
+                "//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue");
+
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Timestamp Signature Encrypt");
+        ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ifc.setSignaturePropFile("interop.properties");
+
+        return ifc;
+    }
+
+    protected String getClientRepo() {
+        return COMPLETE_CLIENT_REPOSITORY;
+    }
+
+    protected String getServiceRepo() {
+        return COMPLETE_SERVICE_REPOSITORY;
+    }
+
+    protected boolean isUseSOAP12InStaticConfigTest() {
+        return true;
+    }
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("Timestamp Signature Encrypt");
+        ofc.setUser("alice");
+        ofc.setEncryptionUser("bob");
+        ofc.setSignaturePropRefId("key1");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setSignatureParts("{Element}{" + ADDR_NS + "}To;" +
+                                "{Element}{" + ADDR_NS + "}ReplyTo;" +
+                                "{Element}{" + ADDR_NS + "}MessageID;" +
+                                "{Element}{" + WSU_NS + "}Timestamp");
+        ofc.setOptimizeParts(
+                "//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue");
+
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Timestamp Signature Encrypt");
+        ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ifc.setSignaturePropRefId("key2");
+
+        return ifc;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+
+        Properties prop2 =  new Properties();
+        prop2.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        table.put("key2", prop2);
+        
+        return table;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/InteropTestBase.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/InteropTestBase.java
new file mode 100644
index 0000000..053923a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/InteropTestBase.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.security.WSConstants;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.Hashtable;
+
+import junit.framework.TestCase;
+
+public abstract class InteropTestBase extends TestCase {
+
+    protected static final String SCENARIO1_SERVICE_REPOSITORY =
+            "scenario1_service_repo";
+
+    protected static final String SCENARIO1_CLIENT_REPOSITORY =
+            "scenario1_client_repo";
+
+    protected static final String SCENARIO2_SERVICE_REPOSITORY =
+            "scenario2_service_repo";
+
+    protected static final String SCENARIO2_CLIENT_REPOSITORY =
+            "scenario2_client_repo";
+
+    protected static final String SCENARIO2a_SERVICE_REPOSITORY =
+            "scenario2a_service_repo";
+
+    protected static final String SCENARIO2a_CLIENT_REPOSITORY =
+            "scenario2a_client_repo";
+
+    protected static final String SCENARIO3_SERVICE_REPOSITORY =
+            "scenario3_service_repo";
+
+    protected static final String SCENARIO3_CLIENT_REPOSITORY =
+            "scenario3_client_repo";
+
+    protected static final String SCENARIO4_SERVICE_REPOSITORY =
+            "scenario4_service_repo";
+
+    protected static final String SCENARIO4_CLIENT_REPOSITORY =
+            "scenario4_client_repo";
+
+    protected static final String SCENARIO5_SERVICE_REPOSITORY =
+            "scenario5_service_repo";
+
+    protected static final String SCENARIO5_CLIENT_REPOSITORY =
+            "scenario5_client_repo";
+
+    protected static final String SCENARIO6_SERVICE_REPOSITORY =
+            "scenario6_service_repo";
+
+    protected static final String SCENARIO6_CLIENT_REPOSITORY =
+            "scenario6_client_repo";
+
+    protected static final String SCENARIO7_SERVICE_REPOSITORY =
+            "scenario7_service_repo";
+
+    protected static final String SCENARIO7_CLIENT_REPOSITORY =
+            "scenario7_client_repo";
+
+    protected static final String SCENARIO_ST1_SERVICE_REPOSITORY =
+            "scenarioST1_service_repo";
+
+    protected static final String SCENARIO_ST1_CLIENT_REPOSITORY =
+            "scenarioST1_client_repo";
+
+    protected static final String SCENARIO_ST3_SERVICE_REPOSITORY =
+            "scenarioST3_service_repo";
+
+    protected static final String SCENARIO_ST3_CLIENT_REPOSITORY =
+            "scenarioST3_client_repo";
+
+    protected static final String SCENARIO_ST4_SERVICE_REPOSITORY =
+            "scenarioST4_service_repo";
+
+    protected static final String SCENARIO_ST4_CLIENT_REPOSITORY =
+            "scenarioST4_client_repo";
+
+    protected static final String MTOM_SEC_SERVICE_REPOSITORY =
+            "mtom_sec_service_repo";
+
+    protected static final String MTOM_SEC_CLIENT_REPOSITORY =
+            "mtom_sec_client_repo";
+
+    protected static final String COMPLETE_SERVICE_REPOSITORY =
+            "complete_service_repo";
+
+    protected static final String COMPLETE_CLIENT_REPOSITORY =
+            "complete_client_repo";
+
+    protected static final String DEFAULT_CLIENT_REPOSITORY =
+            "default_security_client_repo";
+
+    protected static final String WSSE_NS = WSConstants.WSSE_NS;
+
+    protected static final String WSU_NS = WSConstants.WSU_NS;
+
+    protected static final String ADDR_NS =
+            AddressingConstants.Final.WSA_NAMESPACE;
+
+    private String targetEpr = "http://127.0.0.1:" +
+//            5556 +
+            UtilServer.TESTING_PORT +
+            "/axis2/services/PingPort";
+
+    public InteropTestBase() {
+        super();
+    }
+
+    public InteropTestBase(String arg0) {
+        super(arg0);
+    }
+
+    /**
+     * Each time an interop test is run the relevant service will be started
+     * with the given service repository
+     * <p/>
+     * set up the service
+     */
+    protected void setUp() throws Exception {
+        UtilServer.start(Constants.TESTING_PATH + getServiceRepo());
+    }
+
+    /**
+     * Cleanup
+     */
+    protected void tearDown() throws Exception {
+        UtilServer.stop();
+    }
+
+    /**
+     * Do test
+     */
+    public void testInteropWithConfigFiles() {
+        try {
+            Class interopScenarioClientClass = Class
+                    .forName("org.apache.axis2.security.InteropScenarioClient");
+            Constructor c = interopScenarioClientClass
+                    .getConstructor(new Class[]{boolean.class});
+            Object clientObj = c.newInstance(new Object[]{this
+                    .isUseSOAP12InStaticConfigTest() ? Boolean.TRUE
+                    : Boolean.FALSE});
+            Method m = interopScenarioClientClass.getMethod(
+                    "invokeWithStaticConfig", new Class[]{String.class,
+                    String.class});
+            m.invoke(clientObj, new Object[]{
+                    Constants.TESTING_PATH + getClientRepo(), targetEpr});
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Error in introperating with " + targetEpr
+                    + ", client configuration: " + getClientRepo());
+        }
+    }
+
+    public void testInteropWithDynamicConfig() {
+        try {
+            Class interopScenarioClientClass = Class
+                    .forName("org.apache.axis2.security.InteropScenarioClient");
+            Constructor c = interopScenarioClientClass
+                    .getConstructor(new Class[]{boolean.class});
+            Object clientObj = c.newInstance(new Object[]{this
+                    .isUseSOAP12InStaticConfigTest() ? Boolean.TRUE
+                    : Boolean.FALSE});
+            Method m = interopScenarioClientClass.getMethod(
+                    "invokeWithGivenConfig", new Class[]{String.class,
+                    String.class, OutflowConfiguration.class,
+                    InflowConfiguration.class});
+            m.invoke(clientObj, new Object[]{
+                    Constants.TESTING_PATH + DEFAULT_CLIENT_REPOSITORY,
+                    targetEpr, getOutflowConfiguration(),
+                    getInflowConfiguration()});
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Error in introperating with " + targetEpr
+                    + ", client configuration: " + getClientRepo());
+        }
+
+    }
+
+    public void testInteropWithDynamicConfigWithProfRefs() {
+        if(getPropertyRefs() != null) {
+            try {
+    
+                Class interopScenarioClientClass = Class
+                        .forName("org.apache.axis2.security.InteropScenarioClient");
+                Constructor c = interopScenarioClientClass
+                        .getConstructor(new Class[]{boolean.class});
+                Object clientObj = c.newInstance(new Object[]{this
+                        .isUseSOAP12InStaticConfigTest() ? Boolean.TRUE
+                        : Boolean.FALSE});
+                Method m = interopScenarioClientClass.getMethod(
+                        "invokeWithGivenConfigWithProRefs", new Class[]{
+                        String.class,
+                        String.class, OutflowConfiguration.class,
+                        InflowConfiguration.class, Hashtable.class});
+                m.invoke(clientObj, new Object[]{
+                        Constants.TESTING_PATH + DEFAULT_CLIENT_REPOSITORY,
+                        targetEpr, getOutflowConfigurationWithRefs(),
+                        getInflowConfigurationWithRefs(),
+                        getPropertyRefs()});
+            } catch (Exception e) {
+                e.printStackTrace();
+                fail("Error in introperating with " + targetEpr
+                        + ", client configuration: " + getClientRepo());
+            }
+        }
+    }
+    
+    protected abstract OutflowConfiguration getOutflowConfiguration();
+
+    protected abstract InflowConfiguration getInflowConfiguration();
+
+    protected abstract OutflowConfiguration getOutflowConfigurationWithRefs();
+
+    protected abstract InflowConfiguration getInflowConfigurationWithRefs();
+    
+    protected abstract Hashtable getPropertyRefs();
+    
+    protected abstract String getClientRepo();
+
+    protected abstract String getServiceRepo();
+
+    protected abstract boolean isUseSOAP12InStaticConfigTest();
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/MTOMOptimizedSecurityTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/MTOMOptimizedSecurityTest.java
new file mode 100644
index 0000000..da1f2b1
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/MTOMOptimizedSecurityTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+
+/**
+ * Testing optimizing the base 64 elements with 
+ * <code><parameter name="optimizeParts" locked="false">//xenc:Encrypted
+ * Data/xenc:CipherData/xenc:CipherValue</parameter></code>
+ */
+public class MTOMOptimizedSecurityTest extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration();
+		
+		ofc.setActionItems("Signature Encrypt Timestamp");
+		ofc.setUser("alice");
+		ofc.setEncryptionUser("bob");
+		ofc.setSignaturePropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+		ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+		ofc.setOptimizeParts("//xenc:EncryptedData/xenc:CipherData/" +
+                             "xenc:CipherValue");
+		
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		InflowConfiguration ifc = new InflowConfiguration();
+		
+		ifc.setActionItems("Signature Encrypt Timestamp");
+		ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ifc.setSignaturePropFile("interop.properties");
+		
+		return ifc;
+	}
+
+	protected String getClientRepo() {
+		return MTOM_SEC_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return MTOM_SEC_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return true;
+	}
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+        
+        ofc.setActionItems("Signature Encrypt Timestamp");
+        ofc.setUser("alice");
+        ofc.setEncryptionUser("bob");
+        ofc.setSignaturePropRefId("key1");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setOptimizeParts("//xenc:EncryptedData/xenc:CipherData/" +
+                             "xenc:CipherValue");
+        
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        InflowConfiguration ifc = new InflowConfiguration();
+        
+        ifc.setActionItems("Signature Encrypt Timestamp");
+        ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ifc.setSignaturePropRefId("key2");
+        
+        return ifc;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+
+        Properties prop2 =  new Properties();
+        prop2.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        table.put("key2", prop2);
+        
+        return table;
+    }
+	
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario1Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario1Test.java
new file mode 100644
index 0000000..62b18f7
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario1Test.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+import java.util.Hashtable;
+
+
+/**
+ * WS-Security interop scenario 1
+ */
+public class Scenario1Test extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration();
+		ofc.setActionItems("UsernameToken");
+		ofc.setUser("Chris");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setPasswordType("PasswordText");
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		return null;
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO1_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO1_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return true;
+	}
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        return null;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        return null;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        return null;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario2Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario2Test.java
new file mode 100644
index 0000000..be09ce0
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario2Test.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.security.WSConstants;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+/**
+ * WS-Security inteorp scenario 2
+ */
+public class Scenario2Test extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration();
+		
+		ofc.setActionItems("UsernameToken Encrypt");
+		ofc.setUser("Chris");
+		ofc.setAddUTElements("Nonce Created");
+		ofc.setEncryptionParts("{Element}{" + WSSE_NS + "}UsernameToken");
+		ofc.setEncryptionUser("bob");
+		ofc.setEncryptionPropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+		ofc.setPasswordType(WSConstants.PW_TEXT);
+		ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+		
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		return null;
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO2_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO2_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return true;
+	}
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.security.InteropTestBase#getOutflowConfigurationWithRefs()
+     */
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+        
+        ofc.setActionItems("UsernameToken Encrypt");
+        ofc.setUser("Chris");
+        ofc.setAddUTElements("Nonce Created");
+        ofc.setEncryptionParts("{Element}{" + WSSE_NS + "}UsernameToken");
+        ofc.setEncryptionUser("bob");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+        ofc.setPasswordType(WSConstants.PW_TEXT);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        
+        ofc.setEncryptionPropRefId("key1");
+        
+        return ofc;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.security.InteropTestBase#getInflowConfigurationWithRefs()
+     */
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        return null;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        
+        return table;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario2aTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario2aTest.java
new file mode 100644
index 0000000..230f483
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario2aTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.security.WSConstants;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+
+/**
+ * WS-Security interop scenario 2a
+ */
+public class Scenario2aTest extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration();
+		
+		ofc.setActionItems("UsernameTokenSignature Encrypt Timestamp");
+		ofc.setUser("Chris");
+		ofc.setEncryptionParts("{Element}{" + WSSE_NS + "}UsernameToken");
+		ofc.setEncryptionUser("bob");
+		ofc.setEncryptionPropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+		ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+		
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		return null;
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO2a_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO2a_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return true;
+	}
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+        
+        ofc.setActionItems("UsernameTokenSignature Encrypt Timestamp");
+        ofc.setUser("Chris");
+        ofc.setEncryptionParts("{Element}{" + WSSE_NS + "}UsernameToken");
+        ofc.setEncryptionUser("bob");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        
+        ofc.setEncryptionPropRefId("key1");
+        
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        return null;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        
+        return table;
+        
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario3Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario3Test.java
new file mode 100644
index 0000000..259c4e4
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario3Test.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.security.WSConstants;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+/**
+ * WS-Security interop scenario 3
+ */
+public class Scenario3Test extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration();
+		
+		ofc.setActionItems("Signature Encrypt Timestamp");
+		ofc.setUser("alice");
+		ofc.setEncryptionUser("bob");
+		ofc.setSignaturePropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+		ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+		ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+		ofc.setEnableSignatureConfirmation(false);
+		
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		InflowConfiguration ifc = new InflowConfiguration();
+		ifc.setActionItems("Signature Encrypt Timestamp");
+		ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ifc.setSignaturePropFile("interop.properties");
+		ifc.setEnableSignatureConfirmation(false);
+		return ifc;
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO3_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO3_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return true;
+	}
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+        
+        ofc.setActionItems("Signature Encrypt Timestamp");
+        ofc.setUser("alice");
+        ofc.setEncryptionUser("bob");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+        ofc.setEnableSignatureConfirmation(false);
+        
+        ofc.setSignaturePropRefId("key1");
+        
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        InflowConfiguration ifc = new InflowConfiguration();
+        ifc.setActionItems("Signature Encrypt Timestamp");
+        ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ifc.setEnableSignatureConfirmation(false);
+        
+        ifc.setSignaturePropRefId("key2");
+        
+        return ifc;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+
+        Properties prop2 =  new Properties();
+        prop2.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        table.put("key2", prop2);
+        
+        return table;
+    }
+
+	
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario4Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario4Test.java
new file mode 100644
index 0000000..ce42cd8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario4Test.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.security.WSConstants;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+/**
+ * WS-Security interop scenario 4
+ */
+public class Scenario4Test extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration();
+		
+		ofc.setActionItems("Signature Encrypt Timestamp");
+		ofc.setUser("alice");
+		ofc.setSignaturePropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+		ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.EMBEDDED_KEYNAME);
+		ofc.setEmbeddedKeyName("SessionKey");
+		ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+		ofc.setEmbeddedKeyCallbackClass("org.apache.axis2.security.PWCallback");
+		
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		InflowConfiguration ifc = new InflowConfiguration();
+		
+		ifc.setActionItems("Signature Encrypt Timestamp");
+		ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ifc.setSignaturePropFile("interop.properties");
+		
+		return ifc;
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO4_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO4_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return true;
+	}
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+        
+        ofc.setActionItems("Signature Encrypt Timestamp");
+        ofc.setUser("alice");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.EMBEDDED_KEYNAME);
+        ofc.setEmbeddedKeyName("SessionKey");
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+        ofc.setEmbeddedKeyCallbackClass("org.apache.axis2.security.PWCallback");
+
+        ofc.setSignaturePropRefId("key1");
+        
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        InflowConfiguration ifc = new InflowConfiguration();
+        
+        ifc.setActionItems("Signature Encrypt Timestamp");
+        ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        
+        ifc.setSignaturePropRefId("key2");
+        
+        return ifc;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+
+        Properties prop2 =  new Properties();
+        prop2.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        table.put("key2", prop2);
+        
+        return table;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario5Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario5Test.java
new file mode 100644
index 0000000..90434ec
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario5Test.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+/**
+ * WS-Security interop scenario 5
+ */
+public class Scenario5Test extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration(2);
+		
+		ofc.setActionItems("Signature NoSerialization");
+		ofc.setUser("alice");
+		ofc.setSignaturePropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+		ofc.setSignatureParts("{}{http://xmlsoap.org/Ping}ticket");
+		
+		ofc.nextAction();
+		
+		ofc.setActionItems("Signature Timestamp");
+		ofc.setUser("alice");
+		ofc.setSignaturePropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		return null;
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO5_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO5_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return true;
+	}
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        OutflowConfiguration ofc = new OutflowConfiguration(2);
+        
+        ofc.setActionItems("Signature NoSerialization");
+        ofc.setUser("alice");
+        ofc.setSignaturePropRefId("key1");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+        ofc.setSignatureParts("{}{http://xmlsoap.org/Ping}ticket");
+        
+        ofc.nextAction();
+        
+        ofc.setActionItems("Signature Timestamp");
+        ofc.setUser("alice");
+        ofc.setSignaturePropRefId("key2");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        return null;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+
+        Properties prop2 =  new Properties();
+        prop2.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        
+        //IMPORTANT: Note that the key of the first repetition has "1" appended to it
+        table.put("key21", prop2);
+        
+        return table;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario6Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario6Test.java
new file mode 100644
index 0000000..3a5033d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario6Test.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.security.WSConstants;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+/**
+ * WS-Security interop scenario 6
+ */
+public class Scenario6Test extends InteropTestBase {
+	
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration();
+		
+		ofc.setActionItems("Encrypt Signature Timestamp");
+		ofc.setUser("alice");
+		ofc.setSignaturePropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+		ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+		ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+		ofc.setEmbeddedKeyCallbackClass("rg.apache.axis2.security.PWCallback");
+		
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		InflowConfiguration ifc = new InflowConfiguration();
+		
+		ifc.setActionItems("Encrypt Signature Timestamp");
+		ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ifc.setSignaturePropFile("interop.properties");
+		
+		return ifc;
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO6_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO6_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return true;
+	}
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+        
+        ofc.setActionItems("Encrypt Signature Timestamp");
+        ofc.setUser("alice");
+        ofc.setSignaturePropRefId("key1");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setEmbeddedKeyCallbackClass("rg.apache.axis2.security.PWCallback");
+        
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        InflowConfiguration ifc = new InflowConfiguration();
+        
+        ifc.setActionItems("Encrypt Signature Timestamp");
+        ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ifc.setSignaturePropRefId("key2");
+        
+        return ifc;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+
+        Properties prop2 =  new Properties();
+        prop2.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        table.put("key2", prop2);
+        
+        return table;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario7Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario7Test.java
new file mode 100644
index 0000000..350b8d2
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/Scenario7Test.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.security.WSConstants;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+/**
+ * WS-Security interop scenario 7
+ */
+public class Scenario7Test extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		OutflowConfiguration ofc = new OutflowConfiguration();
+		
+		ofc.setActionItems("Signature Encrypt Timestamp");
+		ofc.setUser("alice");
+		ofc.setEncryptionUser("bob");
+		ofc.setSignaturePropFile("interop.properties");
+		ofc.setEncryptionPropFile("interop.properties");
+		ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+		ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+		ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+		ofc.setEmbeddedKeyCallbackClass("rg.apache.axis2.security.PWCallback");
+		ofc.setSignatureParts("{}{" + 
+                                SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI + 
+                                "}Body;STRTransform");
+		
+		return ofc;
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		InflowConfiguration ifc = new InflowConfiguration();
+		
+		ifc.setActionItems("Signature Encrypt Timestamp");
+		ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+		ifc.setSignaturePropFile("interop.properties");
+		ifc.setDecryptionPropFile("interop.properties");
+		
+		return ifc;
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO7_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO7_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		return false;
+	}
+
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+        
+        ofc.setActionItems("Signature Encrypt Timestamp");
+        ofc.setUser("alice");
+        ofc.setEncryptionUser("bob");
+        ofc.setSignaturePropRefId("key1");
+        ofc.setEncryptionPropRefId("key2");
+        ofc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ofc.setEncryptionSymAlgorithm(WSConstants.TRIPLE_DES);
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setEmbeddedKeyCallbackClass("rg.apache.axis2.security.PWCallback");
+        ofc.setSignatureParts("{}{" + 
+                                SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI + 
+                                "}Body;STRTransform");
+        
+        return ofc;
+    }
+
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        InflowConfiguration ifc = new InflowConfiguration();
+        
+        ifc.setActionItems("Signature Encrypt Timestamp");
+        ifc.setPasswordCallbackClass("org.apache.axis2.security.PWCallback");
+        ifc.setSignaturePropRefId("key3");
+        ifc.setDecryptionPropRefKey("key4");
+        
+        return ifc;
+    }
+
+    protected Hashtable getPropertyRefs() {
+        Properties prop1 =  new Properties();
+        prop1.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop1.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+
+        Properties prop2 =  new Properties();
+        prop2.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop2.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Properties prop3 =  new Properties();
+        prop3.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop3.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop3.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop3.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+
+        Properties prop4 =  new Properties();
+        prop4.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
+        prop4.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
+        prop4.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "password");
+        prop4.setProperty("org.apache.ws.security.crypto.merlin.file", "interop2.jks");
+        
+        Hashtable table = new Hashtable();
+        table.put("key1", prop1);
+        table.put("key2", prop2);
+        table.put("key3", prop3);
+        table.put("key4", prop4);
+        
+        return table;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/ScenarioST1Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/ScenarioST1Test.java
new file mode 100644
index 0000000..a0d81d7
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/ScenarioST1Test.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+import java.util.Hashtable;
+
+/**
+ * SAML Scenario 1
+ */
+public class ScenarioST1Test extends InteropTestBase {
+
+	protected OutflowConfiguration getOutflowConfiguration() {
+		// TODO 
+		throw new UnsupportedOperationException("TODO");
+	}
+
+	protected InflowConfiguration getInflowConfiguration() {
+		// TODO 
+		throw new UnsupportedOperationException("TODO");
+	}
+
+	protected String getClientRepo() {
+		return SCENARIO_ST1_CLIENT_REPOSITORY;
+	}
+
+	protected String getServiceRepo() {
+		return SCENARIO_ST1_SERVICE_REPOSITORY;
+	}
+
+	protected boolean isUseSOAP12InStaticConfigTest() {
+		// TODO TODO
+		throw new UnsupportedOperationException("TODO");
+	}
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.security.InteropTestBase#getOutflowConfigurationWithRefs()
+     */
+    protected OutflowConfiguration getOutflowConfigurationWithRefs() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.security.InteropTestBase#getInflowConfigurationWithRefs()
+     */
+    protected InflowConfiguration getInflowConfigurationWithRefs() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.security.InteropTestBase#getPropertyRefs()
+     */
+    protected Hashtable getPropertyRefs() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario1Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario1Test.java
new file mode 100644
index 0000000..5947fda
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario1Test.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004,2005 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.axis2.security.sc;
+
+import org.apache.axis2.description.Parameter;
+import org.apache.rampart.conversation.ConversationConfiguration;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+/**
+ * The RequestedProofToken is an EncryptedKey
+ * which holds the secret of security context.
+ */
+public class ConversationScenario1Test extends TestClient {
+
+    /**
+     * @param name
+     */
+    public ConversationScenario1Test(String name) {
+        super(name);
+    }
+
+    public Parameter getClientConversationConfiguration() {
+        ConversationConfiguration config = new ConversationConfiguration();
+
+        config.setCryptoPropertiesFile("sec.properties");
+        config.setScope(ConversationConfiguration.SCOPE_SERVICE);
+        config.setPasswordCallbackClass(PWCallback.class.getName());
+        config.setStsEPRAddress("http://localhost:" + port + "/axis2/services/SecureService");
+
+        return config.getParameter();
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("Timestamp Signature");
+        ofc.setUser("alice");
+        ofc.setSignaturePropFile("sec.properties");
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Timestamp Signature Encrypt");
+        ifc.setPasswordCallbackClass(PWCallback.class.getName());
+        ifc.setSignaturePropFile("sec.properties");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "sc_service_repo_1";
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario2Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario2Test.java
new file mode 100644
index 0000000..1e29cfb
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario2Test.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 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.axis2.security.sc;
+
+/**
+ * The RSTR will hold a  RequestedProofToken with a base64 encoded 
+ * secret held in a BinarySecret element.
+ */
+public class ConversationScenario2Test extends ConversationScenario1Test {
+
+    public ConversationScenario2Test(String name) {
+        super(name);
+    }
+
+    public String getServiceRepo() {
+        return "sc_service_repo_2";
+    }
+
+    
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario3Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario3Test.java
new file mode 100644
index 0000000..22b1d73
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario3Test.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2004,2005 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.axis2.security.sc;
+
+import org.apache.axis2.description.Parameter;
+import org.apache.rampart.conversation.ConversationConfiguration;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+/**
+ * This tests security context establishment when there's no STS involved.
+ * Note that we are not setting the STS endpoint address in the rahas config.
+ * 
+ * The client side rahas outflow handler will create the RSTR with the SCT
+ * and RPT with a secret in a EncryptedKey and will send it over to the service.
+ */
+public class ConversationScenario3Test extends TestClient {
+
+    public ConversationScenario3Test(String name) {
+        super(name);
+    }
+
+    public Parameter getClientConversationConfiguration() {
+        ConversationConfiguration config = new ConversationConfiguration();
+
+        config.setCryptoPropertiesFile("sec.properties");
+        config.setScope(ConversationConfiguration.SCOPE_SERVICE);
+        config.setPasswordCallbackClass(PWCallback.class.getName());
+        config.setEncryptionUser("sts");
+
+        return config.getParameter();
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        return null;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        return null;
+    }
+
+    public String getServiceRepo() {
+        return "sc_service_repo_3";
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario4Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario4Test.java
new file mode 100644
index 0000000..d98ea88
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/ConversationScenario4Test.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2004,2005 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.axis2.security.sc;
+
+import org.apache.axis2.description.Parameter;
+import org.apache.rampart.conversation.ConversationConfiguration;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+/**
+ * This tests the use computed keys when the requester provides entropy
+ */
+public class ConversationScenario4Test extends TestClient {
+
+    public ConversationScenario4Test(String name) {
+        super(name);
+        // TODO Auto-generated constructor stub
+    }
+
+    public Parameter getClientConversationConfiguration() {
+        ConversationConfiguration config = new ConversationConfiguration();
+
+        config.setCryptoPropertiesFile("sec.properties");
+        config.setScope(ConversationConfiguration.SCOPE_SERVICE);
+        config.setPasswordCallbackClass(PWCallback.class.getName());
+        config.setProvideEntropy(true);
+        config.setStsEPRAddress("http://localhost:" + port + "/axis2/services/SecureService");
+
+        return config.getParameter();
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("Timestamp Signature");
+        ofc.setUser("alice");
+        ofc.setSignaturePropFile("sec.properties");
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Timestamp Signature Encrypt");
+        ifc.setPasswordCallbackClass(PWCallback.class.getName());
+        ifc.setSignaturePropFile("sec.properties");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "sc_service_repo_4";
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/PWCallback.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/PWCallback.java
new file mode 100755
index 0000000..2b4b845
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/PWCallback.java
@@ -0,0 +1,187 @@
+package org.apache.axis2.security.sc;
+/*
+* Copyright 2004,2005 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 org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import java.io.IOException;
+
+
+
+/**
+
+ * Class PWCallback
+
+ */
+
+public class PWCallback implements CallbackHandler {
+
+
+
+    /** Field key */
+
+    private static final byte[] key = {
+
+        (byte) 0x31, (byte) 0xfd, (byte) 0xcb, (byte) 0xda, (byte) 0xfb,
+
+        (byte) 0xcd, (byte) 0x6b, (byte) 0xa8, (byte) 0xe6, (byte) 0x19,
+
+        (byte) 0xa7, (byte) 0xbf, (byte) 0x51, (byte) 0xf7, (byte) 0xc7,
+
+        (byte) 0x3e, (byte) 0x80, (byte) 0xae, (byte) 0x98, (byte) 0x51,
+
+        (byte) 0xc8, (byte) 0x51, (byte) 0x34, (byte) 0x04,
+
+    };
+
+
+
+    /*
+
+     * (non-Javadoc)
+
+     * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
+
+     */
+
+
+
+    /**
+
+     * Method handle
+
+     * 
+
+     * @param callbacks 
+
+     * @throws java.io.IOException                  
+
+     * @throws javax.security.auth.callback.UnsupportedCallbackException 
+
+     */
+
+    public void handle(Callback[] callbacks)
+
+            throws IOException, UnsupportedCallbackException {
+
+
+
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+
+
+
+                /*
+
+                 * This usage type is used only in case we received a
+
+                 * username token with a password of type PasswordText or
+
+                 * an unknown password type.
+
+                 * 
+
+                 * This case the WSPasswordCallback object contains the
+
+                 * identifier (aka username), the password we received, and
+
+                 * the password type string to identify the type.
+
+                 * 
+
+                 * Here we perform only a very simple check.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+
+                	if(pc.getIdentifer().equals("Ron") && pc.getPassword().equals("noR")) {
+
+                        return;
+
+                	}
+
+                    if (pc.getPassword().equals("sirhC")) {
+
+                        return;
+
+                    }               	
+
+                    throw new UnsupportedCallbackException(callbacks[i],
+
+                    "check failed");
+
+                }
+
+                /*
+
+                 * here call a function/method to lookup the password for
+
+                 * the given identifier (e.g. a user name or keystore alias)
+
+                 * e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier))
+
+                 * for Testing we supply a fixed name here.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.KEY_NAME) {
+
+                    pc.setKey(key);
+
+                } else if(pc.getIdentifer().equals("alice")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("bob")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("Ron")) {
+
+                    pc.setPassword("noR");
+
+                } else if(pc.getIdentifer().equals("sts")) {
+                    
+                    pc.setPassword("password");
+                    
+                } else {
+
+                    pc.setPassword("sirhC");
+
+                }
+
+            } else {
+
+                throw new UnsupportedCallbackException(callbacks[i],
+
+                        "Unrecognized Callback");
+
+            }
+
+        }
+
+    }
+
+}
+
+
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/Service.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/Service.java
new file mode 100644
index 0000000..c687406
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/Service.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004,2005 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.axis2.security.sc;
+import org.apache.axiom.om.OMElement;
+
+public class Service {
+
+	public OMElement echo(OMElement elem) {
+		elem.build();
+		elem.detach();
+        System.out.println("Service invoked");
+		return elem;
+	}
+	
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/TestClient.java b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/TestClient.java
new file mode 100644
index 0000000..5859966
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/security/sc/TestClient.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2004,2005 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.axis2.security.sc;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.rampart.conversation.ConversationConfiguration;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+public abstract class TestClient extends TestCase {
+    
+    private static final String AXIS2_ECHO_STRING = "Axis2 Echo String";
+    protected int port = UtilServer.TESTING_PORT;
+    
+    public TestClient(String name) {
+        super(name);
+    }
+
+    protected void setUp() throws Exception {
+        UtilServer.start(Constants.TESTING_PATH + getServiceRepo() ,null);
+    }
+    
+    protected void tearDown() throws Exception {
+        UtilServer.stop();
+    }
+
+    /**
+     * @param args
+     */
+    public void testConversation() {
+        try {
+
+            // Get the repository location from the args
+            String repo = Constants.TESTING_PATH + "sc_client_repo";
+
+            OMElement payload = getEchoElement();
+            ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo,
+                    null);
+            ServiceClient serviceClient = new ServiceClient(configContext, null);
+            Options options = new Options();
+            options.setTo(new EndpointReference("http://127.0.0.1:" + port + "/axis2/services/SecureService"));
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+
+            OutflowConfiguration clientOutflowConfiguration = getClientOutflowConfiguration();
+            if(clientOutflowConfiguration != null) {
+                options.setProperty(WSSHandlerConstants.STS_OUTFLOW_SECURITY, clientOutflowConfiguration.getProperty());
+            }
+            InflowConfiguration clientInflowConfiguration = getClientInflowConfiguration();
+            if(clientInflowConfiguration != null) {
+                options.setProperty(WSSHandlerConstants.STS_INFLOW_SECURITY, clientInflowConfiguration.getProperty());
+            }
+            options.setProperty(ConversationConfiguration.SC_CONFIG, getClientConversationConfiguration());
+
+            options.setAction("urn:echo");
+
+            serviceClient.engageModule(new QName("rampart"));
+
+            serviceClient.setOptions(options);
+
+            //Blocking invocation
+            serviceClient.sendReceive(payload);
+
+            serviceClient.sendReceive(getEchoElement());
+
+            OMElement result = serviceClient.sendReceive(getEchoElement());
+
+            assertTrue(result.toString().indexOf(AXIS2_ECHO_STRING) > 0);
+            System.out.println("SecureService Invocation successful :-)");
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+            fail(axisFault.getMessage());
+        }
+    }
+
+    private OMElement getEchoElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://example1.org/example1", "example1");
+        OMElement method = fac.createOMElement("echo", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createOMText(value, AXIS2_ECHO_STRING));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public abstract Parameter getClientConversationConfiguration();
+    
+    public abstract OutflowConfiguration getClientOutflowConfiguration();
+
+    public abstract InflowConfiguration getClientInflowConfiguration();
+    
+    public abstract String getServiceRepo();
+    
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/soap12testing/soap12testsuite/SOAP12Test.java b/rampart_1_1/modules/integration/test/org/apache/axis2/soap12testing/soap12testsuite/SOAP12Test.java
new file mode 100644
index 0000000..ed41536
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/soap12testing/soap12testsuite/SOAP12Test.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.soap12testsuite;
+
+import junit.framework.TestCase;
+import test.soap12testing.client.MessageComparator;
+import test.soap12testing.client.SOAP12TestClient;
+import test.soap12testing.server.SimpleServer;
+
+public class SOAP12Test extends TestCase {
+    private SimpleServer server;
+    private MessageComparator comparator;
+    private SOAP12TestClient client;
+
+    public SOAP12Test() {
+        server = new SimpleServer();
+        server.start();
+        comparator = new MessageComparator();
+        client = new SOAP12TestClient();
+    }
+
+    protected void setUp() {
+
+    }
+
+    public void testWithoutFaults() {
+
+        assertTrue("SOAP 1.2 Test : - Test No. 1  Failed", comparator.compare("1", client.getRelpy(8008,"SOAP12TestServiceC", "1")));
+        assertTrue("SOAP 1.2 Test : - Test No. 2  Failed", comparator.compare("2", client.getRelpy(8008,"SOAP12TestServiceC", "2")));
+        assertTrue("SOAP 1.2 Test : - Test No. 3  Failed", comparator.compare("3", client.getRelpy(8008,"SOAP12TestServiceC", "3")));
+        assertTrue("SOAP 1.2 Test : - Test No. 4  Failed", comparator.compare("4", client.getRelpy(8008,"SOAP12TestServiceC", "4")));
+        assertTrue("SOAP 1.2 Test : - Test No. 5  Failed", comparator.compare("5", client.getRelpy(8008,"SOAP12TestServiceC", "5")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 10  Failed", comparator.compare("10", client.getRelpy(8008,"SOAP12TestServiceC", "10")));
+        assertTrue("SOAP 1.2 Test : - Test No. 11  Failed", comparator.compare("11", client.getRelpy(8008,"SOAP12TestServiceC", "11")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 15  Failed", comparator.compare("15", client.getRelpy(8008,"SOAP12TestServiceC", "15")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 19  Failed", comparator.compare("19", client.getRelpy(8008,"SOAP12TestServiceC", "19")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 22  Failed", comparator.compare("22", client.getRelpy(8008,"SOAP12TestServiceC", "22")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 29  Failed", comparator.compare("29", client.getRelpy(8008,"SOAP12TestServiceC", "29")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 31  Failed", comparator.compare("31", client.getRelpy(8008,"SOAP12TestServiceC", "31")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 34  Failed", comparator.compare("34", client.getRelpy(8008,"SOAP12TestServiceC", "34")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 37  Failed", comparator.compare("37", client.getRelpy(8008,"SOAP12TestServiceC", "37")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 40  Failed", comparator.compare("40", client.getRelpy(8008,"SOAP12TestServiceC", "40")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 66  Failed", comparator.compare("66", client.getRelpy(8008,"SOAP12TestServiceC", "66")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 68  Failed", comparator.compare("68", client.getRelpy(8008,"SOAP12TestServiceC", "68")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 74  Failed", comparator.compare("74", client.getRelpy(8008,"SOAP12TestServiceC", "74")));
+
+        assertTrue("SOAP 1.2 Test : - Test No. 78  Failed", comparator.compare("78", client.getRelpy(8008,"SOAP12TestServiceC", "78")));
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/soap12testing/soap12testsuite/SOAP12TestWithFaults.java b/rampart_1_1/modules/integration/test/org/apache/axis2/soap12testing/soap12testsuite/SOAP12TestWithFaults.java
new file mode 100644
index 0000000..735fdd4
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/soap12testing/soap12testsuite/SOAP12TestWithFaults.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2004,2005 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.axis2.soap12testing.soap12testsuite;
+
+import junit.framework.TestCase;
+import test.soap12testing.client.MessageComparator;
+import test.soap12testing.client.SOAP12TestClient;
+import test.soap12testing.server.SimpleServer;
+
+public class SOAP12TestWithFaults extends TestCase {
+    private SimpleServer server;
+    private MessageComparator comparator;
+    private SOAP12TestClient client;
+
+    public SOAP12TestWithFaults() {
+        server = new SimpleServer(8007);
+        server.start();
+        comparator = new MessageComparator();
+        client = new SOAP12TestClient();
+    }
+
+    protected void setUp() {
+
+    }
+
+    public void testWithFaults() {
+        //Test No. 6 to 9 : - There are intermediaries
+
+        //Test No. 12 - 14 : - Reply message has fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 12  Failed", comparator.compare("12", client.getRelpy(8007, "SOAP12TestServiceC", "12")));
+        //assertTrue("SOAP 1.2 Test : - Test No. 13  Failed", comparator.compare("13", client.getRelpy(8007, "SOAP12TestServiceC", "13")));
+        //assertTrue("SOAP 1.2 Test : - Test No. 14  Failed", comparator.compare("14", client.getRelpy(8007, "SOAP12TestServiceC", "14")));
+
+        //Reply message has fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 16  Failed", comparator.compare("16", client.getRelpy(8007,"SOAP12TestServiceC", "16")));
+
+        //Request sends to B and reply has a fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 17  Failed", comparator.compare("17_B", client.getRelpy(8007,"SOAP12TestServiceB", "17_A")));
+
+        //There are intermediaries
+        //assertTrue("SOAP 1.2 Test : - Test No. 18  Failed", comparator.compare("18", client.getRelpy("SOAP12TestServiceC", "18")));
+
+        //Test No. 20 missing
+
+        //Request sends to B and reply has a fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 21  Failed", comparator.compare("21_B", client.getRelpy(8007,"SOAP12TestServiceB", "21_A")));
+
+        //mustUnderstand value is "wrong" and reply has a fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 23  Failed", comparator.compare("23", client.getRelpy("SOAP12TestServiceC", "23")));
+
+        //soap envelope namespace uri incorrect  and reply has a fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 24  Failed", comparator.compare("24", client.getRelpy("SOAP12TestServiceC", "24")));
+
+        //Has DTD  and reply has a fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 25  Failed", comparator.compare("25", client.getRelpy("SOAP12TestServiceC", "25")));
+
+        //Has style sheet and reply has a fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 26  Failed", comparator.compare("26", client.getRelpy("SOAP12TestServiceC", "26")));
+
+        //Test 30 is not here, because Axis 2 is supported both SOAP 1.1 and SOAP 1.2
+
+        //In Test No. 32, headerblock value should be inserted to body
+        //assertTrue("SOAP 1.2 Test : - Test No. 32  Failed", comparator.compare("32", client.getRelpy("SOAP12TestServiceC", "32")));
+
+        //Test No. 33, body element has an error
+        //assertTrue("SOAP 1.2 Test : - Test No. 33  Failed", comparator.compare("33", client.getRelpy("SOAP12TestServiceC", "33")));
+
+        //Test No. 35 - 36 : - Reply message has fault
+        //assertTrue("SOAP 1.2 Test : - Test No. 35  Failed", comparator.compare("35", client.getRelpy(8007,"SOAP12TestServiceC", "35")));
+        //assertTrue("SOAP 1.2 Test : - Test No. 36  Failed", comparator.compare("36", client.getRelpy(8007,"SOAP12TestServiceC", "36")));
+
+        //Test No. 38 has intermediaries
+
+        //Test No. 39, mustUnderstand value is "9"
+        //assertTrue("SOAP 1.2 Test : - Test No. 39  Failed", comparator.compare("39", client.getRelpy("SOAP12TestServiceC", "39")));
+
+        //Test No. 62 has intermediaries
+
+        //Test No. 63, headerblock name is validateCountryCode
+
+        //Test No. 64 has <!NOTATION ...>
+
+        //Test No. 65 has <!ELEMENT ..> ..<
+
+        //Test No. 67 has <?xml version='1.0' standalone='yes'?>
+        //assertTrue("SOAP 1.2 Test : - Test No. 67  Failed", comparator.compare("67", client.getRelpy("SOAP12TestServiceC", "67")));
+
+        //Test No. 69 sends message without body
+
+        //Test No. 70 sends message with an element after the body element
+
+        //Test No 71 sends message with non namespace qualified attribute in envelope element
+
+        //Test no. 75 sends a message with headerblock echoResolvedRef containing a relative reference
+        //assertTrue("SOAP 1.2 Test : - Test No. 78  Failed", comparator.compare("75", client.getRelpy("SOAP12TestServiceC", "78")));
+
+        //Test No. 79 has intermediaries
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/spring/MyBean.java b/rampart_1_1/modules/integration/test/org/apache/axis2/spring/MyBean.java
new file mode 100644
index 0000000..494ee91
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/spring/MyBean.java
@@ -0,0 +1,22 @@
+/*
+* Copyright 2004,2005 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.axis2.spring;
+
+/** Interface for Spring aware Bean */
+public interface MyBean {
+	 String emerge();
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/spring/MyBeanImpl.java b/rampart_1_1/modules/integration/test/org/apache/axis2/spring/MyBeanImpl.java
new file mode 100644
index 0000000..d68d547
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/spring/MyBeanImpl.java
@@ -0,0 +1,31 @@
+/*
+* Copyright 2004,2005 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.axis2.spring;
+
+/** Spring wired implementation */
+public class MyBeanImpl implements MyBean {
+
+    String str = null;
+    // spring 'injects' this value 
+    public void setVal(String s) { 
+        str = s;
+    }
+    // web service gets this value
+    public String emerge() {
+        return str;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/spring/SpringAwareService.java b/rampart_1_1/modules/integration/test/org/apache/axis2/spring/SpringAwareService.java
new file mode 100644
index 0000000..8d6794a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/spring/SpringAwareService.java
@@ -0,0 +1,46 @@
+/*
+* Copyright 2004,2005 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.axis2.spring;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+
+public class SpringAwareService {
+	
+    private MyBean myBean = null;
+
+    //spring 'injects' this implementation
+    public void setMyBean(MyBean myBean) {
+            this.myBean = myBean;
+    }
+
+    // The web service
+    public OMElement getValue(OMElement ignore) {
+            OMFactory factory=
+                OMAbstractFactory.getOMFactory(); 
+            OMNamespace payloadNs= factory.createOMNamespace(
+                "http://springExample.org/example1", "example1");
+            OMElement payload =
+                factory.createOMElement("string", payloadNs);
+            OMText response = factory.createOMText(this.myBean.emerge());
+            payload.addChild(response);
+            return payload;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/spring/SpringServiceTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/spring/SpringServiceTest.java
new file mode 100644
index 0000000..2f173fd
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/spring/SpringServiceTest.java
@@ -0,0 +1,175 @@
+/*

+* Copyright 2004,2005 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.axis2.spring;

+

+import junit.framework.Test;

+import junit.framework.TestSuite;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.description.*;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.MessageReceiver;

+import org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.springframework.context.support.ClassPathXmlApplicationContext;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLOutputFactory;

+import java.io.StringWriter;

+

+public class SpringServiceTest extends UtilServerBasedTestCase {

+

+    protected QName transportName = new QName("http://springExample.org/example1",

+            "NullTransport");

+    EndpointReference targetEPR = new EndpointReference(

+            "http://127.0.0.1:" + (UtilServer.TESTING_PORT)

+//            "http://127.0.0.1:" + 5556

+                    //  + "/axis2/services/EchoXMLService/echoOMElement");

+                    + "/axis2/services/SpringExample/getValue");

+

+    protected AxisConfiguration engineRegistry;

+    protected MessageContext mc;

+    protected ServiceContext serviceContext;

+    protected AxisService service;

+    private QName springServiceName = new QName("SpringExample");

+

+    private QName springOperationName = new QName("getValue");

+

+    public static Test suite() {

+        return getTestSetup(new TestSuite(SpringServiceTest.class));

+    }

+

+    protected void setUp() throws Exception {

+

+        AxisService service =

+                createSpringService(springServiceName, new RawXMLINOutMessageReceiver(),

+                        "org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier",

+                        "springAwareService",

+                        springOperationName);

+        createSpringAppCtx(service.getClassLoader());

+        UtilServer.deployService(service);

+    }

+

+    protected void tearDown() throws Exception {

+        UtilServer.unDeployService(springServiceName);

+        UtilServer.unDeployClientService();

+    }

+

+    // Can't test SpringServletContextSupplier AFAIK cuz not sure how to get ServletContext

+    // with this test harness. The idea here then is to test the basic idea with the 

+    // alternative method, SpringAppContextAwareObjectSupplier, whose purpose is to

+    // run in a non-servlet container environment

+    public void testSpringAppContextAwareObjectSupplier() throws Exception {

+

+        AxisService clientService =

+                createSpringServiceforClient(springServiceName, new RawXMLINOutMessageReceiver(),

+                        "org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier",

+                        "springAwareService",

+                        springOperationName);

+        ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();

+        ServiceClient sender = new ServiceClient(configcontext, clientService);

+

+        OMFactory factory = OMAbstractFactory.getOMFactory();

+        OMNamespace omNs = factory.createOMNamespace(

+                "http://springExample.org/example1", "example1");

+

+        OMElement method = factory.createOMElement("getValue", omNs);

+        OMElement value = factory.createOMElement("Text", omNs);

+        value.addChild(factory.createOMText(value, "Test String "));

+        method.addChild(value);

+

+        Options options = new Options();

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+        options.setTo(targetEPR);

+        options.setAction(springOperationName.getLocalPart());

+        sender.setOptions(options);

+

+        OMElement result = sender.sendReceive(springOperationName, method);

+

+        StringWriter writer = new StringWriter();

+        result.serialize(XMLOutputFactory.newInstance()

+                .createXMLStreamWriter(writer));

+        writer.flush();

+        String testStr = writer.toString();

+        // write to report

+        System.out.println("\ntestSpringAppContextAwareObjectSupplier result: " + testStr);

+        assertNotSame(new Integer(testStr.indexOf("emerge thyself")), new Integer(-1));

+    }

+

+    private AxisService createSpringService(QName springServiceName,

+                                            MessageReceiver messageReceiver, String supplierName, String beanName, QName opName) throws AxisFault {

+

+        AxisService service = new AxisService(springServiceName.getLocalPart());

+

+        service.setClassLoader(Thread.currentThread().getContextClassLoader());

+        service.addParameter(new Parameter(Constants.SERVICE_OBJECT_SUPPLIER, supplierName));

+        service.addParameter(new Parameter(Constants.SERVICE_TCCL, Constants.TCCL_COMPOSITE));

+        service.addParameter(new Parameter(SpringAppContextAwareObjectSupplier.SERVICE_SPRING_BEANNAME, beanName));

+

+        AxisOperation axisOp = new InOutAxisOperation(opName);

+

+        axisOp.setMessageReceiver(messageReceiver);

+        axisOp.setStyle(WSDLConstants.STYLE_RPC);

+        service.addOperation(axisOp);

+        service.mapActionToOperation(Constants.AXIS2_NAMESPACE_URI + "/" + opName.getLocalPart(), axisOp);

+

+        return service;

+    }

+

+    public AxisService createSpringServiceforClient(QName springServiceName,

+                                                    MessageReceiver messageReceiver,

+                                                    String supplierName,

+                                                    String beanName,

+                                                    QName opName)

+            throws AxisFault {

+        AxisService service = new AxisService(springServiceName.getLocalPart());

+

+        service.setClassLoader(Thread.currentThread().getContextClassLoader());

+        service.addParameter(new Parameter(Constants.SERVICE_OBJECT_SUPPLIER, supplierName));

+        service.addParameter(new Parameter(Constants.SERVICE_TCCL, Constants.TCCL_COMPOSITE));

+        service.addParameter(new Parameter(SpringAppContextAwareObjectSupplier.SERVICE_SPRING_BEANNAME, beanName));

+

+        AxisOperation axisOp = new OutInAxisOperation(opName);

+

+        axisOp.setMessageReceiver(messageReceiver);

+        axisOp.setStyle(WSDLConstants.STYLE_RPC);

+        service.addOperation(axisOp);

+

+        return service;

+    }

+

+    public void createSpringAppCtx(ClassLoader cl)

+            throws Exception {

+

+        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"/spring/applicationContext.xml"}, false);

+        ctx.setClassLoader(cl);

+        ctx.refresh();

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwAFileCacheTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwAFileCacheTest.java
new file mode 100755
index 0000000..365ab2d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwAFileCacheTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2004,2005 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.axis2.swa;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.util.Utils;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class EchoRawSwAFileCacheTest extends EchoRawSwATest{
+
+    private AxisService service;
+
+
+    public EchoRawSwAFileCacheTest() {
+        super(EchoRawSwAFileCacheTest.class.getName());
+    }
+
+    public EchoRawSwAFileCacheTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawSwAFileCacheTest.class),Constants.TESTING_PATH + "SwA-fileCache-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        service = Utils.createSimpleService(serviceName, EchoSwA.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+//    public void testEchoXMLASync() throws Exception {
+//        super.testEchoXMLASync();
+//    }
+
+    public void testEchoXMLSync() throws Exception {
+        super.testEchoXMLSync();
+    }
+    
+//    public void testEchoXMLSyncSeperateListener() throws Exception {
+//        super.testEchoXMLSyncSeperateListener();
+//    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwAFileInputTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwAFileInputTest.java
new file mode 100755
index 0000000..386462a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwAFileInputTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2004,2005 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.axis2.swa;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.net.SocketException;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.InOutAxisOperation;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+public class EchoRawSwAFileInputTest extends UtilServerBasedTestCase {
+
+    private QName serviceName = new QName("EchoSwAService");
+
+    private QName operationName = new QName("echoAttachment");
+
+    public EchoRawSwAFileInputTest() {
+        super(EchoRawSwAFileInputTest.class.getName());
+    }
+
+    public EchoRawSwAFileInputTest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawSwAFileInputTest.class),
+                Constants.TESTING_PATH + "MTOM-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        service.setClassLoader(Thread.currentThread().getContextClassLoader());
+        service.addParameter(new Parameter(
+                Constants.SERVICE_CLASS, EchoSwA.class
+                .getName()));
+        AxisOperation axisOp = new InOutAxisOperation(operationName);
+        axisOp.setMessageReceiver(new RawXMLINOutMessageReceiver());
+        axisOp.setStyle(WSDLConstants.STYLE_DOC);
+        service.addOperation(axisOp);
+        UtilServer.deployService(service);
+
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        Socket socket = new Socket("127.0.0.1", 5555);
+        OutputStream outStream = socket.getOutputStream();
+        socket.getInputStream();
+        InputStream requestMsgInStream = new FileInputStream("test-resources/swa/swainput.bin");
+        int data;
+        while ((data = requestMsgInStream.read()) != -1) {
+            outStream.write(data);
+        }
+        outStream.flush();
+        socket.shutdownOutput();
+        BufferedReader reader = new BufferedReader(new InputStreamReader(socket
+                .getInputStream()));
+        StringBuffer sb = new StringBuffer();
+
+        String response = reader.readLine();
+        while (null != response) {
+            try {
+                sb.append(response.trim());
+                response = reader.readLine();
+            } catch (SocketException e) {
+                break;
+            }
+        }
+
+        assertTrue(sb.toString().indexOf(
+                "Apache Axis2 - The NExt Generation Web Services Engine") > 0);
+        assertTrue(sb.toString().indexOf("multipart/related") > 0);
+    }
+
+    private InputStream getResourceAsStream(String path) {
+        return this.getClass().getResourceAsStream(path);
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwATest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwATest.java
new file mode 100644
index 0000000..1587ae9
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoRawSwATest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2004,2005 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.axis2.swa;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.util.TestConstants;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilServerBasedTestCase;
+import org.apache.axis2.util.Utils;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class EchoRawSwATest extends UtilServerBasedTestCase implements TestConstants {
+
+
+	private static final Log log = LogFactory.getLog(EchoRawSwATest.class);
+
+    private AxisService service;
+
+    private boolean finish = false;
+
+    public EchoRawSwATest() {
+        super(EchoRawSwATest.class.getName());
+    }
+
+    public EchoRawSwATest(String testName) {
+        super(testName);
+    }
+
+    public static Test suite() {
+        return getTestSetup2(new TestSuite(EchoRawSwATest.class),Constants.TESTING_PATH + "SwA-enabledRepository");
+    }
+
+    protected void setUp() throws Exception {
+        service = Utils.createSimpleService(serviceName, EchoSwA.class.getName(),
+                operationName);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+    }
+
+    protected SOAPEnvelope createEnvelope() throws Exception {
+    	SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope env = fac.getDefaultEnvelope();
+        
+        OMNamespace omNs = fac.createOMNamespace("htp://localhost/my", "my");
+        OMElement rpcWrapEle = fac.createOMElement("echoOMElement", omNs);
+        OMElement data = fac.createOMElement("data", omNs);
+        OMText textData = fac.createOMText("Apache Axis2 Rocks !!!");
+        data.addChild(textData);
+        rpcWrapEle.addChild(data);
+        
+        env.getBody().addChild(rpcWrapEle);
+        return env;
+    }
+
+
+    public void testEchoXMLSync() throws Exception {
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        options.setTimeOutInMilliSeconds(100000);
+        options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+        options.setTo(targetEPR);
+        
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem("target/test-resources/integrationRepo",null);
+        
+        ServiceClient sender = new ServiceClient(configContext,null);
+        sender.setOptions(options);
+        OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP);
+        
+        MessageContext mc = new MessageContext();   
+        mc.setEnvelope(createEnvelope());
+        FileDataSource fileDataSource = new FileDataSource("test-resources/mtom/test.jpg");
+        DataHandler dataHandler = new DataHandler(fileDataSource);
+        mc.addAttachment("FirstAttachment",dataHandler);
+       
+        mepClient.addMessageContext(mc);
+        mepClient.execute(true);
+        MessageContext response = mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        DataHandler dataHandler2 = response.getAttachment("FirstAttachment");
+        assertNotNull(dataHandler);
+        compareDataHandlers(dataHandler,dataHandler2);
+    }
+
+    protected void compareDataHandlers(DataHandler dataHandler, DataHandler dataHandler2) {
+        String originalTextValue = new OMTextImpl(dataHandler,true,null).getText();
+        String returnedTextValue = new OMTextImpl(dataHandler2,true,null).getText();
+        assertEquals(returnedTextValue, originalTextValue);
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoSwA.java b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoSwA.java
new file mode 100644
index 0000000..530611d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/EchoSwA.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004,2005 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.axis2.swa;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+
+/**
+ * @version $Rev: $ $Date: $
+ */
+
+public class EchoSwA {
+
+    public EchoSwA() {
+    }
+
+    public OMElement echoAttachment(OMElement omEle) throws AxisFault {
+        OMElement child = (OMElement) omEle.getFirstOMChild();
+        OMAttribute attr = child.getAttribute(new QName("href"));
+        String contentID = attr.getAttributeValue();
+        contentID = contentID.trim();
+        if (contentID.substring(0, 3).equalsIgnoreCase("cid")) {
+            contentID = contentID.substring(4);
+        }
+
+        MessageContext msgCtx = MessageContext.getCurrentMessageContext();
+        Attachments attachment = (msgCtx).getAttachmentMap();
+
+        DataHandler dataHandler = attachment.getDataHandler(contentID);
+        OMText textNode = new OMTextImpl(dataHandler, omEle.getOMFactory());
+        omEle.build();
+        child.detach();
+        omEle.addChild(textNode);
+        return omEle;
+    }
+
+    public OMElement echoOMElement(OMElement omEle) throws AxisFault {
+        OMElement child = (OMElement) omEle.getFirstOMChild();
+        MessageContext msgCtx = MessageContext.getCurrentMessageContext();
+        Attachments attachment = (msgCtx).getAttachmentMap();
+        msgCtx.getOperationContext().getMessageContext(
+                WSDLConstants.MESSAGE_LABEL_OUT_VALUE).setAttachmentMap(attachment);
+
+        omEle.build();
+        return omEle;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/swa/swainput.bin b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/swainput.bin
new file mode 100644
index 0000000..8357796
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/swa/swainput.bin
@@ -0,0 +1,25 @@
+POST /axis2/services/EchoSwAService/echoAttachment HTTP/1.0

+Content-Type: multipart/related; type="text/xml"; start="<9D645C8EBB837CE54ABD027A3659535D>"; 	boundary="----=_Part_0_1977511.1123163571138"

+Accept: application/soap+xml, application/dime, multipart/related, text/*

+User-Agent: Axis/1.2.1

+Host: 127.0.0.1:8081

+Cache-Control: no-cache

+Pragma: no-cache

+Connection: close

+SOAPAction: ""

+

+

+------=_Part_0_1977511.1123163571138

+Content-Type: text/xml; charset=UTF-8

+Content-Transfer-Encoding: binary

+Content-Id: <9D645C8EBB837CE54ABD027A3659535D>

+

+<?xml version="1.0" encoding="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"><soapenv:Body><echoAttachment xmlns=""><source href="cid:3936AE19FBED55AE4620B81C73BDD76E" xmlns=""/></echoAttachment></soapenv:Body></soapenv:Envelope>

+------=_Part_0_1977511.1123163571138

+Content-Type: text/plain

+Content-Transfer-Encoding: binary

+Content-Id: <3936AE19FBED55AE4620B81C73BDD76E>

+

+Apache Axis2 - The NExt Generation Web Services Engine

+

+------=_Part_0_1977511.1123163571138--

diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/tcp/TCPEchoRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/tcp/TCPEchoRawXMLTest.java
new file mode 100644
index 0000000..575cc14
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/tcp/TCPEchoRawXMLTest.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright 2004,2005 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.axis2.tcp;
+
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilsTCPServer;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+
+public class TCPEchoRawXMLTest extends TestCase {
+    private EndpointReference targetEPR =
+            new EndpointReference("tcp://127.0.0.1:"
+                    + (UtilServer.TESTING_PORT)
+                    + "/axis2/services/EchoXMLService/echoOMElement");
+    private QName serviceName = new QName("EchoXMLService");
+    private QName operationName = new QName("echoOMElement");
+
+    private AxisService service;
+    private AxisService clientService;
+    private ConfigurationContext configContext;
+
+    private boolean finish = false;
+	private static final Log log = LogFactory.getLog(TCPEchoRawXMLTest.class);
+
+    public TCPEchoRawXMLTest() {
+        super(TCPEchoRawXMLTest.class.getName());
+    }
+
+    public TCPEchoRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        UtilsTCPServer.start();
+
+        //create and deploy the service
+        service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilsTCPServer.deployService(service);
+        clientService = Utils.createSimpleServiceforClient(serviceName,
+                Echo.class.getName(),
+                operationName);
+        configContext = UtilServer.createClientConfigurationContext();
+    }
+
+    protected void tearDown() throws Exception {
+        UtilsTCPServer.stop();
+    }
+
+    private OMElement createPayload() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(
+                fac.createOMText(value, "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public void testEchoXMLASync() throws Exception {
+        OMElement payload = createPayload();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_TCP);
+        options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                try {
+                    result.getResponseEnvelope().serialize(StAXUtils
+                            .createXMLStreamWriter(System.out));
+                } catch (XMLStreamException e) {
+                    onError(e);
+                } finally {
+                    finish = true;
+                }
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ServiceClient sender = new ServiceClient(configContext, clientService);
+        sender.setOptions(options);
+
+        sender.sendReceiveNonBlocking(operationName, payload, callback);
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response take too long to complete");
+            }
+        }
+        sender.cleanup();
+    }
+
+    public void testEchoXMLSync() throws Exception {
+        OMElement payload = createPayload();
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_TCP);
+        options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+                 
+        ServiceClient sender = new ServiceClient(configContext, clientService);
+        sender.setOptions(options);
+        OMElement result = sender.sendReceive(operationName, payload);
+
+        result.serialize(StAXUtils.createXMLStreamWriter(
+                System.out));
+        sender.cleanup();
+    }
+
+    public void testEchoXMLCompleteSync() throws Exception {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement payloadElement = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.setText("Isaac Asimov, The Foundation Trilogy");
+        payloadElement.addChild(value);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
+        options.setTransportInProtocol(Constants.TRANSPORT_TCP);
+        options.setUseSeparateListener(true);
+
+        ServiceClient sender = new ServiceClient(configContext, clientService);
+        sender.setOptions(options);
+        OMElement result = sender.sendReceive(operationName, payloadElement);
+
+        result.serialize(StAXUtils.createXMLStreamWriter(
+                System.out));
+        sender.cleanup();
+
+    }
+
+    public void testEchoXMLSyncMC() throws Exception {
+        ConfigurationContext configContext =
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(Constants.TESTING_REPOSITORY, Constants.TESTING_REPOSITORY + "/conf/axis2.xml");
+
+        AxisOperation opdesc = new OutInAxisOperation(new QName("echoOMElement"));
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(operationName.getLocalPart());
+        options.setTransportInProtocol(Constants.TRANSPORT_TCP);
+
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.setText("Isaac Asimov, The Foundation Trilogy");
+        method.addChild(value);
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope envelope = factory.getDefaultEnvelope();
+        envelope.getBody().addChild(method);
+
+        MessageContext requestContext = new MessageContext();
+        requestContext.setConfigurationContext(configContext);
+        requestContext.setAxisService(clientService);
+        requestContext.setAxisOperation(opdesc);
+        requestContext.setEnvelope(envelope);
+
+        ServiceClient sender = new ServiceClient(configContext, clientService);
+        sender.setOptions(options);
+        OperationClient opClient = sender.createClient(new QName("echoOMElement"));
+        opClient.addMessageContext(requestContext);
+        opClient.setOptions(options);
+        opClient.execute(true);
+
+        MessageContext response = opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        SOAPEnvelope env = response.getEnvelope();
+        assertNotNull(env);
+        env.getBody().serialize(StAXUtils.createXMLStreamWriter(
+                System.out));
+        sender.cleanup();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/tcp/TCPTwoChannelEchoRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/tcp/TCPTwoChannelEchoRawXMLTest.java
new file mode 100644
index 0000000..6cc54f6
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/tcp/TCPTwoChannelEchoRawXMLTest.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2004,2005 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.axis2.tcp;
+
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.integration.UtilsTCPServer;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+
+public class TCPTwoChannelEchoRawXMLTest extends TestCase {
+    private EndpointReference targetEPR =
+            new EndpointReference("tcp://127.0.0.1:"
+                    + (UtilServer.TESTING_PORT)
+                    + "/axis2/services/EchoXMLService/echoOMElement");
+    private QName serviceName = new QName("EchoXMLService");
+    private QName operationName = new QName("echoOMElement");
+    private AxisService service;
+    private ConfigurationContext configContext;
+
+	private static final Log log = LogFactory.getLog(TCPTwoChannelEchoRawXMLTest.class);
+
+    private boolean finish = false;
+
+    public TCPTwoChannelEchoRawXMLTest() {
+        super(TCPTwoChannelEchoRawXMLTest.class.getName());
+    }
+
+    public TCPTwoChannelEchoRawXMLTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+        UtilsTCPServer.start();
+
+        //create and deploy the service
+        service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilsTCPServer.deployService(service);
+
+        configContext = UtilServer.createClientConfigurationContext();
+    }
+
+    protected void tearDown() throws Exception {
+        UtilsTCPServer.stop();
+    }
+
+    public void testEchoXMLCompleteASync() throws Exception {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.setText("Isaac Asimov, The Foundation Trilogy");
+        method.addChild(value);
+
+        ServiceClient sender ;
+
+        try {
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_TCP);
+            options.setUseSeparateListener(true);
+            options.setAction(operationName.getLocalPart());
+            Callback callback = new Callback() {
+                public void onComplete(AsyncResult result) {
+                    try {
+                        result.getResponseEnvelope().serializeAndConsume(StAXUtils
+                                .createXMLStreamWriter(System.out));
+                    } catch (XMLStreamException e) {
+                        onError(e);
+                    } finally {
+                        finish = true;
+                    }
+                }
+
+                public void onError(Exception e) {
+                    log.info(e.getMessage());
+                    finish = true;
+                }
+            };
+
+            AxisService serviceClient =
+                    Utils.createSimpleServiceforClient(serviceName,
+                            org.apache.axis2.engine.Echo.class.getName(),
+                            operationName);
+
+            sender = new ServiceClient(configContext, serviceClient);
+            sender.setOptions(options);
+
+            sender.sendReceiveNonBlocking(operationName, method, callback);
+
+            int index = 0;
+            while (!finish) {
+                Thread.sleep(1000);
+                index++;
+                if (index > 10) {
+                    throw new AxisFault(
+                            "Server was shutdown as the async response take too long to complete");
+                }
+            }
+        } finally {
+            if(finish) {
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/axis2/transport/DualChannelRequestResponseRawXMLTest.java b/rampart_1_1/modules/integration/test/org/apache/axis2/transport/DualChannelRequestResponseRawXMLTest.java
new file mode 100644
index 0000000..dc16772
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/axis2/transport/DualChannelRequestResponseRawXMLTest.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2004,2005 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.axis2.transport;
+
+// todo
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.engine.Echo;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.axis2.mail.UtilsMailServer;
+import org.apache.axis2.transport.mail.server.MailServer;
+import org.apache.axis2.transport.mail.Constants;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
+public class DualChannelRequestResponseRawXMLTest extends TestCase {
+    private EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:5555"
+            + "/axis2/services/EchoXMLService/echoOMElement"); //mail:foo@
+
+	private static final Log log = LogFactory.getLog(DualChannelRequestResponseRawXMLTest.class);
+
+    private QName serviceName = new QName("EchoXMLService");
+
+    private QName operationName = new QName("echoOMElement");
+
+    private boolean finish = false;
+
+    private SOAPEnvelope envelope;
+
+    private ConfigurationContext serverConfigContext;
+
+    private AxisService service;
+    
+    private MailServer mailServer;
+    
+    public DualChannelRequestResponseRawXMLTest() {
+        super(DualChannelRequestResponseRawXMLTest.class.getName());
+    }
+
+    public DualChannelRequestResponseRawXMLTest(String testName) {
+        super(testName);
+    }
+
+/*    protected void setUp() throws Exception {
+        serverConfigContext = UtilsMailServer.start();
+
+        SimpleMailListener ml = new SimpleMailListener();
+        ml.init(serverConfigContext, serverConfigContext.getAxisConfiguration()
+                .getTransportIn(new QName(Constants.TRANSPORT_MAIL)));
+        ml.start();
+        // configContext.getAxisConfiguration().engageModule(
+        // new QName(Constants.MODULE_ADDRESSING));
+        AxisService service = Utils.createSimpleService(serviceName, Echo.class
+                .getName(), operationName);
+        serverConfigContext.getAxisConfiguration().addService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilsMailServer.stop();
+    }*/
+
+    protected void setUp() throws Exception {
+        service =
+                Utils.createSimpleService(serviceName,
+                        Echo.class.getName(),
+                        operationName);
+        UtilServer.start(org.apache.axis2.Constants.TESTING_PATH + "mail-transport-server-enabledRepository");
+        UtilServer.deployService(service);
+        mailServer =
+            new MailServer(Constants.POP_SERVER_PORT,
+                    Constants.SMTP_SERVER_PORT);
+/*        SimpleMailListener ml = new SimpleMailListener();
+        ml.init(serverConfigContext, serverConfigContext.getAxisConfiguration()
+                .getTransportIn(new QName(Constants.TRANSPORT_MAIL)));
+        ml.start();*/
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.unDeployClientService();
+        UtilServer.stop();
+        mailServer.stop();
+    }
+
+
+    private OMElement createEnvelope() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement method = fac.createOMElement("echoOMElement", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        value.addChild(fac.createOMText(value,
+                "Isaac Asimov, The Foundation Trilogy"));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public void testEchoXMLCompleteASync() throws Exception {
+
+        ConfigurationContext configContext = UtilsMailServer
+                .createClientConfigurationContext();
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        AxisOperation axisOperation = new OutInAxisOperation();
+        axisOperation.setName(operationName);
+        axisOperation.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+                envelope = messageCtx.getEnvelope();
+            }
+        });
+        service.addOperation(axisOperation);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(operationName.getLocalPart());
+ 
+        //options.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_MAIL, true);
+
+//        options.setTransport InProtocol("smtp");
+
+        options.setTransportInProtocol(org.apache.axis2.Constants.TRANSPORT_MAIL);
+
+        options.setUseSeparateListener(true);
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                try {
+                    result.getResponseEnvelope().serializeAndConsume(
+                            StAXUtils
+                                    .createXMLStreamWriter(System.out));
+                } catch (XMLStreamException e) {
+                    onError(e);
+                } finally {
+                    finish = true;
+                }
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ServiceClient sender = new ServiceClient(configContext, service);
+        sender.setOptions(options);
+        //options.setTo(targetEPR);	
+        sender.sendReceiveNonBlocking(operationName, createEnvelope(), callback);
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response is taking too long to complete.");
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/PWCallback.java b/rampart_1_1/modules/integration/test/org/apache/rahas/PWCallback.java
new file mode 100755
index 0000000..6ec7792
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/PWCallback.java
@@ -0,0 +1,195 @@
+package org.apache.rahas;
+/*
+* Copyright 2004,2005 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 org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import java.io.IOException;
+
+
+
+/**
+
+ * Class PWCallback
+
+ */
+
+public class PWCallback implements CallbackHandler {
+
+
+
+    /** Field key */
+
+    private static final byte[] key = {
+
+        (byte) 0x31, (byte) 0xfd, (byte) 0xcb, (byte) 0xda, (byte) 0xfb,
+
+        (byte) 0xcd, (byte) 0x6b, (byte) 0xa8, (byte) 0xe6, (byte) 0x19,
+
+        (byte) 0xa7, (byte) 0xbf, (byte) 0x51, (byte) 0xf7, (byte) 0xc7,
+
+        (byte) 0x3e, (byte) 0x80, (byte) 0xae, (byte) 0x98, (byte) 0x51,
+
+        (byte) 0xc8, (byte) 0x51, (byte) 0x34, (byte) 0x04,
+
+    };
+
+
+
+    /*
+
+     * (non-Javadoc)
+
+     * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
+
+     */
+
+
+
+    /**
+
+     * Method handle
+
+     * 
+
+     * @param callbacks 
+
+     * @throws java.io.IOException                  
+
+     * @throws javax.security.auth.callback.UnsupportedCallbackException 
+
+     */
+
+    public void handle(Callback[] callbacks)
+
+            throws IOException, UnsupportedCallbackException {
+
+
+
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+
+
+
+                /*
+
+                 * This usage type is used only in case we received a
+
+                 * username token with a password of type PasswordText or
+
+                 * an unknown password type.
+
+                 * 
+
+                 * This case the WSPasswordCallback object contains the
+
+                 * identifier (aka username), the password we received, and
+
+                 * the password type string to identify the type.
+
+                 * 
+
+                 * Here we perform only a very simple check.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+
+                	if(pc.getIdentifer().equals("Ron") && pc.getPassword().equals("noR")) {
+
+                        return;
+
+                	}
+                    
+                    if(pc.getIdentifer().equals("joe") && pc.getPassword().equals("eoj")) {
+
+                        return;
+
+                    }
+                    
+                    if (pc.getPassword().equals("sirhC")) {
+
+                        return;
+
+                    }               	
+
+                    throw new UnsupportedCallbackException(callbacks[i],
+
+                    "check failed");
+
+                }
+
+                /*
+
+                 * here call a function/method to lookup the password for
+
+                 * the given identifier (e.g. a user name or keystore alias)
+
+                 * e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier))
+
+                 * for Testing we supply a fixed name here.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.KEY_NAME) {
+
+                    pc.setKey(key);
+
+                } else if(pc.getIdentifer().equals("alice")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("bob")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("Ron")) {
+
+                    pc.setPassword("noR");
+
+                } else if(pc.getIdentifer().equals("joe")) {
+
+                    pc.setPassword("eoj");
+
+                } else if(pc.getIdentifer().equals("ip")) {
+                    
+                    pc.setPassword("password");
+                    
+                } else {
+
+                    pc.setPassword("sirhC");
+
+                }
+
+            } else {
+
+                throw new UnsupportedCallbackException(callbacks[i],
+
+                        "Unrecognized Callback");
+
+            }
+
+        }
+
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenCertForHoKTest.java b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenCertForHoKTest.java
new file mode 100644
index 0000000..7a42d5c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenCertForHoKTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axis2.security.sc.PWCallback;
+import org.apache.neethi.Policy;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.secpolicy.Constants;
+import org.opensaml.XML;
+
+import javax.xml.namespace.QName;
+
+
+public class RahasSAMLTokenCertForHoKTest extends TestClient {
+
+    public RahasSAMLTokenCertForHoKTest(String name) {
+        super(name);
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("Signature Encrypt Timestamp");
+        ofc.setUser("alice");
+        ofc.setEncryptionUser("ip");
+        ofc.setSignaturePropFile("rahas-sec.properties");
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Signature Encrypt Timestamp");
+        ifc.setPasswordCallbackClass(PWCallback.class.getName());
+        ifc.setSignaturePropFile("rahas-sec.properties");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "rahas_service_repo_1";
+    }
+
+    public OMElement getRequest() {
+        try {
+            OMElement rstElem =
+                    TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_02);
+            
+            TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_02,
+                                                       rstElem,
+                                                       RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem =
+                    TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02,
+                                                     rstElem);
+            tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
+
+            TrustUtil.createAppliesToElement(rstElem,
+//                    "http://207.200.37.116/Ping/Scenario4", this.getWSANamespace());
+"http://localhost:5555/axis2/services/SecureService", this.getWSANamespace());
+            TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02,
+                                           rstElem, RahasConstants.KEY_TYPE_PUBLIC_KEY);
+            TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, rstElem, 256);
+
+
+            return rstElem;
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+    
+    public void validateRsponse(OMElement resp) {
+        OMElement rst = resp.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_02,
+                                                             RahasConstants.IssuanceBindingLocalNames.
+                                                                     REQUESTED_SECURITY_TOKEN));
+        assertNotNull("RequestedSecurityToken missing", rst);
+        OMElement elem = rst.getFirstChildWithName(new QName(XML.SAML_NS, "Assertion"));
+        assertNotNull("Missing SAML Assertoin", elem);
+    }
+
+
+    public String getRequestAction() throws TrustException {
+        return TrustUtil.getActionValue(RahasConstants.VERSION_05_02, RahasConstants.RST_ACTION_ISSUE);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getServicePolicy()
+     */
+    public Policy getServicePolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/service-policy-symm-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getSTSPolicy()
+     */
+    public Policy getSTSPolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/sts-policy-asymm-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getRSTTemplate()
+     */
+    public OMElement getRSTTemplate() throws TrustException {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem = factory.createOMElement(Constants.RST_TEMPLATE.getLocalPart(), factory.createOMNamespace(Constants.RST_TEMPLATE.getNamespaceURI(),"wsp"));
+        
+        TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, elem).setText(RahasConstants.TOK_TYPE_SAML_10);
+        TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02, elem, RahasConstants.KEY_TYPE_SYMM_KEY);
+        TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, elem, 256);
+        
+        return elem;
+    }
+
+    public int getTrstVersion() {
+        return RahasConstants.VERSION_05_02;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenCertForHoKV1205Test.java b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenCertForHoKV1205Test.java
new file mode 100644
index 0000000..8fb203d
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenCertForHoKV1205Test.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.neethi.Policy;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.xml.security.encryption.XMLCipher;
+import org.opensaml.XML;
+
+import javax.xml.namespace.QName;
+
+public class RahasSAMLTokenCertForHoKV1205Test extends TestClient {
+
+
+    public RahasSAMLTokenCertForHoKV1205Test(String name) {
+        super(name);
+    }
+
+    public OMElement getRequest() {
+        try {
+            OMElement rstElem =
+                    TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_12);
+            TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_12,
+                                                       rstElem,
+                                                       RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem =
+                    TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_12,
+                                                     rstElem);
+            tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
+
+            TrustUtil.createAppliesToElement(rstElem,
+//                    "http://207.200.37.116/Ping/Scenario4", this.getWSANamespace());
+"http://localhost:5555/axis2/services/SecureService", this.getWSANamespace());
+            TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_12,
+                                           rstElem, RahasConstants.KEY_TYPE_PUBLIC_KEY);
+            TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_12, rstElem, 256);
+
+
+            return rstElem;
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+//        ofc.setActionItems("Timestamp Signature Encrypt");
+        ofc.setActionItems("Signature Encrypt Timestamp");
+        ofc.setUser("alice");
+        ofc.setEncryptionUser("ip");
+        ofc.setSignaturePropFile("rahas-sec.properties");
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+        ofc.setEncryptionKeyTransportAlgorithm(XMLCipher.RSA_OAEP);
+//        ofc.setEncryptionSymAlgorithm(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256);
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        ofc.setEnableSignatureConfirmation(false);
+//        ofc.setSignatureParts("{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body;" +
+//                                "{Element}{" + RahasConstants.WSA_NS + "}To;" +
+//                                "{Element}{" + RahasConstants.WSA_NS + "}ReplyTo;" +
+//                                "{Element}{" + RahasConstants.WSA_NS + "}MessageID;" +
+//                                "{Element}{" + RahasConstants.WSA_NS + "}Action;" +
+//                                "{Element}{" + WSConstants.WSU_NS + "}Timestamp");
+
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Signature Encrypt Timestamp");
+        ifc.setPasswordCallbackClass(PWCallback.class.getName());
+        ifc.setSignaturePropFile("rahas-sec.properties");
+        ifc.setEnableSignatureConfirmation(false);
+
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "rahas_service_repo_1";
+    }
+
+    public void validateRsponse(OMElement resp) {
+        OMElement rstr =
+                resp.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                     RahasConstants.LocalNames.
+                                                             REQUEST_SECURITY_TOKEN_RESPONSE));
+        assertNotNull("RequestedSecurityToken missing", rstr);
+        OMElement rst =
+                rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                     RahasConstants.IssuanceBindingLocalNames.
+                                                             REQUESTED_SECURITY_TOKEN));
+        assertNotNull("RequestedSecurityToken missing", rst);
+        OMElement elem = rst.getFirstChildWithName(new QName(XML.SAML_NS, "Assertion"));
+        assertNotNull("Missing SAML Assertoin", elem);
+
+    }
+
+    public String getRequestAction() throws TrustException {
+        return TrustUtil.getActionValue(RahasConstants.VERSION_05_02, RahasConstants.RST_ACTION_ISSUE);
+    }
+
+    public Policy getServicePolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/service-policy-symm-binding.xml");
+    }
+
+    public Policy getSTSPolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/sts-policy-asymm-binding.xml");
+    }
+
+
+    public OMElement getRSTTemplate() throws TrustException {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem =
+                factory.createOMElement(Constants.RST_TEMPLATE.getLocalPart(),
+                                        factory.createOMNamespace(Constants.RST_TEMPLATE.getNamespaceURI(), "wsp"));
+
+        TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_12, elem).
+                setText(RahasConstants.TOK_TYPE_SAML_10);
+        TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_12, elem,
+                                       RahasConstants.KEY_TYPE_SYMM_KEY);
+        TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_12, elem, 256);
+
+        return elem;
+    }
+
+    public int getTrstVersion() {
+        return RahasConstants.VERSION_05_12;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenTest.java b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenTest.java
new file mode 100644
index 0000000..f29b0f3
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenTest.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axis2.security.sc.PWCallback;
+import org.apache.neethi.Policy;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.secpolicy.Constants;
+import org.opensaml.XML;
+
+import javax.xml.namespace.QName;
+
+public class RahasSAMLTokenTest extends TestClient {
+
+
+    /**
+     * @param name
+     */
+    public RahasSAMLTokenTest(String name) {
+        super(name);
+    }
+
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("Signature Encrypt Timestamp");
+        ofc.setUser("alice");
+        ofc.setSignaturePropFile("rahas-sec.properties");
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Signature Encrypt Timestamp");
+        ifc.setPasswordCallbackClass(PWCallback.class.getName());
+        ifc.setSignaturePropFile("rahas-sec.properties");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "rahas_service_repo_1";
+    }
+
+    public OMElement getRequest() {
+        try {
+            OMElement rstElem = TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_02);
+            TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_02, rstElem, RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, rstElem);
+            tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
+            
+            TrustUtil.createAppliesToElement(rstElem, "http://localhost:5555/axis2/services/SecureService", this.getWSANamespace());
+            TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02,
+                    rstElem, RahasConstants.KEY_TYPE_SYMM_KEY);
+            TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, rstElem, 256);
+            
+            return rstElem;
+            
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+    
+    public void validateRsponse(OMElement resp) {
+        OMElement rst = resp.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_02,
+                                                             RahasConstants.IssuanceBindingLocalNames.
+                                                                     REQUESTED_SECURITY_TOKEN));
+        assertNotNull("RequestedSecurityToken missing", rst);
+        OMElement elem = rst.getFirstChildWithName(new QName(XML.SAML_NS, "Assertion"));
+        assertNotNull("Missing SAML Assertoin", elem);
+    }
+
+
+    public String getRequestAction() throws TrustException {
+        return TrustUtil.getActionValue(RahasConstants.VERSION_05_02, RahasConstants.RST_ACTION_ISSUE);
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getServicePolicy()
+     */
+    public Policy getServicePolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/service-policy-symm-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getSTSPolicy()
+     */
+    public Policy getSTSPolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/sts-policy-asymm-binding.xml");
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getRSTTemplate()
+     */
+    public OMElement getRSTTemplate() throws TrustException {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem = factory.createOMElement(Constants.RST_TEMPLATE.getLocalPart(), factory.createOMNamespace(Constants.RST_TEMPLATE.getNamespaceURI(),"wsp"));
+        
+        TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, elem).setText(RahasConstants.TOK_TYPE_SAML_10);
+        TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02, elem, RahasConstants.KEY_TYPE_SYMM_KEY);
+        TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, elem, 256);
+        
+        return elem;
+    }
+
+    public int getTrstVersion() {
+        return RahasConstants.VERSION_05_02;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForBearerTest.java b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForBearerTest.java
new file mode 100644
index 0000000..241f954
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForBearerTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.neethi.Policy;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.secpolicy.Constants;
+import org.opensaml.XML;
+
+import javax.xml.namespace.QName;
+
+/**
+ *
+ * @author Ruchith Fernando (ruchith.fernando@gmail.com)
+ */
+public class RahasSAMLTokenUTForBearerTest extends TestClient {
+
+    public RahasSAMLTokenUTForBearerTest(String name) {
+        super(name);
+    }
+
+    public OMElement getRequest() {
+        try {
+            OMElement rstElem = TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_02);
+            TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_02, rstElem, RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, rstElem);
+            tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
+            
+            TrustUtil.createAppliesToElement(rstElem, "http://localhost:5555/axis2/services/SecureService", this.getWSANamespace());
+            TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02,
+                    rstElem, RahasConstants.KEY_TYPE_BEARER);
+            TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, rstElem, 256);
+            
+            return rstElem;
+            
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("UsernameToken Timestamp");
+        ofc.setUser("joe");
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Timestamp");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "rahas_service_repo_3";
+    }
+
+    public String getRequestAction() throws TrustException {
+        return TrustUtil.getActionValue(RahasConstants.VERSION_05_02, RahasConstants.RST_ACTION_ISSUE);
+    }
+
+    public void validateRsponse(OMElement resp) {
+        OMElement rst = resp.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_02,
+                                                             RahasConstants.IssuanceBindingLocalNames.
+                                                                     REQUESTED_SECURITY_TOKEN));
+        assertNotNull("RequestedSecurityToken missing", rst);
+        OMElement elem = rst.getFirstChildWithName(new QName(XML.SAML_NS, "Assertion"));
+        assertNotNull("Missing SAML Assertoin", elem);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getServicePolicy()
+     */
+    public Policy getServicePolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/service-policy-transport-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getSTSPolicy()
+     */
+    public Policy getSTSPolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/sts-policy-transport-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getRSTTemplate()
+     */
+    public OMElement getRSTTemplate() throws TrustException {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem = factory.createOMElement(Constants.RST_TEMPLATE.getLocalPart(), factory.createOMNamespace(Constants.RST_TEMPLATE.getNamespaceURI(),"wsp"));
+        
+        TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, elem).setText(RahasConstants.TOK_TYPE_SAML_10);
+        TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02, elem, RahasConstants.KEY_TYPE_BEARER);
+        
+        return elem;
+    }
+    
+    public int getTrstVersion() {
+        return RahasConstants.VERSION_05_02;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForBearerV1205Test.java b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForBearerV1205Test.java
new file mode 100644
index 0000000..09d8084
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForBearerV1205Test.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.neethi.Policy;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.secpolicy.Constants;
+import org.opensaml.XML;
+
+import javax.xml.namespace.QName;
+
+public class RahasSAMLTokenUTForBearerV1205Test extends TestClient {
+
+    /**
+     * @param name
+     */
+    public RahasSAMLTokenUTForBearerV1205Test(String name) {
+        super(name);
+    }
+
+    public OMElement getRequest() {
+        try {
+            OMElement rstElem = TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_12);
+            TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_12, rstElem, RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_12, rstElem);
+            tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
+            
+            TrustUtil.createAppliesToElement(rstElem, "http://localhost:5555/axis2/services/SecureService", this.getWSANamespace());
+            TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_12,
+                    rstElem, RahasConstants.KEY_TYPE_BEARER);
+            TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_12, rstElem, 256);
+            
+            return rstElem;
+            
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("UsernameToken Timestamp");
+        ofc.setUser("joe");
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Timestamp");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "rahas_service_repo_3";
+    }
+
+    public String getRequestAction() throws TrustException {
+        return TrustUtil.getActionValue(RahasConstants.VERSION_05_02, RahasConstants.RST_ACTION_ISSUE);
+    }
+
+    public void validateRsponse(OMElement resp) {
+        OMElement rstr = resp.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                              RahasConstants.LocalNames.
+                                                                      REQUEST_SECURITY_TOKEN_RESPONSE));
+        assertNotNull("RequestedSecurityToken missing", rstr);
+        OMElement rst = rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                             RahasConstants.IssuanceBindingLocalNames.
+                                                                     REQUESTED_SECURITY_TOKEN));
+        assertNotNull("RequestedSecurityToken missing", rst);
+        OMElement elem = rst.getFirstChildWithName(new QName(XML.SAML_NS, "Assertion"));
+        assertNotNull("Missing SAML Assertoin", elem);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getServicePolicy()
+     */
+    public Policy getServicePolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/service-policy-transport-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getSTSPolicy()
+     */
+    public Policy getSTSPolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/sts-policy-transport-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getRSTTemplate()
+     */
+    public OMElement getRSTTemplate() throws TrustException {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem = factory.createOMElement(Constants.RST_TEMPLATE.getLocalPart(), factory.createOMNamespace(Constants.RST_TEMPLATE.getNamespaceURI(),"wsp"));
+        
+        TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_12, elem).setText(RahasConstants.TOK_TYPE_SAML_10);
+        TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_12, elem, RahasConstants.KEY_TYPE_BEARER);
+        
+        return elem;
+    }
+    
+    public int getTrstVersion() {
+        return RahasConstants.VERSION_05_12;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForHoKTest.java b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForHoKTest.java
new file mode 100644
index 0000000..17c0b85
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForHoKTest.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.neethi.Policy;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.secpolicy.Constants;
+import org.opensaml.XML;
+
+import javax.xml.namespace.QName;
+
+public class RahasSAMLTokenUTForHoKTest extends TestClient {
+
+    public RahasSAMLTokenUTForHoKTest(String name) {
+        super(name);
+    }
+
+    public OMElement getRequest() {
+        try {
+            OMElement rstElem = TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_02);
+            TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_02, rstElem, RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, rstElem);
+            tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
+            
+            TrustUtil.createAppliesToElement(rstElem, "http://localhost:5555/axis2/services/SecureService", this.getWSANamespace());
+            TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02,
+                    rstElem, RahasConstants.KEY_TYPE_SYMM_KEY);
+            TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, rstElem, 256);
+            
+            return rstElem;
+            
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("UsernameToken Timestamp");
+        ofc.setUser("joe");
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Timestamp");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "rahas_service_repo_3";
+    }
+
+    public String getRequestAction()  throws TrustException {
+        return TrustUtil.getActionValue(RahasConstants.VERSION_05_02, RahasConstants.RST_ACTION_ISSUE);
+    }
+
+    public void validateRsponse(OMElement resp) {
+        OMElement rst = resp.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_02,
+                                                             RahasConstants.IssuanceBindingLocalNames.
+                                                                     REQUESTED_SECURITY_TOKEN));
+        assertNotNull("RequestedSecurityToken missing", rst);
+        OMElement elem = rst.getFirstChildWithName(new QName(XML.SAML_NS, "Assertion"));
+        assertNotNull("Missing SAML Assertoin", elem);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getServicePolicy()
+     */
+    public Policy getServicePolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/service-policy-transport-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getSTSPolicy()
+     */
+    public Policy getSTSPolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/sts-policy-transport-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getRSTTemplate()
+     */
+    public OMElement getRSTTemplate() throws TrustException {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem = factory.createOMElement(Constants.RST_TEMPLATE.getLocalPart(), factory.createOMNamespace(Constants.RST_TEMPLATE.getNamespaceURI(),"wsp"));
+        
+        TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, elem).setText(RahasConstants.TOK_TYPE_SAML_10);
+        TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02, elem, RahasConstants.KEY_TYPE_SYMM_KEY);
+        TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, elem, 256);
+        
+        return elem;
+    }
+    
+    public int getTrstVersion() {
+        return RahasConstants.VERSION_05_02;
+    }
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForHoKV1205Test.java b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForHoKV1205Test.java
new file mode 100644
index 0000000..ab41c57
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenUTForHoKV1205Test.java
@@ -0,0 +1,253 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axis2.util.Base64;
+import org.apache.neethi.Policy;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.opensaml.XML;
+
+import javax.xml.namespace.QName;
+
+public class RahasSAMLTokenUTForHoKV1205Test extends TestClient {
+
+    byte[] clientEntr;
+    
+    /**
+     * @param name
+     */
+    public RahasSAMLTokenUTForHoKV1205Test(String name) {
+        super(name);
+    }
+
+    public OMElement getRequest() {
+        try {
+            OMElement rstElem = TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_12);
+            TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_12, rstElem, RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_12, rstElem);
+            tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
+            
+            TrustUtil.createAppliesToElement(rstElem,
+//                    "https://207.200.37.116/Ping/Scenario1", this.getWSANamespace());
+                    "http://localhost:5555/axis2/services/SecureService", this.getWSANamespace());
+            TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_12,
+                    rstElem, RahasConstants.KEY_TYPE_SYMM_KEY);
+            TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_12, rstElem, 256);
+            
+            byte[] nonce = WSSecurityUtil.generateNonce(16);
+            clientEntr = nonce;
+            OMElement entrElem = TrustUtil.createEntropyElement(RahasConstants.VERSION_05_12, rstElem);
+            TrustUtil.createBinarySecretElement(RahasConstants.VERSION_05_12, entrElem, RahasConstants.BIN_SEC_TYPE_NONCE).setText(Base64.encode(nonce));
+            TrustUtil.createComputedKeyAlgorithm(RahasConstants.VERSION_05_12,rstElem, RahasConstants.COMPUTED_KEY_PSHA1);
+            
+            return rstElem;
+            
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("UsernameToken Timestamp");
+        ofc.setUser("joe");
+        ofc.setPasswordType(WSConstants.PW_TEXT);
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Timestamp");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "rahas_service_repo_3";
+    }
+
+    public String getRequestAction() throws TrustException {
+        return TrustUtil.getActionValue(RahasConstants.VERSION_05_12, RahasConstants.RST_ACTION_ISSUE);
+    }
+
+    public void validateRsponse(OMElement resp) {
+        OMElement rstr = resp.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                              RahasConstants.LocalNames.
+                                                                      REQUEST_SECURITY_TOKEN_RESPONSE));
+        assertNotNull("RequestedSecurityTokenResponse missing", rstr);
+        OMElement rst = rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                             RahasConstants.IssuanceBindingLocalNames.
+                                                                     REQUESTED_SECURITY_TOKEN));
+        assertNotNull("RequestedSecurityToken missing", rst);
+        
+        OMElement elem = rst.getFirstChildWithName(new QName(XML.SAML_NS, "Assertion"));
+        assertNotNull("Missing SAML Assertoin", elem);
+        
+        //Uncomment for inteorp - START
+//        String respEntrB64 = rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12, RahasConstants.ENTROPY_LN)).getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12, RahasConstants.BINARY_SECRET_LN)).getText().trim();
+//
+//        
+//        
+//        OMElement attrStmtElem = elem.getFirstChildWithName(new QName(XML.SAML_NS, "AttributeStatement"));
+//        OMElement kiElem = attrStmtElem.getFirstChildWithName(new QName(XML.SAML_NS,"Subject")).getFirstChildWithName(new QName(XML.SAML_NS,"SubjectConfirmation")).getFirstChildWithName(new QName("http://www.w3.org/2000/09/xmldsig#", "KeyInfo"));
+//        OMElement encrKey = kiElem.getFirstChildWithName(new QName("http://www.w3.org/2001/04/xmlenc#", "EncryptedKey"));
+//        
+//        
+//        String cipherValue = encrKey.getFirstChildWithName(new QName("http://www.w3.org/2001/04/xmlenc#", "CipherData")).getFirstChildWithName(new QName("http://www.w3.org/2001/04/xmlenc#", "CipherValue")).getText();
+//        
+//        byte[] serviceEntr = Base64.decode(respEntrB64);
+        
+//      try {
+//          this.requestService(elem, clientEntr, serviceEntr);
+//      } catch (Exception e) {
+//          e.printStackTrace();
+//      }
+
+        //Uncomment for inteorp - END
+        
+        
+
+    }
+
+    public Policy getServicePolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/service-policy-transport-binding.xml");
+    }
+
+    public Policy getSTSPolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/sts-policy-transport-binding.xml");
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getRSTTemplate()
+     */
+    public OMElement getRSTTemplate() throws TrustException {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem = factory.createOMElement(Constants.RST_TEMPLATE.getLocalPart(), factory.createOMNamespace(Constants.RST_TEMPLATE.getNamespaceURI(),"wsp"));
+        
+        TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_12, elem).setText(RahasConstants.TOK_TYPE_SAML_10);
+        TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_12, elem, RahasConstants.KEY_TYPE_SYMM_KEY);
+        TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_12, elem, 256);
+        
+        return elem;
+    }
+    
+    public int getTrstVersion() {
+        return RahasConstants.VERSION_05_12;
+    }
+    
+//    private void requestService(OMElement assertion, byte[] reqEnt, byte[] respEnt) throws Exception {
+//        
+//        StAXOMBuilder builder = new StAXOMBuilder(new OMDOMFactory(), assertion.getXMLStreamReader());
+//        Element domAssertionElem = (Element)builder.getDocumentElement();
+//
+//        DocumentBuilderFactoryImpl.setDOOMRequired(true);
+//        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+//        
+//        SOAPFactory fac = new SOAP11Factory((DocumentImpl)doc);
+//        SOAPEnvelope envelope = fac.getDefaultEnvelope();
+//        this.addPayload(envelope);
+//        
+//        WSSecHeader secHeader = new WSSecHeader();
+//        secHeader.insertSecurityHeader(doc);
+//        
+//        WSSecTimestamp ts = new WSSecTimestamp();
+//        ts.prepare(doc);
+//        ts.prependToHeader(secHeader);
+//        
+//        WSSecDKSign sig = new WSSecDKSign();
+//        sig.setSignatureAlgorithm(XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+//        P_SHA1 p_sha1 = new P_SHA1();
+//        SecurityTokenReference ref = new SecurityTokenReference(doc);
+//        ref.setSAMLKeyIdentifier(assertion.getAttributeValue(new QName("AssertionID")));
+//        
+//        System.out.println("\nRequest Entropy: " + Base64.encode(reqEnt));
+//        System.out.println("Response Entropy: " + Base64.encode(respEnt));
+//        
+//        byte[] ephmeralKey = p_sha1.createKey(reqEnt, respEnt, 0, 32);
+//        
+//        System.out.println( ephmeralKey.length * 8 + " bit Key: " + Base64.encode(ephmeralKey));
+//        
+//        sig.setExternalKey(ephmeralKey, ref.getElement());
+//
+//        WSEncryptionPart part = new WSEncryptionPart(WSConstants.TIMESTAMP_TOKEN_LN, WSConstants.WSU_NS, "Element");
+//        Vector partsVector = new Vector();
+//        partsVector.add(part);
+//        sig.setParts(partsVector);
+//        
+//        sig.prepare(doc, secHeader);
+//        sig.addReferencesToSign(partsVector, secHeader);
+//        sig.computeSignature();
+//        
+//        Element importedAssertionElement = (Element) doc.importNode(domAssertionElem, true);
+//        WSSecurityUtil.appendChildElement(doc, secHeader.getSecurityHeader(), importedAssertionElement);
+//        sig.appendDKElementToHeader(secHeader);
+//        sig.appendSigToHeader(secHeader);
+//
+//        
+//        System.out.println(envelope);
+//        
+//        
+//        //Create a service client and send the request
+//        AxisService service = new AxisService("ping");
+//        AxisOperation op = new OutInAxisOperation(new QName("Ping"));
+//        service.addChild(op);
+//        
+//        ServiceClient client = new ServiceClient(ConfigurationContextFactory.createConfigurationContextFromFileSystem(Constants.TESTING_PATH + "rahas_client_repo", null), service);
+//
+//        
+//        OperationClient opClient = client.createClient(new QName("Ping"));
+//        MessageContext mc = new MessageContext();
+//        mc.setEnvelope(envelope);
+//        
+//        client.engageModule(new QName("addressing"));
+//        client.engageModule(new QName("rampart"));
+//        
+//        opClient.addMessageContext(mc);
+////        opClient.getOptions().setTo(new EndpointReference("https://131.107.72.15/PingService/OasisScenario1"));
+//        opClient.getOptions().setTo(new EndpointReference("https://207.200.37.116/Ping/Scenario1"));
+//        
+//        opClient.getOptions().setAction("http://example.org/Ping");
+////        opClient.getOptions().setProperty(AddressingConstants.WS_ADDRESSING_VERSION, AddressingConstants.Submission.WSA_NAMESPACE);
+//        
+//        opClient.execute(true);
+//        MessageContext response = opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+//        System.out.println("------------------------------RESPONSE------------------------------\n" + response.getEnvelope());
+//        
+//    }
+//    
+//    private void addPayload(SOAPEnvelope env) {
+//        //<Ping xmlns="http://example.org/Ping">Ping</Ping>
+//        OMNamespace ns = env.getOMFactory().createOMNamespace("http://example.org/Ping", "");
+//        OMElement elem = env.getOMFactory().createOMElement("Ping", ns);
+//        elem.setText("Ping");
+//        
+//        env.getBody().addChild(elem);
+//    }
+    
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenV1205Test.java b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenV1205Test.java
new file mode 100644
index 0000000..cd101ac
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/RahasSAMLTokenV1205Test.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.neethi.Policy;
+import org.apache.rahas.PWCallback;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.secpolicy.Constants;
+import org.opensaml.XML;
+
+import javax.xml.namespace.QName;
+
+/**
+ * RahasSAMLTokenTest with the WS-SX namespaces
+ */
+public class RahasSAMLTokenV1205Test extends TestClient {
+
+    /**
+     * @param name
+     */
+    public RahasSAMLTokenV1205Test(String name) {
+        super(name);
+    }
+
+    public OMElement getRequest() {
+        try {
+            OMElement rstElem = TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_12);
+            TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_12, rstElem, RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_12, rstElem);
+            tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
+            
+            TrustUtil.createAppliesToElement(rstElem, "http://localhost:5555/axis2/services/SecureService", this.getWSANamespace());
+            TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_12,
+                    rstElem, RahasConstants.KEY_TYPE_SYMM_KEY);
+            TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_12, rstElem, 256);
+            
+            return rstElem;
+            
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+    public OutflowConfiguration getClientOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+
+        ofc.setActionItems("Signature Encrypt Timestamp");
+        ofc.setUser("alice");
+        ofc.setSignaturePropFile("rahas-sec.properties");
+        ofc.setPasswordCallbackClass(PWCallback.class.getName());
+        return ofc;
+    }
+
+    public InflowConfiguration getClientInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+
+        ifc.setActionItems("Signature Encrypt Timestamp");
+        ifc.setPasswordCallbackClass(PWCallback.class.getName());
+        ifc.setSignaturePropFile("rahas-sec.properties");
+        
+        return ifc;
+    }
+
+    public String getServiceRepo() {
+        return "rahas_service_repo_1";
+    }
+    
+    public void validateRsponse(OMElement resp) {
+        OMElement rstr = resp.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                              RahasConstants.LocalNames.
+                                                                      REQUEST_SECURITY_TOKEN_RESPONSE));
+        assertNotNull("RequestedSecurityToken missing", rstr);
+        OMElement rst = rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                             RahasConstants.IssuanceBindingLocalNames.
+                                                                     REQUESTED_SECURITY_TOKEN));
+        assertNotNull("RequestedSecurityToken missing", rst);
+        OMElement elem = rst.getFirstChildWithName(new QName(XML.SAML_NS, "Assertion"));
+        assertNotNull("Missing SAML Assertoin", elem);
+    }
+
+    public String getRequestAction() throws TrustException {
+        return TrustUtil.getActionValue(RahasConstants.VERSION_05_12, RahasConstants.RST_ACTION_ISSUE);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getServicePolicy()
+     */
+    public Policy getServicePolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/service-policy-symm-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getSTSPolicy()
+     */
+    public Policy getSTSPolicy() throws Exception {
+        return this.getPolicy("test-resources/rahas/policy/sts-policy-asymm-binding.xml");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TestClient#getRSTTemplate()
+     */
+    public OMElement getRSTTemplate() throws TrustException {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem = factory.createOMElement(Constants.RST_TEMPLATE.getLocalPart(), factory.createOMNamespace(Constants.RST_TEMPLATE.getNamespaceURI(),"wsp"));
+        
+        TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_12, elem).setText(RahasConstants.TOK_TYPE_SAML_10);
+        TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_12, elem, RahasConstants.KEY_TYPE_SYMM_KEY);
+        TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_12, elem, 256);
+        
+        return elem;
+    }
+    
+    public int getTrstVersion() {
+        return RahasConstants.VERSION_05_12;
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/Service.java b/rampart_1_1/modules/integration/test/org/apache/rahas/Service.java
new file mode 100644
index 0000000..bce2f98
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/Service.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+import org.apache.axiom.om.OMElement;
+
+public class Service {
+
+	public OMElement echo(OMElement elem) {
+		elem.build();
+		elem.detach();
+        System.out.println("Service invoked");
+		return elem;
+	}
+	
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rahas/TestClient.java b/rampart_1_1/modules/integration/test/org/apache/rahas/TestClient.java
new file mode 100644
index 0000000..3d3eb88
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rahas/TestClient.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+public abstract class TestClient extends TestCase {
+
+    protected int port = UtilServer.TESTING_PORT;
+
+    public TestClient(String name) {
+        super(name);
+    }
+
+    protected void setUp() throws Exception {
+        UtilServer.start(Constants.TESTING_PATH + getServiceRepo(), null);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.stop();
+    }
+
+    /**
+     */
+    public void testRequest() {
+        try {
+
+            // Get the repository location from the args
+            String repo = Constants.TESTING_PATH + "rahas_client_repo";
+
+            ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo,
+                                                                                                                      null);
+            ServiceClient serviceClient = new ServiceClient(configContext, null);
+            Options options = new Options();
+
+            System.setProperty("javax.net.ssl.keyStorePassword", "password");
+            System.setProperty("javax.net.ssl.keyStoreType", "JKS");
+            System.setProperty("javax.net.ssl.trustStore", "/home/ruchith/Desktop/interop/certs/interop2.jks");
+            System.setProperty("javax.net.ssl.trustStorePassword", "password");
+            System.setProperty("javax.net.ssl.trustStoreType","JKS");
+
+            options.setTo(new EndpointReference("http://127.0.0.1:" + port + "/axis2/services/SecureService"));
+//            options.setTo(new EndpointReference("http://127.0.0.1:" + 9090 + "/axis2/services/UTSAMLHoK"));
+//            options.setTo(new EndpointReference("https://www-lk.wso2.com:8443/axis2/services/UTSAMLHoK"));
+//            options.setTo(new EndpointReference("https://192.18.49.133:2343/jaxws-s1-sts/sts"));
+//            options.setTo(new EndpointReference("https://207.200.37.116/SxSts/Scenario_1_IssuedTokenOverTransport_UsernameOverTransport"));
+//            options.setTo(new EndpointReference("http://localhost:9090/SxSts/Scenario_4_IssuedToken_MutualCertificate10"));
+
+//            options.setTo(new EndpointReference("http://127.0.0.1:" + 9090 + "/axis2/services/MutualCertsSAMLHoK"));
+//            options.setTo(new EndpointReference("http://www-lk.wso2.com:8888/axis2/services/MutualCertsSAMLHoK"));
+//            options.setTo(new EndpointReference("https://131.107.72.15/trust/Addressing2004/UserName"));
+//            options.setTo(new EndpointReference("https://131.107.72.15/trust/UserName"));
+//            options.setTo(new EndpointReference("http://127.0.0.1:" + 9090 + "/trust/X509WSS10"));
+//            options.setTo(new EndpointReference("https://131.107.72.15/trust/UserName"));
+//            options.setTo(new EndpointReference("http://127.0.0.1:" + 9090 + "/jaxws-s4-sts/sts"));
+//            options.setTo(new EndpointReference("http://127.0.0.1:9090/jaxws-s4/simple"));
+//            options.setTo(new EndpointReference("http://127.0.0.1:" + 9090 + "/axis2/services/UTSAMLBearer"));
+
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setAction(this.getRequestAction());
+//            options.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, this.getWSANamespace());
+
+
+            OutflowConfiguration clientOutflowConfiguration = getClientOutflowConfiguration();
+            if (clientOutflowConfiguration != null) {
+                options.setProperty(WSSHandlerConstants.OUTFLOW_SECURITY, clientOutflowConfiguration.getProperty());
+            }
+            InflowConfiguration clientInflowConfiguration = getClientInflowConfiguration();
+            if (clientInflowConfiguration != null) {
+                options.setProperty(WSSHandlerConstants.INFLOW_SECURITY, clientInflowConfiguration.getProperty());
+            }
+
+            serviceClient.engageModule(new QName("addressing"));
+            serviceClient.engageModule(new QName("rampart"));
+
+            serviceClient.setOptions(options);
+
+            //Blocking invocation
+
+            OMElement result = serviceClient.sendReceive(getRequest());
+
+            this.validateRsponse(result);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+
+    protected String getWSANamespace() {
+        return AddressingConstants.Submission.WSA_NAMESPACE;
+    }
+
+    public abstract OMElement getRequest();
+
+    public abstract OutflowConfiguration getClientOutflowConfiguration();
+
+    public abstract InflowConfiguration getClientInflowConfiguration();
+
+    public abstract String getServiceRepo();
+
+    public abstract String getRequestAction() throws TrustException;
+
+    public abstract void validateRsponse(OMElement resp);
+
+//
+//    /**
+//     * This test will use WS-SecPolicy
+//     */
+//    public void testWithStsClient() {
+//
+//        // Get the repository location from the args
+//        String repo = Constants.TESTING_PATH + "rahas_client_repo";
+//
+//        try {
+//            ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo,
+//                                                                                                                      null);
+//
+//            STSClient client = new STSClient(configContext);
+//
+//            client.setAction(this.getRequestAction());
+//
+//            client.setRstTemplate(this.getRSTTemplate());
+//            client.setVersion(this.getTrstVersion());
+//
+//            Token tok =
+//                    client.requestSecurityToken(this.getServicePolicy(),
+//                                                "http://127.0.0.1:" + port + "/axis2/services/SecureService",
+//                                                this.getSTSPolicy(),
+//                                                "http://localhost:5555/axis2/services/SecureService");
+//
+//            assertNotNull("Response token missing", tok);
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            fail(e.getMessage());
+//        }
+//
+//    }
+
+    public abstract int getTrstVersion();
+
+    public abstract Policy getServicePolicy() throws Exception;
+
+    public abstract Policy getSTSPolicy() throws Exception;
+
+    public abstract OMElement getRSTTemplate() throws TrustException;
+
+    protected Policy getPolicy(String filePath) throws Exception {
+        StAXOMBuilder builder = new StAXOMBuilder(filePath);
+        OMElement elem = builder.getDocumentElement();
+        return PolicyEngine.getPolicy(elem);
+    }
+
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rampart/PWCallback.java b/rampart_1_1/modules/integration/test/org/apache/rampart/PWCallback.java
new file mode 100644
index 0000000..7b82942
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rampart/PWCallback.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCallback implements CallbackHandler {
+
+
+
+    /** Field key */
+
+    private static final byte[] key = {
+
+        (byte) 0x31, (byte) 0xfd, (byte) 0xcb, (byte) 0xda, (byte) 0xfb,
+
+        (byte) 0xcd, (byte) 0x6b, (byte) 0xa8, (byte) 0xe6, (byte) 0x19,
+
+        (byte) 0xa7, (byte) 0xbf, (byte) 0x51, (byte) 0xf7, (byte) 0xc7,
+
+        (byte) 0x3e, (byte) 0x80, (byte) 0xae, (byte) 0x98, (byte) 0x51,
+
+        (byte) 0xc8, (byte) 0x51, (byte) 0x34, (byte) 0x04,
+
+    };
+
+
+
+    /*
+
+     * (non-Javadoc)
+
+     * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
+
+     */
+
+
+
+    /**
+
+     * Method handle
+
+     * 
+
+     * @param callbacks 
+
+     * @throws java.io.IOException                  
+
+     * @throws javax.security.auth.callback.UnsupportedCallbackException 
+
+     */
+
+    public void handle(Callback[] callbacks)
+
+            throws IOException, UnsupportedCallbackException {
+
+
+
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+
+
+
+                /*
+
+                 * This usage type is used only in case we received a
+
+                 * username token with a password of type PasswordText or
+
+                 * an unknown password type.
+
+                 * 
+
+                 * This case the WSPasswordCallback object contains the
+
+                 * identifier (aka username), the password we received, and
+
+                 * the password type string to identify the type.
+
+                 * 
+
+                 * Here we perform only a very simple check.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+
+                    if(pc.getIdentifer().equals("Ron") && pc.getPassword().equals("noR")) {
+
+                        return;
+
+                    }
+                    
+                    if(pc.getIdentifer().equals("joe") && pc.getPassword().equals("eoj")) {
+
+                        return;
+
+                    }
+                    
+                    if (pc.getPassword().equals("sirhC")) {
+
+                        return;
+
+                    }       
+                    
+                    if(pc.getIdentifer().equals("alice") && pc.getPassword().equals("password")) {
+                        return;
+                    }
+
+                    throw new UnsupportedCallbackException(callbacks[i],
+
+                    "check failed");
+
+                }
+
+                /*
+
+                 * here call a function/method to lookup the password for
+
+                 * the given identifier (e.g. a user name or keystore alias)
+
+                 * e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier))
+
+                 * for Testing we supply a fixed name here.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.KEY_NAME) {
+
+                    pc.setKey(key);
+
+                } else if(pc.getIdentifer().equals("alice")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("bob")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("Ron")) {
+
+                    pc.setPassword("noR");
+
+                } else if(pc.getIdentifer().equals("joe")) {
+
+                    pc.setPassword("eoj");
+
+                } else if(pc.getIdentifer().equals("ip")) {
+                    
+                    pc.setPassword("password");
+                    
+                } else {
+
+                    pc.setPassword("sirhC");
+
+                }
+
+            } else {
+
+                throw new UnsupportedCallbackException(callbacks[i],
+
+                        "Unrecognized Callback");
+
+            }
+
+        }
+
+    }
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/integration/test/org/apache/rampart/RampartTest.java b/rampart_1_1/modules/integration/test/org/apache/rampart/RampartTest.java
new file mode 100644
index 0000000..8998ffc
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rampart/RampartTest.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.integration.UtilServer;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+
+public class RampartTest extends TestCase {
+    
+    public final static int PORT = UtilServer.TESTING_PORT;
+    
+    public RampartTest(String name) {
+        super(name);
+    }
+
+    protected void setUp() throws Exception {
+        UtilServer.start(Constants.TESTING_PATH + "rampart_service_repo" ,null);
+    }
+    
+
+    protected void tearDown() throws Exception {
+        UtilServer.stop();
+    }
+
+    
+    public void testWithPolicy() {
+        try {
+            String repo = Constants.TESTING_PATH + "rampart_client_repo";
+    
+            ConfigurationContext configContext = ConfigurationContextFactory.
+                        createConfigurationContextFromFileSystem(repo, null);
+            ServiceClient serviceClient = new ServiceClient(configContext, null);
+            
+
+            serviceClient.engageModule(new QName("addressing"));
+            serviceClient.engageModule(new QName("rampart"));
+
+            //TODO : figure this out !!
+            boolean basic256Supported = false;
+            
+            if(basic256Supported) {
+                System.out.println("WARNING: We are using key sizes from JCE " +
+                        "Unlimited Strength Jurisdiction Policy !!!");
+            }
+            
+            for (int i = 1; i <= 9; i++) { //<-The number of tests we have
+                if(!basic256Supported && (i == 3 || i == 4 || i ==5)) {
+                    //Skip the Basic256 tests
+                    continue;
+                }
+                Options options = new Options();
+                System.out.println("Testing WS-Sec: custom scenario " + i);
+                options.setAction("urn:echo");
+                options.setTo(new EndpointReference("http://127.0.0.1:" +
+                                        PORT + 
+                                        "/axis2/services/SecureService" + i));
+                options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, 
+                        loadPolicy("test-resources/rampart/policy/" + i + ".xml"));
+                serviceClient.setOptions(options);
+
+                //Blocking invocation
+                serviceClient.sendReceive(getEchoElement());
+            }
+
+            
+            for (int i = 1; i <= 2; i++) { //<-The number of tests we have
+
+                Options options = new Options();
+                System.out.println("Testing WS-SecConv: custom scenario " + i);
+                options.setAction("urn:echo");
+                options.setTo(new EndpointReference("http://127.0.0.1:" + PORT + "/axis2/services/SecureServiceSC" + i));
+                options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, loadPolicy("test-resources/rampart/policy/sc-" + i + ".xml"));
+                serviceClient.setOptions(options);
+
+                //Blocking invocation
+                serviceClient.sendReceive(getEchoElement());
+                serviceClient.sendReceive(getEchoElement());
+                
+                //Cancel the token
+                options.setProperty(RampartMessageData.CANCEL_REQUEST, Constants.VALUE_TRUE);
+                serviceClient.sendReceive(getEchoElement());
+                
+                options.setProperty(RampartMessageData.CANCEL_REQUEST, Constants.VALUE_FALSE);
+                serviceClient.sendReceive(getEchoElement());
+                options.setProperty(RampartMessageData.CANCEL_REQUEST, Constants.VALUE_TRUE);
+                serviceClient.sendReceive(getEchoElement());
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+    
+    private OMElement getEchoElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://example1.org/example1", "example1");
+        OMElement method = fac.createOMElement("echo", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createOMText(value, "Testing Rampart with WS-SecPolicy"));
+        method.addChild(value);
+
+        return method;
+    }
+    
+    private Policy loadPolicy(String xmlPath) throws Exception {
+        StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
+        return PolicyEngine.getPolicy(builder.getDocumentElement());
+    }
+    
+
+    
+}
diff --git a/rampart_1_1/modules/integration/test/org/apache/rampart/Service.java b/rampart_1_1/modules/integration/test/org/apache/rampart/Service.java
new file mode 100644
index 0000000..122982a
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/org/apache/rampart/Service.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+import org.apache.axiom.om.OMElement;
+
+public class Service {
+
+	public OMElement echo(OMElement elem) {
+		elem.build();
+		elem.detach();
+        System.out.println("Service invoked");
+		return elem;
+	}
+	
+}
diff --git a/rampart_1_1/modules/integration/test/samples/wsdl/bench/Benchmark.wsdl b/rampart_1_1/modules/integration/test/samples/wsdl/bench/Benchmark.wsdl
new file mode 100644
index 0000000..2143843
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/samples/wsdl/bench/Benchmark.wsdl
@@ -0,0 +1,666 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:impl="http://www.extreme.indiana.edu/wsdl/Benchmark1" xmlns:intf="http://www.extreme.indiana.edu/wsdl/Benchmark1" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.extreme.indiana.edu/wsdl/Benchmark1">

+	<wsdl:types>

+		<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.extreme.indiana.edu/wsdl/Benchmark1" elementFormDefault="qualified">

+			<element name="echoVoid">

+				<complexType/>

+			</element>

+			<element name="echoVoidResponse">

+				<complexType/>

+			</element>

+			<element name="echoBase64">

+				<complexType>

+					<sequence>

+						<element name="input" type="xsd:base64Binary"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoBase64Response">

+				<complexType>

+					<sequence>

+						<element name="echoBase64Return" type="xsd:base64Binary"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoStrings">

+				<complexType>

+					<sequence>

+						<element name="input" type="xsd:string" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoStringsResponse">

+				<complexType>

+					<sequence>

+						<element name="echoStringsReturn" type="xsd:string" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoInts">

+				<complexType>

+					<sequence>

+						<element name="input" type="xsd:int" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoIntsResponse">

+				<complexType>

+					<sequence>

+						<element name="echoIntsReturn" type="xsd:int" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoDoubles">

+				<complexType>

+					<sequence>

+						<element name="input" type="xsd:double" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoDoublesResponse">

+				<complexType>

+					<sequence>

+						<element name="echoDoublesReturn" type="xsd:double" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveBase64">

+				<complexType>

+					<sequence>

+						<element name="input" type="xsd:base64Binary"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveBase64Response">

+				<complexType>

+					<sequence>

+						<element name="receiveBase64Return" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveStrings">

+				<complexType>

+					<sequence>

+						<element name="input" type="xsd:string" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveStringsResponse">

+				<complexType>

+					<sequence>

+						<element name="receiveStringsReturn" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveInts">

+				<complexType>

+					<sequence>

+						<element name="input" type="xsd:int" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveIntsResponse">

+				<complexType>

+					<sequence>

+						<element name="receiveIntsReturn" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveDoubles">

+				<complexType>

+					<sequence>

+						<element name="input" type="xsd:double" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveDoublesResponse">

+				<complexType>

+					<sequence>

+						<element name="receiveDoublesReturn" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveSimpleEventsRequest">

+				<complexType>

+					<sequence>

+						<element name="input" type="impl:ArrayOfSimpleEvent"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveMeshInterfaceObjectsRequest">

+				<complexType>

+					<sequence>

+						<element name="input" type="impl:ArrayOfMeshInterfaceObject"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveSimpleEventsResponse">

+				<complexType>

+					<sequence>

+						<element name="receiveSimpleEventsReturn" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="receiveMeshInterfaceObjectsResponse">

+				<complexType>

+					<sequence>

+						<element name="receiveMeshInterfaceObjectsReturn" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendBase64">

+				<complexType>

+					<sequence>

+						<element name="size" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendBase64Response">

+				<complexType>

+					<sequence>

+						<element name="sendBase64Return" type="xsd:base64Binary"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendStrings">

+				<complexType>

+					<sequence>

+						<element name="size" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendStringsResponse">

+				<complexType>

+					<sequence>

+						<element name="sendStringsReturn" type="xsd:string" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendInts">

+				<complexType>

+					<sequence>

+						<element name="size" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendIntsResponse">

+				<complexType>

+					<sequence>

+						<element name="sendIntsReturn" type="xsd:int" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendDoubles">

+				<complexType>

+					<sequence>

+						<element name="size" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendDoublesResponse">

+				<complexType>

+					<sequence>

+						<element name="sendDoublesReturn" type="xsd:double" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendSimpleEventsRequest">

+				<complexType>

+					<sequence>

+						<element name="size" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendSimpleEventsResponse">

+				<complexType>

+					<sequence>

+						<element name="sendSimpleEventsReturn" type="impl:ArrayOfSimpleEvent"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendMeshInterfaceObjectsRequest">

+				<complexType>

+					<sequence>

+						<element name="size" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="sendMeshInterfaceObjectsResponse">

+				<complexType>

+					<sequence>

+						<element name="sendMeshInterfaceObjectsReturn" type="impl:ArrayOfMeshInterfaceObject"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoSimpleEventsRequest">

+				<complexType>

+					<sequence>

+						<element name="input" type="impl:ArrayOfSimpleEvent"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoSimpleEventsResponse">

+				<complexType>

+					<sequence>

+						<element name="echoSimpleEventsReturn" type="impl:ArrayOfSimpleEvent"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoMeshInterfaceObjectsRequest">

+				<complexType>

+					<sequence>

+						<element name="input" type="impl:MeshInterfaceObject" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoMeshInterfaceObjectsResponse">

+				<complexType>

+					<sequence>

+						<element name="echoMeshInterfaceObjectReturn" type="impl:MeshInterfaceObject" maxOccurs="unbounded"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="SimpleEvent" type="impl:SimpleEvent"/>

+			<xsd:complexType name="SimpleEvent">

+				<xsd:all>

+					<xsd:element name="sequenceNumber" type="xsd:int"/>

+					<xsd:element name="timestamp" type="xsd:double"/>

+					<xsd:element name="message" type="xsd:string"/>

+				</xsd:all>

+			</xsd:complexType>

+			<element name="ArrayOfSimpleEvent" type="impl:ArrayOfSimpleEvent"/>

+			<complexType name="ArrayOfSimpleEvent">

+				<xsd:sequence>

+					<xsd:element minOccurs="0" maxOccurs="unbounded" name="item" nillable="true" type="impl:SimpleEvent"/>

+				</xsd:sequence>

+			</complexType>

+			<element name="MeshInterfaceObject" type="impl:MeshInterfaceObject"/>

+			<xsd:complexType name="MeshInterfaceObject">

+				<xsd:all>

+					<xsd:element name="x" type="xsd:int"/>

+					<xsd:element name="y" type="xsd:int"/>

+					<xsd:element name="value" type="xsd:double"/>

+				</xsd:all>

+			</xsd:complexType>

+			<element name="ArrayOfMeshInterfaceObject" type="impl:ArrayOfMeshInterfaceObject"/>

+			<complexType name="ArrayOfMeshInterfaceObject">

+				<xsd:sequence>

+					<xsd:element minOccurs="0" maxOccurs="unbounded" name="item" nillable="true" type="impl:MeshInterfaceObject"/>

+				</xsd:sequence>

+			</complexType>

+		</schema>

+	</wsdl:types>

+	<wsdl:message name="echoIntsRequest">

+		<wsdl:part name="parameters" element="impl:echoInts"/>

+	</wsdl:message>

+	<wsdl:message name="echoBase64Request">

+		<wsdl:part name="parameters" element="impl:echoBase64"/>

+	</wsdl:message>

+	<wsdl:message name="echoVoidResponse">

+		<wsdl:part name="parameters" element="impl:echoVoidResponse"/>

+	</wsdl:message>

+	<wsdl:message name="receiveDoublesRequest">

+		<wsdl:part name="parameters" element="impl:receiveDoubles"/>

+	</wsdl:message>

+	<wsdl:message name="sendBase64Response">

+		<wsdl:part name="parameters" element="impl:sendBase64Response"/>

+	</wsdl:message>

+	<wsdl:message name="echoStringsRequest">

+		<wsdl:part name="parameters" element="impl:echoStrings"/>

+	</wsdl:message>

+	<wsdl:message name="sendStringsRequest">

+		<wsdl:part name="parameters" element="impl:sendStrings"/>

+	</wsdl:message>

+	<wsdl:message name="sendIntsRequest">

+		<wsdl:part name="parameters" element="impl:sendInts"/>

+	</wsdl:message>

+	<wsdl:message name="receiveStringsRequest">

+		<wsdl:part name="parameters" element="impl:receiveStrings"/>

+	</wsdl:message>

+	<wsdl:message name="echoBase64Response">

+		<wsdl:part name="parameters" element="impl:echoBase64Response"/>

+	</wsdl:message>

+	<wsdl:message name="receiveIntsRequest">

+		<wsdl:part name="parameters" element="impl:receiveInts"/>

+	</wsdl:message>

+	<wsdl:message name="sendIntsResponse">

+		<wsdl:part name="parameters" element="impl:sendIntsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="receiveBase64Request">

+		<wsdl:part name="parameters" element="impl:receiveBase64"/>

+	</wsdl:message>

+	<wsdl:message name="sendDoublesResponse">

+		<wsdl:part name="parameters" element="impl:sendDoublesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="receiveBase64Response">

+		<wsdl:part name="parameters" element="impl:receiveBase64Response"/>

+	</wsdl:message>

+	<wsdl:message name="echoIntsResponse">

+		<wsdl:part name="parameters" element="impl:echoIntsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="echoDoublesRequest">

+		<wsdl:part name="parameters" element="impl:echoDoubles"/>

+	</wsdl:message>

+	<wsdl:message name="sendDoublesRequest">

+		<wsdl:part name="parameters" element="impl:sendDoubles"/>

+	</wsdl:message>

+	<wsdl:message name="sendStringsResponse">

+		<wsdl:part name="parameters" element="impl:sendStringsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="echoStringsResponse">

+		<wsdl:part name="parameters" element="impl:echoStringsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="receiveIntsResponse">

+		<wsdl:part name="parameters" element="impl:receiveIntsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="receiveDoublesResponse">

+		<wsdl:part name="parameters" element="impl:receiveDoublesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="echoVoidRequest">

+		<wsdl:part name="parameters" element="impl:echoVoid"/>

+	</wsdl:message>

+	<wsdl:message name="receiveStringsResponse">

+		<wsdl:part name="parameters" element="impl:receiveStringsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="sendBase64Request">

+		<wsdl:part name="parameters" element="impl:sendBase64"/>

+	</wsdl:message>

+	<wsdl:message name="echoDoublesResponse">

+		<wsdl:part name="parameters" element="impl:echoDoublesResponse"/>

+	</wsdl:message>

+	<wsdl:message name="echoSimpleEventsRequest">

+		<wsdl:part name="input" element="impl:echoSimpleEventsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="echoSimpleEventsResponse">

+		<wsdl:part name="output" element="impl:echoSimpleEventsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="echoMeshInterfaceObjectsRequest">

+		<wsdl:part name="input" element="impl:echoMeshInterfaceObjectsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="echoMeshInterfaceObjectsResponse">

+		<wsdl:part name="output" element="impl:echoMeshInterfaceObjectsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="receiveSimpleEventsRequest">

+		<wsdl:part name="input" element="impl:receiveSimpleEventsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="receiveSimpleEventsResponse">

+		<wsdl:part name="size" element="impl:receiveSimpleEventsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="receiveMeshInterfaceObjectsRequest">

+		<wsdl:part name="input" element="impl:receiveMeshInterfaceObjectsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="receiveMeshInterfaceObjectsResponse">

+		<wsdl:part name="size" element="impl:receiveMeshInterfaceObjectsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="sendSimpleEventsRequest">

+		<wsdl:part name="size" element="impl:sendSimpleEventsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="sendSimpleEventsResponse">

+		<wsdl:part name="output" element="impl:sendSimpleEventsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="sendMeshInterfaceObjectsRequest">

+		<wsdl:part name="size" element="impl:sendMeshInterfaceObjectsRequest"/>

+	</wsdl:message>

+	<wsdl:message name="sendMeshInterfaceObjectsResponse">

+		<wsdl:part name="output" element="impl:sendMeshInterfaceObjectsResponse"/>

+	</wsdl:message>

+	<wsdl:portType name="Benchmark">

+		<wsdl:operation name="echoVoid">

+			<wsdl:input name="echoVoidRequest" message="impl:echoVoidRequest"/>

+			<wsdl:output name="echoVoidResponse" message="impl:echoVoidResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="echoBase64">

+			<wsdl:input name="echoBase64Request" message="impl:echoBase64Request"/>

+			<wsdl:output name="echoBase64Response" message="impl:echoBase64Response"/>

+		</wsdl:operation>

+		<wsdl:operation name="echoStrings">

+			<wsdl:input name="echoStringsRequest" message="impl:echoStringsRequest"/>

+			<wsdl:output name="echoStringsResponse" message="impl:echoStringsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="echoInts">

+			<wsdl:input name="echoIntsRequest" message="impl:echoIntsRequest"/>

+			<wsdl:output name="echoIntsResponse" message="impl:echoIntsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="echoDoubles">

+			<wsdl:input name="echoDoublesRequest" message="impl:echoDoublesRequest"/>

+			<wsdl:output name="echoDoublesResponse" message="impl:echoDoublesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="echoSimpleEvents">

+			<wsdl:input name="echoSimpleEventsRequest" message="impl:echoSimpleEventsRequest"/>

+			<wsdl:output name="echoSimpleEventsResponse" message="impl:echoSimpleEventsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="echoMeshInterfaceObjects">

+			<wsdl:input name="echoMeshInterfaceObjectsRequest" message="impl:echoMeshInterfaceObjectsRequest"/>

+			<wsdl:output name="echoMeshInterfaceObjectsResponse" message="impl:echoMeshInterfaceObjectsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="receiveBase64">

+			<wsdl:input name="receiveBase64Request" message="impl:receiveBase64Request"/>

+			<wsdl:output name="receiveBase64Response" message="impl:receiveBase64Response"/>

+		</wsdl:operation>

+		<wsdl:operation name="receiveStrings">

+			<wsdl:input name="receiveStringsRequest" message="impl:receiveStringsRequest"/>

+			<wsdl:output name="receiveStringsResponse" message="impl:receiveStringsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="receiveInts">

+			<wsdl:input name="receiveIntsRequest" message="impl:receiveIntsRequest"/>

+			<wsdl:output name="receiveIntsResponse" message="impl:receiveIntsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="receiveDoubles">

+			<wsdl:input name="receiveDoublesRequest" message="impl:receiveDoublesRequest"/>

+			<wsdl:output name="receiveDoublesResponse" message="impl:receiveDoublesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="receiveSimpleEvents">

+			<wsdl:input name="receiveSimpleEventsRequest" message="impl:receiveSimpleEventsRequest"/>

+			<wsdl:output name="receiveSimpleEventsResponse" message="impl:receiveSimpleEventsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="receiveMeshInterfaceObjects">

+			<wsdl:input name="receiveMeshInterfaceObjectsRequest" message="impl:receiveMeshInterfaceObjectsRequest"/>

+			<wsdl:output name="receiveMeshInterfaceObjectsResponse" message="impl:receiveMeshInterfaceObjectsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="sendBase64">

+			<wsdl:input name="sendBase64Request" message="impl:sendBase64Request"/>

+			<wsdl:output name="sendBase64Response" message="impl:sendBase64Response"/>

+		</wsdl:operation>

+		<wsdl:operation name="sendStrings">

+			<wsdl:input name="sendStringsRequest" message="impl:sendStringsRequest"/>

+			<wsdl:output name="sendStringsResponse" message="impl:sendStringsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="sendInts">

+			<wsdl:input name="sendIntsRequest" message="impl:sendIntsRequest"/>

+			<wsdl:output name="sendIntsResponse" message="impl:sendIntsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="sendDoubles">

+			<wsdl:input name="sendDoublesRequest" message="impl:sendDoublesRequest"/>

+			<wsdl:output name="sendDoublesResponse" message="impl:sendDoublesResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="sendSimpleEvents">

+			<wsdl:input name="sendSimpleEventsRequest" message="impl:sendSimpleEventsRequest"/>

+			<wsdl:output name="sendSimpleEventsResponse" message="impl:sendSimpleEventsResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="sendMeshInterfaceObjects">

+			<wsdl:input name="sendMeshInterfaceObjectsRequest" message="impl:sendMeshInterfaceObjectsRequest"/>

+			<wsdl:output name="sendMeshInterfaceObjectsResponse" message="impl:sendMeshInterfaceObjectsResponse"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:binding name="BenchmarkSoapBinding" type="impl:Benchmark">

+		<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<wsdl:operation name="echoVoid">

+			<wsdlsoap:operation soapAction="echoVoid"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="echoBase64">

+			<wsdlsoap:operation soapAction="echoBase64"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="echoStrings">

+			<wsdlsoap:operation soapAction="echoStrings"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="echoInts">

+			<wsdlsoap:operation soapAction="echoInts"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="echoDoubles">

+			<wsdlsoap:operation soapAction="echoDoubles"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="echoSimpleEvents">

+			<wsdlsoap:operation soapAction="echoSimpleEvents"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="echoMeshInterfaceObjects">

+			<wsdlsoap:operation soapAction="echoMeshInterfaceObjects"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="receiveBase64">

+			<wsdlsoap:operation soapAction="receiveBase64"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="receiveStrings">

+			<wsdlsoap:operation soapAction="receiveStrings"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="receiveInts">

+			<wsdlsoap:operation soapAction="receiveInts"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="receiveDoubles">

+			<wsdlsoap:operation soapAction="receiveDoubles"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="receiveSimpleEvents">

+			<wsdlsoap:operation soapAction="receiveSimpleEvents"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="receiveMeshInterfaceObjects">

+			<wsdlsoap:operation soapAction="receiveMeshInterfaceObjects"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="sendBase64">

+			<wsdlsoap:operation soapAction="sendBase64"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="sendStrings">

+			<wsdlsoap:operation soapAction="sendStrings"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="sendInts">

+			<wsdlsoap:operation soapAction="sendInts"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="sendDoubles">

+			<wsdlsoap:operation soapAction="sendDoubles"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="sendSimpleEvents">

+			<wsdlsoap:operation soapAction="sendSimpleEvents"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="sendMeshInterfaceObjects">

+			<wsdlsoap:operation soapAction="sendMeshInterfaceObjects"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:service name="Benchmark">

+		<wsdl:port name="Benchmark" binding="impl:BenchmarkSoapBinding">

+			<wsdlsoap:address location="http://localhost:8080/axis2/services/Benchmark"/>

+		</wsdl:port>

+	</wsdl:service>

+	<!--WSDL created by Apache Axis version: 1.4

+Built on Jan 01, 2006 (10:17:00 EST)-->

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/integration/test/samples/wsdl/perf/PerfPortTypeSkeleton.java b/rampart_1_1/modules/integration/test/samples/wsdl/perf/PerfPortTypeSkeleton.java
new file mode 100644
index 0000000..940d447
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/samples/wsdl/perf/PerfPortTypeSkeleton.java
@@ -0,0 +1,39 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
+/**

+ * PerfPortTypeSkeleton.java This file was auto-generated from WSDL by the

+ * Apache Axis2 version: 0.94-dev Jan 07, 2006 (08:13:00 EST)

+ */

+package samples.wsdl.perf;

+

+/**

+ * PerfPortTypeSkeleton java skeleton for the axisService

+ */

+public class PerfPortTypeSkeleton{

+    /**

+     * Auto generated method signature

+     *

+     * @param param0

+     */

+    public samples.wsdl.perf.OutputElementDocument handleStringArray(

+        samples.wsdl.perf.InputElementDocument param0) {

+

+        samples.wsdl.perf.OutputElementDocument output = samples.wsdl.perf.OutputElementDocument.Factory.newInstance();

+        output.setOutputElement("The Array length is - " + param0.getInputElement().getItemArray().length);

+        return output;

+    } 

+}

diff --git a/rampart_1_1/modules/integration/test/samples/wsdl/perf/PerfPortTypeTest.java b/rampart_1_1/modules/integration/test/samples/wsdl/perf/PerfPortTypeTest.java
new file mode 100644
index 0000000..ed7bb0c
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/samples/wsdl/perf/PerfPortTypeTest.java
@@ -0,0 +1,87 @@
+/*

+ * Copyright 2004,2005 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 samples.wsdl.perf;

+

+import junit.framework.TestCase;

+import junit.framework.TestSuite;

+import junit.framework.Test;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.util.Date;

+

+public class PerfPortTypeTest extends UtilServerBasedTestCase {

+

+	private static final Log log = LogFactory.getLog(PerfPortTypeTest.class);

+

+    protected static final String SERVICE_REPOSITORY = "target/perf/build/repo";

+

+    private String targetEpr = "http://127.0.0.1:" +

+            UtilServer.TESTING_PORT +

+            "/axis2/services/PerfPortType";

+

+    public PerfPortTypeTest() {

+        super();

+    }

+

+    public PerfPortTypeTest(String arg0) {

+        super(arg0);

+    }   

+

+    public static Test suite() {

+        return getTestSetup2(new TestSuite(PerfPortTypeTest.class),SERVICE_REPOSITORY);

+    }

+

+    /**

+     * Auto generated test method

+     */

+   public void testhandleStringArray() throws java.lang.Exception {

+        PerfPortTypeStub stub = new PerfPortTypeStub(null, targetEpr);

+        //create a new databinder

+        stub._getServiceClient().getOptions().setAction("handleStringArray");

+        log.info(">>>> Warming up...");

+        pump(stub, 1);

+        log.info(">>>> Running volume tests...");

+        pump(stub, 100);

+        pump(stub, 1000);

+        pump(stub, 10000);

+        pump(stub, 100000);

+    }

+

+    private void pump(PerfPortTypeStub stub, int count) throws Exception {

+        InputElementDocument input =

+                InputElementDocument.Factory.newInstance();

+        String[] s = new String[count];

+        for (int i = 0; i < s.length; i++) {

+            s[i] = "qwertyuiop?asdfghjkl??zxcvbnm";

+        }

+        input.addNewInputElement().setItemArray(s);

+        Date start = new Date();

+        OutputElementDocument output = stub.handleStringArray(input);

+        Date end = new Date();

+

+        log.info("##### Count:" + count + " \tTime consumed: " +

+                (end.getTime() - start.getTime()) + "\tReturn:" + output.getOutputElement());

+    }

+

+    public static void main(String[] args) throws Exception {

+        PerfPortTypeTest test = new PerfPortTypeTest();

+        test.testhandleStringArray();

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/samples/wsdl/perf/perf.wsdl b/rampart_1_1/modules/integration/test/samples/wsdl/perf/perf.wsdl
new file mode 100644
index 0000000..615fac4
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/samples/wsdl/perf/perf.wsdl
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://perf.wsdl.samples" xmlns:intf="http://perf.wsdl.samples" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://perf.wsdl.samples">

+	<wsdl:types>

+		<schema elementFormDefault="qualified" targetNamespace="http://perf.wsdl.samples" xmlns="http://www.w3.org/2001/XMLSchema">

+			<element name="inputElement">

+				<complexType>

+					<sequence>

+						<element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="outputElement" type="xsd:string"/>

+		</schema>

+	</wsdl:types>

+	<wsdl:message name="handleStringArrayResponse">

+		<wsdl:part name="output" element="impl:outputElement"/>

+	</wsdl:message>

+	<wsdl:message name="handleStringArrayRequest">

+		<wsdl:part name="input" element="impl:inputElement"/>

+	</wsdl:message>

+	<wsdl:portType name="PerfPortType1">

+		<wsdl:operation name="handleStringArray" parameterOrder="input">

+			<wsdl:input name="handleStringArrayRequest" message="impl:handleStringArrayRequest"/>

+			<wsdl:output name="handleStringArrayResponse" message="impl:handleStringArrayResponse"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:binding name="PerformanceSoapBinding" type="impl:PerfPortType1">

+		<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<wsdl:operation name="handleStringArray">

+			<wsdlsoap:operation soapAction="handleStringArray"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:service name="PerfPortType">

+		<wsdl:port name="Performance" binding="impl:PerformanceSoapBinding">

+			<wsdlsoap:address location="http://localhost:8080/axis2/services/PerfPortType"/>

+		</wsdl:port>

+	</wsdl:service>

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/integration/test/samples/wsdl/perf2/PerfPortTypeSkeleton.java b/rampart_1_1/modules/integration/test/samples/wsdl/perf2/PerfPortTypeSkeleton.java
new file mode 100644
index 0000000..4aa5ee8
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/samples/wsdl/perf2/PerfPortTypeSkeleton.java
@@ -0,0 +1,39 @@
+/*
+* Copyright 2004,2005 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.
+*/
+
+/**

+ * PerfPortTypeSkeleton.java This file was auto-generated from WSDL by the

+ * Apache Axis2 version: 0.94-dev Jan 07, 2006 (08:13:00 EST)

+ */

+package samples.wsdl.perf2;

+

+/**

+ * PerfPortTypeSkeleton java skeleton for the axisService

+ */

+public class PerfPortTypeSkeleton{

+    /**

+     * Auto generated method signature

+     *

+     * @param param0

+     */

+    public OutputElement handleStringArray(

+        InputElement param0) {

+

+        OutputElement output = new OutputElement();

+        output.setOutputElement("The Array length is - " + param0.getItem().length);

+        return output;

+    } 

+}

diff --git a/rampart_1_1/modules/integration/test/samples/wsdl/perf2/PerfPortTypeTest.java b/rampart_1_1/modules/integration/test/samples/wsdl/perf2/PerfPortTypeTest.java
new file mode 100644
index 0000000..299dc84
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/samples/wsdl/perf2/PerfPortTypeTest.java
@@ -0,0 +1,87 @@
+/*

+ * Copyright 2004,2005 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 samples.wsdl.perf2;

+

+import junit.framework.TestCase;

+import junit.framework.TestSuite;

+import junit.framework.Test;

+import org.apache.axis2.integration.UtilServer;

+import org.apache.axis2.integration.UtilServerBasedTestCase;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.util.Date;

+

+public class PerfPortTypeTest extends UtilServerBasedTestCase {

+

+	private static final Log log = LogFactory.getLog(PerfPortTypeTest.class);

+

+    protected static final String SERVICE_REPOSITORY = "target/perf2/build/repo";

+

+    private String targetEpr = "http://127.0.0.1:" +

+            UtilServer.TESTING_PORT +

+            "/axis2/services/PerfSoapService2";

+

+    public PerfPortTypeTest() {

+        super();

+    }

+

+    public PerfPortTypeTest(String arg0) {

+        super(arg0);

+    }   

+

+    public static Test suite() {

+        return getTestSetup2(new TestSuite(PerfPortTypeTest.class),SERVICE_REPOSITORY);

+    }

+

+    /**

+     * Auto generated test method

+     */

+   public void testhandleStringArray() throws java.lang.Exception {

+        PerfPortTypeStub stub = new PerfPortTypeStub(null, targetEpr);

+        //create a new databinder

+        stub._getServiceClient().getOptions().setAction("handleStringArray");

+        log.info(">>>> Warming up...");

+        pump(stub, 1);

+        log.info(">>>> Running volume tests...");

+        pump(stub, 100);

+        pump(stub, 1000);

+        pump(stub, 10000);

+        pump(stub, 100000);

+    }

+

+    private void pump(PerfPortTypeStub stub, int count) throws Exception {

+        InputElement input =

+                new InputElement();

+        String[] s = new String[count];

+        for (int i = 0; i < s.length; i++) {

+            s[i] = "qwertyuiop?asdfghjkl??zxcvbnm";

+        }

+        input.setItem(s);

+        Date start = new Date();

+        OutputElement output = stub.handleStringArray(input);

+        Date end = new Date();

+

+        log.info("##### Count:" + count + " \tTime consumed: " +

+                (end.getTime() - start.getTime()) + "\tReturn:" + output.getOutputElement());

+    }

+

+    public static void main(String[] args) throws Exception {

+        PerfPortTypeTest test = new PerfPortTypeTest();

+        test.testhandleStringArray();

+    }

+}

diff --git a/rampart_1_1/modules/integration/test/samples/wsdl/perf2/perf.wsdl b/rampart_1_1/modules/integration/test/samples/wsdl/perf2/perf.wsdl
new file mode 100644
index 0000000..5b46065
--- /dev/null
+++ b/rampart_1_1/modules/integration/test/samples/wsdl/perf2/perf.wsdl
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://perf2.wsdl.samples" xmlns:intf="http://perf2.wsdl.samples" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://perf2.wsdl.samples">

+	<wsdl:types>

+		<schema elementFormDefault="qualified" targetNamespace="http://perf2.wsdl.samples" xmlns="http://www.w3.org/2001/XMLSchema">

+			<element name="inputElement">

+				<complexType>

+					<sequence>

+						<element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="outputElement" type="xsd:string"/>

+		</schema>

+	</wsdl:types>

+	<wsdl:message name="handleStringArrayResponse">

+		<wsdl:part name="output" element="impl:outputElement"/>

+	</wsdl:message>

+	<wsdl:message name="handleStringArrayRequest">

+		<wsdl:part name="input" element="impl:inputElement"/>

+	</wsdl:message>

+	<wsdl:portType name="PerfPortType">

+		<wsdl:operation name="handleStringArray" parameterOrder="input">

+			<wsdl:input name="handleStringArrayRequest" message="impl:handleStringArrayRequest"/>

+			<wsdl:output name="handleStringArrayResponse" message="impl:handleStringArrayResponse"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:binding name="PerformanceSoapBinding" type="impl:PerfPortType">

+		<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<wsdl:operation name="handleStringArray">

+			<wsdlsoap:operation soapAction="handleStringArray"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:service name="PerfPortType">

+		<wsdl:port name="Performance" binding="impl:PerformanceSoapBinding">

+			<wsdlsoap:address location="http://localhost:8080/axis2/services/PerfPortType"/>

+		</wsdl:port>

+	</wsdl:service>

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/java2wsdl/maven.xml b/rampart_1_1/modules/java2wsdl/maven.xml
new file mode 100644
index 0000000..feaac06
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/maven.xml
@@ -0,0 +1,11 @@
+<?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:u="jelly:util"

+    xmlns:maven="jelly:maven"

+    xmlns:deploy="deploy"

+    xmlns:ant="jelly:ant">

+</project>

diff --git a/rampart_1_1/modules/java2wsdl/pom.xml b/rampart_1_1/modules/java2wsdl/pom.xml
new file mode 100644
index 0000000..8a6e597
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <groupId>org.apache.axis2</groupId>

+    <artifactId>axis2-parent</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+    <relativePath>../parent/pom.xml</relativePath>    

+  </parent>

+

+  <artifactId>axis2-java2wsdl</artifactId>

+  <name>Apache Axis 2.0 - Java2WSDL</name>

+  <description>To generate WSDL file for a given Java class</description>

+

+  <dependencies>

+    <dependency>

+      <groupId>org.apache.ws.commons.axiom</groupId>

+      <artifactId>axiom-impl</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>ant</groupId>

+      <artifactId>ant</artifactId>

+    </dependency>

+

+    <!-- external JARs -->

+    <dependency>

+      <groupId>commons-logging</groupId>

+      <artifactId>commons-logging</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>woodstox</groupId>

+      <artifactId>wstx-asl</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>stax</groupId>

+      <artifactId>stax-api</artifactId>

+    </dependency>

+

+    <!--added this to support to keep WSDL information in AxisService-->

+    <dependency>

+      <groupId>org.apache.ws.commons.schema</groupId>

+      <artifactId>XmlSchema</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>javax.mail</groupId>

+      <artifactId>mail</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>jaxen</groupId>

+      <artifactId>jaxen</artifactId>

+    </dependency>

+

+    <!--for java2wsdl generation we use JAM , so there should be a dependency on the annogen jar or-->

+    <!--XML Beans-->

+    <dependency>

+      <groupId>annogen</groupId>

+      <artifactId>annogen</artifactId>

+    </dependency>

+    <!-- Added this to support WS Policy in Axis2 -->

+  </dependencies>

+

+  <build>

+    <sourceDirectory>src</sourceDirectory>

+    <testSourceDirectory>test</testSourceDirectory>

+    <resources>

+      <resource>

+        <directory>conf</directory>

+        <excludes>

+          <exclude>**/*.properties</exclude>

+        </excludes>

+        <filtering>false</filtering>

+      </resource>

+      <resource>

+        <directory>src</directory>

+        <excludes>

+          <exclude>**/*.java</exclude>

+        </excludes>

+      </resource>

+    </resources>

+  </build>

+</project>

diff --git a/rampart_1_1/modules/java2wsdl/project.xml b/rampart_1_1/modules/java2wsdl/project.xml
new file mode 100644
index 0000000..40962b4
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/project.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <name>Apache Axis 2.0 - Java2WSDL</name>

+    <id>axis2-java2wsdl</id>

+    <groupId>org.apache.axis2</groupId>

+    <description>To generate WSDL file for a given Java class</description>

+

+    <dependencies>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant</artifactId>

+            <version>${ant.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+

+        <!-- external JARs -->

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>${stax.impl.groupid}</groupId>

+            <artifactId>${stax.impl.artifactid}</artifactId>

+            <version>${stax.impl.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <!--added this to support to keep WSDL information in AxisService-->

+        <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>${XmlSchema.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.mail</groupId>

+            <artifactId>mail</artifactId>

+            <version>${javamail.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>${activation.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>jaxen</groupId>

+            <artifactId>jaxen</artifactId>

+            <version>${jaxen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://www.ibiblio.org/maven/jaxen/jars/</url>

+        </dependency>

+

+        <!--for java2wsdl generation we use JAM , so there should be a dependency on the annogen jar or-->

+        <!--XML Beans-->

+        <dependency>

+            <groupId>annogen</groupId>

+            <artifactId>annogen</artifactId>

+            <version>${annogen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <!-- Added this to support WS Policy in Axis2 -->

+    </dependencies>

+    <build>

+        <resources>

+            <resource>

+                <directory>conf</directory>

+                <excludes>

+                    <exclude>**/*.properties</exclude>

+                </excludes>

+            </resource>

+            <resource>

+                <directory>src</directory>

+                <includes>

+                    <include>**/*.properties</include>

+                    <include>**/*.xml</include>

+                    <include>**/*.xsl</include>

+                </includes>

+            </resource>

+        </resources>

+    </build>

+    <reports/>

+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/DefaultNamespaceGenerator.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/DefaultNamespaceGenerator.java
new file mode 100644
index 0000000..ab65fda
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/DefaultNamespaceGenerator.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+
+             http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.     
+ */
+package org.apache.ws.java2wsdl;
+
+/**
+ * This class provides the default implementatoin for mapping java classes to namespaces
+ *
+ */
+public class DefaultNamespaceGenerator implements NamespaceGenerator {
+    public static final String HTTP = "http://";
+    public static final char PACKAGE_CLASS_DELIMITER = '.';
+    public static final String SCHEMA_NAMESPACE_EXTN = "/xsd";
+
+    /* (non-Javadoc)
+     * @see org.apache.ws.java2wsdl.NamespaceGenerator#namespaceFromPackageName(java.lang.String)
+     */
+    public StringBuffer namespaceFromPackageName(String packageName) {
+
+        StringBuffer strBuf = new StringBuffer();
+        int prevIndex = packageName.length();
+        int currentIndex = packageName.lastIndexOf(PACKAGE_CLASS_DELIMITER);
+        if (currentIndex > 0) {
+            strBuf.append(HTTP);
+        } else if (prevIndex > 0) {
+            strBuf.append(HTTP);
+            strBuf.append(packageName);
+            return strBuf;
+        } else if (currentIndex == -1) {
+//            strBuf.append(HTTP);
+//            strBuf.append(packageName);
+            return strBuf;
+        }
+        while (currentIndex != -1) {
+            strBuf.append(packageName.substring(currentIndex + 1, prevIndex));
+            prevIndex = currentIndex;
+            currentIndex = packageName.lastIndexOf(PACKAGE_CLASS_DELIMITER, prevIndex - 1);
+            strBuf.append(PACKAGE_CLASS_DELIMITER);
+
+            if (currentIndex == -1) {
+                strBuf.append(packageName.substring(0, prevIndex));
+            }
+        }
+        return strBuf;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.ws.java2wsdl.NamespaceGenerator#schemaNamespaceFromPackageName(java.lang.String)
+     */
+    public StringBuffer schemaNamespaceFromPackageName(String packageName) {
+        if (packageName.length() > 0) {
+            return namespaceFromPackageName(packageName).append(SCHEMA_NAMESPACE_EXTN);
+        } else {
+            StringBuffer buffer = new StringBuffer();
+            buffer.append(Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE);
+            buffer.append(SCHEMA_NAMESPACE_EXTN);
+            return buffer;
+        }
+    }
+    
+    
+
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java
new file mode 100644
index 0000000..c1edb0e
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java
@@ -0,0 +1,493 @@
+package org.apache.ws.java2wsdl;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.java2wsdl.utils.TypeTable;
+import org.codehaus.jam.JMethod;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+import java.io.StringWriter;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+/*
+* Copyright 2004,2005 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.
+*
+*/
+
+public class Java2OMBuilder implements Java2WSDLConstants {
+
+    private TypeTable typeTable = null;
+
+    private static int prefixCount = 1;
+
+    private static final String NAMESPACE_PREFIX = "ns";
+
+    private JMethod method [];
+
+    private Collection schemaCollection;
+
+    private String serviceName;
+
+    private String targetNamespace;
+
+    private String targetNamespacePrefix;
+
+    private String schemaTargetNamespace = null;
+
+    private String schemaTargetNamespacePrefix = null;
+
+    private OMNamespace soap;
+
+    private OMNamespace soap12;
+
+    private OMNamespace tns;
+
+    private OMNamespace wsdl;
+
+    private String style;
+
+    private String use;
+
+    private String locationURL;
+
+    public Java2OMBuilder(JMethod[] method, Collection schemaCollection,
+                          TypeTable typeTab, String serviceName, String targetNamespace,
+                          String targetNamespacePrefix, String style, String use,
+                          String locationURL) {
+        this.method = method;
+        this.schemaCollection = schemaCollection;
+        this.typeTable = typeTab;
+        if (style == null) {
+            this.style = DOCUMENT;
+        } else {
+            this.style = style;
+        }
+        if (use == null) {
+            this.use = LITERAL;
+        } else {
+            this.use = use;
+        }
+
+        if (locationURL == null) {
+            this.locationURL = DEFAULT_LOCATION_URL;
+        } else {
+            this.locationURL = locationURL;
+        }
+        this.serviceName = serviceName;
+
+        if (targetNamespace != null && targetNamespace.trim().length() != 0) {
+            this.targetNamespace = targetNamespace;
+        } else {
+            this.targetNamespace = DEFAULT_TARGET_NAMESPACE;
+        }
+
+        if (targetNamespacePrefix != null
+                && targetNamespacePrefix.trim().length() != 0) {
+            this.targetNamespacePrefix = targetNamespacePrefix;
+        } else {
+            this.targetNamespacePrefix = DEFAULT_TARGET_NAMESPACE_PREFIX;
+        }
+    }
+
+    public OMElement generateOM() throws Exception {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        wsdl = fac.createOMNamespace(WSDL_NAMESPACE,
+                DEFAULT_WSDL_NAMESPACE_PREFIX);
+        OMElement ele = fac.createOMElement("definitions", wsdl);
+
+        ele.addAttribute("targetNamespace", targetNamespace, null);
+        generateNamespaces(ele);
+        generateTypes(fac, ele);
+        generateMessages(fac, ele);
+        generatePortType(fac, ele);
+        generateBinding(fac, ele);
+        generateService(fac, ele);
+        return ele;
+    }
+
+    private void generateNamespaces(OMElement definitions) {
+        soap = definitions.declareNamespace(URI_WSDL11_SOAP, SOAP11_PREFIX);
+        tns = definitions.declareNamespace(targetNamespace,
+                targetNamespacePrefix);
+        soap12 = definitions.declareNamespace(URI_WSDL12_SOAP, SOAP12_PREFIX);
+        definitions.declareNamespace(HTTP_NAMESPACE, HTTP_PREFIX);
+        definitions.declareNamespace(MIME_NAMESPACE, MIME_PREFIX);
+        definitions.declareNamespace(getSchemaTargetNamespace(), getSchemaTargetNamespacePrefix());
+    }
+
+    private void generateTypes(OMFactory fac, OMElement defintions)
+            throws Exception {
+        OMElement wsdlTypes = fac.createOMElement("types", wsdl);
+        // wrap the Schema elements with this start and end tags to create a
+        // document root
+        // under which the schemas can fall into
+
+        for (Iterator iterator = schemaCollection.iterator(); iterator.hasNext();) {
+            StringWriter writer = new StringWriter();
+            XmlSchema xmlSchema = (XmlSchema) iterator.next();
+            xmlSchema.write(writer);
+            String schemaString = writer.toString();
+            if (!"".equals(schemaString)) {
+                XMLStreamReader xmlReader = StAXUtils
+                        .createXMLStreamReader(new ByteArrayInputStream(schemaString.getBytes()));
+
+                StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac, xmlReader);
+                wsdlTypes.addChild(staxOMBuilder.getDocumentElement());
+            }
+        }
+        defintions.addChild(wsdlTypes);
+    }
+
+
+    private void generateMessages(OMFactory fac, OMElement definitions) {
+        Hashtable namespaceMap = new Hashtable();
+        String namespacePrefix;
+        String namespaceURI;
+        QName messagePartType;
+        for (int i = 0; i < method.length; i++) {
+            JMethod jmethod = method[i];
+            if (!jmethod.isPublic()) {
+                continue;
+            }
+
+            //Request Message
+            OMElement requestMessge = fac.createOMElement(
+                    MESSAGE_LOCAL_NAME, wsdl);
+            requestMessge.addAttribute(ATTRIBUTE_NAME, jmethod
+                    .getSimpleName()
+                    + MESSAGE_SUFFIX, null);
+            definitions.addChild(requestMessge);
+
+            // only if a type for the message part has already been defined
+            if ((messagePartType = typeTable.getComplexSchemaType(jmethod
+                    .getSimpleName())) != null) {
+                namespaceURI = messagePartType.getNamespaceURI();
+                // avoid duplicate namespaces
+                if ((namespacePrefix = (String) messagePartType.getPrefix()) == null &&
+                        (namespacePrefix = (String) namespaceMap.get(namespaceURI)) == null) {
+                    namespacePrefix = generatePrefix();
+                    namespaceMap.put(namespaceURI, namespacePrefix);
+                }
+
+                OMElement requestPart = fac.createOMElement(
+                        PART_ATTRIBUTE_NAME, wsdl);
+                requestMessge.addChild(requestPart);
+                requestPart.addAttribute(ATTRIBUTE_NAME, "part1", null);
+
+                requestPart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
+                        namespacePrefix + COLON_SEPARATOR
+                                + jmethod.getSimpleName(), null);
+            }
+
+            // only if a type for the message part has already been defined
+            if ((messagePartType = typeTable.getComplexSchemaType(jmethod
+                    .getSimpleName()
+                    + RESPONSE)) != null) {
+                namespaceURI = messagePartType.getNamespaceURI();
+                if ((namespacePrefix = (String) messagePartType.getPrefix()) == null &&
+                        (namespacePrefix = (String) namespaceMap.get(namespaceURI)) == null) {
+                    namespacePrefix = generatePrefix();
+                    namespaceMap.put(namespaceURI, namespacePrefix);
+                }
+                //Response Message
+                OMElement responseMessge = fac.createOMElement(
+                        MESSAGE_LOCAL_NAME, wsdl);
+                responseMessge.addAttribute(ATTRIBUTE_NAME, jmethod
+                        .getSimpleName()
+                        + RESPONSE_MESSAGE, null);
+                definitions.addChild(responseMessge);
+                OMElement responsePart = fac.createOMElement(
+                        PART_ATTRIBUTE_NAME, wsdl);
+                responseMessge.addChild(responsePart);
+                responsePart.addAttribute(ATTRIBUTE_NAME, "part1", null);
+
+                responsePart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
+                        namespacePrefix + COLON_SEPARATOR
+                                + jmethod.getSimpleName() + RESPONSE, null);
+            }
+
+            if (jmethod.getExceptionTypes().length > 0) {
+                if ((messagePartType = typeTable.getComplexSchemaType(jmethod.getSimpleName() + "Fault")) != null) {
+                    namespaceURI = messagePartType.getNamespaceURI();
+                    if ((namespacePrefix = (String) messagePartType.getPrefix()) == null &&
+                            (namespacePrefix = (String) namespaceMap.get(namespaceURI)) == null) {
+                        namespacePrefix = generatePrefix();
+                        namespaceMap.put(namespaceURI, namespacePrefix);
+                    }
+                    //Response Message
+                    OMElement responseMessge = fac.createOMElement(
+                            MESSAGE_LOCAL_NAME, wsdl);
+                    responseMessge.addAttribute(ATTRIBUTE_NAME, jmethod
+                            .getSimpleName()
+                            + "Fault", null);
+                    definitions.addChild(responseMessge);
+                    OMElement responsePart = fac.createOMElement(
+                            PART_ATTRIBUTE_NAME, wsdl);
+                    responseMessge.addChild(responsePart);
+                    responsePart.addAttribute(ATTRIBUTE_NAME, "part1", null);
+
+                    responsePart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
+                            namespacePrefix + COLON_SEPARATOR
+                                    + jmethod.getSimpleName() + "Fault", null);
+                }
+            }
+        }
+
+        // now add these unique namespaces to the the definitions element
+        Enumeration enumeration = namespaceMap.keys();
+        while (enumeration.hasMoreElements()) {
+            namespaceURI = (String) enumeration.nextElement();
+            definitions.declareNamespace(namespaceURI, (String) namespaceMap
+                    .get(namespaceURI));
+        }
+    }
+
+
+    /**
+     * Generate the porttypes
+     */
+    private void generatePortType(OMFactory fac, OMElement defintions) {
+        JMethod jmethod;
+        OMElement operation;
+        OMElement message;
+        OMElement portType = fac.createOMElement(PORT_TYPE_LOCAL_NAME, wsdl);
+        defintions.addChild(portType);
+        portType.addAttribute(ATTRIBUTE_NAME, serviceName + PORT_TYPE_SUFFIX,
+                null);
+        //adding message refs
+        for (int i = 0; i < method.length; i++) {
+            jmethod = method[i];
+            if (!jmethod.isPublic()) {
+                continue;
+            }
+            operation = fac.createOMElement(OPERATION_LOCAL_NAME, wsdl);
+            portType.addChild(operation);
+            operation.addAttribute(ATTRIBUTE_NAME, jmethod.getSimpleName(),
+                    null);
+
+            message = fac.createOMElement(IN_PUT_LOCAL_NAME, wsdl);
+            message.addAttribute(MESSAGE_LOCAL_NAME, tns.getPrefix()
+                    + COLON_SEPARATOR + jmethod.getSimpleName()
+                    + MESSAGE_SUFFIX, null);
+            operation.addChild(message);
+
+            if (!jmethod.getReturnType().isVoidType()) {
+                message = fac.createOMElement(OUT_PUT_LOCAL_NAME, wsdl);
+                message.addAttribute(MESSAGE_LOCAL_NAME, tns.getPrefix()
+                        + COLON_SEPARATOR + jmethod.getSimpleName()
+                        + RESPONSE_MESSAGE, null);
+                operation.addChild(message);
+            }
+            if (jmethod.getExceptionTypes().length > 0) {
+                message = fac.createOMElement(FAULT_LOCAL_NAME, wsdl);
+                message.addAttribute(MESSAGE_LOCAL_NAME, tns.getPrefix()
+                        + COLON_SEPARATOR + jmethod.getSimpleName()
+                        + "Fault", null);
+                message.addAttribute(ATTRIBUTE_NAME, jmethod.getSimpleName()
+                        + "Fault", null);
+                operation.addChild(message);
+            }
+        }
+
+    }
+
+    /**
+     * Generate the service
+     */
+    public void generateService(OMFactory fac, OMElement defintions) {
+        OMElement service = fac.createOMElement(SERVICE_LOCAL_NAME, wsdl);
+        defintions.addChild(service);
+        service.addAttribute(ATTRIBUTE_NAME, serviceName, null);
+        OMElement port = fac.createOMElement(PORT, wsdl);
+        service.addChild(port);
+        port.addAttribute(ATTRIBUTE_NAME, serviceName + SOAP11PORT, null);
+        port.addAttribute(BINDING_LOCAL_NAME, tns.getPrefix() + COLON_SEPARATOR
+                + serviceName + BINDING_NAME_SUFFIX, null);
+        addExtensionElement(fac, port, soap, SOAP_ADDRESS, LOCATION, locationURL
+                + serviceName);
+
+        port = fac.createOMElement(PORT, wsdl);
+        service.addChild(port);
+        port.addAttribute(ATTRIBUTE_NAME, serviceName + SOAP12PORT, null);
+        port.addAttribute(BINDING_LOCAL_NAME, tns.getPrefix() + COLON_SEPARATOR
+                + serviceName + SOAP12BINDING_NAME_SUFFIX, null);
+        addExtensionElement(fac, port, soap12, SOAP_ADDRESS, LOCATION, locationURL
+                + serviceName);
+    }
+
+    /**
+     * Generate the bindings
+     */
+    private void generateBinding(OMFactory fac, OMElement defintions) {
+        generateSoap11Binding(fac, defintions);
+        generateSoap12Binding(fac, defintions);
+    }
+
+    private void generateSoap11Binding(OMFactory fac, OMElement defintions) {
+        OMElement binding = fac.createOMElement(BINDING_LOCAL_NAME, wsdl);
+        defintions.addChild(binding);
+        binding.addAttribute(ATTRIBUTE_NAME, serviceName + BINDING_NAME_SUFFIX,
+                null);
+        binding.addAttribute("type", tns.getPrefix() + COLON_SEPARATOR
+                + serviceName + PORT_TYPE_SUFFIX, null);
+
+        addExtensionElement(fac, binding, soap, BINDING_LOCAL_NAME, TRANSPORT,
+                TRANSPORT_URI, STYLE, style);
+
+        for (int i = 0; i < method.length; i++) {
+            JMethod jmethod = method[i];
+            if (!jmethod.isPublic()) {
+                continue;
+            }
+            OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,
+                    wsdl);
+            binding.addChild(operation);
+
+            addExtensionElement(fac, operation, soap, OPERATION_LOCAL_NAME,
+                    SOAP_ACTION, URN_PREFIX + COLON_SEPARATOR
+                    + jmethod.getSimpleName(), STYLE, style);
+            operation.addAttribute(ATTRIBUTE_NAME, jmethod.getSimpleName(),
+                    null);
+
+            OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME, wsdl);
+            addExtensionElement(fac, input, soap, SOAP_BODY, SOAP_USE, use,
+                    "namespace", targetNamespace);
+            operation.addChild(input);
+
+            if (!jmethod.getReturnType().isVoidType()) {
+                OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME, wsdl);
+                addExtensionElement(fac, output, soap, SOAP_BODY, SOAP_USE, use,
+                        "namespace", targetNamespace);
+                operation.addChild(output);
+            }
+
+            if (jmethod.getExceptionTypes().length > 0) {
+
+                OMElement fault = fac.createOMElement(FAULT_LOCAL_NAME, wsdl);
+                fault.addAttribute(ATTRIBUTE_NAME, jmethod.getSimpleName() + "Fault", null);
+                addExtensionElement(fac, fault, soap, SOAP_BODY, SOAP_USE, use,
+                        "namespace", targetNamespace);
+                operation.addChild(fault);
+            }
+        }
+    }
+
+    private void generateSoap12Binding(OMFactory fac, OMElement defintions) {
+        OMElement binding = fac.createOMElement(BINDING_LOCAL_NAME, wsdl);
+        defintions.addChild(binding);
+        binding.addAttribute(ATTRIBUTE_NAME, serviceName + SOAP12BINDING_NAME_SUFFIX,
+                null);
+        binding.addAttribute("type", tns.getPrefix() + COLON_SEPARATOR
+                + serviceName + PORT_TYPE_SUFFIX, null);
+
+        addExtensionElement(fac, binding, soap12, BINDING_LOCAL_NAME, TRANSPORT,
+                TRANSPORT_URI, STYLE, style);
+
+        for (int i = 0; i < method.length; i++) {
+            JMethod jmethod = method[i];
+            if (!jmethod.isPublic()) {
+                continue;
+            }
+            OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,
+                    wsdl);
+            binding.addChild(operation);
+            operation.declareNamespace(URI_WSDL12_SOAP, SOAP12_PREFIX);
+
+            addExtensionElement(fac, operation, soap12, OPERATION_LOCAL_NAME,
+                    SOAP_ACTION, URN_PREFIX + COLON_SEPARATOR
+                    + jmethod.getSimpleName(), STYLE, style);
+            operation.addAttribute(ATTRIBUTE_NAME, jmethod.getSimpleName(),
+                    null);
+
+            OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME, wsdl);
+            addExtensionElement(fac, input, soap12, SOAP_BODY, SOAP_USE, use,
+                    "namespace", targetNamespace);
+            operation.addChild(input);
+
+            if (!jmethod.getReturnType().isVoidType()) {
+                OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME, wsdl);
+                addExtensionElement(fac, output, soap12, SOAP_BODY, SOAP_USE, use,
+                        "namespace", targetNamespace);
+                operation.addChild(output);
+            }
+            if (jmethod.getExceptionTypes().length > 0) {
+
+                OMElement fault = fac.createOMElement(FAULT_LOCAL_NAME, wsdl);
+                fault.addAttribute(ATTRIBUTE_NAME, jmethod.getSimpleName() + "Fault", null);
+                addExtensionElement(fac, fault, soap12, SOAP_BODY, SOAP_USE, use,
+                        "namespace", targetNamespace);
+                operation.addChild(fault);
+            }
+        }
+    }
+
+    private void addExtensionElement(OMFactory fac, OMElement element, OMNamespace namespace,
+                                     String name, String att1Name, String att1Value, String att2Name,
+                                     String att2Value) {
+        OMElement soapbinding = fac.createOMElement(name, namespace);
+        element.addChild(soapbinding);
+        soapbinding.addAttribute(att1Name, att1Value, null);
+        soapbinding.addAttribute(att2Name, att2Value, null);
+    }
+
+    private void addExtensionElement(OMFactory fac, OMElement element, OMNamespace namespace,
+                                     String name, String att1Name, String att1Value, String att2Name,
+                                     String att2Value, String att3Name,
+                                     String att3Value) {
+        OMElement soapbinding = fac.createOMElement(name, namespace);
+        element.addChild(soapbinding);
+        soapbinding.addAttribute(att1Name, att1Value, null);
+        soapbinding.addAttribute(att2Name, att2Value, null);
+        soapbinding.addAttribute(att3Name, att3Value, null);
+    }
+
+    private void addExtensionElement(OMFactory fac, OMElement element, OMNamespace namespace,
+                                     String name, String att1Name, String att1Value) {
+        OMElement soapbinding = fac.createOMElement(name, namespace);
+        element.addChild(soapbinding);
+        soapbinding.addAttribute(att1Name, att1Value, null);
+    }
+
+    private String generatePrefix() {
+        return NAMESPACE_PREFIX + prefixCount++;
+    }
+
+    public String getSchemaTargetNamespace() {
+        return schemaTargetNamespace;
+    }
+
+    public void setSchemaTargetNamespace(String schemaTargetNamespace) {
+        this.schemaTargetNamespace = schemaTargetNamespace;
+    }
+
+    public String getSchemaTargetNamespacePrefix() {
+        return schemaTargetNamespacePrefix;
+    }
+
+    public void setSchemaTargetNamespacePrefix(String schemaTargetNamespacePrefix) {
+        this.schemaTargetNamespacePrefix = schemaTargetNamespacePrefix;
+    }
+
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java
new file mode 100644
index 0000000..ffca8a1
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java
@@ -0,0 +1,71 @@
+package org.apache.ws.java2wsdl;
+
+import org.apache.ws.java2wsdl.utils.Java2WSDLCommandLineOptionParser;
+import org.apache.ws.java2wsdl.utils.Java2WSDLOptionsValidator;
+/*
+* Copyright 2004,2005 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.
+*
+*/
+
+public class Java2WSDL {
+    public static void main(String[] args) {
+        Java2WSDLCommandLineOptionParser commandLineOptionParser = new Java2WSDLCommandLineOptionParser(
+                args);
+        //  validate the arguments
+        validateCommandLineOptions(commandLineOptionParser);
+        try {
+            new Java2WSDLCodegenEngine(commandLineOptionParser.getAllOptions()).generate();
+        } catch (Exception e) {
+            System.out.println("An error occured while generating code" + e.getMessage());
+        }
+    }
+
+    public static void printUsage() {
+        System.out.println("Usage java2wsdl -cn <fully qualified class name> : class file name");
+        System.out.println("-o <output Location> : output file location");
+        System.out.println("-cp <class path uri> : list of classpath entries - (urls)");
+        System.out.println("-tn <target namespace> : target namespace");
+        System.out.println("-tp <target namespace prefix> : target namespace prefix");
+        System.out.println("-stn <schema target namespace> : target namespace for schema");
+        System.out.println("-stp <schema target namespace prefix> : target namespace prefix for schema");
+        System.out.println("-sn <service name> : service name");
+        System.out.println("-of <output file name> : output file name for the WSDL");
+        System.out.println("-st <binding style> : style for the WSDL");
+        System.out.println("-u <binding use> : use for the WSDL");
+        System.out.println("-l <soap address> : address of the port for the WSDL");
+        System.out.println("-nsg <generator class name> : fully qualified name of the class that implements NamespaceGenerator");
+        System.out.println("-p2n [<java package>,<namespace] [<java package>,<namespace]... : java package to namespace mapping for argument and return types..." +
+                                "\t\t to assign all types to a single namespace : -p2n [all , <namespace>] ...");
+        System.out.println("-efd <qualified/unqualified> : Setting for elementFormDefault (defaults to qualified)");
+        System.out.println("-afd <qualified/unqualified> : Setting for attributeFormDefault (defaults to qualified)");
+        System.out.println("-xc <extra class> : Extra class for which schematype must be generated.  " +
+                           "\t\tUse as : -xc class1 -xc class2 ...");
+        
+        System.exit(0);
+    }
+
+
+    private static void validateCommandLineOptions(
+            Java2WSDLCommandLineOptionParser parser) {
+        if (parser.getAllOptions().size() == 0) {
+            printUsage();
+        } else if (parser.getInvalidOptions(new Java2WSDLOptionsValidator()).size() > 0) {
+            printUsage();
+        }
+
+    }
+
+}
+
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java
new file mode 100644
index 0000000..4a24f5d
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java
@@ -0,0 +1,242 @@
+package org.apache.ws.java2wsdl;
+
+import org.apache.axiom.om.OMElement;
+
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Map;
+/*
+* Copyright 2004,2005 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.
+*
+*
+*/
+
+public class Java2WSDLBuilder implements Java2WSDLConstants {
+
+    public static final String ALL = "all";
+    private OutputStream out;
+    private String className;
+    private ClassLoader classLoader;
+    private String wsdlPrefix = "wsdl";
+
+    private String serviceName = null;
+
+    //these apply for the WSDL
+    private String targetNamespace = null;
+    private String targetNamespacePrefix = null;
+
+    private String attrFormDefault = null;
+    private String elementFormDefault = null;
+    private String schemaTargetNamespace = null;
+    private String schemaTargetNamespacePrefix = null;
+    private String style = Java2WSDLConstants.DOCUMENT;
+    private String use = Java2WSDLConstants.LITERAL;
+    private String locationUri = Java2WSDLConstants.DEFAULT_LOCATION_URL;
+    private ArrayList extraClasses;
+    
+    private String nsGenClassName = null;
+    private Map pkg2nsMap = null;
+
+    public String getSchemaTargetNamespace() throws Exception {
+        if ( schemaTargetNamespace == null ) {
+            schemaTargetNamespace =
+                Java2WSDLUtils.schemaNamespaceFromClassName(className, classLoader, resolveNSGen()).toString();
+        }
+        return schemaTargetNamespace;
+    }
+
+    public String getStyle() {
+        return style;
+    }
+
+    public String getLocationUri() {
+        return locationUri;
+    }
+
+    public void setLocationUri(String locationUri) {
+        this.locationUri = locationUri;
+    }
+
+    public void setStyle(String style) {
+        this.style = style;
+    }
+
+    public String getUse() {
+        return use;
+    }
+
+    public void setUse(String use) {
+        this.use = use;
+    }
+
+    public void setSchemaTargetNamespace(String schemaTargetNamespace) {
+        this.schemaTargetNamespace = schemaTargetNamespace;
+    }
+
+    public String getSchemaTargetNamespacePrefix() {
+        if ( schemaTargetNamespacePrefix == null ) {
+            this.schemaTargetNamespacePrefix = SCHEMA_NAMESPACE_PRFIX;
+        }
+        return schemaTargetNamespacePrefix;
+    }
+
+    public void setSchemaTargetNamespacePrefix(String schemaTargetNamespacePrefix) {
+        this.schemaTargetNamespacePrefix = schemaTargetNamespacePrefix;
+    }
+
+    public String getTargetNamespace() {
+        return targetNamespace;
+    }
+
+    public void setTargetNamespace(String targetNamespace) {
+        this.targetNamespace = targetNamespace;
+    }
+
+    public String getTargetNamespacePrefix() {
+        return targetNamespacePrefix;
+    }
+
+    public void setTargetNamespacePrefix(String targetNamespacePrefix) {
+        this.targetNamespacePrefix = targetNamespacePrefix;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+
+    public String getWsdlPrefix() {
+        return wsdlPrefix;
+    }
+
+    public void setWsdlPrefix(String wsdlPrefix) {
+        this.wsdlPrefix = wsdlPrefix;
+    }
+
+    /**
+     * @param out
+     * @param className
+     * @param classLoader
+     */
+    public Java2WSDLBuilder(OutputStream out, String className, ClassLoader classLoader) {
+        this.out = out;
+        this.className = className;
+        this.classLoader = classLoader;
+    }
+
+
+    /**
+     * Externally visible generator method
+     *
+     * @throws Exception
+     */
+    public void generateWSDL() throws Exception {
+        SchemaGenerator schemaGenerator = new SchemaGenerator(classLoader, 
+                                                    className,
+                                                    getSchemaTargetNamespace(), 
+                                                    getSchemaTargetNamespacePrefix());
+        ArrayList excludedOperation = new ArrayList();
+        excludedOperation.add("init");
+        excludedOperation.add("setOperationContext");
+        excludedOperation.add("destroy");
+        schemaGenerator.setExcludeMethods(excludedOperation);
+        schemaGenerator.setAttrFormDefault(getAttrFormDefault());
+        schemaGenerator.setElementFormDefault(getElementFormDefault());
+        schemaGenerator.setExtraClasses(getExtraClasses());
+        schemaGenerator.setNsGen(resolveNSGen());
+        schemaGenerator.setPkg2nsmap(getPkg2nsMap());
+        if ( getPkg2nsMap() != null && !getPkg2nsMap().isEmpty() && 
+                (getPkg2nsMap().containsKey(ALL) || getPkg2nsMap().containsKey(ALL.toUpperCase())) ) {
+            schemaGenerator.setUseWSDLTypesNamespace(true);
+        } 
+        
+        Collection schemaCollection = schemaGenerator.generateSchema();
+        
+        Java2OMBuilder java2OMBuilder = new Java2OMBuilder(schemaGenerator.getMethods(),
+                schemaCollection,
+                schemaGenerator.getTypeTable(),
+                serviceName == null ? Java2WSDLUtils.getSimpleClassName(className) : serviceName,
+                targetNamespace == null ? Java2WSDLUtils.namespaceFromClassName(className,classLoader, resolveNSGen()).toString() : targetNamespace,
+                targetNamespacePrefix,
+                style,
+                use,
+                locationUri);
+        java2OMBuilder.setSchemaTargetNamespace(getSchemaTargetNamespace());
+        java2OMBuilder.setSchemaTargetNamespacePrefix(getSchemaTargetNamespacePrefix());
+        OMElement wsdlElement = java2OMBuilder.generateOM();
+        wsdlElement.serialize(out);
+        out.flush();
+        out.close();
+    }
+
+    public String getAttrFormDefault() {
+        return attrFormDefault;
+    }
+
+    public void setAttrFormDefault(String attrFormDefault) {
+        this.attrFormDefault = attrFormDefault;
+    }
+
+    public String getElementFormDefault() {
+        return elementFormDefault;
+    }
+
+    public void setElementFormDefault(String elementFormDefault) {
+        this.elementFormDefault = elementFormDefault;
+    }
+
+    public ArrayList getExtraClasses() {
+        return extraClasses;
+    }
+
+    public void setExtraClasses(ArrayList extraClasses) {
+        this.extraClasses = extraClasses;
+    }
+
+    public String getNsGenClassName() {
+        return nsGenClassName;
+    }
+
+    public void setNsGenClassName(String nsGenClassName) {
+        this.nsGenClassName = nsGenClassName;
+    }
+
+    public Map getPkg2nsMap() {
+        return pkg2nsMap;
+    }
+
+    public void setPkg2nsMap(Map pkg2nsMap) {
+        this.pkg2nsMap = pkg2nsMap;
+    }
+    
+    private NamespaceGenerator resolveNSGen() {
+        NamespaceGenerator nsGen = null;
+        try {
+            nsGen = (NamespaceGenerator)Class.forName(this.nsGenClassName).newInstance();
+        } catch ( Exception e ) {
+            nsGen = new DefaultNamespaceGenerator();
+        }
+        
+        return nsGen;
+    }
+    
+}
+
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java
new file mode 100644
index 0000000..1b74879
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java
@@ -0,0 +1,248 @@
+package org.apache.ws.java2wsdl;
+
+import org.apache.ws.java2wsdl.utils.Java2WSDLCommandLineOption;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Vector;
+/*
+* Copyright 2004,2005 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.
+*
+*/
+
+public class Java2WSDLCodegenEngine implements Java2WSDLConstants {
+    private Java2WSDLBuilder java2WsdlBuilder;
+    public static final String WSDL_FILENAME_SUFFIX = ".wsdl";
+    public static final String COMMA = ",";
+
+    public Java2WSDLCodegenEngine(Map optionsMap) throws Exception {
+        //create a new  Java2WSDLBuilder and populate it
+        Java2WSDLCommandLineOption option = loadOption(Java2WSDLConstants.CLASSNAME_OPTION, Java2WSDLConstants.CLASSNAME_OPTION_LONG, optionsMap);
+        String className = option == null ? null : option.getOptionValue();
+
+        if (className == null || className.length() == 0) {
+            throw new Exception("class name must be present!");
+        }
+
+        //Now we are done with loading the basic values - time to create the builder
+        java2WsdlBuilder = new Java2WSDLBuilder(resolveOutputStream(className, optionsMap),
+                                                className,
+                                                resolveClassLoader(optionsMap));
+        
+        configureJava2WSDLBuilder(optionsMap, className);
+    }
+
+    public void generate() throws Exception {
+        try {
+            java2WsdlBuilder.generateWSDL();
+        } catch (Exception e) {
+            throw new Exception(e);
+        }
+    }
+
+    private FileOutputStream resolveOutputStream(String className, Map optionsMap) throws Exception
+    {
+        Java2WSDLCommandLineOption option = loadOption(Java2WSDLConstants.OUTPUT_LOCATION_OPTION,
+                                                       Java2WSDLConstants.OUTPUT_LOCATION_OPTION_LONG, optionsMap);
+        String outputFolderName = option == null ? System.getProperty("user.dir") : option.getOptionValue();
+
+        File outputFolder;
+        outputFolder = new File(outputFolderName);
+        if (!outputFolder.exists()) {
+            outputFolder.mkdirs();
+        } else if (!outputFolder.isDirectory()) {
+            throw new Exception("The specivied location " + outputFolderName + "is not a folder");
+        }
+        
+        option = loadOption(Java2WSDLConstants.OUTPUT_FILENAME_OPTION,
+                            Java2WSDLConstants.OUTPUT_FILENAME_OPTION_LONG, optionsMap);
+        String outputFileName = option == null ? null : option.getOptionValue();
+        //derive a file name from the class name if the filename is not specified
+        if (outputFileName == null) {
+            outputFileName = Java2WSDLUtils.getSimpleClassName(className) + WSDL_FILENAME_SUFFIX;
+        }
+    
+        //first create a file in the given location
+        File outputFile = new File(outputFolder, outputFileName);
+        FileOutputStream out;
+        try {
+            if (!outputFile.exists()) {
+                outputFile.createNewFile();
+            }
+            out = new FileOutputStream(outputFile);
+        } catch (IOException e) {
+            throw new Exception(e);
+        }
+        
+        return out;
+    }
+    
+    private ClassLoader resolveClassLoader(Map optionsMap) throws Exception
+    {
+        // if the class path is present, create a URL class loader with those
+        //class path entries present. if not just take the  TCCL
+        Java2WSDLCommandLineOption option = loadOption(Java2WSDLConstants.CLASSPATH_OPTION,
+                Java2WSDLConstants.CLASSPATH_OPTION_LONG, optionsMap);
+
+        ClassLoader classLoader;
+
+        if (option != null) {
+            ArrayList optionValues = option.getOptionValues();
+            URL[] urls = new URL[optionValues.size()];
+            String[] classPathEntries = (String[]) optionValues.toArray(new String[optionValues.size()]);
+
+            try {
+                for (int i = 0; i < classPathEntries.length; i++) {
+                    String classPathEntry = classPathEntries[i];
+                    //this should be a file(or a URL)
+                    if (Java2WSDLUtils.isURL(classPathEntry)) {
+                        urls[i] = new URL(classPathEntry);
+                    } else {
+                        urls[i] = new File(classPathEntry).toURL();
+                    }
+                }
+            } catch (MalformedURLException e) {
+                throw new Exception(e);
+            }
+
+            classLoader = new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());
+
+        } else {
+            classLoader = Thread.currentThread().getContextClassLoader();
+        }
+        
+        return classLoader;
+    }
+
+    private void configureJava2WSDLBuilder(Map optionsMap, String className) throws Exception
+    {
+        //set the other parameters to the builder
+        Java2WSDLCommandLineOption option = loadOption(Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_OPTION,
+                Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setSchemaTargetNamespace(option == null ? null : option.getOptionValue());
+
+        option = loadOption(Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION,
+                Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setSchemaTargetNamespacePrefix(option == null ? null : option.getOptionValue());
+
+        option = loadOption(Java2WSDLConstants.TARGET_NAMESPACE_OPTION,
+                Java2WSDLConstants.TARGET_NAMESPACE_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setTargetNamespace(option == null ? null : option.getOptionValue());
+
+        option = loadOption(Java2WSDLConstants.TARGET_NAMESPACE_PREFIX_OPTION,
+                Java2WSDLConstants.TARGET_NAMESPACE_PREFIX_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setTargetNamespacePrefix(option == null ? null : option.getOptionValue());
+
+        option = loadOption(Java2WSDLConstants.SERVICE_NAME_OPTION,
+                Java2WSDLConstants.SERVICE_NAME_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setServiceName(option == null ? Java2WSDLUtils.getSimpleClassName(className) : option.getOptionValue());
+
+        option = loadOption(Java2WSDLConstants.STYLE_OPTION,
+                Java2WSDLConstants.STYLE_OPTION, optionsMap);
+        if (option != null) {
+            java2WsdlBuilder.setStyle(option.getOptionValue());
+        }
+
+        option = loadOption(Java2WSDLConstants.LOCATION_OPTION,
+                Java2WSDLConstants.LOCATION_OPTION, optionsMap);
+        if (option != null) {
+            java2WsdlBuilder.setLocationUri(option.getOptionValue());
+        }
+
+        option = loadOption(Java2WSDLConstants.USE_OPTION,
+                Java2WSDLConstants.USE_OPTION, optionsMap);
+        if (option != null) {
+            java2WsdlBuilder.setUse(option.getOptionValue());
+        }
+        
+        option = loadOption(Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION,
+                Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setAttrFormDefault(option == null ? null : option.getOptionValue());
+        
+        option = loadOption(Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION,
+                Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setElementFormDefault(option == null ? null : option.getOptionValue());
+        
+        option = loadOption(Java2WSDLConstants.EXTRA_CLASSES_DEFAULT_OPTION,
+                            Java2WSDLConstants.EXTRA_CLASSES_DEFAULT_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setExtraClasses(option == null ? new ArrayList() : option.getOptionValues());
+        
+        option = loadOption(Java2WSDLConstants.NAMESPACE_GENERATOR_OPTION,
+                            Java2WSDLConstants.NAMESPACE_GENERATOR_OPTION_LONG, optionsMap);
+        if ( option != null ) {
+            java2WsdlBuilder.setNsGenClassName(option.getOptionValue());
+        }
+        
+        option = loadOption(Java2WSDLConstants.JAVA_PKG_2_NSMAP_OPTION,
+                            Java2WSDLConstants.JAVA_PKG_2_NSMAP_OPTION_LONG, optionsMap);
+        java2WsdlBuilder.setPkg2nsMap(loadJavaPkg2NamespaceMap(option));
+    }
+    
+     /**
+     * @param shortOption
+     * @param longOption
+     * @param options
+     */
+    private Java2WSDLCommandLineOption loadOption(String shortOption, String longOption, Map options) {
+        //short option gets precedence
+        Java2WSDLCommandLineOption option = null;
+        if (longOption != null) {
+            option = (Java2WSDLCommandLineOption) options.get(longOption);
+            if (option != null) {
+                return option;
+            }
+        }
+        if (shortOption != null) {
+            option = (Java2WSDLCommandLineOption) options.get(shortOption);
+        }
+
+        return option;
+    }
+    
+    protected void addToSchemaLocationMap(String optionValue) throws Exception
+    {
+        
+        
+        
+    }
+    
+    protected Map loadJavaPkg2NamespaceMap(Java2WSDLCommandLineOption option) 
+    { 
+        Map pkg2nsMap = new Hashtable();
+        if (option != null) 
+        {
+            ArrayList optionValues = option.getOptionValues();
+            String anOptionValue = "";
+            for ( int count = 0 ; count < optionValues.size() ; ++count )
+            {
+                anOptionValue = ((String)optionValues.get(count)).trim();
+                
+                //an option value will be of the form [java package, namespace]
+                //hence we take the two substrings starting after '[' and upto ',' and
+                //starting after ',' and upto ']'
+                pkg2nsMap.put(anOptionValue.substring(1, anOptionValue.indexOf(COMMA)).trim(),
+                                        anOptionValue.substring(anOptionValue.indexOf(COMMA) + 1, anOptionValue.length() - 1).trim()); 
+            }
+        }
+        return pkg2nsMap;
+    }
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java
new file mode 100644
index 0000000..f533123
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java
@@ -0,0 +1,129 @@
+package org.apache.ws.java2wsdl;
+/*
+* Copyright 2004,2005 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.
+*
+*/
+
+public interface Java2WSDLConstants {
+
+    String SOAP11_PREFIX = "soap";
+    String SOAP12_PREFIX = "soap12";
+    String DEFAULT_WSDL_NAMESPACE_PREFIX = "wsdl";
+    String DEFAULT_SCHEMA_NAMESPACE_PREFIX = "xs";
+    String DEFAULT_TARGET_NAMESPACE_PREFIX = "axis2";
+    String TARGETNAMESPACE_PREFIX = "tns";
+    String SCHEMA_NAMESPACE_PRFIX = "ns";
+    String FORM_DEFAULT_QUALIFIED = "qualified";
+    String FORM_DEFAULT_UNQUALIFIED = "unqualified";
+    
+
+    String DEFAULT_TARGET_NAMESPACE = "http://ws.apache.org/axis2";
+    String WSDL_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/";
+    String AXIS2_XSD = "http://org.apache.axis2/xsd";
+    String URI_WSDL12_SOAP = "http://schemas.xmlsoap.org/wsdl/soap12/";
+    String URI_WSDL11_SOAP = "http://schemas.xmlsoap.org/wsdl/soap/";
+    String TRANSPORT_URI = "http://schemas.xmlsoap.org/soap/http";
+    String DEFAULT_LOCATION_URL = "http://localhost:8080/axis2/services/";
+
+    String HTTP_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/http/";
+    String MIME_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/mime/";
+    String HTTP_PREFIX = "http";
+    String MIME_PREFIX = "mime";
+    String URN_PREFIX = "urn";
+    String COLON_SEPARATOR = ":";
+
+    String BINDING_NAME_SUFFIX = "SOAP11Binding";
+    String SOAP12BINDING_NAME_SUFFIX = "SOAP12Binding";
+    String HTTP_BINDING = "HttpBinding";
+    String PORT_TYPE_SUFFIX = "PortType";
+    String PORT_NAME_SUFFIX = "Port";
+    String MESSAGE_LOCAL_NAME = "message";
+    String ATTRIBUTE_NAME = "name";
+    String REQUEST_MESSAGE = "RequestMessage";
+    String RESPONSE_MESSAGE = "ResponseMessage";
+    String FAULT_MESSAGE = "Message";
+    String MESSAGE_SUFFIX = "Message";
+    String REQUEST = "Request";
+    String RESPONSE = "Response";
+    String PORT_TYPE_LOCAL_NAME = "portType";
+    String OPERATION_LOCAL_NAME = "operation";
+    String IN_PUT_LOCAL_NAME = "input";
+    String OUT_PUT_LOCAL_NAME = "output";
+    String SERVICE_LOCAL_NAME = "service";
+    String BINDING_LOCAL_NAME = "binding";
+    String PORT = "port";
+    String SOAP12PORT = "SOAP12port";
+    String SOAP11PORT = "SOAP11port";
+    String HTTP_PORT = "Httpport";
+    String PART_ATTRIBUTE_NAME = "part";
+    String ELEMENT_ATTRIBUTE_NAME = "element";
+    String FAULT_LOCAL_NAME = "fault";
+
+    String SOAP_ADDRESS = "address";
+    String LOCATION = "location";
+    String TRANSPORT = "transport";
+    String STYLE = "style";
+    String SOAP_ACTION = "soapAction";
+    String SOAP_BODY = "body";
+    String SOAP_USE = "use";
+    String DOCUMENT = "document";
+    String LITERAL = "literal";
+    //
+    // Schema XSD Namespaces
+    //
+    String URI_2001_SCHEMA_XSD = "http://www.w3.org/2001/XMLSchema";
+
+
+    String OUTPUT_LOCATION_OPTION = "o";
+    String OUTPUT_FILENAME_OPTION = "of";
+    String CLASSNAME_OPTION = "cn";
+    String CLASSPATH_OPTION = "cp";
+    String TARGET_NAMESPACE_OPTION = "tn";
+    String TARGET_NAMESPACE_PREFIX_OPTION = "tp";
+    String SCHEMA_TARGET_NAMESPACE_OPTION = "stn";
+    String SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION = "stp";
+    String SERVICE_NAME_OPTION = "sn";
+    String STYLE_OPTION = "st";
+    String USE_OPTION = "u";
+    String LOCATION_OPTION = "l";
+    String ATTR_FORM_DEFAULT_OPTION = "afd";
+    String ELEMENT_FORM_DEFAULT_OPTION = "efd";
+    String EXTRA_CLASSES_DEFAULT_OPTION = "xc";
+    String NAMESPACE_GENERATOR_OPTION = "nsg";
+    String JAVA_PKG_2_NSMAP_OPTION = "p2n";
+
+    //long option constants
+    String OUTPUT_LOCATION_OPTION_LONG = "output";
+    String TARGET_NAMESPACE_OPTION_LONG = "targetNamespace";
+    String TARGET_NAMESPACE_PREFIX_OPTION_LONG = "targetNamespacePrefix";
+    String SERVICE_NAME_OPTION_LONG = "serviceName";
+    String CLASSNAME_OPTION_LONG = "className";
+    String CLASSPATH_OPTION_LONG = "classPath";
+    String OUTPUT_FILENAME_OPTION_LONG = "outputFilename";
+    String SCHEMA_TARGET_NAMESPACE_OPTION_LONG = "schemaTargetnamespace";
+    String SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION_LONG = "schemaTargetnamespacePrefix";
+    String STYLE_OPTION_LONG = "style";
+    String USE_OPTION_LONG = "use";
+    String LOCATION_OPTION_LONG = "location";
+    String AXIS2_NAMESPACE_PREFIX = "ns1";
+    String ATTR_FORM_DEFAULT_OPTION_LONG = "attributeFormDefault";
+    String ELEMENT_FORM_DEFAULT_OPTION_LONG = "elementFormDefault";
+    String EXTRA_CLASSES_DEFAULT_OPTION_LONG = "extraClasses";
+    String NAMESPACE_GENERATOR_OPTION_LONG = "namespaceGenerator";
+    String JAVA_PKG_2_NSMAP_OPTION_LONG = "package2Namespace";
+
+    public static final String SOLE_INPUT = "SOLE_INPUT";
+
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLTask.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLTask.java
new file mode 100644
index 0000000..e6f66b4
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLTask.java
@@ -0,0 +1,384 @@
+package org.apache.ws.java2wsdl; 
+
+import java.util.ArrayList; 
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.tools.ant.AntClassLoader;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.Reference;
+import org.apache.ws.java2wsdl.utils.Java2WSDLCommandLineOption;
+/*
+* Copyright 2004,2005 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.
+*
+*/
+
+public class Java2WSDLTask extends Task implements Java2WSDLConstants {
+    public static final String OPEN_BRACKET = "[";
+    public static final String CLOSE_BRACKET = "]";
+    public static final String COMMA = ",";
+    
+    private String className = null;
+    private String outputLocation = null;
+    private String targetNamespace = null;
+    private String targetNamespacePrefix = null;
+    private String schemaTargetNamespace = null;
+    private String schemaTargetNamespacePrefix = null;
+    private String serviceName = null;
+    private String outputFileName = null;
+    private Path classpath = null;
+    private String style = Java2WSDLConstants.DOCUMENT;
+    private String use = Java2WSDLConstants.LITERAL;
+    private String locationUri = Java2WSDLConstants.DEFAULT_LOCATION_URL;
+    private String attrFormDefault = null;
+    private String elementFormDefault = null;
+    
+    //names of java types not used in the service defn. directly, but for which schema must be generated
+    private String[] extraClasses;
+    
+    //namespace generator classname
+    private String nsGenClassName = null;
+    
+    //package to namespace map
+    private HashMap namespaceMap = new HashMap();
+    
+    //names of java types not used in the service defn. directly, but for which schema must be generated
+    private ArrayList pkg2nsMappings = new ArrayList();
+    
+    private MappingSet mappings = new MappingSet();
+
+    public String getLocationUri() {
+        return locationUri;
+    }
+
+    public void setLocationUri(String locationUri) {
+        this.locationUri = locationUri;
+    }
+
+    public String getStyle() {
+        return style;
+    }
+
+    public void setStyle(String style) {
+        this.style = style;
+    }
+
+    public String getUse() {
+        return use;
+    }
+
+    public void setUse(String use) {
+        this.use = use;
+    }
+
+    /**
+     *
+     */
+    public Java2WSDLTask() {
+        super();
+    }
+
+    /**
+     * Fills the option map. This map is passed onto
+     * the code generation API to generate the code.
+     */
+    private Map fillOptionMap() {
+        Map optionMap = new HashMap();
+
+        // Check that critical options exist
+        if (className == null) {
+            throw new BuildException(
+                    "You must specify a classname");
+        }
+
+        ////////////////////////////////////////////////////////////////
+
+        // Classname
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.CLASSNAME_OPTION,
+                className);
+
+        // Output location
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.OUTPUT_LOCATION_OPTION,
+                outputLocation);
+
+        // Target namespace
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.TARGET_NAMESPACE_OPTION,
+                targetNamespace);
+
+        // Target namespace prefix
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.TARGET_NAMESPACE_PREFIX_OPTION,
+                targetNamespacePrefix);
+
+        // Schema target namespace
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_OPTION,
+                schemaTargetNamespace);
+
+        // Schema target namespace prefix
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION,
+                schemaTargetNamespacePrefix);
+
+        // Service name
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.SERVICE_NAME_OPTION,
+                serviceName);
+
+        // Output file name
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.OUTPUT_FILENAME_OPTION,
+                outputFileName);
+        
+        addToOptionMap(optionMap,
+                         Java2WSDLConstants.STYLE_OPTION,
+                         getStyle());
+        
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.USE_OPTION,
+                getUse());
+        
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.LOCATION_OPTION,
+                getLocationUri());
+        
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION,
+                getAttrFormDefault());
+        
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION,
+                getElementFormDefault());
+        
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.EXTRA_CLASSES_DEFAULT_OPTION,
+                getExtraClasses());
+        
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.NAMESPACE_GENERATOR_OPTION,
+                getNsGenClassName());
+        
+        loadPkg2NsMap();
+        addToOptionMap(optionMap,
+                Java2WSDLConstants.JAVA_PKG_2_NSMAP_OPTION,
+                getPkg2nsMappings());
+
+        return optionMap;
+    }
+
+    /**
+     * Utility method to convert a string into a single item string[]
+     *
+     * @param value
+     * @return Returns String[].
+     */
+    private String[] getStringArray(String value) {
+        String[] values = new String[1];
+        values[0] = value;
+        return values;
+    }
+
+    /**
+     * Function to put arguments in the option map.
+     * This functions skips adding of options that have a null value.
+     *
+     * @param map    The option map into which the option is to be added
+     * @param option The option name
+     * @param value  The value of the option
+     */
+    private void addToOptionMap(Map map, String option, String value) {
+        if (value != null) {
+            map.put(option,
+                    new Java2WSDLCommandLineOption(option, getStringArray(value)));
+        }
+    }
+    
+    private void addToOptionMap(Map map, String option, String[] values) {
+        if (values != null && values.length > 0 ) {
+            map.put(option,
+                    new Java2WSDLCommandLineOption(option, values));
+        }
+    }
+    
+    private void addToOptionMap(Map map, String option, ArrayList values) {
+        if (values != null && !values.isEmpty() ) {
+            map.put(option,
+                    new Java2WSDLCommandLineOption(option, values));
+        }
+    }
+
+    public void execute() throws BuildException {
+        try {
+
+            Map commandLineOptions = this.fillOptionMap();
+
+            AntClassLoader cl = new AntClassLoader(getClass().getClassLoader(),
+                    getProject(),
+                    classpath == null ? createClasspath() : classpath,
+                    false);
+
+            commandLineOptions.put(Java2WSDLConstants.CLASSPATH_OPTION, new Java2WSDLCommandLineOption(Java2WSDLConstants.CLASSPATH_OPTION, classpath.list()));
+
+            Thread.currentThread().setContextClassLoader(cl);
+
+            if (outputLocation != null) cl.addPathElement(outputLocation);
+
+            new Java2WSDLCodegenEngine(commandLineOptions).generate();
+
+        } catch (Throwable e) {
+            throw new BuildException(e);
+        }
+
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public void setOutputLocation(String outputLocation) {
+        this.outputLocation = outputLocation;
+    }
+
+    public void setTargetNamespace(String targetNamespace) {
+        this.targetNamespace = targetNamespace;
+    }
+
+    public void setTargetNamespacePrefix(String targetNamespacePrefix) {
+        this.targetNamespacePrefix = targetNamespacePrefix;
+    }
+
+    public void setSchemaTargetNamespace(String schemaTargetNamespace) {
+        this.schemaTargetNamespace = schemaTargetNamespace;
+    }
+
+    public void setSchemaTargetNamespacePrefix(String schemaTargetNamespacePrefix) {
+        this.schemaTargetNamespacePrefix = schemaTargetNamespacePrefix;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public void setOutputFileName(String outputFileName) {
+        this.outputFileName = outputFileName;
+    }
+
+    /**
+     * Set the optional classpath
+     *
+     * @param classpath the classpath to use when loading class
+     */
+    public void setClasspath(Path classpath) {
+        createClasspath().append(classpath);
+    }
+
+    /**
+     * Set the optional classpath
+     *
+     * @return a path instance to be configured by the Ant core.
+     */
+    public Path createClasspath() {
+        if (classpath == null) {
+            classpath = new Path(getProject());
+            classpath = classpath.concatSystemClasspath();
+        }
+        return classpath.createPath();
+    }
+
+    /**
+     * Set the reference to an optional classpath
+     *
+     * @param r the id of the Ant path instance to act as the classpath
+     */
+    public void setClasspathRef(Reference r) {
+        createClasspath().setRefid(r);
+    }
+
+    public String getAttrFormDefault() {
+        return attrFormDefault;
+    }
+
+    public void setAttrFormDefault(String attrFormDefault) {
+        this.attrFormDefault = attrFormDefault;
+    }
+
+    public String getElementFormDefault() {
+        return elementFormDefault;
+    }
+
+    public void setElementFormDefault(String elementFormDefault) {
+        this.elementFormDefault = elementFormDefault;
+    }
+
+    public String[] getExtraClasses() {
+        return extraClasses;
+    }
+
+    public void setExtraClasses(String[] extraClasses) {
+        this.extraClasses = extraClasses;
+    }
+
+    public String getNsGenClassName() {
+        return nsGenClassName;
+    }
+
+    public void setNsGenClassName(String nsGenClassName) {
+        this.nsGenClassName = nsGenClassName;
+    }
+    
+    public void loadPkg2NsMap() {
+        mappings.execute(namespaceMap, true);
+        Iterator packageNames = namespaceMap.keySet().iterator();
+        String packageName = null;
+        while ( packageNames.hasNext() ) {
+            packageName = (String)packageNames.next();
+            pkg2nsMappings.add(OPEN_BRACKET + 
+                                packageName +
+                                COMMA +
+                                namespaceMap.get(packageName) +
+                                CLOSE_BRACKET);
+        }
+    }
+
+    public ArrayList getPkg2nsMappings() {
+        return pkg2nsMappings;
+    }
+
+    public void setPkg2nsMappings(ArrayList pkg2nsMappings) {
+        this.pkg2nsMappings = pkg2nsMappings;
+    }
+    
+    /**
+     * add a mapping of namespaces to packages
+     */
+    public void addMapping(NamespaceMapping mapping) {
+        mappings.addMapping(mapping);
+    }
+
+    /**
+     * add a mapping of namespaces to packages
+     */
+    public void addMappingSet(MappingSet mappingset) {
+        mappings.addMappingSet(mappingset);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLUtils.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLUtils.java
new file mode 100644
index 0000000..f45d36d
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLUtils.java
@@ -0,0 +1,126 @@
+package org.apache.ws.java2wsdl;
+
+/*
+ * Copyright 2004,2005 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.
+ *
+ */
+
+public class Java2WSDLUtils {
+
+    public static final String HTTP = "http://";
+
+    public static final char PACKAGE_CLASS_DELIMITER = '.';
+
+    public static final String SCHEMA_NAMESPACE_EXTN = "/xsd";
+
+    private static NamespaceGenerator defaultNsGenerator = new DefaultNamespaceGenerator();
+
+    /**
+     * check the entry for a URL. This is a simple check and need to be improved
+     *
+     * @param entry
+     */
+
+    public static boolean isURL(String entry) {
+        return entry.startsWith("http://");
+    }
+
+    /**
+     * A method to strip the fully qualified className to a simple classname
+     *
+     * @param qualifiedName
+     */
+    public static String getSimpleClassName(String qualifiedName) {
+        int index = qualifiedName.lastIndexOf(".");
+        if (index > 0) {
+            return qualifiedName.substring(index + 1,
+                    qualifiedName.length());
+        }
+        return qualifiedName;
+    }
+
+    public static StringBuffer namespaceFromClassName(String className,
+                                                      ClassLoader classLoader) throws Exception {
+        return namespaceFromClassName(className, classLoader, defaultNsGenerator);
+    }
+
+
+    public static StringBuffer namespaceFromClassName(String className,
+                                                      ClassLoader classLoader,
+                                                      NamespaceGenerator nsGen) throws Exception {
+        Class clazz = Class.forName(className,
+                true,
+                classLoader);
+        Package pkg = clazz.getPackage();
+        String name;
+
+        if (pkg != null)
+            name = pkg.getName();
+        else
+            name = packageNameFromClass(className);
+
+        return nsGen.namespaceFromPackageName(name);
+    }
+
+    public static StringBuffer schemaNamespaceFromClassName(String packageName, ClassLoader loader) throws Exception {
+        return schemaNamespaceFromClassName(packageName, loader, defaultNsGenerator);
+    }
+
+    public static StringBuffer schemaNamespaceFromClassName(String packageName, ClassLoader loader, NamespaceGenerator nsGen) throws Exception {
+        StringBuffer stringBuffer = namespaceFromClassName(packageName,
+                loader,
+                nsGen);
+        if (stringBuffer.length() == 0) {
+            stringBuffer.append(Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE);
+        }
+        stringBuffer.append(SCHEMA_NAMESPACE_EXTN);
+        return stringBuffer;
+    }
+
+    public static StringBuffer targetNamespaceFromClassName(String packageName, ClassLoader loader,
+                                                            NamespaceGenerator nsGen) throws Exception {
+        StringBuffer stringBuffer = namespaceFromClassName(packageName,
+                loader,
+                nsGen);
+        if (stringBuffer.length() == 0) {
+            stringBuffer.append(Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE);
+        }
+        return stringBuffer;
+    }
+
+
+    public static String getPackageName(String className, ClassLoader classLoader) throws Exception {
+        Class clazz = Class.forName(className,
+                true,
+                classLoader);
+        Package pkg = clazz.getPackage();
+        String name;
+
+        if (pkg != null)
+            name = pkg.getName();
+        else
+            name = packageNameFromClass(className);
+        return name;
+    }
+
+    protected static String packageNameFromClass(String name) {
+        String ret = "";
+        int lastDot = name.lastIndexOf('.');
+
+        if (lastDot != -1)
+            ret = name.substring(0, lastDot);
+        return ret;
+    }
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Mapper.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Mapper.java
new file mode 100644
index 0000000..3bd7298
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/Mapper.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.ws.java2wsdl;
+
+import java.util.HashMap;
+
+import org.apache.tools.ant.BuildException;
+
+/**
+ * interface that namespace mappers are expected to implement
+ */
+
+public interface Mapper {
+    /**
+     * execute the mapping
+     * @param map map to map to
+     * @param packageIsKey if the package is to be the key for the map
+     * @throws BuildException in case of emergency
+     */
+    void execute(HashMap map, boolean packageIsKey) throws BuildException;
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/MappingSet.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/MappingSet.java
new file mode 100644
index 0000000..cb71b0d
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/MappingSet.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.ws.java2wsdl;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ *a mappingset is a set of mappings
+ */
+public class MappingSet implements Mapper {
+
+    List mappings = new LinkedList();
+
+    /**
+     * add a new mapping
+     * @param mapping
+     */
+    public void addMapping(NamespaceMapping mapping) {
+        mappings.add(mapping);
+    }
+
+    /**
+     * add a mappingset inside this one
+     * @param mappingset
+     */
+    public void addMappingSet(MappingSet mappingset) {
+        mappings.add(mappingset);
+    }
+
+    /**
+     * execute by mapping everything iteratively and recursively
+     * @param map map to map into
+     * @param packageIsKey if the package is to be the key for the map
+     */
+    public void execute(HashMap map, boolean packageIsKey) {
+        Iterator it=mappings.iterator();
+        while (it.hasNext()) {
+            Mapper mapper = (Mapper) it.next();
+            mapper.execute(map, packageIsKey);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/NamespaceGenerator.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/NamespaceGenerator.java
new file mode 100644
index 0000000..9b887c5
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/NamespaceGenerator.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+
+             http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.     
+ */
+package org.apache.ws.java2wsdl;
+
+/**
+ * This interface must be implemented to provide custom implemtations for, 
+ * java package name to namespace mapping.  An instance of this class is used by the schema generator
+ * for generation namespaces
+ *
+ */
+public interface NamespaceGenerator {
+    public StringBuffer namespaceFromPackageName(String packageName);
+    public StringBuffer schemaNamespaceFromPackageName(String packageName);
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/NamespaceMapping.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/NamespaceMapping.java
new file mode 100644
index 0000000..445a02b
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/NamespaceMapping.java
@@ -0,0 +1,255 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.ws.java2wsdl;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamConstants;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Used for nested package definitions.
+ * The file format used for storing mappings is a list of package=namespace
+ */
+public class NamespaceMapping implements Mapper {
+    public static final QName PKG2NS_MAPPINGS = new QName("http://ws.apache.org/axis2", "pkg2ns_mapping");
+    public static final QName MAPPING = new QName("http://ws.apache.org/axis2", "mapping");
+    public static final String NAMESPACE = "namespace";
+    public static final String PACKAGE = "package";
+
+    private String namespace = null;
+    private String packageName = null;
+    private File mappingFile;
+    private InputStream mapInputStream = null;
+    private XMLStreamReader mapXmlReader = null;
+
+    /**
+     * pass in the namespace to map to
+     */
+    public NamespaceMapping() {
+    }
+
+    /**
+     * the namespace in the WSDL. Required.
+     * @param value new uri of the mapping
+     */
+    public void setNamespace(String value) {
+        namespace = value;
+    }
+
+    /**
+     * the Java package to bind to. Required.
+     * @param value java package name
+     */
+    public void setPackage(String value) {
+        packageName = value;
+    }
+
+    /**
+     * name of a property file that contains mappings in
+     * package=namespace format
+     * @param file file to load
+     */
+    public void setFile(File file) {
+        mappingFile = file;
+    }
+
+    /**
+     * map a namespace to a package
+     * @param map map to assign to
+     * @param packName package name
+     * @param nspace namespace
+     * @param packageIsKey if the package is to be the key for the map
+     */
+    protected void map(HashMap map,
+                       String packName,
+                       String nspace,
+                       boolean packageIsKey) {
+        if(packageIsKey) {
+            map.put(packName,nspace);
+        } else {
+            map.put(nspace, packName);
+        }
+    }
+
+    /**
+     * validate the option set
+     */
+    private void validate() {
+        if (mappingFile != null || mapInputStream != null || mapXmlReader != null ) {
+            if (namespace != null || packageName != null) {
+                throw new BuildException(
+                        "Namespace or Package cannot be used with a File attribute");
+            }
+        } else {
+            if (namespace == null) {
+                throw new BuildException("namespace must be defined");
+            }
+            if (packageName == null) {
+                throw new BuildException("package must be defined");
+            }
+        }
+    }
+
+    /**
+     * Load a mapping xml reader and save it to the map
+     * @param map target map file
+     * @param packageIsKey if the package is to be the key for the map
+     * @throws BuildException if an IOException needed swallowing
+     */
+    protected void mapXmlReader(HashMap map, boolean packageIsKey) throws BuildException {
+        try {
+            loadMappingFromXMLReader(map, packageIsKey); 
+        } catch ( Exception e ) {
+            throw new BuildException(e);
+        }
+    }
+   
+    
+    /**
+     * Load a mapping input stream  and save it to the map
+     * @param map target map file
+     * @param packageIsKey if the package is to be the key for the map
+     * @throws BuildException if an IOException needed swallowing
+     */
+    protected void mapXmlStream(HashMap map, boolean packageIsKey) throws BuildException {
+        try {
+            mapXmlReader = StAXUtils.createXMLStreamReader(mapInputStream);
+            mapXmlReader(map, packageIsKey);
+            //ensure this clean up so that the next invocation does not have any stale state
+            mapXmlReader = null;
+        } catch ( Exception e ) {
+            throw new BuildException(e);
+        }
+    }
+    
+    /**
+     * Load a mapping file and save it to the map
+     * @param map target map file
+     * @param packageIsKey if the package is to be the key for the map
+     * @throws BuildException if an IOException needed swallowing
+     */
+    protected void mapFile(HashMap map, boolean packageIsKey) throws BuildException {
+        try {
+            mapInputStream = new FileInputStream(mappingFile);
+            mapXmlStream(map, packageIsKey); 
+            //need to do this since the file was opened here
+            mapInputStream.close();
+            //ensure this clean up so that the next invocation does not have any stale state
+            mapInputStream = null;
+        } catch ( Exception e ) {
+            throw new BuildException(e);
+        }
+    }
+    
+    /**
+     * load from an xml reader containing mapping info
+     * @return a properties file with zero or more mappings
+     * @throws BuildException if the load failed
+     */
+    private void loadMappingFromXMLReader(HashMap map, boolean packageIsKey) throws BuildException {
+        try {
+                QName parentElement = null;
+                //if the reader is in the fragment that deals with package to namespace mappings
+                while (mapXmlReader.hasNext()) {
+                   // mapXmlReader.next();mapXmlReader.next();
+                   //  if ( mapXmlReader.getName().equals(PKG2NS_MAPPINGS) ) {
+                        switch (mapXmlReader.next()) {
+                            case XMLStreamConstants.START_ELEMENT :
+                                QName qname = mapXmlReader.getName();
+                                if (MAPPING.equals(qname) && parentElement.equals(PKG2NS_MAPPINGS)) {
+                                    map(map, 
+                                        mapXmlReader.getAttributeValue(null, PACKAGE), 
+                                        mapXmlReader.getAttributeValue(null, NAMESPACE), 
+                                        packageIsKey);
+                                } else {
+                                    parentElement = qname;
+                                }
+                                
+                                mapXmlReader.next();
+                                break;
+                            case XMLStreamConstants.END_ELEMENT:
+                                if (mapXmlReader.getName().equals(PKG2NS_MAPPINGS)) {
+                                    //ensure this clean up
+                                    return;
+                                }
+                                break;
+                   //     }
+                }
+            }
+        } catch ( Exception e ) {
+            System.out.println("Exception while loading package to namespace mappings... " + e);
+        }
+    }
+
+    /**
+     * execute the mapping
+     * @param map map to map to
+     * @param packageIsKey if the package is to be the key for the map
+     * @throws BuildException in case of emergency
+     */
+    public void execute(HashMap map, boolean packageIsKey) throws BuildException {
+        validate();
+        if (mappingFile != null ) {
+            mapFile(map,packageIsKey);
+            //ensure this clean up so that the next invocation does not have any stale state
+            mappingFile = null;
+        } else if ( mapInputStream != null ) {
+            mapXmlStream(map, packageIsKey);   
+        } else if ( mapXmlReader != null ) {
+            mapXmlReader(map, packageIsKey);
+        } else {
+            map(map, packageName, namespace, packageIsKey);
+        }
+    }
+
+    public InputStream getMapInputStream() {
+        return mapInputStream;
+    }
+
+    public void setMapInputStream(InputStream mapInputStream) {
+        this.mapInputStream = mapInputStream;
+    }
+
+    public File getMappingFile() {
+        return mappingFile;
+    }
+
+    public void setMappingFile(File mappingFile) {
+        this.mappingFile = mappingFile;
+    }
+
+    public XMLStreamReader getXmlReader() {
+        return mapXmlReader;
+    }
+
+    public void setXmlReader(XMLStreamReader xmlReader) {
+        this.mapXmlReader = xmlReader;
+    }
+
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
new file mode 100644
index 0000000..387546c
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
@@ -0,0 +1,558 @@
+package org.apache.ws.java2wsdl;
+
+import org.apache.ws.commons.schema.*;
+import org.apache.ws.commons.schema.utils.NamespaceMap;
+import org.apache.ws.java2wsdl.bytecode.MethodTable;
+import org.apache.ws.java2wsdl.utils.TypeTable;
+import org.codehaus.jam.*;
+
+import javax.xml.namespace.QName;
+import java.util.*;
+
+/*
+* Copyright 2004,2005 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.
+*
+*/
+
+public class SchemaGenerator implements Java2WSDLConstants {
+
+    public static final String NAME_SPACE_PREFIX = "ax2";// axis2 name space
+
+    private static int prefixCount = 1;
+
+    protected Map targetNamespacePrefixMap = new Hashtable();
+
+    protected Map schemaMap = new Hashtable();
+
+    protected XmlSchemaCollection xmlSchemaCollection = new XmlSchemaCollection();
+
+
+    private ClassLoader classLoader;
+
+    private String className;
+
+    private TypeTable typeTable = new TypeTable();
+
+    // to keep loadded method using JAM
+    private JMethod methods [];
+
+    //to store byte code method using Axis 1.x codes
+    private MethodTable methodTable;
+
+    private String schemaTargetNameSpace;
+
+    private String schema_namespace_prefix;
+
+    private String attrFormDefault = null;
+
+    private String elementFormDefault = null;
+
+    private ArrayList excludeMethods = new ArrayList();
+
+    private ArrayList extraClasses = null;
+
+    private boolean useWSDLTypesNamespace = false;
+
+    private Map pkg2nsmap = null;
+
+    private NamespaceGenerator nsGen = null;
+
+    private String targetNamespace = null;
+
+    public NamespaceGenerator getNsGen() throws Exception {
+        if ( nsGen == null ) {
+            nsGen = new DefaultNamespaceGenerator();
+        }
+        return nsGen;
+    }
+
+    public void setNsGen(NamespaceGenerator nsGen) {
+        this.nsGen = nsGen;
+    }
+
+    public SchemaGenerator(ClassLoader loader, String className,
+                           String schematargetNamespace,
+                           String schematargetNamespacePrefix)
+            throws Exception {
+        this.classLoader = loader;
+        this.className = className;
+
+        Class clazz = Class.forName(className, true, loader);
+        methodTable = new MethodTable(clazz);
+
+        this.targetNamespace = Java2WSDLUtils.targetNamespaceFromClassName(
+                className, loader, getNsGen()).toString();
+        
+        if (schematargetNamespace != null
+                && schematargetNamespace.trim().length() != 0) {
+            this.schemaTargetNameSpace = schematargetNamespace;
+        } else {
+            this.schemaTargetNameSpace =
+                    Java2WSDLUtils.schemaNamespaceFromClassName(className, loader, getNsGen()).toString();
+        }
+        
+        if (schematargetNamespacePrefix != null
+                && schematargetNamespacePrefix.trim().length() != 0) {
+            this.schema_namespace_prefix = schematargetNamespacePrefix;
+        } else {
+            this.schema_namespace_prefix = SCHEMA_NAMESPACE_PRFIX;
+        }
+    }
+
+    /**
+     * Generates schema for all the parameters in method. First generates schema
+     * for all different parameter type and later refers to them.
+     *
+     * @return Returns XmlSchema.
+     * @throws Exception
+     */
+    public Collection generateSchema() throws Exception {
+
+        JamServiceFactory factory = JamServiceFactory.getInstance();
+        JamServiceParams jam_service_parms = factory.createServiceParams();
+        //setting the classLoder
+//        jam_service_parms.setParentClassLoader(factory.createJamClassLoader(classLoader));
+        //it can posible to add the classLoader as well
+        jam_service_parms.addClassLoader(classLoader);
+        jam_service_parms.includeClass(className);
+
+        for (int count = 0; count < getExtraClasses().size(); ++count) {
+            jam_service_parms.includeClass((String) getExtraClasses().get(count));
+        }
+        JamService service = factory.createService(jam_service_parms);
+        QName extraSchemaTypeName;
+        JamClassIterator jClassIter = service.getClasses();
+        //all most all the time the ittr will have only one class in it
+        while (jClassIter.hasNext()) {
+            JClass jclass = (JClass) jClassIter.next();
+            // serviceName = jclass.getSimpleName();
+            //todo in the future , when we support annotation we can use this
+            //JAnnotation[] annotations = jclass.getAnnotations();
+
+            if (jclass.getQualifiedName().equals(className)) {
+                /**
+                 * Schema genertaion done in two stage 1. Load all the methods and
+                 * create type for methods parameters (if the parameters are Bean
+                 * then it will create Complex types for those , and if the
+                 * parameters are simple type which decribe in SimpleTypeTable
+                 * nothing will happen) 2. In the next stage for all the methods
+                 * messages and port types will be creteated
+                 */
+                methods = jclass.getDeclaredMethods();
+                //short the elements in the array
+                Arrays.sort(methods);
+
+                // since we do not support overload
+                HashMap uniqueMethods = new HashMap();
+                XmlSchemaComplexType methodSchemaType;
+                XmlSchemaSequence sequence = null;
+
+                for (int i = 0; i < methods.length; i++) {
+                    JMethod jMethod = methods[i];
+                    String methodName = methods[i].getSimpleName();
+                    // no need to think abt this method , since that is system
+                    // config method
+                    if (excludeMethods.contains(jMethod.getSimpleName())) {
+                        continue;
+                    }
+
+                    if (uniqueMethods.get(jMethod.getSimpleName()) != null) {
+                        throw new Exception(
+                                " Sorry we don't support methods overloading !!!! ");
+                    }
+
+                    if (!jMethod.isPublic()) {
+                        // no need to generate Schema for non public methods
+                        continue;
+                    }
+                    if (jMethod.getExceptionTypes().length > 0) {
+                        methodSchemaType = createSchemaTypeForMethodPart(jMethod.getSimpleName() + "Fault");
+                        sequence = new XmlSchemaSequence();
+                        XmlSchemaElement elt1 = new XmlSchemaElement();
+                        elt1.setName(jMethod.getSimpleName() + "Fault");
+                        elt1.setSchemaTypeName(typeTable.getQNamefortheType(Object.class.getName()));
+                        sequence.getItems().add(elt1);
+                        methodSchemaType.setParticle(sequence);
+                    }
+                    uniqueMethods.put(jMethod.getSimpleName(), jMethod);
+                    //create the schema type for the method wrapper
+
+                    uniqueMethods.put(jMethod.getSimpleName(), jMethod);
+                    JParameter [] paras = jMethod.getParameters();
+                    String parameterNames [] = null;
+                    if (paras.length > 0) {
+                        parameterNames = methodTable.getParameterNames(methodName);
+                        sequence = new XmlSchemaSequence();
+
+                        methodSchemaType = createSchemaTypeForMethodPart(jMethod.getSimpleName());
+                        methodSchemaType.setParticle(sequence);
+                    }
+
+                    for (int j = 0; j < paras.length; j++) {
+                        JParameter methodParameter = paras[j];
+                        JClass paraType = methodParameter.getType();
+                        generateSchemaForType(sequence, paraType,
+                                (parameterNames != null && parameterNames[j] != null) ? parameterNames[j] : methodParameter.getSimpleName());
+                    }
+                    // for its return type
+                    JClass returnType = jMethod.getReturnType();
+
+                    if (!returnType.isVoidType()) {
+                        methodSchemaType = createSchemaTypeForMethodPart(jMethod.getSimpleName() + RESPONSE);
+                        sequence = new XmlSchemaSequence();
+                        methodSchemaType.setParticle(sequence);
+                        generateSchemaForType(sequence, returnType, "return");
+                    }
+                }
+            } else {
+                //generate the schema type for extra classes
+                extraSchemaTypeName = typeTable.getSimpleSchemaTypeName(jclass.getQualifiedName());
+                if (extraSchemaTypeName == null) {
+                    generateSchema(jclass);
+                }
+            }
+        }
+        return schemaMap.values();
+    }
+
+    /**
+     * JAM convert first name of an attribute into UpperCase as an example if
+     * there is a instance variable called foo in a bean , then Jam give that as
+     * Foo so this method is to correct that error
+     *
+     * @param wrongName
+     * @return the right name, using english as the locale for case conversion
+     */
+    public static String getCorrectName(String wrongName) {
+        if (wrongName.length() > 1) {
+            return wrongName.substring(0, 1).toLowerCase(Locale.ENGLISH)
+                    + wrongName.substring(1, wrongName.length());
+        } else {
+            return wrongName.substring(0, 1).toLowerCase(Locale.ENGLISH);
+        }
+    }
+
+    /**
+     * @param javaType
+     */
+    private QName generateSchema(JClass javaType) throws Exception {
+        String name = javaType.getQualifiedName();
+        QName schemaTypeName = typeTable.getComplexSchemaType(name);
+        if (schemaTypeName == null) {
+            String simpleName = javaType.getSimpleName();
+
+            String packageName = javaType.getContainingPackage().getQualifiedName();
+            String targetNameSpace = resolveSchemaNamespace(packageName);
+
+            XmlSchema xmlSchema = getXmlSchema(targetNameSpace);
+            String targetNamespacePrefix = (String) targetNamespacePrefixMap.get(targetNameSpace);
+
+            XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
+            XmlSchemaSequence sequence = new XmlSchemaSequence();
+
+            XmlSchemaElement eltOuter = new XmlSchemaElement();
+            schemaTypeName = new QName(targetNameSpace, simpleName, targetNamespacePrefix);
+            eltOuter.setName(simpleName);
+            eltOuter.setQName(schemaTypeName);
+            complexType.setParticle(sequence);
+            complexType.setName(simpleName);
+
+            xmlSchema.getItems().add(eltOuter);
+            xmlSchema.getElements().add(schemaTypeName, eltOuter);
+            eltOuter.setSchemaTypeName(complexType.getQName());
+
+            xmlSchema.getItems().add(complexType);
+            xmlSchema.getSchemaTypes().add(schemaTypeName, complexType);
+
+            // adding this type to the table
+            typeTable.addComplexSchema(name, eltOuter.getQName());
+
+	    JClass tempClass = javaType;
+	    Set propertiesSet = new HashSet();
+	    while (tempClass != null && !"java.lang.Object".equals(tempClass.getQualifiedName())) {
+		JProperty[] tempProperties = tempClass.getDeclaredProperties();
+		for (int i = 0; i < tempProperties.length; i++) {
+		    propertiesSet.add(tempProperties[i]);
+		}
+		tempClass = tempClass.getSuperclass();
+	    }
+	    JProperty[] properties = (JProperty[]) propertiesSet.toArray(new JProperty[0]);
+            Arrays.sort(properties);
+            for (int i = 0; i < properties.length; i++) {
+                JProperty property = properties[i];
+                String propertyName = property.getType().getQualifiedName();
+                boolean isArryType = property.getType().isArrayType();
+                if (isArryType) {
+                    propertyName = property.getType().getArrayComponentType().getQualifiedName();
+                }
+                if (typeTable.isSimpleType(propertyName)) {
+                    XmlSchemaElement elt1 = new XmlSchemaElement();
+                    elt1.setName(getCorrectName(property.getSimpleName()));
+                    elt1.setSchemaTypeName(typeTable.getSimpleSchemaTypeName(propertyName));
+                    sequence.getItems().add(elt1);
+                    if (isArryType) {
+                        elt1.setMaxOccurs(Long.MAX_VALUE);
+                        elt1.setMinOccurs(1);
+                    }
+                    if (String.class.getName().equals(propertyName)) {
+                        elt1.setNillable(true);
+                    }
+                } else {
+                    if (isArryType) {
+                        generateSchema(property.getType().getArrayComponentType());
+                    } else {
+                        generateSchema(property.getType());
+                    }
+                    XmlSchemaElement elt1 = new XmlSchemaElement();
+                    elt1.setName(getCorrectName(property.getSimpleName()));
+                    elt1.setSchemaTypeName(typeTable.getComplexSchemaType(propertyName));
+                    sequence.getItems().add(elt1);
+                    if (isArryType) {
+                        elt1.setMaxOccurs(Long.MAX_VALUE);
+                        elt1.setMinOccurs(1);
+                    }
+                    elt1.setNillable(true);
+
+                    if (!((NamespaceMap) xmlSchema.getNamespaceContext()).values().
+                            contains(typeTable.getComplexSchemaType(propertyName).getNamespaceURI())) {
+                        XmlSchemaImport importElement = new XmlSchemaImport();
+                        importElement.setNamespace(typeTable.getComplexSchemaType(propertyName).getNamespaceURI());
+                        xmlSchema.getItems().add(importElement);
+                        ((NamespaceMap) xmlSchema.getNamespaceContext()).
+                                put(generatePrefix(), typeTable.getComplexSchemaType(propertyName).getNamespaceURI());
+                    }
+                }
+            }
+        }
+        return schemaTypeName;
+    }
+
+    private QName generateSchemaForType(XmlSchemaSequence sequence, JClass type, String partName) throws Exception {
+        boolean isArrayType = type.isArrayType();
+        if (isArrayType) {
+            type = type.getArrayComponentType();
+        }
+
+        String classTypeName = type.getQualifiedName();
+        if (isArrayType && "byte".equals(classTypeName)) {
+            classTypeName = "base64Binary";
+            isArrayType = false;
+        }
+
+        QName schemaTypeName = typeTable.getSimpleSchemaTypeName(classTypeName);
+        if (schemaTypeName == null) {
+            schemaTypeName = generateSchema(type);
+            addContentToMethodSchemaType(sequence,
+                    schemaTypeName,
+                    partName,
+                    isArrayType);
+            //addImport((XmlSchema)schemaMap.get(schemaTargetNameSpace), schemaTypeName);
+            String schemaNamespace;
+            schemaNamespace = resolveSchemaNamespace(type.getContainingPackage().
+                    getQualifiedName());
+            addImport(getXmlSchema(schemaNamespace), schemaTypeName);
+
+        } else {
+            addContentToMethodSchemaType(sequence,
+                    schemaTypeName,
+                    partName,
+                    isArrayType);
+        }
+
+        return schemaTypeName;
+    }
+
+    private void addContentToMethodSchemaType(XmlSchemaSequence sequence,
+                                              QName schemaTypeName,
+                                              String paraName,
+                                              boolean isArray) {
+        XmlSchemaElement elt1 = new XmlSchemaElement();
+        elt1.setName(paraName);
+        elt1.setSchemaTypeName(schemaTypeName);
+        sequence.getItems().add(elt1);
+
+        if (isArray) {
+            elt1.setMaxOccurs(Long.MAX_VALUE);
+            elt1.setMinOccurs(1);
+        }
+        elt1.setNillable(true);
+    }
+
+    private XmlSchemaComplexType createSchemaTypeForMethodPart(String localPartName) {
+        //XmlSchema xmlSchema = (XmlSchema)schemaMap.get(schemaTargetNameSpace);
+        XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace);
+        QName elementName = new QName(this.schemaTargetNameSpace, localPartName, this.schema_namespace_prefix);
+        XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
+
+        XmlSchemaElement globalElement = new XmlSchemaElement();
+        globalElement.setSchemaType(complexType);
+//        globalElement.setName(formGlobalElementName(localPartName));
+        globalElement.setName(localPartName);
+        globalElement.setQName(elementName);
+        xmlSchema.getItems().add(globalElement);
+        xmlSchema.getElements().add(elementName, globalElement);
+
+        typeTable.addComplexSchema(localPartName, elementName);
+
+        return complexType;
+    }
+
+    private XmlSchema getXmlSchema(String targetNamespace) {
+        XmlSchema xmlSchema;
+
+        if ((xmlSchema = (XmlSchema) schemaMap.get(targetNamespace)) == null) {
+            String targetNamespacePrefix = null;
+            
+            if ( targetNamespace.equals(schemaTargetNameSpace) && 
+                    schema_namespace_prefix != null ) {
+                targetNamespacePrefix = schema_namespace_prefix;
+            }
+            else {
+                targetNamespacePrefix = generatePrefix();
+            }
+
+            xmlSchema = new XmlSchema(targetNamespace, xmlSchemaCollection);
+            xmlSchema.setAttributeFormDefault(getAttrFormDefaultSetting());
+            xmlSchema.setElementFormDefault(getElementFormDefaultSetting());
+
+
+            targetNamespacePrefixMap.put(targetNamespace, targetNamespacePrefix);
+            schemaMap.put(targetNamespace, xmlSchema);
+
+            NamespaceMap prefixmap = new NamespaceMap();
+            prefixmap.put(DEFAULT_SCHEMA_NAMESPACE_PREFIX, URI_2001_SCHEMA_XSD);
+            prefixmap.put(targetNamespacePrefix, targetNamespace);
+            xmlSchema.setNamespaceContext(prefixmap);
+        }
+        return xmlSchema;
+    }
+
+
+    public TypeTable getTypeTable() {
+        return typeTable;
+    }
+
+    public JMethod[] getMethods() {
+        return methods;
+    }
+
+    private String generatePrefix() {
+        return NAME_SPACE_PREFIX + prefixCount++;
+    }
+
+    public void setExcludeMethods(ArrayList excludeMethods) {
+        this.excludeMethods = excludeMethods;
+    }
+
+    public String getSchemaTargetNameSpace() {
+        return schemaTargetNameSpace;
+    }
+
+    private void addImport(XmlSchema xmlSchema, QName schemaTypeName) {
+        if (!((NamespaceMap) xmlSchema.getNamespaceContext()).values().
+                contains(schemaTypeName.getNamespaceURI())) {
+            XmlSchemaImport importElement = new XmlSchemaImport();
+            importElement.setNamespace(schemaTypeName.getNamespaceURI());
+            xmlSchema.getItems().add(importElement);
+            ((NamespaceMap) xmlSchema.getNamespaceContext()).
+                    put(generatePrefix(), schemaTypeName.getNamespaceURI());
+        }
+    }
+
+    public String getAttrFormDefault() {
+        return attrFormDefault;
+    }
+
+    public void setAttrFormDefault(String attrFormDefault) {
+        this.attrFormDefault = attrFormDefault;
+    }
+
+    public String getElementFormDefault() {
+        return elementFormDefault;
+    }
+
+    public void setElementFormDefault(String elementFormDefault) {
+        this.elementFormDefault = elementFormDefault;
+    }
+
+    private XmlSchemaForm getAttrFormDefaultSetting() {
+        if (FORM_DEFAULT_UNQUALIFIED.equals(getAttrFormDefault())) {
+            return new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
+        } else {
+            return new XmlSchemaForm(XmlSchemaForm.QUALIFIED);
+        }
+    }
+
+    private XmlSchemaForm getElementFormDefaultSetting() {
+        if (FORM_DEFAULT_UNQUALIFIED.equals(getElementFormDefault())) {
+            return new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
+        } else {
+            return new XmlSchemaForm(XmlSchemaForm.QUALIFIED);
+        }
+    }
+
+    public ArrayList getExtraClasses() {
+        if (extraClasses == null) {
+            extraClasses = new ArrayList();
+        }
+        return extraClasses;
+    }
+
+    public void setExtraClasses(ArrayList extraClasses) {
+        this.extraClasses = extraClasses;
+    }
+
+    private String resolveSchemaNamespace(String packageName) throws Exception {
+        //if all types must go into the wsdl types schema namespace
+        if (useWSDLTypesNamespace) {
+            //return schemaTargetNameSpace;
+            return (String) pkg2nsmap.get("all");
+        } else {
+            if (pkg2nsmap != null && !pkg2nsmap.isEmpty()) {
+                //if types should go into namespaces that are mapped against the package name for the type
+                if (pkg2nsmap.get(packageName) != null) {
+                    //return that mapping
+                    return (String) pkg2nsmap.get(packageName);
+                } else {
+                    return getNsGen().schemaNamespaceFromPackageName(packageName).toString();
+                }
+            } else {
+                // if  pkg2nsmap is null and if not default schema ns found for the custom bean
+                return getNsGen().schemaNamespaceFromPackageName(packageName).toString();
+            }
+        }
+    }
+
+    public boolean isUseWSDLTypesNamespace() {
+        return useWSDLTypesNamespace;
+    }
+
+    public void setUseWSDLTypesNamespace(boolean useWSDLTypesNamespace) {
+        this.useWSDLTypesNamespace = useWSDLTypesNamespace;
+    }
+
+    public Map getPkg2nsmap() {
+        return pkg2nsmap;
+    }
+
+    public void setPkg2nsmap(Map pkg2nsmap) {
+        this.pkg2nsmap = pkg2nsmap;
+    }
+
+    public String getTargetNamespace() {
+        return targetNamespace;
+    }
+
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ChainedParamReader.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ChainedParamReader.java
new file mode 100644
index 0000000..e14e2b4
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ChainedParamReader.java
@@ -0,0 +1,118 @@
+/*
+* Copyright 2004,2005 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.ws.java2wsdl.bytecode;
+
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description: In ParamReader class, user cannot get inherited method parameter
+ * from the class they passed in for performance reasons This class
+ * is walks up the inheritance chain. If the method is not found in
+ * the derived class, search in super class. If not found in the immedidate super
+ * class, search super class's super class, until the root, which is java.lang.Object,
+ * is reached. This is not an eager load since it only start searching the super class
+ * when it is asked to.
+ */
+public class ChainedParamReader {
+    private List chain = new ArrayList();
+    private List clsChain = new ArrayList();
+    private Map methodToParamMap = new HashMap();
+
+    /**
+     * Processes a given class's parameter names.
+     *
+     * @param cls the class which user wants to get parameter info from
+     * @throws IOException
+     */
+    public ChainedParamReader(Class cls) throws IOException {
+        ParamReader reader = new ParamReader(cls);
+        chain.add(reader);
+        clsChain.add(cls);
+    }
+
+    //now I need to create deligate methods
+
+    /**
+     * Returns the names of the declared parameters for the given constructor.
+     * If we cannot determine the names, return null.  The returned array will
+     * have one name per parameter.  The length of the array will be the same
+     * as the length of the Class[] array returned by Constructor.getParameterTypes().
+     *
+     * @param ctor
+     * @return Returns array of names, one per parameter, or null
+     */
+    public String[] getParameterNames(Constructor ctor) {
+        //there is no need for the constructor chaining.
+        return ((ParamReader) chain.get(0)).getParameterNames(ctor);
+    }
+
+    /**
+     * Returns the names of the declared parameters for the given method.
+     * If cannot determine the names in the current class, search its parent 
+     * class until we reach java.lang.Object. If still can not find the method,
+     * returns null. The returned array has one name per parameter. The length 
+     * of the array will be the same as the length of the Class[] array 
+     * returned by Method.getParameterTypes().
+     *
+     * @param method
+     * @return String[] Returns array of names, one per parameter, or null
+     */
+    public String[] getParameterNames(Method method) {
+        //go find the one from the cache first
+        if (methodToParamMap.containsKey(method)) {
+            return (String[]) methodToParamMap.get(method);
+        }
+
+        String[] ret = null;
+        for (Iterator it = chain.iterator(); it.hasNext();) {
+            ParamReader reader = (ParamReader) it.next();
+            ret = reader.getParameterNames(method);
+            if (ret != null) {
+                methodToParamMap.put(method, ret);
+                return ret;
+            }
+        }
+        //if we here, it means we need to create new chain.
+        Class cls = (Class) clsChain.get(chain.size() - 1);
+        while (cls != null && cls != java.lang.Object.class && cls.getSuperclass() != null) {
+            Class superClass = cls.getSuperclass();
+            try {
+                ParamReader _reader = new ParamReader(superClass);
+                chain.add(_reader);
+                clsChain.add(cls);
+                ret = _reader.getParameterNames(method);
+                if (ret != null) { //we found it so just return it.
+                    methodToParamMap.put(method, ret);
+                    return ret;
+                }
+            } catch (IOException e) {
+                //can not find the super class in the class path, abort here
+                return null;
+            }
+            cls = superClass;
+        }
+        methodToParamMap.put(method, ret);
+        return null;
+    }
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ClassReader.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ClassReader.java
new file mode 100644
index 0000000..9df5316
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ClassReader.java
@@ -0,0 +1,429 @@
+/*
+* Copyright 2004,2005 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.ws.java2wsdl.bytecode;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * This is the class file reader for obtaining the parameter names
+ * for declared methods in a class.  The class must have debugging
+ * attributes for us to obtain this information. <p>
+ * <p/>
+ * This does not work for inherited methods.  To obtain parameter
+ * names for inherited methods, you must use a paramReader for the
+ * class that originally declared the method. <p>
+ * <p/>
+ * don't get tricky, it's the bare minimum.  Instances of this class
+ * are not threadsafe -- don't share them. <p>
+ */
+public class ClassReader extends ByteArrayInputStream {
+    // constants values that appear in java class files,
+    // from jvm spec 2nd ed, section 4.4, pp 103
+    private final int CONSTANT_Class = 7;
+    private final int CONSTANT_Fieldref = 9;
+    private final int CONSTANT_Methodref = 10;
+    private final int CONSTANT_InterfaceMethodref = 11;
+    private final int CONSTANT_String = 8;
+    private final int CONSTANT_Integer = 3;
+    private final int CONSTANT_Float = 4;
+    private final int CONSTANT_Long = 5;
+    private final int CONSTANT_Double = 6;
+    private final int CONSTANT_NameAndType = 12;
+    private final int CONSTANT_Utf8 = 1;
+    /**
+     * the constant pool.  constant pool indices in the class file
+     * directly index into this array.  The value stored in this array
+     * is the position in the class file where that constant begins.
+     */
+    private int[] cpoolIndex;
+    private Object[] cpool;
+
+    private Map attrMethods;
+
+    /**
+     * Loads the bytecode for a given class, by using the class's defining
+     * classloader and assuming that for a class named P.C, the bytecodes are
+     * in a resource named /P/C.class.
+     *
+     * @param c the class of interest
+     * @return Returns a byte array containing the bytecode
+     * @throws IOException
+     */
+    protected static byte[] getBytes(Class c) throws IOException {
+        InputStream fin = c.getResourceAsStream('/' + c.getName().replace('.', '/') + ".class");
+        if (fin == null) {
+            throw new IOException("Unable to load bytecode for class " + c.getName()
+                   );
+        }
+        try {
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+            byte[] buf = new byte[1024];
+            int actual;
+            do {
+                actual = fin.read(buf);
+                if (actual > 0) {
+                    out.write(buf, 0, actual);
+                }
+            } while (actual > 0);
+            return out.toByteArray();
+        } finally {
+            fin.close();
+        }
+    }
+
+    static String classDescriptorToName(String desc) {
+        return desc.replace('/', '.');
+    }
+
+    protected static Map findAttributeReaders(Class c) {
+        HashMap map = new HashMap();
+        Method[] methods = c.getMethods();
+
+        for (int i = 0; i < methods.length; i++) {
+            String name = methods[i].getName();
+            if (name.startsWith("read") && methods[i].getReturnType() == void.class) {
+                map.put(name.substring(4), methods[i]);
+            }
+        }
+
+        return map;
+    }
+
+
+    protected static String getSignature(Member method, Class[] paramTypes) {
+        // compute the method descriptor
+
+        StringBuffer b = new StringBuffer((method instanceof Method) ? method.getName() : "<init>");
+        b.append('(');
+
+        for (int i = 0; i < paramTypes.length; i++) {
+            addDescriptor(b, paramTypes[i]);
+        }
+
+        b.append(')');
+        if (method instanceof Method) {
+            addDescriptor(b, ((Method) method).getReturnType());
+        } else if (method instanceof Constructor) {
+            addDescriptor(b, void.class);
+        }
+
+        return b.toString();
+    }
+
+    private static void addDescriptor(StringBuffer b, Class c) {
+        if (c.isPrimitive()) {
+            if (c == void.class)
+                b.append('V');
+            else if (c == int.class)
+                b.append('I');
+            else if (c == boolean.class)
+                b.append('Z');
+            else if (c == byte.class)
+                b.append('B');
+            else if (c == short.class)
+                b.append('S');
+            else if (c == long.class)
+                b.append('J');
+            else if (c == char.class)
+                b.append('C');
+            else if (c == float.class)
+                b.append('F');
+            else if (c == double.class) b.append('D');
+        } else if (c.isArray()) {
+            b.append('[');
+            addDescriptor(b, c.getComponentType());
+        } else {
+            b.append('L').append(c.getName().replace('.', '/')).append(';');
+        }
+    }
+
+
+    /**
+     * @return Returns the next unsigned 16 bit value.
+     */
+    protected final int readShort() {
+        return (read() << 8) | read();
+    }
+
+    /**
+     * @return Returns the next signed 32 bit value.
+     */
+    protected final int readInt() {
+        return (read() << 24) | (read() << 16) | (read() << 8) | read();
+    }
+
+    /**
+     * Skips n bytes in the input stream.
+     */
+    protected void skipFully(int n) throws IOException {
+        while (n > 0) {
+            int c = (int) skip(n);
+            if (c <= 0)
+                throw new EOFException("Error looking for paramter names in bytecode: unexpected end of file");
+            n -= c;
+        }
+    }
+
+    protected final Member resolveMethod(int index) throws IOException, ClassNotFoundException, NoSuchMethodException {
+        int oldPos = pos;
+        try {
+            Member m = (Member) cpool[index];
+            if (m == null) {
+                pos = cpoolIndex[index];
+                Class owner = resolveClass(readShort());
+                NameAndType nt = resolveNameAndType(readShort());
+                String signature = nt.name + nt.type;
+                if (nt.name.equals("<init>")) {
+                    Constructor[] ctors = owner.getConstructors();
+                    for (int i = 0; i < ctors.length; i++) {
+                        String sig = getSignature(ctors[i], ctors[i].getParameterTypes());
+                        if (sig.equals(signature)) {
+                            cpool[index] = m = ctors[i];
+                            return m;
+                        }
+                    }
+                } else {
+                    Method[] methods = owner.getDeclaredMethods();
+                    for (int i = 0; i < methods.length; i++) {
+                        String sig = getSignature(methods[i], methods[i].getParameterTypes());
+                        if (sig.equals(signature)) {
+                            cpool[index] = m = methods[i];
+                            return m;
+                        }
+                    }
+                }
+                throw new NoSuchMethodException(signature);
+            }
+            return m;
+        } finally {
+            pos = oldPos;
+        }
+
+    }
+
+    protected final Field resolveField(int i) throws IOException, ClassNotFoundException, NoSuchFieldException {
+        int oldPos = pos;
+        try {
+            Field f = (Field) cpool[i];
+            if (f == null) {
+                pos = cpoolIndex[i];
+                Class owner = resolveClass(readShort());
+                NameAndType nt = resolveNameAndType(readShort());
+                cpool[i] = f = owner.getDeclaredField(nt.name);
+            }
+            return f;
+        } finally {
+            pos = oldPos;
+        }
+    }
+
+    private static class NameAndType {
+        String name;
+        String type;
+
+        public NameAndType(String name, String type) {
+            this.name = name;
+            this.type = type;
+        }
+    }
+
+    protected final NameAndType resolveNameAndType(int i) throws IOException {
+        int oldPos = pos;
+        try {
+            NameAndType nt = (NameAndType) cpool[i];
+            if (nt == null) {
+                pos = cpoolIndex[i];
+                String name = resolveUtf8(readShort());
+                String type = resolveUtf8(readShort());
+                cpool[i] = nt = new NameAndType(name, type);
+            }
+            return nt;
+        } finally {
+            pos = oldPos;
+        }
+    }
+
+
+    protected final Class resolveClass(int i) throws IOException, ClassNotFoundException {
+        int oldPos = pos;
+        try {
+            Class c = (Class) cpool[i];
+            if (c == null) {
+                pos = cpoolIndex[i];
+                String name = resolveUtf8(readShort());
+                cpool[i] = c = Class.forName(classDescriptorToName(name));
+            }
+            return c;
+        } finally {
+            pos = oldPos;
+        }
+    }
+
+    protected final String resolveUtf8(int i) throws IOException {
+        int oldPos = pos;
+        try {
+            String s = (String) cpool[i];
+            if (s == null) {
+                pos = cpoolIndex[i];
+                int len = readShort();
+                skipFully(len);
+                cpool[i] = s = new String(buf, pos - len, len, "utf-8");
+            }
+            return s;
+        } finally {
+            pos = oldPos;
+        }
+    }
+
+    protected final void readCpool() throws IOException {
+        int count = readShort(); // cpool count
+        cpoolIndex = new int[count];
+        cpool = new Object[count];
+        for (int i = 1; i < count; i++) {
+            int c = read();
+            cpoolIndex[i] = super.pos;
+            switch (c) // constant pool tag
+            {
+                case CONSTANT_Fieldref:
+                case CONSTANT_Methodref:
+                case CONSTANT_InterfaceMethodref:
+                case CONSTANT_NameAndType:
+
+                    readShort(); // class index or (12) name index
+                    // fall through
+
+                case CONSTANT_Class:
+                case CONSTANT_String:
+
+                    readShort(); // string index or class index
+                    break;
+
+                case CONSTANT_Long:
+                case CONSTANT_Double:
+
+                    readInt(); // hi-value
+
+                    // see jvm spec section 4.4.5 - double and long cpool
+                    // entries occupy two "slots" in the cpool table.
+                    i++;
+                    // fall through
+
+                case CONSTANT_Integer:
+                case CONSTANT_Float:
+
+                    readInt(); // value
+                    break;
+
+                case CONSTANT_Utf8:
+
+                    int len = readShort();
+                    skipFully(len);
+                    break;
+
+                default:
+                    // corrupt class file
+                    throw new IllegalStateException("Error looking for paramter names in bytecode: unexpected bytes in file");
+            }
+        }
+    }
+
+    protected final void skipAttributes() throws IOException {
+        int count = readShort();
+        for (int i = 0; i < count; i++) {
+            readShort(); // name index
+            skipFully(readInt());
+        }
+    }
+
+    /**
+     * Reads an attributes array.  The elements of a class file that
+     * can contain attributes are: fields, methods, the class itself,
+     * and some other types of attributes.
+     */
+    protected final void readAttributes() throws IOException {
+        int count = readShort();
+        for (int i = 0; i < count; i++) {
+            int nameIndex = readShort(); // name index
+            int attrLen = readInt();
+            int curPos = pos;
+
+            String attrName = resolveUtf8(nameIndex);
+
+            Method m = (Method) attrMethods.get(attrName);
+
+            if (m != null) {
+                try {
+                    m.invoke(this, new Object[]{});
+                } catch (IllegalAccessException e) {
+                    pos = curPos;
+                    skipFully(attrLen);
+                } catch (InvocationTargetException e) {
+                    try {
+                        throw e.getTargetException();
+                    } catch (Error ex) {
+                        throw ex;
+                    } catch (RuntimeException ex) {
+                        throw ex;
+                    } catch (IOException ex) {
+                        throw ex;
+                    } catch (Throwable ex) {
+                        pos = curPos;
+                        skipFully(attrLen);
+                    }
+                }
+            } else {
+                // don't care what attribute this is
+                skipFully(attrLen);
+            }
+        }
+    }
+
+    /**
+     * Reads a code attribute.
+     *
+     * @throws IOException
+     */
+    public void readCode() throws IOException {
+        readShort(); // max stack
+        readShort(); // max locals
+        skipFully(readInt()); // code
+        skipFully(8 * readShort()); // exception table
+
+        // read the code attributes (recursive).  This is where
+        // we will find the LocalVariableTable attribute.
+        readAttributes();
+    }
+
+    protected ClassReader(byte buf[], Map attrMethods) {
+        super(buf);
+
+        this.attrMethods = attrMethods;
+    }
+}
+
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/MethodTable.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/MethodTable.java
new file mode 100644
index 0000000..5f6f50c
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/MethodTable.java
@@ -0,0 +1,56 @@
+package org.apache.ws.java2wsdl.bytecode;

+

+import java.lang.reflect.Method;

+import java.util.HashMap;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class MethodTable {

+

+    private HashMap nameToMethodMap;

+    private ChainedParamReader cpr;

+

+    public MethodTable(Class cls) throws Exception {

+        cpr = new ChainedParamReader(cls);

+        nameToMethodMap = new HashMap();

+        loadMethods(cls);

+    }

+

+    /**

+     * To load all the methods in the given class by Java reflection

+     *

+     * @param cls

+     * @throws Exception

+     */

+    private void loadMethods(Class cls) throws Exception {

+        Method [] methods = cls.getMethods();

+        for (int i = 0; i < methods.length; i++) {

+            Method method = methods[i];

+            nameToMethodMap.put(method.getName(), method);

+        }

+    }

+

+    public String [] getParameterNames(String methodName) {

+        Method method = (Method) nameToMethodMap.get(methodName);

+        if (method == null) {

+            return null;

+        }

+        return cpr.getParameterNames(method);

+    }

+

+

+}

diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ParamNameExtractor.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ParamNameExtractor.java
new file mode 100644
index 0000000..f5d4a17
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ParamNameExtractor.java
@@ -0,0 +1,63 @@
+/*
+* Copyright 2004,2005 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.ws.java2wsdl.bytecode;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
+/**
+ * This class retrieves function parameter names from bytecode built with
+ * debugging symbols.  Used as a last resort when creating WSDL.
+ */
+public class ParamNameExtractor {
+
+	private static final Log log = LogFactory.getLog(ParamNameExtractor.class);
+
+    /**
+     * Retrieves a list of function parameter names from a method. 
+     * Returns null if unable to read parameter names (i.e. bytecode not
+     * built with debug).
+     */
+    public static String[] getParameterNamesFromDebugInfo(Method method) {
+        // Don't worry about it if there are no params.
+        int numParams = method.getParameterTypes().length;
+        if (numParams == 0)
+            return null;
+
+        // get declaring class
+        Class c = method.getDeclaringClass();
+
+        // Don't worry about it if the class is a Java dynamic proxy
+        if (Proxy.isProxyClass(c)) {
+            return null;
+        }
+
+        try {
+            // get a parameter reader
+            ParamReader pr = new ParamReader(c);
+            // get the parameter names
+            return pr.getParameterNames(method);
+        } catch (IOException e) {
+            // log it and leave
+            return null;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ParamReader.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ParamReader.java
new file mode 100644
index 0000000..0a0b0b4
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/bytecode/ParamReader.java
@@ -0,0 +1,221 @@
+/*
+* Copyright 2004,2005 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.ws.java2wsdl.bytecode;
+
+
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * This is the class file reader for obtaining the parameter names
+ * for declared methods in a class.  The class must have debugging
+ * attributes for us to obtain this information. <p>
+ * <p/>
+ * This does not work for inherited methods.  To obtain parameter
+ * names for inherited methods, you must use a paramReader for the
+ * class that originally declared the method. <p>
+ * <p/>
+ * don't get tricky, it's the bare minimum.  Instances of this class
+ * are not threadsafe -- don't share them. <p>
+ */
+public class ParamReader
+        extends ClassReader {
+    private String methodName;
+    private Map methods = new HashMap();
+    private Class[] paramTypes;
+
+    /**
+     * Processes a class file, given it's class.  We'll use the defining
+     * classloader to locate the bytecode.
+     *
+     * @param c
+     * @throws java.io.IOException
+     */
+    public ParamReader(Class c) throws IOException {
+        this(getBytes(c));
+    }
+
+    /**
+     * Processes the given class bytes directly.
+     *
+     * @param b
+     * @throws IOException
+     */
+    public ParamReader(byte[] b) throws IOException {
+        super(b, findAttributeReaders(ParamReader.class));
+
+        // check the magic number
+        if (readInt() != 0xCAFEBABE) {
+            // not a class file!
+            throw new IOException("Error looking for paramter names in bytecode: input does not appear to be a valid class file");
+        }
+
+        readShort(); // minor version
+        readShort(); // major version
+
+        readCpool(); // slurp in the constant pool
+
+        readShort(); // access flags
+        readShort(); // this class name
+        readShort(); // super class name
+
+        int count = readShort(); // ifaces count
+        for (int i = 0; i < count; i++) {
+            readShort(); // interface index
+        }
+
+        count = readShort(); // fields count
+        for (int i = 0; i < count; i++) {
+            readShort(); // access flags
+            readShort(); // name index
+            readShort(); // descriptor index
+            skipAttributes(); // field attributes
+        }
+
+        count = readShort(); // methods count
+        for (int i = 0; i < count; i++) {
+            readShort(); // access flags
+            int m = readShort(); // name index
+            String name = resolveUtf8(m);
+            int d = readShort(); // descriptor index
+            this.methodName = name + resolveUtf8(d);
+            readAttributes(); // method attributes
+        }
+
+    }
+
+    public void readCode() throws IOException {
+        readShort(); // max stack
+        int maxLocals = readShort(); // max locals
+
+        MethodInfo info = new MethodInfo(maxLocals);
+        if (methods != null && methodName != null) {
+            methods.put(methodName, info);
+        }
+
+        skipFully(readInt()); // code
+        skipFully(8 * readShort()); // exception table
+        // read the code attributes (recursive).  This is where
+        // we will find the LocalVariableTable attribute.
+        readAttributes();
+    }
+
+    /**
+     * Returns the names of the declared parameters for the given constructor.
+     * If we cannot determine the names, return null.  The returned array will
+     * have one name per parameter.  The length of the array will be the same
+     * as the length of the Class[] array returned by Constructor.getParameterTypes().
+     *
+     * @param ctor
+     * @return Returns String[] array of names, one per parameter, or null
+     */
+    public String[] getParameterNames(Constructor ctor) {
+        paramTypes = ctor.getParameterTypes();
+        return getParameterNames(ctor, paramTypes);
+    }
+
+    /**
+     * Returns the names of the declared parameters for the given method.
+     * If we cannot determine the names, return null.  The returned array will
+     * have one name per parameter.  The length of the array will be the same
+     * as the length of the Class[] array returned by Method.getParameterTypes().
+     *
+     * @param method
+     * @return Returns String[] array of names, one per parameter, or null
+     */
+    public String[] getParameterNames(Method method) {
+        paramTypes = method.getParameterTypes();
+        return getParameterNames(method, paramTypes);
+    }
+
+    protected String[] getParameterNames(Member member, Class [] paramTypes) {
+        // look up the names for this method
+        MethodInfo info = (MethodInfo) methods.get(getSignature(member, paramTypes));
+
+        // we know all the local variable names, but we only need to return
+        // the names of the parameters.
+
+        if (info != null) {
+            String[] paramNames = new String[paramTypes.length];
+            int j = Modifier.isStatic(member.getModifiers()) ? 0 : 1;
+
+            boolean found = false;  // did we find any non-null names
+            for (int i = 0; i < paramNames.length; i++) {
+                if (info.names[j] != null) {
+                    found = true;
+                    paramNames[i] = info.names[j];
+                }
+                j++;
+                if (paramTypes[i] == double.class || paramTypes[i] == long.class) {
+                    // skip a slot for 64bit params
+                    j++;
+                }
+            }
+
+            if (found) {
+                return paramNames;
+            } else {
+                return null;
+            }
+        } else {
+            return null;
+        }
+    }
+
+    private static class MethodInfo {
+        String[] names;
+        int maxLocals;
+
+        public MethodInfo(int maxLocals) {
+            this.maxLocals = maxLocals;
+            names = new String[maxLocals];
+        }
+    }
+
+    private MethodInfo getMethodInfo() {
+        MethodInfo info = null;
+        if (methods != null && methodName != null) {
+            info = (MethodInfo) methods.get(methodName);
+        }
+        return info;
+    }
+
+    /**
+     * This is invoked when a LocalVariableTable attribute is encountered.
+     *
+     * @throws IOException
+     */
+    public void readLocalVariableTable() throws IOException {
+        int len = readShort(); // table length
+        MethodInfo info = getMethodInfo();
+        for (int j = 0; j < len; j++) {
+            readShort(); // start pc
+            readShort(); // length
+            int nameIndex = readShort(); // name_index
+            readShort(); // descriptor_index
+            int index = readShort(); // local index
+            if (info != null) {
+                info.names[index] = resolveUtf8(nameIndex);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLCommandLineOption.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLCommandLineOption.java
new file mode 100644
index 0000000..34d7c29
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLCommandLineOption.java
@@ -0,0 +1,86 @@
+package org.apache.ws.java2wsdl.utils;

+

+import org.apache.ws.java2wsdl.Java2WSDLConstants;

+

+import java.util.ArrayList;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class Java2WSDLCommandLineOption implements Java2WSDLConstants {

+

+    private String type;

+       private ArrayList optionValues;

+

+       public Java2WSDLCommandLineOption(String type, String[] values) {

+           setOptionType(type);

+           ArrayList arrayList = new ArrayList(values.length);

+           for (int i = 0; i < values.length; i++) {

+               arrayList.add(values[i]);

+           }

+           this.optionValues = arrayList;

+       }

+

+       private void setOptionType(String type) {

+           //cater for the long options first

+           if (type.startsWith("--")) type = type.replaceFirst("--", "");

+           if (type.startsWith("-")) type = type.replaceFirst("-", "");

+           this.type = type;

+       }

+

+       /**

+        * @param type

+        */

+       public Java2WSDLCommandLineOption(String type, ArrayList values) {

+           setOptionType(type);

+

+           if (null != values) {

+               this.optionValues = values;

+           }

+       }

+

+

+       /**

+        * @return Returns the type.

+        */

+       public String getOptionType() {

+           return type;

+       }

+

+

+       /**

+        * @return Returns the optionValues.

+        */

+       public String getOptionValue() {

+           if (optionValues != null)

+               return (String) optionValues.get(0);

+           else

+               return null;

+       }

+

+

+

+       /**

+        * @return Returns the optionValues.

+        */

+       public ArrayList getOptionValues() {

+           return optionValues;

+       }

+

+

+   }

+

diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLCommandLineOptionParser.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLCommandLineOptionParser.java
new file mode 100644
index 0000000..b90143a
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLCommandLineOptionParser.java
@@ -0,0 +1,131 @@
+package org.apache.ws.java2wsdl.utils;

+

+import org.apache.ws.java2wsdl.Java2WSDLConstants;

+

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class Java2WSDLCommandLineOptionParser implements Java2WSDLConstants {

+    private static int STARTED = 0;

+    private static int NEW_OPTION = 1;

+    private static int SUB_PARAM_OF_OPTION = 2;

+

+    private Map commandLineOptions;

+

+    public Java2WSDLCommandLineOptionParser(Map commandLineOptions) {

+        this.commandLineOptions = commandLineOptions;

+    }

+

+    public Java2WSDLCommandLineOptionParser(String[] args) {

+        this.commandLineOptions = this.parse(args);

+

+    }

+

+    /**

+     * Return a list with <code>CommandLineOption</code> objects

+     *

+     * @param args

+     * @return CommandLineOption List

+     */

+    private Map parse(String[] args) {

+        Map commandLineOptions = new HashMap();

+

+        if (0 == args.length)

+            return commandLineOptions;

+

+        //State 0 means started

+        //State 1 means earlier one was a new -option

+        //State 2 means earlier one was a sub param of a -option

+

+        int state = STARTED;

+        ArrayList optionBundle = null;

+        String optionType = null;

+        Java2WSDLCommandLineOption commandLineOption;

+

+        for (int i = 0; i < args.length; i++) {

+

+            if (args[i].startsWith("-")) {

+                if (STARTED == state) {

+                    // fresh one

+                    state = NEW_OPTION;

+                    optionType = args[i];

+                } else if (SUB_PARAM_OF_OPTION == state || NEW_OPTION == state) {

+                    // new one but old one should be saved

+                    commandLineOption =

+                            new Java2WSDLCommandLineOption(optionType, optionBundle);

+                    commandLineOptions.put(commandLineOption.getOptionType(),

+                            commandLineOption);

+                    state = NEW_OPTION;

+                    optionType = args[i];

+                    optionBundle = null;

+

+                }

+            } else {

+                if (STARTED == state) {

+                    commandLineOption =

+                            new Java2WSDLCommandLineOption(

+                                    SOLE_INPUT,

+                                    args);

+                    commandLineOptions.put(commandLineOption.getOptionType(),

+                            commandLineOption);

+                    return commandLineOptions;

+

+                } else if (NEW_OPTION == state) {

+                    optionBundle = new ArrayList();

+                    optionBundle.add(args[i]);

+                    state = SUB_PARAM_OF_OPTION;

+

+                } else if (SUB_PARAM_OF_OPTION == state) {

+                    optionBundle.add(args[i]);

+                }

+

+            }

+

+

+        }

+

+        commandLineOption = new Java2WSDLCommandLineOption(optionType, optionBundle);

+        commandLineOptions.put(commandLineOption.getOptionType(), commandLineOption);

+        return commandLineOptions;

+    }

+

+    public Map getAllOptions() {

+        return this.commandLineOptions;

+    }

+

+    public List getInvalidOptions(Java2WSDLOptionsValidator validator) {

+        List faultList = new ArrayList();

+        Iterator iterator = this.commandLineOptions.values().iterator();

+        while (iterator.hasNext()) {

+            Java2WSDLCommandLineOption commandLineOption = ((Java2WSDLCommandLineOption) (iterator

+                    .next()));

+            if (validator.isInvalid(commandLineOption)) {

+                faultList.add(commandLineOption);

+            }

+        }

+

+        return faultList;

+    }

+

+

+}

diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java
new file mode 100644
index 0000000..ddfc2f6
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java
@@ -0,0 +1,67 @@
+package org.apache.ws.java2wsdl.utils;
+
+import org.apache.ws.java2wsdl.Java2WSDLConstants;
+/*
+* Copyright 2004,2005 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.
+*
+*/
+
+public class Java2WSDLOptionsValidator implements Java2WSDLConstants {
+    public boolean isInvalid(Java2WSDLCommandLineOption option) {
+        boolean invalid;
+        String optionType = option.getOptionType();
+
+        invalid = !((Java2WSDLConstants.CLASSNAME_OPTION).equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.OUTPUT_LOCATION_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.OUTPUT_FILENAME_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.CLASSPATH_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.TARGET_NAMESPACE_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.TARGET_NAMESPACE_PREFIX_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.SERVICE_NAME_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.STYLE_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.USE_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.LOCATION_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.EXTRA_CLASSES_DEFAULT_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.EXTRA_CLASSES_DEFAULT_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.NAMESPACE_GENERATOR_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.NAMESPACE_GENERATOR_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.JAVA_PKG_2_NSMAP_OPTION.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.JAVA_PKG_2_NSMAP_OPTION_LONG.equalsIgnoreCase(optionType) ||
+
+                Java2WSDLConstants.CLASSNAME_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.OUTPUT_FILENAME_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.OUTPUT_LOCATION_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.CLASSNAME_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.CLASSPATH_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.TARGET_NAMESPACE_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.TARGET_NAMESPACE_PREFIX_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION_LONG.equalsIgnoreCase(optionType) ||
+                Java2WSDLConstants.SERVICE_NAME_OPTION_LONG.equalsIgnoreCase(optionType)||
+                Java2WSDLConstants.STYLE_OPTION_LONG.equalsIgnoreCase(optionType)||
+                Java2WSDLConstants.USE_OPTION_LONG.equalsIgnoreCase(optionType)||
+                Java2WSDLConstants.LOCATION_OPTION_LONG.equalsIgnoreCase(optionType));
+
+
+        return invalid;
+    }
+}
diff --git a/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/TypeTable.java b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/TypeTable.java
new file mode 100644
index 0000000..9963c6a
--- /dev/null
+++ b/rampart_1_1/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/TypeTable.java
@@ -0,0 +1,130 @@
+package org.apache.ws.java2wsdl.utils;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.ws.java2wsdl.Java2WSDLConstants;

+

+import javax.xml.namespace.QName;

+import java.util.*;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class TypeTable {

+    private HashMap simpleTypetoxsd;

+    private HashMap complecTypeMap;

+

+    public TypeTable() {

+        simpleTypetoxsd = new HashMap();

+        complecTypeMap = new HashMap();

+        populateSimpleTypes();

+    }

+

+    private void populateSimpleTypes() {

+        //todo pls use the types from org.apache.ws.commons.schema.constants.Constants

+        simpleTypetoxsd.put("int",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "int", "xs"));

+        simpleTypetoxsd.put("java.lang.String",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "string", "xs"));

+        simpleTypetoxsd.put("boolean",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "boolean", "xs"));

+        simpleTypetoxsd.put("float",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "float", "xs"));

+        simpleTypetoxsd.put("double",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "double", "xs"));

+        simpleTypetoxsd.put("short",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "short", "xs"));

+        simpleTypetoxsd.put("long",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "long", "xs"));

+        simpleTypetoxsd.put("byte",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "byte", "xs"));

+        simpleTypetoxsd.put("char",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+        simpleTypetoxsd.put("java.lang.Integer",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "int", "xs"));

+        simpleTypetoxsd.put("java.lang.Double",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "double", "xs"));

+        simpleTypetoxsd.put("java.lang.Float",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "float", "xs"));

+        simpleTypetoxsd.put("java.lang.Long",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "long", "xs"));

+        simpleTypetoxsd.put("java.lang.Character",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+        simpleTypetoxsd.put("java.lang.Boolean",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "boolean", "xs"));

+        simpleTypetoxsd.put("java.lang.Byte",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "byte", "xs"));

+        simpleTypetoxsd.put("java.lang.Short",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "short", "xs"));

+        simpleTypetoxsd.put("java.util.Date",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "dateTime", "xs"));

+        simpleTypetoxsd.put("java.util.Calendar",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "dateTime", "xs"));

+

+        simpleTypetoxsd.put("java.lang.Object",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+

+        // Any types

+        simpleTypetoxsd.put(OMElement.class.getName(),

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+        simpleTypetoxsd.put(ArrayList.class.getName(),

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+        simpleTypetoxsd.put(Vector.class.getName(),

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+        simpleTypetoxsd.put(List.class.getName(),

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+         simpleTypetoxsd.put(HashMap.class.getName(),

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+         simpleTypetoxsd.put(Hashtable.class.getName(),

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "anyType", "xs"));

+        //byteArrat

+        simpleTypetoxsd.put("base64Binary",

+                new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "base64Binary", "xs"));

+    }

+

+    public QName getSimpleSchemaTypeName(String typename) {

+        return (QName) simpleTypetoxsd.get(typename);

+    }

+

+    public boolean isSimpleType(String typeName) {

+        Iterator keys = simpleTypetoxsd.keySet().iterator();

+        while (keys.hasNext()) {

+            String s = (String) keys.next();

+            if (s.equals(typeName)) {

+                return true;

+            }

+        }

+        return false;

+    }

+

+    public void addComplexSchema(String name, QName schemaType) {

+        complecTypeMap.put(name, schemaType);

+    }

+

+    public QName getComplexSchemaType(String name) {

+        return (QName) complecTypeMap.get(name);

+    }

+

+    public QName getQNamefortheType(String typeName) {

+        QName type = getSimpleSchemaTypeName(typeName);

+        if (type == null) {

+            type = getComplexSchemaType(typeName);

+        }

+        return type;

+    }

+}

+

+

diff --git a/rampart_1_1/modules/jaxbri/maven.xml b/rampart_1_1/modules/jaxbri/maven.xml
new file mode 100644
index 0000000..a6968ac
--- /dev/null
+++ b/rampart_1_1/modules/jaxbri/maven.xml
@@ -0,0 +1,17 @@
+<?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:u="jelly:util"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+</project>
diff --git a/rampart_1_1/modules/jaxbri/project.properties b/rampart_1_1/modules/jaxbri/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/jaxbri/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/jaxbri/project.xml b/rampart_1_1/modules/jaxbri/project.xml
new file mode 100644
index 0000000..4f39dac
--- /dev/null
+++ b/rampart_1_1/modules/jaxbri/project.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - JAXB-RI Data Binding</name>
+    <id>axis2-jaxbri</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>JAXB-RI data binding support for Axis 2.0</description>
+
+    <dependencies>
+       <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-codegen</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+	  <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-java2wsdl</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${XmlSchema.version}</version>
+        </dependency>
+
+        <!-- external JARs -->
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-impl</artifactId>
+            <version>${jaxbri.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-xjc</artifactId>
+            <version>${jaxbri.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <version>${jaxbri.version}</version>
+        </dependency>
+    </dependencies>
+    <build/>
+    <reports/>
+</project>
diff --git a/rampart_1_1/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java b/rampart_1_1/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
new file mode 100644
index 0000000..42c8718
--- /dev/null
+++ b/rampart_1_1/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2006 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.axis2.jaxbri;
+
+import com.sun.codemodel.JCodeModel;
+import com.sun.codemodel.writer.FileCodeWriter;
+import com.sun.tools.xjc.api.Mapping;
+import com.sun.tools.xjc.api.S2JJAXBModel;
+import com.sun.tools.xjc.api.SchemaCompiler;
+import com.sun.tools.xjc.api.XJC;
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.util.SchemaUtil;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;
+import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.w3c.dom.Element;
+import org.xml.sax.InputSource;
+
+import javax.xml.namespace.QName;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.StringReader;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+public class CodeGenerationUtility {
+
+    /**
+     *
+     * @param additionalSchemas
+     * @throws RuntimeException
+     */
+    public static TypeMapper processSchemas(List schemas,
+                                             Element[] additionalSchemas,
+                                             CodeGenConfiguration cgconfig)
+        throws RuntimeException
+    {
+        try {
+
+        	//check for the imported types. Any imported types are supposed to be here also
+            if (schemas == null || schemas.isEmpty()) {
+                //there are no types to be code generated
+                //However if the type mapper is left empty it will be a problem for the other
+                //processes. Hence the default type mapper is set to the configuration
+                return new DefaultTypeMapper();
+            }
+            
+            Vector xmlObjectsVector = new Vector();
+            
+            //create the type mapper
+            JavaTypeMapper mapper = new JavaTypeMapper();
+
+            String baseURI = cgconfig.getBaseURI();
+            
+            for (int i = 0; i < schemas.size(); i++) {
+                XmlSchema schema = (XmlSchema) schemas.get(i);
+                InputSource inputSource = new InputSource(new StringReader(getSchemaAsString(schema)));
+                inputSource.setSystemId(baseURI);
+                xmlObjectsVector.add(inputSource);
+            }
+
+            File outputDir = new File(cgconfig.getOutputLocation(), "src");
+            outputDir.mkdir();
+            
+            Map nsMap = cgconfig.getUri2PackageNameMap();
+
+            for (int i = 0; i < xmlObjectsVector.size(); i++) {
+            	
+                SchemaCompiler sc = XJC.createSchemaCompiler();
+                XmlSchema schema = (XmlSchema) schemas.get(i);
+
+                String pkg = null;
+                if(nsMap != null) {
+                    pkg = (String) nsMap.get(schema.getTargetNamespace());
+                }
+                if (pkg == null) {
+                    pkg = extractNamespace(schema);
+                }
+                sc.setDefaultPackageName(pkg);
+
+                sc.parseSchema((InputSource) xmlObjectsVector.elementAt(i));
+
+                // Bind the XML
+                S2JJAXBModel jaxbModel = sc.bind();
+
+                // Emit the code artifacts
+                JCodeModel codeModel = jaxbModel.generateCode(null, null);
+                FileCodeWriter writer = new FileCodeWriter(outputDir);
+                codeModel.build(writer);
+
+                Collection mappings = jaxbModel.getMappings();
+
+                Iterator iter = mappings.iterator();
+
+                while ( iter.hasNext() )
+                {
+                    Mapping mapping = (Mapping)iter.next();
+                    QName qn = mapping.getElement();
+                    String typeName = mapping.getType().getTypeClass().fullName();
+
+                    mapper.addTypeMappingName( qn, typeName );
+                }
+            }
+
+            // Return the type mapper
+            return mapper;
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static String extractNamespace(XmlSchema schema) {
+        String pkg;
+        pkg = schema.getTargetNamespace();
+        if (pkg == null) {
+            XmlSchema[] schemas2 = SchemaUtil.getAllSchemas(schema);
+            for (int j = 0; schemas2 != null && j < schemas2.length; j++) {
+                pkg = schemas2[j].getTargetNamespace();
+                if (pkg != null)
+                    break;
+            }
+        }
+        if (pkg == null) {
+            pkg = URLProcessor.DEFAULT_PACKAGE;
+        }
+        pkg = URLProcessor.makePackageName(pkg);
+        return pkg;
+    }
+
+    private static String getSchemaAsString(XmlSchema schema) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        schema.write(baos);
+        return baos.toString();
+    }    
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxbri/src/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl b/rampart_1_1/modules/jaxbri/src/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl
new file mode 100644
index 0000000..452f86d
--- /dev/null
+++ b/rampart_1_1/modules/jaxbri/src/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl
@@ -0,0 +1,181 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+<!-- #################################################################################  -->

+    <!-- ############################   JiBX template   ##############################  -->

+    <xsl:template match="databinders[@dbtype='jaxbri']">

+

+        <xsl:variable name="base64"><xsl:value-of select="base64Elements/name"/></xsl:variable>

+        <xsl:if test="$base64">

+            private static javax.xml.namespace.QName[] qNameArray = {

+            <xsl:for-each select="base64Elements/name">

+                <xsl:if test="position()>1">,</xsl:if>new javax.xml.namespace.QName("<xsl:value-of select="@ns-url"/>","<xsl:value-of select="@localName"/>")

+            </xsl:for-each>

+            };

+        </xsl:if>

+

+        <xsl:for-each select="param[not(@type = preceding-sibling::param/@type)]">

+            <xsl:if test="@type!=''">

+                private static final javax.xml.bind.JAXBContext <xsl:value-of select="translate(@type,'.','_')"/>;

+            </xsl:if>

+        </xsl:for-each>

+

+        private static final java.util.HashMap&lt;Class,javax.xml.bind.JAXBContext&gt; classContextMap = new java.util.HashMap&lt;Class,javax.xml.bind.JAXBContext&gt;();

+

+        static {

+            javax.xml.bind.JAXBContext jc;

+            <xsl:for-each select="param[not(@type = preceding-sibling::param/@type)]">

+                <xsl:if test="@type!=''">

+                    jc = null;

+                    try {

+                        jc = javax.xml.bind.JAXBContext.newInstance(<xsl:value-of select="@type"/>.class);

+                    }

+                    catch ( javax.xml.bind.JAXBException ex ) {

+                        System.err.println("Unable to create JAXBContext for class: <xsl:value-of select='@type'/>");

+                        Runtime.getRuntime().exit(-1);

+                    }

+                    finally {

+                        <xsl:value-of select="translate(@type,'.','_')"/> = jc;

+                        classContextMap.put(<xsl:value-of select="@type"/>.class, jc);

+                    }

+                </xsl:if>

+            </xsl:for-each>

+        }

+

+        <xsl:for-each select="param[not(@type = preceding-sibling::param/@type)]">

+            <xsl:if test="@type!=''">

+

+                private org.apache.axiom.om.OMElement toOM(<xsl:value-of select="@type"/> param, org.apache.axiom.soap.SOAPFactory factory, boolean optimizeContent) {

+                    try {

+                        javax.xml.bind.JAXBContext context = <xsl:value-of select="translate(@type,'.','_')"/>;

+                        javax.xml.bind.Marshaller marshaller = context.createMarshaller();

+                        marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FRAGMENT, Boolean.TRUE);            

+

+                        JaxbRIDataSource source = new JaxbRIDataSource( <xsl:value-of select="@type"/>.class,

+                                                                        param,

+                                                                        marshaller,

+                                                                        "<xsl:value-of select="qname/@nsuri"/>",

+                                                                        "<xsl:value-of select="qname/@localname"/>");

+                        org.apache.axiom.om.OMNamespace namespace = factory.createOMNamespace("<xsl:value-of select="qname/@nsuri"/>",

+                                                                           null);

+                        return factory.createOMElement(source, "<xsl:value-of select="qname/@localname"/>", namespace);

+                    } catch (javax.xml.bind.JAXBException bex){

+                        throw new RuntimeException(bex);

+                    }

+                }

+

+                private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, <xsl:value-of select="@type"/> param, boolean optimizeContent) {

+                    org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();

+                    if (param != null){

+                        envelope.getBody().addChild(toOM(param, factory, optimizeContent));

+                    }

+                    return envelope;

+                }

+

+            </xsl:if>

+        </xsl:for-each>

+

+        /**

+        *  get the default envelope

+        */

+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory) {

+            return factory.getDefaultEnvelope();

+        }

+

+        private java.lang.Object fromOM (

+            org.apache.axiom.om.OMElement param,

+            java.lang.Class type,

+            java.util.Map extraNamespaces) {

+            try {

+                javax.xml.bind.JAXBContext context = classContextMap.get(type);

+                javax.xml.bind.Unmarshaller unmarshaller = context.createUnmarshaller();

+

+                return unmarshaller.unmarshal(param.getXMLStreamReader(), type).getValue();

+            } catch (javax.xml.bind.JAXBException bex){

+                throw new RuntimeException(bex);

+            }

+        }

+

+        class JaxbRIDataSource implements org.apache.axiom.om.OMDataSource {

+            /**

+             * Bound object for output.

+             */

+            private final Object outObject;

+

+            /**

+             * Bound class for output.

+             */

+            private final Class outClazz;

+

+            /**

+             * Marshaller.

+             */

+            private final javax.xml.bind.Marshaller marshaller;

+

+            /**

+             * Namespace

+             */

+            private String nsuri;

+

+            /**

+             * Local name

+             */

+            private String name;

+

+            /**

+             * Constructor from object and marshaller.

+             *

+             * @param obj

+             * @param marshaller

+             */

+            public JaxbRIDataSource(Class clazz, Object obj, javax.xml.bind.Marshaller marshaller, String nsuri, String name) {

+                this.outClazz = clazz;

+                this.outObject = obj;

+                this.marshaller = marshaller;

+                this.nsuri = nsuri;

+                this.name = name;

+            }

+

+            public void serialize(java.io.OutputStream output, org.apache.axiom.om.OMOutputFormat format) throws javax.xml.stream.XMLStreamException {

+                try {

+                    marshaller.marshal(new javax.xml.bind.JAXBElement(

+                            new javax.xml.namespace.QName(nsuri, name), outObject.getClass(), outObject), output);

+                } catch (javax.xml.bind.JAXBException e) {

+                    throw new javax.xml.stream.XMLStreamException("Error in JAXB marshalling", e);

+                }

+            }

+

+            public void serialize(java.io.Writer writer, org.apache.axiom.om.OMOutputFormat format) throws javax.xml.stream.XMLStreamException {

+                try {

+                    marshaller.marshal(new javax.xml.bind.JAXBElement(

+                            new javax.xml.namespace.QName(nsuri, name), outObject.getClass(), outObject), writer);

+                } catch (javax.xml.bind.JAXBException e) {

+                    throw new javax.xml.stream.XMLStreamException("Error in JAXB marshalling", e);

+                }

+            }

+

+            public void serialize(javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {

+                try {

+                    marshaller.marshal(new javax.xml.bind.JAXBElement(

+                            new javax.xml.namespace.QName(nsuri, name), outObject.getClass(), outObject), xmlWriter);

+                } catch (javax.xml.bind.JAXBException e) {

+                    throw new javax.xml.stream.XMLStreamException("Error in JAXB marshalling", e);

+                }

+            }

+

+            public javax.xml.stream.XMLStreamReader getReader() throws javax.xml.stream.XMLStreamException {

+                try {

+                    javax.xml.bind.JAXBContext context = classContextMap.get(outClazz);

+                    org.apache.axiom.om.impl.builder.SAXOMBuilder builder = new org.apache.axiom.om.impl.builder.SAXOMBuilder();

+                    javax.xml.bind.Marshaller marshaller = context.createMarshaller();

+                    marshaller.marshal(new javax.xml.bind.JAXBElement(

+                            new javax.xml.namespace.QName(nsuri, name), outObject.getClass(), outObject), builder);

+

+                    return builder.getRootElement().getXMLStreamReader();

+                } catch (javax.xml.bind.JAXBException e) {

+                    throw new javax.xml.stream.XMLStreamException("Error in JAXB marshalling", e);

+                }

+            }

+        }

+        

+    </xsl:template>

+    </xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/maven.xml b/rampart_1_1/modules/jaxws/maven.xml
new file mode 100644
index 0000000..f947a0b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/maven.xml
@@ -0,0 +1,490 @@
+<?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:u="jelly:util"

+         xmlns:maven="jelly:maven"

+         xmlns:util="jelly:util"

+         xmlns:deploy="deploy"

+         xmlns:ant="jelly:ant">

+

+    <preGoal name="itest:compile">

+        <u:file var="file" name="${maven.itest.src}"/>

+        <j:if test="${!file.exists()}">

+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>

+        </j:if>

+    </preGoal>

+    

+

+<!-- run the JAXB schema compiler -->

+    <preGoal name="test:compile">

+        <!--<j:if test="context.getVariable('maven.test.skip') != 'true'}">-->

+

+        <j:set var="compiled.classes.dir" value="target/test-classes"/>

+        <!-- Theres got to be a better way to do this -->

+        <j:set var="schema.source.dir" value="test-resources/xsd"/>

+    	<j:set var="wsdl.source.dir" value="test-resources/wsdl"/>

+        <j:set var="schema.output.base.dir" value="target/schema"/>

+        <j:set var="schema.generated.src.dir" value="${schema.output.base.dir}/src"/>

+        <j:set var="schema.generated.classes.dir" value="${schema.output.base.dir}/classes"/>

+        <!-- make the dirs -->

+        <mkdir dir="${schema.output.base.dir}"/>

+        <mkdir dir="${schema.generated.src.dir}"/>

+        <mkdir dir="${schema.generated.classes.dir}"/>

+        <!-- Run JAXB schema compiler with designated schemas -->

+        

+        <ant:echo>Generating JAX-B classes from XSDs</ant:echo>    

+        <ant:echo>Generating java from echo.xsd</ant:echo>

+        <java classname="com.sun.tools.xjc.Driver" fork="true"> 

+        	<jvmarg line="${maven.junit.jvmargs}"/>

+        	<classpath refid="maven.dependency.classpath"/>

+        	<classpath location="${compiled.classes.dir}"/>

+            <arg line="-d ${schema.generated.src.dir} -quiet  ${schema.source.dir}/echo.xsd"/>

+        </java>

+        <ant:echo>Generating java from stock1.xsd</ant:echo>

+        <java classname="com.sun.tools.xjc.Driver" fork="true"> 

+        	<jvmarg line="${maven.junit.jvmargs}"/>

+        	<classpath refid="maven.dependency.classpath"/>

+        	<classpath location="${compiled.classes.dir}"/>

+            <arg line="-d ${schema.generated.src.dir} -verbose ${schema.source.dir}/stock1.xsd"/>

+        </java>

+        <ant:echo>Generating java from stock2.xsd</ant:echo>

+        <java classname="com.sun.tools.xjc.Driver" fork="true"> 

+        	<jvmarg line="${maven.junit.jvmargs}"/>

+        	<classpath refid="maven.dependency.classpath"/>

+        	<classpath location="${compiled.classes.dir}"/>

+            <arg line="-d ${schema.generated.src.dir} -quiet ${schema.source.dir}/stock2.xsd"/>

+        </java>

+        <ant:echo>Generating java from samplemtom.xsd</ant:echo>

+        <java classname="com.sun.tools.xjc.Driver" fork="true"> 

+        	<jvmarg line="${maven.junit.jvmargs}"/>

+        	<classpath refid="maven.dependency.classpath"/>

+        	<classpath location="${compiled.classes.dir}"/>

+            <arg line="-d ${schema.generated.src.dir} -quiet ${schema.source.dir}/samplemtom.xsd"/>

+        </java>

+    	<ant:echo>Generating java from ProxyDocLitWrapped.wsdl</ant:echo>

+    	<java classname="com.sun.tools.xjc.Driver" fork="true"> 

+    		<jvmarg line="${maven.junit.jvmargs}"/>

+    	    <classpath refid="maven.dependency.classpath"/>

+    	    <classpath location="${compiled.classes.dir}"/>

+    	    <arg line="-d ${schema.generated.src.dir} -p org.test.proxy.doclitwrapped -quiet -wsdl ${wsdl.source.dir}/ProxyDocLitWrapped.wsdl"/>

+    	</java>

+        <ant:echo>Generating java from ProxyDocLitnonWrapped.wsdl</ant:echo>

+        <java classname="com.sun.tools.xjc.Driver" fork="true"> 

+			<jvmarg line="${maven.junit.jvmargs}"/>

+			<classpath refid="maven.dependency.classpath"/>

+			<classpath location="${compiled.classes.dir}"/>

+			<arg line="-d ${schema.generated.src.dir} -quiet -wsdl ${wsdl.source.dir}/ProxyDocLitnonWrapped.wsdl"/>

+		</java>

+    	<ant:echo>Generating java from AddNumbers.wsdl</ant:echo>

+    	    	    	<java classname="com.sun.tools.xjc.Driver" fork="true"> 

+    	    	    		<jvmarg line="${maven.junit.jvmargs}"/>

+    	    	    	    <classpath refid="maven.dependency.classpath"/>

+    	    	    	    <classpath location="${compiled.classes.dir}"/>

+    	   	    	    	<arg line="-d ${schema.generated.src.dir} -quiet -wsdl ${wsdl.source.dir}/AddNumbers.wsdl"/>

+    	     	    	</java>

+    	<ant:echo>Generating java from jaxbsource</ant:echo>

+    	<java classname="com.sun.tools.xjc.Driver" fork="true"> 

+    	    <jvmarg line="${maven.junit.jvmargs}"/>

+    	    <classpath refid="maven.dependency.classpath"/>

+    	    <classpath location="${compiled.classes.dir}"/>

+    	    <arg line="-d ${schema.generated.src.dir} -p org.test.dispatch.jaxbsource ${schema.source.dir}/jaxbsource.xsd"/>

+    	</java>

+    	<ant:echo>Generating java from doclit_nonwrap.wsdl for javabean endpoint support</ant:echo>

+    	<java classname="com.sun.tools.xjc.Driver" fork="true"> 

+    		<jvmarg line="${maven.junit.jvmargs}"/>

+    		<classpath refid="maven.dependency.classpath"/>

+    		<classpath location="${compiled.classes.dir}"/>

+    		<arg line="-d ${schema.generated.src.dir} -quiet -wsdl ${wsdl.source.dir}/doclit_nonwrap.wsdl"/>

+		</java>

+    	<ant:echo>Generating java from doclitwrap.wsdl for javabean endpoint support</ant:echo>

+		<java classname="com.sun.tools.xjc.Driver" fork="true"> 

+			<jvmarg line="${maven.junit.jvmargs}"/>

+			<classpath refid="maven.dependency.classpath"/>

+			<classpath location="${compiled.classes.dir}"/>

+			<arg line="-d ${schema.generated.src.dir} -quiet -wsdl ${wsdl.source.dir}/doclitwrap.wsdl"/>

+		</java>

+		<ant:echo>Generating java from doclitbare.wsdl for javabean endpoint support</ant:echo>

+        <java classname="com.sun.tools.xjc.Driver" fork="true"> 

+            <jvmarg line="${maven.junit.jvmargs}"/>

+            <classpath refid="maven.dependency.classpath"/>

+            <classpath location="${compiled.classes.dir}"/>

+            <arg line="-d ${schema.generated.src.dir} -quiet -wsdl ${wsdl.source.dir}/doclitbare.wsdl"/>

+        </java>    	

+    	<!-- Compile the generated classes -->

+    	<ant:echo>Compiling generated schema</ant:echo>

+        <javac destdir="${schema.generated.classes.dir}" srcdir="${schema.generated.src.dir}">

+            <classpath refid="maven.dependency.classpath"></classpath>

+            <classpath location="${compiled.classes.dir}"></classpath>

+        </javac>

+

+        <ant:path id="schema.generated.classes.dir" location="${schema.generated.classes.dir}"/>

+        <maven:addPath id="maven.dependency.classpath" refid="schema.generated.classes.dir"/>

+        <!--</j:if>-->

+    </preGoal>

+    

+	<preGoal name="test:test">

+		<ant:copy toDir="target/test-classes/services/EchoService/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="server/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/server">

+				<ant:exclude name="**/*.java"/>

+			</ant:fileset>

+		</ant:copy>

+        <!-- ================================================================ -->

+        <!--- Provider endpoint Service Samples -->

+        <!-- ================================================================ -->

+		<ant:copy toDir="target/test-classes/services/StringProviderService/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="org/apache/axis2/jaxws/provider/string/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/provider/string">

+                <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+                <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+		<ant:copy toDir="target/test-classes/services/StringMessageProviderService/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="org/apache/axis2/jaxws/provider/stringmsg/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/provider/stringmsg">

+                <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+                <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+		<ant:copy toDir="target/test-classes/services/SourceProviderService/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="org/apache/axis2/jaxws/provider/source/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/provider/source">

+                <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+                <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+		<ant:copy toDir="target/test-classes/services/SourceMessageProviderService/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="org/apache/axis2/jaxws/provider/sourcemsg/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/provider/sourcemsg">

+                <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+                <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+		<ant:copy toDir="target/test-classes/services/SoapMessageProviderService/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="org/apache/axis2/jaxws/provider/soapmsg/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/provider/soapmsg">

+                <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+                <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+		<ant:copy toDir="target/test-classes/services/JAXBProviderService/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="org/apache/axis2/jaxws/provider/jaxb/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/provider/jaxb">

+                <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+                <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/schema/classes">

+                <ant:include name="org/test/mtom/**"/>

+			</ant:fileset>

+		</ant:copy>

+		<ant:copy toDir="target/test-classes/services/SOAP12Service/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="org/apache/axis2/jaxws/dispatch/server/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/dispatch/server">

+                <ant:include name="META-INF/**"/>

+			</ant:fileset>

+		</ant:copy>

+		

+        <!-- ================================================================ -->

+        <!--- Proxy endpoint Service Samples -->

+        <!-- ================================================================ -->

+		<ant:copy toDir="target/test-classes/services/ProxyDocLitWrapped/">

+			<ant:fileset dir="target/test-classes">

+				<ant:include name="org/apache/axis2/jaxws/proxy/doclitwrapped/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/proxy/doclitwrapped">

+                <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+                <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+		

+		<ant:copy toDir="target/test-classes/services/ProxyDocLitnonWrapped/">

+					<ant:fileset dir="target/test-classes">

+						<ant:include name="org/apache/axis2/jaxws/proxy/doclitnonwrapped/**"/>

+					</ant:fileset>

+					<ant:fileset dir="test/org/apache/axis2/jaxws/proxy/doclitnonwrapped">

+		                <ant:include name="META-INF/**"/>

+					</ant:fileset>

+					<ant:fileset dir="target/classes">

+		                <ant:include name="org/apache/axis2/jaxws/server/**"/>

+					</ant:fileset>

+		</ant:copy>

+        <!-- ================================================================ -->

+        <!--- Java Bean Endpoint Samples -->

+        <!-- ================================================================ -->

+		<ant:copy toDir="target/test-classes/services/AddressBookService/">

+		  <ant:fileset dir="target/test-classes">

+		    <ant:include name="org/apache/axis2/jaxws/sample/addressbook/**"/>

+		  </ant:fileset>

+		  <ant:fileset dir="test/org/apache/axis2/jaxws/sample/addressbook">

+		    <ant:include name="META-INF/**"/>

+		  </ant:fileset>

+		</ant:copy>

+		

+		<ant:copy toDir="target/test-classes/services/MtomSampleService/">

+		  <ant:fileset dir="target/test-classes">

+		    <ant:include name="org/apache/axis2/jaxws/sample/mtom/**"/>

+		  </ant:fileset>

+		  <ant:fileset dir="test/org/apache/axis2/jaxws/sample/mtom">

+			<ant:include name="META-INF/**"/>

+          </ant:fileset>

+        </ant:copy>

+		

+		<ant:copy toDir="target/test-classes/services/DocLitNonWrapService/">

+		  <ant:fileset dir="target/test-classes">

+		    <ant:include name="org/apache/axis2/jaxws/sample/nonwrap/**"/>

+		  </ant:fileset>

+		  <ant:fileset dir="test/org/apache/axis2/jaxws/sample/nonwrap">

+		    <ant:include name="META-INF/**"/>

+		  </ant:fileset>

+		  <ant:fileset dir="target/classes">

+			 <ant:include name="org/apache/axis2/jaxws/server/**"/>

+		  </ant:fileset>

+		</ant:copy>

+		

+		<ant:copy toDir="target/test-classes/services/DocLitWrapService/">

+			<ant:fileset dir="target/test-classes">

+			   	<ant:include name="org/apache/axis2/jaxws/sample/wrap/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/sample/wrap">

+			  	<ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+				<ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+		

+		<ant:copy toDir="target/test-classes/services/AddNumbersService/">

+			<ant:fileset dir="target/test-classes">

+			   <ant:include name="org/apache/axis2/jaxws/sample/addnumbers/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/sample/addnumbers">

+			   <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+			   <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+		<ant:copy toDir="target/test-classes/services/BareDocLitService/">

+			<ant:fileset dir="target/test-classes">

+			   <ant:include name="org/apache/axis2/jaxws/sample/doclitbare/**"/>

+			</ant:fileset>

+			<ant:fileset dir="test/org/apache/axis2/jaxws/sample/doclitbare">

+			   <ant:include name="META-INF/**"/>

+			</ant:fileset>

+			<ant:fileset dir="target/classes">

+			   <ant:include name="org/apache/axis2/jaxws/server/**"/>

+			</ant:fileset>

+		</ant:copy>

+	</preGoal>

+

+    <!-- Create the API and Impl jars --> 

+    <postGoal name="jar">

+        <jar destfile="target/axis2-jaxws-api-${jaxws.version}.jar">

+            <ant:fileset dir="target/classes">

+            	<ant:exclude name="com/ibm/webservices/**"/>

+            </ant:fileset>

+        </jar>

+    	<jar destfile="target/axis2-jaxws-impl-${jaxws.version}.jar">

+    	    <ant:fileset dir="target/classes">

+                <ant:exclude name="javax/**"/>

+            </ant:fileset>

+    	</jar>

+        <ant:copy toDir="${maven.repo.local}/org.apache.axis2/jars">

+            <ant:fileset file="target/axis2-jaxws-impl-${jaxws.version}.jar"/>

+        	<ant:fileset file="target/axis2-jaxws-api-${jaxws.version}.jar"/>

+        </ant:copy>

+    </postGoal>

+

+    <goal name="jar">

+        <attainGoal name="jar:install"/>

+

+    </goal>

+

+    <goal name="release" prereqs="dist-bin,dist-src">

+

+

+    </goal>

+

+    <goal name="dist-bin" prereqs="jar">

+

+        <ant:echo>+----------------------------------------------</ant:echo>

+        <ant:echo>| Creating: JAXWS Binary Distribution</ant:echo>

+        <ant:echo>+----------------------------------------------</ant:echo>

+

+

+        <property name="dist" value="target/dist/temp"/>

+

+        <mkdir dir="${dist}"/>

+        <mkdir dir="${dist}/apidocs"/>

+        <mkdir dir="${dist}/build"/>

+        <!--<mkdir dir="${dist}/docs"/>-->

+        <mkdir dir="${dist}/lib"/>

+

+        <!--copy dependent jars-->

+        <maven:reactor basedir="${basedir}"

+                       postProcessing="true"

+                       includes="project.xml"

+                       banner="Executing (${goals}):"

+                       ignoreFailures="false"/>

+        <j:forEach var="x" items="${reactorProjects}">

+            <ant:echo message="Copying ${x} to ${dist}"/>

+            <deploy:copy-deps todir="${dist}/lib"

+                              projectDescriptor="${x.getFile()}"/>

+        </j:forEach>

+        <ant:delete file="${dist}/lib/xmlunit-${xmlunit.version}.jar"/>

+

+        <!--Add the licenses of jars-->

+        <ant:copy toDir="${dist}/lib">

+            <ant:fileset dir="legal"/>

+        </ant:copy>

+

+        <!--add api docs-->

+

+        <ant:javadoc packagenames="org.apache.jaxws.*"

+                     defaultexcludes="yes"

+                     destdir="${dist}/apidocs"

+                     author="true"

+                     breakiterator="true"

+                     version="true"

+                     use="true"

+                     windowtitle="JAXWS API">

+            <ant:arg

+                    line="-J-Dhttp.proxy.port=${maven.proxy.port} -J-Dhttp.proxy.host=${maven.proxy.host}"/>

+            <ant:sourcepath>

+                <ant:pathelement location="src"/>

+            </ant:sourcepath>

+            <ant:classpath>

+                <ant:fileset dir="${dist}/lib">

+                    <ant:include name="*.jar"/>

+                </ant:fileset>

+            </ant:classpath>

+        </ant:javadoc>

+

+        <!--add jars-->

+        <ant:copy toDir="${dist}/build">

+            <ant:fileset file="target/axis2-jaxws-api-${jaxws.version}.jar"/>

+            <ant:fileset file="target/axis2-jaxws-impl-${jaxws.version}.jar"/>

+        </ant:copy>

+

+        <!--add documents-->

+        <ant:copy toDir="${dist}/docs">

+            <ant:fileset dir="xdocs">

+                <ant:exclude name="**/.svn/**"/>

+            </ant:fileset>

+        </ant:copy>

+

+        <!--copy release notes, etc-->

+        <ant:copy toDir="${dist}">

+            <ant:fileset file="RELEASE-NOTE.txt"/>

+            <ant:fileset file="README.txt"/>

+            <ant:fileset file="NOTICE.txt"/>

+            <ant:fileset file="LICENSE.txt"/>

+        </ant:copy>

+

+

+        <!--create the zip-->

+        <ant:zip file="target/dist/jaxws-${jaxws.version}-bin.zip">

+            <ant:fileset dir="${dist}/"/>

+        </ant:zip>

+

+        <ant:delete dir="${dist}"/>

+

+    </goal>

+

+    <goal name="dist-src" prereqs="jar">

+

+        <ant:echo>+----------------------------------------------</ant:echo>

+        <ant:echo>| Creating: JAXWS Source Distribution</ant:echo>

+        <ant:echo>+----------------------------------------------</ant:echo>

+

+        <ant:property name="${dist}" value="target/dist/temp"/>

+

+        <ant:copy toDir="${dist}">

+            <ant:fileset dir=".">

+                <ant:exclude name="**/.svn/**"/>

+                <ant:include name="**/src/**"/>

+                <ant:include name="**/test/**"/>

+            </ant:fileset>

+        </ant:copy>

+

+        <!-- Copy the master maven files for the standard src distro -->

+        <ant:copy toDir="${dist}">

+            <ant:fileset file="maven.xml"/>

+            <ant:fileset file="project.xml"/>

+            <ant:fileset file="project.properties"/>

+            <ant:fileset file="RELEASE-NOTE.txt"/>

+            <ant:fileset file="NOTICE.txt"/>

+            <ant:fileset file="LICENSE.txt"/>

+        </ant:copy>

+

+        <ant:zip file="target/dist/jaxws-${jaxws.version}-src.zip">

+            <ant:fileset dir="${dist}/"/>

+        </ant:zip>

+        <ant:delete dir="${dist}"/>

+    </goal>

+

+    <goal name="javadocs">

+

+        <mkdir dir="target/apidocs"/>

+

+        <ant:javadoc packagenames="org.apache.jaxws.*"

+                     defaultexcludes="yes"

+                     destdir="target/apidocs"

+                     author="true"

+                     breakiterator="true"

+                     version="true"

+                     use="true"

+                     windowtitle="JAXWS API">

+            <ant:arg

+                    line="-J-Dhttp.proxy.port=${maven.proxy.port} -J-Dhttp.proxy.host=${maven.proxy.host}"/>

+            <ant:sourcepath>

+                <ant:pathelement location="src"/>

+            </ant:sourcepath>

+        </ant:javadoc>

+    </goal>

+	

+	    <postGoal name="java:jar-resources">

+	      <tstamp>

+	        <format property="build.time" pattern="MMM dd, yyyy (hh:mm:ss z)" locale="en"/>

+	      </tstamp>

+	      <replace dir="${maven.build.dest}/org/apache/axis2/jaxws/i18n">

+	        <include name="resource*.properties"/>

+	        <replacefilter token="#today#" value="${build.time}"/>

+	        <replacefilter token="#axisVersion#" value="${pom.currentVersion}"/>

+	      </replace> 

+	    </postGoal>

+

+</project>

diff --git a/rampart_1_1/modules/jaxws/project.properties b/rampart_1_1/modules/jaxws/project.properties
new file mode 100644
index 0000000..981eb4c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/project.properties
@@ -0,0 +1,38 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

+

+# -------------------------------------------------------------------

+#                JUnit

+# -------------------------------------------------------------------

+maven.junit.jvmargs=-Xmx256m -Djava.awt.headless=true -Dbuild.repository=./target/test-classes

+maven.junit.fork=true

+

+# -------------------------------------------------------------------

+#                Test

+# -------------------------------------------------------------------

+maven.test.failure.ignore=true

+

+# -------------------------------------------------------------------

+#                Compile

+# -------------------------------------------------------------------

+maven.compile.optimize=false

+maven.compile.fork=true

+maven.compile.target=1.5

+maven.compile.source=1.5

+

+jaxws.version=${pom.currentVersion}

diff --git a/rampart_1_1/modules/jaxws/project.xml b/rampart_1_1/modules/jaxws/project.xml
new file mode 100644
index 0000000..68c3420
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/project.xml
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+	<pomVersion>3</pomVersion>

+	<extend>../../etc/project.xml</extend>

+	

+	<name>Apache Axis 2.0 - JAX-WS</name>

+	<id>axis2-jaxws</id>

+	<groupId>org.apache.axis2</groupId>

+	<description>JAX-WS implementation using Axis 2.0</description>

+	

+	<!-- ========== -->

+    <!-- Developers -->

+    <!-- ========== -->

+    <developers>

+        <developer>

+            <name>Nicholas Gallardo</name>

+            <organization>IBM</organization>

+        </developer>

+        <developer>

+            <name>Rich Scheuerle</name>

+            <id>scheu</id>

+            <email>scheu AT us.ibm.com</email>

+            <organization>IBM</organization>

+        </developer>

+        <developer>

+            <name>Jeff Barrett</name>

+            <organization>IBM</organization>

+        </developer>

+        <developer>

+            <name>Nikhil Thaker</name>

+            <organization>IBM</organization>

+        </developer>

+        <developer>

+            <name>Michael Rheinheimer</name>

+            <organization>IBM</organization>

+        </developer>

+   </developers>

+   <contributors>

+        <contributor>

+            <name>Brent Ulbricht</name>

+            <organization>IBM</organization>

+        </contributor>

+        <contributor>

+            <name>Dan Sedov</name>

+            <organization>IBM</organization>

+        </contributor>

+        <contributor>

+            <name>Lizet Ernand</name>

+            <organization>IBM</organization>

+        </contributor>

+        <contributor>

+            <name>Samual Isokpunwu</name>

+            <organization>IBM</organization>

+        </contributor> 

+    </contributors>

+    <build>

+        <defaultGoal>jar</defaultGoal>

+        <nagEmailAddress></nagEmailAddress>

+        <sourceDirectory>src</sourceDirectory>

+	<unitTestSourceDirectory>test</unitTestSourceDirectory>

+

+        <unitTest>

+            <includes>

+                <include>**/*Test.java</include>

+            </includes>

+

+            <resources>

+                <resource>

+                    <directory>${basedir}/test-resources</directory>

+                </resource>

+                <resource>

+                    <directory>conf</directory>

+                    <includes>

+                        <include>**/*.properties</include>

+                    </includes>

+                </resource>

+                <resource>

+                    <directory>src</directory>

+                    <includes>

+                        <include>**/*.properties</include>

+                        <include>**/*.xml</include>

+                    </includes>

+                </resource>

+            </resources>

+        </unitTest>

+

+

+    </build>

+    

+    <reports>

+        <report>maven-junit-report-plugin</report>

+    </reports>

+

+    <dependencies>

+        <dependency>

+            <groupId>com.sun.xml.bind</groupId>

+            <artifactId>jaxb-impl</artifactId>

+            <version>${jaxbri.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>com.sun.xml.bind</groupId>

+            <artifactId>jaxb-xjc</artifactId>

+            <version>${jaxbri.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.xml.bind</groupId>

+            <artifactId>jaxb-api</artifactId>

+            <version>${jaxbri.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-dom</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-adb</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-java2wsdl</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-saaj</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-saaj</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>annogen</groupId>

+            <artifactId>annogen</artifactId>

+            <version>${annogen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>${wsdl4j.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>backport-util-concurrent</groupId>

+            <artifactId>backport-util-concurrent</artifactId>

+            <version>${backport_util_concurrent.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+

+        <dependency>

+            <groupId>commons-codec</groupId>

+            <artifactId>commons-codec</artifactId>

+            <version>${commons.codec.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>log4j</groupId>

+            <artifactId>log4j</artifactId>

+            <version>1.2.13</version>

+            <properties>

+                <module>false</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-httpclient</groupId>

+            <artifactId>commons-httpclient</artifactId>

+            <version>${commons.httpclient.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>javax.mail</groupId>

+            <artifactId>mail</artifactId>

+            <version>${javamail.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>${activation.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>junit</groupId>

+            <artifactId>junit</artifactId>

+            <version>${junit.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>${stax.impl.groupid}</groupId>

+            <artifactId>${stax.impl.artifactid}</artifactId>

+            <version>${stax.impl.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>${neethi.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>${XmlSchema.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency> 

+        <dependency>

+            <groupId>xml-apis</groupId>

+            <artifactId>xml-apis</artifactId>

+            <version>${xml_apis.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>xmlunit</groupId>

+            <artifactId>xmlunit</artifactId>

+            <version>${xmlunit.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>httpcomponents-httpcore</groupId>

+            <artifactId>jakarta-httpcore</artifactId>

+            <version>${jakarta.httpcore.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency> 

+    </dependencies>

+</project>

diff --git a/rampart_1_1/modules/jaxws/src/javax/jws/HandlerChain.java b/rampart_1_1/modules/jaxws/src/javax/jws/HandlerChain.java
new file mode 100644
index 0000000..6ba6bd2
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/jws/HandlerChain.java
@@ -0,0 +1,16 @@
+/**

+ * 

+ */

+package javax.jws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.TYPE)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface HandlerChain {

+	String file();

+	String name() default "";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/jws/Oneway.java b/rampart_1_1/modules/jaxws/src/javax/jws/Oneway.java
new file mode 100644
index 0000000..f0e9ca5
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/jws/Oneway.java
@@ -0,0 +1,12 @@
+/**

+ * 

+ */

+package javax.jws;

+

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+

+@Retention(RetentionPolicy.RUNTIME)

+public @interface Oneway {

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/jws/WebMethod.java b/rampart_1_1/modules/jaxws/src/javax/jws/WebMethod.java
new file mode 100644
index 0000000..e6ec4ad
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/jws/WebMethod.java
@@ -0,0 +1,17 @@
+/**

+ * 

+ */

+package javax.jws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target (ElementType.METHOD)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface WebMethod {

+	String operationName() default "";

+	String action() default "";

+	boolean exclude() default false;

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/jws/WebParam.java b/rampart_1_1/modules/jaxws/src/javax/jws/WebParam.java
new file mode 100644
index 0000000..5eaf5c5
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/jws/WebParam.java
@@ -0,0 +1,20 @@
+/**

+ * 

+ */

+package javax.jws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target (ElementType.PARAMETER)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface WebParam {

+	public enum Mode{IN, OUT, INOUT};

+	String name() default "";

+	String targetNamespace() default "";

+	Mode mode() default Mode.IN;

+	boolean header() default false;

+	String partName() default "";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/jws/WebResult.java b/rampart_1_1/modules/jaxws/src/javax/jws/WebResult.java
new file mode 100644
index 0000000..f461c36
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/jws/WebResult.java
@@ -0,0 +1,18 @@
+/**

+ * 

+ */

+package javax.jws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target (ElementType.METHOD)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface WebResult {

+	String name() default "return";

+	String targetNamespace() default "";

+	boolean header() default false;

+	String partName() default "";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/jws/WebService.java b/rampart_1_1/modules/jaxws/src/javax/jws/WebService.java
new file mode 100644
index 0000000..275f39b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/jws/WebService.java
@@ -0,0 +1,17 @@
+package javax.jws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.TYPE)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface WebService {

+	String name() default "";

+	String targetNamespace() default "";

+	String serviceName() default "";

+	String wsdlLocation() default "";

+	String endpointInterface() default "";

+	String portName() default "";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/jws/soap/SOAPBinding.java b/rampart_1_1/modules/jaxws/src/javax/jws/soap/SOAPBinding.java
new file mode 100644
index 0000000..af35bf4
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/jws/soap/SOAPBinding.java
@@ -0,0 +1,33 @@
+/*

+* Copyright 2006 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.jws.soap;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target ({ElementType.METHOD, ElementType.TYPE})

+@Retention(RetentionPolicy.RUNTIME)

+public @interface SOAPBinding {

+    public enum Style{DOCUMENT, RPC};

+    public enum Use {LITERAL, ENCODED};

+    public enum ParameterStyle{BARE, WRAPPED};

+    Style style() default Style.DOCUMENT;

+    Use use() default Use.LITERAL;

+    ParameterStyle parameterStyle() default ParameterStyle.WRAPPED;

+}

+

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/AsyncHandler.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/AsyncHandler.java
new file mode 100644
index 0000000..1215217
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/AsyncHandler.java
@@ -0,0 +1,22 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+

+public interface AsyncHandler<T> {

+    public abstract void handleResponse(Response<T> response);

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/Binding.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Binding.java
new file mode 100644
index 0000000..2c8ace6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Binding.java
@@ -0,0 +1,26 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import javax.xml.ws.handler.Handler;

+import java.util.List;

+

+public interface Binding {

+

+    public abstract List<Handler> getHandlerChain();

+

+    public abstract void setHandlerChain(List<Handler> list);

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/BindingProvider.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/BindingProvider.java
new file mode 100644
index 0000000..cc61a8a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/BindingProvider.java
@@ -0,0 +1,34 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.util.Map;

+

+public interface BindingProvider {

+

+    public abstract Map<java.lang.String, java.lang.Object>      getRequestContext();

+

+    public abstract Map<java.lang.String, java.lang.Object>      getResponseContext();

+

+    public abstract Binding getBinding();

+

+    public static final String USERNAME_PROPERTY = "javax.xml.ws.security.auth.username";

+    public static final String PASSWORD_PROPERTY = "javax.xml.ws.security.auth.password";

+    public static final String ENDPOINT_ADDRESS_PROPERTY = "javax.xml.ws.service.endpoint.address";

+    public static final String SESSION_MAINTAIN_PROPERTY = "javax.xml.ws.session.maintain";

+    public static final String SOAPACTION_USE_PROPERTY = "javax.xml.ws.soap.http.soapaction.use";

+    public static final String SOAPACTION_URI_PROPERTY = "javax.xml.ws.soap.http.soapaction.uri";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/BindingType.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/BindingType.java
new file mode 100644
index 0000000..a82bd44
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/BindingType.java
@@ -0,0 +1,28 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.TYPE)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface BindingType {

+

+    public String value() default "";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/Dispatch.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Dispatch.java
new file mode 100644
index 0000000..eab94de
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Dispatch.java
@@ -0,0 +1,30 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.util.concurrent.Future;

+

+public interface Dispatch<T>

+        extends BindingProvider {

+

+    public abstract T invoke(T obj);

+

+    public abstract Response<T> invokeAsync(T obj);

+

+    public abstract Future<?> invokeAsync(T obj, AsyncHandler<T> asynchandler);

+

+    public abstract void invokeOneWay(T obj);

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/Endpoint.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Endpoint.java
new file mode 100644
index 0000000..43c922d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Endpoint.java
@@ -0,0 +1,66 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import javax.xml.ws.spi.Provider;

+import java.util.List;

+import java.util.Map;

+import java.util.concurrent.Executor;

+

+public abstract class Endpoint {

+

+    public Endpoint() {

+    }

+

+    public static Endpoint create(Object implementor) {

+        return create(null, implementor);

+    }

+

+    public static Endpoint create(String bindingId, Object implementor) {

+        return Provider.provider().createEndpoint(bindingId, implementor);

+    }

+

+    public abstract Binding getBinding();

+

+    public abstract Object getImplementor();

+

+    public abstract void publish(String s);

+

+    public static Endpoint publish(String address, Object implementor) {

+        return Provider.provider().createAndPublishEndpoint(address, implementor);

+    }

+

+    public abstract void publish(Object obj);

+

+    public abstract void stop();

+

+    public abstract boolean isPublished();

+

+    public abstract List<javax.xml.transform.Source> getMetadata();

+

+    public abstract void setMetadata(List<javax.xml.transform.Source> list);

+

+    public abstract Executor getExecutor();

+

+    public abstract void setExecutor(Executor executor);

+

+    public abstract Map<java.lang.String, java.lang.Object> getProperties();

+

+    public abstract void setProperties(Map<java.lang.String, java.lang.Object> map);

+

+    public static final String WSDL_SERVICE = "javax.xml.ws.wsdl.service";

+    public static final String WSDL_PORT = "javax.xml.ws.wsdl.port";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/Holder.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Holder.java
new file mode 100644
index 0000000..1a5670b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Holder.java
@@ -0,0 +1,29 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+

+public final class Holder<T> {

+

+    public Holder() {

+    }

+

+    public Holder(T value) {

+        this.value = value;

+    }

+

+    public T value;

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/LogicalMessage.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/LogicalMessage.java
new file mode 100644
index 0000000..628845a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/LogicalMessage.java
@@ -0,0 +1,30 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.transform.Source;

+

+public interface LogicalMessage {

+

+    public abstract Source getPayload();

+

+    public abstract void setPayload(Source source);

+

+    public abstract Object getPayload(JAXBContext jaxbcontext);

+

+    public abstract void setPayload(Object obj, JAXBContext jaxbcontext);

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/ProtocolException.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/ProtocolException.java
new file mode 100644
index 0000000..50f7466
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/ProtocolException.java
@@ -0,0 +1,35 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+public class ProtocolException extends WebServiceException {

+

+    public ProtocolException() {

+    }

+

+    public ProtocolException(String message) {

+        super(message);

+    }

+

+    public ProtocolException(String message, Throwable cause) {

+        super(message, cause);

+    }

+

+    public ProtocolException(Throwable cause) {

+        super(cause);

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/Provider.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Provider.java
new file mode 100644
index 0000000..bd9d3db
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Provider.java
@@ -0,0 +1,22 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+

+public interface Provider<T> {

+

+    public abstract T invoke(T obj);

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/RequestWrapper.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/RequestWrapper.java
new file mode 100644
index 0000000..329b787
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/RequestWrapper.java
@@ -0,0 +1,30 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.METHOD)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface RequestWrapper {

+

+    public String localName() default "";

+    public String targetNamespace() default "";

+    public String className() default "";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/Response.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Response.java
new file mode 100644
index 0000000..24ca62f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Response.java
@@ -0,0 +1,25 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.util.Map;

+import java.util.concurrent.Future;

+

+public interface Response<T>

+        extends Future<T> {

+

+    public abstract Map<java.lang.String, java.lang.Object> getContext();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/ResponseWrapper.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/ResponseWrapper.java
new file mode 100644
index 0000000..ad1829c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/ResponseWrapper.java
@@ -0,0 +1,30 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.METHOD)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface ResponseWrapper {

+

+    public String localName() default "";

+    public String targetNamespace() default "";

+    public String className() default "";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/Service.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Service.java
new file mode 100644
index 0000000..324813a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/Service.java
@@ -0,0 +1,93 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.ws.handler.HandlerResolver;

+import javax.xml.ws.spi.Provider;

+import javax.xml.ws.spi.ServiceDelegate;

+import java.net.URI;

+import java.net.URL;

+import java.util.Iterator;

+import java.util.concurrent.Executor;

+

+public class Service {

+    public enum Mode {

+        MESSAGE, PAYLOAD }

+

+    protected Service(URL wsdlDocumentLocation, QName serviceName) {

+        _delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation, serviceName, getClass());

+    }

+

+    public <T> T getPort(QName portName, Class<T> serviceEndpointInterface) {

+        return (T) _delegate.getPort(portName, serviceEndpointInterface);

+    }

+

+    public <T> T getPort(Class<T> serviceEndpointInterface) {

+        return (T) _delegate.getPort(serviceEndpointInterface);

+    }

+

+    public void addPort(QName portName, String bindingId, String endpointAddress) {

+        _delegate.addPort(portName, bindingId, endpointAddress);

+    }

+

+    public <T>Dispatch<T> createDispatch(QName portName, Class<T> type, Mode mode) {

+        return _delegate.createDispatch(portName, type, mode);

+    }

+

+    public Dispatch<java.lang.Object> createDispatch(QName portName, JAXBContext context, Mode mode) {

+        return _delegate.createDispatch(portName, context, mode);

+    }

+

+    public QName getServiceName() {

+        return _delegate.getServiceName();

+    }

+

+    public Iterator<javax.xml.namespace.QName> getPorts() {

+        return _delegate.getPorts();

+    }

+

+    public URL getWSDLDocumentLocation() {

+        return _delegate.getWSDLDocumentLocation();

+    }

+

+    public HandlerResolver getHandlerResolver() {

+        return _delegate.getHandlerResolver();

+    }

+

+    public void setHandlerResolver(HandlerResolver handlerResolver) {

+        _delegate.setHandlerResolver(handlerResolver);

+    }

+

+    public Executor getExecutor() {

+        return _delegate.getExecutor();

+    }

+

+    public void setExecutor(Executor executor) {

+        _delegate.setExecutor(executor);

+    }

+

+    public static Service create(URL wsdlDocumentLocation, QName serviceName) {

+        return new Service(wsdlDocumentLocation, serviceName);

+    }

+

+    public static Service create(QName serviceName) {

+        return new Service(null, serviceName);

+    }

+

+    private ServiceDelegate _delegate;

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/ServiceMode.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/ServiceMode.java
new file mode 100644
index 0000000..98a20d6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/ServiceMode.java
@@ -0,0 +1,30 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Inherited;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.TYPE)

+@Retention(RetentionPolicy.RUNTIME)

+@Inherited

+public @interface ServiceMode {

+

+    public Service.Mode value() default Service.Mode.PAYLOAD;

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebEndpoint.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebEndpoint.java
new file mode 100644
index 0000000..cee2e8b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebEndpoint.java
@@ -0,0 +1,27 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.METHOD)

+@Retention(RetentionPolicy.RUNTIME)

+public @interface WebEndpoint {

+    public String name();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebFault.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebFault.java
new file mode 100644
index 0000000..aa39bf7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebFault.java
@@ -0,0 +1,33 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.TYPE)

+@Retention(RetentionPolicy.RUNTIME)

+

+public @interface WebFault {

+

+    public String name();

+

+    public String targetNamespace();

+

+    public String faultBean();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceClient.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceClient.java
new file mode 100644
index 0000000..b3ed796
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceClient.java
@@ -0,0 +1,33 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.TYPE)

+@Retention(RetentionPolicy.RUNTIME)

+

+public @interface WebServiceClient {

+

+    public String name();

+

+    public String targetNamespace();

+

+    public String wsdlLocation();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceContext.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceContext.java
new file mode 100644
index 0000000..bfea344
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceContext.java
@@ -0,0 +1,28 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import javax.xml.ws.handler.MessageContext;

+import java.security.Principal;

+

+public interface WebServiceContext {

+

+    public abstract MessageContext getMessageContext();

+

+    public abstract Principal getUserPrincipal();

+

+    public abstract boolean isUserInRole(String s);

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceException.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceException.java
new file mode 100644
index 0000000..a0a3a2a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceException.java
@@ -0,0 +1,35 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+

+public class WebServiceException extends RuntimeException {

+

+    public WebServiceException() {

+    }

+

+    public WebServiceException(String message) {

+        super(message);

+    }

+

+    public WebServiceException(String message, Throwable cause) {

+        super(message, cause);

+    }

+

+    public WebServiceException(Throwable cause) {

+        super(cause);

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServicePermission.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServicePermission.java
new file mode 100644
index 0000000..71cf744
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServicePermission.java
@@ -0,0 +1,29 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.security.BasicPermission;

+

+public final class WebServicePermission extends BasicPermission {

+

+    public WebServicePermission(String name) {

+        super(name);

+    }

+

+    public WebServicePermission(String name, String actions) {

+        super(name, actions);

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceProvider.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceProvider.java
new file mode 100644
index 0000000..891fda5
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceProvider.java
@@ -0,0 +1,32 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target(ElementType.TYPE)

+@Retention(RetentionPolicy.RUNTIME)

+

+public @interface WebServiceProvider {

+

+    public String wsdlLocation() default "";

+    public String serviceName() default "";

+    public String targetNamespace() default "";

+    public String portName() default "";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceRef.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceRef.java
new file mode 100644
index 0000000..af37d62
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceRef.java
@@ -0,0 +1,37 @@
+/*

+* Copyright 2004,2005 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.ws;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Retention;

+import java.lang.annotation.RetentionPolicy;

+import java.lang.annotation.Target;

+

+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})

+@Retention(RetentionPolicy.RUNTIME)

+

+public @interface WebServiceRef {

+

+    public String name();

+

+    public Class type();

+

+    public String mappedName();

+

+    public Class value();

+

+    public String wsdlLocation();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceRefs.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceRefs.java
new file mode 100644
index 0000000..2327c18
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/WebServiceRefs.java
@@ -0,0 +1,34 @@
+/*                                                                                                            

+ * Copyright 2004,2005 The Apache Software Foundation.                                                        

+ * Copyright 2006 International Business Machines Corp.                                                       

+ *                                                                                                            

+ * 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.ws;                                                                                         

+                                                                                                              

+import java.lang.annotation.RetentionPolicy;                                                                  

+import java.lang.annotation.ElementType;                                                                      

+import java.lang.annotation.Retention;                                                                        

+import java.lang.annotation.Target;                                                                           

+import java.lang.annotation.Documented;                                                                       

+                                                                                                              

+@Documented                                                                                                   

+@Retention(value=RetentionPolicy.RUNTIME)                                                                     

+@Target(value=ElementType.TYPE)                                                                               

+                                                                                                              

+public @interface WebServiceRefs {                                                                            

+                                                                                                              

+    public WebServiceRef[] value();                                                                           

+                                                                                                              

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/Handler.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/Handler.java
new file mode 100644
index 0000000..1b32343
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/Handler.java
@@ -0,0 +1,25 @@
+/*

+* Copyright 2004,2005 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.ws.handler;

+

+public interface Handler<C extends MessageContext> {

+

+    public abstract boolean handleMessage(C messagecontext);

+

+    public abstract boolean handleFault(C messagecontext);

+

+    public abstract void close(MessageContext messagecontext);

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/HandlerResolver.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/HandlerResolver.java
new file mode 100644
index 0000000..7f55ce7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/HandlerResolver.java
@@ -0,0 +1,23 @@
+/*

+* Copyright 2004,2005 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.ws.handler;

+

+import java.util.List;

+

+public interface HandlerResolver {

+

+    public abstract List<Handler> getHandlerChain(PortInfo portinfo);

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/LogicalHandler.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/LogicalHandler.java
new file mode 100644
index 0000000..9f87aa9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/LogicalHandler.java
@@ -0,0 +1,20 @@
+/*

+* Copyright 2004,2005 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.ws.handler;

+

+public interface LogicalHandler<C extends LogicalMessageContext>

+        extends Handler<C> {

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/LogicalMessageContext.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/LogicalMessageContext.java
new file mode 100644
index 0000000..2c62c80
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/LogicalMessageContext.java
@@ -0,0 +1,24 @@
+/*

+* Copyright 2004,2005 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.ws.handler;

+

+import javax.xml.ws.LogicalMessage;

+

+public interface LogicalMessageContext

+        extends MessageContext {

+

+    public abstract LogicalMessage getMessage();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/MessageContext.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/MessageContext.java
new file mode 100644
index 0000000..7f2fa61
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/MessageContext.java
@@ -0,0 +1,45 @@
+/*

+* Copyright 2004,2005 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.ws.handler;

+

+import java.util.Map;

+

+public interface MessageContext extends Map<String, Object> {

+

+    public enum Scope {

+        APPLICATION,  

+        HANDLER

+    }

+

+    public abstract void setScope(String s, Scope scope);

+

+    public abstract Scope getScope(String s);

+

+    public static final String MESSAGE_OUTBOUND_PROPERTY = "javax.xml.ws.handler.message.outbound";

+    public static final String MESSAGE_ATTACHMENTS = "javax.xml.ws.binding.attachments";

+    public static final String WSDL_DESCRIPTION = "javax.xml.ws.wsdl.description";

+    public static final String WSDL_SERVICE = "javax.xml.ws.wsdl.service";

+    public static final String WSDL_PORT = "javax.xml.ws.wsdl.port";

+    public static final String WSDL_INTERFACE = "javax.xml.ws.wsdl.interface";

+    public static final String WSDL_OPERATION = "javax.xml.ws.wsdl.operation";

+    public static final String HTTP_RESPONSE_CODE = "javax.xml.ws.http.response.code";

+    public static final String HTTP_REQUEST_HEADERS = "javax.xml.ws.http.request.headers";

+    public static final String HTTP_RESPONSE_HEADERS = "javax.xml.ws.http.response.headers";

+    public static final String HTTP_REQUEST_METHOD = "javax.xml.ws.http.request.method";

+    public static final String SERVLET_REQUEST = "javax.xml.ws.servlet.request";

+    public static final String SERVLET_RESPONSE = "javax.xml.ws.servlet.response";

+    public static final String SERVLET_CONTEXT = "javax.xml.ws.servlet.context";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/PortInfo.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/PortInfo.java
new file mode 100644
index 0000000..a39f880
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/PortInfo.java
@@ -0,0 +1,27 @@
+/*

+* Copyright 2004,2005 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.ws.handler;

+

+import javax.xml.namespace.QName;

+

+public interface PortInfo {

+

+    public abstract QName getServiceName();

+

+    public abstract QName getPortName();

+

+    public abstract String getBindingID();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/soap/SOAPHandler.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/soap/SOAPHandler.java
new file mode 100644
index 0000000..3b79cf7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/soap/SOAPHandler.java
@@ -0,0 +1,25 @@
+/*

+* Copyright 2004,2005 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.ws.handler.soap;

+

+import javax.xml.ws.handler.Handler;

+import java.util.Set;

+

+public interface SOAPHandler<T extends SOAPMessageContext>

+        extends Handler<T> {

+

+    public abstract Set<javax.xml.namespace.QName> getHeaders();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/soap/SOAPMessageContext.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/soap/SOAPMessageContext.java
new file mode 100644
index 0000000..a1434ac
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/handler/soap/SOAPMessageContext.java
@@ -0,0 +1,34 @@
+/*

+* Copyright 2004,2005 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.ws.handler.soap;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.ws.handler.MessageContext;

+import java.util.Set;

+

+public interface SOAPMessageContext

+        extends MessageContext {

+

+    public abstract SOAPMessage getMessage();

+

+    public abstract void setMessage(SOAPMessage soapmessage);

+

+    public abstract Object[] getHeaders(QName qname, JAXBContext jaxbcontext, boolean flag);

+

+    public abstract Set<java.net.URI> getRoles();

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/http/HTTPBinding.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/http/HTTPBinding.java
new file mode 100644
index 0000000..48f4fa7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/http/HTTPBinding.java
@@ -0,0 +1,24 @@
+/*

+* Copyright 2004,2005 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.ws.http;

+

+import javax.xml.ws.Binding;

+

+public interface HTTPBinding

+        extends Binding {

+

+    public static final String HTTP_BINDING = "http://www.w3.org/2004/08/wsdl/http";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/http/HTTPException.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/http/HTTPException.java
new file mode 100644
index 0000000..deb6a27
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/http/HTTPException.java
@@ -0,0 +1,31 @@
+/*

+* Copyright 2004,2005 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.ws.http;

+

+import javax.xml.ws.ProtocolException;

+

+public class HTTPException extends ProtocolException {

+

+    public HTTPException(int statusCode) {

+        this.statusCode = statusCode;

+    }

+

+    public int getStatusCode() {

+        return statusCode;

+    }

+

+    private int statusCode;

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.java
new file mode 100644
index 0000000..95c8f9d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.java
@@ -0,0 +1,43 @@
+/*

+* Copyright 2004,2005 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.ws.soap;

+

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.SOAPFactory;

+import javax.xml.ws.Binding;

+import java.util.Set;

+

+public interface SOAPBinding

+        extends Binding {

+

+    public abstract Set<java.net.URI> getRoles();

+

+    public abstract void setRoles(Set<java.net.URI> set);

+

+    public abstract boolean isMTOMEnabled();

+

+    public abstract void setMTOMEnabled(boolean flag);

+

+    public abstract SOAPFactory getSOAPFactory();

+

+    public abstract MessageFactory getMessageFactory();

+

+    public static final String SOAP11HTTP_BINDING = "http://schemas.xmlsoap.org/wsdl/soap/http";

+    public static final String SOAP12HTTP_BINDING = "http://www.w3.org/2003/05/soap/bindings/HTTP/";

+    public static final String SOAP11HTTP_MTOM_BINDING = "http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true";

+    public static final String SOAP12HTTP_MTOM_BINDING = "http://www.w3.org/2003/05/soap/bindings/HTTP/?mtom=true";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.java
new file mode 100644
index 0000000..75ca2af
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.java
@@ -0,0 +1,34 @@
+/*

+* Copyright 2004,2005 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.ws.soap;

+

+import javax.xml.soap.SOAPFault;

+import javax.xml.ws.ProtocolException;

+

+public class SOAPFaultException extends ProtocolException {

+

+    public SOAPFaultException(SOAPFault fault) {

+        super(fault.getFaultString());

+        this.fault = fault;

+    }

+

+    public SOAPFault getFault() {

+        return fault;

+    }

+

+    private SOAPFault fault;

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.java
new file mode 100644
index 0000000..654875d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.java
@@ -0,0 +1,243 @@
+/*

+* Copyright 2004,2005 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.ws.spi;

+

+import java.io.BufferedReader;

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.InputStream;

+import java.io.InputStreamReader;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+import java.util.Properties;

+

+/**

+ * This code is designed to implement the pluggability

+ * feature and is designed to both compile and run on JDK version 1.1 and

+ * later.  The code also runs both as part of an unbundled jar file and

+ * when bundled as part of the JDK.

+ * <p/>

+ * This class is duplicated for each subpackage so keep it in sync.

+ * It is package private and therefore is not exposed as part of the JAXRPC

+ * API.

+ */

+class FactoryFinder {

+    /**

+     * Set to true for debugging.

+     */

+    private static final boolean debug = false;

+

+    private static void debugPrintln(String msg) {

+        if (debug) {

+            System.err.println("JAXWS: " + msg);

+        }

+    }

+

+    /**

+     * Figure out which ClassLoader to use.  For JDK 1.2 and later use

+     * the context ClassLoader.

+     *

+     * @return the <code>ClassLoader</code>

+     * @throws ConfigurationError if this class is unable to work with the

+     *                            host JDK

+     */

+    private static ClassLoader findClassLoader()

+            throws ConfigurationError {

+        Method m = null;

+

+        try {

+

+            m = Thread.class.getMethod("getContextClassLoader", (Class []) null);

+        } catch (NoSuchMethodException e) {

+            // Assume that we are running JDK 1.1, use the current ClassLoader

+            debugPrintln("assuming JDK 1.1");

+            return FactoryFinder.class.getClassLoader();

+        }

+

+        try {

+            return (ClassLoader) m.invoke(Thread.currentThread(), (Object []) null);

+        } catch (IllegalAccessException e) {

+            // assert(false)

+            throw new ConfigurationError("Unexpected IllegalAccessException",

+                    e);

+        } catch (InvocationTargetException e) {

+            // assert(e.getTargetException() instanceof SecurityException)

+            throw new ConfigurationError("Unexpected InvocationTargetException",

+                    e);

+        }

+    }

+

+    /**

+     * Create an instance of a class using the specified

+     * <code>ClassLoader</code>, or if that fails from the

+     * <code>ClassLoader</code> that loaded this class.

+     *

+     * @param className   the name of the class to instantiate

+     * @param classLoader a <code>ClassLoader</code> to load the class from

+     * @return a new <code>Object</code> that is an instance of the class of

+     *         the given name from the given class loader

+     * @throws ConfigurationError if the class could not be found or

+     *                            instantiated

+     */

+    private static Object newInstance(String className,

+                                      ClassLoader classLoader)

+            throws ConfigurationError {

+        try {

+            if (classLoader != null) {

+                try {

+                    return classLoader.loadClass(className).newInstance();

+                } catch (ClassNotFoundException x) {

+                    // try again

+                }

+            }

+            return Class.forName(className).newInstance();

+        } catch (ClassNotFoundException x) {

+            throw new ConfigurationError(

+                    "Provider " + className + " not found", x);

+        } catch (Exception x) {

+            throw new ConfigurationError(

+                    "Provider " + className + " could not be instantiated: " + x,

+                    x);

+        }

+    }

+

+    /**

+     * Finds the implementation Class object in the specified order.  Main

+     * entry point.

+     *

+     * @param factoryId         Name of the factory to find, same as

+     *                          a property name

+     * @param fallbackClassName Implementation class name, if nothing else

+     *                          is found.  Use null to mean no fallback.

+     * @return Class object of factory, never null

+     * @throws FactoryFinder.ConfigurationError

+     *          Package private so this code can be shared.

+     */

+    static Object find(String factoryId, String fallbackClassName)

+            throws ConfigurationError {

+        debugPrintln("debug is on");

+

+        ClassLoader classLoader = findClassLoader();

+

+        // Use the system property first

+        try {

+            String systemProp =

+                    System.getProperty(factoryId);

+            if (systemProp != null) {

+                debugPrintln("found system property " + systemProp);

+                return newInstance(systemProp, classLoader);

+            }

+        } catch (SecurityException se) {

+        }

+

+        // try to read from $java.home/lib/xml.properties

+        try {

+            String javah = System.getProperty("java.home");

+            String configFile = javah + File.separator +

+                    "lib" + File.separator + "jaxrpc.properties";

+            File f = new File(configFile);

+            if (f.exists()) {

+                Properties props = new Properties();

+                props.load(new FileInputStream(f));

+                String factoryClassName = props.getProperty(factoryId);

+                debugPrintln("found java.home property " + factoryClassName);

+                return newInstance(factoryClassName, classLoader);

+            }

+        } catch (Exception ex) {

+            if (debug) ex.printStackTrace();

+        }

+

+        String serviceId = "META-INF/services/" + factoryId;

+        // try to find services in CLASSPATH

+        try {

+            InputStream is = null;

+            if (classLoader == null) {

+                is = ClassLoader.getSystemResourceAsStream(serviceId);

+            } else {

+                is = classLoader.getResourceAsStream(serviceId);

+            }

+

+            if (is != null) {

+                debugPrintln("found " + serviceId);

+

+                // Read the service provider name in UTF-8 as specified in

+                // the jar spec.  Unfortunately this fails in Microsoft

+                // VJ++, which does not implement the UTF-8

+                // encoding. Theoretically, we should simply let it fail in

+                // that case, since the JVM is obviously broken if it

+                // doesn't support such a basic standard.  But since there

+                // are still some users attempting to use VJ++ for

+                // development, we have dropped in a fallback which makes a

+                // second attempt using the platform's default encoding. In

+                // VJ++ this is apparently ASCII, which is a subset of

+                // UTF-8... and since the strings we'll be reading here are

+                // also primarily limited to the 7-bit ASCII range (at

+                // least, in English versions), this should work well

+                // enough to keep us on the air until we're ready to

+                // officially decommit from VJ++. [Edited comment from

+                // jkesselm]

+                BufferedReader rd;

+                try {

+                    rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));

+                } catch (java.io.UnsupportedEncodingException e) {

+                    rd = new BufferedReader(new InputStreamReader(is));

+                }

+

+                String factoryClassName = rd.readLine();

+                rd.close();

+

+                if (factoryClassName != null &&

+                        ! "".equals(factoryClassName)) {

+                    debugPrintln("loaded from services: " + factoryClassName);

+                    return newInstance(factoryClassName, classLoader);

+                }

+            }

+        } catch (Exception ex) {

+            if (debug) ex.printStackTrace();

+        }

+

+        if (fallbackClassName == null) {

+            throw new ConfigurationError(

+                    "Provider for " + factoryId + " cannot be found", null);

+        }

+

+        debugPrintln("loaded from fallback value: " + fallbackClassName);

+        return newInstance(fallbackClassName, classLoader);

+    }

+

+    static class ConfigurationError extends Error {

+        // fixme: should this be refactored to use the jdk1.4 exception

+        // wrapping?

+

+        private Exception exception;

+

+        /**

+         * Construct a new instance with the specified detail string and

+         * exception.

+         *

+         * @param msg the Message for this error

+         * @param x   an Exception that caused this failure, or null

+         */

+        ConfigurationError(String msg, Exception x) {

+            super(msg);

+            this.exception = x;

+        }

+

+        Exception getException() {

+            return exception;

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/Provider.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/Provider.java
new file mode 100644
index 0000000..4a6cfb7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/Provider.java
@@ -0,0 +1,40 @@
+/*

+* Copyright 2004,2005 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.ws.spi;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.Endpoint;

+import java.net.URL;

+

+public abstract class Provider {

+

+    protected Provider() {

+    }

+

+    public static Provider provider() {

+        return (Provider) FactoryFinder.find("javax.xml.ws.spi.Provider", DEFAULT_JAXWSPROVIDER);

+    }

+

+    public abstract ServiceDelegate createServiceDelegate(URL url, QName qname, Class class1);

+

+    public abstract Endpoint createEndpoint(String s, Object obj);

+

+    public abstract Endpoint createAndPublishEndpoint(String s, Object obj);

+

+    public static final String JAXWSPROVIDER_PROPERTY = "javax.xml.ws.spi.Provider";

+    private static final String DEFAULT_JAXWSPROVIDER = "org.apache.axis2.jaxws.spi.Provider";

+}

diff --git a/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.java b/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.java
new file mode 100644
index 0000000..2e1f44c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.java
@@ -0,0 +1,55 @@
+/*

+* Copyright 2004,2005 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.ws.spi;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.handler.HandlerResolver;

+import java.net.URI;

+import java.net.URL;

+import java.util.Iterator;

+import java.util.concurrent.Executor;

+

+public abstract class ServiceDelegate {

+

+    protected ServiceDelegate() {

+    }

+

+    public abstract <T> T getPort(QName qname, Class<T> class1);

+

+    public abstract <T> T getPort(Class<T> class1);

+

+    public abstract void addPort(QName qname, String bindingId, String s);

+

+    public abstract <T>Dispatch<T> createDispatch(QName qname, Class<T> class1, javax.xml.ws.Service.Mode mode);

+

+    public abstract Dispatch<java.lang.Object> createDispatch(QName qname, JAXBContext jaxbcontext, javax.xml.ws.Service.Mode mode);

+

+    public abstract QName getServiceName();

+

+    public abstract Iterator<javax.xml.namespace.QName> getPorts();

+

+    public abstract URL getWSDLDocumentLocation();

+

+    public abstract HandlerResolver getHandlerResolver();

+

+    public abstract void setHandlerResolver(HandlerResolver handlerresolver);

+

+    public abstract Executor getExecutor();

+

+    public abstract void setExecutor(Executor executor);

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/AxisCallback.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/AxisCallback.java
new file mode 100644
index 0000000..37242db
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/AxisCallback.java
@@ -0,0 +1,100 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.client.async.AsyncResult;

+import org.apache.axis2.client.async.Callback;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.apache.axis2.jaxws.util.Constants;

+import org.apache.axis2.util.ThreadContextMigratorUtil;

+

+/**

+ * The AxisCallback is the touch point for asynchronous invocations 

+ * between the Axis2 runtime and the JAX-WS implementation.  This

+ * object will be handed to the ServiceClient/OperationClient APIs

+ * to use in processing the async response.

+ * 

+ * The AxisCallback is responsible for taking the incoming message and

+ * MessageContext from Axis2 and turning that into a MessageContext

+ * that can be used by the JAX-WS implementation.

+ */

+public class AxisCallback extends Callback {

+

+    private MessageContext responseMsgCtx;

+    private Exception e = null;

+    

+    /**

+     * This method will be called when the Axis2 implementation is

+     * ready to send the async response back to the client.

+     */

+    public void onComplete(AsyncResult result) {

+        org.apache.axis2.context.MessageContext axisMsgCtx = 

+            result.getResponseMessageContext();

+        responseMsgCtx = new MessageContext(axisMsgCtx);

+        

+        try {

+            //REVIEW: Are we on the final thread of execution here or does this get handed off to the executor?

+            // TODO: Remove workaround for WS-Addressing running in thin client (non-server) environment

+            try {

+                ThreadContextMigratorUtil.performMigrationToThread(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisMsgCtx);

+            }

+            catch (Throwable t) {

+                // TODO: Remove writes to stdout

+                System.out.println("JAX-WS AxisCallback caught throwable from ThreadContextMigratorUtil " + t);

+                System.out.println("...caused by " + t.getCause());

+                t.printStackTrace();

+            }

+          

+            OMElement responseEnv = result.getResponseEnvelope();

+            

+            MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);

+            Message msg = mf.createFrom(responseEnv);

+            

+            responseMsgCtx.setMessage(msg);

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+    }

+

+    // FIXME: Figure out what needs to be done when this method is called

+    // and we've received an error from Axis2.

+    public void onError(Exception e){

+    	//I will set the exception variable here that we can read after the operaiton client is execution in InvocationController.

+    	//The idea is to read the exception after OperationClient execution and if there is an exception do not run the executor. 

+    	//Insterad reaturn the error to client. 

+    	this.e =e;

+    }

+    

+    /**

+     * Returns the <@link org.apache.axis2.jaxws.core.MessageContext> that was

+     * created for the response message.

+     * @return - a MessageContext with the response contents

+     */

+    public MessageContext getResponseMessageContext() {

+        return responseMsgCtx;

+    }

+    

+    public Exception getException(){

+    	return e;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/AxisController.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/AxisController.java
new file mode 100644
index 0000000..582b0da
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/AxisController.java
@@ -0,0 +1,375 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.net.URL;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.concurrent.ExecutionException;

+import java.util.concurrent.ExecutorService;

+import java.util.concurrent.Future;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPHeader;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.context.ServiceGroupContext;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.jaxws.handler.PortData;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.impl.AsyncListenerWrapper;

+import org.apache.axis2.jaxws.impl.AsyncListener;

+import org.apache.axis2.jaxws.param.JAXBParameter;

+import org.apache.axis2.jaxws.param.Parameter;

+import org.apache.axis2.jaxws.param.ParameterFactory;

+import org.apache.axis2.jaxws.param.ParameterUtils;

+import org.apache.axis2.jaxws.util.Constants;

+import org.apache.axis2.jaxws.util.WSDLWrapper;

+

+

+public class AxisController {

+    private AxisService axisService = null;

+//  TODO: This configContext will come from websphere deployment code later

+    private ConfigurationContext configContext = null; 

+    private ServiceClient serviceClient = null;

+    private ServiceContext serviceContext = null;

+    private JAXWSClientContext clientContext = null;

+    private ServiceGroupContext groupContext = null;

+    private EndpointReference myEPR;

+    

+    public AxisService getAxisService() {

+        return axisService;

+    }

+    public void setAxisService(AxisService axisService) {

+        this.axisService = axisService;

+    }

+    public ConfigurationContext getConfigContext() {

+        return configContext;

+    }

+    public void setConfigContext(ConfigurationContext configContext) {

+        this.configContext = configContext;

+    }

+    public ServiceClient getServiceClient() {

+        return serviceClient;

+    }

+    public void setServiceClient(ServiceClient serviceClient) {

+        this.serviceClient = serviceClient;

+    }

+    public ServiceContext getServiceContext() {

+        return serviceContext;

+    }

+    public void setServiceContext(ServiceContext serviceContext) {

+        this.serviceContext = serviceContext;

+    }

+    public JAXWSClientContext getClientContext() {

+        return clientContext;

+    }

+    public void setClientContext(JAXWSClientContext clientContext) {

+        this.clientContext = clientContext;

+    }

+    public ServiceGroupContext getGroupContext() {

+        return groupContext;

+    }

+    public void setGroupContext(ServiceGroupContext groupContext) {

+        this.groupContext = groupContext;

+    }

+    public PortData getPortInfo(){

+        return clientContext.getPort();

+    }

+    public QName getServiceName(){

+        return getPortInfo().getServiceName();

+    }

+    public QName getPortName(){

+        return getPortInfo().getPortName();

+    }

+    public String getEndpointAddress(){

+        return getPortInfo().getEndpointAddress();

+    }

+    public String getBindingId(){

+        return getPortInfo().getBindingID();

+    }

+    public WSDLWrapper getWSDLContext(){

+        return clientContext.getWsdlContext();

+    }

+    public ExecutorService getExecutor() {

+        return clientContext.getExecutor();

+    }

+    public Mode getServiceMode() {

+        return (Mode) clientContext.getServiceMode();

+    }

+    public URL getWSDLLocation(){

+        return clientContext.getWSDLLocation(); 

+    }

+

+    public Object invoke(Parameter param, Map requestContext) throws WebServiceException {

+        setupProperties(requestContext);

+        

+        try{

+            //TODO: This is not the correct way to setup the JAXBContext

+            if (clientContext.getJAXBContext() != null) {

+                JAXBParameter p = (JAXBParameter) param;

+                p.setJAXBContext(clientContext.getJAXBContext());

+            }

+            

+            serviceClient.getOptions().setTo(new org.apache.axis2.addressing.EndpointReference(getEndpointURL(requestContext)));

+            String soapAction = getSOAPAction(requestContext);

+            if (soapAction != null) {

+                serviceClient.getOptions().setAction(soapAction);    

+            }

+            else {

+                //TODO: This should be an addressing exception on the client side

+                serviceClient.getOptions().setAction("none");

+            }

+            

+            //Create the Parameter wrapper for the response based on what the input 

+            //type was.  If it was a JAXBParameter, then set the JAXBContext on it as well

+            Parameter response = ParameterFactory.createParameter(param.getValue().getClass());

+            if (param instanceof JAXBParameter) {

+                JAXBParameter p = (JAXBParameter) response;

+                p.setJAXBContext(clientContext.getJAXBContext());

+            }

+            OMElement axisResponse = null;

+            

+            //TODO: Team needs to decide if we are going to use ServiceClient api or go to AxisEngine api directly. ServiceClient requires that we send a OMElement

+            //and it creates a SOAPEnvelop by reading the headers that dispatch sets in ServiceClient. This is not a good way for message modeas we will be 

+            //manuplating client message first to read all the headers and then read the body. we add the headers in ServiceClient then create OMElement from body

+            //and send then OMElement in SendReceive operation, which then is converted again to an envelope and header headers are added to it by ServiceClient 

+            //before sending it to axis enging. 

+            axisResponse = serviceClient.sendReceive(ServiceClient.ANON_OUT_IN_OP, toOM(param));

+

+            //TODO: If ServiceClient can return the actual sopaEnvelope from MessageContext we can use the message mode and param this way.

+            //response.fromEnvelope(mode, axisResponse);

+            //return response.getValue();

+            return buildResponse(axisResponse, response).getValue();

+        }catch(AxisFault e){

+        	// TODO Add Fault Processing

+        	throw ExceptionFactory.makeWebServiceException(Messages.getMessage("faultProcessingNotSupported", e.getMessage()), e);

+            

+        }       

+    }

+    

+    public void invokeOneWay(Parameter param, Map requestContext) throws WebServiceException{

+        setupProperties(requestContext);

+        

+        try{

+            //TODO: This is not the correct way to setup the JAXBContext

+            if (clientContext.getJAXBContext() != null) {

+                JAXBParameter p = (JAXBParameter) param;

+                p.setJAXBContext(clientContext.getJAXBContext());

+            }

+            

+            serviceClient.getOptions().setTo(new org.apache.axis2.addressing.EndpointReference(getEndpointURL(requestContext)));

+            String soapAction = getSOAPAction(requestContext);

+            if (soapAction != null) {

+                serviceClient.getOptions().setAction(soapAction);    

+            }

+            else {

+                serviceClient.getOptions().setAction("none");

+            }

+            

+            serviceClient.fireAndForget(ServiceClient.ANON_OUT_ONLY_OP, toOM(param));

+        } catch(AxisFault e) {

+        	// TODO Add Fault Processing

+        	throw ExceptionFactory.makeWebServiceException(Messages.getMessage("faultProcessingNotSupported", e.getMessage()), e);

+

+        }

+    }

+    

+    public Future<?> invokeAsync(Parameter param, AsyncHandler asynchandler, Map requestContext) throws WebServiceException{

+        setupProperties(requestContext);

+        

+        try{

+            //TODO: This is not the correct way to setup the JAXBContext

+            if (clientContext.getJAXBContext() != null) {

+                JAXBParameter p = (JAXBParameter) param;

+                p.setJAXBContext(clientContext.getJAXBContext());

+            }

+            

+            serviceClient.getOptions().setTo(new EndpointReference(getEndpointURL(requestContext)));

+            serviceClient.getOptions().setReplyTo(getMyEPR());

+            

+            //TODO: This is a hack.  Need a better way to determine the default wsa:Action if

+            //a SOAPAction header does not exist.

+            String soapAction = getSOAPAction(requestContext);

+            if (soapAction != null) {

+                serviceClient.getOptions().setAction(soapAction);    

+            }

+            else {

+                serviceClient.getOptions().setAction("none");

+            }

+            

+            AxisCallback callback = new AxisCallback();

+            Boolean useAsyncMep = (Boolean) requestContext.get(Constants.USE_ASYNC_MEP);

+

+            if((useAsyncMep != null && useAsyncMep.booleanValue()) 

+                    || serviceClient.getOptions().isUseSeparateListener()) {

+                serviceClient.getOptions().setUseSeparateListener(true);

+                serviceClient.getOptions().setTransportInProtocol("http");

+            }

+

+            serviceClient.sendReceiveNonBlocking(ServiceClient.ANON_OUT_IN_OP, 

+                    toOM(param), callback);

+            

+            //Create the Parameter wrapper for the response based on what the input 

+            //type was.  If it was a JAXBParameter, then set the JAXBContext on it as well

+            Parameter responseParam = ParameterFactory.createParameter(param.getValue().getClass());

+            if (param instanceof JAXBParameter) {

+                JAXBParameter p = (JAXBParameter) responseParam;

+                p.setJAXBContext(clientContext.getJAXBContext());

+            }

+            

+            AsyncListener asyncProcessor = new AsyncListener(callback);

+            asyncProcessor.setMode((Mode) clientContext.getServiceMode());

+            //asyncProcessor.setParameter(responseParam);

+            

+            AsyncListenerWrapper<?> response = new AsyncListenerWrapper<Object>(asyncProcessor);

+            if(asynchandler !=null){

+                response.setAsyncHandler(asynchandler);

+            }

+            

+            try {

+                getExecutor().submit(response).get();

+            } catch (InterruptedException e) {

+                e.printStackTrace();

+                throw ExceptionFactory.makeWebServiceException(e);

+            } catch (ExecutionException e) {

+                e.printStackTrace();

+                throw ExceptionFactory.makeWebServiceException(e);

+            }

+            

+            //TODO: Need to figure out who/when the Listener should be shutdown

+            //Do we do it after this request?  Or, can we ask the listener to check

+            //itself to see if any other responses are outstanding.

+            return response;

+        }catch(AxisFault e){

+        	// TODO Add Fault Processing

+        	throw ExceptionFactory.makeWebServiceException(Messages.getMessage("faultProcessingNotSupported", e.getMessage()), e);

+        }

+    }

+    

+    public Response invokeAsync(Parameter param, Map requestContext)throws WebServiceException{

+    	AsyncListenerWrapper<Object>  response= (AsyncListenerWrapper<Object>)invokeAsync(param, null, requestContext);

+        return response;

+    }

+    

+    private String getEndpointURL(Map requestContext){

+        return (String) requestContext.get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY);

+    }

+    

+    private String getSOAPAction(Map requestContext){

+        Boolean useSoapAction = (Boolean)requestContext.get(BindingProvider.SOAPACTION_USE_PROPERTY);

+        if(useSoapAction!=null && useSoapAction.booleanValue()){

+            return (String)requestContext.get(BindingProvider.SOAPACTION_URI_PROPERTY);

+        }

+        return null;

+    }

+    

+    private OMElement toOM(Parameter param){

+        /*TODO: This is a a hack.... I am getting the Header of the message and setting serviceClent header, then 

+        * extract body of message as OM and ServiceCleint will create the envelope. 

+        * I am doing this because ServiceClient wants to form the envelope and send it to AxisEngine.

+        * I would like to return param.toEnvelope() but ServiceClient will try to build envelope on top of envelope.

+        * Let just go directly to AxisEngine forget about ServiceClient... can I?

+        */

+        SOAPEnvelope env = ParameterUtils.toEnvelope((Mode) clientContext.getServiceMode(), 

+                serviceClient.getOptions().getSoapVersionURI(),

+                param);

+        SOAPBody body= env.getBody();

+        SOAPHeader soapHeader = env.getHeader();

+        addHeadersToServiceClient(soapHeader);

+        return body.getFirstElement();

+    }

+    

+    private void addHeadersToServiceClient(SOAPHeader soapHeader){

+        if(soapHeader!=null){

+            for(Iterator headers = soapHeader.getChildElements(); headers.hasNext();){

+                OMElement header = (OMElement)headers.next();

+                serviceClient.addHeader(header);

+            }

+        }

+    }

+    

+    private Parameter buildResponse(OMElement element, Parameter xmlResponse){

+        //Create empty SoapResponse first 

+        Parameter soapResponse = xmlResponse;

+        

+        /* get xmlResponse param from ServiceClient OM response, By the way ServiceClient always retuns an 

+         * OMElement xml string not Soap Env or Body.

+         * It does something like msgCtx.getEnvelope().getBody.getChild() --> i.e OMElement under the body.

+         * So we now have to go thru the pain of recreating the envelope. This is a performance issue...

+        */

+        xmlResponse.fromOM(element);

+        /*I will convert param toEnvelope since ServiceClient always send xml string.

+         * toEnvelope() in Parameter is coded just to handle this.

+         */

+        SOAPEnvelope env =xmlResponse.toEnvelope(null,serviceClient.getOptions().getSoapVersionURI());

+        

+        //TODO:(NLG) Need to figure out why we have to cast to (Mode) here. 

+        soapResponse.fromEnvelope((Mode) clientContext.getServiceMode(), env);

+        

+        return soapResponse;

+    }

+

+    /*

+     * Returns the EPR that should be used for in-bound async responses

+     */

+    private EndpointReference getMyEPR() {

+        if (myEPR != null) {        

+            return myEPR;

+        }

+        else {

+            try {

+                //TODO:(NLG) This should not be hard coded to HTTP and should allow

+                //for other transports to be used.

+                myEPR = serviceClient.getMyEPR("http");

+            } catch (AxisFault e) {

+                e.printStackTrace();

+            }

+            return myEPR;

+        }

+    }

+    

+    

+    /*

+     * TODO: This is a first pass at filtering the properties that are set on the 

+     * RequestContext.  Right now it's called during the invoke, but needs to be 

+     * moved over to when the property is set.  This should not be in the path

+     * of performance.

+     */

+    private void setupProperties(Map<String, Object> requestCtx) {

+        for (Iterator<String> it = requestCtx.keySet().iterator(); it.hasNext(); ) {

+            String key = it.next();

+            Object value = requestCtx.get(key);

+            

+            serviceClient.getOptions().setProperty(key, value);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/BindingProvider.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/BindingProvider.java
new file mode 100644
index 0000000..b326e9f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/BindingProvider.java
@@ -0,0 +1,71 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.util.Hashtable;

+import java.util.Map;

+

+import javax.xml.ws.Binding;

+

+import org.apache.axis2.jaxws.binding.SOAPBinding;

+

+public class BindingProvider implements javax.xml.ws.BindingProvider {

+

+	protected Map<String, Object> requestContext;

+    protected Map<String, Object> responseContext;

+    protected Binding binding;

+    

+    public BindingProvider() {

+        requestContext = new Hashtable<String,Object>();

+        responseContext = new Hashtable<String,Object>();

+        

+        //Setting standard property defaults for request context

+        requestContext.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, new Boolean(false));

+        requestContext.put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(false));

+        requestContext.put(BindingProvider.SOAPACTION_URI_PROPERTY, "");

+        

+        //The default Binding is the SOAPBinding

+        binding = new SOAPBinding();

+    }

+    

+    public Binding getBinding() {

+        return binding;

+    }

+

+    public Map<String, Object> getRequestContext() {

+        return requestContext;

+    }

+

+    public Map<String, Object> getResponseContext() {

+        return responseContext;

+    }

+    

+    protected void initRequestContext(String endPointAddress, String soapAddress, String soapAction){

+    	if (endPointAddress != null && !"".equals(endPointAddress)) {

+			requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,

+					endPointAddress);

+		} else if (soapAddress != null && !"".equals(soapAddress)) {

+			requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,

+					soapAddress);

+		}

+		if (soapAction != null && !"".equals(soapAction)) {

+			getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY,

+					soapAction);

+		}

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/ClientConfigurationFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/ClientConfigurationFactory.java
new file mode 100644
index 0000000..a9275e0
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/ClientConfigurationFactory.java
@@ -0,0 +1,72 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.deployment.DeploymentException;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.jaxws.util.Constants;

+

+

+/**

+ * This class serves as a factory for ConfigurationContexts suitable in the client environment.  

+ */

+public class ClientConfigurationFactory {

+    

+    private static ClientConfigurationFactory instance = new ClientConfigurationFactory();

+    

+    protected ClientConfigurationFactory(){

+    }

+

+    /**

+     * Returns a ClientConfigurationFactory object.

+     */

+    public static ClientConfigurationFactory newInstance() {

+        return instance;

+    }

+

+    /**

+     * Loads up a ConfigurationContext object using the configuration builder.

+     * @return a ConfigurationContext object that is suitable for the client environment

+     */

+    public synchronized ConfigurationContext getClientConfigurationContext() {

+        ConfigurationContext configContext = null;

+        //TODO: Add logging 

+        String repoPath = System.getProperty(Constants.AXIS2_REPO_PATH);

+        String axisConfigPath = System.getProperty(Constants.AXIS2_CONFIG_PATH);

+        try {

+            configContext = ConfigurationContextFactory

+                    .createConfigurationContextFromFileSystem(repoPath, axisConfigPath);

+        } catch (AxisFault e) {

+            // TODO: Add RAS logging and processing

+            e.printStackTrace();

+        }

+        return configContext;

+    }

+    

+    /**

+     * Perform any final client-specific configuration on a newly created AxisService.

+     * 

+     * @param service A newly created AxisService on which to perform any final client-related configuration.

+     * @throws DeploymentException

+     * @throws Exception

+     */

+    public synchronized void completeAxis2Configuration(AxisService service) throws DeploymentException, Exception {

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/Dispatch.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/Dispatch.java
new file mode 100644
index 0000000..67ac3ce
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/Dispatch.java
@@ -0,0 +1,249 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.util.concurrent.Future;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.jaxws.core.InvocationContext;

+import org.apache.axis2.jaxws.core.InvocationContextFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.core.controller.AxisInvocationController;

+import org.apache.axis2.jaxws.core.controller.InvocationController;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.param.JAXBParameter;

+import org.apache.axis2.jaxws.param.Parameter;

+import org.apache.axis2.jaxws.param.ParameterFactory;

+import org.apache.axis2.jaxws.param.ParameterUtils;

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+import org.apache.axis2.jaxws.util.Constants;

+import org.apache.axis2.jaxws.util.WSDLWrapper;

+

+/**

+ * Dispatch is an implementation of the {@link javax.xml.ws.Dispatch} interface.

+ * 

+ * The Dispatch is a client that can be used to invoke remote services that

+ * requires the programmer to operate at the raw XML level.  The XML payloads

+ * can be in two different formats, or Modes ({@link javax.xml.ws.Service.Mode}).

+ * 

+ * @param <T>

+ */

+public class Dispatch<T> extends BindingProvider implements javax.xml.ws.Dispatch {

+    

+    //FIXME: Remove the AxisController completely and replace with InvocationController

+    private AxisController axisController = null;

+    

+    private InvocationController ic;

+    private ServiceDelegate serviceDelegate;

+    private Mode mode;

+    private JAXBContext jaxbContext;

+   

+    public Dispatch() {

+        super();

+    }

+    

+    public Dispatch(AxisController axisController){

+        super();

+        

+        //FIXME: Remove this when we remove the AxisController

+        this.axisController = axisController;

+        

+        ic = new AxisInvocationController();

+        setRequestContext();

+    }

+    

+    /**

+     * Sets the back pointer to the ServiceDelegate instance that created

+     * this Dispatch.

+     * 

+     * @param svcDlg

+     */

+    public void setServiceDelegate(ServiceDelegate svcDlg) {

+        serviceDelegate = svcDlg;

+    }

+    

+    /**

+     * Returns the back pointer to the Service Delegate instance that created

+     * this Dispatch.

+     * 

+     * @return

+     */

+    public ServiceDelegate getServiceDescription() {

+        return serviceDelegate;

+    }

+    

+    public Mode getMode() {

+        return mode;

+    }

+    

+    public void setMode(Mode m) {

+        mode = m;

+    }

+    

+    public JAXBContext getJAXBContext() {

+        return jaxbContext;

+    }

+    

+    public void setJAXBContext(JAXBContext jbc) {

+        jaxbContext = jbc;

+    }

+    

+    public Object invoke(Object obj) throws WebServiceException {

+        /*

+        

+        // Create the InvocationContext instance for this request/response flow.

+        InvocationContext invocationContext = InvocationContextFactory.createInvocationContext(null);

+        invocationContext.setServiceClient(axisController.getServiceClient());

+        

+        // Create the MessageContext to hold the actual request message and its

+        // associated properties

+        MessageContext requestMsgCtx = new MessageContext();

+        invocationContext.setRequestMessageContext(requestMsgCtx);

+        

+        // FIXME: This is where the Message Model will be integrated instead of 

+        // the ParameterFactory/Parameter APIs.

+        Parameter param = ParameterFactory.createParameter(obj);

+        if (param instanceof JAXBParameter) {

+            JAXBParameter p = (JAXBParameter) param;

+            p.setJAXBContext(jaxbContext);

+        }

+        

+        OMElement reqEnvelope = toOM(param, axisController.getServiceClient().getOptions().getSoapVersionURI());

+        requestMsgCtx.setMessageAsOM(reqEnvelope);

+        

+        // Copy the properties from the request context into the MessageContext

+        requestMsgCtx.getProperties().putAll(requestContext);

+        

+        // Send the request using the InvocationController

+        ic.invoke(invocationContext);

+        

+        MessageContext responseMsgCtx = invocationContext.getResponseMessageContext();

+        

+        //FIXME: This is temporary until more of the Message model is available

+        OMElement rspEnvelope = responseMsgCtx.getMessageAsOM();

+        Parameter rspParam;

+        // Create a new Parameter class for the output based on in the 

+        // input Parameter type.

+        try {

+            rspParam = param.getClass().newInstance();

+            if (rspParam instanceof JAXBParameter) {

+                JAXBParameter p = (JAXBParameter) rspParam;

+                p.setJAXBContext(jaxbContext);

+            }

+        } catch (Exception e) {

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+        

+        rspParam = fromOM(rspEnvelope, rspParam, axisController.getServiceClient().getOptions().getSoapVersionURI());

+        

+        return rspParam.getValue();

+        

+        */

+        

+        return null;

+    }

+    

+   public void invokeOneWay(Object obj) throws WebServiceException{

+       if(obj == null){

+           throw ExceptionFactory.makeWebServiceException(Messages.getMessage("dispatchInvokeErr1"));

+        }

+        try{

+            Parameter param = ParameterFactory.createParameter(obj);

+            axisController.invokeOneWay(param, requestContext);

+        }catch(Exception e){

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+    }

+   

+    public Future<?> invokeAsync(Object obj, AsyncHandler asynchandler) throws WebServiceException {

+       if(obj == null){

+    	   throw ExceptionFactory.makeWebServiceException(Messages.getMessage("dispatchInvokeErr2"));

+       }

+       try{

+           Parameter param = ParameterFactory.createParameter(obj);

+           return axisController.invokeAsync(param, asynchandler, requestContext);

+       } catch(Exception e) {

+           throw ExceptionFactory.makeWebServiceException(e);

+       }

+    }

+  

+    public Response invokeAsync(Object obj)throws WebServiceException{

+        if(obj == null){

+        	throw ExceptionFactory.makeWebServiceException(Messages.getMessage("dispatchInvokeErr2"));

+        }

+        try{

+            Parameter param = ParameterFactory.createParameter(obj);

+            return axisController.invokeAsync(param, requestContext);

+        }catch(Exception e){

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+    }    

+

+    protected void setRequestContext(){

+        String endPointAddress = axisController.getEndpointAddress();

+        WSDLWrapper wsdl =  axisController.getWSDLContext();

+        QName serviceName = axisController.getServiceName();

+        QName portName = axisController.getPortName();

+        if(endPointAddress != null && !"".equals(endPointAddress)){

+            getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endPointAddress);

+        }else if(wsdl != null){

+            String soapAddress = wsdl.getSOAPAddress(serviceName, portName);

+            getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, soapAddress);

+        }

+        

+        if(wsdl != null){

+            String soapAction = wsdl.getSOAPAction(serviceName, portName);

+            getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY, soapAction);

+        }

+    }

+    

+    /* 

+     * FIXME: This is temporary until more of the Message Model is available.

+     */

+    private OMElement toOM(Parameter param, String soapVersion){

+        SOAPEnvelope env = ParameterUtils.toEnvelope(mode, soapVersion, param);

+        System.out.println(">> Generated envelope [" + env.toString() + "]");

+        

+        SOAPBody body = env.getBody();

+        //SOAPHeader soapHeader = env.getHeader();

+        //addHeadersToServiceClient(soapHeader);

+        return body.getFirstElement();

+    }

+    

+    /*

+     * FIXME: This is temporary until more of the Message Model is available. 

+     */

+    private Parameter fromOM(OMElement element, Parameter response, String soapVersion){

+        response.fromOM(element);

+

+        // Convert param toEnvelope since ServiceClient always send xml string.

+        // toEnvelope() in Parameter is coded just to handle this.

+        SOAPEnvelope env = response.toEnvelope(null, soapVersion);

+        

+        response.fromEnvelope(mode, env);

+        return response;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/ExceptionFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/ExceptionFactory.java
new file mode 100644
index 0000000..cb16a0d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/ExceptionFactory.java
@@ -0,0 +1,345 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.lang.reflect.InvocationTargetException;

+

+import javax.xml.ws.ProtocolException;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.http.HTTPException;

+import javax.xml.ws.soap.SOAPFaultException;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.MessageInternalException;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+  * ExceptionFactory is used to create exceptions within the JAX-WS implementation.

+  * There are several reasons for using a factory to create exceptions.

+  *    1. We can intercept all exception creation and add the appropriate logging/serviceability.

+  *    2. Exceptions are chained.  ExceptionFactory can lengthen or reduce the cause chains as

+  *       necessary to support the JAX-WS programming model.

+  *    3. Prevents construction of the same exception.  Uses similar principles as AxisFault.makeException.

+  *   

+  * Example Usage:

+  *          // Example usage

+  *          

+  *          public fooMethod() throws WebServiceException {

+  *             try{

+  *                ...

+  *             }

+  *             catch(Exception e){

+  *                throw ExceptionFactory.makeWebServiceException(e);

+  *             }

+  *          }

+  *     

+  *    

+  */

+public class ExceptionFactory {

+	

+	 protected static Log log =

+	        LogFactory.getLog(ExceptionFactory.class.getName());

+	

+	/**

+	 * Private Constructor

+	 * All methods are static.  The private constructor prevents instantiation.

+	 */

+	private ExceptionFactory() {

+	}

+	

+	/**

+	 * Create a WebServiceException using the information from a given Throwable instance

+	 * and message

+	 * @param message

+	 * @param throwable

+	 * @return WebServiceException

+	 */

+	public static WebServiceException makeWebServiceException(String message, Throwable throwable) {

+		try {

+			// See if there is already a WebServiceException (Note that the returned exception could be a ProtocolException or

+			// other kind of exception)

+			WebServiceException e = (WebServiceException) findException(throwable, WebServiceException.class);

+			if (e == null) {

+				e = createWebServiceException(message, throwable);

+			}

+			return e;

+		} catch (RuntimeException re) {

+			// TODO 

+			// This is not a good situation, an exception occurred while building the exception.

+			// This should never occur!  For now log the problem and rethrow...we may revisit this later

+			if (log.isDebugEnabled()) {

+				log.debug(Messages.getMessage("exceptionDuringExceptionFlow"), re);

+			}

+			throw re;

+		}

+	}

+	

+	/**

+	 * Create a ProtocolException using the information from a Throwable and message

+	 * @param message

+	 * @param throwable

+	 * @return ProtocolException

+	 */

+	public static ProtocolException makeProtocolException(String message, Throwable throwable) {

+		try {

+			// See if there is already a ProtocolException 

+			ProtocolException e = (ProtocolException) findException(throwable, ProtocolException.class);

+			if (e == null) {

+				e = createProtocolException(message, throwable);

+			}

+			return e;

+		} catch (RuntimeException re) {

+			// TODO 

+			// This is not a good situation, an exception occurred while building the exception.

+			// This should never occur!  For now log the problem and rethrow...we may revisit this later

+			if (log.isDebugEnabled()) {

+				log.debug(Messages.getMessage("exceptionDuringExceptionFlow"), re);

+			}

+			throw re;

+		}

+	}

+	

+	/**

+	 * Create a MessageException using the information from a Throwable and message

+	 * @param message

+	 * @param throwable

+	 * @return MessageException

+	 */

+	public static MessageException makeMessageException(String message, Throwable throwable) {

+		try {

+			// See if there is already a MessgeException 

+			MessageException e = (MessageException) findException(throwable, MessageException.class);

+			if (e == null) {

+				e = createMessageException(message, throwable);

+			}

+			return e;

+		} catch (RuntimeException re) {

+			// TODO 

+			// This is not a good situation, an exception occurred while building the exception.

+			// This should never occur!  For now log the problem and rethrow...we may revisit this later

+			if (log.isDebugEnabled()) {

+				log.debug(Messages.getMessage("exceptionDuringExceptionFlow"), re);

+			}

+			throw re;

+		}

+	}

+	

+	/**

+	 * Create a MessageInternalException using the information from a Throwable and message

+	 * @param message

+	 * @param throwable

+	 * @return MessageInternalException

+	 */

+	public static MessageInternalException makeMessageInternalException(String message, Throwable throwable) {

+		try {

+			// See if there is already a HTTPException 

+			MessageInternalException e = (MessageInternalException) findException(throwable, MessageInternalException.class);

+			if (e == null) {

+				e = createMessageInternalException(message, throwable);

+			}

+			return e;

+		} catch (RuntimeException re) {

+			// TODO 

+			// This is not a good situation, an exception occurred while building the exception.

+			// This should never occur!  For now log the problem and rethrow...we may revisit this later

+			if (log.isDebugEnabled()) {

+				log.debug(Messages.getMessage("exceptionDuringExceptionFlow"), re);

+			}

+			throw re;

+		}

+	}

+	

+	/**

+	 * Make a WebServiceException with a given message

+	 * @param message

+	 * @return WebServiceException

+	 */

+	public static WebServiceException makeWebServiceException(String message) {

+		return makeWebServiceException(message, null);  

+	}

+	

+	/**

+	 * Create a WebServiceException using the information from a given Throwable instance

+	 * @param throwable

+	 * @return WebServiceException

+	 */

+	public static WebServiceException makeWebServiceException(Throwable throwable){

+		return makeWebServiceException(null, throwable);

+	}

+	

+	/**

+	 * Create a MessageException using the information from a given Throwable instance

+	 * @param throwable

+	 * @return MessageException

+	 */

+	public static MessageException makeMessageException(Throwable throwable){

+		return makeMessageException(null, throwable);

+	}

+	

+	/**

+	 * Make a MessageException with a given message

+	 * @param message

+	 * @return MessageException

+	 */

+	public static MessageException makeMessageException(String message) {

+		return makeMessageException(message, null);  

+	}

+	

+	/**

+	 * Create a WebServiceException

+	 * @param message

+	 * @param t Throwable

+	 * @return WebServiceException

+	 */

+	private static WebServiceException createWebServiceException(String message, Throwable t) {

+		Throwable rootCause = null;

+		if (t != null) {

+			rootCause = getRootCause(t);

+		}

+		WebServiceException e = new WebServiceException(message, t);

+		if (log.isDebugEnabled()) {

+			log.debug("Create Exception:", e);

+		}

+		return e;

+	}

+	

+	/**

+	 * Create a ProtocolException

+	 * @param message

+	 * @param t Throwable

+	 * @return ProtocolException

+	 */

+	private static ProtocolException createProtocolException(String message, Throwable t) {

+		Throwable rootCause = null;

+		if (t != null) {

+			rootCause = getRootCause(t);

+		}

+		ProtocolException e = new ProtocolException(message, t);

+		if (log.isDebugEnabled()) {

+			log.debug("create Exception:", t);

+		}

+		return e;

+	}

+	

+	/**

+	 * Create a MessageException

+	 * @param message

+	 * @param t Throwable

+	 * @return MessageException

+	 */

+	private static MessageException createMessageException(String message, Throwable t) {

+		Throwable rootCause = null;

+		if (t != null) {

+			rootCause = getRootCause(t);

+		}

+		MessageException e = new MessageException(message, t);

+		if (log.isDebugEnabled()) {

+			log.debug("create Exception:", t);

+		}

+		return e;

+	}

+	

+	/**

+	 * Create a MessageInternalException

+	 * @param message

+	 * @param t Throwable

+	 * @return MessageException

+	 */

+	private static MessageInternalException createMessageInternalException(String message, Throwable t) {

+		Throwable rootCause = null;

+		if (t != null) {

+			rootCause = getRootCause(t);

+		}

+		MessageInternalException e = new MessageInternalException(message, t);

+		if (log.isDebugEnabled()) {

+			log.debug("create Exception:", t);

+		}

+		return e;

+	}

+	

+    /**

+     * Return the exception or nested cause that is assignable from the specified class

+     * @param t Throwable

+     * @param cls

+     * @return Exception or null

+     */

+    private static Exception findException(Throwable t, Class cls) {

+    	while(t != null) {

+    		if (cls.isAssignableFrom(t.getClass())) {

+                return (Exception) t;

+    		}

+    		t = getCause(t);

+    	}

+    	return null;

+    }

+    

+    /**

+     * Gets the Throwable cause of the Exception.  Some exceptions

+     * store the cause in a different field, which is why this method

+     * should be used when walking the causes.

+     * @param t Throwable

+     * @return Throwable or null

+     */

+    private static Throwable getCause(Throwable t) {

+    	Throwable cause = null;

+    	

+    	// Look for a specific cause for this kind of exception

+    	if (t instanceof InvocationTargetException) {

+    		cause = ((InvocationTargetException) t).getTargetException();

+    	}

+    	

+    	// If no specific cause, fall back to the general cause.

+    	if (cause == null) {

+    		cause = t.getCause();

+    	}

+    	return null;

+    }

+    

+    /**

+     * This method searches the causes of the specified throwable

+     * until it finds one that is acceptable as a "root" cause. 

+     * 

+     * Example: If t is an AxisFault, the code traverses to the next cause.

+     * 

+     * @param t Throwable

+     * @return Throwable root cause

+     */

+    private static Throwable getRootCause(Throwable t) {

+    	while (t != null) {

+    		Throwable nextCause = null;

+    		if (t instanceof InvocationTargetException ||

+    		    t instanceof AxisFault) {

+    			// Skip over this cause

+    			nextCause = getCause(t);

+    			if (nextCause == null) {

+    				return t;

+    			}

+    			t = nextCause;

+    		} else {

+    			// This is the root cause

+    			return t;

+    		}

+    	}

+    	return t;

+    }

+

+}

+

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/JAXWSClientContext.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/JAXWSClientContext.java
new file mode 100644
index 0000000..e70f23c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/JAXWSClientContext.java
@@ -0,0 +1,85 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.net.URL;

+import java.util.concurrent.Executor;

+import java.util.concurrent.ExecutorService;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axis2.jaxws.description.ServiceDescription;

+import org.apache.axis2.jaxws.handler.PortData;

+import org.apache.axis2.jaxws.util.WSDLWrapper;

+

+

+public class JAXWSClientContext<T> {

+	private PortData port = null;

+	private Mode serviceMode = null;

+	private ExecutorService executor = null;

+    private ServiceDescription serviceDescription;

+	private Class<T> clazz = null; //SEI class for Proxy or Implementation type for Dispatch

+	private JAXBContext jaxbContext = null;

+    

+	public ExecutorService getExecutor() {

+		return executor;

+	}

+	public void setExecutor(Executor executor) {

+		this.executor = (ExecutorService)executor;

+	}

+	public PortData getPort() {

+		return port;

+	}

+	public void setPort(PortData port) {

+		this.port = port;

+	}

+	public Mode getServiceMode() {

+		return serviceMode;

+	}

+	public void setServiceMode(Mode serviceMode) {

+		this.serviceMode = serviceMode;

+	}

+	public ServiceDescription getServiceDescription() {

+        return serviceDescription;

+    }

+    public void setServiceDescription(ServiceDescription serviceDescription) {

+        this.serviceDescription = serviceDescription;

+    }

+    public WSDLWrapper getWsdlContext() {

+		return (serviceDescription != null) ? serviceDescription.getWSDLWrapper() : null;

+	}

+    public URL getWSDLLocation(){

+		return (serviceDescription != null) ? serviceDescription.getWSDLLocation() : null; 	

+	}

+	public Class<T> getClazz() {

+		return clazz;

+	}

+	public void setClazz(Class<T> clazz) {

+		this.clazz = clazz;

+	}

+    

+    public JAXBContext getJAXBContext() {

+        return jaxbContext;

+    }

+    

+    public void setJAXBContext(JAXBContext jbc) {

+        jaxbContext = jbc;

+    }

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/Proxies.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/Proxies.java
new file mode 100644
index 0000000..5d30e2c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/Proxies.java
@@ -0,0 +1,49 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.lang.reflect.InvocationHandler;

+import java.lang.reflect.Method;

+

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.description.AxisService;

+

+public class Proxies extends BindingProvider implements InvocationHandler {

+	private AxisService axisService = null;

+	 private ServiceClient serviceClient = null;

+	 private AxisController router = null;

+	public Proxies(AxisController router){

+		super();

+		this.router = router;

+	}

+

+	public Object invoke(Object proxy, Method method, Object[] args)

+			throws Throwable {

+		// TODO Auto-generated method stub

+		return null;

+	}

+	

+	 public void setAxisService(AxisService svc) {

+	        axisService = svc;

+	    }

+	    

+	    public void setServiceClient(ServiceClient svcClt) {

+	        serviceClient = svcClt;

+	    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/binding/BindingImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/binding/BindingImpl.java
new file mode 100644
index 0000000..0db9cbc
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/binding/BindingImpl.java
@@ -0,0 +1,48 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import javax.xml.ws.Binding;

+import javax.xml.ws.handler.Handler;

+

+

+/**

+ * @author rott

+ * classes that would normally "implement javax.xml.ws.Binding"

+ * should extend this class instead.

+ */

+public class BindingImpl implements Binding {

+

+	// an unsorted list of handlers

+	private List<Handler> handlers;

+

+	public List<Handler> getHandlerChain() {

+		return handlers;

+	}

+

+	public void setHandlerChain(List<Handler> list) {

+		// handlers cannot be null so a client app can request and manipulate it

+		if (list == null)

+			handlers = new ArrayList<Handler>();

+		this.handlers = list;

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/binding/SOAPBinding.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/binding/SOAPBinding.java
new file mode 100644
index 0000000..eba57e1
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/binding/SOAPBinding.java
@@ -0,0 +1,84 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.binding;

+

+import java.net.URI;

+import java.util.Set;

+

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.SOAPFactory;

+

+/**

+ * An implementation of the <link>javax.xml.ws.soap.SOAPBinding</link>

+ * interface.  This is the default binding for JAX-WS, and will exist

+ * for all Dispatch and Dynamic Proxy instances unless the XML/HTTP

+ * Binding is explicitly specificied.

+ */

+public class SOAPBinding extends BindingImpl 

+    implements javax.xml.ws.soap.SOAPBinding {

+

+    private boolean mtomEnabled = false;

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.soap.SOAPBinding#getMessageFactory()

+     */

+    public MessageFactory getMessageFactory() {

+        return null;

+    }

+

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.soap.SOAPBinding#getRoles()

+     */

+    public Set<URI> getRoles() {

+        return null;

+    }

+

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.soap.SOAPBinding#getSOAPFactory()

+     */

+    public SOAPFactory getSOAPFactory() {

+        return null;

+    }

+

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.soap.SOAPBinding#isMTOMEnabled()

+     */

+    public boolean isMTOMEnabled() {

+        return mtomEnabled;

+    }

+

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.soap.SOAPBinding#setMTOMEnabled(boolean)

+     */

+    public void setMTOMEnabled(boolean flag) {

+        mtomEnabled = flag;        

+    }

+

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.soap.SOAPBinding#setRoles(java.util.Set)

+     */

+    public void setRoles(Set<URI> set) {

+        

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/BaseDispatch.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/BaseDispatch.java
new file mode 100644
index 0000000..cd56626
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/BaseDispatch.java
@@ -0,0 +1,318 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client;

+

+import java.util.concurrent.Executor;

+import java.util.concurrent.Future;

+

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.Service.Mode;

+import javax.xml.ws.soap.SOAPBinding;

+

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.jaxws.AxisController;

+import org.apache.axis2.jaxws.BindingProvider;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.InvocationContext;

+import org.apache.axis2.jaxws.core.InvocationContextFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.core.controller.AxisInvocationController;

+import org.apache.axis2.jaxws.core.controller.InvocationController;

+import org.apache.axis2.jaxws.handler.PortData;

+import org.apache.axis2.jaxws.impl.AsyncListener;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+import org.apache.axis2.jaxws.util.Constants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public abstract class BaseDispatch<T> extends BindingProvider 

+    implements javax.xml.ws.Dispatch {

+

+    private Log log = LogFactory.getLog(BaseDispatch.class);

+    

+    //FIXME: Remove the AxisController completely and replace with InvocationController

+    protected AxisController axisController = null;

+    

+    protected InvocationController ic;

+    protected ServiceDelegate serviceDelegate;

+    protected ServiceClient serviceClient;

+    protected Mode mode;

+    protected PortData port;

+    

+    protected BaseDispatch(PortData p) {

+        super();

+        

+        port = p;

+        ic = new AxisInvocationController();

+        setRequestContext();

+    }

+    

+    protected BaseDispatch(AxisController ac) {

+        super();

+        

+        //FIXME: Remove this when we remove the AxisController

+        axisController = ac;

+        

+        ic = new AxisInvocationController();

+        setRequestContext();

+    }

+    

+    /**

+     * Take the input object and turn it into an OMElement so that it can

+     * be sent.

+     * 

+     * @param value

+     * @return

+     */

+    protected abstract Message createMessageFromValue(Object value);

+    

+    /**

+     * Given a message, return the business object based on the requestor's

+     * required format (PAYLOAD vs. MESSAGE) and datatype.

+     * 

+     * @param message

+     * @return

+     */

+    protected abstract Object getValueFromMessage(Message message);

+    

+    /**

+     * Creates an instance of the AsyncListener that is to be used for waiting

+     * for async responses.

+     * 

+     * @return a configured AsyncListener instance

+     */

+    protected abstract AsyncListener createAsyncListener();

+    

+    public Object invoke(Object obj) throws WebServiceException {

+        if (log.isDebugEnabled()) { 

+            log.debug("Entered synchronous invocation: BaseDispatch.invoke()");

+        }

+        

+        //Check for valid invocation parameter

+        obj = validateInvocationParam(obj);

+        

+        // Create the InvocationContext instance for this request/response flow.

+        InvocationContext invocationContext = InvocationContextFactory.createInvocationContext(null);

+        invocationContext.setServiceClient(serviceClient);

+        

+        // Create the MessageContext to hold the actual request message and its

+        // associated properties

+        MessageContext requestMsgCtx = new MessageContext();

+        invocationContext.setRequestMessageContext(requestMsgCtx);

+        

+        Message requestMsg = createMessageFromValue(obj);

+        setupMessageProperties(requestMsg);

+        requestMsgCtx.setMessage(requestMsg);

+        

+        // Copy the properties from the request context into the MessageContext

+        requestMsgCtx.getProperties().putAll(requestContext);

+        

+        // Send the request using the InvocationController

+        ic.invoke(invocationContext);

+        

+        MessageContext responseMsgCtx = invocationContext.getResponseMessageContext();

+        

+        //FIXME: This is temporary until more of the Message model is available

+        Message responseMsg = responseMsgCtx.getMessage();

+        Object returnObj = getValueFromMessage(responseMsg);

+        

+        if (log.isDebugEnabled()) {

+            log.debug("Synchronous invocation completed: BaseDispatch.invoke()");

+        }

+        

+        return returnObj;

+    }

+    

+    public void invokeOneWay(Object obj) throws WebServiceException{

+        if (log.isDebugEnabled()) { 

+            log.debug("Entered one-way invocation: BaseDispatch.invokeOneWay()");

+        }

+        

+        //Check for valid invocation parameter

+        obj = validateInvocationParam(obj);

+       

+        // Create the InvocationContext instance for this request/response flow.

+        InvocationContext invocationContext = InvocationContextFactory.createInvocationContext(null);

+        invocationContext.setServiceClient(serviceClient);

+       

+        // Create the MessageContext to hold the actual request message and its

+        // associated properties

+        MessageContext requestMsgCtx = new MessageContext();

+        invocationContext.setRequestMessageContext(requestMsgCtx);

+       

+        Message requestMsg = createMessageFromValue(obj);

+        setupMessageProperties(requestMsg);

+        requestMsgCtx.setMessage(requestMsg);

+       

+        // Copy the properties from the request context into the MessageContext

+        requestMsgCtx.getProperties().putAll(requestContext);

+       

+        // Send the request using the InvocationController

+        ic.invokeOneWay(invocationContext);

+       

+        if (log.isDebugEnabled()) {

+            log.debug("One-way invocation completed: BaseDispatch.invokeOneWay()");

+        }

+       

+        return;

+    }

+   

+    public Future<?> invokeAsync(Object obj, AsyncHandler asynchandler) throws WebServiceException {

+        if (log.isDebugEnabled()) { 

+            log.debug("Entered asynchronous (callback) invocation: BaseDispatch.invokeAsync()");

+        }

+        

+        //Check for valid invocation parameter

+        obj = validateInvocationParam(obj);

+        

+        // Create the InvocationContext instance for this request/response flow.

+        InvocationContext invocationContext = InvocationContextFactory.createInvocationContext(null);

+        invocationContext.setServiceClient(serviceClient);

+        

+        // Create the MessageContext to hold the actual request message and its

+        // associated properties

+        MessageContext requestMsgCtx = new MessageContext();

+        invocationContext.setRequestMessageContext(requestMsgCtx);

+        

+        Message requestMsg = createMessageFromValue(obj);

+        setupMessageProperties(requestMsg);

+        requestMsgCtx.setMessage(requestMsg);

+        

+        // Copy the properties from the request context into the MessageContext

+        requestMsgCtx.getProperties().putAll(requestContext);

+

+        // Setup the Executor that will be used to drive async responses back to 

+        // the client.

+        // FIXME: We shouldn't be getting this from the ServiceDelegate, rather each 

+        // Dispatch object should have it's own.

+        Executor e = serviceDelegate.getExecutor();

+        invocationContext.setExecutor(e);

+        

+        // Create the AsyncListener that is to be used by the InvocationController.

+        AsyncListener listener = createAsyncListener();

+        invocationContext.setAsyncListener(listener);

+        

+        // Send the request using the InvocationController

+        Future<?> asyncResponse = ic.invokeAsync(invocationContext, asynchandler);

+        

+        if (log.isDebugEnabled()) {

+            log.debug("Asynchronous (callback) invocation sent: BaseDispatch.invokeAsync()");

+        }

+        

+        return asyncResponse;

+    }

+  

+    public Response invokeAsync(Object obj)throws WebServiceException{

+        throw new UnsupportedOperationException("Async (polling) invocations are not yet supported.");

+    }

+    

+    //FIXME: This needs to be moved up to the BindingProvider and should actually

+    //be called "initRequestContext()" or something like that.

+    protected void setRequestContext(){

+        String endPointAddress = port.getEndpointAddress();

+        //WSDLWrapper wsdl =  axisController.getWSDLContext();

+        //QName serviceName = axisController.getServiceName();

+        //QName portName = axisController.getPortName();

+        

+        

+        if(endPointAddress != null && !"".equals(endPointAddress)){

+            getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endPointAddress);

+        }

+        //else if(wsdl != null){

+        //    String soapAddress = wsdl.getSOAPAddress(serviceName, portName);

+        //    getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, soapAddress);

+        //}

+        

+        //if(wsdl != null){

+        //    String soapAction = wsdl.getSOAPAction(serviceName, portName);

+        //    getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY, soapAction);

+        //}

+    }

+    

+    public ServiceDelegate getServiceDelegate() {

+        return serviceDelegate;

+    }

+    

+    public void setServiceDelegate(ServiceDelegate sd) {

+        serviceDelegate = sd;

+    }

+    

+    public void setServiceClient(ServiceClient sc) {

+        serviceClient = sc;

+    }

+    

+    public Mode getMode() {

+        return mode;

+    }

+    

+    public void setMode(Mode m) {

+        mode = m;

+    }

+

+    public PortData getPort() {

+        return port;

+    }

+    

+    /*

+     * Configure any properties that will be needed on the Message

+     */

+    private void setupMessageProperties(Message msg) {

+        // If the user has enabled MTOM on the SOAPBinding, we need

+        // to make sure that gets pushed to the Message object.

+        if (binding != null && binding instanceof SOAPBinding) {

+            SOAPBinding soapBinding = (SOAPBinding) binding;

+            if (soapBinding.isMTOMEnabled())

+                msg.setMTOMEnabled(true);

+        }

+    }

+    

+    /**

+     * Validate invocation parameter value.

+     * @param object

+     * @return object

+     */

+    private Object validateInvocationParam(Object object){

+    	Object obj = object;

+    	String bindingId = port.getBindingID();

+    	

+    	try {

+    		if(bindingId.equalsIgnoreCase(SOAPBinding.SOAP11HTTP_BINDING) ||

+    		   bindingId.equalsIgnoreCase(SOAPBinding.SOAP11HTTP_MTOM_BINDING)){

+    			if(mode.toString().equalsIgnoreCase(Mode.PAYLOAD.toString()) && object == null){

+    				//TODO Per JAXWS 2.0 Specification in Section 4.3.2, may need to send a soap

+    				//     message with empty body. For now, implementation will through a

+    				//     NullPointerException wrapped in WebServiceException

+    				throw new NullPointerException("Error: Dispatch invocation value is NULL");

+    			}

+    		}

+    		else if(object == null){

+    			throw new NullPointerException("Error: Dispatch invocation value is NULL");

+    		}

+    	}

+    	catch(NullPointerException npe){

+    		throw ExceptionFactory.makeWebServiceException(npe);

+    	}

+    	catch(Exception e){

+    		throw ExceptionFactory.makeWebServiceException(e);

+    	}

+    	

+    	return obj;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatch.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatch.java
new file mode 100644
index 0000000..dafa251
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatch.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws.client;
+
+import javax.xml.bind.JAXBContext;
+
+import org.apache.axis2.jaxws.AxisController;
+import org.apache.axis2.jaxws.ExceptionFactory;
+import org.apache.axis2.jaxws.handler.PortData;
+import org.apache.axis2.jaxws.impl.AsyncListener;
+import org.apache.axis2.jaxws.message.Block;
+import org.apache.axis2.jaxws.message.Message;
+import org.apache.axis2.jaxws.message.Protocol;
+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;
+import org.apache.axis2.jaxws.message.factory.MessageFactory;
+import org.apache.axis2.jaxws.message.util.ProtocolUtil;
+import org.apache.axis2.jaxws.registry.FactoryRegistry;
+
+public class JAXBDispatch<T> extends BaseDispatch<T> {
+
+    private JAXBContext jaxbContext;
+    
+    public JAXBDispatch(PortData pd) {
+        super(pd);
+    }
+    
+    public JAXBDispatch(AxisController ac) {
+        super(ac);
+    }
+    
+    public JAXBContext getJAXBContext() {
+        return jaxbContext;
+    }
+    
+    public void setJAXBContext(JAXBContext jbc) {
+        jaxbContext = jbc;
+    }
+    
+    public AsyncListener createAsyncListener() {
+        JAXBDispatchAsyncListener listener = new JAXBDispatchAsyncListener();
+        listener.setJAXBContext(jaxbContext);
+        listener.setMode(mode);
+        return listener;
+    }
+    
+    public Message createMessageFromValue(Object value) {
+        Message message = null;
+        try {
+            JAXBBlockFactory factory = (JAXBBlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);
+            Block block = factory.createFrom(value, jaxbContext, null);
+            
+            // The protocol of the Message that is created should be based
+            // on the binding information available.
+            Protocol proto = ProtocolUtil.getProtocolForBinding(port.getBindingID());
+            
+            MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);
+            message = mf.create(proto);
+            message.setBodyBlock(0, block);
+        } catch (Exception e) {
+            throw ExceptionFactory.makeWebServiceException(e);
+        }
+        
+        return message;
+    }
+
+    public Object getValueFromMessage(Message message) {
+        Object value = null;
+        try {
+            JAXBBlockFactory factory = (JAXBBlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);
+            
+            Block block = message.getBodyBlock(0, jaxbContext, factory);
+            value = block.getBusinessObject(true);
+        } catch (Exception e) {
+            throw ExceptionFactory.makeWebServiceException(e);
+        }
+        
+        return value;
+    }
+}
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatchAsyncListener.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatchAsyncListener.java
new file mode 100644
index 0000000..c628070
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatchAsyncListener.java
@@ -0,0 +1,67 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.impl.AsyncListener;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+/**

+ * The JAXBDispatchAsyncListener is an extension of the  

+ * {@link org.apache.axis2.jaxws.impl.AsyncListener} class to provide JAX-B

+ * specific function when processing an async response.

+ */

+public class JAXBDispatchAsyncListener extends AsyncListener {

+    

+    private Mode mode;

+    private JAXBContext jaxbContext;

+    

+    public JAXBDispatchAsyncListener() {

+        super();

+    }

+    

+    public void setMode(Mode m) {

+        mode = m;

+    }

+    

+    public void setJAXBContext(JAXBContext jbc) {

+        jaxbContext = jbc;

+    }

+    

+    public Object getResponseValueObject(MessageContext mc) {

+        Object value = null;

+        

+        Message message = mc.getMessage();

+        try {

+            JAXBBlockFactory factory = (JAXBBlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);

+            

+            Block block = message.getBodyBlock(0, jaxbContext, factory);

+            value = block.getBusinessObject(true);

+        } catch (Exception e) {

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+        

+        return value;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatch.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatch.java
new file mode 100644
index 0000000..9a5ab30
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatch.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws.client;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.transform.Source;
+import javax.xml.ws.Service.Mode;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.jaxws.ExceptionFactory;
+import org.apache.axis2.jaxws.handler.PortData;
+import org.apache.axis2.jaxws.impl.AsyncListener;
+import org.apache.axis2.jaxws.message.Block;
+import org.apache.axis2.jaxws.message.Message;
+import org.apache.axis2.jaxws.message.Protocol;
+import org.apache.axis2.jaxws.message.factory.BlockFactory;
+import org.apache.axis2.jaxws.message.factory.MessageFactory;
+import org.apache.axis2.jaxws.message.factory.SOAPEnvelopeBlockFactory;
+import org.apache.axis2.jaxws.message.factory.SourceBlockFactory;
+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;
+import org.apache.axis2.jaxws.message.util.ProtocolUtil;
+import org.apache.axis2.jaxws.registry.FactoryRegistry;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class XMLDispatch<T> extends BaseDispatch<T> {
+    private static final Log log = LogFactory.getLog(XMLDispatch.class);
+    
+    private Class type;
+    private Class blockFactoryType;
+    
+    public XMLDispatch(PortData pd) {
+        super(pd);
+    }
+    
+    public Class getType() {
+        return type;
+    }
+    
+    public void setType(Class c) {
+        type = c;
+    }
+    
+    public AsyncListener createAsyncListener() {
+        if (log.isDebugEnabled()) {
+            log.debug("Creating new AsyncListener for XMLDispatch");
+        }
+        XMLDispatchAsyncListener al = new XMLDispatchAsyncListener();
+        al.setMode(mode);
+        al.setType(type);
+        al.setBlockFactoryType(blockFactoryType);
+        return al;
+    }
+    
+    public Message createMessageFromValue(Object value) {
+        type = value.getClass();
+        if (log.isDebugEnabled()) {
+            log.debug("Parameter type: " + type.getName());
+            log.debug("Message mode: " + mode.name());
+        }
+        
+        Block block = null;
+        
+        blockFactoryType = getBlockFactory(value);
+        BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(blockFactoryType);
+        if (log.isDebugEnabled()) {
+            log.debug("Loaded block factory type [" + blockFactoryType.getName());
+        }
+        
+        Message message = null;
+        if (mode.equals(Mode.PAYLOAD)) {
+            try {
+                MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);
+                block = factory.createFrom(value, null, null);
+                
+                // The protocol of the Message that is created should be based
+                // on the binding information available.
+                Protocol proto = ProtocolUtil.getProtocolForBinding(port.getBindingID());               
+                message = mf.create(proto);
+                message.setBodyBlock(0, block);
+            } catch (Exception e) {
+            	throw ExceptionFactory.makeWebServiceException(e);
+            }
+        }
+        else if (mode.equals(Mode.MESSAGE)) {
+            try {

+            	MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);
+            	// If the value contains just the xml data, then you can create the Message directly from the 
+            	// Block.  If the value contains attachments, you need to do more.  
+            	// TODO For now the only value that contains Attachments is SOAPMessage
+            	if (value instanceof SOAPMessage) {
+            		message = mf.createFrom((SOAPMessage) value);
+            	} else {
+            		block = factory.createFrom(value, null, null);
+            		message = mf.createFrom(block, null);
+            	}
+            } catch (Exception e) {
+            	throw ExceptionFactory.makeWebServiceException(e);

+            }
+        }
+
+        return message;
+    }
+
+    public Object getValueFromMessage(Message message) {
+        Object value = null;
+        Block block = null;
+        
+        if (log.isDebugEnabled()) {
+            log.debug("Attempting to get the value object from the returned message");
+        }
+        
+        try {
+            if (mode.equals(Mode.PAYLOAD)) {
+				BlockFactory factory = (BlockFactory) FactoryRegistry
+						.getFactory(blockFactoryType);
+				block = message.getBodyBlock(0, null, factory);
+				value = block.getBusinessObject(true);
+				
+			} else if (mode.equals(Mode.MESSAGE)) {
+			   if (blockFactoryType.equals(SOAPEnvelopeBlockFactory.class)) {
+				   // This is an indication that we are in SOAPMessage Dispatch
+				   // Return the SOAPMessage
+				   value = message.getAsSOAPMessage();
+				   
+			   } else {
+				   // TODO: This doesn't seem right to me. We should not have an intermediate StringBlock.  
+				   // This is not performant. Scheu 
+				   OMElement messageOM = message.getAsOMElement();
+				   String stringValue = messageOM.toString();  
+				   QName soapEnvQname = new QName("http://schemas.xmlsoap.org/soap/envelope/", "Envelope");
+                    
+				   XMLStringBlockFactory stringFactory = (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);
+				   Block stringBlock = stringFactory.createFrom(stringValue, null, soapEnvQname);   
+				   BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(blockFactoryType);
+				   block = factory.createFrom(stringBlock, null);
+				   value = block.getBusinessObject(true);
+			   }
+			}
+            
+        } catch (Exception e) {
+            if (log.isDebugEnabled()) {
+                log.debug("An error occured while creating the block");
+            }
+            throw ExceptionFactory.makeWebServiceException(e);
+        }
+        
+        if (log.isDebugEnabled()) {
+            if (value == null) 
+                log.debug("Returning a null value");
+            else 
+                log.debug("Returning value of type: " + value.getClass().getName());
+        }
+        
+        return value;
+    }
+    
+    private Class getBlockFactory(Object o) {
+        if (o instanceof String) {
+            System.out.println(">> returning XMLStringBlockFactory");
+            return XMLStringBlockFactory.class;
+        }
+        else if (Source.class.isAssignableFrom(o.getClass())) {
+            System.out.println(">> returning SourceBlockFactory");
+            return SourceBlockFactory.class;
+        }
+        else if (SOAPMessage.class.isAssignableFrom(o.getClass())) {
+            System.out.println(">> returning SOAPMessageFactory");
+            return SOAPEnvelopeBlockFactory.class;
+        } 
+        else if (SOAPEnvelope.class.isAssignableFrom(o.getClass())) {
+            System.out.println(">> returning SOAPEnvelope");
+            return SOAPEnvelopeBlockFactory.class;
+        }
+        
+        System.out.println(">> ERROR: Factory not found");
+        return null;
+    }
+}
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatchAsyncListener.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatchAsyncListener.java
new file mode 100644
index 0000000..a1ef111
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatchAsyncListener.java
@@ -0,0 +1,88 @@
+package org.apache.axis2.jaxws.client;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.impl.AsyncListener;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.SOAPEnvelopeBlockFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+/**

+ * The XMLDispatchAsyncListener is an extension of the  

+ * {@link org.apache.axis2.jaxws.impl.AsyncListener} class to provide 

+ * proper deserialization into the target format (XML String or Source).

+ */

+public class XMLDispatchAsyncListener extends AsyncListener {

+

+    private Mode mode;

+    private Class type;

+    private Class blockFactoryType;

+    

+    public XMLDispatchAsyncListener() {

+        super();

+    }

+    

+    public void setMode(Mode m) {

+        mode = m;

+    }

+    

+    public void setType(Class t) {

+        type = t;

+    }

+    

+    public void setBlockFactoryType(Class t) {

+        blockFactoryType = t;

+    }

+    

+    protected Object getResponseValueObject(MessageContext mc) {

+        Object value = null;

+

+        Message message = mc.getMessage();

+        if (mode.equals(Mode.PAYLOAD)) {

+            try {

+                BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(blockFactoryType);

+                Block block = message.getBodyBlock(0, null, factory);

+                value = block.getBusinessObject(true);

+            } catch (MessageException e) {

+                e.printStackTrace();

+            } catch (XMLStreamException e) {

+                e.printStackTrace();

+            }

+        }

+        else if (mode.equals(Mode.MESSAGE)) {

+            try {

+                if (blockFactoryType.equals(SOAPEnvelopeBlockFactory.class)) {

+                    // This is an indication that we are in SOAPMessage Dispatch

+                    // Return the SOAPMessage

+                    value = message.getAsSOAPMessage();

+                } 

+                else {

+                    OMElement messageOM = message.getAsOMElement();

+                    QName soapEnvQname = new QName("http://schemas.xmlsoap.org/soap/envelope/", "Envelope");

+        

+                    XMLStringBlockFactory stringFactory = (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+                    Block stringBlock = stringFactory.createFrom(messageOM.toString(), null, soapEnvQname);

+       

+                    BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(blockFactoryType);

+                    Block block = factory.createFrom(stringBlock, null);

+

+                    value = block.getBusinessObject(true);

+                }

+            } catch (MessageException e) {

+                e.printStackTrace();

+            } catch (XMLStreamException e) {

+                e.printStackTrace();

+            }

+        }

+        

+        return value;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/factory/DescriptorFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/factory/DescriptorFactory.java
new file mode 100644
index 0000000..f0c552f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/factory/DescriptorFactory.java
@@ -0,0 +1,30 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client.factory;

+

+import org.apache.axis2.jaxws.client.proxy.ProxyDescriptor;

+import org.apache.axis2.jaxws.description.ServiceDescription;

+

+

+public class DescriptorFactory{

+

+	public ProxyDescriptor create(Class seiClass, ServiceDescription serviceDescription) {

+		// TODO Auto-generated method stub

+		return new ProxyDescriptor(seiClass, serviceDescription);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/factory/ProxyHandlerFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/factory/ProxyHandlerFactory.java
new file mode 100644
index 0000000..528eb2a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/factory/ProxyHandlerFactory.java
@@ -0,0 +1,43 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client.factory;

+

+import javax.jws.soap.SOAPBinding.Style;

+

+

+import org.apache.axis2.jaxws.client.proxy.BaseProxyHandler;

+import org.apache.axis2.jaxws.client.proxy.DocLitProxyHandler;

+import org.apache.axis2.jaxws.client.proxy.ProxyDescriptor;

+import org.apache.axis2.jaxws.client.proxy.RPCLitProxyHandler;

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+

+

+/**

+ * ProxyHandler Factory looks at proxy descriptor object and create a doc/lit or rpc/lit proxy handler. 

+ */

+public class ProxyHandlerFactory {

+

+	public BaseProxyHandler create(ProxyDescriptor descriptor, ServiceDelegate sd){

+		if(descriptor.getBindingStyle() == Style.DOCUMENT){

+			return new DocLitProxyHandler(descriptor, sd);

+		}

+		if(descriptor.getBindingStyle()== Style.RPC){

+			return new RPCLitProxyHandler(descriptor, sd);

+		}

+		return null;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/BaseProxyHandler.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/BaseProxyHandler.java
new file mode 100644
index 0000000..885ee28
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/BaseProxyHandler.java
@@ -0,0 +1,266 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client.proxy;

+

+import java.beans.IntrospectionException;

+import java.lang.reflect.InvocationHandler;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+import java.util.concurrent.Future;

+

+import javax.xml.bind.JAXBException;

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+import javax.xml.ws.WebServiceException;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.jaxws.AxisController;

+import org.apache.axis2.jaxws.BindingProvider;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.InvocationContext;

+import org.apache.axis2.jaxws.core.InvocationContextFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.core.controller.AxisInvocationController;

+import org.apache.axis2.jaxws.core.controller.InvocationController;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.impl.AsyncListener;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+import org.apache.axis2.jaxws.util.WSDLWrapper;

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperException;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+// import com.sun.xml.bind.v2.runtime.reflect.Lister;

+

+/**

+ * ProxyHandler is the java.lang.reflect.InvocationHandler implementation.

+ * When jaxws client calls the method on proxy object that it gets using the getPort

+ * ServiceDelegate api, the Inovke method on ProxyHandler is Invoked.

+ * ProxyHandler uses EndpointInterfaceDescriptor and finds out if 

+ * 1) The client call is Document Literal or Rpc Literal

+ * 2) The WSDL is wrapped or unWrapped. 

+ * 

+ * ProxyHandler then reads OperationDescription using Method name called by Client

+ * From OperationDescription it does the following 

+ * 1) if the wsdl isWrapped() reads RequestWrapper Class and responseWrapperClass

+ * 2) then reads the webParams for the Operation.

+ * 

+ * isWrapped() = true  and DocLiteral then

+ * ProxyHandler then uses WrapperTool to create Request that is a Wrapped JAXBObject.

+ * Creates JAXBBlock using JAXBBlockFactory

+ * Creates MessageContext->Message and sets JAXBBlock to xmlPart as RequestMsgCtx in InvocationContext.

+ * Makes call to InvocationController.

+ * Reads ResponseMsgCtx ->MessageCtx->Message->XMLPart.

+ * Converts that to JAXBlock using JAXBBlockFactory and returns the BO from this JAXBBlock.

+ * 

+ * isWrapped() != true and DocLiteral then

+ * ProxyHandler creates the JAXBBlock for the input request creates a 

+ * MessageContext that is then used by IbvocationController to invoke.

+ * Response is read and return object is derived using @Webresult annotation.

+ * A JAXBBlock is created from the Response and the BO from JAXBBlock is

+ * returned.  

+ * 

+ * RPCLiteral 

+ * TBD

+ * 

+ */

+

+public abstract class BaseProxyHandler extends BindingProvider implements

+		InvocationHandler {

+	private static Log log = LogFactory.getLog(BaseProxyHandler.class);

+//	TODO remove axisController once InvocationController code is build.

+	private AxisController axisController = null;

+	//Reference to ServiceDelegate instance that was used to create the Proxy

+	private ServiceDelegate delegate = null;

+	protected ProxyDescriptor proxyDescriptor = null;

+	

+	public BaseProxyHandler(ProxyDescriptor pd, ServiceDelegate delegate) {

+		super();

+		this.proxyDescriptor = pd;

+		this.delegate = delegate;

+		initRequestContext();

+	}

+	

+	/* (non-Javadoc)

+	 * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])

+	 * 

+	 * Invoke method checks to see if BindingProvider method was invoked by client if yes, it uses reflection and invokes the BindingProvider method.

+	 * If SEI method was called then it delegates to InvokeSEIMethod().

+	 */

+	public Object invoke(Object proxy, Method method, Object[] args)

+			throws Throwable {

+		if (log.isDebugEnabled()) {

+            log.debug("Attemping to invoke Method: " +method.getName());

+        }

+		if(!isValidMethodCall(method)){

+			throw ExceptionFactory.makeWebServiceException(Messages.getMessage("proxyErr1",method.getName(), axisController.getClientContext().getClazz().getName()));

+		}

+		

+		if(isBindingProviderInvoked(method)){

+			if (log.isDebugEnabled()) {

+	            log.debug("Invoking method on Binding Provider");

+	        }

+			return method.invoke(this, args);

+			

+		}

+		else{

+			proxyDescriptor.setSeiMethod(method);

+			return InvokeSEIMethod(method, args);

+		}

+	}

+	

+	/**

+	 * InvokeSEIMethod invokes Axis engine using methods on InvocationController. Create request Invocation context, instantiates AxisInvocationController and 

+	 * runs invoke.

+	 * 

+	 */

+	private Object InvokeSEIMethod(Method method, Object[] args)throws ClassNotFoundException, JAXBWrapperException, JAXBException, MessageException, XMLStreamException, IllegalAccessException,IntrospectionException, NoSuchFieldException, InvocationTargetException{

+		if (log.isDebugEnabled()) {

+            log.debug("Attempting to Invoke SEI Method "+ method.getName());

+        }

+		

+		//TODO make sure the method is a public method and it is declared in SEI.

+		

+		InvocationContext requestIC = InvocationContextFactory.createInvocationContext(null);

+		MessageContext requestContext = createRequest(method, args);

+        requestContext.setOperationDescription(proxyDescriptor.getOperationDescription());

+		requestIC.setRequestMessageContext(requestContext);

+		InvocationController controller = new AxisInvocationController();

+		//FIXME: Fix based on how InvocationContext changes to get ServiceClient.

+		requestIC.setServiceClient(proxyDescriptor.getEndpointDescription().getServiceClient());

+		

+		//check if the call is OneWay, Async or Sync

+		if(proxyDescriptor.isOneWay() || method.getReturnType().getName().equals("void")){

+			if(log.isDebugEnabled()){

+				log.debug("OneWay Call");

+			}

+			controller.invokeOneWay(requestIC);

+		}

+		

+		if(method.getReturnType().isAssignableFrom(Future.class)){

+			if(log.isDebugEnabled()){

+				log.debug("Async Callback");

+			}

+			//Get AsyncHandler from Objects and sent that to InvokeAsync

+			AsyncHandler asyncHandler = null;

+			for(Object obj:args){

+				if(obj !=null && AsyncHandler.class.isAssignableFrom(obj.getClass())){

+					asyncHandler = (AsyncHandler)obj;

+					break;

+				}

+			}

+			if(asyncHandler == null){

+				throw ExceptionFactory.makeWebServiceException("AynchHandler null for Async callback, Invalid AsyncHandler callback Object");

+			}

+			AsyncListener listener = createProxyListener();

+			requestIC.setAsyncListener(listener);

+			requestIC.setExecutor(delegate.getExecutor());

+			return controller.invokeAsync(requestIC, asyncHandler);

+		}

+		

+		if(method.getReturnType().isAssignableFrom(Response.class)){

+			if(log.isDebugEnabled()){

+				log.debug("Async Polling");

+			}

+			AsyncListener listener = createProxyListener();

+			requestIC.setAsyncListener(listener);

+			requestIC.setExecutor(delegate.getExecutor());

+			return controller.invokeAsync(requestIC);

+		}

+		

+		if(!proxyDescriptor.isOneWay()){

+			InvocationContext responseIC = controller.invoke(requestIC);

+		

+			MessageContext responseContext = responseIC.getResponseMessageContext();

+			Object responseObj = createResponse(method, responseContext);

+			return responseObj;

+		}

+		return null;

+	}

+	

+	private AsyncListener createProxyListener(){

+		ProxyAsyncListener listener = new ProxyAsyncListener();

+		listener.setHandler(this);

+		return listener;

+	}

+	

+	protected boolean isAsync(){

+		String methodName = proxyDescriptor.getSeiMethod().getName();

+		Class returnType = proxyDescriptor.getSeiMethod().getReturnType();

+		return methodName.endsWith("Async") && (returnType.isAssignableFrom(Response.class) || returnType.isAssignableFrom(Future.class));

+	}

+	/**

+	 * Create request context for the method call. This request context will be used by InvocationController to route the method call to axis engine.

+	 * @param method

+	 * @param args

+	 * @return

+	 */

+	protected abstract MessageContext createRequest(Method method, Object[] args) throws ClassNotFoundException, JAXBWrapperException, JAXBException, MessageException, javax.xml.stream.XMLStreamException;

+	

+	/**

+	 * Creates response context for the method call. This response context will be used to create response result to the client call.

+	 * @param method

+	 * @param responseContext

+	 * @return

+	 */

+	protected abstract Object createResponse(Method method, MessageContext responseContext)throws IllegalAccessException, ClassNotFoundException, JAXBWrapperException, JAXBException, javax.xml.stream.XMLStreamException, MessageException, IntrospectionException, NoSuchFieldException, InvocationTargetException;

+	

+	private boolean isBindingProviderInvoked(Method method){

+		Class SEIClass = proxyDescriptor.getSeiClazz();

+		Class methodsClass = method.getDeclaringClass();

+		return (SEIClass == methodsClass)?false:true;

+	}

+	

+	private boolean isValidMethodCall(Method method){

+		Class SEIClass = proxyDescriptor.getSeiClazz();

+		Class clazz = method.getDeclaringClass();

+		if(clazz == javax.xml.ws.BindingProvider.class || clazz == SEIClass){

+			return true;

+		}

+		return false;

+	}

+	//TODO: remove reference to AxisController.

+	protected void setAxisController(AxisController ac) {

+		this.axisController = ac;

+	}

+	

+	public void setDelegate(ServiceDelegate delegate) {

+		this.delegate = delegate;

+	}

+	

+	protected void initRequestContext() {

+		String soapAddress = null;

+		String soapAction = null;

+		String endPointAddress = proxyDescriptor.getPort().getEndpointAddress();

+		WSDLWrapper wsdl = delegate.getServiceDescription().getWSDLWrapper();

+		QName serviceName = delegate.getServiceName();

+		QName portName = proxyDescriptor.getPort().getPortName();

+		if (wsdl != null) {

+			soapAddress = wsdl.getSOAPAddress(serviceName, portName);

+			soapAction = wsdl.getSOAPAction(serviceName, portName);

+		}

+		super.initRequestContext(endPointAddress, soapAddress, soapAction);

+	}

+

+	protected ServiceDelegate getDelegate() {

+		return delegate;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/DocLitProxyHandler.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/DocLitProxyHandler.java
new file mode 100644
index 0000000..d5edbaa
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/DocLitProxyHandler.java
@@ -0,0 +1,475 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client.proxy;

+

+import java.beans.IntrospectionException;

+import java.io.ByteArrayInputStream;

+import java.io.InputStreamReader;

+import java.io.Reader;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.HashMap;

+import java.util.Map;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.JAXBException;

+import javax.xml.bind.JAXBIntrospector;

+import javax.xml.bind.Unmarshaller;

+import javax.xml.bind.annotation.XmlRootElement;

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.ws.AsyncHandler;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+import org.apache.axis2.jaxws.wrapper.JAXBWrapperTool;

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperException;

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperToolImpl;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+

+public class DocLitProxyHandler extends BaseProxyHandler {

+	private static Log log = LogFactory.getLog(DocLitProxyHandler.class);

+	private static int SIZE = 1;

+	private static String DEFAULT_ARG="arg";

+	private static QName SOAPENV_QNAME= new QName("http://schemas.xmlsoap.org/soap/envelop/", "Envelope");

+	private ArrayList<Object> argList = null;

+	/**

+	 * @param pd

+	 * @param delegate

+	 */

+	public DocLitProxyHandler(ProxyDescriptor pd, ServiceDelegate delegate) {

+		super(pd, delegate);

+	}

+

+	@Override

+	protected MessageContext createRequest(Method method, Object[] args) throws ClassNotFoundException, JAXBWrapperException, JAXBException, MessageException, javax.xml.stream.XMLStreamException {

+		MessageContext requestCtx = null;

+		if(isDocLitWrapped()){

+			if (log.isDebugEnabled()) {

+	            log.debug("Creating Doc Lit Wrapped Request for method : " +method.getName());

+	        }

+			return createDocLitWrappedRequest(method, args);

+		}

+		if(isDocLitBare()){

+			if (log.isDebugEnabled()) {

+	            log.debug("Creating Doc Lit Bare Request for method : " +method.getName());

+	        }

+			return createDocLitNONWrappedRequest(method, args);

+		}

+		return requestCtx;

+	}

+

+	@Override

+	protected Object createResponse(Method method, MessageContext responseContext) throws IllegalAccessException, ClassNotFoundException, JAXBWrapperException, JAXBException, javax.xml.stream.XMLStreamException, MessageException, IntrospectionException, NoSuchFieldException, InvocationTargetException{

+		Object result = null;

+		if(isDocLitWrapped()){

+			if (log.isDebugEnabled()) {

+	            log.debug("Creating Doc Lit Wrapped Response ");

+	        }

+			return createDocLitWrappedResponse(method, responseContext);

+		}

+		if(isDocLitBare()){

+			if (log.isDebugEnabled()) {

+	            log.debug("Creating Doc Lit Bare Request ");

+	        }

+			return createDocLitNONWrappedResponse(method, responseContext);

+		}

+		return result;

+	}

+

+	/**

+	 * createDocLitWrappedRequest create request message context. It reads RequestWrapper annotation from OperationDescription and reads the calss name, then reads

+	 * all the webParam annotation on the method and uses JAXBWrapTool to wrap the request as jaxbObject. Create JAXBblock from the jaxbObject and sets OMElement on 

+	 * Request MessageContext, reads Biniding provider properties and set them on request message context and return request message context.

+	 * @param method

+	 * @param objects

+	 * @return

+	 * @throws ClassNotFoundException

+	 * @throws JAXBWrapperException

+	 * @throws JAXBException

+	 * @throws MessageException

+	 * @throws javax.xml.stream.XMLStreamException

+	 */

+	private MessageContext createDocLitWrappedRequest(Method method, Object[] objects)throws ClassNotFoundException, JAXBWrapperException, JAXBException, MessageException, javax.xml.stream.XMLStreamException{

+		

+		Class wrapperClazz = proxyDescriptor.getRequestWrapperClass(isAsync());

+		ArrayList<String> names = getParamNames(objects);

+		String localName = proxyDescriptor.getRequestWrapperLocalName();

+		Map<String, Object> values = getParamValues(objects, names);

+		JAXBWrapperTool wrapTool = new JAXBWrapperToolImpl();

+		if (log.isDebugEnabled()) {

+            log.debug("JAXBWrapperTool attempting to wrap propertes in WrapperClass :" + wrapperClazz);

+        }

+		//TODO:if(@XmlRootElement) annotation found or defined

+		Object jaxbObject = wrapTool.wrap(wrapperClazz, localName,names, values);

+		if (log.isDebugEnabled()) {

+            log.debug("JAXBWrapperTool wrapped following propertes :");

+        }

+		//TODO: if (!@XmlRootElement) annotation not found or not defined then can I use JAXBElement?

+		//JAXBElement jaxbObject = wrapTool.wrapAsJAXBElement(wrapperClazz, requestWrapper.localName(),names, values);

+		JAXBContext ctx = JAXBContext.newInstance(new Class[]{wrapperClazz});

+		if (log.isDebugEnabled()) {

+            log.debug("Attempting to create Block");

+        }

+		XmlRootElement root = null;

+		Block reqBlock = null;

+		root =(XmlRootElement) wrapperClazz.getAnnotation(XmlRootElement.class);

+		if(root != null){

+		 reqBlock = createJAXBBlock(jaxbObject, ctx);

+		 if (log.isDebugEnabled()) {

+	            log.debug("JAXBBlock Created");

+	        }

+		}

+		else{

+			reqBlock = createJAXBBlock(localName, jaxbObject, ctx);

+			if (log.isDebugEnabled()) {

+	            log.debug("JAXBBlock Created");

+	        }

+		}

+		

+		MessageContext requestCtx = initializeRequest(reqBlock);

+		return requestCtx;

+		

+	}

+	

+	

+	/**

+	 * CreateDocLitNONWrappedRequest creates a request message context. The input object to a non wrapped wsdl will be a object (mainly a JAXB Object) that will

+	 * have all the payload data or method parameter data already setup. So the message context will be created by converting input object in to a JAXBBlock and

+	 * attaching the Block Message to soap body.

+	 * @param method

+	 * @param objects

+	 * @return

+	 */

+	private MessageContext createDocLitNONWrappedRequest(Method method, Object[] objects) throws JAXBException, MessageException, XMLStreamException{

+		MessageContext requestCtx = null;

+		

+		ArrayList<String> names = getParamNames(objects);

+		ArrayList<String> tns = proxyDescriptor.getParamtns();

+		Map<String, Object> values = getParamValues(objects, names);

+		if(names.size()> SIZE || values.size() > SIZE){

+			if (log.isDebugEnabled()) {

+	            log.debug("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");

+	        }

+			throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr1"));

+		}

+		if(names.size() !=0){

+			JAXBContext ctx = null;

+			Object requestObject = null;

+			String requestObjectName = null;

+			for(String name:names){

+				requestObject = values.get(name);

+				requestObjectName = name;

+				if(requestObject == null){

+					if (log.isDebugEnabled()) {

+			            log.debug("Method Input parameter for NON Wrapped Request cannot be null");

+			        }

+					throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr2"));

+				}

+			}

+				

+			ctx = JAXBContext.newInstance(new Class[]{requestObject.getClass()});

+			if (log.isDebugEnabled()) {

+	            log.debug("Attempting to create Block");

+	        }

+			Block reqBlock = createJAXBBlock(requestObjectName, requestObject, ctx);

+			if (log.isDebugEnabled()) {

+	            log.debug("Block Created");

+	        }

+			requestCtx = initializeRequest(reqBlock);

+		}

+		if(names.size() == 0){

+			Block emptyBodyBlock = createEmptyBodyBlock();

+			requestCtx = initializeRequest(emptyBodyBlock);

+		}

+		return requestCtx;

+	}

+	

+	/**

+	 * CreateDocLitWrappedResponse creates return result that client expects from the method call. It reads response wrapper annotation then reads OM from the

+	 * response message context and creates JAXBBlock from the OMElement on messageContext. It then reads the webresult annotation to gather the return parameter

+	 * name and creates the result object for it by reading the property object from JAXBBlock's business object using PropertyDescriptor. 

+	 * @param method

+	 * @param response

+	 * @return

+	 * @throws IllegalAccessException

+	 * @throws ClassNotFoundException

+	 * @throws JAXBWrapperException

+	 * @throws JAXBException

+	 * @throws javax.xml.stream.XMLStreamException

+	 * @throws MessageException

+	 * @throws IntrospectionException

+	 * @throws NoSuchFieldException

+	 * @throws InvocationTargetException

+	 */

+

+	private Object createDocLitWrappedResponse(Method method, MessageContext response)throws ClassNotFoundException, JAXBWrapperException, JAXBException, javax.xml.stream.XMLStreamException, MessageException{

+		Class wrapperClazz = proxyDescriptor.getResponseWrapperClass(isAsync());

+		String resultName = proxyDescriptor.getWebResultName(isAsync());

+		JAXBContext ctx = JAXBContext.newInstance(new Class[]{wrapperClazz});

+		

+		// Get a JAXBBlockFactory instance.  We'll need this to get the JAXBBlock

+        // out of the Message

+        JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);

+        

+        Message responseMsg = response.getMessage();

+        Block resBlock = responseMsg.getBodyBlock(0, ctx, factory);

+		Object bo = resBlock.getBusinessObject(true);

+		

+		//if ReturnType/WrapperClass is assignable from bo then return bo;

+		if(resultName==null && wrapperClazz.isAssignableFrom(bo.getClass())){

+			return bo;

+		}

+		

+		//if ReturnType is not of same type as JAXBBlock business Object then I will look for resultName in Business Object and return that.

+		return getWebResultObject(wrapperClazz, bo, resultName);

+			

+	}

+	

+	/**

+	 * CreateDocLitNONWrappedResponse creates return result that client expects from the method call. This method reads the method return type

+	 * or uses webResult annotation and creates JAXBBlock from the response context and returns the business object associated with the JAXBBlock.

+	 * @param method

+	 * @param response

+	 * @return

+	 */

+	private Object createDocLitNONWrappedResponse(Method method, MessageContext response) throws JAXBWrapperException, JAXBException, MessageException, XMLStreamException{

+		

+		Message responseMsg = response.getMessage();

+		Class returnType = proxyDescriptor.getReturnType(isAsync());

+		JAXBContext ctx = JAXBContext.newInstance(returnType);

+		JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		Block resBlock = responseMsg.getBodyBlock(0, ctx, factory);

+		Object bo = null;

+		try{

+			 bo = resBlock.getBusinessObject(true);

+		}catch(Exception e){

+			//FIXME: this is the bare case where child of body is not a method but a primitive data type. Reader from Block is throwing exception.

+			OMElement om = resBlock.getOMElement();

+			

+			XMLInputFactory xmlFactory = XMLInputFactory.newInstance();

+			

+			Unmarshaller u = ctx.createUnmarshaller();

+			Reader inputReader = new InputStreamReader(new ByteArrayInputStream(om.toString().getBytes()));

+			XMLStreamReader sr = xmlFactory.createXMLStreamReader(inputReader);

+			JAXBElement o =u.unmarshal(sr, returnType);

+			bo = o.getValue();

+		}

+		if(returnType.isAssignableFrom(bo.getClass())){

+			return bo;

+		}

+		//If returnType is different than JAXBBlock Business Object, I will look for resultName in BusinessObject and return that.

+		String resultName = proxyDescriptor.getWebResultName(isAsync());

+		return getWebResultObject(returnType, bo, resultName);

+	}

+	

+	private Block createJAXBBlock(Object jaxbObject, JAXBContext context) throws MessageException{

+		JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		return factory.createFrom(jaxbObject,context,null);

+		

+	}

+	

+	private Block createJAXBBlock(String name, Object jaxbObject, JAXBContext context) throws MessageException{

+		JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		JAXBIntrospector introspector = context.createJAXBIntrospector();

+		if(introspector.isElement(jaxbObject)){

+			return factory.createFrom(jaxbObject, context, null);

+		}

+		else{

+			Class clazz = jaxbObject.getClass();

+			String tns = proxyDescriptor.getParamtns(name);

+			JAXBElement<Object> element = new JAXBElement<Object>(new QName(tns, name), clazz, jaxbObject);

+			return factory.createFrom(element,context,null);

+		}

+		

+	}

+	

+	private Block createEmptyBodyBlock() throws MessageException{

+		String emptyBody = "";

+		XMLStringBlockFactory stringFactory = (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		return stringFactory.createFrom(emptyBody, null, SOAPENV_QNAME);

+	}

+	

+	private Block createJAXBBlock(OMElement om, JAXBContext context)throws javax.xml.stream.XMLStreamException{

+		JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		return factory.createFrom(om,context,null);

+		

+	}

+

+	

+	

+	/** 

+	 * reads PropertyDescritpr and invokes  get method on result property and returns the object.

+	 * @param wrapperClazz

+	 * @param businessObject

+	 * @param propertyName

+	 * @return

+	 * @throws NoSuchFieldException

+	 * @throws IntrospectionException

+	 * @throws InvocationTargetException

+	 * @throws IllegalAccessException

+	 */

+	private Object getWebResultObject(Class wrapperClazz, Object businessObject, String propertyName) throws JAXBWrapperException{

+		

+		JAXBWrapperTool wrapTool = new JAXBWrapperToolImpl();

+		if (log.isDebugEnabled()) {

+            log.debug("Attempting to unwrap object from WrapperClazz: "+wrapperClazz);

+        }

+		Object[] webResult = wrapTool.unWrap(businessObject,new ArrayList<String>(Arrays.asList(new String[]{propertyName})));

+		if (log.isDebugEnabled()) {

+            log.debug("Object unwrapped");

+        }

+		return webResult[0];

+		

+	}

+	

+	private MessageContext initializeRequest(Block messageBlock) throws XMLStreamException, MessageException{

+		MessageContext request = new MessageContext();

+		MessageFactory mf = (MessageFactory)FactoryRegistry.getFactory(MessageFactory.class);

+		//FIXME: The protocol should actually come from the binding information included in

+        // either the WSDL or an annotation.

+		Message m = mf.create(Protocol.soap11);

+		m.setBodyBlock(0,messageBlock);

+		request.setMessage(m);

+		request.getProperties().putAll(getRequestContext());

+	

+		return request;

+		

+	}

+	

+	private boolean isDocLitBare(){

+		/* TODO: if(EndPoinInterfaceDescriptor.clientCall == Doc/literal) && OperationDescriptor.isWrapped() == false){ 

+		 * return true; 

+		 * else

+		 * return false;

+		 */

+		return proxyDescriptor.isClazzDocLitBare();

+	}

+	

+	private boolean isDocLitWrapped(){

+		/* TODO: if(EndPoinInterfaceDescriptor.clientCall == Doc/literal) && OperationDescriptor.isWrapped() == true){ 

+		 * return true; 

+		 * else

+		 * return false;

+		 */

+		return proxyDescriptor.isClazzDocLitWrapped();

+	}

+	

+	public ArrayList<String> getParamNames(Object[] objects){ 

+        ArrayList<String> names = proxyDescriptor.getParamNames();

+        //TODO Should this logic be moved to Operation Description.

+        argList = null;

+		ArrayList<Object> paramValues = createArgList(names, objects);

+		if(names.size() == paramValues.size()){

+			return names;

+		}

+		if(names.size() > 0 && names.size() != paramValues.size()){

+			throw ExceptionFactory.makeWebServiceException(Messages.getMessage("InvalidWebParams"));

+		}

+		//if no webparams found but there method has input parameter I will create default input param names. Java reflection does not allow reading

+		//formal parameter names, hence I will create defautl argument names to be arg0, arg1 ....

+		int i=0;

+		if(names.size() ==0){

+			for(Object paramValue:paramValues){

+				names.add(DEFAULT_ARG + i++);

+			}

+		}

+		return names;

+	}

+	//TODO: Should we move this to OperationDescription.

+	public Map<String, Object> getParamValues(Object[] objects, ArrayList<String> names){

+		Map<String, Object> values = new HashMap<String, Object>();

+		

+		if(objects == null){

+			return values;

+		}

+		//if object array not null check if there is only AsyncHandler object param, if yes then its Async call 

+		//with no parameter. Lets filter AsyncHandler and check for return objects, if they are 0 return value;

+		ArrayList<Object> paramValues = createArgList(names, objects);

+		

+		//@webparams and paramValues identified in method should match. 

+		if(names.size() > 0 && names.size() != paramValues.size()){

+			throw ExceptionFactory.makeWebServiceException(Messages.getMessage("InvalidWebParams"));

+		}

+		

+		if(paramValues.size() == 0){

+			//No method parameters

+			return values;

+		}

+		//If no webParam annotation defined read default names of the object and let's use those.

+		boolean readDefault = false;

+		if(names.size() ==0){

+			readDefault = true;

+		}

+		int i =0;

+		for(Object paramValue: paramValues){

+			if(readDefault){

+				//Java Reflection does not allow you to read names of forma parameter, so I will default the method argument names to arg0, arg1 ....

+				values.put(DEFAULT_ARG + i++, paramValue);

+			}else{

+				values.put(names.get(i++), paramValue);

+			}

+		}

+		return values;

+	}

+	//TODO Implement createNameValuePair method so we can remove getParamName and getParamObject and only call this method once. 

+	private ArrayList<Object> createArgList(ArrayList<String> names, Object[] objects){

+		if(argList !=null){

+			return argList;

+		}

+		argList = new ArrayList<Object>();

+		

+		if(objects == null){

+			return argList;

+		}

+		int i =0;

+		for(Object obj:objects){

+			//skip AsycHandler Object

+			if(obj instanceof AsyncHandler){

+				if(isAsync() && proxyDescriptor.isClazzDocLitBare()){

+					//doeble check and remove the name of AsyncHandler from names list, work around for how wsImport generates doc/lit bare art-effects.

+					names.remove(i);

+				}

+				i++;

+				continue;

+			}

+			

+			argList.add(obj);

+			i++;

+		}

+		return argList;

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/ProxyAsyncListener.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/ProxyAsyncListener.java
new file mode 100644
index 0000000..27c6d77
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/ProxyAsyncListener.java
@@ -0,0 +1,72 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client.proxy;

+

+import java.util.concurrent.ExecutionException;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPBody;

+import javax.xml.ws.WebServiceException;

+

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.jaxws.AxisCallback;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.impl.AsyncListener;

+

+

+/**

+ * ProxyAsyncListener will be used to create response object when client does

+ * response.get();

+ * The Class will return the data type associated with Response<T> Generic Class.

+ * Example Response<Float> will return a Float object to client on Response.get() call.

+ */

+public class ProxyAsyncListener extends AsyncListener {

+

+	BaseProxyHandler handler = null;

+	public ProxyAsyncListener() {

+		super();

+	}

+

+	public BaseProxyHandler getHandler() {

+		return handler;

+	}

+

+	public void setHandler(BaseProxyHandler handler) {

+		this.handler = handler;

+	}

+

+	/**

+	 * @param cb

+	 */

+	public ProxyAsyncListener(AxisCallback cb) {

+		super(cb);

+		

+	}

+	

+	 public Object getResponseValueObject(MessageContext mc){

+		 

+		 try{

+			 //I will delegate the request to create respose to proxyHandler since it has all the logic written to create response for Sync and oneWay.

+			  return handler.createResponse(null, mc);

+		 }catch(Exception e){

+			throw ExceptionFactory.makeWebServiceException(e);

+		 }

+	 }

+

+	 

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/ProxyDescriptor.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/ProxyDescriptor.java
new file mode 100644
index 0000000..8a7e718
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/ProxyDescriptor.java
@@ -0,0 +1,202 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client.proxy;

+

+import java.lang.reflect.Method;

+import java.lang.reflect.ParameterizedType;

+import java.lang.reflect.Type;

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.Hashtable;

+import java.util.Map;

+

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.soap.SOAPBinding;

+import javax.jws.soap.SOAPBinding.Style;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.Response;

+import javax.xml.ws.ResponseWrapper;

+

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.description.EndpointDescription;

+import org.apache.axis2.jaxws.description.OperationDescription;

+import org.apache.axis2.jaxws.description.ServiceDescription;

+import org.apache.axis2.jaxws.handler.PortData;

+import org.apache.axis2.jaxws.i18n.Messages;

+

+/**

+ * ProxyDescriptor is instantiated from ProxyHandler using the Method argument. 

+ * ProxyDescriptor will provide all the annotation details like RequestWrapper class

+ * ResponseWrapper Class, WebParam name etc...

+ *

+ */

+public class ProxyDescriptor {

+	

+	private Class seiClazz = null;

+	private Method seiMethod = null;

+	private PortData port = null;

+    private ServiceDescription serviceDescription= null;

+	private OperationDescription operationDescription= null;

+	private EndpointDescription endpointDescription = null;

+   

+    

+	public ServiceDescription getServiceDescription() {

+     return serviceDescription;   

+    }

+    public OperationDescription getOperationDescription() {

+        return operationDescription;

+    }

+    public EndpointDescription getEndpointDescription() {

+        return endpointDescription;

+    }

+

+	//TODO Need to put validation to check if seiMethod is null;

+	public ProxyDescriptor(Class seiClazz, ServiceDescription serviceDescription){

+		this.seiClazz = seiClazz;

+        this.serviceDescription = serviceDescription;

+        // FIXME: This probably needs to be more robust; can there be > 1 endpoints; if so, how choose which one?

+        this.endpointDescription = serviceDescription.getEndpointDescription(seiClazz)[0];

+	}

+	

+	public Class getRequestWrapperClass(boolean isAsync) throws ClassNotFoundException{

+		String className = operationDescription.getRequestWrapperClassName();

+		return Class.forName(className, true, Thread.currentThread().getContextClassLoader());

+	}

+	

+	public String getRequestWrapperClassName(){

+		return operationDescription.getRequestWrapperClassName();

+	}

+	

+	public String getRequestWrapperLocalName(){

+		return operationDescription.getRequestWrapperLocalName();

+	}

+

+	public Class getResponseWrapperClass(boolean isAsync) throws ClassNotFoundException{

+		//TODO: Move this logic to OperationDescription. This is a hack right now.

+		if(isAsync){

+			return getReturnType(isAsync);

+		}

+		

+		String className = operationDescription.getResponseWrapperClassName();

+		return Class.forName(className, true, Thread.currentThread().getContextClassLoader());

+	}

+

+	public String getResponseWrapperLocalName(){

+		return operationDescription.getResponseWrapperLocalName();

+	}

+    public String getWebResultName(boolean isAsync){

+        return operationDescription.getWebResultName();

+	}

+    // TODO: Move to OperationDescription?

+	public ArrayList<String> getParamNames(){ 

+        return new ArrayList<String>(Arrays.asList(operationDescription.getWebParamNames()));

+	}

+	public ArrayList<String> getParamtns(){ 

+        return new ArrayList<String>(Arrays.asList(operationDescription.getWebParamTNS()));

+	}

+	public String getParamtns(String name){ 

+        return operationDescription.getWebParamTNS(name);

+	}

+	public PortData getPort() {

+		return port;

+	}

+	public void setPort(PortData port) {

+		this.port = port;

+	}

+	public Method getSeiMethod() {

+		return seiMethod;

+	}

+	public void setSeiMethod(Method seiMethod) {

+		this.seiMethod = seiMethod;

+        operationDescription = endpointDescription.getEndpointInterfaceDescription().getOperation(seiMethod);

+	}

+	

+	/*

+	 * This method looks at @SOAPBindingAnnotation on clazz to look for Parameter Style

+	 */

+	public boolean isClazzDocLitBare(){

+		SOAPBinding.ParameterStyle style = endpointDescription.getEndpointInterfaceDescription().getSoapBindingParameterStyle();

+		return style == SOAPBinding.ParameterStyle.BARE;

+	}

+	

+	public boolean isClazzDocLitWrapped(){

+		SOAPBinding.ParameterStyle style = endpointDescription.getEndpointInterfaceDescription().getSoapBindingParameterStyle();

+		return style == SOAPBinding.ParameterStyle.WRAPPED;

+	}

+	

+	//TODO read soap binding on method too, make sure if Binding style is different from binding style in Clazz throw Exception.

+	public Style getBindingStyle(){

+        return endpointDescription.getEndpointInterfaceDescription().getSoapBindingStyle(); 

+	}

+	public Class getSeiClazz() {

+		return seiClazz;

+	}

+	public void setSeiClazz(Class seiClazz) {

+		this.seiClazz = seiClazz;

+	}

+    public boolean isOneWay(){

+        return operationDescription.isOneWay();

+    }

+

+    public String filterAsync(String method){

+		if(method.endsWith("Async")){

+			int index =method.lastIndexOf("Async");

+			return method.substring(0,index);

+		}

+		else{

+			return method;

+		}

+	}

+	

+	/**

+	 * In this method I am trying get the return type of the method.

+	 * if SEI method is Async pooling implmentation then return type is actual type in Generic Response, example Response<ClassName>.

+	 * if SEI method is Async Callback implementation then return type is actual type of method parameter type AsyncHandler, example AsyncHandler<ClassName>

+	 * I use java reflection to get the return type.

+	 * @param isAsync

+	 * @return

+	 */

+	public Class getReturnType(boolean isAsync){

+		Class returnType = seiMethod.getReturnType();

+		if(isAsync){

+			//pooling implementation

+			if(Response.class.isAssignableFrom(returnType)){

+				Type type = seiMethod.getGenericReturnType();

+				ParameterizedType pType = (ParameterizedType) type;

+				return (Class)pType.getActualTypeArguments()[0];	

+			}

+			//Callback Implementation

+			else{

+				Type[] type = seiMethod.getGenericParameterTypes();

+				Class parameters[]= seiMethod.getParameterTypes();

+				int i=0;

+				for(Class param:parameters){

+					if(AsyncHandler.class.isAssignableFrom(param)){

+						ParameterizedType pType = (ParameterizedType)type[i];

+						return (Class)pType.getActualTypeArguments()[0];

+					}

+					i++;

+				}

+			}

+			

+		}

+		

+		return returnType;	

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/RPCLitProxyHandler.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/RPCLitProxyHandler.java
new file mode 100644
index 0000000..d589ea3
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/RPCLitProxyHandler.java
@@ -0,0 +1,59 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.client.proxy;

+

+import java.lang.reflect.Method;

+

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.core.controller.AxisInvocationController;

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+

+public class RPCLitProxyHandler extends BaseProxyHandler {

+	private static Log log = LogFactory.getLog(RPCLitProxyHandler.class);

+

+	/**

+	 * @param pd

+	 * @param delegate

+	 */

+	public RPCLitProxyHandler(ProxyDescriptor pd, ServiceDelegate delegate) {

+		super(pd, delegate);

+		// TODO Auto-generated constructor stub

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.client.proxy.BaseProxyHandler#createRequest(java.lang.reflect.Method, java.lang.Object)

+	 */

+	@Override

+	protected MessageContext createRequest(Method method, Object[] args) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.client.proxy.BaseProxyHandler#createResponse(java.lang.reflect.Method, org.apache.axis2.jaxws.core.MessageContext)

+	 */

+	@Override

+	protected Object createResponse(Method method,

+			MessageContext responseContext) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContext.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContext.java
new file mode 100644
index 0000000..1c75e01
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContext.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws.core;
+
+import java.util.List;
+import java.util.concurrent.Executor;
+
+import javax.xml.ws.handler.Handler;
+
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.jaxws.impl.AsyncListener;
+
+/**
+ * The <code>InvocationContext</code> encapsulates all of the information 
+ * relevant to a particular invocation.  This ties the context of the 
+ * request back to the context of the response message (if applicable)
+ * through the use of the MessageContext API.  There is a separate 
+ * MessageContext for both the request and the response. *
+ */
+public interface InvocationContext {
+
+    public List<Handler> getHandlers();
+    
+    public MessageContext getRequestMessageContext();
+    
+    public void setRequestMessageContext(MessageContext ctx);
+    
+    public MessageContext getResponseMessageContext();
+    
+    public void setResponseMessageContext(MessageContext ctx);
+    
+    public Executor getExecutor();
+    
+    public void setExecutor(Executor e);
+    
+    public AsyncListener getAsyncListener();
+    
+    public void setAsyncListener(AsyncListener al);
+    
+    //FIXME: This is temporary.
+    public void setServiceClient(ServiceClient client);
+    
+    //FIXME: This is temporary.
+    public ServiceClient getServiceClient();
+}
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContextFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContextFactory.java
new file mode 100644
index 0000000..de69a02
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContextFactory.java
@@ -0,0 +1,39 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.core;

+

+import javax.xml.ws.Binding;

+

+/**

+ * The InvocationContextFactory is used to create instances of an

+ * InvocationContext.  

+ */

+public class InvocationContextFactory {

+    

+    /**

+     * Creates an instance of an InvocationContext based on the Binding

+     * that was passed in.  

+     */

+    public static InvocationContext createInvocationContext(Binding binding) {

+        InvocationContextImpl ic = new InvocationContextImpl();

+        if (binding != null) {

+            ic.setHandlers(binding.getHandlerChain());        

+        }

+        

+        return ic;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContextImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContextImpl.java
new file mode 100644
index 0000000..501595d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/InvocationContextImpl.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws.core;
+
+import java.util.List;
+import java.util.concurrent.Executor;
+
+import javax.xml.ws.handler.Handler;
+
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.jaxws.impl.AsyncListener;
+
+/**
+ * An implementation of the InvocationContext interface.
+ * 
+ * @see org.apache.axis2.jaxws.core.InvocationContext
+ */
+public class InvocationContextImpl implements InvocationContext {
+
+    private List<Handler> handlers;
+    private MessageContext requestMsgCtx;
+    private MessageContext responseMsgCtx;
+    private Executor executor;
+    private AsyncListener asyncListener;
+    
+    private ServiceClient serviceClient; //FIXME: This is temporary
+    
+    public InvocationContextImpl() {
+        //do nothing
+    }
+    
+    /**
+     * @see org.apache.axis2.jaxws.core.InvocationContext#getHandlers()
+     */
+    public List<Handler> getHandlers() {
+        return handlers;
+    }
+    
+    /**
+     * Sets the list of hanlders for this InvocationContext
+     * 
+     * @param list
+     */
+    public void setHandlers(List<Handler> list) {
+        handlers = list;
+    }
+
+    /**
+     * @see org.apache.axis2.jaxws.core.InvocationContext#setRequestMessageContext(MessageContext)
+     */
+    public void setRequestMessageContext(MessageContext ctx) {
+        requestMsgCtx = ctx;
+    }
+
+    /**
+     * @see org.apache.axis2.jaxws.core.InvocationContext#setResponseMessageContext(MessageContext)
+     */
+    public void setResponseMessageContext(MessageContext ctx) {
+        responseMsgCtx = ctx;
+    }
+
+    /**
+     * @see org.apache.axis2.jaxws.core.InvocationContext#getResponseMessageContext()
+     */
+    public MessageContext getResponseMessageContext() {
+        return responseMsgCtx;
+    }
+
+    /**
+     * @see org.apache.axis2.jaxws.core.InvocationContext#getRequestMessageContext()
+     */
+    public MessageContext getRequestMessageContext() {
+        return requestMsgCtx;
+    }
+    
+    public Executor getExecutor() {
+        return executor;
+    }
+    
+    public void setExecutor(Executor e) {
+        executor = e;
+    }
+    
+    public AsyncListener getAsyncListener() {
+        return asyncListener;
+    }
+    
+    public void setAsyncListener(AsyncListener al) {
+        asyncListener = al;
+    }
+    
+    // FIXME: This is temporary
+    public ServiceClient getServiceClient() {
+        return serviceClient;
+    }
+    
+    // FIXME: This is temporary
+    public void setServiceClient(ServiceClient client) {
+        serviceClient = client;
+    }
+}
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/MessageContext.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/MessageContext.java
new file mode 100644
index 0000000..0f792aa
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/MessageContext.java
@@ -0,0 +1,139 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.core;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.description.OperationDescription;

+import org.apache.axis2.jaxws.description.ServiceDescription;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+/**

+ * The <code>org.apache.axis2.jaxws.core.MessageContext</code> is

+ * an interface that extends the JAX-WS 2.0 <code>javax.xml.ws.handler.MessageContext</code>

+ * defined in the spec.  This encapsulates all of the functionality needed

+ * of the MessageContext for the other JAX-WS spec pieces (the handlers 

+ * for example) and also provides the needed bits of contextual information 

+ * for the rest of the JAX-WS implementation.

+ * 

+ * Specifically, this is responsible for providing APIs so that the client 

+ * and server implementation portions can get to the Message, defined by the 

+ * Message Model format and also any metadata that is available.

+ */

+public class MessageContext {

+

+    private org.apache.axis2.context.MessageContext axisMsgCtx;

+    private Map<String, Object> properties;

+    private ServiceDescription serviceDesc;

+    private OperationDescription operationDesc;

+    private QName operationName;    //FIXME: This should become the OperationDescription

+    private Message message;

+    private Mode mode;

+        

+    public MessageContext() {

+        axisMsgCtx = new org.apache.axis2.context.MessageContext();

+        properties = new HashMap<String, Object>();

+    }

+    

+    public MessageContext(org.apache.axis2.context.MessageContext mc) {

+        axisMsgCtx = mc;

+        properties = new HashMap<String, Object>();

+        

+        //If the Axis2 MessageContext that was passed in already had a SOAPEnvelope

+        //set on it, grab that and create a JAX-WS Message out of it.

+        SOAPEnvelope soapEnv = mc.getEnvelope();

+        if (soapEnv != null) {

+            MessageFactory msgFactory = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);

+            Message newMessage = null;

+            try {

+                newMessage = msgFactory.createFrom(soapEnv);

+            } catch (Exception e) {

+                throw ExceptionFactory.makeWebServiceException("Could not create new Message");

+            }

+            

+            message = newMessage;

+        }

+

+    }

+    

+    public Map<String, Object> getProperties() {   

+        return properties;

+    }

+    

+    public ServiceDescription getServiceDescription() {

+        return serviceDesc;

+    }

+    

+    public void setServiceDescription(ServiceDescription sd) {

+        serviceDesc = sd;

+    }

+    

+    public OperationDescription getOperationDescription() {

+        return operationDesc;

+    }

+    

+    public void setOperationDescription(OperationDescription od) {

+        operationDesc = od;

+    }

+    

+    public Mode getMode() {

+        return mode;

+    }

+    

+    public void setMode(Mode m) {

+        mode = m;

+    }

+    

+    //FIXME: This should become the OperationDescription

+    public QName getOperationName() {

+        return operationName;

+    }

+    

+    //FIXME: This should become the OperationDescription

+    public void setOperationName(QName op) {

+        operationName = op;

+    }

+    

+    public void setMessage(Message msg) {

+        message = msg;

+    }

+    

+    public Message getMessage() {

+        return message;

+    }

+    

+    public org.apache.axis2.context.MessageContext getAxisMessageContext() {

+        return axisMsgCtx;

+    }

+    

+    public ClassLoader getClassLoader() {

+        AxisService svc = axisMsgCtx.getAxisService();

+        if (svc != null)

+            return svc.getClassLoader();

+        else

+            return null;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/AxisInvocationController.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/AxisInvocationController.java
new file mode 100644
index 0000000..e7bb3e9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/AxisInvocationController.java
@@ -0,0 +1,626 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.core.controller;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.concurrent.ExecutionException;

+import java.util.concurrent.ExecutorService;

+import java.util.concurrent.Future;

+

+import javax.activation.DataHandler;

+import javax.xml.namespace.QName;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMText;

+import org.apache.axiom.om.impl.MTOMConstants;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants.Configuration;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.OperationClient;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.AbstractContext;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.engine.MessageReceiver;

+import org.apache.axis2.jaxws.AxisCallback;

+import org.apache.axis2.jaxws.BindingProvider;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.InvocationContext;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.description.OperationDescription;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.impl.AsyncListener;

+import org.apache.axis2.jaxws.impl.AsyncListenerWrapper;

+import org.apache.axis2.jaxws.message.Attachment;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.attachments.AttachmentUtils;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.message.impl.AttachmentImpl;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.apache.axis2.jaxws.util.Constants;

+import org.apache.axis2.util.CallbackReceiver;

+import org.apache.axis2.util.ThreadContextMigratorUtil;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * The <tt>AxisInvocationController</tt> is an implementation of the 

+ * {@link org.apache.axis2.jaxws.core.controller.InvocationController}

+ * interface.  This implemenation uses the Axis2 engine to drive the

+ * request to the target service.  

+ * 

+ * For more information on how to invoke this class, please see the 

+ * InvocationController interface comments.

+ */

+public class AxisInvocationController implements InvocationController {

+    

+    private static Log log = LogFactory.getLog(AxisInvocationController.class);

+    

+    /*

+     *  (non-Javadoc)

+     * @see org.apache.axis2.jaxws.core.controller.InvocationController#invoke(org.apache.axis2.jaxws.core.InvocationContext)

+     */

+    public InvocationContext invoke(InvocationContext ic) {

+        if (log.isDebugEnabled()) {

+            log.debug("Invocation pattern: synchronous");

+        }

+        

+        // Check to make sure we at least have a valid InvocationContext

+        // and request MessageContext

+        if (ic == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("ICErr1"));

+        }

+        if (ic.getRequestMessageContext() == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("ICErr2"));

+        }

+        

+        // Get the request MessageContext

+        MessageContext requestMsgCtx = ic.getRequestMessageContext();

+        MessageContext responseMsgCtx = null;

+        

+        // We need the qname of the operation being invoked to know which 

+        // AxisOperation the OperationClient should be based on.

+        // Note that the OperationDesc is only set through use of the Proxy. Dispatch

+        // clients do not use operations, so the operationDesc will be null.  In this

+        // case an anonymous AxisService with anoymouns AxisOperations for the supported

+        // MEPs will be created; and it is that anonymous operation name which needs to

+        // be specified

+        // TODO: Fix this logic once AxisService is created via annoations and not just WSDL

+        //       If ServiceDesc.axisService is null, then we created an Annon Service and operations in 

+        //       ServiceDelegate.getServiceClient(), and that is what the service client points to.

+        //       Therefore, we need to use the annonymous operation name in that case, so the anonymous service client will find 

+        //       the anonymous AxisOperation on that service.  

+        //       This means the ServiceDesc was not build with WSDL, and so there are no Axis objects attached to them

+        //       i.e the OperationDesc.axisOperation == null

+        QName operationName = getOperationNameToUse(requestMsgCtx, ServiceClient.ANON_OUT_IN_OP);

+

+        // TODO: Will the ServiceClient stick around on the InvocationContext

+        // or will we need some other mechanism of creating this?

+        // Try to create an OperationClient from the passed in ServiceClient

+        ServiceClient svcClient = ic.getServiceClient();

+        OperationClient opClient = createOperationClient(svcClient, operationName);

+        

+        setupProperties(requestMsgCtx, opClient.getOptions());

+        

+        if (opClient != null) {

+            // Get the target endpoint address and setup the TO endpoint 

+            // reference.  This tells us where the request is going.

+            String targetUrl = (String) requestMsgCtx.getProperties().get(

+                    BindingProvider.ENDPOINT_ADDRESS_PROPERTY);

+            EndpointReference toEPR = new EndpointReference(targetUrl);

+            opClient.getOptions().setTo(toEPR);

+            

+            // Get the SOAP Action (if needed)

+            String soapAction = configureSOAPAction(requestMsgCtx);

+            opClient.getOptions().setAction(soapAction);

+            

+            // Use the OperationClient to send the request and put the contents

+            // of the response in the response MessageContext.

+            try {

+                // The MessageContext will contain a Message object with the

+                // contents that need to be sent.  We need to get those contents

+                // in a form that Axis2 can consume them, an AXIOM SOAPEnvelope.

+                Message requestMsg = requestMsgCtx.getMessage();

+                SOAPEnvelope requestOM = (SOAPEnvelope) requestMsg.getAsOMElement();

+                

+                org.apache.axis2.context.MessageContext axisRequestMsgCtx = 

+                    requestMsgCtx.getAxisMessageContext();

+                axisRequestMsgCtx.setEnvelope(requestOM);

+                

+                // For now, just take all of the properties that were in the 

+                // JAX-WS MessageContext, and set them on the Axis2 MessageContext.

+                axisRequestMsgCtx.setProperty(AbstractContext.COPY_PROPERTIES,

+                    Boolean.TRUE);

+                Map props = axisRequestMsgCtx.getOptions().getProperties();

+                props.putAll(requestMsgCtx.getProperties());

+                

+                axisRequestMsgCtx.getOptions().setProperties(props);

+                if (log.isDebugEnabled()) {

+                    log.debug("Properties: " + axisRequestMsgCtx.getProperties().toString());

+                }

+                

+                // Setting the ServiceContext will create the association between 

+                // the OperationClient it's MessageContexts and the 

+                // AxisService/AxisOperation that they are tied to.

+                axisRequestMsgCtx.setServiceContext(svcClient.getServiceContext());

+

+                // Set the Axis2 request MessageContext

+                opClient.addMessageContext(axisRequestMsgCtx);

+

+                //This assumes that we are on the ultimate execution thread

+                ThreadContextMigratorUtil.performMigrationToContext(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisRequestMsgCtx);

+                opClient.execute(true);

+                ThreadContextMigratorUtil.performContextCleanup(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisRequestMsgCtx);

+                

+                // Collect the response MessageContext and envelope

+                org.apache.axis2.context.MessageContext axisResponseMsgCtx = 

+                    opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+                

+                //This assumes that we are on the ultimate execution thread

+                ThreadContextMigratorUtil.performMigrationToThread(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisResponseMsgCtx);

+                

+                SOAPEnvelope rspEnvelope = axisResponseMsgCtx.getEnvelope();

+                Message responseMsg = null;

+                if (rspEnvelope != null) {

+                    responseMsg = createMessageFromOM(rspEnvelope);

+                }

+                

+                // Setup the response MessageContext

+                responseMsgCtx = new MessageContext(axisResponseMsgCtx);

+                responseMsgCtx.setMessage(responseMsg);

+                

+                //FIXME: This should be revisited when we re-work the MTOM support.

+                //This destroys performance by forcing a double pass through the message.

+                //If attachments are found, we must find all of the OMText nodes and 

+                //replace them with <xop:include> elements so they can be processed

+                //correctly by JAXB.

+                if (axisResponseMsgCtx.getProperty(MTOMConstants.ATTACHMENTS) != null) { 

+                    Message response = responseMsgCtx.getMessage();

+                    response.setMTOMEnabled(true);

+                    

+                    ArrayList<OMText> binaryNodes = AttachmentUtils.findBinaryNodes(

+                            axisResponseMsgCtx.getEnvelope());

+                    if (binaryNodes != null) {

+                        Iterator<OMText> itr = binaryNodes.iterator();

+                        while (itr.hasNext()) {

+                            OMText node = itr.next();

+                            OMElement xop = AttachmentUtils.makeXopElement(node);

+                            node.getParent().addChild(xop);

+                            node.detach();

+                            

+                            Attachment a = new AttachmentImpl((DataHandler) node.getDataHandler(), 

+                                    node.getContentID());

+                            response.addAttachment(a);

+                        }

+                    }

+                }

+            } catch (AxisFault e) {

+                throw ExceptionFactory.makeWebServiceException(e);

+            } catch (MessageException e) { 

+                throw ExceptionFactory.makeWebServiceException(e);

+            }

+            

+            // Set the response MessageContext on the InvocationContext

+            ic.setResponseMessageContext(responseMsgCtx);

+        }

+

+        return ic;

+    }

+    

+    /*

+     *  (non-Javadoc)

+     * @see org.apache.axis2.jaxws.core.controller.InvocationController#invokeOneWay(org.apache.axis2.jaxws.core.InvocationContext)

+     */

+    public void invokeOneWay(InvocationContext ic) {

+        if (log.isDebugEnabled()) {

+            log.debug("Invocation pattern: one-way");

+        }

+        

+        // Check to make sure we at least have a valid InvocationContext

+        // and request MessageContext

+        if (ic == null) {

+            throw ExceptionFactory.makeWebServiceException("Cannot invoke; InvocationContext was null");

+        }

+        if (ic.getRequestMessageContext() == null) {

+            throw ExceptionFactory.makeWebServiceException("Cannot invoke; request MessageContext was null");

+        }

+        

+        // Setup the MessageContext for the response

+        MessageContext requestMsgCtx = ic.getRequestMessageContext();

+        

+        //TODO: Need to figure out whether or not we need to create the response

+        //MessageContext here and whether or not handlers need to be run for 

+        //one-way invocations.

+        MessageContext responseMsgCtx = new MessageContext();

+        ic.setResponseMessageContext(responseMsgCtx);

+        

+        // Try to create an OperationClient from the passed in ServiceClient

+        ServiceClient svcClient = ic.getServiceClient();

+

+        // We need the qname of the operation being invoked to know which 

+        // AxisOperation the OperationClient should be based on.

+        // Note that the OperationDesc is only set through use of the Proxy. Dispatch

+        // clients do not use operations, so the operationDesc will be null.  In this

+        // case an anonymous AxisService with anoymouns AxisOperations for the supported

+        // MEPs will be created; and it is that anonymous operation name which needs to

+        // be specified

+        // TODO: Fix this logic once AxisService is created via annoations and not just WSDL

+        //       If ServiceDesc.axisService is null, then we created an Annon Service and operations in 

+        //       ServiceDelegate.getServiceClient(), and that is what the service client points to.

+        //       Therefore, we need to use the annonymous operation name in that case, so the anonymous service client will find 

+        //       the anonymous AxisOperation on that service.  

+        //       This means the ServiceDesc was not build with WSDL, and so there are no Axis objects attached to them

+        //       i.e the OperationDesc.axisOperation == null

+        QName operationName = getOperationNameToUse(requestMsgCtx, ServiceClient.ANON_OUT_ONLY_OP);

+

+        OperationClient opClient = createOperationClient(svcClient, operationName);

+        

+        setupProperties(requestMsgCtx, opClient.getOptions());

+        

+        if (opClient != null) {

+            // Get the target endpoint address and setup the TO endpoint 

+            // reference.  This tells us where the request is going.

+            String targetUrl = (String) requestMsgCtx.getProperties().get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY);

+            EndpointReference toEPR = new EndpointReference(targetUrl);

+            opClient.getOptions().setTo(toEPR);

+            

+            // Get the SOAP Action (if needed)

+            String soapAction = configureSOAPAction(requestMsgCtx);

+            opClient.getOptions().setAction(soapAction);

+            

+            // Use the OperationClient to send the request.

+            Message responseMsg = null;

+            org.apache.axis2.context.MessageContext axisResponseMsgCtx = null;

+            try {

+                // We need to prepare the contents of the Message from the request 

+                // MessageContext to be sent

+                Message requestMsg = requestMsgCtx.getMessage();

+                SOAPEnvelope requestOM = (SOAPEnvelope) requestMsg.getAsOMElement();

+                

+                org.apache.axis2.context.MessageContext axisRequestMsgCtx = 

+                    requestMsgCtx.getAxisMessageContext();

+                

+                // For now, just take all of the properties that were in the 

+                // JAX-WS MessageContext, and set them on the Axis2 MessageContext.

+                axisRequestMsgCtx.setProperty(AbstractContext.COPY_PROPERTIES,

+                    Boolean.TRUE);

+                Map props = axisRequestMsgCtx.getOptions().getProperties();

+                props.putAll(requestMsgCtx.getProperties());

+                axisRequestMsgCtx.getOptions().setProperties(props);

+                if (log.isDebugEnabled()) {

+                    log.debug("Properties: " + axisRequestMsgCtx.getProperties().toString());

+                }

+                

+                axisRequestMsgCtx.setEnvelope(requestOM);

+                

+                // Setting the ServiceContext will create the association between 

+                // the OperationClient it's MessageContexts and the 

+                // AxisService/AxisOperation that they are tied to.

+                axisRequestMsgCtx.setServiceContext(svcClient.getServiceContext());

+                opClient.addMessageContext(axisRequestMsgCtx);

+

+                //This assumes that we are on the ultimate execution thread

+                ThreadContextMigratorUtil.performMigrationToContext(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisRequestMsgCtx);

+                opClient.execute(true);

+                ThreadContextMigratorUtil.performContextCleanup(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisRequestMsgCtx);

+            } catch (AxisFault e) {

+                throw ExceptionFactory.makeWebServiceException(e);

+            } catch (MessageException e) {

+                throw ExceptionFactory.makeWebServiceException(e);

+            }

+        }

+        

+        return;

+    }

+    

+    /*

+     *  (non-Javadoc)

+     * @see org.apache.axis2.jaxws.core.controller.InvocationController#invokeAsync(org.apache.axis2.jaxws.core.InvocationContext, javax.xml.ws.AsyncHandler)

+     */

+    public Future<?> invokeAsync(InvocationContext ic, AsyncHandler callback) {

+        if (log.isDebugEnabled()) {

+            log.debug("Invocation pattern: async (callback)");

+        }

+

+        // Check to make sure we at least have a valid InvocationContext

+        // and request MessageContext

+        if (ic == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("ICErr1"));

+        }

+        if (ic.getRequestMessageContext() == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("ICErr3"));

+        }

+        

+        // Setup the MessageContext for the response

+        MessageContext requestMsgCtx = ic.getRequestMessageContext();

+        

+        ServiceClient svcClient = ic.getServiceClient();

+        // We need the qname of the operation being invoked to know which 

+        // AxisOperation the OperationClient should be based on.

+        // Note that the OperationDesc is only set through use of the Proxy. Dispatch

+        // clients do not use operations, so the operationDesc will be null.  In this

+        // case an anonymous AxisService with anoymouns AxisOperations for the supported

+        // MEPs will be created; and it is that anonymous operation name which needs to

+        // be specified

+        // TODO: Fix this logic once AxisService is created via annoations and not just WSDL

+        //       If ServiceDesc.axisService is null, then we created an Annon Service and operations in 

+        //       ServiceDelegate.getServiceClient(), and that is what the service client points to.

+        //       Therefore, we need to use the annonymous operation name in that case, so the anonymous service client will find 

+        //       the anonymous AxisOperation on that service.  

+        //       This means the ServiceDesc was not build with WSDL, and so there are no Axis objects attached to them

+        //       i.e the OperationDesc.axisOperation == null

+        QName operationName = getOperationNameToUse(requestMsgCtx, ServiceClient.ANON_OUT_IN_OP);

+

+        OperationClient opClient = createOperationClient(svcClient, operationName);

+        

+        setupProperties(requestMsgCtx, opClient.getOptions());

+        

+        if (opClient != null) {

+            // Get the target endpoint address and setup the TO endpoint 

+            // reference.  This tells us where the request is going.

+            String targetUrl = (String) requestMsgCtx.getProperties().get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY);

+            EndpointReference toEPR = new EndpointReference(targetUrl);

+            opClient.getOptions().setTo(toEPR);

+            

+            // Get the SOAP Action (if needed)

+            String soapAction = configureSOAPAction(requestMsgCtx);

+            opClient.getOptions().setAction(soapAction);

+            

+            // Setup the client so that it knows whether the underlying call to

+            // Axis2 knows whether or not to start a listening port for an

+            // asynchronous response.

+            Boolean useAsyncMep = (Boolean) requestMsgCtx.getProperties().get(Constants.USE_ASYNC_MEP);

+            if((useAsyncMep != null && useAsyncMep.booleanValue()) 

+                    || opClient.getOptions().isUseSeparateListener()) {

+                opClient.getOptions().setUseSeparateListener(true);

+                opClient.getOptions().setTransportInProtocol("http");

+                // Setup the response callback receiver to receive the async response

+                // This logic is based on org.apache.axis2.client.ServiceClient.sendReceiveNonBlocking(...)

+                AxisOperation op = opClient.getOperationContext().getAxisOperation();

+                MessageReceiver messageReceiver = op.getMessageReceiver();

+                if (messageReceiver == null || !(messageReceiver instanceof CallbackReceiver))

+                    op.setMessageReceiver(new CallbackReceiver());

+            }

+            

+            // There should be an AsyncListener that is configured and set on the

+            // InvocationContext.  We must get this and use it to wait for the 

+            // async response to come back.  The AxisCallback that is set on the 

+            // AsyncListener is the callback that Axis2 will call when the response

+            // has arrived.

+            AsyncListener listener = ic.getAsyncListener();

+            AxisCallback axisCallback = new AxisCallback();

+            listener.setAxisCallback(axisCallback);

+            listener.setInvocationContext(ic);

+            

+            // Once the AsyncListener is configured, we must include that in an 

+            // AsyncListenerWrapper.  The wrapper is what will handle the lifecycle 

+            // of the listener and determine when it's started and stopped.

+            AsyncListenerWrapper<?> wrapper = new AsyncListenerWrapper<Object>(listener);

+

+            // Inside of the wrapper we must set the callback that the JAX-WS

+            // client programmer provided.  This is the user object that we 

+            // must call back on once we've done everything we need to do at

+            // the JAX-WS layer.

+            if(callback != null){

+                wrapper.setAsyncHandler(callback);

+            }

+            else {

+                throw ExceptionFactory.makeWebServiceException(Messages.getMessage("ICErr4"));

+            }

+            

+            try {

+                // Get the request message from the MessageContext and send it

+                // using the OperationClient API.

+                Message requestMsg = requestMsgCtx.getMessage();

+                SOAPEnvelope requestOM = (SOAPEnvelope) requestMsg.getAsOMElement();

+                

+                // The envelope must be set on the Axis2 MessageContext as a

+                // OM-based SOAPEnvelope

+                org.apache.axis2.context.MessageContext axisRequestMsgCtx = 

+                    requestMsgCtx.getAxisMessageContext();

+                axisRequestMsgCtx.setEnvelope(requestOM);

+                

+                // For now, just take all of the properties that were in the 

+                // JAX-WS MessageContext, and set them on the Axis2 MessageContext.

+                axisRequestMsgCtx.setProperty(AbstractContext.COPY_PROPERTIES,

+                    Boolean.TRUE);

+                Map props = axisRequestMsgCtx.getOptions().getProperties();

+                props.putAll(requestMsgCtx.getProperties());

+                axisRequestMsgCtx.getOptions().setProperties(props);

+                if (log.isDebugEnabled()) {

+                    log.debug("Properties: " + axisRequestMsgCtx.getProperties().toString());

+                }

+                

+                // Setting the ServiceContext will create the association between 

+                // the OperationClient it's MessageContexts and the 

+                // AxisService/AxisOperation that they are tied to.

+                axisRequestMsgCtx.setServiceContext(svcClient.getServiceContext());

+                opClient.addMessageContext(axisRequestMsgCtx);

+                opClient.setCallback(axisCallback);

+                ThreadContextMigratorUtil.performMigrationToContext(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisRequestMsgCtx);

+                opClient.execute(false);

+                ThreadContextMigratorUtil.performContextCleanup(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisRequestMsgCtx);

+            } catch (AxisFault e) {

+                throw ExceptionFactory.makeWebServiceException(e);

+            } catch (MessageException e) {

+                throw ExceptionFactory.makeWebServiceException(e);

+            }

+            

+            // Now that the request has been sent, start the listener thread so that it can

+            // catch the async response.

+            // TODO: Need to determine whether this should be done BEFORE or AFTER

+            // we send the request.  My guess is before though.

+            try {

+                // TODO:Need to figure out where we get the Executor from

+                // Can't be from the MessageContext, but should maybe be 

+                // set somewhere accessible.

+                // FIXME: This should NOT be an ExecutorService, but should just

+                // be a plain old Executor.

+                ExecutorService exec = (ExecutorService) ic.getExecutor();

+                Future<?> future = exec.submit(wrapper);

+                future.get();

+                //TODO temp fix to resolve async callback hang.

+                exec.shutdown();

+            } catch (InterruptedException e) {

+                e.printStackTrace();

+                throw ExceptionFactory.makeWebServiceException(e);

+            } catch (ExecutionException e) {

+                e.printStackTrace();

+                throw ExceptionFactory.makeWebServiceException(e);

+            }

+            

+            return wrapper;

+        }

+        

+        return null;

+    }

+    

+    /*

+     *  (non-Javadoc)

+     * @see org.apache.axis2.jaxws.core.controller.InvocationController#invokeAsync(org.apache.axis2.jaxws.core.InvocationContext)

+     */

+    public Response invokeAsync(InvocationContext ic) {

+        if (log.isDebugEnabled()) {

+            log.debug("Invocation pattern: async (polling)");

+        }

+        

+        throw ExceptionFactory.makeWebServiceException(Messages.getMessage("AsyncPollingNotSupported"));

+    }

+    

+    /**

+     * Returns the SOAPAction that should be used for the invocation.  This

+     * method will get the information from the MessageContext passed in

+     * either from :

+     * 

+     * a) the JAX-WS properties available on the MessageContext or

+     * b) the WSDL configuration information available from the MessageContext 

+     * 

+     * @param ctx

+     * @return

+     */

+    private String configureSOAPAction(MessageContext ctx) {

+        //TODO: Need to get SOAPAction information from the WSDL config

+        

+        //TODO: Need to determine what the story is with using the SOAPAction

+        // declared in the WSDL.  If the property says not to use it, but it's

+        // listed in the WSDL, do we still include it?  Do we include it if

+        // the property is not even set?

+        Boolean useSoapAction = (Boolean) ctx.getProperties().get(BindingProvider.SOAPACTION_USE_PROPERTY);

+        if(useSoapAction != null && useSoapAction.booleanValue()){

+            return (String) ctx.getProperties().get(BindingProvider.SOAPACTION_URI_PROPERTY);

+        }

+        

+        return null;

+    }

+    

+    /**

+     * Use the provided ServiceClient instance to create an OperationClient identified 

+     * by the operation QName provided.

+     * 

+     * @param sc

+     * @param operation

+     * @return

+     */

+    private OperationClient createOperationClient(ServiceClient sc, QName operation) {

+        if (sc == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("ICCreateOpClientErr1"));

+        }

+        if (operation == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("ICCreateOpClientErr2"));

+        }

+        

+        if (log.isDebugEnabled()) {

+            log.debug("Creating OperationClient for operation: " + operation);

+        }

+        

+        try {

+            OperationClient client = sc.createClient(operation);

+            return client;

+        } catch (AxisFault e) {

+            //TODO: NLS and ExceptionFactory

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+    }

+    

+    private Message createMessageFromOM(OMElement om) throws MessageException {

+        try {

+            MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);

+            Message msg = mf.createFrom(om);

+            return msg;

+        } catch (Exception e) {

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+    }

+    

+    /*

+     * TODO: This is a first pass at filtering the properties that are set on the 

+     * RequestContext.  Right now it's called during the invoke, but needs to be 

+     * moved over to when the property is set.  This should not be in the path

+     * of performance.

+     */

+    private void setupProperties(MessageContext mc, Options ops) {

+        Map<String, Object> properties = mc.getProperties();

+        for (Iterator<String> it = properties.keySet().iterator(); it.hasNext(); ) {

+            String key = it.next();

+            Object value = properties.get(key);

+            ops.setProperty(key, value);

+        }

+        

+        // Enable MTOM

+        Message msg = mc.getMessage();

+        if (msg.isMTOMEnabled()) {

+            ops.setProperty(Configuration.ENABLE_MTOM, "true");

+        }

+    }

+    

+    // TODO: This method may need to be removed or refactored when the ServiceDescription can

+    //       create the AxisService hierachy using annotations.  Currently the AxisService hierachy is

+    //       only created under a ServiceDescription if WSDL is supplied

+    private static QName getOperationNameToUse(MessageContext requestMsgCtx, QName defaultOpName) {

+        // We need the qname of the operation being invoked to know which 

+        // AxisOperation the OperationClient should be based on.

+        // Note that the OperationDesc is only set through use of the Proxy. Dispatch

+        // clients do not use operations, so the operationDesc will be null.  In this

+        // case an anonymous AxisService with anoymouns AxisOperations for the supported

+        // MEPs will be created; and it is that anonymous operation name which needs to

+        // be specified

+        // TODO: Fix this logic once AxisService is created via annoations and not just WSDL

+        //       If ServiceDesc.axisService is null (which currently happens if no WSDL 

+        //       was supplied when the ServiceDesc is created), then we created an annonymous Service and operations in 

+        //       ServiceDelegate.getServiceClient(), and that is what the service client used in the inovke points to.

+        //       Therefore, we need to use the annonymous operation name in that case, so the anonymous service client will find 

+        //       the anonymous AxisOperation on that service.  

+        //       The check below for this case is that the AxisOperation is null, since all Axis description

+        //       objects (including AxisOperation) are only created if WSDL was use to create the ServiceDesc.

+        //       This will probably need to change once Axis descriptions are also created from annotions.

+        QName operationName = null;

+        OperationDescription opDesc = requestMsgCtx.getOperationDescription();

+        if (opDesc != null && opDesc.getAxisOperation() != null)

+            operationName = opDesc.getName();

+        else 

+            operationName = defaultOpName;

+        return operationName;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/InvocationController.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/InvocationController.java
new file mode 100644
index 0000000..46da2c6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/InvocationController.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws.core.controller;
+
+import java.util.concurrent.Future;
+
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+import org.apache.axis2.jaxws.core.InvocationContext;
+
+/**
+ * The <tt>InvocationController</tt> is an interface for an entity used to
+ * invoke a target web service.  All of the information that the 
+ * InvocationController needs should exist within the InvocatonContext
+ * that is passed in to the various invoke methods.  
+ * 
+ * The request information is passed in within the InvocationContext.  The
+ * InvocationController assumes that there is a MessageContext within that
+ * InvocationContext that is populated with all of the information that it
+ * needs to invoke.  If not, an error will be returned.  Once the response 
+ * comes back, the information for that response will be held inside of the
+ * MessageContext representing the response, that exists in the 
+ * InvocationContext.
+ * 
+ * The InvocationController supports four different invocation patterns:
+ * 
+ * 1) synchronous - This is represented by the {@link #invoke(InvocationContext)}
+ * method.  This is a blocking, request/response call to the web service.
+ * 
+ * 2) one-way - This is represented by the {@link #invokeOneWay(InvocationContext)}
+ * method.  This is a one-way invocation that only returns errors related
+ * to sending the message.  If an error occurs while processing, the client
+ * will not be notified.
+ * 
+ * 3) asynchronous (callback) - {@link #invokeAsync(InvocationContext, AsyncHandler)}
+ * 
+ * 4) asynchronous (polling) - {@link #invokeAsync(InvocationContext)}
+ */
+public interface InvocationController {
+    
+    /**
+     * Performs a synchronous (blocking) invocation of a target service.  The 
+     * InvocationContext passed in should contain a valid MessageContext 
+     * containing the properties and message to be sent for the request.  The
+     * response contents will be processed and placed in the InvocationContext
+     * as well.
+     * 
+     * @param ic
+     * @return
+     */
+    public InvocationContext invoke(InvocationContext ic);
+    
+    /**
+     * Performs a one-way invocation of the client.  This is SHOULD NOT be a 
+     * robust invocation, so any fault that occurs during the processing of 
+     * the request will not be returned to the client.  Errors returned to the
+     * client are problems that occurred during the sending of the message to 
+     * the server.
+     * 
+     * @param ic
+     */
+    public void invokeOneWay(InvocationContext ic);
+    
+    /**
+     * Performs an asynchronous (non-blocking) invocation of the client based 
+     * on a callback model.  The AsyncHandler that is passed in is the callback
+     * that the client programmer supplied when they invoked their JAX-WS
+     * Dispatch or their SEI-based dynamic proxy.  
+     * 
+     * @param ic
+     * @param callback
+     * @return
+     */
+    public Response invokeAsync(InvocationContext ic);
+    
+    /**
+     * Performs an asynchronous (non-blocking) invocation of the client based 
+     * on a polling model.  The Response object that is returned allows the 
+     * client programmer to poll against it to see if a response has been sent
+     * back by the server.
+     * 
+     * @param ic
+     * @return
+     */
+    public Future<?> invokeAsync(InvocationContext ic, AsyncHandler asyncHandler);
+}
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/util/MessageContextUtils.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/util/MessageContextUtils.java
new file mode 100644
index 0000000..5993f29
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/core/util/MessageContextUtils.java
@@ -0,0 +1,57 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.core.util;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.util.Utils;

+

+/**

+ * A utility class for handling some of the common issues related to 

+ * the JAX-WS MessageContext.

+ */

+public class MessageContextUtils {

+

+    /**

+     * Given a MessageContext, create a new MessageContext from there with the

+     * necessary information to make sure the new MessageContext is related

+     * to the existing one.  An example of a usage for this would be to create

+     * the MessageContext for a response based on the MessageContext of a 

+     * particular request. 

+     * 

+     * @param mc - the MessageContext to use as the source

+     * @return

+     */

+    public static MessageContext createMessageMessageContext(MessageContext mc) {

+        try {

+            org.apache.axis2.context.MessageContext sourceAxisMC = mc.getAxisMessageContext();

+            

+            // There are a number of things that need to be copied over at the

+            // Axis2 level.

+            org.apache.axis2.context.MessageContext newAxisMC = 

+                Utils.createOutMessageContext(sourceAxisMC);

+            

+            MessageContext newMC = new MessageContext(newAxisMC);

+            

+            return newMC;

+        } catch (AxisFault e) {

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+    }

+    

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/DescriptionFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/DescriptionFactory.java
new file mode 100644
index 0000000..8e21cbc
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/DescriptionFactory.java
@@ -0,0 +1,62 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.lang.reflect.Method;

+import java.lang.reflect.Modifier;

+import java.net.URL;

+

+import javax.jws.WebService;

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.jaxws.ExceptionFactory;

+

+/**

+ * Creates the JAX-WS metadata descritpion hierachy from some combinations of

+ * WSDL, Java classes with annotations, and (in the future) deployment descriptors.

+ */

+public class DescriptionFactory {

+    /**

+     * A DescrptionFactory can not be instantiated; all methods are static.

+     */

+    private DescriptionFactory() {

+    }

+    

+    public static ServiceDescription createServiceDescription(URL wsdlURL, QName serviceQName, Class serviceClass) {

+        return new ServiceDescription(wsdlURL, serviceQName, serviceClass);

+    }

+    

+    // TODO: Taking an AxisService is only temporary; the AxisService should be created when creating the ServiceDesc

+    public static ServiceDescription createServiceDescriptionFromServiceImpl(Class serviceImplClass, AxisService axisService) {

+        return new ServiceDescription(serviceImplClass, axisService);

+    }

+

+    /**

+     * Update an existing ServiceDescription with an annotated SEI

+     * @param serviceDescription

+     * @param seiClass 

+     * @param portName Can be null

+     * @return

+     */

+    public static ServiceDescription updateEndpoint(ServiceDescription serviceDescription, Class sei, QName portQName, ServiceDescription.UpdateType updateType ) {

+        serviceDescription.updateEndpointDescription(sei, portQName, updateType);

+        return serviceDescription;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/DescriptionUtils.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/DescriptionUtils.java
new file mode 100644
index 0000000..f1f1acd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/DescriptionUtils.java
@@ -0,0 +1,51 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import javax.xml.namespace.QName;

+

+/**

+ * 

+ */

+public class DescriptionUtils {

+    

+    public static boolean isEmpty(String string) {

+        return (string == null || "".equals(string));

+    }

+    

+    public static boolean isEmpty(QName qname) {

+        return qname == null || isEmpty(qname.getLocalPart());

+    }

+

+    /**

+     * Creat a java class name given a java method name (i.e. capitalize the first letter)

+     * @param name

+     * @return

+     */

+    public static String javaMethodtoClassName(String methodName) {

+        String className = null;

+        if(methodName != null){

+            StringBuffer buildClassName = new StringBuffer(methodName);

+            buildClassName.replace(0, 1, methodName.substring(0,1).toUpperCase());

+            className = buildClassName.toString();

+        }

+        return className;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescription.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescription.java
new file mode 100644
index 0000000..51122bb
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescription.java
@@ -0,0 +1,677 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+

+import javax.jws.WebService;

+import javax.wsdl.Definition;

+import javax.wsdl.Port;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.BindingType;

+import javax.xml.ws.ServiceMode;

+import javax.xml.ws.WebServiceProvider;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.deployment.DeploymentException;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.OutInAxisOperation;

+import org.apache.axis2.description.OutOnlyAxisOperation;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder;

+import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * An EndpointDescription corresponds to a particular Service Implementation. It

+ * can correspond to either either a client to that impl or the actual service

+ * impl.

+ * 

+ * The EndpointDescription contains information that is relevant to both a

+ * Provider-based and SEI-based (aka Endpoint-based or Java-based) enpdoints.

+ * SEI-based endpoints (whether they have an explicit or implcit SEI) will have

+ * addtional metadata information in an EndpointInterfaceDescription class and

+ * sub-hierachy; Provider-based endpoitns to not have such a hierachy.

+ */

+

+/*

+Working-design information.

+

+Java Name: none [client]; Endpoint implementation class [server]

+

+Axis2 Delegate: AxisService

+

+JSR-181 Annotations: TBD

+

+WSDL Elements

+<port

+

+JAX-WS Annotations: 

+@ServiceMode (value) [Server, jaxws.Provider?]

+@WebServiceProvider(wsdllocation, serviceName, portName, targetNamespace) [Server, jaxws.Provider]

+@BindingType(value) [Server, endpoint impl]

+TBD

+

+Properties available to JAXWS runtime: TBD

+

+ */

+/*

+ * TODO: EndpointDescription should be created via AxisService objects and not directly from WSDL

+ * IMPORTANT NOTE: Axis2 currently only supports 1 service and 1 port under that service.  When that is

+ * fixed, that will probably have an impact on this class.  In particular, I think this should be created 

+ * somehow from an AxisService/AxisPort combination, and not directly from the WSDL.

+ */

+public class EndpointDescription {

+    private ServiceDescription parentServiceDescription;

+    private AxisService axisService;

+

+    private QName portQName;

+    // Corresponds to a port that was added dynamically via addPort and is not declared (either in WSDL or annotations)

+    private boolean isDynamicPort;

+    // Note that an EndpointInterfaceDescription will ONLY be set for an Endpoint-based implementation;

+    // it will NOT be set for a Provider-based implementation

+    private EndpointInterfaceDescription endpointInterfaceDescription;

+

+    // This can be an SEI (on the client or server) or a Service implentation (server only)

+    // Note that for clients that are Dispatch, this will be null.  Also note that a client that was initially

+    // dispatch (sei = null) could later do a getPort(sei), at which time the original EndpointDescription will be

+    // updated with the SEI information.

+    private Class implOrSEIClass;

+

+    //On Client side, there should be One ServiceClient instance per AxisSerivce

+    private ServiceClient serviceClient = null;

+    

+    public static final String AXIS_SERVICE_PARAMETER = "org.apache.axis2.jaxws.description.EndpointDescription";

+    private static final Log log = LogFactory.getLog(EndpointDescription.class);

+

+    

+    // ===========================================

+    // ANNOTATION related information

+    // ===========================================

+    

+    // ANNOTATION: @WebService and @WebServiceProvider

+    // Only one of these two annotations will be set; they are mutually exclusive

+    private WebService          webServiceAnnotation;

+    private WebServiceProvider  webServiceProviderAnnotation;

+    // Information common to both WebService and WebServiceProvider annotations

+    private String              annotation_WsdlLocation;

+    private String              annotation_ServiceName;

+    private String              annotation_PortName;

+    private String              annotation_TargetNamespace;

+    // Information only set on WebService annotation

+    private String              webService_EndpointInterface;

+    private String              webService_Name;

+

+    // ANNOTATION: @ServiceMode

+    // Note this is only valid on a Provider-based endpoint

+    private ServiceMode         serviceModeAnnotation;

+    private Service.Mode        serviceModeValue;

+    // Default ServiceMode.value per JAXWS Spec 7.1 "javax.xml.ServiceMode" pg 79

+    public static final javax.xml.ws.Service.Mode  ServiceMode_DEFAULT = javax.xml.ws.Service.Mode.PAYLOAD;

+    

+    // ANNOTATION: @BindingType

+    private BindingType         bindingTypeAnnotation;

+    private String              bindingTypeValue;

+    // Default BindingType.value per JAXWS Spec Sec 7.8 "javax.xml.ws.BindingType" pg 83 

+    // and Sec 1.4 "SOAP Transport and Transfer Bindings" pg 119

+    public static final String  BindingType_DEFAULT = javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING;

+    

+    // ANNOTATION: @HandlerChain

+    // TODO: @HandlerChain support

+    // TODO: This needs to be a collection of handler descriptions; use JAX-WS Appendix B Handler Chain Configuration File Schema as a starting point

+    private ArrayList<String> handlerList = new ArrayList<String>();

+

+    /**

+     * Create an EndpointDescription based on the WSDL port.  Note that per the JAX-WS Spec (Final Release, 4/19/2006

+     * Section 4.2.3 Proxies, page 55)the "namespace component of the port is the target namespace of the WSDL 

+     * definition document".

+     * Note this is currently only used on the client-side (this may change).

+     * 

+     * @param theClass The SEI or Impl class.  This will be NULL for Dispatch clients

+     *                 since they don't use an SEI

+     */

+    public EndpointDescription(Class theClass, QName portName, ServiceDescription parent) {

+        this(theClass, portName, false, parent);

+    }

+    public EndpointDescription(Class theClass, QName portName, boolean dynamicPort, ServiceDescription parent) {

+        // TODO: This and the other constructor will (eventually) take the same args, so the logic needs to be combined

+        // TODO: If there is WSDL, could compare the namespace of the defn against the portQName.namespace

+        this.parentServiceDescription = parent;

+        this.portQName = portName;

+        this.implOrSEIClass = theClass;

+        this.isDynamicPort = dynamicPort;

+        

+        // TODO: Refactor this with the consideration of no WSDL/Generic Service/Annotated SEI

+        setupAxisService();

+        addToAxisService();

+

+        buildDescriptionHierachy();

+        addAnonymousAxisOperations();

+        // This will set the serviceClient field after adding the AxisService to the AxisConfig

+        getServiceClient();

+        // Give the configuration builder a chance to finalize configuration for this service

+        try {

+            getServiceDescription().getClientConfigurationFactory().completeAxis2Configuration(axisService);

+        } catch (DeploymentException e) {

+            // TODO RAS

+            // TODO NLS

+            // TODO: Remove this println

+            System.out.println("Caught exception in ServiceDescription.ServiceDescription: " + e);

+            e.printStackTrace();

+//            throw ExceptionFactory.makeWebServiceException("ServiceDescription caught " + e);

+        } catch (Exception e) {

+            // TODO RAS

+            // TODO NLS

+            // TODO: Remove this println

+            System.out.println("Caught exception in ServiceDescription.ServiceDescription: " + e);

+            e.printStackTrace();

+//            throw ExceptionFactory.makeWebServiceException("ServiceDescription caught " + e);

+        }

+    }

+    

+    /**

+     * Create from an annotated implementation or SEI class.

+     * Note this is currently used only on the server-side (this probably won't change).

+     *

+     * @param theClass An implemntation or SEI class

+     * @param portName May be null; if so the annotation is used

+     * @param parent

+     */

+    // TODO: Remove axisService as paramater when the AxisService can be constructed from the annotations

+    EndpointDescription(Class theClass, QName portName, AxisService axisService, ServiceDescription parent) {

+        this.parentServiceDescription = parent;

+        this.portQName = portName;

+        this.implOrSEIClass = theClass;

+        this.axisService = axisService;

+        

+        addToAxisService();

+

+        buildEndpointDescriptionFromNoWSDL();

+        

+        // The anonymous AxisOperations are currently NOT added here.  The reason 

+        // is that (for now) this is a SERVER-SIDE code path, and the anonymous operations

+        // are only needed on the client side.

+    }

+

+    private void addToAxisService() {

+        // Add a reference to this EndpointDescription object to the AxisService

+        if (axisService != null) {

+            Parameter parameter = new Parameter();

+            parameter.setName(AXIS_SERVICE_PARAMETER);

+            parameter.setValue(this);

+            // TODO: What to do if AxisFault

+            try {

+                axisService.addParameter(parameter);

+            } catch (AxisFault e) {

+                // TODO: Throwing wrong exception

+                e.printStackTrace();

+                throw new UnsupportedOperationException("Can't add AxisService param: " + e);

+            }

+        }

+    }

+

+    private void buildEndpointDescriptionFromNoWSDL() {

+        // TODO: The comments below are not quite correct; this method is used on BOTH the 

+        //       client and server.  On the client the class is always an SEI.  On the server it is always a service impl

+        //       which may be a provider or endpoint based; endpoint based may reference an SEI class

+        

+        // The Service Implementation class could be either Provider-based or Endpoint-based.  The 

+        // annotations that are present are similar but different.  Conformance requirements 

+        // per JAX-WS

+        // - A Provider based implementation MUST carry the @WebServiceProvider annotation

+        //   per section 5.1 javax.xml.ws.Provider on page 63

+        // - An Endpoint based implementation MUST carry the @WebService annotation per JSR-181 

+        //   (reference TBD) and JAX-WS (reference TBD)

+        // - An Endpoint based implementation @WebService annotation MAY reference an endpoint

+        //   interface 

+        // - The @WebService and @WebServiceProvider annotations can not appear in the same class per 

+        //   JAX-WS section 7.7 on page 82.

+

+        // Verify that one (and only one) of the required annotations is present.

+        // TODO: Add tests to verify this error checking

+        webServiceAnnotation = (WebService) implOrSEIClass.getAnnotation(WebService.class);

+        webServiceProviderAnnotation = (WebServiceProvider) implOrSEIClass.getAnnotation(WebServiceProvider.class);

+        

+        if (webServiceAnnotation == null && webServiceProviderAnnotation == null)

+            // TODO: NLS

+            throw ExceptionFactory.makeWebServiceException("Either WebService or WebServiceProvider annotation must be present on " + implOrSEIClass);

+        else if (webServiceAnnotation != null && webServiceProviderAnnotation != null)

+            // TODO: NLS

+            throw ExceptionFactory.makeWebServiceException("Both WebService or WebServiceProvider annotations cannot be presenton " + implOrSEIClass);

+

+        // If portName was specified, set it.  Otherwise, we will get it from the appropriate

+        // annotation when the getter is called.

+        // TODO: If the portName is specified, should we verify it against the annotation?

+        // TODO: Add tests: null portName, !null portName, portName != annotation value

+        // TODO: Get portName from annotation if it is null.

+

+        // If this is an Endpoint-based service implementation (i.e. not a 

+        // Provider-based one), then create the EndpointInterfaceDescription to contain

+        // the operations on the endpoint.  Provider-based endpoints don't have operations

+        // associated with them, so they don't have an EndpointInterfaceDescription.

+        if (webServiceAnnotation != null) {

+            // If this impl class references an SEI, then use that SEI to create the EndpointInterfaceDesc.

+            // TODO: Add support for service impl endpoints that don't reference an SEI; remember that this is also called with just an SEI interface from svcDesc.updateWithSEI()

+            String seiClassName = getEndpointInterface();

+            Class seiClass = null;

+            if (DescriptionUtils.isEmpty(seiClassName)) {

+                // For now, just build the EndpointInterfaceDesc based on the class itself.

+                // TODO: The EID ctor doesn't correctly handle anything but an SEI at this point; e.g. it doesn't publish the correct methods of just an impl.

+                seiClass = implOrSEIClass;

+            }

+            else { 

+                try {

+                    // TODO: Using Class.forName() is probably not the best long-term way to get the SEI class from the annotation

+                    seiClass = Class.forName(seiClassName, false, Thread.currentThread().getContextClassLoader());

+                } catch (ClassNotFoundException e) {

+                    // TODO: Throwing wrong exception

+                    e.printStackTrace();

+                    throw new UnsupportedOperationException("Can't create SEI class: " + e);

+                }

+            }

+            endpointInterfaceDescription = new EndpointInterfaceDescription(seiClass, this);

+        }

+    }

+    

+    public QName getPortQName() {

+        if (portQName == null) {

+            // The name was not set by the constructors, so get it from the

+            // appropriate annotaion.

+            String name = getPortName();

+            String tns = getTargetNamespace();

+            // TODO: Check for name &/| tns null or empty string and add tests for same

+            portQName = new QName(tns, name);

+        }

+        return portQName;

+    }

+    

+    public ServiceDescription getServiceDescription() {

+        return parentServiceDescription;

+    }

+    

+    public EndpointInterfaceDescription getEndpointInterfaceDescription() {

+        return endpointInterfaceDescription;

+    }

+

+    public AxisService getAxisService() {

+        return axisService;

+    }

+    

+    public boolean isDynamicPort() {

+        return isDynamicPort;

+    }

+    

+    public void updateWithSEI(Class sei) {

+        // Updating with an SEI is only valid for declared ports; it is not valid for dynamic ports.

+        if (isDynamicPort()) {

+            // TODO: RAS and NLS

+            throw ExceptionFactory.makeWebServiceException("Can not update an SEI on a dynamic port.  PortQName:" + portQName);

+        }

+        if (sei == null) {

+            // TODO: RAS and NLS

+            throw ExceptionFactory.makeWebServiceException("EndpointDescription.updateWithSEI was passed a null SEI.  PortQName:" + portQName);

+        }

+

+        if (endpointInterfaceDescription != null) {

+            // The EndpointInterfaceDescription was created previously based on the port declaration (i.e. WSDL)

+            // so update that with information from the SEI annotations

+            endpointInterfaceDescription.updateWithSEI(sei);

+        }

+        else {

+            // An EndpointInterfaceDescription does not exist yet.  This currently happens in the case where there is 

+            // NO WSDL provided and a Dispatch client is created for prior to a getPort being done for that port.

+            // There was no WSDL to create the EndpointInterfaceDescription from and there was no annotated SEI to

+            // use at that time.  Now we have an annotated SEI, so create the EndpointInterfaceDescription now.

+            endpointInterfaceDescription = new EndpointInterfaceDescription(sei, this);

+        }

+        return;

+    }

+

+

+    // ==========================================

+    // Annotation-related methods

+    // ==========================================

+    

+    public boolean isProviderBased() {

+        return webServiceProviderAnnotation != null;

+    }

+    

+    public boolean isEndpointBased() {

+        return webServiceAnnotation != null;

+    }

+    

+    // ------------------------------------------

+    // Common WebService and WebServiceProvider annotation-related getters

+    // ------------------------------------------

+    

+    public String getWSDLLocation() {

+        if (annotation_WsdlLocation == null) {

+            if (webServiceAnnotation != null) {

+                annotation_WsdlLocation = webServiceAnnotation.wsdlLocation();

+            }

+            else if (webServiceProviderAnnotation != null) {

+                annotation_WsdlLocation = webServiceProviderAnnotation.wsdlLocation();

+            }

+        }

+        return annotation_WsdlLocation;

+    }

+

+    public String getServiceName() {

+        if (annotation_ServiceName == null) {

+            if (webServiceAnnotation != null) {

+                annotation_ServiceName = webServiceAnnotation.serviceName();

+            }

+            else if (webServiceProviderAnnotation != null) {

+                annotation_ServiceName = webServiceProviderAnnotation.serviceName();

+            }

+        }

+        return annotation_ServiceName;

+    }

+    

+    public String getPortName() {

+        if (annotation_PortName == null) {

+            if (webServiceAnnotation != null) {

+                // REVIEW: Should this be portName() or just name()?

+                annotation_PortName = webServiceAnnotation.portName();

+            }

+            else if (webServiceProviderAnnotation != null) {

+                annotation_PortName = webServiceProviderAnnotation.portName();

+            }

+        }

+        return annotation_PortName;

+    }

+

+    public String getTargetNamespace() {

+        if (annotation_TargetNamespace == null) {

+            if (webServiceAnnotation != null) {

+                annotation_TargetNamespace = webServiceAnnotation.targetNamespace();

+            }

+            else if (webServiceProviderAnnotation != null) {

+                annotation_TargetNamespace = webServiceProviderAnnotation.targetNamespace();

+            }

+        }

+        return annotation_TargetNamespace;

+    }

+    // ------------------------------------------

+    // WebServiceProvider annotation related getters

+    // ------------------------------------------

+

+    WebServiceProvider getWebServiceProviderAnnotation() {

+        return webServiceProviderAnnotation;

+    }

+

+    // ------------------------------------------

+    // WebService annotation related getters

+    // ------------------------------------------

+

+    WebService getWebServiceAnnotation() {

+        return webServiceAnnotation;

+    }

+    

+    public String getEndpointInterface() {

+        if (webService_EndpointInterface == null && webServiceAnnotation != null) {

+            webService_EndpointInterface = webServiceAnnotation.endpointInterface();

+        }

+        return webService_EndpointInterface;

+    }

+    

+    public String getName() {

+        if (webService_Name == null && webServiceAnnotation != null) {

+            webService_Name = webServiceAnnotation.name();

+        }

+        return webService_Name;

+    }

+    

+    // ------------------------------------------

+    // ServiceMode annotation related getters

+    // ------------------------------------------

+    // REVIEW: Should this be returning an enum other than the one defined within the annotation?

+    ServiceMode getServiceMode() {

+        if (serviceModeAnnotation == null && implOrSEIClass != null) {

+            serviceModeAnnotation = (ServiceMode) implOrSEIClass.getAnnotation(ServiceMode.class);

+        }

+        return serviceModeAnnotation;

+    }

+    

+    public Service.Mode getServiceModeValue() {

+        // This annotation is only valid on Provider-based endpoints. 

+        if (isProviderBased() && serviceModeValue == null) {

+            if (getServiceMode() != null) {

+                serviceModeValue = getServiceMode().value();

+            }

+            else {

+                serviceModeValue = ServiceMode_DEFAULT; 

+            }

+        }

+        return serviceModeValue;

+    }

+    

+    // ------------------------------------------

+    // BindingType annotation related getters

+    // ------------------------------------------

+

+    BindingType getBindingType() {

+        if (bindingTypeAnnotation == null && implOrSEIClass != null) {

+            bindingTypeAnnotation = (BindingType) implOrSEIClass.getAnnotation(BindingType.class);

+        }

+        return bindingTypeAnnotation;

+    }

+    

+    public String getBindingTypeValue() {

+        if (bindingTypeValue == null) {

+            if (getBindingType() != null) {

+                bindingTypeValue = getBindingType().value();

+            }

+            else {

+                // No BindingType annotation present; use default value

+                bindingTypeValue = BindingType_DEFAULT;

+            }

+        }

+        return bindingTypeValue;

+    }

+

+    // ------------------------------------------

+    // HandlerChaing annotation related getters

+    // ------------------------------------------

+

+    /**

+     * Returns a live list describing the handlers on this port.

+     * TODO: This is currently returning List<String>, but it should return a HandlerDescritpion

+     * object that can represent a handler description from various Metadata (annotation, deployment descriptors, etc);

+     * use JAX-WS Appendix B Handler Chain Configuration File Schema as a starting point for HandlerDescription.

+     *  

+     * @return A List of handlers for this port.  The actual list is returned, and therefore can be modified.

+     */

+    public List<String> getHandlerList() {

+        return handlerList;

+    }

+    

+    private void setupAxisService() {

+        // TODO: Need to use MetaDataQuery validator to merge WSDL (if any) and annotations (if any)

+        // Build up the AxisService.  Note that if this is a dynamic port, then we don't use the

+        // WSDL to build up the AxisService since the port added to the Service by the client is not

+        // one that will be present in the WSDL.  A null class passed in as the SEI indicates this 

+        // is a dispatch client.

+        if (!isDynamicPort && getServiceDescription().getWSDLWrapper() != null) {

+            buildAxisServiceFromWSDL();

+        }

+        else {

+            buildAxisServiceFromNoWSDL();

+        }

+        

+        if (axisService == null) {

+            // TODO: RAS & NLS

+            throw ExceptionFactory.makeWebServiceException("Unable to create AxisService for "

+                    + createAxisServiceName());

+        }

+

+        // Save the Service QName as a parameter.

+        Parameter serviceNameParameter = new Parameter();

+        serviceNameParameter.setName(WSDL11ToAllAxisServicesBuilder.WSDL_SERVICE_QNAME);

+        serviceNameParameter.setValue(getServiceDescription().getServiceQName());

+        

+        // Save the Port name.  Note: Axis does not expect a QName since the namespace for the port is the ns from the WSDL definition 

+        Parameter portParameter = new Parameter();

+        portParameter.setName(WSDL11ToAllAxisServicesBuilder.WSDL_PORT);

+        portParameter.setValue(portQName.getLocalPart());

+

+        try {

+            axisService.addParameter(serviceNameParameter);

+            axisService.addParameter(portParameter);                        

+        } 

+        catch (AxisFault e) {

+            // TODO RAS

+            e.printStackTrace();

+        }

+    }

+

+    private void buildAxisServiceFromWSDL() {

+        // TODO: Change this to use WSDLToAxisServiceBuilder superclass

+        // Note that the axis service builder takes only the localpart of the port qname.

+        // TODO:: This should check that the namespace of the definition matches the namespace of the portQName per JAXRPC spec

+        WSDL11ToAxisServiceBuilder serviceBuilder = new WSDL11ToAxisServiceBuilder(getServiceDescription().getWSDLWrapper().getDefinition(), 

+                getServiceDescription().getServiceQName(), portQName.getLocalPart());

+        // TODO: Currently this only builds the client-side AxisService; it needs to do client and server somehow.

+        // Patterned after AxisService.createClientSideAxisService

+        serviceBuilder.setServerSide(false);

+        try {

+            axisService = serviceBuilder.populateService();

+            axisService.setName(createAxisServiceName());

+        } catch (AxisFault e) {

+            // TODO We should not swallow a fault here.

+            log.warn(Messages.getMessage("warnAxisFault", e.toString()));

+        }

+    }

+    

+    private void buildAxisServiceFromNoWSDL() {

+        // TODO: Refactor this to create from annotations.

+        String serviceName = null;

+        if (portQName != null) {

+            serviceName = createAxisServiceName();

+        }

+        else {

+            // REVIEW: Can the portQName ever be null?

+            // Make this service name unique.  The Axis2 engine assumes that a service it can not find is a client-side service.

+            serviceName = ServiceClient.ANON_SERVICE + this.hashCode() + System.currentTimeMillis();

+        }

+        axisService = new AxisService(serviceName);

+    }

+    

+    private void buildDescriptionHierachy() {

+        // Build up the Description Hierachy.  Note that if this is a dynamic port, then we don't use the

+        // WSDL to build up the hierachy since the port added to the Service by the client is not

+        // one that will be present in the WSDL.

+        if (!isDynamicPort && getServiceDescription().getWSDLWrapper() != null) {

+            buildEndpointDescriptionFromWSDL();

+        }

+        else if (implOrSEIClass != null){

+            // Create the rest of the description hierachy from annotations on the class.

+            // If there is no SEI class, then this is a Distpach case, and we currently 

+            // don't create the rest of the description hierachy (since it is not an SEI and thus

+            // not operation-based client.

+            buildEndpointDescriptionFromNoWSDL();

+        }

+    }

+    

+    private void buildEndpointDescriptionFromWSDL() {

+        Definition wsdlDefinition = getServiceDescription().getWSDLWrapper().getDefinition();

+        javax.wsdl.Service wsdlService = wsdlDefinition.getService(getServiceDescription().getServiceQName());

+        if (wsdlService == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDescErr2", createAxisServiceName()));

+        }

+        

+        Map wsdlPorts = wsdlService.getPorts();

+        boolean wsdlPortFound = false;

+        if (wsdlPorts != null && wsdlPorts.size() > 0) {

+            Iterator wsdlPortIterator = wsdlPorts.values().iterator();

+            while (wsdlPortIterator.hasNext() && !wsdlPortFound) {

+                Port wsdlPort = (Port) wsdlPortIterator.next();

+                // Note the namespace is not included on the WSDL Port.

+                if (wsdlPort.getName().equals(portQName.getLocalPart())) {

+                    // Create the Endpoint Interface Description based on the WSDL.

+                    endpointInterfaceDescription = new EndpointInterfaceDescription(this);

+                    // Update the EndpointInterfaceDescription created with WSDL with information from the

+                    // annotations in the SEI

+                    endpointInterfaceDescription.updateWithSEI(implOrSEIClass);

+                    wsdlPortFound = true;

+                }

+            }

+        }

+        

+        if (!wsdlPortFound) {

+            // TODO: NLS and RAS

+            throw ExceptionFactory.makeWebServiceException("WSDL Port not found for port " + portQName.getLocalPart());  

+        }

+    }

+    

+    /**

+     * Adds the anonymous axis operations to the AxisService.  Note that this is only needed on 

+     * the client side, and they are currently used in two cases

+     * (1) For Dispatch clients (which don't use SEIs and thus don't use operations)

+     * (2) TEMPORARLIY for Services created without WSDL (and thus which have no AxisOperations created)

+     *  See the AxisInvocationController invoke methods for more details.

+     *  

+     *   Based on ServiceClient.createAnonymouService

+     */

+    private void addAnonymousAxisOperations() {

+        if (axisService != null) {

+            OutOnlyAxisOperation outOnlyOperation = new OutOnlyAxisOperation(ServiceClient.ANON_OUT_ONLY_OP);

+            axisService.addOperation(outOnlyOperation);

+

+            OutInAxisOperation outInOperation = new OutInAxisOperation(ServiceClient.ANON_OUT_IN_OP);

+            axisService.addOperation(outInOperation);

+        }

+    }

+    

+    public ServiceClient getServiceClient(){

+        try {

+            if(serviceClient == null) {

+                ConfigurationContext configCtx = getServiceDescription().getAxisConfigContext();

+                AxisService axisSvc = getAxisService();

+                serviceClient = new ServiceClient(configCtx, axisSvc);

+            }

+        } catch (AxisFault e) {

+            throw ExceptionFactory.makeWebServiceException(

+                    Messages.getMessage("serviceClientCreateError"), e);

+        }

+        return serviceClient;

+    }

+ 

+    private String createAxisServiceName() {

+        String portName = null;

+        if (portQName != null) {

+            portName = portQName.getLocalPart();

+        }

+        else {

+            portName = "NoPortNameSpecified";

+

+        }

+        return getServiceDescription().getServiceQName().getLocalPart() + "." + portName;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java
new file mode 100644
index 0000000..4e9486d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java
@@ -0,0 +1,382 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.lang.reflect.Method;

+import java.lang.reflect.Modifier;

+import java.util.ArrayList;

+import java.util.Hashtable;

+import java.util.Iterator;

+

+import javax.jws.soap.SOAPBinding;

+import javax.wsdl.Binding;

+import javax.wsdl.Port;

+import javax.wsdl.PortType;

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.jaxws.ExceptionFactory;

+

+/**

+ * An EndpointInterfaceDescription corresponds to a particular SEI-based Service

+ * Implementation. It can correspond to either either a client to that impl or

+ * the actual service impl.

+ * 

+ * The EndpointInterfaceDescription contains information that is relevant only

+ * to an SEI-based (aka Endpoint-based or Java-based) enpdoint; Provider-based

+ * endpoint, which are not operation based and do not have an associated SEI,

+ * will not have an an EndpointInterfaceDescription class and sub-hierachy.

+ */

+

+/*

+Java Name: SEI Class name

+

+Axis2 Delegate: none

+

+JSR-181 Annotations: 

+@WebService Note this can be specified on the endpoint Impl without an SEI

+- name its the PortType Class Name, one you get with getPort() call in Service Delegate [NT]

+- targetNamespace

+- serviceName default is portType+Service. Should we use this if Service.create call does not provide/have ServiceQname?[NT]

+- wsdlLocation if no wsdl location provided the read this annotation. Should this override what is client sets?[NT]

+- endpointInterface Will not be present on interfaces (SEI), so I will use this to figure out if the client Call is Extension of Service or is SEI by looking at this annotation. [NT]

+- portName ok so JSR 181 spec I have does not have this annotation but JAXWS spec I have has this. So if ServiceDelegate.getPort() does not have port name use this annotation and derive portName [NT]

+@SOAPBinding This one is important for Proxy especially. [NT]

+- style: DOCUMENT | RPC tells me if it is doc or rpc[NT]

+- use: LITERAL | ENCODED Always literal for IBM[NT]

+- parameterStyle:  BARE | WRAPPED tells me if the wsdl is wrapped or not wrapped [NT]

+@HandlerChain(file, name)

+TBD

+

+WSDL Elements

+<portType

+<binding used for operation parameter bindings below

+

+Properties available to JAXWS runtime: 

+getHandlerList() returns a live List of handlers which can be modified; this MUST be cloned before being used as an actual handler chain; Note this needs to consider if any @HandlerChain annotations are in the ServiceDescription as well

+TBD

+

+ */

+public class EndpointInterfaceDescription {

+    private EndpointDescription parentEndpointDescription;

+    private ArrayList<OperationDescription> operationDescriptions = new ArrayList<OperationDescription>();

+    // This may be an actual Service Endpoint Interface -OR- it may be a service implementation class that did not 

+    // specify an @WebService.endpointInterface.

+    private Class seiClass;

+    

+    // ===========================================

+    // ANNOTATION related information

+    // ===========================================

+    

+    // ANNOTATION: @SOAPBinding

+    // Note this is the Type-level annotation.  See OperationDescription for the Method-level annotation

+    private SOAPBinding         soapBindingAnnotation;

+    // TODO: Should this be using the jaxws annotation values or should that be wrappered?

+    private javax.jws.soap.SOAPBinding.Style            soapBindingStyle;

+    // Default value per JSR-181 MR Sec 4.7 "Annotation: javax.jws.soap.SOAPBinding" pg 28

+    public static final javax.jws.soap.SOAPBinding.Style SOAPBinding_Style_DEFAULT = javax.jws.soap.SOAPBinding.Style.DOCUMENT;

+    private javax.jws.soap.SOAPBinding.Use              soapBindingUse;

+    // Default value per JSR-181 MR Sec 4.7 "Annotation: javax.jws.soap.SOAPBinding" pg 28

+    public static final javax.jws.soap.SOAPBinding.Use  SOAPBinding_Use_DEFAULT = javax.jws.soap.SOAPBinding.Use.LITERAL;

+    private javax.jws.soap.SOAPBinding.ParameterStyle   soapParameterStyle;

+    // Default value per JSR-181 MR Sec 4.7 "Annotation: javax.jws.soap.SOAPBinding" pg 28

+    public static final javax.jws.soap.SOAPBinding.ParameterStyle SOAPBinding_ParameterStyle_DEFAULT = javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED;

+    

+    void addOperation(OperationDescription operation) {

+        operationDescriptions.add(operation);

+    }

+    

+    EndpointInterfaceDescription(Class sei, EndpointDescription parent) {

+        seiClass = sei;

+        

+        // Per JSR-181 all methods on the SEI are mapped to operations regardless

+        // of whether they include an @WebMethod annotation.  That annotation may

+        // be present to customize the mapping, but is not required (p14)

+        // TODO:  Testcases that do and do not include @WebMethod anno

+        for (Method method:getSEIMethods(seiClass)) {

+            OperationDescription operation = new OperationDescription(method, this);

+            addOperation(operation);

+        }

+        

+        parentEndpointDescription = parent;

+    }

+    

+    private static Method[] getSEIMethods(Class sei) {

+        // Per JSR-181 all methods on the SEI are mapped to operations regardless

+        // of whether they include an @WebMethod annotation.  That annotation may

+        // be present to customize the mapping, but is not required (p14)

+        Method[] seiMethods = sei.getMethods();

+        if (sei != null) {

+            for (Method method:seiMethods) {

+                if (!Modifier.isPublic(method.getModifiers())) {

+                    // JSR-181 says methods must be public (p14)

+                    // TODO NLS

+                    ExceptionFactory.makeWebServiceException("SEI methods must be public");

+                }

+                // TODO: other validation per JSR-181

+            }

+            

+        }

+        return seiMethods;

+    }

+    

+    /**

+     * Update a previously created EndpointInterfaceDescription with information from an

+     * annotated SEI.  This should only be necessary when the this was created with WSDL.  

+     * In this case, the information from the WSDL is augmented based on the annotated SEI.

+     * @param sei

+     */

+    public void updateWithSEI(Class sei) {

+        if (seiClass != null && seiClass != sei)

+            // TODO: It probably is invalid to try reset the SEI; but this isn't the right error processing

+            throw new UnsupportedOperationException("The seiClass is already set; reseting it is not supported");

+        else if (seiClass != null && seiClass == sei)

+            // We've already done the necessary updates for this SEI

+            return;

+        else if (sei != null) {

+            seiClass = sei;

+            // Update (or possibly add) the OperationDescription for each of the methods on the SEI.

+            for (Method seiMethod:getSEIMethods(seiClass)) {

+

+                if (getOperation(seiMethod) != null) {

+                    // If an OpDesc already exists with this java method set on it, then the OpDesc has already

+                    // been updated for this method, so skip it.

+                    continue;

+                }

+                // At this point (for now at least) the operations were created with WSDL previously.

+                // If they had been created from an annotated class and no WSDL, then the seiClass would have 

+                // already been set so we would have taken other branches in this if test.  (Note this could

+                // change once AxisServices can be built from annotations by the ServiceDescription class).

+                // Since the operations were created from WSDL, they will not have a java method, which

+                // comes from the SEI, set on them yet.

+                //

+                // Another consideration is that currently Axis2 does not support overloaded WSDL operations.

+                // That means there will only be one OperationDesc build from WSDL.  Still another consideration is

+                // that the JAXWS async methods which may exist on the SEI will NOT exist in the WSDL.  An example

+                // of these methods for the WSDL operation:

+                //     String echo(String)

+                // optionally generated JAX-WS SEI methods from the tooling; take note of the annotation specifying the 

+                // operation name

+                //     @WebMethod(operationName="echo" ...)

+                //     Response<String> echoStringAsync(String)

+                //     @WebMethod(operationName="echo" ...)

+                //     Future<?> echoStringAsync(String, AsyncHandler)

+                //

+                // So given all the above, the code does the following based on the operation QName

+                // (which might also be the java method name; see determineOperationQName for details)

+                // (1) If an operationDesc does not exist, add it.

+                // (2) If an operationDesc does exist but does not have a java method set on it, set it

+                // (3) If an operationDesc does exist and has a java method set on it already, add a new one. 

+                //

+                // TODO: May need to change when Axis2 supports overloaded WSDL operations

+                // TODO: May need to change when ServiceDescription can build an AxisService from annotations

+                

+                // Get the QName for this java method and then update (or add) the appropriate OperationDescription

+                // See comments below for imporant notes about the current implementation.

+                // NOTE ON OVERLOADED OPERATIONS

+                // Axis2 does NOT currently support overloading WSDL operations.

+                QName seiOperationQName = OperationDescription.determineOperationQName(seiMethod);

+                OperationDescription[] updateOpDesc = getOperation(seiOperationQName);

+                if (updateOpDesc == null || updateOpDesc.length == 0) {

+                    // This operation wasn't defined in the WSDL.  Note that the JAX-WS async methods

+                    // which are defined on the SEI are not defined as operations in the WSDL.

+                    // Although they usually specific the same OperationName as the WSDL operation, 

+                    // there may be cases where they do not.

+                    // TODO: Is this path an error path, or can the async methods specify different operation names than the 

+                    //       WSDL operation?

+                    OperationDescription operation = new OperationDescription(seiMethod, this);

+                    addOperation(operation);

+                }

+                else { 

+                    // Currently Axis2 does not support overloaded operations.  That means that even if the WSDL

+                    // defined overloaded operations, there would still only be a single AxisOperation, and it

+                    // would be the last operation encounterd.

+                    // HOWEVER the generated JAX-WS async methods (see above) may (will always?) have the same

+                    // operation name and so will come down this path; they need to be added.

+                    // TODO: When Axis2 starts supporting overloaded operations, then this logic will need to be changed

+                    // TODO: Should we verify that these are the async methods before adding them, and treat it as an error otherwise?

+

+                    // Loop through all the opdescs; if one doesn't currently have a java method set, set it

+                    // If all have java methods set, then add a new one.  Assume we'll need to add a new one.

+                    boolean addOpDesc = true;

+                    for (OperationDescription checkOpDesc:updateOpDesc) {

+                        if (checkOpDesc.getSEIMethod() == null) {

+                            // TODO: Should this be checking (somehow) that the signature matches?  Probably not an issue until overloaded WSDL ops are supported.

+                            checkOpDesc.setSEIMethod(seiMethod);

+                            addOpDesc = false;

+                            break;

+                        }

+                    }

+                    if (addOpDesc) {

+                        OperationDescription operation = new OperationDescription(seiMethod, this);

+                        addOperation(operation);

+                    }

+                }

+            }

+        }

+    }

+

+    /**

+     * Return the OperationDescriptions corresponding to a particular Java method name.

+     * Note that an array is returned because a method could be overloaded.

+     * 

+     * @param javaMethodName String representing a Java Method Name

+     * @return

+     */

+    // FIXME: This is confusing; some getOperations use the QName from the WSDL or annotation; this one uses the java method name; rename this signature I think; add on that takes a String but does a QName lookup against the WSDL/Annotation

+    public OperationDescription[] getOperation(String javaMethodName) {

+        if (javaMethodName == null) {

+            return null;

+        }

+        

+        ArrayList<OperationDescription> matchingOperations = new ArrayList<OperationDescription>();

+        for (OperationDescription operation:getOperations()) {

+            if (javaMethodName.equals(operation.getJavaMethodName())) {

+                matchingOperations.add(operation);

+            }

+        }

+        

+        if (matchingOperations.size() == 0)

+            return null;

+        else

+            return matchingOperations.toArray(new OperationDescription[0]);

+    }

+    

+    public OperationDescription[] getOperations() {

+        return operationDescriptions.toArray(new OperationDescription[0]);

+    }

+    

+    public EndpointDescription getEndpointDescription() {

+        return parentEndpointDescription;

+    }

+    

+    /**

+     * Return an array of Operations given an operation QName.  Note that an array is returned

+     * since a WSDL operation may be overloaded per JAX-WS.

+     * @param operationQName

+     * @return

+     */

+    public OperationDescription[] getOperation(QName operationQName) {

+        OperationDescription[] returnOperations = null;

+        if (!DescriptionUtils.isEmpty(operationQName)) {

+            ArrayList<OperationDescription> matchingOperations = new ArrayList<OperationDescription>();

+            OperationDescription[] allOperations = getOperations();

+            for (OperationDescription operation:allOperations) {

+                if (operation.getName().equals(operationQName)) {

+                    matchingOperations.add(operation);

+                }

+            }

+            // Only return an array if there's anything in it

+            if (matchingOperations.size() > 0) {

+                returnOperations = matchingOperations.toArray(new OperationDescription[0]);

+            }

+        }

+        return returnOperations;

+    }

+    

+    /**

+     * Return an OperationDescription for the corresponding SEI method.  Note that this ONLY works

+     * if the OperationDescriptions were created from introspecting an SEI.  If the were created with a WSDL

+     * then use the getOperation(QName) method, which can return > 1 operation.

+     * @param seiMethod The java.lang.Method from the SEI for which an OperationDescription is wanted

+     * @return

+     */

+    public OperationDescription getOperation(Method seiMethod) {

+        OperationDescription returnOperation = null;

+        if (seiMethod != null) {

+            OperationDescription[] allOperations = getOperations();

+            for (OperationDescription operation:allOperations) {

+                if (operation.getSEIMethod() != null && operation.getSEIMethod().equals(seiMethod)) {

+                    returnOperation = operation;

+                }

+            }

+        }

+        return returnOperation;

+    }

+    

+    /**

+     * Build from AxisService

+     * @param parent

+     */

+    EndpointInterfaceDescription(EndpointDescription parent) {

+        parentEndpointDescription = parent;

+        

+        AxisService axisService = parentEndpointDescription.getAxisService();

+        if (axisService != null) {

+            ArrayList publishedOperations = axisService.getPublishedOperations();

+            Iterator operationsIterator = publishedOperations.iterator();

+            while (operationsIterator.hasNext()) {

+                AxisOperation axisOperation = (AxisOperation) operationsIterator.next();

+                addOperation(new OperationDescription(axisOperation, this));

+            }

+        }

+    }

+    public Class getSEIClass() {

+        return seiClass;

+    }

+    // Annotation-realted getters

+    

+    // ========================================

+    // SOAP Binding annotation realted methods

+    // ========================================

+    SOAPBinding getSoapBinding(){

+        // TODO: Test with sei Null, not null, SOAP Binding annotated, not annotated

+        if (soapBindingAnnotation == null && seiClass != null) {

+            soapBindingAnnotation = (SOAPBinding) seiClass.getAnnotation(SOAPBinding.class);

+        }

+        return soapBindingAnnotation;

+    }

+    

+    public javax.jws.soap.SOAPBinding.Style getSoapBindingStyle() {

+        if (soapBindingStyle == null) {

+            if (getSoapBinding() != null && getSoapBinding().style() != null) {

+                soapBindingStyle = getSoapBinding().style();

+            }

+            else {

+                soapBindingStyle = SOAPBinding_Style_DEFAULT;

+            }

+        }

+        return soapBindingStyle;

+    }

+    

+    public javax.jws.soap.SOAPBinding.Use getSoapBindingUse() {

+        if (soapBindingUse == null) {

+            if (getSoapBinding() != null && getSoapBinding().use() != null) {

+                soapBindingUse = getSoapBinding().use();

+            }

+            else {

+                soapBindingUse = SOAPBinding_Use_DEFAULT;

+            }

+        }

+        return soapBindingUse;

+    }

+    

+    public javax.jws.soap.SOAPBinding.ParameterStyle getSoapBindingParameterStyle(){

+    	if (soapParameterStyle == null) {

+            if (getSoapBinding() != null && getSoapBinding().parameterStyle() != null) {

+            	soapParameterStyle = getSoapBinding().parameterStyle();

+            }

+            else {

+            	soapParameterStyle = SOAPBinding_ParameterStyle_DEFAULT;

+            }

+        }

+        return soapParameterStyle;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/FaultDescription.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/FaultDescription.java
new file mode 100644
index 0000000..e23553e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/FaultDescription.java
@@ -0,0 +1,46 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+/**

+ * 

+ */

+/*

+Workign-design information.

+

+Java Name: Exception class name

+

+Exception Holder Type

+Exception Holder Held Type

+

+Axis2 Delegate: TBD

+

+JSR-181 Annotations: TBD

+

+WSDL Elements: TBD

+

+JAX-WS Annotations:

+@WebFault(name, targetNamespace, faultBean)

+

+Properties available to JAXWS runtime: TBD

+

+ */

+public class FaultDescription {

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java
new file mode 100644
index 0000000..a9a9435
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java
@@ -0,0 +1,587 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.lang.annotation.Annotation;

+import java.lang.reflect.Method;

+import java.util.ArrayList;

+

+import javax.jws.Oneway;

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.soap.SOAPBinding;

+import javax.xml.namespace.QName;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+

+import org.apache.axis2.description.AxisOperation;

+

+/**

+ * An OperationDescripton corresponds to a method on an SEI.  That SEI could be explicit

+ * (i.e. @WebService.endpointInterface=sei.class) or implicit (i.e. public methods on the service implementation

+ * are the contract and thus the implicit SEI).  Note that while OperationDescriptions are created on both the client

+ * and service side, implicit SEIs will only occur on the service side.

+ * 

+ * OperationDescriptons contain information that is only relevent for and SEI-based service, i.e. one that is invoked via specific

+ * methods.  This class does not exist for Provider-based services (i.e. those that specify @WebServiceProvider)

+ */

+/*

+Java Name: Method name from SEI

+

+Axis2 Delegate: AxisOperation

+

+JSR-181 Annotations: 

+@WebMethod

+- operationName

+- action

+- exclude

+@Oneway So basically even if an operation has a return parameter it could be one way and in this case should we set the AxisOperatio mep to oneway?[NT]

+TBD

+

+WSDL Elements

+<portType  <operation

+

+JAX-WS Annotations

+@RequestWrapper

+- localName

+- targetNamespace

+- className

+@ResponseWrapper

+- localName

+- targetNamespace

+- className

+TBD

+

+Properties available to JAXWS runtime: 

+isWrapper()

+String getRequestWrapper JAXB Class

+String getResponseWrapper JAXB Class

+TBD

+

+ */

+// TODO: Axis2 does not support overloaded operations, although EndpointInterfaceDescription.addOperation() does support overloading

+//       of methods represented by OperationDescription classes.  However, the AxisOperation contained in an OperationDescription

+//       does NOT support overloaded methods.

+//

+//       While overloading is not supported by WS-I, it IS supported by JAX-WS (p11).

+//       Note that this requires support in Axis2; currently WSDL11ToAxisServiceBuilder.populateOperations does not

+//       support overloaded methods in the WSDL; the operations are stored on AxisService as children in a HashMap with the wsdl

+//       operation name as the key.

+

+// TODO: Need tests for all the "default" code paths in the annotation getters.

+// TODO: Need tests for each when annotation is not present where that is allowed by the spec. 

+public class OperationDescription {

+    private EndpointInterfaceDescription parentEndpointInterfaceDescription;

+    private AxisOperation axisOperation;

+    private QName operationName;

+    private Method seiMethod;

+

+    // ===========================================

+    // ANNOTATION related information

+    // ===========================================

+    

+    // ANNOTATION: @Oneway

+    private Oneway              onewayAnnotation;

+    private Boolean             onewayIsOneway;

+    

+    // ANNOTATION: @RequestWrapper

+    private RequestWrapper      requestWrapperAnnotation;

+    private String              requestWrapperTargetNamespace;

+    private String              requestWrapperLocalName;

+    private String              requestWrapperClassName;

+    

+    // ANNOTATION: @ResponseWrapper

+    private ResponseWrapper     responseWrapperAnnotation;

+    private String              responseWrapperLocalName;

+    private String              responseWrapperTargetNamespace;

+    private String              responseWrapperClassName;

+    

+    // ANNOTATION: @SOAPBinding

+    // Note this is the Method-level annotation.  See EndpointInterfaceDescription for the Method-level annotation

+    // Also note this annotation is only allowed on methods if SOAPBinding.Style is DOCUMENT and if the method-level

+    // annotation is absent, the behavior defined on the Type is used.

+    // per JSR-181 MR Sec 4.7 "Annotation: javax.jws.soap.SOAPBinding" pg 28

+    private SOAPBinding         soapBindingAnnotation;

+    // REVIEW: Should this be using the jaxws annotation values or should that be wrappered?

+    private javax.jws.soap.SOAPBinding.Style            soapBindingStyle;

+    public static final javax.jws.soap.SOAPBinding.Style SoapBinding_Style_VALID = javax.jws.soap.SOAPBinding.Style.DOCUMENT;

+    private javax.jws.soap.SOAPBinding.Use              soapBindingUse;

+    // Default value per JSR-181 MR Sec 4.7 "Annotation: javax.jws.soap.SOAPBinding" pg 28

+    public static final javax.jws.soap.SOAPBinding.Use  SOAPBinding_Use_DEFAULT = javax.jws.soap.SOAPBinding.Use.LITERAL;

+    private javax.jws.soap.SOAPBinding.ParameterStyle   soapBindingParameterStyle;

+    // Default value per JSR-181 MR Sec 4.7 "Annotation: javax.jws.soap.SOAPBinding" pg 28

+    public static final javax.jws.soap.SOAPBinding.ParameterStyle SOAPBinding_ParameterStyle_DEFAULT = javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED;

+

+    

+    // ANNOTATION: @WebMethod

+    private WebMethod           webMethodAnnotation;

+    private String              webMethodOperationName;

+    

+    // ANNOTATION: @WebParam

+    // TODO: Should WebParam annotation be moved to the ParameterDescription?

+    private WebParam[]          webParamAnnotations;

+    private String[]            webParamNames;

+    private String[]            webParamTNS;

+

+    

+    // ANNOTATION: @WebResult

+    private WebResult           webResultAnnotation;

+    private String              webResultName;

+    

+    OperationDescription(Method method, EndpointInterfaceDescription parent) {

+        // TODO: Look for WebMethod anno; get name and action off of it

+        parentEndpointInterfaceDescription = parent;

+        setSEIMethod(method);

+        webMethodAnnotation = seiMethod.getAnnotation(WebMethod.class);

+        

+        this.operationName = new QName(getWebMethodOperationName());

+    }

+    OperationDescription(AxisOperation operation, EndpointInterfaceDescription parent) {

+        parentEndpointInterfaceDescription = parent;

+        axisOperation = operation;

+        this.operationName = axisOperation.getName();

+    }

+

+    public void setSEIMethod(Method method) {

+        if (seiMethod != null)

+            // TODO: This is probably an error, but error processing logic is incorrect

+            throw new UnsupportedOperationException("Can not set an SEI method once it has been set.");

+        else 

+            seiMethod = method;

+    }

+

+    public EndpointInterfaceDescription getEndpointInterfaceDescription() {

+        return parentEndpointInterfaceDescription;

+    }

+    

+    public AxisOperation getAxisOperation() {

+        return axisOperation;

+    }

+    

+    public QName getName() {

+        return operationName;

+    }

+    

+    // Java-related getters

+    public String getJavaMethodName() {

+        String returnString = null;

+        if (seiMethod != null) {

+            returnString = seiMethod.getName();

+        }

+        return returnString;

+    }

+    public String[] getJavaParameters() {

+        ArrayList<String> returnParameters = new ArrayList<String>();

+        if (seiMethod != null) {

+            Class[] paramaters = seiMethod.getParameterTypes();

+            for (Class param:paramaters) {

+                returnParameters.add(param.getName());

+            }

+        }

+        // TODO: This is different than the rest, which return null instead of an empty array

+        return returnParameters.toArray(new String[0]);

+    }

+    /**

+     * Note this will return NULL unless the operation was built via introspection on the SEI.

+     * In other words, it will return null if the operation was built with WSDL.

+     * @return

+     */

+    public Method getSEIMethod() {

+        return seiMethod;

+    }

+    

+    private boolean isWrappedParameters() {

+        // TODO: WSDL may need to be considered in this check as well

+        return getSoapBindingParameterStyle() == javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED;

+    }

+

+    // =====================================

+    // ANNOTATION: WebMethod

+    // =====================================

+    WebMethod getWebMethod() {

+        return webMethodAnnotation;

+    }

+    

+    static QName determineOperationQName(Method javaMethod) {

+        return new QName(determineOperationName(javaMethod));

+    }

+    

+    private static String determineOperationName(Method javaMethod) {

+        String operationName = null;

+        WebMethod wmAnnotation = javaMethod.getAnnotation(WebMethod.class);

+        // Per JSR-181 MR Sec 4.2 "Annotation: javax.jws.WebMethod" pg 17,

+        // if @WebMethod specifies and operation name, use that.  Otherwise

+        // default is the Java method name

+        if (wmAnnotation != null && !DescriptionUtils.isEmpty(wmAnnotation.operationName())) {

+            operationName = wmAnnotation.operationName();

+        }

+        else {

+            operationName = javaMethod.getName();

+        }

+        return operationName;

+        

+    }

+    

+    public String getWebMethodOperationName() {

+        if (webMethodOperationName == null) {

+            webMethodOperationName = determineOperationName(seiMethod);

+        }

+        return webMethodOperationName;

+    }

+    

+    // ==========================================

+    // ANNOTATION: RequestWrapper

+    // ==========================================

+    RequestWrapper getRequestWrapper() {

+        if (requestWrapperAnnotation == null) {

+            requestWrapperAnnotation = seiMethod.getAnnotation(RequestWrapper.class); 

+        }

+        return requestWrapperAnnotation;

+    }

+    

+    /**

+     * For wrapped parameter style (based on the annotation and the WSDL), returns the 

+     * wrapper value.  For non-wrapped (i.e. bare) parameter style, returns null.

+     * @return

+     */

+    public String getRequestWrapperLocalName() {

+        if (!isWrappedParameters()) {

+            // A wrapper is only meaningful for wrapped parameters

+            return null;

+        }

+        if (requestWrapperLocalName == null) {

+            if (getRequestWrapper() != null

+                    && !DescriptionUtils.isEmpty(getRequestWrapper().localName())) {

+                requestWrapperLocalName = getRequestWrapper().localName();

+            } else {

+                // The default value of localName is the value of operationName as

+                // defined in the WebMethod annotation. [JAX-WS Sec. 7.3, p. 80]

+                requestWrapperLocalName = getWebMethodOperationName();

+            }

+        }

+        return requestWrapperLocalName;

+    }

+    

+    /**

+     * For wrapped parameter style (based on the annotation and the WSDL), returns the 

+     * wrapper value.  For non-wrapped (i.e. bare) parameter style, returns null.

+     * @return

+     */

+    public String getRequestWrapperTargetNamespace() {

+        if (!isWrappedParameters()) {

+            // A wrapper is only meaningful for wrapped parameters

+            return null;

+        }

+        if (requestWrapperTargetNamespace == null) {

+            if (getRequestWrapper() != null && !DescriptionUtils.isEmpty(getRequestWrapper().targetNamespace())) {

+                requestWrapperTargetNamespace = getRequestWrapper().targetNamespace();

+            }

+            else {

+                // The default value for targetNamespace is the target namespace of the SEI. [JAX-WS Sec 7.3, p. 80]

+                // TODO: Get the TNS from the SEI via the endpoint interface desc.

+                throw new UnsupportedOperationException("RequestWrapper.targetNamespace default not implented yet");

+            }

+        }

+        return requestWrapperTargetNamespace;

+    }

+    

+    /**

+     * For wrapped parameter style (based on the annotation and the WSDL), returns the 

+     * wrapper value.  For non-wrapped (i.e. bare) parameter style, returns null.

+     * @return

+     */

+    public String getRequestWrapperClassName() {

+        if (!isWrappedParameters()) {

+            // A wrapper is only meaningful for wrapped parameters

+            return null;

+        }

+        if (requestWrapperClassName == null) {

+            if (getRequestWrapper() != null && !DescriptionUtils.isEmpty(getRequestWrapper().className())) {

+                requestWrapperClassName = getRequestWrapper().className();

+            }

+            else {

+                // Not sure what the default value should be (if any).  None is listed in Sec. 7.3 on p. 80 of

+                // the JAX-WS spec, BUT Conformance(Using javax.xml.ws.RequestWrapper) in Sec 2.3.1.2 on p. 13

+                // says the entire annotation "...MAY be omitted if all its properties would have default vaules."

+                // implying there IS some sort of default.  We'll try this for now:

+                Class clazz = seiMethod.getDeclaringClass();

+                String packageName = clazz.getPackage().getName();

+                String className = DescriptionUtils.javaMethodtoClassName(seiMethod.getName());

+                requestWrapperClassName = packageName + "." + className;

+            }

+        }

+        return requestWrapperClassName;

+    }

+    

+    // ===========================================

+    // ANNOTATION: ResponseWrapper

+    // ===========================================

+    ResponseWrapper getResponseWrapper() {

+        if (responseWrapperAnnotation == null) {

+            responseWrapperAnnotation = seiMethod.getAnnotation(ResponseWrapper.class);

+        }

+        return responseWrapperAnnotation;

+    }

+    

+    /**

+     * For wrapped parameter style (based on the annotation and the WSDL), returns the 

+     * wrapper value.  For non-wrapped (i.e. bare) parameter style, returns null.

+     * @return

+     */

+    public String getResponseWrapperLocalName() {

+        if (!isWrappedParameters()) {

+            // A wrapper is only meaningful for wrapped parameters

+            return null;

+        }

+        if (responseWrapperLocalName == null) {

+            if (getResponseWrapper() != null && !DescriptionUtils.isEmpty(getResponseWrapper().localName())) {

+                responseWrapperLocalName = getResponseWrapper().localName();

+            }

+            else { 

+                // The default value of localName is the value of operationName as 

+                // defined in the WebMethod annotation appended with "Response". [JAX-WS Sec. 7.4, p. 81]

+                responseWrapperLocalName = getWebMethodOperationName() + "Response";

+            }

+        }

+        return responseWrapperLocalName;

+    }

+    

+    /**

+     * For wrapped parameter style (based on the annotation and the WSDL), returns the 

+     * wrapper value.  For non-wrapped (i.e. bare) parameter style, returns null.

+     * @return

+     */

+    public String getResponseWrapperTargetNamespace() {

+        if (!isWrappedParameters()) {

+            // A wrapper is only meaningful for wrapped parameters

+            return null;

+        }

+        if (responseWrapperTargetNamespace == null) {

+            if (getResponseWrapper() != null && !DescriptionUtils.isEmpty(getResponseWrapper().targetNamespace())) {

+                responseWrapperTargetNamespace = getResponseWrapper().targetNamespace();

+            }

+            else {

+                // The default value for targetNamespace is the target namespace of the SEI. [JAX-WS Sec 7.4, p. 81]

+                // TODO: Get the TNS from the SEI via the endpoint interface desc.

+                throw new UnsupportedOperationException("ResponseWrapper.targetNamespace default not implented yet");

+            }

+        }

+        return responseWrapperTargetNamespace;

+    }

+    

+    /**

+     * For wrapped parameter style (based on the annotation and the WSDL), returns the 

+     * wrapper value.  For non-wrapped (i.e. bare) parameter style, returns null.

+     * @return

+     */

+    public String getResponseWrapperClassName() {

+        if (!isWrappedParameters()) {

+            // A wrapper is only meaningful for wrapped parameters

+            return null;

+        }

+        if (responseWrapperClassName == null) {

+            if (getResponseWrapper() != null && !DescriptionUtils.isEmpty(getResponseWrapper().className())) {

+                responseWrapperClassName = getResponseWrapper().className();

+            }

+            else {

+                // Not sure what the default value should be (if any).  None is listed in Sec. 7.4 on p. 81 of

+                // the JAX-WS spec, BUT Conformance(Using javax.xml.ws.ResponseWrapper) in Sec 2.3.1.2 on p. 13

+                // says the entire annotation "...MAY be omitted if all its properties would have default vaules."

+                // implying there IS some sort of default.  We'll try this for now:

+                Class clazz = seiMethod.getDeclaringClass();

+                String packageName = clazz.getPackage().getName();

+                String className = DescriptionUtils.javaMethodtoClassName(seiMethod.getName());

+                responseWrapperClassName = packageName + "." + className;

+            }

+        }

+        return responseWrapperClassName;

+    }

+

+    // ===========================================

+    // ANNOTATION: WebParam

+    // ===========================================

+    // TODO: Should this annotation be moved to ParameterDescription 

+    WebParam[] getWebParam() {

+        if (webParamAnnotations == null) {

+            Annotation[][] paramAnnotation = seiMethod.getParameterAnnotations();

+            ArrayList<WebParam> webParamList = new ArrayList<WebParam>();

+            for(Annotation[] pa:paramAnnotation){

+                for(Annotation webParam:pa){

+                    if(webParam.annotationType() == WebParam.class){

+                        webParamList.add((WebParam)webParam);

+                    }

+                }

+            }

+            webParamAnnotations = webParamList.toArray(new WebParam[0]);

+        }

+        return webParamAnnotations;

+    }

+    

+    public String[] getWebParamNames() {

+        if (webParamNames == null) {

+            ArrayList<String> buildNames = new ArrayList<String>();

+            WebParam[] webParams = getWebParam();

+            for (WebParam currentParam:webParams) {

+                // TODO: Is skipping param names of "asyncHandler" correct?  This came from original ProxyDescription class and ProxyTest fails without this code

+                //       Due to code in DocLitProxyHandler.getParamValues() which does not add values for AsyncHandler objects.

+                //       It probably DOES need to be skipped, albeit more robustly (check that the type of the param is javax.xml.ws.AsyncHandler also)

+                //       The reason is that the handler is part of the JAX-WS async callback programming model; it is NOT part of the formal params

+                //       to the actual method and therefore is NOT part of the JAXB request wrapper

+                if(!currentParam.name().equals("asyncHandler")){

+                    buildNames.add(currentParam.name());

+                }

+            }

+            webParamNames = buildNames.toArray(new String[0]);

+        }

+        return webParamNames;

+        

+    }

+    

+    public String[] getWebParamTNS(){

+        if (webParamTNS == null) {

+            ArrayList<String> buildNames = new ArrayList<String>();

+            WebParam[] webParams = getWebParam();

+            for (WebParam currentParam:webParams) {

+                // TODO: Is skipping param names of "asyncHandler" correct?  This came from original ProxyDescription class and ProxyTest fails without this code

+                //       Due to code in DocLitProxyHandler.getParamValues() which does not add values for AsyncHandler objects.

+                //       It probably DOES need to be skipped, albeit more robustly (check that the type of the param is javax.xml.ws.AsyncHandler also)

+                //       The reason is that the handler is part of the JAX-WS async callback programming model; it is NOT part of the formal params

+                //       to the actual method and therefore is NOT part of the JAXB request wrapper

+                if(!currentParam.name().equals("asyncHandler")){

+                    buildNames.add(currentParam.targetNamespace());

+                }

+            }

+            webParamTNS = buildNames.toArray(new String[0]);

+        }

+        return webParamTNS;

+    }

+             

+    public String getWebParamTNS(String name){

+       WebParam[] webParams = getWebParam();

+       for (WebParam currentParam:webParams){

+           if(currentParam.name().equals(name)){

+                return currentParam.targetNamespace();

+            }

+        }

+        return null;    

+     }

+    

+    // ===========================================

+    // ANNOTATION: WebResult

+    // ===========================================

+    WebResult getWebResult() {

+        if (webResultAnnotation == null) {

+            webResultAnnotation = seiMethod.getAnnotation(WebResult.class);

+        }

+        return webResultAnnotation;

+    }

+    public boolean isWebResultAnnotationSpecified() {

+        return getWebResult() != null;

+    }

+

+    // TODO: This method returns null if the annotation is not specified; others return default values.  I think null is the correct thing to return; change the others

+    public String getWebResultName() {

+        if (isWebResultAnnotationSpecified() && webResultName == null) {

+            if (!DescriptionUtils.isEmpty(getWebResult().name())) {

+                webResultName = getWebResult().name();

+            }

+            else {

+                // Defeault value is "return" per JSR-181 Sec. 4.5.1, p. 22

+                webResultName = "return";

+            }

+        }

+        return webResultName;

+    }

+

+    // ===========================================

+    // ANNOTATION: SOAPBinding

+    // ===========================================

+    SOAPBinding getSoapBinding() {

+        // TODO: VALIDATION: Only style of DOCUMENT allowed on Method annotation; remember to check the Type's style setting also

+        //       JSR-181 Sec 4.7 p. 28

+        if (soapBindingAnnotation == null) {

+            soapBindingAnnotation = seiMethod.getAnnotation(SOAPBinding.class);

+        }

+        return soapBindingAnnotation;

+    }

+

+    public javax.jws.soap.SOAPBinding.Style getSoapBindingStyle() {

+        if (soapBindingStyle == null) {

+            if (getSoapBinding() != null && getSoapBinding().style() != null) {

+                soapBindingStyle = getSoapBinding().style();

+            }

+            else {

+                // Per JSR-181 MR Sec 4.7, pg 28: if not specified, use the Type value.

+                soapBindingStyle = getEndpointInterfaceDescription().getSoapBindingStyle(); 

+            }

+        }

+        return soapBindingStyle;

+    }

+    

+    public javax.jws.soap.SOAPBinding.Use getSoapBindingUse() {

+        if (soapBindingUse == null) {

+            if (getSoapBinding() != null && getSoapBinding().use() != null) {

+                soapBindingUse = getSoapBinding().use();

+            }

+            else {

+                // Per JSR-181 MR Sec 4.7, pg 28: if not specified, use the Type value.

+                soapBindingUse = getEndpointInterfaceDescription().getSoapBindingUse(); 

+            }

+        }

+        return soapBindingUse;

+    }

+

+    public javax.jws.soap.SOAPBinding.ParameterStyle getSoapBindingParameterStyle() {

+        if (soapBindingParameterStyle == null) {

+            if (getSoapBinding() != null && getSoapBinding().use() != null) {

+                soapBindingParameterStyle = getSoapBinding().parameterStyle();

+            }

+            else {

+                // Per JSR-181 MR Sec 4.7, pg 28: if not specified, use the Type value.

+                soapBindingParameterStyle = getEndpointInterfaceDescription().getSoapBindingParameterStyle(); 

+            }

+        }

+        return soapBindingParameterStyle;

+    }

+    

+    // ===========================================

+    // ANNOTATION: OneWay

+    // ===========================================

+    Oneway getOnewayAnnotation() {

+        if (onewayAnnotation == null) {

+            onewayAnnotation = seiMethod.getAnnotation(Oneway.class);

+        }

+        return onewayAnnotation;

+    }

+

+    public boolean isOneWay() {

+        if (onewayIsOneway == null) {

+            if (getOnewayAnnotation() != null) {

+                // The presence of the annotation indicates the method is oneway

+                onewayIsOneway = new Boolean(true);

+            }

+            else {

+                // If the annotation is not present, the default is this is NOT a One Way method

+                onewayIsOneway = new Boolean(false);

+            }

+        }

+        return onewayIsOneway.booleanValue();   

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/ParameterDescription.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/ParameterDescription.java
new file mode 100644
index 0000000..3dcbb60
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/ParameterDescription.java
@@ -0,0 +1,46 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+/**

+ * 

+ */

+/*

+Java Name: Parameter Name

+

+Java Signature Parameter Type:  Could be a holder class

+Java Signature ParameterHeldType if the Signature Parameter  Type is a holder class, then this is the held type

+

+Axis2 Delegate: TBD

+

+JSR-181 Annotations: 

+@WebParam(name, targetNamespace, mode, header, partName) [Input, Output]

+@WebResult(name, targetNamespace, header, partName) [Output only?]

+TBD

+

+WSDL Elements: TBD

+

+JAX-WS Annotations: TBD

+

+Properties available to JAXWS runtime: TBD

+

+ */

+public class ParameterDescription {

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java
new file mode 100644
index 0000000..a516de3
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java
@@ -0,0 +1,409 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Enumeration;

+import java.util.Hashtable;

+import java.util.Iterator;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.WebServiceException;

+import javax.jws.WebService;

+import javax.wsdl.Definition;

+import javax.wsdl.Port;

+import javax.wsdl.Service;

+import javax.wsdl.WSDLException;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.deployment.DeploymentException;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.OutInAxisOperation;

+import org.apache.axis2.description.OutOnlyAxisOperation;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.description.RobustOutOnlyAxisOperation;

+import org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder;

+import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;

+import org.apache.axis2.engine.AbstractDispatcher;

+import org.apache.axis2.jaxws.ClientConfigurationFactory;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.util.WSDL4JWrapper;

+import org.apache.axis2.jaxws.util.WSDLWrapper;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * The JAX-WS Service metadata and root of the JAX-WS Descritpion hierachy.

+ */

+

+/*

+Working-design information.

+

+Description hierachy

+    ServiceDescription

+        EndpointDescription[]

+            EndpointInterfaceDescription

+                OperationDescription[]

+                    ParameterDescription Input[]

+                    ParameterDescription Output[]

+                    FaultDescription

+

+ServiceDescription:

+Corresponds to the generated Service class [client]; TBD [server]

+

+Java Name: Generated service class or null if dynamically configured service [client]; null [server]

+

+Axis2 Delegate: None (AxisService corresponds to a port which corresponds to the EndpointDescription)

+

+JSR-181 Annotations: 

+@HandlerChain(file, name) [per JAXWS p. 105] Affects all proxies and dispatches created using any port on this service

+TBD

+

+WSDL Elements: 

+<service

+

+JAX-WS Annotations: 

+@WebServiceClient(name, targetNamespace, wsdlLocation)

+@WebEndpoint(name) This is specified on the getPortName() methods on the service

+TBD

+

+Properties available to JAXWS runtime:

+getEndpointDescription(QName port) Needed by HandlerResolver

+TBD

+

+ */

+

+/**

+ * ServiceDescription contains the metadata (e.g. WSDL, annotations) relating to a Service on both the

+ * service-requester (aka client) and service-provider (aka server) sides.

+ * 

+ */

+public class ServiceDescription {

+    private ClientConfigurationFactory clientConfigFactory;

+    private ConfigurationContext configContext;

+

+    private URL wsdlURL;

+    private QName serviceQName;

+    

+    // Only ONE of the following will be set in a ServiceDescription, depending on whether this Description

+    // was created from a service-requester or service-provider flow. 

+    private Class serviceClass;         // A service-requester generated service or generic service class

+    

+    // TODO: Possibly remove Definition and delegate to the Defn on the AxisSerivce set as a paramater by WSDLtoAxisServicBuilder?

+    private WSDLWrapper wsdlWrapper; 

+    

+    private Hashtable<QName, EndpointDescription> endpointDescriptions = new Hashtable<QName, EndpointDescription>();

+    

+    private static final Log log = LogFactory.getLog(ServiceDescription.class);

+

+    /**

+     * This is (currently) the client-side-only constructor

+     * Construct a service description hierachy based on WSDL (may be null), the Service class, and 

+     * a service QName.

+     * 

+     * @param wsdlURL  The WSDL file (this may be null).

+     * @param serviceQName  The name of the service in the WSDL.  This can not be null since a 

+     *   javax.xml.ws.Service can not be created with a null service QName.

+     * @param serviceClass  The JAX-WS service class.  This could be an instance of

+     *   javax.xml.ws.Service or a generated service subclass thereof.  This will not be null.

+     */

+    ServiceDescription(URL wsdlURL, QName serviceQName, Class serviceClass) {

+        if (serviceQName == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDescErr0"));

+        }

+        if (serviceClass == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDescErr1", "null"));

+        }

+        if (!javax.xml.ws.Service.class.isAssignableFrom(serviceClass)) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDescErr1", serviceClass.getName()));

+        }

+        

+        this.wsdlURL = wsdlURL;

+        // TODO: The serviceQName needs to be verified between the argument/WSDL/Annotation

+        this.serviceQName = serviceQName;

+        this.serviceClass = serviceClass;

+        

+        setupWsdlDefinition();

+    }

+

+    /**

+     * This is (currently) the service-provider-side-only constructor.

+     * Create a service Description based on a service implementation class

+     * 

+     * @param serviceImplClass

+     */

+    // NOTE: Taking an axisService on the call is TEMPORARY!  Eventually the AxisService should be constructed

+    //       based on the annotations in the ServiceImpl class.

+    // TODO: Remove axisService as paramater when the AxisService can be constructed from the annotations

+    ServiceDescription(Class serviceImplClass, AxisService axisService) {

+        // Create the EndpointDescription hierachy from the service impl annotations; Since the PortQName is null, 

+        // it will be set to the annotation value.

+        EndpointDescription endpointDescription = new EndpointDescription(serviceImplClass, null, axisService, this);

+        addEndpointDescription(endpointDescription);

+        

+        // TODO: The ServiceQName instance variable should be set based on annotation or default

+    }

+

+

+    

+    /*=======================================================================*/

+    /*=======================================================================*/

+    // START of public accessor methods

+    

+    /**

+     * Update or create an EndpointDescription. Updates to existing

+     * EndpointDescriptons will be based on the SEI class and its annotations.  Both declared

+     * ports and dynamic ports can be updated.  A declared port is one that is defined (e.g. in WSDL or

+     * via annotations); a dyamic port is one that is not defined (e.g. not via WSDL or annotations) and 

+     * has been added via Serivce.addPort.  

+     * 

+     * Notes on how an EndpointDescription can be updated or created:

+     * 1) Service.createDispatch can create a Dispatch client for either a declared or dynamic port

+     * 2) Note that creating a Dispatch does not associate an SEI with an endpoint

+     * 3) Service.getPort will associate an SEI with a port

+     * 4) A getPort on an endpoint which was originally created for a Distpatch will update that

+     *    EndpointDescription with the SEI provided on the getPort

+     * 5) Service.getPort can not be called on a dynamic port (per the JAX-WS spec)

+     * 6) Service.addPort can not be called for a declared port

+     * 

+     * @param sei

+     *            This will be non-null if the update is of type GET_PORT; it

+     *            will be null if the update is ADD_PORT or CREATE_DISPATCH

+     * @param portQName

+     * @param updateType

+     *            Indicates what is causing the update GET_PORT is an attempt to

+     *            get a declared SEI-based port ADD_PORT is an attempt to add a

+     *            previously non-existent dynamic port CREATE_DISPATCH is an

+     *            attempt to create a Dispatch-based client to either a declared

+     *            port or a pre-existing dynamic port.

+     */

+    public enum UpdateType {GET_PORT, ADD_PORT, CREATE_DISPATCH}

+    public void updateEndpointDescription(Class sei, QName portQName, UpdateType updateType) {

+        

+        // TODO: Add support: portQName can be null when called from Service.getPort(Class)

+        if (portQName == null) {

+            throw new UnsupportedOperationException("ServiceDescription.updateEndpointDescription null PortQName not supported");

+        }

+        

+        EndpointDescription endpointDescription = getEndpointDescription(portQName);

+        boolean isPortDeclared = isPortDeclared(portQName);

+

+        switch (updateType) {

+

+        case ADD_PORT:

+            // Port must NOT be declared (e.g. can not already exist in WSDL)

+            // If an EndpointDesc doesn't exist; create it as long as it doesn't exist in the WSDL

+            // TODO: This test can be simplified once isPortDeclared(QName) understands annotations and WSDL as ways to declare a port.

+            if (getWSDLWrapper() != null && isPortDeclared) {

+                // TODO: RAS & NLS

+                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can not do an addPort with a PortQN that exists in the WSDL.  PortQN: " + portQName.toString());

+            }

+            else if (endpointDescription == null) {

+                // Use the SEI Class and its annotations to finish creating the Description hierachy.  Note that EndpointInterface, Operations, Parameters, etc.

+                // are not created for dynamic ports.  It would be an error to later do a getPort against a dynamic port (per the JAX-WS spec)

+                endpointDescription = new EndpointDescription(sei, portQName, true, this);

+                addEndpointDescription(endpointDescription);

+            }

+            else {

+                // All error check above passed, the EndpointDescription already exists and needs no updating

+            }

+            break;

+

+        case GET_PORT:

+            // If an endpointDesc doesn't exist, and the port exists in the WSDL, create it

+            // If an endpointDesc already exists and has an associated SEI already, make sure they match

+            // If an endpointDesc already exists and was created for Dispatch (no SEI), update that with the SEI provided on the getPort

+

+            // Port must be declared (e.g. in WSDL or via annotations)

+            // TODO: Once isPortDeclared understands annotations and not just WSDL, the 2nd part of this check can possibly be removed.

+            //       Although consider the check below that updates an existing EndpointDescritpion with an SEI.

+            if (!isPortDeclared || (endpointDescription != null && endpointDescription.isDynamicPort())) {

+                // This guards against the case where an addPort was done previously and now a getPort is done on it.

+                // TODO: RAS & NLS

+                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can not do a getPort on a port added via addPort().  PortQN: " + portQName.toString());

+            }

+            else if (sei == null) {

+                // TODO: RAS & NLS

+                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can not do a getPort with a null SEI.  PortQN: " + portQName.toString());

+            }

+            else if (endpointDescription == null) {

+                // Use the SEI Class and its annotations to finish creating the Description hierachy: Endpoint, EndpointInterface, Operations, Parameters, etc.

+                // TODO: Need to create the Axis Description objects after we have all the config info (i.e. from this SEI)

+                endpointDescription = new EndpointDescription(sei, portQName, this);

+                addEndpointDescription(endpointDescription);

+            }

+            else if (getEndpointSEI(portQName) == null && !endpointDescription.isDynamicPort()) {

+                // Existing endpointDesc from a declared port needs to be updated with an SEI

+                // Note that an EndpointDescritption created from an addPort (i.e. a dynamic port) can not do this.

+                endpointDescription.updateWithSEI(sei);

+            }

+            else if (getEndpointSEI(portQName) != sei) {

+                // TODO: RAS & NLS

+                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can't do a getPort() specifiying a different SEI than the previous getPort().  PortQN: " 

+                        + portQName + "; current SEI: " + sei + "; previous SEI: " + getEndpointSEI(portQName));

+            }

+            else {

+                // All error check above passed, the EndpointDescription already exists and needs no updating

+            }

+            break;

+

+        case CREATE_DISPATCH:

+            // Port may or may not exist in WSDL.  

+            // If an endpointDesc doesn't exist and it is in the WSDL, it can be created

+            // Otherwise, it is an error.

+            if (endpointDescription != null) {

+                // The EndpoingDescription already exists; nothing needs to be done

+            }

+            else if (sei != null) {

+                // The Dispatch should not have an SEI associated with it on the update call.

+                // REVIEW: Is this a valid check?

+                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can not specify an SEI when creating a Dispatch. PortQN: " + portQName);

+            }

+            else if (isPortDeclared) {

+                // EndpointDescription doesn't exist and this is a declared Port, so create one

+                // Use the SEI Class and its annotations to finish creating the Description hierachy.  Note that EndpointInterface, Operations, Parameters, etc.

+                // are not created for Dipsatch-based ports, but might be updated later if a getPort is done against the same declared port.

+                // TODO: Need to create the Axis Description objects after we have all the config info (i.e. from this SEI)

+                endpointDescription = new EndpointDescription(sei, portQName, this);

+                addEndpointDescription(endpointDescription);

+            }

+            else {

+                // The port is not a declared port and it does not have an EndpointDescription, meaning an addPort has not been done for it

+                // This is an error.

+                // TODO: RAS & NLS

+                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Attempt to create a Dispatch for a non-existant Dynamic por  PortQN: " + portQName);

+            }

+            break;

+        }

+    }

+

+    private Class getEndpointSEI(QName portQName) {

+        Class endpointSEI = null;

+        EndpointInterfaceDescription endpointInterfaceDesc = getEndpointDescription(portQName).getEndpointInterfaceDescription();

+        if (endpointInterfaceDesc != null ) {

+            endpointSEI = endpointInterfaceDesc.getSEIClass();

+        }

+        return endpointSEI;

+    }

+

+    private boolean isPortDeclared(QName portQName) {

+        // TODO: This needs to account for declaration of the port via annotations in addition to just WSDL

+        // TODO: Add logic to check the portQN namespace against the WSDL Definition NS

+        boolean portIsDeclared = false;

+        if (getWSDLWrapper() != null) {

+            Definition wsdlDefn = getWSDLWrapper().getDefinition();

+            Service wsdlService = wsdlDefn.getService(serviceQName);

+            Port wsdlPort = wsdlService.getPort(portQName.getLocalPart());

+            portIsDeclared = (wsdlPort != null);

+        }

+        else {

+            // TODO: Add logic to determine if port is declared via annotations when no WSDL is present.  For now, we have to assume it is declared 

+            // so getPort(...) and createDispatch(...) calls work when there is no WSDL.

+            portIsDeclared = true;

+        }

+        return portIsDeclared;

+    }

+    

+    public EndpointDescription[] getEndpointDescriptions() {

+        return endpointDescriptions.values().toArray(new EndpointDescription[0]);

+    }

+    public EndpointDescription getEndpointDescription(QName portQName) {

+        return endpointDescriptions.get(portQName);

+    }

+    /**

+     * Return the EndpointDescriptions corresponding to the SEI class.  Note that

+     * Dispatch endpoints will never be returned because they do not have an associated SEI.

+     * @param seiClass

+     * @return

+     */

+    public EndpointDescription[] getEndpointDescription(Class seiClass) {

+        EndpointDescription[] returnEndpointDesc = null;

+        ArrayList<EndpointDescription> matchingEndpoints = new ArrayList<EndpointDescription>();

+        Enumeration<EndpointDescription> endpointEnumeration = endpointDescriptions.elements();

+        while (endpointEnumeration.hasMoreElements()) {

+            EndpointDescription endpointDescription = endpointEnumeration.nextElement();

+            EndpointInterfaceDescription endpointInterfaceDesc = endpointDescription.getEndpointInterfaceDescription();

+            // Note that Dispatch endpoints will not have an endpointInterface because the do not have an associated SEI

+            if (endpointInterfaceDesc != null) {

+                Class endpointSEIClass = endpointInterfaceDesc.getSEIClass(); 

+                if (endpointSEIClass != null && endpointSEIClass.equals(seiClass)) {

+                    matchingEndpoints.add(endpointDescription);

+                }

+            }

+        }

+        if (matchingEndpoints.size() > 0) {

+            returnEndpointDesc = matchingEndpoints.toArray(new EndpointDescription[0]);

+        }

+        return returnEndpointDesc;

+    }

+    // END of public accessor methods

+    /*=======================================================================*/

+    /*=======================================================================*/

+    private void addEndpointDescription(EndpointDescription endpoint) {

+        endpointDescriptions.put(endpoint.getPortQName(), endpoint);

+    }

+

+    private void setupWsdlDefinition() {

+        // Note that there may be no WSDL provided, for example when called from 

+        // Service.create(QName serviceName).

+        if (wsdlURL != null) {

+            try {

+                wsdlWrapper = new WSDL4JWrapper(this.wsdlURL);

+            } catch (WSDLException e) {

+                throw ExceptionFactory.makeWebServiceException(Messages.getMessage("wsdlException", e.getMessage()), e);

+            }

+        }

+    }

+

+    // TODO: Remove these and replace with appropraite get* methods for WSDL information

+    public WSDLWrapper getWSDLWrapper() {

+        return wsdlWrapper;

+    }

+    public URL getWSDLLocation() {

+        return wsdlURL;

+    }

+    

+    public ConfigurationContext getAxisConfigContext() {

+        if (configContext == null) {

+            configContext = getClientConfigurationFactory().getClientConfigurationContext();

+        }

+    	return configContext;

+    	

+    }

+    

+    ClientConfigurationFactory getClientConfigurationFactory() {

+        

+        if (clientConfigFactory == null ) {

+            clientConfigFactory = ClientConfigurationFactory.newInstance();

+        }

+        return clientConfigFactory;

+    }

+    

+    public ServiceClient getServiceClient(QName portQName) {

+        // TODO: RAS if no portQName found

+        return getEndpointDescription(portQName).getServiceClient();

+    }

+    

+    public QName getServiceQName() {

+        return serviceQName;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/BindingTypeAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/BindingTypeAnnot.java
new file mode 100644
index 0000000..de6a4a8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/BindingTypeAnnot.java
@@ -0,0 +1,67 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class BindingTypeAnnot implements javax.xml.ws.BindingType{

+	

+	private String value = "";

+

+	/**

+     * A BindingTypeAnnot cannot be instantiated.

+     */

+	private  BindingTypeAnnot(){

+		

+	}

+	

+	private  BindingTypeAnnot( String value)

+	{

+		this.value = value;

+	}

+

+    public static BindingTypeAnnot createBindingTypeAnnotImpl() {

+        return new BindingTypeAnnot();

+    }

+

+    public static BindingTypeAnnot createBindingTypeAnnotImpl( String value) 

+    {

+        return new BindingTypeAnnot( value );

+    }

+

+	/**

+	 * @return Returns the value.

+	 */

+	public String value() {

+		return value;

+	}

+

+	/**

+	 * @param value The value to set.

+	 */

+	public void setValue(String value) {

+		this.value = value;

+	}

+	

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/DescriptionBuilderComposite.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/DescriptionBuilderComposite.java
new file mode 100644
index 0000000..f323cac
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/DescriptionBuilderComposite.java
@@ -0,0 +1,332 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.description.builder;

+

+import java.util.Iterator;

+import java.util.List;

+

+import javax.wsdl.Definition;

+

+public class DescriptionBuilderComposite {

+	/*

+	 * This structure contains the full reflected class, as well as, the

+	 * possible annotations found for this class...the class description 

+	 * must be complete enough for full validation between class info and annotations

+	 * The annotations will be added to the corresponding class members.

+	 */

+

+	public DescriptionBuilderComposite () {

+		

+	}

+

+	//Class type within the module

+	private enum ModuleClassType { SERVICEIMPL, SEI, SERVICE, SUPER, PROVIDER, FAULT }

+	

+	//Note: a WSDL is not necessary

+	private Definition	wsdlDefinition;

+

+	// Class-level annotations

+	private WebServiceAnnot 			webServiceAnnot;	

+	private WebServiceProviderAnnot 	webServiceProviderAnnot; //	TODO EDIT CHECK: WebService and WebServiceProvider are mutually exclusive

+	private ServiceModeAnnot 			serviceModeAnnot;	//	TODO EDIT CHECK: valid only if is a provider class	

+	private WebServiceClientAnnot 		webServiceClientAnnot;

+	private WebFaultAnnot 				webFaultAnnot;

+	private HandlerChainAnnot 			handlerChainAnnot;

+	private SoapBindingAnnot 			soapBindingAnnot;

+	private List<WebServiceRefAnnot> 	webServiceRefAnnotList;

+	private BindingTypeAnnot 			bindingTypeAnnot;

+	private WebServiceContextAnnot 		webServiceContextAnnot;

+	

+	// Class information

+	private String 			className;

+	private String[] 		classModifiers; //public, abstract, final, strictfp...

+	private String			extendsClass;	//Set to the name of the super class

+	private List<String>	interfacesList; //Set this for all implemented interfaces

+

+	private List<MethodDescriptionComposite> methodDescriptions;		

+	private List<FieldDescriptionComposite> fieldDescriptions;		

+

+	// Methods

+	public WebServiceAnnot getWebServiceAnnot() {

+		return this.webServiceAnnot;

+	}

+

+	/**

+	 * @return Returns the classModifiers.

+	 */

+	public String[] getClassModifiers() {

+		return classModifiers;

+	}

+

+	/**

+	 * @return Returns the className.

+	 */

+	public String getClassName() {

+		return className;

+	}

+

+	/**

+	 * @return Returns the super class name.

+	 */

+	public String getSuperClassName() {

+		return extendsClass;

+	}

+

+	/**

+	 * @return Returns the list of implemented interfaces.

+	 */

+	public List<String> getInterfacesList() {

+		return interfacesList;

+	}

+

+	/**

+	 * @return Returns the handlerChainAnnotImpl.

+	 */

+	public HandlerChainAnnot getHandlerChainAnnot() {

+		return handlerChainAnnot;

+	}

+

+	/**

+	 * @return Returns the serviceModeAnnot.

+	 */

+	public ServiceModeAnnot getServiceModeAnnot() {

+		return serviceModeAnnot;

+	}

+

+	/**

+	 * @return Returns the soapBindingAnnot.

+	 */

+	public SoapBindingAnnot getSoapBindingAnnot() {

+		return soapBindingAnnot;

+	}

+

+	/**

+	 * @return Returns the webFaultAnnot.

+	 */

+	public WebFaultAnnot getWebFaultAnnot() {

+		return webFaultAnnot;

+	}

+

+	/**

+	 * @return Returns the webServiceClientAnnot.

+	 */

+	public WebServiceClientAnnot getWebServiceClientAnnot() {

+		return webServiceClientAnnot;

+	}

+

+	/**

+	 * @return Returns the webServiceProviderAnnot.

+	 */

+	public WebServiceProviderAnnot getWebServiceProviderAnnot() {

+		return webServiceProviderAnnot;

+	}

+

+	/**

+	 * @return Returns the webServiceRefAnnot.

+	 */

+	public WebServiceRefAnnot getWebServiceRefAnnot(String name) {

+		

+		WebServiceRefAnnot wsra = null;

+		Iterator<WebServiceRefAnnot> iter = 

+							webServiceRefAnnotList.iterator();

+			

+		while(iter.hasNext()) {

+			wsra = iter.next();

+			if (wsra.name().equals(name))

+				return wsra;

+		}

+		return wsra;

+	}

+

+	/**

+	 * @return Returns the webServiceRefAnnot.

+	 */

+	public BindingTypeAnnot getBindingTypeAnnot() {

+		return bindingTypeAnnot;

+	}

+

+	/**

+	 * @return Returns the webServiceContextAnnot.

+	 */

+	public WebServiceContextAnnot getWebServiceContextAnnot() {

+		return webServiceContextAnnot;

+	}

+

+	/**

+	 * @return Returns the wsdlDefinition.

+	 */

+	public Definition getWsdlDefinition() {

+		return wsdlDefinition;

+	}

+	

+	/**

+	 * Returns the nth occurence of this MethodComposite. Since

+	 * method names are not unique, we have to account for multiple occurrences

+	 *

+	 * @return Returns the methodDescriptionComposite.

+	 */

+	public MethodDescriptionComposite getMethodDescriptionComposite(

+						String 	methodName,

+						int		occurence) {

+

+		MethodDescriptionComposite composite = null;

+		Iterator<MethodDescriptionComposite> iter = 

+							methodDescriptions.iterator();

+		int hits = 0;

+		while(iter.hasNext()) {

+			composite = iter.next();

+			

+			if (composite.getMethodName().equals(methodName)){

+				hits++;

+				if (hits == occurence)

+					return composite;

+			}

+		}

+		

+		return composite;

+	}

+	

+	/**

+	 *

+	 * @return Returns the methodDescriptionComposite..null if not found

+	 */

+	public FieldDescriptionComposite getFieldDescriptionComposite(String fieldName){

+

+		FieldDescriptionComposite composite = null;

+		Iterator<FieldDescriptionComposite> iter = 

+							fieldDescriptions.iterator();

+			

+		while(iter.hasNext()) {

+			composite = iter.next();

+			if (composite.getFieldName().equals(fieldName))

+				return composite;

+		}

+		return composite;

+	}

+	

+	//++++++++

+	//Setters

+	//++++++++

+	public void setWebServiceAnnot(WebServiceAnnot webServiceAnnot) {

+		this.webServiceAnnot = webServiceAnnot;

+	}

+

+	/**

+	 * @param classModifiers The classModifiers to set.

+	 */

+	public void setClassModifiers(String[] classModifiers) {

+		this.classModifiers = classModifiers;

+	}

+

+	/**

+	 * @param className The className to set.

+	 */

+	public void setClassName(String className) {

+		this.className = className;

+	}

+	

+	/**

+	 * @param extendsClass The name of the super class to set.

+	 */

+	public void setSuperClassName(String extendsClass) {

+		this.extendsClass = extendsClass;

+	}

+

+	/**

+	 * @param interfacesList  The interfacesList to set.

+	 */

+	public void getInterfacesList(List<String> interfacesList) {

+		this.interfacesList = interfacesList;

+	}

+	

+	/**

+	 * @param handlerChainAnnot The handlerChainAnnot to set.

+	 */

+	public void setHandlerChainAnnot(HandlerChainAnnot handlerChainAnnot) {

+		this.handlerChainAnnot = handlerChainAnnot;

+	}

+

+	/**

+	 * @param serviceModeAnnot The serviceModeAnnot to set.

+	 */

+	public void setServiceModeAnnot(ServiceModeAnnot serviceModeAnnot) {

+		this.serviceModeAnnot = serviceModeAnnot;

+	}

+

+	/**

+	 * @param soapBindingAnnot The soapBindingAnnot to set.

+	 */

+	public void setSoapBindingAnnot(SoapBindingAnnot soapBindingAnnot) {

+		this.soapBindingAnnot = soapBindingAnnot;

+	}

+

+	/**

+	 * @param webFaultAnnot The webFaultAnnot to set.

+	 */

+	public void setWebFaultAnnot(WebFaultAnnot webFaultAnnot) {

+		this.webFaultAnnot = webFaultAnnot;

+	}

+

+	/**

+	 * @param webServiceClientAnnot The webServiceClientAnnot to set.

+	 */

+	public void setWebServiceClientAnnot(

+			WebServiceClientAnnot webServiceClientAnnot) {

+		this.webServiceClientAnnot = webServiceClientAnnot;

+	}

+

+	/**

+	 * @param webServiceProviderAnnot The webServiceProviderAnnot to set.

+	 */

+	public void setWebServiceProviderAnnot(

+			WebServiceProviderAnnot webServiceProviderAnnot) {

+		this.webServiceProviderAnnot = webServiceProviderAnnot;

+	}

+

+	/**

+	 * @param webServiceRefAnnot The webServiceRefAnnot to add to the list.

+	 */

+	public void addWebServiceRefAnnot(

+			WebServiceRefAnnot webServiceRefAnnot) {

+		webServiceRefAnnotList.add(webServiceRefAnnot);

+	}

+

+	/**

+	 * @param wsdlDefinition The wsdlDefinition to set.

+	 */

+	public void setWsdlDefinition(Definition wsdlDefinition) {

+		this.wsdlDefinition = wsdlDefinition;

+	}

+

+	/**

+	 * @param BindingTypeAnnot The BindingTypeAnnot to set.

+	 */

+	public void setBindingTypeAnnot(

+			BindingTypeAnnot bindingTypeAnnot) {

+		this.bindingTypeAnnot = bindingTypeAnnot;

+	}

+

+	/**

+	 * @param webServiceContextAnnot The webServiceContextAnnot to set.

+	 */

+	public void setWebServiceContextAnnot(

+			WebServiceContextAnnot webServiceContextAnnot) {

+		this.webServiceContextAnnot = webServiceContextAnnot;

+	}

+

+	/**

+	 *  @param methodDescription The methodDescription to add to the set.

+	 */

+	public void addMethodDescriptionComposite(MethodDescriptionComposite methodDescription) {

+		methodDescriptions.add(methodDescription);

+	}

+	

+	/**

+	 *  @param methodDescription The methodDescription to add to the set.

+	 */

+	public void addFieldDescriptionComposite(FieldDescriptionComposite fieldDescription) {

+		fieldDescriptions.add(fieldDescription);

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/FieldDescriptionComposite.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/FieldDescriptionComposite.java
new file mode 100644
index 0000000..c657441
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/FieldDescriptionComposite.java
@@ -0,0 +1,91 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.description.builder;

+

+

+public class FieldDescriptionComposite {

+	

+	//Method reflective information

+	private String 	fieldName;		//field name

+	private String 	modifierType;	//field modifier

+

+	private HandlerChainAnnot	handlerChainAnnot;	

+	private WebServiceRefAnnot 	webServiceRefAnnot;	

+

+	/*

+	 * Default Constructor

+	 */

+	public FieldDescriptionComposite () {

+		

+	}

+	

+	public FieldDescriptionComposite (	

+			String 					fieldName,

+			String 					modifierType,

+			HandlerChainAnnot 		handlerChainAnnot,

+			WebServiceRefAnnot 		webServiceRefAnnot

+	) {

+		this.fieldName = fieldName;

+		this.modifierType = modifierType;

+		this.handlerChainAnnot = handlerChainAnnot;

+		this.webServiceRefAnnot = webServiceRefAnnot;

+	}

+

+	/**

+	 * @return Returns the fieldName.

+	 */

+	public String getFieldName() {

+		return fieldName;

+	}

+

+	/**

+	 * @return Returns the handlerChainAnnot.

+	 */

+	public HandlerChainAnnot getHandlerChainAnnot() {

+		return handlerChainAnnot;

+	}

+

+	/**

+	 * @return Returns the modifierType.

+	 */

+	public String getModifierType() {

+		return modifierType;

+	}

+

+	/**

+	 * @return Returns the webServiceRefAnnot.

+	 */

+	public WebServiceRefAnnot getWebServiceRefAnnot() {

+		return webServiceRefAnnot;

+	}

+

+	/**

+	 * @param fieldName The fieldName to set.

+	 */

+	public void setFieldName(String fieldName) {

+		this.fieldName = fieldName;

+	}

+

+	/**

+	 * @param handlerChainAnnot The handlerChainAnnot to set.

+	 */

+	public void setHandlerChainAnnot(HandlerChainAnnot handlerChainAnnot) {

+		this.handlerChainAnnot = handlerChainAnnot;

+	}

+

+	/**

+	 * @param modifierType The modifierType to set.

+	 */

+	public void setModifierType(String modifierType) {

+		this.modifierType = modifierType;

+	}

+

+	/**

+	 * @param webServiceRefAnnot The webServiceRefAnnot to set.

+	 */

+	public void setWebServiceRefAnnot(WebServiceRefAnnot webServiceRefAnnot) {

+		this.webServiceRefAnnot = webServiceRefAnnot;

+	}

+}

+	

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/HandlerChainAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/HandlerChainAnnot.java
new file mode 100644
index 0000000..57bf9b5
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/HandlerChainAnnot.java
@@ -0,0 +1,73 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.reflect.Method;

+import java.lang.reflect.Modifier;

+import java.net.URL;

+

+import javax.jws.HandlerChain;

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.jaxws.ExceptionFactory;

+

+import java.lang.annotation.Annotation;

+

+public class HandlerChainAnnot implements javax.jws.HandlerChain{

+

+	private String file = "";

+	private String name = "";

+	

+	/**

+     * A WebServiceAnnot cannot be instantiated.

+     */

+	private  HandlerChainAnnot(){

+		

+	}

+	

+    public static HandlerChainAnnot createHandlerChainAnnotImpl() {

+        return new HandlerChainAnnot();

+    }

+

+    public String file(){

+		return this.file;

+	}

+		

+	public String name(){

+		return this.name;

+	}

+	

+	/**

+	 * @param file The file to set.

+	 */

+	public void setFile(String file) {

+		this.file = file;

+	}

+

+	/**

+	 * @param name The name to set.

+	 */

+	public void setName(String name) {

+		this.name = name;

+	}

+

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/MethodDescriptionComposite.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/MethodDescriptionComposite.java
new file mode 100644
index 0000000..4a85bc1
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/MethodDescriptionComposite.java
@@ -0,0 +1,276 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.description.builder;

+

+import java.util.List;

+

+public class MethodDescriptionComposite {

+	

+	//Method reflective information

+	private String 		methodName;	//a public method name in this class

+	private String 		returnType;	//Methods return type

+	private String[]	exceptions;

+

+	boolean	oneWayAnnotated;	

+	private WebMethodAnnot	webMethodAnnot;	

+	private WebResultAnnot 	webResultAnnot;

+	private WebServiceContextAnnot 	webServiceContextAnnot;	

+	private HandlerChainAnnot	handlerChainAnnot;	

+	private SoapBindingAnnot 	soapBindingAnnot;

+	private WebServiceRefAnnot 	webServiceRefAnnot;	

+	private WebEndpointAnnot 	webEndpointAnnot;

+	private RequestWrapperAnnot requestWrapperAnnot; //TODO EDIT CHECK: only on methods of SEI

+	private ResponseWrapperAnnot responseWrapperAnnot;//TODO EDIT CHECK: only on methods of SEI

+	private List<ParameterDescriptionComposite> parameterDescriptions;//TODO EDIT CHECK: only on methods of SEI

+

+	/*

+	 * Default Constructor

+	 */

+	public MethodDescriptionComposite () {

+		

+	}

+	

+	public MethodDescriptionComposite (	

+			String 					methodName,

+			String 					returnType,

+			WebMethodAnnot 			webMethodAnnot,

+			WebResultAnnot 			webResultAnnot,

+			boolean 				oneWayAnnotated,

+			HandlerChainAnnot 		handlerChainAnnot,

+			SoapBindingAnnot 		soapBindingAnnot,

+			WebServiceRefAnnot 		webServiceRefAnnot,

+			WebEndpointAnnot 		webEndpointAnnot,

+			RequestWrapperAnnot 	requestWrapperAnnot,

+			ResponseWrapperAnnot 	responseWrapperAnnot,

+			WebServiceContextAnnot	webServiceContextAnnot

+	) {

+		

+		this.methodName 			= methodName;

+		this.returnType				= returnType;

+		this.webMethodAnnot 		= webMethodAnnot;

+		this.webResultAnnot 		= webResultAnnot;

+		this.oneWayAnnotated 		= oneWayAnnotated;

+		this.handlerChainAnnot 		= handlerChainAnnot;

+		this.soapBindingAnnot 		= soapBindingAnnot;

+		this.webServiceRefAnnot 	= webServiceRefAnnot;

+		this.webEndpointAnnot 		= webEndpointAnnot;

+		this.requestWrapperAnnot 	= requestWrapperAnnot;

+		this.responseWrapperAnnot 	= responseWrapperAnnot;

+		this.webServiceContextAnnot = webServiceContextAnnot;

+	}

+	

+	/**

+	 * @return Returns the methodName

+	 */

+	public String getMethodName() {

+		return methodName;

+	}

+

+	/**

+	 * @return Returns the returnType

+	 */

+	public String getReturnType() {

+		return returnType;

+	}

+

+	/**

+	 * @return returns whether this is OneWay

+	 */

+	public boolean isOneWay() {

+		return oneWayAnnotated;

+	}

+

+	/**

+	 * @return Returns the webEndpointAnnot.

+	 */

+	public WebEndpointAnnot getWebEndpointAnnot() {

+		return webEndpointAnnot;

+	}

+

+	/**

+	 * @return Returns the requestWrapperAnnot.

+	 */

+	public RequestWrapperAnnot getRequestWrapperAnnot() {

+		return requestWrapperAnnot;

+	}

+

+	/**

+	 * @return Returns the responseWrapperAnnot.

+	 */

+	public ResponseWrapperAnnot getResponseWrapperAnnot() {

+		return responseWrapperAnnot;

+	}

+

+	/**

+	 * @return Returns the webServiceContextAnnot.

+	 */

+	public WebServiceContextAnnot getWebServiceContextAnnot() {

+		return webServiceContextAnnot;

+	}

+

+	/**

+	 * @return Returns the handlerChainAnnot.

+	 */

+	public HandlerChainAnnot getHandlerChainAnnot() {

+		return handlerChainAnnot;

+	}

+

+	/**

+	 * @return Returns the soapBindingAnnot.

+	 */

+	public SoapBindingAnnot getSoapBindingAnnot() {

+		return soapBindingAnnot;

+	}

+

+	/**

+	 * @return Returns the webMethodAnnot.

+	 */

+	public WebMethodAnnot getWebMethodAnnot() {

+		return webMethodAnnot;

+	}

+

+	/**

+	 * @return Returns the webResultAnnot.

+	 */

+	public WebResultAnnot getWebResultAnnot() {

+		return webResultAnnot;

+	}

+

+	/**

+	 * @return Returns the webServiceRefAnnot.

+	 */

+	public WebServiceRefAnnot getWebServiceRefAnnot() {

+		return webServiceRefAnnot;

+	}

+

+	/**

+	 * @return Returns the exceptions.

+	 */

+	public String[] getExceptions() {

+		return exceptions;

+	}

+

+	/**

+	 * @param methodName The methodName to set.

+	 */

+	public void setMethodName(String methodName) {

+		this.methodName = methodName;

+	}

+

+	/**

+	 * @param returnType The returnType to set.

+	 */

+	public void setReturnType(String returnType) {

+		this.returnType = returnType;

+	}

+

+	/**

+	 * @param oneWayAnnotated The oneWay boolean to set

+	 */

+	public void setOneWayAnnot(boolean oneWayAnnotated) {

+		this.oneWayAnnotated = oneWayAnnotated;

+	}

+

+	/**

+	 * @param webEndpointAnnotImpl The webEndpointAnnotImpl to set.

+	 */

+	public void setWebEndpointAnnot(WebEndpointAnnot webEndpointAnnot) {

+		this.webEndpointAnnot = webEndpointAnnot;

+	}

+

+	/**

+	 * @param requestWrapperAnnot The requestWrapperAnnot to set.

+	 */

+	public void setRequestWrapperAnnot(

+			RequestWrapperAnnot requestWrapperAnnot) {

+		this.requestWrapperAnnot = requestWrapperAnnot;

+	}

+

+	/**

+	 * @param responseWrapperAnnot The responseWrapperAnnot to set.

+	 */

+	public void setResponseWrapperAnnot(

+			ResponseWrapperAnnot responseWrapperAnnot) {

+		this.responseWrapperAnnot = responseWrapperAnnot;

+	}

+	

+	/**

+	 * @param webServiceContextAnnot The webServiceContextAnnot to set.

+	 */

+	private void setWebServiceContextAnnot(WebServiceContextAnnot webServiceContextAnnot) {

+		this.webServiceContextAnnot = webServiceContextAnnot;

+	}

+

+

+	/**

+	 * @param handlerChainAnnot The handlerChainAnnot to set.

+	 */

+	public void setHandlerChainAnnot(HandlerChainAnnot handlerChainAnnot) {

+		this.handlerChainAnnot = handlerChainAnnot;

+	}

+

+	/**

+	 * @param soapBindingAnnot The soapBindingAnnot to set.

+	 */

+	public void setSoapBindingAnnot(SoapBindingAnnot soapBindingAnnot) {

+		this.soapBindingAnnot = soapBindingAnnot;

+	}

+

+	/**

+	 * @param webMethodAnnot The webMethodAnnot to set.

+	 */

+	public void setWebMethodAnnot(WebMethodAnnot webMethodAnnot) {

+		this.webMethodAnnot = webMethodAnnot;

+	}

+

+	/**

+	 * @param webResultAnnot The webResultAnnot to set.

+	 */

+	public void setWebResultAnnot(WebResultAnnot webResultAnnot) {

+		this.webResultAnnot = webResultAnnot;

+	}

+

+	/**

+	 * @param webServiceRefAnnot The webServiceRefAnnot to set.

+	 */

+	public void setWebServiceRefAnnot(WebServiceRefAnnot webServiceRefAnnot) {

+		this.webServiceRefAnnot = webServiceRefAnnot;

+	}

+	

+	/**

+	 *  @param parameterDescription The parameterDescription to add to the set.

+	 */

+	public void addParameterDescriptionComposite(ParameterDescriptionComposite parameterDescription) {

+		parameterDescriptions.add(parameterDescription);

+	}

+	

+	/**

+	 *  @param parameterDescription The parameterDescription to add to the set.

+	 *  @param index The index at which to place this parameterDescription

+	 */

+	public void addParameterDescriptionComposite(ParameterDescriptionComposite parameterDescription, int index) {

+		parameterDescriptions.add(index, parameterDescription);

+	}

+	

+	/**

+	 *  @param parameterDescription The parameterDescription to add to the set.

+	 */

+	public void setParameterDescriptionCompositeList(List<ParameterDescriptionComposite> parameterDescriptionList) {

+		this.parameterDescriptions = parameterDescriptionList;

+	}

+	

+	/**

+	 *  @param parameterDescription The parameterDescription to add to the set.

+	 */

+	public ParameterDescriptionComposite getParameterDescriptionComposite(int index) {

+		return parameterDescriptions.get(index);

+	}

+

+	/**

+	 * @param exceptions The exceptions to set.

+	 */

+	public void setExceptions(String[] exceptions) {

+		this.exceptions = exceptions;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java
new file mode 100644
index 0000000..6774356
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ParameterDescriptionComposite.java
@@ -0,0 +1,86 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.description.builder;

+

+public class ParameterDescriptionComposite {

+	

+	private String 					parameterType;	

+	private WebParamAnnot			webParamAnnot;

+	private WebServiceRefAnnot 		webServiceRefAnnot;

+	private WebServiceContextAnnot	webServiceContextAnnot;

+

+	public ParameterDescriptionComposite () {

+		

+	}

+	

+	public ParameterDescriptionComposite (	

+			String 					parameterType,

+			WebParamAnnot 			webParamAnnot,

+			WebServiceRefAnnot 		webServiceRefAnnot,

+			WebServiceContextAnnot	webServiceContextAnnot) {

+

+		this.parameterType 			= parameterType;

+		this.webParamAnnot 			= webParamAnnot;

+		this.webServiceRefAnnot 	= webServiceRefAnnot;

+		this.webServiceContextAnnot = webServiceContextAnnot;

+	}

+	

+

+	/**

+	 * @return Returns the parameterType.

+	 */

+	private String getParameterType() {

+		return parameterType;

+	}

+

+	/**

+	 * @return Returns the webParamAnnot.

+	 */

+	private WebParamAnnot getWebParamAnnot() {

+		return webParamAnnot;

+	}

+

+	/**

+	 * @return Returns the webServiceRefAnnot.

+	 */

+	private WebServiceRefAnnot getWebServiceRefAnnot() {

+		return webServiceRefAnnot;

+	}

+

+	/**

+	 * @return Returns the webServiceContextAnnot.

+	 */

+	public WebServiceContextAnnot getWebServiceContextAnnot() {

+		return webServiceContextAnnot;

+	}

+

+	/**

+	 * @param parameterType The parameterType to set.

+	 */

+	private void setParameterType(String parameterType) {

+		this.parameterType = parameterType;

+	}

+

+	/**

+	 * @param webParamAnnot The webParamAnnot to set.

+	 */

+	private void setWebParamAnnot(WebParamAnnot webParamAnnot) {

+		this.webParamAnnot = webParamAnnot;

+	}

+

+	/**

+	 * @param webServiceRefAnnot The webServiceRefAnnot to set.

+	 */

+	private void setWebServiceRefAnnot(WebServiceRefAnnot webServiceRefAnnot) {

+		this.webServiceRefAnnot = webServiceRefAnnot;

+	}

+

+	/**

+	 * @param webServiceContextAnnot The webServiceContextAnnot to set.

+	 */

+	private void setWebServiceContextAnnot(WebServiceContextAnnot webServiceContextAnnot) {

+		this.webServiceContextAnnot = webServiceContextAnnot;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/RequestWrapperAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/RequestWrapperAnnot.java
new file mode 100644
index 0000000..870518d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/RequestWrapperAnnot.java
@@ -0,0 +1,109 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class RequestWrapperAnnot implements javax.xml.ws.RequestWrapper{

+

+	private String 	localName;

+	private String 	targetNamespace;

+	private String 	className;			

+

+	

+	/**

+     * A RequestWrapperAnnot cannot be instantiated.

+     */

+	private  RequestWrapperAnnot(){

+		

+	}

+	

+	private  RequestWrapperAnnot(

+			String localName,

+			String targetNamespace,

+			String className)

+	{

+		this.localName = localName;

+		this.targetNamespace = targetNamespace;

+		this.className = className;

+	}

+

+    public static RequestWrapperAnnot createRequestWrapperAnnotImpl() {

+        return new RequestWrapperAnnot();

+    }

+

+    public static RequestWrapperAnnot createRequestWrapperAnnotImpl( 

+    			String localName,

+    			String targetNamespace,

+    			String className

+    		) 

+    {

+        return new RequestWrapperAnnot( localName, 

+        								targetNamespace, 

+        								className);

+    }

+	

+	

+	/**

+	 * @return Returns the name.

+	 */

+	public String localName() {

+		return this.localName;

+	}

+	

+	/**

+	 * @return Returns the targetNamespace.

+	 */

+	public String targetNamespace() {

+		return this.targetNamespace;

+	}

+	

+	/**

+	 * @return Returns the wsdlLocation.

+	 */

+	public String className() {

+		return this.className;

+	}

+

+	/**

+	 * @param name The name to set.

+	 */

+	public void setLocalName(String localName) {

+		this.localName = localName;

+	}

+

+	/**

+	 * @param targetNamespace The targetNamespace to set.

+	 */

+	public void setTargetNamespace(String targetNamespace) {

+		this.targetNamespace = targetNamespace;

+	}

+

+	/**

+	 * @param wsdlLocation The wsdlLocation to set.

+	 */

+	public void setClassName(String className) {

+		this.className = className;

+	}

+	

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ResponseWrapperAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ResponseWrapperAnnot.java
new file mode 100644
index 0000000..a3b0630
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ResponseWrapperAnnot.java
@@ -0,0 +1,109 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class ResponseWrapperAnnot implements javax.xml.ws.ResponseWrapper{

+

+	private String 	localName;

+	private String 	targetNamespace;

+	private String 	className;			

+

+	

+	/**

+     * A ResponseWrapperAnnot cannot be instantiated.

+     */

+	private  ResponseWrapperAnnot(){

+		

+	}

+	

+	private  ResponseWrapperAnnot(

+			String localName,

+			String targetNamespace,

+			String className)

+	{

+		this.localName = localName;

+		this.targetNamespace = targetNamespace;

+		this.className = className;

+	}

+

+    public static ResponseWrapperAnnot createResponseWrapperAnnotImpl() {

+        return new ResponseWrapperAnnot();

+    }

+

+    public static ResponseWrapperAnnot createResponseWrapperAnnotImpl( 

+    			String localName,

+    			String targetNamespace,

+    			String className

+    		) 

+    {

+        return new ResponseWrapperAnnot( localName, 

+        								targetNamespace, 

+        								className);

+    }

+	

+	

+	/**

+	 * @return Returns the name.

+	 */

+	public String localName() {

+		return this.localName;

+	}

+	

+	/**

+	 * @return Returns the targetNamespace.

+	 */

+	public String targetNamespace() {

+		return this.targetNamespace;

+	}

+	

+	/**

+	 * @return Returns the wsdlLocation.

+	 */

+	public String className() {

+		return this.className;

+	}

+

+	/**

+	 * @param name The name to set.

+	 */

+	public void setLocalName(String localName) {

+		this.localName = localName;

+	}

+

+	/**

+	 * @param targetNamespace The targetNamespace to set.

+	 */

+	public void setTargetNamespace(String targetNamespace) {

+		this.targetNamespace = targetNamespace;

+	}

+

+	/**

+	 * @param wsdlLocation The wsdlLocation to set.

+	 */

+	public void setClassName(String className) {

+		this.className = className;

+	}

+	

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ServiceModeAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ServiceModeAnnot.java
new file mode 100644
index 0000000..857e748
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/ServiceModeAnnot.java
@@ -0,0 +1,63 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+import javax.xml.ws.Service;

+ 

+public class ServiceModeAnnot implements javax.xml.ws.ServiceMode{

+	

+	private Service.Mode value = Service.Mode.PAYLOAD;

+

+	/**

+     * A ServiceModeAnnot cannot be instantiated.

+     */

+	private  ServiceModeAnnot(){

+		

+	}

+	

+	private  ServiceModeAnnot( Service.Mode value)

+	{

+		this.value = value;

+	}

+

+    public static ServiceModeAnnot createWebServiceAnnotImpl() {

+        return new ServiceModeAnnot();

+    }

+

+    public static ServiceModeAnnot createWebServiceAnnotImpl( Service.Mode value) 

+    {

+        return new ServiceModeAnnot( value );

+    }

+

+	public Service.Mode value(){

+		return this.value;

+	}

+	

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+	

+	//Setters

+	public void setValue(Service.Mode value){

+		this.value = value;

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/SoapBindingAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/SoapBindingAnnot.java
new file mode 100644
index 0000000..5dee984
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/SoapBindingAnnot.java
@@ -0,0 +1,80 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+import javax.jws.soap.SOAPBinding.ParameterStyle;

+import javax.jws.soap.SOAPBinding.Style;

+import javax.jws.soap.SOAPBinding.Use;

+

+public class SoapBindingAnnot implements javax.jws.soap.SOAPBinding{

+

+    private Style style = Style.DOCUMENT;

+    private Use use = Use.LITERAL;

+    private ParameterStyle parameterStyle = ParameterStyle.WRAPPED;

+

+	/**

+     * A SoapBindingAnnot cannot be instantiated.

+     */

+	private  SoapBindingAnnot(){

+		

+	}

+	

+    public static SoapBindingAnnot createSoapBindingAnnotImpl() {

+        return new SoapBindingAnnot();

+    }

+

+    public Style style(){

+		return this.style;

+	}

+		

+    public Use use(){

+		return this.use;

+	}

+	

+    public ParameterStyle parameterStyle(){

+		return this.parameterStyle;

+	}

+			

+

+	/**

+	 * @param parameterStyle The parameterStyle to set.

+	 */

+	public void setParameterStyle(ParameterStyle parameterStyle) {

+		this.parameterStyle = parameterStyle;

+	}

+

+	/**

+	 * @param style The style to set.

+	 */

+	public void setStyle(Style style) {

+		this.style = style;

+	}

+

+	/**

+	 * @param use The use to set.

+	 */

+	public void setUse(Use use) {

+		this.use = use;

+	}

+

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebEndpointAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebEndpointAnnot.java
new file mode 100644
index 0000000..91b09f6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebEndpointAnnot.java
@@ -0,0 +1,65 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class WebEndpointAnnot implements javax.xml.ws.WebEndpoint{

+

+	private String 	name = "";

+

+	/**

+     * A WebEndpointAnnot cannot be instantiated.

+     */

+	private	WebEndpointAnnot( String name )

+	{

+		this.name = name;

+	}

+	

+	private WebEndpointAnnot()

+	{

+		

+	}

+

+    public static WebEndpointAnnot createWebEndpointAnnotImpl() {

+        return new WebEndpointAnnot();

+    }

+

+    public static WebEndpointAnnot createWebEndpointAnnotImpl( String name )

+    {

+        return new WebEndpointAnnot( name );

+    }

+

+	/**

+	 * @return Returns the name.

+	 */

+	public String name() {

+		return name;

+	}

+	

+	/**

+	 * @param name The name to set.

+	 */

+	public void setName(String name) {

+		this.name = name;

+	}

+

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebFaultAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebFaultAnnot.java
new file mode 100644
index 0000000..ebe14ab
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebFaultAnnot.java
@@ -0,0 +1,79 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class WebFaultAnnot implements javax.xml.ws.WebFault{

+

+	private String name = "return";

+	private String targetNamespace = "";

+	private String faultBean = "";

+	

+	/**

+     * A WebFaultAnnot cannot be instantiated.

+     */

+	private  WebFaultAnnot(){

+		

+	}

+	

+    public static WebFaultAnnot createWebFaultAnnotImpl() {

+        return new WebFaultAnnot();

+    }

+    

+    /**

+     * Get the 'name'

+     * @return String 

+     */

+	public String name() {

+		return this.name;

+	}

+	

+	public String targetNamespace() {

+		return this.targetNamespace;

+	}

+	

+	public String faultBean() {

+		return this.faultBean;

+	}

+				

+	/**

+	 * @param faultBean The faultBean to set.

+	 */

+	public void setFaultBean(String faultBean) {

+		this.faultBean = faultBean;

+	}

+

+	/**

+	 * @param name The name to set.

+	 */

+	public void setName(String name) {

+		this.name = name;

+	}

+

+	/**

+	 * @param targetNamespace The targetNamespace to set.

+	 */

+	public void setTargetNamespace(String targetNamespace) {

+		this.targetNamespace = targetNamespace;

+	}

+

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebMethodAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebMethodAnnot.java
new file mode 100644
index 0000000..32b7bd9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebMethodAnnot.java
@@ -0,0 +1,74 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class WebMethodAnnot implements javax.jws.WebMethod{

+

+	private String operationName = "";

+	private String action = "";

+	private boolean exclude = false;

+	/**

+     * A WebMethodAnnot cannot be instantiated.

+     */

+	private  WebMethodAnnot(){

+		

+	}

+	

+    public static WebMethodAnnot createWebMethodAnnotImpl() {

+        return new WebMethodAnnot();

+    }

+    

+	public String operationName() {

+		return this.operationName;

+	}

+	

+	public String action() {

+		return this.action;

+	}

+	public boolean exclude() {

+		return this.exclude;

+	}

+	

+	/**

+	 * @param action The action to set.

+	 */

+	public void setAction(String action) {

+		this.action = action;

+	}

+

+	/**

+	 * @param exclude The exclude to set.

+	 */

+	public void setExclude(boolean exclude) {

+		this.exclude = exclude;

+	}

+

+	/**

+	 * @param operationName The operationName to set.

+	 */

+	public void setOperationName(String operationName) {

+		this.operationName = operationName;

+	}

+

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebParamAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebParamAnnot.java
new file mode 100644
index 0000000..240b14d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebParamAnnot.java
@@ -0,0 +1,105 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+import javax.jws.WebParam.Mode;

+

+public class WebParamAnnot implements javax.jws.WebParam{

+

+	private String 	name;

+	private String 	targetNamespace;

+	private Mode 	mode = Mode.IN;

+	private boolean header;

+	private String 	partName;

+

+	/**

+     * A WebParamAnnot cannot be instantiated.

+     */

+	private  WebParamAnnot(){

+		

+	}

+	

+    public static WebParamAnnot createWebParamAnnotImpl() {

+        return new WebParamAnnot();

+    }

+    

+    /**

+     * Get the 'name'

+     * @return String 

+     */

+	public String name() {

+		return this.name;

+	}

+	

+	public String targetNamespace() {

+		return this.targetNamespace;

+	}

+	

+	public Mode mode() {

+		return this.mode;

+	}

+	

+	public boolean header () {

+		return this.header;

+	}

+	

+	public String partName() {

+		return this.partName;

+	}

+	

+	/**

+	 * @param name The name to set.

+	 */

+	public void setName(String name) {

+		this.name = name;

+	}

+

+	/**

+	 * @param targetNamespace The targetNamespace to set.

+	 */

+	public void setTargetNamespace(String targetNamespace) {

+		this.targetNamespace = targetNamespace;

+	}

+

+	/**

+	 * @param mode The mode to set.

+	 */

+	public void setMode(Mode mode) {

+		this.mode = mode;

+	}

+

+	/**

+	 * @param header The header to set.

+	 */

+	public void setHeader(boolean header) {

+		this.header = header;

+	}

+

+	/**

+	 * @param partName The partName to set.

+	 */

+	public void setPartName(String partName) {

+		this.partName = partName;

+	}

+				

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebResultAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebResultAnnot.java
new file mode 100644
index 0000000..75c45b0
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebResultAnnot.java
@@ -0,0 +1,102 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class WebResultAnnot implements javax.jws.WebResult{

+

+	private String name = "return";

+	private String targetNamespace = "";

+	private boolean header = false;

+	private String partName = "";

+	

+	/**

+     * A WebResultAnnot cannot be instantiated.

+     */

+	private  WebResultAnnot(){

+		

+	}

+	

+	/**

+	 * @return Returns an instance of WebResultAnnot.

+	 */	

+    public static WebResultAnnot createWebResultAnnotImpl() {

+        return new WebResultAnnot();

+    }

+    

+	/**

+	 * @return Returns the header.

+	 */

+	public boolean header() {

+		return header;

+	}

+

+	/**

+	 * @return Returns the name.

+	 */

+	public String name() {

+		return name;

+	}

+

+	/**

+	 * @return Returns the partName.

+	 */

+	public String partName() {

+		return partName;

+	}

+

+	/**

+	 * @return Returns the targetNamespace.

+	 */

+	public String targetNamespace() {

+		return targetNamespace;

+	}

+

+	/**

+	 * @param header The header to set.

+	 */

+	public void setHeader(boolean header) {

+		this.header = header;

+	}

+

+	/**

+	 * @param name The name to set.

+	 */

+	public void setName(String name) {

+		this.name = name;

+	}

+

+	/**

+	 * @param partName The partName to set.

+	 */

+	public void setPartName(String partName) {

+		this.partName = partName;

+	}

+

+	/**

+	 * @param targetNamespace The targetNamespace to set.

+	 */

+	public void setTargetNamespace(String targetNamespace) {

+		this.targetNamespace = targetNamespace;

+	}

+

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceAnnot.java
new file mode 100644
index 0000000..b3c47ac
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceAnnot.java
@@ -0,0 +1,148 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class WebServiceAnnot implements javax.jws.WebService{

+	

+	private String name = "";

+	private String targetNamespace = "";

+	private String serviceName = "";

+	private String wsdlLocation = "";

+	private String endpointInterface = "";

+	private String portName = "";

+

+	/**

+     * A WebServiceAnnot cannot be instantiated.

+     */

+	private  WebServiceAnnot(){

+		

+	}

+	

+	private  WebServiceAnnot(

+			String name,

+			String targetNamespace,

+			String serviceName,

+			String wsdlLocation,

+			String endpointInterface,

+			String portName)

+	{

+		this.name = name;

+		this.targetNamespace = targetNamespace;

+		this.serviceName = serviceName;

+		this.wsdlLocation = wsdlLocation;

+		this.endpointInterface = endpointInterface;

+		this.portName = portName;

+	}

+

+    public static WebServiceAnnot createWebServiceAnnotImpl() {

+        return new WebServiceAnnot();

+    }

+

+    public static WebServiceAnnot createWebServiceAnnotImpl( 

+    			String name,

+    			String targetNamespace,

+    			String serviceName,

+    			String wsdlLocation,

+    			String endpointInterface,

+    			String portName

+    		) 

+    {

+        return new WebServiceAnnot( name, 

+        								targetNamespace, 

+        								serviceName, 

+        								wsdlLocation, 

+        								endpointInterface, 

+        								portName);

+    }

+

+	public String name(){

+		return this.name;

+	}

+	

+	public String targetNamespace(){

+		return this.targetNamespace;

+	}

+	

+	public String serviceName(){

+		return this.serviceName;

+	}

+	

+	public String wsdlLocation(){

+		return this.wsdlLocation;

+	}

+	

+	public String endpointInterface(){

+		return this.endpointInterface;

+	}

+	

+	public String portName(){

+		return this.portName;

+	}

+	

+

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+	//Setters

+	/**

+	 * @param endpointInterface The endpointInterface to set.

+	 */

+	public void setEndpointInterface(String endpointInterface) {

+		this.endpointInterface = endpointInterface;

+	}

+

+	/**

+	 * @param name The name to set.

+	 */

+	public void setName(String name) {

+		this.name = name;

+	}

+

+	/**

+	 * @param portName The portName to set.

+	 */

+	public void setPortName(String portName) {

+		this.portName = portName;

+	}

+

+	/**

+	 * @param serviceName The serviceName to set.

+	 */

+	public void setServiceName(String serviceName) {

+		this.serviceName = serviceName;

+	}

+

+	/**

+	 * @param targetNamespace The targetNamespace to set.

+	 */

+	public void setTargetNamespace(String targetNamespace) {

+		this.targetNamespace = targetNamespace;

+	}

+

+	/**

+	 * @param wsdlLocation The wsdlLocation to set.

+	 */

+	public void setWsdlLocation(String wsdlLocation) {

+		this.wsdlLocation = wsdlLocation;

+	}

+	

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceClientAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceClientAnnot.java
new file mode 100644
index 0000000..7606573
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceClientAnnot.java
@@ -0,0 +1,109 @@
+/* Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class WebServiceClientAnnot implements javax.xml.ws.WebServiceClient{

+

+	private String 	name;

+	private String 	targetNamespace;

+	private String 	wsdlLocation;			

+

+	

+	/**

+     * A WebServiceClientAnnot cannot be instantiated.

+     */

+	private  WebServiceClientAnnot(){

+		

+	}

+	

+	private  WebServiceClientAnnot(

+			String name,

+			String targetNamespace,

+			String wsdlLocation)

+	{

+		this.name = name;

+		this.targetNamespace = targetNamespace;

+		this.wsdlLocation = wsdlLocation;

+	}

+

+    public static WebServiceClientAnnot createWebServiceClientAnnotImpl() {

+        return new WebServiceClientAnnot();

+    }

+

+    public static WebServiceClientAnnot createWebServiceClientAnnotImpl( 

+    			String name,

+    			String targetNamespace,

+    			String wsdlLocation

+    		) 

+    {

+        return new WebServiceClientAnnot( name, 

+        								targetNamespace, 

+        								wsdlLocation);

+    }

+	

+	

+	/**

+	 * @return Returns the name.

+	 */

+	public String name() {

+		return name;

+	}

+	

+	/**

+	 * @return Returns the targetNamespace.

+	 */

+	public String targetNamespace() {

+		return targetNamespace;

+	}

+	

+	/**

+	 * @return Returns the wsdlLocation.

+	 */

+	public String wsdlLocation() {

+		return wsdlLocation;

+	}

+

+	/**

+	 * @param name The name to set.

+	 */

+	public void setName(String name) {

+		this.name = name;

+	}

+

+	/**

+	 * @param targetNamespace The targetNamespace to set.

+	 */

+	public void setTargetNamespace(String targetNamespace) {

+		this.targetNamespace = targetNamespace;

+	}

+

+	/**

+	 * @param wsdlLocation The wsdlLocation to set.

+	 */

+	public void setWsdlLocation(String wsdlLocation) {

+		this.wsdlLocation = wsdlLocation;

+	}

+	

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceContextAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceContextAnnot.java
new file mode 100644
index 0000000..10f673f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceContextAnnot.java
@@ -0,0 +1,112 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+import java.security.Principal;

+

+import javax.xml.ws.handler.MessageContext;

+

+public class WebServiceContextAnnot implements javax.xml.ws.WebServiceContext{

+	

+	private MessageContext messageContext;

+	private Principal userPrincipal;

+	private boolean isUserInRole = false;

+

+	/**

+     * A WebServiceContextAnnot cannot be instantiated.

+     */

+	private  WebServiceContextAnnot(){

+		

+	}

+	

+	private  WebServiceContextAnnot(

+				MessageContext messageContext,

+				Principal userPrincipal,

+				boolean isUserInRole)

+	{

+		this.messageContext = messageContext;

+		this.userPrincipal = userPrincipal;

+		this.isUserInRole = isUserInRole;

+	}

+

+    public static WebServiceContextAnnot createWebServiceConextAnnot() {

+        return new WebServiceContextAnnot();

+    }

+

+    public static WebServiceContextAnnot createWebServiceContextAnnot( 

+			MessageContext messageContext,

+			Principal userPrincipal,

+			boolean isUserInRole

+    		) 

+    {

+        return new WebServiceContextAnnot( 	messageContext,

+        									userPrincipal,

+        									isUserInRole);

+    }

+

+	/**

+	 * @param role The role to check.

+	 * @return Returns boolean indicating whether user is in Role

+	 */

+	public boolean isUserInRole(String role) {

+		return isUserInRole;

+	}

+

+	/**

+	 * @return Returns the messageContext.

+	 */

+	public MessageContext getMessageContext() {

+		return messageContext;

+	}

+

+	/**

+	 * @return Returns the userPrincipal.

+	 */

+	public Principal getUserPrincipal() {

+		return userPrincipal;

+	}

+

+	/**

+	 * @param isUserInRole The isUserInRole to set.

+	 */

+	public void setUserInRole(boolean isUserInRole) {

+		this.isUserInRole = isUserInRole;

+	}

+

+	/**

+	 * @param messageContext The messageContext to set.

+	 */

+	public void setMessageContext(MessageContext messageContext) {

+		this.messageContext = messageContext;

+	}

+

+	/**

+	 * @param userPrincipal The userPrincipal to set.

+	 */

+	public void setUserPrincipal(Principal userPrincipal) {

+		this.userPrincipal = userPrincipal;

+	}

+

+

+	//hmm, should we really do this

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceProviderAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceProviderAnnot.java
new file mode 100644
index 0000000..8e63d5e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceProviderAnnot.java
@@ -0,0 +1,126 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class WebServiceProviderAnnot implements javax.xml.ws.WebServiceProvider{

+	

+	private String wsdlLocation = "";

+	private String serviceName = "";

+	private String portName = "";

+	private String targetNamespace = "";

+

+	/**

+     * A WebServiceProviderAnnot cannot be instantiated.

+     */

+	private  WebServiceProviderAnnot(){

+		

+	}

+	

+	private  WebServiceProviderAnnot(

+			String wsdlLocation,

+			String serviceName,

+			String portName,

+			String targetNamespace)

+	{

+		this.targetNamespace = targetNamespace;

+		this.serviceName = serviceName;

+		this.wsdlLocation = wsdlLocation;

+		this.portName = portName;

+	}

+

+    public static WebServiceProviderAnnot createWebServiceAnnotImpl() {

+        return new WebServiceProviderAnnot();

+    }

+

+    public static WebServiceProviderAnnot createWebServiceAnnotImpl( 

+    			String name,

+    			String targetNamespace,

+    			String serviceName,

+    			String wsdlLocation,

+    			String endpointInterface,

+    			String portName

+    		) 

+    {

+        return new WebServiceProviderAnnot( wsdlLocation,

+        										serviceName,

+        										portName,

+        										targetNamespace); 

+    }

+

+	/**

+	 * @return Returns the portName.

+	 */

+	public String portName() {

+		return portName;

+	}

+

+	/**

+	 * @return Returns the serviceName.

+	 */

+	public String serviceName() {

+		return serviceName;

+	}

+

+	/**

+	 * @return Returns the targetNamespace.

+	 */

+	public String targetNamespace() {

+		return targetNamespace;

+	}

+

+	/**

+	 * @return Returns the wsdlLocation.

+	 */

+	public String wsdlLocation() {

+		return wsdlLocation;

+	}

+

+	/**

+	 * @param portName The portName to set.

+	 */

+	public void setPortName(String portName) {

+		this.portName = portName;

+	}

+

+	/**

+	 * @param serviceName The serviceName to set.

+	 */

+	public void setServiceName(String serviceName) {

+		this.serviceName = serviceName;

+	}

+

+	/**

+	 * @param targetNamespace The targetNamespace to set.

+	 */

+	public void setTargetNamespace(String targetNamespace) {

+		this.targetNamespace = targetNamespace;

+	}

+

+	/**

+	 * @param wsdlLocation The wsdlLocation to set.

+	 */

+	public void setWsdlLocation(String wsdlLocation) {

+		this.wsdlLocation = wsdlLocation;

+	}

+

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceRefAnnot.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceRefAnnot.java
new file mode 100644
index 0000000..cfc24dc
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/description/builder/WebServiceRefAnnot.java
@@ -0,0 +1,190 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import java.lang.annotation.Annotation;

+

+public class WebServiceRefAnnot implements javax.xml.ws.WebServiceRef{

+	

+	private String name = "";

+	private String wsdlLocation = "";

+	private Class type;

+	private Class value;

+	private String mappedName = "";

+	

+	private String typeString = "";

+	private String valueString = "";

+	

+	/**

+     * A WebServiceRefAnnot cannot be instantiated.

+     */

+	private  WebServiceRefAnnot(){

+		

+	}

+	

+	private  WebServiceRefAnnot(

+			String 	name,

+			String 	wsdlLocation,

+			Class	type,

+			Class	value,

+			String 	mappedName,

+			String	typeString,

+			String	valueString)

+	{

+		this.name = name;

+		this.wsdlLocation = wsdlLocation;

+		this.type = type;

+		this.value = value;

+		this.mappedName = mappedName;

+		this.typeString = typeString;

+		this.valueString = valueString;

+	}

+

+    public static WebServiceRefAnnot createWebServiceRefAnnotImpl() {

+        return new WebServiceRefAnnot();

+    }

+

+    public static WebServiceRefAnnot createWebServiceRefAnnotImpl( 

+    			String 	name,

+    			String 	wsdlLocation,

+    			Class	type,

+    			Class	value,

+    			String	mappedName,

+    			String	typeString,

+    			String	valueString

+    		) 

+    {

+        return new WebServiceRefAnnot( 	name, 

+        								wsdlLocation, 

+        								type, 

+        								value, 

+        								mappedName,

+        								typeString,

+        								valueString);

+    }

+

+	

+	/**

+	 * @return Returns the mappedName.

+	 */

+	public String mappedName() {

+		return mappedName;

+	}

+

+	/**

+	 * @return Returns the name.

+	 */

+	public String name() {

+		return name;

+	}

+

+	/**

+	 * @return Returns the type.

+	 */

+	public Class type() {

+		return type;

+	}

+

+	/**

+	 * @return Returns the value.

+	 */

+	public Class value() {

+		return value;

+	}

+

+	/**

+	 * @return Returns the wsdlLocation.

+	 */

+	public String wsdlLocation() {

+		return wsdlLocation;

+	}

+

+	/**

+	 * @return Returns the typeString.

+	 */

+	public String getTypeString() {

+		return typeString;

+	}

+

+	/**

+	 * @return Returns the valueString.

+	 */

+	public String getValueString() {

+		return valueString;

+	}

+	

+	/**

+	 * @param mappedName The mappedName to set.

+	 */

+	public void setMappedName(String mappedName) {

+		this.mappedName = mappedName;

+	}

+

+	/**

+	 * @param name The name to set.

+	 */

+	public void setName(String name) {

+		this.name = name;

+	}

+

+	/**

+	 * @param type The type to set.

+	 */

+	public void setType(Class type) {

+		this.type = type;

+	}

+

+	/**

+	 * @param value The value to set.

+	 */

+	public void setValue(Class value) {

+		this.value = value;

+	}

+

+	/**

+	 * @param wsdlLocation The wsdlLocation to set.

+	 */

+	public void setWsdlLocation(String wsdlLocation) {

+		this.wsdlLocation = wsdlLocation;

+	}

+

+	/**

+	 * @return Returns the wsdlLocation.

+	 */

+	public String getWsdlLocation() {

+		return wsdlLocation;

+	}

+

+	/**

+	 * @param typeString The typeString to set.

+	 */

+	public void setTypeString(String typeString) {

+		this.typeString = typeString;

+	}

+	

+	/**

+	 * @param valueString The valueString to set.

+	 */

+	public void setValueString(String valueString) {

+		this.valueString = valueString;

+	}

+	

+	public Class<Annotation> annotationType(){

+		return Annotation.class;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerChainProcessor.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerChainProcessor.java
new file mode 100644
index 0000000..903b15e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerChainProcessor.java
@@ -0,0 +1,348 @@
+package org.apache.axis2.jaxws.handler;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import javax.xml.ws.ProtocolException;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.handler.Handler;

+import javax.xml.ws.handler.LogicalHandler;

+import javax.xml.ws.handler.MessageContext;

+import javax.xml.ws.handler.soap.SOAPHandler;

+import javax.xml.ws.handler.soap.SOAPMessageContext;

+

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+

+

+public class HandlerChainProcessor {

+

+	public enum Direction {

+		IN, OUT

+	};

+

+	// the type of message, not indicative of one-way vs. request-response

+	public enum MEP {

+		REQUEST, RESPONSE

+	};

+	

+	private MessageContext mc;

+	private ArrayList<Handler> handlers = null;

+	

+	// track start/end of logical and protocol handlers in the list

+	// The two scenarios are:  1) run logical handlers only, 2) run all handlers

+	// logical start is always 0

+	// protocol start is always logicalLength + 1

+	// list end is always handlers.size()-1

+	private int logicalLength = 0; 

+	

+	private final static int SUCCESSFUL = 0;

+	private final static int FAILED = 1;

+	private final static int PROTOCOL_EXCEPTION = 2;

+	private final static int OTHER_EXCEPTION = 3;

+	// save it if Handler.handleMessage throws one in HandlerChainProcessor.handleMessage

+	private RuntimeException savedException;

+

+	/*

+	 * HandlerChainProcess expects null, empty list, or an already-sorted

+	 * list.  If the chain passed into here came from our HandlerChainResolver,

+	 * it is sorted already.  If a client app created or manipulated the list,

+	 * it may not be sorted.  The processChain and processFault methods check

+	 * for this by calling verifyChain.

+	 */

+	public HandlerChainProcessor(ArrayList<Handler> chain) {

+		if (chain == null) {

+			handlers = new ArrayList<Handler>();

+		}

+		else

+			handlers = chain;

+	}

+	

+	/*

+	 * verifyChain will check that the chain is properly sorted, since it may be

+	 * a chain built or modified by a client application.  Also keep track of

+	 * start/end for each type of handler.

+	 */

+	private void verifyChain() throws WebServiceException {

+		boolean protocolHandlersStarted = false;

+		for (Handler handlerClass : handlers) {

+			if (LogicalHandler.class.isAssignableFrom(handlerClass.getClass())) {

+				if (protocolHandlersStarted)

+					throw ExceptionFactory.makeWebServiceException(Messages.getMessage("handlerChainErr0", handlerClass.getClass().getName()));

+				else {

+					logicalLength++;

+				}

+			}

+			else if (SOAPHandler.class.isAssignableFrom(handlerClass.getClass()))

+				protocolHandlersStarted = true;

+			else if (Handler.class.isAssignableFrom(handlerClass.getClass())) {

+				throw ExceptionFactory.makeWebServiceException(Messages.getMessage("handlerChainErr1", handlerClass.getClass().getName()));

+			} else {

+				throw ExceptionFactory.makeWebServiceException(Messages.getMessage("handlerChainErr2", handlerClass.getClass().getName()));

+			}

+

+		}

+	}

+	

+

+	

+	/**

+	 * @param mc

+	 * By the time processChain method is called, we already have the sorted chain,

+	 * and now we have the direction, MEP, MessageContext, and if a response is expected.  We should

+	 * be able to handle everything from here, no pun intended.

+	 * 

+	 * Two things a user of processChain should check when the method completes:

+	 * 1.  Has the MessageContext.MESSAGE_OUTBOUND_PROPERTY changed, indicating reversal of message direction

+	 * 2.  Has the message been converted to a fault message? (indicated by a flag in the message)

+	 */

+	public void processChain(MessageContext mc, Direction direction, MEP mep, boolean expectResponse) {

+		// make sure it's set:

+		mc.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, (direction == Direction.OUT));

+		

+		this.mc = mc;

+		verifyChain();

+		

+		if (SOAPMessageContext.class.isAssignableFrom(mc.getClass())) {  // all handlers

+			if (direction == Direction.OUT) {  // 9.3.2 outbound

+				callGenericHandlers(mep, expectResponse, 0, handlers.size()-1, direction);

+			}

+			else { // IN case - 9.3.2 inbound

+				callGenericHandlers(mep, expectResponse, handlers.size()-1, 0, direction);

+			}

+		}

+		else {  // logical handlers only

+			if (direction == Direction.OUT) {  // 9.3.2 outbound

+				callGenericHandlers(mep, expectResponse, 0, logicalLength-1, direction);

+			}

+			else { // IN case - 9.3.2 inbound

+				callGenericHandlers(mep, expectResponse, logicalLength-1, 0, direction);

+			}

+		}

+	}

+	

+	

+	/*

+	 * This is the implementation of JAX-WS 2.0 section 9.3.2.1

+	 */

+	private void callGenericHandlers(MEP mep, boolean expectResponse, int start, int end, Direction direction) throws RuntimeException {

+		

+		// if this is a response message, expectResponse should always be false

+		if (mep == MEP.RESPONSE)

+			expectResponse = false;

+		

+		int i = start;

+		int result = SUCCESSFUL;

+		

+		// declared and initialized just in case we need them

+		// in a reverse flow situation

+		int newStart = 0, newStart_inclusive = 0, newEnd = 0;

+		Direction newDirection = direction;

+

+		if (direction == Direction.OUT) {

+			while ((i <= end) && (result == SUCCESSFUL)) {

+				result = handleMessage(((Handler)handlers.get(i)), mc, direction, expectResponse);

+				newStart = i-1;

+				newStart_inclusive = i;

+				newEnd = 0;

+				newDirection = Direction.IN;

+				i++;

+			}

+		}

+		else { // IN case

+			while ((i >= end) && (result == SUCCESSFUL)) {

+				result = handleMessage(((Handler)handlers.get(i)), mc, direction, expectResponse);

+				newStart = i+1;

+				newStart_inclusive = i;

+				newEnd = handlers.size()-1;

+				newDirection = Direction.OUT;

+				i--;

+			}

+		}

+		

+		if (newDirection == direction) // we didn't actually process anything, probably due to empty list

+			return;  // no need to continue

+		

+		// 9.3.2.3 in all situations, we want to close as many handlers as

+		// were invoked prior to completion or exception throwing

+		if (expectResponse) {

+			if (result == FAILED) {

+				// we should only use callGenericHandlers_avoidRecursion in this case

+				callGenericHandlers_avoidRecursion(newStart, newEnd, newDirection);

+				callCloseHandlers(newStart_inclusive, newEnd, newDirection);

+			} else if (result == PROTOCOL_EXCEPTION) {

+				try {

+					callGenericHandleFault(newStart, newEnd, newDirection);

+					callCloseHandlers(newStart_inclusive, newEnd, newDirection);

+				} catch (RuntimeException re) {

+					callCloseHandlers(newStart_inclusive, newEnd, newDirection);

+					// TODO: NLS log and throw

+					throw re;

+				}

+			} else if (result == OTHER_EXCEPTION) {

+				callCloseHandlers(newStart_inclusive, newEnd, newDirection);

+				// savedException initialized in HandlerChainProcessor.handleMessage

+				// TODO: NLS log and throw

+				throw savedException;

+			}

+		} else { // everything was successful OR finished processing handlers

+			callCloseHandlers(newStart_inclusive, newEnd, newDirection);

+		}

+		

+	}

+

+	

+	/*

+	 * callGenericHandlers_avoidRecursion should ONLY be called from one place.

+	 * We can safely assume no false returns and no exceptions will be thrown

+	 * from here since the handlers we will be calling have all already

+	 * succeeded in callGenericHandlers.

+	 */

+	private void callGenericHandlers_avoidRecursion(int start,

+			int end, Direction direction) {

+		int i = start;

+

+		if (direction == Direction.OUT) {

+			for (; i <= end; i++) {

+				((Handler) handlers.get(i)).handleMessage(mc);

+			}

+		} else { // IN case

+			for (; i >= end; i--) {

+				((Handler) handlers.get(i)).handleMessage(mc);

+			}

+		}

+	}

+	

+	

+	/**

+	 * Calls handleMessage on the Handler.

+	 * If an exception is thrown and a response is expected, the MessageContext is updated with the handler information

+	 * @returns SUCCESSFUL if successfully, UNSUCCESSFUL if false, EXCEPTION if exception thrown

+	 */

+	private int handleMessage(Handler handler, MessageContext mc, Direction direction,

+			boolean expectResponse) throws RuntimeException {

+		try {

+			boolean success = handler.handleMessage(mc);

+			if (success)

+				return SUCCESSFUL;

+			else {

+				if (expectResponse)

+					mc.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, (direction != Direction.OUT));

+				return FAILED;

+			}

+		} catch (RuntimeException re) {  // RuntimeException and ProtocolException

+			savedException = re;

+			if (expectResponse)

+				mc.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, (direction != Direction.OUT));

+			if (ProtocolException.class.isAssignableFrom(re.getClass())) {

+				convertToFaultMessage(mc, re);

+				return PROTOCOL_EXCEPTION;

+			}

+			return OTHER_EXCEPTION;

+		}

+

+	}

+	

+	

+	/*

+	 * start and end should be INclusive of the handlers that have already been

+	 * invoked on Handler.handleMessage or Handler.handleFault

+	 */

+	private void callCloseHandlers(int start, int end,

+			Direction direction) {

+

+		if (direction == Direction.OUT) {

+			for (int i = start; i <= end; i++) {

+				try {

+					((Handler) handlers.get(i)).close(mc);

+				} catch (Exception e) {

+					// TODO: log it, but otherwise ignore

+				}

+			}

+		} else { // IN case

+			for (int i = start; i >= end; i--) {

+				try {

+					((Handler) handlers.get(i)).close(mc);

+				} catch (Exception e) {

+					// TODO: log it, but otherwise ignore

+				}

+			}

+		}

+	}

+	

+	/*

+	 * callHandleFault is available for a server to use when the endpoint

+	 * throws an exception or a client when it gets a fault response message

+	 * 

+	 * In both cases, all of the handlers have run successfully in the

+	 * opposite direction as this call to callHandleFault, and thus

+	 * should be closed.

+	 */

+	public void processFault(SOAPMessageContext mc, Direction direction) {

+		

+		// direction.IN = client

+		// direction.OUT = server

+		

+		// make sure it's right:

+		mc.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, (direction == Direction.OUT));

+

+		verifyChain();

+		

+		try {

+			if (direction == Direction.OUT) {

+				callGenericHandleFault(0, handlers.size()-1, direction);

+			}

+			else { // IN case

+				callGenericHandleFault(handlers.size()-1, 0, direction);

+			}

+		} catch (RuntimeException re) {

+			// TODO: log it

+			throw re;

+		} finally {

+			// we can close all the Handlers in reverse order

+			if (direction == Direction.OUT) {

+				callCloseHandlers(handlers.size()-1, 0, Direction.IN);

+			}

+			else { // IN case

+				callCloseHandlers(0, handlers.size()-1, Direction.OUT);

+			}

+		}

+	}

+	

+

+	/*

+	 * The callGenericHandleFault caller is responsible for closing any invoked

+	 * Handlers.  We don't know how far the Handler.handleMessage calls got

+	 * before a failure may have occurred.

+	 * 

+	 * Regardless of the Handler.handleFault result, the flow is the same (9.3.2.2)

+	 */

+	private void callGenericHandleFault(int start, int end,

+			Direction direction) throws RuntimeException {

+		

+		int i = start;

+

+		if (direction == Direction.OUT) {

+			for (; i <= end; i++) {

+				if (((Handler) handlers.get(i)).handleFault(mc) == false) {

+					break;

+				}

+			}

+		} else { // IN case

+			for (; i >= end; i--) {

+				if (((Handler) handlers.get(i)).handleFault(mc) == false) {

+					break;

+				}

+			}

+		}

+	}

+	

+	

+	private void convertToFaultMessage(MessageContext mc, Exception e) {

+		// TODO: implement

+		// need to check if message is already a fault message or not,

+		// probably by way of a flag (isFault) in the MessageContext or Message

+	}

+	

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerResolverImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerResolverImpl.java
new file mode 100644
index 0000000..30773ed
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerResolverImpl.java
@@ -0,0 +1,163 @@
+package org.apache.axis2.jaxws.handler;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.handler.Handler;

+import javax.xml.ws.handler.HandlerResolver;

+import javax.xml.ws.handler.LogicalHandler;

+import javax.xml.ws.handler.PortInfo;

+import javax.xml.ws.handler.soap.SOAPHandler;

+

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.description.EndpointDescription;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+

+/* 

+ * This class should be created by the ServiceDelegate.

+ * HandlerResolverImpl.getHandlerChain(PortInfo) will be called by the

+ * InvocationContext, and the return value will be set on the Binding

+ * under the BindingProvider.

+ * 

+ * HandlerResolverImpl.getHandlerChain(PortInfo) will be responsible for

+ * starting each Handler's lifecycle according to JAX-WS spec 9.3.1

+ */

+

+public class HandlerResolverImpl implements HandlerResolver {

+

+	/*

+	 * TODO:  is there any value/reason in caching the list we collect from the

+	 * ports?  It is a "live" list in the sense that we could possibly return

+	 * a List or ArrayList object to a service or client application, where

+	 * they could manipulate it.

+	 */

+

+	// we'll need to refer to this object to get the port, and thus handlers

+	private ServiceDelegate delegate;

+

+	public HandlerResolverImpl(ServiceDelegate delegate) {

+		this.delegate = delegate;

+	}

+

+	public List<Handler> getHandlerChain(PortInfo portinfo) {

+		// TODO:  would check and/or build cache here if implemented later

+		return resolveHandlers(portinfo);

+	}

+

+	/*

+	 * The list of handlers (rather, list of class names) is already

+	 * available per port.  Ports are stored under the ServiceDelegate

+	 * as PortData objects.

+	 * 

+	 * The resolveHandlers method is responsible for instantiating each Handler,

+	 * running the annotated PostConstruct method, sorting the list, resolving the list,

+	 * and returning it

+	 */

+	private List<Handler> resolveHandlers(PortInfo portinfo) throws WebServiceException {

+		EndpointDescription edesc = delegate.getServiceDescription().getEndpointDescription(portinfo.getPortName());

+		

+		ArrayList handlers = new ArrayList<Handler>();

+		ArrayList logicalHandlers = new ArrayList<Handler>();

+		ArrayList protocolHandlers = new ArrayList<Handler>();

+

+		/*

+		 * TODO: the list returned by getHandlerList() eventually will contain

+		 * more information than just a list of strings.  We will need to

+		 * do a better job checking that the return value (a HandlerDescription

+		 * object?) matches up with the PortInfo object before we add it to the

+		 * chain.

+		 */

+		

+		for (String portHandler : edesc.getHandlerList()) {

+			Handler handlerClass;

+			// instantiate portHandler class

+			try {

+				// TODO: ok to use system classloader?

+				handlerClass = (Handler) loadClass(portHandler).newInstance();

+				callHandlerPostConstruct(handlerClass);

+			} catch (ClassNotFoundException e) {

+				// TODO: should we just ignore this problem?

+				// TODO: NLS log and throw

+				throw ExceptionFactory.makeWebServiceException(e);

+			} catch (InstantiationException ie) {

+				// TODO: should we just ignore this problem?

+				// TODO: NLS log and throw

+				throw ExceptionFactory.makeWebServiceException(ie);

+			} catch (IllegalAccessException e) {

+				// TODO: should we just ignore this problem?

+				// TODO: NLS log and throw

+				throw ExceptionFactory.makeWebServiceException(e);

+			}

+			

+			// 9.2.1.2 sort them by Logical, then SOAP

+			if (LogicalHandler.class.isAssignableFrom(handlerClass.getClass()))

+				logicalHandlers.add((LogicalHandler)handlerClass);

+			else if (SOAPHandler.class.isAssignableFrom(handlerClass.getClass()))

+				// instanceof ProtocolHandler

+				protocolHandlers.add((SOAPHandler)handlerClass);

+			else if (Handler.class.isAssignableFrom(handlerClass.getClass())) {

+				// TODO: NLS better error message

+				throw ExceptionFactory.makeWebServiceException(Messages.getMessage("handlerChainErr1", handlerClass.getClass().getName()));

+			} else {

+				// TODO: NLS better error message

+				throw ExceptionFactory.makeWebServiceException(Messages.getMessage("handlerChainErr2", handlerClass.getClass().getName()));

+			}

+		}

+		

+		handlers.addAll(logicalHandlers);

+		handlers.addAll(protocolHandlers);

+		return handlers;

+	}

+	

+	

+	private static Class loadClass(String clazz) throws ClassNotFoundException {

+		try {

+			return Class.forName(clazz, true, ClassLoader.getSystemClassLoader());

+		} catch (ClassNotFoundException e) {

+			throw e;

+		}

+	}

+

+

+	private static void callHandlerPostConstruct(Object handlerClass) {

+		/*

+		 * TODO apparently there's no javax.annotation.* package in Java

+		 * EE 5 ?? We need to call @PostConstruct method on handler if present

+		for (Method method : handlerClass.getClass().getMethods()) {

+			if (method.getAnnotation(javax.annotation.PostConstruct.class) != null) {

+				try {

+					method.invoke(handlerClass, new Object [0]);

+					break;

+				} catch (Exception e) {

+					// TODO: log it, but otherwise ignore

+				}

+			}

+		}

+		*/

+	}

+	

+	/*

+	 * Helper method to destroy all instantiated Handlers once the runtime

+	 * is done with them.

+	 */

+	public static void destroyHandlers(List<Handler> handlers) {

+		/*

+		 * TODO apparently there's no javax.annotation.* package in Java

+		 * EE 5 ?? We need to call @PostConstruct method on handler if present

+		for (Handler handler: handlers) {

+			for (Method method: handler.getClass().getMethods()) {

+				if (method.getAnnotation(javax.annotation.PreDestroy.class) != null) {

+					try {

+						method.invoke(handlerClass, new Object[0]);

+						break;

+					} catch (Exception e) {

+						// TODO: log it, but otherwise ignore

+					}

+				}

+			}

+		}

+		*/

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/LogicalMessageContext.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/LogicalMessageContext.java
new file mode 100644
index 0000000..6fe3af9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/LogicalMessageContext.java
@@ -0,0 +1,42 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.handler;

+

+import javax.xml.ws.LogicalMessage;

+

+import org.apache.axis2.jaxws.core.MessageContext;

+

+/**

+ * The LogicalMessageContext is a JAX-WS interface that is given

+ * to Logical handlers to provide access to the message and

+ * its associated properties.

+ */

+public class LogicalMessageContext extends ProtectedMessageContext

+    implements javax.xml.ws.handler.LogicalMessageContext {

+    

+    public LogicalMessageContext() {

+		super();

+	}

+

+	public LogicalMessageContext(MessageContext mc) {

+		super(mc);

+	}

+

+	public LogicalMessage getMessage() {

+        return null;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/PortData.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/PortData.java
new file mode 100644
index 0000000..9d30cdf
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/PortData.java
@@ -0,0 +1,24 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.handler;

+

+import javax.xml.ws.handler.PortInfo;

+

+public interface PortData extends PortInfo {

+	public String getEndpointAddress();

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/PortInfoImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/PortInfoImpl.java
new file mode 100644
index 0000000..9842f66
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/PortInfoImpl.java
@@ -0,0 +1,123 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.handler;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.WebServiceException;

+

+import org.apache.axis2.jaxws.i18n.Messages;

+

+public class PortInfoImpl implements PortData {

+	private QName serviceName = null;

+	private QName portName = null;

+	private String bindingId = null;

+	private String serviceEndpoint = null;

+	

+

+	/**

+	 * @param serviceName

+	 * @param portName

+	 * @param bindingId

+	 * @param serviceEndpoint

+	 */

+	public PortInfoImpl(QName serviceName, QName portName, String bindingId, String serviceEndpoint) {

+		super();

+		if (serviceName == null) {

+			throw new WebServiceException(Messages.getMessage("portInfoErr0", "<null>"));

+		}

+		if (portName == null) {

+			throw new WebServiceException(Messages.getMessage("portInfoErr1", "<null>"));

+		}

+		if (bindingId == null) {

+			throw new WebServiceException(Messages.getMessage("portInfoErr2", "<null>"));

+		}

+		this.serviceName = serviceName;

+		this.portName = portName;

+		this.bindingId = bindingId;

+		this.serviceEndpoint = serviceEndpoint;

+	}

+

+	public QName getServiceName() {

+		return serviceName;

+	}

+

+	public QName getPortName() {

+		return portName;

+	}

+

+	public String getBindingID() {

+		return bindingId;

+	}

+	

+	public String getEndpointAddress(){

+		return serviceEndpoint;

+	}

+

+	/* TODO:  I don't think we need the setters, let's leave the commented for now...

+

+    public void setServiceName(QName serviceName){

+        if (serviceName == null)

+            throw new RuntimeException("serviceName cannot be null");

+        this.serviceName = serviceName;

+    }

+    

+	

+	public void setPortName(QName portName){

+		if (portName == null)

+			throw new RuntimeException("portName cannot be null");

+		this.portName = portName;

+	}

+	

+	public void setBindingID(String bindingId){

+		if (bindingId == null)

+			throw new RuntimeException("bindingId cannot be null");

+		this.bindingId = bindingId;

+	}

+	

+	public void setEndPointAddress(String serviceEndpoint){

+		if (serviceEndpoint == null)

+			throw new RuntimeException("serviceEndpoint cannot be null");

+		this.serviceEndpoint = serviceEndpoint;

+	}

+	*/

+	

+

+	/*

+	 * PortInfo may be used as a key in a HandlerResolver Map cache, so

+	 * let's override Object.equals and Object.hashcode

+	 */

+	public boolean equals(Object obj) {

+		if (obj instanceof PortData) {

+			PortData info = (PortData) obj;

+			if (bindingId.equals(info.getBindingID())

+					&& portName.equals(info.getPortName())

+					&& serviceName.equals(info.getServiceName())) {

+				return true;

+			}

+		}

+		return false;

+	}

+	

+	/*

+	 * PortInfo is used as a key in the HandlerResolver cache object, so

+	 * we must override Object.equals and Object.hashcode (just use someone

+	 * else's hashcode that we know works).

+	 */

+	public int hashCode() {

+		return bindingId.hashCode();

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/ProtectedMessageContext.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/ProtectedMessageContext.java
new file mode 100644
index 0000000..d880c0f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/ProtectedMessageContext.java
@@ -0,0 +1,103 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.handler;

+

+import java.util.Collection;

+import java.util.Map;

+import java.util.Set;

+

+import org.apache.axis2.jaxws.core.MessageContext;

+

+/**

+ * The <tt>ProtectedMessageContext</tt> is the version of the MessageContext

+ * that will be given to application handlers as the handler list 

+ * is traversed.  Access to internal properties is limited by the protections

+ * built into this context.

+ * 

+ */

+public class ProtectedMessageContext implements javax.xml.ws.handler.MessageContext {

+    

+    private MessageContext msgContext;

+

+    public ProtectedMessageContext() {

+        //do nothing

+    }

+    

+    public ProtectedMessageContext(MessageContext mc) {

+        msgContext = mc;

+    }

+    

+    public Scope getScope(String s) {

+        return null;

+    }

+

+    public void setScope(String s, Scope scope) {

+        

+    }

+    

+    //--------------------------------------------------

+    // java.util.Map methods

+    //--------------------------------------------------

+    

+    public void clear() {

+        msgContext.getProperties().clear();

+    }

+

+    public boolean containsKey(Object key) {

+        return msgContext.getProperties().containsKey(key);

+    }

+

+    public boolean containsValue(Object value) {

+        return msgContext.getProperties().containsValue(value);

+    }

+

+    public Set entrySet() {

+        return msgContext.getProperties().entrySet();

+    }

+

+    public Object get(Object key) {

+        return msgContext.getProperties().get(key);

+    }

+

+    public boolean isEmpty() {

+        return msgContext.getProperties().isEmpty();

+    }

+

+    public Set keySet() {

+        return msgContext.getProperties().keySet();

+    }

+

+    public Object put(String key, Object value) {

+        return msgContext.getProperties().put(key, value);

+    }

+

+    public void putAll(Map t) {

+        msgContext.getProperties().putAll(t);        

+    }

+

+    public Object remove(Object key) {

+        return msgContext.getProperties().remove(key);

+    }

+

+    public int size() {

+        return msgContext.getProperties().size();

+    }

+

+    public Collection values() {

+        return msgContext.getProperties().values();

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java
new file mode 100644
index 0000000..df691c0
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/handler/SoapMessageContext.java
@@ -0,0 +1,60 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.handler;

+

+import java.net.URI;

+import java.util.Set;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPMessage;

+

+import org.apache.axis2.jaxws.core.MessageContext;

+

+/**

+ * The SOAPMessageContext is the context handed to SOAP-based application

+ * handlers.  It provides access to the SOAP message that represents the

+ * request or response via SAAJ.  It also allows access to any properties

+ * that have been registered and set on the MessageContext.

+ */

+public class SoapMessageContext extends ProtectedMessageContext 

+    implements javax.xml.ws.handler.soap.SOAPMessageContext {

+

+	

+    public SoapMessageContext() {

+		super();

+	}

+

+	public SoapMessageContext(MessageContext mc) {

+		super(mc);

+	}

+

+	public Object[] getHeaders(QName qname, JAXBContext jaxbcontext, boolean flag) {

+        return null;

+    }

+

+    public SOAPMessage getMessage() {

+        return null;

+    }

+

+    public Set<URI> getRoles() {

+        return null;

+    }

+

+    public void setMessage(SOAPMessage soapmessage) {

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/MessageBundle.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/MessageBundle.java
new file mode 100644
index 0000000..5763a6f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/MessageBundle.java
@@ -0,0 +1,200 @@
+/*

+ * Copyright 2004,2005 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.axis2.jaxws.i18n;

+

+import java.text.MessageFormat;

+import java.util.Locale;

+import java.util.MissingResourceException;

+import java.util.ResourceBundle;

+

+/**

+ * Accept parameters for ProjectResourceBundle,

+ * but defer object instantiation (and therefore

+ * resource bundle loading) until required.

+ */

+public class MessageBundle {

+    private boolean loaded = false;

+

+    private ProjectResourceBundle _resourceBundle = null;

+

+    private final String projectName;

+    private final String packageName;

+    private final String resourceName;

+    private final Locale locale;

+    private final ClassLoader classLoader;

+    private final ResourceBundle parent;

+

+

+    public final ProjectResourceBundle getResourceBundle() {

+        if (!loaded) {

+            _resourceBundle = ProjectResourceBundle.getBundle(projectName,

+                    packageName,

+                    resourceName,

+                    locale,

+                    classLoader,

+                    parent);

+            loaded = true;

+        }

+        return _resourceBundle;

+    }

+

+    /**

+     * Construct a new ExtendMessages

+     */

+    public MessageBundle(String projectName,

+                         String packageName,

+                         String resourceName,

+                         Locale locale,

+                         ClassLoader classLoader,

+                         ResourceBundle parent)

+            throws MissingResourceException {

+        this.projectName = projectName;

+        this.packageName = packageName;

+        this.resourceName = resourceName;

+        this.locale = locale;

+        this.classLoader = classLoader;

+        this.parent = parent;

+    }

+

+    /**

+     * Gets a string message from the resource bundle for the given key

+     *

+     * @param key The resource key

+     * @return The message

+     */

+    public String getMessage(String key) throws MissingResourceException {

+        return getMessage(key, (String[]) null);

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @return The message

+     */

+    public String getMessage(String key, String arg0) throws MissingResourceException {

+        return getMessage(key, new String[]{arg0});

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @return The message

+     */

+    public String getMessage(String key, String arg0, String arg1) throws MissingResourceException {

+        return getMessage(key, new String[]{arg0, arg1});

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @return The message

+     */

+    public String getMessage(String key, String arg0, String arg1, String arg2) throws MissingResourceException {

+        return getMessage(key, new String[]{arg0, arg1, arg2});

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @param arg3 The argument to place in variable {3}

+     * @return The message

+     */

+    public String getMessage(String key, String arg0, String arg1, String arg2, String arg3) throws MissingResourceException {

+        return getMessage(key, new String[]{arg0, arg1, arg2, arg3});

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @param arg3 The argument to place in variable {3}

+     * @param arg4 The argument to place in variable {4}

+     * @return The message

+     */

+    public String getMessage(String key, String arg0, String arg1, String arg2, String arg3, String arg4) throws MissingResourceException {

+        return getMessage(key, new String[]{arg0, arg1, arg2, arg3, arg4});

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key   The resource key

+     * @param array An array of objects to place in corresponding variables

+     * @return The message

+     */

+    public String getMessage(String key, String[] array) throws MissingResourceException {

+        String msg = null;

+        if (getResourceBundle() != null) {

+            msg = getResourceBundle().getString(key);

+        }

+

+        if (msg == null) {

+            throw new MissingResourceException("Cannot find resource key \"" + key +

+                    "\" in base name " +

+                    getResourceBundle().getResourceName(),

+                    getResourceBundle().getResourceName(), key);

+        }

+

+        return MessageFormat.format(msg, (Object[]) array);

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/Messages.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/Messages.java
new file mode 100644
index 0000000..6e0fd04
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/Messages.java
@@ -0,0 +1,291 @@
+/*

+ * Copyright 2004,2005 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.axis2.jaxws.i18n;

+

+import java.util.HashMap;

+import java.util.Locale;

+import java.util.MissingResourceException;

+import java.util.ResourceBundle;

+

+public class Messages {

+    private static final Class thisClass = Messages.class;

+

+    private static final String projectName = MessagesConstants.projectName;

+

+    private static final String resourceName = MessagesConstants.resourceName;

+    private static final Locale locale = MessagesConstants.locale;

+    

+    public static final String DEFAULT_MESSAGE_BUNDLE_KEY = "default";

+    private static final String NO_MESSAGE_BUNDLE = "Message Bundle is not available";

+

+    private static final String packageName = getPackage(thisClass.getName());

+    private static final ClassLoader classLoader = thisClass.getClassLoader();

+

+    private static final ResourceBundle parent =

+            (MessagesConstants.rootPackageName.equals(packageName))

+            ? null

+            : MessagesConstants.rootBundle;

+    

+    private static HashMap messageBundleMap = new HashMap ();

+

+    static {

+    	MessageBundle defaultMessageBundle =

+            new MessageBundle(projectName, packageName, resourceName,

+                    locale, classLoader, parent);

+    	addMessageBundle(DEFAULT_MESSAGE_BUNDLE_KEY,defaultMessageBundle);

+    }

+    

+    /**

+     * To add a new Message Bundle to the MessageBundle list.

+     * 

+     * @param messageBundleKey The key which will be used to refer to this message bundle later.

+     * @param messageBundle The message bundle.

+     */

+    public static void addMessageBundle (String messageBundleKey,MessageBundle messageBundle) {

+    	messageBundleMap.put(messageBundleKey,messageBundle);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key The resource key

+     * @return The formatted message

+     */

+    public static String getMessage(String key)

+            throws MissingResourceException {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle.getMessage(key);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @return The formatted message

+     */

+    public static String getMessage(String key, String arg0)

+            throws MissingResourceException {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle.getMessage(key, arg0);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @return The formatted message

+     */

+    public static String getMessage(String key, String arg0, String arg1)

+            throws MissingResourceException {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle.getMessage(key, arg0, arg1);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @return The formatted message

+     */

+    public static String getMessage(String key, String arg0, String arg1, String arg2)

+            throws MissingResourceException {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle.getMessage(key, arg0, arg1, arg2);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @param arg3 The argument to place in variable {3}

+     * @return The formatted message

+     */

+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3)

+            throws MissingResourceException {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @param arg3 The argument to place in variable {3}

+     * @param arg4 The argument to place in variable {4}

+     * @return The formatted message

+     */

+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3, String arg4)

+            throws MissingResourceException {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3, arg4);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param key  The resource key

+     * @param args An array of objects to place in corresponding variables

+     * @return The formatted message

+     */

+    public static String getMessage(String key, String[] args)

+            throws MissingResourceException {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle.getMessage(key, args);

+    }

+

+    public static ResourceBundle getResourceBundle() {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle.getResourceBundle();

+    }

+

+    public static MessageBundle getMessageBundle() {

+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);

+        return messageBundle;

+    }

+    

+    public static MessageBundle getMessageBundle(String messageBundleKey) {

+    	MessageBundle messageBundle = (MessageBundle) messageBundleMap.get (messageBundleKey);

+        return messageBundle;

+    }

+    

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param messageBundleKey The key for getting the correct message bundle.

+     * @param key The resource key

+     * @return The formatted message

+     */

+    public static String getMessageFromBundle(String messageBundleKey,String key)

+            throws MissingResourceException, Exception {

+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);

+    	if (messageBundle==null)

+    		throw new Exception (NO_MESSAGE_BUNDLE);

+    	

+        return messageBundle.getMessage(key);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param messageBundleKey The key for getting the correct message bundle.

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @return The formatted message

+     */

+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0)

+            throws MissingResourceException, Exception {

+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);

+    	if (messageBundle==null)

+    		throw new Exception (NO_MESSAGE_BUNDLE);

+    	

+        return messageBundle.getMessage(key, arg0);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param messageBundleKey The key for getting the correct message bundle.

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @return The formatted message

+     */

+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0, String arg1)

+            throws MissingResourceException, Exception {

+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);

+    	if (messageBundle==null)

+    		throw new Exception (NO_MESSAGE_BUNDLE);

+    	

+        return messageBundle.getMessage(key, arg0, arg1);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param messageBundleKey The key for getting the correct message bundle.

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @return The formatted message

+     */

+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0, String arg1, String arg2)

+            throws MissingResourceException, Exception {

+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);

+    	if (messageBundle==null)

+    		throw new Exception (NO_MESSAGE_BUNDLE);

+    	

+        return messageBundle.getMessage(key, arg0, arg1, arg2);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param messageBundleKey The key for getting the correct message bundle.

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @param arg3 The argument to place in variable {3}

+     * @return The formatted message

+     */

+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0, String arg1, String arg2, String arg3)

+            throws MissingResourceException, Exception {

+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);

+    	if (messageBundle==null)

+    		throw new Exception (NO_MESSAGE_BUNDLE);

+    	

+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param messageBundleKey The key for getting the correct message bundle.

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {2}

+     * @param arg3 The argument to place in variable {3}

+     * @param arg4 The argument to place in variable {4}

+     * @return The formatted message

+     */

+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0, String arg1, String arg2, String arg3, String arg4)

+            throws MissingResourceException, Exception {

+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);

+    	if (messageBundle==null)

+    		throw new Exception (NO_MESSAGE_BUNDLE);

+    	

+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3, arg4);

+    }

+

+    private static String getPackage(String name) {

+        return name.substring(0, name.lastIndexOf('.')).intern();

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/MessagesConstants.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/MessagesConstants.java
new file mode 100644
index 0000000..ab20757
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/MessagesConstants.java
@@ -0,0 +1,36 @@
+/*

+ * Copyright 2004,2005 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.axis2.jaxws.i18n;

+

+import java.util.Locale;

+import java.util.ResourceBundle;

+

+public class MessagesConstants {

+    public static final String projectName = "org.apache.axis2.jaxws".intern();

+    public static final String resourceName = "resource".intern();

+    public static final Locale locale = null;

+

+    public static final String rootPackageName = "org.apache.axis2.jaxws.i18n".intern();

+

+    public static final ResourceBundle rootBundle =

+            ProjectResourceBundle.getBundle(projectName,

+                    rootPackageName,

+                    resourceName,

+                    locale,

+                    MessagesConstants.class.getClassLoader(),

+                    null);

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/ProjectResourceBundle.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/ProjectResourceBundle.java
new file mode 100644
index 0000000..ce0f4dd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/ProjectResourceBundle.java
@@ -0,0 +1,456 @@
+/*

+ * Copyright 2004,2005 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.axis2.jaxws.i18n;

+

+

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.util.Enumeration;

+import java.util.HashSet;

+import java.util.Hashtable;

+import java.util.Iterator;

+import java.util.Locale;

+import java.util.MissingResourceException;

+import java.util.ResourceBundle;

+

+/**

+ * <p>Wrapper class for resource bundles. Property files are used to store

+ * resource strings, which are the only types of resources available.

+ * Property files can inherit properties from other files so that

+ * a base property file can be used and a small number of properties

+ * can be over-ridden by another property file. For example you may

+ * create an english version of a resource file named "resource.properties".

+ * You then decide that the British English version of all of the properties

+ * except one are the same, so there is no need to redefine all of the

+ * properties in "resource_en_GB", just the one that is different.</p>

+ * <p>The basename is the name of the property file without the ".properties"

+ * extension.</p>

+ * <p>Properties will be cached for performance.<p>

+ * <p>Property values stored in the property files can also contain dynamic

+ * variables. Any dynamic variable defined in PropertiesUtil.getVariableValue()

+ * can be used (such as {date}), as well as arguments in the form {0}, {1}, etc.

+ * Argument values are specified in the various overloaded getString() methods.</p>

+ */

+public class ProjectResourceBundle extends ResourceBundle {

+	private static final Log log = LogFactory.getLog(ProjectResourceBundle.class);

+

+

+    // The static cache of ResourceBundles.

+    // The key is the 'basename + locale + default locale'

+    // The element is a ResourceBundle object

+    private static final Hashtable bundleCache = new Hashtable();

+

+    private static final Locale defaultLocale = Locale.getDefault();

+

+    private final ResourceBundle resourceBundle;

+    private final String resourceName;

+

+

+    protected Object handleGetObject(String key)

+            throws MissingResourceException {

+        if (log.isDebugEnabled()) {

+            log.debug(this.toString() + "::handleGetObject(" + key + ")");

+        }

+        Object obj;

+        try {

+            obj = resourceBundle.getObject(key);

+        } catch (MissingResourceException e) {

+            /* catch missing resource, ignore, & return null

+             * if this method doesn't return null, then parents

+             * are not searched

+             */

+            obj = null;

+        }

+        return obj;

+    }

+

+    public Enumeration getKeys() {

+        Enumeration myKeys = resourceBundle.getKeys();

+        if (parent == null) {

+            return myKeys;

+        } else {

+            final HashSet set = new HashSet();

+            while (myKeys.hasMoreElements()) {

+                set.add(myKeys.nextElement());

+            }

+

+            Enumeration pKeys = parent.getKeys();

+            while (pKeys.hasMoreElements()) {

+                set.add(pKeys.nextElement());

+            }

+

+            return new Enumeration() {

+                private Iterator it = set.iterator();

+

+                public boolean hasMoreElements() {

+                    return it.hasNext();

+                }

+

+                public Object nextElement() {

+                    return it.next();

+                }

+            };

+        }

+    }

+

+

+    /**

+     * Construct a new ProjectResourceBundle

+     *

+     * @param projectName  The name of the project to which the class belongs.

+     *                     It must be a proper prefix of the caller's package.

+     * @param packageName  The package name to further construct

+     *                     the basename.

+     * @param resourceName The name of the resource without the

+     *                     ".properties" extension

+     * @throws MissingResourceException if projectName is not a prefix of

+     *                                  the caller's package name, or if the resource could not be

+     *                                  found/loaded.

+     */

+    public static ProjectResourceBundle getBundle(String projectName,

+                                                  String packageName,

+                                                  String resourceName)

+            throws MissingResourceException {

+        return getBundle(projectName, packageName, resourceName, null, null, null);

+    }

+

+    /**

+     * Construct a new ProjectResourceBundle

+     *

+     * @param projectName  The name of the project to which the class belongs.

+     *                     It must be a proper prefix of the caller's package.

+     * @param caller       The calling class.

+     *                

+     * @param resourceName The name of the resource without the

+     *                     ".properties" extension

+     * @throws MissingResourceException if projectName is not a prefix of

+     *                                  the caller's package name, or if the resource could not be

+     *                                  found/loaded.

+     */

+    public static ProjectResourceBundle getBundle(String projectName,

+                                                  Class caller,

+                                                  String resourceName,

+                                                  Locale locale)

+            throws MissingResourceException {

+        return getBundle(projectName,

+                caller,

+                resourceName,

+                locale,

+                null);

+    }

+

+    /**

+     * Construct a new ProjectResourceBundle

+     *

+     * @param projectName  The name of the project to which the class belongs.

+     *                     It must be a proper prefix of the caller's package.

+     * @param packageName  The package name to construct base name.

+     *                     

+     * @param resourceName The name of the resource without the

+     *                     ".properties" extension

+     * @param locale       The locale

+     * @throws MissingResourceException if projectName is not a prefix of

+     *                                  the caller's package name, or if the resource could not be

+     *                                  found/loaded.

+     */

+    public static ProjectResourceBundle getBundle(String projectName,

+                                                  String packageName,

+                                                  String resourceName,

+                                                  Locale locale,

+                                                  ClassLoader loader)

+            throws MissingResourceException {

+        return getBundle(projectName, packageName, resourceName, locale, loader, null);

+    }

+

+    /**

+     * Construct a new ProjectResourceBundle

+     *

+     * @param projectName   The name of the project to which the class belongs.

+     *                      It must be a proper prefix of the caller's package.

+     * @param caller        The calling class.

+     *                      This is used to get the package name to further construct

+     *                      the basename as well as to get the proper ClassLoader.

+     * @param resourceName  The name of the resource without the

+     *                      ".properties" extension

+     * @param locale        The locale

+     * @param extendsBundle If non-null, then this ExtendMessages will

+     *                      default to extendsBundle.

+     * @throws MissingResourceException if projectName is not a prefix of

+     *                                  the caller's package name, or if the resource could not be

+     *                                  found/loaded.

+     */

+    public static ProjectResourceBundle getBundle(String projectName,

+                                                  Class caller,

+                                                  String resourceName,

+                                                  Locale locale,

+                                                  ResourceBundle extendsBundle)

+            throws MissingResourceException {

+        return getBundle(projectName,

+                getPackage(caller.getClass().getName()),

+                resourceName,

+                locale,

+                caller.getClass().getClassLoader(),

+                extendsBundle);

+    }

+

+    /**

+     * Construct a new ProjectResourceBundle

+     *

+     * @param projectName   The name of the project to which the class belongs.

+     *                      It must be a proper prefix of the caller's package.

+     * @param packageName  The package name to further construct

+     *                     the basename.

+     * @param resourceName  The name of the resource without the

+     *                      ".properties" extension

+     * @param locale        The locale

+     * @param extendsBundle If non-null, then this ExtendMessages will

+     *                      default to extendsBundle.

+     * @throws MissingResourceException if projectName is not a prefix of

+     *                                  the caller's package name, or if the resource could not be

+     *                                  found/loaded.

+     */

+    public static ProjectResourceBundle getBundle(String projectName,

+                                                  String packageName,

+                                                  String resourceName,

+                                                  Locale locale,

+                                                  ClassLoader loader,

+                                                  ResourceBundle extendsBundle)

+            throws MissingResourceException {

+        if (log.isDebugEnabled()) {

+            log.debug("getBundle(" + projectName + ","

+                    + packageName + ","

+                    + resourceName + ","

+                    + String.valueOf(locale) + ",...)");

+        }

+

+        Context context = new Context();

+        context.setLocale(locale);

+        context.setLoader(loader);

+        context.setProjectName(projectName);

+        context.setResourceName(resourceName);

+        context.setParentBundle(extendsBundle);

+

+        packageName = context.validate(packageName);

+

+        ProjectResourceBundle bundle = null;

+        try {

+            bundle = getBundle(context, packageName);

+        } catch (RuntimeException e) {

+            log.debug("Exception: ", e);

+            throw e;

+        }

+

+        if (bundle == null) {

+            throw new MissingResourceException("Cannot find resource '" +

+                    packageName + '.' + resourceName + "'",

+                    resourceName, "");

+        }

+

+        return bundle;

+    }

+

+    /**

+     * get bundle...

+     * - check cache

+     * - try up hierarchy

+     * - if at top of hierarchy, use (link to) context.getParentBundle()

+     */

+    private static synchronized ProjectResourceBundle getBundle(Context context, String packageName)

+            throws MissingResourceException {

+        String cacheKey = context.getCacheKey(packageName);

+

+        ProjectResourceBundle prb = (ProjectResourceBundle) bundleCache.get(cacheKey);

+

+        if (prb == null) {

+            String name = packageName + '.' + context.getResourceName();

+            ResourceBundle rb = context.loadBundle(packageName);

+            ResourceBundle parent = context.getParentBundle(packageName);

+

+            if (rb != null) {

+                prb = new ProjectResourceBundle(name, rb);

+                prb.setParent(parent);

+                if (log.isDebugEnabled()) {

+                    log.debug("Created " + prb + ", linked to parent " + String.valueOf(parent));

+                }

+            } else {

+                if (parent != null) {

+                    if (parent instanceof ProjectResourceBundle) {

+                        prb = (ProjectResourceBundle) parent;

+                    } else {

+                        prb = new ProjectResourceBundle(name, parent);

+                    }

+                    if (log.isDebugEnabled()) {

+                        log.debug("Root package not found, cross link to " + parent);

+                    }

+                }

+            }

+

+            if (prb != null) {

+                // Cache the resource

+                bundleCache.put(cacheKey, prb);

+            }

+        }

+

+        return prb;

+    }

+

+    private static String getPackage(String name) {

+        return name.substring(0, name.lastIndexOf('.')).intern();

+    }

+

+    /**

+     * Construct a new ProjectResourceBundle

+     */

+    private ProjectResourceBundle(String name, ResourceBundle bundle)

+            throws MissingResourceException {

+        this.resourceBundle = bundle;

+        this.resourceName = name;

+    }

+

+    public String getResourceName() {

+        return resourceName;

+    }

+

+    /**

+     * Clears the internal cache

+     */

+//    public static void clearCache() {

+//        bundleCache.clear();

+//    }

+

+    public String toString() {

+        return resourceName;

+    }

+

+

+    private static class Context {

+        private Locale _locale;

+        private ClassLoader _loader;

+        private String _projectName;

+        private String _resourceName;

+        private ResourceBundle _parent;

+

+        void setLocale(Locale l) {

+            /* 1. Docs indicate that if locale is not specified,

+             *    then the default local is used in it's place.

+             * 2. A null value for locale is invalid.

+             * 

+             * Therefore, default...

+             */

+            _locale = (l == null) ? defaultLocale : l;

+        }

+

+        void setLoader(ClassLoader l) {

+            _loader = (l != null) ? l : this.getClass().getClassLoader();

+            // START FIX: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16868

+            if (_loader == null) {

+                _loader = ClassLoader.getSystemClassLoader();

+            }

+            // END FIX: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16868

+        }

+

+        void setProjectName(String name) {

+            _projectName = name.intern();

+        }

+

+        void setResourceName(String name) {

+            _resourceName = name.intern();

+        }

+

+        void setParentBundle(ResourceBundle b) {

+            _parent = b;

+        }

+

+        Locale getLocale() {

+            return _locale;

+        }

+

+        ClassLoader getLoader() {

+            return _loader;

+        }

+

+        String getProjectName() {

+            return _projectName;

+        }

+

+        String getResourceName() {

+            return _resourceName;

+        }

+

+        ResourceBundle getParentBundle() {

+            return _parent;

+        }

+

+        String getCacheKey(String packageName) {

+            String loaderName = (_loader == null) ? "" : (":" + _loader.hashCode());

+            return packageName + "." + _resourceName + ":" + _locale + ":" + defaultLocale + loaderName;

+        }

+

+        ResourceBundle loadBundle(String packageName) {

+            try {

+                return ResourceBundle.getBundle(packageName + '.' + _resourceName,

+                        _locale,

+                        _loader);

+            } catch (MissingResourceException e) {

+                // Deliberately surpressing print stack.. just the string for info.

+                log.debug("loadBundle: Ignoring MissingResourceException: " + e.getMessage());

+            }

+            return null;

+        }

+

+        ResourceBundle getParentBundle(String packageName) {

+            ResourceBundle p;

+            if (!packageName.equals(_projectName)) {

+                p = getBundle(this, getPackage(packageName));

+            } else {

+                p = _parent;

+                _parent = null;

+            }

+            return p;

+        }

+

+        String validate(String packageName)

+                throws MissingResourceException {

+            if (_projectName == null || _projectName.length() == 0) {

+                log.debug("Project name not specified");

+                throw new MissingResourceException("Project name not specified",

+                        "", "");

+            }

+

+            if (packageName == null || packageName.length() == 0) {

+                log.debug("Package name not specified");

+                throw new MissingResourceException("Package not specified",

+                        packageName, "");

+            }

+            packageName = packageName.intern();

+    

+            /* Ensure that project is a proper prefix of class.

+             * Terminate project name with '.' to ensure proper match.

+             */

+            if (!packageName.equals(_projectName) && !packageName.startsWith(_projectName + '.')) {

+                log.debug("Project not a prefix of Package");

+                throw new MissingResourceException("Project '" + _projectName

+                        + "' must be a prefix of Package '"

+                        + packageName + "'",

+                        packageName + '.' + _resourceName, "");

+            }

+

+            return packageName;

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/RB.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/RB.java
new file mode 100644
index 0000000..8155721
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/RB.java
@@ -0,0 +1,718 @@
+/*

+ * Copyright 2004,2005 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.axis2.jaxws.i18n;

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.text.MessageFormat;

+import java.util.Enumeration;

+import java.util.Hashtable;

+import java.util.Locale;

+import java.util.MissingResourceException;

+import java.util.Properties;

+

+/**

+ * CURRENTLY NOT USED

+ * KEEPING FOR REFERENCE  9/19/2002

+ * <p/>

+ * <p>Wrapper class for resource bundles. Property files are used to store

+ * resource strings, which are the only types of resources available.

+ * Property files can inherit properties from other files so that

+ * a base property file can be used and a small number of properties

+ * can be over-ridden by another property file. For example you may

+ * create an english version of a resource file named "resource.properties".

+ * You then decide that the British English version of all of the properties

+ * except one are the same, so there is no need to redefine all of the

+ * properties in "resource_en_GB", just the one that is different.</p>

+ * <p>The property file lookup searches for classes with various suffixes

+ * on the basis if the desired local and the current default local

+ * (as returned by Local.getDefault()). As property files are found the

+ * property values are merged so that inheritance is preserved.</p>

+ * <p>The order of searching is:</p>

+ * <dir>

+ * basename + "_" + langage + "_" + country + "_" + variant

+ * basename + "_" + langage + "_" + country

+ * basename + "_" + langage

+ * basename + "_" + defaultLanguage + "_" + defaultCountry + "_" + defaultVariant

+ * basename + "_" + defaultLanguage + "_" + defaultCountry

+ * basename + "_" + defaultLanguage

+ * basename

+ * </dir>

+ * <p>The basename is the name of the property file without the ".properties"

+ * extension.</p>

+ * <p>Properties will be cached for performance.<p>

+ * <p>Property values stored in the property files can also contain dynamic

+ * variables. Any dynamic variable defined in PropertiesUtil.getVariableValue()

+ * can be used (such as {date}), as well as arguments in the form {0}, {1}, etc.

+ * Argument values are specified in the various overloaded getString() methods.</p>

+ */

+public class RB {

+    // The static cache of properties. The key is the basename + the local +

+    // the default local and the element is the Properties object containing

+    // the resources

+    static Hashtable propertyCache = new Hashtable();

+

+    // The default base name

+    public static final String BASE_NAME = "resource";

+

+    // The property file extension

+    public static final String PROPERTY_EXT = ".properties";

+

+    // The name of the current base property file (with extension)

+    protected String basePropertyFileName;

+

+    // The properties for the current resource bundle

+    protected Properties resourceProperties;

+

+    /**

+     * Construct a new RB

+     *

+     * @param name The name of the property file without the ".properties" extension

+     */

+    public RB(String name) throws MissingResourceException {

+        this(null, name, null);

+    }

+

+    /**

+     * Construct a new RB

+     *

+     * @param caller The calling object. This is used to get the package name

+     *               to further construct the basename as well as to get the proper ClassLoader

+     * @param name   The name of the property file without the ".properties" extension

+     */

+    public RB(Object caller, String name) throws MissingResourceException {

+        this(caller, name, null);

+    }

+

+    /**

+     * Construct a new RB

+     *

+     * @param caller The calling object. This is used to get the package name

+     *               to further construct the basename as well as to get the proper ClassLoader

+     * @param name   The name of the property file without the ".properties" extension

+     * @param locale  The locale

+     */

+    public RB(Object caller, String name, Locale locale) throws MissingResourceException {

+        ClassLoader cl = null;

+

+        if (caller != null) {

+

+            Class c;

+            if (caller instanceof Class) {

+                c = (Class) caller;

+            } else {

+                c = caller.getClass();

+            }

+

+            // Get the appropriate class loader

+            cl = c.getClassLoader();

+

+            if (name.indexOf("/") == -1) {

+

+                // Create the full basename only if not given

+                String fullName = c.getName();

+

+                int pos = fullName.lastIndexOf(".");

+                if (pos > 0) {

+                    name = fullName.substring(0, pos + 1).replace('.', '/') + name;

+                }

+            }

+        } else {

+            // Try the shared default properties file...

+            if (name.indexOf("/") == -1) {

+                name = "org/apache/axis2/default-resource";

+            }

+        }

+

+        Locale defaultLocale = Locale.getDefault();

+

+        // If the locale given is the same as the default locale, ignore it

+        if (locale != null) {

+            if (locale.equals(defaultLocale)) {

+                locale = null;

+            }

+        }

+

+        // Load the properties. If no property files exist then a

+        // MissingResourceException will be thrown

+        loadProperties(name, cl, locale, defaultLocale);

+    }

+

+    /**

+     * Gets a string message from the resource bundle for the given key

+     *

+     * @param key The resource key

+     * @return The message

+     */

+    public String getString(String key) throws MissingResourceException {

+        return getString(key, (Object[]) null);

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @return The message

+     */

+    public String getString(String key, Object arg0) throws MissingResourceException {

+        Object[] o = new Object[1];

+        o[0] = arg0;

+        return getString(key, o);

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @return The message

+     */

+    public String getString(String key, Object arg0, Object arg1) throws MissingResourceException {

+        Object[] o = new Object[2];

+        o[0] = arg0;

+        o[1] = arg1;

+        return getString(key, o);

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key  The resource key

+     * @param arg0 The argument to place in variable {0}

+     * @param arg1 The argument to place in variable {1}

+     * @param arg2 The argument to place in variable {1}

+     * @return The message

+     */

+    public String getString(String key, Object arg0, Object arg1, Object arg2) throws MissingResourceException {

+        Object[] o = new Object[3];

+        o[0] = arg0;

+        o[1] = arg1;

+        o[2] = arg2;

+        return getString(key, o);

+    }

+

+    /**

+     * <p>Gets a string message from the resource bundle for the given key. The

+     * message may contain variables that will be substituted with the given

+     * arguments. Variables have the format:</p>

+     * <dir>

+     * This message has two variables: {0} and {1}

+     * </dir>

+     *

+     * @param key   The resource key

+     * @param array An array of objects to place in corresponding variables

+     * @return The message

+     */

+    public String getString(String key, Object[] array) throws MissingResourceException {

+        String msg = null;

+        if (resourceProperties != null) {

+            msg = resourceProperties.getProperty(key);

+        }

+

+        if (msg == null) {

+            throw new MissingResourceException("Cannot find resource key \"" + key +

+                    "\" in base name " + basePropertyFileName,

+                    basePropertyFileName, key);

+        }

+

+        msg = MessageFormat.format(msg, array);

+        return msg;

+    }

+

+    protected void loadProperties(String basename, ClassLoader loader, Locale locale,

+                                  Locale defaultLocale)

+            throws MissingResourceException {

+        // Check the cache first

+        String loaderName = "";

+        if (loader != null) {

+            loaderName = ":" + loader.hashCode();

+        }

+        String cacheKey = basename + ":" + locale + ":" + defaultLocale + loaderName;

+        Properties p = (Properties) propertyCache.get(cacheKey);

+        basePropertyFileName = basename + PROPERTY_EXT;

+

+        if (p == null) {

+            // The properties were not found in the cache. Search the given locale

+            // first

+            if (locale != null) {

+                p = loadProperties(basename, loader, locale, p);

+            }

+

+            // Search the default locale

+            if (defaultLocale != null) {

+                p = loadProperties(basename, loader, defaultLocale, p);

+            }

+

+            // Search for the basename

+            p = merge(p, loadProperties(basePropertyFileName, loader));

+

+            if (p == null) {

+                throw new MissingResourceException("Cannot find resource for base name " +

+                        basePropertyFileName, basePropertyFileName, "");

+            }

+

+            // Cache the properties

+            propertyCache.put(cacheKey, p);

+

+        }

+

+        resourceProperties = p;

+    }

+

+    protected Properties loadProperties(String basename, ClassLoader loader, Locale locale,

+                                        Properties props) {

+

+        String language = locale.getLanguage();

+        String country = locale.getCountry();

+        String variant = locale.getVariant();

+        if (variant != null) {

+            if (variant.trim().length() == 0) {

+                variant = null;

+            }

+        }

+

+        if (language != null) {

+

+            if (country != null) {

+

+                if (variant != null) {

+                    props = merge(props, loadProperties(basename + "_" + language + "_" + country + "_" + variant +

+                            PROPERTY_EXT, loader));

+                }

+                props = merge(props, loadProperties(basename + "_" + language + "_" + country +

+                        PROPERTY_EXT, loader));

+            }

+            props = merge(props, loadProperties(basename + "_" + language + PROPERTY_EXT, loader));

+        }

+        return props;

+    }

+

+    protected Properties loadProperties(String resname, ClassLoader loader) {

+        Properties props = null;

+

+        // Attempt to open and load the properties

+        InputStream in = null;

+        try {

+            if (loader != null) {

+                in = loader.getResourceAsStream(resname);

+            }

+

+            // Either we're using the system class loader or we didn't find the

+            // resource using the given class loader

+            if (in == null) {

+                in = ClassLoader.getSystemResourceAsStream(resname);

+            }

+            if (in != null) {

+                props = new Properties();

+                try {

+                    props.load(in);

+                } catch (IOException ex) {

+                    // On error, clear the props

+                    props = null;

+                }

+            }

+        } finally {

+            if (in != null) {

+                try {

+                    in.close();

+                } catch (Exception ex) {

+                    // Ignore error on close

+                }

+            }

+        }

+        return props;

+    }

+

+    /**

+     * Merge two Properties objects

+     */

+    protected Properties merge(Properties p1, Properties p2) {

+        if ((p1 == null) &&

+                (p2 == null)) {

+            return null;

+        } else if (p1 == null) {

+            return p2;

+        } else if (p2 == null) {

+            return p1;

+        }

+

+        // Now merge. p1 takes precedence

+        Enumeration enumeration = p2.keys();

+        while (enumeration.hasMoreElements()) {

+            String key = (String) enumeration.nextElement();

+            if (p1.getProperty(key) == null) {

+                p1.put(key, p2.getProperty(key));

+            }

+        }

+

+        return p1;

+    }

+

+    /**

+     * Get the underlying properties

+     */

+    public Properties getProperties() {

+        return resourceProperties;

+    }

+

+    // STATIC ACCESSORS

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param key    The resource key

+     * @return The formatted message

+     */

+    public static String getString(Object caller, String key)

+            throws MissingResourceException {

+        return getMessage(caller, BASE_NAME, null, key, null);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @return The formatted message

+     */

+    public static String getString(Object caller, String key, Object arg0)

+            throws MissingResourceException {

+        Object[] o = new Object[1];

+        o[0] = arg0;

+        return getMessage(caller, BASE_NAME, null, key, o);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @param arg1   The argument to place in variable {1}

+     * @return The formatted message

+     */

+    public static String getString(Object caller, String key, Object arg0, Object arg1)

+            throws MissingResourceException {

+        Object[] o = new Object[2];

+        o[0] = arg0;

+        o[1] = arg1;

+        return getMessage(caller, BASE_NAME, null, key, o);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @param arg1   The argument to place in variable {1}

+     * @param arg2   The argument to place in variable {2}

+     * @return The formatted message

+     */

+    public static String getString(Object caller, String key, Object arg0, Object arg1, Object arg2)

+            throws MissingResourceException {

+        Object[] o = new Object[3];

+        o[0] = arg0;

+        o[1] = arg1;

+        o[2] = arg2;

+        return getMessage(caller, BASE_NAME, null, key, o);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @param arg1   The argument to place in variable {1}

+     * @param arg2   The argument to place in variable {2}

+     * @param arg3   The argument to place in variable {3}

+     * @return The formatted message

+     */

+    public static String getString(Object caller, String key, Object arg0, Object arg1, Object arg2, Object arg3)

+            throws MissingResourceException {

+        Object[] o = new Object[4];

+        o[0] = arg0;

+        o[1] = arg1;

+        o[2] = arg2;

+        o[3] = arg3;

+        return getMessage(caller, BASE_NAME, null, key, o);

+    }

+

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @param arg1   The argument to place in variable {1}

+     * @param arg2   The argument to place in variable {2}

+     * @param arg3   The argument to place in variable {3}

+     * @param arg4   The argument to place in variable {4}

+     * @return Returns the formatted message.

+     */

+    public static String getString(Object caller, String key, Object arg0, Object arg1, Object arg2, Object arg3, Object arg4)

+            throws MissingResourceException {

+        Object[] o = new Object[5];

+        o[0] = arg0;

+        o[1] = arg1;

+        o[2] = arg2;

+        o[3] = arg3;

+        o[4] = arg4;

+        return getMessage(caller, BASE_NAME, null, key, o);

+    }

+

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param key    The resource key

+     * @param args  An array of objects to place in corresponding variables

+     * @return Returns the formatted message.

+     */

+    public static String getString(Object caller, String key, Object[] args)

+            throws MissingResourceException {

+        return getMessage(caller, BASE_NAME, null, key, args);

+    }

+

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param locale The locale

+     * @param key    The resource key

+     * @return The formatted message

+     */

+    public static String getString(Object caller, Locale locale, String key)

+            throws MissingResourceException {

+        return getMessage(caller, BASE_NAME, locale, key, null);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param locale The locale

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @return The formatted message

+     */

+    public static String getString(Object caller, Locale locale, String key, Object arg0)

+            throws MissingResourceException {

+        Object[] o = new Object[1];

+        o[0] = arg0;

+        return getMessage(caller, BASE_NAME, locale, key, o);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param locale The locale

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @param arg1   The argument to place in variable {1}

+     * @return The formatted message

+     */

+    public static String getString(Object caller, Locale locale, String key, Object arg0, Object arg1)

+            throws MissingResourceException {

+        Object[] o = new Object[2];

+        o[0] = arg0;

+        o[1] = arg1;

+        return getMessage(caller, BASE_NAME, locale, key, o);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param locale The locale

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @param arg1   The argument to place in variable {1}

+     * @param arg2   The argument to place in variable {2}

+     * @return The formatted message

+     */

+    public static String getString(Object caller, Locale locale, String key, Object arg0, Object arg1, Object arg2)

+            throws MissingResourceException {

+        Object[] o = new Object[3];

+        o[0] = arg0;

+        o[1] = arg1;

+        o[2] = arg2;

+        return getMessage(caller, BASE_NAME, locale, key, o);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param locale The locale

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @param arg1   The argument to place in variable {1}

+     * @param arg2   The argument to place in variable {2}

+     * @param arg3   The argument to place in variable {3}

+     * @return The formatted message

+     */

+    public static String getString(Object caller, Locale locale, String key, Object arg0, Object arg1, Object arg2, Object arg3)

+            throws MissingResourceException {

+        Object[] o = new Object[4];

+        o[0] = arg0;

+        o[1] = arg1;

+        o[2] = arg2;

+        o[3] = arg3;

+        return getMessage(caller, BASE_NAME, locale, key, o);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param locale The locale

+     * @param key    The resource key

+     * @param arg0   The argument to place in variable {0}

+     * @param arg1   The argument to place in variable {1}

+     * @param arg2   The argument to place in variable {2}

+     * @param arg3   The argument to place in variable {3}

+     * @return Returns the formatted message.

+     */

+    public static String getString(Object caller, Locale locale, String key, Object arg0, Object arg1, Object arg2, Object arg3, Object arg4)

+            throws MissingResourceException {

+        Object[] o = new Object[5];

+        o[0] = arg0;

+        o[1] = arg1;

+        o[2] = arg2;

+        o[3] = arg3;

+        o[4] = arg4;

+        return getMessage(caller, BASE_NAME, locale, key, o);

+    }

+

+    /**

+     * Get a message from resource.properties from the package of the given object.

+     *

+     * @param caller The calling object, used to get the package name and class loader

+     * @param locale The locale

+     * @param key    The resource key

+     * @param args  An array of objects to place in corresponding variables

+     * @return Returns the formatted message.

+     */

+    public static String getString(Object caller, Locale locale, String key, Object[] args)

+            throws MissingResourceException {

+        return getMessage(caller, BASE_NAME, locale, key, args);

+    }

+

+    // Workhorse that does the resource loading and key lookup

+    public static String getMessage(Object caller, String basename, Locale locale, String key,

+                                    Object[] args)

+            throws MissingResourceException {

+        String msg = null;

+        MissingResourceException firstEx = null;

+        String fullName = null;

+        Class curClass = null;

+        boolean didNull = false;

+

+        if (caller != null) {

+            if (caller instanceof Class)

+                curClass = (Class) caller;

+            else

+                curClass = caller.getClass();

+        }

+

+        while (msg == null) {

+

+            // Get the full name of the resource

+            if (curClass != null) {

+

+                // Create the full basename

+                String pkgName = curClass.getName();

+

+                int pos = pkgName.lastIndexOf(".");

+                if (pos > 0) {

+                    fullName = pkgName.substring(0, pos + 1).replace('.', '/') + basename;

+                } else {

+                    fullName = basename;

+                }

+            } else {

+                fullName = basename;

+            }

+

+            try {

+                RB rb = new RB(caller, fullName, locale);

+                msg = rb.getString(key, args);

+            } catch (MissingResourceException ex) {

+                if (curClass == null) {

+                    throw ex;

+                }

+

+                // Save the first exception

+                if (firstEx == null) {

+                    firstEx = ex;

+                }

+

+                // Get the superclass

+                curClass = curClass.getSuperclass();

+                if (curClass == null) {

+                    if (didNull)

+                        throw firstEx;

+                    didNull = true;

+                    caller = null;

+                } else {

+                    String cname = curClass.getName();

+                    if (cname.startsWith("java.") ||

+                            cname.startsWith("javax.")) {

+                        if (didNull)

+                            throw firstEx;

+                        didNull = true;

+                        caller = null;

+                        curClass = null;

+                    }

+                }

+            }

+

+        }

+        return msg;

+    }

+

+    /**

+     * Clears the internal cache.

+     */

+    public static void clearCache() {

+        propertyCache.clear();

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties
new file mode 100644
index 0000000..09ad007
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties
@@ -0,0 +1,103 @@
+# Translation instructions.

+# 1.  Each message line is of the form key=value.

+#     Translate the value, DO NOT translate the key.

+# 2.  The messages may contain arguments that will be filled in

+#     by the runtime.  These are of the form: {0}, {1}, etc.

+#     These must appear as is in the message, though the order

+#     may be changed to support proper language syntax.

+# 3.  If a single quote character is to appear in the resulting

+#     message, it must appear in this file as two consecutive

+#     single quote characters.

+# 4.  Lines beginning with "#" (like this one) are comment lines

+#     and may contain translation instructions.  They need not be

+#     translated unless your translated file, rather than this file,

+#     will serve as a base for other translators.

+

+#############################################################################

+# DO NOT TOUCH THESE PROPERTIES - THEY ARE AUTOMATICALLY UPDATED BY THE BUILD

+# PROCESS.

+axisVersion=Apache Axis2 version: #axisVersion#

+axisVersionRaw=#axisVersion#

+axisBuiltOnRaw=#today#

+axisUserAgent=Axis/#axisVersion#

+builtOn=Built on #today#

+#############################################################################

+test01=This is a test string 01

+faultProcessingNotSupported=User Fault Procecessing is not supported.  The exception is: {0}

+exceptionDuringExceptionFlow=Exception occurred during exception processing.  The exception is swallowed.

+serviceClientCreateError=An error occurred while creating the ServiceClient.

+cannotSetExcutorToNull=An attempt was made to set the Executor to null.  This is not allowed.

+getPortInvalidSEI=An attempt was made to call getPort with port {0} and SEI {1}.  This is not allowed.

+createDispatchFail0=Dispatch creation failed.  Port QName cannot be null.

+createDispatchFail1=Dispatch creation failed.  Port {0} was not found.  Make sure the port has been added to the Service.

+createDispatchFail2=Dispatch creation failed.  Could not find PortData for Port {0}.

+addPortDup=An attempt was made to add port {0} to the ServiceDelegate. The port already exists.

+addPortErr0=Only SOAP11HTTP_BINDING and SOAP12HTTP_BINDING are supported at this time.  Port {0} is cannot be added to the ServiceDelegate.

+# The key addPortErr1 is not currently used

+# addPortErr1=An attempt was made to add port {0} with invalid endpoint address {1} to the ServiceDelegate. This is not allowed.

+addPortErr2=An attempt was made to add a port with no name to the ServiceDelegate. This is not allowed.

+serviceDelegateConstruct0=An attempt was made to construct the ServiceDelegate with invalid service name, {0}.

+serviceDelegateConstruct1=An attempt was made to construct the ServiceDelegate with service {0}, but the service is not defined in the wsdl {1}.

+serviceDescErr0=Invalid Service class.  The service QName cannot be null.

+serviceDescErr1=Invalid Service class.  The Service class {0} must be assignable to javax.xml.ws.Service.

+serviceDescErr2=Invalid Service.  The service QName {0} was not found in the wsdl.

+wsdlException=Caught WSDL Exception: {0}

+noWebResultForProperty=Could not create WebResult Object for property {0} of java bean {1}

+portInfoErr0=Cannot construct port data.  The service name is invalid: {0}

+portInfoErr1=Cannot construct port data.  The port name is invalid: {0}

+portInfoErr2=Cannot construct port data.  The binding id is invalid: {0}

+# The key portInfoErr3 is not currently used

+# portInfoErr3=Cannot construct port data.  The service endpoint is invalid: {0}

+warnAxisFault=Caught AxisFault.  Processing continues.  AxisFault = {0}

+handlerChainErr0=Internal error.  Logical handler {0} occurs after the protocol handlers.

+handlerChainErr1=Handler {0} should not directly implement javax.xml.ws.handler.Handler.

+handlerChainErr2=Handler {0} must implement javax.xml.ws.handler.LogicalHandler or javax.xml.ws.handler.soap.SOAPHandler.

+ICErr1=Internal Error. Invocation Context is null.

+ICErr2=Internal Error. Message Context is null.

+ICErr3=Internal Error. Request Message Context is null.

+ICErr4=Cannot call asynchronous invoke with a null callback.

+AsyncPollingNotSupported=Aysnchronous polling invocations are not supported yet.

+ICCreateOpClientErr1=Cannot create OperationClient.  ServiceClient is null.

+ICCreateOpClientErr2=Cannot create OperationClient.  Operation qname is null.

+proxyErr1=An attempt was made to invoke method {0}, but this method is not available on the javax.xml.ws.BindingProvider or {1} class.

+JAXWSMessageReceiverNoServiceClass=No service class was found for this AxisService.

+EndpointControllerErr2=No Service class is configured for this endpoint.  Processing cannot continue.

+EndpointControllerErr4=Error loading the provider implementation class {0}.  Processing cannot continue.

+BlockImplErr1=Internal Error.  The block for {0} is already consumed.  Processing cannot continue.

+XMLPartImplErr1=Internal Error.  The XML part is already consumed.  Processing cannot continue.

+XMLPartImplErr2=Internal Error.  The content of the XML part cannot be determined.

+RESTIsNotSupported=The REST protocol is not supported yet.

+ProtocolIsNotKnown=The protocol has not been set.  This may indicate an internal error in the JAX-WS layer.

+SourceNotSupported=The class {0} is not a supported extension of javax.xml.transform.Source.

+SourceMissingSupport=Internal Error.  The code to make a copy of this javax.xml.transform.Source ({0}) is not supported yet.

+MethodNotImplemented=Internal Error. Method {0} is not implemented yet.

+dispatchInvokeErr1=Dispatch.invokeOneWay is called with a null Object argument.

+dispatchInvokeErr2=Dispatch.invokeAsync is called with a null Object argument.

+resetReaderErr=Internal Error. Cannot reset a non-resettable XMLStreamReader.

+SAAJConverterErr1=The SOAPElement parent passed to the method toSAAJ is not attached to a SOAPEnvelope.  Processing cannot continue.

+SAAJConverterErr2=An unexpected XMLStreamReader event {0} occurred while converting an OM to a SOAPElement.

+XMLSRErr1=The method, getProperty(), was called with a null key argument.

+XMLSRErr2=There are no more events.

+XMLSRErr3=The require() method failed.  Expected {0} but found {1}.

+XMLSRErr4=Failure occured in method {0}.

+XMLSRErr5=The following {0} event is not supported in a SOAP Message

+InvalidProvider=Invalid Provider implementation {0}. Only String, Source, and SOAPMessage are supported by JAX-WS

+InvalidProviderCreate=Failure creating provider instance {0}. 

+SOAPFaultIsNotImplemented=Internal Error. SOAPFault processing is not implemented.

+NeverCalled=Internal Assertion Error.  Method {0} should never be called.

+JAXBWrapperErr1=Internal Assertion Error. JAXB object argument to unwrap() is null.

+JAXBWrapperErr2=Internal Assertion Error. Child names argument to unwrap() is null.

+JAXBWrapperErr3=Internal Assertion Error. Child objects or child names argument to wrap() is null.

+JAXBWrapperErr4=Internal Assertion Error. Number of child objects does not match the number of child names in wrap() method.

+JAXBWrapperErr5=Internal Assertion Error. Number of child names does not match the number of bean properties in JAXB class {0}.

+JAXBWrapperErr6=Internal Assertion Error. JAXB object {0} does not have a bean property named {1}.

+JAXBSourceNamespaceErr=The DOMSource must be Namespace Aware.

+AttachmentsNotSupported=SAAJ Attachments are not supported yet.

+protoNotFound00=An associated Protocol was not found for the binding {0}.

+JavaDispErr1=No service implementation class was found.

+JavaDispErr2=Unable to load service implementation class {0}.

+InvalidWebParams=Invalid webParams found, Number of webparams defined does not match the input method parameters.

+AsyncListenerErr1=AxisCallback Object cannot be null, Internal error.

+DocLitProxyHandlerErr1=As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter.

+DocLitProxyHandlerErr2 = Method Input parameter for NON Wrapped Request cannot be null.

+SOAP12WithSAAJ12Err=A SOAP 1.2 Message cannot be rendered in an SAAJ 1.2 Object Model.
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/impl/AsyncListener.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/impl/AsyncListener.java
new file mode 100644
index 0000000..88e8424
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/impl/AsyncListener.java
@@ -0,0 +1,115 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.impl;

+

+import java.util.concurrent.Callable;

+import java.util.concurrent.ExecutionException;

+

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.jaxws.AxisCallback;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.InvocationContext;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+

+

+

+/**

+ * The AsyncListener is responsible for holding the callback that was passed

+ * to the Axis2 client and waiting for that async response to come back.  Once 

+ * the response comes back, the AsyncListener will perform whatever function is

+ * needed by the JAX-WS layer before returning.

+ * 

+ * This class implements the Callable interface and is what will be called by

+ * the execute() method of the client's Executor.

+ */

+public class AsyncListener implements Callable {

+

+    protected AxisCallback axisCallback;

+    protected Mode mode;

+    protected InvocationContext invocationCtx;

+    

+    public AsyncListener() {

+        //do nothing

+    }

+    

+    public AsyncListener(AxisCallback cb) {

+        axisCallback = cb;

+    }

+    

+    public void setAxisCallback(AxisCallback cb) {

+        axisCallback = cb;

+    }

+    

+    public void setInvocationContext(InvocationContext ic) {

+        invocationCtx = ic;

+    }

+    

+    //TODO: This will probably be removed or at least made a little more 

+    //clear since it's only the Dispatch that's concerned with the mode.

+    public void setMode(Mode m) {

+        mode = m;

+    }

+    

+    /**

+     * This method will be called to collect the async response from Axis2.  

+     */

+    public Object call() throws Exception {

+    	

+    	if(axisCallback == null){

+    		throw ExceptionFactory.makeWebServiceException(Messages.getMessage("AsyncListenerErr1"));

+    	}

+    	

+        if (axisCallback != null) {

+            while (!axisCallback.isComplete()) {

+                //TODO: The wait period should probably be configurable

+            	if(axisCallback.getException() != null){

+            		throw axisCallback.getException();

+            	}

+                Thread.sleep(1000);

+            }

+            

+            MessageContext responseMsgCtx = axisCallback.getResponseMessageContext();

+            

+            Object responseObj = getResponseValueObject(responseMsgCtx);

+            return responseObj;            

+        }

+    	return null;

+        

+    }

+    

+    /**

+     * A default implementation of this method that returns the contents

+     * of the message in the form of an XML String.  Subclasses should override

+     * this to convert the response message into whatever format they require.

+     * @param msg

+     */

+    protected Object getResponseValueObject(MessageContext mc) {

+        try {

+            Message msg = mc.getMessage();

+            OMElement om = msg.getAsOMElement();

+            return om.toString();

+        } catch (MessageException e) {

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/impl/AsyncListenerWrapper.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/impl/AsyncListenerWrapper.java
new file mode 100644
index 0000000..c5e5d88
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/impl/AsyncListenerWrapper.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws.impl;
+
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.FutureTask;
+
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+/**
+ * The AsyncListenerWrapper is what wraps the AsyncListener that waits for
+ * the response.  The AsyncListenerWrapper controls the lifecycle of the 
+ * listener, determining when it is started and stopped.
+ * 
+ * The wrapper is also the item that will call the users AsyncHandler that
+ * they provided when they made the asynchronous call.
+ */
+public class AsyncListenerWrapper<T> extends FutureTask<T> implements Response<T> {
+
+    private Map<String, Object> responseCtx;
+    private AsyncHandler asyncHandler;
+    
+    public AsyncListenerWrapper(Callable<T> processor) {
+        super(processor);
+    }
+    
+    public void setAsyncHandler(AsyncHandler ah) {
+        asyncHandler = ah;
+    }
+    
+    public Map<String, Object> getContext() {
+        return responseCtx;
+    }
+    
+    protected void done() {
+        super.done();
+        
+        if(!isCancelled()){
+            if(asyncHandler != null){
+                asyncHandler.handleResponse(this);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Attachment.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Attachment.java
new file mode 100644
index 0000000..6d292b4
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Attachment.java
@@ -0,0 +1,48 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import javax.activation.DataHandler;

+

+/**

+ * Attachment

+ * 

+ * Used for attaching documents to a Message.  Each Attachment must have a 

+ * uniquie identifier or "contentID".  The actual content of the attachment

+ * is stored in a <link>javax.activation.DataHandler</link>.

+ */

+public interface Attachment {

+    

+    /**

+     * Gets the MIME type for the content of the attachment.

+     * @return contentType

+     */

+    public String getContentType();

+    

+    /**

+     * Gets the contendID that identifies this attachment.

+     * @return contentID

+     */

+    public String getContentID();

+    

+    /**

+     * Gets the actual content of the attachment in a DataHandler form.

+     * @return content

+     */

+    public DataHandler getDataHandler();

+    

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Block.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Block.java
new file mode 100644
index 0000000..7b2ec5a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Block.java
@@ -0,0 +1,142 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+

+/**

+ * Block

+ * A Block represents an xml element and associated sub-tree. 

+ * The name of the element must be defined by a root element in a schema.

+ * All prefixes within the subtree must correspond to namespace declarations defined

+ * within the tree.

+ * Many specifications refer to this as a "embedded document" or "xml block".  I chose

+ * the term, block, for simplicity.

+ *

+ * The block can be exposed as:

+ * 	* BusinessObject

+ * 	* StAX object

+ * 

+ * Note that the whole Message can also be thought of as a Block.  Thus a Message

+ * can be createFrom a Block and written as a Block.

+ * 

+ * In addition, each of the accessors has a consume parameter.  If

+ * consume is true, the Block is no longer valid after the message is called.

+ * (i.e. the implementation does not need to cache the information)

+ *

+ */

+public interface Block {

+

+	/**

+	 * Get a reference to the Business Object represented by this Block

+	 * @param consume true if this is the last request on the block.

+	 * @return Object (JAXB, String etc.)

+	 * @throws XMLStreamException

+	 * @throws MessageException

+	 */

+	public Object getBusinessObject(boolean consume) throws XMLStreamException, MessageException;

+	

+	/**

+	 * GetBusinesContext

+	 * Some business objects have an associated context object (i.e. JAXBContext)

+	 * @return Context Object or null

+	 */

+	public Object getBusinessContext();

+	

+	/**

+	 * Get the XMLStreamReader represented by this Block

+	 * @param consume true if this is the last request on the block.

+	 * @return XMLStreamReader

+	 * @throws XMLStreamException

+	 */

+	public XMLStreamReader getXMLStreamReader(boolean consume) throws XMLStreamException, MessageException;

+	

+	/**

+	 * Get the OMElement represented by this Block.

+	 * This call always consumes the block because you are taking control of the underlying OM

+	 * @return

+	 * @throws XMLStreamException

+	 * @throws MessageException

+	 */

+	public OMElement getOMElement() throws XMLStreamException, MessageException;

+	

+    /**

+     * Write out the Block

+     * @param writer XMLStreamWriter

+     * @param consume true if this is the last request on the block.

+     * @throws XMLStreamException

+     * @trhows MessageException

+     */

+    public void outputTo(XMLStreamWriter writer, boolean consume) throws XMLStreamException, MessageException;	

+        

+    /**

+     * isConsumed

+     * Return true if the block is consumed.  Once consumed, the information in the 

+     * block is no longer available.

+     * @return true if the block is consumed (a method was called with consume=true)

+     */

+    public boolean isConsumed();

+    

+    /**

+     * Get a traceString...the trace string dumps the contents of the Block without forcing an underlying

+     * ill-performant transformation of the message.

+     * @boolean indent String containing indent characters

+     * @return String containing trace information

+     */

+    public String traceString(String indent);

+    

+    /**

+	 * @return If QName is available without doing an expensive parse of the business object, then return true

+	 * Otherwise return false

+	 * Note: This method should be used in situations where it would be nice to know the qname (like logging or a special check)

+	 * but we don't want to cause an ill-performant parse.

+	 */

+	public boolean isQNameAvailable();

+	

+    /**

+	 * Get the QName (namespace, localpart) of the Block.  Do not depend on prefix being set correctly.

+	 * Asking for the QName can cause a performant hit.

+	 * @see isQNameAvailable

+	 * @return QName of the block

+	 * @throw MessageException

+	 */

+	public QName getQName() throws MessageException;

+    

+	/**

+	 * Get BlockFactory 

+	 * @return BlockFactory that created the Block

+	 */

+	public BlockFactory getBlockFactory();

+    

+    /**

+     * Get the XMLPart that contains this Block, if it is attached to one at all.

+     * @return XMLPart that the Block is attached to

+     */

+    public XMLPart getParent();

+    

+    /**

+     * Set the XMLPart that will contain this Block.

+     */

+    public void setParent(XMLPart p);

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java
new file mode 100644
index 0000000..f805b09
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java
@@ -0,0 +1,73 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import java.util.List;

+

+import javax.xml.soap.SOAPMessage;

+

+/**

+ * Message

+ * 

+ * A Message represents the XML + Attachments

+ * 

+ * Most of the methods available on a message are only applicable to 

+ * the XML part of the Message.  See the XMLPart interface for an explantation of these methods.

+ * 

+ * @see org.apache.axis2.jaxws.message.XMLPart

+ * @see org.apache.axis2.jaxws.message.Attachment

+ * 

+ */

+public interface Message extends XMLPart {

+	

+	/**

+	 * Get the protocol for this Message (soap11, soap12, etc.)

+	 * @return Protocl

+	 */

+	public Protocol getProtocol();

+	

+	/**

+	 * getAsSOAPMessage

+	 * Get the xml part as a read/write SOAPEnvelope

+	 * @return SOAPEnvelope

+	 */

+	public SOAPMessage getAsSOAPMessage() throws MessageException;

+	

+    /**

+     * Adds an attachment part to the message

+     * @param Attachment - the content to add

+     */

+	public void addAttachment(Attachment a);

+    

+    /**

+	 * Get the list of attachments for the message

+	 * @return List<Attachments>

+	 */

+	public List<Attachment> getAttachments();

+    

+    /**

+     * Get the attachment identified by the contentID 

+     * @param cid

+     * @return

+     */

+    public Attachment getAttachment(String cid);

+    

+    public boolean isMTOMEnabled();

+    

+    public void setMTOMEnabled(boolean b);

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/MessageException.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/MessageException.java
new file mode 100644
index 0000000..1865105
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/MessageException.java
@@ -0,0 +1,51 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+/**

+ * MessageException

+ * The apis defined in the JAX-WS Message sub-component will 

+ * throw this checked Exception when assertions fail or other probable

+ * failures occur.  Consumers of the Message sub-component should

+ * provide sufficient try/catch logic to handle these situtations.

+ * (@see org.apache.axis2.jaxws.message.MessageInternalException)

+ */

+public class MessageException extends Exception {

+	 

+	/**

+	 * @param message

+	 */

+	public MessageException(String message) {

+		super(message);

+	}

+

+	/**

+	 * @param message

+	 * @param cause

+	 */

+	public MessageException(String message, Throwable cause) {

+		super(message, cause);

+	}

+

+	/**

+	 * @param cause

+	 */

+	public MessageException(Throwable cause) {

+		super(cause);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/MessageInternalException.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/MessageInternalException.java
new file mode 100644
index 0000000..52a6658
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/MessageInternalException.java
@@ -0,0 +1,53 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+/**

+ * MessageInternalException

+ * The apis defined in the JAX-WS Message sub-component may 

+ * throw this unchecked Exception.  This exception is only thrown

+ * in situations that should never occur. 

+ * Consumers of the Message sub-component should

+ * provide sufficient try/catch logic to handle these situtations

+ * as they would other unchecked exceptions.

+ * (@see org.apache.axis2.jaxws.message.MessageException)

+ */

+public class MessageInternalException extends RuntimeException {

+

+	/**

+	 * @param message

+	 */

+	public MessageInternalException(String message) {

+		super(message);

+	}

+

+	/**

+	 * @param message

+	 * @param cause

+	 */

+	public MessageInternalException(String message, Throwable cause) {

+		super(message, cause);

+	}

+

+	/**

+	 * @param cause

+	 */

+	public MessageInternalException(Throwable cause) {

+		super(cause);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java
new file mode 100644
index 0000000..62fbe85
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java
@@ -0,0 +1,26 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+/**

+ * Protocol

+ * Each message has a protocol (soap11, soap12, rest)

+ * This enum represents the protocol within the Message sub-component

+ */

+public enum Protocol {

+	soap11, soap12, rest, unknown

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLPart.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLPart.java
new file mode 100644
index 0000000..5c2f866
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLPart.java
@@ -0,0 +1,225 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+

+/**

+ * XMLPart

+ * 

+ * The XML portion of a Message

+ * 

+ * The JAX-WS implementation (proxy, message receiver, etc.) interact with the 

+ * Message via Blocks.  A Block is represented in the message as root element tree 

+ * in either the header, body or fault detail section.  The Blocks can be easily

+ * decomposed into business objects (which are needed on the JAX-WS interfaces).

+ * 

+ * In addition, the JAX-WS handler model requires that the XMLPart be exposed as

+ * an SAAJ SOAPEnvelope.  

+ * 

+ * The XMLPart abstraction hides the details of the message transformations from

+ * the JAX-WS implementation.

+ * 

+ * @see org.apache.axis2.jaxws.message.Message

+ * @see org.apache.axis2.jaxws.message.Block

+ * @see org.apache.axis2.jaxws.message.impl.XMLPartBase for implementation details

+ * 

+ */

+public interface XMLPart {

+	

+	/**

+	 * Get the protocol for this Message (soap11, soap12, etc.)

+	 * @return Protocl

+	 */

+	public Protocol getProtocol();

+	

+	/**

+	 * Write out the Message

+	 * @param writer XMLStreamWriter

+	 * @param consume true if this is the last request on the block.

+	 * @throws MessageException

+	 */

+	public void outputTo(XMLStreamWriter writer, boolean consume) throws XMLStreamException, MessageException;	

+	

+	/**

+	 * Get the XMLStreamReader represented by this Message for the xml part

+	 * @param consume true if this is the last request on the Message

+	 * @return XMLStreamReader

+	 * @throws MessageException

+	 * @throws XMLStreamException

+	 */

+	public XMLStreamReader getXMLStreamReader(boolean consume) throws MessageException;

+	

+	/**

+	 * isConsumed

+	 * Return true if the part is consumed.  Once consumed, the information in the 

+	 * part is no longer available.

+	 * @return true if the block is consumed (a method was called with consume=true)

+	 */

+	public boolean isConsumed();

+    

+    /**

+     * getParent

+     * Get the Message object that this XMLPart is attached to, if it is 

+     * attached to one at all.

+     * @return

+     */

+    public Message getParent();

+    

+    /**

+     * setParent

+     * Set the Message object that will hold this XMLPart

+     * @param m

+     */

+    public void setParent(Message m);

+    

+	/**

+	 * getAsEnvelope

+	 * Get the xml part as a read/write SOAPEnvelope

+	 * @return SOAPEnvelope

+	 * @throws MessageException

+	 */

+	public SOAPEnvelope getAsSOAPEnvelope() throws MessageException;

+	

+	/**

+	 * getAsOMElement

+	 * Get the xml part as a read/write OM

+	 * @return OMElement (probably OM SOAPEnvelope)

+	 * @throws MessageException

+	 */

+	public OMElement getAsOMElement() throws MessageException;

+	

+	/**

+	 * getAsBlock

+	 * Get the entire xml part as a Block

+	 * The BlockFactory and object context are passed in to help create the 

+	 * proper kind of block.

+	 * 

+	 * @return Block

+	 * @throws MessageException

+	 */

+	public Block getAsBlock(

+			Object context, 

+			BlockFactory blockFactory)  

+		throws MessageException, XMLStreamException;

+	

+	/**

+	 * getNumBodyBlocks

+	 * @return number of body blocks

+	 * @throws MessageException

+	 */

+	public int getNumBodyBlocks() throws MessageException;

+	

+	/**

+	 * getBodyBlock

+	 * Get the body block as the specificed index.

+	 * The BlockFactory and object context are passed in to help create the 

+	 * proper kind of block.

+	 * 

+	 * @param index

+	 * @param context

+	 * @param blockFactory

+	 * @return Block

+	 * @throws MessageException

+	 */

+	public Block getBodyBlock(int index, Object context, BlockFactory blockFactory)  

+		throws MessageException;

+	

+	/**

+	 * setBodyBlock

+	 * Set the block at the specified index

+	 * Once set, the Message owns the block.  You must

+	 * use the getBodyBlock method to access it.

+	 * @param index

+	 * @param block

+	 * @throws MessageException

+	 */

+	public void setBodyBlock(int index, Block block) throws MessageException;

+	

+	/**

+	 * removePayload

+	 * Removes the indicated BodyBlock

+	 * @param index

+	 * @throws MessageException

+	 */

+	public void removeBodyBlock(int index) throws MessageException;

+	

+	

+	/**

+	 * getNumHeaderBlocks

+	 * @return number of header blocks

+	 * @throws MessageException

+	 */

+	public int getNumHeaderBlocks() throws MessageException;

+	

+	/**

+	 * getHeaderBlock

+	 * Get the header block with the specified name

+	 * The BlockFactory and object context are passed in to help create the 

+	 * proper kind of block.

+	 * 

+	 * @param namespace

+	 * @param localPart

+	 * @param context

+	 * @param blockFactory

+	 * @return Block

+	 * @throws MessageException

+	 */

+	public Block getHeaderBlock(String namespace, String localPart, 

+			Object context, 

+			BlockFactory blockFactory)  

+		throws MessageException;

+	

+	/**

+	 * appendHeaderBlock

+	 * Append the block to the list of header blocks.

+	 * The Message owns the block.  You must

+	 * use the getHeaderBlock method to access it.

+	 * @param namespace

+	 * @param localPart

+	 * @param block

+	 * @throws MessageException

+	 */

+	public void setHeaderBlock(String namespace, String localPart, Block block) 

+		throws MessageException;

+	

+	/**

+	 * removePayload

+	 * Removes the indicated block

+	 * @param namespace

+	 * @param localPart

+	 * @throws MessageException

+	 */

+	public void removeHeaderBlock(String namespace, String localPart) 

+		throws MessageException;

+	

+	

+	/**

+	 * Get a traceString...the trace string dumps the contents of the Block without forcing an underlying

+	 * ill-performant transformation of the message.

+	 * @boolean indent String containing indent characters

+	 * @return String containing trace information

+	 */

+	public String traceString(String indent);

+    

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/AttachmentUtils.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/AttachmentUtils.java
new file mode 100644
index 0000000..8ee9eaa
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/AttachmentUtils.java
@@ -0,0 +1,147 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.attachments;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.om.OMText;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.jaxws.message.Attachment;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * A suite of utilities used for handling MTOM attachment data. 

+ */

+public class AttachmentUtils {

+    

+    private static final Log log = LogFactory.getLog(AttachmentUtils.class);

+    private static final QName XOP_INCLUDE = 

+        new QName("http://www.w3.org/2004/08/xop/include", "Include");

+    

+    /**

+     * Can be used to find all instances of the <pre><xop:include></pre> element 

+     * within a given OM SOAPEnvelope.

+     * @param env

+     * @return

+     */

+    public static ArrayList<OMElement> findXopElements(SOAPEnvelope env) {

+        ArrayList<OMElement> xops = new ArrayList<OMElement>();

+        findXopElements(env, xops);

+        return xops;

+    }

+    

+    /*

+     * A recursive search for all of the <xop:include> elements in the tree.

+     */

+    private static void findXopElements(OMElement root, ArrayList<OMElement> xops) {

+        Iterator itr = root.getChildElements();

+        if (log.isDebugEnabled())

+            log.debug("[subtree] " + root.getLocalName());

+        

+        // If it has no children, then it's a leaf and we need

+        // to check if it's an <xop:include> element.  If not, then

+        // we need to grab each of the children and continue traversing

+        // down the tree.

+        if (itr == null || !itr.hasNext()) {

+            if (log.isDebugEnabled())

+                log.debug("[leaf] " + root.getLocalName());

+            

+            if (root.getQName().equals(XOP_INCLUDE)) {

+                xops.add(root);

+            }

+        }

+        else if (itr != null && itr.hasNext()) {

+            while (itr.hasNext()) {

+                OMElement next = (OMElement) itr.next();

+                findXopElements(next, xops);

+            }

+        }

+    }

+    

+    /**

+     * Can be used to find all of the nodes in a tree that contain binary

+     * content that is targetted for optimization via MTOM.

+     * @param env

+     * @return

+     */

+    public static ArrayList<OMText> findBinaryNodes(SOAPEnvelope env) {

+        ArrayList<OMText> nodes = new ArrayList<OMText>();

+        findBinaryElements(env, nodes);

+        return nodes;

+    }

+    

+    /*

+     * A recursive search for all of the binary, optimized nodes in a tree.

+     */

+    private static void findBinaryElements(OMNode node, ArrayList<OMText> attachments) {

+        // If it's an OMText, then it's essentially a leaf and won't

+        // have any children.  If not, then check to see if it's an OMElement

+        // and continue traversing down.

+        if (node instanceof OMText) {

+            if (log.isDebugEnabled())

+                log.debug("text node found");

+            

+            OMText textNode = (OMText) node;

+            if (textNode.isOptimized()) {

+                if (log.isDebugEnabled())

+                    log.debug("optimized text node found");

+                

+                attachments.add(textNode);

+            }

+        }

+        else if (node instanceof OMElement){

+            OMElement element = (OMElement) node;

+            Iterator itr = element.getChildren();

+            while (itr.hasNext()) {

+                OMNode next = (OMNode) itr.next();

+                findBinaryElements(next, attachments);

+            }

+        }

+    }

+    

+    /**

+     * Given an <pre><xop:include></pre> element, create an OMText element

+     * with the appropriate attachment data.

+     * @param xop

+     * @param data

+     * @return

+     */

+    public static OMText makeBinaryOMNode(OMElement xop, Attachment data) {

+        OMFactory factory = xop.getOMFactory();

+        OMText binaryNode = factory.createOMText(data.getDataHandler(), true);

+        return binaryNode;

+    }

+    

+    /**

+     * Given an OMText node, create it's corresponding <pre><xop:include></pre>

+     * element.

+     */

+    public static OMElement makeXopElement(OMText data) {

+        OMFactory factory = data.getOMFactory();

+        OMElement xop = factory.createOMElement(XOP_INCLUDE, null);

+        xop.addAttribute("href", data.getContentID(), null);

+        return xop;

+    }

+   

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java
new file mode 100644
index 0000000..febceac
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java
@@ -0,0 +1,79 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.attachments;

+

+import javax.activation.DataHandler;

+import javax.xml.bind.attachment.AttachmentMarshaller;

+

+import org.apache.axis2.jaxws.message.Attachment;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.impl.AttachmentImpl;

+import org.apache.axis2.util.UUIDGenerator;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * An implementation of the JAXB AttachmentMarshaller that is used to 

+ * handle binary data from JAXB and create populate the appropriate

+ * constructs within the JAX-WS Message Model.

+ */

+public class JAXBAttachmentMarshaller extends AttachmentMarshaller {

+

+    private static final Log log = LogFactory.getLog(JAXBAttachmentMarshaller.class);

+    

+    private Message message;

+    

+    public JAXBAttachmentMarshaller() {

+        super();

+    }

+

+    public void setMessage(Message msg) {

+        message = msg;

+    }

+    

+    @Override

+    public boolean isXOPPackage() {

+        //This should really be set based on whether or not we

+        //the SOAP 1.1 or SOAP 1.2 MTOM binding is set.

+        return true;

+    }

+

+    @Override

+    public String addMtomAttachment(byte[] data, int offset, int length, 

+            String mimeType, String namespace, String localPart) {

+        if (log.isDebugEnabled()) 

+            log.debug("Adding MTOM/XOP attachment for element: " + localPart + "{" + namespace + "}");

+        return UUIDGenerator.getUUID();

+    }

+

+    @Override

+    public String addMtomAttachment(DataHandler data, String namespace, String localPart) {

+        if (log.isDebugEnabled()) 

+            log.debug("Adding MTOM/XOP attachment for element: " + localPart + "{" + namespace + "}");

+        

+        String cid = UUIDGenerator.getUUID();

+        Attachment a = new AttachmentImpl(data, cid);

+        message.addAttachment(a);

+        return cid;

+    }

+

+    @Override

+    public String addSwaRefAttachment(DataHandler arg0) {

+        throw new UnsupportedOperationException("SwaRef attachments are not supported.");

+    }

+    

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentUnmarshaller.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentUnmarshaller.java
new file mode 100644
index 0000000..e88a0da
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentUnmarshaller.java
@@ -0,0 +1,82 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.attachments;

+

+import java.util.Iterator;

+import java.util.List;

+

+import javax.activation.DataHandler;

+import javax.xml.bind.attachment.AttachmentUnmarshaller;

+

+import org.apache.axis2.jaxws.message.Attachment;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * JAXBAttachmentUnmarshaller

+ * 

+ * An implementation of the <link>javax.xml.bind.attachment.AttachmentUnmarshaller</link>

+ * that is used for deserializing XOP elements into their corresponding

+ * binary data packages.

+ */

+public class JAXBAttachmentUnmarshaller extends AttachmentUnmarshaller {

+

+    private static final Log log = LogFactory.getLog(JAXBAttachmentUnmarshaller.class);

+    

+    private Message message;

+    

+    @Override

+    public boolean isXOPPackage() {

+        //FIXME: This should really be set based on whether or not we

+        //the SOAP 1.1 or SOAP 1.2 MTOM binding is set.

+        return true;

+    }

+    

+    @Override

+    public byte[] getAttachmentAsByteArray(String cid) {

+        if (log.isDebugEnabled())

+            log.debug("Attempting to retreive attachment [" + cid + "] as a byte[]");

+        return null;

+    }

+

+    @Override

+    public DataHandler getAttachmentAsDataHandler(String cid) {

+        if (log.isDebugEnabled())

+            log.debug("Attempting to retreive attachment [" + cid + "] as a DataHandler");

+        

+        List<Attachment> attachments = message.getAttachments();

+        Iterator<Attachment> itr = attachments.iterator();

+        while (itr.hasNext()) {

+            Attachment a = itr.next();

+            if (a.getContentID().equals(cid)) {

+                return a.getDataHandler();

+            }

+        }

+        

+        return null;

+    }

+    

+    /**

+     * Set the message that holds the attachment data.

+     * @param msg

+     */

+    public void setMessage(Message msg) {

+        message = msg;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBBlock.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBBlock.java
new file mode 100644
index 0000000..2bbd4b3
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBBlock.java
@@ -0,0 +1,27 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding;

+

+import org.apache.axis2.jaxws.message.Block;

+

+/**

+ * JAXBBlock

+ * Block represented by a JAXB object

+ */

+public interface JAXBBlock extends Block {

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/OMBlock.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/OMBlock.java
new file mode 100644
index 0000000..eb9b3b8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/OMBlock.java
@@ -0,0 +1,27 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding;

+

+import org.apache.axis2.jaxws.message.Block;

+

+/**

+ * OMBlock

+ * Block represented by an OMElement object

+ */

+public interface OMBlock extends Block {

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/SOAPEnvelopeBlock.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/SOAPEnvelopeBlock.java
new file mode 100644
index 0000000..e84580e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/SOAPEnvelopeBlock.java
@@ -0,0 +1,28 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding;

+

+import org.apache.axis2.jaxws.message.Block;

+

+/**

+ * SOAPEnvelopeBlock

+ * Block represented by an SAAJ SOAPEnvelope. This kind of block is useful

+ * for building the initial Message

+ */

+public interface SOAPEnvelopeBlock extends Block {

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/SourceBlock.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/SourceBlock.java
new file mode 100644
index 0000000..bf74542
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/SourceBlock.java
@@ -0,0 +1,27 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding;

+

+import org.apache.axis2.jaxws.message.Block;

+

+/**

+ * SourceBlock

+ * Block with a business object that is a javax.xml.transform.Source

+ */

+public interface SourceBlock extends Block {

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/XMLStringBlock.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/XMLStringBlock.java
new file mode 100644
index 0000000..78b812f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/XMLStringBlock.java
@@ -0,0 +1,27 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding;

+

+import org.apache.axis2.jaxws.message.Block;

+

+/**

+ * XMLStringBlock

+ * Block with a business object that is a String containing xml text

+ */

+public interface XMLStringBlock extends Block {

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockFactoryImpl.java
new file mode 100644
index 0000000..5a70ee8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockFactoryImpl.java
@@ -0,0 +1,54 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockFactoryImpl;

+

+/**

+ * JAXBBlockFactoryImpl

+ * Creates a JAXBBlock

+ */

+public class JAXBBlockFactoryImpl extends BlockFactoryImpl implements JAXBBlockFactory {

+

+	/**

+	 * Default Constructor required for Factory 

+	 */

+	public JAXBBlockFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(org.apache.axiom.om.OMElement, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(OMElement omElement, Object context, QName qName) throws XMLStreamException {

+		return new JAXBBlockImpl(omElement, context, qName, this);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(java.lang.Object, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(Object businessObject, Object context, QName qName) {

+		return new JAXBBlockImpl(businessObject, context, qName, this);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java
new file mode 100644
index 0000000..e33a90f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java
@@ -0,0 +1,184 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding.impl;

+

+import java.io.StringReader;

+import java.io.StringWriter;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.JAXBException;

+import javax.xml.bind.JAXBIntrospector;

+import javax.xml.bind.Marshaller;

+import javax.xml.bind.Unmarshaller;

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.XMLPart;

+import org.apache.axis2.jaxws.message.attachments.JAXBAttachmentMarshaller;

+import org.apache.axis2.jaxws.message.attachments.JAXBAttachmentUnmarshaller;

+import org.apache.axis2.jaxws.message.databinding.JAXBBlock;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockImpl;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * JAXBBlockImpl

+ * 

+ * A Block containing a JAXB business object

+ */

+public class JAXBBlockImpl extends BlockImpl implements JAXBBlock {

+

+    private static final Log log = LogFactory.getLog(JAXBBlockImpl.class);

+    

+	protected static XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+	protected static XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();

+	/**

+	 * Called by JAXBBlockFactory

+	 * @param busObject

+	 * @param busContext

+	 * @param qName

+	 * @param factory

+	 */

+	JAXBBlockImpl(Object busObject, Object busContext, QName qName, BlockFactory factory) {

+		super(busObject, 

+				busContext, 

+				(qName==null) ? getQName(busObject, (JAXBContext) busContext): qName , 

+				factory);

+	}

+

+	/**

+	 * Called by JAXBBlockFactory

+	 * @param omelement

+	 * @param busContext

+	 * @param qName

+	 * @param factory

+	 */

+	JAXBBlockImpl(OMElement omElement, Object busContext, QName qName, BlockFactory factory) {

+		super(omElement, busContext, qName, factory);

+	}

+

+	@Override

+	protected Object _getBOFromReader(XMLStreamReader reader, Object busContext) throws XMLStreamException, MessageException {

+		try {

+			// Very easy, use the Context to get the Unmarshaller.

+			// Use the Unmarshaller to get the jaxb object.

+			JAXBContext jc = (JAXBContext) busContext;

+            Unmarshaller u = jc.createUnmarshaller();

+            

+            // If MTOM is enabled, add in the AttachmentUnmarshaller

+            if (isMTOMEnabled()) {

+                if (log.isDebugEnabled()) 

+                    log.debug("Adding JAXBAttachmentUnmarshaller to Unmarshaller");

+                

+                XMLPart xp = getParent();

+                Message msg = xp.getParent();

+                

+                JAXBAttachmentUnmarshaller aum = new JAXBAttachmentUnmarshaller();

+                aum.setMessage(msg);

+                u.setAttachmentUnmarshaller(aum);

+            }

+			

+			Object jaxb = u.unmarshal(reader);

+			setQName(getQName(jaxb, jc));

+			return jaxb;

+		} catch(JAXBException je) {

+			throw ExceptionFactory.makeMessageException(je);

+		}

+	}

+

+	@Override

+	protected XMLStreamReader _getReaderFromBO(Object busObj, Object busContext) throws XMLStreamException, MessageException {

+		// TODO Review and determine if there is a better solution

+		

+		// This is hard because JAXB does not expose a reader from the business object.

+		// The solution is to write out the object and use a reader to read it back in.

+		// First create an XMLStreamWriter backed by a writer

+		StringWriter sw = new StringWriter();

+		XMLStreamWriter writer = outputFactory.createXMLStreamWriter(sw);

+		

+		// Write the business object to the writer

+		_outputFromBO(busObj, busContext, writer);

+		

+		// Flush the writer and get the String

+		writer.flush();

+		sw.flush();

+		String str = sw.toString();

+		

+		// Return a reader backed by the string

+		StringReader sr = new StringReader(str);

+		return inputFactory.createXMLStreamReader(sr);

+	}

+

+	@Override

+	protected void _outputFromBO(Object busObject, Object busContext, XMLStreamWriter writer) throws XMLStreamException, MessageException {

+		try {

+			// Very easy, use the Context to get the Marshaller.

+			// Use the marshaller to write the object.  

+			JAXBContext jc = (JAXBContext) busContext;

+			Marshaller m = jc.createMarshaller();

+            

+			// If MTOM is enabled, add in the AttachmentMarshaller.

+            if (isMTOMEnabled()) {

+                if (log.isDebugEnabled())

+                    log.debug("Adding JAXBAttachmentMarshaller to Marshaller");

+                

+                XMLPart xp = getParent();

+                Message msg = xp.getParent();

+                

+                JAXBAttachmentMarshaller am = new JAXBAttachmentMarshaller();

+                am.setMessage(msg);

+                m.setAttachmentMarshaller(am);

+            }

+                        

+            m.marshal(busObject, writer);

+		} catch(JAXBException je) {

+			// TODO NLS

+			throw ExceptionFactory.makeMessageException(je);

+		}

+	}

+

+	/**

+	 * Get the QName from the jaxb object

+	 * @param jaxb

+	 * @param jbc

+	 * @throws MessageException

+	 */

+	private static QName getQName(Object jaxb, JAXBContext jbc){

+		JAXBIntrospector jbi = jbc.createJAXBIntrospector();

+		return jbi.getElementName(jaxb);

+	}

+    

+    private boolean isMTOMEnabled() {

+        XMLPart xp = getParent();

+        if (xp != null) {

+            Message msg = xp.getParent();

+            if (msg != null && msg.isMTOMEnabled())

+                return true;

+        }

+        

+        return false;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/OMBlockFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/OMBlockFactoryImpl.java
new file mode 100644
index 0000000..26b0670
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/OMBlockFactoryImpl.java
@@ -0,0 +1,55 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.factory.OMBlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockFactoryImpl;

+

+/**

+ * OMBlockFactoryImpl

+ * 

+ * Creates an OMBlock

+ */

+public class OMBlockFactoryImpl extends BlockFactoryImpl implements OMBlockFactory {

+

+	/**

+	 * Default Constructor required for Factory 

+	 */

+	public OMBlockFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(org.apache.axiom.om.OMElement, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(OMElement omElement, Object context, QName qName) throws XMLStreamException {

+		return new OMBlockImpl(omElement, this);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(java.lang.Object, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(Object businessObject, Object context, QName qName) {

+		return new OMBlockImpl((OMElement) businessObject, this);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/OMBlockImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/OMBlockImpl.java
new file mode 100644
index 0000000..f62d8a1
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/OMBlockImpl.java
@@ -0,0 +1,65 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding.impl;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.databinding.OMBlock;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockImpl;

+

+/**

+ * OMBlockImpl

+ * Block with a business object that is an OMElement

+ */

+public class OMBlockImpl extends BlockImpl implements OMBlock {

+

+	

+	/**

+	 * Called by OMBlockFactory

+	 * @param busObject

+	 * @param factory

+	 */

+	OMBlockImpl(OMElement busObject, BlockFactory factory) {

+		super(busObject, 

+				null, 

+				busObject.getQName(),

+				factory);

+	}

+	

+	@Override

+	protected Object _getBOFromReader(XMLStreamReader reader, Object busContext) throws XMLStreamException, MessageException {

+		// Take a shortcut and return the OMElement 

+		return this.getOMElement();

+	}

+

+	@Override

+	protected XMLStreamReader _getReaderFromBO(Object busObj, Object busContext) throws XMLStreamException, MessageException {

+		OMElement om = (OMElement) busObj;

+		return om.getXMLStreamReader();

+	}

+

+	@Override

+	protected void _outputFromBO(Object busObject, Object busContext, XMLStreamWriter writer) throws XMLStreamException, MessageException {

+		OMElement om = (OMElement) busObject;

+		om.serialize(writer);

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SOAPEnvelopeBlockFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SOAPEnvelopeBlockFactoryImpl.java
new file mode 100644
index 0000000..8837fe1
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SOAPEnvelopeBlockFactoryImpl.java
@@ -0,0 +1,46 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.message.databinding.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.stream.XMLStreamException;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.factory.SOAPEnvelopeBlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockFactoryImpl;

+

+

+/**

+ * Creates a SOAPEnvelopeBlock

+ */

+public class SOAPEnvelopeBlockFactoryImpl extends BlockFactoryImpl implements

+		SOAPEnvelopeBlockFactory {

+

+	/**

+	 * Default Constructor required for Factory 

+	 */

+	public SOAPEnvelopeBlockFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.factory.BlockFactory#createFrom(org.apache.axiom.om.OMElement, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(OMElement omElement, Object context, QName qName)

+			throws XMLStreamException {		

+		return new SOAPEnvelopeBlockImpl(omElement, null, qName, this);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.factory.BlockFactory#createFrom(java.lang.Object, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(Object businessObject, Object context, QName qName)

+			throws MessageException {

+		return new SOAPEnvelopeBlockImpl((SOAPEnvelope) businessObject, null, qName, this);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SOAPEnvelopeBlockImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SOAPEnvelopeBlockImpl.java
new file mode 100644
index 0000000..2dc8503
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SOAPEnvelopeBlockImpl.java
@@ -0,0 +1,100 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.message.databinding.impl;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPElement;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.databinding.SOAPEnvelopeBlock;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.message.impl.BlockImpl;

+import org.apache.axis2.jaxws.message.util.SOAPElementReader;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+/**

+ * 

+ *

+ */

+public class SOAPEnvelopeBlockImpl extends BlockImpl implements SOAPEnvelopeBlock {

+

+	/**

+	 * Called by SOAPEnvelopeBlockFactory

+	 * @param busObject

+	 * @param busContext

+	 * @param qName

+	 * @param factory

+	 */

+	public SOAPEnvelopeBlockImpl(Object busObject, Object busContext,

+			QName qName, BlockFactory factory) {

+		super(busObject, 

+				busContext, 

+				(qName==null) ? getQName((SOAPEnvelope)busObject): qName , 

+				factory);

+	}

+

+	/**

+	 * Called by SOAPEnvelopeBlockFactory

+	 * @param omElement

+	 * @param busContext

+	 * @param qName

+	 * @param factory

+	 */

+	public SOAPEnvelopeBlockImpl(OMElement omElement, Object busContext,

+			QName qName, BlockFactory factory) {

+		super(omElement, busContext, qName, factory);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.impl.BlockImpl#_getBOFromReader(javax.xml.stream.XMLStreamReader, java.lang.Object)

+	 */

+	@Override

+	protected Object _getBOFromReader(XMLStreamReader reader, Object busContext)

+			throws XMLStreamException, MessageException {

+		

+		// TODO Temporary solution.  The better way is to get an OM

+		// and convert with the SAAJConverter

+		MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);

+		Message message = mf.createFrom(reader);

+		SOAPEnvelope env = message.getAsSOAPEnvelope();

+		this.setQName(getQName(env));

+		return env;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.impl.BlockImpl#_getReaderFromBO(java.lang.Object, java.lang.Object)

+	 */

+	@Override

+	protected XMLStreamReader _getReaderFromBO(Object busObj, Object busContext)

+			throws XMLStreamException, MessageException {

+		return new SOAPElementReader((SOAPElement)busObj);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.impl.BlockImpl#_outputFromBO(java.lang.Object, java.lang.Object, javax.xml.stream.XMLStreamWriter)

+	 */

+	@Override

+	protected void _outputFromBO(Object busObject, Object busContext,

+			XMLStreamWriter writer) throws XMLStreamException, MessageException {

+		XMLStreamReader reader = _getReaderFromBO(busObject, busContext);

+		_outputFromReader(reader, writer);	

+	}

+

+	/**

+	 * Get the QName of the envelope

+	 * @param env

+	 * @return QName

+	 */

+	private static QName getQName(SOAPEnvelope env) {

+		return new QName(env.getNamespaceURI(), env.getLocalName(),env.getPrefix());

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockFactoryImpl.java
new file mode 100644
index 0000000..883970b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockFactoryImpl.java
@@ -0,0 +1,59 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.transform.Source;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.factory.SourceBlockFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockFactoryImpl;

+

+/**

+ * SourceBlockFactoryImpl

+ * 

+ * Creates a SourceBlock

+ */

+public class SourceBlockFactoryImpl extends BlockFactoryImpl implements SourceBlockFactory {

+

+	/**

+	 * Default Constructor required for Factory 

+	 */

+	public SourceBlockFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(java.lang.Object, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(Object businessObject, Object context, QName qName) throws MessageException {

+		return new SourceBlockImpl((Source) businessObject, qName, this);

+	}

+

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(org.apache.axiom.om.OMElement, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(OMElement omElement, Object context, QName qName) throws XMLStreamException {

+		return new SourceBlockImpl(omElement, qName, this);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockImpl.java
new file mode 100644
index 0000000..301a21a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockImpl.java
@@ -0,0 +1,213 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding.impl;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.databinding.SourceBlock;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockImpl;

+import org.apache.axis2.jaxws.message.util.DOMReader;

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+import org.w3c.dom.Document;

+import org.w3c.dom.Element;

+import org.w3c.dom.Node;

+

+import javax.xml.bind.util.JAXBSource;

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+import javax.xml.transform.Result;

+import javax.xml.transform.Source;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerException;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.sax.SAXSource;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.transform.stream.StreamSource;

+import java.io.ByteArrayInputStream;

+import java.io.StringReader;

+import java.io.ByteArrayOutputStream;

+import java.lang.reflect.Constructor;

+

+/**

+ * SourceBlock

+ * 

+ * Block containing a business object that is a javax.xml.transform.Source.

+ * 

+ * The javax.xml.transform.Source is an interface.  The actual concrete class

+ * may be one of the following:

+ * 	 - StreamSource

+ * 	 - DOMSource

+ *   - JAXBSource

+ *   - SAXSource

+ *   - StAXSource

+ *   

+ * During processing of the block, the block is free to change the representation

+ * from one source to another.  (i.e. if you initially seed this with a SAXSource, 

+ * but a later access may give you a StAXSource).

+ * 

+ * A Source is consumed when read.  The block will make a copy of the source

+ * if a non-consumable request is made.

+ */

+public class SourceBlockImpl extends BlockImpl implements SourceBlock {

+

+	private static XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+	private static XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();

+	

+	private static Class staxSource = null;

+	static {

+		try {

+			// Dynamically discover if StAXSource is available

+			staxSource = Class.forName("javax.xml.transform.stax.StAXSource");

+		} catch (Exception e) { }

+	}

+	

+	/**

+	 * Constructor called from factory

+	 * @param busObject

+	 * @param qName

+	 * @param factory

+	 */

+	SourceBlockImpl(Source busObject, QName qName, BlockFactory factory) throws MessageException {

+		super(busObject, null, qName, factory);

+

+		// Check validity of Source

+		if (busObject instanceof DOMSource ||

+			busObject instanceof SAXSource ||

+			busObject instanceof StreamSource ||

+			(busObject.getClass().equals(staxSource)) ||

+			busObject instanceof JAXBSource) {

+			// Okay, these are supported Source objects

+		} else {

+			// TODO NLS

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("SourceNotSupported", busObject.getClass().getName()));

+		}

+	}

+	

+

+	/**

+	 * Constructor called from factory

+	 * @param reader

+	 * @param qName

+	 * @param factory

+	 */

+	public SourceBlockImpl(OMElement omElement, QName qName, BlockFactory factory) {

+		super(omElement, null, qName, factory);

+	}

+

+	@Override

+	protected Object _getBOFromReader(XMLStreamReader reader, Object busContext) throws XMLStreamException {

+		

+		// Best solution is to use a StAXSource

+		if (staxSource != null) {

+			try {

+				// TODO Constructor should be statically cached for performance

+				Constructor c = staxSource.getDeclaredConstructor(new Class[] {XMLStreamReader.class} );

+				return c.newInstance(new Object[] {reader});

+			} catch (Exception e) {

+			}

+		}

+		

+		// TODO StreamSource is not performant...work is needed here to make this faster

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String text = r2w.getAsString();

+		StringReader sr = new StringReader(text);

+		return new StreamSource(sr);

+		

+	}

+

+	@Override

+	protected XMLStreamReader _getReaderFromBO(Object busObj, Object busContext) throws XMLStreamException  {

+		// TODO not sure if this is always the most performant way to do this.

+		if (busObj instanceof DOMSource) {

+			// Let's use our own DOMReader for now...

+			Element element = null;

+			

+			//TODO busObj can be any of the subclasses of Node -- Document, Elemeent, Entity, Text, ETC.

+			//May need to add code to check for other supported Node type other than Document and Element.

+			Node node = ((DOMSource)busObj).getNode();

+			if(node instanceof Document){

+				element = ((Document)node).getDocumentElement();

+			}else{

+				element = (Element) ((DOMSource)busObj).getNode();

+			}

+			

+			// We had some problems with testers producing DOMSources w/o Namespaces.  

+			// It's easy to catch this here.

+			if (element.getLocalName() == null) {

+				throw new XMLStreamException(ExceptionFactory.makeMessageException(Messages.getMessage("JAXBSourceNamespaceErr")));

+			}

+			

+			return new DOMReader(element);

+		} 

+		

+		if(busObj instanceof StreamSource){

+			return inputFactory.createXMLStreamReader((Source) busObj);

+		}

+		//TODO: For GM we need to only use this approach when absolutely necessary.  

+        // For example, we don't want to do this if this is a (1.6) StaxSource or if the installed parser provides 

+        // a better solution.

+		//TODO: Uncomment this code if woodstock parser handles JAXBSource and SAXSource correctly.

+		//return inputFactory.createXMLStreamReader((Source) busObj);

+		return _slow_getReaderFromSource((Source)busObj);

+	}

+	

+	/**

+     * Creates an XMLStreamReader from a Source using a slow but proven algorithm.

+     */

+   private XMLStreamReader _slow_getReaderFromSource(Source src) throws XMLStreamException {

+	   try{

+           ByteArrayOutputStream out = new ByteArrayOutputStream();

+           Result result = new StreamResult(out);

+           Transformer transformer =  TransformerFactory.newInstance().newTransformer();

+           transformer.transform(src, result); 

+	       ByteArrayInputStream bytes = new ByteArrayInputStream(out.toByteArray());

+	       return inputFactory.createXMLStreamReader(bytes);

+	   }catch(TransformerException e){

+		   throw new XMLStreamException(e);

+	   }

+  

+   }

+

+	@Override

+	protected void _outputFromBO(Object busObject, Object busContext, XMLStreamWriter writer) throws XMLStreamException {

+		// There is no fast way to output the Source to a writer, so get the reader

+		// and pass use the default reader->writer.

+		XMLStreamReader reader = _getReaderFromBO(busObject, busContext);

+		_outputFromReader(reader, writer);

+	}

+

+

+	@Override

+	protected Object _getBOFromBO(Object busObject, Object busContext, boolean consume) {

+		if (consume) {

+			return busObject;

+		} else {

+			// TODO Missing Impl

+			throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("SourceMissingSupport", busObject.getClass().getName()), null);

+		}

+	}

+	

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/XMLStringBlockFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/XMLStringBlockFactoryImpl.java
new file mode 100644
index 0000000..e7c816a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/XMLStringBlockFactoryImpl.java
@@ -0,0 +1,56 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockFactoryImpl;

+

+/**

+ * XMLStringFactoryImpl

+ * 

+ * Creates an XMLStringBlock

+ */

+public class XMLStringBlockFactoryImpl extends BlockFactoryImpl implements XMLStringBlockFactory {

+

+	/**

+	 * Default Constructor required for Factory 

+	 */

+	public XMLStringBlockFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(java.lang.Object, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(Object businessObject, Object context, QName qName) {

+		return new XMLStringBlockImpl((String) businessObject, qName, this);

+	}

+

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(org.apache.axiom.om.OMElement, java.lang.Object, javax.xml.namespace.QName)

+	 */

+	public Block createFrom(OMElement omElement, Object context, QName qName) throws XMLStreamException {

+		return new XMLStringBlockImpl(omElement, qName, this);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/XMLStringBlockImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/XMLStringBlockImpl.java
new file mode 100644
index 0000000..58688d2
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/XMLStringBlockImpl.java
@@ -0,0 +1,87 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.databinding.impl;

+

+import java.io.StringReader;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.databinding.XMLStringBlock;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.impl.BlockImpl;

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+

+/**

+ * XMLStringBlock

+ * 

+ * Block containing a business object that is a String of xml text

+ */

+public class XMLStringBlockImpl extends BlockImpl implements XMLStringBlock {

+

+	protected static XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+	protected static XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();

+	

+	/**

+	 * Constructor called from factory

+	 * @param busObject

+	 * @param qName

+	 * @param factory

+	 */

+	XMLStringBlockImpl(String busObject, QName qName, BlockFactory factory) {

+		super(busObject, null, qName, factory);

+	}

+	

+

+	/**

+	 * Constructor called from factory

+	 * @param reader

+	 * @param qName

+	 * @param factory

+	 */

+	public XMLStringBlockImpl(OMElement omElement, QName qName, BlockFactory factory) {

+		super(omElement, null, qName, factory);

+	}

+

+	@Override

+	protected Object _getBOFromReader(XMLStreamReader reader, Object busContext) throws XMLStreamException {

+		// Create a Reader2Writer converter and get the output as a String

+		Reader2Writer r2w = new Reader2Writer(reader);

+		return r2w.getAsString();

+	}

+

+	@Override

+	protected XMLStreamReader _getReaderFromBO(Object busObj, Object busContext) throws XMLStreamException {

+		// Create an XMLStreamReader from the inputFactory using the String as the sources

+		String str = (String) busObj;

+		StringReader sr = new StringReader(str);

+		return inputFactory.createXMLStreamReader(sr);

+	}

+

+	@Override

+	protected void _outputFromBO(Object busObject, Object busContext, XMLStreamWriter writer) throws XMLStreamException {

+		// There is no fast way to output the String to a writer, so get the reader

+		// and pass use the default reader->writer.

+		XMLStreamReader reader = _getReaderFromBO(busObject, busContext);

+		_outputFromReader(reader, writer);

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/BlockFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/BlockFactory.java
new file mode 100644
index 0000000..23e84d8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/BlockFactory.java
@@ -0,0 +1,80 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.MessageException;

+

+/**

+ * BlockFactory

+ * 

+ * Interface to create Block objects

+ * An object is created from either a reader, another Block or the BusinessObject.

+ * Some business objects (like JAXB) have an associated context object (JAXBContext),

+ * these are also passed to the createMethods.

+ * 

+ * The implementation of BlockFactories should always be singleton objects and

+ * never carry any instance data.

+ * 

+ * The FactoryRegistry should be used to get access to a Factory

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ */

+public interface BlockFactory {

+

+	/**

+	 * createBlock from XMLStreamReader

+	 * @param reader XMLStreamReader

+	 * @param context Associated Context or null

+	 * @param QName if known...if null the Block will determine the QName

+	 * @throws XMLStreamException

+	 */

+	public Block createFrom(XMLStreamReader reader, Object context, QName qName) throws XMLStreamException;

+	

+	/**

+	 * createBlock from XMLStreamReader

+	 * @param omElement OMElement

+	 * @param context Associated Context or null

+	 * @param QName if known...if null the Block will determine the QName

+	 * @throws XMLStreamException

+	 */

+	public Block createFrom(OMElement omElement, Object context, QName qName) throws XMLStreamException;

+	

+	/**

+	 * createBlock from another Block

+	 * If the other Block was created with the same factory and has the same context,

+	 * the other Block is returned.

+	 * If the other Block was created by a different factory or diffent context,

+	 * a new block is returned (and the other block is consumed)

+	 * @param other Block

+	 * @param context Associated Context or null

+	 * @throws XMLStreamException

+	 */

+	public Block createFrom(Block other, Object context) throws XMLStreamException, MessageException;

+	

+	/**

+	 * Create from business object

+	 * @param businessObject

+	 * @param context Associated Context or null

+	 * @param QName if known...if null the Block will determine the QName

+	 */

+	public Block createFrom(Object businessObject, Object context, QName qName) throws MessageException;

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/JAXBBlockFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/JAXBBlockFactory.java
new file mode 100644
index 0000000..e3148cf
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/JAXBBlockFactory.java
@@ -0,0 +1,31 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+

+/**

+ * JAXBBlockFactory

+ * 

+ * Creates a JAXBBlock

+ * 

+ * * The FactoryRegistry should be used to get access to the Factory

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ * 

+ */

+public interface JAXBBlockFactory extends BlockFactory {

+ // TODO The factory should expose methods to get the default JAXBContext, JAXBInspector, Marshaller, Unmarshaller, etc.

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/MessageFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/MessageFactory.java
new file mode 100644
index 0000000..7f5eb63
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/MessageFactory.java
@@ -0,0 +1,79 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+

+/**

+ * MessageFactory

+ * 

+ * Creates a Message object.  The common patterns are:

+ *   - Create an empty message for a specific protocol

+ *   - Create a message with the xml sourced from OM (XMLStreamReader)

+ *   - Create a message (xml + attachments) from a SOAPMessage

+ *   

+ * The FactoryRegistry should be used to get access to the Factory

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ */

+public interface MessageFactory {

+	/**

+	 * create Message with the xml from the XMLStreamReader

+	 * @param reader XMLStreamReader

+	 * @throws XMLStreamException

+	 */

+	public Message createFrom(XMLStreamReader reader) throws XMLStreamException, MessageException;

+	

+	/**

+	 * create Message with the xml from the OMElement

+	 * @param omElement OMElement

+	 * @throws XMLStreamException

+	 */

+	public Message createFrom(OMElement omElement) throws XMLStreamException, MessageException;

+	

+	/**

+	 * create Message from a Block

+	 * @param block

+	 * @param context Associated Context or null

+	 * @throws XMLStreamException

+	 */

+	public Message createFrom(Block other, Object context) throws XMLStreamException, MessageException;

+

+	/**

+	 * create Message from SOAPMessage

+	 * The xml and attachments from the SOAPMessage are used to populate the new Message

+	 * @param SOAPMessage

+	 * @throws XMLStreamException, MessageException

+	 */

+	public Message createFrom(SOAPMessage message) throws XMLStreamException, MessageException;

+

+	

+	/**

+	 * create empty Message of the specified protocol

+	 * @param protocol

+	 * @throws XMLStreamException

+	 */

+	public Message create(Protocol protocol) throws XMLStreamException, MessageException;

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/OMBlockFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/OMBlockFactory.java
new file mode 100644
index 0000000..94e2897
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/OMBlockFactory.java
@@ -0,0 +1,31 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+

+/**

+ * OMBlockFactory

+ * 

+ * Creates an OMBlock

+ * 

+ * * The FactoryRegistry should be used to get access to the Factory

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ * 

+ */

+public interface OMBlockFactory extends BlockFactory {

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SAAJConverterFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SAAJConverterFactory.java
new file mode 100644
index 0000000..a46433c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SAAJConverterFactory.java
@@ -0,0 +1,37 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+import org.apache.axis2.jaxws.message.util.SAAJConverter;

+

+/**

+ * SAAJConverterFactory

+ * Creates an SAAJConverter object

+ * A factory is necessary because implementations may need to plug in their

+ * own SAAJ or OM implementations.

+ * 

+ * Factories are obtained from the FactoryRegistry

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ */

+public interface SAAJConverterFactory {

+	

+	/**

+	 * Get or create the SAAJConverter

+	 * @return SAAJConverter

+	 */

+	public SAAJConverter getSAAJConverter();

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SOAPEnvelopeBlockFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SOAPEnvelopeBlockFactory.java
new file mode 100644
index 0000000..b367939
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SOAPEnvelopeBlockFactory.java
@@ -0,0 +1,30 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+

+/**

+ * SOAPEnvelopeBlockFactory

+ * 

+ * Creates a SOAPEnvelopeBlock

+ * 

+ * The FactoryRegistry should be used to get access to the Factory

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ */

+public interface SOAPEnvelopeBlockFactory extends BlockFactory {

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SourceBlockFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SourceBlockFactory.java
new file mode 100644
index 0000000..5d19e46
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/SourceBlockFactory.java
@@ -0,0 +1,30 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+

+/**

+ * SourceBlockFactory

+ * 

+ * Creates a SourceBlock

+ * 

+ * The FactoryRegistry should be used to get access to the Factory

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ */

+public interface SourceBlockFactory extends BlockFactory {

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/XMLPartFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/XMLPartFactory.java
new file mode 100644
index 0000000..0f4a259
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/XMLPartFactory.java
@@ -0,0 +1,67 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.XMLPart;

+

+/**

+ * XMLPartFactory

+ * 

+ * Creates an XMLPart object.  The two common patterns are:

+ *   - Create an empty message for a specific protocol

+ *   - Create a xmlPart sourced from OM (XMLStreamReader)

+ *   

+ * The FactoryRegistry should be used to get access to the Factory

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ */

+public interface XMLPartFactory {

+	/**

+	 * create XMLPart from XMLStreamReader

+	 * @param reader XMLStreamReader

+	 * @throws MessageStreamException

+	 */

+	public XMLPart createFrom(XMLStreamReader reader) throws XMLStreamException, MessageException;

+	

+	/**

+	 * create XMLPart from OMElement

+	 * @param omElement OMElement

+	 * @throws MessageException

+	 */

+	public XMLPart createFrom(OMElement omElement) throws XMLStreamException, MessageException;

+	

+	/**

+	 * create XMLPart from SOAPEnvelope

+	 * @param soapEnvelope SOAPEnvelope

+	 * @throws MessageException

+	 */

+	public XMLPart createFrom(SOAPEnvelope soapEnvelope) throws XMLStreamException, MessageException;

+

+	/**

+	 * create empty XMLPart of the specified protocol

+	 * @param protocol

+	 * @throws MessageException

+	 */

+	public XMLPart create(Protocol protocol) throws XMLStreamException, MessageException;

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/XMLStringBlockFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/XMLStringBlockFactory.java
new file mode 100644
index 0000000..5b30ae2
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/factory/XMLStringBlockFactory.java
@@ -0,0 +1,30 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.factory;

+

+

+/**

+ * XMLStringBlockFactory

+ * 

+ * Creates a XMLStringBlock

+ * 

+ * The FactoryRegistry should be used to get access to the Factory

+ * @see org.apache.axis2.jaxws.registry.FactoryRegistry

+ */

+public interface XMLStringBlockFactory extends BlockFactory {

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/AttachmentImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/AttachmentImpl.java
new file mode 100644
index 0000000..3bf3866
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/AttachmentImpl.java
@@ -0,0 +1,62 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import javax.activation.DataHandler;

+

+import org.apache.axis2.jaxws.message.Attachment;

+

+/**

+ * 

+ */

+public class AttachmentImpl implements Attachment {

+    private DataHandler data;

+    private String contentType;

+    private String cid;

+    

+    public AttachmentImpl(DataHandler dh, String id) {

+        data = dh;

+        cid = id;

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see org.apache.axis2.jaxws.message.Attachment#getContentType()

+     */

+    public String getContentType() {

+        if (contentType == null)

+            contentType = data.getContentType();

+        

+        return contentType;

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see org.apache.axis2.jaxws.message.Attachment#getContentID()

+     */

+    public String getContentID() {

+        return cid;

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see org.apache.axis2.jaxws.message.Attachment#getDataHandler()

+     */

+    public DataHandler getDataHandler() {

+        return data;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockFactoryImpl.java
new file mode 100644
index 0000000..9bc33bf
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockFactoryImpl.java
@@ -0,0 +1,73 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+

+/**

+ * BlockFactoryImpl

+ * Abstract Base Class for the Block Factories

+ */

+public abstract class BlockFactoryImpl implements BlockFactory {

+

+	public BlockFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.BlockFactory#createFrom(org.apache.axis2.jaxws.message.Block, java.lang.Object)

+	 */

+	public Block createFrom(Block other, Object context) throws XMLStreamException, MessageException {

+		// This is the default behavior.  Derived Factories may

+		// provide a more performant implementation.

+		if (other.getBlockFactory().equals(this)) {

+            if (other.getBusinessContext() == null && 

+                context == null) {

+                return other;

+            }

+            else if (other.getBusinessContext() != null &&

+                     other.getBusinessContext().equals(context)) {

+                return other;

+            }

+		}

+		QName qName= null;

+		if (other.isQNameAvailable()) {

+			qName = other.getQName();

+		}

+		Block newBlock = createFrom(other.getXMLStreamReader(true), context, qName);

+        newBlock.setParent(other.getParent());

+        return newBlock;

+	}

+

+	public Block createFrom(XMLStreamReader reader, Object context, QName qName) throws XMLStreamException {

+		StAXOMBuilder builder = new StAXOMBuilder(reader);  

+		OMElement omElement = builder.getDocumentElement();

+		return createFrom(omElement, context, qName);

+	}

+

+	

+	

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockImpl.java
new file mode 100644
index 0000000..d7181ad
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockImpl.java
@@ -0,0 +1,326 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.XMLPart;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+

+/**

+ * BlockImpl

+ * Abstract Base class for various Block Implementations.

+ * 

+ * The base class takes care of controlling the transformations between BusinessObject, 

+ * XMLStreamReader and SOAPElement

+ * A derived class must minimally define the following:

+ *   _getBOFromReader

+ *   _getReaderFromBO

+ *   _outputFromBO

+ * 

+ * In addtion, the derived class may want to override the following:

+ *   _getBOFromBO ...if the BusinessObject is consumed when read (i.e. it is an InputSource)

+ *   

+ * The derived classes don't have direct access to the instance data.

+ * This ensures that BlockImpl controls the transformations.

+ */

+public abstract class BlockImpl implements Block {

+

+	private Object busObject;

+	private Object busContext;

+	

+	private OMElement omElement = null;

+	

+	private QName qName;

+	private BlockFactory factory;

+	private boolean consumed = false;

+    private XMLPart parent;

+	

+	/**

+	 * A Block has the following components

+	 * @param busObject

+	 * @param busContext or null

+	 * @param qName or null if unknown

+	 * @param factory that creates the Block

+	 */

+	protected BlockImpl(Object busObject, Object busContext, QName qName, BlockFactory factory) {

+		this.busObject = busObject;

+		this.busContext = busContext;

+		this.qName = qName;

+		this.factory = factory;

+	}

+	

+	/**

+	 * A Block has the following components

+	 * @param reader

+	 * @param busContext or null

+	 * @param qName or null if unknown

+	 * @param factory that creates the Block

+	 */

+	protected BlockImpl(OMElement omElement, Object busContext, QName qName, BlockFactory factory) {

+		this.omElement = omElement;

+		this.busContext = busContext;

+		this.qName = qName;

+		this.factory = factory;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.Block#getBlockFactory()

+	 */

+	public BlockFactory getBlockFactory() {

+		return factory;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.Block#getBusinessContext()

+	 */

+	public Object getBusinessContext() {

+		return busContext;

+	}

+    

+    public XMLPart getParent() {

+        return parent;

+    }

+    

+    public void setParent(XMLPart p) {

+        parent = p;

+    }

+     

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.Block#getBusinessObject(boolean)

+	 */

+	public Object getBusinessObject(boolean consume) throws XMLStreamException, MessageException {

+		if (consumed) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("BlockImplErr1", this.getClass().getName()));

+		}

+		if (busObject != null) {

+			busObject =  _getBOFromBO(busObject, busContext, consume);

+		} else {

+			// Transform reader into business object

+			XMLStreamReader reader;

+			if (consume) {

+				reader = omElement.getXMLStreamReaderWithoutCaching();

+			} else {

+				reader = omElement.getXMLStreamReader();

+			}

+			busObject = _getBOFromReader(reader, busContext);

+			omElement = null;

+		}

+		

+		// Save the businessObject in a local variable

+		// so that we can reset the Block if consume was indicated

+		Object newBusObject = busObject;

+		setConsumed(consume);

+		return newBusObject;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.Block#getQName()

+	 */

+	public QName getQName() throws MessageException {

+		// If the QName is not known, find it

+		try {

+			if (qName == null) {

+				if (omElement == null) {

+					XMLStreamReader newReader = _getReaderFromBO(busObject, busContext);

+					busObject = null;

+					StAXOMBuilder builder = new StAXOMBuilder(newReader);  

+					omElement = builder.getDocumentElement();

+				}

+				qName = omElement.getQName();

+			}

+			return qName;

+		} catch (XMLStreamException xse) {

+			throw ExceptionFactory.makeMessageException(xse);

+		}

+	}

+	

+	/**

+	 * This method is intended for derived objects to set the qName

+	 * @param qName

+	 */

+	protected void setQName(QName qName) {

+		this.qName = qName;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.Block#getXMLStreamReader(boolean)

+	 */

+	public XMLStreamReader getXMLStreamReader(boolean consume) throws XMLStreamException, MessageException {

+		XMLStreamReader newReader = null;

+		if (consumed) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("BlockImplErr1", this.getClass().getName()));

+		}

+		if (omElement != null) {

+			if (consume) {

+				newReader = omElement.getXMLStreamReaderWithoutCaching();

+				omElement = null;

+			} else {

+				newReader = omElement.getXMLStreamReader();

+			}

+		} else if (busObject !=null) {

+			// Getting the reader does not destroy the BusinessObject

+			busObject = _getBOFromBO(busObject, busContext, consume);

+			newReader = _getReaderFromBO(busObject, busContext);

+		}

+		setConsumed(consume);

+		return newReader;

+	}

+	

+	public OMElement getOMElement() throws XMLStreamException, MessageException {

+		OMElement newOMElement = null;

+		boolean consume =true;  // get the OM consumes the message

+		if (consumed) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("BlockImplErr1", this.getClass().getName()));

+		}

+		if (omElement != null) {

+			newOMElement = omElement;

+		} else if (busObject !=null) {

+			// Getting the reader does not destroy the BusinessObject

+			busObject = _getBOFromBO(busObject, busContext, consume);

+			XMLStreamReader newReader = _getReaderFromBO(busObject, busContext);

+			StAXOMBuilder builder = new StAXOMBuilder(newReader);  

+			newOMElement = builder.getDocumentElement();

+		}

+		setConsumed(consume);

+		return newOMElement;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.Block#isConsumed()

+	 */

+	public boolean isConsumed() {

+		return consumed;

+	}

+	

+	/**

+	 * Once consumed, all instance data objects are nullified to prevent subsequent access

+	 * @param consume

+	 * @return

+	 */

+	private void setConsumed(boolean consume) { 

+		if (consume) {

+			this.consumed = true;

+			busObject = null;

+			busContext = null;

+			omElement = null;

+		} else {

+			consumed = false;

+		}

+	}

+

+	public boolean isQNameAvailable() {

+		return (qName != null);

+	}

+

+	public void outputTo(XMLStreamWriter writer, boolean consume) throws XMLStreamException, MessageException {

+		if (consumed) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("BlockImplErr1", this.getClass().getName()));

+		}

+		if (omElement != null) {

+			if (consume) {

+				omElement.serializeAndConsume(writer);

+			} else {

+				omElement.serialize(writer);

+			}

+		} else if (busObject !=null) {

+			busObject = _getBOFromBO(busObject, busContext, consume);

+			_outputFromBO(busObject, busContext, writer);

+		}

+		setConsumed(consume);

+		return;

+	}

+

+	/**

+	 * @return true if the representation of the block is currently a business object.

+	 * Derived classes may use this information to get information in a performant way.

+	 */

+	protected boolean isBusinessObject() {

+		return busObject != null;

+	}

+	

+	public String traceString(String indent) {

+		// TODO add trace string

+		return null;

+	}

+	

+	/**

+	 * The default implementation is to return the business object.

+	 * A derived block may want to override this class if the business object

+	 * is consumed when read (thus the dervived block may want to make a buffered copy)

+	 * (An example use case for overriding this method is the businessObject is an InputSource)

+	 * @param busObject

+	 * @param busContext

+	 * @param consume

+	 * @return

+	 */

+	protected Object _getBOFromBO(Object busObject, Object busContext, boolean consume) {

+		return busObject;

+	}

+	

+	

+	/**

+	 * The derived class must provide an implementation that builds the business object from the reader

+	 * @param reader XMLStreamReader, which is consumed

+	 * @param busContext

+	 * @return

+	 */

+	protected abstract Object _getBOFromReader(XMLStreamReader reader, Object busContext) throws XMLStreamException, MessageException;

+	

+	/**

+	 * Get an XMLStreamReader for the BusinessObject

+	 * The derived Block must implement this method

+	 * @param busObj

+	 * @param busContext

+	 * @return

+	 */

+	protected abstract XMLStreamReader _getReaderFromBO(Object busObj, Object busContext) throws XMLStreamException, MessageException;

+	

+	/**

+	 * Output Reader contents to a Writer.

+	 * The default implementation is probably sufficient for most derived classes.

+	 * @param reader

+	 * @param writer

+	 * @throws XMLStreamException

+	 */

+	protected void _outputFromReader(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {

+		Reader2Writer r2w = new Reader2Writer(reader);

+		r2w.outputTo(writer);

+	}

+	

+	/**

+	 * Output BusinessObject contents to a Writer.

+	 * Derived classes must provide this implementation

+	 * @param busObject

+	 * @param busContext

+	 * @param writer

+	 * @throws XMLStreamException

+	 * @throws MessageException

+	 */

+	protected abstract void _outputFromBO(Object busObject, Object busContext, XMLStreamWriter writer) throws XMLStreamException, MessageException;

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageFactoryImpl.java
new file mode 100644
index 0000000..6a7f05b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageFactoryImpl.java
@@ -0,0 +1,99 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.databinding.SOAPEnvelopeBlock;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+

+/**

+ * MessageFactoryImpl

+ */

+public class MessageFactoryImpl implements MessageFactory {

+

+	/**

+	 * Default Constructor required for Factory 

+	 */

+	public MessageFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.factory.MessageFactory#createFrom(javax.xml.stream.XMLStreamReader)

+	 */

+	public Message createFrom(XMLStreamReader reader) throws XMLStreamException, MessageException {

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(reader, null);  // Pass null has the version to trigger autodetection

+		SOAPEnvelope omEnvelope = builder.getSOAPEnvelope();

+		return createFrom(omEnvelope);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.MessageFactory#createFrom(org.apache.axiom.om.OMElement)

+	 */

+	public Message createFrom(OMElement omElement) throws XMLStreamException, MessageException {

+		return new MessageImpl(omElement);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.MessageFactory#create(org.apache.axis2.jaxws.message.Protocol)

+	 */

+	public Message create(Protocol protocol) throws XMLStreamException, MessageException {

+		return new MessageImpl(protocol);

+	}

+

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.factory.MessageFactory#createFrom(javax.xml.soap.SOAPMessage)

+	 */

+	public Message createFrom(SOAPMessage message) throws XMLStreamException, MessageException {

+		try {

+			Message m = new MessageImpl(message.getSOAPPart().getEnvelope());

+			if (message.countAttachments() > 0) {

+				throw ExceptionFactory.makeMessageException(Messages.getMessage("AttachmentsNotSupported"));

+			}

+			return m;

+		} catch (Exception e) {

+			throw ExceptionFactory.makeMessageException(e);

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.factory.MessageFactory#createFrom(org.apache.axis2.jaxws.message.Block, java.lang.Object)

+	 */

+	public Message createFrom(Block block, Object context) throws XMLStreamException, MessageException {

+		

+		// Small optimization to quickly consider the SOAPEnvelope case

+		if (block instanceof SOAPEnvelopeBlock) {

+			return new MessageImpl((SOAPEnvelope) block.getBusinessObject(true));

+		}

+		return createFrom(block.getXMLStreamReader(true));

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java
new file mode 100644
index 0000000..e6d6504
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java
@@ -0,0 +1,298 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import java.io.ByteArrayInputStream;

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.List;

+

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.MimeHeaders;

+import javax.xml.soap.SOAPBody;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.Attachment;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.XMLPart;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.SAAJConverterFactory;

+import org.apache.axis2.jaxws.message.factory.XMLPartFactory;

+import org.apache.axis2.jaxws.message.util.SAAJConverter;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+import java.io.ByteArrayOutputStream;

+

+/**

+ * MessageImpl

+ * A Message is an XML part + Attachments.

+ * Most of the implementation delegates to the XMLPart implementation.

+ */

+public class MessageImpl implements Message {

+

+	Protocol protocol = Protocol.unknown; // the protocol, defaults to unknown

+	XMLPart xmlPart = null; // the representation of the xmlpart

+	List<Attachment> attachments = new ArrayList<Attachment>(); // non-xml parts

+    boolean mtomEnabled;

+	

+	// Constants

+	private static final String SOAP11_ENV_NS = "http://schemas.xmlsoap.org/soap/envelope/";

+	private static final String SOAP12_ENV_NS = "http://www.w3.org/2003/05/soap-envelope";

+	private static final String SOAP11_CONTENT_TYPE ="text/xml";

+	private static final String SOAP12_CONTENT_TYPE = "application/soap+xml";

+	

+	/**

+	 * MessageImpl should be constructed via the MessageFactory.

+	 * This constructor constructs an empty message with the specified protocol

+	 * @param protocol

+	 */

+	MessageImpl(Protocol protocol) throws MessageException, XMLStreamException {

+		super();

+		this.protocol = protocol;

+		if (protocol.equals(Protocol.unknown)) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("ProtocolIsNotKnown"));

+		} else if (protocol.equals(Protocol.rest)) {

+			// TODO Need REST support

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("RESTIsNotSupported"));

+		}

+		XMLPartFactory factory = (XMLPartFactory) FactoryRegistry.getFactory(XMLPartFactory.class);

+		xmlPart = factory.create(protocol);

+        xmlPart.setParent(this);

+	}

+	

+	/**

+	 * Message is constructed by the MessageFactory.

+	 * This constructor creates a message from the specified root.

+	 * @param root

+	 */

+	MessageImpl(OMElement root) throws MessageException, XMLStreamException  {

+		XMLPartFactory factory = (XMLPartFactory) FactoryRegistry.getFactory(XMLPartFactory.class);

+		xmlPart = factory.createFrom(root);

+		protocol = xmlPart.getProtocol();

+        xmlPart.setParent(this);

+	}

+	

+	/**

+	 * Message is constructed by the MessageFactory.

+	 * This constructor creates a message from the specified root.

+	 * @param root

+	 */

+	MessageImpl(SOAPEnvelope root) throws MessageException, XMLStreamException  {

+		XMLPartFactory factory = (XMLPartFactory) FactoryRegistry.getFactory(XMLPartFactory.class);

+		xmlPart = factory.createFrom(root);

+		protocol = xmlPart.getProtocol();

+        xmlPart.setParent(this);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.Message#getAsSOAPMessage()

+	 */

+	public SOAPMessage getAsSOAPMessage() throws MessageException {

+

+		// TODO: 

+		// This is a non performant way to create SOAPMessage. I will serialize

+		// the xmlpart content and then create an InputStream of byte.

+		// Finally create SOAPMessage using this InputStream.

+		// The real solution may involve using non-spec, implementation

+		// constructors to create a Message from an Envelope

+		try {

+			// Get OMElement from XMLPart.

+			OMElement element = xmlPart.getAsOMElement();

+			

+			// Get the namespace so that we can determine SOAP11 or SOAP12

+			OMNamespace ns = element.getNamespace();

+			

+			ByteArrayOutputStream outStream = new ByteArrayOutputStream();

+			element.serialize(outStream);

+

+			// Create InputStream

+			ByteArrayInputStream inStream = new ByteArrayInputStream(outStream

+					.toByteArray());

+			

+			// Create MessageFactory that supports the version of SOAP in the om element

+			MessageFactory mf = getSAAJConverter().createMessageFactory(ns.getNamespaceURI());

+

+			// Create soapMessage object from Message Factory using the input

+			// stream created from OM.

+

+			// TODO should we read the MIME Header from JAXWS MessageContext.

+			// For now I will create a default header

+			MimeHeaders defaultHeader = new MimeHeaders();

+

+			// Toggle based on SOAP 1.1 or SOAP 1.2

+			String contentType = null;

+			if (ns.getNamespaceURI().equals(SOAP11_ENV_NS)) {

+				contentType = SOAP11_CONTENT_TYPE;

+			} else {

+				contentType = SOAP12_CONTENT_TYPE;

+			}

+			defaultHeader.addHeader("Content-type", contentType +"; charset=UTF-8");

+			SOAPMessage soapMessage = mf.createMessage(defaultHeader, inStream);

+			

+			return soapMessage;

+		} catch (Exception e) {

+			throw ExceptionFactory.makeMessageException(e);

+		}

+

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see org.apache.axis2.jaxws.message.XMLPart#getAsBlock(java.lang.Object,

+	 *      org.apache.axis2.jaxws.message.factory.BlockFactory)

+	 */

+	public Block getAsBlock(Object context, BlockFactory blockFactory) throws MessageException, XMLStreamException {

+		return xmlPart.getAsBlock(context, blockFactory);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.XMLPart#getAttachments()

+	 */

+	public List<Attachment> getAttachments() {

+		return attachments;

+	}

+    

+    /*

+     * (non-Javadoc)

+     * @see org.apache.axis2.jaxws.message.Message#getAttachment(java.lang.String)

+     */

+    public Attachment getAttachment(String cid) {

+        if (attachments != null) {

+           Iterator<Attachment> itr = attachments.iterator();

+           while (itr.hasNext()) {

+               Attachment a = itr.next();

+               if (a.getContentID().equals(cid))

+                   return a;

+           }

+       }

+        

+       return null;

+    }

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.XMLPart#getProtocol()

+	 */

+	public Protocol getProtocol() {

+		return protocol;

+	}

+

+	public OMElement getAsOMElement() throws MessageException {

+		return xmlPart.getAsOMElement();

+	}

+

+	public javax.xml.soap.SOAPEnvelope getAsSOAPEnvelope() throws MessageException {

+		return xmlPart.getAsSOAPEnvelope();

+	}

+

+	public Block getBodyBlock(int index, Object context, BlockFactory blockFactory) throws MessageException {

+		return xmlPart.getBodyBlock(index, context, blockFactory);

+	}

+

+	public Block getHeaderBlock(String namespace, String localPart, Object context, BlockFactory blockFactory) throws MessageException {

+		return xmlPart.getHeaderBlock(namespace, localPart, context, blockFactory);

+	}

+

+	public int getNumBodyBlocks() throws MessageException {

+		return xmlPart.getNumBodyBlocks();

+	}

+

+	public int getNumHeaderBlocks() throws MessageException {

+		return xmlPart.getNumHeaderBlocks();

+	}

+

+	public XMLStreamReader getXMLStreamReader(boolean consume) throws MessageException {

+		return xmlPart.getXMLStreamReader(consume);

+	}

+

+	public boolean isConsumed() {

+		return xmlPart.isConsumed();

+	}

+

+	public void outputTo(XMLStreamWriter writer, boolean consume) throws XMLStreamException, MessageException {

+		xmlPart.outputTo(writer, consume);

+	}

+

+	public void removeBodyBlock(int index) throws MessageException {

+		xmlPart.removeBodyBlock(index);

+	}

+

+	public void removeHeaderBlock(String namespace, String localPart) throws MessageException {

+		xmlPart.removeHeaderBlock(namespace, localPart);

+	}

+

+	public void setBodyBlock(int index, Block block) throws MessageException {

+        xmlPart.setBodyBlock(index, block);

+	}

+

+	public void setHeaderBlock(String namespace, String localPart, Block block) throws MessageException {

+		xmlPart.setHeaderBlock(namespace, localPart, block);

+	}

+

+	public String traceString(String indent) {

+		return xmlPart.traceString(indent);

+	}

+	

+	/**

+	 * Load the SAAJConverter

+	 * @return SAAJConverter

+	 */

+	SAAJConverter converter = null;

+	private SAAJConverter getSAAJConverter() {

+		if (converter == null) {

+			SAAJConverterFactory factory = (

+						SAAJConverterFactory)FactoryRegistry.getFactory(SAAJConverterFactory.class);

+			converter = factory.getSAAJConverter();

+		}

+		return converter;

+	}

+    

+    public void addAttachment(Attachment data) {

+        attachments.add(data);

+    }

+    

+    //FIXME: This doesn't make much sense, but has to be here because Message extends

+    //XMLPart.  

+    public Message getParent() {

+        throw new UnsupportedOperationException();

+    }

+    

+    //FIXME: This doesn't make much sense, but has to be here because Message extends

+    //XMLPart.  

+    public void setParent(Message msg) { 

+        throw new UnsupportedOperationException();

+    }

+    

+    public boolean isMTOMEnabled() {

+        return mtomEnabled;

+    }

+    

+    public void setMTOMEnabled(boolean b) {

+        mtomEnabled = b;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartBase.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartBase.java
new file mode 100644
index 0000000..e34c1e5
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartBase.java
@@ -0,0 +1,401 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.soap.SOAPFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAP11Constants;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.MessageInternalException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.XMLPart;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.SOAPEnvelopeBlockFactory;

+

+/**

+ * XMLPartBase class for an XMLPart

+ * An XMLPart is an abstraction of the xml portion of the message.

+ * The actual representation can be in one of three different forms:

+ *    * An OM tree

+ *    * A SAAJ SOAPEnvelope

+ *    * An XMLSpine (an optimized representation of the message)

+ * The representation is stored in the private variable (content)

+ * 

+ * The representation changes as the Message flows through the JAX-WS 

+ * framework.  For example, here is a typical flow on the inbound case:

+ *    a) Message is built from OM                           (representation: OM)

+ *    b) Message flows into SOAP Handler chain              (representation: OM->SOAPEnvelope)

+ *    c) Message flows out of the SOAP Handler chain 

+ *    d) Message flows into the logical dispatch processing (representation: SOAPEnvelope->XMLSpine)

+ * 

+ * The key to performance is the implementation of the transformations between 

+ * OM, SAAJ SOAPEnvelope and XMLSpine.   This base class defines all of the methods

+ * that are required on an XMLPart, the actual transformations are provided by the 

+ * derived class.  This division of work allows the derived class to concentrate on the

+ * optimization of the transformations.  For example, the derived class may implement

+ * XMLSpine -> OM using OMObjectWrapperElement constructs...thus avoid expensive parsing.

+ * 

+ * Here are the methods that the derived XMLPart should implement. 

+ *   OMElement _convertSE2OM(SOAPEnvelope se)

+ *   OMElement _convertSpine2OM(XMLSpine spine)

+ *   SOAPEnvelope _convertOM2SE(OMElement om)

+ *   SOAPEnvelope _convertSpine2SE(XMLSpine spine)

+ *   XMLSpine _convertOM2Spine(OMElement om)

+ *   XMLSpine _convertSE2Spine(SOAPEnvelope se)

+ *   XMLSpine _createSpine(Protocol protocol)

+ * 

+ * @see org.apache.axis2.jaxws.message.XMLPart

+ * @see org.apache.axis2.jaxws.message.impl.XMLPartImpl

+ * 

+ */

+public abstract class XMLPartBase implements XMLPart {

+

+	Protocol protocol = Protocol.unknown;  // Protocol defaults to unknown

+	

+	// The actual xml representation is always one of the following

+	//   OM if the content is an OM tree

+	//   SOAPENVELOPE if the content is a SOAPEnvelope

+	//   SPINE if the content is a OM "spine" + Blocks

+	Object content = null;

+	int contentType = UNKNOWN;

+	

+	static final int UNKNOWN = 0;

+	static final int OM = 1;

+	static final int SOAPENVELOPE = 2;

+	static final int SPINE = 3;

+	boolean consumed = false;

+    

+    Message parent;

+	

+	

+	/**

+	 * XMLPart should be constructed via the XMLPartFactory.

+	 * This constructor constructs an empty XMLPart with the specified protocol

+	 * @param protocol

+	 * @throws MessageException

+	 */

+	XMLPartBase(Protocol protocol) throws MessageException {

+		super();

+		this.protocol = protocol;

+		if (protocol.equals(Protocol.unknown)) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("ProtocolIsNotKnown"));

+		} else if (protocol.equals(Protocol.rest)) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("RESTIsNotSupported"));

+		}

+		content = _createSpine(protocol);

+		contentType = SPINE;

+	}

+	

+	/**

+	 * XMLPart should be constructed via the XMLPartFactory.

+	 * This constructor creates an XMLPart from the specified root.

+	 * @param root

+	 * @throws MessageException

+	 */

+	XMLPartBase(OMElement root) throws MessageException {

+		content = root;

+		contentType = OM;

+		QName qName = root.getQName();

+		if (qName.getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {

+			protocol = Protocol.soap11;

+		} else if (qName.getNamespaceURI().equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {

+			protocol = Protocol.soap12;

+		} else {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("RESTIsNotSupported"));

+		}

+	}

+	

+	/**

+	 * XMLPart should be constructed via the XMLPartFactory.

+	 * This constructor creates an XMLPart from the specified root.

+	 * @param root

+	 * @throws MessageException

+	 */

+	XMLPartBase(SOAPEnvelope root) throws MessageException {

+		content = root;

+		contentType = SOAPENVELOPE;

+		String ns = root.getNamespaceURI();

+		if (ns.equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {

+			protocol = Protocol.soap11;

+		} else if (ns.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {

+			protocol = Protocol.soap12;

+		} else {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("RESTIsNotSupported"));

+		}

+	}

+	

+	private void setContent(Object content, int contentType) {

+		this.content = content;

+		this.contentType = contentType;

+	}

+	

+	private OMElement getContentAsOMElement() throws MessageException {

+		OMElement om = null;

+		switch (contentType) {

+		case (OM):

+		 	om = (OMElement) content;

+			break;

+		case (SPINE):

+			om = _convertSpine2OM((XMLSpine) content);

+			break;

+		case (SOAPENVELOPE):

+			om = _convertSE2OM((SOAPEnvelope) content);

+			break;

+		default:

+			throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("XMLPartImplErr2"), null);

+		}

+		setContent(om, OM);

+		return om;

+	}

+		

+	private SOAPEnvelope getContentAsSOAPEnvelope() throws MessageException {

+		SOAPEnvelope se = null;

+		switch (contentType) {

+		case (SOAPENVELOPE):

+		 	se = (SOAPEnvelope) content;

+			break;

+		case (SPINE):

+			se = _convertSpine2SE((XMLSpine) content);

+			break;

+		case (OM):

+			se = _convertOM2SE((OMElement) content);

+			break;

+		default:

+			throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("XMLPartImplErr2"), null);

+		}

+		setContent(se, SOAPENVELOPE);

+		return se;

+	}

+	

+	private XMLSpine getContentAsXMLSpine() throws MessageException {

+		XMLSpine spine = null;

+		switch (contentType) {

+		case (SPINE):

+		 	spine = (XMLSpine) content;

+			break;

+		case (SOAPENVELOPE):

+			spine = _convertSE2Spine((SOAPEnvelope) content);

+			break;

+		case (OM):

+			spine = _convertOM2Spine((OMElement) content);

+			break;

+		default:

+			throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("XMLPartImplErr2"), null);

+		}

+		spine.setParent(parent);

+        setContent(spine, SPINE);

+		return spine;

+	}

+	

+	public OMElement getAsOMElement() throws MessageException {

+		return getContentAsOMElement();

+	}

+

+	public SOAPEnvelope getAsSOAPEnvelope() throws MessageException {

+		return getContentAsSOAPEnvelope();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.XMLPart#getAsBlock(java.lang.Object, org.apache.axis2.jaxws.message.factory.BlockFactory)

+	 */

+	public Block getAsBlock(Object context, BlockFactory blockFactory) throws MessageException, XMLStreamException {

+		

+		// Get the content as the specfied block.  There is some optimization here to prevent unnecessary copies.

+		// More optimization may be added later.

+		Block block = null;

+		if (contentType == OM) {

+			block = blockFactory.createFrom((OMElement) content, context, null);

+		} else if (contentType == SOAPENVELOPE && 

+			blockFactory instanceof SOAPEnvelopeBlockFactory)	{

+			block = blockFactory.createFrom((SOAPEnvelope) content, null, null );

+		} else {

+			block = blockFactory.createFrom(getAsOMElement(), null, null);

+		}

+		return block;

+	}

+

+	public Protocol getProtocol() {

+		return protocol;

+	}

+

+	public XMLStreamReader getXMLStreamReader(boolean consume) throws MessageException {

+		if (consumed) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("XMLPartImplErr1"));

+		}

+		XMLStreamReader reader = null;

+		if (contentType == SPINE) {

+			reader = getContentAsXMLSpine().getXMLStreamReader(consume);

+		} else {

+			OMElement omElement = getContentAsOMElement();

+			if (consume) {

+				reader = omElement.getXMLStreamReaderWithoutCaching();

+			} else {

+				reader = omElement.getXMLStreamReader();

+			}

+		}

+		consumed = consume;

+		return reader;

+	}

+

+	public boolean isConsumed() {

+		return consumed;

+	}

+

+	public void outputTo(XMLStreamWriter writer, boolean consume) throws XMLStreamException, MessageException {

+		if (consumed) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("XMLPartImplErr1"));

+		}

+		if (contentType == SPINE) {

+			getContentAsXMLSpine().outputTo(writer, consume);

+		} else {

+			OMElement omElement = getContentAsOMElement();

+			if (consume) {

+				omElement.serializeAndConsume(writer);

+			} else {

+				omElement.serialize(writer);

+			}

+		}

+		consumed = consume;

+		return;

+		

+	}

+

+	public String traceString(String indent) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	public Block getBodyBlock(int index, Object context, BlockFactory blockFactory) throws MessageException {

+		return getContentAsXMLSpine().getBodyBlock(index, context, blockFactory);

+	}

+

+	public Block getHeaderBlock(String namespace, String localPart, Object context, BlockFactory blockFactory) throws MessageException {

+		return getContentAsXMLSpine().getHeaderBlock(namespace, localPart, context, blockFactory);

+	}

+

+	public int getNumBodyBlocks() throws MessageException {

+		return getContentAsXMLSpine().getNumBodyBlocks();

+	}

+

+	public int getNumHeaderBlocks() throws MessageException {

+		return getContentAsXMLSpine().getNumHeaderBlocks();

+	}

+

+	public void removeBodyBlock(int index) throws MessageException {

+		getContentAsXMLSpine().removeBodyBlock(index);

+	}

+

+	public void removeHeaderBlock(String namespace, String localPart) throws MessageException {

+		getContentAsXMLSpine().removeHeaderBlock(namespace, localPart);

+	}

+

+	public void setBodyBlock(int index, Block block) throws MessageException {

+		getContentAsXMLSpine().setBodyBlock(index, block);

+	}

+

+	public void setHeaderBlock(String namespace, String localPart, Block block) throws MessageException {

+		getContentAsXMLSpine().setHeaderBlock(namespace, localPart, block);

+	}

+    

+    /*

+     * (non-Javadoc)

+     * @see org.apache.axis2.jaxws.message.XMLPart#getParent()

+     */

+    public Message getParent() {

+        return parent;

+    }

+

+    /*

+     * Set the backpointer to this XMLPart's parent Message

+     */

+    public void setParent(Message p) {

+        parent = p;

+    }

+    

+	/**

+	 * Convert SOAPEnvelope into an OM tree

+	 * @param se SOAPEnvelope

+	 * @return OM

+	 * @throws MessageException

+	 */

+	protected abstract OMElement _convertSE2OM(SOAPEnvelope se) throws MessageException;

+	

+	/**

+	 * Convert XMLSpine into an OM tree

+	 * @param spine XMLSpine

+	 * @return OM

+	 * @throws MessageException

+	 */

+	protected abstract OMElement _convertSpine2OM(XMLSpine spine) throws MessageException;

+	

+	/**

+	 * Convert OM tree into a SOAPEnvelope

+	 * @param om

+	 * @return SOAPEnvelope

+	 * @throws MessageException

+	 */

+	protected abstract SOAPEnvelope _convertOM2SE(OMElement om) throws MessageException;

+	

+	/**

+	 * Convert XMLSpine into a SOAPEnvelope

+	 * @param spine

+	 * @return SOAPEnvelope

+	 * @throws MessageException

+	 */

+	protected abstract SOAPEnvelope _convertSpine2SE(XMLSpine spine) throws MessageException;

+	

+	/**

+	 * Convert OM into XMLSpine

+	 * @param om

+	 * @return

+	 * @throws MessageException

+	 */

+	protected abstract XMLSpine _convertOM2Spine(OMElement om) throws MessageException;

+	

+	/**

+	 * Convert SOAPEnvelope into XMLSPine

+	 * @param SOAPEnvelope

+	 * @return XMLSpine

+	 * @throws MessageException

+	 */

+	protected abstract XMLSpine _convertSE2Spine(SOAPEnvelope se) throws MessageException;

+	

+	/**

+	 * Create an empty, default spine for the specificed protocol

+	 * @param protocol

+	 * @return 

+	 * @throws MessageException

+	 */

+	protected XMLSpine _createSpine(Protocol protocol) throws MessageException {

+		// Default implementation is to simply construct the spine. 

+		// Devived classes may wish to construct a different kind of XMLSpine

+		return new XMLSpineImpl(protocol);

+	}

+	

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartFactoryImpl.java
new file mode 100644
index 0000000..168633e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartFactoryImpl.java
@@ -0,0 +1,72 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.XMLPart;

+import org.apache.axis2.jaxws.message.factory.XMLPartFactory;

+

+/**

+ * MessageFactoryImpl

+ */

+public class XMLPartFactoryImpl implements XMLPartFactory {

+

+	/**

+	 * Default Constructor required for Factory 

+	 */

+	public XMLPartFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.factory.XMLPartFactory#createFrom(javax.xml.stream.XMLStreamReader)

+	 */

+	public XMLPart createFrom(XMLStreamReader reader) throws XMLStreamException, MessageException {

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(reader, null);  // Pass null has the version to trigger autodetection

+		SOAPEnvelope omEnvelope = builder.getSOAPEnvelope();

+		return createFrom(omEnvelope);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.MessageFactory#createFrom(org.apache.axiom.om.OMElement)

+	 */

+	public XMLPart createFrom(OMElement omElement) throws XMLStreamException, MessageException {

+		return new XMLPartImpl(omElement);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.MessageFactory#create(org.apache.axis2.jaxws.message.Protocol)

+	 */

+	public XMLPart create(Protocol protocol) throws XMLStreamException, MessageException {

+		return new XMLPartImpl(protocol);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.factory.XMLPartFactory#createFrom(javax.xml.soap.SOAPEnvelope)

+	 */

+	public XMLPart createFrom(javax.xml.soap.SOAPEnvelope soapEnvelope) throws XMLStreamException, MessageException {

+		return new XMLPartImpl(soapEnvelope);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartImpl.java
new file mode 100644
index 0000000..e6926dd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartImpl.java
@@ -0,0 +1,165 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.List;

+

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMContainer;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMText;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.message.Attachment;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.attachments.AttachmentUtils;

+import org.apache.axis2.jaxws.message.factory.SAAJConverterFactory;

+import org.apache.axis2.jaxws.message.util.SAAJConverter;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+/**

+ * XMLPartImpl

+ * 

+ * This class extends the implementation of the XMLPartBase so that it 

+ * can define the transformations between OM, SAAJ SOAPEnvelope and XMLSpine.

+ * @see org.apache.axis2.jaxws.impl.XMLPartBase

+ * 

+ */

+public class XMLPartImpl extends  XMLPartBase {

+

+	SAAJConverter converter = null;

+	

+	/**

+	 * XMLPart should be constructed via the XMLPartFactory.

+	 * This constructor constructs an empty XMLPart with the specified protocol

+	 * @param protocol

+	 * @throws MessageException

+	 */

+	XMLPartImpl(Protocol protocol) throws MessageException {

+		super(protocol);

+	}

+	

+	/**

+	 * XMLPart should be constructed via the XMLPartFactory.

+	 * This constructor creates an XMLPart from the specified root.

+	 * @param root

+	 * @throws MessageException

+	 */

+	XMLPartImpl(OMElement root) throws MessageException {

+		super(root);

+	}

+	

+	/**

+	 * XMLPart should be constructed via the XMLPartFactory.

+	 * This constructor creates an XMLPart from the specified root.

+	 * @param root

+	 * @throws MessageException

+	 */

+	XMLPartImpl(SOAPEnvelope root) throws MessageException {

+		super(root);

+	}

+	

+	@Override

+	protected OMElement _convertSE2OM(SOAPEnvelope se) throws MessageException {

+		return getSAAJConverter().toOM(se);

+	}

+

+	@Override

+	protected OMElement _convertSpine2OM(XMLSpine spine) throws MessageException {

+		// Get an XMLStreamReader that consumes the spine object

+		XMLStreamReader reader = spine.getXMLStreamReader(true);

+		// Get a SOAP OM Builder.  Passing null causes the version to be automatically triggered

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(reader, null);  

+		// Create and return the OM Envelope

+		org.apache.axiom.soap.SOAPEnvelope omEnvelope = builder.getSOAPEnvelope();

+        

+        // If we have MTOM attachments, we need to replace the <xop:include>

+        // elements with OMText binary nodes.

+        Message msg = getParent();

+        if (msg.isMTOMEnabled()) {

+            // First find all of the <xop:include> elements

+            ArrayList<OMElement> xops = AttachmentUtils.findXopElements(omEnvelope);

+            

+            if (xops != null) {

+                QName href = new QName("","href");

+                Iterator<OMElement> itr = xops.iterator();

+                while (itr.hasNext()) {

+                    OMElement xop = itr.next();

+                    String cid = xop.getAttributeValue(href);

+                    

+                    // Then find their corresponding Attachment object

+                    Attachment a = msg.getAttachment(cid);

+                    

+                    // Convert the <xop:include> OMElement into an OMText

+                    // binary node and replace it in the tree.                    

+                    OMText binaryNode = AttachmentUtils.makeBinaryOMNode(xop, a);

+                    xop.insertSiblingAfter(binaryNode);

+                    xop.detach();

+                }

+            }

+        }

+        

+		return omEnvelope;

+	}

+

+	@Override

+	protected SOAPEnvelope _convertOM2SE(OMElement om) throws MessageException {

+		return getSAAJConverter().toSAAJ((org.apache.axiom.soap.SOAPEnvelope) om);

+	}

+

+	@Override

+	protected SOAPEnvelope _convertSpine2SE(XMLSpine spine) throws MessageException {

+		return _convertOM2SE(_convertSpine2OM(spine));

+	}

+

+	@Override

+	protected XMLSpine _convertOM2Spine(OMElement om) throws MessageException {

+		return new XMLSpineImpl((org.apache.axiom.soap.SOAPEnvelope) om);

+	}

+

+	@Override

+	protected XMLSpine _convertSE2Spine(SOAPEnvelope se) throws MessageException {

+		return _convertOM2Spine(_convertSE2OM(se));

+	}

+

+	@Override

+	protected XMLSpine _createSpine(Protocol protocol) throws MessageException {

+		// Use the default implementation provided in XMLPartBase

+		return super._createSpine(protocol);

+	}

+	

+	/**

+	 * Load the SAAJConverter

+	 * @return SAAJConverter

+	 */

+	protected SAAJConverter getSAAJConverter() {

+		if (converter == null) {

+			SAAJConverterFactory factory = (

+						SAAJConverterFactory)FactoryRegistry.getFactory(SAAJConverterFactory.class);

+			converter = factory.getSAAJConverter();

+		}

+		return converter;

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartOptimizedImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartOptimizedImpl.java
new file mode 100644
index 0000000..0916349
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLPartOptimizedImpl.java
@@ -0,0 +1,58 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+

+/**

+ * XMLPartOptimizedImpl

+ * 

+ * This class extends the implementation of the XMLPartBase so that it 

+ * can define the transformations between OM, SAAJ SOAPEnvelope and XMLSpine.

+ * 

+ * This class uses OMObjectWrapperElement constructs to speed up the transformations.

+ * 

+ * @see org.apache.axis2.jaxws.impl.XMLPartBase

+ * 

+ */

+public class XMLPartOptimizedImpl extends  XMLPartImpl {

+

+	// TODO Add custom transformations that take advantage of OMObjectWrapperElement

+	

+	/**

+	 * XMLPart should be constructed via the XMLPartFactory.

+	 * This constructor constructs an empty XMLPart with the specified protocol

+	 * @param protocol

+	 * @throws MessageException

+	 */

+	XMLPartOptimizedImpl(Protocol protocol) throws MessageException {

+		super(protocol);

+	}

+	

+	/**

+	 * XMLPart should be constructed via the XMLPartFactory.

+	 * This constructor creates an XMLPart from the specified root.

+	 * @param root

+	 * @throws MessageException

+	 */

+	XMLPartOptimizedImpl(OMElement root) throws MessageException {

+		super(root);

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpine.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpine.java
new file mode 100644
index 0000000..a0beb1d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpine.java
@@ -0,0 +1,31 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import org.apache.axis2.jaxws.message.XMLPart;

+

+/**

+ * XMLSpine

+ * 

+ * An XMLSpine is an optimized form of the xml part of the message.

+ * Currently there is only one implementation (XMLSpineImpl).

+ * @see org.apache.axis2.jaxws.message.impl.XMLSpineImpl for more details

+ *

+ */

+interface XMLSpine extends XMLPart {

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpineImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpineImpl.java
new file mode 100644
index 0000000..dc0362d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLSpineImpl.java
@@ -0,0 +1,346 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.List;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.soap.SOAP11Constants;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.SOAPHeader;

+import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;

+import org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.MessageInternalException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.OMBlockFactory;

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+/**

+ * XMLSpineImpl

+ * 

+ * An XMLSpine consists of an OM SOAPEnvelope which defines the "spine" of the message

+ * (i.e. the SOAPEnvelope element, the SOAPHeader element, the SOAPBody element and

+ * perhaps the SOAPFault element).  The real payload portions of the message are 

+ * contained in Block object (headerBlocks, bodyBlocks, detailBlocks).

+ * 

+ * This "shortened" OM tree allows the JAX-WS implementation to process the message

+ * without creating fully populated OM trees.

+ *

+ */

+class XMLSpineImpl implements XMLSpine {

+	

+	private static OMBlockFactory obf = (OMBlockFactory) FactoryRegistry.getFactory(OMBlockFactory.class);

+	

+	private Protocol protocol = Protocol.unknown;

+	private SOAPEnvelope root = null;

+	private SOAPFactory soapFactory = null;

+	private List<Block> headerBlocks = new ArrayList<Block>();

+	private List<Block> bodyBlocks   = new ArrayList<Block>();

+	private List<Block> detailBlocks = new ArrayList<Block>();

+	private boolean consumed = false;

+	private Iterator bodyIterator = null;

+    private Message parent;

+

+	/**

+	 * Create a lightweight representation of this protocol

+	 * (i.e. the Envelope, Header and Body)

+	 */

+	public XMLSpineImpl(Protocol protocol) {

+		super();

+		this.protocol = protocol;

+		soapFactory = getFactory(protocol);

+		root = createEmptyEnvelope(protocol, soapFactory);

+	}

+	

+	/**

+	 * Create spine from an existing OM tree

+	 * @param envelope

+	 * @throws MessageException

+	 */

+	public XMLSpineImpl(SOAPEnvelope envelope) throws MessageException {

+		super();

+		init(envelope);

+		if (root.getNamespace().getName().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {

+			protocol = Protocol.soap11;

+		} else if (root.getNamespace().getName().equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {

+			protocol = Protocol.soap12;

+		} else {

+			// TODO Support for REST

+			throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("RESTIsNotSupported"), null);

+		}

+	} 

+

+	private void init(SOAPEnvelope envelope) throws MessageException {

+		root = envelope;

+		headerBlocks.clear();

+		bodyBlocks.clear();

+		detailBlocks.clear();

+		bodyIterator = null;

+		

+		

+		// If a header block exists, create an OMBlock for each element

+		// This advances the StAX parser past the header end tag

+		SOAPHeader header = root.getHeader();

+		if (header != null) {

+            Iterator it = header.getChildren();

+            advanceIterator(it, headerBlocks, true);            

+        }

+

+		

+		SOAPBody body = root.getBody();

+		if (!body.hasFault()) {

+			// Normal processing

+			// Only create the first body block, this ensures that the StAX 

+			// cursor is not advanced beyond the tag of the first element

+			bodyIterator = body.getChildren();

+			advanceIterator(bodyIterator, bodyBlocks, false);

+		} else {

+			// Process the Fault

+			// TODO Add Fault Processing

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("SOAPFaultIsNotImplemented"));

+		}

+		return;

+	}

+	

+	/**

+	 * Utility method to advance the iterator and populate the blocks

+	 * @param it Iterator

+	 * @param blocks List<Block> to update

+	 * @param toEnd if true, iterator is advanced to the end, otherwise it is advanced one Element

+	 * @throws MessageException

+	 */

+	private  void advanceIterator(Iterator it, List<Block> blocks, boolean toEnd) throws MessageException {

+		

+		// TODO This code must be reworked.  The OM Iterator causes the entire OMElement to be 

+		// parsed when it.next() is invoked.  I will need to fix this to gain performance.  (scheu)

+		

+		boolean found = false;

+		boolean first = true;

+		while (it.hasNext() && (!found && !toEnd)) {

+			// Remove the nodes as they are converted into blocks

+			if (!first) {

+				it.remove();

+			}

+			first = true;

+			

+			OMNode node = (OMNode) it.next();

+			if (node instanceof OMElement) {

+				// Elements are converted into Blocks

+				Block block = null;

+				try { 

+					block = obf.createFrom((OMElement) node, null, null);

+				} catch (XMLStreamException xse) {

+					throw ExceptionFactory.makeMessageException(xse);

+				}

+				blocks.add(block);

+                block.setParent(this);

+			} else {

+				System.out.println("NON-ELEMENT FOUND: " +  node.getClass().getName());

+			}

+		}

+	}

+	

+	private static SOAPFactory getFactory(Protocol protocol) {

+		SOAPFactory soapFactory;

+		if (protocol == Protocol.soap11) {

+			soapFactory = new SOAP11Factory();

+		} else if (protocol == Protocol.soap12) {

+			soapFactory = new SOAP12Factory();

+		} else {

+			// TODO REST Support is needed

+			throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("RESTIsNotSupported"), null);

+		}

+		return soapFactory;

+	}

+	private static SOAPEnvelope createEmptyEnvelope(Protocol protocol, SOAPFactory factory) {

+		SOAPEnvelope env = factory.createSOAPEnvelope();

+		// Add an empty body and header

+		factory.createSOAPBody(env);

+		factory.createSOAPHeader(env);

+

+		return env;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.XMLPart#getProtocol()

+	 */

+	public Protocol getProtocol() {

+		return protocol;

+	}

+    

+    /*

+     * (non-Javadoc)

+     * @see org.apache.axis2.jaxws.message.XMLPart#getParent()

+     */

+    public Message getParent() {

+        return parent;

+    }

+    

+    /*

+     * Set the backpointer to this XMLPart's parent Message

+     */

+    public void setParent(Message p) {

+        parent = p;

+    }

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.XMLPart#outputTo(javax.xml.stream.XMLStreamWriter, boolean)

+	 */

+	public void outputTo(XMLStreamWriter writer, boolean consume) throws XMLStreamException, MessageException {

+		Reader2Writer r2w = new Reader2Writer(getXMLStreamReader(consume));

+		r2w.outputTo(writer);

+	}

+

+	public XMLStreamReader getXMLStreamReader(boolean consume) throws MessageException {

+		return new XMLStreamReaderForXMLSpine(root, protocol,

+					headerBlocks, bodyBlocks, detailBlocks, consume);

+	}

+

+	public boolean isConsumed() {

+		return consumed;

+	}

+

+	public javax.xml.soap.SOAPEnvelope getAsSOAPEnvelope() throws MessageException {

+		throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("NeverCalled", "XMLSpineImpl.getAsSOAPEnvelope()"), null);

+	}

+

+	public OMElement getAsOMElement() throws MessageException {

+		throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("NeverCalled", "XMLSpineImpl.getAsOMElement()"), null);

+	}

+	

+	

+

+	public Block getAsBlock(Object context, BlockFactory blockFactory) throws MessageException, XMLStreamException {

+		throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("NeverCalled", "XMLSpineImpl.getAsBlock()"), null);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.XMLPart#getNumBodyBlocks()

+	 */

+	public int getNumBodyBlocks() throws MessageException {

+		if (bodyIterator != null) {

+			advanceIterator(bodyIterator, bodyBlocks, true);

+		}

+		return bodyBlocks.size();

+	}

+

+	public Block getBodyBlock(int index, Object context, BlockFactory blockFactory) throws MessageException {

+		if (index >= bodyBlocks.size() && bodyIterator != null) {

+			advanceIterator(bodyIterator, bodyBlocks, true);

+		}

+		try {

+			Block oldBlock = bodyBlocks.get(index);

+		

+			// Convert to new Block

+			Block newBlock = blockFactory.createFrom(oldBlock, context);

+			if (newBlock != oldBlock) {

+				bodyBlocks.set(index, newBlock);

+			}

+			return newBlock;

+		} catch (XMLStreamException xse) {

+			throw ExceptionFactory.makeMessageException(xse);

+		}

+	}

+

+	public void setBodyBlock(int index, Block block) throws MessageException {

+		if (index >= bodyBlocks.size() && bodyIterator != null) {

+			advanceIterator(bodyIterator, bodyBlocks, true);

+		}

+		bodyBlocks.add(index, block);

+        block.setParent(this);

+	}

+

+	public void removeBodyBlock(int index) throws MessageException {

+		if (index >= bodyBlocks.size() && bodyIterator != null) {

+			advanceIterator(bodyIterator, bodyBlocks, true);

+		}

+		bodyBlocks.remove(index);

+	}

+

+	public int getNumHeaderBlocks() throws MessageException {

+		return headerBlocks.size();

+	}

+

+	public Block getHeaderBlock(String namespace, String localPart, Object context, BlockFactory blockFactory) throws MessageException {

+		int index = getHeaderBlockIndex(namespace, localPart);

+		try {

+			Block oldBlock = bodyBlocks.get(index);

+		

+			// Convert to new Block

+			Block newBlock = blockFactory.createFrom(oldBlock, context);

+			if (newBlock != oldBlock) {

+				headerBlocks.set(index, newBlock);

+			}

+			return newBlock;

+		} catch (XMLStreamException xse) {

+			throw ExceptionFactory.makeMessageException(xse);

+		}

+	}

+

+	public void setHeaderBlock(String namespace, String localPart, Block block) throws MessageException {

+		int index = getHeaderBlockIndex(namespace, localPart);

+		headerBlocks.set(index, block);

+        block.setParent(this);

+	}

+

+	/**

+	 * Utility method to locate header block

+	 * @param namespace

+	 * @param localPart

+	 * @return index of header block or -1

+	 * @throws MessageException

+	 */

+	private int getHeaderBlockIndex(String namespace, String localPart) throws MessageException {

+		for (int i=0; i<headerBlocks.size(); i++) {

+			Block block = headerBlocks.get(i);

+			QName qName = block.getQName();

+			if (qName.getNamespaceURI().equals(namespace) &&

+				qName.getLocalPart().equals(localPart)) {

+				return i;

+			}

+		}

+		return -1;

+	}

+	public void removeHeaderBlock(String namespace, String localPart) throws MessageException {

+		int index = getHeaderBlockIndex(namespace, localPart);

+		headerBlocks.remove(index);

+	}

+

+	public String traceString(String indent) {

+		// TODO Trace String Support

+		return null;

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLStreamReaderForXMLSpine.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLStreamReaderForXMLSpine.java
new file mode 100644
index 0000000..9022a93
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/XMLStreamReaderForXMLSpine.java
@@ -0,0 +1,165 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.impl;

+

+import java.util.List;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.util.StackableReader;

+import org.apache.axis2.jaxws.message.util.XMLStreamReaderFilter;

+

+/**

+ * XMLStreamReaderForXMLSpine

+ * 

+ * An XMLSpine is composed of many different parts: a sparse OM tree, 

+ * header blocks, body blocks, etc.

+ * 

+ * The XMLStreamReaderForXMLSpine provides an XMLStreamReader that

+ * over all of these combined objects (without building a full OM tree).

+ * It does this by using a StackableXMLStreamReader for the underlying implementation and 

+ * pushing the XMLStreamReaders for the blocks onto the stack at the appropriate points in 

+ * the message.

+ */

+public class XMLStreamReaderForXMLSpine extends XMLStreamReaderFilter {

+

+	// Components of an XMLSpine

+	OMElement root;

+	private List<Block> headerBlocks = null;

+	private List<Block> bodyBlocks   = null;

+	private List<Block> detailBlocks = null;

+	private boolean consume = false;

+	Protocol protocol = null;

+	

+	// Local Constants

+	private static final String BODY = "Body";

+	private static final String HEADER = "Header";

+	private static final String FAULT = "Fault";

+	private static final String DETAIL11 = "detail";

+	private static final String DETAIL12 = "Detail";

+	

+	boolean inFault = false;

+	private List<Block> insertBlocks = null;

+	

+	/**

+	 * @param root of the XMLSpine

+	 * @param headerBlocks 

+	 * @param bodyBocks

+	 * @param detailBlocks

+	 * @param consume

+	 */

+	public XMLStreamReaderForXMLSpine(OMElement root, 

+			Protocol protocol,

+			List<Block> headerBlocks, 

+			List<Block> bodyBlocks, 

+			List<Block> detailBlocks, 

+			boolean consume) {

+		// Create a stackable reader and prime it with the root om tree

+		// The XMLStreamReader's for the blocks will be pushed onto the

+		// stack as the message is processed.

+		super(new StackableReader(root.getXMLStreamReader()));

+		this.root = root;

+		this.protocol = protocol;

+		this.headerBlocks = headerBlocks;

+		this.bodyBlocks = bodyBlocks;

+		this.detailBlocks = detailBlocks;

+		this.consume = consume;

+	}

+

+	@Override

+	public int next() throws XMLStreamException {

+		// The next method is overridden so that we can push

+		// the block's XMLStreamReaders onto the stack at the 

+		// appropriate places in the message (pretty slick).

+		

+		// Insert pending blocks onto the stack

+		if (insertBlocks != null) {

+			pushBlocks(insertBlocks, consume);

+			insertBlocks = null;

+			

+		}

+		

+		// Get the next event

+		int event = super.next();

+		

+		// If this is a start element event, then we may need to insert

+		// the blocks prior to the next event

+		if (isStartElement()) {

+			QName qName = super.getName();

+			// Insert body blocks after the Body

+			if (qName.getLocalPart().equals(BODY) &&

+				qName.getNamespaceURI().equals(root.getNamespace().getName())) {

+				if (bodyBlocks != null) {

+					insertBlocks = bodyBlocks;

+					bodyBlocks = null;

+				}

+			} 

+			// Insert header blocks after the header

+			else if (qName.getLocalPart().equals(HEADER) &&

+					qName.getNamespaceURI().equals(root.getNamespace().getName())) {

+				if (headerBlocks != null) {

+					insertBlocks = headerBlocks;

+					headerBlocks = null;

+				}

+			}

+			else if (qName.getLocalPart().equals(FAULT) &&

+					qName.getNamespaceURI().equals(root.getNamespace().getName())) {

+				inFault = true;

+			} 

+			// Insert Detail blocks afger the detail...note that

+			// the detail name is different in SOAP 1.1 and SOAP 1.2

+			else if (inFault) {

+				if (qName.getLocalPart().equals(DETAIL11) &&

+				    protocol.equals(Protocol.soap11) ||

+				    qName.getLocalPart().equals(DETAIL12) &&

+				    protocol.equals(Protocol.soap12)) {

+					if (detailBlocks != null) {

+						insertBlocks = detailBlocks;

+						detailBlocks = null;

+					}

+				}

+			}

+		}

+		return event;

+	}

+

+	/**

+	 * Push the XMLStreamReaders for the blocks

+	 * @param blocks

+	 */

+	private void pushBlocks(List<Block> blocks, boolean consume) throws XMLStreamException{

+		// Push the XMLStreamReaders for the blocks onto the 

+		// delegate.  This is done in reverse order of the blocks so that the 

+		// first  block's xmlstreamreader is ontop of the stack.

+		try {

+			StackableReader sr = (StackableReader) delegate;

+			for (int i=blocks.size()-1; i>=0; i--) {

+				Block block = blocks.get(i);

+				if (block != null) {

+					sr.push(block.getXMLStreamReader(consume));

+				}

+			}

+		} catch (MessageException me) {

+			throw new XMLStreamException(me);

+		}

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/DOMReader.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/DOMReader.java
new file mode 100644
index 0000000..3cf204e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/DOMReader.java
@@ -0,0 +1,59 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axis2.jaxws.message.util.impl.XMLStreamReaderFromDOM;

+import org.w3c.dom.Element;

+

+/**

+ * DOMReader

+ * Creates an XMLStreamReader backed by a DOM tree.

+ */

+public class DOMReader extends Reader {

+

+	Element element;

+	

+	/**

+	 * @param reader

+	 * @param resettable

+	 */

+	public DOMReader(Element element) {

+		super(_newReader(element), true);

+		

+		this.element = element;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.util.Reader#newReader()

+	 */

+	@Override

+	protected XMLStreamReader newReader() {

+		return _newReader(element);

+	}

+

+	/**

+	 * Utility method to get the stream reader

+	 * @param element

+	 * @return

+	 */

+	private static XMLStreamReader _newReader(Element element) {

+		// Construct a reader from an element

+		return new XMLStreamReaderFromDOM(element);

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/ProtocolUtil.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/ProtocolUtil.java
new file mode 100644
index 0000000..282c38a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/ProtocolUtil.java
@@ -0,0 +1,52 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import javax.xml.ws.soap.SOAPBinding;

+

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.Protocol;

+

+/**

+ * This class contains some common utilities needed for working with the 

+ * Protocol objects in the JAX-WS Message model.  

+ * 

+ */

+public class ProtocolUtil {

+    

+    /**

+     * Return the right value for the Protocol based on the binding

+     * URL that was passed in.

+     * 

+     * @param url

+     * @return

+     */

+    public static Protocol getProtocolForBinding(String url) throws MessageException {

+        //TODO: Add support for more URLs as needed.

+        if (url.equals(SOAPBinding.SOAP11HTTP_BINDING)) {

+            return Protocol.soap11;

+        }

+        else if (url.equals(SOAPBinding.SOAP12HTTP_BINDING)) {

+            return Protocol.soap12;

+        }

+        else {

+            throw ExceptionFactory.makeMessageException(Messages.getMessage("protoNotFound00", url));

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/Reader.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/Reader.java
new file mode 100644
index 0000000..355621c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/Reader.java
@@ -0,0 +1,258 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import javax.xml.namespace.NamespaceContext;

+import javax.xml.namespace.QName;

+import javax.xml.stream.Location;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.MessageInternalException;

+

+

+/**

+ * Reader

+ * In many situations, you want the ability to reset an XMLStreamReader.

+ * (Or at least ask if the XMLStreamReader is resettable).

+ * 

+ * The Reader abstract class:

+ *    - accepts an XMLStreamReader

+ *    - provides reset() and isResettable() methods

+ * Adds support resettable support to XMLStreamReader

+ * 

+ * Derived classes must pass the initial reader to the constructor and indicate if it

+ * is resettable.

+ * Derived classes must also provide an implementation of the newReader() method if 

+ * resettable.

+ */

+public abstract class Reader implements XMLStreamReader {

+	protected XMLStreamReader reader;

+	private final boolean resettable;

+	/**

+	 * @param reader

+	 * @param resettable

+	 */

+	Reader(XMLStreamReader reader, boolean resettable) {

+		this.reader = reader;

+		this.resettable = resettable;

+	}

+	

+	/**

+	 * Get a newReader from the Object

+	 * @return XMLStreamReader

+	 */

+	protected abstract XMLStreamReader newReader();

+	

+	/**

+	 * isResettable

+	 * @return true or false

+	 */

+	public boolean isResettable() {

+		return resettable;

+	}

+	

+	public void reset() throws MessageInternalException {

+		if (!resettable) {

+			throw ExceptionFactory.makeMessageInternalException(Messages.getMessage("resetReaderErr"), null);

+		}

+		reader = newReader();

+	}

+

+	public void close() throws XMLStreamException {

+		reader.close();

+	}

+

+	public int getAttributeCount() {

+		return reader.getAttributeCount();

+	}

+

+	public String getAttributeLocalName(int arg0) {

+		return reader.getAttributeLocalName(arg0);

+	}

+

+	public QName getAttributeName(int arg0) {

+		return reader.getAttributeName(arg0);

+	}

+

+	public String getAttributeNamespace(int arg0) {

+		return reader.getAttributeNamespace(arg0);

+	}

+

+	public String getAttributePrefix(int arg0) {

+		return reader.getAttributePrefix(arg0);

+	}

+

+	public String getAttributeType(int arg0) {

+		return reader.getAttributeType(arg0);

+	}

+

+	public String getAttributeValue(int arg0) {

+		return reader.getAttributeValue(arg0);

+	}

+

+	public String getAttributeValue(String arg0, String arg1) {

+		return reader.getAttributeValue(arg0, arg1);

+	}

+

+	public String getCharacterEncodingScheme() {

+		return reader.getCharacterEncodingScheme();

+	}

+

+	public String getElementText() throws XMLStreamException {

+		return reader.getElementText();

+	}

+

+	public String getEncoding() {

+		return reader.getEncoding();

+	}

+

+	public int getEventType() {

+		return reader.getEventType();

+	}

+

+	public String getLocalName() {

+		return reader.getLocalName();

+	}

+

+	public Location getLocation() {

+		return reader.getLocation();

+	}

+

+	public QName getName() {

+		return reader.getName();

+	}

+

+	public NamespaceContext getNamespaceContext() {

+		return reader.getNamespaceContext();

+	}

+

+	public int getNamespaceCount() {

+		return reader.getNamespaceCount();

+	}

+

+	public String getNamespacePrefix(int arg0) {

+		return reader.getNamespacePrefix(arg0);

+	}

+

+	public String getNamespaceURI() {

+		return reader.getNamespaceURI();

+	}

+

+	public String getNamespaceURI(int arg0) {

+		return reader.getNamespaceURI(arg0);

+	}

+

+	public String getNamespaceURI(String arg0) {

+		return reader.getNamespaceURI(arg0);

+	}

+

+	public String getPIData() {

+		return reader.getPIData();

+	}

+

+	public String getPITarget() {

+		return reader.getPITarget();

+	}

+

+	public String getPrefix() {

+		return reader.getPrefix();

+	}

+

+	public Object getProperty(String arg0) throws IllegalArgumentException {

+		return reader.getProperty(arg0);

+	}

+

+	public String getText() {

+		return reader.getText();

+	}

+

+	public char[] getTextCharacters() {

+		return reader.getTextCharacters();

+	}

+

+	public int getTextCharacters(int arg0, char[] arg1, int arg2, int arg3) throws XMLStreamException {

+		return reader.getTextCharacters(arg0, arg1, arg2, arg3);

+	}

+

+	public int getTextLength() {

+		return reader.getTextLength();

+	}

+

+	public int getTextStart() {

+		return reader.getTextStart();

+	}

+

+	public String getVersion() {

+		return reader.getVersion();

+	}

+

+	public boolean hasName() {

+		return reader.hasName();

+	}

+

+	public boolean hasNext() throws XMLStreamException {

+		return reader.hasNext();

+	}

+

+	public boolean hasText() {

+		return reader.hasText();

+	}

+

+	public boolean isAttributeSpecified(int arg0) {

+		return reader.isAttributeSpecified(arg0);

+	}

+

+	public boolean isCharacters() {

+		return reader.isCharacters();

+	}

+

+	public boolean isEndElement() {

+		return reader.isEndElement();

+	}

+

+	public boolean isStandalone() {

+		return reader.isStandalone();

+	}

+

+	public boolean isStartElement() {

+		return reader.isStartElement();

+	}

+

+	public boolean isWhiteSpace() {

+		return reader.isWhiteSpace();

+	}

+

+	public int next() throws XMLStreamException {

+		return reader.next();

+	}

+

+	public int nextTag() throws XMLStreamException {

+		return reader.nextTag();

+	}

+

+	public void require(int arg0, String arg1, String arg2) throws XMLStreamException {

+		reader.require(arg0, arg1, arg2);

+	}

+

+	public boolean standaloneSet() {

+		return reader.standaloneSet();

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/Reader2Writer.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/Reader2Writer.java
new file mode 100644
index 0000000..baf2ab2
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/Reader2Writer.java
@@ -0,0 +1,82 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import java.io.StringWriter;

+import java.util.Iterator;

+

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axiom.om.OMDocument;

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+

+/**

+ * Reader2Writer

+ * This is a simple converter that is constructed with an XMLStreamReader

+ * and allows you to write the contents to an XMLStreamWriter.

+ */

+public class Reader2Writer {

+

+	private XMLStreamReader reader;

+	private static XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();

+	

+	/**

+	 * Construct from a Reader

+	 * @param reader -- the input to the converter

+	 */

+	public Reader2Writer(XMLStreamReader reader) {

+		this.reader = reader;

+	}

+

+	/**

+	 * outputTo the writer.

+	 * @param writer -- the output of the converter

+	 */

+	public void outputTo(XMLStreamWriter writer) throws XMLStreamException {

+		// Using OM to convert the reader to a writer.  This seems to be

+		// the safest way to make the conversion, and it promotes code re-use.

+		StAXOMBuilder builder = new StAXOMBuilder(reader);  

+		OMDocument omDocument = builder.getDocument();

+		Iterator it = omDocument.getChildren();

+		while(it.hasNext()) {

+			OMNode omNode = (OMNode) it.next();

+			omNode.serializeAndConsume(writer);

+		}

+	}

+	

+	/**

+	 * Utility method to write the reader contents to a String

+	 * @return String

+	 */

+	public String getAsString() throws XMLStreamException {

+		StringWriter sw = new StringWriter();

+		XMLStreamWriter writer = outputFactory.createXMLStreamWriter(sw);

+		

+		// Write the reader to the writer

+		outputTo(writer);

+		

+		// Flush the writer and get the String

+		writer.flush();

+		sw.flush();

+		String str = sw.toString();

+		return str;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/ResettableReader.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/ResettableReader.java
new file mode 100644
index 0000000..bc61254
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/ResettableReader.java
@@ -0,0 +1,53 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+

+/**

+ * ResettableReader

+ * A resettable XMLStreamReader.  

+ * @see org.apache.axis2.jaxws.util.Reader

+ */

+public class ResettableReader extends Reader {

+

+	OMElement omElement = null;

+	

+	/** 

+	 * Create resettable XMLStreamReader

+	 * @param reader

+	 * @param resettable

+	 */

+	public ResettableReader(XMLStreamReader reader) {

+		super(reader, true);

+		StAXOMBuilder builder = new StAXOMBuilder(reader);  

+		omElement = builder.getDocumentElement();

+		reset();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.util.Reader#newReader()

+	 */

+	@Override

+	protected XMLStreamReader newReader() {

+		return omElement.getXMLStreamReader();

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/SAAJConverter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/SAAJConverter.java
new file mode 100644
index 0000000..cbc7115
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/SAAJConverter.java
@@ -0,0 +1,97 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.SOAPElement;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.soap.SOAPException;

+import javax.xml.soap.SOAPFactory;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.message.MessageException;

+

+

+/**

+ * SAAJConverter

+ * Provides Conversion between SAAJ and OM

+ * Constructed via the SAAJConverterFactory

+ */

+public interface SAAJConverter {

+	/**

+	 * Convert OM SOAPEnvleope to SAAJ SOAPEnvelope

+	 * @param omElement

+	 * @return SOAPEnvelope

+	 * @throws MessageException

+	 */

+	public SOAPEnvelope toSAAJ(org.apache.axiom.soap.SOAPEnvelope omElement)

+		throws MessageException;

+

+	/**

+	 * Convert SAAJ SOAPEnvelope to OM SOAPEnvelope

+	 * @param saajEnvelope

+	 * @return OM Envelope

+	 * @throws MessageException

+	 */

+	public org.apache.axiom.soap.SOAPEnvelope toOM(SOAPEnvelope saajEnvelope)

+		throws MessageException;

+	

+	/**

+	 * Convert SOAPElement into an OMElement

+	 * @param soapElement

+	 * @return OMElement

+	 * @throws MessageException

+	 */

+	public OMElement toOM(SOAPElement soapElement) 

+		throws MessageException;

+	

+	/**

+	 * Convert omElement into a SOAPElement and add it to the parent SOAPElement.

+	 * This method requires that the parent element have an ancestor that is a

+	 * SOAPEnvelope. 

+	 * If this is not the case use the toSAAJ(OMElement, SOAPElement, SOAPFactory) method

+	 * @param omElement

+	 * @param parent SOAPElement

+	 * @return SOAPElement that was added to the parent.

+	 * @throws MessageException

+	 * @see toSAAJ(OMElement, SOAPElement, SOAPFactory)

+	 */

+	public SOAPElement toSAAJ(OMElement omElement, SOAPElement parent)

+		throws MessageException;

+	

+	/**

+	 * Convert omElement into a SOAPElement and add it to the parent SOAPElement.

+	 * @param omElement

+	 * @param parent SOAPElement

+	 * @param sf SOAPFactory that is used to create Name objects

+	 * @return SOAPElement that was added to the parent.

+	 * @throws MessageException

+	 * * @see toSAAJ(OMElement, SOAPElement)

+	 */

+	public SOAPElement toSAAJ(OMElement omElement, SOAPElement parent, SOAPFactory sf)

+		throws MessageException;

+	

+	/**

+	 * Creates a MessageFactory that can support the SOAP version identified

+	 * by the specified envelope namespace. 

+	 * @param namespace

+	 * @return

+	 * @throws MessageException if the namespace is SOAP 1.2 and the SAAJ does not support

+	 * SOAP 1.2 or the namespace is unknown.

+	 */

+	public MessageFactory createMessageFactory(String namespace) throws SOAPException, MessageException;

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/SOAPElementReader.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/SOAPElementReader.java
new file mode 100644
index 0000000..9a179e6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/SOAPElementReader.java
@@ -0,0 +1,59 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import javax.xml.soap.SOAPElement;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axis2.jaxws.message.util.impl.XMLStreamReaderFromDOM;

+

+/**

+ * SOAPElementReader

+ * Creates an XMLStreamReader backed by a SOAPElement tree.

+ */

+public class SOAPElementReader extends Reader {

+

+	SOAPElement element;

+	

+	/**

+	 * @param reader

+	 * @param resettable

+	 */

+	public SOAPElementReader(SOAPElement element) {

+		super(_newReader(element), true);

+		

+		this.element = element;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.util.Reader#newReader()

+	 */

+	@Override

+	protected XMLStreamReader newReader() {

+		return _newReader(element);

+	}

+

+	/**

+	 * Utility method to get the stream reader

+	 * @param element

+	 * @return

+	 */

+	private static XMLStreamReader _newReader(SOAPElement element) {

+		// Construct a reader from an element

+		return new XMLStreamReaderFromDOM(element);

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/StackableReader.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/StackableReader.java
new file mode 100644
index 0000000..ea0d386
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/StackableReader.java
@@ -0,0 +1,275 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import java.util.Stack;

+

+import javax.xml.namespace.NamespaceContext;

+import javax.xml.namespace.QName;

+import javax.xml.stream.Location;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+/**

+ * StackableReader

+ * A StackableStreamReader provides an additional method

+ * push(XMLStreamReader)

+ * 

+ * You can call push(...) to add a new XMLStreamReader.  The

+ * next event will use the pushed stream reader.

+ * After the XMLStreamReader is consumed, it is automatically popped off 

+ * of the stack.

+ * 

+ * Note the information returned by the StackableReader is only

+ * applicable for the topmost XMLStreamReader.  For example the NamespaceContext

+ * that is returned is not a combination of all the namespace contexts on the stack.

+ */

+public class StackableReader implements XMLStreamReader {

+

+	Stack<XMLStreamReader> stack = new Stack<XMLStreamReader>();

+	XMLStreamReader current = null;

+	

+	/**

+	 * Create a stackable reader with the initial reader

+	 * @param first

+	 */

+	public StackableReader(XMLStreamReader first) {

+		current = first;

+	}

+	

+	/**

+	 * Push a new StreamReader

+	 * @param streamReader

+	 */

+	public void push(XMLStreamReader streamReader) throws XMLStreamException {

+		// Push the current reader if it is not consumed

+		if (current != null &&

+		    current.hasNext()) {

+			stack.push(current);

+		}

+		current = streamReader;

+	}

+

+	public void close() throws XMLStreamException {

+		current.close();

+	}

+

+	public int getAttributeCount() {

+		return current.getAttributeCount();

+	}

+

+	public String getAttributeLocalName(int arg0) {

+		return current.getAttributeLocalName(arg0);

+	}

+

+	public QName getAttributeName(int arg0) {

+		return current.getAttributeName(arg0);

+	}

+

+	public String getAttributeNamespace(int arg0) {

+		return current.getAttributeNamespace(arg0);

+	}

+

+	public String getAttributePrefix(int arg0) {

+		return current.getAttributePrefix(arg0);

+	}

+

+	public String getAttributeType(int arg0) {

+		return current.getAttributeType(arg0);

+	}

+

+	public String getAttributeValue(int arg0) {

+		return current.getAttributeValue(arg0);

+	}

+

+	public String getAttributeValue(String arg0, String arg1) {

+		return current.getAttributeValue(arg0, arg1);

+	}

+

+	public String getCharacterEncodingScheme() {

+		return current.getCharacterEncodingScheme();

+	}

+

+	public String getElementText() throws XMLStreamException {

+		return current.getElementText();

+	}

+

+	public String getEncoding() {

+		return current.getEncoding();

+	}

+

+	public int getEventType() {

+		return current.getEventType();

+	}

+

+	public String getLocalName() {

+		return current.getLocalName();

+	}

+

+	public Location getLocation() {

+		return current.getLocation();

+	}

+

+	public QName getName() {

+		return current.getName();

+	}

+

+	public NamespaceContext getNamespaceContext() {

+		return current.getNamespaceContext();

+	}

+

+	public int getNamespaceCount() {

+		return current.getNamespaceCount();

+	}

+

+	public String getNamespacePrefix(int arg0) {

+		return current.getNamespacePrefix(arg0);

+	}

+

+	public String getNamespaceURI() {

+		return current.getNamespaceURI();

+	}

+

+	public String getNamespaceURI(int arg0) {

+		return current.getNamespaceURI(arg0);

+	}

+

+	public String getNamespaceURI(String arg0) {

+		return current.getNamespaceURI(arg0);

+	}

+

+	public String getPIData() {

+		return current.getPIData();

+	}

+

+	public String getPITarget() {

+		return current.getPITarget();

+	}

+

+	public String getPrefix() {

+		return current.getPrefix();

+	}

+

+	public Object getProperty(String arg0) throws IllegalArgumentException {

+		return current.getProperty(arg0);

+	}

+

+	public String getText() {

+		return current.getText();

+	}

+

+	public char[] getTextCharacters() {

+		return current.getTextCharacters();

+	}

+

+	public int getTextCharacters(int arg0, char[] arg1, int arg2, int arg3) throws XMLStreamException {

+		return current.getTextCharacters(arg0, arg1, arg2, arg3);

+	}

+

+	public int getTextLength() {

+		return current.getTextLength();

+	}

+

+	public int getTextStart() {

+		return current.getTextStart();

+	}

+

+	public String getVersion() {

+		return current.getVersion();

+	}

+

+	public boolean hasName() {

+		return current.hasName();

+	}

+

+	public boolean hasNext() throws XMLStreamException {

+		// This code assumes that the stack only contains readers that are not consumed

+		if (!current.hasNext() &&

+			!stack.isEmpty()) {

+			return stack.peek().hasNext();

+		}

+		return current.hasNext();

+	}

+

+	public boolean hasText() {

+		return current.hasText();

+	}

+

+	public boolean isAttributeSpecified(int arg0) {

+		return current.isAttributeSpecified(arg0);

+	}

+

+	public boolean isCharacters() {

+		return current.isCharacters();

+	}

+

+	public boolean isEndElement() {

+		return current.isEndElement();

+	}

+

+	public boolean isStandalone() {

+		return current.isStandalone();

+	}

+

+	public boolean isStartElement() {

+		return current.isStartElement();

+	}

+

+	public boolean isWhiteSpace() {

+		return current.isWhiteSpace();

+	}

+

+	public int next() throws XMLStreamException {

+		// Only next is allowed to pop the stack

+		if (!current.hasNext() &&

+		    !stack.isEmpty()) {

+			current = stack.pop();

+		}

+		// The assumption is that the event on the stream reader was processed

+		// prior to pushing a new xmlstreamreader.  thus we proceed to the next

+		// event in all cases

+		int tag = current.next();

+		

+		// Skip start document and end document events for 

+		// stacked stream readers

+		if ((tag == this.START_DOCUMENT || 

+		    tag == this.END_DOCUMENT) &&

+		    !stack.isEmpty()) {

+			tag = next();

+		}

+		

+		return tag;

+	}

+

+	public int nextTag() throws XMLStreamException {

+		if (!current.hasNext() &&

+			!stack.isEmpty()) {

+			return stack.peek().nextTag();

+		}

+		return current.nextTag();

+	}

+

+	public void require(int arg0, String arg1, String arg2) throws XMLStreamException {

+		current.require(arg0, arg1, arg2);

+	}

+

+	public boolean standaloneSet() {

+		return current.standaloneSet();

+	}

+	

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/XMLStreamReaderFilter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/XMLStreamReaderFilter.java
new file mode 100644
index 0000000..6578657
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/XMLStreamReaderFilter.java
@@ -0,0 +1,222 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+import javax.xml.namespace.NamespaceContext;

+import javax.xml.namespace.QName;

+import javax.xml.stream.Location;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+/**

+ * XMLStreamReaderFilter

+ * Abstract class that simply delegates to the initial reader.

+ * This class is useful for building filters

+ */

+public abstract class XMLStreamReaderFilter implements XMLStreamReader {

+

+	protected XMLStreamReader delegate;

+	

+	/**

+	 * Construct a Filter 

+	 * @param reader XMLStreamReader that is filtered.

+	 */

+	public XMLStreamReaderFilter(XMLStreamReader reader) {

+		delegate = reader;

+	}

+

+	public void close() throws XMLStreamException {

+		delegate.close();

+	}

+

+	public int getAttributeCount() {

+		return delegate.getAttributeCount();

+	}

+

+	public String getAttributeLocalName(int arg0) {

+		return delegate.getAttributeLocalName(arg0);

+	}

+

+	public QName getAttributeName(int arg0) {

+		return delegate.getAttributeName(arg0);

+	}

+

+	public String getAttributeNamespace(int arg0) {

+		return delegate.getAttributeNamespace(arg0);

+	}

+

+	public String getAttributePrefix(int arg0) {

+		return delegate.getAttributePrefix(arg0);

+	}

+

+	public String getAttributeType(int arg0) {

+		return delegate.getAttributeType(arg0);

+	}

+

+	public String getAttributeValue(int arg0) {

+		return delegate.getAttributeValue(arg0);

+	}

+

+	public String getAttributeValue(String arg0, String arg1) {

+		return delegate.getAttributeValue(arg0, arg1);

+	}

+

+	public String getCharacterEncodingScheme() {

+		return delegate.getCharacterEncodingScheme();

+	}

+

+	public String getElementText() throws XMLStreamException {

+		return delegate.getElementText();

+	}

+

+	public String getEncoding() {

+		return delegate.getEncoding();

+	}

+

+	public int getEventType() {

+		return delegate.getEventType();

+	}

+

+	public String getLocalName() {

+		return delegate.getLocalName();

+	}

+

+	public Location getLocation() {

+		return delegate.getLocation();

+	}

+

+	public QName getName() {

+		return delegate.getName();

+	}

+

+	public NamespaceContext getNamespaceContext() {

+		return delegate.getNamespaceContext();

+	}

+

+	public int getNamespaceCount() {

+		return delegate.getNamespaceCount();

+	}

+

+	public String getNamespacePrefix(int arg0) {

+		return delegate.getNamespacePrefix(arg0);

+	}

+

+	public String getNamespaceURI() {

+		return delegate.getNamespaceURI();

+	}

+

+	public String getNamespaceURI(int arg0) {

+		return delegate.getNamespaceURI(arg0);

+	}

+

+	public String getNamespaceURI(String arg0) {

+		return delegate.getNamespaceURI(arg0);

+	}

+

+	public String getPIData() {

+		return delegate.getPIData();

+	}

+

+	public String getPITarget() {

+		return delegate.getPITarget();

+	}

+

+	public String getPrefix() {

+		return delegate.getPrefix();

+	}

+

+	public Object getProperty(String arg0) throws IllegalArgumentException {

+		return delegate.getProperty(arg0);

+	}

+

+	public String getText() {

+		return delegate.getText();

+	}

+

+	public char[] getTextCharacters() {

+		return delegate.getTextCharacters();

+	}

+

+	public int getTextCharacters(int arg0, char[] arg1, int arg2, int arg3) throws XMLStreamException {

+		return delegate.getTextCharacters(arg0, arg1, arg2, arg3);

+	}

+

+	public int getTextLength() {

+		return delegate.getTextLength();

+	}

+

+	public int getTextStart() {

+		return delegate.getTextStart();

+	}

+

+	public String getVersion() {

+		return delegate.getVersion();

+	}

+

+	public boolean hasName() {

+		return delegate.hasName();

+	}

+

+	public boolean hasNext() throws XMLStreamException {

+		return delegate.hasNext();

+	}

+

+	public boolean hasText() {

+		return delegate.hasText();

+	}

+

+	public boolean isAttributeSpecified(int arg0) {

+		return delegate.isAttributeSpecified(arg0);

+	}

+

+	public boolean isCharacters() {

+		return delegate.isCharacters();

+	}

+

+	public boolean isEndElement() {

+		return delegate.isEndElement();

+	}

+

+	public boolean isStandalone() {

+		return delegate.isStandalone();

+	}

+

+	public boolean isStartElement() {

+		return delegate.isStartElement();

+	}

+

+	public boolean isWhiteSpace() {

+		return delegate.isWhiteSpace();

+	}

+

+	public int next() throws XMLStreamException {

+		return delegate.next();

+	}

+

+	public int nextTag() throws XMLStreamException {

+		return delegate.nextTag();

+	}

+

+	public void require(int arg0, String arg1, String arg2) throws XMLStreamException {

+		delegate.require(arg0, arg1, arg2);

+	}

+

+	public boolean standaloneSet() {

+		return delegate.standaloneSet();

+	}

+

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/XMLStreamReaderSplitter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/XMLStreamReaderSplitter.java
new file mode 100644
index 0000000..a8a13fd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/XMLStreamReaderSplitter.java
@@ -0,0 +1,153 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util;

+

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+/**

+ * XMLStreamReaderSplitter

+ * An XMLStreamReaderSplitter wraps an existing XMLStreamReader and makes it 

+ * appear that the XMLStreamReader is for a single element tree.

+ * Once the element tree is consumed, the getNextReader method may be called to 

+ * get the next element tree.

+ * 

+ * For example, suppose the input xml is the following:

+ * 

+ * spurious text 1

+ * <data>

+ *   <a>a data</a>

+ *   <b>b data</b>

+ * </data>

+ * spurious text 2

+ * <data2>

+ *   <a2>a data</a2>

+ *   <b2>b data</b2>

+ * </data2>

+ * 

+ * The XMLStreamReaderSplitter will only return the events for:

+ * <data>

+ *   <a>a data</a>

+ *   <b>b data</b>

+ * </data>

+ * 

+ * Once these events are consumed, the nextStreamReader method can be called, which

+ * will return:

+ * <data2>

+ *   <a2>a data</a2>

+ *   <b2>b data</b2>

+ * </data2>

+ * 

+ * Note that the spurious text and comments between the elements are ignored.

+ * 

+ */

+public class XMLStreamReaderSplitter extends XMLStreamReaderFilter {

+

+	int depth = 0;

+	boolean start = true;

+	/**

+	 * Split the input reader into multiple element trees

+	 * @param reader XMLStreamReader

+	 */

+	public XMLStreamReaderSplitter(XMLStreamReader reader) {

+		super(reader);

+		init();

+	}

+	

+	/**

+	 * Reset for a new element tree

+	 */

+	private void init() {

+		depth = 0;

+		start = true;

+	}

+	

+	public int next() throws XMLStreamException {

+		// If starting a new tree, ignore all of the 

+		// events until the first start element is found.

+		if (start) {

+			start = false; 

+			depth = 1;

+			int event = super.next();

+			

+			while (event != START_ELEMENT) {

+				if (event == START_ELEMENT) {

+					return event;

+				} else if (this.hasNext()) {

+					event = super.next();

+				} else {

+					return event;

+				}

+			}	

+			return event;

+		} else {

+			// Processing a tree.  Adjust the 

+			// depth as the tags are encountered.

+			if (depth == 0) {

+				// Some consumers expect an END_DOCUMENT to end their processing (some consumers will trigger the end of processing using hasNext())

+				return END_DOCUMENT;

+			}

+			int event = super.next();

+			if (event == START_ELEMENT) {

+				depth++;

+			} else if (event == END_ELEMENT) {

+				depth--;

+			} 

+			return event;

+		}

+	}

+	

+	@Override

+	public boolean hasNext() throws XMLStreamException {

+		if (depth == 0) {

+			// If this element tree is consumed return false

+			if (start) {

+				return super.hasNext();

+			} else {

+				return false;

+			}

+		} else {

+			return super.hasNext();

+		}

+	}

+

+	

+	/**

+	 * getStreamReader

+	 * @return XMLStreamReader for the next element tree.

+	 * If the prior stream reader is not consumed, this method will return null.

+	 * (Use hasNext() to see if the prior stream reader is consumed)

+	 * @throws XMLStreamReader

+	 */

+	public XMLStreamReader getNextReader() throws XMLStreamException {

+		if (!hasNext()) {

+			init();

+			if (hasNext()) {

+				// Return newly initialized reader

+				return this;

+			} else {

+				// Return null indicating no reader is available

+				return null;

+			}

+		} else {

+			// Return null if the current reader is still be read

+			return null;

+		}

+			

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/NamespaceContextFromDOM.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/NamespaceContextFromDOM.java
new file mode 100644
index 0000000..11fb9aa
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/NamespaceContextFromDOM.java
@@ -0,0 +1,108 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util.impl;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+

+import javax.xml.namespace.NamespaceContext;

+

+import org.w3c.dom.Attr;

+import org.w3c.dom.Element;

+import org.w3c.dom.NamedNodeMap;

+import org.w3c.dom.Node;

+

+

+/**

+ * Namespace information available at the current scope.

+ * Utility class for XMLStreamReaderFromDOM

+ * @see org.apache.axis2.jaxws.message.util.impl.XMLStreamReaderFromDOM

+ */

+public class NamespaceContextFromDOM implements NamespaceContext {

+

+	private Element element;

+	/**

+	 * @param element representing the current scope

+	 */

+	NamespaceContextFromDOM(Element element) {

+		this.element = element;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.namespace.NamespaceContext#getPrefix(java.lang.String)

+	 */

+	public String getPrefix(String namespaceURI) {

+		return element.lookupPrefix(namespaceURI);

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.namespace.NamespaceContext#getPrefixes(java.lang.String)

+	 */

+	public Iterator getPrefixes(String namespaceURI) {

+		if (element instanceof javax.xml.soap.SOAPElement) {

+			Iterator it = ((javax.xml.soap.SOAPElement)element).getVisibleNamespacePrefixes();

+			ArrayList list = new ArrayList();

+			while (it.hasNext()) {

+				String prefix = (String) it.next();

+				if (getNamespaceURI(prefix).equals(namespaceURI)) {

+					if (prefix != null && prefix.length() == 0) {

+						prefix = null;

+					}

+					list.add(prefix);

+				}

+			}

+			return list.iterator();

+		} else {

+			ArrayList list = new ArrayList();

+			Node node = element;

+			while (node != null) {

+				if (node instanceof Element) {

+					// Walk the attributes looking for namespace declarations

+					NamedNodeMap attrs =((Element) node).getAttributes();

+					for (int i=0; i<attrs.getLength(); i++) {

+						Attr attr = (Attr) attrs.item(i);

+						if (attr.getNodeValue().equals(namespaceURI)) {

+							String name = attr.getNodeName();

+							

+							if (name.startsWith("xmlns")) {

+								String prefix = "";

+								if (name.startsWith("xmlns:")) {

+									prefix = name.substring(6);

+								}

+								// Found a namespace declaration with the prefix.

+								// Make sure this is not overridden by a declaration 

+								// in a closer scope.

+								if (!list.contains(prefix) &&

+										getNamespaceURI(prefix).equals(namespaceURI)) {

+									list.add(prefix);

+								}

+							}

+						}

+					}

+				}

+				// Pop up to the parent node

+				node = node.getParentNode();

+			}

+			return list.iterator();

+		}

+	}

+

+	public String getNamespaceURI(String prefix) {

+		return element.lookupNamespaceURI(prefix);

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterFactoryImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterFactoryImpl.java
new file mode 100644
index 0000000..8a448d9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterFactoryImpl.java
@@ -0,0 +1,45 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util.impl;

+

+import org.apache.axis2.jaxws.message.factory.SAAJConverterFactory;

+import org.apache.axis2.jaxws.message.util.SAAJConverter;

+

+/**

+ * SAAJConverterFactoryImpl

+ * Get the default SAAJConverter implementation.

+ * Obtain this factory from the FactoryRegistry

+ */

+public class SAAJConverterFactoryImpl implements SAAJConverterFactory {

+

+	SAAJConverterImpl converter = new SAAJConverterImpl();

+	

+	/**

+	 * Required for Factory instantiation

+	 */

+	public SAAJConverterFactoryImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.factory.SAAJConverterFactory#getSAAJConverter()

+	 */

+	public SAAJConverter getSAAJConverter() {

+		return converter;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java
new file mode 100644
index 0000000..ee030d8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java
@@ -0,0 +1,498 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util.impl;

+

+import java.lang.reflect.Method;

+import java.util.Iterator;

+

+import javax.xml.namespace.QName;

+import javax.xml.soap.Detail;

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.Name;

+import javax.xml.soap.SOAPBody;

+import javax.xml.soap.SOAPElement;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.soap.SOAPException;

+import javax.xml.soap.SOAPFactory;

+import javax.xml.soap.SOAPFault;

+import javax.xml.soap.SOAPHeader;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.soap.SOAPPart;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.util.SAAJConverter;

+import org.apache.axis2.jaxws.message.util.SOAPElementReader;

+

+/**

+ * SAAJConverterImpl

+ * Provides an conversion methods between OM<->SAAJ

+ */

+public class SAAJConverterImpl implements SAAJConverter {

+

+	private static final String SOAP11_ENV_NS = "http://schemas.xmlsoap.org/soap/envelope/";

+	private static final String SOAP12_ENV_NS = "http://www.w3.org/2003/05/soap-envelope";

+	

+	public static final String SOAP_1_1_PROTOCOL = "SOAP 1.1 Protocol"; 

+	public static final String SOAP_1_2_PROTOCOL = "SOAP 1.2 Protocol";

+	public static final String DYNAMIC_PROTOCOL  = "Dynamic Protocol"; 

+	

+	/**

+	 * Constructed via SAAJConverterFactory

+	 */

+	SAAJConverterImpl() {

+		super();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.util.SAAJConverter#toSAAJ(org.apache.axiom.soap.SOAPEnvelope)

+	 */

+	public SOAPEnvelope toSAAJ(org.apache.axiom.soap.SOAPEnvelope omEnvelope)

+			throws MessageException {

+		SOAPEnvelope soapEnvelope = null;

+		try {

+			// Build the default envelope

+			OMNamespace ns = omEnvelope.getNamespace();

+			MessageFactory mf = createMessageFactory(ns.getNamespaceURI());

+			SOAPMessage sm = mf.createMessage();

+			SOAPPart sp = sm.getSOAPPart();

+			soapEnvelope = sp.getEnvelope();

+			

+			// The getSOAPEnvelope() call creates a default SOAPEnvelope with a SOAPHeader and SOAPBody.

+			// The SOAPHeader and SOAPBody are removed (they will be added back in if they are present in the 

+			// OMEnvelope).

+			SOAPBody soapBody = soapEnvelope.getBody();

+			if (soapBody != null) {

+				soapBody.detachNode();

+			}

+			SOAPHeader soapHeader = soapEnvelope.getHeader();

+			if (soapHeader != null) {

+				soapHeader.detachNode();

+			}

+			

+			// We don't know if there is a real OM tree or just a backing XMLStreamReader.

+			// The best way to walk the data is to get the XMLStreamReader and use this 

+			// to build the SOAPElements

+			XMLStreamReader reader = omEnvelope.getXMLStreamReaderWithoutCaching();

+			

+			NameCreator nc = new NameCreator(soapEnvelope);

+			buildSOAPTree(nc, soapEnvelope, null, reader, false);

+		} catch (MessageException e) {

+			throw e;

+		} catch (SOAPException e) {

+			throw ExceptionFactory.makeMessageException(e);

+		}

+		return soapEnvelope;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.util.SAAJConverter#toOM(javax.xml.soap.SOAPEnvelope)

+	 */

+	public org.apache.axiom.soap.SOAPEnvelope toOM(SOAPEnvelope saajEnvelope)

+			throws MessageException {

+		// Get a XMLStreamReader backed by a SOAPElement tree

+		XMLStreamReader reader = new SOAPElementReader(saajEnvelope);

+		// Get a SOAP OM Builder.  Passing null causes the version to be automatically triggered

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(reader, null);  

+		// Create and return the OM Envelope

+		org.apache.axiom.soap.SOAPEnvelope omEnvelope = builder.getSOAPEnvelope();

+		return omEnvelope;

+	}

+	

+	

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.util.SAAJConverter#toOM(javax.xml.soap.SOAPElement)

+	 */

+	public OMElement toOM(SOAPElement soapElement) throws MessageException {

+		// Get a XMLStreamReader backed by a SOAPElement tree

+		XMLStreamReader reader = new SOAPElementReader(soapElement);

+		// Get a OM Builder.  Passing null causes the version to be automatically triggered

+		StAXOMBuilder builder = new StAXOMBuilder(reader);  

+		// Create and return the OM Envelope

+		OMElement om = builder.getDocumentElement();

+		return om;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.util.SAAJConverter#toSAAJ(org.apache.axiom.om.OMElement, javax.xml.soap.SOAPElement)

+	 */

+	public SOAPElement toSAAJ(OMElement omElement, SOAPElement parent) throws MessageException {

+		XMLStreamReader reader = null;

+		

+		// If the OM element is not attached to a parser (builder), then the OM

+		// is built and you cannot ask for XMLStreamReaderWithoutCaching.

+		// This is probably a bug in OM.  You should be able to ask the OM whether

+		// caching is supported.

+		if (omElement.getBuilder() == null) {

+			reader = omElement.getXMLStreamReader();

+		} else {

+			reader = omElement.getXMLStreamReaderWithoutCaching();

+		}

+		SOAPElement env = parent;

+		while (env != null && !(env instanceof SOAPEnvelope)) {

+			env = env.getParentElement();

+		}

+		if (env == null) {

+			throw ExceptionFactory.makeMessageException(Messages.getMessage("SAAJConverterErr1"));

+		}

+		NameCreator nc = new NameCreator((SOAPEnvelope) env);

+		return buildSOAPTree(nc, null, parent, reader, false);

+	}

+	

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.message.util.SAAJConverter#toSAAJ(org.apache.axiom.om.OMElement, javax.xml.soap.SOAPElement, javax.xml.soap.SOAPFactory)

+	 */

+	public SOAPElement toSAAJ(OMElement omElement, SOAPElement parent, SOAPFactory sf) throws MessageException {

+		XMLStreamReader reader = null;

+		

+		// If the OM element is not attached to a parser (builder), then the OM

+		// is built and you cannot ask for XMLStreamReaderWithoutCaching.

+		// This is probably a bug in OM.  You should be able to ask the OM whether

+		// caching is supported.

+		if (omElement.getBuilder() == null) {

+			reader = omElement.getXMLStreamReader();

+		} else {

+			reader = omElement.getXMLStreamReaderWithoutCaching();

+		}

+		NameCreator nc = new NameCreator(sf);

+		return buildSOAPTree(nc, null, parent, reader, false);

+	}

+

+	/**

+	 * Create MessageFactory using information from the envelope namespace 

+	 * @param namespace

+	 * @return

+	 */

+	public MessageFactory createMessageFactory(String namespace) throws MessageException, SOAPException {

+		Method m = getNewInstanceProtocolMethod();

+		MessageFactory mf = null;

+		if (m == null) {

+			if (namespace.equals(SOAP11_ENV_NS)) {

+				mf = MessageFactory.newInstance();

+			} else {

+				throw ExceptionFactory.makeMessageException(Messages.getMessage("SOAP12WithSAAJ12Err"));

+			}

+		} else {

+			String protocol = DYNAMIC_PROTOCOL;

+			if (namespace.equals(SOAP11_ENV_NS)) {

+				protocol = SOAP_1_1_PROTOCOL;

+			} else if (namespace.equals(SOAP12_ENV_NS)) {

+				protocol = SOAP_1_2_PROTOCOL;

+			} 

+			try {

+				mf = (MessageFactory) m.invoke(null, new Object[] {protocol});

+			} catch (Exception e) {

+				throw ExceptionFactory.makeMessageException(e);

+			}

+		}

+		return mf;

+	}

+	

+	private Method newInstanceProtocolMethod = null;

+	private Method getNewInstanceProtocolMethod() {

+		if (newInstanceProtocolMethod == null) {

+			try {

+				newInstanceProtocolMethod = MessageFactory.class.getMethod("newInstance", new Class[] {String.class});

+			} catch (Exception e) {

+				// TODO Might want to log this.

+				// Flow to here indicates that the installed SAAJ model does not support version 1.3

+				newInstanceProtocolMethod = null;

+			}

+		}

+		return newInstanceProtocolMethod;

+	}

+	

+	/**

+	 * Build SOAPTree

+	 * Either the root or the parent is null.

+	 * If the root is null, a new element is created under the parent using information from the reader

+	 * If the parent is null, the existing root is updated with the information from the reader

+	 * @param nc NameCreator

+	 * @param root SOAPElement (the element that represents the data in the reader)

+	 * @param parent (the parent of the element represented by the reader)

+	 * @param reader XMLStreamReader. the first START_ELEMENT matches the root

+	 * @param quitAtBody - true if quit reading after the body START_ELEMENT

+	 */

+	protected SOAPElement buildSOAPTree(NameCreator nc, 

+					SOAPElement root, 

+					SOAPElement parent, 

+					XMLStreamReader reader, 

+					boolean quitAtBody) 

+		throws MessageException {

+		try {

+			while(reader.hasNext()) {

+				int eventID = reader.next();	

+				switch (eventID) {

+				case XMLStreamReader.START_ELEMENT: {

+					

+					// The first START_ELEMENT defines the prefix and attributes of the root

+					if (parent == null) {

+						updateTagData(nc, root, reader);

+						parent = root;

+					} else {

+						parent = createElementFromTag(nc, parent, reader);

+						if (root == null) {

+							root = parent;

+						}

+					}

+					if (quitAtBody && parent instanceof SOAPBody) {

+						return root;

+					}

+					break;

+				}

+				case XMLStreamReader.ATTRIBUTE: {

+					String eventName ="ATTRIBUTE";

+					this._unexpectedEvent(eventName);

+				}

+				case XMLStreamReader.NAMESPACE: {

+					String eventName ="NAMESPACE";

+					this._unexpectedEvent(eventName);

+				}

+				case XMLStreamReader.END_ELEMENT: {

+					if (parent instanceof SOAPEnvelope) {

+						parent = null;

+					} else {

+						parent = parent.getParentElement();

+					}

+					break;

+				}

+				case XMLStreamReader.CHARACTERS: {

+					parent.addTextNode(reader.getText());

+					break;

+				}

+				case XMLStreamReader.CDATA: {

+					parent.addTextNode(reader.getText());

+					break;

+				}

+				case XMLStreamReader.COMMENT: {

+					// SOAP really doesn't have an adequate representation for comments.

+					// The defacto standard is to add the whole element as a text node.

+					parent.addTextNode("<!--" + reader.getText() + "-->");

+					break;

+				}

+				case XMLStreamReader.SPACE: {

+					parent.addTextNode(reader.getText());

+					break;

+				}

+				case XMLStreamReader.START_DOCUMENT: {

+					// Ignore

+					break;

+				}

+				case XMLStreamReader.END_DOCUMENT: {

+					// Ignore

+					break;

+				}

+				case XMLStreamReader.PROCESSING_INSTRUCTION: {

+					// Ignore 

+					break;

+				}

+				case XMLStreamReader.ENTITY_REFERENCE: {

+					// Ignore. this is unexpected in a web service message

+					break;

+				}

+				case XMLStreamReader.DTD: {

+					// Ignore. this is unexpected in a web service message

+					break;

+				}

+				default:

+					this._unexpectedEvent("EventID " +String.valueOf(eventID));

+				}

+			}	

+		} catch (MessageException e) {

+			throw e;

+		} catch (XMLStreamException e) {

+			throw ExceptionFactory.makeMessageException(e);

+		} catch (SOAPException e) {

+			throw ExceptionFactory.makeMessageException(e);

+		}

+		return root;

+	}

+	

+	/**

+	 * Create SOAPElement from the current tag data

+	 * @param nc NameCreator

+	 * @param parent SOAPElement for the new SOAPElement

+	 * @param reader XMLStreamReader whose cursor is at the START_ELEMENT

+	 * @return

+	 */

+	protected SOAPElement createElementFromTag(NameCreator nc, 

+					SOAPElement parent, 

+					XMLStreamReader reader) 

+		throws SOAPException {

+		// Unfortunately, the SAAJ object is a product of both the 

+		// QName of the element and the parent object.  For example, 

+		// All element children of a SOAPBody must be object's that are SOAPBodyElements.

+		// createElement creates the proper child element.

+		QName qName = reader.getName();

+		String prefix = reader.getPrefix();

+		Name name = nc.createName(qName.getLocalPart(), prefix, qName.getNamespaceURI());

+		SOAPElement child = createElement(parent, name);

+		

+		// Update the tag data on the child

+		updateTagData(nc, child, reader);

+		return child;

+	}

+	

+	/**

+	 * Create child SOAPElement 

+	 * @param parent SOAPElement

+	 * @param name Name

+	 * @return

+	 */

+	protected SOAPElement createElement(SOAPElement parent, Name name) 

+		throws SOAPException {

+		SOAPElement child;

+		if (parent instanceof SOAPEnvelope) {

+			if (name.getURI().equals(parent.getNamespaceURI())) {

+				if (name.getLocalName().equals("Body")) {

+					child = ((SOAPEnvelope)parent).addBody();

+				} else {

+					child = ((SOAPEnvelope)parent).addHeader();

+				}

+			} else {

+				child = parent.addChildElement(name);

+			}

+		} else if (parent instanceof SOAPBody) {

+			if (name.getURI().equals(parent.getNamespaceURI()) &&

+			    name.getLocalName().equals("Fault")) {

+				child = ((SOAPBody)parent).addFault();

+			} else {

+				child = ((SOAPBody)parent).addBodyElement(name);

+			}

+		} else if (parent instanceof SOAPHeader) {

+			child = ((SOAPHeader)parent).addHeaderElement(name);

+		} else if (parent instanceof SOAPFault) {

+			// This call assumes that the addChildElement implementation

+			// is smart enough to add "Detail" or "SOAPFaultElement" objects.

+			child = parent.addChildElement(name);

+		} else if (parent instanceof Detail) {

+			child = ((Detail) parent).addDetailEntry(name); 

+		} else {

+			child = parent.addChildElement(name);

+		}

+	

+		return child;

+	}

+	

+	/**

+	 * update the tag data of the SOAPElement

+	 * @param NameCreator nc

+	 * @param element SOAPElement

+	 * @param reader XMLStreamReader whose cursor is at START_ELEMENT

+	 */

+	protected void updateTagData(NameCreator nc, 

+			SOAPElement element, 

+			XMLStreamReader reader) throws SOAPException {

+		String prefix = reader.getPrefix();

+		prefix = (prefix == null) ? "" : prefix;

+		

+		// Make sure the prefix is correct

+		if (prefix.length() > 0 && !element.getPrefix().equals(prefix)) {

+			element.setPrefix(prefix);

+		}

+		

+		//Remove all of the namespace declarations on the element

+		Iterator it = element.getNamespacePrefixes();

+		while (it.hasNext()) {

+			String aPrefix = (String)it.next();

+			element.removeNamespaceDeclaration(aPrefix);

+		}

+		

+		// Add the namespace declarations from the reader

+		int size = reader.getNamespaceCount();

+		for (int i=0; i<size; i++) {

+			element.addNamespaceDeclaration(reader.getNamespacePrefix(i), reader.getNamespaceURI(i));

+		}

+		

+		// Add attributes 

+		addAttributes(nc, element, reader);

+		

+		return;

+	}

+	

+	/** add attributes

+	 * @param NameCreator nc

+	 * @param element SOAPElement which is the target of the new attributes

+	 * @param reader XMLStreamReader whose cursor is at START_ELEMENT

+	 * @throws SOAPException

+	 */

+	protected void addAttributes(NameCreator nc, 

+			SOAPElement element, 

+			XMLStreamReader reader) throws SOAPException {

+		

+		// Add the attributes from the reader

+		int size = reader.getAttributeCount();

+		for (int i=0; i<size; i++) {

+			QName qName = reader.getAttributeName(i);

+			String prefix = reader.getAttributePrefix(i);

+			String value = reader.getAttributeValue(i);

+			Name name = nc.createName(qName.getLocalPart(), prefix, qName.getNamespaceURI());

+			element.addAttribute(name, value);

+		}

+	}

+	

+	private void _unexpectedEvent(String event) throws MessageException {

+		// Review We need NLS for this message, but this code will probably 

+		// be added to JAX-WS.  So for now we there is no NLS.

+		// TODO NLS

+		throw ExceptionFactory.makeMessageException(Messages.getMessage("SAAJConverterErr2", event));

+	}

+	

+	/**

+	 * A Name can be created from either a SOAPEnvelope or SOAPFactory.

+	 * Either one or the other is available when the converter is called. 

+	 * NameCreator provides a level of abstraction which simplifies the code.

+	 */

+	protected class NameCreator {

+		private SOAPEnvelope env = null;

+		private SOAPFactory sf = null;

+		

+		public NameCreator(SOAPEnvelope env) {

+			this.env = env;

+		}

+		

+		public NameCreator(SOAPFactory sf) {

+			this.sf = sf;

+		}

+		

+		/**

+		 * Creates a Name

+		 * @param localName

+		 * @param prefix

+		 * @param uri

+		 * @return Name

+		 */

+		public Name createName(String localName, String prefix, String uri)

+			throws SOAPException{

+			if (sf != null) {

+				return sf.createName(localName, prefix, uri);

+			} else {

+				return env.createName(localName, prefix, uri);

+			}

+		}

+		

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/XMLStreamReaderFromDOM.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/XMLStreamReaderFromDOM.java
new file mode 100644
index 0000000..6d65860
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/XMLStreamReaderFromDOM.java
@@ -0,0 +1,727 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message.util.impl;

+

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Stack;

+import java.util.StringTokenizer;

+

+import javax.xml.namespace.NamespaceContext;

+import javax.xml.namespace.QName;

+import javax.xml.stream.Location;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.w3c.dom.Attr;

+import org.w3c.dom.CDATASection;

+import org.w3c.dom.CharacterData;

+import org.w3c.dom.Comment;

+import org.w3c.dom.Document;

+import org.w3c.dom.DocumentType;

+import org.w3c.dom.Element;

+import org.w3c.dom.EntityReference;

+import org.w3c.dom.NamedNodeMap;

+import org.w3c.dom.Node;

+import org.w3c.dom.ProcessingInstruction;

+import org.w3c.dom.Text;

+

+/**

+ * XMLStreamReader created from walking a DOM.

+ * This is an implementation class used by SOAPElementReader.

+ * @see org.apache.axis2.jaxws.util.SOAPElementReader

+ */

+public class XMLStreamReaderFromDOM implements XMLStreamReader {

+

+	private Node cursor;

+	private Stack<Node> nextCursorStack = new Stack<Node>();

+	private Node root;

+	private int event = XMLStreamReader.START_DOCUMENT;

+	private Node nextCursor = null;

+	private int nextEvent = -1;

+	

+	private NamespaceContextFromDOM cacheNCI = null;

+	private Element              cacheNCIKey = null;

+	

+	private List                 cacheND = null;

+	private Element              cacheNDKey = null;

+	

+	

+	/**

+	 * Create the XMLStreamReader with an Envelope 

+	 * @param envelope Element (probably an SAAJ SOAPEnvelope) representing the Envelope

+	 */

+	public XMLStreamReaderFromDOM(Element envelope) {

+		root = envelope;

+		cursor = root;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getProperty(java.lang.String)

+	 */

+	public Object getProperty(String key) throws IllegalArgumentException {

+		if (key == null) {

+			throw new IllegalArgumentException(Messages.getMessage("XMLSRErr1"));

+		}

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#next()

+	 */

+	public int next() throws XMLStreamException {

+		if (!hasNext()) {

+			throw new XMLStreamException(Messages.getMessage("XMLSRErr"));

+		}

+		getNext();

+		cursor = nextCursor;

+		event = nextEvent;

+		return event;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#require(int, java.lang.String, java.lang.String)

+	 */

+	public void require(int event, String namespace, String localPart)

+			throws XMLStreamException {

+		try {

+			if (event != this.event) {

+				throw new XMLStreamException(Messages.getMessage("XMLSRErr3", String.valueOf(event), String.valueOf(this.event)));

+			}

+			if (namespace != null && 

+				!namespace.equals(cursor.getNamespaceURI())) {

+				throw new XMLStreamException(Messages.getMessage("XMLSRErr3", namespace, this.cursor.getNamespaceURI()));

+			}

+			if (localPart != null &&

+	            !localPart.equals(cursor.getLocalName())) {

+				throw new XMLStreamException(Messages.getMessage("XMLSRErr3", localPart ,this.cursor.getLocalName()));

+			}

+		} catch (XMLStreamException e) {

+			throw e;

+		} catch (Exception e) {

+			throw new XMLStreamException(e);

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getElementText()

+	 */

+	public String getElementText() throws XMLStreamException {

+		if (event == XMLStreamReader.START_ELEMENT) {

+			 next();

+			 StringBuffer buffer = new StringBuffer();

+			 while(event != XMLStreamReader.END_ELEMENT ) {

+				 if (event == XMLStreamReader.CHARACTERS ||

+					 event == XMLStreamReader.CDATA ||

+				     event == XMLStreamReader.SPACE ||

+				     event == XMLStreamReader.ENTITY_REFERENCE) {

+					 buffer.append(getText());

+			     } else if (event == XMLStreamReader.PROCESSING_INSTRUCTION ||

+					    event == XMLStreamReader.COMMENT) {

+			     	 // whitespace

+			     } else {

+			    	 throw new XMLStreamException(Messages.getMessage("XMLSRErr4","getElementText()"));

+			     }

+			     next();

+			 }

+			 return buffer.toString();

+		} 

+		throw new XMLStreamException(Messages.getMessage("XMLSRErr4","getElementText()"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#nextTag()

+	 */

+	public int nextTag() throws XMLStreamException {

+		next();

+		while(event == XMLStreamReader.CHARACTERS && isWhiteSpace() ||

+			  event == XMLStreamReader.CDATA && isWhiteSpace() ||

+			  event == XMLStreamReader.SPACE ||

+			  event == XMLStreamReader.PROCESSING_INSTRUCTION ||

+			  event == XMLStreamReader.COMMENT) {

+			event = next();

+		}

+		if (event == XMLStreamReader.START_ELEMENT ||

+		    event == XMLStreamReader.END_ELEMENT) {

+			return event;

+		} 

+		throw new XMLStreamException(Messages.getMessage("XMLSRErr4","nextTag()"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#hasNext()

+	 */

+	public boolean hasNext() throws XMLStreamException {

+		return (event != XMLStreamReader.END_DOCUMENT);

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#close()

+	 */

+	public void close() throws XMLStreamException {

+		return;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getNamespaceURI(java.lang.String)

+	 */

+	public String getNamespaceURI(String prefix) {

+		if (cursor instanceof Element) {

+			return getNamespaceContext().getNamespaceURI(prefix);

+		}

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4","getNamespaceURI(String)"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#isStartElement()

+	 */

+	public boolean isStartElement() {

+		return (event == XMLStreamReader.START_ELEMENT);

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#isEndElement()

+	 */

+	public boolean isEndElement() {

+		return (event == XMLStreamReader.END_ELEMENT);

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#isCharacters()

+	 */

+	public boolean isCharacters() {

+		return (event == XMLStreamReader.CHARACTERS);

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#isWhiteSpace()

+	 */

+	public boolean isWhiteSpace() {

+		if (event == XMLStreamReader.CHARACTERS ||

+		    event == XMLStreamReader.CDATA) {

+			String value = ((CharacterData) cursor).getData();

+			StringTokenizer st = new StringTokenizer(value);

+			return !(st.hasMoreTokens());

+		}

+		return false;

+	}

+	

+	/**

+	 * @return list of attributes that are not namespace declarations

+	 */

+	private List getAttributes() {

+		if (event == XMLStreamReader.START_ELEMENT) {

+			List attrs = new ArrayList();

+			NamedNodeMap map = ((Element) cursor).getAttributes();

+			if (map != null) {

+				for (int i=0; i<map.getLength(); i++) {

+					Attr attr = (Attr) map.item(i);

+					if (attr.getName().equals("xmlns") ||

+							attr.getName().startsWith("xmlns:")) {

+						// this is a namespace declaration

+					} else {

+						attrs.add(attr);

+					}

+				}

+			}

+			return attrs;

+		}

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4", "getAttributes()"));

+	}

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getAttributeValue(java.lang.String, java.lang.String)

+	 */

+	public String getAttributeValue(String namespace, String localPart) {

+		if (event == XMLStreamReader.START_ELEMENT) {

+			return ((Element)cursor).getAttributeNS(namespace, localPart);

+		} 

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4","getAttributeValue(String, String)"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getAttributeCount()

+	 */

+	public int getAttributeCount() {

+		return getAttributes().size();

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getAttributeName(int)

+	 */

+	public QName getAttributeName(int index) {

+		Attr attr = (Attr) getAttributes().get(index);

+		return new QName(attr.getNamespaceURI(), attr.getLocalName());

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getAttributeNamespace(int)

+	 */

+	public String getAttributeNamespace(int index) {

+		Attr attr = (Attr) getAttributes().get(index);

+		return attr.getNamespaceURI();

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getAttributeLocalName(int)

+	 */

+	public String getAttributeLocalName(int index) {

+		Attr attr = (Attr) getAttributes().get(index);

+		return attr.getLocalName();

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getAttributePrefix(int)

+	 */

+	public String getAttributePrefix(int index) {

+		Attr attr = (Attr) getAttributes().get(index);

+		return attr.getPrefix();

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getAttributeType(int)

+	 */

+	public String getAttributeType(int index) {

+		Attr attr = (Attr) getAttributes().get(index);

+		return attr.getSchemaTypeInfo().getTypeName();

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getAttributeValue(int)

+	 */

+	public String getAttributeValue(int index) {

+		Attr attr = (Attr) getAttributes().get(index);

+		return attr.getValue();

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#isAttributeSpecified(int)

+	 */

+	public boolean isAttributeSpecified(int arg0) {

+		return true;

+	}

+

+	/* 

+	 * @return number of namespace declarations on this element

+	 */

+	public int getNamespaceCount() {

+		if (cursor instanceof Element) {

+			List list = getNamespaceDeclarations();

+			return list.size();

+		}

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4","getNamespaceCount()"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getNamespacePrefix(int)

+	 */

+	public String getNamespacePrefix(int index) {

+		if (cursor instanceof Element) {

+			List list = getNamespaceDeclarations();

+			return ((NamespaceDeclare) list.get(index)).getPrefix();

+		}

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4", "getNamespacePrefix(int)"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getNamespaceURI(int)

+	 */

+	public String getNamespaceURI(int index) {

+		if (cursor instanceof Element) {

+			List list = getNamespaceDeclarations();

+			return ((NamespaceDeclare) list.get(index)).getURI();

+		}

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4","getNamespaceURI(int)"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getNamespaceContext()

+	 */

+	public NamespaceContext getNamespaceContext() {

+		Element element = null;

+		if (cursor instanceof Element) {

+			element = (Element) cursor;

+		} else {

+			Element parent = (Element) cursor.getParentNode();

+			if (parent == null) {

+				parent = (Element) nextCursorStack.peek();

+			}

+			element = (Element) cursor.getParentNode();

+		}

+		if (element == cacheNCIKey) {

+			return cacheNCI;

+		}

+		cacheNCIKey = element;

+		cacheNCI = new NamespaceContextFromDOM(element);

+		return cacheNCI;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getEventType()

+	 */

+	public int getEventType() {

+		return event;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getText()

+	 */

+	public String getText() {

+		if (event == XMLStreamReader.CHARACTERS ||

+		    event == XMLStreamReader.CDATA ||

+		    event == XMLStreamReader.COMMENT) {

+			return ((CharacterData) cursor).getData();

+		}

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4","getText()"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getTextCharacters()

+	 */

+	public char[] getTextCharacters() {

+		return getText().toCharArray();

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getTextCharacters(int, char[], int, int)

+	 */

+	public int getTextCharacters(int sourceStart, char[] target, int targetStart, int length)

+			throws XMLStreamException {

+		String value = getText();

+		// Calculate the sourceEnd index

+		int sourceEnd = sourceStart + length;

+		if (value.length() < sourceEnd) {

+			sourceEnd = value.length();

+		}

+		value.getChars(sourceStart, sourceEnd, target, targetStart);

+		return sourceEnd - sourceStart;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getTextStart()

+	 */

+	public int getTextStart() {

+		return 0;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getTextLength()

+	 */

+	public int getTextLength() {

+		return getText().length();

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getEncoding()

+	 */

+	public String getEncoding() {

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#hasText()

+	 */

+	public boolean hasText() {

+		return (event == XMLStreamReader.CHARACTERS ||

+			   	event == XMLStreamReader.CDATA ||

+			   	event == XMLStreamReader.COMMENT);

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getLocation()

+	 */

+	public Location getLocation() {

+		return dummyLocation;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getName()

+	 */

+	public QName getName() {

+		if (cursor instanceof Element) {

+			return new QName(cursor.getNamespaceURI(), cursor.getLocalName());

+		}

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4","getName()"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getLocalName()

+	 */

+	public String getLocalName() {

+		if (cursor instanceof Element) {

+			return cursor.getLocalName();

+		}

+		throw new IllegalStateException(Messages.getMessage("XMLSRErr4","getLocalName()"));

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#hasName()

+	 */

+	public boolean hasName() {

+		return (isStartElement() || isEndElement());

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getNamespaceURI()

+	 */

+	public String getNamespaceURI() {

+		if (cursor instanceof Element) {

+			return cursor.getNamespaceURI();

+		} else {

+			return null;

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getPrefix()

+	 */

+	public String getPrefix() {

+		if (cursor instanceof Element) {

+			return cursor.getPrefix();

+		} else {

+			return null;

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getVersion()

+	 */

+	public String getVersion() {

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#isStandalone()

+	 */

+	public boolean isStandalone() {

+		return false;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#standaloneSet()

+	 */

+	public boolean standaloneSet() {

+		return false;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getCharacterEncodingScheme()

+	 */

+	public String getCharacterEncodingScheme() {

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getPITarget()

+	 */

+	public String getPITarget() {

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.stream.XMLStreamReader#getPIData()

+	 */

+	public String getPIData() {

+		return null;

+	}

+

+	/**

+	 * Sets nextCursor and nextEvent from 

+	 * using the current cursor and event.

+	 */

+	private void getNext() throws IllegalStateException {

+		switch (event) {

+		case XMLStreamReader.START_DOCUMENT: {

+			nextCursor = cursor;

+			nextEvent = XMLStreamReader.START_ELEMENT;

+			break;

+		}

+			

+		case XMLStreamReader.START_ELEMENT: {

+			if (cursor.getFirstChild() != null) {

+				nextCursorStack.push(nextCursor);

+				nextCursor = cursor.getFirstChild();

+				nextEvent = startEvent(nextCursor);

+			} else {

+				nextEvent = XMLStreamReader.END_ELEMENT;

+			}

+			break;

+		}

+		case XMLStreamReader.ATTRIBUTE: {

+			throw new IllegalStateException(Messages.getMessage("XMLSRErr5","ATTRIBUTE"));

+		}

+		case XMLStreamReader.NAMESPACE: {

+			throw new IllegalStateException(Messages.getMessage("XMLSRErr5","NAMESPACE"));

+		}

+		case XMLStreamReader.END_ELEMENT: 

+		case XMLStreamReader.CHARACTERS:

+		case XMLStreamReader.CDATA:

+		case XMLStreamReader.COMMENT:

+		case XMLStreamReader.SPACE:

+		case XMLStreamReader.PROCESSING_INSTRUCTION:

+		case XMLStreamReader.ENTITY_REFERENCE:

+		case XMLStreamReader.DTD:

+		{

+			if (cursor.getNextSibling() != null) {

+				nextCursor = cursor.getNextSibling();

+				nextEvent = startEvent(nextCursor);

+			} else if (cursor == root) {

+				nextEvent = XMLStreamReader.END_DOCUMENT;

+			} else {

+				// The following does not work with 

+				// Axiom Text nodes

+				// nextCursor = cursor.getParentNode();

+				// This is the reason why a stack is used.

+				nextCursor = nextCursorStack.pop();

+

+				nextEvent = XMLStreamReader.END_ELEMENT;

+			}

+			break;

+		}

+		

+		case XMLStreamReader.END_DOCUMENT: {

+			nextCursor = null;

+			nextEvent = -1;

+		}

+		default:	

+			throw new IllegalStateException(Messages.getMessage("XMLSRErr5", String.valueOf(event)));

+		}

+		

+	}

+	

+	/**

+	 * Returns the start event for this particular node

+	 * @param node

+	 * @return

+	 */

+	private int startEvent(Node node) {

+		if (node instanceof ProcessingInstruction) {

+			return XMLStreamReader.PROCESSING_INSTRUCTION;

+		} 

+		if (node instanceof CDATASection) {

+			return XMLStreamReader.CDATA;

+		}

+		if (node instanceof Comment) {

+			return XMLStreamReader.COMMENT;

+		}

+		if (node instanceof Text) {

+			if (node instanceof javax.xml.soap.Text) {

+				javax.xml.soap.Text soapText = (javax.xml.soap.Text) node;

+				if (soapText.isComment()) {

+					return XMLStreamReader.COMMENT;

+				} else {

+					return XMLStreamReader.CHARACTERS;

+				}

+			}

+			return XMLStreamReader.CHARACTERS;

+		}

+		if (node instanceof Element) {

+			return XMLStreamReader.START_ELEMENT;

+		}

+		if (node instanceof Attr) {

+			return XMLStreamReader.ATTRIBUTE;

+		}

+		if (node instanceof Document) {

+			return XMLStreamReader.START_DOCUMENT;

+		}

+		if (node instanceof EntityReference) {

+			return XMLStreamReader.ENTITY_REFERENCE;

+		}

+		if (node instanceof DocumentType) {

+			return XMLStreamReader.DTD;

+		}

+		return -1;

+	}

+	

+	// This is the definition of a dummy Location

+	private DummyLocation dummyLocation = new DummyLocation();

+	private class DummyLocation implements Location {

+

+		public int getLineNumber() {

+			return -1;

+		}

+

+		public int getColumnNumber() {

+			return 0;

+		}

+

+		public int getCharacterOffset() {

+			return 0;

+		}

+

+		public String getPublicId() {

+			return null;

+		}

+

+		public String getSystemId() {

+			return null;

+		}

+		

+	}

+	

+	public List getNamespaceDeclarations() {

+		Element element = null;

+		if (cursor instanceof Element) {

+			element = (Element) cursor;

+		} else {

+			return new ArrayList();

+		}

+		if (element == cacheNDKey) {

+			return cacheND;

+		}

+		cacheNDKey = element;

+		cacheND = new ArrayList();

+		NamedNodeMap attrs = element.getAttributes();

+		if (attrs != null) {

+			for (int i=0; i<attrs.getLength(); i++) {

+				Attr attr = (Attr) attrs.item(i);

+				String name = attr.getNodeName();

+				if (name.startsWith("xmlns")) {

+					String prefix = "";

+					if (name.startsWith("xmlns:")) {

+						prefix = name.substring(6);

+					}

+					NamespaceDeclare nd = new NamespaceDeclare(prefix, attr.getNodeValue());

+					cacheND.add(nd);

+				}

+			}

+		}

+		return cacheND;

+	}

+	

+	class NamespaceDeclare {

+		String prefix;

+		String uri;

+		NamespaceDeclare(String prefix, String uri) {

+			this.prefix = prefix;

+			this.uri = uri;

+		}

+		String getPrefix() {

+			return prefix;

+		}

+		String getURI() {

+			return uri;

+		}

+	}

+	

+	Node getNode() {

+		return cursor;

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/DOMSourceParameter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/DOMSourceParameter.java
new file mode 100644
index 0000000..eaafd1b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/DOMSourceParameter.java
@@ -0,0 +1,108 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.io.InputStream;

+

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.transform.Result;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.ws.WebServiceException;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.w3c.dom.Document;

+

+public class DOMSourceParameter extends SourceParameter {

+

+    public DOMSourceParameter() {

+        //do nothing

+    }

+    

+    public DOMSourceParameter(DOMSource value){

+		this.value = value;

+	}

+	

+	/**

+     * This is a temporary implementation to get around a bug

+     * in the Woodstox parser.

+	 */

+    public XMLStreamReader getValueAsStreamReader() {

+        if (value != null) {

+            try {

+                //TODO: This is not the correct way to do this and we

+                //should be able to use the method implemetation from the super class.

+                //There is a bug in the Woodstox parser that causes the super's impl to

+                //hang.  We need this to be able to support DOMSource until we have a

+                //fix for that bug.

+                ByteArrayOutputStream out = new ByteArrayOutputStream();

+                Result result = new StreamResult(out);

+                Transformer transformer =  TransformerFactory.newInstance().newTransformer();

+                transformer.transform(value, result);

+                

+                ByteArrayInputStream bytes = new ByteArrayInputStream(out.toByteArray());

+                XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(bytes);

+                return reader;

+            } catch (Exception e) {

+                //TODO: Add proper error handling

+                e.printStackTrace();

+            }            

+        }

+        else {

+            throw new WebServiceException("Cannot create XMLStreamReader from null value");

+        }

+        

+        return null;

+    }

+    

+	public OMElement toOMElement() {

+		try{

+	        StAXOMBuilder builder =

+	            new StAXOMBuilder(OMAbstractFactory.getOMFactory(), getValueAsStreamReader()); 

+			return builder.getDocumentElement();

+		}catch(Exception e){

+			throw new WebServiceException(e.getMessage());

+		}		

+	}

+

+	public void fromOM(OMElement omElement) {

+		if(omElement != null){

+            try{

+                ByteArrayOutputStream output = new ByteArrayOutputStream();

+                omElement.serialize(output);

+                InputStream input = new ByteArrayInputStream(output.toByteArray());

+                DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();

+                DocumentBuilder domBuilder = domFactory.newDocumentBuilder();

+                

+                Document domTree = domBuilder.parse(input);

+                value = new DOMSource(domTree);

+            }catch(Exception e){

+                throw new WebServiceException(e.getMessage());

+            }

+		}

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/JAXBParameter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/JAXBParameter.java
new file mode 100644
index 0000000..bd1cbdd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/JAXBParameter.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws.param;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.Service.Mode;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.soap.SOAPEnvelope;
+
+/**
+ * Parameter implementation for JAX-B objects. *
+ */
+public class JAXBParameter implements Parameter {
+	
+    private Object value;
+    private JAXBContext context;
+    private Marshaller marshaller;
+    private Unmarshaller unmarshaller;
+	
+    public JAXBParameter() {}
+    
+    public JAXBParameter(Object value){
+		this.value = value;
+	}
+	
+	public Object getValue() {
+		return value;
+	}
+
+	public void setValue(Object o) {
+		value = o;
+	}
+    
+    public JAXBContext getJAXBContext() {
+        return context;
+    }
+    
+    public void setJAXBContext(JAXBContext ctx) {
+        context = ctx;
+    }
+    
+    public XMLStreamReader getValueAsStreamReader() {
+        createMarshaller();
+        
+        try {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            marshaller.marshal(value, baos);
+            
+            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+            XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(bais);
+            return reader;
+        } catch (Exception e) {
+            //TODO: Add proper error handling
+            e.printStackTrace();
+        }
+        
+        return null;
+    }
+
+	public OMElement toOMElement() {
+        try {
+            StAXOMBuilder builder = new StAXOMBuilder(
+                    OMAbstractFactory.getOMFactory(),
+                    getValueAsStreamReader());
+            OMElement documentElement = builder.getDocumentElement();
+            return documentElement;
+        } catch (Exception e) {
+            //TODO: Add proper error handling
+            e.printStackTrace();
+        }
+		       
+        return null;
+	}
+
+	public void fromOM(OMElement omElement) {
+		createUnmarshaller();
+        
+        String omString = omElement.toString();
+        System.out.println(">> [OMSTRING] " + omString);
+        
+        try {
+            ByteArrayInputStream bais = new ByteArrayInputStream(omString.getBytes());
+            value = unmarshaller.unmarshal(bais);
+            
+        } catch (JAXBException e) {
+            e.printStackTrace();
+        }
+	}
+
+	public SOAPEnvelope toEnvelope(Mode mode,String soapVersionURI) {
+	    return ParameterUtils.toEnvelope(mode, soapVersionURI, this);
+	}
+
+	public void fromEnvelope(Mode mode, SOAPEnvelope env) {
+		ParameterUtils.fromEnvelope(mode, env, this);
+	}
+    
+    /*
+     * Setup the Marshaller for serialization
+     */
+    private void createMarshaller() {
+        if (context != null) {
+            try {
+                marshaller = context.createMarshaller();
+                marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+                
+            } catch (JAXBException e) {
+                throw new WebServiceException("Error creating Marshaller from JAXBContext");
+            }
+        }
+        else {
+            throw new WebServiceException("Cannot create Marshaller from null JAXBContext");
+        }
+    }
+    
+    /*
+     * Setup the Unmarshaller for deserialization  
+     */
+    private void createUnmarshaller() {
+        if (unmarshaller != null)
+            return;
+        
+        if (context != null) {
+            try {
+                unmarshaller = context.createUnmarshaller();
+            } catch (JAXBException e) {
+                throw new WebServiceException("Error creating Unmarshaller from JAXBContext");
+            }
+        }
+        else {
+            throw new WebServiceException("Cannot create Unmarshaller from null JAXBContext");
+        }
+    }
+}
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/Parameter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/Parameter.java
new file mode 100644
index 0000000..0260c2e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/Parameter.java
@@ -0,0 +1,81 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+

+

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPEnvelope;

+

+public interface Parameter {

+    

+    /**

+     * Returns the value object that is being handled by this Parameter

+     * instance.

+     */

+    public Object getValue();

+    

+    /**

+     * Sets a value object data for the Parameter instance.

+     */

+    public void setValue(Object o);

+    

+    /**

+     * Does the parameter specific processing necessary to wrap the value with an

+     * XMLStreamReader, and returns the newly created reader.

+     * 

+     * @return - An XMLStreamReader that walks the data of the value object.

+     */

+    public XMLStreamReader getValueAsStreamReader();

+    

+    /**

+     * Returns an OMElement representation of the value object that the Parameter

+     * class holds.  If no value has been set, an Exception will be thrown.

+     * 

+     * @return - An OMElement representation

+     */

+    public OMElement toOMElement();

+    

+    /**

+     * Converts the OMElement passed in to the appropriate value type and holds the value

+     * object data within the Parameter instance.

+     */

+    public void fromOM(OMElement omElement);

+    

+    /**

+     * TODO: Need to re-think this one.  Parameter should be a standalone thing and not tied

+     * to a SOAPEnvelope.

+     * 

+     * @param mode

+     * @param soapVersionURI

+     * @return

+     */

+    public SOAPEnvelope toEnvelope(Mode mode, String soapVersionURI);

+    

+    /**

+     * TODO: Need to re-think this one.  Parameter should be a standalone thing and not tied

+     * to a SOAPEnvelope.

+     *  

+     * @param mode

+     * @param env

+     */

+    public void fromEnvelope(Mode mode, SOAPEnvelope env);

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/ParameterFactory.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/ParameterFactory.java
new file mode 100644
index 0000000..5885f2a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/ParameterFactory.java
@@ -0,0 +1,122 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+import java.util.HashMap;

+

+import javax.xml.soap.SOAPMessage;

+import javax.xml.transform.Source;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.sax.SAXSource;

+import javax.xml.transform.stream.StreamSource;

+

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public class ParameterFactory {

+    

+    private static HashMap<Class, Class> supportedSourceTypes;

+    //private static final Log log = LogFactory.getLog(ParameterFactory.class);

+    

+    static {

+        supportedSourceTypes = new HashMap<Class, Class>();

+        supportedSourceTypes.put(StreamSource.class, StreamSourceParameter.class);

+        supportedSourceTypes.put(DOMSource.class, DOMSourceParameter.class);

+        supportedSourceTypes.put(SAXSource.class, SAXSourceParameter.class);

+        supportedSourceTypes.put(Source.class, StreamSourceParameter.class);

+    }

+    

+    /**

+     * Creates a Parameter instance based on the class type of the 

+     * object passed in and then uses that object instance as the content

+     * 

+     * @param o

+     * @return

+     */

+    public static Parameter createParameter(Object o) {

+        Class c = o.getClass();

+        

+        //if (log.isDebugEnabled()) {

+        //    log.debug("Creating Parameter from existing object of type [" + c.getName() + "]");

+        //}

+        System.out.println(">> Creating Parameter from existing object of type [" + c.getName() + "]");

+        if (o instanceof String) {

+            return new StringParameter((String) o);

+        }

+        else if(o instanceof SOAPMessage){

+        	return new SOAPMessageParameter((SOAPMessage) o);

+        }

+        else if(Source.class.isAssignableFrom(c)) {

+            Parameter p = getSourceParameter(o.getClass());

+            p.setValue(o);

+            return p;

+        }

+        else {

+            JAXBParameter p = new JAXBParameter();

+            p.setValue(o);

+            return p;

+        }

+    }

+    

+    /**

+     * Creates a Parameter instance based on the class type

+     * 

+     * @param c

+     * @return

+     */

+    public static Parameter createParameter(Class c) {

+        //if (log.isDebugEnabled()) {

+        //    log.debug("Creating Parameter Class type [" + c.getName() + "]");

+        //}

+        System.out.println("Creating Parameter Class type [" + c.getName() + "]");

+        if (c == String.class) {

+            return new StringParameter();

+        }

+        else if(c == SOAPMessage.class) {

+            return new SOAPMessageParameter();

+        }

+        else if(Source.class.isAssignableFrom(c)) {

+            Parameter p = getSourceParameter(c);

+            return p;

+        }

+        else {

+            return new JAXBParameter();

+        }

+    }

+    

+    private static Parameter getSourceParameter(Class c) {

+        Parameter p = null;

+        Class<Parameter> paramClass = supportedSourceTypes.get(c);

+        

+        if (paramClass != null) {

+            try {

+                p = paramClass.newInstance();

+                System.out.println(">> New " + p.getClass().getName() + " created");

+                //if (log.isDebugEnabled()) {

+                //    log.debug("New " + p.getClass().getName() + " created");

+                //}

+                

+                return p;

+            } catch (Exception e) {

+                e.printStackTrace();

+            }

+        }

+        

+        return p;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/ParameterUtils.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/ParameterUtils.java
new file mode 100644
index 0000000..6b5631c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/ParameterUtils.java
@@ -0,0 +1,96 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.util.SoapUtils;

+

+

+public class ParameterUtils {

+

+    /**

+     * This utility method can be used to convert a single Parameter object into a 

+     * SOAP envelope.  

+     * 

+     * If the MODE is MESSAGE, it assumes that the parameter content

+     * has a valid SOAP envelope inside of it, with &lt;Envelope&gt; as root node. If not 

+     * then it will throw a WebServiceException.

+     * 

+     * If the MODE is PAYLOAD, then it builds a SOAPEnvelope representation and then sets

+     * the param content as the first child of the &lt;Body&gt; element.

+     * 

+     * @param mode - A flag that determines the scope of the content

+     * @param soapVersionURI - A String with the correct version of the SOAP URI

+     * @param param - The actual Parameter instance to be acted upon

+     * @return

+     */

+    public static SOAPEnvelope toEnvelope(Mode mode, String soapVersionURI, Parameter param) {

+        SOAPFactory soapfactory =  SoapUtils.getSoapFactory(soapVersionURI);

+        SOAPEnvelope env = null;

+        try{

+            if(mode != null && mode.equals(Mode.MESSAGE)){   

+                StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(param.getValueAsStreamReader(),

+                        soapfactory, soapVersionURI);

+                return builder.getSOAPEnvelope();

+            }

+            else{

+                env = soapfactory.getDefaultEnvelope();

+                env.getHeader().detach();

+                SOAPBody body = env.getBody();

+                body.addChild(param.toOMElement());

+            }

+        }catch(Exception e){

+            throw new WebServiceException(e.getMessage());

+        }

+       return env;

+    }

+

+    /**

+     * This utility method creates a Parameter instance based on the data

+     * provided in the SOAPEnvelope.

+     * 

+     * If the MODE is MESSAGE, the Parameter that gets created will contain

+     * the entire SOAP envelope in whatever form was specified (String, Source, etc.)

+     * 

+     * If the MODE is PAYLOAD, then the Parameter created will be based on the 

+     * contents of the SOAP body.

+     * 

+     * @param mode

+     * @param env

+     */

+    public static void fromEnvelope(Mode mode, SOAPEnvelope env, Parameter param) {

+        if(env == null){

+            //add validation code here

+        }

+        

+        if(mode == null || mode.equals(Mode.PAYLOAD)){

+            OMElement om = env.getBody();

+            param.fromOM(om.getFirstElement());

+        }

+        else if(mode.equals(Mode.MESSAGE)){

+            param.fromOM(env);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SAXSourceParameter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SAXSourceParameter.java
new file mode 100644
index 0000000..c3cf6fe
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SAXSourceParameter.java
@@ -0,0 +1,55 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.io.InputStream;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.transform.sax.SAXSource;

+

+import org.apache.axiom.om.OMElement;

+import org.xml.sax.InputSource;

+

+public class SAXSourceParameter extends SourceParameter {

+

+    public SAXSourceParameter() {

+        //do nothing

+    }

+    

+    public SAXSourceParameter(SAXSource value){

+		this.value = value;

+	}

+	

+    public void fromOM(OMElement omElement) {

+		if(omElement != null){

+            ByteArrayOutputStream output = new ByteArrayOutputStream();

+            try{

+                omElement.serialize(output);

+            }catch(XMLStreamException e){

+                e.printStackTrace();

+            }

+            InputStream input = new ByteArrayInputStream(output.toByteArray());

+            InputSource inputSrc = new InputSource(input);

+            

+            value = new SAXSource(inputSrc);

+        }

+		

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SOAPMessageParameter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SOAPMessageParameter.java
new file mode 100644
index 0000000..d9d7e79
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SOAPMessageParameter.java
@@ -0,0 +1,97 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+import java.io.ByteArrayInputStream;

+

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.soap.SOAPEnvelope;

+

+public class SOAPMessageParameter implements Parameter {

+	private SOAPMessage value;

+	

+	public SOAPMessageParameter() {

+        //do nothing

+    }

+    

+    public SOAPMessageParameter(SOAPMessage value){

+		this.value = value;

+	}

+	public Object getValue() {

+		return value;

+	}

+

+	public void setValue(Object o) {

+		value = (SOAPMessage)o;

+	}

+

+    //TODO: This needs to be replaced by Rich's work with the SAAJ<->OM Converter

+	public XMLStreamReader getValueAsStreamReader() {

+        XMLStreamReader reader = null;

+        try {

+            String SoapContent = value.getSOAPPart().getEnvelope().getValue();

+            reader = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(SoapContent.getBytes()));

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+        return reader;

+    }

+    

+    public OMElement toOMElement() {

+		try{

+		    StAXOMBuilder builder =

+	            new StAXOMBuilder(OMAbstractFactory.getOMFactory(), getValueAsStreamReader()); 

+	        return builder.getDocumentElement();

+		}catch(Exception e){

+			throw new WebServiceException(e.getMessage());

+		}

+	}

+

+	public void fromOM(OMElement omElement) {

+		try{

+			MessageFactory msgFactory = MessageFactory.newInstance();

+			

+			//Read OMelement and create SOAPMessage data

+			String soapContent = omElement.toString();

+			

+			SOAPMessage message = msgFactory.createMessage(null, new ByteArrayInputStream(soapContent.getBytes()));

+			value = message;

+		}catch(Exception e){

+			throw new WebServiceException(e.getMessage());

+		}

+	}

+

+    public SOAPEnvelope toEnvelope(Mode mode, String soapVersionURI) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+	public void fromEnvelope(Mode mode, SOAPEnvelope env) {

+		// TODO Auto-generated method stub

+		

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SourceParameter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SourceParameter.java
new file mode 100644
index 0000000..e6a4c02
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/SourceParameter.java
@@ -0,0 +1,87 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.transform.Source;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.soap.SOAPEnvelope;

+

+public abstract class SourceParameter implements Parameter {

+

+    protected Source value;

+    

+    public Object getValue() {

+        return value;

+    }

+

+    public void setValue(Object o) {

+        Class c = o.getClass();

+        if (!Source.class.isAssignableFrom(c)) {

+            throw new WebServiceException("Unsupported Source parameter type: " + c.getName());

+        }

+        

+        value = (Source) o;        

+    }

+    

+    public abstract void fromOM(OMElement omElement);

+    

+    public OMElement toOMElement() {

+        try {

+            XMLStreamReader parser = XMLInputFactory.newInstance()

+                    .createXMLStreamReader(value);

+

+            StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory

+                    .getOMFactory(), parser);

+

+            return builder.getDocumentElement();

+        } catch (Exception e) {

+            throw new WebServiceException(e);

+        }       

+    }

+    

+    public XMLStreamReader getValueAsStreamReader() {

+        if (value != null) {

+            try {

+                XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(value);

+                return reader;

+            } catch (Exception e) {

+                e.printStackTrace();

+            }

+        }

+        else {

+            throw new WebServiceException("Cannot create XMLStreamReader from null value");

+        }

+        

+        return null;

+    }

+

+    public void fromEnvelope(Mode mode, SOAPEnvelope env) {

+        ParameterUtils.fromEnvelope(mode, env, this);

+    }

+

+    public SOAPEnvelope toEnvelope(Mode mode, String soapVersionURI) {

+        return ParameterUtils.toEnvelope(mode, soapVersionURI, this);

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/StreamSourceParameter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/StreamSourceParameter.java
new file mode 100644
index 0000000..5cea894
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/StreamSourceParameter.java
@@ -0,0 +1,94 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.io.InputStream;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.transform.stream.StreamSource;

+

+import org.apache.axiom.om.OMElement;

+

+

+public class StreamSourceParameter extends SourceParameter {

+	

+    public StreamSourceParameter() {

+        //do nothing

+    }

+    

+    public StreamSourceParameter(StreamSource value){

+		this.value = value;

+	}

+

+	public void fromOM(OMElement omElement) {

+		if(omElement != null){

+            //Convert OM to Byte Array and ByteArray to SourceStream.

+            ByteArrayOutputStream output = new ByteArrayOutputStream();

+            try {

+                omElement.serialize(output);

+            } catch(XMLStreamException e) {

+                e.printStackTrace();

+            }

+            InputStream input = new ByteArrayInputStream(output.toByteArray());

+            value = new StreamSource(input);

+		}

+	}

+	

+    /*

+    public SOAPEnvelope toEnvelope(Mode mode, String soapVersionURI) {

+		SOAPFactory soapfactory =  SoapUtils.getSoapFactory(soapVersionURI);

+    	SOAPEnvelope env = null;

+    	try{

+    		if(mode !=null && mode.equals(Mode.MESSAGE)){	

+    			XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(value);

+        		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(reader, soapfactory, soapVersionURI);

+    			return builder.getSOAPEnvelope();

+    		}

+    		else{

+    			env = soapfactory.getDefaultEnvelope();

+    			env.getHeader().detach();

+    			SOAPBody body = env.getBody();

+    			body.addChild(toOMElement());

+    		}

+    	}catch(Exception e){

+    		throw new WebServiceException(e.getMessage());

+    	}

+    	return env;

+	}

+    */

+

+	/*

+    public void fromEnvelope(Mode mode, SOAPEnvelope env) {

+		if(env == null){

+			//add validation code here

+		}

+		

+		if(mode == null || mode.equals(Mode.PAYLOAD)){

+			OMElement om = env.getBody();

+			fromOM(om.getFirstElement());

+			System.out.println("Mode is payload");

+		}

+		else if(mode.equals(Mode.MESSAGE)){

+			System.out.println("Mode is message");

+			fromOM(env);

+		}

+	}

+    */

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/StringParameter.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/StringParameter.java
new file mode 100644
index 0000000..8636e87
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/param/StringParameter.java
@@ -0,0 +1,154 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.param;

+

+import java.io.ByteArrayInputStream;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.Service.Mode;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.util.SoapUtils;

+

+

+/*

+ * The StringParameter is a simple implementation of the Parameter

+ * interface for binding XML strings.

+ */

+public class StringParameter implements Parameter {

+    

+    private String value;

+    

+    public StringParameter() {

+        //do nothing

+    }

+    

+    public StringParameter(String s) {

+        this.value = s;

+    }

+    

+    /**

+     * @see Parameter#getValue()

+     */

+    public Object getValue() { 

+        return value;

+    }

+    

+    /**

+     * @see Parameter#setValue(Object)

+     */

+    public void setValue(Object v) {

+        this.value = (String) v;

+    }

+    

+    /**

+     * @see Parameter#getValueAsStreamReader()

+     */

+    public XMLStreamReader getValueAsStreamReader() {

+        if (value != null) {

+            try {

+                XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(

+                        new ByteArrayInputStream(value.getBytes()));

+                return reader;

+            } catch (Exception e) {

+                e.printStackTrace();

+            }

+        }

+        else {

+            throw new WebServiceException("Cannot create XMLStreamReader from null value");

+        }

+        

+        return null;

+    }

+    

+    /**

+     * @see Parameter#toOMElement()

+     */

+    public OMElement toOMElement() {

+        try {

+            StAXOMBuilder builder =

+                new StAXOMBuilder(OMAbstractFactory.getOMFactory(), getValueAsStreamReader()); 

+            

+            OMElement documentElement = builder.getDocumentElement();

+            return documentElement;

+        } catch (Exception e) {

+        	throw new WebServiceException(e.getMessage());

+        }

+        

+    }

+    

+    /**

+     * @see Parameter#fromOM(OMElement)

+     */

+    public void fromOM(OMElement documentElement){

+    	this.value = documentElement.toString();

+    }

+

+    public SOAPEnvelope toEnvelope(Mode mode, String soapVersionURI) {

+		// TODO Auto-generated method stub

+    	SOAPFactory soapfactory =  SoapUtils.getSoapFactory(soapVersionURI);

+    	SOAPEnvelope env = null;

+    	try{

+    		if(mode !=null && mode.equals(Mode.MESSAGE)){	

+    			/* I am assuming that if the mode is message then param has a soap xml with

+    			 * Envelope as root node. If not then I will throw a webservice exception.

+    			 */

+    			XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(value.getBytes()));

+        		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(reader, soapfactory, soapVersionURI);

+    			return builder.getSOAPEnvelope();

+    		}

+    		else{

+    			/* I am assuming that param is a plain xml string.

+    			 * This code is return just to cater to dispatch sync call where we are using

+    			 * serviceClient.

+    			 */

+    			env = soapfactory.getDefaultEnvelope();

+    			env.getHeader().detach();

+    			SOAPBody body = env.getBody();

+    			body.addChild(toOMElement());

+    		}

+    	}catch(Exception e){

+    		throw new WebServiceException(e.getMessage());

+    	}

+       return env;

+	}

+

+	public void fromEnvelope(Mode mode, SOAPEnvelope env) {

+		// TODO Auto-generated method stub

+		if(env == null){

+			//add validation code here

+		}

+		

+		if(mode == null || mode.equals(Mode.PAYLOAD)){

+			OMElement om = env.getBody();

+			fromOM(om.getFirstElement());

+		}

+		else if(mode.equals(Mode.MESSAGE)){

+			fromOM(env);

+		}

+		

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/registry/FactoryRegistry.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/registry/FactoryRegistry.java
new file mode 100644
index 0000000..da1bece
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/registry/FactoryRegistry.java
@@ -0,0 +1,76 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.registry;

+

+import java.util.Hashtable;

+import java.util.Map;

+

+import org.apache.axis2.jaxws.client.factory.DescriptorFactory;

+import org.apache.axis2.jaxws.client.factory.ProxyHandlerFactory;

+import org.apache.axis2.jaxws.message.databinding.impl.JAXBBlockFactoryImpl;

+import org.apache.axis2.jaxws.message.databinding.impl.OMBlockFactoryImpl;

+import org.apache.axis2.jaxws.message.databinding.impl.SOAPEnvelopeBlockFactoryImpl;

+import org.apache.axis2.jaxws.message.databinding.impl.SourceBlockFactoryImpl;

+import org.apache.axis2.jaxws.message.databinding.impl.XMLStringBlockFactoryImpl;

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.message.factory.OMBlockFactory;

+import org.apache.axis2.jaxws.message.factory.SAAJConverterFactory;

+import org.apache.axis2.jaxws.message.factory.SOAPEnvelopeBlockFactory;

+import org.apache.axis2.jaxws.message.factory.SourceBlockFactory;

+import org.apache.axis2.jaxws.message.factory.XMLPartFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.message.impl.MessageFactoryImpl;

+import org.apache.axis2.jaxws.message.impl.XMLPartFactoryImpl;

+import org.apache.axis2.jaxws.message.util.impl.SAAJConverterFactoryImpl;

+

+/**

+ * FactoryRegistry

+ * Registry containing Factories related to the JAX-WS Implementation

+ */

+public class FactoryRegistry {

+

+	private final static Map<Class,Object> table;

+	static {

+		table = new Hashtable<Class,Object>();

+		table.put(XMLStringBlockFactory.class, new XMLStringBlockFactoryImpl());

+		table.put(JAXBBlockFactory.class, new JAXBBlockFactoryImpl());

+		table.put(OMBlockFactory.class, new OMBlockFactoryImpl());

+		table.put(SourceBlockFactory.class, new SourceBlockFactoryImpl());

+		table.put(SOAPEnvelopeBlockFactory.class, new SOAPEnvelopeBlockFactoryImpl());

+		table.put(MessageFactory.class, new MessageFactoryImpl());

+		table.put(XMLPartFactory.class, new XMLPartFactoryImpl());

+		table.put(SAAJConverterFactory.class, new SAAJConverterFactoryImpl());

+		table.put(ProxyHandlerFactory.class, new ProxyHandlerFactory());

+		table.put(DescriptorFactory.class, new DescriptorFactory());

+	}

+	/**

+	 * FactoryRegistry is currently a static singleton

+	 */

+	private FactoryRegistry() {

+	}

+	

+	/**

+	 * getFactory

+	 * @param intface of the Factory

+	 * @return Object that is the factory implementation for the intface

+	 */

+	public static Object getFactory(Class intface) {

+		return table.get(intface);

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/EndpointController.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/EndpointController.java
new file mode 100644
index 0000000..078b3b0
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/EndpointController.java
@@ -0,0 +1,159 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.server;

+

+import javax.xml.ws.Provider;

+

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.InvocationContext;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.description.DescriptionFactory;

+import org.apache.axis2.jaxws.description.EndpointDescription;

+import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;

+import org.apache.axis2.jaxws.description.OperationDescription;

+import org.apache.axis2.jaxws.description.ServiceDescription;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.server.dispatcher.EndpointDispatcher;

+import org.apache.axis2.jaxws.server.dispatcher.JavaBeanDispatcher;

+import org.apache.axis2.jaxws.server.dispatcher.ProviderDispatcher;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * The EndpointController is the server side equivalent to the

+ * InvocationController on the client side.  It is an abstraction of the server

+ * side endpoint invocation that encapsulates all of the Axis2 semantics.

+ * 

+ * Like the InvocationController, this class is responsible for invoking the 

+ * JAX-WS application handler chain along with taking all of the provided 

+ * information and setting up what's needed to perform the actual invocation 

+ * of the endpoint.

+ *

+ */

+public class EndpointController {

+    

+    private static final Log log = LogFactory.getLog(EndpointController.class);

+	private static final String PARAM_SERVICE_CLASS = "ServiceClass";

+

+    public EndpointController() {}

+

+    /**

+     * This method is used to start the JAX-WS invocation of a target endpoint.

+     * It takes an InvocationContext, which must have a MessageContext specied

+     * for the request.  Once the invocation is complete, the information will

+     * be stored  

+     */

+    public InvocationContext invoke(InvocationContext ic) {

+        try {

+            MessageContext requestMsgCtx = ic.getRequestMessageContext();

+

+            String implClassName = getServiceImplClassName(requestMsgCtx);

+            

+            Class implClass = loadServiceImplClass(implClassName, 

+                    requestMsgCtx.getClassLoader());

+            

+            ServiceDescription serviceDesc = getServiceDescription(requestMsgCtx, implClass);

+            requestMsgCtx.setServiceDescription(serviceDesc);

+            

+            EndpointDispatcher dispatcher = getEndpointDispatcher(implClass);

+            

+            MessageContext responseMsgContext = dispatcher.invoke(requestMsgCtx);

+            

+            // The response MessageContext should be set on the InvocationContext

+            ic.setResponseMessageContext(responseMsgContext);

+        } catch (Exception e) {

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+        

+        return ic;

+    }

+    

+    /*

+	 * Get the appropriate EndpointDispatcher for a given service endpoint.

+	 */

+	private EndpointDispatcher getEndpointDispatcher(Class serviceImplClass) 

+        throws Exception {

+        // TODO:  This check should be based on the EndpointDescription processing of annotations

+        //        It is left this way for now because some tests have an @WebService annotation on

+        //        Provider-based endpoints as a pre-existing workaround.

+        if(Provider.class.isAssignableFrom(serviceImplClass)) {

+    		return new ProviderDispatcher(serviceImplClass);

+    	}

+        else {

+            return new JavaBeanDispatcher(serviceImplClass);

+        }

+    }

+	

+	/*

+     * Tries to load the implementation class that was specified for the

+     * target endpoint

+	 */

+	private Class loadServiceImplClass(String className, ClassLoader cl) {

+        if (log.isDebugEnabled()) {

+            log.debug("Attempting to load service impl class: " + className);

+        }    

+        

+        try {

+		    //TODO: What should be done if the supplied ClassLoader is null?

+            Class _class = Class.forName(className, true, cl);

+            return _class;

+		} catch(ClassNotFoundException cnf ){

+			throw ExceptionFactory.makeWebServiceException(Messages.getMessage(

+                    "EndpointControllerErr4", className));

+		}

+	}

+    

+    private String getServiceImplClassName(MessageContext mc) {

+        // The PARAM_SERVICE_CLASS property that is set on the AxisService

+        // will tell us what the service implementation class is.

+        org.apache.axis2.context.MessageContext axisMsgContext = mc.getAxisMessageContext();

+        AxisService as = axisMsgContext.getAxisService();

+        Parameter param = as.getParameter(PARAM_SERVICE_CLASS);

+        

+        // If there was no implementation class, we should not go any further

+        if (param == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage(

+                    "EndpointControllerErr2"));

+        }

+        

+        String className = ((String) param.getValue()).trim();

+        return className;

+    }

+    

+    /*

+     * Gets the ServiceDescription associated with the request that is currently

+     * being processed. 

+     */

+    private ServiceDescription getServiceDescription(MessageContext mc, Class implClass) {

+        AxisService axisSvc = mc.getAxisMessageContext().getAxisService();

+        

+        //Check to see if we've already created a ServiceDescription for this

+        //service before trying to create a new one. 

+        if (axisSvc.getParameter("JAXWS_SERVICE_DESCRIPTION") != null) {

+            Parameter param = axisSvc.getParameter("JAXWS_SERVICE_DESCRIPTION");

+            ServiceDescription sd = (ServiceDescription) param.getValue();

+            return sd;

+        }

+        else {

+            ServiceDescription sd = DescriptionFactory.

+                createServiceDescriptionFromServiceImpl(implClass, axisSvc);

+            return sd;

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/JAXWSMessageReceiver.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/JAXWSMessageReceiver.java
new file mode 100644
index 0000000..5a1c714
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/JAXWSMessageReceiver.java
@@ -0,0 +1,198 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.server;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Hashtable;

+import java.util.Iterator;

+

+import javax.activation.DataHandler;

+

+import org.apache.axiom.attachments.Attachments;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMText;

+import org.apache.axiom.om.impl.MTOMConstants;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants.Configuration;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.AxisEngine;

+import org.apache.axis2.engine.MessageReceiver;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.InvocationContext;

+import org.apache.axis2.jaxws.core.InvocationContextImpl;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.Attachment;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.attachments.AttachmentUtils;

+import org.apache.axis2.jaxws.message.impl.AttachmentImpl;

+import org.apache.axis2.jaxws.util.Constants;

+import org.apache.axis2.util.ThreadContextMigratorUtil;

+import org.apache.axis2.wsdl.WSDLConstants.WSDL20_2004Constants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+

+/**

+ * The JAXWSMessageReceiver is the entry point, from the server's perspective,

+ * to the JAX-WS code.  This will be called by the Axis Engine and is the end

+ * of the chain from an Axis2 perspective.

+ */

+public class JAXWSMessageReceiver implements MessageReceiver {

+

+private static final Log log = LogFactory.getLog(JAXWSMessageReceiver.class);

+    

+    private static String PARAM_SERVICE_CLASS = "ServiceClass";

+    

+    /**

+     * We should have already determined which AxisService we're targetting at

+     * this point.  So now, just get the service implementation and invoke

+     * the appropriate method.

+     */

+    public void receive(org.apache.axis2.context.MessageContext axisRequestMsgCtx) 

+        throws AxisFault {

+    	if (log.isDebugEnabled()) {

+            log.debug("new request received");

+        }

+    	

+    	//Get the name of the service impl that was stored as a parameter

+        // inside of the services.xml.

+        AxisService service = axisRequestMsgCtx.getAxisService();

+        AxisOperation operation = axisRequestMsgCtx.getAxisOperation();

+        String mep = operation.getMessageExchangePattern();

+        if (log.isDebugEnabled()){

+            log.debug("MEP: "+ mep);

+        }

+        

+        org.apache.axis2.description.Parameter svcClassParam = service.getParameter(PARAM_SERVICE_CLASS);

+        

+        try {

+            if (svcClassParam == null) { 

+                throw new RuntimeException(Messages.getMessage("JAXWSMessageReceiverNoServiceClass"));

+            }

+            

+            //This assumes that we are on the ultimate execution thread

+            ThreadContextMigratorUtil.performMigrationToThread(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisRequestMsgCtx);

+            

+            //We'll need an instance of the EndpointController to actually

+            //drive the invocation.

+            //TODO: More work needed to determine the lifecycle of this thing

+        	EndpointController endpointCtlr = new EndpointController();

+          	

+            MessageContext requestMsgCtx = new MessageContext(axisRequestMsgCtx);

+            

+            //FIXME: This should be revisited when we re-work the MTOM support.

+            //This destroys performance by forcing a double pass through the message.

+            //If attachments are found on the MessageContext, then that means

+            //the inbound message has more than just the normal XML payload

+            Attachments as = (Attachments) axisRequestMsgCtx.getProperty(MTOMConstants.ATTACHMENTS); 

+            if (as != null) { 

+                Message request = requestMsgCtx.getMessage();

+                request.setMTOMEnabled(true);

+                

+                //Walk the tree and find all of the optimized binary nodes.

+                ArrayList<OMText> binaryNodes = AttachmentUtils.findBinaryNodes(

+                        axisRequestMsgCtx.getEnvelope());

+                if (binaryNodes != null) {

+                    //Replace each of the nodes with it's corresponding <xop:include>

+                    //element, so JAXB can process it correctly.

+                    Iterator<OMText> itr = binaryNodes.iterator();

+                    while (itr.hasNext()) {

+                        OMText node = itr.next();

+                        OMElement xop = AttachmentUtils.makeXopElement(node);

+                        node.getParent().addChild(xop);

+                        node.detach();

+                        

+                        //We have to add the individual attachments in their raw

+                        //binary form, so we can access them later.

+                        Attachment a = new AttachmentImpl((DataHandler) node.getDataHandler(), 

+                                node.getContentID());

+                        request.addAttachment(a);

+                    }

+                }

+            }

+            

+

+            InvocationContext ic = new InvocationContextImpl();            

+            ic.setRequestMessageContext(requestMsgCtx);

+            

+            //TODO:Once we the JAX-WS MessageContext one of the next things that

+            //needs to be done here is setting up all of the javax.xml.ws.* 

+            //properties for the MessageContext.

+            

+            if (isMepInOnly(mep)) {

+            	endpointCtlr.invoke(ic);

+            }

+            else{

+	            ic = endpointCtlr.invoke(ic);

+                

+                // If this is a two-way exchange, there should already be a 

+                // JAX-WS MessageContext for the response.  We need to pull 

+                // the Message data out of there and set it on the Axis2 

+                // MessageContext.

+                MessageContext responseMsgCtx = ic.getResponseMessageContext();

+                org.apache.axis2.context.MessageContext axisResponseMsgCtx = 

+                    responseMsgCtx.getAxisMessageContext();                

+                

+                Message responseMsg = responseMsgCtx.getMessage();

+                SOAPEnvelope responseEnv = (SOAPEnvelope) responseMsg.getAsOMElement();

+                axisResponseMsgCtx.setEnvelope(responseEnv);

+                

+                if (responseMsg.isMTOMEnabled()) {

+                    Options opts = axisResponseMsgCtx.getOptions();

+                    opts.setProperty(Configuration.ENABLE_MTOM, "true");                    

+                }

+                

+                OperationContext opCtx = axisResponseMsgCtx.getOperationContext();

+                opCtx.addMessageContext(axisResponseMsgCtx);

+            

+                //This assumes that we are on the ultimate execution thread

+                ThreadContextMigratorUtil.performMigrationToContext(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisResponseMsgCtx);

+                

+                //Create the AxisEngine for the reponse and send it.

+                AxisEngine engine = new AxisEngine(axisResponseMsgCtx.getConfigurationContext());

+                engine.send(axisResponseMsgCtx);

+                

+                //This assumes that we are on the ultimate execution thread

+                ThreadContextMigratorUtil.performContextCleanup(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisResponseMsgCtx);

+            }

+

+            //This assumes that we are on the ultimate execution thread

+            ThreadContextMigratorUtil.performThreadCleanup(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, axisRequestMsgCtx);

+            

+        } catch (Exception e) {

+        	//TODO: This temp code for alpha till we add fault processing on client code.

+        	// TODO NLS

+            throw ExceptionFactory.makeWebServiceException(e);

+        } 

+    }

+    

+    private boolean isMepInOnly(String mep){

+    	boolean inOnly = mep.equals(WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY) || 

+            mep.equals(WSDL20_2004Constants.MEP_URI_IN_ONLY) || 

+            mep.equals(WSDL20_2004Constants.MEP_CONSTANT_ROBUST_IN_ONLY) || 

+            mep.equals(WSDL20_2004Constants.MEP_CONSTANT_IN_ONLY);

+        return inOnly;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/EndpointDispatcher.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/EndpointDispatcher.java
new file mode 100644
index 0000000..dbce8a9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/EndpointDispatcher.java
@@ -0,0 +1,37 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.server.dispatcher;

+

+import org.apache.axis2.jaxws.core.MessageContext;

+

+/**

+ * The EndpointDispatcher is an abstraction for the object that will be doing

+ * the invocation of an endpoints target Java object.  

+ */

+public interface EndpointDispatcher {

+

+    /**

+     * Invoke the target endpoint synchronously 

+     * 

+     * @param mc

+     * @return

+     */

+    public MessageContext invoke(MessageContext mc)

+        throws Exception;

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
new file mode 100644
index 0000000..ee296a4
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
@@ -0,0 +1,144 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.server.dispatcher;

+

+import java.lang.reflect.Method;

+

+import javax.xml.ws.Holder;

+import javax.xml.ws.soap.SOAPBinding;

+

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.core.util.MessageContextUtils;

+import org.apache.axis2.jaxws.description.EndpointDescription;

+import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;

+import org.apache.axis2.jaxws.description.OperationDescription;

+import org.apache.axis2.jaxws.description.ServiceDescription;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * The JavaBeanDispatcher is used to manage creating an instance of a 

+ * JAX-WS service implementation bean and dispatching the inbound 

+ * request to that instance.

+ */

+public class JavaBeanDispatcher extends JavaDispatcher {

+

+    private static final Log log = LogFactory.getLog(JavaBeanDispatcher.class);

+    

+    private Object serviceInstance;

+    

+    public JavaBeanDispatcher(Class implClass) {

+        super(implClass);

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see org.apache.axis2.jaxws.server.EndpointDispatcher#invoke(org.apache.axis2.jaxws.core.MessageContext)

+     */

+    public MessageContext invoke(MessageContext mc) throws Exception {

+        if (log.isDebugEnabled()) {

+            log.debug("Preparing to invoke service endpoint implementation " +

+                    "class: " + serviceImplClass.getName());

+        }

+

+        mc.setOperationName(mc.getAxisMessageContext().getAxisOperation().getName());

+        OperationDescription opDesc = getOperationDescription(mc);

+        mc.setOperationDescription(opDesc);

+        

+        Mapper mapper = new MapperImpl();

+        Method target = mapper.getJavaMethod(mc, serviceImplClass);

+        Object[] params = mapper.getInputParameterData(mc, target);

+        if(params!=null){

+        	for(Object param:params){

+        		if(param!=null && param instanceof Holder){

+        			throw new UnsupportedOperationException("Holders not supported yet");

+        		}

+        	}

+        }

+        //At this point, we have the method that is going to be invoked and

+        //the parameter data to invoke it with, so create an instance and 

+        //do the invoke.

+        serviceInstance = createServiceInstance();

+        Object response = target.invoke(serviceInstance, params);

+        

+        if(opDesc.isOneWay()){

+        	//Dont return response message context if its a one way operation.

+        	return null;

+        }

+        

+        //TODO:Support Holders 

+        if(!opDesc.isOneWay() && target.getReturnType().getName().equals("void")){

+        	//process everything that does not have holders two way with void is empty responsewrapper in soap body

+        	

+        }

+        Block responseBlock = mapper.getOutputParameterBlock(mc, response, target);

+       

+        //Create the Message for the response

+        MessageFactory factory = (MessageFactory) FactoryRegistry.getFactory(

+                MessageFactory.class);

+        Message message = factory.create(mc.getMessage().getProtocol());

+        message.setBodyBlock(0, responseBlock);

+        

+        MessageContext responseMsgCtx = MessageContextUtils.createMessageMessageContext(mc);

+        responseMsgCtx.setMessage(message);

+        

+        //Enable MTOM if necessary

+        EndpointInterfaceDescription epInterfaceDesc = opDesc.getEndpointInterfaceDescription();

+        EndpointDescription epDesc = epInterfaceDesc.getEndpointDescription();

+        

+        String bindingType = epDesc.getBindingTypeValue();

+        if (bindingType != null) {

+            if (bindingType.equals(SOAPBinding.SOAP11HTTP_MTOM_BINDING) ||

+                bindingType.equals(SOAPBinding.SOAP12HTTP_MTOM_BINDING)) {

+                message.setMTOMEnabled(true);

+            }

+        }

+         

+        return responseMsgCtx;

+    }

+    

+    /*

+     * Gets the OperationDescription associated with the request that is currently

+     * being processed.

+     * 

+     *  Note that this is not done in the EndpointController since operations are only relevant

+     *  to Endpoint-based implementation (i.e. not to Proxy-based ones)s

+     */

+

+    private OperationDescription getOperationDescription(MessageContext mc) {

+        ServiceDescription sd = mc.getServiceDescription();

+        EndpointDescription[] eds = sd.getEndpointDescriptions();

+        EndpointDescription ed = eds[0];

+        EndpointInterfaceDescription eid = ed.getEndpointInterfaceDescription();

+        

+        OperationDescription[] ops = eid.getOperation(mc.getOperationName());

+        OperationDescription op = ops[0];

+        

+        if (log.isDebugEnabled()) {

+            log.debug("wsdl operation: " + op.getName());

+            log.debug("   java method: " + op.getJavaMethodName());

+        }

+        

+        return op;        

+    }

+    

+    

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java
new file mode 100644
index 0000000..1b877d0
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java
@@ -0,0 +1,71 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.server.dispatcher;

+

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * JavaDispatcher is an abstract class that can be extended to implement

+ * an EndpointDispatcher to a Java object.  

+ */

+public abstract class JavaDispatcher implements EndpointDispatcher {

+

+    private static final Log log = LogFactory.getLog(JavaDispatcher.class);

+    

+    protected Class serviceImplClass;

+    

+    protected JavaDispatcher(Class impl) {

+        serviceImplClass = impl;

+    }

+    

+    public abstract MessageContext invoke(MessageContext mc)

+        throws Exception;

+    

+    public Class getServiceImplementationClass() {

+        return serviceImplClass;

+    }

+    

+    protected Object createServiceInstance() {

+        if (log.isDebugEnabled()) {

+            log.debug("Creating new instance of service endpoint");

+        }

+        

+        if (serviceImplClass == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage(

+                    "JavaDispErr1"));

+        }

+        

+        Object instance = null;

+        try {

+            instance = serviceImplClass.newInstance();

+        } catch (IllegalAccessException e) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage(

+                    "JavaDispErr2", serviceImplClass.getName()));

+        } catch (InstantiationException e) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage(

+                    "JavaDispErr2", serviceImplClass.getName()));

+        }

+        

+        return instance;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/Mapper.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/Mapper.java
new file mode 100644
index 0000000..71678b7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/Mapper.java
@@ -0,0 +1,85 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.server.dispatcher;

+

+import java.lang.reflect.Method;

+import java.util.ArrayList;

+import java.util.Map;

+

+import javax.xml.bind.JAXBException;

+import javax.xml.stream.XMLStreamException;

+

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperException;

+/*

+ * This class is used to map xml/annotation data with java. We use mapper to retrive various java art effects by looking in Service and SEI annotations.

+ * If no annotation are specified we derive defaults.

+ */

+

+public interface Mapper {

+	

+	/**

+	 * Looks at the SOAPBinding annotation figures out if the request is BARE or Wrapped and accordingly returns Parameter objects for the java method.

+	 * @param mc

+	 * @param javaMethod

+	 * @return

+	 */

+	public Object[] getInputParameterData(MessageContext mc, Method javaMethod) throws JAXBException, MessageException, XMLStreamException, JAXBWrapperException;

+	

+	/**

+	 * Creates output message block that can be serialized as response from server.

+	 * @param mc

+	 * @param response

+	 * @return

+	 */

+	public Block getOutputParameterBlock(MessageContext mc, Object response, Method method)throws JAXBException, ClassNotFoundException, JAXBWrapperException, MessageException;

+	

+	/**

+	 * Reads java method from Message context operationName. 

+     * Find the Java method that corresponds to the WSDL operation that was 

+     * targeted by the Axis2 Dispatchers.

+     * @param mc

+	 * @return

+	 */

+	public Method getJavaMethod(MessageContext mc, Class serviceImplClass);

+	

+	/**

+	 * @param javaMethod

+	 * @param args

+	 * @return

+	 * creates a message context given a java method and input arguments.

+	 */

+	public MessageContext getMessageContext(Method javaMethod, Object[] args);

+	

+	/**

+	 * Reads input parameter names for java method.

+	 * @param method

+	 * @param objects

+	 * @return

+	 */

+	public ArrayList<String> getParamNames(Method method, Object[] objects);

+	

+	/**

+	 * creates name value pair for input parameters, skips AsyncHandler object from input parameter. 

+	 * @param objects

+	 * @param names

+	 * @return

+	 */

+	public Map<String, Object> getParamValues(Object[] objects, ArrayList<String> names);

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/MapperImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/MapperImpl.java
new file mode 100644
index 0000000..fbb38e8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/MapperImpl.java
@@ -0,0 +1,377 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.server.dispatcher;

+

+import java.io.BufferedOutputStream;

+import java.io.ByteArrayInputStream;

+import java.io.InputStreamReader;

+import java.io.OutputStream;

+import java.io.Reader;

+import java.lang.reflect.Method;

+import java.lang.reflect.ParameterizedType;

+import java.lang.reflect.Type;

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.HashMap;

+import java.util.Map;

+import java.util.concurrent.Future;

+

+import javax.jws.soap.SOAPBinding;

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.JAXBException;

+import javax.xml.bind.JAXBIntrospector;

+import javax.xml.bind.Unmarshaller;

+import javax.xml.bind.JAXBElement.GlobalScope;

+import javax.xml.bind.annotation.XmlRootElement;

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.description.EndpointDescription;

+import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;

+import org.apache.axis2.jaxws.description.OperationDescription;

+import org.apache.axis2.jaxws.description.ServiceDescription;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.apache.axis2.jaxws.wrapper.JAXBWrapperTool;

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperException;

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperToolImpl;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public class MapperImpl implements Mapper {

+	private static int SIZE = 1;

+	private static String DEFAULT_NAME="arg";

+	private static final Log log = LogFactory.getLog(MapperImpl.class);

+	public MapperImpl() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getParameterData(org.apache.axis2.jaxws.core.MessageContext, java.lang.reflect.Method)

+	 */

+	public Object[] getInputParameterData(MessageContext mc, Method javaMethod) throws JAXBException, MessageException, XMLStreamException, JAXBWrapperException {

+		

+		Message msg = mc.getMessage();

+		EndpointDescription ed = getEndpointDescription(mc);

+		Class[] paramTypes = javaMethod.getParameterTypes();

+		OperationDescription opDesc = mc.getOperationDescription();

+		String paramName[] = opDesc.getWebParamNames();

+		if(paramTypes == null){

+			//Method has no input parameters.

+			return null;

+		}

+		if(paramTypes.length == 0){

+			return null;

+		}

+		if(isSEIDocLitBare(ed)){

+			//Create the jaxbcontext for input parameter, for non wrap case there should be only one input param which is the Request Wrapper

+			if(paramTypes !=null && paramTypes.length >SIZE){

+				if (log.isDebugEnabled()) {

+		            log.debug("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");

+		        }

+				throw ExceptionFactory.makeWebServiceException("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");

+			}

+			if(paramTypes !=null){

+				Class paramType = paramTypes[0];

+				

+				JAXBContext ctx = JAXBContext.newInstance(new Class[]{paramType});

+				

+				BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);

+				try{

+				

+					Block block = msg.getBodyBlock(0, ctx,factory);

+					return new Object[]{block.getBusinessObject(true)};

+					

+				}catch(Exception e){

+					//FIXME: this is the bare case where child of body is not a method but a primitive data type. Reader from Block is throwing exception.

+					Block block = msg.getBodyBlock(0, ctx,factory);

+					OMElement om = block.getOMElement();

+					

+					XMLInputFactory xmlFactory = XMLInputFactory.newInstance();

+					

+					Unmarshaller u = ctx.createUnmarshaller();

+					Reader inputReader = new InputStreamReader(new ByteArrayInputStream(om.toString().getBytes()));

+					XMLStreamReader sr = xmlFactory.createXMLStreamReader(inputReader);

+					JAXBElement o =u.unmarshal(sr, paramTypes[0]);

+					return new Object[]{o.getValue()};

+				}

+				

+				

+				//Object obj = block.getBusinessObject(true);

+				//return new Object[]{obj};

+			}

+		}

+		

+		if(isSEIDocLitWrapped(ed)){

+			

+            String requestWrapperClassName = opDesc.getRequestWrapperClassName();

+            JAXBContext jbc = createJAXBContext(requestWrapperClassName);

+            BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);

+        

+            Block wrapper = msg.getBodyBlock(0, jbc, factory);

+            

+            JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();

+            

+            String[] webParamNames = opDesc.getWebParamNames();

+            ArrayList<String> elements = new ArrayList<String>(Arrays.asList(webParamNames));

+

+            Object param = wrapper.getBusinessObject(true);

+            Object[] contents = wrapperTool.unWrap(param, elements);

+            return contents;

+		}

+		return null;

+	}

+	

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getOutputParameterBlock(org.apache.axis2.jaxws.core.MessageContext, java.lang.Object)

+	 */

+	public Block getOutputParameterBlock(MessageContext mc, Object response, Method method) throws JAXBException, ClassNotFoundException, JAXBWrapperException, MessageException{

+		EndpointDescription ed = getEndpointDescription(mc);

+		OperationDescription opDesc = getOperationDescription(mc);

+		Class returnType = getReturnType(method);

+		if(isSEIDocLitBare(ed)){

+			if(returnType.isAssignableFrom(response.getClass())){

+				

+				BlockFactory bfactory = (BlockFactory) FactoryRegistry.getFactory(

+						JAXBBlockFactory.class);

+				JAXBContext ctx = JAXBContext.newInstance(new Class[]{returnType});

+				if(!isXmlRootElementDefined(returnType)){

+					String returnTypeName = opDesc.getWebResultName();

+					return createJAXBBlock(returnTypeName,response,ctx);

+				}

+				else{

+					return createJAXBBlock(response, ctx);

+					

+				}

+			}

+			else{

+				String webResult = opDesc.getWebResultName();

+				JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();

+				ArrayList<String> elements = new ArrayList<String>(Arrays.asList(webResult));

+				

+	            Object[] contents = wrapperTool.unWrap(response, elements);

+	            for(Object obj:contents){

+	            	if(returnType.getClass().isAssignableFrom(obj.getClass())){

+	            		BlockFactory bfactory = (BlockFactory) FactoryRegistry.getFactory(

+	    						JAXBBlockFactory.class);

+	    				JAXBContext ctx = JAXBContext.newInstance(new Class[]{returnType});

+	    				Block block = bfactory.createFrom(response, ctx, null);

+	    				return block;

+	            	}

+	            }

+			}

+			

+			

+		}

+		if(isSEIDocLitWrapped(ed)){

+			

+	            //We'll need a JAXBContext to marshall the response object(s).

+				String responseWrapperClazzName = opDesc.getResponseWrapperClassName();

+	            JAXBContext jbc = createJAXBContext(responseWrapperClazzName);

+	            BlockFactory bfactory = (BlockFactory) FactoryRegistry.getFactory(

+	                    JAXBBlockFactory.class);

+	            

+	            String responseWrapper = opDesc.getResponseWrapperClassName();

+	            Class responseWrapperClass = null;

+	           

+	            responseWrapperClass = Class.forName(responseWrapper, false, Thread.currentThread().getContextClassLoader());

+	            

+	            JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();

+

+	            String webResult = opDesc.getWebResultName();

+	            ArrayList<String> responseParams = new ArrayList<String>();

+	            responseParams.add(webResult);

+	 

+	            ArrayList<String> elements = new ArrayList<String>();

+	            elements.add(webResult);

+	            

+	            Map<String, Object> responseParamValues = new HashMap<String, Object>();

+	            responseParamValues.put(webResult, response);

+	            

+	            Object wrapper = wrapperTool.wrap(responseWrapperClass, 

+	                    responseWrapper, responseParams, responseParamValues);

+	            

+	            Block block = bfactory.createFrom(wrapper ,jbc, null);

+	            return block;

+	        

+		}

+		

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getJavaMethod(org.apache.axis2.jaxws.core.MessageContext)

+	 */

+	public Method getJavaMethod(MessageContext mc, Class serviceImplClass) {

+		 QName opName = mc.getOperationName();

+		 

+	        if (opName == null)

+	            // TODO: NLS

+	            throw ExceptionFactory.makeWebServiceException("Operation name was not set");

+	        

+	        String localPart = opName.getLocalPart();

+	        Method[] methods = serviceImplClass.getMethods();

+	        for (int i = 0; i < methods.length; ++i) {

+	            if (localPart.equals(methods[i].getName()))

+	                return methods[i];

+	        }

+	        

+	        if (log.isDebugEnabled()) {

+	            log.debug("No Java method found for the operation");

+	        }

+	        // TODO: NLS

+	        throw ExceptionFactory.makeWebServiceException("No Java method was found for the operation");

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getMessageContext(java.lang.reflect.Method, java.lang.Object[])

+	 */

+	public MessageContext getMessageContext(Method javaMethod, Object[] args) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getParamNames(java.lang.reflect.Method, java.lang.Object[])

+	 */

+	public ArrayList<String> getParamNames(Method method, Object[] objects){

+		return null;

+	}

+	

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getParamValues(java.lang.Object[], java.util.ArrayList)

+	 */

+	public Map<String, Object> getParamValues(Object[] objects, ArrayList<String> names){

+		return null;

+	}

+	

+	private EndpointDescription getEndpointDescription(MessageContext mc){

+  	  ServiceDescription sd = mc.getServiceDescription();

+        EndpointDescription[] eds = sd.getEndpointDescriptions();

+        return eds[0];

+  }

+  

+  private boolean isSEIDocLitBare(EndpointDescription ed){

+		SOAPBinding.ParameterStyle style = ed.getEndpointInterfaceDescription().getSoapBindingParameterStyle();

+		return style == SOAPBinding.ParameterStyle.BARE;

+	}

+	

+	private  boolean isSEIDocLitWrapped(EndpointDescription ed){

+		SOAPBinding.ParameterStyle style = ed.getEndpointInterfaceDescription().getSoapBindingParameterStyle();

+		return style == SOAPBinding.ParameterStyle.WRAPPED;

+	} 

+	

+	private JAXBContext createJAXBContext(String wrapperClassName) {

+        // This will only support Doc/Lit Wrapped params for now.

+        try {

+            

+            if (wrapperClassName != null) {

+            	Class WrapperClazz = Class.forName(wrapperClassName, true, Thread.currentThread().getContextClassLoader());

+                JAXBContext jbc = JAXBContext.newInstance(new Class[]{WrapperClazz});

+                return jbc;

+            }

+            else {

+                throw ExceptionFactory.makeWebServiceException("");

+            }

+        } catch (JAXBException e) {

+            throw ExceptionFactory.makeWebServiceException(e);

+        }catch(ClassNotFoundException e){

+        	throw ExceptionFactory.makeWebServiceException(e);

+        }

+    }

+	

+	private OperationDescription getOperationDescription(MessageContext mc) {

+        ServiceDescription sd = mc.getServiceDescription();

+        EndpointDescription[] eds = sd.getEndpointDescriptions();

+        EndpointDescription ed = eds[0];

+        EndpointInterfaceDescription eid = ed.getEndpointInterfaceDescription();

+        

+        OperationDescription[] ops = eid.getOperation(mc.getOperationName());

+        OperationDescription op = ops[0];

+        

+        if (log.isDebugEnabled()) {

+            log.debug("wsdl operation: " + op.getName());

+            log.debug("   java method: " + op.getJavaMethodName());

+        }

+        

+        return op;        

+    }

+	

+	private Class getReturnType(Method seiMethod){

+		Class returnType = seiMethod.getReturnType();

+		//pooling implementation

+		if(Response.class.isAssignableFrom(returnType)){

+			Type type = seiMethod.getGenericReturnType();

+			ParameterizedType pType = (ParameterizedType) type;

+			return (Class)pType.getActualTypeArguments()[0];	

+		}

+		//Callback Implementation

+		if(Future.class.isAssignableFrom(returnType)){

+			Type[] type = seiMethod.getGenericParameterTypes();

+			Class parameters[]= seiMethod.getParameterTypes();

+			int i=0;

+			for(Class param:parameters){

+				if(AsyncHandler.class.isAssignableFrom(param)){

+					ParameterizedType pType = (ParameterizedType)type[i];

+					return (Class)pType.getActualTypeArguments()[0];

+				}

+				i++;

+			}

+		}

+			

+		

+		

+		return returnType;	

+	}

+	private Block createJAXBBlock(String name, Object jaxbObject, JAXBContext context) throws MessageException{

+		

+		JAXBIntrospector introspector = context.createJAXBIntrospector();

+		if(introspector.isElement(jaxbObject)){

+			return createJAXBBlock(jaxbObject, context);

+		}

+		else{

+			//Create JAXBElement then use that to create JAXBBlock.

+			Class clazz = jaxbObject.getClass();

+			JAXBElement<Object> element = new JAXBElement<Object>(new QName(name), clazz, jaxbObject);

+			JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);

+			return factory.createFrom(element,context ,null);

+		}

+		

+	}

+	

+	protected Block createJAXBBlock(Object jaxbObject, JAXBContext context) throws MessageException{

+		JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		return factory.createFrom(jaxbObject,context,null);

+		

+	}

+	private boolean isXmlRootElementDefined(Class jaxbClass){

+		XmlRootElement root = (XmlRootElement) jaxbClass.getAnnotation(XmlRootElement.class);

+		return root !=null;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java
new file mode 100644
index 0000000..832c49a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java
@@ -0,0 +1,355 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.server.dispatcher;

+

+import java.lang.reflect.ParameterizedType;

+import java.lang.reflect.Type;

+

+import javax.activation.DataSource;

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.transform.Source;

+import javax.xml.ws.Provider;

+import javax.xml.ws.Service;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.core.MessageContext;

+import org.apache.axis2.jaxws.core.util.MessageContextUtils;

+import org.apache.axis2.jaxws.description.EndpointDescription;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.message.factory.SOAPEnvelopeBlockFactory;

+import org.apache.axis2.jaxws.message.factory.SourceBlockFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * The ProviderDispatcher is used to invoke instances of a target endpoint

+ * that implement the {@link javax.xml.ws.Provider} interface.

+ * 

+ * The Provider<T> is a generic class, with certain restrictions on the

+ * parameterized type T.  This implementation supports the following types:

+ * 

+ * java.lang.String

+ * javax.activation.DataSource

+ * javax.xml.soap.SOAPMessage

+ * javax.xml.transform.Source

+ *

+ */

+public class ProviderDispatcher extends JavaDispatcher{

+	

+    private static Log log = LogFactory.getLog(ProviderDispatcher.class);

+    

+    private BlockFactory blockFactory = null;

+	private Class providerType = null;

+    private Provider providerInstance = null;

+    private Service.Mode providerServiceMode = null;

+    private Message message = null;

+    private Protocol messageProtocol;

+

+	/**

+	 * Constructor

+	 * 

+	 * @param _class

+	 */

+	public ProviderDispatcher(Class _class) {

+		super(_class);

+	}

+    

+    /* (non-Javadoc)

+     * @see org.apache.axis2.jaxws.server.EndpointDispatcher#execute()

+     */

+    public MessageContext invoke(MessageContext mc) throws Exception {

+        if (log.isDebugEnabled()) {

+            log.debug("Preparing to invoke javax.xml.ws.Provider based endpoint");

+        }

+

+        providerInstance = getProviderInstance();

+        

+        // First we need to know what kind of Provider instance we're going

+        // to be invoking against

+        providerType = getProviderType();

+        

+        // Now that we know what kind of Provider we have, we can create the 

+        // right type of Block for the request parameter data

+        Object requestParamValue = null;

+        Message message = mc.getMessage();

+        if (message != null) {

+            // Save off the protocol info so we can use it when creating the response message.

+            messageProtocol = message.getProtocol();

+            // Determine what type blocks we want to create (String, Source, etc) based on Provider Type

+            BlockFactory factory = createBlockFactory(providerType);

+            

+            // REVIEW: This assumes there is only one endpoint description on the service.  Is that always the case?

+            EndpointDescription endpointDesc = mc.getServiceDescription().getEndpointDescriptions()[0];

+            providerServiceMode = endpointDesc.getServiceModeValue();

+            

+            if (providerServiceMode != null && providerServiceMode == Service.Mode.MESSAGE) {

+                // For MESSAGE mode, work with the entire message, Headers and Body

+                // This is based on logic in org.apache.axis2.jaxws.client.XMLDispatch.getValueFromMessage()

+                if (providerType.equals(SOAPMessage.class)) {

+                    // We can get the SOAPMessage directly from the message itself

+                    requestParamValue = message.getAsSOAPMessage();

+                }

+                else {

+                    // For Source and String, we have to do some conversions using the block factories

+                    // This is similar to the PAYLOAD logic, except it gets the entire message as a block

+                    // rather than just the body block (which is what PAYLOAD mode does).

+                    // TODO: This doesn't seem right to me. We should not have an intermediate StringBlock. This is not performant. Scheu 

+                    OMElement messageOM = message.getAsOMElement();

+                    String stringValue = messageOM.toString();  

+                    QName soapEnvQname = new QName("http://schemas.xmlsoap.org/soap/envelope/", "Envelope");

+                    XMLStringBlockFactory stringFactory = (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+                    Block stringBlock = stringFactory.createFrom(stringValue, null, soapEnvQname);   

+                    Block messageBlock = factory.createFrom(stringBlock, null);

+                    requestParamValue = messageBlock.getBusinessObject(true);

+                }

+            }

+            else {

+                // If it is not MESSAGE, then it is PAYLOAD (which is the default); only work with the body 

+                Block block = message.getBodyBlock(0, null, factory);

+                requestParamValue = block.getBusinessObject(true);

+            }

+        }

+

+        if (log.isDebugEnabled())

+            log.debug("Provider Type = " + providerType + "; parameter type = " + requestParamValue);

+        

+        Object input = providerType.cast(requestParamValue);

+        if (log.isDebugEnabled()) {

+            log.debug("Invoking Provider<" + providerType.getName() + "> with " +

+                    "parameter of type " + input.getClass().getName());

+        }

+

+

+        // Invoke the actual Provider.invoke() method

+        Object responseParamValue = null;

+        try {

+            responseParamValue = providerInstance.invoke(input);

+        } catch (Exception e) {

+            e.printStackTrace();

+            throw ExceptionFactory.makeWebServiceException(e);

+        }

+

+        // Create the response MessageContext from the returned value

+        Message responseMsg = createMessageFromValue(responseParamValue);

+        MessageContext responseMsgCtx = MessageContextUtils.

+            createMessageMessageContext(mc);

+        

+        responseMsgCtx.setMessage(responseMsg);

+        

+        return responseMsgCtx;        

+    }

+	

+	/**

+	 * Get the endpoint provider instance

+	 * 

+	 * @return Provider

+	 * @throws Exception

+	 */

+	public Provider getProvider() throws Exception{

+		Provider p = getProviderInstance();

+		setProvider(p);

+		return p;

+	}

+	

+	/**

+	 * Set the endpoint provider instance

+	 * 

+	 * @param _provider

+	 */

+	public void setProvider(Provider _provider) {

+		this.providerInstance = _provider;

+	}

+

+	/**

+	 * Get the parameter for a given endpoint invocation  

+	 * 

+	 * @return

+	 * @throws Exception

+	 */

+	public Message getMessage()throws Exception {

+		return message;

+	}

+

+	/**

+	 * Set the parameter for a given endpoint invocation

+	 * 

+	 * @param _parameter

+	 */

+	public void setMessage(Message msg) {

+		this.message = msg;

+	}

+    

+    /*

+     * Create a Message object out of the value object that was returned.

+     */

+    private Message createMessageFromValue(Object value) throws Exception {

+        MessageFactory msgFactory = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);

+        Message message = null;

+        

+        if (value != null) {

+            BlockFactory factory = createBlockFactory(providerType);

+            if (providerServiceMode != null && providerServiceMode == Service.Mode.MESSAGE) {

+                // For MESSAGE mode, work with the entire message, Headers and Body

+                // This is based on logic in org.apache.axis2.jaxws.client.XMLDispatch.createMessageFromBundle()

+                if (value instanceof SOAPMessage) {

+                    message = msgFactory.createFrom((SOAPMessage) value);

+                }

+                else {

+                    Block block = factory.createFrom(value, null, null);

+                    message = msgFactory.createFrom(block, null);

+                }

+            }

+            else {

+                // PAYLOAD mode deals only with the body of the message.

+                Block block = factory.createFrom(value, null, null);

+                message = msgFactory.create(messageProtocol);

+                message.setBodyBlock(0, block);

+            }

+        }

+        

+        if (message == null)

+            // If we didn't create a message above (because there was no value), create one here

+            message = msgFactory.create(messageProtocol);

+            

+

+        return message;

+    }

+

+	/*

+	 * Determine the Provider type for this instance

+	 */

+	private Provider getProviderInstance() throws Exception{

+    	Class<?> clazz = getProviderType();

+    	

+        if(!isValidProviderType(clazz)){

+    		//TODO This will change once deployment code it in place

+    		throw new Exception(Messages.getMessage("InvalidProvider", clazz.getName()));

+    	}

+        

+        Provider provider = null;

+    	if(clazz == String.class){

+    		provider = (Provider<String>) serviceImplClass.newInstance();

+    	}

+        else if(clazz == Source.class){

+    		provider = (Provider<Source>) serviceImplClass.newInstance();

+    	}

+        else if(clazz == SOAPMessage.class){

+    		provider = (Provider<SOAPMessage>) serviceImplClass.newInstance();

+    	}

+        else if(clazz == JAXBContext.class){

+    		provider = (Provider<JAXBContext>) serviceImplClass.newInstance();

+    	}

+    	

+        if (provider == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("InvalidProviderCreate", clazz.getName()));

+        }

+        

+    	return provider;

+    	

+    }

+    

+    /*

+     * Get the provider type from a given implemention class instance

+     */

+    private Class<?> getProviderType()throws Exception{

+

+    	Class providerType = null;

+    	

+    	Type[] giTypes = serviceImplClass.getGenericInterfaces();

+    	for(Type giType : giTypes){

+    		ParameterizedType paramType = null;

+    		try{

+    			paramType = (ParameterizedType)giType;

+    		}catch(ClassCastException e){

+    			throw new Exception("Provider based SEI Class has to implement javax.xml.ws.Provider as javax.xml.ws.Provider<String>, javax.xml.ws.Provider<SOAPMessage>, javax.xml.ws.Provider<Source> or javax.xml.ws.Provider<JAXBContext>");

+    		}

+    		Class interfaceName = (Class)paramType.getRawType();

+    		

+    		if(interfaceName == javax.xml.ws.Provider.class){

+    			if(paramType.getActualTypeArguments().length > 1){

+    				throw new Exception("Provider cannot have more than one Generic Types defined as Per JAX-WS Specification");

+    			}

+    			providerType = (Class)paramType.getActualTypeArguments()[0];

+    		}

+    	}

+        return providerType;

+    }

+    

+    /*

+     * Validate whether or not the Class passed in is a valid type of 

+     * javax.xml.ws.Provider<T>.  Per the JAX-WS 2.0 specification, the 

+     * parameterized type of a Provider can only be: 

+     * 

+     *   javax.xml.transform.Source

+     *   javax.xml.soap.SOAPMessage

+     *   javax.activation.DataSource

+     *   

+     * We've also added support for String types which is NOT dictated

+     * by the spec.

+     */

+    private boolean isValidProviderType(Class clazz){	

+    	boolean valid = clazz == String.class || 

+            clazz == SOAPMessage.class || 

+            clazz == Source.class ||

+            clazz == DataSource.class;

+        

+        if (log.isDebugEnabled()) {

+            log.debug("Class " + clazz.getName() + " is not a valid Provider<T> type");

+        }

+        

+        return valid; 

+    }

+    

+    /*

+     * Given a target class type for a payload, load the appropriate BlockFactory.

+     */

+    private BlockFactory createBlockFactory(Class type) {

+        if (blockFactory != null)

+            return blockFactory;

+        

+        if (type.equals(String.class)) {

+            blockFactory = (XMLStringBlockFactory) FactoryRegistry.getFactory(

+                    XMLStringBlockFactory.class);

+        }

+        else if (type.equals(Source.class)) {

+            blockFactory = (SourceBlockFactory) FactoryRegistry.getFactory(

+                    SourceBlockFactory.class);

+        }

+        else if (type.equals(SOAPMessage.class)) {

+            blockFactory = (SOAPEnvelopeBlockFactory) FactoryRegistry.getFactory(

+                    SOAPEnvelopeBlockFactory.class);

+        }

+        else {

+            ExceptionFactory.makeWebServiceException("Unable to find BlockFactory " +

+                    "for type: " + type.getClass().getName());

+        }

+        

+        return blockFactory;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/spi/Provider.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/spi/Provider.java
new file mode 100644
index 0000000..cf238aa
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/spi/Provider.java
@@ -0,0 +1,44 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.spi;

+

+import java.net.URL;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.Endpoint;

+import javax.xml.ws.spi.ServiceDelegate;

+

+

+public class Provider extends javax.xml.ws.spi.Provider {

+

+    @Override

+    public Endpoint createAndPublishEndpoint(String s, Object obj) {

+        // TODO Auto-generated method stub

+        return null;

+    }

+

+    @Override

+    public Endpoint createEndpoint(String s, Object obj) {

+        // TODO Auto-generated method stub

+        return null;

+    }

+

+    @Override

+    public ServiceDelegate createServiceDelegate(URL url, QName qname, Class clazz){

+        return new org.apache.axis2.jaxws.spi.ServiceDelegate(url, qname, clazz);

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java
new file mode 100644
index 0000000..5cd334b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java
@@ -0,0 +1,425 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.spi;

+

+import java.lang.reflect.Proxy;

+import java.net.URL;

+import java.util.Hashtable;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.concurrent.Executor;

+import java.util.concurrent.Executors;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.ws.BindingProvider;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.Service.Mode;

+import javax.xml.ws.handler.HandlerResolver;

+import javax.xml.ws.http.HTTPBinding;

+import javax.xml.ws.soap.SOAPBinding;

+

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.jaxws.ExceptionFactory;

+import org.apache.axis2.jaxws.JAXWSClientContext;

+import org.apache.axis2.jaxws.client.JAXBDispatch;

+import org.apache.axis2.jaxws.client.XMLDispatch;

+import org.apache.axis2.jaxws.client.factory.DescriptorFactory;

+import org.apache.axis2.jaxws.client.factory.ProxyHandlerFactory;

+import org.apache.axis2.jaxws.client.proxy.BaseProxyHandler;

+import org.apache.axis2.jaxws.client.proxy.ProxyDescriptor;

+import org.apache.axis2.jaxws.description.DescriptionFactory;

+import org.apache.axis2.jaxws.description.ServiceDescription;

+import org.apache.axis2.jaxws.handler.PortData;

+import org.apache.axis2.jaxws.handler.PortInfoImpl;

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.apache.axis2.jaxws.util.WSDLWrapper;

+

+/**

+ * The ServiceDelegate serves as the backing implementation for all of the 

+ * methods in the {@link javax.xml.ws.Service} API.  This is the plug 

+ * point for the client implementation. 

+ */

+public class ServiceDelegate extends javax.xml.ws.spi.ServiceDelegate {

+    private Executor executor;

+    private Map<QName, org.apache.axis2.jaxws.handler.PortData> ports;

+

+    private ServiceDescription serviceDescription;

+    private QName serviceQname;

+    private ServiceClient serviceClient = null;

+    // If no binding ID is available, use this one

+    private static String DEFAULT_BINDING_ID = SOAPBinding.SOAP11HTTP_BINDING;

+    

+    public ServiceDelegate(URL url, QName qname, Class clazz) throws WebServiceException{

+    	super();

+    	this.serviceQname = qname;

+    	ports = new Hashtable<QName, PortData>();

+

+        if(!isValidServiceName()){

+    		throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDelegateConstruct0", ""));

+    	}

+        serviceDescription = DescriptionFactory.createServiceDescription(url, serviceQname, clazz);

+        if (isValidWSDLLocation()) {

+            if(!isServiceDefined(serviceQname)){

+            	throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDelegateConstruct0", serviceQname.toString(), url.toString()));

+            }

+            readPorts();

+        }

+    }

+    

+    //================================================

+    // JAX-WS API methods

+    //================================================

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#addPort(javax.xml.namespace.QName, java.lang.String, java.lang.String)

+     */

+    // Creates a DISPATCH ONLY port.  Per JAXWS Sec 4.1 javax.xm..ws.Service, p. 49, ports added via addPort method

+    // are only suitibale for creating Distpach instances.

+    public void addPort(QName portName, String bindingId, String endpointAddress)

+        throws WebServiceException {

+        

+        addPortData(portName, bindingId, endpointAddress);

+        DescriptionFactory.updateEndpoint(serviceDescription, null, portName, ServiceDescription.UpdateType.ADD_PORT);

+    }

+    /**

+     * Add a new port (either endpoint based or dispatch based) to the portData table.

+     * @param portName

+     * @param bindingId

+     * @param endpointAddress

+     */

+    private void addPortData(QName portName, String bindingId, String endpointAddress) {

+        if(portName == null ){

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("addPortErr2"));

+        }

+        

+        if(bindingId!=null && !(bindingId.equals(SOAPBinding.SOAP11HTTP_BINDING) ||

+                bindingId.equals(SOAPBinding.SOAP12HTTP_BINDING))){

+            // TODO Is this the correct exception. Shouldn't this be a WebServiceException ?

+            throw new UnsupportedOperationException(Messages.getMessage("addPortErr0", portName.toString()));

+        }

+        

+        if (bindingId == null) {

+            bindingId = DEFAULT_BINDING_ID;

+        }

+

+        if(!ports.containsKey(portName)){   

+            PortData port = new PortInfoImpl(serviceQname, portName, bindingId, endpointAddress);

+            ports.put(portName, port);

+        }

+        else{

+            //TODO: Can same port have two different set of SOAPAddress

+            /*PortInfoImpl port =(PortInfoImpl) ports.get(portName);

+            port.setBindingID(bindingId);

+            port.setEndPointAddress(endpointAddress);

+            */

+            throw new WebServiceException(Messages.getMessage("addPortDup", portName.toString()));

+        }

+    }

+

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#createDispatch(javax.xml.namespace.QName, java.lang.Class, javax.xml.ws.Service.Mode)

+     */

+    public <T> Dispatch<T> createDispatch(QName qname, Class<T> clazz, Mode mode) throws WebServiceException {

+    	if(qname == null){

+    		throw ExceptionFactory.makeWebServiceException(Messages.getMessage("createDispatchFail0"));

+    	}

+    	

+    	if(!isPortValid(qname)){

+    		throw ExceptionFactory.makeWebServiceException(Messages.getMessage("createDispatchFail1", qname.toString()));

+    	}

+    	

+        PortData portData = (PortData) ports.get(qname);

+        if(portData == null){

+        	throw ExceptionFactory.makeWebServiceException(Messages.getMessage("createDispatchFail2", qname.toString())); 

+    	}

+        

+        DescriptionFactory.updateEndpoint(serviceDescription, null, qname, ServiceDescription.UpdateType.CREATE_DISPATCH);

+

+        // FIXME: This call needs to be revisited.  Not really sure what we're trying to do here. 

+        addBinding(portData.getBindingID());

+    	

+        XMLDispatch<T> dispatch = new XMLDispatch<T>(portData);

+        if (mode != null) {

+            dispatch.setMode(mode);

+        }

+        else {

+            dispatch.setMode(Service.Mode.PAYLOAD);

+        }

+        

+        if (serviceClient == null)

+            serviceClient = getServiceClient(qname);

+        

+        dispatch.setServiceClient(serviceClient);

+        dispatch.setServiceDelegate(this);

+    	

+        return dispatch;        

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#createDispatch(javax.xml.namespace.QName, javax.xml.bind.JAXBContext, javax.xml.ws.Service.Mode)

+     */

+    public Dispatch<java.lang.Object> createDispatch(QName qname, JAXBContext context, Mode mode) {

+        if (qname == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("createDispatchFail0"));

+        }

+        

+        if (!isPortValid(qname)) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("createDispatchFail1", qname.toString()));

+        }

+

+        DescriptionFactory.updateEndpoint(serviceDescription, null, qname, ServiceDescription.UpdateType.CREATE_DISPATCH);

+        

+        PortData portData = (PortData) ports.get(qname);

+        addBinding(portData.getBindingID());

+        

+        JAXWSClientContext clientCtx = createClientContext(portData, Object.class, mode);

+        clientCtx.setJAXBContext(context);

+        

+        JAXBDispatch<Object> dispatch = new JAXBDispatch(portData);

+        

+        if (mode != null) {

+            dispatch.setMode(mode);

+        }

+        else {

+            dispatch.setMode(Service.Mode.PAYLOAD);

+        }

+        

+        if (serviceClient == null)

+            serviceClient = getServiceClient(qname);

+        

+        dispatch.setJAXBContext(context);

+        dispatch.setServiceClient(serviceClient);

+        dispatch.setServiceDelegate(this);

+        

+        return dispatch;

+    }

+

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#getPort(java.lang.Class)

+     */

+    public <T> T getPort(Class<T> sei) throws WebServiceException {

+       return getPort(null, sei);

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#getPort(javax.xml.namespace.QName, java.lang.Class)

+     */

+    public <T> T getPort(QName portName, Class<T> sei) throws WebServiceException {

+        /* TODO Check to see if WSDL Location is provided.

+         * if not check WebService annotation's WSDLLocation

+         * if both are not provided then throw exception.

+         * (JLB): I'm not sure lack of WSDL should cause an exception

+         */

+        

+

+    	if(!isValidWSDLLocation()){

+    		//TODO: Should I throw Exception if no WSDL

+    		//throw ExceptionFactory.makeWebServiceException("WSLD Not found");

+    	}

+    	if(sei == null){

+    		throw ExceptionFactory.makeWebServiceException(Messages.getMessage("getPortInvalidSEI", portName.toString(), "null"));

+    	}

+    	/*TODO: if portQname is null then fetch it from annotation. 

+    	 * if portQname is provided then add that to the ports table.

+    	 */

+        // TODO: Move the annotation processing to the DescriptionFactory

+        DescriptionFactory.updateEndpoint(serviceDescription, sei, portName, ServiceDescription.UpdateType.GET_PORT);

+

+        

+    	if(portName!=null){

+    		String address = "";

+    		if(isValidWSDLLocation()){

+    			address = getWSDLWrapper().getSOAPAddress(serviceQname, portName);

+    		}

+    		if(ports.get(portName)==null){

+                addPortData(portName, null, address);

+    		}

+    	}

+    	DescriptorFactory df = (DescriptorFactory)FactoryRegistry.getFactory(DescriptorFactory.class);

+    	ProxyDescriptor pd = df.create(sei, serviceDescription);

+    	pd.setPort(ports.get(portName));

+    	ProxyHandlerFactory phf =(ProxyHandlerFactory) FactoryRegistry.getFactory(ProxyHandlerFactory.class);

+    	BaseProxyHandler proxyHandler = phf.create(pd, this);

+    	

+    	Class[] seiClazz = new Class[]{sei, BindingProvider.class};

+    	Object proxyClass = Proxy.newProxyInstance(sei.getClassLoader(), seiClazz, proxyHandler);

+    	

+    	return sei.cast(proxyClass);

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#getExecutor()

+     */

+    public Executor getExecutor() {

+    	//FIXME: Use client provider executor too.	

+        executor = getDefaultExecutor();

+        return executor;

+     }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#getHandlerResolver()

+     */

+    public HandlerResolver getHandlerResolver() {

+        return null;

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#getPorts()

+     */

+    public Iterator<QName> getPorts() {

+        return null;

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#getServiceName()

+     */

+    public QName getServiceName() {

+        return serviceQname;

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#getWSDLDocumentLocation()

+     */

+    public URL getWSDLDocumentLocation() {

+        return serviceDescription.getWSDLLocation();

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#setExecutor(java.util.concurrent.Executor)

+     */

+    public void setExecutor(Executor e) {

+        if (e == null) {

+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("cannotSetExcutorToNull"));

+        }

+        

+        executor = e;

+    }

+    

+    /*

+     * (non-Javadoc)

+     * @see javax.xml.ws.spi.ServiceDelegate#setHandlerResolver(javax.xml.ws.handler.HandlerResolver)

+     */

+    public void setHandlerResolver(HandlerResolver handlerresolver) {

+        

+    }

+    

+    //================================================

+    // Internal public APIs

+    //================================================

+    

+    /**

+     * Get the ServiceDescription tree that this ServiceDelegate 

+     */

+    public ServiceDescription getServiceDescription() {

+        return serviceDescription;

+    }

+    

+    //TODO Change when ServiceDescription has to return ServiceClient or OperationClient

+    /**

+     * 

+     */

+    public ServiceClient getServiceClient(QName portQName) throws WebServiceException {

+    	return serviceDescription.getServiceClient(portQName);      

+    }

+

+    //================================================

+    // Impl methods

+    //================================================

+    

+    //TODO: Need to make the default number of threads configurable

+    private Executor getDefaultExecutor(){

+        return Executors.newFixedThreadPool(3);

+    }

+

+    private <T> JAXWSClientContext<T> createClientContext(PortData portData, Class<T> clazz, Mode mode){

+        JAXWSClientContext<T> clientContext = new JAXWSClientContext<T>();

+        clientContext.setServiceDescription(serviceDescription);

+        clientContext.setPort(portData);

+        clientContext.setClazz(clazz);

+        clientContext.setServiceMode(mode);

+        clientContext.setExecutor(this.getExecutor());  

+        return clientContext;

+    }

+    

+    private boolean isPortValid(QName portName){

+    	return ports!=null && ports.size() >0 && ports.containsKey(portName);

+    }

+

+    private boolean isValidServiceName(){

+    	return serviceQname != null && !"".equals(serviceQname.toString().trim());	

+    }

+

+    private boolean isValidWSDLLocation(){

+        URL wsdlLocation = getWSDLDocumentLocation();

+    	return wsdlLocation != null && !"".equals(wsdlLocation.toString().trim());

+    }

+    

+    private void readPorts(){

+    	String[] portNames = getWSDLWrapper().getPorts(serviceQname);

+    	String targetNamespace = getWSDLWrapper().getTargetNamespace();

+    	for(String portName: portNames){

+    		QName portQname = new QName(targetNamespace, portName);

+    		String address = getWSDLWrapper().getSOAPAddress(serviceQname, portQname);

+    		//TODO: get Binding ID from WSDL and add it here.

+    		PortData portInfo = new PortInfoImpl(serviceQname, portQname, DEFAULT_BINDING_ID, address);

+    		ports.put(portQname, portInfo);

+    	}

+    }

+    

+    // TODO: Remove this method and put the WSDLWrapper methods on the ServiceDescriptor directly

+    private WSDLWrapper getWSDLWrapper() {

+    	return serviceDescription.getWSDLWrapper();

+    }

+    

+    private boolean isServiceDefined(QName serviceName){

+    	return getWSDLWrapper().getService(serviceName)!= null;

+    }

+    

+    private void addBinding(String bindingId){

+        // TODO: before creating binding do I have to do something with Handlers ... how is Binding related to Handler, this mistry sucks!!!

+        if(bindingId != null){

+	        //TODO: create all the bindings here

+	        if(bindingId.equals(SOAPBinding.SOAP11HTTP_BINDING)){

+	        	//instantiate soap11 binding implementation here and call setBinding in BindingProvider

+	        }

+	        

+	        if(bindingId.equals(SOAPBinding.SOAP12HTTP_BINDING)){

+	        	//instantiate soap11 binding implementation here and call setBinding in BindingProvider

+	        }

+	        

+	        if(bindingId.equals(HTTPBinding.HTTP_BINDING)){

+	        	//instantiate http binding implementation here and call setBinding in BindingProvider

+	        }

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/AxisReceiver.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/AxisReceiver.java
new file mode 100644
index 0000000..0bfa96c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/AxisReceiver.java
@@ -0,0 +1,81 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.util;

+

+

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.client.async.AsyncResult;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.engine.MessageReceiver;

+import org.apache.axis2.jaxws.param.Parameter;

+

+

+public class AxisReceiver implements MessageReceiver {

+	private AsyncResult result = null;

+	private SOAPEnvelope envelope = null;

+	private Parameter param = null;

+	

+	boolean complete = false;

+	public AxisReceiver(Parameter param){

+		this.param = param;

+	}

+

+	public void receive(MessageContext messageCtx) throws AxisFault {  

+        result = new AsyncResult(messageCtx);

+        envelope = result.getResponseEnvelope();

+        this.complete = true;

+        System.out.println("Receiver Called");      

+        

+    }

+	

+	public boolean isdone(){

+		return complete;

+	}

+	

+	public AsyncResult getResponseResult(){

+		return result;

+	}

+	

+	public SOAPEnvelope getResponseEnvelope(){

+		return envelope;

+	}

+	

+	public Object getObject(){

+		param.fromOM(getElement());

+		return param.getValue();

+	}

+	

+	public Object getObject(Parameter param){

+		param.fromOM(getElement());

+		return param.getValue();

+	}

+	

+	private OMElement getElement(){

+    	XMLStreamReader parser = envelope.getXMLStreamReader();

+    	StAXOMBuilder builder =

+            new StAXOMBuilder(OMAbstractFactory.getOMFactory(), parser); 

+        return builder.getDocumentElement();

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/Constants.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/Constants.java
new file mode 100644
index 0000000..9eb5de4
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/Constants.java
@@ -0,0 +1,42 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.util;

+

+import javax.xml.namespace.QName;

+

+public class Constants {

+    public static final String URI_WSDL_SOAP11 = "http://schemas.xmlsoap.org/wsdl/soap/";

+    public static final String URI_WSDL_SOAP12 = "http://schemas.xmlsoap.org/wsdl/soap12/";

+    public static final String URI_WSDL_SOAP11_BODY = "http://schemas.xmlsoap.org/wsdl/soap/";

+    public static final String URI_WSDL_SOAP12_BODY ="http://schemas.xmlsoap.org/wsdl/soap12/";

+    public static final String URI_WSDL_SOAP11_HEADER = "http://schemas.xmlsoap.org/wsdl/soap/";

+    public static final String URI_WSDL_SOAP12_HEADER = "http://schemas.xmlsoap.org/wsdl/soap12/";

+    public static final String URI_WSDL_SOAP11_BINDING = "http://schemas.xmlsoap.org/wsdl/soap/";

+    public static final String URI_WSDL_SOAP12_BINDING ="http://schemas.xmlsoap.org/wsdl/soap12/";

+

+    public static final String POLICY = "http://schemas.xmlsoap.org/ws/2004/09/policy";

+    public static final String POLICY_REFERENCE = "http://schemas.xmlsoap.org/ws/2004/09/policy";

+    

+    public static final String SCHEMA = "http://www.w3.org/2001/XMLSchema";

+    

+    public static final String AXIS2_REPO_PATH = "org.apache.axis2.jaxws.repo.path";

+    public static final String AXIS2_CONFIG_PATH = "org.apache.axis2.jaxws.config.path";

+    public static final String USE_ASYNC_MEP = "org.apache.axis2.jaxws.use.async.mep";

+    

+    public static final String THREAD_CONTEXT_MIGRATOR_LIST_ID = "JAXWS-ThreadContextMigrator-List";

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/SimpleServer.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/SimpleServer.java
new file mode 100644
index 0000000..338740a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/SimpleServer.java
@@ -0,0 +1,75 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.util;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.transport.http.SimpleHTTPServer;

+

+

+

+public class SimpleServer {

+

+    private static SimpleHTTPServer server;

+    private String repositoryDir;

+    private int port = 8080;

+    

+	public void init() {

+        repositoryDir = System.getProperty("build.repository");

+        System.out.println(">> repositoryDir = " + repositoryDir);

+        

+        String axis2xml = System.getProperty("axis2.config");

+        System.out.println(">> axis2.xml     = " + axis2xml);

+        

+        try {

+            ConfigurationContext config = ConfigurationContextFactory.createConfigurationContextFromFileSystem(

+                    repositoryDir, axis2xml);

+            server = new SimpleHTTPServer(config, port);

+        } catch (AxisFault e) {

+            e.printStackTrace();

+        }

+    }

+    

+    public void start() {

+        System.out.println("------------ starting server ---------------");

+        init();

+        if (server != null) {

+            try {

+                server.start();

+            } catch (AxisFault e) {

+                e.printStackTrace();

+            }

+        }

+        System.out.println("------------------ done --------------------");

+    }

+    

+    public void stop() {

+        System.out.println("------------ stopping server ---------------");

+        if (server != null) {

+            server.stop();

+        }

+        System.out.println("------------------ done --------------------");

+    }

+    

+    public static void main(String[] args) throws Exception {

+        org.apache.log4j.BasicConfigurator.configure();

+        SimpleServer server = new SimpleServer();

+        server.start();

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/SoapUtils.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/SoapUtils.java
new file mode 100644
index 0000000..9fba835
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/SoapUtils.java
@@ -0,0 +1,48 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.util;

+

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+

+public class SoapUtils {

+	

+	

+	public static OMElement getOMElement(SOAPEnvelope response){

+    	XMLStreamReader parser = response.getXMLStreamReader();

+    	

+    	StAXOMBuilder builder =

+            new StAXOMBuilder(OMAbstractFactory.getOMFactory(), parser); 

+        

+        return builder.getDocumentElement();

+    	

+    }

+	

+	public static SOAPFactory getSoapFactory(String soapVersionURI){

+        if("http://www.w3.org/2003/05/soap-envelope".equals(soapVersionURI))

+            return OMAbstractFactory.getSOAP12Factory();

+        else

+            return OMAbstractFactory.getSOAP11Factory();

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/WSDL4JWrapper.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/WSDL4JWrapper.java
new file mode 100644
index 0000000..74cb1dc
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/WSDL4JWrapper.java
@@ -0,0 +1,275 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.util;

+

+

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+

+import javax.wsdl.Binding;

+import javax.wsdl.BindingOperation;

+import javax.wsdl.Definition;

+import javax.wsdl.Port;

+import javax.wsdl.Service;

+import javax.wsdl.WSDLException;

+import javax.wsdl.extensions.ExtensibilityElement;

+import javax.wsdl.extensions.soap.SOAPAddress;

+import javax.wsdl.extensions.soap.SOAPOperation;

+import javax.wsdl.factory.WSDLFactory;

+import javax.wsdl.xml.WSDLReader;

+import javax.xml.namespace.QName;

+

+

+

+public class WSDL4JWrapper implements WSDLWrapper {

+    

+	private Definition wsdlDefinition = null;

+	private URL wsdlURL;

+	

+    public WSDL4JWrapper(URL wsdlURL)throws WSDLException{

+		super();

+		this.wsdlURL = wsdlURL;

+		WSDLFactory factory = WSDLFactory.newInstance();

+		WSDLReader reader = factory.newWSDLReader();

+		wsdlDefinition = reader.readWSDL(wsdlURL.toString());

+		

+	}

+	//TODO: Perform validations for each method to check for null parameters on QName.

+	

+	public Definition getDefinition(){

+		return wsdlDefinition;

+	}

+

+	

+	public Binding getFirstPortBinding(QName serviceQname) {

+		// TODO Auto-generated method stub

+		Service service = getService(serviceQname);

+		if(service == null){

+			return null;

+		}

+		Map map = getService(serviceQname).getPorts();

+		if(map == null || map.isEmpty() ){

+    		return null;

+    	}

+    	for(Object listObject : map.values()){

+    		Port wsdlPort = (Port)listObject;

+    		return wsdlPort.getBinding();

+    		

+    	}

+    	return null;

+		

+	}

+	

+	public String getOperationName(QName serviceQname, QName portQname){

+		Port port = getPort(serviceQname, portQname);

+		Binding binding = port.getBinding();

+		if(binding==null){

+			return null;

+		}

+		

+		List operations = binding.getBindingOperations();

+		for(Object opObj : operations){

+			BindingOperation operation = (BindingOperation)opObj;

+			return operation.getName();

+		}

+		return null;

+	}

+

+	private Port getPort(QName serviceQname, QName eprQname){

+		Service service = getService(serviceQname);

+		if(service == null){

+			return null;

+		}

+		return service.getPort(eprQname.getLocalPart());

+		

+	}

+	

+	public  ArrayList getPortBinding(QName serviceQname) {

+		// TODO Auto-generated method stub

+		Map map = this.getService(serviceQname).getPorts();

+    	if(map == null || map.isEmpty() ){

+    		return null;

+    	}

+    	ArrayList<Binding> portBindings = new ArrayList<Binding>();

+    	for(Object listObject : map.values()){

+    		Port wsdlPort = (Port)listObject;

+    		Binding binding = wsdlPort.getBinding();

+    		if(binding !=null){

+    			portBindings.add(binding);

+    		}

+    	

+    	}

+    	return portBindings;

+		

+	}

+

+	public String getPortBinding(QName serviceQname, QName portQname){

+		Port port = getPort(serviceQname, portQname);

+		if(port == null){

+			return null;

+		}

+		Binding binding = port.getBinding();

+		return binding.getQName().getLocalPart();

+	}

+	

+	public String[] getPorts(QName serviceQname){

+		String[] portNames = null;

+		Service service = this.getService(serviceQname);

+		if(service == null){

+			return null;

+		}

+		Map map = service.getPorts();

+		if(map == null || map.isEmpty()){

+			return null;

+		}

+		portNames = new String[map.values().size()];

+		Iterator iter = map.values().iterator();

+		for(int i=0; iter.hasNext(); i++){

+			Port wsdlPort = (Port)iter.next();

+			if(wsdlPort!=null){

+				portNames[i] = wsdlPort.getName();

+			}

+		}

+		return portNames;

+	}

+	

+	public Service getService(QName serviceQname) {

+		// TODO Auto-generated method stub

+		if(serviceQname == null){

+			return null;

+		}

+		return wsdlDefinition.getService(serviceQname);

+		

+	}

+	

+	public String getSOAPAction(QName serviceQname) {

+		// TODO Auto-generated method stub

+		Binding binding = getFirstPortBinding(serviceQname);

+		if(binding==null){

+			return null;

+		}

+		List operations = binding.getBindingOperations();

+		for(Object opObj : operations){

+			BindingOperation operation = (BindingOperation)opObj;

+			List exElements =operation.getExtensibilityElements();

+			for(Object elObj:exElements){

+				ExtensibilityElement exElement = (ExtensibilityElement)elObj;

+				if(isSoapOperation(exElement)){

+					SOAPOperation soapOperation = (SOAPOperation)exElement;

+					return soapOperation.getSoapActionURI();

+				}

+			}

+		}

+		return null;

+	}

+	

+	public String getSOAPAction(QName serviceQname, QName portQname) {

+		// TODO Auto-generated method stub

+		Port port = getPort(serviceQname, portQname);

+		if(port == null){

+			return null;

+		}

+		Binding binding = port.getBinding();

+		if(binding==null){

+			return null;

+		}

+		List operations = binding.getBindingOperations();

+		for(Object opObj : operations){

+			BindingOperation operation = (BindingOperation)opObj;

+			List exElements =operation.getExtensibilityElements();

+			for(Object elObj:exElements){

+				ExtensibilityElement exElement = (ExtensibilityElement)elObj;

+				if(isSoapOperation(exElement)){

+					SOAPOperation soapOperation = (SOAPOperation)exElement;

+						return soapOperation.getSoapActionURI();

+				}

+			}

+		}

+		return null;

+	}

+

+	public String getSOAPAction(QName serviceQname, QName portQname, QName operationQname) {

+		Port port = getPort(serviceQname, portQname);

+		if(port == null){

+			return null;

+		}

+		Binding binding = port.getBinding();

+		if(binding==null){

+			return null;

+		}

+		List operations = binding.getBindingOperations();

+		if(operations == null){

+			return null;

+		}

+		BindingOperation operation = null;

+		for(Object opObj : operations){

+			operation = (BindingOperation)opObj;

+		}

+		List exElements =operation.getExtensibilityElements();

+		for(Object elObj:exElements){

+			ExtensibilityElement exElement = (ExtensibilityElement)elObj;

+			if(isSoapOperation(exElement)){

+				SOAPOperation soapOperation = (SOAPOperation)exElement;

+				if(soapOperation.getElementType().equals(operationQname)){

+					return soapOperation.getSoapActionURI();

+				}

+			}

+		}

+		

+		return null;

+	}

+	public String getSOAPAddress(QName serviceQname, QName eprQname) {

+		// TODO Auto-generated method stub

+		List list =getPort(serviceQname, eprQname).getExtensibilityElements();

+		for(Object obj : list){

+			ExtensibilityElement element = (ExtensibilityElement)obj;

+			if(isSoapAddress(element)){

+				SOAPAddress address = (SOAPAddress)element;

+				return address.getLocationURI();

+			}

+		}

+		

+		return null;

+	}

+	

+	

+	

+	public URL getWSDLLocation() {

+		// TODO Auto-generated method stub

+		return this.wsdlURL;

+	}

+	private boolean isSoapAddress(ExtensibilityElement exElement){

+		return WSDLWrapper.SOAP_11_ADDRESS.equals(exElement.getElementType()); 

+		//TODO: Add soap12 support later

+		//|| WSDLWrapper.SOAP_12_ADDRESS.equals(exElement.getElementType());

+	}

+	

+	private boolean isSoapOperation(ExtensibilityElement exElement){

+		return WSDLWrapper.SOAP_11_OPERATION.equals(exElement.getElementType()); 

+		//TODO: Add Soap12 support later

+		// || WSDLWrapper.SOAP_12_OPERATION.equals(exElement.getElementType());

+	}

+	public String getTargetNamespace() {

+		// TODO Auto-generated method stub

+		return wsdlDefinition.getTargetNamespace();

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/WSDLWrapper.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/WSDLWrapper.java
new file mode 100644
index 0000000..c987b93
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/util/WSDLWrapper.java
@@ -0,0 +1,55 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.util;

+

+

+import java.net.URL;

+import java.util.ArrayList;

+

+import javax.wsdl.Definition;

+import javax.xml.namespace.QName;

+

+public interface WSDLWrapper {

+    public static final QName POLICY = new QName(Constants.POLICY, "Policy");

+    public static final QName POLICY_REFERENCE = new QName(Constants.POLICY_REFERENCE, "PolicyReference");

+    public static final QName SCHEMA = new QName(Constants.SCHEMA, "schema");

+    public static final QName SOAP_11_ADDRESS = new QName(Constants.URI_WSDL_SOAP11, "address");

+    public static final QName SOAP_11_BINDING = new QName(Constants.URI_WSDL_SOAP11_BINDING, "binding");

+    public static final QName SOAP_11_BODY = new QName(Constants.URI_WSDL_SOAP11_BODY, "body");

+    public static final QName SOAP_11_HEADER = new QName(Constants.URI_WSDL_SOAP11_HEADER, "header");

+    public static final QName SOAP_11_OPERATION = new QName(Constants.URI_WSDL_SOAP11, "operation");

+    public static final QName SOAP_12_ADDRESS = new QName(Constants.URI_WSDL_SOAP12, "address");

+    public static final QName SOAP_12_BINDING = new QName(Constants.URI_WSDL_SOAP12_BINDING, "binding");

+    public static final QName SOAP_12_BODY = new QName(Constants.URI_WSDL_SOAP12_BODY, "body");

+    public static final QName SOAP_12_HEADER = new QName(Constants.URI_WSDL_SOAP12_HEADER, "header");

+    public static final QName SOAP_12_OPERATION = new QName(Constants.URI_WSDL_SOAP11, "operation");

+    

+	public Object getFirstPortBinding(QName serviceQname);

+	public String getOperationName(QName serviceQname, QName portQname);

+	public ArrayList getPortBinding(QName serviceQname);

+	public String getPortBinding(QName serviceQname, QName portQname);

+	public String[] getPorts(QName serviceQname);

+	public Object getService(QName serviceQname);

+	public String getSOAPAction(QName serviceQname);

+	public String getSOAPAction(QName serviceQname, QName portQname);

+	public String getSOAPAction(QName serviceQname, QName portQName, QName operationQname);

+	public String getSOAPAddress(QName serviceQname, QName portQname);

+	public URL getWSDLLocation();

+	public String getTargetNamespace();

+	public Definition getDefinition();

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/JAXBWrapperTool.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/JAXBWrapperTool.java
new file mode 100644
index 0000000..0600c7d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/JAXBWrapperTool.java
@@ -0,0 +1,65 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.wrapper;

+

+import java.util.ArrayList;

+import java.util.Map;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.JAXBElement;

+

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperException;

+

+

+public interface JAXBWrapperTool {

+	/**

+     * unwrap

+     * Returns the list of child elements of the jaxb object

+     * @param javab Object that is the wrapper element

+     * @param jaxbContext JAXBContext

+     * @param childNames list of xml child names as String

+     * @return list of Objects in the same order as the element names.

+     */

+   public Object[] unWrap(Object jaxbObject, ArrayList<String> childNames) throws JAXBWrapperException;

+

+

+    /**

+     * wrap

+     * Creates a jaxb object that is initialized with the child objects

+     * @param javabClass Class of the JAXB object to return

+     * @param jaxbContext JAXBContext

+     * @param childObjects, component objects

+     * @param childNames list of xml child names as String

+     * @return list of Objects in the same order as the element names.

+     */ 

+    public Object wrap(Class jaxbClass, String jaxbClassName, ArrayList<String> childNames, Map<String, Object> childObjects) throws JAXBWrapperException;

+    

+    /**

+     * wrapAsJAXBElement

+     * Creates a JAXBElement that is initialized with the child objects and can be serialsed to xml later.

+     * @param javabClass Class of the JAXB object to return

+     * @param jaxbContext JAXBContext

+     * @param childObjects, component objects

+     * @param childNames list of xml child names as String

+     * @return JAXBElement;

+     */

+    public JAXBElement wrapAsJAXBElement(Class jaxbClass, String jaxbClassName,

+			ArrayList<String> childNames, Map<String, Object> childObjects) throws JAXBWrapperException;

+		

+}

+

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperException.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperException.java
new file mode 100644
index 0000000..1e80453
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperException.java
@@ -0,0 +1,56 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.wrapper.impl;

+

+

+public class JAXBWrapperException extends Exception {

+

+	/**

+	 * 

+	 */

+	public JAXBWrapperException() {

+		super();

+		

+	}

+

+	/**

+	 * @param message

+	 * @param cause

+	 */

+	public JAXBWrapperException(String message, Throwable cause) {

+		super(message, cause);

+		

+	}

+

+	/**

+	 * @param message

+	 */

+	public JAXBWrapperException(String message) {

+		super(message);

+		

+	}

+

+	/**

+	 * @param cause

+	 */

+	public JAXBWrapperException(Throwable cause) {

+		super(cause);

+		

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
new file mode 100644
index 0000000..f6c87ad
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
@@ -0,0 +1,219 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.wrapper.impl;

+

+import java.beans.IntrospectionException;

+import java.beans.Introspector;

+import java.beans.PropertyDescriptor;

+import java.beans.PropertyEditor;

+import java.lang.reflect.Field;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+import java.lang.reflect.TypeVariable;

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Map;

+import java.util.WeakHashMap;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.JAXBException;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.jaxws.i18n.Messages;

+import org.apache.axis2.jaxws.wrapper.JAXBWrapperTool;

+

+

+public class JAXBWrapperToolImpl implements JAXBWrapperTool {

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.wrapped.JAXBWrapperTool#unWrap(java.lang.Object, javax.xml.bind.JAXBContext, java.util.ArrayList)

+	 */

+	

+	/*

+	 * create property descriptor using jaxbObject and child Names,

+	 * getReader and read the object, form the object array and return them.

+	 */

+	

+	public Object[] unWrap(Object jaxbObject, 

+			ArrayList<String> childNames) throws JAXBWrapperException{

+		try{

+			if(jaxbObject == null){

+				throw new JAXBWrapperException(Messages.getMessage("JAXBWrapperErr1"));

+			}

+			if(childNames == null){

+				throw new JAXBWrapperException(Messages.getMessage("JAXBWrapperErr2"));

+			}

+			ArrayList<Object> objList = new ArrayList<Object>();

+			Map<String , PropertyInfo> pdTable = createPropertyDescriptors(jaxbObject.getClass(), childNames);

+			for(String childName:childNames){

+				PropertyInfo propInfo = pdTable.get(childName);

+				Object object = propInfo.get(jaxbObject);

+				objList.add(object);

+			}

+			Object[] jaxbObjects = objList.toArray();

+			objList = null;

+			return jaxbObjects;

+		}catch(IntrospectionException e){

+			throw new JAXBWrapperException(e);

+		}catch(IllegalAccessException e){

+			throw new JAXBWrapperException(e);

+		}catch(InvocationTargetException e){

+			throw new JAXBWrapperException(e);

+		}catch(NoSuchFieldException e){

+			throw new JAXBWrapperException(e);

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.wrapped.JAXBWrapperTool#wrap(java.lang.Class, java.lang.String, java.util.ArrayList, java.util.ArrayList)

+	 */

+	public Object wrap(Class jaxbClass, String jaxbClassName,

+			ArrayList<String> childNames, Map<String, Object> childObjects)

+			throws JAXBWrapperException {

+		

+		try{

+			if(childNames == null|| childObjects == null){

+				throw new JAXBWrapperException(Messages.getMessage("JAXBWrapperErr3"));

+			}

+			if(childNames.size() != childObjects.size()){

+				throw new JAXBWrapperException(Messages.getMessage("JAXBWrapperErr4"));

+			}

+			Map<String, PropertyInfo> pdTable = createPropertyDescriptors(jaxbClass, childNames);

+			Object jaxbObject = jaxbClass.newInstance();

+			for(String childName:childNames){

+				PropertyInfo propInfo = pdTable.get(childName);

+				propInfo.set(jaxbObject, childObjects.get(childName));

+			}

+			return jaxbObject;

+		}catch(IntrospectionException e){

+			throw new JAXBWrapperException(e);

+		}catch(InstantiationException e){

+			throw new JAXBWrapperException(e);

+		}catch(IllegalAccessException e){

+			throw new JAXBWrapperException(e);

+		}catch(InvocationTargetException e){

+			throw new JAXBWrapperException(e);

+		}catch(NoSuchFieldException e){

+			throw new JAXBWrapperException(e);

+		}

+	}

+	

+	public JAXBElement wrapAsJAXBElement(Class jaxbClass, String jaxbClassName,

+			ArrayList<String> childNames, Map<String, Object> childObjects) throws JAXBWrapperException{

+		

+		Object obj = wrap( jaxbClass, jaxbClassName, childNames, childObjects);

+		JAXBElement<Object> element = new JAXBElement<Object>(new QName(jaxbClassName), jaxbClass, obj);

+		return element;

+	}

+	

+	/** creates propertyDescriptor for the childNames using the jaxbClass.  

+	 * use Introspector.getBeanInfo().getPropertyDescriptors() to get all the property descriptors. Assert if # of childNames and propertyDescriptor array

+	 * length do not match. if they match then get the xmlElement name from jaxbClass using propertyDescriptor's display name. See if the xmlElementName matches the 

+	 * childName if not use xmlElement annotation name and create PropertyInfo add childName or xmlElement name there, set propertyDescriptor 

+	 * and return Map<ChileName, PropertyInfo>.

+	 * @param jaxbClass - Class jaxbClass name

+	 * @param childNames - ArrayList<String> of childNames 

+	 * @return Map<String, PropertyInfo> - map of ChildNames that map to PropertyInfo that hold the propertyName and PropertyDescriptor.

+	 * @throws IntrospectionException, NoSuchFieldException

+	 */

+	private Map<String, PropertyInfo> createPropertyDescriptors(Class jaxbClass, ArrayList<String> childNames) throws IntrospectionException, NoSuchFieldException, JAXBWrapperException{

+		Map<String, PropertyInfo> map = new WeakHashMap<String, PropertyInfo>();

+		PropertyDescriptor[] pds = Introspector.getBeanInfo(jaxbClass).getPropertyDescriptors();

+		

+		Map<String, PropertyDescriptor>  jaxbClassPds = filterDescriptors(pds, jaxbClass);

+		Field field[] = jaxbClass.getDeclaredFields();

+		if(field.length != childNames.size()){

+			throw new JAXBWrapperException(Messages.getMessage("JAXBWrapperErr4", jaxbClass.getName()));

+		}

+		pds=null;

+		

+		for(int i=0; i<field.length ;i++){

+			PropertyInfo propInfo= null;

+			String fieldName = field[i].getName();

+			String childName = childNames.get(i);

+			PropertyDescriptor pd = jaxbClassPds.get(childName);

+			if(pd == null){

+				pd = jaxbClassPds.get(fieldName);

+				if(pd == null){

+					throw new JAXBWrapperException(Messages.getMessage("JAXBWrapperErr4", jaxbClass.getName(), childName));

+				}	

+			}

+			propInfo = new PropertyInfo(fieldName, pd);

+			map.put(childName, propInfo);

+		}

+		jaxbClassPds = null;

+		field = null;

+		return map;

+	}

+	

+	

+	/** Filter PropertyDescriptors that belong to super class, return only the ones that belong to JABXClass

+	 * create map of java fieldName and propertyDescriptor, if propertyName different than java fieldName then

+	 * check the xmlElementName ensure they are same if not do conver both xmlName and propertyName to lowercase and

+	 * ensure they are same if they match then add the corrosponding javaFieldName and PropertyDescriptor in map. If they dont 

+	 * match the propertyName belongs to super class and we ignore it.

+	 * @param allPds 

+	 * @param jaxbClass

+	 * @return

+	 */

+	private Map<String, PropertyDescriptor> filterDescriptors(PropertyDescriptor[] allPds, Class jaxbClass) throws NoSuchFieldException{

+		Map<String, PropertyDescriptor> filteredPds = new WeakHashMap<String, PropertyDescriptor>();

+		Field[] fields = jaxbClass.getDeclaredFields();

+		for(PropertyDescriptor pd:allPds){

+			for(Field field:fields){

+				if(field.getName().equals(pd.getDisplayName())){

+					filteredPds.put(pd.getDisplayName(), pd);

+					break;

+				}else{

+					String xmlName =getXmlElementName(jaxbClass, field.getName());

+					if(xmlName.equals(pd.getDisplayName())){

+						filteredPds.put(field.getName(), pd);

+						break;

+					}

+					if(xmlName.toLowerCase().equals(pd.getDisplayName().toLowerCase())){

+						filteredPds.put(field.getName(), pd);

+						break;

+					}

+				}

+			}

+		}

+		allPds=null;

+		return filteredPds;

+	}

+	

+	/**

+	 * Get the name of the xml element by looking at the XmlElement annotation.

+	 * @param jaxbClass

+	 * @param fieldName

+	 * @return

+	 * @throws NoSuchFieldException

+	 */

+	private String getXmlElementName(Class jaxbClass, String fieldName)throws NoSuchFieldException{

+		Field field = jaxbClass.getDeclaredField(fieldName);

+		XmlElement xmlElement =field.getAnnotation(XmlElement.class);

+		

+		// If XmlElement does not exist, default to using the field name

+		if (xmlElement == null) {

+			return fieldName;

+		}

+		return xmlElement.name();

+		

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/PropertyInfo.java b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/PropertyInfo.java
new file mode 100644
index 0000000..9de8b39
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/PropertyInfo.java
@@ -0,0 +1,54 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.wrapper.impl;

+

+import java.beans.PropertyDescriptor;

+import java.lang.reflect.InvocationTargetException;

+import java.lang.reflect.Method;

+

+

+public class PropertyInfo {

+	String propertyName;

+	PropertyDescriptor descriptor;

+	

+	/**

+	 * @param propertyName

+	 * @param descriptor

+	 */

+	public PropertyInfo(String propertyName, PropertyDescriptor descriptor) {

+		super();

+		

+		this.propertyName = propertyName;

+		this.descriptor = descriptor;

+	}

+	

+	public String getPropertyName(){

+		return this.propertyName;

+	}

+	

+	public Object get(Object targetBean)throws InvocationTargetException, IllegalAccessException{

+		Method method = descriptor.getReadMethod();

+		return method.invoke(targetBean, null);

+	}

+	

+	public void set(Object targetBean, Object propValue)throws InvocationTargetException, IllegalAccessException{

+		Method method = descriptor.getWriteMethod();

+		method.invoke(targetBean, propValue);

+	}

+	

+}

diff --git a/rampart_1_1/modules/jaxws/test-resources/image/test.jpg b/rampart_1_1/modules/jaxws/test-resources/image/test.jpg
new file mode 100644
index 0000000..5ad295e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/image/test.jpg
Binary files differ
diff --git a/rampart_1_1/modules/jaxws/test-resources/provider/xml/web.xml b/rampart_1_1/modules/jaxws/test-resources/provider/xml/web.xml
new file mode 100644
index 0000000..c8be536
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/provider/xml/web.xml
@@ -0,0 +1,43 @@
+<invoke>

+<web-app>

+  <servlet>

+    <servlet-name>snoop</servlet-name>

+    <servlet-class>SnoopServlet</servlet-class>

+  </servlet>

+  <servlet>

+    <servlet-name>file</servlet-name>

+    <servlet-class>ViewFile</servlet-class>

+    <init-param>

+      <param-name>initial</param-name>

+      <param-value>

+        1000

+      </param-value>

+      <description>

+        The initial value for the counter  <!-- optional -->

+      </description>

+    </init-param>

+  </servlet>

+  <servlet-mapping>

+    <servlet-name>

+      mv

+    </servlet-name>

+    <url-pattern>

+      *.wm

+    </url-pattern>

+  </servlet-mapping>

+

+  <distributed/>

+

+  <security-role>

+    <role-name>

+     manager

+    </role-name>

+    <role-name>

+     director

+    </role-name>

+    <role-name>

+     president

+    </role-name>

+  </security-role>

+</web-app>

+</invoke>

diff --git a/rampart_1_1/modules/jaxws/test-resources/wsdl/AddNumbers.wsdl b/rampart_1_1/modules/jaxws/test-resources/wsdl/AddNumbers.wsdl
new file mode 100644
index 0000000..20f75e7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/wsdl/AddNumbers.wsdl
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>

+

+

+<definitions name="AddNumbers" targetNamespace="http://org/test/addnumbers"

+	xmlns:tns="http://org/test/addnumbers" xmlns="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

+

+

+	<types>

+		<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"

+			elementFormDefault="qualified" targetNamespace="http://org/test/addnumbers">

+			<element name="addNumbersResponse">

+				<complexType>

+					<sequence>

+						<element name="return" type="xsd:int" />

+					</sequence>

+				</complexType>

+			</element>

+

+			<element name="addNumbers">

+				<complexType>

+					<sequence>

+						<element name="arg0" type="xsd:int" />

+						<element name="arg1" type="xsd:int" />

+					</sequence>

+				</complexType>

+			</element>

+

+			<element name="AddNumbersFault">

+				<complexType>

+					<sequence>

+						<element name="faultInfo" type="xsd:string" />

+						<element name="message" type="xsd:string" />

+					</sequence>

+				</complexType>

+			</element>

+

+			<element name="oneWayInt">

+				<complexType>

+					<sequence>

+						<element name="arg0" type="xsd:int" />

+					</sequence>

+				</complexType>

+			</element>

+

+		</xsd:schema>

+	</types>

+

+	<message name="addNumbers">

+		<part name="parameters" element="tns:addNumbers" />

+	</message>

+	<message name="addNumbersResponse">

+		<part name="result" element="tns:addNumbersResponse" />

+	</message>

+	<message name="addNumbersFault">

+		<part name="AddNumbersFault" element="tns:AddNumbersFault" />

+	</message>

+	<message name="oneWayInt">

+		<part name="parameters" element="tns:oneWayInt" />

+	</message>

+

+	<portType name="AddNumbersPortType">

+		<operation name="addNumbers">

+			<input message="tns:addNumbers" name="add" />

+			<output message="tns:addNumbersResponse" name="addResponse" />

+			<fault name="addNumbersFault" message="tns:addNumbersFault" />

+		</operation>

+		<operation name="oneWayInt">

+			<input message="tns:oneWayInt" />

+		</operation>

+	</portType>

+	<binding name="AddNumbersBinding" type="tns:AddNumbersPortType">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"

+			style="document" />

+		<operation name="addNumbers">

+			<soap:operation soapAction="" />

+			<input>

+				<soap:body use="literal" />

+			</input>

+			<output>

+				<soap:body use="literal" />

+			</output>

+			<fault name="addNumbersFault">

+				<soap:fault name="addNumbersFault" use="literal" />

+			</fault>

+		</operation>

+		<operation name="oneWayInt">

+			<soap:operation soapAction="" />

+			<input>

+				<soap:body use="literal" />

+			</input>

+		</operation>

+	</binding>

+	<service name="AddNumbersService">

+		<port name="AddNumbersPort" binding="tns:AddNumbersBinding">

+			<soap:address

+				location="http://localhost:9080/AddNumber/AddNumbersImplService" />

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/jaxws/test-resources/wsdl/ProxyDocLitWrapped.wsdl b/rampart_1_1/modules/jaxws/test-resources/wsdl/ProxyDocLitWrapped.wsdl
new file mode 100644
index 0000000..f17e534
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/wsdl/ProxyDocLitWrapped.wsdl
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://org.apache.axis2.proxy.doclitwrapped"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="proxy"

+	targetNamespace="http://org.apache.axis2.proxy.doclitwrapped">

+

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://org.apache.axis2.proxy.doclitwrapped"

+			xmlns:tns="http://org.apache.axis2.proxy.doclitwrapped"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+			<xsd:element name="MyFault" type="xsd:string" />

+

+			<xsd:element name="oneWayVoid">

+				<xsd:complexType>

+					<xsd:sequence />

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="oneWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="oneway_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="twoWayHolder">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoWayHolder_str"

+							type="xsd:string" />

+						<xsd:element name="twoWayHolder_int"

+							type="xsd:int" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="twoWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoway_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			

+			<xsd:element name="ReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="invoke">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="invoke_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="invokeReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+

+			

+

+			<!-- fin op definition -->

+

+			<xsd:element name="finOp">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="op"

+							type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="finOpResponse">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="response"

+							type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:complexType name="FinancialOperation">

+				<xsd:sequence>

+					<xsd:element name="amount" type="xsd:float" />

+				</xsd:sequence>

+			</xsd:complexType>

+

+			<xsd:complexType name="Withdraw">

+				<xsd:complexContent>

+					<xsd:extension base="tns:FinancialOperation">

+						<xsd:sequence>

+							<xsd:element name="memo" type="xsd:string" />

+						</xsd:sequence>

+					</xsd:extension>

+				</xsd:complexContent>

+			</xsd:complexType>

+

+			<xsd:complexType name="Deposit">

+				<xsd:complexContent>

+					<xsd:extension base="tns:FinancialOperation">

+						<xsd:sequence>

+							<xsd:element name="status"

+								type="xsd:string" />

+						</xsd:sequence>

+					</xsd:extension>

+				</xsd:complexContent>

+			</xsd:complexType>

+

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="oneWayVoidRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />

+	</wsdl:message>

+

+	<wsdl:message name="oneWayRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderResponse">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeRequest">

+		<wsdl:part name="allByMyself" element="tns:invoke" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>

+

+	<wsdl:message name="finOpRequest">

+		<wsdl:part name="op" element="tns:finOp" />

+	</wsdl:message>

+

+	<wsdl:message name="finOpResponse">

+		<wsdl:part name="op" element="tns:finOpResponse" />

+	</wsdl:message>

+

+	<wsdl:portType name="DocLitWrappedProxy">

+

+		<wsdl:operation name="oneWayVoid">

+			<wsdl:input message="tns:oneWayVoidRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<wsdl:input message="tns:oneWayRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWayHolder">

+			<wsdl:input message="tns:twoWayHolderRequest" />

+			<wsdl:output message="tns:twoWayHolderResponse" />

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWay">

+			<wsdl:input message="tns:twoWayRequest" />

+			<wsdl:output message="tns:twoWayResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="invoke">

+			<wsdl:input message="tns:invokeRequest" />

+			<wsdl:output message="tns:invokeResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="finOp">

+			<wsdl:input message="tns:finOpRequest" />

+			<wsdl:output message="tns:finOpResponse" />

+		</wsdl:operation>

+

+	</wsdl:portType>

+

+	<wsdl:binding name="ProxyDocLitWrapped"

+		type="tns:DocLitWrappedProxy">

+		<soap:binding style="document"

+			transport="http://schemas.xmlsoap.org/soap/http" />

+

+		<wsdl:operation name="oneWayVoid">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWayHolder">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWay">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+		

+		<wsdl:operation name="invoke">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+		

+		<wsdl:operation name="finOp">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/finOp" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+

+	</wsdl:binding>

+

+	<wsdl:service name="ProxyDocLitWrappedService">

+		<wsdl:port binding="tns:ProxyDocLitWrapped"

+			name="ProxyDocLitWrappedPort">

+			<soap:address

+				location="http://localhost:9080/axis2/services/ProxyDocLitWrappedService/invoke" />

+		</wsdl:port>

+	</wsdl:service>

+

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test-resources/wsdl/ProxyDocLitnonWrapped.wsdl b/rampart_1_1/modules/jaxws/test-resources/wsdl/ProxyDocLitnonWrapped.wsdl
new file mode 100644
index 0000000..c420297
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/wsdl/ProxyDocLitnonWrapped.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+	This is a copy of proxy_doclitwr.wsdl. Service and port names

+	have been chnaged to be Alpha compatible and endpoint address

+	has been changed

+-->

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://doclitnonwrapped.proxy.test.org"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="proxy"

+	targetNamespace="http://doclitnonwrapped.proxy.test.org">

+	

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://doclitnonwrapped.proxy.test.org"

+			xmlns:tns="http://doclitnonwrapped.proxy.test.org"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+			<xsd:element name="MyFault" type="xsd:string" />

+			

+			

+			

+			<xsd:element name="invoke">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="invoke_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>			

+			

+			<xsd:element name="ReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>				

+

+		</xsd:schema>

+	</wsdl:types>

+

+	

+	

+	<wsdl:message name="invokeRequest">

+		<wsdl:part name="allByMyself" element="tns:invoke" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>	

+	

+	<wsdl:portType name="DocLitnonWrappedProxy">

+

+		

+		<wsdl:operation name="invoke">

+			<wsdl:input message="tns:invokeRequest" />

+			<wsdl:output message="tns:invokeResponse" />

+		</wsdl:operation>		

+			

+	</wsdl:portType>

+	

+	<wsdl:binding name="ProxyDocLitnonWrapped" type="tns:DocLitnonWrappedProxy">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />		

+		<wsdl:operation name="invoke">

+			<soap:operation soapAction="http://doclitnonwrapped.proxy.test.org/invokeReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+	

+		</wsdl:operation>		

+	

+	</wsdl:binding>

+	

+	<wsdl:service name="ProxyDocLitUnwrappedService">

+		<wsdl:port binding="tns:ProxyDocLitnonWrapped" name="ProxyDocLitnonWrappedPort">

+			<soap:address location="http://@HOST@:@PORT@/jaxws.proxy/services/ProxyDocLitUnwrappedService" />

+		</wsdl:port>

+	</wsdl:service>

+	

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test-resources/wsdl/WSDLTests.wsdl b/rampart_1_1/modules/jaxws/test-resources/wsdl/WSDLTests.wsdl
new file mode 100644
index 0000000..b58bfa8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/wsdl/WSDLTests.wsdl
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>

+

+<!-- WSDL description of the WSS Ping interop scenarios -->

+

+<definitions name="Echo"

+    targetNamespace="http://ws.apache.org/axis2/tests"

+    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 

+    xmlns:tns="http://ws.apache.org/axis2/tests"

+    xmlns="http://schemas.xmlsoap.org/wsdl/"

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"

+    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"

+    xmlns:intf="http://ws-policy.tests">

+    	  

+  <types>

+    <schema targetNamespace="http://ws.apache.org/axis2/tests"

+         xmlns="http://www.w3.org/2001/XMLSchema">

+      <complexType name="echo">

+        <sequence>

+          <element name="text" type="xsd:string" nillable="true"/>

+                 </sequence>

+      </complexType>

+      <complexType name="echoResponse">

+        <sequence>

+          <element name="text" type="xsd:string" nillable="true"/>

+                 </sequence>

+      </complexType>

+      <element name="Echo" type="tns:echo"/>

+      <element name="EchoResponse" type="tns:echoResponse"/>

+    </schema>

+  </types>

+

+  <message name="EchoRequest">

+    <part name="echo" element="tns:Echo"/>

+  </message>

+

+  <message name="EchoResponse">

+    <part name="echoResponse" element="tns:EchoResponse"/>

+  </message>

+

+  <portType name="EchoPort">

+    <operation name="Echo">

+      <input  message="tns:EchoRequest" wsa:Action="http://tests.org/echo/in" />

+      <output message="tns:EchoResponse" wsa:Action="http://tests.org/echo/out" />

+    </operation>

+  </portType>

+

+  <binding name="EchoBinding" type="tns:EchoPort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"

+style="document"/>

+    <operation name="Echo">

+      <soap:operation soapAction="http://ws.apache.org/axis2/tests/echo"/>

+      <input> 

+        <soap:body use="literal"/>

+      </input>

+      <output>

+        <soap:body use="literal"/>

+      </output>

+    </operation>

+  </binding>

+   

+  <service name="EchoService">

+    <port name="EchoPort" binding="tns:EchoBinding">

+      <soap:address location="http://localhost:8080/axis2/services/EchoService"/>

+    </port>

+  </service>

+

+</definitions>

diff --git a/rampart_1_1/modules/jaxws/test-resources/wsdl/doclit_nonwrap.wsdl b/rampart_1_1/modules/jaxws/test-resources/wsdl/doclit_nonwrap.wsdl
new file mode 100644
index 0000000..d34d2b9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/wsdl/doclit_nonwrap.wsdl
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>

+

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://nonwrap.sample.test.org"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="proxy"

+	targetNamespace="http://nonwrap.sample.test.org">

+	

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://nonwrap.sample.test.org"

+			xmlns:tns="http://nonwrap.sample.test.org"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+			<xsd:element name="MyFault" type="xsd:string" />

+			

+			<xsd:element name="oneWayVoid">

+				<xsd:complexType>

+					<xsd:sequence/>

+				</xsd:complexType>

+			</xsd:element>				

+			

+			<xsd:element name="oneWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="oneway_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>				

+			

+			<xsd:element name="twoWayHolder">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoWayHolder_str" type="xsd:string" />

+						<xsd:element name="twoWayHolder_int" type="xsd:int" />						

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			

+			<xsd:element name="twoWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoway_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>			

+			

+			<xsd:element name="ReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>				

+

+			<!-- fin op definition -->

+			

+			<xsd:element name="finOp">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="op" type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>			

+

+			<xsd:element name="finOpResponse">

+				<xsd:complexType>

+				<xsd:sequence>

+					<xsd:element name="response" type="tns:FinancialOperation" />

+				</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:complexType name="FinancialOperation">

+				<xsd:sequence>

+					<xsd:element name="amount" type="xsd:float" />

+				</xsd:sequence>

+			</xsd:complexType>

+

+			<xsd:complexType name="Withdraw">

+			  <xsd:complexContent>

+			    <xsd:extension base="tns:FinancialOperation">

+			      <xsd:sequence>

+			        <xsd:element name="memo" type="xsd:string" />

+			      </xsd:sequence>

+			    </xsd:extension>

+			  </xsd:complexContent>

+			</xsd:complexType>

+			

+			<xsd:complexType name="Deposit">

+			  <xsd:complexContent>

+			    <xsd:extension base="tns:FinancialOperation">

+			      <xsd:sequence>

+			        <xsd:element name="status" type="xsd:string" />

+			      </xsd:sequence>

+			     </xsd:extension>

+			  </xsd:complexContent>

+			</xsd:complexType>	

+

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="oneWayVoidRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />

+	</wsdl:message>

+

+	<wsdl:message name="oneWayRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderResponse">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+	

+	<wsdl:message name="twoWayRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>	

+	

+	<wsdl:portType name="DocLitNonWrapPortType">

+

+		<wsdl:operation name="oneWayVoid">

+			<wsdl:input message="tns:oneWayVoidRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<wsdl:input message="tns:oneWayRequest" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWayHolder">

+			<wsdl:input message="tns:twoWayHolderRequest" />

+			<wsdl:output message="tns:twoWayHolderResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWay">

+			<wsdl:input message="tns:twoWayRequest" />

+			<wsdl:output message="tns:twoWayResponse" />

+		</wsdl:operation>		

+			

+	</wsdl:portType>

+	

+	<wsdl:binding name="DocLitNonWrap" type="tns:DocLitNonWrapPortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

+

+		<wsdl:operation name="oneWayVoid">

+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWayHolder">

+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+	

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWay">

+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+	

+		</wsdl:operation>		

+	

+	</wsdl:binding>

+	

+	<wsdl:service name="DocLitNonWrapService">

+		<wsdl:port binding="tns:DocLitNonWrap" name="ProxyDocLitWrappedPort">

+			<soap:address location="http://localhost:8080/axis2/services/DocLitNonWrapService" />

+		</wsdl:port>

+	</wsdl:service>

+	

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test-resources/wsdl/doclitbare.wsdl b/rampart_1_1/modules/jaxws/test-resources/wsdl/doclitbare.wsdl
new file mode 100644
index 0000000..13051f8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/wsdl/doclitbare.wsdl
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://doclitbare.sample.test.org"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="DoclitBare"

+	targetNamespace="http://doclitbare.sample.test.org">

+	

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://doclitbare.sample.test.org"

+			xmlns:tns="http://doclitbare.sample.test.org"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+		

+		<xsd:element name="String" type="xsd:string" />

+		<xsd:element name="Integer" type="xsd:int" />		

+

+		<xsd:element name="Composite">		

+			<xsd:complexType>

+				<xsd:sequence>

+					<xsd:element name="myElement" type="xsd:string" />

+				</xsd:sequence>

+			</xsd:complexType>

+		</xsd:element>

+

+		<!-- basic fault test, this should be mapped into message part

+		     of the generated faultBean

+		  -->

+		<xsd:element name="MyFault" type="xsd:string" />

+

+		<!-- wrapper exception and polymorphic fault test

+		     This bean should have an associated exception

+		  -->

+		<xsd:element name="MyBaseFaultBean" type="tns:BaseFault" />		

+

+		<xsd:complexType name="BaseFault">

+			<xsd:sequence>

+				<xsd:element name="message" type="xsd:string" />

+				<xsd:element name="error_code" type="xsd:int" />					

+			</xsd:sequence>

+		</xsd:complexType>

+

+		<xsd:complexType name="ExtendedFault">

+			<xsd:complexContent>

+			  <xsd:extension base="tns:BaseFault">

+			    <xsd:sequence>

+				<xsd:element name="another_message" type="xsd:string" />

+				<xsd:element name="another_error_code" type="xsd:int" />					

+			    </xsd:sequence>

+              </xsd:extension>

+			</xsd:complexContent>

+		</xsd:complexType>

+

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="NoParam" />

+

+	<wsdl:message name="SingleParam">

+		<wsdl:part name="allByMyself" element="tns:String" />

+	</wsdl:message>

+

+	<wsdl:message name="SingleParamInt">

+		<wsdl:part name="allByMyself" element="tns:Integer" />

+	</wsdl:message>

+	

+	<wsdl:message name="SingleParamOther">

+		<wsdl:part name="allByMyself" element="tns:Composite" />

+	</wsdl:message>	

+

+	<wsdl:message name="SimpleFault">

+		<wsdl:part name="description" element="tns:MyFault" />	

+	</wsdl:message>	

+

+	<wsdl:message name="FaultBeanWithWrapper">

+		<wsdl:part name="description" element="tns:MyBaseFaultBean" />	

+	</wsdl:message>	

+

+	<wsdl:portType name="DocLitBarePortType">

+		

+		<wsdl:operation name="oneWayEmpty">

+			<wsdl:input message="tns:NoParam" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="oneWay">

+			<wsdl:input message="tns:SingleParam" />

+		</wsdl:operation>		

+		

+		<wsdl:operation name="twoWaySimple">

+			<wsdl:input message="tns:SingleParamInt" />

+			<wsdl:output message="tns:SingleParam" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWayHolder">

+			<wsdl:input message="tns:SingleParamOther" />

+			<wsdl:output message="tns:SingleParamOther" />

+			<wsdl:fault message="tns:SimpleFault" name="twoWayFault"/>

+			<wsdl:fault message="tns:FaultBeanWithWrapper" name="wrapperFault"/>

+		</wsdl:operation>

+			

+	</wsdl:portType>

+	

+	<wsdl:binding name="DocLitBare" type="tns:DocLitBarePortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

+

+		<wsdl:operation name="oneWayEmpty">

+			<soap:operation soapAction="http://doclitbare.sample.test.org/oneWayEmpty" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+		</wsdl:operation>

+		

+		<wsdl:operation name="oneWay">

+			<soap:operation soapAction="http://doclitbare.sample.test.org/oneWay" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWaySimple">

+			<soap:operation soapAction="http://doclitbare.sample.test.org/twoWaySimple" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+		</wsdl:operation>	

+		

+		<wsdl:operation name="twoWayHolder">

+			<soap:operation soapAction="http://doclitbare.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+			<wsdl:fault name="twoWayFault">

+				<soap:fault use="literal" name="twoWayFault" />

+			</wsdl:fault>			

+			<wsdl:fault name="wrapperFault">

+				<soap:fault use="literal" name="wrapperFault" />

+			</wsdl:fault>				

+		</wsdl:operation>

+		

+	

+	</wsdl:binding>

+	

+	<wsdl:service name="BareDocLitService">

+		<wsdl:port binding="tns:DocLitBare" name="BareDocLitPort">

+			<soap:address location="http://localhost:8080/axis2/services/BareDocLitService" />

+		</wsdl:port>

+	</wsdl:service>

+	

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl b/rampart_1_1/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl
new file mode 100644
index 0000000..08e7f00
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://wrap.sample.test.org"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="wrapjavabeantest"

+	targetNamespace="http://wrap.sample.test.org">

+

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://wrap.sample.test.org"

+			xmlns:tns="http://wrap.sample.test.org"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+			<xsd:element name="MyFault" type="xsd:string" />

+

+			<xsd:element name="oneWayVoid">

+				<xsd:complexType>

+					<xsd:sequence />

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="oneWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="oneway_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="twoWayHolder">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoWayHolder_str"

+							type="xsd:string" />

+						<xsd:element name="twoWayHolder_int"

+							type="xsd:int" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="twoWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoway_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			

+			<xsd:element name="ReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="invoke">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="invoke_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="invokeReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+

+			

+

+			<!-- fin op definition -->

+

+			<xsd:element name="finOp">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="op"

+							type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="finOpResponse">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="response"

+							type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:complexType name="FinancialOperation">

+				<xsd:sequence>

+					<xsd:element name="amount" type="xsd:float" />

+				</xsd:sequence>

+			</xsd:complexType>

+

+			<xsd:complexType name="Withdraw">

+				<xsd:complexContent>

+					<xsd:extension base="tns:FinancialOperation">

+						<xsd:sequence>

+							<xsd:element name="memo" type="xsd:string" />

+						</xsd:sequence>

+					</xsd:extension>

+				</xsd:complexContent>

+			</xsd:complexType>

+

+			<xsd:complexType name="Deposit">

+				<xsd:complexContent>

+					<xsd:extension base="tns:FinancialOperation">

+						<xsd:sequence>

+							<xsd:element name="status"

+								type="xsd:string" />

+						</xsd:sequence>

+					</xsd:extension>

+				</xsd:complexContent>

+			</xsd:complexType>

+

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="oneWayVoidRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />

+	</wsdl:message>

+

+	<wsdl:message name="oneWayRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderResponse">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeRequest">

+		<wsdl:part name="allByMyself" element="tns:invoke" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>

+

+	<wsdl:message name="finOpRequest">

+		<wsdl:part name="op" element="tns:finOp" />

+	</wsdl:message>

+

+	<wsdl:message name="finOpResponse">

+		<wsdl:part name="op" element="tns:finOpResponse" />

+	</wsdl:message>

+

+	<wsdl:portType name="DocLitWrap">

+

+		<wsdl:operation name="oneWayVoid">

+			<wsdl:input message="tns:oneWayVoidRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<wsdl:input message="tns:oneWayRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWayHolder">

+			<wsdl:input message="tns:twoWayHolderRequest" />

+			<wsdl:output message="tns:twoWayHolderResponse" />

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWay">

+			<wsdl:input message="tns:twoWayRequest" />

+			<wsdl:output message="tns:twoWayResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="invoke">

+			<wsdl:input message="tns:invokeRequest" />

+			<wsdl:output message="tns:invokeResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="finOp">

+			<wsdl:input message="tns:finOpRequest" />

+			<wsdl:output message="tns:finOpResponse" />

+		</wsdl:operation>

+

+	</wsdl:portType>

+

+	<wsdl:binding name="DocLitWrap"

+		type="tns:DocLitWrap">

+		<soap:binding style="document"

+			transport="http://schemas.xmlsoap.org/soap/http" />

+

+		<wsdl:operation name="oneWayVoid">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWayHolder">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWay">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+		

+		<wsdl:operation name="invoke">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+		

+		<wsdl:operation name="finOp">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/finOp" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+

+	</wsdl:binding>

+

+	<wsdl:service name="DocLitWrapService">

+		<wsdl:port binding="tns:DocLitWrap"

+			name="DocLitWrapPort">

+			<soap:address

+				location="http://localhost:8080/axis2/services/DocLitWrapService" />

+		</wsdl:port>

+	</wsdl:service>

+

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test-resources/xml/soapmessage.xml b/rampart_1_1/modules/jaxws/test-resources/xml/soapmessage.xml
new file mode 100644
index 0000000..e6e27e2
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/xml/soapmessage.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?> 

+	<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

+ 		<soap:Body> 

+			<ns2:invoke xmlns:ns2="http://org.test.soapmessage"><invoke_str>some request</invoke_str></ns2:invoke>

+		</soap:Body>

+	</soap:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test-resources/xsd/echo.xsd b/rampart_1_1/modules/jaxws/test-resources/xsd/echo.xsd
new file mode 100644
index 0000000..9feb895
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/xsd/echo.xsd
@@ -0,0 +1,20 @@
+<!-- This schema is used to generate the JAX-B artifacts 

+     used by the JAX-B Dispatch tests -->

+<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema"

+	elementFormDefault="qualified" 

+	targetNamespace="http://test">

+  <s:element name="echoString">

+    <s:complexType>

+      <s:sequence>

+        <s:element minOccurs="0" maxOccurs="1" name="input" type="s:string" />

+      </s:sequence>

+    </s:complexType>

+  </s:element>

+  <s:element name="echoStringResponse">

+    <s:complexType>

+      <s:sequence>

+        <s:element minOccurs="0" maxOccurs="1" name="echoStringReturn" type="s:string" />

+      </s:sequence>

+    </s:complexType>

+  </s:element>

+</s:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test-resources/xsd/jaxbsource.xsd b/rampart_1_1/modules/jaxws/test-resources/xsd/jaxbsource.xsd
new file mode 100644
index 0000000..b9c2210
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/xsd/jaxbsource.xsd
@@ -0,0 +1,22 @@
+<xsd:schema

+	targetNamespace="http://org.test.dispatch.jaxbsource"

+	xmlns:tns="http://org.test.dispatch.jaxbsource"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+			

+	<xsd:element name="ReturnType">

+		<xsd:complexType>

+			<xsd:sequence>

+				<xsd:element name="return_str"

+					type="xsd:string" />

+			</xsd:sequence>

+		</xsd:complexType>

+	</xsd:element>

+	<xsd:element name="invoke">

+		<xsd:complexType>

+			<xsd:sequence>

+				<xsd:element name="invoke_str"

+					type="xsd:string" />

+			</xsd:sequence>

+		</xsd:complexType>

+	</xsd:element>

+</xsd:schema>

diff --git a/rampart_1_1/modules/jaxws/test-resources/xsd/samplemtom.xsd b/rampart_1_1/modules/jaxws/test-resources/xsd/samplemtom.xsd
new file mode 100644
index 0000000..4ed662c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/xsd/samplemtom.xsd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>

+

+<xs:schema elementFormDefault="qualified"

+    xmlns:xs="http://www.w3.org/2001/XMLSchema"

+    xmlns:xmime="http://www.w3.org/2005/05/xmlmime"

+    xmlns:tns="urn://mtom.test.org"

+    targetNamespace="urn://mtom.test.org">

+    <xs:import namespace="http://www.w3.org/2005/05/xmlmime"

+               schemaLocation="http://www.w3.org/2005/05/xmlmime"/>

+    <xs:complexType name="ImageDepot">

+       <xs:sequence>

+           <xs:element name="imageData" 

+                       type="xs:base64Binary"

+                       xmime:expectedContentTypes="multipart/*"/>

+       </xs:sequence>

+    </xs:complexType>

+    

+    <xs:element name="sendImage">

+       <xs:complexType>

+          <xs:sequence>

+             <xs:element minOccurs="0" maxOccurs="1" name="input" type="tns:ImageDepot"/>

+          </xs:sequence>

+       </xs:complexType>

+    </xs:element>

+    

+    <xs:element name="sendImageResponse">

+       <xs:complexType>

+          <xs:sequence>

+             <xs:element minOccurs="0" maxOccurs="1" name="output" type="tns:ImageDepot"/>

+          </xs:sequence>

+       </xs:complexType>

+    </xs:element>

+    

+    <xs:element name="sendText">

+       <xs:complexType>

+          <xs:sequence>

+             <xs:element nillable="false" name="input" 

+                type="xs:base64Binary" xmime:expectedContentType="text/xml"/>

+          </xs:sequence>

+       </xs:complexType>

+    </xs:element>

+    

+    <xs:element name="sendTextResponse">

+       <xs:complexType>

+          <xs:sequence>

+             <xs:element minOccurs="0" maxOccurs="1" name="output" type="tns:ImageDepot"/>

+          </xs:sequence>

+       </xs:complexType>

+    </xs:element>

+

+</xs:schema>

diff --git a/rampart_1_1/modules/jaxws/test-resources/xsd/stock1.xsd b/rampart_1_1/modules/jaxws/test-resources/xsd/stock1.xsd
new file mode 100644
index 0000000..cf5028a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/xsd/stock1.xsd
@@ -0,0 +1,28 @@
+<!-- This schema is used to generate the JAX-B artifacts for the JAXBWrapperTests -->

+<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema"

+	targetNamespace="urn://stock1.test.org"

+	xmlns:tns="urn://stock1.test.org" >

+	<s:element name="getPrice" type="tns:getPrice" />

+	<s:complexType name="getPrice">

+      <s:complexContent>

+        <s:restriction base="s:anyType">

+          <s:sequence>

+            <s:element name="fund" type="s:string"/>

+            <s:element name="holdings." type="s:string"/>

+            <s:element name="nav" type="s:string"/>

+          </s:sequence>

+        </s:restriction>

+      </s:complexContent>

+    </s:complexType>

+    

+    <s:element name="getPriceResponse" type="tns:StockPrice" />

+	<s:complexType name="StockPrice">

+      <s:complexContent>

+        <s:restriction base="s:anyType">

+          <s:sequence>

+            <s:element name="price" type="s:string"/>

+          </s:sequence>

+        </s:restriction>

+      </s:complexContent>

+    </s:complexType>

+</s:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test-resources/xsd/stock2.xsd b/rampart_1_1/modules/jaxws/test-resources/xsd/stock2.xsd
new file mode 100644
index 0000000..85e805c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test-resources/xsd/stock2.xsd
@@ -0,0 +1,26 @@
+<!-- This schema is used to generate the JAX-B artifacts for the JAXBWrapperTests-->

+<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema"

+	targetNamespace="urn://stock2.test.org"

+	xmlns:tns="urn://stock2.test.org" >

+	<s:element name="getPrice" type="tns:getPrice" />

+	<s:complexType name="getPrice">

+      <s:complexContent>

+        <s:restriction base="s:anyType">

+          <s:sequence>

+            <s:element name="symbol" type="s:string"/>

+          </s:sequence>

+        </s:restriction>

+      </s:complexContent>

+    </s:complexType>

+    

+    <s:element name="getPriceResponse" type="tns:StockPrice"/>

+	<s:complexType name="StockPrice">

+      <s:complexContent>

+        <s:restriction base="s:anyType">

+          <s:sequence>

+            <s:element name="price" type="s:string"/>

+          </s:sequence>

+        </s:restriction>

+      </s:complexContent>

+    </s:complexType>

+</s:schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..25cae61
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0

+Ant-Version: Apache Ant 1.6.5

+Created-By: 2.3 (IBM Corporation)

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/META-INF/services.xml
new file mode 100644
index 0000000..240253b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>
+ <service name="EchoService">
+  <messageReceivers>
+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="server.EchoServiceMessageReceiverInOut"/>
+  </messageReceivers>
+  <parameter locked="false" name="ServiceClass">server.EchoServiceSkeleton</parameter>
+  <operation name="echoString" mep="http://www.w3.org/2004/08/wsdl/in-out">
+    <actionMapping/>
+  </operation>
+ </service>
+</serviceGroup>
+
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/CallbackHandler.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/CallbackHandler.java
new file mode 100644
index 0000000..a840caa
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/CallbackHandler.java
@@ -0,0 +1,68 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.io.StringWriter;

+

+import javax.xml.soap.SOAPMessage;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.transform.Result;

+import javax.xml.transform.Source;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.sax.SAXSource;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.transform.stream.StreamSource;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+

+public class CallbackHandler<T> implements AsyncHandler <T> {

+

+    public void handleResponse(Response response) {

+        System.out.println(">> Processing async reponse");

+        try{

+            T res = (T) response.get();

+            

+            if(res instanceof SOAPMessage){

+            	SOAPMessage message = (SOAPMessage) res;

+            	message.writeTo(System.out);

+            	

+            }

+            

+            if(res instanceof String){

+                System.out.println("Response [" + res + "]");

+            }

+            else if(Source.class.isAssignableFrom(res.getClass())){

+                Source source = (Source) res;

+                

+                XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+                XMLStreamReader reader = inputFactory.createXMLStreamReader(source);

+                Reader2Writer r2w = new Reader2Writer(reader);

+                String responseText = r2w.getAsString();

+                

+                System.out.println(responseText);

+            }

+            System.out.println("---------------------------------------------");

+        }catch(Exception e){

+            e.printStackTrace();

+        }

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DOMSourceDispatch.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DOMSourceDispatch.java
new file mode 100644
index 0000000..dc628a3
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DOMSourceDispatch.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws;
+
+import java.io.ByteArrayInputStream;
+import java.util.concurrent.Future;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+
+import junit.framework.TestCase;
+
+import org.apache.axis2.jaxws.message.util.Reader2Writer;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+/**
+ * This class tests the JAX-WS Dispatch with various forms of the 
+ * javax.xml.transform.dom.DOMSource 
+ */
+public class DOMSourceDispatch extends TestCase{
+
+    private static final XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+    
+    public void testSyncPayloadMode() throws Exception {
+		System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.PAYLOAD);
+        
+        // Create the DOMSource
+        DOMSource request = createDOMSourceFromString(DispatchTestConstants.sampleBodyContent);
+        
+		System.out.println(">> Invoking sync Dispatch");
+		Source response = dispatch.invoke(request);
+		assertNotNull("dispatch invoke returned null",response);
+		
+        // Turn the Source into a String so we can check it
+        String responseText = createStringFromSource(response);        
+        System.out.println(responseText);
+        
+        // Check to make sure the content is correct
+        assertTrue(!responseText.contains("soap"));
+        assertTrue(!responseText.contains("Envelope"));
+        assertTrue(!responseText.contains("Body"));
+        assertTrue(responseText.contains("echoStringResponse"));
+	}
+
+	public void testSyncMessageMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.MESSAGE);
+        
+        // Create the DOMSource
+        DOMSource request = createDOMSourceFromString(DispatchTestConstants.sampleSoapMessage);
+        
+        System.out.println(">> Invoking sync Dispatch");
+        Source response = dispatch.invoke(request);
+        assertNotNull("dispatch invoke returned null",response);
+        
+        // Turn the Source into a String so we can check it
+        String responseText = createStringFromSource(response);        
+        System.out.println(responseText);
+        
+        // Check to make sure the content is correct
+        assertTrue(responseText.contains("soap"));
+        assertTrue(responseText.contains("Envelope"));
+        assertTrue(responseText.contains("Body"));
+        assertTrue(responseText.contains("echoStringResponse"));
+	}
+
+    public void testAsyncCallbackPayloadMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.PAYLOAD);
+        
+        // Create the DOMSource
+        DOMSource request = createDOMSourceFromString(DispatchTestConstants.sampleBodyContent);
+
+        // Setup the callback for async responses
+        CallbackHandler<Source> callbackHandler = new CallbackHandler<Source>();
+        
+        System.out.println(">> Invoking async (callback) Dispatch");
+        Future<?> monitor = dispatch.invokeAsync(request, callbackHandler);
+            
+        while (!monitor.isDone()) {
+            System.out.println(">> Async invocation still not complete");
+            Thread.sleep(1000);
+        }
+    }
+    
+    public void testAsyncCallbackMessageMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.MESSAGE);
+        
+        // Create the DOMSource
+        DOMSource request = createDOMSourceFromString(DispatchTestConstants.sampleSoapMessage);
+
+        // Setup the callback for async responses
+        CallbackHandler<Source> callbackHandler = new CallbackHandler<Source>();
+        
+        System.out.println(">> Invoking async (callback) Dispatch");
+        Future<?> monitor = dispatch.invokeAsync(request, callbackHandler);
+	        
+        while (!monitor.isDone()) {
+            System.out.println(">> Async invocation still not complete");
+            Thread.sleep(1000);
+        }
+	}
+    
+    public void testOneWayPayloadMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.PAYLOAD);
+
+        // Create the DOMSource
+        DOMSource request = createDOMSourceFromString(DispatchTestConstants.sampleBodyContent);
+
+        System.out.println(">> Invoking One Way Dispatch");
+        dispatch.invokeOneWay(request);
+    }
+    
+    public void testOneWayMessageMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.MESSAGE);
+
+        // Create the DOMSource
+        DOMSource request = createDOMSourceFromString(DispatchTestConstants.sampleSoapMessage);
+
+        System.out.println(">> Invoking One Way Dispatch");
+        dispatch.invokeOneWay(request);
+	}
+    
+	/**
+     * Create a DOMSource with the provided String as the content
+     * @param input
+     * @return
+	 */
+    private DOMSource createDOMSourceFromString(String input) throws Exception {
+        byte[] bytes = input.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        
+        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
+        domFactory.setNamespaceAware(true);
+        DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
+        Document domTree = domBuilder.parse(stream);
+        Node node = domTree.getDocumentElement();
+        
+        DOMSource domSource = new DOMSource(node);
+        return domSource;
+    }
+    
+    /**
+     * Create a String from the provided Source
+     * @param input
+     * @return
+     */
+    private String createStringFromSource(Source input) throws Exception {
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(input);
+        Reader2Writer r2w = new Reader2Writer(reader);
+        String text = r2w.getAsString();
+        return text;
+    }
+}
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DispatchTestConstants.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DispatchTestConstants.java
new file mode 100644
index 0000000..37af9e7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DispatchTestConstants.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws;
+
+import javax.xml.namespace.QName;
+
+public class DispatchTestConstants {
+
+    public static final String URL = "http://localhost:8080/axis2/services/EchoService";
+    public static final QName QNAME_SERVICE = new QName("http://ws.apache.org/axis2", "EchoService");
+    public static final QName QNAME_PORT = new QName("http://ws.apache.org/axis2", "EchoServiceSOAP11port0");
+
+    private static final String sampleSoapEnvelopeHeader = 
+        "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" + 
+        "<soap:Body>";
+    
+    private static final String sampleSoapEnvelopeFooter =
+        "</soap:Body>" + 
+        "</soap:Envelope>";
+    
+    public static final String sampleBodyContent = 
+        "<ns1:echoString xmlns:ns1=\"http://test\">" + 
+        "<ns1:input xmlns=\"http://test\">HELLO THERE!!!</ns1:input>" + 
+        "</ns1:echoString>";
+    
+    public static final String sampleSoapMessage = 
+        sampleSoapEnvelopeHeader +
+        sampleBodyContent + 
+        sampleSoapEnvelopeFooter;
+}
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DispatchTestSuite.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DispatchTestSuite.java
new file mode 100644
index 0000000..d24f98c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/DispatchTestSuite.java
@@ -0,0 +1,40 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import junit.framework.TestSuite;

+

+public class DispatchTestSuite {

+

+    public static TestSuite suite() {

+        TestSuite suite = new TestSuite();

+        suite = addTestSuites(suite);

+        return suite;

+    }

+	

+    public static TestSuite addTestSuites(TestSuite suite) {

+        suite.addTestSuite(StringDispatch.class);

+        suite.addTestSuite(StreamSourceDispatch.class);

+        suite.addTestSuite(DOMSourceDispatch.class);

+        suite.addTestSuite(SAXSourceDispatch.class);

+        suite.addTestSuite(SOAPMessageDispatch.class);

+        suite.addTestSuite(JAXBDispatch.class);

+        suite.addTestSuite(JAXBSourceDispatch.class);

+        return suite;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBCallbackHandler.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBCallbackHandler.java
new file mode 100644
index 0000000..a94d071
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBCallbackHandler.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws;
+
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+import test.EchoStringResponse;
+
+public class JAXBCallbackHandler<T> implements AsyncHandler<T> {
+
+    public void handleResponse(Response response) {
+        try {
+            EchoStringResponse esr = (EchoStringResponse) response.get();
+            System.out.println(">> Async response received: " + esr.getEchoStringReturn());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBDispatch.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBDispatch.java
new file mode 100644
index 0000000..b7b3511
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBDispatch.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws;
+
+import java.util.concurrent.Future;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceException;
+
+import junit.framework.TestCase;
+import test.EchoString;
+import test.EchoStringResponse;
+import test.ObjectFactory;
+
+public class JAXBDispatch extends TestCase {
+
+    private Dispatch<Object> dispatch;
+    
+    public JAXBDispatch(String name) {
+        super(name);
+    }
+    
+    public void setUp() throws Exception {
+        //Create the Service object
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        
+        //Create the JAX-B Dispatch object
+        JAXBContext jbc = null;
+        jbc = JAXBContext.newInstance("test");
+        dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                jbc, Service.Mode.PAYLOAD);
+    }
+    
+    public void testSync() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+
+        // Create the input param
+        ObjectFactory factory = new ObjectFactory();
+        EchoString request = factory.createEchoString();         
+        request.setInput("SYNC JAXB TEST");
+        
+        // Invoke the Dispatch<Object>
+        System.out.println(">> Invoking sync Dispatch with JAX-B Parameter");
+        EchoStringResponse response = (EchoStringResponse) dispatch.invoke(request);
+        
+        assertNotNull(response);
+        
+        System.out.println(">> Response content: " + response.getEchoStringReturn());
+        
+        assertTrue("[ERROR] - Response object was null", response != null);
+        assertTrue("[ERROR] - No content in response object", response.getEchoStringReturn() != null);
+        assertTrue("[ERROR] - Zero length content in response", response.getEchoStringReturn().length() > 0);
+    }
+    
+    public void testAysnc() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Create the input param
+        ObjectFactory factory = new ObjectFactory();
+        EchoString request = factory.createEchoString();         
+        request.setInput("ASYNC(CALLBACK) JAXB TEST");
+        
+        // Create the callback for async responses
+        JAXBCallbackHandler<Object> callback = new JAXBCallbackHandler<Object>();
+        
+        // Invoke the Dispatch<Object> asynchronously
+        System.out.println(">> Invoking async(callback) Dispatch with JAX-B Parameter");
+        Future<?> monitor = dispatch.invokeAsync(request, callback);
+        
+        while (!monitor.isDone()) {
+             System.out.println(">> Async invocation still not complete");
+             Thread.sleep(1000);
+        }
+    }
+    
+    public void testOneWay() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+
+        // Create the input param
+        ObjectFactory factory = new ObjectFactory();
+        EchoString request = factory.createEchoString();         
+        request.setInput("ONE-WAY JAXB TEST");
+        
+        // Invoke the Dispatch<Object> one-way
+        System.out.println(">> Invoking one-way Dispatch with JAX-B Parameter");
+        dispatch.invokeOneWay(request);
+    }
+}
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBSourceDispatch.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBSourceDispatch.java
new file mode 100644
index 0000000..5153060
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/JAXBSourceDispatch.java
@@ -0,0 +1,91 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.io.StringWriter;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.util.JAXBSource;

+import javax.xml.namespace.QName;

+import javax.xml.transform.Result;

+import javax.xml.transform.Source;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+

+import org.test.dispatch.jaxbsource.Invoke;

+import org.test.dispatch.jaxbsource.ObjectFactory;

+

+import junit.framework.TestCase;

+

+

+/*

+ * This is a test case for Invoking Dispatch with a JAXBSource.

+ * test uses JAXB Objects from org.test.dispatch.jaxbsource package, create a request of JAXBSource type

+ * and invokes the service endpoint and reads the response of type Source. Assert failure if response not received.

+ */

+

+

+public class JAXBSourceDispatch extends TestCase {

+	/**

+     * Invoke a sync Dispatch<JAXBSource> in PAYLOAD mode

+     */

+	

+	private String url = "http://localhost:8080/axis2/services/SourceProviderService";

+	private QName serviceName = new QName("http://ws.apache.org/axis2", "SourceProviderService");

+	private QName portName =new QName("http://ws.apache.org/axis2", "SimpleProviderServiceSOAP11port0");

+	

+    public void testJAXBSourceSyncPayloadMode() throws Exception {

+        System.out.println("---------------------------------------");

+        System.out.println("test: " + getName());

+        try{

+	        // Initialize the JAX-WS client artifacts

+	        Service svc = Service.create(serviceName);

+	        svc.addPort(portName, null, url);

+	        Dispatch<JAXBSource> dispatch = svc.createDispatch(portName, 

+	                JAXBSource.class, Service.Mode.PAYLOAD);

+	        

+	        //Create JAXBContext and JAXBSource here.

+	        ObjectFactory factory = new ObjectFactory();

+	        Invoke invokeObj = factory.createInvoke();

+	        invokeObj.setInvokeStr("Some Request");

+	        JAXBContext ctx = JAXBContext.newInstance("org.test.dispatch.jaxbsource");

+	       

+	        JAXBSource jbSrc = new JAXBSource(ctx.createMarshaller(), invokeObj);

+	        // Invoke the Dispatch

+	        System.out.println(">> Invoking sync Dispatch");

+	        //Invoke Server endpoint and read response

+	        Source response = dispatch.invoke(jbSrc);

+	       

+	        assertNotNull("dispatch invoke returned null", response);

+	        //Print the response as string.

+	        StringWriter writer = new StringWriter();

+	        Transformer t = TransformerFactory.newInstance().newTransformer();

+	        Result result = new StreamResult(writer);

+	        t.transform(response, result);

+	

+	        System.out.println("Response On Client: \n"+writer.getBuffer().toString());

+	        System.out.println("---------------------------------------");

+        }catch(Exception e){

+        	e.printStackTrace();

+        }

+        

+    }

+    

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/SAXSourceDispatch.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/SAXSourceDispatch.java
new file mode 100644
index 0000000..efaea36
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/SAXSourceDispatch.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws;
+
+import java.io.ByteArrayInputStream;
+import java.util.concurrent.Future;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+
+import junit.framework.TestCase;
+
+import org.apache.axis2.jaxws.message.util.Reader2Writer;
+import org.xml.sax.InputSource;
+
+/**
+ * This class tests the JAX-WS Dispatch<Source> with content in various 
+ * forms of a javax.xml.transform.sax.SAXSource.
+ */
+public class SAXSourceDispatch extends TestCase{
+
+    private static final XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+    
+	public void testSyncPayloadMode() throws Exception {
+		System.out.println("---------------------------------------");
+		System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+		svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+		Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.PAYLOAD);
+        
+        // Create a SAXSource out of the string content
+        byte[] bytes = DispatchTestConstants.sampleBodyContent.getBytes();
+		ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        InputSource input = new InputSource(stream);
+		Source request = new SAXSource(input);
+		
+        System.out.println(">> Invoking sync Dispatch");
+		Source response = dispatch.invoke(request);
+        
+		assertNotNull("dispatch invoke returned null", response);
+        
+        // Prepare the response content for checking
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(response);
+        Reader2Writer r2w = new Reader2Writer(reader);
+        String responseText = r2w.getAsString();
+        System.out.println(responseText);
+        
+        // Check to make sure the content is correct
+        assertTrue(!responseText.contains("soap"));
+        assertTrue(!responseText.contains("Envelope"));
+        assertTrue(!responseText.contains("Body"));
+        assertTrue(responseText.contains("echoStringResponse"));
+	}
+
+	public void testSyncMessageMode() throws Exception {
+		System.out.println("---------------------------------------");
+		System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.MESSAGE);
+		
+        // Create a SAXSource out of the string content
+        byte[] bytes = DispatchTestConstants.sampleSoapMessage.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        InputSource input = new InputSource(stream);
+        Source request = new SAXSource(input);
+		
+		System.out.println(">> Invoking sync Dispatch with Message Mode");
+		Source response = dispatch.invoke(request);
+
+        assertNotNull("dispatch invoke returned null", response);
+        
+        // Prepare the response content for checking
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(response);
+        Reader2Writer r2w = new Reader2Writer(reader);
+        String responseText = r2w.getAsString();
+        System.out.println(responseText);
+        
+        // Check to make sure the content is correct
+        assertTrue(responseText.contains("soap"));
+        assertTrue(responseText.contains("Envelope"));
+        assertTrue(responseText.contains("Body"));
+        assertTrue(responseText.contains("echoStringResponse"));
+	}
+
+    public void testAsyncCallbackPayloadMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.PAYLOAD);
+        
+        // Setup the callback for async responses
+        CallbackHandler<Source> callbackHandler = new CallbackHandler<Source>();
+        
+        // Create a SAXSource out of the string content
+        byte[] bytes = DispatchTestConstants.sampleBodyContent.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        InputSource input = new InputSource(stream);
+        Source request = new SAXSource(input);
+        
+        System.out.println(">> Invoking async (callback) Dispatch");
+        Future<?> monitor = dispatch.invokeAsync(request, callbackHandler);
+
+        while (!monitor.isDone()) {
+            System.out.println(">> Async invocation still not complete");
+            Thread.sleep(1000);
+        }
+    }
+    
+    public void testAsyncCallbackMessageMode() throws Exception {
+		System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.MESSAGE);
+		
+        // Setup the callback for async responses
+        CallbackHandler<Source> callbackHandler = new CallbackHandler<Source>();
+        
+        // Create a SAXSource out of the string content
+        byte[] bytes = DispatchTestConstants.sampleSoapMessage.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        InputSource input = new InputSource(stream);
+        Source request = new SAXSource(input);
+        
+        System.out.println(">> Invoking async (callback) Dispatch");
+        Future<?> monitor = dispatch.invokeAsync(request, callbackHandler);
+
+        while (!monitor.isDone()) {
+            System.out.println(">> Async invocation still not complete");
+            Thread.sleep(1000);
+        }
+	}
+    
+    public void testOneWayPayloadMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.PAYLOAD);
+        
+        // Create a SAXSource out of the string content
+        byte[] bytes = DispatchTestConstants.sampleBodyContent.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        InputSource input = new InputSource(stream);
+        Source request = new SAXSource(input);
+        
+        System.out.println(">> Invoking One Way Dispatch");
+        dispatch.invokeOneWay(request);
+    }
+    
+    public void testOneWayMessageMode() throws Exception {
+		System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                Source.class, Service.Mode.MESSAGE);
+        
+        // Create a SAXSource out of the string content
+        byte[] bytes = DispatchTestConstants.sampleSoapMessage.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        InputSource input = new InputSource(stream);
+        Source request = new SAXSource(input);
+        
+		System.out.println(">> Invoking One Way Dispatch");
+		dispatch.invokeOneWay(request);
+	}
+}
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/SOAPMessageDispatch.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/SOAPMessageDispatch.java
new file mode 100644
index 0000000..8d0fb9f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/SOAPMessageDispatch.java
@@ -0,0 +1,95 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws;

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.util.concurrent.Future;

+

+import javax.xml.namespace.QName;

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+import junit.framework.TestCase;

+

+public class SOAPMessageDispatch extends TestCase {

+	private String url = "http://localhost:8080/axis2/services/ProxyDocLitWrappedService";

+	private QName serviceName = new QName(

+			"http://org.apache.axis2.proxy.doclitwrapped", "ProxyDocLitWrappedService");

+	private QName portName = new QName("http://org.apache.axis2.proxy.doclitwrapped",

+	"ProxyDocLitWrappedPort");

+	

+	String messageResource = "test-resources" + File.separator  + "xml" + File.separator +"soapmessage.xml";

+	

+	public void testSOAPMessageSyncMessageMode() throws Exception {

+		

+        String basedir = new File(".").getAbsolutePath();

+        String messageResource = new File(basedir, this.messageResource).getAbsolutePath();

+        

+		System.out.println("---------------------------------------");

+		System.out.println("test: " + getName());

+		//Initialize the JAX-WS client artifacts

+		Service svc = Service.create(serviceName);

+		svc.addPort(portName, null, url);

+		Dispatch<SOAPMessage> dispatch = svc.createDispatch(portName,

+				SOAPMessage.class, Service.Mode.MESSAGE);

+

+		//Create SOAPMessage Object no attachments here.

+		FileInputStream inputStream = new FileInputStream(messageResource);

+		MessageFactory factory = MessageFactory.newInstance();

+		SOAPMessage msgObject = factory.createMessage(null, inputStream);

+

+		//Invoke the Dispatch

+		System.out.println(">> Invoking Async Dispatch");

+		SOAPMessage response = dispatch.invoke(msgObject);

+

+		assertNotNull("dispatch invoke returned null", response);

+		response.writeTo(System.out);

+		System.out.println("-----------------------------------------");

+	}

+	

+	public void testSOAPMessageASyncCallbackMessageMode() throws Exception {

+		

+        String basedir = new File(".").getAbsolutePath();

+        String messageResource = new File(basedir, this.messageResource).getAbsolutePath();

+        

+		System.out.println("---------------------------------------");

+		System.out.println("test: " + getName());

+		//Initialize the JAX-WS client artifacts

+		Service svc = Service.create(serviceName);

+		svc.addPort(portName, null, url);

+		Dispatch<SOAPMessage> dispatch = svc.createDispatch(portName,

+				SOAPMessage.class, Service.Mode.MESSAGE);

+

+		//Create SOAPMessage Object no attachments here.

+		FileInputStream inputStream = new FileInputStream(messageResource);

+		MessageFactory factory = MessageFactory.newInstance();

+		SOAPMessage msgObject = factory.createMessage(null, inputStream);

+		CallbackHandler<SOAPMessage> ch = new CallbackHandler<SOAPMessage>();

+		//Invoke the Dispatch

+		System.out.println(">> Invoking sync Dispatch");

+		Future<?> monitor = dispatch.invokeAsync(msgObject, ch);

+

+		assertNotNull("dispatch invokeAsync returned null Future<?>", monitor);

+		while (!monitor.isDone()) {

+            System.out.println(">> Async invocation still not complete");

+            Thread.sleep(1000);

+        }

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/StreamSourceDispatch.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/StreamSourceDispatch.java
new file mode 100644
index 0000000..85a11fa
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/StreamSourceDispatch.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.concurrent.Future;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+import javax.xml.ws.Service.Mode;
+
+import junit.framework.TestCase;
+
+import org.apache.axis2.jaxws.message.util.Reader2Writer;
+
+/**
+ * This class tests the JAX-WS Dispatch<Source> functionality with various
+ * forms of a StreamSource object. 
+ *
+ */
+public class StreamSourceDispatch extends TestCase {
+
+    private static XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+    
+	/**
+     * Invoke a Dispatch<Source> synchronously with the content in PAYLOAD mode.
+	 */
+    public void testSyncPayloadMode() throws Exception {
+		System.out.println("---------------------------------------");
+		System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+		svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+		Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, Source.class, 
+                Service.Mode.PAYLOAD);
+		
+        // Create a StreamSource with the desired content
+        byte[] bytes = DispatchTestConstants.sampleBodyContent.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        Source srcStream = new StreamSource((InputStream) stream);
+        
+        // Invoke the Dispatch<Source>
+		System.out.println(">> Invoking sync Dispatch with PAYLOAD mode");
+		Source response = dispatch.invoke(srcStream);
+
+        // Prepare the response content for checking
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(response);
+        Reader2Writer r2w = new Reader2Writer(reader);
+        String responseText = r2w.getAsString();
+        System.out.println(responseText);
+        
+        // Check to make sure the content is correct
+        assertTrue(!responseText.contains("soap"));
+        assertTrue(!responseText.contains("Envelope"));
+        assertTrue(!responseText.contains("Body"));
+        assertTrue(responseText.contains("echoStringResponse"));            
+	}
+
+    /**
+     * Invoke a Dispatch<Source> synchronously with the content in MESSAGE mode.
+     */
+    public void testSyncMessageMode() throws Exception {
+		System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+		Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+		svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+		Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, Source.class,
+				Mode.MESSAGE);
+		
+		// Create a StreamSource with the desired content
+        byte[] bytes = DispatchTestConstants.sampleSoapMessage.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        Source srcStream = new StreamSource((InputStream) stream);
+        
+        System.out.println(">> Invoking sync Dispatch with MESSAGE Mode");
+		StreamSource response = (StreamSource) dispatch.invoke(srcStream);
+
+        // Prepare the response content for checking
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(response);
+        Reader2Writer r2w = new Reader2Writer(reader);
+        String responseText = r2w.getAsString();
+        System.out.println(responseText);
+        
+        // Check to make sure the content is correct
+        assertTrue(responseText.contains("soap"));
+        assertTrue(responseText.contains("Envelope"));
+        assertTrue(responseText.contains("Body"));
+        assertTrue(responseText.contains("echoStringResponse"));            
+	}
+
+    /**
+     * Invoke a Dispatch<Source> asynchronously with the content in PAYLOAD mode.
+     */
+    public void testAsyncCallbackPayloadMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, Source.class,
+                Service.Mode.PAYLOAD);
+        
+        // We'll need a callback instance to handle the async responses
+        CallbackHandler<Source> callbackHandler = new CallbackHandler<Source>();
+        
+        // Create a StreamSource with the desired content
+        byte[] bytes = DispatchTestConstants.sampleBodyContent.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        Source srcStream = new StreamSource((InputStream) stream);
+
+        System.out.println(">> Invoking async (callback) Dispatch with PAYLOAD mode");
+        Future<?> monitor = dispatch.invokeAsync(srcStream, callbackHandler);
+
+        // Wait for the async response to be returned
+        while (!monitor.isDone()) {
+            System.out.println(">> Async invocation still not complete");
+            Thread.sleep(1000);
+        }
+    }
+    
+    /**
+     * Invoke a Dispatch<Source> asynchronously with the content in MESSAGE mode.
+     */
+	public void testAsyncCallbackMessageMode() throws Exception {
+		System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts 
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+		svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, Source.class,
+                Mode.MESSAGE);
+        
+        // We'll need a callback instance to handle the async responses
+        CallbackHandler<Source> callbackHandler = new CallbackHandler<Source>();
+
+        // Create a StreamSource with the desired content
+        byte[] bytes = DispatchTestConstants.sampleSoapMessage.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+		Source srcStream = new StreamSource((InputStream) stream);
+		
+        System.out.println(">> Invoking async (callback) Dispatch with MESSAGE mode");
+        Future<?> monitor = dispatch.invokeAsync(srcStream, callbackHandler);
+
+        // Wait for the async response to be returned
+        while (!monitor.isDone()) {
+            System.out.println(">> Async invocation still not complete");
+            Thread.sleep(1000);
+        }
+    }
+
+    /**
+     * Invoke a Dispatch<Source> one-way operation
+     */
+	public void testOneWayPayloadMode() throws Exception {
+		System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+		Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+		svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+		Dispatch<Source> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, Source.class,
+				Service.Mode.PAYLOAD);
+        
+		// Create a StreamSource with the desired content
+        byte[] bytes = DispatchTestConstants.sampleBodyContent.getBytes();
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+		Source srcStream = new StreamSource((InputStream) stream);
+		
+		System.out.println(">> Invoking One Way Dispatch");
+		dispatch.invokeOneWay(srcStream);
+	}
+}
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/StringDispatch.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/StringDispatch.java
new file mode 100644
index 0000000..58cf956
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/StringDispatch.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws;
+
+import java.util.concurrent.Future;
+
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+
+import junit.framework.TestCase;
+
+public class StringDispatch extends TestCase {
+
+    /**
+     * Invoke a sync Dispatch<String> in PAYLOAD mode
+     */
+    public void testSyncPayloadMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<String> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                String.class, Service.Mode.PAYLOAD);
+        
+        // Invoke the Dispatch
+        System.out.println(">> Invoking sync Dispatch");
+        String response = dispatch.invoke(DispatchTestConstants.sampleBodyContent);
+
+        assertNotNull("dispatch invoke returned null", response);
+        System.out.println(response);
+        
+        // Check to make sure the content is correct
+        assertTrue(!response.contains("soap"));
+        assertTrue(!response.contains("Envelope"));
+        assertTrue(!response.contains("Body"));
+        assertTrue(response.contains("echoStringResponse"));
+	}
+    
+    /**
+     * Invoke a sync Dispatch<String> in MESSAGE mode
+     */
+    public void testSyncWithMessageMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<String> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                String.class, Service.Mode.MESSAGE);
+        
+        // Invoke the Dispatch
+        System.out.println(">> Invoking sync Dispatch");
+        String response = dispatch.invoke(DispatchTestConstants.sampleSoapMessage);
+
+        assertNotNull("dispatch invoke returned null", response);
+        System.out.println(response);
+        
+        // Check to make sure the content is correct
+        assertTrue(response.contains("soap"));
+        assertTrue(response.contains("Envelope"));
+        assertTrue(response.contains("Body"));
+        assertTrue(response.contains("echoStringResponse"));
+	}
+    
+	/**
+     * Invoke a Dispatch<String> using the async callback API in PAYLOAD mode
+	 */
+    public void testAsyncCallbackPayloadMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<String> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                String.class, Service.Mode.PAYLOAD);
+
+        // Create the callback for async responses
+        CallbackHandler<String> callbackHandler = new CallbackHandler<String>();
+        
+        System.out.println(">> Invoking async (callback) Dispatch");
+        Future<?> monitor = dispatch.invokeAsync(DispatchTestConstants.sampleBodyContent, callbackHandler);
+	        
+        while (!monitor.isDone()) {
+            System.out.println(">> Async invocation still not complete");
+            Thread.sleep(1000);
+        }
+	}
+    
+    /**
+     * Invoke a Dispatch<String> using the async callback API in MESSAGE mode
+     */
+    public void testAsyncCallbackMessageMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<String> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                String.class, Service.Mode.MESSAGE);
+
+        // Create the callback for async responses
+        CallbackHandler<String> callbackHandler = new CallbackHandler<String>();
+        
+        System.out.println(">> Invoking async (callback) Dispatch with Message Mode");
+        Future<?> monitor = dispatch.invokeAsync(DispatchTestConstants.sampleSoapMessage, callbackHandler);
+    
+        while (!monitor.isDone()) {
+            System.out.println(">> Async invocation still not complete");
+            Thread.sleep(1000);
+        }
+	}
+	
+    /**
+     * Invoke a Dispatch<String> one-way in PAYLOAD mode 
+     */
+    public void testOneWayPayloadMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<String> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                String.class, Service.Mode.PAYLOAD);
+
+        System.out.println(">> Invoking one-way Dispatch");
+        dispatch.invokeOneWay(DispatchTestConstants.sampleBodyContent);
+    }
+    
+    /**
+     * Invoke a Dispatch<String> one-way in MESSAGE mode 
+	 */
+    public void testOneWayMessageMode() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        // Initialize the JAX-WS client artifacts
+        Service svc = Service.create(DispatchTestConstants.QNAME_SERVICE);
+        svc.addPort(DispatchTestConstants.QNAME_PORT, null, DispatchTestConstants.URL);
+        Dispatch<String> dispatch = svc.createDispatch(DispatchTestConstants.QNAME_PORT, 
+                String.class, Service.Mode.MESSAGE);
+
+        System.out.println(">> Invoking one-way Dispatch");
+        dispatch.invokeOneWay(DispatchTestConstants.sampleSoapMessage);
+	}
+}
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/attachments/MTOMSerializationTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/attachments/MTOMSerializationTests.java
new file mode 100644
index 0000000..93c4718
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/attachments/MTOMSerializationTests.java
@@ -0,0 +1,169 @@
+package org.apache.axis2.jaxws.attachments;

+

+import java.awt.Image;

+import java.io.ByteArrayOutputStream;

+import java.io.File;

+

+import javax.activation.DataHandler;

+import javax.activation.DataSource;

+import javax.imageio.ImageIO;

+import javax.imageio.stream.FileImageInputStream;

+import javax.imageio.stream.ImageInputStream;

+import javax.xml.bind.JAXBContext;

+

+import junit.framework.TestCase;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axiom.om.OMText;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;

+import org.apache.axis2.jaxws.message.Block;

+import org.apache.axis2.jaxws.message.Message;

+import org.apache.axis2.jaxws.message.Protocol;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.provider.DataSourceImpl;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.test.mtom.ImageDepot;

+import org.test.mtom.ObjectFactory;

+import org.test.mtom.SendImage;

+

+public class MTOMSerializationTests extends TestCase {

+

+    private DataSource imageDS;

+    

+    public void setUp() throws Exception {

+        String imageResourceDir = "test-resources"+File.separator+"image";

+        

+        //Create a DataSource from an image 

+        File file = new File(imageResourceDir+File.separator+"test.jpg");

+        ImageInputStream fiis = new FileImageInputStream(file);

+        Image image = ImageIO.read(fiis);

+        imageDS = new DataSourceImpl("image/jpeg","test.jpg",image);

+    }

+    

+    public MTOMSerializationTests(String name) {

+        super(name);

+    }

+    

+    /*

+     * Simulate building up an OM that is sourced from JAXB and contains

+     * binary data that should be optimized when serialized.  

+     */

+    public void testPlainOMSerialization() throws Exception {

+        System.out.println("---------------------------------------");

+        System.out.println("test: " + getName());

+        

+        OMElement payload = createPayload();

+        

+        OMOutputFormat format = new OMOutputFormat();

+        format.setDoOptimize(true);

+        format.setSOAP11(true);

+               

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        payload.serializeAndConsume(baos, format);

+        

+        System.out.println("==================================");

+        System.out.println(baos.toString());

+        System.out.println("==================================");

+    }

+    

+    /*

+     * Simulate building up an OM SOAPEnvelope that has the contents of

+     * the body sourced from JAXB and contains binary data that should be 

+     * optimized when serialized.  

+     */

+    public void testSoapOMSerialization() throws Exception {

+        System.out.println("---------------------------------------");

+        System.out.println("test: " + getName());

+        

+        OMElement payload = createPayload();

+        

+        SOAPFactory factory = new SOAP11Factory();

+        SOAPEnvelope env = factory.createSOAPEnvelope();

+        SOAPBody body = factory.createSOAPBody(env);

+        

+        body.addChild(payload);

+        

+        OMOutputFormat format = new OMOutputFormat();

+        format.setDoOptimize(true);

+        format.setSOAP11(true);

+               

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        env.serializeAndConsume(baos, format);

+        

+        System.out.println("==================================");

+        System.out.println(baos.toString());

+        System.out.println("==================================");

+    }

+    

+    public void testMTOMAttachmentWriter() throws Exception {

+        System.out.println("---------------------------------------");

+        System.out.println("test: " + getName());

+        

+        //Create a DataHandler with the String DataSource object

+        DataHandler dataHandler = new DataHandler(imageDS);

+                        

+        //Store the data handler in ImageDepot bean

+        ImageDepot imageDepot = new ObjectFactory().createImageDepot();

+        imageDepot.setImageData(dataHandler);

+        

+        JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");

+        

+        //Create a request bean with imagedepot bean as value

+        ObjectFactory factory = new ObjectFactory();

+        SendImage request = factory.createSendImage();

+        request.setInput(imageDepot);

+        

+        BlockFactory blkFactory = (JAXBBlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);

+        Block block = blkFactory.createFrom(request, jbc, null);

+        

+        MessageFactory msgFactory = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);

+        Message msg = msgFactory.create(Protocol.soap11);

+        

+        msg.setBodyBlock(0, block);

+        

+        msg.setMTOMEnabled(true);

+        

+        SOAPEnvelope soapOM = (SOAPEnvelope) msg.getAsOMElement();

+        

+        OMOutputFormat format = new OMOutputFormat();

+        format.setDoOptimize(true);

+        format.setSOAP11(true);

+               

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        soapOM.serializeAndConsume(baos, format);

+        

+        System.out.println("==================================");

+        System.out.println(baos.toString());

+        System.out.println("==================================");

+    }

+    

+    private OMElement createPayload() {

+        //Create a DataHandler with the String DataSource object

+        DataHandler dataHandler = new DataHandler(imageDS);

+                        

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace omNs = fac.createOMNamespace("urn://mtom.test.org", "mtom");

+        

+        OMElement sendImage = fac.createOMElement("sendImage", omNs);

+        

+        OMElement input = fac.createOMElement("input", omNs);

+        sendImage.addChild(input);

+        

+        OMElement imageData = fac.createOMElement("imageData", omNs);

+        input.addChild(imageData);

+        

+        OMText binaryData = fac.createOMText(dataHandler, true);

+        imageData.addChild(binaryData);

+        

+        return sendImage;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationDescriptionTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationDescriptionTests.java
new file mode 100644
index 0000000..513d93a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationDescriptionTests.java
@@ -0,0 +1,126 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.lang.reflect.Field;

+import java.lang.reflect.Method;

+import java.net.URL;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+

+import junit.framework.TestCase;

+

+/**

+ * Directly test the Description classes built via annotations without a WSDL file.

+ * These tests focus on combinations of the following:

+ * - A generic service (no annotations)

+ * - A generated service (annotations)

+ * - An SEI

+ */

+public class AnnotationDescriptionTests extends TestCase {

+    

+    /* 

+     * ========================================================================

+     * ServiceDescription Tests

+     * ========================================================================

+     */

+    public void testCreateService() {

+        String namespaceURI= "http://ws.apache.org/axis2/tests";

+        String localPart = "EchoServiceAnnotated";

+        Service service = Service.create(null,  new QName(namespaceURI, localPart));

+        ServiceDelegate serviceDelegate = DescriptionTestUtils.getServiceDelegate(service);

+        ServiceDescription serviceDescription = serviceDelegate.getServiceDescription();

+        String portLocalPart = "EchoServiceAnnotatedPort";

+        QName portQName = new QName(namespaceURI, portLocalPart);

+        DocLitWrappedProxy dlwp = service.getPort(portQName, DocLitWrappedProxy.class);

+        

+        // Validate that the Endpoint and EndpointInterface Descriptions were created correctly

+        EndpointDescription endpointDescription = serviceDescription.getEndpointDescription(portQName);

+        assertNotNull("Endpoint not created ", endpointDescription);

+        EndpointInterfaceDescription endpointInterfaceDescription = endpointDescription.getEndpointInterfaceDescription();

+        assertNotNull("EndpointInterface not created", endpointInterfaceDescription);

+        // Verify we can get the same endpoint description based on the SEI class

+        EndpointDescription[] fromSEIClass = serviceDescription.getEndpointDescription(DocLitWrappedProxy.class);

+        assertEquals(1,fromSEIClass.length);

+        assertEquals(endpointDescription, fromSEIClass[0]);

+        

+        // Test getOperation methods parameter validation

+        OperationDescription[] operationResultArray = endpointInterfaceDescription.getOperation((QName) null);

+        assertNull(operationResultArray);

+        operationResultArray = endpointInterfaceDescription.getOperation(new QName("",""));

+        assertNull(operationResultArray);

+        OperationDescription operationResult = endpointInterfaceDescription.getOperation((Method) null);

+        assertNull(operationResult);

+        

+        // Test getOperations(): Number of methods on SEI should match number of operationDescriptions

+        Method[] seiMethods = DocLitWrappedProxy.class.getMethods();

+        operationResultArray = endpointInterfaceDescription.getOperations();

+        assertEquals("Number of SEI methods and operations did not match", seiMethods.length, operationResultArray.length);

+        

+        // Test getOperation(QName)

+        // Verify @WebMethod.name is used if present.  See the SEI class annotations for more information

+        // The SEI has @WebMethod annotations that override the name of "invokeAsync", so none should be found.

+        QName javaMethodQName = new QName("", "invokeAsync");

+        operationResultArray = endpointInterfaceDescription.getOperation(javaMethodQName);

+        assertNull(operationResultArray);

+        // The SEI has @WebMethod annotations that name three operations "invoke"

+        javaMethodQName = new QName("", "invoke");

+        operationResultArray = endpointInterfaceDescription.getOperation(javaMethodQName);

+        assertNotNull(operationResultArray);

+        assertEquals(3, operationResultArray.length);

+        

+        // Test getOperation(Method)

+        // Verify an SEI method lookup works

+        operationResult = endpointInterfaceDescription.getOperation(seiMethods[0]);

+        assertNotNull(operationResult);

+        // Verify a non-SEI method returns a null

+        operationResult = endpointInterfaceDescription.getOperation(this.getClass().getMethods()[0]);

+        assertNull(operationResult);

+    }

+    

+       

+    /*

+     * TO TEST

+     * - Invalid namespace.  TNS in annotation doesn't match one from getPort

+     * - Multiple service.getPort() calls with same SEI and different QName, and that serviceDesc.getEndpointDesc(Class) returns multielement array

+     * - Test service.getPort(..) with same QName; should return same descrpption

+     */

+/*    

+    public void testValidServiceGetEndpoint() {

+        QName validPortQname = new QName("http://ws.apache.org/axis2/tests", "EchoPort");

+        EndpointDescription endpointDescription = serviceDescription.getEndpointDescription(validPortQname);

+        assertNotNull("EndpointDescription should be found", endpointDescription);

+    }

+    

+    public void testInvalidLocalpartServiceGetEndpoint() {

+        QName validPortQname = new QName("http://ws.apache.org/axis2/tests", "InvalidEchoPort");

+        EndpointDescription endpointDescription = serviceDescription.getEndpointDescription(validPortQname);

+        assertNull("EndpointDescription should not be found", endpointDescription);

+    }

+

+    public void testInvalidNamespaceServiceGetEndpoint() {

+        QName validPortQname = new QName("http://ws.apache.org/axis2/tests/INVALID", "EchoPort");

+        EndpointDescription endpointDescription = serviceDescription.getEndpointDescription(validPortQname);

+        assertNull("EndpointDescription should not be found", endpointDescription);

+    }

+*/    

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationProviderImplDescriptionTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationProviderImplDescriptionTests.java
new file mode 100644
index 0000000..f6748cb
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationProviderImplDescriptionTests.java
@@ -0,0 +1,243 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import javax.jws.WebService;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.ws.BindingType;

+import javax.xml.ws.Provider;

+import javax.xml.ws.Service;

+import javax.xml.ws.ServiceMode;

+import javax.xml.ws.WebServiceException;

+import javax.xml.ws.WebServiceProvider;

+

+import junit.framework.TestCase;

+

+public class AnnotationProviderImplDescriptionTests extends TestCase {

+    

+    public void testBasicProvider() {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(BasicProviderTestImpl.class, null);

+        assertNotNull(serviceDesc);

+        

+        EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();

+        assertNotNull(endpointDesc);

+        assertEquals(1, endpointDesc.length);

+        

+        // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]

+        EndpointDescription testEndpointDesc = endpointDesc[0];

+        assertNotNull(testEndpointDesc);

+        assertEquals(Service.Mode.MESSAGE, testEndpointDesc.getServiceModeValue());

+        assertEquals("http://www.w3.org/2003/05/soap/bindings/HTTP/", testEndpointDesc.getBindingTypeValue());

+        // The WebServiceProvider annotation specified no values on it.

+        // TODO: When the Description package changes to provide default values when no annotation present, this may need to change.

+        assertEquals("", testEndpointDesc.getWSDLLocation());

+        assertEquals("", testEndpointDesc.getServiceName());

+        assertEquals("", testEndpointDesc.getPortName());

+        assertEquals("", testEndpointDesc.getTargetNamespace());

+    }

+

+    public void testWebServiceProvider() {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(WebServiceProviderTestImpl.class, null);

+        assertNotNull(serviceDesc);

+        

+        EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();

+        assertNotNull(endpointDesc);

+        assertEquals(1, endpointDesc.length);

+        

+        // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]

+        EndpointDescription testEndpointDesc = endpointDesc[0];

+        assertNotNull(testEndpointDesc);

+        assertEquals(Service.Mode.PAYLOAD, testEndpointDesc.getServiceModeValue());

+        assertEquals("http://www.w3.org/2003/05/soap/bindings/HTTP/", testEndpointDesc.getBindingTypeValue());

+

+        assertEquals("http://wsdl.test", testEndpointDesc.getWSDLLocation());

+        assertEquals("ProviderService", testEndpointDesc.getServiceName());

+        assertEquals("ProviderServicePort", testEndpointDesc.getPortName());

+        assertEquals("http://namespace.test", testEndpointDesc.getTargetNamespace());

+    }

+    

+    public void testDefaultServiceModeProvider() {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(DefaultServiceModeProviderTestImpl.class, null);

+        assertNotNull(serviceDesc);

+        

+        EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();

+        assertNotNull(endpointDesc);

+        assertEquals(1, endpointDesc.length);

+        

+        // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]

+        EndpointDescription testEndpointDesc = endpointDesc[0];

+        // Default ServiceMode is PAYLOAD per JAXWS p. 80

+        assertEquals(Service.Mode.PAYLOAD, testEndpointDesc.getServiceModeValue());

+        assertEquals("", testEndpointDesc.getBindingTypeValue());

+    }

+    

+    public void testNoServiceModeProvider() {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(NoServiceModeProviderTestImpl.class, null);

+        assertNotNull(serviceDesc);

+        

+        EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();

+        assertNotNull(endpointDesc);

+        assertEquals(1, endpointDesc.length);

+        

+        // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]

+        EndpointDescription testEndpointDesc = endpointDesc[0];

+        assertEquals(javax.xml.ws.Service.Mode.PAYLOAD, testEndpointDesc.getServiceModeValue());

+        assertEquals(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, testEndpointDesc.getBindingTypeValue());

+    }

+    

+    public void testNoWebServiceProvider() {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        try {

+            ServiceDescription serviceDesc = 

+                DescriptionFactory.createServiceDescriptionFromServiceImpl(NoWebServiceProviderTestImpl.class, null);

+            fail("Expected WebServiceException not caught");

+        }

+        catch (WebServiceException e) {

+            // This is the expected successful test path

+        }

+        catch (Exception e) {

+            fail ("Wrong exception caught.  Expected WebServiceException but caught " + e);

+        }

+    }

+

+    public void testBothWebServiceAnnotations() {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        try {

+            ServiceDescription serviceDesc = 

+                DescriptionFactory.createServiceDescriptionFromServiceImpl(BothWebServiceAnnotationTestImpl.class, null);

+            fail("Expected WebServiceException not caught");

+        }

+        catch (WebServiceException e) {

+            // This is the expected successful test path

+        }

+        catch (Exception e) {

+            fail ("Wrong exception caught.  Expected WebServiceException but caught " + e);

+        }

+    }

+    

+    public void testServiceModeOnNonProvider() {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(WebServiceSEITestImpl.class, null);

+        assertNotNull(serviceDesc);

+        

+        EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();

+        assertNotNull(endpointDesc);

+        assertEquals(1, endpointDesc.length);

+        

+        // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]

+        EndpointDescription testEndpointDesc = endpointDesc[0];

+        assertNull(testEndpointDesc.getServiceModeValue());

+        assertEquals(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, testEndpointDesc.getBindingTypeValue());

+    }

+}

+

+// ===============================================

+// Basic Provider service implementation class

+// ===============================================

+@ServiceMode(value=Service.Mode.MESSAGE)

+@WebServiceProvider()

+@BindingType(value="http://www.w3.org/2003/05/soap/bindings/HTTP/")

+class BasicProviderTestImpl implements Provider<SOAPMessage> {

+    public SOAPMessage invoke(SOAPMessage obj) {

+        return null;

+    }

+}

+

+// ===============================================

+// WebServiceProvider service implementation class

+// ===============================================

+@ServiceMode(value=Service.Mode.PAYLOAD)

+@WebServiceProvider(serviceName="ProviderService", portName="ProviderServicePort", 

+        targetNamespace="http://namespace.test", wsdlLocation="http://wsdl.test")

+@BindingType(value="http://www.w3.org/2003/05/soap/bindings/HTTP/")

+class WebServiceProviderTestImpl implements Provider<SOAPMessage> {

+    public SOAPMessage invoke(SOAPMessage obj) {

+        return null;

+    }

+}

+

+// ===============================================

+// Default ServiceMode and BindingType Provider service implementation class

+// Default is PAYLOAD per JAXWS p. 80

+// ===============================================

+@ServiceMode()

+@WebServiceProvider()

+@BindingType()

+class DefaultServiceModeProviderTestImpl implements Provider<SOAPMessage> {

+    public SOAPMessage invoke(SOAPMessage obj) {

+        return null;

+    }

+}

+

+// ===============================================

+// No ServiceMode and no BindingType Provider service implementation class

+// ===============================================

+@WebServiceProvider()

+class NoServiceModeProviderTestImpl implements Provider<SOAPMessage> {

+    public SOAPMessage invoke(SOAPMessage obj) {

+        return null;

+    }

+}

+

+// ===============================================

+// NO WebServiceProvider Provider service implementation class

+// This is an INVALID service implementation

+// ===============================================

+@ServiceMode(value=Service.Mode.MESSAGE)

+@BindingType(value="http://www.w3.org/2003/05/soap/bindings/HTTP/")

+class NoWebServiceProviderTestImpl implements Provider<SOAPMessage> {

+    public SOAPMessage invoke(SOAPMessage obj) {

+        return null;

+    }  

+}

+

+// ===============================================

+// BOTH WebService and WebServiceProvider Provider service implementation class

+// This is an INVALID service implementation

+//===============================================

+@ServiceMode(value=Service.Mode.MESSAGE)

+@WebService()

+@WebServiceProvider()

+@BindingType(value="http://www.w3.org/2003/05/soap/bindings/HTTP/")

+class BothWebServiceAnnotationTestImpl implements Provider<SOAPMessage> {

+    public SOAPMessage invoke(SOAPMessage obj) {

+        return null;

+    }  

+}

+

+// ===============================================

+// WebService service implementation class; not 

+// Provider-based

+// ===============================================

+

+@WebService()

+class WebServiceSEITestImpl {

+    public String echo (String s) {

+        return "From WebServiceSEITestImpl " + "s";

+    }

+}

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java
new file mode 100644
index 0000000..a846f98
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java
@@ -0,0 +1,481 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import javax.jws.WebService;

+import javax.jws.soap.SOAPBinding;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.ws.axis2.tests.EchoPort;

+import org.apache.ws.axis2.tests.EchoServiceImplWithSEI;

+

+/**

+ * Tests the creation of the Description classes based on 

+ * a service implementation bean and various combinations of

+ * annotations

+ */

+public class AnnotationServiceImplDescriptionTests extends TestCase {

+    /**

+     * Create the description classes with a service implementation that

+     * contains the @WebService JSR-181 annotation which references an SEI. 

+     */

+    public void testServiceImplWithSEI() {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(EchoServiceImplWithSEI.class, null);

+        assertNotNull(serviceDesc);

+        

+        EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();

+        assertNotNull(endpointDesc);

+        assertEquals(endpointDesc.length, 1);

+

+        // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]

+        EndpointInterfaceDescription endpointIntfDesc = endpointDesc[0].getEndpointInterfaceDescription();

+        assertNotNull(endpointIntfDesc);

+        assertEquals(endpointIntfDesc.getSEIClass(), EchoPort.class);

+        

+        OperationDescription[] operations = endpointIntfDesc.getOperation("badMethodName");

+        assertNull(operations);

+        operations = endpointIntfDesc.getOperation("");

+        assertNull(operations);

+        operations = endpointIntfDesc.getOperation((String) null);

+        assertNull(operations);

+        operations = endpointIntfDesc.getOperation("echo");

+        assertNotNull(operations);

+        assertEquals(operations.length, 1);

+        assertEquals(operations[0].getJavaMethodName(), "echo");

+

+        String[] paramTypes = operations[0].getJavaParameters();

+        assertNotNull(paramTypes);

+        assertEquals(paramTypes.length, 1);

+        assertEquals("javax.xml.ws.Holder", paramTypes[0]);

+        

+        // Test RequestWrapper annotations

+        assertEquals(operations[0].getRequestWrapperLocalName(), "Echo");

+        assertEquals(operations[0].getRequestWrapperTargetNamespace(), "http://ws.apache.org/axis2/tests");

+        assertEquals(operations[0].getRequestWrapperClassName(), "org.apache.ws.axis2.tests.Echo");

+        

+        // Test ResponseWrapper annotations

+        assertEquals(operations[0].getResponseWrapperLocalName(), "EchoResponse");

+        assertEquals(operations[0].getResponseWrapperTargetNamespace(), "http://ws.apache.org/axis2/tests");

+        assertEquals(operations[0].getResponseWrapperClassName(), "org.apache.ws.axis2.tests.EchoResponse");

+        

+        // Test SOAPBinding default; that annotation is not present in the SEI

+        // Note that annotation could occur on the operation or the type

+        // (although on this SEI it doesn't occur either place).

+        assertEquals(SOAPBinding.Style.DOCUMENT, operations[0].getSoapBindingStyle());

+        assertEquals(SOAPBinding.Style.DOCUMENT, endpointIntfDesc.getSoapBindingStyle());

+        

+    }

+    

+    public void testAxisServiceBackpointer() {

+        // Test that the AxisService points back to the EndpointDesc

+        // TODO: Temporary: Create an AxisService to pass in using WSDL

+        // TODO: Eventually remove AxisService paramater from the factory; AxisService should be created (using annotations/wsdl/wsm etc)

+        

+        // Creating the AxisService this way is temporary; it should be created as part of creating the EndpointDescription from the

+        // Service Impl.  For now, though, create a service-request-based ServiceDesc using WSDL.  Then specificy that AxisService

+        // on the creation of the ServiceDesc from the service impl.  Verify that the AxisService points to the ServiceDesc.

+        

+        AxisService axisService = new AxisService();

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(EchoServiceImplWithSEI.class, axisService);

+        EndpointDescription endpointDesc = serviceDesc.getEndpointDescriptions()[0];

+        assertNotNull(serviceDesc);

+        Parameter endpointDescParam = axisService.getParameter(EndpointDescription.AXIS_SERVICE_PARAMETER);

+        assertNotNull(endpointDescParam);

+        assertEquals(endpointDesc, endpointDescParam.getValue());

+        

+    }

+    

+    public void testOverloadedServiceImplWithSEI() {

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(DocLitWrappedImplWithSEI.class, null);

+        assertNotNull(serviceDesc);

+        

+        EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();

+        assertNotNull(endpointDesc);

+        assertEquals(endpointDesc.length, 1);

+        // TODO: Using hardcoded endpointDesc[0] from ServiceDesc

+        EndpointInterfaceDescription endpointIntfDesc = endpointDesc[0].getEndpointInterfaceDescription();

+        assertNotNull(endpointIntfDesc);

+        assertEquals(endpointIntfDesc.getSEIClass(), DocLitWrappedProxy.class);

+

+        // Test for overloaded methods

+        // SEI defines two Java methods with this name

+        OperationDescription[] operations = endpointIntfDesc.getOperation("invokeAsync");

+        assertNotNull(operations);

+        assertEquals(operations.length, 2);

+        assertEquals(operations[0].getJavaMethodName(), "invokeAsync");

+        assertEquals(operations[1].getJavaMethodName(), "invokeAsync");

+        

+        // Check the Java parameters, WebParam names, and WebResult (actually lack thereof) for each of these operations

+        

+        // Note regarding WebParam names:

+        // Unlike the Java paramaters, the WebParam names will remove the JAX-WS AsyncHandler

+        // parameter.  That is because it is NOT part of the contract, and thus it is NOT part of

+        // the JAXB object constructed for the method invocation.  The AsyncHandler is part of the 

+        // JAX-WS programming model to support an asynchronous callback to receive the response.

+        

+        // Note regarding WebResult annotation:

+        // The async methods on this SEI do not carry a WebResult annotations.

+        boolean twoArgSignatureChecked = false;

+        boolean oneArgSignatureChecked = false;

+        for (OperationDescription operation:operations) {

+            String[] checkParams = operation.getJavaParameters();

+            String[] webParamNames = operation.getWebParamNames();

+            if (checkParams.length == 1) {

+                // Check the one arguement signature

+                if (oneArgSignatureChecked) {

+                    fail("One Arg signature occured more than once");

+                }

+                else {

+                    oneArgSignatureChecked = true;

+                    // Check the Java parameter

+                    assertEquals(checkParams[0], "java.lang.String");

+                    // Check the WebParam Names (see note above) 

+                    assertEquals(1, webParamNames.length);

+                    assertEquals("invoke_str", webParamNames[0]);

+                    // Check the lack of a WebResult annotation

+                    assertEquals(false, operation.isWebResultAnnotationSpecified());

+                    assertEquals(null, operation.getWebResultName());

+                }

+            }

+            else if (checkParams.length == 2) {

+                // Check the two arguement signature

+                if (twoArgSignatureChecked) {

+                    fail("Two Arg signature occured more than once");

+                }

+                else {

+                    twoArgSignatureChecked = true;

+                    // Check the Java parameter

+                    assertEquals(checkParams[0], "java.lang.String" );

+                    assertEquals(checkParams[1], "javax.xml.ws.AsyncHandler");

+                    // Check the WebParam Names (see note above) 

+                    assertEquals(1, webParamNames.length);

+                    assertEquals("invoke_str", webParamNames[0]);

+                    // Check the lack of a WebResult annotation

+                    assertEquals(false, operation.isWebResultAnnotationSpecified());

+                    assertEquals(null, operation.getWebResultName());

+                }

+            }

+            else {

+                fail("Wrong number of parameters returned");

+            }

+        }

+

+        // Test for a method with parameters of primitive types.  Note

+        // this method IS overloaded

+        operations = endpointIntfDesc.getOperation("twoWayHolderAsync");

+        assertNotNull(operations);

+        assertEquals(operations.length, 2);

+        assertEquals(operations[0].getJavaMethodName(), "twoWayHolderAsync");

+        assertEquals(operations[1].getJavaMethodName(), "twoWayHolderAsync");

+        

+        // Check the parameters for each operation

+        twoArgSignatureChecked = false;

+        boolean threeArgSignatureChecked = false;

+        for (OperationDescription operation:operations) {

+            String[] checkParams = operation.getJavaParameters();

+            String[] webParamNames = operation.getWebParamNames();

+            if (checkParams.length == 3) {

+                // Check the one arguement signature

+                if (threeArgSignatureChecked) {

+                    fail("Three Arg signature occured more than once");

+                }

+                else {

+                    threeArgSignatureChecked = true;

+                    assertEquals(checkParams[0], "java.lang.String");

+                    assertEquals(checkParams[1], "int");

+                    assertEquals(checkParams[2], "javax.xml.ws.AsyncHandler");

+                    // Check the WebParam Names (see note above) 

+                    assertEquals(2, webParamNames.length);

+                    assertEquals("twoWayHolder_str", webParamNames[0]);

+                    assertEquals("twoWayHolder_int", webParamNames[1]);

+                    // Check the lack of a WebResult annotation

+                    assertEquals(false, operation.isWebResultAnnotationSpecified());

+                    assertEquals(null, operation.getWebResultName());

+                }

+            }

+            else if (checkParams.length == 2) {

+                // Check the two arguement signature

+                if (twoArgSignatureChecked) {

+                    fail("Two Arg signature occured more than once");

+                }

+                else {

+                    twoArgSignatureChecked = true;

+                    assertEquals(checkParams[0], "java.lang.String" );

+                    assertEquals(checkParams[1], "int");

+                    // Check the WebParam Names (see note above) 

+                    assertEquals(2, webParamNames.length);

+                    assertEquals("twoWayHolder_str", webParamNames[0]);

+                    assertEquals("twoWayHolder_int", webParamNames[1]);

+                    // Check the lack of a WebResult annotation

+                    assertEquals(false, operation.isWebResultAnnotationSpecified());

+                    assertEquals(null, operation.getWebResultName());

+                }

+            }

+            else {

+                fail("Wrong number of parameters returned");

+            }

+        }

+

+        // Test for a one-way, void method with no parameters which also is not overloaded

+        operations = endpointIntfDesc.getOperation("oneWayVoid");

+        assertNotNull(operations);

+        assertEquals(operations.length, 1);

+        assertEquals(operations[0].getJavaMethodName(), "oneWayVoid");

+        String[] checkEmptyParams = operations[0].getJavaParameters();

+        assertNotNull(checkEmptyParams);

+        assertEquals(checkEmptyParams.length, 0);

+        assertEquals(true, operations[0].isOneWay());

+        assertEquals(false, operations[0].isWebResultAnnotationSpecified());

+        assertEquals(null, operations[0].getWebResultName());

+        

+        // Test two-way method for lack of OneWay annotation and WebResult annotation

+        operations = endpointIntfDesc.getOperation("invoke");

+        assertNotNull(operations);

+        assertEquals(1, operations.length);

+        assertEquals(false, operations[0].isOneWay());

+        assertEquals(true, operations[0].isWebResultAnnotationSpecified());

+        assertEquals("return_str", operations[0].getWebResultName());

+    }

+    

+    // ===========================================

+    // The following tests use implementation classes defined below

+    // in order to test various specific annotation settings

+    // ===========================================

+    

+    public void testSOAPBindingDefault() {

+        EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(SOAPBindingDefaultTestImpl.class);

+        

+        assertNull(testEndpointInterfaceDesc.getSoapBinding());

+        assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, testEndpointInterfaceDesc.getSoapBindingStyle());

+        assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL, testEndpointInterfaceDesc.getSoapBindingUse());

+        assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED, testEndpointInterfaceDesc.getSoapBindingParameterStyle());

+    }

+

+    public void testSOAPBindingDocEncBare() {

+        EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(SOAPBindingDocEncBareTestImpl.class);

+        

+        assertNotNull(testEndpointInterfaceDesc.getSoapBinding());

+        assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, testEndpointInterfaceDesc.getSoapBindingStyle());

+        assertEquals(javax.jws.soap.SOAPBinding.Use.ENCODED, testEndpointInterfaceDesc.getSoapBindingUse());

+        assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE, testEndpointInterfaceDesc.getSoapBindingParameterStyle());

+    }

+    

+    public void testSOAPBindingMethodAnnotation() {

+        // Verify that an impl without the method annotation uses the settings from the type

+        EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(SOAPBindingDocEncBareTestImpl.class);

+

+        assertNotNull(testEndpointInterfaceDesc.getSoapBinding());

+        assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, testEndpointInterfaceDesc.getSoapBindingStyle());

+        assertEquals(javax.jws.soap.SOAPBinding.Use.ENCODED, testEndpointInterfaceDesc.getSoapBindingUse());

+        assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE, testEndpointInterfaceDesc.getSoapBindingParameterStyle());

+

+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("echoString")[0];

+        assertNotNull(operationDesc);

+        assertNull(operationDesc.getSoapBinding());

+        assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, operationDesc.getSoapBindingStyle());

+        assertEquals(javax.jws.soap.SOAPBinding.Use.ENCODED, operationDesc.getSoapBindingUse());

+        assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE, operationDesc.getSoapBindingParameterStyle());

+        

+        // Verify that the method annotation setting overrides the type annotatino setting

+        testEndpointInterfaceDesc = getEndpointInterfaceDesc(SOAPBindingDefaultMethodTestImpl.class);

+        

+        assertNull(testEndpointInterfaceDesc.getSoapBinding());

+        assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, testEndpointInterfaceDesc.getSoapBindingStyle());

+        assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL, testEndpointInterfaceDesc.getSoapBindingUse());

+        assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED, testEndpointInterfaceDesc.getSoapBindingParameterStyle());

+

+        operationDesc = testEndpointInterfaceDesc.getOperation("echoString")[0];

+        assertNotNull(operationDesc);

+        assertNotNull(operationDesc.getSoapBinding());

+        assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, operationDesc.getSoapBindingStyle());

+        assertEquals(javax.jws.soap.SOAPBinding.Use.ENCODED, operationDesc.getSoapBindingUse());

+        assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE, operationDesc.getSoapBindingParameterStyle());

+    }

+    

+    public void testDefaultReqRspWrapper() {

+

+        // Test paramaterStyle = WRAPPED set a the type level with various combinations of method annotation setting

+        EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(DefaultReqRspWrapperTestImpl.class);

+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("wrappedParams")[0];

+        assertNotNull(operationDesc);

+        assertEquals("wrappedParams", operationDesc.getRequestWrapperLocalName());

+        assertEquals("wrappedParamsResponse", operationDesc.getResponseWrapperLocalName());

+        // TODO: Tests for request and response wrapper namespace; currently throws UnsupportedOperationException

+        assertEquals("org.apache.axis2.jaxws.description.WrappedParams", operationDesc.getRequestWrapperClassName());

+        assertEquals("org.apache.axis2.jaxws.description.WrappedParams", operationDesc.getResponseWrapperClassName());

+

+        operationDesc = testEndpointInterfaceDesc.getOperation("bareParams")[0];

+        assertNotNull(operationDesc);

+        assertNull(operationDesc.getRequestWrapperLocalName());

+        assertNull(operationDesc.getResponseWrapperLocalName());

+        assertNull(operationDesc.getRequestWrapperTargetNamespace());

+        assertNull(operationDesc.getResponseWrapperTargetNamespace());

+        assertNull(operationDesc.getRequestWrapperClassName());

+        assertNull(operationDesc.getResponseWrapperClassName());

+

+        // Test paramaterStyle = BARE set a the type level with various combinations of method annotation setting

+        testEndpointInterfaceDesc = getEndpointInterfaceDesc(DefaultReqRspWrapperBareTestImpl.class);

+        operationDesc = testEndpointInterfaceDesc.getOperation("wrappedParams")[0];

+        assertNotNull(operationDesc);

+        assertEquals("wrappedParams", operationDesc.getRequestWrapperLocalName());

+        assertEquals("wrappedParamsResponse", operationDesc.getResponseWrapperLocalName());

+        // TODO: Tests for request and response wrapper namespace; currently throws UnsupportedOperationException

+        assertEquals("org.apache.axis2.jaxws.description.WrappedParams", operationDesc.getRequestWrapperClassName());

+        assertEquals("org.apache.axis2.jaxws.description.WrappedParams", operationDesc.getResponseWrapperClassName());

+

+        operationDesc = testEndpointInterfaceDesc.getOperation("bareParams")[0];

+        assertNotNull(operationDesc);

+        assertNull(operationDesc.getRequestWrapperLocalName());

+        assertNull(operationDesc.getResponseWrapperLocalName());

+        assertNull(operationDesc.getRequestWrapperTargetNamespace());

+        assertNull(operationDesc.getResponseWrapperTargetNamespace());

+        assertNull(operationDesc.getRequestWrapperClassName());

+        assertNull(operationDesc.getResponseWrapperClassName());

+    }

+    

+    public void testReqRspWrapper() {

+        EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(ReqRspWrapperTestImpl.class);

+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("method1")[0];

+        assertNotNull(operationDesc);

+        assertEquals("method1ReqWrapper", operationDesc.getRequestWrapperLocalName());

+        assertEquals("method1RspWrapper", operationDesc.getResponseWrapperLocalName());

+        assertEquals("http://a.b.c.method1ReqTNS", operationDesc.getRequestWrapperTargetNamespace());

+        assertEquals("http://a.b.c.method1RspTNS", operationDesc.getResponseWrapperTargetNamespace());

+        assertEquals("org.apache.axis2.jaxws.description.method1ReqWrapper", operationDesc.getRequestWrapperClassName());

+        assertEquals("org.apache.axis2.jaxws.description.method1RspWrapper", operationDesc.getResponseWrapperClassName());

+

+        operationDesc = testEndpointInterfaceDesc.getOperation("method2")[0];

+        assertEquals("method2", operationDesc.getRequestWrapperLocalName());

+        assertEquals("method2RspWrapper", operationDesc.getResponseWrapperLocalName());

+        assertEquals("http://a.b.c.method2ReqTNS", operationDesc.getRequestWrapperTargetNamespace());

+        assertEquals("http://a.b.c.method2RspTNS", operationDesc.getResponseWrapperTargetNamespace());

+        assertEquals("org.apache.axis2.jaxws.description.method2ReqWrapper", operationDesc.getRequestWrapperClassName());

+        assertEquals("org.apache.axis2.jaxws.description.Method2", operationDesc.getResponseWrapperClassName());

+    }

+

+    /*

+     * Method to return the endpoint interface description for a given implementation class.

+     */

+    private EndpointInterfaceDescription getEndpointInterfaceDesc(Class implementationClass) {

+        // Use the description factory directly; this will be done within the JAX-WS runtime

+        ServiceDescription serviceDesc = 

+            DescriptionFactory.createServiceDescriptionFromServiceImpl(implementationClass, null);

+        assertNotNull(serviceDesc);

+        

+        EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();

+        assertNotNull(endpointDesc);

+        assertEquals(1, endpointDesc.length);

+        

+        // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]

+        EndpointDescription testEndpointDesc = endpointDesc[0];

+        EndpointInterfaceDescription testEndpointInterfaceDesc = testEndpointDesc.getEndpointInterfaceDescription();

+        assertNotNull(testEndpointInterfaceDesc);

+

+        return testEndpointInterfaceDesc;

+    }

+}

+

+// ============================================================================

+// SOAPBindingDefaultTest service implementation class

+// ============================================================================

+@WebService()

+class SOAPBindingDefaultTestImpl {

+    public String echoString(String s) {

+        return s;

+    }

+}

+// ============================================================================

+// SOAPBindingDocEncBareTestImpl service implementation class

+// Note that Style should default

+// ============================================================================

+@WebService()

+@SOAPBinding(use=javax.jws.soap.SOAPBinding.Use.ENCODED, parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.BARE)

+class SOAPBindingDocEncBareTestImpl {

+    public String echoString(String s) {

+        return s;

+    }

+}

+// ============================================================================

+// SOAPBindingDefaultMethodTest service implementation class

+// Note that style should default to DOCUMENT based on Type annotation

+// ============================================================================

+@WebService()

+class SOAPBindingDefaultMethodTestImpl {

+    @SOAPBinding(use=javax.jws.soap.SOAPBinding.Use.ENCODED, parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.BARE)

+    public String echoString (String s) {

+        return s;

+    }

+}

+

+// =============================================================================

+// testDefaultReqRspWrapper service implementation classes

+// =============================================================================

+@WebService

+//Note the default parameterStyle is WRAPPED, so no type-level annotation is required.

+class DefaultReqRspWrapperTestImpl {

+    public String wrappedParams (String s) {

+        return s;

+    }

+    

+    @SOAPBinding(parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.BARE)

+    public String bareParams (String s) {

+        return s;

+    }

+}

+

+@WebService

+@SOAPBinding(parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.BARE)

+class DefaultReqRspWrapperBareTestImpl {

+    @SOAPBinding(parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED)

+    public String wrappedParams (String s) {

+        return s;

+    }

+    

+    public String bareParams (String s) {

+        return s;

+    }

+}

+

+// =============================================================================

+// testReqRspWrapper service implementation class

+// =============================================================================

+@WebService

+//Note the default parameterStyle is WRAPPED, so no type-level annotation is required.

+class ReqRspWrapperTestImpl {

+    @RequestWrapper(localName="method1ReqWrapper", targetNamespace="http://a.b.c.method1ReqTNS", className="org.apache.axis2.jaxws.description.method1ReqWrapper")

+    @ResponseWrapper(localName="method1RspWrapper", targetNamespace="http://a.b.c.method1RspTNS", className="org.apache.axis2.jaxws.description.method1RspWrapper")

+    public String method1 (String s) {

+        return s;

+    }

+

+    @RequestWrapper(targetNamespace="http://a.b.c.method2ReqTNS", className="org.apache.axis2.jaxws.description.method2ReqWrapper")

+    @ResponseWrapper(localName="method2RspWrapper", targetNamespace="http://a.b.c.method2RspTNS")

+    public String method2 (String s) {

+        return s;

+    }

+}   
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DescriptionTestUtils.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DescriptionTestUtils.java
new file mode 100644
index 0000000..f7e8f65
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DescriptionTestUtils.java
@@ -0,0 +1,73 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.lang.reflect.Field;

+import java.net.URL;

+

+import javax.xml.ws.Service;

+

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+

+/**

+ * 

+ */

+public class DescriptionTestUtils {

+    

+    /*

+     * ========================================================================

+     * Test utility methods

+     * ========================================================================

+     */

+

+    static public URL getWSDLURL() {

+        URL wsdlURL = null;

+        // Get the URL to the WSDL file.  Note that 'basedir' is setup by Maven

+        String basedir = System.getProperty("basedir");

+        String urlString = "file://localhost/" + basedir + "/test-resources/wsdl/WSDLTests.wsdl";

+        try {

+            wsdlURL = new URL(urlString);

+        } catch (Exception e) {

+            System.out.println("Caught exception creating WSDL URL :" + urlString + "; exception: " + e.toString());

+        }

+        return wsdlURL;

+    }

+

+    static public ServiceDelegate getServiceDelegate(Service service) {

+        // Need to get to the private Service._delegate field in order to get to the ServiceDescription to test

+        ServiceDelegate returnServiceDelegate = null;

+        try {

+            Field serviceDelgateField = service.getClass().getDeclaredField("_delegate");

+            serviceDelgateField.setAccessible(true);

+            returnServiceDelegate = (ServiceDelegate) serviceDelgateField.get(service);

+        } catch (SecurityException e) {

+            // TODO Auto-generated catch block

+            e.printStackTrace();

+        } catch (NoSuchFieldException e) {

+            // TODO Auto-generated catch block

+            e.printStackTrace();

+        } catch (IllegalAccessException e) {

+            // TODO Auto-generated catch block

+            e.printStackTrace();

+        }

+        return returnServiceDelegate;

+    }

+

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DocLitWrappedImplWithSEI.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DocLitWrappedImplWithSEI.java
new file mode 100644
index 0000000..712bf6e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DocLitWrappedImplWithSEI.java
@@ -0,0 +1,28 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import javax.jws.WebService;

+

+/**

+ * 

+ */

+@WebService(serviceName = "DocLitWrappedService", endpointInterface="org.apache.axis2.jaxws.description.DocLitWrappedProxy")

+public class DocLitWrappedImplWithSEI {

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DocLitWrappedProxy.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DocLitWrappedProxy.java
new file mode 100644
index 0000000..1018751
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/DocLitWrappedProxy.java
@@ -0,0 +1,232 @@
+

+package org.apache.axis2.jaxws.description;

+

+import java.util.concurrent.Future;

+

+import javax.jws.Oneway;

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.jws.WebParam.Mode;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Holder;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.Response;

+import javax.xml.ws.ResponseWrapper;

+

+import org.test.proxy.doclitwrapped.FinOpResponse;

+import org.test.proxy.doclitwrapped.FinancialOperation;

+import org.test.proxy.doclitwrapped.ReturnType;

+import org.test.proxy.doclitwrapped.TwoWayHolder;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "DocLitWrappedProxy", targetNamespace = "http://ws.apache.org/axis2/tests")

+public interface DocLitWrappedProxy {

+

+

+    /**

+     * 

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @Oneway

+    @RequestWrapper(localName = "oneWayVoid", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.OneWayVoid")

+    public void oneWayVoid();

+

+    /**

+     * 

+     * @param onewayStr

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @Oneway

+    @RequestWrapper(localName = "oneWay", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.sei.OneWay")

+    public void oneWay(

+        @WebParam(name = "oneway_str", targetNamespace = "")

+        String onewayStr);

+

+    /**

+     * 

+     * @param twoWayHolderInt

+     * @param twoWayHolderStr

+     * @return

+     *     returns javax.xml.ws.Response<org.apache.axis2.proxy.doclitwrapped.sei.TwoWayHolder>

+     */

+    @WebMethod(operationName = "twoWayHolder", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    @ResponseWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    public Response<TwoWayHolder> twoWayHolderAsync(

+        @WebParam(name = "twoWayHolder_str", targetNamespace = "")

+        String twoWayHolderStr,

+        @WebParam(name = "twoWayHolder_int", targetNamespace = "")

+        int twoWayHolderInt);

+

+    /**

+     * 

+     * @param twoWayHolderInt

+     * @param asyncHandler

+     * @param twoWayHolderStr

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "twoWayHolder", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    @ResponseWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    public Future<?> twoWayHolderAsync(

+        @WebParam(name = "twoWayHolder_str", targetNamespace = "")

+        String twoWayHolderStr,

+        @WebParam(name = "twoWayHolder_int", targetNamespace = "")

+        int twoWayHolderInt,

+        @WebParam(name = "asyncHandler", targetNamespace = "")

+        AsyncHandler<TwoWayHolder> asyncHandler);

+

+    /**

+     * 

+     * @param twoWayHolderInt

+     * @param twoWayHolderStr

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    @ResponseWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    public void twoWayHolder(

+        @WebParam(name = "twoWayHolder_str", targetNamespace = "", mode = Mode.INOUT)

+        Holder<String> twoWayHolderStr,

+        @WebParam(name = "twoWayHolder_int", targetNamespace = "", mode = Mode.INOUT)

+        Holder<Integer> twoWayHolderInt);

+

+    /**

+     * 

+     * @param twowayStr

+     * @return

+     *     returns javax.xml.ws.Response<org.apache.axis2.proxy.doclitwrapped.sei.ReturnType>

+     */

+    @WebMethod(operationName = "twoWay", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWay", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWay")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.sei.ReturnType")

+    public Response<ReturnType> twoWayAsync(

+        @WebParam(name = "twoway_str", targetNamespace = "")

+        String twowayStr);

+

+    /**

+     * 

+     * @param twowayStr

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "twoWay", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWay", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWay")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public Future<?> twoWayAsync(

+        @WebParam(name = "twoway_str", targetNamespace = "")

+        String twowayStr,

+        @WebParam(name = "asyncHandler", targetNamespace = "")

+        AsyncHandler<ReturnType> asyncHandler);

+

+    /**

+     * 

+     * @param twowayStr

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @WebResult(name = "return_str", targetNamespace = "")

+    @RequestWrapper(localName = "twoWay", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWay")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public String twoWay(

+        @WebParam(name = "twoway_str", targetNamespace = "")

+        String twowayStr);

+

+

+    /**

+     * 

+     * @param invokeStr

+     * @return

+     *     returns javax.xml.ws.Response<org.apache.axis2.jaxws.proxy.doclitwrapped.sei.ReturnType>

+     */

+    @WebMethod(operationName = "invoke", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "invoke", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.Invoke")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public Response<ReturnType> invokeAsync(

+        @WebParam(name = "invoke_str", targetNamespace = "")

+        String invokeStr);

+

+    /**

+     * 

+     * @param invokeStr

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "invoke", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "invoke", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.Invoke")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public Future<?> invokeAsync(

+        @WebParam(name = "invoke_str", targetNamespace = "")

+        String invokeStr,

+        @WebParam(name = "asyncHandler", targetNamespace = "")

+        AsyncHandler<ReturnType> asyncHandler);

+

+    /**

+     * 

+     * @param invokeStr

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @WebResult(name = "return_str", targetNamespace = "")

+    @RequestWrapper(localName = "invoke", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.Invoke")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public String invoke(

+        @WebParam(name = "invoke_str", targetNamespace = "")

+        String invokeStr);

+

+    /**

+     * 

+     * @param op

+     * @return

+     *     returns javax.xml.ws.Response<org.apache.axis2.proxy.doclitwrapped.sei.FinOpResponse>

+     */

+    @WebMethod(operationName = "finOp", action = "http://org.apache.axis2.proxy.doclitwrapped/finOp")

+    @RequestWrapper(localName = "finOp", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOp")

+    @ResponseWrapper(localName = "finOpResponse", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOpResponse")

+    public Response<FinOpResponse> finOpAsync(

+        @WebParam(name = "op", targetNamespace = "")

+        FinancialOperation op);

+

+    /**

+     * 

+     * @param op

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "finOp", action = "http://org.apache.axis2.proxy.doclitwrapped/finOp")

+    @RequestWrapper(localName = "finOp", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOp")

+    @ResponseWrapper(localName = "finOpResponse", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOpResponse")

+    public Future<?> finOpAsync(

+        @WebParam(name = "op", targetNamespace = "")

+        FinancialOperation op,

+        @WebParam(name = "asyncHandler", targetNamespace = "")

+        AsyncHandler<FinOpResponse> asyncHandler);

+

+    /**

+     * 

+     * @param op

+     * @return

+     *     returns org.apache.axis2.proxy.doclitwrapped.sei.FinancialOperation

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/finOp")

+    @WebResult(name = "response", targetNamespace = "")

+    @RequestWrapper(localName = "finOp", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOp")

+    @ResponseWrapper(localName = "finOpResponse", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOpResponse")

+    public FinancialOperation finOp(

+        @WebParam(name = "op", targetNamespace = "")

+        FinancialOperation op);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/ServiceDescriptionTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/ServiceDescriptionTests.java
new file mode 100644
index 0000000..22dbaf8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/ServiceDescriptionTests.java
@@ -0,0 +1,96 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.net.URL;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.WebServiceException;

+

+import junit.framework.TestCase;

+

+/**

+ * This test validates the error checking and internal functioning of the

+ * ServiceDescription class.  These tests are the construction of a

+ * a ServiceDescription.  Direct tests of the functionality of a ServiceDescription

+ * and other Description classes is done in WSDLDescriptionTests.

+ */

+public class ServiceDescriptionTests extends TestCase {

+    private static final String namespaceURI= "http://org.apache.axis2.jaxws.description.ServiceDescriptionTests";

+    private static final String localPart = "EchoService";

+    private static final QName serviceQName = new QName(namespaceURI, localPart);

+    

+    public void testNullWSDL() {

+

+        QName uniqueQName = new QName(namespaceURI, localPart + "_testNullWSDL");

+        ServiceDescription serviceDescription = new ServiceDescription(null, uniqueQName, javax.xml.ws.Service.class);

+        assertNotNull("Service description not created with null WSDL", serviceDescription);

+    }

+    

+    public void testNullServiceName() {

+

+        try {

+            ServiceDescription serviceDescription = new ServiceDescription(null, null, javax.xml.ws.Service.class);

+            fail("Exception for null Service Name not thrown.");

+        }

+        catch (WebServiceException e) {

+            // Expected path

+        	// TODO Message text changed

+            //assertEquals("Did not receive correct exception", "Invalid Service class.  The service QName cannot be null.", e.getMessage());

+        }

+    }

+    

+    public void testInvalidServiceClass() {

+        try {

+            ServiceDescription serviceDescription = new ServiceDescription(null, serviceQName, Object.class);

+            fail("Exception for invalid Service class not thrown.");

+        }

+        catch (WebServiceException e) {

+            // Expected path

+        	// TODO Message text changed

+            //assertEquals("Did not receive correct exception", "Invalid Service Class; must be assignable to javax.xml.ws.Service", e.getMessage());

+        }

+    }

+    

+    public void testNullServiceClass() {

+        try {

+            ServiceDescription serviceDescription = new ServiceDescription(null, serviceQName, null);

+            fail("Exception for invalid Service class not thrown.");

+        }

+        catch (WebServiceException e) {

+            // Expected path

+        	// TODO Message text changed

+            //assertEquals("Did not receive correct exception", "Invalid Service Class; cannot be null", e.getMessage());

+        }

+        

+    }

+    

+    public void testValidServiceSubclass() {

+        QName uniqueQName = new QName(namespaceURI, localPart + "_testValidServiceSubclass");

+        ServiceDescription serviceDescription = new ServiceDescription(null, uniqueQName, ServiceSubclass.class);

+        assertNotNull("Service description not created with valid Service subclass", serviceDescription);

+    }

+}

+

+class ServiceSubclass extends javax.xml.ws.Service {

+

+    protected ServiceSubclass(URL wsdlDocumentLocation, QName serviceName) {

+        super(wsdlDocumentLocation, serviceName);

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/WSDLDescriptionTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/WSDLDescriptionTests.java
new file mode 100644
index 0000000..5cfa1dd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/WSDLDescriptionTests.java
@@ -0,0 +1,280 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.lang.reflect.Field;

+import java.net.URL;

+

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebService;

+import javax.jws.WebParam.Mode;

+import javax.xml.namespace.QName;

+import javax.xml.transform.Source;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Holder;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebServiceException;

+

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+import org.apache.ws.axis2.tests.EchoPort;

+

+import junit.framework.TestCase;

+

+/**

+ * Directly test the Description classes built with a WSDL file.

+ */

+public class WSDLDescriptionTests extends TestCase {

+    

+    private Service service;

+    private ServiceDelegate serviceDelegate;

+    private ServiceDescription serviceDescription;

+

+    private static final String VALID_PORT = "EchoPort";

+    private static final String VALID_NAMESPACE = "http://ws.apache.org/axis2/tests";

+    private QName validPortQName = new QName(VALID_NAMESPACE, VALID_PORT);

+

+    

+    protected void setUp() {

+        // Create a new service for each test to test various valid and invalid

+        // flows

+        String namespaceURI = VALID_NAMESPACE;

+        String localPart = "EchoService";

+        URL wsdlURL = DescriptionTestUtils.getWSDLURL();

+        assertNotNull(wsdlURL);

+        service = Service.create(wsdlURL, new QName(namespaceURI, localPart));

+        serviceDelegate = DescriptionTestUtils.getServiceDelegate(service);

+        serviceDescription = serviceDelegate.getServiceDescription();

+    }

+    

+    /*

+     * ========================================================================

+     * ServiceDescription Tests

+     * ========================================================================

+     */

+    public void testInvalidLocalpartServiceGetEndpoint() {

+        QName invalidPortQname = new QName(VALID_NAMESPACE, "InvalidEchoPort");

+        EndpointDescription endpointDescription = serviceDescription.getEndpointDescription(invalidPortQname);

+        assertNull("EndpointDescription should not be found", endpointDescription);

+    }

+

+    public void testInvalidNamespaceServiceGetEndpoint() {

+        QName invalidPortQname = new QName("http://ws.apache.org/axis2/tests/INVALID", VALID_PORT);

+        EndpointDescription endpointDescription = serviceDescription.getEndpointDescription(invalidPortQname);

+        assertNull("EndpointDescription should not be found", endpointDescription);

+    }

+

+    // ========================================================================

+    // EndpointDescription Tests

+    // ========================================================================

+    

+    public void testValidGetPortWithClass() {

+        // TODO: This is currently not supported (in Beta) but needs to be supported; this test tests the unsupported behavior

+        //       The try/catch should be removed and the pass/fail criteria changed.

+        try {

+            EchoPort echoPort = service.getPort(EchoPort.class);

+            fail("BETA ONLY: didn't catch expected exception");

+        }

+        catch (UnsupportedOperationException e) {

+            // FOR BETA ONLY: expect this exception

+        }

+    }

+    

+    public void testValidGetPortWithClassAndQName() {

+        EchoPort echoPort = service.getPort(validPortQName, EchoPort.class);

+        assertNotNull(echoPort);

+

+        EndpointDescription endpointDesc = serviceDescription.getEndpointDescription(validPortQName);

+        assertNotNull(endpointDesc);

+        EndpointDescription endpointDescViaSEI = serviceDescription.getEndpointDescription(EchoPort.class)[0];

+        assertNotNull(endpointDescViaSEI);

+        assertEquals(endpointDesc, endpointDescViaSEI);

+        

+        EndpointInterfaceDescription endpointInterfaceDesc = endpointDesc.getEndpointInterfaceDescription();

+        assertNotNull(endpointInterfaceDesc);

+        Class sei = endpointInterfaceDesc.getSEIClass();

+        assertEquals(EchoPort.class, sei);

+    }

+    

+    public void testValidMultipleGetPort() {

+        EchoPort echoPort = service.getPort(validPortQName, EchoPort.class);

+        assertNotNull(echoPort);

+

+        EchoPort echoPort2 = service.getPort(validPortQName, EchoPort.class);

+        assertNotNull(echoPort2);

+    }

+    

+    public void testInvalidMultipleGetPort() {

+        EchoPort echoPort = service.getPort(validPortQName, EchoPort.class);

+        assertNotNull(echoPort);

+

+        try {

+            EchoPort2 echoPort2 = service.getPort(validPortQName, EchoPort2.class);

+            fail("Should have caught exception");

+        }

+        catch (WebServiceException e) {

+            // Expected flow

+        }

+        catch (Exception e) {

+            fail("Caught unexpected exception" + e);

+        }

+        

+    }

+    

+    public void testValidAddPort() {

+        QName dispatchPortQN = new QName(VALID_NAMESPACE, "dispatchPort");

+        service.addPort(dispatchPortQN, null, null);

+        

+        EndpointDescription endpointDesc = serviceDescription.getEndpointDescription(dispatchPortQN);

+        assertNotNull(endpointDesc);

+       

+        EndpointInterfaceDescription endpointInterfaceDesc = endpointDesc.getEndpointInterfaceDescription();

+        assertNull(endpointInterfaceDesc);

+    }

+    

+    public void testInvalidAddPort() {

+        try {

+            service.addPort(validPortQName, null, null);

+            fail("Shouldn't be able to add a port that exists in the WSDL");

+        }

+        catch (WebServiceException e) {

+            // Expected path

+        }

+    }

+    

+    public void testValidAddAndGetPort() {

+        QName dispatchPortQN = new QName(VALID_NAMESPACE, "dispatchPort");

+        service.addPort(dispatchPortQN, null, null);

+        

+        EchoPort echoPort = service.getPort(validPortQName, EchoPort.class);

+        assertNotNull(echoPort);

+        

+        EndpointDescription endpointDesc = serviceDescription.getEndpointDescription(validPortQName);

+        assertNotNull(endpointDesc);

+        EndpointDescription endpointDescViaSEI = serviceDescription.getEndpointDescription(EchoPort.class)[0];

+        assertNotNull(endpointDescViaSEI);

+        assertEquals(endpointDesc, endpointDescViaSEI);

+        

+        EndpointInterfaceDescription endpointInterfaceDesc = endpointDesc.getEndpointInterfaceDescription();

+        assertNotNull(endpointInterfaceDesc);

+        Class sei = endpointInterfaceDesc.getSEIClass();

+        assertEquals(EchoPort.class, sei);

+

+        EndpointDescription endpointDescDispatch = serviceDescription.getEndpointDescription(dispatchPortQN);

+        assertNotNull(endpointDescDispatch);

+       

+        EndpointInterfaceDescription endpointInterfaceDescDispatch = endpointDescDispatch.getEndpointInterfaceDescription();

+        assertNull(endpointInterfaceDescDispatch);

+    }

+    

+    public void testValidCreateDispatch() {

+        Dispatch<Source> dispatch = service.createDispatch(validPortQName, Source.class, Service.Mode.PAYLOAD);

+        assertNotNull(dispatch);

+

+        EndpointDescription endpointDesc = serviceDescription.getEndpointDescription(validPortQName);

+        assertNotNull(endpointDesc);

+        // Since ther is no SEI, can not get the endpointDescription based on the sei class

+        EndpointDescription[] endpointDescViaSEI = serviceDescription.getEndpointDescription(EchoPort.class);

+        assertNull(endpointDescViaSEI);

+        

+        // There will be an EndpointInterfaceDescription because the service was created with 

+        // WSDL, however there will be no SEI created because a getPort has not been done

+        EndpointInterfaceDescription endpointInterfaceDesc = endpointDesc.getEndpointInterfaceDescription();

+        assertNotNull(endpointInterfaceDesc);

+        assertNull(endpointInterfaceDesc.getSEIClass());

+    }

+    

+    public void testValidCreateAndGet() {

+        Dispatch<Source> dispatch = service.createDispatch(validPortQName, Source.class, Service.Mode.PAYLOAD);

+        assertNotNull(dispatch);

+        EndpointDescription endpointDesc = serviceDescription.getEndpointDescription(validPortQName);

+        assertNotNull(endpointDesc);

+        // Since ther is no SEI, can not get the endpointDescription based on the sei class

+        EndpointDescription[] endpointDescViaSEI = serviceDescription.getEndpointDescription(EchoPort.class);

+        assertNull(endpointDescViaSEI);

+        EndpointInterfaceDescription endpointInterfaceDesc = endpointDesc.getEndpointInterfaceDescription();

+        assertNotNull(endpointInterfaceDesc);

+        assertNull(endpointInterfaceDesc.getSEIClass());

+

+        EchoPort echoPort = service.getPort(validPortQName, EchoPort.class);

+        assertNotNull(echoPort);

+        // Since a getPort has been done, should now be able to get things based on the SEI

+        endpointDesc = serviceDescription.getEndpointDescription(validPortQName);

+        assertNotNull(endpointDesc);

+        // Since ther is no SEI, can not get the endpointDescription based on the sei class

+        endpointDescViaSEI = serviceDescription.getEndpointDescription(EchoPort.class);

+        assertNotNull(endpointDescViaSEI);

+        assertEquals(endpointDesc, endpointDescViaSEI[0]);

+        endpointInterfaceDesc = endpointDesc.getEndpointInterfaceDescription();

+        assertNotNull(endpointInterfaceDesc);

+        assertEquals(EchoPort.class, endpointInterfaceDesc.getSEIClass());

+    }

+    

+    public void testValidGetAndCreate() {

+        EchoPort echoPort = service.getPort(validPortQName, EchoPort.class);

+        assertNotNull(echoPort);

+        Dispatch<Source> dispatch = service.createDispatch(validPortQName, Source.class, Service.Mode.PAYLOAD);

+        assertNotNull(dispatch);

+

+        // Since a getPort has been done, should now be able to get things based on the SEI

+        EndpointDescription endpointDesc = serviceDescription.getEndpointDescription(validPortQName);

+        assertNotNull(endpointDesc);

+        // Since ther is no SEI, can not get the endpointDescription based on the sei class

+        EndpointDescription[] endpointDescViaSEI = serviceDescription.getEndpointDescription(EchoPort.class);

+        assertNotNull(endpointDescViaSEI);

+        assertEquals(endpointDesc, endpointDescViaSEI[0]);

+        EndpointInterfaceDescription endpointInterfaceDesc = endpointDesc.getEndpointInterfaceDescription();

+        assertNotNull(endpointInterfaceDesc);

+        assertEquals(EchoPort.class, endpointInterfaceDesc.getSEIClass());

+    }

+    // TODO: Need to add a similar test with no WSDL present; note that it currently would not pass

+    public void testInvalidAddAndGetPort() {

+        // Should not be able to do a getPort on one that was added with addPort

+        QName dispatchPortQN = new QName(VALID_NAMESPACE, "dispatchPort");

+        service.addPort(dispatchPortQN, null, null);

+        try {

+            EchoPort echoPort = service.getPort(dispatchPortQN, EchoPort.class);

+            fail("Should have thrown a WebServiceException");

+        }

+        catch (WebServiceException e) {

+            // Expected path

+        }

+    }

+}

+

+// EchoPort2 is identical to EchoPort, but it should still cause an exception

+// if it is used on a subsequent getPort after getPort(EchoPort.class) is done.

+@WebService(name = "EchoPort", targetNamespace = "http://ws.apache.org/axis2/tests", wsdlLocation = "\\work\\apps\\eclipse\\workspace\\axis2-live\\modules\\jaxws\\test-resources\\wsdl\\WSDLTests.wsdl")

+interface EchoPort2 {

+

+

+    /**

+     * 

+     * @param text

+     */

+    @WebMethod(operationName = "Echo", action = "http://ws.apache.org/axis2/tests/echo")

+    @RequestWrapper(localName = "Echo", targetNamespace = "http://ws.apache.org/axis2/tests", className = "org.apache.ws.axis2.tests.Echo")

+    @ResponseWrapper(localName = "EchoResponse", targetNamespace = "http://ws.apache.org/axis2/tests", className = "org.apache.ws.axis2.tests.EchoResponse")

+    public void echo(

+        @WebParam(name = "text", targetNamespace = "", mode = Mode.INOUT)

+        Holder<String> text);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/WSDLTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/WSDLTests.java
new file mode 100644
index 0000000..1de1c52
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/WSDLTests.java
@@ -0,0 +1,101 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description;

+

+import java.lang.reflect.Field;

+import java.net.URL;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebServiceException;

+

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.jaxws.spi.ServiceDelegate;

+

+import junit.framework.TestCase;

+

+/**

+ * Tests building a ServiceDescription using WSDL and the JAXWS Service API.  

+ * Note that a ServiceDescription is built when a javax.xml.ws.Service is created.  Since that is the actual API 

+ * that should be used, this test will create Service objects and then use introspection

+ * to check the underlying ServiceDelegate which contains the ServiceDescription.

+ */

+public class WSDLTests extends TestCase {

+    

+    public void testValidWSDLService() {

+        Service service = null;

+        ServiceDelegate serviceDelegate = null;

+ 

+        String namespaceURI= "http://ws.apache.org/axis2/tests";

+        String localPart = "EchoService";

+        URL wsdlURL = DescriptionTestUtils.getWSDLURL();

+        assertNotNull(wsdlURL);

+        service = Service.create(wsdlURL, new QName(namespaceURI, localPart));

+        assertNotNull("Service not created", service);

+

+        serviceDelegate = DescriptionTestUtils.getServiceDelegate(service);

+        assertNotNull("ServiceDelegate not created", serviceDelegate);

+        

+        ServiceDescription serviceDescription = serviceDelegate.getServiceDescription();

+        assertNotNull("ServiceDescription not created", serviceDescription);

+        

+//        AxisService axisService = serviceDescription.getAxisService();

+//        assertNotNull("AxisService not created", axisService);

+    }

+    

+    public void testInvalidServiceLocalName() {

+        Service service = null;

+ 

+        String namespaceURI= "http://ws.apache.org/axis2/tests";

+        String localPart = "BADEchoService";

+        try {

+            URL wsdlURL = DescriptionTestUtils.getWSDLURL();

+            assertNotNull(wsdlURL);

+            service = Service.create(wsdlURL, new QName(namespaceURI, localPart));

+            fail("Exception should have been thrown for invalid Service name");

+        }

+        catch (WebServiceException e) {

+            // This is the expected flow; it is really more a test of ServiceDelegate that ServiceDescription

+        }

+    }

+

+    public void testNullWSDLLocation() {

+        Service service = null;

+

+        String namespaceURI= "http://ws.apache.org/axis2/tests";

+        String localPart = "EchoService_nullWSDL";

+        service = Service.create(new QName(namespaceURI, localPart));

+        assertNotNull("Service not created", service);

+        

+    }

+    

+    public void testNullServiceName() {

+        Service service = null;

+        

+        try {

+            service = Service.create(null);

+            fail("Exception should have been thrown for null Service name");

+        }

+        catch (WebServiceException e) {

+            // This is the expected flow; it is really more a test of ServiceDelegate that ServiceDescription

+            // but we are verifying expected behavior.

+        }

+        

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/builder/DescriptionBuilderTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/builder/DescriptionBuilderTests.java
new file mode 100644
index 0000000..c133daf
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/description/builder/DescriptionBuilderTests.java
@@ -0,0 +1,78 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.description.builder;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite;

+import org.apache.axis2.jaxws.description.builder.WebServiceAnnot;

+

+/**

+ * Directly test the Description classes built via annotations without a WSDL file.

+ * These tests focus on combinations of the following:

+ * - A generic service (no annotations)

+ * - A generated service (annotations)

+ * - An SEI

+ */

+public class DescriptionBuilderTests extends TestCase {

+    

+    /* 

+     * ========================================================================

+     * ServiceDescription Tests

+     * ========================================================================

+     */

+    public void testCreateWebServiceInputImpl() {

+        String name = "EchoServiceAnnotated";

+        String targetNamespace = "echoTargetNamespace";

+        String serviceName = "EchoServiceName";

+        String wsdlLocation = "http://EchoService/wsdl";

+        String endpointInterface = "EchoServiceEndpointInterface";

+        String portName = "EchoServiceAnnotatedPort";

+        

+    	WebServiceAnnot webServiceAnnotImpl1 = 

+    				WebServiceAnnot.createWebServiceAnnotImpl();

+

+    	WebServiceAnnot webServiceAnnotImpl2 = 

+			WebServiceAnnot.createWebServiceAnnotImpl(

+	    													name,

+	    													targetNamespace,

+	    													serviceName,

+	    													wsdlLocation,

+	    													endpointInterface,

+	    													portName);

+    	

+    	DescriptionBuilderComposite descriptionBuilderComposite = 

+    									new DescriptionBuilderComposite();

+    	

+    	descriptionBuilderComposite.setWebServiceAnnot(webServiceAnnotImpl2);

+    	

+    	

+    	WebServiceAnnot webServiceAnnotImpl3 = 

+    		descriptionBuilderComposite.getWebServiceAnnot();

+        

+    	assertNotNull("WebService name not set", webServiceAnnotImpl3.name());

+    	assertNotNull("WebService targetNamespace not set", webServiceAnnotImpl3.name());

+    	assertNotNull("WebService serviceName not set", webServiceAnnotImpl3.name());

+    	assertNotNull("WebService wsdlLocation not set", webServiceAnnotImpl3.name());

+    	assertNotNull("WebService endpointInterface not set", webServiceAnnotImpl3.name());

+	

+    	System.out.println("WebService name:" +webServiceAnnotImpl3.name());

+    }

+ 

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/SOAP12Dispatch.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/SOAP12Dispatch.java
new file mode 100644
index 0000000..c63d09e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/SOAP12Dispatch.java
@@ -0,0 +1,143 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.dispatch;

+

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+

+import javax.xml.namespace.QName;

+import javax.xml.transform.Source;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.transform.stream.StreamSource;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+import javax.xml.ws.Service.Mode;

+import javax.xml.ws.soap.SOAPBinding;

+

+import junit.framework.TestCase;

+

+/**

+ * This class uses the JAX-WS Dispatch API to test sending and receiving

+ * messages using SOAP 1.2.

+ */

+public class SOAP12Dispatch extends TestCase {

+    

+    private static final QName QNAME_SERVICE = new QName(

+            "http://org/apache/axis2/jaxws/test/SOAP12", "SOAP12Service");

+    private static final QName QNAME_PORT = new QName(

+            "http://org/apache/axis2/jaxws/test/SOAP12", "SOAP12Port");

+    private static final String URL_ENDPOINT = "http://localhost:8080/axis2/services/SOAP12ProviderService";    

+    

+    private static final String sampleRequest = 

+        "<test:echoString xmlns:test=\"http://org/apache/axis2/jaxws/test/SOAP12\">" +

+        "<test:input>SAMPLE REQUEST MESSAGE</test:input>" +

+        "</test:echoString>";

+    private static final String sampleEnvelopeHead = 

+        "<soapenv:Envelope xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\">" +

+        "<soapenv:Header /><soapenv:Body>";

+    private static final String sampleEnvelopeTail = 

+        "</soapenv:Body></soapenv:Envelope>";

+    private static final String sampleEnvelope = 

+        sampleEnvelopeHead + 

+        sampleRequest + 

+        sampleEnvelopeTail;

+    

+    public SOAP12Dispatch(String name) {

+        super(name);

+    }

+    

+    /**

+     * Test sending a SOAP 1.2 request in PAYLOAD mode

+     */

+    public void testSOAP12DispatchPayloadMode() throws Exception {

+        // Create the JAX-WS client needed to send the request

+        Service service = Service.create(QNAME_SERVICE);

+        service.addPort(QNAME_PORT, SOAPBinding.SOAP12HTTP_BINDING, URL_ENDPOINT);

+        Dispatch<Source> dispatch = service.createDispatch(

+                QNAME_PORT, Source.class, Mode.PAYLOAD);

+        

+        // Create the Source object with the payload contents.  Since

+        // we're in PAYLOAD mode, we don't have to worry about the envelope.

+        byte[] bytes = sampleRequest.getBytes();

+        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);

+        StreamSource request = new StreamSource(bais);

+        

+        // Send the SOAP 1.2 request

+        Source response = dispatch.invoke(request);

+        

+        // Convert the response to a more consumable format

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        StreamResult result = new StreamResult(baos);

+        

+        TransformerFactory factory = TransformerFactory.newInstance();

+        Transformer trans = factory.newTransformer();

+        trans.transform(response, result);

+        

+        // Check to make sure the contents are correct.  Again, since we're

+        // in PAYLOAD mode, we shouldn't have anything related to the envelope

+        // in the return, just the contents of the Body.

+        String responseText = baos.toString();

+        assertTrue(!responseText.contains("soap"));

+        assertTrue(!responseText.contains("Envelope"));

+        assertTrue(!responseText.contains("Body"));

+        assertTrue(responseText.contains("echoStringResponse"));        

+    }

+    

+    /**

+     * Test sending a SOAP 1.2 request in MESSAGE mode

+     */

+    public void testSOAP12DispatchMessageMode() throws Exception {

+        // Create the JAX-WS client needed to send the request

+        Service service = Service.create(QNAME_SERVICE);

+        service.addPort(QNAME_PORT, SOAPBinding.SOAP12HTTP_BINDING, URL_ENDPOINT);

+        Dispatch<Source> dispatch = service.createDispatch(

+                QNAME_PORT, Source.class, Mode.MESSAGE);

+        

+        // Create the Source object with the message contents.  Since

+        // we're in MESSAGE mode, we'll need to make sure we create this

+        // with the right protocol.

+        byte[] bytes = sampleEnvelope.getBytes();

+        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);

+        StreamSource request = new StreamSource(bais);

+        

+        Source response = dispatch.invoke(request);

+        

+        // Convert the response to a more consumable format

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        StreamResult result = new StreamResult(baos);

+        

+        TransformerFactory factory = TransformerFactory.newInstance();

+        Transformer trans = factory.newTransformer();

+        trans.transform(response, result);

+        

+        // Check to make sure the contents of the message are correct

+        String responseText = baos.toString();

+        assertTrue(responseText.contains("soap"));

+        assertTrue(responseText.contains("Body"));

+        assertTrue(responseText.contains("Envelope"));

+        assertTrue(responseText.contains("echoStringResponse"));

+        

+        // Check to make sure the message returned had the right protocol version

+        // TODO: Need to determine whether or not we should be using the hard 

+        // coded URLs here, or whether we should be using a constant for the 

+        // purposes of the test.

+        assertTrue(responseText.contains("http://www.w3.org/2003/05/soap-envelope"));

+        assertTrue(!responseText.contains("http://schemas.xmlsoap.org/soap/envelope"));

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/META-INF/SOAP12ProviderService.wsdl b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/META-INF/SOAP12ProviderService.wsdl
new file mode 100644
index 0000000..aa645ea
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/META-INF/SOAP12ProviderService.wsdl
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions targetNamespace="http://org/apache/axis2/jaxws/test/SOAP12" 

+    xmlns:impl="http://org/apache/axis2/jaxws/test/SOAP12" 

+    xmlns:intf="http://org/apache/axis2/jaxws/test/SOAP12" 

+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

+    xmlns:wsdlsoap12="http://schemas.xmlsoap.org/wsdl/soap12/" 

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+ <wsdl:types>

+  <schema elementFormDefault="qualified" targetNamespace="http://org/apache/axis2/jaxws/test/SOAP12" 

+        xmlns="http://www.w3.org/2001/XMLSchema" 

+        xmlns:impl="http://org/apache/axis2/jaxws/test/SOAP12" 

+        xmlns:intf="http://org/apache/axis2/jaxws/test/SOAP12" 

+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

+        xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+   <element name="echoString">

+    <complexType>

+     <sequence>

+      <element name="input" nillable="true" type="xsd:string"/>

+     </sequence>

+    </complexType>

+   </element>

+   <element name="echoStringResponse">

+    <complexType>

+     <sequence>

+      <element name="echoStringReturn" nillable="true" type="xsd:string"/>

+     </sequence>

+    </complexType>

+   </element>

+   

+   <!--

+   <element name="echoStringRequest">

+    <complexType>

+     <sequence>

+      <element name="echoStringInput" nillable="true" type="xsd:string"/>

+     </sequence>

+    </complexType>

+   </element>

+   -->

+        </schema>

+ </wsdl:types>

+

+   <wsdl:message name="echoStringResponse">

+

+      <wsdl:part element="impl:echoStringResponse" name="parameters"/>

+

+   </wsdl:message>

+

+   <wsdl:message name="echoStringRequest">

+

+      <wsdl:part element="impl:echoString" name="parameters"/>

+

+   </wsdl:message>

+

+   <wsdl:portType name="Echo">

+

+      <wsdl:operation name="echoString">

+

+         <wsdl:input message="impl:echoStringRequest" name="echoStringRequest"/>

+

+         <wsdl:output message="impl:echoStringResponse" name="echoStringResponse"/>

+

+      </wsdl:operation>

+

+   </wsdl:portType>

+

+   <wsdl:binding name="SOAP12Binding" type="impl:Echo">

+

+      <wsdlsoap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+

+      <wsdl:operation name="echoString">

+

+         <wsdlsoap12:operation soapAction=""/>

+

+         <wsdl:input name="echoStringRequest">

+

+            <wsdlsoap12:body use="literal"/>

+

+         </wsdl:input>

+

+         <wsdl:output name="echoStringResponse">

+

+            <wsdlsoap12:body use="literal"/>

+

+         </wsdl:output>

+

+      </wsdl:operation>

+

+   </wsdl:binding>

+

+   <wsdl:service name="SOAP12Service">

+

+      <wsdl:port binding="impl:SOAP12Binding" name="SOAP12Port">

+

+         <wsdlsoap12:address location="http://localhost:9080/axis2/services/SOAP12Service"/>

+

+      </wsdl:port>

+

+   </wsdl:service>

+

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/META-INF/services.xml
new file mode 100644
index 0000000..9910cf6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+  <service name="SOAP12ProviderService">

+      <messageReceivers>

+         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" 

+	         class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+      </messageReceivers>

+      <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.dispatch.server.SOAP12Provider</parameter>

+      <operation name="echoString" mep="http://www.w3.org/2004/08/wsdl/in-out">

+         <actionMapping/>

+      </operation>

+   </service>

+</serviceGroup>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/SOAP12Provider.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/SOAP12Provider.java
new file mode 100644
index 0000000..bda29a2
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/dispatch/server/SOAP12Provider.java
@@ -0,0 +1,40 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.dispatch.server;

+

+import javax.xml.ws.Provider;

+import javax.xml.ws.WebServiceProvider;

+

+/**

+ * A Provider&lt;String&gt; implementation used to test sending and 

+ * receiving SOAP 1.2 messages.

+ */

+@WebServiceProvider

+public class SOAP12Provider implements Provider<String> {

+

+    private static final String sampleResponse = 

+        "<test:echoStringResponse xmlns:test=\"http://org/apache/axis2/jaxws/test/SOAP12\">" +

+        "<test:output>SAMPLE REQUEST MESSAGE</test:output>" +

+        "</test:echoStringResponse>";

+    

+    public String invoke(String obj) {

+        System.out.println(">> request received");

+        System.out.println(obj);

+        return sampleResponse;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/exception/ExceptionFactoryTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/exception/ExceptionFactoryTests.java
new file mode 100644
index 0000000..a498051
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/exception/ExceptionFactoryTests.java
@@ -0,0 +1,96 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.exception;

+

+import org.apache.axis2.jaxws.ExceptionFactory;

+import javax.xml.ws.ProtocolException;

+import javax.xml.ws.http.HTTPException;

+import org.apache.axis2.jaxws.message.MessageException;

+import org.apache.axis2.jaxws.message.MessageInternalException;

+import junit.framework.TestCase;

+import javax.xml.ws.WebServiceException;

+

+/**

+ * Tests the ExceptionFactory

+ */

+public class ExceptionFactoryTests extends TestCase {

+	private static final String sampleText = "Sample";

+

+    /**

+     * @param name

+     */

+    public ExceptionFactoryTests(String name) {

+        super(name);

+    }

+    

+    /**

+     * @teststrategy Tests creation of a WebServiceException

+     */

+    public void testExceptionFactory00() throws Exception {

+    	try{

+    		throw ExceptionFactory.makeWebServiceException(sampleText);

+    	} catch(WebServiceException e){

+    		assertTrue(sampleText.equals(e.getMessage()));

+    		assertTrue(e.getCause() == null);

+    	}

+    }

+    

+    /**

+     * @teststrategy Tests creation of a WebServiceException from another WebServiceException

+     */

+    public void testExceptionFactory01() throws Exception {

+    	try{

+    		WebServiceException wse = (WebServiceException) ExceptionFactory.makeWebServiceException(sampleText);

+    		throw ExceptionFactory.makeWebServiceException(wse);

+    	} catch(WebServiceException e){

+    		// Should only be a single WebServiceException

+    		assertTrue(sampleText.equals(e.getMessage()));

+    		assertTrue(e.getCause() == null);

+    	}

+    }

+    

+    /**

+     * @teststrategy Tests creation of a WebServiceException->WebServiceException->ProtocolException

+     */

+    public void testExceptionFactory02() throws Exception {

+    	ProtocolException pe = new ProtocolException(sampleText);

+    	try{

+    		WebServiceException wse = (WebServiceException) ExceptionFactory.makeWebServiceException(pe);

+    		throw ExceptionFactory.makeWebServiceException(wse);

+    	} catch(WebServiceException e){

+    		// Should only be a single WebServiceException with a Protocol Exception

+    		assertTrue(sampleText.equals(e.getMessage()));

+    		assertTrue(e.getCause() == null);

+    	}

+    }

+    

+    /**

+     * @teststrategy Tests creation of a WebServiceException->WebServiceException->NullPointerException

+     */

+    public void testExceptionFactory03() throws Exception {

+    	NullPointerException npe = new NullPointerException();

+    	try{

+    		WebServiceException wse = (WebServiceException) ExceptionFactory.makeWebServiceException(npe);

+    		throw ExceptionFactory.makeWebServiceException(wse);

+    	} catch(WebServiceException e){

+    		// Should only be a single WebServiceException with a Protocol Exception

+    		assertTrue(e.getMessage() == null);

+    		assertTrue(e.getCause() == npe);

+    	}

+    }

+    

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java
new file mode 100644
index 0000000..67183b0
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java
@@ -0,0 +1,114 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.framework;

+

+import junit.extensions.TestSetup;

+import junit.framework.Test;

+import junit.framework.TestCase;

+import junit.framework.TestSuite;

+

+import org.apache.axis2.jaxws.DispatchTestSuite;

+import org.apache.axis2.jaxws.attachments.MTOMSerializationTests;

+import org.apache.axis2.jaxws.description.AnnotationDescriptionTests;

+import org.apache.axis2.jaxws.description.AnnotationProviderImplDescriptionTests;

+import org.apache.axis2.jaxws.description.AnnotationServiceImplDescriptionTests;

+import org.apache.axis2.jaxws.description.ServiceDescriptionTests;

+import org.apache.axis2.jaxws.description.WSDLDescriptionTests;

+import org.apache.axis2.jaxws.description.WSDLTests;

+import org.apache.axis2.jaxws.description.builder.DescriptionBuilderTests;

+import org.apache.axis2.jaxws.dispatch.SOAP12Dispatch;

+import org.apache.axis2.jaxws.exception.ExceptionFactoryTests;

+import org.apache.axis2.jaxws.handler.HandlerChainProcessorTests;

+import org.apache.axis2.jaxws.i18n.JaxwsMessageBundleTests;

+import org.apache.axis2.jaxws.message.BlockTests;

+import org.apache.axis2.jaxws.message.MessageTests;

+import org.apache.axis2.jaxws.message.SAAJConverterTests;

+import org.apache.axis2.jaxws.message.SOAP12Tests;

+import org.apache.axis2.jaxws.message.XMLStreamReaderSplitterTests;

+import org.apache.axis2.jaxws.provider.*;

+import org.apache.axis2.jaxws.sample.AddNumbersTests;

+import org.apache.axis2.jaxws.sample.AddressBookTests;

+import org.apache.axis2.jaxws.sample.BareTests;

+import org.apache.axis2.jaxws.sample.MtomSampleTests;

+import org.apache.axis2.jaxws.sample.NonWrapTests;

+import org.apache.axis2.jaxws.sample.WrapTests;

+import org.apache.axis2.proxy.ProxyNonWrappedTests;

+import org.apache.axis2.proxy.ProxyTests;

+

+public class JAXWSTest extends TestCase {

+    /**

+     * suite

+     * @return

+     */

+    public static Test suite() {

+        TestSuite suite = new TestSuite();

+        

+        // Add each of the test suites

+        suite = DispatchTestSuite.addTestSuites(suite);

+        suite.addTestSuite(SOAP12Dispatch.class);

+        

+        suite.addTestSuite(BlockTests.class);

+        suite.addTestSuite(MessageTests.class);

+        suite.addTestSuite(SAAJConverterTests.class);

+        suite.addTestSuite(XMLStreamReaderSplitterTests.class);

+        suite.addTestSuite(SOAP12Tests.class);

+        suite.addTestSuite(MTOMSerializationTests.class);

+        

+        suite.addTestSuite(WSDLTests.class);

+        suite.addTestSuite(DescriptionBuilderTests.class);

+        suite.addTestSuite(ServiceDescriptionTests.class);

+        suite.addTestSuite(WSDLDescriptionTests.class);

+        suite.addTestSuite(AnnotationDescriptionTests.class);

+        suite.addTestSuite(AnnotationServiceImplDescriptionTests.class);

+        suite.addTestSuite(AnnotationProviderImplDescriptionTests.class);

+        

+        suite.addTestSuite(HandlerChainProcessorTests.class);

+        suite.addTestSuite(JaxwsMessageBundleTests.class);

+        

+        suite.addTestSuite(StringProviderTests.class);

+        suite.addTestSuite(StringMessageProviderTests.class);

+        suite.addTestSuite(SourceProviderTests.class);

+        suite.addTestSuite(SourceMessageProviderTests.class);

+        suite.addTestSuite(SoapMessageProviderTests.class);

+        suite.addTestSuite(JAXBProviderTests.class);

+        suite.addTestSuite(ProxyTests.class);

+        suite.addTestSuite(ProxyNonWrappedTests.class);

+        suite.addTestSuite(ExceptionFactoryTests.class);

+

+        suite.addTestSuite(AddressBookTests.class);

+        suite.addTestSuite(MtomSampleTests.class);

+        suite.addTestSuite(NonWrapTests.class);

+        suite.addTestSuite(WrapTests.class);

+        suite.addTestSuite(AddNumbersTests.class);

+        suite.addTestSuite(BareTests.class);

+        

+        // Start (and stop) the server only once for all the tests

+        TestSetup testSetup = new TestSetup(suite) {

+            public void setUp() {

+                System.out.println("Starting the server.");

+                StartServer startServer = new StartServer("server1");

+                startServer.testStartServer();

+            }

+            public void tearDown() {

+                System.out.println("Stopping the server");

+                StopServer stopServer = new StopServer("server1");

+                stopServer.testStopServer();

+            }

+        };

+        return testSetup;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/StartServer.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/StartServer.java
new file mode 100644
index 0000000..d58e2f3
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/StartServer.java
@@ -0,0 +1,33 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.framework;

+

+import org.apache.axis2.jaxws.util.SimpleServer;

+

+import junit.framework.TestCase;

+

+public class StartServer extends TestCase {

+

+    public StartServer(String name) {

+        super(name);

+    }

+    

+    public void testStartServer() {

+        SimpleServer server = new SimpleServer();

+        server.start();

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/StopServer.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/StopServer.java
new file mode 100644
index 0000000..a02d524
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/framework/StopServer.java
@@ -0,0 +1,33 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.framework;

+

+import org.apache.axis2.jaxws.util.SimpleServer;

+

+import junit.framework.TestCase;

+

+public class StopServer extends TestCase {

+

+    public StopServer(String name) {

+        super(name);

+    }

+    

+    public void testStopServer() {

+        SimpleServer server = new SimpleServer();

+        server.stop();

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/handler/HandlerChainProcessorTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/handler/HandlerChainProcessorTests.java
new file mode 100644
index 0000000..acc311d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/handler/HandlerChainProcessorTests.java
@@ -0,0 +1,908 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.handler;

+

+import java.util.ArrayList;

+import java.util.Set;

+

+import javax.xml.ws.ProtocolException;

+import javax.xml.ws.handler.Handler;

+import javax.xml.ws.handler.LogicalHandler;

+import javax.xml.ws.handler.soap.SOAPHandler;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.jaxws.core.MessageContext;

+

+/*

+ * There are myriad scenarios to test here:

+ * Handler implementations can implement two classes:  SOAPHandler or LogicalHandler (2)

+ * They implement two critical methods:  handleMessage and handleFault (2)

+ * These methods have four possible results:  true, false, ProtocolException, other exception

+ * 

+ * Besides the possible behaviors of the Handler implementations, we also

+ * have to consider whether the message is incoming or outgoing, whether

+ * it's a response or a request, and if a response is expected.

+ * 

+ * Do our best to cover all scenarios.

+ * 

+ * The testHandleMessage_* methods test the HandlerChainProcessor.processChain() method

+ * The testHandleFault_* methods test the HandlerChainProcessor.processFault() method

+ * 

+ */

+public class HandlerChainProcessorTests extends TestCase {

+

+	// String result is how we'll verify the right methods from

+	// the Handler implementations were called

+	private String result = new String();

+

+	private enum ResultDesired { TRUE, FALSE, PROTOCOL_EXCEPTION, OTHER_EXCEPTION };

+	

+	// use the following to dictate how the Handler methods behave

+	private ResultDesired soaphandler1_MessageResultDesired;

+	private ResultDesired soaphandler1_FaultResultDesired;

+	private ResultDesired soaphandler2_MessageResultDesired;

+	private ResultDesired soaphandler2_FaultResultDesired;

+	private ResultDesired logicalhandler1_MessageResultDesired;

+	private ResultDesired logicalhandler1_FaultResultDesired;

+	private ResultDesired logicalhandler2_MessageResultDesired;

+	private ResultDesired logicalhandler2_FaultResultDesired;

+

+	ArrayList<Handler> handlers = new ArrayList<Handler>();

+	

+	@Override

+	protected void setUp() throws Exception {

+		// HandlerChainProcessor expects a sorted chain

+		handlers.add(new LogicalHandler2());

+		handlers.add(new LogicalHandler1());

+		handlers.add(new SOAPHandler1());

+		handlers.add(new SOAPHandler2());

+	}

+	

+	/*

+	 * empty list

+	 */

+	public void testHandleMessage_empty1() {

+		

+		Exception local_exception = null;

+		

+		HandlerChainProcessor processor1 = new HandlerChainProcessor(null);

+		HandlerChainProcessor processor2 = new HandlerChainProcessor(new ArrayList<Handler>());

+		try {

+			processor1.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+			processor2.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+		} catch (Exception e) {

+			local_exception = e;

+		}

+		

+		// no exceptions!

+		assertNull(local_exception);

+	}

+	

+	/*

+	 * one protocol handler

+	 * processing expected:  Logical and SOAP, reverse order, close

+	 */

+	public void testHandleMessage_oneproto1() {

+		

+		// reset result

+		result = "";

+		

+		// use a local list

+		ArrayList<Handler> local_list = new ArrayList<Handler>();

+		local_list.add(new SOAPHandler1());

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+	

+		HandlerChainProcessor processor = new HandlerChainProcessor(local_list);

+		

+		processor.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, false);

+

+		assertEquals("S1m:S1c:", result);

+		

+	}

+	

+	/*

+	 * one protocol handler in a logical context

+	 * no handlers will be processed

+	 */

+	public void testHandleMessage_oneproto2() {

+		

+		// reset result

+		result = "";

+		

+		// use a local list

+		ArrayList<Handler> local_list = new ArrayList<Handler>();

+		local_list.add(new SOAPHandler1());

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+	

+		HandlerChainProcessor processor = new HandlerChainProcessor(local_list);

+		

+		processor.processChain(new LogicalMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, false);

+

+		assertEquals("", result);

+	}

+	

+	/*

+	 * one logical handler

+	 * processing expected:  Logical and SOAP, reverse order, close

+	 */

+	public void testHandleMessage_onelogical() {

+		

+		// reset result

+		result = "";

+		

+		// use a local list

+		ArrayList<Handler> local_list = new ArrayList<Handler>();

+		local_list.add(new LogicalHandler1());

+		

+		// we want all good responses:

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+	

+		HandlerChainProcessor processor = new HandlerChainProcessor(local_list);

+		

+		processor.processChain(new LogicalMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, false);

+

+		assertEquals("L1m:L1c:", result);

+	}

+

+	/*

+	 * incoming request (we must be on the server), response expected

+	 * processing expected:  Logical and SOAP, reverse order, no closing

+	 */

+	public void testHandleMessage_true1() {

+

+		// reset result

+		result = "";

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+

+		assertEquals("S2m:S1m:L1m:L2m:", result);

+		

+	}

+		

+	/*

+	 * incoming request (we must be on the server), response NOT expected

+	 * processing expected:  Logical and SOAP, reverse order, close

+	 */

+	public void testHandleMessage_true2() {

+		

+		// reset result

+		result = "";

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, false);

+

+		assertEquals("S2m:S1m:L1m:L2m:L2c:L1c:S1c:S2c:", result);

+		

+	}

+	

+	/*

+	 * incoming response (we must be on the client), response expected (ignored)

+	 * processing expected:  Logical and SOAP, reverse order, close

+	 */

+	public void testHandleMessage_true3() {

+		

+		// reset result

+		result = "";

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.RESPONSE, true);

+

+		assertEquals("S2m:S1m:L1m:L2m:L2c:L1c:S1c:S2c:", result);

+

+	}

+	

+	/*

+	 * outgoing request (we must be on the client), response expected

+	 * processing expected:  Logical and SOAP, normal order, no closing

+	 */

+	public void testHandleMessage_true4() {

+		

+		// reset result

+		result = "";

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.OUT, HandlerChainProcessor.MEP.REQUEST, true);

+

+		assertEquals("L2m:L1m:S1m:S2m:", result);

+	}

+	

+	/*

+	 * outgoing request (we must be on the client), response NOT expected

+	 * processing expected:  Logical and SOAP, normal order, close

+	 */

+	public void testHandleMessage_true5() {

+		

+		// reset result

+		result = "";

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.OUT, HandlerChainProcessor.MEP.REQUEST, false);

+

+		assertEquals("L2m:L1m:S1m:S2m:S2c:S1c:L1c:L2c:", result);

+	}

+	

+	/*

+	 * outgoing response (we must be on the server), response expected (ignored)

+	 * processing expected:  Logical and SOAP, normal order, close

+	 */

+	public void testHandleMessage_true6() {

+

+		// reset result

+		result = "";

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processChain(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.OUT, HandlerChainProcessor.MEP.RESPONSE, true);

+

+		assertEquals("L2m:L1m:S1m:S2m:S2c:S1c:L1c:L2c:", result);

+	}

+	

+	/*

+	 * At this point we know the sorting and closing logic is all good,

+	 * all that's left is to make sure the SOAP handlers are excluded when

+	 * we're in a LogicalMessageContext.

+	 * 

+	 * outgoing response (we must be on the server), response expected (ignored)

+	 * processing expected:  Logical only, normal order, close

+	 */

+	public void testHandleMessage_true7() {

+		

+		// reset result

+		result = "";

+		

+		// we want all good responses:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processChain(new LogicalMessageContext(new MessageContext()), HandlerChainProcessor.Direction.OUT, HandlerChainProcessor.MEP.RESPONSE, true);

+		assertEquals("L2m:L1m:L1c:L2c:", result);

+	}

+	

+	/*

+	 * incoming request (we must be on the server), response expected

+	 * a middle Handler.handleMessage returns false

+	 * processing expected:  Logical and SOAP, reverse order, message reversed, close

+	 */

+	public void testHandleMessage_false1() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.FALSE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		processor.processChain(context, HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+

+		assertEquals("S2m:S1m:L1m:S1m:S2m:L1c:S1c:S2c:", result);

+		assertTrue((Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+	

+	/*

+	 * outgoing request (we must be on the client), response expected

+	 * a middle Handler.handleMessage returns false

+	 * processing expected:  Logical and SOAP, normal order, message reversed, close

+	 */

+	public void testHandleMessage_false2() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.FALSE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		processor.processChain(context, HandlerChainProcessor.Direction.OUT, HandlerChainProcessor.MEP.REQUEST, true);

+

+		assertEquals("L2m:L1m:L2m:L1c:L2c:", result);

+		assertTrue(!(Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+	

+	/*

+	 * outgoing request (we must be on the client), response NOT expected

+	 * a middle Handler.handleMessage returns false

+	 * processing expected:  Logical and SOAP, normal order, message NOT reversed, close

+	 */

+	public void testHandleMessage_false3() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.FALSE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		processor.processChain(context, HandlerChainProcessor.Direction.OUT, HandlerChainProcessor.MEP.REQUEST, false);

+

+		assertEquals("L2m:L1m:L1c:L2c:", result);

+		assertTrue((Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+	

+	/*

+	 * incoming request (we must be on the server), response expected

+	 * a middle Handler.handleMessage throws ProtocolException

+	 * processing expected:  Logical and SOAP, reverse order, message reversed, handleFault, close

+	 */

+	public void testHandleMessage_protocolex_true1() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.PROTOCOL_EXCEPTION;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		processor.processChain(context, HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+

+		// handleFault processing

+		assertEquals("S2m:S1m:L1m:S1f:S2f:L1c:S1c:S2c:", result);

+		assertTrue((Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+	

+	/*

+	 * incoming request (we must be on the server), response NOT expected

+	 * a middle Handler.handleMessage throws ProtocolException

+	 * processing expected:  Logical and SOAP, reverse order, message NOT reversed, close

+	 */

+	public void testHandleMessage_protocolex_true2() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.PROTOCOL_EXCEPTION;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		processor.processChain(context, HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, false);

+

+		// no handleFault calls

+		assertEquals("S2m:S1m:L1m:L1c:S1c:S2c:", result);

+		assertTrue(!(Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+	

+	/*

+	 * incoming request (we must be on the server), response expected

+	 * a middle Handler.handleMessage throws RuntimeException

+	 * processing expected:  Logical and SOAP, reverse order, message reversed, (no handleFault), close

+	 */

+	public void testHandleMessage_runtimeex_true() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.OTHER_EXCEPTION;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		Exception e = null;

+		try {

+			processor.processChain(context, HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+		} catch (RuntimeException re) {

+			e = re;

+		}

+

+		assertNotNull(e);

+		// no handleFault calls

+		assertEquals("S2m:S1m:L1m:L1c:S1c:S2c:", result);

+		assertTrue((Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+	

+	/*

+	 * incoming request (we must be on the server), response expected

+	 * a middle Handler.handleMessage throws ProtocolException, later a Handler.handleFault returns false

+	 * processing expected:  Logical and SOAP, reverse order, message reversed, handleFault, close

+	 */

+	public void testHandleMessage_protocolex_false() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.FALSE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.PROTOCOL_EXCEPTION;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		processor.processChain(context, HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+

+		// handleFault processing, but notice S2f does not get called

+		assertEquals("S2m:S1m:L1m:S1f:L1c:S1c:S2c:", result);

+		assertTrue((Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+	

+	/*

+	 * incoming request (we must be on the server), response expected

+	 * a middle Handler.handleMessage throws ProtocolException, later a Handler.handleFault throws ProtocolException

+	 * processing expected:  Logical and SOAP, reverse order, message reversed, handleFault, close

+	 */

+	public void testHandleMessage_protocolex_protocolex() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.PROTOCOL_EXCEPTION;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.PROTOCOL_EXCEPTION;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		Exception e = null;

+		try {

+			// handleFault processing, but notice S2f does not get called, and we get an exception

+			processor.processChain(context, HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+		} catch (ProtocolException pe) {

+			e = pe;

+		}

+

+		assertNotNull(e);

+		assertEquals("S2m:S1m:L1m:S1f:L1c:S1c:S2c:", result);

+		assertTrue((Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+	

+	/*

+	 * incoming request (we must be on the server), response expected

+	 * a middle Handler.handleMessage throws ProtocolException, later a Handler.handleFault throws ProtocolException

+	 * processing expected:  Logical and SOAP, reverse order, handleFault, close

+	 */

+	public void testHandleMessage_protocolex_runtimeex() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.OTHER_EXCEPTION;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.PROTOCOL_EXCEPTION;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		SoapMessageContext context = new SoapMessageContext(new MessageContext());

+		Exception e = null;

+		try {

+			// same results as testHandlers_protocolex_protocolex

+			processor.processChain(context, HandlerChainProcessor.Direction.IN, HandlerChainProcessor.MEP.REQUEST, true);

+		} catch (RuntimeException pe) {

+			e = pe;

+		}

+

+		assertNotNull(e);

+		assertEquals("S2m:S1m:L1m:S1f:L1c:S1c:S2c:", result);

+		assertTrue((Boolean)(context.get(SoapMessageContext.MESSAGE_OUTBOUND_PROPERTY)));

+	}

+

+	

+	/*

+	 * empty list

+	 */

+	public void testHandleFault_empty1() {

+		

+		Exception local_exception = null;

+		

+		HandlerChainProcessor processor1 = new HandlerChainProcessor(null);

+		HandlerChainProcessor processor2 = new HandlerChainProcessor(new ArrayList<Handler>());

+		try {

+			processor1.processFault(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN);

+			processor2.processFault(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN);

+		} catch (Exception e) {

+			local_exception = e;

+		}

+		

+		// no exceptions!

+		assertNull(local_exception);

+	}

+	

+	

+	/*

+	 * outgoing response (we must be on the server), response expected (ignored)

+	 * processing expected:  Logical and SOAP, normal order, handleFault, close

+	 */

+	public void testHandleFault_true1() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processFault(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.OUT);

+

+		assertEquals("L2f:L1f:S1f:S2f:S2c:S1c:L1c:L2c:", result);

+	}

+	

+	/*

+	 * outgoing response (we must be on the server)

+	 * a middle Handler.handleFault returns false

+	 * processing expected:  Logical and SOAP, normal order, handleFault, close (all)

+	 */

+	public void testHandleFault_false1() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.FALSE;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		processor.processFault(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.OUT);

+

+		// notice all handlers are closed in this scenario

+		assertEquals("L2f:L1f:S2c:S1c:L1c:L2c:", result);

+	}

+	

+	/*

+	 * incoming response (we must be on the client)

+	 * a middle Handler.handleFault throws ProtocolException

+	 * processing expected:  Logical and SOAP, reverse order, handleFault, close (all)

+	 */

+	public void testHandleFault_protocolex() {

+		

+		// reset result

+		result = "";

+		

+		// we want one false response:

+		soaphandler1_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler1_FaultResultDesired = ResultDesired.TRUE;

+		soaphandler2_MessageResultDesired = ResultDesired.TRUE;

+		soaphandler2_FaultResultDesired = ResultDesired.TRUE;

+		logicalhandler1_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler1_FaultResultDesired = ResultDesired.PROTOCOL_EXCEPTION;

+		logicalhandler2_MessageResultDesired = ResultDesired.TRUE;

+		logicalhandler2_FaultResultDesired = ResultDesired.TRUE;

+		

+		HandlerChainProcessor processor = new HandlerChainProcessor(handlers);

+		

+		Exception e = null;

+		try {

+			// notice all handlers are closed in this scenario, and we get an exception

+			processor.processFault(new SoapMessageContext(new MessageContext()), HandlerChainProcessor.Direction.IN);

+		} catch (ProtocolException pe) {

+			e = pe;

+		}

+		

+		assertNotNull(e);

+		assertEquals("S2f:S1f:L1f:L2c:L1c:S1c:S2c:", result);

+	}

+	

+	

+	

+	private class SOAPHandler1 implements SOAPHandler {

+		

+		public Set getHeaders() {

+			return null;

+		}

+

+		public void close(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("S1c:");

+		}

+

+		public boolean handleFault(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("S1f:");

+			if (soaphandler1_FaultResultDesired == ResultDesired.TRUE)

+				return true;

+			else if (soaphandler1_FaultResultDesired == ResultDesired.FALSE)

+				return false;

+			else if (soaphandler1_FaultResultDesired == ResultDesired.PROTOCOL_EXCEPTION)

+				throw new ProtocolException();

+			else if (soaphandler1_FaultResultDesired == ResultDesired.OTHER_EXCEPTION)

+				throw new RuntimeException();

+			

+			// default

+			return true;

+		}

+

+		public boolean handleMessage(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("S1m:");

+			if (soaphandler1_MessageResultDesired == ResultDesired.TRUE)

+				return true;

+			else if (soaphandler1_MessageResultDesired == ResultDesired.FALSE)

+				return false;

+			else if (soaphandler1_MessageResultDesired == ResultDesired.PROTOCOL_EXCEPTION)

+				throw new ProtocolException();

+			else if (soaphandler1_MessageResultDesired == ResultDesired.OTHER_EXCEPTION)

+				throw new RuntimeException();

+			

+			// default

+			return true;

+		}

+		

+	}

+	

+

+	private class SOAPHandler2 implements SOAPHandler {

+

+		public Set getHeaders() {

+			return null;

+		}

+

+		public void close(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("S2c:");

+		}

+

+		public boolean handleFault(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("S2f:");

+			if (soaphandler2_FaultResultDesired == ResultDesired.TRUE)

+				return true;

+			else if (soaphandler2_FaultResultDesired == ResultDesired.FALSE)

+				return false;

+			else if (soaphandler2_FaultResultDesired == ResultDesired.PROTOCOL_EXCEPTION)

+				throw new ProtocolException();

+			else if (soaphandler2_FaultResultDesired == ResultDesired.OTHER_EXCEPTION)

+				throw new RuntimeException();

+			

+			// default

+			return true;

+		}

+

+		public boolean handleMessage(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("S2m:");

+			if (soaphandler2_MessageResultDesired == ResultDesired.TRUE)

+				return true;

+			else if (soaphandler2_MessageResultDesired == ResultDesired.FALSE)

+				return false;

+			else if (soaphandler2_MessageResultDesired == ResultDesired.PROTOCOL_EXCEPTION)

+				throw new ProtocolException();

+			else if (soaphandler2_MessageResultDesired == ResultDesired.OTHER_EXCEPTION)

+				throw new RuntimeException();

+			

+			// default

+			return true;

+		}

+		

+	}

+	

+

+	private class LogicalHandler1 implements LogicalHandler {

+

+		public void close(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("L1c:");

+		}

+

+		public boolean handleFault(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("L1f:");

+			if (logicalhandler1_FaultResultDesired == ResultDesired.TRUE)

+				return true;

+			else if (logicalhandler1_FaultResultDesired == ResultDesired.FALSE)

+				return false;

+			else if (logicalhandler1_FaultResultDesired == ResultDesired.PROTOCOL_EXCEPTION)

+				throw new ProtocolException();

+			else if (logicalhandler1_FaultResultDesired == ResultDesired.OTHER_EXCEPTION)

+				throw new RuntimeException();

+			

+			// default

+			return true;

+		}

+

+		public boolean handleMessage(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("L1m:");

+			if (logicalhandler1_MessageResultDesired == ResultDesired.TRUE)

+				return true;

+			else if (logicalhandler1_MessageResultDesired == ResultDesired.FALSE)

+				return false;

+			else if (logicalhandler1_MessageResultDesired == ResultDesired.PROTOCOL_EXCEPTION)

+				throw new ProtocolException();

+			else if (logicalhandler1_MessageResultDesired == ResultDesired.OTHER_EXCEPTION)

+				throw new RuntimeException();

+			

+			// default

+			return true;

+		}

+		

+	}

+	

+

+	private class LogicalHandler2 implements LogicalHandler {

+

+		public void close(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("L2c:");

+		}

+

+		public boolean handleFault(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("L2f:");

+			if (logicalhandler2_FaultResultDesired == ResultDesired.TRUE)

+				return true;

+			else if (logicalhandler2_FaultResultDesired == ResultDesired.FALSE)

+				return false;

+			else if (logicalhandler2_FaultResultDesired == ResultDesired.PROTOCOL_EXCEPTION)

+				throw new ProtocolException();

+			else if (logicalhandler2_FaultResultDesired == ResultDesired.OTHER_EXCEPTION)

+				throw new RuntimeException();

+			

+			// default

+			return true;

+		}

+

+		public boolean handleMessage(javax.xml.ws.handler.MessageContext messagecontext) {

+			result = result.concat("L2m:");

+			if (logicalhandler2_MessageResultDesired == ResultDesired.TRUE)

+				return true;

+			else if (logicalhandler2_MessageResultDesired == ResultDesired.FALSE)

+				return false;

+			else if (logicalhandler2_MessageResultDesired == ResultDesired.PROTOCOL_EXCEPTION)

+				throw new ProtocolException();

+			else if (logicalhandler2_MessageResultDesired == ResultDesired.OTHER_EXCEPTION)

+				throw new RuntimeException();

+			

+			// default

+			return true;

+		}

+		

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/i18n/JaxwsMessageBundleTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/i18n/JaxwsMessageBundleTests.java
new file mode 100644
index 0000000..f8886aa
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/i18n/JaxwsMessageBundleTests.java
@@ -0,0 +1,47 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.i18n;

+

+import org.apache.axis2.jaxws.i18n.Messages;

+import junit.framework.TestCase;

+

+/**

+ * Tests basic function of the Message Bundle

+ *

+ */

+public class JaxwsMessageBundleTests extends TestCase {

+    

+    public JaxwsMessageBundleTests() { 

+        super();

+    }

+   

+    public JaxwsMessageBundleTests(String arg) {

+        super(arg);   

+    }

+    

+    /**

+     * @testStrategy: Test that the resource bundle

+     * is installed by obtaining a message

+     */

+    public void testMessages() throws Exception {

+        final String str = "This is a test string 01";

+        String tempStr = Messages.getMessage("test01");

+        // Check the String for accuracy

+        assertTrue(str.equals(tempStr));

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/mfquote/StockQuote.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/mfquote/StockQuote.java
new file mode 100644
index 0000000..46ca48b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/mfquote/StockQuote.java
@@ -0,0 +1,53 @@
+

+package org.apache.axis2.jaxws.jaxb.mfquote;

+

+import java.net.MalformedURLException;

+import java.net.URL;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebServiceClient(name = "StockQuote", targetNamespace = "http://org/apache/axis2/jaxws/test", wsdlLocation = "StockQuote.wsdl")

+public class StockQuote

+    extends Service

+{

+

+    private final static URL STOCKQUOTE_WSDL_LOCATION;

+

+    static {

+        URL url = null;

+        try {

+            url = new URL("file:/C:/temp/StockQuote.wsdl");

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        STOCKQUOTE_WSDL_LOCATION = url;

+    }

+

+    public StockQuote(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public StockQuote() {

+        super(STOCKQUOTE_WSDL_LOCATION, new QName("http://org/apache/axis2/jaxws/test", "StockQuote"));

+    }

+

+    /**

+     * 

+     * @return

+     *     returns StockQuoteIF

+     */

+    @WebEndpoint(name = "StockQuotePort")

+    public StockQuoteIF getStockQuotePort() {

+        return (StockQuoteIF)super.getPort(new QName("http://org/apache/axis2/jaxws/test", "StockQuotePort"), StockQuoteIF.class);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/mfquote/StockQuoteIF.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/mfquote/StockQuoteIF.java
new file mode 100644
index 0000000..97d95db
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/mfquote/StockQuoteIF.java
@@ -0,0 +1,42 @@
+

+package org.apache.axis2.jaxws.jaxb.mfquote;

+

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "StockQuoteIF", targetNamespace = "http://org/apache/axis2/jaxws/test")

+public interface StockQuoteIF {

+

+

+    /**

+     * 

+     * @param  10Holdings

+     * @param fund

+     * @param nav

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://tempuri.org/StockQuote/getPrice")

+    @WebResult(name = "price", targetNamespace = "")

+    @RequestWrapper(localName = "getPrice", targetNamespace = "urn://stock1.test.org", className = "org.test.stock1.GetPrice")

+    @ResponseWrapper(localName = "getPriceResponse", targetNamespace = "urn://stock1.test.org", className = "org.test.stock1.StockPrice")

+    public String getPrice(

+        @WebParam(name = "fund", targetNamespace = "")

+        String fund,

+        @WebParam(name = "_10holdings", targetNamespace = "")

+        String _10Holdings,

+        @WebParam(name = "nav", targetNamespace = "")

+        String nav);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/stockquote/StockQuote.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/stockquote/StockQuote.java
new file mode 100644
index 0000000..a5c1b47
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/stockquote/StockQuote.java
@@ -0,0 +1,53 @@
+

+package org.apache.axis2.jaxws.jaxb.stockquote;

+

+import java.net.MalformedURLException;

+import java.net.URL;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebServiceClient(name = "StockQuote", targetNamespace = "http://org/apache/axis2/jaxws/test", wsdlLocation = "StockQuote.wsdl")

+public class StockQuote

+    extends Service

+{

+

+    private final static URL STOCKQUOTE_WSDL_LOCATION;

+

+    static {

+        URL url = null;

+        try {

+            url = new URL("http://org/apache/axis2/jaxws/test/StockQuote.wsdl");

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        STOCKQUOTE_WSDL_LOCATION = url;

+    }

+

+    public StockQuote(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public StockQuote() {

+        super(STOCKQUOTE_WSDL_LOCATION, new QName("http://org/apache/axis2/jaxws/test", "StockQuote"));

+    }

+

+    /**

+     * 

+     * @return

+     *     returns StockQuoteIF

+     */

+    @WebEndpoint(name = "StockQuotePort")

+    public StockQuoteIF getStockQuotePort() {

+        return (StockQuoteIF)super.getPort(new QName("http://org/apache/axis2/jaxws/test", "StockQuotePort"), StockQuoteIF.class);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/stockquote/StockQuoteIF.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/stockquote/StockQuoteIF.java
new file mode 100644
index 0000000..db21e9c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/stockquote/StockQuoteIF.java
@@ -0,0 +1,36 @@
+

+package org.apache.axis2.jaxws.jaxb.stockquote;

+

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "StockQuoteIF", targetNamespace = "http://org/apache/axis2/jaxws/test")

+public interface StockQuoteIF {

+

+

+    /**

+     * 

+     * @param symbol

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://tempuri.org/StockQuote/getPrice")

+    @WebResult(name = "price", targetNamespace = "")

+    @RequestWrapper(localName = "getPrice", targetNamespace = "urn://stock2.test.org", className = "org.test.stock2.GetPrice")

+    @ResponseWrapper(localName = "getPriceResponse", targetNamespace = "urn://stock2.test.org", className = "org.test.stock2.StockPrice")

+    public String getPrice(

+        @WebParam(name = "symbol", targetNamespace = "")

+        String symbol);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/wrapper/WrapperToolTest.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/wrapper/WrapperToolTest.java
new file mode 100644
index 0000000..6892030
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/jaxb/wrapper/WrapperToolTest.java
@@ -0,0 +1,127 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.jaxb.wrapper;

+

+import java.util.ArrayList;

+import java.util.Map;

+import java.util.WeakHashMap;

+

+import org.apache.axis2.jaxws.wrapper.JAXBWrapperTool;

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperException;

+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperToolImpl;

+

+import junit.framework.TestCase;

+

+

+public class WrapperToolTest extends TestCase {

+	public void testWrapStockQuote(){

+		try{

+			JAXBWrapperTool wrapper = new JAXBWrapperToolImpl();

+			

+			String jaxbClassName = "org.test.stock2.GetPrice";

+			Class jaxbClass = Class.forName(jaxbClassName, false, ClassLoader.getSystemClassLoader());

+			ArrayList<String> childNames = new ArrayList<String>();

+			String childName = "symbol";

+			childNames.add(childName);

+			String symbolObj = new String("IBM");

+			Map<String, Object> childObjects= new WeakHashMap<String, Object>();

+			childObjects.put(childName, symbolObj);

+			Object jaxbObject = wrapper.wrap(jaxbClass, jaxbClassName,childNames, childObjects);

+			org.test.stock2.GetPrice getPrice = (org.test.stock2.GetPrice)jaxbObject;

+			

+		}catch(JAXBWrapperException e){

+			e.printStackTrace();

+		}catch(ClassNotFoundException e){

+			e.printStackTrace();

+		}

+	}

+	

+	public void testUnwrapStockQuote(){

+		try{

+			JAXBWrapperTool wrapper = new JAXBWrapperToolImpl();

+			org.test.stock2.GetPrice price = new org.test.stock2.GetPrice();

+			price.setSymbol("IBM");

+			

+			ArrayList<String> childNames = new ArrayList<String>();

+			String childName = "symbol";

+			childNames.add(childName);

+			

+			Object[] jaxbObjects = wrapper.unWrap(price, childNames);

+		

+		}catch(JAXBWrapperException e){

+			e.printStackTrace();

+		}

+	}

+	

+	public void testWrapMFQuote(){

+		try{

+			JAXBWrapperTool wrapper = new JAXBWrapperToolImpl();

+			

+			String jaxbClassName = "org.test.stock1.GetPrice";

+			Class jaxbClass = Class.forName(jaxbClassName, false, ClassLoader.getSystemClassLoader());

+			ArrayList<String> childNames = new ArrayList<String>();

+			String fund ="fund";

+			String fundName = new String("PRGFX");

+			String holding = "holdings.";

+			String topHolding = new String("GE");

+			String nav ="nav";

+			String navInMillion = new String("700");

+			

+			childNames.add(fund);

+			childNames.add(holding);

+			childNames.add(nav);

+			

+			Map<String, Object> childObjects= new WeakHashMap<String, Object>();

+			

+			childObjects.put(fund, fundName);

+			childObjects.put(holding, topHolding);

+			childObjects.put(nav, navInMillion);

+			

+			Object jaxbObject = wrapper.wrap(jaxbClass, jaxbClassName,childNames, childObjects);

+			org.test.stock1.GetPrice getPrice = (org.test.stock1.GetPrice)jaxbObject;

+			

+		}catch(JAXBWrapperException e){

+			e.printStackTrace();

+		}catch(ClassNotFoundException e){

+			e.printStackTrace();

+		}

+	}

+	

+	public void testUnwrapMFQuote(){

+		try{

+			JAXBWrapperTool wrapper = new JAXBWrapperToolImpl();

+			org.test.stock1.GetPrice price = new org.test.stock1.GetPrice();

+			price.setFund("PRGFX");

+			price.setHoldings("GE");

+			price.setNav("700");

+			

+			ArrayList<String> childNames = new ArrayList<String>();

+			String fund ="fund";

+			childNames.add(fund);

+			String holding = "holdings.";

+			childNames.add(holding);

+			String nav ="nav";

+			childNames.add(nav);

+			

+			Object[] jaxbObjects = wrapper.unWrap(price, childNames);

+			System.out.println();

+		}catch(JAXBWrapperException e){

+			e.printStackTrace();

+		}

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/BlockTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/BlockTests.java
new file mode 100644
index 0000000..dc5bce0
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/BlockTests.java
@@ -0,0 +1,1067 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.io.StringReader;

+import java.io.StringWriter;

+import java.util.Map;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.JAXBIntrospector;

+import javax.xml.bind.Unmarshaller;

+import javax.xml.bind.util.JAXBSource;

+import javax.xml.namespace.QName;

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+import javax.xml.transform.Result;

+import javax.xml.transform.Source;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.sax.SAXSource;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.transform.stream.StreamSource;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axis2.jaxws.message.factory.BlockFactory;

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.message.factory.OMBlockFactory;

+import org.apache.axis2.jaxws.message.factory.SourceBlockFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+import org.w3c.dom.Document;

+import org.w3c.dom.Node;

+import org.xml.sax.InputSource;

+

+import test.EchoString;

+import test.ObjectFactory;

+

+import junit.framework.TestCase;

+

+/**

+ * BlockTests

+ * Tests to create and validate blocks.

+ * These are not client/server tests.

+ */

+public class BlockTests extends TestCase {

+

+	// String test variables

+	private static final String sampleText =

+		"<pre:a xmlns:pre=\"urn://sample\">" +

+		"<b>Hello</b>" +

+		"<c>World</c>" +

+		"</pre:a>";

+	private static final QName sampleQName = new QName("urn://sample", "a");

+	

+	

+	private static XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+	private static XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();

+	

+	

+	

+	public BlockTests() {

+		super();

+	}

+

+	public BlockTests(String arg0) {

+		super(arg0);

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * normal Dispatch<String> flow

+	 * @throws Exception

+	 */

+	public void testStringOutflow() throws Exception {

+		// Get the BlockFactory

+		XMLStringBlockFactory f = (XMLStringBlockFactory)

+			FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<String> client

+		Block block = f.createFrom(sampleText, null, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+

+	/**

+	 * Create a Block representing an XMLString and

+	 * simulate a different Dispatch<String> flow

+	 * @throws Exception

+	 */

+	public void testStringOutflow2() throws Exception {

+		// Get the BlockFactory

+		XMLStringBlockFactory f = (XMLStringBlockFactory)

+			FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<String> client

+		Block block = f.createFrom(sampleText, null, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Assume that we need to find the QName (perhaps to identify the operation and 

+		// determine if handlers are installed).   This is not very perfomant since 

+		// it causes an underlying parse of the String...but we need to support this.

+		QName qName = block.getQName();

+		assertTrue("Expected: " + sampleQName + " but found: " + qName, sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and

+	 * simulate a different String parameter flow

+	 * @throws Exception

+	 */

+	public void testStringOutflow3() throws Exception {

+		// Get the BlockFactory

+		XMLStringBlockFactory f = (XMLStringBlockFactory)

+			FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS String parameter on the client.

+		// In this case, we know the QName prior to creating the Block...so let's pass it in.

+		Block block = f.createFrom(sampleText, null, sampleQName);

+		

+		// We passed in a qname, so it should be immediately available

+		assertTrue(block.isQNameAvailable());

+		

+		// Make sure the QName is correct.

+		QName qName = block.getQName();

+		assertTrue(sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * normal Dispatch<String> input flow

+	 * @throws Exception

+	 */

+	public void testStringInflow() throws Exception {

+		// Get the BlockFactory

+		XMLStringBlockFactory f = (XMLStringBlockFactory)

+			FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  

+		Block block = f.createFrom(inflow, null, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof String);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check the String for accuracy

+		assertTrue(sampleText.equals(bo.toString()));

+		

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * slightly more complicated Dispatch<String> inflow

+	 * @throws Exception

+	 */

+	public void testStringInflow2() throws Exception {

+		// Get the BlockFactory

+		XMLStringBlockFactory f = (XMLStringBlockFactory)

+			FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  

+		Block block = f.createFrom(inflow, null, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Let's assume we need to get the QName to find the operation name.

+		// This will cause an underlying parse

+		QName qName = block.getQName();

+		assertTrue(sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof String);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check the String for accuracy

+		assertTrue(sampleText.equals(bo.toString()));

+		

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * slightly more complicated String  inflow

+	 * @throws Exception

+	 */

+	public void testStringInflow3() throws Exception {

+		// Get the BlockFactory

+		XMLStringBlockFactory f = (XMLStringBlockFactory)

+			FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  Assume that we know the QName already

+		Block block = f.createFrom(inflow, null, sampleQName);

+		

+		// We passed in a qname, so the following should return false

+		assertTrue(block.isQNameAvailable());

+		

+		// Let's assume we need to get the QName to find the operation name.

+		QName qName = block.getQName();

+		assertTrue(sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof String);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check the String for accuracy

+		assertTrue(sampleText.equals(bo.toString()));

+		

+	}

+	

+	/**

+	 * Create a Block representing an JAXB and simulate a 

+	 * normal Dispatch<JAXB> flow

+	 * @throws Exception

+	 */

+	public void testJAXBOutflow() throws Exception {

+		// Get the BlockFactory

+		JAXBBlockFactory f = (JAXBBlockFactory)

+			FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		

+        // Create a jaxb object

+        ObjectFactory factory = new ObjectFactory();

+        EchoString jaxb = factory.createEchoString(); 

+        jaxb.setInput("Hello World");

+        JAXBContext jbc = JAXBContext.newInstance("test");

+        JAXBIntrospector jbi = jbc.createJAXBIntrospector();

+        QName expectedQName = jbi.getElementName(jaxb);

+        

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<JAXB> client

+		Block block = f.createFrom(jaxb, jbc, null);

+		

+		// JAXB objects set the qname from their internal data

+		assertTrue(block.isQNameAvailable());

+		

+		// Assume that we need to find the QName (perhaps to identify the operation and 

+		// determine if handlers are installed).   This is not very perfomant since 

+		// it causes an underlying parse of the String...but we need to support this.

+		QName qName = block.getQName();

+		assertTrue("Expected: " + expectedQName + " but found: " + qName, expectedQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(newText.contains("Hello World"));

+		assertTrue(newText.contains("echoString"));

+		

+	}

+	

+	/**

+	 * Create a Block representing an JAXB and simulate a 

+	 * slightly more complicated Dispatch<JAXB> flow

+	 * @throws Exception

+	 */

+	public void testJAXBOutflow2() throws Exception {

+		// Get the BlockFactory

+		JAXBBlockFactory f = (JAXBBlockFactory)

+			FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		

+        // Create a jaxb object

+        ObjectFactory factory = new ObjectFactory();

+        EchoString jaxb = factory.createEchoString(); 

+        jaxb.setInput("Hello World");

+        JAXBContext jbc = JAXBContext.newInstance("test");

+        JAXBIntrospector jbi = jbc.createJAXBIntrospector();

+        QName expectedQName = jbi.getElementName(jaxb);

+        

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs with an outbound JAX-WS JAXB parameter

+		Block block = f.createFrom(jaxb, jbc, expectedQName);

+		

+		// We did pass in a qname, so the following should return false

+		assertTrue(block.isQNameAvailable());

+		

+		// Assume that we need to find the QName (perhaps to identify the operation and 

+		// determine if handlers are installed).   This is not very perfomant since 

+		// it causes an underlying parse of the String...but we need to support this.

+		QName qName = block.getQName();

+		assertTrue("Expected: " + expectedQName + " but found: " + qName, expectedQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(newText.contains("Hello World"));

+		assertTrue(newText.contains("echoString"));

+		

+	}

+	

+	/**

+	 * Create a Block representing an JAXB and simulate a 

+	 * normal Dispatch<JAXB> input flow

+	 * @throws Exception

+	 */

+	public void testJAXBInflow() throws Exception {

+		// Get the BlockFactory

+		JAXBBlockFactory f = (JAXBBlockFactory)

+			FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		

+        // Create a jaxb object

+        ObjectFactory factory = new ObjectFactory();

+        EchoString jaxb = factory.createEchoString(); 

+        jaxb.setInput("Hello World");

+        JAXBContext jbc = JAXBContext.newInstance("test");

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+        StringWriter sw = new StringWriter();

+        XMLStreamWriter writer = outputFactory.createXMLStreamWriter(sw);

+        jbc.createMarshaller().marshal(jaxb, writer);

+        writer.flush();

+        sw.flush();

+		StringReader sr = new StringReader(sw.toString());

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  

+		Block block = f.createFrom(inflow, jbc, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object.

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof EchoString);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check for accuracy

+		assertTrue("Unexpected:" + ((EchoString)bo).getInput(), ((EchoString)bo).getInput().equals(jaxb.getInput()));

+		

+	}

+	

+	/**

+	 * Create a Block representing an JAXB and simulate a 

+	 * normal Dispatch<JAXB> input flow

+	 * @throws Exception

+	 */

+	public void testJAXBInflow2() throws Exception {

+		// Get the BlockFactory

+		JAXBBlockFactory f = (JAXBBlockFactory)

+			FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		

+        // Create a jaxb object

+        ObjectFactory factory = new ObjectFactory();

+        EchoString jaxb = factory.createEchoString(); 

+        jaxb.setInput("Hello World");

+        JAXBContext jbc = JAXBContext.newInstance("test");

+        JAXBIntrospector jbi = jbc.createJAXBIntrospector();

+        QName expectedQName = jbi.getElementName(jaxb);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+        StringWriter sw = new StringWriter();

+        XMLStreamWriter writer = outputFactory.createXMLStreamWriter(sw);

+        jbc.createMarshaller().marshal(jaxb, writer);

+        writer.flush();

+        sw.flush();

+		StringReader sr = new StringReader(sw.toString());

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  

+		Block block = f.createFrom(inflow, jbc, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Assume that we need to find the QName (perhaps to identify the operation and 

+		// determine if handlers are installed).   This is not very perfomant since 

+		// it causes an underlying parse of the String...but we need to support this.

+		QName qName = block.getQName();

+		assertTrue("Expected: " + expectedQName + " but found: " + qName, expectedQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object.

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof EchoString);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check for accuracy

+		assertTrue("Unexpected:" + ((EchoString)bo).getInput(), ((EchoString)bo).getInput().equals(jaxb.getInput()));

+		

+	}

+	

+	/**

+	 * Create a Block representing an JAXB and simulate a 

+	 * normal Dispatch<JAXB> input flow

+	 * @throws Exception

+	 */

+	public void testJAXBInflow3() throws Exception {

+		// Get the BlockFactory

+		JAXBBlockFactory f = (JAXBBlockFactory)

+			FactoryRegistry.getFactory(JAXBBlockFactory.class);

+		

+        // Create a jaxb object

+        ObjectFactory factory = new ObjectFactory();

+        EchoString jaxb = factory.createEchoString(); 

+        jaxb.setInput("Hello World");

+        JAXBContext jbc = JAXBContext.newInstance("test");

+        JAXBIntrospector jbi = jbc.createJAXBIntrospector();

+        QName expectedQName = jbi.getElementName(jaxb);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+        StringWriter sw = new StringWriter();

+        XMLStreamWriter writer = outputFactory.createXMLStreamWriter(sw);

+        jbc.createMarshaller().marshal(jaxb, writer);

+        writer.flush();

+        sw.flush();

+		StringReader sr = new StringReader(sw.toString());

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  

+		Block block = f.createFrom(inflow, jbc, expectedQName);

+		

+		// We passed in a qname, so the following should return false

+		assertTrue(block.isQNameAvailable());

+		

+		// Assume that we need to find the QName (perhaps to identify the operation and 

+		// determine if handlers are installed).   This is not very perfomant since 

+		// it causes an underlying parse of the String...but we need to support this.

+		QName qName = block.getQName();

+		assertTrue("Expected: " + expectedQName + " but found: " + qName, expectedQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object.

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof EchoString);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check for accuracy

+		assertTrue("Unexpected:" + ((EchoString)bo).getInput(), ((EchoString)bo).getInput().equals(jaxb.getInput()));

+		

+	}

+	

+	/**

+	 * Create a Block representing an OM and simulate a 

+	 * normal Dispatch<OMElement> flow

+	 * @throws Exception

+	 */

+	public void testOMOutflow() throws Exception {

+		// Get the BlockFactory

+		OMBlockFactory f = (OMBlockFactory)

+			FactoryRegistry.getFactory(OMBlockFactory.class);

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<OMElement> client

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inputReader = inputFactory.createXMLStreamReader(sr);

+		StAXOMBuilder builder = new StAXOMBuilder(inputReader);  

+		OMElement om = builder.getDocumentElement();

+		Block block = f.createFrom(om, null, null);

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+	

+

+	/**

+	 * Create a Block representing an OM and simulate a 

+	 * different Dispatch<OMElement> flow

+	 * @throws Exception

+	 */

+	public void testOMOutflow2() throws Exception {

+		// Get the BlockFactory

+		OMBlockFactory f = (OMBlockFactory)

+			FactoryRegistry.getFactory(OMBlockFactory.class);

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<OMElement> client

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inputReader = inputFactory.createXMLStreamReader(sr);

+		StAXOMBuilder builder = new StAXOMBuilder(inputReader);  

+		OMElement om = builder.getDocumentElement();

+		Block block = f.createFrom(om, null, null);

+		

+		// Assume that we need to find the QName (perhaps to identify the operation and 

+		// determine if handlers are installed).   This is not very perfomant since 

+		// it causes an underlying parse of the String...but we need to support this.

+		QName qName = block.getQName();

+		assertTrue("Expected: " + sampleQName + " but found: " + qName, sampleQName.equals(qName));

+		

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 *  Dispatch<OMElement> inflow

+	 * @throws Exception

+	 */

+	public void testOMInflow() throws Exception {

+		// Get the BlockFactory

+		OMBlockFactory f = (OMBlockFactory)

+			FactoryRegistry.getFactory(OMBlockFactory.class);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  

+		Block block = f.createFrom(inflow, null, null);

+		

+		// Let's assume we need to get the QName to find the operation name.

+		// This will cause an underlying parse

+		QName qName = block.getQName();

+		assertTrue(sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof OMElement);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check the String for accuracy

+		assertTrue(sampleText.equals(bo.toString()));

+		

+	}

+	

+	/**

+	 * Create a Block representing a Source and simulate a 

+	 * normal Dispatch<Source> flow

+	 * @throws Exception

+	 */

+	public void testStreamSourceOutflow() throws Exception {

+		// Get the BlockFactory

+		SourceBlockFactory f = (SourceBlockFactory)

+			FactoryRegistry.getFactory(SourceBlockFactory.class);

+		

+		StreamSource ss = new StreamSource(new StringReader(sampleText));

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<Source> client

+		Block block = f.createFrom(ss, null, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+

+	/**

+	 * Create a Block representing a Source and

+	 * simulate a different Dispatch<Source> flow

+	 * @throws Exception

+	 */

+	public void testStreamSourceOutflow2() throws Exception {

+		// Get the BlockFactory

+		SourceBlockFactory f = (SourceBlockFactory)

+			FactoryRegistry.getFactory(SourceBlockFactory.class);

+		

+		StreamSource ss = new StreamSource(new StringReader(sampleText));

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<Source> client

+		Block block = f.createFrom(ss, null, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Assume that we need to find the QName (perhaps to identify the operation and 

+		// determine if handlers are installed).   This is not very perfomant since 

+		// it causes an underlying parse of the String...but we need to support this.

+		QName qName = block.getQName();

+		assertTrue("Expected: " + sampleQName + " but found: " + qName, sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+	

+	/**

+	 * Create a Block representing a Source and

+	 * simulate a different Source parameter flow

+	 * @throws Exception

+	 */

+	public void testStreamSourceOutflow3() throws Exception {

+		// Get the BlockFactory

+		SourceBlockFactory f = (SourceBlockFactory)

+			FactoryRegistry.getFactory(SourceBlockFactory.class);

+		

+		StreamSource ss = new StreamSource(new StringReader(sampleText));

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS String parameter on the client.

+		// In this case, we know the QName prior to creating the Block...so let's pass it in.

+		Block block = f.createFrom(ss, null, sampleQName);

+		

+		// We passed in a qname, so it should be immediately available

+		assertTrue(block.isQNameAvailable());

+		

+		// Make sure the QName is correct.

+		QName qName = block.getQName();

+		assertTrue(sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		XMLStreamReader reader = block.getXMLStreamReader(true);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * normal Dispatch<Source> input flow

+	 * @throws Exception

+	 */

+	public void testStreamSourceInflow() throws Exception {

+		// Get the BlockFactory

+		SourceBlockFactory f = (SourceBlockFactory)

+			FactoryRegistry.getFactory(SourceBlockFactory.class);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  

+		Block block = f.createFrom(inflow, null, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof Source);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check the String for accuracy

+		XMLStreamReader reader = inputFactory.createXMLStreamReader((Source) bo);

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * slightly more complicated Dispatch<Source> inflow

+	 * @throws Exception

+	 */

+	public void testStreamSourceInflow2() throws Exception {

+

+		// Get the BlockFactory

+		SourceBlockFactory f = (SourceBlockFactory)

+			FactoryRegistry.getFactory(SourceBlockFactory.class);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  

+		Block block = f.createFrom(inflow, null, null);

+		

+		// We didn't pass in a qname, so the following should return false

+		assertTrue(!block.isQNameAvailable());

+		

+		// Let's assume we need to get the QName to find the operation name.

+		// This will cause an underlying parse

+		QName qName = block.getQName();

+		assertTrue(sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof Source);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+

+		// Check the String for accuracy

+		XMLStreamReader reader = inputFactory.createXMLStreamReader((Source) bo);

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+	

+	/**

+	 * Create a Block representing an Source and simulate a 

+	 * slightly more complicated Source inflow

+	 * @throws Exception

+	 */

+	public void testStreamSourceInflow3() throws Exception {

+

+		// Get the BlockFactory

+		SourceBlockFactory f = (SourceBlockFactory)

+			FactoryRegistry.getFactory(SourceBlockFactory.class);

+		

+		// On inbound, there will already be a XMLStreamReader (probably from OM)

+		// which represents the message.  We will simulate this with inflow.

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		

+		// Create a Block from the inflow.  Assume that we know the QName already

+		Block block = f.createFrom(inflow, null, sampleQName);

+		

+		// We passed in a qname, so the following should return false

+		assertTrue(block.isQNameAvailable());

+		

+		// Let's assume we need to get the QName to find the operation name.

+		QName qName = block.getQName();

+		assertTrue(sampleQName.equals(qName));

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof Source);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+

+		// Check the String for accuracy

+		XMLStreamReader reader = inputFactory.createXMLStreamReader((Source) bo);

+		Reader2Writer r2w = new Reader2Writer(reader);

+		String newText = r2w.getAsString();

+		assertTrue(sampleText.equals(newText));

+		

+	}

+    /*

+     * Testing JAXBSource, Creating Source Block using JAXBSource and then

+     * Serializing it.

+     */

+	public void testJAXBSourceInFlow1()throws Exception{

+		//  Create a jaxb object

+		try{

+	        ObjectFactory factory = new ObjectFactory();

+	        EchoString jaxb = factory.createEchoString(); 

+	        jaxb.setInput("Hello World");

+	        JAXBContext jbc = JAXBContext.newInstance("test");

+	        JAXBSource src = new JAXBSource(jbc.createMarshaller(), jaxb);

+	        BlockFactory f = (SourceBlockFactory)

+				FactoryRegistry.getFactory(SourceBlockFactory.class);

+	        

+	        Block block =f.createFrom(src, null, null);

+	        

+	        MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);

+	        Message msg = mf.create(Protocol.soap11);

+	        msg.setBodyBlock(0,block);

+	        org.apache.axiom.soap.SOAPEnvelope env = (org.apache.axiom.soap.SOAPEnvelope)msg.getAsOMElement();

+	        // Serialize the Envelope using the same mechanism as the 

+	        // HTTP client.

+	        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+	        env.serializeAndConsume(baos, new OMOutputFormat());

+	        

+	        // To check that the output is correct, get the String contents of the 

+	        // reader

+	        String newText = baos.toString();

+	        System.out.println(newText);

+	        assertTrue(block.isConsumed());

+		}catch(Exception e){

+			e.printStackTrace();

+		}     

+	}

+	

+	public void testJAXBSourceOutflow() throws Exception {

+		

+		//Sample text for JAXBSource

+		String echoSample = "<echoString xmlns=\"http://test\"><input>Hello World</input></echoString>";

+		

+        // Get the BlockFactory

+        SourceBlockFactory f = (SourceBlockFactory)

+            FactoryRegistry.getFactory(SourceBlockFactory.class);

+        //Create a JAXBSource

+        

+        JAXBContext jbc = JAXBContext.newInstance("test");

+        Unmarshaller u = jbc.createUnmarshaller();

+        ByteArrayInputStream inputStream = new ByteArrayInputStream(echoSample.getBytes());

+        EchoString jaxb = (EchoString)u.unmarshal(inputStream);

+        JAXBSource src = new JAXBSource(jbc.createMarshaller(), jaxb);

+        

+        // Create a Block using the sample string as the content.  This simulates

+        // what occurs on the outbound JAX-WS dispatch<Source> client

+        Block block = f.createFrom(src, null, null);

+        

+        // We didn't pass in a qname, so the following should return false

+        assertTrue(!block.isQNameAvailable());

+        

+        // Assuming no handlers are installed, the next thing that will happen

+        // is a XMLStreamReader will be requested...to go to OM.   At this point the

+        // block should be consumed.

+        XMLStreamReader reader = block.getXMLStreamReader(true);

+        

+        // The block should be consumed

+        assertTrue(block.isConsumed());

+        

+        // To check that the output is correct, get the String contents of the 

+        // reader

+        Reader2Writer r2w = new Reader2Writer(reader);

+        String newText = r2w.getAsString();

+        assertTrue(echoSample.equals(newText));

+    }

+    /**

+     * Create a Block representing a DOMSource instance and simulate an 

+     * outbound flow

+     * @throws Exception

+     */

+    public void testDOMSourceOutflow() throws Exception {

+        // Get the BlockFactory

+        SourceBlockFactory f = (SourceBlockFactory)

+            FactoryRegistry.getFactory(SourceBlockFactory.class);

+        

+        // Turn the content into a stream

+        ByteArrayInputStream bais = new ByteArrayInputStream(sampleText.getBytes());

+        

+        // Create a DOM tree from the sample text

+        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();

+        domFactory.setNamespaceAware(true);

+        DocumentBuilder domBuilder = domFactory.newDocumentBuilder();

+        Document domTree = domBuilder.parse(bais);

+        Node node = domTree.getDocumentElement();

+        System.out.println(node.toString());

+        

+        // Create a DOMSource object from the DOM tree

+        DOMSource ds = new DOMSource(node);

+        node = ds.getNode();

+        

+        // Create a Block using the sample string as the content.  This simulates

+        // what occurs on the outbound JAX-WS dispatch<Source> client

+        Block block = f.createFrom(ds, null, null);

+        

+        // We didn't pass in a qname, so the following should return false

+        assertTrue(!block.isQNameAvailable());

+        

+        // Assuming no handlers are installed, the next thing that will happen

+        // is a XMLStreamReader will be requested...to go to OM.   At this point the

+        // block should be consumed.

+        XMLStreamReader reader = block.getXMLStreamReader(true);

+        

+        // The block should be consumed

+        assertTrue(block.isConsumed());

+        

+        // To check that the output is correct, get the String contents of the 

+        // reader

+        Reader2Writer r2w = new Reader2Writer(reader);

+        String newText = r2w.getAsString();

+        assertTrue(sampleText.equals(newText));

+    }

+    

+    /**

+     * Create a Block representing a SAXSource instance and simulate an 

+     * outbound flow

+     * @throws Exception

+     */

+    public void testSAXSourceOutflow() throws Exception {

+        // Get the BlockFactory

+        SourceBlockFactory f = (SourceBlockFactory)

+            FactoryRegistry.getFactory(SourceBlockFactory.class);

+        

+        // Create a SAXSource from the sample text

+        byte[] bytes = sampleText.getBytes();

+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);

+        InputSource input = new InputSource(stream);

+        SAXSource ss = new SAXSource(input);

+        

+        // Create a Block using the sample string as the content.  This simulates

+        // what occurs on the outbound JAX-WS dispatch<Source> client

+        Block block = f.createFrom(ss, null, null);

+        

+        // We didn't pass in a qname, so the following should return false

+        assertTrue(!block.isQNameAvailable());

+        

+        // Assuming no handlers are installed, the next thing that will happen

+        // is a XMLStreamReader will be requested...to go to OM.   At this point the

+        // block should be consumed.

+        XMLStreamReader reader = block.getXMLStreamReader(true);

+        

+        // The block should be consumed

+        assertTrue(block.isConsumed());

+        

+        // To check that the output is correct, get the String contents of the 

+        // reader

+        Reader2Writer r2w = new Reader2Writer(reader);

+        String newText = r2w.getAsString();

+        assertTrue(sampleText.equals(newText));

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/MessageTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/MessageTests.java
new file mode 100644
index 0000000..21356cd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/MessageTests.java
@@ -0,0 +1,517 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import java.io.ByteArrayOutputStream;

+import java.io.StringReader;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+

+import junit.framework.TestCase;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.message.factory.SAAJConverterFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+import org.apache.axis2.jaxws.message.util.SAAJConverter;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+import test.EchoStringResponse;

+import test.ObjectFactory;

+

+/**

+ * MessageTests

+ * Tests to create and validate Message processing

+ * These are not client/server tests.

+ */

+public class MessageTests extends TestCase {

+

+	// String test variables

+	private static final String soap11env = "http://schemas.xmlsoap.org/soap/envelope/";

+	private static final String soap12env = "http://www.w3.org/2003/05/soap-envelope";

+    private static final String sampleEnvelopeHead11 =

+        "<soapenv:Envelope xmlns:soapenv=\"" + soap11env + "\">" +

+        "<soapenv:Header /><soapenv:Body>";

+    

+    private static final String sampleEnvelopeHead12 =

+        "<soapenv:Envelope xmlns:soapenv=\"" + soap12env + "\">" +

+        "<soapenv:Header /><soapenv:Body>";

+    

+    private static final String sampleEnvelopeTail = 

+        "</soapenv:Body></soapenv:Envelope>";

+    

+    private static final String sampleText =

+		"<pre:a xmlns:pre=\"urn://sample\">" +

+		"<b>Hello</b>" +

+		"<c>World</c>" +

+		"</pre:a>";

+	

+    private static final String sampleEnvelope11 = 

+        sampleEnvelopeHead11 +

+        sampleText +

+        sampleEnvelopeTail;

+    

+    private static final String sampleEnvelope12 = 

+        sampleEnvelopeHead12 +

+        sampleText +

+        sampleEnvelopeTail;

+        

+    private static final String sampleJAXBText = 

+        "<echoStringResponse xmlns=\"http://test\">" +

+        "<echoStringReturn>sample return value</echoStringReturn>" + 

+        "</echoStringResponse>";

+    

+    private static final String sampleJAXBEnvelope11 = 

+        sampleEnvelopeHead11 + 

+        sampleJAXBText + 

+        sampleEnvelopeTail;

+    

+    private static final String sampleJAXBEnvelope12 = 

+        sampleEnvelopeHead12 + 

+        sampleJAXBText + 

+        sampleEnvelopeTail;

+

+    private static final String sampleEnvelopeNoHeader11 =

+        "<soapenv:Envelope xmlns:soapenv=\""+ soap11env +"\">" +

+        "<soapenv:Body>" + 

+        sampleText + 

+        "</soapenv:Body></soapenv:Envelope>";

+    

+    private static final String sampleEnvelopeNoHeader12 =

+        "<soapenv:Envelope xmlns:soapenv=\""+ soap12env +"\">" +

+        "<soapenv:Body>" + 

+        sampleText + 

+        "</soapenv:Body></soapenv:Envelope>";

+    

+    

+    

+	private static final QName sampleQName = new QName("urn://sample", "a");

+	

+	private static XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+	

+	public MessageTests() {

+		super();

+	}

+

+	public MessageTests(String arg0) {

+		super(arg0);

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * normal Dispatch<String> flow

+	 * @throws Exception

+	 */

+	public void testStringOutflow() throws Exception {

+		

+		// Create a SOAP 1.1 Message

+		MessageFactory mf = (MessageFactory)

+			FactoryRegistry.getFactory(MessageFactory.class);

+		Message m = mf.create(Protocol.soap11);

+		

+		// Get the BlockFactory

+		XMLStringBlockFactory f = (XMLStringBlockFactory)

+			FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<String> client

+		Block block = f.createFrom(sampleText, null, null);

+		

+		// Add the block to the message as normal body content.

+		m.setBodyBlock(0, block);

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is a XMLStreamReader will be requested...to go to OM.   At this point the

+		// block should be consumed.

+		OMElement om = m.getAsOMElement();

+		

+		// The block should not be consumed yet...because the message has not been read

+		assertTrue(!block.isConsumed());

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(om.getXMLStreamReaderWithoutCaching());

+		String newText = r2w.getAsString();

+		System.out.println(newText);

+		assertTrue(newText.contains(sampleText));

+		assertTrue(newText.contains("soap"));

+		assertTrue(newText.contains("Envelope"));

+		assertTrue(newText.contains("Body"));

+		

+		// The block should be consumed at this point

+		assertTrue(block.isConsumed());

+	}

+

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * normal Dispatch<String> flow with an application handler

+	 * @throws Exception

+	 */

+	public void testStringOutflow2() throws Exception {

+		

+		// Create a SOAP 1.1 Message

+		MessageFactory mf = (MessageFactory)

+			FactoryRegistry.getFactory(MessageFactory.class);

+		Message m = mf.create(Protocol.soap11);

+		

+		// Get the BlockFactory

+		XMLStringBlockFactory f = (XMLStringBlockFactory)

+			FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		

+		// Create a Block using the sample string as the content.  This simulates

+		// what occurs on the outbound JAX-WS dispatch<String> client

+		Block block = f.createFrom(sampleText, null, null);

+		

+		// Add the block to the message as normal body content.

+		m.setBodyBlock(0, block);

+		

+		// If there is a JAX-WS handler, the Message is converted into a SOAPEnvelope

+		SOAPEnvelope soapEnvelope = m.getAsSOAPEnvelope();

+		

+		// Normally the handler would not touch the body...but for our scenario, assume that it does.

+		String name = soapEnvelope.getBody().getFirstChild().getLocalName();

+		assertTrue("a".equals(name));

+		

+		// The block should be consumed at this point

+		assertTrue(block.isConsumed());

+		

+		// After the handler processing the message is obtained as an OM

+		OMElement om = m.getAsOMElement();

+		

+		// To check that the output is correct, get the String contents of the 

+		// reader

+		Reader2Writer r2w = new Reader2Writer(om.getXMLStreamReaderWithoutCaching());

+		String newText = r2w.getAsString();

+		System.out.println(newText);

+		assertTrue(newText.contains(sampleText));

+		assertTrue(newText.contains("soap"));

+		assertTrue(newText.contains("Envelope"));

+		assertTrue(newText.contains("Body"));

+		

+		

+	}

+	

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * normal Dispatch<String> input flow

+	 * @throws Exception

+	 */

+	public void testStringInflow_soap11() throws Exception {

+		_testStringInflow(sampleEnvelope11);

+	}

+	public void testStringInflow_soap12() throws Exception {

+		_testStringInflow(sampleEnvelope12);

+	}

+	public void _testStringInflow(String sampleEnvelope) throws Exception {

+		

+		// On inbound, there will already be an OM

+		// which represents the message.  The following code simulates the input

+		// OM

+		StringReader sr = new StringReader(sampleEnvelope);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+		OMElement omElement = builder.getSOAPEnvelope();

+		

+		// The JAX-WS layer creates a Message from the OM

+		MessageFactory mf = (MessageFactory)

+			FactoryRegistry.getFactory(MessageFactory.class);

+		Message m = mf.createFrom(omElement);

+		

+		// Assuming no handlers are installed, the next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		XMLStringBlockFactory blockFactory = 

+			(XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		Block block = m.getBodyBlock(0, null, blockFactory);

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof String);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check the String for accuracy

+		assertTrue(sampleText.equals(bo.toString()));

+		

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * normal Dispatch<String> input flow with a JAX-WS Handler

+	 * @throws Exception

+	 */

+	public void testStringInflow2_soap11() throws Exception {

+		_testStringInflow2(sampleEnvelope11);

+	}

+	public void testStringInflow2_soap12() throws Exception {

+		// Only run test if an SAAJ 1.3 MessageFactory is available

+		javax.xml.soap.MessageFactory mf = null;

+		try {

+			mf = getSAAJConverter().createMessageFactory(soap12env);

+		} catch (Exception e) {}

+		if (mf != null) {

+			_testStringInflow2(sampleEnvelope12);

+		}

+	}

+	public void _testStringInflow2(String sampleEnvelope) throws Exception {

+		

+		// On inbound, there will already be an OM

+		// which represents the message.  The following code simulates the input

+		// OM

+		StringReader sr = new StringReader(sampleEnvelope);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+		OMElement omElement = builder.getSOAPEnvelope();

+		

+		// The JAX-WS layer creates a Message from the OM

+		MessageFactory mf = (MessageFactory)

+			FactoryRegistry.getFactory(MessageFactory.class);

+		Message m = mf.createFrom(omElement);

+		

+		// If there is a JAX-WS handler, the Message is converted into a SOAPEnvelope

+		SOAPEnvelope soapEnvelope = m.getAsSOAPEnvelope();

+		

+		// Normally the handler would not touch the body...but for our scenario, assume that it does.

+		String name = soapEnvelope.getBody().getFirstChild().getLocalName();

+		assertTrue("a".equals(name));

+		

+		// The next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		XMLStringBlockFactory blockFactory = 

+			(XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		Block block = m.getBodyBlock(0, null, blockFactory);

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof String);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check the String for accuracy

+		assertTrue(sampleText.equals(bo.toString()));

+		

+	}

+	

+	/**

+	 * Create a Block representing an XMLString and simulate a 

+	 * normal Dispatch<String> input flow with a JAX-WS Handler that needs the whole Message

+	 * @throws Exception

+	 */

+	public void testStringInflow3_soap11() throws Exception {

+		_testStringInflow3(sampleEnvelope11);

+	}

+	public void testStringInflow3_soap12() throws Exception {

+		//Only run test if an SAAJ 1.3 MessageFactory is available

+		javax.xml.soap.MessageFactory mf = null;

+		try {

+			mf = getSAAJConverter().createMessageFactory(soap12env);

+		} catch (Exception e) {}

+		if (mf != null) {

+			_testStringInflow3(sampleEnvelope12);

+		}

+	}

+	public void _testStringInflow3(String sampleEnvelope) throws Exception {

+		

+		// On inbound, there will already be an OM

+		// which represents the message.  The following code simulates the input

+		// OM

+		StringReader sr = new StringReader(sampleEnvelope);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+		OMElement omElement = builder.getSOAPEnvelope();

+		

+		// The JAX-WS layer creates a Message from the OM

+		MessageFactory mf = (MessageFactory)

+			FactoryRegistry.getFactory(MessageFactory.class);

+		Message m = mf.createFrom(omElement);

+		

+		// If there is a JAX-WS handler, the Message is converted into a SOAPEnvelope

+		SOAPMessage sm = m.getAsSOAPMessage();

+		

+		// Normally the handler would not touch the body...but for our scenario, assume that it does.

+		String name = sm.getSOAPBody().getFirstChild().getLocalName();

+		assertTrue("a".equals(name));

+		

+		// The next thing that will happen

+		// is the proxy code will ask for the business object (String).

+		XMLStringBlockFactory blockFactory = 

+			(XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+		Block block = m.getBodyBlock(0, null, blockFactory);

+		Object bo = block.getBusinessObject(true);

+		assertTrue(bo instanceof String);

+		

+		// The block should be consumed

+		assertTrue(block.isConsumed());

+		

+		// Check the String for accuracy

+		assertTrue(sampleText.equals(bo.toString()));

+		

+	}

+    

+    /**

+     * Create a Block representing an XMLString, but this time use one that

+     * doesn't have a &lt;soap:Header&gt; element in it.

+     * @throws Exception

+     */

+	public void testStringInflow4_soap11() throws Exception {

+		_testStringInflow4(sampleEnvelopeNoHeader11);

+	}

+	public void testStringInflow4_soap12() throws Exception {

+		_testStringInflow4(sampleEnvelopeNoHeader12);

+	}

+	public void _testStringInflow4(String sampleEnvelopeNoHeader) throws Exception {

+        // On inbound, there will already be an OM

+        // which represents the message.  The following code simulates the input

+        // OM

+        StringReader sr = new StringReader(sampleEnvelopeNoHeader);

+        XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+        StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+        OMElement omElement = builder.getSOAPEnvelope();

+        

+        // The JAX-WS layer creates a Message from the OM

+        MessageFactory mf = (MessageFactory)

+            FactoryRegistry.getFactory(MessageFactory.class);

+        Message m = mf.createFrom(omElement);

+        

+        // The next thing that will happen

+        // is the proxy code will ask for the business object (String).

+        XMLStringBlockFactory blockFactory = 

+            (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+        Block block = m.getBodyBlock(0, null, blockFactory);

+        Object bo = block.getBusinessObject(true);

+        assertTrue(bo instanceof String);

+        

+        // The block should be consumed

+        assertTrue(block.isConsumed());

+        

+        // Check the String for accuracy

+        assertTrue(sampleText.equals(bo.toString()));

+        

+    }

+    

+    /**

+     * Create a JAXBBlock containing a JAX-B business object 

+     * and simulate a normal Dispatch<Object> output flow

+     * @throws Exception

+     */

+    public void testJAXBOutflow() throws Exception {

+        // Create a SOAP 1.1 Message

+        MessageFactory mf = (MessageFactory)

+            FactoryRegistry.getFactory(MessageFactory.class);

+        Message m = mf.create(Protocol.soap11);

+        

+        // Get the BlockFactory

+        JAXBBlockFactory bf = (JAXBBlockFactory)

+            FactoryRegistry.getFactory(JAXBBlockFactory.class);

+        

+        // Create the JAX-B object

+        ObjectFactory of = new ObjectFactory();

+        EchoStringResponse obj = of.createEchoStringResponse();

+        obj.setEchoStringReturn("sample return value");

+        

+        // Create the JAXBContext

+        JAXBContext jbc = JAXBContext.newInstance("test");

+        

+        

+        // Create a JAXBBlock using the Echo object as the content.  This simulates

+        // what occurs on the outbound JAX-WS Dispatch<Object> client

+        Block block = bf.createFrom(obj, jbc, null);

+        

+        // Add the block to the message as normal body content.

+        m.setBodyBlock(0, block);

+        

+        // On an outbound flow, we need to convert the Message 

+        // to an OMElement, specifically an OM SOAPEnvelope, 

+        // so we can set it on the Axis2 MessageContext

+        org.apache.axiom.soap.SOAPEnvelope env = 

+            (org.apache.axiom.soap.SOAPEnvelope) m.getAsOMElement();

+        

+        // Serialize the Envelope using the same mechanism as the 

+        // HTTP client.

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();

+        env.serializeAndConsume(baos, new OMOutputFormat());

+        

+        // To check that the output is correct, get the String contents of the 

+        // reader

+        String newText = baos.toString();

+        System.out.println(newText);

+        assertTrue(newText.contains(sampleJAXBText));

+        assertTrue(newText.contains("soap"));

+        assertTrue(newText.contains("Envelope"));

+        assertTrue(newText.contains("Body"));

+    }

+    

+    public void testJAXBInflow_soap11() throws Exception {

+		_testJAXBInflow(sampleJAXBEnvelope11);

+	}

+	public void testJAXBInflow_soap12() throws Exception {

+		_testJAXBInflow(sampleJAXBEnvelope12);

+	}

+	public void _testJAXBInflow(String sampleJAXBEnvelope) throws Exception {

+        // Create a SOAP OM out of the sample incoming XML.  This

+        // simulates what Axis2 will be doing with the inbound message. 

+        StringReader sr = new StringReader(sampleJAXBEnvelope);

+        XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+        StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+        OMElement omElement = builder.getSOAPEnvelope();

+        

+        // Create a SOAP 1.1 Message from the sample incoming XML

+        MessageFactory mf = (MessageFactory)

+            FactoryRegistry.getFactory(MessageFactory.class);

+        Message m = mf.createFrom(omElement);

+        

+        // Get the BlockFactory

+        JAXBBlockFactory bf = (JAXBBlockFactory)

+            FactoryRegistry.getFactory(JAXBBlockFactory.class);

+        

+        // Create the JAXBContext instance that will be used

+        // to deserialize the JAX-B object content in the message.

+        JAXBContext jbc = JAXBContext.newInstance("test");

+        

+        // Get the JAXBBlock that wraps the content

+        Block b = m.getBodyBlock(0, jbc, bf);

+     

+        // Get the business object from the block, which should be a 

+        // JAX-B object

+        Object bo = b.getBusinessObject(true);

+        

+        // Check to make sure the right object was returned

+        assertNotNull(bo);

+        assertTrue(bo instanceof EchoStringResponse);

+        

+        // Check to make sure the content of that object is correct

+        EchoStringResponse esr = (EchoStringResponse) bo;

+        assertNotNull(esr.getEchoStringReturn());

+        assertTrue(esr.getEchoStringReturn().equals("sample return value"));

+    }

+	SAAJConverter converter = null;

+	private SAAJConverter getSAAJConverter() {

+		if (converter == null) {

+			SAAJConverterFactory factory = (

+						SAAJConverterFactory)FactoryRegistry.getFactory(SAAJConverterFactory.class);

+			converter = factory.getSAAJConverter();

+		}

+		return converter;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/SAAJConverterTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/SAAJConverterTests.java
new file mode 100644
index 0000000..5fdc28d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/SAAJConverterTests.java
@@ -0,0 +1,178 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import java.io.StringReader;

+

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.SOAPBody;

+import javax.xml.soap.SOAPBodyElement;

+import javax.xml.soap.SOAPElement;

+import javax.xml.soap.SOAPEnvelope;

+import javax.xml.soap.SOAPFactory;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+

+import junit.framework.TestCase;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.message.factory.SAAJConverterFactory;

+import org.apache.axis2.jaxws.message.util.SAAJConverter;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+/**

+ * SAAJConverterTests

+ * 

+ * Test the basic functionality of the SAAJConverter.

+ * You can also use these tests to as sample code on how to use

+ * the converter.

+ *

+ */

+public class SAAJConverterTests extends TestCase {

+

+	private static final String sampleText =

+		"<pre:a xmlns:pre=\"urn://sample\">" +

+		"<b>Hello</b>" +

+		"<c>World</c>" +

+		"</pre:a>";

+	

+	private static final String sampleEnvelope = 

+		"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +

+		"<soapenv:Header /><soapenv:Body>" +

+		sampleText +

+		"</soapenv:Body></soapenv:Envelope>";

+	

+	private static XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+	

+	public SAAJConverterTests() {

+		super();

+	}

+

+	public SAAJConverterTests(String arg0) {

+		super(arg0);

+	}

+

+	/**

+	 * @testStrategy Tests conversions between SAAJ and OM SOAPEnvelopes

+	 */

+	public void test1() throws Exception {

+		

+		// Bootstrap: Create an OM SOAPEnvelope from the sample text

+		StringReader sr = new StringReader(sampleEnvelope);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+		org.apache.axiom.soap.SOAPEnvelope omEnvelope = builder.getSOAPEnvelope();

+		

+		// Step 1: Get the SAAJConverter object from the Factory

+		SAAJConverterFactory f = (SAAJConverterFactory) 

+			FactoryRegistry.getFactory(SAAJConverterFactory.class);

+		SAAJConverter converter = f.getSAAJConverter();

+		

+		// Step 2: Convert the OM SOAPEnvelope to an SAAJ SOAPEnvelope

+		SOAPEnvelope saajEnvelope = converter.toSAAJ(omEnvelope);

+		

+		// Step 2a: Simple assertion check to ensure correctness.

+		String name = saajEnvelope.getBody().getFirstChild().getLocalName();

+		assertTrue("a".equals(name));

+		

+		// Step 3: Convert the SAAJ SOAPEnvelope to an OM SOAPEnvelope

+		omEnvelope = converter.toOM(saajEnvelope);

+		

+		// Step 3a: Simple assertion check to ensure correctness

+		name = omEnvelope.getBody().getFirstElement().getLocalName();

+		assertTrue("a".equals(name));

+		

+		// Step 4: Rinse and repeat

+		saajEnvelope = converter.toSAAJ(omEnvelope);

+		name = saajEnvelope.getBody().getFirstChild().getLocalName();

+		assertTrue("a".equals(name));

+		omEnvelope = converter.toOM(saajEnvelope);

+		name = omEnvelope.getBody().getFirstElement().getLocalName();

+		assertTrue("a".equals(name));

+	}

+	

+	/**

+	 * @testStrategy Tests conversions between SAAJ and OM for normal element

+	 */

+	public void test2() throws Exception {

+		

+		// Bootstrap: Create an OM SOAPEnvelope from the sample text.

+		StringReader sr = new StringReader(sampleEnvelope);

+		XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+		StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+		org.apache.axiom.soap.SOAPEnvelope omEnvelope = builder.getSOAPEnvelope();

+		

+		// Bootstrap: Get an OMElement from the body

+		OMElement om = omEnvelope.getBody().getFirstElement();

+		

+		// Bootstrap: Get an SAAJ Body to hold the target SOAPElement

+		MessageFactory msgFactory = MessageFactory.newInstance();

+		SOAPMessage message = msgFactory.createMessage();

+		SOAPBody body = message.getSOAPBody();

+		

+		// Step 1: Get the SAAJConverter object from the Factory

+		SAAJConverterFactory f = (SAAJConverterFactory) 

+			FactoryRegistry.getFactory(SAAJConverterFactory.class);

+		SAAJConverter converter = f.getSAAJConverter();

+		

+		// Step 2: Convert OM to SAAJ

+		SOAPElement se = converter.toSAAJ(om, body);

+		

+		// Step 2a: Verify

+		assertTrue(se instanceof SOAPBodyElement);

+		assertTrue(se.getLocalName().equals("a"));

+		

+		// Step 3: Convert SAAJ to OM

+		om = converter.toOM(se);

+		

+		// Step 3a: Verify

+		assertTrue(om.getLocalName().equals("a"));

+		

+		// Step 4: Rinse and Repeat

+		se = converter.toSAAJ(om, body);

+		assertTrue(se instanceof SOAPBodyElement);

+		assertTrue(se.getLocalName().equals("a"));

+		om = converter.toOM(se);

+		assertTrue(om.getLocalName().equals("a"));

+	}

+	

+	/**

+	 * @testStrategy: Create an OMElement, without using a builder.  Verification of AXIS2-970

+	 */

+    public void test3() throws Exception {

+    	

+//    	 Step 1: Get the SAAJConverter object from the Factory

+		SAAJConverterFactory f = (SAAJConverterFactory) 

+			FactoryRegistry.getFactory(SAAJConverterFactory.class);

+		SAAJConverter converter = f.getSAAJConverter();

+		

+		// Stept 2: Create OM and parent SOAPElement

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace wrapNs = fac.createOMNamespace("namespace", "prefix");

+        OMElement ome = fac.createOMElement("localname", wrapNs);

+        SOAPFactory sf = SOAPFactory.newInstance();

+        SOAPElement se = sf.createElement("name");

+        

+        // Step 3: Do the conversion

+        converter.toSAAJ(ome, se, sf);

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/SOAP12Tests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/SOAP12Tests.java
new file mode 100644
index 0000000..c9133cb
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/SOAP12Tests.java
@@ -0,0 +1,235 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import java.io.StringReader;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.jaxws.message.factory.MessageFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+import junit.framework.TestCase;

+

+/**

+ * This suite is used to test the creation of messages based on SOAP 1.2

+ * with both inbound and outbound simulations. 

+ *

+ */

+public class SOAP12Tests extends TestCase {

+

+    private static final String sampleText = 

+        "<echo>test string</echo>";

+    

+    private static final String sampleSoap12EnvelopeHead =

+        "<soapenv:Envelope xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\">" +

+        "<soapenv:Header /><soapenv:Body>";

+    

+    private static final String sampleEnvelopeTail =

+        "</soapenv:Body></soapenv:Envelope>";    

+    

+    private static final String sampleSoap12Envelope = 

+        sampleSoap12EnvelopeHead + 

+        sampleText + 

+        sampleEnvelopeTail;

+    

+    private static final String SOAP12_NS_URI = 

+        "http://www.w3.org/2003/05/soap-envelope";

+    

+    public static final XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+    

+    public SOAP12Tests(String name) {

+        super(name);

+    }

+    

+    /**

+     * Simulate creating a SOAP 1.2 message when the business object

+     * provided is just the payload. 

+     */

+    public void testCreateSoap12FromPayload() throws Exception {

+        // Create a SOAP 1.2 Message

+        MessageFactory mf = (MessageFactory)

+            FactoryRegistry.getFactory(MessageFactory.class);

+        Message m = mf.create(Protocol.soap12);

+        

+        // Get the BlockFactory

+        XMLStringBlockFactory f = (XMLStringBlockFactory)

+            FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+        

+        // Create a Block using the sample string as the content.  This simulates

+        // what occurs on the outbound JAX-WS dispatch<String> client

+        Block block = f.createFrom(sampleText, null, null);

+        

+        // Add the block to the message as normal body content.

+        m.setBodyBlock(0, block);

+        

+        // Assuming no handlers are installed, the next thing that will happen

+        // is a XMLStreamReader will be requested...to go to OM.   At this point the

+        // block should be consumed.

+        OMElement om = m.getAsOMElement();

+        

+        // The block should not be consumed yet...because the message has not been read

+        assertTrue(!block.isConsumed());

+        

+        // To check that the output is correct, get the String contents of the 

+        // reader

+        Reader2Writer r2w = new Reader2Writer(om.getXMLStreamReaderWithoutCaching());

+        String newText = r2w.getAsString();

+        System.out.println(newText);

+        assertTrue(newText.contains(sampleText));

+        assertTrue(newText.contains("soap"));

+        assertTrue(newText.contains("Envelope"));

+        assertTrue(newText.contains("Body"));

+        

+        assertTrue(m.getProtocol().equals(Protocol.soap12));

+        

+        SOAPEnvelope omSoapEnv = (SOAPEnvelope) m.getAsOMElement();

+        OMNamespace ns = omSoapEnv.getNamespace();

+        assertTrue(ns.getNamespaceURI().equals(SOAP12_NS_URI));

+        

+        // The block should be consumed at this point

+        assertTrue(block.isConsumed());

+    }

+    

+    /**

+     * Simulate creating a SOAP 1.2 message when the business object

+     * provided is the full message.

+     */

+    public void testCreateSoap12FromMessage() throws Exception {

+        // Create a SOAP 1.2 Message

+        MessageFactory mf = (MessageFactory)

+            FactoryRegistry.getFactory(MessageFactory.class);

+        

+        // Get the BlockFactory

+        XMLStringBlockFactory f = (XMLStringBlockFactory)

+            FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+        

+        // Create a Block using the sample string as the content.  This simulates

+        // what occurs on the outbound JAX-WS dispatch<String> client

+        Block block = f.createFrom(sampleSoap12Envelope, null, null);

+        

+        // Create a Message with the full XML contents that we have

+        Message m = mf.createFrom(block.getXMLStreamReader(true));

+        

+        // Assuming no handlers are installed, the next thing that will happen

+        // is a XMLStreamReader will be requested...to go to OM.   At this point the

+        // block should be consumed.

+        OMElement om = m.getAsOMElement();

+        

+        // To check that the output is correct, get the String contents of the 

+        // reader

+        Reader2Writer r2w = new Reader2Writer(om.getXMLStreamReaderWithoutCaching());

+        String newText = r2w.getAsString();

+        System.out.println(newText);

+        assertTrue(newText.contains(sampleText));

+        assertTrue(newText.contains("soap"));

+        assertTrue(newText.contains("Envelope"));

+        assertTrue(newText.contains("Body"));

+        

+        assertTrue(m.getProtocol().equals(Protocol.soap12));

+        

+        SOAPEnvelope omSoapEnv = (SOAPEnvelope) m.getAsOMElement();

+        OMNamespace ns = omSoapEnv.getNamespace();

+        assertTrue(ns.getNamespaceURI().equals(SOAP12_NS_URI));

+        

+        // The block should be consumed at this point

+        assertTrue(block.isConsumed());

+    }

+    

+    public void testGetPayloadFromSoap12() throws Exception {

+        // On inbound, there will already be an OM

+        // which represents the message.  The following code simulates the input

+        // OM

+        StringReader sr = new StringReader(sampleSoap12Envelope);

+        XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+        StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+        OMElement omElement = builder.getSOAPEnvelope();

+        

+        // The JAX-WS layer creates a Message from the OM

+        MessageFactory mf = (MessageFactory)

+            FactoryRegistry.getFactory(MessageFactory.class);

+        Message m = mf.createFrom(omElement);

+        

+        // Make sure the right Protocol was set on the Message

+        assertTrue(m.getProtocol().equals(Protocol.soap12));

+        

+        // Check the SOAPEnvelope to make sure we've got the right

+        // protocol namespace there as well.

+        SOAPEnvelope soapEnv = (SOAPEnvelope) m.getAsOMElement();

+        OMNamespace ns = soapEnv.getNamespace();

+        assertTrue(ns.getNamespaceURI().equals(SOAP12_NS_URI));

+        

+        // Assuming no handlers are installed, the next thing that will happen

+        // is the proxy code will ask for the business object (String).

+        XMLStringBlockFactory blockFactory = 

+            (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+        Block block = m.getBodyBlock(0, null, blockFactory);

+        Object bo = block.getBusinessObject(true);

+        assertTrue(bo instanceof String);

+        

+        // The block should be consumed

+        assertTrue(block.isConsumed());

+        

+        // Check the String for accuracy

+        assertTrue(sampleText.equals(bo));

+    }

+    

+    public void testGetMessageFromSoap12() throws Exception {

+        // On inbound, there will already be an OM

+        // which represents the message.  The following code simulates the input

+        // OM

+        StringReader sr = new StringReader(sampleSoap12Envelope);

+        XMLStreamReader inflow = inputFactory.createXMLStreamReader(sr);

+        StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(inflow, null);

+        OMElement omElement = builder.getSOAPEnvelope();

+        

+        // The JAX-WS layer creates a Message from the OM

+        MessageFactory mf = (MessageFactory)

+            FactoryRegistry.getFactory(MessageFactory.class);

+        Message m = mf.createFrom(omElement);

+        

+        // Make sure the right Protocol was set on the Message

+        assertTrue(m.getProtocol().equals(Protocol.soap12));

+        

+        // Check the SOAPEnvelope to make sure we've got the right

+        // protocol namespace there as well.

+        SOAPEnvelope soapEnv = (SOAPEnvelope) m.getAsOMElement();

+        OMNamespace ns = soapEnv.getNamespace();

+        assertTrue(ns.getNamespaceURI().equals(SOAP12_NS_URI));

+        

+        // Assuming no handlers are installed, the next thing that will happen

+        // is the proxy code will ask for the business object (String).

+        XMLStringBlockFactory blockFactory = 

+            (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);

+        Block block = blockFactory.createFrom(m.getAsOMElement(), null, null);

+        Object bo = block.getBusinessObject(true);

+        assertTrue(bo instanceof String);

+        

+        // The block should be consumed

+        assertTrue(block.isConsumed());

+        

+        // Check the String for accuracy

+        assertTrue(sampleSoap12Envelope.equals(bo));

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/XMLStreamReaderSplitterTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/XMLStreamReaderSplitterTests.java
new file mode 100644
index 0000000..6e05796
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/message/XMLStreamReaderSplitterTests.java
@@ -0,0 +1,122 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.message;

+

+import java.io.StringReader;

+import java.io.StringWriter;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.JAXBIntrospector;

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+

+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;

+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;

+import org.apache.axis2.jaxws.message.util.Reader2Writer;

+import org.apache.axis2.jaxws.message.util.XMLStreamReaderSplitter;

+import org.apache.axis2.jaxws.registry.FactoryRegistry;

+

+import test.EchoString;

+import test.ObjectFactory;

+

+import junit.framework.TestCase;

+

+/**

+ * Tests XMLStreamReaderSplitter

+ */

+public class XMLStreamReaderSplitterTests extends TestCase {

+

+	// String test variables

+	private static final String sampleText =

+		"<body>" + 

+		"spurious text" +

+		"<pre:a1 xmlns:pre=\"urn://sample\">" +

+		"<b1>Hello</b1>" +

+		"<c1>World</c1>" +

+		"</pre:a1>" +

+		"<!-- Spurious Comment -->" +

+		"<pre:a2 xmlns:pre=\"urn://sample2\">" +

+		"<b2>Hello</b2>" +

+		"<c2>World</c2>" +

+		"</pre:a2>" +

+		"</body>";

+	

+	

+	private static XMLInputFactory inputFactory = XMLInputFactory.newInstance();

+	private static XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();

+	

+	

+	

+	public XMLStreamReaderSplitterTests() {

+		super();

+	}

+

+	public XMLStreamReaderSplitterTests(String arg0) {

+		super(arg0);

+	}

+	

+	/**

+	 * Test XMLStreamReaderSplitter 

+	 * @throws Exception

+	 */

+	public void test() throws Exception {

+		// Create a full XMLStreamReader for the message

+		StringReader sr = new StringReader(sampleText);

+		XMLStreamReader fullReader = inputFactory.createXMLStreamReader(sr);

+		

+		// Advance past the first element (body)

+		fullReader.next();

+		fullReader.next();

+		

+		// Create a Splitter

+		XMLStreamReaderSplitter splitter = new XMLStreamReaderSplitter(fullReader);

+		

+		// Pipe the splitter to the writer.  This should generated only the 

+		// first element tree.

+		StringWriter sw = new StringWriter();

+		XMLStreamWriter writer = outputFactory.createXMLStreamWriter(sw);

+		Reader2Writer r2w = new Reader2Writer(splitter);

+		r2w.outputTo(writer);

+		writer.flush();

+		sw.flush();

+		String tree1 = sw.toString();

+		

+		// Now get the next Stream

+		XMLStreamReader stream2 = splitter.getNextReader();

+		r2w = new Reader2Writer(stream2);

+		sw = new StringWriter();

+		writer = outputFactory.createXMLStreamWriter(sw);

+		r2w.outputTo(writer);

+		writer.flush();

+		sw.flush();

+		String tree2 = sw.toString();

+		

+		// Do assertion checks

+		assertTrue(!tree1.contains("text"));

+		assertTrue(!tree1.contains("Comment"));

+		assertTrue( tree1.contains("a1"));

+		assertTrue(!tree1.contains("a2"));

+		

+		assertTrue(!tree2.contains("text"));

+		assertTrue(!tree2.contains("Comment"));

+		assertTrue(!tree2.contains("a1"));

+		assertTrue( tree2.contains("a2"));

+	}

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/AttachmentUtil.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/AttachmentUtil.java
new file mode 100644
index 0000000..f641707
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/AttachmentUtil.java
@@ -0,0 +1,58 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider;

+

+

+import javax.imageio.IIOImage;

+import javax.imageio.ImageWriter;

+import javax.imageio.stream.ImageOutputStream;

+import java.awt.Image;

+import java.awt.image.BufferedImage;

+import java.io.OutputStream;

+import java.util.Iterator;

+

+/**

+ * This will serve as a helper class for attachments utility methods. All methods

+ * are intended to be referenced staticly.

+ *

+ */

+public class AttachmentUtil {

+ 

+    /**

+     * Store a given image to an Image output stream

+     * @param mimeType

+     * @param image

+     * @param os

+     * @throws Exception

+     */

+    public static void storeImage(String mimeType, Image image, OutputStream os) throws Exception {

+        ImageWriter imageWriter = null;

+        BufferedImage bufferedImage = (BufferedImage) image;

+        

+        Iterator iterator = javax.imageio.ImageIO.getImageWritersByMIMEType(mimeType);

+        if (iterator.hasNext()) {

+        	imageWriter = (ImageWriter) iterator.next();

+        }

+        ImageOutputStream ios = javax.imageio.ImageIO.createImageOutputStream(os);

+        imageWriter.setOutput(ios);

+

+        imageWriter.write(new IIOImage(bufferedImage, null, null));

+        ios.flush();

+        imageWriter.dispose();

+    }

+}

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/DataSourceImpl.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/DataSourceImpl.java
new file mode 100644
index 0000000..00312df
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/DataSourceImpl.java
@@ -0,0 +1,113 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider;

+

+import javax.activation.DataSource;

+import java.awt.Image;

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.io.IOException;

+import java.io.InputStream;

+import java.io.OutputStream;

+

+/**

+ * An impl class for javax.activation.DataSource interface.

+ *

+ */

+public class DataSourceImpl implements DataSource {

+

+    private final String fileName;

+

+    private final String contentType;

+

+    private byte[] byteArray;

+

+    private ByteArrayOutputStream byteArrayOS;

+    

+	/**

+	 * Constructor

+	 * 

+	 * @param _contentType

+	 * @param _fileName

+	 * @param image

+	 * @throws Exception

+	 */

+	public DataSourceImpl(String _contentType, String _fileName, Image image) throws Exception{

+		super();

+        

+        try {

+        	if((_contentType == null) || (_contentType == "")){

+        		throw new NullPointerException("Type is NULL: Must provide content type");

+        	}

+        	if((_fileName == null) || (_contentType == "")){

+        		throw new NullPointerException("File name is NULL: Must provide content file name");

+        	}

+        	

+        	this.fileName = _fileName;

+    		this.contentType = _contentType;

+        	

+            if (image != null) {

+            	byteArrayOS = new ByteArrayOutputStream();

+                AttachmentUtil.storeImage(this.contentType, image, byteArrayOS);

+            }

+        } catch (Exception e) {

+            throw e;

+        }

+

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.activation.DataSource#getContentType()

+	 */

+	public String getContentType() {

+		return this.contentType;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.activation.DataSource#getInputStream()

+	 */

+	public InputStream getInputStream() throws IOException {

+		if (this.byteArrayOS.size() != 0) {

+			this.byteArray = this.byteArrayOS.toByteArray();

+            this.byteArrayOS.reset();

+        }

+		

+		if(this.byteArray == null){

+			return new ByteArrayInputStream(new byte[0]);

+			

+		}

+        return new ByteArrayInputStream(this.byteArray);

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.activation.DataSource#getName()

+	 */

+	public String getName() {

+		return this.fileName;

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.activation.DataSource#getOutputStream()

+	 */

+	public OutputStream getOutputStream() throws IOException {

+		if (this.byteArrayOS.size() != 0) {

+			this.byteArray = this.byteArrayOS.toByteArray();

+            this.byteArrayOS.reset();

+        }

+        return this.byteArrayOS;

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/JAXBProviderTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/JAXBProviderTests.java
new file mode 100644
index 0000000..531c216
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/JAXBProviderTests.java
@@ -0,0 +1,157 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider;

+

+import java.awt.Image;

+import java.io.File;

+

+import javax.activation.DataHandler;

+import javax.activation.DataSource;

+import javax.imageio.ImageIO;

+import javax.imageio.stream.FileImageInputStream;

+import javax.imageio.stream.ImageInputStream;

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+

+import org.apache.axiom.attachments.ByteArrayDataSource;

+import org.test.mtom.ImageDepot;

+import org.test.mtom.ObjectFactory;

+import org.test.mtom.SendImage;

+import org.test.mtom.SendImageResponse;

+

+/**

+ * The intended purpose of this testcase is to test the MTOM functions in Axis2. 

+ * It demostrate an alternative way of sending an attachment using DataHandler.

+ * 

+ * This testcase uses a JAXWS Dispatch invocation with JAXB generated request object

+ * as parameter. The endpoint for these testcase is a JAXWS Source Provider.

+ * 

+ * These JAXB generated artifacts is based on jaxws\test-resources\xsd\samplemtom.xsd

+ * schema.

+ * 

+ * Available Content types are:

+ *       "image/gif"

+ *       "image/jpeg"

+ *       "text/plain"

+ *       "multipart/*"

+ *       "text/xml"

+ *       "application/xml"

+ * This initial testcase only covers the "multipart/*" and  "text/plain" mime types.

+ * The ultimate goal is to provide testcases for the remaining mime types. 

+ *

+ */

+public class JAXBProviderTests extends ProviderTestCase {

+

+    String endpointUrl = "http://localhost:8080/axis2/services/JAXBProviderService";

+    private QName serviceName = new QName("http://ws.apache.org/axis2", "JAXBProviderService");

+    DataSource stringDS, imageDS;

+    

+    protected void setUp() throws Exception {

+        super.setUp();

+        

+        //Create a DataSource from a String

+        String string = "Sending a JAXB generated string object to Source Provider endpoint";

+        stringDS = new ByteArrayDataSource(string.getBytes(),"text/plain");

+    	

+        //Create a DataSource from an image 

+        File file = new File(imageResourceDir+File.separator+"test.jpg");

+    	ImageInputStream fiis = new FileImageInputStream(file);

+    	Image image = ImageIO.read(fiis);

+    	imageDS = new DataSourceImpl("image/jpeg","test.jpg",image);

+    	

+    }

+

+    protected void tearDown() throws Exception {

+            super.tearDown();

+    }

+    

+    public JAXBProviderTests(String name) {

+        super(name);

+    }

+    

+    /**

+     * test String

+     * @throws Exception

+     */

+    public void testMTOMAttachmentString() throws Exception {

+        System.out.println("---------------------------------------");

+        System.out.println("test: " + getName());

+        

+        //Create a DataHandler with the String DataSource object

+        DataHandler dataHandler = new DataHandler(stringDS);

+    	

+        //Store the data handler in ImageDepot bean

+    	ImageDepot imageDepot = new ObjectFactory().createImageDepot();

+    	imageDepot.setImageData(dataHandler);

+        

+        Service svc = Service.create(serviceName);

+        svc.addPort(portName, null, endpointUrl);

+        

+        JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");

+        

+        Dispatch<Object> dispatch = svc

+                .createDispatch(portName, jbc, Service.Mode.PAYLOAD);

+        

+        //Create a request bean with imagedepot bean as value

+        ObjectFactory factory = new ObjectFactory();

+        SendImage request = factory.createSendImage();

+        request.setInput(imageDepot);

+        

+        System.out.println(">> Invoking Dispatch<Object> JAXBProviderService");

+        

+        SendImageResponse response = (SendImageResponse) dispatch.invoke(request);

+        

+        System.out.println(">> Response [" + response.toString() + "]");

+    }

+    

+    /**

+     * test Image

+     * @throws Exception

+     */

+    public void testMTOMAttachmentImage() throws Exception {

+        System.out.println("---------------------------------------");

+        System.out.println("test: " + getName());

+        

+        //Create a DataHandler with the String DataSource object

+        DataHandler dataHandler = new DataHandler(imageDS);

+    	

+        //Store the data handler in ImageDepot bean

+    	ImageDepot imageDepot = new ObjectFactory().createImageDepot();

+    	imageDepot.setImageData(dataHandler);

+        

+        Service svc = Service.create(serviceName);

+        svc.addPort(portName, null, endpointUrl);

+        

+        JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");

+        

+        Dispatch<Object> dispatch = svc

+                .createDispatch(portName, jbc, Service.Mode.PAYLOAD);

+        

+        //Create a request bean with imagedepot bean as value

+        ObjectFactory factory = new ObjectFactory();

+        SendImage request = factory.createSendImage();

+        request.setInput(imageDepot);

+        

+        System.out.println(">> Invoking Dispatch<Object> JAXBProviderService");

+        

+        SendImageResponse response = (SendImageResponse) dispatch.invoke(request);

+        

+        System.out.println(">> Response [" + response.toString() + "]");

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/ProviderTestCase.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/ProviderTestCase.java
new file mode 100644
index 0000000..c89a788
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/ProviderTestCase.java
@@ -0,0 +1,51 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider;

+

+import java.io.File;

+import javax.xml.namespace.QName;

+import junit.framework.TestCase;

+

+public abstract class ProviderTestCase extends TestCase {

+

+    public QName portName = new QName("http://ws.apache.org/axis2", "SimpleProviderServiceSOAP11port0");

+    public String providerResourceDir = "test-resources"+File.separator+"provider";

+    public String imageResourceDir = "test-resources"+File.separator+"image";

+    public String basedir = null;

+    

+	protected void setUp() throws Exception {

+		super.setUp();

+		//StartServer startServer = new StartServer("server1");

+		//startServer.testStartServer();

+	}

+

+	protected void tearDown() throws Exception {

+		super.tearDown();

+		//StopServer stopServer = new StopServer("server1");

+		//stopServer.testStopServer();

+	}

+	

+    public ProviderTestCase(String name) {

+        super(name);

+        if(basedir == null){

+            basedir = new File(".").getAbsolutePath();

+        }

+        providerResourceDir = new File(basedir, providerResourceDir).getAbsolutePath();

+        imageResourceDir = new File(basedir, imageResourceDir).getAbsolutePath();

+    }

+    

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java
new file mode 100644
index 0000000..525cf37
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java
@@ -0,0 +1,81 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider;

+

+

+import java.io.ByteArrayInputStream;

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.InputStream;

+import java.util.Map;

+import javax.xml.namespace.QName;

+import javax.xml.ws.BindingProvider;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.SOAPMessage;

+import javax.xml.transform.Source;

+import javax.xml.transform.stream.StreamSource;

+

+public class SoapMessageProviderTests extends ProviderTestCase {

+

+    private String endpointUrl = "http://localhost:8080/axis2/services/SoapMessageProviderService";

+    private QName serviceName = new QName("http://ws.apache.org/axis2", "SoapMessageProviderService");

+    private String xmlDir = "xml";

+    private String reqMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><ns2:invoke xmlns:ns2=\"http://org.test.soapmessage\"><invoke_str>some request</invoke_str></ns2:invoke></soap:Body></soap:Envelope>";

+

+

+    protected void setUp() throws Exception {

+            super.setUp();

+    }

+

+    protected void tearDown() throws Exception {

+            super.tearDown();

+    }

+

+    public SoapMessageProviderTests(String name) {

+        super(name);

+    }

+    

+    public void testProviderSource(){

+        try{

+//        	String resourceDir = new File(providerResourceDir, xmlDir).getAbsolutePath();

+//        	String fileName = resourceDir+File.separator+"web.xml";

+//        	

+//        	File file = new File(fileName);

+//        	InputStream inputStream = new FileInputStream(file);

+//        	StreamSource xmlStreamSource = new StreamSource(inputStream);

+//        	

+        	Service svc = Service.create(serviceName);

+        	svc.addPort(portName,null, endpointUrl);

+        	Dispatch<SOAPMessage> dispatch = svc.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

+        	System.out.println(">> Invoking SourceMessageProviderDispatch");

+            MessageFactory factory = MessageFactory.newInstance();

+            SOAPMessage outboundMessage = factory.createMessage(null, 

+                    new ByteArrayInputStream(reqMsg.getBytes()));

+        	SOAPMessage response = dispatch.invoke(outboundMessage);

+

+        	System.out.println(">> Response [" + response.toString() + "]");

+            response.writeTo(System.out);

+        	

+        }catch(Exception e){

+        	e.printStackTrace();

+            fail("Caught exception " + e);

+        }

+        

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceMessageProviderTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceMessageProviderTests.java
new file mode 100644
index 0000000..078f2ab
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceMessageProviderTests.java
@@ -0,0 +1,73 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider;

+

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.InputStream;

+import java.util.Map;

+import javax.xml.namespace.QName;

+import javax.xml.ws.BindingProvider;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+import javax.xml.transform.Source;

+import javax.xml.transform.stream.StreamSource;

+

+public class SourceMessageProviderTests extends ProviderTestCase {

+

+    private String endpointUrl = "http://localhost:8080/axis2/services/SourceMessageProviderService";

+    private QName serviceName = new QName("http://ws.apache.org/axis2", "SourceMessageProviderService");

+    private String xmlDir = "xml";

+

+

+    protected void setUp() throws Exception {

+            super.setUp();

+    }

+

+    protected void tearDown() throws Exception {

+            super.tearDown();

+    }

+

+    public SourceMessageProviderTests(String name) {

+        super(name);

+    }

+    

+    public void testProviderSource(){

+        try{

+        	String resourceDir = new File(providerResourceDir, xmlDir).getAbsolutePath();

+        	String fileName = resourceDir+File.separator+"web.xml";

+        	

+        	File file = new File(fileName);

+        	InputStream inputStream = new FileInputStream(file);

+        	StreamSource xmlStreamSource = new StreamSource(inputStream);

+        	

+        	Service svc = Service.create(serviceName);

+        	svc.addPort(portName,null, endpointUrl);

+        	Dispatch<Source> dispatch = svc.createDispatch(portName, Source.class, null);

+        	System.out.println(">> Invoking SourceMessageProviderDispatch");

+        	Source response = dispatch.invoke(xmlStreamSource);

+

+        	System.out.println(">> Response [" + response.toString() + "]");

+        	

+        }catch(Exception e){

+        	e.printStackTrace();

+            fail("Caught exception " + e);

+        }

+        

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceProviderTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceProviderTests.java
new file mode 100644
index 0000000..cf88768
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/SourceProviderTests.java
@@ -0,0 +1,73 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider;

+

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.InputStream;

+import java.util.Map;

+import javax.xml.namespace.QName;

+import javax.xml.ws.BindingProvider;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+import javax.xml.transform.Source;

+import javax.xml.transform.stream.StreamSource;

+

+public class SourceProviderTests extends ProviderTestCase {

+

+    private String endpointUrl = "http://localhost:8080/axis2/services/SourceProviderService";

+    private QName serviceName = new QName("http://ws.apache.org/axis2", "SourceProviderService");

+    private String xmlDir = "xml";

+

+

+    protected void setUp() throws Exception {

+            super.setUp();

+    }

+

+    protected void tearDown() throws Exception {

+            super.tearDown();

+    }

+

+    public SourceProviderTests(String name) {

+        super(name);

+    }

+    

+    public void testProviderSource(){

+        try{

+        	String resourceDir = new File(providerResourceDir, xmlDir).getAbsolutePath();

+        	String fileName = resourceDir+File.separator+"web.xml";

+        	

+        	File file = new File(fileName);

+        	InputStream inputStream = new FileInputStream(file);

+        	StreamSource xmlStreamSource = new StreamSource(inputStream);

+        	

+        	Service svc = Service.create(serviceName);

+        	svc.addPort(portName,null, endpointUrl);

+        	Dispatch<Source> dispatch = svc.createDispatch(portName, Source.class, null);

+        	System.out.println(">> Invoking Source Provider Dispatch");

+        	Source response = dispatch.invoke(xmlStreamSource);

+

+        	System.out.println(">> Response [" + response.toString() + "]");

+        	

+        }catch(Exception e){

+        	e.printStackTrace();

+            fail("Caught exception " + e);

+        }

+        

+    }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringMessageProviderTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringMessageProviderTests.java
new file mode 100644
index 0000000..99b99ae
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringMessageProviderTests.java
@@ -0,0 +1,58 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider;

+

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.BindingProvider;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+

+public class StringMessageProviderTests extends ProviderTestCase {

+

+    String endpointUrl = "http://localhost:8080/axis2/services/StringMessageProviderService";

+    String xmlString = "<invoke>test input</invoke>";

+    private QName serviceName = new QName("http://ws.apache.org/axis2", "StringMessageProviderService");

+

+    protected void setUp() throws Exception {

+            super.setUp();

+    }

+

+    protected void tearDown() throws Exception {

+            super.tearDown();

+    }

+

+    public StringMessageProviderTests(String name) {

+        super(name);

+    }

+    

+    public void testProviderString() throws Exception {

+        System.out.println("---------------------------------------");

+        System.out.println("test: " + getName());

+        

+        Service svc = Service.create(serviceName);

+        svc.addPort(portName, null, endpointUrl);

+        

+        Dispatch<String> dispatch = svc

+                .createDispatch(portName, String.class, Service.Mode.PAYLOAD);

+        

+        System.out.println(">> Invoking Dispatch<String> StringMessageProviderService");

+        String retVal = dispatch.invoke(xmlString);

+        System.out.println(">> Response [" + retVal + "]");

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringProviderTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringProviderTests.java
new file mode 100644
index 0000000..188c0c2
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/StringProviderTests.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * 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.axis2.jaxws.provider;
+
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+
+public class StringProviderTests extends ProviderTestCase {
+
+    String endpointUrl = "http://localhost:8080/axis2/services/StringProviderService";
+    String xmlString = "<invoke>test input</invoke>";
+    private QName serviceName = new QName("http://ws.apache.org/axis2", "StringProviderService");
+
+    protected void setUp() throws Exception {
+            super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+            super.tearDown();
+    }
+
+    public StringProviderTests(String name) {
+        super(name);
+    }
+    
+    public void testProviderString() throws Exception {
+        System.out.println("---------------------------------------");
+        System.out.println("test: " + getName());
+        
+        Service svc = Service.create(serviceName);
+        svc.addPort(portName, null, endpointUrl);
+        
+        Dispatch<String> dispatch = svc
+                .createDispatch(portName, String.class, Service.Mode.PAYLOAD);
+        
+        System.out.println(">> Invoking Dispatch<String> StringProviderService");
+        String retVal = dispatch.invoke(xmlString);
+        System.out.println(">> Response [" + retVal + "]");
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/JAXBProvider.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/JAXBProvider.java
new file mode 100644
index 0000000..a0269da
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/JAXBProvider.java
@@ -0,0 +1,80 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider.jaxb;

+

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.bind.Marshaller;

+import javax.xml.bind.Unmarshaller;

+import javax.xml.transform.Source;

+import javax.xml.transform.stream.StreamSource;

+import javax.xml.ws.Provider;

+import javax.xml.ws.WebServiceProvider;

+

+import org.test.mtom.ObjectFactory;

+import org.test.mtom.SendImage;

+import org.test.mtom.SendImageResponse;

+

+/**

+ * A JAXWS Source Provider implementation

+ *

+ */

+@WebServiceProvider

+public class JAXBProvider implements Provider<Source> {

+    

+    /**

+     * Required impl method from javax.xml.ws.Provider interface

+     * @param obj

+     * @return

+     */

+    public Source invoke(Source obj) {

+        System.out.println(">> JAXB Provider Service: Request received.\n");

+        SendImage siRequest = null;

+        SendImageResponse siResponse = null;

+        StreamSource streamSource = null;

+        

+        try {

+        	//Create a request object

+            siRequest = new ObjectFactory().createSendImage();

+            

+            //Unmarshall recieved Source to get request param.

+            JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");

+            Unmarshaller um = jbc.createUnmarshaller();

+            siRequest = (SendImage)um.unmarshal(obj);

+            

+            //Create a response object

+            siResponse = new ObjectFactory().createSendImageResponse();

+            siResponse.setOutput(siRequest.getInput());

+            

+            //Marshall the response object and create a StreamSource from the 

+            //resulting byte array input stream

+            Marshaller m = jbc.createMarshaller();

+            ByteArrayOutputStream baos = new ByteArrayOutputStream();

+            m.marshal(siResponse, baos);

+            byte []bite = baos.toByteArray();

+            ByteArrayInputStream bais = new ByteArrayInputStream(bite);

+            streamSource = new StreamSource(bais);

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+

+        return streamSource;

+

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f4b568
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Manifest-Version: 1.0

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/META-INF/services.xml
new file mode 100644
index 0000000..da450e7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/jaxb/META-INF/services.xml
@@ -0,0 +1,11 @@
+<serviceGroup>

+ <service name="JAXBProviderService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.jaxb.JAXBProvider</parameter>

+  <operation name="sendImage" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f4b568
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Manifest-Version: 1.0

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/services.xml
new file mode 100644
index 0000000..37b5996
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="SoapMessageProviderService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.soapmsg.SoapMessageProvider</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java
new file mode 100644
index 0000000..2208c3c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java
@@ -0,0 +1,56 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider.soapmsg;

+

+import java.io.ByteArrayInputStream;

+

+import javax.xml.ws.Provider;

+import javax.xml.ws.Service;

+import javax.xml.ws.ServiceMode;

+import javax.xml.ws.WebServiceProvider;

+import javax.xml.soap.MessageFactory;

+import javax.xml.soap.SOAPMessage;

+

+@WebServiceProvider()

+@ServiceMode(value=Service.Mode.MESSAGE)

+public class SoapMessageProvider implements Provider<SOAPMessage> {

+    String responseAsString = new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header/><soapenv:Body><ns2:ReturnType xmlns:ns2=\"http://test\"><return_str>some response</return_str></ns2:ReturnType></soapenv:Body></soapenv:Envelope>");

+    public SOAPMessage invoke(SOAPMessage soapMessage) {

+    	System.out.println(">> SoapMessageProvider: Request received.");

+    	

+    	try{

+    	    // Look at the incoming request message

+            System.out.println(">> Request on Server:");

+            soapMessage.writeTo(System.out);

+            System.out.println("\n");

+            

+            // Build the outgoing response message

+            SOAPMessage message = null;

+            MessageFactory factory = MessageFactory.newInstance();

+            message = factory.createMessage(null, new ByteArrayInputStream(responseAsString.getBytes()));

+

+            System.out.println(">> Response being sent by Server:");

+            message.writeTo(System.out);

+            System.out.println("\n");

+            return message;

+    	}catch(Exception e){

+            System.out.println("***ERROR: In SoapMessageProvider.invoke: Caught exception " + e);

+    		e.printStackTrace();

+    	}

+    	return null;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..348f1bd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Manifest-Version: 1.0
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/META-INF/services.xml
new file mode 100644
index 0000000..759b6ff
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="SourceProviderService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.source.SourceProvider</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/SourceProvider.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/SourceProvider.java
new file mode 100644
index 0000000..6c61fa1
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/source/SourceProvider.java
@@ -0,0 +1,59 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider.source;

+

+import java.io.ByteArrayInputStream;

+import java.io.InputStream;

+import java.io.StringWriter;

+

+import javax.xml.ws.Provider;

+import javax.xml.ws.WebServiceProvider;

+import javax.xml.transform.Result;

+import javax.xml.transform.Source;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.transform.stream.StreamSource;

+

+import org.apache.axis2.jaxws.DispatchTestConstants;

+

+@WebServiceProvider()

+public class SourceProvider implements Provider<Source> {

+    String responseAsString = new String("<ns2:ReturnType xmlns:ns2=\"http://test\"><return_str>some response</return_str></ns2:ReturnType>");

+    public Source invoke(Source source) {

+    	System.out.println(">> SourceProvider: Request received.\n");

+    	//System.out.println(">> Source toString: \n"+source.toString());

+    	

+    	try{

+    		StringWriter writer = new StringWriter();

+	        Transformer t = TransformerFactory.newInstance().newTransformer();

+	        Result result = new StreamResult(writer);

+	        t.transform(source, result);

+	        System.out.println(">> Source Request on Server: \n"+writer.getBuffer().toString());

+	        

+	    	byte[] bytes = responseAsString.getBytes();

+	        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);

+	        Source srcStream = new StreamSource((InputStream) stream);

+	        return srcStream;

+    	}catch(Exception e){

+    		e.printStackTrace();

+    	}

+    	return null;

+    }

+    	

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f4b568
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Manifest-Version: 1.0

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/services.xml
new file mode 100644
index 0000000..e2bf160
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="SourceMessageProviderService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.sourcemsg.SourceMessageProvider</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/SourceMessageProvider.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/SourceMessageProvider.java
new file mode 100644
index 0000000..2285dae
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/sourcemsg/SourceMessageProvider.java
@@ -0,0 +1,62 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider.sourcemsg;

+

+import java.io.ByteArrayInputStream;

+import java.io.InputStream;

+import java.io.StringWriter;

+

+import javax.xml.ws.Provider;

+import javax.xml.ws.Service;

+import javax.xml.ws.ServiceMode;

+import javax.xml.ws.WebServiceProvider;

+import javax.xml.transform.Result;

+import javax.xml.transform.Source;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.transform.stream.StreamSource;

+

+import org.apache.axis2.jaxws.DispatchTestConstants;

+

+@WebServiceProvider()

+@ServiceMode(value=Service.Mode.MESSAGE)

+public class SourceMessageProvider implements Provider<Source> {

+    String responseAsString = new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header/><soapenv:Body><ns2:ReturnType xmlns:ns2=\"http://test\"><return_str>some response</return_str></ns2:ReturnType></soapenv:Body></soapenv:Envelope>");

+    public Source invoke(Source source) {

+    	System.out.println(">> SourceMessageProvider: Request received.");

+    	//System.out.println(">> Source toString: \n"+source.toString());

+    	

+    	try{

+    		StringWriter writer = new StringWriter();

+	        Transformer t = TransformerFactory.newInstance().newTransformer();

+	        Result result = new StreamResult(writer);

+	        t.transform(source, result);

+	        System.out.println(">> Source Request on Server: \n"+writer.getBuffer().toString());

+	        

+	    	byte[] bytes = responseAsString.getBytes();

+	        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);

+	        Source srcStream = new StreamSource((InputStream) stream);

+	        return srcStream;

+    	}catch(Exception e){

+    		e.printStackTrace();

+    	}

+    	return null;

+    }

+    	

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..348f1bd
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Manifest-Version: 1.0
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/META-INF/services.xml
new file mode 100644
index 0000000..b884809
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="StringProviderService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.string.StringProvider</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/StringProvider.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/StringProvider.java
new file mode 100644
index 0000000..d5add9b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/string/StringProvider.java
@@ -0,0 +1,39 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider.string;

+

+import javax.xml.ws.Provider;

+import javax.xml.ws.WebServiceProvider;

+

+@WebServiceProvider()

+public class StringProvider implements Provider<String> {

+

+    private static String responseGood = "<provider><message>request processed</message></provider>";

+    private static String responseBad  = "<provider><message>ERROR:null request received</message><provider>";

+    

+    public String invoke(String obj) {

+        if (obj != null) {

+            String str = (String) obj;

+            System.out.println(">> StringProvider received a new request");

+            System.out.println(">> request [" + str + "]");

+            

+            return responseGood;

+        }

+        System.out.println(">> ERROR:null request received");

+        return responseBad;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f4b568
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Manifest-Version: 1.0

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/services.xml
new file mode 100644
index 0000000..d68ca4b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="StringMessageProviderService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.provider.stringmsg.StringMessageProvider</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/StringMessageProvider.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/StringMessageProvider.java
new file mode 100644
index 0000000..7008d04
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/provider/stringmsg/StringMessageProvider.java
@@ -0,0 +1,41 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.provider.stringmsg;

+

+import javax.xml.ws.Provider;

+import javax.xml.ws.Service;

+import javax.xml.ws.ServiceMode;

+import javax.xml.ws.WebServiceProvider;

+

+@WebServiceProvider()

+@ServiceMode(value=Service.Mode.MESSAGE)

+public class StringMessageProvider implements Provider<String> {

+    private static String responseGood = "<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body><provider><message>request processed</message></provider></soapenv:Body></soapenv:Envelope>";

+    private static String responseBad  = "<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body><provider><message>ERROR:null request received</message><provider></soapenv:Body></soapenv:Envelope>";

+    

+    public String invoke(String obj) {

+        if (obj != null) {

+            String str = (String) obj;

+            System.out.println(">> StringMessageProvider received a new request");

+            System.out.println(">> request [" + str + "]");

+            

+            return responseGood;

+        }

+        System.out.println(">> ERROR:null request received");

+        return responseBad;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/DocLitnonWrappedImpl.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/DocLitnonWrappedImpl.java
new file mode 100644
index 0000000..1246c56
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/DocLitnonWrappedImpl.java
@@ -0,0 +1,40 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.proxy.doclitnonwrapped;

+

+import javax.xml.ws.Provider;

+import javax.xml.ws.WebServiceProvider;

+

+

+@WebServiceProvider()

+public class DocLitnonWrappedImpl implements Provider<String> {

+

+	

+	public DocLitnonWrappedImpl() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.ws.Provider#invoke(T)

+	 */

+	public String invoke(String invoke_str) {

+		System.out.println("End point called with String value =" + invoke_str);

+		return new String("<ns2:ReturnType xmlns:ns2=\"http://doclitnonwrapped.proxy.test.org\"><return_str>some response</return_str></ns2:ReturnType>");

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f4b568
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Manifest-Version: 1.0

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/proxy_doclit_unwr.wsdl b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/proxy_doclit_unwr.wsdl
new file mode 100644
index 0000000..c420297
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/proxy_doclit_unwr.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+	This is a copy of proxy_doclitwr.wsdl. Service and port names

+	have been chnaged to be Alpha compatible and endpoint address

+	has been changed

+-->

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://doclitnonwrapped.proxy.test.org"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="proxy"

+	targetNamespace="http://doclitnonwrapped.proxy.test.org">

+	

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://doclitnonwrapped.proxy.test.org"

+			xmlns:tns="http://doclitnonwrapped.proxy.test.org"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+			<xsd:element name="MyFault" type="xsd:string" />

+			

+			

+			

+			<xsd:element name="invoke">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="invoke_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>			

+			

+			<xsd:element name="ReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>				

+

+		</xsd:schema>

+	</wsdl:types>

+

+	

+	

+	<wsdl:message name="invokeRequest">

+		<wsdl:part name="allByMyself" element="tns:invoke" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>	

+	

+	<wsdl:portType name="DocLitnonWrappedProxy">

+

+		

+		<wsdl:operation name="invoke">

+			<wsdl:input message="tns:invokeRequest" />

+			<wsdl:output message="tns:invokeResponse" />

+		</wsdl:operation>		

+			

+	</wsdl:portType>

+	

+	<wsdl:binding name="ProxyDocLitnonWrapped" type="tns:DocLitnonWrappedProxy">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />		

+		<wsdl:operation name="invoke">

+			<soap:operation soapAction="http://doclitnonwrapped.proxy.test.org/invokeReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+	

+		</wsdl:operation>		

+	

+	</wsdl:binding>

+	

+	<wsdl:service name="ProxyDocLitUnwrappedService">

+		<wsdl:port binding="tns:ProxyDocLitnonWrapped" name="ProxyDocLitnonWrappedPort">

+			<soap:address location="http://@HOST@:@PORT@/jaxws.proxy/services/ProxyDocLitUnwrappedService" />

+		</wsdl:port>

+	</wsdl:service>

+	

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/services.xml
new file mode 100644
index 0000000..6df2447
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="ProxyDocLitUnwrappedService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.proxy.doclitnonwrapped.DocLitnonWrappedImpl</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/sei/DocLitnonWrappedProxy.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/sei/DocLitnonWrappedProxy.java
new file mode 100644
index 0000000..cd92122
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/sei/DocLitnonWrappedProxy.java
@@ -0,0 +1,66 @@
+

+package org.apache.axis2.jaxws.proxy.doclitnonwrapped.sei;

+

+import java.util.concurrent.Future;

+

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.jws.soap.SOAPBinding;

+import javax.jws.soap.SOAPBinding.ParameterStyle;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+

+import org.test.proxy.doclitnonwrapped.Invoke;

+import org.test.proxy.doclitnonwrapped.ReturnType;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "DocLitnonWrappedProxy", targetNamespace = "http://doclitnonwrapped.proxy.test.org")

+@SOAPBinding(parameterStyle = ParameterStyle.BARE)

+public interface DocLitnonWrappedProxy {

+	/**

+     * 

+     * @param allByMyself

+     * @return

+     *     returns javax.xml.ws.Response<org.test.proxy.doclitnonwrapped.ReturnType>

+     */

+    @WebMethod(operationName = "invoke", action = "http://doclitnonwrapped.proxy.test.org/invokeReturn")

+    public Response<ReturnType> invokeAsync(

+        @WebParam(name = "invoke", targetNamespace = "http://doclitnonwrapped.proxy.test.org", partName = "allByMyself")

+        Invoke allByMyself);

+

+    /**

+     * 

+     * @param allByMyself

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "invoke", action = "http://doclitnonwrapped.proxy.test.org/invokeReturn")

+    public Future<?> invokeAsync(

+        @WebParam(name = "invoke", targetNamespace = "http://doclitnonwrapped.proxy.test.org", partName = "allByMyself")

+        Invoke allByMyself,

+        @WebParam(name = "invokeResponse", targetNamespace = "", partName = "asyncHandler")

+        AsyncHandler<ReturnType> asyncHandler);

+

+

+    /**

+     * 

+     * @param allByMyself

+     * @return

+     *     returns org.test.proxy.doclitnonwrapped.ReturnType

+     */

+    @WebMethod(action = "http://doclitnonwrapped.proxy.test.org/invokeReturn")

+    @WebResult(name = "ReturnType", targetNamespace = "http://doclitnonwrapped.proxy.test.org", partName = "allByMyself")

+    public ReturnType invoke(

+        @WebParam(name = "invoke", targetNamespace = "http://doclitnonwrapped.proxy.test.org", partName = "allByMyself")

+        Invoke allByMyself);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/sei/ProxyDocLitUnwrappedService.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/sei/ProxyDocLitUnwrappedService.java
new file mode 100644
index 0000000..2466b3b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitnonwrapped/sei/ProxyDocLitUnwrappedService.java
@@ -0,0 +1,53 @@
+

+package org.apache.axis2.jaxws.proxy.doclitnonwrapped.sei;

+

+import java.net.MalformedURLException;

+import java.net.URL;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebServiceClient(name = "ProxyDocLitUnwrappedService", targetNamespace = "http://doclitnonwrapped.proxy.test.org", wsdlLocation = "proxy_doclit_unwr.wsdl")

+public class ProxyDocLitUnwrappedService

+    extends Service

+{

+

+    private final static URL PROXYDOCLITUNWRAPPEDSERVICE_WSDL_LOCATION;

+

+    static {

+        URL url = null;

+        try {

+            url = new URL("file:/C:/temp/proxy_doclit_unwr.wsdl");

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        PROXYDOCLITUNWRAPPEDSERVICE_WSDL_LOCATION = url;

+    }

+

+    public ProxyDocLitUnwrappedService(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public ProxyDocLitUnwrappedService() {

+        super(PROXYDOCLITUNWRAPPEDSERVICE_WSDL_LOCATION, new QName("http://doclitnonwrapped.proxy.test.org", "ProxyDocLitUnwrappedService"));

+    }

+

+    /**

+     * 

+     * @return

+     *     returns DocLitnonWrappedProxy

+     */

+    @WebEndpoint(name = "ProxyDocLitnonWrappedPort")

+    public DocLitnonWrappedProxy getProxyDocLitnonWrappedPort() {

+        return (DocLitnonWrappedProxy)super.getPort(new QName("http://doclitnonwrapped.proxy.test.org", "ProxyDocLitnonWrappedPort"), DocLitnonWrappedProxy.class);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/DocLitWrappedProxyImpl.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/DocLitWrappedProxyImpl.java
new file mode 100644
index 0000000..8e249e9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/DocLitWrappedProxyImpl.java
@@ -0,0 +1,30 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.proxy.doclitwrapped;

+

+import javax.xml.ws.Provider;

+import javax.xml.ws.WebServiceProvider;

+

+@WebServiceProvider()

+public class DocLitWrappedProxyImpl implements Provider<String> {

+

+	public String invoke(String invoke_str) {

+		// TODO Auto-generated method stub

+		System.out.println("End point called with String value =" + invoke_str);

+		return new String("<ns2:ReturnType xmlns:ns2=\"http://org.apache.axis2.proxy.doclitwrapped\"><return_str>some response</return_str></ns2:ReturnType>");

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/MANIFEST.MF b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f4b568
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Manifest-Version: 1.0

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/ProxyDocLitWrapped.wsdl b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/ProxyDocLitWrapped.wsdl
new file mode 100644
index 0000000..f17e534
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/ProxyDocLitWrapped.wsdl
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://org.apache.axis2.proxy.doclitwrapped"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="proxy"

+	targetNamespace="http://org.apache.axis2.proxy.doclitwrapped">

+

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://org.apache.axis2.proxy.doclitwrapped"

+			xmlns:tns="http://org.apache.axis2.proxy.doclitwrapped"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+			<xsd:element name="MyFault" type="xsd:string" />

+

+			<xsd:element name="oneWayVoid">

+				<xsd:complexType>

+					<xsd:sequence />

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="oneWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="oneway_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="twoWayHolder">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoWayHolder_str"

+							type="xsd:string" />

+						<xsd:element name="twoWayHolder_int"

+							type="xsd:int" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="twoWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoway_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			

+			<xsd:element name="ReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="invoke">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="invoke_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="invokeReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+

+			

+

+			<!-- fin op definition -->

+

+			<xsd:element name="finOp">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="op"

+							type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="finOpResponse">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="response"

+							type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:complexType name="FinancialOperation">

+				<xsd:sequence>

+					<xsd:element name="amount" type="xsd:float" />

+				</xsd:sequence>

+			</xsd:complexType>

+

+			<xsd:complexType name="Withdraw">

+				<xsd:complexContent>

+					<xsd:extension base="tns:FinancialOperation">

+						<xsd:sequence>

+							<xsd:element name="memo" type="xsd:string" />

+						</xsd:sequence>

+					</xsd:extension>

+				</xsd:complexContent>

+			</xsd:complexType>

+

+			<xsd:complexType name="Deposit">

+				<xsd:complexContent>

+					<xsd:extension base="tns:FinancialOperation">

+						<xsd:sequence>

+							<xsd:element name="status"

+								type="xsd:string" />

+						</xsd:sequence>

+					</xsd:extension>

+				</xsd:complexContent>

+			</xsd:complexType>

+

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="oneWayVoidRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />

+	</wsdl:message>

+

+	<wsdl:message name="oneWayRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderResponse">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeRequest">

+		<wsdl:part name="allByMyself" element="tns:invoke" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>

+

+	<wsdl:message name="finOpRequest">

+		<wsdl:part name="op" element="tns:finOp" />

+	</wsdl:message>

+

+	<wsdl:message name="finOpResponse">

+		<wsdl:part name="op" element="tns:finOpResponse" />

+	</wsdl:message>

+

+	<wsdl:portType name="DocLitWrappedProxy">

+

+		<wsdl:operation name="oneWayVoid">

+			<wsdl:input message="tns:oneWayVoidRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<wsdl:input message="tns:oneWayRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWayHolder">

+			<wsdl:input message="tns:twoWayHolderRequest" />

+			<wsdl:output message="tns:twoWayHolderResponse" />

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWay">

+			<wsdl:input message="tns:twoWayRequest" />

+			<wsdl:output message="tns:twoWayResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="invoke">

+			<wsdl:input message="tns:invokeRequest" />

+			<wsdl:output message="tns:invokeResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="finOp">

+			<wsdl:input message="tns:finOpRequest" />

+			<wsdl:output message="tns:finOpResponse" />

+		</wsdl:operation>

+

+	</wsdl:portType>

+

+	<wsdl:binding name="ProxyDocLitWrapped"

+		type="tns:DocLitWrappedProxy">

+		<soap:binding style="document"

+			transport="http://schemas.xmlsoap.org/soap/http" />

+

+		<wsdl:operation name="oneWayVoid">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWayHolder">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWay">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+		

+		<wsdl:operation name="invoke">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+		

+		<wsdl:operation name="finOp">

+			<soap:operation

+				soapAction="http://org.apache.axis2.proxy.doclitwrapped/finOp" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+

+	</wsdl:binding>

+

+	<wsdl:service name="ProxyDocLitWrappedService">

+		<wsdl:port binding="tns:ProxyDocLitWrapped"

+			name="ProxyDocLitWrappedPort">

+			<soap:address

+				location="http://localhost:9080/axis2/services/ProxyDocLitWrappedService/invoke" />

+		</wsdl:port>

+	</wsdl:service>

+

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/services.xml
new file mode 100644
index 0000000..da70833
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="ProxyDocLitWrappedService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.proxy.doclitwrapped.DocLitWrappedProxyImpl</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/sei/DocLitWrappedProxy.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/sei/DocLitWrappedProxy.java
new file mode 100644
index 0000000..1631bab
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/sei/DocLitWrappedProxy.java
@@ -0,0 +1,232 @@
+

+package org.apache.axis2.jaxws.proxy.doclitwrapped.sei;

+

+import java.util.concurrent.Future;

+

+import javax.jws.Oneway;

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.jws.WebParam.Mode;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Holder;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.Response;

+import javax.xml.ws.ResponseWrapper;

+

+import org.test.proxy.doclitwrapped.FinOpResponse;

+import org.test.proxy.doclitwrapped.FinancialOperation;

+import org.test.proxy.doclitwrapped.ReturnType;

+import org.test.proxy.doclitwrapped.TwoWayHolder;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "DocLitWrappedProxy", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped")

+public interface DocLitWrappedProxy {

+

+

+    /**

+     * 

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @Oneway

+    @RequestWrapper(localName = "oneWayVoid", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.OneWayVoid")

+    public void oneWayVoid();

+

+    /**

+     * 

+     * @param onewayStr

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @Oneway

+    @RequestWrapper(localName = "oneWay", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.sei.OneWay")

+    public void oneWay(

+        @WebParam(name = "oneway_str", targetNamespace = "")

+        String onewayStr);

+

+    /**

+     * 

+     * @param twoWayHolderInt

+     * @param twoWayHolderStr

+     * @return

+     *     returns javax.xml.ws.Response<org.apache.axis2.proxy.doclitwrapped.sei.TwoWayHolder>

+     */

+    @WebMethod(operationName = "twoWayHolder", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    @ResponseWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    public Response<TwoWayHolder> twoWayHolderAsync(

+        @WebParam(name = "twoWayHolder_str", targetNamespace = "")

+        String twoWayHolderStr,

+        @WebParam(name = "twoWayHolder_int", targetNamespace = "")

+        int twoWayHolderInt);

+

+    /**

+     * 

+     * @param twoWayHolderInt

+     * @param asyncHandler

+     * @param twoWayHolderStr

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "twoWayHolder", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    @ResponseWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    public Future<?> twoWayHolderAsync(

+        @WebParam(name = "twoWayHolder_str", targetNamespace = "")

+        String twoWayHolderStr,

+        @WebParam(name = "twoWayHolder_int", targetNamespace = "")

+        int twoWayHolderInt,

+        @WebParam(name = "asyncHandler", targetNamespace = "")

+        AsyncHandler<TwoWayHolder> asyncHandler);

+

+    /**

+     * 

+     * @param twoWayHolderInt

+     * @param twoWayHolderStr

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    @ResponseWrapper(localName = "twoWayHolder", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWayHolder")

+    public void twoWayHolder(

+        @WebParam(name = "twoWayHolder_str", targetNamespace = "", mode = Mode.INOUT)

+        Holder<String> twoWayHolderStr,

+        @WebParam(name = "twoWayHolder_int", targetNamespace = "", mode = Mode.INOUT)

+        Holder<Integer> twoWayHolderInt);

+

+    /**

+     * 

+     * @param twowayStr

+     * @return

+     *     returns javax.xml.ws.Response<org.apache.axis2.proxy.doclitwrapped.sei.ReturnType>

+     */

+    @WebMethod(operationName = "twoWay", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWay", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWay")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.sei.ReturnType")

+    public Response<ReturnType> twoWayAsync(

+        @WebParam(name = "twoway_str", targetNamespace = "")

+        String twowayStr);

+

+    /**

+     * 

+     * @param twowayStr

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "twoWay", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "twoWay", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWay")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public Future<?> twoWayAsync(

+        @WebParam(name = "twoway_str", targetNamespace = "")

+        String twowayStr,

+        @WebParam(name = "asyncHandler", targetNamespace = "")

+        AsyncHandler<ReturnType> asyncHandler);

+

+    /**

+     * 

+     * @param twowayStr

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @WebResult(name = "return_str", targetNamespace = "")

+    @RequestWrapper(localName = "twoWay", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.TwoWay")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public String twoWay(

+        @WebParam(name = "twoway_str", targetNamespace = "")

+        String twowayStr);

+

+

+    /**

+     * 

+     * @param invokeStr

+     * @return

+     *     returns javax.xml.ws.Response<org.apache.axis2.jaxws.proxy.doclitwrapped.sei.ReturnType>

+     */

+    @WebMethod(operationName = "invoke", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "invoke", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.Invoke")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public Response<ReturnType> invokeAsync(

+        @WebParam(name = "invoke_str", targetNamespace = "")

+        String invokeStr);

+

+    /**

+     * 

+     * @param invokeStr

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "invoke", action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @RequestWrapper(localName = "invoke", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.Invoke")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public Future<?> invokeAsync(

+        @WebParam(name = "invoke_str", targetNamespace = "")

+        String invokeStr,

+        @WebParam(name = "asyncHandler", targetNamespace = "")

+        AsyncHandler<ReturnType> asyncHandler);

+

+    /**

+     * 

+     * @param invokeStr

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/twoWayReturn")

+    @WebResult(name = "return_str", targetNamespace = "")

+    @RequestWrapper(localName = "invoke", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.Invoke")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.ReturnType")

+    public String invoke(

+        @WebParam(name = "invoke_str", targetNamespace = "")

+        String invokeStr);

+

+    /**

+     * 

+     * @param op

+     * @return

+     *     returns javax.xml.ws.Response<org.apache.axis2.proxy.doclitwrapped.sei.FinOpResponse>

+     */

+    @WebMethod(operationName = "finOp", action = "http://org.apache.axis2.proxy.doclitwrapped/finOp")

+    @RequestWrapper(localName = "finOp", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOp")

+    @ResponseWrapper(localName = "finOpResponse", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOpResponse")

+    public Response<FinOpResponse> finOpAsync(

+        @WebParam(name = "op", targetNamespace = "")

+        FinancialOperation op);

+

+    /**

+     * 

+     * @param op

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "finOp", action = "http://org.apache.axis2.proxy.doclitwrapped/finOp")

+    @RequestWrapper(localName = "finOp", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOp")

+    @ResponseWrapper(localName = "finOpResponse", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOpResponse")

+    public Future<?> finOpAsync(

+        @WebParam(name = "op", targetNamespace = "")

+        FinancialOperation op,

+        @WebParam(name = "asyncHandler", targetNamespace = "")

+        AsyncHandler<FinOpResponse> asyncHandler);

+

+    /**

+     * 

+     * @param op

+     * @return

+     *     returns org.apache.axis2.proxy.doclitwrapped.sei.FinancialOperation

+     */

+    @WebMethod(action = "http://org.apache.axis2.proxy.doclitwrapped/finOp")

+    @WebResult(name = "response", targetNamespace = "")

+    @RequestWrapper(localName = "finOp", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOp")

+    @ResponseWrapper(localName = "finOpResponse", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", className = "org.test.proxy.doclitwrapped.FinOpResponse")

+    public FinancialOperation finOp(

+        @WebParam(name = "op", targetNamespace = "")

+        FinancialOperation op);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/sei/ProxyDocLitWrappedService.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/sei/ProxyDocLitWrappedService.java
new file mode 100644
index 0000000..d593276
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/proxy/doclitwrapped/sei/ProxyDocLitWrappedService.java
@@ -0,0 +1,64 @@
+

+package org.apache.axis2.jaxws.proxy.doclitwrapped.sei;

+

+import java.io.File;

+import java.net.MalformedURLException;

+import java.net.URL;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+

+@WebServiceClient(name = "ProxyDocLitWrappedService", targetNamespace = "http://org.apache.axis2.proxy.doclitwrapped", wsdlLocation = "ProxyDocLitWrapped.wsdl")

+public class ProxyDocLitWrappedService

+    extends Service

+{

+

+    private final static URL PROXYDOCLITWRAPPEDSERVICE_WSDL_LOCATION;

+    private static String wsdlLocation = "/test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/ProxyDocLitWrapped.wsdl";

+    static {

+        URL url = null;

+        try {

+        	try{

+	        	String baseDir  = new File(".").getCanonicalPath();

+	        	wsdlLocation = new File(baseDir + wsdlLocation).getAbsolutePath();

+        	}catch(Exception e){

+        		

+        	}

+        	File file = new File(wsdlLocation);

+        	url = file.toURL();

+            

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        PROXYDOCLITWRAPPEDSERVICE_WSDL_LOCATION = url;

+    }

+

+    public ProxyDocLitWrappedService(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public ProxyDocLitWrappedService() {

+        super(PROXYDOCLITWRAPPEDSERVICE_WSDL_LOCATION, new QName("http://org.apache.axis2.proxy.doclitwrapped", "ProxyDocLitWrappedService"));

+    }

+

+    /**

+     * 

+     * @return

+     *     returns DocLitWrappedProxy

+     */

+    @WebEndpoint(name = "ProxyDocLitWrappedPort")

+    public DocLitWrappedProxy getProxyDocLitWrappedPort() {

+        return (DocLitWrappedProxy)super.getPort(new QName("http://org.apache.axis2.proxy.doclitwrapped", "ProxyDocLitWrappedPort"), DocLitWrappedProxy.class);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AddNumbersTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AddNumbersTests.java
new file mode 100644
index 0000000..a07bac1
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AddNumbersTests.java
@@ -0,0 +1,32 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample;

+

+import javax.xml.ws.BindingProvider;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.jaxws.sample.addnumbers.AddNumbersPortType;

+import org.apache.axis2.jaxws.sample.addnumbers.AddNumbersService;

+

+

+public class AddNumbersTests extends TestCase {

+	String axisEndpoint = "http://localhost:8080/axis2/services/AddNumbersService";

+	public void testAddNumbers(){

+		try{

+			System.out.println("----------------------------------");

+		    System.out.println("test: " + getName());

+			AddNumbersService service = new AddNumbersService();

+			AddNumbersPortType proxy = service.getAddNumbersPort();

+			BindingProvider p =	(BindingProvider)proxy;

+			p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);	

+			int total = proxy.addNumbers(10,10);

+			

+			System.out.println("Total =" +total);

+			System.out.println("----------------------------------");

+		}catch(Exception e){

+			e.printStackTrace();

+		}

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AddressBookTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AddressBookTests.java
new file mode 100644
index 0000000..5731e56
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AddressBookTests.java
@@ -0,0 +1,138 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample;

+

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.ws.BindingProvider;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+import javax.xml.ws.Service.Mode;

+import javax.xml.ws.soap.SOAPBinding;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.jaxws.sample.addressbook.AddEntry;

+import org.apache.axis2.jaxws.sample.addressbook.AddEntryResponse;

+import org.apache.axis2.jaxws.sample.addressbook.AddressBook;

+import org.apache.axis2.jaxws.sample.addressbook.AddressBookEntry;

+import org.apache.axis2.jaxws.sample.addressbook.ObjectFactory;

+

+/**

+ * This tests the AddressBook same service that exists under

+ * org.apache.axis2.jaxws.sample.addressbook.*

+ */

+public class AddressBookTests extends TestCase {

+

+    private static final String NAMESPACE = "http://org/apache/axis2/jaxws/sample/addressbook";

+    private static final QName QNAME_SERVICE = new QName(

+            NAMESPACE, "AddressBookService");

+    private static final QName QNAME_PORT = new QName(

+            NAMESPACE, "AddressBook");

+    private static final String URL_ENDPOINT = "http://localhost:8080/axis2/services/AddressBookService";

+    

+    /**

+     * Test the endpoint by invoking it with a JAX-WS Dispatch.  

+     */

+    public void testAddressBookWithDispatch() throws Exception {

+        System.out.println("----------------------------------");

+        System.out.println("test: " + getName());

+        

+        JAXBContext jbc = JAXBContext.newInstance("org.apache.axis2.jaxws.sample.addressbook");

+        

+        // Create the JAX-WS client needed to send the request

+        Service service = Service.create(QNAME_SERVICE);

+        service.addPort(QNAME_PORT, SOAPBinding.SOAP12HTTP_BINDING, URL_ENDPOINT);

+        Dispatch<Object> dispatch = service.createDispatch(

+                QNAME_PORT, jbc, Mode.PAYLOAD);

+                

+        // Create the JAX-B object that will hold the data

+        ObjectFactory factory = new ObjectFactory();

+        AddEntry request = factory.createAddEntry();

+        AddressBookEntry content = factory.createAddressBookEntry();

+        

+        content.setFirstName("Ron");

+        content.setLastName("Testerson");

+        content.setPhone("512-459-2222");

+        

+        // Since this is a doc/lit wrapped WSDL, we need to set the 

+        // data inside of a request wrapper element.

+        request.setEntry(content);

+        

+        AddEntryResponse response = (AddEntryResponse) dispatch.invoke(request);

+        

+        // Validate the results

+        assertNotNull(response);

+        assertTrue(response.isStatus());

+        System.out.println("[pass]     - valid response received");

+        System.out.println("[response] - " + response.isStatus());

+    }

+    

+    /**

+     * Test the "addEntry" operation.  This sends a complex type and returns

+     * a simple type.

+     */

+    public void testAddEntry() throws Exception {

+        System.out.println("----------------------------------");

+        System.out.println("test: " + getName());

+        

+        // Create the JAX-WS client needed to send the request

+        Service service = Service.create(QNAME_SERVICE);

+        AddressBook ab = service.getPort(QNAME_PORT, AddressBook.class);

+        BindingProvider p1 = (BindingProvider) ab;

+        p1.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, URL_ENDPOINT);

+        

+        ObjectFactory factory = new ObjectFactory();

+        AddressBookEntry content = factory.createAddressBookEntry();

+        content.setFirstName("Foo");

+        content.setLastName("Bar");

+        content.setPhone("512-459-2222");

+        

+        boolean added = ab.addEntry(content);

+        

+        // Validate the results

+        assertNotNull(added);

+        assertTrue(added);

+    }

+    

+    /**

+     * Test the "findEntryByName" operation.  This sends a simple type and 

+     * returns a complex type.

+     */

+    public void testFindEntryByName() throws Exception {

+        System.out.println("----------------------------------");

+        System.out.println("test: " + getName());

+        

+        // Create the JAX-WS client needed to send the request

+        Service service = Service.create(QNAME_SERVICE);

+        AddressBook ab = service.getPort(QNAME_PORT, AddressBook.class);

+        BindingProvider p1 = (BindingProvider) ab;

+        p1.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, URL_ENDPOINT);

+        

+        String fname = "Joe";

+        String lname = "Test";

+        AddressBookEntry result = ab.findEntryByName(fname, lname);

+        

+        // Validate the results

+        assertNotNull(result);

+        assertNotNull(result.getFirstName());

+        assertNotNull(result.getLastName());

+        assertTrue(result.getFirstName().equals(fname));

+        assertTrue(result.getLastName().equals(lname));

+    }

+    

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java
new file mode 100644
index 0000000..d74fca5
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java
@@ -0,0 +1,49 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample;

+

+import java.util.concurrent.ExecutionException;

+

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+

+import org.test.sample.nonwrap.ReturnType;

+

+

+

+/**

+ * @author nvthaker

+ *

+ */

+public class AsyncCallback implements AsyncHandler {

+

+	/**

+	 * 

+	 */

+	public AsyncCallback() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.ws.AsyncHandler#handleResponse(javax.xml.ws.Response)

+	 */

+	public void handleResponse(Response response) {

+		try{

+			Object obj = response.get();

+			if(obj instanceof ReturnType){

+				ReturnType type = (ReturnType)obj;

+				System.out.println(">>Return String = "+type.getReturnStr());

+				return;

+			}

+			

+		}catch(ExecutionException e){

+			e.printStackTrace();

+		}catch(InterruptedException e){

+			e.printStackTrace();

+		}

+

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java
new file mode 100644
index 0000000..0c0ad45
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java
@@ -0,0 +1,35 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample;

+

+import javax.xml.ws.BindingProvider;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.jaxws.sample.doclitbare.sei.BareDocLitService;

+import org.apache.axis2.jaxws.sample.doclitbare.sei.DocLitBarePortType;

+

+

+public class BareTests extends TestCase {

+	

+	public void testTwoWaySync(){

+		System.out.println("------------------------------");

+		System.out.println("Test : "+getName());

+		try{

+			

+			BareDocLitService service = new BareDocLitService();

+			DocLitBarePortType proxy = service.getBareDocLitPort();

+			 BindingProvider p = (BindingProvider) proxy;

+	            p.getRequestContext().put(

+	                    BindingProvider.SOAPACTION_URI_PROPERTY, new Boolean(true));

+	            p.getRequestContext().put(

+	                    BindingProvider.SOAPACTION_URI_PROPERTY, "twoWaySimple");

+			String response = proxy.twoWaySimple(10);

+			System.out.println("Sync Response =" + response);

+			System.out.println("------------------------------");

+		}catch(Exception e){

+			e.printStackTrace();

+		}

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/MtomSampleTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/MtomSampleTests.java
new file mode 100644
index 0000000..616af83
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/MtomSampleTests.java
@@ -0,0 +1,72 @@
+package org.apache.axis2.jaxws.sample;

+

+import java.awt.Image;

+import java.io.File;

+

+import javax.activation.DataHandler;

+import javax.activation.DataSource;

+import javax.imageio.ImageIO;

+import javax.imageio.stream.FileImageInputStream;

+import javax.imageio.stream.ImageInputStream;

+import javax.xml.bind.JAXBContext;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Dispatch;

+import javax.xml.ws.Service;

+import javax.xml.ws.Service.Mode;

+import javax.xml.ws.soap.SOAPBinding;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.jaxws.provider.DataSourceImpl;

+import org.test.mtom.ImageDepot;

+import org.test.mtom.ObjectFactory;

+import org.test.mtom.SendImage;

+import org.test.mtom.SendImageResponse;

+

+public class MtomSampleTests extends TestCase {

+

+    private static final QName QNAME_SERVICE = new QName("urn://mtom.test.org", "MtomSampleService");

+    private static final QName QNAME_PORT    = new QName("urn://mtom.test.org", "MtomSample");

+    private static final String URL_ENDPOINT = "http://localhost:8080/axis2/services/MtomSampleService";

+    

+    public void testSendImageAttachment() throws Exception {

+        System.out.println("----------------------------------");

+        System.out.println("test: " + getName());

+        

+        String imageResourceDir = "test-resources"+File.separator+"image";

+        

+        //Create a DataSource from an image 

+        File file = new File(imageResourceDir+File.separator+"test.jpg");

+        ImageInputStream fiis = new FileImageInputStream(file);

+        Image image = ImageIO.read(fiis);

+        DataSource imageDS = new DataSourceImpl("image/jpeg","test.jpg",image);

+        

+        //Create a DataHandler with the String DataSource object

+        DataHandler dataHandler = new DataHandler(imageDS);

+        

+        //Store the data handler in ImageDepot bean

+        ImageDepot imageDepot = new ObjectFactory().createImageDepot();

+        imageDepot.setImageData(dataHandler);

+        

+        SendImage request = new ObjectFactory().createSendImage();

+        request.setInput(imageDepot);

+        

+        //Create the necessary JAXBContext

+        JAXBContext jbc = JAXBContext.newInstance("org.test.mtom");

+        

+        // Create the JAX-WS client needed to send the request

+        Service service = Service.create(QNAME_SERVICE);

+        service.addPort(QNAME_PORT, SOAPBinding.SOAP11HTTP_BINDING, URL_ENDPOINT);

+        Dispatch<Object> dispatch = service.createDispatch(

+                QNAME_PORT, jbc, Mode.PAYLOAD);

+        

+        SOAPBinding binding = (SOAPBinding) dispatch.getBinding();

+        binding.setMTOMEnabled(true);

+        

+        SendImageResponse response = (SendImageResponse) dispatch.invoke(request);

+        

+        assertNotNull(response);

+        assertNotNull(response.getOutput().getImageData());

+    }

+    

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java
new file mode 100644
index 0000000..016e714
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java
@@ -0,0 +1,63 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample;

+

+import java.util.concurrent.Future;

+

+import org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType;

+import org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapService;

+import org.test.sample.nonwrap.ObjectFactory;

+import org.test.sample.nonwrap.ReturnType;

+import org.test.sample.nonwrap.TwoWay;

+

+import junit.framework.TestCase;

+

+public class NonWrapTests extends TestCase {

+

+	

+	public NonWrapTests() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/**

+	 * @param arg0

+	 */

+	public NonWrapTests(String arg0) {

+		super(arg0);

+		// TODO Auto-generated constructor stub

+	}

+	

+	public void testTwoWaySync(){

+		System.out.println("------------------------------");

+		System.out.println("Test : "+getName());

+		try{

+			TwoWay twoWay = new ObjectFactory().createTwoWay();

+			twoWay.setTwowayStr("testing sync call for java bean non wrap endpoint");

+			DocLitNonWrapService service = new DocLitNonWrapService();

+			DocLitNonWrapPortType proxy = service.getDocLitNonWrapPort();

+			ReturnType returnValue = proxy.twoWay(twoWay);

+			System.out.println(returnValue.getReturnStr());

+			System.out.println("------------------------------");

+		}catch(Exception e){

+			e.printStackTrace();

+		}

+	}

+	public void testTwoWayASyncCallback(){

+		System.out.println("------------------------------");

+		System.out.println("Test : "+getName());

+		try{

+			TwoWay twoWay = new ObjectFactory().createTwoWay();

+			twoWay.setTwowayStr("testing Async call for java bean non wrap endpoint");

+			DocLitNonWrapService service = new DocLitNonWrapService();

+			DocLitNonWrapPortType proxy = service.getDocLitNonWrapPort();

+			AsyncCallback callback = new AsyncCallback();

+			Future<?> monitor = proxy.twoWayAsync(twoWay, callback);

+			assertNotNull(monitor);

+			System.out.println("------------------------------");

+		}catch(Exception e){

+			e.printStackTrace();

+		}

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java
new file mode 100644
index 0000000..c009406
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java
@@ -0,0 +1,63 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample;

+

+import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap;

+import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrapService;

+

+import junit.framework.TestCase;

+

+/**

+ * @author nvthaker

+ *

+ */

+public class WrapTests extends TestCase {

+

+	/**

+	 * 

+	 */

+	public WrapTests() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/**

+	 * @param arg0

+	 */

+	public WrapTests(String arg0) {

+		super(arg0);

+		// TODO Auto-generated constructor stub

+	}

+	

+	public void testTwoWaySync(){

+		System.out.println("------------------------------");

+		System.out.println("Test : "+getName());

+		try{

+			String reqString = "Test twoWay Sync";

+			DocLitWrapService service = new DocLitWrapService();

+			DocLitWrap proxy = service.getDocLitWrapPort();

+			String response = proxy.twoWay(reqString);

+			System.out.println("Sync Response =" + response);

+			System.out.println("------------------------------");

+		}catch(Exception e){

+			e.printStackTrace();

+		}

+	}

+	

+	public void testOneWayVoidWithNoInputParams(){

+		System.out.println("------------------------------");

+		System.out.println("Test : "+getName());

+		try{

+			

+			DocLitWrapService service = new DocLitWrapService();

+			DocLitWrap proxy = service.getDocLitWrapPort();

+			proxy.oneWayVoid();

+			

+			System.out.println("------------------------------");

+		}catch(Exception e){

+			e.printStackTrace();

+		}

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersFault_Exception.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersFault_Exception.java
new file mode 100644
index 0000000..9755439
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersFault_Exception.java
@@ -0,0 +1,56 @@
+

+package org.apache.axis2.jaxws.sample.addnumbers;

+

+import javax.xml.ws.WebFault;

+

+import org.test.addnumbers.AddNumbersFault;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebFault(faultBean="", name = "AddNumbersFault", targetNamespace = "http://duke/org")

+public class AddNumbersFault_Exception

+    extends Exception

+{

+

+    /**

+     * Java type that goes as soapenv:Fault detail element.

+     * 

+     */

+    private AddNumbersFault faultInfo;

+

+    /**

+     * 

+     * @param faultInfo

+     * @param message

+     */

+    public AddNumbersFault_Exception(String message, AddNumbersFault faultInfo) {

+        super(message);

+        this.faultInfo = faultInfo;

+    }

+

+    /**

+     * 

+     * @param faultInfo

+     * @param message

+     * @param cause

+     */

+    public AddNumbersFault_Exception(String message, AddNumbersFault faultInfo, Throwable cause) {

+        super(message, cause);

+        this.faultInfo = faultInfo;

+    }

+

+    /**

+     * 

+     * @return

+     *     returns fault bean: duke.org.AddNumbersFault

+     */

+    public AddNumbersFault getFaultInfo() {

+        return faultInfo;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersPortType.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersPortType.java
new file mode 100644
index 0000000..5bb6815
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersPortType.java
@@ -0,0 +1,56 @@
+

+package org.apache.axis2.jaxws.sample.addnumbers;

+

+import javax.jws.Oneway;

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+

+

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "AddNumbersPortType", targetNamespace = "http://org/test/addnumbers")

+public interface AddNumbersPortType {

+

+

+    /**

+     * 

+     * @param arg1

+     * @param arg0

+     * @return

+     *     returns int

+     * @throws AddNumbersFault_Exception

+     */

+    @WebMethod

+    @WebResult(targetNamespace = "http://org/test/addnumbers")

+    @RequestWrapper(localName = "addNumbers", targetNamespace = "http://org/test/addnumbers", className = "org.test.addnumbers.AddNumbers")

+    @ResponseWrapper(localName = "addNumbersResponse", targetNamespace = "http://org/test/addnumbers", className = "org.test.addnumbers.AddNumbersResponse")

+    public int addNumbers(

+        @WebParam(name = "arg0", targetNamespace = "http://org/test/addnumbers")

+        int arg0,

+        @WebParam(name = "arg1", targetNamespace = "http://org/test/addnumbers")

+        int arg1)

+        throws AddNumbersFault_Exception

+    ;

+

+    /**

+     * 

+     * @param arg0

+     */

+    @WebMethod

+    @Oneway

+    @RequestWrapper(localName = "oneWayInt", targetNamespace = "http://org/test/addnumbers", className = "org.test.addnumbers.OneWayInt")

+    public void oneWayInt(

+        @WebParam(name = "arg0", targetNamespace = "http://org/test/addnumbers")

+        int arg0);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersPortTypeImpl.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersPortTypeImpl.java
new file mode 100644
index 0000000..2ec1972
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersPortTypeImpl.java
@@ -0,0 +1,29 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample.addnumbers;

+

+import javax.jws.WebService;

+

+

+@WebService(endpointInterface="org.apache.axis2.jaxws.sample.addnumbers.AddNumbersPortType")

+public class AddNumbersPortTypeImpl implements AddNumbersPortType {

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.addnumbers.AddNumbersPortType#addNumbers(int, int)

+	 */

+	public int addNumbers(int arg0, int arg1) throws AddNumbersFault_Exception {

+		// TODO Auto-generated method stub

+		return arg0+arg1;

+		

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.addnumbers.AddNumbersPortType#oneWayInt(int)

+	 */

+	public void oneWayInt(int arg0) {

+		// TODO Auto-generated method stub

+

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersService.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersService.java
new file mode 100644
index 0000000..0280de6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/AddNumbersService.java
@@ -0,0 +1,61 @@
+

+package org.apache.axis2.jaxws.sample.addnumbers;

+

+import java.io.File;

+import java.net.MalformedURLException;

+import java.net.URL;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebServiceClient(name = "AddNumbersService", targetNamespace = "http://duke/org", wsdlLocation = "AddNumbers1.wsdl")

+public class AddNumbersService

+    extends Service

+{

+

+    private final static URL ADDNUMBERSSERVICE_WSDL_LOCATION;

+    private static String wsdlLocation="/test/org/apache/axis2/jaxws/sample/addnumbers/META-INF/AddNumbers.wsdl";

+    static {

+        URL url = null;

+        try {

+        	try{

+	        	String baseDir = new File(".").getCanonicalPath();

+	        	wsdlLocation = new File(baseDir + wsdlLocation).getAbsolutePath();

+        	}catch(Exception e){

+        		e.printStackTrace();

+        	}

+        	File file = new File(wsdlLocation);

+        	url = file.toURL();

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        ADDNUMBERSSERVICE_WSDL_LOCATION = url;

+    }

+

+    public AddNumbersService(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public AddNumbersService() {

+        super(ADDNUMBERSSERVICE_WSDL_LOCATION, new QName("http://duke/org", "AddNumbersService"));

+    }

+

+    /**

+     * 

+     * @return

+     *     returns AddNumbersPortType

+     */

+    @WebEndpoint(name = "AddNumbersPort")

+    public AddNumbersPortType getAddNumbersPort() {

+        return (AddNumbersPortType)super.getPort(new QName("http://duke/org", "AddNumbersPort"), AddNumbersPortType.class);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/META-INF/AddNumbers.wsdl b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/META-INF/AddNumbers.wsdl
new file mode 100644
index 0000000..38fb054
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/META-INF/AddNumbers.wsdl
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>

+

+

+<definitions name="AddNumbers" targetNamespace="http://duke/org"

+	xmlns:tns="http://duke/org" xmlns="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

+

+

+	<types>

+		<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"

+			elementFormDefault="qualified" targetNamespace="http://duke/org">

+			<element name="addNumbersResponse">

+				<complexType>

+					<sequence>

+						<element name="return" type="xsd:int" />

+					</sequence>

+				</complexType>

+			</element>

+

+			<element name="addNumbers">

+				<complexType>

+					<sequence>

+						<element name="arg0" type="xsd:int" />

+						<element name="arg1" type="xsd:int" />

+					</sequence>

+				</complexType>

+			</element>

+

+			<element name="AddNumbersFault">

+				<complexType>

+					<sequence>

+						<element name="faultInfo" type="xsd:string" />

+						<element name="message" type="xsd:string" />

+					</sequence>

+				</complexType>

+			</element>

+

+			<element name="oneWayInt">

+				<complexType>

+					<sequence>

+						<element name="arg0" type="xsd:int" />

+					</sequence>

+				</complexType>

+			</element>

+

+		</xsd:schema>

+	</types>

+

+	<message name="addNumbers">

+		<part name="parameters" element="tns:addNumbers" />

+	</message>

+	<message name="addNumbersResponse">

+		<part name="result" element="tns:addNumbersResponse" />

+	</message>

+	<message name="addNumbersFault">

+		<part name="AddNumbersFault" element="tns:AddNumbersFault" />

+	</message>

+	<message name="oneWayInt">

+		<part name="parameters" element="tns:oneWayInt" />

+	</message>

+

+	<portType name="AddNumbersPortType">

+		<operation name="addNumbers">

+			<input message="tns:addNumbers" name="add" />

+			<output message="tns:addNumbersResponse" name="addResponse" />

+			<fault name="addNumbersFault" message="tns:addNumbersFault" />

+		</operation>

+		<operation name="oneWayInt">

+			<input message="tns:oneWayInt" />

+		</operation>

+	</portType>

+	<binding name="AddNumbersBinding" type="tns:AddNumbersPortType">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"

+			style="document" />

+		<operation name="addNumbers">

+			<soap:operation soapAction="" />

+			<input>

+				<soap:body use="literal" />

+			</input>

+			<output>

+				<soap:body use="literal" />

+			</output>

+			<fault name="addNumbersFault">

+				<soap:fault name="addNumbersFault" use="literal" />

+			</fault>

+		</operation>

+		<operation name="oneWayInt">

+			<soap:operation soapAction="" />

+			<input>

+				<soap:body use="literal" />

+			</input>

+		</operation>

+	</binding>

+	<service name="AddNumbersService">

+		<port name="AddNumbersPort" binding="tns:AddNumbersBinding">

+			<soap:address

+				location="http://localhost:9080/AddNumber/AddNumbersImplService" />

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/META-INF/services.xml
new file mode 100644
index 0000000..74634f8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addnumbers/META-INF/services.xml
@@ -0,0 +1,14 @@
+<serviceGroup>

+ <service name="AddNumbersService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.sample.addnumbers.AddNumbersPortTypeImpl</parameter>

+  <operation name="addNumbers" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+  <operation name="oneWayInt" mep="http://www.w3.org/2004/08/wsdl/in-only">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddEntry.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddEntry.java
new file mode 100644
index 0000000..16f9f21
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddEntry.java
@@ -0,0 +1,81 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample.addressbook;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlRootElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for addEntry element declaration.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;element name="addEntry">

+ *   &lt;complexType>

+ *     &lt;complexContent>

+ *       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *         &lt;sequence>

+ *           &lt;element name="entry" type="{http://org/apache/axis2/jaxws/sample/addressbook}AddressBookEntry"/>

+ *         &lt;/sequence>

+ *       &lt;/restriction>

+ *     &lt;/complexContent>

+ *   &lt;/complexType>

+ * &lt;/element>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "", propOrder = {

+    "entry"

+})

+@XmlRootElement(name = "addEntry")

+public class AddEntry {

+

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true)

+    protected AddressBookEntry entry;

+

+    /**

+     * Gets the value of the entry property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link AddressBookEntry }

+     *     

+     */

+    public AddressBookEntry getEntry() {

+        return entry;

+    }

+

+    /**

+     * Sets the value of the entry property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link AddressBookEntry }

+     *     

+     */

+    public void setEntry(AddressBookEntry value) {

+        this.entry = value;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddEntryResponse.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddEntryResponse.java
new file mode 100644
index 0000000..eb0917c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddEntryResponse.java
@@ -0,0 +1,73 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample.addressbook;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlRootElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for addEntryResponse element declaration.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;element name="addEntryResponse">

+ *   &lt;complexType>

+ *     &lt;complexContent>

+ *       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *         &lt;sequence>

+ *           &lt;element name="status" type="{http://www.w3.org/2001/XMLSchema}boolean"/>

+ *         &lt;/sequence>

+ *       &lt;/restriction>

+ *     &lt;/complexContent>

+ *   &lt;/complexType>

+ * &lt;/element>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "", propOrder = {

+    "status"

+})

+@XmlRootElement(name = "addEntryResponse")

+public class AddEntryResponse {

+

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook")

+    protected boolean status;

+

+    /**

+     * Gets the value of the status property.

+     * 

+     */

+    public boolean isStatus() {

+        return status;

+    }

+

+    /**

+     * Sets the value of the status property.

+     * 

+     */

+    public void setStatus(boolean value) {

+        this.status = value;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBook.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBook.java
new file mode 100644
index 0000000..896a3d8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBook.java
@@ -0,0 +1,63 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample.addressbook;

+

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+

+@WebService(name = "AddressBook", 

+            targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook", 

+            wsdlLocation = "\\work\\apps\\eclipse\\workspace\\axis2\\modules\\jaxws\\test\\org\\apache\\axis2\\jaxws\\sample\\addressbook\\META-INF\\AddressBookService.wsdl")

+public interface AddressBook {

+

+

+    /**

+     * 

+     * @param entry

+     * @return

+     *     returns boolean

+     */

+    @WebMethod

+    @WebResult(name = "status", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook")

+    @RequestWrapper(localName = "addEntry", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook", className = "org.apache.axis2.jaxws.sample.addressbook.AddEntry")

+    @ResponseWrapper(localName = "addEntryResponse", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook", className = "org.apache.axis2.jaxws.sample.addressbook.AddEntryResponse")

+    public boolean addEntry(

+        @WebParam(name = "entry", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook")

+        AddressBookEntry entry);

+

+    /**

+     * 

+     * @param firstname

+     * @param lastname

+     * @return

+     *     returns org.apache.axis2.jaxws.sample.addressbook.AddressBookEntry

+     */

+    @WebMethod

+    @WebResult(name = "entry", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook")

+    @RequestWrapper(localName = "findEntryByName", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook", className = "org.apache.axis2.jaxws.sample.addressbook.FindEntryByName")

+    @ResponseWrapper(localName = "findEntryByNameResponse", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook", className = "org.apache.axis2.jaxws.sample.addressbook.FindEntryByNameResponse")

+    public AddressBookEntry findEntryByName(

+        @WebParam(name = "firstname", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook")

+        String firstname,

+        @WebParam(name = "lastname", targetNamespace = "http://org/apache/axis2/jaxws/sample/addressbook")

+        String lastname);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBookEntry.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBookEntry.java
new file mode 100644
index 0000000..2327f74
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBookEntry.java
@@ -0,0 +1,217 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample.addressbook;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for AddressBookEntry complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="AddressBookEntry">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="firstName" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *         &lt;element name="lastName" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *         &lt;element name="phone" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *         &lt;element name="street" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *         &lt;element name="city" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *         &lt;element name="state" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "AddressBookEntry", propOrder = {

+    "firstName",

+    "lastName",

+    "phone",

+    "street",

+    "city",

+    "state"

+})

+public class AddressBookEntry {

+

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true)

+    protected String firstName;

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true)

+    protected String lastName;

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true, nillable = true)

+    protected String phone;

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true, nillable = true)

+    protected String street;

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true, nillable = true)

+    protected String city;

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true, nillable = true)

+    protected String state;

+

+    /**

+     * Gets the value of the firstName property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getFirstName() {

+        return firstName;

+    }

+

+    /**

+     * Sets the value of the firstName property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setFirstName(String value) {

+        this.firstName = value;

+    }

+

+    /**

+     * Gets the value of the lastName property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getLastName() {

+        return lastName;

+    }

+

+    /**

+     * Sets the value of the lastName property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setLastName(String value) {

+        this.lastName = value;

+    }

+

+    /**

+     * Gets the value of the phone property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getPhone() {

+        return phone;

+    }

+

+    /**

+     * Sets the value of the phone property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setPhone(String value) {

+        this.phone = value;

+    }

+

+    /**

+     * Gets the value of the street property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getStreet() {

+        return street;

+    }

+

+    /**

+     * Sets the value of the street property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setStreet(String value) {

+        this.street = value;

+    }

+

+    /**

+     * Gets the value of the city property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getCity() {

+        return city;

+    }

+

+    /**

+     * Sets the value of the city property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setCity(String value) {

+        this.city = value;

+    }

+

+    /**

+     * Gets the value of the state property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getState() {

+        return state;

+    }

+

+    /**

+     * Sets the value of the state property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setState(String value) {

+        this.state = value;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBookImpl.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBookImpl.java
new file mode 100644
index 0000000..21e61a4
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/AddressBookImpl.java
@@ -0,0 +1,88 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample.addressbook;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+

+import javax.jws.WebService;

+

+@WebService(endpointInterface="org.apache.axis2.jaxws.sample.addressbook.AddressBook")

+public class AddressBookImpl implements AddressBook {

+

+    private static ArrayList<AddressBookEntry> data;

+    

+    static {

+        data = new ArrayList<AddressBookEntry>();

+        

+        ObjectFactory factory = new ObjectFactory();

+        AddressBookEntry entry = factory.createAddressBookEntry();

+        entry.setFirstName("Joe");

+        entry.setLastName("Test");

+        entry.setStreet("1214 Test Ln.");

+        entry.setCity("Austin");

+        entry.setState("TX");

+        data.add(entry);

+        

+        entry = factory.createAddressBookEntry();

+        entry.setFirstName("Sue");

+        entry.setLastName("Testfield");

+        entry.setStreet("780 1st St.");

+        entry.setCity("New York");

+        entry.setState("NY");

+        data.add(entry);

+    }

+    

+    public boolean addEntry(AddressBookEntry entry) {

+        if (entry != null) {

+            System.out.println("New AddressBookEntry received");

+            System.out.println("       [name] " + entry.getLastName() + ", " + entry.getFirstName());

+            System.out.println("      [phone] " + entry.getPhone());

+            System.out.println("     [street] " + entry.getStreet());

+            System.out.println("[city, state] " + entry.getCity() + ", " + entry.getState());

+            data.add(entry);

+            return true;

+        }

+        else {

+            return false;

+        }

+    }

+

+    public AddressBookEntry findEntryByName(String firstname, String lastname) {

+        System.out.println("New request received.");

+        System.out.println("Looking for entry: [" + firstname + "] [" + lastname + "]");

+        Iterator<AddressBookEntry> i = data.iterator();

+        while (i.hasNext()) {

+            AddressBookEntry entry = i.next();

+            

+            //If they have a firstname and it doesn't match, just go on

+            //to the next entry.

+            if (firstname != null) {

+                if (!firstname.equals(entry.getFirstName()))

+                    continue;                    

+            }

+            

+            if (lastname != null) {

+                if (lastname.equals(entry.getLastName()))

+                    return entry;

+            }

+        }

+        

+        return null;

+    }

+    

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/FindEntryByName.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/FindEntryByName.java
new file mode 100644
index 0000000..7cf4f9a
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/FindEntryByName.java
@@ -0,0 +1,109 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample.addressbook;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlRootElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for findEntryByName element declaration.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;element name="findEntryByName">

+ *   &lt;complexType>

+ *     &lt;complexContent>

+ *       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *         &lt;sequence>

+ *           &lt;element name="firstname" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *           &lt;element name="lastname" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *         &lt;/sequence>

+ *       &lt;/restriction>

+ *     &lt;/complexContent>

+ *   &lt;/complexType>

+ * &lt;/element>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "", propOrder = {

+    "firstname",

+    "lastname"

+})

+@XmlRootElement(name = "findEntryByName")

+public class FindEntryByName {

+

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true, nillable = true)

+    protected String firstname;

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true)

+    protected String lastname;

+

+    /**

+     * Gets the value of the firstname property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getFirstname() {

+        return firstname;

+    }

+

+    /**

+     * Sets the value of the firstname property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setFirstname(String value) {

+        this.firstname = value;

+    }

+

+    /**

+     * Gets the value of the lastname property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getLastname() {

+        return lastname;

+    }

+

+    /**

+     * Sets the value of the lastname property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setLastname(String value) {

+        this.lastname = value;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/FindEntryByNameResponse.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/FindEntryByNameResponse.java
new file mode 100644
index 0000000..4c7f2fb
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/FindEntryByNameResponse.java
@@ -0,0 +1,81 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample.addressbook;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlRootElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for findEntryByNameResponse element declaration.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;element name="findEntryByNameResponse">

+ *   &lt;complexType>

+ *     &lt;complexContent>

+ *       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *         &lt;sequence>

+ *           &lt;element name="entry" type="{http://org/apache/axis2/jaxws/sample/addressbook}AddressBookEntry"/>

+ *         &lt;/sequence>

+ *       &lt;/restriction>

+ *     &lt;/complexContent>

+ *   &lt;/complexType>

+ * &lt;/element>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "", propOrder = {

+    "entry"

+})

+@XmlRootElement(name = "findEntryByNameResponse")

+public class FindEntryByNameResponse {

+

+    @XmlElement(namespace = "http://org/apache/axis2/jaxws/sample/addressbook", required = true)

+    protected AddressBookEntry entry;

+

+    /**

+     * Gets the value of the entry property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link AddressBookEntry }

+     *     

+     */

+    public AddressBookEntry getEntry() {

+        return entry;

+    }

+

+    /**

+     * Sets the value of the entry property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link AddressBookEntry }

+     *     

+     */

+    public void setEntry(AddressBookEntry value) {

+        this.entry = value;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/META-INF/AddressBookService.wsdl b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/META-INF/AddressBookService.wsdl
new file mode 100644
index 0000000..c662e85
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/META-INF/AddressBookService.wsdl
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions targetNamespace="http://org/apache/axis2/jaxws/sample/addressbook" 

+    xmlns:impl="http://org/apache/axis2/jaxws/sample/addressbook" 

+    xmlns:intf="http://org/apache/axis2/jaxws/sample/addressbook" 

+    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 elementFormDefault="qualified" targetNamespace="http://org/apache/axis2/jaxws/sample/addressbook" 

+         xmlns="http://www.w3.org/2001/XMLSchema" 

+         xmlns:impl="http://org/apache/axis2/jaxws/sample/addressbook" 

+         xmlns:intf="http://org/apache/axis2/jaxws/sample/addressbook" 

+         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

+         xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+       <complexType name="AddressBookEntry">

+         <sequence>

+           <element name="firstName" nillable="false" type="xsd:string"/>

+           <element name="lastName" nillable="false" type="xsd:string"/>

+           <element name="phone" nillable="true" type="xsd:string"/>

+           <element name="street" nillable="true" type="xsd:string"/>

+           <element name="city" nillable="true" type="xsd:string"/>

+           <element name="state" nillable="true" type="xsd:string"/>

+         </sequence>

+       </complexType>

+    

+       <element name="addEntry">

+         <complexType>

+           <sequence>

+             <element name="entry" nillable="false" type="impl:AddressBookEntry"/>

+           </sequence>

+         </complexType>

+       </element>

+    

+       <element name="addEntryResponse">

+         <complexType>

+           <sequence>

+             <element name="status" nillable="false" type="xsd:boolean"/>

+           </sequence>

+         </complexType>

+       </element>

+

+       <element name="findEntryByName">

+         <complexType>

+           <sequence>

+             <element name="firstname" nillable="false" type="xsd:string"/>

+             <element name="lastname" nillable="false" type="xsd:string"/>

+           </sequence>

+         </complexType>

+       </element>

+       

+       <element name="findEntryByNameResponse">

+         <complexType>

+           <sequence>

+             <element name="entry" nillable="false" type="impl:AddressBookEntry"/>

+           </sequence>

+         </complexType>

+       </element>

+

+     </schema>

+   </wsdl:types>

+ 

+  <wsdl:message name="addEntryRequest">

+    <wsdl:part element="impl:addEntry" name="parameters"/>

+  </wsdl:message>

+ 

+  <wsdl:message name="addEntryResponse">

+    <wsdl:part element="impl:addEntryResponse" name="parameters"/>

+  </wsdl:message>

+

+ <wsdl:message name="findEntryByNameRequest">

+    <wsdl:part element="impl:findEntryByName" name="parameters"/>

+  </wsdl:message>

+ 

+  <wsdl:message name="findEntryByNameResponse">

+    <wsdl:part element="impl:findEntryByNameResponse" name="parameters"/>

+  </wsdl:message>

+

+  <wsdl:portType name="AddressBook">

+    <wsdl:operation name="addEntry">

+      <wsdl:input message="impl:addEntryRequest" name="addEntryRequest"/>

+      <wsdl:output message="impl:addEntryResponse" name="addEntryResponse"/>

+    </wsdl:operation>

+    

+    <wsdl:operation name="findEntryByName">

+      <wsdl:input message="impl:findEntryByNameRequest" name="findEntryByNameRequest"/>

+      <wsdl:output message="impl:findEntryByNameResponse" name="findEntryByNameResponse"/>

+    </wsdl:operation>

+  </wsdl:portType>

+

+  <wsdl:binding name="AddressBookSoap" type="impl:AddressBook">

+    <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+    

+    <wsdl:operation name="addEntry">

+      <wsdlsoap:operation soapAction=""/>

+      <wsdl:input name="addEntryRequest">

+        <wsdlsoap:body use="literal"/>

+      </wsdl:input>

+      <wsdl:output name="addEntryResponse">

+        <wsdlsoap:body use="literal"/>

+      </wsdl:output>

+    </wsdl:operation>

+

+    <wsdl:operation name="findEntryByName">

+      <wsdlsoap:operation soapAction=""/>

+      <wsdl:input name="findEntryByNameRequest">

+        <wsdlsoap:body use="literal"/>

+      </wsdl:input>

+      <wsdl:output name="findEntryByNameResponse">

+        <wsdlsoap:body use="literal"/>

+      </wsdl:output>

+    </wsdl:operation>

+  </wsdl:binding>

+

+  <wsdl:service name="AddressBookService">

+    <wsdl:port binding="impl:AddressBookSoap" name="AddressBook">

+      <wsdlsoap:address location="http://localhost:8080/axis2/services/AddressBookService"/>

+    </wsdl:port>

+  </wsdl:service>

+

+</wsdl:definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/META-INF/services.xml
new file mode 100644
index 0000000..f2384d6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/META-INF/services.xml
@@ -0,0 +1,14 @@
+<serviceGroup>

+ <service name="AddressBookService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.sample.addressbook.AddressBookImpl</parameter>

+  <operation name="addEntry" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+  <operation name="findEntryByName" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/ObjectFactory.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/ObjectFactory.java
new file mode 100644
index 0000000..c8d1909
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/ObjectFactory.java
@@ -0,0 +1,87 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.jaxws.sample.addressbook;

+

+import javax.xml.bind.annotation.XmlRegistry;

+

+

+/**

+ * This object contains factory methods for each 

+ * Java content interface and Java element interface 

+ * generated in the org.apache.axis2.jaxws.sample.addressbook package. 

+ * <p>An ObjectFactory allows you to programatically 

+ * construct new instances of the Java representation 

+ * for XML content. The Java representation of XML 

+ * content can consist of schema derived interfaces 

+ * and classes representing the binding of schema 

+ * type definitions, element declarations and model 

+ * groups.  Factory methods for each of these are 

+ * provided in this class.

+ * 

+ */

+@XmlRegistry

+public class ObjectFactory {

+

+

+    /**

+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.apache.axis2.jaxws.sample.addressbook

+     * 

+     */

+    public ObjectFactory() {

+    }

+

+    /**

+     * Create an instance of {@link FindEntryByName }

+     * 

+     */

+    public FindEntryByName createFindEntryByName() {

+        return new FindEntryByName();

+    }

+

+    /**

+     * Create an instance of {@link AddEntry }

+     * 

+     */

+    public AddEntry createAddEntry() {

+        return new AddEntry();

+    }

+

+    /**

+     * Create an instance of {@link AddressBookEntry }

+     * 

+     */

+    public AddressBookEntry createAddressBookEntry() {

+        return new AddressBookEntry();

+    }

+

+    /**

+     * Create an instance of {@link AddEntryResponse }

+     * 

+     */

+    public AddEntryResponse createAddEntryResponse() {

+        return new AddEntryResponse();

+    }

+

+    /**

+     * Create an instance of {@link FindEntryByNameResponse }

+     * 

+     */

+    public FindEntryByNameResponse createFindEntryByNameResponse() {

+        return new FindEntryByNameResponse();

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/package-info.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/package-info.java
new file mode 100644
index 0000000..f15cb50
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/addressbook/package-info.java
@@ -0,0 +1,18 @@
+/*

+ * Copyright 2006 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.

+ */

+@javax.xml.bind.annotation.XmlSchema(namespace = "http://org/apache/axis2/jaxws/sample/addressbook")

+package org.apache.axis2.jaxws.sample.addressbook;

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/DocLitBarePortTypeImpl.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/DocLitBarePortTypeImpl.java
new file mode 100644
index 0000000..8dd49f5
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/DocLitBarePortTypeImpl.java
@@ -0,0 +1,51 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample.doclitbare;

+

+import javax.jws.WebParam;

+import javax.jws.WebService;

+import javax.jws.WebParam.Mode;

+import javax.xml.ws.Holder;

+

+import org.apache.axis2.jaxws.sample.doclitbare.sei.DocLitBarePortType;

+import org.apache.axis2.jaxws.sample.doclitbare.sei.FaultBeanWithWrapper;

+import org.apache.axis2.jaxws.sample.doclitbare.sei.SimpleFault;

+import org.test.sample.doclitbare.Composite;

+

+@WebService(endpointInterface="org.apache.axis2.jaxws.sample.doclitbare.sei.DocLitBarePortType")

+public class DocLitBarePortTypeImpl implements DocLitBarePortType {

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.doclitbare.sei.DocLitBarePortType#oneWayEmpty()

+	 */

+	public void oneWayEmpty() {

+		String retValue = "Running One way call";

+

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.doclitbare.sei.DocLitBarePortType#oneWay(java.lang.String)

+	 */

+	public void oneWay(String allByMyself) {

+		// TODO Auto-generated method stub

+		String retValue = "Running One way call with String input" + allByMyself;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.doclitbare.sei.DocLitBarePortType#twoWaySimple(int)

+	 */

+	public String twoWaySimple(int allByMyself) {

+		// TODO Auto-generated method stub

+		String retValue = "Acknowledgement: received input value as integer:"+ allByMyself;

+		return retValue;

+	}

+	

+	public void twoWayHolder(

+	        @WebParam(name = "Composite", targetNamespace = "http://org.test.sample.doclitbare", mode = Mode.INOUT, partName = "allByMyself")

+	        Holder<Composite> allByMyself)

+	        throws FaultBeanWithWrapper, SimpleFault{

+		

+	}

+	    

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl
new file mode 100644
index 0000000..7a09597
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://doclitbare.sample.test.org"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="DoclitBare"

+	targetNamespace="http://doclitbare.sample.test.org">

+	

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://doclitbare.sample.test.org"

+			xmlns:tns="http://doclitbare.sample.test.org"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+		

+		<xsd:element name="String" type="xsd:string" />

+		<xsd:element name="Integer" type="xsd:int" />		

+

+		<xsd:element name="Composite">		

+			<xsd:complexType>

+				<xsd:sequence>

+					<xsd:element name="myElement" type="xsd:string" />

+				</xsd:sequence>

+			</xsd:complexType>

+		</xsd:element>

+

+		<!-- basic fault test, this should be mapped into message part

+		     of the generated faultBean

+		  -->

+		<xsd:element name="MyFault" type="xsd:string" />

+

+		<!-- wrapper exception and polymorphic fault test

+		     This bean should have an associated exception

+		  -->

+		<xsd:element name="MyBaseFaultBean" type="tns:BaseFault" />		

+

+		<xsd:complexType name="BaseFault">

+			<xsd:sequence>

+				<xsd:element name="message" type="xsd:string" />

+				<xsd:element name="error_code" type="xsd:int" />					

+			</xsd:sequence>

+		</xsd:complexType>

+

+		<xsd:complexType name="ExtendedFault">

+			<xsd:complexContent>

+			  <xsd:extension base="tns:BaseFault">

+			    <xsd:sequence>

+				<xsd:element name="another_message" type="xsd:string" />

+				<xsd:element name="another_error_code" type="xsd:int" />					

+			    </xsd:sequence>

+              </xsd:extension>

+			</xsd:complexContent>

+		</xsd:complexType>

+

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="NoParam" />

+

+	<wsdl:message name="SingleParam">

+		<wsdl:part name="allByMyself" element="tns:String" />

+	</wsdl:message>

+

+	<wsdl:message name="SingleParamInt">

+		<wsdl:part name="allByMyself" element="tns:Integer" />

+	</wsdl:message>

+	

+	<wsdl:message name="SingleParamOther">

+		<wsdl:part name="allByMyself" element="tns:Composite" />

+	</wsdl:message>	

+

+	<wsdl:message name="SimpleFault">

+		<wsdl:part name="description" element="tns:MyFault" />	

+	</wsdl:message>	

+

+	<wsdl:message name="FaultBeanWithWrapper">

+		<wsdl:part name="description" element="tns:MyBaseFaultBean" />	

+	</wsdl:message>	

+

+	<wsdl:portType name="DocLitBarePortType">

+		

+		<wsdl:operation name="oneWayEmpty">

+			<wsdl:input message="tns:NoParam" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="oneWay">

+			<wsdl:input message="tns:SingleParam" />

+		</wsdl:operation>		

+		

+		<wsdl:operation name="twoWaySimple">

+			<wsdl:input message="tns:SingleParamInt" />

+			<wsdl:output message="tns:SingleParam" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWayHolder">

+			<wsdl:input message="tns:SingleParamOther" />

+			<wsdl:output message="tns:SingleParamOther" />

+			<wsdl:fault message="tns:SimpleFault" name="twoWayFault"/>

+			<wsdl:fault message="tns:FaultBeanWithWrapper" name="wrapperFault"/>

+		</wsdl:operation>

+			

+	</wsdl:portType>

+	

+	<wsdl:binding name="DocLitBare" type="tns:DocLitBarePortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

+

+		<wsdl:operation name="oneWayEmpty">

+			<soap:operation soapAction="http://doclitbare.sample.test.org/oneWayEmpty" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+		</wsdl:operation>

+		

+		<wsdl:operation name="oneWay">

+			<soap:operation soapAction="http://doclitbare.sample.test.org/oneWay" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWaySimple">

+			<soap:operation soapAction="twoWaySimple" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+		</wsdl:operation>	

+		

+		<wsdl:operation name="twoWayHolder">

+			<soap:operation soapAction="http://doclitbare.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+			<wsdl:fault name="twoWayFault">

+				<soap:fault use="literal" name="twoWayFault" />

+			</wsdl:fault>			

+			<wsdl:fault name="wrapperFault">

+				<soap:fault use="literal" name="wrapperFault" />

+			</wsdl:fault>				

+		</wsdl:operation>

+		

+	

+	</wsdl:binding>

+	

+	<wsdl:service name="BareDocLitService">

+		<wsdl:port binding="tns:DocLitBare" name="BareDocLitPort">

+			<soap:address location="http://localhost:8080/axis2/services/BareDocLitService" />

+		</wsdl:port>

+	</wsdl:service>

+	

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/services.xml
new file mode 100644
index 0000000..9210b6c
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/services.xml
@@ -0,0 +1,10 @@
+<serviceGroup>

+ <service name="BareDocLitService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.sample.doclitbare.DocLitBarePortTypeImpl</parameter>

+    <actionMapping/>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java
new file mode 100644
index 0000000..6091233
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java
@@ -0,0 +1,62 @@
+

+package org.apache.axis2.jaxws.sample.doclitbare.sei;

+

+import java.io.File;

+import java.net.MalformedURLException;

+import java.net.URL;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebServiceClient(name = "BareDocLitService", targetNamespace = "http://org.test.sample.doclitbare", wsdlLocation = "proxy_doclit.wsdl")

+public class BareDocLitService

+    extends Service

+{

+

+    private final static URL BAREDOCLITSERVICE_WSDL_LOCATION;

+

+    private static String wsdlLocation="/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl";

+    static {

+        URL url = null;

+        try {

+        	try{

+	        	String baseDir = new File(".").getCanonicalPath();

+	        	wsdlLocation = new File(baseDir + wsdlLocation).getAbsolutePath();

+        	}catch(Exception e){

+        		e.printStackTrace();

+        	}

+        	File file = new File(wsdlLocation);

+        	url = file.toURL();

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        BAREDOCLITSERVICE_WSDL_LOCATION = url;

+    }

+

+    public BareDocLitService(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public BareDocLitService() {

+        super(BAREDOCLITSERVICE_WSDL_LOCATION, new QName("http://doclitbare.sample.test.org", "BareDocLitService"));

+    }

+

+    /**

+     * 

+     * @return

+     *     returns DocLitBarePortType

+     */

+    @WebEndpoint(name = "BareDocLitPort")

+    public DocLitBarePortType getBareDocLitPort() {

+        return (DocLitBarePortType)super.getPort(new QName("http://doclitbare.sample.test.org", "BareDocLitPort"), DocLitBarePortType.class);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/DocLitBarePortType.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/DocLitBarePortType.java
new file mode 100644
index 0000000..708be06
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/DocLitBarePortType.java
@@ -0,0 +1,70 @@
+

+package org.apache.axis2.jaxws.sample.doclitbare.sei;

+

+import javax.jws.Oneway;

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebParam.Mode;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.jws.soap.SOAPBinding;

+import javax.jws.soap.SOAPBinding.ParameterStyle;

+import javax.xml.ws.Holder;

+

+import org.test.sample.doclitbare.Composite;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "DocLitBarePortType", targetNamespace = "http://doclitbare.sample.test.org")

+@SOAPBinding(parameterStyle = ParameterStyle.BARE)

+public interface DocLitBarePortType {

+

+

+    /**

+     * 

+     */

+    @WebMethod(action = "http://doclitbare.sample.test.org/oneWayEmpty")

+    @Oneway

+    public void oneWayEmpty();

+

+    /**

+     * 

+     * @param allByMyself

+     */

+    @WebMethod(action = "http://doclitbare.sample.test.org/oneWay")

+    @Oneway

+    public void oneWay(

+        @WebParam(name = "String", targetNamespace = "http://doclitbare.sample.test.org", partName = "allByMyself")

+        String allByMyself);

+

+    /**

+     * 

+     * @param allByMyself

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://doclitbare.sample.test.org/twoWaySimple")

+    @WebResult(name = "String", targetNamespace = "http://doclitbare.sample.test.org", partName = "allByMyself")

+    public String twoWaySimple(

+        @WebParam(name = "Integer", targetNamespace = "http://doclitbare.sample.test.org", partName = "allByMyself")

+        int allByMyself);

+

+    /**

+     * 

+     * @param allByMyself

+     * @throws FaultBeanWithWrapper

+     * @throws SimpleFault

+     */

+    @WebMethod(action = "http://doclitbare.sample.test.org/twoWayReturn")

+    public void twoWayHolder(

+        @WebParam(name = "Composite", targetNamespace = "http://doclitbare.sample.test.org", mode = Mode.INOUT, partName = "allByMyself")

+        Holder<Composite> allByMyself)

+        throws FaultBeanWithWrapper, SimpleFault

+    ;

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/FaultBeanWithWrapper.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/FaultBeanWithWrapper.java
new file mode 100644
index 0000000..fb7c505
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/FaultBeanWithWrapper.java
@@ -0,0 +1,56 @@
+

+package org.apache.axis2.jaxws.sample.doclitbare.sei;

+

+import javax.xml.ws.WebFault;

+

+import org.test.sample.doclitbare.BaseFault;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebFault(name = "MyBaseFaultBean", faultBean="", targetNamespace = "http://doclitbare.sample.test.org")

+public class FaultBeanWithWrapper

+    extends Exception

+{

+

+    /**

+     * Java type that goes as soapenv:Fault detail element.

+     * 

+     */

+    private BaseFault faultInfo;

+

+    /**

+     * 

+     * @param faultInfo

+     * @param message

+     */

+    public FaultBeanWithWrapper(String message, BaseFault faultInfo) {

+        super(message);

+        this.faultInfo = faultInfo;

+    }

+

+    /**

+     * 

+     * @param faultInfo

+     * @param message

+     * @param cause

+     */

+    public FaultBeanWithWrapper(String message, BaseFault faultInfo, Throwable cause) {

+        super(message, cause);

+        this.faultInfo = faultInfo;

+    }

+

+    /**

+     * 

+     * @return

+     *     returns fault bean: org.test.sample.doclitbare.BaseFault

+     */

+    public BaseFault getFaultInfo() {

+        return faultInfo;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/SimpleFault.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/SimpleFault.java
new file mode 100644
index 0000000..7fe70a2
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/SimpleFault.java
@@ -0,0 +1,54 @@
+

+package org.apache.axis2.jaxws.sample.doclitbare.sei;

+

+import javax.xml.ws.WebFault;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebFault(name = "MyFault", faultBean="", targetNamespace = "http://doclitbare.sample.test.org")

+public class SimpleFault

+    extends Exception

+{

+

+    /**

+     * Java type that goes as soapenv:Fault detail element.

+     * 

+     */

+    private String faultInfo;

+

+    /**

+     * 

+     * @param faultInfo

+     * @param message

+     */

+    public SimpleFault(String message, String faultInfo) {

+        super(message);

+        this.faultInfo = faultInfo;

+    }

+

+    /**

+     * 

+     * @param faultInfo

+     * @param message

+     * @param cause

+     */

+    public SimpleFault(String message, String faultInfo, Throwable cause) {

+        super(message, cause);

+        this.faultInfo = faultInfo;

+    }

+

+    /**

+     * 

+     * @return

+     *     returns fault bean: java.lang.String

+     */

+    public String getFaultInfo() {

+        return faultInfo;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/META-INF/services.xml
new file mode 100644
index 0000000..0d5c397
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/META-INF/services.xml
@@ -0,0 +1,11 @@
+<serviceGroup>

+ <service name="MtomSampleService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.sample.mtom.MtomSampleService</parameter>

+  <operation name="sendImage" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSample.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSample.java
new file mode 100644
index 0000000..a27d3e9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSample.java
@@ -0,0 +1,46 @@
+

+package org.apache.axis2.jaxws.sample.mtom;

+

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+import org.test.mtom.ImageDepot;

+

+@WebService(name = "MtomSample", 

+            targetNamespace = "http://org/apache/axis2/jaxws/sample/mtom", 

+            wsdlLocation = "META-INF/ImageDepot.wsdl")

+public interface MtomSample {

+

+

+    /**

+     * 

+     * @param input

+     * @return

+     *     returns org.test.mtom.ImageDepot

+     */

+    @WebMethod

+    @WebResult(name = "output", targetNamespace = "urn://mtom.test.org")

+    @RequestWrapper(localName = "sendImage", targetNamespace = "urn://mtom.test.org", className = "org.test.mtom.SendImage")

+    @ResponseWrapper(localName = "sendImageResponse", targetNamespace = "urn://mtom.test.org", className = "org.test.mtom.SendImageResponse")

+    public ImageDepot sendImage(

+        @WebParam(name = "input", targetNamespace = "urn://mtom.test.org")

+        ImageDepot input);

+

+    /**

+     * 

+     * @param input

+     * @return

+     *     returns org.test.mtom.ImageDepot

+     */

+    @WebMethod

+    @WebResult(name = "output", targetNamespace = "urn://mtom.test.org")

+    @RequestWrapper(localName = "sendText", targetNamespace = "urn://mtom.test.org", className = "org.test.mtom.SendText")

+    @ResponseWrapper(localName = "sendTextResponse", targetNamespace = "urn://mtom.test.org", className = "org.test.mtom.SendTextResponse")

+    public ImageDepot sendText(

+        @WebParam(name = "input", targetNamespace = "urn://mtom.test.org")

+        byte[] input);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleProvider.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleProvider.java
new file mode 100644
index 0000000..046c9cc
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleProvider.java
@@ -0,0 +1,11 @@
+package org.apache.axis2.jaxws.sample.mtom;

+

+import javax.xml.ws.Provider;

+

+public class MtomSampleProvider implements Provider<String> {

+

+    public String invoke(String input) {

+        System.out.println(">> input[" + input + "]");

+        return input;

+    }

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleService.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleService.java
new file mode 100644
index 0000000..aacd516
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/mtom/MtomSampleService.java
@@ -0,0 +1,48 @@
+package org.apache.axis2.jaxws.sample.mtom;

+

+import java.awt.Image;

+import java.io.ByteArrayInputStream;

+import java.io.IOException;

+

+import javax.activation.DataHandler;

+import javax.activation.DataSource;

+import javax.imageio.ImageIO;

+import javax.jws.WebService;

+import javax.xml.ws.BindingType;

+import javax.xml.ws.soap.SOAPBinding;

+

+import org.apache.axis2.jaxws.provider.DataSourceImpl;

+import org.test.mtom.ImageDepot;

+import org.test.mtom.ObjectFactory;

+

+@WebService(endpointInterface="org.apache.axis2.jaxws.sample.mtom.MtomSample")

+@BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING)

+public class MtomSampleService implements MtomSample {

+

+    public ImageDepot sendImage(ImageDepot input) {

+        System.out.println("[new sendImage request received]");

+        DataHandler data = input.getImageData();

+        

+        System.out.println("[contentType] " + data.getContentType());

+        ImageDepot output = (new ObjectFactory()).createImageDepot();

+        Image image = null;

+        try {

+            ByteArrayInputStream stream = (ByteArrayInputStream) data.getContent();

+            image = ImageIO.read(stream);

+            

+            DataSource imageDS = new DataSourceImpl("image/jpeg", "test.jpg", image);

+            DataHandler handler = new DataHandler(imageDS);

+            output.setImageData(handler);

+        }

+        catch (Exception e) {

+            e.printStackTrace();

+        }

+        return output;

+    }

+

+    public ImageDepot sendText(byte[] input) {

+        System.out.println("[new sendText request received]");

+        return null;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/DocLitNonWrapPortTypeImpl.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/DocLitNonWrapPortTypeImpl.java
new file mode 100644
index 0000000..6f71485
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/DocLitNonWrapPortTypeImpl.java
@@ -0,0 +1,103 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample.nonwrap;

+

+import java.util.concurrent.Future;

+

+import javax.jws.WebService;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Holder;

+import javax.xml.ws.Response;

+

+import org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType;

+import org.test.sample.nonwrap.ObjectFactory;

+import org.test.sample.nonwrap.OneWay;

+import org.test.sample.nonwrap.OneWayVoid;

+import org.test.sample.nonwrap.ReturnType;

+import org.test.sample.nonwrap.TwoWay;

+import org.test.sample.nonwrap.TwoWayHolder;

+

+@WebService(endpointInterface="org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType")

+public class DocLitNonWrapPortTypeImpl implements DocLitNonWrapPortType {

+

+	/**

+	 * 

+	 */

+	public DocLitNonWrapPortTypeImpl() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#oneWayVoid(org.test.sample.nonwrap.OneWayVoid)

+	 */

+	public void oneWayVoid(OneWayVoid allByMyself) {

+		// TODO Auto-generated method stub

+

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#oneWay(org.test.sample.nonwrap.OneWay)

+	 */

+	public void oneWay(OneWay allByMyself) {

+		// TODO Auto-generated method stub

+

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayHolderAsync(org.test.sample.nonwrap.TwoWayHolder)

+	 */

+	public Response<TwoWayHolder> twoWayHolderAsync(TwoWayHolder allByMyself) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayHolderAsync(org.test.sample.nonwrap.TwoWayHolder, javax.xml.ws.AsyncHandler)

+	 */

+	public Future<?> twoWayHolderAsync(TwoWayHolder allByMyself,

+			AsyncHandler<TwoWayHolder> asyncHandler) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayHolder(javax.xml.ws.Holder)

+	 */

+	public void twoWayHolder(Holder<TwoWayHolder> allByMyself) {

+		// TODO Auto-generated method stub

+

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayAsync(org.test.sample.nonwrap.TwoWay)

+	 */

+	public Response<ReturnType> twoWayAsync(TwoWay allByMyself) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayAsync(org.test.sample.nonwrap.TwoWay, javax.xml.ws.AsyncHandler)

+	 */

+	public Future<?> twoWayAsync(TwoWay allByMyself,

+			AsyncHandler<ReturnType> asyncHandler) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWay(org.test.sample.nonwrap.TwoWay)

+	 */

+	public ReturnType twoWay(TwoWay twoWay) {

+		

+		String requestString = twoWay.getTwowayStr();

+		ObjectFactory of = new ObjectFactory();

+		ReturnType rt = of.createReturnType();

+		rt.setReturnStr("Acknowledgement : Request String received = "+ requestString);

+		

+		return rt;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl
new file mode 100644
index 0000000..72a0023
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>

+

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://nonwrap.sample.test.org"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="proxy"

+	targetNamespace="http://nonwrap.sample.test.org">

+	

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://nonwrap.sample.test.org"

+			xmlns:tns="http://nonwrap.sample.test.org"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+			<xsd:element name="MyFault" type="xsd:string" />

+			

+			<xsd:element name="oneWayVoid">

+				<xsd:complexType>

+					<xsd:sequence/>

+				</xsd:complexType>

+			</xsd:element>				

+			

+			<xsd:element name="oneWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="oneway_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>				

+			

+			<xsd:element name="twoWayHolder">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoWayHolder_str" type="xsd:string" />

+						<xsd:element name="twoWayHolder_int" type="xsd:int" />						

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			

+			<xsd:element name="twoWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoway_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>			

+			

+			<xsd:element name="ReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>				

+

+			<!-- fin op definition -->

+			

+			<xsd:element name="finOp">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="op" type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>			

+

+			<xsd:element name="finOpResponse">

+				<xsd:complexType>

+				<xsd:sequence>

+					<xsd:element name="response" type="tns:FinancialOperation" />

+				</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:complexType name="FinancialOperation">

+				<xsd:sequence>

+					<xsd:element name="amount" type="xsd:float" />

+				</xsd:sequence>

+			</xsd:complexType>

+

+			<xsd:complexType name="Withdraw">

+			  <xsd:complexContent>

+			    <xsd:extension base="tns:FinancialOperation">

+			      <xsd:sequence>

+			        <xsd:element name="memo" type="xsd:string" />

+			      </xsd:sequence>

+			    </xsd:extension>

+			  </xsd:complexContent>

+			</xsd:complexType>

+			

+			<xsd:complexType name="Deposit">

+			  <xsd:complexContent>

+			    <xsd:extension base="tns:FinancialOperation">

+			      <xsd:sequence>

+			        <xsd:element name="status" type="xsd:string" />

+			      </xsd:sequence>

+			     </xsd:extension>

+			  </xsd:complexContent>

+			</xsd:complexType>	

+

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="oneWayVoidRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />

+	</wsdl:message>

+

+	<wsdl:message name="oneWayRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderResponse">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+	

+	<wsdl:message name="twoWayRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>	

+	

+	<wsdl:portType name="DocLitNonWrapPortType">

+

+		<wsdl:operation name="oneWayVoid">

+			<wsdl:input message="tns:oneWayVoidRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<wsdl:input message="tns:oneWayRequest" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWayHolder">

+			<wsdl:input message="tns:twoWayHolderRequest" />

+			<wsdl:output message="tns:twoWayHolderResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWay">

+			<wsdl:input message="tns:twoWayRequest" />

+			<wsdl:output message="tns:twoWayResponse" />

+		</wsdl:operation>		

+			

+	</wsdl:portType>

+	

+	<wsdl:binding name="DocLitNonWrap" type="tns:DocLitNonWrapPortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

+

+		<wsdl:operation name="oneWayVoid">

+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWayHolder">

+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+	

+		</wsdl:operation>

+		

+		<wsdl:operation name="twoWay">

+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal"  />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"  />

+			</wsdl:output>

+	

+		</wsdl:operation>		

+	

+	</wsdl:binding>

+	

+	<wsdl:service name="DocLitNonWrapService">

+		<wsdl:port binding="tns:DocLitNonWrap" name="DocLitNonWrapPort">

+			<soap:address location="http://localhost:8080/axis2/services/DocLitNonWrapService" />

+		</wsdl:port>

+	</wsdl:service>

+	

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/services.xml
new file mode 100644
index 0000000..af8a712
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="DocLitNonWrapService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.sample.nonwrap.DocLitNonWrapPortTypeImpl</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapPortType.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapPortType.java
new file mode 100644
index 0000000..773bd8b
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapPortType.java
@@ -0,0 +1,126 @@
+

+package org.apache.axis2.jaxws.sample.nonwrap.sei;

+

+import java.util.concurrent.Future;

+import javax.jws.Oneway;

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebParam.Mode;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.jws.soap.SOAPBinding;

+import javax.jws.soap.SOAPBinding.ParameterStyle;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Holder;

+import javax.xml.ws.Response;

+

+import org.test.sample.nonwrap.OneWay;

+import org.test.sample.nonwrap.OneWayVoid;

+import org.test.sample.nonwrap.ReturnType;

+import org.test.sample.nonwrap.TwoWay;

+import org.test.sample.nonwrap.TwoWayHolder;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "DocLitNonWrapPortType", targetNamespace = "http://nonwrap.sample.test.org")

+@SOAPBinding(parameterStyle = ParameterStyle.BARE)

+public interface DocLitNonWrapPortType {

+

+

+    /**

+     * 

+     * @param allByMyself

+     */

+    @WebMethod(action = "http://nonwrap.sample.test.org/twoWayReturn")

+    @Oneway

+    public void oneWayVoid(

+        @WebParam(name = "oneWayVoid", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")

+        OneWayVoid allByMyself);

+

+    /**

+     * 

+     * @param allByMyself

+     */

+    @WebMethod(action = "http://nonwrap.sample.test.org/twoWayReturn")

+    @Oneway

+    public void oneWay(

+        @WebParam(name = "oneWay", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")

+        OneWay allByMyself);

+

+    /**

+     * 

+     * @param allByMyself

+     * @return

+     *     returns javax.xml.ws.Response<org.test.sample.nonwrap.TwoWayHolder>

+     */

+    @WebMethod(operationName = "twoWayHolder", action = "http://nonwrap.sample.test.org/twoWayReturn")

+    public Response<TwoWayHolder> twoWayHolderAsync(

+        @WebParam(name = "twoWayHolder", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")

+        TwoWayHolder allByMyself);

+

+    /**

+     * 

+     * @param allByMyself

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "twoWayHolder", action = "http://nonwrap.sample.test.org/twoWayReturn")

+    public Future<?> twoWayHolderAsync(

+        @WebParam(name = "twoWayHolder", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")

+        TwoWayHolder allByMyself,

+        @WebParam(name = "twoWayHolderResponse", targetNamespace = "", partName = "asyncHandler")

+        AsyncHandler<TwoWayHolder> asyncHandler);

+

+    /**

+     * 

+     * @param allByMyself

+     */

+    @WebMethod(action = "http://nonwrap.sample.test.org/twoWayReturn")

+    public void twoWayHolder(

+        @WebParam(name = "twoWayHolder", targetNamespace = "http://nonwrap.sample.test.org", mode = Mode.INOUT, partName = "allByMyself")

+        Holder<TwoWayHolder> allByMyself);

+

+    /**

+     * 

+     * @param allByMyself

+     * @return

+     *     returns javax.xml.ws.Response<org.test.sample.nonwrap.ReturnType>

+     */

+    @WebMethod(operationName = "twoWay", action = "http://nonwrap.sample.test.org/twoWayReturn")

+    public Response<ReturnType> twoWayAsync(

+        @WebParam(name = "twoWay", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")

+        TwoWay allByMyself);

+

+    /**

+     * 

+     * @param allByMyself

+     * @param asyncHandler

+     * @return

+     *     returns java.util.concurrent.Future<? extends java.lang.Object>

+     */

+    @WebMethod(operationName = "twoWay", action = "http://nonwrap.sample.test.org/twoWayReturn")

+    public Future<?> twoWayAsync(

+        @WebParam(name = "twoWay", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")

+        TwoWay allByMyself,

+        @WebParam(name = "twoWayResponse", targetNamespace = "", partName = "asyncHandler")

+        AsyncHandler<ReturnType> asyncHandler);

+

+    /**

+     * 

+     * @param allByMyself

+     * @return

+     *     returns org.test.sample.nonwrap.ReturnType

+     */

+    @WebMethod(action = "http://nonwrap.sample.test.org/twoWayReturn")

+    @WebResult(name = "ReturnType", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")

+    public ReturnType twoWay(

+        @WebParam(name = "twoWay", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")

+        TwoWay allByMyself);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapService.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapService.java
new file mode 100644
index 0000000..5abdc64
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapService.java
@@ -0,0 +1,62 @@
+

+package org.apache.axis2.jaxws.sample.nonwrap.sei;

+

+import java.io.File;

+import java.net.MalformedURLException;

+import java.net.URL;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebServiceClient(name = "DocLitNonWrapService", targetNamespace = "http://nonwrap.sample.test.org", wsdlLocation = "doclit_nonwrap.wsdl")

+public class DocLitNonWrapService

+    extends Service

+{

+

+    private final static URL DOCLITNONWRAPSERVICE_WSDL_LOCATION;

+    private static String wsdlLocation="/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl";

+    static {

+        URL url = null;

+        try {

+        	try{

+	        	String baseDir = new File(".").getCanonicalPath();

+	        	wsdlLocation = new File(baseDir + wsdlLocation).getAbsolutePath();

+        	}catch(Exception e){

+        		e.printStackTrace();

+        	}

+        	File file = new File(wsdlLocation);

+        	url = file.toURL();

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        DOCLITNONWRAPSERVICE_WSDL_LOCATION = url;

+    }

+

+    public DocLitNonWrapService(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public DocLitNonWrapService() {

+        super(DOCLITNONWRAPSERVICE_WSDL_LOCATION, new QName("http://nonwrap.sample.test.org", "DocLitNonWrapService"));

+    }

+

+    /**

+     * 

+     * @return

+     *     returns DocLitNonWrapPortType

+     */

+    @WebEndpoint(name = "DocLitNonWrapPort")

+    public DocLitNonWrapPortType getDocLitNonWrapPort() {

+        return (DocLitNonWrapPortType)super.getPort(new QName("http://nonwrap.sample.test.org", "DocLitNonWrapPort"), DocLitNonWrapPortType.class);

+    }

+

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java
new file mode 100644
index 0000000..246f8d6
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java
@@ -0,0 +1,71 @@
+/**

+ * 

+ */

+package org.apache.axis2.jaxws.sample.wrap;

+

+import javax.jws.WebService;

+import javax.xml.ws.Holder;

+

+import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap;

+import org.test.sample.nonwrap.ObjectFactory;

+import org.test.sample.nonwrap.ReturnType;

+import org.test.sample.wrap.FinancialOperation;

+

+@WebService(endpointInterface="org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap")

+public class DocLitWrapImpl implements DocLitWrap {

+

+	public FinancialOperation finOp(FinancialOperation op) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	/**

+	 * 

+	 */

+	public DocLitWrapImpl() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#oneWayVoid()

+	 */

+	public void oneWayVoid() {

+		System.out.println("OneWayVoid with no parameters called");

+

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#oneWay(java.lang.String)

+	 */

+	public void oneWay(String onewayStr) {

+		// TODO Auto-generated method stub

+

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#twoWayHolder(javax.xml.ws.Holder, javax.xml.ws.Holder)

+	 */

+	public void twoWayHolder(Holder<String> twoWayHolderStr,

+			Holder<Integer> twoWayHolderInt) {

+		// TODO Auto-generated method stub

+

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#twoWay(java.lang.String)

+	 */

+	public String twoWay(String twowayStr) {

+		String retStr = new String("Acknowledgement : Request String received = "+ twowayStr);

+		return retStr;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#invoke(java.lang.String)

+	 */

+	public String invoke(String invokeStr) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl
new file mode 100644
index 0000000..08e7f00
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://wrap.sample.test.org"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="wrapjavabeantest"

+	targetNamespace="http://wrap.sample.test.org">

+

+	<wsdl:types>

+		<xsd:schema

+			targetNamespace="http://wrap.sample.test.org"

+			xmlns:tns="http://wrap.sample.test.org"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+

+			<xsd:element name="MyFault" type="xsd:string" />

+

+			<xsd:element name="oneWayVoid">

+				<xsd:complexType>

+					<xsd:sequence />

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="oneWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="oneway_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="twoWayHolder">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoWayHolder_str"

+							type="xsd:string" />

+						<xsd:element name="twoWayHolder_int"

+							type="xsd:int" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="twoWay">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="twoway_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			

+			<xsd:element name="ReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="invoke">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="invoke_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="invokeReturnType">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="return_str"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+

+			

+

+			<!-- fin op definition -->

+

+			<xsd:element name="finOp">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="op"

+							type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="finOpResponse">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="response"

+							type="tns:FinancialOperation" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:complexType name="FinancialOperation">

+				<xsd:sequence>

+					<xsd:element name="amount" type="xsd:float" />

+				</xsd:sequence>

+			</xsd:complexType>

+

+			<xsd:complexType name="Withdraw">

+				<xsd:complexContent>

+					<xsd:extension base="tns:FinancialOperation">

+						<xsd:sequence>

+							<xsd:element name="memo" type="xsd:string" />

+						</xsd:sequence>

+					</xsd:extension>

+				</xsd:complexContent>

+			</xsd:complexType>

+

+			<xsd:complexType name="Deposit">

+				<xsd:complexContent>

+					<xsd:extension base="tns:FinancialOperation">

+						<xsd:sequence>

+							<xsd:element name="status"

+								type="xsd:string" />

+						</xsd:sequence>

+					</xsd:extension>

+				</xsd:complexContent>

+			</xsd:complexType>

+

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="oneWayVoidRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />

+	</wsdl:message>

+

+	<wsdl:message name="oneWayRequest">

+		<wsdl:part name="allByMyself" element="tns:oneWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayHolderResponse">

+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayRequest">

+		<wsdl:part name="allByMyself" element="tns:twoWay" />

+	</wsdl:message>

+

+	<wsdl:message name="twoWayResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeRequest">

+		<wsdl:part name="allByMyself" element="tns:invoke" />

+	</wsdl:message>

+

+	<wsdl:message name="invokeResponse">

+		<wsdl:part name="allByMyself" element="tns:ReturnType" />

+	</wsdl:message>

+

+	<wsdl:message name="finOpRequest">

+		<wsdl:part name="op" element="tns:finOp" />

+	</wsdl:message>

+

+	<wsdl:message name="finOpResponse">

+		<wsdl:part name="op" element="tns:finOpResponse" />

+	</wsdl:message>

+

+	<wsdl:portType name="DocLitWrap">

+

+		<wsdl:operation name="oneWayVoid">

+			<wsdl:input message="tns:oneWayVoidRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<wsdl:input message="tns:oneWayRequest" />

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWayHolder">

+			<wsdl:input message="tns:twoWayHolderRequest" />

+			<wsdl:output message="tns:twoWayHolderResponse" />

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWay">

+			<wsdl:input message="tns:twoWayRequest" />

+			<wsdl:output message="tns:twoWayResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="invoke">

+			<wsdl:input message="tns:invokeRequest" />

+			<wsdl:output message="tns:invokeResponse" />

+		</wsdl:operation>

+		

+		<wsdl:operation name="finOp">

+			<wsdl:input message="tns:finOpRequest" />

+			<wsdl:output message="tns:finOpResponse" />

+		</wsdl:operation>

+

+	</wsdl:portType>

+

+	<wsdl:binding name="DocLitWrap"

+		type="tns:DocLitWrap">

+		<soap:binding style="document"

+			transport="http://schemas.xmlsoap.org/soap/http" />

+

+		<wsdl:operation name="oneWayVoid">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="oneWay">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWayHolder">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+

+		<wsdl:operation name="twoWay">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+		

+		<wsdl:operation name="invoke">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/twoWayReturn" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+		

+		<wsdl:operation name="finOp">

+			<soap:operation

+				soapAction="http://wrap.sample.test.org/finOp" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+

+		</wsdl:operation>

+

+	</wsdl:binding>

+

+	<wsdl:service name="DocLitWrapService">

+		<wsdl:port binding="tns:DocLitWrap"

+			name="DocLitWrapPort">

+			<soap:address

+				location="http://localhost:8080/axis2/services/DocLitWrapService" />

+		</wsdl:port>

+	</wsdl:service>

+

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/services.xml
new file mode 100644
index 0000000..3e80798
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="DocLitWrapService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.sample.wrap.DocLitWrapImpl</parameter>

+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java
new file mode 100644
index 0000000..db80c47
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java
@@ -0,0 +1,102 @@
+

+package org.apache.axis2.jaxws.sample.wrap.sei;

+

+import javax.jws.Oneway;

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebParam.Mode;

+import javax.jws.WebResult;

+import javax.jws.WebService;

+import javax.xml.ws.Holder;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+

+import org.test.sample.wrap.FinancialOperation;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "DocLitWrap", targetNamespace = "http://wrap.sample.test.org")

+public interface DocLitWrap {

+

+

+    /**

+     * 

+     */

+    @WebMethod(action = "http://wrap.sample.test.org/twoWayReturn")

+    @Oneway

+    @RequestWrapper(localName = "oneWayVoid", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.OneWayVoid")

+    public void oneWayVoid();

+

+    /**

+     * 

+     * @param onewayStr

+     */

+    @WebMethod(action = "http://wrap.sample.test.org/twoWayReturn")

+    @Oneway

+    @RequestWrapper(localName = "oneWay", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.OneWay")

+    public void oneWay(

+        @WebParam(name = "oneway_str", targetNamespace = "")

+        String onewayStr);

+

+    /**

+     * 

+     * @param twoWayHolderInt

+     * @param twoWayHolderStr

+     */

+    @WebMethod(action = "http://wrap.sample.test.org/twoWayReturn")

+    @RequestWrapper(localName = "twoWayHolder", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.TwoWayHolder")

+    @ResponseWrapper(localName = "twoWayHolder", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.TwoWayHolder")

+    public void twoWayHolder(

+        @WebParam(name = "twoWayHolder_str", targetNamespace = "", mode = Mode.INOUT)

+        Holder<String> twoWayHolderStr,

+        @WebParam(name = "twoWayHolder_int", targetNamespace = "", mode = Mode.INOUT)

+        Holder<Integer> twoWayHolderInt);

+

+    /**

+     * 

+     * @param twowayStr

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://wrap.sample.test.org/twoWayReturn")

+    @WebResult(name = "return_str", targetNamespace = "")

+    @RequestWrapper(localName = "twoWay", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.TwoWay")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.ReturnType")

+    public String twoWay(

+        @WebParam(name = "twoway_str", targetNamespace = "")

+        String twowayStr);

+

+    /**

+     * 

+     * @param invokeStr

+     * @return

+     *     returns java.lang.String

+     */

+    @WebMethod(action = "http://wrap.sample.test.org/twoWayReturn")

+    @WebResult(name = "return_str", targetNamespace = "")

+    @RequestWrapper(localName = "invoke", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.Invoke")

+    @ResponseWrapper(localName = "ReturnType", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.ReturnType")

+    public String invoke(

+        @WebParam(name = "invoke_str", targetNamespace = "")

+        String invokeStr);

+

+    /**

+     * 

+     * @param op

+     * @return

+     *     returns org.test.sample.wrap.FinancialOperation

+     */

+    @WebMethod(action = "http://wrap.sample.test.org/finOp")

+    @WebResult(name = "response", targetNamespace = "")

+    @RequestWrapper(localName = "finOp", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.FinOp")

+    @ResponseWrapper(localName = "finOpResponse", targetNamespace = "http://wrap.sample.test.org", className = "org.test.sample.wrap.FinOpResponse")

+    public FinancialOperation finOp(

+        @WebParam(name = "op", targetNamespace = "")

+        FinancialOperation op);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrapService.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrapService.java
new file mode 100644
index 0000000..a16d7e1
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrapService.java
@@ -0,0 +1,61 @@
+

+package org.apache.axis2.jaxws.sample.wrap.sei;

+

+import java.io.File;

+import java.net.MalformedURLException;

+import java.net.URL;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0_01-b15-fcs

+ * Generated source version: 2.0

+ * 

+ */

+@WebServiceClient(name = "DocLitWrapService", targetNamespace = "http://wrap.sample.test.org", wsdlLocation = "DocLit.wsdl")

+public class DocLitWrapService

+    extends Service

+{

+

+    private final static URL DOCLITWRAPSERVICE_WSDL_LOCATION;

+    private static String wsdlLocation="/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl";

+    static {

+        URL url = null;

+        try {

+        	try{

+	        	String baseDir = new File(".").getCanonicalPath();

+	        	wsdlLocation = new File(baseDir + wsdlLocation).getAbsolutePath();

+        	}catch(Exception e){

+        		e.printStackTrace();

+        	}

+        	File file = new File(wsdlLocation);

+        	url = file.toURL();

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        DOCLITWRAPSERVICE_WSDL_LOCATION = url;

+    }

+

+    public DocLitWrapService(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public DocLitWrapService() {

+        super(DOCLITWRAPSERVICE_WSDL_LOCATION, new QName("http://wrap.sample.test.org", "DocLitWrapService"));

+    }

+

+    /**

+     * 

+     * @return

+     *     returns DocLitWrap

+     */

+    @WebEndpoint(name = "DocLitWrapPort")

+    public DocLitWrap getDocLitWrapPort() {

+        return (DocLitWrap)super.getPort(new QName("http://wrap.sample.test.org", "DocLitWrapPort"), DocLitWrap.class);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/AsyncCallback.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/AsyncCallback.java
new file mode 100644
index 0000000..30b4df9
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/AsyncCallback.java
@@ -0,0 +1,55 @@
+/**

+ * 

+ */

+package org.apache.axis2.proxy;

+

+import java.util.concurrent.ExecutionException;

+

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.Response;

+

+import org.test.proxy.doclitwrapped.ReturnType;

+

+

+

+/**

+ * @author nvthaker

+ *

+ */

+public class AsyncCallback implements AsyncHandler {

+

+	/**

+	 * 

+	 */

+	public AsyncCallback() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/* (non-Javadoc)

+	 * @see javax.xml.ws.AsyncHandler#handleResponse(javax.xml.ws.Response)

+	 */

+	public void handleResponse(Response response) {

+		try{

+			Object obj = response.get();

+			if(obj instanceof ReturnType){

+				ReturnType type = (ReturnType)obj;

+				System.out.println(">>Return String = "+type.getReturnStr());

+				return;

+			}

+			if(obj instanceof org.test.proxy.doclitnonwrapped.ReturnType){

+				org.test.proxy.doclitnonwrapped.ReturnType returnType = (org.test.proxy.doclitnonwrapped.ReturnType)obj;

+				System.out.println(">>Return String = "+returnType.getReturnStr());

+				return;

+			}

+			System.out.println("Response.get should have been ReturnType" );

+			

+		}catch(ExecutionException e){

+			e.printStackTrace();

+		}catch(InterruptedException e){

+			e.printStackTrace();

+		}

+

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/ProxyNonWrappedTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/ProxyNonWrappedTests.java
new file mode 100644
index 0000000..cd04e1d
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/ProxyNonWrappedTests.java
@@ -0,0 +1,117 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.proxy;

+

+import java.io.File;

+import java.net.URL;

+import java.util.concurrent.Future;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.BindingProvider;

+import javax.xml.ws.Service;

+

+import org.apache.axis2.jaxws.proxy.doclitnonwrapped.sei.DocLitnonWrappedProxy;

+import org.apache.axis2.jaxws.proxy.doclitnonwrapped.sei.ProxyDocLitUnwrappedService;

+import org.test.proxy.doclitnonwrapped.Invoke;

+import org.test.proxy.doclitnonwrapped.ObjectFactory;

+import org.test.proxy.doclitnonwrapped.ReturnType;

+

+

+import junit.framework.TestCase;

+

+/**

+ * This test cases will use proxy NON wrapped wsdl to invoke methods

+ * on a deployed Server Endpoint.

+ */

+public class ProxyNonWrappedTests extends TestCase {

+

+	QName serviceName = new QName("http://doclitnonwrapped.proxy.test.org", "ProxyDocLitUnwrappedService");

+	private String axisEndpoint = "http://localhost:8080/axis2/services/ProxyDocLitUnwrappedService";

+	private QName portName = new QName("http://org.apache.axis2.proxy.doclitwrapped", "ProxyDocLitWrappedPort");

+	private String wsdlLocation = "test-resources/wsdl/ProxyDocLitnonWrapped.wsdl";

+	public ProxyNonWrappedTests() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/**

+	 * @param arg0

+	 */

+	public ProxyNonWrappedTests(String arg0) {

+		super(arg0);

+		// TODO Auto-generated constructor stub

+	}

+	

+	public void testInvoke(){

+		System.out.println("-----------------------------------");

+		System.out.println("test: " + getName());

+		System.out.println(">>Testing Sync Inovoke on Proxy DocLit non-wrapped");

+		ObjectFactory factory = new ObjectFactory();

+		Invoke invokeObj = factory.createInvoke();

+		invokeObj.setInvokeStr("test request for twoWay Operation");

+		Service service = Service.create(null, serviceName);

+		assertNotNull(service);

+		DocLitnonWrappedProxy proxy = service.getPort(portName, DocLitnonWrappedProxy.class);

+		assertNotNull(proxy);

+		BindingProvider p =	(BindingProvider)proxy;

+		p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);

+		ReturnType response = proxy.invoke(invokeObj);

+		assertNotNull(response);

+		System.out.println(">>Response =" +response.getReturnStr());

+		

+		System.out.println("-------------------------------------");

+	}

+	

+	public void testInvokeAsyncCallback(){

+		try{ 

+			System.out.println("---------------------------------------");

+			System.out.println("DocLitNonWrapped test case: " + getName());

+			//Create wsdl url

+			File wsdl= new File(wsdlLocation); 

+			URL wsdlUrl = wsdl.toURL(); 

+			ObjectFactory factory = new ObjectFactory();

+			//create input object to web service operation

+			Invoke invokeObj = factory.createInvoke();

+			invokeObj.setInvokeStr("test request for twoWay Async Operation");

+			//Create Service

+			ProxyDocLitUnwrappedService service = new ProxyDocLitUnwrappedService(wsdlUrl, serviceName);

+			//Create proxy

+			DocLitnonWrappedProxy proxy = service.getProxyDocLitnonWrappedPort(); 

+			System.out.println(">>Invoking Binding Provider property");

+			//Setup Endpoint url -- optional.

+			BindingProvider p =	(BindingProvider)proxy;

+				p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);

+			System.out.println(">> Invoking Proxy Asynchronous Callback");

+			AsyncHandler<ReturnType> handler = new AsyncCallback();

+			//Invoke operation Asynchronously.

+			Future<?> monitor = proxy.invokeAsync(invokeObj, handler);

+			while(!monitor.isDone()){

+				Thread.sleep(1000);

+			}

+			System.out.println("---------------------------------------");

+		}catch(Exception e){ 

+			e.printStackTrace(); 

+            fail("Exception received" + e);

+		}

+	}

+	

+	public void testInvokeAsyncPolling(){

+		

+	}

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/ProxyTests.java b/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/ProxyTests.java
new file mode 100644
index 0000000..f76afdc
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/axis2/proxy/ProxyTests.java
@@ -0,0 +1,240 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.axis2.proxy;

+

+import java.io.File;

+import java.net.URL;

+import java.util.concurrent.Future;

+

+import javax.xml.namespace.QName;

+import javax.xml.ws.AsyncHandler;

+import javax.xml.ws.BindingProvider;

+import javax.xml.ws.Service;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.jaxws.proxy.doclitwrapped.sei.DocLitWrappedProxy;

+import org.apache.axis2.jaxws.proxy.doclitwrapped.sei.ProxyDocLitWrappedService;

+

+

+public class ProxyTests extends TestCase {

+	private QName serviceName = new QName(

+			"http://org.apache.axis2.proxy.doclitwrapped", "ProxyDocLitWrappedService");

+	private String wasEndpoint = "http://localhost:7777/axis2/services/ProxyDocLitWrappedService";

+	private String axisEndpoint = "http://localhost:8080/axis2/services/ProxyDocLitWrappedService";

+	private QName portName = new QName("http://org.apache.axis2.proxy.doclitwrapped",

+			"ProxyDocLitWrappedPort");

+	private String wsdlLocation = "test/org/apache/axis2/jaxws/proxy/doclitwrapped/META-INF/ProxyDocLitWrapped.wsdl";

+	private boolean runningOnAxis = true;

+	

+	public void testMultipleServiceCalls(){

+		try{

+			if(!runningOnAxis){

+				return;

+			}

+			System.out.println("---------------------------------------");

+			System.out.println("test:" +getName());

+			String request = new String("some string request");

+			System.out.println("Service Call #1");

+			ProxyDocLitWrappedService service1 = new ProxyDocLitWrappedService();

+			DocLitWrappedProxy proxy1 = service1.getProxyDocLitWrappedPort();

+			BindingProvider p1 =	(BindingProvider)proxy1;

+			p1.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);

+			String response1 = proxy1.invoke(request);

+			System.out.println("Proxy Response =" + response1);

+			System.out.println("---------------------------------------");

+			

+			System.out.println("Service Call #2");

+			ProxyDocLitWrappedService service2 = new ProxyDocLitWrappedService();

+			DocLitWrappedProxy proxy2 = service2.getProxyDocLitWrappedPort();

+			BindingProvider p2 =	(BindingProvider)proxy2;

+			p2.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);

+			String response2 = proxy2.invoke(request);

+			System.out.println("Proxy Response =" + response2);

+			System.out.println("---------------------------------------");

+			

+		}catch(Exception e){

+			//fail(getName() + " failed");

+			e.printStackTrace();

+		}

+	}

+    

+    public void testInvokeWithNullParam(){

+        try{ 

+            if(!runningOnAxis){

+                return;

+            }

+            System.out.println("---------------------------------------");

+            System.out.println("Test Name: "+getName());

+            File wsdl= new File(wsdlLocation); 

+            URL wsdlUrl = wsdl.toURL(); 

+            Service service = Service.create(null, serviceName); 

+            Object proxy =service.getPort(portName, DocLitWrappedProxy.class);

+            System.out.println(">>Invoking Binding Provider property");

+            BindingProvider p = (BindingProvider)proxy;

+            p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);

+

+            DocLitWrappedProxy dwp = (DocLitWrappedProxy)proxy;

+            System.out.println(">> Invoking Proxy Synchronously");

+            String request = null;

+            String response = dwp.invoke(request);

+            System.out.println("Proxy Response =" + response);

+            System.out.println("---------------------------------------");

+        }catch(Exception e){ 

+            e.printStackTrace(); 

+            fail("Exception received" + e);

+        }

+    }

+	public void testInvoke(){

+		try{ 

+			if(!runningOnAxis){

+				return;

+			}

+			System.out.println("---------------------------------------");

+			

+			File wsdl= new File(wsdlLocation); 

+			URL wsdlUrl = wsdl.toURL(); 

+			Service service = Service.create(null, serviceName);

+			String request = new String("some string request"); 

+			Object proxy =service.getPort(portName, DocLitWrappedProxy.class);

+			System.out.println(">>Invoking Binding Provider property");

+			BindingProvider p =	(BindingProvider)proxy;

+				p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);

+				

+			DocLitWrappedProxy dwp = (DocLitWrappedProxy)proxy;

+			System.out.println(">> Invoking Proxy Synchronously");

+			String response = dwp.invoke(request);

+			System.out.println("Proxy Response =" + response);

+			System.out.println("---------------------------------------");

+		}catch(Exception e){ 

+			e.printStackTrace(); 

+            fail("Exception received" + e);

+		}

+	}

+

+    public void testInvokeWithWSDL(){

+        try{ 

+            if(!runningOnAxis){

+                return;

+            }

+            System.out.println("---------------------------------------");

+            File wsdl= new File(wsdlLocation); 

+            URL wsdlUrl = wsdl.toURL(); 

+            Service service = Service.create(wsdlUrl, serviceName);

+            String request = new String("some string request"); 

+            Object proxy =service.getPort(portName, DocLitWrappedProxy.class);

+            System.out.println(">>Invoking Binding Provider property");

+            BindingProvider p = (BindingProvider)proxy;

+            p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);

+                

+            DocLitWrappedProxy dwp = (DocLitWrappedProxy)proxy;

+            System.out.println(">> Invoking Proxy Synchronously");

+            String response = dwp.invoke(request);

+            System.out.println("Proxy Response =" + response);

+            System.out.println("---------------------------------------");

+        }catch(Exception e){ 

+            e.printStackTrace(); 

+            fail("Exception received" + e);

+        }

+    }

+	

+	public void testInvokeAsyncCallback(){

+		try{ 

+			if(!runningOnAxis){

+				return;

+			}

+			System.out.println("---------------------------------------");

+			

+			File wsdl= new File(wsdlLocation); 

+			URL wsdlUrl = wsdl.toURL(); 

+			Service service = Service.create(null, serviceName);

+			String request = new String("some string request"); 

+			Object proxy =service.getPort(portName, DocLitWrappedProxy.class);

+			System.out.println(">>Invoking Binding Provider property");

+			BindingProvider p =	(BindingProvider)proxy;

+				p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);

+				

+			DocLitWrappedProxy dwp = (DocLitWrappedProxy)proxy;

+			System.out.println(">> Invoking Proxy Asynchronous Callback");

+			AsyncHandler handler = new AsyncCallback();

+			Future<?> response = dwp.invokeAsync(request, handler);

+			System.out.println("---------------------------------------");

+		}catch(Exception e){ 

+			e.printStackTrace(); 

+            fail("Exception received" + e);

+		}

+	}

+	public void testTwoWay(){

+		try{ 

+			if(runningOnAxis){

+				return;

+			}

+			File wsdl= new File(wsdlLocation); 

+			URL wsdlUrl = wsdl.toURL(); 

+			Service service = Service.create(null, serviceName);

+			String request = new String("some string request"); 

+			

+			Object proxy =service.getPort(portName, DocLitWrappedProxy.class); 

+			BindingProvider p =	(BindingProvider)proxy;

+				p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,wasEndpoint);

+				

+			DocLitWrappedProxy dwp = (DocLitWrappedProxy)proxy;  

+			String response = dwp.twoWay(request);

+			System.out.println("Response =" + response);

+		}catch(Exception e){ 

+			e.printStackTrace(); 

+            fail("Exception received" + e);

+		}

+	}

+	

+	public void testOneWay(){

+		

+	}

+	

+	public void testHolder(){

+		

+	}

+	

+	public void testTwoWayAsyncCallback(){

+		try{ 

+			if(runningOnAxis){

+				return;

+			}

+			File wsdl= new File(wsdlLocation); 

+			URL wsdlUrl = wsdl.toURL(); 

+			Service service = Service.create(null, serviceName);

+			

+			String request = new String("some string request"); 

+			

+			Object proxy =service.getPort(portName, DocLitWrappedProxy.class); 

+			BindingProvider p =	(BindingProvider)proxy;

+				p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,wasEndpoint);

+				

+			DocLitWrappedProxy dwp = (DocLitWrappedProxy)proxy;

+			AsyncHandler handler = new AsyncCallback();

+			Future<?> response = dwp.twoWayAsync(request, handler);

+			

+		}catch(Exception e){ 

+			e.printStackTrace(); 

+            fail("Exception received" + e);

+		}

+	}

+	

+	public void testAsyncPooling(){

+		

+	}

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/Echo.java b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/Echo.java
new file mode 100644
index 0000000..49cdd48
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/Echo.java
@@ -0,0 +1,62 @@
+

+package org.apache.ws.axis2.tests;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for echo complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="echo">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="text" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "echo", propOrder = {

+    "text"

+})

+public class Echo {

+

+    @XmlElement(required = true, nillable = true)

+    protected String text;

+

+    /**

+     * Gets the value of the text property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getText() {

+        return text;

+    }

+

+    /**

+     * Sets the value of the text property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setText(String value) {

+        this.text = value;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoPort.java b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoPort.java
new file mode 100644
index 0000000..da3f3b7
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoPort.java
@@ -0,0 +1,34 @@
+

+package org.apache.ws.axis2.tests;

+

+import javax.jws.WebMethod;

+import javax.jws.WebParam;

+import javax.jws.WebParam.Mode;

+import javax.jws.WebService;

+import javax.xml.ws.Holder;

+import javax.xml.ws.RequestWrapper;

+import javax.xml.ws.ResponseWrapper;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0-b26-ea3

+ * Generated source version: 2.0

+ * 

+ */

+@WebService(name = "EchoPort", targetNamespace = "http://ws.apache.org/axis2/tests", wsdlLocation = "\\work\\apps\\eclipse\\workspace\\axis2-live\\modules\\jaxws\\test-resources\\wsdl\\WSDLTests.wsdl")

+public interface EchoPort {

+

+

+    /**

+     * 

+     * @param text

+     */

+    @WebMethod(operationName = "Echo", action = "http://ws.apache.org/axis2/tests/echo")

+    @RequestWrapper(localName = "Echo", targetNamespace = "http://ws.apache.org/axis2/tests", className = "org.apache.ws.axis2.tests.Echo")

+    @ResponseWrapper(localName = "EchoResponse", targetNamespace = "http://ws.apache.org/axis2/tests", className = "org.apache.ws.axis2.tests.EchoResponse")

+    public void echo(

+        @WebParam(name = "text", targetNamespace = "", mode = Mode.INOUT)

+        Holder<String> text);

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoResponse.java b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoResponse.java
new file mode 100644
index 0000000..a579cea
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoResponse.java
@@ -0,0 +1,62 @@
+

+package org.apache.ws.axis2.tests;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for echoResponse complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="echoResponse">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="text" type="{http://www.w3.org/2001/XMLSchema}string"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "echoResponse", propOrder = {

+    "text"

+})

+public class EchoResponse {

+

+    @XmlElement(required = true, nillable = true)

+    protected String text;

+

+    /**

+     * Gets the value of the text property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getText() {

+        return text;

+    }

+

+    /**

+     * Sets the value of the text property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setText(String value) {

+        this.text = value;

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoService.java b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoService.java
new file mode 100644
index 0000000..2ced235
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoService.java
@@ -0,0 +1,55 @@
+

+package org.apache.ws.axis2.tests;

+

+import java.net.MalformedURLException;

+import java.net.URL;

+import javax.xml.namespace.QName;

+import javax.xml.ws.Service;

+import javax.xml.ws.WebEndpoint;

+import javax.xml.ws.WebServiceClient;

+

+

+/**

+ * This class was generated by the JAXWS SI.

+ * JAX-WS RI 2.0-b26-ea3

+ * Generated source version: 2.0

+ * 

+ */

+@WebServiceClient(name = "EchoService", targetNamespace = "http://ws.apache.org/axis2/tests", wsdlLocation = "\\work\\apps\\eclipse\\workspace\\axis2-live\\modules\\jaxws\\test-resources\\wsdl\\WSDLTests.wsdl")

+public class EchoService

+    extends Service

+{

+

+    private final static URL WSDL_LOCATION;

+    private final static QName ECHOSERVICE = new QName("http://ws.apache.org/axis2/tests", "EchoService");

+    private final static QName ECHOPORT = new QName("http://ws.apache.org/axis2/tests", "EchoPort");

+

+    static {

+        URL url = null;

+        try {

+            url = new URL("file:/C:/work/apps/eclipse/workspace/axis2-live/modules/jaxws/test-resources/wsdl/WSDLTests.wsdl");

+        } catch (MalformedURLException e) {

+            e.printStackTrace();

+        }

+        WSDL_LOCATION = url;

+    }

+

+    public EchoService(URL wsdlLocation, QName serviceName) {

+        super(wsdlLocation, serviceName);

+    }

+

+    public EchoService() {

+        super(WSDL_LOCATION, ECHOSERVICE);

+    }

+

+    /**

+     * 

+     * @return

+     *     returns EchoPort

+     */

+    @WebEndpoint(name = "EchoPort")

+    public EchoPort getEchoPort() {

+        return (EchoPort)super.getPort(ECHOPORT, EchoPort.class);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoServiceImplWithSEI.java b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoServiceImplWithSEI.java
new file mode 100644
index 0000000..08d9e63
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/EchoServiceImplWithSEI.java
@@ -0,0 +1,30 @@
+/*

+ * Copyright 2004,2005 The Apache Software Foundation.

+ * Copyright 2006 International Business Machines Corp.

+ *

+ * 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.ws.axis2.tests;

+

+import javax.jws.WebService;

+

+/**

+ * 

+ */

+@WebService(serviceName = "EchoService", endpointInterface="org.apache.ws.axis2.tests.EchoPort")

+public class EchoServiceImplWithSEI {

+    // TODO: Test all conditions in JSR-181 spec Sec 3.1 p13  

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/ObjectFactory.java b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/ObjectFactory.java
new file mode 100644
index 0000000..3841dc8
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/ObjectFactory.java
@@ -0,0 +1,71 @@
+

+package org.apache.ws.axis2.tests;

+

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.annotation.XmlElementDecl;

+import javax.xml.bind.annotation.XmlRegistry;

+import javax.xml.namespace.QName;

+

+

+/**

+ * This object contains factory methods for each 

+ * Java content interface and Java element interface 

+ * generated in the org.apache.ws.axis2.tests package. 

+ * <p>An ObjectFactory allows you to programatically 

+ * construct new instances of the Java representation 

+ * for XML content. The Java representation of XML 

+ * content can consist of schema derived interfaces 

+ * and classes representing the binding of schema 

+ * type definitions, element declarations and model 

+ * groups.  Factory methods for each of these are 

+ * provided in this class.

+ * 

+ */

+@XmlRegistry

+public class ObjectFactory {

+

+    private final static QName _EchoResponse_QNAME = new QName("http://ws.apache.org/axis2/tests", "EchoResponse");

+    private final static QName _Echo_QNAME = new QName("http://ws.apache.org/axis2/tests", "Echo");

+

+    /**

+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.apache.ws.axis2.tests

+     * 

+     */

+    public ObjectFactory() {

+    }

+

+    /**

+     * Create an instance of {@link EchoResponse }

+     * 

+     */

+    public EchoResponse createEchoResponse() {

+        return new EchoResponse();

+    }

+

+    /**

+     * Create an instance of {@link Echo }

+     * 

+     */

+    public Echo createEcho() {

+        return new Echo();

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link EchoResponse }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://ws.apache.org/axis2/tests", name = "EchoResponse")

+    public JAXBElement<EchoResponse> createEchoResponse(EchoResponse value) {

+        return new JAXBElement<EchoResponse>(_EchoResponse_QNAME, EchoResponse.class, null, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link Echo }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://ws.apache.org/axis2/tests", name = "Echo")

+    public JAXBElement<Echo> createEcho(Echo value) {

+        return new JAXBElement<Echo>(_Echo_QNAME, Echo.class, null, value);

+    }

+

+}

diff --git a/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/package-info.java b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/package-info.java
new file mode 100644
index 0000000..fbee3b5
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/org/apache/ws/axis2/tests/package-info.java
@@ -0,0 +1,2 @@
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://ws.apache.org/axis2/tests")

+package org.apache.ws.axis2.tests;

diff --git a/rampart_1_1/modules/jaxws/test/server/EchoServiceMessageReceiverInOut.java b/rampart_1_1/modules/jaxws/test/server/EchoServiceMessageReceiverInOut.java
new file mode 100644
index 0000000..3058f3f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/server/EchoServiceMessageReceiverInOut.java
@@ -0,0 +1,163 @@
+

+

+        /**

+         * EchoServiceMessageReceiverInOut.java

+         *

+         * This file was auto-generated from WSDL

+         * by the Apache Axis2 version: SNAPSHOT Apr 09, 2006 (10:20:36 CDT)

+         */

+        package server;

+

+import server.EchoServiceSkeleton;

+

+        /**

+         *  EchoServiceMessageReceiverInOut message receiver

+         */

+

+        public class EchoServiceMessageReceiverInOut extends org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver{

+

+

+        public void invokeBusinessLogic(org.apache.axis2.context.MessageContext msgContext, org.apache.axis2.context.MessageContext newMsgContext)

+        throws org.apache.axis2.AxisFault{

+

+        try {

+

+        // get the implementation class for the Web Service

+        Object obj = getTheImplementationObject(msgContext);

+

+        //Inject the Message Context if it is asked for

+        org.apache.axis2.engine.DependencyManager.initServiceClass(obj, msgContext.getServiceContext());

+

+        EchoServiceSkeleton skel = (EchoServiceSkeleton)obj;

+        //Out Envelop

+        org.apache.axiom.soap.SOAPEnvelope envelope = null;

+        //Find the axisOperation that has been set by the Dispatch phase.

+        org.apache.axis2.description.AxisOperation op = msgContext.getOperationContext().getAxisOperation();

+        if (op == null) {

+        throw new org.apache.axis2.AxisFault("Operation is not located, if this is doclit style the SOAP-ACTION should specified via the SOAP Action to use the RawXMLProvider");

+        }

+

+        String methodName;

+        if(op.getName() != null & (methodName = op.getName().getLocalPart()) != null){

+

+        

+

+

+            if("echoString".equals(methodName)){

+

+

+            server.EchoStringResponse param3 = null;

+            

+                    //doc style

+                    param3 =skel.echoString(

+                            (server.EchoString)fromOM(msgContext.getEnvelope().getBody().getFirstElement(), server.EchoString.class));

+                        

+                        envelope = toEnvelope(getSOAPFactory(msgContext), param3, false);

+                      

+

+            }

+        

+

+        newMsgContext.setEnvelope(envelope);

+       }

+        

+                    

+                    }

+            

+            catch (Exception e) {

+              throw org.apache.axis2.AxisFault.makeFault(e);

+            }

+        }

+         

+//        //

+//                    private  org.apache.axiom.om.OMElement  toOM(server.EchoString param, boolean optimizeContent){

+//                        if (param instanceof org.apache.axis2.databinding.ADBBean){

+//                            org.apache.axiom.om.impl.builder.StAXOMBuilder builder

+//                                       = new org.apache.axiom.om.impl.builder.StAXOMBuilder

+//                            (org.apache.axiom.om.OMAbstractFactory.getOMFactory(),

+//                               new org.apache.axis2.util.StreamWrapper(param.getPullParser(server.EchoString.MY_QNAME)));

+//                            org.apache.axiom.om.OMElement documentElement = builder.getDocumentElement();

+//                            ((org.apache.axiom.om.impl.OMNodeEx) documentElement).setParent(null); // remove the parent link

+//                            return documentElement;

+//                        }else{

+//

+//                           //todo finish this onece the bean serializer has the necessary methods

+//                            return null;

+//                        }

+//                    }

+//

+//                    private  org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, server.EchoString param, boolean optimizeContent){

+//                        if (param instanceof org.apache.axis2.databinding.ADBBean){

+//                            org.apache.axis2.databinding.ADBSOAPModelBuilder builder = new

+//                                    org.apache.axis2.databinding.ADBSOAPModelBuilder(param.getPullParser(server.EchoString.MY_QNAME),

+//                                                                                     factory);

+//                            return builder.getEnvelope();

+//                        }else{

+//

+//                           //todo finish this onece the bean serializer has the necessary methods

+//                            return null;

+//                        }

+//                    }

+//

+//                    private  org.apache.axiom.om.OMElement  toOM(server.EchoStringResponse param, boolean optimizeContent){

+//                        if (param instanceof org.apache.axis2.databinding.ADBBean){

+//                            org.apache.axiom.om.impl.builder.StAXOMBuilder builder

+//                                       = new org.apache.axiom.om.impl.builder.StAXOMBuilder

+//                            (org.apache.axiom.om.OMAbstractFactory.getOMFactory(),

+//                               new org.apache.axis2.util.StreamWrapper(param.getPullParser(server.EchoStringResponse.MY_QNAME)));

+//                            org.apache.axiom.om.OMElement documentElement = builder.getDocumentElement();

+//                            ((org.apache.axiom.om.impl.OMNodeEx) documentElement).setParent(null); // remove the parent link

+//                            return documentElement;

+//                        }else{

+//

+//                           //todo finish this onece the bean serializer has the necessary methods

+//                            return null;

+//                        }

+//                    }

+

+                    private  org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, server.EchoStringResponse param, boolean optimizeContent){

+                        if (param instanceof org.apache.axis2.databinding.ADBBean){

+                            org.apache.axis2.databinding.ADBSOAPModelBuilder builder = new

+                                    org.apache.axis2.databinding.ADBSOAPModelBuilder(param.getPullParser(server.EchoStringResponse.MY_QNAME),

+                                                                                     factory);

+                            return builder.getEnvelope();

+                        }else{

+                           

+                           //todo finish this onece the bean serializer has the necessary methods

+                            return null;

+                        }

+                    }

+                

+

+           /**

+           *  get the default envelope

+           */

+           private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory){

+                return factory.getDefaultEnvelope();

+           }

+

+

+            private  java.lang.Object fromOM(org.apache.axiom.om.OMElement param,

+            java.lang.Class type){

+

+                try {

+                       

+                      if (server.EchoString.class.equals(type)){

+                           return server.EchoString.Factory.parse(param.getXMLStreamReaderWithoutCaching());

+                      }

+                              

+                      if (server.EchoStringResponse.class.equals(type)){

+                           return server.EchoStringResponse.Factory.parse(param.getXMLStreamReaderWithoutCaching());

+                      }

+                              

+                } catch (Exception e) {

+                     throw new RuntimeException(e);

+                }

+

+                return null;

+            }

+

+        

+

+        }

+    
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/server/EchoServiceSkeleton.java b/rampart_1_1/modules/jaxws/test/server/EchoServiceSkeleton.java
new file mode 100644
index 0000000..f278e0e
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/server/EchoServiceSkeleton.java
@@ -0,0 +1,30 @@
+/**

+ * EchoServiceSkeleton.java

+ *

+ * This file was auto-generated from WSDL

+ * by the Apache Axis2 version: SNAPSHOT Apr 09, 2006 (10:20:36 CDT)

+ */

+package server;

+

+import server.EchoStringResponse;

+

+/**

+ *  EchoServiceSkeleton java skeleton for the axisService

+ */

+public class EchoServiceSkeleton {

+

+    /**

+     * Auto generated method signature

+     * @param param0

+     */

+    public  server.EchoStringResponse echoString(server.EchoString input) {

+        System.out.println(">> Entering method [EchoStringResponse EchoServiceSkeleton.echoString(EchoString)]");

+        System.out.println(">> Endpoint received input [" + input.getInput() + "]");

+        System.out.println(">> Returning string [ECHO:" + input.getInput() + "]");

+        System.out.println("<< Done with method [EchoStringResponse EchoServiceSkeleton.echoString(EchoString)]");

+        EchoStringResponse output = new EchoStringResponse();

+        output.setEchoStringReturn("ECHO:" + input.getInput());

+        return output;

+    }

+}

+    
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/server/EchoString.java b/rampart_1_1/modules/jaxws/test/server/EchoString.java
new file mode 100644
index 0000000..fbf8ede
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/server/EchoString.java
@@ -0,0 +1,133 @@
+

+            /**

+            * EchoString.java

+            *

+            * This file was auto-generated from WSDL

+            * by the Apache Axis2 version: #axisVersion# #today#

+            */

+

+            package server;

+            /**

+            *  EchoString bean class

+            */

+        

+        public  class EchoString

+        implements org.apache.axis2.databinding.ADBBean{

+        

+                public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(

+                "http://test",

+                "echoString",

+                "ns1");

+

+            

+

+

+            /**

+            * field for Input

+            */

+

+            protected java.lang.String localInput ;

+           

+           

+

+           /**

+           * Auto generated getter method

+           * @return java.lang.String

+           */

+           public  java.lang.String getInput(){

+               return localInput;

+           }

+

+           

+            

+                    /**

+                   * Auto generated setter method

+                   * @param param Input

+                   */

+                   public void setInput(java.lang.String param){

+                    

+                   this.localInput=param;

+                   }

+                

+

+        /**

+        * databinding method to get an XML representation of this object

+        *

+        */

+        public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName){

+

+

+        

+                 java.util.ArrayList elementList = new java.util.ArrayList();

+                 java.util.ArrayList attribList = new java.util.ArrayList();

+

+                

+                             elementList.add(new javax.xml.namespace.QName("http://test",

+                                                                      "input"));

+                            

+                                    elementList.add(localInput==null?null:

+                                     org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localInput));

+                                

+

+                return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(), attribList.toArray());

+            

+            

+

+        }

+

+

+

+

+    

+

+        /**

+             *  Factory class that keeps the parse method

+             */

+           public static class Factory{

+

+               /**

+               * static method to create the object

+               */

+               public static EchoString parse(javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{

+               EchoString object = new EchoString();

+               try {

+               int event = reader.getEventType();

+

+              //event better be a START_ELEMENT. if not we should go up to the start element here

+               while (event!= javax.xml.stream.XMLStreamReader.START_ELEMENT) {

+                   event = reader.next();

+               }

+

+               

+               if (!MY_QNAME.equals(reader.getName())){

+                           throw new Exception("Wrong QName");

+               }

+               

+                       org.apache.axis2.databinding.utils.SimpleElementReaderStateMachine stateMachine1

+                         = new org.apache.axis2.databinding.utils.SimpleElementReaderStateMachine();

+                       javax.xml.namespace.QName startQname1 = new javax.xml.namespace.QName(

+                                            "http://test",

+                                           "input");

+                       stateMachine1.setElementNameToTest(startQname1);

+                       stateMachine1.setNillable();

+                       stateMachine1.read(reader);

+                       object.setInput(

+                         stateMachine1.getText()==null?null:

+                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToString(

+                                  stateMachine1.getText()));

+                             

+               } catch (javax.xml.stream.XMLStreamException e) {

+                    throw new java.lang.Exception(e);

+               }

+

+               return object;

+               }

+               }//end of factory class

+

+

+     

+

+        

+        }

+           

+          
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/server/EchoStringResponse.java b/rampart_1_1/modules/jaxws/test/server/EchoStringResponse.java
new file mode 100644
index 0000000..e9f075f
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/server/EchoStringResponse.java
@@ -0,0 +1,111 @@
+/**

+ * EchoStringResponse.java

+ *

+ * This file was auto-generated from WSDL

+ * by the Apache Axis2 version: #axisVersion# #today#

+ */

+package server;

+

+/**

+ *  EchoStringResponse bean class

+ */

+public  class EchoStringResponse implements org.apache.axis2.databinding.ADBBean{

+    

+    public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(

+            "http://test",

+            "echoStringResponse",

+            "ns1");

+

+    /**

+     * field for EchoStringReturn

+     */

+    protected java.lang.String localEchoStringReturn;

+

+    /**

+     * Auto generated getter method

+     * @return java.lang.String

+     */

+    public java.lang.String getEchoStringReturn() {

+        return localEchoStringReturn;

+    }

+

+    /**

+     * Auto generated setter method

+     * @param param EchoStringReturn

+     */

+    public void setEchoStringReturn(java.lang.String param) {

+

+        this.localEchoStringReturn = param;

+    }

+

+    /**

+     * databinding method to get an XML representation of this object

+     *

+     */

+    public javax.xml.stream.XMLStreamReader getPullParser(

+            javax.xml.namespace.QName qName) {

+

+        java.util.ArrayList elementList = new java.util.ArrayList();

+        java.util.ArrayList attribList = new java.util.ArrayList();

+

+        elementList.add(new javax.xml.namespace.QName("http://test",

+                "echoStringReturn"));

+

+        elementList.add(localEchoStringReturn == null ? null

+                : org.apache.axis2.databinding.utils.ConverterUtil

+                        .convertToString(localEchoStringReturn));

+

+        return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(

+                qName, elementList.toArray(), attribList.toArray());

+

+    }

+

+    /**

+     *  Factory class that keeps the parse method

+     */

+    public static class Factory {

+

+        /**

+         * static method to create the object

+         */

+        

+    	public static EchoStringResponse parse(

+                javax.xml.stream.XMLStreamReader reader)

+                throws java.lang.Exception {

+            EchoStringResponse object = new EchoStringResponse();

+            try {

+                int event = reader.getEventType();

+

+                //event better be a START_ELEMENT. if not we should go up to the start element here

+                while (event != javax.xml.stream.XMLStreamReader.START_ELEMENT) {

+                    event = reader.next();

+                }

+

+                if (!MY_QNAME.equals(reader.getName())) {

+                    throw new Exception("Wrong QName");

+                }

+

+                org.apache.axis2.databinding.utils.SimpleElementReaderStateMachine stateMachine1 = new org.apache.axis2.databinding.utils.SimpleElementReaderStateMachine();

+                javax.xml.namespace.QName startQname1 = new javax.xml.namespace.QName(

+                        "http://test", "echoStringReturn");

+                stateMachine1.setElementNameToTest(startQname1);

+                stateMachine1.setNillable();

+                stateMachine1.read(reader);

+                object

+                        .setEchoStringReturn(stateMachine1.getText() == null ? null

+                                : org.apache.axis2.databinding.utils.ConverterUtil

+                                        .convertToString(stateMachine1

+                                                .getText().getBytes()));

+

+            } catch (javax.xml.stream.XMLStreamException e) {

+                throw new java.lang.Exception(e);

+            }

+

+            return object;

+        }

+        

+    }//end of factory class

+

+}

+           

+          
\ No newline at end of file
diff --git a/rampart_1_1/modules/jaxws/test/server/META-INF/services.xml b/rampart_1_1/modules/jaxws/test/server/META-INF/services.xml
new file mode 100644
index 0000000..c92cf97
--- /dev/null
+++ b/rampart_1_1/modules/jaxws/test/server/META-INF/services.xml
@@ -0,0 +1,12 @@
+<serviceGroup>

+ <service name="EchoService">

+  <messageReceivers>

+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="server.EchoServiceMessageReceiverInOut"/>

+  </messageReceivers>

+  <parameter locked="false" name="ServiceClass">server.EchoServiceSkeleton</parameter>

+  <operation name="echoString" mep="http://www.w3.org/2004/08/wsdl/in-out">

+    <actionMapping/>

+  </operation>

+ </service>

+</serviceGroup>

+

diff --git a/rampart_1_1/modules/jibx/maven.xml b/rampart_1_1/modules/jibx/maven.xml
new file mode 100644
index 0000000..eda92ad
--- /dev/null
+++ b/rampart_1_1/modules/jibx/maven.xml
@@ -0,0 +1,29 @@
+<?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:u="jelly:util"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+    
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+
+    <!-- run the JiBX binding compiler after the Java compiler -->
+    <preGoal name="test:test">
+      <java classname="org.jibx.binding.Compile" fork="true">
+        	<classpath refid="maven.dependency.classpath"/>
+        	<classpath location="target/test-classes"/>
+          <arg value="test-resources/binding/customer-binding.xml"/>
+          <arg value="test-resources/binding/library-binding.xml"/>
+      </java> 
+    </preGoal>
+    
+</project>
diff --git a/rampart_1_1/modules/jibx/project.properties b/rampart_1_1/modules/jibx/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/jibx/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/jibx/project.xml b/rampart_1_1/modules/jibx/project.xml
new file mode 100644
index 0000000..c942029
--- /dev/null
+++ b/rampart_1_1/modules/jibx/project.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <name>Apache Axis 2.0 - JiBX Data Binding</name>

+    <id>axis2-jibx</id>

+    <groupId>org.apache.axis2</groupId>

+    <description>JiBX data binding support for Axis 2.0</description>

+

+    <dependencies>

+       <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+       <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>${XmlSchema.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>${neethi.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-codegen</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-java2wsdl</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>${wsdl4j.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+

+        <!-- external JARs -->

+        <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant</artifactId>

+            <version>${ant.version}</version>

+            <type>jar</type>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.bcel</groupId>

+            <artifactId>bcel</artifactId>

+            <version>${bcel.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-httpclient</groupId>

+            <artifactId>commons-httpclient</artifactId>

+            <version>${commons.httpclient.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-codec</groupId>

+            <artifactId>commons-codec</artifactId>

+            <version>${commons.codec.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>httpcomponents-httpcore</groupId>

+            <artifactId>jakarta-httpcore</artifactId>

+            <version>${jakarta.httpcore.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency> 

+        <dependency>

+            <groupId>backport-util-concurrent</groupId>

+            <artifactId>backport-util-concurrent</artifactId>

+            <version>${backport_util_concurrent.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>${stax.impl.groupid}</groupId>

+            <artifactId>${stax.impl.artifactid}</artifactId>

+            <version>${stax.impl.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javamail.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>

+        <dependency>

+            <groupId>jibx</groupId>

+            <artifactId>jibx-bind</artifactId>

+            <version>${jibx.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>jibx</groupId>

+            <artifactId>jibx-run</artifactId>

+            <version>${jibx.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+	  <dependency>

+            <groupId>incubator-woden</groupId>

+            <artifactId>woden</artifactId>

+            <version>${woden.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+

+    </dependencies>

+    <build/>

+    <reports/>

+</project>

diff --git a/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/CodeGenerationUtility.java b/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/CodeGenerationUtility.java
new file mode 100644
index 0000000..6de5495
--- /dev/null
+++ b/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/CodeGenerationUtility.java
@@ -0,0 +1,828 @@
+/*
+ * Copyright 2006 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.axis2.jibx;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisMessage;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.WSDLUtil;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.extension.JiBXExtension;
+import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
+import org.apache.axis2.wsdl.util.Constants;
+import org.apache.axis2.wsdl.util.MessagePartInformationHolder;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
+import org.apache.ws.commons.schema.XmlSchemaParticle;
+import org.apache.ws.commons.schema.XmlSchemaSequence;
+import org.apache.ws.commons.schema.XmlSchemaSimpleType;
+import org.apache.ws.commons.schema.XmlSchemaType;
+import org.jibx.binding.model.BindingElement;
+import org.jibx.binding.model.ElementBase;
+import org.jibx.binding.model.FormatElement;
+import org.jibx.binding.model.IncludeElement;
+import org.jibx.binding.model.MappingElement;
+import org.jibx.binding.model.ModelVisitor;
+import org.jibx.binding.model.NamespaceElement;
+import org.jibx.binding.model.ValidationContext;
+import org.jibx.runtime.JiBXException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * Framework-linked code used by JiBX data binding support. This is accessed via
+ * reflection from the JiBX code generation extension when JiBX data binding is
+ * selected. JiBX uses a different approach to unwrapping method parameters from
+ * that implemented by ADB, and since the ADB technique is assumed by all code
+ * generation templates this has to create the same data structures. These data
+ * structures are undocumented, and can only be determined by going through the
+ * {@link org.apache.axis2.wsdl.codegen.extension.SchemaUnwrapperExtension} and
+ * {@link org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter}
+ * code.
+ */
+public class CodeGenerationUtility {
+    private static final String SCHEMA_NAMESPACE = "http://www.w3.org/2001/XMLSchema";
+    
+    private final CodeGenConfiguration codeGenConfig;
+    
+    private static HashSet s_primitiveSet = new HashSet();
+    static {
+        s_primitiveSet.add("boolean");
+        s_primitiveSet.add("byte");
+        s_primitiveSet.add("char");
+        s_primitiveSet.add("double");
+        s_primitiveSet.add("float");
+        s_primitiveSet.add("int");
+        s_primitiveSet.add("long");
+        s_primitiveSet.add("short");
+        s_primitiveSet.add("void");
+    }
+    
+    private static HashMap s_wrapperMap = new HashMap();
+    static {
+        s_wrapperMap.put("boolean", "Boolean");
+        s_wrapperMap.put("byte", "Byte");
+        s_wrapperMap.put("char", "Character");
+        s_wrapperMap.put("double", "Double");
+        s_wrapperMap.put("float", "Float");
+        s_wrapperMap.put("int", "Integer");
+        s_wrapperMap.put("long", "Long");
+        s_wrapperMap.put("short", "Short");
+    }
+    
+    /** Reserved words for Java (keywords and literals). */
+    private static final HashSet s_reservedWords = new HashSet();
+    static {
+
+        // keywords
+        s_reservedWords.add("abstract");
+        s_reservedWords.add("assert");
+        s_reservedWords.add("boolean");
+        s_reservedWords.add("break");
+        s_reservedWords.add("byte");
+        s_reservedWords.add("case");
+        s_reservedWords.add("catch");
+        s_reservedWords.add("char");
+        s_reservedWords.add("class");
+        s_reservedWords.add("const");
+        s_reservedWords.add("continue");
+
+        s_reservedWords.add("default");
+        s_reservedWords.add("do");
+        s_reservedWords.add("double");
+        s_reservedWords.add("else");
+        s_reservedWords.add("enum");
+        s_reservedWords.add("extends");
+        s_reservedWords.add("final");
+        s_reservedWords.add("finally");
+        s_reservedWords.add("float");
+        s_reservedWords.add("for");
+        s_reservedWords.add("goto");
+
+        s_reservedWords.add("if");
+        s_reservedWords.add("implements");
+        s_reservedWords.add("import");
+        s_reservedWords.add("instanceof");
+        s_reservedWords.add("int");
+        s_reservedWords.add("interface");
+        s_reservedWords.add("long");
+        s_reservedWords.add("native");
+        s_reservedWords.add("new");
+        s_reservedWords.add("package");
+
+        s_reservedWords.add("private");
+        s_reservedWords.add("protected");
+        s_reservedWords.add("public");
+        s_reservedWords.add("return");
+        s_reservedWords.add("short");
+        s_reservedWords.add("static");
+        s_reservedWords.add("strictfp");
+        s_reservedWords.add("super");
+        s_reservedWords.add("switch");
+        s_reservedWords.add("synchronized");
+
+        s_reservedWords.add("this");
+        s_reservedWords.add("throw");
+        s_reservedWords.add("throws");
+        s_reservedWords.add("transient");
+        s_reservedWords.add("try");
+        s_reservedWords.add("void");
+        s_reservedWords.add("volatile");
+        s_reservedWords.add("while");
+
+        // literals
+        s_reservedWords.add("true");
+        s_reservedWords.add("false");
+        s_reservedWords.add("null");
+        
+        // variable names used by template unwrapped code generation
+        // TODO change templates to use $xxx names, block generation from WSDL
+        s_reservedWords.add("true");
+        s_reservedWords.add("uctx");
+        s_reservedWords.add("child");
+        s_reservedWords.add("wrapper");
+    }
+    
+    /**
+     * Constructor.
+     * 
+     * @param config code generation configuration
+     */
+    public CodeGenerationUtility(CodeGenConfiguration config) {
+        codeGenConfig = config;
+    }
+    
+    /**
+     * Configure the code generation based on the supplied parameters and WSDL.
+     * This first gets type mappings from binding definition, then goes through
+     * the operations checking the input and output messages. If unwrapping is
+     * disabled the message element must be handled directly by a mapping. If
+     * unwrapping is enabled, this checks that the message element is of the
+     * proper form (a sequence of other elements, which all have maxOccurs="1").
+     * It then generates an unwrapping description and adds it to the code
+     * generation configuration, where it'll be picked up and included in the
+     * XML passed to code generation. This also constructs a type mapping, since
+     * that's required by the base Axis2 code generation. In the case of
+     * unwrapped elements, the type mapping includes a synthesized qname for
+     * each unwrapped parameter, and the detailed information is set on the
+     * message information. Sound confusing? Welcome to Axis2 code generation.
+     * 
+     * @param path binding path (<code>null</code> if none)
+     */
+    public void engage(String path) {
+        
+        // make sure the binding definition file is present, if passed
+        File file = null;
+        if (path != null) {
+            file = new File(path);
+            if (!file.exists()) {
+                throw new RuntimeException("jibx binding definition file " + path + " not found");
+            }
+        }
+        try {
+            
+            // set flag for unwrapping
+            boolean unwrap = !codeGenConfig.isParametersWrapped();
+            
+            // initialize the binding information
+            BindingElement binding = null;
+            if (file == null) {
+                
+                // unwrapped can be used without a binding, but wrapped requires one
+                if (!unwrap) {
+                    throw new RuntimeException("JiBX wrapped support requires a binding definition to be provided using the -E" +
+                        JiBXExtension.BINDING_PATH_OPTION + " {file-path} parameter");
+                }
+                
+            } else {
+                
+                // Read the JiBX binding definition into memory. The binding definition
+                // is only prevalidated so as not to require the user to have all
+                // the referenced classes in the classpath, though this does make for
+                // added work in finding the namespaces.
+                ValidationContext vctx = BindingElement.newValidationContext();
+                binding = BindingElement.readBinding(new FileInputStream(file), path, vctx);
+                binding.setBaseUrl(file.toURL());
+                vctx.setBindingRoot(binding);
+                IncludePrevalidationVisitor ipv = new IncludePrevalidationVisitor(vctx);
+                vctx.tourTree(binding, ipv);
+                if (vctx.getErrorCount() != 0 || vctx.getFatalCount() != 0) {
+                    throw new RuntimeException("invalid jibx binding definition file " + path);
+                }
+            }
+            
+            // create table with all built-in format definitions
+            Map simpleTypeMap = new HashMap();
+            buildFormat("byte", "byte",
+                "org.jibx.runtime.Utility.serializeByte",
+                "org.jibx.runtime.Utility.parseByte", "0", simpleTypeMap);
+            buildFormat("unsignedShort", "char",
+                "org.jibx.runtime.Utility.serializeChar",
+                "org.jibx.runtime.Utility.parseChar", "0", simpleTypeMap);
+            buildFormat("double", "double",
+                "org.jibx.runtime.Utility.serializeDouble",
+                "org.jibx.runtime.Utility.parseDouble", "0.0", simpleTypeMap);
+            buildFormat("float", "float",
+                "org.jibx.runtime.Utility.serializeFloat",
+                "org.jibx.runtime.Utility.parseFloat", "0.0", simpleTypeMap);
+            buildFormat("int", "int",
+                "org.jibx.runtime.Utility.serializeInt",
+                "org.jibx.runtime.Utility.parseInt", "0", simpleTypeMap);
+            buildFormat("long", "long",
+                "org.jibx.runtime.Utility.serializeLong",
+                "org.jibx.runtime.Utility.parseLong", "0", simpleTypeMap);
+            buildFormat("short", "short",
+                "org.jibx.runtime.Utility.serializeShort",
+                "org.jibx.runtime.Utility.parseShort", "0", simpleTypeMap);
+            buildFormat("boolean", "boolean",
+                "org.jibx.runtime.Utility.serializeBoolean",
+                "org.jibx.runtime.Utility.parseBoolean", "false",
+                simpleTypeMap);
+            buildFormat("dateTime", "java.util.Date",
+                "org.jibx.runtime.Utility.serializeDateTime",
+                "org.jibx.runtime.Utility.deserializeDateTime", null,
+                simpleTypeMap);
+            buildFormat("date", "java.sql.Date",
+                "org.jibx.runtime.Utility.serializeSqlDate",
+                "org.jibx.runtime.Utility.deserializeSqlDate", null,
+                simpleTypeMap);
+            buildFormat("time", "java.sql.Time",
+                "org.jibx.runtime.Utility.serializeSqlTime",
+                "org.jibx.runtime.Utility.deserializeSqlTime", null,
+                simpleTypeMap);
+            buildFormat("base64Binary", "byte[]",
+                "org.jibx.runtime.Utility.serializeBase64",
+                "org.jibx.runtime.Utility.deserializeBase64", null,
+                simpleTypeMap);
+            buildFormat("string","java.lang.String", null, null, null,
+                simpleTypeMap);
+            
+            // collect all the top-level mapping and format definitions
+            Map elementMap = new HashMap();
+            Map complexTypeMap = new HashMap();
+            if (binding != null) {
+                collectTopLevelComponents(binding, null, elementMap,
+                    complexTypeMap, simpleTypeMap);
+            }
+            
+            // make sure classes will be generated for abstract mappings
+            if (unwrap && complexTypeMap.size() > 0 && !binding.isForceClasses()) {
+                throw new RuntimeException("unwrapped binding must use force-classes='true' option in " + path);
+            }
+            
+            // force off inappropriate option (set by error in options handling)
+            codeGenConfig.setPackClasses(false);
+
+            // configure handling for all operations of service
+            codeGenConfig.setTypeMapper(new NamedParameterTypeMapper());
+            Iterator operations = codeGenConfig.getAxisService().getOperations();
+            Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+            int opindex = 0;
+            Map typeMappedClassMap = new HashMap();
+            String mappedclass = null;
+            Set objins = new HashSet();
+            Set objouts = new HashSet();
+            Set objfaults = new HashSet();
+            while (operations.hasNext()) {
+                
+                // get the basic operation information
+                AxisOperation op = (AxisOperation)operations.next();
+                String mep = op.getMessageExchangePattern();
+                AxisMessage inmsg = null;
+                AxisMessage outmsg = null;
+                if (WSDLUtil.isInputPresentForMEP(mep)) {
+                    inmsg = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                    if (inmsg == null) {
+                        throw new RuntimeException("Expected input message not found for operation " + op.getName());
+                    }
+                }
+                if (WSDLUtil.isOutputPresentForMEP(mep)) {
+                    outmsg = op.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+                    if (outmsg == null) {
+                        throw new RuntimeException("Expected output message not found for operation " + op.getName());
+                    }
+                }
+                if (unwrap) {
+                    
+                    // use unwrapping for both input and output
+                    String receivername = "jibxReceiver" + opindex++;
+                    Element dbmethod = doc.createElement("dbmethod");
+                    dbmethod.setAttribute("receiver-name", receivername);
+                    dbmethod.setAttribute("method-name", op.getName().getLocalPart());
+                    Set nameset = new HashSet(s_reservedWords);
+                    if (inmsg != null) {
+                        dbmethod.appendChild(unwrapMessage(inmsg, false, simpleTypeMap, complexTypeMap, typeMappedClassMap, nameset, doc));
+                    }
+                    if (outmsg != null) {
+                        dbmethod.appendChild(unwrapMessage(outmsg, true, simpleTypeMap, complexTypeMap, typeMappedClassMap, nameset, doc));
+                    }
+                    
+                    // save unwrapping information for use in code generation
+                    op.addParameter(new Parameter(Constants.DATABINDING_GENERATED_RECEIVER, receivername));
+                    op.addParameter(new Parameter(Constants.DATABINDING_GENERATED_IMPLEMENTATION, Boolean.TRUE));
+                    op.addParameter(new Parameter(Constants.DATABINDING_OPERATION_DETAILS, dbmethod));
+                    
+                } else {
+                    
+                    // concrete mappings, just save the mapped class name(s)
+                    if (inmsg != null) {
+                        mappedclass = mapMessage(inmsg, elementMap);
+                        objins.add(mappedclass);
+                    }
+                    if (outmsg != null) {
+                        mappedclass = mapMessage(outmsg, elementMap);
+                        objouts.add(mappedclass);
+                    }
+                    
+                }
+                
+                // always handle faults as wrapped
+                for (Iterator iter = op.getFaultMessages().iterator(); iter.hasNext();) {
+                    mappedclass = mapMessage((AxisMessage)iter.next(), elementMap);
+                    objfaults.add(mappedclass);
+                }
+            }
+            
+            // add type usage information as service parameter
+            List details = new ArrayList();
+            Element bindinit = doc.createElement("initialize-binding");
+            if (!typeMappedClassMap.isEmpty()) {
+                for (Iterator iter = typeMappedClassMap.keySet().iterator(); iter.hasNext();) {
+                    QName tname = (QName)iter.next();
+                    String clsindex = ((Integer)typeMappedClassMap.get(tname)).toString();
+                    Element detail = doc.createElement("abstract-type");
+                    detail.setAttribute("ns", tname.getNamespaceURI());
+                    detail.setAttribute("name", tname.getLocalPart());
+                    detail.setAttribute("type-index", clsindex);
+                    bindinit.appendChild(detail);
+                    if (mappedclass == null) {
+                        MappingElement mapping = (MappingElement)complexTypeMap.get(tname);
+                        mappedclass = mapping.getClassName();
+                    }
+                }
+            }
+            if (mappedclass == null) {
+                mappedclass = "";
+            }
+            bindinit.setAttribute("bound-class", mappedclass);
+            details.add(bindinit);
+            
+            // add details for all objects used as inputs/outputs/faults
+            for (Iterator iter = objins.iterator(); iter.hasNext();) {
+                String classname = (String)iter.next();
+                Element detail = doc.createElement("object-input");
+                detail.setAttribute("type", classname);
+                details.add(detail);
+            }
+            for (Iterator iter = objouts.iterator(); iter.hasNext();) {
+                String classname = (String)iter.next();
+                Element detail = doc.createElement("object-output");
+                detail.setAttribute("type", classname);
+                details.add(detail);
+            }
+            for (Iterator iter = objfaults.iterator(); iter.hasNext();) {
+                String classname = (String)iter.next();
+                Element detail = doc.createElement("object-fault");
+                detail.setAttribute("type", classname);
+                details.add(detail);
+            }
+            codeGenConfig.getAxisService().addParameter(new Parameter(Constants.DATABINDING_SERVICE_DETAILS, details));
+            
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException(e);
+        } catch (JiBXException e) {
+            throw new RuntimeException(e);
+        } catch (ParserConfigurationException e) {
+            throw new RuntimeException(e);
+        } catch (AxisFault e) {
+            throw new RuntimeException(e);
+        } catch (MalformedURLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+    
+    /**
+     * Add format definition for type with built-in JiBX handling to map.
+     * 
+     * @param stype schema type name
+     * @param jtype java type name
+     * @param sname serializer method name
+     * @param dname deserializer method name
+     * @param dflt default value
+     * @param map schema type qname to format definition map
+     */
+    private static void buildFormat(String stype, String jtype, String sname,
+        String dname, String dflt, Map map) {
+        FormatElement format = new FormatElement();
+        format.setTypeName(jtype);
+        format.setSerializerName(sname);
+        format.setDeserializerName(dname);
+        format.setDefaultText(dflt);
+        map.put(new QName(SCHEMA_NAMESPACE, stype), format);
+    }
+    
+    /**
+     * Handles unwrapping a message. This generates and returns the detailed
+     * description of how the message is to be unwrapped. It also creates the
+     * data structures expected by the code generation in order to be somewhat
+     * compatible with ADB unwrapping.
+     * 
+     * @param msg message to be unwrapped
+     * @param isout output message flag (wrapper inherits inner type, for XSLTs)
+     * @param simpleTypeMap binding formats
+     * @param complexTypeMap binding mappings
+     * @param typeMappedClassMap map from type qname to index
+     * @param nameset parameter variable names used in method
+     * @param doc document used for DOM components
+     * @return detailed description element for code generation
+     */
+    private Element unwrapMessage(AxisMessage msg, boolean isout,
+        Map simpleTypeMap, Map complexTypeMap, Map typeMappedClassMap,
+        Set nameset, Document doc) {
+        
+        // find the schema definition for this message element
+        QName qname = msg.getElementQName();
+        if (qname == null) {
+            throw new RuntimeException("No element reference in message " + msg.getName());
+        }
+        XmlSchemaElement wrapdef = codeGenConfig.getAxisService().getSchemaElement(qname);
+        if (wrapdef == null) {
+            throw new RuntimeException("Cannot unwrap - no definition found for element " + qname);
+        }
+        XmlSchemaType type = wrapdef.getSchemaType();
+        
+        // create document to hold data binding details for element
+        Element wrapdetail = doc.createElement(isout ? "out-wrapper" : "in-wrapper");
+        wrapdetail.setAttribute("ns", qname.getNamespaceURI());
+        wrapdetail.setAttribute("name", qname.getLocalPart());
+        
+        // dig down to the sequence
+        List partNameList = new ArrayList();
+        String wrappertype = "";
+        if (type instanceof XmlSchemaComplexType) {
+            XmlSchemaComplexType ctype = (XmlSchemaComplexType)type;
+            if (ctype.getAttributes().getCount() != 0) {
+                throw new RuntimeException("Cannot unwrap element " +
+                    qname + ": attributes not allowed on type to be unwrapped");
+            }
+            XmlSchemaParticle particle = ctype.getParticle();
+            if (!(particle instanceof XmlSchemaSequence)) {
+                throw new RuntimeException("Cannot unwrap element " +
+                    qname + ": type to be unwrapped must be a sequence");
+            }
+            if (particle.getMinOccurs() != 1 || particle.getMaxOccurs() != 1) {
+                throw new RuntimeException("Cannot unwrap element " +
+                    qname + ": contained sequence must have minOccurs='1' and maxOccurs='1'");
+            }
+            XmlSchemaSequence sequence = (XmlSchemaSequence)particle;
+            
+            // add child param element matching each child of wrapper element
+            QName opName = ((AxisOperation)msg.getParent()).getName();
+            XmlSchemaObjectCollection items = sequence.getItems();
+            for (Iterator iter = items.getIterator(); iter.hasNext();) {
+                
+                // check that child item obeys the unwrapping rules
+                XmlSchemaParticle item = (XmlSchemaParticle)iter.next();
+                if (!(item instanceof XmlSchemaElement)) {
+                    throw new RuntimeException("Cannot unwrap element " +
+                        qname + ": only element items allowed in seqence");
+                }
+                XmlSchemaElement element = (XmlSchemaElement)item;
+                QName typename = element.getSchemaTypeName();
+                if (typename == null) {
+                    throw new RuntimeException("Cannot unwrap element " +
+                        qname + ": all elements in contained sequence must reference a named type");
+                }
+                
+                // add element to output with details of this element handling
+                Element param = doc.createElement(isout ? "return-element" : "parameter-element");
+                QName itemname = element.getQName();
+                param.setAttribute("ns", itemname.getNamespaceURI());
+                param.setAttribute("name", itemname.getLocalPart());
+                param.setAttribute("java-name", toJavaName(itemname.getLocalPart(), nameset));
+                param.setAttribute("nillable", Boolean.toString(element.isNillable()));
+                param.setAttribute("optional", Boolean.toString(element.getMinOccurs() == 0));
+                boolean isarray = element.getMaxOccurs() > 1;
+                param.setAttribute("array", Boolean.toString(isarray));
+                String javatype;
+                if (element.getSchemaType() instanceof XmlSchemaSimpleType) {
+                    
+                    // simple type translates to format element in binding
+                    FormatElement format = (FormatElement)simpleTypeMap.get(typename);
+                    if (format == null) {
+                        throw new RuntimeException("Cannot unwrap element " +
+                            qname + ": no format definition found for type " +
+                            typename + " (used by element " + itemname + ')');
+                    }
+                    javatype = format.getTypeName();
+                    param.setAttribute("form", "simple");
+                    param.setAttribute("serializer", format.getSerializerName());
+                    param.setAttribute("deserializer", format.getDeserializerName());
+                    
+                    // convert primitive types to wrapper types for nillable
+                    if (element.isNillable() && s_wrapperMap.containsKey(javatype)) {
+                        param.setAttribute("wrapped-primitive", "true");
+                        param.setAttribute("value-method", javatype + "Value");
+                        javatype = (String)s_wrapperMap.get(javatype);
+                    } else {
+                        param.setAttribute("wrapped-primitive", "false");
+                        String dflt = element.getDefaultValue();
+                        if (dflt == null) {
+                            dflt = format.getDefaultText();
+                        }
+                        if (dflt != null) {
+                            param.setAttribute("default", dflt);
+                        }
+                    }
+                    
+                } else {
+                    
+                    // complex type translates to abstract mapping in binding
+                    MappingElement mapping = (MappingElement)complexTypeMap.get(typename);
+                    if (mapping == null) {
+                        throw new RuntimeException("Cannot unwrap element " +
+                            qname + ": no abstract mapping definition found for type " +
+                            typename + " (used by element " + itemname + ')');
+                    }
+                    Integer tindex = (Integer)typeMappedClassMap.get(typename);
+                    if (tindex == null) {
+                        tindex = new Integer(typeMappedClassMap.size());
+                        typeMappedClassMap.put(typename, tindex);
+                    }
+                    javatype = mapping.getClassName();
+                    param.setAttribute("form", "complex");
+                    param.setAttribute("type-index", tindex.toString());
+                    
+                }
+                param.setAttribute("java-type", javatype);
+                boolean isobj = !s_primitiveSet.contains(javatype);
+                String fulltype = javatype;
+                if (isarray) {
+                    fulltype += "[]";
+                    isobj = false;
+                }
+                param.setAttribute("object", Boolean.toString(isobj));
+                if (isout) {
+                    wrappertype = fulltype;
+                } else {
+                    wrappertype = "java.lang.Object";
+                }
+                wrapdetail.appendChild(param);
+                
+                // this magic code comes from org.apache.axis2.wsdl.codegen.extension.SchemaUnwrapperExtension
+                //  it's used here to fit into the ADB-based code generation model
+                QName partqname = WSDLUtil.getPartQName(opName.getLocalPart(),
+                    WSDLConstants.INPUT_PART_QNAME_SUFFIX, itemname.getLocalPart());
+                partNameList.add(partqname);
+                
+                // add type mapping so we look like ADB
+                codeGenConfig.getTypeMapper().addTypeMappingName(partqname, fulltype);
+            }
+            
+        } else if (type != null) {
+            throw new RuntimeException("Cannot unwrap element " + qname +
+                ": not a complexType definition");
+        }
+        if (wrapdetail.getFirstChild() == null) {
+            wrapdetail.setAttribute("empty", "true");
+            wrappertype = "";
+        } else {
+            wrapdetail.setAttribute("empty", "false");
+        }
+
+        // this magic code comes from org.apache.axis2.wsdl.codegen.extension.SchemaUnwrapperExtension
+        //  it's used here to fit into the ADB-based code generation model
+        MessagePartInformationHolder infoHolder = new MessagePartInformationHolder();
+        infoHolder.setOperationName(((AxisOperation)msg.getParent()).getName());
+        infoHolder.setPartsList(partNameList);
+        try {
+            msg.addParameter(new Parameter(Constants.UNWRAPPED_DETAILS, infoHolder));
+        } catch (AxisFault e) {
+            throw new RuntimeException(e);
+        }
+        
+        // set indication for unwrapped message
+        try {
+            msg.addParameter(new Parameter(Constants.UNWRAPPED_KEY, Boolean.TRUE));
+        } catch (AxisFault e) {
+            throw new RuntimeException(e);
+        }
+        
+        // add fake mapping for wrapper name (necessary for current XSLTs)
+        codeGenConfig.getTypeMapper().addTypeMappingName(qname, wrappertype);
+        
+        // return the unwrapping details
+        return wrapdetail;
+    }
+    
+    private static String toJavaName(String name, Set nameset) {
+        StringBuffer buff = new StringBuffer(name.length());
+        for (int i = 0; i < name.length(); i++) {
+            char chr = name.charAt(i);
+            if ((i == 0 && Character.isJavaIdentifierStart(chr)) ||
+                (i > 0 && Character.isJavaIdentifierPart(chr))) {
+                buff.append(chr);
+            } else if (chr == ':' || chr == '.') {
+                buff.append('$');
+            } else {
+                buff.append('_');
+            }
+        }
+        int count = 0;
+        String jname = buff.toString();
+        while (!nameset.add(jname)) {
+            jname = buff.toString() + count++;
+        }
+        return jname;
+    }
+    
+    private String mapMessage(AxisMessage msg, Map complexTypeMap) {
+        QName qname = msg.getElementQName();
+        if (qname == null) {
+            throw new RuntimeException("No element reference in message " + msg.getName());
+        }
+        Object obj = complexTypeMap.get(qname);
+        if (obj == null) {
+            throw new RuntimeException("No mapping defined for element " + qname);
+        }
+        MappingElement mapping = (MappingElement)obj;
+        String cname = mapping.getClassName();
+        codeGenConfig.getTypeMapper().addTypeMappingName(qname, cname);
+        return cname;
+    }
+
+    /**
+     * Collect mapping from qnames to classes for top level mappings in JiBX
+     * binding.
+     * 
+     * @param binding
+     * @param dns default namespace to be used unless overridden
+     * (<code>null</code> if none)
+     * @param elementMap map from element names to concrete mapping components
+     * of binding
+     * @param complexTypeMap map from type names to abstract mapping
+     * components of binding
+     * @param simpleTypeMap map from type names to format definition components
+     * of binding
+     */
+    private static void collectTopLevelComponents(BindingElement binding,
+        String dns, Map elementMap, Map complexTypeMap,
+        Map simpleTypeMap) {
+        
+        // check default namespace set at top level of binding
+        String defaultns = findDefaultNS(binding.topChildIterator(), dns);
+        
+        // add all top level mapping and format definitions to maps
+        for (Iterator iter = binding.topChildIterator(); iter.hasNext();) {
+            ElementBase child = (ElementBase)iter.next();
+            if (child.type() == ElementBase.INCLUDE_ELEMENT) {
+                
+                // recurse to process included binding definitions
+                IncludeElement include = (IncludeElement)child;
+                collectTopLevelComponents(include.getBinding(), defaultns,
+                    elementMap, complexTypeMap, simpleTypeMap);
+                
+            } else if (child.type() == ElementBase.FORMAT_ELEMENT) {
+                
+                // register named formats as simple type conversions
+                FormatElement format = (FormatElement)child;
+                registerElement(format.getQName(), format, simpleTypeMap);
+                
+            } else if (child.type() == ElementBase.MAPPING_ELEMENT) {
+                MappingElement mapping = (MappingElement)child;
+                if (mapping.isAbstract()) {
+                    
+                    // register named abstract mappings as complex type conversions
+                    registerElement(mapping.getTypeQName(), mapping,
+                        complexTypeMap);
+                    
+                } else {
+                    
+                    // register concrete mappings as element conversions
+                    String uri = mapping.getUri();
+                    if (uri == null) {
+                        uri = findDefaultNS(mapping.topChildIterator(),
+                            defaultns);
+                    }
+                    elementMap.put(new QName(uri, mapping.getName()), mapping);
+                }
+            }
+        }
+    }
+    
+    /**
+     * Register binding element by qualified name. This converts the qualified
+     * name format used by the JiBX binding model to that used by Axis2.
+     * 
+     * @param qname qualified name in JiBX format (<code>null</code> if none)
+     * @param element corresponding element of binding definition
+     * @param map qualified name to element map
+     */
+    private static void registerElement(org.jibx.runtime.QName qname,
+        ElementBase element, Map map) {
+        if (qname != null) {
+            map.put(new QName(qname.getUri(), qname.getName()), element);
+        }
+    }
+
+    /**
+     * Find the default namespace within a list of JiBX binding model elements
+     * possibly including namespace definitions. Once a non-namespace definition
+     * element is seen in the list, this just returns (since the namespace
+     * definitions always come first in JiBX's binding format).
+     * 
+     * @param iter iterator for elements in list
+     * @param dns default namespace if not overridden
+     * @return default namespace
+     */
+    private static String findDefaultNS(Iterator iter, String dns) {
+        while (iter.hasNext()) {
+            ElementBase child = (ElementBase)iter.next();
+            if (child.type() == ElementBase.NAMESPACE_ELEMENT) {
+                NamespaceElement namespace = (NamespaceElement)child;
+                String defaultName = namespace.getDefaultName();
+                if ("elements".equals(defaultName) || "all".equals(defaultName)) {
+                    return namespace.getUri();
+                }
+            } else {
+               break;
+            }
+        }
+        return dns;
+    }
+    
+    /**
+     * Inner class for handling prevalidation of include elements only. Unlike
+     * the normal JiBX binding definition prevalidation step, this visitor
+     * ignores everything except include elements.
+     */
+    private class IncludePrevalidationVisitor extends ModelVisitor
+    {
+        private final ValidationContext m_context;
+        
+        private IncludePrevalidationVisitor(ValidationContext vctx) {
+            m_context = vctx;
+        }
+        
+        /* (non-Javadoc)
+         * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.ElementBase)
+         */
+        public boolean visit(IncludeElement node) {
+            try {
+                node.prevalidate(m_context);
+            } catch (Throwable t) {
+                m_context.addFatal("Error during validation: " +
+                    t.getMessage());
+                t.printStackTrace();
+                return false;
+            }
+            return true;
+        }
+    }
+    
+    private static class NamedParameterTypeMapper extends JavaTypeMapper
+    {
+        /**
+         * Return the real parameter name, not a dummy.
+         * 
+         * @param qname
+         * @return local part of name
+         */
+        public String getParameterName(QName qname) {
+            return qname.getLocalPart();
+        }
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/JiBXDataSource.java b/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/JiBXDataSource.java
new file mode 100644
index 0000000..711b914
--- /dev/null
+++ b/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/JiBXDataSource.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright 2006 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.axis2.jibx;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.axiom.om.OMDataSource;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.util.StAXUtils;
+import org.jibx.runtime.IBindingFactory;
+import org.jibx.runtime.IMarshallable;
+import org.jibx.runtime.IMarshaller;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IXMLWriter;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.StAXWriter;
+
+/**
+ * Data source for OM element backed by JiBX data bound object.
+ */
+public class JiBXDataSource implements OMDataSource
+{
+    /** Marshaller index (only needed if object does not have a top-level
+     mapping definition in the binding, <code>-1</code> if not used). */
+    private final int marshallerIndex;
+    
+    /** Element name (only used with {@link #marshallerIndex}). */
+    private final String elementName;
+    
+    /** Element namespace URI (only used with {@link #marshallerIndex}). */
+    private final String elementNamespaceUri;
+    
+    /** Data object for output. */
+    private final Object dataObject;
+    
+    /** Binding factory for creating marshaller. */
+    private final IBindingFactory bindingFactory;
+    
+    /**
+     * Constructor from marshallable object and binding factory.
+     * 
+     * @param obj
+     * @param factory
+     */
+    public JiBXDataSource(IMarshallable obj, IBindingFactory factory) {
+        marshallerIndex = -1;
+        dataObject = obj;
+        bindingFactory = factory;
+        elementName = elementNamespaceUri = null;
+    }
+    
+    /**
+     * Constructor from object with mapping index and binding factory.
+     * 
+     * @param obj
+     * @param index
+     * @param name
+     * @param uri
+     * @param factory
+     */
+    public JiBXDataSource(Object obj, int index, String name, String uri,
+        IBindingFactory factory) {
+        if (index < 0) {
+            throw new
+                IllegalArgumentException("index value must be non-negative");
+        }
+        marshallerIndex = index;
+        elementName = name;
+        elementNamespaceUri = uri;
+        dataObject = obj;
+        bindingFactory = factory;
+    }
+
+    /**
+     * Internal method to handle the actual marshalling.
+     * 
+     * @param ctx
+     * @throws JiBXException
+     */
+    private void marshal(IMarshallingContext ctx) throws JiBXException {
+        if (marshallerIndex < 0) {
+            ((IMarshallable)dataObject).marshal(ctx);
+        } else {
+            IXMLWriter wrtr = ctx.getXmlWriter();
+            int nsidx = 0;
+            boolean nsfound = true;
+            if (!"".equals(elementNamespaceUri)) {
+                nsfound = false;
+                for (nsidx = wrtr.getNamespaceCount()-1; nsidx > 1; nsidx--) {
+                    if (elementNamespaceUri.equals(wrtr.getNamespaceUri(nsidx))) {
+                        nsfound = true;
+                        break;
+                    }
+                }
+            }
+            try {
+                if (nsfound) {
+                    wrtr.startTagOpen(nsidx, elementName);
+                } else {
+                    nsidx = wrtr.getNamespaceCount();
+                    String[] uris = new String[] { elementNamespaceUri };
+                    int[] indexes = new int[] { nsidx };
+                    String[] prefixes = new String[] { "" };
+                    wrtr.pushExtensionNamespaces(uris);
+                    wrtr.startTagNamespaces(nsidx, elementName, indexes, prefixes);
+                }
+                IMarshaller mrsh = ctx.getMarshaller(marshallerIndex,
+                    bindingFactory.getMappedClasses()[marshallerIndex]);
+                mrsh.marshal(dataObject, ctx);
+                wrtr.endTag(nsidx, elementName);
+                if (!nsfound) {
+                    wrtr.popExtensionNamespaces();
+                }
+            } catch (IOException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axiom.om.OMDataSource#serialize(java.io.OutputStream, org.apache.axiom.om.OMOutputFormat)
+     */
+    public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {
+        try {
+            IMarshallingContext ctx = bindingFactory.createMarshallingContext();
+            ctx.setOutput(output, format.getCharSetEncoding());
+            marshal(ctx);
+        } catch (JiBXException e) {
+            throw new XMLStreamException("Error in JiBX marshalling", e);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axiom.om.OMDataSource#serialize(java.io.Writer, org.apache.axiom.om.OMOutputFormat)
+     */
+    public void serialize(Writer writer, OMOutputFormat format) throws XMLStreamException {
+        try {
+            IMarshallingContext ctx = bindingFactory.createMarshallingContext();
+            ctx.setOutput(writer);
+            marshal(ctx);
+        } catch (JiBXException e) {
+            throw new XMLStreamException("Error in JiBX marshalling", e);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axiom.om.OMDataSource#serialize(javax.xml.stream.XMLStreamWriter)
+     */
+    public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException {
+        try {
+            IXMLWriter writer = new StAXWriter(bindingFactory.getNamespaces(),
+                xmlWriter);
+            IMarshallingContext ctx = bindingFactory.createMarshallingContext();
+            ctx.setXmlWriter(writer);
+            marshal(ctx);
+        } catch (JiBXException e) {
+            throw new XMLStreamException("Error in JiBX marshalling", e);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axiom.om.OMDataSource#getReader()
+     */
+    public XMLStreamReader getReader() throws XMLStreamException {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        serialize(bos, null);
+        return StAXUtils.createXMLStreamReader(new ByteArrayInputStream(bos.toByteArray()));
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/NullBindingFactory.java b/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/NullBindingFactory.java
new file mode 100644
index 0000000..88b88c7
--- /dev/null
+++ b/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/NullBindingFactory.java
@@ -0,0 +1,56 @@
+package org.apache.axis2.jibx;
+
+import org.jibx.runtime.IBindingFactory;
+import org.jibx.runtime.IMarshallingContext;
+import org.jibx.runtime.IUnmarshallingContext;
+import org.jibx.runtime.JiBXException;
+import org.jibx.runtime.impl.MarshallingContext;
+import org.jibx.runtime.impl.UnmarshallingContext;
+
+public class NullBindingFactory implements IBindingFactory {
+    
+    private static final String[] EMPTY_STRINGS = new String[0];
+    
+    public IMarshallingContext createMarshallingContext() throws JiBXException {
+        return new MarshallingContext(EMPTY_STRINGS, EMPTY_STRINGS, EMPTY_STRINGS, this);
+    }
+
+    public IUnmarshallingContext createUnmarshallingContext()
+        throws JiBXException {
+        return new UnmarshallingContext(0, EMPTY_STRINGS, EMPTY_STRINGS, EMPTY_STRINGS, EMPTY_STRINGS, this);
+    }
+
+    public String getCompilerDistribution() {
+        // normally only used by BindingDirectory code, so okay to punt
+        return "";
+    }
+
+    public int getCompilerVersion() {
+        // normally only used by BindingDirectory code, so okay to punt
+        return 0;
+    }
+
+    public String[] getElementNames() {
+        return EMPTY_STRINGS;
+    }
+
+    public String[] getElementNamespaces() {
+        return EMPTY_STRINGS;
+    }
+
+    public String[] getMappedClasses() {
+        return EMPTY_STRINGS;
+    }
+
+    public String[] getNamespaces() {
+        return EMPTY_STRINGS;
+    }
+
+    public String[] getPrefixes() {
+        return EMPTY_STRINGS;
+    }
+
+    public int getTypeIndex(String type) {
+        return -1;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/template/JibXDatabindingTemplate.xsl b/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/template/JibXDatabindingTemplate.xsl
new file mode 100644
index 0000000..293a184
--- /dev/null
+++ b/rampart_1_1/modules/jibx/src/org/apache/axis2/jibx/template/JibXDatabindingTemplate.xsl
@@ -0,0 +1,797 @@
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="text"/>
+<!-- #################################################################################  -->
+    <!-- ############################   JiBX template   ##############################  -->
+  <xsl:template match="databinders[@dbtype='jibx']">
+    <xsl:param name="context">unknown</xsl:param>
+    
+    <xsl:apply-templates select="initialize-binding"/>
+
+    <!-- wrapped='true' uses original code, wrapped='false' unwraps method calls -->
+    <xsl:variable name="wrapped"><xsl:value-of select="@wrapped"/></xsl:variable>
+    <xsl:if test="$wrapped='true'">
+      
+      <!-- MTOM not yet supported by JiBX, but array may be needed -->
+      <xsl:variable name="base64"><xsl:value-of select="base64Elements/name"/></xsl:variable>
+      <xsl:if test="$base64">
+        private static javax.xml.namespace.QName[] qNameArray = {
+        <xsl:for-each select="base64Elements/name">
+          <xsl:if test="position()">1">,</xsl:if>new javax.xml.namespace.QName("<xsl:value-of select="@ns-url"/>","<xsl:value-of select="@localName"/>")
+        </xsl:for-each>
+        };
+      </xsl:if>
+
+        /**
+        *  get the default envelope
+        */
+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory) {
+            return factory.getDefaultEnvelope();
+        }
+      
+    </xsl:if>
+    
+    <xsl:if test="$wrapped='false'">
+      <xsl:choose>
+        <xsl:when test="$context='message-receiver'">
+          <xsl:apply-templates mode="message-receiver" select="dbmethod"/>
+        </xsl:when>
+        <xsl:when test="$context='interface-implementation'">
+          <xsl:variable name="isSync"><xsl:value-of select="/class/@isSync"/></xsl:variable>
+          <xsl:if test="$isSync='1'">
+            <xsl:apply-templates mode="interface-implementation" select="dbmethod"><xsl:with-param name="sync">true</xsl:with-param></xsl:apply-templates>
+          </xsl:if>
+          <xsl:variable name="isAsync"><xsl:value-of select="/class/@isAsync"/></xsl:variable>
+          <xsl:if test="$isAsync='1'">
+            <xsl:apply-templates mode="interface-implementation" select="dbmethod"><xsl:with-param name="sync">false</xsl:with-param></xsl:apply-templates>
+          </xsl:if>
+        </xsl:when>
+      </xsl:choose>
+    </xsl:if>
+    
+    <xsl:choose>
+      <xsl:when test="$context='message-receiver'">
+        <xsl:apply-templates select="object-output"/>
+        <xsl:apply-templates select="object-fault"/>
+      </xsl:when>
+      <xsl:when test="$context='interface-implementation'">
+        <xsl:apply-templates select="object-input"/>
+        <xsl:call-template name="stub-utility-methods"/>
+      </xsl:when>
+    </xsl:choose>
+    
+  </xsl:template>
+  
+  
+  <!--
+  toOM AND toEnvelope METHOD GENERATION
+  -->
+  <xsl:template match="object-input|object-output">
+
+        private org.apache.axiom.om.OMElement toOM(<xsl:value-of select="@type"/> param, org.apache.axiom.soap.SOAPFactory factory, boolean optimizeContent) {
+            <xsl:call-template name="toOM-method-body"/>
+        }
+        <xsl:call-template name="toEnvelope-method"/>
+  </xsl:template>
+  
+  <xsl:template match="object-fault">
+
+        private org.apache.axiom.om.OMElement toOM(<xsl:value-of select="@type"/> param, boolean optimizeContent) {
+            org.apache.axiom.om.OMFactory factory = org.apache.axiom.om.OMAbstractFactory.getOMFactory();
+            <xsl:call-template name="toOM-method-body"/>
+        }
+  </xsl:template>
+  
+  <xsl:template name="toOM-method-body">
+            if (param instanceof org.jibx.runtime.IMarshallable){
+                if (bindingFactory == null) {
+                    throw new RuntimeException(bindingErrorMessage);
+                }
+                org.jibx.runtime.IMarshallable marshallable =
+                    (org.jibx.runtime.IMarshallable)param;
+                int index = marshallable.JiBX_getIndex();
+                org.apache.axis2.jibx.JiBXDataSource source =
+                    new org.apache.axis2.jibx.JiBXDataSource(marshallable, bindingFactory);
+                org.apache.axiom.om.OMNamespace namespace = factory.createOMNamespace(bindingFactory.getElementNamespaces()[index], null);
+                return factory.createOMElement(source, bindingFactory.getElementNames()[index], namespace);
+            } else {
+                throw new RuntimeException("No JiBX &lt;mapping> defined for class <xsl:value-of select="@type"/>");
+            }
+  </xsl:template>
+  
+  <xsl:template name="toEnvelope-method">
+        
+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, <xsl:value-of select="@type"/> param, boolean optimizeContent) {
+            org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();
+            if (param != null){
+                envelope.getBody().addChild(toOM(param, factory, optimizeContent));
+            }
+            return envelope;
+        }
+
+  </xsl:template>
+  
+  
+  <!--
+  MESSAGE RECEIVER METHOD GENERATION
+  -->
+  
+  <!-- Invoked by main template to handle unwrapped method generation for message receiver -->
+  <xsl:template match="dbmethod" mode="message-receiver">
+    <xsl:variable name="method-name" select="@method-name"/>
+      public org.apache.axiom.soap.SOAPEnvelope <xsl:value-of select="@receiver-name"/>(org.apache.axiom.om.OMElement element, <xsl:value-of select="/*/@skeletonInterfaceName"/> skel, org.apache.axiom.soap.SOAPFactory factory) throws org.apache.axis2.AxisFault
+      <xsl:for-each select="/interface/method[@name=$method-name]/fault/param">, <xsl:value-of select="@name"/></xsl:for-each>
+      {
+          org.apache.axiom.soap.SOAPEnvelope envelope = null;
+          try {
+              org.jibx.runtime.impl.UnmarshallingContext uctx = getNewUnmarshalContext(element);
+              uctx.next();
+              int index;
+    <xsl:apply-templates select="in-wrapper/parameter-element" mode="message-receiver"/>
+    
+    <!-- actual call handling depends on type of returned result -->
+    <xsl:choose>
+    
+      <!-- returning an array of values -->
+      <xsl:when test="out-wrapper/@empty='false' and out-wrapper/return-element/@array='true'">
+              envelope = factory.getDefaultEnvelope();
+              org.apache.axiom.om.OMElement wrapper = factory.createOMElement("<xsl:value-of select='out-wrapper/@name'/>", "<xsl:value-of select='out-wrapper/@ns'/>", "");
+              envelope.getBody().addChild(wrapper);
+              <xsl:value-of select="out-wrapper/return-element/@java-type"/>[] results = skel.<xsl:call-template name="call-arg-list"/>;
+              if (results == null || results.length == 0) {
+        <xsl:choose>
+          <xsl:when test="out-wrapper/return-element/@optional='true'"/>
+          <xsl:otherwise>
+                  throw new org.apache.axis2.AxisFault("Missing required result");
+          </xsl:otherwise>
+        </xsl:choose>
+              } else {
+                  org.apache.axiom.om.OMNamespace appns = factory.createOMNamespace("<xsl:value-of select='out-wrapper/return-element/@ns'/>", "app");
+                  wrapper.declareNamespace(appns);
+        <xsl:choose>
+          <xsl:when test="out-wrapper/return-element/@form='complex'">
+                  for (int i = 0; i &lt; results.length; i++) {
+                      <xsl:value-of select="out-wrapper/return-element/@java-type"/> result = results[i];
+                      if (result == null) {
+            <xsl:choose>
+              <xsl:when test="out-wrapper/return-element/@nillable='true'">
+                          org.apache.axiom.om.OMElement child = factory.createOMElement("<xsl:value-of select='out-wrapper/return-element/@name'/>", appns);
+                          org.apache.axiom.om.OMNamespace xsins = factory.createOMNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+                          child.declareNamespace(xsins);
+                          child.addAttribute("nil", "true", xsins);
+                          wrapper.addChild(child);
+              </xsl:when>
+              <xsl:otherwise>
+                          throw new org.apache.axis2.AxisFault("Null value in result array not allowed unless element has nillable='true'");
+              </xsl:otherwise>
+            </xsl:choose>
+                      } else {
+                          org.apache.axiom.om.OMDataSource src = new org.apache.axis2.jibx.JiBXDataSource(result, _type_index<xsl:value-of select="out-wrapper/return-element/@type-index"/>, "<xsl:value-of select='out-wrapper/return-element/@name'/>", "<xsl:value-of select='out-wrapper/return-element/@ns'/>", bindingFactory);
+                          org.apache.axiom.om.OMElement child = factory.createOMElement(src, "<xsl:value-of select='out-wrapper/return-element/@name'/>", appns);
+                          wrapper.addChild(child);
+                      }
+                  }
+          </xsl:when>
+          <xsl:otherwise>
+                  for (int i = 0; i &lt; results.length; i++) {
+                      <xsl:value-of select="out-wrapper/return-element/@java-type"/> result = results[i];
+                      org.apache.axiom.om.OMElement child = factory.createOMElement("<xsl:value-of select='out-wrapper/return-element/@name'/>", appns);
+            <xsl:choose>
+              <xsl:when test="out-wrapper/return-element/@serializer=''">
+                      child.setText(result.toString());
+              </xsl:when>
+              <xsl:otherwise>
+                      child.setText(<xsl:value-of select="out-wrapper/return-element/@serializer"/>(result));
+              </xsl:otherwise>
+            </xsl:choose>
+                      wrapper.addChild(child);
+                  }
+          </xsl:otherwise>
+        </xsl:choose>
+              }
+      </xsl:when>
+    
+      <!-- returning a single value -->
+      <xsl:when test="out-wrapper/@empty='false'">
+              envelope = factory.getDefaultEnvelope();
+              org.apache.axiom.om.OMElement wrapper = factory.createOMElement("<xsl:value-of select='out-wrapper/@name'/>", "<xsl:value-of select='out-wrapper/@ns'/>", "");
+              envelope.getBody().addChild(wrapper);
+              <xsl:value-of select="out-wrapper/return-element/@java-type"/> result = skel.<xsl:call-template name="call-arg-list"/>;
+              org.apache.axiom.om.OMNamespace appns = factory.createOMNamespace("<xsl:value-of select='out-wrapper/return-element/@ns'/>", "app");
+              wrapper.declareNamespace(appns);
+        <xsl:choose>
+          <xsl:when test="out-wrapper/return-element/@form='complex'">
+              if (result == null) {
+            <xsl:choose>
+              <xsl:when test="out-wrapper/return-element/@optional='true'"/>
+              <xsl:when test="out-wrapper/return-element/@nillable='true'">
+                  org.apache.axiom.om.OMElement child = factory.createOMElement("<xsl:value-of select='out-wrapper/return-element/@name'/>", appns);
+                  org.apache.axiom.om.OMNamespace xsins = factory.createOMNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+                  child.declareNamespace(xsins);
+                  child.addAttribute("nil", "true", xsins);
+                  wrapper.addChild(child);
+              </xsl:when>
+              <xsl:otherwise>
+                  throw new org.apache.axis2.AxisFault("Missing required result");
+              </xsl:otherwise>
+            </xsl:choose>
+              } else {
+                  org.apache.axiom.om.OMDataSource src = new org.apache.axis2.jibx.JiBXDataSource(result, _type_index<xsl:value-of select="out-wrapper/return-element/@type-index"/>, "<xsl:value-of select='out-wrapper/return-element/@name'/>", "<xsl:value-of select='out-wrapper/return-element/@ns'/>", bindingFactory);
+                  org.apache.axiom.om.OMElement child = factory.createOMElement(src, "<xsl:value-of select='out-wrapper/return-element/@name'/>", appns);
+                  wrapper.addChild(child);
+              }
+          </xsl:when>
+          <xsl:otherwise>
+              org.apache.axiom.om.OMElement child = factory.createOMElement("<xsl:value-of select='out-wrapper/return-element/@name'/>", appns);
+            <xsl:choose>
+              <xsl:when test="out-wrapper/return-element/@object='true'">
+              if (result == null) {
+                  org.apache.axiom.om.OMNamespace xsins = factory.createOMNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+                  child.declareNamespace(xsins);
+                  child.addAttribute("nil", "true", xsins);
+              } else {
+                <xsl:call-template name="set-result-text"/>
+              }
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:call-template name="set-result-text"/>
+              </xsl:otherwise>
+            </xsl:choose>
+              wrapper.addChild(child);
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+    
+      <!-- not returning anything -->
+      <xsl:otherwise>
+              skel.<xsl:call-template name="call-arg-list"/>;
+        <xsl:if test="count(out-wrapper)&gt;0">
+              envelope = factory.getDefaultEnvelope();
+              envelope.getBody().addChild(factory.createOMElement("<xsl:value-of select='out-wrapper/@name'/>", "<xsl:value-of select='out-wrapper/@ns'/>", ""));
+        </xsl:if>
+      </xsl:otherwise>
+      
+    </xsl:choose>
+          } catch (org.jibx.runtime.JiBXException e) {
+              throw new org.apache.axis2.AxisFault(e);
+          }
+          return envelope;
+      }
+  </xsl:template>
+  
+  <xsl:template name="set-result-text">
+    <xsl:choose>
+      <xsl:when test="out-wrapper/return-element/@serializer=''">
+              child.setText(result.toString());
+      </xsl:when>
+      <xsl:otherwise>
+              child.setText(<xsl:value-of select="out-wrapper/return-element/@serializer"/>(result<xsl:if test="out-wrapper/return-element/@wrapped-primitive='true'">.<xsl:value-of select="out-wrapper/return-element/@value-method"/>()</xsl:if>));
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+  <!-- Generate argument list for message receiver call to actual implementation method. -->
+  <xsl:template name="call-arg-list">
+    <xsl:value-of select="@method-name"/>(
+    <xsl:for-each select="in-wrapper/parameter-element">
+      <xsl:if test="position()&gt;1">, </xsl:if><xsl:value-of select="@java-name"/>
+    </xsl:for-each>
+    )
+  </xsl:template>
+  
+  <!-- Generate code for a particular parameter element in a message receiver method -->
+  <xsl:template match="parameter-element" mode="message-receiver">
+    <xsl:choose>
+      <xsl:when test="@array='true'">
+        <xsl:call-template name="unmarshal-array"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="unmarshal-value"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+  
+  <!-- 
+  CLIENT STUB UNWRAPPED METHOD GENERATION
+  -->
+  
+  <!-- Invoked by main template to handle unwrapped method generation for synchronous client stub -->
+  <xsl:template match="dbmethod" mode="interface-implementation">
+    <xsl:param name="sync">error</xsl:param>
+    <xsl:variable name="interfaceName"><xsl:value-of select="/class/@interfaceName"/></xsl:variable>
+    <xsl:variable name="package"><xsl:value-of select="/class/@package"/></xsl:variable>
+    <xsl:variable name="return-base-type"><xsl:value-of select="out-wrapper/return-element/@java-type"/></xsl:variable>
+    <xsl:variable name="return-full-type"><xsl:value-of select="$return-base-type"/><xsl:if test="out-wrapper/return-element/@array='true'">[]</xsl:if></xsl:variable>
+    <xsl:variable name="method-name"><xsl:value-of select="@method-name"/></xsl:variable>
+    
+        /**
+    <xsl:if test="$sync='true'">
+         * Auto generated synchronous call method
+         * 
+         * @see <xsl:value-of select="$package"/>.<xsl:value-of select="$interfaceName"/>#<xsl:value-of select="@method-name"/>
+        <xsl:for-each select="in-wrapper/parameter-element">
+         * @param <xsl:value-of select="@java-name"/></xsl:for-each>
+         */
+        public <xsl:choose><xsl:when test="string-length(normalize-space($return-full-type)) &gt; 0"><xsl:value-of select="$return-full-type"/></xsl:when><xsl:otherwise>void</xsl:otherwise></xsl:choose><xsl:text> </xsl:text><xsl:value-of select="@method-name"/>(
+    </xsl:if>
+    <xsl:if test="$sync='false'">
+         * Auto generated asynchronous call method
+         * 
+         * @see <xsl:value-of select="$package"/>.<xsl:value-of select="$interfaceName"/>#start<xsl:value-of select="@method-name"/>
+        <xsl:for-each select="in-wrapper/parameter-element">
+         * @param <xsl:value-of select="@java-name"/></xsl:for-each>
+    <xsl:if test="$sync='true'">
+      <xsl:for-each select="/class/method[@name=$method-name]/fault/param">
+         * @throws <xsl:value-of select="@name"/>
+      </xsl:for-each>
+    </xsl:if>
+         */
+        public void start<xsl:value-of select="@method-name"/>(
+    </xsl:if>
+        <xsl:for-each select="in-wrapper/parameter-element">
+          <xsl:if test="position()&gt;1">, </xsl:if><xsl:value-of select="@java-type"/><xsl:if test="@array='true'">[]</xsl:if><xsl:text> </xsl:text><xsl:value-of select="@java-name"/>
+        </xsl:for-each>
+    <xsl:if test="$sync='false'">
+        <xsl:if test="in-wrapper/@empty='false'">, </xsl:if>final <xsl:value-of select="/class/@callbackname"/> _callback
+    </xsl:if>
+            ) throws java.rmi.RemoteException
+    <xsl:if test="$sync='true'">
+      <!--add the faults-->
+      <xsl:for-each select="/class/method[@name=$method-name]/fault/param">, <xsl:value-of select="@name"/></xsl:for-each>
+    </xsl:if>
+            {
+    <!-- Simple parameter values (those with serializers) can be handled by
+      direct conversion to elements. Complex parameter values need to use data
+      sources. This code handles both types. -->
+            try {
+                int _opIndex = <xsl:apply-templates mode="get-index" select="/class/method[@name=$method-name]"></xsl:apply-templates>;
+                javax.xml.namespace.QName opname = _operations[_opIndex].getName();
+                org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(opname);
+                _operationClient.getOptions().setAction("<xsl:apply-templates mode="get-action" select="/class/method[@name=$method-name]"></xsl:apply-templates>");
+                _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
+    
+                // create SOAP envelope with the payload
+                org.apache.axiom.soap.SOAPEnvelope env = createEnvelope(_operationClient.getOptions());
+                org.apache.axiom.soap.SOAPFactory factory = getFactory(_operationClient.getOptions().getSoapVersionURI());
+                org.apache.axiom.om.OMElement wrapper = factory.createOMElement("<xsl:value-of select='in-wrapper/@name'/>", "<xsl:value-of select='in-wrapper/@ns'/>", "");
+                env.getBody().addChild(wrapper);
+                org.apache.axiom.om.OMElement child;
+    <xsl:apply-templates select="in-wrapper/parameter-element" mode="interface-implementation"/>
+    
+                // add SOAP headers
+                _serviceClient.addHeadersToEnvelope(env);
+                
+                // create message context with that envelope
+                org.apache.axis2.context.MessageContext _messageContext = new org.apache.axis2.context.MessageContext();
+                _messageContext.setEnvelope(env);
+    
+                // add the message context to the operation client
+                _operationClient.addMessageContext(_messageContext);
+    
+    <xsl:if test="$sync='true'">
+               // execute the operation client
+                _operationClient.execute(true);
+                
+      <xsl:if test="out-wrapper/@empty='false'">
+                org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient
+                    .getMessageContext(org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                org.apache.axiom.om.OMElement _response = _returnMessageContext.getEnvelope().getBody().getFirstElement();
+                if (_response != null &amp;&amp; "<xsl:value-of select='out-wrapper/@name'/>".equals(_response.getLocalName()) &amp;&amp;
+                    "<xsl:value-of select='out-wrapper/@ns'/>".equals(_response.getNamespace().getNamespaceURI())) {
+                    org.jibx.runtime.impl.UnmarshallingContext uctx = getNewUnmarshalContext(_response);
+                    uctx.parsePastStartTag("<xsl:value-of select='out-wrapper/@ns'/>", "<xsl:value-of select='out-wrapper/@name'/>");
+                    int index;
+        <xsl:apply-templates select="out-wrapper/return-element" mode="interface-implementation"/>
+                    return <xsl:value-of select="out-wrapper/return-element/@java-name"/>;
+                } else {
+                    throw new org.apache.axis2.AxisFault("Missing expected return wrapper element {<xsl:value-of select='out-wrapper/@ns'/>}<xsl:value-of select='out-wrapper/@name'/>");
+                }
+      </xsl:if>
+            } catch (Exception e) {
+                Exception outex = convertException(e);
+      <xsl:for-each select="/class/method[@name=$method-name]/fault/param">
+                if (outex instanceof <xsl:value-of select="@name"/>) {
+                    throw (<xsl:value-of select="@name"/>)outex;
+                }
+      </xsl:for-each>
+                // should never happen, but just in case
+                throw new RuntimeException("Unexpected exception type: " +
+                    outex.getClass().getName(), outex);
+            }
+        }
+    </xsl:if>
+    <xsl:if test="$sync='false'">
+                _operationClient.setCallback(new org.apache.axis2.client.async.Callback() {
+                    public void onComplete(org.apache.axis2.client.async.AsyncResult async) {
+                        try {
+                            org.apache.axiom.om.OMElement result = async.getResponseEnvelope().getBody().getFirstElement();
+                            if (result != null &amp;&amp; "<xsl:value-of select='out-wrapper/@name'/>".equals(result.getLocalName()) &amp;&amp;
+                                "<xsl:value-of select='out-wrapper/@ns'/>".equals(result.getNamespace().getNamespaceURI())) {
+                                org.jibx.runtime.impl.UnmarshallingContext uctx = getNewUnmarshalContext(result);
+                                uctx.parsePastStartTag("<xsl:value-of select='out-wrapper/@ns'/>", "<xsl:value-of select='out-wrapper/@name'/>");
+                                int index;
+      <xsl:apply-templates select="out-wrapper/return-element" mode="interface-implementation"/>
+                                _callback.receiveResult<xsl:value-of select="@method-name"/>(<xsl:value-of select="out-wrapper/return-element/@java-name"/>);
+                            } else {
+                                throw new org.apache.axis2.AxisFault("Missing expected result wrapper element {<xsl:value-of select='out-wrapper/@ns'/>}<xsl:value-of select='out-wrapper/@name'/>");
+                            }
+                        } catch (Exception e) {
+                            onError(e);
+                        }
+                    }
+
+                    public void onError(Exception e) {
+                        _callback.receiveError<xsl:value-of select="@method-name"/>(e);
+                    }
+                });
+                        
+                org.apache.axis2.util.CallbackReceiver _callbackReceiver = null;
+                if ( _operations[_opIndex].getMessageReceiver() == null &amp;&amp; _operationClient.getOptions().isUseSeparateListener()) {
+                    _callbackReceiver = new org.apache.axis2.util.CallbackReceiver();
+                    _operations[_opIndex].setMessageReceiver(_callbackReceiver);
+                }
+
+                // execute the operation client
+                _operationClient.execute(false);
+                
+            } catch (Exception e) {
+                Exception outex = convertException(e);
+                throw new RuntimeException("Unexpected exception type: " +
+                    outex.getClass().getName(), outex);
+            }
+        }
+    </xsl:if>
+  </xsl:template>
+  
+  <!-- Invoked to get the operation index number for a method. -->
+  <xsl:template match="method" mode="get-index"><xsl:value-of select="count(preceding-sibling::method)"/></xsl:template>
+  
+  <!-- Invoked to get the operation action for a method. -->
+  <xsl:template match="method" mode="get-action"><xsl:value-of select="@soapaction"/></xsl:template>
+  
+  <!-- Generate code for a particular parameter element in a client stub method -->
+  <xsl:template match="parameter-element" mode="interface-implementation">
+    <xsl:choose>
+      <xsl:when test="@array='true'">
+        <xsl:call-template name="marshal-array"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="marshal-value"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+  <!-- Marshal an array to a repeated element -->
+  <xsl:template name="marshal-array">
+    if (<xsl:value-of select="@java-name"/> == null || <xsl:value-of select="@java-name"/>.length == 0) {
+    <xsl:choose>
+      <xsl:when test="@optional='true'"></xsl:when>
+      <xsl:when test="@nillable='true'">
+        child = factory.createOMElement("<xsl:value-of select='@name'/>", "<xsl:value-of select='@ns'/>", "");
+        org.apache.axiom.om.OMNamespace xsins = factory.createOMNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+        child.declareNamespace(xsins);
+        child.addAttribute("nil", "true", xsins);
+        wrapper.addChild(child);
+      </xsl:when>
+      <xsl:otherwise>
+        throw new org.apache.axis2.AxisFault("Missing required value <xsl:value-of select='@java-name'/>");
+      </xsl:otherwise>
+    </xsl:choose>
+    } else {
+        for (int i = 0; i &lt; <xsl:value-of select="@java-name"/>.length; i++) {
+            <xsl:value-of select="@java-type"/> _item = <xsl:value-of select="@java-name"/>[i];
+    <xsl:choose>
+      <xsl:when test="@object='true' and @nillable='true'">
+            if (_item == null) {
+                child = factory.createOMElement("<xsl:value-of select='@name'/>", "<xsl:value-of select='@ns'/>", "");
+                org.apache.axiom.om.OMNamespace xsins = factory.createOMNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+                child.declareNamespace(xsins);
+                child.addAttribute("nil", "true", xsins);
+                wrapper.addChild(child);
+            } else {
+        <xsl:call-template name="serialize-value-to-child"/>
+            }
+      </xsl:when>
+      <xsl:when test="@object='true'">
+            if (_item == null) {
+                throw new org.apache.axis2.AxisFault("Null value in array <xsl:value-of select='@java-name'/>");
+            } else {
+        <xsl:call-template name="serialize-value-to-child"/>
+            }
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="serialize-value-to-child"/>
+      </xsl:otherwise>
+    </xsl:choose>
+        }
+    }
+  </xsl:template>
+  
+  <!-- Marshal a simple value to a non-repeated element -->
+  <xsl:template name="marshal-value">
+    <xsl:choose>
+      <xsl:when test="@object='true' and @nillable='true'">
+        if (<xsl:value-of select="@java-name"/> == null) {
+            child = factory.createOMElement("<xsl:value-of select='@name'/>", "<xsl:value-of select='@ns'/>", "");
+            org.apache.axiom.om.OMNamespace xsins = factory.createOMNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+            child.declareNamespace(xsins);
+            child.addAttribute("nil", "true", xsins);
+            wrapper.addChild(child);
+        } else {
+        <xsl:call-template name="serialize-value-to-child"/>
+        }
+      </xsl:when>
+      <xsl:when test="@object='true'">
+        if (<xsl:value-of select="@java-name"/> == null) {
+            throw new org.apache.axis2.AxisFault("Null value for <xsl:value-of select='@java-name'/>");
+        } else {
+        <xsl:call-template name="serialize-value-to-child"/>
+        }
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="serialize-value-to-child"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+  <!-- Convert the current value to an element. -->
+  <xsl:template name="serialize-value-to-child">
+    <xsl:choose>
+      <xsl:when test="@java-type='String' and @serializer=''">
+        child = factory.createOMElement("<xsl:value-of select='@name'/>", "<xsl:value-of select='@ns'/>", "");
+        child.setText(<xsl:call-template name="parameter-or-array-item"/>);
+      </xsl:when>
+      <xsl:when test="@form='simple' and @serializer=''">
+        child = factory.createOMElement("<xsl:value-of select='@name'/>", "<xsl:value-of select='@ns'/>", "");
+        child.setText(<xsl:call-template name="parameter-or-array-item"/>.toString());
+      </xsl:when>
+      <xsl:when test="@form='simple'">
+        child = factory.createOMElement("<xsl:value-of select='@name'/>", "<xsl:value-of select='@ns'/>", "");
+        child.setText(<xsl:value-of select="@serializer"/>(<xsl:call-template name="parameter-or-array-item"/>));
+      </xsl:when>
+      <xsl:when test="@form='complex'">
+        org.apache.axiom.om.OMDataSource src = new org.apache.axis2.jibx.JiBXDataSource(<xsl:call-template name="parameter-or-array-item"/>, _type_index<xsl:value-of select="@type-index"/>, "<xsl:value-of select='@name'/>", "<xsl:value-of select='@ns'/>", bindingFactory);
+        org.apache.axiom.om.OMNamespace appns = factory.createOMNamespace("<xsl:value-of select='@ns'/>", "");
+        child = factory.createOMElement(src, "<xsl:value-of select='@name'/>", appns);
+      </xsl:when>
+    </xsl:choose>
+        wrapper.addChild(child);
+  </xsl:template>
+  
+  <!-- Reference to parameter or array item value, as appropriate -->
+  <xsl:template name="parameter-or-array-item"><xsl:choose><xsl:when test="@array='true'">_item</xsl:when><xsl:otherwise><xsl:value-of select='@java-name'/></xsl:otherwise></xsl:choose><xsl:if test="@wrapped-primitive='true'">.<xsl:value-of select="@value-method"/>()</xsl:if></xsl:template>
+  
+  <!-- Generate code for the result in a client stub method -->
+  <xsl:template match="return-element" mode="interface-implementation">
+    <xsl:choose>
+      <xsl:when test="@array='true'">
+        <xsl:call-template name="unmarshal-array"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="unmarshal-value"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+  
+  <!--
+  CLIENT STUB SHARED METHOD GENERATION
+  -->
+  <!-- Called by main template to create utility methods -->
+  <xsl:template name="stub-utility-methods">
+        
+        private Exception convertException(Exception ex) throws java.rmi.RemoteException {
+            if (ex instanceof org.apache.axis2.AxisFault) {
+                org.apache.axis2.AxisFault f = (org.apache.axis2.AxisFault)ex;
+                org.apache.axiom.om.OMElement faultElt = f.getDetail();
+                if (faultElt != null) {
+                    if (faultExeptionNameMap.containsKey(faultElt.getQName())) {
+                        try {
+                            
+                            // first create the actual exception
+                            String exceptionClassName = (String)faultExeptionClassNameMap.get(faultElt.getQName());
+                            Class exceptionClass = Class.forName(exceptionClassName);
+                            Exception e = (Exception)exceptionClass.newInstance();
+                            
+                            // build the message object from the details
+                            String messageClassName = (String)faultMessageMap.get(faultElt.getQName());
+                            Class messageClass = Class.forName(messageClassName);
+                            Object messageObject = fromOM(faultElt, messageClass, null);
+                            java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
+                                new Class[] { messageClass });
+                            m.invoke(e, new Object[] { messageObject });
+                            return e;
+                            
+                        } catch (ClassCastException e) {
+                            // we cannot intantiate the class - throw the original
+                            // Axis fault
+                            throw f;
+                        } catch (ClassNotFoundException e) {
+                            // we cannot intantiate the class - throw the original
+                            // Axis fault
+                            throw f;
+                        } catch (NoSuchMethodException e) {
+                            // we cannot intantiate the class - throw the original
+                            // Axis fault
+                            throw f;
+                        } catch (java.lang.reflect.InvocationTargetException e) {
+                            // we cannot intantiate the class - throw the original
+                            // Axis fault
+                            throw f;
+                        } catch (IllegalAccessException e) {
+                            // we cannot intantiate the class - throw the original
+                            // Axis fault
+                            throw f;
+                        } catch (InstantiationException e) {
+                            // we cannot intantiate the class - throw the original
+                            // Axis fault
+                            throw f;
+                        }
+                    } else {
+                        throw f;
+                    }
+                } else {
+                    throw f;
+                }
+                
+            } else if (ex instanceof RuntimeException) {
+                throw (RuntimeException)ex;
+            } else if (ex instanceof java.rmi.RemoteException) {
+                throw (java.rmi.RemoteException)ex;
+            } else {
+                throw new org.apache.axis2.AxisFault(ex);
+            }
+        }
+    
+  </xsl:template>
+  
+  
+  <!--
+  STATIC CODE GENERATION
+  -->
+  
+  <!-- Called by main template to handle static binding data and methods. -->
+  <xsl:template match="initialize-binding">
+      private static final org.jibx.runtime.IBindingFactory bindingFactory;
+      private static final String bindingErrorMessage;
+    <xsl:apply-templates mode="generate-index-fields" select="abstract-type"/>
+        static {
+            org.jibx.runtime.IBindingFactory factory = null;
+            String message = null;
+            try {
+    <xsl:choose>
+      <xsl:when test="@bound-class=''">
+                factory = new org.apache.axis2.jibx.NullBindingFactory();
+      </xsl:when>
+      <xsl:otherwise>
+                factory = org.jibx.runtime.BindingDirectory.getFactory(<xsl:value-of select="@bound-class"/>.class);
+      </xsl:otherwise>
+    </xsl:choose>
+                message = null;
+            } catch (Exception e) { message = e.getMessage(); }
+            bindingFactory = factory;
+            bindingErrorMessage = message;
+    <xsl:apply-templates mode="set-index-fields" select="abstract-type"/>
+        }
+        
+        private static org.jibx.runtime.impl.UnmarshallingContext getNewUnmarshalContext(org.apache.axiom.om.OMElement param)
+            throws org.jibx.runtime.JiBXException {
+            if (bindingFactory == null) {
+                throw new RuntimeException(bindingErrorMessage);
+            }
+            org.jibx.runtime.impl.UnmarshallingContext ctx =
+                (org.jibx.runtime.impl.UnmarshallingContext)bindingFactory.createUnmarshallingContext();
+            org.jibx.runtime.IXMLReader reader = new org.jibx.runtime.impl.StAXReaderWrapper(param.getXMLStreamReaderWithoutCaching(), "SOAP-message", true);
+            ctx.setDocument(reader);
+            ctx.toTag();
+            return ctx;
+        }
+        
+    <!-- shouldn't be needed when no actual binding, but called by fault conversion code so must be left in for now -->
+        private static Object fromOM(org.apache.axiom.om.OMElement param, Class type,
+            java.util.Map extraNamespaces) {
+            try {
+                org.jibx.runtime.impl.UnmarshallingContext ctx = getNewUnmarshalContext(param);
+                return ctx.unmarshalElement(type);
+            } catch (Exception e) {
+                 throw new RuntimeException(e);
+            }
+        }
+  </xsl:template>
+  
+  <!-- Called by "initialize-binding" template to generate mapped class index fields. -->
+  <xsl:template match="abstract-type" mode="generate-index-fields">
+          private static final int _type_index<xsl:value-of select="@type-index"/>;
+  </xsl:template>
+    
+  <!-- Called by "initialize-binding" template to initialize mapped class index fields. -->
+  <xsl:template match="abstract-type" mode="set-index-fields">
+         _type_index<xsl:value-of select="@type-index"/> = (bindingFactory == null) ?
+            -1 : bindingFactory.getTypeIndex("{<xsl:value-of select="@ns"/>}:<xsl:value-of select="@name"/>");
+  </xsl:template>
+  
+  
+  <!--
+  SHARED TEMPLATES
+  -->
+  
+  <!-- Unmarshal a repeated element into an array -->
+  <xsl:template name="unmarshal-array">
+    <xsl:value-of select="@java-type"/>[] <xsl:value-of select="@java-name"/> = new <xsl:value-of select="@java-type"/>[4];
+      index = 0;
+      while (uctx.isAt("<xsl:value-of select="@ns"/>", "<xsl:value-of select="@name"/>")) {
+          if (index >= <xsl:value-of select="@java-name"/>.length) {
+              <xsl:value-of select="@java-name"/> = (<xsl:value-of select="@java-type"/>[])org.jibx.runtime.Utility.growArray(<xsl:value-of select="@java-name"/>);
+          }
+    <xsl:if test="@nillable='true'">
+          if (uctx.attributeBoolean("http://www.w3.org/2001/XMLSchema-instance", "nil", false)) {
+              uctx.skipElement();
+          } else {
+    </xsl:if>
+    <xsl:value-of select="@java-name"/>[index++] = (<xsl:value-of select="@java-type"/>)<xsl:call-template name="deserialize-element-value"/>;
+    <xsl:if test="@form='complex'">
+              uctx.parsePastCurrentEndTag("<xsl:value-of select='@ns'/>", "<xsl:value-of select='@name'/>");
+    </xsl:if>
+    <xsl:if test="@nillable='true'">
+          }
+    </xsl:if>
+      }
+      <xsl:value-of select="@java-name"/> = (<xsl:value-of select="@java-type"/>[])org.jibx.runtime.Utility.resizeArray(index, <xsl:value-of select="@java-name"/>);
+    <xsl:if test="@optional!='true'">
+      if (index == 0) {
+          throw new org.apache.axis2.AxisFault("Missing required element {<xsl:value-of select='@ns'/>}<xsl:value-of select='@name'/>");
+      }
+    </xsl:if>
+  </xsl:template>
+  
+  <!-- Unmarshal a non-repeated element into an simple value -->
+  <xsl:template name="unmarshal-value">
+    <xsl:value-of select="@java-type"/><xsl:text> </xsl:text><xsl:value-of select="@java-name"/> = <xsl:choose><xsl:when test="boolean(@default)"><xsl:value-of select="@default"/></xsl:when><xsl:otherwise>null</xsl:otherwise></xsl:choose>;
+          if (uctx.isAt("<xsl:value-of select="@ns"/>", "<xsl:value-of select="@name"/>")) {
+    <xsl:if test="@nillable='true'">
+              if (uctx.attributeBoolean("http://www.w3.org/2001/XMLSchema-instance", "nil", false)) {
+                  uctx.skipElement();
+              } else {
+    </xsl:if>
+    <xsl:value-of select="@java-name"/> = (<xsl:value-of select="@java-type"/>)<xsl:call-template name="deserialize-element-value"/>;
+    <xsl:if test="@form='complex'">
+              uctx.parsePastCurrentEndTag("<xsl:value-of select='@ns'/>", "<xsl:value-of select='@name'/>");
+    </xsl:if>
+    <xsl:if test="@nillable='true'">
+              }
+    </xsl:if>
+    <xsl:choose>
+      <xsl:when test="optional">
+          }
+      </xsl:when>
+      <xsl:otherwise>
+          } else {
+              throw new org.apache.axis2.AxisFault("Missing required element {<xsl:value-of select='@ns'/>}<xsl:value-of select='@name'/>");
+          }
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+  <!-- Convert the current element into a value. -->
+  <xsl:template name="deserialize-element-value">
+    <xsl:choose>
+      <xsl:when test="@java-type='String' and @deserializer=''">
+        uctx.parseElementText("<xsl:value-of select="@ns"/>", "<xsl:value-of select="@name"/>")
+      </xsl:when>
+      <xsl:when test="@form='simple' and @deserializer=''">
+        new <xsl:value-of select="@java-type"/>(uctx.parseElementText("<xsl:value-of select="@ns"/>", "<xsl:value-of select="@name"/>"))
+      </xsl:when>
+      <xsl:when test="@form='simple' and @wrapped-primitive='true'">
+        new <xsl:value-of select="@java-type"/>(<xsl:value-of select="@deserializer"/>(uctx.parseElementText("<xsl:value-of select="@ns"/>", "<xsl:value-of select="@name"/>")))
+      </xsl:when>
+      <xsl:when test="@form='simple'">
+        <xsl:value-of select="@deserializer"/>(uctx.parseElementText("<xsl:value-of select="@ns"/>", "<xsl:value-of select="@name"/>"))
+      </xsl:when>
+      <xsl:when test="@form='complex'">
+        uctx.getUnmarshaller(_type_index<xsl:value-of select="@type-index"/>).unmarshal(new <xsl:value-of select="@java-type"/>(), uctx)
+      </xsl:when>
+    </xsl:choose>
+  </xsl:template>
+  
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test-resources/binding/customer-binding.xml b/rampart_1_1/modules/jibx/test-resources/binding/customer-binding.xml
new file mode 100644
index 0000000..19f29df
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test-resources/binding/customer-binding.xml
@@ -0,0 +1,15 @@
+<binding>
+  <namespace uri="http://ws.apache.org/axis2/jibx/customer/data" default="elements"/>
+  <mapping name="customer" class="org.apache.axis2.jibx.Customer">
+    <structure name="person" field="person">
+      <value name="cust-num" field="customerNumber"/>
+      <value name="first-name" field="firstName"/>
+      <value name="last-name" field="lastName"/>
+    </structure>
+    <value name="street" field="street"/>
+    <value name="city" field="city"/>
+    <value name="state" field="state"/>
+    <value name="zip" field="zip"/>
+    <value name="phone" field="phone"/>
+  </mapping>
+</binding>
diff --git a/rampart_1_1/modules/jibx/test-resources/binding/library-binding.xml b/rampart_1_1/modules/jibx/test-resources/binding/library-binding.xml
new file mode 100644
index 0000000..eb6a899
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test-resources/binding/library-binding.xml
@@ -0,0 +1,82 @@
+<binding add-constructors="true" force-classes="true"
+    xmlns:tns="http://ws.sosnoski.com/library/types">
+
+  <namespace uri="http://ws.sosnoski.com/library/types" default="elements"/>
+  
+  <mapping name="getBook"
+      class="org.apache.axis2.jibx.wrappers.GetBookRequest">
+    <value name="isbn" field="m_isbn"/>
+  </mapping>
+  
+  <mapping name="getBookResponse"
+      class="org.apache.axis2.jibx.wrappers.GetBookResponse">
+    <structure name="getBookReturn" field="m_book" usage="optional"
+        map-as="tns:BookInformation"/>
+  </mapping>
+  
+  <mapping name="getBooksByType"
+      class="org.apache.axis2.jibx.wrappers.GetBooksByTypeRequest">
+    <value name="type" field="m_type"/>
+  </mapping>
+  
+  <mapping name="getBooksByTypeResponse"
+      class="org.apache.axis2.jibx.wrappers.GetBooksByTypeResponse">
+    <collection field="m_books" usage="optional">
+      <structure name="getBooksByTypeReturn" map-as="tns:BookInformation"/>
+    </collection>
+  </mapping>
+  
+  <mapping name="getTypes"
+      class="org.apache.axis2.jibx.wrappers.GetTypesRequest"/>
+  
+  <mapping name="getTypesResponse"
+      class="org.apache.axis2.jibx.wrappers.GetTypesResponse">
+    <collection field="m_types" usage="optional">
+      <structure name="getTypesReturn" map-as="tns:TypeInformation"/>
+    </collection>
+  </mapping>
+  
+  <mapping name="addBook"
+      class="org.apache.axis2.jibx.wrappers.AddBookRequest">
+    <structure field="m_book">
+      <value name="type" field="m_type"/>
+      <value name="isbn" field="m_isbn"/>
+      <collection field="m_authors">
+        <value name="author" type="java.lang.String"/>
+      </collection>
+      <value name="title" field="m_title"/>
+    </structure>
+  </mapping>
+  
+  <mapping name="addBookResponse"
+      class="org.apache.axis2.jibx.wrappers.AddBookResponse">
+    <value name="addBookReturn" field="m_success"/>
+  </mapping>
+  
+  <mapping name="addBookInstance"
+      class="org.apache.axis2.jibx.wrappers.AddBookInstanceRequest">
+    <structure name="book" field="m_book" map-as="tns:BookInformation"/>
+  </mapping>
+  
+  <mapping name="addBookInstanceResponse"
+      class="org.apache.axis2.jibx.wrappers.AddBookInstanceResponse"/>
+  
+  <mapping abstract="true" class="org.apache.axis2.jibx.beans.Book"
+      type-name="tns:BookInformation">
+    <namespace prefix="types" uri="http://ws.sosnoski.com/library/types"/>
+    <value name="type" style="attribute" field="m_type"/>
+    <value name="isbn" style="attribute" field="m_isbn"/>
+    <collection field="m_authors">
+      <value name="author" type="java.lang.String"/>
+    </collection>
+    <value name="title" field="m_title"/>
+  </mapping>
+  
+  <mapping abstract="true" class="org.apache.axis2.jibx.beans.Type"
+      type-name="tns:TypeInformation">
+    <value name="name" style="attribute" field="m_name"/>
+    <value name="count" style="attribute" field="m_count"/>
+    <value style="text" field="m_description"/>
+  </mapping>
+
+</binding>
diff --git a/rampart_1_1/modules/jibx/test-resources/repo/conf/axis2.xml b/rampart_1_1/modules/jibx/test-resources/repo/conf/axis2.xml
new file mode 100644
index 0000000..9934caa
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test-resources/repo/conf/axis2.xml
@@ -0,0 +1,184 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">false</parameter>

+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <!-- If you have a frontend host which exposes this webservice using a different public URL  -->

+    <!-- use this parameter to override autodetected url -->

+    <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->

+

+

+    <!--    The way of adding listener to the system-->

+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->

+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->

+    <!--    </listener>-->

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->

+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->

+    <!--any operation -->

+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </messageReceivers>

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http"

+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncommet following paramter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <!--Uncomment if you want to have SMTP transport support-->

+    <!--<transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">-->

+    <!--<parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>-->

+    <!--<parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.port" locked="false">110</parameter>-->

+    <!--<parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>-->

+    <!--</transportReceiver>-->

+

+    <transportReceiver name="tcp"

+                       class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncommet following paramter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp"

+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local"

+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="http"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+   <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">

+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>

+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>

+   </transportSender>

+   -->

+

+    <!-- ================================================= -->

+    <!-- Global Modules  -->

+    <!-- ================================================= -->

+    <!-- Comment this to disable Addressing -->

+<!--    <module ref="addressing"/>  -->

+

+    <!--Configuring module , providing parameters for modules whether they refer or not-->

+    <!--<moduleConfig name="addressing">-->

+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->

+    <!--</moduleConfig>-->

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+    <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+         <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/jibx/test-resources/wsdl/customer-echo.wsdl b/rampart_1_1/modules/jibx/test-resources/wsdl/customer-echo.wsdl
new file mode 100644
index 0000000..9c1a7c9
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test-resources/wsdl/customer-echo.wsdl
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns:dns="http://ws.apache.org/axis2/jibx/customer/data"

+   xmlns="http://schemas.xmlsoap.org/wsdl/"

+   xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+   xmlns:tns="http://ws.apache.org/axis2/jibx/customer/wsdl"

+   targetNamespace="http://ws.apache.org/axis2/jibx/customer/wsdl">

+  

+  <types>

+    <xsd:schema>

+      <xsd:import schemaLocation="customer.xsd"

+          namespace="http://ws.apache.org/axis2/jibx/customer/data"/>

+    </xsd:schema>

+  </types>

+

+  <message name="EchoRequest">

+    <part name="parameters" element="dns:customer"/>

+  </message>

+  <message name="EchoResponse">

+    <part name="result" element="dns:customer"/>

+  </message>

+  

+  <portType name="EchoCustomer">

+    <operation name="echo">

+      <input message="tns:EchoRequest"/>

+      <output message="tns:EchoResponse"/>

+    </operation>

+  </portType>

+

+  <binding name="EchoCustomerBinding" type="tns:EchoCustomer">

+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+    <operation name="echo">

+      <soap:operation soapAction="echo"/>

+      <input>

+        <soap:body use="literal"/>

+      </input>

+      <output>

+        <soap:body use="literal"/>

+      </output>

+    </operation>

+  </binding>

+

+  <service name="EchoCustomerService">

+    <port name="EchoCustomerPort" binding="tns:EchoCustomerBinding">

+      <soap:address location="http://127.0.0.1:5555/axis2/services/EchoCustomerService"/>

+    </port>

+  </service>

+  

+</definitions>

diff --git a/rampart_1_1/modules/jibx/test-resources/wsdl/customer.xsd b/rampart_1_1/modules/jibx/test-resources/wsdl/customer.xsd
new file mode 100644
index 0000000..effb5f1
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test-resources/wsdl/customer.xsd
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?><schema elementFormDefault="qualified" targetNamespace="http://ws.apache.org/axis2/jibx/customer/data" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ws.apache.org/axis2/jibx/customer/data" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+  <!-- Created from mapping for class org.apache.axis2.jibx.Customer -->
+  <element name="customer">
+    <complexType>
+      <sequence>
+        <element name="person">
+          <complexType>
+            <sequence>
+              <element name="cust-num" type="xsd:int"/>
+              <element name="first-name" type="xsd:string"/>
+              <element name="last-name" type="xsd:string"/>
+            </sequence>
+          </complexType>
+        </element>
+        <element name="street" type="xsd:string"/>
+        <element name="city" type="xsd:string"/>
+        <element name="state" type="xsd:string"/>
+        <element name="zip" type="xsd:int"/>
+        <element name="phone" type="xsd:string"/>
+      </sequence>
+    </complexType>
+  </element>
+</schema>
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test-resources/wsdl/library.wsdl b/rampart_1_1/modules/jibx/test-resources/wsdl/library.wsdl
new file mode 100644
index 0000000..93a934d
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test-resources/wsdl/library.wsdl
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://ws.sosnoski.com/library/wsdl"
+    xmlns:wns="http://ws.sosnoski.com/library/wsdl"
+    xmlns:tns="http://ws.sosnoski.com/library/types"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/">
+  <wsdl:types>
+  
+    <schema elementFormDefault="qualified"
+        targetNamespace="http://ws.sosnoski.com/library/types"
+        xmlns="http://www.w3.org/2001/XMLSchema"
+        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+        
+      <element name="getBook">
+        <complexType>
+          <sequence>
+            <element name="isbn" type="xsd:string"/>
+          </sequence>
+        </complexType>
+      </element>
+      
+      <element name="getBookResponse">
+        <complexType>
+          <sequence>
+            <element name="getBookReturn" minOccurs="0" type="tns:BookInformation"/>
+          </sequence>
+        </complexType>
+      </element>
+      
+      <element name="getBooksByType">
+        <complexType>
+          <sequence>
+            <element name="type" type="xsd:string"/>
+          </sequence>
+        </complexType>
+      </element>
+      
+      <element name="getBooksByTypeResponse">
+        <complexType>
+          <sequence>
+            <element name="getBooksByTypeReturn" minOccurs="0" maxOccurs="unbounded" type="tns:BookInformation"/>
+          </sequence>
+        </complexType>
+      </element>
+      
+      <element name="getTypes">
+        <complexType>
+          <sequence/>
+        </complexType>
+      </element>
+      
+      <element name="getTypesResponse">
+        <complexType>
+          <sequence>
+            <element name="getTypesReturn" maxOccurs="unbounded" type="tns:TypeInformation"/>
+          </sequence>
+        </complexType>
+      </element>
+      
+      <element name="addBook">
+        <complexType>
+          <sequence>
+            <element name="type" type="xsd:string"/>
+            <element name="isbn" type="xsd:string"/>
+            <element name="author" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
+            <element name="title" type="xsd:string"/>
+          </sequence>
+        </complexType>
+      </element>
+      
+      <element name="addBookResponse">
+        <complexType>
+          <sequence>
+            <element name="addBookReturn" type="xsd:boolean"/>
+          </sequence>
+        </complexType>
+      </element>
+      
+      <element name="addBookInstance">
+        <complexType>
+          <sequence>
+            <element name="book" type="tns:BookInformation"/>
+          </sequence>
+        </complexType>
+      </element>
+      
+      <element name="addBookInstanceResponse">
+        <complexType>
+          <sequence/>
+        </complexType>
+      </element>
+      
+      <complexType name="BookInformation">
+        <sequence>
+          <element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
+          <element name="title" type="string"/>
+        </sequence>
+        <attribute name="type" use="required" type="string"/>
+        <attribute name="isbn" use="required" type="string"/>
+      </complexType>
+      
+      <complexType name="TypeInformation">
+        <simpleContent>
+          <extension base="xsd:string">
+            <attribute name="count" use="required" type="int"/>
+            <attribute name="name" use="required" type="string"/>
+          </extension>
+        </simpleContent>
+      </complexType>
+      
+    </schema>
+
+  </wsdl:types>
+
+  <wsdl:message name="getBookRequest">
+    <wsdl:part element="tns:getBook" name="parameters"/>
+  </wsdl:message>
+
+  <wsdl:message name="getBookResponse">
+    <wsdl:part element="tns:getBookResponse" name="parameters"/>
+  </wsdl:message>
+
+  <wsdl:message name="getBooksByTypeRequest">
+    <wsdl:part element="tns:getBooksByType" name="parameters"/>
+  </wsdl:message>
+
+  <wsdl:message name="getBooksByTypeResponse">
+    <wsdl:part element="tns:getBooksByTypeResponse" name="parameters"/>
+  </wsdl:message>
+  
+  <wsdl:message name="getTypesRequest">
+    <wsdl:part element="tns:getTypes" name="parameters"/>
+  </wsdl:message>
+
+  <wsdl:message name="getTypesResponse">
+    <wsdl:part element="tns:getTypesResponse" name="parameters"/>
+  </wsdl:message>
+
+  <wsdl:message name="addBookRequest">
+    <wsdl:part element="tns:addBook" name="parameters"/>
+  </wsdl:message>
+  
+  <wsdl:message name="addBookResponse">
+    <wsdl:part element="tns:addBookResponse" name="parameters"/>
+  </wsdl:message>
+
+  <wsdl:message name="addBookInstanceRequest">
+    <wsdl:part element="tns:addBookInstance" name="parameters"/>
+  </wsdl:message>
+  
+  <wsdl:message name="addBookInstanceResponse">
+    <wsdl:part element="tns:addBookInstanceResponse" name="parameters"/>
+  </wsdl:message>
+
+  <wsdl:portType name="Library">
+
+    <wsdl:operation name="getBook">
+      <wsdl:input message="wns:getBookRequest" name="getBookRequest"/>
+      <wsdl:output message="wns:getBookResponse" name="getBookResponse"/>
+    </wsdl:operation>
+
+    <wsdl:operation name="getBooksByType">
+      <wsdl:input message="wns:getBooksByTypeRequest" name="getBooksByTypeRequest"/>
+      <wsdl:output message="wns:getBooksByTypeResponse" name="getBooksByTypeResponse"/>
+    </wsdl:operation>
+
+    <wsdl:operation name="getTypes">
+      <wsdl:input message="wns:getTypesRequest" name="getTypesRequest"/>
+      <wsdl:output message="wns:getTypesResponse" name="getTypesResponse"/>
+    </wsdl:operation>
+
+    <wsdl:operation name="addBook">
+      <wsdl:input message="wns:addBookRequest" name="addBookRequest"/>
+      <wsdl:output message="wns:addBookResponse" name="addBookResponse"/>
+    </wsdl:operation>
+
+    <wsdl:operation name="addBookInstance">
+      <wsdl:input message="wns:addBookInstanceRequest" name="addBookInstanceRequest"/>
+      <wsdl:output message="wns:addBookInstanceResponse" name="addBookInstanceResponse"/>
+    </wsdl:operation>
+
+  </wsdl:portType>
+
+  <wsdl:binding name="LibrarySoapBinding" type="wns:Library">
+
+    <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+    <wsdl:operation name="getBook">
+    
+      <wsdlsoap:operation soapAction=""/>
+      
+      <wsdl:input name="getBookRequest">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:input>
+      
+      <wsdl:output name="getBookResponse">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:output>
+      
+    </wsdl:operation>
+
+    <wsdl:operation name="getBooksByType">
+    
+      <wsdlsoap:operation soapAction=""/>
+      
+      <wsdl:input name="getBooksByTypeRequest">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:input>
+      
+      <wsdl:output name="getBooksByTypeResponse">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:output>
+      
+    </wsdl:operation>
+
+    <wsdl:operation name="getTypes">
+    
+      <wsdlsoap:operation soapAction=""/>
+      
+      <wsdl:input name="getTypesRequest">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:input>
+
+      <wsdl:output name="getTypesResponse">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:output>
+
+    </wsdl:operation>
+
+    <wsdl:operation name="addBook">
+
+      <wsdlsoap:operation soapAction=""/>
+
+      <wsdl:input name="addBookRequest">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:input>
+
+      <wsdl:output name="addBookResponse">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:output>
+
+    </wsdl:operation>
+
+    <wsdl:operation name="addBookInstance">
+
+      <wsdlsoap:operation soapAction=""/>
+
+      <wsdl:input name="addBookInstanceRequest">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:input>
+
+      <wsdl:output name="addBookInstanceResponse">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:output>
+
+    </wsdl:operation>
+
+  </wsdl:binding>
+
+  <wsdl:service name="library">
+
+    <wsdl:port binding="wns:LibrarySoapBinding" name="library">
+      <wsdlsoap:address location="http://127.0.0.1:5555/axis2/services/library"/>
+    </wsdl:port>
+
+  </wsdl:service>
+
+</wsdl:definitions>
diff --git a/rampart_1_1/modules/jibx/test-resources/xml/customer-data.xml b/rampart_1_1/modules/jibx/test-resources/xml/customer-data.xml
new file mode 100644
index 0000000..4e095f5
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test-resources/xml/customer-data.xml
@@ -0,0 +1,12 @@
+<customer>
+  <person>
+    <cust-num>123456789</cust-num>
+    <first-name>John</first-name>
+    <last-name>Smith</last-name>
+  </person>
+  <street>12345 Happy Lane</street>
+  <city>Plunk</city>
+  <state>WA</state>
+  <zip>98059</zip>
+  <phone>888.555.1234</phone>
+</customer>
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Customer.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Customer.java
new file mode 100644
index 0000000..be077e5
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Customer.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2006 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.axis2.jibx;
+
+public class Customer {
+    public Person person;
+    public String street;
+    public String city;
+    public String state;
+    public Integer zip;
+    public String phone;
+    
+    public Customer() {}
+    
+    public Customer(String city, Person person, String phone, String state, String street, Integer zip) {
+        this.city = city;
+        this.person = person;
+        this.phone = phone;
+        this.state = state;
+        this.street = street;
+        this.zip = zip;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof Customer) {
+            Customer cust = (Customer)obj;
+            return person.equals(cust.person) && street.equals(cust.street) &&
+                city.equals(cust.city) && state.equals(cust.state) &&
+                zip.equals(cust.zip) && phone.equals(cust.phone);
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Echo.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Echo.java
new file mode 100644
index 0000000..3add509
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Echo.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.axis2.jibx;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class Echo {
+
+	private static final Log log = LogFactory.getLog(Echo.class);
+    
+    public Echo() {
+    }
+
+    public OMElement echo(OMElement omEle) {
+        return omEle;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Person.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Person.java
new file mode 100644
index 0000000..53ed3d8
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Person.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2006 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.axis2.jibx;
+
+public class Person {
+    public int customerNumber;
+    public String firstName;
+    public String lastName;
+    
+    public Person() {}
+    
+    public Person(int number, String name, String name2) {
+        customerNumber = number;
+        firstName = name;
+        lastName = name2;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof Person) {
+            Person person = (Person)obj;
+            return customerNumber == person.customerNumber &&
+                firstName.equals(person.firstName) &&
+                lastName.equals(person.lastName);
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Test.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Test.java
new file mode 100644
index 0000000..c467e56
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/Test.java
@@ -0,0 +1,270 @@
+/*
+ * Copyright 2006 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.axis2.jibx;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.util.Utils;
+import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.codegen.extension.JiBXExtension;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.taskdefs.Java;
+import org.apache.tools.ant.taskdefs.Javac;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.Commandline.Argument;
+
+/**
+ * Full code generation and runtime test for JiBX data binding extension. This
+ * is based on the XMLBeans test code.
+ *
+ */
+public class Test extends TestCase
+{
+    private static final String TEST_CLASSES_DIR = "target/test-classes";
+    private static final String OUTPUT_LOCATION_BASE = "target/gen";
+    private static final String OUTPUT_LOCATION_PREFIX = "/test";
+    private static final String WSDL_BASE_DIR = "test-resources/wsdl/";
+    private static final String BINDING_BASE_DIR = "test-resources/binding/";
+    private static final String REPOSITORY_DIR = "test-resources/repo/";
+    private static final String CLASSES_DIR = "/target/classes/";
+    private static final String[] moduleNames= {"common", "core"};
+    private static final String MODULE_PATH_PREFIX = "../modules/";
+    private static final String COMPILE_TARGET_NAME = "compile";
+    private static final String STUB_CLASS =
+        "org.apache.ws.axis2.jibx.customer.wsdl.EchoCustomerServiceStub";
+
+    public static final QName serviceName = new QName("EchoCustomerService");
+    public static final QName operationName = new QName("echo");
+    
+    private AxisService service;
+
+    /**
+     * Make the root output directory
+     * @throws Exception
+     */
+    protected void setUp() throws Exception {
+        File outputFile = new File(OUTPUT_LOCATION_BASE);
+        if (outputFile.exists() && outputFile.isDirectory()){
+            deleteDir(outputFile);
+            outputFile.mkdir();
+        }else{
+            outputFile.mkdir();
+        }
+    }
+
+    private void startServer() throws Exception {
+        service = Utils.createSimpleService(serviceName,
+            Echo.class.getName(), operationName);
+        UtilServer.start(REPOSITORY_DIR);
+        UtilServer.deployService(service);
+    }
+
+    /**
+     * Deletes all files and subdirectories under dir.
+     * Returns true if all deletions were successful.
+     * If a deletion fails, the method stops attempting to delete and returns false.
+     */
+    private boolean deleteDir(File dir) {
+        if (dir.isDirectory()) {
+            String[] children = dir.list();
+            for (int i=0; i<children.length; i++) {
+                boolean success = deleteDir(new File(dir, children[i]));
+                if (!success) {
+                    return false;
+                }
+            }
+        }
+
+        // The directory is now empty so delete it
+        return dir.delete();
+    }
+
+    private void stopServer() throws Exception {
+        UtilServer.unDeployService(serviceName);
+        UtilServer.stop();
+/*        File outputFile = new File(OUTPUT_LOCATION_BASE);
+        if (outputFile.exists() && outputFile.isDirectory()){
+            deleteDir(outputFile);
+        }   */
+    }
+
+    /**
+     * Handle linkage code generation.
+     * 
+     * @param wsdl
+     * @param binding
+     * @param outdir
+     * @param unwrap
+     * @throws CodeGenerationException
+     */
+    private void codeGenerate(String wsdl, String binding, String outdir,
+        boolean unwrap) throws CodeGenerationException {
+        
+        // create the option map
+        Map optionMap = new HashMap();
+        optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
+            new CommandLineOption(CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
+            new String[] {wsdl}));
+
+        //use default sync option - No option is given
+        //use default async option - No option is given
+        //use default language option - No option is given
+        
+        // output location
+        optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
+            new CommandLineOption(CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
+            new String[] {outdir}));
+        
+         // db is JiBX
+         optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
+            new CommandLineOption(CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
+            new String[] {"jibx"}));
+         
+         // unwrap if requested
+         if (unwrap) {
+             optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.UNWRAP_PARAMETERS,
+                 new CommandLineOption(CommandLineOptionConstants.WSDL2JavaConstants.UNWRAP_PARAMETERS,
+                 new String[0]));
+         }
+         
+         // binding definition is supplied
+         String option = CommandLineOptionConstants.WSDL2JavaConstants.EXTRA_OPTIONTYPE_PREFIX +
+             JiBXExtension.BINDING_PATH_OPTION;
+         optionMap.put(option, new CommandLineOption(option, new String[] {binding}));
+         
+        //TODO: Make this work
+        //test case option is on
+//        optionMap.put(
+//                CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION,
+//                new CommandLineOption(
+//                        CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION,
+//                        new String[0]));
+        CommandLineOptionParser parser = new CommandLineOptionParser(optionMap);
+        new CodeGenerationEngine(parser).generate();
+    }
+
+    /**
+     * Compile generated code.
+     * 
+     * @param outdir
+     */
+    private void compile(String outdir) throws Exception {
+        
+        //using the ant javac task for compilation
+        Javac javaCompiler = new Javac();
+        Project codeGenProject = new Project();
+        Target compileTarget = new Target();
+
+        compileTarget.setName(COMPILE_TARGET_NAME);
+        compileTarget.addTask(javaCompiler);
+        codeGenProject.addTarget(compileTarget);
+        codeGenProject.setSystemProperties();
+        javaCompiler.setProject(codeGenProject);
+        javaCompiler.setIncludejavaruntime(true);
+        javaCompiler.setIncludeantruntime(true);
+
+        /*
+          This harmless looking setFork is actually very important. unless the compiler is
+          forked it wont work!
+        */
+        javaCompiler.setFork(true);
+
+        //Create classpath - The generated output directories also become part of the classpath
+        //reason for this is that some codegenerators(XMLBeans) produce compiled classes as part of
+        //generated artifacts
+        String classdir = outdir + "/classes";
+        File outputLocationFile = new File(classdir);
+        outputLocationFile.mkdir();
+        Path classPath = new Path(codeGenProject, classdir) ;
+        classPath.add(new Path(codeGenProject, TEST_CLASSES_DIR));
+        classPath.addExisting(classPath.concatSystemClasspath(), false);
+        for (int i = 0; i < moduleNames.length; i++) {
+            classPath.add(new Path(codeGenProject,
+                MODULE_PATH_PREFIX + moduleNames[i] + CLASSES_DIR));
+        }
+        javaCompiler.setClasspath(classPath);
+
+        //set sourcePath - The generated output directories also become part of the sourcepath
+        Path sourcePath = new Path(codeGenProject, outdir) ;
+        sourcePath.setLocation(outputLocationFile);
+        javaCompiler.setSrcdir(sourcePath);
+
+        //output the classes into the output dir as well
+        javaCompiler.setDestdir(outputLocationFile);
+        javaCompiler.setDebug(true);
+        javaCompiler.setVerbose(true);
+        javaCompiler.execute();
+//        codeGenProject.executeTarget(COMPILE_TARGET_NAME);
+    }
+    
+    public void testBuildAndRun() throws Exception {
+        startServer();
+        
+        // start by generating and compiling the Axis2 interface code
+        String outdir =
+            OUTPUT_LOCATION_BASE + OUTPUT_LOCATION_PREFIX;
+        codeGenerate(WSDL_BASE_DIR + "customer-echo.wsdl",
+            BINDING_BASE_DIR + "customer-binding.xml", outdir, false);
+        compile(outdir);
+        
+        // finish by testing a roundtrip call to the echo server
+        File classesdir = new File(outdir + "/classes");
+        URLClassLoader loader = new URLClassLoader(new URL[] {classesdir.toURL()});
+        Class stub = loader.loadClass(STUB_CLASS);
+        Object inst = stub.newInstance();
+        Person person = new Person(42, "John", "Smith");
+        Customer customer = new Customer("Redmond", person, "+14258858080",
+            "WA", "14619 NE 80th Pl.", new Integer(98052));
+        Method method = stub.getMethod("echo", new Class[] {Customer.class});
+        Object result = method.invoke(inst, new Object[] {customer});
+        stopServer();
+        assertEquals("Result object does not match request object",
+            customer, result);
+    }
+    
+    public void testCompileWrapped() throws Exception {
+        
+        // generate and compile the Axis2 interface code
+        String outdir = OUTPUT_LOCATION_BASE + OUTPUT_LOCATION_PREFIX;
+        codeGenerate(WSDL_BASE_DIR + "library.wsdl",
+            BINDING_BASE_DIR + "library-binding.xml", outdir, false);
+        compile(outdir);
+    }
+    
+    public void testCompileUnwrapped() throws Exception {
+        
+        // generate and compile the Axis2 interface code
+        String outdir = OUTPUT_LOCATION_BASE + OUTPUT_LOCATION_PREFIX;
+        codeGenerate(WSDL_BASE_DIR + "library.wsdl",
+            BINDING_BASE_DIR + "library-binding.xml", outdir, true);
+        compile(outdir);
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/UtilServer.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/UtilServer.java
new file mode 100644
index 0000000..48918eb
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/UtilServer.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2004,2005 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.axis2.jibx;
+
+import java.io.File;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+
+public class UtilServer {
+    private static int count = 0;
+
+    private static SimpleHTTPServer receiver;
+
+    public static final int TESTING_PORT = 5555;
+
+    public static final String FAILURE_MESSAGE = "Intentional Failure";
+
+
+    public static synchronized void deployService(AxisService service)
+            throws AxisFault {
+        receiver.getConfigurationContext().getAxisConfiguration().addService(
+                service);
+    }
+
+    public static synchronized void unDeployService(QName service)
+            throws AxisFault {
+        receiver.getConfigurationContext().getAxisConfiguration()
+                .removeService(service.getLocalPart());
+    }
+
+    public static synchronized void start(String repository) throws Exception {
+        if (count == 0) {
+            ConfigurationContext er = getNewConfigurationContext(repository);
+
+            receiver = new SimpleHTTPServer(er, TESTING_PORT);
+
+            try {
+                receiver.start();
+                System.out.print("Server started on port "
+                        + TESTING_PORT + ".....");
+            } finally {
+
+            }
+
+            try {
+                Thread.sleep(2000);
+            } catch (InterruptedException e1) {
+                throw new AxisFault("Thread interuptted", e1);
+            }
+
+        }
+        count++;
+    }
+
+     public static synchronized void start(String repository , String axis2xml) throws Exception {
+        if (count == 0) {
+            ConfigurationContext er = getNewConfigurationContext(repository,axis2xml);
+
+            receiver = new SimpleHTTPServer(er, TESTING_PORT);
+
+            try {
+                receiver.start();
+                System.out.print("Server started on port "
+                        + TESTING_PORT + ".....");
+            } finally {
+
+            }
+
+            try {
+                Thread.sleep(2000);
+            } catch (InterruptedException e1) {
+                throw new AxisFault("Thread interuptted", e1);
+            }
+
+        }
+        count++;
+    }
+
+    public static ConfigurationContext getNewConfigurationContext(
+            String repository) throws Exception {
+        File file = new File(repository);
+        if (!file.exists()) {
+            throw new Exception("repository directory "
+                    + file.getAbsolutePath() + " does not exists");
+        }
+        return ConfigurationContextFactory.createConfigurationContextFromFileSystem(file.getAbsolutePath(),
+                file.getAbsolutePath() + "/conf/axis2.xml");
+    }
+
+      public static ConfigurationContext getNewConfigurationContext(
+            String repository , String axis2xml) throws Exception {
+        File file = new File(repository);
+        if (!file.exists()) {
+            throw new Exception("repository directory "
+                    + file.getAbsolutePath() + " does not exists");
+        }
+        return ConfigurationContextFactory.createConfigurationContextFromFileSystem(file.getAbsolutePath(),
+                axis2xml);
+    }
+
+    public static synchronized void stop() throws AxisFault {
+        if (count == 1) {
+            receiver.stop();
+            while (receiver.isRunning()) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e1) {
+                }
+            }
+            count = 0;
+            // tp.doStop();
+            System.out.print("Server stopped .....");
+        } else {
+            count--;
+        }
+        ListenerManager listenerManager =
+                receiver.getConfigurationContext().getListenerManager();
+        if (listenerManager != null) {
+            listenerManager.stop();
+        }
+    }
+
+    public static ConfigurationContext getConfigurationContext() {
+        return receiver.getConfigurationContext();
+    }
+
+}
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/beans/Book.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/beans/Book.java
new file mode 100644
index 0000000..d906822
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/beans/Book.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2006 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.axis2.jibx.beans;
+
+public class Book
+{
+    private String m_type;
+    private String m_isbn;
+    private String m_title;
+    private String[] m_authors;
+    
+    public Book() {}
+    
+    public Book(String type, String isbn, String title, String[] authors) {
+        m_isbn = isbn;
+        m_title = title;
+        m_type = type;
+        m_authors = authors;
+    }
+
+    public String getType() {
+        return m_type;
+    }
+    
+    public String getIsbn() {
+        return m_isbn;
+    }
+    
+    public String getTitle() {
+        return m_title;
+    }
+    
+    public String[] getAuthors() {
+        return m_authors;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/beans/Type.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/beans/Type.java
new file mode 100644
index 0000000..23e1fcf
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/beans/Type.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2006 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.axis2.jibx.beans;
+
+public class Type
+{
+    private String m_name;
+    private String m_description;
+    private int m_count;
+    
+    public Type() {}
+    
+    public Type(String name, String description) {
+        m_name = name;
+        m_description = description;
+    }
+
+    public String getName() {
+        return m_name;
+    }
+    
+    public String getDescription() {
+        return m_description;
+    }
+    
+    public int getCount() {
+        return m_count;
+    }
+    
+    public void setCount(int count) {
+        m_count = count;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookInstanceRequest.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookInstanceRequest.java
new file mode 100644
index 0000000..7d17939
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookInstanceRequest.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+import org.apache.axis2.jibx.beans.Book;
+
+public class AddBookInstanceRequest
+{
+    private Book m_book;
+    
+    public AddBookInstanceRequest(Book book) {
+        m_book = book;
+    }
+    
+    public Book getBook() {
+        return m_book;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookInstanceResponse.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookInstanceResponse.java
new file mode 100644
index 0000000..ce4748e
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookInstanceResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+import org.apache.axis2.jibx.beans.Book;
+
+public class AddBookInstanceResponse
+{
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookRequest.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookRequest.java
new file mode 100644
index 0000000..7b2de4f
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookRequest.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+import org.apache.axis2.jibx.beans.Book;
+
+public class AddBookRequest
+{
+    private Book m_book;
+    
+    public AddBookRequest(Book book) {
+        m_book = book;
+    }
+    
+    public Book getBook() {
+        return m_book;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookResponse.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookResponse.java
new file mode 100644
index 0000000..841db2a
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/AddBookResponse.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+import org.apache.axis2.jibx.beans.Book;
+
+public class AddBookResponse
+{
+    private boolean m_success;
+    
+    public void setSuccess(boolean success) {
+        m_success = success;
+    }
+    
+    public boolean isSuccess() {
+        return m_success;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBookRequest.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBookRequest.java
new file mode 100644
index 0000000..aeb846c
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBookRequest.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+public class GetBookRequest
+{
+    private String m_isbn;
+    
+    public GetBookRequest(String isbn) {
+        m_isbn = isbn;
+    }
+
+    public String getIsbn() {
+        return m_isbn;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBookResponse.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBookResponse.java
new file mode 100644
index 0000000..2d24485
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBookResponse.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+import org.apache.axis2.jibx.beans.Book;
+
+public class GetBookResponse
+{
+    private Book m_book;
+    
+    public GetBookResponse(Book book) {
+        m_book = book;
+    }
+    
+    public Book getBook() {
+        return m_book;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBooksByTypeRequest.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBooksByTypeRequest.java
new file mode 100644
index 0000000..fccf435
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBooksByTypeRequest.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+public class GetBooksByTypeRequest
+{
+    private String m_type;
+    
+    public GetBooksByTypeRequest(String type) {
+        m_type = type;
+    }
+    
+    public String getType() {
+        return m_type;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBooksByTypeResponse.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBooksByTypeResponse.java
new file mode 100644
index 0000000..270ec0a
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetBooksByTypeResponse.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+import org.apache.axis2.jibx.beans.Book;
+
+public class GetBooksByTypeResponse
+{
+    private Book[] m_books;
+    
+    public GetBooksByTypeResponse(Book[] books) {
+        m_books = books;
+    }
+    
+    public Book[] getBooks() {
+        return m_books;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetTypesRequest.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetTypesRequest.java
new file mode 100644
index 0000000..3f6ec4c
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetTypesRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+import org.apache.axis2.jibx.beans.Book;
+
+public class GetTypesRequest
+{
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetTypesResponse.java b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetTypesResponse.java
new file mode 100644
index 0000000..0cdfbf5
--- /dev/null
+++ b/rampart_1_1/modules/jibx/test/org/apache/axis2/jibx/wrappers/GetTypesResponse.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2006 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.axis2.jibx.wrappers;
+
+import org.apache.axis2.jibx.beans.Type;
+
+public class GetTypesResponse
+{
+    private Type[] m_types;
+    
+    public GetTypesResponse(Type[] types) {
+        m_types = types;
+    }
+    
+    public Type[] getTypes() {
+        return m_types;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/conf/axis2.xml b/rampart_1_1/modules/kernel/conf/axis2.xml
new file mode 100644
index 0000000..86f6b17
--- /dev/null
+++ b/rampart_1_1/modules/kernel/conf/axis2.xml
@@ -0,0 +1,304 @@
+<!--
+/*
+ * 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.
+ */
+ -->
+ 
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">false</parameter>

+    <parameter name="enableSwA" locked="false">false</parameter>

+

+    <!--Uncomment if you want to enable file caching for attachments -->

+    <!--parameter name="cacheAttachments" locked="false">true</parameter>

+    <parameter name="attachmentDIR" locked="false"></parameter>

+    <parameter name="sizeThreshold" locked="false">4000</parameter-->

+

+    <!--This will give out the timout of the configuration contexts, in seconds-->

+    <parameter name="ConfigContextTimeoutInterval" locked="false">30</parameter>

+

+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->

+    <!--that behaviour.-->

+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">false</parameter>

+

+    <!--If there aren't any information available to find out the fault reason, we set the message of the expcetion-->

+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->

+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->

+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->

+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->

+    <!--<parameter name="ServicesDirectory" locked="false">service</parameter>-->

+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->

+    <!--<parameter name="ModulesDirectory" locked="false">modules</parameter>-->

+

+

+

+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->

+    <!--root which can configured using the following contextRoot parameter-->

+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->

+

+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distingiush those endpoints-->

+    <!--In case of a servlet, if you change this you have to manually change the settings of your servlet container to map this -->

+    <!--context path to proper Axis2 servlets-->

+    <!--<parameter name="servicePath" locked="false">services</parameter>-->

+    <!--<parameter name="restPath" locked="false">rest</parameter>-->

+

+

+    <!--Set the flag to true if you want to enable transport level session mangment-->

+    <parameter name="manageTransportSession" locked="false">false</parameter>

+

+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->

+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->

+    <!--parameters help to tweak the message handling of two main servlets. -->

+

+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->

+    <parameter name="enableRESTInAxis2MainServlet" locked="true">false</parameter>

+

+    <!-- Following parameter will completely disable REST handling in both the servlets-->

+    <parameter name="disableREST" locked="true">false</parameter>

+

+    <!-- This will disable the separate servlet we have for REST handling. -->

+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>

+

+    <!-- If you have a frontend host which exposes this webservice using a different public URL  -->

+    <!-- use this parameter to override autodetected url -->

+    <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->

+

+

+    <!--    The way of adding listener to the system-->

+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->

+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->

+    <!--    </listener>-->

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->

+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->

+    <!--any operation -->

+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </messageReceivers>

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http"

+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">8080</parameter>

+        <!-- Here is the complete list of supported parameters (see example settings further below):

+            port: the port to listen on (default 6060)

+            hostname:  if non-null, url prefix used in reply-to endpoint references                                 (default null)

+            originServer:  value of http Server header in outgoing messages                                         (default "Simple-Server/1.1")

+            requestTimeout:  value in millis of time that requests can wait for data                                (default 20000)

+            requestTcpNoDelay:  true to maximize performance and minimize latency                                   (default true)

+                                false to minimize bandwidth consumption by combining segments

+            requestCoreThreadPoolSize:  number of threads available for request processing (unless queue fills up)  (default 25)

+            requestMaxThreadPoolSize:  number of threads available for request processing if queue fills us         (default 150)

+                                       note that default queue never fills up:  see HttpFactory

+            threadKeepAliveTime:  time to keep threads in excess of core size alive while inactive                  (default 180)

+                                  note that no such threads can exist with default unbounded request queue

+            threadKeepAliveTimeUnit:  TimeUnit of value in threadKeepAliveTime (default SECONDS)                    (default SECONDS)

+        -->

+        <!-- <parameter name="hostname"                  locked="false">http://www.myApp.com/ws</parameter> -->

+        <!-- <parameter name="originServer"              locked="false">My-Server/1.1</parameter>           -->

+        <!-- <parameter name="requestTimeout"            locked="false">10000</parameter>                   -->

+        <!-- <parameter name="requestTcpNoDelay"         locked="false">false</parameter>                   -->

+        <!-- <parameter name="requestCoreThreadPoolSize" locked="false">50</parameter>                      -->

+        <!-- <parameter name="RequestMaxThreadPoolSize"  locked="false">100</parameter>                     -->

+        <!-- <parameter name="threadKeepAliveTime"       locked="false">240000</parameter>                  -->

+        <!-- <parameter name="threadKeepAliveTimeUnit"   locked="false">MILLISECONDS</parameter>            -->

+    </transportReceiver>

+    

+    <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)

+    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">

+        <parameter name="myTopicConnectionFactory" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>

+        </parameter>

+

+        <parameter name="myQueueConnectionFactory" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>

+        </parameter>

+

+        <parameter name="default" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>

+        </parameter>

+    </transportReceiver>-->

+

+    <!--Uncomment if you want to have SMTP transport support-->

+    <!--<transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">-->

+    <!--<parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>-->

+    <!--<parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>-->

+    <!--<parameter name="transport.mail.pop3.port" locked="false">110</parameter>-->

+    <!--<parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>-->

+    <!--</transportReceiver>-->

+

+	<!--Uncomment if you want to have TCP transport support-->

+    <!--transportReceiver name="tcp"

+                       class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter-->>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncommet following paramter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->

+    <!-- /transportReceiver -->

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp"

+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local"

+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="http"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+    <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)

+    <transportSender name="jms"

+                     class="org.apache.axis2.transport.jms.JMSSender"/>

+    -->

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+   <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">

+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>

+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>

+   </transportSender>

+   -->

+

+    <!-- ================================================= -->

+    <!-- Global Modules  -->

+    <!-- ================================================= -->

+    <!-- Comment this to disable Addressing -->

+    <module ref="addressing"/>

+

+    <!--Configuring module , providing parameters for modules whether they refer or not-->

+    <!--<moduleConfig name="addressing">-->

+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->

+    <!--</moduleConfig>-->

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+    <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+        <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Transport"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Transport"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+	<phase name="soapmonitorPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+	<phase name="soapmonitorPhase"/>

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+        <phase name="Security"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+	<phase name="soapmonitorPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+	<phase name="soapmonitorPhase"/>

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/kernel/conf/commons-logging.properties b/rampart_1_1/modules/kernel/conf/commons-logging.properties
new file mode 100755
index 0000000..7d01d65
--- /dev/null
+++ b/rampart_1_1/modules/kernel/conf/commons-logging.properties
@@ -0,0 +1,27 @@
+# -------------------------------------------------------------------
+# 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.
+# -------------------------------------------------------------------
+
+# This is the logging properties that goes to the war, there are two logging conf kept at the 
+# svn, one for developement (one at src/test-resources) and other for producation
+ 
+# Uncomment the next line to disable all logging.
+#org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog
+
+# Uncomment the next line to enable the simple log based logging
+#org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
+
+# Uncomment the next line to enable log4j based logging
+#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
diff --git a/rampart_1_1/modules/kernel/conf/log4j.properties b/rampart_1_1/modules/kernel/conf/log4j.properties
new file mode 100755
index 0000000..97ad22d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/conf/log4j.properties
@@ -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.

+# -------------------------------------------------------------------

+

+# Set root category priority to INFO and its only appender to CONSOLE.

+log4j.rootCategory=INFO, CONSOLE

+#log4j.rootCategory=INFO, CONSOLE, LOGFILE

+

+# Set the enterprise logger priority to FATAL

+log4j.logger.org.apache.axis2.enterprise=FATAL

+log4j.logger.de.hunsicker.jalopy.io=FATAL

+log4j.logger.httpclient.wire.header=FATAL

+log4j.logger.org.apache.commons.httpclient=FATAL

+

+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.

+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

+log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c - %m%n

+

+# LOGFILE is set to be a File appender using a PatternLayout.

+log4j.appender.LOGFILE=org.apache.log4j.FileAppender

+log4j.appender.LOGFILE.File=axis2.log

+log4j.appender.LOGFILE.Append=true

+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout

+log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/maven.xml b/rampart_1_1/modules/kernel/maven.xml
new file mode 100644
index 0000000..2f5ad3e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/maven.xml
@@ -0,0 +1,35 @@
+<?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:u="jelly:util"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+    <postGoal name="test:compile">
+      <j:if test="${context.getVariable('maven.test.skip') != 'true'}">
+        <j:jelly xmlns="jelly:ant">
+            <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/service2"/>
+            <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/echo"/>
+            <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/invalidservice"/>
+            <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/outservice"/>
+            <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/module1"/>
+            <ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/serviceModule"/>
+        </j:jelly>
+        <ant:copy file="${basedir}/test-resources/deployment/axis2.xml" tofile="${basedir}/target/test-resources/deployment/axis2.xml"/>
+      </j:if>
+    </postGoal>
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+
+    <preGoal name="jar:jar">
+        <ant:filter token="axisVersion" value="${pom.currentVersion}"/>
+        <ant:copy toDir="target/classes/org/apache/axis2/i18n" overwrite="true" filtering="on" file="src/org/apache/axis2/i18n/resource.properties" />
+    </preGoal>
+</project>
diff --git a/rampart_1_1/modules/kernel/pom.xml b/rampart_1_1/modules/kernel/pom.xml
new file mode 100644
index 0000000..f872dfe
--- /dev/null
+++ b/rampart_1_1/modules/kernel/pom.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <groupId>org.apache.axis2</groupId>

+    <artifactId>axis2-parent</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+    <relativePath>../parent/pom.xml</relativePath>    

+  </parent>

+

+  <artifactId>axis2-kernel</artifactId>

+  <name>Apache Axis 2.0 - Kernel</name>

+  <description>Core Parts of Axis 2.0. This includes Axis 2.0 engine, Client API, Addressing support, etc.,</description>

+

+  <dependencies>

+    <dependency>

+      <groupId>${project.groupId}</groupId>

+      <artifactId>axis2-java2wsdl</artifactId>

+    </dependency>

+

+    <dependency>

+      <groupId>javax.servlet</groupId>

+      <artifactId>servlet-api</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>commons-httpclient</groupId>

+      <artifactId>commons-httpclient</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>commons-fileupload</groupId>

+      <artifactId>commons-fileupload</artifactId>

+    </dependency>      

+    <dependency>

+      <groupId>org.apache.httpcomponents</groupId>

+      <artifactId>jakarta-httpcore</artifactId>

+    </dependency> 

+    <dependency>

+      <groupId>wsdl4j</groupId>

+      <artifactId>wsdl4j</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>backport-util-concurrent</groupId>

+      <artifactId>backport-util-concurrent</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>woodstox</groupId>

+      <artifactId>wstx-asl</artifactId>

+    </dependency>

+    <!-- Added this to support WS Policy in Axis2 -->

+    <dependency>

+      <groupId>org.apache.ws.commons.neethi</groupId>

+      <artifactId>neethi</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.woden</groupId>

+      <artifactId>woden</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.geronimo.specs</groupId>

+      <artifactId>geronimo-jms_1.1_spec</artifactId>

+      <version>1.0.1</version>

+    </dependency>

+  </dependencies>

+  <build>

+    <sourceDirectory>src</sourceDirectory>

+    <testSourceDirectory>test</testSourceDirectory>

+    <resources>

+      <resource>

+        <directory>conf</directory>

+        <excludes>

+          <exclude>**/*.properties</exclude>

+        </excludes>

+        <filtering>false</filtering>

+      </resource>

+      <resource>

+        <directory>src</directory>

+        <excludes>

+          <exclude>**/*.java</exclude>

+        </excludes>

+      </resource>

+    </resources>

+    <testResources>

+      <testResource>

+        <targetPath>../test-resources</targetPath>

+        <directory>test-resources</directory>

+        <includes>

+          <include>**/**</include>

+        </includes>

+      </testResource>

+    </testResources>

+    <plugins>

+  	  <plugin>

+  		<artifactId>maven-surefire-plugin</artifactId>

+  		<inherited>true</inherited>

+  		<configuration>

+  			<excludes>

+                <exclude>**/*Abstract*.java</exclude>

+                <exclude>**/*Util*.java</exclude>

+                <exclude>**/*PhaseResolvingTest.java</exclude>

+            </excludes>

+            <includes>

+                <include>**/*Test.java</include>

+            </includes>

+  		</configuration>

+  	  </plugin>

+  	  <plugin>

+        <groupId>org.apache.maven.plugins</groupId>

+        <artifactId>maven-antrun-plugin</artifactId>

+        <version>1.1</version>

+        <executions>

+          <execution>

+            <id>process-test-resources</id>

+            <phase>process-test-resources</phase>

+            <configuration>

+              <tasks>

+				<ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/service2"/>

+	            <ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/echo"/>

+	            <ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/invalidservice"/>

+	            <ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/outservice"/>

+	            <ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/module1"/>

+	            <ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="test-resources/deployment/serviceModule"/>

+	            <copy file="${basedir}/test-resources/deployment/axis2.xml" tofile="${basedir}/target/test-resources/deployment/axis2.xml"/>

+              </tasks>

+            </configuration>

+            <goals>

+              <goal>run</goal>

+            </goals>

+          </execution>

+        </executions>

+        <dependencies>

+          <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant-antlr</artifactId>

+            <version>1.6.5</version>

+          </dependency>

+          <dependency>

+            <groupId>antlr</groupId>

+            <artifactId>antlrall</artifactId>

+            <version>2.7.4</version>

+          </dependency>

+        </dependencies>

+      </plugin>

+    </plugins>

+  </build>

+</project>

diff --git a/rampart_1_1/modules/kernel/project.properties b/rampart_1_1/modules/kernel/project.properties
new file mode 100644
index 0000000..869d256
--- /dev/null
+++ b/rampart_1_1/modules/kernel/project.properties
@@ -0,0 +1,18 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

+

diff --git a/rampart_1_1/modules/kernel/project.xml b/rampart_1_1/modules/kernel/project.xml
new file mode 100644
index 0000000..c65ecd9
--- /dev/null
+++ b/rampart_1_1/modules/kernel/project.xml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - Kernel</name>
+    <id>axis2-kernel</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>Core Parts of Axis 2.0. This includes Axis 2.0 engine, Client API, Addressing support, etc.,</description>
+
+    <dependencies>
+       <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-java2wsdl</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+
+
+        <!-- external JARs -->
+        
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+      <dependency>
+        <groupId>servletapi</groupId>
+        <artifactId>servletapi</artifactId>
+        <version>${servletapi.version}</version>
+        <properties>
+          <module>true</module>
+        </properties>
+      </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons.httpclient.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons.codec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+       <dependency>
+          <groupId>commons-fileupload</groupId>
+          <artifactId>commons-fileupload</artifactId>
+          <version>${commons.fileupload.version}</version>
+          <properties>
+              <module>true</module>
+          </properties>
+       </dependency>      
+        <dependency>
+            <groupId>httpcomponents-httpcore</groupId>
+            <artifactId>jakarta-httpcore</artifactId>
+            <version>${jakarta.httpcore.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency> 
+        <!--added this to support to keep WSDL information in AxisService-->
+         <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${XmlSchema.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javamail.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>geronimo-spec</groupId>
+            <artifactId>geronimo-spec-jms</artifactId>
+            <version>${geronimo.spec.jms.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>backport-util-concurrent</groupId>
+            <artifactId>backport-util-concurrent</artifactId>
+            <version>${backport_util_concurrent.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        
+	<dependency>
+	    <groupId>jaxen</groupId>
+	    <artifactId>jaxen</artifactId>
+	    <version>${jaxen.version}</version>
+	    <properties>
+	        <module>true</module>
+	    </properties>
+	    <url>http://www.ibiblio.org/maven/jaxen/jars/</url>
+	 </dependency>
+	
+	<!--for java2wsdl generation we use JAM , so there should be a dependency on the annogen jar or-->
+        <!--XML Beans-->
+         <dependency>
+            <groupId>annogen</groupId>
+            <artifactId>annogen</artifactId>
+            <version>${annogen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <!-- Added this to support WS Policy in Axis2 -->
+        <dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${neethi.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>incubator-woden</groupId>
+            <artifactId>woden</artifactId>
+            <version>${woden.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+    </dependencies>
+    <build>
+		<resources>
+			<resource>
+				<directory>conf</directory>
+				<excludes>
+					<exclude>**/*.properties</exclude>
+				</excludes>
+			</resource>
+			<resource>
+				<directory>src</directory>
+				<includes>
+					<include>**/*.properties</include>
+					<include>**/*.xml</include>
+					<include>**/*.xsl</include>
+				</includes>
+			</resource>
+		</resources>
+	<unitTest>
+	  <resources>
+		<resource>
+		  <targetPath>../test-resources</targetPath>
+	      <directory>test-resources</directory>
+	    </resource>
+	  </resources>
+	</unitTest>
+    </build>
+    <reports/>
+</project>
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/AxisFault.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/AxisFault.java
new file mode 100644
index 0000000..10e2675
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/AxisFault.java
@@ -0,0 +1,479 @@
+/*
+* Copyright 2004,2005 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.axis2;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPConstants;
+import org.apache.axiom.soap.SOAPFaultCode;
+import org.apache.axiom.soap.SOAPFaultDetail;
+import org.apache.axiom.soap.SOAPFaultNode;
+import org.apache.axiom.soap.SOAPFaultReason;
+import org.apache.axiom.soap.SOAPFaultRole;
+import org.apache.axiom.soap.SOAPHeader;
+
+import javax.xml.namespace.QName;
+import java.lang.reflect.InvocationTargetException;
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+/**
+ * An exception which maps cleanly to a SOAP fault.
+ * This is a base class for exceptions which are mapped to faults.
+ *
+ * @see <a href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/#soapfault">
+ *      SOAP1.2 specification</a>
+ * @see <a href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507">SOAP1.1 Faults</a>
+ *      <p/>
+ *      SOAP faults contain
+ *      <ol>
+ *      <li>A fault string
+ *      <li>A fault code
+ *      <li>A fault actor
+ *      <li>Fault details; an xml tree of fault specific elements
+ *      </ol>
+ *      <p/>
+ *      As SOAP1.2 faults are a superset of SOAP1.1 faults, this type holds soap1.2 fault information. When
+ *      a SOAP1.1 fault is created, spurious information can be discarded.
+ *      Mapping
+ *      <pre>
+ *                                                        SOAP1.2              SOAP1.1
+ *                                                        node                 faultactor
+ *                                                        reason(0).text       faultstring
+ *                                                        faultcode.value      faultcode
+ *                                                        faultcode.subcode    (discarded)
+ *                                                        detail               detail
+ *                                                        role                 (discarded)
+ *                                                        </pre>
+ */
+public class AxisFault extends RemoteException {
+
+    private static final long serialVersionUID = -374933082062124907L;
+
+    /**
+     * assume headers are not used very often
+     */
+    private List headers = new ArrayList(0);
+
+    private List faultReasonList = new ArrayList(1);
+    private QName faultCode;
+    private String faultNode;
+    private String faultRole;
+    private OMElement detail;
+
+    private Map faultElements;
+
+    private String message;
+    private Throwable cause;
+
+    /**
+     * SOAP1.2: URI of faulting node. Null for unknown.
+     * <p/>
+     * The value of the Node element information item is the URI that
+     * identifies the SOAP node that generated the fault.
+     * SOAP nodes that do not act as the ultimate SOAP receiver MUST include this element
+     * information item.
+     * An ultimate SOAP receiver MAY include this element information item to
+     * indicate explicitly that it generated the fault.
+     */
+    private String nodeURI;
+
+
+    /**
+     * @param message
+     */
+    public AxisFault(String message) {
+        super(message);
+        addReason(message);
+    }
+
+    /**
+     * These are the absolute minimum to construct a meaningful SOAPFault from user's information
+     *
+     * @param faultCode   - fault code of the message as a QName
+     * @param faultReason - the reason for the fault. The language will be defaulted to 'en'
+     * @param cause
+     */
+    public AxisFault(QName faultCode, String faultReason, Throwable cause) {
+        this(faultReason, cause);
+        setFaultCode(faultCode);
+    }
+
+    public AxisFault(QName faultCode, String faultReason, String faultNode, String faultRole, OMElement faultDetail) {
+        this(faultReason, faultCode);
+        this.faultNode = faultNode;
+        this.faultRole = faultRole;
+        setDetail(faultDetail);
+    }
+
+    /**
+     * This is just a convenience method for the user. If you set these, do not use other methods
+     * in this class to get and set things.
+     * Any of the parameters can be null
+     *
+     * @param soapFaultCode
+     * @param soapFaultReason
+     * @param soapFaultNode
+     * @param soapFaultRole
+     */
+    public AxisFault(SOAPFaultCode soapFaultCode, SOAPFaultReason soapFaultReason,
+                     SOAPFaultNode soapFaultNode, SOAPFaultRole soapFaultRole, SOAPFaultDetail soapFaultDetail) {
+
+        if (faultElements == null) {
+            // assuming that most of the times fault code, fault string and fault details are set
+            faultElements = new HashMap(3);
+        }
+        setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, soapFaultCode);
+        setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, soapFaultReason);
+        setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME, soapFaultNode);
+        setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME, soapFaultRole);
+        setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, soapFaultDetail);
+
+        if (soapFaultReason != null) {
+            message = soapFaultReason.getFirstSOAPText().getText();
+        }
+
+        if (soapFaultDetail != null) {
+            OMElement exceptionElement = soapFaultDetail.getFirstChildWithName(
+                    new QName(SOAPConstants.SOAP_FAULT_DETAIL_EXCEPTION_ENTRY));
+            if (exceptionElement != null && exceptionElement.getText() != null) {
+                cause = new Exception(exceptionElement.getText());
+            }
+
+            // setting the first child element of the fault detail as this.detail
+            this.detail = soapFaultDetail.getFirstElement();
+
+        }
+
+        if(soapFaultCode != null && soapFaultCode.getValue() != null) {
+            faultCode = soapFaultCode.getValue().getTextAsQName();
+        }
+    }
+
+    private void setToElementsListIfNotNull(String soapFaultElementName, OMElement soapFaultElement) {
+        if (soapFaultElement != null) {
+            faultElements.put(soapFaultElementName, soapFaultElement);
+        }
+    }
+
+    /**
+     * construct a fault from an exception
+     * TODO: handle AxisFaults or SOAPFaultException implementations differently?
+     *
+     * @param cause
+     */
+    public AxisFault(Throwable cause) {
+        this((cause != null)
+                ? cause.getMessage()
+                : null, cause);
+    }
+
+    /**
+     * @param messageText - this will appear as the Text in the Reason information item of SOAP Fault
+     * @param faultCode   - this will appear as the Value in the Code information item of SOAP Fault
+     */
+    public AxisFault(String messageText, String faultCode) {
+        this(messageText);
+        setFaultCode(faultCode);
+    }
+
+    /**
+     * @param messageText - this will appear as the Text in the Reason information item of SOAP Fault
+     * @param faultCode   - this will appear as the Value in the Code information item of SOAP Fault
+     */
+    public AxisFault(String messageText, QName faultCode) {
+        this(messageText);
+        setFaultCode(faultCode);
+    }
+
+    /**
+     * @param message
+     * @param cause
+     */
+    public AxisFault(String message, Throwable cause) {
+        super(message, cause);
+
+        if (message != null) {
+            addReason(message);
+        }
+    }
+
+    /**
+     * @param messageText - this will appear as the Text in the Reason information item of SOAP Fault
+     * @param faultCode   - this will appear as the Value in the Code information item of SOAP Fault
+     * @param cause       - this will appear under the Detail information item of SOAP Fault
+     */
+    public AxisFault(String messageText, QName faultCode, Throwable cause) {
+        this(messageText, cause);
+        setFaultCode(faultCode);
+    }
+
+    /**
+     * @param messageText - this will appear as the Text in the Reason information item of SOAP Fault
+     * @param faultCode   - this will appear as the Value in the Code information item of SOAP Fault
+     * @param cause       - this will appear under the Detail information item of SOAP Fault
+     */
+    public AxisFault(String messageText, String faultCode, Throwable cause) {
+        this(messageText, cause);
+        setFaultCode(faultCode);
+    }
+
+    /**
+     * Add a header to the list of fault headers
+     *
+     * @param header to add.
+     */
+    public void addHeader(SOAPHeader header) {
+        headers.add(header);
+    }
+
+    /**
+     * Add a reason for the fault in the empty "" language
+     *
+     * @param text text message
+     */
+    public void addReason(String text) {
+        faultReasonList.add(new FaultReason(text, ""));
+    }
+
+    /**
+     * Add a reason for the fault
+     *
+     * @param text     text message
+     * @param language language
+     */
+    public void addReason(String text, String language) {
+        faultReasonList.add(new FaultReason(text, language));
+    }
+
+    /**
+     * Returns the first fault reason, if available. If not found, returns null.
+     *
+     * @return faultReason
+     */
+    public String getReason() {
+        if (faultReasonList.size() >= 1)
+            return ((FaultReason) faultReasonList.get(0)).getText();
+
+        return null;
+    }
+
+    /**
+     * Iterate over all of the headers
+     *
+     * @return iterator
+     */
+    public ListIterator headerIterator() {
+        return headers.listIterator();
+    }
+
+    /**
+     * Get at the headers. Useful for java1.5 iteration.
+     *
+     * @return the headers for this fault
+     */
+    public List headers() {
+        return headers;
+    }
+
+    /**
+     * Make an AxisFault based on a passed Exception.  If the Exception is
+     * already an AxisFault, simply use that.  Otherwise, wrap it in an
+     * AxisFault.  If the Exception is an InvocationTargetException (which
+     * already wraps another Exception), get the wrapped Exception out from
+     * there and use that instead of the passed one.
+     *
+     * @param e the <code>Exception</code> to build a fault for
+     * @return an <code>AxisFault</code> representing <code>e</code>
+     */
+    public static AxisFault makeFault(Exception e) {
+        if (e instanceof InvocationTargetException) {
+            Throwable t = ((InvocationTargetException) e).getTargetException();
+
+            if (t instanceof Exception) {
+                e = (Exception) t;
+            }
+        }
+
+        if (e instanceof AxisFault) {
+            return (AxisFault) e;
+        }
+
+        return new AxisFault(e);
+    }
+
+    /**
+     * Get the current fault detail
+     *
+     * @return om element
+     */
+    public OMElement getDetail() {
+        return detail;
+    }
+
+    public QName getFaultCode() {
+        return faultCode;
+    }
+
+    /**
+     * @return SOAPFaultCode if, user has set a {@link SOAPFaultCode} element when constructing the
+     *         {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
+     */
+    public SOAPFaultCode getFaultCodeElement() {
+        return (SOAPFaultCode) (faultElements != null ? faultElements.get(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME) : null);
+    }
+
+    /**
+     * @return SOAPFaultCode if, user has set a {@link SOAPFaultReason} element when constructing the
+     *         {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
+     */
+    public SOAPFaultReason getFaultReasonElement() {
+        return (SOAPFaultReason) (faultElements != null ? faultElements.get(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME) : null);
+    }
+
+    /**
+     * @return SOAPFaultCode if, user has set a {@link SOAPFaultNode} element when constructing the
+     *         {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
+     */
+    public SOAPFaultNode getFaultNodeElement() {
+        return (SOAPFaultNode) (faultElements != null ? faultElements.get(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME) : null);
+    }
+
+    /**
+     * @return SOAPFaultCode if, user has set a {@link SOAPFaultRole} element when constructing the
+     *         {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
+     */
+    public SOAPFaultRole getFaultRoleElement() {
+        return (SOAPFaultRole) (faultElements != null ? faultElements.get(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME) : null);
+    }
+
+    /**
+     * @return SOAPFaultCode if, user has set a {@link SOAPFaultDetail} element when constructing the
+     *         {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
+     */
+    public SOAPFaultDetail getFaultDetailElement() {
+        return (SOAPFaultDetail) (faultElements != null ? faultElements.get(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME) : null);
+    }
+
+    /**
+     * Get the faulting node uri.
+     * SOAP1.2
+     *
+     * @return URI as a string or null
+     */
+    public String getNodeURI() {
+        return nodeURI;
+    }
+
+    /**
+     * Set the entire detail element of the fault
+     *
+     * @param detail
+     */
+    public void setDetail(OMElement detail) {
+        this.detail = detail;
+    }
+
+    public void setFaultCode(QName soapFaultCode) {
+        this.faultCode = soapFaultCode;
+    }
+
+    public void setFaultCode(String soapFaultCode) {
+        faultCode = new QName(soapFaultCode);
+    }
+
+    /**
+     * Set the faulting node uri. SOAP1.2
+     */
+    public void setNodeURI(String nodeURI) {
+        this.nodeURI = nodeURI;
+    }
+
+
+    public Map getFaultElements() {
+        return faultElements;
+    }
+
+    public String getFaultNode() {
+        return faultNode;
+    }
+
+    public String getFaultRole() {
+        return faultRole;
+    }
+
+    public String getMessage() {
+        return message != null ? message : super.getMessage();
+    }
+
+    public Throwable getCause() {
+        return cause != null ? cause : super.getCause();
+    }
+
+    class FaultReason {
+
+        /**
+         * Language of the reason.
+         * xml:lang="en" "en-GB" or just ""
+         */
+        private String language = "";
+
+        /**
+         * env:reasontext
+         */
+        private String text;
+
+        public FaultReason() {
+        }
+
+        public FaultReason(String text, String language) {
+            this.text = text;
+            this.language = language;
+        }
+
+        /**
+         * Returns a string representation of the object.
+         *
+         * @return the text value
+         */
+        public String toString() {
+            return text;
+        }
+
+        public String getLanguage() {
+            return language;
+        }
+
+        public String getText() {
+            return text;
+        }
+
+        public void setLanguage(String language) {
+            this.language = language;
+        }
+
+        public void setText(String text) {
+            this.text = text;
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/Constants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/Constants.java
new file mode 100644
index 0000000..95270f7
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/Constants.java
@@ -0,0 +1,283 @@
+/*
+* Copyright 2004,2005 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.axis2;
+
+/**
+ * Class Constants
+ */
+public class Constants extends org.apache.axis2.namespace.Constants {
+
+    /**
+     * Field SOAP_STYLE_RPC_ENCODED
+     */
+    public static final int SOAP_STYLE_RPC_ENCODED = 1000;
+
+    /**
+     * Field SOAP_STYLE_RPC_LITERAL
+     */
+    public static final int SOAP_STYLE_RPC_LITERAL = 1001;
+
+    /**
+     * Field SOAP_STYLE_DOC_LITERAL_WRAPPED
+     */
+    public static final int SOAP_STYLE_DOC_LITERAL_WRAPPED = 1002;
+
+    /**
+     * Field SESSION_SCOPE
+     */
+    public static final String SESSION_SCOPE = "session";
+
+    /**
+     * Field SESSION_CONTEXT_PROPERTY
+     */
+    public static final String SESSION_CONTEXT_PROPERTY = "SessionContext";
+
+    /**
+     * Field PHASE_TRANSPORT
+     */
+    public static final String PHASE_TRANSPORT = "transport";
+
+    /**
+     * Field PHASE_SERVICE
+     */
+    public static final String PHASE_SERVICE = "service";
+
+    /**
+     * Field PHASE_GLOBAL
+     */
+    public static final String PHASE_GLOBAL = "global";
+
+    /**
+     * Field MESSAGE_SCOPE
+     */
+    public static final String MESSAGE_SCOPE = "message";
+
+    /**
+     * To chenge the conetext path from axis2/service to something else
+     */
+    public static final String PARAM_CONTEXT_ROOT = "contextRoot";
+    /**
+     * To chenage the service path to somthing else
+     */
+    public static final String PARAM_SERVICE_PATH = "servicePath";
+    public static final String PARAM_REST_PATH = "restPath";
+    //Parameter name for transport session managemntt
+    public static final String MANAGE_TRANSPORT_SESSION = "manageTransportSession";
+
+    /**
+     * Field APPLICATION_SCOPE
+     */
+    public static final String SCOPE_APPLICATION = "application";
+    public static final String SCOPE_SOAP_SESSION = "soapsession";
+    public static final String SCOPE_TRANSPORT_SESSION = "transportsession";
+    public static final String SCOPE_REQUEST = "request";
+
+    public static final String AXIS2_REPO = "axis2.repo";
+    public static final String AXIS2_CONF = "axis2.xml";
+    public static final String USER_HOME = "user.home";
+
+    /**
+     * Field TRANSPORT_TCP
+     */
+    public static final String TRANSPORT_TCP = "tcp";
+    public static final String TRANSPORT_MAIL = "mail";
+    public static final String TRANSPORT_LOCAL = "local";
+    public static final String TRANSPORT_JMS = "jms";
+
+    /**
+     * Field TRANSPORT_HTTP
+     */
+    public static final String TRANSPORT_HTTP = "http";
+
+    //Parameter name of Service impl class
+    public static final String SERVICE_CLASS = "ServiceClass";
+    public static final String SERVICE_OBJECT_SUPPLIER = "ServiceObjectSupplier";
+    public static final String SERVICE_TCCL = "ServiceTCCL";
+
+    public static final String TCCL_DEFAULT = "default";
+    public static final String TCCL_COMPOSITE = "composite";
+    public static final String TCCL_SERVICE = "service";
+
+    /**
+     * Field REQUEST_URL_PREFIX
+     */
+    public static final String LIST_PHASES = "listPhases";
+    public static final String LIST_MODULES = "listModules";
+    public static final String LIST_GLOABLLY_ENGAGED_MODULES = "globalModules";
+    public static final String LIST_CONTEXTS = "listContexts";
+    public static final String ENGAGE_MODULE_TO_SERVICE_GROUP = "engageToServiceGroup";
+    public static final String ENGAGE_MODULE_TO_SERVICE = "engageToService";
+    public static final String ENGAGE_GLOBAL_MODULE = "engagingglobally";
+    public static final String ADMIN_LOGIN = "adminlogin";
+    public static final String AXIS_WEB_CONTENT_ROOT = "/axis2-web/";
+
+    /**
+     * List service for admin pages
+     */
+    public static final String ADMIN_LISTSERVICES = "listService";
+    public static final String VIEW_GLOBAL_HANDLERS = "viewGlobalHandlers";
+    public static final String SELECT_SERVICE_FOR_PARA_EDIT = "selectServiceParaEdit";
+    public static final String SELECT_SERVICE = "selectService";
+    public static final String EDIT_SERVICE_PARA = "editServicepara";
+    public static final String VIEW_SERVICE_HANDLERS = "viewServiceHandlers";
+    public static final String USER_NAME = "userName";
+    public static final String ADMIN_SECURITY_DISABLED = "disableAdminSecurity";
+
+    /**
+     * Field SINGLE_SERVICE
+     */
+    public static final String SINGLE_SERVICE = "singleservice";
+
+    /**
+     * @deprecated Please use org.apache.axis2.transport.http.HTTPConstants.MC_HTTP_SERVLETCONTEXT
+     */
+    public static final String SERVLET_CONTEXT = "transport.http.servletContext";
+    /**
+     * @deprecated Please use org.apache.axis2.transport.http.HTTPConstants.MC_HTTP_SERVLETREQUEST
+     */
+    public static final String HTTP_SERVLET_REQUEST = "transport.http.servletRequest";
+
+    public static final String SERVICE_MAP = "servicemap";
+    public static final String SERVICE_ROOT = "serviceRoot";
+    public static final String SERVICE_PATH = "servicePath";
+    public static final String SERVICE_HANDLERS = "serviceHandlers";
+    public static final String SERVICE_GROUP_MAP = "serviceGroupmap";
+    public static final String SERVICE = "service";
+    public static final String SELECT_SERVICE_TYPE = "SELECT_SERVICE_TYPE";
+    public static final String IN_ACTIVATE_SERVICE = "inActivateService";
+    public static final String ACTIVATE_SERVICE = "activateService";
+    public static final String PHASE_LIST = "phaseList";
+    public static final String PASSWORD = "password";
+    public static final String OPERATION_MAP = "operationmap";
+    public static final String MODULE_MAP = "modulemap";
+    public static final String MODULE_ADDRESSING = "addressing";
+    public static final String LIST_SERVICE_GROUPS = "listServiceGroups";
+    public static final String LIST_OPERATIONS_FOR_THE_SERVICE = "listOperations";
+    public static final String IS_FAULTY = "Fault";
+    public static final String GLOBAL_HANDLERS = "axisconfig";
+
+    /**
+     * Keys for service/module error maps
+     */
+    public static final String ERROR_SERVICE_MAP = "errprservicemap";
+    public static final String ERROR_MODULE_MAP = "errormodulesmap";
+    public static final String ENGAGE_STATUS = "engagestatus";
+    public static final String CONFIG_CONTEXT = "config_context";
+    public static final String WSDL_CONTENT = "wsdl";
+    public static final String ACTION_MAPPING = "actionMapping";
+    public static final String OUTPUT_ACTION_MAPPING = "outputActionMapping";
+    public static final String FAULT_ACTION_MAPPING = "faultActionMapping";
+    public static final String FAULT_ACTION_NAME = "faultName";
+    public static final String VALUE_TRUE = "true";
+    public static final String VALUE_FALSE = "false";
+    public static final String TESTING_PATH = "target/test-resources/";
+    public static final String TESTING_REPOSITORY = TESTING_PATH + "samples";
+    public static final char SERVICE_NAME_SPLIT_CHAR = ':';
+    public static final String SERVICE_GROUP_ID = "ServiceGroupId";
+    public static final String RESPONSE_WRITTEN = "CONTENT_WRITTEN";
+    //To have a floag if the replyTo is not annon one
+    public static final String DIFFERENT_EPR = "DIFFERENT_EPR";
+
+    /**
+     * Transport Info
+     */
+    public static final String OUT_TRANSPORT_INFO = "OutTransportInfo";
+
+    /**
+     * Field METHOD_NAME_ESCAPE_CHARACTER
+     */
+    public static final char METHOD_NAME_ESCAPE_CHARACTER = '?';
+    public static final String LOGGED = "Logged";
+    public static final String CONTAINER_MANAGED = "ContainerManaged";
+
+    public static final String FAULT_INFORMATION_FOR_HEADERS = "FaultHeaders";
+
+    /**
+     * @deprecated Please use org.apache.axis2.transport.http.HTTPConstants.COOKIE_STRING
+     */
+    public static final String COOKIE_STRING = "Cookie";
+    public static final String SESSION_COOKIE = "axis_session";
+
+    /**
+     * Addressing Constants
+     */
+    public static final String ADDRESSING_ACTION = "WS-Addressing:Action";
+    public static final String HTTP_FRONTEND_HOST_URL = "httpFrontendHostUrl";
+    public static final String DEFAULT_REST_PATH = "rest";
+
+    public static interface Configuration {
+        public static final String ENABLE_REST = "enableREST";
+        public static final String ENABLE_REST_THROUGH_GET = "restThroughGet";
+
+        // globally enable MTOM
+        public static final String ENABLE_MTOM = "enableMTOM";
+        public static final String CACHE_ATTACHMENTS = "cacheAttachments";
+        public static final String ATTACHMENT_TEMP_DIR = "attachmentDIR";
+        public static final String FILE_SIZE_THRESHOLD = "sizeThreshold";
+        public static final String HTTP_METHOD_GET = "GET";
+        public static final String HTTP_METHOD = "HTTP_METHOD";
+        public static final String HTTP_METHOD_POST = "POST";
+
+        public static final String ENABLE_SWA = "enableSwA";
+
+        public static final String CONTENT_TYPE = "ContentType";
+        public static final String IS_USING_SEPARATE_LISTENER = "IsUsingSeparateListener";
+
+        public static final String CONFIG_CONTEXT_TIMOUT_INTERVAL = "ConfigContextTimeoutInterval";
+
+        public static final String TRANSPORT_IN_URL = "TransportInURL";
+
+        public static final String URL_PARAMETER_LIST = "URLParameterList";
+
+        public static final String SEND_STACKTRACE_DETAILS_WITH_FAULTS = "sendStacktraceDetailsWithFaults";
+
+        public static final String DRILL_DOWN_TO_ROOT_CAUSE_FOR_FAULT_REASON = "drillDownToRootCauseForFaultReason";
+
+        public static final String ENABLE_REST_IN_AXIS2_MAIN_SERVLET = "enableRESTInAxis2MainServlet";
+
+        public static final String DISABLE_REST = "disableREST";
+
+        public static final String DISABLE_SEPARATE_ENDPOINT_FOR_REST = "disableSeparateEndpointForREST";
+
+        // this will contain the keys of all the properties that will be in the message context
+        public static final String TRANSPORT_URL = "TransportURL";
+
+        /**
+         * @deprecated please use org.apache.axis2.addressing.AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES
+         */
+        public static final String DISABLE_ADDRESSING_FOR_OUT_MESSAGES = "disableAddressingForOutMessages";
+
+        // if this property is set to Boolean.TRUE then the SOAPAction header, if present,
+        // will NOT be set to the value of Options.getAction(). The empty value, "", will
+        // be used instead.
+        public static final String DISABLE_SOAP_ACTION = "disableSoapAction";
+
+        /**
+         * Field CHARACTER_SET_ENCODING
+         */
+        public static final String CHARACTER_SET_ENCODING = "CHARACTER_SET_ENCODING";
+
+        /**
+         * If this is set to a Boolean 'true' value, the replyTo value will not be replaced in
+         * an OutIn invocation. This is useful for modules that hope to get the reply message in 
+         * its own manner.
+         */
+        public static final String USE_CUSTOM_LISTENER = "UseCustomListener";
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/ServiceObjectSupplier.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/ServiceObjectSupplier.java
new file mode 100644
index 0000000..061a6eb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/ServiceObjectSupplier.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2004,2005 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.axis2;
+
+import org.apache.axis2.description.AxisService;
+/*
+ * 
+ */
+
+public interface ServiceObjectSupplier {
+    /* Deployment Engine uses this method */
+    public Object getServiceObject(AxisService axisService) throws AxisFault;
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/Version.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/Version.java
new file mode 100644
index 0000000..dee00ab
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/Version.java
@@ -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.axis2;

+

+import org.apache.axis2.i18n.Messages;

+

+/**

+ * Little utility to get the version and build date of the axis2.jar.

+ * <p/>

+ * The messages referenced here are automatically kept up-to-date by the

+ * build.xml.

+ */

+public class Version {

+    /**

+     * Get the version of this AXIS.

+     *

+     * @return the version of this axis2

+     */

+    public static String getVersion() {

+        return Messages.getMessage("axisVersion") + "\n" +

+                Messages.getMessage("builtOn");

+    }

+

+    /**

+     * Returns the Axis Version number and build date.

+     * <p/>

+     * Example output: 1.1 Jul 08, 2003 (09:00:12 EDT)

+     *

+     * @return the full version of this axis2

+     */

+    public static String getVersionText() {

+        return Messages.getMessage("axisVersionRaw");

+    }

+

+    /**

+     * Entry point.

+     * <p/>

+     * Calling this with no arguments returns the version of the client-side

+     * axis2.jar.

+     */

+    public static void main(String[] args) {

+        System.out.println(getVersion());

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java
new file mode 100644
index 0000000..3553dfd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java
@@ -0,0 +1,154 @@
+/*
+* Copyright 2004,2005 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.axis2.addressing;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Interface AddressingConstants
+ */
+public interface AddressingConstants {
+
+    // ====================== Common Message Addressing Properties ===================
+    public static final String WSA_MESSAGE_ID = "MessageID";
+    public static final String WSA_RELATES_TO = "RelatesTo";
+    public static final String WSA_RELATES_TO_RELATIONSHIP_TYPE = "RelationshipType";
+    public static final String WSA_TO = "To";
+    public static final String WSA_REPLY_TO = "ReplyTo";
+    public static final String WSA_FROM = "From";
+    public static final String WSA_FAULT_TO = "FaultTo";
+    public static final String WSA_ACTION = "Action";
+    public static final String EPR_SERVICE_NAME = "ServiceName";
+    public static final String EPR_REFERENCE_PARAMETERS = "ReferenceParameters";
+
+    // ====================== Common EPR Elements ============================
+    public static final String EPR_ADDRESS = "Address";
+    public static final String WS_ADDRESSING_VERSION = "WSAddressingVersion";
+    public static final String WSA_DEFAULT_PREFIX = "wsa";
+    public static final String PARAM_SERVICE_GROUP_CONTEXT_ID =
+            "ServiceGroupContextIdFromAddressing";
+    public static final String IS_ADDR_INFO_ALREADY_PROCESSED = "IsAddressingProcessed";
+
+    // ====================== WSDL Binding Constants ========================
+    public static final String USING_ADDRESSING = "UsingAddressing";
+    public static final String ANONYMOUS = "Anonymous";
+    
+    // ====================== Addressing Requirement Levels ==================
+    // These are used to represent the requirement level on WS-Addressing indicated
+    // in a services.xml or a WSDL file.
+    // ADDRESSING_UNSPECIFIED is the equivalent of no UsingAddressing flag in a
+    // WSDL file and the default of the WSAddressingRequred attribute in service.xml
+    public static final String ADDRESSING_UNSPECIFIED = "unspecified";
+    // ADDRESSING_OPTIONAL is the equivalent of <wsaw:UsingAddressing required="false" />
+    // in a WSDL file
+    public static final String ADDRESSING_OPTIONAL    = "optional";
+    // ADDRESSING_REQUIRED is the equivalent of <wsaw:UsingAddressing required="true" />
+    // in a WSDL file
+    public static final String ADDRESSING_REQUIRED    = "required";
+
+    // If this property is set, addressing headers will be replaced from the information in the
+    // message context.  
+    public static final String REPLACE_ADDRESSING_HEADERS = "ReplaceAddressingHeaders";
+    
+    // this property once set to Boolean.TRUE will make the messages to skip Addressing Handler.
+    // So you will not see Addressing Headers in the OUT path.
+    public static final String DISABLE_ADDRESSING_FOR_OUT_MESSAGES = "disableAddressingForOutMessages";
+    
+    public static final String ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS = "addMustUnderstandToAddressingHeaders";
+
+    public static final String WSAW_ANONYMOUS_PARAMETER_NAME = "wsawAnonymous";
+    
+    // ======================== Common Faults ==============================
+    public static final String FAULT_ACTION_NOT_SUPPORTED = "ActionNotSupported";
+    public static final String FAULT_ACTION_NOT_SUPPORTED_REASON = "The [action] cannot be processed at the receiver.";
+
+    public interface Final {
+
+        // ====================== Addressing 1.0 Final Version Constants ====================
+        public static final String WSA_NAMESPACE =
+                "http://www.w3.org/2005/08/addressing";
+        public static final String WSAW_NAMESPACE =
+                "http://www.w3.org/2006/05/addressing/wsdl";
+        /**
+         * @deprecated use {@link #WSA_DEFAULT_RELATIONSHIP_TYPE} instead.
+         */
+        public static final String WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE =
+                "http://www.w3.org/2005/08/addressing/reply";
+        public static final String WSA_IS_REFERENCE_PARAMETER_ATTRIBUTE = "IsReferenceParameter";
+        public static final String WSA_ANONYMOUS_URL =
+                "http://www.w3.org/2005/08/addressing/anonymous";
+        public static final String WSA_NONE_URI =
+                "http://www.w3.org/2005/08/addressing/none";
+        public static final String WSA_FAULT_ACTION =
+                "http://www.w3.org/2005/08/addressing/fault";
+        public static final String WSA_SOAP_FAULT_ACTION =
+                "http://www.w3.org/2005/08/addressing/soap/fault";
+        public static final String WSA_TYPE_ATTRIBUTE_VALUE = "true";
+        public static final String WSA_SERVICE_NAME_ENDPOINT_NAME = "EndpointName";
+        public static final String WSA_POLICIES = "Policies";
+        public static final String WSA_METADATA = "Metadata";
+
+        public static final String WSA_INTERFACE_NAME = "InterfaceName";
+
+        public static final String WSA_DEFAULT_RELATIONSHIP_TYPE =
+                "http://www.w3.org/2005/08/addressing/reply";
+
+        // fault information
+        public static final String FAULT_HEADER_PROB_HEADER_QNAME = "ProblemHeaderQName";
+        public static final String FAULT_HEADER_PROB_HEADER = "ProblemHeader";
+        public static final String FAULT_HEADER_DETAIL = "FaultDetail";
+        public static final String FAULT_INVALID_HEADER = "InvalidAddressingHeader";
+        public static final String FAULT_INVALID_HEADER_REASON = "A header representing a Message Addressing Property is not valid and the message cannot be processed";
+        public static final String FAULT_ADDRESSING_HEADER_REQUIRED = "MessageAddressingHeaderRequired";
+        public static final String FAULT_ADDRESSING_HEADER_REQUIRED_REASON = "A required header representing a Message Addressing Property is not present";
+        public static final String FAULT_INVALID_CARDINALITY = "InvalidCardinality";
+        public static final String FAULT_ONLY_ANONYMOUS_ADDRESS_SUPPORTED = "OnlyAnonymousAddressSupported";
+        public static final String FAULT_ONLY_NON_ANONYMOUS_ADDRESS_SUPPORTED = "OnlyNonAnonymousAddressSupported";
+        public static final String FAULT_PROBLEM_ACTION_NAME = "ProblemAction";
+
+        public static final QName WSAW_USING_ADDRESSING = new QName(WSAW_NAMESPACE,USING_ADDRESSING);
+        public static final QName WSAW_ANONYMOUS = new QName(WSAW_NAMESPACE,USING_ADDRESSING);
+    }
+
+
+    public interface Submission {
+
+        // ====================== Addressing Submission Version Constants ===================
+        public static final String WSA_NAMESPACE =
+                "http://schemas.xmlsoap.org/ws/2004/08/addressing";
+        /**
+         * @deprecated use {@link #WSA_DEFAULT_RELATIONSHIP_TYPE} instead.
+         */
+        public static final String WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE = "wsa:Reply";
+        public static final String WSA_DEFAULT_RELATIONSHIP_TYPE = "wsa:Reply";
+        public static final String WSA_ANONYMOUS_URL =
+                "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
+
+        public static final String EPR_REFERENCE_PROPERTIES = "ReferenceProperties";
+        public static final String WSA_FAULT_ACTION =
+                "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
+        
+        // fault information
+        public static final String FAULT_INVALID_HEADER = "InvalidMessageInformationHeader";
+        public static final String FAULT_INVALID_HEADER_REASON = "A message information header is not valid and the message cannot be processed. The validity failure can be either structural or semantic, e.g. a [destination] that is not a URI or a [relationship] to a [message id] that was never issued.";
+        public static final String FAULT_ADDRESSING_HEADER_REQUIRED = "MessageInformationHeaderRequired";
+        public static final String FAULT_ADDRESSING_HEADER_REQUIRED_REASON = "A required message information header, To, MessageID, or Action, is not present.";
+
+        public static final QName WSAW_USING_ADDRESSING = new QName(WSA_NAMESPACE,USING_ADDRESSING);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
new file mode 100644
index 0000000..a034354
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
@@ -0,0 +1,146 @@
+/*

+* Copyright 2006 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.axis2.addressing;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.util.Utils;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public class AddressingHelper {

+

+    private static final Log log = LogFactory.getLog(AddressingHelper.class);

+

+    /**

+     * Returns true if the ReplyTo address does not match one of the supported

+     * anonymous urls. If the ReplyTo is not set, anonymous is assumed, per the Final

+     * spec. The AddressingInHandler should have set the ReplyTo to non-null in the

+     * 2004/08 case to ensure the different semantics. (per AXIS2-885)

+     *

+     * @param messageContext

+     */

+    public static boolean isReplyRedirected(MessageContext messageContext) {

+        EndpointReference replyTo = messageContext.getReplyTo();

+        if (replyTo == null) {

+            if (log.isDebugEnabled()) {

+                log.debug("isReplyRedirected: ReplyTo is null. Returning false");

+            }

+            return false;

+        } else {

+            return !replyTo.hasAnonymousAddress();

+        }

+    }

+

+    /**

+     * Returns true if the FaultTo address does not match one of the supported

+     * anonymous urls. If the FaultTo is not set, the ReplyTo is checked per the

+     * spec.

+     *

+     * @param messageContext

+     * @see isReplyRedirected

+     */

+    public static boolean isFaultRedirected(MessageContext messageContext) {

+        EndpointReference faultTo = messageContext.getFaultTo();

+        if (faultTo == null) {

+            if (log.isDebugEnabled()) {

+                log.debug("isReplyRedirected: FaultTo is null. Returning isReplyRedirected");

+            }

+            return isReplyRedirected(messageContext);

+        } else {

+            return !faultTo.hasAnonymousAddress();

+        }

+    }

+

+    /**

+     * Extract the parameter representing the Anonymous flag from the AxisOperation

+     * and return the String value. Return the default of "optional" if not specified.

+     *

+     * @param axisOperation

+     */

+    public static String getAnonymousParameterValue(AxisOperation axisOperation) {

+        String value = "";

+        if (axisOperation != null) {

+            value = Utils.getParameterValue(axisOperation.getParameter(AddressingConstants.WSAW_ANONYMOUS_PARAMETER_NAME));

+            if (log.isDebugEnabled()) {

+                log.debug("getAnonymousParameterValue: value: '" + value + "'");

+            }

+        }

+

+        if (value == null || "".equals(value.trim())) {

+            value = "optional";

+        }

+        return value.trim();

+    }

+

+    /**

+     * Set the value of an existing unlocked Parameter representing Anonymous or add a new one if one

+     * does not exist. If a locked Parameter of the same name already exists the method will trace and

+     * return.

+     *

+     * @param axisOperation

+     * @param value

+     */

+    public static void setAnonymousParameterValue(AxisOperation axisOperation, String value) {

+        if (value == null) {

+            if (log.isDebugEnabled()) {

+                log.debug("setAnonymousParameterValue: value passed in is null. return");

+            }

+            return;

+        }

+

+        Parameter param = axisOperation.getParameter(AddressingConstants.WSAW_ANONYMOUS_PARAMETER_NAME);

+        // If an existing parameter exists

+        if (param != null) {

+            if (log.isDebugEnabled()) {

+                log.debug("setAnonymousParameterValue: Parameter already exists");

+            }

+            // and is not locked

+            if (!param.isLocked()) {

+                if (log.isDebugEnabled()) {

+                    log.debug("setAnonymousParameterValue: Parameter not locked. Setting value: " + value);

+                }

+                // set the value

+                param.setValue(value);

+            }

+        } else {

+            // otherwise, if no Parameter exists

+            if (log.isDebugEnabled()) {

+                log.debug("setAnonymousParameterValue: Parameter does not exist");

+            }

+            // Create new Parameter with correct name/value

+            param = new Parameter();

+            param.setName(AddressingConstants.WSAW_ANONYMOUS_PARAMETER_NAME);

+            param.setValue(value);

+            try {

+                if (log.isDebugEnabled()) {

+                    log.debug("setAnonymousParameterValue: Adding parameter with value: " + value);

+                }

+                // and add it to the AxisOperation object

+                axisOperation.addParameter(param);

+            } catch (AxisFault af) {

+                // This should not happen. AxisFault is only ever thrown when a locked Parameter

+                // of the same name already exists and this should be dealt with by the outer

+                // if statement.

+                if (log.isDebugEnabled()) {

+                    log.debug("setAnonymousParameterValue: addParameter failed: " + af.getMessage());

+                }

+            }

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/EndpointReference.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/EndpointReference.java
new file mode 100644
index 0000000..d339c06
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/EndpointReference.java
@@ -0,0 +1,367 @@
+/*
+* Copyright 2004,2005 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.axis2.addressing;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMNode;
+import org.apache.axis2.AxisFault;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Class EndpointReference
+ * This class models the WS-A EndpointReferenceType. But this can be used without any WS-A handlers as well
+ * Since the models for this in Submission and Final versions are different, lets make this to comply with
+ * WS-A Final version. So any information found with WS-A submission will be "pumped" in to this model.
+ */
+public class EndpointReference implements Serializable {
+
+    private static final long serialVersionUID = 5278892171162372439L;
+
+    private static final Log log = LogFactory.getLog(EndpointReference.class);
+    
+    /**
+     * <EndpointReference>
+     *    <Address>xs:anyURI</Address>
+     *    <ReferenceParameters>xs:any*</ReferenceParameters>
+     *    <MetaData>xs:any*</MetaData>
+     * <!-- In addition to this, EPR can contain any number of OMElements -->
+     * </EndpointReference>
+     */
+
+    private String name;
+    private String address;
+    private ArrayList metaData;
+    private Map referenceParameters;
+    private ArrayList extensibleElements;
+    private ArrayList attributes;
+
+
+    /**
+     * @param address
+     */
+    public EndpointReference(String address) {
+        this.address = address;
+    }
+
+    /**
+     * @param omElement
+     */
+    public void addReferenceParameter(OMElement omElement) {
+        if (omElement == null) {
+            return;
+        }
+        if (referenceParameters == null) {
+            referenceParameters = new HashMap();
+        }
+        referenceParameters.put(omElement.getQName(), omElement);
+    }
+
+    /**
+     * @param qname
+     * @param value - the text of the OMElement. Remember that this is a convenient method for the user,
+     *              which has limited capability. If you want more power use @See EndpointReference#addReferenceParameter(OMElement)
+     */
+    public void addReferenceParameter(QName qname, String value) {
+        if (qname == null) {
+            return;
+        }
+        OMElement omElement = OMAbstractFactory.getOMFactory().createOMElement(qname, null);
+        omElement.setText(value);
+        addReferenceParameter(omElement);
+    }
+
+    /**
+     * This will return a Map of reference parameters with QName as the key and an OMElement
+     * as the value
+     *
+     * @return - map of the reference parameters, where the key is the QName of the reference parameter
+     *         and the value is an OMElement
+     */
+    public Map getAllReferenceParameters() {
+        return referenceParameters;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    /**
+     * @param address - xs:anyURI
+     */
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    /**
+     * hasAnonymousAddress
+     * 
+     * @return true if address is 'Anonymous URI' from either supported addressing version
+     */
+    public boolean hasAnonymousAddress(){
+        boolean result  = (AddressingConstants.Final.WSA_ANONYMOUS_URL.equals(address) ||
+                           AddressingConstants.Submission.WSA_ANONYMOUS_URL.equals(address));
+        if(log.isTraceEnabled()){
+            log.trace("hasAnonymousAddress: "+address+" is Anonymous: "+result);
+        }
+        return result;
+    }
+    
+    /**
+     * hasNoneAddress
+     * 
+     * @return true if the address is the 'None URI' from the final addressing spec.
+     */
+    public boolean hasNoneAddress() {
+        boolean result = AddressingConstants.Final.WSA_NONE_URI.equals(address);
+        if(log.isTraceEnabled()){
+            log.trace("hasNoneAddress: "+address+" is None: "+result);
+        }
+        return result;
+    }
+    
+    /**
+     * @param localName
+     * @param ns
+     * @param value
+     */
+    public void addAttribute(String localName, OMNamespace ns, String value) {
+        if (attributes == null) {
+            attributes = new ArrayList();
+        }
+        attributes.add(OMAbstractFactory.getOMFactory().createOMAttribute(localName, ns, value));
+    }
+
+    public ArrayList getAttributes() {
+        return attributes;
+    }
+
+
+    /**
+     * @param omAttribute
+     */
+    public void addAttribute(OMAttribute omAttribute) {
+        if (attributes == null) {
+            attributes = new ArrayList();
+        }
+        attributes.add(omAttribute);
+    }
+
+    public ArrayList getExtensibleElements() {
+        return extensibleElements;
+    }
+
+    /**
+     * {any}
+     *
+     * @param extensibleElements
+     */
+    public void setExtensibleElements(ArrayList extensibleElements) {
+        this.extensibleElements = extensibleElements;
+    }
+
+    public void addExtensibleElement(OMElement extensibleElement) {
+        if (extensibleElement != null) {
+            if (this.extensibleElements == null) {
+                this.extensibleElements = new ArrayList();
+            }
+            this.extensibleElements.add(extensibleElement);
+        }
+    }
+
+    public ArrayList getMetaData() {
+        return metaData;
+    }
+
+    public void addMetaData(OMNode metaData) {
+        if (metaData != null) {
+            if (this.metaData == null) {
+                this.metaData = new ArrayList();
+            }
+            this.metaData.add(metaData);
+        }
+
+    }
+
+    /**
+     * @deprecated
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * 
+     * @param name
+     * @deprecated
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Set a Map with QName as the key and an OMElement
+     * as the value
+     *
+     * @param referenceParameters
+     */
+    public void setReferenceParameters(Map referenceParameters) {
+        this.referenceParameters = referenceParameters;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString() {
+        StringBuffer buffer = new StringBuffer("Address: " + address);
+        
+        if (metaData != null)
+            buffer.append(", Metadata: ").append(metaData);
+
+        if (referenceParameters != null)
+            buffer.append(", Reference Parameters: ").append(referenceParameters);
+        
+        if (extensibleElements != null)
+            buffer.append(", Extensibility elements: ").append(extensibleElements);
+        
+        if (attributes != null)
+            buffer.append(", Attributes: ").append(attributes);
+        
+        return buffer.toString();
+    }
+
+    /**
+     * 
+     * @param eprOMElement
+     * @deprecated use {@link org.apache.axis2.addressing.EndpointReferenceHelper#fromOM(OMElement)} instead.
+     */
+    public void fromOM(OMElement eprOMElement) {
+        setAddress(eprOMElement.getFirstChildWithName(new QName("Address")).getText());
+        OMElement refParamElement = eprOMElement.getFirstChildWithName(new QName(AddressingConstants.EPR_REFERENCE_PARAMETERS));
+
+        if (refParamElement != null) {
+            Iterator refParams = refParamElement.getChildElements();
+            while (refParams.hasNext()) {
+                OMElement omElement = (OMElement) refParams.next();
+                addReferenceParameter(omElement);
+            }
+        }
+
+
+        OMElement metaDataElement = eprOMElement.getFirstChildWithName(new QName(AddressingConstants.Final.WSA_METADATA));
+        if (metaDataElement != null) {
+            Iterator children = metaDataElement.getChildren();
+            while (children.hasNext()) {
+                OMNode omNode = (OMNode) children.next();
+                addMetaData(omNode);
+            }
+        }
+
+        setName(eprOMElement.getLocalName());
+
+        Iterator allAttributes = eprOMElement.getAllAttributes();
+        if (attributes == null) {
+            attributes = new ArrayList();
+        }
+
+        while (allAttributes.hasNext()) {
+            OMAttribute attribute = (OMAttribute) allAttributes.next();
+            attributes.add(attribute);
+        }
+        
+        Iterator childElements = eprOMElement.getChildElements();
+        while (childElements.hasNext()) {
+            OMElement eprChildElement = (OMElement) childElements.next();
+            String localName = eprChildElement.getLocalName();
+            if(!localName.equals("Address") &&
+               !localName.equals(AddressingConstants.EPR_REFERENCE_PARAMETERS) &&
+               !localName.equals(AddressingConstants.Final.WSA_METADATA)){
+                addExtensibleElement(eprChildElement);
+            }
+        }
+    }
+
+    /**
+     * 
+     * @param nsurl
+     * @param localName
+     * @param prefix
+     * @throws AxisFault
+     * @deprecated  use {@link org.apache.axis2.addressing.EndpointReferenceHelper#toOM(EndpointReference, QName, String)} instead.
+     */
+    public OMElement toOM(String nsurl, String localName, String prefix) throws AxisFault {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        if (prefix != null) {
+            OMNamespace wrapNs = fac.createOMNamespace(nsurl, prefix);
+            OMElement epr = fac.createOMElement(localName, wrapNs);
+            OMNamespace wsaNS = fac.createOMNamespace(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_DEFAULT_PREFIX);
+            OMElement addressE = fac.createOMElement(AddressingConstants.EPR_ADDRESS, wsaNS, epr);
+            addressE.setText(address);
+            
+            if (this.metaData != null) {
+                OMElement metadataE = fac.createOMElement(AddressingConstants.Final.WSA_METADATA, wsaNS, epr);
+                Iterator metadata = this.metaData.iterator();
+                while (metadata.hasNext()) {
+                    metadataE.addChild((OMNode) metadata.next());
+                }
+            }
+
+            if (this.referenceParameters != null) {
+                OMElement refParameterElement = fac.createOMElement(AddressingConstants.EPR_REFERENCE_PARAMETERS, wsaNS, epr);
+                Iterator refParms = referenceParameters.values().iterator();
+                while (refParms.hasNext()) {
+                    refParameterElement.addChild((OMNode) refParms.next());
+                }
+            }
+            
+            if (attributes != null) {
+                Iterator attrIter = attributes.iterator();
+                while (attrIter.hasNext()) {
+                    OMAttribute omAttributes = (OMAttribute) attrIter.next();
+                    epr.addAttribute(omAttributes);
+                }
+            }
+            
+            // add xs:any
+            ArrayList omElements = extensibleElements;
+            if (omElements != null) {
+                for (int i = 0; i < omElements.size(); i++) {
+                    epr.addChild((OMElement) omElements.get(i));
+                }
+            }
+            
+            return epr;
+        } else {
+            throw new AxisFault("prefix must be specified");
+        }
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/RelatesTo.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/RelatesTo.java
new file mode 100644
index 0000000..d218654
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/RelatesTo.java
@@ -0,0 +1,102 @@
+/*
+* Copyright 2004,2005 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.axis2.addressing;
+
+import java.io.Serializable;
+
+/**
+ * Class RelatesTo
+ */
+public class RelatesTo implements Serializable {
+
+	private static final long serialVersionUID = 978799688901329012L;
+
+	/**
+     * Field relationshipType
+     */
+    private String relationshipType;
+
+    /**
+     * Field value
+     */
+    private String value;
+
+    /**
+     * Constructor RelatesTo
+     *
+     * @param value
+     */
+    public RelatesTo(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Constructor RelatesTo
+     *
+     * @param value
+     * @param relationshipType
+     */
+    public RelatesTo(String value, String relationshipType) {
+        this.value = value;
+        this.relationshipType = relationshipType;
+    }
+
+    /**
+     * Method getRelationshipType. If the relationship type has not been set it returns
+     * the default value {@link AddressingConstants.Final.WSA_DEFAULT_RELATIONSHIP_TYPE}
+     */
+    public String getRelationshipType() {
+        return (relationshipType != null && !"".equals(relationshipType)?
+                    relationshipType :
+                    AddressingConstants.Final.WSA_DEFAULT_RELATIONSHIP_TYPE);
+    }
+
+    /**
+     * Method getValue
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Method setRelationshipType
+     *
+     * @param relationshipType
+     */
+    public void setRelationshipType(String relationshipType) {
+        this.relationshipType = relationshipType;
+    }
+
+    /**
+     * Method setValue
+     *
+     * @param value
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString() {
+        return "Identifier: " + value
+             + ", Relationship type: " + relationshipType;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/ServiceName.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/ServiceName.java
new file mode 100644
index 0000000..7762426
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/ServiceName.java
@@ -0,0 +1,84 @@
+/*
+* Copyright 2004,2005 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.axis2.addressing;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Class ServiceName
+ */
+public class ServiceName {
+
+    /**
+     * Field name
+     */
+    private QName name;
+
+    /**
+     * Field portName
+     */
+    private String portName;
+
+    /**
+     * @param name
+     */
+    public ServiceName(QName name) {
+        this.name = name;
+    }
+
+    /**
+     * @param name
+     * @param portName
+     */
+    public ServiceName(QName name, String portName) {
+        this.name = name;
+        this.portName = portName;
+    }
+
+    /**
+     * Method getName
+     */
+    public QName getName() {
+        return name;
+    }
+
+    /**
+     * Method getPortName
+     */
+    public String getPortName() {
+        return portName;
+    }
+
+    /**
+     * Method setName
+     *
+     * @param name
+     */
+    public void setName(QName name) {
+        this.name = name;
+    }
+
+    /**
+     * Method setPortName
+     *
+     * @param portName
+     */
+    public void setPortName(String portName) {
+        this.portName = portName;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11ActionHelper.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11ActionHelper.java
new file mode 100644
index 0000000..e1c7c40
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11ActionHelper.java
@@ -0,0 +1,131 @@
+/*

+ * Copyright 2006 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.axis2.addressing.wsdl;

+

+import java.util.List;

+

+import javax.wsdl.Definition;

+import javax.wsdl.Fault;

+import javax.wsdl.Input;

+import javax.wsdl.Operation;

+import javax.wsdl.Output;

+import javax.wsdl.PortType;

+import javax.wsdl.extensions.AttributeExtensible;

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * The WSDL11ActionHelper provides 3 static methods to determine the correct wsa:Action value from

+ * a wsdl4j Input/Output/Fault object. It first attempts to access the wsaw:Action attribute and if

+ * that is not found uses the WSDL11DefaultActionPatternHelper to generate and Action based on the

+ * Default Action Pattern for WSDL1.1 at http://www.w3.org/TR/2006/WD-ws-addr-wsdl-20060216/#defactionwsdl11

+ */

+public class WSDL11ActionHelper {

+	

+	private static final Log log = LogFactory.getLog(WSDL11ActionHelper.class);

+	

+	/**

+	 * getActionFromInputElement

+	 * @param def the wsdl:definitions which contains the wsdl:portType

+	 * @param wsdl4jPortType the wsdl:portType which contains the wsdl:operation

+	 * @param op the wsdl:operation which contains the input element

+	 * @param input the input element to be examined to generate the wsa:Action

+	 * @return either the wsaw:Action from the input element or an action generated using the DefaultActionPattern

+	 */

+    public static String getActionFromInputElement(Definition def, PortType wsdl4jPortType, Operation op, Input input){

+        String result = getWSAWActionExtensionAttribute(input);

+        if(result == null){

+            result = WSDL11DefaultActionPatternHelper.generateActionFromInputElement(def, wsdl4jPortType, op, input);

+        }

+        log.trace(result);

+    	return result;

+    }

+    

+    /**

+	 * getActionFromOutputElement

+	 * @param def the wsdl:definitions which contains the wsdl:portType

+	 * @param wsdl4jPortType the wsdl:portType which contains the wsdl:operation

+	 * @param op the wsdl:operation which contains the output element

+	 * @param output the input element to be examined to generate the wsa:Action

+	 * @return either the wsaw:Action from the output element or an action generated using the DefaultActionPattern

+	 */

+    public static String getActionFromOutputElement(Definition def, PortType wsdl4jPortType, Operation op, Output output){

+    	String result = getWSAWActionExtensionAttribute(output);

+    	if(result == null){

+    		result = WSDL11DefaultActionPatternHelper.generateActionFromOutputElement(def, wsdl4jPortType, op, output);

+        }

+    	log.trace(result);

+    	return result;

+    }

+    

+    /**

+	 * getActionFromFaultElement

+	 * @param def the wsdl:definitions which contains the wsdl:portType

+	 * @param wsdl4jPortType the wsdl:portType which contains the wsdl:operation

+	 * @param op the wsdl:operation which contains the fault element

+	 * @param fault the fault element to be examined to generate the wsa:Action

+	 * @return either the wsaw:Action from the fault element or an action generated using the DefaultActionPattern

+	 */

+    public static String getActionFromFaultElement(Definition def, PortType wsdl4jPortType, Operation op, Fault fault){

+    	String result = getWSAWActionExtensionAttribute(fault);

+    	if(result == null){

+    		result = WSDL11DefaultActionPatternHelper.generateActionFromFaultElement(def, wsdl4jPortType, op, fault);

+        }

+    	log.trace(result);

+    	return result;

+    }

+

+    private static String getWSAWActionExtensionAttribute(AttributeExtensible ae){

+    	// Search first for a wsaw:Action using the submission namespace

+    	Object attribute = ae.getExtensionAttribute(new QName(AddressingConstants.Submission.WSA_NAMESPACE, AddressingConstants.WSA_ACTION));

+    	// Then if that did no exist one using the w3c namespace

+    	if(attribute ==null){

+    		attribute = ae.getExtensionAttribute(new QName(AddressingConstants.Final.WSAW_NAMESPACE, AddressingConstants.WSA_ACTION));

+        }

+    	

+    	// wsdl4j may return a String, QName or a List of either

+    	// If it is a list, extract the first element

+    	if(attribute instanceof List){

+    		List l = (List)attribute;

+    		if(l.size()>0){

+    			attribute = l.get(0);

+    		}else{

+    			attribute = null;

+    		}

+    	}

+    	

+    	// attribute must now be a QName or String or null

+    	// If it is a QName, take the LocalPart as a String

+    	if(attribute instanceof QName){

+    		QName qn = (QName)attribute;

+    		attribute = qn.getLocalPart();

+    	}

+    	

+    	if(!(attribute instanceof String)){

+    		if(log.isTraceEnabled()){

+    			log.trace("No wsaw:Action attribute found");

+    		}

+    		return null;

+    	}else{

+    		String result = (String)attribute;

+    		log.trace(result);

+    		return result;

+    	}

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11DefaultActionPatternHelper.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11DefaultActionPatternHelper.java
new file mode 100644
index 0000000..0ef9324
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11DefaultActionPatternHelper.java
@@ -0,0 +1,258 @@
+/*

+ * Copyright 2006 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.axis2.addressing.wsdl;

+

+import javax.wsdl.Definition;

+import javax.wsdl.Fault;

+import javax.wsdl.Input;

+import javax.wsdl.Operation;

+import javax.wsdl.OperationType;

+import javax.wsdl.Output;

+import javax.wsdl.PortType;

+

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * Generates a wsa:Action value using the Default Action Pattern defined at

+ * http://www.w3.org/TR/2006/WD-ws-addr-wsdl-20060216/#defactionwsdl11

+ */

+public class WSDL11DefaultActionPatternHelper {

+	

+	private static final Log log = LogFactory.getLog(WSDL11DefaultActionPatternHelper.class);

+	

+	// String constants used extensively in this class

+	private static final String URN = "urn";

+	private static final String SLASH = "/";

+	private static final String COLON = ":";

+	private static final String REQUEST = "Request";

+	private static final String RESPONSE = "Response";

+	private static final String SOLICIT = "Solicit";

+	private static final String FAULT = "Fault";

+	

+	/**

+	 * Generate the Action for an Input using the Default Action Pattern

+	 * 

+	 * Pattern is defined as [target namespace][delimiter][port type name][delimiter][input name]

+	 * 

+	 * @param def is required to obtain the targetNamespace

+	 * @param wsdl4jPortType is required to obtain the portType name

+	 * @param op is required to generate the input name if not explicitly specified

+	 * @param input is required for its name if specified

+	 * @return a wsa:Action value based on the Default Action Pattern and the provided objects

+	 */

+	public static String generateActionFromInputElement(Definition def, PortType wsdl4jPortType, Operation op, Input input){

+		// Get the targetNamespace of the wsdl:definitions

+		String targetNamespace = def.getTargetNamespace();

+		

+		// Determine the delimiter. Per the spec: 'is ":" when the [target namespace] is a URN, otherwise "/". 

+		// Note that for IRI schemes other than URNs which aren't path-based (i.e. those that outlaw the "/" 

+		// character), the default action value may not conform to the rules of the IRI scheme. Authors

+		// are advised to specify explicit values in the WSDL in this case.'

+    	String delimiter = SLASH;

+    	if(targetNamespace.toLowerCase().startsWith(URN)){

+    		delimiter = COLON;

+    	}

+    	

+    	// Get the portType name (as a string to be included in the action)

+    	String portTypeName = wsdl4jPortType.getQName().getLocalPart();

+    	// Get the name of the input element (and generate one if none explicitly specified)

+    	String inputName = getNameFromInputElement(op, input);

+    	

+    	// Append the bits together

+    	StringBuffer sb = new StringBuffer();

+    	sb.append(targetNamespace);

+    	// Deal with the problem that the targetNamespace may or may not have a trailing delimiter

+    	if(!targetNamespace.endsWith(delimiter)){

+    		sb.append(delimiter);

+    	}

+    	sb.append(portTypeName);

+    	sb.append(delimiter);

+    	sb.append(inputName);

+    	

+    	// Resolve the action from the StringBuffer

+    	String result = sb.toString();

+    	

+    	if(log.isTraceEnabled()){

+    		log.trace("generateActionFromInputElement result: "+result);

+    	}

+    	

+    	return result;

+    }

+    

+	/**

+	 * Get the name of the specified Input element using the rules defined in WSDL 1.1

+	 * Section 2.4.5 http://www.w3.org/TR/wsdl#_names

+	 */

+    private static String getNameFromInputElement(Operation op, Input input) {

+    	// Get the name from the input element if specified.

+		String result = input.getName();

+		

+		// If not we'll have to generate it.

+		if (result == null) {

+			// If Request-Response or Solicit-Response do something special per

+			// WSDL 1.1 Section 2.4.5

+			OperationType operationType = op.getStyle();

+			if (null != operationType) {

+				if (operationType.equals(OperationType.REQUEST_RESPONSE)){

+					result = op.getName() + REQUEST;

+				}else if (operationType.equals(OperationType.SOLICIT_RESPONSE)){

+					result = op.getName() + RESPONSE;

+				}

+			}

+			// If the OperationType was not available for some reason, assume on-way or notification

+			if(result == null){

+				result = op.getName();

+			}

+		}

+		return result;

+	}

+    

+	/**

+	 * Generate the Action for an Output using the Default Action Pattern

+	 * 

+	 * Pattern is defined as [target namespace][delimiter][port type name][delimiter][output name]

+	 * 

+	 * @param def is required to obtain the targetNamespace

+	 * @param wsdl4jPortType is required to obtain the portType name

+	 * @param op is required to generate the output name if not explicitly specified

+	 * @param output is required for its name if specified

+	 * @return a wsa:Action value based on the Default Action Pattern and the provided objects

+	 */

+    public static String generateActionFromOutputElement(Definition def, PortType wsdl4jPortType, Operation op, Output output){

+    	// Get the targetNamespace of the wsdl:definition

+		String targetNamespace = def.getTargetNamespace();

+		

+		// Determine the delimiter. Per the spec: 'is ":" when the [target namespace] is a URN, otherwise "/". 

+		// Note that for IRI schemes other than URNs which aren't path-based (i.e. those that outlaw the "/" 

+		// character), the default action value may not conform to the rules of the IRI scheme. Authors

+		// are advised to specify explicit values in the WSDL in this case.'

+    	String delimiter = SLASH;

+    	if(targetNamespace.toLowerCase().startsWith(URN)){

+    		delimiter = COLON;

+    	}

+    	

+    	// Get the portType name (as a string to be included in the action)

+    	String portTypeName = wsdl4jPortType.getQName().getLocalPart();

+    	// Get the name of the output element (and generate one if none explicitly specified)

+    	String outputName = getNameFromOutputElement(op, output);

+    	

+    	// Append the bits together

+    	StringBuffer sb = new StringBuffer();

+    	sb.append(targetNamespace);

+    	// Deal with the problem that the targetNamespace may or may not have a trailing delimiter

+    	if(!targetNamespace.endsWith(delimiter)){

+    		sb.append(delimiter);

+    	}

+    	sb.append(portTypeName);

+    	sb.append(delimiter);

+    	sb.append(outputName);

+    	

+    	// Resolve the action from the StringBuffer

+    	String result = sb.toString();

+    	

+    	if(log.isTraceEnabled()){

+    		log.trace("generateActionFromOutputElement result: "+result);

+    	}

+    	

+    	return result;

+    }

+    

+	/**

+	 * Get the name of the specified Output element using the rules defined in WSDL 1.1

+	 * Section 2.4.5 http://www.w3.org/TR/wsdl#_names

+	 */

+    private static String getNameFromOutputElement(Operation op, Output output) {

+    	// Get the name from the output element if specified.

+		String result = output.getName();

+		

+		// If not we'll have to generate it.

+		if (result == null) {

+			// If Request-Response or Solicit-Response do something special per

+			// WSDL 1.1 Section 2.4.5

+			OperationType operationType = op.getStyle();

+			if (null != operationType) {

+				if (operationType.equals(OperationType.REQUEST_RESPONSE)){

+					return op.getName() + RESPONSE;

+				}else if (operationType.equals(OperationType.SOLICIT_RESPONSE)){

+					return op.getName() + SOLICIT;

+				}

+			}

+			// If the OperationType was not available for some reason, assume on-way or notification

+			if(result == null){

+				result = op.getName();

+			}

+		}

+		return result;

+	}

+    

+    /**

+	 * Generate the Action for a Fault using the Default Action Pattern

+	 * 

+	 * Pattern is defined as [target namespace][delimiter][port type name][delimiter][operation name][delimiter]Fault[delimiter][fault name]

+	 * 

+	 * @param def is required to obtain the targetNamespace

+	 * @param wsdl4jPortType is required to obtain the portType name

+	 * @param op is required to obtain the operation name

+	 * @param fault is required to obtain the fault name

+	 * @return a wsa:Action value based on the Default Action Pattern and the provided objects

+	 */

+    public static String generateActionFromFaultElement(Definition def, PortType wsdl4jPortType, Operation op, Fault fault){

+        // Get the targetNamespace of the wsdl:definition

+        String targetNamespace = def.getTargetNamespace();

+

+        // Determine the delimiter. Per the spec: 'is ":" when the [target namespace] is a URN, otherwise "/". 

+        // Note that for IRI schemes other than URNs which aren't path-based (i.e. those that outlaw the "/" 

+        // character), the default action value may not conform to the rules of the IRI scheme. Authors

+        // are advised to specify explicit values in the WSDL in this case.'

+        String delimiter = SLASH;

+        if(targetNamespace.toLowerCase().startsWith(URN)){

+            delimiter = COLON;

+        }

+    	

+        // Get the portType name (as a string to be included in the action)

+        String portTypeName = wsdl4jPortType.getQName().getLocalPart();

+        // Get the operation name (as a string to be included in the action)

+        String operationName = op.getName();

+        

+        // Get the name of the fault element (name is mandatory on fault elements)

+        String faultName = fault.getName();

+    	

+        // Append the bits together

+        StringBuffer sb = new StringBuffer();

+        sb.append(targetNamespace);

+        // Deal with the problem that the targetNamespace may or may not have a trailing delimiter

+        if(!targetNamespace.endsWith(delimiter)){

+            sb.append(delimiter);

+        }

+        sb.append(portTypeName);

+        sb.append(delimiter);

+        sb.append(operationName);

+        sb.append(delimiter);

+        sb.append(FAULT);

+        sb.append(delimiter);

+        sb.append(faultName);

+    	

+        // Resolve the action from the StringBuffer

+        String result = sb.toString();

+    	

+        if(log.isTraceEnabled()){

+            log.trace("generateActionFromFaultElement result: "+result);

+        }

+    	

+        return result;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/client/OperationClient.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/OperationClient.java
new file mode 100644
index 0000000..6641d55
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/OperationClient.java
@@ -0,0 +1,130 @@
+/*
+* Copyright 2004,2005 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.axis2.client;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+
+/**
+ * An operation client is the way an advanced user interacts with Axis2. Actual
+ * operation clients understand a specific MEP and hence their behavior is
+ * defined by their MEP. To interact with an operation client, you first get one
+ * from a specific AxisOperation. Then you set the messages into it one by one
+ * (whatever is available). Then, when you call execute() the client will
+ * execute what it can at that point. If executing the operation client results
+ * in a new message being created, then if a message receiver is registered with
+ * the client then the message will be delivered to that client.
+ */
+public interface OperationClient {
+    /**
+     * Sets the options that should be used for this particular client. This
+     * resets the entire set of options to use the new options - so you'd lose
+     * any option cascading that may have been set up.
+     *
+     * @param options the options
+     */
+    public void setOptions(Options options);
+
+    /**
+     * Return the options used by this client. If you want to set a single
+     * option, then the right way is to do getOptions() and set specific
+     * options.
+     *
+     * @return the options, which will never be null.
+     */
+    public Options getOptions();
+
+    /**
+     * Add a message context to the client for processing. This method must not
+     * process the message - it only records it in the operation client.
+     * Processing only occurs when execute() is called.
+     *
+     * @param messageContext the message context
+     * @throws AxisFault if this is called inappropriately.
+     */
+    public void addMessageContext(MessageContext messageContext) throws AxisFault;
+
+    /**
+     * Return a message from the client - will return null if the requested
+     * message is not available.
+     *
+     * @param messageLabel the message label of the desired message context
+     * @return the desired message context or null if its not available.
+     * @throws AxisFault if the message label is invalid
+     */
+    public MessageContext getMessageContext(String messageLabel)
+            throws AxisFault;
+
+    /**
+     * Set the callback to be executed when a message comes into the MEP and the
+     * operation client is executed. This is the way the operation client
+     * provides notification that a message has been received by it. Exactly
+     * when its executed and under what conditions is a function of the specific
+     * operation client.
+     *
+     * @param callback the callback to be used when the client decides its time to
+     *                 use it
+     */
+    public void setCallback(Callback callback);
+
+    /**
+     * Execute the MEP. What this does depends on the specific operation client.
+     * The basic idea is to have the operation client execute and do something
+     * with the messages that have been added to it so far. For example, if its
+     * an Out-In MEP, then if the Out message has been set, then executing the
+     * client asks it to send the message and get the In message, possibly using
+     * a different thread.
+     *
+     * @param block Indicates whether execution should block or return ASAP. What
+     *              block means is of course a function of the specific operation
+     *              client.
+     * @throws AxisFault if something goes wrong during the execution of the operation
+     *                   client.
+     */
+    public void execute(boolean block) throws AxisFault;
+
+    /**
+     * Reset the operation client to a clean status after the MEP has completed.
+     * This is how you can reuse an operation client. NOTE: this does not reset
+     * the options; only the internal state so the client can be used again.
+     *
+     * @throws AxisFault if reset is called before the MEP client has completed an
+     *                   interaction.
+     */
+    public void reset() throws AxisFault;
+
+    /**
+     * To close the transport if necessary , can call this method. The main 
+     * usage of this method is when client uses two tarnsports for sending and 
+     * receiving , and we need to remove entries for waiting calls in the 
+     * transport listener queue.
+     * Note : DO NOT call this method if you are not using two transports to 
+     * send and receive
+     *
+     * @param msgCtxt : MessageContext# which has all the transport information
+     * @throws AxisFault : throws AxisFault if something goes wrong
+     */
+    public void complete(MessageContext msgCtxt) throws AxisFault;
+
+    /**
+     * To get the operation context of the operation client
+     * @return OperationContext
+     */
+    public OperationContext getOperationContext();
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/client/Options.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/Options.java
new file mode 100644
index 0000000..dc3ea8c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/Options.java
@@ -0,0 +1,895 @@
+package org.apache.axis2.client;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAP11Constants;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.addressing.RelatesTo;

+import org.apache.axis2.description.TransportInDescription;

+import org.apache.axis2.description.TransportOutDescription;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.transport.TransportListener;

+

+import javax.xml.namespace.QName;

+import java.util.*;

+

+/*

+ * 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.

+ */

+

+/**

+ * Holder for operation client options. This is used by the other classes in

+ * this package to configure various aspects of how a client communicates with a

+ * service. It exposes a number of predefined properties as part of the API

+ * (with specific getXXX and setXXX methods), and also allows for arbitrary

+ * named properties to be passed using a properties map with the property name

+ * as the key value. Instances of this class can be chained together for

+ * property inheritance, so that if a property is not set in one instance it

+ * will check its parent for a setting.

+ */

+public class Options {

+

+    /**

+     * Default blocking timeout value.

+     */

+    public static final int DEFAULT_TIMEOUT_MILLISECONDS = 30 * 1000;

+

+    private Options parent;

+

+    private Map properties = new HashMap();

+

+    // ==========================================================================

+    //                  Parameters that can be set via Options

+    // ==========================================================================

+    private String soapVersionURI; // defaults to

+    // SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;

+

+    private Boolean isExceptionToBeThrownOnSOAPFault; // defaults to true;

+

+    private long timeOutInMilliSeconds = -1; // =

+    // DEFAULT_TIMEOUT_MILLISECONDS;

+

+    private Boolean useSeparateListener; // defaults to false

+

+    // Addressing specific properties

+    private String action;

+

+    private EndpointReference faultTo;

+

+    private EndpointReference from;

+

+    private TransportListener listener;

+

+    private TransportInDescription transportIn;

+

+    private String transportInProtocol;

+

+    private String messageId;

+

+    // Array of RelatesTo objects

+    private List relationships;

+

+    private EndpointReference replyTo;

+

+    private ArrayList referenceParameters;

+

+    /**

+     * This is used for sending and receiving messages.

+     */

+    protected TransportOutDescription transportOut;

+

+    private EndpointReference to;

+

+    //To control , session management , default is set to true , if user wants he can set that to true

+    // There operation client will manage session using ServiceGroupID if it is there in the response

+    private boolean manageSession = false;

+

+    /**

+     * Default constructor

+     */

+    public Options() {

+    }

+

+    /**

+     * In normal mode operation, this options will try to fulfil the request

+     * from its values. If that is not possible, this options will request those

+     * information from its parent.

+     *

+     * @param parent

+     */

+    public Options(Options parent) {

+        this.parent = parent;

+    }

+

+    /**

+     * Get WS-Addressing Action / SOAP Action string.

+     *

+     * @return action

+     */

+    public String getAction() {

+        if (action == null && parent != null) {

+            return parent.getAction();

+        }

+        return action;

+    }

+

+    /**

+     * Get WS-Addressing FaultTo endpoint reference.

+     *

+     * @return endpoint

+     */

+    public EndpointReference getFaultTo() {

+        if (faultTo == null && parent != null) {

+            return parent.getFaultTo();

+        }

+        return faultTo;

+    }

+

+    /**

+     * Set WS-Addressing From endpoint reference.

+     *

+     * @return endpoint

+     */

+    public EndpointReference getFrom() {

+        if (from == null && parent != null) {

+            return parent.getFrom();

+        }

+        return from;

+    }

+

+    /**

+     * Get listener used for incoming message.

+     *

+     * @return listener

+     */

+    public TransportListener getListener() {

+        if (listener == null && parent != null) {

+            return parent.getListener();

+        }

+        return listener;

+    }

+

+    /**

+     * Get transport used for incoming message.

+     *

+     * @return transport information

+     */

+    public TransportInDescription getTransportIn() {

+        if (transportIn == null && parent != null) {

+            return parent.getTransportIn();

+        }

+        return transportIn;

+    }

+

+    /**

+     * Get transport protocol used for incoming message.

+     *

+     * @return name protocol name ("http", "tcp", etc.)

+     */

+    public String getTransportInProtocol() {

+        if (transportInProtocol == null && parent != null) {

+            return parent.getTransportInProtocol();

+        }

+        return transportInProtocol;

+    }

+

+    /**

+     * Get WS-Addressing MessageId.

+     *

+     * @return uri string

+     */

+    public String getMessageId() {

+        if (messageId == null && parent != null) {

+            return parent.getMessageId();

+        }

+

+        return messageId;

+    }

+

+    /**

+     * Get a copy of the general option properties. Because of the way options

+     * are stored this does not include properties with specific get/set

+     * methods, only the general properties identified by a text string. The

+     * returned map merges properties inherited from parent options, if any, to

+     * give a complete set of property definitions as seen by users of this

+     * options instance. The returned copy is not "live", so changes you make to

+     * the copy are not reflected in the actual option settings. However, you

+     * can make the modified values take effect with a call to {@link

+     * #setProperties(Map)},

+     *

+     * @return copy of general properties

+     */

+    public Map getProperties() {

+        if (parent == null) {

+            return new HashMap(properties);

+        } else {

+            Map props = parent.getProperties();

+            props.putAll(properties);

+            return props;

+        }

+    }

+

+    /**

+     * Get named property value.

+     *

+     * @param key

+     * @return the value related to this key. <code>null</code>, if not found.

+     */

+    public Object getProperty(String key) {

+        Object myPropValue = properties.get(key);

+        if (myPropValue == null && parent != null) {

+            return parent.getProperty(key);

+        }

+        return myPropValue;

+    }

+

+    /**

+     * Get WS-Addressing RelatesTo item with a specified type. If there are

+     * multiple RelatesTo items defined with the same type, the one returned

+     * by this method is arbitrary - if you need to handle this case, you can

+     * instead use the {@link #getRelationships()} to retrieve all the items

+     * and check for multiple matches.

+     *

+     * @param type relationship type (URI)

+     * @return item of specified type

+     */

+    public RelatesTo getRelatesTo(String type) {

+        if (relationships == null && parent != null) {

+            return parent.getRelatesTo(type);

+        }

+        for (int i = 0; relationships != null && i < relationships.size(); i++) {

+            RelatesTo relatesTo = (RelatesTo) relationships.get(i);

+            String relationshipType = relatesTo.getRelationshipType();

+            if (relationshipType.equals(type)) {

+                return relatesTo;

+            }

+        }

+        return null;

+    }

+

+    /**

+     * Return a single instance of WS-Addressing RelatesTo that has a relationship

+     * type of either "http://www.w3.org/2005/08/addressing/reply" or "wsa:Reply".

+     * If no such instance of RelatesTo can be found then return <code>null</code>.

+     *

+     * @return an instance of {@link RelatesTo}

+     */

+    public RelatesTo getRelatesTo() {

+        if (relationships == null && parent != null) {

+            return parent.getRelatesTo();

+        }

+        for (int i = 0; relationships != null && i < relationships.size(); i++) {

+            RelatesTo relatesTo = (RelatesTo) relationships.get(i);

+            String relationshipType = relatesTo.getRelationshipType();

+            if (relationshipType.equals(AddressingConstants.Final.WSA_DEFAULT_RELATIONSHIP_TYPE)

+                    || relationshipType.equals(AddressingConstants.Submission.WSA_DEFAULT_RELATIONSHIP_TYPE))

+            {

+                return relatesTo;

+            }

+        }

+        return null;

+    }

+

+    /**

+     * Get all WS-Addressing RelatesTo items.

+     *

+     * @return array of items

+     */

+    public RelatesTo[] getRelationships() {

+        if (relationships == null && parent != null) {

+            return parent.getRelationships();

+        }

+        if (relationships == null) {

+            return null;

+        }

+        return (RelatesTo[]) relationships.toArray(new RelatesTo[relationships.size()]);

+    }

+

+    /**

+     * Set WS-Addressing RelatesTo items.

+     *

+     * @param list

+     */

+    public void setRelationships(RelatesTo[] list) {

+        relationships = list == null ? null : Arrays.asList(list);

+    }

+

+    /**

+     * Get WS-Addressing ReplyTo endpoint reference.

+     *

+     * @return endpoint

+     */

+    public EndpointReference getReplyTo() {

+        if (replyTo == null && parent != null) {

+            return parent.getReplyTo();

+        }

+        return replyTo;

+    }

+

+    /**

+     * Get outbound transport description.

+     *

+     * @return description

+     */

+    public TransportOutDescription getTransportOut() {

+        if (transportOut == null && parent != null) {

+            return parent.getTransportOut();

+        }

+

+        return transportOut;

+    }

+

+    /**

+     * Get SOAP version being used.

+     *

+     * @return version

+     */

+    public String getSoapVersionURI() {

+        if (soapVersionURI == null && parent != null) {

+            return parent.getSoapVersionURI();

+        }

+

+        return soapVersionURI == null ? SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI

+                : soapVersionURI;

+    }

+

+    /**

+     * Gets the wait time after which a client times out in a blocking scenario.

+     * The default is Options#DEFAULT_TIMEOUT_MILLISECONDS

+     *

+     * @return timeOutInMilliSeconds

+     */

+    public long getTimeOutInMilliSeconds() {

+        if (timeOutInMilliSeconds == -1 && parent != null) {

+            return parent.getTimeOutInMilliSeconds();

+        }

+

+        return timeOutInMilliSeconds == -1 ? DEFAULT_TIMEOUT_MILLISECONDS

+                : timeOutInMilliSeconds;

+    }

+

+    /**

+     * Get WS-Addressing To endpoint reference.

+     *

+     * @return endpoint

+     */

+    public EndpointReference getTo() {

+        if (to == null && parent != null) {

+            return parent.getTo();

+        }

+

+        return to;

+    }

+

+    /**

+     * If there is a SOAP Fault in the body of the incoming SOAP Message, system

+     * can be configured to throw an exception with the details extracted from

+     * the information from the fault message. This boolean variable will enable

+     * that facility. If this is false, the response message will just be

+     * returned to the application, irrespective of whether it has a Fault or

+     * not.

+     *

+     * @return <code>true</code> if exception to be thrown

+     */

+    public boolean isExceptionToBeThrownOnSOAPFault() {

+        if (isExceptionToBeThrownOnSOAPFault == null && parent != null) {

+            isExceptionToBeThrownOnSOAPFault = parent.isExceptionToBeThrownOnSOAPFault;

+        }

+

+        return isExceptionToBeThrownOnSOAPFault == null

+                || isExceptionToBeThrownOnSOAPFault.booleanValue();

+    }

+

+    /**

+     * Check whether the two SOAP Messages are be sent over same channel or over

+     * separate channels. Only duplex transports such as http and tcp support a

+     * <code>false</code> value.

+     *

+     * @return separate channel flag

+     */

+    public boolean isUseSeparateListener() {

+        if (useSeparateListener == null && parent != null) {

+            useSeparateListener = parent.useSeparateListener;

+        }

+

+        return useSeparateListener != null

+                && useSeparateListener.booleanValue();

+    }

+

+    /**

+     * Get parent instance providing default property values.

+     *

+     * @return parent (<code>null</code> if none)

+     */

+    public Options getParent() {

+        return parent;

+    }

+

+    /**

+     * Set parent instance providing default property values.

+     *

+     * @param parent (<code>null</code> if none)

+     */

+    public void setParent(Options parent) {

+        this.parent = parent;

+    }

+

+    /**

+     * Set WS-Addressing Action / SOAP Action string.

+     *

+     * @param action

+     */

+    public void setAction(String action) {

+        this.action = action;

+    }

+

+    /**

+     * If there is a SOAP Fault in the body of the incoming SOAP Message, system

+     * can be configured to throw an exception with the details extracted from

+     * the information from the fault message. This boolean variable will enable

+     * that facility. If this is false, the response message will just be

+     * returned to the application, irrespective of whether it has a Fault or

+     * not.

+     *

+     * @param exceptionToBeThrownOnSOAPFault

+     */

+    public void setExceptionToBeThrownOnSOAPFault(

+            boolean exceptionToBeThrownOnSOAPFault) {

+        isExceptionToBeThrownOnSOAPFault = Boolean

+                .valueOf(exceptionToBeThrownOnSOAPFault);

+    }

+

+    /**

+     * Set WS-Addressing FaultTo endpoint reference.

+     *

+     * @param faultTo endpoint

+     */

+    public void setFaultTo(EndpointReference faultTo) {

+        this.faultTo = faultTo;

+    }

+

+    /**

+     * Set WS-Addressing From endpoint reference.

+     *

+     * @param from endpoint

+     */

+    public void setFrom(EndpointReference from) {

+        this.from = from;

+    }

+

+    /**

+     * Set listener used for incoming message.

+     *

+     * @param listener

+     */

+    public void setListener(TransportListener listener) {

+        this.listener = listener;

+    }

+

+    /**

+     * Set transport used for incoming message.

+     *

+     * @param transportIn

+     */

+    public void setTransportIn(TransportInDescription transportIn) {

+        this.transportIn = transportIn;

+    }

+

+    /**

+     * Set transport protocol used for incoming message.

+     *

+     * @param transportInProtocol ("http", "tcp", etc.)

+     */

+    public void setTransportInProtocol(String transportInProtocol) {

+        this.transportInProtocol = transportInProtocol;

+    }

+

+    /**

+     * Set WS-Addressing MessageId.

+     *

+     * @param messageId URI string

+     */

+    public void setMessageId(String messageId) {

+        this.messageId = messageId;

+    }

+

+    /**

+     * Set the general property definitions. Due to the way properties are

+     * stored, this will not effect the values of predefined properties with

+     * specific get/set methods.

+     *

+     * @param properties

+     */

+    public void setProperties(Map properties) {

+        this.properties = properties;

+    }

+

+    /**

+     * General properties you need to pass in to the message context must be set

+     * via this method. This method can only be used for properties which do not

+     * have specific get/set methods.

+     * <p/>

+     * Here are some of the properties supported in Axis2.

+     * <p/>

+     * <a name="GenConst"></a></p>

+     * <h3>Generic Constants</h3>

+     * <ul>

+     * <a name="TRANSPORT_URL"></a></p>

+     * <p/>

+     * <li><strong>org.apache.axis2.Constants.Configuration.TRANSPORT_URL</strong>

+     * <p>Sometimes you want to send your SOAP message through a node, before it reaches to its destination. This means you want to give transport URL different from the URL of the ultimate destination. A typical example would be wanting to send this SOAP (or REST)message through a transparent proxy or through a message monitoring applet. How can that be done using the ServiceClient API?</p>

+     * <pre>

+     * options.setTo("http://destination.org");

+     * options.setProperty(MessageContextConstants.TRANSPORT_URL, "http://myProxy.org");

+     * </pre><p>This will send your SOAP message to "http://myProxy.org", but if WS-Addressing is enabled, wsa:To will contain "http://destination.org" as To address.</p>

+     * </li>

+     * <p>  <a name="CHARACTER_SET_ENCODING"></a></p>

+     * <li><b>org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING</b>

+     * <p>This will enable user to set the character set encoding scheme to be used when sending the message. Default is set to "UTF-8"</p></li>

+     * <p/>

+     * <p><a name="ENABLE_MTOM"></a></p>

+     * <li><b>org.apache.axis2.Constants.Configuration.ENABLE_MTOM</b>

+     * <p>This will enable/disable MTOM support for outgoing messages.</p>

+     * <p>Possible values are: </p>

+     * <pre>"true"/"false" or Boolean.TRUE/Boolean.FALSE</pre>

+     * </li>

+     * </ul>

+     * <p><a name="Addressing"></a></p>

+     * <h3>WS-Addressing Module Specific Constants</h3>

+     * <ul>

+     * <p/>

+     * <a name="WS_ADDRESSING_VERSION"></a></p>

+     * <li><b>org.apache.axis2.addressing.AddressingConstants.WS_ADDRESSING_VERSION</b>

+     * <p>This will enable to select one of the two WS-Addressing versions available, if WS-Addressing is engaged.</p>

+     * <p>Possible values are:</p>

+     * <pre>

+     * org.apache.axis2.addressing.AddressingConstants.Final.WSA_NAMESPACE

+     * and

+     * org.apache.axis2.addressing.AddressingConstants.Submission.WSA_NAMESPACE</pre>

+     * </li>

+     * <p>  <a name="REPLACE_ADDRESSING_HEADERS"></a></p>

+     * <li><b>org.apache.axis2.addressing.AddressingConstants.REPLACE_ADDRESSING_HEADERS</b>

+     * <p/>

+     * <p>AddressingOutHandler picks up the addressing information from the message context and set them to the outgoing message. But someone may have already put some addressing headers, before the AddressingOutHandler. This flag will notify the handler whether to override them or not.</p>

+     * <p>Possible values are: </p>

+     * <pre>"true"/"false" or Boolean.TRUE/Boolean.FALSE</pre>

+     * </li>

+     * <p>  <a name="DISABLE_ADDRESSING_FOR_OUT_MESSAGES"></a></p>

+     * <li><b>org.apache.axis2.addressing.AddressingConstants.<br />

+     * DISABLE_ADDRESSING_FOR_OUT_MESSAGES</b>

+     * <p>If WS-Addressing is engaged globally or some how in effect for this particular invocation, this will disable Axis2 from putting WS-Addressing headers in to the out going SOAP message. (Note that Axis2 will not put addressing headers to the outgoing message, irrespective of the above flag, if the incoming message did not contain addressing headers).</p>

+     * <p/>

+     * <p>Possible values are:</p>

+     * <pre>"true"/"false" or Boolean.TRUE/Boolean.FALSE</pre>

+     * </li>

+     * </ul>

+     * <p><a name="HTTPConstants"></a></p>

+     * <h3>HTTP Constants</h3>

+     * <ul>

+     * <a name="CHUNKED"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.CHUNKED</b>

+     * <p>This will enable/disable chunking support. </p>

+     * <p/>

+     * <p>Possible values are:</p>

+     * <pre>"true"/"false" or Boolean.TRUE/Boolean.FALSE</pre>

+     * </li>

+     * <p><a name="NTLM"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.NTLM_AUTHENTICATION</b>

+     * <p>This enables the user to pass in NTLM authentication information, such as host, port, realm, username, password to be used with HTTP transport sender. </p>

+     * <p>The value should always be an instance of:  </p>

+     * <pre>org.apache.axis2.transport.http.HttpTransportProperties.

+     * NTLMAuthentication</pre>

+     * </li>

+     * <p/>

+     * <p><a name="PROXY"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.PROXY</b>

+     * <p>This enables the user to pass in proxy information, such as proxy host name, port, domain, username, password to be used with HTTP transport sender. </p>

+     * <p>The value should always be an instance of:</p>

+     * <pre>org.apache.axis2.transport.http.HttpTransportProperties.ProxyProperties</pre>

+     * </li>

+     * <p><a name="BASIC_AUTHENTICATION"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.BASIC_AUTHENTICATION</b>

+     * <p>This enables the user to pass in basic authentication information, such as host, port, realm, username, password to be used with HTTP transport sender. </p>

+     * <p/>

+     * <p>The value should always be an instance of: </p>

+     * <pre>org.apache.axis2.transport.http.HttpTransportProperties.BasicAuthentication</pre>

+     * </li>

+     * <p><a name="SO_TIMEOUT"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.SO_TIMEOUT</b>

+     * <p>This enables the user to pass in socket timeout value as an Integer. If nothing is set, the default value is 60000 milliseconds.</p>

+     * </li>

+     * <p><a name="CON_TIMEOUT"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.CONNECTION_TIMEOUT</b>

+     * <p/>

+     * <p>This enables the user to pass in connection timeout value as an Integer. If nothing is set, the default value is 60000 milliseconds.</p>

+     * </li>

+     * <p><a name="USER_AGENT"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.USER_AGENT</b>

+     * <p>This enables the user to set the user agent header in the outgoing HTTP request. Default value is "Axis2"</p>

+     * </li>

+     * <p><a name="GZIP"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.MC_GZIP_REQUEST</b>

+     * <p>If set this will GZip your request and send over to the destination. Before doing this, you must make sure that the receiving end supports GZip compressed streams. <br></p>

+     * <p/>

+     * <p>Possible values are: </p>

+     * <pre>"true"/"false" or Boolean.TRUE/Boolean.FALSE</pre>

+     * </li>

+     * <p><a name="ACCEPT_GZIP"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.MC_ACCEPT_GZIP</b>

+     * <p>Whether or not you send a gzip-ped request, you can choose to receive GZIP back from the server using this flag.</p>

+     * <p>Possible values are: </p>

+     * <pre>"true"/"false" or Boolean.TRUE/Boolean.FALSE</pre>

+     * </li>

+     * <p/>

+     * <p><a name="COOKIE"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.COOKIE_STRING</b>

+     * <p>This enables the user to set the cookie string header in the outgoing HTTP request.</p>

+     * </li>

+     * <p><a name="HTTP_PROTOCOL_VERSION"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.HTTP_PROTOCOL_VERSION</b>

+     * <p>This will set the HTTP protocol version to be used in sending the SOAP requests. </p>

+     * <p>Possible values are :</p>

+     * <pre>

+     * <p/>

+     * HTTP/1.1 - HTTPConstants.HEADER_PROTOCOL_11

+     * HTTP/1.0 - HTTPConstants.HEADER_PROTOCOL_10

+     * </pre><p>    Default is to use HTTP/1.1.</li>

+     * <p><a name="HTTP_HEADERS"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.HTTP_HEADERS</b>

+     * <p>You might sometimes want to send your own custom HTTP headers. You can set an ArrayList filled with </p>

+     * <pre>org.apache.commons.httpclient.Header</pre><p> objects using the above property. You must not try to override the Headers the Axis2 engine is setting to the outgoing message.</p>

+     * </li>

+     * <p><a name="REUSE_HTTP_CLIENT"></a></p>

+     * <p/>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.REUSE_HTTP_CLIENT</b>

+     * <p>You might want to use the same HTTPClient instance for multiple invocations. This flag will notify the engine to use the same HTTPClient between invocations.</p>

+     * </li>

+     * <p><a name="CACHED_HTTP_CLIENT"></a></p>

+     * <li><b>org.apache.axis2.transport.http.HTTPConstants.CACHED_HTTP_CLIENT</b>

+     * <p>If user had requested to re-use an HTTPClient using the above property, this property can be used to set a custom HTTPClient to be re-used.</p>

+     * </li>

+     * </ul>

+     * <p><a name="REST"></a></p>

+     * <p/>

+     * <h3>Constants to be used in a REST Invocation</h3>

+     * <ul>

+     * <a name="ENABLE_REST"></a></p>

+     * <li><b>org.apache.axis2.transport.http.Constants.Configuration.ENABLE_REST</b>

+     * <p>Enabling REST using the above flag will send your request as a REST invocation. </p>

+     * <p>Possible values are: </p>

+     * <pre>"true"/"false" or Boolean.TRUE/Boolean.FALSE</pre>

+     * </li>

+     * <p><a name="HTTP_METHOD"></a></p>

+     * <li><b>org.apache.axis2.transport.http.Constants.Configuration.HTTP_METHOD</b>

+     * <p/>

+     * <p>This will help the user to pick the HTTP method to be used during a REST invocation. </p>

+     * <p>Possible values are :</p>

+     * <pre>

+     * org.apache.axis2.Constants.Configuration.HTTP_METHOD_GET

+     * and

+     * org.apache.axis2.Constants.Configuration.HTTP_METHOD_POST

+     * </pre><p>    Default is to use POST method.</li>

+     * <p><a name="CONTENT_TYPE"></a>  </p>

+     * <li><b>org.apache.axis2.transport.http.Constants.Configuration.CONTENT_TYPE</b>

+     * <p>This will help the user to pick the content type to be used during a REST<br />

+     * <p/>

+     * invocation. </p>

+     * <p>Possible values are :</p>

+     * <ul>

+     * <li>application/xml                   -<br />

+     * <pre>HTTPConstants.MEDIA_TYPE_APPLICATION_XML</pre></li>

+     * <li>application/x-www-form-urlencoded -<br />

+     * <pre>HTTPConstants.MEDIA_TYPE_X_WWW_FORM</pre></li>

+     * <li>text/xml                          -<br />

+     * <pre>MEDIA_TYPE_TEXT_XML</pre></li>

+     * <p/>

+     * <li>multipart/related                 -<br />

+     * <pre>MEDIA_TYPE_MULTIPART_RELATED</pre></li>

+     * </ul>

+     * </li>

+     * </ul>

+     *

+     * @param propertyKey

+     * @param property

+     */

+    public void setProperty(String propertyKey, Object property) {

+        properties.put(propertyKey, property);

+    }

+

+    /**

+     * Add WS-Addressing RelatesTo item.

+     *

+     * @param relatesTo

+     */

+    public void addRelatesTo(RelatesTo relatesTo) {

+        if (relationships == null) {

+            relationships = new ArrayList(5);

+        }

+        relationships.add(relatesTo);

+    }

+

+    /**

+     * Set WS-Addressing ReplyTo endpoint.

+     *

+     * @param replyTo endpoint

+     */

+    public void setReplyTo(EndpointReference replyTo) {

+        this.replyTo = replyTo;

+    }

+

+    /**

+     * Set transport used for outgoing message.

+     *

+     * @param transportOut

+     */

+    public void setTransportOut(TransportOutDescription transportOut) {

+        this.transportOut = transportOut;

+    }

+

+    /**

+     * Set transport used for outgoing message.

+     *

+     * @param senderTransport   transport name in Axis2 configuration

+     *                          ("http", "tcp", etc.)

+     * @param axisConfiguration

+     * @throws AxisFault if the transport is not found

+     */

+    public void setSenderTransport(String senderTransport,

+                                   AxisConfiguration axisConfiguration) throws AxisFault {

+        this.transportOut = axisConfiguration.getTransportOut(new QName(

+                senderTransport));

+

+        if (senderTransport == null) {

+            throw new AxisFault(Messages.getMessage("unknownTransport",

+                    senderTransport));

+        }

+    }

+

+    /**

+     * Set the SOAP version to be used.

+     *

+     * @param soapVersionURI

+     * @see org.apache.axis2.namespace.Constants#URI_SOAP11_ENV

+     * @see org.apache.axis2.namespace.Constants#URI_SOAP12_ENV

+     */

+    public void setSoapVersionURI(String soapVersionURI) {

+        this.soapVersionURI = soapVersionURI;

+    }

+

+    /**

+     * This is used in blocking scenario. Client will time out after waiting

+     * this amount of time. The default is 2000 and must be provided in

+     * multiples of 100.

+     *

+     * @param timeOutInMilliSeconds

+     */

+    public void setTimeOutInMilliSeconds(long timeOutInMilliSeconds) {

+        this.timeOutInMilliSeconds = timeOutInMilliSeconds;

+    }

+

+    /**

+     * Set WS-Addressing To endpoint.

+     *

+     * @param to endpoint

+     */

+    public void setTo(EndpointReference to) {

+        this.to = to;

+    }

+

+    /**

+     * Sets transport information to the call. The scenarios supported are as

+     * follows: <blockquote>

+     * <p/>

+     * <pre>

+     *  [senderTransport, listenerTransport, useSeparateListener]

+     *  http, http, true

+     *  http, http, false

+     *  http, smtp, true

+     *  smtp, http, true

+     *  smtp, smtp, true

+     *  tcp,  tcp,  true

+     *  tcp,  tcp,  false

+     *  etc.

+     * </pre>

+     * <p/>

+     * </blockquote>

+     *

+     * @param senderTransport

+     * @param listenerTransport

+     * @param useSeparateListener

+     * @throws AxisFault

+     * @deprecated Use setTransportInProtocol(String) and

+     *             useSeparateListener(boolean) instead. You do not need to

+     *             setSenderTransportProtocol(String) as sender transport can be

+     *             inferred from the to EPR. But still you can

+     *             setTransportOut(TransportOutDescription).

+     */

+    public void setTransportInfo(String senderTransport,

+                                 String listenerTransport, boolean useSeparateListener)

+            throws AxisFault {

+

+        // here we check for a legal combination, for and example if the

+        // sendertransport is http and listener

+        // transport is smtp the invocation must using separate transport

+        if (!useSeparateListener) {

+            boolean isTransportsEqual = senderTransport

+                    .equals(listenerTransport);

+            boolean isATwoWaytransport = Constants.TRANSPORT_HTTP

+                    .equals(senderTransport)

+                    || Constants.TRANSPORT_TCP.equals(senderTransport);

+

+            if ((!isTransportsEqual || !isATwoWaytransport)) {

+                throw new AxisFault(Messages

+                        .getMessage("useSeparateListenerLimited"));

+            }

+        } else {

+            setUseSeparateListener(useSeparateListener);

+        }

+

+        setTransportInProtocol(listenerTransport);

+    }

+

+    /**

+     * Used to specify whether the two SOAP Messages are be sent over same

+     * channel or over separate channels. The value of this variable depends on

+     * the transport specified. For e.g., if the transports are different this

+     * is true by default. HTTP transport supports both cases while SMTP

+     * transport supports only two channel case.

+     *

+     * @param useSeparateListener

+     */

+    public void setUseSeparateListener(boolean useSeparateListener) {

+        this.useSeparateListener = Boolean.valueOf(useSeparateListener);

+    }

+

+    /**

+     * Add WS-Addressing ReferenceParameter child element. Multiple child

+     * may be used.

+     * TODO Add get method, implement handling.

+     *

+     * @param referenceParameter

+     * @deprecated

+     */

+    public void addReferenceParameter(OMElement referenceParameter) {

+        if (referenceParameters == null) {

+            referenceParameters = new ArrayList(5);

+        }

+

+        referenceParameters.add(referenceParameter);

+    }

+

+    /**

+     * Check if session management is enabled.

+     *

+     * @return <code>true</code> if enabled

+     */

+    public boolean isManageSession() {

+        return manageSession;

+    }

+

+    /**

+     * Set session management enabled state. When session management is enabled,

+     * the engine will automatically send session data (such as the service

+     * group id, or HTTP cookies) as part of requests.

+     *

+     * @param manageSession <code>true</code> if enabling sessions

+     */

+    public void setManageSession(boolean manageSession) {

+        this.manageSession = manageSession;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/client/ServiceClient.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/ServiceClient.java
new file mode 100644
index 0000000..050480e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/ServiceClient.java
@@ -0,0 +1,823 @@
+/*
+* Copyright 2004,2005 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.axis2.client;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.*;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.*;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.util.CallbackReceiver;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+import javax.wsdl.Definition;
+import javax.xml.namespace.QName;
+import java.net.URL;
+import java.util.ArrayList;
+
+/**
+ * Client access to a service. Each instance of this class is associated with a
+ * particular {@link org.apache.axis2.description.AxisService}, and the methods
+ * support operations using that service. {@link Options} instances are used to
+ * configure various aspects of the service access.
+ */
+public class ServiceClient {
+
+    /**
+     * Base name used for a service created without an existing configuration.
+     */
+    public static final String ANON_SERVICE = "anonService";
+
+    /**
+     * Operation name used for an anonymous out-only operation (meaning we send
+     * a message with no response allowed from the service, equivalent to a WSDL
+     * In-Only operation).
+     */
+    public static final QName ANON_OUT_ONLY_OP = new QName(
+            "anonOutonlyOp");
+
+    /**
+     * Operation name used for an anonymous robust-out-only operation
+     * (meaning we send a message, with the only possible response a fault,
+     * equivalent to a WSDL Robust-In-Only operation).
+     */
+    public static final QName ANON_ROBUST_OUT_ONLY_OP = new QName(
+            "anonRobustOp");
+
+    /**
+     * Operation name used for an anonymous in-out operation (meaning we sent a
+     * message and receive a response, equivalent to a WSDL In-Out operation).
+     */
+    public static final QName ANON_OUT_IN_OP = new QName("anonOutInOp");
+
+    // the meta-data of the service that this client access
+    private AxisService axisService;
+
+    // the configuration in which my meta-data lives
+    private AxisConfiguration axisConfig;
+
+    // the configuration context in which I live
+    private ConfigurationContext configContext;
+
+    // service context for this specific service instance
+    private ServiceContext serviceContext;
+
+    // client options for this service interaction
+    private Options options = new Options();
+
+    // options that must override those of the child operation client also
+    private Options overrideOptions;
+
+    // list of headers to be sent with the simple APIs
+    private ArrayList headers;
+
+    //whether we create configctx or not
+    private boolean createConfigCtx;
+
+    /**
+     * Create a service client configured to work with a specific AxisService.
+     * If this service is already in the world that's handed in (in the form of
+     * a ConfigurationContext) then I will happily work in it. If not I will
+     * create a small little virtual world and live there.
+     *
+     * @param configContext The configuration context under which this service lives (may
+     *                      be null, in which case a new local one will be created)
+     * @param axisService   The service for which this is the client (may be
+     *                      <code>null</code>, in which case an anonymous service will be created)
+     * @throws AxisFault if something goes wrong while creating a config context (if
+     *                   needed)
+     */
+    public ServiceClient(ConfigurationContext configContext,
+                         AxisService axisService) throws AxisFault {
+        configureServiceClient(configContext, axisService);
+    }
+
+    private void configureServiceClient(ConfigurationContext configContext, AxisService axisService) throws AxisFault {
+        initializeTransports(configContext);
+        // save the axisConfig and service
+        this.axisConfig = this.configContext.getAxisConfiguration();
+        if (axisService != null) {
+            this.axisService = axisService;
+        } else {
+            this.axisService = createAnonymousService();
+        }
+        if (this.axisConfig.getService(this.axisService.getName()) == null) {
+            this.axisService.setClientSide(true);
+            this.axisConfig.addService(this.axisService);
+        } else {
+            throw new AxisFault(Messages.getMessage(
+                    "twoservicecannothavesamename",
+                    this.axisService.getName()));
+        }
+        AxisServiceGroup axisServiceGroup = (AxisServiceGroup) this.axisService.getParent();
+        ServiceGroupContext sgc = new ServiceGroupContext(this.configContext,
+                axisServiceGroup);
+        this.serviceContext = sgc.getServiceContext(this.axisService);
+    }
+
+
+    /**
+     * This is WSDL4J based constructor to configure the Service Client/
+     * We are going to make this policy aware
+     *
+     * @param configContext
+     * @param wsdl4jDefinition
+     * @param wsdlServiceName
+     * @param portName
+     * @throws AxisFault
+     */
+
+    public ServiceClient(ConfigurationContext configContext, Definition wsdl4jDefinition,
+                         QName wsdlServiceName, String portName) throws AxisFault {
+        configureServiceClient(configContext, AxisService.createClientSideAxisService(
+                wsdl4jDefinition, wsdlServiceName, portName, options));
+    }
+
+    /**
+     * Create a service client for WSDL service identified by the QName of the
+     * wsdl:service element in a WSDL document.
+     *
+     * @param configContext   The configuration context under which this service lives (may
+     *                        be <code>null</code>, in which case a new local one will be created) *
+     * @param wsdlURL         The URL of the WSDL document to read
+     * @param wsdlServiceName The QName of the WSDL service in the WSDL document to create a
+     *                        client for
+     * @param portName        The name of the WSDL 1.1 port to create a client for. May be
+     *                        null (if WSDL 2.0 is used or if only one port is there). .
+     * @throws AxisFault if something goes wrong while creating a config context (if
+     *                   needed)
+     */
+    public ServiceClient(ConfigurationContext configContext, URL wsdlURL,
+                         QName wsdlServiceName, String portName) throws AxisFault {
+        configureServiceClient(configContext, AxisService.createClientSideAxisService(wsdlURL,
+                wsdlServiceName, portName, options));
+    }
+
+    private void initializeTransports(ConfigurationContext configContext) throws AxisFault {
+        ListenerManager transportManager;
+        if (configContext != null) {
+            this.configContext = configContext;
+            transportManager = configContext.getListenerManager();
+            if (transportManager == null) {
+                transportManager = new ListenerManager();
+                transportManager.init(this.configContext);
+            }
+        } else {
+            if (ListenerManager.defaultConfigurationContext == null) {
+                this.configContext = ConfigurationContextFactory.
+                        createConfigurationContextFromFileSystem(null, null);
+                transportManager = new ListenerManager();
+                transportManager.init(this.configContext);
+                createConfigCtx = true;
+            } else {
+                this.configContext = ListenerManager.defaultConfigurationContext;
+            }
+        }
+    }
+
+    /**
+     * Create a service client by assuming an anonymous service and any other
+     * necessary information.
+     *
+     * @throws AxisFault
+     */
+    public ServiceClient() throws AxisFault {
+        this(null, null);
+    }
+
+    /**
+     * Create an anonymous axisService with one (anonymous) operation for each
+     * MEP that we support dealing with anonymously using the convenience APIs.
+     *
+     * @return the minted anonymous service
+     */
+    private AxisService createAnonymousService() {
+        // now add anonymous operations to the axis2 service for use with the
+        // shortcut client API. NOTE: We only add the ones we know we'll use
+        // later in the convenience API; if you use
+        // this constructor then you can't expect any magic!
+        AxisService axisService = new AxisService(ANON_SERVICE + this.hashCode() + System.currentTimeMillis());
+        RobustOutOnlyAxisOperation robustoutoonlyOperation = new RobustOutOnlyAxisOperation(
+                ANON_ROBUST_OUT_ONLY_OP);
+        axisService.addOperation(robustoutoonlyOperation);
+
+        OutOnlyAxisOperation outOnlyOperation = new OutOnlyAxisOperation(
+                ANON_OUT_ONLY_OP);
+        axisService.addOperation(outOnlyOperation);
+
+        OutInAxisOperation outInOperation = new OutInAxisOperation(
+                ANON_OUT_IN_OP);
+        axisService.addOperation(outInOperation);
+        return axisService;
+    }
+
+    /**
+     * Return the AxisService this is a client for. This is primarily useful
+     * when the AxisService is created anonymously or from WSDL as otherwise the
+     * user had the AxisService to start with.
+     *
+     * @return the axisService
+     */
+    public AxisService getAxisService() {
+        return axisService;
+    }
+
+    /**
+     * Set the basic client configuration related to this service interaction.
+     *
+     * @param options (non-<code>null</code>)
+     */
+    public void setOptions(Options options) {
+        this.options = options;
+    }
+
+    /**
+     * Get the basic client configuration from this service interaction.
+     *
+     * @return options
+     */
+    public Options getOptions() {
+        return options;
+    }
+
+    /**
+     * Set a client configuration to override the normal options used by an
+     * operation client. Any values set in this configuration will be used for
+     * each client, with the standard values for the client still used for any
+     * values not set in the override configuration.
+     *
+     * @param overrideOptions
+     */
+    public void setOverrideOptions(Options overrideOptions) {
+        this.overrideOptions = overrideOptions;
+    }
+
+    /**
+     * Get the client configuration used to override the normal options set by
+     * an operation client.
+     *
+     * @return override options
+     */
+    public Options getOverrideOptions() {
+        return overrideOptions;
+    }
+
+    /**
+     * Engage a module for this service client.
+     *
+     * @param moduleName name of the module to engage
+     * @throws AxisFault if something goes wrong
+     */
+    public void engageModule(QName moduleName) throws AxisFault {
+        AxisModule module = axisConfig.getModule(moduleName);
+        if (module != null) {
+            axisService.engageModule(module, axisConfig);
+        } else {
+            throw new AxisFault("Unable to engage module : " +
+                    moduleName.getLocalPart());
+        }
+    }
+
+    /**
+     * Disengage a module for this service client
+     *
+     * @param moduleName
+     */
+    public void disengageModule(QName moduleName) {
+        AxisModule module = axisConfig.getModule(moduleName);
+        if (module != null) {
+            axisService.disengageModule(module);
+        }
+    }
+
+    /**
+     * Add an arbitrary XML element as a header to be sent with outgoing
+     * messages.
+     *
+     * @param header header to be sent (non-<code>null</code>)
+     */
+    public void addHeader(OMElement header) {
+        if (headers == null) {
+            headers = new ArrayList();
+        }
+        headers.add(header);
+    }
+
+    /**
+     * Add SOAP Header to be sent with outgoing messages.
+     *
+     * @param header header to be sent (non-<code>null</code>)
+     */
+    public void addHeader(SOAPHeaderBlock header) {
+        if (headers == null) {
+            headers = new ArrayList();
+        }
+        headers.add(header);
+    }
+
+    /**
+     * Remove all headers for outgoing message.
+     */
+    public void removeHeaders() {
+        if (headers != null) {
+            headers.clear();
+        }
+    }
+
+
+    /**
+     * Add a simple header consisting of some text (and a header name; duh) to
+     * be sent with interactions.
+     *
+     * @param headerName
+     * @param headerText
+     * @throws AxisFault
+     */
+    public void addStringHeader(QName headerName, String headerText) throws AxisFault {
+        if (headerName.getNamespaceURI() == null || "".equals(headerName.getNamespaceURI())) {
+            throw new AxisFault("Failed to add string header , you have to have namespaceURI for the QName");
+        }
+        OMElement omElement = OMAbstractFactory.getOMFactory().createOMElement(
+                headerName, null);
+        omElement.setText(headerText);
+        addHeader(omElement);
+    }
+
+    /**
+     * Directly invoke an anonymous operation with a Robust In-Only MEP. This
+     * method just sends your supplied XML and possibly receives a fault. For
+     * more control, you can instead create a client for the operation and use
+     * that client to execute the send.
+     *
+     * @param elem XML to send
+     * @throws AxisFault if something goes wrong while sending, or if a fault is
+     *                   received in response (per the Robust In-Only MEP).
+     * @see #createClient(QName)
+     */
+    public void sendRobust(OMElement elem) throws AxisFault {
+        sendRobust(ANON_ROBUST_OUT_ONLY_OP, elem);
+    }
+
+    /**
+     * Directly invoke a named operation with a Robust In-Only MEP. This method
+     * just sends your supplied XML and possibly receives a fault. For more
+     * control, you can instead create a client for the operation and use that
+     * client to execute the send.
+     *
+     * @param operation name of operation to be invoked (non-<code>null</code>)
+     * @param elem      XML to send
+     * @throws AxisFault if something goes wrong while sending it or if a fault is
+     *                   received in response (per the Robust In-Only MEP).
+     * @see #createClient(QName)
+     */
+    public void sendRobust(QName operation, OMElement elem) throws AxisFault {
+        if (options.isUseSeparateListener()) {
+
+            // This mean doing a Fault may come through a different channel .
+            // If the
+            // transport is two way transport (e.g. http) Only one channel is
+            // used (e.g. in http cases
+            // 202 OK is sent to say no response available). Axis2 get blocked
+            // return when the response is available.
+            SyncCallBack callback = new SyncCallBack();
+
+            // this method call two channel non blocking method to do the work
+            // and wait on the callback
+            sendReceiveNonBlocking(operation, elem, callback);
+
+            long timeout = options.getTimeOutInMilliSeconds();
+            long waitTime = timeout;
+            long startTime = System.currentTimeMillis();
+
+            synchronized (callback) {
+                while (! callback.isComplete() && waitTime >= 0) {
+                    try {
+                        callback.wait(timeout);
+                    } catch (InterruptedException e) {
+                        // We were interrupted for some reason, keep waiting
+                        // or throw new AxisFault( "Callback was interrupted by someone?" );
+                    }
+                    // The wait finished, compute remaining time
+                    // - wait can end prematurely, see Object.wait( int timeout )
+                    waitTime = timeout - (System.currentTimeMillis() - startTime);
+                }
+
+            }
+            SOAPEnvelope envelope = callback.envelope;
+            // process the result of the invocation
+            if (envelope != null) {
+                // building soap envelope
+                envelope.build();
+                // closing transport
+                if (envelope.getBody().hasFault()) {
+                    SOAPFault soapFault = envelope.getBody().getFault();
+                    throw new AxisFault(soapFault.getCode(), soapFault.getReason(),
+                            soapFault.getNode(), soapFault.getRole(), soapFault.getDetail());
+                }
+            } else {
+                if (callback.error instanceof AxisFault) {
+                    throw (AxisFault) callback.error;
+                } else if (callback.error != null) {
+                    throw new AxisFault(callback.error);
+                } else if (! callback.isComplete()) {
+                    //no exception has occurred
+                }
+            }
+        } else {
+            MessageContext mc = new MessageContext();
+            fillSOAPEnvelope(mc, elem);
+            OperationClient mepClient = createClient(operation);
+            mepClient.addMessageContext(mc);
+            mepClient.execute(true);
+        }
+    }
+
+    /**
+     * Directly invoke an anonymous operation with an In-Only MEP. This method
+     * just sends your supplied XML without the possibility of any response from
+     * the service (even an error - though you can still get client-side errors
+     * such as "Host not found"). For more control, you can instead create a
+     * client for the operation and use that client to execute the send.
+     *
+     * @param elem XML to send
+     * @throws AxisFault ff something goes wrong trying to send the XML
+     * @see #createClient(QName)
+     */
+    public void fireAndForget(OMElement elem) throws AxisFault {
+        fireAndForget(ANON_OUT_ONLY_OP, elem);
+    }
+
+    /**
+     * Directly invoke a named operation with an In-Only MEP. This method just
+     * sends your supplied XML without the possibility of any response from the
+     * service (even an error - though you can still get client-side errors such
+     * as "Host not found"). For more control, you can instead create a client
+     * for the operation and use that client to execute the send.
+     *
+     * @param operation name of operation to be invoked (non-<code>null</code>)
+     * @param elem      XML to send
+     * @throws AxisFault if something goes wrong trying to send the XML
+     * @see #createClient(QName)
+     */
+    public void fireAndForget(QName operation, OMElement elem) throws AxisFault {
+        // look up the appropriate axisop and create the client
+        OperationClient mepClient = createClient(operation);
+        // create a message context and put the payload in there along with any
+        // headers
+        MessageContext mc = new MessageContext();
+        fillSOAPEnvelope(mc, elem);
+        // add the message context there and have it go
+        mepClient.addMessageContext(mc);
+        mepClient.execute(false);
+    }
+
+    /**
+     * Directly invoke an anonymous operation with an In-Out MEP. This method
+     * sends your supplied XML and receives a response. For more control, you
+     * can instead create a client for the operation and use that client to
+     * execute the exchange.
+     *
+     * @param elem
+     * @return response
+     * @throws AxisFault
+     * @see #createClient(QName)
+     */
+    public OMElement sendReceive(OMElement elem) throws AxisFault {
+        return sendReceive(ANON_OUT_IN_OP, elem);
+    }
+
+    /**
+     * Directly invoke a named operationQName with an In-Out MEP. This method sends
+     * your supplied XML and receives a response. For more control, you can
+     * instead create a client for the operationQName and use that client to execute
+     * the exchange.
+     *
+     * @param operationQName name of operationQName to be invoked (non-<code>null</code>)
+     * @param xmlPayload
+     * @return response
+     * @throws AxisFault
+     */
+    public OMElement sendReceive(QName operationQName, OMElement xmlPayload)
+            throws AxisFault {
+        if (options.isUseSeparateListener()) {
+
+            // Here we are trying to do a request-response invocation using two different channels for the request
+            // and the response.
+            // For example, if the IN and OUT transports are HTTP, then two different HTTP channels will be used. The first
+            // channel will be used to send the request, which the server respond sending HTTP 200, if accepted and uses
+            // a completely different channel to send the response. This flag, informs the Axis2 client engine to
+            // keep listeners ready to receive the response.
+
+            // even if the client is blocking we use a Callback, internally, to relate the response back to the client.
+            SyncCallBack callback = new SyncCallBack();
+
+            // this method call two channel non blocking method to do the work
+            // and wait on the callback
+            sendReceiveNonBlocking(operationQName, xmlPayload, callback);
+
+            long timeout = options.getTimeOutInMilliSeconds();
+            long waitTime = timeout;
+            long startTime = System.currentTimeMillis();
+
+            synchronized (callback) {
+                while (! callback.isComplete() && waitTime >= 0) {
+                    try {
+                        callback.wait(timeout);
+                    } catch (InterruptedException e) {
+                        // We were interrupted for some reason, keep waiting
+                        // or throw new AxisFault( "Callback was interrupted by someone?" );
+                    }
+                    // The wait finished, compute remaining time
+                    // - wait can end prematurely, see Object.wait( int timeout )
+                    waitTime = timeout - (System.currentTimeMillis() - startTime);
+                }
+
+            }
+            // process the result of the invocation
+            if (callback.envelope != null) {
+                // transport was already returned by the call back receiver
+                //Building of the Envelope should happen at the setComplete()
+                // or onComplete() methods of the Callback class
+                return callback.envelope.getBody().getFirstElement();
+            } else {
+                if (callback.error instanceof AxisFault) {
+                    throw (AxisFault) callback.error;
+                } else if (callback.error != null) {
+                    throw new AxisFault(callback.error);
+                } else if (! callback.isComplete()) {
+                    throw new AxisFault(Messages.getMessage("responseTimeOut"));
+                } else
+                    throw new AxisFault(Messages.getMessage("callBackCompletedWithError"));
+            }
+        } else {
+            MessageContext messageContext = new MessageContext();
+            fillSOAPEnvelope(messageContext, xmlPayload);
+            OperationClient operationClient = createClient(operationQName);
+            operationClient.addMessageContext(messageContext);
+            operationClient.execute(true);
+            MessageContext response = operationClient
+                    .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+            return response.getEnvelope().getBody().getFirstElement();
+        }
+    }
+
+    /**
+     * Directly invoke an anonymous operation with an In-Out MEP without waiting
+     * for a response. This method sends your supplied XML with response
+     * notification to your callback handler. For more control, you can instead
+     * create a client for the operation and use that client to execute the
+     * exchange.
+     *
+     * @param elem
+     * @param callback
+     * @throws AxisFault
+     * @see #createClient(QName)
+     */
+    public void sendReceiveNonBlocking(OMElement elem, Callback callback)
+            throws AxisFault {
+        sendReceiveNonBlocking(ANON_OUT_IN_OP, elem, callback);
+    }
+
+    /**
+     * Directly invoke a named operation with an In-Out MEP without waiting for
+     * a response. This method sends your supplied XML with response
+     * notification to your callback handler. For more control, you can instead
+     * create a client for the operation and use that client to execute the
+     * exchange.
+     *
+     * @param operation name of operation to be invoked (non-<code>null</code>)
+     * @param elem
+     * @param callback
+     * @throws AxisFault
+     * @see #createClient(QName)
+     */
+    public void sendReceiveNonBlocking(QName operation, OMElement elem,
+                                       Callback callback) throws AxisFault {
+        MessageContext mc = new MessageContext();
+        fillSOAPEnvelope(mc, elem);
+        OperationClient mepClient = createClient(operation);
+        // here a blocking invocation happens in a new thread, so the
+        // progamming model is non blocking
+        mepClient.setCallback(callback);
+        mepClient.addMessageContext(mc);
+        if (options.isUseSeparateListener()) {
+            MessageReceiver messageReceiver = axisService.getOperation(operation).getMessageReceiver();
+            if (messageReceiver == null || !(messageReceiver instanceof CallbackReceiver)) {
+                CallbackReceiver callbackReceiver = new CallbackReceiver();
+                axisService.getOperation(operation).setMessageReceiver(callbackReceiver);
+            }
+        }
+        mepClient.execute(false);
+    }
+
+    /**
+     * Create an operation client with the appropriate message exchange pattern
+     * (MEP). This method creates a full-function MEP client which can be used
+     * to exchange messages for a specific operation. It configures the
+     * constructed operation client to use the current normal and override
+     * options. This method is used internally, and also by generated client
+     * stub code.
+     *
+     * @param operationQName qualified name of operation (local name is operation
+     *                       name, namespace URI is just the empty string)
+     * @return client configured to talk to the given operation
+     * @throws AxisFault if the operation is not found
+     */
+    public OperationClient createClient(QName operationQName) throws AxisFault {
+        AxisOperation axisOperation = axisService.getOperation(operationQName);
+        if (axisOperation == null) {
+            throw new AxisFault(Messages
+                    .getMessage("operationnotfound", operationQName.getLocalPart()));
+        }
+
+        OperationClient operationClient = axisOperation.createClient(serviceContext, options);
+
+        // if overide options have been set, that means we need to make sure
+        // those options override the options of even the operation client. So,
+        // what we do is switch the parents around to make that work.
+        if (overrideOptions != null) {
+            overrideOptions.setParent(operationClient.getOptions());
+            operationClient.setOptions(overrideOptions);
+        }
+        return operationClient;
+    }
+
+    /**
+     * Return the SOAP factory to use depending on what options have been set.
+     * If the SOAP version can not be seen in the options, version 1.1 is the
+     * default.
+     *
+     * @return the SOAP factory
+     * @see Options#setSoapVersionURI(String)
+     */
+    private SOAPFactory getSOAPFactory() {
+        String soapVersionURI = options.getSoapVersionURI();
+        if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapVersionURI)) {
+            return OMAbstractFactory.getSOAP12Factory();
+        } else {
+            // make the SOAP 1.1 the default SOAP version
+            return OMAbstractFactory.getSOAP11Factory();
+        }
+    }
+
+    /**
+     * Prepare a SOAP envelope with the stuff to be sent.
+     *
+     * @param messageContext the message context to be filled
+     * @param xmlPayload     the payload content
+     * @throws AxisFault if something goes wrong
+     */
+    private void fillSOAPEnvelope(MessageContext messageContext, OMElement xmlPayload)
+            throws AxisFault {
+        messageContext.setServiceContext(serviceContext);
+        SOAPFactory soapFactory = getSOAPFactory();
+        SOAPEnvelope envelope = soapFactory.getDefaultEnvelope();
+        if (xmlPayload != null) {
+            envelope.getBody().addChild(xmlPayload);
+        }
+        addHeadersToEnvelope(envelope);
+        messageContext.setEnvelope(envelope);
+    }
+
+
+    /**
+     * Add all configured headers to a SOAP envelope.
+     *
+     * @param envelope
+     */
+    public void addHeadersToEnvelope(SOAPEnvelope envelope) {
+        if (headers != null) {
+            SOAPHeader soapHeader = envelope.getHeader();
+            for (int i = 0; i < headers.size(); i++) {
+                soapHeader.addChild((OMElement) headers.get(i));
+            }
+        }
+    }
+
+
+    /**
+     * Get the endpoint reference for this client using a particular transport.
+     *
+     * @param transport transport name (non-<code>null</code>)
+     * @return local endpoint
+     * @throws AxisFault
+     */
+    public EndpointReference getMyEPR(String transport) throws AxisFault {
+        return serviceContext.getMyEPR(transport);
+    }
+
+    /**
+     * Get the endpoint reference for the service.
+     *
+     * @return service endpoint
+     */
+    public EndpointReference getTargetEPR() {
+        return serviceContext.getTargetEPR();
+    }
+
+    /**
+     * Set the endpoint reference for the service.
+     *
+     * @param targetEpr
+     */
+    public void setTargetEPR(EndpointReference targetEpr) {
+        serviceContext.setTargetEPR(targetEpr);
+        options.setTo(targetEpr);
+    }
+
+
+    /**
+     * This class acts as a callback that allows users to wait on the result.
+     */
+    private class SyncCallBack extends Callback {
+        private SOAPEnvelope envelope;
+
+        private MessageContext msgctx;
+
+        private Exception error;
+
+        public void onComplete(AsyncResult result) {
+            this.envelope = result.getResponseEnvelope();
+            // Transport input stream gets closed after calling setComplete
+            // method. Have to build the whole envelope including the
+            // attachments at this stage. Data might get lost if the input
+            // stream gets closed before building the whole envelope.
+            this.envelope.buildWithAttachments();
+            this.msgctx = result.getResponseMessageContext();
+        }
+
+        public void setComplete(boolean complete) {
+            super.setComplete(complete);
+            synchronized (this) {
+                notify();
+            }
+        }
+
+        public void onError(Exception e) {
+            error = e;
+        }
+
+        public MessageContext getMsgctx() {
+            return msgctx;
+        }
+    }
+
+    /**
+     * Get the service context.
+     *
+     * @return context
+     */
+    public ServiceContext getServiceContext() {
+        return serviceContext;
+    }
+
+    protected void finalize() throws Throwable {
+        super.finalize();
+        cleanup();
+    }
+
+    /**
+     * Clean up configuration created with this client. Call this method when
+     * you're done using the client, in order to discard any associated
+     * resources.
+     *
+     * @throws AxisFault
+     */
+    public void cleanup() throws AxisFault {
+        // if a configuration context was created for this client there'll also
+        //  be a service group, so discard that
+        if (!createConfigCtx) {
+            String serviceGroupName = ((AxisServiceGroup) axisService.getParent()).getServiceGroupName();
+            AxisConfiguration axisConfiguration = configContext.getAxisConfiguration();
+            AxisServiceGroup asg = axisConfiguration.getServiceGroup(serviceGroupName);
+            if (asg != null) {
+                axisConfiguration.removeServiceGroup(serviceGroupName);
+            }
+        } else {
+            //Stopping listeners if you start any
+            configContext.getListenerManager().stop();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/client/Stub.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/Stub.java
new file mode 100644
index 0000000..576bbb5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/Stub.java
@@ -0,0 +1,137 @@
+/*
+* Copyright 2004,2005 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.axis2.client;
+
+import java.util.ArrayList;
+
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPProcessingException;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.i18n.Messages;
+
+/**
+ * Base class for generated client stubs. This defines several client API
+ * (<code>public</code>) methods shared between all types of stubs, along with
+ * some <code>protected</code> methods intended for use by the actual stub
+ * implementation code. The client API method names start with a leading
+ * underscore character to avoid conflicts with actual implementation methods.
+ */
+public abstract class Stub {
+    
+    protected AxisService _service;
+    protected ArrayList modules = new ArrayList();
+
+
+    protected ServiceClient _serviceClient;
+
+    /**
+     * Get service client implementation used by this stub.
+     * 
+     * @return service client
+     */
+    public ServiceClient _getServiceClient() {
+        return _serviceClient;
+    }
+
+    /**
+     * Set service client implementation used by this stub. Once set, the
+     * service client is owned by this stub and will automatically be removed
+     * from the configuration when use of the stub is done.
+     * 
+     * @param _serviceClient
+     */
+    public void _setServiceClient(ServiceClient _serviceClient) {
+        this._serviceClient = _serviceClient;
+    }
+
+    /**
+     * Create a SOAP message envelope using the supplied options.
+     * TODO generated stub code should use this method, or similar method taking
+     * an operation client
+     * 
+     * @param options
+     * @return generated 
+     * @throws SOAPProcessingException
+     */
+    protected static SOAPEnvelope createEnvelope(Options options) throws SOAPProcessingException {
+        return getFactory(options.getSoapVersionURI()).getDefaultEnvelope();
+    }
+
+    /**
+     * Read a root element from the parser.
+     * TODO generated stub code should use this method
+     * 
+     * @param reader
+     * @return root element
+     */
+    protected static OMElement getElementFromReader(XMLStreamReader reader) {
+        StAXOMBuilder builder =
+                OMXMLBuilderFactory.createStAXOMBuilder(OMAbstractFactory.getOMFactory(), reader);
+
+        return builder.getDocumentElement();
+    }
+
+    /**
+     * Get Axiom factory appropriate to selected SOAP version.
+     * 
+     * @param soapVersionURI
+     * @return factory
+     */
+    protected static SOAPFactory getFactory(String soapVersionURI) {
+
+        if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapVersionURI)) {
+            return OMAbstractFactory.getSOAP11Factory();
+        } else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapVersionURI)) {
+            return OMAbstractFactory.getSOAP12Factory();
+        } else {
+            throw new RuntimeException(Messages
+                    .getMessage("unknownsoapversion"));
+        }
+    }
+
+    /**
+     * Finalize method called by garbage collection. This is overridden to
+     * support cleanup of any associated resources.
+     * 
+     * @throws Throwable
+     */
+    protected void finalize() throws Throwable {
+         super.finalize();
+         cleanup();
+    }
+
+    /**
+     * Cleanup associated resources. This removes the axis service from the
+     * configuration.
+     * 
+     * @throws AxisFault
+     */
+    public void cleanup() throws AxisFault {
+        _service.getAxisConfiguration().removeService(_service.getName());
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java
new file mode 100644
index 0000000..4e8dddb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/WSDLBasedPolicyProcessor.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2004,2005 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.axis2.client;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisDescription;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.PolicyInclude;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Policy;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+public class WSDLBasedPolicyProcessor {
+    private HashMap ns2modules = new HashMap();
+
+    public WSDLBasedPolicyProcessor(ConfigurationContext configctx) {
+        AxisConfiguration axisConfiguration = configctx.getAxisConfiguration();
+        for (Iterator iterator = axisConfiguration.getModules().values()
+                .iterator(); iterator.hasNext();) {
+            AxisModule axisModule = (AxisModule) iterator.next();
+            String[] namespaces = axisModule.getSupportedPolicyNamespaces();
+
+            if (namespaces == null) {
+                continue;
+            }
+
+            for (int i = 0; i < namespaces.length; i++) {
+                ArrayList moduleList = null;
+                Object obj = ns2modules.get(namespaces[i]);
+                if (obj == null) {
+                    moduleList = new ArrayList(5);
+                    ns2modules.put(namespaces[i], moduleList);
+                } else {
+                    moduleList = (ArrayList) obj;
+                }
+                moduleList.add(axisModule);
+
+            }
+        }
+
+    }
+
+    public void configureServicePolices(AxisService axisService)
+            throws AxisFault {
+        Iterator operations = axisService.getOperations();
+        while (operations.hasNext()) {
+            AxisOperation axisOp = (AxisOperation) operations.next();
+            // TODO we support only operation level Policy now
+            configureOperationPolices(axisOp);
+        }
+    }
+
+    public void configureOperationPolices(AxisOperation op) throws AxisFault {
+        PolicyInclude policyInclude = op.getPolicyInclude();
+        Policy policy = policyInclude.getEffectivePolicy();
+        if (policy != null) {
+
+            policy = (Policy) policy.normalize(policyInclude
+                    .getPolicyRegistry(), false);
+
+            for (Iterator iterator = policy.getAlternatives(); iterator
+                    .hasNext();) {
+
+                List namespaceList = new ArrayList();
+                Assertion assertion;
+
+                /*
+                 * Fist we compute the set of distinct namespaces of assertions
+                 * of this particular policy alternative.
+                 */
+                for (Iterator assertions = ((List) iterator.next()).iterator(); assertions
+                        .hasNext();) {
+
+                    assertion = (Assertion) iterator.next();
+                    QName name = assertion.getName();
+                    String namespaceURI = name.getNamespaceURI();
+
+                    if (!namespaceList.contains(namespaceURI)) {
+                        namespaceList.add(namespaceURI);
+                    }
+                }
+
+                /*
+                 * Now we compute all the modules that are are involved in
+                 * process assertions that belongs to any of the namespaces of
+                 * list.
+                 */
+                List modulesToEngage;
+               
+                for (Iterator namespaces = namespaceList.iterator(); iterator
+                        .hasNext();) {
+                    String namespace = (String) namespaces.next();
+                    modulesToEngage = (List) ns2modules.get(namespace);
+
+                    if (modulesToEngage == null) {
+                        /*
+                         * If there isn't a single module that is not interested
+                         * of assertions that belongs to a particular namespace,
+                         * we simply ignore it.
+                         */
+                        System.err
+                                .println("cannot find any modules to process "
+                                        + namespace + "type assertions");
+                        // TODO: Log this ..
+                        continue;
+                        
+                    } else {
+                        engageModulesToAxisDescription(modulesToEngage, op);
+                    }
+                }
+                
+
+                /*
+                 * We only pick the first policy alternative. Other policy
+                 * alternatives are ignored.
+                 */
+                break;
+            }
+        }
+    }
+
+    /**
+     * Engages the list of Modules to the specified AxisDescription. 
+     */
+    private void engageModulesToAxisDescription(List modulesToEngage,
+            AxisDescription axisDescription) throws AxisFault {
+        AxisModule axisModule;
+        QName moduleName;
+
+        for (Iterator iterator = modulesToEngage.iterator(); iterator.hasNext();) {
+            axisModule = (AxisModule) iterator.next();
+            moduleName = axisModule.getName();
+
+            if (!axisDescription.isEngaged(moduleName)) {
+                axisDescription.engageModule(axisModule, axisDescription
+                        .getAxisConfiguration());
+                (axisModule.getModule()).engageNotify(axisDescription);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/client/async/AsyncResult.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/async/AsyncResult.java
new file mode 100644
index 0000000..d974314
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/async/AsyncResult.java
@@ -0,0 +1,67 @@
+/*
+* Copyright 2004,2005 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.axis2.client.async;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.context.MessageContext;
+
+/**
+ * This class holds the results of an asynchronous invocation. The Axis2
+ * engine returns an instance of this class via the {@link
+ * Callback#onComplete(AsyncResult)} method when the operation completes
+ * successfully.
+ */
+public class AsyncResult {
+
+    /**
+     * Message context that supplies the result information.
+     */
+    private MessageContext result;
+
+    /**
+     * Constructor.
+     * 
+     * @param result message context providing result information
+     * (<code>null</code> if no response)
+     */
+    public AsyncResult(MessageContext result) {
+        this.result = result;
+    }
+
+    /**
+     * Get the SOAP Envelope for the response message.
+     * 
+     * @return Envelope (<code>null</code> if none)
+     */
+    public SOAPEnvelope getResponseEnvelope() {
+        if (result != null) {
+            return result.getEnvelope();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Get the complete message context for the response.
+     * 
+     * @return context (<code>null</code> if none)
+     */
+    public MessageContext getResponseMessageContext() {
+        return result;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/client/async/Callback.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/async/Callback.java
new file mode 100644
index 0000000..ec776e1
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/client/async/Callback.java
@@ -0,0 +1,76 @@
+/*
+* Copyright 2004,2005 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.axis2.client.async;
+
+/**
+ * Base class for asynchronous client callback handler. The application code
+ * needs to create an instance of this class (actually an instance of a
+ * subclass, since this base class cannot be used directly) and pass it to the
+ * generated startXXX client stub method when initiating an asynchronous
+ * operation. The Axis2 code then calls the appropriate methods of this class
+ * {@link #setComplete(boolean)}, and either {@link #onComplete(AsyncResult)}
+ * or {@link #onError(Exception)} when the operation is completed.
+ */
+public abstract class Callback {
+
+    /**
+     * Field complete
+     */
+    private boolean complete;
+
+    /**
+     * Method is invoked by Axis2 once the asynchronous operation has completed
+     * successfully.
+     *
+     * @param result
+     */
+    public abstract void onComplete(AsyncResult result);
+
+    /**
+     * Method invoked by Axis2 if the asynchronous operation fails.
+     *
+     * @param e
+     */
+    public abstract void onError(Exception e);
+
+    /**
+     * Returns true if the asynchronous operation has completed, false otherwise. Typically this is
+     * used for polling. e.g.
+     * <code>
+     * <pre>
+     *          while(!callback.isComplete()){
+     *             Thread.sleep(1000);
+     *          }
+     *          do whatever u need to do
+     *      </pre>
+     * </code>
+     *
+     * @return boolean
+     */
+    public synchronized boolean isComplete() {
+        return complete;
+    }
+
+    /**
+     * Method invoked by Axis2 to set the completion state of the operation.
+     *
+     * @param complete
+     */
+    public synchronized void setComplete(boolean complete) {
+        this.complete = complete;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/AbstractContext.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/AbstractContext.java
new file mode 100644
index 0000000..010754e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/AbstractContext.java
@@ -0,0 +1,139 @@
+/*
+* Copyright 2004,2005 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.axis2.context;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * This is the top most level of the Context hierarchy and is a bag of properties.
+ */
+public abstract class AbstractContext {
+
+    /**
+     * Property used to indicate copying of properties is needed by context. 
+     */
+    public static final String COPY_PROPERTIES = "CopyProperties";
+
+    protected long lastTouchedTime;
+
+    protected transient AbstractContext parent;
+    protected transient Map properties;
+
+    protected AbstractContext(AbstractContext parent) {
+        this.properties = new HashMap();
+        this.parent = parent;
+    }
+
+    /**
+     * @return Returns AbstractContext.
+     */
+    public AbstractContext getParent() {
+        return parent;
+    }
+
+    public Map getProperties() {
+        return properties;
+    }
+
+    /**
+     * Retrieves an object given a key.
+     *
+     * @param key - if not found, will return null
+     * @return Returns the property.
+     */
+    public Object getProperty(String key) {
+        Object obj;
+
+        obj = properties.get(key);
+
+        if ((obj == null) && (parent != null)) {
+            obj = parent.getProperty(key);
+        }
+
+        return obj;
+    }
+
+    /**
+     * @param context
+     */
+    public void setParent(AbstractContext context) {
+        parent = context;
+    }
+
+    /**
+     * This will set the properties to the context. But in setting that one may need to "copy" all
+     * the properties from the source properties to the target properties. To enable this we introduced
+     * a property ({@link #COPY_PROPERTIES}) so that if set to true, this code
+     * will copy the whole thing, without just referencing to the source.
+     *
+     * @param properties
+     */
+    public void setProperties(Map properties) {
+        if (properties == null) {
+            this.properties = null;
+        } else {
+            Boolean copyProperties = ((Boolean) properties.get(COPY_PROPERTIES));
+
+            if ((copyProperties != null) && copyProperties.booleanValue()) {
+                Iterator iterator = properties.keySet().iterator();
+
+                while (iterator.hasNext()) {
+                    Object key = iterator.next();
+
+                    this.properties.put(key, properties.get(key));
+                }
+            } else {
+                this.properties = properties;
+            }
+        }
+    }
+
+    /**
+     * Store a property for message context
+     *
+     * @param key
+     * @param value
+     */
+    public void setProperty(String key, Object value) {
+        properties.put(key, value);
+    }
+
+    /**
+     * ServiceContext and ServiceGroupContext are not getting automatically garbage collected. And there
+     * is no specific way for some one to go and make it garbage collectible.
+     * So the current solution is to make them time out. So the logic is that, there is a timer task
+     * in each and every service group which will check for the last touched time. And if it has not
+     * been touched for some time, the timer task will remove it from the memory.
+     * The touching logic happens like this. Whenever there is a call to addMessageContext in the operationContext
+     * it will go and update operationCOntext -> serviceContext -> serviceGroupContext.
+     */
+    protected void touch() {
+        lastTouchedTime = System.currentTimeMillis();
+        if (parent != null) {
+            parent.touch();
+        }
+    }
+
+    public long getLastTouchedTime() {
+        return lastTouchedTime;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java
new file mode 100644
index 0000000..de388a2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java
@@ -0,0 +1,455 @@
+/*
+* Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.DependencyManager;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.util.SessionUtils;
+import org.apache.axis2.util.UUIDGenerator;
+import org.apache.axis2.util.threadpool.ThreadFactory;
+import org.apache.axis2.util.threadpool.ThreadPool;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.net.URL;
+import java.util.*;
+
+/**
+ * This contains all the configuration information for Axis2.
+ */
+public class ConfigurationContext extends AbstractContext {
+
+    private static final Log log = LogFactory.getLog(ConfigurationContext.class);
+    /**
+     * Map containing <code>MessageID</code> to
+     * <code>OperationContext</code> mapping.
+     */
+    private final Map operationContextMap = new HashMap();
+    private Hashtable serviceGroupContextMap = new Hashtable();
+    private Hashtable applicationSessionServiceGroupContextTable = new Hashtable();
+    private transient AxisConfiguration axisConfiguration;
+    private transient ThreadFactory threadPool;
+    //To keep TransportManager instance
+    private ListenerManager listenerManager;
+
+    // current time out interval is 30 secs. Need to make this configurable
+    private long serviceGroupContextTimoutInterval = 30 * 1000;
+
+    //To specify url mapping for services
+    private String contextRoot = "axis2";
+    private String servicePath = "services";
+    private String restPath = Constants.DEFAULT_REST_PATH;
+    //To have your own context path
+
+    public ConfigurationContext(AxisConfiguration axisConfiguration) {
+        super(null);
+        this.axisConfiguration = axisConfiguration;
+        initConfigContextTimeout(axisConfiguration);
+    }
+
+    private void initConfigContextTimeout(AxisConfiguration axisConfiguration) {
+        Parameter parameter = axisConfiguration.getParameter(Constants.Configuration.CONFIG_CONTEXT_TIMOUT_INTERVAL);
+        if (parameter != null) {
+            Object value = parameter.getValue();
+            if (value != null && value instanceof String) {
+                serviceGroupContextTimoutInterval = Integer.parseInt((String) value);
+            }
+        }
+    }
+
+    protected void finalize() throws Throwable {
+        super.finalize();
+    }
+
+    /**
+     * Searches for a ServiceGroupContext in the map with given id as the key.
+     * <pre>
+     * If(key != null && found)
+     * check for a service context for the intended service.
+     * if (!found)
+     * create one and hook up to ServiceGroupContext
+     * else
+     * create new ServiceGroupContext with the given key or if key is null with a new key
+     * create a new service context for the service
+     * </pre>
+     *
+     * @param messageContext
+     */
+    public void fillServiceContextAndServiceGroupContext(
+            MessageContext messageContext)
+            throws AxisFault {
+        String serviceGroupContextId = messageContext.getServiceGroupContextId();
+        SessionContext sessionContext = messageContext.getSessionContext();
+
+        // by this time service group context id must have a value. Either from transport or from addressing
+        ServiceGroupContext serviceGroupContext;
+        ServiceContext serviceContext = messageContext.getServiceContext();
+
+        AxisService axisService = messageContext.getAxisService();
+
+        if (serviceContext == null) {
+            if (Constants.SCOPE_APPLICATION.equals(axisService.getScope())) {
+                String serviceGroupName = ((AxisServiceGroup) axisService.getParent()).getServiceGroupName();
+                serviceGroupContext = (ServiceGroupContext) applicationSessionServiceGroupContextTable.get(
+                        serviceGroupName);
+                if (serviceGroupContext == null) {
+                    AxisServiceGroup axisServiceGroup = messageContext.getAxisServiceGroup();
+                    if (axisServiceGroup == null) {
+                        axisServiceGroup = (AxisServiceGroup) messageContext.getAxisService().getParent();
+                    }
+                    serviceGroupContext = new ServiceGroupContext(messageContext.getConfigurationContext(),
+                            axisServiceGroup);
+                    applicationSessionServiceGroupContextTable.put(serviceGroupName, serviceGroupContext);
+                }
+                serviceContext = serviceGroupContext.getServiceContext(axisService);
+
+            } else if (!isNull(serviceGroupContextId)
+                    && (getServiceGroupContext(serviceGroupContextId, messageContext) != null)) {
+
+                // SGC is already there
+                serviceGroupContext =
+                        getServiceGroupContext(serviceGroupContextId, messageContext);
+                serviceContext =
+                        serviceGroupContext.getServiceContext(messageContext.getAxisService());
+            } else {
+
+                // either the key is null or no SGC is found from the give key
+                if (isNull(serviceGroupContextId)) {
+                    serviceGroupContextId = UUIDGenerator.getUUID();
+                    messageContext.setServiceGroupContextId(serviceGroupContextId);
+                }
+
+                if (messageContext.getAxisService() != null) {
+                    AxisServiceGroup axisServiceGroup = (AxisServiceGroup) messageContext.getAxisService().getParent();
+
+                    serviceGroupContext = new ServiceGroupContext(this, axisServiceGroup);
+                    serviceContext = serviceGroupContext.getServiceContext(messageContext.getAxisService());
+
+                    // set the serviceGroupContextID
+                    serviceGroupContext.setId(serviceGroupContextId);
+                } else {
+                    throw new AxisFault(Messages.getMessage("servicenotfound"));
+                }
+            }
+
+            /**
+             * 1. Check the max scope of the service group , if it is grater than TransportSession
+             *    then need to store in configurationContext
+             * 2. Else need to store in SessionContext , and need to store both service context and
+             *    service group context
+             */
+            String maxScope = SessionUtils.calculateMaxScopeForServiceGroup(serviceGroupContext.getDescription());
+            if (Constants.SCOPE_SOAP_SESSION.equals(maxScope)) {
+                registerServiceGroupContext(serviceGroupContext);
+            } else if (Constants.SCOPE_TRANSPORT_SESSION.equals(maxScope)) {
+                if (sessionContext != null) {
+                    sessionContext.addServiceGroupContext(serviceGroupContext, serviceGroupContextId);
+                    sessionContext.addServiceContext(serviceContext);
+                }
+            }
+            messageContext.setServiceContext(serviceContext);
+            if (Constants.SCOPE_REQUEST.equals(maxScope)) {
+                messageContext.setServiceGroupContextId(null);
+            } else {
+                messageContext.setServiceGroupContext(serviceGroupContext);
+            }
+        }
+        if (sessionContext != null) {
+            // when you come here operation context MUST already been assigned to the message context
+            serviceContext.setProperty(HTTPConstants.COOKIE_STRING, sessionContext.getCookieID());
+        }
+        messageContext.getOperationContext().setParent(serviceContext);
+    }
+
+    /**
+     * Registers a OperationContext with a given message ID.
+     *
+     * @param messageID
+     * @param mepContext
+     */
+    public synchronized void registerOperationContext(String messageID,
+                                                      OperationContext mepContext) {
+        mepContext.setKey(messageID);
+        this.operationContextMap.put(messageID, mepContext);
+    }
+
+    public synchronized void registerServiceGroupContext(ServiceGroupContext serviceGroupContext) {
+        String id = serviceGroupContext.getId();
+
+        if (serviceGroupContextMap.get(id) == null) {
+            serviceGroupContextMap.put(id, serviceGroupContext);
+            serviceGroupContext.touch();
+            serviceGroupContext.setParent(this);
+        }
+
+        // this is the best time to clean up the SGCtxts since are not being used anymore
+        cleanupServiceGroupContexts();
+    }
+
+    public synchronized void addServiceGroupContextintoApplicatoionScopeTable(
+            ServiceGroupContext serviceGroupContext) {
+        applicationSessionServiceGroupContextTable.put(
+                serviceGroupContext.getDescription().getServiceGroupName(), serviceGroupContext);
+    }
+
+    public AxisConfiguration getAxisConfiguration() {
+        return axisConfiguration;
+    }
+
+    /**
+     * Gets a OperationContext given a Message ID.
+     *
+     * @return Returns OperationContext <code>OperationContext<code>
+     */
+    public OperationContext getOperationContext(String id) {
+        return (OperationContext) this.operationContextMap.get(id);
+    }
+
+    public Map getOperationContextMap() {
+        return this.operationContextMap;
+    }
+
+    /**
+     * Allows users to resolve the path relative to the root diretory.
+     *
+     * @param path
+     */
+    public File getRealPath(String path) {
+        URL repository = axisConfiguration.getRepository();
+        if (repository != null) {
+            File repo = new File(repository.getFile());
+            return new File(repo, path);
+        }
+        return null;
+    }
+
+    public synchronized ServiceGroupContext getServiceGroupContext(String serviceGroupContextId,
+                                                                   MessageContext msgContext) {
+        ServiceGroupContext serviceGroupContext = null;
+        if (serviceGroupContextMap != null) {
+            serviceGroupContext = (ServiceGroupContext) serviceGroupContextMap.get(serviceGroupContextId);
+            if (serviceGroupContext != null) {
+                serviceGroupContext.touch();
+            }
+        }
+        if (serviceGroupContext == null
+                && msgContext != null
+                && msgContext.getSessionContext() != null) {
+            serviceGroupContext = msgContext.getSessionContext().getServiceGroupContext(
+                    serviceGroupContextId);
+        }
+        if (serviceGroupContext == null && msgContext != null) {
+            AxisService axisService = msgContext.getAxisService();
+            if (axisService != null) {
+                AxisServiceGroup asg = (AxisServiceGroup) axisService.getParent();
+                if (asg != null) {
+                    serviceGroupContext = (ServiceGroupContext)
+                            applicationSessionServiceGroupContextTable.get(asg.getServiceGroupName());
+                }
+            }
+
+        }
+
+        return serviceGroupContext;
+    }
+
+    /**
+     * Gets all service groups in the system.
+     *
+     * @return Returns hashmap of ServiceGroupContexts.
+     */
+    public Hashtable getServiceGroupContexts() {
+        return serviceGroupContextMap;
+    }
+
+    /**
+     * Returns the thread factory.
+     *
+     * @return Returns configuration specific thread pool
+     */
+    public ThreadFactory getThreadPool() {
+        if (threadPool == null) {
+            threadPool = new ThreadPool();
+        }
+
+        return threadPool;
+    }
+
+    private boolean isNull(String string) {
+        return "".equals(string) || (string == null);
+    }
+
+    /**
+     * @param configuration
+     */
+    public void setAxisConfiguration(AxisConfiguration configuration) {
+        axisConfiguration = configuration;
+    }
+
+    /**
+     * Sets the thread factory.
+     *
+     * @param pool
+     */
+    public void setThreadPool(ThreadFactory pool) throws AxisFault {
+        if (threadPool == null) {
+            threadPool = pool;
+        } else {
+            throw new AxisFault(Messages.getMessage("threadpoolset"));
+        }
+    }
+
+    private void cleanupServiceGroupContexts() {
+        synchronized (serviceGroupContextMap) {
+            long currentTime = new Date().getTime();
+            Iterator sgCtxtMapKeyIter = serviceGroupContextMap.keySet().iterator();
+            while (sgCtxtMapKeyIter.hasNext()) {
+                String sgCtxtId = (String) sgCtxtMapKeyIter.next();
+                ServiceGroupContext serviceGroupContext =
+                        (ServiceGroupContext) serviceGroupContextMap.get(sgCtxtId);
+                if ((currentTime - serviceGroupContext.getLastTouchedTime()) >
+                        getServiceGroupContextTimoutInterval()) {
+                    sgCtxtMapKeyIter.remove();
+                    cleanupServiceContexts(serviceGroupContext);
+                }
+            }
+        }
+    }
+
+    public ListenerManager getListenerManager() {
+        return listenerManager;
+    }
+
+    public void setTransportManager(ListenerManager listenerManager) {
+        this.listenerManager = listenerManager;
+    }
+
+    private void cleanupServiceContexts(ServiceGroupContext serviceGroupContext) {
+        Iterator serviceContecxtes = serviceGroupContext.getServiceContexts();
+        while (serviceContecxtes.hasNext()) {
+            ServiceContext serviceContext = (ServiceContext) serviceContecxtes.next();
+            try {
+                DependencyManager.destroyServiceObject(serviceContext);
+            } catch (AxisFault axisFault) {
+                log.info(axisFault.getMessage());
+            }
+        }
+    }
+
+    public void cleanupContexts() {
+        if (applicationSessionServiceGroupContextTable.size() > 0) {
+            Iterator applicationScopeSgs =
+                    applicationSessionServiceGroupContextTable.values().iterator();
+            while (applicationScopeSgs.hasNext()) {
+                ServiceGroupContext serviceGroupContext =
+                        (ServiceGroupContext) applicationScopeSgs.next();
+                cleanupServiceContexts(serviceGroupContext);
+            }
+        }
+        if (serviceGroupContextMap.size() > 0) {
+            Iterator sopaSessionSgs = serviceGroupContextMap.values().iterator();
+            while (sopaSessionSgs.hasNext()) {
+                ServiceGroupContext serviceGroupContext =
+                        (ServiceGroupContext) sopaSessionSgs.next();
+                cleanupServiceContexts(serviceGroupContext);
+            }
+        }
+    }
+
+    public String getServiceContextPath() {
+        String ctxRoot = getContextRoot().trim();
+        String path = "/";
+        if (!ctxRoot.equals("/")) {
+            path = ctxRoot + "/";
+        }
+        if (servicePath == null || servicePath.trim().length() == 0) {
+            throw new IllegalArgumentException("service path cannot be null or empty");
+        } else {
+            path += servicePath.trim();
+        }
+        return path;
+    }
+
+    public String getRESTContextPath() {
+        String ctxRoot = getContextRoot().trim();
+        String path = "/";
+        if (!ctxRoot.equals("/")) {
+            path = ctxRoot + "/";
+        }
+        if (restPath == null || restPath.trim().length() == 0) {
+            throw new IllegalArgumentException("service path cannot be null or empty");
+        } else {
+            path += restPath.trim();
+        }
+        return path;
+    }
+
+    public String getServicePath() {
+        if (servicePath == null || servicePath.trim().length() == 0) {
+            throw new IllegalArgumentException("service path cannot be null or empty");
+        }
+        return servicePath.trim();
+    }
+
+    public String getRESTPath() {
+        if (restPath == null || restPath.trim().length() == 0) {
+            throw new IllegalArgumentException("REST path cannot be null or empty");
+        }
+        return restPath.trim();
+    }
+
+    public String getContextRoot() {
+        if (contextRoot == null || contextRoot.trim().length() == 0) {
+            throw new IllegalArgumentException("context root cannot be null or empty");
+        }
+        return this.contextRoot.trim();
+    }
+
+    public void setServicePath(String servicePath) {
+        this.servicePath = servicePath;
+    }
+
+    public void setRESTPath(String restPath) {
+        this.restPath = restPath;
+    }
+
+    public void setContextRoot(String contextRoot) {
+        this.contextRoot = contextRoot;
+    }
+
+    /**
+     * This will be used to fetch the serviceGroupContextTimoutInterval from any place available.
+     */
+    public long getServiceGroupContextTimoutInterval() {
+        Integer serviceGroupContextTimoutIntervalParam =
+                (Integer) getProperty(Constants.Configuration.CONFIG_CONTEXT_TIMOUT_INTERVAL);
+        if (serviceGroupContextTimoutIntervalParam != null) {
+            serviceGroupContextTimoutInterval = serviceGroupContextTimoutIntervalParam.intValue();
+        }
+        return serviceGroupContextTimoutInterval;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
new file mode 100644
index 0000000..9ffc929
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
@@ -0,0 +1,261 @@
+/*
+* Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.deployment.DeploymentEngine;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.FileSystemConfigurator;
+import org.apache.axis2.deployment.URLBasedAxisConfigurator;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisConfigurator;
+import org.apache.axis2.engine.DependencyManager;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.modules.Module;
+import org.apache.axis2.transport.TransportSender;
+import org.apache.axis2.util.SessionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.net.URL;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class ConfigurationContextFactory {
+
+    protected static final Log log = LogFactory.getLog(ConfigurationContextFactory.class);
+
+    /**
+     * Creates a AxisConfiguration depending on the user requirement.
+     * First creates an AxisConfigurator object with appropriate parameters.
+     * Depending on the implementation getAxisConfiguration(), gets
+     * the AxisConfiguration and uses it to create the ConfigurationContext.
+     *
+     * @param axisConfigurator
+     * @return Returns ConfigurationContext.
+     * @throws AxisFault
+     */
+    public static ConfigurationContext createConfigurationContext(
+            AxisConfigurator axisConfigurator) throws AxisFault {
+        AxisConfiguration axisConfig = axisConfigurator.getAxisConfiguration();
+        ConfigurationContext configContext = new ConfigurationContext(axisConfig);
+        if (axisConfigurator instanceof DeploymentEngine) {
+            ((DeploymentEngine) axisConfigurator).setConfigContext(configContext);
+        }
+        //To override context path
+        setContextPaths(axisConfig, configContext);
+        //To check whether transport level session management is require or not
+        configureTransportSessionManagement(axisConfig);
+        init(configContext);
+        axisConfigurator.engageGlobalModules();
+        axisConfigurator.loadServices();
+        addModuleService(configContext);
+        initApplicationScopeServices(configContext);
+        axisConfig.setStart(true);
+        return configContext;
+    }
+
+    private static void initApplicationScopeServices(ConfigurationContext configCtx) throws AxisFault {
+        Iterator serviceGroups = configCtx.getAxisConfiguration().getServiceGroups();
+        while (serviceGroups.hasNext()) {
+            AxisServiceGroup axisServiceGroup = (AxisServiceGroup) serviceGroups.next();
+            String maxScope = SessionUtils.calculateMaxScopeForServiceGroup(axisServiceGroup);
+            if (Constants.SCOPE_APPLICATION.equals(maxScope)) {
+                ServiceGroupContext serviceGroupContext = new ServiceGroupContext(configCtx, axisServiceGroup);
+                configCtx.addServiceGroupContextintoApplicatoionScopeTable(serviceGroupContext);
+                DependencyManager.initService(serviceGroupContext);
+            }
+        }
+    }
+
+    public static void addModuleService(ConfigurationContext configCtx) throws AxisFault {
+        AxisConfiguration axisConfig = configCtx.getAxisConfiguration();
+        HashMap modules = axisConfig.getModules();
+        if (modules != null && modules.size() > 0) {
+            Iterator mpduleItr = modules.values().iterator();
+            while (mpduleItr.hasNext()) {
+                AxisModule axisModule = (AxisModule) mpduleItr.next();
+                Utils.deployModuleServices(axisModule, configCtx);
+            }
+        }
+    }
+
+    private static void configureTransportSessionManagement(AxisConfiguration axisConfig) {
+        Parameter manageSession = axisConfig.getParameter(Constants.MANAGE_TRANSPORT_SESSION);
+        if (manageSession != null) {
+            String value = ((String) manageSession.getValue()).trim();
+            axisConfig.setManageTransportSession(Boolean.valueOf(value).booleanValue());
+        }
+    }
+
+    private static void setContextPaths(AxisConfiguration axisConfig,
+                                        ConfigurationContext configContext) {
+        // Checking for context path
+        Parameter contextPath = axisConfig.getParameter(Constants.PARAM_CONTEXT_ROOT);
+        if (contextPath != null) {
+            String cpath = ((String) contextPath.getValue()).trim();
+            if (cpath.length() > 0) {
+                configContext.setContextRoot(cpath);
+            }
+        }
+        Parameter servicePath = axisConfig.getParameter(Constants.PARAM_SERVICE_PATH);
+        if (servicePath != null) {
+            String spath = ((String) servicePath.getValue()).trim();
+            if (spath.length() > 0) {
+                configContext.setServicePath(spath);
+            }
+        }
+
+        Parameter restPathParam = axisConfig.getParameter(Constants.PARAM_REST_PATH);
+        if (restPathParam != null) {
+            String restPath = ((String) restPathParam.getValue()).trim();
+            if (restPath.length() > 0) {
+                configContext.setRESTPath(restPath);
+            }
+        }
+    }
+
+    /**
+     * To get a ConfigurationContext for  given data , and underline implementation
+     * is Axis2 default impl which is file system based deployment model to create
+     * an AxisConfiguration.
+     * <p/>
+     * Here either or both parameter can be null. So that boil down to following
+     * scenarios and it should note that parameter value should be full path ,
+     * you are not allowed to give one relative to other. And these two can be located
+     * in completely different locations.
+     * <ul>
+     * <li>If none of them are null , then AxisConfiguration will be based on the
+     * value of axis2xml , and the repository will be the value specified by the
+     * path parameter and there will not be any assumptions.</li>
+     * <li>If axis2xml is null , then the repository will be the value specfied by
+     * path parameter and AxisConfiguration will be created using default_axis2.xml</li>
+     * <li>If path parameter is null , then AxisConfiguration will be created using
+     * that axis2.xml. And after creating AxisConfiguration system will try to
+     * find user has specified repository parameter in axis2.xml
+     * (&lt;parameter name="repository"&gt;location of the repo&lt;/parameter&gt;) , if it
+     * find that then repository will be the value specified by that parameter.</li>
+     * <li>If both are null , then it is simple , AixsConfiguration will be created
+     * using default_axis2.xml and thats it.</li>
+     * </ul>
+     * <p/>
+     * Note : rather than passing any parameters you can give them as System
+     * properties. Simple you can add following system properties before
+     * you call this.
+     * <ul>
+     * <li>axis2.repo : same as path parameter</li>
+     * <li>axis2.xml  : same as axis2xml</li>
+     * </ul>
+     *
+     * @param path     : location of the repository
+     * @param axis2xml : location of the axis2.xml (configuration) , you can not give
+     *                 axis2xml relative to repository.
+     * @return Returns the built ConfigurationContext.
+     * @throws DeploymentException
+     */
+    public static ConfigurationContext createConfigurationContextFromFileSystem(
+            String path,
+            String axis2xml) throws AxisFault {
+        return createConfigurationContext(new FileSystemConfigurator(path, axis2xml));
+    }
+
+    public static ConfigurationContext createConfigurationContextFromURIs(
+            URL axis2xml, URL repositoy) throws AxisFault {
+        return createConfigurationContext(new URLBasedAxisConfigurator(axis2xml, repositoy));
+    }
+
+    /**
+     * Initializes modules and creates Transports.
+     */
+
+    private static void init(ConfigurationContext configContext) throws AxisFault {
+        try {
+            initModules(configContext);
+            initTransportSenders(configContext);
+        } catch (DeploymentException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    /**
+     * Initializes the modules. If the module needs to perform some recovery process
+     * it can do so in init and this is different from module.engage().
+     *
+     * @param context
+     * @throws DeploymentException
+     */
+    private static void initModules(ConfigurationContext context) throws DeploymentException {
+        try {
+            HashMap modules = context.getAxisConfiguration().getModules();
+            Collection col = modules.values();
+
+            for (Iterator iterator = col.iterator(); iterator.hasNext();) {
+                AxisModule axismodule = (AxisModule) iterator.next();
+                Module module = axismodule.getModule();
+
+                if (module != null) {
+                    module.init(context, axismodule);
+                }
+            }
+        } catch (AxisFault e) {
+            log.info(e.getMessage());
+        }
+    }
+
+    /**
+     * Initializes TransportSenders and TransportListeners with appropriate configuration information
+     *
+     * @param configContext
+     */
+    public static void initTransportSenders(ConfigurationContext configContext) {
+        AxisConfiguration axisConf = configContext.getAxisConfiguration();
+
+        // Initialize Transport Outs
+        HashMap transportOuts = axisConf.getTransportsOut();
+
+        Iterator values = transportOuts.values().iterator();
+
+        while (values.hasNext()) {
+            TransportOutDescription transportOut = (TransportOutDescription) values.next();
+            TransportSender sender = transportOut.getSender();
+
+            if (sender != null) {
+                try {
+                    sender.init(configContext, transportOut);
+                } catch (AxisFault axisFault) {
+                    log.info(Messages.getMessage("transportiniterror", transportOut.getName().getLocalPart()));
+                }
+            }
+        }
+    }
+
+    /**
+     * Gets the default configuration context by using the file system based AxisConfiguration.
+     *
+     * @return Returns ConfigurationContext.
+     */
+    public static ConfigurationContext createEmptyConfigurationContext() {
+        return new ConfigurationContext(new AxisConfiguration());
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/MessageContext.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/MessageContext.java
new file mode 100644
index 0000000..2f0c5c5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/MessageContext.java
@@ -0,0 +1,1091 @@
+/*
+ * Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPConstants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.RelatesTo;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.neethi.Policy;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * MessageContext holds service specific state information.
+ */
+public class MessageContext extends AbstractContext {
+
+    /**
+     * A place to store the current MessageContext
+     */
+    public static ThreadLocal currentMessageContext = new ThreadLocal();
+
+    public static MessageContext getCurrentMessageContext() {
+        return (MessageContext) currentMessageContext.get();
+    }
+
+    public static void setCurrentMessageContext(MessageContext ctx) {
+        currentMessageContext.set(ctx);
+    }
+
+    protected Options options;
+
+    public final static int IN_FLOW = 1;
+    public final static int IN_FAULT_FLOW = 3;
+
+    public final static int OUT_FLOW = 2;
+    public final static int OUT_FAULT_FLOW = 4;
+
+    public static final String REMOTE_ADDR = "REMOTE_ADDR";
+
+    public static final String TRANSPORT_HEADERS = "TRANSPORT_HEADERS";
+
+    public Attachments attachments = new Attachments();
+
+    /**
+     * Field TRANSPORT_OUT
+     */
+    public static final String TRANSPORT_OUT = "TRANSPORT_OUT";
+
+    /**
+     * Field TRANSPORT_IN
+     */
+    public static final String TRANSPORT_IN = "TRANSPORT_IN";
+
+    /**
+     * Field CHARACTER_SET_ENCODING
+     */
+    public static final String CHARACTER_SET_ENCODING = "CHARACTER_SET_ENCODING";
+
+    /**
+     * Field UTF_8. This is the 'utf-8' value for CHARACTER_SET_ENCODING
+     * property.
+     */
+    public static final String UTF_8 = "UTF-8";
+
+    /**
+     * Field UTF_16. This is the 'utf-16' value for CHARACTER_SET_ENCODING
+     * property.
+     */
+    public static final String UTF_16 = "utf-16";
+
+    /**
+     * Field TRANSPORT_SUCCEED
+     */
+    public static final String TRANSPORT_SUCCEED = "TRANSPORT_SUCCEED";
+
+    /**
+     * Field DEFAULT_CHAR_SET_ENCODING. This is the default value for
+     * CHARACTER_SET_ENCODING property.
+     */
+    public static final String DEFAULT_CHAR_SET_ENCODING = UTF_8;
+
+    // to keep a ref to figure out which path your are in the execution (send or
+    // receive)
+    public int FLOW = IN_FLOW;
+
+    /**
+     * To invoke fireAndforget method we have to hand over transport sending logic to a thread
+     * other wise user has to wait till it get transport response (in the case of HTTP its HTTP
+     * 202)
+     */
+    public static final String TRANSPORT_NON_BLOCKING = "transportNonBlocking";
+
+    /**
+     * Field processingFault
+     */
+    private boolean processingFault;
+
+    private boolean paused;
+
+    public boolean outputWritten;
+
+    /**
+     * Field newThreadRequired
+     */
+    private boolean newThreadRequired;
+
+    private boolean isSOAP11 = true;
+
+    /**
+     * The chain of Handlers/Phases for processing this message
+     */
+    private ArrayList executionChain = new ArrayList();
+
+    // Are we doing REST now?
+    private boolean doingREST;
+
+    // Are we doing MTOM now?
+    private boolean doingMTOM;
+
+    // Are we doing SwA now?
+    private boolean doingSwA;
+
+    private transient AxisMessage axisMessage;
+
+    private transient AxisOperation axisOperation;
+
+    private transient AxisService axisService;
+
+    private transient AxisServiceGroup axisServiceGroup;
+
+    private ConfigurationContext configurationContext;
+
+    /**
+     * Index into the execution chain of the currently executing handler
+     */
+    private int currentHandlerIndex;
+
+    /**
+     * Index into the current Phase of the currently executing handler (if any)
+     */
+    private int currentPhaseIndex;
+
+    /**
+     * Field service
+     */
+
+    /**
+     * Field envelope
+     */
+    private SOAPEnvelope envelope;
+
+    private OperationContext operationContext;
+
+    /**
+     * Field responseWritten
+     */
+    private boolean responseWritten;
+
+    /**
+     * Field serverSide
+     */
+    private boolean serverSide;
+
+    private ServiceContext serviceContext;
+
+    private String serviceContextID;
+
+    private ServiceGroupContext serviceGroupContext;
+
+    /**
+     * This will hold a key to retrieve the correct ServiceGroupContext.
+     */
+    private String serviceGroupContextId;
+
+    /**
+     * Field sessionContext
+     */
+    private SessionContext sessionContext;
+
+    private transient TransportOutDescription transportOut;
+    private transient TransportInDescription transportIn;
+
+    //The value will be set by the transport receiver and there will be validation for the transport
+    //at the dispatch phase (its post condition)
+    private String incomingTransportName;
+
+    public MessageContext() {
+        super(null);
+        options = new Options();
+    }
+
+    /**
+     * Pause the execution of the current handler chain
+     */
+    public void pause() {
+        paused = true;
+    }
+
+    public AxisOperation getAxisOperation() {
+        return axisOperation;
+    }
+
+    public AxisService getAxisService() {
+        return axisService;
+    }
+
+    public AxisServiceGroup getAxisServiceGroup() {
+        return axisServiceGroup;
+    }
+
+    public ConfigurationContext getConfigurationContext() {
+        return configurationContext;
+    }
+
+    public int getCurrentHandlerIndex() {
+        return currentHandlerIndex;
+    }
+
+    public int getCurrentPhaseIndex() {
+        return currentPhaseIndex;
+    }
+
+    /**
+     * @return Returns SOAPEnvelope.
+     */
+    public SOAPEnvelope getEnvelope() {
+        return envelope;
+    }
+
+    public ArrayList getExecutionChain() {
+        return executionChain;
+    }
+
+    /**
+     * @return Returns EndpointReference.
+     */
+    public EndpointReference getFaultTo() {
+        return options.getFaultTo();
+    }
+
+    /**
+     * @return Returns EndpointReference.
+     */
+    public EndpointReference getFrom() {
+        return options.getFrom();
+    }
+
+    /**
+     * @return Returns message id.
+     */
+    public String getMessageID() {
+        return options.getMessageId();
+    }
+
+    /**
+     * Retrieves both module specific configuration parameters as well as other
+     * parameters. The order of search is as follows:
+     * <ol>
+     * <li> Search in module configurations inside corresponding operation
+     * description if its there </li>
+     * <li> Search in corresponding operation if its there </li>
+     * <li> Search in module configurations inside corresponding service
+     * description if its there </li>
+     * <li> Next search in Corresponding Service description if its there </li>
+     * <li> Next search in module configurations inside axisConfiguration </li>
+     * <li> Search in AxisConfiguration for parameters </li>
+     * <li> Next get the corresponding module and search for the parameters
+     * </li>
+     * <li> Search in HandlerDescription for the parameter </li>
+     * </ol>
+     * <p/> and the way of specifying module configuration is as follows
+     * <moduleConfig name="addressing"> <parameter name="addressingPara"
+     * locked="false">N/A</parameter> </moduleConfig>
+     *
+     * @param key        :
+     *                   Parameter Name
+     * @param moduleName :
+     *                   Name of the module
+     * @param handler    <code>HandlerDescription</code>
+     * @return Parameter <code>Parameter</code>
+     */
+    public Parameter getModuleParameter(String key, String moduleName,
+                                        HandlerDescription handler) {
+        Parameter param;
+        ModuleConfiguration moduleConfig;
+
+        AxisOperation opDesc = getAxisOperation();
+
+        if (opDesc != null) {
+
+            moduleConfig = opDesc.getModuleConfig(new QName(moduleName));
+
+            if (moduleConfig != null) {
+                param = moduleConfig.getParameter(key);
+
+                if (param != null) {
+                    return param;
+                } else {
+                    param = opDesc.getParameter(key);
+
+                    if (param != null) {
+                        return param;
+                    }
+                }
+            }
+        }
+
+        AxisService axisService = getAxisService();
+
+        if (axisService != null) {
+
+            moduleConfig = axisService.getModuleConfig(new QName(moduleName));
+
+            if (moduleConfig != null) {
+                param = moduleConfig.getParameter(key);
+
+                if (param != null) {
+                    return param;
+                } else {
+                    param = axisService.getParameter(key);
+
+                    if (param != null) {
+                        return param;
+                    }
+                }
+            }
+        }
+
+        AxisServiceGroup axisServiceDesc = getAxisServiceGroup();
+
+        if (axisServiceDesc != null) {
+
+            moduleConfig = axisServiceDesc
+                    .getModuleConfig(new QName(moduleName));
+
+            if (moduleConfig != null) {
+                param = moduleConfig.getParameter(key);
+
+                if (param != null) {
+                    return param;
+                } else {
+                    param = axisServiceDesc.getParameter(key);
+
+                    if (param != null) {
+                        return param;
+                    }
+                }
+            }
+        }
+
+        AxisConfiguration baseConfig = configurationContext
+                .getAxisConfiguration();
+
+        moduleConfig = baseConfig.getModuleConfig(new QName(moduleName));
+
+        if (moduleConfig != null) {
+            param = moduleConfig.getParameter(key);
+
+            if (param != null) {
+                return param;
+            } else {
+                param = baseConfig.getParameter(key);
+
+                if (param != null) {
+                    return param;
+                }
+            }
+        }
+
+        AxisModule module = baseConfig.getModule(new QName(moduleName));
+
+        if (module != null) {
+            param = module.getParameter(key);
+
+            if (param != null) {
+                return param;
+            }
+        }
+
+        param = handler.getParameter(key);
+
+        return param;
+    }
+
+    public OperationContext getOperationContext() {
+        return operationContext;
+    }
+
+    /**
+     * Retrieves configuration descriptor parameters at any level. The order of
+     * search is as follows:
+     * <ol>
+     * <li> Search in operation description if it exists </li>
+     * <li> If parameter is not found or if operationContext is null, search in
+     * AxisService </li>
+     * <li> If parameter is not found or if axisService is null, search in
+     * AxisConfiguration </li>
+     * </ol>
+     *
+     * @param key
+     * @return Parameter <code>Parameter</code>
+     */
+    public Parameter getParameter(String key) {
+        if (axisOperation != null) {
+            return axisOperation.getParameter(key);
+        }
+
+        if (axisService != null) {
+            return axisService.getParameter(key);
+        }
+
+        if (axisServiceGroup != null) {
+            return axisServiceGroup.getParameter(key);
+        }
+
+        if (configurationContext != null) {
+            AxisConfiguration baseConfig = configurationContext
+                    .getAxisConfiguration();
+            return baseConfig.getParameter(key);
+        }
+        return null;
+    }
+
+    /**
+     * Set a property for this message context.
+     *
+     * @param name  name of the property
+     * @param value the value to set
+     */
+    public void setProperty(String name, Object value) {
+        // we override this method here to make sure the properties are set on
+        // options rather than in the inherited property bag.
+        options.setProperty(name, value);
+    }
+
+    /**
+     * Retrieves a property value. The order of search is as follows: search in
+     * my own options and then look in my context hierarchy. Since its possible
+     * that the entire hierarchy is not present, I will start at whatever level
+     * has been set and start there.
+     *
+     * @param name name of the property to search for
+     * @return the value of the property, or null if the property is not found
+     */
+    public Object getProperty(String name) {
+        // search in my own options
+        Object obj = options.getProperty(name);
+        if (obj != null) {
+            return obj;
+        }
+
+        // My own context hierarchy may not all be present. So look for whatever
+        // nearest level is present and ask that to find the property.
+        if (operationContext != null) {
+            return operationContext.getProperty(name);
+        }
+        if (serviceContext != null) {
+            return serviceContext.getProperty(name);
+        }
+        if (serviceGroupContext != null) {
+            return serviceGroupContext.getProperty(name);
+        }
+        if (configurationContext != null) {
+            return configurationContext.getProperty(name);
+        }
+
+        // tough
+        return null;
+    }
+
+    /**
+     * Retrieves all property values. The order of search is as follows: search in
+     * my own options and then look in my context hierarchy. Since its possible
+     * that the entire hierarchy is not present, it will start at whatever level
+     * has been set and start there.
+     * The returned map is unmodifiable, so any changes to the properties have
+     * to be done by calling {@link #setProperty(String, Object)}. In addition,
+     * any changes to the properties are not reflected on this map.
+     *
+     * @return An unmodifiable map containing the combination of all available
+     *         properties or an empty map.
+     */
+    public Map getProperties() {
+        final Map resultMap = new HashMap();
+
+        // My own context hierarchy may not all be present. So look for whatever
+        // nearest level is present and add the properties
+        // We have to access the contexts in reverse order, in order to allow
+        // a nearer context to overwrite values from a more distant context
+        if (configurationContext != null) {
+            resultMap.putAll(configurationContext.getProperties());
+        }
+        if (serviceGroupContext != null) {
+            resultMap.putAll(serviceGroupContext.getProperties());
+        }
+        if (serviceContext != null) {
+            resultMap.putAll(serviceContext.getProperties());
+        }
+        if (operationContext != null) {
+            resultMap.putAll(operationContext.getProperties());
+        }
+        // and now add options
+        resultMap.putAll(options.getProperties());
+        return Collections.unmodifiableMap(resultMap);
+    }
+
+    /**
+     * @return Returns RelatesTo array.
+     */
+    public RelatesTo[] getRelationships() {
+        return options.getRelationships();
+    }
+
+    /**
+     * @return Returns RelatesTo.
+     */
+    public RelatesTo getRelatesTo(String type) {
+        return options.getRelatesTo(type);
+    }
+
+    /**
+     * @return Returns RelatesTo.
+     */
+    public RelatesTo getRelatesTo() {
+        return options.getRelatesTo();
+    }
+
+    /**
+     * @return Returns EndpointReference.
+     */
+    public EndpointReference getReplyTo() {
+        return options.getReplyTo();
+    }
+
+    /**
+     * @return Returns ServiceContext.
+     */
+    public ServiceContext getServiceContext() {
+        return serviceContext;
+    }
+
+    /**
+     * @return Returns the serviceContextID.
+     */
+    public String getServiceContextID() {
+        return serviceContextID;
+    }
+
+    public ServiceGroupContext getServiceGroupContext() {
+        return serviceGroupContext;
+    }
+
+    public String getServiceGroupContextId() {
+        return serviceGroupContextId;
+    }
+
+    /**
+     * @return Returns SessionContext.
+     */
+    public SessionContext getSessionContext() {
+        return sessionContext;
+    }
+
+    public void setSessionContext(SessionContext sessionContext) {
+        this.sessionContext = sessionContext;
+    }
+
+
+    /**
+     * @return Returns soap action.
+     */
+    public String getSoapAction() {
+        return options.getAction();
+    }
+
+    /**
+     * @return Returns EndpointReference.
+     */
+    public EndpointReference getTo() {
+        return options.getTo();
+    }
+
+    /**
+     * @return Returns TransportInDescription.
+     */
+    public TransportInDescription getTransportIn() {
+        return transportIn;
+    }
+
+    /**
+     * @return Returns TransportOutDescription.
+     */
+    public TransportOutDescription getTransportOut() {
+        return transportOut;
+    }
+
+    public String getWSAAction() {
+        return options.getAction();
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isDoingMTOM() {
+        return doingMTOM;
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isDoingREST() {
+        return doingREST;
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isDoingSwA() {
+        return doingSwA;
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isNewThreadRequired() {
+        return newThreadRequired;
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isOutputWritten() {
+        return outputWritten;
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isPaused() {
+        return paused;
+    }
+
+    public void setPaused(boolean paused) {
+        this.paused = paused;
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isProcessingFault() {
+        return processingFault;
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isResponseWritten() {
+        return responseWritten;
+    }
+
+    public boolean isSOAP11() {
+        return isSOAP11;
+    }
+
+    /**
+     * @return Returns boolean.
+     */
+    public boolean isServerSide() {
+        return serverSide;
+    }
+
+    public AxisMessage getAxisMessage() {
+        return axisMessage;
+    }
+
+    public void setAxisMessage(AxisMessage axisMessage) {
+        this.axisMessage = axisMessage;
+    }
+
+    public void setAxisOperation(AxisOperation axisOperation) {
+        this.axisOperation = axisOperation;
+    }
+
+    public void setAxisService(AxisService axisService) {
+        this.axisService = axisService;
+        this.axisServiceGroup = (AxisServiceGroup) this.axisService.getParent();
+    }
+
+    public void setAxisServiceGroup(AxisServiceGroup axisServiceGroup) {
+        if (axisServiceGroup != null) {
+            this.axisServiceGroup = axisServiceGroup;
+        }
+    }
+
+    /**
+     * @param context
+     */
+    public void setConfigurationContext(ConfigurationContext context) {
+        configurationContext = context;
+    }
+
+    public void setCurrentHandlerIndex(int currentHandlerIndex) {
+        this.currentHandlerIndex = currentHandlerIndex;
+    }
+
+    public void setCurrentPhaseIndex(int currentPhaseIndex) {
+        this.currentPhaseIndex = currentPhaseIndex;
+    }
+
+    /**
+     * @param b
+     */
+    public void setDoingMTOM(boolean b) {
+        doingMTOM = b;
+    }
+
+    /**
+     * @param b
+     */
+    public void setDoingREST(boolean b) {
+        doingREST = b;
+    }
+
+    /**
+     * @param b
+     */
+    public void setDoingSwA(boolean b) {
+        doingSwA = b;
+    }
+
+    /**
+     * @param envelope
+     */
+    public void setEnvelope(SOAPEnvelope envelope) throws AxisFault {
+        this.envelope = envelope;
+
+        String soapNamespaceURI = envelope.getNamespace().getNamespaceURI();
+
+        if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI
+                .equals(soapNamespaceURI)) {
+            isSOAP11 = false;
+        } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI
+                .equals(soapNamespaceURI)) {
+            isSOAP11 = true;
+        } else {
+            throw new AxisFault(
+                    "Unknown SOAP Version. Current Axis handles only SOAP 1.1 and SOAP 1.2 messages");
+        }
+    }
+
+    /**
+     * Set the execution chain of Handler in this MessageContext. Doing this
+     * causes the current handler/phase indexes to reset to 0, since we have new
+     * Handlers to execute (this usually only happens at initialization and when
+     * a fault occurs).
+     *
+     * @param executionChain
+     */
+    public void setExecutionChain(ArrayList executionChain) {
+        this.executionChain = executionChain;
+        currentHandlerIndex = -1;
+        currentPhaseIndex = 0;
+    }
+
+    /**
+     * @param reference
+     */
+    public void setFaultTo(EndpointReference reference) {
+        options.setFaultTo(reference);
+    }
+
+    /**
+     * @param reference
+     */
+    public void setFrom(EndpointReference reference) {
+        options.setFrom(reference);
+    }
+
+    /**
+     * @param messageId
+     */
+    public void setMessageID(String messageId) {
+        options.setMessageId(messageId);
+    }
+
+    /**
+     * @param b
+     */
+    public void setNewThreadRequired(boolean b) {
+        newThreadRequired = b;
+    }
+
+    /**
+     * @param context
+     */
+    public void setOperationContext(OperationContext context) {
+        operationContext = context;
+
+        if ((serviceContext != null) && (operationContext.getParent() == null)) {
+            operationContext.setParent(serviceContext);
+        }
+
+        this.setParent(operationContext);
+
+        if (operationContext != null) {
+            this.setAxisOperation(operationContext.getAxisOperation());
+        }
+    }
+
+    /**
+     * @param b
+     */
+    public void setOutputWritten(boolean b) {
+        outputWritten = b;
+    }
+
+    /**
+     * @param b
+     */
+    public void setProcessingFault(boolean b) {
+        processingFault = b;
+    }
+
+    /**
+     * @param reference
+     */
+    public void addRelatesTo(RelatesTo reference) {
+        options.addRelatesTo(reference);
+    }
+
+    /**
+     * @param referance
+     */
+    public void setReplyTo(EndpointReference referance) {
+        options.setReplyTo(referance);
+    }
+
+    /**
+     * @param b
+     */
+    public void setResponseWritten(boolean b) {
+        responseWritten = b;
+    }
+
+    /**
+     * @param b
+     */
+    public void setServerSide(boolean b) {
+        serverSide = b;
+    }
+
+    /**
+     * @param context
+     */
+    public void setServiceContext(ServiceContext context) {
+        serviceContext = context;
+        if ((operationContext != null)
+                && (operationContext.getParent() != null)) {
+            operationContext.setParent(context);
+        }
+        // setting configcontext using configuration context in service context
+        if (configurationContext == null) {
+            // setting configcontext
+            configurationContext = context.getConfigurationContext();
+        }
+        if (serviceGroupContext == null) {
+            // setting service group context
+            serviceGroupContext = context.getServiceGroupContext();
+        }
+        this.setAxisService(context.getAxisService());
+    }
+
+    /**
+     * Sets the service context id.
+     *
+     * @param serviceContextID
+     */
+    public void setServiceContextID(String serviceContextID) {
+        this.serviceContextID = serviceContextID;
+    }
+
+    public void setServiceGroupContext(ServiceGroupContext serviceGroupContext) {
+        this.serviceGroupContext = serviceGroupContext;
+        this.axisServiceGroup = serviceGroupContext.getDescription();
+    }
+
+    public void setServiceGroupContextId(String serviceGroupContextId) {
+        this.serviceGroupContextId = serviceGroupContextId;
+    }
+
+    /**
+     * @param soapAction
+     */
+    public void setSoapAction(String soapAction) {
+        options.setAction(soapAction);
+    }
+
+    /**
+     * @param referance
+     */
+    public void setTo(EndpointReference referance) {
+        options.setTo(referance);
+    }
+
+    /**
+     * @param in
+     */
+    public void setTransportIn(TransportInDescription in) {
+        this.transportIn = in;
+    }
+
+    /**
+     * @param out
+     */
+    public void setTransportOut(TransportOutDescription out) {
+        transportOut = out;
+    }
+
+    /**
+     * Method getExecutionChain
+     */
+    public void setWSAAction(String actionURI) {
+        options.setAction(actionURI);
+    }
+
+    public void setWSAMessageId(String messageID) {
+        options.setMessageId(messageID);
+    }
+
+    // to get the flow inwhich the execution chain below
+    public int getFLOW() {
+        return FLOW;
+    }
+
+    public void setFLOW(int FLOW) {
+        this.FLOW = FLOW;
+    }
+
+    public Options getOptions() {
+        return options;
+    }
+
+    /**
+     * Set the options for myself. I make the given options my own options'
+     * parent so that that becomes the default. That allows the user to override
+     * specific options on a given message context and not affect the overall
+     * options.
+     *
+     * @param options the options to set
+     */
+    public void setOptions(Options options) {
+        this.options.setParent(options);
+    }
+
+    public String getIncomingTransportName() {
+        return incomingTransportName;
+    }
+
+    public void setIncomingTransportName(String incomingTransportName) {
+        this.incomingTransportName = incomingTransportName;
+    }
+
+    public void setRelationships(RelatesTo[] list) {
+        options.setRelationships(list);
+    }
+
+
+    public Policy getEffectivePolicy() {
+        if (axisMessage != null) {
+            return axisMessage.getPolicyInclude().getEffectivePolicy();
+        }
+        if (axisOperation != null) {
+            return axisOperation.getPolicyInclude().getEffectivePolicy();
+        }
+        if (axisService != null) {
+            return axisService.getPolicyInclude().getEffectivePolicy();
+        }
+        return configurationContext.getAxisConfiguration().getPolicyInclude().getEffectivePolicy();
+    }
+
+
+    public boolean isEngaged(QName moduleName) {
+        boolean enegage;
+        if (configurationContext != null) {
+            AxisConfiguration axisConfig = configurationContext.getAxisConfiguration();
+            AxisModule module = axisConfig.getModule(moduleName);
+            if (module == null) {
+                return false;
+            }
+            enegage = axisConfig.isEngaged(moduleName);
+            if (enegage) {
+                return true;
+            }
+            if (axisServiceGroup != null) {
+                enegage = axisServiceGroup.isEngaged(moduleName);
+                if (enegage) {
+                    return true;
+                }
+            }
+            if (axisService != null) {
+                enegage = axisService.isEngaged(moduleName);
+                if (enegage) {
+                    return true;
+                }
+            }
+            if (axisOperation != null) {
+                enegage = axisOperation.isEngaged(module.getName());
+                if (enegage) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Gets the first child of the envelope, check if it is a soap:Body, which means there is no header.
+     * We do this basically to make sure we don't parse and build the om tree of the whole envelope
+     * looking for the soap header. If this method returns true, there still is no guarantee that there is
+     * a soap:Header present, use getHeader() and also check for null on getHeader() to be absolutely sure.
+     *
+     * @return boolean
+     */
+    public boolean isHeaderPresent() {
+        OMElement node = this.envelope.getFirstElement();
+        if (node == null) {
+            return false;
+        } else if (node.getQName().getLocalPart().equals(SOAPConstants.BODY_LOCAL_NAME)) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Setting of the attachments map should be performed at the receipt of a
+     * message only. This method is only meant to be used by the Axis2
+     * internals.
+     *
+     * @param attachments
+     */
+    public void setAttachmentMap(Attachments attachments) {
+        this.attachments = attachments;
+    }
+
+    public Attachments getAttachmentMap() {
+        return attachments;
+    }
+
+    public void addAttachment(String contentID, DataHandler dataHandler) {
+        attachments.addDataHandler(contentID, dataHandler);
+    }
+
+    public String addAttachment(DataHandler dataHandler) {
+        String contentID = UUIDGenerator.getUUID();
+        addAttachment(contentID, dataHandler);
+        return contentID;
+    }
+
+    public DataHandler getAttachment(String contentID) {
+        return attachments.getDataHandler(contentID);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/MessageContextConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/MessageContextConstants.java
new file mode 100644
index 0000000..c3a28c5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/MessageContextConstants.java
@@ -0,0 +1,30 @@
+package org.apache.axis2.context;

+

+/*

+ * 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.

+ */

+

+public interface MessageContextConstants {

+

+    /** @deprecated please use org.apache.axis2.Constants.Configuration.TRANSPORT_URL **/

+    public static final String TRANSPORT_URL = "TransportURL";

+

+    

+    /** @deprecated please use org.apache.axis2.transport.http.HTTPConstants.CHUNKED **/

+    public static final String CHUNKED="__CHUNKED__";

+

+    /** @deprecated please use org.apache.axis2.transport.http.HTTPConstants.HTTP_PROTOCOL_VERSION **/

+    public static final String HTTP_PROTOCOL_VERSION = "__HTTP_PROTOCOL_VERSION__";

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/OperationContext.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/OperationContext.java
new file mode 100644
index 0000000..491e5f4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/OperationContext.java
@@ -0,0 +1,172 @@
+/*
+* Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisOperation;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * An OperationContext represents a running "instance" of an operation, which is
+ * represented by an AxisOperation object. This concept is needed to allow
+ * messages to be grouped into operations as in WSDL 2.0-speak operations are
+ * essentially arbitrary message exchange patterns. So as messages are being
+ * exchanged the OperationContext remembers the state of where in the message
+ * exchange pattern it is in.
+ * <p/>
+ * OperationContextFactory factory. The base implementation of OperationContext
+ * supports MEPs which have one input message and/or one output message. That
+ * is, it supports the all the MEPs that are in the WSDL 2.0 specification. In
+ * order to support another MEP one must extend this class and register its
+ * creation in the OperationContexFactory.
+ */
+public class OperationContext extends AbstractContext {
+    private boolean isComplete;
+
+    //The key value of the operationContextMap;
+    private String key;
+
+    // the AxisOperation of which this is a running instance. The MEP of this
+    // AxisOperation must be one of the 8 predefined ones in WSDL 2.0.
+    private transient AxisOperation axisOperation;
+    private HashMap messageContexts;
+
+    // this is the global MessageID -> OperationContext map which is stored in
+    // the EngineContext. We're caching it here for faster access.
+    private Map operationContextMap;
+
+    public OperationContext(AxisOperation axisOperation) {
+        super(null);
+        this.messageContexts = new HashMap();
+        this.axisOperation = axisOperation;
+    }
+
+    /**
+     * Constructs a new OperationContext.
+     *
+     * @param axisOperation  the AxisOperation whose running instances' state this
+     *                       OperationContext represents.
+     * @param serviceContext the parent ServiceContext representing any state related to
+     *                       the set of all operations of the service.
+     */
+    public OperationContext(AxisOperation axisOperation,
+                            ServiceContext serviceContext) {
+        super(serviceContext);
+        this.messageContexts = new HashMap();
+        this.axisOperation = axisOperation;
+        this.operationContextMap =
+                getServiceContext().getConfigurationContext()
+                        .getOperationContextMap();
+    }
+
+    /**
+     * When a new message is added to the <code>MEPContext</code> the logic
+     * should be included remove the MEPContext from the table in the
+     * <code>EngineContext</code>. Example: IN_IN_OUT At the second IN
+     * message the MEPContext should be removed from the AxisOperation.
+     *
+     * @param msgContext
+     */
+    public void addMessageContext(MessageContext msgContext) throws AxisFault {
+        if (axisOperation != null) {
+            axisOperation.addMessageContext(msgContext, this);
+            touch();
+        }
+    }
+
+
+    /**
+     * Removes the pointers to this <code>OperationContext</code> in the
+     * <code>ConfigurationContext</code>'s OperationContextMap so that this
+     * <code>OperationContext</code> will eventually get garbage collected
+     * along with the <code>MessageContext</code>'s it contains. Note that if
+     * the caller wants to make sure its safe to clean up this OperationContext
+     * he should call isComplete() first. However, in cases like IN_OPTIONAL_OUT
+     * and OUT_OPTIONAL_IN, it is possibe this will get called without the MEP
+     * being complete due to the optional nature of the MEP.
+     */
+    public void cleanup() {
+        if (key != null) {
+            operationContextMap.remove(key);
+        }
+    }
+
+    /**
+     * @return Returns the axisOperation.
+     */
+    public AxisOperation getAxisOperation() {
+        return axisOperation;
+    }
+
+    /**
+     * Returns the EngineContext in which the parent ServiceContext lives.
+     *
+     * @return Returns parent ServiceContext's parent EngineContext.
+     */
+    public ConfigurationContext getConfigurationContext() {
+        return ((ServiceContext) parent).getConfigurationContext();
+    }
+
+    /**
+     * @param messageLabel
+     * @return Returns MessageContext.
+     * @throws AxisFault
+     */
+    public MessageContext getMessageContext(String messageLabel)
+            throws AxisFault {
+        return (MessageContext) messageContexts.get(messageLabel);
+    }
+
+    public HashMap getMessageContexts() {
+        return messageContexts;
+    }
+
+    /**
+     * Returns the ServiceContext in which this OperationContext lives.
+     *
+     * @return Returns parent ServiceContext.
+     */
+    public ServiceContext getServiceContext() {
+        return (ServiceContext) parent;
+    }
+
+    /**
+     * Checks to see if the MEP is complete. i.e. whether all the messages that
+     * are associated with the MEP has arrived and MEP is complete.
+     */
+    public boolean isComplete() {
+        return isComplete;
+    }
+
+    public void setComplete(boolean complete) {
+        isComplete = complete;
+    }
+
+    public void setParent(AbstractContext context) {
+        super.setParent(context);
+        this.operationContextMap =
+                getServiceContext().getConfigurationContext()
+                        .getOperationContextMap();
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java
new file mode 100644
index 0000000..15c8ea7
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java
@@ -0,0 +1,64 @@
+/*
+* Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.i18n.Messages;
+
+/**
+ * This is the factory for OperationContext.
+ */
+public class OperationContextFactory implements WSDLConstants {
+
+    /**
+     * Creates the operation context. When you call this make sure you set the parent later.
+     *
+     * @param mepURI
+     * @param axisOp
+     * @return Returns OperationContext.
+     * @throws AxisFault
+     */
+    public static OperationContext createOperationContext(int mepURI, AxisOperation axisOp)
+            throws AxisFault {
+        if ((WSDL20_2004Constants.MEP_CONSTANT_IN_OUT == mepURI) || (WSDL20_2004Constants.MEP_CONSTANT_IN_ONLY == mepURI)
+                || (WSDL20_2004Constants.MEP_CONSTANT_IN_OPTIONAL_OUT == mepURI)
+                || (WSDL20_2004Constants.MEP_CONSTANT_ROBUST_IN_ONLY == mepURI) || (WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY == mepURI)
+                || (WSDL20_2004Constants.MEP_CONSTANT_OUT_IN == mepURI) || (WSDL20_2004Constants.MEP_CONSTANT_OUT_OPTIONAL_IN == mepURI)
+                || (WSDL20_2004Constants.MEP_CONSTANT_ROBUST_OUT_ONLY == mepURI)) {
+            return new OperationContext(axisOp);
+        } else {
+            throw new AxisFault(Messages.getMessage("unSupportedMEP", "ID is " + mepURI));
+        }
+    }
+
+    public static OperationContext createOperationContext(int mepURI, AxisOperation axisOp,
+                                                          ServiceContext serviceContext)
+            throws AxisFault {
+        if ((WSDL20_2004Constants.MEP_CONSTANT_IN_OUT == mepURI) || (WSDL20_2004Constants.MEP_CONSTANT_IN_ONLY == mepURI)
+                || (WSDL20_2004Constants.MEP_CONSTANT_IN_OPTIONAL_OUT == mepURI)
+                || (WSDL20_2004Constants.MEP_CONSTANT_ROBUST_IN_ONLY == mepURI) || (WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY == mepURI)
+                || (WSDL20_2004Constants.MEP_CONSTANT_OUT_IN == mepURI) || (WSDL20_2004Constants.MEP_CONSTANT_OUT_OPTIONAL_IN == mepURI)
+                || (WSDL20_2004Constants.MEP_CONSTANT_ROBUST_OUT_ONLY == mepURI)) {
+            return new OperationContext(axisOp, serviceContext);
+        } else {
+            throw new AxisFault(Messages.getMessage("unSupportedMEP", "ID is " + mepURI));
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ServiceContext.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ServiceContext.java
new file mode 100644
index 0000000..7de1ed8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ServiceContext.java
@@ -0,0 +1,127 @@
+/*
+* Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.i18n.Messages;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Well this is never clearly defined, what it does or the life-cycle.
+ * So do NOT use this as it might not live up to your expectation.
+ */
+public class ServiceContext extends AbstractContext {
+
+    public static final String SERVICE_OBJECT = "serviceObject";
+    private EndpointReference targetEPR;
+    private EndpointReference myEPR;
+
+    private transient AxisService axisService;
+    private ServiceGroupContext serviceGroupContext;
+    private ConfigurationContext configContext;
+
+    public ServiceContext(AxisService serviceConfig, ServiceGroupContext serviceGroupContext) {
+        super(serviceGroupContext);
+        this.serviceGroupContext = serviceGroupContext;
+        this.axisService = serviceConfig;
+        this.configContext = (ConfigurationContext) parent.getParent();
+    }
+
+    public OperationContext createOperationContext(QName name) {
+        AxisOperation axisOp = axisService.getOperation(name);
+
+        return new OperationContext(axisOp, this);
+    }
+
+    public AxisService getAxisService() {
+        return axisService;
+    }
+
+    public ConfigurationContext getConfigurationContext() {
+        return configContext;
+    }
+
+    public ServiceGroupContext getServiceGroupContext() {
+        return serviceGroupContext;
+    }
+
+    /**
+     * To get the ERP for a given service , if the transport is present and not
+     * running then it will add as a listener to ListenerManager , there it will
+     * init that and start the listener , and finally ask the EPR from transport
+     * for a given service
+     *
+     * @param transport : Name of the transport
+     * @throws AxisFault
+     */
+    public EndpointReference getMyEPR(String transport) throws AxisFault {
+        axisService.isEnableAllTransports();
+        ConfigurationContext configctx = this.configContext;
+        if (configctx != null) {
+            ListenerManager lm = configctx.getListenerManager();
+            if (!lm.isListenerRunning(transport)) {
+                TransportInDescription trsin = configctx.getAxisConfiguration().
+                        getTransportIn(new QName(transport));
+                if (trsin != null) {
+                    lm.addListener(trsin, false);
+                } else {
+                    throw new AxisFault(Messages.getMessage("transportnotfound",
+                            transport));
+                }
+            }
+            if (!lm.isStopped()) {
+                return lm.getEPRforService(axisService.getName(), null, transport);
+            }
+        }
+        return null;
+    }
+
+    public EndpointReference getTargetEPR() {
+        return targetEPR;
+    }
+
+    public void setTargetEPR(EndpointReference targetEPR) {
+        this.targetEPR = targetEPR;
+    }
+
+    public EndpointReference getMyEPR() {
+        if (myEPR == null) {
+            try {
+                if (ListenerManager.defaultConfigurationContext != null) {
+                    ListenerManager listenerManager =
+                            ListenerManager.defaultConfigurationContext.getListenerManager();
+                    myEPR = listenerManager.getEPRforService(axisService.getName(), null, null);
+                }
+            } catch (AxisFault axisFault) {
+                // what else I can do 
+                myEPR = null;
+            }
+        }
+        return myEPR;
+    }
+
+    public void setMyEPR(EndpointReference myEPR) {
+        this.myEPR = myEPR;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java
new file mode 100644
index 0000000..5f4d278
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java
@@ -0,0 +1,79 @@
+/*
+* Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.i18n.Messages;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+public class ServiceGroupContext extends AbstractContext {
+
+    private transient AxisServiceGroup axisServiceGroup;
+    private String id;
+    private Map serviceContextMap;
+
+    public ServiceGroupContext(ConfigurationContext parent, AxisServiceGroup axisServiceGroup) {
+        super(parent);
+        this.axisServiceGroup = axisServiceGroup;
+        serviceContextMap = new HashMap();
+    }
+
+    public AxisServiceGroup getDescription() {
+        return axisServiceGroup;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Gets a service context. Creates a new one from AxisService.
+     * There is no need to store service context inside serviceGroup
+     * context as well.
+     *
+     * @param service
+     * @return Returns ServiceContext.
+     * @throws AxisFault
+     */
+    public ServiceContext getServiceContext(AxisService service) throws AxisFault {
+        AxisService axisService = axisServiceGroup.getService(service.getName());
+        if (axisService == null) {
+            throw new AxisFault(Messages.getMessage("invalidserviceinagroup",
+                    service.getName(), axisServiceGroup.getServiceGroupName()));
+        }
+        ServiceContext serviceContext = (ServiceContext) serviceContextMap.get(service.getName());
+        if (serviceContext == null) {
+            serviceContext = new ServiceContext(service, this);
+            serviceContextMap.put(service.getName(), serviceContext);
+        }
+        return serviceContext;
+    }
+
+    public Iterator getServiceContexts() {
+        return serviceContextMap.values().iterator();
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/context/SessionContext.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/SessionContext.java
new file mode 100644
index 0000000..93a699b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/context/SessionContext.java
@@ -0,0 +1,132 @@
+/*
+* Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.DependencyManager;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * All the engine components are stateless across the executions and all the states should be kept in the
+ * Contexts, there are three context Global, Session and Message.
+ */
+public class SessionContext extends AbstractContext {
+
+    private transient HashMap serviceContextMap = new HashMap();
+    private transient HashMap serviceGroupContextMap = new HashMap();
+    private transient String cookieID;
+	private static final Log log = LogFactory.getLog(SessionContext.class);
+
+    // current time out interval is 30 secs. Need to make this configurable
+    public transient long sessionContextTimeoutInterval = 30 * 1000;
+
+    /**
+     * @param parent
+     */
+    public SessionContext(AbstractContext parent) {
+        super(parent);
+    }
+
+    public void init(AxisConfiguration axisConfiguration) throws AxisFault {
+    }
+
+    public ServiceContext getServiceContext(AxisService axisService) {
+        return (ServiceContext) serviceContextMap.get(axisService.getName());
+    }
+
+    public void addServiceContext(ServiceContext serviceContext) {
+        serviceContextMap.put(serviceContext.getAxisService().getName(), serviceContext);
+    }
+
+    public void addServiceGroupContext(ServiceGroupContext serviceGroupContext,
+                                       String serviceGroupID) {
+        serviceGroupContextMap.put(serviceGroupID, serviceGroupContext);
+    }
+
+    public ServiceGroupContext getServiceGroupContext(String serviceGroupID) {
+        return (ServiceGroupContext) serviceGroupContextMap.get(serviceGroupID);
+    }
+
+    public String getCookieID() {
+        return cookieID;
+    }
+
+    public void setCookieID(String cookieID) {
+        this.cookieID = cookieID;
+    }
+
+    /**
+     * ServiceContext and ServiceGroupContext are not getting automatically garbage collectible. And there
+     * is no specific way for some one to go and make it garbage collectable.
+     * So the current solution is to make them time out. So the logic is that, there is a timer task
+     * in each and every service group which will check for the last touched time. And if it has not
+     * been touched for some time, the timer task will remove it from the memory.
+     * The touching logic happens like this. Whenever there is a call to addMessageContext in the operationContext
+     * it will go and update operationCOntext -> serviceContext -> serviceGroupContext.
+     */
+    public void touch() {
+        lastTouchedTime = new Date().getTime();
+        if (parent != null) {
+            parent.touch();
+        }
+    }
+
+    public long getLastTouchedTime() {
+        return lastTouchedTime;
+    }
+
+    public Iterator getServiceGroupContext() {
+        if (serviceGroupContextMap != null) {
+            return serviceGroupContextMap.values().iterator();
+        } else {
+            return null;
+        }
+    }
+
+    protected void finalize() throws Throwable {
+        super.finalize();
+        if (serviceGroupContextMap != null && !serviceGroupContextMap.isEmpty()) {
+            Iterator valuse = serviceGroupContextMap.values().iterator();
+            while (valuse.hasNext()) {
+                ServiceGroupContext serviceGroupContext = (ServiceGroupContext) valuse.next();
+                cleanupServiceContextes(serviceGroupContext);
+            }
+        }
+    }
+
+    private void cleanupServiceContextes(ServiceGroupContext serviceGroupContext) {
+        Iterator serviceContecxtes = serviceGroupContext.getServiceContexts();
+        while (serviceContecxtes.hasNext()) {
+            ServiceContext serviceContext = (ServiceContext) serviceContecxtes.next();
+            try {
+                DependencyManager.destroyServiceObject(serviceContext);
+            } catch (AxisFault axisFault) {
+                log.info(axisFault.getMessage());
+            }
+        }
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.java
new file mode 100644
index 0000000..0d77563
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.java
@@ -0,0 +1,427 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.deployment.util.PhasesInfo;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisObserver;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.phaseresolver.PhaseException;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.transport.TransportSender;
+import org.apache.axis2.util.TargetResolver;
+import org.apache.axis2.util.Loader;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class AxisConfigBuilder extends DescriptionBuilder {
+
+    protected static final Log log = LogFactory.getLog(AxisConfigBuilder.class);
+
+    public AxisConfigBuilder(InputStream serviceInputStream,
+                             AxisConfiguration axisConfiguration) {
+        super(serviceInputStream, axisConfiguration);
+    }
+
+    public void populateConfig() throws DeploymentException {
+        try {
+            OMElement config_element = buildOM();
+
+            if (!TAG_AXISCONFIG.equals(config_element.getLocalName())) {
+                throw new DeploymentException(Messages.getMessage("badelementfound", TAG_AXISCONFIG, config_element.getLocalName()));
+            }
+            // processing Parameters
+            // Processing service level parameters
+            Iterator itr = config_element.getChildrenWithName(new QName(TAG_PARAMETER));
+
+            processParameters(itr, axisConfig, axisConfig);
+
+            // process MessageReceiver
+            OMElement messageReceiver = config_element.getFirstChildWithName(new QName(TAG_MESSAGE_RECEIVERS));
+            if (messageReceiver != null) {
+                HashMap mrs = processMessageReceivers(messageReceiver);
+                Iterator keys = mrs.keySet().iterator();
+                while (keys.hasNext()) {
+                    String key = (String) keys.next();
+                    axisConfig.addMessageReceiver(key, (MessageReceiver) mrs.get(key));
+                }
+            }
+            // Process Module refs
+            Iterator moduleitr =
+                    config_element.getChildrenWithName(new QName(DeploymentConstants.TAG_MODULE));
+
+            processModuleRefs(moduleitr, axisConfig);
+
+            // Processing Transport Senders
+            Iterator trs_senders = config_element.getChildrenWithName(new QName(TAG_TRANSPORT_SENDER));
+
+            processTransportSenders(trs_senders);
+
+            // Processing Transport Receivers
+            Iterator trs_Reivers = config_element.getChildrenWithName(new QName(TAG_TRANSPORT_RECEIVER));
+
+            processTransportReceivers(trs_Reivers);
+
+            // Process Observers
+            Iterator obs_ittr = config_element.getChildrenWithName(new QName(TAG_LISTENER));
+
+            // Process TargetResolvers
+            OMElement targetResolvers = config_element.getFirstChildWithName(new QName(TAG_TARGET_RESOLVERS));
+            processTargetResolvers(axisConfig, targetResolvers);
+
+            processObservers(obs_ittr);
+
+            // Processing Phase orders
+            Iterator phaseorders = config_element.getChildrenWithName(new QName(TAG_PHASE_ORDER));
+
+            processPhaseOrders(phaseorders);
+
+            Iterator moduleConfigs = config_element.getChildrenWithName(new QName(TAG_MODULE_CONFIG));
+
+            processModuleConfig(moduleConfigs, axisConfig, axisConfig);
+
+            // processing <wsp:Policy> .. </..> elements
+            Iterator policyElements = config_element.getChildrenWithName(new QName(POLICY_NS_URI,
+                    TAG_POLICY));
+
+            if (policyElements != null && policyElements.hasNext()) {
+                processPolicyElements(PolicyInclude.AXIS_POLICY, policyElements, axisConfig.getPolicyInclude());
+            }
+
+            // processing <wsp:PolicyReference> .. </..> elements
+            Iterator policyRefElements = config_element.getChildrenWithName(new QName(POLICY_NS_URI,
+                    TAG_POLICY_REF));
+
+            if (policyRefElements != null && policyRefElements.hasNext()) {
+                processPolicyRefElements(PolicyInclude.AXIS_POLICY, policyElements, axisConfig.getPolicyInclude());
+            }
+
+            //to process default module versions
+            OMElement defaultModuleVerionElement = config_element.getFirstChildWithName(new QName(
+                    TAG_DEFAULT_MODULE_VERSION));
+            if (defaultModuleVerionElement != null) {
+                processDefaultModuleVersions(defaultModuleVerionElement);
+            }
+
+        } catch (XMLStreamException e) {
+            throw new DeploymentException(e);
+        }
+    }
+
+    private void processTargetResolvers(AxisConfiguration axisConfig, OMElement targetResolvers) {
+        if (targetResolvers != null) {
+            Iterator iterator = targetResolvers.getChildrenWithName(new QName(TAG_TARGET_RESOLVER));
+            while (iterator.hasNext()) {
+                OMElement targetResolver = (OMElement) iterator.next();
+                OMAttribute classNameAttribute = targetResolver.getAttribute(new QName(TAG_CLASS_NAME));
+                String className = classNameAttribute.getAttributeValue();
+                try {
+                    Class classInstance = Loader.loadClass(className);
+                    TargetResolver tr = (TargetResolver) classInstance.newInstance();
+                    axisConfig.addTargetResolver(tr);
+                } catch (Exception e) {
+                    if (log.isTraceEnabled()) {
+                        log.trace("processTargetResolvers: Exception thrown initialising TargetResolver: " + e.getMessage());
+                    }
+                }
+            }
+        }
+    }
+
+    protected void processModuleConfig(Iterator moduleConfigs, ParameterInclude parent,
+                                       AxisConfiguration config)
+            throws DeploymentException {
+        while (moduleConfigs.hasNext()) {
+            OMElement moduleConfig = (OMElement) moduleConfigs.next();
+            OMAttribute moduleName_att = moduleConfig.getAttribute(new QName(ATTRIBUTE_NAME));
+
+            if (moduleName_att == null) {
+                throw new DeploymentException(
+                        Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE_CONFIG));
+            } else {
+                String module = moduleName_att.getAttributeValue();
+                ModuleConfiguration moduleConfiguration =
+                        new ModuleConfiguration(new QName(module), parent);
+                Iterator parameters = moduleConfig.getChildrenWithName(new QName(TAG_PARAMETER));
+
+                processParameters(parameters, moduleConfiguration, parent);
+                config.addModuleConfig(moduleConfiguration);
+            }
+        }
+    }
+
+    /**
+     * Update the list of modules that is required to be engaged globally.
+     */
+    protected void processModuleRefs(Iterator moduleRefs, AxisConfiguration config) {
+        List globalModules = config.getGlobalModules();
+        while (moduleRefs.hasNext()) {
+            OMElement moduleref = (OMElement) moduleRefs.next();
+            OMAttribute moduleRefAttribute = moduleref.getAttribute(new QName(TAG_REFERENCE));
+            String refName = moduleRefAttribute.getAttributeValue();
+
+            globalModules.add(new QName(refName));
+        }
+    }
+
+    /**
+     * Processes AxisObservers.
+     *
+     * @param oservers
+     */
+    private void processObservers(Iterator oservers) {
+        while (oservers.hasNext()) {
+            try {
+                OMElement observerelement = (OMElement) oservers.next();
+                AxisObserver observer;
+                OMAttribute trsClas = observerelement.getAttribute(new QName(TAG_CLASS_NAME));
+                String clasName;
+                if (trsClas != null) {
+                    clasName = trsClas.getAttributeValue();
+                } else {
+                    log.info(Messages.getMessage(DeploymentErrorMsgs.OBSERVER_ERROR));
+                    return;
+                }
+
+                Class observerclass = Loader.loadClass(clasName);
+                observer = (AxisObserver) observerclass.newInstance();
+                // processing Parameters
+                // Processing service level parameters
+                Iterator itr = observerelement.getChildrenWithName(new QName(TAG_PARAMETER));
+                processParameters(itr, observer, axisConfig);
+                // initialization
+                try {
+                    observer.init(axisConfig);
+                } catch (Throwable e) {
+                    //Observer init may throw runtime exception , but we can stil
+                    // start Axis2
+                    log.info(e.getMessage());
+                }
+                axisConfig.addObservers(observer);
+            } catch (Exception e) {
+                log.info(e.getMessage());
+            }
+        }
+    }
+
+    private ArrayList processPhaseList(OMElement phaseOrders) throws DeploymentException {
+        ArrayList phaselist = new ArrayList();
+        Iterator phases = phaseOrders.getChildrenWithName(new QName(TAG_PHASE));
+
+        while (phases.hasNext()) {
+            OMElement phaseelement = (OMElement) phases.next();
+            String phaseName =
+                    phaseelement.getAttribute(new QName(ATTRIBUTE_NAME)).getAttributeValue();
+            String phaseClass = phaseelement.getAttributeValue(new QName(TAG_CLASS_NAME));
+            Phase phase;
+
+            try {
+                phase = getPhase(phaseClass);
+            } catch (Exception e) {
+                throw new DeploymentException(
+                        Messages.getMessage("phaseclassnotfound", phaseClass, e.getMessage()));
+            }
+
+            phase.setName(phaseName);
+
+            Iterator handlers = phaseelement.getChildrenWithName(new QName(TAG_HANDLER));
+
+            while (handlers.hasNext()) {
+                OMElement omElement = (OMElement) handlers.next();
+                HandlerDescription handler = processHandler(omElement, axisConfig);
+
+                handler.getRules().setPhaseName(phaseName);
+                Utils.loadHandler(axisConfig.getSystemClassLoader(), handler);
+
+                try {
+                    phase.addHandler(handler);
+                } catch (PhaseException e) {
+                    throw new DeploymentException(e);
+                }
+            }
+
+            phaselist.add(phase);
+        }
+
+        return phaselist;
+    }
+
+    /**
+     * Processes all the phase orders which are defined in axis2.xml.
+     *
+     * @param phaserders
+     */
+    private void processPhaseOrders(Iterator phaserders) throws DeploymentException {
+        PhasesInfo info = axisConfig.getPhasesInfo();
+
+        while (phaserders.hasNext()) {
+            OMElement phaseOrders = (OMElement) phaserders.next();
+            String flowType = phaseOrders.getAttribute(new QName(TAG_TYPE)).getAttributeValue();
+
+            if (TAG_FLOW_IN.equals(flowType)) {
+                info.setINPhases(processPhaseList(phaseOrders));
+            } else if (TAG_FLOW_IN_FAULT.equals(flowType)) {
+                info.setIN_FaultPhases(processPhaseList(phaseOrders));
+            } else if (TAG_FLOW_OUT.equals(flowType)) {
+                info.setOUTPhases(processPhaseList(phaseOrders));
+            } else if (TAG_FLOW_OUT_FAULT.equals(flowType)) {
+                info.setOUT_FaultPhases(processPhaseList(phaseOrders));
+            }
+        }
+    }
+
+    private void processDefaultModuleVersions(OMElement defaultVersions) throws DeploymentException {
+        Iterator moduleVersions = defaultVersions.getChildrenWithName(new QName(TAG_MODULE));
+        while (moduleVersions.hasNext()) {
+            OMElement omElement = (OMElement) moduleVersions.next();
+            String name = omElement.getAttributeValue(new QName(ATTRIBUTE_NAME));
+            if (name == null) {
+                throw new DeploymentException(Messages.getMessage("modulenamecannotnull"));
+            }
+            String defaultVeriosn = omElement.getAttributeValue(new QName(ATTRIBUTE_DEFAULT_VERSION));
+            if (defaultVeriosn == null) {
+                throw new DeploymentException(Messages.getMessage("modulenamecannotnull"));
+            }
+            axisConfig.addDefaultModuleVersion(name, defaultVeriosn);
+        }
+    }
+
+    private void processTransportReceivers(Iterator trs_senders) throws DeploymentException {
+        while (trs_senders.hasNext()) {
+            TransportInDescription transportIN;
+            OMElement transport = (OMElement) trs_senders.next();
+            // getting transport Name
+            OMAttribute trsName = transport.getAttribute(new QName(ATTRIBUTE_NAME));
+            if (trsName != null) {
+                String name = trsName.getAttributeValue();
+                transportIN = new TransportInDescription(new QName(name));
+                // transport impl class
+                OMAttribute trsClas = transport.getAttribute(new QName(TAG_CLASS_NAME));
+                if (trsClas != null) {
+                    try {
+                        String clasName = trsClas.getAttributeValue();
+                        Class receiverClass;
+                        receiverClass = Loader.loadClass(clasName); 
+
+                        TransportListener receiver =
+                                (TransportListener) receiverClass.newInstance();
+                        transportIN.setReceiver(receiver);
+                    } catch (NoClassDefFoundError e) {
+                        log.info(Messages.getMessage("classnotfound", trsClas.getAttributeValue()));
+                    } catch (ClassNotFoundException e) {
+                        throw new DeploymentException(e);
+                    } catch (IllegalAccessException e) {
+                        throw new DeploymentException(e);
+                    } catch (InstantiationException e) {
+                        throw new DeploymentException(e);
+                    }
+                }
+                try {
+                    Iterator itr = transport.getChildrenWithName(new QName(TAG_PARAMETER));
+                    processParameters(itr, transportIN, axisConfig);
+                    // adding to axis2 config
+                    axisConfig.addTransportIn(transportIN);
+                } catch (AxisFault axisFault) {
+                    throw new DeploymentException(axisFault);
+                }
+            }
+        }
+    }
+
+    private void processTransportSenders(Iterator trs_senders) throws DeploymentException {
+        while (trs_senders.hasNext()) {
+            TransportOutDescription transportout;
+            OMElement transport = (OMElement) trs_senders.next();
+
+            // getting transport Name
+            OMAttribute trsName = transport.getAttribute(new QName(ATTRIBUTE_NAME));
+
+            if (trsName != null) {
+                String name = trsName.getAttributeValue();
+
+                transportout = new TransportOutDescription(new QName(name));
+
+                // transport impl class
+                OMAttribute trsClas = transport.getAttribute(new QName(TAG_CLASS_NAME));
+
+                if (trsClas == null) {
+                    throw new DeploymentException(
+                            Messages.getMessage(DeploymentErrorMsgs.TRANSPORT_SENDER_ERROR, name));
+                }
+
+                String clasName = trsClas.getAttributeValue();
+                Class sender;
+
+                try {
+                    sender = Loader.loadClass(clasName);
+
+                    TransportSender transportSender = (TransportSender) sender.newInstance();
+
+                    transportout.setSender(transportSender);
+
+                    // process Parameters
+                    // processing Parameters
+                    // Processing service level parameters
+                    Iterator itr = transport.getChildrenWithName(new QName(TAG_PARAMETER));
+
+                    processParameters(itr, transportout, axisConfig);
+                    // adding to axis2 config
+                    axisConfig.addTransportOut(transportout);
+                } catch (NoClassDefFoundError e) {
+                    log.debug(Messages.getMessage("errorinloadingts", clasName), e);
+                } catch (ClassNotFoundException e) {
+                    log.debug(Messages.getMessage("errorinloadingts", clasName), e);
+                    throw new DeploymentException(e);
+                } catch (IllegalAccessException e) {
+                    log.debug(Messages.getMessage("errorinloadingts", clasName), e);
+                    throw new DeploymentException(e);
+                } catch (InstantiationException e) {
+                    log.debug(Messages.getMessage("errorinloadingts", clasName), e);
+                    throw new DeploymentException(e);
+                } catch (AxisFault axisFault) {
+                    log.debug(Messages.getMessage("errorinloadingts", clasName), axisFault);
+                    throw new DeploymentException(axisFault);
+                }
+            }
+        }
+    }
+
+    private Phase getPhase(String className)
+            throws ClassNotFoundException, IllegalAccessException, InstantiationException {
+        if (className == null) {
+            return new Phase();
+        }
+        Class phaseClass = Loader.loadClass(axisConfig.getSystemClassLoader(), className);
+        return (Phase) phaseClass.newInstance();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java
new file mode 100644
index 0000000..3bf8db1
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java
@@ -0,0 +1,37 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axis2.deployment.util.Utils;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+public class DeploymentClassLoader extends URLClassLoader {
+    /**
+     * DeploymentClassLoader is extended from URLClassLoader. The constructor
+     * does not override the super constructor, but does additional steps like find out
+     * jar files inside /lib directory.
+     *
+     * @param urls   <code>URL</code>s
+     * @param parent parent classloader <code>ClassLoader</code>
+     */
+    public DeploymentClassLoader(URL[] urls, ClassLoader parent, boolean antiJARLocking) {
+        super(Utils.getURLsForAllJars(urls[0], antiJARLocking), parent);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.java
new file mode 100644
index 0000000..9d371c4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.java
@@ -0,0 +1,126 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axis2.Constants;
+
+/**
+ * Constants used during service/module deployment.
+ */
+public interface DeploymentConstants {
+    public static String META_INF = "META-INF";
+    public static String SERVICES_XML = "META-INF/services.xml";
+    public static String MODULE_XML = "META-INF/module.xml";
+    public static String SERVICE_PATH = "services";
+    public static String SERVICE_DIR_PATH = "ServicesDirectory";
+    public static String MODULE_PATH = "modules";
+    public static String MODULE_DRI_PATH = "ModulesDirectory";
+
+    int TYPE_SERVICE = 0;                // is it a service
+    int TYPE_DEFAULT = -1;                // is it a service
+    int TYPE_MODULE = 1;                // is it a module
+
+    String TAG_AXISCONFIG = "axisconfig";
+    String TAG_PHASE_ORDER = "phaseOrder";
+    String TAG_PHASE = "phase";
+    String TAG_PARAMETER = "parameter";
+    String TAG_MODULE = "module";
+    String TAG_MODULE_CONFIG = "moduleConfig";
+    String TAG_MESSAGE = "message";
+    String TAG_LISTENER = "listener";
+    String TAG_LABEL = "label";
+    String TAG_HANDLER = "handler";
+    String TAG_TYPE = "type";
+    String TAG_TARGET_RESOLVERS = "targetResolvers";
+    String TAG_TARGET_RESOLVER = "targetResolver";
+    String TAG_TRANSPORT_SENDER = "transportSender";
+    String TAG_TRANSPORT_RECEIVER = "transportReceiver";
+    String TAG_SERVICE_GROUP = "serviceGroup";
+    String TAG_SERVICE = "service";
+    String TAG_REFERENCE = "ref";
+    String TAG_PHASE_LAST = "phaseLast";
+    String TAG_PHASE_FIRST = "phaseFirst";
+    String TAG_ORDER = "order";           // to resolve the order tag
+    String TAG_OPERATION = "operation";       // operation start tag
+    String TAG_OBJECT_SUPPLIER = "ObjectSupplier";       // operation start tag
+    String TAG_EXCLUDE_OPERATIONS = "excludeOperations";
+    String TAG_MESSAGE_RECEIVER = "messageReceiver";
+    String TAG_MESSAGE_RECEIVERS = "messageReceivers";
+    String TAG_TRANSPORTS = "transports";
+    String TAG_TRANSPORT = "transport";
+    String TAG_MEP = "mep";
+    String TAG_DEFAULT_MODULE_VERSION = "defaultModuleVersions";
+
+
+    String TAG_FLOW_IN = "InFlow";         // inflow start tag
+    String TAG_FLOW_OUT = "OutFlow";         // outflow start tag
+    String TAG_FLOW_OUT_FAULT = "OutFaultFlow";    // faultflow start tag
+    String TAG_FLOW_IN_FAULT = "InFaultFlow";    // faultflow start tag
+
+    String TAG_HOT_UPDATE = "hotupdate";
+    String TAG_ANTI_JAR_LOCKING = "antiJARLocking";
+    String TAG_HOT_DEPLOYMENT = "hotdeployment";
+    String TAG_EXTRACT_SERVICE_ARCHIVE = "extractServiceArchive";
+    String TAG_DISPATCH_ORDER = "dispatchOrder";
+    String TAG_DISPATCHER = "dispatcher";
+    String TAG_DESCRIPTION = "description";
+    String TAG_CLASS_NAME = "class";
+    String TAG_AFTER = "after";
+    String TAG_BEFORE = "before";
+    String TAG_SUPPORTED_POLICY_NAMESPACES = "supported-policy-namespaces";
+    String TAG_NAMESPACES = "namespaces";
+
+    // for parameters
+    String ATTRIBUTE_NAME = "name";
+    String ATTRIBUTE_WSADDRESSING = "wsaddressing";
+    String TARGET_NAME_SPACE = "targetNamespace";
+    String SCHEMA_NAME_SPACE = "schemaNamespace";
+    String SCHEMA_ELEMENT_QUALIFIED = "elementFormDefaultQualified";
+    String SCHEMA = "schema";
+    String MAPPING = "mapping";
+    String ATTRIBUTE_NAMESPACE = "namespace";
+    String ATTRIBUTE_PACKAGE = "package";
+
+    String ATTRIBUTE_DEFAULT_VERSION = "version";
+    String ATTRIBUTE_SCOPE = "scope";
+    String ATTRIBUTE_LOCKED = "locked";
+
+    String PROPERTY_TEMP_DIR = "java.io.tmpdir";
+    String DIRECTORY_CONF = "conf";
+    String DIRECTORY_AXIS2_HOME = ".axis2";
+    String RESOURCE_MODULES = "modules/";
+    String SUFFIX_MAR = ".mar";
+    String SUFFIX_JAR = ".jar";
+    String SUFFIX_WSDL = ".wsdl";
+    /**
+     * Resource that contains the configuration.
+     */
+    String AXIS2_CONFIGURATION_RESOURCE =
+            "org/apache/axis2/deployment/axis2_default.xml";
+    String AXIS2_REPO = "repository";
+    String AXIS2_CONFIGURATION_XML = "axis2.xml";
+    String BOOLEAN_TRUE = "true";
+    String BOOLEAN_FALSE = "false";
+    char SEPARATOR_DOT = '.';
+    char SEPARATOR_COLON = ':';
+
+    String POLICY_NS_URI = Constants.URI_POLICY;
+    String TAG_POLICY = "Policy";
+    String TAG_POLICY_REF = "PolicyReference";
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java
new file mode 100644
index 0000000..07ec1c8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java
@@ -0,0 +1,1105 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.repository.util.ArchiveFileData;
+import org.apache.axis2.deployment.repository.util.ArchiveReader;
+import org.apache.axis2.deployment.repository.util.WSInfo;
+import org.apache.axis2.deployment.scheduler.DeploymentIterator;
+import org.apache.axis2.deployment.scheduler.Scheduler;
+import org.apache.axis2.deployment.scheduler.SchedulerTask;
+import org.apache.axis2.deployment.util.PhasesInfo;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+public class DeploymentEngine implements DeploymentConstants {
+
+    private static final Log log = LogFactory.getLog(DeploymentEngine.class);
+    private boolean hotUpdate = true;    // to do hot update or not
+    private boolean hotDeployment = true;    // to do hot deployment or not
+    private boolean antiJARLocking = false;    // to do hot deployment or not
+    /**
+     * Stores all the web Services to deploy.
+     */
+    private List wsToDeploy = new ArrayList();
+
+    /**
+     * Stores all the web Services to undeploy.
+     */
+    private List wsToUnDeploy = new ArrayList();
+
+    //to keep the web resource location if any
+    private String webLocationString = null;
+
+    /**
+     * to keep a ref to engine register
+     * this ref will pass to engine when it call start()
+     * method
+     */
+    protected AxisConfiguration axisConfig;
+
+    protected ConfigurationContext configContext;
+
+    private RepositoryListener repoListener;
+
+    private String servicesPath = null;
+    private File servicesDir = null;
+    private String modulesPath = null;
+    private File modulesDir = null;
+
+    public void loadServices() {
+        repoListener.checkServices();
+        if (hotDeployment) {
+            startSearch(repoListener);
+        }
+    }
+
+    public void loadRepository(String repoDir) throws DeploymentException {
+        File axisRepo = new File(repoDir);
+        if (!axisRepo.exists()) {
+            throw new DeploymentException(
+                    Messages.getMessage("cannotfindrepo", repoDir));
+        }
+        setDeploymentFeatures();
+        prepareRepository(repoDir);
+        // setting the CLs
+        setClassLoaders(repoDir);
+        repoListener = new RepositoryListener(this, false);
+        org.apache.axis2.util.Utils.calculateDefaultModuleVersion(axisConfig.getModules(), axisConfig);
+        try {
+            try {
+                axisConfig.setRepository(axisRepo.toURL());
+            } catch (MalformedURLException e) {
+                log.info(e.getMessage());
+            }
+            validateSystemPredefinedPhases();
+        } catch (AxisFault axisFault) {
+            throw new DeploymentException(axisFault);
+        }
+    }
+
+    public void loadFromClassPath() throws DeploymentException {
+        //loading modules from the classpath
+        new RepositoryListener(this, true);
+        org.apache.axis2.util.Utils.calculateDefaultModuleVersion(
+                axisConfig.getModules(), axisConfig);
+        validateSystemPredefinedPhases();
+        try {
+            engageModules();
+        } catch (AxisFault axisFault) {
+            log.info(Messages.getMessage(DeploymentErrorMsgs.MODULE_VALIDATION_FAILED,
+                    axisFault.getMessage()));
+            throw new DeploymentException(axisFault);
+        }
+    }
+
+    public void loadServicesFromUrl(URL repoURL) {
+        try {
+            String path = servicesPath == null ? DeploymentConstants.SERVICE_PATH : servicesPath;
+            if (!path.endsWith("/")) {
+                path = path + "/";
+            }
+            URL servicesDir = new URL(repoURL, path);
+            URL filelisturl = new URL(servicesDir, "services.list");
+            ArrayList files = getFileList(filelisturl);
+            Iterator fileIterator = files.iterator();
+            while (fileIterator.hasNext()) {
+                String fileUrl = (String) fileIterator.next();
+                if (fileUrl.endsWith(".aar")) {
+                    AxisServiceGroup serviceGroup = new AxisServiceGroup();
+                    URL servicesURL = new URL(servicesDir, fileUrl);
+                    ArrayList servicelist = populateService(serviceGroup,
+                            servicesURL,
+                            fileUrl.substring(0, fileUrl.indexOf(".aar")));
+                    addServiceGroup(serviceGroup, servicelist, servicesURL, null);
+                }
+            }
+        } catch (MalformedURLException e) {
+            log.info(e.getMessage());
+        } catch (IOException e) {
+            log.info(e.getMessage());
+        }
+    }
+
+    public void loadRepositoryFromURL(URL repoURL) throws DeploymentException {
+        try {
+            String path = modulesPath == null ? DeploymentConstants.MODULE_PATH : modulesPath;
+            if (!path.endsWith("/")) {
+                path = path + "/";
+            }
+            URL moduleDir = new URL(repoURL, path);
+            URL filelisturl = new URL(moduleDir, "modules.list");
+            ArrayList files = getFileList(filelisturl);
+            Iterator fileIterator = files.iterator();
+            while (fileIterator.hasNext()) {
+                String fileUrl = (String) fileIterator.next();
+                if (fileUrl.endsWith(".mar")) {
+                    URL moduleurl = new URL(moduleDir, fileUrl);
+                    DeploymentClassLoader deploymentClassLoader =
+                            new DeploymentClassLoader(
+                                    new URL[]{moduleurl},
+                                    axisConfig.getModuleClassLoader(),
+                                    antiJARLocking);
+                    AxisModule module = new AxisModule();
+                    module.setModuleClassLoader(deploymentClassLoader);
+                    module.setParent(axisConfig);
+                    String moduleName = fileUrl.substring(0, fileUrl.indexOf(".mar"));
+                    module.setName(new QName(moduleName));
+                    populateModule(module, moduleurl);
+                    module.setFileName(moduleurl);
+                    addNewModule(module);
+                }
+            }
+            org.apache.axis2.util.Utils.calculateDefaultModuleVersion(
+                    axisConfig.getModules(), axisConfig);
+            validateSystemPredefinedPhases();
+        } catch (MalformedURLException e) {
+            throw new DeploymentException(e);
+        } catch (IOException e) {
+            throw new DeploymentException(e);
+        }
+    }
+
+    private void populateModule(AxisModule module, URL moduleUrl) throws DeploymentException {
+        try {
+            ClassLoader classLoadere = module.getModuleClassLoader();
+            InputStream moduleStream = classLoadere.getResourceAsStream("META-INF/module.xml");
+            if (moduleStream == null) {
+                moduleStream = classLoadere.getResourceAsStream("meta-inf/module.xml");
+            }
+            if (moduleStream == null) {
+                throw new DeploymentException(
+                        Messages.getMessage(
+                                DeploymentErrorMsgs.MODULE_XML_MISSING, moduleUrl.toString()));
+            }
+            ModuleBuilder moduleBuilder = new ModuleBuilder(moduleStream, module, axisConfig);
+            moduleBuilder.populateModule();
+        } catch (IOException e) {
+            throw new DeploymentException(e);
+        }
+    }
+
+    private ArrayList populateService(AxisServiceGroup serviceGroup,
+                                      URL servicesURL,
+                                      String serviceName) throws DeploymentException {
+        try {
+            serviceGroup.setServiceGroupName(serviceName);
+            DeploymentClassLoader serviceClassLoader = new DeploymentClassLoader(
+                    new URL[]{servicesURL}, axisConfig.getServiceClassLoader(), antiJARLocking);
+            String metainf = "meta-inf";
+            serviceGroup.setServiceGroupClassLoader(serviceClassLoader);
+            InputStream servicexmlStream = serviceClassLoader.getResourceAsStream("META-INF/services.xml");
+            if (servicexmlStream == null) {
+                servicexmlStream = serviceClassLoader.getResourceAsStream("meta-inf/services.xml");
+            } else {
+                metainf = "META-INF";
+            }
+            if (servicexmlStream == null) {
+                throw new DeploymentException(
+                        Messages.getMessage(DeploymentErrorMsgs.SERVICE_XML_NOT_FOUND, servicesURL.toString()));
+            }
+            DescriptionBuilder builder = new DescriptionBuilder(servicexmlStream, configContext);
+            OMElement rootElement = builder.buildOM();
+            String elementName = rootElement.getLocalName();
+
+            if (TAG_SERVICE.equals(elementName)) {
+                AxisService axisService = null;
+                InputStream wsdlStream = serviceClassLoader.getResourceAsStream(metainf + "/service.wsdl");
+                if (wsdlStream == null) {
+                    wsdlStream = serviceClassLoader.getResourceAsStream(metainf + "/" + serviceName + ".wsdl");
+                }
+                if (wsdlStream != null) {
+                    WSDL11ToAxisServiceBuilder wsdl2AxisServiceBuilder =
+                            new WSDL11ToAxisServiceBuilder(wsdlStream, null, null);
+                    axisService = wsdl2AxisServiceBuilder.populateService();
+                    axisService.setWsdlFound(true);
+                    axisService.setName(serviceName);
+                }
+                if (axisService == null) {
+                    axisService = new AxisService(serviceName);
+                }
+
+                axisService.setParent(serviceGroup);
+                axisService.setClassLoader(serviceClassLoader);
+
+                ServiceBuilder serviceBuilder = new ServiceBuilder(configContext, axisService);
+                AxisService service = serviceBuilder.populateService(rootElement);
+
+                ArrayList serviceList = new ArrayList();
+                serviceList.add(service);
+                return serviceList;
+            } else if (TAG_SERVICE_GROUP.equals(elementName)) {
+                ServiceGroupBuilder groupBuilder = new ServiceGroupBuilder(rootElement, new HashMap(),
+                        configContext);
+                ArrayList servicList = groupBuilder.populateServiceGroup(serviceGroup);
+                Iterator serviceIterator = servicList.iterator();
+                while (serviceIterator.hasNext()) {
+                    AxisService axisService = (AxisService) serviceIterator.next();
+                    InputStream wsdlStream = serviceClassLoader.getResourceAsStream(metainf + "/service.wsdl");
+                    if (wsdlStream == null) {
+                        wsdlStream = serviceClassLoader.getResourceAsStream(metainf + "/" + serviceName + ".wsdl");
+                        if (wsdlStream != null) {
+                            WSDL11ToAxisServiceBuilder wsdl2AxisServiceBuilder =
+                                    new WSDL11ToAxisServiceBuilder(wsdlStream, axisService);
+                            axisService = wsdl2AxisServiceBuilder.populateService();
+                            axisService.setWsdlFound(true);
+                            // Set the default message receiver for the operations that were
+                            // not listed in the services.xml
+                            Iterator operations = axisService.getOperations();
+                            while (operations.hasNext()) {
+                                AxisOperation operation = (AxisOperation) operations.next();
+                                if (operation.getMessageReceiver() == null) {
+                                    operation.setMessageReceiver(loadDefaultMessageReceiver(
+                                            operation.getMessageExchangePattern(), axisService));
+                                }
+                            }
+                        }
+                    }
+                }
+                return servicList;
+            }
+        } catch (IOException e) {
+            throw new DeploymentException(e);
+        } catch (XMLStreamException e) {
+            throw new DeploymentException(e);
+        }
+        return null;
+    }
+
+    protected MessageReceiver loadDefaultMessageReceiver(String mepURL, AxisService service) {
+        MessageReceiver messageReceiver;
+        if (mepURL == null) {
+            mepURL = WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT;
+        }
+        if (service != null) {
+            messageReceiver = service.getMessageReceiver(mepURL);
+            if (messageReceiver != null) {
+                return messageReceiver;
+            }
+        }
+        return axisConfig.getMessageReceiver(mepURL);
+    }
+
+    private void addNewModule(AxisModule modulemetadata) throws AxisFault {
+
+        Flow inflow = modulemetadata.getInFlow();
+        ClassLoader moduleClassLoader = modulemetadata.getModuleClassLoader();
+
+        if (inflow != null) {
+            Utils.addFlowHandlers(inflow, moduleClassLoader);
+        }
+
+        Flow outFlow = modulemetadata.getOutFlow();
+
+        if (outFlow != null) {
+            Utils.addFlowHandlers(outFlow, moduleClassLoader);
+        }
+
+        Flow faultInFlow = modulemetadata.getFaultInFlow();
+
+        if (faultInFlow != null) {
+            Utils.addFlowHandlers(faultInFlow, moduleClassLoader);
+        }
+
+        Flow faultOutFlow = modulemetadata.getFaultOutFlow();
+
+        if (faultOutFlow != null) {
+            Utils.addFlowHandlers(faultOutFlow, moduleClassLoader);
+        }
+
+        axisConfig.addModule(modulemetadata);
+        log.debug(Messages.getMessage(DeploymentErrorMsgs.ADDING_NEW_MODULE));
+    }
+
+    private void addServiceGroup(AxisServiceGroup serviceGroup,
+                                 ArrayList serviceList,
+                                 URL serviceLocation,
+                                 ArchiveFileData currentArchiveFile)
+            throws AxisFault {
+        fillServiceGroup(serviceGroup, serviceList, serviceLocation, axisConfig);
+        axisConfig.addServiceGroup(serviceGroup);
+        if (currentArchiveFile != null) {
+            addAsWebResources(currentArchiveFile.getFile(),
+                    serviceGroup.getServiceGroupName(), serviceGroup);
+        }
+    }
+
+    private static void fillServiceGroup(AxisServiceGroup serviceGroup,
+                                         ArrayList serviceList,
+                                         URL serviceLocation,
+                                         AxisConfiguration axisConfig) throws AxisFault {
+        serviceGroup.setParent(axisConfig);
+        // module from services.xml at serviceGroup level
+        ArrayList groupModules = serviceGroup.getModuleRefs();
+
+        for (int i = 0; i < groupModules.size(); i++) {
+            QName moduleName = (QName) groupModules.get(i);
+            AxisModule module = axisConfig.getModule(moduleName);
+
+            if (module != null) {
+                serviceGroup.engageModule(axisConfig.getModule(moduleName), axisConfig);
+            } else {
+                throw new DeploymentException(
+                        Messages.getMessage(
+                                DeploymentErrorMsgs.BAD_MODULE_FROM_SERVICE,
+                                serviceGroup.getServiceGroupName(), moduleName.getLocalPart()));
+            }
+        }
+
+        Iterator services = serviceList.iterator();
+
+        while (services.hasNext()) {
+            AxisService axisService = (AxisService) services.next();
+            String scope = axisService.getScope();
+            if (Constants.SCOPE_TRANSPORT_SESSION.equals(scope)) {
+                if (!axisConfig.isManageTransportSession()) {
+                    throw new DeploymentException("You can not deploy the service " +
+                            "in transport session , since transport session management" +
+                            " disabled in axis2.xml change manageTransportSession parameter value to true");
+                }
+            }
+            axisService.setUseDefaultChains(false);
+
+            axisService.setFileName(serviceLocation);
+            serviceGroup.addService(axisService);
+
+            // modules from <service>
+            ArrayList list = axisService.getModules();
+
+            for (int i = 0; i < list.size(); i++) {
+                AxisModule module = axisConfig.getModule((QName) list.get(i));
+
+                if (module == null) {
+                    throw new DeploymentException(
+                            Messages.getMessage(
+                                    DeploymentErrorMsgs.BAD_MODULE_FROM_SERVICE, axisService.getName(),
+                                    ((QName) list.get(i)).getLocalPart()));
+                }
+
+                axisService.engageModule(module, axisConfig);
+            }
+
+            for (Iterator iterator = axisService.getOperations(); iterator.hasNext();) {
+                AxisOperation opDesc = (AxisOperation) iterator.next();
+                ArrayList modules = opDesc.getModuleRefs();
+
+                for (int i = 0; i < modules.size(); i++) {
+                    QName moduleName = (QName) modules.get(i);
+                    AxisModule module = axisConfig.getModule(moduleName);
+
+                    if (module != null) {
+                        opDesc.engageModule(module, axisConfig);
+                    } else {
+                        throw new DeploymentException(
+                                Messages.getMessage(
+                                        DeploymentErrorMsgs.BAD_MODULE_FROM_OPERATION,
+                                        opDesc.getName().getLocalPart(), moduleName.getLocalPart()));
+                    }
+                }
+            }
+        }
+    }
+
+    private void addAsWebResources(File in, String serviceFileName, AxisServiceGroup serviceGroup) {
+        try {
+            if (webLocationString == null) {
+                return;
+            }
+            if (in.isDirectory()) {
+                return;
+            }
+            File webLocation = new File(webLocationString);
+            File out = new File(webLocation, serviceFileName);
+            int BUFFER = 1024;
+            byte data[] = new byte[BUFFER];
+            FileInputStream fin = new FileInputStream(in);
+            ZipInputStream zin = new ZipInputStream(
+                    fin);
+            ZipEntry entry;
+            while ((entry = zin.getNextEntry()) != null) {
+                ZipEntry zip = new ZipEntry(entry);
+                if (zip.getName().toUpperCase().startsWith("WWW")) {
+                    String fileName = zip.getName();
+                    fileName = fileName.substring("WWW/".length(),
+                            fileName.length());
+                    if (zip.isDirectory()) {
+                        new File(out, fileName).mkdirs();
+                    } else {
+                        FileOutputStream tempOut = new FileOutputStream(new File(out, fileName));
+                        int count;
+                        while ((count = zin.read(data, 0, BUFFER)) != -1) {
+                            tempOut.write(data, 0, count);
+                        }
+                        tempOut.close();
+                        tempOut.flush();
+                    }
+                    serviceGroup.setFoundWebResources(true);
+                }
+            }
+            zin.close();
+            fin.close();
+        } catch (IOException e) {
+            log.info(e.getMessage());
+        }
+    }
+
+    /**
+     * @param file
+     */
+    public void addWSToDeploy(ArchiveFileData file) {
+        wsToDeploy.add(file);
+    }
+
+    /**
+     * @param file
+     */
+    public void addWSToUndeploy(WSInfo file) {
+        wsToUnDeploy.add(file);
+    }
+
+    public void doDeploy() {
+        if (wsToDeploy.size() > 0) {
+            for (int i = 0; i < wsToDeploy.size(); i++) {
+                ArchiveFileData currentArchiveFile = (ArchiveFileData) wsToDeploy.get(i);
+                boolean explodedDir = currentArchiveFile.getFile().isDirectory();
+                int type = currentArchiveFile.getType();
+                try {
+                    ArchiveReader archiveReader;
+                    StringWriter errorWriter = new StringWriter();
+                    switch (type) {
+                        case TYPE_SERVICE :
+                            currentArchiveFile.setClassLoader(explodedDir,
+                                    axisConfig.getServiceClassLoader());
+                            archiveReader = new ArchiveReader();
+                            String serviceStatus = "";
+                            try {
+                                HashMap wsdlservice = archiveReader.processWSDLs(currentArchiveFile);
+                                if (wsdlservice != null && wsdlservice.size() > 0) {
+                                    Iterator services = wsdlservice.values().iterator();
+                                    while (services.hasNext()) {
+                                        AxisService service = (AxisService) services.next();
+                                        Iterator operations = service.getOperations();
+                                        while (operations.hasNext()) {
+                                            AxisOperation axisOperation = (AxisOperation) operations.next();
+                                            axisConfig.getPhasesInfo().setOperationPhases(axisOperation);
+                                        }
+                                    }
+                                }
+                                AxisServiceGroup sericeGroup = new AxisServiceGroup(axisConfig);
+                                sericeGroup.setServiceGroupClassLoader(
+                                        currentArchiveFile.getClassLoader());
+                                ArrayList serviceList = archiveReader.processServiceGroup(
+                                        currentArchiveFile.getAbsolutePath(), currentArchiveFile,
+                                        sericeGroup, explodedDir, wsdlservice,
+                                        configContext);
+                                addServiceGroup(sericeGroup, serviceList, currentArchiveFile.getFile().toURL(), currentArchiveFile);
+                                log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_WS,
+                                        currentArchiveFile.getName()));
+                            } catch (DeploymentException de) {
+                                de.printStackTrace();
+                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
+                                        currentArchiveFile.getName(),
+                                        de.getMessage()),
+                                        de);
+                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+                                de.printStackTrace(error_ptintWriter);
+                                serviceStatus = "Error:\n" + errorWriter.toString();
+                            } catch (AxisFault axisFault) {
+                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
+                                        currentArchiveFile.getName(),
+                                        axisFault.getMessage()),
+                                        axisFault);
+                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+                                axisFault.printStackTrace(error_ptintWriter);
+                                serviceStatus = "Error:\n" + errorWriter.toString();
+                            } catch (Exception e) {
+                                if (log.isInfoEnabled()) {
+                                    StringWriter sw = new StringWriter();
+                                    PrintWriter pw = new PrintWriter(sw);
+                                    e.printStackTrace(pw);
+                                    log.info(Messages.getMessage(
+                                            DeploymentErrorMsgs.INVALID_SERVICE,
+                                            currentArchiveFile.getName(),
+                                            sw.getBuffer().toString()));
+                                }
+                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+                                e.printStackTrace(error_ptintWriter);
+                                serviceStatus = "Error:\n" + errorWriter.toString();
+                            } catch (Throwable t) {
+                                if (log.isInfoEnabled()) {
+                                    StringWriter sw = new StringWriter();
+                                    PrintWriter pw = new PrintWriter(sw);
+                                    t.printStackTrace(pw);
+                                    log.info(Messages.getMessage(
+                                            DeploymentErrorMsgs.INVALID_SERVICE,
+                                            currentArchiveFile.getName(),
+                                            sw.getBuffer().toString()));
+                                }
+                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+                                t.printStackTrace(error_ptintWriter);
+                                serviceStatus = "Error:\n" + errorWriter.toString();
+                            } finally {
+                                if (serviceStatus.startsWith("Error:")) {
+                                    axisConfig.getFaultyServices().put(currentArchiveFile.getFile().getAbsolutePath(),
+                                            serviceStatus);
+                                }
+                                currentArchiveFile = null;
+                            }
+                            break;
+                        case TYPE_MODULE :
+                            currentArchiveFile.setClassLoader(explodedDir,
+                                    axisConfig.getModuleClassLoader());
+                            archiveReader = new ArchiveReader();
+                            String moduleStatus = "";
+                            try {
+                                AxisModule metaData = new AxisModule();
+                                metaData.setModuleClassLoader(currentArchiveFile.getClassLoader());
+                                metaData.setParent(axisConfig);
+                                archiveReader.readModuleArchive(currentArchiveFile, metaData, explodedDir,
+                                        axisConfig);
+                                metaData.setFileName(currentArchiveFile.getFile().toURL());
+                                addNewModule(metaData);
+                                log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_MODULE,
+                                        metaData.getName().getLocalPart()));
+                            } catch (DeploymentException e) {
+                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
+                                        currentArchiveFile.getName(),
+                                        e.getMessage()),
+                                        e);
+                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+                                e.printStackTrace(error_ptintWriter);
+                                moduleStatus = "Error:\n" + errorWriter.toString();
+                            } catch (AxisFault axisFault) {
+                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
+                                        currentArchiveFile.getName(),
+                                        axisFault.getMessage()),
+                                        axisFault);
+                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+                                axisFault.printStackTrace(error_ptintWriter);
+                                moduleStatus = "Error:\n" + errorWriter.toString();
+                            } catch (MalformedURLException e) {
+                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
+                                        currentArchiveFile.getName(),
+                                        e.getMessage()),
+                                        e);
+                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+                                e.printStackTrace(error_ptintWriter);
+                                moduleStatus = "Error:\n" + errorWriter.toString();
+                            } catch (Throwable t) {
+                                if (log.isInfoEnabled()) {
+                                    StringWriter sw = new StringWriter();
+                                    PrintWriter pw = new PrintWriter(sw);
+                                    t.printStackTrace(pw);
+                                    log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
+                                            currentArchiveFile.getName(),
+                                            t.getMessage()),
+                                            t);
+                                }
+                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+                                t.printStackTrace(error_ptintWriter);
+                                moduleStatus = "Error:\n" + errorWriter.toString();
+                            } finally {
+                                if (moduleStatus.startsWith("Error:")) {
+                                    axisConfig.getFaultyModules().put(
+                                            getAxisServiceName(currentArchiveFile.getName()), moduleStatus);
+                                }
+                                currentArchiveFile = null;
+                            }
+                            break;
+                    }
+                } catch (AxisFault axisFault) {
+                    log.info(Messages.getMessage(DeploymentErrorMsgs.ERROR_SETTING_CLIENT_HOME,
+                            axisFault.getMessage()),
+                            axisFault);
+                }
+            }
+        }
+
+        wsToDeploy.clear();
+    }
+
+    /**
+     * Checks if the modules, referred by server.xml, exist or that they are deployed.
+     */
+    public void engageModules() throws AxisFault {
+        for (Iterator iterator = axisConfig.getGlobalModules().iterator(); iterator.hasNext();) {
+            QName name = (QName) iterator.next();
+            axisConfig.engageModule(name);
+        }
+    }
+
+    /**
+     * To get AxisConfiguration for a given inputStream this method can be used.
+     * The inputstream should be a valid axis2.xml , else you will be getting
+     * DeploymentExceptions.
+     * <p/>
+     * First creat a AxisConfiguration using given inputSream , and then it will
+     * try to find the repository location parameter from AxisConfiguration, so
+     * if user has add a parameter with the name "repository" , then the value
+     * specified by that parameter will be the repository and system will try to
+     * load modules and services from that repository location if it a valid
+     * location. hot deployment and hot update will work as usual in this case.
+     * <p/>
+     * You will be getting AxisConfiguration corresponding to given inputstream
+     * if it is valid , if something goes wrong you will be getting
+     * DeploymentExeption
+     *
+     * @param in
+     * @throws DeploymentException
+     */
+    public AxisConfiguration populateAxisConfiguration(InputStream in) throws DeploymentException {
+        axisConfig = new AxisConfiguration();
+        AxisConfigBuilder builder = new AxisConfigBuilder(in, axisConfig);
+        builder.populateConfig();
+        try {
+            if (in != null) {
+                in.close();
+            }
+        } catch (IOException e) {
+            log.info("error in closing input stream");
+        }
+        return axisConfig;
+    }
+
+    /**
+     * Starts the Deployment engine to perform Hot deployment and so on.
+     */
+    private void startSearch(RepositoryListener listener) {
+        Scheduler scheduler = new Scheduler();
+
+        scheduler.schedule(new SchedulerTask(listener), new DeploymentIterator());
+    }
+
+    public void unDeploy() {
+        String fileName;
+        try {
+            if (wsToUnDeploy.size() > 0) {
+                for (int i = 0; i < wsToUnDeploy.size(); i++) {
+                    WSInfo wsInfo = (WSInfo) wsToUnDeploy.get(i);
+                    if (wsInfo.getType() == TYPE_SERVICE) {
+                        if (isHotUpdate()) {
+                            try {
+                                fileName = getAxisServiceName(wsInfo.getFileName());
+                                axisConfig.removeServiceGroup(fileName);
+                                log.info(Messages.getMessage(DeploymentErrorMsgs.SERVICE_REMOVED,
+                                        wsInfo.getFileName()));
+                            } catch (AxisFault axisFault) {
+                                //May be a faulty service
+                                axisConfig.removeFaultyService(wsInfo.getFileName());
+                            }
+                        } else {
+                            axisConfig.removeFaultyService(wsInfo.getFileName());
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.info(e);
+        }
+        wsToUnDeploy.clear();
+    }
+
+    /**
+     * Checks whether some one has changed the system pre-defined phases
+     * for all the flows. If they have been changed,throws a DeploymentException.
+     *
+     * @throws DeploymentException
+     */
+    private void validateSystemPredefinedPhases() throws DeploymentException {
+        PhasesInfo phasesInfo = axisConfig.getPhasesInfo();
+        axisConfig.setInPhasesUptoAndIncludingPostDispatch(phasesInfo.getGlobalInflow());
+        axisConfig.setInFaultPhases(phasesInfo.getGlobalInFaultPhases());
+        axisConfig.setGlobalOutPhase(phasesInfo.getGlobalOutPhaseList());
+        axisConfig.setOutFaultPhases(phasesInfo.getOUT_FaultPhases());
+    }
+
+    /**
+     * Gets AxisConfiguration.
+     *
+     * @return AxisConfiguration <code>AxisConfiguration</code>
+     */
+    public AxisConfiguration getAxisConfig() {
+        return axisConfig;
+    }
+
+    /**
+     * Retrieves service name from the archive file name.
+     * If the archive file name is service1.aar , then axis2 service name would be service1
+     *
+     * @param fileName
+     * @return Returns String.
+     */
+    private String getAxisServiceName(String fileName) {
+        char seperator = '.';
+        String value;
+        int index = fileName.indexOf(seperator);
+
+        if (index > 0) {
+            value = fileName.substring(0, index);
+
+            return value;
+        }
+
+        return fileName;
+    }
+
+    public AxisModule getModule(QName moduleName) throws AxisFault {
+        return axisConfig.getModule(moduleName);
+    }
+
+    public boolean isHotUpdate() {
+        return hotUpdate;
+    }
+
+    public boolean isAntiJARLocking() {
+        return antiJARLocking;
+    }
+
+    /**
+     * To set the all the classLoader hierarchy this method can be used , the top most parent is
+     * CCL then SCL(system Class Loader)
+     * CCL
+     * :
+     * SCL
+     * :  :
+     * MCCL  SCCL
+     * :      :
+     * MCL    SCL
+     * <p/>
+     * <p/>
+     * MCCL :  module common class loader
+     * SCCL : Service common class loader
+     * MCL : module class loader
+     * SCL  : Service class loader
+     *
+     * @param axis2repoURI : The repository folder of Axis2
+     * @throws DeploymentException
+     */
+    private void setClassLoaders(String axis2repoURI) throws DeploymentException {
+        ClassLoader sysClassLoader =
+                Utils.getClassLoader(Thread.currentThread().getContextClassLoader(), axis2repoURI);
+
+        axisConfig.setSystemClassLoader(sysClassLoader);
+        if (servicesDir.exists()) {
+            axisConfig.setServiceClassLoader(
+                    Utils.getClassLoader(axisConfig.getSystemClassLoader(), servicesDir));
+        } else {
+            axisConfig.setServiceClassLoader(axisConfig.getSystemClassLoader());
+        }
+
+        if (modulesDir.exists()) {
+            axisConfig.setModuleClassLoader(Utils.getClassLoader(axisConfig.getSystemClassLoader(),
+                    modulesDir));
+        } else {
+            axisConfig.setModuleClassLoader(axisConfig.getSystemClassLoader());
+        }
+    }
+
+    /**
+     * Sets hotDeployment and hot update.
+     */
+    private void setDeploymentFeatures() {
+        String value;
+        Parameter parahotdeployment = axisConfig.getParameter(TAG_HOT_DEPLOYMENT);
+        Parameter parahotupdate = axisConfig.getParameter(TAG_HOT_UPDATE);
+//        Parameter paraantiJARLocking = axisConfig.getParameter(TAG_ANTI_JAR_LOCKING);
+
+        if (parahotdeployment != null) {
+            value = (String) parahotdeployment.getValue();
+
+            if ("false".equalsIgnoreCase(value)) {
+                hotDeployment = false;
+            }
+        }
+
+        if (parahotupdate != null) {
+            value = (String) parahotupdate.getValue();
+
+            if ("false".equalsIgnoreCase(value)) {
+                hotUpdate = false;
+            }
+        }
+
+        if (parahotupdate != null) {
+            value = (String) parahotupdate.getValue();
+
+            if ("true".equalsIgnoreCase(value)) {
+                antiJARLocking = true;
+            }
+        }
+        String serviceDirPara = (String)
+                axisConfig.getParameterValue(DeploymentConstants.SERVICE_DIR_PATH);
+        if (serviceDirPara != null) {
+            servicesPath = serviceDirPara;
+        }
+
+        String moduleDirPara = (String)
+                axisConfig.getParameterValue(DeploymentConstants.MODULE_DRI_PATH);
+        if (moduleDirPara != null) {
+            modulesPath = moduleDirPara;
+        }
+    }
+
+    /**
+     * Creates directories for modules/services, copies configuration xml from class loader if necessary
+     *
+     * @param repositoryName
+     */
+
+    private void prepareRepository(String repositoryName) {
+        File repository = new File(repositoryName);
+        if (servicesPath != null) {
+            servicesDir = new File(servicesPath);
+            if (!servicesDir.exists()) {
+                servicesDir = new File(repository, servicesPath);
+            }
+        } else {
+            servicesDir = new File(repository, DeploymentConstants.SERVICE_PATH);
+        }
+        if (!servicesDir.exists()) {
+            log.info(Messages.getMessage("noservicedirfound", getRepositoryPath(repository)));
+        }
+        if (modulesPath != null) {
+            modulesDir = new File(modulesPath);
+            if (!modulesDir.exists()) {
+                modulesDir = new File(repository, modulesPath);
+            }
+        } else {
+            modulesDir = new File(repository, DeploymentConstants.MODULE_PATH);
+        }
+        if (!modulesDir.exists()) {
+            log.info(Messages.getMessage("nomoduledirfound", getRepositoryPath(repository)));
+        }
+    }
+
+    private String getRepositoryPath(File repository) {
+        try {
+            return repository.getCanonicalPath();
+        } catch (IOException e) {
+            return repository.getAbsolutePath();
+        }
+    }
+
+    private ArrayList getFileList(URL fileListUrl) {
+        ArrayList fileList = new ArrayList();
+        InputStream in;
+        try {
+            in = fileListUrl.openStream();
+        } catch (IOException e) {
+            return fileList;
+        }
+        BufferedReader input = null;
+        try {
+            input = new BufferedReader(new InputStreamReader(in));
+            String line;
+            while ((line = input.readLine()) != null) {
+                line = line.trim();
+                if (line.length() > 0) {
+                    fileList.add(line);
+                }
+            }
+        } catch (IOException ex) {
+            ex.printStackTrace();
+        } finally {
+            try {
+                if (input != null) {
+                    input.close();
+                }
+            }
+            catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+        return fileList;
+    }
+
+    public String getWebLocationString() {
+        return webLocationString;
+    }
+
+    public void setWebLocationString(String webLocationString) {
+        this.webLocationString = webLocationString;
+    }
+
+    public void setConfigContext(ConfigurationContext configContext) {
+        this.configContext = configContext;
+    }
+
+    /**
+     * Builds ModuleDescription for a given module archive file. This does not
+     * called the init method since there is no reference to configuration context
+     * so who ever create module using this has to called module.init if it is
+     * required
+     *
+     * @param modulearchive : Actual module archive file
+     * @param config        : AxisConfiguration : for get classloaders etc..
+     * @throws org.apache.axis2.deployment.DeploymentException
+     *
+     */
+    public static AxisModule buildModule(File modulearchive,
+                                         AxisConfiguration config)
+            throws DeploymentException {
+        AxisModule axismodule;
+        try {
+            ArchiveFileData currentArchiveFile = new ArchiveFileData(modulearchive,
+                    DeploymentConstants.TYPE_MODULE, false);
+            axismodule = new AxisModule();
+            ArchiveReader archiveReader = new ArchiveReader();
+
+            currentArchiveFile.setClassLoader(false, config.getModuleClassLoader());
+            axismodule.setModuleClassLoader(currentArchiveFile.getClassLoader());
+            archiveReader.readModuleArchive(currentArchiveFile, axismodule,
+                    false, config);
+            ClassLoader moduleClassLoader = axismodule.getModuleClassLoader();
+            Flow inflow = axismodule.getInFlow();
+
+            if (inflow != null) {
+                Utils.addFlowHandlers(inflow, moduleClassLoader);
+            }
+
+            Flow outFlow = axismodule.getOutFlow();
+
+            if (outFlow != null) {
+                Utils.addFlowHandlers(outFlow, moduleClassLoader);
+            }
+
+            Flow faultInFlow = axismodule.getFaultInFlow();
+
+            if (faultInFlow != null) {
+                Utils.addFlowHandlers(faultInFlow, moduleClassLoader);
+            }
+
+            Flow faultOutFlow = axismodule.getFaultOutFlow();
+
+            if (faultOutFlow != null) {
+                Utils.addFlowHandlers(faultOutFlow, moduleClassLoader);
+            }
+        } catch (AxisFault axisFault) {
+            throw new DeploymentException(axisFault);
+        }
+        return axismodule;
+    }
+
+    /**
+     * Fills an axisservice object using services.xml. First creates
+     * an axisservice object using WSDL and then fills it using the given services.xml.
+     * Loads all the required class and builds the chains, finally adds the
+     * servicecontext to EngineContext and axisservice into EngineConfiguration.
+     *
+     * @param serviceInputStream
+     * @param classLoader
+     * @return Returns AxisService.
+     * @throws DeploymentException
+     */
+    public static AxisService buildService(InputStream serviceInputStream,
+                                           ClassLoader classLoader,
+                                           ConfigurationContext configCtx)
+            throws DeploymentException {
+        AxisService axisService = new AxisService();
+        try {
+
+            AxisConfiguration axisConfig = configCtx.getAxisConfiguration();
+            Parameter parahotupdate = axisConfig.getParameter(TAG_HOT_UPDATE);
+            boolean antiJARLocking = true;
+            if (parahotupdate != null) {
+                String value = (String) parahotupdate.getValue();
+
+                if ("false".equalsIgnoreCase(value)) {
+                    antiJARLocking = false;
+                }
+            }
+            ArchiveFileData currentArchiveFile = new ArchiveFileData(
+                    DeploymentConstants.TYPE_SERVICE, "", antiJARLocking);
+            currentArchiveFile.setClassLoader(classLoader);
+
+            ServiceBuilder builder = new ServiceBuilder(serviceInputStream, configCtx,
+                    axisService);
+
+            builder.populateService(builder.buildOM());
+        } catch (AxisFault axisFault) {
+            throw new DeploymentException(axisFault);
+        } catch (XMLStreamException e) {
+            throw new DeploymentException(e);
+        }
+
+        return axisService;
+    }
+
+    /**
+     * To build a AxisServiceGroup for a given services.xml
+     * You have to add the created group into AxisConfig
+     *
+     * @param servicesxml      : inpupstream create using services.xml
+     * @param classLoader      : corresponding class loader to load the class
+     * @param serviceGroupName : name of the service group
+     * @throws AxisFault
+     */
+    public static AxisServiceGroup buildServiceGroup(InputStream servicesxml,
+                                                     ClassLoader classLoader,
+                                                     String serviceGroupName,
+                                                     ConfigurationContext configCtx,
+                                                     ArchiveReader archiveReader,
+                                                     HashMap wsdlServices) throws AxisFault {
+        ArchiveFileData currentArchiveFile = new ArchiveFileData(
+                DeploymentConstants.TYPE_SERVICE, "", false);
+        currentArchiveFile.setClassLoader(classLoader);
+        AxisServiceGroup serviceGroup = new AxisServiceGroup();
+        serviceGroup.setServiceGroupClassLoader(classLoader);
+        serviceGroup.setServiceGroupName(serviceGroupName);
+        AxisConfiguration axisConfig = configCtx.getAxisConfiguration();
+        try {
+            ArrayList serviceList = archiveReader.buildServiceGroup(servicesxml,
+                    currentArchiveFile, serviceGroup,
+                    wsdlServices, configCtx);
+            fillServiceGroup(serviceGroup, serviceList, null, axisConfig);
+            return serviceGroup;
+        } catch (XMLStreamException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    public File getServicesDir() {
+        return servicesDir;
+    }
+
+    public File getModulesDir() {
+        return modulesDir;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentErrorMsgs.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentErrorMsgs.java
new file mode 100644
index 0000000..c55332f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentErrorMsgs.java
@@ -0,0 +1,63 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+public class DeploymentErrorMsgs {
+    public static final String ADDING_NEW_MODULE = "addingnewmodule";
+    public static final String BAD_MODULE_FROM_OPERATION = "badModuleFromOperation";
+    public static final String BAD_MODULE_FROM_SERVICE = "badModuleFromService";
+    public static final String BAD_PARAMETER_ARGUMENT = "badparaagu";
+    public static final String CONFIG_NOT_FOUND = "confignotfound";
+    public static final String CLASS_NOT_FOUND = "classnotfound";
+    public static final String DEPLOYING_MODULE = "deployeingmodule";
+    public static final String DEPLOYING_WS = "deployingws";
+    public static final String ELEMENT_IS_NOT_ALLOWED = "elementisnotallow";
+    public static final String ERROR_IN_LOADING_MESSAGE_RECEIVER = "errorinloadingmr";
+    public static final String FLOWTYPE_IS_REQUIRED = "flowtypeisrequird";
+    public static final String FILE_NOT_FOUND = "fileNotFound";
+    public static final String INFLOW_NOT_ALLOWED_IN_TRS_OUT = "inflownotallowedintrout";
+    public static final String INVALID_HANDLER = "invalidhandler";
+    public static final String INVALID_MODULE = "invalidmodule";
+    public static final String INVALID_MODULE_CONFIG = "invalidmoduleconfig";
+    public static final String INVALID_MODULE_REF = "invalidmodulerefbyconfig";
+    public static final String INVALID_OP = "invalid_op";
+    public static final String INVALID_PHASE = "invalidphase";
+    public static final String INVALID_SERVICE = "invalidservice";
+    public static final String INVALID_STORAGE_CLASS = "invalid_storage";
+    public static final String MODULE_CANNOT_HAVE_BOTH_NAME_AND_REFERENCE =
+            "modulecannothavrbothnameandref";
+    public static final String MODULE_NOT_FOUND = "modulenotfound";
+    public static final String MODULE_VALIDATION_FAILED = "modulevalfailed";
+    public static final String MODULE_XML_MISSING = "modulexmlnotfound";
+    public static final String META_INF_MISSING = "noMetaInf";
+    public static final String OBSERVER_ERROR = "obsererror";
+    public static final String OPERATION_PROCESS_ERROR = "op_error";
+    public static final String OUTFLOW_NOT_ALLOWED_IN_TRS_IN =
+            "outflownotallowedintrin";
+    public static final String PARAMETER_LOCKED = "parameterlockederror";
+    public static final String PATH_TO_CONFIG_CANNOT_BE_NULL = "pathtoconfigcanotnull";
+    public static final String REPOSITORY_CANNOT_BE_NULL = "repocannotbebull";
+    public static final String SERVICE_MODULE_CANNOT_REFER_GLOBAL_PHASE =
+            "servicemodulecannothaveglobal";
+    public static final String SERVICE_NAME_ERROR = "servicenameeror";
+    public static final String SERVICE_REMOVED = "serviceremoved";
+    public static final String SERVICE_XML_NOT_FOUND = "servicexmlnotfound";
+    public static final String ERROR_SETTING_CLIENT_HOME = "settingcl";
+    public static final String TRANSPORT_SENDER_ERROR = "transportSenderError";
+    public static final String XML_STREAM_EXCEPTION = "StreamException";
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentException.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentException.java
new file mode 100644
index 0000000..c289f04
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DeploymentException.java
@@ -0,0 +1,37 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axis2.AxisFault;
+
+public class DeploymentException extends AxisFault {
+
+	private static final long serialVersionUID = -206215612208580684L;
+
+	public DeploymentException(String message) {
+        super(message);
+    }
+
+    public DeploymentException(Throwable cause) {
+        super(cause);
+    }
+
+    public DeploymentException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java
new file mode 100644
index 0000000..54c01f4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java
@@ -0,0 +1,557 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.util.Loader;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.PolicyReference;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * This class does the common tasks for all *Builder class.
+ */
+public class DescriptionBuilder implements DeploymentConstants {
+
+    private static final Log log = LogFactory.getLog(DescriptionBuilder.class);
+
+    protected ConfigurationContext configCtx;
+
+    protected AxisConfiguration axisConfig;
+
+    protected InputStream descriptionStream;
+
+    public DescriptionBuilder() {
+    }
+
+    public DescriptionBuilder(InputStream serviceInputStream,
+                              ConfigurationContext configCtx) {
+        this.configCtx = configCtx;
+        this.descriptionStream = serviceInputStream;
+        this.axisConfig = this.configCtx.getAxisConfiguration();
+    }
+
+    public DescriptionBuilder(InputStream serviceInputStream,
+                              AxisConfiguration axisConfig) {
+        this.descriptionStream = serviceInputStream;
+        this.axisConfig = axisConfig;
+    }
+
+    /**
+     * Creates OMElement for a given description document (axis2.xml ,
+     * services.xml and module.xml).
+     *
+     * @return Returns <code>OMElement</code> .
+     * @throws javax.xml.stream.XMLStreamException
+     *
+     */
+    public OMElement buildOM() throws XMLStreamException {
+        XMLStreamReader xmlReader = StAXUtils
+                .createXMLStreamReader(descriptionStream);
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac, xmlReader);
+        OMElement element = staxOMBuilder.getDocumentElement();
+
+        element.build();
+
+        return element;
+    }
+
+    /**
+     * Loads default message receivers. First searches in Axiservice for the
+     * given mepURL, if not found searches in AxisConfiguration with the given
+     * mepURL.
+     *
+     * @param mepURL  :
+     *                can be null
+     * @param service :
+     *                This can be null <code>AxisService</code>
+     */
+    protected MessageReceiver loadDefaultMessageReceiver(String mepURL,
+                                                         AxisService service) {
+        MessageReceiver messageReceiver;
+        if (mepURL == null) {
+            mepURL = WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT;
+        }
+        if (service != null) {
+            messageReceiver = service.getMessageReceiver(mepURL);
+            if (messageReceiver != null)
+                return messageReceiver;
+        }
+        return axisConfig.getMessageReceiver(mepURL);
+    }
+
+    /**
+     * Processes default message receivers specified either in axis2.xml or
+     * services.xml.
+     *
+     * @param messageReceivers
+     */
+    protected HashMap processMessageReceivers(OMElement messageReceivers)
+            throws DeploymentException {
+        HashMap mr_mep = new HashMap();
+        Iterator msgReceivers = messageReceivers.getChildrenWithName(new QName(
+                TAG_MESSAGE_RECEIVER));
+        while (msgReceivers.hasNext()) {
+            OMElement msgReceiver = (OMElement) msgReceivers.next();
+            MessageReceiver receiver = loadMessageReceiver(Thread
+                    .currentThread().getContextClassLoader(), msgReceiver);
+            OMAttribute mepAtt = msgReceiver.getAttribute(new QName(TAG_MEP));
+            mr_mep.put(mepAtt.getAttributeValue(), receiver);
+        }
+        return mr_mep;
+    }
+
+    /**
+     * Processes default message receivers specified either in axis2.xml or
+     * services.xml.
+     *
+     * @param element
+     */
+    protected HashMap processMessageReceivers(ClassLoader loader,
+                                              OMElement element) throws DeploymentException {
+        HashMap meps = new HashMap();
+        Iterator iterator = element.getChildrenWithName(new QName(
+                TAG_MESSAGE_RECEIVER));
+        while (iterator.hasNext()) {
+            OMElement receiverElement = (OMElement) iterator.next();
+            MessageReceiver receiver = loadMessageReceiver(loader,
+                    receiverElement);
+            OMAttribute mepAtt = receiverElement
+                    .getAttribute(new QName(TAG_MEP));
+            meps.put(mepAtt.getAttributeValue(), receiver);
+        }
+        return meps;
+    }
+
+    protected MessageReceiver loadMessageReceiver(ClassLoader loader,
+                                                  OMElement element) throws DeploymentException {
+        OMAttribute receiverName = element.getAttribute(new QName(
+                TAG_CLASS_NAME));
+        String className = receiverName.getAttributeValue();
+        MessageReceiver receiver = null;
+
+        try {
+            Class messageReceiver;
+
+            if ((className != null) && !"".equals(className)) {
+                messageReceiver = Loader.loadClass(loader, className);
+                receiver = (MessageReceiver) messageReceiver.newInstance();
+            }
+        } catch (ClassNotFoundException e) {
+            throw new DeploymentException(Messages.getMessage(
+                    DeploymentErrorMsgs.ERROR_IN_LOADING_MESSAGE_RECEIVER,
+                    "ClassNotFoundException", className), e);
+        } catch (IllegalAccessException e) {
+            throw new DeploymentException(Messages.getMessage(
+                    DeploymentErrorMsgs.ERROR_IN_LOADING_MESSAGE_RECEIVER,
+                    "IllegalAccessException", className), e);
+        } catch (InstantiationException e) {
+            throw new DeploymentException(Messages.getMessage(
+                    DeploymentErrorMsgs.ERROR_IN_LOADING_MESSAGE_RECEIVER,
+                    "InstantiationException", className), e);
+        }
+
+        return receiver;
+    }
+
+    /**
+     * Processes flow elements in services.xml .
+     *
+     * @param flowelement <code>OMElement</code>
+     * @return Returns Flow.
+     * @throws DeploymentException <code>DeploymentException</code>
+     */
+    protected Flow processFlow(OMElement flowelement, ParameterInclude parent)
+            throws DeploymentException {
+        Flow flow = new Flow();
+
+        if (flowelement == null) {
+            return flow;
+        }
+
+        Iterator handlers = flowelement.getChildrenWithName(new QName(
+                TAG_HANDLER));
+
+        while (handlers.hasNext()) {
+            OMElement handlerElement = (OMElement) handlers.next();
+
+            flow.addHandler(processHandler(handlerElement, parent));
+        }
+
+        return flow;
+    }
+
+    protected String[] processSupportedPolicyNamespaces(
+            OMElement supportedPolicyElements) {
+        OMAttribute namespaces = supportedPolicyElements
+                .getAttribute(new QName(TAG_NAMESPACES));
+        if (namespaces != null) {
+            String value = namespaces.getAttributeValue();
+            if (value.trim().length() != 0) {
+                return value.split(" ");
+            }
+        }
+        return null;
+    }
+
+    protected QName[] getLocalPolicyAssertionNames(OMElement localPolicyAssertionsElement) {
+
+        Iterator iterator = localPolicyAssertionsElement.getChildElements();
+        if (! iterator.hasNext()) {
+            return null;
+        }
+
+        ArrayList qnames = new ArrayList();
+        OMElement childElement;
+
+        for (; iterator.hasNext();) {
+            childElement = (OMElement) iterator.next();
+            qnames.add(childElement.getQName());
+        }
+
+        QName[] buffer = new QName[qnames.size()];
+        System.arraycopy(qnames.toArray(), 0, buffer, 0, qnames.size());
+        return buffer;
+
+    }
+
+    /**
+     * Processes Handler element.
+     *
+     * @param handler_element <code>OMElement</code>
+     * @return Returns HandlerDescription.
+     * @throws DeploymentException <code>DeploymentException</code>
+     */
+    protected HandlerDescription processHandler(OMElement handler_element,
+                                                ParameterInclude parent) throws DeploymentException {
+        HandlerDescription handler = new HandlerDescription();
+
+        // Setting handler name
+        OMAttribute name_attribute = handler_element.getAttribute(new QName(
+                ATTRIBUTE_NAME));
+
+        if (name_attribute == null) {
+            throw new DeploymentException(Messages.getMessage(
+                    DeploymentErrorMsgs.INVALID_HANDLER, "Name missing"));
+        } else {
+            handler.setName(name_attribute.getAttributeValue());
+        }
+
+        // Setting handler class name
+        OMAttribute class_attribute = handler_element.getAttribute(new QName(
+                TAG_CLASS_NAME));
+
+        if (class_attribute == null) {
+            throw new DeploymentException((Messages.getMessage(
+                    DeploymentErrorMsgs.INVALID_HANDLER,
+                    "class name is missing")));
+        } else {
+            handler.setClassName(class_attribute.getAttributeValue());
+        }
+
+        // processing phase rules (order)
+        OMElement order_element = handler_element
+                .getFirstChildWithName(new QName(TAG_ORDER));
+
+        if (order_element == null) {
+            throw new DeploymentException((Messages.getMessage(
+                    DeploymentErrorMsgs.INVALID_HANDLER,
+                    "phase rule has not been specified")));
+        } else {
+            Iterator order_itr = order_element.getAllAttributes();
+
+            while (order_itr.hasNext()) {
+                OMAttribute orderAttribute = (OMAttribute) order_itr.next();
+                String name = orderAttribute.getQName().getLocalPart();
+                String value = orderAttribute.getAttributeValue();
+
+                if (TAG_AFTER.equals(name)) {
+                    handler.getRules().setAfter(value);
+                } else if (TAG_BEFORE.equals(name)) {
+                    handler.getRules().setBefore(value);
+                } else if (TAG_PHASE.equals(name)) {
+                    handler.getRules().setPhaseName(value);
+                } else if (TAG_PHASE_FIRST.equals(name)) {
+                    String boolval = getValue(value);
+
+                    if (boolval.equals(BOOLEAN_TRUE)) {
+                        handler.getRules().setPhaseFirst(true);
+                    } else if (boolval.equals(BOOLEAN_FALSE)) {
+                        handler.getRules().setPhaseFirst(false);
+                    }
+                } else if (TAG_PHASE_LAST.equals(name)) {
+                    String boolval = getValue(value);
+
+                    if (boolval.equals(BOOLEAN_TRUE)) {
+                        handler.getRules().setPhaseLast(true);
+                    } else if (boolval.equals(BOOLEAN_FALSE)) {
+                        handler.getRules().setPhaseLast(false);
+                    }
+                }
+            }
+
+            Iterator parameters = handler_element
+                    .getChildrenWithName(new QName(TAG_PARAMETER));
+
+            processParameters(parameters, handler, parent);
+        }
+
+        handler.setParent(parent);
+
+        return handler;
+    }
+
+    protected void processOperationModuleRefs(Iterator moduleRefs,
+                                              AxisOperation operation) throws DeploymentException {
+        try {
+            while (moduleRefs.hasNext()) {
+                OMElement moduleref = (OMElement) moduleRefs.next();
+                OMAttribute moduleRefAttribute = moduleref
+                        .getAttribute(new QName(TAG_REFERENCE));
+
+                if (moduleRefAttribute != null) {
+                    String refName = moduleRefAttribute.getAttributeValue();
+
+                    if (axisConfig.getModule(new QName(refName)) == null) {
+                        throw new DeploymentException(Messages.getMessage(
+                                DeploymentErrorMsgs.MODULE_NOT_FOUND, refName));
+                    } else {
+                        operation.addModule(new QName(refName));
+                    }
+                }
+            }
+        } catch (AxisFault axisFault) {
+            throw new DeploymentException(Messages.getMessage(
+                    DeploymentErrorMsgs.MODULE_NOT_FOUND, axisFault
+                    .getMessage()), axisFault);
+        }
+    }
+
+    /**
+     * Gets the Parameter object from the OM.
+     *
+     * @param parameters       <code>Parameter</code>
+     * @param parameterInclude <code>ParameterInclude</code>
+     * @param parent           <code>ParameterInclude</code>
+     */
+    protected void processParameters(Iterator parameters,
+                                     ParameterInclude parameterInclude, ParameterInclude parent)
+            throws DeploymentException {
+        while (parameters.hasNext()) {
+            // this is to check whether some one has locked the parmeter at the
+            // top level
+            OMElement parameterElement = (OMElement) parameters.next();
+            Parameter parameter = new Parameter();
+            // setting parameterElement
+            parameter.setParameterElement(parameterElement);
+            // setting parameter Name
+            OMAttribute paramName = parameterElement.getAttribute(new QName(
+                    ATTRIBUTE_NAME));
+            if (paramName == null) {
+                throw new DeploymentException(Messages.getMessage(
+                        DeploymentErrorMsgs.BAD_PARAMETER_ARGUMENT,
+                        parameterElement.toString()));
+            }
+            parameter.setName(paramName.getAttributeValue());
+            // setting parameter Value (the child element of the parameter)
+            OMElement paramValue = parameterElement.getFirstElement();
+            if (paramValue != null) {
+                parameter.setValue(parameterElement);
+                parameter.setParameterType(Parameter.OM_PARAMETER);
+            } else {
+                String paratextValue = parameterElement.getText();
+
+                parameter.setValue(paratextValue);
+                parameter.setParameterType(Parameter.TEXT_PARAMETER);
+            }
+            // setting locking attribute
+            OMAttribute paramLocked = parameterElement.getAttribute(new QName(
+                    ATTRIBUTE_LOCKED));
+            Parameter parentParam = null;
+            if (parent != null) {
+                parentParam = parent.getParameter(parameter.getName());
+            }
+            if (paramLocked != null) {
+                String lockedValue = paramLocked.getAttributeValue();
+                if (BOOLEAN_TRUE.equals(lockedValue)) {
+                    // if the parameter is locked at some level parameter value
+                    // replace by that
+                    if ((parent != null)
+                            && parent.isParameterLocked(parameter.getName())) {
+                        throw new DeploymentException(Messages.getMessage(
+                                DeploymentErrorMsgs.CONFIG_NOT_FOUND, parameter
+                                .getName()));
+                    } else {
+                        parameter.setLocked(true);
+                    }
+                } else {
+                    parameter.setLocked(false);
+                }
+            }
+            try {
+                if (parent != null) {
+                    if ((parentParam == null)
+                            || !parent.isParameterLocked(parameter.getName())) {
+                        parameterInclude.addParameter(parameter);
+                    }
+                } else {
+                    parameterInclude.addParameter(parameter);
+                }
+            } catch (AxisFault axisFault) {
+                throw new DeploymentException(axisFault);
+            }
+        }
+    }
+
+    /**
+     * Populate the AxisOperation with details from the actionMapping,
+     * outputActionMapping and faultActionMapping elements from the operation
+     * element.
+     *
+     * @param operation
+     * @param op_descrip
+     */
+    protected void processActionMappings(OMElement operation,
+                                         AxisOperation op_descrip) {
+        Iterator mappingIterator = operation.getChildrenWithName(new QName(
+                Constants.ACTION_MAPPING));
+        ArrayList mappingList = new ArrayList();
+        while (mappingIterator.hasNext()) {
+            OMElement mappingElement = (OMElement) mappingIterator.next();
+            String inputActionString = mappingElement.getText().trim();
+            if (log.isTraceEnabled()) {
+                log.trace("Input Action Mapping found: " + inputActionString);
+            }
+            if (!"".equals(inputActionString)) {
+                mappingList.add(inputActionString);
+            } else {
+                if (log.isTraceEnabled()) {
+                    log.trace("Zero length input action string found. Not added to mapping");
+                }
+            }
+        }
+        op_descrip.setWsamappingList(mappingList);
+
+        OMElement outputAction = operation.getFirstChildWithName(new QName(
+                Constants.OUTPUT_ACTION_MAPPING));
+        if ((outputAction != null) && (outputAction.getText() != null)) {
+            String outputActionString = outputAction.getText().trim();
+            if (log.isTraceEnabled()) {
+                log.trace("Output Action Mapping found: " + outputActionString);
+            }
+            op_descrip.setOutputAction(outputActionString);
+        }
+        Iterator faultActionsIterator = operation
+                .getChildrenWithName(new QName(Constants.FAULT_ACTION_MAPPING));
+        while (faultActionsIterator.hasNext()) {
+            OMElement faultMappingElement = (OMElement) faultActionsIterator
+                    .next();
+            String faultActionString = faultMappingElement.getText().trim();
+            String faultActionName = faultMappingElement
+                    .getAttributeValue(new QName(Constants.FAULT_ACTION_NAME));
+            if (faultActionName != null && faultActionString != null) {
+                if (log.isTraceEnabled()) {
+                    log.trace("Fault Action Mapping found: " + faultActionName
+                            + ", " + faultActionString);
+                }
+                op_descrip.addFaultAction(faultActionName, faultActionString);
+            }
+        }
+    }
+
+    protected void processPolicyElements(int type, Iterator policyElements,
+                                         PolicyInclude policyInclude) {
+        while (policyElements.hasNext()) {
+            Policy p = PolicyEngine
+                    .getPolicy((OMElement) policyElements.next());
+            policyInclude.addPolicyElement(type, p);
+        }
+    }
+
+    protected void processPolicyRefElements(int type,
+                                            Iterator policyRefElements, PolicyInclude policyInclude) {
+
+        while (policyRefElements.hasNext()) {
+            PolicyReference policyReference = PolicyEngine
+                    .getPolicyReference((OMElement) policyRefElements.next());
+            policyInclude.addPolicyRefElement(type, policyReference);
+        }
+    }
+
+    /**
+     * Gets the short file name. Short file name is the name before the dot.
+     *
+     * @param fileName
+     * @return Returns String.
+     */
+    public static String getShortFileName(String fileName) {
+        char seperator = SEPARATOR_DOT;
+        String value;
+        int index = fileName.lastIndexOf(seperator);
+
+        if (index > 0) {
+            value = fileName.substring(0, index);
+
+            return value;
+        }
+
+        return fileName;
+    }
+
+    /**
+     * Gets the value of an attribute. eg xsd:anyVal --> anyVal
+     *
+     * @return Returns String.
+     */
+    protected String getValue(String in) {
+        char seperator = SEPARATOR_COLON;
+        String value;
+        int index = in.indexOf(seperator);
+
+        if (index > 0) {
+            value = in.substring(index + 1, in.length());
+
+            return value;
+        }
+
+        return in;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/FileSystemConfigurator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/FileSystemConfigurator.java
new file mode 100644
index 0000000..2116d34
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/FileSystemConfigurator.java
@@ -0,0 +1,132 @@
+package org.apache.axis2.deployment;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.AxisConfigurator;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.FileNotFoundException;

+import java.io.InputStream;

+

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class FileSystemConfigurator extends DeploymentEngine implements AxisConfigurator {

+

+	private static final Log log = LogFactory.getLog(FileSystemConfigurator.class);

+    /**

+     * To check whether need to create a service side or client side

+     */

+    private String axis2xml = null;

+    private String repoLocation = null;

+

+    /**

+     * Load an AxisConfiguration from the repository directory specified

+     *

+     * @param repoLocation

+     * @param axis2xml

+     */

+    public FileSystemConfigurator(String repoLocation, String axis2xml) {

+        if (repoLocation == null) {

+            //checking wether user has set the system property

+            repoLocation = System.getProperty(Constants.AXIS2_REPO);

+        }

+

+        // OK, we've got a repository location in mind.  Let's make

+        // sure it exists.

+        try {

+            if (repoLocation != null) {

+                File repo = new File(repoLocation);

+                if (repo.exists()) {

+                    // ok, save it if so

+                    this.repoLocation = repo.getAbsolutePath();

+                }

+            }

+        } catch (Exception e) {

+            log.info("Couldn't find repository location '" +

+                    repoLocation + "'");

+            this.repoLocation = null;

+        }

+

+        // Deal with the config file.  If a filename was specified as an

+        // arg to this constructor, just respect it.

+        if (axis2xml == null) {

+            // If not, check for a system property setting

+            axis2xml = System.getProperty(Constants.AXIS2_CONF);

+            // In either case, check that the file exists... if not

+            // we'll use the default axis2.xml on the classpath.

+            if (axis2xml != null) {

+                try {

+                    File configFile = new File(axis2xml);

+                    if (!configFile.exists()) {

+                        axis2xml = null;

+                    }

+                } catch (Exception e) {

+                    axis2xml = null;

+                    log.info("Error in file (axis2.xml) creation inside FileSystemConfigurator");

+                }

+            }

+        }

+

+        this.axis2xml = axis2xml;

+    }

+

+    /**

+     * First create a Deployment engine, use that to create an AxisConfiguration

+     *

+     * @return Axis Configuration

+     * @throws AxisFault

+     */

+    public synchronized AxisConfiguration getAxisConfiguration() throws AxisFault {

+        InputStream axis2xmlSream;

+        try {

+            if (axis2xml != null && !"".equals(axis2xml)) {

+                axis2xmlSream = new FileInputStream(axis2xml);

+            } else {

+                ClassLoader cl = Thread.currentThread().getContextClassLoader();

+                axis2xmlSream = cl.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);

+            }

+            axisConfig = populateAxisConfiguration(axis2xmlSream);

+        } catch (FileNotFoundException e) {

+            throw new AxisFault("System can not find the given axis2.xml " + axis2xml);

+        }

+        Parameter axis2repoPara = axisConfig.getParameter(DeploymentConstants.AXIS2_REPO);

+        if (axis2repoPara != null) repoLocation = (String) axis2repoPara.getValue();

+        if (!(repoLocation == null || "".equals(repoLocation))) {

+            loadRepository(repoLocation);

+        } else {

+            loadFromClassPath();

+        }

+        return axisConfig;

+    }

+

+    public void engageGlobalModules() throws AxisFault {

+        engageModules();

+    }

+

+    public void loadServices() {

+        if (!(repoLocation == null || "".equals(repoLocation))) {

+            super.loadServices();

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder.java
new file mode 100644
index 0000000..660dc62
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder.java
@@ -0,0 +1,265 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.util.Loader;
+import org.apache.axis2.deployment.util.PhasesInfo;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisOperationFactory;
+import org.apache.axis2.description.InOnlyAxisOperation;
+import org.apache.axis2.description.PolicyInclude;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.modules.Module;
+
+/**
+ * Builds a module description from OM
+ */
+public class ModuleBuilder extends DescriptionBuilder {
+    private AxisModule module;
+
+    public ModuleBuilder(InputStream serviceInputStream, AxisModule module,
+                         AxisConfiguration axisConfig) {
+        super(serviceInputStream, axisConfig);
+        this.module = module;
+    }
+
+    private void loadModuleClass(AxisModule module, String moduleClassName)
+            throws DeploymentException {
+        Class moduleClass;
+
+        try {
+            if ((moduleClassName != null) && !"".equals(moduleClassName)) {
+                moduleClass = Loader.loadClass(module.getModuleClassLoader(), moduleClassName);
+                module.setModule((Module) moduleClass.newInstance());
+            }
+        } catch (Exception e) {
+            throw new DeploymentException(e.getMessage(), e);
+        }
+    }
+
+    public void populateModule() throws DeploymentException {
+        try {
+            OMElement moduleElement = buildOM();
+            // Setting Module Class , if it is there
+            OMAttribute moduleClassAtt = moduleElement.getAttribute(new QName(TAG_CLASS_NAME));
+
+            if (moduleClassAtt != null) {
+                String moduleClass = moduleClassAtt.getAttributeValue();
+
+                if ((moduleClass != null) && !"".equals(moduleClass)) {
+                    loadModuleClass(module, moduleClass);
+                }
+            }
+
+// process service description
+            OMElement descriptionElement =
+                    moduleElement.getFirstChildWithName(new QName(TAG_DESCRIPTION));
+
+            if (descriptionElement != null) {
+                OMElement descriptionValue = descriptionElement.getFirstElement();
+
+                if (descriptionValue != null) {
+                    StringWriter writer = new StringWriter();
+
+                    descriptionValue.build();
+                    descriptionValue.serialize(writer);
+                    writer.flush();
+                    module.setModuleDescription(writer.toString());
+                } else {
+                    module.setModuleDescription(descriptionElement.getText());
+                }
+            } else {
+                module.setModuleDescription("module description not found");
+            }
+
+            // setting the PolicyInclude
+
+            // processing <wsp:Policy> .. </..> elements
+            Iterator policyElements = moduleElement.getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY));
+
+            if (policyElements != null && policyElements.hasNext()) {
+                processPolicyElements(PolicyInclude.AXIS_MODULE_POLICY, policyElements, module.getPolicyInclude());
+            }
+
+            // processing <wsp:PolicyReference> .. </..> elements
+            Iterator policyRefElements = moduleElement.getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY_REF));
+
+            if (policyRefElements != null && policyElements.hasNext()) {
+                processPolicyRefElements(PolicyInclude.AXIS_MODULE_POLICY, policyRefElements, module.getPolicyInclude());
+            }
+
+            // processing Parameters
+            // Processing service level parameters
+            Iterator itr = moduleElement.getChildrenWithName(new QName(TAG_PARAMETER));
+
+            processParameters(itr, module, module.getParent());
+
+            // process INFLOW
+            OMElement inFlow = moduleElement.getFirstChildWithName(new QName(TAG_FLOW_IN));
+
+            if (inFlow != null) {
+                module.setInFlow(processFlow(inFlow, module));
+            }
+
+            OMElement outFlow = moduleElement.getFirstChildWithName(new QName(TAG_FLOW_OUT));
+
+            if (outFlow != null) {
+                module.setOutFlow(processFlow(outFlow, module));
+            }
+
+            OMElement inFaultFlow = moduleElement.getFirstChildWithName(new QName(TAG_FLOW_IN_FAULT));
+
+            if (inFaultFlow != null) {
+                module.setFaultInFlow(processFlow(inFaultFlow, module));
+            }
+
+            OMElement outFaultFlow = moduleElement.getFirstChildWithName(new QName(TAG_FLOW_OUT_FAULT));
+
+            if (outFaultFlow != null) {
+                module.setFaultOutFlow(processFlow(outFaultFlow, module));
+            }
+
+            OMElement supportedPolicyNamespaces = moduleElement.getFirstChildWithName(new QName(TAG_SUPPORTED_POLICY_NAMESPACES));
+
+            if (supportedPolicyNamespaces != null) {
+                module.setSupportedPolicyNamespaces(processSupportedPolicyNamespaces(supportedPolicyNamespaces));
+            }
+            
+            
+            /*
+             * Module description should contain a list of QName of the assertions that are local to the system.
+             * These assertions are not exposed to the outside.
+             */
+            OMElement localPolicyAssertionElement = moduleElement.getFirstChildWithName(new QName("local-policy-assertions"));
+            
+            if (localPolicyAssertionElement != null) {
+                module.setLocalPolicyAssertions(getLocalPolicyAssertionNames(localPolicyAssertionElement));
+            }
+            
+
+            // processing Operations
+            Iterator op_itr = moduleElement.getChildrenWithName(new QName(TAG_OPERATION));
+            ArrayList operations = processOperations(op_itr);
+
+            for (int i = 0; i < operations.size(); i++) {
+                AxisOperation operation = (AxisOperation) operations.get(i);
+
+                module.addOperation(operation);
+            }
+        } catch (XMLStreamException e) {
+            throw new DeploymentException(e);
+        }
+    }
+
+    private ArrayList processOperations(Iterator operationsIterator) throws DeploymentException {
+        ArrayList operations = new ArrayList();
+
+        while (operationsIterator.hasNext()) {
+            OMElement operation = (OMElement) operationsIterator.next();
+
+            //getting operation name
+            OMAttribute op_name_att = operation.getAttribute(new QName(ATTRIBUTE_NAME));
+
+            if (op_name_att == null) {
+                throw new DeploymentException(
+                        Messages.getMessage(
+                                Messages.getMessage(
+                                        DeploymentErrorMsgs.INVALID_OP, "operation name missing")));
+            }
+
+            OMAttribute op_mep_att = operation.getAttribute(new QName(TAG_MEP));
+            String mepURL = null;
+            AxisOperation op_descrip;
+
+            if (op_mep_att != null) {
+                mepURL = op_mep_att.getAttributeValue();
+            }
+
+            if (mepURL == null) {
+
+                // assuming in-out MEP
+                op_descrip = new InOnlyAxisOperation();
+            } else {
+                try {
+                    op_descrip = AxisOperationFactory.getOperationDescription(mepURL);
+                } catch (AxisFault axisFault) {
+                    throw new DeploymentException(
+                            Messages.getMessage(
+                                    Messages.getMessage(
+                                            DeploymentErrorMsgs.OPERATION_PROCESS_ERROR,
+                                            axisFault.getMessage())));
+                }
+            }
+
+            String opname = op_name_att.getAttributeValue();
+
+            op_descrip.setName(new QName(opname));
+
+            // Operation Parameters
+            Iterator parameters = operation.getChildrenWithName(new QName(TAG_PARAMETER));
+            processParameters(parameters, op_descrip, module);
+
+            //To process wsamapping;
+            processActionMappings(operation, op_descrip);
+            
+            // setting the MEP of the operation
+            // loading the message receivers
+            OMElement receiverElement = operation.getFirstChildWithName(new QName(TAG_MESSAGE_RECEIVER));
+
+            if (receiverElement != null) {
+                MessageReceiver messageReceiver =
+                        loadMessageReceiver(module.getModuleClassLoader(), receiverElement);
+                op_descrip.setMessageReceiver(messageReceiver);
+            } else {
+                // setting default message receiver
+                MessageReceiver msgReceiver = loadDefaultMessageReceiver(mepURL, null);
+                op_descrip.setMessageReceiver(msgReceiver);
+            }
+            // Process Module Refs
+            Iterator modules = operation.getChildrenWithName(new QName(TAG_MODULE));
+            processOperationModuleRefs(modules, op_descrip);
+
+            // setting Operation phase
+            PhasesInfo info = axisConfig.getPhasesInfo();
+            try {
+                info.setOperationPhases(op_descrip);
+            } catch (AxisFault axisFault) {
+                throw new DeploymentException(axisFault);
+            }
+
+            // adding the operation
+            operations.add(op_descrip);
+        }
+
+        return operations;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java
new file mode 100644
index 0000000..f8e39ca
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java
@@ -0,0 +1,229 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axis2.deployment.repository.util.ArchiveFileData;
+import org.apache.axis2.deployment.repository.util.WSInfoList;
+import org.apache.axis2.util.Loader;
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.URLDecoder;
+
+public class RepositoryListener implements DeploymentConstants {
+    private DeploymentEngine deploymentEngine;
+
+    /**
+     * The parent directory of the modules and services directories
+     */
+
+    /**
+     * Reference to a WSInfoList
+     */
+    private WSInfoList wsInfoList;
+
+    /**
+     * This constructor takes two arguments, a folder name and a reference to Deployment Engine
+     * First, it initializes the system, by loading all the modules in the /modules directory
+     * and then creates a WSInfoList to store information about available modules and services.
+     *
+     * @param deploymentEngine reference to engine registry for updates
+     */
+
+    //The constructor , which loads modules from class path
+    public RepositoryListener(DeploymentEngine deploymentEngine, boolean isClasspath) {
+        this.deploymentEngine = deploymentEngine;
+        wsInfoList = new WSInfoList(deploymentEngine);
+        if (!isClasspath) {
+            init();
+        }
+        loadClassPathModules();
+    }
+
+    /**
+     * Finds a list of modules in the folder and adds to wsInfoList.
+     */
+    public void checkModules() {
+        File root = deploymentEngine.getModulesDir();
+        File[] files = root.listFiles();
+
+        if (files != null) {
+            for (int i = 0; i < files.length; i++) {
+                File file = files[i];
+                if (isSourceControlDir(file)) {
+                    continue;
+                }
+                if (!file.isDirectory()) {
+                    if (ArchiveFileData.isModuleArchiveFile(file.getName())) {
+                        wsInfoList.addWSInfoItem(file, TYPE_MODULE);
+                    }
+                } else {
+                    if (!"lib".equalsIgnoreCase(file.getName())) {
+                        wsInfoList.addWSInfoItem(file, TYPE_MODULE);
+                    }
+                }
+            }
+        }
+    }
+
+
+    private boolean isSourceControlDir(File file) {
+        if (file.isDirectory()) {
+            String name = file.getName();
+            if (name.equalsIgnoreCase("CVS") || name.equalsIgnoreCase(".svn")) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private void loadClassPathModules() {
+        String classPath = getLocation();
+        int lstindex = classPath.lastIndexOf(File.separatorChar);
+        if (lstindex > 0) {
+            classPath = classPath.substring(0, lstindex);
+        } else {
+            classPath = ".";
+        }
+        File root = new File(classPath);
+        File[] files = root.listFiles();
+        if (files != null) {
+            for (int i = 0; i < files.length; i++) {
+                File file = files[i];
+                if (!file.isDirectory()) {
+                    if (ArchiveFileData.isModuleArchiveFile(file.getName())) {
+                        //adding modules in the class path
+                        wsInfoList.addWSInfoItem(file, TYPE_MODULE);
+                    }
+                }
+            }
+        }
+
+        ClassLoader cl = deploymentEngine.getAxisConfig().getModuleClassLoader();
+        while (cl != null) {
+            if (cl instanceof URLClassLoader) {
+                URL[] urls = ((URLClassLoader) cl).getURLs();
+                for (int i = 0; (urls != null) && i < urls.length; i++) {
+                    String path = urls[i].getPath();
+                    //If it is a drive letter, adjust accordingly.
+                    if (path.length() >= 3 && path.charAt(0) == '/' && path.charAt(2) == ':')
+                        path = path.substring(1);
+                    java.io.File file = new java.io.File(URLDecoder.decode(urls[i].getPath()).replace('/',
+                            File.separatorChar).replace('|', ':'));
+                    if (file.isFile()) {
+                        if (ArchiveFileData.isModuleArchiveFile(file.getName())) {
+                            //adding modules in the class path
+                            wsInfoList.addWSInfoItem(file, TYPE_MODULE);
+                        }
+                    }
+                }
+            }
+            cl = cl.getParent();
+        }
+
+        deploymentEngine.doDeploy();
+    }
+
+    /**
+     * To get the location of the Axis2.jar from that I can drive the location of class path
+     *
+     * @return String (location of the axis2 jar)
+     */
+    private String getLocation() {
+        try {
+            Class clazz = Loader.loadClass("org.apache.axis2.engine.AxisEngine");
+            java.net.URL url = clazz.getProtectionDomain().getCodeSource().getLocation();
+            String location = url.toString();
+            if (location.startsWith("jar")) {
+                url = ((java.net.JarURLConnection) url.openConnection()).getJarFileURL();
+                location = url.toString();
+            }
+            if (location.startsWith("file")) {
+                java.io.File file = new java.io.File(URLDecoder.decode(url.getPath()).replace('/',
+                        File.separatorChar).replace('|', ':'));
+                return file.getAbsolutePath();
+            } else {
+                return url.toString();
+            }
+        } catch (Throwable t) {
+            return "an unknown location";
+        }
+    }
+
+    /**
+     * Finds a list of services in the folder and adds to wsInfoList.
+     */
+    public void checkServices() {
+        findServicesInDirectory();
+        update();
+    }
+
+    /**
+     * First initializes the WSInfoList, then calls checkModule to load all the modules
+     * and calls update() to update the Deployment engine and engine registry.
+     */
+    public void init() {
+        wsInfoList.init();
+        checkModules();
+        deploymentEngine.doDeploy();
+    }
+
+    /**
+     * Searches a given folder for jar files and adds them to a list in the
+     * WSInfolist class.
+     */
+    private void findServicesInDirectory() {
+        File root = deploymentEngine.getServicesDir();
+        File[] files = root.listFiles();
+
+        if (files != null && files.length > 0) {
+            for (int i = 0; i < files.length; i++) {
+                File file = files[i];
+                if (isSourceControlDir(file)) {
+                    continue;
+                }
+                if (!file.isDirectory()) {
+                    if (ArchiveFileData.isServiceArchiveFile(file.getName())) {
+                        wsInfoList.addWSInfoItem(file, TYPE_SERVICE);
+                    }
+                } else {
+                    if (!"lib".equalsIgnoreCase(file.getName())) {
+                        wsInfoList.addWSInfoItem(file, TYPE_SERVICE);
+                    }
+                }
+            }
+        }
+        wsInfoList.addWSInfoItem(null, TYPE_DEFAULT);
+    }
+
+    /**
+     * Method invoked from the scheduler to start the listener.
+     */
+    public void startListener() {
+        checkServices();
+        update();
+    }
+
+    /**
+     * Updates WSInfoList object.
+     */
+    public void update() {
+        wsInfoList.update();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java
new file mode 100644
index 0000000..fbfdd06
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.java
@@ -0,0 +1,671 @@
+/**
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.util.PhasesInfo;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.engine.ObjectSupplier;
+import org.apache.axis2.engine.ServiceLifeCycle;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.util.Loader;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.java2wsdl.Java2WSDLConstants;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.*;
+
+/**
+ * Builds a service description from OM
+ */
+public class ServiceBuilder extends DescriptionBuilder {
+    private static final Log log = LogFactory.getLog(ServiceBuilder.class);
+    private AxisService service;
+
+    public ServiceBuilder(ConfigurationContext configCtx, AxisService service) {
+        this.service = service;
+        this.configCtx = configCtx;
+        this.axisConfig = this.configCtx.getAxisConfiguration();
+    }
+
+    public ServiceBuilder(InputStream serviceInputStream, ConfigurationContext configCtx,
+                          AxisService service) {
+        super(serviceInputStream, configCtx);
+        this.service = service;
+    }
+
+    /**
+     * Populates service from corresponding OM.
+     */
+    public AxisService populateService(OMElement service_element) throws DeploymentException {
+        try {
+            // Processing service level parameters
+            Iterator itr = service_element.getChildrenWithName(new QName(TAG_PARAMETER));
+            processParameters(itr, service, service.getParent());            
+            
+            // process service description
+            OMElement descriptionElement =
+                    service_element.getFirstChildWithName(new QName(TAG_DESCRIPTION));
+            if (descriptionElement != null) {
+                OMElement descriptionValue = descriptionElement.getFirstElement();
+                if (descriptionValue != null) {
+                    StringWriter writer = new StringWriter();
+                    descriptionValue.build();
+                    descriptionValue.serialize(writer);
+                    writer.flush();
+                    service.setServiceDescription(writer.toString());
+                } else {
+                    service.setServiceDescription(descriptionElement.getText());
+                }
+            } else {
+                OMAttribute serviceNameatt = service_element.getAttribute(new QName(ATTRIBUTE_NAME));
+
+                if (serviceNameatt != null) {
+                    if (!"".equals(serviceNameatt.getAttributeValue().trim())) {
+                        service.setServiceDescription(serviceNameatt.getAttributeValue());
+                    }
+                }
+            }
+            OMAttribute serviceNameatt = service_element.getAttribute(new QName(ATTRIBUTE_NAME));
+            
+            // If the service name is explicitly specified in the services.xml
+            // then use that as the service name
+            if (serviceNameatt != null) {
+                if (!"".equals(serviceNameatt.getAttributeValue().trim())) {
+                    service.setName(serviceNameatt.getAttributeValue());
+                    // To be on the safe side
+                    if (service.getServiceDescription() == null) {
+                        service.setServiceDescription(serviceNameatt.getAttributeValue());
+                    }
+                }
+            }
+            
+            if (service.getParameter("ServiceClass") == null){
+                log.info("The Service " + service.getName() + " does not specify a Service Class");
+            }
+            
+            // Process WS-Addressing flag attribute
+            OMAttribute addressingRequiredatt = service_element.getAttribute(new QName(ATTRIBUTE_WSADDRESSING));
+            if (addressingRequiredatt != null) {
+                String addressingRequiredString = addressingRequiredatt.getAttributeValue();
+                service.setWSAddressingFlag(addressingRequiredString);
+            }
+
+            //Setting service target namespace if any
+            OMAttribute targetNameSpace = service_element.
+                    getAttribute(new QName(TARGET_NAME_SPACE));
+            if (targetNameSpace != null) {
+                String nameSpeceVale = targetNameSpace.getAttributeValue();
+                if (nameSpeceVale != null && !"".equals(nameSpeceVale)) {
+                    service.setTargetNamespace(nameSpeceVale);
+                }
+            } else {
+                if (service.getTargetNamespace() == null ||
+                        "".equals(service.getTargetNamespace())) {
+                    service.setTargetNamespace(Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE);
+                }
+            }
+
+            //Processing service lifecycle attribute
+            OMAttribute serviceLifeCycleClass = service_element.
+                    getAttribute(new QName(TAG_CLASS_NAME));
+            if (serviceLifeCycleClass != null) {
+                String className = serviceLifeCycleClass.getAttributeValue();
+                loadServiceLifeCycleClass(className);
+            }
+            //Setting schema namespece if any
+            OMElement schemaElement = service_element.getFirstChildWithName(new QName(SCHEMA));
+            if (schemaElement != null) {
+                OMAttribute schemaNameSpace = schemaElement.
+                        getAttribute(new QName(SCHEMA_NAME_SPACE));
+                if (schemaNameSpace != null) {
+                    String nameSpeceVale = schemaNameSpace.getAttributeValue();
+                    if (nameSpeceVale != null && !"".equals(nameSpeceVale)) {
+                        service.setSchematargetNamespace(nameSpeceVale);
+                    }
+                }
+                OMAttribute elementFormDefault = schemaElement.
+                        getAttribute(new QName(SCHEMA_ELEMENT_QUALIFIED));
+                if (elementFormDefault != null) {
+                    String value = elementFormDefault.getAttributeValue();
+                    if ("true".equals(value)) {
+                        service.setElementFormDefault(true);
+                    } else if ("false".equals(value)) {
+                        service.setElementFormDefault(false);
+                    }
+                }
+
+                //package to namespace mapping. This will be an element that maps pkg names to a namespace
+                //when this is doing AxisService.getSchematargetNamespace will be overridden
+                //This will be <mapping/>  with @namespace and @package
+                Iterator mappingIterator = schemaElement.getChildrenWithName(new QName(MAPPING));
+                if (mappingIterator != null) {
+                    Map pkg2nsMap = new Hashtable();
+                    while (mappingIterator.hasNext()) {
+                        OMElement mappingElement = (OMElement) mappingIterator.next();
+                        OMAttribute namespaceAttribute =
+                                mappingElement.getAttribute(new QName(ATTRIBUTE_NAMESPACE));
+                        OMAttribute packageAttribute =
+                                mappingElement.getAttribute(new QName(ATTRIBUTE_PACKAGE));
+                        if (namespaceAttribute != null && packageAttribute != null) {
+                            String namespaceAttributeValue = namespaceAttribute.getAttributeValue();
+                            String packageAttributeValue = packageAttribute.getAttributeValue();
+                            if (namespaceAttributeValue != null && packageAttributeValue != null) {
+                                pkg2nsMap.put(packageAttributeValue.trim(),
+                                        namespaceAttributeValue.trim());
+                            } else {
+                                log.warn(
+                                        "Either value of @namespce or @packagename not available. Thus, generated will be selected.");
+                            }
+                        } else {
+                            log.warn(
+                                    "Either @namespce or @packagename not available. Thus, generated will be selected.");
+                        }
+                    }
+                    service.setP2nMap(pkg2nsMap);
+
+                }
+
+            }
+
+            //processing Default Message receivers
+            OMElement messageReceiver = service_element.getFirstChildWithName(
+                    new QName(TAG_MESSAGE_RECEIVERS));
+            if (messageReceiver != null) {
+                HashMap mrs = processMessageReceivers(service.getClassLoader(), messageReceiver);
+                Iterator keys = mrs.keySet().iterator();
+                while (keys.hasNext()) {
+                    String key = (String) keys.next();
+                    service.addMessageReceiver(key, (MessageReceiver) mrs.get(key));
+                }
+            }
+
+            //Removing exclude operations
+            OMElement excludeOperations = service_element.getFirstChildWithName(
+                    new QName(TAG_EXCLUDE_OPERATIONS));
+            ArrayList excludeops = null;
+            if (excludeOperations != null) {
+                excludeops = processExcludeOperations(excludeOperations);
+            }
+            if (excludeops == null) {
+                excludeops = new ArrayList();
+            }
+            excludeops.add("init");
+            excludeops.add("setOperationContext");
+            excludeops.add("startUp");
+            excludeops.add("destroy");
+
+            //<schema targetNamespace="http://x.y.z"/>
+            // setting the PolicyInclude
+            // processing <wsp:Policy> .. </..> elements
+            Iterator policyElements = service_element.getChildrenWithName(
+                    new QName(POLICY_NS_URI, TAG_POLICY));
+
+            if (policyElements != null && policyElements.hasNext()) {
+                processPolicyElements(
+                        PolicyInclude.AXIS_SERVICE_POLICY, policyElements,
+                        service.getPolicyInclude());
+            }
+
+            // processing <wsp:PolicyReference> .. </..> elements
+            Iterator policyRefElements = service_element.getChildrenWithName(
+                    new QName(POLICY_NS_URI, TAG_POLICY_REF));
+
+            if (policyRefElements != null && policyRefElements.hasNext()) {
+                processPolicyRefElements(PolicyInclude.AXIS_SERVICE_POLICY,
+                        policyRefElements, service.getPolicyInclude());
+            }
+
+            //processing service scope
+            String sessionScope = service_element.getAttributeValue(new QName(ATTRIBUTE_SCOPE));
+            if (sessionScope != null) {
+                service.setScope(sessionScope);
+            }
+
+            // processing service-wide modules which required to engage globally
+            Iterator moduleRefs = service_element.getChildrenWithName(new QName(TAG_MODULE));
+
+            processModuleRefs(moduleRefs);
+
+            //processing transports
+            OMElement transports = service_element.getFirstChildWithName(new QName(TAG_TRANSPORTS));
+            if (transports != null) {
+                Iterator transport_itr = transports.getChildrenWithName(new QName(TAG_TRANSPORT));
+                ArrayList trs = new ArrayList();
+                while (transport_itr.hasNext()) {
+                    OMElement trsEle = (OMElement) transport_itr.next();
+                    trs.add(trsEle.getText());
+                }
+                service.setExposedTransports(trs);
+            }
+            // processing operations
+            Iterator operationsIterator =
+                    service_element.getChildrenWithName(new QName(TAG_OPERATION));
+            ArrayList ops = processOperations(operationsIterator);
+
+            for (int i = 0; i < ops.size(); i++) {
+                AxisOperation operationDesc = (AxisOperation) ops.get(i);
+                ArrayList wsamappings = operationDesc.getWsamappingList();
+                if (wsamappings == null) {
+                    continue;
+                }
+                if (service.getOperation(operationDesc.getName()) == null) {
+                    service.addOperation(operationDesc);
+                }
+                for (int j = 0; j < wsamappings.size(); j++) {
+                    String mapping = (String) wsamappings.get(j);
+                    if (mapping.length() > 0) {
+                        service.mapActionToOperation(mapping, operationDesc);
+                    }
+                }
+            }
+            String objectSupplierValue = (String) service.getParameterValue(TAG_OBJECT_SUPPLIER);
+            if (objectSupplierValue != null) {
+                loadObjectSupplierClass(objectSupplierValue);
+            }
+            if (!service.isUseUserWSDL()) {
+                // Generating schema for the service if the impl class is Java
+                if (!service.isWsdlFound()) {
+                    //trying to generate WSDL for the service using JAM  and Java reflection
+                    try {
+                        if (generateWsdl(service)) {
+                            Utils.fillAxisService(service, axisConfig, excludeops);
+                        } else {
+                            ArrayList nonRpcOperations = getNonPRCMethods(service);
+                            for (int i = 0; i < excludeops.size(); i++) {
+                                String opName = (String) excludeops.get(i);
+                                nonRpcOperations.add(opName);
+                                Utils.fillAxisService(service, axisConfig, nonRpcOperations);
+                            }
+                        }
+                    } catch (Exception e) {
+                        throw new DeploymentException(
+                                Messages.getMessage("errorinschemagen", e.getMessage()), e);
+                    }
+                }
+            }
+            for (int i = 0; i < excludeops.size(); i++) {
+                String opName = (String) excludeops.get(i);
+                service.removeOperation(new QName(opName));
+            }
+
+            // Set the default message receiver for the operations that were
+            // not listed in the services.xml
+            Iterator operations = service.getPublishedOperations().iterator();
+            while (operations.hasNext()) {
+                AxisOperation operation = (AxisOperation) operations.next();
+                if (operation.getMessageReceiver() == null) {
+                    operation.setMessageReceiver(loadDefaultMessageReceiver(
+                            operation.getMessageExchangePattern(), service));
+                }
+            }
+            Iterator moduleConfigs = service_element.getChildrenWithName(new QName(TAG_MODULE_CONFIG));
+            processServiceModuleConfig(moduleConfigs, service, service);
+        } catch (XMLStreamException e) {
+            throw new DeploymentException(e);
+        } catch (AxisFault axisFault) {
+            throw new DeploymentException(
+                    Messages.getMessage(
+                            DeploymentErrorMsgs.OPERATION_PROCESS_ERROR, axisFault.getMessage()), axisFault);
+        }
+        return service;
+    }
+
+    private void loadObjectSupplierClass(String objectSupplierValue) throws AxisFault {
+        try {
+            ClassLoader loader = service.getClassLoader();
+            Class objectSupplierImpl = Loader.loadClass(loader, objectSupplierValue.trim());
+            ObjectSupplier objectSupplier = (ObjectSupplier) objectSupplierImpl.newInstance();
+            service.setObjectSupplier(
+                    objectSupplier);
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    private void loadServiceLifeCycleClass(String className) throws DeploymentException {
+        if (className != null) {
+            try {
+                ClassLoader loader = service.getClassLoader();
+                Class serviceLifeCycleClassImpl = Loader.loadClass(loader, className);
+                ServiceLifeCycle serviceLifeCycle = (ServiceLifeCycle) serviceLifeCycleClassImpl.newInstance();
+                serviceLifeCycle.startUp(configCtx, service);
+                service.setServiceLifeCycle(
+                        serviceLifeCycle);
+            } catch (Exception e) {
+                throw new DeploymentException(e.getMessage(), e);
+            }
+        }
+    }
+
+
+    private boolean generateWsdl(AxisService axisService) {
+        Iterator operatins = axisService.getOperations();
+        if (operatins.hasNext()) {
+            while (operatins.hasNext()) {
+                AxisOperation axisOperation = (AxisOperation) operatins
+                        .next();
+                if (axisOperation.getMessageReceiver() == null) {
+                    continue;
+                }
+                String messageReceiverClass = axisOperation
+                        .getMessageReceiver().getClass().getName();
+                if (!("org.apache.axis2.rpc.receivers.RPCMessageReceiver"
+                        .equals(messageReceiverClass)
+                        || "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"
+                        .equals(messageReceiverClass)
+                        || "org.apache.axis2.rpc.receivers.RPCInOutAsyncMessageReceiver"
+                        .equals(messageReceiverClass))) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * To get the methods which dose not use RPC* Message Recievers
+     *
+     * @return ArrayList
+     */
+    private ArrayList getNonPRCMethods(AxisService axisService) {
+        ArrayList excludeOperations = new ArrayList();
+        Iterator operatins = axisService.getOperations();
+        if (operatins.hasNext()) {
+            while (operatins.hasNext()) {
+                AxisOperation axisOperation = (AxisOperation) operatins
+                        .next();
+                if (axisOperation.getMessageReceiver() == null) {
+                    continue;
+                }
+                String messageReceiverClass = axisOperation
+                        .getMessageReceiver().getClass().getName();
+                if (!("org.apache.axis2.rpc.receivers.RPCMessageReceiver"
+                        .equals(messageReceiverClass)
+                        || "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"
+                        .equals(messageReceiverClass)
+                        || "org.apache.axis2.rpc.receivers.RPCInOutAsyncMessageReceiver"
+                        .equals(messageReceiverClass))) {
+                    excludeOperations.add(axisOperation.getName().getLocalPart());
+                }
+            }
+        }
+        return excludeOperations;
+    }
+
+    /**
+     * If there is <excludeOperations>
+     * <operation>foo</operation>
+     * </excludeOperations>
+     * <p/>
+     * Then the operation object will be removed from the AxisService , so that
+     * the operation wont be exposed
+     *
+     * @param exculeOperations
+     */
+    private ArrayList processExcludeOperations(OMElement exculeOperations) {
+        ArrayList exOps = new ArrayList();
+        Iterator excludeOp_itr = exculeOperations.getChildrenWithName(new QName(TAG_OPERATION));
+        while (excludeOp_itr.hasNext()) {
+            OMElement opName = (OMElement) excludeOp_itr.next();
+            exOps.add(opName.getText().trim());
+            // service.removeOperation(new QName(opName.getText().trim()));
+        }
+        return exOps;
+    }
+
+    private void processMessages(Iterator messages, AxisOperation operation)
+            throws DeploymentException {
+        while (messages.hasNext()) {
+            OMElement messageElement = (OMElement) messages.next();
+            OMAttribute label = messageElement.getAttribute(new QName(TAG_LABEL));
+
+            if (label == null) {
+                throw new DeploymentException(Messages.getMessage("messagelabelcannotfound"));
+            }
+
+            AxisMessage message = operation.getMessage(label.getAttributeValue());
+
+            Iterator parameters = messageElement.getChildrenWithName(new QName(TAG_PARAMETER));
+
+            // processing <wsp:Policy> .. </..> elements
+            Iterator policyElements = messageElement.getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY));
+
+            if (policyElements != null) {
+                processPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY, policyElements, message.getPolicyInclude());
+            }
+
+            // processing <wsp:PolicyReference> .. </..> elements
+            Iterator policyRefElements = messageElement.getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY_REF));
+
+            if (policyRefElements != null) {
+                processPolicyRefElements(PolicyInclude.AXIS_MESSAGE_POLICY, policyRefElements, message.getPolicyInclude());
+            }
+
+            processParameters(parameters, message, operation);
+
+        }
+    }
+
+    /**
+     * Gets the list of modules that is required to be engaged globally.
+     *
+     * @param moduleRefs <code>java.util.Iterator</code>
+     * @throws DeploymentException <code>DeploymentException</code>
+     */
+    protected void processModuleRefs(Iterator moduleRefs) throws DeploymentException {
+        try {
+            while (moduleRefs.hasNext()) {
+                OMElement moduleref = (OMElement) moduleRefs.next();
+                OMAttribute moduleRefAttribute = moduleref.getAttribute(new QName(TAG_REFERENCE));
+
+                if (moduleRefAttribute != null) {
+                    String refName = moduleRefAttribute.getAttributeValue();
+
+                    if (axisConfig.getModule(new QName(refName)) == null) {
+                        throw new DeploymentException(
+                                Messages.getMessage(DeploymentErrorMsgs.MODULE_NOT_FOUND, refName));
+                    } else {
+                        service.addModuleref(new QName(refName));
+                    }
+                }
+            }
+        } catch (AxisFault axisFault) {
+            throw new DeploymentException(axisFault);
+        }
+    }
+
+    protected void processOperationModuleConfig(Iterator moduleConfigs, ParameterInclude parent,
+                                                AxisOperation operation)
+            throws DeploymentException {
+        while (moduleConfigs.hasNext()) {
+            OMElement moduleConfig = (OMElement) moduleConfigs.next();
+            OMAttribute moduleName_att = moduleConfig.getAttribute(new QName(ATTRIBUTE_NAME));
+
+            if (moduleName_att == null) {
+                throw new DeploymentException(
+                        Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE_CONFIG));
+            } else {
+                String module = moduleName_att.getAttributeValue();
+                ModuleConfiguration moduleConfiguration =
+                        new ModuleConfiguration(new QName(module), parent);
+                Iterator parameters = moduleConfig.getChildrenWithName(new QName(TAG_PARAMETER));
+
+                processParameters(parameters, moduleConfiguration, parent);
+                operation.addModuleConfig(moduleConfiguration);
+            }
+        }
+    }
+
+    private ArrayList processOperations(Iterator operationsIterator) throws AxisFault {
+        ArrayList operations = new ArrayList();
+        while (operationsIterator.hasNext()) {
+            OMElement operation = (OMElement) operationsIterator.next();
+            //getting operation name
+            OMAttribute op_name_att = operation.getAttribute(new QName(ATTRIBUTE_NAME));
+            if (op_name_att == null) {
+                throw new DeploymentException(
+                        Messages.getMessage(
+                                Messages.getMessage(
+                                        DeploymentErrorMsgs.INVALID_OP, "operation name missing")));
+            }
+
+            // setting the MEP of the operation
+            OMAttribute op_mep_att = operation.getAttribute(new QName(TAG_MEP));
+            String mepurl = null;
+
+            if (op_mep_att != null) {
+                mepurl = op_mep_att.getAttributeValue();
+            }
+
+            String opname = op_name_att.getAttributeValue();
+            AxisOperation op_descrip;
+            op_descrip = service.getOperation(new QName(opname));
+            if (op_descrip == null) {
+                if (mepurl == null) {
+                    // assumed MEP is in-out
+                    op_descrip = new InOutAxisOperation();
+                    op_descrip.setParent(service);
+
+                } else {
+                    op_descrip = AxisOperationFactory.getOperationDescription(mepurl);
+                }
+                op_descrip.setName(new QName(opname));
+                String MEP = op_descrip.getMessageExchangePattern();
+                if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT.equals(MEP)) {
+                    AxisMessage inaxisMessage = op_descrip
+                            .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                    if (inaxisMessage != null) {
+                        inaxisMessage.setName(opname + Java2WSDLConstants.MESSAGE_SUFFIX);
+                    }
+                }
+
+                if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(MEP) ||
+                        WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT.equals(MEP)) {
+                    AxisMessage outAxisMessage = op_descrip
+                            .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+                    if (outAxisMessage != null) {
+                        outAxisMessage.setName(opname + Java2WSDLConstants.RESPONSE);
+                    }
+                }
+            }
+
+            // setting the PolicyInclude
+
+            // processing <wsp:Policy> .. </..> elements
+            Iterator policyElements = operation.getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY));
+
+            if (policyElements != null && policyElements.hasNext()) {
+                processPolicyElements(PolicyInclude.AXIS_OPERATION_POLICY, policyElements, op_descrip.getPolicyInclude());
+            }
+
+            // processing <wsp:PolicyReference> .. </..> elements
+            Iterator policyRefElements = operation.getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY_REF));
+
+            if (policyRefElements != null && policyRefElements.hasNext()) {
+                processPolicyRefElements(PolicyInclude.AXIS_OPERATION_POLICY, policyRefElements, op_descrip.getPolicyInclude());
+            }
+
+            // Operation Parameters
+            Iterator parameters = operation.getChildrenWithName(new QName(TAG_PARAMETER));
+            processParameters(parameters, op_descrip, service);
+            //To process wsamapping;
+            processActionMappings(operation, op_descrip);
+
+            // loading the message receivers
+            OMElement receiverElement = operation.getFirstChildWithName(new QName(TAG_MESSAGE_RECEIVER));
+
+            if (receiverElement != null) {
+                MessageReceiver messageReceiver = loadMessageReceiver(service.getClassLoader(),
+                        receiverElement);
+
+                op_descrip.setMessageReceiver(messageReceiver);
+            } else {
+                // setting default message receiver
+                MessageReceiver msgReceiver = loadDefaultMessageReceiver(
+                        op_descrip.getMessageExchangePattern()
+                        , service);
+                op_descrip.setMessageReceiver(msgReceiver);
+            }
+
+            // Process Module Refs
+            Iterator modules = operation.getChildrenWithName(new QName(TAG_MODULE));
+
+            processOperationModuleRefs(modules, op_descrip);
+
+            // processing Messages
+            Iterator messages = operation.getChildrenWithName(new QName(TAG_MESSAGE));
+
+            processMessages(messages, op_descrip);
+
+            // setting Operation phase
+            if (axisConfig != null) {
+                PhasesInfo info = axisConfig.getPhasesInfo();
+
+                info.setOperationPhases(op_descrip);
+            }
+            Iterator moduleConfigs = operation.getChildrenWithName(new QName(TAG_MODULE_CONFIG));
+            processOperationModuleConfig(moduleConfigs, op_descrip, op_descrip);
+            // adding the operation
+            operations.add(op_descrip);
+        }
+        return operations;
+    }
+
+
+    protected void processServiceModuleConfig(Iterator moduleConfigs, ParameterInclude parent,
+                                              AxisService service)
+            throws DeploymentException {
+        while (moduleConfigs.hasNext()) {
+            OMElement moduleConfig = (OMElement) moduleConfigs.next();
+            OMAttribute moduleName_att = moduleConfig.getAttribute(new QName(ATTRIBUTE_NAME));
+
+            if (moduleName_att == null) {
+                throw new DeploymentException(
+                        Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE_CONFIG));
+            } else {
+                String module = moduleName_att.getAttributeValue();
+                ModuleConfiguration moduleConfiguration =
+                        new ModuleConfiguration(new QName(module), parent);
+                Iterator parameters = moduleConfig.getChildrenWithName(new QName(TAG_PARAMETER));
+
+                processParameters(parameters, moduleConfiguration, parent);
+                service.addModuleConfig(moduleConfiguration);
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ServiceGroupBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ServiceGroupBuilder.java
new file mode 100644
index 0000000..405046f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/ServiceGroupBuilder.java
@@ -0,0 +1,157 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.ModuleConfiguration;
+import org.apache.axis2.description.ParameterInclude;
+import org.apache.axis2.i18n.Messages;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class ServiceGroupBuilder extends DescriptionBuilder {
+    private OMElement serviceElement;
+    private HashMap wsdlServices;
+
+    public ServiceGroupBuilder(OMElement service, HashMap wsdlServices,
+                               ConfigurationContext configCtx) {
+        this.serviceElement = service;
+        this.wsdlServices = wsdlServices;
+        this.configCtx = configCtx;
+        this.axisConfig = this.configCtx.getAxisConfiguration();
+    }
+
+    public ArrayList populateServiceGroup(AxisServiceGroup axisServiceGroup)
+            throws DeploymentException {
+        ArrayList serviceList = new ArrayList();
+
+        try {
+
+            // Processing service level parameters
+            Iterator itr = serviceElement.getChildrenWithName(new QName(TAG_PARAMETER));
+
+            processParameters(itr, axisServiceGroup, axisServiceGroup.getParent());
+
+            Iterator moduleConfigs = serviceElement.getChildrenWithName(new QName(TAG_MODULE_CONFIG));
+
+            processServiceModuleConfig(moduleConfigs, axisServiceGroup.getParent(),
+                    axisServiceGroup);
+
+            // processing service-wide modules which required to engage globally
+            Iterator moduleRefs = serviceElement.getChildrenWithName(new QName(TAG_MODULE));
+
+            processModuleRefs(moduleRefs, axisServiceGroup);
+
+            Iterator serviceitr = serviceElement.getChildrenWithName(new QName(TAG_SERVICE));
+
+            while (serviceitr.hasNext()) {
+                OMElement service = (OMElement) serviceitr.next();
+                OMAttribute serviceNameatt = service.getAttribute(new QName(ATTRIBUTE_NAME));
+                if (serviceNameatt == null) {
+                    throw new DeploymentException(
+                            Messages.getMessage(DeploymentErrorMsgs.SERVICE_NAME_ERROR));
+                }
+                String serviceName = serviceNameatt.getAttributeValue();
+
+                if (serviceName == null || "".equals(serviceName)) {
+                    throw new DeploymentException(
+                            Messages.getMessage(DeploymentErrorMsgs.SERVICE_NAME_ERROR));
+                } else {
+                    AxisService axisService = (AxisService) wsdlServices.get(serviceName);
+
+                    if (axisService == null) {
+                        axisService = new AxisService(serviceName);
+                    } else {
+                        axisService.setWsdlFound(true);
+                    }
+
+                    // the service that has to be deployed
+                    axisService.setParent(axisServiceGroup);
+                    axisService.setClassLoader(axisServiceGroup.getServiceGroupClassLoader());
+
+                    ServiceBuilder serviceBuilder = new ServiceBuilder(configCtx, axisService);
+                    AxisService as = serviceBuilder.populateService(service);
+                    serviceList.add(as);
+                }
+            }
+        } catch (AxisFault e) {
+            throw new DeploymentException(e);
+        }
+
+        return serviceList;
+    }
+
+    /**
+     * Gets the list of modules that is required to be engaged globally.
+     *
+     * @param moduleRefs <code>java.util.Iterator</code>
+     * @throws DeploymentException <code>DeploymentException</code>
+     */
+    protected void processModuleRefs(Iterator moduleRefs, AxisServiceGroup axisServiceGroup)
+            throws DeploymentException {
+        try {
+            while (moduleRefs.hasNext()) {
+                OMElement moduleref = (OMElement) moduleRefs.next();
+                OMAttribute moduleRefAttribute = moduleref.getAttribute(new QName(TAG_REFERENCE));
+
+                if (moduleRefAttribute != null) {
+                    String refName = moduleRefAttribute.getAttributeValue();
+
+                    if (axisConfig.getModule(new QName(refName)) == null) {
+                        throw new DeploymentException(
+                                Messages.getMessage(DeploymentErrorMsgs.MODULE_NOT_FOUND, refName));
+                    } else {
+                        axisServiceGroup.addModuleref(new QName(refName));
+                    }
+                }
+            }
+        } catch (AxisFault axisFault) {
+            throw new DeploymentException(axisFault);
+        }
+    }
+
+    protected void processServiceModuleConfig(Iterator moduleConfigs, ParameterInclude parent,
+                                              AxisServiceGroup axisService)
+            throws DeploymentException {
+        while (moduleConfigs.hasNext()) {
+            OMElement moduleConfig = (OMElement) moduleConfigs.next();
+            OMAttribute moduleName_att = moduleConfig.getAttribute(new QName(ATTRIBUTE_NAME));
+
+            if (moduleName_att == null) {
+                throw new DeploymentException(
+                        Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE_CONFIG));
+            } else {
+                String module = moduleName_att.getAttributeValue();
+                ModuleConfiguration moduleConfiguration =
+                        new ModuleConfiguration(new QName(module), parent);
+                Iterator parameters = moduleConfig.getChildrenWithName(new QName(TAG_PARAMETER));
+
+                processParameters(parameters, moduleConfiguration, parent);
+                axisService.addModuleConfig(moduleConfiguration);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/URLBasedAxisConfigurator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/URLBasedAxisConfigurator.java
new file mode 100644
index 0000000..37a712c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/URLBasedAxisConfigurator.java
@@ -0,0 +1,109 @@
+package org.apache.axis2.deployment;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.AxisConfigurator;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.net.MalformedURLException;

+import java.net.URL;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class URLBasedAxisConfigurator extends DeploymentEngine implements AxisConfigurator {

+

+	private static final Log log = LogFactory.getLog(URLBasedAxisConfigurator.class);

+    private URL axis2xml;

+    private URL repositoy;

+

+    public URLBasedAxisConfigurator(URL axis2xml, URL repositoy) throws AxisFault {

+        this.axis2xml = axis2xml;

+        this.repositoy = repositoy;

+    }

+

+    public AxisConfiguration getAxisConfiguration() throws AxisFault {

+        InputStream axis2xmlStream;

+        try {

+            if (axis2xml == null) {

+                ClassLoader cl = Thread.currentThread().getContextClassLoader();

+                axis2xmlStream = cl.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);

+            } else {

+                axis2xmlStream = axis2xml.openStream();

+            }

+            axisConfig = populateAxisConfiguration(axis2xmlStream);

+            if (repositoy == null) {

+                Parameter axis2repoPara = axisConfig.getParameter(DeploymentConstants.AXIS2_REPO);

+                if (axis2repoPara != null) {

+                    String repoValue = (String) axis2repoPara.getValue();

+                    if (repoValue != null && !"".equals(repoValue.trim())) {

+                        if (repoValue.startsWith("file://")) {

+                            // we treat this case specially , by assuming file is

+                            // locate in the local machine

+                            loadRepository(repoValue);

+                        } else {

+                            loadRepositoryFromURL(new URL(repoValue));

+                        }

+                    }

+                } else {

+                    log.info("No repository found , module will be loaded from classpath");

+                    loadFromClassPath();

+                }

+            } else {

+                loadRepositoryFromURL(repositoy);

+            }

+

+        } catch (IOException e) {

+            throw new AxisFault(e.getMessage());

+        }

+        return axisConfig;

+    }

+

+    //to load services

+    public void loadServices() {

+        try {

+            if (repositoy == null) {

+                Parameter axis2repoPara = axisConfig.getParameter(DeploymentConstants.AXIS2_REPO);

+                if (axis2repoPara != null) {

+                    String repoValue = (String) axis2repoPara.getValue();

+                    if (repoValue != null && !"".equals(repoValue.trim())) {

+                        if (repoValue.startsWith("file://")) {

+                            // we treat this case specially , by assuming file is

+                            // locate in the local machine

+                            super.loadServices();

+                        } else {

+                            loadServicesFromUrl(new URL(repoValue));

+                        }

+                    }

+                }

+            } else {

+            	loadServicesFromUrl(repositoy);

+            }

+        } catch (MalformedURLException e) {

+            log.info(e);

+        }

+    }

+

+    //To engage globally listed modules

+    public void engageGlobalModules() throws AxisFault {

+        engageModules();

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java
new file mode 100644
index 0000000..10d8f90
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java
@@ -0,0 +1,321 @@
+package org.apache.axis2.deployment;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.repository.util.ArchiveReader;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisConfigurator;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.ServletConfig;
+import javax.xml.stream.XMLStreamException;
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+/*
+* Copyright 2004,2005 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.
+*
+*
+*/
+
+/**
+ * Processes the init parameters for the AxisServlet.
+ * This allows the location of the axis2.xml and the module repository to be different from the default locations.
+ * The init parameters support alternate file, or URL values for both of these.
+ */
+public class WarBasedAxisConfigurator extends DeploymentEngine implements AxisConfigurator {
+
+    private static final Log log = LogFactory.getLog(WarBasedAxisConfigurator.class);
+    private ServletConfig config;
+
+    /**
+     * The name of the init parameter (axis2.xml.path) that can be used to override the default location for the axis2.xml file. When both this init parameter, and the axis2.xml.url init parameters are not specified in the axis servlet init-parameter, the default location of ${app}/WEB-INF/conf/axis2.xml is used.
+     * The value of this path is interpreted as a file system absolute path.
+     * This parameter takes precedence over the axis2.xml.url init parameter.
+     */
+    public static final String PARAM_AXIS2_XML_PATH = "axis2.xml.path";
+
+
+    /**
+     * The name of the init parameter (axis2.xml.url) that when specified indicates the axis2.xml should be loaded using the URL specified as the value of this init parameter. If the axis2.xml.path init parameter is present, this init parameter has no effect.
+     */
+    public static final String PARAM_AXIS2_XML_URL = "axis2.xml.url";
+
+
+    /**
+     * The name of the init parameter (axis2.repository.path) that when specified indicates the path to the
+     */
+    public static final String PARAM_AXIS2_REPOSITORY_PATH = "axis2.repository.path";
+
+
+    /**
+     * The name of the init parameter (axis2.repository.url) that when specified indicates the url to be used
+     */
+    public static final String PARAM_AXIS2_REPOSITORY_URL = "axis2.repository.url";
+
+
+    /**
+     * Default constructor for configurator.
+     * This determines the axis2.xml file to be used from the init parameters for the AxisServlet in the web.xml.
+     * The order of initialization is according the the following precedence:
+     * <ul>
+     * <li>If the parameter axis2.xml.path is present, the value is webapp relative path to be used as the location to the axis2.xml file.
+     * <li>Otherwise, if the parameter axis2.xml.url is present, the URL is used as the location to the axis2.xml file.
+     * <li>Otherwise, when both of the above init parameters are not present, file is attempted to be loaded from &lt;repo&gt;/WEB-INF/axis2.xml.
+     * <li> When none of the above could be found, the axis2.xml is loaded from the classpath resource, the value of DeploymenConstants.AXIS2_CONFIGURATION_RESOURCE.
+     * </ul>
+     *
+     * @param servletConfig the ServletConfig object from the AxisServlet. This method is called from the init() of the AxisServlet.
+     */
+    public WarBasedAxisConfigurator(ServletConfig servletConfig) {
+        try {
+            this.config = servletConfig;
+            InputStream axis2Stream = null;
+
+            try {
+
+                if (axis2Stream == null) {
+                    String axis2xmlpath = config.getInitParameter(PARAM_AXIS2_XML_PATH);
+                    if (axis2xmlpath != null) {
+                        // when init parameter was present.
+                        axis2Stream = new FileInputStream(axis2xmlpath);
+                        log.debug("using axis2.xml from path: " + axis2xmlpath);
+                    }
+                }
+
+                if (axis2Stream == null) {
+                    String axisurl = config.getInitParameter(PARAM_AXIS2_XML_URL);
+                    if (axisurl != null) {
+                        axis2Stream = new URL(axisurl).openStream();
+                        axisConfig = populateAxisConfiguration(axis2Stream);
+                        log.debug("loading axis2.xml from URL: " + axisurl);
+                    }
+                }
+
+                if (axis2Stream == null) {
+                    // both the axis2.xml.path and axis2.xml.url init parameters were not present
+                    // try to find the default /WEB-INF/conf/axis2.xml
+                    axis2Stream = config.getServletContext().getResourceAsStream("/WEB-INF/conf/axis2.xml");
+                    log.debug("trying to load axis2.xml from module: /WEB-INF/conf/axis2.xml");
+                }
+            } // try
+            catch (Exception e) {
+                log.error(e, e);
+                log.warn("Using default configuration: " + DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
+                // not there, use default configuration from class path resource.
+            } // catch
+
+            if (axis2Stream == null) {
+                ClassLoader cl = Thread.currentThread().getContextClassLoader();
+                axis2Stream = cl.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
+            }
+            axisConfig = populateAxisConfiguration(axis2Stream);
+
+            // when the module is an unpacked war file,
+            // we can set the web location path in the deployment engine.
+            // This will let us
+            String webpath = config.getServletContext().getRealPath("");
+            if (webpath != null && !"".equals(webpath)) {
+                log.debug("setting web location string: " + webpath);
+                File weblocation = new File(webpath);
+                setWebLocationString(weblocation.getAbsolutePath());
+            } // if webpath not null
+
+
+        } catch (DeploymentException e) {
+            log.error(e.getMessage(), e);
+        } catch (IOException e) {
+            log.error(e.getMessage(), e);
+        } finally {
+            try {
+                Parameter enableHttp = new Parameter("enableHTTP", "true");
+                if (axisConfig != null) {
+                    axisConfig.addParameter(enableHttp);
+                } else {
+                    log.error("axisConfig was null after initialization");
+                }
+            } catch (AxisFault axisFault) {
+                log.info(axisFault.getMessage());
+            }
+        }
+    }
+
+
+    /**
+     * Gets the axis configuration object by loading the repository.
+     * The order of initialization is according the the following precedence:
+     * <ul>
+     * <li>If the parameter axis2.repository.path is present, this folder is used as the location to the repository.
+     * <li>Otherwise, if the parameter axis2.repository.url is present, the URL is used as the location to the repository.
+     * <li>Otherwise, when both of the above init parameters are not present, the web applications WEB-INF folder is used as the folder for the repository.
+     * </ul>
+     *
+     * @return the instance of the AxisConfiguration object that reflects the repository according to the rules above.
+     * @throws AxisFault when an error occurred in the initialization of the AxisConfiguration.
+     */
+    public AxisConfiguration getAxisConfiguration() throws AxisFault {
+        try {
+            String repository = null;
+
+            if (repository == null) {
+                repository = config.getInitParameter(PARAM_AXIS2_REPOSITORY_PATH);
+                if (repository != null) {
+                    loadRepository(repository);
+                    log.debug("loaded repository from path: " + repository);
+                }
+            }
+
+            if (repository == null) {
+                repository = config.getInitParameter(PARAM_AXIS2_REPOSITORY_URL);
+                if (repository != null) {
+                    loadRepositoryFromURL(new URL(repository));
+                    log.debug("loaded repository from url: " + repository);
+                }
+            }
+
+            if (repository == null) {
+                if (config.getServletContext().getRealPath("") != null) {
+                    // this is an unpacked war file
+                    repository = config.getServletContext().getRealPath("/WEB-INF");
+                }
+                if (repository != null) {
+                    loadRepository(repository);
+                    log.debug("loaded repository from /WEB-INF folder (unpacked war)");
+                }
+            }
+
+            if (repository == null) {
+                URL url = config.getServletContext().getResource("/WEB-INF/");
+                if (url != null) {
+                    repository = url.toString();
+                    loadRepositoryFromURL(url);
+                    log.debug("loaded repository from /WEB-INF/ folder (URL)");
+                }
+            }
+
+            if (repository == null) {
+                loadFromClassPath();
+                log.debug("loaded repository from classpath");
+            }
+
+        } catch (Exception ex) {
+            log.error(ex + ": loading repository from classpath");
+            loadFromClassPath();
+        }
+        return axisConfig;
+    }
+
+    //to load services
+
+    /**
+     * Loads the services within the repository.
+     * When the axis2.repository.path init parameter was present, we just call loadServices() in the deployment engine.<br/>
+     * When the axis2.repository.url init parameter was present we load services from the respective URL value of the init parameter.<br/>
+     * Otherwise, try to load the services from the /WEB-INF folder within the web application.
+     */
+    public void loadServices() {
+        try {
+            String repository;
+
+            repository = config.getInitParameter(PARAM_AXIS2_REPOSITORY_PATH);
+            if (repository != null) {
+                super.loadServices();
+                log.debug("loaded services from path: " + repository);
+                return;
+            }
+
+            repository = config.getInitParameter(PARAM_AXIS2_REPOSITORY_URL);
+            if (repository != null) {
+                loadServicesFromUrl(new URL(repository));
+                log.debug("loaded services from URL: " + repository);
+                return;
+            }
+            loadServicesFromWebInf();
+            if (config.getServletContext().getRealPath("") != null) {
+                super.loadServices();
+                log.debug("loaded services from webapp");
+                return;
+            }
+
+            URL url = config.getServletContext().getResource("/WEB-INF/");
+            if (url != null) {
+                loadServicesFromUrl(url);
+                log.debug("loaded services from /WEB-INF/ folder (URL)");
+            }
+        } catch (MalformedURLException e) {
+            log.info(e.getMessage());
+        }
+    }
+
+    //To engage globally listed modules
+    public void engageGlobalModules() throws AxisFault {
+        engageModules();
+    }
+
+    /**
+     * This method will look inside the web-inf directory to find services.xml
+     * inside that , if it is there will load that and creat service group out
+     * of that and add into axisConfig. User can drop corresponding class files
+     * into class directory.
+     */
+    private void loadServicesFromWebInf() {
+        try {
+            InputStream servicexml = config.getServletContext().
+                    getResourceAsStream("/WEB-INF/services.xml");
+            if (servicexml != null) {
+                HashMap wsdlServices = new HashMap();
+                ArchiveReader archiveReader = new ArchiveReader();
+                String path = config.getServletContext().getRealPath("/WEB-INF");
+                if(path != null){
+                    archiveReader.processFilesInFolder(new File(path),wsdlServices);
+                }
+                AxisServiceGroup serviceGroup = DeploymentEngine.buildServiceGroup(servicexml,
+                        Thread.currentThread().getContextClassLoader(),
+                        "annonServiceGroup", configContext,
+                        archiveReader, wsdlServices);
+                axisConfig.addServiceGroup(serviceGroup);
+            }
+        } catch (AxisFault axisFault) {
+            log.info(axisFault);
+        } catch (FileNotFoundException e) {
+            log.info(e);
+        } catch (XMLStreamException e) {
+            log.info(e);
+        }
+    }
+
+    public void setConfigContext(ConfigurationContext configContext) {
+        super.setConfigContext(configContext);
+        // setting ServletContext into configctx
+        configContext.setProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT,
+                config.getServletContext());
+        // setting ServletContext into configctx
+        configContext.setProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT,
+                                  config.getServletContext());
+        Parameter servletConfigParam = new Parameter();
+        servletConfigParam.setName(HTTPConstants.HTTP_SERVLETCONFIG);
+        servletConfigParam.setValue(config);
+        try {
+            configContext.getAxisConfiguration().addParameter(servletConfigParam);
+        } catch (AxisFault axisFault) {
+            log.error(axisFault);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml
new file mode 100644
index 0000000..56acba9
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml
@@ -0,0 +1,200 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">false</parameter>

+

+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->

+    <!--that behaviour.-->

+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>

+

+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->

+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->

+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->

+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->

+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>

+

+    <!--This is the user name and password of admin console-->

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->

+    <!--<parameter name="ServicesDirectory" locked="false">service</parameter>-->

+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->

+    <!--<parameter name="ModulesDirectory" locked="false">modules</parameter>-->

+

+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->

+    <!--root which can configured using the following contextRoot parameter-->

+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->

+

+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->

+    <!--<parameter name="servicePath" locked="false">services</parameter>-->

+    <!--<parameter name="restPath" locked="false">rest</parameter>-->

+

+    <!--Set the flag to true if you want to enable transport level session management-->

+    <parameter name="manageTransportSession" locked="false">false</parameter>

+

+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->

+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->

+    <!--parameters help to tweak the message handling of two main servlets. -->

+

+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->

+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>

+

+    <!-- Following parameter will completely disable REST handling in both the servlets-->

+    <parameter name="disableREST" locked="true">false</parameter>

+

+    <!-- This will disable the separate servlet we have for REST handling. -->

+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>

+

+

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->

+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->

+    <!--any operation -->

+    <!--Note : You can override this for particular service by adding the same element with your requirement-->

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </messageReceivers>

+

+    <!-- ================================================= -->

+    <!-- Target Resolvers -->

+    <!-- ================================================= -->

+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->

+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->

+    <!-- choose a server in a cluster -->

+    <!--<targetResolvers>-->

+    <!--<targetResolver class="" />-->

+    <!--</targetResolvers>-->

+

+

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http"

+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncomment following parameter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <transportReceiver name="tcp"

+                       class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6061</parameter>

+        <!--If you want to give your own host address for EPR generation-->

+        <!--uncomment following parameter , and set as you required.-->

+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->

+    </transportReceiver>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="jms"

+                     class="org.apache.axis2.transport.jms.JMSSender"/>

+    <transportSender name="tcp"

+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local"

+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="http"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

+    </transportSender>

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+    <phaseOrder type="InFlow">

+        <!--  System pre-defined phases       -->

+         <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Transport"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Transport"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+        <phase name="Security"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java
new file mode 100644
index 0000000..d12ca05
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java
@@ -0,0 +1,139 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment.repository.util;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.deployment.DeploymentClassLoader;
+import org.apache.axis2.deployment.DeploymentErrorMsgs;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.axis2.i18n.Messages;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+
+/**
+ * ArchiveFileData stores information about the module or service item to be deployed.
+ */
+public class ArchiveFileData {
+    private File file = null;
+    private ArrayList deployableServices = new ArrayList();
+    private ClassLoader classLoader;
+    private String messageReceiver;
+    private boolean lock;
+
+    private String name;
+    private int type;
+
+    public ArchiveFileData(File file, int type, boolean lock) {
+        this.file = file;
+        this.type = type;
+        this.lock = lock;
+    }
+
+    public ArchiveFileData(int type, String name, boolean lock) {
+        this.type = type;
+        this.name = name;
+        this.lock = lock;
+    }
+
+    public String getAbsolutePath() {
+        return file.getAbsolutePath();
+    }
+
+    public ClassLoader getClassLoader() {
+        return classLoader;
+    }
+
+    public ArrayList getDeployableServices() {
+        return deployableServices;
+    }
+
+    public File getFile() {
+        return file;
+    }
+
+    public String getMessageReceiver() {
+        return messageReceiver;
+    }
+
+    public String getName() {
+        return file.getName();
+    }
+
+    public String getServiceName() {
+        if (file != null) {
+            return file.getName();
+        } else {
+            return name;
+        }
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public static boolean isModuleArchiveFile(String filename) {
+        return (filename.endsWith(".mar"));
+    }
+
+    /**
+     * Checks whether a given file is a jar or an aar file.
+     *
+     * @param filename
+     * @return Returns boolean.
+     */
+    public static boolean isServiceArchiveFile(String filename) {
+        return ((filename.endsWith(".jar")) | (filename.endsWith(".aar")));
+    }
+
+    public void setClassLoader(ClassLoader classLoader) {
+        this.classLoader = classLoader;
+    }
+
+    public void setClassLoader(boolean extractArchive, ClassLoader parent) throws AxisFault {
+        if (!extractArchive) {
+
+            if (file != null) {
+                URL[] urlsToLoadFrom;
+                try {
+                    if (!file.exists()) {
+                        throw new AxisFault(Messages.getMessage(DeploymentErrorMsgs.FILE_NOT_FOUND,
+                                file.getAbsolutePath()));
+                    }
+                    urlsToLoadFrom = new URL[]{file.toURL()};
+                    classLoader = new DeploymentClassLoader(urlsToLoadFrom, parent, lock);
+                } catch (Exception e) {
+                    throw new AxisFault(e);
+                }
+            }
+        } else {
+            if (file != null) {
+                classLoader = Utils.getClassLoader(parent, file);
+            }
+        }
+    }
+
+    public void setDeployableServices(ArrayList deployableServices) {
+        this.deployableServices = deployableServices;
+    }
+
+    public void setMessageReceiver(String messageReceiver) {
+        this.messageReceiver = messageReceiver;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
new file mode 100644
index 0000000..8217a52
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
@@ -0,0 +1,455 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment.repository.util;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.DeploymentConstants;
+import org.apache.axis2.deployment.DeploymentErrorMsgs;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.DescriptionBuilder;
+import org.apache.axis2.deployment.ModuleBuilder;
+import org.apache.axis2.deployment.ServiceBuilder;
+import org.apache.axis2.deployment.ServiceGroupBuilder;
+import org.apache.axis2.deployment.resolver.AARBasedWSDLLocator;
+import org.apache.axis2.deployment.resolver.AARFileBasedURIResolver;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
+import org.apache.axis2.description.WSDL20ToAxisServiceBuilder;
+import org.apache.axis2.description.WSDLToAxisServiceBuilder;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.namespace.Constants;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+public class ArchiveReader implements DeploymentConstants {
+    private static final Log log = LogFactory.getLog(ArchiveReader.class);
+
+    public ArrayList buildServiceGroup(InputStream zin, ArchiveFileData currentFile,
+                                       AxisServiceGroup axisServiceGroup, HashMap wsdlServices,
+                                       ConfigurationContext configCtx)
+            throws XMLStreamException, AxisFault {
+
+        DescriptionBuilder builder = new DescriptionBuilder(zin, configCtx);
+        OMElement rootElement = builder.buildOM();
+        String elementName = rootElement.getLocalName();
+
+        if (TAG_SERVICE.equals(elementName)) {
+            AxisService axisService = null;
+            String serviceName = DescriptionBuilder.getShortFileName(currentFile.getName());
+            if (serviceName != null) {
+                axisService = (AxisService) wsdlServices.get(serviceName);
+            }
+            if (axisService == null) {
+                axisService = (AxisService) wsdlServices.get(
+                        DescriptionBuilder.getShortFileName(currentFile.getName()));
+            }
+            if (axisService == null) {
+                axisService = new AxisService(serviceName);
+            } else {
+                axisService.setWsdlFound(true);
+            }
+
+            axisService.setParent(axisServiceGroup);
+            axisService.setClassLoader(currentFile.getClassLoader());
+
+            ServiceBuilder serviceBuilder = new ServiceBuilder(configCtx, axisService);
+            AxisService service = serviceBuilder.populateService(rootElement);
+
+            ArrayList serviceList = new ArrayList();
+            serviceList.add(service);
+            return serviceList;
+        } else if (TAG_SERVICE_GROUP.equals(elementName)) {
+            ServiceGroupBuilder groupBuilder = new ServiceGroupBuilder(rootElement, wsdlServices,
+                    configCtx);
+            return groupBuilder.populateServiceGroup(axisServiceGroup);
+        }
+        throw new AxisFault("Invalid services.xml found");
+    }
+
+    /**
+     * Extracts Service XML files and builds the service groups.
+     *
+     * @param filename
+     * @param axisServiceGroup
+     * @param extractService
+     * @param wsdls
+     * @param configCtx
+     * @return Returns ArrayList.
+     * @throws DeploymentException
+     */
+    public ArrayList processServiceGroup(String filename, ArchiveFileData currentFile,
+                                         AxisServiceGroup axisServiceGroup,
+                                         boolean extractService,
+                                         HashMap wsdls,
+                                         ConfigurationContext configCtx)
+            throws AxisFault {
+        // get attribute values
+        if (!extractService) {
+            ZipInputStream zin = null;
+            FileInputStream fin = null;
+            try {
+                fin = new FileInputStream(filename);
+                zin = new ZipInputStream(fin);
+                ZipEntry entry;
+                while ((entry = zin.getNextEntry()) != null) {
+                    if (entry.getName().equalsIgnoreCase(SERVICES_XML)) {
+                        axisServiceGroup.setServiceGroupName(
+                                DescriptionBuilder.getShortFileName(currentFile.getName()));
+                        return buildServiceGroup(zin, currentFile, axisServiceGroup, wsdls, configCtx);
+                    }
+                }
+                throw new DeploymentException(
+                        Messages.getMessage(DeploymentErrorMsgs.SERVICE_XML_NOT_FOUND, filename));
+            } catch (Exception e) {
+                throw new DeploymentException(e);
+            } finally {
+                if (zin != null) {
+                    try {
+                        zin.close();
+                    } catch (IOException e) {
+                        log.info(Messages.getMessage("errorininputstreamclose"));
+                    }
+                }
+                if (fin != null) {
+                    try {
+                        fin.close();
+                    } catch (IOException e) {
+                        log.info(Messages.getMessage("errorininputstreamclose"));
+                    }
+                }
+            }
+        } else {
+            File file = new File(filename, SERVICES_XML);
+            if (!file.exists()) {
+                // try for meta-inf
+                file = new File(filename, SERVICES_XML.toLowerCase());
+            }
+            if (file.exists()) {
+                InputStream in = null;
+                try {
+                    in = new FileInputStream(file);
+                    axisServiceGroup.setServiceGroupName(currentFile.getName());
+                    return buildServiceGroup(in, currentFile, axisServiceGroup, wsdls, configCtx);
+                } catch (FileNotFoundException e) {
+                    throw new DeploymentException(
+                            Messages.getMessage(DeploymentErrorMsgs.FILE_NOT_FOUND, e.getMessage()));
+                } catch (XMLStreamException e) {
+                    throw new DeploymentException(
+                            Messages.getMessage(DeploymentErrorMsgs.XML_STREAM_EXCEPTION, e.getMessage()));
+                } finally {
+                    if (in != null) {
+                        try {
+                            in.close();
+                        } catch (IOException e) {
+                            log.info(Messages.getMessage("errorininputstreamclose"));
+                        }
+                    }
+                }
+            } else {
+                throw new DeploymentException(
+                        Messages.getMessage(DeploymentErrorMsgs.SERVICE_XML_NOT_FOUND));
+            }
+        }
+    }
+
+    /**
+     * Creats AxisService.
+     *
+     * @param in
+     * @return Returns AxisService.
+     * @throws DeploymentException
+     */
+    private AxisService processWSDLFile(WSDLToAxisServiceBuilder axisServiceBuilder, File serviceArchiveFile,
+                                        boolean isArchive, InputStream in, String baseURI) throws DeploymentException {
+        try {
+
+            if (serviceArchiveFile != null && isArchive) {
+                axisServiceBuilder.setCustomResolver(
+                        new AARFileBasedURIResolver(serviceArchiveFile));
+                if (axisServiceBuilder instanceof WSDL11ToAxisServiceBuilder) {
+
+                    ((WSDL11ToAxisServiceBuilder) axisServiceBuilder).setCustomWSLD4JResolver(
+                            new AARBasedWSDLLocator(baseURI, serviceArchiveFile, in));
+                }
+            } else {
+                if (serviceArchiveFile != null) {
+                    axisServiceBuilder.setBaseUri(
+                            serviceArchiveFile.getParentFile().getAbsolutePath());
+                }
+            }
+            return axisServiceBuilder.populateService();
+        } catch (AxisFault axisFault) {
+            log.info("Trouble processing wsdl file :" + axisFault.getMessage());
+            if(log.isDebugEnabled()) {
+                log.debug(axisFault);
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Creates service objects from wsdl file inside a service archive file.
+     *
+     * @param file <code>ArchiveFileData</code>
+     * @throws DeploymentException <code>DeploymentException</code>
+     */
+    public HashMap processWSDLs(ArchiveFileData file)
+            throws DeploymentException {
+        File serviceFile = file.getFile();
+        // to store service come from wsdl files
+        HashMap servicesMap = new HashMap();
+        boolean isDirectory = serviceFile.isDirectory();
+        if (isDirectory) {
+            try {
+                File metaInfFolder = new File(serviceFile, META_INF);
+
+                if (!metaInfFolder.exists()) {
+                    metaInfFolder = new File(serviceFile, META_INF.toLowerCase());
+                    if (!metaInfFolder.exists()) {
+                        throw new DeploymentException(
+                                Messages.getMessage(
+                                        DeploymentErrorMsgs.META_INF_MISSING, serviceFile.getName()));
+                    }
+                }
+
+                processFilesInFolder(metaInfFolder, servicesMap);
+
+            } catch (FileNotFoundException e) {
+                throw new DeploymentException(e);
+            } catch (IOException e) {
+                throw new DeploymentException(e);
+            } catch (XMLStreamException e) {
+                throw new DeploymentException(e);
+            }
+        } else {
+            ZipInputStream zin;
+            FileInputStream fin;
+            try {
+                fin = new FileInputStream(serviceFile);
+                zin = new ZipInputStream(fin);
+
+                //TODO Check whether this WSDL is empty
+
+                ZipEntry entry;
+                byte[] buf = new byte[1024];
+                int read;
+                ByteArrayOutputStream out;
+                while ((entry = zin.getNextEntry()) != null) {
+                    String entryName = entry.getName().toLowerCase();
+                    if (entryName.startsWith(META_INF.toLowerCase())
+                            && entryName.endsWith(SUFFIX_WSDL)) {
+                        out = new ByteArrayOutputStream();
+
+                        if (entryName.indexOf("/") != entryName.lastIndexOf("/")) {
+                            //only care abt the toplevel wsdl
+                            continue;
+                        }
+
+                        while ((read = zin.read(buf)) > 0) {
+                            out.write(buf, 0, read);
+                        }
+
+                        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+
+                        // now the question is which version of WSDL file this archive contains.
+                        // lets check the namespace of the root element and decide. But since we are
+                        // using axiom (dude, you are becoming handy here :)), we will not build the
+                        // whole thing.
+                        OMNamespace documentElementNS = new StAXOMBuilder(in).getDocumentElement().getNamespace();
+                        if (documentElementNS != null) {
+                            WSDLToAxisServiceBuilder wsdlToAxisServiceBuilder = null;
+                            if (WSDLConstants.WSDL20_2006Constants.DEFAULT_NAMESPACE_URI.equals(documentElementNS.getNamespaceURI())) {
+                                // we have a WSDL 2.0 document here.
+                                wsdlToAxisServiceBuilder = new WSDL20ToAxisServiceBuilder(new ByteArrayInputStream(out.toByteArray()), null, null);
+                                wsdlToAxisServiceBuilder.setBaseUri(entryName);
+                            } else if (Constants.NS_URI_WSDL11.
+                                    equals(documentElementNS.getNamespaceURI())) {
+                                wsdlToAxisServiceBuilder = new WSDL11ToAxisServiceBuilder(new ByteArrayInputStream(out.toByteArray()), null, null);
+                            } else {
+                                new DeploymentException(Messages.getMessage("invalidWSDLFound"));
+                            }
+                            AxisService service = processWSDLFile(wsdlToAxisServiceBuilder, serviceFile, true, new ByteArrayInputStream(out.toByteArray()), entry.getName());
+                            if(service != null) {
+                                servicesMap.put(service.getName(), service);
+                            }
+                        }
+                    }
+                }
+                try {
+                    zin.close();
+                } catch (IOException e) {
+                    log.info(e);
+                }
+                try {
+                    fin.close();
+                } catch (IOException e) {
+                    log.info(e);
+                }
+            } catch (FileNotFoundException e) {
+                throw new DeploymentException(e);
+            } catch (IOException e) {
+                throw new DeploymentException(e);
+            } catch (XMLStreamException e) {
+                throw new DeploymentException(e);
+            }
+        }
+        return servicesMap;
+    }
+
+    public void processFilesInFolder(File folder, HashMap servicesMap) throws FileNotFoundException, XMLStreamException, DeploymentException {
+        File files[] = folder.listFiles();
+        for (int i = 0; i < files.length; i++) {
+            File file1 = files[i];
+            if (file1.getName().toLowerCase().endsWith(SUFFIX_WSDL)) {
+                InputStream in = new FileInputStream(file1);
+                FileInputStream in2 = null;
+
+                // now the question is which version of WSDL file this archive contains.
+                // lets check the namespace of the root element and decide. But since we are
+                // using axiom (dude, you are becoming handy here :)), we will not build the
+                // whole thing.
+                OMNamespace documentElementNS = new StAXOMBuilder(in).getDocumentElement().getNamespace();
+                if (documentElementNS != null) {
+                    WSDLToAxisServiceBuilder wsdlToAxisServiceBuilder = null;
+                    if (WSDLConstants.WSDL20_2006Constants.DEFAULT_NAMESPACE_URI.equals(documentElementNS.getNamespaceURI())) {
+                        // we have a WSDL 2.0 document here.
+                        in2 = new FileInputStream(file1);
+                        wsdlToAxisServiceBuilder = new WSDL20ToAxisServiceBuilder(in2, null, null);
+                    } else if (Constants.NS_URI_WSDL11.
+                            equals(documentElementNS.getNamespaceURI())) {
+                        in2 = new FileInputStream(file1);
+                        wsdlToAxisServiceBuilder = new WSDL11ToAxisServiceBuilder(in2, null, null);
+                    } else {
+                        new DeploymentException(Messages.getMessage("invalidWSDLFound"));
+                    }
+
+                    FileInputStream in3 = new FileInputStream(file1);
+                    AxisService service = processWSDLFile(wsdlToAxisServiceBuilder, file1, false, in2, file1.toURI().toString());
+                    try {
+                        if (in2 != null) {
+                            in2.close();
+                        }
+                        in3.close();
+                    } catch (IOException e) {
+                        log.info(e);
+                    }
+                    if(service != null) {
+                        servicesMap.put(service.getName(), service);
+                    }
+                }
+
+                try {
+                    in.close();
+                } catch (IOException e) {
+                    log.info(e);
+                }
+            }
+        }
+    }
+
+    public void readModuleArchive(ArchiveFileData archiveFile,
+                                  AxisModule module, boolean explodedDir,
+                                  AxisConfiguration axisConfig)
+            throws DeploymentException {
+
+        // get attribute values
+        boolean moduleXMLFound = false;
+        if (!explodedDir) {
+            ZipInputStream zin;
+            FileInputStream fin;
+            try {
+                fin = new FileInputStream(archiveFile.getAbsolutePath());
+                zin = new ZipInputStream(fin);
+                ZipEntry entry;
+                while ((entry = zin.getNextEntry()) != null) {
+                    if (entry.getName().equalsIgnoreCase(MODULE_XML)) {
+                        moduleXMLFound = true;
+                        ModuleBuilder builder = new ModuleBuilder(zin, module, axisConfig);
+                        // setting module name
+                        module.setName(
+                                new QName(
+                                        DescriptionBuilder.getShortFileName(
+                                                archiveFile.getServiceName())));
+                        builder.populateModule();
+                        break;
+                    }
+                }
+                zin.close();
+                fin.close();
+                if (!moduleXMLFound) {
+                    throw new DeploymentException(
+                            Messages.getMessage(
+                                    DeploymentErrorMsgs.MODULE_XML_MISSING, archiveFile.getAbsolutePath()));
+                }
+            } catch (Exception e) {
+                throw new DeploymentException(e);
+            }
+        } else {
+            File file = new File(archiveFile.getAbsolutePath(), MODULE_XML);
+
+            if (file.exists() || (file = new File(archiveFile.getAbsolutePath(), MODULE_XML.toLowerCase())).exists()) {
+                InputStream in = null;
+                try {
+                    in = new FileInputStream(file);
+                    ModuleBuilder builder = new ModuleBuilder(in, module, axisConfig);
+                    // setting module name
+                    module.setName(
+                            new QName(
+                                    DescriptionBuilder.getShortFileName(
+                                            archiveFile.getServiceName())));
+                    builder.populateModule();
+                } catch (FileNotFoundException e) {
+                    throw new DeploymentException(
+                            Messages.getMessage(DeploymentErrorMsgs.FILE_NOT_FOUND, e.getMessage()));
+                } finally {
+                    if (in != null) {
+                        try {
+                            in.close();
+                        } catch (IOException e) {
+                            log.info(Messages.getMessage("errorininputstreamclose"));
+                        }
+                    }
+                }
+            } else {
+                throw new DeploymentException(
+                        Messages.getMessage(
+                                DeploymentErrorMsgs.MODULE_XML_MISSING, archiveFile.getAbsolutePath()));
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java
new file mode 100644
index 0000000..cf9bb39
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java
@@ -0,0 +1,59 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment.repository.util;
+
+public class WSInfo {
+    private String fileName;
+    private long lastModifiedDate;
+
+    /**
+     * To check whether the file is a module or a servise
+     */
+    private int type;
+
+    public WSInfo(String filename, long lastmodifieddate) {
+        this.fileName = filename;
+        this.lastModifiedDate = lastmodifieddate;
+    }
+
+    public WSInfo(String filename, long lastmodifieddate, int type) {
+        this.fileName = filename;
+        this.lastModifiedDate = lastmodifieddate;
+        this.type = type;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public long getLastModifiedDate() {
+        return lastModifiedDate;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public void setLastModifiedDate(long lastmodifieddate) {
+        this.lastModifiedDate = lastmodifieddate;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java
new file mode 100644
index 0000000..42eac6e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java
@@ -0,0 +1,281 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment.repository.util;
+
+import org.apache.axis2.deployment.DeploymentConstants;
+import org.apache.axis2.deployment.DeploymentEngine;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class WSInfoList implements DeploymentConstants {
+
+    /**
+     * This is to store all the jar files in a specified folder (WEB_INF)
+     */
+    private List jarList = new ArrayList();
+
+    /**
+     * All the currently updated jars
+     */
+    public List currentJars = new ArrayList();
+
+    /**
+     * Reference to DeploymentEngine to make update
+     */
+    private DeploymentEngine deployer;
+
+    private boolean check;
+
+    public WSInfoList(DeploymentEngine deploy_engine) {
+        deployer = deploy_engine;
+    }
+
+    /**
+     * First checks whether the file is already available by the
+     * system call isFileExist. If it is not deployed yet then adds to the jarList
+     * and to the deployment engine as a new service or module.
+     * While adding new item to jarList, first creates the WSInfo object and
+     * then adds to the jarlist and actual jar file is added to DeploymentEngine.
+     * <p/>
+     * If the files already exists, then checks whether it has been updated
+     * then changes the last update date of the wsInfo and adds two entries to
+     * DeploymentEngine - one for new deployment and other for undeployment.
+     *
+     * @param file actual jar files for either Module or service
+     * @param type indicate either Service or Module
+     */
+    public synchronized void addWSInfoItem(File file, int type) {
+        switch (type) {
+            case TYPE_SERVICE : {
+                if (!isFileExist(file.getName())) {    // checking whether the file is already deployed
+                    WSInfo wsInfo = new WSInfo(file.getName(), file.lastModified(), TYPE_SERVICE);
+
+                    jarList.add(wsInfo);
+
+                    ArchiveFileData archiveFileData = new ArchiveFileData(file, TYPE_SERVICE, deployer.isAntiJARLocking());
+
+                    deployer.addWSToDeploy(archiveFileData);    // inform that new web service is deployed
+                } else {
+                    if (deployer.isHotUpdate()) {
+                        WSInfo tempWSInfo = getFileItem(file.getName());
+                        if (isModified(file, tempWSInfo)) {    // check whether file is updated
+                            tempWSInfo.setLastModifiedDate(file.lastModified());
+
+                            WSInfo wsInfo = new WSInfo(tempWSInfo.getFileName(),
+                                    tempWSInfo.getLastModifiedDate(), TYPE_SERVICE);
+
+                            deployer.addWSToUndeploy(wsInfo);           // add entry to undeploy list
+
+                            ArchiveFileData archiveFileData = new ArchiveFileData(file, TYPE_SERVICE, deployer.isAntiJARLocking());
+
+                            deployer.addWSToDeploy(archiveFileData);    // add entry to deploylist
+                        }
+                    }
+                }
+
+                break;
+            }
+
+            case TYPE_MODULE : {
+                if (!isFileExist(file.getName())) {                     // checking whether the file is already deployed
+                    WSInfo wsInfo = new WSInfo(file.getName(), file.lastModified(), TYPE_MODULE);
+
+                    jarList.add(wsInfo);
+
+                    ArchiveFileData archiveFileData = new ArchiveFileData(file, TYPE_MODULE, false);
+
+                    deployer.addWSToDeploy(archiveFileData);    // inform that new web service is deployed
+                }
+
+                break;
+            }
+            default : {
+                check = true;
+                return;
+            }
+        }
+
+        String jarname = file.getName();
+
+        currentJars.add(jarname);
+        check = true;
+    }
+
+    /**
+     * Checks undeployed Services. Checks old jars files and current jars.
+     * If name of the old jar file does not exist in the current jar
+     * list then it is assumed that the jar file has been removed
+     * and that is hot undeployment.
+     */
+    private synchronized void checkForUndeployedServices() {
+        if (!check) {
+            return;
+        } else {
+            check = false;
+        }
+
+        Iterator iter = jarList.listIterator();
+        int size = currentJars.size();
+        List tempvector = new ArrayList();
+
+        tempvector.clear();
+
+        String filename;
+        boolean exist;
+
+        while (iter.hasNext()) {
+            WSInfo fileitem = (WSInfo) iter.next();
+
+            if (fileitem.getType() == TYPE_MODULE) {
+                continue;
+            }
+
+            exist = false;
+
+            for (int i = 0; i < size; i++) {
+                filename = (String) currentJars.get(i);
+
+                if (filename.equals(fileitem.getFileName())) {
+                    exist = true;
+
+                    break;
+                }
+            }
+
+            if (!exist) {
+                tempvector.add(fileitem);
+
+                WSInfo wsInfo = new WSInfo(fileitem.getFileName(), fileitem.getLastModifiedDate());
+
+                deployer.addWSToUndeploy(wsInfo);    // this is to be undeployed
+            }
+        }
+
+        for (int i = 0; i < tempvector.size(); i++) {
+            WSInfo fileItem = (WSInfo) tempvector.get(i);
+
+            jarList.remove(fileItem);
+        }
+
+        tempvector.clear();
+        currentJars.clear();
+    }
+
+    /**
+     * Clears the jarlist.
+     */
+    public void init() {
+        jarList.clear();
+    }
+
+    /**
+     *
+     */
+    public void update() {
+        synchronized (deployer) {
+            checkForUndeployedServices();
+            deployer.unDeploy();
+            deployer.doDeploy();
+        }
+    }
+
+    /**
+     * Gets the WSInfo object related to a file if it exists, null otherwise.
+     *
+     * @param filename
+     */
+    private WSInfo getFileItem(String filename) {
+        int sise = jarList.size();
+
+        for (int i = 0; i < sise; i++) {
+            WSInfo wsInfo = (WSInfo) jarList.get(i);
+
+            if (wsInfo.getFileName().equals(filename)) {
+                return wsInfo;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Checks whether the file already exists in the list.
+     *
+     * @param filename
+     */
+    private boolean isFileExist(String filename) {
+        return !(getFileItem(filename) == null);
+    }
+
+    /**
+     * Checks if a file has been modified by comparing the last update date of
+     * both files and WSInfo. If they are different, the file is assumed to have
+     * been modified.
+     *
+     * @param file
+     * @param wsInfo
+     */
+    private boolean isModified(File file, WSInfo wsInfo) {
+        if (file.isDirectory()) {
+            if (isChanged(file, wsInfo.getLastModifiedDate(), wsInfo)) {
+                setLastModifiedDate(file, wsInfo);
+                return true;
+            } else {
+                return false;
+            }
+        } else {
+            return (wsInfo.getLastModifiedDate() != file.lastModified());
+        }
+    }
+
+    private void setLastModifiedDate(File file, WSInfo wsInfo) {
+        File files [] = file.listFiles();
+        for (int i = 0; i < files.length; i++) {
+            File fileItem = files[i];
+            if (fileItem.isDirectory()) {
+                setLastModifiedDate(fileItem, wsInfo);
+            } else {
+                fileItem.setLastModified(wsInfo.getLastModifiedDate());
+            }
+        }
+    }
+
+    private boolean isChanged(File file, long lastModifedData, WSInfo wsInfo) {
+        File files [] = file.listFiles();
+        for (int i = 0; i < files.length; i++) {
+            File fileItem = files[i];
+            if (fileItem.isDirectory()) {
+                if (isChanged(fileItem, lastModifedData, wsInfo)) {
+                    wsInfo.setLastModifiedDate(fileItem.lastModified());
+                    return true;
+                }
+            } else {
+                if (lastModifedData != fileItem.lastModified()) {
+                    wsInfo.setLastModifiedDate(fileItem.lastModified());
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java
new file mode 100644
index 0000000..6f19933
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java
@@ -0,0 +1,126 @@
+package org.apache.axis2.deployment.resolver;

+

+import org.apache.axis2.deployment.DeploymentConstants;

+import org.apache.axis2.deployment.util.Utils;

+import org.apache.ws.commons.schema.resolver.DefaultURIResolver;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+import org.xml.sax.InputSource;

+

+import javax.wsdl.xml.WSDLLocator;

+import java.io.*;

+import java.util.zip.ZipEntry;

+import java.util.zip.ZipInputStream;

+import java.net.URI;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * Custom WSDL locator to load schemas from zip archives

+ * Need to provide the aarFile and the baseInputStream for

+ * the base WSDL file

+ * <p/>

+ * The logic here is that we only care about the import location

+ * all imports must be relative to the META-INF folder

+ */

+public class AARBasedWSDLLocator extends DefaultURIResolver implements WSDLLocator {

+

+    protected static final Log log = LogFactory

+            .getLog(AARBasedWSDLLocator.class);

+

+    private File aarFile;

+    private InputStream baseInputStream;

+    private URI lastImportLocation;

+    private String baseURI;

+

+    public AARBasedWSDLLocator(String baseURI, File zipFile, InputStream baseInputStream) {

+        this.baseURI = baseURI;

+        this.baseInputStream = baseInputStream;

+        this.aarFile = zipFile;

+    }

+

+    public InputSource getBaseInputSource() {

+        return new InputSource(baseInputStream);

+    }

+

+    /**

+     * @param parentLocation

+     * @param importLocation

+     */

+    public InputSource getImportInputSource(String parentLocation, String importLocation) {

+        lastImportLocation = URI.create(parentLocation).resolve(importLocation);

+

+        if (isAbsolute(importLocation)) {

+            return super.resolveEntity(

+                    null, importLocation, parentLocation);

+        } else {

+            //we don't care about the parent location

+            ZipInputStream zin = null;

+            try {

+

+                zin = new ZipInputStream(new FileInputStream(aarFile));

+                ZipEntry entry;

+                byte[] buf = new byte[1024];

+                int read;

+                ByteArrayOutputStream out;

+                String searchingStr = lastImportLocation.toString();

+                while ((entry = zin.getNextEntry()) != null) {

+                    String entryName = entry.getName().toLowerCase();

+                    if (entryName.equalsIgnoreCase(searchingStr)) {

+                        out = new ByteArrayOutputStream();

+                        while ((read = zin.read(buf)) > 0) {

+                            out.write(buf, 0, read);

+                        }

+                        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());

+                        return new InputSource(in);

+                    }

+                }

+            } catch (IOException e) {

+                throw new RuntimeException(e);

+            } finally {

+                try {

+                    if (zin != null) zin.close();

+                } catch (IOException e) {

+                    log.debug(e);

+                }

+            }

+        }

+

+        log.info("AARBasedWSDLLocator: Unable to resolve" + lastImportLocation);

+        return null;

+    }

+

+    /**

+     * As for the zip there is no point in returning

+     * a base URI

+     */

+    public String getBaseURI() {

+        // we don't care

+        return baseURI;

+    }

+

+    /**

+     * returns the latest import

+     */

+    public String getLatestImportURI() {

+        //we don't care about this either

+        return lastImportLocation.toString();

+    }

+    

+    public void close() {

+        //TODO: FIXME:    

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java
new file mode 100644
index 0000000..050ce7d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java
@@ -0,0 +1,98 @@
+package org.apache.axis2.deployment.resolver;

+

+import org.apache.axis2.deployment.DeploymentConstants;

+import org.apache.axis2.deployment.util.Utils;

+import org.apache.ws.commons.schema.resolver.DefaultURIResolver;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+import org.xml.sax.InputSource;

+

+import java.io.*;

+import java.util.zip.ZipEntry;

+import java.util.zip.ZipInputStream;

+import java.net.URI;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * A custom URI resolver that can

+ */

+public class AARFileBasedURIResolver extends DefaultURIResolver {

+

+    protected static final Log log = LogFactory

+            .getLog(AARFileBasedURIResolver.class);

+

+    private File aarFile;

+    private URI lastImportLocation;

+

+    public AARFileBasedURIResolver(File aarFile) {

+        this.aarFile = aarFile;

+    }

+

+    public InputSource resolveEntity(

+            String targetNamespace,

+            String schemaLocation,

+            String baseUri) {

+        //no issue with

+        if (isAbsolute(schemaLocation)) {

+            return super.resolveEntity(

+                    targetNamespace, schemaLocation, baseUri);

+        } else {

+            //validate

+            if ((baseUri == null || "".equals(baseUri)) && schemaLocation.startsWith("..")) {

+                throw new RuntimeException(

+                        "Unsupported schema location " + schemaLocation);

+            }

+

+            lastImportLocation = URI.create(baseUri).resolve(schemaLocation);

+            ZipInputStream zin = null;

+            try {

+                zin = new ZipInputStream(new FileInputStream(aarFile));

+

+                ZipEntry entry;

+                byte[] buf = new byte[1024];

+                int read;

+                ByteArrayOutputStream out;

+                String searchingStr = lastImportLocation.toString();

+                while ((entry = zin.getNextEntry()) != null) {

+                    String entryName = entry.getName().toLowerCase();

+                    if (entryName.equalsIgnoreCase(searchingStr)) {

+                        out = new ByteArrayOutputStream();

+                        while ((read = zin.read(buf)) > 0) {

+                            out.write(buf, 0, read);

+                        }

+                        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());

+                        return new InputSource(in);

+                    }

+                }

+

+

+            } catch (IOException e) {

+                throw new RuntimeException(e);

+            } finally {

+                try {

+                    if (zin != null) zin.close();

+                } catch (IOException e) {

+                    log.debug(e);

+                }

+            }

+

+        }

+

+        log.info("AARFileBasedURIResolver: Unable to resolve" + lastImportLocation);

+        return null;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/DeploymentIterator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/DeploymentIterator.java
new file mode 100644
index 0000000..1fcda6a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/DeploymentIterator.java
@@ -0,0 +1,31 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment.scheduler;
+
+import java.util.Calendar;
+import java.util.Date;
+
+public class DeploymentIterator {
+    private Calendar calendar = Calendar.getInstance();
+
+    public Date next() {
+        calendar.add(Calendar.SECOND, 10);
+
+        return calendar.getTime();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/Scheduler.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/Scheduler.java
new file mode 100644
index 0000000..e8c91f6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/Scheduler.java
@@ -0,0 +1,80 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment.scheduler;
+
+import java.util.Date;
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class Scheduler {
+    private final Timer timer = new Timer(true);
+
+    private void reschedule(SchedulerTask schedulerTask, DeploymentIterator iterator) {
+        Date time = iterator.next();
+
+        if (time == null) {
+            schedulerTask.cancel();
+        } else {
+            synchronized (schedulerTask.lock) {
+                if (schedulerTask.state != SchedulerTask.CANCELLED) {
+                    schedulerTask.timerTask = new SchedulerTimerTask(schedulerTask, iterator);
+                    timer.schedule(schedulerTask.timerTask, time);
+                }
+            }
+        }
+    }
+
+    /**
+     * Schedules the specified task for execution according to the specified schedule.
+     * If times specified by the <code>ScheduleIterator</code> are in the past they are
+     * scheduled for immediate execution.
+     *
+     * @param schedulerTask task to be scheduled
+     * @param iterator      iterator that describes the schedule
+     * @throws IllegalStateException if task was already scheduled or cancelled,
+     *                               scheduler was cancelled, or scheduler thread terminated.
+     */
+    public void schedule(SchedulerTask schedulerTask, DeploymentIterator iterator) {
+        Date time = iterator.next();
+
+        if (time == null) {
+            schedulerTask.cancel();
+        } else {
+            synchronized (schedulerTask.lock) {
+                schedulerTask.state = SchedulerTask.SCHEDULED;
+                schedulerTask.timerTask = new SchedulerTimerTask(schedulerTask, iterator);
+                timer.schedule(schedulerTask.timerTask, time);
+            }
+        }
+    }
+
+    public class SchedulerTimerTask extends TimerTask {
+        private DeploymentIterator iterator;
+        private SchedulerTask schedulerTask;
+
+        public SchedulerTimerTask(SchedulerTask schedulerTask, DeploymentIterator iterator) {
+            this.schedulerTask = schedulerTask;
+            this.iterator = iterator;
+        }
+
+        public void run() {
+            schedulerTask.run();
+            reschedule(schedulerTask, iterator);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/SchedulerTask.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/SchedulerTask.java
new file mode 100644
index 0000000..95039f2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/scheduler/SchedulerTask.java
@@ -0,0 +1,70 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment.scheduler;
+
+import org.apache.axis2.deployment.RepositoryListener;
+
+import java.util.TimerTask;
+
+public class SchedulerTask implements Runnable {
+    static final int SCHEDULED = 1;
+    static final int CANCELLED = 2;
+    final Object lock = new Object();
+    int state = 0;
+    TimerTask timerTask;
+    private RepositoryListener wsListener;
+
+    /**
+     * Creates a new scheduler task.
+     */
+    public SchedulerTask(RepositoryListener listener) {
+        this.wsListener = listener;
+    }
+
+    /**
+     * Cancels this scheduler task.
+     * <p/>
+     * This method may be called repeatedly; the second and subsequent calls have no effect.
+     *
+     * @return Returns true if this task was already scheduled to run.
+     */
+    public boolean cancel() {
+        synchronized (lock) {
+            if (timerTask != null) {
+                timerTask.cancel();
+            }
+
+            boolean result = (state == SCHEDULED);
+
+            state = CANCELLED;
+
+            return result;
+        }
+    }
+
+    private void checkRepository() {
+        wsListener.startListener();
+    }
+
+    /**
+     * The action to be performed by this scheduler task.
+     */
+    public void run() {
+        checkRepository();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/util/PhasesInfo.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/util/PhasesInfo.java
new file mode 100644
index 0000000..28ea07c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/util/PhasesInfo.java
@@ -0,0 +1,279 @@
+/*
+* Copyright 2004,2005 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.axis2.deployment.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.deployment.DeploymentErrorMsgs;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.phaseresolver.PhaseException;
+import org.apache.axis2.phaseresolver.PhaseMetadata;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class PhasesInfo {
+    private ArrayList INPhases;
+    private ArrayList IN_FaultPhases;
+    private ArrayList OUTPhases;
+    private ArrayList OUT_FaultPhases;
+
+    public PhasesInfo() {
+        INPhases = new ArrayList();
+        IN_FaultPhases = new ArrayList();
+        OUTPhases = new ArrayList();
+        OUT_FaultPhases = new ArrayList();
+    }
+
+    /**
+     * To copy phase information from one to another
+     *
+     * @param phase
+     */
+    private Phase copyPhase(Phase phase) throws DeploymentException {
+        Phase newPhase = new Phase(phase.getPhaseName());
+        Iterator handlers = phase.getHandlers().iterator();
+
+        while (handlers.hasNext()) {
+            try {
+                Handler handlerDescription = (Handler) handlers.next();
+
+                newPhase.addHandler(handlerDescription.getHandlerDesc());
+            } catch (PhaseException e) {
+                throw new DeploymentException(e);
+            }
+        }
+
+        return newPhase;
+    }
+
+    HandlerDescription makeHandler(OMElement handlerElement) {
+        String name = handlerElement.getAttributeValue(new QName("name"));
+        QName qname = handlerElement.resolveQName(name);
+        HandlerDescription desc = new HandlerDescription(qname.getLocalPart());
+        String className = handlerElement.getAttributeValue(new QName("class"));
+
+        desc.setClassName(className);
+
+        return desc;
+    }
+
+    public Phase makePhase(OMElement phaseElement) throws PhaseException {
+        String phaseName = phaseElement.getAttributeValue(new QName("name"));
+        Phase phase = new Phase(phaseName);
+        Iterator children = phaseElement.getChildElements();
+
+        while (children.hasNext()) {
+            OMElement handlerElement = (OMElement) children.next();
+            HandlerDescription handlerDesc = makeHandler(handlerElement);
+
+            phase.addHandler(handlerDesc);
+        }
+
+        return phase;
+    }
+
+    public ArrayList getGlobalInflow() throws DeploymentException {
+        ArrayList globalphase = new ArrayList();
+        boolean foundDispatchPhase = false;
+        for (int i = 0; i < INPhases.size(); i++) {
+            Phase phase = (Phase) INPhases.get(i);
+            String phaseName = phase.getPhaseName();
+            if (!foundDispatchPhase) {
+                if (PhaseMetadata.PHASE_DISPATCH.equals(phaseName)) {
+                    foundDispatchPhase = true;
+                }
+                globalphase.add(phase);
+            }
+        }
+        if (!foundDispatchPhase) {
+            throw new DeploymentException(
+                    Messages.getMessage("dispatchPhaseNotFoundOnInflow"));
+        }
+        return globalphase;
+    }
+
+    public ArrayList getGlobalOutPhaseList() throws DeploymentException {
+        /**
+         * I have assumed that     PolicyDetermination and  MessageProcessing are global out phase
+         */
+        ArrayList globalPhaseList = new ArrayList();
+
+        boolean messageOut = false;
+        for (int i = 0; i < OUTPhases.size(); i++) {
+            Phase phase = (Phase) OUTPhases.get(i);
+            String phaseName = phase.getPhaseName();
+            if (!messageOut) {
+                if (PhaseMetadata.PHASE_MESSAGE_OUT.equals(phaseName)) {
+                    messageOut = true;
+                    globalPhaseList.add(copyPhase(phase));
+                }
+            } else {
+                globalPhaseList.add(copyPhase(phase));
+            }
+        }
+        return globalPhaseList;
+    }
+
+    public ArrayList getINPhases() {
+        return INPhases;
+    }
+
+    public ArrayList getIN_FaultPhases() {
+        return IN_FaultPhases;
+    }
+
+    public ArrayList getOUTPhases() {
+        return OUTPhases;
+    }
+
+    public ArrayList getOUT_FaultPhases() throws DeploymentException {
+        ArrayList globalPhaseList = new ArrayList();
+        boolean messageOut = false;
+        for (int i = 0; i < OUT_FaultPhases.size(); i++) {
+            Phase phase = (Phase) OUT_FaultPhases.get(i);
+            String phaseName = phase.getPhaseName();
+            if (!messageOut) {
+                if (PhaseMetadata.PHASE_MESSAGE_OUT.equals(phaseName)) {
+                    messageOut = true;
+                    globalPhaseList.add(copyPhase(phase));
+                }
+            } else {
+                globalPhaseList.add(copyPhase(phase));
+            }
+        }
+        return globalPhaseList;
+    }
+
+    public ArrayList getOperationInFaultPhases() throws DeploymentException {
+        ArrayList operationINPhases = new ArrayList();
+        boolean foundDispathPhase = false;
+        for (int i = 0; i < IN_FaultPhases.size(); i++) {
+            Phase phase = (Phase) IN_FaultPhases.get(i);
+            String phaseName = phase.getPhaseName();
+            if (foundDispathPhase) {
+                operationINPhases.add(copyPhase(phase));
+            }
+            if (PhaseMetadata.PHASE_DISPATCH.equals(phaseName)) {
+                foundDispathPhase = true;
+            }
+        }
+        return operationINPhases;
+    }
+
+    public ArrayList getGlobalInFaultPhases() throws DeploymentException {
+        ArrayList globalInfaultphase = new ArrayList();
+        boolean foundDispathcPase = false;
+        for (int i = 0; i < IN_FaultPhases.size(); i++) {
+            Phase phase = (Phase) IN_FaultPhases.get(i);
+            String phaseName = phase.getPhaseName();
+            if (!foundDispathcPase) {
+                if (PhaseMetadata.PHASE_DISPATCH.equals(phaseName)) {
+                    foundDispathcPase = true;
+                }
+                globalInfaultphase.add(phase);
+            }
+        }
+        if (!foundDispathcPase) {
+            throw new DeploymentException(
+                    Messages.getMessage(DeploymentErrorMsgs.INVALID_PHASE));
+        }
+        return globalInfaultphase;
+    }
+
+
+    public ArrayList getOperationInPhases() throws DeploymentException {
+        ArrayList operationINPhases = new ArrayList();
+        boolean foundDispathPhase = false;
+        for (int i = 0; i < INPhases.size(); i++) {
+            Phase phase = (Phase) INPhases.get(i);
+            String phaseName = phase.getPhaseName();
+            if (foundDispathPhase) {
+                operationINPhases.add(copyPhase(phase));
+            }
+            if (PhaseMetadata.PHASE_DISPATCH.equals(phaseName)) {
+                foundDispathPhase = true;
+            }
+        }
+        return operationINPhases;
+    }
+
+    public ArrayList getOperationOutFaultPhases() throws DeploymentException {
+        ArrayList operationFaultOutPhases = new ArrayList();
+        for (int i = 0; i < OUT_FaultPhases.size(); i++) {
+            Phase phase = (Phase) OUT_FaultPhases.get(i);
+            String phaseName = phase.getPhaseName();
+            if (PhaseMetadata.PHASE_MESSAGE_OUT.equals(phaseName)) {
+                break;
+            }
+            operationFaultOutPhases.add(copyPhase(phase));
+
+        }
+        return operationFaultOutPhases;
+    }
+
+    public ArrayList getOperationOutPhases() throws DeploymentException {
+        ArrayList oprationOUTPhases = new ArrayList();
+
+        for (int i = 0; i < OUTPhases.size(); i++) {
+            Phase phase = (Phase) OUTPhases.get(i);
+            String phaseName = phase.getPhaseName();
+            if (PhaseMetadata.PHASE_MESSAGE_OUT.equals(phaseName)) {
+                break;
+            }
+            oprationOUTPhases.add(copyPhase(phase));
+        }
+
+        return oprationOUTPhases;
+    }
+
+    public void setINPhases(ArrayList INPhases) {
+        this.INPhases = INPhases;
+    }
+
+    public void setIN_FaultPhases(ArrayList IN_FaultPhases) {
+        this.IN_FaultPhases = IN_FaultPhases;
+    }
+
+    public void setOUTPhases(ArrayList OUTPhases) {
+        this.OUTPhases = OUTPhases;
+    }
+
+    public void setOUT_FaultPhases(ArrayList OUT_FaultPhases) {
+        this.OUT_FaultPhases = OUT_FaultPhases;
+    }
+
+    public void setOperationPhases(AxisOperation axisOperation) throws AxisFault {
+        if (axisOperation != null) {
+            try {
+                axisOperation.setRemainingPhasesInFlow(getOperationInPhases());
+                axisOperation.setPhasesOutFlow(getOperationOutPhases());
+                axisOperation.setPhasesInFaultFlow(getOperationInFaultPhases());
+                axisOperation.setPhasesOutFaultFlow(getOperationOutFaultPhases());
+            } catch (DeploymentException e) {
+                throw new AxisFault(e);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
new file mode 100644
index 0000000..7cad19e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
@@ -0,0 +1,548 @@
+package org.apache.axis2.deployment.util;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.deployment.DeploymentConstants;

+import org.apache.axis2.deployment.DeploymentException;

+import org.apache.axis2.deployment.repository.util.ArchiveFileData;

+import org.apache.axis2.deployment.repository.util.ArchiveReader;

+import org.apache.axis2.description.*;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.Handler;

+import org.apache.axis2.engine.MessageReceiver;

+import org.apache.axis2.util.Loader;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+import org.apache.ws.commons.schema.utils.NamespaceMap;

+import org.apache.ws.java2wsdl.Java2WSDLConstants;

+import org.apache.ws.java2wsdl.SchemaGenerator;

+import org.apache.ws.java2wsdl.utils.TypeTable;

+import org.codehaus.jam.JMethod;

+

+import javax.xml.namespace.QName;

+import java.io.*;

+import java.lang.reflect.Method;

+import java.net.MalformedURLException;

+import java.net.URL;

+import java.net.URLClassLoader;

+import java.util.*;

+import java.util.zip.ZipEntry;

+import java.util.zip.ZipInputStream;

+

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class Utils {

+

+    private static Log log = LogFactory.getLog(Utils.class);

+

+    public static void addFlowHandlers(Flow flow, ClassLoader clsLoader) throws AxisFault {

+        int count = flow.getHandlerCount();

+

+        for (int j = 0; j < count; j++) {

+            HandlerDescription handlermd = flow.getHandler(j);

+            Class handlerClass;

+            Handler handler;

+

+            handlerClass = getHandlerClass(handlermd.getClassName(), clsLoader);

+

+            try {

+                handler = (Handler) handlerClass.newInstance();

+                handler.init(handlermd);

+                handlermd.setHandler(handler);

+            } catch (InstantiationException e) {

+                throw new AxisFault(e);

+            } catch (IllegalAccessException e) {

+                throw new AxisFault(e);

+            }

+        }

+    }

+

+    public static void loadHandler(ClassLoader loader1, HandlerDescription desc)

+            throws DeploymentException {

+        String handlername = desc.getClassName();

+        Handler handler;

+        Class handlerClass;

+

+        try {

+            handlerClass = Loader.loadClass(loader1, handlername);

+            handler = (Handler) handlerClass.newInstance();

+            handler.init(desc);

+            desc.setHandler(handler);

+        } catch (ClassNotFoundException e) {

+            throw new DeploymentException(e);

+        } catch (Exception e) {

+            throw new DeploymentException(e);

+        }

+    }

+

+    public static URL[] getURLsForAllJars(URL url, boolean antiJARLocking) {

+        try {

+            ArrayList array = new ArrayList();

+            String urlString = url.toString();

+            InputStream in = url.openStream();

+            ZipInputStream zin;

+            FileInputStream fin = null;

+            if (antiJARLocking) {

+                File inputFile = createTempFile(urlString.substring(urlString.length() - 4), in);

+                in.close();

+                array.add(inputFile.toURL());

+                fin = new FileInputStream(inputFile);

+                zin = new ZipInputStream(fin);

+            } else {

+                array.add(url);

+                zin = new ZipInputStream(in);

+            }

+            ZipEntry entry;

+            String entryName;

+            while ((entry = zin.getNextEntry()) != null) {

+                entryName = entry.getName();

+                /**

+                 * id the entry name start with /lib and end with .jar

+                 * then those entry name will be added to the arraylist

+                 */

+                if ((entryName != null) && entryName.toLowerCase().startsWith("lib/")

+                        && entryName.toLowerCase().endsWith(".jar")) {

+                    String suffix = entryName.substring(4);

+                    File f = createTempFile(suffix, zin);

+                    array.add(f.toURL());

+                }

+            }

+            zin.close();

+            if (!antiJARLocking) {

+                in.close();

+            }

+            if (fin != null) {

+                fin.close();

+            }

+            return (URL[]) array.toArray(new URL[array.size()]);

+        } catch (Exception e) {

+            throw new RuntimeException(e);

+        }

+    }

+

+    public static File createTempFile(String suffix, InputStream in) throws IOException {

+        byte data[] = new byte[2048];

+        int count;

+        new File(System.getProperty("java.io.tmpdir")).mkdirs();

+        File f = File.createTempFile("axis2", suffix);

+        f.deleteOnExit();

+        FileOutputStream out = new FileOutputStream(f);

+        while ((count = in.read(data, 0, 2048)) != -1) {

+            out.write(data, 0, count);

+        }

+        out.close();

+        return f;

+    }

+

+    public static ClassLoader getClassLoader(ClassLoader parent, String path)

+            throws DeploymentException {

+        return getClassLoader(parent, new File(path));

+    }

+

+    public static ClassLoader getClassLoader(ClassLoader parent, File file)

+            throws DeploymentException {

+        URLClassLoader classLoader;

+

+        if (file != null) {

+            try {

+                ArrayList urls = new ArrayList();

+                urls.add(file.toURL());

+                // lower case directory name

+                File libfiles = new File(file, "lib");

+                if (libfiles.exists()) {

+                    urls.add(libfiles.toURL());

+                    File jarfiles[] = libfiles.listFiles();

+                    for (int i = 0; i < jarfiles.length; i++) {

+                        File jarfile = jarfiles[i];

+                        if (jarfile.getName().endsWith(".jar")) {

+                            urls.add(jarfile.toURL());

+                        }

+                    }

+                } else {

+                    // upper case directory name

+                    libfiles = new File(file, "Lib");

+                    if (libfiles.exists()) {

+                        urls.add(libfiles.toURL());

+                        File jarfiles[] = libfiles.listFiles();

+                        for (int i = 0; i < jarfiles.length; i++) {

+                            File jarfile = jarfiles[i];

+                            if (jarfile.getName().endsWith(".jar")) {

+                                urls.add(jarfile.toURL());

+                            }

+                        }

+                    }

+                }

+

+                URL urllist[] = new URL[urls.size()];

+                for (int i = 0; i < urls.size(); i++) {

+                    urllist[i] = (URL) urls.get(i);

+                }

+                classLoader = new URLClassLoader(urllist, parent);

+                return classLoader;

+            } catch (MalformedURLException e) {

+                throw new DeploymentException(e);

+            }

+        }

+

+        return null;

+    }

+

+    private static Class getHandlerClass(String className, ClassLoader loader1) throws AxisFault {

+        Class handlerClass;

+

+        try {

+            handlerClass = Loader.loadClass(loader1, className);

+        } catch (ClassNotFoundException e) {

+            throw new AxisFault(e.getMessage());

+        }

+

+        return handlerClass;

+    }

+

+    /**

+     * This guy will create a AxisService using java reflection

+     */

+    public static void fillAxisService(AxisService axisService,

+                                       AxisConfiguration axisConfig,

+                                       ArrayList excludeOperations) throws Exception {

+        String serviceClass;

+        Parameter implInfoParam = axisService.getParameter(Constants.SERVICE_CLASS);

+        ClassLoader serviceClassLoader = axisService.getClassLoader();

+

+        if (implInfoParam != null) {

+            serviceClass = (String) implInfoParam.getValue();

+        } else {

+            // if Service_Class is null, every AbstractMR will look for

+            // ServiceObjectSupplier. This is user specific and may contain

+            // other looks.

+            implInfoParam = axisService.getParameter(Constants.SERVICE_OBJECT_SUPPLIER);

+            if (implInfoParam != null) {

+                Class serviceObjectMaker = Loader.loadClass(serviceClassLoader, ((String)

+                        implInfoParam.getValue()).trim());

+

+                // Find static getServiceObject() method, call it if there

+                Method method = serviceObjectMaker.

+                        getMethod("getServiceObject",

+                                new Class[]{AxisService.class});

+                Object obj = null;

+                if (method != null) {

+                    obj = method.invoke(serviceObjectMaker.newInstance(), new Object[]{axisService});

+                }

+                if (obj == null) {

+                    log.warn("ServiceObjectSupplier implmentation Object could not be found");

+                    throw new DeploymentException(

+                            "ServiceClass or ServiceObjectSupplier implmentation Object could not be found");

+                }

+                serviceClass = obj.getClass().getName();

+            } else {

+                return;

+                //TODO : Need to fix this

+//                 throw new DeploymentException(

+//                            "ServiceClass or ServiceObjectSupplier implmentation Object could not be found");

+            }

+

+        }

+        // adding name spaces

+        NamespaceMap map = new NamespaceMap();

+        map.put(Java2WSDLConstants.AXIS2_NAMESPACE_PREFIX,

+                Java2WSDLConstants.AXIS2_XSD);

+        map.put(Java2WSDLConstants.DEFAULT_SCHEMA_NAMESPACE_PREFIX,

+                Java2WSDLConstants.URI_2001_SCHEMA_XSD);

+        axisService.setNameSpacesMap(map);

+        SchemaGenerator schemaGenerator = new SchemaGenerator(serviceClassLoader,

+                serviceClass.trim(), axisService.getSchematargetNamespace(),

+                axisService.getSchematargetNamespacePrefix());

+        schemaGenerator.setExcludeMethods(excludeOperations);

+        if (!axisService.isElementFormDefault()) {

+            schemaGenerator.setElementFormDefault(Java2WSDLConstants.FORM_DEFAULT_UNQUALIFIED);

+        }

+        // package to namespace map

+        schemaGenerator.setPkg2nsmap(axisService.getP2nMap());

+        Collection schemas = schemaGenerator.generateSchema();

+        axisService.addSchema(schemas);

+        axisService.setSchematargetNamespace(schemaGenerator.getSchemaTargetNameSpace());

+        axisService.setTypeTable(schemaGenerator.getTypeTable());

+        if (Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE.equals(

+                axisService.getTargetNamespace())) {

+            axisService.setTargetNamespace(schemaGenerator.getTargetNamespace());

+        }

+

+        JMethod [] method = schemaGenerator.getMethods();

+        TypeTable table = schemaGenerator.getTypeTable();

+        PhasesInfo pinfo = axisConfig.getPhasesInfo();

+

+

+        for (int i = 0; i < method.length; i++) {

+            JMethod jmethod = method[i];

+            if (!jmethod.isPublic()) {

+                // no need to expose , private and protected methods

+                continue;

+            }

+            if (excludeOperations.contains(jmethod.getSimpleName())) {

+                continue;

+            }

+            String opName = jmethod.getSimpleName();

+            AxisOperation operation = axisService.getOperation(new QName(opName));

+            // if the operation there in services.xml then try to set it schema element name

+            if (operation != null) {

+                AxisMessage inMessage = operation.getMessage(

+                        WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+                if (inMessage != null) {

+                    inMessage.setName(opName + Java2WSDLConstants.MESSAGE_SUFFIX);

+                    inMessage.setElementQName(table.getComplexSchemaType(jmethod.getSimpleName()));

+                }

+                if (!jmethod.getReturnType().isVoidType()) {

+                    AxisMessage outMessage = operation.getMessage(

+                            WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+                    outMessage.setElementQName(table.getQNamefortheType(jmethod.getSimpleName() +

+                            Java2WSDLConstants.RESPONSE));

+                    outMessage.setName(opName + Java2WSDLConstants.RESPONSE);

+                }

+                if (jmethod.getExceptionTypes().length > 0) {

+                    AxisMessage faultMessage = new AxisMessage();

+                    faultMessage.setName(jmethod.getSimpleName() + "Fault");

+                    faultMessage.setElementQName(table.getComplexSchemaType(jmethod.getSimpleName() + "Fault"));

+                    operation.setFaultMessages(faultMessage);

+                }

+            } else {

+                operation = getAxisOperationforJmethod(jmethod, table);

+                MessageReceiver mr = axisService.getMessageReceiver(

+                        operation.getMessageExchangePattern());

+                if (mr != null) {

+                    operation.setMessageReceiver(mr);

+                } else {

+                    mr = axisConfig.getMessageReceiver(operation.getMessageExchangePattern());

+                    operation.setMessageReceiver(mr);

+                }

+                pinfo.setOperationPhases(operation);

+                axisService.addOperation(operation);

+            }

+            operation.setSoapAction("urn:" + opName);

+        }

+    }

+

+    public static AxisOperation getAxisOperationforJmethod(JMethod jmethod,

+                                                           TypeTable table) throws AxisFault {

+        AxisOperation operation;

+        String opName = jmethod.getSimpleName();

+        if (jmethod.getReturnType().isVoidType()) {

+            operation = AxisOperationFactory.getAxisOperation(WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_IN_ONLY);

+        } else {

+            operation = AxisOperationFactory.getAxisOperation(WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_IN_OUT);

+            AxisMessage outMessage = operation.getMessage(

+                    WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+            outMessage.setElementQName(table.getQNamefortheType(jmethod.getSimpleName() +

+                    Java2WSDLConstants.RESPONSE));

+            outMessage.setName(opName + Java2WSDLConstants.RESPONSE);

+        }

+        if (jmethod.getExceptionTypes().length > 0) {

+            AxisMessage faultMessage = new AxisMessage();

+            faultMessage.setName(jmethod.getSimpleName() + "Fault");

+            faultMessage.setElementQName(table.getComplexSchemaType(jmethod.getSimpleName() + "Fault"));

+            operation.setFaultMessages(faultMessage);

+        }

+        operation.setName(new QName(opName));

+        AxisMessage inMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+        if (inMessage != null) {

+            inMessage.setElementQName(table.getComplexSchemaType(jmethod.getSimpleName()));

+            inMessage.setName(opName + Java2WSDLConstants.MESSAGE_SUFFIX);

+        }

+        return operation;

+    }

+

+    public static OMElement getParameter(String name, String value, boolean locked) {

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMElement parameter = fac.createOMElement("parameter", null);

+        parameter.addAttribute("name", name, null);

+        parameter.addAttribute("locked", Boolean.toString(locked), null);

+        parameter.setText(value);

+        return parameter;

+    }

+

+    /**

+     * This method is to get the list of services there in a module

+     * if module want to add services then the way of doing that is

+     * 1. Add a directory called services inside the module (both in mar case and expanded case)

+     * 2. Then add a services.list file into that directory adding all the modules

+     * you want to add

+     * 3. Then put all the services into services directory in the module

+     * 4. All the class is module can be access via a the module services.

+     */

+

+    public static void deployModuleServices(AxisModule module,

+                                            ConfigurationContext configCtx) throws AxisFault {

+        try {

+            AxisConfiguration axisConfig = configCtx.getAxisConfiguration();

+            ArchiveReader archiveReader = new ArchiveReader();

+            PhasesInfo phasesInfo = axisConfig.getPhasesInfo();

+            ClassLoader moduleClassLoader = module.getModuleClassLoader();

+            ArrayList services = new ArrayList();

+            InputStream in = moduleClassLoader.getResourceAsStream("aars/aars.list");

+            if (in != null) {

+                BufferedReader input;

+                try {

+                    input = new BufferedReader(new InputStreamReader(in));

+                    String line;

+                    while ((line = input.readLine()) != null) {

+                        services.add(line);

+                    }

+                    input.close();

+                } catch (IOException ex) {

+                    ex.printStackTrace();

+                }

+            }

+            if (services.size() > 0) {

+                for (int i = 0; i < services.size(); i++) {

+                    String servicename = (String) services.get(i);

+                    if (servicename == null || "".equals(servicename)) {

+                        continue;

+                    }

+                    InputStream fin = moduleClassLoader.getResourceAsStream("aars/" + servicename);

+                    if (fin == null) {

+                        throw new AxisFault("No service archiev found : " + servicename);

+                    }

+                    File inputFile = Utils.createTempFile(servicename, fin);

+                    ArchiveFileData filedata = new ArchiveFileData(inputFile, DeploymentConstants.TYPE_SERVICE, false);

+

+                    filedata.setClassLoader(false,

+                            moduleClassLoader);

+                    HashMap wsdlservice = archiveReader.processWSDLs(filedata);

+                    if (wsdlservice != null && wsdlservice.size() > 0) {

+                        Iterator servicesitr = wsdlservice.values().iterator();

+                        while (servicesitr.hasNext()) {

+                            AxisService service = (AxisService) servicesitr.next();

+                            Iterator operations = service.getOperations();

+                            while (operations.hasNext()) {

+                                AxisOperation axisOperation = (AxisOperation) operations.next();

+                                phasesInfo.setOperationPhases(axisOperation);

+                            }

+                        }

+                    }

+                    AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);

+                    serviceGroup.setServiceGroupClassLoader(

+                            filedata.getClassLoader());

+                    ArrayList serviceList = archiveReader.processServiceGroup(

+                            filedata.getAbsolutePath(), filedata,

+                            serviceGroup, false, wsdlservice,

+                            configCtx);

+                    for (int j = 0; j < serviceList.size(); j++) {

+                        AxisService axisService = (AxisService) serviceList.get(j);

+                        serviceGroup.addService(axisService);

+                    }

+                    axisConfig.addServiceGroup(serviceGroup);

+                    fin.close();

+                }

+            }

+        } catch (IOException e) {

+            throw new AxisFault(e);

+        }

+    }

+

+    /**

+     * Normalize a uri containing ../ and ./ paths.

+     *

+     * @param uri The uri path to normalize

+     * @return The normalized uri

+     */

+    public static String normalize(String uri) {

+        if ("".equals(uri)) {

+            return uri;

+        }

+        int leadingSlashes = 0;

+        for (leadingSlashes = 0 ; leadingSlashes < uri.length()

+                && uri.charAt(leadingSlashes) == '/' ; ++leadingSlashes) {}

+        boolean isDir = (uri.charAt(uri.length() - 1) == '/');

+        StringTokenizer st = new StringTokenizer(uri, "/");

+        LinkedList clean = new LinkedList();

+        while (st.hasMoreTokens()) {

+            String token = st.nextToken();

+            if ("..".equals(token)) {

+                if (! clean.isEmpty() && ! "..".equals(clean.getLast())) {

+                    clean.removeLast();

+                    if (! st.hasMoreTokens()) {

+                        isDir = true;

+                    }

+                } else {

+                    clean.add("..");

+                }

+            } else if (! ".".equals(token) && ! "".equals(token)) {

+                clean.add(token);

+            }

+        }

+        StringBuffer sb = new StringBuffer();

+        while (leadingSlashes-- > 0) {

+            sb.append('/');

+        }

+        for (Iterator it = clean.iterator() ; it.hasNext() ; ) {

+            sb.append(it.next());

+            if (it.hasNext()) {

+                sb.append('/');

+            }

+        }

+        if (isDir && sb.length() > 0 && sb.charAt(sb.length() - 1) != '/') {

+            sb.append('/');

+        }

+        return sb.toString();

+    }

+

+    public static String getPath(String parent, String childPath) {

+        Stack parentStack = new Stack();

+        Stack childStack = new Stack();

+        if (parent != null) {

+            String [] values = parent.split("/");

+            if (values.length > 0) {

+                for (int i = 0; i < values.length; i++) {

+                    String value = values[i];

+                    parentStack.push(value);

+                }

+            }

+        }

+        String [] values = childPath.split("/");

+        if (values.length > 0) {

+            for (int i = 0; i < values.length; i++) {

+                String value = values[i];

+                childStack.push(value);

+            }

+        }

+        String filepath = "";

+        while (!childStack.isEmpty()) {

+            String value = (String) childStack.pop();

+            if ("..".equals(value)) {

+                parentStack.pop();

+            } else if (!"".equals(value)) {

+                if ("".equals(filepath)) {

+                    filepath = value;

+                } else {

+                    filepath = value + "/" + filepath;

+                }

+            }

+        }

+        while (!parentStack.isEmpty()) {

+            String value = (String) parentStack.pop();

+            if (!"".equals(value)) {

+                filepath = value + "/" + filepath;

+            }

+        }

+        return filepath;

+    }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisDescription.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisDescription.java
new file mode 100644
index 0000000..a81b7e3
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisDescription.java
@@ -0,0 +1,393 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.modules.Module;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Policy;
+
+public abstract class AxisDescription implements ParameterInclude,
+        DescriptionConstants {
+
+    private AxisDescription parent = null;
+
+    private ParameterInclude parameterInclude;
+
+    private PolicyInclude policyInclude = null;
+
+    private HashMap children;
+
+    // creating a logger instance
+    private Log log = LogFactory.getLog(this.getClass());
+
+    public AxisDescription() {
+        parameterInclude = new ParameterIncludeImpl();
+        children = new HashMap();
+    }
+
+    public void addParameter(Parameter param) throws AxisFault {
+
+        if (param == null) {
+            return;
+        }
+
+        if (isParameterLocked(param.getName())) {
+            throw new AxisFault(Messages.getMessage("paramterlockedbyparent",
+                    param.getName()));
+        }
+
+        parameterInclude.addParameter(param);
+    }
+
+    public void removeParameter(Parameter param) throws AxisFault {
+        parameterInclude.removeParameter(param);
+    }
+
+    public void deserializeParameters(OMElement parameterElement)
+            throws AxisFault {
+
+        parameterInclude.deserializeParameters(parameterElement);
+
+    }
+
+    public Parameter getParameter(String name) {
+        Parameter parameter = parameterInclude.getParameter(name);
+        if (parameter == null && parent != null) {
+            return parent.getParameter(name);
+        } else {
+            return parameter;
+        }
+    }
+
+    public Object getParameterValue(String name) {
+        Parameter param = getParameter(name);
+        if (param == null) return null;
+        return param.getValue();
+    }
+
+    public ArrayList getParameters() {
+        return parameterInclude.getParameters();
+    }
+
+    public boolean isParameterLocked(String parameterName) {
+
+        if (this.parent != null && this.parent.isParameterLocked(parameterName)) {
+            return true;
+        }
+
+        Parameter parameter = getParameter(parameterName);
+        return parameter != null && parameter.isLocked();
+    }
+
+    public void setParent(AxisDescription parent) {
+        this.parent = parent;
+    }
+
+    public AxisDescription getParent() {
+        return parent;
+    }
+
+    public void setPolicyInclude(PolicyInclude policyInclude) {
+        this.policyInclude = policyInclude;
+    }
+
+    public PolicyInclude getPolicyInclude() {
+        if (policyInclude == null) {
+            policyInclude = new PolicyInclude(this);
+        }
+        return policyInclude;
+    }
+
+    public void addChild(AxisDescription child) {
+        children.put(child.getKey(), child);
+    }
+
+    public void addChild(Object key, AxisDescription child) {
+        children.put(key, child);
+    }
+
+    public Iterator getChildren() {
+        return children.values().iterator();
+    }
+
+    public AxisDescription getChild(Object key) {
+        return (AxisDescription) children.get(key);
+    }
+
+    public void removeChild(Object key) {
+        children.remove(key);
+    }
+
+    /**
+     * This method sets the policy as the default of this AxisDescription
+     * instance. Further more this method does the followings.
+     * 
+     * (1) Engage whatever modules necessary to execute new the effective policy
+     * of this AxisDescription instance. (2) Disengage whatever modules that are
+     * not necessary to execute the new effective policy of this AxisDescription
+     * instance. (3) Check whether each module can execute the new effective
+     * policy of this AxisDescription instance. (4) If not throw an AxisFault to
+     * notify the user. (5) Else notify each module about the new effective
+     * policy.
+     * 
+     * @param policy
+     *            the new policy of this AxisDescription instance. The effective
+     *            policy is the merge of this argument with effective policy of
+     *            parent of this AxisDescription.
+     * @throws AxisFault
+     *             if any module is unable to execute the effective policy of
+     *             this AxisDescription instance successfully or no module to
+     *             execute some portion (one or more PrimtiveAssertions ) of
+     *             that effective policy.
+     */
+    public void applyPolicy(Policy policy) throws AxisFault {
+        AxisConfiguration configuration = getAxisConfiguration();
+
+        if (configuration == null) {
+            // FIXME return or throw an Exception?
+            return;
+        }
+
+        // sets AxisDescription policy
+        getPolicyInclude().setPolicy(policy);
+
+        /*
+         * now we should take the effective one .. it is necessary since
+         * AxisDescription.applyPolicy(..) doesn't override policies at the
+         * Upper levels.
+         */
+        Policy effPolicy = getPolicyInclude().getEffectivePolicy();
+
+        /*
+         * for the moment we consider policies with only one alternative. If the
+         * policy contains multiple alternatives only the first alternative will
+         * be considered.
+         */
+        Iterator iterator = effPolicy.getAlternatives();
+        if (!iterator.hasNext()) {
+            throw new AxisFault(
+                    "Policy doesn't contain any policy alternatives");
+        }
+
+        List assertionList = (List) iterator.next();
+
+        Assertion assertion;
+        String namespaceURI;
+
+        List moduleList;
+
+        List namespaceList = new ArrayList();
+        List modulesToEngage = new ArrayList();
+
+        for (Iterator assertions = assertionList.iterator(); assertions
+                .hasNext();) {
+            assertion = (Assertion) assertions.next();
+            namespaceURI = assertion.getName().getNamespaceURI();
+
+            moduleList = configuration
+                    .getModulesForPolicyNamesapce(namespaceURI);
+
+            if (moduleList == null) {
+                log.debug("can't find any module to process "
+                        + assertion.getName() + " type assertions");
+                continue;
+            }
+
+            if (!canSupportAssertion(assertion, moduleList)) {
+                throw new AxisFault("atleast one module can't support "
+                        + assertion.getName());
+            }
+
+            if (!namespaceList.contains(namespaceURI)) {
+                namespaceList.add(namespaceURI);
+                modulesToEngage.addAll(moduleList);
+            }
+        }
+
+        /*
+         * FIXME We need to disengage any modules that are already engaged *but*
+         * has nothing to do with the policy to apply
+         */
+
+        engageModulesToAxisDescription(modulesToEngage, this);
+    }
+
+    /**
+     * Applies the policies on the Description Hierarchy recursively.
+     * 
+     * @throws AxisFault
+     * 
+     */
+    public void applyPolicy() throws AxisFault {
+        
+        if (this instanceof AxisMessage) {
+            return;
+        }
+
+        AxisConfiguration configuration = getAxisConfiguration();
+        if (configuration == null) {
+            return; // CHECKME: May be we need to throw an Exception ??
+        }
+
+        Policy effPolicy = getPolicyInclude().getEffectivePolicy();
+
+        if (effPolicy != null) {
+
+            /*
+             * for the moment we consider policies with only one alternative. If
+             * the policy contains multiple alternatives only the first
+             * alternative will be considered.
+             */
+            Iterator iterator = effPolicy.getAlternatives();
+            if (!iterator.hasNext()) {
+                throw new AxisFault(
+                        "Policy doesn't contain any policy alternatives");
+            }
+
+            List assertionList = (List) iterator.next();
+
+            Assertion assertion;
+            String namespaceURI;
+
+            List moduleList;
+
+            List namespaceList = new ArrayList();
+            List modulesToEngage = new ArrayList();
+
+            for (Iterator assertions = assertionList.iterator(); assertions
+                    .hasNext();) {
+                assertion = (Assertion) assertions.next();
+                namespaceURI = assertion.getName().getNamespaceURI();
+
+                moduleList = configuration
+                        .getModulesForPolicyNamesapce(namespaceURI);
+
+                if (moduleList == null) {
+                    log.debug("can't find any module to process "
+                            + assertion.getName() + " type assertions");
+                    continue;
+                }
+
+                if (!canSupportAssertion(assertion, moduleList)) {
+                    throw new AxisFault("atleast one module can't support "
+                            + assertion.getName());
+                }
+
+                if (!namespaceList.contains(namespaceURI)) {
+                    namespaceList.add(namespaceURI);
+                    modulesToEngage.addAll(moduleList);
+                }
+            }
+
+            /*
+             * FIXME We need to disengage any modules that are already engaged
+             * *but* has nothing to do with the policy to apply
+             */
+
+            engageModulesToAxisDescription(modulesToEngage, this);
+
+        }
+
+        AxisDescription child;
+
+        for (Iterator children = getChildren(); children.hasNext();) {
+            child = (AxisDescription) children.next();
+            child.applyPolicy();
+        }
+    }
+
+    private boolean canSupportAssertion(Assertion assertion, List moduleList) {
+
+        AxisModule axisModule;
+        Module module;
+
+        for (Iterator iterator = moduleList.iterator(); iterator.hasNext();) {
+            axisModule = (AxisModule) iterator.next();
+            // FIXME is this step really needed ??
+            // Shouldn't axisMoudle.getModule always return not-null value ??
+            module = axisModule.getModule();
+
+            if (!(module == null || module.canSupportAssertion(assertion))) {
+                log.debug(((AxisModule) axisModule).getName()
+                        + " says it can't support " + assertion.getName());
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    private void engageModulesToAxisDescription(List moduleList,
+            AxisDescription description) throws AxisFault {
+
+        AxisModule axisModule;
+        Module module;
+
+        for (Iterator iterator = moduleList.iterator(); iterator.hasNext();) {
+            axisModule = (AxisModule) iterator.next();
+            // FIXME is this step really needed ??
+            // Shouldn't axisMoudle.getModule always return not-null value ??
+            module = axisModule.getModule();
+
+            if (!(module == null || description.isEngaged(axisModule.getName()))) {
+                // engages the module to AxisDescription
+                description.engageModule(axisModule, getAxisConfiguration());
+                // notifies the module about the engagement
+                axisModule.getModule().engageNotify(description);
+            }
+        }
+    }
+
+    public AxisConfiguration getAxisConfiguration() {
+
+        if (this instanceof AxisConfiguration) {
+            return (AxisConfiguration) this;
+        }
+
+        if (this.parent != null) {
+            return this.parent.getAxisConfiguration();
+        }
+
+        return null;
+    }
+
+    public abstract Object getKey();
+
+    /**
+     * Engaging a module to different level
+     * 
+     * @param axisModule
+     * @param axisConfig
+     */
+    public abstract void engageModule(AxisModule axisModule,
+            AxisConfiguration axisConfig) throws AxisFault;
+
+    public abstract boolean isEngaged(QName axisModule);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisMessage.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisMessage.java
new file mode 100644
index 0000000..52ac8c4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisMessage.java
@@ -0,0 +1,161 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.wsdl.SOAPHeaderMessage;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * This class represents the messages in WSDL. There can be message element in services.xml
+ * which are represented by this class.
+ */
+public class AxisMessage extends AxisDescription {
+
+    private ArrayList handlerChain;
+    private String name;
+    private ArrayList soapHeaders;
+
+    //to keep data in WSDL message reference and to keep the Java2WSDL data
+    // such as SchemaElementName , direction etc.
+    private QName elementQname;
+    private String direction;
+
+    // private PolicyInclude policyInclude;
+
+
+    public AxisMessage() {
+        soapHeaders = new ArrayList();
+        handlerChain = new ArrayList();
+    }
+
+    public ArrayList getMessageFlow() {
+        return handlerChain;
+    }
+
+    public boolean isParameterLocked(String parameterName) {
+
+        // checking the locked value of parent
+        boolean loscked = false;
+
+        if (getParent() != null) {
+            loscked = getParent().isParameterLocked(parameterName);
+        }
+
+        if (loscked) {
+            return true;
+        } else {
+            Parameter parameter = getParameter(parameterName);
+
+            return (parameter != null) && parameter.isLocked();
+        }
+    }
+
+    public void setMessageFlow(ArrayList operationFlow) {
+        this.handlerChain = operationFlow;
+    }
+
+    public String getDirection() {
+        return direction;
+    }
+
+    public void setDirection(String direction) {
+        this.direction = direction;
+    }
+
+    public QName getElementQName() {
+        return this.elementQname;
+    }
+
+    public void setElementQName(QName element) {
+        this.elementQname = element;
+    }
+
+    public Object getKey() {
+        return this.elementQname;
+    }
+
+    public XmlSchemaElement getSchemaElement() {
+        AxisService service = (AxisService) getParent().getParent();
+        ArrayList schemas = service.getSchema();
+        for (int i = 0; i < schemas.size(); i++) {
+            XmlSchema schema = (XmlSchema) schemas.get(i);
+            if (schema.getItems() != null) {
+                Iterator schemaItems = schema.getItems().getIterator();
+                while (schemaItems.hasNext()) {
+                    Object item = schemaItems.next();
+                    if (item instanceof XmlSchemaElement) {
+                        XmlSchemaElement xmlSchemaElement = (XmlSchemaElement) item;
+                        if (xmlSchemaElement.getQName().equals(this.elementQname)) {
+                            return xmlSchemaElement;
+                        }
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+    public String getName
+            () {
+        return name;
+    }
+
+    public void setName
+            (String
+                    name) {
+        this.name = name;
+    }
+
+    /**
+     * This will return a list of WSDLExtensibilityAttribute
+     */
+    public List getExtensibilityAttributes
+            () {
+        // TODO : Deepal implement this properly.
+
+        // the list should contain list of WSDLExtensibilityAttribute
+        return new ArrayList(0);
+    }
+
+    public void addSoapHeader(SOAPHeaderMessage soapHeaderMessage) {
+        soapHeaders.add(soapHeaderMessage);
+    }
+
+    public ArrayList getSoapHeaders
+            () {
+        return soapHeaders;
+    }
+
+    public void engageModule(AxisModule axisModule, AxisConfiguration axisConfig) throws AxisFault {
+        throw new UnsupportedOperationException("Sorry we do not support this");
+    }
+    
+    public boolean isEngaged(QName moduleName) {
+        throw new UnsupportedOperationException("axisMessage.isEngaged(qName) is not supported");
+        
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisModule.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisModule.java
new file mode 100644
index 0000000..d6b9b4f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisModule.java
@@ -0,0 +1,295 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.modules.Module;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.net.URL;
+
+/**
+ * <p>This holds the information about a Module. </p>
+ * <ol>
+ * <li>parameters<li>
+ * <li>handlers<li>
+ * <ol>
+ * <p>Handler are registered once they are available. They are available to all services if axis2.xml
+ * has a module ref="." or available to a single service if services.xml have module ref=".."</p>
+ */
+public class AxisModule implements FlowInclude, ParameterInclude {
+
+    /**
+     * Field flowInclude
+     */
+    private final FlowInclude flowInclude = new FlowIncludeImpl();
+
+    /**
+     * Field parameters
+     */
+    private final ParameterInclude parameters = new ParameterIncludeImpl();
+    private Module module;
+    private ClassLoader moduleClassLoader;
+    // To keep the File that module came from
+    private URL fileName;
+
+    /**
+     * Field name
+     */
+    private QName name;
+
+    // to store module operations , which are suppose to be added to a service if it is engaged to a service
+    private HashMap operations;
+    private AxisConfiguration parent;
+
+    /*
+    * to store policies which are valid for any service for which the module is engaged
+    */
+    private PolicyInclude policyInclude = null;
+
+    // Small description about the module
+    private String moduleDescription;
+
+    private String[] supportedPolicyNames;
+    
+    private QName[] localPolicyAssertions;
+
+    /**
+     * Constructor ModuleDescription.
+     */
+    public AxisModule() {
+        operations = new HashMap();
+    }
+
+    /**
+     * Constructor ModuleDescription.
+     *
+     * @param name
+     */
+    public AxisModule(QName name) {
+        this();
+        this.name = name;
+    }
+
+    public void addOperation(AxisOperation axisOperation) {
+        operations.put(axisOperation.getName(), axisOperation);
+    }
+
+    /**
+     * @param param
+     */
+    public void addParameter(Parameter param) throws AxisFault {
+        if (isParameterLocked(param.getName())) {
+            throw new AxisFault(Messages.getMessage("paramterlockedbyparent", param.getName()));
+        } else {
+            parameters.addParameter(param);
+        }
+    }
+
+    public void removeParameter(Parameter param) throws AxisFault {
+        if (isParameterLocked(param.getName())) {
+            throw new AxisFault(Messages.getMessage("paramterlockedbyparent", param.getName()));
+        } else {
+            parameters.removeParameter(param);
+        }
+    }
+
+    public void deserializeParameters(OMElement parameterElement) throws AxisFault {
+        this.parameters.deserializeParameters(parameterElement);
+    }
+
+    /**
+     * @return Returns Flow.
+     */
+    public Flow getFaultInFlow() {
+        return flowInclude.getFaultInFlow();
+    }
+
+    public Flow getFaultOutFlow() {
+        return flowInclude.getFaultOutFlow();
+    }
+
+    /**
+     * @return Returns Flow.
+     */
+    public Flow getInFlow() {
+        return flowInclude.getInFlow();
+    }
+
+    /**
+     * @return Returns Module.
+     */
+    public Module getModule() {
+        return module;
+    }
+
+    public ClassLoader getModuleClassLoader() {
+        return moduleClassLoader;
+    }
+
+    /**
+     * @return Returns QName.
+     */
+    public QName getName() {
+        return name;
+    }
+
+    public HashMap getOperations() {
+        return operations;
+    }
+
+    /**
+     * @return Returns Flow.
+     */
+    public Flow getOutFlow() {
+        return flowInclude.getOutFlow();
+    }
+
+    /**
+     * @param name
+     * @return Returns Parameter.
+     */
+    public Parameter getParameter(String name) {
+        return parameters.getParameter(name);
+    }
+
+    public ArrayList getParameters() {
+        return parameters.getParameters();
+    }
+
+    public AxisConfiguration getParent() {
+        return parent;
+    }
+
+    // to check whether a given parameter is locked
+    public boolean isParameterLocked(String parameterName) {
+
+        // checking the locked value of parent
+        boolean loscked = false;
+
+        if (this.parent != null) {
+            loscked = this.parent.isParameterLocked(parameterName);
+        }
+
+        if (loscked) {
+            return true;
+        } else {
+            Parameter parameter = getParameter(parameterName);
+
+            return (parameter != null) && parameter.isLocked();
+        }
+    }
+
+    /**
+     * @param faultFlow
+     */
+    public void setFaultInFlow(Flow faultFlow) {
+        flowInclude.setFaultInFlow(faultFlow);
+    }
+
+    /**
+     * @param faultFlow
+     */
+    public void setFaultOutFlow(Flow faultFlow) {
+        flowInclude.setFaultOutFlow(faultFlow);
+    }
+
+    /**
+     * @param inFlow
+     */
+    public void setInFlow(Flow inFlow) {
+        flowInclude.setInFlow(inFlow);
+    }
+
+    /**
+     * @param module
+     */
+    public void setModule(Module module) {
+        this.module = module;
+    }
+
+    public void setModuleClassLoader(ClassLoader moduleClassLoader) {
+        this.moduleClassLoader = moduleClassLoader;
+    }
+
+    /**
+     * @param name
+     */
+    public void setName(QName name) {
+        this.name = name;
+    }
+
+    /**
+     * @param outFlow
+     */
+    public void setOutFlow(Flow outFlow) {
+        flowInclude.setOutFlow(outFlow);
+    }
+
+    public void setParent(AxisConfiguration parent) {
+        this.parent = parent;
+    }
+
+    public void setPolicyInclude(PolicyInclude policyInclude) {
+        this.policyInclude = policyInclude;
+    }
+
+    public PolicyInclude getPolicyInclude() {
+        if(policyInclude == null) {
+            policyInclude = new PolicyInclude();
+        }
+        return policyInclude;
+    }
+
+    public String getModuleDescription() {
+        return moduleDescription;
+    }
+
+    public void setModuleDescription(String moduleDescription) {
+        this.moduleDescription = moduleDescription;
+    }
+
+    public String[] getSupportedPolicyNamespaces() {
+        return supportedPolicyNames;
+    }
+
+    public void setSupportedPolicyNamespaces(String[] supportedPolicyNamespaces) {
+        this.supportedPolicyNames = supportedPolicyNamespaces;
+    }
+    
+    public QName[] getLocalPolicyAssertions() {
+        return localPolicyAssertions;
+    }
+    
+    public void setLocalPolicyAssertions(QName[] localPolicyAssertions) {
+        this.localPolicyAssertions = localPolicyAssertions;
+    }
+
+    public URL getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(URL fileName) {
+        this.fileName = fileName;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisOperation.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisOperation.java
new file mode 100644
index 0000000..ef99462
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisOperation.java
@@ -0,0 +1,614 @@
+/*
+* Copyright 2004,2006 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.axis2.description;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisError;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.modules.Module;
+import org.apache.axis2.phaseresolver.PhaseResolver;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.util.*;
+
+public abstract class AxisOperation extends AxisDescription
+        implements WSDLConstants {
+    public static final String STYLE_RPC = "rpc";
+    public static final String STYLE_MSG = "msg";
+    public static final String STYLE_DOC = "doc";
+    private static final Log log = LogFactory.getLog(AxisOperation.class);
+    private int mep = WSDL20_2004Constants.MEP_CONSTANT_INVALID;
+
+    public static final String SOAP_ACTION = "soapaction";
+
+
+    // to store engaged modules
+    private ArrayList engagedModules = new ArrayList();
+
+    // to hide control operation , operation which added by RM like module
+    private boolean controlOperation = false;
+    private String style = STYLE_DOC;
+
+    // to store mepURL
+    private String mepURI;
+    private MessageReceiver messageReceiver;
+    private HashMap moduleConfigmap;
+
+    // To store deploy-time module refs
+    private ArrayList modulerefs;
+
+    private ArrayList faultMessages;
+
+    private QName name;
+
+    private ArrayList wsamappingList;
+    private String outputAction;
+    private HashMap faultActions = new HashMap();
+
+    private String soapAction;
+
+    public AxisOperation() {
+        mepURI = WSDL20_2004Constants.MEP_URI_IN_OUT;
+        modulerefs = new ArrayList();
+        moduleConfigmap = new HashMap();
+        faultMessages = new ArrayList();
+    }
+
+    public AxisOperation(QName name) {
+        this();
+        this.setName(name);
+    }
+
+    public abstract void addMessage(AxisMessage message, String label);
+
+    /**
+     * Adds a message context into an operation context. Depending on MEPs, this
+     * method has to be overridden.
+     * Depending on the MEP operation description know how to fill the message context map
+     * in operationContext.
+     * As an example, if the MEP is IN-OUT then depending on messagable operation description
+     * should know how to keep them in correct locations.
+     *
+     * @param msgContext <code>MessageContext</code>
+     * @param opContext  <code>OperationContext</code>
+     * @throws AxisFault <code>AxisFault</code>
+     */
+    public abstract void addMessageContext(MessageContext msgContext, OperationContext opContext)
+            throws AxisFault;
+
+    public abstract void addFaultMessageContext(MessageContext msgContext, OperationContext opContext)
+            throws AxisFault;
+
+    public void addModule(QName moduleName) {
+        modulerefs.add(moduleName);
+    }
+
+    /**
+     * Adds module configuration, if there is moduleConfig tag in operation.
+     *
+     * @param moduleConfiguration
+     */
+    public void addModuleConfig(ModuleConfiguration moduleConfiguration) {
+        moduleConfigmap.put(moduleConfiguration.getModuleName(), moduleConfiguration);
+    }
+
+    /**
+     * Engages a module. It is required to use this method.
+     *
+     * @param moduleref
+     * @throws AxisFault
+     */
+    public final void engageModule(AxisModule moduleref, AxisConfiguration axisConfig)
+            throws AxisFault {
+        ArrayList moduleOperations = engageModuleToOperation(moduleref, axisConfig);
+        AxisService service = (AxisService) getParent();
+        if (service != null) {
+            for (int i = 0; i < moduleOperations.size(); i++) {
+                AxisOperation axisOperation = (AxisOperation) moduleOperations.get(i);
+                service.addOperation(axisOperation);
+            }
+        }
+    }
+
+    private ArrayList engageModuleToOperation(AxisModule moduleref, AxisConfiguration axisConfig) throws AxisFault {
+        if (moduleref == null) {
+            return null;
+        }
+        Iterator module_itr = engagedModules.iterator();
+        boolean isEngagable;
+        QName moduleName = moduleref.getName();
+        while (module_itr.hasNext()) {
+            AxisModule module = (AxisModule) module_itr.next();
+            QName modu = module.getName();
+            isEngagable = org.apache.axis2.util.Utils.checkVersion(moduleName, modu);
+            if (!isEngagable) {
+                return new ArrayList();
+            }
+        }
+        PhaseResolver phaseResolver = new PhaseResolver(axisConfig);
+        phaseResolver.engageModuleToOperation(this, moduleref);
+        Module module = moduleref.getModule();
+        if (module != null) {
+            module.engageNotify(this);
+        }
+        engagedModules.add(moduleref);
+        return addModuleOperations(moduleref, axisConfig, (AxisService) getParent());
+    }
+
+    public void disengageModule(AxisModule module) {
+        if (module != null) {
+            if (getParent() != null) {
+                AxisService service = (AxisService) getParent();
+                AxisConfiguration axiConfiguration = service.getAxisConfiguration();
+                PhaseResolver phaseResolver = new PhaseResolver(axiConfiguration);
+                if (service.isEngaged(module.getName())) {
+                    phaseResolver.disengageModuleFromOperationChain(module, this);
+                } else if (axiConfiguration != null &&
+                        axiConfiguration.isEngaged(module.getName())) {
+                    phaseResolver.disengageModuleFromOperationChain(module, this);
+                } else {
+                    if (axiConfiguration != null) {
+                        phaseResolver.disengageModuleFromGlobalChains(module);
+                    }
+                    phaseResolver.disengageModuleFromOperationChain(module, this);
+                    //removing operations added at the time of module engagemnt
+                    HashMap moduleOperations = module.getOperations();
+                    if (moduleOperations != null) {
+                        Iterator moduleOperations_itr = moduleOperations.values().iterator();
+                        while (moduleOperations_itr.hasNext()) {
+                            AxisOperation operation = (AxisOperation) moduleOperations_itr.next();
+                            service.removeOperation(operation.getName());
+                        }
+                    }
+                }
+            }
+            engagedModules.remove(module);
+            log.debug("removed module from engaged modules list "
+                    + module.getName().getLocalPart());
+        }
+    }
+
+    /**
+     * To remove module from engage  module list
+     *
+     * @param module
+     */
+    public void removeFromEngagedModuleList(AxisModule module) {
+        engagedModules.remove(module);
+        log.debug("removed module from engaged modules list " + module.getName().getLocalPart());
+    }
+
+
+    /**
+     * Adds an operation to a service if a module is required to do so.
+     *
+     * @param module
+     */
+    public ArrayList addModuleOperations(AxisModule module, AxisConfiguration axisConfig,
+                                         AxisService service)
+            throws AxisFault {
+        HashMap map = module.getOperations();
+        Collection col = map.values();
+        PhaseResolver phaseResolver = new PhaseResolver(axisConfig);
+        //this array list is return , to avoid concurrent modifications , in the deployment engine
+        ArrayList ops = new ArrayList();
+        for (Iterator iterator = col.iterator(); iterator.hasNext();) {
+            AxisOperation axisOperation = copyOperation((AxisOperation) iterator.next());
+            axisOperation.setParent(service);
+            ArrayList wsamappings = axisOperation.getWsamappingList();
+            if (service.getOperation(axisOperation.getName()) == null) {
+                // this operation is a control operation.
+                axisOperation.setControlOperation(true);
+                Module moduleclazz = module.getModule();
+                if (moduleclazz != null) {
+                    moduleclazz.engageNotify(axisOperation);
+                }
+                phaseResolver.engageModuleToOperation(axisOperation, module);
+                ops.add(axisOperation);
+                if (wsamappings != null) {
+                    for (int j = 0; j < wsamappings.size(); j++) {
+                        String mapping = (String) wsamappings.get(j);
+
+                        service.mapActionToOperation(mapping, axisOperation);
+                    }
+                }
+            }
+        }
+        return ops;
+    }
+
+    /**
+     * Gets a copy from module operation.
+     *
+     * @param axisOperation
+     * @return Returns AxisOperation.
+     * @throws AxisFault
+     */
+    private AxisOperation copyOperation(AxisOperation axisOperation) throws AxisFault {
+        AxisOperation operation =
+                AxisOperationFactory.getOperationDescription(axisOperation.getMessageExchangePattern());
+
+        operation.setMessageReceiver(axisOperation.getMessageReceiver());
+        operation.setName(axisOperation.getName());
+
+        Iterator parameters = axisOperation.getParameters().iterator();
+
+        while (parameters.hasNext()) {
+            Parameter parameter = (Parameter) parameters.next();
+
+            operation.addParameter(parameter);
+        }
+
+        operation.setWsamappingList(axisOperation.getWsamappingList());
+        operation.setOutputAction(axisOperation.getOutputAction());
+        String[] faultActionNames = axisOperation.getFaultActionNames();
+        for (int i = 0; i < faultActionNames.length; i++) {
+            operation.addFaultAction(faultActionNames[i], axisOperation.getFaultAction(faultActionNames[i]));
+        }
+        operation.setRemainingPhasesInFlow(axisOperation.getRemainingPhasesInFlow());
+        operation.setPhasesInFaultFlow(axisOperation.getPhasesInFaultFlow());
+        operation.setPhasesOutFaultFlow(axisOperation.getPhasesOutFaultFlow());
+        operation.setPhasesOutFlow(axisOperation.getPhasesOutFlow());
+
+        return operation;
+    }
+
+
+    /**
+     * Returns as existing OperationContext related to this message if one exists.
+     *
+     * @param msgContext
+     * @return Returns OperationContext.
+     * @throws AxisFault
+     */
+    public OperationContext findForExistingOperationContext(MessageContext msgContext)
+            throws AxisFault {
+        OperationContext operationContext;
+
+        if ((operationContext = msgContext.getOperationContext()) != null) {
+            return operationContext;
+        }
+
+        // If this message is not related to another one, or it is but not one emitted
+        // from the same operation, don't further look for an operation context or fault.
+        if (null != msgContext.getRelatesTo()) {
+            // So this message may be part of an ongoing MEP
+            ConfigurationContext configContext = msgContext.getConfigurationContext();
+
+            operationContext =
+                    configContext.getOperationContext(msgContext.getRelatesTo().getValue());
+
+            if (null == operationContext && log.isDebugEnabled()) {
+                log.debug("Cannot correlate inbound message RelatesTo value [" + msgContext.getRelatesTo() + "] to in-progree MEP");
+            }
+        }
+
+        return operationContext;
+    }
+
+    /**
+     * Finds a MEPContext for an incoming message. An incoming message can be
+     * of two states.
+     * <p/>
+     * 1)This is a new incoming message of a given MEP. 2)This message is a
+     * part of an MEP which has already begun.
+     * <p/>
+     * The method is special cased for the two MEPs
+     * <p/>
+     * #IN_ONLY #IN_OUT
+     * <p/>
+     * for two reasons. First reason is the wide usage and the second being that
+     * the need for the MEPContext to be saved for further incoming messages.
+     * <p/>
+     * In the event that MEP of this operation is different from the two MEPs
+     * defaulted above the decision of creating a new or this message relates
+     * to a MEP which already in business is decided by looking at the WSA
+     * Relates TO of the incoming message.
+     *
+     * @param msgContext
+     */
+    public OperationContext findOperationContext(MessageContext msgContext,
+                                                 ServiceContext serviceContext)
+            throws AxisFault {
+        OperationContext operationContext;
+
+        if (null == msgContext.getRelatesTo()) {
+
+            // Its a new incoming message so get the factory to create a new
+            // one
+            operationContext = new OperationContext(this, serviceContext);
+        } else {
+
+            // So this message is part of an ongoing MEP
+            ConfigurationContext configContext = msgContext.getConfigurationContext();
+
+            operationContext =
+                    configContext.getOperationContext(msgContext.getRelatesTo().getValue());
+
+            if (null == operationContext) {
+                throw new AxisFault(Messages.getMessage("cannotCorrelateMsg",
+                        this.name.toString(), msgContext.getRelatesTo().getValue()));
+            }
+        }
+        return operationContext;
+    }
+
+    public void registerOperationContext(MessageContext msgContext,
+                                         OperationContext operationContext)
+            throws AxisFault {
+        msgContext.setAxisOperation(this);
+        msgContext.getConfigurationContext().registerOperationContext(msgContext.getMessageID(),
+                operationContext);
+        operationContext.addMessageContext(msgContext);
+        msgContext.setOperationContext(operationContext);
+        if (operationContext.isComplete()) {
+            operationContext.cleanup();
+        }
+    }
+
+    public void registerMessageContext(MessageContext msgContext,
+                                       OperationContext operationContext) throws AxisFault {
+        msgContext.setAxisOperation(this);
+        operationContext.addMessageContext(msgContext);
+        msgContext.setOperationContext(operationContext);
+        if (operationContext.isComplete()) {
+            operationContext.cleanup();
+        }
+    }
+
+    /**
+     * Maps the String URI of the Message exchange pattern to a integer.
+     * Further, in the first lookup, it will cache the looked
+     * up value so that the subsequent method calls are extremely efficient.
+     */
+    public int getAxisSpecifMEPConstant() {
+        if (this.mep != WSDL20_2004Constants.MEP_CONSTANT_INVALID) {
+            return this.mep;
+        }
+
+        int temp = WSDL20_2004Constants.MEP_CONSTANT_INVALID;
+
+        if (WSDL20_2004Constants.MEP_URI_IN_OUT.equals(mepURI) || WSDL20_2006Constants.MEP_URI_IN_OUT.equals(mepURI)) {
+            temp = WSDL20_2004Constants.MEP_CONSTANT_IN_OUT;
+        } else if (WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_IN_ONLY.equals(mepURI)) {
+            temp = WSDL20_2004Constants.MEP_CONSTANT_IN_ONLY;
+        } else if (WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI) || WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI)) {
+            temp = WSDL20_2004Constants.MEP_CONSTANT_IN_OPTIONAL_OUT;
+        } else if (WSDL20_2004Constants.MEP_URI_OUT_IN.equals(mepURI) || WSDL20_2006Constants.MEP_URI_OUT_IN.equals(mepURI)) {
+            temp = WSDL20_2004Constants.MEP_CONSTANT_OUT_IN;
+        } else if (WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_OUT_ONLY.equals(mepURI)) {
+            temp = WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY;
+        } else if (WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI) || WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI)) {
+            temp = WSDL20_2004Constants.MEP_CONSTANT_OUT_OPTIONAL_IN;
+        } else if (WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)) {
+            temp = WSDL20_2004Constants.MEP_CONSTANT_ROBUST_IN_ONLY;
+        } else if (WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI)) {
+            temp = WSDL20_2004Constants.MEP_CONSTANT_ROBUST_OUT_ONLY;
+        }
+
+        if (temp == WSDL20_2004Constants.MEP_CONSTANT_INVALID) {
+            throw new AxisError(Messages.getMessage("mepmappingerror"));
+        }
+
+        this.mep = temp;
+
+        return this.mep;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.axis2.description.AxisService#getEngadgedModules()
+     */
+
+    /**
+     * Method getEngagedModules.
+     */
+    public Collection getEngagedModules() {
+        return engagedModules;
+    }
+
+    public abstract AxisMessage getMessage(String label);
+
+    public String getMessageExchangePattern() {
+        return mepURI;
+    }
+
+    public MessageReceiver getMessageReceiver() {
+        return messageReceiver;
+    }
+
+    public ModuleConfiguration getModuleConfig(QName moduleName) {
+        return (ModuleConfiguration) moduleConfigmap.get(moduleName);
+    }
+
+    public ArrayList getModuleRefs() {
+        return modulerefs;
+    }
+
+    public QName getName() {
+        return name;
+    }
+
+    public abstract ArrayList getPhasesInFaultFlow();
+
+    public abstract ArrayList getPhasesOutFaultFlow();
+
+    public abstract ArrayList getPhasesOutFlow();
+
+    public abstract ArrayList getRemainingPhasesInFlow();
+
+    public String getStyle() {
+        return style;
+    }
+
+    public ArrayList getWsamappingList() {
+        return wsamappingList;
+    }
+
+    public boolean isControlOperation() {
+        return controlOperation;
+    }
+
+    // to check whether a given parameter is locked
+    public boolean isParameterLocked(String parameterName) {
+
+        // checking the locked value of parent
+        boolean locked = false;
+
+        if (getParent() != null) {
+            locked = getParent().isParameterLocked(parameterName);
+        }
+
+        if (locked) {
+            return true;
+        } else {
+            Parameter parameter = getParameter(parameterName);
+
+            return (parameter != null) && parameter.isLocked();
+        }
+    }
+
+    public void setControlOperation(boolean controlOperation) {
+        this.controlOperation = controlOperation;
+    }
+
+    public void setMessageExchangePattern(String mepURI) {
+        this.mepURI = mepURI;
+    }
+
+    public void setMessageReceiver(MessageReceiver messageReceiver) {
+        this.messageReceiver = messageReceiver;
+    }
+
+    public void setName(QName name) {
+        this.name = name;
+    }
+
+    public abstract void setPhasesInFaultFlow(ArrayList list);
+
+    public abstract void setPhasesOutFaultFlow(ArrayList list);
+
+    public abstract void setPhasesOutFlow(ArrayList list);
+
+    public abstract void setRemainingPhasesInFlow(ArrayList list);
+
+    public void setStyle(String style) {
+        if (!"".equals(style)) {
+            this.style = style;
+        }
+    }
+
+    public void setWsamappingList(ArrayList wsamappingList) {
+        this.wsamappingList = wsamappingList;
+    }
+
+    /**
+     * 
+     */
+    public OperationClient createClient(ServiceContext sc, Options options) {
+        throw new UnsupportedOperationException(Messages.getMessage("mepnotyetimplemented", mepURI));
+    }
+
+    public Object getKey() {
+        return this.name;
+    }
+
+    public ArrayList getFaultMessages() {
+        return faultMessages;
+    }
+
+    public void setFaultMessages(AxisMessage faultMessage) {
+        faultMessages.add(faultMessage);
+    }
+
+    public String getSoapAction() {
+        return soapAction;
+    }
+
+    public void setSoapAction(String soapAction) {
+        this.soapAction = soapAction;
+    }
+
+    public String getInputAction() {
+        String result = this.soapAction;
+        if (result == null || "".equals(result)) {
+            if (wsamappingList != null && !wsamappingList.isEmpty()) {
+                result = wsamappingList.get(0).toString();
+            }
+        }
+        return result;
+    }
+
+    public String getOutputAction() {
+        return outputAction;
+    }
+
+    public void setOutputAction(String act) {
+        outputAction = act;
+    }
+
+    public void addFaultAction(String faultName, String action) {
+        faultActions.put(faultName, action);
+    }
+
+    public void removeFaultAction(String faultName) {
+        faultActions.remove(faultName);
+    }
+
+    public String getFaultAction(String faultName) {
+        return (String) faultActions.get(faultName);
+    }
+
+    public String[] getFaultActionNames() {
+        Set keys = faultActions.keySet();
+        String[] faultActionNames = new String[keys.size()];
+        faultActionNames = (String[]) keys.toArray(faultActionNames);
+        return faultActionNames;
+    }
+
+    public String getFaultAction() {
+        String result = null;
+        Iterator iter = faultActions.values().iterator();
+        if (iter.hasNext()) {
+            result = (String) iter.next();
+        }
+        return result;
+    }
+
+    public boolean isEngaged(QName moduleName) {
+        Iterator engagedModuleItr = engagedModules.iterator();
+        while (engagedModuleItr.hasNext()) {
+            AxisModule axisModule = (AxisModule) engagedModuleItr.next();
+            if (axisModule.getName().getLocalPart().equals(moduleName.getLocalPart())) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisOperationFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisOperationFactory.java
new file mode 100644
index 0000000..52efbc0
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisOperationFactory.java
@@ -0,0 +1,103 @@
+package org.apache.axis2.description;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class AxisOperationFactory implements WSDLConstants {

+

+    public static AxisOperation getAxisOperation(int mepURI) throws AxisFault {

+        AxisOperation abOpdesc;

+

+        switch (mepURI) {

+            case WSDL20_2004Constants.MEP_CONSTANT_IN_ONLY : {

+                abOpdesc = new InOnlyAxisOperation();

+                abOpdesc.setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_IN_ONLY);

+                break;

+            }

+            case WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY : {

+                abOpdesc = new OutOnlyAxisOperation();

+                abOpdesc.setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_OUT_ONLY);

+                break;

+            }

+            case WSDL20_2004Constants.MEP_CONSTANT_IN_OUT : {

+                abOpdesc = new InOutAxisOperation();

+                abOpdesc.setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_IN_OUT);

+                break;

+            }

+            case WSDL20_2004Constants.MEP_CONSTANT_IN_OPTIONAL_OUT : {

+                abOpdesc = new InOutAxisOperation();

+                abOpdesc.setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT);

+                break;

+            }

+            case WSDL20_2004Constants.MEP_CONSTANT_ROBUST_IN_ONLY : {

+                abOpdesc = new InOutAxisOperation();

+                abOpdesc.setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY);

+                break;

+            }

+            case WSDL20_2004Constants.MEP_CONSTANT_OUT_IN : {

+                abOpdesc = new OutInAxisOperation();

+                abOpdesc.setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_OUT_IN);

+                break;

+            }

+            case WSDL20_2004Constants.MEP_CONSTANT_OUT_OPTIONAL_IN : {

+                abOpdesc = new OutInAxisOperation();

+                abOpdesc.setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN);

+                break;

+            }

+            case WSDL20_2004Constants.MEP_CONSTANT_ROBUST_OUT_ONLY : {

+                abOpdesc = new RobustOutOnlyAxisOperation();

+                abOpdesc.setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY);

+                break;

+            }

+            default : {

+                throw new AxisFault(Messages.getMessage("unSupportedMEP", "ID is " + mepURI));

+            }

+        }

+        return abOpdesc;

+    }

+

+    //FIXME add in the latest MEP URIs

+    public static AxisOperation getOperationDescription(String mepURI) throws AxisFault {

+        AxisOperation abOpdesc;

+        if (WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_IN_ONLY.equals(mepURI)) {

+            abOpdesc = new InOnlyAxisOperation();

+        } else if (WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_OUT_ONLY.equals(mepURI)) {

+            abOpdesc = new OutOnlyAxisOperation();

+        } else if (WSDL20_2004Constants.MEP_URI_IN_OUT.equals(mepURI) || WSDL20_2004Constants.MEP_URI_IN_OUT_03.equals(mepURI) || WSDL20_2006Constants.MEP_URI_IN_OUT.equals(mepURI)) {

+            abOpdesc = new InOutAxisOperation();

+        } else if (WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI) || WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI)) {

+            abOpdesc = new InOutAxisOperation();

+        } else if (WSDL20_2004Constants.MEP_URI_OUT_IN.equals(mepURI) || WSDL20_2006Constants.MEP_URI_OUT_IN.equals(mepURI)) {

+            abOpdesc = new OutInAxisOperation();

+        } else if (WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI) || WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI)) {

+            abOpdesc = new OutInAxisOperation();

+        } else if (WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI)) {

+            abOpdesc = new OutInAxisOperation();

+        } else if (WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)) {

+            abOpdesc = new InOnlyAxisOperation();

+        }else {

+            throw new AxisFault(Messages.getMessage("unSupportedMEP", "ID is " + mepURI));

+        }

+        abOpdesc.setMessageExchangePattern(mepURI);

+        return abOpdesc;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService.java
new file mode 100644
index 0000000..f372329
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService.java
@@ -0,0 +1,1809 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.deployment.util.PhasesInfo;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.axis2.engine.*;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.modules.Module;
+import org.apache.axis2.phaseresolver.PhaseResolver;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.transport.http.server.HttpUtils;
+import org.apache.axis2.util.Loader;
+import org.apache.axis2.util.XMLUtils;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaExternal;
+import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
+import org.apache.ws.commons.schema.utils.NamespaceMap;
+import org.apache.ws.commons.schema.utils.NamespacePrefixList;
+import org.apache.ws.java2wsdl.Java2WSDLConstants;
+import org.apache.ws.java2wsdl.SchemaGenerator;
+import org.apache.ws.java2wsdl.utils.TypeTable;
+import org.codehaus.jam.JMethod;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+import javax.wsdl.xml.WSDLWriter;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.SocketException;
+import java.net.URL;
+import java.util.*;
+
+/**
+ * Class AxisService
+ */
+public class AxisService extends AxisDescription {
+
+    private int nsCount = 0;
+    private static final Log log = LogFactory.getLog(AxisService.class);
+    private URL fileName;
+
+    private HashMap operationsAliasesMap = null;
+//    private HashMap operations = new HashMap();
+
+    // to store module ref at deploy time parsing
+    private ArrayList moduleRefs = null;
+
+    // to store engaged modules
+    private ArrayList engagedModules = null;
+    private String serviceDescription;
+
+    // to store the wsdl definition , which is build at the deployment time
+    // to keep the time that last update time of the service
+    private long lastupdate;
+    private HashMap moduleConfigmap;
+    private String name;
+    private ClassLoader serviceClassLoader;
+
+    //to keep the XMLScheam getting either from WSDL or java2wsdl
+    private ArrayList schemaList;
+    //private XmlSchema schema;
+
+    //wsdl is there for this service or not (in side META-INF)
+    private boolean wsdlFound = false;
+
+    //to store the scope of the service
+    private String scope;
+
+    //to store default message receivers
+    private HashMap messageReceivers;
+
+    // to set the handler chain available in phase info
+    private boolean useDefaultChains = true;
+
+    //to keep the status of the service , since service can stop at the run time
+    private boolean active = true;
+
+    private boolean elementFormDefault = true;
+
+    //to keep the service target name space
+    private String targetNamespace =
+            Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE;
+    private String targetNamespacePrefix =
+            Java2WSDLConstants.TARGETNAMESPACE_PREFIX;
+
+    // to store the target namespace for the schema
+    private String schematargetNamespace;// = Java2WSDLConstants.AXIS2_XSD;
+    private String schematargetNamespacePrefix =
+            Java2WSDLConstants.SCHEMA_NAMESPACE_PRFIX;
+
+    private boolean enableAllTransports = true;
+    private List exposedTransports = new ArrayList();
+
+    //To keep reference to ServiceLifeCycle instance , if the user has
+    // specified in services.xml
+    private ServiceLifeCycle serviceLifeCycle;
+
+
+    /**
+     * Keeps track whether the schema locations are adjusted
+     */
+    private boolean schemaLocationsAdjusted = false;
+
+    /**
+     * A table that keeps a mapping of unique xsd names (Strings)
+     * against the schema objects. This is populated in the first
+     * instance the schemas are asked for and then used to serve
+     * the subsequent requests
+     */
+    private Map schemaMappingTable = null;
+
+    /**
+     * counter variable for naming the schemas
+     */
+    private int count = 0;
+    /**
+     * A custom schema Name prefix. if set this will be used to
+     * modify the schema names
+     */
+    private String customSchemaNamePrefix = null;
+
+    /**
+     * A custom schema name suffix. will be attached to the
+     * schema file name when the files are uniquely named.
+     * A good place to add a file extension if needed
+     */
+    private String customSchemaNameSuffix = null;
+    /////////////////////////////////////////
+    // WSDL related stuff ////////////////////
+    ////////////////////////////////////////
+    private NamespaceMap nameSpacesMap;
+
+    private String soapNsUri;
+    private String endpoint;
+
+    // Flag representing whether WS-Addressing is required to use this service.
+    // Reflects the wsaw:UsingAddressing wsdl extension element
+    private String wsaddressingFlag = AddressingConstants.ADDRESSING_UNSPECIFIED;
+    private boolean clientSide = false;
+
+    //To keep a ref to ObjectSupplier instance
+    private ObjectSupplier objectSupplier;
+
+    // package to namespace mapping
+    private Map p2nMap;
+
+    private TypeTable typeTable;
+
+    // name of the  binding used : use in codegeneration
+    private String bindingName;
+    // name of the port type used : use in codegeneration
+    private String portTypeName;
+
+    public String getWSAddressingFlag() {
+        return wsaddressingFlag;
+    }
+
+    public void setWSAddressingFlag(String ar) {
+        wsaddressingFlag = ar;
+        if (wsaddressingFlag == null) {
+            wsaddressingFlag = AddressingConstants.ADDRESSING_UNSPECIFIED;
+        }
+    }
+
+    public boolean isSchemaLocationsAdjusted() {
+        return schemaLocationsAdjusted;
+    }
+
+    public void setSchemaLocationsAdjusted(boolean schemaLocationsAdjusted) {
+        this.schemaLocationsAdjusted = schemaLocationsAdjusted;
+    }
+
+    public Map getSchemaMappingTable() {
+        return schemaMappingTable;
+    }
+
+    public void setSchemaMappingTable(Map schemaMappingTable) {
+        this.schemaMappingTable = schemaMappingTable;
+    }
+
+    public String getCustomSchemaNamePrefix() {
+        return customSchemaNamePrefix;
+    }
+
+    public void setCustomSchemaNamePrefix(String customSchemaNamePrefix) {
+        this.customSchemaNamePrefix = customSchemaNamePrefix;
+    }
+
+    public String getCustomSchemaNameSuffix() {
+        return customSchemaNameSuffix;
+    }
+
+    public void setCustomSchemaNameSuffix(String customSchemaNameSuffix) {
+        this.customSchemaNameSuffix = customSchemaNameSuffix;
+    }
+
+    /**
+     * Constructor AxisService.
+     */
+    public AxisService() {
+        super();
+        this.operationsAliasesMap = new HashMap();
+        moduleConfigmap = new HashMap();
+        //by default service scope is for the request
+        scope = Constants.SCOPE_REQUEST;
+        messageReceivers = new HashMap();
+        moduleRefs = new ArrayList();
+        engagedModules = new ArrayList();
+        schemaList = new ArrayList();
+        serviceClassLoader = Thread.currentThread().getContextClassLoader();
+        objectSupplier = new DefaultObjectSupplier();
+    }
+
+    public String getPortTypeName() {
+        return portTypeName;
+    }
+
+    public void setPortTypeName(String portTypeName) {
+        this.portTypeName = portTypeName;
+    }
+
+    public String getBindingName() {
+        return bindingName;
+    }
+
+    public void setBindingName(String bindingName) {
+        this.bindingName = bindingName;
+    }
+
+    /**
+     * get the SOAPVersion
+     */
+    public String getSoapNsUri() {
+        return soapNsUri;
+    }
+
+    public void setSoapNsUri(String soapNsUri) {
+        this.soapNsUri = soapNsUri;
+    }
+
+    /**
+     * get the endpoint
+     */
+    public String getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    /**
+     * Constructor AxisService.
+     */
+    public AxisService(String name) {
+        this();
+        this.name = name;
+    }
+
+    public void addMessageReceiver(String mepURL, MessageReceiver messageReceiver) {
+        messageReceivers.put(mepURL, messageReceiver);
+    }
+
+    public MessageReceiver getMessageReceiver(String mepURL) {
+        return (MessageReceiver) messageReceivers.get(mepURL);
+    }
+
+    /**
+     * Adds module configuration , if there is moduleConfig tag in service.
+     *
+     * @param moduleConfiguration
+     */
+    public void addModuleConfig(ModuleConfiguration moduleConfiguration) {
+        moduleConfigmap.put(moduleConfiguration.getModuleName(), moduleConfiguration);
+    }
+
+    /**
+     * Adds an operation to a service if a module is required to do so.
+     *
+     * @param module
+     */
+    public void addModuleOperations(AxisModule module, AxisConfiguration axisConfig)
+            throws AxisFault {
+        HashMap map = module.getOperations();
+        Collection col = map.values();
+        for (Iterator iterator = col.iterator(); iterator.hasNext();) {
+            AxisOperation axisOperation = copyOperation((AxisOperation) iterator.next());
+            if (this.getOperation(axisOperation.getName()) == null) {
+                ArrayList wsamappings = axisOperation.getWsamappingList();
+                if (wsamappings != null) {
+                    for (int j = 0, size = wsamappings.size(); j < size; j++) {
+                        String mapping = (String) wsamappings.get(j);
+                        mapActionToOperation(mapping, axisOperation);
+                    }
+                }
+                // this operation is a control operation.
+                axisOperation.setControlOperation(true);
+                this.addOperation(axisOperation);
+            }
+        }
+    }
+
+    public void addModuleref(QName moduleref) {
+        moduleRefs.add(moduleref);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.axis2.description.AxisService#addOperation(org.apache.axis2.description.AxisOperation)
+     */
+
+    /**
+     * Method addOperation.
+     *
+     * @param axisOperation
+     */
+    public void addOperation(AxisOperation axisOperation) {
+        axisOperation.setParent(this);
+
+        Iterator modules = getEngagedModules().iterator();
+
+        while (modules.hasNext()) {
+            AxisModule module = (AxisModule) modules.next();
+            AxisServiceGroup parent = (AxisServiceGroup) getParent();
+            AxisConfiguration axisConfig = null;
+
+            if (parent != null) {
+                axisConfig = (AxisConfiguration) parent.getParent();
+            }
+
+            try {
+                Module moduleImpl = module.getModule();
+                if (moduleImpl != null) {
+                    // notifying module for service engagement
+                    moduleImpl.engageNotify(axisOperation);
+                }
+                axisOperation.engageModule(module, axisConfig);
+            } catch (AxisFault axisFault) {
+                log.info(Messages.getMessage(
+                        "modulealredyengagetoservice", module.getName().getLocalPart()));
+            }
+        }
+        if (axisOperation.getMessageReceiver() == null) {
+            axisOperation.setMessageReceiver(
+                    loadDefaultMessageReceiver(axisOperation.getMessageExchangePattern(), this));
+        }
+        if (axisOperation.getSoapAction() == null) {
+            axisOperation.setSoapAction("urn:" + axisOperation.getName().getLocalPart());
+        }
+        addChild(axisOperation);
+
+        String operationName = axisOperation.getName().getLocalPart();
+
+        /*
+           Some times name of the operation can be different from the name of the first child of the SOAPBody.
+           This will put the correct mapping associating that name with  the operation. This will be useful especially for
+           the SOAPBodyBasedDispatcher
+         */
+
+        Iterator axisMessageIter = axisOperation.getChildren();
+
+        while (axisMessageIter.hasNext()) {
+            AxisMessage axisMessage = (AxisMessage) axisMessageIter.next();
+            String messageName = axisMessage.getName();
+            if (messageName != null && !messageName.equals(operationName)) {
+                mapActionToOperation(messageName, axisOperation);
+            }
+        }
+
+        mapActionToOperation(operationName, axisOperation);
+
+        String action = axisOperation.getSoapAction();
+        if (action.length() > 0) {
+            mapActionToOperation(action, axisOperation);
+        }
+
+        ArrayList wsamappings = axisOperation.getWsamappingList();
+        if (wsamappings != null) {
+            for (int j = 0, size = wsamappings.size(); j < size; j++) {
+                String mapping = (String) wsamappings.get(j);
+                mapActionToOperation(mapping, axisOperation);
+            }
+        }
+
+        if (axisOperation.getMessageReceiver() == null) {
+            axisOperation.setMessageReceiver(
+                    loadDefaultMessageReceiver(
+                            axisOperation.getMessageExchangePattern(), this));
+        }
+    }
+
+
+    private MessageReceiver loadDefaultMessageReceiver(String mepURL, AxisService service) {
+        MessageReceiver messageReceiver;
+        if (mepURL == null) {
+            mepURL = WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT;
+        }
+        if (service != null) {
+            messageReceiver = service.getMessageReceiver(mepURL);
+            if (messageReceiver != null) {
+                return messageReceiver;
+            }
+        }
+        if (getParent() != null && getParent().getParent() != null) {
+            return ((AxisConfiguration) getParent().getParent()).getMessageReceiver(mepURL);
+        }
+        return null;
+    }
+
+
+    /**
+     * Gets a copy from module operation.
+     *
+     * @param axisOperation
+     * @return Returns AxisOperation.
+     * @throws AxisFault
+     */
+    private AxisOperation copyOperation(AxisOperation axisOperation) throws AxisFault {
+        AxisOperation operation =
+                AxisOperationFactory.getOperationDescription(axisOperation.getMessageExchangePattern());
+
+        operation.setMessageReceiver(axisOperation.getMessageReceiver());
+        operation.setName(axisOperation.getName());
+
+        Iterator parameters = axisOperation.getParameters().iterator();
+
+        while (parameters.hasNext()) {
+            Parameter parameter = (Parameter) parameters.next();
+
+            operation.addParameter(parameter);
+        }
+
+        operation.setWsamappingList(axisOperation.getWsamappingList());
+        operation.setRemainingPhasesInFlow(axisOperation.getRemainingPhasesInFlow());
+        operation.setPhasesInFaultFlow(axisOperation.getPhasesInFaultFlow());
+        operation.setPhasesOutFaultFlow(axisOperation.getPhasesOutFaultFlow());
+        operation.setPhasesOutFlow(axisOperation.getPhasesOutFlow());
+
+        operation.setOutputAction(axisOperation.getOutputAction());
+        String[] faultActionNames = axisOperation.getFaultActionNames();
+        for (int i = 0; i < faultActionNames.length; i++) {
+            operation.addFaultAction(faultActionNames[i], axisOperation.getFaultAction(faultActionNames[i]));
+        }
+
+        return operation;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.axis2.description.AxisService#addToengagedModules(javax.xml.namespace.QName)
+     */
+
+    /**
+     * Engages a module. It is required to use this method.
+     *
+     * @param axisModule
+     */
+    public void engageModule(AxisModule axisModule, AxisConfiguration axisConfig)
+            throws AxisFault {
+        if (axisModule == null) {
+            throw new AxisFault(Messages.getMessage("modulenf"));
+        }
+        Iterator itr_engageModules = engagedModules.iterator();
+        boolean isEngagable;
+        QName moduleName = axisModule.getName();
+        while (itr_engageModules.hasNext()) {
+            AxisModule module = (AxisModule) itr_engageModules.next();
+            QName modu = module.getName();
+            isEngagable = org.apache.axis2.util.Utils.checkVersion(moduleName, modu);
+            if (!isEngagable) {
+                return;
+            }
+        }
+
+        Module moduleImpl = axisModule.getModule();
+        if (moduleImpl != null) {
+            // notyfying module for service engagement
+            moduleImpl.engageNotify(this);
+        }
+        // adding module operations
+        addModuleOperations(axisModule, axisConfig);
+
+        Iterator operations = getOperations();
+
+        while (operations.hasNext()) {
+            AxisOperation axisOperation = (AxisOperation) operations.next();
+            if (moduleImpl != null) {
+                // notyfying module for service engagement
+                moduleImpl.engageNotify(axisOperation);
+            }
+            axisOperation.engageModule(axisModule, axisConfig);
+        }
+        engagedModules.add(axisModule);
+    }
+
+    /**
+     * Maps an action (aka WSA action) to the given operation. This is used by
+     * addressing based dispatching to figure out which operation it is that a
+     * given message is for.
+     *
+     * @param action        the action key
+     * @param axisOperation the operation to map to
+     */
+    public void mapActionToOperation(String action, AxisOperation axisOperation) {
+        operationsAliasesMap.put(action, axisOperation);
+    }
+
+
+    public void printSchema(OutputStream out) throws AxisFault {
+        for (int i = 0; i < schemaList.size(); i++) {
+            XmlSchema schema = addNameSpaces(i);
+            schema.write(out);
+        }
+    }
+
+    public XmlSchema getSchema(int index) {
+        return addNameSpaces(index);
+    }
+
+    private XmlSchema addNameSpaces(int i) {
+        XmlSchema schema = (XmlSchema) schemaList.get(i);
+        NamespaceMap map = (NamespaceMap) nameSpacesMap.clone();
+        NamespacePrefixList namespaceContext = schema.getNamespaceContext();
+        String prefixes[] = namespaceContext.getDeclaredPrefixes();
+        for (int j = 0; j < prefixes.length; j++) {
+            String prefix = prefixes[j];
+            map.add(prefix, namespaceContext.getNamespaceURI(prefix));
+        }
+        schema.setNamespaceContext(map);
+        return schema;
+    }
+
+    public AxisConfiguration getAxisConfiguration() {
+        if (getParent() != null) {
+            return (AxisConfiguration) getParent().getParent();
+        }
+        return null;
+    }
+
+    /**
+     * @param out
+     * @param requestIP
+     * @param servicePath
+     * @throws AxisFault
+     */
+    public void printWSDL(OutputStream out, String requestIP, String servicePath) throws AxisFault {
+        if (isUseUserWSDL()) {
+            Parameter wsld4jdefinition = getParameter(WSDLConstants.WSDL_4_J_DEFINITION);
+            if (wsld4jdefinition != null) {
+                try {
+                    Definition definition = (Definition) wsld4jdefinition.getValue();
+                    setPortAddress(definition);
+                    WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter();
+                    writer.writeWSDL(definition, out);
+                } catch (WSDLException e) {
+                    throw new AxisFault(e);
+                }
+            } else {
+                printWSDLError(out);
+            }
+        } else {
+            String[] eprArray = getEPRs(requestIP);
+            getWSDL(out, eprArray, servicePath);
+        }
+    }
+
+    public String[] getEPRs() throws AxisFault {
+        String requestIP;
+        try {
+            requestIP = HttpUtils.getIpAddress();
+        } catch (SocketException e) {
+            throw new AxisFault("Cannot get local IP address", e);
+        }
+        return getEPRs(requestIP);
+    }
+
+    private String[] getEPRs(String requestIP) throws AxisFault {
+        AxisConfiguration axisConfig = getAxisConfiguration();
+        ArrayList eprList = new ArrayList();
+        if (enableAllTransports) {
+            Iterator transports = axisConfig.getTransportsIn().values().iterator();
+            while (transports.hasNext()) {
+                TransportInDescription transportIn = (TransportInDescription) transports.next();
+                TransportListener listener = transportIn.getReceiver();
+                if (listener != null) {
+                    try {
+                        EndpointReference[] eprsForService = listener.getEPRsForService(this.name, requestIP);
+                        if (eprsForService != null) {
+                            for (int i = 0; i < eprsForService.length; i++) {
+                                EndpointReference endpointReference = eprsForService[i];
+                                String address = endpointReference.getAddress();
+                                if (address != null) {
+                                    eprList.add(address);
+                                }
+                            }
+                        }
+                    } catch (AxisFault axisFault) {
+                        log.warn(axisFault.getMessage());
+                    }
+                }
+            }
+        } else {
+            List trs = this.exposedTransports;
+            for (int i = 0; i < trs.size(); i++) {
+                String trsName = (String) trs.get(i);
+                TransportInDescription transportIn = axisConfig.getTransportIn(
+                        new QName(trsName));
+                if (transportIn != null) {
+                    TransportListener listener = transportIn.getReceiver();
+                    if (listener != null) {
+                        try {
+                            EndpointReference[] eprsForService = listener.getEPRsForService(this.name, requestIP);
+                            if (eprsForService != null) {
+                                for (int j = 0; j < eprsForService.length; j++) {
+                                    EndpointReference endpointReference = eprsForService[j];
+                                    String address = endpointReference.getAddress();
+                                    if (address != null) {
+                                        eprList.add(address);
+                                    }
+                                }
+                            }
+                        } catch (AxisFault axisFault) {
+                            log.warn(axisFault.getMessage());
+                        }
+                    }
+                }
+            }
+        }
+        return (String[]) eprList.toArray(new String[eprList.size()]);
+    }
+
+    /**
+     * @param out
+     * @param requestIP
+     * @throws AxisFault
+     * @deprecated try to use the method which takes three arguments
+     */
+    public void printWSDL(OutputStream out, String requestIP) throws AxisFault {
+        printWSDL(out, requestIP, "services");
+    }
+
+    /**
+     * Print the WSDL with a default URL. This will be called only during codegen time.
+     *
+     * @param out
+     * @throws AxisFault
+     */
+    public void printWSDL(OutputStream out) throws AxisFault {
+        if (isUseUserWSDL()) {
+            Parameter wsld4jdefinition = getParameter(WSDLConstants.WSDL_4_J_DEFINITION);
+            if (wsld4jdefinition != null) {
+                try {
+                    Definition definition = (Definition) wsld4jdefinition.getValue();
+                    setPortAddress(definition);
+                    WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter();
+                    writer.writeWSDL(definition, out);
+                } catch (WSDLException e) {
+                    throw new AxisFault(e);
+                }
+            } else {
+                printWSDLError(out);
+            }
+        } else {
+            setWsdlFound(true);
+            //pick the endpoint and take it as the epr for the WSDL
+            getWSDL(out, new String[]{this.endpoint}, "services");
+        }
+    }
+
+    private void setPortAddress(Definition definition) throws AxisFault {
+        Iterator serviceItr = definition.getServices().values().iterator();
+        while (serviceItr.hasNext()) {
+            Service serviceElement = (Service) serviceItr.next();
+            Iterator portItr = serviceElement.getPorts().values().iterator();
+            while (portItr.hasNext()) {
+                Port port = (Port) portItr.next();
+                List list = port.getExtensibilityElements();
+                for (int i = 0; i < list.size(); i++) {
+                    Object extensibilityEle = list.get(i);
+                    if (extensibilityEle instanceof SOAPAddress) {
+                        ((SOAPAddress) extensibilityEle).setLocationURI(getEPRs()[0]);
+                    }
+                }
+            }
+        }
+    }
+
+    private void getWSDL(OutputStream out, String[] serviceURL, String servicePath) throws AxisFault {
+        if (this.wsdlFound) {
+            AxisService2OM axisService2WOM = new AxisService2OM(this,
+                    serviceURL, "document", "literal", servicePath);
+            try {
+                OMElement wsdlElement = axisService2WOM.generateOM();
+                wsdlElement.serialize(out);
+                out.flush();
+                out.close();
+            } catch (Exception e) {
+                throw new AxisFault(e);
+            }
+        } else {
+            printWSDLError(out);
+        }
+
+    }
+
+    private void printWSDLError(OutputStream out) throws AxisFault {
+        try {
+            String wsdlntfound = "<error>" +
+                    "<description>Unable to generate WSDL for this service</description>" +
+                    "<reason>If you wish Axis2 to automatically generate the WSDL, then please use one of the RPC message " +
+                    "receivers for the service(s)/operation(s) in services.xml. If you have added a custom WSDL in the " +
+                    "META-INF directory, then please make sure that the name of the service in services.xml " +
+                    "(/serviceGroup/service/@name) is the same as in the " +
+                    "custom wsdl's service name (/wsdl:definitions/wsdl:service/@name). </reason>" +
+                    "</error>";
+            out.write(wsdlntfound.getBytes());
+            out.flush();
+            out.close();
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    //WSDL 2.0
+    public void printWSDL2(OutputStream out) throws AxisFault {
+        if (isUseUserWSDL()) {
+            Parameter wsld4jdefinition = getParameter(WSDLConstants.WSDL_4_J_DEFINITION);
+            if (wsld4jdefinition != null) {
+                try {
+                    String error = "<error>" +
+                            "<description>Unable to showtwo will WSDL for this service</description>" +
+                            "<reason>WSDL 2.0 document is to be shown. But we do not support WSDL 2.0" +
+                            "serialization yet.</reason>" +
+                            "</error>";
+                    out.write(error.getBytes());
+                    out.flush();
+                    out.close();
+                } catch (IOException e) {
+                    throw new AxisFault(e);
+                }
+            } else {
+                printWSDLError(out);
+            }
+        } else {
+            setWsdlFound(true);
+            //pick the endpoint and take it as the epr for the WSDL
+            getWSDL2(out, new String[]{this.endpoint});
+        }
+    }
+
+    public void printWSDL2(OutputStream out,
+                           String requestIP,
+                           String servicePath) throws AxisFault {
+        getWSDL2(out, getEPRs());
+    }
+
+    private void getWSDL2(OutputStream out, String[] serviceURL) throws AxisFault {
+        if (this.wsdlFound) {
+            AxisService2WSDL2 axisService2WSDL2 = new AxisService2WSDL2(this, serviceURL);
+            try {
+                OMElement wsdlElement = axisService2WSDL2.generateOM();
+                wsdlElement.serialize(out);
+                out.flush();
+                out.close();
+            } catch (Exception e) {
+                throw new AxisFault(e);
+            }
+        } else {
+            printWSDLError(out);
+        }
+
+    }
+
+    /**
+     * Gets the description about the service which is specified in services.xml.
+     *
+     * @return Returns String.
+     */
+    public String getServiceDescription() {
+        return serviceDescription;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.axis2.description.AxisService#getClassLoader()
+     */
+
+    /**
+     * Method getClassLoader.
+     *
+     * @return Returns ClassLoader.
+     */
+    public ClassLoader getClassLoader() {
+        return this.serviceClassLoader;
+    }
+
+    /**
+     * Gets the control operation which are added by module like RM.
+     */
+    public ArrayList getControlOperations() {
+        Iterator op_itr = getOperations();
+        ArrayList operationList = new ArrayList();
+
+        while (op_itr.hasNext()) {
+            AxisOperation operation = (AxisOperation) op_itr.next();
+
+            if (operation.isControlOperation()) {
+                operationList.add(operation);
+            }
+        }
+
+        return operationList;
+    }
+
+    /**
+     * Method getEngagedModules.
+     *
+     * @return Returns Collection.
+     */
+    public Collection getEngagedModules() {
+        return engagedModules;
+    }
+
+    public URL getFileName() {
+        return fileName;
+    }
+
+    public long getLastupdate() {
+        return lastupdate;
+    }
+
+    public ModuleConfiguration getModuleConfig(QName moduleName) {
+        return (ModuleConfiguration) moduleConfigmap.get(moduleName);
+    }
+
+    public ArrayList getModules() {
+        return moduleRefs;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Method getOperation.
+     *
+     * @param operationName
+     * @return Returns AxisOperation.
+     */
+    public AxisOperation getOperation(QName operationName) {
+//        AxisOperation axisOperation = (AxisOperation) operations.get(operationName);
+        AxisOperation axisOperation = (AxisOperation) getChild(operationName);
+
+        if (axisOperation == null) {
+            axisOperation = (AxisOperation) operationsAliasesMap.get(
+                    operationName.getLocalPart());
+        }
+
+        return axisOperation;
+    }
+
+
+    /**
+     * Returns the AxisOperation which has been mapped to the given action.
+     *
+     * @param action the action key
+     * @return Returns the corresponding AxisOperation or null if it isn't found.
+     */
+    public AxisOperation getOperationByAction(String action) {
+        return (AxisOperation) operationsAliasesMap.get(action);
+    }
+
+    /**
+     * Returns the operation given a SOAP Action. This
+     * method should be called if only one Endpoint is defined for
+     * this Service. If more than one Endpoint exists, one of them will be
+     * picked. If more than one Operation is found with the given SOAP Action;
+     * null will be returned. If no particular Operation is found with the given
+     * SOAP Action; null will be returned.
+     *
+     * @param soapAction SOAP Action defined for the particular Operation
+     * @return Returns an AxisOperation if a unique Operation can be found with the given
+     *         SOAP Action otherwise will return null.
+     */
+    public AxisOperation getOperationBySOAPAction(String soapAction) {
+        if ((soapAction == null) || soapAction.length() == 0) {
+            return null;
+        }
+
+//        AxisOperation operation = (AxisOperation) operations.get(new QName(soapAction));
+        AxisOperation operation = (AxisOperation) getChild(new QName(soapAction));
+
+        if (operation != null) {
+            return operation;
+        }
+
+        operation = (AxisOperation) operationsAliasesMap.get(soapAction);
+
+        return operation;
+    }
+
+    /**
+     * Method getOperations.
+     *
+     * @return Returns HashMap
+     */
+    public Iterator getOperations() {
+        return getChildren();
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.axis2.description.ParameterInclude#getParameter(java.lang.String)
+     */
+
+    /**
+     * Gets only the published operations.
+     */
+    public ArrayList getPublishedOperations() {
+        Iterator op_itr = getOperations();
+        ArrayList operationList = new ArrayList();
+
+        while (op_itr.hasNext()) {
+            AxisOperation operation = (AxisOperation) op_itr.next();
+
+            if (!operation.isControlOperation()) {
+                operationList.add(operation);
+            }
+        }
+
+        return operationList;
+    }
+
+    /**
+     * Sets the description about the service which is specified in services.xml
+     *
+     * @param serviceDescription
+     */
+    public void setServiceDescription(String serviceDescription) {
+        this.serviceDescription = serviceDescription;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.axis2.description.AxisService#setClassLoader(java.lang.ClassLoader)
+     */
+
+    /**
+     * Method setClassLoader.
+     *
+     * @param classLoader
+     */
+    public void setClassLoader(ClassLoader classLoader) {
+        this.serviceClassLoader = classLoader;
+    }
+
+    public void setFileName(URL fileName) {
+        this.fileName = fileName;
+    }
+
+    /**
+     * Sets the current time as last update time of the service.
+     */
+    public void setLastupdate() {
+        lastupdate = new Date().getTime();
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public ArrayList getSchema() {
+        return schemaList;
+    }
+
+    public void addSchema(XmlSchema schema) {
+        if (schema != null) {
+            schemaList.add(schema);
+            if (schema.getTargetNamespace() != null) {
+                addSchemaNameSpace(schema);
+            }
+        }
+    }
+
+    public void addSchema(Collection schemas) {
+        Iterator iterator = schemas.iterator();
+        while (iterator.hasNext()) {
+            XmlSchema schema = (XmlSchema) iterator.next();
+            schemaList.add(schema);
+            addSchemaNameSpace(schema);
+        }
+    }
+
+    public boolean isWsdlFound() {
+        return wsdlFound;
+    }
+
+    public void setWsdlFound(boolean wsdlFound) {
+        this.wsdlFound = wsdlFound;
+    }
+
+    public String getScope() {
+        return scope;
+    }
+
+    /**
+     * @param scope - Available scopes :
+     *              Constants.SCOPE_APPLICATION
+     *              Constants.SCOPE_TRANSPORT_SESSION
+     *              Constants.SCOPE_SOAP_SESSION
+     *              Constants.SCOPE_REQUEST.equals
+     */
+    public void setScope(String scope) {
+        if (Constants.SCOPE_APPLICATION.equals(scope) ||
+                Constants.SCOPE_TRANSPORT_SESSION.equals(scope) ||
+                Constants.SCOPE_SOAP_SESSION.equals(scope) ||
+                Constants.SCOPE_REQUEST.equals(scope)) {
+            this.scope = scope;
+        }
+    }
+
+    public boolean isUseDefaultChains() {
+        return useDefaultChains;
+    }
+
+    public void setUseDefaultChains(boolean useDefaultChains) {
+        this.useDefaultChains = useDefaultChains;
+    }
+
+    public Object getKey() {
+        return this.name;
+    }
+
+    public boolean isActive() {
+        return active;
+    }
+
+    public void setActive(boolean active) {
+        this.active = active;
+    }
+
+    public String getSchematargetNamespace() {
+        return schematargetNamespace;
+    }
+
+    public void setSchematargetNamespace(String schematargetNamespace) {
+        this.schematargetNamespace = schematargetNamespace;
+    }
+
+    public String getSchematargetNamespacePrefix() {
+        return schematargetNamespacePrefix;
+    }
+
+    public void setSchematargetNamespacePrefix(String schematargetNamespacePrefix) {
+        this.schematargetNamespacePrefix = schematargetNamespacePrefix;
+    }
+
+    public String getTargetNamespace() {
+        return targetNamespace;
+    }
+
+    public void setTargetNamespace(String targetNamespace) {
+        this.targetNamespace = targetNamespace;
+    }
+
+    public String getTargetNamespacePrefix() {
+        return targetNamespacePrefix;
+    }
+
+    public void setTargetNamespacePrefix(String targetNamespacePrefix) {
+        this.targetNamespacePrefix = targetNamespacePrefix;
+    }
+
+    public XmlSchemaElement getSchemaElement(QName elementQName) {
+        XmlSchemaElement element;
+        for (int i = 0; i < schemaList.size(); i++) {
+            XmlSchema schema = (XmlSchema) schemaList.get(i);
+            if (schema != null) {
+                element = schema.getElementByName(elementQName);
+                if (element != null) {
+                    return element;
+                }
+            }
+        }
+        return null;
+    }
+
+    public boolean isEnableAllTransports() {
+        return enableAllTransports;
+    }
+
+    /**
+     * To eneble service to be expose in all the transport
+     * @param enableAllTransports
+     */
+    public void setEnableAllTransports(boolean enableAllTransports) {
+        this.enableAllTransports = enableAllTransports;
+    }
+
+    public List getExposedTransports() {
+        return this.exposedTransports;
+    }
+
+    public void setExposedTransports(List transports) {
+        enableAllTransports = false;
+        this.exposedTransports = transports;
+    }
+
+    public void addExposedTransport(String transport) {
+        enableAllTransports = false;
+        if (!this.exposedTransports.contains(transport)) {
+            this.exposedTransports.add(transport);
+        }
+    }
+
+    public void removeExposedTransport(String transport) {
+        enableAllTransports = false;
+        this.exposedTransports.remove(transport);
+    }
+
+    public boolean isExposedTransport(String transport) {
+        return exposedTransports.contains(transport);
+    }
+
+    public void disengageModule(AxisModule module) {
+        AxisConfiguration axisConfig = getAxisConfiguration();
+        if (axisConfig != null) {
+            PhaseResolver phaseResolver = new PhaseResolver(axisConfig);
+            if (axisConfig.isEngaged(module.getName())) {
+                removeModuleOperations(module);
+                Iterator operations = getChildren();
+                while (operations.hasNext()) {
+                    AxisOperation axisOperation = (AxisOperation) operations.next();
+                    phaseResolver.disengageModuleFromOperationChain(module, axisOperation);
+                    axisOperation.removeFromEngagedModuleList(module);
+                }
+            } else {
+                if (isEngaged(module.getName())) {
+                    phaseResolver.disengageModuleFromGlobalChains(module);
+                    removeModuleOperations(module);
+                    Iterator operations = getChildren();
+                    while (operations.hasNext()) {
+                        AxisOperation axisOperation = (AxisOperation) operations.next();
+                        phaseResolver.disengageModuleFromOperationChain(module, axisOperation);
+                        axisOperation.removeFromEngagedModuleList(module);
+                    }
+                }
+            }
+        }
+        engagedModules.remove(module);
+    }
+
+    /**
+     * To remove module operations added at the time of engagement
+     */
+    private void removeModuleOperations(AxisModule module) {
+        HashMap moduleOerations = module.getOperations();
+        if (moduleOerations != null) {
+            Iterator moduleOperations_itr = moduleOerations.values().iterator();
+            while (moduleOperations_itr.hasNext()) {
+                AxisOperation operation = (AxisOperation) moduleOperations_itr.next();
+                removeOperation(operation.getName());
+            }
+        }
+    }
+
+    public boolean isEngaged(QName moduleName) {
+        AxisModule module = getAxisConfiguration().getModule(moduleName);
+        if (module == null) {
+            return false;
+        }
+        Iterator engagedModuleItr = engagedModules.iterator();
+        while (engagedModuleItr.hasNext()) {
+            AxisModule axisModule = (AxisModule) engagedModuleItr.next();
+            if (axisModule.getName().getLocalPart().equals(module.getName().getLocalPart())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    //#######################################################################################
+    //                    APIs to create AxisService
+
+    //
+
+    /**
+     * To create a AxisService for a given WSDL and the created client is most suitable for client side
+     * invocation not for server side invocation. Since all the soap action and wsa action is added to
+     * operations
+     *
+     * @param wsdlURL         location of the WSDL
+     * @param wsdlServiceName name of the service to be invoke , if it is null then the first one will
+     *                        be selected if there are more than one
+     * @param portName        name of the port , if there are more than one , if it is null then the
+     *                        first one in the  iterator will be selected
+     * @param options         Service client options, to set the target EPR
+     * @return AxisService , the created service will be return
+     */
+    public static AxisService createClientSideAxisService(URL wsdlURL,
+                                                          QName wsdlServiceName,
+                                                          String portName,
+                                                          Options options) throws AxisFault {
+        try {
+            InputStream in = wsdlURL.openConnection().getInputStream();
+            Document doc = XMLUtils.newDocument(in);
+            WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
+            reader.setFeature("javax.wsdl.importDocuments", true);
+            Definition wsdlDefinition = reader.readWSDL(null, doc);
+            return createClientSideAxisService(wsdlDefinition, wsdlServiceName, portName, options);
+        } catch (IOException e) {
+            log.error(e);
+            throw new AxisFault("IOException : " + e.getMessage());
+        } catch (ParserConfigurationException e) {
+            log.error(e);
+            throw new AxisFault("ParserConfigurationException : " + e.getMessage());
+        } catch (SAXException e) {
+            log.error(e);
+            throw new AxisFault("SAXException : " + e.getMessage());
+        } catch (WSDLException e) {
+            log.error(e);
+            throw new AxisFault("WSDLException : " + e.getMessage());
+        }
+    }
+
+    public static AxisService createClientSideAxisService(Definition wsdlDefinition,
+                                                          QName wsdlServiceName,
+                                                          String portName,
+                                                          Options options) throws AxisFault {
+        WSDL11ToAxisServiceBuilder serviceBuilder =
+                new WSDL11ToAxisServiceBuilder(wsdlDefinition, wsdlServiceName, portName);
+        serviceBuilder.setServerSide(false);
+        AxisService axisService = serviceBuilder.populateService();
+        options.setTo(new EndpointReference(axisService.getEndpoint()));
+        options.setSoapVersionURI(axisService.getSoapNsUri());
+        return axisService;
+    }
+
+    /**
+     * To create an AxisService using given service impl class name
+     * first generate schema corresponding to the given java class , next for each methods AxisOperation
+     * will be created.
+     * <p/>
+     * Note : Inorder to work this properly RPCMessageReceiver should be available in the class path
+     * otherewise operation can not continue
+     *
+     * @param implClass
+     * @param axisConfig
+     * @return return created AxisSrevice
+     */
+    public static AxisService createService(String implClass,
+                                            AxisConfiguration axisConfig,
+                                            Class messageReceiverClass) throws AxisFault {
+        return createService(implClass, axisConfig, messageReceiverClass, null, null);
+    }
+
+    /**
+     * messageReceiverClassMap will hold the MessageReceivers for given meps. Key will be the
+     * mep and value will be the instance of the MessageReceiver class.
+     * Ex:
+     * Map mrMap = new HashMap();
+     * mrMap.put("http://www.w3.org/2004/08/wsdl/in-only",
+     * RPCInOnlyMessageReceiver.class.newInstance());
+     * mrMap.put("http://www.w3.org/2004/08/wsdl/in-out",
+     * RPCMessageReceiver.class.newInstance());
+     *
+     * @param implClass
+     * @param axisConfiguration
+     * @param messageReceiverClassMap
+     * @param targetNamespace
+     * @param schemaNamespace
+     * @throws AxisFault
+     */
+
+    public static AxisService createService(String implClass,
+                                            AxisConfiguration axisConfiguration,
+                                            Map messageReceiverClassMap,
+                                            String targetNamespace,
+                                            String schemaNamespace) throws AxisFault {
+        Parameter parameter = new Parameter(Constants.SERVICE_CLASS, implClass);
+        OMElement paraElement = Utils.getParameter(Constants.SERVICE_CLASS, implClass, false);
+        parameter.setParameterElement(paraElement);
+        AxisService axisService = new AxisService();
+        axisService.setUseDefaultChains(false);
+        axisService.addParameter(parameter);
+
+        if (schemaNamespace == null) {
+            schemaNamespace = axisService.getSchematargetNamespace();
+        }
+
+        int index = implClass.lastIndexOf(".");
+        String serviceName;
+        if (index > 0) {
+            serviceName = implClass.substring(index + 1, implClass.length());
+        } else {
+            serviceName = implClass;
+        }
+
+        axisService.setName(serviceName);
+        axisService.setClassLoader(axisConfiguration.getServiceClassLoader());
+
+        ClassLoader serviceClassLoader = axisService.getClassLoader();
+        SchemaGenerator schemaGenerator;
+        ArrayList excludeOpeartion = new ArrayList();
+
+
+        NamespaceMap map = new NamespaceMap();
+        map.put(Java2WSDLConstants.AXIS2_NAMESPACE_PREFIX,
+                Java2WSDLConstants.AXIS2_XSD);
+        map.put(Java2WSDLConstants.DEFAULT_SCHEMA_NAMESPACE_PREFIX,
+                Java2WSDLConstants.URI_2001_SCHEMA_XSD);
+        axisService.setNameSpacesMap(map);
+
+
+        try {
+            schemaGenerator = new SchemaGenerator(serviceClassLoader,
+                    implClass, schemaNamespace,
+                    axisService.getSchematargetNamespacePrefix());
+            schemaGenerator.setElementFormDefault(Java2WSDLConstants.FORM_DEFAULT_UNQUALIFIED);
+            axisService.setElementFormDefault(false);
+            excludeOpeartion.add("init");
+            excludeOpeartion.add("setOperationContext");
+            excludeOpeartion.add("destroy");
+            excludeOpeartion.add("startUp");
+            schemaGenerator.setExcludeMethods(excludeOpeartion);
+            axisService.addSchema(schemaGenerator.generateSchema());
+            axisService.setSchematargetNamespace(schemaGenerator.getSchemaTargetNameSpace());
+            axisService.setTypeTable(schemaGenerator.getTypeTable());
+            if (targetNamespace == null) {
+                targetNamespace = schemaGenerator.getSchemaTargetNameSpace();
+            }
+            if (targetNamespace != null && !"".equals(targetNamespace)) {
+                axisService.setTargetNamespace(targetNamespace);
+            }
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+
+        JMethod[] method = schemaGenerator.getMethods();
+        TypeTable table = schemaGenerator.getTypeTable();
+
+        PhasesInfo pinfo = axisConfiguration.getPhasesInfo();
+
+        for (int i = 0; i < method.length; i++) {
+            JMethod jmethod = method[i];
+            if (!jmethod.isPublic()) {
+                // no need to expose , private and protected methods
+                continue;
+            } else if (excludeOpeartion.contains(jmethod.getSimpleName())) {
+                continue;
+            }
+            AxisOperation operation = Utils.getAxisOperationforJmethod(jmethod, table);
+            String mep = operation.getMessageExchangePattern();
+            MessageReceiver mr;
+            if (messageReceiverClassMap != null) {
+
+                if (messageReceiverClassMap.get(mep) != null) {
+                    Object obj = messageReceiverClassMap.get(mep);
+                    if (obj instanceof MessageReceiver) {
+                        mr = (MessageReceiver) obj;
+                        operation.setMessageReceiver(mr);
+                    } else {
+                        log.error("Object is not an instance of MessageReceiver, thus, default MessageReceiver has been set");
+                        mr = axisConfiguration.getMessageReceiver(operation.getMessageExchangePattern());
+                        operation.setMessageReceiver(mr);
+                    }
+                } else {
+                    log.error("Required MessageReceiver couldn't be found, thus, default MessageReceiver has been used");
+                    mr = axisConfiguration.getMessageReceiver(operation.getMessageExchangePattern());
+                    operation.setMessageReceiver(mr);
+                }
+            } else {
+                log.error("MessageRecevierClassMap couldn't be found, thus, default MessageReceiver has been used");
+                mr = axisConfiguration.getMessageReceiver(operation.getMessageExchangePattern());
+                operation.setMessageReceiver(mr);
+            }
+            pinfo.setOperationPhases(operation);
+            axisService.addOperation(operation);
+        }
+        return axisService;
+
+    }
+
+    /**
+     * To create a service for a given Java class with user defined schema and target
+     * namespaces. This method should be used iff, the operations in the service class is homogeneous.
+     *
+     * @param implClass            : full name of the class
+     * @param axisConfig           : current AxisConfgiuration
+     * @param messageReceiverClass : Message receiver that you want to use
+     * @param targetNameSpace      : Service namespace
+     * @param schemaNameSpace      : Schema namespace
+     * @throws AxisFault
+     */
+
+    public static AxisService createService(String implClass,
+                                            AxisConfiguration axisConfig,
+                                            Class messageReceiverClass,
+                                            String targetNameSpace,
+                                            String schemaNameSpace) throws AxisFault {
+        Parameter parameter = new Parameter(Constants.SERVICE_CLASS, implClass);
+        OMElement paraElement = Utils.getParameter(Constants.SERVICE_CLASS, implClass, false);
+        parameter.setParameterElement(paraElement);
+        AxisService axisService = new AxisService();
+        axisService.setUseDefaultChains(false);
+        axisService.addParameter(parameter);
+
+        if (schemaNameSpace == null) {
+            schemaNameSpace = axisService.getSchematargetNamespace();
+        }
+
+        int index = implClass.lastIndexOf(".");
+        String serviceName;
+        if (index > 0) {
+            serviceName = implClass.substring(index + 1, implClass.length());
+        } else {
+            serviceName = implClass;
+        }
+
+        axisService.setName(serviceName);
+        axisService.setClassLoader(axisConfig.getServiceClassLoader());
+
+        ClassLoader serviceClassLoader = axisService.getClassLoader();
+        SchemaGenerator schemaGenerator;
+        ArrayList excludeOpeartion = new ArrayList();
+
+
+        NamespaceMap map = new NamespaceMap();
+        map.put(Java2WSDLConstants.AXIS2_NAMESPACE_PREFIX,
+                Java2WSDLConstants.AXIS2_XSD);
+        map.put(Java2WSDLConstants.DEFAULT_SCHEMA_NAMESPACE_PREFIX,
+                Java2WSDLConstants.URI_2001_SCHEMA_XSD);
+        axisService.setNameSpacesMap(map);
+
+
+        try {
+            schemaGenerator = new SchemaGenerator(serviceClassLoader,
+                    implClass, schemaNameSpace,
+                    axisService.getSchematargetNamespacePrefix());
+            schemaGenerator.setElementFormDefault(Java2WSDLConstants.FORM_DEFAULT_UNQUALIFIED);
+            axisService.setElementFormDefault(false);
+            excludeOpeartion.add("init");
+            excludeOpeartion.add("setOperationContext");
+            excludeOpeartion.add("destroy");
+            excludeOpeartion.add("startUp");
+            schemaGenerator.setExcludeMethods(excludeOpeartion);
+            axisService.addSchema(schemaGenerator.generateSchema());
+            axisService.setSchematargetNamespace(schemaGenerator.getSchemaTargetNameSpace());
+            axisService.setTypeTable(schemaGenerator.getTypeTable());
+            if (targetNameSpace == null) {
+                targetNameSpace = schemaGenerator.getSchemaTargetNameSpace();
+            }
+            if (targetNameSpace != null && !"".equals(targetNameSpace)) {
+                axisService.setTargetNamespace(targetNameSpace);
+            }
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+
+        JMethod[] method = schemaGenerator.getMethods();
+        TypeTable table = schemaGenerator.getTypeTable();
+
+        PhasesInfo pinfo = axisConfig.getPhasesInfo();
+
+        for (int i = 0; i < method.length; i++) {
+            JMethod jmethod = method[i];
+            if (!jmethod.isPublic()) {
+                // no need to expose , private and protected methods
+                continue;
+            } else if (excludeOpeartion.contains(jmethod.getSimpleName())) {
+                continue;
+            }
+            AxisOperation operation = Utils.getAxisOperationforJmethod(jmethod, table);
+
+            // loading message receivers
+            try {
+                MessageReceiver messageReceiver = (MessageReceiver) messageReceiverClass.newInstance();
+                operation.setMessageReceiver(messageReceiver);
+            } catch (IllegalAccessException e) {
+                throw new AxisFault("IllegalAccessException occurred during message receiver loading"
+                        + e.getMessage());
+            } catch (InstantiationException e) {
+                throw new AxisFault("InstantiationException occurred during message receiver loading"
+                        + e.getMessage());
+            }
+            pinfo.setOperationPhases(operation);
+            axisService.addOperation(operation);
+        }
+        return axisService;
+
+    }
+
+    public static AxisService createService(String implClass,
+                                            AxisConfiguration axisConfig) throws AxisFault {
+        Class clazz;
+        try {
+            clazz = Loader.loadClass("org.apache.axis2.rpc.receivers.RPCMessageReceiver");
+        } catch (ClassNotFoundException e) {
+            throw new AxisFault("ClassNotFoundException occured during message receiver loading"
+                    + e.getMessage());
+        }
+
+        return createService(implClass, axisConfig, clazz);
+
+    }
+
+    public void removeOperation(QName opName) {
+        AxisOperation operation = getOperation(opName);
+        if (operation != null) {
+            removeChild(opName);
+            ArrayList mappingList = operation.getWsamappingList();
+            if (mappingList != null) {
+                for (int i = 0; i < mappingList.size(); i++) {
+                    String actionMapping = (String) mappingList.get(i);
+                    operationsAliasesMap.remove(actionMapping);
+                }
+            }
+            operationsAliasesMap.remove(operation.getName().getLocalPart());
+        }
+    }
+
+    public Map getNameSpacesMap() {
+        return nameSpacesMap;
+    }
+
+    public void setNameSpacesMap(NamespaceMap nameSpacesMap) {
+        this.nameSpacesMap = nameSpacesMap;
+    }
+
+    private void addSchemaNameSpace(XmlSchema schema) {
+        String targetNameSpace = schema.getTargetNamespace();
+        String prefix = schema.getNamespaceContext().getPrefix(targetNameSpace);
+
+        boolean found = false;
+        if (nameSpacesMap != null && nameSpacesMap.size() > 0) {
+            Iterator itr = nameSpacesMap.values().iterator();
+            Set keys = nameSpacesMap.keySet();
+            while (itr.hasNext()) {
+                String value = (String) itr.next();
+                if (value.equals(targetNameSpace) && keys.contains(prefix)) {
+                    found = true;
+                }
+            }
+        }
+        if (nameSpacesMap == null) {
+            nameSpacesMap = new NamespaceMap();
+        }
+        if (!found) {
+            nameSpacesMap.put("ns" + nsCount, targetNameSpace);
+            nsCount++;
+        }
+    }
+
+    /**
+     * runs the schema mappings if it has not been run previously
+     * it is best that this logic be in the axis service since one can
+     * call the axis service to populate the schema mappings
+     */
+    public void populateSchemaMappings() {
+
+        //populate the axis service with the necessary schema references
+        ArrayList schema = this.schemaList;
+        if (!this.schemaLocationsAdjusted) {
+            Hashtable nameTable = new Hashtable();
+            //calculate unique names for the schemas
+            calcualteSchemaNames(schema, nameTable);
+            //adjust the schema locations as per the calculated names
+            adjustSchemaNames(schema, nameTable);
+            //reverse the nametable so that there is a mapping from the
+            //name to the schemaObject
+            setSchemaMappingTable(swapMappingTable(nameTable));
+            setSchemaLocationsAdjusted(true);
+        }
+    }
+
+    /**
+     * run 1 -calcualte unique names
+     *
+     * @param schemas
+     */
+    private void calcualteSchemaNames(List schemas, Hashtable nameTable) {
+        //first traversal - fill the hashtable
+        for (int i = 0; i < schemas.size(); i++) {
+            XmlSchema schema = (XmlSchema) schemas.get(i);
+            XmlSchemaObjectCollection includes = schema.getIncludes();
+
+            for (int j = 0; j < includes.getCount(); j++) {
+                Object item = includes.getItem(j);
+                XmlSchema s;
+                if (item instanceof XmlSchemaExternal) {
+                    XmlSchemaExternal externalSchema = (XmlSchemaExternal) item;
+                    s = externalSchema.getSchema();
+                    if (s != null && nameTable.get(s) == null) {
+                        //insert the name into the table
+                        insertIntoNameTable(nameTable, s);
+                        //recursively call the same procedure
+                        calcualteSchemaNames(Arrays.asList(
+                                new XmlSchema[]{s}),
+                                nameTable);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * A quick private sub routine to insert the names
+     *
+     * @param nameTable
+     * @param s
+     */
+    private void insertIntoNameTable(Hashtable nameTable, XmlSchema s) {
+        nameTable.put(s,
+                ("xsd" + count++)
+                        + (customSchemaNameSuffix != null ?
+                        customSchemaNameSuffix :
+                        ""));
+    }
+
+    /**
+     * Run 2  - adjust the names
+     */
+    private void adjustSchemaNames(List schemas, Hashtable nameTable) {
+        Hashtable importedSchemas = new Hashtable();
+        //process the schemas in the main schema list
+        for (int i = 0; i < schemas.size(); i++) {
+            adjustSchemaName((XmlSchema) schemas.get(i), nameTable, importedSchemas);
+        }
+        //process all the rest in the name table
+        Enumeration nameTableKeys = nameTable.keys();
+        while (nameTableKeys.hasMoreElements()) {
+            adjustSchemaName((XmlSchema) nameTableKeys.nextElement(), nameTable, importedSchemas);
+
+        }
+    }
+
+    /**
+     * Adjust a single schema
+     *
+     * @param parentSchema
+     * @param nameTable
+     */
+    private void adjustSchemaName(XmlSchema parentSchema, Hashtable nameTable, Hashtable importedScheams) {
+        XmlSchemaObjectCollection includes = parentSchema.getIncludes();
+        for (int j = 0; j < includes.getCount(); j++) {
+            Object item = includes.getItem(j);
+            if (item instanceof XmlSchemaExternal) {
+                XmlSchemaExternal xmlSchemaExternal = (XmlSchemaExternal) item;
+                XmlSchema s = xmlSchemaExternal.getSchema();
+                adjustSchemaLocation(s, xmlSchemaExternal, nameTable, importedScheams);
+            }
+        }
+
+    }
+
+    /**
+     * Adjusts a given schema location
+     *
+     * @param s
+     * @param xmlSchemaExternal
+     * @param nameTable
+     */
+    private void adjustSchemaLocation(XmlSchema s, XmlSchemaExternal xmlSchemaExternal, Hashtable nameTable, Hashtable importedScheams) {
+        if (s != null) {
+            String schemaLocation = xmlSchemaExternal.getSchemaLocation();
+            if (importedScheams.get(schemaLocation) != null) {
+                xmlSchemaExternal.setSchemaLocation(
+                        (String) importedScheams.get(xmlSchemaExternal.getSchemaLocation()));
+            } else {
+                String newscheamlocation = customSchemaNamePrefix == null ?
+                        //use the default mode
+                        (getName() +
+                                "?xsd=" +
+                                nameTable.get(s)) :
+                        //custom prefix is present - add the custom prefix
+                        (customSchemaNamePrefix +
+                                nameTable.get(s));
+                xmlSchemaExternal.setSchemaLocation(
+                        newscheamlocation);
+                importedScheams.put(schemaLocation, newscheamlocation);
+            }
+
+        }
+    }
+
+    /**
+     * Swap the key,value pairs
+     *
+     * @param originalTable
+     */
+    private Map swapMappingTable(Map originalTable) {
+        HashMap swappedTable = new HashMap(originalTable.size());
+        Iterator keys = originalTable.keySet().iterator();
+        Object key;
+        while (keys.hasNext()) {
+            key = keys.next();
+            swappedTable.put(originalTable.get(key), key);
+        }
+
+        return swappedTable;
+    }
+
+    public boolean isClientSide() {
+        return clientSide;
+    }
+
+    public void setClientSide(boolean clientSide) {
+        this.clientSide = clientSide;
+    }
+
+    public boolean isElementFormDefault() {
+        return elementFormDefault;
+    }
+
+    public void setElementFormDefault(boolean elementFormDefault) {
+        this.elementFormDefault = elementFormDefault;
+    }
+
+    /**
+     * User can set a parameter in services.xml saying he want to show the original wsdl
+     * that he put into META-INF once someone ask for ?wsdl
+     * so if you want to use your own wsdl then add following parameter into
+     * services.xml
+     * <parameter name="useOriginalwsdl">true</parameter>
+     */
+    public boolean isUseUserWSDL() {
+        Parameter parameter = getParameter("useOriginalwsdl");
+        if (parameter != null) {
+            String value = (String) parameter.getValue();
+            if ("true".equals(value)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public ServiceLifeCycle getServiceLifeCycle() {
+        return serviceLifeCycle;
+    }
+
+    public void setServiceLifeCycle(ServiceLifeCycle serviceLifeCycle) {
+        this.serviceLifeCycle = serviceLifeCycle;
+    }
+
+    public Map getP2nMap() {
+        return p2nMap;
+    }
+
+    public void setP2nMap(Map p2nMap) {
+        this.p2nMap = p2nMap;
+    }
+
+    public ObjectSupplier getObjectSupplier() {
+        return objectSupplier;
+    }
+
+    public void setObjectSupplier(ObjectSupplier objectSupplier) {
+        this.objectSupplier = objectSupplier;
+    }
+
+    public TypeTable getTypeTable() {
+        return typeTable;
+    }
+
+    public void setTypeTable(TypeTable typeTable) {
+        this.typeTable = typeTable;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService2OM.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService2OM.java
new file mode 100644
index 0000000..c2ce01f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService2OM.java
@@ -0,0 +1,1091 @@
+package org.apache.axis2.description;

+

+import org.apache.axiom.om.*;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.namespace.Constants;

+import org.apache.axis2.util.ExternalPolicySerializer;

+import org.apache.axis2.util.PolicyUtil;

+import org.apache.axis2.wsdl.SOAPHeaderMessage;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.neethi.Policy;

+import org.apache.neethi.PolicyComponent;

+import org.apache.neethi.PolicyReference;

+import org.apache.neethi.PolicyRegistry;

+import org.apache.ws.commons.schema.XmlSchema;

+import org.apache.ws.java2wsdl.Java2WSDLConstants;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamReader;

+import java.io.StringReader;

+import java.io.StringWriter;

+import java.net.URI;

+import java.util.*;

+

+/*

+ * Copyright 2004,2005 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.

+ *

+ *

+ */

+

+public class AxisService2OM implements Java2WSDLConstants {

+

+    private AxisService axisService;

+

+    private String[] serviceEndpointURLs;

+

+    private String targetNamespace;

+

+    private OMElement definition;

+

+    private OMNamespace soap;

+

+    private OMNamespace soap12;

+

+    private OMNamespace http;

+

+    private OMNamespace mime;

+

+    private OMNamespace tns;

+

+    private OMNamespace wsdl;

+

+    private String style;

+

+    private String use;

+

+    private String servicePath;

+

+    private boolean generateHttp = false;

+

+    private HashMap policiesInDefinitions;

+

+    private ExternalPolicySerializer serializer;

+

+    private HashMap messagesMap;

+    private String restPath;

+

+    public AxisService2OM(AxisService service, String[] serviceEndpointURLs,

+                          String style, String use, String servicePath) {

+        this.axisService = service;

+

+        // the EPR list of AxisService contains REST EPRs as well. Those REST EPRs will be used to generated HTTPBinding

+        // and rest of the EPRs will be used to generate SOAP 1.1 and 1.2 bindings. Let's first initialize those set of

+        // EPRs now to be used later, especially when we generate the WSDL.

+        this.serviceEndpointURLs = serviceEndpointURLs;

+

+        if (style == null) {

+            this.style = DOCUMENT;

+        } else {

+            this.style = style;

+        }

+        if (use == null) {

+            this.use = LITERAL;

+        } else {

+            this.use = use;

+        }

+        this.servicePath = servicePath;

+        this.targetNamespace = service.getTargetNamespace();

+

+        serializer = new ExternalPolicySerializer();

+        // CHECKME check whether service.getAxisConfiguration() return null ???

+

+        AxisConfiguration configuration = service.getAxisConfiguration();

+        if (configuration != null) {

+            serializer.setAssertionsToFilter(configuration

+                    .getLocalPolicyAssertions());

+        }

+

+    }

+

+    public OMElement generateOM() throws Exception {

+

+        initURLResolving();

+

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        wsdl = fac.createOMNamespace(WSDL_NAMESPACE,

+                DEFAULT_WSDL_NAMESPACE_PREFIX);

+        OMElement ele = fac.createOMElement("definitions", wsdl);

+        setDefinitionElement(ele);

+

+        policiesInDefinitions = new HashMap();

+

+        Map nameSpaceMap = axisService.getNameSpacesMap();

+        Iterator keys = nameSpaceMap.keySet().iterator();

+        while (keys.hasNext()) {

+            String key = (String) keys.next();

+            if ("".equals(key)) {

+                ele.declareDefaultNamespace((String) nameSpaceMap.get(key));

+            } else {

+                ele.declareNamespace((String) nameSpaceMap.get(key), key);

+            }

+        }

+        soap = ele.declareNamespace(URI_WSDL11_SOAP, SOAP11_PREFIX);

+        soap12 = ele.declareNamespace(URI_WSDL12_SOAP, SOAP12_PREFIX);

+        http = ele.declareNamespace(HTTP_NAMESPACE, HTTP_PREFIX);

+        mime = ele.declareNamespace(MIME_NAMESPACE, MIME_PREFIX);

+        String prefix = getPrefix(axisService.getTargetNamespace());

+        if (prefix == null || "".equals(prefix)) {

+            prefix = DEFAULT_TARGET_NAMESPACE_PREFIX;

+        }

+        axisService.getNameSpacesMap().put(prefix,

+                axisService.getTargetNamespace());

+        tns = ele.declareNamespace(axisService.getTargetNamespace(), prefix);

+

+        // adding documentation element

+        // <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN

+        // string and returns &lt;b&gt;Amazon.co.uk&lt;/b&gt; Sales Rank for

+        // that book.</documentation>

+        String servicedescription = axisService.getServiceDescription();

+        if (servicedescription != null && !"".equals(servicedescription)) {

+            OMElement documenentattion = fac.createOMElement("documentation",

+                    wsdl);

+            documenentattion.setText(servicedescription);

+            ele.addChild(documenentattion);

+        }

+

+        ele.addAttribute("targetNamespace", axisService.getTargetNamespace(),

+                null);

+        OMElement wsdlTypes = fac.createOMElement("types", wsdl);

+        ele.addChild(wsdlTypes);

+

+        // populate the schema mappings

+        axisService.populateSchemaMappings();

+

+        ArrayList schemas = axisService.getSchema();

+        for (int i = 0; i < schemas.size(); i++) {

+            StringWriter writer = new StringWriter();

+

+            // XmlSchema schema = (XmlSchema) schemas.get(i);

+            XmlSchema schema = axisService.getSchema(i);

+

+            String targetNamespace = schema.getTargetNamespace();

+            if (!Constants.NS_URI_XML.equals(targetNamespace)) {

+                schema.write(writer);

+                String schemaString = writer.toString();

+                if (!"".equals(schemaString)) {

+                    XMLStreamReader xmlReader = StAXUtils

+                            .createXMLStreamReader(new StringReader(

+                                    schemaString));

+

+                    StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac,

+                            xmlReader);

+                    wsdlTypes.addChild(staxOMBuilder.getDocumentElement());

+                }

+            }

+        }

+        generateMessages(fac, ele);

+        generatePortType(fac, ele);

+        generateSOAP11Binding(fac, ele);

+        generateSOAP12Binding(fac, ele);

+        // generateHttp

+        if (axisService.getParent() != null) {

+            AxisDescription axisdesc = axisService.getParent().getParent();

+            Parameter parameter = axisdesc.getParameter("enableHTTP");

+            if (parameter != null) {

+                Object value = parameter.getValue();

+                if ("true".equals(value.toString())) {

+                    generateHttp = true;

+                    generatePostBinding(fac, ele);

+                }

+            }

+        }

+        generateService(fac, ele);

+        addPoliciesToDefinitionElement(policiesInDefinitions.values()

+                .iterator(), definition);

+

+        return ele;

+    }

+

+    /**

+     * the EPR list of AxisService contains REST EPRs as well. Those REST EPRs will be used to generated HTTPBinding

+     * and rest of the EPRs will be used to generate SOAP 1.1 and 1.2 bindings. Let's first initialize those set of

+     * EPRs now to be used later, especially when we generate the WSDL.

+     */

+    private void initURLResolving() {

+        Parameter restPathParam = axisService.getParameter(org.apache.axis2.Constants.PARAM_REST_PATH);

+        if (restPathParam != null) {

+            restPath = ((String) restPathParam.getValue()).trim();

+            if (restPath.length() <= 0) {

+                restPath = org.apache.axis2.Constants.DEFAULT_REST_PATH;

+            }

+        } else {

+            restPath = org.apache.axis2.Constants.DEFAULT_REST_PATH;

+        }

+

+        // now search for REST urls in the passed urls list and remove them

+    }

+

+    private void generateMessages(OMFactory fac, OMElement defintions) {

+        HashSet faultMessageNames = new HashSet();

+        messagesMap = new HashMap();

+

+        Iterator operations = axisService.getOperations();

+        while (operations.hasNext()) {

+            AxisOperation axisOperation = (AxisOperation) operations.next();

+            if (axisOperation.isControlOperation()) {

+                continue;

+            }

+            String MEP = axisOperation.getMessageExchangePattern();

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage inaxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+                if (inaxisMessage != null) {

+                    writeMessage(inaxisMessage, fac, defintions);

+                    generateHeaderMessages(inaxisMessage, fac, defintions);

+                }

+            }

+

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage outAxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+                if (outAxisMessage != null) {

+                    writeMessage(outAxisMessage, fac, defintions);

+                    generateHeaderMessages(outAxisMessage, fac, defintions);

+                }

+            }

+

+            // generate fault Messages

+            ArrayList faultyMessages = axisOperation.getFaultMessages();

+            if (faultyMessages != null) {

+                for (int i = 0; i < faultyMessages.size(); i++) {

+                    AxisMessage axisMessage = (AxisMessage) faultyMessages

+                            .get(i);

+                    String name = axisMessage.getName();

+                    if (faultMessageNames.add(name)) {

+                        writeMessage(axisMessage, fac, defintions);

+                        generateHeaderMessages(axisMessage, fac, defintions);

+                    }

+                }

+            }

+        }

+    }

+

+    private void generateHeaderMessages(AxisMessage axismessage, OMFactory fac,

+                                        OMElement defintions) {

+        ArrayList extList = axismessage.getSoapHeaders();

+        for (int i = 0; i < extList.size(); i++) {

+            SOAPHeaderMessage header = (SOAPHeaderMessage) extList.get(i);

+            OMElement messageElement = fac.createOMElement(MESSAGE_LOCAL_NAME,

+                    wsdl);

+            messageElement.addAttribute(ATTRIBUTE_NAME, header.getMessage()

+                    .getLocalPart(), null);

+            defintions.addChild(messageElement);

+            OMElement messagePart = fac.createOMElement(PART_ATTRIBUTE_NAME,

+                    wsdl);

+            messageElement.addChild(messagePart);

+            messagePart.addAttribute(ATTRIBUTE_NAME, header.part(), null);

+            if (header.getElement() == null) {

+                throw new RuntimeException(ELEMENT_ATTRIBUTE_NAME

+                        + " is null for " + header.getMessage());

+            }

+            messagePart.addAttribute(ELEMENT_ATTRIBUTE_NAME, getPrefix(header

+                    .getElement().getNamespaceURI())

+                    + ":" + header.getElement().getLocalPart(), null);

+        }

+    }

+

+    private void writeMessage(AxisMessage axismessage, OMFactory fac,

+                              OMElement defintions) {

+        if (messagesMap.get(axismessage.getName()) == null) {

+            messagesMap.put(axismessage.getName(), axismessage);

+            QName schemaElementName = axismessage.getElementQName();

+            OMElement messageElement = fac.createOMElement(MESSAGE_LOCAL_NAME,

+                    wsdl);

+            messageElement.addAttribute(ATTRIBUTE_NAME, axismessage.getName(),

+                    null);

+            defintions.addChild(messageElement);

+            if (schemaElementName != null) {

+                OMElement messagePart = fac.createOMElement(

+                        PART_ATTRIBUTE_NAME, wsdl);

+                messageElement.addChild(messagePart);

+                messagePart.addAttribute(ATTRIBUTE_NAME, "part1", null);

+                messagePart.addAttribute(ELEMENT_ATTRIBUTE_NAME,

+                        getPrefix(schemaElementName.getNamespaceURI()) + ":"

+                                + schemaElementName.getLocalPart(), null);

+            }

+        }

+

+    }

+

+    /**

+     * Generate the porttypes

+     */

+    private void generatePortType(OMFactory fac, OMElement defintions)

+            throws Exception {

+        OMElement portType = fac.createOMElement(PORT_TYPE_LOCAL_NAME, wsdl);

+        defintions.addChild(portType);

+

+        portType.addAttribute(ATTRIBUTE_NAME, axisService.getName()

+                + PORT_TYPE_SUFFIX, null);

+

+        addPolicyAsExtAttribute(PolicyInclude.PORT_TYPE_POLICY, axisService

+                .getPolicyInclude(), portType, fac);

+        for (Iterator operations = axisService.getOperations(); operations.hasNext();) {

+            AxisOperation axisOperation = (AxisOperation) operations.next();

+            if (axisOperation.isControlOperation() || axisOperation.getName() == null) {

+                continue;

+            }

+            String operationName = axisOperation.getName().getLocalPart();

+            OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,

+                    wsdl);

+            portType.addChild(operation);

+            operation.addAttribute(ATTRIBUTE_NAME, operationName, null);

+            addPolicyAsExtElement(PolicyInclude.OPERATION_POLICY, axisOperation

+                    .getPolicyInclude(), operation, fac);

+

+            String MEP = axisOperation.getMessageExchangePattern();

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage inaxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+                if (inaxisMessage != null) {

+                    OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME,

+                            wsdl);

+                    input.addAttribute(MESSAGE_LOCAL_NAME, tns.getPrefix()

+                            + ":" + inaxisMessage.getName(), null);

+                    addPolicyAsExtElement(PolicyInclude.INPUT_POLICY,

+                            inaxisMessage.getPolicyInclude(), input, fac);

+                    addWSAWActionAttribute(input, axisOperation

+                            .getInputAction());

+                    operation.addChild(input);

+                }

+            }

+

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage outAxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+                if (outAxisMessage != null) {

+                    OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME,

+                            wsdl);

+                    output.addAttribute(MESSAGE_LOCAL_NAME, tns.getPrefix()

+                            + ":" + outAxisMessage.getName(), null);

+                    addPolicyAsExtElement(PolicyInclude.OUTPUT_POLICY,

+                            outAxisMessage.getPolicyInclude(), output, fac);

+                    addWSAWActionAttribute(output, axisOperation

+                            .getOutputAction());

+                    operation.addChild(output);

+                }

+            }

+

+            // generate fault Messages

+            ArrayList faultyMessages = axisOperation.getFaultMessages();

+            if (faultyMessages != null) {

+                for (int i = 0; i < faultyMessages.size(); i++) {

+                    AxisMessage faultyMessage = (AxisMessage) faultyMessages

+                            .get(i);

+                    OMElement fault = fac.createOMElement(FAULT_LOCAL_NAME,

+                            wsdl);

+                    fault.addAttribute(MESSAGE_LOCAL_NAME, tns.getPrefix()

+                            + ":" + faultyMessage.getName(), null);

+                    fault.addAttribute(ATTRIBUTE_NAME, faultyMessage.getName(),

+                            null);

+                    addWSAWActionAttribute(fault, axisOperation

+                            .getFaultAction(faultyMessage.getName()));

+                    // TODO add policies for fault messages

+                    operation.addChild(fault);

+                }

+            }

+

+        }

+    }

+

+    /**

+     * Generate the service

+     */

+    public void generateService(OMFactory fac, OMElement defintions)

+            throws Exception {

+        OMElement service = fac.createOMElement(SERVICE_LOCAL_NAME, wsdl);

+        defintions.addChild(service);

+        service.addAttribute(ATTRIBUTE_NAME, axisService.getName(), null);

+        generateSOAP11Ports(fac, service);

+        generateSOAP12Ports(fac, service);

+

+        addPolicyAsExtElement(PolicyInclude.SERVICE_POLICY, axisService

+                .getPolicyInclude(), service, fac);

+

+        if (generateHttp) {

+            generateHTTPPorts(fac, service);

+        }

+

+    }

+

+    private void generateSOAP11Ports(OMFactory fac, OMElement service)

+            throws Exception {

+        for (int i = 0; i < serviceEndpointURLs.length; i++) {

+            String urlString = serviceEndpointURLs[i];

+            if (urlString == null || urlString.indexOf(restPath) == -1) {

+                String protocol = urlString == null ? null : new URI(urlString)

+                        .getScheme();

+                if (urlString == null) {

+                    urlString = "REPLACE_WITH_ACTUAL_URL";

+                }

+                OMElement port = fac.createOMElement(PORT, wsdl);

+                service.addChild(port);

+                String name = axisService.getName() + SOAP11PORT

+                        + ((protocol == null) ? "" : "_" + protocol);

+                if (i > 0) {

+                    name += i;

+                }

+                port.addAttribute(ATTRIBUTE_NAME, name, null);

+                port.addAttribute(BINDING_LOCAL_NAME, tns.getPrefix() + ":"

+                        + axisService.getName() + BINDING_NAME_SUFFIX, null);

+                addExtensionElement(fac, port, SOAP_ADDRESS, LOCATION, urlString,

+                        soap);

+

+                addPolicyAsExtElement(PolicyInclude.PORT_POLICY, axisService

+                        .getPolicyInclude(), port, fac);

+            }

+        }

+

+    }

+

+    private void generateHTTPPorts(OMFactory fac, OMElement service)

+            throws Exception {

+        String[] exposedEPRs = axisService.getEPRs();

+        for (int i = 0; i < exposedEPRs.length; i++) {

+            String urlString = serviceEndpointURLs[i];

+            if (urlString != null && urlString.startsWith("http") && (urlString.indexOf(restPath) > -1)) {

+                OMElement port = fac.createOMElement(PORT, wsdl);

+                service.addChild(port);

+                String name = axisService.getName() + HTTP_PORT;

+                if (i > 0) {

+                    name += i;

+                }

+                port.addAttribute(ATTRIBUTE_NAME, name, null);

+                port.addAttribute(BINDING_LOCAL_NAME, tns.getPrefix() + ":"

+                        + axisService.getName() + HTTP_BINDING, null);

+                OMElement extElement = fac.createOMElement("address", http);

+                port.addChild(extElement);

+//                urlString = urlString.replaceAll(servicePath, "rest");

+                extElement.addAttribute("location", urlString, null);

+            }

+        }

+    }

+

+    private void generateSOAP12Ports(OMFactory fac, OMElement service)

+            throws Exception {

+        for (int i = 0; i < serviceEndpointURLs.length; i++) {

+            String urlString = serviceEndpointURLs[i];

+            if (urlString == null || urlString.indexOf(restPath) == -1) {

+                String protocol = urlString == null ? null : new URI(urlString)

+                        .getScheme();

+                if (urlString == null) {

+                    urlString = "REPLACE_WITH_ACTUAL_URL";

+                }

+                OMElement port = fac.createOMElement(PORT, wsdl);

+                service.addChild(port);

+                String name = axisService.getName() + SOAP12PORT

+                        + ((protocol == null) ? "" : "_" + protocol);

+                if (i > 0) {

+                    name += i;

+                }

+                port.addAttribute(ATTRIBUTE_NAME, name, null);

+                port.addAttribute(BINDING_LOCAL_NAME, tns.getPrefix() + ":"

+                        + axisService.getName() + SOAP12BINDING_NAME_SUFFIX, null);

+                addExtensionElement(fac, port, SOAP_ADDRESS, LOCATION, urlString,

+                        soap12);

+

+                addPolicyAsExtElement(PolicyInclude.PORT_POLICY, axisService

+                        .getPolicyInclude(), port, fac);

+            }

+        }

+    }

+

+    /**

+     * Generate the bindings

+     */

+    private void generateSOAP11Binding(OMFactory fac, OMElement defintions)

+            throws Exception {

+        OMElement binding = fac.createOMElement(BINDING_LOCAL_NAME, wsdl);

+        defintions.addChild(binding);

+        binding.addAttribute(ATTRIBUTE_NAME, axisService.getName()

+                + BINDING_NAME_SUFFIX, null);

+        binding.addAttribute("type", tns.getPrefix() + ":"

+                + axisService.getName() + PORT_TYPE_SUFFIX, null);

+

+        addPolicyAsExtElement(PolicyInclude.AXIS_SERVICE_POLICY, axisService

+                .getPolicyInclude(), binding, fac);

+        addPolicyAsExtElement(PolicyInclude.BINDING_POLICY, axisService

+                .getPolicyInclude(), binding, fac);

+

+        // Adding ext elements

+        addExtensionElement(fac, binding, BINDING_LOCAL_NAME, TRANSPORT,

+                TRANSPORT_URI, STYLE, style, soap);

+

+        // Add WS-Addressing UsingAddressing element if appropriate

+        // SHOULD be on the binding element per the specification

+        if (axisService.getWSAddressingFlag().equals(

+                AddressingConstants.ADDRESSING_OPTIONAL)) {

+            OMNamespace wsawNamespace = fac.createOMNamespace(

+                    AddressingConstants.Final.WSAW_NAMESPACE, "wsaw");

+            addExtensionElement(fac, binding,

+                    AddressingConstants.USING_ADDRESSING,

+                    DEFAULT_WSDL_NAMESPACE_PREFIX + ":required", "true",

+                    wsawNamespace);

+        } else if (axisService.getWSAddressingFlag().equals(

+                AddressingConstants.ADDRESSING_REQUIRED)) {

+            OMNamespace wsawNamespace = fac.createOMNamespace(

+                    AddressingConstants.Final.WSAW_NAMESPACE, "wsaw");

+            addExtensionElement(fac, binding,

+                    AddressingConstants.USING_ADDRESSING,

+                    DEFAULT_WSDL_NAMESPACE_PREFIX + ":required", "true",

+                    wsawNamespace);

+        }

+

+        for (Iterator operations = axisService.getOperations(); operations.hasNext();) {

+            AxisOperation axisOperation = (AxisOperation) operations.next();

+            if (axisOperation.isControlOperation() || axisOperation.getName() == null) {

+                continue;

+            }

+            String operationName = axisOperation.getName().getLocalPart();

+            OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,

+                    wsdl);

+            binding.addChild(operation);

+            String soapAction = axisOperation.getInputAction();

+            if (soapAction == null) {

+                soapAction = "";

+            }

+            addExtensionElement(fac, operation, OPERATION_LOCAL_NAME,

+                    SOAP_ACTION, soapAction, STYLE, style, soap);

+

+            addPolicyAsExtElement(PolicyInclude.BINDING_OPERATION_POLICY,

+                    axisOperation.getPolicyInclude(), operation, fac);

+            addPolicyAsExtElement(PolicyInclude.AXIS_OPERATION_POLICY,

+                    axisOperation.getPolicyInclude(), operation, fac);

+

+            String MEP = axisOperation.getMessageExchangePattern();

+

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage inaxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+                if (inaxisMessage != null) {

+                    operation.addAttribute(ATTRIBUTE_NAME, operationName, null);

+                    OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME,

+                            wsdl);

+                    addExtensionElement(fac, input, SOAP_BODY, SOAP_USE, use,

+                            null, targetNamespace, soap);

+                    addPolicyAsExtElement(PolicyInclude.BINDING_INPUT_POLICY,

+                            inaxisMessage.getPolicyInclude(), input, fac);

+                    operation.addChild(input);

+                    writeSoapHeaders(inaxisMessage, fac, input, soap);

+                }

+            }

+

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage outAxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+                if (outAxisMessage != null) {

+                    OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME,

+                            wsdl);

+                    addExtensionElement(fac, output, SOAP_BODY, SOAP_USE, use,

+                            null, targetNamespace, soap);

+                    addPolicyAsExtElement(PolicyInclude.BINDING_OUTPUT_POLICY,

+                            outAxisMessage.getPolicyInclude(), output, fac);

+                    operation.addChild(output);

+                    writeSoapHeaders(outAxisMessage, fac, output, soap);

+                }

+            }

+

+            // generate fault Messages

+            ArrayList faultyMessages = axisOperation.getFaultMessages();

+            if (faultyMessages != null) {

+                for (int i = 0; i < faultyMessages.size(); i++) {

+                    AxisMessage faultyMessage = (AxisMessage) faultyMessages

+                            .get(i);

+                    OMElement fault = fac.createOMElement(FAULT_LOCAL_NAME,

+                            wsdl);

+                    addExtensionElement(fac, fault, SOAP_BODY, SOAP_USE, use,

+                            null, targetNamespace, soap);

+                    fault.addAttribute(ATTRIBUTE_NAME, faultyMessage.getName(),

+                            null);

+                    // TODO adding policies for fault messages

+                    operation.addChild(fault);

+                    writeSoapHeaders(faultyMessage, fac, fault, soap);

+                }

+            }

+        }

+

+    }

+

+    /**

+     * Generate the bindings

+     */

+    private void generateSOAP12Binding(OMFactory fac, OMElement defintions)

+            throws Exception {

+        OMElement binding = fac.createOMElement(BINDING_LOCAL_NAME, wsdl);

+        defintions.addChild(binding);

+        binding.addAttribute(ATTRIBUTE_NAME, axisService.getName()

+                + SOAP12BINDING_NAME_SUFFIX, null);

+        binding.addAttribute("type", tns.getPrefix() + ":"

+                + axisService.getName() + PORT_TYPE_SUFFIX, null);

+

+        addPolicyAsExtElement(PolicyInclude.AXIS_SERVICE_POLICY, axisService

+                .getPolicyInclude(), binding, fac);

+        addPolicyAsExtElement(PolicyInclude.BINDING_POLICY, axisService

+                .getPolicyInclude(), binding, fac);

+

+        // Adding ext elements

+        addExtensionElement(fac, binding, BINDING_LOCAL_NAME, TRANSPORT,

+                TRANSPORT_URI, STYLE, style, soap12);

+

+        // Add WS-Addressing UsingAddressing element if appropriate

+        // SHOULD be on the binding element per the specification

+        if (axisService.getWSAddressingFlag().equals(

+                AddressingConstants.ADDRESSING_OPTIONAL)) {

+            OMNamespace wsawNamespace = fac.createOMNamespace(

+                    AddressingConstants.Final.WSAW_NAMESPACE, "wsaw");

+            addExtensionElement(fac, binding,

+                    AddressingConstants.USING_ADDRESSING,

+                    DEFAULT_WSDL_NAMESPACE_PREFIX + ":required", "true",

+                    wsawNamespace);

+        } else if (axisService.getWSAddressingFlag().equals(

+                AddressingConstants.ADDRESSING_REQUIRED)) {

+            OMNamespace wsawNamespace = fac.createOMNamespace(

+                    AddressingConstants.Final.WSAW_NAMESPACE, "wsaw");

+            addExtensionElement(fac, binding,

+                    AddressingConstants.USING_ADDRESSING,

+                    DEFAULT_WSDL_NAMESPACE_PREFIX + ":required", "true",

+                    wsawNamespace);

+        }

+

+        for (Iterator operations = axisService.getOperations(); operations.hasNext();) {

+            AxisOperation axisOperation = (AxisOperation) operations.next();

+            if (axisOperation.isControlOperation() || axisOperation.getName() == null) {

+                continue;

+            }

+            String opeartionName = axisOperation.getName().getLocalPart();

+            OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,

+                    wsdl);

+            binding.addChild(operation);

+            String soapAction = axisOperation.getInputAction();

+            if (soapAction == null) {

+                soapAction = "";

+            }

+            addExtensionElement(fac, operation, OPERATION_LOCAL_NAME,

+                    SOAP_ACTION, soapAction, STYLE, style, soap12);

+

+            addPolicyAsExtElement(PolicyInclude.BINDING_OPERATION_POLICY,

+                    axisOperation.getPolicyInclude(), operation, fac);

+            addPolicyAsExtElement(PolicyInclude.AXIS_OPERATION_POLICY,

+                    axisOperation.getPolicyInclude(), operation, fac);

+

+            String MEP = axisOperation.getMessageExchangePattern();

+

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage inaxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+                if (inaxisMessage != null) {

+                    operation.addAttribute(ATTRIBUTE_NAME, opeartionName, null);

+                    OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME,

+                            wsdl);

+                    addExtensionElement(fac, input, SOAP_BODY, SOAP_USE, use,

+                            null, targetNamespace, soap12);

+                    addPolicyAsExtElement(PolicyInclude.BINDING_INPUT_POLICY,

+                            inaxisMessage.getPolicyInclude(), input, fac);

+                    operation.addChild(input);

+                    writeSoapHeaders(inaxisMessage, fac, input, soap12);

+                }

+            }

+

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage outAxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+                if (outAxisMessage != null) {

+                    OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME,

+                            wsdl);

+                    addExtensionElement(fac, output, SOAP_BODY, SOAP_USE, use,

+                            null, targetNamespace, soap12);

+                    addPolicyAsExtElement(PolicyInclude.BINDING_OUTPUT_POLICY,

+                            outAxisMessage.getPolicyInclude(), output, fac);

+                    operation.addChild(output);

+                    writeSoapHeaders(outAxisMessage, fac, output, soap12);

+                }

+            }

+

+            // generate fault Messages

+            ArrayList faultyMessages = axisOperation.getFaultMessages();

+            if (faultyMessages != null) {

+                for (int i = 0; i < faultyMessages.size(); i++) {

+                    AxisMessage faultyMessage = (AxisMessage) faultyMessages

+                            .get(i);

+                    OMElement fault = fac.createOMElement(FAULT_LOCAL_NAME,

+                            wsdl);

+                    addExtensionElement(fac, fault, FAULT_LOCAL_NAME, SOAP_USE, use,

+                                        ATTRIBUTE_NAME, faultyMessage.getName(), soap12);

+                    fault.addAttribute(ATTRIBUTE_NAME, faultyMessage.getName(),

+                            null);

+                    // add policies for fault messages

+                    operation.addChild(fault);

+                    writeSoapHeaders(faultyMessage, fac, fault, soap12);

+                }

+            }

+        }

+    }

+

+    private void generatePostBinding(OMFactory fac, OMElement defintions)

+            throws Exception {

+        OMElement binding = fac.createOMElement(BINDING_LOCAL_NAME, wsdl);

+        defintions.addChild(binding);

+        binding.addAttribute(ATTRIBUTE_NAME, axisService.getName()

+                + HTTP_BINDING, null);

+        binding.addAttribute("type", tns.getPrefix() + ":"

+                + axisService.getName() + PORT_TYPE_SUFFIX, null);

+

+        // Adding ext elements

+        OMElement httpBinding = fac.createOMElement("binding", http);

+        binding.addChild(httpBinding);

+        httpBinding.addAttribute("verb", "POST", null);

+

+

+        for (Iterator operations = axisService.getOperations(); operations.hasNext();) {

+            AxisOperation axisOperation = (AxisOperation) operations.next();

+            if (axisOperation.isControlOperation() || axisOperation.getName() == null) {

+                continue;

+            }

+            String opeartionName = axisOperation.getName().getLocalPart();

+            OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,

+                    wsdl);

+            binding.addChild(operation);

+

+            OMElement httpOperation = fac.createOMElement("operation", http);

+            operation.addChild(httpOperation);

+            httpOperation.addAttribute("location", axisOperation.getName()

+                    .getLocalPart(), null);

+

+            String MEP = axisOperation.getMessageExchangePattern();

+

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage inaxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+                if (inaxisMessage != null) {

+                    operation.addAttribute(ATTRIBUTE_NAME, opeartionName, null);

+                    OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME,

+                            wsdl);

+                    OMElement inputelement = fac.createOMElement("content",

+                            mime);

+                    input.addChild(inputelement);

+                    inputelement.addAttribute("type", "text/xml", null);

+                    operation.addChild(input);

+                }

+            }

+

+            if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY

+                    .equals(MEP)

+                    || WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT

+                    .equals(MEP)) {

+                AxisMessage outAxisMessage = axisOperation

+                        .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+                if (outAxisMessage != null) {

+                    OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME,

+                            wsdl);

+                    OMElement outElement = fac.createOMElement("content", mime);

+                    outElement.addChild(outElement);

+                    outElement.addAttribute("type", "text/xml", null);

+                    output.addChild(outElement);

+                    operation.addChild(output);

+                }

+            }

+        }

+    }

+

+    private void writeSoapHeaders(AxisMessage inaxisMessage, OMFactory fac,

+                                  OMElement input, OMNamespace soapNameSpace) throws Exception {

+        ArrayList extElementList;

+        extElementList = inaxisMessage.getSoapHeaders();

+        if (extElementList != null) {

+            Iterator elements = extElementList.iterator();

+            while (elements.hasNext()) {

+                SOAPHeaderMessage soapheader = (SOAPHeaderMessage) elements

+                        .next();

+                addSOAPHeader(fac, input, soapheader, soapNameSpace);

+            }

+        }

+    }

+

+    private void addExtensionElement(OMFactory fac, OMElement element,

+                                     String name, String att1Name, String att1Value, String att2Name,

+                                     String att2Value, OMNamespace soapNameSpace) {

+        OMElement soapbinding = fac.createOMElement(name, soapNameSpace);

+        element.addChild(soapbinding);

+        soapbinding.addAttribute(att1Name, att1Value, null);

+        if (att2Name != null) {

+            soapbinding.addAttribute(att2Name, att2Value, null);

+        }

+    }

+

+    private void addExtensionElement(OMFactory fac, OMElement element,

+                                     String name, String att1Name, String att1Value,

+                                     OMNamespace soapNameSpace) {

+        OMElement extElement = fac.createOMElement(name, soapNameSpace);

+        element.addChild(extElement);

+        extElement.addAttribute(att1Name, att1Value, null);

+    }

+

+    private void setDefinitionElement(OMElement defintion) {

+        this.definition = defintion;

+    }

+

+    private void addSOAPHeader(OMFactory fac, OMElement element,

+                               SOAPHeaderMessage header, OMNamespace soapNameSpace) {

+        OMElement extElement = fac.createOMElement("header", soapNameSpace);

+        element.addChild(extElement);

+        String use = header.getUse();

+        if (use != null) {

+            extElement.addAttribute("use", use, null);

+        }

+        if (header.part() != null) {

+            extElement.addAttribute("part", header.part(), null);

+        }

+        if (header.getMessage() != null) {

+            extElement.addAttribute("message", getPrefix(targetNamespace) + ":"

+                    + header.getMessage().getLocalPart(), null);

+        }

+    }

+

+    private String getPrefix(String targetNameSpace) {

+        Map map = axisService.getNameSpacesMap();

+        Iterator keys = map.keySet().iterator();

+        while (keys.hasNext()) {

+            String key = (String) keys.next();

+            if (map.get(key).equals(targetNameSpace)) {

+                return key;

+            }

+        }

+        return null;

+    }

+

+    private void addWSAWActionAttribute(OMElement element, String action) {

+        if (action == null || action.length() == 0) {

+            return;

+        }

+        OMNamespace namespace = element.declareNamespace(

+                AddressingConstants.Final.WSAW_NAMESPACE, "wsaw");

+        element.addAttribute("Action", action, namespace);

+    }

+

+    private void addPolicyAsExtElement(int type, PolicyInclude policyInclude,

+                                       OMElement element, OMFactory factory) throws Exception {

+        ArrayList elementList = policyInclude.getPolicyElements(type);

+

+        for (Iterator iterator = elementList.iterator(); iterator.hasNext();) {

+            Object policyElement = iterator.next();

+

+            if (policyElement instanceof Policy) {

+                element.addChild(PolicyUtil.getPolicyComponentAsOMElement(

+                        (PolicyComponent) policyElement, serializer));

+

+            } else if (policyElement instanceof PolicyReference) {

+                element

+                        .addChild(PolicyUtil

+                                .getPolicyComponentAsOMElement((PolicyComponent) policyElement));

+

+                PolicyRegistry reg = policyInclude.getPolicyRegistry();

+                String key = ((PolicyReference) policyElement).getURI();

+

+                if (key.startsWith("#")) {

+                    key = key.substring(key.indexOf("#") + 1);

+                }

+

+                Policy p = reg.lookup(key);

+

+                if (p == null) {

+                    throw new Exception("Policy not found for uri : " + key);

+                }

+

+                addPolicyToDefinitionElement(key, p);

+            }

+        }

+    }

+

+    private void addPolicyAsExtAttribute(int type, PolicyInclude policyInclude,

+                                         OMElement element, OMFactory factory) throws Exception {

+

+        ArrayList elementList = policyInclude.getPolicyElements(type);

+        ArrayList policyURIs = new ArrayList();

+

+        for (Iterator iterator = elementList.iterator(); iterator.hasNext();) {

+            Object policyElement = iterator.next();

+            String key;

+

+            if (policyElement instanceof Policy) {

+                Policy p = (Policy) policyElement;

+

+                if (p.getId() != null) {

+                    key = "#" + p.getId();

+                } else if (p.getName() != null) {

+                    key = p.getName();

+                } else {

+                    throw new RuntimeException(

+                            "Can't add the Policy as an extensibility attribute since it doesn't have a id or a name attribute");

+                }

+

+                policyURIs.add(key);

+                addPolicyToDefinitionElement(key, p);

+

+            } else {

+                String uri = ((PolicyReference) policyElement).getURI();

+                PolicyRegistry registry = policyInclude.getPolicyRegistry();

+

+                if (uri.startsWith("#")) {

+                    key = uri.substring(uri.indexOf('#') + 1);

+                } else {

+                    key = uri;

+                }

+

+                Policy p = registry.lookup(key);

+

+                if (p == null) {

+                    throw new RuntimeException("Cannot resolve " + uri

+                            + " to a Policy");

+                }

+                addPolicyToDefinitionElement(key, p);

+            }

+        }

+

+        if (!policyURIs.isEmpty()) {

+            String value = null;

+

+            /*

+             * We need to create a String that is like 'uri1 uri2 .." to set as

+             * the value of the wsp:PolicyURIs attribute.

+             */

+            for (Iterator iterator = policyURIs.iterator(); iterator.hasNext();) {

+                String uri = (String) iterator.next();

+                value = (value == null) ? uri : " " + uri;

+            }

+

+            OMNamespace ns = factory.createOMNamespace(

+                    org.apache.neethi.Constants.URI_POLICY_NS,

+                    org.apache.neethi.Constants.ATTR_WSP);

+            OMAttribute URIs = factory.createOMAttribute("PolicyURIs", ns,

+                    value);

+            element.addAttribute(URIs);

+        }

+    }

+

+    private void addPoliciesToDefinitionElement(Iterator iterator,

+                                                OMElement definitionElement) throws Exception {

+        Policy policy;

+        OMElement policyElement;

+        OMNode firstChild;

+

+        for (; iterator.hasNext();) {

+            policy = (Policy) iterator.next();

+            policyElement = PolicyUtil.getPolicyComponentAsOMElement(policy,

+                    serializer);

+

+            firstChild = definition.getFirstOMChild();

+

+            if (firstChild != null) {

+                firstChild.insertSiblingBefore(policyElement);

+            } else {

+                definitionElement.addChild(policyElement);

+            }

+        }

+    }

+

+    private void addPolicyToDefinitionElement(String key, Policy policy) {

+        policiesInDefinitions.put(key, policy);

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL2.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL2.java
new file mode 100644
index 0000000..857fbaa
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL2.java
@@ -0,0 +1,326 @@
+package org.apache.axis2.description;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axis2.namespace.Constants;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.ws.commons.schema.XmlSchema;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamReader;

+import java.io.ByteArrayInputStream;

+import java.io.StringWriter;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.Map;

+

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class AxisService2WSDL2 implements WSDL2Constants {

+

+    private AxisService axisService;

+

+    private String[] url;

+    private OMNamespace wsoap;

+    private OMNamespace tns;

+

+

+    public AxisService2WSDL2(AxisService service, String[] serviceURL) {

+        this.axisService = service;

+        url = serviceURL;

+    }

+

+    public OMElement generateOM() throws Exception {

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        fac.createOMNamespace(WSDL_NAMESPACE,

+                DEFAULT_WSDL_NAMESPACE_PREFIX);

+        OMElement description = fac.createOMElement(DESCRIPTION, null);

+        Map nameSpaceMap = axisService.getNameSpacesMap();

+        Iterator keys = nameSpaceMap.keySet().iterator();

+        while (keys.hasNext()) {

+            String key = (String) keys.next();

+            if ("".equals(key)) {

+                description.declareDefaultNamespace((String) nameSpaceMap.get(key));

+            } else {

+                description.declareNamespace((String) nameSpaceMap.get(key), key);

+            }

+        }

+        wsoap = description.declareNamespace(URI_WSDL2_SOAP, SOAP_PREFIX);

+        description.declareNamespace(URI_WSDL2_SOAP_ENV, SOAP_ENV_PREFIX);

+        String prefix = getPrefix(axisService.getTargetNamespace());

+        if (prefix == null || "".equals(prefix)) {

+            prefix = DEFAULT_TARGET_NAMESPACE_PREFIX;

+        }

+        axisService.getNameSpacesMap().put(prefix,

+                axisService.getTargetNamespace());

+        tns = description.declareNamespace(axisService.getTargetNamespace(), prefix);

+

+        description.addAttribute("targetNamespace", axisService.getTargetNamespace(),

+                null);

+        //adding service document

+        if (axisService.getServiceDescription() != null) {

+            addDocumentation(description, fac, axisService.getServiceDescription());

+        }

+        OMElement wsdlTypes = fac.createOMElement("types", null);

+        description.addChild(wsdlTypes);

+        // populate the schema mappings

+        axisService.populateSchemaMappings();

+        ArrayList schemas = axisService.getSchema();

+        for (int i = 0; i < schemas.size(); i++) {

+            StringWriter writer = new StringWriter();

+            XmlSchema schema = axisService.getSchema(i);

+

+            if (!Constants.URI_2001_SCHEMA_XSD.equals(schema.getTargetNamespace())) {

+                schema.write(writer);

+                String schemaString = writer.toString();

+

+                if (!"".equals(schemaString)) {

+                    XMLStreamReader xmlReader = StAXUtils

+                            .createXMLStreamReader(new ByteArrayInputStream(schemaString.getBytes()));

+

+                    StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac, xmlReader);

+                    wsdlTypes.addChild(staxOMBuilder.getDocumentElement());

+                }

+            }

+        }

+        //generating interface

+        generateInterface(description, fac);

+

+        //generating soap binding

+        generateSOAPBinding(description, fac);

+

+        //generating service element

+        generateServiceElement(description, fac);

+

+        return description;

+    }

+

+    /**

+     * To add documenttaion tag to any given element

+     *

+     * @param element

+     * @param factory

+     * @param docmentString

+     */

+    private void addDocumentation(OMElement element,

+                                  OMFactory factory,

+                                  String docmentString) {

+        OMElement documentation = factory.createOMElement(DOCUMENTATION, wsoap);

+        documentation.setText(docmentString);

+        element.addChild(documentation);

+

+    }

+

+    private void generateInterface(OMElement description, OMFactory fac) {

+        OMElement interfaceElement = fac.createOMElement(INTERFACE_LOCAL_NAME, null);

+        interfaceElement.addAttribute("name", axisService.getName() + INTERFACE_PREFIX, null);

+        generateInterfaceFaultElement(interfaceElement, fac);

+        generateInterfaceOperations(interfaceElement, fac);

+        description.addChild(interfaceElement);

+    }

+

+    private void generateInterfaceOperations(OMElement interfaceElement, OMFactory fac) {

+        Iterator operations = axisService.getOperations();

+        while (operations.hasNext()) {

+            AxisOperation axisOperation = (AxisOperation) operations.next();

+            if (!axisOperation.isControlOperation()) {

+

+                String operationName = axisOperation.getName().getLocalPart();

+                OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,

+                        null);

+                interfaceElement.addChild(operation);

+                operation.addAttribute(ATTRIBUTE_NAME, operationName, null);

+                String MEP = axisOperation.getMessageExchangePattern();

+                operation.addAttribute(ATTRIBUTE_NAME_PATTERN, getUpdatedMEP(MEP), null);

+                //TODO need to add : style="http://www.w3.org/2006/01/wsdl/style/iri"

+                //TODO need to add : swsdlx:safe = "true"

+                if (WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT.equals(MEP)) {

+                    AxisMessage inaxisMessage = axisOperation

+                            .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+                    if (inaxisMessage != null) {

+                        OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME,

+                                null);

+                        input.addAttribute(MESSAGE_LABEL, WSDLConstants.MESSAGE_LABEL_IN_VALUE, null);

+                        operation.addChild(input);

+                        addMessageElementAtt(input, inaxisMessage);

+                    }

+                }

+

+                if (WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_ONLY.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(MEP)

+                        || WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT.equals(MEP)) {

+                    AxisMessage outAxisMessage = axisOperation

+                            .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+                    if (outAxisMessage != null) {

+                        OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME,

+                                null);

+                        operation.addChild(output);

+                        output.addAttribute(MESSAGE_LABEL, WSDLConstants.MESSAGE_LABEL_OUT_VALUE, null);

+                        addMessageElementAtt(output, outAxisMessage);

+                    }

+                }

+                addInterfaceOperationFault(operation, fac, axisOperation);

+            }

+        }

+    }

+

+    private void addMessageElementAtt(OMElement messageElement, AxisMessage message) {

+        QName elementQName = message.getElementQName();

+        String attValue = elementQName.getPrefix() + ":" + elementQName.getLocalPart();

+        messageElement.addAttribute(ATTRIBUTE_ELEMENT, attValue, null);

+    }

+

+    private void addInterfaceOperationFault(OMElement operationElement, OMFactory fac,

+                                            AxisOperation operation) {

+

+        ArrayList faultMessages = operation.getFaultMessages();

+        for (Iterator iterator = faultMessages.iterator(); iterator.hasNext();) {

+            AxisMessage faultMessage = (AxisMessage) iterator.next();

+            if (faultMessage != null) {

+                QName elementQName = faultMessage.getElementQName();

+

+                String direction = faultMessage.getDirection();

+                OMElement faultElement = null;

+                if (MESSAGE_LABEL_OUT.equalsIgnoreCase(direction)) {

+                  faultElement = fac.createOMElement(OUT_FAULT, null, operationElement);

+                }else if (MESSAGE_LABEL_IN.equalsIgnoreCase(direction)) {

+                  faultElement = fac.createOMElement(IN_FAULT, null, operationElement);

+                } else {

+                    return;

+                }

+

+                faultElement.addAttribute(MESSAGE_LABEL, direction, null);

+                faultElement.addAttribute(ATTRIBUTE_REF, elementQName.getPrefix() + ":" + elementQName.getLocalPart(), null);

+

+            }

+        }

+

+

+    }

+

+    private void generateInterfaceFaultElement(OMElement interfaceElement, OMFactory fac) {

+//          axisService.get

+    }

+

+    private void generateSOAPBinding(OMElement description, OMFactory fac) {

+        OMElement bindingElement = fac.createOMElement(BINDING_LOCAL_NAME, null);

+        description.addChild(bindingElement);

+        bindingElement.addAttribute("name", axisService.getName() + SOAP_BINDING_PREFIX, null);

+        bindingElement.addAttribute(INTERFACE_LOCAL_NAME, tns.getPrefix() + ":" + axisService.getName() +

+                INTERFACE_PREFIX, null);

+        bindingElement.addAttribute("type", URI_WSDL2_SOAP, null);

+        bindingElement.addAttribute("protocol", HTTP_PROTOCAL, wsoap);

+

+        addBindingFaultElement(bindingElement, fac);

+        generateBindingOperations(bindingElement, fac);

+

+    }

+

+    private void addBindingFaultElement(OMElement bindingElement, OMFactory fac) {

+        //TODO : need to implement this

+    }

+

+    private void generateBindingOperations(OMElement bindingElement, OMFactory fac) {

+        Iterator operations = axisService.getOperations();

+        while (operations.hasNext()) {

+            AxisOperation axisOperation = (AxisOperation) operations.next();

+            if (axisOperation.isControlOperation()) {

+                continue;

+            }

+            OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME, null);

+            bindingElement.addChild(operation);

+            String MEP = axisOperation.getMessageExchangePattern();

+            operation.addAttribute("ref", tns.getPrefix() + ":" +

+                    axisOperation.getName().getLocalPart(), null);

+            //TODO : I am not sure whether I am doing the right thing here , need to read the spec

+            operation.addAttribute("mep", getMep(axisOperation.getMessageExchangePattern()), wsoap);

+        }

+    }

+

+    private void generateServiceElement(OMElement description, OMFactory fac) throws Exception {

+        OMElement serviceElement = fac.createOMElement(SERVICE_LOCAL_NAME, null);

+        serviceElement.addAttribute(ATTRIBUTE_NAME, axisService.getName() + "Service", null);

+        serviceElement.addAttribute(INTERFACE_LOCAL_NAME, tns.getPrefix()

+                + ":" + axisService.getName() + INTERFACE_PREFIX, null);

+

+        description.addChild(serviceElement);

+        generateEndpoints(serviceElement, fac);

+    }

+

+    private void generateEndpoints(OMElement serviceElement, OMFactory fac) throws Exception {

+        int count;

+        for (int i = 0; i < url.length; i++) {

+            String s = url[i];

+            OMElement endpoint = fac.createOMElement("endpoint", null);

+            URL url = new URL(s);

+            endpoint.addAttribute(ATTRIBUTE_NAME, axisService.getName()

+                    + "Endpoint" + "_" + url.getProtocol(), null);

+            //TODO : We have to have mechnishm to support multiple bindings

+            endpoint.addAttribute(BINDING_LOCAL_NAME, tns.getPrefix() + ":" +

+                    axisService.getName() + SOAP_BINDING_PREFIX, null);

+            endpoint.addAttribute("address", s, null);

+            serviceElement.addChild(endpoint);

+        }

+    }

+

+    /**

+     * To get the soap mep for given wsdl2.0 mep

+     */

+    private String getMep(String mep) {

+        //TODO : need to fix this , this wrong

+        return "http://www.w3.org/2003/05/soap/mep/soap-response";

+    }

+

+

+    /**

+     * This method is to convert http://www.w3.org/2004/08/wsdl/in-out to

+     * http://www.w3.org/2006/01/wsdl/in-out

+     *

+     * @param oldmepuri

+     */

+    public String getUpdatedMEP(String oldmepuri) {

+        //TODO : Need to improve this , what I am doing is wrong

+        return oldmepuri.replaceAll("2004/08", "2006/01");

+    }

+

+    private String getPrefix(String targetNameSpace) {

+        Map map = axisService.getNameSpacesMap();

+        Iterator keys = map.keySet().iterator();

+        while (keys.hasNext()) {

+            String key = (String) keys.next();

+            if (map.get(key).equals(targetNameSpace)) {

+                return key;

+            }

+        }

+        return null;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisServiceGroup.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisServiceGroup.java
new file mode 100644
index 0000000..e86e2ce
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/AxisServiceGroup.java
@@ -0,0 +1,232 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisEvent;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.modules.Module;
+import org.apache.axis2.util.Utils;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class AxisServiceGroup extends AxisDescription {
+
+    // to store module ref at deploy time parsing
+    private ArrayList modulesList = new ArrayList();
+
+    // to store service Group engagedModules name
+    private ArrayList engagedModules;
+
+    // to store modeule configuration info
+    private HashMap moduleConfigmap;
+
+    // class loader
+    private ClassLoader serviceGroupClassLoader;
+
+    // to keep name of the service group
+    private String serviceGroupName;
+
+    //to check whether user has put WWW dir or not
+    private boolean foundWebResources;
+
+    //To check whether server side service or client side service
+
+    /**
+     * Field services
+     */
+//    private HashMap services;
+    public AxisServiceGroup() {
+//        services = new HashMap();
+        moduleConfigmap = new HashMap();
+        engagedModules = new ArrayList();
+    }
+
+    public AxisServiceGroup(AxisConfiguration axisDescription) {
+        this();
+        setParent(axisDescription);
+    }
+
+    /**
+     * Adds module configuration , if there is moduleConfig tag in service.
+     *
+     * @param moduleConfiguration
+     */
+    public void addModuleConfig(ModuleConfiguration moduleConfiguration) {
+        if (moduleConfigmap == null) {
+            moduleConfigmap = new HashMap();
+        }
+
+        moduleConfigmap.put(moduleConfiguration.getModuleName(), moduleConfiguration);
+    }
+
+    public void addModuleref(QName moduleref) {
+        modulesList.add(moduleref);
+    }
+
+    public void addService(AxisService service) throws AxisFault {
+        service.setParent(this);
+
+        AxisConfiguration axisConfig = (AxisConfiguration) getParent();
+
+        if (axisConfig != null) {
+            Iterator modules = this.engagedModules.iterator();
+
+            while (modules.hasNext()) {
+                QName moduleName = (QName) modules.next();
+                AxisModule axisModule = axisConfig.getModule(moduleName);
+
+                if (axisModule != null) {
+                    Module moduleImpl = axisModule.getModule();
+                    if (moduleImpl != null) {
+                        // notyfying module for service engagement
+                        moduleImpl.engageNotify(service);
+                    }
+                    service.engageModule(axisModule, axisConfig);
+                } else {
+                    throw new AxisFault(Messages.getMessage(
+                            "modulenotavailble", moduleName.getLocalPart()));
+                }
+            }
+        }
+
+        service.setLastupdate();
+        addChild(service);
+    }
+
+    public void addToengagedModules(QName moduleName) {
+        engagedModules.add(moduleName);
+    }
+
+    public void removeFromEngageList(QName moduleName) {
+        engagedModules.remove(moduleName);
+    }
+
+    public void engageModule(AxisModule module, AxisConfiguration axisConfig) throws AxisFault {
+        QName moduleName = module.getName();
+        boolean isEngagable;
+        for (Iterator iterator = engagedModules.iterator(); iterator.hasNext();) {
+            QName modu = (QName) iterator.next();
+            isEngagable = Utils.checkVersion(moduleName, modu);
+            if (!isEngagable) {
+                return;
+            }
+        }
+        for (Iterator serviceIter = getServices(); serviceIter.hasNext();) {
+            AxisService axisService = (AxisService) serviceIter.next();
+            axisService.engageModule(module, axisConfig);
+        }
+        addToengagedModules(moduleName);
+    }
+
+    public void disengageModule(AxisModule module) throws AxisFault {
+        for (Iterator serviceIter = getServices(); serviceIter.hasNext();) {
+            AxisService axisService = (AxisService) serviceIter.next();
+            axisService.disengageModule(module);
+        }
+        removeFromEngageList(module.getName());
+    }
+
+    public void removeService(String name) throws AxisFault {
+        AxisService service = getService(name);
+
+        if (service != null) {
+            ((AxisConfiguration) getParent()).notifyObservers(AxisEvent.SERVICE_REMOVE, service);
+        }
+
+//        services.remove(name);
+        removeChild(name);
+    }
+
+    public AxisConfiguration getAxisDescription() {
+        return (AxisConfiguration) getParent();
+    }
+
+    public ArrayList getEngagedModules() {
+        return engagedModules;
+    }
+
+    public ModuleConfiguration getModuleConfig(QName moduleName) {
+        return (ModuleConfiguration) moduleConfigmap.get(moduleName);
+    }
+
+    public ArrayList getModuleRefs() {
+        return modulesList;
+    }
+
+    public AxisService getService(String name) throws AxisFault {
+//        return (AxisService) services.get(name);
+        return (AxisService) getChild(name);
+    }
+
+    public ClassLoader getServiceGroupClassLoader() {
+        return serviceGroupClassLoader;
+    }
+
+    public String getServiceGroupName() {
+        return serviceGroupName;
+    }
+
+    public Iterator getServices() {
+//        return services.values().iterator();
+        return getChildren();
+    }
+
+    public void setAxisDescription(AxisConfiguration axisDescription) {
+        setParent(axisDescription);
+    }
+
+    public void setServiceGroupClassLoader(ClassLoader serviceGroupClassLoader) {
+        this.serviceGroupClassLoader = serviceGroupClassLoader;
+    }
+
+    public void setServiceGroupName(String serviceGroupName) {
+        this.serviceGroupName = serviceGroupName;
+    }
+
+    public Object getKey() {
+        return this.serviceGroupName;
+    }
+
+    public boolean isEngaged(QName moduleName) {
+        AxisModule module = getAxisDescription().getModule(moduleName);
+        if (module == null) {
+            return false;
+        }
+        Iterator engagedModuleItr = engagedModules.iterator();
+        while (engagedModuleItr.hasNext()) {
+            QName axisModule = (QName) engagedModuleItr.next();
+            if (axisModule.getLocalPart().equals(module.getName().getLocalPart())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public boolean isFoundWebResources() {
+        return foundWebResources;
+    }
+
+    public void setFoundWebResources(boolean foundWebResources) {
+        this.foundWebResources = foundWebResources;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ClientUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ClientUtils.java
new file mode 100644
index 0000000..8a83fd3
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ClientUtils.java
@@ -0,0 +1,116 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.i18n.Messages;
+
+import javax.xml.namespace.QName;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+/**
+ * Utility methods for various clients to use.
+ */
+public class ClientUtils {
+
+    public static synchronized TransportOutDescription inferOutTransport(AxisConfiguration ac,
+                                                                         EndpointReference epr,
+                                                                         MessageContext msgctx) throws AxisFault {
+        String transportURI = (String) msgctx.getProperty(Constants.Configuration.TRANSPORT_URL);
+        if (transportURI != null && !"".equals(transportURI)) {
+            int index = transportURI.indexOf(':');
+            String transport = (index > 0) ? transportURI.substring(0, index) : null;
+            if (transport != null) {
+                return ac.getTransportOut(new QName(transport));
+            } else {
+                throw new AxisFault(Messages.getMessage("cannotInferTransport", transportURI));
+            }
+        } else {
+            if (msgctx.getOptions().getTransportOut() != null) {
+                if (msgctx.getOptions().getTransportOut().getSender() == null) {
+                    throw new AxisFault("Incomplete transport sender: missing sender!");
+                }
+                return msgctx.getOptions().getTransportOut();
+            }
+            if (epr == null || (epr.getAddress() == null)) {
+                throw new AxisFault(Messages.getMessage("cannotInferTransportNoAddr"));
+            }
+            String uri = epr.getAddress();
+            int index = uri.indexOf(':');
+            String transport = (index > 0) ? uri.substring(0, index) : null;
+            if (transport != null) {
+                return ac.getTransportOut(new QName(transport));
+            } else {
+                throw new AxisFault(Messages.getMessage("cannotInferTransport", uri));
+            }
+        }
+    }
+
+    public static synchronized TransportInDescription inferInTransport(AxisConfiguration ac,
+                                                                       Options options,
+                                                                       MessageContext msgCtxt) throws AxisFault {
+        String listenerTransportProtocol = options.getTransportInProtocol();
+        if (listenerTransportProtocol == null) {
+            EndpointReference replyTo = msgCtxt.getReplyTo();
+            if (replyTo != null) {
+                try {
+                    URI uri = new URI(replyTo.getAddress());
+                    listenerTransportProtocol = uri.getScheme();
+                } catch (URISyntaxException e) {
+                    //need to ignore
+                }
+            } else {
+                //assume listener transport as sender transport
+                listenerTransportProtocol = msgCtxt.getTransportOut().getName().getLocalPart();
+            }
+        }
+        TransportInDescription transportIn = null;
+        if (options.isUseSeparateListener()) {
+            if ((listenerTransportProtocol != null) && !"".equals(listenerTransportProtocol)) {
+                transportIn = ac.getTransportIn(new QName(listenerTransportProtocol));
+                ListenerManager listenerManager =
+                        msgCtxt.getConfigurationContext().getListenerManager();
+                if (transportIn == null) {
+                    // TODO : User should not be mandated to give an IN transport. If it is not given, we should
+                    // ask from the ListenerManager to give any available transport for this client.
+                    throw new AxisFault(Messages.getMessage("unknownTransport",
+                            listenerTransportProtocol));
+                }
+                if (!listenerManager.isListenerRunning(transportIn.getName().getLocalPart())) {
+                    listenerManager.addListener(transportIn, false);
+                }
+            }
+            if (msgCtxt.getAxisService() != null) {
+                if (!msgCtxt.isEngaged(new QName(Constants.MODULE_ADDRESSING))) {
+                    throw new AxisFault(Messages.getMessage("2channelNeedAddressing"));
+                }
+            } else {
+                if (!ac.isEngaged(new QName(Constants.MODULE_ADDRESSING))) {
+                    throw new AxisFault(Messages.getMessage("2channelNeedAddressing"));
+                }
+            }
+        }
+        return transportIn;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/DescriptionConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/DescriptionConstants.java
new file mode 100644
index 0000000..8a492f0
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/DescriptionConstants.java
@@ -0,0 +1,97 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+public interface DescriptionConstants {
+
+    /**
+     * Field EXECUTION_CHAIN_KEY
+     */
+    public static final String EXECUTION_CHAIN_KEY = "EXECUTION_CHAIN_KEY";
+
+    /**
+     * Field EXECUTION_OUT_CHAIN_KEY
+     */
+    public static final String EXECUTION_OUT_CHAIN_KEY = "EXECUTION_OUT_CHAIN_KEY";
+
+    /**
+     * Field EXECUTION_FAULT_CHAIN_KEY
+     */
+    public static final String EXECUTION_FAULT_CHAIN_KEY = "EXECUTION_FAULT_CHAIN_KEY";
+
+    /**
+     * Field MODULEREF_KEY
+     */
+    public static final String MODULEREF_KEY = "MODULEREF_KEY";
+
+    /**
+     * Field OPERATION_KEY
+     */
+    public static final String OPERATION_KEY = "OPERATION_KEY";
+
+    /**
+     * Field MESSAGE_RECEIVER_KEY
+     */
+    public static final String MESSAGE_RECEIVER_KEY = "PROVIDER_KEY";
+
+    /**
+     * Field CONTEXTPATH_KEY
+     */
+    public static final String CONTEXTPATH_KEY = "CONTEXTPATH_KEY";
+
+    /**
+     * Field CLASSLOADER_KEY
+     */
+    public static final String CLASSLOADER_KEY = "CLASSLOADER_KEY";
+
+    /**
+     * Field STYLE_KEY
+     */
+    public static final String STYLE_KEY = "STYLE_KEY";
+
+    /**
+     * Field SERVICE_CLASS_NAME
+     */
+    public static final String SERVICE_CLASS_NAME = "SERVICE_CLASS_NAME";
+
+    /**
+     * Field PHASES_KEY
+     */
+    public static final String PHASES_KEY = "PHASES_KEY";
+
+    /**
+     * Field PARAMETER_KEY
+     */
+    public static final String PARAMETER_KEY = "PARAMETER_KEY";
+    public static final String OUT_FAULTFLOW_KEY = "OUT_FAULTFLOW_KEY";
+
+    /**
+     * Field OUTFLOW_KEY
+     */
+    public static final String OUTFLOW_KEY = "OUTFLOW_KEY";
+
+    /**
+     * Field IN_FAULTFLOW_KEY
+     */
+    public static final String IN_FAULTFLOW_KEY = "IN_FAULTFLOW_KEY";
+
+    /**
+     * Field INFLOW_KEY
+     */
+    public static final String INFLOW_KEY = "INFLOW_KEY";
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/Flow.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/Flow.java
new file mode 100644
index 0000000..2971195
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/Flow.java
@@ -0,0 +1,67 @@
+/*

+* Copyright 2004,2005 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.axis2.description;

+

+import java.util.ArrayList;

+import java.util.List;

+

+/**

+ * Class FlowImpl

+ */

+public class Flow  {

+

+    /**

+     * Field list

+     */

+    protected final List list;

+

+    /**

+     * Constructor FlowImpl

+     */

+    public Flow() {

+        list = new ArrayList();

+    }

+

+    /**

+     * Method addHandler.

+     *

+     * @param handler

+     */

+    public void addHandler(HandlerDescription handler) {

+        list.add(handler);

+    }

+

+    /**

+     * Method getHandler.

+     *

+     * @param index

+     * @return Returns HandlerDescription.

+     */

+    public HandlerDescription getHandler(int index) {

+        return (HandlerDescription) list.get(index);

+    }

+

+    /**

+     * Method getHandlerCount.

+     *

+     * @return Returns int.

+     */

+    public int getHandlerCount() {

+        return list.size();

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/FlowInclude.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/FlowInclude.java
new file mode 100644
index 0000000..8da7b53
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/FlowInclude.java
@@ -0,0 +1,75 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+/**
+ * Interface FlowInclude
+ */
+public interface FlowInclude {
+
+    /**
+     * Method getFaultInFlow.
+     *
+     * @return Returns Flow.
+     */
+    public Flow getFaultInFlow();
+
+    public Flow getFaultOutFlow();
+
+    /**
+     * Method getInFlow.
+     *
+     * @return Returns Flow.
+     */
+    public Flow getInFlow();
+
+    /**
+     * Method getOutFlow.
+     *
+     * @return Returns Flow.
+     */
+    public Flow getOutFlow();
+
+    /**
+     * Method setFaultInFlow.
+     *
+     * @param faultFlow
+     */
+    public void setFaultInFlow(Flow faultFlow);
+
+    /**
+     * Method setFaultOutFlow.
+     *
+     * @param faultFlow
+     */
+    public void setFaultOutFlow(Flow faultFlow);
+
+    /**
+     * Method setInFlow.
+     *
+     * @param inFlow
+     */
+    public void setInFlow(Flow inFlow);
+
+    /**
+     * Method setOutFlow.
+     *
+     * @param outFlow
+     */
+    public void setOutFlow(Flow outFlow);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/FlowIncludeImpl.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/FlowIncludeImpl.java
new file mode 100644
index 0000000..7dc6e2c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/FlowIncludeImpl.java
@@ -0,0 +1,102 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+/**
+ * Class FlowIncludeImpl
+ */
+public class FlowIncludeImpl implements FlowInclude {
+
+    /**
+     * Field fault
+     */
+    private Flow In_fault;
+    private Flow Out_fault;
+
+    /**
+     * Field in
+     */
+    private Flow in;
+
+    /**
+     * Field out
+     */
+    private Flow out;
+
+    /**
+     * Method getFaultInFlow.
+     *
+     * @return Returns Flow.
+     */
+    public Flow getFaultInFlow() {
+        return In_fault;
+    }
+
+    public Flow getFaultOutFlow() {
+        return this.Out_fault;
+    }
+
+    /**
+     * Method getInFlow.
+     *
+     * @return Returns Flow.
+     */
+    public Flow getInFlow() {
+        return in;
+    }
+
+    /**
+     * Method getOutFlow. 
+     *
+     * @return Returns Flow.
+     */
+    public Flow getOutFlow() {
+        return out;
+    }
+
+    /**
+     * Method setFaultInFlow.
+     *
+     * @param flow
+     */
+    public void setFaultInFlow(Flow flow) {
+        this.In_fault = flow;
+    }
+
+    public void setFaultOutFlow(Flow faultFlow) {
+        this.Out_fault = faultFlow;
+    }
+
+    /**
+     * Method setInFlow.
+     *
+     * @param flow
+     */
+    public void setInFlow(Flow flow) {
+        this.in = flow;
+    }
+
+    /**
+     * Method setOutFlow.
+     *
+     * @param flow
+     */
+    public void setOutFlow(Flow flow) {
+        this.out = flow;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/HandlerDescription.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/HandlerDescription.java
new file mode 100644
index 0000000..c39a93e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/HandlerDescription.java
@@ -0,0 +1,198 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.i18n.Messages;
+
+import java.util.ArrayList;
+
+/**
+ * Represents the deployment information about the handler
+ */
+public class HandlerDescription implements ParameterInclude {
+
+    /**
+     * Field className
+     */
+    private String className;
+
+    /**
+     * Field handler
+     */
+    private Handler handler;
+
+    /**
+     * Field name
+     */
+    private String name;
+
+    /**
+     * Field parameterInclude
+     */
+    private final ParameterInclude parameterInclude;
+    private ParameterInclude parent;
+
+    /**
+     * Field rules
+     */
+    private PhaseRule rules;
+
+    /**
+     * Constructor HandlerDescription.
+     */
+    public HandlerDescription() {
+        this.parameterInclude = new ParameterIncludeImpl();
+        this.rules = new PhaseRule();
+    }
+
+    /**
+     * Constructor HandlerDescription.
+     *
+     * @param name
+     */
+    public HandlerDescription(String name) {
+        this();
+        this.name = name;
+    }
+
+    /**
+     * @param param
+     */
+    public void addParameter(Parameter param) throws AxisFault {
+        if (isParameterLocked(param.getName())) {
+            throw new AxisFault(Messages.getMessage("paramterlockedbyparent", param.getName()));
+        } else {
+            parameterInclude.addParameter(param);
+        }
+    }
+
+    public void removeParameter(Parameter param) throws AxisFault {
+        if (isParameterLocked(param.getName())) {
+            throw new AxisFault(Messages.getMessage("paramterlockedbyparent", param.getName()));
+        } else {
+            parameterInclude.removeParameter(param);
+        }
+    }
+
+    public void deserializeParameters(OMElement parameterElement) throws AxisFault {
+        this.parameterInclude.deserializeParameters(parameterElement);
+    }
+
+    /**
+     * Method getClassName.
+     *
+     * @return Returns String.
+     */
+    public String getClassName() {
+        return className;
+    }
+
+    /**
+     * @return Returns Handler.
+     */
+    public Handler getHandler() {
+        return handler;
+    }
+
+    /**
+     * @return Returns QName.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @param name
+     * @return Returns Parameter.
+     */
+    public Parameter getParameter(String name) {
+        Parameter parameter = parameterInclude.getParameter(name);
+        if (parameter == null && parent != null) {
+            return parent.getParameter(name);
+        } else {
+            return parameter;
+        }
+    }
+
+    public ArrayList getParameters() {
+        return parameterInclude.getParameters();
+    }
+
+    public ParameterInclude getParent() {
+        return parent;
+    }
+
+    /**
+     * Method getRules.
+     *
+     * @return Returns PhaseRule.
+     */
+    public PhaseRule getRules() {
+        return rules;
+    }
+
+    // to check whether the parameter is locked at any level
+    public boolean isParameterLocked(String parameterName) {
+        if (parent != null) {
+            if (parent.isParameterLocked(parameterName)) {
+                return true;
+            }
+        }
+
+        return parameterInclude.isParameterLocked(parameterName);
+    }
+
+    /**
+     * Method setClassName.
+     *
+     * @param className
+     */
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    /**
+     * @param handler
+     */
+    public void setHandler(Handler handler) {
+        this.handler = handler;
+    }
+
+    /**
+     * @param name
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setParent(ParameterInclude parent) {
+        this.parent = parent;
+    }
+
+    /**
+     * Method setRules.
+     *
+     * @param rules
+     */
+    public void setRules(PhaseRule rules) {
+        this.rules = rules;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/InOnlyAxisOperation.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/InOnlyAxisOperation.java
new file mode 100644
index 0000000..f7180d6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/InOnlyAxisOperation.java
@@ -0,0 +1,133 @@
+/*

+* Copyright 2004,2006 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.axis2.description;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.i18n.Messages;

+

+import javax.xml.namespace.QName;

+import java.util.ArrayList;

+import java.util.HashMap;

+public class InOnlyAxisOperation extends AxisOperation {

+    private AxisMessage inFaultMessage;

+//    private AxisMessage inMessage;

+    private AxisMessage outFaultMessage;

+

+    // this is just to store the chain , we don't use it

+    private ArrayList outPhase;

+

+    public InOnlyAxisOperation() {

+        super();

+        createMessage();

+        setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_IN_ONLY);

+    }

+

+    public InOnlyAxisOperation(QName name) {

+        super(name);

+        createMessage();

+        setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_IN_ONLY);

+    }

+

+    public void addMessage(AxisMessage message, String label) {

+        if (WSDLConstants.MESSAGE_LABEL_IN_VALUE.equals(label)) {

+//            inMessage = message;

+            addChild("inMessage", message);

+        } else {

+            throw new UnsupportedOperationException("Not yet implemented");

+        }

+    }

+

+    public void addMessageContext(MessageContext msgContext, OperationContext opContext)

+            throws AxisFault {

+        if (!opContext.isComplete()) {

+            opContext.getMessageContexts().put(MESSAGE_LABEL_IN_VALUE, msgContext);

+            opContext.setComplete(true);

+        } else {

+            throw new AxisFault(Messages.getMessage("mepcompleted"));

+        }

+    }

+

+    public void addFaultMessageContext(MessageContext msgContext, OperationContext opContext) throws AxisFault {

+        HashMap mep = opContext.getMessageContexts();

+        MessageContext faultMessageCtxt = (MessageContext) mep.get(MESSAGE_LABEL_FAULT_VALUE);

+        if (faultMessageCtxt != null) {

+            throw new AxisFault(Messages.getMessage("mepcompleted"));

+        } else {

+            mep.put(MESSAGE_LABEL_FAULT_VALUE, msgContext);

+            opContext.setComplete(true);

+            opContext.cleanup();

+        }

+    }

+

+    private void createMessage() {

+        AxisMessage inMessage = new AxisMessage();

+        inMessage.setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);

+        inMessage.setParent(this);

+

+        inFaultMessage = new AxisMessage();

+        inFaultMessage.setParent(this);

+

+        outFaultMessage = new AxisMessage();

+        outFaultMessage.setParent(this);

+

+        outPhase = new ArrayList();

+

+        addChild("inMessage", inMessage);

+    }

+

+    public AxisMessage getMessage(String label) {

+        if (WSDLConstants.MESSAGE_LABEL_IN_VALUE.equals(label)) {

+            return (AxisMessage) getChild("inMessage");

+        } else {

+            throw new UnsupportedOperationException(Messages.getMessage("invalidacess"));

+        }

+    }

+

+    public ArrayList getPhasesInFaultFlow() {

+        return inFaultMessage.getMessageFlow();

+    }

+

+    public ArrayList getPhasesOutFaultFlow() {

+        return outFaultMessage.getMessageFlow();

+    }

+

+    public ArrayList getPhasesOutFlow() {

+        return outPhase;

+    }

+

+    public ArrayList getRemainingPhasesInFlow() {

+        return ((AxisMessage) getChild("inMessage")).getMessageFlow();

+    }

+

+    public void setPhasesInFaultFlow(ArrayList list) {

+        inFaultMessage.setMessageFlow(list);

+    }

+

+    public void setPhasesOutFaultFlow(ArrayList list) {

+        outFaultMessage.setMessageFlow(list);

+    }

+

+    public void setPhasesOutFlow(ArrayList list) {

+        outPhase = list;

+    }

+

+    public void setRemainingPhasesInFlow(ArrayList list) {

+        ((AxisMessage) getChild("inMessage")).setMessageFlow(list);

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/InOutAxisOperation.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/InOutAxisOperation.java
new file mode 100644
index 0000000..f77a0c3
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/InOutAxisOperation.java
@@ -0,0 +1,158 @@
+/*

+* Copyright 2004,2006 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.axis2.description;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.i18n.Messages;

+

+import javax.xml.namespace.QName;

+import java.util.ArrayList;

+import java.util.HashMap;

+

+public class InOutAxisOperation extends AxisOperation {

+    private AxisMessage inFaultMessage;

+//    private AxisMessage inMessage;

+    private AxisMessage outFaultMessage;

+//    private AxisMessage outMessage;

+

+    public InOutAxisOperation() {

+        super();

+        createMessages();

+    }

+

+    public InOutAxisOperation(QName name) {

+        super(name);

+        createMessages();

+    }

+

+    public void addMessage(AxisMessage message, String label) {

+        if (WSDLConstants.MESSAGE_LABEL_OUT_VALUE.equals(label)) {

+            addChild("outMessage", message);

+        } else if (WSDLConstants.MESSAGE_LABEL_IN_VALUE.equals(label)) {

+            addChild("inMessage", message);

+        } else if (WSDLConstants.MESSAGE_LABEL_FAULT_VALUE.equals(label)) {

+            addChild("faultMessage", message);

+        } else {

+            throw new UnsupportedOperationException("Not yet implemented");

+        }

+    }

+

+    public void addMessageContext(MessageContext msgContext, OperationContext opContext)

+            throws AxisFault {

+        HashMap mep = opContext.getMessageContexts();

+        MessageContext inMsgContext = (MessageContext) mep.get(MESSAGE_LABEL_IN_VALUE);

+        MessageContext outmsgContext = (MessageContext) mep.get(MESSAGE_LABEL_OUT_VALUE);

+

+        if ((inMsgContext != null) && (outmsgContext != null)) {

+            throw new AxisFault(Messages.getMessage("mepcompleted"));

+        }

+

+        if (inMsgContext == null) {

+            mep.put(MESSAGE_LABEL_IN_VALUE, msgContext);

+        } else {

+            mep.put(MESSAGE_LABEL_OUT_VALUE, msgContext);

+            opContext.setComplete(true);

+            opContext.cleanup();

+        }

+    }

+

+    public void addFaultMessageContext(MessageContext msgContext, OperationContext opContext) throws AxisFault {

+        HashMap mep = opContext.getMessageContexts();

+        MessageContext faultMessageCtxt = (MessageContext) mep.get(MESSAGE_LABEL_FAULT_VALUE);

+

+        if (faultMessageCtxt != null) {

+             throw new AxisFault(Messages.getMessage("mepcompleted"));

+        } else {

+            mep.put(MESSAGE_LABEL_FAULT_VALUE, msgContext);

+            opContext.setComplete(true);

+            opContext.cleanup();

+        }

+

+    }

+

+    private void createMessages() {

+//        inMessage = new AxisMessage();

+//        inMessage.setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);

+//        inMessage.setParent(this);

+

+        AxisMessage inMessage = new AxisMessage();

+        inMessage.setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);

+        inMessage.setParent(this);

+        addChild("inMessage", inMessage);

+

+        inFaultMessage = new AxisMessage();

+        inFaultMessage.setParent(this);

+

+        outFaultMessage = new AxisMessage();

+        outFaultMessage.setParent(this);

+

+//        outMessage = new AxisMessage();

+//        outMessage.setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT);

+//        outMessage.setParent(this);

+

+        AxisMessage outMessage = new AxisMessage();

+        outMessage.setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT);

+        outMessage.setParent(this);

+        addChild("outMessage", outMessage);

+

+

+    }

+

+    public AxisMessage getMessage(String label) {

+        if (WSDLConstants.MESSAGE_LABEL_OUT_VALUE.equals(label)) {

+            return (AxisMessage) getChild("outMessage");

+        } else if (WSDLConstants.MESSAGE_LABEL_IN_VALUE.equals(label)) {

+            return (AxisMessage) getChild("inMessage");

+        } else {

+            throw new UnsupportedOperationException("Not yet implemented");

+        }

+    }

+

+    public ArrayList getPhasesInFaultFlow() {

+        return inFaultMessage.getMessageFlow();

+    }

+

+    public ArrayList getPhasesOutFaultFlow() {

+        return outFaultMessage.getMessageFlow();

+    }

+

+    public ArrayList getPhasesOutFlow() {

+        return ((AxisMessage) getChild("outMessage")).getMessageFlow();

+    }

+

+    public ArrayList getRemainingPhasesInFlow() {

+        return ((AxisMessage) getChild("inMessage")).getMessageFlow();

+    }

+

+    public void setPhasesInFaultFlow(ArrayList list) {

+        inFaultMessage.setMessageFlow(list);

+    }

+

+    public void setPhasesOutFaultFlow(ArrayList list) {

+        outFaultMessage.setMessageFlow(list);

+    }

+

+    public void setPhasesOutFlow(ArrayList list) {

+        ((AxisMessage) getChild("outMessage")).setMessageFlow(list);

+    }

+

+    public void setRemainingPhasesInFlow(ArrayList list) {

+        ((AxisMessage) getChild("inMessage")).setMessageFlow(list);

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ModuleConfiguration.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ModuleConfiguration.java
new file mode 100644
index 0000000..359c153
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ModuleConfiguration.java
@@ -0,0 +1,97 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.i18n.Messages;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+/**
+ * This is to store deployment time data , described by
+ * <moduleConfig module="modulename">
+ * <parameter> ....</parameter>
+ * </moduleConfig>
+ * <p/>
+ * Right now this just keeps stores the set of parameters
+ */
+public class ModuleConfiguration implements ParameterInclude {
+    private QName moduleName;
+    private ParameterInclude parameterInclude;
+
+    // to keep the pointer to its parent , only to access parameters
+    private ParameterInclude parent;
+
+    public ModuleConfiguration(QName moduleName, ParameterInclude parent) {
+        this.moduleName = moduleName;
+        this.parent = parent;
+        parameterInclude = new ParameterIncludeImpl();
+    }
+
+    public void addParameter(Parameter param) throws AxisFault {
+        if (isParameterLocked(param.getName())) {
+            throw new AxisFault(Messages.getMessage("paramterlockedbyparent", param.getName()));
+        } else {
+            parameterInclude.addParameter(param);
+        }
+    }
+
+    public void removeParameter(Parameter param) throws AxisFault {
+        if (isParameterLocked(param.getName())) {
+            throw new AxisFault(Messages.getMessage("paramterlockedbyparent", param.getName()));
+        } else {
+            parameterInclude.removeParameter(param);
+        }
+    }
+
+    public void deserializeParameters(OMElement parameterElement) throws AxisFault {
+        this.parameterInclude.deserializeParameters(parameterElement);
+    }
+
+    public QName getModuleName() {
+        return moduleName;
+    }
+
+    public Parameter getParameter(String name) {
+        return parameterInclude.getParameter(name);
+    }
+
+    public ArrayList getParameters() {
+        return parameterInclude.getParameters();
+    }
+
+    public boolean isParameterLocked(String parameterName) {
+
+        // checking the locked value of parent
+        boolean loscked = false;
+
+        if (parent != null) {
+            loscked = parent.isParameterLocked(parameterName);
+        }
+
+        if (loscked) {
+            return true;
+        } else {
+            Parameter parameter = getParameter(parameterName);
+
+            return (parameter != null) && parameter.isLocked();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
new file mode 100644
index 0000000..f833f87
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
@@ -0,0 +1,476 @@
+/*

+* Copyright 2004,2006 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.axis2.description;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFault;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.OperationClient;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.async.AsyncResult;

+import org.apache.axis2.client.async.Callback;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.engine.AxisEngine;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.transport.TransportUtils;

+import org.apache.axis2.util.CallbackReceiver;

+import org.apache.axis2.util.UUIDGenerator;

+import org.apache.axis2.util.TargetResolver;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+import javax.xml.namespace.QName;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+

+public class OutInAxisOperation extends InOutAxisOperation {

+    public OutInAxisOperation() {

+        super();

+        setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_OUT_IN);

+    }

+

+    public OutInAxisOperation(QName name) {

+        super(name);

+        setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_OUT_IN);

+    }

+

+    public void addMessageContext(MessageContext msgContext,

+                                  OperationContext opContext) throws AxisFault {

+        HashMap mep = opContext.getMessageContexts();

+        MessageContext immsgContext = (MessageContext) mep

+                .get(MESSAGE_LABEL_IN_VALUE);

+        MessageContext outmsgContext = (MessageContext) mep

+                .get(MESSAGE_LABEL_OUT_VALUE);

+

+        if ((immsgContext != null) && (outmsgContext != null)) {

+            throw new AxisFault(Messages.getMessage("mepcompleted"));

+        }

+

+        if (outmsgContext == null) {

+            mep.put(MESSAGE_LABEL_OUT_VALUE, msgContext);

+        } else {

+            mep.put(MESSAGE_LABEL_IN_VALUE, msgContext);

+            opContext.setComplete(true);

+        }

+    }

+

+    /**

+     * Returns a MEP client for an Out-IN operation. This client can be used to

+     * interact with a server which is offering an In-Out operation. To use the

+     * client, you must call addMessageContext() with a message context and then

+     * call execute() to execute the client.

+     *

+     * @param sc      The service context for this client to live within. Cannot be

+     *                null.

+     * @param options Options to use as defaults for this client. If any options are

+     *                set specifically on the client then those override options

+     *                here.

+     */

+    public OperationClient createClient(ServiceContext sc, Options options) {

+        return new OutInAxisOperationClient(this, sc, options);

+    }

+}

+

+/**

+ * MEP client for moi.

+ */

+class OutInAxisOperationClient implements OperationClient {

+

+    private AxisOperation axisOp;

+

+    protected ServiceContext sc;

+

+    protected Options options;

+

+    protected OperationContext oc;

+

+    protected Callback callback;

+

+    /*

+     * indicates whether the MEP execution has completed (and hence ready for

+     * resetting)

+     */

+    boolean completed;

+

+    OutInAxisOperationClient(OutInAxisOperation axisOp, ServiceContext sc,

+                             Options options) {

+        this.axisOp = axisOp;

+        this.sc = sc;

+        this.options = options;

+        this.completed = false;

+        this.oc = new OperationContext(axisOp);

+        this.oc.setParent(this.sc);

+    }

+

+    /**

+     * Sets the options that should be used for this particular client. This

+     * resets the entire set of options to use the new options - so you'd lose

+     * any option cascading that may have been set up.

+     *

+     * @param options the options

+     */

+    public void setOptions(Options options) {

+        this.options = options;

+    }

+

+    /**

+     * Returns the options used by this client. If you want to set a single

+     * option, then the right way is to call getOptions() and set specific

+     * options.

+     *

+     * @return Returns the options, which will never be null.

+     */

+    public Options getOptions() {

+        return options;

+    }

+

+    /**

+     * Adds message context to operation context , so that it will handle the

+     * logic correctly if the OperationContext is null then new one will be

+     * created , and Operation Context will become null when some one calls reset().

+     *

+     * @param mc

+     * @throws AxisFault

+     */

+    public void addMessageContext(MessageContext mc) throws AxisFault {

+        mc.setServiceContext(sc);

+        if (mc.getMessageID() == null) {

+            setMessageID(mc);

+        }

+        axisOp.registerOperationContext(mc, oc);

+    }

+

+    /**

+     * Returns the message context for a given message label.

+     *

+     * @param messageLabel :

+     *                     label of the message and that can be either "Out" or "In" and

+     *                     nothing else

+     * @return Returns MessageContext.

+     * @throws AxisFault

+     */

+    public MessageContext getMessageContext(String messageLabel)

+            throws AxisFault {

+        return oc.getMessageContext(messageLabel);

+    }

+

+    public void setCallback(Callback callback) {

+        this.callback = callback;

+    }

+

+    /**

+     * Create a message ID for the given message context if needed. If user gives an option with

+     * MessageID then just copy that into MessageContext , and with that there can be multiple

+     * message with same MessageID unless user call setOption for each invocation.

+     * <p/>

+     * If user want to give message ID then the better way is to set the message ID in the option and

+     * call setOption for each invocation then the right thing will happen.

+     * <p/>

+     * If user does not give a message ID then the new one will be created and set that into Message

+     * Context.

+     *

+     * @param mc the message context whose id is to be set

+     */

+    private void setMessageID(MessageContext mc) {

+        // now its the time to put the parameters set by the user in to the

+        // correct places and to the

+        // if there is no message id still, set a new one.

+        String messageId = options.getMessageId();

+        if (messageId == null || "".equals(messageId)) {

+            messageId = UUIDGenerator.getUUID();

+        }

+        mc.setMessageID(messageId);

+    }

+

+

+    /**

+     * Executes the MEP. What this does depends on the specific MEP client. The

+     * basic idea is to have the MEP client execute and do something with the

+     * messages that have been added to it so far. For example, if its an Out-In

+     * MEP, then if the Out message has been set, then executing the client asks

+     * it to send the message and get the In message, possibly using a different

+     * thread.

+     *

+     * @param block Indicates whether execution should block or return ASAP. What

+     *              block means is of course a function of the specific MEP

+     *              client. IGNORED BY THIS MEP CLIENT.

+     * @throws AxisFault if something goes wrong during the execution of the MEP.

+     */

+    public void execute(boolean block) throws AxisFault {

+        if (completed) {

+            throw new AxisFault(Messages.getMessage("mepiscomplted"));

+        }

+        ConfigurationContext cc = sc.getConfigurationContext();

+

+        // copy interesting info from options to message context.

+        MessageContext mc = oc

+                .getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);

+        if (mc == null) {

+            throw new AxisFault(Messages.getMessage("outmsgctxnull"));

+        }

+        //setting AxisMessage

+        mc.setAxisMessage(axisOp.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));

+        if (mc.getSoapAction() == null || "".equals(mc.getSoapAction())) {

+            mc.setSoapAction(options.getAction());

+        }

+        mc.setOptions(options);

+

+        // do Target Resolution

+        TargetResolver targetResolver = cc.getAxisConfiguration().getTargetResolverChain();

+        if(targetResolver != null){

+            targetResolver.resolveTarget(mc);

+        }

+

+        // if the transport to use for sending is not specified, try to find it

+        // from the URL

+        TransportOutDescription transportOut = options.getTransportOut();

+        if (transportOut == null) {

+            EndpointReference toEPR = (options.getTo() != null) ? options

+                    .getTo() : mc.getTo();

+            transportOut = ClientUtils.inferOutTransport(cc

+                    .getAxisConfiguration(), toEPR, mc);

+        }

+        mc.setTransportOut(transportOut);

+

+

+        if (options.getTransportIn() == null && mc.getTransportIn() == null) {

+            mc.setTransportIn(ClientUtils.inferInTransport(cc

+                    .getAxisConfiguration(), options, mc));

+        } else if (mc.getTransportIn() == null) {

+            mc.setTransportIn(options.getTransportIn());

+        }

+

+        addReferenceParameters(mc);

+        if (options.isUseSeparateListener()) {

+            CallbackReceiver callbackReceiver = (CallbackReceiver) axisOp

+                    .getMessageReceiver();

+            callbackReceiver.addCallback(mc.getMessageID(), callback);

+            

+            /**

+             * If USE_CUSTOM_LISTENER is set to 'true' the replyTo value will not be replaced and Axis2 will not

+             * start its internal listner. Some other enntity (e.g. a module) should take care of obtaining the 

+             * response message.

+             */

+            Boolean useCustomListener = (Boolean) options.getProperty(Constants.Configuration.USE_CUSTOM_LISTENER);

+            if (useCustomListener==null || !useCustomListener.booleanValue()) {

+

+                EndpointReference replyToFromTransport = mc.getConfigurationContext().getListenerManager().

+                getEPRforService(sc.getAxisService().getName(), axisOp.getName().getLocalPart(), mc

+                        .getTransportIn().getName()

+                        .getLocalPart());

+                

+                if (mc.getReplyTo() == null) {

+                    mc.setReplyTo(replyToFromTransport);

+                } else {

+                    mc.getReplyTo().setAddress(replyToFromTransport.getAddress());

+                }

+            }

+

+

+            

+            //if we don't do this , this guy will wait till it gets HTTP 202 in the HTTP case

+            mc.setProperty(MessageContext.TRANSPORT_NON_BLOCKING, Boolean.TRUE);

+            AxisEngine engine = new AxisEngine(cc);

+            mc.getConfigurationContext().registerOperationContext(mc.getMessageID(), oc);

+            engine.send(mc);

+        } else {

+            if (block) {

+                // Send the SOAP Message and receive a response

+                MessageContext response = send(mc);

+                // check for a fault and return the result

+                if (response != null) {

+                    SOAPEnvelope resEnvelope = response.getEnvelope();

+                    if (resEnvelope.getBody().hasFault()) {

+                        SOAPFault soapFault = resEnvelope.getBody().getFault();

+

+                        //we need to call engine.receiveFault

+                        AxisEngine engine = new AxisEngine(mc.getConfigurationContext());

+                        engine.receiveFault(response);

+                        if (options.isExceptionToBeThrownOnSOAPFault()) {

+                            // does the SOAPFault has a detail element for Excpetion

+

+                            throw new AxisFault(soapFault.getCode(), soapFault.getReason(),

+                                    soapFault.getNode(), soapFault.getRole(), soapFault.getDetail());

+

+                        }

+                    }

+                }

+                completed = true;

+            } else {

+                sc.getConfigurationContext().getThreadPool().execute(

+                        new NonBlockingInvocationWorker(callback, mc));

+            }

+        }

+    }

+

+    private void addReferenceParameters(MessageContext msgctx) {

+        EndpointReference to = msgctx.getTo();

+        if (options.isManageSession()) {

+            EndpointReference tepr = sc.getTargetEPR();

+            if (tepr != null) {

+                Map map = tepr.getAllReferenceParameters();

+                if (map != null) {

+                    Iterator valuse = map.values().iterator();

+                    while (valuse.hasNext()) {

+                        Object refparaelement = valuse.next();

+                        if (refparaelement instanceof OMElement) {

+                            to.addReferenceParameter((OMElement) refparaelement);

+                        }

+                    }

+                }

+            }

+        }

+    }

+

+    /**

+     * @param msgctx

+     * @return Returns MessageContext.

+     * @throws AxisFault Sends the message using a two way transport and waits for a response

+     */

+    protected MessageContext send(MessageContext msgctx) throws AxisFault {

+

+        AxisEngine engine = new AxisEngine(msgctx.getConfigurationContext());

+

+        // create the responseMessageContext

+        MessageContext responseMessageContext = new MessageContext();

+

+        // This is a hack - Needs to change

+        responseMessageContext.setOptions(options);

+

+

+        responseMessageContext.setServerSide(false);

+        responseMessageContext.setMessageID(msgctx.getMessageID());

+        addMessageContext(responseMessageContext);

+        responseMessageContext.setServiceContext(msgctx.getServiceContext());

+        responseMessageContext.setAxisMessage(

+                axisOp.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE));

+

+        //sending the message

+        engine.send(msgctx);

+        responseMessageContext.setDoingREST(msgctx.isDoingREST());

+

+        responseMessageContext.setProperty(MessageContext.TRANSPORT_IN, msgctx

+                .getProperty(MessageContext.TRANSPORT_IN));

+        responseMessageContext.setTransportIn(msgctx.getTransportIn());

+        responseMessageContext.setTransportOut(msgctx.getTransportOut());

+

+        // Options object reused above so soapAction needs to be removed so

+        // that soapAction+wsa:Action on response don't conflict

+        responseMessageContext.setSoapAction("");

+

+        if (responseMessageContext.getEnvelope() == null) {

+            // If request is REST we assume the responseMessageContext is REST, so

+            // set the variable

+

+            SOAPEnvelope resenvelope = TransportUtils.createSOAPMessage(

+                    responseMessageContext, msgctx.getEnvelope().getNamespace()

+                    .getNamespaceURI());

+            if (resenvelope != null) {

+                responseMessageContext.setEnvelope(resenvelope);

+                engine = new AxisEngine(msgctx.getConfigurationContext());

+                engine.receive(responseMessageContext);

+                if (responseMessageContext.getReplyTo() != null) {

+                    sc.setTargetEPR(responseMessageContext.getReplyTo());

+                }

+            } else {

+                throw new AxisFault(Messages

+                        .getMessage("blockingInvocationExpectsResponse"));

+            }

+        }

+        return responseMessageContext;

+    }

+

+    /**

+     * Resets the MEP client to a clean status after the MEP has completed. This

+     * is how you can reuse a MEP client. NOTE: this does not reset the options;

+     * only the internal state so the client can be used again.

+     *

+     * @throws AxisFault if reset is called before the MEP client has completed an

+     *                   interaction.

+     */

+    public void reset() throws AxisFault {

+        if (!completed) {

+            throw new AxisFault(Messages.getMessage("cannotreset"));

+        }

+        oc = null;

+        completed = false;

+    }

+

+    public void complete(MessageContext msgCtxt) throws AxisFault {

+        TransportOutDescription trsout = msgCtxt.getTransportOut();

+        if (trsout != null) {

+            trsout.getSender().cleanup(msgCtxt);

+        }

+    }

+

+    public OperationContext getOperationContext() {

+        return oc;

+    }

+

+    /**

+     * This class is the workhorse for a non-blocking invocation that uses a two

+     * way transport.

+     */

+    private class NonBlockingInvocationWorker implements Runnable {

+        private Callback callback;

+

+        private MessageContext msgctx;

+

+        public NonBlockingInvocationWorker(Callback callback,

+                                           MessageContext msgctx) {

+            this.callback = callback;

+            this.msgctx = msgctx;

+        }

+

+        public void run() {

+            try {

+                // send the request and wait for response

+                MessageContext response = send(msgctx);

+                // call the callback

+                if (response != null) {

+                    SOAPEnvelope resenvelope = response.getEnvelope();

+                    SOAPBody body = resenvelope.getBody();

+                    if (body.hasFault()) {

+                        Exception ex = body.getFault().getException();

+

+                        if (ex != null) {

+                            callback.onError(ex);

+                        } else {

+                            callback.onError(new Exception(body.getFault()

+                                    .getReason().getText()));

+                        }

+                    } else {

+                        AsyncResult asyncResult = new AsyncResult(response);

+

+                        callback.onComplete(asyncResult);

+                    }

+                }

+

+            } catch (Exception e) {

+				callback.onError(e);

+			} finally {

+				callback.setComplete(true);

+			}

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
new file mode 100644
index 0000000..0850ef8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
@@ -0,0 +1,389 @@
+/*

+* Copyright 2004,2006 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.axis2.description;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.OperationClient;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.async.Callback;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.engine.AxisEngine;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.util.UUIDGenerator;

+import org.apache.axis2.util.TargetResolver;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+import javax.xml.namespace.QName;

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+

+public class OutOnlyAxisOperation extends AxisOperation {

+

+    private AxisMessage inFaultMessage;

+

+    // just to keep the inflow , there won't be any usage

+    private ArrayList inPhases;

+

+    private AxisMessage outFaultMessage;

+

+    private AxisMessage outMessage;

+

+    public OutOnlyAxisOperation() {

+        super();

+        createMessage();

+        setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_OUT_ONLY);

+    }

+

+    public OutOnlyAxisOperation(QName name) {

+        super(name);

+        createMessage();

+        setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_OUT_ONLY);

+    }

+

+    public void addMessage(AxisMessage message, String label) {

+        if (WSDLConstants.MESSAGE_LABEL_OUT_VALUE.equals(label)) {

+            outMessage = message;

+        } else {

+            throw new UnsupportedOperationException("Not yet implemented");

+        }

+    }

+

+    public void addMessageContext(MessageContext msgContext,

+                                  OperationContext opContext) throws AxisFault {

+        if (!opContext.isComplete()) {

+            opContext.getMessageContexts().put(MESSAGE_LABEL_OUT_VALUE,

+                    msgContext);

+            opContext.setComplete(true);

+        } else {

+            throw new AxisFault(Messages.getMessage("mepcompleted"));

+        }

+    }

+

+    public void addFaultMessageContext(MessageContext msgContext, OperationContext opContext) throws AxisFault {

+        HashMap mep = opContext.getMessageContexts();

+        MessageContext faultMessageCtxt = (MessageContext) mep.get(MESSAGE_LABEL_FAULT_VALUE);

+

+        if (faultMessageCtxt != null) {

+            throw new AxisFault(Messages.getMessage("mepcompleted"));

+        } else {

+            mep.put(MESSAGE_LABEL_FAULT_VALUE, msgContext);

+            opContext.setComplete(true);

+            opContext.cleanup();

+        }

+    }

+

+    private void createMessage() {

+        outMessage = new AxisMessage();

+        outMessage.setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT);

+        inFaultMessage = new AxisMessage();

+        outFaultMessage = new AxisMessage();

+        inPhases = new ArrayList();

+    }

+

+    public AxisMessage getMessage(String label) {

+        if (WSDLConstants.MESSAGE_LABEL_OUT_VALUE.equals(label)) {

+            return outMessage;

+        } else {

+            throw new UnsupportedOperationException("Not yet implemented");

+        }

+    }

+

+    public ArrayList getPhasesInFaultFlow() {

+        return inFaultMessage.getMessageFlow();

+    }

+

+    public ArrayList getPhasesOutFaultFlow() {

+        return outFaultMessage.getMessageFlow();

+    }

+

+    public ArrayList getPhasesOutFlow() {

+        return outMessage.getMessageFlow();

+    }

+

+    public ArrayList getRemainingPhasesInFlow() {

+        return inPhases;

+    }

+

+    public void setPhasesInFaultFlow(ArrayList list) {

+        inFaultMessage.setMessageFlow(list);

+    }

+

+    public void setPhasesOutFaultFlow(ArrayList list) {

+        outFaultMessage.setMessageFlow(list);

+    }

+

+    public void setPhasesOutFlow(ArrayList list) {

+        outMessage.setMessageFlow(list);

+    }

+

+    public void setRemainingPhasesInFlow(ArrayList list) {

+        inPhases = list;

+    }

+

+    /**

+     * Returns a MEP client for an Out-only operation. This client can be used to

+     * interact with a server which is offering an In-only operation. To use the

+     * client, you must call addMessageContext() with a message context and then

+     * call execute() to execute the client. Note that the execute method's

+     * block parameter is ignored by this client and also the setMessageReceiver

+     * method cannot be used.

+     *

+     * @param sc      The service context for this client to live within. Cannot be

+     *                null.

+     * @param options Options to use as defaults for this client. If any options are

+     *                set specifically on the client then those override options

+     *                here.

+     */

+    public OperationClient createClient(ServiceContext sc, Options options) {

+        return new OutOnlyAxisOperationClient(this, sc, options);

+    }

+}

+

+/**

+ * MEP client for moi.

+ */

+class OutOnlyAxisOperationClient implements OperationClient {

+    OutOnlyAxisOperation axisOp;

+

+    ServiceContext sc;

+

+    Options options;

+

+    MessageContext mc;

+

+    OperationContext oc;

+

+    /*

+    * indicates whether the MEP execution has completed (and hence ready for

+    * resetting)

+    */

+    boolean completed;

+

+    OutOnlyAxisOperationClient(OutOnlyAxisOperation axisOp, ServiceContext sc,

+                               Options options) {

+        this.axisOp = axisOp;

+        this.sc = sc;

+        this.options = options;

+        this.completed = false;

+        oc = new OperationContext(axisOp, sc);

+    }

+

+    /**

+     * Sets the options that should be used for this particular client. This

+     * resets the entire set of options to use the new options - so you'd lose

+     * any option cascading that may have been set up.

+     *

+     * @param options the options

+     */

+    public void setOptions(Options options) {

+        this.options = options;

+    }

+

+    /**

+     * Returns the options used by this client. If you want to set a single

+     * option, then the right way is to do getOptions() and set specific

+     * options.

+     *

+     * @return Returns the options, which will never be null.

+     */

+    public Options getOptions() {

+        return options;

+    }

+

+    /**

+     * Adds a message context to the client for processing. This method must not

+     * process the message - it only records it in the MEP client. Processing

+     * only occurs when execute() is called.

+     *

+     * @param mc the message context

+     * @throws AxisFault if this is called inappropriately.

+     */

+    public void addMessageContext(MessageContext mc) throws AxisFault {

+        if (this.mc != null) {

+            throw new AxisFault(Messages.getMessage("cannotaddmsgctx"));

+        }

+        this.mc = mc;

+        if (mc.getMessageID() == null) {

+            setMessageID(mc);

+        }

+        mc.setServiceContext(sc);

+        axisOp.registerOperationContext(mc, oc);

+        this.completed = false;

+    }

+

+    /**

+     * Returns a message from the client - will return null if the requested

+     * message is not available.

+     *

+     * @param messageLabel the message label of the desired message context

+     * @return Returns the desired message context or null if its not available.

+     * @throws AxisFault if the message label is invalid

+     */

+    public MessageContext getMessageContext(String messageLabel)

+            throws AxisFault {

+        if (messageLabel.equals(WSDLConstants.MESSAGE_LABEL_OUT_VALUE)) {

+            return mc;

+        }

+        throw new AxisFault(Messages.getMessage("unknownMsgLabel", messageLabel));

+    }

+

+    /**

+     * Sets the message receiver to be executed when a message comes into the MEP

+     * and the MEP is executed. This is the way the MEP client provides

+     * notification that a message has been received by it. Exactly when its

+     * executed and under what conditions is a function of the specific MEP

+     * client.

+     */

+    public void setCallback(Callback callback) {

+        throw new UnsupportedOperationException(

+                "This feature is not supported by this MEP");

+    }

+

+    /**

+     * Create a message ID for the given message context if needed. If user gives an option with

+     * MessageID then just copy that into MessageContext , and with that there can be multiple

+     * message with same MessageID unless user call setOption for each invocation.

+     * <p/>

+     * If user want to give message ID then the better way is to set the message ID in the option and

+     * call setOption for each invocation then the right thing will happen.

+     * <p/>

+     * If user does not give a message ID then the new one will be created and set that into Message

+     * Context.

+     *

+     * @param mc the message context whose id is to be set

+     */

+    private void setMessageID(MessageContext mc) {

+        // now its the time to put the parameters set by the user in to the

+        // correct places and to the

+        // if there is no message id still, set a new one.

+        String messageId = options.getMessageId();

+        if (messageId == null || "".equals(messageId)) {

+            messageId = UUIDGenerator.getUUID();

+        }

+        mc.setMessageID(messageId);

+    }

+

+    private void addReferenceParameters(MessageContext msgctx) {

+        EndpointReference to = msgctx.getTo();

+        if (options.isManageSession()) {

+            EndpointReference tepr = sc.getTargetEPR();

+            if (tepr != null) {

+                Map map = tepr.getAllReferenceParameters();

+                Iterator valuse = map.values().iterator();

+                while (valuse.hasNext()) {

+                    Object refparaelement = valuse.next();

+                    if (refparaelement instanceof OMElement) {

+                        to.addReferenceParameter((OMElement) refparaelement);

+                    }

+                }

+            }

+        }

+    }

+

+

+    /**

+     * Executes the MEP. What this does depends on the specific MEP client. The

+     * basic idea is to have the MEP client execute and do something with the

+     * messages that have been added to it so far. For example, if its an Out-In

+     * MEP, then if the Out message has been set, then executing the client asks

+     * it to send the message and get the In message, possibly using a different

+     * thread.

+     *

+     * @param block Indicates whether execution should block or return ASAP. What

+     *              block means is of course a function of the specific MEP

+     *              client. IGNORED BY THIS MEP CLIENT.

+     * @throws AxisFault if something goes wrong during the execution of the MEP.

+     */

+    public void execute(boolean block) throws AxisFault {

+        if (completed) {

+            throw new AxisFault(Messages.getMessage("mepiscomplted"));

+        }

+        ConfigurationContext cc = sc.getConfigurationContext();

+

+        // set options on the message context

+        if (mc.getSoapAction() == null || "".equals(mc.getSoapAction())) {

+            mc.setSoapAction(options.getAction());

+        }

+        mc.setOptions(options);

+        mc.setAxisMessage(axisOp.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));

+

+        // do Target Resolution

+        TargetResolver targetResolver = cc.getAxisConfiguration().getTargetResolverChain();

+        if(targetResolver != null){

+            targetResolver.resolveTarget(mc);

+        }

+

+        // setting message ID if it null

+        // if the transport to use for sending is not specified, try to find it

+        // from the URL

+        TransportOutDescription senderTransport = options.getTransportOut();

+        if (senderTransport == null) {

+            EndpointReference toEPR = (options.getTo() != null) ? options

+                    .getTo() : mc.getTo();

+            senderTransport = ClientUtils.inferOutTransport(cc

+                    .getAxisConfiguration(), toEPR, mc);

+        }

+        mc.setTransportOut(senderTransport);

+

+        // create the operation context for myself

+        OperationContext oc = new OperationContext(axisOp, sc);

+        oc.addMessageContext(mc);

+        addReferenceParameters(mc);

+        // ship it out

+        AxisEngine engine = new AxisEngine(cc);

+        if (!block) {

+            mc.setProperty(MessageContext.TRANSPORT_NON_BLOCKING, Boolean.TRUE);

+        }

+        engine.send(mc);

+        // all done

+        completed = true;

+    }

+

+    /**

+     * Resets the MEP client to a clean status after the MEP has completed. This

+     * is how you can reuse a MEP client. NOTE: this does not reset the options;

+     * only the internal state so the client can be used again.

+     *

+     * @throws AxisFault if reset is called before the MEP client has completed an

+     *                   interaction.

+     */

+    public void reset() throws AxisFault {

+        if (!completed) {

+            throw new AxisFault(Messages.getMessage("cannotreset"));

+        }

+        mc = null;

+        completed = false;

+    }

+

+    public void complete(MessageContext msgCtxt) throws AxisFault {

+        TransportOutDescription trsout = msgCtxt.getTransportOut();

+        if (trsout != null) {

+            trsout.getSender().cleanup(msgCtxt);

+        }

+    }

+

+    public OperationContext getOperationContext() {

+        return oc;

+    }

+

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/Parameter.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/Parameter.java
new file mode 100644
index 0000000..e87317b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/Parameter.java
@@ -0,0 +1,171 @@
+/*

+* Copyright 2004,2005 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.axis2.description;

+

+import org.apache.axiom.om.OMElement;

+

+/**

+ * Class ParameterImpl

+ */

+public class Parameter {

+

+    /**

+     * Field TEXT_PARAMETER

+     */

+    public static int TEXT_PARAMETER = 0;

+

+    /**

+     * Field OM_PARAMETER

+     */

+    public static int OM_PARAMETER = 1;

+

+    /**

+     * Field type

+     */

+    private int type = TEXT_PARAMETER;

+

+    /**

+     * Field locked

+     */

+    private boolean locked;

+

+    /**

+     * Field name

+     */

+    private String name;

+

+    /**

+     * to store the parameter element

+     * <parameter name="ServiceClass1" locked="false">

+     * org.apache.axis2.sample.echo.EchoImpl</parameter>

+     */

+    private OMElement parameterElement;

+

+    /**

+     * Field value

+     */

+    private Object value;

+

+    /**

+     * Constructor.

+     */

+    public Parameter() {

+    }

+

+    /**

+     * Constructor from name and value.

+     *

+     * @param name

+     * @param value

+     */

+    public Parameter(String name, Object value) {

+        this.name = name;

+        this.value = value;

+    }

+

+    /**

+     * Method getName.

+     *

+     * @return Returns String.

+     */

+    public String getName() {

+        return name;

+    }

+

+    public OMElement getParameterElement() {

+        return this.parameterElement;

+    }

+

+    /**

+     * Method getParameterType.

+     *

+     * @return Returns int.

+     */

+    public int getParameterType() {

+        return type;

+    }

+

+    /**

+     * Method getValue.

+     *

+     * @return Returns Object.

+     */

+    public Object getValue() {

+        return value;

+    }

+

+    /**

+     * Method isLocked.

+     *

+     * @return Returns boolean.

+     */

+    public boolean isLocked() {

+        return locked;

+    }

+

+    /**

+     * Method setLocked.

+     *

+     * @param value

+     */

+    public void setLocked(boolean value) {

+        locked = value;

+    }

+

+    /**

+     * Method setName.

+     *

+     * @param name

+     */

+    public void setName(String name) {

+        this.name = name;

+    }

+

+    public void setParameterElement(OMElement element) {

+        this.parameterElement = element;

+    }

+

+    public void setParameterType(int type) {

+        this.type = type;

+    }

+

+    /**

+     * Method setValue.

+     *

+     * @param value

+     */

+    public void setValue(Object value) {

+        this.value = value;

+    }

+

+    public String toString() {

+        return "Parameter : " + name + "=" + value;

+    }

+

+    public boolean equals(Object obj) {

+        if(this == obj){

+            return true;

+        }

+        if(obj instanceof Parameter){

+            return ((Parameter) obj).name.equals(name);

+        }

+        return false;

+    }

+

+    public int hashCode() {

+        return name.hashCode();

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ParameterInclude.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ParameterInclude.java
new file mode 100644
index 0000000..8d91809
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ParameterInclude.java
@@ -0,0 +1,60 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+
+import java.util.ArrayList;
+
+/**
+ * Interface ParameterInclude
+ */
+public interface ParameterInclude {
+
+    /**
+     * Method addParameter.
+     *
+     * @param param
+     */
+    public void addParameter(Parameter param) throws AxisFault;
+
+    public void removeParameter(Parameter param) throws AxisFault;
+
+    public void deserializeParameters(OMElement parameterElement) throws AxisFault;
+
+    /**
+     * Method getParameter.
+     *
+     * @param name
+     * @return Returns Parameter.
+     */
+    public Parameter getParameter(String name);
+
+    /**
+     * Gets all the parameters in a given description.
+     *
+     * @return Returns ArrayList.
+     */
+    ArrayList getParameters();
+
+    /**
+     * Checks whether the parameter is locked at any level.
+     */
+    boolean isParameterLocked(String parameterName);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ParameterIncludeImpl.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ParameterIncludeImpl.java
new file mode 100644
index 0000000..5d072f8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/ParameterIncludeImpl.java
@@ -0,0 +1,147 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.deployment.DeploymentConstants;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * Class ParameterIncludeImpl
+ */
+public class ParameterIncludeImpl implements ParameterInclude {
+
+    /**
+     * Field parmeters
+     */
+    protected final HashMap parameters;
+
+    /**
+     * Constructor ParameterIncludeImpl.
+     */
+    public ParameterIncludeImpl() {
+        parameters = new HashMap();
+    }
+
+    /**
+     * Method addParameter
+     *
+     * @param param
+     */
+    public void addParameter(Parameter param) {
+        if (param != null) {
+            parameters.put(param.getName(), param);
+        }
+    }
+
+    public void removeParameter(Parameter param) throws AxisFault {
+        parameters.remove(param.getName());
+    }
+
+    /**
+     * Since at runtime it parameters may be modified
+     * to get the original state this method can be used
+     *
+     * @param parameters <code>OMElement</code>
+     * @throws AxisFault
+     */
+    public void deserializeParameters(OMElement parameters) throws AxisFault {
+        Iterator iterator =
+                parameters.getChildrenWithName(new QName(DeploymentConstants.TAG_PARAMETER));
+
+        while (iterator.hasNext()) {
+
+            // this is to check whether some one has locked the parmeter at the top level
+            OMElement parameterElement = (OMElement) iterator.next();
+            Parameter parameter = new Parameter();
+
+            // setting parameterElement
+            parameter.setParameterElement(parameterElement);
+
+            // setting parameter Name
+            OMAttribute paraName =
+                    parameterElement.getAttribute(new QName(DeploymentConstants.ATTRIBUTE_NAME));
+
+            parameter.setName(paraName.getAttributeValue());
+
+            // setting parameter Value (the child element of the parameter)
+            OMElement paraValue = parameterElement.getFirstElement();
+
+            if (paraValue != null) {
+                parameter.setValue(parameterElement);
+                parameter.setParameterType(Parameter.OM_PARAMETER);
+            } else {
+                String paratextValue = parameterElement.getText();
+
+                parameter.setValue(paratextValue);
+                parameter.setParameterType(Parameter.TEXT_PARAMETER);
+            }
+
+            // setting locking attribute
+            OMAttribute paraLocked =
+                    parameterElement.getAttribute(new QName(DeploymentConstants.ATTRIBUTE_LOCKED));
+
+            if (paraLocked != null) {
+                String lockedValue = paraLocked.getAttributeValue();
+
+                if ("true".equals(lockedValue)) {
+                    parameter.setLocked(true);
+                } else {
+                    parameter.setLocked(false);
+                }
+            }
+
+            addParameter(parameter);
+        }
+    }
+
+    /**
+     * Method getParameter.
+     *
+     * @param name
+     * @return Returns parameter.
+     */
+    public Parameter getParameter(String name) {
+        return (Parameter) parameters.get(name);
+    }
+
+    public ArrayList getParameters() {
+        Collection col = parameters.values();
+        ArrayList para_list = new ArrayList();
+
+        for (Iterator iterator = col.iterator(); iterator.hasNext();) {
+            Parameter parameter = (Parameter) iterator.next();
+
+            para_list.add(parameter);
+        }
+
+        return para_list;
+    }
+
+    // to check whether the parameter is locked at any level
+    public boolean isParameterLocked(String parameterName) {
+        return false;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/PhaseRule.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/PhaseRule.java
new file mode 100644
index 0000000..224903b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/PhaseRule.java
@@ -0,0 +1,154 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+/**
+ * Class PhaseRule
+ */
+public class PhaseRule {
+
+    /**
+     * Field after
+     */
+    private String after;
+
+    /**
+     * Field before
+     */
+    private String before;
+
+    /**
+     * Field phaseFirst
+     */
+    private boolean phaseFirst;
+
+    /**
+     * Field phaseLast
+     */
+    private boolean phaseLast;
+
+    /**
+     * Field phaseName
+     */
+    private String phaseName;
+
+    /**
+     * Constructor PhaseRule.
+     */
+    public PhaseRule() {
+        this.before = "";
+        this.after = "";
+        this.phaseName = "";
+    }
+
+    public PhaseRule(String phaseName) {
+        this.before = "";
+        this.after = "";
+        this.phaseName = phaseName;
+    }
+
+    /**
+     * Method getAfter.
+     *
+     * @return Returns String.
+     */
+    public String getAfter() {
+        return after;
+    }
+
+    /**
+     * Method getBefore.
+     *
+     * @return Returns String.
+     */
+    public String getBefore() {
+        return before;
+    }
+
+    /**
+     * Method getPhaseName.
+     *
+     * @return Returns String.
+     */
+    public String getPhaseName() {
+        return phaseName;
+    }
+
+    /**
+     * Method isPhaseFirst.
+     *
+     * @return Returns boolean.
+     */
+    public boolean isPhaseFirst() {
+        return phaseFirst;
+    }
+
+    /**
+     * Method isPhaseLast.
+     *
+     * @return Returns boolean.
+     */
+    public boolean isPhaseLast() {
+        return phaseLast;
+    }
+
+    /**
+     * Method setAfter.
+     *
+     * @param after
+     */
+    public void setAfter(String after) {
+        this.after = after;
+    }
+
+    /**
+     * Method setBefore.
+     *
+     * @param before
+     */
+    public void setBefore(String before) {
+        this.before = before;
+    }
+
+    /**
+     * Method setPhaseFirst.
+     *
+     * @param phaseFirst
+     */
+    public void setPhaseFirst(boolean phaseFirst) {
+        this.phaseFirst = phaseFirst;
+    }
+
+    /**
+     * Method setPhaseLast.
+     *
+     * @param phaseLast
+     */
+    public void setPhaseLast(boolean phaseLast) {
+        this.phaseLast = phaseLast;
+    }
+
+    /**
+     * Method setPhaseName.
+     *
+     * @param phaseName
+     */
+    public void setPhaseName(String phaseName) {
+        this.phaseName = phaseName;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/PolicyInclude.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/PolicyInclude.java
new file mode 100644
index 0000000..5de0da5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/PolicyInclude.java
@@ -0,0 +1,299 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyReference;
+import org.apache.neethi.PolicyRegistry;
+import org.apache.neethi.PolicyRegistryImpl;
+
+public class PolicyInclude {
+
+	public static final int ANON_POLICY = 100;
+
+	public static final int AXIS_POLICY = 1;
+	
+	public static final int AXIS_MODULE_POLICY = 2;
+
+	public static final int AXIS_SERVICE_POLICY = 3;
+
+	public static final int AXIS_OPERATION_POLICY = 4;
+
+	public static final int AXIS_MESSAGE_POLICY = 5;
+
+	public static final int SERVICE_POLICY = 6;
+
+	public static final int PORT_POLICY = 7;
+
+	public static final int PORT_TYPE_POLICY = 8;
+
+	public static final int BINDING_POLICY = 9;
+
+	public static final int OPERATION_POLICY = 10;
+
+	public static final int BINDING_OPERATION_POLICY = 11;
+
+	public static final int INPUT_POLICY = 12;
+
+	public static final int OUTPUT_POLICY = 13;
+
+	public static final int BINDING_INPUT_POLICY = 14;
+
+	public static final int BINDING_OUTPUT_POLICY = 15;
+
+	public static final int MESSAGE_POLICY = 16;
+
+	private Policy policy = null;
+
+	private Policy effectivePolicy = null;
+	
+	private PolicyRegistry reg;
+
+	private AxisDescription description;
+	
+	// private ArrayList wrapperElements = new ArrayList();
+
+    private Hashtable wrapperElements = new Hashtable();
+
+	public PolicyInclude() {
+		reg = new PolicyRegistryImpl();
+	}
+    
+	public PolicyInclude(AxisDescription axisDescription) {
+		
+		if (axisDescription.getParent() != null) {
+			PolicyInclude parentPolicyInclude = axisDescription.getParent().getPolicyInclude();
+            reg = new PolicyRegistryImpl(parentPolicyInclude.getPolicyRegistry());
+		} else {
+		    reg = new PolicyRegistryImpl();
+        }
+        setDescription(axisDescription);
+	}
+
+	public void setPolicyRegistry(PolicyRegistry reg) {
+		this.reg = reg;
+	}
+	
+	public PolicyRegistry getPolicyRegistry() {
+		return reg;
+	}
+
+	public void setPolicy(Policy policy) {
+		wrapperElements.clear();
+        
+        if (policy.getName() == null && policy.getId() == null) {
+            policy.setId(UUIDGenerator.getUUID());
+        }
+        
+        Wrapper wrapper = new Wrapper(PolicyInclude.ANON_POLICY, policy);
+        if (policy.getName() != null) {
+            wrapperElements.put(policy.getName(), wrapper);
+        } else {
+            wrapperElements.put(policy.getId(), wrapper);
+        }
+     }
+	
+	public void updatePolicy(Policy policy) {
+		String key;
+        
+        if ((key = policy.getName()) == null && (key = policy.getId()) == null) {
+            // TODO throw more meaningful exception ..
+            throw new RuntimeException("policy doesn't have a name or an id ");            
+        }
+		
+		Wrapper wrapper = (Wrapper) wrapperElements.get(key);
+		wrapper.value = policy;
+	}
+	
+	public void setEffectivePolicy(Policy effectivePolicy) {
+		this.effectivePolicy = effectivePolicy;
+	}
+	
+	public void setDescription(AxisDescription description) {
+		this.description = description;
+	}
+	
+	public AxisDescription getDescription() {
+		return description;
+	}
+	
+	private PolicyInclude getParent() {
+
+		if (description != null && description.getParent() != null) {
+			return description.getParent().getPolicyInclude();
+		}
+        
+		return null;
+	}
+
+	private void calculatePolicy() {
+
+		Policy result = null;
+		Iterator iterator = wrapperElements.values().iterator();
+
+		while (iterator.hasNext()) {
+			Object policyElement = ((Wrapper) iterator.next()).getValue();
+			Policy p;
+
+			if (policyElement instanceof PolicyReference) {
+                PolicyRegistry r = getPolicyRegistry();
+				p = (Policy) ((PolicyReference) policyElement)
+						.normalize(getPolicyRegistry(), false);
+
+			} else if (policyElement instanceof Policy) {
+				p = (Policy) policyElement;
+
+			} else {
+				// TODO AxisFault?
+				throw new RuntimeException();
+			}
+            
+            result = (result == null) ? (Policy) p : (Policy) result.merge(p);
+        }
+        
+		this.policy = result;
+	}
+
+	private void calculateEffectivePolicy() {
+		Policy result ;
+		
+		if (getParent() != null) {
+			Policy parentPolicy = getParent().getEffectivePolicy();
+			
+			if (parentPolicy == null) {
+				result = getPolicy();
+				
+			} else {
+				
+				if (getPolicy() != null) {
+					result = (Policy) parentPolicy.merge(getPolicy());
+					
+				} else {
+					result = parentPolicy;
+				}
+			}
+			
+		} else {
+			result = getPolicy();
+		}
+		setEffectivePolicy(result);		
+	}
+	
+	public Policy getPolicy() {
+		calculatePolicy();
+		return policy;
+	}
+
+	public Policy getEffectivePolicy() {
+        calculateEffectivePolicy();		
+		return effectivePolicy;
+	}
+
+	public ArrayList getPolicyElements() {
+		ArrayList policyElementsList = new ArrayList();
+		Iterator policyElementIterator = wrapperElements.values().iterator();
+
+		while (policyElementIterator.hasNext()) {
+			policyElementsList
+					.add(((Wrapper) policyElementIterator.next()).getValue());
+		}
+		return policyElementsList;
+	}
+
+	public ArrayList getPolicyElements(int type) {
+		ArrayList policyElementList = new ArrayList();
+		Iterator wrapperElementIterator = wrapperElements.values().iterator();
+		Wrapper wrapper;
+
+		while (wrapperElementIterator.hasNext()) {
+			wrapper = (Wrapper) wrapperElementIterator.next();
+
+			if (wrapper.getType() == type) {
+				policyElementList.add(wrapper.getValue());
+			}
+		}
+		return policyElementList;
+	}
+
+	public void registerPolicy(String key, Policy policy) {
+		reg.register(key, policy);
+	}
+
+	public Policy getPolicy(String key) {
+		return reg.lookup(key);
+	}
+
+	public void addPolicyElement(int type, Policy policy) {
+        
+        String key;
+        
+        if ((key = policy.getName()) == null && (key = policy.getId()) == null) {
+            policy.setId(UUIDGenerator.getUUID());
+        }
+        
+        key = (policy.getName() != null) ? policy.getName() : policy.getId();
+        
+		Wrapper wrapper = new Wrapper(type, policy);
+		wrapperElements.put(key, wrapper);
+        reg.register(key, policy);        
+	}
+
+	public void addPolicyRefElement(int type, PolicyReference policyReference) {
+		Wrapper wrapper = new Wrapper(type, policyReference);
+		wrapperElements.put(policyReference.getURI(), wrapper);
+	}
+
+	class Wrapper {
+		private int type;
+		private Object value;
+		
+		Wrapper(int type, Object value) {
+			setType(type);
+			setValue(value);
+		}
+		
+		void setType(int type) {
+			this.type = type;
+		}
+		
+		int getType() {
+			return type;
+		}
+		
+		void setValue(Object value) {
+			this.value = value;
+		}
+		
+		Object getValue() {
+			return value;
+		}
+	}
+	
+	public void removePolicyElement(String policyURI) {
+		wrapperElements.remove(policyURI);
+        reg.remove(policyURI);
+    }
+
+    public void removeAllPolicyElements(){
+        wrapperElements.clear();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java
new file mode 100644
index 0000000..d56389e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java
@@ -0,0 +1,108 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFault;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+import javax.xml.namespace.QName;
+import java.io.InputStream;
+
+public class RobustOutOnlyAxisOperation extends OutInAxisOperation {
+    public RobustOutOnlyAxisOperation() {
+        super();
+        setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY);
+    }
+
+    public RobustOutOnlyAxisOperation(QName name) {
+        super(name);
+        setMessageExchangePattern(WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY);
+    }
+
+    public OperationClient createClient(ServiceContext sc, Options options) {
+        return new RobustOperationClient(this, sc, options);
+    }
+
+    class RobustOperationClient extends OutInAxisOperationClient {
+
+        public RobustOperationClient(OutInAxisOperation axisOp, ServiceContext sc, Options options) {
+            super(axisOp, sc, options);
+        }
+
+        protected MessageContext send(MessageContext msgctx) throws AxisFault {
+            AxisEngine engine = new AxisEngine(msgctx.getConfigurationContext());
+
+            // create the responseMessageContext
+            MessageContext responseMessageContext = new MessageContext();
+
+            // This is a hack - Needs to change
+            responseMessageContext.setOptions(options);
+
+
+            responseMessageContext.setServerSide(false);
+            responseMessageContext.setMessageID(msgctx.getMessageID());
+            addMessageContext(responseMessageContext);
+            responseMessageContext.setServiceContext(msgctx.getServiceContext());
+            responseMessageContext.setAxisMessage(
+                    msgctx.getAxisOperation().getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE));
+
+            //sending the message
+            engine.send(msgctx);
+            responseMessageContext.setDoingREST(msgctx.isDoingREST());
+
+            responseMessageContext.setProperty(MessageContext.TRANSPORT_IN, msgctx
+                    .getProperty(MessageContext.TRANSPORT_IN));
+            responseMessageContext.setTransportIn(msgctx.getTransportIn());
+            responseMessageContext.setTransportOut(msgctx.getTransportOut());
+
+            // Options object reused above so soapAction needs to be removed so
+            // that soapAction+wsa:Action on response don't conflict
+            responseMessageContext.setSoapAction("");
+
+            SOAPEnvelope envelope = responseMessageContext.getEnvelope();
+            if (envelope == null) {
+                // If request is REST we assume the responseMessageContext is REST, so
+                // set the variable
+                InputStream inStream = (InputStream) responseMessageContext.
+                        getProperty(MessageContext.TRANSPORT_IN);
+                if (inStream != null) {
+                    envelope = TransportUtils.createSOAPMessage(
+                            responseMessageContext, msgctx.getEnvelope().getNamespace()
+                            .getNamespaceURI());
+                }
+            }
+            if (envelope != null) {
+                if (envelope.getBody().hasFault()) {
+                    //receiving a fault
+                    engine.receiveFault(responseMessageContext);
+                    SOAPFault soapFault = envelope.getBody().getFault();
+                    throw new AxisFault(soapFault.getCode(), soapFault.getReason(),
+                            soapFault.getNode(), soapFault.getRole(), soapFault.getDetail());
+                }
+            }
+            return null;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/TransportInDescription.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/TransportInDescription.java
new file mode 100644
index 0000000..75becbc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/TransportInDescription.java
@@ -0,0 +1,169 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseMetadata;
+import org.apache.axis2.transport.TransportListener;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+/**
+ * Represents an incoming transport deployed in Axis2.
+ */
+public class TransportInDescription implements ParameterInclude {
+
+    /**
+     * Field flowInclude
+     */
+    private Flow faultFlow;
+
+    // Stores handler Fault in inFlow
+    private Phase faultPhase;
+
+    /**
+     * Field flowInclude
+     */
+    private Flow inFlow;
+
+    // to store handler in inFlow
+    private Phase inPhase;
+
+    /**
+     * Field name
+     */
+    protected QName name;
+
+    /**
+     * Field paramInclude
+     */
+    protected final ParameterInclude paramInclude;
+    protected TransportListener receiver;
+
+    /**
+     * Constructor AxisTransport.
+     *
+     * @param name
+     */
+    public TransportInDescription(QName name) {
+        paramInclude = new ParameterIncludeImpl();
+        this.name = name;
+        inPhase = new Phase(PhaseMetadata.TRANSPORT_PHASE);
+        faultPhase = new Phase(PhaseMetadata.TRANSPORT_PHASE);
+    }
+
+    /**
+     * Method addParameter.
+     *
+     * @param param
+     */
+    public void addParameter(Parameter param) throws AxisFault {
+        paramInclude.addParameter(param);
+    }
+
+    public void removeParameter(Parameter param) throws AxisFault {
+        paramInclude.removeParameter(param);
+    }
+
+    public void deserializeParameters(OMElement parameterElement) throws AxisFault {
+        this.paramInclude.deserializeParameters(parameterElement);
+    }
+
+    public Flow getFaultFlow() {
+        return faultFlow;
+    }
+
+    public Phase getFaultPhase() {
+        return faultPhase;
+    }
+
+    public Flow getInFlow() {
+        return inFlow;
+    }
+
+    public Phase getInPhase() {
+        return inPhase;
+    }
+
+    /**
+     * @return Returns QName.
+     */
+    public QName getName() {
+        return name;
+    }
+
+    /**
+     * Method getParameter.
+     *
+     * @param name
+     * @return Returns Parameter.
+     */
+    public Parameter getParameter(String name) {
+        return paramInclude.getParameter(name);
+    }
+
+    public ArrayList getParameters() {
+        return paramInclude.getParameters();
+    }
+
+    /**
+     * @return Returns TransportListener.
+     */
+    public TransportListener getReceiver() {
+        return receiver;
+    }
+
+    // to check whether the parameter is locked at any level
+    public boolean isParameterLocked(String parameterName) {
+        return paramInclude.isParameterLocked(parameterName);
+    }
+
+    public void setFaultFlow(Flow faultFlow) {
+        this.faultFlow = faultFlow;
+    }
+
+    public void setFaultPhase(Phase faultPhase) {
+        this.faultPhase = faultPhase;
+    }
+
+    public void setInFlow(Flow inFlow) {
+        this.inFlow = inFlow;
+    }
+
+    public void setInPhase(Phase inPhase) {
+        this.inPhase = inPhase;
+    }
+
+    /**
+     * @param name
+     */
+    public void setName(QName name) {
+        this.name = name;
+    }
+
+    /**
+     * @param receiver
+     */
+    public void setReceiver(TransportListener receiver) {
+        this.receiver = receiver;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/TransportOutDescription.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/TransportOutDescription.java
new file mode 100644
index 0000000..9170fdc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/TransportOutDescription.java
@@ -0,0 +1,164 @@
+/*
+* Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseMetadata;
+import org.apache.axis2.transport.TransportSender;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+/**
+ * Represents a transport deployed in AXis2
+ */
+public class TransportOutDescription implements ParameterInclude {
+
+    /**
+     * Field flowInclude
+     */
+    private Flow faultFlow;
+    private Phase faultPhase;
+
+    /**
+     * Field name
+     */
+    protected QName name;
+
+    /**
+     * Field outFlow
+     */
+    private Flow outFlow;
+    private Phase outPhase;
+
+    /**
+     * Field paramInclude
+     */
+    protected final ParameterInclude paramInclude;
+    protected TransportSender sender;
+
+    /**
+     * Constructor AxisTransport.
+     *
+     * @param name
+     */
+    public TransportOutDescription(QName name) {
+        paramInclude = new ParameterIncludeImpl();
+        this.name = name;
+        outPhase = new Phase(PhaseMetadata.TRANSPORT_PHASE);
+        faultPhase = new Phase(PhaseMetadata.TRANSPORT_PHASE);
+    }
+
+    /**
+     * Method addParameter.
+     *
+     * @param param
+     */
+    public void addParameter(Parameter param) throws AxisFault {
+        paramInclude.addParameter(param);
+    }
+
+    public void removeParameter(Parameter param) throws AxisFault {
+        paramInclude.removeParameter(param);
+    }
+
+    public void deserializeParameters(OMElement parameterElement) throws AxisFault {
+        this.paramInclude.deserializeParameters(parameterElement);
+    }
+
+    public Flow getFaultFlow() {
+        return faultFlow;
+    }
+
+    public Phase getFaultPhase() {
+        return faultPhase;
+    }
+
+    /**
+     * @return Returns QName.
+     */
+    public QName getName() {
+        return name;
+    }
+
+    public Flow getOutFlow() {
+        return outFlow;
+    }
+
+    public Phase getOutPhase() {
+        return outPhase;
+    }
+
+    /**
+     * Method getParameter.
+     *
+     * @param name
+     * @return Returns Parameter.
+     */
+    public Parameter getParameter(String name) {
+        return paramInclude.getParameter(name);
+    }
+
+    public ArrayList getParameters() {
+        return paramInclude.getParameters();
+    }
+
+    /**
+     * @return Returns TransportSender.
+     */
+    public TransportSender getSender() {
+        return sender;
+    }
+
+    // to check whether the parameter is locked at any level
+    public boolean isParameterLocked(String parameterName) {
+        return paramInclude.isParameterLocked(parameterName);
+    }
+
+    public void setFaultFlow(Flow faultFlow) {
+        this.faultFlow = faultFlow;
+    }
+
+    public void setFaultPhase(Phase faultPhase) {
+        this.faultPhase = faultPhase;
+    }
+
+    /**
+     * @param name
+     */
+    public void setName(QName name) {
+        this.name = name;
+    }
+
+    public void setOutFlow(Flow outFlow) {
+        this.outFlow = outFlow;
+    }
+
+    public void setOutPhase(Phase outPhase) {
+        this.outPhase = outPhase;
+    }
+
+    /**
+     * @param sender
+     */
+    public void setSender(TransportSender sender) {
+        this.sender = sender;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL11ToAllAxisServicesBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL11ToAllAxisServicesBuilder.java
new file mode 100644
index 0000000..c43895e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL11ToAllAxisServicesBuilder.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Extends the WSDL11ToAxisServiceBuilder class to provide functionality to return
+ * multiple AxisService objects; one for each port on each service in the WSDL 1.1 file.
+ *
+ */
+public class WSDL11ToAllAxisServicesBuilder extends WSDL11ToAxisServiceBuilder {
+    protected static final Log log =
+        LogFactory.getLog(WSDL11ToAllAxisServicesBuilder.class);
+
+    public static final String WSDL_SERVICE_QNAME = "WSDL_SERVICE_QNAME";
+
+    public static final String WSDL_PORT = "WSDL_PORT";
+
+    private ArrayList axisServices = null;
+    
+    /**
+     * Class constructor.  
+     * @param in  - Contains the wsdl 1.1 file
+     */
+    public WSDL11ToAllAxisServicesBuilder(InputStream in) {
+        super(in);
+        axisServices = new ArrayList();   // create an empty ArrayList
+    }
+    
+    /**
+     * Public method to access the wsdl 1.1 file and create a List of AxisService objects.
+     * For each port on each service in the wsdl, an AxisService object is created and
+     * added to the List.  The name of the AxisService is changed from the service name
+     * to the port name, since port names are unique to the wsdl.  
+     * @return A List containing one AxisService object for each port in the wsdl file.
+     * The name of the AxisService is modified from the service name to the port name.
+     * @throws AxisFault 
+     */
+    public List populateAllServices() throws AxisFault {
+        try {
+            if (log.isDebugEnabled()) {
+                log.debug("Entry: populateAllServices");
+            }
+
+            setup();  // setup contains code with gathers non-service specific info
+                      // from the WSDL.  This only needs to be done once per WSDL.
+            if (wsdl4jDefinition == null) {  
+                if (log.isDebugEnabled()) {
+                    log.debug("Exit: populateAllServices.  wsdl definition is null!");
+                }
+                return null;   // can't go any further without the wsdl
+            }
+            Iterator wsdlServIter = wsdl4jDefinition.getServices().entrySet().iterator();
+
+            while (wsdlServIter.hasNext()) {
+                Entry entry = (Entry) wsdlServIter.next();
+                Service service = (Service) entry.getValue();
+                // set the serviceName on the parent to setup call to populateService
+                serviceName = service.getQName();
+                Iterator wsdlPortIter = service.getPorts().entrySet().iterator();
+                while (wsdlPortIter.hasNext()) {
+                    Entry portEntry = (Entry) wsdlPortIter.next();
+                    Port port = (Port) portEntry.getValue();
+                    portName = port.getName();
+                    // start with a fresh axisService
+                    this.axisService = new AxisService();
+                    // now that serviceName and portName are set, call up to the
+                    // parent class to populate this service.                   
+                    AxisService retAxisService = populateService();
+                    if (retAxisService != null) {
+                        // save off the wsdl service QName as a parameter.
+                        Parameter serviceNameParameter = new Parameter();
+                        serviceNameParameter.setName(WSDL_SERVICE_QNAME);
+                        serviceNameParameter.setValue(serviceName);
+                        retAxisService.addParameter(serviceNameParameter);
+                        // Also save off the javax.wsdl.Port object that this AxisService
+                        // represents.
+                        Parameter portParameter = new Parameter();
+                        portParameter.setName(WSDL_PORT);
+                        portParameter.setValue(port);
+                        retAxisService.addParameter(portParameter);                        
+                        // since this AxisService really represents the wsdl
+                        // port, change the name
+                        // from wsdl service name to port name.
+                        retAxisService.setName(portName); // TODO: mangle name????
+
+                        axisServices.add(retAxisService);
+                    } // end if axisService was returned
+                } // end for all ports of a service
+            } // end for all services in the wsdl
+            
+            if (log.isDebugEnabled()) {
+                log.debug("Exit: populateAllServices.");
+            }
+            return axisServices;
+        } catch (AxisFault e) {
+            throw e;  // just rethrow any AxisFaults
+        } catch (Exception e) {
+            if (log.isDebugEnabled()) {
+                log.debug("populateAllServices caught Exception.  Converting to AxisFault. " + e.toString());
+            }
+            throw new AxisFault(e);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
new file mode 100644
index 0000000..061fbbf
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
@@ -0,0 +1,2173 @@
+package org.apache.axis2.description;
+
+import com.ibm.wsdl.util.xml.DOM2Writer;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.AddressingHelper;
+import org.apache.axis2.addressing.wsdl.WSDL11ActionHelper;
+import org.apache.axis2.util.PolicyUtil;
+import org.apache.axis2.util.XMLUtils;
+import org.apache.axis2.wsdl.SOAPHeaderMessage;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.WSDLUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.neethi.Constants;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyReference;
+import org.apache.ws.commons.schema.utils.NamespaceMap;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+import javax.wsdl.*;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.UnknownExtensibilityElement;
+import javax.wsdl.extensions.schema.Schema;
+import javax.wsdl.extensions.soap.*;
+import javax.wsdl.extensions.soap12.*;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLLocator;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+
+/*
+ * Copyright 2004,2005 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.
+ *
+ *
+ */
+
+public class WSDL11ToAxisServiceBuilder extends WSDLToAxisServiceBuilder {
+
+    protected static final Log log = LogFactory
+            .getLog(WSDL11ToAxisServiceBuilder.class);
+
+    protected String portName;
+
+    private static final String BINDING = "Binding";
+
+    private static final String SERVICE = "Service";
+
+    private static final String PORT = "Port";
+
+    private static final String PORT_TYPE = "PortType";
+
+    private static final String PORT_TYPE_OPERATION = "PortType.Operation";
+
+    private static final String PORT_TYPE_OPERATION_INPUT = "PortType.Operation.Input";
+
+    private static final String PORT_TYPE_OPERATION_OUTPUT = "PortType.Operation.Output";
+
+    private static final String PORT_TYPE_OPERATION_FAULT = "PortType.Operation.Fault";
+
+    private static final String BINDING_OPERATION = "Binding.Operation";
+
+    private static final String BINDING_OPERATION_INPUT = "Binding.Operation.Input";
+
+    private static final String BINDING_OPERATION_OUTPUT = "Binding.Operation.Output";
+
+    protected Definition wsdl4jDefinition = null;
+
+    private WSDLLocator customWSLD4JResolver;
+
+    public static final String RPC_STYLE = "rpc";
+
+    public static final String DOCUMENT_STYLE = "document";
+
+    /**
+     * Keeps a list of processable operations initiate to an empty list
+     */
+    private List wrappableOperations = new ArrayList();
+
+    public static final String WRAPPED_OUTPUTNAME_SUFFIX = "Response";
+
+    public static final String XML_NAMESPACE_URI = "http://www.w3.org/2000/xmlns/";
+
+    public static final String NAMESPACE_DECLARATION_PREFIX = "xmlns:";
+
+    private static int prefixCounter = 0;
+
+    public static final String NAMESPACE_URI = "namespace";
+
+    public static final String TRAGET_NAMESPACE = "targetNamespace";
+
+    /**
+     * keep track of whether setup code related to the entire wsdl is complete.
+     * Note that WSDL11ToAllAxisServices will call setup multiple times, so this
+     * field is used to make subsequent calls no-ops.
+     */
+    private boolean setupComplete = false;
+
+    private Map schemaMap = null;
+
+    private static final String JAVAX_WSDL_VERBOSE_MODE_KEY = "javax.wsdl.verbose";
+
+    private static final String JAVAX_WSDL_IMPORT_DOCUMENTS_MODE_KEY = "javax.wsdl.importDocuments";
+
+    /**
+     * constructor taking in the service name and the port name
+     *
+     * @param in
+     * @param serviceName
+     * @param portName
+     */
+    public WSDL11ToAxisServiceBuilder(InputStream in, QName serviceName,
+                                      String portName) {
+        super(in, serviceName);
+        this.portName = portName;
+    }
+
+    /**
+     * @param def
+     * @param serviceName
+     * @param portName
+     */
+    public WSDL11ToAxisServiceBuilder(Definition def, QName serviceName,
+                                      String portName) {
+        super(null, serviceName);
+        this.wsdl4jDefinition = def;
+        this.portName = portName;
+    }
+
+    /**
+     * @param in
+     * @param service
+     */
+    public WSDL11ToAxisServiceBuilder(InputStream in, AxisService service) {
+        super(in, service);
+    }
+
+    /**
+     * @param in
+     */
+    public WSDL11ToAxisServiceBuilder(InputStream in) {
+        this(in, null, null);
+    }
+
+    /**
+     * sets a custem WSDL4J locator
+     *
+     * @param customWSLD4JResolver
+     */
+    public void setCustomWSLD4JResolver(WSDLLocator customWSLD4JResolver) {
+        this.customWSLD4JResolver = customWSLD4JResolver;
+    }
+
+    /**
+     * populates a given service This is the only publicly accessible method in
+     * this class
+     *
+     * @throws AxisFault
+     */
+    public AxisService populateService() throws AxisFault {
+        try {
+            setup();
+            // Setting wsdl4jdefintion to axisService , so if some one want
+            // to play with it he can do that by getting the parameter
+            Parameter wsdlDefinitionParameter = new Parameter();
+            wsdlDefinitionParameter.setName(WSDLConstants.WSDL_4_J_DEFINITION);
+            wsdlDefinitionParameter.setValue(wsdl4jDefinition);
+            axisService.addParameter(wsdlDefinitionParameter);
+
+            if (wsdl4jDefinition == null) {
+                return null;
+            }
+
+            // setting target name space
+            axisService.setTargetNamespace(wsdl4jDefinition
+                    .getTargetNamespace());
+
+            axisService.setNameSpacesMap(new NamespaceMap(wsdl4jDefinition
+                    .getNamespaces()));
+
+            Binding binding = findBinding(wsdl4jDefinition);
+
+            if (binding.getPortType() == null) {
+                throw new AxisFault("Unable to find wsdl:binding named " + binding.getQName());
+            }
+
+            // create new Schema extensions element for wrapping
+            // (if its present)
+            Element[] schemaElements = generateWrapperSchema(schemaMap, binding);
+
+            // we might have modified the schemas by now so the addition should
+            // happen here
+            Types wsdl4jTypes = wsdl4jDefinition.getTypes();
+            if (null != wsdl4jTypes) {
+                this.copyExtensibleElements(wsdl4jTypes
+                        .getExtensibilityElements(), wsdl4jDefinition,
+                        axisService, TYPES);
+            }
+
+            // add the newly created schemas
+            if (schemaElements != null && schemaElements.length > 0) {
+                for (int i = 0; i < schemaElements.length; i++) {
+                    Element schemaElement = schemaElements[i];
+                    if (schemaElement != null) {
+                        axisService
+                                .addSchema(getXMLSchema(schemaElement, null));
+                    }
+                }
+            }
+            // copy the documentation element content to the description
+            Element documentationElement = wsdl4jDefinition
+                    .getDocumentationElement();
+            if (documentationElement != null) {
+                Node firstChild = documentationElement.getFirstChild();
+                String serviceDes;
+                if (firstChild.getNodeType() == Node.TEXT_NODE) {
+                    serviceDes = firstChild.getNodeValue();
+                } else {
+                    serviceDes = DOM2Writer.nodeToString(firstChild);
+                }
+                axisService.setServiceDescription(serviceDes);
+            }
+            processBinding(binding, wsdl4jDefinition);
+
+            return axisService;
+        } catch (WSDLException e) {
+            log.error(e);
+            throw new AxisFault(e);
+        } catch (Exception e) {
+            log.error(e);
+            throw new AxisFault(e);
+        }
+    }
+
+    /**
+     * contains all code which gathers non-service specific information from the
+     * wsdl. <p/> After all the setup completes successfully, the setupComplete
+     * field is set so that any subsequent calls to setup() will result in a
+     * no-op. Note that subclass WSDL11ToAllAxisServicesBuilder will call
+     * populateService for each port in the WSDL. Separating the non-service
+     * specific information here allows WSDL11ToAllAxisServicesBuilder to only
+     * do this work 1 time per WSDL, instead of for each port on each service.
+     *
+     * @throws WSDLException if readInTheWSDLFile fails
+     */
+    protected void setup() throws WSDLException {
+        if (setupComplete) { // already setup, just do nothing and return
+            return;
+        }
+        if (wsdl4jDefinition == null) {
+            wsdl4jDefinition = readInTheWSDLFile(in);
+        }
+        if (wsdl4jDefinition == null) {
+            return; // can't continue without wsdl
+        }
+
+        // process the imports
+        // send an empty list as the processed namespace list since this
+        // is the first call
+        processImports(wsdl4jDefinition, new ArrayList());
+
+        // Adding the policies in the Definition to the the PolicyRegistry
+        processPoliciesInDefintion(wsdl4jDefinition);
+
+        // setup the schemaMap
+        schemaMap = populateSchemaMap(wsdl4jDefinition.getTypes());
+
+        setupComplete = true; // if any part of setup fails, don't mark
+        // setupComplete
+    }
+
+    /**
+     * Populate a map of targetNamespace vs DOM schema element This is used to
+     * grab the correct schema element when adding a new element
+     *
+     * @param wsdl4jTypes
+     */
+
+    private Map populateSchemaMap(Types wsdl4jTypes) {
+        Map schemaMap = new HashMap();
+        if (wsdl4jTypes != null) {
+            List typesExtensibilityElements = wsdl4jTypes
+                    .getExtensibilityElements();
+            for (int i = 0; i < typesExtensibilityElements.size(); i++) {
+                Object o = typesExtensibilityElements.get(i);
+                if (o instanceof Schema) {
+                    Schema s = (Schema) o;
+                    String targetNamespace = s.getElement().getAttribute(
+                            TRAGET_NAMESPACE);
+                    schemaMap.put(targetNamespace, s.getElement());
+                }
+            }
+        }
+        return schemaMap;
+    }
+
+    /**
+     * Look for the relevant binding!
+     *
+     * @param dif
+     * @throws AxisFault
+     */
+    private Binding findBinding(Definition dif) throws AxisFault {
+        Map services = dif.getServices();
+        Service service = null;
+        Binding binding = null;
+        Port port = null;
+        if (serviceName != null) {
+            service = (Service) services.get(serviceName);
+            if (service == null) {
+                throw new AxisFault("Service " + serviceName + " was not found in the WSDL");
+            }
+        } else {
+            if (services.size() > 0) {
+                // pick the first service - we don't really have a choice here
+                service = (Service) services.values().toArray()[0];
+            }
+        }
+        if (service != null) {
+            copyExtensibleElements(service.getExtensibilityElements(), dif,
+                    axisService, SERVICE);
+            if (portName != null) {
+                port = service.getPort(portName);
+                if (port == null) {
+                    throw new AxisFault("No port found for the given name :"
+                            + portName);
+                }
+            } else {
+                Map ports = service.getPorts();
+                if (ports != null && ports.size() > 0) {
+                    // pick the port with the SOAP address as the default port
+                    port = findSOAPPort(ports);
+                    if (port == null) {
+                        // a SOAP port was not found - log a warning
+                        // and use the first port in the list
+                        log.info("A SOAP port was not found - "
+                                + "picking a random port!");
+                        port = (Port) ports.values().toArray()[0];
+                    }
+                }
+            }
+
+            axisService.setName(service.getQName().getLocalPart());
+
+            if (port != null) {
+                copyExtensibleElements(port.getExtensibilityElements(), dif,
+                        axisService, PORT);
+                binding = dif.getBinding(port.getBinding().getQName());
+                if (binding == null) {
+                    binding = port.getBinding();
+                }
+            }
+        } else {
+            log.info("A service element was not found - "
+                    + "picking a random binding!");
+            Collection bindings = dif.getBindings().values();
+            if (bindings == null || bindings.isEmpty()) {
+                throw new AxisFault("No bindings found in wsdl");
+            }
+            binding = (Binding) bindings.iterator().next();
+            axisService.setName(binding.getQName().getLocalPart() + "Service");
+        }
+        return binding;
+    }
+
+    /**
+     * Finds a SOAP port given the port map
+     *
+     * @param ports
+     */
+    private Port findSOAPPort(Map ports) {
+        Port port;
+        for (Iterator portsIterator = ports.values().iterator(); portsIterator
+                .hasNext();) {
+            port = (Port) portsIterator.next();
+            List extensibilityElements = port.getExtensibilityElements();
+            for (int i = 0; i < extensibilityElements.size(); i++) {
+                Object extElement = extensibilityElements.get(i);
+                if (extElement instanceof SOAPAddress) {
+                    // SOAP 1.1 address found - return that port and we are done
+                    return port;
+                }
+
+                if (extElement instanceof SOAP12Address) {
+                    // SOAP 1.2 address found - return that port and we are done
+                    return port;
+                }
+
+            }
+
+        }
+        // None found - just return null.
+        return null;
+    }
+
+    /**
+     * Process the binding
+     *
+     * @param binding
+     * @param dif
+     * @throws Exception
+     */
+    private void processBinding(Binding binding, Definition dif)
+            throws Exception {
+        if (binding != null) {
+            copyExtensibleElements(binding.getExtensibilityElements(), dif,
+                    axisService, BINDING);
+
+            PortType portType = dif.getPortType(binding.getPortType().getQName());
+            processPortType(portType, dif);
+
+            axisService.setBindingName(binding.getQName().getLocalPart());
+
+            // String portTypeNs = portType.getQName().getNamespaceURI();
+            List list = binding.getBindingOperations();
+            for (int i = 0; i < list.size(); i++) {
+                BindingOperation wsdl4jBindingOperation = (BindingOperation) list
+                        .get(i);
+
+                AxisOperation operation = axisService.getOperation(new QName(
+                        wsdl4jBindingOperation.getName()));
+
+                // this should first check the style of the binding
+                // and then set the style in the axis operation
+                // if that is not present, then only the global style applies
+                // this style is either rpc or doc
+
+                String style = getSOAPStyle(wsdl4jBindingOperation);
+                if (style != null) {
+                    operation.setStyle(style);
+                } else if (this.style != null) {
+                    operation.setStyle(this.style);
+                }
+
+                copyExtensibleElements(wsdl4jBindingOperation
+                        .getExtensibilityElements(), dif, operation,
+                        BINDING_OPERATION);
+
+                BindingInput bindingInput = wsdl4jBindingOperation
+                        .getBindingInput();
+                BindingOutput bindingOutput = wsdl4jBindingOperation
+                        .getBindingOutput();
+                Map bindingFaultsMap = wsdl4jBindingOperation
+                        .getBindingFaults();
+
+                Operation wsdl4jOperation = findOperation(portType, wsdl4jBindingOperation);
+
+                String MEP = operation.getMessageExchangePattern();
+
+                /* Process the binding inputs */
+
+                if (bindingInput != null) {
+                    if (WSDLUtil.isInputPresentForMEP(MEP)) {
+
+                        AxisMessage inAxisMessage = operation
+                                .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                        // Add the Qname reference - this has to be done by
+                        // looking at the
+                        // binding
+                        AddQNameReference(inAxisMessage, wsdl4jOperation,
+                                bindingInput, wrappableOperations
+                                .contains(wsdl4jBindingOperation
+                                .getOperation()));
+                        copyExtensibleElements(bindingInput
+                                .getExtensibilityElements(), dif,
+                                inAxisMessage, BINDING_OPERATION_INPUT);
+                    }
+                }
+
+                /*
+                 * Process the binding outputs
+                 */
+
+                if (bindingOutput != null) {
+                    if (WSDLUtil.isOutputPresentForMEP(MEP)) {
+                        AxisMessage outAxisMessage = operation
+                                .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+
+                        // Add the Qname reference - this has to be done by
+                        // looking at the
+                        // binding
+                        AddQNameReference(outAxisMessage, wsdl4jOperation,
+                                bindingOutput, wrappableOperations
+                                .contains(wsdl4jBindingOperation
+                                .getOperation()));
+
+                        copyExtensibleElements(bindingOutput
+                                .getExtensibilityElements(), dif,
+                                outAxisMessage, BINDING_OPERATION_OUTPUT);
+                    }
+                }
+
+                /* process the binding faults */
+                for (Iterator faultKeys = bindingFaultsMap.keySet().iterator(); faultKeys
+                        .hasNext();) {
+                    Object faultMapKey = faultKeys.next();
+                    BindingFault bindingFault = (BindingFault) bindingFaultsMap
+                            .get(faultMapKey);
+                    Fault wsdl4jFault = wsdl4jOperation.getFault(bindingFault
+                            .getName());
+                    if (wsdl4jFault == null || wsdl4jFault.getMessage().getParts().size() == 0) {
+                        throw new AxisFault("fault \"" + bindingFault.getName()
+                                + "\" not found in the Operation "
+                                + wsdl4jOperation.getName());
+                    }
+                    AxisMessage faultMessage = findFaultMessage(wsdl4jFault
+                            .getMessage().getQName().getLocalPart(), operation
+                            .getFaultMessages());
+
+                    AddQNameReference(faultMessage, wsdl4jFault.getMessage());
+
+                }
+                Iterator iterator = operation.getFaultMessages().iterator();
+                while (iterator.hasNext()) {
+                    AxisMessage faultMessage = (AxisMessage) iterator.next();
+                    if (faultMessage.getElementQName() == null) {
+                        log.warn("Unable to find a wsdl:binding/wsdl:operation/wsdl:fault for fault named " + faultMessage.getName() + " defined in wsdl:portType/wsdl:operation/@name=" + operation.getName().getLocalPart());
+                    }
+                }
+            }
+
+        }
+    }
+
+    private Operation findOperation(PortType portType, BindingOperation wsdl4jBindingOperation) {
+        Operation op = wsdl4jBindingOperation
+                .getOperation();
+        String input = null;
+        if (op != null && op.getInput() != null) {
+            input = op.getInput().getName();
+            if (":none".equals(input)) {
+                input = null;
+            }
+        }
+        String output = null;
+        if (op != null && op.getOutput() != null) {
+            output = op.getOutput().getName();
+            if (":none".equals(output)) {
+                output = null;
+            }
+        }
+        Operation op2 = portType.getOperation(op.getName(), input, output);
+        return ((op2 == null) ? op : op2);
+    }
+
+    /**
+     * Find the fault message relevant to a given name from the fault message
+     * list
+     *
+     * @param name
+     * @param faultMessages
+     */
+    private AxisMessage findFaultMessage(String name, ArrayList faultMessages) {
+        AxisMessage tempMessage;
+        for (int i = 0; i < faultMessages.size(); i++) {
+            tempMessage = (AxisMessage) faultMessages.get(i);
+            if (name.equals(tempMessage.getName())) {
+                return tempMessage;
+            }
+
+        }
+        return null;
+    }
+
+    /**
+     * Add the QName for the binding input
+     *
+     * @param inMessage
+     * @param wsdl4jOperation
+     * @param bindingInput
+     * @param isWrapped
+     */
+    private void AddQNameReference(AxisMessage inMessage,
+                                   Operation wsdl4jOperation, BindingInput bindingInput,
+                                   boolean isWrapped) {
+
+        List extensibilityElements = bindingInput.getExtensibilityElements();
+        Message wsdl4jMessage = wsdl4jOperation.getInput().getMessage();
+
+        for (int i = 0; i < extensibilityElements.size(); i++) {
+            ExtensibilityElement extElement = (ExtensibilityElement) extensibilityElements
+                    .get(i);
+
+            // SOAP 1.1 body element found!
+            if (extElement instanceof SOAPBody) {
+                SOAPBody soapBody = (SOAPBody) extElement;
+                List bindingPartsList = soapBody.getParts();
+                if (bindingPartsList != null && !bindingPartsList.isEmpty()) {
+                    // we can process a single part only
+                    processPartsList(bindingPartsList, wsdl4jMessage, inMessage);
+                    // there are no parts named in the binding - process the
+                    // items normally
+                    // by looking at the single message part - or the wrapped
+                    // items if wrapped by us
+                } else {
+                    // for the wrapped types we need to find this from the
+                    // wrapper schema map
+                    if (isWrapped) {
+                        // The schema for this should be already made ! Find the
+                        // QName from
+                        // the list and add it - the name for this is just the
+                        inMessage
+                                .setElementQName((QName) resolvedRpcWrappedElementMap
+                                        .get(wsdl4jOperation.getName()));
+
+                    } else if (wsdl4jMessage != null) {
+                        // pick the first part from the list and take that as
+                        // the relevant part
+                        // it is somewhat questionnable whether the first part
+                        // gets picked
+                        // but we'll have to take a chance here
+                        Map wsdl4jPartsMap = wsdl4jMessage.getParts();
+                        if (!wsdl4jPartsMap.isEmpty()) {
+                            Part wsdl4jPart = (Part) wsdl4jPartsMap.values()
+                                    .toArray()[0];
+                            if (wsdl4jPart.getElementName() != null) {
+                                inMessage.setElementQName(wsdl4jPart
+                                        .getElementName());
+                            }
+                        }
+                    }
+                }
+                break;
+            } else if (extElement instanceof SOAP12Body) {
+                SOAP12Body soapBody = (SOAP12Body) extElement;
+                List bindingPartsList = soapBody.getParts();
+                if (bindingPartsList != null && !bindingPartsList.isEmpty()) {
+                    // we can process a single part only
+                    processPartsList(bindingPartsList, wsdl4jMessage, inMessage);
+                    // there are no parts named in the binding - process the
+                    // items normally
+                    // by looking at the single message part - or the wrapped
+                    // items if wrapped by us
+                } else {
+                    // for the wrapped types we need to find this from the
+                    // wrapper schema map
+                    if (isWrapped) {
+                        // The schema for this should be already made ! Find the
+                        // QName from
+                        // the list and add it - the name for this is just the
+                        inMessage
+                                .setElementQName((QName) resolvedRpcWrappedElementMap
+                                        .get(wsdl4jOperation.getName()));
+                    } else if (wsdl4jMessage != null) {
+                        // pick the first part from the list and take that as
+                        // the relevant part
+                        // it is somewhat questionnable whether the first part
+                        // gets picked
+                        // but we'll have to take a chance here
+                        Map wsdl4jPartsMap = wsdl4jMessage.getParts();
+                        if (!wsdl4jPartsMap.isEmpty()) {
+                            Part wsdl4jPart = (Part) wsdl4jPartsMap.values()
+                                    .toArray()[0];
+                            if (wsdl4jPart.getElementName() != null) {
+                                inMessage.setElementQName(wsdl4jPart
+                                        .getElementName());
+                            }
+                        }
+                    }
+                }
+                break;
+            }
+        }
+
+    }
+
+    /**
+     * A reusable method to both the input and output QName populators
+     *
+     * @param bindingPartsList
+     * @param wsdl4jMessage
+     * @param axisMessage
+     */
+    private void processPartsList(List bindingPartsList, Message wsdl4jMessage,
+                                  AxisMessage axisMessage) {
+        if (bindingPartsList.size() > 1) {
+            // do something here - perhaps throw and exception
+        } else {
+            // find the part from the relevant message
+            Part wsdl4jMessagePart = wsdl4jMessage
+                    .getPart((String) bindingPartsList.get(0));
+            // the part name better be there - if not throw an exception
+            if (wsdl4jMessagePart == null) {
+                throw new WSDLProcessingException("Missing part named \""
+                        + bindingPartsList.get(0) + "\"");
+            }
+            QName name = wsdl4jMessagePart.getElementName();
+            if (name == null) {
+                name = wsdl4jMessagePart.getTypeName();
+            }
+            if (name == null) {
+                throw new WSDLProcessingException(
+                        "Element reference / Type name  missing for "
+                                + bindingPartsList.get(0) + "!");
+            }
+            axisMessage.setElementQName(wsdl4jMessagePart.getElementName());
+        }
+    }
+
+    /**
+     * Add the QName for the binding output
+     *
+     * @param outMessage
+     * @param wsdl4jOperation
+     * @param isWrapped
+     */
+    private void AddQNameReference(AxisMessage outMessage,
+                                   Operation wsdl4jOperation, BindingOutput bindingOutput,
+                                   boolean isWrapped) {
+
+        List extensibilityElements = bindingOutput.getExtensibilityElements();
+        if (wsdl4jOperation.getOutput() == null) {
+            return;
+        }
+        Message wsdl4jMessage = wsdl4jOperation.getOutput().getMessage();
+
+        for (int i = 0; i < extensibilityElements.size(); i++) {
+            ExtensibilityElement extElement = (ExtensibilityElement) extensibilityElements
+                    .get(i);
+
+            // SOAP 1.1 body element found!
+            if (extElement instanceof SOAPBody) {
+                SOAPBody soapBody = (SOAPBody) extElement;
+                List bindingPartsList = soapBody.getParts();
+                if (bindingPartsList != null && !bindingPartsList.isEmpty()) {
+                    // we can process a single part only so delegate the task
+                    // of processing
+                    processPartsList(bindingPartsList, wsdl4jMessage,
+                            outMessage);
+                    // there are no parts named in the binding - process the
+                    // items normally
+                    // by looking at the single message part - or the wrapped
+                    // items if wrapped by us
+                } else {
+                    // for the wrapped types we need to find this from the
+                    // wrapper schema map
+                    if (isWrapped) {
+                        // The schema for this should be already made ! Find the
+                        // QName from
+                        // the list and add it
+                        outMessage
+                                .setElementQName((QName) resolvedRpcWrappedElementMap
+                                        .get(wsdl4jOperation.getName()
+                                                + WRAPPED_OUTPUTNAME_SUFFIX));
+
+                    } else if (wsdl4jMessage != null) {
+                        // pick the first part from the list and take that as
+                        // the relevant part
+                        // it is somewhat questionable whether the first part
+                        // gets picked
+                        // but we'll have to take a chance here
+                        Map wsdl4jPartsMap = wsdl4jMessage.getParts();
+                        if (!wsdl4jPartsMap.isEmpty()) {
+                            Part wsdl4jPart = (Part) wsdl4jPartsMap.values()
+                                    .toArray()[0];
+                            if (wsdl4jPart.getElementName() != null) {
+                                outMessage.setElementQName(wsdl4jPart
+                                        .getElementName());
+                            }
+                        }
+                    }
+                }
+            } else if (extElement instanceof SOAP12Body) {
+                SOAP12Body soapBody = (SOAP12Body) extElement;
+                List bindingPartsList = soapBody.getParts();
+                if (bindingPartsList != null && !bindingPartsList.isEmpty()) {
+                    // we can process a single part only
+                    processPartsList(bindingPartsList, wsdl4jMessage, outMessage);
+                    // there are no parts named in the binding - process the
+                    // items normally
+                    // by looking at the single message part - or the wrapped
+                    // items if wrapped by us
+                } else {
+                    // for the wrapped types we need to find this from the
+                    // wrapper schema map
+                    if (isWrapped) {
+                        // The schema for this should be already made ! Find the
+                        // QName from
+                        // the list and add it - the name for this is just the
+                        outMessage
+                                .setElementQName((QName) resolvedRpcWrappedElementMap
+                                        .get(wsdl4jOperation.getName()
+                                                + WRAPPED_OUTPUTNAME_SUFFIX));
+                    } else if (wsdl4jMessage != null) {
+                        // pick the first part from the list and take that as
+                        // the relevant part
+                        // it is somewhat questionnable whether the first part
+                        // gets picked
+                        // but we'll have to take a chance here
+                        Map wsdl4jPartsMap = wsdl4jMessage.getParts();
+                        if (!wsdl4jPartsMap.isEmpty()) {
+                            Part wsdl4jPart = (Part) wsdl4jPartsMap.values()
+                                    .toArray()[0];
+                            if (wsdl4jPart.getElementName() != null) {
+                                outMessage.setElementQName(wsdl4jPart
+                                        .getElementName());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Add the QName for the binding output
+     */
+    private void AddQNameReference(AxisMessage faultMessage,
+                                   Message wsdl4jMessage) throws AxisFault {
+
+        // for a fault this is trivial - All faults are related directly to a
+        // message by the name and are supposed to have a single part. So it is
+        // a matter of copying the right QName from the message part
+
+        // get the part
+        Part wsdl4jMessagePart = (Part) wsdl4jMessage.getParts().values()
+                .toArray()[0];
+        if (wsdl4jMessagePart == null) {
+            throw new WSDLProcessingException();
+        }
+        QName name = wsdl4jMessagePart.getElementName();
+        if (name == null) {
+            String message = "Part '" + wsdl4jMessagePart.getName() +
+                    "' of fault message '" + wsdl4jMessage.getQName()
+                    + "' must be defined with 'element=QName' and not 'type=QName'";
+            log.error(message);
+            throw new AxisFault(message);
+
+        }
+
+        faultMessage.setElementQName(name);
+
+    }
+
+    /**
+     * A util method that returns the SOAP style included in the binding
+     * operation
+     *
+     * @param bindingOp
+     */
+    private String getSOAPStyle(BindingOperation bindingOp) {
+        List extensibilityElements = bindingOp.getExtensibilityElements();
+        for (int i = 0; i < extensibilityElements.size(); i++) {
+            Object extElement = extensibilityElements.get(i);
+            if (extElement instanceof SOAPOperation) {
+                return ((SOAPOperation) extElement).getStyle();
+            } else if (extElement instanceof SOAP12Operation) {
+                return ((SOAP12Operation) extElement).getStyle();
+            }
+
+        }
+
+        return null;
+
+    }
+
+    /**
+     * Simply Copy information.
+     *
+     * @param wsdl4jPortType
+     */
+    // FIXME Evaluate a way of injecting features and priperties with a general
+    // formatted input
+    private void processPortType(PortType wsdl4jPortType, Definition dif)
+            throws Exception {
+
+        copyExtensionAttributes(wsdl4jPortType.getExtensionAttributes(),
+                axisService, PORT_TYPE);
+
+        // set port the type name
+        axisService.setPortTypeName(wsdl4jPortType.getQName().getLocalPart());
+
+        Iterator wsdl4JOperationsIterator = wsdl4jPortType.getOperations()
+                .iterator();
+        Operation wsdl4jOperation;
+        while (wsdl4JOperationsIterator.hasNext()) {
+            wsdl4jOperation = (Operation) wsdl4JOperationsIterator.next();
+            axisService.addOperation(populateOperations(wsdl4jOperation,
+                    wsdl4jPortType, dif));
+        }
+    }
+
+    /**
+     * Copy the component from the operation
+     *
+     * @param wsdl4jOperation
+     * @param dif
+     * @throws Exception
+     */
+    private AxisOperation populateOperations(Operation wsdl4jOperation,
+                                             PortType wsdl4jPortType, Definition dif) throws Exception {
+        QName opName = new QName(wsdl4jOperation.getName());
+        // Copy Name Attribute
+        AxisOperation axisOperation = axisService.getOperation(opName);
+        if (axisOperation == null) {
+            String MEP = getMEP(wsdl4jOperation);
+            axisOperation = AxisOperationFactory.getOperationDescription(MEP);
+            axisOperation.setName(opName);
+
+            // setting the PolicyInclude property of the AxisOperation
+            PolicyInclude policyInclude = new PolicyInclude(axisOperation);
+            axisOperation.setPolicyInclude(policyInclude);
+        }
+
+        copyExtensibleElements(wsdl4jOperation.getExtensibilityElements(), dif,
+                axisOperation, PORT_TYPE_OPERATION);
+
+        Input wsdl4jInputMessage = wsdl4jOperation.getInput();
+
+        if (isServerSide) {
+            if (null != wsdl4jInputMessage) {
+                AxisMessage inMessage = axisOperation
+                        .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                Message message = wsdl4jInputMessage.getMessage();
+                if (null != message) {
+                    inMessage.setName(message.getQName().getLocalPart());
+                    copyExtensibleElements(message.getExtensibilityElements(),
+                            dif, inMessage, PORT_TYPE_OPERATION_INPUT);
+
+                }
+                // Check if the action is already set as we don't want to
+                // override it
+                // with the Default Action Pattern
+                ArrayList inputActions = axisOperation.getWsamappingList();
+                String action = null;
+                if (inputActions == null || inputActions.size() == 0) {
+                    action = WSDL11ActionHelper
+                            .getActionFromInputElement(dif, wsdl4jPortType,
+                                    wsdl4jOperation, wsdl4jInputMessage);
+                }
+                if (action != null) {
+                    if (inputActions == null) {
+                        inputActions = new ArrayList();
+                        axisOperation.setWsamappingList(inputActions);
+                    }
+                    inputActions.add(action);
+                }
+            }
+            // Create an output message and add
+            Output wsdl4jOutputMessage = wsdl4jOperation.getOutput();
+            if (null != wsdl4jOutputMessage) {
+                AxisMessage outMessage = axisOperation
+                        .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+                Message message = wsdl4jOutputMessage.getMessage();
+                if (null != message) {
+
+                    outMessage.setName(message.getQName().getLocalPart());
+                    copyExtensibleElements(message.getExtensibilityElements(),
+                            dif, outMessage, PORT_TYPE_OPERATION_OUTPUT);
+
+                    // wsdl:portType -> wsdl:operation -> wsdl:output
+                }
+                // Check if the action is already set as we don't want to
+                // override it
+                // with the Default Action Pattern
+                String action = axisOperation.getOutputAction();
+                if (action == null) {
+                    action = WSDL11ActionHelper.getActionFromOutputElement(dif,
+                            wsdl4jPortType, wsdl4jOperation,
+                            wsdl4jOutputMessage);
+                }
+                if (action != null) {
+                    axisOperation.setOutputAction(action);
+                }
+            }
+        } else {
+
+            // for the client side we have to do something that is a bit
+            // weird. The in message is actually taken from the output
+            // and the output is taken from the in
+
+            if (null != wsdl4jInputMessage) {
+                AxisMessage inMessage = axisOperation
+                        .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+                Message message = wsdl4jInputMessage.getMessage();
+                if (null != message) {
+
+                    inMessage.setName(message.getQName().getLocalPart());
+                    copyExtensibleElements(message.getExtensibilityElements(),
+                            dif, inMessage, PORT_TYPE_OPERATION_OUTPUT);
+
+                }
+                // Check if the action is already set as we don't want to
+                // override it
+                // with the Default Action Pattern
+                String action = axisOperation.getOutputAction();
+                if (action == null) {
+                    action = WSDL11ActionHelper
+                            .getActionFromInputElement(dif, wsdl4jPortType,
+                                    wsdl4jOperation, wsdl4jInputMessage);
+                }
+                if (action != null) {
+                    axisOperation.setOutputAction(action);
+                }
+            }
+            // Create an output message and add
+            Output wsdl4jOutputMessage = wsdl4jOperation.getOutput();
+            if (null != wsdl4jOutputMessage) {
+                AxisMessage outMessage = axisOperation
+                        .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                Message message = wsdl4jOutputMessage.getMessage();
+                if (null != message) {
+
+                    outMessage.setName(message.getQName().getLocalPart());
+                    copyExtensibleElements(message.getExtensibilityElements(),
+                            dif, outMessage, PORT_TYPE_OPERATION_INPUT);
+
+                    // wsdl:portType -> wsdl:operation -> wsdl:output
+                }
+                // Check if the action is already set as we don't want to
+                // override it
+                // with the Default Action Pattern
+                ArrayList inputActions = axisOperation.getWsamappingList();
+                String action = null;
+                if (inputActions == null || inputActions.size() == 0) {
+                    action = WSDL11ActionHelper.getActionFromOutputElement(dif,
+                            wsdl4jPortType, wsdl4jOperation,
+                            wsdl4jOutputMessage);
+                }
+                if (action != null) {
+                    if (inputActions == null) {
+                        inputActions = new ArrayList();
+                        axisOperation.setWsamappingList(inputActions);
+                    }
+                    inputActions.add(action);
+                }
+            }
+        }
+
+        Map faults = wsdl4jOperation.getFaults();
+        Iterator faultKeyIterator = faults.keySet().iterator();
+
+        while (faultKeyIterator.hasNext()) {
+            Fault fault = (Fault) faults.get(faultKeyIterator.next());
+            AxisMessage axisFaultMessage = new AxisMessage();
+            Message faultMessage = fault.getMessage();
+            if (null != faultMessage) {
+                axisFaultMessage
+                        .setName(faultMessage.getQName().getLocalPart());
+                copyExtensibleElements(faultMessage.getExtensibilityElements(),
+                        dif, axisFaultMessage, PORT_TYPE_OPERATION_FAULT);
+
+            }
+
+            // Check if the action is already set as we don't want to override
+            // it
+            // with the Default Action Pattern
+            String action = axisOperation.getFaultAction(fault.getName());
+            if (action == null) {
+                action = WSDL11ActionHelper.getActionFromFaultElement(dif,
+                        wsdl4jPortType, wsdl4jOperation, fault);
+            }
+            if (action != null) {
+                axisOperation.addFaultAction(fault.getName(), action);
+            }
+            axisOperation.setFaultMessages(axisFaultMessage);
+        }
+        return axisOperation;
+    }
+
+    /**
+     * Generates a list of wrapper schemas
+     *
+     * @param wsdl4jBinding
+     */
+    private Element[] generateWrapperSchema(Map schemaMap, Binding wsdl4jBinding) {
+
+        List schemaElementList = new ArrayList();
+        // target namespace for this should be the namespace URI for
+        // the porttype
+        String porttypeNamespaceURI = wsdl4jBinding.getPortType().getQName()
+                .getNamespaceURI();
+
+        // //////////////////////////////////////////////////////////////////////
+        // if there are any bindings present then we have to process them. we
+        // have to generate a schema per wsdl4jBinding (that is the safest
+        // option).
+        // if not we just resolve to
+        // the good old port type
+        // list, in which case we'll generate a schema per porttype
+        // //////////////////////////////////////////////////////////////////////
+
+        Element schemaElement = createSchemaForPorttype(porttypeNamespaceURI,
+                findWrappableOperations(wsdl4jBinding), schemaMap);
+
+        if (schemaElement != null) {
+            schemaElementList.add(schemaElement);
+        }
+        return (Element[]) schemaElementList
+                .toArray(new Element[schemaElementList.size()]);
+    }
+
+    /**
+     * Create a schema by looking at the port type
+     *
+     * @param namespaceURI
+     * @return null if there is no element
+     */
+    private Element createSchemaForPorttype(String namespaceURI,
+                                            List operationListToProcess, Map existingSchemaMap) {
+        // first of all look at the operations list
+        // we can return immediately if we get the operations list
+        // as empty
+        if (operationListToProcess.isEmpty()) {
+            return null;
+        }
+
+        // loop through the messages. We'll populate thins map with the relevant
+        // messages
+        // from the operations
+        Map messagesMap = new HashMap();
+        Map inputOperationsMap = new HashMap();
+        Map outputOperationsMap = new HashMap();
+        Map faultyOperationsMap = new HashMap();
+        // this contains the required namespace imports. the key in this
+        // map would be the namaspace URI
+        Map namespaceImportsMap = new HashMap();
+        // generated complextypes. Keep in the list for writing later
+        // the key for the complexType map is the message QName
+        Map complexTypeElementsMap = new HashMap();
+        // generated Elements. Kep in the list for later writing
+        List elementElementsList = new ArrayList();
+        // list namespace prefix map. This map will include uri -> prefix
+        Map namespacePrefixMap = new HashMap();
+
+        // //////////////////////////////////////////////////////////////////////////////////////////////////
+        // First thing is to populate the message map with the messages to
+        // process.
+        // //////////////////////////////////////////////////////////////////////////////////////////////////
+
+        // we really need to do this for a single porttype!
+        Operation op;
+        for (int k = 0; k < operationListToProcess.size(); k++) {
+            op = (Operation) operationListToProcess.get(k);
+            Input input = op.getInput();
+            Message message;
+            if (input != null) {
+                message = input.getMessage();
+                messagesMap.put(message.getQName(), message);
+                inputOperationsMap.put(op.getName(), message);
+            }
+
+            Output output = op.getOutput();
+            if (output != null) {
+                message = output.getMessage();
+                messagesMap.put(message.getQName(), message);
+                outputOperationsMap.put(op.getName(), message);
+            }
+
+            Map faultMap = op.getFaults();
+            if (faultMap != null && faultMap.size() > 0) {
+                Iterator keys = faultMap.keySet().iterator();
+                while (keys.hasNext()) {
+                    Object key = keys.next();
+                    Fault fault = (Fault) faultMap.get(key);
+                    if (fault != null) {
+                        message = fault.getMessage();
+                        messagesMap.put(message.getQName(), message);
+                        faultyOperationsMap.put(key, message);
+                    }
+                }
+            }
+        }
+
+        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        // check whether there are messages that are wrappable. If there are no
+        // messages that are wrappable we'll
+        // just return null and endup this process. However we need to take the
+        // force flag into account here
+        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+        QName[] keys;
+
+        // just take all the messages and wrap them, we've already selected
+        // the relevant messages by looking at the SOAP binding
+
+        keys = (QName[]) messagesMap.keySet().toArray(
+                new QName[messagesMap.size()]);
+
+        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        // Now we have the message list to process - Process the whole list of
+        // messages at once
+        // since we need to generate one single schema
+        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+        List resolvedMessageQNames = new ArrayList();
+        // find the xsd prefix
+        String xsdPrefix = findSchemaPrefix();
+        Message wsdl4jMessage;
+        // DOM document that will be the ultimate creator
+        Document document = getDOMDocumentBuilder().newDocument();
+        for (int i = 0; i < keys.length; i++) {
+            wsdl4jMessage = (Message) messagesMap.get(keys[i]);
+            // No need to check the wrappable,
+
+            // This message is wrappabel. However we need to see whether the
+            // message is already
+            // resolved!
+            if (!resolvedMessageQNames.contains(wsdl4jMessage.getQName())) {
+                // This message has not been touched before!. So we can go ahead
+                // now
+                Map parts = wsdl4jMessage.getParts();
+                // add the complex type
+                Element newComplexType = document.createElementNS(
+                        XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+                        + XML_SCHEMA_COMPLEX_TYPE_LOCAL_NAME);
+
+                Element cmplxTypeSequence = document.createElementNS(
+                        XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+                        + XML_SCHEMA_SEQUENCE_LOCAL_NAME);
+                Element child;
+                Iterator iterator = parts.keySet().iterator();
+                while (iterator.hasNext()) {
+                    Part part = (Part) parts.get(iterator.next());
+                    // the part name
+                    String elementName = part.getName();
+                    boolean isTyped = true;
+                    // the type name
+                    QName schemaTypeName;
+                    if (part.getTypeName() != null) {
+                        schemaTypeName = part.getTypeName();
+                    } else if (part.getElementName() != null) {
+                        schemaTypeName = part.getElementName();
+                        isTyped = false;
+                    } else {
+                        throw new RuntimeException(" Unqualified Message part!");
+                    }
+
+                    child = document.createElementNS(XMLSCHEMA_NAMESPACE_URI,
+                            xsdPrefix + ":" + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+
+                    String prefix;
+                    if (XMLSCHEMA_NAMESPACE_URI.equals(schemaTypeName
+                            .getNamespaceURI())) {
+                        prefix = xsdPrefix;
+                    } else {
+                        // this schema is a third party one. So we need to have
+                        // an import statement in our generated schema
+                        String uri = schemaTypeName.getNamespaceURI();
+                        if (!namespaceImportsMap.containsKey(uri)) {
+                            // create Element for namespace import
+                            Element namespaceImport = document.createElementNS(
+                                    XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+                                    + XML_SCHEMA_IMPORT_LOCAL_NAME);
+                            namespaceImport.setAttribute(NAMESPACE_URI, uri);
+                            // add this to the map
+                            namespaceImportsMap.put(uri, namespaceImport);
+                            // we also need to associate this uri with a prefix
+                            // and include that prefix
+                            // in the schema's namspace declarations. So add
+                            // theis particular namespace to the
+                            // prefix map as well
+                            prefix = getTemporaryNamespacePrefix();
+                            namespacePrefixMap.put(uri, prefix);
+                        } else {
+                            // this URI should be already in the namspace prefix
+                            // map
+                            prefix = (String) namespacePrefixMap.get(uri);
+                        }
+
+                    }
+                    // If it's from a type the element we need to add a name and
+                    // the type
+                    // if not it's the element reference
+                    if (isTyped) {
+                        child.setAttribute(XSD_NAME, elementName);
+                        child.setAttribute(XSD_TYPE, prefix + ":"
+                                + schemaTypeName.getLocalPart());
+                    } else {
+                        child.setAttribute(XSD_REF, prefix + ":"
+                                + schemaTypeName.getLocalPart());
+                    }
+                    cmplxTypeSequence.appendChild(child);
+                }
+                newComplexType.appendChild(cmplxTypeSequence);
+                // add this newly created complextype to the list
+                complexTypeElementsMap.put(wsdl4jMessage.getQName(),
+                        newComplexType);
+                resolvedMessageQNames.add(wsdl4jMessage.getQName());
+            }
+
+        }
+
+        Element elementDeclaration;
+
+        // loop through the input op map and generate the elements
+        String[] inputOperationtNames = (String[]) inputOperationsMap.keySet()
+                .toArray(new String[inputOperationsMap.size()]);
+        for (int j = 0; j < inputOperationtNames.length; j++) {
+            String inputOpName = inputOperationtNames[j];
+            elementDeclaration = document.createElementNS(
+                    XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+                    + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+            elementDeclaration.setAttribute(XSD_NAME, inputOpName);
+
+            QName typeQName = ((Message) inputOperationsMap.get(inputOpName))
+                    .getQName();
+            // add the anonymous
+            elementDeclaration.appendChild(((Element) complexTypeElementsMap
+                    .get(typeQName)).cloneNode(true));
+
+            elementElementsList.add(elementDeclaration);
+            resolvedRpcWrappedElementMap.put(inputOpName, new QName(
+                    namespaceURI, inputOpName, AXIS2WRAPPED));
+        }
+
+        // loop through the output op map and generate the elements
+        String[] outputOperationtNames = (String[]) outputOperationsMap
+                .keySet().toArray(new String[outputOperationsMap.size()]);
+        for (int j = 0; j < outputOperationtNames.length; j++) {
+
+            String baseoutputOpName = outputOperationtNames[j];
+            String outputOpName = baseoutputOpName + WRAPPED_OUTPUTNAME_SUFFIX;
+            elementDeclaration = document.createElementNS(
+                    XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+                    + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+            elementDeclaration.setAttribute(XSD_NAME, outputOpName);
+
+            QName typeQName = ((Message) outputOperationsMap
+                    .get(baseoutputOpName)).getQName();
+            // add the anonymous
+            elementDeclaration.appendChild(((Element) complexTypeElementsMap
+                    .get(typeQName)).cloneNode(true));
+            elementElementsList.add(elementDeclaration);
+
+            resolvedRpcWrappedElementMap.put(outputOpName, new QName(
+                    namespaceURI, outputOpName, AXIS2WRAPPED));
+
+        }
+
+        // loop through the faultoutput op map and generate the elements
+        String[] faultyOperationtNames = (String[]) faultyOperationsMap
+                .keySet().toArray(new String[faultyOperationsMap.size()]);
+        for (int j = 0; j < faultyOperationtNames.length; j++) {
+
+            String baseFaultOpName = faultyOperationtNames[j];
+            elementDeclaration = document.createElementNS(
+                    XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+                    + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+            elementDeclaration.setAttribute(XSD_NAME, baseFaultOpName);
+
+            QName typeQName = ((Message) faultyOperationsMap
+                    .get(baseFaultOpName)).getQName();
+            elementDeclaration.appendChild(((Element) complexTypeElementsMap
+                    .get(typeQName)).cloneNode(true));
+            elementElementsList.add(elementDeclaration);
+            resolvedRpcWrappedElementMap.put(baseFaultOpName, new QName(
+                    namespaceURI, baseFaultOpName, AXIS2WRAPPED));
+        }
+
+        // /////////////////////////////////////////////////////////////////////
+        //
+        // Now we are done with processing the messages and generating the right
+        // schema object model
+        // time to write out the schema
+        //
+        // There is a catch here - when the target namespace of the generated
+        // schema is equivalent to one of the existing schemas we'll have to
+        // insert the elements there rather than creating a new Schema element
+        // //////////////////////////////////////////////////////////////////////
+        //
+        if (existingSchemaMap.containsKey(namespaceURI)) {
+            // get the relevant schema element
+            Element schemaElement = (Element) existingSchemaMap
+                    .get(namespaceURI);
+            Document ownerDocument = schemaElement.getOwnerDocument();
+
+            // loop through the namespace declarations first and add them
+            String[] nameSpaceDeclarationArray = (String[]) namespacePrefixMap
+                    .keySet().toArray(new String[namespacePrefixMap.size()]);
+            for (int i = 0; i < nameSpaceDeclarationArray.length; i++) {
+                String s = nameSpaceDeclarationArray[i];
+                checkAndAddNamespaceDeclarations(s, namespacePrefixMap,
+                        schemaElement);
+            }
+
+            // add imports - check whether it is the targetnamespace before
+            // adding
+            Element[] namespaceImports = (Element[]) namespaceImportsMap
+                    .values().toArray(new Element[namespaceImportsMap.size()]);
+            for (int i = 0; i < namespaceImports.length; i++) {
+                if (!namespaceURI.equals(namespaceImports[i]
+                        .getAttribute(NAMESPACE_URI))) {
+                    schemaElement.appendChild(ownerDocument.importNode(
+                            namespaceImports[i], true));
+                }
+            }
+
+            Element[] elementDeclarations = (Element[]) elementElementsList
+                    .toArray(new Element[elementElementsList.size()]);
+            for (int i = 0; i < elementDeclarations.length; i++) {
+                schemaElement.appendChild(ownerDocument.importNode(
+                        elementDeclarations[i], true));
+            }
+
+            // don't return anything!!
+            return null;
+        } else {
+            // there is no element in the
+            Element schemaElement = document.createElementNS(
+                    XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+                    + XML_SCHEMA_LOCAL_NAME);
+
+            // loop through the namespace declarations first
+            String[] nameSpaceDeclarationArray = (String[]) namespacePrefixMap
+                    .keySet().toArray(new String[namespacePrefixMap.size()]);
+            for (int i = 0; i < nameSpaceDeclarationArray.length; i++) {
+                String s = nameSpaceDeclarationArray[i];
+                schemaElement.setAttributeNS(XML_NAMESPACE_URI,
+                        NAMESPACE_DECLARATION_PREFIX
+                                + namespacePrefixMap.get(s).toString(), s);
+            }
+
+            if (schemaElement.getAttributeNS(XML_NAMESPACE_URI, xsdPrefix)
+                    .length() == 0) {
+                schemaElement.setAttributeNS(XML_NAMESPACE_URI,
+                        NAMESPACE_DECLARATION_PREFIX + xsdPrefix,
+                        XMLSCHEMA_NAMESPACE_URI);
+            }
+
+            // add the targetNamespace
+            schemaElement.setAttributeNS(XML_NAMESPACE_URI, XMLNS_AXIS2WRAPPED,
+                    namespaceURI);
+            schemaElement.setAttribute(XSD_TARGETNAMESPACE, namespaceURI);
+            schemaElement.setAttribute(XSD_ELEMENT_FORM_DEFAULT,
+                    XSD_UNQUALIFIED);
+
+            // add imports
+            Element[] namespaceImports = (Element[]) namespaceImportsMap
+                    .values().toArray(new Element[namespaceImportsMap.size()]);
+            for (int i = 0; i < namespaceImports.length; i++) {
+                schemaElement.appendChild(namespaceImports[i]);
+
+            }
+
+            // add element declarations
+            Element[] elementDeclarations = (Element[]) elementElementsList
+                    .toArray(new Element[elementElementsList.size()]);
+            for (int i = 0; i < elementDeclarations.length; i++) {
+                schemaElement.appendChild(elementDeclarations[i]);
+
+            }
+
+            return schemaElement;
+        }
+
+    }
+
+    /**
+     * @param prefixMap
+     */
+    private void checkAndAddNamespaceDeclarations(String namespace,
+                                                  Map prefixMap, Element schemaElement) {
+        // get the attribute for the current namespace
+        String prefix = (String) prefixMap.get(namespace);
+        // A prefix must be found at this point!
+        String existingURL = schemaElement.getAttributeNS(XML_NAMESPACE_URI,
+                NAMESPACE_DECLARATION_PREFIX + prefix);
+        if (existingURL == null) {
+            // there is no existing URL by that prefix - declare a new namespace
+            schemaElement.setAttributeNS(XML_NAMESPACE_URI,
+                    NAMESPACE_DECLARATION_PREFIX + prefix, namespace);
+        } else if (existingURL.equals(namespace)) {
+            // this namespace declaration is already there with the same prefix
+            // ignore it
+        } else {
+            // there is a different namespace declared in the given prefix
+            // change the prefix in the prefix map to a new one and declare it
+
+            // create a prefix
+            String generatedPrefix = "ns" + prefixCounter++;
+            while (prefixMap.containsKey(generatedPrefix)) {
+                generatedPrefix = "ns" + prefixCounter++;
+            }
+            schemaElement.setAttributeNS(XML_NAMESPACE_URI,
+                    NAMESPACE_DECLARATION_PREFIX + generatedPrefix, namespace);
+            // add to the map
+            prefixMap.put(generatedPrefix, namespace);
+        }
+
+    }
+
+    /**
+     * The intention of this procedure is to process the imports. When
+     * processing the imports the imported documents will be populating the
+     * items in the main document recursivley
+     *
+     * @param wsdl4JDefinition
+     */
+    private void processImports(Definition wsdl4JDefinition,
+                                List processedDocuments) {
+        Map wsdlImports = wsdl4JDefinition.getImports();
+
+        if (null != wsdlImports && !wsdlImports.isEmpty()) {
+            Collection importsCollection = wsdlImports.values();
+            for (Iterator iterator = importsCollection.iterator(); iterator
+                    .hasNext();) {
+                Vector values = (Vector) iterator.next();
+                for (int i = 0; i < values.size(); i++) {
+                    Import wsdlImport = (Import) values.elementAt(i);
+
+                    if (wsdlImport.getDefinition() != null) {
+                        Definition importedDef = wsdlImport.getDefinition();
+
+                        if (importedDef != null) {
+                            String key = importedDef.getDocumentBaseURI();
+                            if (key == null) {
+                                key = importedDef.getTargetNamespace();
+                            }
+                            // stop recursive imports!
+                            if (processedDocuments.contains(key)) {
+                                return;
+                            }
+                            processedDocuments.add(key);
+
+                            processImports(importedDef,
+                                    processedDocuments);
+
+                            // copy ns
+                            Map namespaces = importedDef.getNamespaces();
+                            Iterator keys = namespaces.keySet().iterator();
+                            while (keys.hasNext()) {
+                                Object key2 = keys.next();
+                                if (!wsdl4jDefinition.getNamespaces()
+                                        .containsValue(namespaces.get(key2))) {
+                                    wsdl4jDefinition.getNamespaces().put(key2,
+                                            namespaces.get(key2));
+                                }
+                            }
+
+                            wsdl4jDefinition.getNamespaces().putAll(namespaces);
+                            // copy types
+                            Types t = importedDef.getTypes();
+                            if (t != null) {
+                                List typesList = t.getExtensibilityElements();
+                                for (int j = 0; j < typesList.size(); j++) {
+                                    Types types = wsdl4JDefinition.getTypes();
+                                    if (types == null) {
+                                        types = wsdl4JDefinition.createTypes();
+                                        wsdl4JDefinition.setTypes(types);
+                                    }
+                                    types
+                                            .addExtensibilityElement((ExtensibilityElement) typesList
+                                                    .get(j));
+
+                                }
+                            }
+
+                            // add messages
+                            Map messagesMap = importedDef.getMessages();
+                            wsdl4JDefinition.getMessages().putAll(messagesMap);
+
+                            // add portypes
+                            Map porttypeMap = importedDef.getPortTypes();
+                            wsdl4JDefinition.getPortTypes().putAll(porttypeMap);
+
+                            // add bindings
+                            Map bindingMap = importedDef.getBindings();
+                            wsdl4JDefinition.getBindings().putAll(bindingMap);
+
+                            // add services
+                            Map serviceMap = importedDef.getServices();
+                            wsdl4JDefinition.getServices().putAll(serviceMap);
+
+                            List extElementList = importedDef
+                                    .getExtensibilityElements();
+                            wsdl4JDefinition.getExtensibilityElements().addAll(
+                                    extElementList);
+
+                        }
+
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Read the WSDL file given the inputstream for the WSDL source
+     *
+     * @param in
+     * @throws WSDLException
+     */
+    private Definition readInTheWSDLFile(InputStream in) throws WSDLException {
+
+        WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
+
+        // switch off the verbose mode for all usecases
+        reader.setFeature(JAVAX_WSDL_VERBOSE_MODE_KEY, false);
+
+        // if the custem resolver is present then use it
+        if (customWSLD4JResolver != null) {
+            return reader.readWSDL(customWSLD4JResolver);
+        } else {
+            Document doc;
+            try {
+                doc = XMLUtils.newDocument(in);
+            } catch (ParserConfigurationException e) {
+                throw new WSDLException(WSDLException.PARSER_ERROR,
+                        "Parser Configuration Error", e);
+            } catch (SAXException e) {
+                throw new WSDLException(WSDLException.PARSER_ERROR,
+                        "Parser SAX Error", e);
+
+            } catch (IOException e) {
+                throw new WSDLException(WSDLException.INVALID_WSDL, "IO Error",
+                        e);
+            }
+            return reader.readWSDL(getBaseUri(), doc);
+        }
+    }
+
+    /**
+     * Get the Extensible elements form wsdl4jExtensibleElements
+     * <code>Vector</code> if any and copy them to <code>Component</code>
+     * <p/> Note - SOAP body extensible element will be processed differently
+     *
+     * @param wsdl4jExtensibleElements
+     * @param description                   where is the ext element (port , portype , biding)
+     * @param wsdl4jDefinition
+     * @param originOfExtensibilityElements -
+     *                                      this will indicate the place this extensibility element came
+     *                                      from.
+     */
+    private void copyExtensibleElements(List wsdl4jExtensibleElements,
+                                        Definition wsdl4jDefinition, AxisDescription description,
+                                        String originOfExtensibilityElements) throws AxisFault {
+        Iterator iterator = wsdl4jExtensibleElements.iterator();
+        while (iterator.hasNext()) {
+            ExtensibilityElement wsdl4jElement = (ExtensibilityElement) iterator
+                    .next();
+
+            if (wsdl4jElement instanceof UnknownExtensibilityElement) {
+                UnknownExtensibilityElement unknown = (UnknownExtensibilityElement) (wsdl4jElement);
+
+                if (WSDLConstants.WSDL11Constants.POLICY.equals(unknown
+                        .getElementType())) {
+
+                    Policy policy = (Policy) PolicyUtil
+                            .getPolicyComponent(unknown.getElement());
+                    addPolicy(description, originOfExtensibilityElements,
+                            policy);
+
+                } else if (WSDLConstants.WSDL11Constants.POLICY_REFERENCE
+                        .equals(unknown.getElementType())) {
+
+                    PolicyReference policyReference = (PolicyReference) PolicyUtil
+                            .getPolicyComponent(unknown.getElement());
+                    addPolicyRef(description, originOfExtensibilityElements,
+                            policyReference);
+
+                } else if (AddressingConstants.Final.WSAW_USING_ADDRESSING
+                        .equals(unknown.getElementType())
+                        || AddressingConstants.Submission.WSAW_USING_ADDRESSING
+                        .equals(unknown.getElementType())) {
+                    // Read the wsaw:UsingAddressing flag from the WSDL. It is
+                    // only valid on the Port or Binding
+                    // so only recognise it as en extensibility elemtn of one of
+                    // those.
+                    if (originOfExtensibilityElements.equals(PORT)
+                            || originOfExtensibilityElements.equals(BINDING)) {
+                        if (Boolean.TRUE.equals(unknown.getRequired())) {
+                            axisService
+                                    .setWSAddressingFlag(AddressingConstants.ADDRESSING_REQUIRED);
+                        } else {
+                            axisService
+                                    .setWSAddressingFlag(AddressingConstants.ADDRESSING_OPTIONAL);
+                        }
+                    }
+                } else if (AddressingConstants.Final.WSAW_ANONYMOUS
+                        .equals(unknown.getElementType())) {
+                    if (originOfExtensibilityElements.equals(BINDING_OPERATION)) {
+                        AxisOperation axisOperation = (AxisOperation) description;
+                        if (unknown.getElement().getFirstChild() != null
+                                && unknown.getElement().getFirstChild()
+                                .getNodeType() == Node.TEXT_NODE) {
+                            String anonymousValue = unknown.getElement()
+                                    .getFirstChild().getNodeValue();
+                            AddressingHelper.setAnonymousParameterValue(
+                                    axisOperation, anonymousValue);
+                        }
+                    }
+                } else {
+                    // Ignore this element - it is a totally unknown element
+                    // and we don't care!
+                }
+
+                // WSDL4J has all the SOAP 1.1 and SOAP 1.2 Items built in. So we can check
+                // the items directly
+            } else if (wsdl4jElement instanceof SOAP12Address) {
+                SOAP12Address soapAddress = (SOAP12Address) wsdl4jElement;
+                axisService.setEndpoint(soapAddress.getLocationURI());
+            } else if (wsdl4jElement instanceof SOAPAddress) {
+                SOAPAddress soapAddress = (SOAPAddress) wsdl4jElement;
+                axisService.setEndpoint(soapAddress.getLocationURI());
+            } else if (wsdl4jElement instanceof Schema) {
+                Schema schema = (Schema) wsdl4jElement;
+                // just add this schema - no need to worry about the imported
+                // ones
+                axisService.addSchema(getXMLSchema(schema.getElement(), schema
+                        .getDocumentBaseURI()));
+            } else if (wsdl4jElement instanceof SOAP12Operation) {
+                SOAP12Operation soapOperation = (SOAP12Operation) wsdl4jElement;
+                if (description instanceof AxisOperation) {
+                    AxisOperation axisOperation = (AxisOperation) description;
+                    if (soapOperation.getStyle() != null) {
+                        axisOperation.setStyle(soapOperation.getStyle());
+                    }
+                    axisOperation.setSoapAction(soapOperation
+                            .getSoapActionURI());
+                }
+            } else if (wsdl4jElement instanceof SOAPOperation) {
+                SOAPOperation soapOperation = (SOAPOperation) wsdl4jElement;
+                if (description instanceof AxisOperation) {
+                    AxisOperation axisOperation = (AxisOperation) description;
+                    if (soapOperation.getStyle() != null) {
+                        axisOperation.setStyle(soapOperation.getStyle());
+                    }
+                    axisOperation.setSoapAction(soapOperation
+                            .getSoapActionURI());
+                }
+            } else if (wsdl4jElement instanceof SOAP12Header) {
+                SOAP12Header soapHeader = (SOAP12Header) wsdl4jElement;
+                SOAPHeaderMessage headerMessage = new SOAPHeaderMessage();
+                headerMessage.setNamespaceURI(soapHeader.getNamespaceURI());
+                headerMessage.setUse(soapHeader.getUse());
+                Boolean required = soapHeader.getRequired();
+                if (null != required) {
+                    headerMessage.setRequired(required.booleanValue());
+                }
+                if (null != wsdl4jDefinition) {
+                    // find the relevant schema part from the messages
+                    Message msg = wsdl4jDefinition.getMessage(soapHeader
+                            .getMessage());
+                    if (msg == null) {
+                        // todo i18n this
+                        throw new AxisFault("message "
+                                + soapHeader.getMessage()
+                                + " not found in the WSDL ");
+                    }
+                    Part msgPart = msg.getPart(soapHeader.getPart());
+                    if (msgPart == null) {
+                        // todo i18n this
+                        throw new AxisFault("message part "
+                                + soapHeader.getPart()
+                                + " not found in the WSDL ");
+                    }
+                    headerMessage.setElement(msgPart.getElementName());
+                }
+                headerMessage.setMessage(soapHeader.getMessage());
+
+                headerMessage.setPart(soapHeader.getPart());
+                if (description instanceof AxisMessage) {
+                    ((AxisMessage) description).addSoapHeader(headerMessage);
+                }
+            } else if (wsdl4jElement instanceof SOAPHeader) {
+                SOAPHeader soapHeader = (SOAPHeader) wsdl4jElement;
+                SOAPHeaderMessage headerMessage = new SOAPHeaderMessage();
+                headerMessage.setNamespaceURI(soapHeader.getNamespaceURI());
+                headerMessage.setUse(soapHeader.getUse());
+                Boolean required = soapHeader.getRequired();
+                if (null != required) {
+                    headerMessage.setRequired(required.booleanValue());
+                }
+                if (null != wsdl4jDefinition) {
+                    // find the relevant schema part from the messages
+                    Message msg = wsdl4jDefinition.getMessage(soapHeader
+                            .getMessage());
+                    if (msg == null) {
+                        // todo i18n this
+                        throw new AxisFault("message "
+                                + soapHeader.getMessage()
+                                + " not found in the WSDL ");
+                    }
+                    Part msgPart = msg.getPart(soapHeader.getPart());
+                    if (msgPart == null) {
+                        // todo i18n this
+                        throw new AxisFault("message part "
+                                + soapHeader.getPart()
+                                + " not found in the WSDL ");
+                    }
+                    headerMessage.setElement(msgPart.getElementName());
+                }
+                headerMessage.setMessage(soapHeader.getMessage());
+
+                headerMessage.setPart(soapHeader.getPart());
+                if (description instanceof AxisMessage) {
+                    ((AxisMessage) description).addSoapHeader(headerMessage);
+                }
+            } else if (wsdl4jElement instanceof SOAPBinding) {
+                SOAPBinding soapBinding = (SOAPBinding) wsdl4jElement;
+                style = soapBinding.getStyle();
+                axisService.setSoapNsUri(soapBinding.getElementType()
+                        .getNamespaceURI());
+            } else if (wsdl4jElement instanceof SOAP12Binding) {
+                SOAP12Binding soapBinding = (SOAP12Binding) wsdl4jElement;
+                style = soapBinding.getStyle();
+                axisService.setSoapNsUri(soapBinding.getElementType()
+                        .getNamespaceURI());
+            }
+        }
+    }
+
+    /**
+     * Add a policy
+     *
+     * @param description
+     * @param originOfExtensibilityElements
+     * @param policy
+     */
+    private void addPolicy(AxisDescription description,
+                           String originOfExtensibilityElements, Policy policy) {
+
+        if (description instanceof AxisService) {
+            // wsdl:service
+            if (SERVICE.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.SERVICE_POLICY, policy);
+
+                // wsdl:service -> wsdl:port
+            } else if (PORT.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.PORT_POLICY, policy);
+
+                // wsdl:binding
+            } else if (BINDING.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.BINDING_POLICY, policy);
+
+            }
+
+            // TODO wsdl:portType ?
+
+        } else if (description instanceof AxisOperation) {
+
+            // wsdl:portType -> wsdl:operation
+            if (PORT_TYPE_OPERATION.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.OPERATION_POLICY, policy);
+
+                // wsdl:binding -> wsdl:operation
+            } else {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.BINDING_OPERATION_POLICY, policy);
+            }
+
+        } else {
+
+            // wsdl:portType -> wsdl:operation -> wsdl:input
+            if (PORT_TYPE_OPERATION_INPUT.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.INPUT_POLICY, policy);
+
+                // wsdl:binding -> wsdl:operation -> wsdl:input
+            } else if (BINDING_OPERATION_INPUT
+                    .equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.BINDING_INPUT_POLICY, policy);
+
+                // wsdl:portType -> wsdl:operation -> wsdl:put
+            } else if (PORT_TYPE_OPERATION_OUTPUT
+                    .equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.OUTPUT_POLICY, policy);
+
+                // wsdl:binding -> wsdl:operation -> wsdl:output
+            } else if (BINDING_OPERATION_OUTPUT
+                    .equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyElement(
+                        PolicyInclude.BINDING_OUTPUT_POLICY, policy);
+            }
+        }
+    }
+
+    /**
+     * Add a policy reference
+     *
+     * @param description
+     * @param originOfExtensibilityElements
+     * @param policyRefElement
+     */
+    private void addPolicyRef(AxisDescription description,
+                              String originOfExtensibilityElements,
+                              PolicyReference policyRefElement) {
+
+        if (description instanceof AxisService) {
+            // wsdl:service
+            if (SERVICE.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.SERVICE_POLICY, policyRefElement);
+
+                // wsdl:service -> wsdl:port
+            } else if (PORT.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.PORT_POLICY, policyRefElement);
+
+                // wsdl:binding
+            } else if (BINDING.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.BINDING_POLICY, policyRefElement);
+            }
+
+            // TODO policy for wsdl:portType ?
+
+        } else if (description instanceof AxisOperation) {
+
+            // wsdl:portType -> wsdl:operation
+            if (PORT_TYPE_OPERATION.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.OPERATION_POLICY, policyRefElement);
+
+                // wsdl:binding -> wsdl:operation
+            } else {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.BINDING_POLICY, policyRefElement);
+            }
+
+        } else {
+
+            // wsdl:portType -> wsdl:operation -> wsdl:input
+            if (PORT_TYPE_OPERATION_INPUT.equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.INPUT_POLICY, policyRefElement);
+
+                // wsdl:binding -> wsdl:operation -> wsdl:input
+            } else if (BINDING_OPERATION_INPUT
+                    .equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.BINDING_INPUT_POLICY, policyRefElement);
+
+                // wsdl:portType -> wsdl:operation -> wsdl:put
+            } else if (PORT_TYPE_OPERATION_OUTPUT
+                    .equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.OUTPUT_POLICY, policyRefElement);
+
+                // wsdl:binding -> wsdl:operation -> wsdl:output
+            } else if (BINDING_OPERATION_OUTPUT
+                    .equals(originOfExtensibilityElements)) {
+                description.getPolicyInclude().addPolicyRefElement(
+                        PolicyInclude.BINDING_OUTPUT_POLICY, policyRefElement);
+            }
+
+            // TODO Faults ..
+        }
+    }
+
+    /**
+     * Look for the wrappable operations depending on the style
+     *
+     * @param binding
+     */
+    private List findWrappableOperations(Binding binding) {
+        // first find the global style declaration.
+        // for a SOAP binding this can be only rpc or document
+        // as per the WSDL spec (section 3.4) the default style is document
+
+        boolean isRPC = false;
+        boolean isSOAPBinding = false;
+
+        List extElements = binding.getExtensibilityElements();
+        for (int i = 0; i < extElements.size(); i++) {
+            if (extElements.get(i) instanceof SOAPBinding) {
+                // we have a global SOAP binding!
+                isSOAPBinding = true;
+                SOAPBinding soapBinding = (SOAPBinding) extElements.get(i);
+                if (RPC_STYLE.equals(soapBinding.getStyle())) {
+                    // set the global style to rpc
+                    isRPC = true;
+                }
+
+                break;
+            }
+        }
+
+        // if SOAPBinding is not present just return an empty list
+        if (!isSOAPBinding) {
+            return new ArrayList();
+        }
+
+        // go through every operation and get their styles.
+        // each one can have a style override from the global
+        // styles. Depending on the style add the relevant operations
+        // to the return list
+        List returnList = new ArrayList();
+
+        BindingOperation bindingOp;
+        for (Iterator bindingOperationsIterator = binding
+                .getBindingOperations().iterator(); bindingOperationsIterator
+                .hasNext();) {
+            bindingOp = (BindingOperation) bindingOperationsIterator.next();
+            String style = getSOAPStyle(bindingOp);
+
+            if (style == null) {
+                // no style specified
+                // use the global style to determine whether to put this one or
+                // not
+                if (isRPC) {
+                    returnList.add(bindingOp.getOperation());
+                }
+            } else if (RPC_STYLE.equals(style)) {
+                // add to the list
+                returnList.add(bindingOp.getOperation());
+            }
+            // if not RPC we just leave it - default is doc
+
+        }
+
+        // set this to the global list
+        wrappableOperations = returnList;
+        return returnList;
+    }
+
+    /**
+     * Guess the MEP based on the order of messages
+     *
+     * @param operation
+     * @throws Exception
+     */
+    private String getMEP(Operation operation) throws Exception {
+        OperationType operationType = operation.getStyle();
+        if (isServerSide) {
+            if (null != operationType) {
+                if (operationType.equals(OperationType.REQUEST_RESPONSE))
+                    return WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT;
+
+                if (operationType.equals(OperationType.ONE_WAY)) {
+                    if (operation.getFaults().size() > 0) {
+                        return WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY;
+                    }
+                    return WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY;
+                }
+
+                if (operationType.equals(OperationType.NOTIFICATION))
+                    return WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY;
+
+                if (operationType.equals(OperationType.SOLICIT_RESPONSE))
+                    return WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_IN;
+                throw new Exception("Cannot Determine the MEP");
+            }
+        } else {
+            if (null != operationType) {
+                if (operationType.equals(OperationType.REQUEST_RESPONSE))
+                    return WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_IN;
+
+                if (operationType.equals(OperationType.ONE_WAY))
+                    return WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY;
+
+                if (operationType.equals(OperationType.NOTIFICATION))
+                    return WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY;
+
+                if (operationType.equals(OperationType.SOLICIT_RESPONSE))
+                    return WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT;
+                throw new Exception("Cannot Determine the MEP");
+            }
+        }
+        throw new Exception("Cannot Determine the MEP");
+    }
+
+    /**
+     * Copies the extension attributes
+     *
+     * @param extAttributes
+     * @param description
+     * @param origin
+     */
+    private void copyExtensionAttributes(Map extAttributes,
+                                         AxisDescription description, String origin) {
+
+        QName key;
+        QName value;
+
+        for (Iterator iterator = extAttributes.keySet().iterator(); iterator
+                .hasNext();) {
+            key = (QName) iterator.next();
+
+            if (Constants.URI_POLICY_NS.equals(key.getNamespaceURI())
+                    && "PolicyURIs".equals(key.getLocalPart())) {
+
+                value = (QName) extAttributes.get(key);
+                String policyURIs = value.getLocalPart();
+
+                if (policyURIs.length() != 0) {
+                    String[] uris = policyURIs.split(" ");
+
+                    PolicyReference ref;
+                    for (int i = 0; i < uris.length; i++) {
+                        ref = new PolicyReference();
+                        ref.setURI(uris[i]);
+
+                        if (PORT_TYPE.equals(origin)) {
+                            PolicyInclude include = description
+                                    .getPolicyInclude();
+                            include.addPolicyRefElement(
+                                    PolicyInclude.PORT_TYPE_POLICY, ref);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Process the policy definitions
+     *
+     * @param definition
+     */
+    private void processPoliciesInDefintion(Definition definition) {
+        List extElements = definition.getExtensibilityElements();
+
+        ExtensibilityElement extElement;
+        for (Iterator iterator = extElements.iterator(); iterator.hasNext();) {
+            extElement = (ExtensibilityElement) iterator.next();
+
+            if (extElement instanceof UnknownExtensibilityElement) {
+                UnknownExtensibilityElement unknown = (UnknownExtensibilityElement) extElement;
+                if (WSDLConstants.WSDL11Constants.POLICY.equals(unknown
+                        .getElementType())) {
+
+                    Policy policy = (Policy) PolicyUtil
+                            .getPolicyComponent(unknown.getElement());
+
+                    String key;
+                    if ((key = policy.getName()) != null
+                            || (key = policy.getId()) != null) {
+                        registry.register(key, policy);
+                    }
+
+                }
+            }
+        }
+    }
+
+    /**
+     * Inner class declaration for the processing exceptions
+     */
+    public static class WSDLProcessingException extends RuntimeException {
+        public WSDLProcessingException() {
+        }
+
+        public WSDLProcessingException(String message) {
+            super(message);
+        }
+
+        public WSDLProcessingException(Throwable cause) {
+            super(cause);
+        }
+
+        public WSDLProcessingException(String message, Throwable cause) {
+            super(message, cause);
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL20ToAllAxisServicesBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL20ToAllAxisServicesBuilder.java
new file mode 100644
index 0000000..82e080d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL20ToAllAxisServicesBuilder.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map.Entry;
+import org.apache.woden.wsdl20.Description;
+import org.apache.woden.wsdl20.Endpoint;
+import org.apache.woden.wsdl20.Interface;
+import org.apache.woden.wsdl20.Service;
+
+
+import javax.wsdl.WSDLException;
+
+import org.apache.axis2.AxisFault;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Extends the WSDL20ToAxisServiceBuilder class to provide functionality to return
+ * multiple AxisService objects; one for each endpoint on each service in the WSDL 2.0 file.
+ *
+ */
+public class WSDL20ToAllAxisServicesBuilder extends WSDL20ToAxisServiceBuilder {
+    protected static final Log log =
+        LogFactory.getLog(WSDL20ToAllAxisServicesBuilder.class);
+
+    private ArrayList axisServices = null;
+    
+    /**
+     * Class constructor.  
+     * @param in  - Contains the wsdl 2.0 file
+     */
+    public WSDL20ToAllAxisServicesBuilder(InputStream in) {
+        super(in, null, null);
+        axisServices = new ArrayList();   // create an empty ArrayList
+    }
+    
+    /**
+     * Public method to access the wsdl 2.0 file and create a List of AxisService objects.
+     * For each endpoint on each service in the wsdl, an AxisService object is created and
+     * added to the List.  The name of the AxisService is changed from the service name
+     * to the the following: <service name>#<endpoint name>.  Note that the endpoint name
+     * is not unique to a wsdl 2.0 file.  Multiple services in the file may have endpoints
+     * with the same name.  Therefore the name of the AxisService needs to be a combination
+     * of service/endpoint name to be unique to the wsdl.  
+     * @return A List containing one AxisService object for each port in the wsdl file.
+     * The name of the AxisService is modified to uniquely represent the service/endpoint
+     * pair.  The format of the name is "<wsdl service name>#<wsdl endpoint name>"
+     * @throws AxisFault 
+     */
+    public List populateAllServices() throws AxisFault {
+        try {
+            if (log.isDebugEnabled()) {
+                log.debug("Entry: populateAllServices");
+            }
+            setup();  // setup contains code with gathers non-service specific info
+                      // from the WSDL.  This only needs to be done once per WSDL.
+            if (description == null) {  
+                if (log.isDebugEnabled()) {
+                    log.debug("Exit: populateAllServices.  wsdl description is null!");
+                }
+                return null;   // can't go any further without the wsdl
+            }
+            Service[] services = description.getServices();
+            for (int i = 0; i < services.length; i++) {
+                Service service = services[i];
+                // set the serviceName on the parent to setup call to populateService
+                serviceName = service.getName();
+                Endpoint[] endpoints = service.getEndpoints();
+                for (int j = 0; j < endpoints.length; j++) {
+                    interfaceName = endpoints[j].getName().toString();
+                    // start with a fresh axisService
+                    this.axisService = new AxisService();
+                    // now that serviceName and interfaceName are set, call up to the
+                    // parent class to populate this service.                   
+                    AxisService retAxisService = populateService();
+                    if (retAxisService != null) {
+                        // since this AxisService really represents the wsdl
+                        // port, change the name
+                        // from wsdl service name to port name.
+                        // TODO: mangle name?
+                        retAxisService.setName(retAxisService.getName() + "$" + interfaceName); // TODO: mangle name????
+                        axisServices.add(retAxisService);
+                    } // end if axisService was returned
+                } // end for all ports of a service
+            } // end for all services in the wsdl
+            if (log.isDebugEnabled()) {
+                log.debug("Exit: populateAllServices.");
+            }
+            return axisServices;
+        } catch (AxisFault e) {
+            throw e;  // just rethrow any AxisFaults
+        } catch (Exception e) {
+            if (log.isDebugEnabled()) {
+                log.debug("populateAllServices caught Exception.  Converting to AxisFault. " + e.toString());
+            }
+            throw new AxisFault(e);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder.java
new file mode 100644
index 0000000..6824131
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder.java
@@ -0,0 +1,948 @@
+package org.apache.axis2.description;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.namespace.Constants;
+import org.apache.axis2.util.PolicyUtil;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.woden.WSDLException;
+import org.apache.woden.WSDLFactory;
+import org.apache.woden.WSDLReader;
+import org.apache.woden.WSDLSource;
+import org.apache.woden.internal.DOMWSDLFactory;
+import org.apache.woden.schema.Schema;
+import org.apache.woden.wsdl20.Binding;
+import org.apache.woden.wsdl20.Description;
+import org.apache.woden.wsdl20.Endpoint;
+import org.apache.woden.wsdl20.Interface;
+import org.apache.woden.wsdl20.InterfaceFaultReference;
+import org.apache.woden.wsdl20.InterfaceMessageReference;
+import org.apache.woden.wsdl20.InterfaceOperation;
+import org.apache.woden.wsdl20.Service;
+import org.apache.woden.wsdl20.enumeration.Direction;
+import org.apache.woden.wsdl20.extensions.ExtensionElement;
+import org.apache.woden.wsdl20.extensions.UnknownExtensionElement;
+import org.apache.woden.wsdl20.xml.BindingElement;
+import org.apache.woden.wsdl20.xml.DescriptionElement;
+import org.apache.woden.wsdl20.xml.InterfaceElement;
+import org.apache.woden.wsdl20.xml.InterfaceFaultReferenceElement;
+import org.apache.woden.wsdl20.xml.InterfaceMessageReferenceElement;
+import org.apache.woden.wsdl20.xml.InterfaceOperationElement;
+import org.apache.woden.wsdl20.xml.TypesElement;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.utils.NamespaceMap;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class WSDL20ToAxisServiceBuilder extends WSDLToAxisServiceBuilder {
+
+    protected Description description;
+
+    private String wsdlURI;
+
+    // FIXME @author Chathura THis shoud be a URI. Find whats used by
+    // woden.
+    private static String RPC = "rpc";
+
+    protected String interfaceName;
+
+    private String savedTargetNamespace;
+
+    private Map namespacemap;
+    
+    private NamespaceMap stringBasedNamespaceMap;
+    
+    private boolean setupComplete = false;
+
+    public WSDL20ToAxisServiceBuilder(InputStream in, QName serviceName,
+                                      String interfaceName) {
+        this.in = in;
+        this.serviceName = serviceName;
+        this.interfaceName = interfaceName;
+        this.axisService = new AxisService();
+        setPolicyRegistryFromService(axisService);
+    }
+
+    public WSDL20ToAxisServiceBuilder(String wsdlUri,
+                                      String name, String interfaceName)  throws Exception  {
+        WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader();
+        DescriptionElement descriptionElement = wsdlReader.readWSDL(wsdlUri);
+        savedTargetNamespace = descriptionElement.getTargetNamespace()
+                .toString();
+        namespacemap = descriptionElement.getNamespaces();
+        this.description = descriptionElement.toComponent();
+        this.serviceName = null;
+        if(name != null) {
+            serviceName = new QName(descriptionElement.getTargetNamespace().toString(), name);
+        }
+        this.interfaceName = interfaceName;
+        this.axisService = new AxisService();
+        setPolicyRegistryFromService(axisService);
+    }
+
+    public WSDL20ToAxisServiceBuilder(String wsdlUri, QName serviceName) {
+        super(null, serviceName);
+        this.wsdlURI = wsdlUri;
+    }
+
+    public WSDL20ToAxisServiceBuilder(String wsdlUri, AxisService service) {
+        super(null, service);
+        this.wsdlURI = wsdlUri;
+    }
+
+    public AxisService populateService() throws AxisFault {
+
+        try {
+            setup();
+            // Setting wsdl4jdefintion to axisService , so if some one want
+            // to play with it he can do that by getting the parameter
+            Parameter wsdlDescriptionParamter = new Parameter();
+            wsdlDescriptionParamter.setName(WSDLConstants.WSDL_20_DESCRIPTION);
+            wsdlDescriptionParamter.setValue(description);
+            axisService.addParameter(wsdlDescriptionParamter);
+
+            if (description == null) {
+                return null;
+            }
+            // setting target name space
+            axisService.setTargetNamespace(savedTargetNamespace);
+
+            // if there are documentation elements in the root. Lets add them as the service description
+            // but since there can be multiple documentation elements, lets only add the first one
+//            DocumentationElement[] documentationElements = description.toElement().getDocumentationElements();
+//            if (documentationElements != null && documentationElements.length > 0) {
+//                axisService.setServiceDescription(documentationElements[0].getContent().toString());
+//            }
+
+            // adding ns in the original WSDL
+            // processPoliciesInDefintion(wsdl4jDefinition); TODO : Defering policy handling for now - Chinthaka
+            // policy support
+
+            // schema generation
+
+            // Create the namespacemap
+
+            axisService.setNameSpacesMap(stringBasedNamespaceMap);
+            // TypeDefinition[] typeDefinitions =
+            // description.getTypeDefinitions();
+            // for(int i=0; i<typeDefinitions.length; i++){
+            // if("org.apache.ws.commons.schema".equals(typeDefinitions[i].getContentModel())){
+            // axisService.addSchema((XmlSchema)typeDefinitions[i].getContent());
+            // }else
+            // if("org.w3c.dom".equals(typeDefinitions[i].getContentModel())){
+            // axisService.addSchema(getXMLSchema((Element)typeDefinitions[i].getContent(),
+            // null));
+            // }
+            //                
+            // }
+
+            TypesElement typesElement = description.toElement()
+                    .getTypesElement();
+            if (typesElement != null) {
+                Schema[] schemas = typesElement.getSchemas();
+                for (int i = 0; i < schemas.length; i++) {
+                    XmlSchema schemaDefinition = schemas[i].getSchemaDefinition();
+
+
+                    // WSDL 2.0 spec requires that even the built-in schema should be returned
+                    // once asked for schema definitions. But for data binding purposes we can ignore that
+                    if (schemaDefinition != null && !Constants.URI_2001_SCHEMA_XSD.equals(schemaDefinition.getTargetNamespace())) {
+                        axisService.addSchema(schemaDefinition);
+                    }
+                }
+            }
+
+            Binding binding = findBinding(description);
+            // //////////////////(1.2) /////////////////////////////
+            // // create new Schema extensions element for wrapping
+            // Element[] schemaElements =
+            // generateWrapperSchema(descriptionElement,
+            // binding);
+            // if (schemaElements != null && schemaElements.length > 0) {
+            // for (int i = 0; i < schemaElements.length; i++) {
+            // Element schemaElement = schemaElements[i];
+            // if (schemaElement != null) {
+            // axisService.addSchema(getXMLSchema(schemaElement, null));
+            // }
+            // }
+            // }
+            processBinding(binding, description);
+            return axisService;
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+    }
+    
+    /**
+     * contains all code which gathers non-service specific information from the
+     * wsdl.
+     * <p>
+     * After all the setup completes successfully, the setupComplete field is
+     * set so that any subsequent calls to setup() will result in a no-op. Note
+     * that subclass WSDL20ToAllAxisServicesBuilder will call populateService
+     * for each endpoint in the WSDL. Separating the non-service specific
+     * information here allows WSDL20ToAllAxisServicesBuilder to only do this
+     * work 1 time per WSDL, instead of for each endpoint on each service.
+     * 
+     * @throws AxisFault
+     */
+    protected void setup() throws AxisFault {
+        if (setupComplete) { // already setup, just do nothing and return
+            return;
+        }
+        try {
+            if (description == null) {
+
+                DescriptionElement descriptionElement = null;
+                if (wsdlURI != null && !"".equals(wsdlURI)) {
+                    descriptionElement = readInTheWSDLFile(wsdlURI);
+                } else if (in != null) {
+
+                    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
+                            .newInstance();
+                    documentBuilderFactory.setNamespaceAware(true);
+                    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+                    Document document = documentBuilder.parse(in);
+
+                    WSDLReader reader = DOMWSDLFactory.newInstance().newWSDLReader();
+                    WSDLSource wsdlSource = reader.createWSDLSource();
+                    wsdlSource.setSource(document.getDocumentElement());
+                    // wsdlSource.setBaseURI(new URI(getBaseUri()));
+                    descriptionElement = reader.readWSDL(wsdlSource);
+                } else {
+                    throw new AxisFault("No resources found to read the wsdl");
+                }
+
+                savedTargetNamespace = descriptionElement.getTargetNamespace().toString();
+                namespacemap = descriptionElement.getNamespaces();
+                this.description = descriptionElement.toComponent();
+
+            }
+            // Create the namespacemap
+
+            stringBasedNamespaceMap = new NamespaceMap();
+            Iterator iterator = namespacemap.keySet().iterator();
+            while (iterator.hasNext()) {
+                String key = (String) iterator.next();
+                stringBasedNamespaceMap.put(key, (namespacemap.get(key)).toString());
+            }
+
+            setupComplete = true;
+        } catch (AxisFault e) {
+            throw e; // just rethrow AxisFaults
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+    }
+    
+    private void processBinding(Binding binding, Description description)
+            throws Exception {
+        if (binding != null) {
+
+            // TODO @author Chathura have to copy policy elements.
+            // copyExtensibleElements(binding.getExtensibilityElements(), dif,
+            // axisService, BINDING);
+
+            Interface serviceInterface = binding.getInterface();
+
+            processInterface(serviceInterface, description);
+
+        }
+    }
+
+    private void processInterface(Interface serviceInterface, Description dif)
+            throws Exception {
+
+        // TODO @author Chathura copy the policy elements
+        // copyExtensionAttributes(wsdl4jPortType.getExtensionAttributes(),
+        // axisService, PORT_TYPE);
+
+        InterfaceOperation[] interfaceOperations = serviceInterface
+                .getInterfaceOperations();
+        for (int i = 0; i < interfaceOperations.length; i++) {
+            axisService.addOperation(populateOperations(interfaceOperations[i],
+                    description));
+        }
+
+    }
+
+    private AxisOperation populateOperations(InterfaceOperation operation,
+                                             Description description) throws Exception {
+        QName opName = operation.getName();
+        // Copy Name Attribute
+        AxisOperation axisOperation = axisService.getOperation(opName);
+        if (axisOperation == null) {
+            String MEP = operation.getMessageExchangePattern().toString();
+            axisOperation = AxisOperationFactory.getOperationDescription(MEP);
+            axisOperation.setName(opName);
+
+            // All policy includes must share same registry
+            PolicyInclude pi = axisOperation.getPolicyInclude();
+            if (pi == null) {
+                pi = new PolicyInclude();
+                axisOperation.setPolicyInclude(pi);
+            }
+            pi.setPolicyRegistry(registry);
+        }
+
+        // assuming the style of the operations of WSDL 2.0 is always document.
+        axisOperation.setStyle("document");
+
+        // copyExtensibleElements(wsdl4jOperation.getExtensibilityElements(),
+        // dif,
+        // axisOperation, PORT_TYPE_OPERATION);
+
+        InterfaceMessageReference[] interfaceMessageReferences = operation
+                .getInterfaceMessageReferences();
+        for (int i = 0; i < interfaceMessageReferences.length; i++) {
+            InterfaceMessageReferenceElement messageReference = interfaceMessageReferences[i].toElement();
+            if (messageReference.getMessageLabel().equals(
+                    messageReference.getMessageLabel().IN)) {
+                // Its an input message
+
+                if (isServerSide) {
+                    AxisMessage inMessage = axisOperation
+                            .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+
+                    inMessage.setElementQName(messageReference.getElementName());
+                    inMessage.setName(messageReference.getElementName().getLocalPart());
+                    // TODO copy policy elements
+                } else {
+                    AxisMessage inMessage = axisOperation
+                            .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+
+                    inMessage.setElementQName(messageReference.getElementName());
+                    inMessage.setName(messageReference.getElementName().getLocalPart());
+                    // TODO copy policy elements
+                }
+            } else if (messageReference.getMessageLabel().equals(
+                    messageReference.getMessageLabel().OUT)) {
+                if (isServerSide) {
+                    AxisMessage outMessage = axisOperation
+                            .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+
+                    outMessage.setElementQName(messageReference.getElementName());
+                    outMessage.setName(messageReference.getElementName().getLocalPart());
+//                  TODO copy policy elements
+                } else {
+                    AxisMessage outMessage = axisOperation
+                            .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+
+                    outMessage.setElementQName(messageReference.getElementName());
+                    outMessage.setName(messageReference.getElementName().getLocalPart());
+//                  TODO copy policy elements
+                }
+            }
+
+        }
+
+
+        // add operation level faults
+        InterfaceFaultReference[] faults = operation.getInterfaceFaultReferences();
+        for (int i = 0; i < faults.length; i++) {
+            AxisMessage faultMessage = new AxisMessage();
+
+            InterfaceFaultReferenceElement interfaceFaultReferenceElement = faults[i].toElement();
+            faultMessage.setDirection(interfaceFaultReferenceElement.getDirection().toString());
+
+            faultMessage.setElementQName(interfaceFaultReferenceElement.getInterfaceFaultElement().getElementName());
+            faultMessage.setName(interfaceFaultReferenceElement.getRef().getLocalPart());
+            axisOperation.setFaultMessages(faultMessage);
+        }
+
+
+        return axisOperation;
+    }
+
+    private void copyExtensibleElements(ExtensionElement[] extensionElement,
+                                        DescriptionElement descriptionElement, AxisDescription description,
+                                        String originOfExtensibilityElements) {
+        for (int i = 0; i < extensionElement.length; i++) {
+            ExtensionElement element = extensionElement[i];
+
+            if (element instanceof UnknownExtensionElement) {
+                UnknownExtensionElement unknown = (UnknownExtensionElement) element;
+
+                // look for the SOAP 1.2 stuff here. WSDL4j does not understand
+                // SOAP 1.2 things
+                // TODO this is wrong. Compare this with WSDL 2.0 QName
+                if (WSDLConstants.WSDL11Constants.SOAP_12_OPERATION.equals(unknown
+                        .getExtensionType())) {
+                    Element unknownElement = unknown.getElement();
+                    if (description instanceof AxisOperation) {
+                        AxisOperation axisOperation = (AxisOperation) description;
+                        String style = unknownElement.getAttribute("style");
+                        if (style != null) {
+                            axisOperation.setStyle(style);
+                        }
+                        axisOperation.setSoapAction(unknownElement
+                                .getAttribute("soapAction"));
+                    }
+                } else if (WSDLConstants.WSDL11Constants.SOAP_12_HEADER.equals(unknown
+                        .getExtensionType())) {
+                    // TODO : implement thid
+                } else if (WSDLConstants.WSDL11Constants.SOAP_12_BINDING.equals(unknown
+                        .getExtensionType())) {
+                    style = unknown.getElement().getAttribute("style");
+                    axisService.setSoapNsUri(element.getExtensionType()
+                            .getNamespaceURI());
+                } else if (WSDLConstants.WSDL11Constants.SOAP_12_ADDRESS.equals(unknown
+                        .getExtensionType())) {
+                    axisService.setEndpoint(unknown.getElement().getAttribute(
+                            "location"));
+                } else if (WSDLConstants.WSDL11Constants.POLICY.equals(unknown
+                        .getExtensionType())) {
+                    // TODO
+
+
+                } else if (WSDLConstants.WSDL11Constants.POLICY_REFERENCE.equals(unknown
+                        .getExtensionType())) {
+                    // TODO
+
+                    
+
+                } else {
+                    // TODO : we are ignored that.
+                }
+
+                // } else if (element instanceof SOAPAddress) {
+                // SOAPAddress soapAddress = (SOAPAddress) wsdl4jElement;
+                // axisService.setEndpoint(soapAddress.getLocationURI());
+                // } else if (wsdl4jElement instanceof Schema) {
+                // Schema schema = (Schema) wsdl4jElement;
+                // //just add this schema - no need to worry about the imported
+                // ones
+                // axisService.addSchema(getXMLSchema(schema.getElement(),
+                // wsdl4jDefinition.getDocumentBaseURI()));
+                // } else if
+                // (SOAPConstants.Q_ELEM_SOAP_OPERATION.equals(wsdl4jElement
+                // .getElementType())) {
+                // SOAPOperation soapOperation = (SOAPOperation) wsdl4jElement;
+                // if (description instanceof AxisOperation) {
+                // AxisOperation axisOperation = (AxisOperation) description;
+                // if (soapOperation.getStyle() != null) {
+                // axisOperation.setStyle(soapOperation.getStyle());
+                // }
+                // axisOperation.setSoapAction(soapOperation
+                // .getSoapActionURI());
+                // }
+                // } else if
+                // (SOAPConstants.Q_ELEM_SOAP_HEADER.equals(wsdl4jElement
+                // .getElementType())) {
+                // SOAPHeader soapHeader = (SOAPHeader) wsdl4jElement;
+                // SOAPHeaderMessage headerMessage = new SOAPHeaderMessage();
+                // headerMessage.setNamespaceURI(soapHeader.getNamespaceURI());
+                // headerMessage.setUse(soapHeader.getUse());
+                // Boolean required = soapHeader.getRequired();
+                // if (null != required) {
+                // headerMessage.setRequired(required.booleanValue());
+                // }
+                // if (null != wsdl4jDefinition) {
+                // //find the relevant schema part from the messages
+                // Message msg = wsdl4jDefinition.getMessage(soapHeader
+                // .getMessage());
+                // Part msgPart = msg.getPart(soapHeader.getPart());
+                // headerMessage.setElement(msgPart.getElementName());
+                // }
+                // headerMessage.setMessage(soapHeader.getMessage());
+                //
+                // headerMessage.setPart(soapHeader.getPart());
+                // if (description instanceof AxisMessage) {
+                // ((AxisMessage) description).addSoapHeader(headerMessage);
+                // }
+                // } else if
+                // (SOAPConstants.Q_ELEM_SOAP_BINDING.equals(wsdl4jElement
+                // .getElementType())) {
+                // SOAPBinding soapBinding = (SOAPBinding) wsdl4jElement;
+                // style = soapBinding.getStyle();
+                // axisService.setSoapNsUri(soapBinding.getElementType()
+                // .getNamespaceURI());
+                // }
+            }
+        }
+    }
+
+    private Binding findBinding(Description discription) throws AxisFault {
+        Service[] services = discription.getServices();
+        Service service = null;
+        Endpoint endpoint = null;
+        Binding binding = null;
+
+        if (services.length == 0) {
+            throw new AxisFault("No service found in the WSDL");
+        }
+
+        if (serviceName != null) {
+            for (int i = 0; i < services.length; i++) {
+                if (serviceName.equals(services[i].getName())) {
+                    service = services[i];
+                    break;  // found it. Stop looking.
+                }
+            }
+            if (service == null) {
+                throw new AxisFault("Service not found the WSDL "
+                        + serviceName.getLocalPart());
+            }
+        } else {
+            // If no particular service is mentioned select the first one.
+            service = services[0];
+        }
+        // FIXME @author Chathura get the policy stuff to be copied
+        // copyExtensibleElements(service.getExtensibilityElements(), dif,
+        // axisService, SERVICE);
+        Endpoint[] endpoints = service.getEndpoints();
+        if (this.interfaceName != null) {
+
+            if (endpoints.length == 0) {
+                throw new AxisFault("No Endpoints/Ports found in the service:"
+                        + service.getName().getLocalPart());
+            }
+
+            for (int i = 0; i < endpoints.length; ++i) {
+                if (this.interfaceName.equals(endpoints[i].getName().toString())) {
+                    endpoint = endpoints[i];
+                    break;  // found it.  Stop looking
+                }
+            }
+            if (endpoint == null) {
+                throw new AxisFault("No port found for the given name :"
+                        + this.interfaceName);
+            }
+        } else {
+            // if no particular endpoint is specified use the first one.
+            endpoint = endpoints[0];
+
+        }
+        axisService.setName(service.getName().getLocalPart());
+        if (endpoint != null) {
+            // FIXME @author Chathura copy in the policy stuff
+            // copyExtensibleElements(port.getExtensibilityElements(), dif,
+            // axisService, PORT);
+            axisService.setEndpoint(endpoint.getAddress().toString());
+            binding = endpoint.getBinding();
+        }
+        return binding;
+    }
+
+    private Element[] generateWrapperSchema(
+            DescriptionElement wodenDescription, BindingElement binding) {
+
+        List schemaElementList = new ArrayList();
+        String targetNamespaceUri = wodenDescription.getTargetNamespace()
+                .toString();
+
+        // ///////////////////////////////////////////////////////////////////////////////////////////
+        // if there are any bindings present then we have to process them. we
+        // have to generate a schema
+        // per binding (that is the safest option). if not we just resolve to
+        // the good old port type
+        // list, in which case we'll generate a schema per porttype
+        // //////////////////////////////////////////////////////////////////////////////////////////
+
+        // FIXME @author Chathura Once this method is done we could run the
+        // basic codgen
+        schemaElementList.add(createSchemaForInterface(binding
+                .getInterfaceElement(), targetNamespaceUri,
+                findWrapForceable(binding)));
+        return (Element[]) schemaElementList
+                .toArray(new Element[schemaElementList.size()]);
+    }
+
+    private Element createSchemaForInterface(InterfaceElement interfaceElement,
+                                             String targetNamespaceUri, boolean forceWrapping) {
+
+        // loop through the messages. We'll populate things map with the
+        // relevant
+        // messages
+        // from the operations
+
+        // this will have name (QName) as the key and
+        // InterfaceMessageReferenceElement as the value
+        Map messagesMap = new HashMap();
+
+        // this will have operation name (a QName) as the key and
+        // InterfaceMessageReferenceElement as the value
+        Map inputOperationsMap = new HashMap();
+
+        // this will have operation name (a QName) as the key and
+        // InterfaceMessageReferenceElement as the value
+        Map outputOperationsMap = new HashMap();
+
+        Map faultyOperationsMap = new HashMap();
+        // this contains the required namespace imports. the key in this
+        // map would be the namaspace URI
+        Map namespaceImportsMap = new HashMap();
+        // generated complextypes. Keep in the list for writing later
+        // the key for the complexType map is the message QName
+        Map complexTypeElementsMap = new HashMap();
+        // generated Elements. Kep in the list for later writing
+        List elementElementsList = new ArrayList();
+        // list namespace prefix map. This map will include uri -> prefix
+        Map namespacePrefixMap = new HashMap();
+
+        // //////////////////////////////////////////////////////////////////////////////////////////////////
+        // First thing is to populate the message map with the messages to
+        // process.
+        // //////////////////////////////////////////////////////////////////////////////////////////////////
+
+        // we really need to do this for a single porttype!
+        InterfaceOperationElement[] operationElements = interfaceElement
+                .getInterfaceOperationElements();
+        InterfaceOperationElement opElement;
+        for (int k = 0; k < operationElements.length; k++) {
+            opElement = operationElements[k];
+            InterfaceMessageReferenceElement[] interfaceMessageReferenceElements = opElement
+                    .getInterfaceMessageReferenceElements();
+
+            for (int i = 0; i < interfaceMessageReferenceElements.length; i++) {
+                InterfaceMessageReferenceElement interfaceMessageReferenceElement = interfaceMessageReferenceElements[i];
+                String direction = interfaceMessageReferenceElement
+                        .getDirection().toString();
+                messagesMap.put(interfaceMessageReferenceElement
+                        .getElementName(), interfaceMessageReferenceElement);
+                if (Direction.IN.toString().equalsIgnoreCase(direction)) {
+                    inputOperationsMap.put(opElement.getName(),
+                            interfaceMessageReferenceElement);
+                } else if (Direction.OUT.toString().equalsIgnoreCase(direction)) {
+                    outputOperationsMap.put(opElement.getName(),
+                            interfaceMessageReferenceElement);
+                }
+            }
+
+            InterfaceFaultReferenceElement[] interfaceFaultReferenceElements = opElement
+                    .getInterfaceFaultReferenceElements();
+
+            for (int i = 0; i < interfaceFaultReferenceElements.length; i++) {
+                InterfaceFaultReferenceElement interfaceFaultReferenceElement = interfaceFaultReferenceElements[i];
+                String direction = interfaceFaultReferenceElement
+                        .getDirection().toString();
+                messagesMap.put(interfaceFaultReferenceElement.getRef(),
+                        interfaceFaultReferenceElement);
+                faultyOperationsMap.put(interfaceFaultReferenceElement
+                        .getInterfaceFaultElement(),
+                        interfaceFaultReferenceElement);
+            }
+
+        }
+
+        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        // check whether there are messages that are wrappable. If there are no
+        // messages that are wrappable we'll
+        // just return null and endup this process. However we need to take the
+        // force flag into account here
+        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+        QName[] keys;
+        if (forceWrapping) {
+            // just take all the messages and wrap them, we've been told to
+            // force wrapping!
+            keys = (QName[]) messagesMap.keySet().toArray(
+                    new QName[messagesMap.size()]);
+        } else {
+            //
+            QName[] allKeys = (QName[]) messagesMap.keySet().toArray(
+                    new QName[messagesMap.size()]);
+            List wrappableMessageNames = new ArrayList();
+            boolean noMessagesTobeProcessed = true;
+
+            // TODO Fix this
+            // for (int i = 0; i < allKeys.length; i++) {
+            // if (findWrapppable((Message) messagesMap.get(allKeys[i]))) {
+            // noMessagesTobeProcessed = false;
+            // //add that message to the list
+            // wrappableMessageNames.add(allKeys[i]);
+            // }
+            // }
+            if (noMessagesTobeProcessed) {
+                return null;
+            }
+
+            keys = (QName[]) wrappableMessageNames
+                    .toArray(new QName[wrappableMessageNames.size()]);
+        }
+
+        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        // Now we have the message list to process - Process the whole list of
+        // messages at once
+        // since we need to generate one single schema
+        // /////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+        // List resolvedMessageQNames = new ArrayList();
+        // //find the xsd prefix
+        // String xsdPrefix = findSchemaPrefix();
+        // Message wsdl4jMessage;
+        // //DOM document that will be the ultimate creator
+        // Document document = getDOMDocumentBuilder().newDocument();
+        // for (int i = 0; i < keys.length; i++) {
+        // wsdl4jMessage = (Message) messagesMap.get(keys[i]);
+        // //No need to check the wrappable,
+        //
+        // //This message is wrappabel. However we need to see whether the
+        // // message is already
+        // //resolved!
+        // if (!resolvedMessageQNames.contains(wsdl4jMessage.getQName())) {
+        // //This message has not been touched before!. So we can go ahead
+        // // now
+        // Map parts = wsdl4jMessage.getParts();
+        // //add the complex type
+        // String name = wsdl4jMessage.getQName().getLocalPart();
+        // Element newComplexType = document.createElementNS(
+        // XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+        // + XML_SCHEMA_COMPLEX_TYPE_LOCAL_NAME);
+        // newComplexType.setAttribute(XSD_NAME, name);
+        //
+        // Element cmplxContentSequence = document.createElementNS(
+        // XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+        // + XML_SCHEMA_SEQUENCE_LOCAL_NAME);
+        // Element child;
+        // Iterator iterator = parts.keySet().iterator();
+        // while (iterator.hasNext()) {
+        // Part part = (Part) parts.get(iterator.next());
+        // //the part name
+        // String elementName = part.getName();
+        // boolean isTyped = true;
+        // //the type name
+        // QName schemaTypeName;
+        // if (part.getTypeName() != null) {
+        // schemaTypeName = part.getTypeName();
+        // } else if (part.getElementName() != null) {
+        // schemaTypeName = part.getElementName();
+        // isTyped = false;
+        // } else {
+        // throw new RuntimeException(" Unqualified Message part!");
+        // }
+        //
+        // child = document.createElementNS(XMLSCHEMA_NAMESPACE_URI,
+        // xsdPrefix + ":" + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+        //
+        // String prefix;
+        // if (XMLSCHEMA_NAMESPACE_URI.equals(schemaTypeName
+        // .getNamespaceURI())) {
+        // prefix = xsdPrefix;
+        // } else {
+        // //this schema is a third party one. So we need to have
+        // // an import statement in our generated schema
+        // String uri = schemaTypeName.getNamespaceURI();
+        // if (!namespaceImportsMap.containsKey(uri)) {
+        // //create Element for namespace import
+        // Element namespaceImport = document.createElementNS(
+        // XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+        // + XML_SCHEMA_IMPORT_LOCAL_NAME);
+        // namespaceImport.setAttribute("namespace", uri);
+        // //add this to the map
+        // namespaceImportsMap.put(uri, namespaceImport);
+        // //we also need to associate this uri with a prefix
+        // // and include that prefix
+        // //in the schema's namspace declarations. So add
+        // // theis particular namespace to the
+        // //prefix map as well
+        // prefix = getTemporaryNamespacePrefix();
+        // namespacePrefixMap.put(uri, prefix);
+        // } else {
+        // //this URI should be already in the namspace prefix
+        // // map
+        // prefix = (String) namespacePrefixMap.get(uri);
+        // }
+        //
+        // }
+        // // If it's from a type the element we need to add a name and
+        // // the type
+        // //if not it's the element reference
+        // if (isTyped) {
+        // child.setAttribute(XSD_NAME, elementName);
+        // child.setAttribute(XSD_TYPE, prefix + ":"
+        // + schemaTypeName.getLocalPart());
+        // } else {
+        // child.setAttribute(XSD_REF, prefix + ":"
+        // + schemaTypeName.getLocalPart());
+        // }
+        // cmplxContentSequence.appendChild(child);
+        // }
+        // newComplexType.appendChild(cmplxContentSequence);
+        // //add this newly created complextype to the list
+        // complexTypeElementsMap.put(wsdl4jMessage.getQName(),
+        // newComplexType);
+        // resolvedMessageQNames.add(wsdl4jMessage.getQName());
+        // }
+        //
+        // }
+        //
+        // Element elementDeclaration;
+        //
+        // //loop through the input op map and generate the elements
+        // String[] inputOperationtNames = (String[])
+        // inputOperationsMap.keySet()
+        // .toArray(new String[inputOperationsMap.size()]);
+        // for (int j = 0; j < inputOperationtNames.length; j++) {
+        // String inputOpName = inputOperationtNames[j];
+        // elementDeclaration = document.createElementNS(
+        // XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+        // + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+        // elementDeclaration.setAttribute(XSD_NAME, inputOpName);
+        //
+        // String typeValue = ((Message) inputOperationsMap.get(inputOpName))
+        // .getQName().getLocalPart();
+        // elementDeclaration.setAttribute(XSD_TYPE, AXIS2WRAPPED + ":"
+        // + typeValue);
+        // elementElementsList.add(elementDeclaration);
+        // resolvedRpcWrappedElementMap.put(inputOpName, new QName(
+        // targetNamespaceUri, inputOpName, AXIS2WRAPPED));
+        // }
+        //
+        // //loop through the output op map and generate the elements
+        // String[] outputOperationtNames = (String[]) outputOperationsMap
+        // .keySet().toArray(new String[outputOperationsMap.size()]);
+        // for (int j = 0; j < outputOperationtNames.length; j++) {
+        //
+        // String baseoutputOpName = outputOperationtNames[j];
+        // String outputOpName = baseoutputOpName + "Response";
+        // elementDeclaration = document.createElementNS(
+        // XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+        // + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+        // elementDeclaration.setAttribute(XSD_NAME, outputOpName);
+        // String typeValue = ((Message) outputOperationsMap
+        // .get(baseoutputOpName)).getQName().getLocalPart();
+        // elementDeclaration.setAttribute(XSD_TYPE, AXIS2WRAPPED + ":"
+        // + typeValue);
+        // elementElementsList.add(elementDeclaration);
+        // resolvedRpcWrappedElementMap.put(outputOpName, new QName(
+        // targetNamespaceUri, outputOpName, AXIS2WRAPPED));
+        //
+        // }
+        //
+        // //loop through the faultoutput op map and generate the elements
+        // String[] faultyOperationtNames = (String[]) faultyOperationsMap
+        // .keySet().toArray(new String[faultyOperationsMap.size()]);
+        // for (int j = 0; j < faultyOperationtNames.length; j++) {
+        //
+        // String baseFaultOpName = faultyOperationtNames[j];
+        // elementDeclaration = document.createElementNS(
+        // XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+        // + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+        // elementDeclaration.setAttribute(XSD_NAME, baseFaultOpName);
+        // String typeValue = ((Message) faultyOperationsMap
+        // .get(baseFaultOpName)).getQName().getLocalPart();
+        // elementDeclaration.setAttribute(XSD_TYPE, AXIS2WRAPPED + ":"
+        // + typeValue);
+        // elementElementsList.add(elementDeclaration);
+        // resolvedRpcWrappedElementMap.put(baseFaultOpName, new QName(
+        // targetNamespaceUri, baseFaultOpName, AXIS2WRAPPED));
+        //
+        // }
+        //
+        // //////////////////////////////////////////////////////////////////////////////////////////////
+        // // Now we are done with processing the messages and generating the
+        // right
+        // // schema object model
+        // // time to write out the schema
+        // //////////////////////////////////////////////////////////////////////////////////////////////
+        //
+        // Element schemaElement = document.createElementNS(
+        // XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
+        // + XML_SCHEMA_LOCAL_NAME);
+        //
+        // //loop through the namespace declarations first
+        // String[] nameSpaceDeclarationArray = (String[]) namespacePrefixMap
+        // .keySet().toArray(new String[namespacePrefixMap.size()]);
+        // for (int i = 0; i < nameSpaceDeclarationArray.length; i++) {
+        // String s = nameSpaceDeclarationArray[i];
+        // schemaElement.setAttributeNS("http://www.w3.org/2000/xmlns/",
+        // "xmlns:" + namespacePrefixMap.get(s).toString(), s);
+        //
+        // }
+        //
+        // //add the targetNamespace
+        //
+        // schemaElement.setAttributeNS("http://www.w3.org/2000/xmlns/",
+        // XMLNS_AXIS2WRAPPED, targetNamespaceUri);
+        // schemaElement.setAttribute(XSD_TARGETNAMESPACE, targetNamespaceUri);
+        // schemaElement.setAttribute(XSD_ELEMENT_FORM_DEFAULT,
+        // XSD_UNQUALIFIED);
+        //
+        // Element[] namespaceImports = (Element[]) namespaceImportsMap.values()
+        // .toArray(new Element[namespaceImportsMap.size()]);
+        // for (int i = 0; i < namespaceImports.length; i++) {
+        // schemaElement.appendChild(namespaceImports[i]);
+        //
+        // }
+        //
+        // Element[] complexTypeElements = (Element[]) complexTypeElementsMap
+        // .values().toArray(new Element[complexTypeElementsMap.size()]);
+        // for (int i = 0; i < complexTypeElements.length; i++) {
+        // schemaElement.appendChild(complexTypeElements[i]);
+        //
+        // }
+        //
+        // Element[] elementDeclarations = (Element[]) elementElementsList
+        // .toArray(new Element[elementElementsList.size()]);
+        // for (int i = 0; i < elementDeclarations.length; i++) {
+        // schemaElement.appendChild(elementDeclarations[i]);
+        //
+        // }
+
+        // return schemaElement;
+
+        return null;
+    }
+
+    private boolean findWrapForceable(BindingElement binding) {
+        boolean retVal = false;
+        if (RPC.equalsIgnoreCase(binding.getInterfaceElement()
+                .getStyleDefault().toString())) {
+            return true;
+        }
+        if (!retVal) {
+            InterfaceOperationElement[] operations = binding
+                    .getInterfaceElement().getInterfaceOperationElements();
+            for (int i = 0; i < operations.length; i++) {
+                URI[] styles = operations[i].getStyle();
+                for (int j = 0; j < styles.length; j++) {
+                    if (RPC.equalsIgnoreCase(styles[j].toString())) {
+                        return true;
+                    }
+
+                }
+            }
+        }
+        return false;
+    }
+
+    private DescriptionElement readInTheWSDLFile(String wsdlURI)
+            throws WSDLException {
+
+        WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
+
+        // TODO : I can not find a constant for this feature in WSDLReader
+        // reader.setFeature("javax.wsdl.importDocuments", false);
+
+//        reader.setFeature(WSDLReader.FEATURE_VERBOSE, false);
+        return reader.readWSDL(wsdlURI);
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL2Constants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL2Constants.java
new file mode 100644
index 0000000..043460e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDL2Constants.java
@@ -0,0 +1,52 @@
+package org.apache.axis2.description;

+

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public interface WSDL2Constants {

+    String WSDL_NAMESPACE = "http://www.w3.org/2006/01/wsdl";

+    String DEFAULT_WSDL_NAMESPACE_PREFIX = "wsdl2";

+    String DESCRIPTION = "description";

+    String URI_WSDL2_SOAP = "http://www.w3.org/2006/01/wsdl/soap";

+    String SOAP_PREFIX = "wsoap";

+    String URI_WSDL2_SOAP_ENV = "http://www.w3.org/2003/05/soap-envelope";

+    String SOAP_ENV_PREFIX = "soap";

+    String DEFAULT_TARGET_NAMESPACE_PREFIX = "axis2";

+    String DOCUMENTATION = "documentation";

+

+    String INTERFACE_LOCAL_NAME = "interface";

+    String INTERFACE_PREFIX = "Interface";

+    String OPERATION_LOCAL_NAME = "operation";

+    String ATTRIBUTE_NAME = "name";

+    String ATTRIBUTE_REF = "ref";

+    String IN_PUT_LOCAL_NAME = "input";

+    String OUT_PUT_LOCAL_NAME = "output";

+    String OUT_FAULT = "outfault";

+    String IN_FAULT = "infault";

+    String ATTRIBUTE_NAME_PATTERN = "pattern";

+    String MESSAGE_LABEL = "messageLabel";

+    String ATTRIBUTE_ELEMENT = "element";

+

+    String BINDING_LOCAL_NAME = "binding ";

+    String SOAP_BINDING_PREFIX = "SOAPBinding";

+    String HTTP_PROTOCAL = "http://www.w3.org/2003/05/soap/bindings/HTTP";

+    String SERVICE_LOCAL_NAME = "service";

+    

+    String MESSAGE_LABEL_IN = "In";

+    String MESSAGE_LABEL_OUT = "Out";

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDLToAxisServiceBuilder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDLToAxisServiceBuilder.java
new file mode 100644
index 0000000..6a641a5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/description/WSDLToAxisServiceBuilder.java
@@ -0,0 +1,189 @@
+package org.apache.axis2.description;
+
+import org.apache.axis2.namespace.Constants;
+import org.apache.axis2.AxisFault;
+import org.apache.neethi.PolicyRegistry;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.resolver.URIResolver;
+import org.w3c.dom.Element;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public abstract class WSDLToAxisServiceBuilder {
+
+    protected static final String XMLSCHEMA_NAMESPACE_URI = Constants.URI_2001_SCHEMA_XSD;
+
+    protected static final String XMLSCHEMA_NAMESPACE_PREFIX = "xs";
+
+    protected static final String XML_SCHEMA_LOCAL_NAME = "schema";
+
+    protected static final String XML_SCHEMA_SEQUENCE_LOCAL_NAME = "sequence";
+
+    protected static final String XML_SCHEMA_COMPLEX_TYPE_LOCAL_NAME = "complexType";
+
+    protected static final String XML_SCHEMA_ELEMENT_LOCAL_NAME = "element";
+
+    protected static final String XML_SCHEMA_IMPORT_LOCAL_NAME = "import";
+
+    protected static final String XSD_NAME = "name";
+
+    protected static final String XSD_TARGETNAMESPACE = "targetNamespace";
+
+    protected static final String XMLNS_AXIS2WRAPPED = "xmlns:axis2wrapped";
+
+    protected static final String AXIS2WRAPPED = "axis2wrapped";
+
+    protected static final String XSD_TYPE = "type";
+
+    protected static final String XSD_REF = "ref";
+
+    protected static int nsCount = 0;
+
+    protected Map resolvedRpcWrappedElementMap = new HashMap();
+
+    protected static final String XSD_ELEMENT_FORM_DEFAULT = "elementFormDefault";
+
+    protected static final String XSD_UNQUALIFIED = "unqualified";
+
+    protected InputStream in;
+
+    protected AxisService axisService;
+
+    protected PolicyRegistry registry;
+
+    protected QName serviceName;
+    protected boolean isServerSide = true;
+    protected String style = null;
+    private URIResolver customResolver;
+    private String baseUri = null;
+    protected static final String TYPES = "Types";
+    
+    protected WSDLToAxisServiceBuilder(){
+        
+    }
+
+    public WSDLToAxisServiceBuilder(InputStream in, QName serviceName) {
+        this.in = in;
+        this.serviceName = serviceName;
+        this.axisService = new AxisService();
+        setPolicyRegistryFromService(axisService);
+    }
+
+    public WSDLToAxisServiceBuilder(InputStream in, AxisService axisService) {
+        this.in = in;
+        this.axisService = axisService;
+        setPolicyRegistryFromService(axisService);
+    }
+
+    /**
+     * Sets a custom xmlschema resolver
+     *
+     * @param customResolver
+     */
+    public void setCustomResolver(URIResolver customResolver) {
+        this.customResolver = customResolver;
+    }
+
+    public boolean isServerSide() {
+        return isServerSide;
+    }
+
+    public void setServerSide(boolean serverSide) {
+        isServerSide = serverSide;
+    }
+
+    protected void setPolicyRegistryFromService(AxisService axisService) {
+        PolicyInclude policyInclude = axisService.getPolicyInclude();
+        this.registry = policyInclude.getPolicyRegistry();
+    }
+
+    protected XmlSchema getXMLSchema(Element element, String baseUri) {
+        XmlSchemaCollection schemaCollection = new XmlSchemaCollection();
+
+        if (baseUri != null) schemaCollection.setBaseUri(baseUri);
+
+        if (customResolver != null) {
+            schemaCollection.setSchemaResolver(customResolver);
+        }
+
+        return schemaCollection.read(element);
+    }
+
+    /**
+     * Find the XML schema prefix
+     */
+    protected String findSchemaPrefix() {
+        String xsdPrefix = null;
+        Map declaredNameSpaces = axisService.getNameSpacesMap();
+        if (declaredNameSpaces.containsValue(XMLSCHEMA_NAMESPACE_URI)) {
+            //loop and find the prefix
+            Iterator it = declaredNameSpaces.keySet().iterator();
+            String key;
+            while (it.hasNext()) {
+                key = (String) it.next();
+                if (XMLSCHEMA_NAMESPACE_URI.equals(declaredNameSpaces.get(key))) {
+                    xsdPrefix = key;
+                    break;
+                }
+            }
+        } else {
+            xsdPrefix = XMLSCHEMA_NAMESPACE_PREFIX; //default prefix
+        }
+        return xsdPrefix;
+    }
+
+    public abstract AxisService populateService() throws AxisFault;
+
+    /**
+     * Utility method that returns a DOM Builder
+     */
+    protected DocumentBuilder getDOMDocumentBuilder() {
+        DocumentBuilder documentBuilder;
+        try {
+            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
+                    .newInstance();
+            documentBuilderFactory.setNamespaceAware(true);
+            documentBuilder = documentBuilderFactory.newDocumentBuilder();
+        } catch (ParserConfigurationException e) {
+            throw new RuntimeException(e);
+        }
+        return documentBuilder;
+    }
+
+    /**
+     */
+    protected String getTemporaryNamespacePrefix() {
+        return "ns" + nsCount++;
+    }
+
+    public String getBaseUri() {
+        return baseUri;
+    }
+
+    public void setBaseUri(String baseUri) {
+        this.baseUri = baseUri;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AbstractDispatcher.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AbstractDispatcher.java
new file mode 100644
index 0000000..bc9f49d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AbstractDispatcher.java
@@ -0,0 +1,109 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This the base class for all dispatchers. A dispatcher's task is
+ * to find the service for an incoming SOAP message.
+ * <p/>
+ * In Axis2, a chain of dispatchers is setup. Each tries to
+ * dispatch and returns without throwing an exception, in case, it fails.
+ */
+public abstract class AbstractDispatcher extends AbstractHandler {
+
+    /**
+     * Field NAME
+     */
+    public static final String NAME = "AbstractDispatcher";
+    private static final Log log = LogFactory.getLog(AbstractDispatcher.class);
+    private static final boolean isDebugEnabled = log.isDebugEnabled();
+
+    public AbstractDispatcher() {
+        init(new HandlerDescription(NAME));
+    }
+
+    /**
+     * Called by Axis Engine to find the operation.
+     *
+     * @param service
+     * @param messageContext
+     * @return Returns AxisOperation.
+     * @throws AxisFault
+     */
+    public abstract AxisOperation findOperation(AxisService service, MessageContext messageContext)
+            throws AxisFault;
+
+    /**
+     * Called by Axis Engine to find the service.
+     *
+     * @param messageContext
+     * @return Returns AxisService.
+     * @throws AxisFault
+     */
+    public abstract AxisService findService(MessageContext messageContext) throws AxisFault;
+
+    public abstract void initDispatcher();
+
+    /**
+     * @param msgctx
+     * @throws org.apache.axis2.AxisFault
+     */
+    public InvocationResponse invoke(MessageContext msgctx) throws AxisFault {
+        AxisService axisService = msgctx.getAxisService();
+
+        if (axisService == null) {
+            axisService = findService(msgctx);
+
+            if (axisService != null) {
+                if (isDebugEnabled) {
+                    log.debug(Messages.getMessage("servicefound",
+                            axisService.getName()));
+                }
+                msgctx.setAxisService(axisService);
+            }
+        }
+
+        if ((msgctx.getAxisService() != null) && (msgctx.getAxisOperation() == null)) {
+            AxisOperation axisOperation = findOperation(axisService, msgctx);
+
+            if (axisOperation != null) {
+                if (isDebugEnabled) {
+                    log.debug(Messages.getMessage("operationfound",
+                            axisOperation.getName().getLocalPart()));
+                }
+
+                msgctx.setAxisOperation(axisOperation);
+                //setting axisMessage into messageContext
+                msgctx.setAxisMessage(axisOperation.getMessage(
+                        WSDLConstants.MESSAGE_LABEL_IN_VALUE));
+            }
+        }
+        return InvocationResponse.CONTINUE;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AddressingBasedDispatcher.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AddressingBasedDispatcher.java
new file mode 100644
index 0000000..32eae27
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AddressingBasedDispatcher.java
@@ -0,0 +1,142 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Dispatcher based on the WS-Addressing properties.
+ */
+public class AddressingBasedDispatcher extends AbstractDispatcher implements AddressingConstants {
+
+    /**
+     * Field NAME
+     */
+    public static final String NAME = "AddressingBasedDispatcher";
+    private static final Log log = LogFactory.getLog(AddressingBasedDispatcher.class);
+    private static final boolean isDebugEnabled = log.isDebugEnabled();
+
+    // TODO this logic needed to be improved, as the Dispatching is almost guaranteed to fail
+    public AxisOperation findOperation(AxisService service, MessageContext messageContext)
+            throws AxisFault {
+        if(isDebugEnabled){
+            log.debug(Messages.getMessage("checkingoperation",
+                    messageContext.getWSAAction()));
+        }
+        String action = messageContext.getWSAAction();
+
+        if (action != null) {
+            return service.getOperationByAction(action);
+        }
+
+        return null;
+    }
+
+    public AxisService findService(MessageContext messageContext) throws AxisFault {
+        EndpointReference toEPR = messageContext.getTo();
+        AxisService service = null;
+
+        if (toEPR != null) {
+            if (toEPR.hasAnonymousAddress()) {
+                return null;
+            }
+            
+            String address = toEPR.getAddress();
+            if(isDebugEnabled){
+                log.debug(Messages.getMessage("checkingserviceforepr", address));
+            }
+            QName serviceName;
+            String[] values = Utils.parseRequestURLForServiceAndOperation(address,
+                    messageContext.getConfigurationContext().getServiceContextPath());
+            if (values == null) {
+                return null;
+            }
+
+            if(isDebugEnabled){
+                log.debug(Messages.getMessage("checkingserviceforepr", values[0]));
+            }
+            if (values[0] != null) {
+                serviceName = new QName(values[0]);
+
+                AxisConfiguration registry =
+                        messageContext.getConfigurationContext().getAxisConfiguration();
+
+                return registry.getService(serviceName.getLocalPart());
+            }
+        }
+
+        return service;
+    }
+
+    public void initDispatcher() {
+        init(new HandlerDescription(NAME));
+    }
+
+    /**
+     * @param msgctx
+     * @throws org.apache.axis2.AxisFault
+     */
+    public InvocationResponse invoke(MessageContext msgctx) throws AxisFault {
+
+        // first check we can dispatch using the relates to
+        if (msgctx.getRelatesTo() != null) {
+            String relatesTo = msgctx.getRelatesTo().getValue();
+
+            if(isDebugEnabled){
+                log.debug(Messages.getMessage("checkingrelatesto",
+                        relatesTo));
+            }
+            if ((relatesTo != null) || "".equals(relatesTo)) {
+                OperationContext operationContext =
+                        msgctx.getConfigurationContext().getOperationContext(msgctx.getRelatesTo().getValue());
+
+                if (operationContext != null) {
+                    operationContext.addMessageContext(msgctx);
+                    msgctx.setAxisOperation(operationContext.getAxisOperation());
+                    msgctx.setOperationContext(operationContext);
+                    msgctx.setServiceContext((ServiceContext) operationContext.getParent());
+                    msgctx.setAxisService(
+                            ((ServiceContext) operationContext.getParent()).getAxisService());
+                    //InstanceDispatcher do this again , so let it go
+                    //msgctx.getAxisOperation().registerOperationContext(msgctx, operationContext);
+                    msgctx.setServiceGroupContextId(
+                            ((ServiceGroupContext) msgctx.getServiceContext().getParent()).getId());
+                }
+            }
+
+            return InvocationResponse.CONTINUE;
+        }
+
+        return super.invoke(msgctx);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java
new file mode 100644
index 0000000..54f90ca
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java
@@ -0,0 +1,899 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.deployment.util.PhasesInfo;
+import org.apache.axis2.description.*;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.phaseresolver.PhaseResolver;
+import org.apache.axis2.util.TargetResolver;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.java2wsdl.Java2WSDLConstants;
+
+import javax.xml.namespace.QName;
+import java.net.URL;
+import java.util.*;
+
+/**
+ * Class AxisConfiguration
+ */
+public class AxisConfiguration extends AxisDescription {
+
+    private static final Log log = LogFactory.getLog(AxisConfiguration.class);
+
+    /**
+     * Field modules
+     */
+    // private final HashMap defaultModules = new HashMap();
+    //
+    // to store all the availble modules (including version)
+    private final HashMap allModules = new HashMap();
+
+    // to store mapping between default version to module name
+    private final HashMap nameToversionMap = new HashMap();
+
+    // private final HashMap serviceGroups = new HashMap();
+    private final HashMap transportsIn = new HashMap();
+
+    private final HashMap transportsOut = new HashMap();
+
+    private final HashMap policySupportedModules = new HashMap();
+
+    /**
+     * Stores the QNames of local policy assertions
+     */
+    private final ArrayList localPolicyAssertions = new ArrayList();
+
+    // to store AxisObserver Objects
+    private ArrayList observersList = null;
+
+    private URL axis2Repository = null;
+
+    private HashMap allservices = new HashMap();
+
+    /**
+     * Stores the module specified in the server.xml at the document parsing time.
+     */
+    private List globalModuleList;
+
+    /**
+     * Field engagedModules
+     */
+    private final List engagedModules;
+
+    private Hashtable faultyModules;
+
+    /**
+     * To store faulty services
+     */
+    private Hashtable faultyServices;
+
+    private ArrayList inFaultPhases;
+
+    private ArrayList inPhasesUptoAndIncludingPostDispatch;
+
+    private HashMap messageReceivers;
+
+    private ClassLoader moduleClassLoader;
+
+    private HashMap moduleConfigmap;
+
+    private ArrayList outFaultPhases;
+
+    private ArrayList outPhases;
+
+    protected PhasesInfo phasesinfo;
+
+    private ClassLoader serviceClassLoader;
+
+    private ClassLoader systemClassLoader;
+
+    // to keep track of need to manage transport session or not
+    private boolean manageTransportSession;
+
+    //to keep tarck of system start or not
+    private boolean start;
+
+    private ArrayList targetResolvers;
+
+    /**
+     * Constructor AxisConfigurationImpl.
+     */
+    public AxisConfiguration() {
+        moduleConfigmap = new HashMap();
+        engagedModules = new ArrayList();
+        globalModuleList = new ArrayList();
+        messageReceivers = new HashMap();
+        outPhases = new ArrayList();
+        inFaultPhases = new ArrayList();
+        outFaultPhases = new ArrayList();
+        faultyServices = new Hashtable();
+        faultyModules = new Hashtable();
+        observersList = new ArrayList();
+        inPhasesUptoAndIncludingPostDispatch = new ArrayList();
+        systemClassLoader = Thread.currentThread().getContextClassLoader();
+        serviceClassLoader = Thread.currentThread().getContextClassLoader();
+        moduleClassLoader = Thread.currentThread().getContextClassLoader();
+        this.phasesinfo = new PhasesInfo();
+        targetResolvers = new ArrayList();
+    }
+
+    public void addMessageReceiver(String mepURL,
+                                   MessageReceiver messageReceiver) {
+        messageReceivers.put(mepURL, messageReceiver);
+    }
+
+    /**
+     * Method addModule.
+     *
+     * @param module
+     * @throws AxisFault
+     */
+    public void addModule(AxisModule module) throws AxisFault {
+        module.setParent(this);
+        notifyObservers(AxisEvent.MODULE_DEPLOY, module);
+
+        String moduleName = module.getName().getLocalPart();
+        if (moduleName.endsWith("SNAPSHOT")) {
+            QName moduleQName = new QName(moduleName.substring(0, moduleName
+                    .indexOf("SNAPSHOT") - 1));
+            module.setName(moduleQName);
+            allModules.put(moduleQName, module);
+        } else {
+            allModules.put(module.getName(), module);
+        }
+
+        // Registering the policy namespaces that the module understand
+        registerModulePolicySupport(module);
+        // Registering the policy assertions that are local to the system
+        registerLocalPolicyAssertions(module);
+
+    }
+
+    /**
+     * To remove a given module from the system
+     *
+     * @param module
+     */
+    public void removeModule(QName module) {
+        allModules.remove(module);
+        // TODO dis-engage has to be done here
+    }
+
+    /**
+     * Adds module configuration, if there is moduleConfig tag in service.
+     *
+     * @param moduleConfiguration
+     */
+    public void addModuleConfig(ModuleConfiguration moduleConfiguration) {
+        moduleConfigmap.put(moduleConfiguration.getModuleName(),
+                moduleConfiguration);
+    }
+
+    public void addObservers(AxisObserver axisObserver) {
+        observersList.add(axisObserver);
+    }
+
+    /**
+     * Method addService.
+     *
+     * @param service
+     * @throws AxisFault
+     */
+    public synchronized void addService(AxisService service) throws AxisFault {
+        AxisServiceGroup axisServiceGroup = new AxisServiceGroup();
+        axisServiceGroup.setServiceGroupName(service.getName());
+        axisServiceGroup.setParent(this);
+        axisServiceGroup.addService(service);
+        addServiceGroup(axisServiceGroup);
+    }
+
+    /**
+     * This method will check whethere for a given service , can we ganerate
+     * valid wsdl or not. So if user derop a wsdl we print that out , else if
+     * all the operation uses RPC message recivers we will generate wsdl
+     *
+     * @param axisService
+     */
+    private void isWSDLEnable(AxisService axisService) {
+        if (!axisService.isWsdlFound()) {
+            Iterator operatins = axisService.getOperations();
+            if (operatins.hasNext()) {
+                while (operatins.hasNext()) {
+                    AxisOperation axisOperation = (AxisOperation) operatins
+                            .next();
+                    if (axisOperation.getMessageReceiver() == null) {
+                        axisService.setWsdlFound(false);
+                        return;
+                    }
+                    String messageReceiverClass = axisOperation
+                            .getMessageReceiver().getClass().getName();
+                    if (!("org.apache.axis2.rpc.receivers.RPCMessageReceiver"
+                            .equals(messageReceiverClass)
+                            || "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"
+                            .equals(messageReceiverClass) || "org.apache.axis2.rpc.receivers.RPCInOutAsyncMessageReceiver"
+                            .equals(messageReceiverClass))) {
+                        axisService.setWsdlFound(false);
+                        return;
+                    }
+                }
+                axisService.setWsdlFound(true);
+            } else {
+                axisService.setWsdlFound(false);
+            }
+        }
+    }
+
+    public synchronized void addServiceGroup(AxisServiceGroup axisServiceGroup)
+            throws AxisFault {
+        notifyObservers(AxisEvent.SERVICE_DEPLOY, axisServiceGroup);
+        Iterator services = axisServiceGroup.getServices();
+        axisServiceGroup.setParent(this);
+        AxisService description;
+        while (services.hasNext()) {
+            description = (AxisService) services.next();
+            if (allservices.get(description.getName()) != null) {
+                throw new AxisFault(Messages.getMessage(
+                        "twoservicecannothavesamename", description.getName()));
+            }
+            if (description.getSchematargetNamespace() == null) {
+                description
+                        .setSchematargetNamespace(Java2WSDLConstants.AXIS2_XSD);
+            }
+            isWSDLEnable(description);
+        }
+        services = axisServiceGroup.getServices();
+        while (services.hasNext()) {
+            description = (AxisService) services.next();
+            if (description.isUseDefaultChains()) {
+                Iterator operations = description.getOperations();
+                while (operations.hasNext()) {
+                    AxisOperation operation = (AxisOperation) operations.next();
+                    phasesinfo.setOperationPhases(operation);
+                }
+            }
+        }
+        Iterator enModule = engagedModules.iterator();
+        while (enModule.hasNext()) {
+            QName moduleName = (QName) enModule.next();
+            axisServiceGroup.engageModule(getModule(moduleName), this);
+        }
+        services = axisServiceGroup.getServices();
+        while (services.hasNext()) {
+            description = (AxisService) services.next();
+            allservices.put(description.getName(), description);
+            if (!description.isClientSide()) {
+                notifyObservers(AxisEvent.SERVICE_DEPLOY, description);
+            }
+        }
+        // serviceGroups.put(axisServiceGroup.getServiceGroupName(),
+        // axisServiceGroup);
+        addChild(axisServiceGroup);
+    }
+
+    public void removeServiceGroup(String serviceGroupName) throws AxisFault {
+        AxisServiceGroup axisServiceGroup = (AxisServiceGroup) getChild(serviceGroupName);
+        if (axisServiceGroup == null) {
+            throw new AxisFault(Messages.getMessage("invalidservicegroupname",
+                    serviceGroupName));
+        }
+        Iterator services = axisServiceGroup.getServices();
+        while (services.hasNext()) {
+            AxisService axisService = (AxisService) services.next();
+            allservices.remove(axisService.getName());
+            if (!axisService.isClientSide()) {
+                notifyObservers(AxisEvent.SERVICE_REMOVE, axisService);
+            }
+        }
+        removeChild(serviceGroupName);
+        notifyObservers(AxisEvent.SERVICE_REMOVE, axisServiceGroup);
+    }
+
+    /**
+     * Method addTransportIn.
+     *
+     * @param transport
+     * @throws AxisFault
+     */
+    public void addTransportIn(TransportInDescription transport)
+            throws AxisFault {
+        if (transport.getReceiver() == null) {
+            throw new AxisFault(
+                    "Transport Receiver can not be null for the transport "
+                            + transport.getName().getLocalPart());
+        }
+        transportsIn.put(transport.getName(), transport);
+    }
+
+    /**
+     * Method addTransportOut.
+     *
+     * @param transport
+     * @throws AxisFault
+     */
+    public void addTransportOut(TransportOutDescription transport)
+            throws AxisFault {
+        if (transport.getSender() == null) {
+            throw new AxisFault(
+                    "Transport sender can not be null for the transport "
+                            + transport.getName().getLocalPart());
+        }
+        transportsOut.put(transport.getName(), transport);
+    }
+
+    /**
+     * Engages the default module version corresponding to given module name ,
+     * or if the module name contains version number in it then it will engage
+     * the correct module. Both of the below two cases are valid 1.
+     * engageModule("addressing"); 2. engageModule("addressing-1.23");
+     *
+     * @param moduleref
+     * @throws AxisFault
+     */
+    public void engageModule(QName moduleref) throws AxisFault {
+        AxisModule module = getModule(moduleref);
+        if (module != null) {
+            engageModule(module);
+        } else {
+            throw new AxisFault(Messages.getMessage("modulenotavailble",
+                    moduleref.getLocalPart()));
+        }
+    }
+
+    /**
+     * Engages a module using give name and its version ID.
+     *
+     * @param moduleName
+     * @param versionID
+     * @throws AxisFault
+     */
+    public void engageModule(String moduleName, String versionID)
+            throws AxisFault {
+        QName moduleQName = Utils.getModuleName(moduleName, versionID);
+        AxisModule module = getModule(moduleQName);
+        if (module != null) {
+            engageModule(module);
+        } else {
+            throw new AxisFault(Messages.getMessage("refertoinvalidmodule"));
+        }
+    }
+
+    public void engageModule(AxisModule axisModule, AxisConfiguration axisConfig)
+            throws AxisFault {
+        engageModule(axisModule);
+    }
+
+    private void engageModule(AxisModule module) throws AxisFault {
+        boolean isEngagable;
+        if (module != null) {
+            QName moduleQName = module.getName();
+            for (Iterator iterator = engagedModules.iterator(); iterator
+                    .hasNext();) {
+                QName qName = (QName) iterator.next();
+
+                isEngagable = Utils.checkVersion(moduleQName, qName);
+                if (!isEngagable) {
+                    return;
+                }
+            }
+        } else {
+            throw new AxisFault(Messages.getMessage("refertoinvalidmodule"));
+        }
+        Iterator servicegroups = getServiceGroups();
+        while (servicegroups.hasNext()) {
+            AxisServiceGroup serviceGroup = (AxisServiceGroup) servicegroups
+                    .next();
+            serviceGroup.engageModule(module, this);
+        }
+        engagedModules.add(module.getName());
+    }
+
+    /**
+     * To dis-engage module from the system, this will remove all the handlers
+     * belongs to this module from all the handler chains
+     *
+     * @param module
+     */
+    public void disengageModule(AxisModule module) {
+        if (module != null && isEngaged(module.getName())) {
+            PhaseResolver phaseResolver = new PhaseResolver(this);
+            phaseResolver.disengageModuleFromGlobalChains(module);
+            Iterator serviceItr = getServices().values().iterator();
+            while (serviceItr.hasNext()) {
+                AxisService axisService = (AxisService) serviceItr.next();
+                axisService.disengageModule(module);
+            }
+            Iterator serviceGroups = getServiceGroups();
+            while (serviceGroups.hasNext()) {
+                AxisServiceGroup axisServiceGroup = (AxisServiceGroup) serviceGroups
+                        .next();
+                axisServiceGroup.removeFromEngageList(module.getName());
+            }
+            engagedModules.remove(module.getName());
+        }
+    }
+
+    public void notifyObservers(int event_type, AxisService service) {
+        AxisEvent event = new AxisEvent(event_type);
+
+        for (int i = 0; i < observersList.size(); i++) {
+            AxisObserver axisObserver = (AxisObserver) observersList.get(i);
+
+            try {
+                if (!service.isClientSide()) {
+                    axisObserver.serviceUpdate(event, service);
+                }
+            } catch (Throwable e) {
+                // No need to stop the system due to this , So log and ignore
+                log.debug(e);
+            }
+        }
+    }
+
+    public void notifyObservers(int event_type, AxisModule moule) {
+        AxisEvent event = new AxisEvent(event_type);
+
+        for (int i = 0; i < observersList.size(); i++) {
+            AxisObserver axisObserver = (AxisObserver) observersList.get(i);
+
+            try {
+                axisObserver.moduleUpdate(event, moule);
+            } catch (Throwable e) {
+                // No need to stop the system due to this , So log and ignore
+                log.debug(e);
+            }
+        }
+    }
+
+    public void notifyObservers(int event_type, AxisServiceGroup serviceGroup) {
+        AxisEvent event = new AxisEvent(event_type);
+
+        for (int i = 0; i < observersList.size(); i++) {
+            AxisObserver axisObserver = (AxisObserver) observersList.get(i);
+
+            try {
+                axisObserver.serviceGroupUpdate(event, serviceGroup);
+            } catch (Throwable e) {
+                // No need to stop the system due to this , So log and ignore
+                log.debug(e);
+            }
+        }
+    }
+
+    /**
+     * Method removeService.
+     *
+     * @param name
+     * @throws AxisFault
+     */
+    public synchronized void removeService(String name) throws AxisFault {
+        AxisService service = (AxisService) allservices.remove(name);
+
+        if (service != null) {
+            log.debug(Messages.getMessage("serviceremoved", name));
+        }
+    }
+
+    /**
+     * Method getEngagedModules.
+     *
+     * @return Collection
+     */
+    public Collection getEngagedModules() {
+        return engagedModules;
+    }
+
+    public List getGlobalModules() {
+        return globalModuleList;
+    }
+
+    public Hashtable getFaultyModules() {
+        return faultyModules;
+    }
+
+    public Hashtable getFaultyServices() {
+        return faultyServices;
+    }
+
+    public void removeFaultyService(String key) {
+        Iterator itr = faultyServices.keySet().iterator();
+        while (itr.hasNext()) {
+            String fullFileName = (String) itr.next();
+            if (fullFileName.indexOf(key) > 0) {
+                faultyServices.remove(fullFileName);
+                return;
+            }
+        }
+    }
+
+    // to get the out flow correpodning to the global out flow;
+    public ArrayList getGlobalOutPhases() {
+        return this.outPhases;
+    }
+
+    /**
+     * @return Returns ArrayList.
+     */
+    public ArrayList getInFaultFlow() {
+        return inFaultPhases;
+    }
+
+    public ArrayList getGlobalInFlow() {
+        return inPhasesUptoAndIncludingPostDispatch;
+    }
+
+    public MessageReceiver getMessageReceiver(String mepURL) {
+        return (MessageReceiver) messageReceivers.get(mepURL);
+    }
+
+    /**
+     * Method getModule. first it will check whether the given module is there
+     * in the hashMap , if so just return that and the name can be either with
+     * version string or without vresion string <p/> if it not found and , the
+     * nane does not have version string in it then try to check whether default
+     * vresion of module available in the sytem for the give name , if so return
+     * that
+     *
+     * @param name
+     * @return Returns ModuleDescription.
+     */
+    public AxisModule getModule(QName name) {
+        AxisModule module = (AxisModule) allModules.get(name);
+        if (module != null) {
+            return module;
+        }
+        // checking whether the version string seperator is not there in the
+        // module name
+        String moduleName = name.getLocalPart();
+        String defaultModuleVersion = getDefaultModuleVersion(moduleName);
+        if (defaultModuleVersion != null) {
+            module = (AxisModule) allModules.get(Utils.getModuleName(
+                    moduleName, defaultModuleVersion));
+            if (module != null) {
+                return module;
+            }
+        }
+        return null;
+    }
+
+    // the class loder that become the parent of all the modules
+    public ClassLoader getModuleClassLoader() {
+        return this.moduleClassLoader;
+    }
+
+    public ModuleConfiguration getModuleConfig(QName moduleName) {
+        return (ModuleConfiguration) moduleConfigmap.get(moduleName);
+    }
+
+    /**
+     * @return Returns HashMap.
+     */
+    public HashMap getModules() {
+        return allModules;
+    }
+
+    /**
+     * @return Returns ArrayList.
+     */
+    public ArrayList getOutFaultFlow() {
+        return outFaultPhases;
+    }
+
+    public PhasesInfo getPhasesInfo() {
+        return phasesinfo;
+    }
+
+    public URL getRepository() {
+        return axis2Repository;
+    }
+
+    /**
+     * Method getService.
+     *
+     * @param name
+     * @return Returns AxisService.
+     */
+    public AxisService getService(String name) throws AxisFault {
+        AxisService axisService = (AxisService) allservices.get(name);
+        if (axisService != null) {
+            if (axisService.isActive()) {
+                return axisService;
+            } else {
+                throw new AxisFault(Messages
+                        .getMessage("serviceinactive", name));
+            }
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Service can start and stop , if once stop we can not acess that , so we
+     * need a way to get the service even if service is not active
+     *
+     * @return AxisService
+     */
+    public AxisService getServiceForActivation(String serviceName) {
+        AxisService axisService = (AxisService) allservices.get(serviceName);
+        if (axisService != null) {
+            return axisService;
+        } else {
+            return null;
+        }
+    }
+
+    // the class loder that become the parent of all the services
+    public ClassLoader getServiceClassLoader() {
+        return this.serviceClassLoader;
+    }
+
+    public AxisServiceGroup getServiceGroup(String serviceNameAndGroupString) {
+        // return (AxisServiceGroup)
+        // serviceGroups.get(serviceNameAndGroupString);
+        return (AxisServiceGroup) getChild(serviceNameAndGroupString);
+    }
+
+    public Iterator getServiceGroups() {
+        // return serviceGroups.values().iterator();
+        return getChildren();
+    }
+
+    // to get all the services in the system
+    public HashMap getServices() {
+        Iterator sgs = getServiceGroups();
+
+        while (sgs.hasNext()) {
+            AxisServiceGroup axisServiceGroup = (AxisServiceGroup) sgs.next();
+            Iterator servics = axisServiceGroup.getServices();
+
+            while (servics.hasNext()) {
+                AxisService axisService = (AxisService) servics.next();
+
+                allservices.put(axisService.getName(), axisService);
+            }
+        }
+
+        return allservices;
+    }
+
+    // the class loder which become the top most parent of all the modules and
+    // services
+    public ClassLoader getSystemClassLoader() {
+        return this.systemClassLoader;
+    }
+
+    public TransportInDescription getTransportIn(QName name) throws AxisFault {
+        return (TransportInDescription) transportsIn.get(name);
+    }
+
+    public TransportOutDescription getTransportOut(QName name) throws AxisFault {
+        return (TransportOutDescription) transportsOut.get(name);
+    }
+
+    public HashMap getTransportsIn() {
+        return transportsIn;
+    }
+
+    public HashMap getTransportsOut() {
+        return transportsOut;
+    }
+
+    public boolean isEngaged(QName moduleName) {
+        boolean b = engagedModules.contains(moduleName);
+        return b ? b : engagedModules.contains(this.getDefaultModule(
+                moduleName.getLocalPart()).getName());
+    }
+
+    public void setGlobalOutPhase(ArrayList outPhases) {
+        this.outPhases = outPhases;
+    }
+
+    /**
+     * @param list
+     */
+    public void setInFaultPhases(ArrayList list) {
+        inFaultPhases = list;
+    }
+
+    public void setInPhasesUptoAndIncludingPostDispatch(
+            ArrayList inPhasesUptoAndIncludingPostDispatch) {
+        this.inPhasesUptoAndIncludingPostDispatch = inPhasesUptoAndIncludingPostDispatch;
+    }
+
+    public void setModuleClassLoader(ClassLoader classLoader) {
+        this.moduleClassLoader = classLoader;
+    }
+
+    /**
+     * @param list
+     */
+    public void setOutFaultPhases(ArrayList list) {
+        outFaultPhases = list;
+    }
+
+    public void setPhasesInfo(PhasesInfo phasesInfo) {
+        this.phasesinfo = phasesInfo;
+    }
+
+    public void setRepository(URL axis2Repository) {
+        this.axis2Repository = axis2Repository;
+    }
+
+    public void setServiceClassLoader(ClassLoader classLoader) {
+        this.serviceClassLoader = classLoader;
+    }
+
+    public void setSystemClassLoader(ClassLoader classLoader) {
+        this.systemClassLoader = classLoader;
+    }
+
+    /**
+     * Adds a dafault module version , which can be done either programatically
+     * or by using axis2.xml . The default module version is important if user
+     * asks to engage a module without given version ID, in which case, we will
+     * engage the default version.
+     *
+     * @param moduleName
+     * @param moduleVersion
+     */
+    public void addDefaultModuleVersion(String moduleName, String moduleVersion) {
+        if (nameToversionMap.get(moduleName) == null) {
+            nameToversionMap.put(moduleName, moduleVersion);
+        }
+    }
+
+    public String getDefaultModuleVersion(String moduleName) {
+        return (String) nameToversionMap.get(moduleName);
+    }
+
+    public AxisModule getDefaultModule(String moduleName) {
+        String defualtModuleVersion = getDefaultModuleVersion(moduleName);
+        if (defualtModuleVersion == null) {
+            return (AxisModule) allModules.get(new QName(moduleName));
+        } else {
+            return (AxisModule) allModules.get(new QName(moduleName + "-"
+                    + defualtModuleVersion));
+        }
+    }
+
+    public Object getKey() {
+        return toString();
+    }
+
+    public void stopService(String serviceName) throws AxisFault {
+        AxisService service = (AxisService) allservices.get(serviceName);
+        if (service == null) {
+            throw new AxisFault(Messages.getMessage("servicenamenotvalid",
+                    serviceName));
+        }
+        service.setActive(false);
+        notifyObservers(AxisEvent.SERVICE_STOP, service);
+    }
+
+    public void startService(String serviceName) throws AxisFault {
+        AxisService service = (AxisService) allservices.get(serviceName);
+        if (service == null) {
+            throw new AxisFault(Messages.getMessage("servicenamenotvalid",
+                    serviceName));
+        }
+        service.setActive(true);
+        notifyObservers(AxisEvent.SERVICE_START, service);
+    }
+
+    public boolean isManageTransportSession() {
+        return manageTransportSession;
+    }
+
+    public void setManageTransportSession(boolean manageTransportSession) {
+        this.manageTransportSession = manageTransportSession;
+    }
+
+    public List getModulesForPolicyNamesapce(String namesapce) {
+        return (List) policySupportedModules.get(namesapce);
+    }
+
+    public void registerModulePolicySupport(AxisModule axisModule) {
+        String[] namespaces = axisModule.getSupportedPolicyNamespaces();
+
+        if (namespaces == null) {
+            return;
+        }
+
+        List modulesList;
+
+        for (int i = 0; i < namespaces.length; i++) {
+            modulesList = (List) policySupportedModules.get(namespaces[i]);
+
+            if (modulesList != null) {
+                modulesList.add(axisModule);
+            } else {
+                modulesList = new ArrayList();
+                modulesList.add(axisModule);
+                policySupportedModules.put(namespaces[i], modulesList);
+            }
+        }
+    }
+
+    public void registerLocalPolicyAssertions(AxisModule axisModule) {
+        QName[] localPolicyAssertions = axisModule.getLocalPolicyAssertions();
+
+        if (localPolicyAssertions == null) {
+            return;
+        }
+
+        for (int i = 0; i < localPolicyAssertions.length; i++) {
+            addLocalPolicyAssertion(localPolicyAssertions[i]);
+        }
+    }
+
+    public ArrayList getObserversList() {
+        return observersList;
+    }
+
+    public boolean isStart() {
+        return start;
+    }
+
+    public void setStart(boolean start) {
+        this.start = start;
+    }
+
+    /**
+     * getTargetResolverChain returns and instance of
+     * TargetResolver which iterates over the registered
+     * TargetResolvers, calling each one in turn when
+     * resolveTarget is called
+     */
+    public TargetResolver getTargetResolverChain() {
+        if(targetResolvers.isEmpty()){
+            return null;
+        }
+        return new TargetResolver() {
+            public void resolveTarget(MessageContext messageContext) {
+                Iterator iter = targetResolvers.iterator();
+                while (iter.hasNext()) {
+                    TargetResolver tr = (TargetResolver) iter.next();
+                    tr.resolveTarget(messageContext);
+                }
+            }
+        };
+    }
+
+    public void addTargetResolver(TargetResolver tr) {
+        targetResolvers.add(tr);
+    }
+
+    public void addLocalPolicyAssertion(QName name) {
+        this.localPolicyAssertions.add(name);
+    }
+
+    public List getLocalPolicyAssertions() {
+        return this.localPolicyAssertions;
+    }
+
+    public void removeLocalPolicyAssertion(QName name) {
+        this.localPolicyAssertions.remove(name);
+    }
+
+    public boolean isAssertionLocal(QName name) {
+        return this.localPolicyAssertions.contains(name);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisConfigurator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisConfigurator.java
new file mode 100644
index 0000000..5979b5f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisConfigurator.java
@@ -0,0 +1,43 @@
+package org.apache.axis2.engine;

+

+import org.apache.axis2.AxisFault;

+

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public interface AxisConfigurator {

+

+    /**

+     * Configurationcontextfactory will invoke this method to get the AxisConfiguration

+     *

+     * @return AxisConfigurator

+     */

+    AxisConfiguration getAxisConfiguration() throws AxisFault;

+

+    /**

+     * Method to deploy services from the repository

+     */

+    void loadServices();

+

+    /**

+     * Engages the global modules specified in the configuration

+     * 

+     * @throws AxisFault

+     */

+    void engageGlobalModules() throws AxisFault;

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
new file mode 100644
index 0000000..4d8ad80
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
@@ -0,0 +1,756 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.*;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.AddressingConstants.Final;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.RelatesTo;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.Handler.InvocationResponse;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.TransportSender;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.UUIDGenerator;
+import org.apache.axis2.util.TargetResolver;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * There is one engine for the Server and the Client. the send() and receive()
+ * Methods are the basic operations the Sync, Async messageing are build on top.
+ */
+public class AxisEngine {
+
+    /**
+     * Field log
+     */
+    private static final Log log = LogFactory.getLog(AxisEngine.class);
+    private ConfigurationContext engineContext;
+
+    /**
+     * Constructor AxisEngine
+     */
+    public AxisEngine(ConfigurationContext engineContext) {
+        this.engineContext = engineContext;
+    }
+
+    private void checkMustUnderstand(MessageContext msgContext) throws AxisFault {
+        if (!msgContext.isHeaderPresent()) {
+            return;
+        }
+        SOAPEnvelope envelope = msgContext.getEnvelope();
+        if (envelope.getHeader() == null) {
+            return;
+        }
+        Iterator headerBlocks = envelope.getHeader().examineAllHeaderBlocks();
+        while (headerBlocks.hasNext()) {
+            SOAPHeaderBlock headerBlock = (SOAPHeaderBlock) headerBlocks.next();
+            // if this header block has been processed or mustUnderstand isn't
+            // turned on then its cool
+            if (headerBlock.isProcessed() || !headerBlock.getMustUnderstand()) {
+                continue;
+            }
+            // if this header block is not targetted to me then its not my
+            // problem. Currently this code only supports the "next" role; we
+            // need to fix this to allow the engine/service to be in one or more
+            // additional roles and then to check that any headers targetted for
+            // that role too have been dealt with.
+
+            String role = headerBlock.getRole();
+
+            String prefix = envelope.getNamespace().getPrefix();
+
+            if (!msgContext.isSOAP11()) {
+
+                // if must understand and soap 1.2 the Role should be NEXT , if it is null we consider
+                // it to be NEXT
+                if (prefix == null || "".equals(prefix)) {
+                    prefix = SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX;
+                }
+                if (role != null) {
+                    if (!SOAP12Constants.SOAP_ROLE_NEXT.equals(role)) {
+                        throw new AxisFault(Messages.getMessage(
+                                "mustunderstandfailed",
+                                prefix, SOAP12Constants.FAULT_CODE_MUST_UNDERSTAND));
+                    }
+                } else {
+                    throw new AxisFault(Messages.getMessage(
+                            "mustunderstandfailed",
+                            prefix, SOAP12Constants.FAULT_CODE_MUST_UNDERSTAND));
+                }
+            } else {
+
+                // if must understand and soap 1.1 the actor should be NEXT , if it is null we considerr
+                // it to be NEXT
+                if ((role != null) && !SOAP11Constants.SOAP_ACTOR_NEXT.equals(role)) {
+                    throw new AxisFault(Messages.getMessage(
+                            "mustunderstandfailed",
+                            prefix, SOAP12Constants.FAULT_CODE_MUST_UNDERSTAND));
+                }
+            }
+        }
+    }
+
+    /**
+     * This method is called to handle any error that occurs at inflow or outflow. But if the
+     * method is called twice, it implies that sending the error handling has failed, in which case
+     * the method logs the error and exists.
+     *
+     * @param processingContext
+     * @param e
+     * @throws AxisFault
+     */
+    public MessageContext createFaultMessageContext(MessageContext processingContext, Throwable e)
+            throws AxisFault {
+        if (processingContext.isProcessingFault()) {
+
+            // We get the error file processing the fault. nothing we can do
+            throw new AxisFault(Messages.getMessage("errorwhileProcessingFault"));
+        }
+
+        MessageContext faultContext = new MessageContext();
+        faultContext.setConfigurationContext(engineContext);
+        faultContext.setSessionContext(processingContext.getSessionContext());
+        faultContext.setTransportIn(processingContext.getTransportIn());
+        faultContext.setTransportOut(processingContext.getTransportOut());
+
+        faultContext.setMessageID(UUIDGenerator.getUUID());
+        faultContext.addRelatesTo(new RelatesTo(processingContext.getOptions().getMessageId()));
+        faultContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+                processingContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING));
+        faultContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                processingContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION));
+        faultContext.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES,
+                processingContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+
+        // register the fault message context
+        if (processingContext.getAxisOperation() != null && processingContext.getOperationContext() != null) {
+            processingContext.getAxisOperation().addFaultMessageContext(faultContext, processingContext.getOperationContext());
+        }
+
+        ServiceContext serviceContext = processingContext.getServiceContext();
+        if (serviceContext != null) {
+            faultContext.setServiceContext(serviceContext);
+        }
+
+        faultContext.setOperationContext(processingContext.getOperationContext());
+        faultContext.setProcessingFault(true);
+        faultContext.setServerSide(true);
+        faultContext.setDoingREST(processingContext.isDoingREST());
+
+        faultContext.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
+
+        // Add correct Action
+        AxisOperation op = processingContext.getAxisOperation();
+        if (op != null && op.getFaultAction() != null) {
+            faultContext.setWSAAction(processingContext.getAxisOperation().getFaultAction());
+        } else { //If, for some reason there is no value set, should use a sensible action.
+            faultContext.setWSAAction(Final.WSA_SOAP_FAULT_ACTION);
+        }
+
+        // there are some information  that the fault thrower wants to pass to the fault path.
+        // Means that the fault is a ws-addressing one hence use the ws-addressing fault action.
+        Object faultInfoForHeaders = processingContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS);
+        if (faultInfoForHeaders != null) {
+            faultContext.setProperty(Constants.FAULT_INFORMATION_FOR_HEADERS, faultInfoForHeaders);
+            faultContext.setWSAAction(Final.WSA_FAULT_ACTION);
+        }
+
+        // if the exception is due to a problem in the faultTo header itself, we can not use those
+        // fault informatio to send the error. Try to send using replyTo, leave it to transport
+        boolean doNotSendFaultUsingFaultTo = false;
+        if (faultInfoForHeaders != null) {
+            String problemHeaderName = (String) ((Map) faultInfoForHeaders).get(AddressingConstants.Final.FAULT_HEADER_PROB_HEADER_QNAME);
+            doNotSendFaultUsingFaultTo = (problemHeaderName != null && (AddressingConstants.WSA_DEFAULT_PREFIX + ":" + AddressingConstants.WSA_FAULT_TO).equals(problemHeaderName));
+        }
+
+        EndpointReference faultTo = processingContext.getFaultTo();
+        if (faultTo != null && !doNotSendFaultUsingFaultTo) {
+            faultContext.setTo(faultTo);
+        } else {
+            faultContext.setTo(processingContext.getReplyTo());
+        }
+
+        // do Target Resolution
+        TargetResolver targetResolver = faultContext.getConfigurationContext().getAxisConfiguration().getTargetResolverChain();
+        if(targetResolver != null){
+            targetResolver.resolveTarget(faultContext);
+        }
+
+        //Determine that we have the correct transport available.
+        TransportOutDescription transportOut = faultContext.getTransportOut();
+
+        try {
+            EndpointReference responseEPR = faultContext.getTo();
+            if (faultContext.isServerSide() && responseEPR != null) {
+                if (!responseEPR.hasAnonymousAddress() && !responseEPR.hasNoneAddress()) {
+                    URI uri = new URI(responseEPR.getAddress());
+                    String scheme = uri.getScheme();
+                    if (!transportOut.getName().getLocalPart().equals(scheme)) {
+                        ConfigurationContext configurationContext = faultContext.getConfigurationContext();
+                        transportOut = configurationContext.getAxisConfiguration()
+                                .getTransportOut(new QName(scheme));
+                        if (transportOut == null) {
+                            throw new AxisFault("Can not find the transport sender : " + scheme);
+                        }
+                        faultContext.setTransportOut(transportOut);
+                    }
+                }
+            }
+        } catch (URISyntaxException urise) {
+            throw new AxisFault(urise);
+        }
+
+        SOAPEnvelope envelope;
+
+        if (processingContext.isSOAP11()) {
+            envelope = OMAbstractFactory.getSOAP11Factory().getDefaultFaultEnvelope();
+        } else {
+
+            // Following will make SOAP 1.2 as the default, too.
+            envelope = OMAbstractFactory.getSOAP12Factory().getDefaultFaultEnvelope();
+        }
+
+        extractFaultInformationFromMessageContext(processingContext, envelope.getBody().getFault(),
+                e);
+        faultContext.setEnvelope(envelope);
+        faultContext.setProperty(MessageContext.TRANSPORT_OUT,
+                processingContext.getProperty(MessageContext.TRANSPORT_OUT));
+        faultContext.setProperty(Constants.OUT_TRANSPORT_INFO,
+                processingContext.getProperty(Constants.OUT_TRANSPORT_INFO));
+
+        return faultContext;
+    }
+
+    /**
+     * Information to create the SOAPFault can be extracted from different places.
+     * 1. Those information may have been put in to the message context by some handler. When someone
+     * is putting like that, he must make sure the SOAPElements he is putting must be from the
+     * correct SOAP Version.
+     * 2. SOAPProcessingException is flexible enough to carry information about the fault. For example
+     * it has an attribute to store the fault code. The fault reason can be extracted from the
+     * message of the exception. I opted to put the stacktrace under the detail element.
+     * eg : <Detail>
+     * <Exception> stack trace goes here </Exception>
+     * <Detail>
+     * <p/>
+     * If those information can not be extracted from any of the above places, I default the soap
+     * fault values to following.
+     * <Fault>
+     * <Code>
+     * <Value>env:Receiver</Value>
+     * </Code>
+     * <Reason>
+     * <Text>unknown</Text>
+     * </Reason>
+     * <Role/>
+     * <Node/>
+     * <Detail/>
+     * </Fault>
+     * <p/>
+     * -- EC
+     *
+     * @param context
+     * @param fault
+     * @param e
+     */
+    private void extractFaultInformationFromMessageContext(MessageContext context, SOAPFault fault,
+                                                           Throwable e) {
+        SOAPProcessingException soapException = null;
+        AxisFault axisFault = null;
+
+        if (e != null) {
+            if (e instanceof AxisFault) {
+                axisFault = (AxisFault) e;
+            } else if (e.getCause() instanceof AxisFault) {
+                axisFault = (AxisFault) e.getCause();
+            }
+        }
+
+        if (e instanceof SOAPProcessingException) {
+            soapException = (SOAPProcessingException) e;
+        } else if (axisFault != null) {
+            if (axisFault.getCause() instanceof SOAPProcessingException) {
+                soapException = (SOAPProcessingException) axisFault.getCause();
+            }
+        } else {
+            // we have recd an instance of just the Exception class
+        }
+
+        // user can set the fault information to the message context or to the AxisFault itself.
+        // whatever user sets to the message context, supercedes eerything.
+
+        Object faultCode = context.getProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME);
+        String soapFaultCode = "";
+
+
+        if (faultCode != null) {
+            fault.setCode((SOAPFaultCode) faultCode);
+        } else if (soapException != null) {
+            soapFaultCode = soapException.getFaultCode();
+        } else if (axisFault != null) {
+
+            Map faultElementsMap = axisFault.getFaultElements();
+            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME) != null) {
+                fault.setCode((SOAPFaultCode) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME));
+            } else {
+                QName faultCodeQName = axisFault.getFaultCode();
+                if (faultCodeQName != null) {
+                    if (faultCodeQName.getLocalPart().indexOf(":") == -1) {
+                        String prefix = faultCodeQName.getPrefix();
+                        String uri = faultCodeQName.getNamespaceURI();
+                        prefix = prefix == null || "".equals(prefix) ? Constants.AXIS2_NAMESPACE_PREFIX : prefix;
+                        uri = uri == null || "".equals(uri) ? Constants.AXIS2_NAMESPACE_URI : uri;
+                        soapFaultCode = prefix + ":" + faultCodeQName.getLocalPart();
+                        fault.declareNamespace(uri, prefix);
+                    } else {
+                        soapFaultCode = faultCodeQName.getLocalPart();
+                    }
+                }
+            }
+        }
+
+        // defaulting to fault code Sender, if no message is available
+        if (faultCode == null && context.getEnvelope() != null) {
+            soapFaultCode = ("".equals(soapFaultCode) || (soapFaultCode == null))
+                    ? getSenderFaultCode(context.getEnvelope().getNamespace())
+                    : soapFaultCode;
+            fault.getCode().getValue().setText(soapFaultCode);
+        }
+
+        Object faultReason = context.getProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME);
+        String message = "";
+
+        if (faultReason != null) {
+            fault.setReason((SOAPFaultReason) faultReason);
+            message = fault.getReason().getFirstSOAPText().getText();
+        } else if (soapException != null) {
+            message = soapException.getMessage();
+        } else if (axisFault != null) {
+            Map faultElementsMap = axisFault.getFaultElements();
+            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME) != null) {
+                fault.setReason((SOAPFaultReason) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME));
+            } else {
+                message = axisFault.getReason();
+                if (message == null || "".equals(message)) {
+                    message = getFaultReasonFromException(e, context);
+                }
+//                message = message != null && "".equals(message) ? message : e.getMessage();
+            }
+
+
+        }
+
+        // defaulting to reason, unknown, if no reason is available
+        if (faultReason == null) {
+            message = ("".equals(message) || (message == null))
+                    ? "unknown"
+                    : message;
+            fault.getReason().getFirstSOAPText().setLang("en-US");
+            fault.getReason().getFirstSOAPText().setText(message);
+        }
+
+
+        Object faultRole = context.getProperty(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME);
+        if (faultRole != null) {
+            fault.getRole().setText((String) faultRole);
+        } else if (axisFault != null) {
+            Map faultElementsMap = axisFault.getFaultElements();
+            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME) != null) {
+                fault.setRole((SOAPFaultRole) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME));
+            }
+        }
+
+        Object faultNode = context.getProperty(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME);
+        if (faultNode != null) {
+            fault.getNode().setText((String) faultNode);
+        } else if (axisFault != null) {
+            Map faultElementsMap = axisFault.getFaultElements();
+            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME) != null) {
+                fault.setNode((SOAPFaultNode) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME));
+            }
+        }
+
+        // Allow handlers to override the sendStacktraceDetailsWithFaults setting from the Configuration to allow
+        // WS-* protocol faults to not include the exception.
+        boolean sendStacktraceDetailsWithFaults;
+        OperationContext oc = context.getOperationContext();
+        Object flagFromContext = null;
+        if (oc != null) {
+            flagFromContext = context.getOperationContext().getProperty(Constants.Configuration.SEND_STACKTRACE_DETAILS_WITH_FAULTS);
+        }
+        if (flagFromContext != null) {
+            sendStacktraceDetailsWithFaults = JavaUtils.isTrue(flagFromContext);
+        } else {
+            Parameter param = context.getParameter(Constants.Configuration.SEND_STACKTRACE_DETAILS_WITH_FAULTS);
+            sendStacktraceDetailsWithFaults = JavaUtils.isTrue(param.getValue());
+        }
+
+        Object faultDetail = context.getProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME);
+        if (faultDetail != null) {
+            fault.setDetail((SOAPFaultDetail) faultDetail);
+        } else if (axisFault != null) {
+            Map faultElementsMap = axisFault.getFaultElements();
+            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME) != null) {
+                fault.setDetail((SOAPFaultDetail) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME));
+            } else {
+                OMElement detail = axisFault.getDetail();
+                if (detail != null) {
+                    fault.getDetail().addDetailEntry(detail);
+                } else if (sendStacktraceDetailsWithFaults) {
+                    fault.setException(axisFault);
+                }
+            }
+        } else if (fault.getException() == null && sendStacktraceDetailsWithFaults) {
+            if (e instanceof Exception) {
+                fault.setException((Exception) e);
+            } else {
+                fault.setException(new Exception(e));
+            }
+        }
+
+
+    }
+
+    /**
+     * By the time the exception comes here it can be wrapped by so many levels. This will crip down
+     * to the root cause and get the initial error depending on the property
+     *
+     * @param e
+     */
+    private String getFaultReasonFromException(Throwable e, MessageContext context) {
+        Throwable throwable = e;
+        Parameter param = context.getParameter(Constants.Configuration.DRILL_DOWN_TO_ROOT_CAUSE_FOR_FAULT_REASON);
+        boolean drillDownToRootCauseForFaultReason = param != null && ((String) param.getValue()).equalsIgnoreCase("true");
+        if (drillDownToRootCauseForFaultReason) {
+            while (throwable.getCause() != null) {
+                throwable = throwable.getCause();
+            }
+        }
+        return throwable.getMessage();
+    }
+
+    /**
+     * This methods represents the inflow of the Axis, this could be either at the server side or the client side.
+     * Here the <code>ExecutionChain</code> is created using the Phases. The Handlers at the each Phases is ordered in
+     * deployment time by the deployment module
+     *
+     * @throws AxisFault
+     * @see MessageContext
+     * @see Phase
+     * @see Handler
+     */
+    public void receive(MessageContext msgContext) throws AxisFault {
+        ConfigurationContext confContext = msgContext.getConfigurationContext();
+        ArrayList preCalculatedPhases =
+                confContext.getAxisConfiguration().getGlobalInFlow();
+        // Set the initial execution chain in the MessageContext to a *copy* of what
+        // we got above.  This allows individual message processing to change the chain without
+        // affecting later messages.
+        msgContext.setExecutionChain((ArrayList) preCalculatedPhases.clone());
+        msgContext.setFLOW(MessageContext.IN_FLOW);
+        InvocationResponse pi = invoke(msgContext);
+
+        if (pi.equals(InvocationResponse.CONTINUE)) {
+            if (msgContext.isServerSide()) {
+
+                // invoke the Message Receivers
+                checkMustUnderstand(msgContext);
+
+                MessageReceiver receiver = msgContext.getAxisOperation().getMessageReceiver();
+
+                receiver.receive(msgContext);
+            }
+        }
+    }
+
+    /**
+     * Take the execution chain from the msgContext , and then take the current Index
+     * and invoke all the phases in the arraylist
+     * if the msgContext is pauesd then the execution will be breaked
+     *
+     * @param msgContext
+     * @return An InvocationResponse that indicates what
+     *         the next step in the message processing should be.
+     * @throws AxisFault
+     */
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        if (msgContext.getCurrentHandlerIndex() == -1) {
+            msgContext.setCurrentHandlerIndex(0);
+        }
+
+        InvocationResponse pi = InvocationResponse.CONTINUE;
+
+        while (msgContext.getCurrentHandlerIndex() < msgContext.getExecutionChain().size()) {
+            Handler currentHandler = (Handler) msgContext.getExecutionChain().
+                    get(msgContext.getCurrentHandlerIndex());
+            pi = currentHandler.invoke(msgContext);
+
+            if (pi.equals(InvocationResponse.SUSPEND) ||
+                    pi.equals(InvocationResponse.ABORT)) {
+                break;
+            }
+            msgContext.setCurrentHandlerIndex(msgContext.getCurrentHandlerIndex() + 1);
+        }
+
+        return pi;
+    }
+
+    /**
+     * If the msgConetext is puased and try to invoke then
+     * first invoke the phase list and after the message receiver
+     *
+     * @param msgContext
+     * @return An InvocationResponse allowing the invoker to perhaps determine
+     *         whether or not the message processing will ever succeed.
+     * @throws AxisFault
+     */
+    public InvocationResponse resumeReceive(MessageContext msgContext) throws AxisFault {
+        //invoke the phases
+        InvocationResponse pi = invoke(msgContext);
+
+        if (pi.equals(InvocationResponse.CONTINUE)) {
+            //invoking the MR
+            if (msgContext.isServerSide()) {
+                // invoke the Message Receivers
+                checkMustUnderstand(msgContext);
+                MessageReceiver receiver = msgContext.getAxisOperation().getMessageReceiver();
+                receiver.receive(msgContext);
+            }
+        }
+        return pi;
+    }
+
+    /**
+     * To resume the invocation at the send path , this is neened since it is require to call
+     * TransportSender at the end
+     *
+     * @param msgContext
+     * @return An InvocationResponse allowing the invoker to perhaps determine
+     *         whether or not the message processing will ever succeed.
+     */
+    public InvocationResponse resumeSend(MessageContext msgContext) throws AxisFault {
+        //invoke the phases
+        InvocationResponse pi = invoke(msgContext);
+        //Invoking Tarnsport Sender
+        if (pi.equals(InvocationResponse.CONTINUE)) {
+            // write the Message to the Wire
+            TransportOutDescription transportOut = msgContext.getTransportOut();
+            TransportSender sender = transportOut.getSender();
+            sender.invoke(msgContext);
+        }
+
+        return pi;
+    }
+
+    /**
+     * This is invoked when a SOAP Fault is received from a Other SOAP Node
+     * Receives a SOAP fault from another SOAP node.
+     *
+     * @param msgContext
+     * @throws AxisFault
+     */
+    public void receiveFault(MessageContext msgContext) throws AxisFault {
+
+        log.debug(Messages.getMessage("receivederrormessage",
+                msgContext.getMessageID()));
+        ConfigurationContext confContext = msgContext.getConfigurationContext();
+        ArrayList preCalculatedPhases =
+                confContext.getAxisConfiguration().getInFaultFlow();
+        // Set the initial execution chain in the MessageContext to a *copy* of what
+        // we got above.  This allows individual message processing to change the chain without
+        // affecting later messages.
+        msgContext.setExecutionChain((ArrayList) preCalculatedPhases.clone());
+        msgContext.setFLOW(MessageContext.IN_FAULT_FLOW);
+        InvocationResponse pi = invoke(msgContext);
+
+        if (pi.equals(InvocationResponse.CONTINUE)) {
+            if (msgContext.isServerSide()) {
+
+                // invoke the Message Receivers
+                checkMustUnderstand(msgContext);
+
+                MessageReceiver receiver = msgContext.getAxisOperation().getMessageReceiver();
+
+                receiver.receive(msgContext);
+            }
+        }
+    }
+
+    /**
+     * Resume processing of a message.
+     *
+     * @param msgctx
+     * @return An InvocationResponse allowing the invoker to perhaps determine
+     *         whether or not the message processing will ever succeed.
+     * @throws AxisFault
+     */
+    public InvocationResponse resume(MessageContext msgctx) throws AxisFault {
+        msgctx.setPaused(false);
+        if (msgctx.getFLOW() == MessageContext.IN_FLOW) {
+            return resumeReceive(msgctx);
+        } else {
+            return resumeSend(msgctx);
+        }
+    }
+
+    /**
+     * This methods represents the outflow of the Axis, this could be either at the server side or the client side.
+     * Here the <code>ExecutionChain</code> is created using the Phases. The Handlers at the each Phases is ordered in
+     * deployment time by the deployment module
+     *
+     * @param msgContext
+     * @throws AxisFault
+     * @see MessageContext
+     * @see Phase
+     * @see Handler
+     */
+    public void send(MessageContext msgContext) throws AxisFault {
+
+        // find and invoke the Phases
+        OperationContext operationContext = msgContext.getOperationContext();
+        ArrayList executionChain = operationContext.getAxisOperation().getPhasesOutFlow();
+        //rather than having two steps added both oparation and global chain together
+        ArrayList outPhases = new ArrayList();
+        outPhases.addAll((ArrayList) executionChain.clone());
+        outPhases.addAll((ArrayList) msgContext.getConfigurationContext()
+                .getAxisConfiguration().getGlobalOutPhases().clone());
+        msgContext.setExecutionChain(outPhases);
+        msgContext.setFLOW(MessageContext.OUT_FLOW);
+        InvocationResponse pi = invoke(msgContext);
+
+        if (pi.equals(InvocationResponse.CONTINUE)) {
+
+            // write the Message to the Wire
+            TransportOutDescription transportOut = msgContext.getTransportOut();
+            if (transportOut == null) {
+                throw new AxisFault("Transport out has not been set");
+            }
+            TransportSender sender = transportOut.getSender();
+            // This boolean property only used in client side fireAndForget invocation
+            //It will set a property into message context and if some one has set the
+            //property then transport sender will invoke in a diffrent thread
+            Object isTransportNonBlocking = msgContext.getProperty(
+                    MessageContext.TRANSPORT_NON_BLOCKING);
+            if (isTransportNonBlocking != null && ((Boolean) isTransportNonBlocking).booleanValue()) {
+                msgContext.getConfigurationContext().getThreadPool().execute(
+                        new TransportNonBlockingInvocationWorker(msgContext, sender));
+            } else {
+                sender.invoke(msgContext);
+            }
+        }
+    }
+
+    /**
+     * Sends the SOAP Fault to another SOAP node.
+     *
+     * @param msgContext
+     * @throws AxisFault
+     */
+    public void sendFault(MessageContext msgContext) throws AxisFault {
+        OperationContext opContext = msgContext.getOperationContext();
+
+        InvocationResponse pi = InvocationResponse.CONTINUE;
+
+        // find and execute the Fault Out Flow Handlers
+        if (opContext != null) {
+            AxisOperation axisOperation = opContext.getAxisOperation();
+            ArrayList faultExecutionChain = axisOperation.getPhasesOutFaultFlow();
+
+            //adding both operation specific and global out fault flows.
+
+            ArrayList outFaultPhases = new ArrayList();
+            outFaultPhases.addAll((ArrayList) faultExecutionChain.clone());
+            msgContext.setExecutionChain((ArrayList) outFaultPhases.clone());
+            msgContext.setFLOW(MessageContext.OUT_FAULT_FLOW);
+            pi = invoke(msgContext);
+        }
+
+        if (pi.equals(InvocationResponse.CONTINUE)) {
+            msgContext.setExecutionChain(
+                    (ArrayList) msgContext.getConfigurationContext()
+                            .getAxisConfiguration().getOutFaultFlow().clone());
+            msgContext.setFLOW(MessageContext.OUT_FAULT_FLOW);
+            invoke(msgContext);
+
+            // Actually send the SOAP Fault
+            TransportSender sender = msgContext.getTransportOut().getSender();
+
+            sender.invoke(msgContext);
+        }
+    }
+
+    private String getSenderFaultCode(OMNamespace soapNamespace) {
+        return SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNamespace.getNamespaceURI())
+                ? SOAP12Constants.SOAP_DEFAULT_NAMESPACE_PREFIX + ":"
+                + SOAP12Constants.FAULT_CODE_SENDER
+                : SOAP12Constants.SOAP_DEFAULT_NAMESPACE_PREFIX + ":"
+                + SOAP11Constants.FAULT_CODE_SENDER;
+    }
+
+    /**
+     * This class is used when someone invoke a service invocation with two transports
+     * If we dont create a new thread then the main thread will block untill it gets the
+     * response . In the case of HTTP transportsender will block untill it gets HTTP 200
+     * So , main thread also block till transport sender rereases the tread. So there is no
+     * actual non-blocking. That is why when sending we creat a new thead and send the
+     * requset via that.
+     * <p/>
+     * So whole porpose of this class to send the requset via a new thread
+     * <p/>
+     * way transport.
+     */
+    private class TransportNonBlockingInvocationWorker implements Runnable {
+        private MessageContext msgctx;
+        private TransportSender sender;
+
+        public TransportNonBlockingInvocationWorker(MessageContext msgctx,
+                                                    TransportSender sender) {
+            this.msgctx = msgctx;
+            this.sender = sender;
+        }
+
+        public void run() {
+            try {
+                sender.invoke(msgctx);
+            } catch (Exception e) {
+                log.info(e.getMessage());
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisError.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisError.java
new file mode 100644
index 0000000..5d6b9d0
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisError.java
@@ -0,0 +1,40 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+public class AxisError extends RuntimeException {
+
+	private static final long serialVersionUID = 6291062136407995920L;
+
+	public AxisError() {
+    }
+
+    /**
+     * @param message Error message
+     */
+    public AxisError(String message) {
+        super(message);
+    }
+
+    /**
+     * @param message Error message
+     * @param cause   Cause
+     */
+    public AxisError(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisEvent.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisEvent.java
new file mode 100644
index 0000000..ff96eeb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisEvent.java
@@ -0,0 +1,42 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+public class AxisEvent {
+
+    /**
+     * An Axis event is sent to registered listeners whenever anything significant
+     * happens to <code>AxisConfiguration</code>.
+     */
+    public static final int SERVICE_DEPLOY    = 1;
+    public static final int SERVICE_REMOVE    = 0;
+    public static final int SERVICE_STOP      = 2;
+    public static final int SERVICE_START     = 3;
+    public static final int MODULE_DEPLOY     = 4;
+    public static final int MODULE_REMOVE     = 5;
+    private int EVENT_TYPE;
+
+    public AxisEvent(int EVENT_TYPE) {
+        this.EVENT_TYPE = EVENT_TYPE;
+    }
+
+    public int getEventType() {
+        return EVENT_TYPE;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisObserver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisObserver.java
new file mode 100644
index 0000000..f9d7b1d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/AxisObserver.java
@@ -0,0 +1,35 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.ParameterInclude;
+
+public interface AxisObserver extends ParameterInclude {
+
+    // The initilization code will go here
+    void init(AxisConfiguration axisConfig);
+
+    void serviceUpdate(AxisEvent event, AxisService service);
+
+    void serviceGroupUpdate(AxisEvent event, AxisServiceGroup serviceGroup);
+
+    void moduleUpdate(AxisEvent event, AxisModule module);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DefaultObjectSupplier.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DefaultObjectSupplier.java
new file mode 100644
index 0000000..37d1d91
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DefaultObjectSupplier.java
@@ -0,0 +1,31 @@
+package org.apache.axis2.engine;

+

+import org.apache.axis2.AxisFault;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class DefaultObjectSupplier implements ObjectSupplier {

+

+    public Object getObject(Class clazz) throws AxisFault {

+        try {

+            return clazz.newInstance();

+        } catch (Exception e) {

+            throw new AxisFault(e);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java
new file mode 100644
index 0000000..a1411a0
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java
@@ -0,0 +1,148 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.util.Loader;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Iterator;
+
+/**
+ * If the service implementation has an init method with 1 or 2 message context as its parameters, then
+ * the DependencyManager calls the init method with appropriate parameters.
+ */
+public class DependencyManager {
+    private static final Log log = LogFactory.getLog(DependencyManager.class);
+    public final static String SERVICE_INIT_METHOD = "init";
+    public final static String SERVICE_START_METHOD = "startUp";
+    public final static String SERVICE_DESTROY_METHOD = "destroy";
+
+    public static void initServiceClass(Object obj,
+                                        ServiceContext serviceContext) throws AxisFault {
+        try {
+            Class classToLoad = obj.getClass();
+            // We can not call classToLoad.getDeclaredMethed() , since there
+            //  can be insatnce where mutiple services extends using one class
+            // just for init and other reflection methods
+            Method[] methods = classToLoad.getMethods();
+
+            for (int i = 0; i < methods.length; i++) {
+                if (SERVICE_INIT_METHOD.equals(methods[i].getName())
+                        && (methods[i].getParameterTypes().length == 1)
+                        && (methods[i].getParameterTypes()[0] == ServiceContext.class)) {
+                    methods[i].invoke(obj, new Object[]{serviceContext});
+                    break;
+                }
+            }
+        } catch (SecurityException e) {
+            log.info("Exception trying to call " + SERVICE_INIT_METHOD, e);
+            throw new AxisFault(e);
+        } catch (IllegalArgumentException e) {
+            log.info("Exception trying to call " + SERVICE_INIT_METHOD, e);
+            throw new AxisFault(e);
+        } catch (IllegalAccessException e) {
+            log.info("Exception trying to call " + SERVICE_INIT_METHOD, e);
+            throw new AxisFault(e);
+        } catch (InvocationTargetException e) {
+            log.info("Exception trying to call " + SERVICE_INIT_METHOD, e);
+            throw new AxisFault(e);
+        }
+    }
+
+    /**
+     * To init all the services in application scope
+     *
+     * @param serviceGroupContext
+     * @throws AxisFault
+     */
+    public static void initService(ServiceGroupContext serviceGroupContext) throws AxisFault {
+        AxisServiceGroup serviceGroup = serviceGroupContext.getDescription();
+        Iterator serviceItr = serviceGroup.getServices();
+        while (serviceItr.hasNext()) {
+            AxisService axisService = (AxisService) serviceItr.next();
+            ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
+            AxisService service = serviceContext.getAxisService();
+            ClassLoader classLoader = service.getClassLoader();
+            Parameter implInfoParam = service.getParameter(Constants.SERVICE_CLASS);
+            if (implInfoParam != null) {
+                try {
+                    Class implClass = Loader.loadClass(
+                            classLoader,
+                            ((String) implInfoParam.getValue()).trim());
+                    Object serviceImpl = implClass.newInstance();
+                    serviceContext.setProperty(ServiceContext.SERVICE_OBJECT, serviceImpl);
+                    initServiceClass(serviceImpl, serviceContext);
+                } catch (Exception e) {
+                    new AxisFault(e);
+                }
+            }
+        }
+    }
+
+    /**
+     * To startup service when user puts load-on-startup parameter
+     */
+
+
+    public static void destroyServiceObject(ServiceContext serviceContext) throws AxisFault {
+        try {
+            Object obj = serviceContext.getProperty(ServiceContext.SERVICE_OBJECT);
+            if (obj != null) {
+                Class classToLoad = obj.getClass();
+
+                // We can not call classToLoad.getDeclaredMethed() , since there
+                //  can be insatnce where mutiple services extends using one class
+                // just for init and other reflection methods
+                Method[] methods = classToLoad.getMethods();
+
+                for (int i = 0; i < methods.length; i++) {
+                    if (SERVICE_DESTROY_METHOD.equals(methods[i].getName())
+                            && (methods[i].getParameterTypes().length == 1)
+                            && (methods[i].getParameterTypes()[0] == ServiceContext.class)) {
+                        methods[i].invoke(obj, new Object[]{serviceContext});
+                        break;
+                    }
+                }
+            }
+        } catch (SecurityException e) {
+            log.info("Exception trying to call " + SERVICE_DESTROY_METHOD, e);
+            throw new AxisFault(e);
+        } catch (IllegalArgumentException e) {
+            log.info("Exception trying to call " + SERVICE_DESTROY_METHOD, e);
+            throw new AxisFault(e);
+        } catch (IllegalAccessException e) {
+            log.info("Exception trying to call " + SERVICE_DESTROY_METHOD, e);
+            throw new AxisFault(e);
+        } catch (InvocationTargetException e) {
+            log.info("Exception trying to call " + SERVICE_DESTROY_METHOD, e);
+            throw new AxisFault(e);
+        }
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
new file mode 100644
index 0000000..46dc44d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
@@ -0,0 +1,122 @@
+package org.apache.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.AddressingHelper;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.RequestResponseTransport;
+import org.apache.axis2.wsdl.WSDLConstants.WSDL20_2004Constants;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/*
+* Copyright 2004,2005 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, softwar
+* 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.
+*
+*/
+
+public class DispatchPhase extends Phase {
+
+    private static final long serialVersionUID = -6596799621473224363L;
+
+    public DispatchPhase() {
+    }
+
+    public DispatchPhase(String phaseName) {
+        super(phaseName);
+    }
+
+    public void checkPostConditions(MessageContext msgContext) throws AxisFault {
+        EndpointReference toEPR = msgContext.getTo();
+
+        if (msgContext.getAxisService() == null) {
+            throw new AxisFault(Messages.getMessage("servicenotfoundforepr",
+                    ((toEPR != null) ? toEPR.getAddress() : "")));
+        } else if (msgContext.getAxisOperation() == null) {
+            throw new AxisFault(Messages.getMessage("operationnotfoundforepr",
+                    ((toEPR != null) ? toEPR.getAddress()
+                            : ""), msgContext.getWSAAction()));
+        }
+
+        validateTransport(msgContext);
+        if (msgContext.getOperationContext() == null) {
+            throw new AxisFault(Messages.getMessage("cannotBeNullOperationContext"));
+        }
+
+        if (msgContext.getServiceContext() == null) {
+            throw new AxisFault(Messages.getMessage("cannotBeNullServiceContext"));
+        }
+
+        if ((msgContext.getAxisOperation() == null) && (msgContext.getOperationContext() != null)) {
+            msgContext.setAxisOperation(msgContext.getOperationContext().getAxisOperation());
+        }
+
+        if ((msgContext.getAxisService() == null) && (msgContext.getServiceContext() != null)) {
+            msgContext.setAxisService(msgContext.getServiceContext().getAxisService());
+        }
+        
+        //TODO: The same thing should probably happen for a IN-OUT if addressing is enabled and the replyTo/faultTo are not anonymous 
+        if (msgContext.getAxisOperation().getMessageExchangePattern().equals(WSDL20_2004Constants.MEP_URI_IN_ONLY))
+        {
+          Object requestResponseTransport = msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+          if (requestResponseTransport != null)
+          {
+            ((RequestResponseTransport)requestResponseTransport).acknowledgeMessage(msgContext);
+          }
+        }else if (msgContext.getAxisOperation().getMessageExchangePattern().equals(WSDL20_2004Constants.MEP_URI_IN_OUT))
+        {   // OR, if 2 way operation but the response is intended to not use the response channel of a 2-way transport
+            // then we don't need to keep the transport waiting.
+            Object requestResponseTransport = msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+            if (requestResponseTransport != null)
+            {
+                if(AddressingHelper.isReplyRedirected(msgContext) && AddressingHelper.isFaultRedirected(msgContext)){
+                    ((RequestResponseTransport)requestResponseTransport).acknowledgeMessage(msgContext);
+                }
+            }
+          }
+
+
+        ArrayList operationChain = msgContext.getAxisOperation().getRemainingPhasesInFlow();
+        msgContext.setExecutionChain((ArrayList) operationChain.clone());
+    }
+
+    /**
+     * To check wether the incoming request has come in valid transport , simpley the transports
+     * that service author wants to expose
+     *
+     * @param msgctx
+     */
+    private void validateTransport(MessageContext msgctx) throws AxisFault {
+        AxisService service = msgctx.getAxisService();
+        if (service.isEnableAllTransports()) {
+            return;
+        } else {
+            List trs = service.getExposedTransports();
+            String incommingTrs = msgctx.getIncomingTransportName();
+            for (int i = 0; i < trs.size(); i++) {
+                String tr = (String) trs.get(i);
+                if (incommingTrs != null && incommingTrs.equals(tr)) {
+                    return;
+                }
+            }
+        }
+        EndpointReference toEPR = msgctx.getTo();
+        throw new AxisFault(Messages.getMessage("servicenotfoundforepr",
+                ((toEPR != null) ? toEPR.getAddress() : "")));
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/Handler.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/Handler.java
new file mode 100644
index 0000000..a20da72
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/Handler.java
@@ -0,0 +1,111 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.Parameter;
+
+/**
+ * Interface Handler
+ */
+public interface Handler {
+    /**
+     * Since this might change the whole behavior of Axis2 handlers, and since this is still under discussion 
+     * (http://marc.theaimsgroup.com/?l=axis-dev&m=114504084929285&w=2) implementation of this method is deferred.
+     * Note : This method will not be automatically called, from Axis2 engine, until this is fully implemented.
+     */
+    public void cleanup();
+
+    /**
+     * Method init.
+     *
+     * @param handlerdesc
+     */
+    public void init(HandlerDescription handlerdesc);
+
+    /**
+     * Invoke is called to do the actual work of the Handler object.
+     * If there is a fault during the processing of this method it is
+     * invoke's job to catch the exception and undo any partial work
+     * that has been completed.
+     * 
+     * N.B. This method may be called concurrently from multiple threads.
+     *
+     * @param msgContext the <code>MessageContext</code> to process with this
+     *                   <code>Handler</code>.
+     * @return An InvocationResponse that indicates what
+     *         the next step in the message processing should be.
+     * @throws AxisFault if the handler encounters an error
+     */
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault;
+
+    /**
+     * Gets the HandlerDescription of a handler. This is used as an input to get phaseRule of a handler.
+     *
+     * @return Returns HandlerDescription.
+     */
+    public HandlerDescription getHandlerDesc();
+
+    /**
+     * Method getName.
+     *
+     * @return Returns String
+     */
+    public String getName();
+
+    /**
+     * Method getParameter.
+     *
+     * @param name
+     * @return Returns Parameter.
+     */
+    public Parameter getParameter(String name);
+    
+    /**
+     * This type encapsulates an enumeration of possible message processing
+     * instruction values that may be returned by a handler/phase within the
+     * runtime.  The returned instruction will determine the next step in
+     * the processing.
+     */
+    public class InvocationResponse
+    {
+      public static InvocationResponse CONTINUE = new InvocationResponse(0);
+      public static InvocationResponse SUSPEND = new InvocationResponse(1);
+      public static InvocationResponse ABORT = new InvocationResponse(2);
+
+      private int instructionID;
+        
+      private InvocationResponse(int instructionID)
+      {
+        this.instructionID = instructionID;
+      }
+        
+      public boolean equals(InvocationResponse instruction)
+      {
+        return this.instructionID == instruction.instructionID;
+      }
+        
+      public int hashCode()
+      {
+        return instructionID;
+      }
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/InstanceDispatcher.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/InstanceDispatcher.java
new file mode 100644
index 0000000..b94b51c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/InstanceDispatcher.java
@@ -0,0 +1,181 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.context.*;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.i18n.Messages;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.xml.namespace.QName;
+
+/**
+ * By the time the control comes to this handler, the dispatching must have happened
+ * so that the message context contains the AxisServiceGroup, AxisService and
+ * AxisOperation.
+ * This will then try to find the Contexts of ServiceGroup, Service and the Operation.
+ */
+public class InstanceDispatcher extends AbstractHandler {
+    private static final QName SERVICE_GROUP_QNAME = new QName(Constants.AXIS2_NAMESPACE_URI,
+            Constants.SERVICE_GROUP_ID, Constants.AXIS2_NAMESPACE_PREFIX);
+
+    /**
+     * Post Condition : All the Contexts must be populated.
+     *
+     * @param msgContext
+     * @throws org.apache.axis2.AxisFault
+     */
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        ServiceContext serviceContext = msgContext.getServiceContext();
+
+        if ((msgContext.getOperationContext() != null)
+                && (serviceContext != null)) {
+            msgContext.setServiceGroupContextId(
+                    ((ServiceGroupContext) serviceContext.getParent()).getId());
+
+            return InvocationResponse.CONTINUE;        
+        }
+
+        // try to extract sgcId from the message
+        extractServiceGroupContextId(msgContext);
+
+        //trying to get service context from Session context
+        fillContextsFromSessionContext(msgContext);
+
+        AxisOperation axisOperation = msgContext.getAxisOperation();
+
+        // 1. look up opCtxt using mc.addressingHeaders.relatesTo[0]
+        if (axisOperation == null) {
+          return InvocationResponse.CONTINUE;        
+        }
+
+        OperationContext operationContext =
+                axisOperation.findForExistingOperationContext(msgContext);
+
+        if (operationContext != null) {
+
+            // register operation context and message context
+//            axisOperation.registerOperationContext(msgContext, operationContext);
+            axisOperation.registerMessageContext(msgContext, operationContext);
+
+            serviceContext = (ServiceContext) operationContext.getParent();
+            ServiceGroupContext serviceGroupContext =
+                    (ServiceGroupContext) serviceContext.getParent();
+
+            msgContext.setServiceContext(serviceContext);
+            msgContext.setServiceGroupContext(serviceGroupContext);
+            msgContext.setServiceGroupContextId(serviceGroupContext.getId());
+        } else {    // 2. if null, create new opCtxt
+            operationContext = new OperationContext(axisOperation);
+
+            axisOperation.registerMessageContext(msgContext, operationContext);
+            if (serviceContext != null) {
+                // no need to added to configuration conetxt , since we are happy in
+                //  storing in session context
+                operationContext.setParent(serviceContext);
+            } else {
+                // fill the service group context and service context info
+                msgContext.getConfigurationContext().fillServiceContextAndServiceGroupContext(
+                        msgContext);
+            }
+        }
+        // setting myEPR
+        String transportURL = (String) msgContext.getProperty(Constants.Configuration.TRANSPORT_IN_URL);
+        if (serviceContext != null) {
+            serviceContext.setMyEPR(msgContext.getTo());
+        }
+        return InvocationResponse.CONTINUE;        
+    }
+
+    private void fillContextsFromSessionContext(MessageContext msgContext) throws AxisFault {
+        AxisService service = msgContext.getAxisService();
+        if (service == null) {
+            throw new AxisFault(Messages.getMessage("unabletofindservice"));
+        }
+        SessionContext sessionContext = msgContext.getSessionContext();
+        String scope = service.getScope();
+        if (Constants.SCOPE_TRANSPORT_SESSION.equals(scope)) {
+            if (sessionContext == null) {
+                Object obj = msgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
+                if (obj != null) {
+                    sessionContext = (SessionContext) getSessionContext((HttpServletRequest) obj);
+                    msgContext.setSessionContext(sessionContext);
+                }
+            }
+        }
+        String serviceGroupContextId = msgContext.getServiceGroupContextId();
+        if (serviceGroupContextId != null && sessionContext != null) {
+            //setting service group context which is teken from session context
+            ServiceGroupContext serviceGroupContext = sessionContext.getServiceGroupContext(
+                    serviceGroupContextId);
+            if (serviceGroupContext != null) {
+                //setting service group context
+                msgContext.setServiceGroupContext(serviceGroupContext);
+                // setting Service conetxt
+                msgContext.setServiceContext(serviceGroupContext.getServiceContext(service));
+                return;
+            }
+        }
+
+        if (Constants.SCOPE_TRANSPORT_SESSION.equals(scope) && sessionContext != null) {
+            ServiceContext serviceContext = sessionContext.getServiceContext(service);
+            //found the serviceContext from session context , so adding that into msgContext
+            if (serviceContext != null) {
+                msgContext.setServiceContext(serviceContext);
+            }
+        }
+    }
+
+    private void extractServiceGroupContextId(MessageContext msgContext) throws AxisFault {
+        if (!msgContext.isHeaderPresent()) {
+            return;
+        }
+        SOAPHeader soapHeader = msgContext.getEnvelope().getHeader();
+        if (soapHeader != null) {
+            OMElement serviceGroupId = soapHeader.getFirstChildWithName(SERVICE_GROUP_QNAME);
+            if (serviceGroupId != null) {
+                String groupId = serviceGroupId.getText();
+                ServiceGroupContext serviceGroupContext = msgContext.getConfigurationContext().
+                        getServiceGroupContext(groupId, msgContext);
+                if (serviceGroupContext == null) {
+                    throw new AxisFault(Messages.getMessage(
+                            "invalidservicegrouoid", groupId));
+                }
+                msgContext.setServiceGroupContextId(serviceGroupId.getText());
+            }
+        }
+    }
+
+    private Object getSessionContext(HttpServletRequest httpServletRequest) {
+        Object sessionContext =
+                httpServletRequest.getSession(true).getAttribute(Constants.SESSION_CONTEXT_PROPERTY);
+        if (sessionContext == null) {
+            sessionContext = new SessionContext(null);
+            httpServletRequest.getSession().setAttribute(Constants.SESSION_CONTEXT_PROPERTY,
+                    sessionContext);
+        }
+        return sessionContext;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ListenerManager.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ListenerManager.java
new file mode 100644
index 0000000..ec1e091
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ListenerManager.java
@@ -0,0 +1,219 @@
+package org.apache.axis2.engine;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.description.AxisModule;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.TransportInDescription;

+import org.apache.axis2.description.TransportOutDescription;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.modules.Module;

+import org.apache.axis2.transport.TransportListener;

+import org.apache.axis2.transport.TransportSender;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.List;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class ListenerManager {

+

+    private static final Log log = LogFactory.getLog(ListenerManager.class);

+

+    public static ConfigurationContext defaultConfigurationContext;

+

+    private ConfigurationContext configctx;

+    private HashMap startedTransports = new HashMap();

+    private boolean stopped = true;

+

+    public void init(ConfigurationContext configCtx) {

+        configCtx.setTransportManager(this);

+        this.configctx = configCtx;

+    }

+

+    public ConfigurationContext getConfigctx() {

+        return configctx;

+    }

+

+    /**

+     * To get an EPR for a given service

+     *

+     * @param serviceName   : Name of the service

+     * @param transportName : name of the trasport can be null , if it is null then

+     * @return String

+     */

+    public synchronized EndpointReference getEPRforService(String serviceName, String opName,

+                                                           String transportName) throws AxisFault {

+        if (transportName == null || "".equals(transportName)) {

+            AxisService service = configctx.getAxisConfiguration().getService(serviceName);

+            if (service == null) {

+                throw new AxisFault(Messages.getMessage(

+                        "servicenotfoundinthesystem", serviceName));

+            }

+            if (service.isEnableAllTransports()) {

+                Iterator itr_st = startedTransports.values().iterator();

+                while (itr_st.hasNext()) {

+                    TransportListener transportListener = (TransportListener) itr_st.next();

+                    EndpointReference[] epRsForService = transportListener.getEPRsForService(serviceName, null);

+                    if (epRsForService != null) {

+                        return epRsForService[0];

+                    }

+                }

+

+                // if nothing can be found return null

+                return null;

+

+            } else {

+                List exposeTransport = service.getExposedTransports();

+                TransportListener listener = (TransportListener)

+                        startedTransports.get(exposeTransport.get(0));

+

+                EndpointReference[] eprsForService;

+                if (opName == null) {

+                    eprsForService = listener.getEPRsForService(serviceName, null);

+                } else {

+                    eprsForService = listener.getEPRsForService(serviceName + "/" + opName, null);

+                }

+                return eprsForService != null ? eprsForService[0] : null;

+            }

+

+        } else {

+            TransportInDescription trsIN = configctx.getAxisConfiguration()

+                    .getTransportIn(new QName(transportName));

+            TransportListener listener = trsIN.getReceiver();

+            EndpointReference[] eprsForService;

+            if (opName == null) {

+                eprsForService = listener.getEPRsForService(serviceName, null);

+            } else {

+                eprsForService = listener.getEPRsForService(serviceName + "/" + opName, null);

+            }

+            return eprsForService != null ? eprsForService[0] : null;

+        }

+    }

+

+    /**

+     * To start all the transports

+     */

+    public synchronized void start() {

+        Iterator transportNames = configctx.getAxisConfiguration().

+                getTransportsIn().values().iterator();

+        while (transportNames.hasNext()) {

+            try {

+                TransportInDescription transportIn = (TransportInDescription) transportNames.next();

+                TransportListener listener = transportIn.getReceiver();

+                if (listener != null && startedTransports.get(transportIn.getName().getLocalPart()) == null) {

+                    listener.init(configctx, transportIn);

+                    listener.start();

+                    if (startedTransports.get(transportIn.getName().getLocalPart()) == null) {

+                        startedTransports.put(transportIn.getName().getLocalPart(), listener);

+                    }

+                }

+            } catch (Exception e) {

+                log.info(e.getMessage());

+            }

+        }

+        stopped = false;

+    }

+

+    public synchronized void startSystem(ConfigurationContext configurationContext) {

+        init(configurationContext);

+        start();

+    }

+

+    /**

+     * Stop all the transports and notify modules of shutdown.

+     */

+    public synchronized void stop() throws AxisFault {

+        Iterator itr_st = startedTransports.values().iterator();

+        while (itr_st.hasNext()) {

+            TransportListener transportListener = (TransportListener) itr_st.next();

+            transportListener.stop();

+        }

+

+        // Stoping Transport senders

+        HashMap transportOut = configctx.getAxisConfiguration().getTransportsOut();

+        if (transportOut.size() > 0) {

+            Iterator trsItr = transportOut.values().iterator();

+            while (trsItr.hasNext()) {

+                TransportOutDescription outDescription = (TransportOutDescription) trsItr.next();

+                TransportSender trsSededer = outDescription.getSender();

+                if (trsSededer != null) {

+                    trsSededer.stop();

+                }

+            }

+        }

+        //calling module shoutdown method

+        HashMap modules = configctx.getAxisConfiguration().getModules();

+        if (modules != null) {

+            Iterator moduleitr = modules.values().iterator();

+            while (moduleitr.hasNext()) {

+                AxisModule axisModule = (AxisModule) moduleitr.next();

+                Module module = axisModule.getModule();

+                if (module != null) {

+                    module.shutdown(configctx);

+                }

+            }

+        }

+        configctx.cleanupContexts();

+        shutDownServices(configctx);

+        stopped = true;

+    }

+

+    /**

+     * @param trsIn   : Transport in description (which contains Transport Listener)

+     * @param started : whether transport Listener running or not

+     * @throws AxisFault : will throw AxisFault if something goes wrong

+     */

+    public synchronized void addListener(TransportInDescription trsIn, boolean started) throws AxisFault {

+        configctx.getAxisConfiguration().addTransportIn(trsIn);

+        TransportListener transportListener = trsIn.getReceiver();

+        if (transportListener != null) {

+            if (!started) {

+                transportListener.init(configctx, trsIn);

+                transportListener.start();

+            }

+            stopped = false;

+            startedTransports.put(trsIn.getName().getLocalPart(), transportListener);

+        }

+    }

+

+    public synchronized boolean isListenerRunning(String transportName) {

+        return startedTransports.get(transportName) != null;

+    }

+

+    public boolean isStopped() {

+        return stopped;

+    }

+

+    private void shutDownServices(ConfigurationContext configCtx) {

+        Iterator services = configCtx.getAxisConfiguration().getServices().values().iterator();

+        while (services.hasNext()) {

+            AxisService axisService = (AxisService) services.next();

+            ServiceLifeCycle serviceLifeCycle = axisService.getServiceLifeCycle();

+            if (serviceLifeCycle != null) {

+                serviceLifeCycle.shutDown(configCtx, axisService);

+            }

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/MessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/MessageReceiver.java
new file mode 100644
index 0000000..343ef7e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/MessageReceiver.java
@@ -0,0 +1,30 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+
+/**
+ * An instance of MessageReceiver can be setup to receive messages. The application logic has no impact
+ * on the Axis Engine iself. It is upto the application logic to do whatever it needs. For e.g.
+ * the MessageReceiver can handle a message, send a response back and/or send other messages.
+ */
+public interface MessageReceiver {
+    public void receive(MessageContext messageCtx) throws AxisFault;
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ObjectSupplier.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ObjectSupplier.java
new file mode 100644
index 0000000..63da6e5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ObjectSupplier.java
@@ -0,0 +1,33 @@
+package org.apache.axis2.engine;

+

+import org.apache.axis2.AxisFault;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public interface ObjectSupplier {

+    /**

+     * If someone want to write service impl class with interface

+     * being there method parameter , then at the time of deserilization

+     * this method will provide the impl class for that interface.

+     *

+     * @param clazz Type

+     * @return

+     * @throws AxisFault : will throw an exception when something goes wrong

+     */

+    Object getObject(Class clazz) throws AxisFault;

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/Phase.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/Phase.java
new file mode 100644
index 0000000..d84ff5d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/Phase.java
@@ -0,0 +1,550 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.phaseresolver.PhaseException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * A Phase is an ordered collection of Handlers.
+ */
+public class Phase implements Handler {
+
+    public static final String ALL_PHASES = "*";
+
+    /**
+     * Field BOTH_BEFORE_AFTER
+     */
+    private static final int BOTH_BEFORE_AFTER = 0;
+
+    /**
+     * Field BEFORE
+     */
+    private static final int BEFORE = 1;
+
+    /**
+     * Field ANYWHERE
+     */
+    private static final int ANYWHERE = 3;
+
+    /**
+     * Field AFTER
+     */
+    private static final int AFTER = 2;
+
+    /**
+     * Field log
+     */
+    private static final Log log = LogFactory.getLog(Phase.class);
+
+    /**
+     * Field handlers
+     */
+    private ArrayList handlers;
+
+    /**
+     * A handler has been marked as present in both the first phase and the last phase
+     */
+    private boolean isOneHandler;
+
+    /**
+     * Field phaseName
+     */
+    private String phaseName;
+
+    /**
+     * Field phasefirstset
+     */
+    private boolean phasefirstset;
+
+    /**
+     * Field phaselastset
+     */
+    private boolean phaselastset;
+
+    public Phase() {
+        this(null);
+    }
+
+    public static boolean isDebugEnabled = log.isDebugEnabled();
+    
+    /**
+     * Constructor Phase.
+     *
+     * @param phaseName
+     */
+    public Phase(String phaseName) {
+        handlers = new ArrayList();
+        this.phaseName = phaseName;
+    }
+
+    /**
+     * Adds handler to the collection.
+     *
+     * @param handler
+     */
+    public void addHandler(Handler handler) {
+        log.debug("Handler " + handler.getName() + " added to Phase " + phaseName);
+
+        if (phaselastset) {
+            //handlers.size() can not be 0 , since when setting phase last it is always > 0
+            if (handlers.size() == 1) {
+                handlers.add(0, handler);
+            } else {
+                handlers.add(handlers.size() - 2, handler);
+            }
+        } else {
+            handlers.add(handler);
+        }
+    }
+
+    /**
+     * Method addHandler.
+     *
+     * @param handler
+     * @throws PhaseException
+     */
+    public void addHandler(HandlerDescription handler) throws PhaseException {
+        Iterator handlers_itr = getHandlers().iterator();
+
+        while (handlers_itr.hasNext()) {
+            Handler hand = (Handler) handlers_itr.next();
+            HandlerDescription handlerDesc = hand.getHandlerDesc();
+            if (handler.getName().equals(handlerDesc.getName())) {
+                return;
+            }
+        }
+        if (isOneHandler) {
+            // TODO : should we allow both phaseFirst and phaseLast to be true for one Handler??
+            throw new PhaseException(this.getPhaseName()
+                    + "can only have one handler, since there is a "
+                    + "handler with both phaseFirst and PhaseLast true ");
+        }
+
+        if (handler.getRules().isPhaseFirst() && handler.getRules().isPhaseLast()) {
+            if (handlers.size() > 0) {
+                throw new PhaseException(this.getPhaseName()
+                        + " can not have more than one handler "
+                        + handler.getName()
+                        + " is invalid or incorrect phase rules");
+            } else {
+                handlers.add(handler.getHandler());
+                isOneHandler = true;
+            }
+        } else if (handler.getRules().isPhaseFirst()) {
+            setPhaseFirst(handler.getHandler());
+        } else if (handler.getRules().isPhaseLast()) {
+            setPhaseLast(handler.getHandler());
+        } else {
+            insertHandler(handler);
+        }
+    }
+
+    /**
+     * Method addHandler.
+     *
+     * @param handler
+     * @param index
+     */
+    public void addHandler(Handler handler, int index) {
+        log.debug("Handler " + handler.getName() + "Added to place " + index + " At the Phase "
+                + phaseName);
+        handlers.add(index, handler);
+    }
+
+    public void checkPostConditions(MessageContext msgContext) throws AxisFault {
+
+        // Default version does nothing
+    }
+
+    public void checkPreconditions(MessageContext msgContext) throws AxisFault {
+
+        // Default version does nothing
+    }
+
+    public void cleanup() {
+
+        // Default version does nothing
+    }
+
+    public void init(HandlerDescription handlerdesc) {
+
+        // Default version does nothing
+    }
+
+    /**
+     * Method insertAfter.
+     *
+     * @param handler
+     */
+    private void insertAfter(Handler handler) throws PhaseException {
+        String afterName = handler.getHandlerDesc().getRules().getAfter();
+
+        for (int i = 0; i < handlers.size(); i++) {
+            Handler temphandler = (Handler) handlers.get(i);
+
+            if (temphandler.getName().equals(afterName)) {
+                if (phaselastset && (i == handlers.size() - 1)) {
+                    throw new PhaseException("Can't insert handler after handler '"
+                            + temphandler.getName()
+                            + "', which is marked phaseLast");
+                }
+
+                handlers.add(i + 1, handler);
+
+                return;
+            }
+        }
+
+        if (handlers.size() > 0) {
+            handlers.add(0, handler);
+        } else {
+            handlers.add(handler);
+        }
+    }
+
+    /**
+     * Method insertBefore.
+     *
+     * @param handler
+     */
+    private void insertBefore(Handler handler) throws PhaseException {
+        String beforename = handler.getHandlerDesc().getRules().getBefore();
+
+        //we keep going foward, till the before handler is found, if we do not find him just add the handler
+        //once we found the before handler
+
+        int beforeHandlerIndex = -1;
+
+        for (int i = 0; i < handlers.size(); i++) {
+            Handler temphandler = (Handler) handlers.get(i);
+
+            if (temphandler.getName().equals(beforename)) {
+                if (i == 0) {
+                    if (phasefirstset) {
+                        throw new PhaseException("Can't insert handler before handler '"
+                                + temphandler.getName()
+                                + "', which is marked phaseFirst");
+                    }
+                }
+                beforeHandlerIndex = i;
+                break;
+            }
+        }
+
+        if (beforeHandlerIndex >= 0) {
+            //java arraylist does the shift for us
+            handlers.add(beforeHandlerIndex, handler);
+        } else {
+            handlers.add(handler);
+        }
+    }
+
+    /**
+     * This method assume that both the before and after cant be a same hander
+     * that does not check inside this , it should check befor calling this method
+     *
+     * @param handler
+     * @throws PhaseException
+     */
+    private void insertBeforeandAfter(Handler handler) throws PhaseException {
+        int before = -1;
+        int after = -1;
+        String beforeName = handler.getHandlerDesc().getRules().getBefore();
+        String afterName = handler.getHandlerDesc().getRules().getAfter();
+
+        for (int i = 0; i < handlers.size(); i++) {
+            Handler temphandler = (Handler) handlers.get(i);
+
+            if (afterName.equals(temphandler.getName())) {
+                after = i;
+            } else {
+                if (beforeName.equals(temphandler.getName())) {
+                    before = i;
+                }
+            }
+
+            if ((after >= 0) && (before >= 0)) {
+                break;
+            }
+        }
+
+        // no point of continue since both the before and after index has found
+        if (after > before) {
+
+            // TODO fix me Deepal , (have to check this)
+            throw new PhaseException("incorrect handler order for "
+                    + handler.getHandlerDesc().getName());
+        }
+
+        if ((before == -1) && (after == -1)) {
+            addHandler(handler);
+
+            return;
+        }
+
+        if (before == -1) {
+            addHandler(handler);
+
+            return;
+        }
+
+        if (after == -1) {
+            if (phasefirstset && (before == 0)) {
+                throw new PhaseException("Can't insert handler before handler '"
+                        + ((Handler) handlers.get(0)).getName()
+                        + "', which is marked phaseFirst");
+            }
+        }
+
+        handlers.add(before, handler);
+    }
+
+    private void insertHandler(HandlerDescription handlerDesc) throws PhaseException {
+        Handler handler = handlerDesc.getHandler();
+        int type = getBeforeAfter(handler);
+
+        switch (type) {
+            case BOTH_BEFORE_AFTER : {
+                insertBeforeandAfter(handler);
+                break;
+            }
+            case BEFORE : {
+                insertBefore(handler);
+                break;
+            }
+            case AFTER : {
+                insertAfter(handler);
+                break;
+            }
+            case ANYWHERE : {
+                addHandler(handler);
+                break;
+            }
+        }
+    }
+
+    /**
+     * invokes all the handlers in this Phase
+     *
+     * @param msgctx
+     * @return An InvocationResponse that indicates what
+     *         the next step in the message processing should be.
+     * @throws org.apache.axis2.AxisFault
+     */
+    public final InvocationResponse invoke(MessageContext msgctx) throws AxisFault {
+        if (isDebugEnabled) {
+            log.debug("Checking pre-condition for Phase \"" + phaseName + "\"");
+        }
+        
+        InvocationResponse pi = InvocationResponse.CONTINUE;
+
+        int currentIndex = msgctx.getCurrentPhaseIndex();
+
+        if (currentIndex == 0) {
+            checkPreconditions(msgctx);
+        }
+
+        if (isDebugEnabled) {
+            log.debug("Invoking phase \"" + phaseName + "\"");
+        }
+
+        while (currentIndex < handlers.size()) {
+            Handler handler = (Handler) handlers.get(currentIndex);
+
+            if (isDebugEnabled) {
+                log.debug("Invoking Handler '" + handler.getName() + "' in Phase '" + phaseName + "'");
+            }
+            pi = handler.invoke(msgctx);
+
+            if (!pi.equals(InvocationResponse.CONTINUE))
+            {
+              return pi;
+            }
+
+            currentIndex++;
+            msgctx.setCurrentPhaseIndex(currentIndex);
+        }
+
+        if (isDebugEnabled) {
+            log.debug("Checking post-conditions for phase \"" + phaseName + "\"");
+        }
+
+        msgctx.setCurrentPhaseIndex(0);
+        checkPostConditions(msgctx);
+        return pi;
+    }
+
+    public String toString() {
+        return this.getPhaseName();
+    }
+
+    /**
+     * Method getBeforeAfter.
+     *
+     * @param handler
+     * @return Returns AFTER or ANYWHERE or BOTH_BEFORE_AFTER
+     * @throws org.apache.axis2.phaseresolver.PhaseException
+     *
+     */
+    private int getBeforeAfter(Handler handler) throws PhaseException {
+        PhaseRule rules = handler.getHandlerDesc().getRules();
+        String beforeRules = rules.getBefore();
+        String afterRules = rules.getAfter();
+        if ((!"".equals(beforeRules))
+                && (!"".equals(afterRules))) {
+            if (beforeRules.equals(
+                    afterRules)) {
+                throw new PhaseException(
+                        "Both before and after cannot be the same for this handler"
+                                + handler.getName());
+            }
+
+            return BOTH_BEFORE_AFTER;
+        } else if (!"".equals(beforeRules)) {
+            return BEFORE;
+        } else if (!"".equals(afterRules)) {
+            return AFTER;
+        } else {
+            return ANYWHERE;
+        }
+    }
+
+    public int getHandlerCount() {
+        return handlers.size();
+    }
+
+    public HandlerDescription getHandlerDesc() {
+        return null;
+    }
+
+    /**
+     * Gets all the handlers in the phase.
+     *
+     * @return Returns an ArrayList of Handlers
+     */
+    public ArrayList getHandlers() {
+        return handlers;
+    }
+
+    public String getName() {
+        return phaseName;
+    }
+
+    public Parameter getParameter(String name) {
+        return null;
+    }
+
+    /**
+     * @return Returns the name.
+     */
+    public String getPhaseName() {
+        return phaseName;
+    }
+
+    public void setName(String phaseName) {
+        this.phaseName = phaseName;
+    }
+
+    /**
+     * Method setPhaseFirst.
+     *
+     * @param phaseFirst
+     * @throws PhaseException
+     */
+    public void setPhaseFirst(Handler phaseFirst) throws PhaseException {
+        if (phasefirstset) {
+            throw new PhaseException("PhaseFirst has been set already, cannot have two"
+                    + " phaseFirst Handler for same phase " + this.getPhaseName());
+        } else {
+            handlers.add(0, phaseFirst);
+            phasefirstset = true;
+
+            // TODO: move this error check to where we read the rules
+            if (getBeforeAfter(phaseFirst) != ANYWHERE) {
+                throw new PhaseException("Handler with PhaseFirst can not have "
+                        + "any before or after proprty error in "
+                        + phaseFirst.getName());
+            }
+        }
+    }
+
+    /**
+     * Method setPhaseLast.
+     *
+     * @param phaseLast
+     * @throws PhaseException
+     */
+    public void setPhaseLast(Handler phaseLast) throws PhaseException {
+        if (phaselastset) {
+            throw new PhaseException("PhaseLast already has been set,"
+                    + " cannot have two PhaseLast Handler for same phase "
+                    + this.getPhaseName());
+        }
+
+        if (handlers.size() == 0) {
+            handlers.add(phaseLast);
+        } else {
+            handlers.add(handlers.size() - 1, phaseLast);
+        }
+
+        phaselastset = true;
+
+        // TODO: Move this check to where we read the rules
+        if (getBeforeAfter(phaseLast) != ANYWHERE) {
+            throw new PhaseException("Handler with PhaseLast property "
+                    + "can not have any before or after property error in "
+                    + phaseLast.getName());
+        }
+    }
+
+    /**
+     * To remove a given hnadler from a phase
+     *
+     * @param handler
+     */
+    public void removeHandler(HandlerDescription handler) {
+        if (handlers.remove(handler.getHandler())) {
+            PhaseRule rule = handler.getRules();
+            if (rule.isPhaseFirst()) {
+                phasefirstset = false;
+            }
+            if (rule.isPhaseLast()) {
+                phaselastset = false;
+            }
+            if (rule.isPhaseFirst() && rule.isPhaseLast()) {
+                isOneHandler = false;
+            }
+            log.debug("removed handler " + handler.getName()
+                    + " from the phase " + phaseName);
+        } else {
+            log.debug("unable to remove handler " + handler.getName()
+                    + " from the phase " + phaseName);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/RequestURIBasedDispatcher.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/RequestURIBasedDispatcher.java
new file mode 100644
index 0000000..385a5b6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/RequestURIBasedDispatcher.java
@@ -0,0 +1,112 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Dispatches the service based on the information from the target endpoint URL.
+ */
+public class RequestURIBasedDispatcher extends AbstractDispatcher {
+
+    public static final String NAME = "RequestURIBasedDispatcher";
+    private static final Log log = LogFactory.getLog(RequestURIBasedDispatcher.class);
+    private static final boolean isDebugEnabled = log.isDebugEnabled();
+
+    /*
+     *  (non-Javadoc)
+     * @see org.apache.axis2.engine.AbstractDispatcher#findOperation(org.apache.axis2.description.AxisService, org.apache.axis2.context.MessageContext)
+     */
+    public AxisOperation findOperation(AxisService service, MessageContext messageContext)
+            throws AxisFault {
+
+        EndpointReference toEPR = messageContext.getTo();
+        if (toEPR != null) {
+            String filePart = toEPR.getAddress();
+            String[] values = Utils.parseRequestURLForServiceAndOperation(filePart,
+                    messageContext.getConfigurationContext().getServiceContextPath());
+
+            if ((values.length >= 2) && (values[1] != null)) {
+                QName operationName = new QName(values[1]);
+                if(isDebugEnabled){
+                    log.debug("Checking for Operation using QName(target endpoint URI fragment) : " + operationName);
+                }
+                return service.getOperation(operationName);
+            } else {
+                if(isDebugEnabled){
+                    log.debug("Attempted to check for Operation using target endpoint URI, but the operation fragment was missing");
+                }
+                return null;
+            }
+        } else {
+            if(isDebugEnabled){
+                log.debug("Attempted to check for Operation using null target endpoint URI");
+            }
+            return null;
+        }
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see org.apache.axis2.engine.AbstractDispatcher#findService(org.apache.axis2.context.MessageContext)
+     */
+    public AxisService findService(MessageContext messageContext) throws AxisFault {
+        EndpointReference toEPR = messageContext.getTo();
+
+        if (toEPR != null) {
+            if(isDebugEnabled){
+                log.debug("Checking for Service using target endpoint address : " + toEPR.getAddress());
+            }
+            String filePart = toEPR.getAddress();
+            //REVIEW: (nagy) Parsing the RequestURI will also give us the operationName if present, so we could conceivably store it in the MessageContext, but doing so and retrieving it is probably no faster than simply reparsing the URI
+            String[] values = Utils.parseRequestURLForServiceAndOperation(filePart,
+                    messageContext.getConfigurationContext().getServiceContextPath());
+
+            if ((values.length >= 1) && (values[0] != null)) {
+                AxisConfiguration registry =
+                        messageContext.getConfigurationContext().getAxisConfiguration();
+
+                return registry.getService(values[0]);
+            } else {
+                if(isDebugEnabled){
+                    log.debug("Attempted to check for Service using target endpoint URI, but the service fragment was missing");
+                }
+                return null;
+            }
+        } else {
+            if(isDebugEnabled){
+                log.debug("Attempted to check for Service using null target endpoint URI");
+            }
+            return null;
+        }
+    }
+
+    public void initDispatcher() {
+        init(new HandlerDescription(NAME));
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/SOAPActionBasedDispatcher.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/SOAPActionBasedDispatcher.java
new file mode 100644
index 0000000..e7110e9
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/SOAPActionBasedDispatcher.java
@@ -0,0 +1,86 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Dispatches based on the SOAPAction.
+ */
+public class SOAPActionBasedDispatcher extends AbstractDispatcher {
+
+    /**
+     * Field NAME
+     */
+    public static final String NAME = "SOAPActionBasedDispatcher";
+    private static final Log log = LogFactory.getLog(SOAPActionBasedDispatcher.class);
+    private static final boolean isDebugEnabled = log.isDebugEnabled();
+
+    public AxisOperation findOperation(AxisService service, MessageContext messageContext)
+            throws AxisFault {
+        String action = messageContext.getSoapAction();
+
+        if(isDebugEnabled){
+            log.debug("Checking for Operation using SOAPAction : " + action);
+        }
+        if (action != null) {
+            AxisOperation op = service.getOperationBySOAPAction(action);
+
+            if (op == null) {
+                op = service.getOperationByAction(action);
+            }
+
+            /*
+             * HACK: Please remove this when we add support for custom action
+             * uri
+             */
+            if ((op == null) && (action.lastIndexOf('/') != -1)) {
+                op = service.getOperation(new QName(action.substring(action.lastIndexOf('/'),
+                        action.length())));
+            }
+
+            return op;
+        }
+
+        return null;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.axis2.engine.AbstractDispatcher#findService(org.apache.axis2.context.MessageContext)
+     */
+    public AxisService findService(MessageContext messageContext) throws AxisFault {
+        if(isDebugEnabled){
+            log.debug("Checking for Service using SOAPAction is a TODO item");
+        }
+        return null;
+    }
+
+    public void initDispatcher() {
+        init(new HandlerDescription(NAME));
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/SOAPMessageBodyBasedDispatcher.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/SOAPMessageBodyBasedDispatcher.java
new file mode 100644
index 0000000..c2b6570
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/SOAPMessageBodyBasedDispatcher.java
@@ -0,0 +1,108 @@
+/*
+* Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Dispatches based on the namespace URI of the first child of
+ * the body.
+ */
+public class SOAPMessageBodyBasedDispatcher extends AbstractDispatcher {
+
+    /**
+     * Field NAME
+     */
+    public static final String NAME = "SOAPMessageBodyBasedDispatcher";
+    private static final Log log = LogFactory.getLog(SOAPMessageBodyBasedDispatcher.class);
+    String serviceName = null;
+    QName operationName = null;
+    private static final boolean isDebugEnabled = log.isDebugEnabled();
+
+    public AxisOperation findOperation(AxisService service, MessageContext messageContext)
+            throws AxisFault {
+        OMElement bodyFirstChild = messageContext.getEnvelope().getBody().getFirstElement();
+
+        if (bodyFirstChild == null) {
+            return null;
+        } else {
+            if(isDebugEnabled){
+                log.debug(
+                        "Checking for Operation using SOAP message body's first child's local name : "
+                                + bodyFirstChild.getLocalName());
+            }
+            operationName = new QName(bodyFirstChild.getLocalName());
+        }
+
+        return service.getOperation(operationName);
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see org.apache.axis2.engine.AbstractDispatcher#findService(org.apache.axis2.context.MessageContext)
+     */
+    public AxisService findService(MessageContext messageContext) throws AxisFault {
+        OMElement bodyFirstChild = messageContext.getEnvelope().getBody().getFirstElement();
+
+        if (bodyFirstChild != null) {
+            OMNamespace ns = bodyFirstChild.getNamespace();
+
+            if (ns != null) {
+                String filePart = ns.getNamespaceURI();
+
+                if(isDebugEnabled){
+                    log.debug(
+                            "Checking for Service using SOAP message body's first child's namespace : "
+                                    + filePart);
+                }
+                String[] values = Utils.parseRequestURLForServiceAndOperation(filePart,
+                        messageContext.getConfigurationContext().getServiceContextPath());
+
+                if (values[1] != null) {
+                    operationName = new QName(values[1]);
+                }
+
+                if (values[0] != null) {
+                    serviceName = values[0];
+
+                    AxisConfiguration registry =
+                            messageContext.getConfigurationContext().getAxisConfiguration();
+
+                    return registry.getService(serviceName);
+                }
+            }
+        }
+
+        return null;
+    }
+
+    public void initDispatcher() {
+        init(new HandlerDescription(NAME));
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ServiceLifeCycle.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ServiceLifeCycle.java
new file mode 100644
index 0000000..26d305a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/engine/ServiceLifeCycle.java
@@ -0,0 +1,43 @@
+package org.apache.axis2.engine;

+

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.description.AxisService;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+/**

+ * When you want to initialize database connections , starting threads and etc..

+ * at the time you deploy  service (similar to loadonstartup).

+ * You need to implement this interface and add additional (optional) attribute

+ * into services.xml <service name=”Foo”  class=”Service life cycle impl class”>

+ */

+

+public interface ServiceLifeCycle {

+

+    /**

+     * this will be called during the deployement time of the service. irrespective

+     * of the service scope this method will be called

+     */

+    public void startUp(ConfigurationContext configctx, AxisService service);

+

+    /**

+     * this will be called during the system shut down time. irrespective

+     * of the service scope this method will be called

+     */

+    public void shutDown(ConfigurationContext configctx, AxisService service);

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/handlers/AbstractHandler.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/handlers/AbstractHandler.java
new file mode 100644
index 0000000..b03f466
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/handlers/AbstractHandler.java
@@ -0,0 +1,103 @@
+/*
+* Copyright 2004,2005 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.axis2.handlers;
+
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.Handler;
+
+/**
+ * Class AbstractHandler
+ */
+public abstract class AbstractHandler implements Handler {
+
+    /**
+     * Field EMPTY_HANDLER_METADATA
+     */
+    private static HandlerDescription EMPTY_HANDLER_METADATA =
+            new HandlerDescription(("default Handler"));
+
+    /**
+     * Field handlerDesc
+     */
+    protected HandlerDescription handlerDesc;
+
+    /**
+     * Constructor AbstractHandler.
+     */
+    public AbstractHandler() {
+        handlerDesc = EMPTY_HANDLER_METADATA;
+    }
+
+    /**
+     * Since this might change the whole behavior of Axis2 handlers, and since this is still under discussion
+     * (http://marc.theaimsgroup.com/?l=axis-dev&m=114504084929285&w=2) implementation of this method is deferred.
+     * Note : This method will not be automatically called, from Axis2 engine, until this is fully implemented.
+     */
+    public void cleanup() {
+    }
+
+    /**
+     * Method init.
+     *
+     * @param handlerdesc
+     */
+    public void init(HandlerDescription handlerdesc) {
+        this.handlerDesc = handlerdesc;
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString() {
+        String name = this.getName();
+
+        return (name != null)
+                ? name
+                : null;
+    }
+
+    /**
+     * Gets the phaseRule of a handler.
+     *
+     * @return Returns HandlerDescription.
+     */
+    public HandlerDescription getHandlerDesc() {
+        return handlerDesc;
+    }
+
+    /**
+     * Method getName.
+     *
+     * @return Returns QName.
+     */
+    public String getName() {
+        return handlerDesc.getName();
+    }
+
+    /**
+     * Method getParameter.
+     *
+     * @param name
+     * @return Returns Parameter.
+     */
+    public Parameter getParameter(String name) {
+        return handlerDesc.getParameter(name);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/MessageBundle.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/MessageBundle.java
new file mode 100644
index 0000000..f887e6d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/MessageBundle.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2004,2005 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.axis2.i18n;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Accept parameters for ProjectResourceBundle,
+ * but defer object instantiation (and therefore
+ * resource bundle loading) until required.
+ */
+public class MessageBundle {
+    private boolean loaded = false;
+
+    private ProjectResourceBundle _resourceBundle = null;
+
+    private final String projectName;
+    private final String packageName;
+    private final String resourceName;
+    private final Locale locale;
+    private final ClassLoader classLoader;
+    private final ResourceBundle parent;
+
+
+    public final ProjectResourceBundle getResourceBundle() {
+        if (!loaded) {
+            _resourceBundle = ProjectResourceBundle.getBundle(projectName,
+                    packageName,
+                    resourceName,
+                    locale,
+                    classLoader,
+                    parent);
+            loaded = true;
+        }
+        return _resourceBundle;
+    }
+
+    /**
+     * Construct a new ExtendMessages
+     */
+    public MessageBundle(String projectName,
+                         String packageName,
+                         String resourceName,
+                         Locale locale,
+                         ClassLoader classLoader,
+                         ResourceBundle parent)
+            throws MissingResourceException {
+        this.projectName = projectName;
+        this.packageName = packageName;
+        this.resourceName = resourceName;
+        this.locale = locale;
+        this.classLoader = classLoader;
+        this.parent = parent;
+    }
+
+    /**
+     * Gets a string message from the resource bundle for the given key
+     *
+     * @param key The resource key
+     * @return The message
+     */
+    public String getMessage(String key) throws MissingResourceException {
+        return getMessage(key, (String[]) null);
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @return The message
+     */
+    public String getMessage(String key, String arg0) throws MissingResourceException {
+        return getMessage(key, new String[]{arg0});
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @return The message
+     */
+    public String getMessage(String key, String arg0, String arg1) throws MissingResourceException {
+        return getMessage(key, new String[]{arg0, arg1});
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @return The message
+     */
+    public String getMessage(String key, String arg0, String arg1, String arg2) throws MissingResourceException {
+        return getMessage(key, new String[]{arg0, arg1, arg2});
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @return The message
+     */
+    public String getMessage(String key, String arg0, String arg1, String arg2, String arg3) throws MissingResourceException {
+        return getMessage(key, new String[]{arg0, arg1, arg2, arg3});
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @param arg4 The argument to place in variable {4}
+     * @return The message
+     */
+    public String getMessage(String key, String arg0, String arg1, String arg2, String arg3, String arg4) throws MissingResourceException {
+        return getMessage(key, new String[]{arg0, arg1, arg2, arg3, arg4});
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key   The resource key
+     * @param array An array of objects to place in corresponding variables
+     * @return The message
+     */
+    public String getMessage(String key, String[] array) throws MissingResourceException {
+        String msg = null;
+        if (getResourceBundle() != null) {
+            msg = getResourceBundle().getString(key);
+        }
+
+        if (msg == null) {
+            throw new MissingResourceException("Cannot find resource key \"" + key +
+                    "\" in base name " +
+                    getResourceBundle().getResourceName(),
+                    getResourceBundle().getResourceName(), key);
+        }
+
+        return MessageFormat.format(msg, array);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/Messages.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/Messages.java
new file mode 100644
index 0000000..ae1d55e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/Messages.java
@@ -0,0 +1,289 @@
+/*
+ * Copyright 2004,2005 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.axis2.i18n;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+    private static final Class thisClass = Messages.class;
+
+    private static final String projectName = MessagesConstants.projectName;
+
+    private static final String resourceName = MessagesConstants.resourceName;
+    private static final Locale locale = MessagesConstants.locale;
+    
+    public static final String DEFAULT_MESSAGE_BUNDLE_KEY = "default";
+    private static final String NO_MESSAGE_BUNDLE = "Message Bundle is not available";
+
+    private static final String packageName = getPackage(thisClass.getName());
+    private static final ClassLoader classLoader = thisClass.getClassLoader();
+
+    private static final ResourceBundle parent =
+            (MessagesConstants.rootPackageName.equals(packageName))
+            ? null
+            : MessagesConstants.rootBundle;
+    
+    private static HashMap messageBundleMap = new HashMap ();
+
+    static {
+    	MessageBundle defaultMessageBundle =
+            new MessageBundle(projectName, packageName, resourceName,
+                    locale, classLoader, parent);
+    	addMessageBundle(DEFAULT_MESSAGE_BUNDLE_KEY,defaultMessageBundle);
+    }
+    
+    /**
+     * To add a new Message Bundle to the MessageBundle list.
+     * 
+     * @param messageBundleKey The key which will be used to refer to this message bundle later.
+     * @param messageBundle The message bundle.
+     */
+    public static void addMessageBundle (String messageBundleKey,MessageBundle messageBundle) {
+    	messageBundleMap.put(messageBundleKey,messageBundle);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key The resource key
+     * @return The formatted message
+     */
+    public static String getMessage(String key)
+            throws MissingResourceException {
+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+        return messageBundle.getMessage(key);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @return The formatted message
+     */
+    public static String getMessage(String key, String arg0)
+            throws MissingResourceException {
+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+        return messageBundle.getMessage(key, arg0);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @return The formatted message
+     */
+    public static String getMessage(String key, String arg0, String arg1)
+            throws MissingResourceException {
+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+        return messageBundle.getMessage(key, arg0, arg1);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @return The formatted message
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2)
+            throws MissingResourceException {
+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+        return messageBundle.getMessage(key, arg0, arg1, arg2);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @return The formatted message
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3)
+            throws MissingResourceException {
+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @param arg4 The argument to place in variable {4}
+     * @return The formatted message
+     */
+    public static String getMessage(String key, String arg0, String arg1, String arg2, String arg3, String arg4)
+            throws MissingResourceException {
+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3, arg4);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param key  The resource key
+     * @param args An array of objects to place in corresponding variables
+     * @return The formatted message
+     */
+    public static String getMessage(String key, String[] args)
+            throws MissingResourceException {
+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+        return messageBundle.getMessage(key, args);
+    }
+
+    public static ResourceBundle getResourceBundle() {
+    	MessageBundle messageBundle = getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+        return messageBundle.getResourceBundle();
+    }
+
+    public static MessageBundle getMessageBundle() {
+        return getMessageBundle (DEFAULT_MESSAGE_BUNDLE_KEY);
+    }
+    
+    public static MessageBundle getMessageBundle(String messageBundleKey) {
+        return (MessageBundle) messageBundleMap.get (messageBundleKey);
+    }
+    
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param messageBundleKey The key for getting the correct message bundle.
+     * @param key The resource key
+     * @return The formatted message
+     */
+    public static String getMessageFromBundle(String messageBundleKey,String key)
+            throws MissingResourceException, Exception {
+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);
+    	if (messageBundle==null)
+    		throw new Exception (NO_MESSAGE_BUNDLE);
+    	
+        return messageBundle.getMessage(key);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param messageBundleKey The key for getting the correct message bundle.
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @return The formatted message
+     */
+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0)
+            throws MissingResourceException, Exception {
+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);
+    	if (messageBundle==null)
+    		throw new Exception (NO_MESSAGE_BUNDLE);
+    	
+        return messageBundle.getMessage(key, arg0);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param messageBundleKey The key for getting the correct message bundle.
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @return The formatted message
+     */
+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0, String arg1)
+            throws MissingResourceException, Exception {
+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);
+    	if (messageBundle==null)
+    		throw new Exception (NO_MESSAGE_BUNDLE);
+    	
+        return messageBundle.getMessage(key, arg0, arg1);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param messageBundleKey The key for getting the correct message bundle.
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @return The formatted message
+     */
+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0, String arg1, String arg2)
+            throws MissingResourceException, Exception {
+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);
+    	if (messageBundle==null)
+    		throw new Exception (NO_MESSAGE_BUNDLE);
+    	
+        return messageBundle.getMessage(key, arg0, arg1, arg2);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param messageBundleKey The key for getting the correct message bundle.
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @return The formatted message
+     */
+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0, String arg1, String arg2, String arg3)
+            throws MissingResourceException, Exception {
+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);
+    	if (messageBundle==null)
+    		throw new Exception (NO_MESSAGE_BUNDLE);
+    	
+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param messageBundleKey The key for getting the correct message bundle.
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @param arg4 The argument to place in variable {4}
+     * @return The formatted message
+     */
+    public static String getMessageFromBundle(String messageBundleKey,String key, String arg0, String arg1, String arg2, String arg3, String arg4)
+            throws MissingResourceException, Exception {
+    	MessageBundle messageBundle = getMessageBundle (messageBundleKey);
+    	if (messageBundle==null)
+    		throw new Exception (NO_MESSAGE_BUNDLE);
+    	
+        return messageBundle.getMessage(key, arg0, arg1, arg2, arg3, arg4);
+    }
+
+    private static String getPackage(String name) {
+        return name.substring(0, name.lastIndexOf('.')).intern();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/MessagesConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/MessagesConstants.java
new file mode 100644
index 0000000..732f264
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/MessagesConstants.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2004,2005 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.axis2.i18n;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+public class MessagesConstants {
+    public static final String projectName = "org.apache.axis2".intern();
+    public static final String resourceName = "resource".intern();
+    public static final Locale locale = null;
+
+    public static final String rootPackageName = "org.apache.axis2.i18n".intern();
+
+    public static final ResourceBundle rootBundle =
+            ProjectResourceBundle.getBundle(projectName,
+                    rootPackageName,
+                    resourceName,
+                    locale,
+                    MessagesConstants.class.getClassLoader(),
+                    null);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/ProjectResourceBundle.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/ProjectResourceBundle.java
new file mode 100644
index 0000000..e512d28
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/ProjectResourceBundle.java
@@ -0,0 +1,456 @@
+/*
+ * Copyright 2004,2005 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.axis2.i18n;
+
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * <p>Wrapper class for resource bundles. Property files are used to store
+ * resource strings, which are the only types of resources available.
+ * Property files can inherit properties from other files so that
+ * a base property file can be used and a small number of properties
+ * can be over-ridden by another property file. For example you may
+ * create an english version of a resource file named "resource.properties".
+ * You then decide that the British English version of all of the properties
+ * except one are the same, so there is no need to redefine all of the
+ * properties in "resource_en_GB", just the one that is different.</p>
+ * <p>The basename is the name of the property file without the ".properties"
+ * extension.</p>
+ * <p>Properties will be cached for performance.<p>
+ * <p>Property values stored in the property files can also contain dynamic
+ * variables. Any dynamic variable defined in PropertiesUtil.getVariableValue()
+ * can be used (such as {date}), as well as arguments in the form {0}, {1}, etc.
+ * Argument values are specified in the various overloaded getString() methods.</p>
+ */
+public class ProjectResourceBundle extends ResourceBundle {
+	private static final Log log = LogFactory.getLog(ProjectResourceBundle.class);
+
+
+    // The static cache of ResourceBundles.
+    // The key is the 'basename + locale + default locale'
+    // The element is a ResourceBundle object
+    private static final Hashtable bundleCache = new Hashtable();
+
+    private static final Locale defaultLocale = Locale.getDefault();
+
+    private final ResourceBundle resourceBundle;
+    private final String resourceName;
+
+
+    protected Object handleGetObject(String key)
+            throws MissingResourceException {
+        if (log.isDebugEnabled()) {
+            log.debug(this.toString() + "::handleGetObject(" + key + ")");
+        }
+        Object obj;
+        try {
+            obj = resourceBundle.getObject(key);
+        } catch (MissingResourceException e) {
+            /* catch missing resource, ignore, & return null
+             * if this method doesn't return null, then parents
+             * are not searched
+             */
+            obj = null;
+        }
+        return obj;
+    }
+
+    public Enumeration getKeys() {
+        Enumeration myKeys = resourceBundle.getKeys();
+        if (parent == null) {
+            return myKeys;
+        } else {
+            final HashSet set = new HashSet();
+            while (myKeys.hasMoreElements()) {
+                set.add(myKeys.nextElement());
+            }
+
+            Enumeration pKeys = parent.getKeys();
+            while (pKeys.hasMoreElements()) {
+                set.add(pKeys.nextElement());
+            }
+
+            return new Enumeration() {
+                private Iterator it = set.iterator();
+
+                public boolean hasMoreElements() {
+                    return it.hasNext();
+                }
+
+                public Object nextElement() {
+                    return it.next();
+                }
+            };
+        }
+    }
+
+
+    /**
+     * Construct a new ProjectResourceBundle
+     *
+     * @param projectName  The name of the project to which the class belongs.
+     *                     It must be a proper prefix of the caller's package.
+     * @param packageName  The package name to further construct
+     *                     the basename.
+     * @param resourceName The name of the resource without the
+     *                     ".properties" extension
+     * @throws MissingResourceException if projectName is not a prefix of
+     *                                  the caller's package name, or if the resource could not be
+     *                                  found/loaded.
+     */
+    public static ProjectResourceBundle getBundle(String projectName,
+                                                  String packageName,
+                                                  String resourceName)
+            throws MissingResourceException {
+        return getBundle(projectName, packageName, resourceName, null, null, null);
+    }
+
+    /**
+     * Construct a new ProjectResourceBundle
+     *
+     * @param projectName  The name of the project to which the class belongs.
+     *                     It must be a proper prefix of the caller's package.
+     * @param caller       The calling class.
+     *                
+     * @param resourceName The name of the resource without the
+     *                     ".properties" extension
+     * @throws MissingResourceException if projectName is not a prefix of
+     *                                  the caller's package name, or if the resource could not be
+     *                                  found/loaded.
+     */
+    public static ProjectResourceBundle getBundle(String projectName,
+                                                  Class caller,
+                                                  String resourceName,
+                                                  Locale locale)
+            throws MissingResourceException {
+        return getBundle(projectName,
+                caller,
+                resourceName,
+                locale,
+                null);
+    }
+
+    /**
+     * Construct a new ProjectResourceBundle
+     *
+     * @param projectName  The name of the project to which the class belongs.
+     *                     It must be a proper prefix of the caller's package.
+     * @param packageName  The package name to construct base name.
+     *                     
+     * @param resourceName The name of the resource without the
+     *                     ".properties" extension
+     * @param locale       The locale
+     * @throws MissingResourceException if projectName is not a prefix of
+     *                                  the caller's package name, or if the resource could not be
+     *                                  found/loaded.
+     */
+    public static ProjectResourceBundle getBundle(String projectName,
+                                                  String packageName,
+                                                  String resourceName,
+                                                  Locale locale,
+                                                  ClassLoader loader)
+            throws MissingResourceException {
+        return getBundle(projectName, packageName, resourceName, locale, loader, null);
+    }
+
+    /**
+     * Construct a new ProjectResourceBundle
+     *
+     * @param projectName   The name of the project to which the class belongs.
+     *                      It must be a proper prefix of the caller's package.
+     * @param caller        The calling class.
+     *                      This is used to get the package name to further construct
+     *                      the basename as well as to get the proper ClassLoader.
+     * @param resourceName  The name of the resource without the
+     *                      ".properties" extension
+     * @param locale        The locale
+     * @param extendsBundle If non-null, then this ExtendMessages will
+     *                      default to extendsBundle.
+     * @throws MissingResourceException if projectName is not a prefix of
+     *                                  the caller's package name, or if the resource could not be
+     *                                  found/loaded.
+     */
+    public static ProjectResourceBundle getBundle(String projectName,
+                                                  Class caller,
+                                                  String resourceName,
+                                                  Locale locale,
+                                                  ResourceBundle extendsBundle)
+            throws MissingResourceException {
+        return getBundle(projectName,
+                getPackage(caller.getClass().getName()),
+                resourceName,
+                locale,
+                caller.getClass().getClassLoader(),
+                extendsBundle);
+    }
+
+    /**
+     * Construct a new ProjectResourceBundle
+     *
+     * @param projectName   The name of the project to which the class belongs.
+     *                      It must be a proper prefix of the caller's package.
+     * @param packageName  The package name to further construct
+     *                     the basename.
+     * @param resourceName  The name of the resource without the
+     *                      ".properties" extension
+     * @param locale        The locale
+     * @param extendsBundle If non-null, then this ExtendMessages will
+     *                      default to extendsBundle.
+     * @throws MissingResourceException if projectName is not a prefix of
+     *                                  the caller's package name, or if the resource could not be
+     *                                  found/loaded.
+     */
+    public static ProjectResourceBundle getBundle(String projectName,
+                                                  String packageName,
+                                                  String resourceName,
+                                                  Locale locale,
+                                                  ClassLoader loader,
+                                                  ResourceBundle extendsBundle)
+            throws MissingResourceException {
+        if (log.isDebugEnabled()) {
+            log.debug("getBundle(" + projectName + ","
+                    + packageName + ","
+                    + resourceName + ","
+                    + String.valueOf(locale) + ",...)");
+        }
+
+        Context context = new Context();
+        context.setLocale(locale);
+        context.setLoader(loader);
+        context.setProjectName(projectName);
+        context.setResourceName(resourceName);
+        context.setParentBundle(extendsBundle);
+
+        packageName = context.validate(packageName);
+
+        ProjectResourceBundle bundle = null;
+        try {
+            bundle = getBundle(context, packageName);
+        } catch (RuntimeException e) {
+            log.debug("Exception: ", e);
+            throw e;
+        }
+
+        if (bundle == null) {
+            throw new MissingResourceException("Cannot find resource '" +
+                    packageName + '.' + resourceName + "'",
+                    resourceName, "");
+        }
+
+        return bundle;
+    }
+
+    /**
+     * get bundle...
+     * - check cache
+     * - try up hierarchy
+     * - if at top of hierarchy, use (link to) context.getParentBundle()
+     */
+    private static synchronized ProjectResourceBundle getBundle(Context context, String packageName)
+            throws MissingResourceException {
+        String cacheKey = context.getCacheKey(packageName);
+
+        ProjectResourceBundle prb = (ProjectResourceBundle) bundleCache.get(cacheKey);
+
+        if (prb == null) {
+            String name = packageName + '.' + context.getResourceName();
+            ResourceBundle rb = context.loadBundle(packageName);
+            ResourceBundle parent = context.getParentBundle(packageName);
+
+            if (rb != null) {
+                prb = new ProjectResourceBundle(name, rb);
+                prb.setParent(parent);
+                if (log.isDebugEnabled()) {
+                    log.debug("Created " + prb + ", linked to parent " + String.valueOf(parent));
+                }
+            } else {
+                if (parent != null) {
+                    if (parent instanceof ProjectResourceBundle) {
+                        prb = (ProjectResourceBundle) parent;
+                    } else {
+                        prb = new ProjectResourceBundle(name, parent);
+                    }
+                    if (log.isDebugEnabled()) {
+                        log.debug("Root package not found, cross link to " + parent);
+                    }
+                }
+            }
+
+            if (prb != null) {
+                // Cache the resource
+                bundleCache.put(cacheKey, prb);
+            }
+        }
+
+        return prb;
+    }
+
+    private static String getPackage(String name) {
+        return name.substring(0, name.lastIndexOf('.')).intern();
+    }
+
+    /**
+     * Construct a new ProjectResourceBundle
+     */
+    private ProjectResourceBundle(String name, ResourceBundle bundle)
+            throws MissingResourceException {
+        this.resourceBundle = bundle;
+        this.resourceName = name;
+    }
+
+    public String getResourceName() {
+        return resourceName;
+    }
+
+    /**
+     * Clears the internal cache
+     */
+//    public static void clearCache() {
+//        bundleCache.clear();
+//    }
+
+    public String toString() {
+        return resourceName;
+    }
+
+
+    private static class Context {
+        private Locale _locale;
+        private ClassLoader _loader;
+        private String _projectName;
+        private String _resourceName;
+        private ResourceBundle _parent;
+
+        void setLocale(Locale l) {
+            /* 1. Docs indicate that if locale is not specified,
+             *    then the default local is used in it's place.
+             * 2. A null value for locale is invalid.
+             * 
+             * Therefore, default...
+             */
+            _locale = (l == null) ? defaultLocale : l;
+        }
+
+        void setLoader(ClassLoader l) {
+            _loader = (l != null) ? l : this.getClass().getClassLoader();
+            // START FIX: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16868
+            if (_loader == null) {
+                _loader = ClassLoader.getSystemClassLoader();
+            }
+            // END FIX: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16868
+        }
+
+        void setProjectName(String name) {
+            _projectName = name.intern();
+        }
+
+        void setResourceName(String name) {
+            _resourceName = name.intern();
+        }
+
+        void setParentBundle(ResourceBundle b) {
+            _parent = b;
+        }
+
+        Locale getLocale() {
+            return _locale;
+        }
+
+        ClassLoader getLoader() {
+            return _loader;
+        }
+
+        String getProjectName() {
+            return _projectName;
+        }
+
+        String getResourceName() {
+            return _resourceName;
+        }
+
+        ResourceBundle getParentBundle() {
+            return _parent;
+        }
+
+        String getCacheKey(String packageName) {
+            String loaderName = (_loader == null) ? "" : (":" + _loader.hashCode());
+            return packageName + "." + _resourceName + ":" + _locale + ":" + defaultLocale + loaderName;
+        }
+
+        ResourceBundle loadBundle(String packageName) {
+            try {
+                return ResourceBundle.getBundle(packageName + '.' + _resourceName,
+                        _locale,
+                        _loader);
+            } catch (MissingResourceException e) {
+                // Deliberately surpressing print stack.. just the string for info.
+                log.debug("loadBundle: Ignoring MissingResourceException: " + e.getMessage());
+            }
+            return null;
+        }
+
+        ResourceBundle getParentBundle(String packageName) {
+            ResourceBundle p;
+            if (!packageName.equals(_projectName)) {
+                p = getBundle(this, getPackage(packageName));
+            } else {
+                p = _parent;
+                _parent = null;
+            }
+            return p;
+        }
+
+        String validate(String packageName)
+                throws MissingResourceException {
+            if (_projectName == null || _projectName.length() == 0) {
+                log.debug("Project name not specified");
+                throw new MissingResourceException("Project name not specified",
+                        "", "");
+            }
+
+            if (packageName == null || packageName.length() == 0) {
+                log.debug("Package name not specified");
+                throw new MissingResourceException("Package not specified",
+                        packageName, "");
+            }
+            packageName = packageName.intern();
+    
+            /* Ensure that project is a proper prefix of class.
+             * Terminate project name with '.' to ensure proper match.
+             */
+            if (!packageName.equals(_projectName) && !packageName.startsWith(_projectName + '.')) {
+                log.debug("Project not a prefix of Package");
+                throw new MissingResourceException("Project '" + _projectName
+                        + "' must be a prefix of Package '"
+                        + packageName + "'",
+                        packageName + '.' + _resourceName, "");
+            }
+
+            return packageName;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/RB.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/RB.java
new file mode 100644
index 0000000..cf3dffb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/RB.java
@@ -0,0 +1,718 @@
+/*
+ * Copyright 2004,2005 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.axis2.i18n;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.MessageFormat;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Properties;
+
+/**
+ * CURRENTLY NOT USED
+ * KEEPING FOR REFERENCE  9/19/2002
+ * <p/>
+ * <p>Wrapper class for resource bundles. Property files are used to store
+ * resource strings, which are the only types of resources available.
+ * Property files can inherit properties from other files so that
+ * a base property file can be used and a small number of properties
+ * can be over-ridden by another property file. For example you may
+ * create an english version of a resource file named "resource.properties".
+ * You then decide that the British English version of all of the properties
+ * except one are the same, so there is no need to redefine all of the
+ * properties in "resource_en_GB", just the one that is different.</p>
+ * <p>The property file lookup searches for classes with various suffixes
+ * on the basis if the desired local and the current default local
+ * (as returned by Local.getDefault()). As property files are found the
+ * property values are merged so that inheritance is preserved.</p>
+ * <p>The order of searching is:</p>
+ * <dir>
+ * basename + "_" + langage + "_" + country + "_" + variant
+ * basename + "_" + langage + "_" + country
+ * basename + "_" + langage
+ * basename + "_" + defaultLanguage + "_" + defaultCountry + "_" + defaultVariant
+ * basename + "_" + defaultLanguage + "_" + defaultCountry
+ * basename + "_" + defaultLanguage
+ * basename
+ * </dir>
+ * <p>The basename is the name of the property file without the ".properties"
+ * extension.</p>
+ * <p>Properties will be cached for performance.<p>
+ * <p>Property values stored in the property files can also contain dynamic
+ * variables. Any dynamic variable defined in PropertiesUtil.getVariableValue()
+ * can be used (such as {date}), as well as arguments in the form {0}, {1}, etc.
+ * Argument values are specified in the various overloaded getString() methods.</p>
+ */
+public class RB {
+    // The static cache of properties. The key is the basename + the local +
+    // the default local and the element is the Properties object containing
+    // the resources
+    static Hashtable propertyCache = new Hashtable();
+
+    // The default base name
+    public static final String BASE_NAME = "resource";
+
+    // The property file extension
+    public static final String PROPERTY_EXT = ".properties";
+
+    // The name of the current base property file (with extension)
+    protected String basePropertyFileName;
+
+    // The properties for the current resource bundle
+    protected Properties resourceProperties;
+
+    /**
+     * Construct a new RB
+     *
+     * @param name The name of the property file without the ".properties" extension
+     */
+    public RB(String name) throws MissingResourceException {
+        this(null, name, null);
+    }
+
+    /**
+     * Construct a new RB
+     *
+     * @param caller The calling object. This is used to get the package name
+     *               to further construct the basename as well as to get the proper ClassLoader
+     * @param name   The name of the property file without the ".properties" extension
+     */
+    public RB(Object caller, String name) throws MissingResourceException {
+        this(caller, name, null);
+    }
+
+    /**
+     * Construct a new RB
+     *
+     * @param caller The calling object. This is used to get the package name
+     *               to further construct the basename as well as to get the proper ClassLoader
+     * @param name   The name of the property file without the ".properties" extension
+     * @param locale  The locale
+     */
+    public RB(Object caller, String name, Locale locale) throws MissingResourceException {
+        ClassLoader cl = null;
+
+        if (caller != null) {
+
+            Class c;
+            if (caller instanceof Class) {
+                c = (Class) caller;
+            } else {
+                c = caller.getClass();
+            }
+
+            // Get the appropriate class loader
+            cl = c.getClassLoader();
+
+            if (name.indexOf("/") == -1) {
+
+                // Create the full basename only if not given
+                String fullName = c.getName();
+
+                int pos = fullName.lastIndexOf(".");
+                if (pos > 0) {
+                    name = fullName.substring(0, pos + 1).replace('.', '/') + name;
+                }
+            }
+        } else {
+            // Try the shared default properties file...
+            if (name.indexOf("/") == -1) {
+                name = "org/apache/axis2/default-resource";
+            }
+        }
+
+        Locale defaultLocale = Locale.getDefault();
+
+        // If the locale given is the same as the default locale, ignore it
+        if (locale != null) {
+            if (locale.equals(defaultLocale)) {
+                locale = null;
+            }
+        }
+
+        // Load the properties. If no property files exist then a
+        // MissingResourceException will be thrown
+        loadProperties(name, cl, locale, defaultLocale);
+    }
+
+    /**
+     * Gets a string message from the resource bundle for the given key
+     *
+     * @param key The resource key
+     * @return The message
+     */
+    public String getString(String key) throws MissingResourceException {
+        return getString(key, (Object[]) null);
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @return The message
+     */
+    public String getString(String key, Object arg0) throws MissingResourceException {
+        Object[] o = new Object[1];
+        o[0] = arg0;
+        return getString(key, o);
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @return The message
+     */
+    public String getString(String key, Object arg0, Object arg1) throws MissingResourceException {
+        Object[] o = new Object[2];
+        o[0] = arg0;
+        o[1] = arg1;
+        return getString(key, o);
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key  The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {1}
+     * @return The message
+     */
+    public String getString(String key, Object arg0, Object arg1, Object arg2) throws MissingResourceException {
+        Object[] o = new Object[3];
+        o[0] = arg0;
+        o[1] = arg1;
+        o[2] = arg2;
+        return getString(key, o);
+    }
+
+    /**
+     * <p>Gets a string message from the resource bundle for the given key. The
+     * message may contain variables that will be substituted with the given
+     * arguments. Variables have the format:</p>
+     * <dir>
+     * This message has two variables: {0} and {1}
+     * </dir>
+     *
+     * @param key   The resource key
+     * @param array An array of objects to place in corresponding variables
+     * @return The message
+     */
+    public String getString(String key, Object[] array) throws MissingResourceException {
+        String msg = null;
+        if (resourceProperties != null) {
+            msg = resourceProperties.getProperty(key);
+        }
+
+        if (msg == null) {
+            throw new MissingResourceException("Cannot find resource key \"" + key +
+                    "\" in base name " + basePropertyFileName,
+                    basePropertyFileName, key);
+        }
+
+        msg = MessageFormat.format(msg, array);
+        return msg;
+    }
+
+    protected void loadProperties(String basename, ClassLoader loader, Locale locale,
+                                  Locale defaultLocale)
+            throws MissingResourceException {
+        // Check the cache first
+        String loaderName = "";
+        if (loader != null) {
+            loaderName = ":" + loader.hashCode();
+        }
+        String cacheKey = basename + ":" + locale + ":" + defaultLocale + loaderName;
+        Properties p = (Properties) propertyCache.get(cacheKey);
+        basePropertyFileName = basename + PROPERTY_EXT;
+
+        if (p == null) {
+            // The properties were not found in the cache. Search the given locale
+            // first
+            if (locale != null) {
+                p = loadProperties(basename, loader, locale, p);
+            }
+
+            // Search the default locale
+            if (defaultLocale != null) {
+                p = loadProperties(basename, loader, defaultLocale, p);
+            }
+
+            // Search for the basename
+            p = merge(p, loadProperties(basePropertyFileName, loader));
+
+            if (p == null) {
+                throw new MissingResourceException("Cannot find resource for base name " +
+                        basePropertyFileName, basePropertyFileName, "");
+            }
+
+            // Cache the properties
+            propertyCache.put(cacheKey, p);
+
+        }
+
+        resourceProperties = p;
+    }
+
+    protected Properties loadProperties(String basename, ClassLoader loader, Locale locale,
+                                        Properties props) {
+
+        String language = locale.getLanguage();
+        String country = locale.getCountry();
+        String variant = locale.getVariant();
+        if (variant != null) {
+            if (variant.trim().length() == 0) {
+                variant = null;
+            }
+        }
+
+        if (language != null) {
+
+            if (country != null) {
+
+                if (variant != null) {
+                    props = merge(props, loadProperties(basename + "_" + language + "_" + country + "_" + variant +
+                            PROPERTY_EXT, loader));
+                }
+                props = merge(props, loadProperties(basename + "_" + language + "_" + country +
+                        PROPERTY_EXT, loader));
+            }
+            props = merge(props, loadProperties(basename + "_" + language + PROPERTY_EXT, loader));
+        }
+        return props;
+    }
+
+    protected Properties loadProperties(String resname, ClassLoader loader) {
+        Properties props = null;
+
+        // Attempt to open and load the properties
+        InputStream in = null;
+        try {
+            if (loader != null) {
+                in = loader.getResourceAsStream(resname);
+            }
+
+            // Either we're using the system class loader or we didn't find the
+            // resource using the given class loader
+            if (in == null) {
+                in = ClassLoader.getSystemResourceAsStream(resname);
+            }
+            if (in != null) {
+                props = new Properties();
+                try {
+                    props.load(in);
+                } catch (IOException ex) {
+                    // On error, clear the props
+                    props = null;
+                }
+            }
+        } finally {
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (Exception ex) {
+                    // Ignore error on close
+                }
+            }
+        }
+        return props;
+    }
+
+    /**
+     * Merge two Properties objects
+     */
+    protected Properties merge(Properties p1, Properties p2) {
+        if ((p1 == null) &&
+                (p2 == null)) {
+            return null;
+        } else if (p1 == null) {
+            return p2;
+        } else if (p2 == null) {
+            return p1;
+        }
+
+        // Now merge. p1 takes precedence
+        Enumeration enumeration = p2.keys();
+        while (enumeration.hasMoreElements()) {
+            String key = (String) enumeration.nextElement();
+            if (p1.getProperty(key) == null) {
+                p1.put(key, p2.getProperty(key));
+            }
+        }
+
+        return p1;
+    }
+
+    /**
+     * Get the underlying properties
+     */
+    public Properties getProperties() {
+        return resourceProperties;
+    }
+
+    // STATIC ACCESSORS
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param key    The resource key
+     * @return The formatted message
+     */
+    public static String getString(Object caller, String key)
+            throws MissingResourceException {
+        return getMessage(caller, BASE_NAME, null, key, null);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @return The formatted message
+     */
+    public static String getString(Object caller, String key, Object arg0)
+            throws MissingResourceException {
+        Object[] o = new Object[1];
+        o[0] = arg0;
+        return getMessage(caller, BASE_NAME, null, key, o);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @param arg1   The argument to place in variable {1}
+     * @return The formatted message
+     */
+    public static String getString(Object caller, String key, Object arg0, Object arg1)
+            throws MissingResourceException {
+        Object[] o = new Object[2];
+        o[0] = arg0;
+        o[1] = arg1;
+        return getMessage(caller, BASE_NAME, null, key, o);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @param arg1   The argument to place in variable {1}
+     * @param arg2   The argument to place in variable {2}
+     * @return The formatted message
+     */
+    public static String getString(Object caller, String key, Object arg0, Object arg1, Object arg2)
+            throws MissingResourceException {
+        Object[] o = new Object[3];
+        o[0] = arg0;
+        o[1] = arg1;
+        o[2] = arg2;
+        return getMessage(caller, BASE_NAME, null, key, o);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @param arg1   The argument to place in variable {1}
+     * @param arg2   The argument to place in variable {2}
+     * @param arg3   The argument to place in variable {3}
+     * @return The formatted message
+     */
+    public static String getString(Object caller, String key, Object arg0, Object arg1, Object arg2, Object arg3)
+            throws MissingResourceException {
+        Object[] o = new Object[4];
+        o[0] = arg0;
+        o[1] = arg1;
+        o[2] = arg2;
+        o[3] = arg3;
+        return getMessage(caller, BASE_NAME, null, key, o);
+    }
+
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @param arg1   The argument to place in variable {1}
+     * @param arg2   The argument to place in variable {2}
+     * @param arg3   The argument to place in variable {3}
+     * @param arg4   The argument to place in variable {4}
+     * @return Returns the formatted message.
+     */
+    public static String getString(Object caller, String key, Object arg0, Object arg1, Object arg2, Object arg3, Object arg4)
+            throws MissingResourceException {
+        Object[] o = new Object[5];
+        o[0] = arg0;
+        o[1] = arg1;
+        o[2] = arg2;
+        o[3] = arg3;
+        o[4] = arg4;
+        return getMessage(caller, BASE_NAME, null, key, o);
+    }
+
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param key    The resource key
+     * @param args  An array of objects to place in corresponding variables
+     * @return Returns the formatted message.
+     */
+    public static String getString(Object caller, String key, Object[] args)
+            throws MissingResourceException {
+        return getMessage(caller, BASE_NAME, null, key, args);
+    }
+
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param locale The locale
+     * @param key    The resource key
+     * @return The formatted message
+     */
+    public static String getString(Object caller, Locale locale, String key)
+            throws MissingResourceException {
+        return getMessage(caller, BASE_NAME, locale, key, null);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param locale The locale
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @return The formatted message
+     */
+    public static String getString(Object caller, Locale locale, String key, Object arg0)
+            throws MissingResourceException {
+        Object[] o = new Object[1];
+        o[0] = arg0;
+        return getMessage(caller, BASE_NAME, locale, key, o);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param locale The locale
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @param arg1   The argument to place in variable {1}
+     * @return The formatted message
+     */
+    public static String getString(Object caller, Locale locale, String key, Object arg0, Object arg1)
+            throws MissingResourceException {
+        Object[] o = new Object[2];
+        o[0] = arg0;
+        o[1] = arg1;
+        return getMessage(caller, BASE_NAME, locale, key, o);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param locale The locale
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @param arg1   The argument to place in variable {1}
+     * @param arg2   The argument to place in variable {2}
+     * @return The formatted message
+     */
+    public static String getString(Object caller, Locale locale, String key, Object arg0, Object arg1, Object arg2)
+            throws MissingResourceException {
+        Object[] o = new Object[3];
+        o[0] = arg0;
+        o[1] = arg1;
+        o[2] = arg2;
+        return getMessage(caller, BASE_NAME, locale, key, o);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param locale The locale
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @param arg1   The argument to place in variable {1}
+     * @param arg2   The argument to place in variable {2}
+     * @param arg3   The argument to place in variable {3}
+     * @return The formatted message
+     */
+    public static String getString(Object caller, Locale locale, String key, Object arg0, Object arg1, Object arg2, Object arg3)
+            throws MissingResourceException {
+        Object[] o = new Object[4];
+        o[0] = arg0;
+        o[1] = arg1;
+        o[2] = arg2;
+        o[3] = arg3;
+        return getMessage(caller, BASE_NAME, locale, key, o);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param locale The locale
+     * @param key    The resource key
+     * @param arg0   The argument to place in variable {0}
+     * @param arg1   The argument to place in variable {1}
+     * @param arg2   The argument to place in variable {2}
+     * @param arg3   The argument to place in variable {3}
+     * @return Returns the formatted message.
+     */
+    public static String getString(Object caller, Locale locale, String key, Object arg0, Object arg1, Object arg2, Object arg3, Object arg4)
+            throws MissingResourceException {
+        Object[] o = new Object[5];
+        o[0] = arg0;
+        o[1] = arg1;
+        o[2] = arg2;
+        o[3] = arg3;
+        o[4] = arg4;
+        return getMessage(caller, BASE_NAME, locale, key, o);
+    }
+
+    /**
+     * Get a message from resource.properties from the package of the given object.
+     *
+     * @param caller The calling object, used to get the package name and class loader
+     * @param locale The locale
+     * @param key    The resource key
+     * @param args  An array of objects to place in corresponding variables
+     * @return Returns the formatted message.
+     */
+    public static String getString(Object caller, Locale locale, String key, Object[] args)
+            throws MissingResourceException {
+        return getMessage(caller, BASE_NAME, locale, key, args);
+    }
+
+    // Workhorse that does the resource loading and key lookup
+    public static String getMessage(Object caller, String basename, Locale locale, String key,
+                                    Object[] args)
+            throws MissingResourceException {
+        String msg = null;
+        MissingResourceException firstEx = null;
+        String fullName = null;
+        Class curClass = null;
+        boolean didNull = false;
+
+        if (caller != null) {
+            if (caller instanceof Class)
+                curClass = (Class) caller;
+            else
+                curClass = caller.getClass();
+        }
+
+        while (msg == null) {
+
+            // Get the full name of the resource
+            if (curClass != null) {
+
+                // Create the full basename
+                String pkgName = curClass.getName();
+
+                int pos = pkgName.lastIndexOf(".");
+                if (pos > 0) {
+                    fullName = pkgName.substring(0, pos + 1).replace('.', '/') + basename;
+                } else {
+                    fullName = basename;
+                }
+            } else {
+                fullName = basename;
+            }
+
+            try {
+                RB rb = new RB(caller, fullName, locale);
+                msg = rb.getString(key, args);
+            } catch (MissingResourceException ex) {
+                if (curClass == null) {
+                    throw ex;
+                }
+
+                // Save the first exception
+                if (firstEx == null) {
+                    firstEx = ex;
+                }
+
+                // Get the superclass
+                curClass = curClass.getSuperclass();
+                if (curClass == null) {
+                    if (didNull)
+                        throw firstEx;
+                    didNull = true;
+                    caller = null;
+                } else {
+                    String cname = curClass.getName();
+                    if (cname.startsWith("java.") ||
+                            cname.startsWith("javax.")) {
+                        if (didNull)
+                            throw firstEx;
+                        didNull = true;
+                        caller = null;
+                        curClass = null;
+                    }
+                }
+            }
+
+        }
+        return msg;
+    }
+
+    /**
+     * Clears the internal cache.
+     */
+    public static void clearCache() {
+        propertyCache.clear();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/resource.properties b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/resource.properties
new file mode 100644
index 0000000..e11e6e2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/i18n/resource.properties
@@ -0,0 +1,236 @@
+# Translation instructions.
+# 1.  Each message line is of the form key=value.
+#     Translate the value, DO NOT translate the key.
+# 2.  The messages may contain arguments that will be filled in
+#     by the runtime.  These are of the form: {0}, {1}, etc.
+#     These must appear as is in the message, though the order
+#     may be changed to support proper language syntax.
+# 3.  If a single quote character is to appear in the resulting
+#     message, it must appear in this file as two consecutive
+#     single quote characters.
+# 4.  Lines beginning with "#" (like this one) are comment lines
+#     and may contain translation instructions.  They need not be
+#     translated unless your translated file, rather than this file,
+#     will serve as a base for other translators.
+
+#############################################################################
+# DO NOT TOUCH THESE PROPERTIES - THEY ARE AUTOMATICALLY UPDATED BY THE BUILD
+# PROCESS.
+axisVersion=Apache Axis2 version: @axisVersion@
+axisVersionRaw=@axisVersion@
+axisBuiltOnRaw=@TODAY@
+axisUserAgent=Axis/@axisVersion@
+builtOn=Built on @TODAY@
+#############################################################################
+
+threadpoolshutdown=Thread pool has already been shutdown
+errorWhileSafeShutDown=Error during safe shutdown
+invaliduser=Invalid user name
+invalidSOAPversion=Invalid SOAP URI. Axis2 only supports SOAP 1.1 and 1.2
+cannotInferTransport=Cannot infer transport information from the URL {0}
+cannotInferTransportNoAddr=No address information in EPR, cannot infer transport
+cannotBeNullAxisOperation=Axis Operation can not be null
+cannotBeNullServiceContext=ServiceContext can not be null
+cannotBeNullConfigurationContext=ConfigurationContext can not be null
+cannotBeNullOperationContext=OperationContext can not be null
+nowhereToSendError=Nowhere to send the error, the return response path is missing and fault to has not been specified
+errorwhileProcessingFault=Error occured while processing fault, previous error is given in the stack trace.
+unSupportedMEP=Unsupported MEP {0}
+mepClientSupportOnly=This MEP client supports only {0} , and Axis operations supplied supports {1}
+inputstreamNull=Incoming message input stream is null
+unknownTransport=Unknown transport {0}
+paramIsNotSpecified={0} parameter is not specified
+groovyNoanswer=No answer received from groovy!!!!
+groovyUnableToLoad=Cannot load {0}
+outMessageNull=The out message is NULL, nothing to write
+canNotBeNull={0} can not be NULL
+notFound={0} not found
+transportError=Transport error {0} . Error Message is {1}
+httpTransportError=HTTP Transport error : ''{0}'' - ''{1}''
+preatureEOS=Premature end of stream
+responseTimeOut=Time out while waiting for the server to send the response
+callBackCompletedWithError=Callback completed but there was no envelope or error
+2channelNeedAddressing=In order to use two transport channels, WS-Addressing module must be engaged
+useSeparateListenerLimited=useSeparateListener equals false is only supports by the http/tcp and tcp commons transport set as the sender and receiver
+replyNeedStarting=Before asking for ReplyTo, the TransportListener must be started. Transport is {0}
+failedToOpenSocket=failed to open the socket
+noRecep4Email=No recipient is found in the Email
+unknownMsgLabel=Unknown message label {0}
+cannotCorrelateMsg= Can not correlate the Message Operation {0} RelatesTo {1}
+addAfterInvoke00={0}:  the chain has already been invoked
+AandBdonotmatch={0} does not match {1} expected {3} but the values was {4}
+rpcNeedmatchingChild=rpc style expect the immediate child of the SOAP body 
+unknownStyle=Unknown Style {0}
+rawXmlProviderIsLimited=Raw Xml provider supports only the methods bearing the signature public OMElement &lt;method-name&gt;(OMElement) where the method name can be anything
+methodNotImplemented=Implementation class does not define a method called
+methodDoesNotExistInOut=ServiceClass does not implement required method of the form OMElement {0}(OMElement e)
+methodDoesNotExistInOnly=ServiceClass does not implement required method of the form void {0}(OMElement e)
+implReturnedNull=Implementation class returned null
+invalidMethodName=Invalid method name {0} for service implementation class
+blockInvocationExpectsRes=Blocking invocation always expects a response
+serviceGroupIDNotFound=SOAP session information can not be retrieved from the received correlation id.
+
+#    Client
+operationnotfound=Operation  {0} not found
+unsupportedyype=Unsupported type
+unknownsoapversion=Unknown SOAP version
+cannotfindamoduletoprocess=cannot find a module to process {0} type assertions
+noendpointfound=No Endpoint Found in Service, {0}
+endpointnotfound=Endpoint Not found
+unsupportdmep=Unsupported MEP
+noservicefound=No service found
+
+# context
+servicenotfound=Service not found
+threadpoolset=Thread pool already set.
+transportiniterror=Transport-OUT initialization error : {0}
+invalidserviceinagroup=Invalid service {0} not belong to service group {1}
+
+#     Deployment Errors
+invalidWSDLFound=Invalid WSDL found in the service archive file. WSDL File must have either \
+  http://www.w3.org/2006/01/wsdl or http://www.w3.org/2004/03/wsdl as the namespace of the document element.
+wsdlfilenotfound=WSDL file not found for the service :   {0}
+servicexmlnotfound=services.xml not found for service ''{0}''
+modulexmlnotfound=module.xml not found  for the module :   {0}
+classnotfound=Class Not found :  {0}
+fileNotFound=File not found , {0}
+repocannotbebull=Axis2 repository can not be null
+confignotfound=can not find org/apache/axis2/deployment/axis2.xml
+pathtoconfigcanotnull=path to axis2.xml can not be NULL
+modulevalfailed=Module validation failed  {0}
+invalidphase=Invalid phases please recheck axis2.xml {0} for the handler {1}
+dispatchPhaseNotFoundOnInflow='Dispatch' phase not found on the global 'InFlow' phase of the axis2.xml. Please recheck
+invalidmoduleref=Service {0} refer to invalid module  {1}
+invalidmodulerefbyop=Operation {0} refers to an invalid module  {1}
+addingnewmodule=adding new module
+settingcl=Setting class loader  {0}
+deployingws=Deploying Web service  {0}
+invalidservice=Invalid service  {0} due to {1}
+deployeingmodule=Deploying module : {0}
+invalidmodule=Invalid module : {0} caused {1}
+serviceremoved=Undeploying Web service  {0}
+typemappingnotallowed=Type Mappings are not allowed in axis2.xml
+errorinloadingmr={0} Error in loading message receiver {1}
+errorinloadingts={0} Error in loading transport sender {1}
+invalidconfigattribute=invalid attributes in axis2.xml {0} {1}
+undefinedFlowType=un-defined flow type {0}
+flowtypeisrequird=Flow type is a required attribute in  {0}
+elementisnotallow={0} element is not allowed in the axis2.xml
+outflownotallowedintrin=OUTFlow does not support in AxisTransportIN  {0}
+unknownelement=Unknown element {0}
+inflownotallowedintrout=InFlow is not supported in TransportOutDescription  {0}
+badarguforservice={0} Bad arguments for the service {1}
+typemappingnotimpl=Type mapping has not been implemented yet
+beanmappingnotimpl=Bean mapping has not been implemented yet
+modulenotfound={0} module is invalid or has not been deployed
+badparaagu=bad parameter arguments name can not be null : {0}
+badlistagu=bad listener arguments
+invalidhandlerdif=Handler cannot have both name and ref {0}
+thisshouldbeimplment=This should be implemented {0}
+opnotfoundinwsdl={0} Operation Name not found in WSDL
+badopattribute=bad attribute in operation  {0}
+unknownelementinop=Unknown element in operation {0}
+modulecannothavrbothnameandref=Module canot have both name and ref   {0}
+invalideleinmodule={0} elment is not allowed in module.xml
+invalidphase01=Invalid Phase : {0} for the handler {1} does not exit in axis2.xml or refering to phase in different flow
+invalidmodulerefbyconfig=reference to invalid module {0} by axis2.xml
+phasedosenotspecified=Phase is specified for the handler {0}                                            
+servicemodulecannothaveglobal=Service specific module can not refer system pre-defined phases :  {0}
+fnf=File not found
+fnf_e=File not found {0}
+StreamException=XMLStreamException : {0}
+mnf={0} : Module not found
+invalid_storage=Invalid storage class defintion, class name missing
+no_dispatcher_found=No dispatcher has been found , cannot continue ....
+noMetaInf=Invalid service META-INF directory not found
+ivs=Invalid service META-INF directory not found
+badModuleFromOperation=Error in engaging module {0} to the operation {1} , invalid module reference at operation
+badModuleFromService=Error in engaging module {0} to the operation {1} , invalid module reference at service
+InstantiationException=InstantiationException in Axis Storage processing  {0}
+IllegalAccessException=IllegalAccessException in Axis Storage processing  {0}
+transportSenderError=TransportSender Implementation class is required for the transport {0}
+obsererror=Observer Implementation Class is required
+invalidmoduleconfig=Invalid module configuration
+invalidhandler=Invalid Handler {0}
+parameterlockederror=The parameter {0}  has been locked at top level can not overide
+op_error=Processing Operations Modules {0}
+servicenameeror=Service name required
+invalid_op=Invalid Operation {0}
+cannotCorrelateMsg01=Cannot correlate MessageID {1} to {0}
+fileExistsNoOverwrite=File {0} will not be overwritten.
+cannotConnectError=Unable to connect
+failedJMSConnectorShutdown=failure in JMSConnectorShutdown
+errorinschemagen=Error in schema generating {0}
+errorininputstreamclose=Error in closing input stream
+phaseclassnotfound=Couldn't find phase class : {0} : {1}
+modulenamecannotnull=Module name can not be null in side default module vresion element
+documentcreatingerror=Exception occured when creating the Document from WSDL {0}
+noserviceelemtfound=No javax.wsdl.Service element is found
+serviceporterror=atleast one port should be specified
+soapbindingerror=atleast one port with a soap binding should be specified
+axisoperationcreateerror=Exception when creating AxisOperation for the AxisService {0}
+wrapperelementcreaterror=Exception occured while creating wrapper element
+policyprocessingerror=Exception occured when processing policy elements
+bothrepoandconfignull=neither repository location nor axis2.xml are given so system will continue using default configuration (using default_axis2.xml)
+cannotfindrepo=System can not find the given repository location: {0}
+norepofoundinaxis2=no repository location found in axis2.xml
+noservicedirfound=no services directory found under {0}
+nomoduledirfound=no modules directory found under {0}
+confdirnotfound=conf directory not found , and no axis2.xml file is given ! System will continue using default_axis2.xml
+noaxis2xmlfound=axis2.xml file not found in conf directory , system will continue using default_axis2.xml
+badelementfound=Looking for ''{0}'' element, but found ''{1}''
+messagelabelcannotfound=message label can not be null
+paramterlockedbyparent=Parameter: {0} is already locked, hence value cannot be overridden
+modulealredyengaged={0}  module has already engaged to the operation operation terminated !!!
+mepmappingerror=Could not Map the MEP URI to a axis2 MEP constant value
+mepnotyetimplemented="The MEP you are using  {0} has not implemented createClient().
+modulealredyengagetoservice=Trying to engage a module which is already engege: {0}
+invalidoperation=invalid operation : {0}
+noschemafound=no schema found for the service
+modulenotavailble=Trying to engage a module which is not available : {0}
+modulealredyengagedtoservicegroup={0} module has already been engaged on the service Group. Operation terminated !!!
+servicenotfoundinwsdl=Service {0} not found in the wsdl
+noservicefoundinwsdl=No servoce found in the given wsdl
+noporttypefoundfor=No port found for the given port name : {0}
+noporttypefound=no port found in the service element
+modulenf=Module not found
+mepcompleted=Invalid message addition , operation context completed
+invalidacess=In valid acess
+mepiscomplted=MEP is already completed- need to reset() before re-executing.
+outmsgctxnull=Out message context is null please set the out message context before calling this method
+cannotreset=MEP is not yet complete: cannot reset
+cannotaddmsgctx=Can't add message context again until client has been executed
+#Policy
+emptypolicy=Policy Id is either null or empty
+#outMessageNull=Out message is null
+malformedURLException00=MalformedURLException:
+exception00=Exception:
+#Byte code reading for Java2WSDL
+badClassFile00=Error looking for paramter names in bytecode: input does not appear to be a valid class file
+cantLoadByecode=Unable to load bytecode for class "{0}"
+unexpectedEOF00=Error looking for paramter names in bytecode: unexpected end of file
+unexpectedBytes00=Error looking for paramter names in bytecode: unexpected bytes in file
+#description
+servicefound=Found AxisService : {0}
+operationfound=Found AxisOperation : {0}
+checkingoperation=Checking for Operation using WSAAction : {0}
+checkingserviceforepr=Checking for Service using toEPR's address : {0}
+checkingrelatesto=Checking RelatesTo : {0}
+twoservicecannothavesamename=Two services can not have same name, a service with {0} already exists in the system
+cannotaddapplicationscopeservice=can not add service with application scope onece the system has started
+invalidservicegroupname=invalid service group name : {0}
+modulealredyengagedglobaly=Attempt to engage an already engaged module {0}
+refertoinvalidmodule=Refer to invalid module , has not bean deployed yet !
+serviceinactive=Trying to acess inactive service : {0}
+servicenamenotvalid=Invalid service name : {0}
+enginestarted=Axis Engine Started
+mustunderstandfailed=Must Understand check failed {0} : {1}
+receivederrormessage=Received Error Message with id {0}
+servicenotfoundforepr=Service Not found EPR is {0}
+operationnotfoundforepr=Operation Not found EPR is {0} and WSA Action =  {1}
+unabletofindservice=Service not found operation terminated !!
+invalidservicegrouoid=Invalid Service Group Id {0}
+servicenotfoundinthesystem=Invalid service {0}, not found in the system
+transportnotfound=Transport Not found {0}
+CannotConfigureAxis2=Cannot configure Axis2
+wsaddressingrequirednotpresent=WS-Addressing required but not found.
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/Module.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/Module.java
new file mode 100644
index 0000000..ad97ae6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/Module.java
@@ -0,0 +1,77 @@
+/*
+* Copyright 2004,2005 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.axis2.modules;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisDescription;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Policy;
+
+/**
+ * Every module provides an implementation of this class. Modules are in one of
+ * two states: "available" or "engaged". All modules that the runtime
+ * detects (from the system modules/ directory or from other means) are said to
+ * be in the "available" state. If some service indicates a dependency on this
+ * module then the module is initialized (once for the life of the system) and
+ * the state changes to "initialized".
+ * <p/>
+ * <p/>Any module which is in the "engaged" state can be engaged as needed
+ * by the engine to respond to a message. Currently module engagement is done
+ * via deployment (using module.xml). In the future we may engage modules
+ * programmatically by introducing an engage() method to this interface, thereby
+ * allowing more dynamic scenarios.
+ */
+public interface Module {
+
+    // initialize the module
+    public void init(ConfigurationContext configContext, AxisModule module) throws AxisFault;
+
+    /**
+     * When engaging this module to some service or operation , module will be notify by calling this
+     * method there module author can validate , add policy and do any thing that he want , and he can
+     * refuce the engage as well
+     * @param axisDescription
+     * @throws AxisFault
+     */
+    void engageNotify(AxisDescription axisDescription) throws AxisFault;
+    
+    /**
+     * Evalute whether it can support the specified assertion and returns true if the assertion can
+     * be supported. 
+     *  
+     * @param assertion the assertion that the module must decide whether it can support or not. 
+     * @return true if the specified assertion can be supported by the module
+     */
+    public boolean canSupportAssertion(Assertion assertion);
+    
+    /**
+     * Evaluates specified policy for the specified AxisDescription. It computes the configuration that 
+     * is appropriate to support the policy and stores it the appropriate description.
+     * 
+     * @param policy the policy that is applicable for the specified AxisDescription
+     * @throws AxisFault if anything goes wrong. 
+     */
+    public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault;
+    
+            
+    // shutdown the module
+    public void shutdown(ConfigurationContext configurationContext) throws AxisFault;
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/ModulePolicyExtension.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/ModulePolicyExtension.java
new file mode 100644
index 0000000..fe89592
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/ModulePolicyExtension.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2004,2005 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.axis2.modules;
+
+
+
+public interface ModulePolicyExtension {
+
+    public PolicyExtension getPolicyExtension();
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/PolicyExtension.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/PolicyExtension.java
new file mode 100644
index 0000000..2897ceb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/modules/PolicyExtension.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004,2005 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.axis2.modules;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public interface PolicyExtension {
+	public void addMethodsToStub(Document document, Element element, QName methodName, List assertions);
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/namespace/Constants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/namespace/Constants.java
new file mode 100644
index 0000000..f9557e3
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/namespace/Constants.java
@@ -0,0 +1,353 @@
+/*

+* Copyright 2006 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.axis2.namespace;

+

+import javax.xml.namespace.QName;

+

+public class Constants {

+

+    public static final String AXIS2_NAMESPACE_URI =

+            "http://ws.apache.org/namespaces/axis2";

+    public static final String AXIS2_NAMESPACE_PREFIX = "axis2";

+    

+    // Namespace Prefix Constants

+    //////////////////////////////////////////////////////////////////////////

+    public static final String NS_PREFIX_SOAP_ENV   = "soapenv";

+    public static final String NS_PREFIX_SOAP_ENC   = "soapenc";

+    public static final String NS_PREFIX_SCHEMA_XSI = "xsi" ;

+    public static final String NS_PREFIX_SCHEMA_XSD = "xsd" ;

+    public static final String NS_PREFIX_WSDL       = "wsdl" ;

+    public static final String NS_PREFIX_WSDL_SOAP  = "wsdlsoap";

+    public static final String NS_PREFIX_XML        = "xml";

+    public static final String NS_PREFIX_XOP        = "xop";

+

+    //

+    // SOAP-ENV Namespaces

+    //

+    public static final String URI_SOAP11_ENV =

+                                "http://schemas.xmlsoap.org/soap/envelope/" ;

+    public static final String URI_SOAP12_ENV =

+                                   "http://www.w3.org/2003/05/soap-envelope";

+

+    public static final String URI_LITERAL_ENC = "";

+

+    //

+    // SOAP-ENC Namespaces

+    //

+    public static final String URI_SOAP11_ENC =

+                                "http://schemas.xmlsoap.org/soap/encoding/" ;

+    public static final String URI_SOAP12_ENC =

+                                   "http://www.w3.org/2003/05/soap-encoding";

+    public static final String URI_SOAP12_NOENC =

+                     "http://www.w3.org/2003/05/soap-envelope/encoding/none";

+

+    // Misc SOAP Namespaces / URIs

+    public static final String URI_SOAP11_NEXT_ACTOR =

+                                     "http://schemas.xmlsoap.org/soap/actor/next" ;

+    public static final String URI_SOAP12_NEXT_ROLE =

+                                     "http://www.w3.org/2003/05/soap-envelope/role/next";

+    /** @deprecated use URI_SOAP12_NEXT_ROLE */

+    public static final String URI_SOAP12_NEXT_ACTOR = URI_SOAP12_NEXT_ROLE;

+

+    public static final String URI_SOAP12_RPC =

+                                     "http://www.w3.org/2003/05/soap-rpc";

+

+    public static final String URI_SOAP12_NONE_ROLE =

+                         "http://www.w3.org/2003/05/soap-envelope/role/none";

+    public static final String URI_SOAP12_ULTIMATE_ROLE =

+             "http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver";

+

+    public static final String URI_SOAP11_HTTP =

+                                     "http://schemas.xmlsoap.org/soap/http";

+    public static final String URI_SOAP12_HTTP =

+                                    "http://www.w3.org/2003/05/http";

+

+    public static final String NS_URI_XMLNS =

+                                       "http://www.w3.org/2000/xmlns/";

+

+    public static final String NS_URI_XML =

+                                       "http://www.w3.org/XML/1998/namespace";

+

+    //

+    // Schema XSD Namespaces

+    //

+    public static final String URI_1999_SCHEMA_XSD =

+                                          "http://www.w3.org/1999/XMLSchema";

+    public static final String URI_2000_SCHEMA_XSD =

+                                       "http://www.w3.org/2000/10/XMLSchema";

+    public static final String URI_2001_SCHEMA_XSD =

+                                          "http://www.w3.org/2001/XMLSchema";

+

+    public static final String URI_DEFAULT_SCHEMA_XSD = URI_2001_SCHEMA_XSD;

+

+    //

+    // Schema XSI Namespaces

+    //

+    public static final String URI_1999_SCHEMA_XSI =

+                                 "http://www.w3.org/1999/XMLSchema-instance";

+    public static final String URI_2000_SCHEMA_XSI =

+                              "http://www.w3.org/2000/10/XMLSchema-instance";

+    public static final String URI_2001_SCHEMA_XSI =

+                                 "http://www.w3.org/2001/XMLSchema-instance";

+    public static final String URI_DEFAULT_SCHEMA_XSI = URI_2001_SCHEMA_XSI;

+

+    public static final String URI_POLICY =

+                                "http://schemas.xmlsoap.org/ws/2004/09/policy";

+    /**

+     * WSDL Namespace.

+     */

+    public static final String NS_URI_WSDL11 =

+                                 "http://schemas.xmlsoap.org/wsdl/";

+

+    public static final String NS_URI_WSDL20 =

+                                 "http://www.w3.org/2004/03/wsdl";

+

+    //

+    // WSDL extensions for SOAP in DIME

+    // (http://gotdotnet.com/team/xml_wsspecs/dime/WSDL-Extension-for-DIME.htm)

+    //

+    public static final String URI_DIME_WSDL =

+                                 "http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/";

+

+    public static final String URI_DIME_CONTENT =

+                                 "http://schemas.xmlsoap.org/ws/2002/04/content-type/";

+

+    public static final String URI_DIME_REFERENCE=

+                                 "http://schemas.xmlsoap.org/ws/2002/04/reference/";

+

+    public static final String URI_DIME_CLOSED_LAYOUT=

+                                 "http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout";

+

+    public static final String URI_DIME_OPEN_LAYOUT=

+                                 "http://schemas.xmlsoap.org/ws/2002/04/dime/open-layout";

+

+    // XOP/MTOM

+    public static final String URI_XOP_INCLUDE =

+                                 "http://www.w3.org/2004/08/xop/include";

+    public static final String ELEM_XOP_INCLUDE = "Include" ;

+

+

+    //

+    // WSDL SOAP Namespace

+    //

+    public static final String URI_WSDL11_SOAP =

+                                 "http://schemas.xmlsoap.org/wsdl/soap/";

+    public static final String URI_WSDL12_SOAP =

+                                 "http://schemas.xmlsoap.org/wsdl/soap12/";

+

+    public static final String ELEM_ENVELOPE = "Envelope" ;

+    public static final String ELEM_HEADER   = "Header" ;

+    public static final String ELEM_BODY     = "Body" ;

+    public static final String ELEM_FAULT    = "Fault" ;

+

+    public static final String ELEM_NOTUNDERSTOOD = "NotUnderstood";

+    public static final String ELEM_UPGRADE           = "Upgrade";

+    public static final String ELEM_SUPPORTEDENVELOPE = "SupportedEnvelope";

+

+    public static final String ELEM_FAULT_CODE   = "faultcode" ;

+    public static final String ELEM_FAULT_STRING = "faultstring" ;

+    public static final String ELEM_FAULT_DETAIL = "detail" ;

+    public static final String ELEM_FAULT_ACTOR  = "faultactor" ;

+

+    public static final String ELEM_FAULT_CODE_SOAP12 = "Code" ;

+    public static final String ELEM_FAULT_VALUE_SOAP12 = "Value" ;

+    public static final String ELEM_FAULT_SUBCODE_SOAP12 = "Subcode" ;

+    public static final String ELEM_FAULT_REASON_SOAP12 = "Reason" ;

+    public static final String ELEM_FAULT_NODE_SOAP12 = "Node" ;

+    public static final String ELEM_FAULT_ROLE_SOAP12 = "Role" ;

+    public static final String ELEM_FAULT_DETAIL_SOAP12 = "Detail" ;

+    public static final String ELEM_TEXT_SOAP12 = "Text" ;

+

+    public static final String ATTR_MUST_UNDERSTAND = "mustUnderstand" ;

+    public static final String ATTR_ENCODING_STYLE  = "encodingStyle" ;

+    public static final String ATTR_ACTOR           = "actor" ;

+    public static final String ATTR_ROLE            = "role" ;

+    public static final String ATTR_RELAY           = "relay" ;

+    public static final String ATTR_ROOT            = "root" ;

+    public static final String ATTR_ID              = "id" ;

+    public static final String ATTR_HREF            = "href" ;

+    public static final String ATTR_REF             = "ref" ;

+    public static final String ATTR_QNAME           = "qname";

+    public static final String ATTR_ARRAY_TYPE      = "arrayType";

+    public static final String ATTR_ITEM_TYPE       = "itemType";

+    public static final String ATTR_ARRAY_SIZE      = "arraySize";

+    public static final String ATTR_OFFSET          = "offset";

+    public static final String ATTR_POSITION        = "position";

+    public static final String ATTR_TYPE            = "type";

+    public static final String ATTR_HANDLERINFOCHAIN = "handlerInfoChain";

+

+    // Fault Codes

+    //////////////////////////////////////////////////////////////////////////

+    public static final String FAULT_CLIENT = "Client";

+

+    public static final String FAULT_SERVER_GENERAL =

+                                                   "Server.generalException";

+

+    public static final String FAULT_SERVER_USER =

+                                                   "Server.userException";

+

+    public static final QName FAULT_VERSIONMISMATCH =

+                                  new QName(URI_SOAP11_ENV, "VersionMismatch");

+

+    public static final QName FAULT_MUSTUNDERSTAND =

+                                  new QName(URI_SOAP11_ENV, "MustUnderstand");

+

+

+    public static final QName FAULT_SOAP12_MUSTUNDERSTAND =

+                                  new QName(URI_SOAP12_ENV, "MustUnderstand");

+

+    public static final QName FAULT_SOAP12_VERSIONMISMATCH =

+                                  new QName(URI_SOAP12_ENV, "VersionMismatch");

+

+    public static final QName FAULT_SOAP12_DATAENCODINGUNKNOWN =

+                                  new QName(URI_SOAP12_ENV, "DataEncodingUnknown");

+

+    public static final QName FAULT_SOAP12_SENDER =

+                                  new QName(URI_SOAP12_ENV, "Sender");

+

+    public static final QName FAULT_SOAP12_RECEIVER =

+                                  new QName(URI_SOAP12_ENV, "Receiver");

+

+    // SOAP 1.2 Fault subcodes

+    public static final QName FAULT_SUBCODE_BADARGS =

+            new QName(URI_SOAP12_RPC, "BadArguments");

+    public static final QName FAULT_SUBCODE_PROC_NOT_PRESENT =

+            new QName(URI_SOAP12_RPC, "ProcedureNotPresent");

+

+    // QNames

+    //////////////////////////////////////////////////////////////////////////

+    public static final QName QNAME_FAULTCODE =

+                                         new QName("", ELEM_FAULT_CODE);

+    public static final QName QNAME_FAULTSTRING =

+                                       new QName("", ELEM_FAULT_STRING);

+    public static final QName QNAME_FAULTACTOR =

+                                        new QName("", ELEM_FAULT_ACTOR);

+    public static final QName QNAME_FAULTDETAILS =

+                                         new QName("", ELEM_FAULT_DETAIL);

+

+    public static final QName QNAME_FAULTCODE_SOAP12 =

+                                         new QName(URI_SOAP12_ENV, ELEM_FAULT_CODE_SOAP12);

+    public static final QName QNAME_FAULTVALUE_SOAP12 =

+                                         new QName(URI_SOAP12_ENV, ELEM_FAULT_VALUE_SOAP12);

+    public static final QName QNAME_FAULTSUBCODE_SOAP12 =

+                                         new QName(URI_SOAP12_ENV, ELEM_FAULT_SUBCODE_SOAP12);

+    public static final QName QNAME_FAULTREASON_SOAP12 =

+                                         new QName(URI_SOAP12_ENV, ELEM_FAULT_REASON_SOAP12);

+    public static final QName QNAME_TEXT_SOAP12 =

+                                         new QName(URI_SOAP12_ENV, ELEM_TEXT_SOAP12);

+

+    public static final QName QNAME_FAULTNODE_SOAP12 =

+                                         new QName(URI_SOAP12_ENV, ELEM_FAULT_NODE_SOAP12);

+    public static final QName QNAME_FAULTROLE_SOAP12 =

+                                         new QName(URI_SOAP12_ENV, ELEM_FAULT_ROLE_SOAP12);

+    public static final QName QNAME_FAULTDETAIL_SOAP12 =

+                                         new QName(URI_SOAP12_ENV, ELEM_FAULT_DETAIL_SOAP12);

+    public static final QName QNAME_NOTUNDERSTOOD =

+                                         new QName(URI_SOAP12_ENV, ELEM_NOTUNDERSTOOD);

+

+    // Define qnames for the all of the XSD and SOAP-ENC encodings

+    public static final QName XSD_STRING = new QName(URI_DEFAULT_SCHEMA_XSD, "string");

+    public static final QName XSD_BOOLEAN = new QName(URI_DEFAULT_SCHEMA_XSD, "boolean");

+    public static final QName XSD_DOUBLE = new QName(URI_DEFAULT_SCHEMA_XSD, "double");

+    public static final QName XSD_FLOAT = new QName(URI_DEFAULT_SCHEMA_XSD, "float");

+    public static final QName XSD_INT = new QName(URI_DEFAULT_SCHEMA_XSD, "int");

+    public static final QName XSD_INTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "integer");

+    public static final QName XSD_LONG = new QName(URI_DEFAULT_SCHEMA_XSD, "long");

+    public static final QName XSD_SHORT = new QName(URI_DEFAULT_SCHEMA_XSD, "short");

+    public static final QName XSD_BYTE = new QName(URI_DEFAULT_SCHEMA_XSD, "byte");

+    public static final QName XSD_DECIMAL = new QName(URI_DEFAULT_SCHEMA_XSD, "decimal");

+    public static final QName XSD_BASE64 = new QName(URI_DEFAULT_SCHEMA_XSD, "base64Binary");

+    public static final QName XSD_HEXBIN = new QName(URI_DEFAULT_SCHEMA_XSD, "hexBinary");

+    public static final QName XSD_ANYSIMPLETYPE = new QName(URI_DEFAULT_SCHEMA_XSD, "anySimpleType");

+    public static final QName XSD_ANYTYPE = new QName(URI_DEFAULT_SCHEMA_XSD, "anyType");

+    public static final QName XSD_ANY = new QName(URI_DEFAULT_SCHEMA_XSD, "any");

+    public static final QName XSD_QNAME = new QName(URI_DEFAULT_SCHEMA_XSD, "QName");

+    public static final QName XSD_DATETIME = new QName(URI_DEFAULT_SCHEMA_XSD, "dateTime");

+    public static final QName XSD_DATE = new QName(URI_DEFAULT_SCHEMA_XSD, "date");

+    public static final QName XSD_TIME = new QName(URI_DEFAULT_SCHEMA_XSD, "time");

+    public static final QName XSD_TIMEINSTANT1999 = new QName(URI_1999_SCHEMA_XSD, "timeInstant");

+    public static final QName XSD_TIMEINSTANT2000 = new QName(URI_2000_SCHEMA_XSD, "timeInstant");

+

+    public static final QName XSD_NORMALIZEDSTRING = new QName(URI_2001_SCHEMA_XSD, "normalizedString");

+    public static final QName XSD_TOKEN = new QName(URI_2001_SCHEMA_XSD, "token");

+

+    public static final QName XSD_UNSIGNEDLONG = new QName(URI_2001_SCHEMA_XSD, "unsignedLong");

+    public static final QName XSD_UNSIGNEDINT = new QName(URI_2001_SCHEMA_XSD, "unsignedInt");

+    public static final QName XSD_UNSIGNEDSHORT = new QName(URI_2001_SCHEMA_XSD, "unsignedShort");

+    public static final QName XSD_UNSIGNEDBYTE = new QName(URI_2001_SCHEMA_XSD, "unsignedByte");

+    public static final QName XSD_POSITIVEINTEGER = new QName(URI_2001_SCHEMA_XSD, "positiveInteger");

+    public static final QName XSD_NEGATIVEINTEGER = new QName(URI_2001_SCHEMA_XSD, "negativeInteger");

+    public static final QName XSD_NONNEGATIVEINTEGER = new QName(URI_2001_SCHEMA_XSD, "nonNegativeInteger");

+    public static final QName XSD_NONPOSITIVEINTEGER = new QName(URI_2001_SCHEMA_XSD, "nonPositiveInteger");

+

+    public static final QName XSD_YEARMONTH = new QName(URI_2001_SCHEMA_XSD, "gYearMonth");

+    public static final QName XSD_MONTHDAY = new QName(URI_2001_SCHEMA_XSD, "gMonthDay");

+    public static final QName XSD_YEAR = new QName(URI_2001_SCHEMA_XSD, "gYear");

+    public static final QName XSD_MONTH = new QName(URI_2001_SCHEMA_XSD, "gMonth");

+    public static final QName XSD_DAY = new QName(URI_2001_SCHEMA_XSD, "gDay");

+    public static final QName XSD_DURATION = new QName(URI_2001_SCHEMA_XSD, "duration");

+

+    public static final QName XSD_NAME = new QName(URI_2001_SCHEMA_XSD, "Name");

+    public static final QName XSD_NCNAME = new QName(URI_2001_SCHEMA_XSD, "NCName");

+    public static final QName XSD_NMTOKEN = new QName(URI_2001_SCHEMA_XSD, "NMTOKEN");

+    public static final QName XSD_NMTOKENS = new QName(URI_2001_SCHEMA_XSD, "NMTOKENS");

+    public static final QName XSD_NOTATION = new QName(URI_2001_SCHEMA_XSD, "NOTATION");

+    public static final QName XSD_ENTITY = new QName(URI_2001_SCHEMA_XSD, "ENTITY");

+    public static final QName XSD_ENTITIES = new QName(URI_2001_SCHEMA_XSD, "ENTITIES");

+    public static final QName XSD_IDREF = new QName(URI_2001_SCHEMA_XSD, "IDREF");

+    public static final QName XSD_IDREFS = new QName(URI_2001_SCHEMA_XSD, "IDREFS");

+    public static final QName XSD_ANYURI = new QName(URI_2001_SCHEMA_XSD, "anyURI");

+    public static final QName XSD_LANGUAGE = new QName(URI_2001_SCHEMA_XSD, "language");

+    public static final QName XSD_ID = new QName(URI_2001_SCHEMA_XSD, "ID");

+    public static final QName XSD_SCHEMA = new QName(URI_2001_SCHEMA_XSD, "schema");

+

+    public static final QName XML_LANG = new QName(NS_URI_XML, "lang");

+

+    public static final QName SOAP_BASE64 = new QName(URI_SOAP11_ENC, "base64");

+    public static final QName SOAP_BASE64BINARY = new QName(URI_SOAP11_ENC, "base64Binary");

+    public static final QName SOAP_STRING = new QName(URI_SOAP11_ENC, "string");

+    public static final QName SOAP_BOOLEAN = new QName(URI_SOAP11_ENC, "boolean");

+    public static final QName SOAP_DOUBLE = new QName(URI_SOAP11_ENC, "double");

+    public static final QName SOAP_FLOAT = new QName(URI_SOAP11_ENC, "float");

+    public static final QName SOAP_INT = new QName(URI_SOAP11_ENC, "int");

+    public static final QName SOAP_LONG = new QName(URI_SOAP11_ENC, "long");

+    public static final QName SOAP_SHORT = new QName(URI_SOAP11_ENC, "short");

+    public static final QName SOAP_BYTE = new QName(URI_SOAP11_ENC, "byte");

+    public static final QName SOAP_INTEGER = new QName(URI_SOAP11_ENC, "integer");

+    public static final QName SOAP_DECIMAL = new QName(URI_SOAP11_ENC, "decimal");

+    public static final QName SOAP_ARRAY = new QName(URI_SOAP11_ENC, "Array");

+    public static final QName SOAP_COMMON_ATTRS11 = new QName(URI_SOAP11_ENC, "commonAttributes");

+    public static final QName SOAP_COMMON_ATTRS12 = new QName(URI_SOAP12_ENC, "commonAttributes");

+    public static final QName SOAP_ARRAY_ATTRS11 = new QName(URI_SOAP11_ENC, "arrayAttributes");

+    public static final QName SOAP_ARRAY_ATTRS12 = new QName(URI_SOAP12_ENC, "arrayAttributes");

+    public static final QName SOAP_ARRAY12 = new QName(URI_SOAP12_ENC, "Array");

+

+    public static final QName QNAME_LITERAL_ITEM = new QName(URI_LITERAL_ENC,"item");

+    public static final QName QNAME_RPC_RESULT = new QName(URI_SOAP12_RPC,"result");

+

+    public static final String MIME_CT_APPLICATION_OCTETSTREAM     = "application/octet-stream";

+    public static final String MIME_CT_TEXT_PLAIN         = "text/plain";

+    public static final String MIME_CT_IMAGE_JPEG        = "image/jpeg";

+    public static final String MIME_CT_IMAGE_GIF        = "image/gif";

+    public static final String MIME_CT_TEXT_XML            = "text/xml";

+    public static final String MIME_CT_APPLICATION_XML        = "application/xml";

+    public static final String MIME_CT_MULTIPART_PREFIX        = "multipart/";

+    

+    public static final QName BASE_64_CONTENT_QNAME = new QName(URI_2001_SCHEMA_XSD, "base64Binary");

+    public static final QName XMIME_CONTENT_TYPE_QNAME = new QName("http://www.w3.org/2004/06/xmlmime", "contentType");

+    public static final String URI_SECURITYPOLICY = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseException.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseException.java
new file mode 100644
index 0000000..f6a9722
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseException.java
@@ -0,0 +1,56 @@
+/*
+* Copyright 2004,2005 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.axis2.phaseresolver;
+
+import org.apache.axis2.AxisFault;
+
+/**
+ * Class PhaseException
+ */
+public class PhaseException extends AxisFault {
+
+	private static final long serialVersionUID = 5690503396724929322L;
+
+	/**
+     * Constructor PhaseException
+     *
+     * @param message
+     */
+    public PhaseException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructor PhaseException
+     *
+     * @param cause
+     */
+    public PhaseException(Throwable cause) {
+        super(cause);
+    }
+
+    /**
+     * Constructor PhaseException
+     *
+     * @param message
+     * @param cause
+     */
+    public PhaseException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseHolder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseHolder.java
new file mode 100644
index 0000000..e6f7459
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseHolder.java
@@ -0,0 +1,105 @@
+/*
+* Copyright 2004,2005 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.axis2.phaseresolver;
+
+import org.apache.axis2.deployment.DeploymentErrorMsgs;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.i18n.Messages;
+
+import java.util.ArrayList;
+
+/**
+ * This class hold all the phases found in the services.xml and server.xml
+ */
+public class PhaseHolder {
+    private ArrayList phaseList;
+
+    public PhaseHolder() {
+    }
+
+    public PhaseHolder(ArrayList phases) {
+        this.phaseList = phases;
+    }
+
+    /**
+     * If the phase name is equal to "*" that implies , the handler should be
+     * added to each and every phase in the system for a given flow  , and at that
+     * point if the phase rule contains any before or aftere then they will be
+     * ignored. Phase first and phase last are supported , but make sure you dont
+     * break any of the phase rules.
+     * <p/>
+     * If the phase name is not above then the hadler will be added to the phase
+     * specified by  the phase rule , and no rules will be ignored.
+     *
+     * @param handlerDesc
+     * @throws PhaseException
+     */
+    public void addHandler(HandlerDescription handlerDesc) throws PhaseException {
+        String phaseName = handlerDesc.getRules().getPhaseName();
+        if (Phase.ALL_PHASES.equals(phaseName)) {
+            handlerDesc.getRules().setBefore("");
+            handlerDesc.getRules().setAfter("");
+            for (int i = 0; i < phaseList.size(); i++) {
+                Phase phase = (Phase) phaseList.get(i);
+                phase.addHandler(handlerDesc);
+            }
+        } else {
+            if (isPhaseExist(phaseName)) {
+                getPhase(phaseName).addHandler(handlerDesc);
+            } else {
+                throw new PhaseException(Messages.getMessage(DeploymentErrorMsgs.INVALID_PHASE,
+                        phaseName, handlerDesc.getName()));
+            }
+        }
+    }
+
+    /**
+     * this method is used to get the actual phase object given in the phase array list
+     *
+     * @param phaseName
+     */
+    private Phase getPhase(String phaseName) {
+        for (int i = 0; i < phaseList.size(); i++) {
+            Phase phase = (Phase) phaseList.get(i);
+
+            if (phase.getPhaseName().equals(phaseName)) {
+                return phase;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Method isPhaseExist
+     *
+     * @param phaseName
+     */
+    private boolean isPhaseExist(String phaseName) {
+        for (int i = 0; i < phaseList.size(); i++) {
+            Phase phase = (Phase) phaseList.get(i);
+
+            if (phase.getPhaseName().equals(phaseName)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseMetadata.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseMetadata.java
new file mode 100644
index 0000000..665f92c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseMetadata.java
@@ -0,0 +1,42 @@
+/*
+* Copyright 2004,2005 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.axis2.phaseresolver;
+
+/**
+ * Class PhaseMetadata
+ */
+public class PhaseMetadata {
+    public static final int IN_FLOW = 1;
+    public static final int OUT_FLOW = 2;
+    public static final int FAULT_OUT_FLOW = 4;
+    public static final int FAULT_IN_FLOW = 3;
+
+    // INFLOW
+    public static final String PHASE_TRANSPORTIN = "TransportIn";
+    public static final String PHASE_PRE_DISPATCH = "PreDispatch";
+    public static final String PHASE_POST_DISPATCH = "PostDispatch";
+    public static final String PHASE_POLICY_DETERMINATION = "PolicyDetermination";
+    public static final String PHASE_MESSAGE_PROCESSING = "MessageProcessing";
+
+    // OUTFLOW
+    public static final String PHASE_MESSAGE_OUT = "MessageOut";
+    public static final String PHASE_DISPATCH = "Dispatch";
+    public static final String PHASE_TRANSPORT_OUT = "TransportOut";
+
+    public static final String TRANSPORT_PHASE = "TRANSPORT";
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseResolver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseResolver.java
new file mode 100644
index 0000000..948689f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseResolver.java
@@ -0,0 +1,300 @@
+/*
+* Copyright 2004,2005 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.axis2.phaseresolver;
+
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.Flow;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Phase;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * Class PhaseResolver
+ */
+public class PhaseResolver {
+
+    private static final int IN_FLOW = 1;
+    private static final int OUT_FAULT_FLOW = 5;
+
+    /**
+     * Field axisConfig
+     */
+    private AxisConfiguration axisConfig;
+
+    /**
+     * Field phaseHolder
+     */
+    private PhaseHolder phaseHolder;
+
+    /**
+     * default constructor , to obuild chains for GlobalDescription
+     *
+     * @param axisconfig
+     */
+    public PhaseResolver(AxisConfiguration axisconfig) {
+        this.axisConfig = axisconfig;
+    }
+
+    public void engageModuleToOperation(AxisOperation axisOperation, AxisModule module)
+            throws PhaseException {
+        Flow flow = null;
+
+        for (int type = IN_FLOW; type < OUT_FAULT_FLOW; type++) {
+            switch (type) {
+                case PhaseMetadata.IN_FLOW : {
+                    ArrayList phases = new ArrayList();
+
+                    if (axisConfig != null) {
+                        Iterator itr_axis_config =
+                                axisConfig.getGlobalInFlow().iterator();
+
+                        while (itr_axis_config.hasNext()) {
+                            Object o = itr_axis_config.next();
+
+                            phases.add(o);
+                        }
+                    }
+
+                    Iterator itr_ops = axisOperation.getRemainingPhasesInFlow().iterator();
+
+                    while (itr_ops.hasNext()) {
+                        Object o = itr_ops.next();
+
+                        phases.add(o);
+                    }
+
+                    phaseHolder = new PhaseHolder(phases);
+
+                    break;
+                }
+
+                case PhaseMetadata.OUT_FLOW : {
+                    ArrayList phases = new ArrayList();
+                    Iterator itr_ops = axisOperation.getPhasesOutFlow().iterator();
+
+                    while (itr_ops.hasNext()) {
+                        Object o = itr_ops.next();
+
+                        phases.add(o);
+                    }
+
+                    if (axisConfig != null) {
+                        Iterator itr_axis_config = axisConfig.getGlobalOutPhases().iterator();
+
+                        while (itr_axis_config.hasNext()) {
+                            Object o = itr_axis_config.next();
+
+                            phases.add(o);
+                        }
+                    }
+
+                    phaseHolder = new PhaseHolder(phases);
+
+                    break;
+                }
+
+                case PhaseMetadata.FAULT_IN_FLOW : {
+                    ArrayList phases = new ArrayList();
+
+                    if (axisConfig != null) {
+                        Iterator itr_axis_config = axisConfig.getInFaultFlow().iterator();
+
+                        while (itr_axis_config.hasNext()) {
+                            Object o = itr_axis_config.next();
+
+                            phases.add(o);
+                        }
+                    }
+
+                    Iterator itr_ops = axisOperation.getPhasesInFaultFlow().iterator();
+
+                    while (itr_ops.hasNext()) {
+                        Object o = itr_ops.next();
+
+                        phases.add(o);
+                    }
+
+                    phaseHolder = new PhaseHolder(phases);
+
+                    break;
+                }
+
+                case PhaseMetadata.FAULT_OUT_FLOW : {
+                    ArrayList phases = new ArrayList();
+                    Iterator itr_ops = axisOperation.getPhasesOutFaultFlow().iterator();
+                    while (itr_ops.hasNext()) {
+                        Object o = itr_ops.next();
+
+                        phases.add(o);
+                    }
+                    if (axisConfig != null) {
+                        Iterator itr_axis_config = axisConfig.getOutFaultFlow().iterator();
+                        while (itr_axis_config.hasNext()) {
+                            Object o = itr_axis_config.next();
+                            phases.add(o);
+                        }
+                    }
+                    phaseHolder = new PhaseHolder(phases);
+                    break;
+                }
+            }
+
+            switch (type) {
+                case PhaseMetadata.IN_FLOW : {
+                    flow = module.getInFlow();
+
+                    break;
+                }
+
+                case PhaseMetadata.OUT_FLOW : {
+                    flow = module.getOutFlow();
+
+                    break;
+                }
+
+                case PhaseMetadata.FAULT_IN_FLOW : {
+                    flow = module.getFaultInFlow();
+
+                    break;
+                }
+
+                case PhaseMetadata.FAULT_OUT_FLOW : {
+                    flow = module.getFaultOutFlow();
+
+                    break;
+                }
+            }
+
+            if (flow != null) {
+                for (int j = 0; j < flow.getHandlerCount(); j++) {
+                    HandlerDescription metadata = flow.getHandler(j);
+
+                    phaseHolder.addHandler(metadata);
+                }
+            }
+        }
+    }
+
+    /**
+     * To remove handlers from global chians this method can be used , first it take inflow
+     * of the module and then take handler one by one and then remove those handlers from
+     * global inchain ,
+     * the same procedure will be carry out for all the other flows as well.
+     *
+     * @param module
+     */
+    public void disengageModuleFromGlobalChains(AxisModule module) {
+        //INFLOW
+        Flow flow = module.getInFlow();
+        if (flow != null) {
+            for (int j = 0; j < flow.getHandlerCount(); j++) {
+                HandlerDescription handler = flow.getHandler(j);
+                removeHandlerfromaPhase(handler, axisConfig.getGlobalInFlow());
+            }
+        }
+        //OUTFLOW
+        flow = module.getOutFlow();
+        if (flow != null) {
+            for (int j = 0; j < flow.getHandlerCount(); j++) {
+                HandlerDescription handler = flow.getHandler(j);
+                removeHandlerfromaPhase(handler, axisConfig.getGlobalOutPhases());
+            }
+        }
+        //INFAULTFLOW
+        flow = module.getFaultInFlow();
+        if (flow != null) {
+            for (int j = 0; j < flow.getHandlerCount(); j++) {
+                HandlerDescription handler = flow.getHandler(j);
+                removeHandlerfromaPhase(handler, axisConfig.getInFaultFlow());
+            }
+        }
+        //OUTFAULTFLOW
+        flow = module.getFaultOutFlow();
+        if (flow != null) {
+            for (int j = 0; j < flow.getHandlerCount(); j++) {
+                HandlerDescription handler = flow.getHandler(j);
+                removeHandlerfromaPhase(handler, axisConfig.getOutFaultFlow());
+            }
+        }
+    }
+
+    /**
+     * To remove handlers from operations chians this method can be used , first it take inflow
+     * of the module and then take handler one by one and then remove those handlers from
+     * global inchain ,
+     * the same procedure will be carry out for all the other flows as well.
+     *
+     * @param module
+     */
+    public void disengageModuleFromOperationChain(AxisModule module, AxisOperation operation) {
+        //INFLOW
+        Flow flow = module.getInFlow();
+        if (flow != null) {
+            for (int j = 0; j < flow.getHandlerCount(); j++) {
+                HandlerDescription handler = flow.getHandler(j);
+                removeHandlerfromaPhase(handler, operation.getRemainingPhasesInFlow());
+            }
+        }
+        //OUTFLOW
+        flow = module.getOutFlow();
+        if (flow != null) {
+            for (int j = 0; j < flow.getHandlerCount(); j++) {
+                HandlerDescription handler = flow.getHandler(j);
+                removeHandlerfromaPhase(handler, operation.getPhasesOutFlow());
+            }
+        }
+        //INFAULTFLOW
+        flow = module.getFaultInFlow();
+        if (flow != null) {
+            for (int j = 0; j < flow.getHandlerCount(); j++) {
+                HandlerDescription handler = flow.getHandler(j);
+                removeHandlerfromaPhase(handler, operation.getPhasesInFaultFlow());
+            }
+        }
+        //OUTFAULTFLOW
+        flow = module.getFaultOutFlow();
+        if (flow != null) {
+            for (int j = 0; j < flow.getHandlerCount(); j++) {
+                HandlerDescription handler = flow.getHandler(j);
+                removeHandlerfromaPhase(handler, operation.getPhasesOutFaultFlow());
+            }
+        }
+    }
+
+    /**
+     * To remove a single handler from a given list of phases
+     *
+     * @param handler
+     * @param phaseList
+     */
+    private void removeHandlerfromaPhase(HandlerDescription handler, ArrayList phaseList) {
+        String phaseName = handler.getRules().getPhaseName();
+        Iterator phaseItr = phaseList.iterator();
+        while (phaseItr.hasNext()) {
+            Phase phase = (Phase) phaseItr.next();
+            if (phase.getPhaseName().equals(phaseName)) {
+                phase.removeHandler(handler);
+                break;
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInMessageReceiver.java
new file mode 100644
index 0000000..ba9e6e1
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInMessageReceiver.java
@@ -0,0 +1,40 @@
+/*
+* Copyright 2004,2005 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.axis2.receivers;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This is takes care of the IN-OUT sync MEP in the server side
+ */
+public abstract class AbstractInMessageReceiver extends AbstractMessageReceiver {
+
+    public abstract void invokeBusinessLogic(MessageContext inMessage) throws AxisFault;
+
+    public final void receive(final MessageContext messageCtx) throws AxisFault {
+        ThreadContextDescriptor tc = setThreadContext(messageCtx);
+        try {
+            invokeBusinessLogic(messageCtx);
+        } finally {
+            restoreThreadContext(tc);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java
new file mode 100644
index 0000000..bf7e506
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java
@@ -0,0 +1,80 @@
+/*
+* Copyright 2004,2005 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.axis2.receivers;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This is takes care of the IN-OUT sync MEP in the server side
+ */
+public abstract class AbstractInOutAsyncMessageReceiver extends AbstractMessageReceiver {
+	private static final Log log = LogFactory.getLog(AbstractInOutAsyncMessageReceiver.class);
+
+    public abstract void invokeBusinessLogic(MessageContext inMessage,
+                                             MessageContext outMessage) throws AxisFault;
+
+    public final void receive(final MessageContext messageCtx) {
+        final ServerCallback callback = new ServerCallback() {
+            public void handleResult(MessageContext result) throws AxisFault {
+                AxisEngine engine =
+                        new AxisEngine(messageCtx.getOperationContext().getServiceContext()
+                                .getConfigurationContext());
+                engine.send(result);
+            }
+
+            public void handleFault(AxisFault fault) throws AxisFault {
+                AxisEngine engine =
+                        new AxisEngine(messageCtx.getOperationContext().getServiceContext()
+                                .getConfigurationContext());
+                MessageContext faultContext = engine.createFaultMessageContext(messageCtx, fault);
+
+                engine.sendFault(faultContext);
+            }
+        };
+        Runnable theadedTask = new Runnable() {
+            public void run() {
+                try {
+                    MessageContext newmsgCtx = Utils.createOutMessageContext(messageCtx);
+                    newmsgCtx.getOperationContext().addMessageContext(newmsgCtx);
+                    ThreadContextDescriptor tc = setThreadContext(messageCtx);
+                    try {
+                        invokeBusinessLogic(messageCtx, newmsgCtx);
+                    } finally {
+                        restoreThreadContext(tc);
+                    }
+                    callback.handleResult(newmsgCtx);
+                } catch (AxisFault e) {
+                    try {
+                        callback.handleFault(e);
+                    } catch (AxisFault axisFault) {
+                        log.error(e);
+                    }
+                    log.error(e);
+                }
+            }
+        };
+
+        messageCtx.getEnvelope().build();
+        messageCtx.getConfigurationContext().getThreadPool().execute(theadedTask);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java
new file mode 100644
index 0000000..730d4e8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java
@@ -0,0 +1,50 @@
+/*
+* Copyright 2004,2005 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.axis2.receivers;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.util.Utils;
+
+/**
+ * This is the Absract IN-OUT MEP MessageReceiver. The
+ * protected abstract methods are only for the sake of breaking down the logic
+ */
+public abstract class AbstractInOutSyncMessageReceiver extends AbstractMessageReceiver {
+    public abstract void invokeBusinessLogic(MessageContext inMessage, MessageContext outMessage)
+            throws AxisFault;
+
+    public final void receive(MessageContext msgContext) throws AxisFault {
+        MessageContext outMsgContext = Utils.createOutMessageContext(msgContext);
+        outMsgContext.getOperationContext().addMessageContext(outMsgContext);
+
+        ThreadContextDescriptor tc = setThreadContext(msgContext);
+        try {
+            invokeBusinessLogic(msgContext, outMsgContext);
+        } finally {
+            restoreThreadContext(tc);
+        }
+
+        AxisEngine engine =
+                new AxisEngine(
+                        msgContext.getConfigurationContext());
+
+        engine.send(outMsgContext);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java
new file mode 100644
index 0000000..abf467f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java
@@ -0,0 +1,173 @@
+/*
+* Copyright 2004,2005 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.axis2.receivers;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.DependencyManager;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.util.Loader;
+import org.apache.axis2.util.MultiParentClassLoader;
+
+import java.lang.reflect.Method;
+import java.net.URL;
+
+public abstract class AbstractMessageReceiver implements MessageReceiver {
+    public static final String SCOPE = "scope";
+    protected String serviceTCCL = null;
+    public static final String SAVED_TCCL = "_SAVED_TCCL_";
+    public static final String SAVED_MC = "_SAVED_MC_";
+
+
+    // Place to store previous values
+    public class ThreadContextDescriptor {
+        public ClassLoader oldClassLoader;
+        public MessageContext oldMessageContext;
+    }
+
+    /**
+     * Several pieces of information need to be available to the service
+     * implementation class.  For one, the ThreadContextClassLoader needs
+     * to be correct, and for another we need to give the service code
+     * access to the MessageContext (getCurrentContext()).  So we toss these
+     * things in TLS.
+     *
+     * @param msgContext
+     */
+    protected ThreadContextDescriptor
+            setThreadContext(MessageContext msgContext) {
+        ThreadContextDescriptor tc = new ThreadContextDescriptor();
+        tc.oldMessageContext = (MessageContext) MessageContext.currentMessageContext.get();
+        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+        tc.oldClassLoader = contextClassLoader;
+
+        AxisService service =
+                msgContext.getAxisService();
+        String serviceTCCL = (String) service.getParameterValue(
+                Constants.SERVICE_TCCL);
+        if (serviceTCCL != null) {
+            serviceTCCL = serviceTCCL.trim().toLowerCase();
+
+
+            if (serviceTCCL.equals(Constants.TCCL_COMPOSITE)) {
+                Thread.currentThread().setContextClassLoader(new MultiParentClassLoader(new URL[]{}, new ClassLoader[]{
+                        msgContext.getAxisService().getClassLoader(),
+                        contextClassLoader,
+                }));
+            } else if (serviceTCCL.equals(Constants.TCCL_SERVICE)) {
+                Thread.currentThread().setContextClassLoader(
+                        msgContext.getAxisService().getClassLoader()
+                );
+            }
+        }
+        MessageContext.setCurrentMessageContext(msgContext);
+        return tc;
+    }
+
+    protected void restoreThreadContext(ThreadContextDescriptor tc) {
+        Thread.currentThread().setContextClassLoader(tc.oldClassLoader);
+        MessageContext.currentMessageContext.set(tc.oldMessageContext);
+    }
+
+    /**
+     * Method makeNewServiceObject.
+     *
+     * @param msgContext
+     * @return Returns Object.
+     * @throws AxisFault
+     */
+    protected Object makeNewServiceObject(MessageContext msgContext) throws AxisFault {
+        try {
+            AxisService service =
+                    msgContext.getAxisService();
+            ClassLoader classLoader = service.getClassLoader();
+
+            // allow alternative definition of makeNewServiceObject
+            if (service.getParameter(Constants.SERVICE_OBJECT_SUPPLIER) != null) {
+                Parameter serviceObjectParam =
+                        service.getParameter(Constants.SERVICE_OBJECT_SUPPLIER);
+                Class serviceObjectMaker = Loader.loadClass(classLoader, ((String)
+                        serviceObjectParam.getValue()).trim());
+
+                // Find static getServiceObject() method, call it if there   
+                Method method = serviceObjectMaker.
+                        getMethod("getServiceObject",
+                                new Class[]{AxisService.class});
+                if (method != null)
+                    return method.invoke(serviceObjectMaker.newInstance(), new Object[]{service});
+            }
+
+            Parameter implInfoParam = service.getParameter(Constants.SERVICE_CLASS);
+            if (implInfoParam != null) {
+                Class implClass = Loader.loadClass(
+                        classLoader,
+                        ((String) implInfoParam.getValue()).trim());
+
+                return implClass.newInstance();
+            } else {
+                throw new AxisFault(Messages.getMessage("paramIsNotSpecified", "SERVICE_OBJECT_SUPPLIER"));
+            }
+        } catch (Exception e) {
+            throw AxisFault.makeFault(e);
+        }
+    }
+
+    public SOAPFactory getSOAPFactory(MessageContext msgContext) throws AxisFault {
+        String nsURI = msgContext.getEnvelope().getNamespace().getNamespaceURI();
+        if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsURI)) {
+            return OMAbstractFactory.getSOAP12Factory();
+        } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsURI)) {
+            return OMAbstractFactory.getSOAP11Factory();
+        } else {
+            throw new AxisFault(Messages.getMessage("invalidSOAPversion"));
+        }
+    }
+
+    /**
+     * Method getTheImplementationObject.
+     *
+     * @param msgContext
+     * @return Returns Object.
+     * @throws AxisFault
+     */
+    protected Object getTheImplementationObject(MessageContext msgContext) throws AxisFault {
+        ServiceContext serviceContext = msgContext.getServiceContext();
+        Object serviceimpl = serviceContext.getProperty(ServiceContext.SERVICE_OBJECT);
+        if (serviceimpl != null) {
+            // since service impl is there in service context , take that from there
+            return serviceimpl;
+        } else {
+            // create a new service impl class for that service
+            serviceimpl = makeNewServiceObject(msgContext);
+            //Service initialization
+            DependencyManager.initServiceClass(serviceimpl,
+                    msgContext.getServiceContext());
+            serviceContext.setProperty(ServiceContext.SERVICE_OBJECT, serviceimpl);
+            return serviceimpl;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractRobustInMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractRobustInMessageReceiver.java
new file mode 100644
index 0000000..4dfef13
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/AbstractRobustInMessageReceiver.java
@@ -0,0 +1,40 @@
+/*
+* Copyright 2004,2005 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.axis2.receivers;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This is takes care of the IN-OUT sync MEP in the server side
+ */
+public abstract class AbstractRobustInMessageReceiver extends AbstractMessageReceiver {
+
+    public abstract void invokeBusinessLogic(MessageContext inMessage) throws AxisFault;
+
+    public final void receive(final MessageContext messageCtx) throws AxisFault {
+        ThreadContextDescriptor tc = setThreadContext(messageCtx);
+        try {
+            invokeBusinessLogic(messageCtx);
+        } finally {
+            restoreThreadContext(tc);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java
new file mode 100644
index 0000000..dae66c4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOnlyMessageReceiver.java
@@ -0,0 +1,94 @@
+/*
+* Copyright 2004,2005 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.axis2.receivers;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.lang.reflect.Method;
+
+/**
+ * The RawXMLINOnlyMessageReceiver MessageReceiver hands over the raw request received to
+ * the service implementation class as an OMElement. The implementation class is NOT
+ * expected to return any value, but may do so and it would be ignored. This is a
+ * synchronous MessageReceiver, and finds the service implementation class to invoke by
+ * referring to the "ServiceClass" parameter value specified in the service.xml and
+ * looking at the methods of the form void <<methodName>>(OMElement request)
+ *
+ * @see RawXMLINOutMessageReceiver
+ * @see RawXMLINOutAsyncMessageReceiver
+ */
+public class RawXMLINOnlyMessageReceiver extends AbstractInMessageReceiver
+        implements MessageReceiver {
+
+    private static final Log log = LogFactory.getLog(RawXMLINOnlyMessageReceiver.class);
+
+    private Method findOperation(AxisOperation op, Class ImplClass) {
+        String methodName = op.getName().getLocalPart();
+        Method[] methods = ImplClass.getMethods();
+
+        for (int i = 0; i < methods.length; i++) {
+            if (methods[i].getName().equals(methodName) &&
+                    methods[i].getParameterTypes().length == 1 &&
+                    OMElement.class.getName().equals(
+                            methods[i].getParameterTypes()[0].getName()) &&
+                    "void".equals(methods[i].getReturnType().getName())) {
+                return methods[i];
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Invokes the bussiness logic invocation on the service implementation class
+     *
+     * @param msgContext the incoming message context
+     * @throws AxisFault on invalid method (wrong signature)
+     */
+    public void invokeBusinessLogic(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();
+
+            AxisOperation op = msgContext.getOperationContext().getAxisOperation();
+            Method method = findOperation(op, ImplClass);
+
+            if (method != null) {
+                method.invoke(
+                        obj, new Object[]{msgContext.getEnvelope().getBody().getFirstElement()});
+            } else {
+                throw new AxisFault(Messages.getMessage("methodDoesNotExistInOnly",
+                        op.getName().toString()));
+            }
+
+        } catch (Exception e) {
+            throw AxisFault.makeFault(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutAsyncMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutAsyncMessageReceiver.java
new file mode 100644
index 0000000..b807d15
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutAsyncMessageReceiver.java
@@ -0,0 +1,104 @@
+package org.apache.axis2.receivers;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.i18n.Messages;

+

+import java.lang.reflect.Method;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+/**

+ * The RawXMLINOutAsyncMessageReceiver MessageReceiver hands over the raw request received to

+ * the service implementation class as an OMElement. The implementation class is expected

+ * to return back the OMElement to be returned to the caller. This is an asynchronous

+ * MessageReceiver, and finds the service implementation class to invoke by referring to

+ * the "ServiceClass" parameter value specified in the service.xml and looking at the

+ * methods of the form OMElement <<methodName>>(OMElement request)

+ *

+ * @see RawXMLINOnlyMessageReceiver

+ * @see RawXMLINOutMessageReceiver

+ */

+public class RawXMLINOutAsyncMessageReceiver extends AbstractInOutAsyncMessageReceiver {

+

+    private Method findOperation(AxisOperation op, Class ImplClass) {

+        String methodName = op.getName().getLocalPart();

+        Method[] methods = ImplClass.getMethods();

+

+        for (int i = 0; i < methods.length; i++) {

+            if (methods[i].getName().equals(methodName) &&

+                    methods[i].getParameterTypes().length == 1 &&

+                    OMElement.class.getName().equals(

+                            methods[i].getParameterTypes()[0].getName()) &&

+                    OMElement.class.getName().equals(methods[i].getReturnType().getName())) {

+                return methods[i];

+            }

+        }

+

+        return null;

+    }

+

+    /**

+     * Invokes the bussiness logic invocation on the service implementation class

+     *

+     * @param msgContext    the incoming message context

+     * @param newmsgContext the response message context

+     * @throws AxisFault on invalid method (wrong signature) or behaviour (return null)

+     */

+    public void invokeBusinessLogic(MessageContext msgContext, MessageContext newmsgContext)

+            throws AxisFault {

+        try {

+

+            // get the implementation class for the Web Service

+            Object obj = getTheImplementationObject(msgContext);

+

+            // find the WebService method

+            Class ImplClass = obj.getClass();

+

+            AxisOperation opDesc = msgContext.getOperationContext().getAxisOperation();

+            Method method = findOperation(opDesc, ImplClass);

+

+            if (method != null) {

+                OMElement result = (OMElement) method.invoke(

+                        obj, new Object[]{msgContext.getEnvelope().getBody().getFirstElement()});

+                SOAPFactory fac = getSOAPFactory(msgContext);

+                SOAPEnvelope envelope = fac.getDefaultEnvelope();

+

+                if (result != null) {

+                    AxisService service = msgContext.getAxisService();

+                    result.declareNamespace(service.getTargetNamespace(),

+                            service.getTargetNamespacePrefix());

+                    envelope.getBody().addChild(result);

+                }

+

+                newmsgContext.setEnvelope(envelope);

+

+            } else {

+                throw new AxisFault(Messages.getMessage("methodDoesNotExistInOut",

+                        opDesc.getName().toString()));

+            }

+        } catch (Exception e) {

+            throw AxisFault.makeFault(e);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java
new file mode 100644
index 0000000..d9526f8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java
@@ -0,0 +1,110 @@
+/*
+* Copyright 2004,2005 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.axis2.receivers;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.lang.reflect.Method;
+
+/**
+ * The RawXMLINOutMessageReceiver MessageReceiver hands over the raw request received to
+ * the service implementation class as an OMElement. The implementation class is expected
+ * to return back the OMElement to be returned to the caller. This is a synchronous
+ * MessageReceiver, and finds the service implementation class to invoke by referring to
+ * the "ServiceClass" parameter value specified in the service.xml and looking at the
+ * methods of the form OMElement <<methodName>>(OMElement request)
+ *
+ * @see RawXMLINOnlyMessageReceiver
+ * @see RawXMLINOutAsyncMessageReceiver
+ */
+public class RawXMLINOutMessageReceiver extends AbstractInOutSyncMessageReceiver
+        implements MessageReceiver {
+
+    private static final Log log = LogFactory.getLog(RawXMLINOutMessageReceiver.class);
+
+    private Method findOperation(AxisOperation op, Class ImplClass) {
+        String methodName = op.getName().getLocalPart();
+        Method[] methods = ImplClass.getMethods();
+
+        for (int i = 0; i < methods.length; i++) {
+            if (methods[i].getName().equals(methodName) &&
+                    methods[i].getParameterTypes().length == 1 &&
+                    OMElement.class.getName().equals(
+                            methods[i].getParameterTypes()[0].getName()) &&
+                    OMElement.class.getName().equals(methods[i].getReturnType().getName())) {
+                return methods[i];
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Invokes the bussiness logic invocation on the service implementation class
+     *
+     * @param msgContext    the incoming message context
+     * @param newmsgContext the response message context
+     * @throws AxisFault on invalid method (wrong signature) or behaviour (return null)
+     */
+    public void invokeBusinessLogic(MessageContext msgContext, MessageContext newmsgContext)
+            throws AxisFault {
+        try {
+
+            // get the implementation class for the Web Service
+            Object obj = getTheImplementationObject(msgContext);
+
+            // find the WebService method
+            Class ImplClass = obj.getClass();
+
+            AxisOperation opDesc = msgContext.getOperationContext().getAxisOperation();
+            Method method = findOperation(opDesc, ImplClass);
+
+            if (method != null) {
+                OMElement result = (OMElement) method.invoke(
+                        obj, new Object[]{msgContext.getEnvelope().getBody().getFirstElement()});
+                SOAPFactory fac = getSOAPFactory(msgContext);
+                SOAPEnvelope envelope = fac.getDefaultEnvelope();
+
+                if (result != null) {
+                    AxisService service = msgContext.getAxisService();
+                    result.declareNamespace(service.getTargetNamespace(),
+                            service.getTargetNamespacePrefix());
+                    envelope.getBody().addChild(result);
+                }
+
+                newmsgContext.setEnvelope(envelope);
+
+            } else {
+                throw new AxisFault(Messages.getMessage("methodDoesNotExistInOut",
+                        opDesc.getName().toString()));
+            }
+        } catch (Exception e) {
+            throw AxisFault.makeFault(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/ServerCallback.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/ServerCallback.java
new file mode 100644
index 0000000..11bb87f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/receivers/ServerCallback.java
@@ -0,0 +1,27 @@
+/*
+* Copyright 2004,2005 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.axis2.receivers;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+
+public interface ServerCallback {
+    public void handleFault(AxisFault fault) throws AxisFault;
+
+    public void handleResult(MessageContext result) throws AxisFault;
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/AbstractTransportSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/AbstractTransportSender.java
new file mode 100644
index 0000000..58e9899
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/AbstractTransportSender.java
@@ -0,0 +1,161 @@
+/*
+* Copyright 2004,2005 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.axis2.transport;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.http.HTTPTransportUtils;
+
+import java.io.OutputStream;
+
+/**
+ * By the time this Class is invoked either the To EPR on the MessageContext
+ * should be set or TRANSPORT_WRITER property set in the message Context with a
+ * Writer. This Class would write the SOAPMessage using either of the methods in
+ * the order To then Writer.
+ */
+public abstract class AbstractTransportSender extends AbstractHandler implements TransportSender {
+
+    /**
+     * Field NAME
+     */
+    public static final String NAME = "TransportSender";
+
+    /**
+     * Constructor AbstractTransportSender
+     */
+    public AbstractTransportSender() {
+        init(new HandlerDescription(NAME));
+    }
+
+    public abstract void finalizeSendWithOutputStreamFromIncomingConnection(
+            MessageContext msgContext, OutputStream out)
+            throws AxisFault;
+
+    public abstract void finalizeSendWithToAddress(MessageContext msgContext, OutputStream out)
+            throws AxisFault;
+
+    public void init(ConfigurationContext confContext, TransportOutDescription transportOut)
+            throws AxisFault {
+    }
+
+    /**
+     * Method invoke
+     *
+     * @param msgContext
+     * @throws AxisFault
+     */
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+
+        // Check for the REST behaviour, if you desire rest beahaviour
+        // put a <parameter name="doREST" value="true"/> at the axis2.xml
+        msgContext.setDoingMTOM(HTTPTransportUtils.doWriteMTOM(msgContext));
+        msgContext.setDoingSwA(HTTPTransportUtils.doWriteSwA(msgContext));
+
+        OutputStream out;
+        EndpointReference epr = null;
+
+        if (msgContext.getTo() != null && !msgContext.getTo().hasAnonymousAddress()) {
+            epr = msgContext.getTo();
+        }
+
+        if (epr != null) {
+            if (!epr.hasNoneAddress()) {
+                out = openTheConnection(epr, msgContext);
+
+                OutputStream newOut = startSendWithToAddress(msgContext, out);
+
+                if (newOut != null) {
+                    out = newOut;
+                }
+
+                writeMessage(msgContext, out);
+                finalizeSendWithToAddress(msgContext, out);
+            }
+        } else {
+            out = (OutputStream) msgContext.getProperty(MessageContext.TRANSPORT_OUT);
+
+            if (out != null) {
+                startSendWithOutputStreamFromIncomingConnection(msgContext, out);
+                writeMessage(msgContext, out);
+                finalizeSendWithOutputStreamFromIncomingConnection(msgContext, out);
+            } else {
+                throw new AxisFault(
+                        "Both the TO and Property MessageContext.TRANSPORT_OUT is Null, No where to send");
+            }
+        }
+
+        // TODO fix this, we do not set the value if the operation context is
+        // not available
+        if (msgContext.getOperationContext() != null) {
+            msgContext.getOperationContext().setProperty(Constants.RESPONSE_WRITTEN,
+                    Constants.VALUE_TRUE);
+        }
+        return InvocationResponse.CONTINUE;        
+    }
+
+    protected abstract OutputStream openTheConnection(EndpointReference epr, MessageContext msgctx)
+            throws AxisFault;
+
+    public abstract OutputStream startSendWithOutputStreamFromIncomingConnection(
+            MessageContext msgContext, OutputStream out)
+            throws AxisFault;
+
+    public abstract OutputStream startSendWithToAddress(MessageContext msgContext, OutputStream out)
+            throws AxisFault;
+
+    public void writeMessage(MessageContext msgContext, OutputStream out) throws AxisFault {
+        SOAPEnvelope envelope = msgContext.getEnvelope();
+        OMElement outputMessage = envelope;
+
+        if ((envelope != null) && msgContext.isDoingREST()) {
+            outputMessage = envelope.getBody().getFirstElement();
+        }
+
+        if (outputMessage != null) {
+            try {
+                OMOutputFormat format = new OMOutputFormat();
+
+                // Pick the char set encoding from the msgContext
+                String charSetEnc =
+                        (String) msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
+
+                format.setDoOptimize(false);
+                format.setDoingSWA(false);
+                format.setCharSetEncoding(charSetEnc);
+                outputMessage.serializeAndConsume(out, format);
+                out.flush();
+            } catch (Exception e) {
+                throw new AxisFault(e);
+            }
+        } else {
+            throw new AxisFault(Messages.getMessage("outMessageNull"));
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/OutTransportInfo.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/OutTransportInfo.java
new file mode 100644
index 0000000..7bffaa7
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/OutTransportInfo.java
@@ -0,0 +1,22 @@
+/*
+* Copyright 2004,2005 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.axis2.transport;
+
+public interface OutTransportInfo {
+    public abstract void setContentType(String contentType);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/RequestResponseTransport.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/RequestResponseTransport.java
new file mode 100644
index 0000000..e1c3f6b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/RequestResponseTransport.java
@@ -0,0 +1,42 @@
+/*
+* Copyright 2006 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.axis2.transport;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+
+/**
+ * This interface represents a control object for a Request/Response transport.
+ * The normal flow of Axis2 is rooted at the transport -- this does not
+ * allow for an acknowledgement to be transmitted before processing has
+ * completed, nor does it allow for processing to be paused and resumed
+ * on a separate thread without having a response be sent back.  This interface
+ * enables both of those scenarios by allowing the transport to expose
+ * controls to the rest of the engine via a callback.     
+ */
+public interface RequestResponseTransport
+{
+  /*This is the name of the property that is to be stored on the
+    MessageContext*/
+  public static final String TRANSPORT_CONTROL
+    = "RequestResponseTransportControl";
+
+  public void acknowledgeMessage(MessageContext msgContext) throws AxisFault;
+  
+  //public void suspendOnReturn(MessageContext msgContext);
+  //public void processResponse(MessageContext msgContext);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/SimpleAxis2Server.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/SimpleAxis2Server.java
new file mode 100755
index 0000000..8b7279d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/SimpleAxis2Server.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2004,2005 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.axis2.transport;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.util.OptionsValidator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+public class SimpleAxis2Server {
+
+    private static final Log log = LogFactory.getLog(SimpleHTTPServer.class);
+
+    int port = -1;
+
+    public static int DEFAULT_PORT = 8080;
+    
+
+    /**
+     * @param args
+     * @throws Exception
+     */
+    public static void main(String[] args) throws Exception {
+		String repoLocation = null;
+		String confLocation = null;
+
+		CommandLineOptionParser optionsParser = new CommandLineOptionParser(args);
+		List invalidOptionsList = optionsParser.getInvalidOptions(new OptionsValidator() {
+			public boolean isInvalid(CommandLineOption option) {
+				String optionType = option.getOptionType();
+				return !("repo".equalsIgnoreCase(optionType) || "conf"
+						.equalsIgnoreCase(optionType));
+			}
+		});
+		
+		if ((invalidOptionsList.size()>0)||(args.length>4))
+		{
+			printUsage();
+			return;
+		}
+		
+		Map optionsMap = optionsParser.getAllOptions();
+
+		CommandLineOption repoOption = (CommandLineOption) optionsMap
+				.get("repo");
+		CommandLineOption confOption = (CommandLineOption) optionsMap
+				.get("conf");
+
+		log.info("[SimpleAxisServer] Starting");
+		if (repoOption != null) {
+			repoLocation = repoOption.getOptionValue();
+			log.info("[SimpleAxisServer] Using the Axis2 Repository"
+					+ new File(repoLocation).getAbsolutePath());
+		}
+		if (confOption != null) {
+			confLocation = confOption.getOptionValue();
+			System.out
+					.println("[SimpleAxisServer] Using the Axis2 Configuration File"
+							+ new File(confLocation).getAbsolutePath());
+		}
+		
+		try {
+			ConfigurationContext configctx = ConfigurationContextFactory
+					.createConfigurationContextFromFileSystem(repoLocation,
+							confLocation);
+			ListenerManager listenerManager =  new ListenerManager();
+				listenerManager.init(configctx);
+			listenerManager.start();
+			log.info("[SimpleAxisServer] Started");
+		} catch (Throwable t) {
+            log.fatal("[SimpleAxisServer] Shutting down. Error starting SimpleAxisServer", t);
+        }
+    }
+    
+    public static void printUsage() {
+        System.out.println("Usage: SimpleAxisServer -repo <repository>  -conf <axis2 configuration file>");
+        System.out.println();
+        System.exit(1);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportListener.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportListener.java
new file mode 100644
index 0000000..5aa328d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportListener.java
@@ -0,0 +1,50 @@
+/*
+* Copyright 2004,2005 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.axis2.transport;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.TransportInDescription;
+
+/**
+ * Class TransportListener
+ */
+public interface TransportListener {
+
+    public static final String PARAM_PORT = "port";
+    public static final String HOST_ADDRESS="hostname";
+
+    void init(ConfigurationContext axisConf, TransportInDescription transprtIn)
+            throws AxisFault;
+
+    void start() throws AxisFault;
+
+    void stop() throws AxisFault;
+
+    /**
+     * @deprecated Transport listener can expose more than EPRs. So this method should return an array of EPRs.
+     * Deprecating this method for now and please use getEPRsForServices instead.
+     * @param serviceName
+     * @param ip
+     * @throws AxisFault
+     */
+    EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault;
+
+    public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault;
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportSender.java
new file mode 100644
index 0000000..f63a51a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportSender.java
@@ -0,0 +1,51 @@
+/*
+* Copyright 2004,2005 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.axis2.transport;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.Handler;
+
+/**
+ * TransportSender sends the SOAP Message to other SOAP nodes. A TransportSender is responsible for 
+ * writing the SOAP Message to the wire. Out flow must be terminated end with a TransportSender
+ */
+public interface TransportSender extends Handler {
+
+    /**
+     * Clean up
+     *
+     * @param msgContext
+     * @throws org.apache.axis2.AxisFault
+     */
+    public void cleanup(MessageContext msgContext) throws AxisFault;
+
+    /**
+     * Initialize
+     *
+     * @param confContext
+     * @param transportOut
+     * @throws org.apache.axis2.AxisFault
+     */
+    public void init(ConfigurationContext confContext, TransportOutDescription transportOut)
+            throws AxisFault;
+
+    public void stop();
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
new file mode 100644
index 0000000..2c0b6cb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
@@ -0,0 +1,344 @@
+/*
+* Copyright 2004,2005 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.axis2.transport;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.om.impl.MTOMConstants;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.builder.XOPAwareStAXOMBuilder;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.http.HTTPConstants;
+
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PushbackInputStream;
+import java.io.Reader;
+
+public class TransportUtils {
+    private static final int BOM_SIZE = 4;
+
+    public static SOAPEnvelope createSOAPMessage(MessageContext msgContext, String soapNamespaceURI)
+            throws AxisFault {
+        InputStream inStream = (InputStream) msgContext.getProperty(MessageContext.TRANSPORT_IN);
+
+        msgContext.setProperty(MessageContext.TRANSPORT_IN, null);
+
+        // this inputstram is set by the TransportSender represents a two way transport or
+        // by a Transport Recevier
+        if (inStream == null) {
+            throw new AxisFault(Messages.getMessage("inputstreamNull"));
+        }
+
+        return createSOAPMessage(msgContext, inStream, soapNamespaceURI);
+    }
+
+    public static SOAPEnvelope createSOAPMessage(MessageContext msgContext, InputStream inStream,
+                                                  String soapNamespaceURI)
+            throws AxisFault {
+        try {
+            Object contentType ;
+            OperationContext opContext = msgContext.getOperationContext();
+
+            if (opContext != null) {
+                contentType = opContext.getProperty(HTTPConstants.MTOM_RECEIVED_CONTENT_TYPE);
+            } else {
+                throw new AxisFault(Messages.getMessage("cannotBeNullOperationContext"));
+            }
+
+            StAXBuilder builder;
+            SOAPEnvelope envelope ;
+            String charSetEnc =
+                    (String) msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
+
+            if (charSetEnc == null) {
+                charSetEnc = (String) opContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
+            }
+
+            if (charSetEnc == null) {
+                charSetEnc = MessageContext.DEFAULT_CHAR_SET_ENCODING;
+            }
+
+            if (contentType != null) {
+                msgContext.setDoingMTOM(true);
+                builder = selectBuilderForMIME(msgContext, inStream,
+                        (String) contentType,true);
+                envelope = (SOAPEnvelope) builder.getDocumentElement();
+            } else if (msgContext.isDoingREST()) {
+                XMLStreamReader xmlreader =
+                        StAXUtils.createXMLStreamReader(inStream, charSetEnc);
+                SOAPFactory soapFactory = new SOAP11Factory();
+
+                builder = new StAXOMBuilder(xmlreader);
+                builder.setOMBuilderFactory(soapFactory);
+                envelope = soapFactory.getDefaultEnvelope();
+                envelope.getBody().addChild(builder.getDocumentElement());
+                
+                // We now have the message inside an envolope. However, this is 
+                // only an OM; We need to build a SOAP model from it.
+
+                builder = new StAXSOAPModelBuilder(envelope.getXMLStreamReader(), soapNamespaceURI);
+                envelope = (SOAPEnvelope) builder.getDocumentElement();
+            } else {
+                XMLStreamReader xmlreader =
+                        StAXUtils.createXMLStreamReader(inStream, charSetEnc);
+
+                builder = new StAXSOAPModelBuilder(xmlreader, soapNamespaceURI);
+                envelope = (SOAPEnvelope) builder.getDocumentElement();
+            }
+
+            return envelope;
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    /**
+     * Extracts and returns the character set encoding from the
+     * Content-type header
+     * Example:
+     * Content-Type: text/xml; charset=utf-8
+     *
+     * @param contentType
+     */
+    public static String getCharSetEncoding(String contentType) {
+        int index = contentType.indexOf(HTTPConstants.CHAR_SET_ENCODING);
+
+        if (index == -1) {    // Charset encoding not found in the content-type header
+            // Using the default UTF-8
+            return MessageContext.DEFAULT_CHAR_SET_ENCODING;
+        }
+
+        // If there are spaces around the '=' sign
+        int indexOfEq = contentType.indexOf("=", index);
+
+        // There can be situations where "charset" is not the last parameter of the Content-Type header
+        int indexOfSemiColon = contentType.indexOf(";", indexOfEq);
+        String value;
+
+        if (indexOfSemiColon > 0) {
+            value = (contentType.substring(indexOfEq + 1, indexOfSemiColon));
+        } else {
+            value = (contentType.substring(indexOfEq + 1, contentType.length())).trim();
+        }
+
+        // There might be "" around the value - if so remove them
+        if(value.indexOf('\"')!=-1){
+            value = value.replaceAll("\"", "");
+        }
+
+        return value.trim();
+    }
+
+	public static StAXBuilder selectBuilderForMIME(MessageContext msgContext,
+			InputStream inStream, String contentTypeString, boolean isSOAP)
+			throws OMException, XMLStreamException, FactoryConfigurationError {
+		StAXBuilder builder = null;
+
+		Object cacheAttachmentProperty = msgContext
+				.getProperty(Constants.Configuration.CACHE_ATTACHMENTS);
+		String cacheAttachmentString = null;
+		boolean fileCacheForAttachments;
+
+		if (cacheAttachmentProperty != null
+				&& cacheAttachmentProperty instanceof String) {
+			cacheAttachmentString = (String) cacheAttachmentProperty;
+			fileCacheForAttachments = (Constants.VALUE_TRUE
+					.equals(cacheAttachmentString));
+		} else {
+			Parameter parameter_cache_attachment = msgContext
+					.getParameter(Constants.Configuration.CACHE_ATTACHMENTS);
+			cacheAttachmentString = (parameter_cache_attachment != null) ? (String) parameter_cache_attachment
+					.getValue()
+					: null;
+		}
+		fileCacheForAttachments = (Constants.VALUE_TRUE
+				.equals(cacheAttachmentString));
+
+		String attachmentRepoDir = null;
+		String attachmentSizeThreshold = null;
+
+		if (fileCacheForAttachments) {
+			Object attachmentRepoDirProperty = msgContext
+					.getProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR);
+
+			if (attachmentRepoDirProperty != null) {
+				attachmentRepoDir = (String) attachmentRepoDirProperty;
+			} else {
+				Parameter attachmentRepoDirParameter = msgContext
+						.getParameter(Constants.Configuration.ATTACHMENT_TEMP_DIR);
+				attachmentRepoDir = (attachmentRepoDirParameter != null) ? (String) attachmentRepoDirParameter
+						.getValue()
+						: null;
+			}
+
+			Object attachmentSizeThresholdProperty = msgContext
+					.getProperty(Constants.Configuration.FILE_SIZE_THRESHOLD);
+			if (attachmentSizeThresholdProperty != null
+					&& attachmentSizeThresholdProperty instanceof String) {
+				attachmentSizeThreshold = (String) attachmentSizeThresholdProperty;
+			} else {
+				Parameter attachmentSizeThresholdParameter = msgContext
+						.getParameter(Constants.Configuration.FILE_SIZE_THRESHOLD);
+				attachmentSizeThreshold = attachmentSizeThresholdParameter
+						.getValue().toString();
+			}
+		}
+
+		Attachments attachments = new Attachments(inStream, contentTypeString,
+				fileCacheForAttachments, attachmentRepoDir,
+				attachmentSizeThreshold);
+		String charSetEncoding = getCharSetEncoding(attachments
+				.getSOAPPartContentType());
+		XMLStreamReader streamReader;
+
+		if ((charSetEncoding == null)
+				|| "null".equalsIgnoreCase(charSetEncoding)) {
+			charSetEncoding = MessageContext.UTF_8;
+		}
+
+		try {
+			streamReader = StAXUtils.createXMLStreamReader(getReader(
+					attachments.getSOAPPartInputStream(), charSetEncoding));
+		} catch (IOException e) {
+			throw new XMLStreamException(e);
+		}
+
+		msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+				charSetEncoding);
+
+		/*
+		 * Put a reference to Attachments Map in to the message context For
+		 * backword compatibility with Axis2 1.0
+		 */
+		msgContext.setProperty(MTOMConstants.ATTACHMENTS, attachments);
+
+		/*
+		 * Setting the Attachments map to new SwA API
+		 */
+		msgContext.setAttachmentMap(attachments);
+
+		String soapEnvelopeNamespaceURI = null;
+		if (contentTypeString.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
+			soapEnvelopeNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+		} else if (contentTypeString
+				.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
+			soapEnvelopeNamespaceURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+		}
+
+		if (isSOAP) {
+			if (attachments.getAttachmentSpecType().equals(
+					MTOMConstants.MTOM_TYPE)
+					& null != soapEnvelopeNamespaceURI) {
+
+				/*
+				 * Creates the MTOM specific MTOMStAXSOAPModelBuilder
+				 */
+				builder = new MTOMStAXSOAPModelBuilder(streamReader,
+						attachments, soapEnvelopeNamespaceURI);
+
+			} else if (attachments.getAttachmentSpecType().equals(
+					MTOMConstants.SWA_TYPE)
+					& null != soapEnvelopeNamespaceURI) {
+				builder = new StAXSOAPModelBuilder(streamReader,
+						soapEnvelopeNamespaceURI);
+			}
+		}
+		// To handle REST XOP case
+		else {
+			if (attachments.getAttachmentSpecType().equals(
+					MTOMConstants.MTOM_TYPE)) {
+				XOPAwareStAXOMBuilder stAXOMBuilder = new XOPAwareStAXOMBuilder(
+						streamReader, attachments);
+				builder = stAXOMBuilder;
+
+			} else if (attachments.getAttachmentSpecType().equals(
+					MTOMConstants.SWA_TYPE)) {
+				builder = new StAXOMBuilder(streamReader);
+			}
+		}
+
+		return builder;
+	}
+
+    /**
+	 * Use the BOM Mark to identify the encoding to be used. Fall back to
+	 * default encoding specified
+	 * 
+	 * @param is
+	 * @param charSetEncoding
+	 * @throws java.io.IOException
+	 */
+    private static Reader getReader(InputStream is, String charSetEncoding) throws IOException {
+        PushbackInputStream is2 = new PushbackInputStream(is, BOM_SIZE);
+        String encoding;
+        byte bom[] = new byte[BOM_SIZE];
+        int n, unread;
+
+        n = is2.read(bom, 0, bom.length);
+
+        if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) {
+            encoding = "UTF-8";
+            unread = n - 3;
+        } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) {
+            encoding = "UTF-16BE";
+            unread = n - 2;
+        } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) {
+            encoding = "UTF-16LE";
+            unread = n - 2;
+        } else if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE)
+                && (bom[3] == (byte) 0xFF)) {
+            encoding = "UTF-32BE";
+            unread = n - 4;
+        } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00)
+                && (bom[3] == (byte) 0x00)) {
+            encoding = "UTF-32LE";
+            unread = n - 4;
+        } else {
+
+            // Unicode BOM mark not found, unread all bytes
+            encoding = charSetEncoding;
+            unread = n;
+        }
+
+        if (unread > 0) {
+            is2.unread(bom, (n - unread), unread);
+        }
+
+        return new BufferedReader(new InputStreamReader(is2, encoding));
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AbstractAgent.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AbstractAgent.java
new file mode 100644
index 0000000..65830b4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AbstractAgent.java
@@ -0,0 +1,155 @@
+/*
+* Copyright 2004,2006 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.axis2.transport.http;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * The AbstractAgent acts as a simple dispatcher for http requests.
+ * It delegates incoming requests to processXyz methods while Xyz
+ * is the part of the request uri past last /.
+ */
+public class AbstractAgent {
+  protected static final String DEFAULT_INDEX_JSP = "index.jsp";
+
+  private static final String METHOD_PREFIX = "process";
+	private static final Log log = LogFactory.getLog(AbstractAgent.class);
+
+  protected transient Map operationCache = new HashMap();
+  protected transient ConfigurationContext configContext;
+
+  public AbstractAgent(ConfigurationContext aConfigContext) {
+    configContext = aConfigContext;
+    preloadMethods();
+  }
+
+  public void handle(HttpServletRequest httpServletRequest,
+                     HttpServletResponse httpServletResponse)
+    throws IOException, ServletException {
+
+
+    String requestURI = httpServletRequest.getRequestURI();
+
+    String operation;
+    int i = requestURI.lastIndexOf('/');
+    if (i < 0) {
+      processUnknown(httpServletRequest, httpServletResponse);
+      return;
+    } else if (i == requestURI.length() - 1) {
+      processIndex(httpServletRequest, httpServletResponse);
+      return;
+    } else {
+      operation = requestURI.substring(i + 1);
+    }
+
+
+    Method method = (Method) operationCache.get(operation.toLowerCase());
+    if (method != null) {
+      try {
+        method.invoke(this, new Object[]{httpServletRequest, httpServletResponse});
+      } catch (Exception e) {
+        log.warn("Error dispatching request " + requestURI, e);
+        httpServletResponse.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+      }
+    } else {
+      processUnknown(httpServletRequest, httpServletResponse);
+    }
+  }
+
+  /**
+   *
+   * Callback method for index page. Forwards to {@link DEFAULT_INDEX_JSP} by default.
+   *
+   * @param httpServletRequest The incoming request.
+   * @param httpServletResponse The outgoing response.
+   */
+  protected void processIndex(HttpServletRequest httpServletRequest,
+                              HttpServletResponse httpServletResponse) throws IOException, ServletException {
+    renderView(DEFAULT_INDEX_JSP, httpServletRequest, httpServletResponse);
+  }
+
+  /**
+   *
+   * Callback method for unknown/unsupported requests. Returns HTTP Status 404 by default.
+   *
+   * @param httpServletRequest The incoming request.
+   * @param httpServletResponse The outgoing response.
+   */
+
+  protected void processUnknown(HttpServletRequest httpServletRequest,
+                                HttpServletResponse httpServletResponse) throws IOException, ServletException {
+    httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND, httpServletRequest.getRequestURI());
+  }
+
+
+  protected void renderView(String jspName,
+                            HttpServletRequest httpServletRequest,
+                            HttpServletResponse httpServletResponse) throws IOException, ServletException {
+    httpServletRequest.getRequestDispatcher(Constants.AXIS_WEB_CONTENT_ROOT + jspName).include(httpServletRequest, httpServletResponse);
+
+  }
+
+  private void preloadMethods() {
+    Class clazz = getClass();
+    while (clazz != null && !clazz.equals(Object.class)) {
+      examineMethods(clazz.getDeclaredMethods());
+      clazz = clazz.getSuperclass();
+    }
+  }
+
+  private void examineMethods(Method[] aDeclaredMethods) {
+    for (int i = 0; i < aDeclaredMethods.length; i++) {
+      Method method = aDeclaredMethods[i];
+
+      Class[] parameterTypes = method.getParameterTypes();
+      if (
+        (Modifier.isProtected(method.getModifiers()) || Modifier.isPublic(method.getModifiers())) &&
+        method.getName().startsWith(METHOD_PREFIX) &&
+        parameterTypes.length == 2 &&
+        parameterTypes[0].equals(HttpServletRequest.class) &&
+        parameterTypes[1].equals(HttpServletResponse.class)) {
+
+        String key = method.getName().substring(METHOD_PREFIX.length()).toLowerCase();
+
+        // ensure we don't overwrite existing method with superclass method
+        if (!operationCache.containsKey(key)) {
+          operationCache.put(key, method);
+        }
+      }
+    }
+  }
+
+    protected void populateSessionInformation(HttpServletRequest req) {
+        HashMap services = configContext.getAxisConfiguration().getServices();
+        req.getSession().setAttribute(Constants.SERVICE_MAP, services);
+        req.getSession().setAttribute(Constants.SERVICE_PATH, configContext.getServicePath());
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AbstractHTTPSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
new file mode 100644
index 0000000..a9d536f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
@@ -0,0 +1,585 @@
+/*

+* Copyright 2004,2005 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.axis2.transport.http;

+

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.description.TransportOutDescription;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.util.JavaUtils;

+import org.apache.axis2.util.Utils;

+import org.apache.commons.httpclient.*;

+import org.apache.commons.httpclient.auth.AuthScope;

+import org.apache.commons.httpclient.auth.AuthPolicy;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+import java.io.IOException;

+import java.io.InputStream;

+import java.net.MalformedURLException;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.List;

+import java.util.zip.GZIPInputStream;

+

+public abstract class AbstractHTTPSender {

+    protected static final String ANONYMOUS = "anonymous";

+    protected static final String PROXY_HOST_NAME = "proxy_host";

+    protected static final String PROXY_PORT = "proxy_port";

+    protected boolean chunked = false;

+    protected String httpVersion = HTTPConstants.HEADER_PROTOCOL_11;

+    private static final Log log = LogFactory.getLog(AbstractHTTPSender.class);

+    int soTimeout = HTTPConstants.DEFAULT_SO_TIMEOUT;

+

+    /**

+     * proxydiscription

+     */

+    protected TransportOutDescription proxyOutSetting = null;

+    protected OMOutputFormat format = new OMOutputFormat();

+    int connectionTimeout = HTTPConstants.DEFAULT_CONNECTION_TIMEOUT;

+

+    /**

+     * isAllowedRetry will be using to check where the

+     * retry should be allowed or not.

+     */

+    protected boolean isAllowedRetry = false;

+

+    public void setChunked(boolean chunked) {

+        this.chunked = chunked;

+    }

+

+    public void setHttpVersion(String version) throws AxisFault {

+        if (version != null) {

+            if (HTTPConstants.HEADER_PROTOCOL_11.equals(version)) {

+                this.httpVersion = HTTPConstants.HEADER_PROTOCOL_11;

+            } else if (HTTPConstants.HEADER_PROTOCOL_10.equals(version)) {

+                this.httpVersion = HTTPConstants.HEADER_PROTOCOL_10;

+                // chunked is not possible with HTTP/1.0

+                this.chunked = false;

+            } else {

+                throw new AxisFault(

+                        "Parameter " + HTTPConstants.PROTOCOL_VERSION

+                        + " Can have values only HTTP/1.0 or HTTP/1.1");

+            }

+        }

+    }

+

+    /**

+     * Helper method to Proxy and NTLM authentication

+     *

+     * @param client

+     * @param proxySetting

+     * @param config

+     */

+    protected void configProxyAuthentication(HttpClient client,

+                                             TransportOutDescription proxySetting,

+                                             HostConfiguration config,

+                                             MessageContext msgCtx)

+            throws AxisFault {

+        Parameter proxyParam = proxySetting.getParameter(HTTPConstants.PROXY);

+        String usrName;

+        String domain;

+        String passwd;

+        Credentials proxyCred = null;

+        String proxyHostName = null;

+        int proxyPort = -1;

+

+        if (proxyParam != null) {

+            String value = (String) proxyParam.getValue();

+            String split[] = value.split(":");

+

+            // values being hard coded due best practise

+            usrName = split[0];

+            domain = split[1];

+            passwd = split[2];

+

+            OMElement proxyParamElement = proxyParam.getParameterElement();

+            Iterator ite = proxyParamElement.getAllAttributes();

+

+            while (ite.hasNext()) {

+                OMAttribute att = (OMAttribute) ite.next();

+

+                if (att.getLocalName().equalsIgnoreCase(PROXY_HOST_NAME)) {

+                    proxyHostName = att.getAttributeValue();

+                }

+

+                if (att.getLocalName().equalsIgnoreCase(PROXY_PORT)) {

+                    proxyPort = Integer.parseInt(att.getAttributeValue());

+                }

+            }

+

+            if (domain.length() == 0 || domain.equals(ANONYMOUS)) {

+                if (usrName.equals(ANONYMOUS) && passwd.equals(ANONYMOUS)) {

+                    proxyCred = new UsernamePasswordCredentials("", "");

+                } else {

+                    proxyCred = new UsernamePasswordCredentials(usrName,

+                                                                passwd);    // proxy

+                }

+            } else {

+                proxyCred = new NTCredentials(usrName, passwd, proxyHostName,

+                                              domain);    // NTLM authentication with additionals prams

+            }

+        }

+

+        HttpTransportProperties.ProxyProperties proxyProperties =

+                (HttpTransportProperties.ProxyProperties) msgCtx

+                        .getProperty(HTTPConstants.PROXY);

+

+        if (proxyProperties != null) {

+            if (proxyProperties.getProxyPort() != -1) {

+                proxyPort = proxyProperties.getProxyPort();

+            }

+

+            proxyHostName = proxyProperties.getProxyHostName();

+            if (proxyHostName == null

+                || proxyHostName.length() == 0) {

+                throw new AxisFault("Proxy Name is not valid");

+            }

+

+            if (proxyProperties.getUserName().equals(ANONYMOUS)

+                || proxyProperties.getPassWord().equals(ANONYMOUS)) {

+                proxyCred = new UsernamePasswordCredentials("", "");

+            }

+            if (!proxyProperties.getUserName().equals(ANONYMOUS) &&

+                !proxyProperties.getPassWord().equals(ANONYMOUS)) {

+                proxyCred = new UsernamePasswordCredentials(

+                        proxyProperties.getUserName().trim(),

+                        proxyProperties

+                                .getPassWord().trim()); // Basic Authentication

+            }

+            if (!proxyProperties.getDomain().equals(ANONYMOUS)) {

+                if (!proxyProperties.getUserName().equals(ANONYMOUS) &&

+                    !proxyProperties.getPassWord().equals(ANONYMOUS) &&

+                    !proxyProperties.getDomain().equals(ANONYMOUS)) {

+                    proxyCred = new NTCredentials(

+                            proxyProperties.getUserName().trim(),

+                            proxyProperties.getPassWord().trim(), proxyHostName,

+                            proxyProperties

+                                    .getDomain().trim()); // NTLM Authentication

+                }

+            }

+        }

+

+        client.getState().setProxyCredentials(AuthScope.ANY, proxyCred);

+        config.setProxy(proxyHostName, proxyPort);

+    }

+

+    /**

+     * Collect the HTTP header information and set them in the message context

+     *

+     * @param method

+     * @param msgContext

+     */

+    protected void obtainHTTPHeaderInformation(HttpMethodBase method,

+                                               MessageContext msgContext) {

+        Header header =

+                method.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);

+

+        if (header != null) {

+            HeaderElement[] headers = header.getElements();

+

+            for (int i = 0; i < headers.length; i++) {

+                NameValuePair charsetEnc =

+                        headers[i].getParameterByName(

+                                HTTPConstants.CHAR_SET_ENCODING);

+                OperationContext opContext = msgContext.getOperationContext();

+                String name = headers[i].getName();

+                if (name.equalsIgnoreCase(

+                        HTTPConstants.HEADER_ACCEPT_MULTIPART_RELATED)) {

+                    if (opContext != null) {

+                        opContext.setProperty(

+                                HTTPConstants.MTOM_RECEIVED_CONTENT_TYPE,

+                                header.getValue());

+                    }

+                } else if (charsetEnc != null) {

+                    if (opContext != null) {

+                        opContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,

+                                              charsetEnc.getValue());    // change to the value, which is text/xml or application/xml+soap

+                    }

+                }

+            }

+        }

+

+        String sessionCookie = null;

+        // Process old style headers first

+        Header[] cookieHeaders = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE);

+        for (int i = 0; i < cookieHeaders.length; i++) {

+            HeaderElement[] elements = cookieHeaders[i].getElements();

+            for (int e = 0; e < elements.length; e++) {

+                HeaderElement element = elements[e];

+                if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())) {

+                    sessionCookie = element.getValue();

+                }

+            }

+        }

+        // Overwrite old style cookies with new style ones if present

+        cookieHeaders = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE2);

+        for (int i = 0; i < cookieHeaders.length; i++) {

+            HeaderElement[] elements = cookieHeaders[i].getElements();

+            for (int e = 0; e < elements.length; e++) {

+                HeaderElement element = elements[e];

+                if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())) {

+                    sessionCookie = element.getValue();

+                }

+            }

+        }

+

+        if (sessionCookie != null) {

+            msgContext.getServiceContext().setProperty(HTTPConstants.COOKIE_STRING, sessionCookie);

+        }

+    }

+

+    protected void processResponse(HttpMethodBase httpMethod,

+                                   MessageContext msgContext)

+            throws IOException {

+        obtainHTTPHeaderInformation(httpMethod, msgContext);

+

+        InputStream in = httpMethod.getResponseBodyAsStream();

+

+        Header contentEncoding =

+                httpMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_ENCODING);

+        if (contentEncoding != null) {

+            if (contentEncoding.getValue().

+                    equalsIgnoreCase(HTTPConstants.COMPRESSION_GZIP)) {

+                in =

+                        new GZIPInputStream(in);

+            } else {

+                throw new AxisFault("HTTP :"

+                                    + "unsupported content-encoding of '"

+                                    + contentEncoding.getValue()

+                                    + "' found");

+            }

+        }

+

+        if (in == null) {

+            throw new AxisFault(

+                    Messages.getMessage("canNotBeNull", "InputStream"));

+        }

+

+        if (msgContext.getOperationContext() != null) {

+            msgContext.getOperationContext()

+                    .setProperty(MessageContext.TRANSPORT_IN, in);

+        }

+    }

+

+    public abstract void send(MessageContext msgContext, OMElement dataout,

+                              URL url,

+                              String soapActionString)

+            throws MalformedURLException, AxisFault, IOException;

+

+    /**

+     * getting host configuration to support standard http/s, proxy and NTLM support

+     */

+    protected HostConfiguration getHostConfiguration(HttpClient client,

+                                                     MessageContext msgCtx,

+                                                     URL targetURL)

+            throws AxisFault {

+        boolean isHostProxy = isProxyListed(msgCtx);    // list the proxy

+

+        

+        boolean isAuthenticationEnabled = isAuthenticationEnabled(msgCtx);

+        int port = targetURL.getPort();

+

+        if (port == -1) {

+            port = 80;

+        }

+

+        // to see the host is a proxy and in the proxy list - available in axis2.xml

+        HostConfiguration config = new HostConfiguration();

+

+        if (isAuthenticationEnabled) {

+            // premtive authentication Basic or NTLM

+            this.setAuthenticationInfo(client, msgCtx, config, targetURL);

+        }

+

+            // proxy configuration

+        if (!isHostProxy) {

+            config.setHost(targetURL.getHost(), port, targetURL.getProtocol());

+        } else {

+            this.configProxyAuthentication(client, proxyOutSetting, config,

+                                           msgCtx);

+        }

+

+        return config;

+    }

+

+    protected boolean isAuthenticationEnabled(MessageContext msgCtx) {

+        return (msgCtx.getProperty(HTTPConstants.AUTHENTICATE) != null);

+    }

+

+    /*

+    This will handle server Authentication, It could be either NTLM, Digest or Basic Authentication.

+    Apart from that user can change the priory or add a custom authentication scheme.

+    */

+    protected void setAuthenticationInfo(HttpClient agent,

+                                                       MessageContext msgCtx,

+                                                       HostConfiguration config,

+                                                       URL targetURL) throws AxisFault {

+        config.setHost(targetURL.getHost(), targetURL.getPort(),

+                       targetURL.getProtocol());

+

+        HttpTransportProperties.Authenticator authenticator;

+        Object obj = msgCtx.getProperty(HTTPConstants.AUTHENTICATE);

+        if (obj != null) {

+            if (obj instanceof HttpTransportProperties.Authenticator) {

+                authenticator = (HttpTransportProperties.Authenticator) obj;

+

+                String username = authenticator.getUsername();

+                String password = authenticator.getPassword();

+                String host = authenticator.getHost();

+                String domain = authenticator.getDomain();

+

+                int port = authenticator.getPort();

+                String realm = authenticator.getRealm();

+

+                /* If retrying is available set it first */

+                isAllowedRetry = authenticator.isAllowedRetry();

+

+                Credentials creds;

+

+                agent.getParams().setAuthenticationPreemptive(authenticator.getPreemptiveAuthentication());

+

+                if (host != null) {

+                    if (domain != null) {

+                        /*Credentials for NTLM Authentication*/

+                        creds = new NTCredentials(username, password, host, domain);

+                    } else {

+                        /*Credentials for Digest and Basic Authentication*/

+                        creds = new UsernamePasswordCredentials(username, password);

+                    }

+                    agent.getState().setCredentials(new AuthScope(host, port, realm), creds);

+                } else {

+                    /*Credentials only for Digest and Basic Authentication*/

+                    creds = new UsernamePasswordCredentials(username, password);

+                    agent.getState().setCredentials(new AuthScope(AuthScope.ANY), creds);

+                }

+

+                /* Customizing the priority Order */

+                List schemes = authenticator.getAuthSchemes();

+                if (schemes != null && schemes.size() > 0) {

+                    List authPrefs = new ArrayList(3);

+                    for (int i = 0; i < schemes.size(); i++) {

+                        if (schemes.get(i) instanceof AuthPolicy) {

+                            authPrefs.add(schemes.get(i));

+                            continue;

+                        }

+                        String scheme = (String) schemes.get(i);

+                        if (HttpTransportProperties.Authenticator.BASIC.equals(scheme)) {

+                            authPrefs.add(AuthPolicy.BASIC);

+                        } else if (HttpTransportProperties.Authenticator.NTLM.equals(scheme)) {

+                            authPrefs.add(AuthPolicy.NTLM);

+                        } else if (HttpTransportProperties.Authenticator.DIGEST.equals(scheme)) {

+                            authPrefs.add(AuthPolicy.DIGEST);

+                        }

+                    }

+                    agent.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY,

+                                                   authPrefs);

+                }

+

+            } else {

+                throw new AxisFault("HttpTransportProperties.Authenticator class cast exception");

+            }

+        }

+

+    }

+

+    /**

+     * This is used to get the dynamically set time out values from the

+     * message context. If the values are not available or invalid then

+     * teh default values or the values set by teh configuration will be used

+     *

+     * @param msgContext

+     */

+    protected void getTimeoutValues(MessageContext msgContext) {

+        try {

+

+            // If the SO_TIMEOUT of CONNECTION_TIMEOUT is set by dynamically the

+            // override the static config

+            Integer tempSoTimeoutProperty =

+                    (Integer) msgContext.getProperty(HTTPConstants.SO_TIMEOUT);

+            Integer tempConnTimeoutProperty =

+                    (Integer) msgContext

+                            .getProperty(HTTPConstants.CONNECTION_TIMEOUT);

+

+            if (tempSoTimeoutProperty != null) {

+                soTimeout = tempSoTimeoutProperty.intValue();

+            }

+

+            if (tempConnTimeoutProperty != null) {

+                connectionTimeout = tempConnTimeoutProperty.intValue();

+            }

+        } catch (NumberFormatException nfe) {

+

+            // If there's a problem log it and use the default values

+            log.error("Invalid timeout value format: not a number", nfe);

+        }

+    }

+

+    private boolean isProxyListed(MessageContext msgCtx) throws AxisFault {

+        boolean returnValue = false;

+        Parameter par = null;

+

+        proxyOutSetting = msgCtx.getConfigurationContext()

+                .getAxisConfiguration().getTransportOut(

+                new QName(Constants.TRANSPORT_HTTP));

+

+        if (proxyOutSetting != null) {

+            par = proxyOutSetting.getParameter(HTTPConstants.PROXY);

+        }

+

+        OMElement hostElement = null;

+

+        if (par != null) {

+            hostElement = par.getParameterElement();

+        }

+

+        if (hostElement != null) {

+            Iterator ite = hostElement.getAllAttributes();

+

+            while (ite.hasNext()) {

+                OMAttribute attribute = (OMAttribute) ite.next();

+

+                if (attribute.getLocalName().equalsIgnoreCase(PROXY_HOST_NAME)) {

+                    returnValue = true;

+                }

+            }

+        }

+

+        HttpTransportProperties.ProxyProperties proxyProperties;

+

+        if ((proxyProperties =

+                (HttpTransportProperties.ProxyProperties) msgCtx.getProperty(

+                        HTTPConstants.PROXY)) != null) {

+            if (proxyProperties.getProxyHostName() != null) {

+                returnValue = true;

+            }

+        }

+

+        return returnValue;

+    }

+

+    public void setFormat(OMOutputFormat format) {

+        this.format = format;

+    }

+

+    protected HttpClient getHttpClient(MessageContext msgContext) {

+        HttpClient httpClient;

+        Object reuse = msgContext.getOptions().getProperty(HTTPConstants.REUSE_HTTP_CLIENT);

+        if (reuse != null && JavaUtils.isTrueExplicitly(reuse)) {

+            httpClient = (HttpClient) msgContext.getConfigurationContext()

+                    .getProperty(HTTPConstants.CACHED_HTTP_CLIENT);

+            if (httpClient == null) {

+                MultiThreadedHttpConnectionManager connectionManager =

+                        new MultiThreadedHttpConnectionManager();

+                httpClient = new HttpClient(connectionManager);

+                msgContext.getConfigurationContext()

+                        .setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);

+            }

+        } else {

+            httpClient = new HttpClient();

+        }

+

+        // Get the timeout values set in the runtime

+        getTimeoutValues(msgContext);

+

+        // SO_TIMEOUT -- timeout for blocking reads

+        httpClient.getHttpConnectionManager().getParams().setSoTimeout(soTimeout);

+

+        // timeout for initial connection

+        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectionTimeout);

+        return httpClient;

+    }

+

+    protected void executeMethod(HttpClient httpClient, MessageContext msgContext, URL url,

+                                 HttpMethod method) throws IOException {

+        HostConfiguration config = this.getHostConfiguration(httpClient, msgContext, url);

+        msgContext.setProperty(HTTPConstants.HTTP_METHOD, method);

+

+        // set the custom headers, if available

+        addCustomHeaders(method, msgContext);

+

+        // add compression headers if needed

+        if (Utils.isExplicitlyTrue(msgContext, HTTPConstants.MC_ACCEPT_GZIP)) {

+            method.addRequestHeader(HTTPConstants.HEADER_ACCEPT_ENCODING,

+                                    HTTPConstants.COMPRESSION_GZIP);

+        }

+        if (Utils.isExplicitlyTrue(msgContext, HTTPConstants.MC_GZIP_REQUEST)) {

+            method.addRequestHeader(HTTPConstants.HEADER_CONTENT_ENCODING,

+                                    HTTPConstants.COMPRESSION_GZIP);

+        }

+

+

+        httpClient.executeMethod(config, method);

+    }

+

+    public void addCustomHeaders(HttpMethod method, MessageContext msgContext) {

+

+        boolean isCustomUserAgentSet = false;

+        // set the custom headers, if available

+        Object httpHeadersObj = msgContext.getProperty(HTTPConstants.HTTP_HEADERS);

+        if (httpHeadersObj != null && httpHeadersObj instanceof ArrayList) {

+            ArrayList httpHeaders = (ArrayList) httpHeadersObj;

+            Header header;

+            for (int i = 0; i < httpHeaders.size(); i++) {

+                header = (Header) httpHeaders.get(i);

+                if (HTTPConstants.HEADER_USER_AGENT.equals(header.getName())) {

+                    isCustomUserAgentSet = true;

+                }

+                method.addRequestHeader(header);

+            }

+

+        }

+

+        if (!isCustomUserAgentSet) {

+            String userAgentString = getUserAgent(msgContext);

+            method.setRequestHeader(HTTPConstants.HEADER_USER_AGENT, userAgentString);

+        }

+

+    }

+

+    private String getUserAgent(MessageContext messageContext) {

+        String userAgentString = "Axis2";

+        boolean locked = false;

+        if (messageContext.getParameter(HTTPConstants.USER_AGENT) != null) {

+            OMElement userAgentElement =

+                    messageContext.getParameter(HTTPConstants.USER_AGENT).getParameterElement();

+            userAgentString = userAgentElement.getText().trim();

+            OMAttribute lockedAttribute = userAgentElement.getAttribute(new QName("locked"));

+            if (lockedAttribute != null) {

+                if (lockedAttribute.getAttributeValue().equalsIgnoreCase("true")) {

+                    locked = true;

+                }

+            }

+        }

+        // Runtime overing part

+        if (!locked) {

+            if (messageContext.getProperty(HTTPConstants.USER_AGENT) != null) {

+                userAgentString = (String) messageContext.getProperty(HTTPConstants.USER_AGENT);

+            }

+        }

+

+        return userAgentString;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AdminAgent.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AdminAgent.java
new file mode 100644
index 0000000..cac3e19
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AdminAgent.java
@@ -0,0 +1,580 @@
+/*
+* Copyright 2004,2006 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.axis2.transport.http;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.util.PhasesInfo;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.commons.fileupload.DiskFileUpload;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUpload;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.*;
+
+/**
+ * Provides methods to process axis2 admin requests.
+ */
+public class AdminAgent extends AbstractAgent {
+    private static final Log log = LogFactory.getLog(AbstractAgent.class);
+    /**
+     * Field LIST_MULTIPLE_SERVICE_JSP_NAME
+     */
+    private static final String LIST_SERVICE_GROUP_JSP = "ListServiceGroup.jsp";
+    private static final String LIST_SERVICES_JSP_NAME = "listService.jsp";
+    private static final String LIST_SINGLE_SERVICES_JSP_NAME = "listSingleService.jsp";
+    private static final String SELECT_SERVICE_JSP_NAME = "SelectService.jsp";
+    private static final String IN_ACTIVATE_SERVICE_JSP_NAME = "InActivateService.jsp";
+    private static final String ACTIVATE_SERVICE_JSP_NAME = "ActivateService.jsp";
+
+    /**
+     * Field LIST_SINGLE_SERVICE_JSP_NAME
+     */
+    private static final String LIST_PHASES_JSP_NAME = "viewphases.jsp";
+    private static final String LIST_GLOABLLY_ENGAGED_MODULES_JSP_NAME = "globalModules.jsp";
+    private static final String LIST_AVAILABLE_MODULES_JSP_NAME = "listModules.jsp";
+    private static final String ENGAGING_MODULE_TO_SERVICE_JSP_NAME = "engagingtoaservice.jsp";
+    private static final String ENGAGING_MODULE_TO_SERVICE_GROUP_JSP_NAME = "EngageToServiceGroup.jsp";
+    private static final String ENGAGING_MODULE_GLOBALLY_JSP_NAME = "engagingglobally.jsp";
+    public static final String ADMIN_JSP_NAME = "admin.jsp";
+    private static final String VIEW_GLOBAL_HANDLERS_JSP_NAME = "ViewGlobalHandlers.jsp";
+    private static final String VIEW_SERVICE_HANDLERS_JSP_NAME = "ViewServiceHandlers.jsp";
+    private static final String SERVICE_PARA_EDIT_JSP_NAME = "ServiceParaEdit.jsp";
+    private static final String ENGAGE_TO_OPERATION_JSP_NAME = "engagingtoanoperation.jsp";
+    private static final String LOGIN_JSP_NAME = "Login.jsp";
+
+    private File serviceDir;
+
+    public AdminAgent(ConfigurationContext aConfigContext) {
+        super(aConfigContext);
+        try {
+            if (configContext.getAxisConfiguration().getRepository() != null) {
+                File repoDir = new File(configContext.getAxisConfiguration().getRepository().getFile());
+                serviceDir = new File(repoDir, "services");
+                if (!serviceDir.exists()) {
+                    serviceDir.mkdirs();
+                }
+            }
+        } catch (Exception e) {
+            log.info(e);
+        } catch (Throwable e) {
+            log.error(e);
+        }
+    }
+
+    public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
+            throws IOException, ServletException {
+
+        // We forward to login page if axis2 security is enabled
+        // and the user is not authorized
+        // TODO Fix workaround for login test
+        if (axisSecurityEnabled() && authorizationRequired(httpServletRequest)) {
+            renderView(LOGIN_JSP_NAME, httpServletRequest, httpServletResponse);
+        } else {
+            super.handle(httpServletRequest, httpServletResponse);
+        }
+    }
+
+    protected void processIndex(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        renderView(ADMIN_JSP_NAME, req, res);
+    }
+
+    // supported web operations
+
+    protected void processUpload(HttpServletRequest req, HttpServletResponse res)
+    throws IOException, ServletException {
+    	String hasHotDeployment =
+    		(String) configContext.getAxisConfiguration().getParameterValue("hotdeployment");
+    	String hasHotUpdate =
+    		(String) configContext.getAxisConfiguration().getParameterValue("hotupdate");
+    	req.setAttribute("hotDeployment", (hasHotDeployment.equals("true")) ? "enabled"
+    			: "disabled");
+    	req.setAttribute("hotUpdate", (hasHotUpdate.equals("true")) ? "enabled" : "disabled");
+    	boolean isMultipart = FileUpload.isMultipartContent(req);
+    	if (isMultipart) {
+
+    		try {
+    			// Create a new file upload handler
+    			DiskFileUpload upload = new DiskFileUpload();
+
+    			List items = upload.parseRequest(req);
+
+    			// Process the uploaded items
+    			Iterator iter = items.iterator();
+    			while (iter.hasNext()) {
+    				FileItem item = (FileItem) iter.next();
+    				if (!item.isFormField()) {
+
+    					String fileName = item.getName();
+    					String fileExtesion = fileName;
+    					fileExtesion = fileExtesion.toLowerCase();
+    					if (!(fileExtesion.endsWith(".jar") || fileExtesion.endsWith(".aar"))) {
+    						req.setAttribute("status", "failure");
+    						req.setAttribute("cause", "Unsupported file type " + fileExtesion);
+    					} else {
+
+    						String fileNameOnly = "";
+    						if (fileName.indexOf("\\") < 0) {
+    							fileNameOnly =
+    								fileName.substring(fileName.lastIndexOf("/") + 1, fileName
+    										.length());
+    						} else {
+    							fileNameOnly =
+    								fileName.substring(fileName.lastIndexOf("\\") + 1, fileName
+    										.length());
+    						}
+
+    						File uploadedFile = new File(serviceDir, fileNameOnly);
+    						item.write(uploadedFile);
+    						req.setAttribute("status", "success");
+    						req.setAttribute("filename", fileNameOnly);
+    					}
+    				}
+    			}
+    		} catch (Exception e) {
+    			req.setAttribute("status", "failure");
+    			req.setAttribute("cause", e.getMessage());
+
+    		}
+    	}
+    	renderView("upload.jsp", req, res);
+    }
+
+
+    protected void processLogin(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        String username = req.getParameter("userName");
+        String password = req.getParameter("password");
+
+        if ((username == null) || (password == null) || username.trim().length() == 0
+                || password.trim().length() == 0) {
+            req.setAttribute("errorMessage", "Invalid auth credentials!");
+            renderView(LOGIN_JSP_NAME, req, res);
+            return;
+        }
+
+        String adminUserName = (String) configContext.getAxisConfiguration().getParameter(
+                Constants.USER_NAME).getValue();
+        String adminPassword = (String) configContext.getAxisConfiguration().getParameter(
+                Constants.PASSWORD).getValue();
+
+        if (username.equals(adminUserName) && password.equals(adminPassword)) {
+            req.getSession().setAttribute(Constants.LOGGED, "Yes");
+            renderView(ADMIN_JSP_NAME, req, res);
+        } else {
+            req.setAttribute("errorMessage", "Invalid auth credentials!");
+            renderView(LOGIN_JSP_NAME, req, res);
+        }
+    }
+
+    protected void processEditServicePara(HttpServletRequest req, HttpServletResponse res)
+    throws IOException, ServletException {
+    	String serviceName = req.getParameter("axisService");
+    	if (req.getParameter("changePara") != null) {
+    		AxisService service = configContext.getAxisConfiguration().getService(serviceName);
+    		if (service != null) {
+    			ArrayList service_para = service.getParameters();
+
+    			for (int i = 0; i < service_para.size(); i++) {
+    				Parameter parameter = (Parameter) service_para.get(i);
+    				String para = req.getParameter(serviceName + "_" + parameter.getName());
+    				service.addParameter(new Parameter(parameter.getName(), para));
+    			}
+
+    			for (Iterator iterator = service.getOperations(); iterator.hasNext();) {
+    				AxisOperation axisOperation = (AxisOperation) iterator.next();
+    				String op_name = axisOperation.getName().getLocalPart();
+    				ArrayList operation_para = axisOperation.getParameters();
+
+    				for (int i = 0; i < operation_para.size(); i++) {
+    					Parameter parameter = (Parameter) operation_para.get(i);
+    					String para = req.getParameter(op_name + "_" + parameter.getName());
+
+    					axisOperation.addParameter(new Parameter(parameter.getName(), para));
+    				}
+    			}
+    		}
+    		res.setContentType("text/html");
+    		req.setAttribute("status", "Parameters Changed Successfully.");
+    		req.getSession().removeAttribute(Constants.SERVICE);
+    	} else {
+    		AxisService serviceTemp =
+    			configContext.getAxisConfiguration().getServiceForActivation(serviceName);
+    		if (serviceTemp.isActive()) {
+
+    			if (serviceName != null) {
+    				req.getSession().setAttribute(Constants.SERVICE,
+    						configContext.getAxisConfiguration().getService(serviceName));
+    			}
+    		} else {
+    			req.setAttribute("status", "Service " + serviceName + " is not an active service" +
+    			". \n Only parameters of active services can be edited.");
+    		}
+    	}
+    	renderView(SERVICE_PARA_EDIT_JSP_NAME, req, res);
+    }
+
+    private String getBasicHTML(String s) {
+        return "<html>\n" +
+                "<body>\n" +
+                s +
+                "</body>\n" +
+                "</html>";
+    }
+
+
+    protected void processEngagingGlobally(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        HashMap modules = configContext.getAxisConfiguration().getModules();
+
+        req.getSession().setAttribute(Constants.MODULE_MAP, modules);
+
+        String moduleName = req.getParameter("modules");
+
+        req.getSession().setAttribute(Constants.ENGAGE_STATUS, null);
+
+        if (moduleName != null) {
+            try {
+                configContext.getAxisConfiguration().engageModule(new QName(moduleName));
+                req.getSession().setAttribute(Constants.ENGAGE_STATUS,
+                        moduleName + " module engaged globally successfully");
+            } catch (AxisFault axisFault) {
+                req.getSession().setAttribute(Constants.ENGAGE_STATUS, axisFault.getMessage());
+            }
+        }
+
+        req.getSession().setAttribute("modules", null);
+        renderView(ENGAGING_MODULE_GLOBALLY_JSP_NAME, req, res);
+
+    }
+
+    protected void processListOperations(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        HashMap modules = configContext.getAxisConfiguration().getModules();
+
+        req.getSession().setAttribute(Constants.MODULE_MAP, modules);
+
+        String moduleName = req.getParameter("modules");
+
+        req.getSession().setAttribute(Constants.ENGAGE_STATUS, null);
+        req.getSession().setAttribute("modules", null);
+
+        String serviceName = req.getParameter("axisService");
+
+        if (serviceName != null) {
+            req.getSession().setAttribute("service", serviceName);
+        } else {
+            serviceName = (String) req.getSession().getAttribute("service");
+        }
+
+        req.getSession().setAttribute(
+                Constants.OPERATION_MAP,
+                configContext.getAxisConfiguration().getService(serviceName).getOperations());
+        req.getSession().setAttribute(Constants.ENGAGE_STATUS, null);
+
+        String operationName = req.getParameter("axisOperation");
+
+        if ((serviceName != null) && (moduleName != null) && (operationName != null)) {
+            try {
+                AxisOperation od = configContext.getAxisConfiguration().getService(
+                        serviceName).getOperation(new QName(operationName));
+
+                od.engageModule(
+                        configContext.getAxisConfiguration().getModule(new QName(moduleName)),
+                        configContext.getAxisConfiguration());
+                req.getSession().setAttribute(Constants.ENGAGE_STATUS,
+                        moduleName
+                                + " module engaged to the operation successfully");
+            } catch (AxisFault axisFault) {
+                req.getSession().setAttribute(Constants.ENGAGE_STATUS, axisFault.getMessage());
+            }
+        }
+
+        req.getSession().setAttribute("operation", null);
+        renderView(ENGAGE_TO_OPERATION_JSP_NAME, req, res);
+    }
+
+    protected void processEngageToService(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        HashMap modules = configContext.getAxisConfiguration().getModules();
+
+        req.getSession().setAttribute(Constants.MODULE_MAP, modules);
+        populateSessionInformation(req);
+
+        String moduleName = req.getParameter("modules");
+
+        req.getSession().setAttribute(Constants.ENGAGE_STATUS, null);
+        req.getSession().setAttribute("modules", null);
+
+        String serviceName = req.getParameter("axisService");
+
+        req.getSession().setAttribute(Constants.ENGAGE_STATUS, null);
+
+        if ((serviceName != null) && (moduleName != null)) {
+            try {
+                configContext.getAxisConfiguration().getService(serviceName).engageModule(
+                        configContext.getAxisConfiguration().getModule(new QName(moduleName)),
+                        configContext.getAxisConfiguration());
+                req.getSession().setAttribute(Constants.ENGAGE_STATUS,
+                        moduleName
+                                + " module engaged to the service successfully");
+            } catch (AxisFault axisFault) {
+                req.getSession().setAttribute(Constants.ENGAGE_STATUS, axisFault.getMessage());
+            }
+        }
+
+        req.getSession().setAttribute("axisService", null);
+        renderView(ENGAGING_MODULE_TO_SERVICE_JSP_NAME, req, res);
+    }
+
+    protected void processEngageToServiceGroup(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        HashMap modules = configContext.getAxisConfiguration().getModules();
+
+        req.getSession().setAttribute(Constants.MODULE_MAP, modules);
+
+        Iterator services = configContext.getAxisConfiguration().getServiceGroups();
+
+        req.getSession().setAttribute(Constants.SERVICE_GROUP_MAP, services);
+
+        String moduleName = req.getParameter("modules");
+
+        req.getSession().setAttribute(Constants.ENGAGE_STATUS, null);
+        req.getSession().setAttribute("modules", null);
+
+        String serviceName = req.getParameter("axisService");
+
+        req.getSession().setAttribute(Constants.ENGAGE_STATUS, null);
+
+        if ((serviceName != null) && (moduleName != null)) {
+            configContext.getAxisConfiguration().getServiceGroup(serviceName).engageModule(
+                    configContext.getAxisConfiguration().getModule(new QName(moduleName)),
+                    configContext.getAxisConfiguration());
+            req.getSession().setAttribute(Constants.ENGAGE_STATUS,
+                    moduleName
+                            + " module engaged to the service group successfully");
+        }
+
+        req.getSession().setAttribute("axisService", null);
+        renderView(ENGAGING_MODULE_TO_SERVICE_GROUP_JSP_NAME, req, res);
+    }
+
+
+    protected void processLogout(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        req.getSession().invalidate();
+        renderView("index.jsp", req, res);
+    }
+
+    protected void processSelectServiceParaEdit(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        populateSessionInformation(req);
+        req.getSession().setAttribute(Constants.SELECT_SERVICE_TYPE, "SERVICE_PARAMETER");
+        renderView(SELECT_SERVICE_JSP_NAME, req, res);
+    }
+
+    protected void processListOperation(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        populateSessionInformation(req);
+        req.getSession().setAttribute(Constants.SELECT_SERVICE_TYPE, "MODULE");
+
+        renderView(SELECT_SERVICE_JSP_NAME, req, res);
+    }
+
+    protected void processActivateService(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        if (req.getParameter("submit") != null) {
+            String serviceName = req.getParameter("axisService");
+            String turnon = req.getParameter("turnon");
+            if (serviceName != null) {
+                if (turnon != null) {
+                    AxisService service = configContext.getAxisConfiguration().getServiceForActivation(serviceName);
+                    service.setActive(true);
+                }
+            }
+        }
+        populateSessionInformation(req);
+        renderView(ACTIVATE_SERVICE_JSP_NAME, req, res);
+    }
+
+    protected void processDeactivateService(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        if (req.getParameter("submit") != null) {
+            String serviceName = req.getParameter("axisService");
+            String turnoff = req.getParameter("turnoff");
+            if (serviceName != null) {
+                if (turnoff != null) {
+                    AxisService service = configContext.getAxisConfiguration().getService(serviceName);
+                    service.setActive(false);
+                }
+                populateSessionInformation(req);
+            }
+        } else {
+            populateSessionInformation(req);
+        }
+
+        renderView(IN_ACTIVATE_SERVICE_JSP_NAME, req, res);
+    }
+
+
+    protected void processViewGlobalHandlers(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        req.getSession().setAttribute(Constants.GLOBAL_HANDLERS,
+                configContext.getAxisConfiguration());
+
+        renderView(VIEW_GLOBAL_HANDLERS_JSP_NAME, req, res);
+    }
+
+    protected void processViewServiceHandlers(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        String service = req.getParameter("axisService");
+
+        if (service != null) {
+            req.getSession().setAttribute(Constants.SERVICE_HANDLERS,
+                    configContext.getAxisConfiguration().getService(service));
+        }
+
+        renderView(VIEW_SERVICE_HANDLERS_JSP_NAME, req, res);
+    }
+
+
+    protected void processListPhases(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        PhasesInfo info = configContext.getAxisConfiguration().getPhasesInfo();
+        req.getSession().setAttribute(Constants.PHASE_LIST, info);
+        renderView(LIST_PHASES_JSP_NAME, req, res);
+    }
+
+    protected void processListServiceGroups(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        Iterator serviceGroups = configContext.getAxisConfiguration().getServiceGroups();
+        populateSessionInformation(req);
+        req.getSession().setAttribute(Constants.SERVICE_GROUP_MAP, serviceGroups);
+
+        renderView(LIST_SERVICE_GROUP_JSP, req, res);
+    }
+
+    protected void processListService(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        populateSessionInformation(req);
+        req.getSession().setAttribute(Constants.ERROR_SERVICE_MAP,
+                configContext.getAxisConfiguration().getFaultyServices());
+
+        renderView(LIST_SERVICES_JSP_NAME, req, res);
+    }
+
+    protected void processListSingleService(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+    	req.getSession().setAttribute(Constants.IS_FAULTY, ""); //Clearing out any old values.
+        String serviceName = req.getParameter("serviceName");
+        if (serviceName != null) {
+            AxisService service = configContext.getAxisConfiguration().getService(serviceName);
+            req.getSession().setAttribute(Constants.SINGLE_SERVICE, service);
+        }
+        renderView(LIST_SINGLE_SERVICES_JSP_NAME, req, res);
+    }
+
+
+    protected void processListContexts(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        req.getSession().setAttribute(Constants.CONFIG_CONTEXT, configContext);
+        renderView("ViewContexts.jsp", req, res);
+    }
+
+    protected void processglobalModules(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        Collection modules = configContext.getAxisConfiguration().getEngagedModules();
+
+        req.getSession().setAttribute(Constants.MODULE_MAP, modules);
+
+        renderView(LIST_GLOABLLY_ENGAGED_MODULES_JSP_NAME, req, res);
+    }
+
+    protected void processListModules(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        HashMap modules = configContext.getAxisConfiguration().getModules();
+
+        req.getSession().setAttribute(Constants.MODULE_MAP, modules);
+        req.getSession().setAttribute(Constants.ERROR_MODULE_MAP,
+                configContext.getAxisConfiguration().getFaultyModules());
+
+        renderView(LIST_AVAILABLE_MODULES_JSP_NAME, req, res);
+    }
+
+    protected void processdisengageModule(HttpServletRequest req, HttpServletResponse res) 
+    													throws IOException, ServletException {
+        String type = req.getParameter("type");
+        String serviceName = req.getParameter("serviceName");
+        String moduleName = req.getParameter("module");
+        AxisConfiguration axisConfiguration = configContext.getAxisConfiguration();
+        AxisService service = axisConfiguration.getService(serviceName);
+        AxisModule module = axisConfiguration.getModule(new QName(moduleName));
+        if (type.equals("operation")) {
+            if (service.isEngaged(module.getName()) || axisConfiguration.isEngaged(module.getName())) {
+                req.getSession().setAttribute("status", "Can not disengage module " + moduleName + 
+                		". This module is engaged at a higher level.");
+            } else {
+                String opName = req.getParameter("operation");
+                AxisOperation op = service.getOperation(new QName(opName));
+                op.disengageModule(module);
+                req.getSession().setAttribute("status", "Module " + moduleName + " was disengaged from " +
+                		"operation " + opName + " in service " + serviceName + ".");
+            }
+        } else {
+            if (axisConfiguration.isEngaged(module.getName())) {
+                req.getSession().setAttribute("status", "Can not disengage module " + moduleName + ". " +
+                		"This module is engaged at a higher level.");
+            } else {
+                service.disengageModule(axisConfiguration.getModule(new QName(moduleName)));
+                req.getSession().setAttribute("status", "Module " + moduleName + " was disengaged from" +
+                		" service " + serviceName + ".");
+            }
+        }
+        renderView("disengage.jsp", req, res);
+    }
+
+    protected void processSelectService(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        populateSessionInformation(req);
+        req.getSession().setAttribute(Constants.SELECT_SERVICE_TYPE, "VIEW");
+
+        renderView(SELECT_SERVICE_JSP_NAME, req, res);
+    }
+
+
+    private boolean authorizationRequired
+            (HttpServletRequest
+                    httpServletRequest) {
+        return httpServletRequest.getSession().getAttribute(Constants.LOGGED) == null &&
+                !httpServletRequest.getRequestURI().endsWith("login");
+    }
+
+    private boolean axisSecurityEnabled
+            () {
+        Parameter parameter = configContext.getAxisConfiguration().getParameter(Constants.ADMIN_SECURITY_DISABLED);
+        return parameter == null || !"true".equals(parameter.getValue());
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisAdminServlet.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisAdminServlet.java
new file mode 100644
index 0000000..7fcd243
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisAdminServlet.java
@@ -0,0 +1,63 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.Constants;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ *
+ */
+public class AxisAdminServlet extends AxisServlet {
+
+  protected transient AdminAgent agent;
+
+  protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+    doGet(req, res);
+  }
+
+  protected void doGet(HttpServletRequest req,
+                         HttpServletResponse resp) throws ServletException, IOException {
+        try {
+            req.getSession().setAttribute(Constants.SERVICE_PATH, configContext.getServicePath());
+            agent.handle(req, resp);
+        } catch (Exception e) {
+            throw new ServletException(e);
+        }
+    }
+
+    public void init(ServletConfig config) throws ServletException {
+        ServletContext servletContext = config.getServletContext();
+        this.configContext =
+                (ConfigurationContext) servletContext.getAttribute(CONFIGURATION_CONTEXT);
+        servletContext.setAttribute(this.getClass().getName(), this);
+        agent = new AdminAgent(configContext);
+        this.servletConfig = config;
+    }
+
+    public void init() throws ServletException {
+        if (this.servletConfig != null) {
+            init(this.servletConfig);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisRESTServlet.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisRESTServlet.java
new file mode 100644
index 0000000..8e56ebd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisRESTServlet.java
@@ -0,0 +1,98 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.http.util.RESTUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * 
+ */
+public class AxisRESTServlet extends AxisServlet {
+
+    private static final Log log = LogFactory.getLog(AxisRESTServlet.class);
+
+    protected void doGet(HttpServletRequest req,
+                         HttpServletResponse resp) throws ServletException, IOException {
+        if (!disableREST && !disableSeperateEndpointForREST) {
+            MessageContext messageContext = null;
+            try {
+                messageContext = createMessageContext(req, resp);
+                new RESTUtil(configContext).processGetRequest(messageContext,
+                        req,
+                        resp);
+            } catch (Exception e) {
+                log.error(e);
+                if (messageContext != null) {
+                    resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                    handleFault(messageContext, resp.getOutputStream(), new AxisFault(e));
+                } else {
+                    throw new ServletException(e);
+                }
+            }
+        }
+    }
+
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+            throws ServletException, IOException {
+        if (!disableREST && !disableSeperateEndpointForREST) {
+            MessageContext messageContext = null;
+            try {
+                messageContext = createMessageContext(req, resp);
+                new RESTUtil(configContext).processPostRequest(messageContext,
+                        req,
+                        resp);
+            } catch (Exception e) {
+                log.error(e);
+                if (messageContext != null) {
+                    resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                    handleFault(messageContext, resp.getOutputStream(), new AxisFault(e));
+                } else {
+                    throw new ServletException(e);
+                }
+            }
+        }
+    }
+
+    public void init(ServletConfig config) throws ServletException {
+        ServletContext servletContext = config.getServletContext();
+        this.configContext =
+                (ConfigurationContext) servletContext.getAttribute(CONFIGURATION_CONTEXT);
+        servletContext.setAttribute(this.getClass().getName(), this);
+        this.servletConfig = config;
+
+        axisConfiguration = configContext.getAxisConfiguration();
+
+        initParams();
+    }
+
+    public void init() throws ServletException {
+        if (this.servletConfig != null) {
+            init(this.servletConfig);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
new file mode 100644
index 0000000..5c1c312
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
@@ -0,0 +1,571 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingHelper;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.SessionContext;
+import org.apache.axis2.deployment.WarBasedAxisConfigurator;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.RequestResponseTransport;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.transport.http.server.HttpUtils;
+import org.apache.axis2.transport.http.util.RESTUtil;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.UUIDGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.namespace.QName;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.net.SocketException;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Class AxisServlet
+ */
+public class AxisServlet extends HttpServlet implements TransportListener {
+
+    private static final Log log = LogFactory.getLog(AxisServlet.class);
+    private static final long serialVersionUID = -2085869393709833372L;
+    public static final String CONFIGURATION_CONTEXT = "CONFIGURATION_CONTEXT";
+    public static final String SESSION_ID = "SessionId";
+    protected transient ConfigurationContext configContext;
+    protected transient AxisConfiguration axisConfiguration;
+
+    protected transient ServletConfig servletConfig;
+
+    private transient ListingAgent agent;
+    private String contextRoot = null;
+
+    protected boolean enableRESTInAxis2MainServlet = false;
+    protected boolean disableREST = false;
+    protected boolean disableSeperateEndpointForREST = false;
+    private static final String LIST_SERVICES_SUFIX = "/services/listServices";
+    private static final String LIST_FAUKT_SERVICES_SUFIX = "/services/ListFaultyServices";
+    private boolean closeReader = true;
+
+    protected MessageContext
+    createAndSetInitialParamsToMsgCtxt(HttpServletResponse resp,
+                                       HttpServletRequest req) throws AxisFault {
+        MessageContext msgContext = new MessageContext();
+        if (axisConfiguration.isManageTransportSession()) {
+            // We need to create this only if transport session is enabled.
+            Object sessionContext = getSessionContext(req);
+            msgContext.setSessionContext((SessionContext) sessionContext);
+            msgContext.setProperty(SESSION_ID, req.getSession().getId());
+        }
+
+        msgContext.setConfigurationContext(configContext);
+        msgContext.setTransportIn(axisConfiguration.getTransportIn(new QName(Constants
+                .TRANSPORT_HTTP)));
+        msgContext.setTransportOut(axisConfiguration.getTransportOut(new QName(Constants.TRANSPORT_HTTP)));
+
+        msgContext.setProperty(Constants.OUT_TRANSPORT_INFO,
+                new ServletBasedOutTransportInfo(resp));
+        msgContext.setProperty(RequestResponseTransport.TRANSPORT_CONTROL,
+                               new ServletRequestResponseTransport(resp));
+        msgContext.setProperty(MessageContext.REMOTE_ADDR, req.getRemoteAddr());
+        msgContext.setFrom(new EndpointReference(req.getRemoteAddr()));
+        msgContext.setProperty(MessageContext.TRANSPORT_HEADERS,
+                getTransportHeaders(req));
+        msgContext.setProperty(Constants.Configuration.TRANSPORT_IN_URL, req.getRequestURL().toString());
+        msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
+        msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST, req);
+//        msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT, servletConfig.getServletContext());
+        return msgContext;
+    }
+
+    public void destroy() {
+        super.destroy();
+        //stoping listner manager
+        try {
+            configContext.getListenerManager().stop();
+        } catch (AxisFault axisFault) {
+            log.info(axisFault.getMessage());
+        }
+
+    }
+
+    /**
+     * Set the context root if it is not set already.
+     *
+     * @param req
+     */
+    public void initContextRoot(HttpServletRequest req) {
+        boolean findContext = true;
+        String findContextParameter = servletConfig.getInitParameter("axis2.find.context");
+        if (findContextParameter != null) {
+            findContextParameter = findContextParameter.trim();
+            findContext = JavaUtils.isTrue(findContextParameter);
+        }
+        if(!findContext) {
+            if (contextRoot == null) {
+                contextRoot = configContext.getContextRoot();
+            }
+        }
+        if (contextRoot == null || "".equals(contextRoot)) {
+            String[] parts = JavaUtils.split(req.getContextPath(), '/');
+            if (parts != null) {
+                for (int i = 0; i < parts.length; i++) {
+                    if (parts[i].length() > 0) {
+                        contextRoot = parts[i];
+                        break;
+                    }
+                }
+            }
+            if (contextRoot == null || req.getContextPath().equals("/")) {
+                contextRoot = "/";
+            }
+            configContext.setContextRoot(contextRoot);
+        }
+    }
+
+    /*
+    * (non-Javadoc)
+    * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+    */
+
+
+    protected void doGet(HttpServletRequest req,
+                         HttpServletResponse resp) throws ServletException, IOException {
+
+        initContextRoot(req);
+
+        // this method is also used to serve for the listServices request.
+
+        String requestURI = req.getRequestURI();
+        String query = req.getQueryString();
+
+        // There can be three different request coming to this.
+        // 1. wsdl, wsdl2 and xsd requests
+        // 2. list services requests
+        // 3. REST requests.
+        if ((query != null) && (query.indexOf("wsdl2") >= 0 ||
+                query.indexOf("wsdl") >= 0 || query.indexOf("xsd") >= 0 || query.indexOf("policy") >= 0)) { // handling meta data exchange stuff
+            agent.processListService(req, resp);
+        } else
+        if (requestURI.endsWith(LIST_SERVICES_SUFIX) || requestURI.endsWith(LIST_FAUKT_SERVICES_SUFIX)) { // handling list services request
+            try {
+                agent.handle(req, resp);
+            } catch (Exception e) {
+                throw new ServletException(e);
+            }
+        } else
+        if (!disableREST && enableRESTInAxis2MainServlet) { // if the main servlet should handle REST also
+            MessageContext messageContext = null;
+            try {
+                messageContext = createMessageContext(req, resp);
+                new RESTUtil(configContext).processGetRequest(messageContext,
+                        req,
+                        resp);
+            } catch (Exception e) {
+                log.error(e);
+                if (messageContext != null) {
+                    resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                    handleFault(messageContext, resp.getOutputStream(), new AxisFault(e));
+                } else {
+                    throw new ServletException(e);
+                }
+            }
+        } else {
+            PrintWriter writer = new PrintWriter(resp.getOutputStream());
+            writer.println("<html><body><h2>Please enable REST support in WEB-INF/conf/axis2.xml and WEB-INF/web.xml</h2></body></html>");
+            writer.flush();
+            resp.setStatus(HttpServletResponse.SC_ACCEPTED);
+        }
+    }
+
+    /**
+     * Method doPost
+     *
+     * @param req
+     * @param res
+     * @throws ServletException
+     * @throws IOException
+     */
+    protected void doPost(HttpServletRequest req, HttpServletResponse res)
+            throws ServletException, IOException {
+
+        initContextRoot(req);
+
+        MessageContext msgContext;
+        OutputStream out = res.getOutputStream();
+
+        if (!disableREST && enableRESTInAxis2MainServlet && isRESTRequest(req)) {
+            msgContext = createMessageContext(req, res);
+            try {
+                new RESTUtil(configContext).processPostRequest(msgContext,
+                        req,
+                        res);
+            } catch (Exception e) {
+                log.error(e);
+                if (msgContext != null) {
+                    res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                    handleFault(msgContext, out, new AxisFault(e));
+                } else {
+                    throw new ServletException(e);
+                }
+            }
+        } else {
+            msgContext = createAndSetInitialParamsToMsgCtxt(res, req);
+
+            try {
+                // adding ServletContext into msgContext;
+                out = res.getOutputStream();
+                HTTPTransportUtils.processHTTPPostRequest(msgContext, req.getInputStream(), out,
+                        req.getContentType(), req.getHeader(HTTPConstants.HEADER_SOAP_ACTION),
+                        req.getRequestURL().toString());
+
+                Object contextWritten =
+                        msgContext.getOperationContext().getProperty(Constants.RESPONSE_WRITTEN);
+
+                res.setContentType("text/xml; charset="
+                        + msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING));
+
+                if ((contextWritten == null) || !Constants.VALUE_TRUE.equals(contextWritten)) {
+                    res.setStatus(HttpServletResponse.SC_ACCEPTED);
+                }
+            } catch (AxisFault e) {
+                log.debug(e);
+                if (msgContext != null) {
+                    try {
+                        // If the fault is not going along the back channel we should be 202ing
+                        if (AddressingHelper.isFaultRedirected(msgContext)) {
+                            res.setStatus(HttpServletResponse.SC_ACCEPTED);
+                        } else {
+                            res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                        }
+                        handleFault(msgContext, out, e);
+                    } catch (AxisFault e2) {
+                        log.info(e2);
+                    }
+                } else {
+                    throw new ServletException(e);
+                }
+            } catch (Throwable t) {
+                log.error(t);
+                if (msgContext != null) {
+                    try {
+                        // If the fault is not going along the back channel we should be 202ing
+                        if (AddressingHelper.isFaultRedirected(msgContext)) {
+                            res.setStatus(HttpServletResponse.SC_ACCEPTED);
+                        } else {
+                            res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                        }
+                        handleFault(msgContext, out, new AxisFault(t.toString(), t));
+                    } catch (AxisFault e2) {
+                        log.info(e2);
+                    }
+                } else {
+                    throw new ServletException(t);
+                }
+            }
+        }
+        if(closeReader){
+            try {
+                ((StAXBuilder)msgContext.getEnvelope().getBuilder()).close();
+            } catch (Exception e){
+                log.debug(e);
+            }
+        }
+    }
+
+    protected void handleFault(MessageContext msgContext, OutputStream out, AxisFault e)
+            throws AxisFault {
+        msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
+
+        AxisEngine engine = new AxisEngine(configContext);
+        MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+
+        engine.sendFault(faultContext);
+    }
+
+    /**
+     * Method init
+     *
+     * @param config
+     * @throws ServletException
+     */
+    public void init(ServletConfig config) throws ServletException {
+        try {
+            this.servletConfig = config;
+            configContext = initConfigContext(config);
+
+            axisConfiguration = configContext.getAxisConfiguration();
+            config.getServletContext().setAttribute(CONFIGURATION_CONTEXT, configContext);
+
+            ListenerManager listenerManager = new ListenerManager();
+            listenerManager.init(configContext);
+            TransportInDescription transportInDescription = new TransportInDescription(
+                    new QName(Constants.TRANSPORT_HTTP));
+            transportInDescription.setReceiver(this);
+            listenerManager.addListener(transportInDescription, true);
+            ListenerManager.defaultConfigurationContext = configContext;
+            agent = new ListingAgent(configContext);
+
+            initParams();
+
+        } catch (Exception e) {
+            throw new ServletException(e);
+        }
+    }
+
+    protected void initParams() {
+        // do we need to enable REST in the main servlet so that it handles both REST and SOAP messages
+        Parameter parameter = axisConfiguration.getParameter(Constants.Configuration.ENABLE_REST_IN_AXIS2_MAIN_SERVLET);
+        if (parameter != null) {
+            enableRESTInAxis2MainServlet = !JavaUtils.isFalseExplicitly(parameter.getValue());
+        }
+
+        // do we need to completely disable REST support
+        parameter = axisConfiguration.getParameter(Constants.Configuration.DISABLE_REST);
+        if (parameter != null) {
+            disableREST = !JavaUtils.isFalseExplicitly(parameter.getValue());
+        }
+
+        // Do we need to have a separate endpoint for REST
+        parameter = axisConfiguration.getParameter(Constants.Configuration.DISABLE_SEPARATE_ENDPOINT_FOR_REST);
+        if (parameter != null) {
+            disableSeperateEndpointForREST = !JavaUtils.isFalseExplicitly(parameter.getValue());
+        }
+
+        // Should we close the reader(s)
+        parameter = axisConfiguration.getParameter("axis2.close.reader");
+        if (parameter != null) {
+            closeReader = JavaUtils.isTrueExplicitly(parameter.getValue());
+        }
+    }
+
+    public void init() throws ServletException {
+        if (this.servletConfig != null) {
+            init(this.servletConfig);
+        }
+    }
+
+    /**
+     * Initialize the Axis configuration context
+     *
+     * @param config Servlet configuration
+     * @throws ServletException
+     */
+    protected ConfigurationContext initConfigContext(ServletConfig config) throws ServletException {
+        try {
+            ConfigurationContext configContext =
+                    ConfigurationContextFactory.createConfigurationContext(new WarBasedAxisConfigurator(config));
+            configContext.setProperty(Constants.CONTAINER_MANAGED, Constants.VALUE_TRUE);
+            return configContext;
+        } catch (Exception e) {
+            throw new ServletException(e);
+        }
+    }
+
+    protected HashMap getHTTPParameters(HttpServletRequest httpServletRequest) {
+        HashMap map = new HashMap();
+        Enumeration enu = httpServletRequest.getParameterNames();
+
+        while (enu.hasMoreElements()) {
+            String name = (String) enu.nextElement();
+            String value = httpServletRequest.getParameter(name);
+
+            map.put(name, value);
+        }
+
+        return map;
+    }
+
+    protected Object getSessionContext(HttpServletRequest httpServletRequest) {
+        Object sessionContext =
+                httpServletRequest.getSession(true).getAttribute(Constants.SESSION_CONTEXT_PROPERTY);
+        if (sessionContext == null) {
+            sessionContext = new SessionContext(null);
+            httpServletRequest.getSession().setAttribute(Constants.SESSION_CONTEXT_PROPERTY,
+                    sessionContext);
+        }
+        return sessionContext;
+    }
+
+    protected Map getTransportHeaders(HttpServletRequest req) {
+        return new TransportHeaders(req);
+    }
+
+    /**
+     * To initilze as TransportListener , not as Servlet
+     *
+     * @param axisConf
+     * @param transprtIn
+     * @throws AxisFault
+     */
+    public void init(ConfigurationContext axisConf,
+                     TransportInDescription transprtIn) throws AxisFault {
+        // no need to do anything :)
+    }
+
+    public void start() throws AxisFault {
+        // no need to do anything :) , it is already started
+    }
+
+    public void stop() throws AxisFault {
+        // no one call thie method
+    }
+
+    public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
+        return getEPRsForService(serviceName, ip)[0];
+    }
+
+    public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
+        //RUNNING_PORT
+        String port = (String) configContext.getProperty(ListingAgent.RUNNING_PORT);
+        if (port == null) {
+            port = "8080";
+        }
+        if (ip == null) {
+            try {
+                ip = HttpUtils.getIpAddress();
+                if (ip == null) {
+                    ip = "localhost";
+                }
+            } catch (SocketException e) {
+                throw new AxisFault(e);
+            }
+        }
+
+
+        EndpointReference soapEndpoint = new EndpointReference("http://" + ip + ":" + port + '/' +
+                configContext.getServiceContextPath() + "/" + serviceName);
+
+        if (!disableREST && !disableSeperateEndpointForREST) {
+            EndpointReference restEndpoint = new EndpointReference("http://" + ip + ":" + port + '/' +
+                    configContext.getRESTContextPath() + "/" + serviceName);
+            return new EndpointReference[]{soapEndpoint, restEndpoint};
+        } else {
+            return new EndpointReference[]{soapEndpoint};
+        }
+
+    }
+
+    protected MessageContext createMessageContext(HttpServletRequest req,
+                                                  HttpServletResponse resp) throws IOException {
+        MessageContext msgContext = new MessageContext();
+        String trsPrefix = req.getRequestURL().toString();
+        int sepindex = trsPrefix.indexOf(':');
+        if (sepindex >= 0) {
+            trsPrefix = trsPrefix.substring(0, sepindex);
+            msgContext.setIncomingTransportName(trsPrefix);
+        } else {
+            msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
+        }
+        msgContext.setConfigurationContext(configContext);
+        msgContext.setTransportIn(configContext.getAxisConfiguration().
+                getTransportIn(new QName(Constants.TRANSPORT_HTTP)));
+        TransportOutDescription transportOut =
+                configContext.getAxisConfiguration().getTransportOut(
+                        new QName(Constants.TRANSPORT_HTTP));
+        msgContext.setTransportOut(transportOut);
+        msgContext.setServerSide(true);
+
+        String requestURI = req.getRequestURI();
+        if (requestURI.indexOf("rest") != -1) {
+            requestURI = requestURI.replaceFirst("rest", configContext.getServiceContextPath());
+        }
+        msgContext.setTo(new EndpointReference(requestURI));
+        msgContext.setFrom(new EndpointReference(req.getRemoteAddr()));
+        msgContext.setProperty(MessageContext.REMOTE_ADDR, req.getRemoteAddr());
+        msgContext.setProperty(Constants.OUT_TRANSPORT_INFO,
+                new ServletBasedOutTransportInfo(resp));
+//        msgContext.setProperty(MessageContext.TRANSPORT_OUT, resp.getOutputStream());
+
+        // set the transport Headers
+        msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, getHeaders(req));
+        msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
+        msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST, req);
+        return msgContext;
+    }
+
+    protected Map getHeaders(HttpServletRequest request) {
+        HashMap headerMap = new HashMap();
+        Enumeration e = request.getAttributeNames();
+        while (e.hasMoreElements()) {
+            String field = (String) e.nextElement();
+            headerMap.put(field, request.getAttribute(field));
+        }
+        return headerMap;
+    }
+
+    /**
+     * Lets only handle
+     * - text/xml
+     * - application/x-www-form-urlencoded
+     * as REST content types in this servlet.
+     *
+     * @param request
+     */
+    private boolean isRESTRequest(HttpServletRequest request) {
+        String contentType = request.getContentType();
+        String soapActionHeader = request.getHeader(HTTPConstants.HEADER_SOAP_ACTION);
+
+        return ((soapActionHeader == null) ||
+                (contentType != null && contentType.indexOf(HTTPConstants.MEDIA_TYPE_X_WWW_FORM) > -1));
+    }
+    
+    class ServletRequestResponseTransport implements RequestResponseTransport
+    {
+      private HttpServletResponse response;
+      
+      ServletRequestResponseTransport(HttpServletResponse response)
+      {
+        this.response = response;
+      }
+      
+      public void acknowledgeMessage(MessageContext msgContext) throws AxisFault
+      {
+        response.setContentType("text/xml; charset="
+                                + msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING));
+        
+        response.setStatus(HttpServletResponse.SC_ACCEPTED);
+        try
+        {
+          response.flushBuffer();
+        }
+        catch (IOException e)
+        {
+          throw new AxisFault("Error sending acknowledgement", e);
+        }
+      }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
new file mode 100644
index 0000000..9ead241
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
@@ -0,0 +1,354 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.impl.MIMEOutputUtils;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.transport.OutTransportInfo;
+import org.apache.axis2.transport.TransportSender;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamException;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+public class CommonsHTTPTransportSender extends AbstractHandler implements TransportSender {
+
+    protected static final String PROXY_HOST_NAME = "proxy_host";
+    protected static final String PROXY_PORT = "proxy_port";
+    int soTimeout = HTTPConstants.DEFAULT_SO_TIMEOUT;
+
+    /**
+     * proxydiscription
+     */
+    protected TransportOutDescription proxyOutSetting = null;
+    private static final Log log = LogFactory.getLog(CommonsHTTPTransportSender.class);
+    protected String httpVersion = HTTPConstants.HEADER_PROTOCOL_11;
+
+    private boolean chunked = false;
+
+    int connectionTimeout = HTTPConstants.DEFAULT_CONNECTION_TIMEOUT;
+
+    public CommonsHTTPTransportSender() {
+    }
+
+    public void cleanup(MessageContext msgContext) throws AxisFault {
+        HttpMethod httpMethod =
+                (HttpMethod) msgContext.getProperty(HTTPConstants.HTTP_METHOD);
+
+        if (httpMethod != null) {
+            httpMethod.releaseConnection();
+        }
+    }
+
+    public void init(ConfigurationContext confContext,
+                     TransportOutDescription transportOut)
+            throws AxisFault {
+
+        // <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter> or
+        // <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter> is
+        // checked
+        Parameter version =
+                transportOut.getParameter(HTTPConstants.PROTOCOL_VERSION);
+
+        if (version != null) {
+            if (HTTPConstants.HEADER_PROTOCOL_11.equals(version.getValue())) {
+                httpVersion = HTTPConstants.HEADER_PROTOCOL_11;
+
+                Parameter transferEncoding =
+                        transportOut.getParameter(
+                                HTTPConstants.HEADER_TRANSFER_ENCODING);
+
+                if ((transferEncoding != null)
+                        &&
+                        HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED.equals(
+                                transferEncoding.getValue())) {
+                    chunked = true;
+                }
+            } else if (HTTPConstants.HEADER_PROTOCOL_10.equals(version.getValue())) {
+                httpVersion = HTTPConstants.HEADER_PROTOCOL_10;
+            } else {
+                throw new AxisFault(
+                        "Parameter " + HTTPConstants.PROTOCOL_VERSION
+                                + " Can have values only HTTP/1.0 or HTTP/1.1");
+            }
+        }
+
+        // Get the timeout values from the configuration
+        try {
+            Parameter tempSoTimeoutParam =
+                    transportOut.getParameter(HTTPConstants.SO_TIMEOUT);
+            Parameter tempConnTimeoutParam =
+                    transportOut.getParameter(HTTPConstants.CONNECTION_TIMEOUT);
+
+            if (tempSoTimeoutParam != null) {
+                soTimeout = Integer.parseInt(
+                        (String) tempSoTimeoutParam.getValue());
+            }
+
+            if (tempConnTimeoutParam != null) {
+                connectionTimeout = Integer.parseInt(
+                        (String) tempConnTimeoutParam.getValue());
+            }
+        } catch (NumberFormatException nfe) {
+
+            // If there's a problem log it and use the default values
+            log.error("Invalid timeout value format: not a number", nfe);
+        }
+    }
+
+    public void stop() {
+        // Any code that , need to invoke when sender stop
+    }
+
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        try {
+            OMOutputFormat format = new OMOutputFormat();
+            String charSetEnc =
+                    (String) msgContext
+                            .getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
+
+            if (charSetEnc != null) {
+                format.setCharSetEncoding(charSetEnc);
+            } else {
+                OperationContext opctx = msgContext.getOperationContext();
+
+                if (opctx != null) {
+                    charSetEnc = (String) opctx
+                            .getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
+                }
+            }
+
+            /**
+             * If the char set enc is still not found use the default
+             */
+            if (charSetEnc == null) {
+                charSetEnc = MessageContext.DEFAULT_CHAR_SET_ENCODING;
+            }
+
+            msgContext.setDoingMTOM(HTTPTransportUtils.doWriteMTOM(msgContext));
+            msgContext.setDoingSwA(HTTPTransportUtils.doWriteSwA(msgContext));
+            msgContext.setDoingREST(HTTPTransportUtils.isDoingREST(msgContext));
+            format.setSOAP11(msgContext.isSOAP11());
+            format.setDoOptimize(msgContext.isDoingMTOM());
+            format.setDoingSWA(msgContext.isDoingSwA());
+            format.setCharSetEncoding(charSetEnc);
+
+            // Trasnport URL can be different from the WSA-To. So processing
+            // that now.
+            EndpointReference epr = null;
+            String transportURL =
+                    (String) msgContext
+                            .getProperty(Constants.Configuration.TRANSPORT_URL);
+
+            if (transportURL != null) {
+                epr = new EndpointReference(transportURL);
+            } else if (msgContext.getTo() != null && !msgContext.getTo().hasAnonymousAddress()) {
+                epr = msgContext.getTo();
+            }
+
+            // Check for the REST behaviour, if you desire rest beahaviour
+            // put a <parameter name="doREST" value="true"/> at the
+            // server.xml/client.xml file
+            // ######################################################
+            // Change this place to change the wsa:toepr
+            // epr = something
+            // ######################################################
+            OMElement dataOut;
+
+            /**
+             * Figuringout the REST properties/parameters
+             */
+            if (msgContext.isDoingREST()) {
+                dataOut = msgContext.getEnvelope().getBody().getFirstElement();
+            } else {
+                dataOut = msgContext.getEnvelope();
+            }
+
+            if (epr != null) {
+                if (!epr.hasNoneAddress()) {
+                    writeMessageWithCommons(msgContext, epr, dataOut, format);
+                }
+            } else {
+                if (msgContext.getProperty(MessageContext.TRANSPORT_OUT) != null) {
+                    sendUsingOutputStream(msgContext, format, dataOut);
+                } else {
+                    throw new AxisFault("Both the TO and Property MessageContext.TRANSPORT_OUT is Null, No where to send");
+                }
+            }
+
+            if (msgContext.getOperationContext() != null) {
+                msgContext.getOperationContext()
+                        .setProperty(Constants.RESPONSE_WRITTEN,
+                                Constants.VALUE_TRUE);
+            }
+        } catch (XMLStreamException e) {
+            log.debug(e);
+            throw new AxisFault(e);
+        } catch (FactoryConfigurationError e) {
+            log.debug(e);
+            throw new AxisFault(e);
+        } catch (IOException e) {
+            log.debug(e);
+            throw new AxisFault(e);
+        }
+        return InvocationResponse.CONTINUE;
+    }
+
+    private void sendUsingOutputStream(MessageContext msgContext,
+                                       OMOutputFormat format,
+                                       OMElement dataOut) throws AxisFault, XMLStreamException {
+        OutputStream out =
+                (OutputStream) msgContext
+                        .getProperty(MessageContext.TRANSPORT_OUT);
+
+        if (msgContext.isServerSide()) {
+            OutTransportInfo transportInfo =
+                    (OutTransportInfo) msgContext
+                            .getProperty(Constants.OUT_TRANSPORT_INFO);
+
+            if (transportInfo != null) {
+                String contentType;
+
+                Object contentTypeObject = msgContext.getProperty(Constants.Configuration.CONTENT_TYPE);
+                if (contentTypeObject != null) {
+                    contentType = (String) contentTypeObject;
+                } else if (msgContext.isDoingREST() && !(format.isOptimized())) {
+                    contentType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
+                } else {
+                    contentType = format.getContentType();
+                    format.setSOAP11(msgContext.isSOAP11());
+                }
+
+
+                String encoding = contentType + "; charset="
+                        + format.getCharSetEncoding();
+
+                transportInfo.setContentType(encoding);
+            } else {
+                throw new AxisFault(Constants.OUT_TRANSPORT_INFO +
+                        " has not been set");
+            }
+        }
+
+        format.setDoOptimize(msgContext.isDoingMTOM());
+        format.setDoingSWA(msgContext.isDoingSwA());
+        format.setAutoCloseWriter(true);
+        if (!(msgContext.isDoingMTOM()) & (msgContext.isDoingSwA())
+                & !(msgContext.isDoingREST())) {
+            StringWriter bufferedSOAPBody = new StringWriter();
+            dataOut.serializeAndConsume(bufferedSOAPBody, format);
+            MIMEOutputUtils.writeSOAPWithAttachmentsMessage(bufferedSOAPBody,
+                    out, msgContext.getAttachmentMap(), format);
+        } else {
+            dataOut.serializeAndConsume(out, format);
+        }
+    }
+
+    public void writeMessageWithCommons(MessageContext messageContext,
+                                        EndpointReference toEPR,
+                                        OMElement dataout,
+                                        OMOutputFormat format)
+            throws AxisFault {
+        try {
+            URL url = new URL(toEPR.getAddress());
+
+            String soapActionString = "\"\"";
+
+            Object disableSoapAction =
+                    messageContext.getOptions().getProperty(Constants.Configuration.DISABLE_SOAP_ACTION);
+
+            if (!JavaUtils.isTrueExplicitly(disableSoapAction)) {
+                // first try to get the SOAP action from message context
+                soapActionString = messageContext.getSoapAction();
+                if ((soapActionString == null) || (soapActionString.length() == 0)) {
+                    // now let's try to get WSA action
+                    soapActionString = messageContext.getWSAAction();
+                    if (messageContext.getAxisOperation() != null && ((soapActionString == null) || (soapActionString.length() == 0))) {
+                        // last option is to get it from the axis operation
+                        soapActionString = messageContext.getAxisOperation().getSoapAction();
+                    }
+                }
+
+            }
+
+
+            if (soapActionString == null) {
+                soapActionString = "\"\"";
+            }
+
+            // select the Message Sender depending on the REST status
+            AbstractHTTPSender sender;
+
+            if (!messageContext.isDoingREST()) {
+                sender = new SOAPOverHTTPSender();
+            } else {
+                sender = new RESTSender();
+            }
+            if (messageContext.getProperty(HTTPConstants.CHUNKED) != null) {
+                chunked = JavaUtils.isTrueExplicitly(messageContext.getProperty(
+                        HTTPConstants.CHUNKED));
+            }
+
+            if (messageContext.getProperty(HTTPConstants.HTTP_PROTOCOL_VERSION) != null) {
+                httpVersion = (String) messageContext.getProperty(HTTPConstants.HTTP_PROTOCOL_VERSION);
+            }
+
+            // Following order needed to be preserved because,
+            // HTTP/1.0 does not support chunk encoding
+            sender.setChunked(chunked);
+            sender.setHttpVersion(httpVersion);
+            sender.setFormat(format);
+
+            sender.send(messageContext, dataout, url, soapActionString);
+        } catch (MalformedURLException e) {
+            log.debug(e);
+            throw new AxisFault(e);
+        } catch (HttpException e) {
+            log.debug(e);
+            throw new AxisFault(e);
+        } catch (IOException e) {
+            log.debug(e);
+            throw new AxisFault(e);
+        }
+    }
+
+    public void writeMessageWithToOutPutStream(MessageContext msgContext,
+                                               OutputStream out) {
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java
new file mode 100644
index 0000000..c39ecd9
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java
@@ -0,0 +1,485 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.http;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * HTTP protocol and message context constants.
+ */
+public class HTTPConstants {
+
+    public static final String HTTP_CONTENT_TYPE = "HTTP_CONTENT_TYPE";
+    public static final String PROTOCOL_VERSION = "PROTOCOL";
+    public static final String MEDIA_TYPE_X_WWW_FORM =
+            "application/x-www-form-urlencoded";
+    public static final String MEDIA_TYPE_TEXT_XML = "text/xml";
+    public static final String MEDIA_TYPE_MULTIPART_RELATED = "multipart/related";
+    public static final String MEDIA_TYPE_APPLICATION_XML = "application/xml";
+    public static final String MEDIA_TYPE_APPLICATION_SOAP_XML = "application/soap+xml";
+
+    /**
+     * Field REQUEST_URI
+     */
+    public static final String REQUEST_URI = "REQUEST_URI";
+
+    /**
+     * Field RESPONSE_CODE
+     */
+    public static final String RESPONSE_CODE = "RESPONSE_CODE";
+
+    /**
+     * Field RESPONSE_WORD
+     */
+    public static final String RESPONSE_WORD = "RESPONSE_WORD";
+
+    /**
+     * Field RESPONSE_ACK_CODE_VAL
+     */
+    public static final String RESPONSE_ACK_CODE_VAL = "202";
+
+    /**
+     * Field SOCKET
+     */
+    public static final String SOCKET = "SOCKET";
+
+    /**
+     * Field RESPONSE_HEADERS
+     */
+    public static final String RESPONSE_HEADERS = "HTTP-Response-Headers";
+
+    /**
+     * Field REQUEST_HEADERS
+     */
+    public static final String REQUEST_HEADERS = "HTTP-Request-Headers";
+
+    /**
+     * Field PLUGIN_WRITER
+     */
+    public static final String PLUGIN_WRITER = "transport.http.plugin.writer";
+
+    /**
+     * Field PLUGIN_SERVICE_NAME
+     */
+    public static final String PLUGIN_SERVICE_NAME = "transport.http.plugin.serviceName";
+
+    /**
+     * AXIS servlet plugin parameter names.
+     */
+    public static final String PLUGIN_NAME = "transport.http.plugin.pluginName";
+
+    /**
+     * Field PLUGIN_LOG
+     */
+    public static final String PLUGIN_LOG = "transport.http.plugin.log";
+
+    /**
+     * Field PLUGIN_IS_DEVELOPMENT
+     */
+    public static final String PLUGIN_IS_DEVELOPMENT = "transport.http.plugin.isDevelopment";
+
+    /**
+     * Field PLUGIN_EXCEPTION_LOG
+     */
+    public static final String PLUGIN_EXCEPTION_LOG = "transport.http.plugin.exceptionLog";
+
+    /**
+     * Field PLUGIN_ENGINE
+     */
+    public static final String PLUGIN_ENGINE = "transport.http.plugin.engine";
+
+    /**
+     * Field PLUGIN_ENABLE_LIST
+     */
+    public static final String PLUGIN_ENABLE_LIST = "transport.http.plugin.enableList";
+
+    /**
+     * Field OK[]
+     */
+    public static final char OK[] = ("200 OK").toCharArray();
+
+    /**
+     * Field NOCONTENT[]
+     */
+    public static final byte NOCONTENT[] = ("202 OK\n\n").getBytes();
+
+    /**
+     * Field MC_HTTP_STATUS_MESSAGE
+     */
+    public static String MC_HTTP_STATUS_MESSAGE = "transport.http.statusMessage";
+
+    /**
+     * Field MC_HTTP_STATUS_CODE
+     */
+    public static String MC_HTTP_STATUS_CODE = "transport.http.statusCode";
+
+    /**
+     * Field MC_HTTP_SERVLETRESPONSE
+     */
+    public static String MC_HTTP_SERVLETRESPONSE = "transport.http.servletResponse";
+
+    /**
+     * Field MC_HTTP_SERVLETREQUEST
+     */
+    public static String MC_HTTP_SERVLETREQUEST = "transport.http.servletRequest";
+
+    /**
+     * Field MC_HTTP_SERVLETPATHINFO
+     */
+    public static String MC_HTTP_SERVLETPATHINFO = "transport.http.servletPathInfo";
+
+    /**
+     * Field MC_HTTP_SERVLETLOCATION
+     */
+    public static String MC_HTTP_SERVLETLOCATION = "transport.http.servletLocation";
+
+    /**
+     * Field MC_HTTP_SERVLET
+     */
+    public static String MC_HTTP_SERVLET = "transport.http.servlet";
+
+    /**
+     * Field MC_HTTP_SERVLETCONTEXT
+     */
+    public static String MC_HTTP_SERVLETCONTEXT = "transport.http.servletContext";
+
+    /**
+     * transport.http.servletConfig
+     */
+    public static String HTTP_SERVLETCONFIG = "transport.http.servletConfig";
+
+    /**
+     * Field HEADER_USER_AGENT
+     */
+    public static final String HEADER_USER_AGENT = "User-Agent";
+
+    /**
+     * Field HEADER_TRANSFER_ENCODING_CHUNKED
+     */
+    public static final String HEADER_TRANSFER_ENCODING_CHUNKED = "chunked".intern();
+
+    /* http 1.1 */
+
+    /**
+     * Field HEADER_TRANSFER_ENCODING
+     */
+    public static final String HEADER_TRANSFER_ENCODING = "Transfer-Encoding".intern();
+
+    /**
+     * Field HEADER_SOAP_ACTION
+     */
+    public static final String HEADER_SOAP_ACTION = "SOAPAction";
+
+    /**
+     * Field HEADER_SET_COOKIE2
+     */
+    public static final String HEADER_SET_COOKIE2 = "Set-Cookie2";
+
+    /**
+     * Field HEADER_SET_COOKIE
+     */
+    public static final String HEADER_SET_COOKIE = "Set-Cookie";
+
+    /**
+     * Field HEADER_PROXY_AUTHORIZATION
+     */
+    public static final String HEADER_PROXY_AUTHORIZATION = "Proxy-Authorization";
+
+    /**
+     * Field HEADER_PROTOCOL_V11
+     */
+    public static final String HEADER_PROTOCOL_V11 = "1.1".intern();
+
+    /**
+     * Field HEADER_PROTOCOL_V10
+     */
+    public static final String HEADER_PROTOCOL_V10 = "1.0".intern();
+
+    /**
+     * Field HEADER_PROTOCOL_11
+     */
+    public static final String HEADER_PROTOCOL_11 = "HTTP/1.1";
+
+    /**
+     * Field HEADER_PROTOCOL_10
+     */
+    public static final String HEADER_PROTOCOL_10 = "HTTP/1.0";
+
+    /**
+     * Field HEADER_PRAGMA
+     */
+    public static final String HEADER_PRAGMA = "Pragma";
+
+    /**
+     * Field HEADER_POST
+     */
+    public static final String HEADER_POST = "POST";
+
+    /**
+     * Field HEADER_LOCATION
+     */
+    public static final String HEADER_LOCATION = "Location";
+
+    /**
+     * Field HEADER_HOST
+     */
+    public static final String HEADER_HOST = "Host";
+
+    /**
+     * Field HEADER_GET
+     */
+    public static final String HEADER_GET = "GET";
+
+    /**
+     * Field HEADER_EXPECT_100_Continue
+     */
+    public static final String HEADER_EXPECT_100_Continue = "100-continue";
+
+    /**
+     * Field HEADER_EXPECT
+     */
+    public static final String HEADER_EXPECT = "Expect";
+
+    /**
+     * Field HEADER_DEFAULT_CHAR_ENCODING
+     */
+    public static final String HEADER_DEFAULT_CHAR_ENCODING = "iso-8859-1";
+
+    /**
+     * Field HEADER_COOKIE2
+     */
+    public static final String HEADER_COOKIE2 = "Cookie2";
+
+    /**
+     * Field HEADER_COOKIE
+     */
+    public static final String HEADER_COOKIE = "Cookie";
+
+    /**
+     * Field HEADER_CONTENT_TYPE
+     */
+    public static final String HEADER_CONTENT_TYPE = "Content-Type";
+
+    /**
+     * Field HEADER_CONTENT_TRANSFER_ENCODING
+     */
+    public static final String HEADER_CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
+
+    /**
+     * Field HEADER_CONTENT_LOCATION
+     */
+    public static final String HEADER_CONTENT_LOCATION = "Content-Location";
+
+    /**
+     * Field HEADER_CONTENT_LENGTH
+     */
+    public static final String HEADER_CONTENT_LENGTH = "Content-Length";
+
+    /**
+     * Field HEADER_CONTENT_ID
+     */
+    public static final String HEADER_CONTENT_ID = "Content-Id";
+
+    /**
+     * Field HEADER_CONTENT_DESCRIPTION
+     */
+    public static final String HEADER_CONTENT_DESCRIPTION = "Content-Description";
+
+    /**
+     * Field HEADER_CONNECTION_KEEPALIVE
+     */
+    public static final String HEADER_CONNECTION_KEEPALIVE = "Keep-Alive".intern();
+
+    /**
+     * Field HEADER_CONNECTION_CLOSE
+     */
+    public static final String HEADER_CONNECTION_CLOSE = "close".intern();
+
+    /**
+     * Field HEADER_CONNECTION
+     */
+    public static final String HEADER_CONNECTION = "Connection";
+
+    /**
+     * Field HEADER_CACHE_CONTROL_NOCACHE
+     */
+    public static final String HEADER_CACHE_CONTROL_NOCACHE = "no-cache";
+
+    /**
+     * Field HEADER_CACHE_CONTROL
+     */
+    public static final String HEADER_CACHE_CONTROL = "Cache-Control";
+
+    /**
+     * Field HEADER_AUTHORIZATION
+     */
+    public static final String HEADER_AUTHORIZATION = "Authorization";
+
+    /**
+     * Field HEADER_ACCEPT_TEXT_ALL
+     */
+    public static final String HEADER_ACCEPT_TEXT_ALL = "text/*";
+
+    /**
+     * Field HEADER_ACCEPT_MULTIPART_RELATED
+     */
+    public static final String HEADER_ACCEPT_MULTIPART_RELATED = "multipart/related";
+
+    /**
+     * Field HEADER_ACCEPT_APPL_SOAP
+     */
+    public static final String HEADER_ACCEPT_APPL_SOAP = "application/soap+xml";
+
+    /**
+     * Field HEADER_ACCEPT_APPLICATION_DIME
+     */
+    public static final String HEADER_ACCEPT_APPLICATION_DIME = "application/dime";
+
+    /**
+     * Field HEADER_ACCEPT
+     */
+    public static final String HEADER_ACCEPT = "Accept";
+
+    /**
+     * Field CHAR_SET_ENCODING
+     */
+    public static String CHAR_SET_ENCODING = "charset";
+
+    /**
+     * Field UNAUTH[]
+     */
+    public static final byte UNAUTH[] = ("401 Unauthorized").getBytes();
+
+    /**
+     * Field SO_TIMEOUT
+     */
+    public static final String SO_TIMEOUT = "SO_TIMEOUT";
+
+    /**
+     * Field SENDER[]
+     */
+    public static final byte SENDER[] = "400".getBytes();
+    public static final String PROXY = "PROXY";
+    public static final String MAIL_SMTP = "_MAIL_SMTP_";
+    public static final String MAIL_POP3 = "_MAIL_POP3_";
+    public static final String AUTHENTICATE = "_NTLM_DIGEST_BASIC_AUTHENTICATION_";
+    public static final String MTOM_RECEIVED_CONTENT_TYPE = "MTOM_RECEIVED";
+    /**
+     * Field ISE[]
+     */
+    public static final byte ISE[] = ("500 Internal server error").getBytes();
+
+    /**
+     * Field HTTP_REQ_TYPE
+     */
+    public static final String HTTP_REQ_TYPE = "HTTP_REQ_TYPE";
+
+    /**
+     * Default content encoding chatset
+     */
+    public static final String HTTP_ELEMENT_CHARSET = "US-ASCII";
+
+    /**
+     * Field HTTP[]
+     */
+    public static char HTTP[] = "HTTP/1.0 ".toCharArray();
+
+    /**
+     * Field DEFAULT_SO_TIMEOUT
+     */
+    public static final int DEFAULT_SO_TIMEOUT = 60000;
+
+    /**
+     * Field DEFAULT_CONNECTION_TIMEOUT
+     */
+    public static final int DEFAULT_CONNECTION_TIMEOUT = 60000;
+
+    /**
+     * Field CONNECTION_TIMEOUT
+     */
+    public static final String CONNECTION_TIMEOUT = "CONNECTION_TIMEOUT";
+
+    /**
+     * Field CACHED_HTTP_CLIENT
+     */
+    public static final String CACHED_HTTP_CLIENT = "CACHED_HTTP_CLIENT";
+
+    /**
+     * Field CACHED_HTTP_CLIENT
+     */
+    public static final String REUSE_HTTP_CLIENT = "REUSE_HTTP_CLIENT";
+
+    /**
+     * Field HTTP_METHOD
+     */
+    public static final String HTTP_METHOD = "HTTP_METHOD";
+
+    public static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding";
+    public static final String HEADER_CONTENT_ENCODING = "Content-Encoding";
+    public static final String HEADER_CONTENT_ENCODING_LOWERCASE = HEADER_CONTENT_ENCODING.toLowerCase();
+
+    public static final String COMPRESSION_GZIP = "gzip";
+
+    /**
+     * If you want the HTTP sender to indicate that it can accept a gziped
+     * response, set this message context property to true. The sender will
+     * automatically unzip the response if its gzipped.
+     */
+    public static final String MC_ACCEPT_GZIP = "transport.http.acceptGzip";
+
+    /**
+     * by default the HTTP request body is not compressed. set this message
+     * context property to true to have the request body gzip compressed.
+     */
+    public static final String MC_GZIP_REQUEST = "transport.http.gzipRequest";
+
+    /**
+     * This will allow users to set any custom headers to the message context, which will be picked
+     * up by the sender while sending the request
+     */
+    public static final String HTTP_HEADERS = "HTTP_HEADERS";
+    public static final String CHUNKED="__CHUNKED__";
+    public static final String HTTP_PROTOCOL_VERSION = "__HTTP_PROTOCOL_VERSION__";
+    //to set and get the property from service context
+    public static final String COOKIE_STRING = "Cookie";
+    public static final String HTTP_METHOD_GET = "GET";
+    public static final String HTTP_METHOD_POST = "POST";
+    public static final String CONTENT_TYPE = "ContentType";
+
+    /**
+     * Method getBytes.
+     *
+     * @param data
+     * @return Returns byte[].
+     */
+    public static byte[] getBytes(final String data) {
+        if (data == null) {
+            throw new IllegalArgumentException("Parameter may not be null");
+        }
+
+        try {
+            return data.getBytes(HTTP_ELEMENT_CHARSET);
+        } catch (UnsupportedEncodingException e) {
+        }
+
+        return data.getBytes();
+    }
+
+    public static final String USER_AGENT = "userAgent";
+    public static final String SERVER = "server";
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPTransportReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPTransportReceiver.java
new file mode 100644
index 0000000..2c17fea
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPTransportReceiver.java
@@ -0,0 +1,418 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.i18n.Messages;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Class HTTPTransportReceiver
+ */
+public class HTTPTransportReceiver {
+
+    /**
+     * Field BEFORE_SEPARATOR
+     */
+    private static final int BEFORE_SEPARATOR = 3;
+
+    /**
+     * Field AFTER_SEPARATOR
+     */
+    private static final int AFTER_SEPARATOR = 4;
+
+    /**
+     * Field lastRead
+     */
+    private int lastRead = -1;
+
+    /**
+     * Field index
+     */
+    int index = 0;
+
+    /**
+     * Field buf
+     */
+    private byte[] buf = new byte[1024];
+
+    /**
+     * Field length
+     */
+    int length = 0;
+
+    /**
+     * Field done
+     */
+    private boolean done = false;
+
+    /**
+     * Parses following two styles of HTTP stuff
+     * Server Side
+     * POST /axis2/services/echo HTTP/1.0
+     * Content-Type: text/xml; charset=utf-8
+     * Accept: application/soap+xml, application/dime, multipart/related, text
+     * User-Agent: Axis/1.2RC1
+     * Host: 127.0.0.1:8081
+     * Cache-Control: no-cache
+     * Pragma: no-cache
+     * SOAPAction: ""
+     * Content-Length: 73507
+     * HTTP/1.1 200 OK
+     * Content-Type: text/xml;charset=utf-8
+     * Date: Sat, 12 Feb 2005 10:39:39 GMT
+     * Server: Apache-Coyote/1.1
+     * Connection: close
+     *
+     * @param in
+     * @param serverSide
+     * @return Returns HashMap.
+     * @throws AxisFault
+     */
+    public HashMap parseTheHeaders(InputStream in, boolean serverSide) throws AxisFault {
+        HashMap map = new HashMap();
+
+        try {
+            StringBuffer str = new StringBuffer();
+            int state = BEFORE_SEPARATOR;
+            String key = null;
+            String value = null;
+
+            length = readLine(in, buf);
+
+            if (serverSide) {
+                if ((buf[0] == 'P') && (buf[1] == 'O') && (buf[2] == 'S') && (buf[3] == 'T')) {
+                    map.put(HTTPConstants.HTTP_REQ_TYPE, HTTPConstants.HEADER_POST);
+                    index = 5;
+                } else if ((buf[0] == 'G') && (buf[1] == 'E') && (buf[2] == 'T')) {
+                    map.put(HTTPConstants.HTTP_REQ_TYPE, HTTPConstants.HEADER_GET);
+                    index = 4;
+                } else {
+                    throw new AxisFault(
+                            "Unsupported HTTP request type: Only GET and POST is supported");
+                }
+
+                value = readFirstLineArg(' ');
+                map.put(HTTPConstants.REQUEST_URI, value);
+                value = readFirstLineArg('\n');
+                map.put(HTTPConstants.PROTOCOL_VERSION, value);
+            } else {
+                index = 0;
+                value = readFirstLineArg(' ');
+
+                if ((value != null) && (value.indexOf("HTTP") >= 0)) {
+                    map.put(HTTPConstants.PROTOCOL_VERSION, value);
+                    value = readFirstLineArg(' ');
+                    map.put(HTTPConstants.RESPONSE_CODE, value);
+                } else {
+                    map.put(HTTPConstants.RESPONSE_CODE, value);
+                }
+
+                value = readFirstLineArg('\n');
+                map.put(HTTPConstants.RESPONSE_WORD, value);
+            }
+
+            state = BEFORE_SEPARATOR;
+
+            while (!done) {
+                length = readLine(in, buf);
+
+                if (length <= 0) {
+                    throw new AxisFault(Messages.getMessage("preatureEOS"));
+                }
+
+                for (int i = 0; i < length; i++) {
+                    switch (state) {
+                        case BEFORE_SEPARATOR :
+                            if (buf[i] == ':') {
+                                key = str.toString();
+                                str = new StringBuffer();
+                                state = AFTER_SEPARATOR;
+
+                                if (buf[i + 1] == ' ') {
+                                    i++;    // ignore next space
+                                }
+                            } else {
+                                str.append((char) buf[i]);
+                            }
+
+                            break;
+
+                        case AFTER_SEPARATOR :
+                            if (buf[i] == '\n') {
+                                value = str.toString();
+                                map.put(key, value);
+                                str = new StringBuffer();
+                                i = length;
+                            } else {
+                                str.append((char) buf[i]);
+                            }
+
+                            break;
+
+                        default :
+                            throw new AxisFault("Error Occured Unknown state " + state);
+                    }
+                }
+
+                state = BEFORE_SEPARATOR;
+            }
+        } catch (IOException e) {
+            throw new AxisFault(e.getMessage(), e);
+        }
+
+        return map;
+    }
+
+    /**
+     * Method readFirstLineArg.
+     *
+     * @param terminal
+     * @return Returns String.
+     * @throws org.apache.axis2.AxisFault
+     */
+    private String readFirstLineArg(char terminal) throws AxisFault {
+        StringBuffer str = new StringBuffer();
+
+        try {
+            while ((buf[index] != terminal) && (index < length)) {
+                str.append((char) buf[index]);
+                index++;
+            }
+
+            index++;
+
+            return str.toString();
+        } catch (Exception e) {
+            throw new AxisFault(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * Reads a single line from the input stream.
+     *
+     * @param is inputstream to read from
+     * @param b  byte array to read into
+     * @return Returns int.
+     * @throws java.io.IOException
+     */
+    protected int readLine(InputStream is, byte[] b) throws java.io.IOException {
+        int count = 0, c;
+
+        if (lastRead == -1) {
+            c = is.read();
+        } else {
+            c = lastRead;
+        }
+
+        int off = 0;
+
+        while (c != -1) {
+            if ((c != '\n') && (c != '\r')) {
+                b[off++] = (byte) c;
+                count++;
+                c = is.read();
+            } else {
+                if ('\n' == c) {
+                    c = is.read();
+
+                    if (c == '\r') {
+                        c = is.read();
+                    }
+
+                    // If the next line begins with tab or space then this is a continuation.
+                    if ((c != ' ') && (c != '\t')) {
+                        if (c == '\n') {
+                            done = true;
+                        }
+
+                        lastRead = c;
+                        b[off++] = '\n';
+                        count++;
+
+                        break;
+                    }
+                } else {
+                    c = is.read();
+                }
+            }
+        }
+
+        if (c == -1) {
+            throw new AxisFault("Every line should ends with the \\n, unexpected End of stream");
+        } else {
+            return (count > 0)
+                    ? count
+                    : -1;
+        }
+    }
+
+    public static Map getGetRequestParameters(String requestURI) {
+
+        Map map = new HashMap();
+        if (requestURI == null || "".equals(requestURI)) {
+            return map;
+        }
+        char[]       chars = requestURI.toCharArray();
+        final int NOT_BEGUN = 1500;
+        final int INSIDE_NAME = 1501;
+        final int INSIDE_VALUE = 1502;
+        int state = NOT_BEGUN;
+        StringBuffer name = new StringBuffer();
+        StringBuffer value = new StringBuffer();
+
+        for (int index = 0; index < chars.length; index++) {
+            if (state == NOT_BEGUN) {
+                if (chars[index] == '?') {
+                    state = INSIDE_NAME;
+                }
+            } else if (state == INSIDE_NAME) {
+                if (chars[index] == '=') {
+                    state = INSIDE_VALUE;
+                } else {
+                    name.append(chars[index]);
+                }
+            } else if (state == INSIDE_VALUE) {
+                if (chars[index] == ',') {
+                    state = INSIDE_NAME;
+                    map.put(name.toString(), value.toString());
+                    name.delete(0, name.length());
+                    value.delete(0, value.length());
+                } else {
+                    value.append(chars[index]);
+                }
+            }
+        }
+
+        if (name.length() + value.length() > 0) {
+            map.put(name.toString(), value.toString());
+        }
+
+        return map;
+    }
+
+    /**
+     * Returns the HTML text for the list of services deployed.
+     * This can be delegated to another Class as well
+     * where it will handle more options of GET messages.
+     *
+     * @return Returns String.
+     */
+    public static String getServicesHTML(ConfigurationContext configurationContext) {
+        String temp = "";
+        Map services = configurationContext.getAxisConfiguration().getServices();
+        Hashtable erroneousServices =
+                configurationContext.getAxisConfiguration().getFaultyServices();
+        boolean status = false;
+
+        if ((services != null) && !services.isEmpty()) {
+            status = true;
+
+            Collection serviceCollection = services.values();
+
+            temp += "<h2>" + "Deployed services" + "</h2>";
+
+            for (Iterator it = serviceCollection.iterator(); it.hasNext();) {
+
+                AxisService axisService = (AxisService) it.next();
+
+                Iterator iterator = axisService.getOperations();
+
+                temp += "<h3><a href=\"" + axisService.getName() + "?wsdl\">" + axisService.getName() + "</a></h3>";
+
+                if (iterator.hasNext()) {
+                    temp += "Available operations <ul>";
+
+                    for (; iterator.hasNext();) {
+                        AxisOperation axisOperation = (AxisOperation) iterator.next();
+
+                        temp += "<li>" + axisOperation.getName().getLocalPart() + "</li>";
+                    }
+
+                    temp += "</ul>";
+                } else {
+                    temp += "No operations specified for this service";
+                }
+            }
+        }
+
+        if ((erroneousServices != null) && !erroneousServices.isEmpty()) {
+            temp += "<hr><h2><font color=\"blue\">Faulty Services</font></h2>";
+            status = true;
+
+            Enumeration faultyservices = erroneousServices.keys();
+
+            while (faultyservices.hasMoreElements()) {
+                String faultyserviceName = (String) faultyservices.nextElement();
+
+                temp += "<h3><font color=\"blue\">" + faultyserviceName + "</font></h3>";
+            }
+        }
+
+        if (!status) {
+            temp = "<h2>There are no services deployed</h2>";
+        }
+
+        temp = "<html><head><title>Axis2: Services</title></head>" + "<body>" + temp
+                + "</body></html>";
+
+        return temp;
+    }
+
+    public static String printServiceHTML(String serviceName,
+                                          ConfigurationContext configurationContext) {
+        String temp = "";
+        try {
+            AxisConfiguration axisConfig = configurationContext.getAxisConfiguration();
+            AxisService axisService = axisConfig.getService(serviceName);
+            Iterator iterator = axisService.getOperations();
+            temp += "<h3>" + axisService.getName() + "</h3>";
+            temp += "<a href=\"" + axisService.getName() + "?wsdl\">wsdl</a> <br/> ";
+            temp += "<i>Service Description :  " + axisService.getServiceDescription() + "</i><br/><br/>";
+            if (iterator.hasNext()) {
+                temp += "Available operations <ul>";
+                for (; iterator.hasNext();) {
+                    AxisOperation axisOperation = (AxisOperation) iterator.next();
+                    temp += "<li>" + axisOperation.getName().getLocalPart() + "</li>";
+                }
+                temp += "</ul>";
+            } else {
+                temp += "No operations specified for this service";
+            }
+            temp = "<html><head><title>Axis2: Services</title></head>" + "<body>" + temp
+                    + "</body></html>";
+        }
+        catch (AxisFault axisFault) {
+            temp = "<html><head><title>Service has a fualt</title></head>" + "<body>"
+                    + "<hr><h2><font color=\"blue\">" + axisFault.getMessage() + "</font></h2></body></html>";
+        }
+        return temp;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPTransportUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
new file mode 100644
index 0000000..2faff59
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
@@ -0,0 +1,364 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.*;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.Utils;
+
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.zip.GZIPInputStream;
+
+public class HTTPTransportUtils {
+
+
+    public static SOAPEnvelope createEnvelopeFromGetRequest(String requestUrl,
+                                   Map map,ConfigurationContext configCtx) throws AxisFault {
+        String[] values =
+                Utils.parseRequestURLForServiceAndOperation(requestUrl,
+                                                        configCtx.getServiceContextPath());
+        if (values == null) {
+            return new SOAP11Factory().getDefaultEnvelope();
+        }
+
+        if ((values[1] != null) && (values[0] != null)) {
+            String srvice = values[0];
+            AxisService service = configCtx.getAxisConfiguration().getService(srvice);
+            if (service == null) {
+                throw new AxisFault("service not found: " + srvice);
+            }
+            String operation = values[1];
+            SOAPFactory soapFactory = new SOAP11Factory();
+            SOAPEnvelope envelope = soapFactory.getDefaultEnvelope();
+//            OMNamespace omNs = soapFactory.createOMNamespace(values[0], "services");
+            OMNamespace omNs = soapFactory.createOMNamespace(service.getSchematargetNamespace(),
+                                                             service.getSchematargetNamespacePrefix());
+            //OMNamespace defualtNs = new OMNamespaceImpl("", null, soapFactory);
+            soapFactory.createOMNamespace(service.getSchematargetNamespace(),
+                                          service.getSchematargetNamespacePrefix());
+            OMElement opElement = soapFactory.createOMElement(operation, omNs);
+            Iterator it = map.keySet().iterator();
+
+            while (it.hasNext()) {
+                String name = (String) it.next();
+                String value = (String) map.get(name);
+                OMElement omEle = soapFactory.createOMElement(name, omNs);
+
+                omEle.setText(value);
+                opElement.addChild(omEle);
+            }
+
+            envelope.getBody().addChild(opElement);
+
+            return envelope;
+        } else {
+            return null;
+        }
+    }
+
+    public static boolean doWriteMTOM(MessageContext msgContext) {
+        boolean enableMTOM = false;
+
+        if (msgContext.getParameter(Constants.Configuration.ENABLE_MTOM) != null) {
+            enableMTOM = JavaUtils.isTrueExplicitly(
+                    msgContext.getParameter(Constants.Configuration.ENABLE_MTOM).getValue());
+        }
+
+        if (msgContext.getProperty(Constants.Configuration.ENABLE_MTOM) != null) {
+            enableMTOM = JavaUtils.isTrueExplicitly(
+                    msgContext.getProperty(Constants.Configuration.ENABLE_MTOM));
+        }
+        return enableMTOM;
+    }
+    
+    public static boolean doWriteSwA(MessageContext msgContext) {
+        boolean enableSwA = false;
+
+        if (msgContext.getParameter(Constants.Configuration.ENABLE_SWA) != null) {
+            enableSwA = JavaUtils.isTrueExplicitly(
+                    msgContext.getParameter(Constants.Configuration.ENABLE_SWA).getValue());
+        }
+
+        if (msgContext.getProperty(Constants.Configuration.ENABLE_SWA) != null) {
+            enableSwA = JavaUtils.isTrueExplicitly(
+                    msgContext.getProperty(Constants.Configuration.ENABLE_SWA));
+        }
+        return enableSwA;
+    }
+
+    public static boolean processHTTPGetRequest(MessageContext msgContext,
+                                                OutputStream out, String soapAction, String requestURI,
+                                                ConfigurationContext configurationContext, Map requestParameters)
+            throws AxisFault {
+        if ((soapAction != null) && soapAction.startsWith("\"") && soapAction.endsWith("\"")) {
+            soapAction = soapAction.substring(1, soapAction.length() - 1);
+        }
+
+        msgContext.setSoapAction(soapAction);
+        msgContext.setTo(new EndpointReference(requestURI));
+        msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
+        msgContext.setServerSide(true);
+
+        SOAPEnvelope envelope = HTTPTransportUtils.createEnvelopeFromGetRequest(requestURI,
+                                                                                requestParameters, configurationContext);
+
+        if (envelope == null) {
+            return false;
+        } else {
+            msgContext.setDoingREST(true);
+            msgContext.setEnvelope(envelope);
+
+            AxisEngine engine = new AxisEngine(configurationContext);
+
+            engine.receive(msgContext);
+
+            return true;
+        }
+    }
+
+    private static final int VERSION_UNKNOWN = 0;
+    private static final int VERSION_SOAP11 = 1;
+    private static final int VERSION_SOAP12 = 2;
+
+    public static void processHTTPPostRequest(MessageContext msgContext, InputStream in,
+                                              OutputStream out, String contentType, String soapActionHeader, String requestURI)
+            throws AxisFault {
+
+        int soapVersion = VERSION_UNKNOWN;
+
+        try {
+
+            Map headers = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
+            if (headers != null) {
+                if (HTTPConstants.COMPRESSION_GZIP.equals(headers.get(HTTPConstants.HEADER_CONTENT_ENCODING)) ||
+                    HTTPConstants.COMPRESSION_GZIP.equals(headers.get(HTTPConstants.HEADER_CONTENT_ENCODING_LOWERCASE)))
+                {
+                    in = new GZIPInputStream(in);
+                }
+            }
+
+            // remove the starting and trailing " from the SOAP Action
+            if ((soapActionHeader != null) && soapActionHeader.charAt(0) == '\"'
+                && soapActionHeader.endsWith("\"")) {
+                soapActionHeader = soapActionHeader.substring(1, soapActionHeader.length() - 1);
+            }
+
+            // fill up the Message Contexts
+            msgContext.setSoapAction(soapActionHeader);
+            msgContext.setTo(new EndpointReference(requestURI));
+            msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
+            msgContext.setServerSide(true);
+
+            SOAPEnvelope envelope = null;
+            StAXBuilder builder = null;
+
+            if (contentType != null) {
+
+                if (contentType.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
+                    soapVersion = VERSION_SOAP12;
+                } else if (contentType.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
+                    soapVersion = VERSION_SOAP11;
+                }
+                if (JavaUtils.indexOfIgnoreCase(contentType, HTTPConstants.HEADER_ACCEPT_MULTIPART_RELATED) > -1) {
+                    // It is MIME (MTOM or SwA)
+                    builder = TransportUtils.selectBuilderForMIME(msgContext, in, contentType,true);
+                    envelope = (SOAPEnvelope) builder.getDocumentElement();
+                } else {
+                    XMLStreamReader xmlreader;
+
+                    // Figure out the char set encoding and create the reader
+
+                    // If charset is not specified
+                    if (TransportUtils.getCharSetEncoding(contentType) == null) {
+                        xmlreader = StAXUtils.createXMLStreamReader(in,
+                                                                    MessageContext.DEFAULT_CHAR_SET_ENCODING);
+
+                        // Set the encoding scheme in the message context
+                        msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+                                               MessageContext.DEFAULT_CHAR_SET_ENCODING);
+                    } else {
+
+                        // get the type of char encoding
+                        String charSetEnc = TransportUtils.getCharSetEncoding(contentType);
+
+                        xmlreader = StAXUtils.createXMLStreamReader(in,
+                                                                    charSetEnc);
+
+                        // Setting the value in msgCtx
+                        msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
+                    }
+
+                    if (soapVersion == VERSION_SOAP12) {
+                        //Check for action header and set it in as soapAction in MessageContext
+                        int index = contentType.indexOf("action");
+                        if (index > -1) {
+                            String transientString = contentType.substring(index, contentType.length());
+                            int equal = transientString.indexOf("=");
+                            int firstSemiColon = transientString.indexOf(";");
+                            String soapAction; // This will contain "" in the string
+                            if (firstSemiColon > -1) {
+                                soapAction = transientString.substring(equal + 1, firstSemiColon);
+                            } else {
+                                soapAction = transientString.substring(equal + 1, transientString.length());
+                            }
+                            if ((soapAction != null) && soapAction.startsWith("\"")
+                                && soapAction.endsWith("\"")) {
+                                soapAction = soapAction
+                                        .substring(1, soapAction.length() - 1);
+                            }
+                            msgContext.setSoapAction(soapAction);
+
+                        }
+
+                        // it is SOAP 1.2
+                        builder =
+                                new StAXSOAPModelBuilder(xmlreader,
+                                                         SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                        envelope = (SOAPEnvelope) builder.getDocumentElement();
+                    } else if (soapVersion == VERSION_SOAP11) {
+                        /**
+                         * Configuration via Deployment
+                         */
+                        Parameter enable =
+                                msgContext.getParameter(Constants.Configuration.ENABLE_REST);
+
+                        if ((soapActionHeader == null) && (enable != null)) {
+                            if (Constants.VALUE_TRUE.equals(enable.getValue())) {
+
+                                // If the content Type is text/xml (BTW which is the SOAP 1.1 Content type ) and
+                                // the SOAP Action is absent it is rest !!
+                                msgContext.setDoingREST(true);
+
+                                SOAPFactory soapFactory = new SOAP11Factory();
+
+                                builder = new StAXOMBuilder(xmlreader);
+                                builder.setOMBuilderFactory(soapFactory);
+                                envelope = soapFactory.getDefaultEnvelope();
+                                envelope.getBody().addChild(builder.getDocumentElement());
+                            }
+                        } else {
+                            builder = new StAXSOAPModelBuilder(
+                                    xmlreader, SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                            envelope = (SOAPEnvelope) builder.getDocumentElement();
+                        }
+                    }
+                }
+            }
+
+            if (builder == null) {
+                XMLStreamReader xmlreader = StAXUtils.createXMLStreamReader(in,
+                                                                            MessageContext.DEFAULT_CHAR_SET_ENCODING);
+
+                // Set the encoding scheme in the message context
+                msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+                                       MessageContext.DEFAULT_CHAR_SET_ENCODING);
+                builder = new StAXSOAPModelBuilder(
+                        xmlreader, SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                envelope = (SOAPEnvelope) builder.getDocumentElement();
+            }
+
+            String charsetEncoding = builder.getDocument().getCharsetEncoding();
+
+            if ((charsetEncoding != null) && !"".equals(charsetEncoding)
+                && ! charsetEncoding.equalsIgnoreCase((String) msgContext.getProperty(
+                    Constants.Configuration.CHARACTER_SET_ENCODING))) {
+                String faultCode;
+
+                if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(
+                        envelope.getNamespace().getNamespaceURI())) {
+                    faultCode = SOAP12Constants.FAULT_CODE_SENDER;
+                } else {
+                    faultCode = SOAP11Constants.FAULT_CODE_SENDER;
+                }
+
+                throw new AxisFault(
+                        "Character Set Encoding from " + "transport information do not match with "
+                        + "character set encoding in the received SOAP message", faultCode);
+            }
+
+            msgContext.setEnvelope(envelope);
+
+            AxisEngine engine = new AxisEngine(msgContext.getConfigurationContext());
+
+            if (envelope.getBody().hasFault()) {
+                engine.receiveFault(msgContext);
+            } else {
+                engine.receive(msgContext);
+            }
+        } catch (SOAPProcessingException e) {
+            throw new AxisFault(e);
+        } catch (AxisFault e) {
+            throw e;
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        } catch (OMException e) {
+            throw new AxisFault(e);
+        } catch (XMLStreamException e) {
+            throw new AxisFault(e);
+        } catch (FactoryConfigurationError e) {
+            throw new AxisFault(e);
+        } finally {
+            if ((msgContext.getEnvelope() == null) && soapVersion != VERSION_SOAP11) {
+                msgContext.setEnvelope(new SOAP12Factory().getDefaultEnvelope());
+            }
+        }
+    }
+
+    public static boolean isDoingREST(MessageContext msgContext) {
+        boolean enableREST = false;
+
+        // check whether isDoingRest is already true in the message context
+        if (msgContext.isDoingREST()) {
+            return true;
+        }
+
+        Object enableRESTProperty = msgContext.getProperty(Constants.Configuration.ENABLE_REST);
+        if (enableRESTProperty != null) {
+            enableREST = JavaUtils.isTrueExplicitly(enableRESTProperty);
+        }
+
+        msgContext.setDoingREST(enableREST);
+
+        return enableREST;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java
new file mode 100644
index 0000000..bd3447b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java
@@ -0,0 +1,266 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.transport.http.server.HttpUtils;
+import org.apache.axis2.transport.http.server.OutputBuffer;
+import org.apache.axis2.transport.http.server.Worker;
+import org.apache.http.*;
+import org.apache.http.entity.ContentProducer;
+import org.apache.http.entity.EntityTemplate;
+import org.apache.http.entity.StringEntity;
+import org.apache.ws.commons.schema.XmlSchema;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+public class HTTPWorker implements Worker {
+
+    public HTTPWorker() {
+    }
+
+    public void service(
+            final HttpRequest request,
+            final HttpResponse response,
+            final MessageContext msgContext) throws HttpException, IOException {
+
+        ConfigurationContext configurationContext = msgContext.getConfigurationContext();
+        final String servicePath = configurationContext.getServiceContextPath();
+        final String contextPath = (servicePath.startsWith("/") ? servicePath : "/" + servicePath) + "/";
+
+        HttpVersion ver = request.getRequestLine().getHttpVersion();
+        String uri = request.getRequestLine().getUri();
+        String method = request.getRequestLine().getMethod();
+        String soapAction = HttpUtils.getSoapAction(request);
+
+        // Adjust version and content chunking based on the config
+        boolean chunked = false;
+        TransportOutDescription transportOut = msgContext.getTransportOut();
+        if (transportOut != null) {
+            Parameter p = transportOut.getParameter(HTTPConstants.PROTOCOL_VERSION);
+            if (p != null) {
+                if (HTTPConstants.HEADER_PROTOCOL_10.equals(p.getValue())) {
+                    ver = HttpVersion.HTTP_1_0;
+                }
+            }
+            if (ver.greaterEquals(HttpVersion.HTTP_1_1)) {
+                p = transportOut.getParameter(HTTPConstants.HEADER_TRANSFER_ENCODING);
+                if (p != null) {
+                    if (HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED.equals(p.getValue())) {
+                        chunked = true;
+                    }
+                }
+            }
+        }
+
+        if (method.equals(HTTPConstants.HEADER_GET)) {
+            if (uri.equals("/favicon.ico")) {
+                response.setStatusLine(new StatusLine(ver, 301, "Redirect"));
+                response.addHeader(new Header("Location", "http://ws.apache.org/favicon.ico"));
+                return;
+            }
+            if (!uri.startsWith(contextPath)) {
+                response.setStatusLine(new StatusLine(ver, 301, "Redirect"));
+                response.addHeader(new Header("Location", contextPath));
+                return;
+            }
+            if (uri.indexOf("?") < 0) {
+                if (!uri.endsWith(contextPath)) {
+                    String serviceName = uri.replaceAll(contextPath, "");
+                    if (serviceName.indexOf("/") < 0) {
+                        String res = HTTPTransportReceiver.printServiceHTML(serviceName, configurationContext);
+                        StringEntity entity = new StringEntity(res);
+                        entity.setContentType("text/html");
+                        entity.setChunked(chunked);
+                        response.setEntity(entity);
+                        return;
+                    }
+                }
+            }
+            if (uri.endsWith("?wsdl2")) {
+                String serviceName = uri.substring(uri.lastIndexOf("/") + 1, uri.length() - 6);
+                HashMap services = configurationContext.getAxisConfiguration().getServices();
+                final AxisService service = (AxisService) services.get(serviceName);
+                if (service != null) {
+                    final String ip = HttpUtils.getIpAddress();
+                    EntityTemplate entity = new EntityTemplate(new ContentProducer() {
+
+                        public void writeTo(final OutputStream outstream) throws IOException {
+                            service.printWSDL2(outstream, ip, servicePath);
+                        }
+
+                    });
+                    entity.setContentType("text/xml");
+                    entity.setChunked(chunked);
+                    response.setEntity(entity);
+                    return;
+                }
+            }
+            if (uri.endsWith("?wsdl")) {
+                String serviceName = uri.substring(uri.lastIndexOf("/") + 1, uri.length() - 5);
+                HashMap services = configurationContext.getAxisConfiguration().getServices();
+                final AxisService service = (AxisService) services.get(serviceName);
+                if (service != null) {
+                    final String ip = HttpUtils.getIpAddress();
+                    EntityTemplate entity = new EntityTemplate(new ContentProducer() {
+
+                        public void writeTo(final OutputStream outstream) throws IOException {
+                            service.printWSDL(outstream, ip, servicePath);
+                        }
+
+                    });
+                    entity.setContentType("text/xml");
+                    entity.setChunked(chunked);
+                    response.setEntity(entity);
+                    return;
+                }
+            }
+            if (uri.endsWith("?xsd")) {
+                String serviceName = uri.substring(uri.lastIndexOf("/") + 1, uri.length() - 4);
+                HashMap services = configurationContext.getAxisConfiguration().getServices();
+                final AxisService service = (AxisService) services.get(serviceName);
+                if (service != null) {
+                    EntityTemplate entity = new EntityTemplate(new ContentProducer() {
+
+                        public void writeTo(final OutputStream outstream) throws IOException {
+                            service.printSchema(outstream);
+                        }
+
+                    });
+                    entity.setContentType("text/xml");
+                    entity.setChunked(chunked);
+                    response.setEntity(entity);
+                    return;
+                }
+            }
+            //cater for named xsds - check for the xsd name
+            if (uri.indexOf("?xsd=") > 0) {
+                String serviceName = uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("?xsd="));
+                String schemaName = uri.substring(uri.lastIndexOf("=") + 1);
+
+                HashMap services = configurationContext.getAxisConfiguration().getServices();
+                AxisService service = (AxisService) services.get(serviceName);
+                if (service != null) {
+                    //run the population logic just to be sure
+                    service.populateSchemaMappings();
+                    //write out the correct schema
+                    Map schemaTable = service.getSchemaMappingTable();
+                    final XmlSchema schema = (XmlSchema) schemaTable.get(schemaName);
+                    //schema found - write it to the stream
+                    if (schema != null) {
+                        EntityTemplate entity = new EntityTemplate(new ContentProducer() {
+
+                            public void writeTo(final OutputStream outstream) throws IOException {
+                                schema.write(outstream);
+                            }
+
+                        });
+                        entity.setContentType("text/xml");
+                        entity.setChunked(chunked);
+                        response.setEntity(entity);
+                        return;
+                    } else {
+                        // no schema available by that name  - send 404
+                        response.setStatusLine(new StatusLine(ver, 404, "Schema Not Found!"));
+                        return;
+                    }
+                }
+            }
+
+            OutputBuffer outbuffer = new OutputBuffer();
+            msgContext.setProperty(MessageContext.TRANSPORT_OUT, outbuffer);
+            msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, outbuffer);
+
+            // deal with GET request
+            boolean processed = HTTPTransportUtils.processHTTPGetRequest(
+                    msgContext,
+                    outbuffer.getOutputStream(),
+                    soapAction,
+                    uri,
+                    configurationContext,
+                    HTTPTransportReceiver.getGetRequestParameters(uri));
+
+            if (processed) {
+                outbuffer.setChunked(chunked);
+                response.setEntity(outbuffer);
+            } else {
+                response.setStatusLine(new StatusLine(ver, 200, "OK"));
+                String s = HTTPTransportReceiver.getServicesHTML(configurationContext);
+                StringEntity entity = new StringEntity(s);
+                entity.setContentType("text/html");
+                entity.setChunked(chunked);
+                response.setEntity(entity);
+            }
+
+        } else if (method.equals(HTTPConstants.HEADER_POST)) {
+            // deal with POST request
+
+            OutputBuffer outbuffer = new OutputBuffer();
+            msgContext.setProperty(MessageContext.TRANSPORT_OUT, outbuffer);
+            msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, outbuffer);
+
+            HttpEntity inentity = ((HttpEntityEnclosingRequest) request).getEntity();
+            String contenttype = null;
+            if (inentity.getContentType() != null) {
+                contenttype = inentity.getContentType().getValue();
+            }
+            HTTPTransportUtils.processHTTPPostRequest(
+                    msgContext,
+                    inentity.getContent(),
+                    outbuffer.getOutputStream(),
+                    contenttype,
+                    soapAction,
+                    uri);
+
+            outbuffer.setChunked(chunked);
+            response.setEntity(outbuffer);
+
+        } else {
+            throw new MethodNotSupportedException(method + " method not supported");
+        }
+
+        // Finalize response
+        OperationContext operationContext = msgContext.getOperationContext();
+        Object contextWritten = null;
+        Object isTwoChannel = null;
+        if (operationContext != null) {
+            contextWritten = operationContext.getProperty(Constants.RESPONSE_WRITTEN);
+            isTwoChannel = operationContext.getProperty(Constants.DIFFERENT_EPR);
+        }
+
+
+        if ((contextWritten != null) && Constants.VALUE_TRUE.equals(contextWritten)) {
+            if ((isTwoChannel != null) && Constants.VALUE_TRUE.equals(isTwoChannel)) {
+                response.setStatusLine(new StatusLine(ver, 202, "OK"));
+                return;
+            }
+            response.setStatusLine(new StatusLine(ver, 200, "OK"));
+        } else {
+            response.setStatusLine(new StatusLine(ver, 202, "OK"));
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorkerFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorkerFactory.java
new file mode 100644
index 0000000..24b5944
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorkerFactory.java
@@ -0,0 +1,45 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http;
+
+import org.apache.axis2.transport.http.server.Worker;
+import org.apache.axis2.transport.http.server.WorkerFactory;
+
+public class HTTPWorkerFactory implements WorkerFactory {
+
+    public HTTPWorkerFactory() {
+        super();
+    }
+    
+    public Worker newWorker() {
+        return new HTTPWorker();
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HttpTransportProperties.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HttpTransportProperties.java
new file mode 100644
index 0000000..994ec51
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/HttpTransportProperties.java
@@ -0,0 +1,250 @@
+package org.apache.axis2.transport.http;
+
+/*
+ * Copyright 2004,2005 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 org.apache.commons.httpclient.HttpVersion;
+import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.commons.httpclient.auth.AuthPolicy;
+
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * Utility bean for setting transport properties in runtime.
+ */
+public class HttpTransportProperties {
+    protected boolean chunked;
+    protected HttpVersion httpVersion;
+    protected String protocol;
+
+    public HttpTransportProperties() {
+    }
+
+    public boolean getChunked() {
+        return chunked;
+    }
+
+    public HttpVersion getHttpVersion() {
+        return httpVersion;
+    }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setChunked(boolean chunked) {
+        this.chunked = chunked;
+    }
+
+    public void setHttpVersion(HttpVersion httpVerion) {
+        this.httpVersion = httpVerion;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public static class ProxyProperties {
+        protected int proxyPort = -1;
+        protected String domain;
+        protected String passWord;
+        protected String proxyHostName;
+        protected String userName;
+
+        public ProxyProperties() {
+        }
+
+        public String getDomain() {
+            if (domain == null || domain.length() == 0) {
+                return "anonymous";
+            } else {
+                return domain;
+            }
+        }
+
+        public String getPassWord() {
+            if (passWord == null || passWord.length() == 0) {
+                return "anonymous";
+            } else {
+                return passWord;
+            }
+        }
+
+        public String getProxyHostName() {
+            return proxyHostName;
+        }
+
+        public int getProxyPort() {
+            return proxyPort;
+        }
+
+        public String getUserName() {
+            if (userName == null || userName.length() == 0) {
+                return "anonymous";
+            } else {
+                return userName;
+            }
+        }
+
+        public void setDomain(String domain) {
+            this.domain = domain;
+        }
+
+        public void setPassWord(String passWord) {
+            this.passWord = passWord;
+        }
+
+        public void setProxyName(String proxyHostName) {
+            this.proxyHostName = proxyHostName;
+        }
+
+        public void setProxyPort(int proxyPort) {
+            this.proxyPort = proxyPort;
+        }
+
+        public void setUserName(String userName) {
+            this.userName = userName;
+        }
+    }
+    /*
+    This class is responsible for holding all the necessary information needed for NTML, Digest
+    and Basic Authentication. Authentication itself is handled by httpclient. User doesn't need to
+    warry about what authentication mechanism it uses. Axis2 uses httpclinet's default authentication
+    patterns.
+    */
+    public static class Authenticator{
+        /*host that needed to be authenticated with*/
+        private String host;
+        /*port of the host that needed to be authenticated with*/
+        private int port = AuthScope.ANY_PORT;
+        /*Realm for authentication scope*/
+        private String realm = AuthScope.ANY_REALM;
+        /*Domain needed by NTCredentials for NT Domain*/
+        private String domain;
+        /*User for authenticate*/
+        private String username;
+        /*Password of the user for authenticate*/
+        private String password;
+        /* Switch to use preemptive authentication or not*/
+        private boolean preemptive = false;
+        /* if Authentication scheme needs retry just turn on the following flag */
+        private boolean allowedRetry = false;
+        /* Changing the priorty or adding a custom AuthPolicy*/
+        private List authSchemes;
+
+        /* Default Auth Schems*/
+        public static final String NTLM = AuthPolicy.NTLM;
+        public static final String DIGEST = AuthPolicy.DIGEST;
+        public static final String BASIC = AuthPolicy.BASIC;
+
+        public String getHost() {
+            return host;
+        }
+
+        public void setHost(String host) {
+            this.host = host;
+        }
+
+        public int getPort() {
+            return port;
+        }
+
+        public void setPort(int port) {
+            this.port = port;
+        }
+
+        public String getRealm() {
+            return realm;
+        }
+
+        public void setRealm(String realm) {
+            this.realm = realm;
+        }
+
+        public String getUsername() {
+            return username;
+        }
+
+        public void setUsername(String username) {
+            this.username = username;
+        }
+
+        public String getPassword() {
+            return password;
+        }
+
+        public void setPassword(String password) {
+            this.password = password;
+        }
+
+        public void setPreemptiveAuthentication(boolean preemptive) {
+            this.preemptive = preemptive;
+        }
+
+        public boolean getPreemptiveAuthentication() {
+            return this.preemptive;
+        }
+
+        public String getDomain() {
+            return domain;
+        }
+
+        public void setDomain(String domain) {
+            this.domain = domain;
+        }
+
+        public void setAuthSchemes(List authSchemes) {
+            this.authSchemes = authSchemes;
+        }
+
+        public List getAuthSchemes() {
+            return this.authSchemes;
+        }
+        public void setAllowedRetry(boolean allowedRetry){
+            this.allowedRetry = allowedRetry;
+        }
+        public boolean isAllowedRetry() {
+            return  this.allowedRetry;
+        }
+    }
+    public static class MailProperties{
+        final Properties mailProperties = new Properties();
+
+        private String password;
+
+        public void addProperty(String key, String value) {
+            mailProperties.put(key,value);
+        }
+
+        public void deleteProperty(String key) {
+            mailProperties.remove(key);
+        }
+
+        public Properties getProperties() {
+            return mailProperties;
+        }
+
+        public String getPassword() {
+            return password;
+        }
+
+        public void setPassword(String password) {
+            this.password = password;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java
new file mode 100644
index 0000000..6444cad
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java
@@ -0,0 +1,416 @@
+/*
+* Copyright 2004,2006 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.axis2.transport.http;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.deployment.DeploymentConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisDescription;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.PolicyInclude;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.util.ExternalPolicySerializer;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyRegistry;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.axiom.attachments.utils.IOUtils;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class ListingAgent extends AbstractAgent {
+
+    private static final String LIST_MULTIPLE_SERVICE_JSP_NAME =
+            "listServices.jsp";
+    private static final String LIST_SINGLE_SERVICE_JSP_NAME =
+            "listSingleService.jsp";
+    private static final String LIST_FAULTY_SERVICES_JSP_NAME = "listFaultyService.jsp";
+
+    public static final String RUNNING_PORT = "RUNNING_PORT";
+
+    public ListingAgent(ConfigurationContext aConfigContext) {
+        super(aConfigContext);
+    }
+
+    private void addTransportListner(String schema, int port) {
+        try {
+            TransportInDescription trsIn =
+                    configContext.getAxisConfiguration().getTransportIn(
+                            new QName(schema));
+            if (trsIn == null) {
+                trsIn = new TransportInDescription(new QName(schema));
+                trsIn.setReceiver(new HTTPSListener(port, schema));
+                configContext.getListenerManager().addListener(trsIn, true);
+            }
+        } catch (AxisFault axisFault) {
+            //
+        }
+    }
+
+    public void handle(HttpServletRequest httpServletRequest,
+                       HttpServletResponse httpServletResponse)
+            throws IOException, ServletException {
+        // httpServletRequest.getLocalPort() , giving me a build error so I had to use the followin
+        String filePart = httpServletRequest.getRequestURL().toString();
+        int ipindex = filePart.indexOf("//");
+        String ip;
+        if (ipindex >= 0) {
+            ip = filePart.substring(ipindex + 2, filePart.length());
+            int seperatorIndex = ip.indexOf(":");
+            int slashIndex = ip.indexOf("/");
+            String portstr = ip.substring(seperatorIndex + 1,
+                    slashIndex);
+            try {
+                addTransportListner(httpServletRequest.getScheme(), Integer.parseInt(portstr));
+            } catch (NumberFormatException e) {
+                //
+            }
+        }
+        String query = httpServletRequest.getQueryString();
+        if (query != null) {
+            if (query.indexOf("?wsdl2") > 0 || query.indexOf("?wsdl") > 0 || query.indexOf("?xsd") > 0) {
+                processListService(httpServletRequest, httpServletResponse);
+            } else {
+                super.handle(httpServletRequest, httpServletResponse);
+            }
+        } else {
+            super.handle(httpServletRequest, httpServletResponse);
+        }
+    }
+
+    protected void processListFaultyServices(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+        String serviceName = req.getParameter("serviceName");
+        if (serviceName != null) {
+            AxisService service = configContext.getAxisConfiguration().getService(serviceName);
+            req.getSession().setAttribute(Constants.SINGLE_SERVICE, service);
+        }
+        renderView(LIST_FAULTY_SERVICES_JSP_NAME, req, res);
+    }
+
+
+    protected void processIndex(HttpServletRequest httpServletRequest,
+                                HttpServletResponse httpServletResponse)
+            throws IOException, ServletException {
+        processListServices(httpServletRequest, httpServletResponse);
+    }
+
+    private String extractHostAndPort(String filePart, boolean isHttp) {
+        int ipindex = filePart.indexOf("//");
+        String ip = null;
+        if (ipindex >= 0) {
+            ip = filePart.substring(ipindex + 2, filePart.length());
+            int seperatorIndex = ip.indexOf(":");
+            int slashIndex = ip.indexOf("/");
+            String port;
+            if (seperatorIndex >= 0) {
+                port = ip.substring(seperatorIndex + 1, slashIndex);
+                ip = ip.substring(0, seperatorIndex);
+            } else {
+                ip = ip.substring(0, slashIndex);
+                port = "80";
+            }
+            if (isHttp) {
+                configContext.setProperty(RUNNING_PORT, port);
+            }
+        }
+        return ip;
+    }
+
+
+    public void processListService(HttpServletRequest req,
+                                   HttpServletResponse res)
+            throws IOException, ServletException {
+
+        String filePart = req.getRequestURL().toString();
+        String serviceName = filePart.substring(filePart.lastIndexOf("/") + 1,
+                filePart.length());
+        HashMap services = configContext.getAxisConfiguration().getServices();
+        String query = req.getQueryString();
+        int wsdl2 = query.indexOf("wsdl2");
+        int wsdl = query.indexOf("wsdl");
+        int xsd = query.indexOf("xsd");
+        int policy = query.indexOf("policy");
+        
+        if ((services != null) && !services.isEmpty()) {
+            Object serviceObj = services.get(serviceName);
+            if (serviceObj != null) {
+                boolean isHttp = "http".equals(req.getScheme());
+                if (wsdl2 >= 0) {
+                    OutputStream out = res.getOutputStream();
+                    res.setContentType("text/xml");
+                    String ip = extractHostAndPort(filePart, isHttp);
+                    ((AxisService) serviceObj).printWSDL2(out, ip, configContext.getServiceContextPath());
+                    out.flush();
+                    out.close();
+                    return;
+                } else if (wsdl >= 0) {
+                    OutputStream out = res.getOutputStream();
+                    res.setContentType("text/xml");
+                    String ip = extractHostAndPort(filePart, isHttp);
+                    ((AxisService) serviceObj).printWSDL(out, ip, configContext.getServicePath());
+                    out.flush();
+                    out.close();
+                    return;
+                } else if (xsd >= 0) {
+                    OutputStream out = res.getOutputStream();
+                    res.setContentType("text/xml");
+                    AxisService axisService = (AxisService) serviceObj;
+                    //call the populator
+                    axisService.populateSchemaMappings();
+                    Map schemaMappingtable =
+                            axisService.getSchemaMappingTable();
+                    ArrayList schemas = axisService.getSchema();
+
+                    //a name is present - try to pump the requested schema
+                    String xsds = req.getParameter("xsd");
+                    if (!"".equals(xsds)) {
+                        XmlSchema schema =
+                                (XmlSchema) schemaMappingtable.get(xsds);
+                        if (schema != null) {
+                            //schema is there - pump it outs
+                            schema.write(out);
+                            out.flush();
+                            out.close();
+                        } else {
+                            InputStream in = axisService.getClassLoader().getResourceAsStream(DeploymentConstants.META_INF + "/" + xsds);
+                            if(in != null) {
+                                out.write(IOUtils.getStreamAsByteArray(in));
+                                out.flush();
+                                out.close();
+                            } else {
+                                res.sendError(HttpServletResponse.SC_NOT_FOUND);
+                            }
+                        }
+
+                        //multiple schemas are present and the user specified
+                        //no name - in this case we cannot possibly pump a schema
+                        //so redirect to the service root
+                    } else if (schemas.size() > 1) {
+                        res.sendRedirect("");
+                        //user specified no name and there is only one schema
+                        //so pump that out
+                    } else {
+                        XmlSchema schema = axisService.getSchema(0);
+                        if (schema != null) {
+                            schema.write(out);
+                            out.flush();
+                            out.close();
+                        }
+                    }
+                    return;
+                } else if (policy >= 0) {
+                    
+                    OutputStream out = res.getOutputStream();
+                    
+                    ExternalPolicySerializer serializer = new ExternalPolicySerializer();
+                    serializer.setAssertionsToFilter(configContext
+                            .getAxisConfiguration().getLocalPolicyAssertions());
+
+                    // check whether Id is set
+                    String idParam = req.getParameter("id");
+
+                    if (idParam != null) {
+                        // Id is set
+
+                        Policy targetPolicy = findPolicy(idParam, (AxisService) serviceObj);
+
+                        if (targetPolicy != null) {
+                            XMLStreamWriter writer;
+
+                            try {
+                                writer = XMLOutputFactory.newInstance()
+                                        .createXMLStreamWriter(out);
+
+                                res.setContentType("text/xml");
+                                targetPolicy.serialize(writer);
+                                writer.flush();
+
+                            } catch (XMLStreamException e) {
+                                throw new ServletException(
+                                        "Error occured when serializing the Policy",
+                                        e);
+
+                            } catch (FactoryConfigurationError e) {
+                                throw new ServletException(
+                                        "Error occured when serializing the Policy",
+                                        e);
+                            }
+
+                        } else {
+
+                            res.setContentType("text/html");
+                            String outStr = "<b>No policy found for id="
+                                    + idParam + "</b>";
+                            out.write(outStr.getBytes());
+                        }
+
+                    } else {
+                        
+                        PolicyInclude policyInclude = ((AxisService) serviceObj).getPolicyInclude();
+                        Policy effecPolicy = policyInclude.getEffectivePolicy();
+
+                        if (effecPolicy != null) {
+                            XMLStreamWriter writer;
+
+                            try {
+                                writer = XMLOutputFactory.newInstance()
+                                        .createXMLStreamWriter(out);
+
+                                res.setContentType("text/xml");
+                                effecPolicy.serialize(writer);
+                                writer.flush();
+
+                            } catch (XMLStreamException e) {
+                                throw new ServletException(
+                                        "Error occured when serializing the Policy",
+                                        e);
+
+                            } catch (FactoryConfigurationError e) {
+                                throw new ServletException(
+                                        "Error occured when serializing the Policy",
+                                        e);
+                            }
+                        } else {
+
+                            res.setContentType("text/html");
+                            String outStr = "<b>No effective policy for "
+                                    + serviceName + " servcie</b>";
+                            out.write(outStr.getBytes());
+                        }                        
+                    }
+                  
+                    return;
+                } else {
+                    req.getSession().setAttribute(Constants.SINGLE_SERVICE,
+                            serviceObj);
+                }
+            } else {
+                req.getSession().setAttribute(Constants.SINGLE_SERVICE, null);
+            }
+        }
+
+        renderView(LIST_SINGLE_SERVICE_JSP_NAME, req, res);
+    }
+
+    protected void processListServices(HttpServletRequest req,
+                                       HttpServletResponse res)
+            throws IOException, ServletException {
+
+        populateSessionInformation(req);
+        req.getSession().setAttribute(Constants.ERROR_SERVICE_MAP,
+                configContext.getAxisConfiguration().getFaultyServices());
+
+        renderView(LIST_MULTIPLE_SERVICE_JSP_NAME, req, res);
+    }
+    
+    private Policy findPolicy(String id, AxisDescription des) {
+
+        List policyElements = des.getPolicyInclude().getPolicyElements();
+        PolicyRegistry registry = des.getPolicyInclude().getPolicyRegistry();
+
+        Object policyComponent = null;
+
+        Policy policy = registry.lookup(id);
+
+        if (policy != null) {
+            return policy;
+        }
+
+        for (Iterator iterator = policyElements.iterator(); iterator.hasNext();) {
+            policyComponent = iterator.next();
+
+            if (policyComponent instanceof Policy) {
+                // policy found for the id
+
+                if (id.equals(((Policy) policyComponent).getId())) {
+                    return (Policy) policyComponent;
+                }
+            }
+        }
+
+        AxisDescription child;
+
+        for (Iterator iterator = des.getChildren(); iterator.hasNext();) {
+            child = (AxisDescription) iterator.next();
+            policy = findPolicy(id, child);
+
+            if (policy != null) {
+                return policy;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * This class is just to add tarnsport at the runtime if user send requet using
+     * diffrent schemes , simly to handle http/https seperetaly
+     */
+    private class HTTPSListener implements TransportListener {
+
+        private int port;
+        private String schema;
+        private ConfigurationContext axisConf;
+
+        public HTTPSListener(int port, String schema) {
+            this.port = port;
+            this.schema = schema;
+        }
+
+        public void init(ConfigurationContext axisConf,
+                         TransportInDescription transprtIn) throws AxisFault {
+            this.axisConf = axisConf;
+        }
+
+        public void start() throws AxisFault {
+        }
+
+        public void stop() throws AxisFault {
+        }
+
+        public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
+            return new EndpointReference[]{new EndpointReference(schema + "://" + ip + ":" + port + "/" + axisConf.getServiceContextPath() + "/" + serviceName)};  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
+            return getEPRsForService(serviceName, ip)[0];
+        }
+
+
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/RESTSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/RESTSender.java
new file mode 100644
index 0000000..9bf0de1
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/RESTSender.java
@@ -0,0 +1,477 @@
+/*

+* Copyright 2004,2005 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.axis2.transport.http;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axiom.soap.SOAP11Constants;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.i18n.Messages;

+import org.apache.commons.httpclient.Header;

+import org.apache.commons.httpclient.HttpClient;

+import org.apache.commons.httpclient.HttpStatus;

+import org.apache.commons.httpclient.HttpVersion;

+import org.apache.commons.httpclient.methods.GetMethod;

+import org.apache.commons.httpclient.methods.PostMethod;

+import org.apache.commons.httpclient.methods.RequestEntity;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.FactoryConfigurationError;

+import java.io.IOException;

+import java.io.OutputStream;

+import java.io.ByteArrayOutputStream;

+import java.net.MalformedURLException;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Iterator;

+

+public class RESTSender extends AbstractHTTPSender {

+    private static final Log log = LogFactory.getLog(RESTSender.class);

+

+    /*Obtain two strings;one to go in the url and rest to pass in the body

+    **when doing POST in application/x-www-form-urlencoded form.

+    */

+    public RequestData createRequest(MessageContext msgContext, OMElement dataout) {

+

+        RequestData data = new RequestData();

+        Iterator iter1 = dataout.getChildElements();

+        ArrayList paraList = new ArrayList();

+        ArrayList urlList = new ArrayList();

+

+        // urlParameterList contains the parameters which go in the URL

+        String[] urlParameterList = new String[0];

+        if (msgContext.getProperty(Constants.Configuration.URL_PARAMETER_LIST) != null) {

+            urlParameterList = (String[]) msgContext.getProperty(Constants.Configuration.URL_PARAMETER_LIST);

+        }

+        OMElement bodypara = OMAbstractFactory.getOMFactory().createOMElement("temp", null);

+

+        while (iter1.hasNext()) {

+            OMElement ele = (OMElement) iter1.next();

+            boolean has = false;

+

+            for (int i = 0; i < urlParameterList.length; i++) {

+                if (urlParameterList[i].equals(ele.getLocalName())) {

+                    has = true;

+

+                    break;

+                }

+            }

+

+            String parameter1;

+

+            if (has) {

+                parameter1 = ele.getLocalName() + "=" + ele.getText();

+                urlList.add(parameter1);

+            } else {

+                bodypara.addChild(ele);

+            }

+        }

+

+        String urlString = "";

+        for (int i = 0; i < urlList.size(); i++) {

+            String c = (String) urlList.get(i);

+            urlString = "".equals(urlString) ? c : (urlString + "&" + c);

+            data.urlRequest = urlString;

+        }

+

+        Iterator it = bodypara.getChildElements();

+

+        while (it.hasNext()) {

+            OMElement ele1 = (OMElement) it.next();

+            String parameter2;

+

+            parameter2 = ele1.getLocalName() + "=" + ele1.getText();

+            paraList.add(parameter2);

+        }

+

+        String paraString = "";

+

+        for (int j = 0; j < paraList.size(); j++) {

+            String b = (String) paraList.get(j);

+            paraString = "".equals(paraString) ? b : (paraString + "&" + b);

+            data.bodyRequest = paraString;

+        }

+

+        return data;

+    }

+

+    /**

+     * By this time, you must have identified that you are doing REST here. Following default values

+     * will apply.

+     * If the HTTPMethod is not set, I prefer to set it as POST by default.

+     *

+     * @param msgContext

+     * @param dataout

+     * @param url

+     * @param soapActionString

+     */

+    public void send(MessageContext msgContext, OMElement dataout, URL url,

+                     String soapActionString) {

+        try {

+            String httpMethod =

+                    (String) msgContext.getProperty(Constants.Configuration.HTTP_METHOD);

+

+            if ((httpMethod != null)

+                    && Constants.Configuration.HTTP_METHOD_GET.equalsIgnoreCase(httpMethod)) {

+                this.sendViaGet(msgContext, url);

+

+                return;

+            }

+

+            this.sendViaPost(msgContext, dataout, url, soapActionString);

+        } catch (Exception e) {

+            log.error("Error in extracting transport properties from message context", e);

+        }

+    }

+

+    private void sendViaGet(MessageContext msgContext, URL url)

+            throws MalformedURLException, AxisFault, IOException {

+        String param = getParam(msgContext);

+        GetMethod getMethod = new GetMethod();

+        if (isAuthenticationEnabled(msgContext)) {

+            getMethod.setDoAuthentication(true);

+        }

+

+        if (param != null && param.length() > 0) {

+            getMethod.setPath(url.getFile() + "?" + param);

+        } else {

+            getMethod.setPath(url.getFile());

+        }

+

+        // Serialization as "application/x-www-form-urlencoded"

+        String charEncoding =

+                (String) msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);

+

+        // Default encoding scheme

+        if (charEncoding == null) {

+            getMethod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE,

+                    HTTPConstants.MEDIA_TYPE_X_WWW_FORM + "; charset="

+                            + MessageContext.DEFAULT_CHAR_SET_ENCODING);

+        } else {

+            getMethod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE,

+                    HTTPConstants.MEDIA_TYPE_X_WWW_FORM + "; charset="

+                            + charEncoding);

+        }

+

+        HttpClient httpClient = getHttpClient(msgContext);

+        executeMethod(httpClient, msgContext, url, getMethod);

+

+        if (getMethod.getStatusCode() == HttpStatus.SC_OK) {

+            processResponse(getMethod, msgContext);

+        } else if (getMethod.getStatusCode() == HttpStatus.SC_ACCEPTED) {

+        } else if (getMethod.getStatusCode() == HttpStatus.SC_INTERNAL_SERVER_ERROR) {

+            Header contenttypeHheader =

+                    getMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);

+            String value = contenttypeHheader.getValue();

+

+            if (value != null) {

+                if ((value.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) >= 0)

+                        || (value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >= 0)) {

+                    processResponse(getMethod, msgContext);

+                }

+            }

+        } else {

+            throw new AxisFault(Messages.getMessage("transportError",

+                    String.valueOf(getMethod.getStatusCode()),

+                    getMethod.getResponseBodyAsString()));

+        }

+    }

+

+    private void sendViaPost(MessageContext msgContext, OMElement dataout, URL url,

+                             String soapActionString) {

+

+        // execute the HtttpMethodBase - a connection manager can be given for

+        // handle multiple

+        HttpClient httpClient = getHttpClient(msgContext);

+

+        PostMethod postMethod = new PostMethod(url.toString());

+        if(isAuthenticationEnabled(msgContext)) {

+            postMethod.setDoAuthentication(true);

+        }

+        String httpContentType;

+

+        if (msgContext.getProperty(Constants.Configuration.CONTENT_TYPE) != null) {

+            httpContentType = (String) msgContext.getProperty(Constants.Configuration.CONTENT_TYPE);

+        } else {

+            httpContentType = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;

+        }

+

+        String charEncoding =

+                (String) msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);

+

+        if (charEncoding == null) {

+            charEncoding = MessageContext.DEFAULT_CHAR_SET_ENCODING;

+        }

+

+        // if POST as application/x-www-form-urlencoded

+        RequestData reqData;

+

+        if (httpContentType.equalsIgnoreCase(HTTPConstants.MEDIA_TYPE_X_WWW_FORM)) {

+            reqData = createRequest(msgContext, dataout);

+            postMethod.setPath(url.getPath() + ((reqData.urlRequest) != null

+                    ? ("?" + reqData.urlRequest)

+                    : ""));

+

+            if (reqData.bodyRequest == null) {

+                reqData.bodyRequest = "0";

+            }

+            postMethod.setRequestEntity(new AxisRESTRequestEntity(reqData.bodyRequest,httpContentType));

+

+        } else {

+            postMethod.setPath(url.getPath());

+            postMethod.setRequestEntity(new AxisRequestEntity(dataout, chunked, msgContext,

+                    charEncoding, soapActionString));

+        }

+

+        if (!httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10) && chunked) {

+            postMethod.setContentChunked(true);

+        }

+

+        postMethod.setRequestHeader(HTTPConstants.HEADER_HOST, url.getHost());

+

+        if (httpVersion != null) {

+            if (httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10)) {

+                httpClient.getParams().setVersion(HttpVersion.HTTP_1_0);

+                postMethod.setRequestHeader(HTTPConstants.HEADER_CONNECTION,

+                        HTTPConstants.HEADER_CONNECTION_KEEPALIVE);

+            } else {

+

+                // allowing keep-alive for 1.1

+                postMethod.setRequestHeader(HTTPConstants.HEADER_CONNECTION,

+                        HTTPConstants.HEADER_CONNECTION_KEEPALIVE);

+                postMethod.setRequestHeader(HTTPConstants.HEADER_EXPECT,

+                        HTTPConstants.HEADER_EXPECT_100_Continue);

+            }

+        }

+

+        /**

+         * main excecution takes place..

+         */

+        try {

+            executeMethod(httpClient, msgContext, url, postMethod);

+

+            if (postMethod.getStatusCode() == HttpStatus.SC_OK) {

+                processResponse(postMethod, msgContext);

+

+                return;

+            } else if (postMethod.getStatusCode() == HttpStatus.SC_ACCEPTED) {

+                return;

+            } else if (postMethod.getStatusCode() == HttpStatus.SC_INTERNAL_SERVER_ERROR) {

+                Header contenttypeHheader =

+                        postMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);

+

+                if (contenttypeHheader != null) {

+                    String value = contenttypeHheader.getValue();

+

+                    if ((value.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) >= 0)

+                            || (value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >= 0)) {

+                        processResponse(postMethod, msgContext);

+

+                        return;

+                    }

+                }

+            }

+

+            throw new AxisFault(Messages.getMessage("transportError",

+                    String.valueOf(postMethod.getStatusCode()),

+                    postMethod.getResponseBodyAsString()));

+        } catch (Exception e) {

+            log.error("Error in processing POST request", e);

+        }

+    }

+

+    public String getParam(MessageContext msgContext) {

+        OMElement dataOut;

+

+        dataOut = msgContext.getEnvelope().getBody().getFirstElement();

+

+        Iterator iter1 = dataOut.getChildElements();

+        ArrayList paraList = new ArrayList();

+

+        while (iter1.hasNext()) {

+            OMElement ele = (OMElement) iter1.next();

+            String parameter;

+

+            parameter = ele.getLocalName() + "=" + ele.getText();

+            paraList.add(parameter);

+        }

+

+        String paraString = "";

+        int count = paraList.size();

+

+        for (int i = 0; i < count; i++) {

+            String c = (String) paraList.get(i);

+            paraString = "".equals(paraString) ? c : (paraString + "&" + c);

+        }

+

+        return paraString;

+    }

+

+    public class AxisRequestEntity implements RequestEntity {

+        private boolean doingMTOM = false;

+        private byte[] bytes;

+        private String charSetEnc;

+        private boolean chunked;

+        private OMElement element;

+        private MessageContext msgCtxt;

+        private String soapActionString;

+

+        public AxisRequestEntity(OMElement element, boolean chunked,

+                                 MessageContext msgCtxt,

+                                 String charSetEncoding,

+                                 String soapActionString) {

+            this.element = element;

+            this.chunked = chunked;

+            this.msgCtxt = msgCtxt;

+            this.doingMTOM = msgCtxt.isDoingMTOM();

+            this.charSetEnc = charSetEncoding;

+            this.soapActionString = soapActionString;

+        }

+

+        private void handleOMOutput(OutputStream out, boolean doingMTOM)

+                throws XMLStreamException {

+            format.setDoOptimize(doingMTOM);

+            element.serializeAndConsume(out, format);

+        }

+

+        public byte[] writeBytes() throws AxisFault {

+            try {

+                ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();

+

+                if (!doingMTOM) {

+                    OMOutputFormat format2 = new OMOutputFormat();

+

+                    format2.setCharSetEncoding(charSetEnc);

+                    element.serializeAndConsume(bytesOut, format2);

+

+                    return bytesOut.toByteArray();

+                } else {

+                    format.setCharSetEncoding(charSetEnc);

+                    format.setDoOptimize(true);

+                    element.serializeAndConsume(bytesOut, format);

+

+                    return bytesOut.toByteArray();

+                }

+            } catch (XMLStreamException e) {

+                throw new AxisFault(e);

+            } catch (FactoryConfigurationError e) {

+                throw new AxisFault(e);

+            }

+        }

+

+        public void writeRequest(OutputStream out) throws IOException {

+            try {

+                {

+                    if (chunked) {

+                        this.handleOMOutput(out, doingMTOM);

+                    } else {

+                        if (bytes == null) {

+                            bytes = writeBytes();

+                        }

+

+                        out.write(bytes);

+                    }

+                }

+

+                out.flush();

+            } catch (XMLStreamException e) {

+                throw new AxisFault(e);

+            } catch (FactoryConfigurationError e) {

+                throw new AxisFault(e);

+            } catch (IOException e) {

+                throw new AxisFault(e);

+            }

+        }

+

+        public long getContentLength() {

+            try {

+                {

+                    if (chunked) {

+                        return -1;

+                    } else {

+                        if (bytes == null) {

+                            bytes = writeBytes();

+                        }

+

+                        return bytes.length;

+                    }

+                }

+            } catch (AxisFault e) {

+                return -1;

+            }

+        }

+

+        public String getContentType() {

+            String encoding = format.getCharSetEncoding();

+            String contentType = format.getContentType();

+

+            if (encoding != null) {

+                contentType += "; charset=" + encoding;

+            }

+

+            // action header is not mandated in SOAP 1.2. So putting it, if available

+            if (!msgCtxt.isSOAP11() && (soapActionString != null)

+                && !"".equals(soapActionString.trim()) && ! "\"\"".equals(soapActionString.trim())) {

+                contentType =

+                        contentType + ";action=\"" + soapActionString + "\";";

+            }

+

+            return contentType;

+        }

+

+        public boolean isRepeatable() {

+            return true;

+        }

+    }

+

+    public class AxisRESTRequestEntity implements RequestEntity {

+        private String contentType;

+        private String postRequestBody;

+

+        public AxisRESTRequestEntity(String postRequestBody,String contentType) {

+            this.postRequestBody = postRequestBody;

+            this.contentType = contentType;

+        }

+

+        public void writeRequest(OutputStream output) throws IOException {

+            output.write(postRequestBody.getBytes());

+        }

+

+        public long getContentLength() {

+            return this.postRequestBody.getBytes().length;

+        }

+

+        public String getContentType() {

+            return this.contentType;

+        }

+

+        public boolean isRepeatable() {

+            return true;

+        }

+    }

+

+    private class RequestData {

+        private String bodyRequest;

+        private String urlRequest;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/SOAPOverHTTPSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/SOAPOverHTTPSender.java
new file mode 100644
index 0000000..05e02bc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/SOAPOverHTTPSender.java
@@ -0,0 +1,290 @@
+/*

+* Copyright 2004,2005 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.axis2.transport.http;

+

+import java.io.ByteArrayOutputStream;

+import java.io.IOException;

+import java.io.OutputStream;

+import java.io.StringWriter;

+import java.net.MalformedURLException;

+import java.net.URL;

+import java.util.zip.GZIPOutputStream;

+

+import javax.xml.stream.FactoryConfigurationError;

+import javax.xml.stream.XMLStreamException;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axiom.om.impl.MIMEOutputUtils;

+import org.apache.axiom.soap.SOAP11Constants;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.util.JavaUtils;

+import org.apache.commons.httpclient.Header;

+import org.apache.commons.httpclient.HttpClient;

+import org.apache.commons.httpclient.HttpStatus;

+import org.apache.commons.httpclient.HttpVersion;

+import org.apache.commons.httpclient.methods.PostMethod;

+import org.apache.commons.httpclient.methods.RequestEntity;

+

+public class SOAPOverHTTPSender extends AbstractHTTPSender {

+

+

+    public void send(MessageContext msgContext, OMElement dataout, URL url, String soapActionString)

+            throws MalformedURLException, AxisFault, IOException {

+

+        // execute the HtttpMethodBase - a connection manager can be given for

+        // handle multiple

+        HttpClient httpClient = getHttpClient(msgContext);

+        PostMethod postMethod = new PostMethod(url.toString());

+        if (isAuthenticationEnabled(msgContext)) {

+            postMethod.setDoAuthentication(true);

+        }

+

+        String charEncoding =

+                (String) msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);

+

+        if (charEncoding == null) {

+            charEncoding = MessageContext.DEFAULT_CHAR_SET_ENCODING;

+        }

+

+        postMethod.setPath(url.getPath());

+        postMethod.setRequestEntity(new AxisSOAPRequestEntity(dataout, chunked, msgContext,

+                charEncoding, soapActionString));

+

+        if (!httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10) && chunked) {

+            postMethod.setContentChunked(true);

+        }

+

+        if (msgContext.isSOAP11()) {

+            if ("".equals(soapActionString)){

+               //if the soap action is empty then we should add two ""

+               postMethod.setRequestHeader(HTTPConstants.HEADER_SOAP_ACTION, "\"\"");

+            }else{

+                if (soapActionString != null && !soapActionString.startsWith("\"")) {  // SOAPAction string must be a quoted string

+                    soapActionString = "\"" + soapActionString + "\"";

+                }

+                postMethod.setRequestHeader(HTTPConstants.HEADER_SOAP_ACTION, soapActionString);

+            }

+

+        } else {

+        }

+        //setting the cookie in the out path

+        Object cookieString = msgContext.getProperty(HTTPConstants.COOKIE_STRING);

+        if (cookieString != null) {

+            StringBuffer buffer = new StringBuffer();

+            buffer.append(Constants.SESSION_COOKIE);

+            buffer.append("=");

+            buffer.append(cookieString);

+            postMethod.setRequestHeader(HTTPConstants.HEADER_COOKIE, buffer.toString());

+        }

+

+        postMethod.setRequestHeader(HTTPConstants.HEADER_HOST, url.getHost());

+

+        if (httpVersion != null) {

+            if (httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10)) {

+                httpClient.getParams().setVersion(HttpVersion.HTTP_1_0);

+            } else {

+                postMethod.setRequestHeader(HTTPConstants.HEADER_EXPECT,

+                        HTTPConstants.HEADER_EXPECT_100_Continue);

+            }

+        }

+

+        // set timeout in client

+        long timeout = msgContext.getOptions().getTimeOutInMilliSeconds();

+        if (timeout != 0) {

+            httpClient.getParams().setSoTimeout((int)timeout);

+        }

+

+        /*

+         *   main excecution takes place..

+         */

+        executeMethod(httpClient, msgContext, url, postMethod);

+

+        /*

+         *   Execution is over

+         */

+        if (postMethod.getStatusCode() == HttpStatus.SC_OK) {

+            processResponse(postMethod, msgContext);

+            return;

+        } else if (postMethod.getStatusCode() == HttpStatus.SC_ACCEPTED) {

+            return;

+        } else if (postMethod.getStatusCode() == HttpStatus.SC_INTERNAL_SERVER_ERROR) {

+            Header contentTypeHeader =

+                    postMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);

+

+            if (contentTypeHeader != null) {

+                String value = contentTypeHeader.getValue();

+

+                if ((value.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) >= 0)

+                        || (value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >= 0)) {

+                    processResponse(postMethod, msgContext);

+

+                    return;

+                }

+            }

+        } else {

+            throw new AxisFault(Messages.getMessage("httpTransportError",

+                String.valueOf(postMethod.getStatusCode()), postMethod.getStatusText()), SOAP12Constants.FAULT_CODE_SENDER);

+        }

+

+        throw new AxisFault(Messages.getMessage("transportError",

+                String.valueOf(postMethod.getStatusCode()), postMethod.getResponseBodyAsString()));

+    }

+

+    public class AxisSOAPRequestEntity implements RequestEntity {

+        private boolean doingMTOM = false;

+        private boolean doingSWA = false;

+        private byte[] bytes;

+        private String charSetEnc;

+        private boolean chunked;

+        private OMElement element;

+        private MessageContext msgCtxt;

+        private String soapActionString;

+

+        public AxisSOAPRequestEntity(OMElement element, boolean chunked, MessageContext msgCtxt,

+                                     String charSetEncoding, String soapActionString) {

+            this.element = element;

+            this.chunked = chunked;

+            this.msgCtxt = msgCtxt;

+            this.doingMTOM = msgCtxt.isDoingMTOM();

+            this.doingSWA =  msgCtxt.isDoingSwA();

+            this.charSetEnc = charSetEncoding;

+            this.soapActionString = soapActionString;

+        }

+

+        private void handleOMOutput(OutputStream out, boolean doingMTOM)

+                throws XMLStreamException {

+            format.setDoOptimize(doingMTOM);

+			format.setDoingSWA(doingSWA);

+

+			if (!doingMTOM & doingSWA) {

+				 StringWriter bufferedSOAPBody = new StringWriter();

+				if (isAllowedRetry) {

+					element.serialize(bufferedSOAPBody, format);

+				} else {

+					element.serializeAndConsume(bufferedSOAPBody, format);

+				}

+				MIMEOutputUtils.writeSOAPWithAttachmentsMessage(bufferedSOAPBody,out,msgCtxt.getAttachmentMap(), format);

+			} else {

+				if (isAllowedRetry) {

+					element.serialize(out, format);

+				} else {

+					element.serializeAndConsume(out, format);

+				}

+			}

+        }

+

+        public byte[] writeBytes() throws AxisFault {

+            try {

+                ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();

+

+                if (!doingMTOM) {

+                	// why are we creating a new OMOutputFormat

+                    OMOutputFormat format2 = new OMOutputFormat();

+					format2.setCharSetEncoding(charSetEnc);

+					if (doingSWA) {

+			            StringWriter bufferedSOAPBody = new StringWriter();

+			            element.serializeAndConsume(bufferedSOAPBody,format2);

+						MIMEOutputUtils.writeSOAPWithAttachmentsMessage(bufferedSOAPBody,bytesOut,msgCtxt.getAttachmentMap(), format2);

+					} else {

+						element.serializeAndConsume(bytesOut, format2);

+					}

+                    return bytesOut.toByteArray();

+                } else {

+                    format.setCharSetEncoding(charSetEnc);

+                    format.setDoOptimize(true);

+                    element.serializeAndConsume(bytesOut, format);

+

+                    return bytesOut.toByteArray();

+                }

+            } catch (XMLStreamException e) {

+                throw new AxisFault(e);

+            } catch (FactoryConfigurationError e) {

+                throw new AxisFault(e);

+            }

+        }

+

+        public void writeRequest(OutputStream out) throws IOException {

+            Object gzip = msgCtxt.getOptions().getProperty(HTTPConstants.MC_GZIP_REQUEST);

+            if(gzip != null && JavaUtils.isTrueExplicitly(gzip) && chunked) {

+                out = new GZIPOutputStream(out);

+            }

+            try {

+                if (chunked) {

+                    this.handleOMOutput(out, doingMTOM);

+                } else {

+                    if (bytes == null) {

+                        bytes = writeBytes();

+                    }

+

+                    out.write(bytes);

+                }

+

+                if(out instanceof GZIPOutputStream){

+                    ((GZIPOutputStream)out).finish();

+                }

+                out.flush();

+            } catch (XMLStreamException e) {

+                throw new AxisFault(e);

+            } catch (FactoryConfigurationError e) {

+                throw new AxisFault(e);

+            } catch (IOException e) {

+                throw new AxisFault(e);

+            }

+        }

+

+        public long getContentLength() {

+            try {

+                if (chunked) {

+                    return -1;

+                } else {

+                    if (bytes == null) {

+                        bytes = writeBytes();

+                    }

+

+                    return bytes.length;

+                }

+            } catch (AxisFault e) {

+                return -1;

+            }

+        }

+

+        public String getContentType() {            

+        	String encoding = format.getCharSetEncoding();

+            String contentType = format.getContentType();

+

+            if (encoding != null) {

+                contentType += "; charset=" + encoding;

+            }

+

+            // action header is not mandated in SOAP 1.2. So putting it, if available

+            if (!msgCtxt.isSOAP11() && (soapActionString != null)

+                    && !"".equals(soapActionString.trim()) && ! "\"\"".equals(soapActionString.trim())) {

+                contentType = contentType + ";action=\"" + soapActionString + "\";";

+            }

+            return contentType;

+        }

+

+        public boolean isRepeatable() {

+            return true;

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java
new file mode 100644
index 0000000..9412600
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java
@@ -0,0 +1,34 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axis2.transport.OutTransportInfo;
+
+import javax.servlet.http.HttpServletResponse;
+
+public class ServletBasedOutTransportInfo implements OutTransportInfo {
+    private HttpServletResponse response;
+
+    public ServletBasedOutTransportInfo(HttpServletResponse response) {
+        this.response = response;
+    }
+
+    public void setContentType(String contentType) {
+        response.setContentType(contentType);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/SimpleHTTPServer.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/SimpleHTTPServer.java
new file mode 100644
index 0000000..0b5102f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/SimpleHTTPServer.java
@@ -0,0 +1,333 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.http;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.transport.http.server.HttpFactory;
+import org.apache.axis2.transport.http.server.HttpUtils;
+import org.apache.axis2.transport.http.server.SimpleHttpServer;
+import org.apache.axis2.util.OptionsParser;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.io.IOException;
+import java.net.SocketException;
+import java.util.Iterator;
+
+/**
+ * This is a simple implementation of an HTTP server for processing
+ * SOAP requests via Apache's xml-axis2.
+ * It can be used with no configuration other than the port to listen on, or it can
+ * be configured in detail with an HttpFactory.
+ */
+public class SimpleHTTPServer implements TransportListener {
+
+    private static final Log log = LogFactory.getLog(SimpleHTTPServer.class);
+
+    /**
+     * Embedded commons http core based server
+     */
+    SimpleHttpServer embedded = null;
+    int port = -1;
+
+    public static int DEFAULT_PORT = 8080;
+
+    private String hostAddress = null;
+
+    protected ConfigurationContext configurationContext;
+    protected HttpFactory httpFactory;
+
+    public SimpleHTTPServer() {
+    }
+
+    /**
+     * Create a SimpleHTTPServer using default HttpFactory settings
+     */
+    public SimpleHTTPServer(ConfigurationContext configurationContext, int port) throws AxisFault {
+        this(new HttpFactory(configurationContext, port));
+    }
+
+    /**
+     * Create a configured SimpleHTTPServer
+     */
+    public SimpleHTTPServer(HttpFactory httpFactory) throws AxisFault {
+        this.httpFactory = httpFactory;
+        this.configurationContext = httpFactory.getConfigurationContext();
+        this.port = httpFactory.getPort();
+        TransportInDescription httpDescription = new TransportInDescription(new QName(Constants.TRANSPORT_HTTP));
+        httpDescription.setReceiver(this);
+        httpFactory.getListenerManager().addListener(httpDescription, true);
+    }
+
+    /**
+     * init method in TransportListener
+     *
+     * @param axisConf
+     * @param transprtIn
+     * @throws AxisFault
+     */
+    public void init(ConfigurationContext axisConf, TransportInDescription transprtIn)
+            throws AxisFault {
+        try {
+            this.configurationContext = axisConf;
+
+            Parameter param = transprtIn.getParameter(PARAM_PORT);
+            if (param != null)
+                this.port = Integer.parseInt((String) param.getValue());
+
+            if (httpFactory == null)
+                httpFactory = new HttpFactory(configurationContext, port);
+
+            param = transprtIn.getParameter(HOST_ADDRESS);
+            if (param != null)
+                hostAddress = ((String) param.getValue()).trim();
+            else
+                hostAddress = httpFactory.getHostAddress();
+        } catch (Exception e1) {
+            throw new AxisFault(e1);
+        }
+    }
+
+    /**
+     * Method main
+     *
+     * @param args
+     * @throws Exception
+     */
+    public static void main(String[] args) throws Exception {
+        int port = DEFAULT_PORT;
+        OptionsParser optionsParser = new OptionsParser(args);
+
+        args = optionsParser.getRemainingArgs();
+        // first check if we should print usage
+        if ((optionsParser.isFlagSet('?') > 0) || (optionsParser.isFlagSet('h') > 0) ||
+                args == null || args.length == 0 || args.length > 3) {
+            printUsage();
+        }
+        String paramPort = optionsParser.isValueSet('p');
+        if (paramPort != null) {
+            port = Integer.parseInt(paramPort);
+        }
+        
+        boolean startAllTransports = "all".equals(optionsParser.isValueSet('t'));
+        String repository= optionsParser.isValueSet('r');
+        if (repository ==null)
+        {
+        	args = optionsParser.getRemainingArgs();
+        	if (args!=null && args[0]!=null && args[0]!="")
+        	{
+        		repository = args[0];
+        	}
+        	else 
+        	{
+        		printUsage();
+        	}
+        }
+
+        System.out.println("[SimpleHTTPServer] Starting");
+        System.out.println("[SimpleHTTPServer] Using the Axis2 Repository "
+                + new File(repository).getAbsolutePath());
+        System.out.println("[SimpleHTTPServer] Listening on port " + port);
+        try {
+            ConfigurationContext configctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repository, null);
+            SimpleHTTPServer receiver = new SimpleHTTPServer(configctx, port);
+            Runtime.getRuntime().addShutdownHook(new ShutdownThread(receiver));
+            receiver.start();
+            ListenerManager listenerManager = configctx .getListenerManager();
+            TransportInDescription trsIn = new TransportInDescription(
+                    new QName(Constants.TRANSPORT_HTTP));
+            trsIn.setReceiver(receiver);
+            if (listenerManager == null) {
+                listenerManager = new ListenerManager();
+                listenerManager.init(configctx);
+            }
+            listenerManager.addListener(trsIn, true);
+
+            // should all transports be started? specified as "-t all"
+            if (startAllTransports) {
+                Iterator iter = configctx.getAxisConfiguration().
+                    getTransportsIn().keySet().iterator();
+                while (iter.hasNext()) {
+                    QName trp = (QName) iter.next();
+                    if (!new QName(Constants.TRANSPORT_HTTP).equals(trp)) {
+                        trsIn = (TransportInDescription)
+                            configctx.getAxisConfiguration().getTransportsIn().get(trp);
+                        listenerManager.addListener(trsIn, false);
+                    }
+                }
+            }
+
+            System.out.println("[SimpleHTTPServer] Started");
+        } catch (Throwable t) {
+            log.fatal("Error starting SimpleHTTPServer", t);
+            System.out.println("[SimpleHTTPServer] Shutting down");
+        }
+    }
+
+    public static void printUsage() {
+        System.out.println("Usage: SimpleHTTPServer [options] -r <repository>");
+        System.out.println(" Opts: -? this message");
+        System.out.println();
+        System.out.println("       -p port :to listen on (default is 8080)");
+        System.out.println("       -t all  :to start all transports defined in the axis2 configuration");
+        System.exit(1);
+    }
+
+
+    /**
+     * Start this server as a NON-daemon.
+     */
+    public void start() throws AxisFault {
+        try {
+            embedded = new SimpleHttpServer(httpFactory, port);
+            embedded.init();
+            embedded.start();
+        } catch (IOException e) {
+            log.error(e);
+            throw new AxisFault(e);
+        }
+    }
+
+    /**
+     * Stop this server. Can be called safely if the system is already stopped,
+     * or if it was never started.
+     * This will interrupt any pending accept().
+     */
+    public void stop() {
+        System.out.println("[SimpleHTTPServer] Stop called");
+        if (embedded != null) {
+            try {
+                embedded.destroy();
+            } catch (Exception e) {
+                log.error(e);
+            }
+        }
+    }
+
+    /**
+     * replyToEPR
+     * If the user has given host address paramter then it gets the high priority and
+     * ERP will be creatd using that
+     * N:B - hostAddress should be a complete url (http://www.myApp.com/ws)
+     *
+     * @param serviceName
+     * @param ip
+     * @return an EndpointReference
+     * @see org.apache.axis2.transport.TransportListener#getEPRForService(String,String)
+     */
+    public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
+        //if host address is present
+        if (hostAddress != null) {
+            if (embedded != null) {
+                return new EndpointReference[] {new EndpointReference(hostAddress + "/" + configurationContext.getServiceContextPath() + "/" + serviceName)};
+            } else {
+                throw new AxisFault("Unable to generate EPR for the transport : http");
+            }
+        }
+        //if the host address is not present
+        String localAddress;
+        if (ip != null) {
+            localAddress = ip;
+        } else {
+            try {
+                localAddress = HttpUtils.getIpAddress();
+                if (localAddress == null) {
+                    localAddress = "127.0.0.1";
+                }
+            } catch (SocketException e) {
+                throw AxisFault.makeFault(e);
+            }
+        }
+        if (embedded != null) {
+            return new EndpointReference[] {new EndpointReference("http://" + localAddress + ":" +
+                    (embedded.getPort())
+                    + "/" + configurationContext.getServiceContextPath() + "/" + serviceName)};
+        } else {
+            throw new AxisFault("Unable to generate EPR for the transport : http");
+        }
+    }
+
+    /**
+     * Getter for httpFactory
+     */
+    public HttpFactory getHttpFactory() {
+        return httpFactory;
+    }
+
+    /**
+     * Method getConfigurationContext
+     *
+     * @return the system context
+     */
+    public ConfigurationContext getConfigurationContext() {
+        return configurationContext;
+    }
+
+    /**
+     * replyToEPR
+     * If the user has given host address paramter then it gets the high priority and
+     * ERP will be creatd using that
+     * N:B - hostAddress should be a complte url (http://www.myApp.com/ws)
+     *
+     * @param serviceName
+     * @param ip
+     * @return an EndpointReference
+     * @see org.apache.axis2.transport.TransportListener#getEPRForService(String,String)
+     */
+    public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
+        return getEPRsForService(serviceName, ip)[0];
+    }
+
+    /**
+     * Checks if this HTTP server instance is running.
+     *
+     * @return true/false
+     */
+    public boolean isRunning() {
+        if (embedded == null) {
+            return false;
+        }
+
+        return embedded.isRunning();
+    }
+
+    static class ShutdownThread extends Thread {
+        private SimpleHTTPServer server = null;
+
+        public ShutdownThread(SimpleHTTPServer server) {
+            super();
+            this.server = server;
+        }
+
+        public void run() {
+            System.out.println("[SimpleHTTPServer] Shutting down");
+            server.stop();
+            System.out.println("[SimpleHTTPServer] Shutdown complete");
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/TransportHeaders.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/TransportHeaders.java
new file mode 100644
index 0000000..1f424d8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/TransportHeaders.java
@@ -0,0 +1,131 @@
+/*

+* Copyright 2004,2005 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.axis2.transport.http;

+

+import javax.servlet.http.HttpServletRequest;

+import java.util.Collection;

+import java.util.Enumeration;

+import java.util.HashMap;

+import java.util.Map;

+import java.util.Set;

+

+/**

+ * Pass-Thru / delayed get of the values from HttpServletRequest

+ */

+public class TransportHeaders implements Map {

+    HttpServletRequest req;

+    HashMap headerMap = null;

+

+    public TransportHeaders(HttpServletRequest req) {

+        this.req = req;

+    }

+

+    private void init() {

+        headerMap = new HashMap();

+        Enumeration headerNames = req.getHeaderNames();

+

+        while (headerNames.hasMoreElements()) {

+            String key = (String) headerNames.nextElement();

+            String value = req.getHeader(key);

+

+            headerMap.put(key, value);

+        }

+    }

+

+    public int size() {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.size();

+    }

+

+    public void clear() {

+        if (headerMap != null) {

+            headerMap.clear();

+        }

+    }

+

+    public boolean isEmpty() {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.isEmpty();

+    }

+

+    public boolean containsKey(Object key) {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.containsKey(key);

+    }

+

+    public boolean containsValue(Object value) {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.containsValue(value);

+    }

+

+    public Collection values() {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.values();

+    }

+

+    public void putAll(Map t) {

+        if (headerMap == null) {

+            init();

+        }

+        headerMap.putAll(t);

+    }

+

+    public Set entrySet() {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.entrySet();

+    }

+

+    public Set keySet() {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.entrySet();

+    }

+

+    public Object get(Object key) {

+        if (headerMap == null) {

+            return req.getHeader((String)key);

+        }

+        return headerMap.get(key);

+    }

+

+    public Object remove(Object key) {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.remove(key);

+    }

+

+    public Object put(Object key, Object value) {

+        if (headerMap == null) {

+            init();

+        }

+        return headerMap.put(key, value);

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/AxisParams.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/AxisParams.java
new file mode 100644
index 0000000..637019c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/AxisParams.java
@@ -0,0 +1,39 @@
+/*
+* $HeadURL$
+* $Revision$
+* $Date$
+*
+* ====================================================================
+*
+*  Copyright 1999-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.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+package org.apache.axis2.transport.http.server;
+
+public class AxisParams {
+    
+    private AxisParams() {
+    }
+
+    public static final String LISTENER_PORT = "axis.listener.port";
+    
+    public static final String MESSAGE_CONTEXT = "axis.message.context";
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/ConnectionListenerFailureHandler.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/ConnectionListenerFailureHandler.java
new file mode 100644
index 0000000..3c9f9bc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/ConnectionListenerFailureHandler.java
@@ -0,0 +1,48 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+public interface ConnectionListenerFailureHandler {
+    
+    /** The associated connection listener IOProcessor has failed
+     * @param connectionListener the associated connection listener
+     * @param cause cause of failure
+     * @return true if the listener should attempt to re-establish itself, false if it should terminate.
+     */
+    public boolean failed(IOProcessor connectionListener, Throwable cause);
+    
+    /** The associated connection listener IOProcessor is terminating abnormally
+     * @param connectionListener the associated connection listener
+     * @param message explanation of termination
+     * @param cause last exception that is causing termination
+     */
+    public void notifyAbnormalTermination(IOProcessor connectionListener, String message, Throwable cause);
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListener.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListener.java
new file mode 100644
index 0000000..2013419
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListener.java
@@ -0,0 +1,124 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.HttpServerConnection;
+
+public class DefaultConnectionListener implements IOProcessor {
+
+    private static Log LOG = LogFactory.getLog(DefaultConnectionListener.class);
+	
+    private volatile boolean destroyed = false;
+
+    private final int port;
+    private final HttpConnectionFactory connfactory;
+    private final HttpConnectionManager connmanager;
+    private ServerSocket serversocket;
+    private final ConnectionListenerFailureHandler failureHandler;
+    
+    /** Default constructor called by HttpFactory.  A custom HttpFactory subclass can call the other constructor to provide a custom ConnectionListenerErrorHandler */
+    public DefaultConnectionListener(int port, HttpConnectionFactory connfactory, HttpConnectionManager connmanager) throws IOException {
+        this(port, connfactory, connmanager, new DefaultConnectionListenerFailureHandler());
+    }
+
+    /** Use this constructor to provide a custom ConnectionListenerFailureHandler, e.g. by subclassing DefaultConnectionListenerFailureHandler */
+    public DefaultConnectionListener(int port, HttpConnectionFactory connfactory, HttpConnectionManager connmanager,
+                                     ConnectionListenerFailureHandler failureHandler)
+    throws IOException {
+    	super();
+        if (connfactory == null)
+            throw new IllegalArgumentException("Connection factory may not be null");
+        if (connmanager == null)
+            throw new IllegalArgumentException("Connection manager may not be null");
+        if (failureHandler == null)
+            throw new IllegalArgumentException("Failure handler may not be null");
+        this.port = port;
+        this.connmanager = connmanager;
+        this.connfactory = connfactory;
+        this.serversocket = new ServerSocket(port);
+        this.failureHandler = failureHandler;
+    }
+
+    public void run() {
+    	if (LOG.isInfoEnabled()) {
+            LOG.info("Listening on port " + this.serversocket.getLocalPort());
+    	}
+        try {
+            while (!Thread.interrupted()) {
+                try {
+                    if (serversocket.isClosed())
+                        serversocket = new ServerSocket(port);
+                    LOG.debug("Waiting for incoming HTTP connection");
+                    Socket socket = this.serversocket.accept();
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("Incoming HTTP connection from " + 
+                        		socket.getRemoteSocketAddress());
+                    }
+                    HttpServerConnection conn = this.connfactory.newConnection(socket);
+                    this.connmanager.process(conn);
+                } catch (Throwable ex) {
+                    if (Thread.interrupted())
+                        break;
+                    if (!failureHandler.failed(this, ex))
+                        break;
+                }
+            }
+        } finally {
+            destroy();
+        }
+    }
+    
+	public void close() throws IOException {
+        this.serversocket.close();
+	}
+    
+    public void destroy() {
+        this.destroyed = true;
+        try {
+            close();
+        } catch (IOException ex) {
+            if (LOG.isWarnEnabled()) {
+                LOG.warn("I/O error closing listener", ex);
+            }
+        }
+    }
+
+    public boolean isDestroyed() {
+        return this.destroyed;
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListenerFailureHandler.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListenerFailureHandler.java
new file mode 100644
index 0000000..0dd7e92
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListenerFailureHandler.java
@@ -0,0 +1,102 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/** Default hander for failures in connection listener IOProcessors.
+ *  Supports configuration of number retries, delay per retry, and uptime interval considered a success (resets number retries to zero).
+ */
+public class DefaultConnectionListenerFailureHandler implements ConnectionListenerFailureHandler {
+    
+    private static final Log LOG = LogFactory.getLog(DefaultConnectionListenerFailureHandler.class);
+
+    protected int retryDelay;
+    protected int successInterval;
+    protected int maxRetries;
+    
+    private long lastFailure;
+    private long lastFirstFailure;
+    private int numRetries;
+    
+    /** Create a new DefaultConnectionListenerFailureHandler with default settings.
+     * retryDelay is 1 second, successInterval is 60 seconds, maxRetries is 10
+     */
+    public DefaultConnectionListenerFailureHandler() {
+        this(1000, 60000, 10);
+    }
+
+    /** Create a new DefaultConnectionListenerFailureHandler
+     * @param retryDelay millis to wait before retrying
+     * @param successInterval millis after which an initial or retry attempt will be deemed a success, resetting retry count to 0
+     * @param maxRetries maximum number of retries allowed without a success, after which the listener will terminate
+     */
+    public DefaultConnectionListenerFailureHandler(int retryDelay, int successInterval, int maxRetries) {
+        this.retryDelay = retryDelay;
+        this.successInterval = successInterval;
+        this.maxRetries = maxRetries;
+        this.lastFailure = this.lastFirstFailure = Long.MIN_VALUE;
+        this.numRetries = 0;
+    }
+
+    /** Default behavior is to log a warning and attempt retry per constructor config, eventually failing with a logged error and notification.
+     * May subclass and override this method to change the behavior.
+     */
+    public boolean failed(IOProcessor connectionListener, Throwable cause) {
+        long now = System.currentTimeMillis();
+        if (now > lastFailure+successInterval) {
+            numRetries = 0;
+            lastFirstFailure = now;
+        }
+        lastFailure = now;
+        if (numRetries >= maxRetries) {
+            notifyAbnormalTermination(
+                    connectionListener,
+                    "Terminating connection listener " + connectionListener + " after " + numRetries + "retries in " + (now-lastFirstFailure)/1000 + " seconds.",
+                    cause);
+            return false;
+        } else {
+            numRetries++;
+            if (LOG.isWarnEnabled())
+                LOG.warn("Attempt number " + numRetries + " of " + maxRetries + " to reestalish connection listener " + connectionListener + " due to failure ",
+                         cause);
+            return true;
+        }
+    }
+
+    /** Default bevarior is to log the error.
+     * May subclass and override this method to change behavior.
+     */
+    public void notifyAbnormalTermination(IOProcessor connectionListener, String message, Throwable cause) {
+        LOG.error(message, cause);
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionFactory.java
new file mode 100644
index 0000000..0849c3b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionFactory.java
@@ -0,0 +1,82 @@
+/*
+ * $HeadURL:https://svn.apache.org/repos/asf/jakarta/httpcomponents/trunk/coyote-httpconnector/src/java/org/apache/http/tcconnector/impl/DefaultHttpConnectionFactory.java $
+ * $Revision:379772 $
+ * $Date:2006-02-22 14:52:29 +0100 (Wed, 22 Feb 2006) $
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+import java.net.Socket;
+
+import org.apache.http.HttpServerConnection;
+import org.apache.http.impl.DefaultHttpServerConnection;
+import org.apache.http.params.HttpParams;
+
+public class DefaultHttpConnectionFactory implements HttpConnectionFactory {
+
+	final HttpParams params;
+
+    public DefaultHttpConnectionFactory(final HttpParams params) {
+        super();
+        if (params == null) {
+            throw new IllegalArgumentException("HTTP parameters may not be null");
+        }
+        this.params = params;
+    }
+
+    public HttpServerConnection newConnection(final Socket socket)
+            throws IOException {
+        DefaultHttpServerConnection conn = new Axis2HttpServerConnection();
+        conn.bind(socket, this.params);
+        return conn;
+    }
+
+    public class Axis2HttpServerConnection extends DefaultHttpServerConnection {
+        public Axis2HttpServerConnection() {
+            super();
+        }
+
+        public String getRemoteIPAddress() {
+            java.net.SocketAddress sa = socket.getRemoteSocketAddress();
+            if (sa instanceof java.net.InetSocketAddress) {
+            	return ((java.net.InetSocketAddress) sa).getAddress().getHostAddress();
+            } else {
+            	return sa.toString();
+            }
+        }
+
+        public String getRemoteHostName() {
+        	java.net.SocketAddress sa = socket.getRemoteSocketAddress();
+        	if (sa instanceof java.net.InetSocketAddress) {
+          	return ((java.net.InetSocketAddress) sa).getHostName();
+          } else {
+          	return sa.toString(); // fail-safe and fall back to something which one can use in place of the host name
+          }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionManager.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionManager.java
new file mode 100644
index 0000000..0f5ffbc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionManager.java
@@ -0,0 +1,156 @@
+/*
+ * $HeadURL:https://svn.apache.org/repos/asf/jakarta/httpcomponents/trunk/coyote-httpconnector/src/java/org/apache/http/tcconnector/impl/DefaultHttpConnectionManager.java $
+ * $Revision:379772 $
+ * $Date:2006-02-22 14:52:29 +0100 (Wed, 22 Feb 2006) $
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.HttpServerConnection;
+import org.apache.http.params.HttpParams;
+
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+
+public class DefaultHttpConnectionManager implements HttpConnectionManager {
+
+    private static Log LOG = LogFactory.getLog(DefaultHttpConnectionManager.class);
+    
+    private final ConfigurationContext configurationContext;
+    private final Executor executor;
+    private final WorkerFactory workerfactory;
+    private final HttpParams params;
+    private final List processors;
+    private final SessionManager sessionManager;
+    
+    private HttpFactory httpFactory = null;
+    
+    public DefaultHttpConnectionManager(
+            final ConfigurationContext configurationContext,
+    		final Executor executor,
+            final WorkerFactory workerfactory,
+    		final HttpParams params) {
+        super();
+        if (configurationContext == null) {
+            throw new IllegalArgumentException("Configuration context may not be null");
+        }
+        if (executor == null) {
+            throw new IllegalArgumentException("Executor may not be null");
+        }
+        if (workerfactory == null) {
+            throw new IllegalArgumentException("Worker factory may not be null");
+        }
+        if (params == null) {
+            throw new IllegalArgumentException("HTTP parameters may not be null");
+        }
+        this.configurationContext = configurationContext;
+        this.sessionManager = new SessionManager();
+        this.executor = executor;
+        this.workerfactory = workerfactory;
+        this.params = params;
+        this.processors = new LinkedList();
+    }
+    
+    public DefaultHttpConnectionManager(
+            final ConfigurationContext configurationContext,
+            final Executor executor,
+            final WorkerFactory workerfactory,
+            final HttpParams params, 
+            final HttpFactory httpFactory) {
+        this(configurationContext, executor, workerfactory, params);
+        this.httpFactory = httpFactory;
+    }
+
+
+    private synchronized void cleanup() {
+        for (Iterator i = this.processors.iterator(); i.hasNext(); ) {
+            IOProcessor processor = (IOProcessor) i.next();
+            if (processor.isDestroyed()) {
+                i.remove();
+            }
+        }
+    }
+    
+    private synchronized void addProcessor(final IOProcessor processor) {
+        if (processor == null) {
+            return;
+        }
+        this.processors.add(processor);
+    }
+    
+    private synchronized void removeProcessor(final IOProcessor processor) {
+        if (processor == null) {
+            return;
+        }
+        this.processors.remove(processor);
+    }
+    
+    public void process(final HttpServerConnection conn) {
+        if (conn == null) {
+            throw new IllegalArgumentException("HTTP connection may not be null");
+        }
+        // Evict destroyed processors
+        cleanup();
+        
+        IOProcessorCallback callback = new IOProcessorCallback() {
+          
+            public void completed(final IOProcessor processor) {
+                removeProcessor(processor);
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug(processor + " terminated");
+                }
+            }
+            
+        };
+        HttpServiceProcessor processor;
+        if (httpFactory != null) {
+            processor = httpFactory.newRequestServiceProcessor(
+                    conn, sessionManager, workerfactory.newWorker(), callback);
+        } else {
+            processor = new DefaultHttpServiceProcessor(
+                    conn, configurationContext, sessionManager, workerfactory.newWorker(), callback);
+        }
+
+        processor.setParams(this.params);
+        addProcessor(processor);
+        this.executor.execute(processor);
+    }
+    
+    public synchronized void shutdown() {
+        for (int i = 0; i < this.processors.size(); i++) {
+            IOProcessor processor = (IOProcessor) this.processors.get(i);
+            processor.destroy();
+        }
+        this.processors.clear();
+    }
+	
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java
new file mode 100644
index 0000000..2e5ca13
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java
@@ -0,0 +1,272 @@
+/*
+* $HeadURL$
+* $Revision$
+* $Date$
+*
+* ====================================================================
+*
+*  Copyright 1999-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.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+import java.net.SocketException;
+import java.net.SocketTimeoutException;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.AddressingHelper;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.SessionContext;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.util.UUIDGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.Header;
+import org.apache.http.HttpException;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpServerConnection;
+import org.apache.http.HttpVersion;
+import org.apache.http.RequestLine;
+import org.apache.http.StatusLine;
+import org.apache.http.UnsupportedHttpVersionException;
+import org.apache.http.impl.DefaultHttpServerConnection;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.protocol.HttpContext;
+import org.apache.http.protocol.ResponseConnControl;
+import org.apache.http.protocol.ResponseContent;
+import org.apache.http.protocol.ResponseDate;
+import org.apache.http.protocol.ResponseServer;
+
+public class DefaultHttpServiceProcessor extends HttpServiceProcessor {
+
+    private static final Log LOG = LogFactory.getLog(DefaultHttpServiceProcessor.class);
+    private static final Log HEADERLOG = LogFactory.getLog("org.apache.axis2.transport.http.server.wire");
+
+    private final ConfigurationContext configurationContext;
+    private final SessionManager sessionManager;
+    private final Worker worker;
+    private final IOProcessorCallback callback;
+    private HttpServerConnection conn;
+
+    private HttpContext httpcontext = null;
+
+    public DefaultHttpServiceProcessor(
+            final HttpServerConnection conn,
+            final ConfigurationContext configurationContext,
+            final SessionManager sessionManager,
+            final Worker worker,
+            final IOProcessorCallback callback) {
+        super(conn);
+        this.conn = conn;
+        if (worker == null) {
+            throw new IllegalArgumentException("Worker may not be null");
+        }
+        if (configurationContext == null) {
+            throw new IllegalArgumentException("Configuration context may not be null");
+        }
+        if (sessionManager == null) {
+            throw new IllegalArgumentException("Session manager may not be null");
+        }
+        this.configurationContext = configurationContext;
+        this.sessionManager = sessionManager;
+        this.worker = worker;
+        this.callback = callback;
+
+        // Add required protocol interceptors
+        addInterceptor(new RequestSessionCookie());
+        addInterceptor(new ResponseDate());
+        addInterceptor(new ResponseServer());
+        addInterceptor(new ResponseContent());
+        addInterceptor(new ResponseConnControl());
+        addInterceptor(new ResponseSessionCookie());
+    }
+
+    protected void postprocessResponse(final HttpResponse response, final HttpContext context)
+            throws IOException, HttpException {
+        super.postprocessResponse(response, context);
+        if (HEADERLOG.isDebugEnabled()) {
+            HEADERLOG.debug("<< " + response.getStatusLine().toString());
+            Header[] headers = response.getAllHeaders();
+            for (int i = 0; i < headers.length; i++) {
+                HEADERLOG.debug("<< " + headers[i].toString());
+            }
+        }
+    }
+
+    protected void preprocessRequest(final HttpRequest request, final HttpContext context)
+            throws IOException, HttpException {
+        // As of next version of HttpCore the HTTP execution context can be retrieved 
+        // by calling #getContext()
+        this.httpcontext = context;
+        super.preprocessRequest(request, context);
+        if (HEADERLOG.isDebugEnabled()) {
+            HEADERLOG.debug(">> " + request.getRequestLine().toString());
+            Header[] headers = request.getAllHeaders();
+            for (int i = 0; i < headers.length; i++) {
+                HEADERLOG.debug(">> " + headers[i].toString());
+            }
+        }
+    }
+
+    protected void doService(final HttpRequest request, final HttpResponse response)
+            throws HttpException, IOException {
+        RequestLine reqline = request.getRequestLine();
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Request method: " + reqline.getMethod());
+            LOG.debug("Target URI: " + reqline.getUri());
+        }
+
+        HttpVersion ver = reqline.getHttpVersion();
+        if (!ver.lessEquals(HttpVersion.HTTP_1_1)) {
+            throw new UnsupportedHttpVersionException("Unsupported HTTP version: " + ver);
+        }
+
+        MessageContext msgContext = new MessageContext();
+        msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
+
+        if (conn instanceof DefaultHttpConnectionFactory.Axis2HttpServerConnection) {
+            DefaultHttpConnectionFactory.Axis2HttpServerConnection axis2Con =
+                (DefaultHttpConnectionFactory.Axis2HttpServerConnection) conn;
+            msgContext.setProperty(MessageContext.REMOTE_ADDR, axis2Con.getRemoteIPAddress());
+            LOG.debug("Remote address of the connection : " + axis2Con.getRemoteIPAddress());
+        }
+
+        try {
+            TransportOutDescription transportOut = this.configurationContext.getAxisConfiguration()
+                    .getTransportOut(new QName(Constants.TRANSPORT_HTTP));
+            TransportInDescription transportIn = this.configurationContext.getAxisConfiguration()
+                    .getTransportIn(new QName(Constants.TRANSPORT_HTTP));
+
+            msgContext.setConfigurationContext(this.configurationContext);
+
+            String sessionKey = (String) this.httpcontext.getAttribute(HTTPConstants.COOKIE_STRING);
+            if (this.configurationContext.getAxisConfiguration().isManageTransportSession()) {
+                SessionContext sessionContext = this.sessionManager.getSessionContext(sessionKey);
+                msgContext.setSessionContext(sessionContext);
+            }
+            msgContext.setTransportIn(transportIn);
+            msgContext.setTransportOut(transportOut);
+            msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
+            msgContext.setServerSide(true);
+            msgContext.setProperty(Constants.Configuration.TRANSPORT_IN_URL, reqline.getUri());
+
+            // set the transport Headers
+            HashMap headerMap = new HashMap();
+            for (Iterator it = request.headerIterator(); it.hasNext();) {
+                Header header = (Header) it.next();
+                headerMap.put(header.getName(), header.getValue());
+            }
+            msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, headerMap);
+
+            this.httpcontext.setAttribute(AxisParams.MESSAGE_CONTEXT, msgContext);
+
+            this.worker.service(request, response, msgContext);
+        } catch (SocketException ex) {
+            // Socket is unreliable. 
+            throw ex;
+        } catch (HttpException ex) {
+            // HTTP protocol violation. Transport is unrelaible
+            throw ex;
+        } catch (Throwable e) {
+            try {
+                AxisEngine engine = new AxisEngine(this.configurationContext);
+
+                OutputBuffer outbuffer = new OutputBuffer();
+                msgContext.setProperty(MessageContext.TRANSPORT_OUT, outbuffer.getOutputStream());
+                msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, outbuffer);
+
+                MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+                // If the fault is not going along the back channel we should be 202ing
+                if (AddressingHelper.isFaultRedirected(msgContext)) {
+                    response.setStatusLine(new StatusLine(ver, 202, "Accepted"));
+                } else {
+                    response.setStatusLine(new StatusLine(ver, 500, "Internal server error"));
+                }
+                engine.sendFault(faultContext);
+                response.setEntity(outbuffer);
+            } catch (Exception ex) {
+                if (AddressingHelper.isFaultRedirected(msgContext)) {
+                    response.setStatusLine(new StatusLine(ver, 202, "Accepted"));
+                } else {
+                    response.setStatusLine(new StatusLine(ver, 500, "Internal server error"));
+                    String msg = ex.getMessage();
+                    StringEntity entity;
+                    if (msg != null && msg.trim().length() != 0) {
+                        entity = new StringEntity(msg);
+                    } else {
+                        entity = new StringEntity("Exception message unknown");
+                    }
+                    entity.setContentType("text/plain");
+                    response.setEntity(entity);
+                }
+            }
+        }
+
+    }
+
+    protected void logIOException(final IOException ex) {
+        if (ex instanceof SocketTimeoutException) {
+            LOG.debug(ex.getMessage());
+        } else if (ex instanceof SocketException) {
+            LOG.debug(ex.getMessage());
+        } else {
+            LOG.warn(ex.getMessage(), ex);
+        }
+    }
+
+    protected void logMessage(final String s) {
+        LOG.debug(s);
+    }
+
+    protected void logProtocolException(final HttpException ex) {
+        if (LOG.isWarnEnabled()) {
+            LOG.warn("HTTP protocol error: " + ex.getMessage());
+        }
+    }
+
+    public void close() throws IOException {
+        closeConnection();
+    }
+
+    public void run() {
+        LOG.debug("New connection thread");
+        try {
+            while (!Thread.interrupted() && !isDestroyed() && isActive()) {
+                handleRequest();
+            }
+        } finally {
+            destroy();
+            if (this.callback != null) {
+                this.callback.completed(this);
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultThreadFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultThreadFactory.java
new file mode 100644
index 0000000..457d14f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultThreadFactory.java
@@ -0,0 +1,58 @@
+/*
+* $HeadURL$
+* $Revision$
+* $Date$
+*
+* ====================================================================
+*
+*  Copyright 1999-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.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+
+package org.apache.axis2.transport.http.server;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadFactory;
+import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicInteger;
+
+public class DefaultThreadFactory implements ThreadFactory {
+
+    final ThreadGroup group;
+    final AtomicInteger count;
+    final String namePrefix;
+	
+    public DefaultThreadFactory(final ThreadGroup group, final String namePrefix) {
+        super();
+        this.count = new AtomicInteger(1);
+        this.group = group;
+        this.namePrefix = namePrefix;
+    }
+
+    public Thread newThread(final Runnable runnable) {
+    	StringBuffer buffer = new StringBuffer();
+    	buffer.append(this.namePrefix);
+    	buffer.append('-');
+    	buffer.append(this.count.getAndIncrement());
+        Thread t = new Thread(group, runnable, buffer.toString(), 0);
+        t.setDaemon(false);
+        t.setPriority(Thread.NORM_PRIORITY);
+        return t;
+    }
+        
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionFactory.java
new file mode 100644
index 0000000..09e1e82
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionFactory.java
@@ -0,0 +1,41 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+import java.net.Socket;
+
+import org.apache.http.HttpServerConnection;
+
+public interface HttpConnectionFactory {
+
+    HttpServerConnection newConnection(Socket socket) throws IOException;
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionManager.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionManager.java
new file mode 100644
index 0000000..f3b5db0
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionManager.java
@@ -0,0 +1,40 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import org.apache.http.HttpServerConnection;
+
+public interface HttpConnectionManager {
+
+    void process(HttpServerConnection incoming);
+    
+    void shutdown();
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpFactory.java
new file mode 100644
index 0000000..55d00e1
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpFactory.java
@@ -0,0 +1,381 @@
+/*
+ * HttpFactory.java
+ *
+ * ====================================================================
+ *
+ *  Copyright 2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * Created on May 25, 2006, 10:11 AM
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import edu.emory.mathcs.backport.java.util.concurrent.BlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.ExecutorService;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+import java.io.IOException;
+import javax.xml.namespace.QName;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.http.HTTPWorkerFactory;
+import org.apache.http.HttpServerConnection;
+import org.apache.http.impl.DefaultHttpParams;
+import org.apache.http.params.HttpConnectionParams;
+import org.apache.http.params.HttpParams;
+import org.apache.http.params.HttpProtocolParams;
+
+/**
+ * Factory used to configure and create the various instances required in http transports.
+ * Either configure this class in axis2.xml, or in code via the setters, or subclass it and specialize some factory methods to gain more control.
+ *
+ * @author Chuck Williams
+ */
+public class HttpFactory {
+
+    /** Name of axis2.xml port parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_PORT = "port";
+    
+    /** Name of axis2.xml hostname parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_HOST_ADDRESS = "hostname";
+
+    /** Name of axis2.xml originServer parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_ORIGIN_SERVER = "originServer";
+
+    /** Name of axis2.xml requestTimeout parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_REQUEST_SOCKET_TIMEOUT = "requestTimeout";
+
+    /** Name of axis2.xml requestTcpNoDelay parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_REQUEST_TCP_NO_DELAY = "requestTcpNoDelay";
+
+    /** Name of axis2.xml requestCoreThreadPoolSize parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_REQUEST_CORE_THREAD_POOL_SIZE = "requestCoreThreadPoolSize";
+
+    /** Name of axis2.xml requestMaxThreadPoolSize parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_REQUEST_MAX_THREAD_POOL_SIZE = "requestMaxThreadPoolSize";
+
+    /** Name of axis2.xml threadKeepAliveTime parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_THREAD_KEEP_ALIVE_TIME = "threadKeepAliveTime";
+
+    /** Name of axis2.xml threadKeepAliveTimeUnit parameter for SimpleHTTPServer configuration */
+    public static final String PARAMETER_THREAD_KEEP_ALIVE_TIME_UNIT = "threadKeepAliveTimeUnit";
+    
+    private ConfigurationContext configurationContext;
+    private TransportInDescription httpConfiguration;
+    private int port;
+    private String hostAddress;
+    private String originServer;
+    private int requestSocketTimeout;
+    private boolean requestTcpNoDelay;
+    private int requestCoreThreadPoolSize;
+    private int requestMaxThreadPoolSize;
+    private long threadKeepAliveTime;
+    private TimeUnit threadKeepAliveTimeUnit;
+    
+    private WorkerFactory requestWorkerFactory = null;
+    
+    private static final QName HTTP_NAME = new QName(Constants.TRANSPORT_HTTP);
+    
+    /** Create and configure a new HttpFactory */
+    public HttpFactory(ConfigurationContext configurationContext) throws AxisFault {
+        this.configurationContext = configurationContext;
+        httpConfiguration = configurationContext.getAxisConfiguration().getTransportIn(HTTP_NAME);
+        port = getIntParam(PARAMETER_PORT, 6060);
+        hostAddress = getStringParam(PARAMETER_HOST_ADDRESS, null);
+        originServer = getStringParam(PARAMETER_ORIGIN_SERVER, "Simple-Server/1.1");
+        requestSocketTimeout = getIntParam(PARAMETER_REQUEST_SOCKET_TIMEOUT, 20000);
+        requestTcpNoDelay = getBooleanParam(PARAMETER_REQUEST_TCP_NO_DELAY, true);
+        requestCoreThreadPoolSize = getIntParam(PARAMETER_REQUEST_CORE_THREAD_POOL_SIZE, 25);
+        requestMaxThreadPoolSize = getIntParam(PARAMETER_REQUEST_MAX_THREAD_POOL_SIZE, 150);
+        threadKeepAliveTime = getLongParam(PARAMETER_THREAD_KEEP_ALIVE_TIME, 180L);
+        threadKeepAliveTimeUnit = getTimeUnitParam(PARAMETER_THREAD_KEEP_ALIVE_TIME_UNIT, TimeUnit.SECONDS);
+    }
+    
+    /** Create and configure a new HttpFactory */
+    public HttpFactory(ConfigurationContext configurationContext, int port) throws AxisFault {
+        this(configurationContext);
+        this.port = port;
+    }
+    
+    /** Create and configure a new HttpFactory */
+    public HttpFactory(ConfigurationContext configurationContext, int port, WorkerFactory requestWorkerFactory) throws AxisFault {
+        this(configurationContext, port);
+        this.requestWorkerFactory = requestWorkerFactory;
+    }
+
+    private int getIntParam(String name, int def) {
+        String config = getStringParam(name, null);
+        if (config!=null)
+            return Integer.parseInt(config);
+        else 
+            return def;
+    }
+    
+    private long getLongParam(String name, long def) {
+        String config = getStringParam(name, null);
+        if (config!=null)
+            return Long.parseLong(config);
+        else 
+            return def;
+    }
+    
+    private boolean getBooleanParam(String name, boolean def) throws AxisFault {
+        String config = getStringParam(name, null);
+        if (config!=null) {
+            if (config.equals("yes") || config.equals("true"))
+                return true;
+            else if (config.equals("no") || config.equals("false"))
+                return false;
+            else throw new AxisFault("Boolean value must be yes, true, no or false for parameter " + name + ":  " + config);
+        }
+        return def;
+    }
+    
+    private TimeUnit getTimeUnitParam(String name, TimeUnit def) throws AxisFault {
+        String config = getStringParam(name, null);
+        if (config!=null)
+            try {
+                return (TimeUnit) TimeUnit.class.getField(config).get(null);
+            } catch (Exception e) {
+                throw new AxisFault(e);
+            }
+        return def;
+    }
+        
+    private String getStringParam(String name, String def) {
+        Parameter param = httpConfiguration.getParameter(name);
+        if (param!=null) {
+//            assert param.getParameterType() == Parameter.TEXT_PARAMETER;
+            String config = (String) param.getValue();
+            if (config!=null)
+                return config;
+        }
+        return def;
+    }
+    
+    /** Return the configured listener manager or create and configure one with configurationContext */
+    public ListenerManager getListenerManager() {
+        ListenerManager lm = configurationContext.getListenerManager();
+        if (lm==null) {
+            lm = new ListenerManager();
+            lm.init(configurationContext);
+        }
+        return lm;
+    }
+    
+    /** Create the executor used to launch the single requestConnectionListener */
+    public ExecutorService newListenerExecutor(int port) {
+        return new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,
+                new LinkedBlockingQueue(),
+                new DefaultThreadFactory(new ThreadGroup("Listener thread group"), "HttpListener-" + this.port));
+    }
+    
+    /** Create the listener for request connections */
+    public IOProcessor newRequestConnectionListener(HttpConnectionFactory factory, HttpConnectionManager manager, int port) throws IOException {
+        return new DefaultConnectionListener(port, factory, manager);
+    }
+    
+    /** Create a request connection */
+    public HttpConnectionFactory newRequestConnectionFactory(HttpParams params) {
+        return new DefaultHttpConnectionFactory(params);
+    }
+    
+    /** Create and set the parameters applied to incoming request connections */
+    public HttpParams newRequestConnectionParams() {
+        HttpParams params = new DefaultHttpParams(); 
+        params
+            .setIntParameter(HttpConnectionParams.SO_TIMEOUT, requestSocketTimeout)
+            .setBooleanParameter(HttpConnectionParams.TCP_NODELAY, requestTcpNoDelay) 
+            .setIntParameter(HttpConnectionParams.MAX_LINE_LENGTH, 4000)
+            .setIntParameter(HttpConnectionParams.MAX_HEADER_COUNT, 500)
+            .setParameter(HttpProtocolParams.ORIGIN_SERVER, originServer);
+        return params;
+    }
+    
+    /** Create the connection manager used to launch request threads */
+    public HttpConnectionManager newRequestConnectionManager(ExecutorService requestExecutor, WorkerFactory workerFactory, HttpParams params) {
+        return new DefaultHttpConnectionManager(configurationContext, requestExecutor, workerFactory, params);
+    }
+    
+    /** Create the executor use the manage request processing threads */
+    public ExecutorService newRequestExecutor(int port) {
+        return new ThreadPoolExecutor(requestCoreThreadPoolSize, requestMaxThreadPoolSize, threadKeepAliveTime, threadKeepAliveTimeUnit,
+                                      newRequestBlockingQueue(),
+                                      new DefaultThreadFactory(new ThreadGroup("Connection thread group"), "HttpConnection-" + port));
+    }
+    
+    /** Create the queue used to hold incoming requests when requestCoreThreadPoolSize threads are busy.
+     * Default is an unbounded queue.
+     */
+    public BlockingQueue newRequestBlockingQueue() {
+        return new LinkedBlockingQueue();
+    }
+    
+    /** Create the factory for request workers */
+    public WorkerFactory newRequestWorkerFactory() {
+        if (requestWorkerFactory!=null)
+            return requestWorkerFactory;
+        else
+            return new HTTPWorkerFactory();
+    }
+
+    /** Create a request service processor to populate the response */
+    public HttpServiceProcessor newRequestServiceProcessor(
+            final HttpServerConnection connection, 
+            final SessionManager sessionManager, 
+            final Worker worker, 
+            final IOProcessorCallback callback) {
+        return new DefaultHttpServiceProcessor(connection, configurationContext, sessionManager, worker, callback);
+    }
+    
+    // *****
+    // Getters and Setters
+    // *****
+
+    /** Getter for configurationContext */
+    public ConfigurationContext getConfigurationContext() {
+        return configurationContext;
+    }
+
+    /** Getter for httpConfiguration */
+    public TransportInDescription getHttpConfiguration() {
+        return httpConfiguration;
+    }
+
+    /** Getter for port
+      * return the port on which to listen for http connections (default = 6060)
+     */
+    public int getPort() {
+        return port;
+    }
+
+    /** Setter for port */
+    public void setPort(int port) {
+        this.port = port;
+    }
+
+    /** Getter for hostAddress
+     * @return the host address (or name) to be use in reply-to endpoint references, or null if not specified (default = null)
+     */
+    public String getHostAddress() {
+        return hostAddress;
+    }
+
+    /** Setter for hostAddress */
+    public void setHostAddress(String hostAddress) {
+        this.hostAddress = hostAddress;
+    }
+
+    /** Getter for originServer
+     * @return the Server header string for outgoing messages (default "Simple-Server/1.1")
+     */
+    public String getOriginServer() {
+        return originServer;
+    }
+
+    /** Setter for originServer */
+    public void setOriginServer(String originServer) {
+        this.originServer = originServer;
+    }
+
+    /** Getter for requestSocketTimeout
+     * @return the maximum time in millis to wait for data on a request socket (default 20000)
+     */
+    public int getRequestSocketTimeout() {
+        return requestSocketTimeout;
+    }
+
+    /** Setter for requestSocketTimeout */
+    public void setRequestSocketTimeout(int requestSocketTimeout) {
+        this.requestSocketTimeout = requestSocketTimeout;
+    }
+
+    /** Getter for requestTcpNoDelay
+     * return false iff Nagle's algorithm should be used to conserve bandwidth by minimizing segments
+     *              at the cost of latency and performance (default true, i.e. maximize performance at
+     *              the cost of bandwidth)
+     */
+    public boolean getRequestTcpNoDelay() {
+        return requestTcpNoDelay;
+    }
+
+    /** Setter for requestTcpNoDelay */
+    public void setRequestTcpNoDelay(boolean requestTcpNoDelay) {
+        this.requestTcpNoDelay = requestTcpNoDelay;
+    }
+
+    /** Getter for RequestCoreThreadPoolSize
+     * @return the size of the thread pool use to process requests assuming there is adequate queue space (default 25)
+     */
+    public int getRequestCoreThreadPoolSize() {
+        return requestCoreThreadPoolSize;
+    }
+
+    /** Setter for RequestCoreThreadPoolSize */
+    public void setRequestCoreThreadPoolSize(int requestCoreThreadPoolSize) {
+        this.requestCoreThreadPoolSize = requestCoreThreadPoolSize;
+    }
+
+    /** Getter for requestMaxThreadPoolSize
+     * @return the maximum size of the thread pool used to process requests if the queue fills up (default 150).
+     *         Since the default queue is unbounded this parameter is meaningless unless you override newRequestBlockingQueue()
+     */
+    public int getRequestMaxThreadPoolSize() {
+        return requestMaxThreadPoolSize;
+    }
+
+    /** Setter for requestMaxThreadPoolSize */
+    public void setRequestMaxThreadPoolSize(int requestMaxThreadPoolSize) {
+        this.requestMaxThreadPoolSize = requestMaxThreadPoolSize;
+    }
+
+    /** Getter for threadKeepAliveTime
+     * @return how long a request processing thread in excess of the core pool size will be kept alive it if is inactive
+     *         (default with threadKeepAliveTimeUnit to 180 seconds)
+     */
+    public long getThreadKeepAliveTime() {
+        return threadKeepAliveTime;
+    }
+
+    /** Setter for threadKeepAliveTime */
+    public void setThreadKeepAliveTime(long threadKeepAliveTime) {
+        this.threadKeepAliveTime = threadKeepAliveTime;
+    }
+
+    /** Getter for threadKeepAliveTimeUnit
+     * return the time unit for threadKeepAliveTime (default SECONDS)
+     */
+    public TimeUnit getThreadKeepAliveTimeUnit() {
+        return threadKeepAliveTimeUnit;
+    }
+
+    /** Setter for threadKeepAliveTimeUnit */
+    public void setThreadKeepAliveTimeUnit(TimeUnit threadKeepAliveTimeUnit) {
+        this.threadKeepAliveTimeUnit = threadKeepAliveTimeUnit;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpServiceProcessor.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpServiceProcessor.java
new file mode 100644
index 0000000..2ea4d9b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpServiceProcessor.java
@@ -0,0 +1,49 @@
+/*
+ * HttpServiceProcessor.java
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * Created on May 25, 2006, 4:09 PM
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import org.apache.http.HttpServerConnection;
+import org.apache.http.protocol.HttpService;
+
+/**
+ * Abstract base class to process requests and fill in respnses.
+ * @author Chuck Williams
+ */
+
+public abstract class HttpServiceProcessor extends HttpService implements IOProcessor {
+    
+    /** Create an HttpServiceProcessor
+     * @param conn the connection we are receiving the request on
+     */
+    public HttpServiceProcessor(HttpServerConnection conn) {
+        super(conn);
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpUtils.java
new file mode 100644
index 0000000..db3302c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/HttpUtils.java
@@ -0,0 +1,94 @@
+/*
+* $HeadURL$
+* $Revision$
+* $Date$
+*
+* ====================================================================
+*
+*  Copyright 1999-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.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+package org.apache.axis2.transport.http.server;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Enumeration;
+
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.http.Header;
+import org.apache.http.HttpRequest;
+
+public class HttpUtils {
+    
+    private HttpUtils() {
+    }
+
+    public static String getSoapAction(final HttpRequest request) {
+        if (request == null) {
+            return null;
+        }
+        Header header = request.getFirstHeader(HTTPConstants.HEADER_SOAP_ACTION);
+        if (header != null) {
+            return header.getValue();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns the ip address to be used for the replyto epr
+     * CAUTION:
+     * This will go through all the available network interfaces and will try to return an ip address.
+     * First this will try to get the first IP which is not loopback address (127.0.0.1). If none is found
+     * then this will return this will return 127.0.0.1.
+     * This will <b>not<b> consider IPv6 addresses.
+     * <p/>
+     * TODO:
+     * - Improve this logic to genaralize it a bit more
+     * - Obtain the ip to be used here from the Call API
+     *
+     * @return Returns String.
+     * @throws SocketException
+     */
+    public static String getIpAddress() throws SocketException {
+        Enumeration e = NetworkInterface.getNetworkInterfaces();
+        String address = "127.0.0.1";
+
+        while (e.hasMoreElements()) {
+            NetworkInterface netface = (NetworkInterface) e.nextElement();
+            Enumeration addresses = netface.getInetAddresses();
+
+            while (addresses.hasMoreElements()) {
+                InetAddress ip = (InetAddress) addresses.nextElement();
+                if (!ip.isLoopbackAddress() && isIP(ip.getHostAddress())) {
+                    return ip.getHostAddress();
+                }
+            }
+        }
+
+        return address;                                                     
+    }
+
+    private static boolean isIP(String hostAddress) {
+        return hostAddress.split("[.]").length == 4;
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/IOProcessor.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/IOProcessor.java
new file mode 100644
index 0000000..34f7192
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/IOProcessor.java
@@ -0,0 +1,42 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+
+public interface IOProcessor extends Runnable {
+
+    void close() throws IOException;
+    
+    boolean isDestroyed();
+    
+    void destroy();
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/IOProcessorCallback.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/IOProcessorCallback.java
new file mode 100644
index 0000000..b99b914
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/IOProcessorCallback.java
@@ -0,0 +1,36 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+public interface IOProcessorCallback {
+
+    void completed(IOProcessor processor);
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/OutputBuffer.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/OutputBuffer.java
new file mode 100644
index 0000000..4dde62c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/OutputBuffer.java
@@ -0,0 +1,151 @@
+/*
+* $HeadURL$
+* $Revision$
+* $Date$
+*
+* ====================================================================
+*
+*  Copyright 1999-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.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+package org.apache.axis2.transport.http.server;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.apache.axis2.transport.OutTransportInfo;
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.io.ByteArrayBuffer;
+import org.apache.http.protocol.HTTP;
+
+public class OutputBuffer implements OutTransportInfo, HttpEntity {
+
+    private final ByteArrayBuffer buffer;
+    private String contentType;
+    private boolean chunked;
+    
+    public OutputBuffer(int initialCapacity) {
+        super();
+        this.buffer = new ByteArrayBuffer(initialCapacity);
+        this.contentType = "text/xml";
+    }
+    
+    public OutputBuffer() {
+        this(1024);
+    }
+
+    public OutputStream getOutputStream() {
+        return new BufferOutputStream(this.buffer);
+    }
+
+    public InputStream getContent() throws IOException, IllegalStateException {
+        return new ByteArrayInputStream(this.buffer.toByteArray());
+    }
+
+    public void setContentType(final String contentType) {
+        this.contentType = contentType;
+    }
+
+    public Header getContentType() {
+        return new Header(HTTP.CONTENT_TYPE, this.contentType);
+    }
+
+    public void consumeContent() throws IOException {
+    }
+
+    public Header getContentEncoding() {
+        return null;
+    }
+
+    public long getContentLength() {
+        return this.buffer.length();
+    }
+
+    public boolean isChunked() {
+        return this.chunked;
+    }
+
+    public void setChunked(boolean b) {
+        this.chunked = b;
+    }
+
+    public boolean isRepeatable() {
+        return true;
+    }
+
+    public boolean isStreaming() {
+        return false;
+    }
+
+    public void writeTo(final OutputStream outstream) throws IOException {
+        outstream.write(this.buffer.buffer(), 0, this.buffer.length());
+    }
+
+    public String toString() {
+        return new String(this.buffer.buffer(), 0, this.buffer.length());
+    }
+    
+    private static class BufferOutputStream extends OutputStream {
+
+        private final ByteArrayBuffer buffer;
+        private boolean closed = false;
+
+        public BufferOutputStream(final ByteArrayBuffer buffer) {
+            super();
+            this.buffer = buffer;
+        }
+        
+        public void close() throws IOException {
+            this.closed = true;
+        }
+
+        private void ensureNotClosed() {
+            if (this.closed) {
+                throw new IllegalStateException("Stream closed");
+            }
+        }
+        
+        public void write(byte[] b, int off, int len) throws IOException {
+            ensureNotClosed();
+            if (b == null) {
+                return;
+            }
+            this.buffer.append(b, off, len);
+        }
+
+        public void write(byte[] b) throws IOException {
+            ensureNotClosed();
+            if (b == null) {
+                return;
+            }
+            this.buffer.append(b, 0, b.length);
+        }
+
+        public void write(int b) throws IOException {
+            ensureNotClosed();
+            this.buffer.append(b);
+        }
+                
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/RequestSessionCookie.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/RequestSessionCookie.java
new file mode 100644
index 0000000..578b99f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/RequestSessionCookie.java
@@ -0,0 +1,68 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.http.Header;
+import org.apache.http.HeaderElement;
+import org.apache.http.HttpException;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpRequestInterceptor;
+import org.apache.http.protocol.HttpContext;
+
+public class RequestSessionCookie implements HttpRequestInterceptor {
+
+    public void process(final HttpRequest request, final HttpContext context) 
+            throws HttpException, IOException {
+        if (request == null) {
+            throw new IllegalArgumentException("HTTP request may not be null");
+        }
+        if (context == null) {
+            throw new IllegalArgumentException("HTTP context may not be null");
+        }
+        
+        String sessionCookie = null;
+        Header[] headers = request.getHeaders(HTTPConstants.HEADER_COOKIE);
+        for (int i = 0; i < headers.length; i++) {
+            HeaderElement[] elements = headers[i].getElements();
+            for (int e = 0; e < elements.length; e++) {
+                HeaderElement element = elements[e];
+                if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())) {
+                    sessionCookie = element.getValue();
+                }
+            }
+        }
+        context.setAttribute(HTTPConstants.COOKIE_STRING, sessionCookie);
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/ResponseSessionCookie.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/ResponseSessionCookie.java
new file mode 100644
index 0000000..31e4e8d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/ResponseSessionCookie.java
@@ -0,0 +1,81 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.http.Header;
+import org.apache.http.HttpException;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpResponseInterceptor;
+import org.apache.http.io.CharArrayBuffer;
+import org.apache.http.protocol.HttpContext;
+
+public class ResponseSessionCookie implements HttpResponseInterceptor {
+
+    public void process(final HttpResponse response, final HttpContext context) 
+            throws HttpException, IOException {
+        if (response == null) {
+            throw new IllegalArgumentException("HTTP response may not be null");
+        }
+        if (context == null) {
+            throw new IllegalArgumentException("HTTP context may not be null");
+        }
+        
+        String sessionCookie = null;
+        MessageContext msgctx = (MessageContext) context.getAttribute(AxisParams.MESSAGE_CONTEXT);
+        if (msgctx != null) {
+            sessionCookie = (String) msgctx.getProperty(HTTPConstants.COOKIE_STRING);
+        }
+        if (sessionCookie == null) {
+          sessionCookie = (String) context.getAttribute(HTTPConstants.COOKIE_STRING);
+        }
+        if (sessionCookie != null) {
+            CharArrayBuffer buffer = new CharArrayBuffer(sessionCookie.length() + 40);
+            buffer.append(Constants.SESSION_COOKIE);
+            buffer.append("=");
+            buffer.append(sessionCookie);
+            response.addHeader(new Header(HTTPConstants.HEADER_SET_COOKIE, buffer.toString()));
+            buffer.append("; ");
+            int port = response.getParams().getIntParameter(AxisParams.LISTENER_PORT, 0);
+            if (port > 0) {
+                buffer.append("Port=\"");
+                buffer.append(Integer.toString(port));
+                buffer.append("\"; ");
+            }
+            buffer.append("Version=1");
+            response.addHeader(new Header(HTTPConstants.HEADER_SET_COOKIE2, buffer.toString()));
+        }
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/SessionManager.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/SessionManager.java
new file mode 100644
index 0000000..51336ee
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/SessionManager.java
@@ -0,0 +1,102 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ *  Copyright 1999-2006 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.axis2.transport.http.server;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.context.SessionContext;
+import org.apache.axis2.engine.DependencyManager;
+import org.apache.axis2.util.UUIDGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class SessionManager {
+
+    private static final Log LOG = LogFactory.getLog(SessionManager.class);
+    
+    private final Map sessionmap;
+    
+    public SessionManager() {
+        super();
+        this.sessionmap = new HashMap();
+    }
+    
+    public synchronized SessionContext getSessionContext(String sessionKey) {
+        SessionContext sessionContext = null;
+        if (sessionKey != null && sessionKey.length() != 0) {
+            sessionContext = (SessionContext) this.sessionmap.get(sessionKey);
+        }
+        if (sessionContext == null) {
+            sessionKey = UUIDGenerator.getUUID();
+            sessionContext = new SessionContext(null);
+            sessionContext.setCookieID(sessionKey);
+            this.sessionmap.put(sessionKey, sessionContext);
+        }
+        sessionContext.touch();
+        cleanupServiceGroupContexts();
+        return sessionContext;
+    }
+
+    private void cleanupServiceGroupContexts() {
+        long currentTime = System.currentTimeMillis();
+        for (Iterator it = this.sessionmap.keySet().iterator(); it.hasNext(); ) {
+            String cookieID = (String) it.next();
+            SessionContext sessionContext = (SessionContext) this.sessionmap.get(cookieID);
+            if ((currentTime - sessionContext.getLastTouchedTime()) >
+                    sessionContext.sessionContextTimeoutInterval) {
+                it.remove();
+                Iterator serviceGroupContext = sessionContext.getServiceGroupContext();
+                if (serviceGroupContext != null) {
+                    while (serviceGroupContext.hasNext()) {
+                        ServiceGroupContext groupContext = (ServiceGroupContext) serviceGroupContext.next();
+                        cleanupServiceContexts(groupContext);
+                    }
+                }
+            }
+        }
+    }
+
+    private void cleanupServiceContexts(final ServiceGroupContext serviceGroupContext) {
+        for (Iterator it = serviceGroupContext.getServiceContexts(); it.hasNext(); ) {
+            ServiceContext serviceContext = (ServiceContext) it.next();
+            try {
+                DependencyManager.destroyServiceObject(serviceContext);
+            } catch (AxisFault axisFault) {
+                LOG.info(axisFault.getMessage());
+            }
+        }
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/SimpleHttpServer.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/SimpleHttpServer.java
new file mode 100644
index 0000000..5692c1b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/SimpleHttpServer.java
@@ -0,0 +1,122 @@
+/*
+* $HeadURL$
+* $Revision: 155418 $
+* $Date: 2005-02-26 08:01:52 -0500 (Sat, 26 Feb 2005) $
+*
+* ====================================================================
+*
+*  Copyright 1999-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.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*
+*/
+
+
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.params.HttpParams;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ExecutorService;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+
+/**
+ * A simple, but configurable and extensible HTTP server.
+ */
+public class SimpleHttpServer {
+
+    private static Log LOG = LogFactory.getLog(SimpleHttpServer.class);
+    
+    private static final int SHUTDOWN_GRACE_PERIOD = 3000; // ms
+    
+    private HttpFactory httpFactory;
+    private final int port;
+    private final HttpParams params;
+    private final WorkerFactory workerFactory;
+    
+    private IOProcessor listener = null;
+    private ExecutorService listenerExecutor = null;
+    private HttpConnectionManager connmanager = null;
+    private HttpConnectionFactory connfactory = null;
+    private ExecutorService requestExecutor = null;
+
+    public SimpleHttpServer(ConfigurationContext configurationContext, WorkerFactory workerFactory, int port) throws IOException {
+        this(new HttpFactory(configurationContext, port, workerFactory), port);
+    }
+    
+    public SimpleHttpServer(HttpFactory httpFactory, int port) throws IOException {
+        this.httpFactory = httpFactory;
+        this.port = port;
+        this.workerFactory = httpFactory.newRequestWorkerFactory();
+        this.params = httpFactory.newRequestConnectionParams();
+        this.params.setIntParameter(AxisParams.LISTENER_PORT, port);
+    }
+
+    public void init() throws IOException {
+        requestExecutor = httpFactory.newRequestExecutor(port);
+        connmanager = httpFactory.newRequestConnectionManager(requestExecutor, workerFactory, params);
+        listenerExecutor = httpFactory.newListenerExecutor(port);
+        connfactory = httpFactory.newRequestConnectionFactory(params);
+        listener = httpFactory.newRequestConnectionListener(connfactory, connmanager, port);
+    }
+    
+    public void destroy() throws IOException, InterruptedException {
+        // Attempt to terminate the listener nicely
+        LOG.info("Shut down connection listener");
+        this.listenerExecutor.shutdownNow();
+        this.listener.destroy();
+        this.listenerExecutor.awaitTermination(SHUTDOWN_GRACE_PERIOD, TimeUnit.MILLISECONDS);
+        if (!this.listenerExecutor.isTerminated()) {
+            // Terminate the listener forcibly
+            LOG.info("Force shut down connection listener");
+            this.listener.destroy();
+            // Leave it up to the garbage collector to clean up the mess
+            this.listener = null;
+        }
+        // Attempt to terminate the active processors nicely
+        LOG.info("Shut down HTTP processors");
+        this.requestExecutor.shutdownNow();
+        this.requestExecutor.awaitTermination(SHUTDOWN_GRACE_PERIOD, TimeUnit.MILLISECONDS);
+        if (!this.requestExecutor.isTerminated()) {
+            // Terminate the active processors forcibly
+            LOG.info("Force shut down HTTP processors");
+            this.connmanager.shutdown();
+            // Leave it up to the garbage collector to clean up the mess
+            this.connmanager = null;
+        }
+        LOG.info("HTTP protocol handler shut down");
+    }
+    
+    public void start() {
+        this.listenerExecutor.execute(this.listener);
+    }
+    
+    public boolean isRunning() {
+        return this.listenerExecutor != null && !this.listenerExecutor.isShutdown();
+    }
+
+    public int getPort() {
+        return this.port;
+    }
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/Worker.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/Worker.java
new file mode 100644
index 0000000..8c296e2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/Worker.java
@@ -0,0 +1,42 @@
+/*
+* $HeadURL$
+* $Revision$
+* $Date$
+*
+* ====================================================================
+*
+*  Copyright 1999-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.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+package org.apache.axis2.transport.http.server;
+
+import java.io.IOException;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.http.HttpException;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+
+public interface Worker {
+
+    void service(HttpRequest request, HttpResponse response, MessageContext msgContext) 
+        throws HttpException, IOException;    
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/WorkerFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/WorkerFactory.java
new file mode 100644
index 0000000..079b34b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/server/WorkerFactory.java
@@ -0,0 +1,34 @@
+/*
+* $HeadURL$
+* $Revision$
+* $Date$
+*
+* ====================================================================
+*
+*  Copyright 1999-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.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+package org.apache.axis2.transport.http.server;
+
+public interface WorkerFactory {
+
+    Worker newWorker();    
+    
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/util/RESTUtil.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/util/RESTUtil.java
new file mode 100644
index 0000000..c1d1c7b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/util/RESTUtil.java
@@ -0,0 +1,234 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.transport.http.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisMessage;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.engine.RequestURIBasedDispatcher;
+import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.util.SchemaUtil;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.stream.XMLStreamReader;
+import java.io.IOException;
+
+/**
+ *
+ */
+public class RESTUtil {
+    protected ConfigurationContext configurationContext;
+
+    public RESTUtil(ConfigurationContext configurationContext) {
+        this.configurationContext = configurationContext;
+    }
+
+    public boolean processPostRequest(MessageContext msgContext,
+                                      HttpServletRequest request,
+                                      HttpServletResponse response) throws AxisFault {
+        try {
+            // 1. if the content type is text/xml or multipart/related, all the information
+            // SHOULD be in HTTP body. So consruct a SOAP Envelope, out of the
+            // the input stream extracted from the HTTP request,
+            // set that to msgCtxt and return. Do we need to verify this
+            // with the schema here ???
+            String contentType = request.getContentType();
+            SOAPEnvelope soapEnvelope;
+            if ("".equals(contentType) || contentType == null) {
+                throw new AxisFault("ContentType should be given to proceed," +
+                        " according to WSDL 2.0 HTTP binding rules");
+            } else if (contentType.indexOf(HTTPConstants.MEDIA_TYPE_TEXT_XML) > -1 ||
+                    contentType.indexOf(HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED) > -1) {
+                soapEnvelope = handleNonURLEncodedContentTypes(msgContext, request,
+                        OMAbstractFactory.getSOAP11Factory());
+            } else if (contentType.indexOf(HTTPConstants.MEDIA_TYPE_X_WWW_FORM) > -1) {
+                // 2. Else, Dispatch and find out the operation and the service.
+                // Dispatching can only be done using the RequestURI, as others can not be run in the REST case
+                dispatchAndVerify(msgContext);
+
+                // 3. extract the schema from the operation.
+                AxisOperation axisOperation = msgContext.getAxisOperation();
+                // get XML schema element here from the AxisOperation
+                XmlSchemaElement xmlSchemaElement =
+                        axisOperation.
+                                getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE).getSchemaElement();
+
+                soapEnvelope = SchemaUtil.handleMediaTypeURLEncoded(msgContext,
+                        request,
+                        xmlSchemaElement,
+                        OMAbstractFactory.getSOAP11Factory());
+            } else {
+                throw new AxisFault("Content type should be one of /n " + HTTPConstants.MEDIA_TYPE_TEXT_XML +
+                        "/n " + HTTPConstants.MEDIA_TYPE_X_WWW_FORM +
+                        "/n " + HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED);
+            }
+
+
+            msgContext.setEnvelope(soapEnvelope);
+            msgContext.setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_METHOD, org.apache.axis2.transport.http.HTTPConstants.HTTP_METHOD_POST);
+            msgContext.setProperty(org.apache.axis2.transport.http.HTTPConstants.CONTENT_TYPE, contentType);
+            msgContext.setDoingREST(true);
+            msgContext.setProperty(MessageContext.TRANSPORT_OUT, response.getOutputStream());
+
+            invokeAxisEngine(msgContext);
+
+        } catch (AxisFault axisFault) {
+            throw axisFault;
+        } catch (IOException ioException) {
+            throw new AxisFault(ioException);
+        }
+        return true;
+    }
+
+    public boolean processGetRequest(MessageContext msgContext,
+                                     HttpServletRequest request,
+                                     HttpServletResponse response) throws AxisFault {
+        // here, only the parameters in the URI are supported. Others will be discarded.
+        try {
+
+            // set the required properties so that even if there is an error during the dispatch
+            // phase the response message will be passed to the client well. 
+            msgContext.setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_METHOD, org.apache.axis2.transport.http.HTTPConstants.HTTP_METHOD_GET);
+            msgContext.setDoingREST(true);
+            msgContext.setProperty(MessageContext.TRANSPORT_OUT, response.getOutputStream());
+
+            // 1. First dispatchAndVerify and find out the service and the operation.
+            dispatchAndVerify(msgContext);
+
+            // 2. extract the schema from the operation and construct the SOAP message out of it.
+            // 3. extract the schema from the operation.
+            AxisOperation axisOperation = msgContext.getAxisOperation();
+
+            XmlSchemaElement xmlSchemaElement = null;
+            if (axisOperation != null) {
+                AxisMessage axisMessage = axisOperation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                xmlSchemaElement = axisMessage.getSchemaElement();
+            }
+
+            SOAPEnvelope soapEnvelope = SchemaUtil.handleMediaTypeURLEncoded(msgContext,
+                    request,
+                    xmlSchemaElement,
+                    OMAbstractFactory.getSOAP11Factory());
+            msgContext.setEnvelope(soapEnvelope);
+
+            invokeAxisEngine(msgContext);
+
+        }catch(AxisFault axisFault) {
+            throw axisFault;
+        }
+        catch (IOException e) {
+            throw new AxisFault(e);
+        }
+        return true;
+    }
+
+    private void invokeAxisEngine(MessageContext messageContext) throws AxisFault {
+        AxisEngine axisEngine = new AxisEngine(configurationContext);
+        axisEngine.receive(messageContext);
+
+    }
+
+    private void dispatchAndVerify(MessageContext msgContext) throws AxisFault {
+        RequestURIBasedDispatcher requestDispatcher = new RequestURIBasedDispatcher();
+        requestDispatcher.invoke(msgContext);
+
+        // check for the dispatching result
+        if (msgContext.getAxisService() == null || msgContext.getAxisOperation() == null) {
+            throw new AxisFault("I can not find a service for this request to be serviced." +
+                    " Check the WSDL and the request URI");
+        }
+    }
+
+    private SOAPEnvelope handleNonURLEncodedContentTypes(MessageContext msgCtxt,
+                                                         HttpServletRequest request,
+                                                         SOAPFactory soapFactory) throws AxisFault {
+        try {
+
+            SOAPEnvelope soapEnvelope = soapFactory.getDefaultEnvelope();
+            SOAPBody body = soapEnvelope.getBody();
+
+            ServletInputStream inputStream = request.getInputStream();
+            String contentType = request.getContentType();
+
+            // irrespective of the schema, if the media type is text/xml, all the information
+            // should be in the body.
+            // I'm assuming here that the user is sending this data according to the schema.
+            if (checkContentType(org.apache.axis2.transport.http.HTTPConstants.MEDIA_TYPE_TEXT_XML, contentType)) {
+
+                // If charset is not specified
+                XMLStreamReader xmlreader;
+                if (TransportUtils.getCharSetEncoding(contentType) == null) {
+                    xmlreader = StAXUtils.createXMLStreamReader(inputStream, MessageContext.DEFAULT_CHAR_SET_ENCODING);
+
+                    // Set the encoding scheme in the message context
+                    msgCtxt.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+                            MessageContext.DEFAULT_CHAR_SET_ENCODING);
+                } else {
+
+                    // get the type of char encoding
+                    String charSetEnc = TransportUtils.getCharSetEncoding(contentType);
+
+                    xmlreader = StAXUtils.createXMLStreamReader(inputStream,
+                            charSetEnc);
+
+                    // Setting the value in msgCtx
+                    msgCtxt.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
+                }
+
+                OMNodeEx documentElement = (OMNodeEx) new StAXOMBuilder(xmlreader).getDocumentElement();
+                documentElement.setParent(null);
+                body.addChild(documentElement);
+
+                // if the media type is multipart/related, get help from Axis2 :)
+            } else
+            if (checkContentType(org.apache.axis2.transport.http.HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED, contentType)) {
+                body.addChild(TransportUtils.selectBuilderForMIME(msgCtxt,
+                        inputStream,
+                        contentType, false).getDocumentElement());
+            }
+
+            return soapEnvelope;
+
+
+        } catch (Exception e) {
+            throw new AxisFault("Error in creating a SOAPEnvelope from the REST request");
+        }
+
+    }
+
+    private boolean checkContentType(String contentType, String contentTypeStringFromRequest) {
+        if (contentTypeStringFromRequest == null) {
+            return false;
+        }
+        return contentTypeStringFromRequest.indexOf(contentType) > -1;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/util/SOAPUtil.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/util/SOAPUtil.java
new file mode 100644
index 0000000..6390ea3
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/http/util/SOAPUtil.java
@@ -0,0 +1,122 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.transport.http.util;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.http.HTTPTransportUtils;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ *
+ */
+public class SOAPUtil {
+    private static final Log log = LogFactory.getLog(SOAPUtil.class);
+
+    public SOAPUtil() {
+    }
+
+    /**
+     * Handle SOAP Messages
+     *
+     * @param msgContext
+     * @param request
+     * @param response
+     * @throws AxisFault
+     */
+    public boolean processPostRequest(MessageContext msgContext,
+                                      HttpServletRequest request,
+                                      HttpServletResponse response) throws AxisFault {
+        try {
+            response.setHeader("Content-Type","text/html");
+            response.addHeader(HTTPConstants.HEADER_USER_AGENT, getUserAgent(msgContext));
+
+            if(server(msgContext) != null){
+                response.setHeader("Server",server(msgContext));
+            }
+            String soapAction = request.getHeader(HTTPConstants.HEADER_SOAP_ACTION);
+            HTTPTransportUtils.processHTTPPostRequest(msgContext,
+                                                      request.getInputStream(),
+                                                      response.getOutputStream(),
+                                                      request.getContentType(),
+                                                      soapAction,
+                                                      request.getRequestURL().toString());
+
+            Object contextWritten = null;
+            if (msgContext.getOperationContext()!=null)
+            	contextWritten = msgContext.getOperationContext().getProperty(Constants.RESPONSE_WRITTEN);
+
+            response.setContentType("text/xml; charset="
+                                    + msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING));
+
+            if ((contextWritten == null) || !Constants.VALUE_TRUE.equals(contextWritten)) {
+                response.setStatus(HttpServletResponse.SC_ACCEPTED);
+            }
+
+            boolean closeReader = true;
+            Parameter parameter = msgContext.getConfigurationContext().getAxisConfiguration().getParameter("axis2.close.reader");
+            if (parameter != null) {
+                closeReader = JavaUtils.isTrueExplicitly(parameter.getValue());
+            }
+            if (closeReader) {
+                try {
+                    ((StAXBuilder) msgContext.getEnvelope().getBuilder()).close();
+                } catch (Exception e) {
+                    log.debug(e);
+                }
+            }
+            return true;
+        }catch(AxisFault axisFault) {
+            throw axisFault;
+        }
+        catch (IOException ioException) {
+            throw new AxisFault(ioException);
+        }
+    }
+
+    private String getUserAgent(MessageContext messageContext) {
+        String userAgentString = "Axis2";
+        if (messageContext.getParameter(HTTPConstants.USER_AGENT) != null){
+            OMElement userAgentElement = messageContext.getParameter(HTTPConstants.USER_AGENT).getParameterElement();
+            return userAgentElement.getText().trim();
+
+        }
+
+
+        return userAgentString;
+    }
+
+    private String server(MessageContext messageContext) {
+        if (messageContext.getParameter(HTTPConstants.SERVER) != null){
+            OMElement userAgentElement = messageContext.getParameter(HTTPConstants.SERVER).getParameterElement();
+            return userAgentElement.getText().trim();
+
+        }
+        return null;
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/AxisJMSException.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/AxisJMSException.java
new file mode 100644
index 0000000..e700e30
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/AxisJMSException.java
@@ -0,0 +1,31 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.jms;
+
+public class AxisJMSException extends RuntimeException {
+
+    AxisJMSException() {
+        super();
+    }
+
+    AxisJMSException(String msg) {
+        super(msg);
+    }
+
+    AxisJMSException(String msg, Exception e) {
+        super(msg, e);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSConnectionFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSConnectionFactory.java
new file mode 100644
index 0000000..e0de93b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSConnectionFactory.java
@@ -0,0 +1,322 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.jms;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.jms.*;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Encapsulate a JMS Connection factory definition within an Axis2.xml
+ *
+ * More than one JMS connection factory could be defined within an Axis2 XML
+ * specifying the JMSListener as the transportReceiver.
+ *
+ * These connection factories are created at the initialization of the
+ * transportReceiver, and any service interested in using any of these could
+ * specify the name of the factory and the destination through Parameters named
+ * JMSConstants.CONFAC_PARAM and JMSConstants.DEST_PARAM as shown below.
+ *
+ * <parameter name="transport.jms.ConnectionFactory" locked="true">myQueueConnectionFactory</parameter>
+ * <parameter name="transport.jms.Destination" locked="true">TestQueue</parameter>
+ *
+ * If a connection factory is defined by a parameter named
+ * JMSConstants.DEFAULT_CONFAC_NAME in the Axis2 XML, services which does not
+ * explicitly specify a connection factory will be defaulted to it - if it is
+ * defined in the Axis2 configuration.
+ *
+ * e.g.
+ *   <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
+ *       <parameter name="myTopicConnectionFactory" locked="false">
+ *       	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
+ *       	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
+ *       	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
+ *       	<parameter name="transport.jms.Destination" locked="false">myTopicOne, myTopicTwo</parameter>
+ *       </parameter>
+ *       <parameter name="myQueueConnectionFactory" locked="false">
+ *       	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
+ *       	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
+ *       	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
+ *       	<parameter name="transport.jms.Destination" locked="false">myQueueOne, myQueueTwo</parameter>
+ *       </parameter>
+ *       <parameter name="default" locked="false">
+ *       	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
+ *       	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
+ *       	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ConnectionFactory</parameter>
+ *       	<parameter name="transport.jms.Destination" locked="false">myDestinationOne, myDestinationTwo</parameter>
+ *       </parameter>
+ *   </transportReceiver>
+ */
+public class JMSConnectionFactory {
+
+    private static final Log log = LogFactory.getLog(JMSConnectionFactory.class);
+
+    /** The name used for the connection factory definition within Axis2 */
+    private String name = null;
+    /** The JNDI name of the actual connection factory */
+    private String jndiName = null;
+    /** A map of destinations to service names they belong to */
+    private Map destinations = null;
+    /** The JMS Sessions listening for messages */
+    private Map jmsSessions = null;
+    /** Properties of the connection factory */
+    private Hashtable properties = null;
+    /** The JNDI Context used */
+    private Context context = null;
+    /** The actual ConnectionFactory instance held within */
+    private ConnectionFactory conFactory = null;
+    /** The JMS Connection is opened. */
+    private Connection connection = null;
+    /** The JMS Message receiver for this connection factory */
+    private JMSMessageReceiver msgRcvr = null;
+
+    /**
+     * Create a JMSConnectionFactory for the given Axis2 name and JNDI name
+     * @param name the local Axis2 name of the connection factory
+     * @param jndiName the JNDI name of the actual connection factory used
+     */
+    JMSConnectionFactory(String name, String jndiName) {
+        this.name = name;
+        this.jndiName = jndiName;
+        destinations = new HashMap();
+        properties = new Hashtable();
+        jmsSessions = new HashMap();
+    }
+
+    /**
+     * Create a JMSConnectionFactory for the given Axis2 name
+     * @param name the local Axis2 name of the connection factory
+     */
+    JMSConnectionFactory(String name) {
+        this(name, null);
+    }
+
+    /**
+     * Connect to the actual JMS connection factory specified by the JNDI name
+     * @throws NamingException if the connection factory cannot be found
+     */
+    public void connect() throws NamingException {
+        if (context == null) {
+            createInitialContext();
+        }
+        conFactory = (ConnectionFactory) context.lookup(jndiName);
+        log.debug("Connected to the actual connection factory : " + jndiName);
+    }
+
+    /**
+     * Creates the initial context using the set properties
+     * @throws NamingException
+     */
+    private void createInitialContext() throws NamingException {
+        context = new InitialContext(properties);
+    }
+
+    /**
+     * Set the JNDI connection factory name
+     * @param jndiName
+     */
+    public void setJndiName(String jndiName) {
+        this.jndiName = jndiName;
+    }
+
+    /**
+     * Add a listen destination on this connection factory on behalf of the given service
+     * @param destinationJndi destination JNDI name
+     * @param serviceName the service to which it belongs
+     */
+    public void addDestination(String destinationJndi, String serviceName) {
+        destinations.put(destinationJndi, serviceName);
+    }
+
+    /**
+     * Remove listen destination on this connection factory
+     * @param destinationJndi the JMS destination to be removed
+     */
+    public void removeDestination(String destinationJndi) throws JMSException {
+        stoplistenOnDestination(destinationJndi);
+        destinations.remove(destinationJndi);
+    }
+
+    /**
+     * Add a property to the connection factory
+     * @param key
+     * @param value
+     */
+    public void addProperty(String key, String value) {
+        properties.put(key, value);
+    }
+
+    /**
+     * Return the name of the connection factory
+     * @return the Axis2 name of this factory
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Get the JNDI name of the actual factory
+     * @return the jndi name of the actual connection factory
+     */
+    public String getJndiName() {
+        return jndiName;
+    }
+
+    /**
+     * Get the actual underlying connection factory
+     * @return actual connection factory
+     */
+    public ConnectionFactory getConFactory() {
+        return conFactory;
+    }
+
+    /**
+     * Get the list of destinations associated with this connection factory
+     * @return destinations to service maping
+     */
+    public Map getDestinations() {
+        return destinations;
+    }
+
+    /**
+     * Get the connection factory properties
+     * @return properties
+     */
+    public Hashtable getProperties() {
+        return properties;
+    }
+
+    /**
+     * Begin listening for messages on the list of destinations associated
+     * with this connection factory. (Called during Axis2 initialization of
+     * the Transport receivers)
+     * @param msgRcvr the message receiver which will process received messages
+     * @throws JMSException on exceptions
+     */
+    public void listen(JMSMessageReceiver msgRcvr) throws JMSException {
+
+        // save a reference to the message receiver
+        this.msgRcvr = msgRcvr;
+
+        log.debug("Connection factory : " + name + " initializing...");
+
+        if (conFactory == null || context == null) {
+            handleException(
+                "Connection factory must be 'connected' before listening");
+        } else {
+            try {
+                connection = conFactory.createConnection();
+            } catch (JMSException e) {
+                handleException("Error creating a JMS connection using the " +
+                    "factory : " + jndiName, e);
+            }
+        }
+
+        Iterator iter = destinations.keySet().iterator();
+        while (iter.hasNext()) {
+            String destinationJndi = (String) iter.next();
+            listenOnDestination(destinationJndi);
+        }
+
+        // start the connection
+        connection.start();
+        log.info("Connection factory : " + name + " initialized...");
+    }
+
+    /**
+     * Listen on the given destination from this connection factory. Used to
+     * start listening on a destination associated with a newly deployed service
+     *
+     * @param destinationJndi the JMS destination to listen on
+     * @throws JMSException on exception
+     */
+    public void listenOnDestination(String destinationJndi) throws JMSException {
+        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Destination destination = null;
+
+        try {
+            Object o = context.lookup(destinationJndi);
+            destination = (Destination) o;
+
+        } catch (NameNotFoundException e) {
+            log.warn("Cannot find destination : " + destinationJndi +
+                " Creating a Queue with this name");
+            destination = session.createQueue(destinationJndi);
+
+        } catch (NamingException e) {
+            log.warn("Error looking up destination : " + destinationJndi, e);
+            // mark service as faulty
+            JMSUtils.markServiceAsFaulty(
+                (String) destinations.get(destinationJndi),
+                "Error looking up JMS destination : " + destinationJndi,
+                this.msgRcvr.getAxisConf().getAxisConfiguration());
+        }
+
+        MessageConsumer consumer = session.createConsumer(destination);
+        consumer.setMessageListener(this.msgRcvr);
+        jmsSessions.put(destinationJndi, session);
+    }
+
+    /**
+     * Stop listening on the given destination - for undeployment of services
+     *
+     * @param destinationJndi the JNDI name of the JMS destination
+     * @throws JMSException on exception
+     */
+    private void stoplistenOnDestination(String destinationJndi) throws JMSException {
+        ((Session) jmsSessions.get(destinationJndi)).close();
+    }
+
+    /**
+     * Return the service name using this destination
+     * @param destination the destination name
+     * @return the service which uses the given destination, or null
+     */
+    public String getServiceNameForDestination(String destination) {
+
+        return (String) destinations.get(destination);
+    }
+
+    /**
+     * Close all connections, sessions etc.. and stop this connection factory
+     */
+    public void stop() {
+        try {
+            connection.close();
+        } catch (JMSException e) {
+            log.warn("Error shutting down connection factory : " + name, e);
+        }
+    }
+
+    private void handleException(String msg) throws AxisJMSException {
+        log.error(msg);
+        throw new AxisJMSException(msg);
+    }
+
+    private void handleException(String msg, Exception e) throws AxisJMSException {
+        log.error(msg, e);
+        throw new AxisJMSException(msg, e);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java
new file mode 100644
index 0000000..5c2dcf3
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java
@@ -0,0 +1,84 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.jms;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.Options;
+
+import javax.xml.namespace.QName;
+
+public class JMSConstants {
+
+    /** The prefix indicating an Axis JMS URL */
+    public static final String JMS_PREFIX = "jms:/";
+
+    /** The QName of the JMS transport */
+    public static final QName JMS_QNAME = new QName(Constants.TRANSPORT_JMS);
+
+    /** The Parameter name indicating a JMS destination */
+    public static final String DEST_PARAM = "transport.jms.Destination";
+
+    /** The Parameter name indicating the JMS destination type */
+    public static final String DEST_TYPE_PARAM = "transport.jms.DestinationType";
+
+    /** The Parameter name indicating the JMS destination type */
+    public static final String DEST_TYPE_TOPIC = "Topic";
+
+    /** The Parameter name indicating the JMS destination type */
+    public static final String DEST_TYPE_QUEUE = "Queue";
+
+    /** The Parameter name of an Axis2 service, indicating the JMS connection
+     * factory which should be used to listen for messages for it. This is
+     * the local (Axis2) name of the connection factory and not a JNDI name
+     */
+    public static final String CONFAC_PARAM = "transport.jms.ConnectionFactory";
+    /** The Parameter name indicating the JMS connection factory JNDI name */
+    public static final String CONFAC_JNDI_NAME_PARAM = "transport.jms.ConnectionFactoryJNDIName";
+    /** The Parameter name indicating the operation to dispatch non SOAP/XML messages */
+    public static final String OPERATION_PARAM = "transport.jms.Operation";
+    /** The Parameter name indicating the wrapper element for non SOAP/XML messages */
+    public static final String WRAPPER_PARAM = "transport.jms.Wrapper";
+    /** The default operation name to be used for non SOAP/XML messages
+     if the operation cannot be determined*/
+    public static final QName DEFAULT_OPERATION = new QName("urn:mediate");
+    /** The name of the element which wraps non SOAP/XML content into a SOAP envelope */
+    public static final QName DEFAULT_WRAPPER = new QName(Constants.AXIS2_NAMESPACE_URI, "jmsMessage");
+    /** The local (Axis2) JMS connection factory name of the default connection
+     * factory to be used, if a service does not explicitly state the connection
+     * factory it should be using by a Parameter named JMSConstants.CONFAC_PARAM
+     */
+    public static final String DEFAULT_CONFAC_NAME = "default";
+
+    /** A MessageContext property or client Option stating the JMS message type */
+    public static final String JMS_MESSAGE_TYPE = "JMS_MESSAGE_TYPE";
+    /** The message type indicating a BytesMessage. See JMS_MESSAGE_TYPE */
+    public static final String JMS_BYTE_MESSAGE = "JMS_BYTE_MESSAGE";
+    /** The message type indicating a TextMessage. See JMS_MESSAGE_TYPE */
+    public static final String JMS_TEXT_MESSAGE = "JMS_TEXT_MESSAGE";
+    /** A MessageContext property or client Option stating the JMS correlation id */
+    public static final String JMS_COORELATION_ID = "JMS_COORELATION_ID";
+    /** A MessageContext property or client Option stating the time to wait for a response JMS message */
+    public static final String JMS_WAIT_REPLY = "JMS_WAIT_REPLY";
+    /** The JMS message property specifying the SOAP Action */
+    public static final String SOAPACTION = "SOAPAction";
+    /** The JMS message property specifying the content type */
+    public static final String CONTENT_TYPE = "contentType";
+    /** The default JMS time out waiting for a reply */
+    public static final long DEFAULT_JMS_TIMEOUT = Options.DEFAULT_TIMEOUT_MILLISECONDS;
+
+    public static final String ACTIVEMQ_DYNAMIC_QUEUE = "dynamicQueues/";
+    public static final String ACTIVEMQ_DYNAMIC_TOPIC = "dynamicTopics/";
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSListener.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSListener.java
new file mode 100644
index 0000000..6a14a35
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSListener.java
@@ -0,0 +1,475 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.jms;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ExecutorService;
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisEvent;
+import org.apache.axis2.engine.AxisObserver;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.jms.JMSException;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import java.util.*;
+
+/**
+ * The JMS Transport listener implementation. A JMS Listner will hold one or
+ * more JMS connection factories, which would be created at initialization
+ * time. This implementation does not support the creation of connection
+ * factories at runtime. This JMS Listener registers with Axis to be notified
+ * of service deployment/undeployment/start and stop, and enables or disables
+ * listening for messages on the destinations as appropriate.
+ * <p/>
+ * A Service could state the JMS connection factory name and the destination
+ * name for use as Parameters in its services.xml as shown in the example
+ * below. If the connection name was not specified, it will use the connection
+ * factory named "default" (JMSConstants.DEFAULT_CONFAC_NAME) - if such a
+ * factory is defined in the Axis2.xml. If the destination name is not specified
+ * it will default to a JMS queue by the name of the service. If the destination
+ * should be a Topic, it should be created on the JMS implementation, and
+ * specified in the services.xml of the service.
+ * <p/>
+ * <parameter name="transport.jms.ConnectionFactory" locked="true">
+ * myTopicConnectionFactory</parameter>
+ * <parameter name="transport.jms.Destination" locked="true">
+ * dynamicTopics/something.TestTopic</parameter>
+ */
+public class JMSListener implements TransportListener {
+
+    private static final Log log = LogFactory.getLog(JMSListener.class);
+
+    /**
+     * The maximum number of threads used for the worker thread pool
+     */
+    private static final int WORKERS_MAX_THREADS = 100;
+    /**
+     * The keep alive time of an idle worker thread
+     */
+    private static final long WORKER_KEEP_ALIVE = 60L;
+    /**
+     * The worker thread timeout time unit
+     */
+    private static final TimeUnit TIME_UNIT = TimeUnit.SECONDS;
+
+    /**
+     * A Map containing the connection factories managed by this, keyed by name
+     */
+    private Map connectionFactories = new HashMap();
+    /**
+     * A Map of service name to the JMS EPR addresses
+     */
+    private Map serviceNameToEprMap = new HashMap();
+    /**
+     * The Axis2 Configuration context
+     */
+    private ConfigurationContext axisConf = null;
+
+    /**
+     * This is the TransportListener initialization method invoked by Axis2
+     *
+     * @param axisConf   the Axis configuration context
+     * @param transprtIn the TransportIn description
+     */
+    public void init(ConfigurationContext axisConf,
+                     TransportInDescription transprtIn) {
+
+        // save reference to the configuration context
+        this.axisConf = axisConf;
+
+        // initialize the defined connection factories
+        initializeConnectionFactories(transprtIn);
+
+        // if no connection factories are defined, we cannot listen
+        if (connectionFactories.isEmpty()) {
+            log.warn("No JMS connection factories are defined." +
+                    "Will not listen for any JMS messages");
+            return;
+        }
+
+        // iterate through deployed services and validate connection factory
+        // names, and mark services as faulty where appropriate.
+        Iterator services =
+                axisConf.getAxisConfiguration().getServices().values().iterator();
+
+        while (services.hasNext()) {
+            AxisService service = (AxisService) services.next();
+            if (JMSUtils.isJMSService(service)) {
+                processService(service);
+            }
+        }
+
+        // register to receive updates on services for lifetime management
+        axisConf.getAxisConfiguration().addObservers(new JMSAxisObserver());
+
+        log.info("JMS Transport Receiver (Listener) initialized...");
+    }
+
+
+    /**
+     * Prepare to listen for JMS messages on behalf of this service
+     *
+     * @param service
+     */
+    private void processService(AxisService service) {
+        JMSConnectionFactory cf = getConnectionFactory(service);
+        if (cf == null) {
+            String msg = "Service " + service.getName() + " does not specify" +
+                    "a JMS connection factory or refers to an invalid factory. " +
+                    "This service is being marked as faulty and will not be " +
+                    "available over the JMS transport";
+            log.warn(msg);
+            JMSUtils.markServiceAsFaulty(
+                    service.getName(), msg, service.getAxisConfiguration());
+            return;
+        }
+
+        String destination = JMSUtils.getDestination(service);
+
+        // compute service EPR and keep for later use
+        serviceNameToEprMap.put(service.getName(), getEPR(cf, destination));
+
+        // add the specified or implicit destination of this service
+        // to its connection factory
+        cf.addDestination(destination, service.getName());
+    }
+
+    /**
+     * Return the connection factory name for this service. If this service
+     * refers to an invalid factory or defaults to a non-existent default
+     * factory, this returns null
+     *
+     * @param service the AxisService
+     * @return the JMSConnectionFactory to be used, or null if reference is invalid
+     */
+    private JMSConnectionFactory getConnectionFactory(AxisService service) {
+        Parameter conFacParam = service.getParameter(JMSConstants.CONFAC_PARAM);
+
+        // validate connection factory name (specified or default)
+        if (conFacParam != null) {
+            String conFac = (String) conFacParam.getValue();
+            if (connectionFactories.containsKey(conFac)) {
+                return (JMSConnectionFactory) connectionFactories.get(conFac);
+            } else {
+                return null;
+            }
+
+        } else if (connectionFactories.containsKey(JMSConstants.DEFAULT_CONFAC_NAME)) {
+            return (JMSConnectionFactory) connectionFactories.
+                    get(JMSConstants.DEFAULT_CONFAC_NAME);
+
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Initialize the defined connection factories, parsing the TransportIn
+     * descriptions
+     *
+     * @param transprtIn The Axis2 Transport in for the JMS
+     */
+    private void initializeConnectionFactories(TransportInDescription transprtIn) {
+        // iterate through all defined connection factories
+        Iterator conFacIter = transprtIn.getParameters().iterator();
+
+        while (conFacIter.hasNext()) {
+
+            Parameter param = (Parameter) conFacIter.next();
+            JMSConnectionFactory jmsConFactory =
+                    new JMSConnectionFactory(param.getName());
+
+            ParameterIncludeImpl pi = new ParameterIncludeImpl();
+            try {
+                pi.deserializeParameters((OMElement) param.getValue());
+            } catch (AxisFault axisFault) {
+                handleException("Error reading Parameters for JMS connection " +
+                        "factory" + jmsConFactory.getName(), axisFault);
+            }
+
+            // read connection facotry properties
+            Iterator params = pi.getParameters().iterator();
+
+            while (params.hasNext()) {
+                Parameter p = (Parameter) params.next();
+
+                if (Context.INITIAL_CONTEXT_FACTORY.equals(p.getName())) {
+                    jmsConFactory.addProperty(
+                            Context.INITIAL_CONTEXT_FACTORY, (String) p.getValue());
+                } else if (Context.PROVIDER_URL.equals(p.getName())) {
+                    jmsConFactory.addProperty(
+                            Context.PROVIDER_URL, (String) p.getValue());
+                } else if (Context.SECURITY_PRINCIPAL.equals(p.getName())) {
+                    jmsConFactory.addProperty(
+                            Context.SECURITY_PRINCIPAL, (String) p.getValue());
+                } else if (Context.SECURITY_CREDENTIALS.equals(p.getName())) {
+                    jmsConFactory.addProperty(
+                            Context.SECURITY_CREDENTIALS, (String) p.getValue());
+                } else if (JMSConstants.CONFAC_JNDI_NAME_PARAM.equals(p.getName())) {
+                    jmsConFactory.setJndiName((String) p.getValue());
+                } else if (JMSConstants.DEST_PARAM.equals(p.getName())) {
+                    StringTokenizer st =
+                            new StringTokenizer((String) p.getValue(), " ,");
+                    while (st.hasMoreTokens()) {
+                        jmsConFactory.addDestination(st.nextToken(), null);
+                    }
+                }
+            }
+
+            // connect to the actual connection factory
+            try {
+                jmsConFactory.connect();
+                connectionFactories.put(jmsConFactory.getName(), jmsConFactory);
+            } catch (NamingException e) {
+                handleException("Error connecting to JMS connection factory : " +
+                        jmsConFactory.getJndiName(), e);
+            }
+        }
+    }
+
+    /**
+     * Get the EPR for the given JMS connection factory and destination
+     * the form of the URL is
+     * jms:/<destination>?[<key>=<value>&]*
+     *
+     * @param cf          the Axis2 JMS connection factory
+     * @param destination the JNDI name of the destination
+     * @return the EPR as a String
+     */
+    private static String getEPR(JMSConnectionFactory cf, String destination) {
+        StringBuffer sb = new StringBuffer();
+        sb.append(JMSConstants.JMS_PREFIX).append(destination);
+        sb.append("?").append(JMSConstants.CONFAC_JNDI_NAME_PARAM).
+                append("=").append(cf.getJndiName());
+        Iterator props = cf.getProperties().keySet().iterator();
+        while (props.hasNext()) {
+            String key = (String) props.next();
+            String value = (String) cf.getProperties().get(key);
+            sb.append("&").append(key).append("=").append(value);
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Start this JMS Listener (Transport Listener)
+     *
+     * @throws AxisFault
+     */
+    public void start() throws AxisFault {
+        // create thread pool of workers
+        ExecutorService workerPool = new ThreadPoolExecutor(
+                1,
+                WORKERS_MAX_THREADS, WORKER_KEEP_ALIVE, TIME_UNIT,
+                new LinkedBlockingQueue(),
+                new org.apache.axis2.util.threadpool.DefaultThreadFactory(
+                        new ThreadGroup("JMS Worker thread group"),
+                        "JMSWorker"));
+
+        Iterator iter = connectionFactories.values().iterator();
+        while (iter.hasNext()) {
+            JMSConnectionFactory conFac = (JMSConnectionFactory) iter.next();
+            JMSMessageReceiver msgRcvr =
+                    new JMSMessageReceiver(conFac, workerPool, axisConf);
+
+            try {
+                conFac.listen(msgRcvr);
+            } catch (JMSException e) {
+                handleException("Error starting connection factory : " +
+                        conFac.getName(), e);
+            }
+        }
+    }
+
+    /**
+     * Stop this transport listener and shutdown all of the connection factories
+     */
+    public void stop() {
+        Iterator iter = connectionFactories.values().iterator();
+        while (iter.hasNext()) {
+            ((JMSConnectionFactory) iter.next()).stop();
+        }
+    }
+
+    /**
+     * Returns EPRs for the given service and IP. (Picks up precomputed EPR)
+     *
+     * @param serviceName service name
+     * @param ip          ignored
+     * @return the EPR for the service
+     * @throws AxisFault not used
+     */
+    public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
+        //Strip out the operation name
+        if (serviceName.indexOf('/') != -1) {
+            serviceName = serviceName.substring(0, serviceName.indexOf('/'));
+        }
+        return new EndpointReference[]{new EndpointReference((String) serviceNameToEprMap.get(serviceName))};
+    }
+
+    /**
+     * Returns the EPR for the given service and IP. (Picks up precomputed EPR)
+     *
+     * @param serviceName service name
+     * @param ip          ignored
+     * @return the EPR for the service
+     * @throws AxisFault not used
+     */
+    public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
+        return getEPRsForService(serviceName, ip)[0];
+    }
+
+    /**
+     * Starts listening for messages on this service
+     *
+     * @param service the AxisService just deployed
+     */
+    private void startListeningForService(AxisService service) {
+        processService(service);
+        JMSConnectionFactory cf = getConnectionFactory(service);
+        if (cf == null) {
+            String msg = "Service " + service.getName() + " does not specify" +
+                    "a JMS connection factory or refers to an invalid factory." +
+                    "This service is being marked as faulty and will not be " +
+                    "available over the JMS transport";
+            log.warn(msg);
+            JMSUtils.markServiceAsFaulty(
+                    service.getName(), msg, service.getAxisConfiguration());
+            return;
+        }
+
+        String destination = JMSUtils.getDestination(service);
+        try {
+            cf.listenOnDestination(destination);
+            log.info("Started listening on destination : " + destination +
+                    " for service " + service.getName());
+
+        } catch (JMSException e) {
+            handleException(
+                    "Could not listen on JMS for service " + service.getName(), e);
+            JMSUtils.markServiceAsFaulty(
+                    service.getName(), e.getMessage(), service.getAxisConfiguration());
+        }
+    }
+
+    /**
+     * Stops listening for messages for the service undeployed
+     *
+     * @param service the AxisService just undeployed
+     */
+    private void stopListeningForService(AxisService service) {
+
+        JMSConnectionFactory cf = getConnectionFactory(service);
+        if (cf == null) {
+            String msg = "Service " + service.getName() + " does not specify" +
+                    "a JMS connection factory or refers to an invalid factory." +
+                    "This service is being marked as faulty and will not be " +
+                    "available over the JMS transport";
+            log.warn(msg);
+            JMSUtils.markServiceAsFaulty(
+                    service.getName(), msg, service.getAxisConfiguration());
+            return;
+        }
+
+        // remove from the serviceNameToEprMap
+        serviceNameToEprMap.remove(service.getName());
+
+        String destination = JMSUtils.getDestination(service);
+        try {
+            cf.removeDestination(destination);
+        } catch (JMSException e) {
+            handleException(
+                    "Error while terminating listening on JMS destination : " + destination, e);
+        }
+    }
+
+    private void handleException(String msg, Exception e) {
+        log.error(msg, e);
+        throw new AxisJMSException(msg, e);
+    }
+
+    /**
+     * An AxisObserver which will start listening for newly deployed services,
+     * and stop listening when services are undeployed.
+     */
+    class JMSAxisObserver implements AxisObserver {
+
+        // The initilization code will go here
+        public void init(AxisConfiguration axisConfig) {
+        }
+
+        public void serviceUpdate(AxisEvent event, AxisService service) {
+
+            if (JMSUtils.isJMSService(service)) {
+                switch (event.getEventType()) {
+                    case AxisEvent.SERVICE_DEPLOY :
+                        startListeningForService(service);
+                        break;
+                    case AxisEvent.SERVICE_REMOVE :
+                        stopListeningForService(service);
+                        break;
+                    case AxisEvent.SERVICE_START  :
+                        startListeningForService(service);
+                        break;
+                    case AxisEvent.SERVICE_STOP   :
+                        stopListeningForService(service);
+                        break;
+                }
+            }
+        }
+
+        public void moduleUpdate(AxisEvent event, AxisModule module) {
+        }
+
+        //--------------------------------------------------------
+        public void addParameter(Parameter param) throws AxisFault {
+        }
+
+        public void removeParameter(Parameter param) throws AxisFault {
+        }
+
+        public void deserializeParameters(OMElement parameterElement) throws AxisFault {
+        }
+
+        public Parameter getParameter(String name) {
+            return null;
+        }
+
+        public ArrayList getParameters() {
+            return null;
+        }
+
+        public boolean isParameterLocked(String parameterName) {
+            return false;
+        }
+
+        public void serviceGroupUpdate(AxisEvent event, AxisServiceGroup serviceGroup) {
+        }
+    }
+
+    public ConfigurationContext getConfigurationContext() {
+        return this.axisConf;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
new file mode 100644
index 0000000..bdd5ecc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
@@ -0,0 +1,206 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.jms;
+
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.util.UUIDGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.jms.*;
+import javax.naming.Context;
+import javax.xml.stream.XMLStreamException;
+import java.io.InputStream;
+
+/**
+ * This is the actual receiver which listens for and accepts JMS messages, and
+ * hands them over to be processed by a worker thread. An instance of this
+ * class is created for each JMSConnectionFactory, but all instances may and
+ * will share the same worker thread pool.
+ */
+public class JMSMessageReceiver implements MessageListener {
+
+    private static final Log log = LogFactory.getLog(JMSMessageReceiver.class);
+
+    /** The thread pool of workers */
+    private Executor workerPool = null;
+    /** The Axis configuration context */
+    private ConfigurationContext axisConf = null;
+    /** A reference to the JMS Connection Factory */
+    private JMSConnectionFactory jmsConFac = null;
+
+    /**
+     * Create a new JMSMessage receiver
+     * @param jmsConFac the JMS connection factory associated with
+     * @param workerPool the worker thead pool to be used
+     * @param axisConf the Axis2 configuration
+     */
+    JMSMessageReceiver(JMSConnectionFactory jmsConFac,
+        Executor workerPool, ConfigurationContext axisConf) {
+        this.jmsConFac = jmsConFac;
+        this.workerPool = workerPool;
+        this.axisConf = axisConf;
+    }
+
+    /**
+     * Return the Axis configuration
+     * @return the Axis configuration
+     */
+    public ConfigurationContext getAxisConf() {
+        return axisConf;
+    }
+
+    /**
+     * Set the worker thread pool
+     * @param workerPool the worker thead pool
+     */
+    public void setWorkerPool(Executor workerPool) {
+        this.workerPool = workerPool;
+    }
+
+    /**
+     * The entry point on the recepit of each JMS message
+     * @param message the JMS message received
+     */
+    public void onMessage(Message message) {
+        // directly create a new worker and delegate processing
+        try {
+            log.debug("Received JMS message to destination : " +
+                message.getJMSDestination());
+        } catch (JMSException e) {
+            e.printStackTrace();
+        }
+        workerPool.execute(new Worker(message));
+    }
+
+    /**
+     * Creates an Axis MessageContext for the received JMS message and
+     * sets up the transports and various properties
+     * @param message the JMS message
+     * @return the Axis MessageContext
+     */
+    private MessageContext createMessageContext(Message message) {
+
+        InputStream in = JMSUtils.getInputStream(message);
+
+        try {
+            MessageContext msgContext = new MessageContext();
+
+            // get destination and create correct EPR
+            Destination dest = message.getJMSDestination();
+            String destinationName = null;
+            if (dest instanceof Queue) {
+                destinationName = ((Queue) dest).getQueueName();
+            } else if (dest instanceof Topic) {
+                destinationName = ((Topic) dest).getTopicName();
+            }
+
+            String serviceName = jmsConFac.getServiceNameForDestination(destinationName);
+
+            // hack to get around the crazy Active MQ dynamic queue and topic issues
+            if (serviceName == null) {
+                String provider = (String) jmsConFac.getProperties().get(
+                    Context.INITIAL_CONTEXT_FACTORY);
+                if (provider.indexOf("activemq") != -1) {
+                    serviceName = jmsConFac.getServiceNameForDestination(
+                        ((dest instanceof Queue ?
+                            JMSConstants.ACTIVEMQ_DYNAMIC_QUEUE :
+                            JMSConstants.ACTIVEMQ_DYNAMIC_TOPIC) + destinationName));
+                }
+            }
+
+
+            if (serviceName != null) {
+                // set to bypass dispatching and handover directly to this service
+                msgContext.setAxisService(
+                    axisConf.getAxisConfiguration().getService(serviceName));
+            }
+
+            msgContext.setConfigurationContext(axisConf);
+            msgContext.setIncomingTransportName(Constants.TRANSPORT_JMS);
+            msgContext.setTransportIn(
+                axisConf.getAxisConfiguration().getTransportIn(JMSConstants.JMS_QNAME));
+
+            msgContext.setTransportOut(
+                axisConf.getAxisConfiguration().getTransportOut(JMSConstants.JMS_QNAME));
+            // the reply is assumed to be on the JMSReplyTo destination, using
+            // the same incoming connection factory
+            msgContext.setProperty(Constants.OUT_TRANSPORT_INFO,
+                 new JMSOutTransportInfo(jmsConFac.getConFactory(), message.getJMSReplyTo()));
+
+            msgContext.setServerSide(true);
+            msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
+
+            String soapAction = JMSUtils.getProperty(message, JMSConstants.SOAPACTION);
+            if (soapAction != null) {
+                msgContext.setSoapAction(soapAction);
+            }
+
+            msgContext.setEnvelope(
+                JMSUtils.getSOAPEnvelope(message, msgContext, in));
+
+            return msgContext;
+
+        } catch (JMSException e) {
+            handleException("JMS Exception reading the destination name", e);
+        } catch (AxisFault e) {
+            handleException("Axis fault creating the MessageContext", e);
+        } catch (XMLStreamException e) {
+            handleException("Error reading the SOAP envelope", e);
+        }
+        return null;
+    }
+
+    private void handleException(String msg, Exception e) {
+        log.error(msg, e);
+        throw new AxisJMSException(msg, e);
+    }
+
+    /**
+     * The actual Runnable Worker implementation which will process the
+     * received JMS messages in the worker thread pool
+     */
+    class Worker implements Runnable {
+
+        private Message message = null;
+
+        Worker(Message message) {
+            this.message = message;
+        }
+
+        public void run() {
+            MessageContext msgCtx = createMessageContext(message);
+
+            AxisEngine engine = new AxisEngine(msgCtx.getConfigurationContext());
+            try {
+                log.debug("Delegating JMS message for processing to the Axis engine");
+                if (msgCtx.getEnvelope().getBody().hasFault()) {
+                    engine.receiveFault(msgCtx);
+                } else {
+                    engine.receive(msgCtx);
+                }
+            } catch (AxisFault af) {
+                log.error("JMS Worker [" + Thread.currentThread().getName() +
+                    "] Encountered an Axis Fault : " + af.getMessage(), af);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSOutTransportInfo.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSOutTransportInfo.java
new file mode 100644
index 0000000..8933af1
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSOutTransportInfo.java
@@ -0,0 +1,140 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.jms;
+
+import org.apache.axis2.transport.OutTransportInfo;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
+import java.util.Hashtable;
+
+/**
+ * The JMS OutTransportInfo
+ */
+public class JMSOutTransportInfo implements OutTransportInfo {
+
+    private static final Log log = LogFactory.getLog(JMSOutTransportInfo.class);
+
+    private ConnectionFactory connectionFactory = null;
+    private Destination destination = null;
+
+    private String contentType = null;
+
+    /**
+     * Creates an instance using the given connection factory and destination
+     * @param connectionFactory the connection factory
+     * @param dest the destination
+     */
+    JMSOutTransportInfo(ConnectionFactory connectionFactory, Destination dest) {
+        this.connectionFactory = connectionFactory;
+        this.destination = dest;
+    }
+
+    /**
+     * Creates and instance using the given URL
+     * @param url the URL
+     */
+    JMSOutTransportInfo(String url) {
+        if (!url.startsWith(JMSConstants.JMS_PREFIX)) {
+            handleException("Invalid JMS URL : " + url +
+                " Must begin with the prefix " + JMSConstants.JMS_PREFIX);
+        } else {
+            Context context = null;
+            Hashtable props = JMSUtils.getProperties(url);
+            try {
+                context = new InitialContext(props);
+            } catch (NamingException e) {
+                handleException("Could not get the initial context", e);
+            }
+
+            connectionFactory = getConnectionFactory(context, props);
+            destination = getDestination(context, url);
+        }
+    }
+
+    /**
+     * Get the referenced ConnectionFactory using the properties from the context
+     * @param context the context to use for lookup
+     * @param props the properties which contains the JNDI name of the factory
+     * @return the connection factory
+     */
+    private ConnectionFactory getConnectionFactory(Context context, Hashtable props) {
+        try {
+
+            String conFacJndiName = (String) props.get(JMSConstants.CONFAC_JNDI_NAME_PARAM);
+            if (conFacJndiName != null) {
+                return (ConnectionFactory) context.lookup(conFacJndiName);
+            } else {
+                throw new NamingException(
+                    "JMS Connection Factory JNDI name cannot be determined from url");
+            }
+        } catch (NamingException e) {
+            handleException("Cannot get JMS Connection factory with props : " + props, e);
+        }
+        return null;
+    }
+
+    /**
+     * Get the JMS destination specified by the given URL from the context
+     * @param context the Context to lookup
+     * @param url URL
+     * @return the JMS destination, or null if it does not exist
+     */
+    private Destination getDestination(Context context, String url) {
+        String destinationName = JMSUtils.getDestination(url);
+        try {
+            return (Destination) context.lookup(destinationName);
+
+        } catch (NameNotFoundException e) {
+            log.warn("Cannot get or lookup JMS destination : " + destinationName +
+                " from url : " + url + " : " + e.getMessage());
+
+        } catch (NamingException e) {
+            handleException("Cannot get JMS destination : " + destinationName +
+                " from url : " + url, e);
+        }
+        return null;
+    }
+
+
+    private void handleException(String s) {
+        log.error(s);
+        throw new AxisJMSException(s);
+    }
+
+    private void handleException(String s, Exception e) {
+        log.error(s, e);
+        throw new AxisJMSException(s, e);
+    }
+
+    public Destination getDestination() {
+        return destination;
+    }
+
+    public ConnectionFactory getConnectionFactory() {
+        return connectionFactory;
+    }
+
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSSender.java
new file mode 100644
index 0000000..0ce3dd6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSSender.java
@@ -0,0 +1,281 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.jms;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.transport.TransportSender;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.jms.*;
+import javax.xml.stream.XMLStreamException;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+/**
+ * The TransportSender for JMS
+ */
+public class JMSSender extends AbstractHandler implements TransportSender {
+
+    private static final Log log = LogFactory.getLog(JMSSender.class);
+    /**
+     * Performs the actual sending of the JMS message
+     * @param msgContext the message context to be sent
+     * @throws AxisFault on exception
+     */
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+
+        log.debug("JMSSender invoke()");
+
+        JMSOutTransportInfo transportInfo = null;
+        String targetAddress = null;
+
+        // is there a transport url? which may be different from the WS-A To..
+        targetAddress = (String) msgContext.getProperty(
+            Constants.Configuration.TRANSPORT_URL);
+
+        if (targetAddress != null) {
+            transportInfo = new JMSOutTransportInfo(targetAddress);            
+        }
+        else if (targetAddress == null && msgContext.getTo() != null &&
+            !msgContext.getTo().hasAnonymousAddress()) {
+            targetAddress = msgContext.getTo().getAddress();
+            
+            if (!msgContext.getTo().hasNoneAddress()) {
+                transportInfo = new JMSOutTransportInfo(targetAddress);
+            }
+            else {
+                //Don't send the message.
+              return InvocationResponse.CONTINUE;        
+            }
+        }
+        else if (msgContext.isServerSide()){
+            // get the jms ReplyTo
+            transportInfo = (JMSOutTransportInfo)
+                msgContext.getProperty(Constants.OUT_TRANSPORT_INFO);                
+        }
+
+        // should we wait and listen for a response?
+        boolean waitForResponse = false;
+
+        Object seprLisn = msgContext.getProperty(
+                Constants.Configuration.IS_USING_SEPARATE_LISTENER);
+        if (Boolean.TRUE.equals(seprLisn)) {
+            waitForResponse = false;
+        } else if (!msgContext.isServerSide()) {
+            waitForResponse = !msgContext.getOptions().isUseSeparateListener();
+        }
+
+        // get the ConnectionFactory to be used for the send
+        ConnectionFactory connectionFac = transportInfo.getConnectionFactory();
+
+        Connection con = null;
+        try {
+            con = connectionFac.createConnection();
+            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            Message message = createJMSMessage(msgContext, session);
+
+            // get the JMS destination for the message being sent
+            Destination dest = transportInfo.getDestination();
+
+            if (dest == null) {
+                // if it does not exist, create it
+                String name = JMSUtils.getDestination(targetAddress);
+                try {
+                    dest = session.createQueue(name);
+                } catch (JMSException e) {
+                    handleException("Error creating destination Queue : " + name, e);
+                }
+            }
+
+            MessageProducer producer = session.createProducer(dest);
+            Destination replyDest = null;
+
+            if (waitForResponse) {
+                try {
+                    // create temporary queue to receive reply
+                    replyDest = session.createTemporaryQueue();
+                    message.setJMSReplyTo(replyDest);
+                } catch (JMSException e) {
+                    handleException("Error creating temporary queue for response");
+                }
+            }
+
+            try {
+                log.debug("[" + (msgContext.isServerSide()?"Server" : "Client") +
+                    "]Sending message to destination : " + dest);
+                producer.send(message);
+                producer.close();
+
+            } catch (JMSException e) {
+                handleException("Error sending JMS message to destination : " +
+                    dest.toString(), e);
+            }
+
+            if (waitForResponse) {
+                try {
+                    // wait for reply
+                    MessageConsumer consumer = session.createConsumer(replyDest);
+
+                    long timeout = JMSConstants.DEFAULT_JMS_TIMEOUT;
+                    Long waitReply = (Long) msgContext.getProperty(JMSConstants.JMS_WAIT_REPLY);
+                    if (waitReply != null) {
+                        timeout = waitReply.longValue();
+                    }
+
+                    log.debug("Waiting for a maximum of " + timeout +
+                        "ms for a response message to destination : " + replyDest);
+                    con.start();
+                    Message reply = consumer.receive(timeout);
+
+                    if (reply != null) {
+                        msgContext.setProperty(MessageContext.TRANSPORT_IN,
+                            JMSUtils.getInputStream(reply));
+                    } else {
+                        log.warn("Did not receive a JMS response within " +
+                            timeout + " ms to destination : " + dest);
+                    }
+
+                } catch (JMSException e) {
+                    handleException("Error reading response from temporary " +
+                        "queue : " + replyDest, e);
+                }
+            }
+        } catch (JMSException e) {
+            handleException("Error preparing to send message to destination", e);
+
+        } finally {
+            if (con != null) {
+                try {
+                    con.close(); // closes all sessions, producers, temp Q's etc
+                } catch (JMSException e) {} // ignore
+            }
+        }
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public void cleanup(MessageContext msgContext) throws AxisFault {
+        // do nothing
+    }
+
+    public void init(ConfigurationContext confContext,
+        TransportOutDescription transportOut) throws AxisFault {
+        // do nothing
+    }
+
+    public void stop() {
+        // do nothing
+    }
+
+    /**
+     * Create a JMS Message from the given MessageContext and using the given
+     * session
+     * @param msgContext the MessageContext
+     * @param session the JMS session
+     * @return a JMS message from the context and session
+     * @throws JMSException on exception
+     */
+    private Message createJMSMessage(MessageContext msgContext, Session session)
+        throws JMSException {
+
+        Message message = null;
+        String msgType = getProperty(msgContext, JMSConstants.JMS_MESSAGE_TYPE);
+
+        OMElement msgElement = msgContext.getEnvelope();
+        if (msgContext.isDoingREST()) {
+            msgElement = msgContext.getEnvelope().getBody().getFirstElement();
+        }
+
+        if (msgType != null && JMSConstants.JMS_BYTE_MESSAGE.equals(msgType)) {
+
+            message = session.createBytesMessage();
+            BytesMessage bytesMsg = (BytesMessage) message;
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            OMOutputFormat format = new OMOutputFormat();
+            format.setCharSetEncoding(
+                 getProperty(msgContext, Constants.Configuration.CHARACTER_SET_ENCODING));
+            format.setDoOptimize(msgContext.isDoingMTOM());
+            try {
+                msgElement.serializeAndConsume(baos, format);
+                baos.flush();
+            } catch (XMLStreamException e) {
+                handleException("XML serialization error creating BytesMessage", e);
+            } catch (IOException e) {
+                handleException("IO Error while creating BytesMessage", e);
+            }
+            bytesMsg.writeBytes(baos.toByteArray());
+
+        } else {
+            message = session.createTextMessage();  // default
+            TextMessage txtMsg = (TextMessage) message;
+            txtMsg.setText(msgElement.toString());
+        }
+
+        // set the JMS correlation ID if specified
+        String correlationId = getProperty(msgContext, JMSConstants.JMS_COORELATION_ID);
+        if (correlationId != null) {
+            message.setJMSCorrelationID(correlationId);
+        }
+
+        if (msgContext.isServerSide()) {
+            // set SOAP Action and context type as properties on the JMS message
+            setProperty(message, msgContext, JMSConstants.SOAPACTION);
+            setProperty(message, msgContext, JMSConstants.CONTENT_TYPE);
+        } else {
+            String action = msgContext.getOptions().getAction();
+            if (action != null) {
+                message.setStringProperty(JMSConstants.SOAPACTION, action);
+            }
+        }
+
+        return message;
+    }
+
+    private void setProperty(Message message, MessageContext msgCtx, String key) {
+
+        String value = getProperty(msgCtx, key);
+        if (value != null) {
+            try {
+                message.setStringProperty(key, value);
+            } catch (JMSException e) {
+                log.warn("Couldn't set message property : " + key + " = " + value, e);
+            }
+        }
+    }
+
+    private String getProperty(MessageContext mc, String key) {
+        return (String) mc.getProperty(key);
+    }
+
+    private static void handleException(String s) {
+        log.error(s);
+        throw new AxisJMSException(s);
+    }
+
+    private static void handleException(String s, Exception e) {
+        log.error(s, e);
+        throw new AxisJMSException(s, e);
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSUtils.java
new file mode 100644
index 0000000..a2fe56c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/JMSUtils.java
@@ -0,0 +1,487 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.jms;
+
+import org.apache.axiom.om.*;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.*;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axiom.attachments.ByteArrayDataSource;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.jms.BytesMessage;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.TextMessage;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.namespace.QName;
+import javax.activation.DataHandler;
+import java.io.*;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.StringTokenizer;
+
+public class JMSUtils {
+
+    private static final Log log = LogFactory.getLog(JMSUtils.class);
+
+    /**
+     * Should this service be enabled on JMS transport?
+     * @param service the Axis service
+     * @return true if JMS should be enabled
+     */
+    public static boolean isJMSService(AxisService service) {
+        boolean process = service.isEnableAllTransports();
+        if (process) {
+            return true;
+
+        } else {
+            List transports = service.getExposedTransports();
+            for (int i=0; i<transports.size(); i++) {
+                if (Constants.TRANSPORT_JMS.equals(transports.get(i))) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Get the JMS destination used by this service
+     * @param service the Axis Service
+     * @return the name of the JMS destination
+     */
+    public static String getDestination(AxisService service) {
+        Parameter destParam = service.getParameter(JMSConstants.DEST_PARAM);
+
+        // validate destination
+        String destination = null;
+        if (destParam != null) {
+            destination = (String) destParam.getValue();
+        } else {
+            destination = service.getName();
+        }
+        return destination;
+    }
+
+
+    /**
+     * Extract connection factory properties from a given URL
+     * @param url a JMS URL of the form jms:/<destination>?[<key>=<value>&]*
+     * @return a Hashtable of extracted properties
+     */
+    public static Hashtable getProperties(String url) {
+        Hashtable h = new Hashtable();
+        int propPos = url.indexOf("?");
+        if (propPos != -1) {
+            StringTokenizer st = new StringTokenizer(url.substring(propPos+1), "&");
+            while (st.hasMoreTokens()) {
+                String token = st.nextToken();
+                int sep = token.indexOf("=");
+                if (sep != -1) {
+                    h.put(token.substring(0, sep), token.substring(sep+1));
+                } else {
+                    continue; // ignore, what else can we do?
+                }
+            }
+        }
+        return h;
+    }
+
+    /**
+     * Marks the given service as faulty with the given comment
+     * @param serviceName service name
+     * @param msg comment for being faulty
+     * @param axisCfg configuration context
+     */
+    public static void markServiceAsFaulty(String serviceName, String msg,
+                                           AxisConfiguration axisCfg ) {
+        if (serviceName != null) {
+            try {
+                AxisService service = axisCfg.getService(serviceName);
+                axisCfg.getFaultyServices().put(service.getName(), msg);
+
+            } catch (AxisFault axisFault) {
+                log.warn("Error marking service : " + serviceName +
+                         " as faulty due to : " + msg, axisFault);
+            }
+        }
+    }
+
+    /**
+     * Get an InputStream to the message
+     * @param message the JMS message
+     * @return an InputStream
+     */
+    public static InputStream getInputStream(Message message) {
+
+        try {
+            // get the incoming msg content into a byte array
+            if (message instanceof BytesMessage) {
+                byte[] buffer = new byte[8 * 1024];
+                ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+                BytesMessage byteMsg = (BytesMessage) message;
+                for (int bytesRead = byteMsg.readBytes(buffer); bytesRead != -1;
+                     bytesRead = byteMsg.readBytes(buffer)) {
+                    out.write(buffer, 0, bytesRead);
+                }
+                return new ByteArrayInputStream(out.toByteArray());
+
+            } else if (message instanceof TextMessage) {
+                TextMessage txtMsg = (TextMessage) message;
+                String contentType = message.getStringProperty(JMSConstants.CONTENT_TYPE);
+                if (contentType != null) {
+                    return
+                        new ByteArrayInputStream(
+                            txtMsg.getText().getBytes(
+                            TransportUtils.getCharSetEncoding(contentType)));
+                } else {
+                    return
+                        new ByteArrayInputStream(txtMsg.getText().getBytes());
+                }
+
+            } else {
+                handleException("Unsupported JMS message type : " +
+                                message.getClass().getName());
+            }
+
+
+        } catch (JMSException e) {
+            handleException("JMS Exception getting InputStream into message", e);
+        } catch (UnsupportedEncodingException e) {
+            handleException("Encoding exception getting InputStream into message", e);
+        }
+        return null;
+    }
+
+    /**
+     * Get a String property from the JMS message
+     * @param message JMS message
+     * @param property property name
+     * @return property value
+     */
+    public static String getProperty(Message message, String property) {
+        try {
+            return message.getStringProperty(property);
+        } catch (JMSException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Get the context type from the Axis MessageContext
+     * @param msgCtx message context
+     * @return the content type
+     */
+    public static String getContentType(MessageContext msgCtx) {
+        OMOutputFormat format = new OMOutputFormat();
+        String soapActionString = getSOAPAction(msgCtx);
+        String charSetEnc = (String) msgCtx.getProperty(
+            Constants.Configuration.CHARACTER_SET_ENCODING);
+
+        if (charSetEnc != null) {
+            format.setCharSetEncoding(charSetEnc);
+        } else {
+            OperationContext opctx = msgCtx.getOperationContext();
+            if (opctx != null) {
+                charSetEnc = (String) opctx.getProperty(
+                    Constants.Configuration.CHARACTER_SET_ENCODING);
+            }
+        }
+
+        // If the char set enc is still not found use the default
+        if (charSetEnc == null) {
+            charSetEnc = MessageContext.DEFAULT_CHAR_SET_ENCODING;
+        }
+
+        format.setSOAP11(msgCtx.isSOAP11());
+        format.setCharSetEncoding(charSetEnc);
+
+        String encoding = format.getCharSetEncoding();
+        String contentType = format.getContentType();
+
+        if (encoding != null) {
+            contentType += "; charset=" + encoding;
+        }
+
+        // action header is not mandated in SOAP 1.2. So putting it, if available
+        if (!msgCtx.isSOAP11() && soapActionString != null &&
+            !"".equals(soapActionString.trim())) {
+            contentType = contentType + ";action=\"" + soapActionString + "\";";
+        }
+
+        return contentType;
+    }
+
+    /**
+     * Get the SOAP Action from the message context
+     * @param msgCtx the MessageContext
+     * @return the SOAP Action as s String if present, or the WS-Action
+     */
+    private static String getSOAPAction(MessageContext msgCtx) {
+        String soapActionString = msgCtx.getSoapAction();
+
+        if (soapActionString == null || soapActionString.trim().length() == 0) {
+            soapActionString = msgCtx.getWSAAction();
+        }
+
+        Object disableSoapAction =
+            msgCtx.getOptions().getProperty(Constants.Configuration.DISABLE_SOAP_ACTION);
+        
+        if (soapActionString == null || JavaUtils.isTrueExplicitly(disableSoapAction)) {
+            soapActionString = "";
+        }
+
+        return soapActionString;
+    }
+
+    /**
+     * Return the destination name from the given URL
+     * @param url the URL
+     * @return the destination name
+     */
+    public static String getDestination(String url) {
+        String tempUrl = url.substring(JMSConstants.JMS_PREFIX.length());
+        int propPos = tempUrl.indexOf("?");
+
+        if (propPos == -1) {
+            return tempUrl;
+        } else {
+            return tempUrl.substring(0, propPos);
+        }
+    }
+
+    /**
+     * Return a SOAPEnvelope created from the given JMS Message and Axis
+     * MessageContext, and the InputStream into the message
+     * @param message the JMS Message
+     * @param msgContext the Axis MessageContext
+     * @param in the InputStream into the message
+     * @return SOAPEnvelope for the message
+     * @throws javax.xml.stream.XMLStreamException
+     */
+    public static SOAPEnvelope getSOAPEnvelope(
+        Message message, MessageContext msgContext, InputStream in)
+        throws XMLStreamException {
+
+        SOAPEnvelope envelope = null;
+        StAXBuilder builder = null;
+
+        String contentType = JMSUtils.getProperty(message, JMSConstants.CONTENT_TYPE);
+
+        if (contentType != null) {
+            if (contentType.indexOf(
+                HTTPConstants.HEADER_ACCEPT_MULTIPART_RELATED) > -1) {
+                // It is MTOM
+                builder = TransportUtils.selectBuilderForMIME(
+                    msgContext, in, contentType,true);
+                envelope = (SOAPEnvelope) builder.getDocumentElement();
+
+            } else {
+                // Figure out the char set encoding and create the reader
+                XMLStreamReader xmlreader;
+
+                // If charset is not specified
+                if (TransportUtils.getCharSetEncoding(contentType) == null) {
+                    xmlreader = StAXUtils.createXMLStreamReader(in,
+                                                                MessageContext.DEFAULT_CHAR_SET_ENCODING);
+
+                    // Set the encoding scheme in the message context
+                    msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+                                           MessageContext.DEFAULT_CHAR_SET_ENCODING);
+
+                } else {
+                    // get the type of char encoding
+                    String charSetEnc = TransportUtils.getCharSetEncoding(contentType);
+                    xmlreader = StAXUtils.createXMLStreamReader(in, charSetEnc);
+
+                    // Setting the value in msgCtx
+                    msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
+                }
+
+                if (contentType.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
+                    // it is SOAP 1.2
+                    builder = new StAXSOAPModelBuilder(xmlreader,
+                                                       SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                    envelope = (SOAPEnvelope) builder.getDocumentElement();
+                } else if (contentType.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
+                    // SOAP 1.1
+                    builder =  new StAXSOAPModelBuilder(xmlreader,
+                                                        SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                    envelope = (SOAPEnvelope) builder.getDocumentElement();
+                }
+            }
+        }
+
+        if (builder == null) {
+            SOAPFactory soapFactory = new SOAP11Factory();
+            try {
+                XMLStreamReader xmlreader = StAXUtils.createXMLStreamReader
+                    (in, MessageContext.DEFAULT_CHAR_SET_ENCODING);
+
+                // Set the encoding scheme in the message context
+                msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+                                       MessageContext.DEFAULT_CHAR_SET_ENCODING);
+                builder = new StAXOMBuilder(xmlreader);
+                builder.setOMBuilderFactory(soapFactory);
+
+                String ns = builder.getDocumentElement().getNamespace().getNamespaceURI();
+                if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns)) {
+                    envelope = getEnvelope(in, SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns)) {
+                    envelope = getEnvelope(in, SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                } else {
+                    // this is POX ... mark MC as REST
+                    msgContext.setDoingREST(true);
+                    envelope = soapFactory.getDefaultEnvelope();
+                    envelope.getBody().addChild(builder.getDocumentElement());
+                }
+            } catch (Exception e) {
+                log.debug("Non SOAP/XML JMS message received");
+
+                Parameter operationParam = msgContext.getAxisService().
+                    getParameter(JMSConstants.OPERATION_PARAM);
+                QName operationQName = (operationParam != null ?
+                    getQName(operationParam.getValue()) : JMSConstants.DEFAULT_OPERATION);
+
+                AxisOperation operation = msgContext.getAxisService().getOperation(operationQName);
+                if (operation != null) {
+                    msgContext.setAxisOperation(operation);
+                } else {
+                    handleException("Cannot find operation : " + operationQName + " on the service "
+                        + msgContext.getAxisService());
+                }
+
+
+                Parameter wrapperParam = msgContext.getAxisService().
+                    getParameter(JMSConstants.WRAPPER_PARAM);
+                QName wrapperQName = (wrapperParam != null ?
+                    getQName(wrapperParam.getValue()) : JMSConstants.DEFAULT_WRAPPER);
+
+                OMElement wrapper = soapFactory.createOMElement(wrapperQName, null);
+
+                try {
+                    if (message instanceof TextMessage) {
+                        OMTextImpl textData = (OMTextImpl) soapFactory.createOMText(
+                            ((TextMessage) message).getText());
+                        wrapper.addChild(textData);
+                    } else if (message instanceof BytesMessage) {
+                        BytesMessage bm = (BytesMessage) message;
+                        byte[] msgBytes = new byte[(int) bm.getBodyLength()];
+                        bm.reset();
+                        bm.readBytes(msgBytes);
+                        DataHandler dataHandler = new DataHandler(
+                            new ByteArrayDataSource(msgBytes));
+                        OMText textData = soapFactory.createOMText(dataHandler, true);
+                        wrapper.addChild(textData);
+                        msgContext.setDoingMTOM(true);
+                    } else {
+                        handleException("Unsupported JMS Message format : " + message.getJMSType());
+                    }
+                    envelope = soapFactory.getDefaultEnvelope();
+                    envelope.getBody().addChild(wrapper);
+
+                } catch (JMSException j) {
+                    handleException("Error wrapping JMS message into a SOAP envelope ", j);
+                }
+            }
+        }
+
+        String charEncOfMessage = builder == null ? null :
+            builder.getDocument() == null ? null : builder.getDocument().getCharsetEncoding();
+        String charEncOfTransport = ((String) msgContext.getProperty(
+            Constants.Configuration.CHARACTER_SET_ENCODING));
+
+        if (charEncOfMessage != null &&
+            !(charEncOfMessage.trim().length() == 0) &&
+            !charEncOfMessage.equalsIgnoreCase(charEncOfTransport)) {
+
+            String faultCode;
+
+            if (envelope.getNamespace() != null &&
+                SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.
+                    equals(envelope.getNamespace().getNamespaceURI())) {
+                faultCode = SOAP12Constants.FAULT_CODE_SENDER;
+            } else {
+                faultCode = SOAP11Constants.FAULT_CODE_SENDER;
+            }
+
+            handleException(
+                "Character Set Encoding from transport information do not " +
+                "match with character set encoding in the received " +
+                "SOAP message");
+        }
+        return envelope;
+    }
+
+    private static SOAPEnvelope getEnvelope(InputStream in, String namespace) throws XMLStreamException {
+
+        try {
+            in.reset();
+        } catch (IOException e) {
+            throw new XMLStreamException("Error resetting message input stream", e);
+        }
+        XMLStreamReader xmlreader = StAXUtils.createXMLStreamReader
+            (in, MessageContext.DEFAULT_CHAR_SET_ENCODING);
+        StAXBuilder builder = new StAXSOAPModelBuilder(xmlreader, namespace);
+        return (SOAPEnvelope) builder.getDocumentElement();
+    }
+
+    private static QName getQName(Object obj) {
+        String value;
+        if (obj instanceof QName) {
+            return (QName) obj;
+        } else {
+            value = obj.toString();
+        }
+        int open = value.indexOf('{');
+        int close = value.indexOf('}');
+        if (close > open && open > -1 && value.length() > close) {
+            return new QName(value.substring(open+1, close-open), value.substring(close+1));
+        } else {
+            return new QName(value);
+        }
+    }
+
+    private static void handleException(String s) {
+        log.error(s);
+        throw new AxisJMSException(s);
+    }
+
+    private static void handleException(String s, Exception e) {
+        log.error(s, e);
+        throw new AxisJMSException(s, e);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/README.txt b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/README.txt
new file mode 100644
index 0000000..fa7e714
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/jms/README.txt
@@ -0,0 +1,54 @@
+This is a new JMS (Java Messaging Service) Transport implementation for Apache Axis2. The transport receiver must be configured as follows, with one or more connection factories:

+

+Sample axis2.xml

+================

+

+    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">

+        <parameter name="myTopicConnectionFactory" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>

+        </parameter>

+        <parameter name="myQueueConnectionFactory" locked="false">

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>

+        </parameter>

+        <parameter name="default" locked="false">        	        	

+        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>

+        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>        	

+        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>

+        </parameter>

+    </transportReceiver>

+    

+If a connection factory named "default" (as shown above) is defined, this would be used for services which does

+not explicitly specify the connection factory that should be used. The services.xml of a service should indicate

+the connection factory and the destination name to be associated with. If a destination is not specified, the

+implementation would create a JMS Queue with the service name. The JMS destination should ideally be created

+and administered through the JMS provider utilities.

+

+Sample services.xml

+===================

+

+<service name="echo">

+		<transports>

+				....

+		    <transport>jms</transport>

+		</transports>

+    ...

+    <parameter name="transport.jms.ConnectionFactory" locked="true">myTopicConnectionFactory</parameter>

+    <parameter name="transport.jms.Destination" locked="true">dynamicTopics/something.TestTopic</parameter>

+</service>

+

+Files Making Up This JMS Implementation

+=======================================

+

+* JMSListener.java

+* JMSConnectionFactory.java

+* JMSMessageReceiver.java

+* JMSOutTransportInfo.java

+* JMSSender.java

+* JMSConstants.java

+* JMSUtils.java

+* AxisJMSException.java

+* DefaultThreadFactory.java

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalResponder.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalResponder.java
new file mode 100644
index 0000000..b2fcdb5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalResponder.java
@@ -0,0 +1,76 @@
+/*

+* Copyright 2004,2005 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.axis2.transport.local;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.transport.AbstractTransportSender;

+

+import java.io.OutputStream;

+

+/**

+ * LocalResponder

+ */

+public class LocalResponder extends AbstractTransportSender {

+	

+    private static final long serialVersionUID = 4383137590664240383L;

+	LocalTransportSender sender;

+

+    public LocalResponder(LocalTransportSender sender) {

+        this.sender = sender;

+    }

+

+    /**

+     * Clean up

+     *

+     * @param msgContext

+     * @throws org.apache.axis2.AxisFault

+     */

+    public void cleanup(MessageContext msgContext) throws AxisFault {

+    }

+

+    public void finalizeSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,

+                                                                   OutputStream out)

+            throws AxisFault {

+    }

+

+    public void finalizeSendWithToAddress(MessageContext msgContext, OutputStream out)

+            throws AxisFault {

+    }

+

+    protected OutputStream openTheConnection(EndpointReference epr, MessageContext msgctx)

+            throws AxisFault {

+        return sender.getResponse();

+    }

+

+    public OutputStream startSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,

+                                                                        OutputStream out)

+            throws AxisFault {

+        return null;

+    }

+

+    public OutputStream startSendWithToAddress(MessageContext msgContext, OutputStream out)

+            throws AxisFault {

+        return out;

+    }

+

+    public void stop() {

+        //To change body of implemented methods use File | Settings | File Templates.

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
new file mode 100644
index 0000000..c8c91fa
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
@@ -0,0 +1,94 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.local;
+
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisEngine;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+public class LocalTransportReceiver {
+    public static ConfigurationContext CONFIG_CONTEXT;
+    private ConfigurationContext confContext;
+    private LocalTransportSender sender;
+
+    public LocalTransportReceiver(ConfigurationContext configContext) {
+        confContext = configContext;
+    }
+
+    public LocalTransportReceiver(LocalTransportSender sender) {
+        this(CONFIG_CONTEXT);
+        this.sender = sender;
+    }
+
+    public void processMessage(InputStream in, EndpointReference to) throws AxisFault {
+        try {
+            TransportInDescription tIn = confContext.getAxisConfiguration().getTransportIn(
+                    new QName(Constants.TRANSPORT_LOCAL));
+            TransportOutDescription tOut = confContext.getAxisConfiguration().getTransportOut(
+                    new QName(Constants.TRANSPORT_LOCAL));
+
+            tOut.setSender(new LocalResponder(sender));
+
+            MessageContext msgCtx = new MessageContext();
+            msgCtx.setConfigurationContext(confContext);
+            msgCtx.setTransportIn(tIn);
+            msgCtx.setTransportOut(tOut);
+
+            msgCtx.setTo(to);
+            msgCtx.setServerSide(true);
+            msgCtx.setProperty(MessageContext.TRANSPORT_OUT, sender.getResponse());
+
+            XMLStreamReader reader = StAXUtils.createXMLStreamReader(
+                    new BufferedReader(new InputStreamReader(in)));
+            StAXBuilder builder = new StAXSOAPModelBuilder(reader, null);
+            SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
+
+            msgCtx.setEnvelope(envelope);
+
+            AxisEngine engine = new AxisEngine(confContext);
+
+            if (envelope.getBody().hasFault()) {
+                engine.receiveFault(msgCtx);
+            } else {
+                engine.receive(msgCtx);
+            }
+        } catch (XMLStreamException e) {
+            throw new AxisFault(e);
+        } catch (FactoryConfigurationError e) {
+            throw new AxisFault(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportSender.java
new file mode 100644
index 0000000..2e18b33
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportSender.java
@@ -0,0 +1,102 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.local;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.AbstractTransportSender;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class LocalTransportSender extends AbstractTransportSender {
+	
+    private static final long serialVersionUID = -5245866514826025561L;
+	private ByteArrayOutputStream out;
+    private ByteArrayOutputStream response;
+
+    public LocalTransportSender() {
+    }
+
+    public void cleanup(MessageContext msgContext) throws AxisFault {
+    }
+
+    public void finalizeSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+                                                                   OutputStream out)
+            throws AxisFault {
+        throw new UnsupportedOperationException();
+    }
+
+    public void finalizeSendWithToAddress(MessageContext msgContext, OutputStream out)
+            throws AxisFault {
+        try {
+            InputStream in = new ByteArrayInputStream(this.out.toByteArray());
+
+            response = new ByteArrayOutputStream();
+
+            LocalTransportReceiver localTransportReceiver = new LocalTransportReceiver(this);
+
+            localTransportReceiver.processMessage(in, msgContext.getTo());
+            in.close();
+            out.close();
+            in = new ByteArrayInputStream(response.toByteArray());
+            msgContext.setProperty(MessageContext.TRANSPORT_IN, in);
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see org.apache.axis2.transport.AbstractTransportSender#openTheConnection(org.apache.axis2.addressing.EndpointReference)
+     */
+    protected OutputStream openTheConnection(EndpointReference epr, MessageContext msgContext)
+            throws AxisFault {
+
+        out = new ByteArrayOutputStream();
+
+        return out;
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see org.apache.axis2.transport.AbstractTransportSender#startSendWithOutputStreamFromIncomingConnection(org.apache.axis2.context.MessageContext, java.io.Writer)
+     */
+    public OutputStream startSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+                                                                        OutputStream out)
+            throws AxisFault {
+        throw new UnsupportedOperationException();
+    }
+
+    public OutputStream startSendWithToAddress(MessageContext msgContext, OutputStream out)
+            throws AxisFault {
+        return out;
+    }
+
+    OutputStream getResponse() {
+        return response;
+    }
+
+    public void stop() {
+       
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/Constants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/Constants.java
new file mode 100644
index 0000000..d1d455d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/Constants.java
@@ -0,0 +1,75 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail;
+
+public class Constants {
+    public final static String FROM_ADDRESS = "mail.from";
+    public final static String TO_ADDRESS = "mail.to";
+    public final static String SUBJECT = "mail.subject";
+    public final static String HEADER_SOAP_ACTION = "mail.soapaction";
+
+    public final static String SMTP_USER = "mail.smtp.user";
+    public final static String SMTP_PORT = "mail.smtp.port";
+    public final static String SMTP_HOST = "mail.smtp.host";
+     public final static String SMTP_USER_PASSWORD = "transport.mail.smtp.password";
+
+    public final static String POP3_USER = "mail.pop3.user";
+    public final static String POP3_PORT = "mail.pop3.port";
+    public final static String POP3_PASSWORD = "transport.mail.pop3.password";
+    public final static String POP3_HOST = "mail.pop3.host";
+    public final static String STORE_PROTOCOL = "mail.store.protocol";
+
+
+    public final static String RAPLY_TO = "transport.mail.replyToAddress";
+
+    public final static String LISTENER_INTERVAL = "transport.listener.interval";
+
+    public final static int SMTP_SERVER_PORT = (1024 + 25);
+
+    public final static String SERVER_DOMAIN = "localhost";
+    public final static String RCPT_OK = "250 OK performed command RCPT";
+    public final static String RCPT_ERROR = "550 Unknown recipient";
+
+
+    public final static int POP_SERVER_PORT = (1024 + 110);
+
+    public final static String OK = "+OK ";
+    public final static String MAIL_OK = "250 OK performed command MAIL";
+    public final static String MAIL_ERROR = "550 Error processign MAIL command";
+    public final static String HELO_REPLY = "250 OK";
+
+    public final static String ERR = "-ERR ";
+    public final static String DEFAULT_CONTENT_TYPE = "text/xml";
+    public final static String DEFAULT_CHAR_SET_ENCODING = "7bit";
+    public final static String DEFAULT_CHAR_SET = "us-ascii";
+    public final static String DATA_START_SUCCESS = "354 OK Ready for data";
+    public final static String DATA_END_SUCCESS = "250 OK finished adding data";
+    public final static String CONTENT_TYPE = "mail.contenttype";
+    public final static String CONTENT_LOCAION = "mail.contentlocation";
+    public final static String COMMAND_UNKNOWN = "550 Unknown command";
+    public final static String COMMAND_TRANSMISSION_END = "221 Closing SMTP service.";
+    public final static String COMMAND_EXIT = "EXIT";
+    public final static String USER = "USER";
+    public final static String STAT = "STAT";
+    public final static String RSET = "RSET";
+    public final static String RETR = "RETR";
+    public final static String QUIT = "QUIT";
+    public final static String PASS = "PASS";
+    public final static String NOOP = "NOOP";
+    public final static String LIST = "LIST";
+    public final static String DELE = "DELE";
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
new file mode 100644
index 0000000..8341e0c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
@@ -0,0 +1,102 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail;
+
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+
+import javax.mail.*;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.activation.MailcapCommandMap;
+import javax.activation.CommandMap;
+import java.util.Properties;
+
+public class EMailSender {
+    private Properties properties;
+    private MessageContext messageContext;
+    private PasswordAuthentication passwordAuthentication;
+
+    static {
+        //Initializing the proper mime types
+        MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
+        mc.addMailcap(
+                "application/soap+xml;;x-java-content-handler=com.sun.mail.handlers.text_xml");
+        CommandMap.setDefaultCommandMap(mc);
+    }
+
+    public EMailSender() {
+    }
+
+    public void setMessageContext(MessageContext messageContext) {
+        this.messageContext = messageContext;
+    }
+
+    public void setProperties(Properties properties) {
+        this.properties = properties;
+    }
+
+    public void setPasswordAuthentication(PasswordAuthentication passwordAuthentication) {
+        this.passwordAuthentication = passwordAuthentication;
+    }
+
+    public void send(String subject, String targetEmail, String message, OMOutputFormat format)
+            throws AxisFault {
+        try {
+
+            Session session = Session.getInstance(properties, new Authenticator() {
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return passwordAuthentication;
+                }
+            });
+            MimeMessage msg = new MimeMessage(session);
+
+            msg.setFrom(new InternetAddress((passwordAuthentication.getUserName())));
+            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(targetEmail));
+            msg.setSubject(subject);
+
+            String contentType = format.getContentType() != null ? format.getContentType() :
+                                 Constants.DEFAULT_CONTENT_TYPE;
+            if (contentType.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
+                if (messageContext.getSoapAction() != null) {
+                    msg.setHeader(Constants.HEADER_SOAP_ACTION,
+                                  messageContext.getSoapAction());
+                    msg.setHeader("Content-Transfer-Encoding", "QUOTED-PRINTABLE");
+                }
+            }
+            if (contentType.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
+                if (messageContext.getSoapAction() != null) {
+                    msg.setContent(message,
+                                   contentType + "; charset=" + format.getCharSetEncoding() +
+                                   " ; action=\"" + messageContext.getSoapAction() + "\"");
+                }
+            } else {
+                msg.setContent(message, contentType + "; charset=" + format.getCharSetEncoding());
+            }
+            Transport.send(msg);
+        } catch (AddressException e) {
+            throw new AxisFault(e);
+        } catch (MessagingException e) {
+            throw new AxisFault(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/EmailReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/EmailReceiver.java
new file mode 100644
index 0000000..7a55e57
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/EmailReceiver.java
@@ -0,0 +1,89 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail;
+
+import org.apache.axis2.AxisFault;
+
+import javax.mail.*;
+import java.util.Properties;
+
+public class EmailReceiver {
+
+    private URLName urlName;
+    private Properties pop3Properties;
+    private Folder folder;
+    /* This store could be either POP3Store or POP3SSLStore */
+    private Store store;
+
+
+    public EmailReceiver() {
+    }
+
+    public void setUrlName(URLName urlName) {
+        this.urlName = urlName;
+    }
+
+    public void setPop3Properties(Properties pop3Properties) {
+        this.pop3Properties = pop3Properties;
+    }
+
+    public void connect() throws AxisFault {
+        try {
+
+            Session session = Session.getInstance(pop3Properties,null);
+            store = session.getStore(urlName);
+
+            store.connect();
+
+            folder = store.getDefaultFolder();
+
+            folder = folder.getFolder("inbox");
+        } catch (NoSuchProviderException e) {
+            throw new AxisFault(e);
+        } catch (MessagingException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    public void disconnect() throws AxisFault {
+        try {
+            folder.close(true);
+            store.close();
+        } catch (MessagingException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    public Message[] receiveMessages() throws AxisFault {
+        try {
+            folder.open(Folder.READ_WRITE);
+
+            Message[] msgs = folder.getMessages();
+
+            if (msgs.length == 0) {
+                return null;
+            } else {
+                return msgs;
+            }
+        } catch (NoSuchProviderException e) {
+            throw new AxisFault(e);
+        } catch (MessagingException e) {
+            throw new AxisFault(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailClient.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailClient.java
new file mode 100644
index 0000000..0f8ce35
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailClient.java
@@ -0,0 +1,140 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.mail.Authenticator;
+import javax.mail.Flags;
+import javax.mail.Folder;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.Store;
+import javax.mail.Transport;
+import javax.mail.internet.MimeMessage;
+import java.io.IOException;
+import java.util.Properties;
+
+public class MailClient extends Authenticator {
+    public static final int SHOW_MESSAGES = 1;
+    public static final int CLEAR_MESSAGES = 2;
+    public static final int SHOW_AND_CLEAR = SHOW_MESSAGES + CLEAR_MESSAGES;
+	private static final Log log = LogFactory.getLog(MailClient.class);
+    protected PasswordAuthentication authentication;
+    protected String from;
+    protected Session session;
+
+    public MailClient(String user, String host) {
+        this(user, host, user, false);
+    }
+
+    public MailClient(String user, String host, String password) {
+        this(user, host, password, false);
+    }
+
+    public MailClient(String user, String host, String password, boolean debug) {
+        from = user + '@' + host;
+        authentication = new PasswordAuthentication(user, password);
+
+        Properties props = new Properties();
+
+        props.put("mail.user", user);
+        props.put("mail.host", host);
+        props.put("mail.debug", debug
+                ? "true"
+                : "false");
+        props.put("mail.store.protocol", "pop3");
+        props.put("mail.transport.protocol", "smtp");
+        session = Session.getInstance(props, this);
+    }
+
+    public int checkInbox(int mode) throws MessagingException, IOException {
+        int numMessages = 0;
+
+        if (mode == 0) {
+            return 0;
+        }
+
+        boolean show = (mode & SHOW_MESSAGES) > 0;
+        boolean clear = (mode & CLEAR_MESSAGES) > 0;
+        String action = (show
+                ? "Show"
+                : "") + ((show && clear)
+                ? " and "
+                : "") + (clear
+                ? "Clear"
+                : "");
+
+        log.info(action + " INBOX for " + from);
+
+        Store store = session.getStore();
+
+        store.connect();
+
+        Folder root = store.getDefaultFolder();
+        Folder inbox = root.getFolder("inbox");
+
+        inbox.open(Folder.READ_WRITE);
+
+        Message[] msgs = inbox.getMessages();
+
+        numMessages = msgs.length;
+
+        if ((msgs.length == 0) && show) {
+            log.info("No messages in inbox");
+        }
+
+        for (int i = 0; i < msgs.length; i++) {
+            MimeMessage msg = (MimeMessage) msgs[i];
+
+            if (show) {
+                log.info("    From: " + msg.getFrom()[0]);
+                log.info(" Subject: " + msg.getSubject());
+                log.info(" Content: " + msg.getContent());
+            }
+
+            if (clear) {
+                msg.setFlag(Flags.Flag.DELETED, true);
+            }
+        }
+
+        inbox.close(true);
+        store.close();
+
+        return numMessages;
+    }
+
+    public void sendMessage(String to, String subject, String content, String soapAction)
+            throws MessagingException {
+        log.info("SENDING message from " + from + " to " + to);
+
+        MimeMessage msg = new MimeMessage(session);
+
+        msg.setHeader("transport.mail.soapaction", soapAction);
+        msg.addRecipients(Message.RecipientType.TO, to);
+        msg.setSubject(subject);
+        msg.setText(content);
+        Transport.send(msg);
+    }
+
+    public PasswordAuthentication getPasswordAuthentication() {
+        return authentication;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailTransportSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailTransportSender.java
new file mode 100644
index 0000000..7800bbf
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailTransportSender.java
@@ -0,0 +1,212 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.AbstractTransportSender;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.http.HttpTransportProperties;
+import org.apache.axis2.util.Utils;
+
+import javax.mail.PasswordAuthentication;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class MailTransportSender extends AbstractTransportSender {
+
+    /* smtpProperties holds all the parameters needed to Java Mail. This will be filled either from Axis2.xml or
+       from runtime.
+     */
+    private java.util.Properties smtpProperties = new java.util.Properties();
+
+    private PasswordAuthentication passwordAuthentication;
+
+    private ByteArrayOutputStream byteArrayOutputStream;
+    // assosiation with OMOutputFormat
+    private OMOutputFormat format = new OMOutputFormat();
+
+
+    public void init(ConfigurationContext configurationContext,
+                     TransportOutDescription transportOut)
+            throws AxisFault {
+
+        ArrayList mailParameters = transportOut.getParameters();
+
+        String password = "";
+        String username = "";
+
+        for (Iterator iterator = mailParameters.iterator(); iterator.hasNext();) {
+            Parameter param = (Parameter) iterator.next();
+            String paramKey = param.getName();
+            String paramValue = Utils.getParameterValue(param);
+            if (paramKey == null || paramValue == null) {
+                throw new AxisFault(Messages.getMessage("canNotBeNull",
+                                                        "Parameter name nor value should be null"));
+
+            }
+            smtpProperties.setProperty(paramKey, paramValue);
+            if (paramKey.equals(Constants.SMTP_USER)) {
+                username = paramValue;
+            }
+            if (paramKey.equals(Constants.SMTP_USER_PASSWORD)) {
+                password = paramValue;
+            }
+
+        }
+        passwordAuthentication = new PasswordAuthentication(username, password);
+    }
+
+    public MailTransportSender() {
+    }
+
+    public void cleanup(MessageContext msgContext) throws AxisFault {
+    }
+
+    public void finalizeSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+                                                                   OutputStream out)
+            throws AxisFault {
+    }
+
+    private void runtimeMailParameterSetting(MessageContext msgContext) {
+        Object obj = msgContext.getProperty(HTTPConstants.MAIL_SMTP);
+        if (obj != null) {
+            // Overide the axis2.xml cofiguration setting
+            if (obj instanceof HttpTransportProperties.MailProperties) {
+                HttpTransportProperties.MailProperties props =
+                        (HttpTransportProperties.MailProperties) obj;
+                smtpProperties.clear();
+                smtpProperties.putAll(props.getProperties());
+                String username = (String) smtpProperties.get(Constants.SMTP_USER);
+                String passwd = props.getPassword();
+                passwordAuthentication = new PasswordAuthentication(username, passwd);
+            }
+        }
+
+    }
+
+    public void finalizeSendWithToAddress(MessageContext msgContext, OutputStream out)
+            throws AxisFault {
+        try {
+            // Override with runtime settings
+            runtimeMailParameterSetting(msgContext);
+
+            EMailSender sender = new EMailSender();
+            sender.setMessageContext(msgContext);
+            sender.setProperties(smtpProperties);
+            sender.setPasswordAuthentication(passwordAuthentication);
+
+            String eprAddress = msgContext.getTo().getAddress();
+
+            // In mail char set is what is being used. Charset encoding is not what is expected here.
+            String charSet =
+                    (String) msgContext.getProperty(
+                            org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING);
+            if (charSet == null) {
+                charSet =
+                        MessageContext.DEFAULT_CHAR_SET_ENCODING;// Since we are deleaing only SOAP and XML messages here
+            }
+            format.setSOAP11(msgContext.isSOAP11());
+            format.setCharSetEncoding(charSet);
+
+            int mailNameIndex = eprAddress.indexOf("mail:");
+            if (mailNameIndex > -1) {
+                eprAddress = eprAddress.substring(mailNameIndex + 5);
+            }
+            int index = eprAddress.indexOf('/');
+            String subject = "";
+            String email;
+
+            if (index >= 0) {
+                subject = eprAddress.substring(index + 1);
+                email = eprAddress.substring(0, index);
+            } else {
+                email = eprAddress;
+            }
+            int emailColon = email.indexOf(":");
+            if (emailColon >= 0) {
+                email = email.substring(emailColon + 1);
+            }
+
+            sender.send(subject, email, new String(byteArrayOutputStream.toByteArray()),
+                        format);
+
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    protected OutputStream openTheConnection(EndpointReference epr, MessageContext msgContext)
+            throws AxisFault {
+        byteArrayOutputStream = new ByteArrayOutputStream();
+
+        return byteArrayOutputStream;
+    }
+
+    // Output Stream based cases are not supported
+    public OutputStream startSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+                                                                        OutputStream out)
+            throws AxisFault {
+        throw new UnsupportedOperationException();
+    }
+
+    public OutputStream startSendWithToAddress(MessageContext msgContext, OutputStream out)
+            throws AxisFault {
+        return out;
+    }
+
+    public void writeMessage(MessageContext msgContext, OutputStream out) throws AxisFault {
+        SOAPEnvelope envelope = msgContext.getEnvelope();
+        OMElement outputMessage = envelope;
+
+        if ((envelope != null) && msgContext.isDoingREST()) {
+            outputMessage = envelope.getBody().getFirstElement();
+        }
+
+        if (outputMessage != null) {
+            try {
+                OMOutputFormat format = new OMOutputFormat();
+
+                format.setDoOptimize(msgContext.isDoingMTOM());
+                format.setCharSetEncoding(
+                        null); //Set to null so that the code will not fail on 7bit.
+                outputMessage.serializeAndConsume(out, format);
+                out.flush();
+            } catch (Exception e) {
+                throw new AxisFault(e);
+            }
+        } else {
+            throw new AxisFault(Messages.getMessage("outMessageNull"));
+        }
+    }
+
+    public void stop() {
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java
new file mode 100644
index 0000000..88f0c5e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java
@@ -0,0 +1,74 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail;
+
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class MailWorker implements Runnable {
+    private ConfigurationContext configContext = null;
+    private LinkedBlockingQueue messageQueue;
+
+    /**
+     * Constructor for MailWorker
+     *
+     * @param messageQueue
+     * @param reg
+     */
+    public MailWorker(ConfigurationContext reg, LinkedBlockingQueue messageQueue) {
+        this.configContext = reg;
+        this.messageQueue = messageQueue;
+    }
+
+    /**
+     * The main workhorse method.
+     */
+    public void run() {
+        AxisEngine engine = new AxisEngine(configContext);
+        MessageContext msgContext = null;
+        // create and initialize a message context
+        while (true) {
+            try {
+                msgContext = (MessageContext) messageQueue.take();
+                if (msgContext.getEnvelope().getBody().hasFault()) {
+                    engine.receiveFault(msgContext);
+                } else {
+                    engine.receive(msgContext);
+                }
+
+            } catch (Exception e) {
+                try {
+                    if (msgContext != null) {
+                        MessageContext faultContext =
+                                engine.createFaultMessageContext(msgContext, e);
+                        engine.sendFault(faultContext);
+                    }
+                } catch (Exception e1) {
+                    // Ignore errors that would possibly happen this catch
+                }
+            }
+        }
+
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailWorkerManager.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailWorkerManager.java
new file mode 100644
index 0000000..53bd411
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/MailWorkerManager.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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.axis2.transport.mail;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ExecutorService;
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+/*
+ *
+ */
+
+public class MailWorkerManager {
+    private LinkedBlockingQueue messageQueue;
+    private ExecutorService workerPool;
+    private int poolSize;
+    private ConfigurationContext configurationContext;
+
+    public MailWorkerManager() {
+    }
+
+    public MailWorkerManager(ConfigurationContext configurationContext,
+                             LinkedBlockingQueue messageQueue, ExecutorService workerPool,
+                             int poolSize) {
+        this.messageQueue = messageQueue;
+        this.workerPool = workerPool;
+        this.poolSize = poolSize;
+        this.configurationContext = configurationContext;
+    }
+
+    public void start() throws AxisFault {
+        for (int i = 0; i < poolSize; i++) {
+            workerPool.execute(new MailWorker(configurationContext, messageQueue));
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
new file mode 100644
index 0000000..e05cebb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
@@ -0,0 +1,395 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ExecutorService;
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.util.threadpool.DefaultThreadFactory;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.mail.Flags;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.URLName;
+import javax.mail.internet.MimeMessage;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Properties;
+
+/**
+ * This is the implementation for Mail Listener in Axis2. It has the full capability
+ * of connecting to a POP3 or IMPA server with SSL or regualar connection. This listener intend
+ * to use as a server in client side as well with the involcation is Async with addressing.
+ */
+
+
+public class SimpleMailListener implements Runnable, TransportListener {
+    private static final Log log = LogFactory.getLog(SimpleMailListener.class);
+
+    private ConfigurationContext configurationContext = null;
+
+    private boolean running = true;
+    /*password and replyTo is Axis2 specific*/
+    private String user = "";
+    private String replyTo = "";
+
+    /*This hold properties for pop3 or impa server connection*/
+    private Properties pop3Properties = new Properties();
+
+    private EmailReceiver receiver = null;
+
+    /**
+     * Time has been put from best guest. Let the default be 3 mins.
+     * This value is configuralble from Axis2.xml. Under mail transport listener
+     * simply set the following parameter.
+     * <parameter name="transport.listener.interval ">[custom listener interval]</parameter>
+     */
+    private int listenerWaitInterval = 1000 * 60 * 3;
+
+    private ExecutorService workerPool;
+
+    private static final int WORKERS_MAX_THREADS = 5;
+    private static final long WORKER_KEEP_ALIVE = 60L;
+    private static final TimeUnit TIME_UNIT = TimeUnit.SECONDS;
+
+    private LinkedBlockingQueue messageQueue;
+
+    public SimpleMailListener() {
+    }
+
+    public void init(ConfigurationContext configurationContext, TransportInDescription transportIn)
+            throws AxisFault {
+        this.configurationContext = configurationContext;
+
+        ArrayList mailParameters = transportIn.getParameters();
+
+        replyTo = Utils.getParameterValue(
+                transportIn.getParameter(org.apache.axis2.transport.mail.Constants.RAPLY_TO));
+        Parameter listenerWaitIntervalParam = transportIn
+                .getParameter(org.apache.axis2.transport.mail.Constants.LISTENER_INTERVAL);
+        if (listenerWaitIntervalParam != null) {
+            listenerWaitInterval =
+                    Integer.parseInt(Utils.getParameterValue(listenerWaitIntervalParam));
+        }
+
+        String password = "";
+        String host = "";
+        String protocol = "";
+        String port = "";
+        URLName urlName;
+
+        for (Iterator iterator = mailParameters.iterator(); iterator.hasNext();) {
+            Parameter param = (Parameter) iterator.next();
+            String paramKey = param.getName();
+            String paramValue = Utils.getParameterValue(param);
+            if (paramKey == null || paramValue == null) {
+                throw new AxisFault(Messages.getMessage("canNotBeNull",
+                                                        "Parameter name nor value should be null"));
+
+            }
+            pop3Properties.setProperty(paramKey, paramValue);
+            if (paramKey.equals(org.apache.axis2.transport.mail.Constants.POP3_USER)) {
+                user = paramValue;
+            }
+            if (paramKey.equals(org.apache.axis2.transport.mail.Constants.POP3_PASSWORD)) {
+                password = paramValue;
+            }
+            if (paramKey.equals(org.apache.axis2.transport.mail.Constants.POP3_HOST)) {
+                host = paramValue;
+            }
+            if (paramKey.equals(org.apache.axis2.transport.mail.Constants.STORE_PROTOCOL)) {
+                protocol = paramValue;
+            }
+            if (paramKey.equals(org.apache.axis2.transport.mail.Constants.POP3_PORT)) {
+                port = paramValue;
+            }
+
+        }
+        if (password.length() == 0 || user.length() == 0 || host.length() == 0 || protocol.length() == 0) {
+            throw new AxisFault("One or more of Password, User, Host and Protocol are null or empty");
+        }
+
+        if (port.length() == 0) {
+            urlName = new URLName(protocol, host, -1, "", user, password);
+        } else {
+            urlName = new URLName(protocol, host, Integer.parseInt(port), "", user, password);
+        }
+
+        receiver = new EmailReceiver();
+        receiver.setPop3Properties(pop3Properties);
+        receiver.setUrlName(urlName);
+
+
+    }
+
+    /**
+     * Server process.
+     */
+    public static void main(String args[]) throws AxisFault {
+        if (args.length < 2) {
+            log.info("java SimpleMailListener <repository>");
+            printUsage();
+        } else {
+            String path = args[0];
+            String axis2xml = args[1];
+            ConfigurationContext configurationContext;
+            File repo = new File(path);
+            if (repo.exists()) {
+                configurationContext =
+                        ConfigurationContextFactory.createConfigurationContextFromFileSystem(path,axis2xml);
+            } else {
+                printUsage();
+                throw new AxisFault("repository not found");
+            }
+            SimpleMailListener sas = new SimpleMailListener();
+            TransportInDescription transportIn =
+                    configurationContext.getAxisConfiguration().getTransportIn(
+                            new QName(Constants.TRANSPORT_MAIL));
+            if (transportIn != null) {
+                sas.init(configurationContext, transportIn);
+                log.info("Starting the SimpleMailListener with repository "
+                         + new File(args[0]).getAbsolutePath());
+                sas.start();
+            } else {
+                log.info(
+                        "Startup failed, mail transport not configured, Configure the mail trnasport in the axis2.xml file");
+            }
+        }
+    }
+
+    private static void printUsage() {
+        System.out.println("Please provide the repository location and axis2.xml location ");
+    }
+
+    /**
+     * Accept requests from a given TCP port and send them through the Axis
+     * engine for processing.
+     */
+    public void run() {
+
+        // Accept and process requests from the socket
+        if (running) {
+            log.info("Mail listner strated to listen to the address " + user);
+        }
+
+        while (running) {
+            try {
+                receiver.connect();
+
+                Message[] msgs = receiver.receiveMessages();
+
+                if ((msgs != null) && (msgs.length > 0)) {
+                    log.info(msgs.length + " Message Found");
+
+                    for (int i = 0; i < msgs.length; i++) {
+                        MimeMessage msg = (MimeMessage) msgs[i];
+                        MessageContext mc = createMessageContextToMailWorker(msg);
+                        if (mc != null) {
+                            messageQueue.add(mc);
+                        }
+                        msg.setFlag(Flags.Flag.DELETED, true);
+                    }
+                }
+
+                receiver.disconnect();
+
+            } catch (Exception e) {
+                log.error("Error in SimpleMailListener" + e);
+            } finally {
+                try {
+                    Thread.sleep(listenerWaitInterval);
+                } catch (InterruptedException e) {
+                    log.warn("Error Encountered " + e);
+                }
+            }
+        }
+
+    }
+
+    private MessageContext createMessageContextToMailWorker(MimeMessage msg) throws Exception {
+
+        MessageContext msgContext = null;
+        TransportInDescription transportIn =
+                configurationContext.getAxisConfiguration()
+                        .getTransportIn(
+                                new QName(org.apache.axis2.Constants.TRANSPORT_MAIL));
+        TransportOutDescription transportOut =
+                configurationContext.getAxisConfiguration()
+                        .getTransportOut(
+                                new QName(org.apache.axis2.Constants.TRANSPORT_MAIL));
+        if ((transportIn != null) && (transportOut != null)) {
+            // create Message Context
+            msgContext = new MessageContext();
+            msgContext.setConfigurationContext(configurationContext);
+            msgContext.setTransportIn(transportIn);
+            msgContext.setTransportOut(transportOut);
+            msgContext.setServerSide(true);
+            msgContext.setProperty(org.apache.axis2.transport.mail.Constants.CONTENT_TYPE,
+                                   msg.getContentType());
+
+            if (TransportUtils.getCharSetEncoding(msg.getContentType()) != null) {
+                msgContext.setProperty(
+                        org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING,
+                        TransportUtils.getCharSetEncoding(
+                                msg.getContentType()));
+            } else {
+                msgContext.setProperty(
+                        org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING,
+                        MessageContext.DEFAULT_CHAR_SET_ENCODING);
+            }
+
+            msgContext.setIncomingTransportName(org.apache.axis2.Constants.TRANSPORT_MAIL);
+            String soapAction = getMailHeader(msg,
+                                              org.apache.axis2.transport.mail.Constants.HEADER_SOAP_ACTION);
+            msgContext.setSoapAction(soapAction);
+            if (msg.getSubject() != null) {
+                msgContext.setTo(new EndpointReference(msg.getSubject()));
+            }
+
+            // Create the SOAP Message
+            // SMTP basically a text protocol, thus, following would be the optimal way to build the
+            // SOAP11/12 body from it.
+            String message = msg.getContent().toString();
+            ByteArrayInputStream bais =
+                    new ByteArrayInputStream(message.getBytes());
+            XMLStreamReader reader =
+                    StAXUtils.createXMLStreamReader(bais);
+            String soapNamespaceURI;
+            if (msg.getContentType().indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE)
+                > -1) {
+                soapNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+                // set the soapAction if available
+                int index = msg.getContentType().indexOf("action");
+                if (index > -1) {
+                    String transientString = msg.getContentType().substring(index, msg.getContentType().length());
+                    int equal = transientString.indexOf("=");
+                    int firstSemiColon = transientString.indexOf(";");
+                    if (firstSemiColon > -1) {
+                        soapAction = transientString.substring(equal + 1, firstSemiColon);
+                    } else {
+                        soapAction = transientString.substring(equal + 1, transientString.length());
+                    }
+                    if ((soapAction != null) && soapAction.startsWith("\"")
+                        && soapAction.endsWith("\"")) {
+                        soapAction = soapAction
+                                .substring(1, soapAction.length() - 1);
+                    }
+                    msgContext.setSoapAction(soapAction);
+
+                }
+            } else if (msg.getContentType().indexOf(
+                    SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
+                soapNamespaceURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+            } else {
+                log.warn(
+                        "MailWorker found a message other than text/xml or application/soap+xml");
+                return null;
+            }
+
+            StAXBuilder builder = new StAXSOAPModelBuilder(reader, soapNamespaceURI);
+            SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
+            msgContext.setEnvelope(envelope);
+        }
+        return msgContext;
+    }
+
+    private String getMailHeader(MimeMessage msg, String headerName) throws AxisFault {
+        try {
+            String values[] = msg.getHeader(headerName);
+
+            if (values != null) {
+                return values[0];
+            } else {
+                return null;
+            }
+        } catch (MessagingException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    /**
+     * Start this listener
+     */
+    public void start() throws AxisFault {
+        workerPool = new ThreadPoolExecutor(1,
+                                            WORKERS_MAX_THREADS, WORKER_KEEP_ALIVE, TIME_UNIT,
+                                            new LinkedBlockingQueue(),
+                                            new DefaultThreadFactory(
+                                                    new ThreadGroup("Mail Worker thread group"),
+                                                    "MailWorker"));
+
+        messageQueue = new LinkedBlockingQueue();
+
+        this.configurationContext.getThreadPool().execute(this);
+
+        MailWorkerManager mailWorkerManager = new MailWorkerManager(configurationContext,
+                                                                    messageQueue, workerPool,
+                                                                    WORKERS_MAX_THREADS);
+        mailWorkerManager.start();
+    }
+
+    /**
+     * Stop this server.
+     * <p/>
+     */
+    public void stop() {
+        running = true;
+        if (!workerPool.isShutdown()) {
+            workerPool.shutdown();
+        }
+        log.info("Stopping the mail listner");
+    }
+
+
+    public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
+        return getEPRsForService(serviceName, ip)[0];
+    }
+
+    public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
+        return new EndpointReference[]{new EndpointReference(Constants.TRANSPORT_MAIL + ":" +
+                                                             replyTo + configurationContext
+                .getServiceContextPath() + "/" + serviceName)};
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailAddress.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailAddress.java
new file mode 100644
index 0000000..755b119
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailAddress.java
@@ -0,0 +1,46 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail.server;
+
+import javax.mail.Address;
+
+/**
+ * This is a simple implementation to simplify the usage
+ * of the Addresses.
+ */
+public class MailAddress extends Address {
+	
+    private static final long serialVersionUID = 3033256355495000819L;
+    
+	String mailAddy = null;
+
+    public MailAddress(String mAddy) {
+        this.mailAddy = mAddy;
+    }
+
+    public boolean equals(Object addr) {
+        return this.mailAddy.equals(addr);
+    }
+
+    public String toString() {
+        return this.mailAddy;
+    }
+
+    public String getType() {
+        return "text/plain";
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailServer.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailServer.java
new file mode 100644
index 0000000..c49fe02
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailServer.java
@@ -0,0 +1,130 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail.server;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.transport.mail.Constants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class MailServer {
+	private static final Log log = LogFactory.getLog(MailServer.class);
+    Storage st = null;
+    public ConfigurationContext configurationContext = null;
+    private POP3Server pop3Server;
+    private SMTPServer smtpServer;
+
+    public MailServer(int popPort, int smtpPort) throws AxisFault {
+        st = new Storage();
+
+        // Start up the two servers and lets have some fun. - CT
+        smtpServer = new SMTPServer(st, smtpPort);
+        smtpServer.start();
+        pop3Server = new POP3Server(st, popPort);
+        pop3Server.start();
+        try {
+            log.info("Sleeping for a bit to let the mail server start up.");
+            Thread.sleep(2000);
+        } catch (InterruptedException e1) {
+            log.error(e1);
+        }
+    }
+
+    public MailServer(ConfigurationContext configurationContext, int popPort, int smtpPort)
+            throws AxisFault {
+        this.configurationContext = configurationContext;
+
+        st = new Storage();
+
+        // Start up the two servers and lets have some fun. - CT
+        smtpServer = new SMTPServer(st, configurationContext, smtpPort);
+        smtpServer.start();
+        pop3Server = new POP3Server(st, popPort);
+        pop3Server.start();
+        try {
+            log.info("Sleeping for a bit to let the mail server start up.");
+            Thread.sleep(2000);
+        } catch (InterruptedException e1) {
+            log.error(e1);
+        } 
+    }
+
+    public MailServer(String dir, int popPort, int smtpPort) throws AxisFault {
+        try {
+            configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(dir, null);
+        } catch (Exception e) {
+            log.error(e);
+        }
+
+        try {
+            log.info("Sleeping for a bit to let the engine start up.");
+            Thread.sleep(2000);
+        } catch (InterruptedException e1) {
+            log.error(e1);
+        }
+
+        st = new Storage();
+
+        // Start up the two servers and lets have some fun. - CT
+        smtpServer = new SMTPServer(st, configurationContext, smtpPort);
+        smtpServer.start();
+        pop3Server = new POP3Server(st, popPort);
+        pop3Server.start();
+        try {
+            log.info("Sleeping for a bit to let the engine start up.");
+            Thread.sleep(2000);
+        } catch (InterruptedException e1) {
+            log.error(e1);
+        }
+    }
+
+    public static void main(String args[]) {
+        int smtpPost = Constants.SMTP_SERVER_PORT;
+        int popPort = Constants.POP_SERVER_PORT;
+
+        if (args.length == 2) {
+            try {
+                smtpPost = Integer.parseInt(args[0]);
+                popPort = Integer.parseInt(args[1]);
+            } catch (NumberFormatException e1) {
+                log.info("Error in parsing the custom ports.");
+            }
+        } else {
+            log.info("Usage MailServer <SMTP_PORT> <POP_PORT>");
+            log.info("Using 1134 as the SMTP port and 1049 as the POP port");
+        }
+
+        try {
+            new MailServer(popPort, smtpPost);
+        } catch (AxisFault e) {
+            log.info(e.getMessage());
+        }
+    }
+
+    public void stop() throws AxisFault {
+        smtpServer.stopServer();
+        pop3Server.stopServer();
+        try {
+            log.info("Giving some time for the sockets to close.");
+            Thread.sleep(2000);
+        } catch (InterruptedException e1) {
+            log.error(e1);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
new file mode 100644
index 0000000..3480810
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
@@ -0,0 +1,177 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail.server;
+
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.transport.mail.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+
+/**
+ * This class will be used to sort the messages into normal messages and mails
+ * being sent to the Axis engine. If a mail is to be sent to the engine then a
+ * new Axis engine is created using the configuration in the MailServer class
+ * and the receive method is called.
+ */
+public class MailSorter {
+	private static final Log log = LogFactory.getLog(MailSorter.class);
+    Storage st = null;
+    private ArrayList sUsers = new ArrayList();
+
+    // Special users. They are hard coded for the time being to axis2-server@localhost and axis2-server@127.0.0.1
+    private ConfigurationContext configurationContext = null;
+    private boolean actAsMailet = false;
+
+    public MailSorter(Storage st, ConfigurationContext configurationContext) {
+        this.st = st;
+        sUsers.add("axis2-server@localhost");
+        sUsers.add("axis2-server@127.0.0.1");
+
+        if (configurationContext == null) {
+            actAsMailet = false;
+        } else {
+            this.configurationContext = configurationContext;
+            actAsMailet = true;
+        }
+    }
+
+    public void processMail(ConfigurationContext confContext, MimeMessage mimeMessage) {
+        // create an Axis server
+        AxisEngine engine = new AxisEngine(confContext);
+        MessageContext msgContext = null;
+
+        // create and initialize a message context
+        try {
+            msgContext = new MessageContext();
+            msgContext.setConfigurationContext(confContext);
+            msgContext.setTransportIn(confContext.getAxisConfiguration().getTransportIn(new QName(org.apache.axis2.Constants.TRANSPORT_MAIL)));
+            msgContext.setTransportOut(confContext.getAxisConfiguration().getTransportOut(new QName(org.apache.axis2.Constants.TRANSPORT_MAIL)));
+
+            msgContext.setServerSide(true);
+            msgContext.setProperty(Constants.CONTENT_TYPE, mimeMessage.getContentType());
+            msgContext.setProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING,
+                    mimeMessage.getEncoding());
+            String soapAction = getMailHeader(Constants.HEADER_SOAP_ACTION, mimeMessage);
+            if (soapAction == null){
+            	soapAction = mimeMessage.getSubject();
+            }
+
+            msgContext.setSoapAction(soapAction);
+            msgContext.setIncomingTransportName(org.apache.axis2.Constants.TRANSPORT_MAIL);
+
+            String serviceURL = mimeMessage.getSubject();
+
+            if (serviceURL == null) {
+                serviceURL = "";
+            }
+
+            String replyTo = ((InternetAddress) mimeMessage.getReplyTo()[0]).getAddress();
+
+            if (replyTo != null) {
+                msgContext.setReplyTo(new EndpointReference(replyTo));
+            }
+
+            String recepainets = ((InternetAddress) mimeMessage.getAllRecipients()[0]).getAddress();
+
+            if (recepainets != null) {
+                msgContext.setTo(new EndpointReference(recepainets + "/" + serviceURL));
+            }
+
+            // add the SOAPEnvelope
+            String message = mimeMessage.getContent().toString();
+
+            log.info("message[" + message + "]");
+
+            ByteArrayInputStream bais = new ByteArrayInputStream(message.getBytes());
+            XMLStreamReader reader =
+                    StAXUtils.createXMLStreamReader(bais);
+            String soapNamespaceURI = "";
+
+            if (mimeMessage.getContentType().indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
+                soapNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+            } else if (mimeMessage.getContentType().indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE)
+                    > -1) {
+                soapNamespaceURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+            }
+
+            StAXBuilder builder = new StAXSOAPModelBuilder(reader, soapNamespaceURI);
+            SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
+
+            msgContext.setEnvelope(envelope);
+
+            if (envelope.getBody().hasFault()) {
+                engine.receiveFault(msgContext);
+            } else {
+                engine.receive(msgContext);
+            }
+        } catch (Exception e) {
+            try {
+                if (msgContext != null) {
+                    MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+
+                    engine.sendFault(faultContext);
+                }
+            } catch (Exception e1) {
+                log.error(e);
+            }
+        }
+    }
+
+    public void sort(String user, MimeMessage msg) {
+        if (actAsMailet) {
+            if (sUsers.contains(user)) {
+                processMail(configurationContext, msg);
+            } else {
+                st.addMail(user, msg);
+            }
+        } else {
+            st.addMail(user, msg);
+        }
+    }
+
+    private String getMailHeader(String headerName, MimeMessage mimeMessage) throws AxisFault {
+        try {
+            String values[] = mimeMessage.getHeader(headerName);
+
+            if (values != null) {
+                return values[0];
+            } else {
+                return null;
+            }
+        } catch (MessagingException e) {
+            throw new AxisFault(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/POP3Server.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/POP3Server.java
new file mode 100644
index 0000000..183781d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/POP3Server.java
@@ -0,0 +1,67 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail.server;
+
+import org.apache.axis2.AxisFault;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class POP3Server extends Thread {
+	private static final Log log = LogFactory.getLog(POP3Server.class);
+    private Storage st = null;
+    private ServerSocket serverSocket;
+
+    public POP3Server(Storage st, int port) throws AxisFault {
+        this.st = st;
+
+        try {
+            synchronized (this) {
+                serverSocket = new ServerSocket(port);
+                log.info("Server started on port " + port);
+            }
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    public void run() {
+        while (true) {
+            try {
+                Socket socket = serverSocket.accept();
+                POP3Worker thread = new POP3Worker(socket, st);
+
+                thread.start();
+            } catch (Exception e) {
+                log.error(e);
+            }
+        }
+    }
+
+    public void stopServer() throws AxisFault {
+        try {
+            synchronized (this) {
+                serverSocket.close();
+            }
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/POP3Worker.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/POP3Worker.java
new file mode 100644
index 0000000..8480cfe
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/POP3Worker.java
@@ -0,0 +1,170 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail.server;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.axis2.transport.mail.Constants;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+public class POP3Worker extends Thread {
+	private static final Log log = LogFactory.getLog(POP3Worker.class);
+    boolean doneProcess = false;
+    int numDeleted = 0;    // This is a small hack to get the deleting working with the ArrayList. To keep it simple.
+    ArrayList messages = new ArrayList();
+    private Socket socket;
+    private Storage st;
+
+    public POP3Worker(Socket socket, Storage st) {
+        this.socket = socket;
+        this.st = st;
+    }
+
+    private void processInput(String input, PrintWriter printWriter) {
+        byte[] CR_LF_DOT_CR_LF = new byte[]{0x0D, 0x0A, '.', 0x0D, 0x0A};
+        String user = "";
+
+        if (input == null) {
+            this.doneProcess = true;    // This should not be happening
+        } else {
+            ArrayList tokens = new ArrayList();
+            StringTokenizer stk = new StringTokenizer(input);
+
+            while (stk.hasMoreTokens()) {
+                tokens.add(stk.nextToken());
+            }
+
+            if (tokens.get(0).equals(Constants.USER)) {
+                user = (String) tokens.get(1);
+                messages = st.popUserMails(user);
+                printWriter.println(Constants.OK);
+            } else if (tokens.get(0).equals(Constants.PASS)) {
+                printWriter.println(Constants.OK);    // Passwords are not checked.
+            } else if (input.equals(Constants.QUIT)) {
+                printWriter.println(Constants.OK + "POP3 server signing off");
+                doneProcess = true;
+            } else if (input.equals(Constants.STAT)) {
+                printWriter.println(Constants.OK + messages.size() + " 1");    // We take the maildrop size as one.
+            } else if (tokens.get(0).equals(Constants.LIST)) {                               // scan listing
+                if (tokens.size() > 1) {
+                    try {
+                        int optArg = Integer.parseInt((String) tokens.get(1));
+                        int messageArrayIndex = optArg - 1;
+
+                        if ((messageArrayIndex < messages.size()) && (messageArrayIndex >= 0))
+                        {    // that is OK careful with numbering
+                            printWriter.println(Constants.OK + messageArrayIndex + 1
+                                    + " 120");    // Mail size of 120 is just some number.
+                        } else {
+                            printWriter.println(Constants.ERR + "no such message, only "
+                                    + (messages.size() + 1) + " messages in maildrop");
+                        }
+                    } catch (NumberFormatException e) {
+                        log.info(e.getMessage());
+                        printWriter.println(Constants.ERR
+                                + "problem passing the index. Index submited was "
+                                + tokens.get(1));
+                    }
+                } else {
+                    printWriter.println(Constants.OK + messages.size());
+
+                    for (int i = 0; i < messages.size(); i++) {
+                        int messageIndex = i + 1;
+
+                        printWriter.println(messageIndex + " 120");    // List out all the messages with a message size octet of 120
+                    }
+
+                    printWriter.println(".");
+                }
+            } else if (tokens.get(0).equals(Constants.RETR)) {
+                String i = (String) tokens.get(1);
+
+                try {
+                    int index = Integer.parseInt(i);
+
+                    printWriter.println(Constants.OK);
+
+                    MimeMessage m = (MimeMessage) messages.get(index - 1);
+
+                    m.writeTo(socket.getOutputStream());
+
+                    socket.getOutputStream().write(CR_LF_DOT_CR_LF);    // This is a bit of a hack to get it working. Have to find a bette way to handle this.
+                    socket.getOutputStream().flush();
+                } catch (NumberFormatException e) {
+                    printWriter.println(Constants.ERR);
+                } catch (IOException e1) {
+                    printWriter.println(Constants.ERR);
+                } catch (MessagingException e2) {
+                    printWriter.println(Constants.ERR);
+                }
+            } else if (tokens.get(0).equals(Constants.DELE)) {
+                String smIndex = (String) tokens.get(1);
+
+                try {
+                    int mIndex = Integer.parseInt(smIndex) - 1 - numDeleted;    // When one mail is deleted the index of the other mails will reduce. Asumed that the delete will occure from bottom up.
+
+                    if ((mIndex >= 0) && (mIndex < messages.size())) {
+                        messages.remove(mIndex);
+                        numDeleted++;
+                        printWriter.println(Constants.OK);
+                    } else {
+                        printWriter.println(Constants.ERR);
+                    }
+                } catch (NumberFormatException e) {
+                    printWriter.println(Constants.ERR);
+                }
+            } else if (tokens.get(0).equals(Constants.NOOP)
+                    || tokens.get(0).equals(Constants.RSET)) {
+                printWriter.println(Constants.OK);
+            } else {
+                printWriter.println(Constants.ERR);
+            }
+        }
+    }
+
+    public void run() {
+        try {
+            InputStream inputStream = socket.getInputStream();
+            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
+            PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
+
+            printWriter.println(Constants.OK + " POP3 server ready");
+
+            String s;
+
+            while (!doneProcess) {
+                s = bufferedReader.readLine();
+                processInput(s, printWriter);
+            }
+
+            socket.close();
+        } catch (Exception e) {
+            log.error(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/SMTPServer.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/SMTPServer.java
new file mode 100644
index 0000000..a76b761
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/SMTPServer.java
@@ -0,0 +1,99 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail.server;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class SMTPServer extends Thread {
+	private static final Log log = LogFactory.getLog(SMTPServer.class);
+    private boolean actAsMailet = false;
+    private boolean running = false;
+    private ConfigurationContext configurationContext;
+    private int port;
+    private ServerSocket ss;
+    private Storage st;
+
+    public SMTPServer(Storage st, int port) {
+        this.st = st;
+        this.port = port;
+        actAsMailet = false;
+    }
+
+    public SMTPServer(Storage st, ConfigurationContext configurationContext, int port) {
+        this.st = st;
+        this.configurationContext = configurationContext;
+        this.port = port;
+        actAsMailet = true;
+    }
+
+    public void run() {
+        runServer();
+    }
+
+    public void runServer() {
+        try {
+            synchronized (this) {
+                running = true;
+                ss = new ServerSocket(port);
+                log.info("SMTP Server started on port " + port);
+            }
+        } catch (IOException ex) {
+            log.info(ex.getMessage());
+        }
+
+        while (running) {
+            try {
+
+                // wait for a client
+                Socket socket = ss.accept();
+                SMTPWorker thread = null;
+
+                if (actAsMailet) {
+                    thread = new SMTPWorker(socket, st, configurationContext);
+                } else {
+                    thread = new SMTPWorker(socket, st);
+                }
+
+                thread.start();
+            } catch (IOException ex) {
+                if (running) {
+                    log.info(ex.getMessage());
+                }
+            }
+        }
+    }
+
+    public void stopServer() throws AxisFault {
+        try {
+            synchronized (this) {
+                running = false;
+                ss.close();
+                ss = null;
+            }
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/SMTPWorker.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/SMTPWorker.java
new file mode 100644
index 0000000..4eba40d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/SMTPWorker.java
@@ -0,0 +1,268 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail.server;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.transport.mail.Constants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.mail.Authenticator;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.Properties;
+
+public class SMTPWorker extends Thread {
+    private BufferedReader reader = null;
+    private BufferedWriter writer = null;
+    private boolean transmitionEnd = false;
+    private String temp = "";
+    private Storage st = null;
+    boolean runThread = true;
+    private ArrayList receivers = new ArrayList();
+    private MimeMessage mail = null;
+	private static final Log log = LogFactory.getLog(SMTPWorker.class);
+    private boolean dataWriting = false;
+    private ConfigurationContext configurationContext = null;
+    private boolean bodyData = false;
+    private boolean actAsMailet = false;
+
+    public SMTPWorker(Socket socket, Storage st) {
+        doWork(socket, st, null);
+    }
+
+    public SMTPWorker(Socket socket, Storage st, ConfigurationContext configurationContext) {
+        doWork(socket, st, configurationContext);
+    }
+
+    private void doWork(Socket socket, Storage st, ConfigurationContext configurationContext) {
+        try {
+            this.st = st;
+
+            if (configurationContext == null) {
+                actAsMailet = false;
+            } else {
+                this.configurationContext = configurationContext;
+                actAsMailet = true;
+            }
+
+            // get the streams from the socket and save in instance variables.
+            reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+            writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
+        } catch (IOException ex) {
+            log.info(ex.getMessage());
+        }
+    }
+
+    // transmission is over. setting to exit
+    private void exitWorker() throws IOException {
+        reader.close();
+        writer.close();
+        runThread = false;
+    }
+
+    // initializing the client by sending the initial message.
+    private void initializeClient() throws IOException {
+        if (writer != null) {
+            send("220 SMTP Server IS UP");
+        }
+    }
+
+    private String processInput(String input) {
+        if (input == null) {
+            return Constants.COMMAND_UNKNOWN;
+        }
+
+        if ((mail != null) && transmitionEnd) {
+            return Constants.COMMAND_TRANSMISSION_END;
+        }
+
+        if (input.startsWith("MAIL")) {
+            mail = new MimeMessage(Session.getInstance(new Properties(), new Authenticator() {
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return null;
+                }
+            }));
+
+            int start = input.indexOf("<") + 1;
+            int end;
+
+            if (start <= 0) {
+                start = input.indexOf("FROM:") + 5;
+                end = input.length();
+            } else {
+                end = input.indexOf(">");
+            }
+
+            String from = input.substring(start, end);
+
+            if ((from != null) && from.trim().length() != 0) {
+
+                // TODO this is an ugly hack to get the from address in. There
+                // should be a better way to do this.
+                MailAddress mailFrom[] = new MailAddress[1];
+
+                mailFrom[0] = new MailAddress(from);
+
+                try {
+                    mail.addFrom(mailFrom);
+                } catch (MessagingException e) {
+                    log.info(e.getMessage());
+                }
+            }
+
+            return Constants.MAIL_OK;
+        }
+
+        if (input.startsWith("HELO")) {
+            return Constants.HELO_REPLY;
+        } else if (input.startsWith("RCPT")) {
+
+            int start = input.indexOf("<") + 1;
+            int end;
+
+            if (start <= 0) {
+                start = input.indexOf("TO:") + 3;
+                /*
+                 * if(!input.endsWith(domain)){ System.out.println("ERROR: wrong
+                 * donmain name"); return Constants.RCPT_ERROR; }
+                 */
+            } else {
+
+                /*
+                 * if(!input.endsWith(domain + ">")){ System.out.println("ERROR:
+                 * wrong donmain name"); return Constants.RCPT_ERROR; }
+                 */
+            }
+
+            end = input.indexOf(">");
+
+            String toStr = input.substring(start, end);
+
+            try {
+                mail.addRecipient(Message.RecipientType.TO, new MailAddress(toStr));
+                receivers.add(toStr);
+            } catch (MessagingException e) {
+                log.info(e.getMessage());
+            }
+
+            return Constants.RCPT_OK;
+        } else if (input.equalsIgnoreCase("DATA")) {
+            dataWriting = true;
+
+            return Constants.DATA_START_SUCCESS;
+        } else if (input.equalsIgnoreCase("QUIT")) {
+            dataWriting = true;
+            transmitionEnd = true;
+
+            return Constants.COMMAND_TRANSMISSION_END;
+        } else if (input.equals(".")) {
+            dataWriting = false;
+
+            return Constants.DATA_END_SUCCESS;
+        } else if (input.length() == 0 && !bodyData) {
+            bodyData = true;
+
+            return null;
+        } else if ((mail != null) && dataWriting) {
+            try {
+                if (bodyData) {
+                    temp += input;
+                    mail.setContent(temp, "text/xml"); //Since this is for axis2 :-)
+                } else {
+                    mail.addHeaderLine(input);
+                }
+            } catch (MessagingException e) {
+                log.info(e.getMessage());
+            }
+
+            return null;
+        } else {
+            return Constants.COMMAND_UNKNOWN;
+        }
+    }
+
+    // running the thread
+    public void run() {
+        try {
+
+            // do initial transmission.
+            initializeClient();
+
+            // analyze all the inputs from client and work accordingly.
+            while (runThread) {
+                String input = null;
+
+                // get client input
+                input = reader.readLine();
+
+                String retString = processInput(input);
+
+                if (Constants.COMMAND_EXIT.equals(retString)) {
+                    exitWorker();
+                } else {
+                    if (retString != null) {
+                        send(retString);    // Send the reply
+                    }
+
+                    if ((mail != null) && transmitionEnd) {
+                        exitWorker();
+                    }
+                }
+            }
+
+            for (int idx = 0; idx < receivers.size(); idx++) {
+                try {
+                    MailSorter mSort = null;
+
+                    if (actAsMailet) {
+                        mSort = new MailSorter(this.st, this.configurationContext);
+                    } else {
+                        mSort = new MailSorter(this.st, null);
+                    }
+
+                    mSort.sort((String) receivers.get(idx), new MimeMessage(mail));
+                } catch (MessagingException e1) {
+                    log.info(e1.getMessage());
+
+                    // e1.printStackTrace();
+                }
+            }
+
+            //
+        } catch (IOException e) {
+            log.info("ERROR: CLIENT CLOSED THE SOCKET");
+        }
+    }
+
+    private void send(String s) throws IOException {
+        writer.write(s);
+        writer.newLine();
+        writer.flush();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/Storage.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/Storage.java
new file mode 100644
index 0000000..d219288
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/mail/server/Storage.java
@@ -0,0 +1,52 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.mail.server;
+
+import javax.mail.internet.MimeMessage;
+import java.util.ArrayList;
+import java.util.Hashtable;
+
+public class Storage {
+    private Hashtable users = new Hashtable();
+
+    public Storage() {
+    }
+
+    public void addMail(String user, MimeMessage mail) {
+        ArrayList curMailBox = null;
+
+        if (users.containsKey(user)) {
+            curMailBox = (ArrayList) users.get(user);
+        } else {
+            curMailBox = new ArrayList();
+            users.put(user, curMailBox);
+        }
+
+        curMailBox.add(mail);
+    }
+
+    public ArrayList popUserMails(String user) {
+        ArrayList usrMailBox = new ArrayList();    // This will return a emty list when the user has no mails or no mail box.
+
+        if (users.containsKey(user)) {
+            usrMailBox = (ArrayList) users.get(user);
+        }
+
+        return usrMailBox;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPServer.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPServer.java
new file mode 100644
index 0000000..49d9fde
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPServer.java
@@ -0,0 +1,218 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.tcp;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.transport.http.server.HttpUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketException;
+
+/**
+ * Class TCPServer
+ */
+public class TCPServer implements Runnable, TransportListener {
+    private int port = 8000;
+    private boolean started = false;
+    private static final Log log = LogFactory.getLog(TCPServer.class);
+    private ConfigurationContext configContext;
+    private ServerSocket serversocket;
+    private String hostAddress = null;
+    private String contextPath;
+
+    public TCPServer() {
+    }
+
+    public TCPServer(int port, ConfigurationContext configContext) throws AxisFault {
+        try {
+            this.configContext = configContext;
+            serversocket = new ServerSocket(port);
+
+            ListenerManager listenerManager = configContext.getListenerManager();
+            TransportInDescription trsIn = new TransportInDescription(
+                    new QName(Constants.TRANSPORT_TCP));
+            trsIn.setReceiver(this);
+            if (listenerManager == null) {
+                listenerManager = new ListenerManager();
+                listenerManager.init(configContext);
+            }
+            listenerManager.addListener(trsIn, true);
+            contextPath = configContext.getServiceContextPath();
+
+        } catch (IOException e1) {
+            throw new AxisFault(e1);
+        }
+    }
+
+    public TCPServer(int port, String dir) throws AxisFault {
+        this(port, ConfigurationContextFactory.createConfigurationContextFromFileSystem(dir, null));
+    }
+
+    public void init(ConfigurationContext axisConf, TransportInDescription transprtIn)
+            throws AxisFault {
+        this.configContext = axisConf;
+
+        Parameter param = transprtIn.getParameter(PARAM_PORT);
+
+        if (param != null) {
+            this.port = Integer.parseInt((String) param.getValue());
+        }
+        param = transprtIn.getParameter(HOST_ADDRESS);
+        if (param != null) {
+            hostAddress = ((String) param.getValue()).trim();
+        }
+        contextPath = configContext.getServiceContextPath();
+    }
+
+    public static void main(String[] args) throws AxisFault, NumberFormatException {
+        if (args.length != 2) {
+            System.out.println("TCPServer repositoryLocation port");
+        } else {
+            File repository = new File(args[0]);
+
+            if (!repository.exists()) {
+                System.out.print("Repository file does not exists .. initializing repository");
+            }
+
+            TCPServer tcpServer = new TCPServer(Integer.parseInt(args[1]),
+                    repository.getAbsolutePath());
+
+            System.out.println("[Axis2] Using the Repository " + repository.getAbsolutePath());
+            System.out.println("[Axis2] Starting the TCP Server on port " + args[1]);
+            tcpServer.start();
+            Runtime.getRuntime().addShutdownHook(new Thread(tcpServer));
+        }
+    }
+
+    public void run() {
+        while (started) {
+            Socket socket = null;
+
+            try {
+                socket = serversocket.accept();
+            } catch (java.io.InterruptedIOException iie) {
+            }
+            catch (Exception e) {
+                log.debug(e);
+
+                break;
+            }
+
+            if (socket != null) {
+                configContext.getThreadPool().execute(new TCPWorker(configContext, socket));
+            }
+        }
+    }
+
+    public synchronized void start() throws AxisFault {
+        if (serversocket == null) {
+            serversocket = openSocket(port);
+        }
+        started = true;
+        this.configContext.getThreadPool().execute(this);
+    }
+
+
+    /**
+     * Controls the number of server sockets kept open.
+     */
+    public ServerSocket openSocket(int port) throws AxisFault {
+        for (int i = 0; i < 5; i++) {
+            try {
+                return new ServerSocket(port + i);
+            } catch (IOException e) {
+                // What I'm gonna do here. Try again.
+            }
+        }
+
+        throw new AxisFault(Messages.getMessage("failedToOpenSocket"));
+    }
+
+
+    /*
+    *  (non-Javadoc)
+    * @see org.apache.axis2.transport.TransportListener#stop()
+    */
+    public void stop() throws AxisFault {
+        try {
+            this.serversocket.close();
+            started = false;
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    public ConfigurationContext getConfigurationContext() {
+        return this.configContext;
+    }
+
+    /**
+     * I fthe hostAddress parameter is present in axis2.xml then the EPR will be
+     * created by taking the hostAddres into account
+     * (non-Javadoc)
+     *
+     * @see org.apache.axis2.transport.TransportListener#getEPRForService(String, String)
+     */
+    public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
+        EndpointReference[] epRsForService = getEPRsForService(serviceName, ip);
+        return epRsForService != null ? epRsForService[0] : null;
+    }
+
+    public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
+        //if host address is present
+        if (hostAddress != null) {
+            if (serversocket != null) {
+                // todo this has to fix
+                return new EndpointReference[] {new EndpointReference(hostAddress + "/" + contextPath + serviceName)};
+            } else {
+                log.debug("Unable to generate EPR for the transport tcp");
+                return null;
+            }
+        }
+        if (ip == null) {
+            try {
+                ip = HttpUtils.getIpAddress();
+            } catch (SocketException e) {
+                throw AxisFault.makeFault(e);
+            }
+        }
+        if (serversocket != null) {
+            // todo this has to fix
+            return new EndpointReference[] {new EndpointReference("tcp://" + ip + ":" + (serversocket.getLocalPort())
+                    + "/" + contextPath + "/" + serviceName)};
+        } else {
+            log.debug("Unable to generate EPR for the transport tcp");
+            return null;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPTransportSender.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPTransportSender.java
new file mode 100644
index 0000000..7969d15
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPTransportSender.java
@@ -0,0 +1,121 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.tcp;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.AbstractTransportSender;
+import org.apache.axis2.util.URL;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.net.InetSocketAddress;
+import java.net.MalformedURLException;
+import java.net.Socket;
+import java.net.SocketAddress;
+
+public class TCPTransportSender extends AbstractTransportSender {
+
+    private static final long serialVersionUID = -6780125098288186598L;
+
+    /**
+     * Field out
+     */
+    protected Writer out;
+
+    /**
+     * Field socket
+     */
+    private Socket socket;
+
+    public void cleanup(MessageContext msgContext) throws AxisFault {
+        try {
+            if (socket != null) {
+                socket.close();
+                socket = null;
+            }
+        } catch (IOException e) {
+        }
+    }
+
+    public void finalizeSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+                                                                   OutputStream out) {
+    }
+
+    public void finalizeSendWithToAddress(MessageContext msgContext, OutputStream out)
+            throws AxisFault {
+        try {
+            socket.shutdownOutput();
+            msgContext.setProperty(MessageContext.TRANSPORT_IN, socket.getInputStream());
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    protected OutputStream openTheConnection(EndpointReference toURL, MessageContext msgContext)
+            throws AxisFault {
+        if (toURL != null) {
+            try {
+                URL url = new URL(toURL.getAddress());
+                SocketAddress add = new InetSocketAddress(url.getHost(), (url.getPort() == -1)
+                        ? 80
+                        : url.getPort());
+
+                socket = new Socket();
+                socket.connect(add);
+
+                return socket.getOutputStream();
+            } catch (MalformedURLException e) {
+                throw new AxisFault(e.getMessage(), e);
+            } catch (IOException e) {
+                throw new AxisFault(e.getMessage(), e);
+            }
+        } else {
+            throw new AxisFault(Messages.getMessage("canNotBeNull", "Can not Be Null"));
+        }
+    }
+
+    public OutputStream startSendWithOutputStreamFromIncomingConnection(MessageContext msgContext,
+                                                                        OutputStream out)
+            throws AxisFault {
+        return out;
+    }
+
+    public OutputStream startSendWithToAddress(MessageContext msgContext, OutputStream out) {
+        return out;
+    }
+
+    /**
+     * Method writeTransportHeaders
+     *
+     * @param out
+     * @param url
+     * @param msgContext
+     * @throws IOException
+     */
+    protected void writeTransportHeaders(Writer out, URL url, MessageContext msgContext,
+                                         int contentLength)
+            throws IOException {
+    }
+
+    public void stop() {
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
new file mode 100644
index 0000000..7f950cf
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
@@ -0,0 +1,122 @@
+/*
+* Copyright 2004,2005 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.axis2.transport.tcp;
+
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.i18n.Messages;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.net.Socket;
+
+/**
+ * This Class is the work hoarse of the TCP request, this process the incomming SOAP Message.
+ */
+public class TCPWorker implements Runnable {
+    private static final Log log = LogFactory.getLog(TCPWorker.class);
+    private ConfigurationContext configurationContext;
+    private Socket socket;
+
+    public TCPWorker(ConfigurationContext configurationContext, Socket socket) {
+        this.configurationContext = configurationContext;
+        this.socket = socket;
+    }
+
+    public void run() {
+        MessageContext msgContext = null;
+
+        try {
+            AxisEngine engine = new AxisEngine(configurationContext);
+            AxisConfiguration axisConf = configurationContext.getAxisConfiguration();
+            TransportOutDescription transportOut =
+                    axisConf.getTransportOut(new QName(Constants.TRANSPORT_TCP));
+            TransportInDescription transportIn =
+                    axisConf.getTransportIn(new QName(Constants.TRANSPORT_TCP));
+
+            if ((transportOut != null) && (transportIn != null)) {
+
+                // create the Message Context and fill in the values
+                msgContext = new MessageContext();
+                msgContext.setIncomingTransportName(Constants.TRANSPORT_TCP);
+                msgContext.setConfigurationContext(configurationContext);
+                msgContext.setTransportIn(transportIn);
+                msgContext.setTransportOut(transportOut);
+                msgContext.setServerSide(true);
+
+                OutputStream out = socket.getOutputStream();
+
+                msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
+
+                // create the SOAP Envelope
+                Reader in = new InputStreamReader(socket.getInputStream());
+                XMLStreamReader xmlreader = StAXUtils.createXMLStreamReader(in);
+                StAXBuilder builder = new StAXSOAPModelBuilder(xmlreader, null);
+                SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
+
+                msgContext.setEnvelope(envelope);
+
+                if (envelope.getBody().hasFault()) {
+                    engine.receiveFault(msgContext);
+                } else {
+                    engine.receive(msgContext);
+                }
+            } else {
+                throw new AxisFault(Messages.getMessage("unknownTransport",
+                        Constants.TRANSPORT_TCP));
+            }
+        } catch (Throwable e) {
+            try {
+                AxisEngine engine = new AxisEngine(configurationContext);
+
+                if (msgContext != null) {
+                    msgContext.setProperty(MessageContext.TRANSPORT_OUT, socket.getOutputStream());
+
+                    MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+
+                    engine.sendFault(faultContext);
+                }
+            } catch (Exception e1) {
+                log.error(e);
+            }
+        } finally {
+            if (socket != null) {
+                try {
+                    this.socket.close();
+                } catch (IOException e1) {
+                }
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Base64.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Base64.java
new file mode 100644
index 0000000..a4a4dab
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Base64.java
@@ -0,0 +1,294 @@
+/*
+ * Copyright 2004,2005 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.axis2.util;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+
+public class Base64 {
+    private static final char[] S_BASE64CHAR = {'A', 'B', 'C', 'D', 'E', 'F',
+                                                'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
+                                                'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+                                                'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
+                                                't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
+                                                '6', '7', '8', '9', '+', '/'};
+
+    private static final char S_BASE64PAD = '=';
+
+    private static final byte[] S_DECODETABLE = new byte[128];
+
+    static {
+        for (int i = 0; i < S_DECODETABLE.length; i++)
+            S_DECODETABLE[i] = Byte.MAX_VALUE; // 127
+        for (int i = 0; i < S_BASE64CHAR.length; i++)
+                // 0 to 63
+            S_DECODETABLE[S_BASE64CHAR[i]] = (byte) i;
+    }
+
+    private static int decode0(char[] ibuf, byte[] obuf, int wp) {
+        int outlen = 3;
+        if (ibuf[3] == S_BASE64PAD)
+            outlen = 2;
+        if (ibuf[2] == S_BASE64PAD)
+            outlen = 1;
+        int b0 = S_DECODETABLE[ibuf[0]];
+        int b1 = S_DECODETABLE[ibuf[1]];
+        int b2 = S_DECODETABLE[ibuf[2]];
+        int b3 = S_DECODETABLE[ibuf[3]];
+        switch (outlen) {
+            case 1:
+                obuf[wp] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
+                return 1;
+            case 2:
+                obuf[wp++] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
+                obuf[wp] = (byte) (b1 << 4 & 0xf0 | b2 >> 2 & 0xf);
+                return 2;
+            case 3:
+                obuf[wp++] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
+                obuf[wp++] = (byte) (b1 << 4 & 0xf0 | b2 >> 2 & 0xf);
+                obuf[wp] = (byte) (b2 << 6 & 0xc0 | b3 & 0x3f);
+                return 3;
+            default:
+                throw new RuntimeException("internalError00");
+        }
+    }
+
+    /**
+     *  
+     */
+    public static byte[] decode(char[] data, int off, int len) {
+        char[] ibuf = new char[4];
+        int ibufcount = 0;
+        byte[] obuf = new byte[len / 4 * 3 + 3];
+        int obufcount = 0;
+        for (int i = off; i < off + len; i++) {
+            char ch = data[i];
+            if (ch == S_BASE64PAD || ch < S_DECODETABLE.length
+                    && S_DECODETABLE[ch] != Byte.MAX_VALUE) {
+                ibuf[ibufcount++] = ch;
+                if (ibufcount == ibuf.length) {
+                    ibufcount = 0;
+                    obufcount += decode0(ibuf, obuf, obufcount);
+                }
+            }
+        }
+        if (obufcount == obuf.length)
+            return obuf;
+        byte[] ret = new byte[obufcount];
+        System.arraycopy(obuf, 0, ret, 0, obufcount);
+        return ret;
+    }
+
+    /**
+     *  
+     */
+    public static byte[] decode(String data) {
+        char[] ibuf = new char[4];
+        int ibufcount = 0;
+        byte[] obuf = new byte[data.length() / 4 * 3 + 3];
+        int obufcount = 0;
+        for (int i = 0; i < data.length(); i++) {
+            char ch = data.charAt(i);
+            if (ch == S_BASE64PAD || ch < S_DECODETABLE.length
+                    && S_DECODETABLE[ch] != Byte.MAX_VALUE) {
+                ibuf[ibufcount++] = ch;
+                if (ibufcount == ibuf.length) {
+                    ibufcount = 0;
+                    obufcount += decode0(ibuf, obuf, obufcount);
+                }
+            }
+        }
+        if (obufcount == obuf.length)
+            return obuf;
+        byte[] ret = new byte[obufcount];
+        System.arraycopy(obuf, 0, ret, 0, obufcount);
+        return ret;
+    }
+
+    /**
+     *  
+     */
+    public static void decode(char[] data, int off, int len,
+                              OutputStream ostream) throws IOException {
+        char[] ibuf = new char[4];
+        int ibufcount = 0;
+        byte[] obuf = new byte[3];
+        for (int i = off; i < off + len; i++) {
+            char ch = data[i];
+            if (ch == S_BASE64PAD || ch < S_DECODETABLE.length
+                    && S_DECODETABLE[ch] != Byte.MAX_VALUE) {
+                ibuf[ibufcount++] = ch;
+                if (ibufcount == ibuf.length) {
+                    ibufcount = 0;
+                    int obufcount = decode0(ibuf, obuf, 0);
+                    ostream.write(obuf, 0, obufcount);
+                }
+            }
+        }
+    }
+
+    /**
+     *  
+     */
+    public static void decode(String data, OutputStream ostream)
+            throws IOException {
+        char[] ibuf = new char[4];
+        int ibufcount = 0;
+        byte[] obuf = new byte[3];
+        for (int i = 0; i < data.length(); i++) {
+            char ch = data.charAt(i);
+            if (ch == S_BASE64PAD || ch < S_DECODETABLE.length
+                    && S_DECODETABLE[ch] != Byte.MAX_VALUE) {
+                ibuf[ibufcount++] = ch;
+                if (ibufcount == ibuf.length) {
+                    ibufcount = 0;
+                    int obufcount = decode0(ibuf, obuf, 0);
+                    ostream.write(obuf, 0, obufcount);
+                }
+            }
+        }
+    }
+
+    /**
+     * Returns base64 representation of specified byte array.
+     */
+    public static String encode(byte[] data) {
+        return encode(data, 0, data.length);
+    }
+
+    /**
+     * Returns base64 representation of specified byte array.
+     */
+    public static String encode(byte[] data, int off, int len) {
+        if (len <= 0)
+            return "";
+        char[] out = new char[len / 3 * 4 + 4];
+        int rindex = off;
+        int windex = 0;
+        int rest = len - off;
+        while (rest >= 3) {
+            int i = ((data[rindex] & 0xff) << 16)
+                    + ((data[rindex + 1] & 0xff) << 8)
+                    + (data[rindex + 2] & 0xff);
+            out[windex++] = S_BASE64CHAR[i >> 18];
+            out[windex++] = S_BASE64CHAR[(i >> 12) & 0x3f];
+            out[windex++] = S_BASE64CHAR[(i >> 6) & 0x3f];
+            out[windex++] = S_BASE64CHAR[i & 0x3f];
+            rindex += 3;
+            rest -= 3;
+        }
+        if (rest == 1) {
+            int i = data[rindex] & 0xff;
+            out[windex++] = S_BASE64CHAR[i >> 2];
+            out[windex++] = S_BASE64CHAR[(i << 4) & 0x3f];
+            out[windex++] = S_BASE64PAD;
+            out[windex++] = S_BASE64PAD;
+        } else if (rest == 2) {
+            int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
+            out[windex++] = S_BASE64CHAR[i >> 10];
+            out[windex++] = S_BASE64CHAR[(i >> 4) & 0x3f];
+            out[windex++] = S_BASE64CHAR[(i << 2) & 0x3f];
+            out[windex++] = S_BASE64PAD;
+        }
+        return new String(out, 0, windex);
+    }
+
+    /**
+     * Outputs base64 representation of the specified byte array to a byte
+     * stream.
+     */
+    public static void encode(byte[] data, int off, int len,
+                              OutputStream ostream) throws IOException {
+        if (len <= 0)
+            return;
+        byte[] out = new byte[4];
+        int rindex = off;
+        int rest = len - off;
+        while (rest >= 3) {
+            int i = ((data[rindex] & 0xff) << 16)
+                    + ((data[rindex + 1] & 0xff) << 8)
+                    + (data[rindex + 2] & 0xff);
+            out[0] = (byte) S_BASE64CHAR[i >> 18];
+            out[1] = (byte) S_BASE64CHAR[(i >> 12) & 0x3f];
+            out[2] = (byte) S_BASE64CHAR[(i >> 6) & 0x3f];
+            out[3] = (byte) S_BASE64CHAR[i & 0x3f];
+            ostream.write(out, 0, 4);
+            rindex += 3;
+            rest -= 3;
+        }
+        if (rest == 1) {
+            int i = data[rindex] & 0xff;
+            out[0] = (byte) S_BASE64CHAR[i >> 2];
+            out[1] = (byte) S_BASE64CHAR[(i << 4) & 0x3f];
+            out[2] = (byte) S_BASE64PAD;
+            out[3] = (byte) S_BASE64PAD;
+            ostream.write(out, 0, 4);
+        } else if (rest == 2) {
+            int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
+            out[0] = (byte) S_BASE64CHAR[i >> 10];
+            out[1] = (byte) S_BASE64CHAR[(i >> 4) & 0x3f];
+            out[2] = (byte) S_BASE64CHAR[(i << 2) & 0x3f];
+            out[3] = (byte) S_BASE64PAD;
+            ostream.write(out, 0, 4);
+        }
+    }
+
+    /**
+     * Outputs base64 representation of the specified byte array to a character
+     * stream.
+     */
+    public static void encode(byte[] data, int off, int len, Writer writer)
+            throws IOException {
+        if (len <= 0)
+            return;
+        char[] out = new char[4];
+        int rindex = off;
+        int rest = len - off;
+        int output = 0;
+        while (rest >= 3) {
+            int i = ((data[rindex] & 0xff) << 16)
+                    + ((data[rindex + 1] & 0xff) << 8)
+                    + (data[rindex + 2] & 0xff);
+            out[0] = S_BASE64CHAR[i >> 18];
+            out[1] = S_BASE64CHAR[(i >> 12) & 0x3f];
+            out[2] = S_BASE64CHAR[(i >> 6) & 0x3f];
+            out[3] = S_BASE64CHAR[i & 0x3f];
+            writer.write(out, 0, 4);
+            rindex += 3;
+            rest -= 3;
+            output += 4;
+            if (output % 76 == 0)
+                writer.write("\n");
+        }
+        if (rest == 1) {
+            int i = data[rindex] & 0xff;
+            out[0] = S_BASE64CHAR[i >> 2];
+            out[1] = S_BASE64CHAR[(i << 4) & 0x3f];
+            out[2] = S_BASE64PAD;
+            out[3] = S_BASE64PAD;
+            writer.write(out, 0, 4);
+        } else if (rest == 2) {
+            int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
+            out[0] = S_BASE64CHAR[i >> 10];
+            out[1] = S_BASE64CHAR[(i >> 4) & 0x3f];
+            out[2] = S_BASE64CHAR[(i << 2) & 0x3f];
+            out[3] = S_BASE64PAD;
+            writer.write(out, 0, 4);
+        }
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java
new file mode 100644
index 0000000..2c65f8f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java
@@ -0,0 +1,83 @@
+/*
+* Copyright 2004,2005 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.axis2.util;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFault;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.RelatesTo;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.MessageReceiver;
+
+import java.util.HashMap;
+
+/**
+ * This is a MessageReceiver which is used on the client side to accept the
+ * messages (response) that come to the client. This correlates the incoming message to
+ * the related messages and makes a call to the appropriate callback.
+ */
+public class CallbackReceiver implements MessageReceiver {
+    public static String SERVICE_NAME = "ClientService";
+    private HashMap callbackStore;
+
+    public CallbackReceiver() {
+        callbackStore = new HashMap();
+    }
+
+    public void addCallback(String MsgID, Callback callback) {
+        callbackStore.put(MsgID, callback);
+    }
+
+    public void receive(MessageContext messageCtx) throws AxisFault {
+        RelatesTo relatesTO = messageCtx.getOptions().getRelatesTo();
+        String messageID = relatesTO.getValue();
+        Callback callback = (Callback) callbackStore.get(messageID);
+		AsyncResult result = new AsyncResult(messageCtx);
+
+		if (callback != null) {
+			try {
+				// check weather the result is a fault.
+				SOAPEnvelope envelope = result.getResponseEnvelope();
+				SOAPFault fault = envelope.getBody().getFault();
+
+				if (fault == null) {
+					// if there is not fault call the onComplete method
+					callback.onComplete(result);
+				} else {
+					// else call the on error method with the fault
+					AxisFault axisFault = new AxisFault(fault.getCode(), fault
+							.getReason(), fault.getNode(), fault.getRole(),
+							fault.getDetail());
+
+					callback.onError(axisFault);
+				}
+			} finally {
+				callback.setComplete(true);
+			}
+		} else {
+            throw new AxisFault("The Callback realtes to MessageID " + messageID + " is not found");
+        }
+    }
+
+    //to get the pending request
+    public HashMap getCallbackStore() {
+        return callbackStore;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOption.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOption.java
new file mode 100644
index 0000000..e3edaa2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOption.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2004,2005 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.axis2.util;
+
+import java.util.ArrayList;
+
+public class CommandLineOption implements CommandLineOptionConstants {
+
+    private String type;
+    private ArrayList optionValues;
+
+    public CommandLineOption(String type, String[] values) {
+        setOptionType(type);
+        ArrayList arrayList = new ArrayList(values.length);
+        for (int i = 0; i < values.length; i++) {
+            arrayList.add(values[i]);
+        }
+        this.optionValues = arrayList;
+    }
+
+    private void setOptionType(String type) {
+        //cater for the long options first
+        if (type.startsWith("--")) type = type.replaceFirst("--", "");
+        if (type.startsWith("-")) type = type.replaceFirst("-", "");
+
+        //we do not change the case of the option!
+
+        this.type = type;
+    }
+
+    /**
+     * @param type
+     */
+    public CommandLineOption(String type, ArrayList values) {
+        setOptionType(type);
+
+        if (null != values) {
+            this.optionValues = values;
+        }
+    }
+
+
+    /**
+     * @return Returns the type.
+     * @see CommandLineOptionConstants
+     */
+    public String getOptionType() {
+        return type;
+    }
+
+
+    /**
+     * @return Returns the optionValues.
+     */
+    public String getOptionValue() {
+        if (optionValues != null)
+            return (String) optionValues.get(0);
+        else
+            return null;
+    }
+
+
+
+    /**
+     * @return Returns the optionValues.
+     */
+    public ArrayList getOptionValues() {
+        return optionValues;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOptionConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOptionConstants.java
new file mode 100644
index 0000000..92a5d97
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOptionConstants.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2004,2005 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.axis2.util;
+
+public interface CommandLineOptionConstants {
+
+    interface WSDL2JavaConstants{
+
+        //short option constants
+        String WSDL_LOCATION_URI_OPTION = "uri";
+        String OUTPUT_LOCATION_OPTION = "o";
+        String SERVER_SIDE_CODE_OPTION = "ss";
+        String GENERATE_SERVICE_DESCRIPTION_OPTION = "sd";
+        String CODEGEN_ASYNC_ONLY_OPTION = "a";
+        String CODEGEN_SYNC_ONLY_OPTION = "s";
+        String PACKAGE_OPTION = "p";
+        String STUB_LANGUAGE_OPTION = "l";
+        String GENERATE_TEST_CASE_OPTION = "t";
+        String DATA_BINDING_TYPE_OPTION = "d";
+        String UNPACK_CLASSES_OPTION = "u";
+        String GENERATE_ALL_OPTION = "g";
+        String PORT_NAME_OPTION = "pn";
+        String SERVICE_NAME_OPTION = "sn";
+        String REPOSITORY_PATH_OPTION = "r";
+        String NAME_SPACE_TO_PACKAGE_OPTION = "ns2p";
+        String SERVER_SIDE_INTERFACE_OPTION = "ssi";
+        String EXTERNAL_MAPPING_OPTION = "em";
+        String WSDL_VERSION_OPTION = "wv";
+        String FLATTEN_FILES_OPTION = "f";
+        String UNWRAP_PARAMETERS = "uw";
+        String BACKWORD_COMPATIBILITY_OPTION = "b";
+        String SUPPRESS_PREFIXES_OPTION = "sp";
+        String SOURCE_FOLDER_NAME_OPTION = "S";
+        String RESOURCE_FOLDER_OPTION = "R";
+
+
+        //long option constants
+        String OUTPUT_LOCATION_OPTION_LONG = "output";
+        String SERVER_SIDE_CODE_OPTION_LONG = "server-side";
+        String GENERATE_SERVICE_DESCRIPTION_OPTION_LONG = "service-description";
+        String CODEGEN_ASYNC_ONLY_OPTION_LONG = "async";
+        String CODEGEN_SYNC_ONLY_OPTION_LONG = "sync";
+        String PACKAGE_OPTION_LONG = "package";
+        String STUB_LANGUAGE_OPTION_LONG = "language";
+        String GENERATE_TEST_CASE_OPTION_LONG = "test-case";
+        String DATA_BINDING_TYPE_OPTION_LONG = "databinding-method";
+        String UNPACK_CLASSES_OPTION_LONG = "unpack-classes";
+        String GENERATE_ALL_OPTION_LONG = "generate-all";
+        String PORT_NAME_OPTION_LONG = "port-name";
+        String SERVICE_NAME_OPTION_LONG = "service-name";
+        String INVALID_OPTION = "INVALID_OPTION";
+        String EXTRA_OPTIONTYPE_PREFIX = "E";
+        String REPOSITORY_PATH_OPTION_LONG = "repository-path";
+        String NAME_SPACE_TO_PACKAGE_OPTION_LONG = "namespace2package";
+        String SERVER_SIDE_INTERFACE_OPTION_LONG = "serverside-interface";
+        String EXTERNAL_MAPPING_OPTION_LONG = "external-mapping";
+        String WSDL_VERSION_OPTION_LONG = "wsdl-version";
+        String FLATTEN_FILES_OPTION_LONG = "flatten-files";
+        String UNWRAP_PARAMETERS_LONG = "unwrap-params";
+        String BACKWORD_COMPATIBILITY_OPTION_LONG = "backword-compatible";
+        String SUPPRESS_PREFIXES_OPTION_LONG = "suppress-prefixes";
+        String SOURCE_FOLDER_NAME_OPTION_LONG = "source-folder";
+        String RESOURCE_FOLDER_OPTION_LONG = "resource-folder";
+
+        String WSDL_VERSION_2 = "2.0";
+        String WSDL_VERSION_2_OPTIONAL = "2";
+        String WSDL_VERSION_1 = "1.1";
+
+
+    }
+
+    interface Java2WSDLConstants{
+        String OUTPUT_LOCATION_OPTION = "o";
+        String OUTPUT_FILENAME_OPTION = "of";
+        String CLASSNAME_OPTION = "cn";
+        String CLASSPATH_OPTION = "cp";
+        String TARGET_NAMESPACE_OPTION = "tn";
+        String TARGET_NAMESPACE_PREFIX_OPTION = "tp";
+        String SCHEMA_TARGET_NAMESPACE_OPTION = "stn";
+        String SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION = "stp";
+        String SERVICE_NAME_OPTION = "sn";
+
+        //long option constants
+        String OUTPUT_LOCATION_OPTION_LONG = "output";
+        String TARGET_NAMESPACE_OPTION_LONG = "targetNamespace";
+        String TARGET_NAMESPACE_PREFIX_OPTION_LONG = "targetNamespacePrefix";
+        String SERVICE_NAME_OPTION_LONG = "serviceName";
+        String CLASSNAME_OPTION_LONG = "className";
+        String CLASSPATH_OPTION_LONG = "classPath";
+        String OUTPUT_FILENAME_OPTION_LONG = "outputFilename";
+        String SCHEMA_TARGET_NAMESPACE_OPTION_LONG = "schemaTargetnamespace";
+        String SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION_LONG = "schemaTargetnamespacePrefix";
+
+
+    }
+
+    public static final String SOLE_INPUT = "SOLE_INPUT";
+
+
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOptionParser.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOptionParser.java
new file mode 100644
index 0000000..35f0a9d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/CommandLineOptionParser.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2004,2005 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.axis2.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class CommandLineOptionParser implements CommandLineOptionConstants {
+
+    //states
+    private static int STARTED = 0;
+    private static int NEW_OPTION = 1;
+    private static int SUB_PARAM_OF_OPTION = 2;
+
+    private Map commandLineOptions;
+
+    public CommandLineOptionParser(Map commandLineOptions) {
+        this.commandLineOptions = commandLineOptions;
+    }
+
+    public CommandLineOptionParser(String[] args) {
+        this.commandLineOptions = this.parse(args);
+
+    }
+
+    /**
+     * Return a list with <code>CommandLineOption</code> objects
+     *
+     * @param args
+     * @return CommandLineOption List
+     */
+    private Map parse(String[] args) {
+        Map commandLineOptions = new HashMap();
+
+        if (0 == args.length)
+            return commandLineOptions;
+
+        //State 0 means started
+        //State 1 means earlier one was a new -option
+        //State 2 means earlier one was a sub param of a -option
+
+        int state = STARTED;
+        ArrayList optionBundle = null;
+        String optionType = null;
+        CommandLineOption commandLineOption;
+
+        for (int i = 0; i < args.length; i++) {
+
+            if (args[i].startsWith("-")) {
+                if (STARTED == state) {
+                    // fresh one
+                    state = NEW_OPTION;
+                    optionType = args[i];
+                } else if (SUB_PARAM_OF_OPTION == state || NEW_OPTION == state) {
+                    // new one but old one should be saved
+                    commandLineOption =
+                            new CommandLineOption(optionType, optionBundle);
+                    commandLineOptions.put(commandLineOption.getOptionType(),
+                            commandLineOption);
+                    state = NEW_OPTION;
+                    optionType = args[i];
+                    optionBundle = null;
+
+                }
+            } else {
+                if (STARTED == state) {
+                    commandLineOption =
+                            new CommandLineOption(
+                                    CommandLineOptionConstants.SOLE_INPUT,
+                                    args);
+                    commandLineOptions.put(commandLineOption.getOptionType(),
+                            commandLineOption);
+                    return commandLineOptions;
+
+                } else if (NEW_OPTION == state) {
+                    optionBundle = new ArrayList();
+                    optionBundle.add(args[i]);
+                    state = SUB_PARAM_OF_OPTION;
+
+                } else if (SUB_PARAM_OF_OPTION == state) {
+                    optionBundle.add(args[i]);
+                }
+
+            }
+
+
+        }
+
+        commandLineOption = new CommandLineOption(optionType, optionBundle);
+        commandLineOptions.put(commandLineOption.getOptionType(), commandLineOption);
+        return commandLineOptions;
+    }
+
+    public Map getAllOptions() {
+        return this.commandLineOptions;
+    }
+
+    public List getInvalidOptions(OptionsValidator validator) {
+        List faultList = new ArrayList();
+        Iterator iterator = this.commandLineOptions.values().iterator();
+        while (iterator.hasNext()) {
+            CommandLineOption commandLineOption = ((CommandLineOption) (iterator
+                    .next()));
+            if (validator.isInvalid(commandLineOption)) {
+                faultList.add(commandLineOption);
+            }
+        }
+
+        return faultList;
+    }
+
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/DefaultEntityResolver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/DefaultEntityResolver.java
new file mode 100644
index 0000000..4391ad4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/DefaultEntityResolver.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2004,2005 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.axis2.util;
+
+import org.xml.sax.InputSource;
+
+public class DefaultEntityResolver implements org.xml.sax.EntityResolver {
+     public DefaultEntityResolver() {
+    }
+
+    public InputSource resolveEntity(String publicId, String systemId) {
+        return XMLUtils.getEmptyInputSource();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ExternalPolicySerializer.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ExternalPolicySerializer.java
new file mode 100644
index 0000000..aefff67
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ExternalPolicySerializer.java
@@ -0,0 +1,131 @@
+/*
+ * 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.axis2.util;
+
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
+import org.apache.neethi.Policy;
+
+public class ExternalPolicySerializer {
+
+    private List assertions2Filter = new ArrayList();
+
+    public void addAssertionToFilter(QName name) {
+        assertions2Filter.add(name);
+    }
+
+    public void setAssertionsToFilter(List assertions2Filter) {
+        this.assertions2Filter = assertions2Filter;
+    }
+    
+    public List getAssertionsToFilter() {
+        return assertions2Filter;
+    }
+    
+
+    public void serialize(Policy policy, OutputStream os) {
+
+        try {
+            XMLStreamWriter writer = XMLOutputFactory.newInstance()
+                    .createXMLStreamWriter(os);
+            policy = (Policy) policy.normalize(false);
+
+            String prefix = writer.getPrefix(Constants.ATTR_WSP);
+            String wsuPrefix = writer.getPrefix(Constants.URI_WSU_NS);
+
+            if (prefix == null) {
+                prefix = Constants.ATTR_WSP;
+                writer.setPrefix(prefix, Constants.URI_POLICY_NS);
+            }
+
+            if (wsuPrefix == null) {
+                // TODO move this 'wsu' value to Neethi2 constants
+                wsuPrefix = "wsu";
+                writer.setPrefix(wsuPrefix, Constants.URI_WSU_NS);
+            }
+
+            // write <wsp:Policy tag
+
+            writer.writeStartElement(prefix, Constants.ELEM_POLICY,
+                    Constants.URI_POLICY_NS);
+            // write xmlns:wsp=".."
+            writer.writeNamespace(prefix, Constants.URI_POLICY_NS);
+
+            String name = policy.getName();
+            if (name != null) {
+                // write Name=".."
+                writer.writeAttribute(Constants.ATTR_NAME, name);
+            }
+
+            String id = policy.getId();
+            if (id != null) {
+                // write wsu:Id=".."
+                writer.writeAttribute(Constants.ATTR_ID, id);
+            }
+
+            writer.writeStartElement(Constants.ATTR_WSP,
+                    Constants.ELEM_EXACTLYONE, Constants.URI_POLICY_NS);
+            // write <wsp:ExactlyOne>
+
+            List assertionList;
+
+            for (Iterator iterator = policy.getAlternatives(); iterator
+                    .hasNext();) {
+               
+                assertionList = (List) iterator.next();
+                
+                // write <wsp:All>
+                writer.writeStartElement(Constants.ATTR_WSP, Constants.ELEM_ALL, Constants.URI_POLICY_NS);
+                
+                Assertion assertion;
+
+                for (Iterator assertions = assertionList.iterator(); assertions
+                        .hasNext();) {
+                    assertion = (Assertion) assertions.next();
+                    if (assertions2Filter.contains(assertion.getName())) {
+                        // since this is an assertion to filter, we will not serialize this
+                        continue;
+                    }
+                    assertion.serialize(writer);
+                }
+                
+                // write </wsp:All>
+                writer.writeEndElement();
+            }
+            
+            // write </wsp:ExactlyOne>
+            writer.writeEndElement();
+            // write </wsp:Policy>
+            writer.writeEndElement();
+            
+            writer.flush();
+
+        } catch (Exception ex) {
+            
+            throw new RuntimeException(ex);
+
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/FileWriter.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/FileWriter.java
new file mode 100644
index 0000000..c3e0ac1
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/FileWriter.java
@@ -0,0 +1,70 @@
+/*

+ * Copyright 2004,2005 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.axis2.util;

+

+

+import java.io.File;

+import java.io.IOException;

+

+public class FileWriter {

+

+    /**

+     * Creates/ returns a file object

+     *

+     * @param rootLocation - Location to be written

+     * @param packageName  - package, can be '.' separated

+     * @param fileName     name of the file

+     * @param extension    type of the file, java, csharp, cpp etc

+     * @return the File that was created

+     * @throws IOException

+     * @throws Exception

+     */

+    public static File createClassFile(File rootLocation,

+                                       String packageName,

+                                       String fileName,

+                                       String extension) throws IOException,

+            Exception {

+        File returnFile = null;

+        File root = rootLocation;

+

+        if (packageName != null) {

+            String directoryNames[] = packageName.split("\\.");

+            File tempFile = null;

+            int length = directoryNames.length;

+            for (int i = 0; i < length; i++) {

+                tempFile = new File(root, directoryNames[i]);

+                root = tempFile;

+                if (!tempFile.exists()) {

+                    tempFile.mkdir();

+                }

+            }

+        }

+

+        if (!fileName.endsWith(extension)) {

+            fileName = fileName + extension;

+        }

+

+        returnFile = new File(root, fileName);

+

+        if (!returnFile.exists()) {

+            // returnFile.createNewFile();

+        }

+        return returnFile;

+    }

+

+

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/HostConfiguration.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/HostConfiguration.java
new file mode 100644
index 0000000..a43bc6b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/HostConfiguration.java
@@ -0,0 +1,38 @@
+package org.apache.axis2.util;

+

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+//to keep infor getting from axis2.xml

+

+public class HostConfiguration {

+    private String ip;

+    private int port;

+

+    public HostConfiguration(String ip, int port) {

+        this.ip = ip;

+        this.port = port;

+    }

+

+    public String getIp() {

+        return ip;

+    }

+

+    public int getPort() {

+        return port;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/JavaUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/JavaUtils.java
new file mode 100644
index 0000000..ee60cd9
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/JavaUtils.java
@@ -0,0 +1,441 @@
+/*
+* Copyright 2004,2005 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.axis2.util;
+
+import java.text.Collator;
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.List;
+import java.util.ArrayList;
+/**
+ * JavaUtils
+ */
+public class JavaUtils {
+    /**
+     * These are java keywords as specified at the following URL (sorted alphabetically).
+     * http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#229308
+     * Note that false, true, and null are not strictly keywords; they are literal values,
+     * but for the purposes of this array, they can be treated as literals.
+     *    ****** PLEASE KEEP THIS LIST SORTED IN ASCENDING ORDER ******
+     */
+    static final String keywords[] =
+            {
+                    "abstract",  "assert",       "boolean",    "break",      "byte",      "case",
+                    "catch",     "char",         "class",      "const",     "continue",
+                    "default",   "do",           "double",     "else",      "extends",
+                    "false",     "final",        "finally",    "float",     "for",
+                    "goto",      "if",           "implements", "import",    "instanceof",
+                    "int",       "interface",    "long",       "native",    "new",
+                    "null",      "package",      "private",    "protected", "public",
+                    "return",    "short",        "static",     "strictfp",  "super",
+                    "switch",    "synchronized", "this",       "throw",     "throws",
+                    "transient", "true",         "try",        "void",      "volatile",
+                    "while"
+            };
+
+    /** Collator for comparing the strings */
+    static final Collator englishCollator = Collator.getInstance(Locale.ENGLISH);
+
+    /** Use this character as suffix */
+    static final char keywordPrefix = '_';
+
+    /**
+     * Is this an XML punctuation character?
+     */
+    private static boolean isPunctuation(char c)
+    {
+        return '-' == c
+                || '.' == c
+                || ':' == c
+                || '\u00B7' == c
+                || '\u0387' == c
+                || '\u06DD' == c
+                || '\u06DE' == c;
+    } // isPunctuation
+
+    /**
+     * Checks if the input string is a valid java keyword.
+     * @return Returns boolean.
+     */
+    public static boolean isJavaKeyword(String keyword) {
+        return (Arrays.binarySearch(keywords, keyword, englishCollator) >= 0);
+    }
+
+    /**
+     * Turns a java keyword string into a non-Java keyword string.  (Right now
+     * this simply means appending an underscore.)
+     */
+    public static String makeNonJavaKeyword(String keyword){
+        return  keywordPrefix + keyword;
+    }
+
+    public static String xmlNameToJava(String name) {
+        // protect ourselves from garbage
+        if (name == null || name.length() == 0)
+            return name;
+
+        char[] nameArray = name.toCharArray();
+        int nameLen = name.length();
+        StringBuffer result = new StringBuffer(nameLen);
+        boolean wordStart = false;
+
+        // The mapping indicates to convert first character.
+        int i = 0;
+        while (i < nameLen
+                && (isPunctuation(nameArray[i])
+                || !Character.isJavaIdentifierStart(nameArray[i]))) {
+            i++;
+        }
+        if (i < nameLen) {
+            // Decapitalization code used to be here, but we use the
+            // Introspector function now after we filter out all bad chars.
+
+            result.append(nameArray[i]);
+            //wordStart = !Character.isLetter(nameArray[i]);
+            wordStart = !Character.isLetter(nameArray[i]) && nameArray[i] != "_".charAt(0);
+        }
+        else {
+            // The identifier cannot be mapped strictly according to
+            // JSR 101
+            if (Character.isJavaIdentifierPart(nameArray[0])) {
+                result.append("_").append(nameArray[0]);
+            }
+            else {
+                // The XML identifier does not contain any characters
+                // we can map to Java.  Using the length of the string
+                // will make it somewhat unique.
+                result.append("_").append(nameArray.length);
+            }
+        }
+
+        // The mapping indicates to skip over
+        // all characters that are not letters or
+        // digits.  The first letter/digit
+        // following a skipped character is
+        // upper-cased.
+        for (++i; i < nameLen; ++i) {
+            char c = nameArray[i];
+
+            // if this is a bad char, skip it and remember to capitalize next
+            // good character we encounter
+            if (isPunctuation(c) || !Character.isJavaIdentifierPart(c)) {
+                wordStart = true;
+                continue;
+            }
+            if (wordStart && Character.isLowerCase(c)) {
+                result.append(Character.toUpperCase(c));
+            }
+            else {
+                result.append(c);
+            }
+            // If c is not a character, but is a legal Java
+            // identifier character, capitalize the next character.
+            // For example:  "22hi" becomes "22Hi"
+            //wordStart = !Character.isLetter(c);
+            wordStart = !Character.isLetter(c) && c != "_".charAt(0);
+        }
+
+        // covert back to a String
+        String newName = result.toString();
+
+        // check for Java keywords
+        if (isJavaKeyword(newName))
+            newName = makeNonJavaKeyword(newName);
+
+        return newName;
+    } // xmlNameToJava
+
+    /**
+     * Capitalizes the first character of the name.
+     *
+     * @param name
+     * @return Returns String.
+     */
+    public static String capitalizeFirstChar(String name) {
+
+        if ((name == null) || name.length() == 0) {
+            return name;
+        }
+
+        char start = name.charAt(0);
+
+        if (Character.isLowerCase(start)) {
+            start = Character.toUpperCase(start);
+
+            return start + name.substring(1);
+        }
+
+        return name;
+    }    // capitalizeFirstChar
+
+    /**
+     * Tests the String 'value':
+     *   return 'false' if its 'false', '0', or 'no' - else 'true'
+     * 
+     * Follow in 'C' tradition of boolean values:
+     * false is specific (0), everything else is true;
+     */
+    public static final boolean isTrue(String value) {
+        return !isFalseExplicitly(value);
+    }
+
+    /**
+     * Tests the String 'value':
+     *   return 'true' if its 'true', '1', or 'yes' - else 'false'
+     */
+    public static final boolean isTrueExplicitly(String value) {
+        return value != null  &&
+               (value.equalsIgnoreCase("true")  ||
+                value.equals("1")  ||
+                value.equalsIgnoreCase("yes"));
+    }
+
+    /**
+     * Tests the Object 'value':
+     *   if its null, return default.
+     *   if its a Boolean, return booleanValue()
+     *   if its an Integer,  return 'false' if its '0' else 'true'
+     *   if its a String, return isTrueExplicitly((String)value).
+     *   All other types return 'true'
+     */
+    public static final boolean isTrueExplicitly(Object value, boolean defaultVal) {
+        if ( value == null ) return defaultVal;
+        if ( value instanceof Boolean ) {
+            return ((Boolean)value).booleanValue();
+        }
+        if ( value instanceof Integer ) {
+            return ((Integer)value).intValue() != 0;
+        }
+        if ( value instanceof String ) {
+            return isTrueExplicitly( (String)value );
+        }
+        return true;
+    }
+    
+    public static final boolean isTrueExplicitly(Object value) {
+        return isTrueExplicitly(value, false);
+    }
+
+    /**
+     * Tests the Object 'value':
+     *   if its null, return default.
+     *   if its a Boolean, return booleanValue()
+     *   if its an Integer,  return 'false' if its '0' else 'true'
+     *   if its a String, return 'false' if its 'false', 'no', or '0' - else 'true'
+     *   All other types return 'true'
+     */
+    public static final boolean isTrue(Object value, boolean defaultVal) {
+        return !isFalseExplicitly(value, !defaultVal);
+    }
+    
+    public static final boolean isTrue(Object value) {
+        return isTrue(value, false);
+    }
+    
+    /**
+     * Tests the String 'value':
+     *   return 'true' if its 'false', '0', or 'no' - else 'false'
+     * 
+     * Follow in 'C' tradition of boolean values:
+     * false is specific (0), everything else is true;
+     */
+    public static final boolean isFalse(String value) {
+        return isFalseExplicitly(value);
+    }
+
+    /**
+     * Tests the String 'value':
+     *   return 'true' if its null, 'false', '0', or 'no' - else 'false'
+     */
+    public static final boolean isFalseExplicitly(String value) {
+        return value == null  ||
+               value.equalsIgnoreCase("false")  ||
+               value.equals("0")  ||
+               value.equalsIgnoreCase("no");
+    }
+    
+    /**
+     * Tests the Object 'value':
+     *   if its null, return default.
+     *   if its a Boolean, return !booleanValue()
+     *   if its an Integer,  return 'true' if its '0' else 'false'
+     *   if its a String, return isFalseExplicitly((String)value).
+     *   All other types return 'false'
+     */
+    public static final boolean isFalseExplicitly(Object value, boolean defaultVal) {
+        if ( value == null ) return defaultVal;
+        if ( value instanceof Boolean ) {
+            return !((Boolean)value).booleanValue();
+        }
+        if ( value instanceof Integer ) {
+            return ((Integer)value).intValue() == 0;
+        }
+        if ( value instanceof String ) {
+            return isFalseExplicitly( (String)value );
+        }
+        return false;
+    }
+    
+    public static final boolean isFalseExplicitly(Object value) {
+        return isFalseExplicitly(value, true);
+    }
+
+    /**
+     * Tests the Object 'value':
+     *   if its null, return default.
+     *   if its a Boolean, return booleanValue()
+     *   if its an Integer,  return 'false' if its '0' else 'true'
+     *   if its a String, return 'false' if its 'false', 'no', or '0' - else 'true'
+     *   All other types return 'true'
+     */
+    public static final boolean isFalse(Object value, boolean defaultVal) {
+        return isFalseExplicitly(value, defaultVal);
+    }
+    
+    public static final boolean isFalse(Object value) {
+        return isFalse(value, true);
+    }
+
+    public static boolean isJavaId(String id) {
+        if (id == null || id.length() == 0 || isJavaKeyword(id))
+            return false;
+        if (!Character.isJavaIdentifierStart(id.charAt(0)))
+            return false;
+        for (int i=1; i<id.length(); i++)
+            if (!Character.isJavaIdentifierPart(id.charAt(i)))
+                return false;
+        return true;
+    }
+
+    /**
+     * An empty immutable <code>String</code> array.
+     */
+    public static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+    /**
+     * <p>Splits the provided text into an array, separator specified.
+     * This is an alternative to using StringTokenizer.</p>
+     * <p/>
+     * <p>The separator is not included in the returned String array.
+     * Adjacent separators are treated as one separator.</p>
+     * <p/>
+     * <p>A <code>null</code> input String returns <code>null</code>.</p>
+     * <p/>
+     * <pre>
+     * StringUtils.split(null, *)         = null
+     * StringUtils.split("", *)           = []
+     * StringUtils.split("a.b.c", '.')    = ["a", "b", "c"]
+     * StringUtils.split("a..b.c", '.')   = ["a", "b", "c"]
+     * StringUtils.split("a:b:c", '.')    = ["a:b:c"]
+     * StringUtils.split("a\tb\nc", null) = ["a", "b", "c"]
+     * StringUtils.split("a b c", ' ')    = ["a", "b", "c"]
+     * </pre>
+     *
+     * @param str           the String to parse, may be null
+     * @param separatorChar the character used as the delimiter,
+     *                      <code>null</code> splits on whitespace
+     * @return an array of parsed Strings, <code>null</code> if null String input
+     */
+    public static String[] split(String str, char separatorChar) {
+        if (str == null) {
+            return null;
+        }
+        int len = str.length();
+        if (len == 0) {
+            return EMPTY_STRING_ARRAY;
+        }
+        List list = new ArrayList();
+        int i = 0, start = 0;
+        boolean match = false;
+        while (i < len) {
+            if (str.charAt(i) == separatorChar) {
+                if (match) {
+                    list.add(str.substring(start, i));
+                    match = false;
+                }
+                start = ++i;
+                continue;
+            }
+            match = true;
+            i++;
+        }
+        if (match) {
+            list.add(str.substring(start, i));
+        }
+        return (String[]) list.toArray(new String[list.size()]);
+    }
+
+    public static Class getWrapperClass(Class primitive)
+    {
+        if (primitive == int.class)
+            return java.lang.Integer.class;
+        else if (primitive == short.class)
+            return java.lang.Short.class;
+        else if (primitive == boolean.class)
+            return java.lang.Boolean.class;
+        else if (primitive == byte.class)
+            return java.lang.Byte.class;
+        else if (primitive == long.class)
+            return java.lang.Long.class;
+        else if (primitive == double.class)
+            return java.lang.Double.class;
+        else if (primitive == float.class)
+            return java.lang.Float.class;
+        else if (primitive == char.class)
+            return java.lang.Character.class;
+        
+        return null;
+    }
+
+	/**
+	 * Scans the parameter string for the parameter search ignoring case when
+	 * comparing characters.
+	 *
+	 * @param string
+	 * @param search
+	 *            If test is empty -1 is always returned.
+	 * @return -1 if the string was not found or the index of the first matching
+	 *         character
+	 */
+	public static int indexOfIgnoreCase(final String string,
+			final String search) {
+		int index = -1;
+		final int stringLength = string.length();
+		final int testLength = search.length();
+		if (stringLength > 1 || testLength > 1) {
+			final char firstCharOfTest = Character.toLowerCase(search.charAt(0));
+			final int lastStringCharacterToCheck = stringLength - testLength + 1;
+
+			for (int i = 0; i < lastStringCharacterToCheck; i++) {
+				if (firstCharOfTest == Character.toLowerCase(string.charAt(i))) {
+					index = i;
+					for (int j = 1; j < testLength; j++) {
+						final char c = string.charAt(i + j);
+						final char otherChar = search.charAt(j);
+						if (Character.toLowerCase(c) != Character.toLowerCase(otherChar)) {
+							index = -1;
+							break;
+						}
+					}
+					if( -1 != index ){
+						break;
+					}
+				}
+			}
+		}
+		return index;
+	}
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Loader.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Loader.java
new file mode 100644
index 0000000..f871ee5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Loader.java
@@ -0,0 +1,160 @@
+/*
+ * 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.axis2.util;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+
+/**
+ * Loads resources (or images) from various sources.
+ */
+public class Loader {
+	private static final Log log = LogFactory.getLog(Loader.class);
+
+    /**
+     * Searches for <code>resource</code> in different
+     * places. The search order is as follows:
+     * <ol>
+     * <p><li>Search for <code>resource</code> using the thread context
+     * class loader under Java2. If that fails, search for
+     * <code>resource</code> using the class loader that loaded this
+     * class (<code>Loader</code>).
+     * <p><li>Try one last time with
+     * <code>ClassLoader.getSystemResource(resource)</code>, that is is
+     * using the system class loader in JDK 1.2 and virtual machine's
+     * built-in class loader in JDK 1.1.
+     * </ol>
+     * <p/>
+     *
+     * @param resource
+     * @return Returns URL
+     */
+    static public URL getResource(String resource) {
+        ClassLoader classLoader = null;
+        URL url = null;
+        try {
+            // We could not find resource. Ler us now try with the
+            // classloader that loaded this class.
+            classLoader = getTCL();
+            if (classLoader != null) {
+                log.debug("Trying to find [" + resource + "] using " + classLoader + " class loader.");
+                url = classLoader.getResource(resource);
+                if (url != null) {
+                    return url;
+                }
+            }
+        } catch (Throwable t) {
+            log.warn("Caught Exception while in Loader.getResource. This may be innocuous.", t);
+        }
+    
+        // Last ditch attempt: get the resource from the class path. It
+        // may be the case that clazz was loaded by the Extentsion class
+        // loader which the parent of the system class loader. Hence the
+        // code below.
+        log.debug("Trying to find [" + resource + "] using ClassLoader.getSystemResource().");
+        return ClassLoader.getSystemResource(resource);
+    }
+    
+
+    /**
+     * Gets the resource with the specified class loader.
+     *
+     * @param loader
+     * @param resource
+     * @return Returns URL.
+     * @throws ClassNotFoundException
+     */
+    static public URL getResource(ClassLoader loader, String resource) throws ClassNotFoundException {
+        URL url = null;
+        try {
+            if (loader != null) {
+                log.debug("Trying to find [" + resource + "] using " + loader + " class loader.");
+                url = loader.getResource(resource);
+                if (url != null) {
+                    return url;
+                }
+            }
+        } catch (Throwable t) {
+            log.warn("Caught Exception while in Loader.getResource. This may be innocuous.", t);
+        }
+        return getResource(resource);
+    }
+
+    /**
+     * Gets the thread context class loader.
+     *
+     * @return Returns ClassLoader.
+     * @throws IllegalAccessException
+     * @throws InvocationTargetException
+     */
+    static public ClassLoader getTCL() throws IllegalAccessException, InvocationTargetException {
+        return Thread.currentThread().getContextClassLoader();
+    }
+
+    /**
+     * Loads the specified classloader and then falls back to the loadClass.
+     *
+     * @param loader
+     * @param clazz
+     * @return Returns Class.
+     * @throws ClassNotFoundException
+     */
+    static public Class loadClass(ClassLoader loader, String clazz) throws ClassNotFoundException {
+        try {
+            if(loader != null) {
+                Class c = loader.loadClass(clazz);
+                if (c != null)
+                    return c;
+            }
+        } catch (Throwable e) {
+            log.debug(e);
+        }
+        return loadClass(clazz);
+    }
+
+    /**
+     * If running under JDK 1.2, loads the specified class using the
+     * <code>Thread</code> <code>contextClassLoader</code> . If that
+     * fails, try Class.forname.
+     * <p/>
+     *
+     * @param clazz
+     * @return Returns Class.
+     * @throws ClassNotFoundException
+     */
+    static public Class loadClass(String clazz) throws ClassNotFoundException {
+        try {
+            ClassLoader tcl = getTCL();	
+            
+            if(tcl != null) {
+                Class c = tcl.loadClass(clazz);
+                if (c != null)
+                    return c;
+            }
+        } catch (Throwable e) {
+            log.debug(e);
+        }
+        // we reached here because tcl was null or because of a
+        // security exception, or because clazz could not be loaded...
+        // In any case we now try one more time
+        return Class.forName(clazz);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/MultiParentClassLoader.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/MultiParentClassLoader.java
new file mode 100644
index 0000000..1dd1197
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/MultiParentClassLoader.java
@@ -0,0 +1,403 @@
+/**
+ *
+ * Copyright 2005 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.axis2.util;
+
+import java.beans.Introspector;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamClass;
+import java.lang.reflect.Field;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.URLStreamHandlerFactory;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * A MultiParentClassLoader is a simple extension of the URLClassLoader that simply changes the single parent class
+ * loader model to support a list of parent class loaders.  Each operation that accesses a parent, has been replaced
+ * with a operation that checks each parent in order.  This getParent method of this class will always return null,
+ * which may be interpreted by the calling code to mean that this class loader is a direct child of the system class
+ * loader.
+ *
+ * @version $Rev$ $Date$
+ */
+public class MultiParentClassLoader extends URLClassLoader {
+    private final ClassLoader[] parents;
+    private final boolean inverseClassLoading;
+    private final String[] hiddenClasses;
+    private final String[] nonOverridableClasses;
+    private final String[] hiddenResources;
+    private final String[] nonOverridableResources;
+    private boolean destroyed = false;
+
+    /**
+     * Creates a named class loader with no parents.
+     *
+     * @param urls the urls from which this class loader will classes and resources
+     */
+    public MultiParentClassLoader(URL[] urls) {
+        super(urls);
+        parents = new ClassLoader[]{ClassLoader.getSystemClassLoader()};
+        inverseClassLoading = false;
+        hiddenClasses = new String[0];
+        nonOverridableClasses = new String[0];
+        hiddenResources = new String[0];
+        nonOverridableResources = new String[0];
+    }
+
+
+    /**
+     * Creates a named class loader as a child of the specified parent.
+     *
+     * @param urls   the urls from which this class loader will classes and resources
+     * @param parent the parent of this class loader
+     */
+    public MultiParentClassLoader(URL[] urls, ClassLoader parent) {
+        this(urls, new ClassLoader[]{parent});
+    }
+
+    public MultiParentClassLoader(URL[] urls, ClassLoader parent, boolean inverseClassLoading, String[] hiddenClasses, String[] nonOverridableClasses) {
+        this(urls, new ClassLoader[]{parent}, inverseClassLoading, hiddenClasses, nonOverridableClasses);
+    }
+
+    /**
+     * Creates a named class loader as a child of the specified parent and using the specified URLStreamHandlerFactory
+     * for accessing the urls..
+     *
+     * @param urls    the urls from which this class loader will classes and resources
+     * @param parent  the parent of this class loader
+     * @param factory the URLStreamHandlerFactory used to access the urls
+     */
+    public MultiParentClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) {
+        this(urls, new ClassLoader[]{parent}, factory);
+    }
+
+    /**
+     * Creates a named class loader as a child of the specified parents.
+     *
+     * @param urls    the urls from which this class loader will classes and resources
+     * @param parents the parents of this class loader
+     */
+    public MultiParentClassLoader(URL[] urls, ClassLoader[] parents) {
+        super(urls);
+        this.parents = copyParents(parents);
+        inverseClassLoading = false;
+        hiddenClasses = new String[0];
+        nonOverridableClasses = new String[0];
+        hiddenResources = new String[0];
+        nonOverridableResources = new String[0];
+    }
+
+    public MultiParentClassLoader(URL[] urls, ClassLoader[] parents, boolean inverseClassLoading, Collection hiddenClasses, Collection nonOverridableClasses) {
+        this(urls, parents, inverseClassLoading, (String[]) hiddenClasses.toArray(new String[hiddenClasses.size()]), (String[]) nonOverridableClasses.toArray(new String[nonOverridableClasses.size()]));
+    }
+
+    public MultiParentClassLoader(URL[] urls, ClassLoader[] parents, boolean inverseClassLoading, String[] hiddenClasses, String[] nonOverridableClasses) {
+        super(urls);
+        this.parents = copyParents(parents);
+        this.inverseClassLoading = inverseClassLoading;
+        this.hiddenClasses = hiddenClasses;
+        this.nonOverridableClasses = nonOverridableClasses;
+        hiddenResources = toResources(hiddenClasses);
+        nonOverridableResources = toResources(nonOverridableClasses);
+    }
+
+    private String[] toResources(String[] classes) {
+        String[] resources = new String[classes.length];
+        for (int i = 0; i < classes.length; i++) {
+            String className = classes[i];
+            resources[i] = className.replace('.', '/');
+        }
+        return resources;
+    }
+
+    /**
+     * Creates a named class loader as a child of the specified parents and using the specified URLStreamHandlerFactory
+     * for accessing the urls..
+     *
+     * @param urls    the urls from which this class loader will classes and resources
+     * @param parents the parents of this class loader
+     * @param factory the URLStreamHandlerFactory used to access the urls
+     */
+    public MultiParentClassLoader(URL[] urls, ClassLoader[] parents, URLStreamHandlerFactory factory) {
+        super(urls, null, factory);
+        this.parents = copyParents(parents);
+        inverseClassLoading = false;
+        hiddenClasses = new String[0];
+        nonOverridableClasses = new String[0];
+        hiddenResources = new String[0];
+        nonOverridableResources = new String[0];
+    }
+
+    private static ClassLoader[] copyParents(ClassLoader[] parents) {
+        ClassLoader[] newParentsArray = new ClassLoader[parents.length];
+        for (int i = 0; i < parents.length; i++) {
+            ClassLoader parent = parents[i];
+            if (parent == null) {
+                throw new RuntimeException("parent[" + i + "] is null");
+            }
+            newParentsArray[i] = parent;
+        }
+        return newParentsArray;
+    }
+
+    /**
+     * Gets the parents of this class loader.
+     *
+     * @return the parents of this class loader
+     */
+    public ClassLoader[] getParents() {
+        return parents;
+    }
+
+    public void addURL(URL url) {
+        // todo this needs a security check
+        super.addURL(url);
+    }
+
+    protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
+        //
+        // Check if class is in the loaded classes cache
+        //
+        Class cachedClass = findLoadedClass(name);
+        if (cachedClass != null) {
+            return resolveClass(cachedClass, resolve);
+        }
+
+        //
+        // if we are using inverse class loading, check local urls first
+        //
+        if (inverseClassLoading && !isDestroyed() && !isNonOverridableClass(name)) {
+            try {
+                Class clazz = findClass(name);
+                return resolveClass(clazz, resolve);
+            } catch (ClassNotFoundException ignored) {
+            }
+        }
+
+        //
+        // Check parent class loaders
+        //
+        if (!isHiddenClass(name)) {
+            for (int i = 0; i < parents.length; i++) {
+                ClassLoader parent = parents[i];
+                try {
+                    Class clazz = parent.loadClass(name);
+                    return resolveClass(clazz, resolve);
+                } catch (ClassNotFoundException ignored) {
+                    // this parent didn't have the class; try the next one
+                }
+            }
+        }
+
+        //
+        // if we are not using inverse class loading, check local urls now
+        //
+        // don't worry about excluding non-overridable classes here... we
+        // have alredy checked he parent and the parent didn't have the
+        // class, so we can override now
+        if (!isDestroyed()) {
+            try {
+                Class clazz = findClass(name);
+                return resolveClass(clazz, resolve);
+            } catch (ClassNotFoundException ignored) {
+            }
+        }
+
+        throw new ClassNotFoundException(name);
+    }
+
+    private boolean isNonOverridableClass(String name) {
+        for (int i = 0; i < nonOverridableClasses.length; i++) {
+            if (name.startsWith(nonOverridableClasses[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isHiddenClass(String name) {
+        for (int i = 0; i < hiddenClasses.length; i++) {
+            if (name.startsWith(hiddenClasses[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private Class resolveClass(Class clazz, boolean resolve) {
+        if (resolve) {
+            resolveClass(clazz);
+        }
+        return clazz;
+    }
+
+    public URL getResource(String name) {
+        if (isDestroyed()) {
+            return null;
+        }
+
+        //
+        // if we are using inverse class loading, check local urls first
+        //
+        if (inverseClassLoading && !isDestroyed() && !isNonOverridableResource(name)) {
+            URL url = findResource(name);
+            if (url != null) {
+                return url;
+            }
+        }
+
+        //
+        // Check parent class loaders
+        //
+        if (!isHiddenResource(name)) {
+            for (int i = 0; i < parents.length; i++) {
+                ClassLoader parent = parents[i];
+                URL url = parent.getResource(name);
+                if (url != null) {
+                    return url;
+                }
+            }
+        }
+
+        //
+        // if we are not using inverse class loading, check local urls now
+        //
+        // don't worry about excluding non-overridable resources here... we
+        // have alredy checked he parent and the parent didn't have the
+        // resource, so we can override now
+        if (!isDestroyed()) {
+            // parents didn't have the resource; attempt to load it from my urls
+            return findResource(name);
+        }
+
+        return null;
+    }
+
+    public Enumeration findResources(String name) throws IOException {
+        if (isDestroyed()) {
+            return Collections.enumeration(Collections.EMPTY_SET);
+        }
+
+        List resources = new ArrayList();
+
+        //
+        // if we are using inverse class loading, add the resources from local urls first
+        //
+        if (inverseClassLoading && !isDestroyed()) {
+            List myResources = Collections.list(super.findResources(name));
+            resources.addAll(myResources);
+        }
+
+        //
+        // Add parent resources
+        //
+        for (int i = 0; i < parents.length; i++) {
+            ClassLoader parent = parents[i];
+            List parentResources = Collections.list(parent.getResources(name));
+            resources.addAll(parentResources);
+        }
+
+        //
+        // if we are not using inverse class loading, add the resources from local urls now
+        //
+        if (!inverseClassLoading && !isDestroyed()) {
+            List myResources = Collections.list(super.findResources(name));
+            resources.addAll(myResources);
+        }
+
+        return Collections.enumeration(resources);
+    }
+
+    private boolean isNonOverridableResource(String name) {
+        for (int i = 0; i < nonOverridableResources.length; i++) {
+            if (name.startsWith(nonOverridableResources[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isHiddenResource(String name) {
+        for (int i = 0; i < hiddenResources.length; i++) {
+            if (name.startsWith(hiddenResources[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public String toString() {
+        return "[" + getClass().getName() + "]";
+    }
+
+    public synchronized boolean isDestroyed() {
+        return destroyed;
+    }
+
+    public void destroy() {
+        synchronized(this) {
+            if (destroyed) return;
+            destroyed = true;
+        }
+
+        LogFactory.release(this);
+//        clearSoftCache(ObjectInputStream.class, "subclassAudits");
+//        clearSoftCache(ObjectOutputStream.class, "subclassAudits");
+//        clearSoftCache(ObjectStreamClass.class, "localDescs");
+//        clearSoftCache(ObjectStreamClass.class, "reflectors");
+
+        // The beanInfoCache in java.beans.Introspector will hold on to Classes which
+        // it has introspected. If we don't flush the cache, we may run out of
+        // Permanent Generation space.
+        Introspector.flushCaches();
+    }
+
+//    private static final Object lock = new Object();
+//    private static boolean clearSoftCacheFailed = false;
+//
+//    private static void clearSoftCache(Class clazz, String fieldName) {
+//        Map cache = null;
+//        try {
+//            Field f = clazz.getDeclaredField(fieldName);
+//            f.setAccessible(true);
+//            cache = (Map) f.get(null);
+//        } catch (Throwable e) {
+//            synchronized (lock) {
+//                if (!clearSoftCacheFailed) {
+//                    clearSoftCacheFailed = true;
+//                    LogFactory.getLog(ConfigurationClassLoader.class).error("Unable to clear SoftCache field " + fieldName + " in class " + clazz);
+//                }
+//            }
+//        }
+//
+//        if (cache != null) {
+//            synchronized (cache) {
+//                cache.clear();
+//            }
+//        }
+//    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/OptionsParser.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/OptionsParser.java
new file mode 100644
index 0000000..78e0e12
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/OptionsParser.java
@@ -0,0 +1,271 @@
+/*

+* 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.axis2.util;

+

+/**

+ * General purpose command line options parser.

+ * If this is used outside of Axis just remove the Axis specific sections.

+ */

+

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.net.MalformedURLException;

+import java.util.ArrayList;

+import java.util.Vector;

+

+public class OptionsParser {

+	private static final Log log = LogFactory.getLog(OptionsParser.class);

+    String args[] = null;

+    Vector usedArgs = null;

+

+    /**

+     * Constructor - just pass in the <b>args</b> from the command line.

+     */

+    public OptionsParser(String _args[]) throws MalformedURLException {

+        if (_args == null) {

+            _args = new String[]{};

+        }

+

+        args = _args;

+        usedArgs = null;

+        getUser();

+        getPassword();

+    }

+

+    public String getPassword() {

+        return (isValueSet('w'));

+    }

+

+    /**

+     * This returns an array of unused args - these are the non-option

+     * args from the command line.

+     */

+    public String[] getRemainingArgs() {

+        ArrayList al = null;

+        int loop;

+

+        for (loop = 0; loop < args.length; loop++) {

+            if ((args[loop] == null) || (args[loop].length() == 0)) {

+                continue;

+            }

+

+            if (args[loop].charAt(0) == '-') {

+                continue;

+            }

+

+            if (al == null) {

+                al = new ArrayList();

+            }

+

+            al.add(args[loop]);

+        }

+

+        if (al == null) {

+            return (null);

+        }

+

+        String a[] = new String[al.size()];

+

+        for (loop = 0; loop < al.size(); loop++) {

+            a[loop] = (String) al.get(loop);

+        }

+

+        return (a);

+    }

+

+    /**

+     * This just returns a string with the unprocessed flags - mainly

+     * for error reporting - so you can report the unknown flags.

+     */

+    public String getRemainingFlags() {

+        StringBuffer sb = null;

+        int loop;

+

+        for (loop = 0; loop < args.length; loop++) {

+            if ((args[loop] == null) || (args[loop].length() == 0)) {

+                continue;

+            }

+

+            if (args[loop].charAt(0) != '-') {

+                continue;

+            }

+

+            if (sb == null) {

+                sb = new StringBuffer();

+            }

+

+            sb.append(args[loop].substring(1));

+        }

+

+        return ((sb == null)

+                ? null

+                : sb.toString());

+    }

+

+    public String getUser() {

+        return (isValueSet('u'));

+    }

+

+    /**

+     * Returns an int specifying the number of times that the flag was

+     * specified on the command line.  Once this flag is looked for you

+     * must save the result because if you call it again for the same

+     * flag you'll get zero.

+     */

+    public int isFlagSet(char optChar) {

+        int value = 0;

+        int loop;

+        int i;

+

+        for (loop = 0; (usedArgs != null) && (loop < usedArgs.size()); loop++) {

+            String arg = (String) usedArgs.elementAt(loop);

+

+            if (arg.charAt(0) != '-') {

+                continue;

+            }

+

+            for (i = 0; i < arg.length(); i++) {

+                if (arg.charAt(i) == optChar) {

+                    value++;

+                }

+            }

+        }

+

+        for (loop = 0; loop < args.length; loop++) {

+            if ((args[loop] == null) || (args[loop].length() == 0)) {

+                continue;

+            }

+

+            if (args[loop].charAt(0) != '-') {

+                continue;

+            }

+

+            while ((args[loop] != null) && (i = args[loop].indexOf(optChar)) != -1) {

+                args[loop] = args[loop].substring(0, i) + args[loop].substring(i + 1);

+

+                if (args[loop].length() == 1) {

+                    args[loop] = null;

+                }

+

+                value++;

+

+                if (usedArgs == null) {

+                    usedArgs = new Vector();

+                }

+

+                usedArgs.add("-" + optChar);

+            }

+        }

+

+        return (value);

+    }

+

+    /**

+     * Returns a string (or null) specifying the value for the passed

+     * option.  If the option isn't there then null is returned.  The

+     * option's value can be specified one of two ways:

+     * -x value

+     * -xvalue

+     * Note that:  -ax value

+     * is not value (meaning flag 'a' followed by option 'x'.

+     * Options with values must be the first char after the '-'.

+     * If the option is specified more than once then the last one wins.

+     */

+    public String isValueSet(char optChar) {

+        String value = null;

+        int loop;

+        int i;

+

+        for (loop = 0; (usedArgs != null) && (loop < usedArgs.size()); loop++) {

+            String arg = (String) usedArgs.elementAt(loop);

+

+            if ((arg.charAt(0) != '-') || (arg.charAt(1) != optChar)) {

+                continue;

+            }

+

+            value = arg.substring(2);

+

+            if (loop + 1 < usedArgs.size()) {

+                value = (String) usedArgs.elementAt(++loop);

+            }

+        }

+

+        for (loop = 0; loop < args.length; loop++) {

+            if ((args[loop] == null) || (args[loop].length() == 0)) {

+                continue;

+            }

+

+            if (args[loop].charAt(0) != '-') {

+                continue;

+            }

+

+            i = args[loop].indexOf(optChar);

+

+            if (i != 1) {

+                continue;

+            }

+

+            if (i != args[loop].length() - 1) {

+

+                // Not at end of arg, so use rest of arg as value

+                value = args[loop].substring(i + 1);

+                args[loop] = args[loop].substring(0, i);

+            } else {

+

+                // Remove the char from the current arg

+                args[loop] = args[loop].substring(0, i);

+

+                // Nothing after char so use next arg

+                if ((loop + 1 < args.length) && (args[loop + 1] != null)) {

+

+                    // Next arg is there and non-null

+                    if (args[loop + 1].charAt(0) != '-') {

+                        value = args[loop + 1];

+                        args[loop + 1] = null;

+                    }

+                } else {

+

+                    // Next is null or not there - do nothing

+                    // value = null ;

+                }

+            }

+

+            if (args[loop].length() == 1) {

+                args[loop] = null;

+            }

+

+            // For now, keep looping to get that last on there

+            // break ;

+        }

+

+        if (value != null) {

+            if (usedArgs == null) {

+                usedArgs = new Vector();

+            }

+

+            usedArgs.add("-" + optChar);

+

+            if (value.length() > 0) {

+                usedArgs.add(value);

+            }

+        }

+

+        return (value);

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/OptionsValidator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/OptionsValidator.java
new file mode 100644
index 0000000..624844d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/OptionsValidator.java
@@ -0,0 +1,24 @@
+package org.apache.axis2.util;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * An interface for the options validator. This acts as the input for the commandlineOptions parser

+ */

+public interface OptionsValidator {

+

+    public boolean isInvalid(CommandLineOption option);

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/PolicyUtil.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/PolicyUtil.java
new file mode 100644
index 0000000..bc1e585
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/PolicyUtil.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2004,2005 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.axis2.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
+import org.apache.neethi.Constants;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyComponent;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.PolicyReference;
+import org.apache.woden.internal.util.dom.DOM2Writer;
+import org.w3c.dom.Element;
+
+public class PolicyUtil {
+
+    public static String getSafeString(String unsafeString) {
+        StringBuffer sbuf = new StringBuffer();
+
+        char[] chars = unsafeString.toCharArray();
+
+        for (int i = 0; i < chars.length; i++) {
+            char c = chars[i];
+
+            switch (c) {
+            case '\\':
+                sbuf.append('\\');
+                sbuf.append('\\');
+                break;
+            case '"':
+                sbuf.append('\\');
+                sbuf.append('"');
+                break;
+            case '\n':
+                sbuf.append('\\');
+                sbuf.append('n');
+                break;
+            case '\r':
+                sbuf.append('\\');
+                sbuf.append('r');
+                break;
+            default:
+                sbuf.append(c);
+            }
+        }
+
+        return sbuf.toString();
+    }
+
+    public static OMElement getPolicyComponentAsOMElement(
+            PolicyComponent policyComponent,
+            ExternalPolicySerializer externalPolicySerializer)
+            throws XMLStreamException, FactoryConfigurationError {
+        
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+        if (policyComponent instanceof Policy) {
+            externalPolicySerializer.serialize((Policy) policyComponent, baos);
+
+        } else {
+            XMLStreamWriter writer = XMLOutputFactory.newInstance()
+                    .createXMLStreamWriter(baos);
+            policyComponent.serialize(writer);
+            writer.flush();
+        }
+
+        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+        return OMXMLBuilderFactory.createStAXOMBuilder(
+                OMAbstractFactory.getOMFactory(),
+                XMLInputFactory.newInstance().createXMLStreamReader(bais))
+                .getDocumentElement();
+
+    }
+
+    public static OMElement getPolicyComponentAsOMElement(
+            PolicyComponent component) throws XMLStreamException,
+            FactoryConfigurationError {
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        XMLStreamWriter writer = XMLOutputFactory.newInstance()
+                .createXMLStreamWriter(baos);
+
+        component.serialize(writer);
+        writer.flush();
+
+        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+        return OMXMLBuilderFactory.createStAXOMBuilder(
+                OMAbstractFactory.getOMFactory(),
+                XMLInputFactory.newInstance().createXMLStreamReader(bais))
+                .getDocumentElement();
+    }
+
+    public static PolicyComponent getPolicyComponentFromOMElement(
+            OMElement policyComponent) throws IllegalArgumentException {
+
+        if (policyComponent instanceof Policy) {
+            return PolicyEngine.getPolicy(policyComponent);
+
+        } else if (policyComponent instanceof PolicyReference) {
+            return PolicyEngine.getPolicyReference(policyComponent);
+
+        } else {
+            throw new IllegalArgumentException(
+                    "Agrument is neither a <wsp:Policy> nor a <wsp:PolicyReference> element");
+        }
+    }
+
+    public static PolicyComponent getPolicyComponent(Element element) {
+
+        String xmlString;
+        ByteArrayInputStream bais;
+
+        if (Constants.URI_POLICY_NS.equals(element.getNamespaceURI())) {
+
+            if (Constants.ELEM_POLICY.equals(element.getLocalName())) {
+                xmlString = DOM2Writer.nodeToString(element);
+                bais = new ByteArrayInputStream(xmlString.getBytes());
+
+                return PolicyEngine.getPolicy(bais);
+
+            } else if (Constants.ELEM_POLICY_REF.equals(element.getLocalName())) {
+                xmlString = DOM2Writer.nodeToString(element);
+                bais = new ByteArrayInputStream(xmlString.getBytes());
+
+                return PolicyEngine.getPolicyReferene(bais);
+            }
+        }
+
+        throw new IllegalArgumentException(
+                "Agrument is neither a <wsp:Policy> nor a <wsp:PolicyReference> element");
+    }
+
+    public static String policyComponentToString(PolicyComponent policyComponent)
+            throws XMLStreamException, FactoryConfigurationError {
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        XMLStreamWriter writer = XMLOutputFactory.newInstance()
+                .createXMLStreamWriter(baos);
+
+        policyComponent.serialize(writer);
+        writer.flush();
+
+        return baos.toString();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/PrettyPrinter.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/PrettyPrinter.java
new file mode 100644
index 0000000..692403d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/PrettyPrinter.java
@@ -0,0 +1,79 @@
+/*
+* Copyright 2004,2005 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.axis2.util;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+/**
+ * Tidies up the java source code using Jalopy.
+ * This is used by both ADB and Codegen hence needs to be in the
+ * commons rather than a specific module
+ */
+public class PrettyPrinter {
+	private static final Log log = LogFactory.getLog(PrettyPrinter.class);
+
+
+    /**
+     * Pretty prints contents of the java source file.
+     *
+     * @param file
+     */
+    public static void prettify(File file) {
+        try {
+            Loader.loadClass("org.apache.log4j.Priority");
+                    
+            // Create an instance of the Jalopy bean
+            Class clazz = Loader.loadClass("de.hunsicker.jalopy.Jalopy");
+            Object prettifier = clazz.newInstance();
+
+            // Set the input file
+            Method input = clazz.getMethod("setInput", new Class[]{File.class});
+            input.invoke(prettifier, new Object[]{file});
+
+            // Set the output file
+            Method output = clazz.getMethod("setOutput", new Class[]{File.class});
+            output.invoke(prettifier, new Object[]{file});
+
+            Class clazz2 = Loader.loadClass("de.hunsicker.jalopy.storage.Convention");
+            Method instance = clazz2.getMethod("getInstance", new Class[]{});
+            Object settings = instance.invoke(null, new Object[]{});
+
+            Class clazz3 = Loader.loadClass("de.hunsicker.jalopy.storage.ConventionKeys");
+            Field field = clazz3.getField("COMMENT_JAVADOC_PARSE");
+            Object key = field.get(null);
+            
+            Method put = clazz2.getMethod("put", new Class[]{ key.getClass(), String.class});
+            put.invoke(settings, new Object[]{key, "true"});
+
+            // format and overwrite the given input file
+            Method format = clazz.getMethod("format", new Class[]{});
+            format.invoke(prettifier, new Object[]{});
+            log.debug("Pretty printed file : " + file);
+        } catch (ClassNotFoundException e) {
+            log.debug("Jalopy/Log4j not found - unable to pretty print " + file);
+        } catch (Exception e) {
+            log.warn("Exception occurred while trying to pretty print file " + file, e);
+        } catch (Throwable t) {
+            log.debug("Exception occurred while trying to pretty print file " + file, t);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/SchemaUtil.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/SchemaUtil.java
new file mode 100644
index 0000000..68920bd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/SchemaUtil.java
@@ -0,0 +1,161 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaParticle;
+import org.apache.ws.commons.schema.XmlSchemaSequence;
+import org.apache.ws.commons.schema.XmlSchemaType;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
+import org.apache.ws.commons.schema.XmlSchemaImport;
+import org.apache.ws.commons.schema.XmlSchemaInclude;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.xml.namespace.QName;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.HashMap;
+/**
+ * 
+ */
+public class SchemaUtil {
+
+    public static XmlSchema[] getAllSchemas(XmlSchema schema) {
+        HashMap map = new HashMap();
+        traverseSchemas(schema, map);
+        return (XmlSchema[]) map.values().toArray(new XmlSchema[map.values().size()]);
+    }
+
+    private static void traverseSchemas(XmlSchema schema, HashMap map) {
+        String key = schema.getTargetNamespace() + ":" + schema.getSourceURI();
+        if (map.containsKey(key)) {
+            return;
+        }
+        map.put(key, schema);
+
+        XmlSchemaObjectCollection includes = schema.getIncludes();
+        if (includes != null) {
+            Iterator tempIterator = includes.getIterator();
+            while (tempIterator.hasNext()) {
+                Object o = tempIterator.next();
+                if (o instanceof XmlSchemaImport) {
+                    XmlSchema schema1 = ((XmlSchemaImport) o).getSchema();
+                    if (schema1 != null) traverseSchemas(schema1, map);
+                }
+                if (o instanceof XmlSchemaInclude) {
+                    XmlSchema schema1 = ((XmlSchemaInclude) o).getSchema();
+                    if (schema1 != null) traverseSchemas(schema1, map);
+                }
+            }
+        }
+    }
+
+    /**
+     * This method is designed for REST handling. Parameter of a REST request comes in the URL or in
+     * the body of the message (if it is POST). Since those parameters may not be in the proper order,
+     * we need to retrieve the schema of the operation and construct the message according to that
+     * from the parameters received as the REST request.
+     * This method will carry out that function and it is assumed that this method is called in that scenarios only.
+     *
+     * @param msgCtxt
+     * @param request
+     * @param xmlSchemaElement
+     * @param soapFactory
+     * @throws AxisFault
+     */
+    public static SOAPEnvelope handleMediaTypeURLEncoded(MessageContext msgCtxt,
+                                                         HttpServletRequest request,
+                                                         XmlSchemaElement xmlSchemaElement,
+                                                         SOAPFactory soapFactory) throws AxisFault {
+
+        Map requestParameterMap = request.getParameterMap();
+        SOAPEnvelope soapEnvelope = soapFactory.getDefaultEnvelope();
+        SOAPBody body = soapEnvelope.getBody();
+
+        if (xmlSchemaElement == null) {
+            // if there is no schema its piece of cake !! add these to the soap body in any order you like
+            OMElement bodyFirstChild = soapFactory.createOMElement(msgCtxt.getAxisOperation().getName(), body);
+
+            // first add the parameters in the URL
+            if (requestParameterMap != null) {
+                Iterator requestParamMapIter = requestParameterMap.keySet().iterator();
+                while (requestParamMapIter.hasNext()) {
+                    String key = (String) requestParamMapIter.next();
+
+                    String value = (String) ((Object[]) requestParameterMap.get(key))[0];
+                    soapFactory.createOMElement(key, null, bodyFirstChild).setText(value);
+                }
+            }
+        } else {
+
+            String targetNamespace = xmlSchemaElement.getQName().getNamespaceURI();
+            QName bodyFirstChildQName;
+            if (targetNamespace != null && !"".equals(targetNamespace)) {
+                bodyFirstChildQName = new QName(targetNamespace, xmlSchemaElement.getName());
+            } else {
+                bodyFirstChildQName = new QName(xmlSchemaElement.getName());
+            }
+            OMElement bodyFirstChild = soapFactory.createOMElement(bodyFirstChildQName, body);
+
+            if (org.apache.axis2.transport.http.HTTPConstants.HTTP_METHOD_POST.equals(request.getMethod())
+                || (org.apache.axis2.transport.http.HTTPConstants.HTTP_METHOD_GET.equals(request.getMethod()))) {
+                XmlSchemaType schemaType = xmlSchemaElement.getSchemaType();
+                if (schemaType instanceof XmlSchemaComplexType) {
+                    XmlSchemaComplexType complexType = ((XmlSchemaComplexType) schemaType);
+                    XmlSchemaParticle particle = complexType.getParticle();
+                    if (particle instanceof XmlSchemaSequence) {
+                        XmlSchemaSequence xmlSchemaSequence = (XmlSchemaSequence) particle;
+                        Iterator iterator = xmlSchemaSequence.getItems().getIterator();
+
+                        Map parameterMap = request.getParameterMap();
+
+                        while (iterator.hasNext()) {
+                            XmlSchemaElement innerElement = (XmlSchemaElement) iterator.next();
+                            QName qName = innerElement.getQName();
+                            String name = qName != null ? qName.getLocalPart() : innerElement.getName();
+                            String[] parameterValuesArray = (String[]) parameterMap.get(name);
+                            if (parameterValuesArray != null &&
+                                !"".equals(parameterValuesArray[0]) && parameterValuesArray[0] != null)
+                            {
+                                OMNamespace ns = (qName == null || qName.getNamespaceURI() == null || qName.getNamespaceURI().length() == 0) ?
+                                        null :
+                                        soapFactory.createOMNamespace(qName.getNamespaceURI(), null);
+                                soapFactory.createOMElement(name, ns,
+                                                            bodyFirstChild).setText(parameterValuesArray[0]);
+                            } else {
+                                throw new AxisFault("Required element " + qName +
+                                                    " defined in the schema can not be found in the request");
+                            }
+                        }
+                    }
+                }
+            } else {
+                throw new AxisFault("According to WSDL 2.0 rules, we support complex types only");
+            }
+
+        }
+        return soapEnvelope;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/SessionUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/SessionUtils.java
new file mode 100644
index 0000000..5268fdc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/SessionUtils.java
@@ -0,0 +1,91 @@
+package org.apache.axis2.util;

+

+import org.apache.axis2.Constants;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.AxisServiceGroup;

+

+import java.util.Iterator;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class SessionUtils {

+

+    /**

+     * Walk through the list of services and use the minimum of the scopes as the scope for the whole service group

+     * 

+     * @param axisServiceGroup

+     * @return scope for the service group

+     */

+    public static String calculateMaxScopeForServiceGroup(AxisServiceGroup axisServiceGroup) {

+        Iterator servics = axisServiceGroup.getServices();

+        int maxScope = 1;

+        while (servics.hasNext()) {

+            AxisService axisService = (AxisService) servics.next();

+            int scopeIntValue = getScopeIntValue(axisService.getScope());

+            if (maxScope < scopeIntValue) {

+                maxScope = scopeIntValue;

+            }

+        }

+        return getScopeString(maxScope);

+    }

+

+    /**

+     * convert scope into a numerical value

+     * 

+     * @param scope

+     * @return integer

+     */

+    private static int getScopeIntValue(String scope) {

+        if (Constants.SCOPE_REQUEST.equals(scope)) {

+            return 1;

+        } else if (Constants.SCOPE_TRANSPORT_SESSION.equals(scope)) {

+            return 2;

+        } else if (Constants.SCOPE_SOAP_SESSION.equals(scope)) {

+            return 3;

+        } else if (Constants.SCOPE_APPLICATION.equals(scope)) {

+            return 4;

+        } else {

+            return 2;

+        }

+    }

+

+    /**

+     * Get the actual scope string given the numerical value

+     * 

+     * @param scope

+     * @return string

+     */

+    private static String getScopeString(int scope) {

+        switch (scope) {

+            case 1 : {

+                return Constants.SCOPE_REQUEST;

+            }

+            case 2 : {

+                return Constants.SCOPE_TRANSPORT_SESSION;

+            }

+            case 3 : {

+                return Constants.SCOPE_SOAP_SESSION;

+            }

+            case 4 : {

+                return Constants.SCOPE_APPLICATION;

+            }

+            default : {

+                return Constants.SCOPE_TRANSPORT_SESSION;

+            }

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/StreamWrapper.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/StreamWrapper.java
new file mode 100644
index 0000000..3ef6046
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/StreamWrapper.java
@@ -0,0 +1,438 @@
+/*
+* Copyright 2004,2005 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.axis2.util;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+public class StreamWrapper implements XMLStreamReader {
+    private static final int STATE_SWITCHED = 0;
+    private static final int STATE_INIT = 1;
+    private static final int STATE_SWITCH_AT_NEXT = 2;
+    private static final int STATE_COMPLETE_AT_NEXT = 3;
+    private static final int STATE_COMPLETED = 4;
+    private XMLStreamReader realReader = null;
+    private int state = STATE_INIT;
+    private int prevState = state;
+
+
+    public StreamWrapper(XMLStreamReader realReader) {
+        if (realReader == null) {
+            throw new UnsupportedOperationException("Reader cannot be null");
+        }
+
+        this.realReader = realReader;
+    }
+
+    public void close() throws XMLStreamException {
+        if (state != STATE_INIT) {
+            realReader.close();
+        } else {
+            throw new XMLStreamException();
+        }
+    }
+
+    public int next() throws XMLStreamException {
+        prevState = state;
+        int returnEvent = -1;
+
+        switch (state) {
+            case STATE_INIT:
+                if (realReader.getEventType() == START_DOCUMENT) {
+                    state = STATE_SWITCHED;
+                    returnEvent = realReader.next();
+                } else {
+                    state = STATE_SWITCHED;
+                    returnEvent = realReader.getEventType();
+                }
+                break;
+            case STATE_SWITCHED:
+                returnEvent = realReader.next();
+                if (returnEvent == END_DOCUMENT) {
+                    state = STATE_COMPLETED;
+                } else if (!realReader.hasNext()) {
+                    state = STATE_COMPLETE_AT_NEXT;
+                }
+                break;
+//            case STATE_SWITCH_AT_NEXT:
+//                state = STATE_SWITCHED;
+//                returnEvent = realReader.getEventType();
+//                break;
+            case STATE_COMPLETE_AT_NEXT:
+                state = STATE_COMPLETED;
+                returnEvent = END_DOCUMENT;
+                break;
+            case STATE_COMPLETED:
+                //oops - no way we can go beyond this
+                throw new XMLStreamException("end reached!");
+            default:
+                throw new UnsupportedOperationException();
+        }
+
+        return returnEvent;
+    }
+
+    public int nextTag() throws XMLStreamException {
+        if (prevState != STATE_INIT) {
+            return realReader.nextTag();
+        } else {
+            throw new XMLStreamException();
+        }
+    }
+
+    public void require(int i, String s, String s1) throws XMLStreamException {
+        if (state != STATE_INIT) {
+            realReader.require(i, s, s1);
+        }
+    }
+
+    public boolean standaloneSet() {
+        if (state != STATE_INIT) {
+            return realReader.standaloneSet();
+        } else {
+            return false;
+        }
+    }
+
+    public int getAttributeCount() {
+        if (state != STATE_INIT) {
+            return realReader.getAttributeCount();
+        } else {
+            return 0;
+        }
+    }
+
+    public String getAttributeLocalName(int i) {
+        if (state != STATE_INIT) {
+            return realReader.getAttributeLocalName(i);
+        } else {
+            return null;
+        }
+    }
+
+    public QName getAttributeName(int i) {
+        if (state != STATE_INIT) {
+            return realReader.getAttributeName(i);
+        } else {
+            return null;
+        }
+    }
+
+    public String getAttributeNamespace(int i) {
+        if (state != STATE_INIT) {
+            return realReader.getAttributeNamespace(i);
+        } else {
+            return null;
+        }
+    }
+
+    public String getAttributePrefix(int i) {
+        if (state != STATE_INIT) {
+            return realReader.getAttributePrefix(i);
+        } else {
+            return null;
+        }
+    }
+
+    public String getAttributeType(int i) {
+        if (state != STATE_INIT) {
+            return realReader.getAttributeType(i);
+        } else {
+            return null;
+        }
+    }
+
+    public String getAttributeValue(int i) {
+        if (state != STATE_INIT) {
+            return realReader.getAttributeValue(i);
+        } else {
+            return null;
+        }
+    }
+
+    public String getAttributeValue(String s, String s1) {
+        if (state != STATE_INIT) {
+            return realReader.getAttributeValue(s, s1);
+        } else {
+            return null;
+        }
+    }
+
+    public String getCharacterEncodingScheme() {
+        if (state != STATE_INIT) {
+            return realReader.getCharacterEncodingScheme();
+        } else {
+            return null;
+        }
+    }
+
+    public String getElementText() throws XMLStreamException {
+        if (state != STATE_INIT) {
+            return realReader.getElementText();
+        } else {
+            throw new XMLStreamException();
+        }
+    }
+
+    public String getEncoding() {
+        if (state != STATE_INIT) {
+            return realReader.getEncoding();
+        } else {
+            return null;
+        }
+    }
+
+    public int getEventType() {
+        if (state == STATE_INIT) {
+            return START_DOCUMENT;
+        } else {
+            return realReader.getEventType();
+        }
+    }
+
+    public String getLocalName() {
+        if (state != STATE_INIT) {
+            return realReader.getLocalName();
+        } else {
+            return null;
+        }
+    }
+
+    public Location getLocation() {
+        if (state != STATE_INIT) {
+            return realReader.getLocation();
+        } else {
+            return null;
+        }
+    }
+
+    public QName getName() {
+        if (state != STATE_INIT) {
+            return realReader.getName();
+        } else {
+            return null;
+        }
+    }
+
+    public NamespaceContext getNamespaceContext() {
+        if (state != STATE_INIT) {
+            return realReader.getNamespaceContext();
+        } else {
+            return null;
+        }
+    }
+
+    public int getNamespaceCount() {
+        if (state != STATE_INIT) {
+            return realReader.getNamespaceCount();
+        } else {
+            return 0;
+        }
+    }
+
+    public String getNamespacePrefix(int i) {
+        if (state != STATE_INIT) {
+            return realReader.getNamespacePrefix(i);
+        } else {
+            return null;
+        }
+    }
+
+    public String getNamespaceURI() {
+        if (state != STATE_INIT) {
+            return realReader.getNamespaceURI();
+        } else {
+            return null;
+        }
+    }
+
+    public String getNamespaceURI(int i) {
+        if (state != STATE_INIT) {
+            return realReader.getNamespaceURI(i);
+        } else {
+            return null;
+        }
+    }
+
+    public String getNamespaceURI(String s) {
+        if (state != STATE_INIT) {
+            return realReader.getNamespaceURI(s);
+        } else {
+            return null;
+        }
+    }
+
+    public String getPIData() {
+        if (state != STATE_INIT) {
+            return realReader.getPIData();
+        } else {
+            return null;
+        }
+    }
+
+    public String getPITarget() {
+        if (state != STATE_INIT) {
+            return realReader.getPITarget();
+        } else {
+            return null;
+        }
+    }
+
+    public String getPrefix() {
+        if (state != STATE_INIT) {
+            return realReader.getPrefix();
+        } else {
+            return null;
+        }
+    }
+
+    public Object getProperty(String s) throws IllegalArgumentException {
+        if (state != STATE_INIT) {
+            return realReader.getProperty(s);
+        } else {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    public String getText() {
+        if (state != STATE_INIT) {
+            return realReader.getText();
+        } else {
+            return null;
+        }
+    }
+
+    public char[] getTextCharacters() {
+        if (state != STATE_INIT) {
+            return realReader.getTextCharacters();
+        } else {
+            return new char[0];
+        }
+    }
+
+    public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {
+        if (state != STATE_INIT) {
+            return realReader.getTextCharacters(i, chars, i1, i2);
+        } else {
+            return 0;
+        }
+    }
+
+    public int getTextLength() {
+        if (state != STATE_INIT) {
+            return realReader.getTextLength();
+        } else {
+            return 0;
+        }
+    }
+
+    public int getTextStart() {
+        if (state != STATE_INIT) {
+            return realReader.getTextStart();
+        } else {
+            return 0;
+        }
+    }
+
+    public String getVersion() {
+        if (state != STATE_INIT) {
+            return realReader.getVersion();
+        } else {
+            return null;
+        }
+    }
+
+    public boolean hasName() {
+        if (state != STATE_INIT) {
+            return realReader.hasName();
+        } else {
+            return false;
+        }
+    }
+
+    public boolean hasNext() throws XMLStreamException {
+        if (state == STATE_COMPLETE_AT_NEXT) {
+            return true;
+        } else if (state == STATE_COMPLETED) {
+            return false;
+        } else if (state != STATE_INIT) {
+            return realReader.hasNext();
+        } else {
+            return true;
+        }
+    }
+
+    public boolean hasText() {
+        if (state != STATE_INIT) {
+            return realReader.hasText();
+        } else {
+            return false;
+        }
+    }
+
+    public boolean isAttributeSpecified(int i) {
+        if (state != STATE_INIT) {
+            return realReader.isAttributeSpecified(i);
+        } else {
+            return false;
+        }
+    }
+
+    public boolean isCharacters() {
+        if (state != STATE_INIT) {
+            return realReader.isCharacters();
+        } else {
+            return false;
+        }
+    }
+
+    public boolean isEndElement() {
+        if (state != STATE_INIT) {
+            return realReader.isEndElement();
+        } else {
+            return false;
+        }
+    }
+
+    public boolean isStandalone() {
+        if (state != STATE_INIT) {
+            return realReader.isStandalone();
+        } else {
+            return false;
+        }
+    }
+
+    public boolean isStartElement() {
+        if (state != STATE_INIT) {
+            return realReader.isStartElement();
+        } else {
+            return false;
+        }
+    }
+
+    public boolean isWhiteSpace() {
+        if (state != STATE_INIT) {
+            return realReader.isWhiteSpace();
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/TargetResolver.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/TargetResolver.java
new file mode 100644
index 0000000..1ca1fc3
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/TargetResolver.java
@@ -0,0 +1,36 @@
+/*

+* Copyright 2006 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.axis2.util;

+

+import org.apache.axis2.context.MessageContext;

+

+/**

+ * TargetResolver

+ * 

+ * Interface to be implemented by code to update the invocation target URL

+ * before the transport is selected and the engine invoked.

+ * 

+ * Examples of use:

+ * 1. wsa:To set to a URN value which needs translated to a targetable URL

+ * 2. support clustering where a single URI may repesent multiple servers and one must be selected

+ */

+public interface TargetResolver {

+    /**

+     * resolveTarget examines the MessageContext and updates the MessageContext

+     * in order to resolve the target.

+     */

+    public void resolveTarget(MessageContext messageContext);

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ThreadContextMigrator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ThreadContextMigrator.java
new file mode 100644
index 0000000..212ef01
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ThreadContextMigrator.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2006 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.axis2.util;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+
+/**
+ * This is the interface for a piece of code that will plug into the user
+ * programming model impl (e.g. JAX-WS impl) and will be invoked while on the
+ * ultimate thread of execution.  It is intended to provide a mechanism to
+ * allow information to be migrated between the Axis2 contexts and thread
+ * local storage.
+ * 
+ * Note: It is up to each particular programming model impl to decide whether
+ * or not they wish to make use of the ThreadContextMigrators.
+ * 
+ * For each general MEP, here is the invocation pattern:
+ * 
+ * [one-way inbound]
+ * migrateContextToThread(req)
+ * cleanupThread(req)
+ * 
+ * [req/rsp inbound]
+ * migrateContextToThread(req)
+ * migrateThreadToContext(rsp)
+ * cleanupContext(rsp)
+ * cleanupThread(req)
+ * 
+ * [one-way outbound]
+ * migrateThreadToContext(req)
+ * cleanupContext(req)
+ * 
+ * [req/rsp outbound (both sync and async)]
+ * migrateThreadToContext(req)
+ * cleanupContext(req)
+ * migrateContextToThread(rsp)
+ * Note: there is no corresponding cleanupThread(rsp); one of the inbound
+ *       cases would need to handle this
+ * 
+ * If a fault occurs during execution of one of the migrators, it will be
+ * treated like any other service fault (i.e. like what will happen if we can't
+ * deliver the message to a service or if a handler fails.
+ * 
+ * The cleanup* methods can be expected to be invoked after any exeception
+ * that occurs within the scope of the migration that would cause that scope
+ * to be left so that the thread and/or context may be cleaned up properly. 
+ */
+public interface ThreadContextMigrator
+{
+  /**
+   * This method will be invoked when the processing of the message is
+   * guaranteed to be on the thread of execution that will be used in
+   * user space.  It will be invoked for incoming messages.
+   * Implementations of this interface can use the information found in the
+   * MessageContext to determine whether a request or response is being
+   * processed.
+   * (e.g. MessageContext.getAxisOperation().getMessageExchangePattern())
+   * 
+   * @param messageContext
+   * @throws AxisFault
+   */
+  void migrateContextToThread(MessageContext messageContext) throws AxisFault;
+
+  /**
+   * This method will be invoked when the processing of the message is
+   * guaranteed to still be on the thread of execution that was used in user
+   * space, after all processing has completed (i.e. when the particular
+   * processing of a message is unwinding.)  It provides a mechanism which can
+   * be used to clean up the TLS.
+   *   
+   * @param messageContext
+   */
+  void cleanupThread(MessageContext messageContext);
+
+  /**
+   * This method will be invoked when the processing of the message is
+   * guaranteed to still be on the thread of execution that was used in
+   * user space.  It will be invoked for both outgoing messages.
+   * Implementations of this interface can use the information found in the
+   * MessageContext to determine whether a request or response is being
+   * processed.
+   * (e.g. MessageContext.getAxisOperation().getMessageExchangePattern())
+   * 
+   * @param messageContext
+   * @throws AxisFault
+   */
+  void migrateThreadToContext(MessageContext messageContext) throws AxisFault;
+  
+  /**
+   * This method will be invoked when the processing of the message is
+   * guaranteed to be on the thread of execution that will be used in user
+   * space, after all processing has completed (i.e. when the particular
+   * processing of a message is unwinding.)  It provides a mechanism which can
+   * be used to clean up the MessageContext or restore TLS.
+   *   
+   * @param messageContext
+   */
+  void cleanupContext(MessageContext messageContext);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ThreadContextMigratorUtil.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ThreadContextMigratorUtil.java
new file mode 100644
index 0000000..07bc116
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/ThreadContextMigratorUtil.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2006 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.axis2.util;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
+/**
+ * This is a utility class to make it easier/cleaner for user programming
+ * model-level implementations (e.g. the Axis2 JAX-WS code) to invoke the
+ * ThreadContextMigrators. 
+ */
+public class ThreadContextMigratorUtil
+{  
+  /**
+   * Register a new ThreadContextMigrator.
+   * 
+   * @param configurationContext
+   * @param threadContextMigratorListID The name of the property in the
+   *                                    ConfigurationContext that contains
+   *                                    the list of migrators.
+   * @param migrator
+   */
+  public static void addThreadContextMigrator(ConfigurationContext configurationContext, String threadContextMigratorListID, ThreadContextMigrator migrator)
+  {
+    List migratorList = (List)configurationContext.getProperty(threadContextMigratorListID);
+
+    if (migratorList == null)
+    {
+      migratorList = new LinkedList();
+      configurationContext.setProperty(threadContextMigratorListID, migratorList);
+    }
+    
+    migratorList.add(migrator);
+  }
+ 
+  /**
+   * Activate any registered ThreadContextMigrators to move context info
+   * to the thread of execution.
+   * @param threadContextMigratorListID The name of the property in the
+   *                                    ConfigurationContext that contains
+   *                                    the list of migrators.
+   * @param msgContext
+   * 
+   * @throws AxisFault
+   */
+  public static void performMigrationToThread(String threadContextMigratorListID, MessageContext msgContext)
+  throws AxisFault
+  {
+    List migratorList = (List)msgContext.getConfigurationContext().getProperty(threadContextMigratorListID);
+    
+    if (migratorList != null)
+    {
+      ListIterator threadContextMigrators = migratorList.listIterator();
+      while (threadContextMigrators.hasNext())
+      {
+        ((ThreadContextMigrator)threadContextMigrators.next()).migrateContextToThread(msgContext);
+      }
+    }
+  }
+
+  /**
+   * Activate any registered ThreadContextMigrators to remove information
+   * from the thread of execution if necessary.
+   * 
+   * @param threadContextMigratorListID The name of the property in the
+   *                                    ConfigurationContext that contains
+   *                                    the list of migrators.
+   * @param msgContext
+   */
+  public static void performThreadCleanup(String threadContextMigratorListID, MessageContext msgContext)
+  {
+    List migratorList = (List)msgContext.getConfigurationContext().getProperty(threadContextMigratorListID);
+    
+    if (migratorList != null)
+    {
+      ListIterator threadContextMigrators = migratorList.listIterator();
+      while (threadContextMigrators.hasNext())
+      {
+        ((ThreadContextMigrator)threadContextMigrators.next()).cleanupThread(msgContext);
+      }
+    }
+  }
+
+  /**
+   * Activate any registered ThreadContextMigrators to move info from the
+   * thread of execution into the context.
+   * 
+   * @param threadContextMigratorListID The name of the property in the
+   *                                    ConfigurationContext that contains
+   *                                    the list of migrators.
+   * @param msgContext
+   * @throws AxisFault
+   */
+  public static void performMigrationToContext(String threadContextMigratorListID, MessageContext msgContext)
+  throws AxisFault
+  {
+    List migratorList = (List)msgContext.getConfigurationContext().getProperty(threadContextMigratorListID);
+
+    if (migratorList != null)
+    {
+      ListIterator threadContextMigrators = migratorList.listIterator();
+      while (threadContextMigrators.hasNext())
+      {
+        ((ThreadContextMigrator)threadContextMigrators.next()).migrateThreadToContext(msgContext);
+      }
+    }
+  }
+  
+  /**
+   * Activate any registered ThreadContextMigrators to remove information from
+   * the context if necessary.
+   * 
+   * @param threadContextMigratorListID The name of the property in the
+   *                                    ConfigurationContext that contains
+   *                                    the list of migrators.
+   * @param msgContext
+   */
+  public static void performContextCleanup(String threadContextMigratorListID, MessageContext msgContext)
+  {
+    List migratorList = (List)msgContext.getConfigurationContext().getProperty(threadContextMigratorListID);
+
+    if (migratorList != null)
+    {
+      ListIterator threadContextMigrators = migratorList.listIterator();
+      while (threadContextMigrators.hasNext())
+      {
+        ((ThreadContextMigrator)threadContextMigrators.next()).cleanupContext(msgContext);
+      }
+    }
+  }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/URL.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/URL.java
new file mode 100644
index 0000000..6c833e8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/URL.java
@@ -0,0 +1,84 @@
+/*
+* Copyright 2004,2005 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.axis2.util;
+
+public class URL {
+    private int port = -1;
+    private String fileName;
+    private String host;
+    private String protocol;
+
+    public URL(String url) {
+        int start = 0;
+        int end = 0;
+
+        end = url.indexOf("://");
+
+        if (end > 0) {
+            protocol = url.substring(0, end);
+            start = end + 3;
+        }
+
+        end = url.indexOf('/', start);
+
+        if (end > 0) {
+            String hostAndPort = url.substring(start, end);
+
+            fileName = url.substring(end);
+
+            int index = hostAndPort.indexOf(':');
+
+            if (index > 0) {
+                host = hostAndPort.substring(0, index);
+                port = Integer.parseInt(hostAndPort.substring(index + 1));
+            } else {
+                host = hostAndPort;
+            }
+        } else {
+            host = url;
+        }
+    }
+
+    /**
+     * @return Returns String.
+     */
+    public String getFileName() {
+        return fileName;
+    }
+
+    /**
+     * @return Returns String.
+     */
+    public String getHost() {
+        return host;
+    }
+
+    /**
+     * @return Returns int.
+     */
+    public int getPort() {
+        return port;
+    }
+
+    /**
+     * @return Returns String.
+     */
+    public String getProtocol() {
+        return protocol;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/URLProcessor.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/URLProcessor.java
new file mode 100644
index 0000000..c3cb741
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/URLProcessor.java
@@ -0,0 +1,136 @@
+/*

+ * Copyright 2004,2005 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.axis2.util;

+

+import java.net.MalformedURLException;

+import java.util.StringTokenizer;

+

+public class URLProcessor {

+    public static final String DEFAULT_PACKAGE = "org.apache.axis2";

+

+    /**

+     * Method makePackageName.

+     *

+     * @param namespace

+     * @return Returns String.

+     */

+    public static String makePackageName(String namespace) {

+

+        String hostname = null;

+        String path = "";

+

+        // get the target namespace of the document

+        try {

+            java.net.URL u = new java.net.URL(namespace);

+

+            hostname = u.getHost();

+            path = u.getPath();

+        } catch (MalformedURLException e) {

+            if (namespace.indexOf(":") > -1) {

+                hostname = namespace.substring(namespace.indexOf(":") + 1);

+

+                if (hostname.indexOf("/") > -1) {

+                    hostname = hostname.substring(0, hostname.indexOf("/"));

+                }

+            } else {

+                hostname = namespace;

+            }

+        }

+

+        // if we didn't file a hostname, bail

+        if (hostname == null || hostname.length() == 0) {

+            return null;

+        }

+

+        // convert illegal java identifier

+        hostname = hostname.replace('-', '_');

+        path = path.replace('-', '_');

+

+        path = path.replace(':', '_');

+

+        // chomp off last forward slash in path, if necessary

+        if ((path.length() > 0) && (path.charAt(path.length() - 1) == '/')) {

+            path = path.substring(0, path.length() - 1);

+        }

+

+        // tokenize the hostname and reverse it

+        StringTokenizer st = new StringTokenizer(hostname, ".:");

+        String[] words = new String[st.countTokens()];

+

+        for (int i = 0; i < words.length; ++i) {

+            words[i] = st.nextToken();

+        }

+

+        StringBuffer sb = new StringBuffer(namespace.length());

+

+        for (int i = words.length - 1; i >= 0; --i) {

+            addWordToPackageBuffer(sb, words[i], (i == words.length - 1));

+        }

+

+        // tokenize the path

+        StringTokenizer st2 = new StringTokenizer(path, "/");

+

+        while (st2.hasMoreTokens()) {

+            addWordToPackageBuffer(sb, st2.nextToken(), false);

+        }

+

+        return sb.toString().toLowerCase();

+    }

+

+

+    /**

+     * Massages <tt>word</tt> into a form suitable for use in a Java package name.

+     * Appends it to the target string buffer with a <tt>.</tt> delimiter if

+     * <tt>word</tt> is not the first word in the package name.

+     *

+     * @param sb        the buffer to append to

+     * @param word      the word to append

+     * @param firstWord a flag indicating whether this is the first word

+     */

+    private static void addWordToPackageBuffer(StringBuffer sb, String word,

+                                               boolean firstWord) {

+

+        if (JavaUtils.isJavaKeyword(word)) {

+            word = JavaUtils.makeNonJavaKeyword(word);

+        }

+

+        // separate with dot after the first word

+        if (!firstWord) {

+            sb.append('.');

+        }

+

+        // prefix digits with underscores

+        if (Character.isDigit(word.charAt(0))) {

+            sb.append('_');

+        }

+

+        // replace periods with underscores

+        if (word.indexOf('.') != -1) {

+            char[] buf = word.toCharArray();

+

+            for (int i = 0; i < word.length(); i++) {

+                if (buf[i] == '.') {

+                    buf[i] = '_';

+                }

+            }

+

+            word = new String(buf);

+        }

+

+        sb.append(word);

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/UUIDGenerator.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/UUIDGenerator.java
new file mode 100644
index 0000000..cb6fafc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/UUIDGenerator.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2004,2005 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.axis2.util;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Date;
+import java.util.Random;
+
+public class UUIDGenerator {
+    /**
+     * This class will give UUIDs for axis2.
+     */
+
+    private static String baseUUID = null;
+    private static long incrementingValue = 0;
+
+
+    private static Random myRand = null;
+
+    /**
+     * MD5 a random string with localhost/date etc will return 128 bits
+     * construct a string of 18 characters from those bits.
+     *
+     * @return string
+     */
+    public static String getUUID() {
+        if (baseUUID == null) {
+            baseUUID = getInitialUUID();
+            baseUUID = "urn:uuid:" + baseUUID;
+        }
+        if(++incrementingValue >= Long.MAX_VALUE){
+            incrementingValue = 0;
+        }
+        return  baseUUID + (System.currentTimeMillis() + incrementingValue);
+    }
+
+    protected static String getInitialUUID() {
+        if (myRand == null) {
+            myRand = new Random();
+        }
+        long rand = myRand.nextLong();
+        String sid;
+        try {
+            sid = InetAddress.getLocalHost().toString();
+        } catch (UnknownHostException e) {
+            sid = Thread.currentThread().getName();
+        }
+        StringBuffer sb = new StringBuffer();
+        sb.append(sid);
+        sb.append(":");
+        sb.append(Long.toString(rand));
+        MessageDigest md5 = null;
+        try {
+            md5 = MessageDigest.getInstance("MD5");
+        } catch (NoSuchAlgorithmException e) {
+            //System.out.println("Error: " + e);
+            //todo heve to be properly handle
+        }
+        md5.update(sb.toString().getBytes());
+        byte[] array = md5.digest();
+        StringBuffer sb2 = new StringBuffer();
+        for (int j = 0; j < array.length; ++j) {
+            int b = array[j] & 0xFF;
+            sb2.append(Integer.toHexString(b));
+        }
+        int begin = myRand.nextInt();
+        if (begin < 0) begin = begin * -1;
+        begin = begin % 8;
+        return sb2.toString().substring(begin, begin + 18).toUpperCase();
+    }
+
+    public static void main(String[] args) {
+        long startTime = new Date().getTime();
+        for (int i = 0; i < 100000; i++) {
+            UUIDGenerator.getInitialUUID();
+        }
+        long endTime = new Date().getTime();
+        System.out.println("getInitialUUID Difference = " + (endTime - startTime));
+
+        startTime = new Date().getTime();
+        for (int i = 0; i < 100000; i++) {
+            UUIDGenerator.getUUID();
+        }
+        endTime = new Date().getTime();
+        System.out.println("getUUID Difference = " + (endTime - startTime));
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Utils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Utils.java
new file mode 100644
index 0000000..69c685e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/Utils.java
@@ -0,0 +1,428 @@
+/*
+* Copyright 2004,2005 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.axis2.util;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.RelatesTo;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.context.*;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisError;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class Utils {
+    public static void addHandler(Flow flow, Handler handler, String phaseName) {
+        HandlerDescription handlerDesc = new HandlerDescription();
+        PhaseRule rule = new PhaseRule(phaseName);
+
+        handlerDesc.setRules(rule);
+        handler.init(handlerDesc);
+        handlerDesc.setHandler(handler);
+        flow.addHandler(handlerDesc);
+    }
+
+    public static MessageContext createOutMessageContext(MessageContext inMessageContext) throws AxisFault {
+        MessageContext newmsgCtx = new MessageContext();
+
+        newmsgCtx.setConfigurationContext(inMessageContext.getConfigurationContext());
+        newmsgCtx.setSessionContext(inMessageContext.getSessionContext());
+        newmsgCtx.setTransportIn(inMessageContext.getTransportIn());
+        newmsgCtx.setTransportOut(inMessageContext.getTransportOut());
+
+        Options oldOptions =
+                inMessageContext.getOptions();
+
+        newmsgCtx.setMessageID(UUIDGenerator.getUUID());
+        newmsgCtx.setTo(oldOptions.getReplyTo());
+        newmsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                inMessageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION));
+        newmsgCtx.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES,
+                inMessageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+
+        // do Target Resolution
+        TargetResolver targetResolver = newmsgCtx.getConfigurationContext().getAxisConfiguration().getTargetResolverChain();
+        if(targetResolver != null){
+            targetResolver.resolveTarget(newmsgCtx);
+        }
+
+        newmsgCtx.addRelatesTo(new RelatesTo(oldOptions.getMessageId()));
+
+        AxisService axisService = inMessageContext.getAxisService();
+        if (axisService != null && Constants.SCOPE_SOAP_SESSION.equals(axisService.getScope())) {
+            newmsgCtx.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
+            // add the service group id as a reference parameter
+            String serviceGroupContextId = inMessageContext.getServiceGroupContextId();
+            if (serviceGroupContextId != null && !"".equals(serviceGroupContextId)) {
+                EndpointReference replyToEPR = newmsgCtx.getReplyTo();
+                replyToEPR.addReferenceParameter(new QName(Constants.AXIS2_NAMESPACE_URI,
+                        Constants.SERVICE_GROUP_ID, Constants.AXIS2_NAMESPACE_PREFIX), serviceGroupContextId);
+            }
+        } else {
+            newmsgCtx.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
+        }
+
+        AxisOperation ao = inMessageContext.getAxisOperation();
+        if (ao.getOutputAction() != null) {
+            newmsgCtx.setWSAAction(ao.getOutputAction());
+        } else {
+            newmsgCtx.setWSAAction(oldOptions.getAction());
+        }
+
+        newmsgCtx.setAxisMessage(ao.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));
+        newmsgCtx.setOperationContext(inMessageContext.getOperationContext());
+        newmsgCtx.setServiceContext(inMessageContext.getServiceContext());
+        newmsgCtx.setProperty(MessageContext.TRANSPORT_OUT,
+                inMessageContext.getProperty(MessageContext.TRANSPORT_OUT));
+        newmsgCtx.setProperty(Constants.OUT_TRANSPORT_INFO,
+                inMessageContext.getProperty(Constants.OUT_TRANSPORT_INFO));
+
+        // Setting the charater set encoding
+        newmsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+                inMessageContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING));
+        newmsgCtx.setDoingREST(inMessageContext.isDoingREST());
+        newmsgCtx.setDoingMTOM(inMessageContext.isDoingMTOM());
+        newmsgCtx.setServerSide(inMessageContext.isServerSide());
+        newmsgCtx.setServiceGroupContextId(inMessageContext.getServiceGroupContextId());
+
+        // write the Message to the Wire
+        TransportOutDescription transportOut = newmsgCtx.getTransportOut();
+
+        //there may be instance where you want to send the response to replyTo
+        //and this default behaviour should happen if somebody (e.g. a module) has not already provided
+        //a Sender.
+        try {
+            EndpointReference responseEPR = newmsgCtx.getTo();
+            if (newmsgCtx.isServerSide() && responseEPR != null) {
+                if (!responseEPR.hasAnonymousAddress() && !responseEPR.hasNoneAddress()) {
+                    URI uri = new URI(responseEPR.getAddress());
+                    String scheme = uri.getScheme();
+                    if (!transportOut.getName().getLocalPart().equals(scheme)) {
+                        ConfigurationContext configurationContext = newmsgCtx.getConfigurationContext();
+                        transportOut = configurationContext.getAxisConfiguration()
+                                .getTransportOut(new QName(scheme));
+                        if (transportOut == null) {
+                            throw new AxisFault("Can not find the transport sender : " + scheme);
+                        }
+                        newmsgCtx.setTransportOut(transportOut);
+                    }
+                    inMessageContext.getOperationContext().setProperty(
+                            Constants.DIFFERENT_EPR, Constants.VALUE_TRUE);
+                }
+            }
+        } catch (URISyntaxException e) {
+            throw new AxisFault(e);
+        }
+        return newmsgCtx;
+    }
+
+    public static AxisService createSimpleService(QName serviceName, String className, QName opName)
+            throws AxisFault {
+        return createSimpleService(serviceName, new RawXMLINOutMessageReceiver(), className,
+                opName);
+    }
+
+    public static AxisService createSimpleServiceforClient(QName serviceName, String className, QName opName)
+            throws AxisFault {
+        return createSimpleServiceforClient(serviceName, new RawXMLINOutMessageReceiver(), className,
+                opName);
+    }
+
+    public static AxisService createSimpleService(QName serviceName,
+                                                  MessageReceiver messageReceiver, String className, QName opName)
+            throws AxisFault {
+        AxisService service = new AxisService(serviceName.getLocalPart());
+
+        service.setClassLoader(Thread.currentThread().getContextClassLoader());
+        service.addParameter(new Parameter(Constants.SERVICE_CLASS, className));
+
+        AxisOperation axisOp = new InOutAxisOperation(opName);
+
+        axisOp.setMessageReceiver(messageReceiver);
+        axisOp.setStyle(WSDLConstants.STYLE_RPC);
+        service.addOperation(axisOp);
+        service.mapActionToOperation(Constants.AXIS2_NAMESPACE_URI + "/" + opName.getLocalPart(), axisOp);
+
+        return service;
+    }
+
+    public static AxisService createSimpleServiceforClient(QName serviceName,
+                                                           MessageReceiver messageReceiver,
+                                                           String className,
+                                                           QName opName)
+            throws AxisFault {
+        AxisService service = new AxisService(serviceName.getLocalPart());
+
+        service.setClassLoader(Thread.currentThread().getContextClassLoader());
+        service.addParameter(new Parameter(Constants.SERVICE_CLASS, className));
+
+        AxisOperation axisOp = new OutInAxisOperation(opName);
+
+        axisOp.setMessageReceiver(messageReceiver);
+        axisOp.setStyle(WSDLConstants.STYLE_RPC);
+        service.addOperation(axisOp);
+
+        return service;
+    }
+
+    public static ServiceContext fillContextInformation(AxisService axisService,
+                                                        ConfigurationContext configurationContext) {
+
+        // 2. if null, create new opCtxt
+        // fill the service group context and service context info
+        return fillServiceContextAndServiceGroupContext(axisService, configurationContext);
+    }
+
+    private static ServiceContext fillServiceContextAndServiceGroupContext(AxisService axisService,
+                                                                           ConfigurationContext configurationContext) {
+        String serviceGroupContextId = UUIDGenerator.getUUID();
+        ServiceGroupContext serviceGroupContext = new ServiceGroupContext(configurationContext,
+                (AxisServiceGroup) axisService.getParent());
+
+        serviceGroupContext.setId(serviceGroupContextId);
+        configurationContext.registerServiceGroupContext(serviceGroupContext);
+
+        return new ServiceContext(axisService, serviceGroupContext);
+    }
+
+    /**
+     * Break a full path into pieces
+     *
+     * @param path
+     * @return an array where element [0] always contains the service, and element 1, if not null, contains
+     *         the path after the first element. all ? parameters are discarded.
+     */
+    public static String[] parseRequestURLForServiceAndOperation(String path, String servicePath) {
+        if (path == null) {
+            return null;
+        }
+        String[] values = new String[2];
+
+        // TODO. This is kind of brittle. Any service with the name /services would cause fun.
+        int index = path.lastIndexOf(servicePath);
+        String service;
+
+        if (-1 != index) {
+            int serviceStart = index + servicePath.length();
+
+            if (path.length() > serviceStart + 1) {
+                service = path.substring(serviceStart + 1);
+
+                int queryIndex = service.indexOf('?');
+
+                if (queryIndex > 0) {
+                    service = service.substring(0, queryIndex);
+                }
+
+                int operationIndex = service.indexOf('/');
+
+                if (operationIndex > 0) {
+                    values[0] = service.substring(0, operationIndex);
+                    values[1] = service.substring(operationIndex + 1);
+                } else {
+                    values[0] = service;
+                }
+            }
+        }
+
+        return values;
+    }
+
+    public static ConfigurationContext getNewConfigurationContext(String repositry)
+            throws Exception {
+        File file = new File(repositry);
+        if (!file.exists()) {
+            throw new Exception("repository directory " + file.getAbsolutePath()
+                    + " does not exists");
+        }
+        File axis2xml = new File(file, "axis.xml");
+        String axis2xmlString = null;
+        if (axis2xml.exists()) {
+            axis2xmlString = axis2xml.getName();
+        }
+        return ConfigurationContextFactory.createConfigurationContextFromFileSystem(file.getAbsolutePath(), axis2xmlString);
+    }
+
+    public static String getParameterValue(Parameter param) {
+        if (param == null) {
+            return null;
+        } else {
+            return (String) param.getValue();
+        }
+    }
+
+    /**
+     * To get the name of the module , where archive name is combination of module name + its version
+     * The format of the module version will be like follow
+     * moduleName-00.0000 as an exmple addressing-01.0001.aar
+     */
+
+    public static String getModuleName(String moduleName) {
+        char version_seperator = '-';
+        int version_index = moduleName.lastIndexOf(version_seperator);
+        if (version_index > 0) {
+            return moduleName.substring(0, version_index);
+        } else {
+            return moduleName;
+        }
+    }
+
+    public static String getModuleVersion(String moduleName) {
+        char version_seperator = '-';
+        int version_index = moduleName.lastIndexOf(version_seperator);
+        if (version_index > 0) {
+            return moduleName.substring(version_index + 1, moduleName.length());
+        } else {
+            return null;
+        }
+    }
+
+
+    public static QName getModuleName(String name, String versionID) {
+        String moduleName;
+        if (versionID != null && versionID.length() != 0) {
+            moduleName = name + "-" + versionID;
+        } else {
+            moduleName = name;
+        }
+        return new QName(moduleName);
+    }
+
+    /**
+     * Will check whether a given module can be engage or not
+     * if the version mismamathc then thow en exception
+     * - if he trying to engage the same module then method will returen false
+     * - else it will return true
+     *
+     * @param deployingModuleName
+     * @param deployedModulename
+     * @throws AxisFault
+     */
+    public static boolean checkVersion(QName deployingModuleName,
+                                       QName deployedModulename) throws AxisFault {
+        String module1name = getModuleName(deployingModuleName.getLocalPart());
+        String module2name = getModuleName(deployedModulename.getLocalPart());
+        String module1version = getModuleVersion(deployingModuleName.getLocalPart());
+        String module2version = getModuleVersion(deployedModulename.getLocalPart());
+        if (module1name.equals(module2name)) {
+            if (module1version != null) {
+                if (!module1version.equals(module2version)) {
+                    throw new AxisFault("trying to engage two different module versions " +
+                            module1version + " : " + module2version);
+                } else {
+                    return false;
+                }
+            } else if (module2version == null) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public static void calculateDefaultModuleVersion(HashMap modules, AxisConfiguration axisConfig) {
+        Iterator allModules = modules.values().iterator();
+        HashMap defaultModules = new HashMap();
+        while (allModules.hasNext()) {
+            AxisModule axisModule = (AxisModule) allModules.next();
+            QName moduleName = axisModule.getName();
+            String moduleNameString = getModuleName(moduleName.getLocalPart());
+            String moduleVersionString = getModuleVersion(moduleName.getLocalPart());
+            String currentDefaultVerison = (String) defaultModules.get(moduleNameString);
+            if (currentDefaultVerison != null) {
+                // if the module version is null then , that will be ignore in this case
+                if (moduleVersionString != null && isLatest(moduleVersionString, currentDefaultVerison)) {
+                    defaultModules.put(moduleNameString, moduleVersionString);
+                }
+            } else {
+                defaultModules.put(moduleNameString, moduleVersionString);
+            }
+
+        }
+        Iterator def_mod_itr = defaultModules.keySet().iterator();
+        while (def_mod_itr.hasNext()) {
+            String moduleName = (String) def_mod_itr.next();
+            axisConfig.addDefaultModuleVersion(moduleName, (String) defaultModules.get(moduleName));
+        }
+    }
+
+    public static boolean isLatest(String moduleVersion, String currentDefaultVersion) {
+        if ("SNAPSHOT".equals(moduleVersion)) {
+            return true;
+        } else {
+            float m_version = Float.parseFloat(moduleVersion);
+            float m_c_vresion = Float.parseFloat(currentDefaultVersion);
+            return m_version > m_c_vresion;
+        }
+    }
+
+    public static boolean isExplicitlyTrue(MessageContext messageContext, String propertyName) {
+        Object flag = messageContext.getProperty(propertyName);
+        return JavaUtils.isTrueExplicitly(flag);
+    }
+
+    /**
+     * Maps the String URI of the Message exchange pattern to a integer.
+     * Further, in the first lookup, it will cache the looked
+     * up value so that the subsequent method calls are extremely efficient.
+     */
+    public static int getAxisSpecifMEPConstant(String messageExchangePattern) {
+
+
+        int mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_INVALID;
+
+        if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT.equals(messageExchangePattern) || WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT.equals(messageExchangePattern)) {
+            mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_IN_OUT;
+        } else if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(messageExchangePattern) || WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY.equals(messageExchangePattern)) {
+            mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_IN_ONLY;
+        } else if (WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT.equals(messageExchangePattern) || WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(messageExchangePattern)) {
+            mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_IN_OPTIONAL_OUT;
+        } else if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_IN.equals(messageExchangePattern) || WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_IN.equals(messageExchangePattern)) {
+            mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_OUT_IN;
+        } else if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(messageExchangePattern) || WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_ONLY.equals(messageExchangePattern)) {
+            mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY;
+        } else if (WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN.equals(messageExchangePattern) || WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN.equals(messageExchangePattern)) {
+            mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_OUT_OPTIONAL_IN;
+        } else if (WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY.equals(messageExchangePattern) || WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(messageExchangePattern)) {
+            mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_ROBUST_IN_ONLY;
+        } else if (WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(messageExchangePattern) || WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY.equals(messageExchangePattern)) {
+            mepConstant = WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_ROBUST_OUT_ONLY;
+        }
+
+        if (mepConstant == WSDLConstants.WSDL20_2004Constants.MEP_CONSTANT_INVALID) {
+            throw new AxisError(Messages.getMessage("mepmappingerror"));
+        }
+
+
+        return mepConstant;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLChar.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLChar.java
new file mode 100644
index 0000000..4f6dc0a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLChar.java
@@ -0,0 +1,644 @@
+/*

+ * Copyright 1999-2002,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.axis2.util;

+

+/**

+ * This class defines the basic XML character properties. The data

+ * in this class can be used to verify that a character is a valid

+ * XML character or if the character is a space, name start, or name

+ * character.

+ * <p>

+ * A series of convenience methods are supplied to ease the burden

+ * of the developer. Because inlining the checks can improve per

+ * character performance, the tables of character properties are

+ * public. Using the character as an index into the <code>CHARS</code>

+ * array and applying the appropriate mask flag (e.g.

+ * <code>MASK_VALID</code>), yields the same results as calling the

+ * convenience methods. There is one exception: check the comments

+ * for the <code>isValid</code> method for details.

+ *

+ */

+public class XMLChar {

+

+    //

+    // Constants

+    //

+

+    /** Character flags. */

+    private static final byte[] CHARS = new byte[1 << 16];

+

+    /** Valid character mask. */

+    public static final int MASK_VALID = 0x01;

+

+    /** Space character mask. */

+    public static final int MASK_SPACE = 0x02;

+

+    /** Name start character mask. */

+    public static final int MASK_NAME_START = 0x04;

+

+    /** Name character mask. */

+    public static final int MASK_NAME = 0x08;

+

+    /** Pubid character mask. */

+    public static final int MASK_PUBID = 0x10;

+

+    /**

+     * Content character mask. Special characters are those that can

+     * be considered the start of markup, such as '&lt;' and '&amp;'.

+     * The various newline characters are considered special as well.

+     * All other valid XML characters can be considered content.

+     * <p>

+     * This is an optimization for the inner loop of character scanning.

+     */

+    public static final int MASK_CONTENT = 0x20;

+

+    /** NCName start character mask. */

+    public static final int MASK_NCNAME_START = 0x40;

+

+    /** NCName character mask. */

+    public static final int MASK_NCNAME = 0x80;

+

+    //

+    // Static initialization

+    //

+

+    static {

+

+        //

+        // [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] |

+        //              [#xE000-#xFFFD] | [#x10000-#x10FFFF]

+        //

+

+        int charRange[] = {

+            0x0009, 0x000A, 0x000D, 0x000D, 0x0020, 0xD7FF, 0xE000, 0xFFFD,

+        };

+

+        //

+        // [3] S ::= (#x20 | #x9 | #xD | #xA)+

+        //

+

+        int spaceChar[] = {

+            0x0020, 0x0009, 0x000D, 0x000A,

+        };

+

+        //

+        // [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' |

+        //                  CombiningChar | Extender

+        //

+

+        int nameChar[] = {

+            0x002D, 0x002E, // '-' and '.'

+        };

+

+        //

+        // [5] Name ::= (Letter | '_' | ':') (NameChar)*

+        //

+

+        int nameStartChar[] = {

+            0x003A, 0x005F, // ':' and '_'

+        };

+

+        //

+        // [13] PubidChar ::= #x20 | 0xD | 0xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]

+        //

+

+        int pubidChar[] = {

+            0x000A, 0x000D, 0x0020, 0x0021, 0x0023, 0x0024, 0x0025, 0x003D,

+            0x005F

+        };

+

+        int pubidRange[] = {

+            0x0027, 0x003B, 0x003F, 0x005A, 0x0061, 0x007A

+        };

+

+        //

+        // [84] Letter ::= BaseChar | Ideographic

+        //

+

+        int letterRange[] = {

+            // BaseChar

+            0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, 0x00D8, 0x00F6,

+            0x00F8, 0x0131, 0x0134, 0x013E, 0x0141, 0x0148, 0x014A, 0x017E,

+            0x0180, 0x01C3, 0x01CD, 0x01F0, 0x01F4, 0x01F5, 0x01FA, 0x0217,

+            0x0250, 0x02A8, 0x02BB, 0x02C1, 0x0388, 0x038A, 0x038E, 0x03A1,

+            0x03A3, 0x03CE, 0x03D0, 0x03D6, 0x03E2, 0x03F3, 0x0401, 0x040C,

+            0x040E, 0x044F, 0x0451, 0x045C, 0x045E, 0x0481, 0x0490, 0x04C4,

+            0x04C7, 0x04C8, 0x04CB, 0x04CC, 0x04D0, 0x04EB, 0x04EE, 0x04F5,

+            0x04F8, 0x04F9, 0x0531, 0x0556, 0x0561, 0x0586, 0x05D0, 0x05EA,

+            0x05F0, 0x05F2, 0x0621, 0x063A, 0x0641, 0x064A, 0x0671, 0x06B7,

+            0x06BA, 0x06BE, 0x06C0, 0x06CE, 0x06D0, 0x06D3, 0x06E5, 0x06E6,

+            0x0905, 0x0939, 0x0958, 0x0961, 0x0985, 0x098C, 0x098F, 0x0990,

+            0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B6, 0x09B9, 0x09DC, 0x09DD,

+            0x09DF, 0x09E1, 0x09F0, 0x09F1, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10,

+            0x0A13, 0x0A28, 0x0A2A, 0x0A30, 0x0A32, 0x0A33, 0x0A35, 0x0A36,

+            0x0A38, 0x0A39, 0x0A59, 0x0A5C, 0x0A72, 0x0A74, 0x0A85, 0x0A8B,

+            0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, 0x0AB2, 0x0AB3,

+            0x0AB5, 0x0AB9, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28,

+            0x0B2A, 0x0B30, 0x0B32, 0x0B33, 0x0B36, 0x0B39, 0x0B5C, 0x0B5D,

+            0x0B5F, 0x0B61, 0x0B85, 0x0B8A, 0x0B8E, 0x0B90, 0x0B92, 0x0B95,

+            0x0B99, 0x0B9A, 0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA,

+            0x0BAE, 0x0BB5, 0x0BB7, 0x0BB9, 0x0C05, 0x0C0C, 0x0C0E, 0x0C10,

+            0x0C12, 0x0C28, 0x0C2A, 0x0C33, 0x0C35, 0x0C39, 0x0C60, 0x0C61,

+            0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3,

+            0x0CB5, 0x0CB9, 0x0CE0, 0x0CE1, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10,

+            0x0D12, 0x0D28, 0x0D2A, 0x0D39, 0x0D60, 0x0D61, 0x0E01, 0x0E2E,

+            0x0E32, 0x0E33, 0x0E40, 0x0E45, 0x0E81, 0x0E82, 0x0E87, 0x0E88,

+            0x0E94, 0x0E97, 0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EAA, 0x0EAB,

+            0x0EAD, 0x0EAE, 0x0EB2, 0x0EB3, 0x0EC0, 0x0EC4, 0x0F40, 0x0F47,

+            0x0F49, 0x0F69, 0x10A0, 0x10C5, 0x10D0, 0x10F6, 0x1102, 0x1103,

+            0x1105, 0x1107, 0x110B, 0x110C, 0x110E, 0x1112, 0x1154, 0x1155,

+            0x115F, 0x1161, 0x116D, 0x116E, 0x1172, 0x1173, 0x11AE, 0x11AF,

+            0x11B7, 0x11B8, 0x11BC, 0x11C2, 0x1E00, 0x1E9B, 0x1EA0, 0x1EF9,

+            0x1F00, 0x1F15, 0x1F18, 0x1F1D, 0x1F20, 0x1F45, 0x1F48, 0x1F4D,

+            0x1F50, 0x1F57, 0x1F5F, 0x1F7D, 0x1F80, 0x1FB4, 0x1FB6, 0x1FBC,

+            0x1FC2, 0x1FC4, 0x1FC6, 0x1FCC, 0x1FD0, 0x1FD3, 0x1FD6, 0x1FDB,

+            0x1FE0, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF6, 0x1FFC, 0x212A, 0x212B,

+            0x2180, 0x2182, 0x3041, 0x3094, 0x30A1, 0x30FA, 0x3105, 0x312C,

+            0xAC00, 0xD7A3,

+            // Ideographic

+            0x3021, 0x3029, 0x4E00, 0x9FA5,

+        };

+        int letterChar[] = {

+            // BaseChar

+            0x0386, 0x038C, 0x03DA, 0x03DC, 0x03DE, 0x03E0, 0x0559, 0x06D5,

+            0x093D, 0x09B2, 0x0A5E, 0x0A8D, 0x0ABD, 0x0AE0, 0x0B3D, 0x0B9C,

+            0x0CDE, 0x0E30, 0x0E84, 0x0E8A, 0x0E8D, 0x0EA5, 0x0EA7, 0x0EB0,

+            0x0EBD, 0x1100, 0x1109, 0x113C, 0x113E, 0x1140, 0x114C, 0x114E,

+            0x1150, 0x1159, 0x1163, 0x1165, 0x1167, 0x1169, 0x1175, 0x119E,

+            0x11A8, 0x11AB, 0x11BA, 0x11EB, 0x11F0, 0x11F9, 0x1F59, 0x1F5B,

+            0x1F5D, 0x1FBE, 0x2126, 0x212E,

+            // Ideographic

+            0x3007,

+        };

+

+        //

+        // [87] CombiningChar ::= ...

+        //

+

+        int combiningCharRange[] = {

+            0x0300, 0x0345, 0x0360, 0x0361, 0x0483, 0x0486, 0x0591, 0x05A1,

+            0x05A3, 0x05B9, 0x05BB, 0x05BD, 0x05C1, 0x05C2, 0x064B, 0x0652,

+            0x06D6, 0x06DC, 0x06DD, 0x06DF, 0x06E0, 0x06E4, 0x06E7, 0x06E8,

+            0x06EA, 0x06ED, 0x0901, 0x0903, 0x093E, 0x094C, 0x0951, 0x0954,

+            0x0962, 0x0963, 0x0981, 0x0983, 0x09C0, 0x09C4, 0x09C7, 0x09C8,

+            0x09CB, 0x09CD, 0x09E2, 0x09E3, 0x0A40, 0x0A42, 0x0A47, 0x0A48,

+            0x0A4B, 0x0A4D, 0x0A70, 0x0A71, 0x0A81, 0x0A83, 0x0ABE, 0x0AC5,

+            0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0B01, 0x0B03, 0x0B3E, 0x0B43,

+            0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57, 0x0B82, 0x0B83,

+            0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD, 0x0C01, 0x0C03,

+            0x0C3E, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D, 0x0C55, 0x0C56,

+            0x0C82, 0x0C83, 0x0CBE, 0x0CC4, 0x0CC6, 0x0CC8, 0x0CCA, 0x0CCD,

+            0x0CD5, 0x0CD6, 0x0D02, 0x0D03, 0x0D3E, 0x0D43, 0x0D46, 0x0D48,

+            0x0D4A, 0x0D4D, 0x0E34, 0x0E3A, 0x0E47, 0x0E4E, 0x0EB4, 0x0EB9,

+            0x0EBB, 0x0EBC, 0x0EC8, 0x0ECD, 0x0F18, 0x0F19, 0x0F71, 0x0F84,

+            0x0F86, 0x0F8B, 0x0F90, 0x0F95, 0x0F99, 0x0FAD, 0x0FB1, 0x0FB7,

+            0x20D0, 0x20DC, 0x302A, 0x302F,

+        };

+

+        int combiningCharChar[] = {

+            0x05BF, 0x05C4, 0x0670, 0x093C, 0x094D, 0x09BC, 0x09BE, 0x09BF,

+            0x09D7, 0x0A02, 0x0A3C, 0x0A3E, 0x0A3F, 0x0ABC, 0x0B3C, 0x0BD7,

+            0x0D57, 0x0E31, 0x0EB1, 0x0F35, 0x0F37, 0x0F39, 0x0F3E, 0x0F3F,

+            0x0F97, 0x0FB9, 0x20E1, 0x3099, 0x309A,

+        };

+

+        //

+        // [88] Digit ::= ...

+        //

+

+        int digitRange[] = {

+            0x0030, 0x0039, 0x0660, 0x0669, 0x06F0, 0x06F9, 0x0966, 0x096F,

+            0x09E6, 0x09EF, 0x0A66, 0x0A6F, 0x0AE6, 0x0AEF, 0x0B66, 0x0B6F,

+            0x0BE7, 0x0BEF, 0x0C66, 0x0C6F, 0x0CE6, 0x0CEF, 0x0D66, 0x0D6F,

+            0x0E50, 0x0E59, 0x0ED0, 0x0ED9, 0x0F20, 0x0F29,

+        };

+

+        //

+        // [89] Extender ::= ...

+        //

+

+        int extenderRange[] = {

+            0x3031, 0x3035, 0x309D, 0x309E, 0x30FC, 0x30FE,

+        };

+

+        int extenderChar[] = {

+            0x00B7, 0x02D0, 0x02D1, 0x0387, 0x0640, 0x0E46, 0x0EC6, 0x3005,

+        };

+

+        //

+        // SpecialChar ::= '<', '&', '\n', '\r', ']'

+        //

+

+        int specialChar[] = {

+            '<', '&', '\n', '\r', ']',

+        };

+

+        //

+        // Initialize

+        //

+

+        // set valid characters

+        for (int i = 0; i < charRange.length; i += 2) {

+            for (int j = charRange[i]; j <= charRange[i + 1]; j++) {

+                CHARS[j] |= MASK_VALID | MASK_CONTENT;

+            }

+        }

+

+        // remove special characters

+        for (int i = 0; i < specialChar.length; i++) {

+            CHARS[specialChar[i]] = (byte)(CHARS[specialChar[i]] & ~MASK_CONTENT);

+        }

+

+        // set space characters

+        for (int i = 0; i < spaceChar.length; i++) {

+            CHARS[spaceChar[i]] |= MASK_SPACE;

+        }

+

+        // set name start characters

+        for (int i = 0; i < nameStartChar.length; i++) {

+            CHARS[nameStartChar[i]] |= MASK_NAME_START | MASK_NAME |

+                                       MASK_NCNAME_START | MASK_NCNAME;

+        }

+        for (int i = 0; i < letterRange.length; i += 2) {

+            for (int j = letterRange[i]; j <= letterRange[i + 1]; j++) {

+                CHARS[j] |= MASK_NAME_START | MASK_NAME |

+                            MASK_NCNAME_START | MASK_NCNAME;

+            }

+        }

+        for (int i = 0; i < letterChar.length; i++) {

+            CHARS[letterChar[i]] |= MASK_NAME_START | MASK_NAME |

+                                    MASK_NCNAME_START | MASK_NCNAME;

+        }

+

+        // set name characters

+        for (int i = 0; i < nameChar.length; i++) {

+            CHARS[nameChar[i]] |= MASK_NAME | MASK_NCNAME;

+        }

+        for (int i = 0; i < digitRange.length; i += 2) {

+            for (int j = digitRange[i]; j <= digitRange[i + 1]; j++) {

+                CHARS[j] |= MASK_NAME | MASK_NCNAME;

+            }

+        }

+        for (int i = 0; i < combiningCharRange.length; i += 2) {

+            for (int j = combiningCharRange[i]; j <= combiningCharRange[i + 1]; j++) {

+                CHARS[j] |= MASK_NAME | MASK_NCNAME;

+            }

+        }

+        for (int i = 0; i < combiningCharChar.length; i++) {

+            CHARS[combiningCharChar[i]] |= MASK_NAME | MASK_NCNAME;

+        }

+        for (int i = 0; i < extenderRange.length; i += 2) {

+            for (int j = extenderRange[i]; j <= extenderRange[i + 1]; j++) {

+                CHARS[j] |= MASK_NAME | MASK_NCNAME;

+            }

+        }

+        for (int i = 0; i < extenderChar.length; i++) {

+            CHARS[extenderChar[i]] |= MASK_NAME | MASK_NCNAME;

+        }

+

+        // remove ':' from allowable MASK_NCNAME_START and MASK_NCNAME chars

+        CHARS[':'] &= ~(MASK_NCNAME_START | MASK_NCNAME);

+

+        // set Pubid characters

+        for (int i = 0; i < pubidChar.length; i++) {

+            CHARS[pubidChar[i]] |= MASK_PUBID;

+        }

+        for (int i = 0; i < pubidRange.length; i += 2) {

+            for (int j = pubidRange[i]; j <= pubidRange[i + 1]; j++) {

+                CHARS[j] |= MASK_PUBID;

+            }

+        }

+

+    } // <clinit>()

+

+    //

+    // Public static methods

+    //

+

+    /**

+     * Returns true if the specified character is a supplemental character.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isSupplemental(int c) {

+        return (c >= 0x10000 && c <= 0x10FFFF);

+    }

+

+    /**

+     * Returns true the supplemental character corresponding to the given

+     * surrogates.

+     *

+     * @param h The high surrogate.

+     * @param l The low surrogate.

+     */

+    public static int supplemental(char h, char l) {

+        return (h - 0xD800) * 0x400 + (l - 0xDC00) + 0x10000;

+    }

+

+    /**

+     * Returns the high surrogate of a supplemental character

+     *

+     * @param c The supplemental character to "split".

+     */

+    public static char highSurrogate(int c) {

+        return (char) (((c - 0x00010000) >> 10) + 0xD800);

+    }

+

+    /**

+     * Returns the low surrogate of a supplemental character

+     *

+     * @param c The supplemental character to "split".

+     */

+    public static char lowSurrogate(int c) {

+        return (char) (((c - 0x00010000) & 0x3FF) + 0xDC00);

+    }

+

+    /**

+     * Returns whether the given character is a high surrogate

+     *

+     * @param c The character to check.

+     */

+    public static boolean isHighSurrogate(int c) {

+        return (0xD800 <= c && c <= 0xDBFF);

+    }

+

+    /**

+     * Returns whether the given character is a low surrogate

+     *

+     * @param c The character to check.

+     */

+    public static boolean isLowSurrogate(int c) {

+        return (0xDC00 <= c && c <= 0xDFFF);

+    }

+

+

+    /**

+     * Returns true if the specified character is valid. This method

+     * also checks the surrogate character range from 0x10000 to 0x10FFFF.

+     * <p>

+     * If the program chooses to apply the mask directly to the

+     * <code>CHARS</code> array, then they are responsible for checking

+     * the surrogate character range.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isValid(int c) {

+        return (c < 0x10000 && (CHARS[c] & MASK_VALID) != 0) ||

+               (0x10000 <= c && c <= 0x10FFFF);

+    } // isValid(int):boolean

+

+    /**

+     * Returns true if the specified character is invalid.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isInvalid(int c) {

+        return !isValid(c);

+    } // isInvalid(int):boolean

+

+    /**

+     * Returns true if the specified character can be considered content.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isContent(int c) {

+        return (c < 0x10000 && (CHARS[c] & MASK_CONTENT) != 0) ||

+               (0x10000 <= c && c <= 0x10FFFF);

+    } // isContent(int):boolean

+

+    /**

+     * Returns true if the specified character can be considered markup.

+     * Markup characters include '&lt;', '&amp;', and '%'.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isMarkup(int c) {

+        return c == '<' || c == '&' || c == '%';

+    } // isMarkup(int):boolean

+

+    /**

+     * Returns true if the specified character is a space character

+     * as defined by production [3] in the XML 1.0 specification.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isSpace(int c) {

+        return c < 0x10000 && (CHARS[c] & MASK_SPACE) != 0;

+    } // isSpace(int):boolean

+

+    /**

+     * Returns true if the specified character is a space character

+     * as amdended in the XML 1.1 specification.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isXML11Space(int c) {

+        return (c < 0x10000 && (CHARS[c] & MASK_SPACE) != 0) ||

+            c == 0x85 || c == 0x2028;

+    } // isXML11Space(int):boolean

+

+    /**

+     * Returns true if the specified character is a valid name start

+     * character as defined by production [5] in the XML 1.0

+     * specification.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isNameStart(int c) {

+        return c < 0x10000 && (CHARS[c] & MASK_NAME_START) != 0;

+    } // isNameStart(int):boolean

+

+    /**

+     * Returns true if the specified character is a valid name

+     * character as defined by production [4] in the XML 1.0

+     * specification.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isName(int c) {

+        return c < 0x10000 && (CHARS[c] & MASK_NAME) != 0;

+    } // isName(int):boolean

+

+    /**

+     * Returns true if the specified character is a valid NCName start

+     * character as defined by production [4] in Namespaces in XML

+     * recommendation.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isNCNameStart(int c) {

+        return c < 0x10000 && (CHARS[c] & MASK_NCNAME_START) != 0;

+    } // isNCNameStart(int):boolean

+

+    /**

+     * Returns true if the specified character is a valid NCName

+     * character as defined by production [5] in Namespaces in XML

+     * recommendation.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isNCName(int c) {

+        return c < 0x10000 && (CHARS[c] & MASK_NCNAME) != 0;

+    } // isNCName(int):boolean

+

+    /**

+     * Returns true if the specified character is a valid Pubid

+     * character as defined by production [13] in the XML 1.0

+     * specification.

+     *

+     * @param c The character to check.

+     */

+    public static boolean isPubid(int c) {

+        return c < 0x10000 && (CHARS[c] & MASK_PUBID) != 0;

+    } // isPubid(int):boolean

+

+    /*

+     * [5] Name ::= (Letter | '_' | ':') (NameChar)*

+     */

+    /**

+     * Check to see if a string is a valid Name according to [5]

+     * in the XML 1.0 Recommendation

+     *

+     * @param name string to check

+     * @return true if name is a valid Name

+     */

+    public static boolean isValidName(String name) {

+        if (name.length() == 0)

+            return false;

+        char ch = name.charAt(0);

+        if(!isNameStart(ch))

+           return false;

+        for (int i = 1; i < name.length(); i++ ) {

+           ch = name.charAt(i);

+           if(!isName(ch) ){

+              return false;

+           }

+        }

+        return true;

+    } // isValidName(String):boolean

+

+

+    /*

+     * from the namespace rec

+     * [4] NCName ::= (Letter | '_') (NCNameChar)*

+     */

+    /**

+     * Check to see if a string is a valid NCName according to [4]

+     * from the XML Namespaces 1.0 Recommendation

+     *

+     * @param ncName string to check

+     * @return true if name is a valid NCName

+     */

+    public static boolean isValidNCName(String ncName) {

+        if (ncName.length() == 0)

+            return false;

+        char ch = ncName.charAt(0);

+        if(!isNCNameStart(ch))

+           return false;

+        for (int i = 1; i < ncName.length(); i++ ) {

+           ch = ncName.charAt(i);

+           if(!isNCName(ch) ){

+              return false;

+           }

+        }

+        return true;

+    } // isValidNCName(String):boolean

+

+    /*

+     * [7] Nmtoken ::= (NameChar)+

+     */

+    /**

+     * Check to see if a string is a valid Nmtoken according to [7]

+     * in the XML 1.0 Recommendation

+     *

+     * @param nmtoken string to check

+     * @return true if nmtoken is a valid Nmtoken

+     */

+    public static boolean isValidNmtoken(String nmtoken) {

+        if (nmtoken.length() == 0)

+            return false;

+        for (int i = 0; i < nmtoken.length(); i++ ) {

+           char ch = nmtoken.charAt(i);

+           if(  ! isName( ch ) ){

+              return false;

+           }

+        }

+        return true;

+    } // isValidName(String):boolean

+

+

+

+

+

+    // encodings

+

+    /**

+     * Returns true if the encoding name is a valid IANA encoding.

+     * This method does not verify that there is a decoder available

+     * for this encoding, only that the characters are valid for an

+     * IANA encoding name.

+     *

+     * @param ianaEncoding The IANA encoding name.

+     */

+    public static boolean isValidIANAEncoding(String ianaEncoding) {

+        if (ianaEncoding != null) {

+            int length = ianaEncoding.length();

+            if (length > 0) {

+                char c = ianaEncoding.charAt(0);

+                if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {

+                    for (int i = 1; i < length; i++) {

+                        c = ianaEncoding.charAt(i);

+                        if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z') &&

+                            (c < '0' || c > '9') && c != '.' && c != '_' &&

+                            c != '-') {

+                            return false;

+                        }

+                    }

+                    return true;

+                }

+            }

+        }

+        return false;

+    } // isValidIANAEncoding(String):boolean

+

+    /**

+     * Returns true if the encoding name is a valid Java encoding.

+     * This method does not verify that there is a decoder available

+     * for this encoding, only that the characters are valid for an

+     * Java encoding name.

+     *

+     * @param javaEncoding The Java encoding name.

+     */

+    public static boolean isValidJavaEncoding(String javaEncoding) {

+        if (javaEncoding != null) {

+            int length = javaEncoding.length();

+            if (length > 0) {

+                for (int i = 1; i < length; i++) {

+                    char c = javaEncoding.charAt(i);

+                    if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z') &&

+                        (c < '0' || c > '9') && c != '.' && c != '_' &&

+                        c != '-') {

+                        return false;

+                    }

+                }

+                return true;

+            }

+        }

+        return false;

+    } // isValidIANAEncoding(String):boolean

+

+} // class XMLChar

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLPrettyPrinter.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLPrettyPrinter.java
new file mode 100644
index 0000000..0aadace
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLPrettyPrinter.java
@@ -0,0 +1,106 @@
+package org.apache.axis2.util;

+

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.FileOutputStream;

+import java.io.InputStream;

+import java.io.OutputStream;

+import java.lang.reflect.Method;

+/*

+ * Copyright 2004,2005 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.

+ */

+/**

+ *   An XML pretty printer based on jtidy (http://sourceforge.net/projects/jtidy)

+ *   The Jtidy jar needs to be in classpath for this to work and can be found at

+ *   http://sourceforge.net/project/showfiles.php?group_id=13153

+ * 

+ */

+public class XMLPrettyPrinter {

+

+    private static final Log log = LogFactory.getLog(XMLPrettyPrinter.class);

+    private static final String PRETTIFIED_SUFFIX = ".prettyfied";

+

+

+    /**

+     * Pretty prints contents of the java source file.

+     *

+     * @param file

+     */

+    public static void prettify(File file) {

+        try{

+            // Create an instance of the Jalopy bean

+            Class clazz = Loader.loadClass("org.w3c.tidy.Tidy");

+            Object prettifier = clazz.newInstance();

+

+            //set the input to be xml

+            Method setXmlInFlagMethod = clazz.getMethod(

+                    "setXmlTags",

+                    new Class[]{boolean.class});

+            setXmlInFlagMethod.invoke(prettifier,

+                    new Object[]{Boolean.TRUE});

+

+            //set the output to be xml

+            Method setXmlOutFlagMethod = clazz.getMethod(

+                    "setXmlOut",

+                    new Class[]{boolean.class});

+            setXmlOutFlagMethod.invoke(prettifier,

+                    new Object[]{Boolean.TRUE});

+

+            //create the input stream

+            InputStream input = new FileInputStream(file);

+

+            //create a new file with "prettyfied"  attached

+            // to existing file name

+            String existingFileName = file.getAbsolutePath();

+            String tempFileName = existingFileName + PRETTIFIED_SUFFIX;

+

+            File tempFile = new File(tempFileName);

+            FileOutputStream tempFileOutputStream = new FileOutputStream(tempFile);

+            //Call the pretty printer

+            Method parsr = clazz.getMethod("parse", new Class[]{

+                    InputStream.class,

+                    OutputStream.class});

+

+            parsr.invoke(prettifier, new Object[]{input,

+                    tempFileOutputStream});

+

+            //rename and restore the pretty printed one as the original

+

+            //first close the streams. if not this may cause the

+            // files not to be renamed

+            input.close();

+            tempFileOutputStream.close();

+            //delete the original

+            file.delete();

+

+            if (!tempFile.renameTo(new File(existingFileName))){

+                throw new Exception("File renaming failed!" + existingFileName);

+            }

+            log.debug("Pretty printed file : " + file);

+        } catch (ClassNotFoundException e) {

+            log.debug("Tidy not found - unable to pretty print " + file);

+        } catch (Exception e) {

+            log.warn("Exception occurred while trying to pretty print file " + file, e);

+        } catch (Throwable t) {

+            log.debug("Exception occurred while trying to pretty print file " + file, t);

+        }

+

+    }

+

+

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLUtils.java
new file mode 100644
index 0000000..bc98000
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XMLUtils.java
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2004,2005 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.axis2.util;
+
+import com.ibm.wsdl.Constants;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.w3c.dom.Attr;
+import org.w3c.dom.CharacterData;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.XMLReader;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Stack;
+
+
+public class XMLUtils {
+    public static final String charEncoding = "ISO-8859-1";
+    private static final String saxParserFactoryProperty =
+        "javax.xml.parsers.SAXParserFactory";
+
+    private static DocumentBuilderFactory dbf = getDOMFactory();
+    private static SAXParserFactory       saxFactory;
+    private static Stack                  saxParsers = new Stack();
+
+    private static String empty = "";
+    private static ByteArrayInputStream bais = new ByteArrayInputStream(empty.getBytes());
+
+    static {
+        // Initialize SAX Parser factory defaults
+        initSAXFactory(null, true, false);
+    }
+
+    /** 
+     * Initializes the SAX parser factory.
+     *
+     * @param factoryClassName The (optional) class name of the desired
+     *                         SAXParserFactory implementation. Will be
+     *                         assigned to the system property
+     *                         <b>javax.xml.parsers.SAXParserFactory</b>
+     *                         unless this property is already set.
+     *                         If <code>null</code>, leaves current setting
+     *                         alone.
+     * @param namespaceAware true if we want a namespace-aware parser
+     * @param validating true if we want a validating parser
+     *
+     */
+    public static void initSAXFactory(String factoryClassName,
+                                      boolean namespaceAware,
+                                      boolean validating)
+    {
+        if (factoryClassName != null) {
+            try {
+                saxFactory = (SAXParserFactory)Loader.loadClass(factoryClassName).
+                    newInstance();
+                /*
+                 * Set the system property only if it is not already set to
+                 * avoid corrupting environments in which Axis is embedded.
+                 */
+                if (System.getProperty(saxParserFactoryProperty) == null) {
+                    System.setProperty(saxParserFactoryProperty,
+                                       factoryClassName);
+                }
+            } catch (Exception e) {
+                //log.error(Messages.getMessage("exception00"), e);
+                saxFactory = null;
+            }
+       } else {
+            saxFactory = SAXParserFactory.newInstance();
+        }
+        saxFactory.setNamespaceAware(namespaceAware);
+        saxFactory.setValidating(validating);
+
+        // Discard existing parsers
+        saxParsers.clear();
+    }
+
+    private static DocumentBuilderFactory getDOMFactory() {
+        DocumentBuilderFactory dbf;
+        try {
+            dbf = DocumentBuilderFactory.newInstance();
+            dbf.setNamespaceAware(true);
+        }
+        catch( Exception e ) {
+            //log.error(Messages.getMessage("exception00"), e );
+            dbf = null;
+        }
+        return( dbf );
+    }
+    
+    private static boolean tryReset= true;
+
+    /** 
+     * Returns a SAX parser for reuse.
+     * @param parser A SAX parser that is available for reuse
+     */
+    public static void releaseSAXParser(SAXParser parser) {
+        if(!tryReset) return;
+
+        //Free up possible ref. held by past contenthandler.
+        try{
+            XMLReader xmlReader= parser.getXMLReader();
+            if(null != xmlReader){
+                synchronized (XMLUtils.class ) {
+                    saxParsers.push(parser);
+                }
+            }
+            else {
+                tryReset= false;
+            }
+        } catch (org.xml.sax.SAXException e) {
+            tryReset= false;
+        }
+    }
+    /**
+     * Gets an empty new Document.
+     * @return Returns Document.
+     * @throws ParserConfigurationException if construction problems occur
+     */
+    public static Document newDocument() 
+         throws ParserConfigurationException
+    {
+        synchronized (dbf) {
+            return dbf.newDocumentBuilder().newDocument();
+        }
+    }
+
+    /**
+     * Gets a new Document read from the input source.
+     * @return Returns Document.
+     * @throws ParserConfigurationException if construction problems occur
+     * @throws SAXException if the document has xml sax problems
+     * @throws IOException if i/o exceptions occur
+     */
+    public static Document newDocument(InputSource inp)
+        throws ParserConfigurationException, SAXException, IOException
+    {
+        DocumentBuilder db;
+        synchronized (dbf) {
+            db = dbf.newDocumentBuilder();
+        }
+        db.setEntityResolver(new DefaultEntityResolver());
+        db.setErrorHandler( new ParserErrorHandler() );
+        return( db.parse( inp ) );
+    }
+
+    /**
+     * Gets a new Document read from the input stream
+     * @return Returns Document.
+     * @throws ParserConfigurationException if construction problems occur
+     * @throws SAXException if the document has xml sax problems
+     * @throws IOException if i/o exceptions occur
+     */
+    public static Document newDocument(InputStream inp) 
+        throws ParserConfigurationException, SAXException, IOException 
+    {
+        return XMLUtils.newDocument(new InputSource(inp));
+    } 
+
+    /**
+     * Gets a new Document read from the indicated uri
+     * @return Returns Document.
+     * @throws ParserConfigurationException if construction problems occur
+     * @throws SAXException if the document has xml sax problems
+     * @throws IOException if i/o exceptions occur
+     */
+    public static Document newDocument(String uri) 
+        throws ParserConfigurationException, SAXException, IOException 
+    {
+        // call the authenticated version as there might be 
+        // username/password info embeded in the uri.
+        return XMLUtils.newDocument(uri, null, null);
+    }
+    
+    /**
+     * Creates a new document from the given URI. Uses the username and password
+     * if the URI requires authentication.
+     * @param uri the resource to get
+     * @param username basic auth username
+     * @param password basic auth password
+     * @throws ParserConfigurationException if construction problems occur
+     * @throws SAXException if the document has xml sax problems
+     * @throws IOException if i/o exceptions occur
+     */ 
+    public static Document newDocument(String uri, String username, String password)
+        throws ParserConfigurationException, SAXException, IOException
+     {
+         InputSource ins = XMLUtils.getInputSourceFromURI(uri, username, password);
+         Document doc = XMLUtils.newDocument(ins);
+         // Close the Stream
+         if (ins.getByteStream() != null) {
+             ins.getByteStream().close();
+         } else if (ins.getCharacterStream() != null) {
+             ins.getCharacterStream().close();
+         }
+         return doc;
+     }
+
+
+
+    public static String getPrefix(String uri, Node e) {
+        while (e != null && (e.getNodeType() == Element.ELEMENT_NODE)) {
+            NamedNodeMap attrs = e.getAttributes();
+            for (int n = 0; n < attrs.getLength(); n++) {
+                Attr a = (Attr)attrs.item(n);
+                String name;
+                if ((name = a.getName()).startsWith("xmlns:") &&
+                    a.getNodeValue().equals(uri)) {
+                    return name.substring(6);
+                }
+            }
+            e = e.getParentNode();
+        }
+        return null;
+    }
+
+    public static String getNamespace(String prefix, Node e) {
+        while (e != null && (e.getNodeType() == Node.ELEMENT_NODE)) {
+            Attr attr =
+                ((Element)e).getAttributeNodeNS(Constants.NS_URI_XMLNS, prefix);
+            if (attr != null) return attr.getValue();
+            e = e.getParentNode();
+        }
+        return null;
+    }
+
+    /**
+     * Returns a QName when passed a string like "foo:bar" by mapping
+     * the "foo" prefix to a namespace in the context of the given Node.
+     *
+     * @return Returns a QName generated from the given string representation.
+     */
+    public static QName getQNameFromString(String str, Node e) {
+        if (str == null || e == null)
+            return null;
+
+        int idx = str.indexOf(':');
+        if (idx > -1) {
+            String prefix = str.substring(0, idx);
+            String ns = getNamespace(prefix, e);
+            if (ns == null)
+                return null;
+            return new QName(ns, str.substring(idx + 1));
+        } else {
+            return new QName("", str);
+        }
+    }
+
+    /**
+     * Returns a string for a particular QName, mapping a new prefix
+     * if necessary.
+     */
+    public static String getStringForQName(QName qname, Element e)
+    {
+        String uri = qname.getNamespaceURI();
+        String prefix = getPrefix(uri, e);
+        if (prefix == null) {
+            int i = 1;
+            prefix = "ns" + i;
+            while (getNamespace(prefix, e) != null) {
+                i++;
+                prefix = "ns" + i;
+            }
+            e.setAttributeNS(Constants.NS_URI_XMLNS,
+                        "xmlns:" + prefix, uri);
+        }
+        return prefix + ":" + qname.getLocalPart();
+    }
+
+  /**
+   * Concatinates all the text and cdata node children of this elem and returns
+   * the resulting text.
+   * (by Matt Duftler)
+   *
+   * @param parentEl the element whose cdata/text node values are to
+   *                 be combined.
+   * @return Returns the concatinated string.
+   */
+  public static String getChildCharacterData (Element parentEl) {
+    if (parentEl == null) {
+      return null;
+    }
+    Node          tempNode = parentEl.getFirstChild();
+    StringBuffer  strBuf   = new StringBuffer();
+    CharacterData charData;
+
+    while (tempNode != null) {
+      switch (tempNode.getNodeType()) {
+        case Node.TEXT_NODE :
+        case Node.CDATA_SECTION_NODE : charData = (CharacterData)tempNode;
+                                       strBuf.append(charData.getData());
+                                       break;
+      }
+      tempNode = tempNode.getNextSibling();
+    }
+    return strBuf.toString();
+  }
+    
+    public static class ParserErrorHandler implements ErrorHandler
+    {
+        /**
+         * Returns a string describing parse exception details
+         */
+        private String getParseExceptionInfo(SAXParseException spe) {
+            String systemId = spe.getSystemId();
+            if (systemId == null) {
+                systemId = "null";
+            }
+            return "URI=" + systemId +
+                " Line=" + spe.getLineNumber() +
+                ": " + spe.getMessage();
+        }
+
+        // The following methods are standard SAX ErrorHandler methods.
+        // See SAX documentation for more info.
+
+        public void warning(SAXParseException spe) throws SAXException {
+        }
+        
+        public void error(SAXParseException spe) throws SAXException {
+            String message = "Error: " + getParseExceptionInfo(spe);
+            throw new SAXException(message);
+        }
+
+        public void fatalError(SAXParseException spe) throws SAXException {
+            String message = "Fatal Error: " + getParseExceptionInfo(spe);
+            throw new SAXException(message);
+        }
+    }
+
+
+    /**
+     * Utility to get the bytes uri.
+     * Does NOT handle authenticated URLs, 
+     * use getInputSourceFromURI(uri, username, password)
+     *
+     * @param uri the resource to get
+     */
+    public static InputSource getInputSourceFromURI(String uri) {
+        return new InputSource(uri);
+    }
+
+
+
+    /**
+     * Utility to get the bytes at a protected uri
+     * 
+     * Retrieves the URL if a username and password are provided.
+     * The java.net.URL class does not do Basic Authentication, so we have to
+     * do it manually in this routine.
+     * 
+     * If no username is provided, creates an InputSource from the uri
+     * and lets the InputSource go fetch the contents.
+     * 
+     * @param uri the resource to get
+     * @param username basic auth username
+     * @param password basic auth password
+     */ 
+    private static InputSource getInputSourceFromURI(String uri,
+                                                     String username,
+                                                     String password)
+        throws IOException, ProtocolException, UnsupportedEncodingException
+    {
+        URL wsdlurl = null;
+        try {
+            wsdlurl = new URL(uri);
+        } catch (MalformedURLException e) {
+            // we can't process it, it might be a 'simple' foo.wsdl
+            // let InputSource deal with it
+            return new InputSource(uri);
+        }
+        
+        // if no authentication, just let InputSource deal with it
+        if (username == null && wsdlurl.getUserInfo() == null) {
+            return new InputSource(uri);
+        }
+        
+        // if this is not an HTTP{S} url, let InputSource deal with it
+        if (!wsdlurl.getProtocol().startsWith("http")) {
+            return new InputSource(uri);
+        }
+
+        URLConnection connection = wsdlurl.openConnection();
+        // Does this work for https???
+        if (!(connection instanceof HttpURLConnection)) {
+            // can't do http with this URL, let InputSource deal with it
+            return new InputSource(uri);
+        }
+        HttpURLConnection uconn = (HttpURLConnection) connection;
+        String userinfo = wsdlurl.getUserInfo();
+        uconn.setRequestMethod("GET");
+        uconn.setAllowUserInteraction(false);
+        uconn.setDefaultUseCaches(false);
+        uconn.setDoInput(true);
+        uconn.setDoOutput(false);
+        uconn.setInstanceFollowRedirects(true);
+        uconn.setUseCaches(false);
+
+        // username/password info in the URL overrides passed in values 
+        String auth = null;
+        if (userinfo != null) {
+            auth = userinfo;
+        } else if (username != null) {
+            auth = (password == null) ? username : username + ":" + password;
+        }
+        
+        if (auth != null) {
+            uconn.setRequestProperty("Authorization",
+                                     "Basic " + 
+                                     base64encode(auth.getBytes(charEncoding)));
+        }
+        
+        uconn.connect();
+
+        return new InputSource(uconn.getInputStream());
+    }
+
+    public static String base64encode(byte[] bytes) {
+        return Base64.encode(bytes);
+    }
+
+    public static InputSource getEmptyInputSource() {
+        return new InputSource(bais);
+    }
+    
+    /**
+     * Finds a Node with a given QNameb.
+     * 
+     * @param node parent node
+     * @param name QName of the child we need to find
+     * @return Returns child node.
+     */ 
+    public static Node findNode(Node node, QName name){
+        if(name.getNamespaceURI().equals(node.getNamespaceURI()) && 
+           name.getLocalPart().equals(node.getLocalName()))
+            return node;
+        NodeList children = node.getChildNodes();
+        for(int i=0;i<children.getLength();i++){
+            Node ret = findNode(children.item(i), name);
+            if(ret != null)
+                return ret;
+        }
+        return null;
+    }
+    
+    /**
+     * Converts a given DOM Element to an OMElement.
+     * @param element
+     * @return Returns OMElement.
+     * @throws Exception
+     */
+    public static OMElement toOM(Element element) throws Exception {
+
+        Source source = new DOMSource(element);
+         
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        Result result = new StreamResult(baos);
+
+        Transformer xformer = TransformerFactory.newInstance().newTransformer();
+        xformer.transform(source, result);
+
+        ByteArrayInputStream is = new ByteArrayInputStream(baos.toByteArray());
+        XMLStreamReader reader = StAXUtils
+                .createXMLStreamReader(is);
+
+        StAXOMBuilder builder = new StAXOMBuilder(reader);
+        builder.setCache(true);
+
+        return builder.getDocumentElement();
+    }
+    
+
+    /**
+     * Converts a given OMElement to a DOM Element.
+     * @param element
+     * @return Returns Element.
+     * @throws Exception
+     */
+    public static Element toDOM(OMElement element) throws Exception {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            element.serialize(baos);
+            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+    
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            factory.setNamespaceAware(true);
+            return factory.newDocumentBuilder().parse(bais).getDocumentElement();
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XSLTTemplateProcessor.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XSLTTemplateProcessor.java
new file mode 100644
index 0000000..7d7463b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XSLTTemplateProcessor.java
@@ -0,0 +1,156 @@
+/*

+ * Copyright 2004,2005 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.axis2.util;

+

+

+import org.w3c.dom.Document;

+

+import javax.xml.transform.Result;

+import javax.xml.transform.Source;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerException;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.TransformerFactoryConfigurationError;

+import javax.xml.transform.URIResolver;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.transform.stream.StreamSource;

+import java.io.InputStream;

+import java.io.OutputStream;

+

+

+public class XSLTTemplateProcessor {

+

+    /**

+     * Parses an XML stream with an XSL stream

+     *

+     * @param out        Stream to write the output

+     * @param xmlStream  Source XML stream

+     * @param xsltStream Source XSL stream

+     * @throws TransformerFactoryConfigurationError

+     *

+     * @throws TransformerException

+     */

+    public static void parse(OutputStream out,

+                             InputStream xmlStream,

+                             InputStream xsltStream)

+            throws TransformerFactoryConfigurationError, TransformerException {

+        Source xmlSource = new StreamSource(xmlStream);

+        Source xsltSource = new StreamSource(xsltStream);

+        Result result = new StreamResult(out);

+        Transformer transformer = TransformerFactory.newInstance()

+                .newTransformer(xsltSource);

+        transformer.transform(xmlSource, result);

+

+    }

+

+    /**

+     * Parses an XML stream with an XSL stream

+     *

+     * @param out       Stream to write the output

+     * @param doc

+     * @param transformer

+     * @throws TransformerFactoryConfigurationError

+     *

+     * @throws TransformerException

+     */

+    public static void parse(OutputStream out,

+                             Document doc,

+                             Transformer transformer)

+            throws TransformerFactoryConfigurationError, TransformerException {

+        Source xmlSource = new DOMSource(doc);

+        Result result = new StreamResult(out);

+        transformer.transform(xmlSource, result);

+

+    }

+

+

+

+    /**

+     * @param out

+     * @param document

+     * @param xsltStream

+     * @throws TransformerFactoryConfigurationError

+     *

+     * @throws TransformerException

+     */

+    public static void parse(OutputStream out,

+                             Document document,

+                             InputStream xsltStream)

+            throws TransformerFactoryConfigurationError, TransformerException {

+        Source xsltSource = new StreamSource(xsltStream);

+        Transformer transformer = TransformerFactory.newInstance()

+                .newTransformer(xsltSource);

+        parse(out, document, transformer);

+

+    }

+

+    /**

+     * @param out

+     * @param document

+     * @param xsltStream

+     * @throws TransformerFactoryConfigurationError

+     *

+     * @throws TransformerException

+     */

+    public static void parse(OutputStream out,

+                             Document document,

+                             InputStream xsltStream,

+                             URIResolver customResolver)

+            throws TransformerFactoryConfigurationError, TransformerException {

+        parse(out, document, xsltStream, customResolver, false);

+    }

+

+    /**

+     * @param out

+     * @param document

+     * @param xsltStream

+     * @throws TransformerFactoryConfigurationError

+     *

+     * @throws TransformerException

+     */

+    public static void parse(OutputStream out,

+                             Document document,

+                             InputStream xsltStream,

+                             URIResolver customResolver,

+                             boolean pretty)

+            throws TransformerFactoryConfigurationError, TransformerException {

+        Source xsltSource = new StreamSource(xsltStream);

+        TransformerFactory transformerFactory = TransformerFactory.newInstance();

+        if(pretty) {

+            try {

+                transformerFactory.setAttribute("indent-number", new Integer(2));

+            } catch (Exception e) {

+            }

+        }

+        if (customResolver!=null){

+             transformerFactory.setURIResolver(customResolver);

+        }

+       

+        Transformer transformer = transformerFactory

+                .newTransformer(xsltSource);

+        if(pretty) {

+            try {

+                transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "2");

+            } catch (Exception e) {

+            }

+        }

+

+        parse(out, document, transformer);

+

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XSLTUtils.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XSLTUtils.java
new file mode 100644
index 0000000..f405690
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/XSLTUtils.java
@@ -0,0 +1,73 @@
+package org.apache.axis2.util;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class XSLTUtils {
+
+    public static Document getDocument() throws ParserConfigurationException {
+        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+        documentBuilderFactory.setNamespaceAware(true);
+        return documentBuilderFactory.newDocumentBuilder().newDocument();
+    }
+
+    /**
+     * Utility method to add an attribute to a given element
+     *
+     * @param document
+     * @param AttribName
+     * @param attribValue
+     * @param element
+     */
+    public static void addAttribute(Document document,
+                                    String AttribName,
+                                    String attribValue,
+                                    Element element) {
+        Attr attribute = document.createAttribute(AttribName);
+        attribute.setValue(attribValue);
+        element.setAttributeNode(attribute);
+    }
+
+    public static Element getElement(Document document,
+                                     String elementName) {
+        return document.createElement(elementName);
+
+    }
+
+
+    /**
+     * Utility method to add an attribute to a given element
+     *
+     * @param document
+     * @param elementName
+     * @param parentNode
+     */
+    public static Element addChildElement(Document document,
+                                          String elementName,
+                                          Node parentNode) {
+        Element elt = document.createElement(elementName);
+        parentNode.appendChild(elt);
+        return elt;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/DefaultThreadFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/DefaultThreadFactory.java
new file mode 100644
index 0000000..ec05747
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/DefaultThreadFactory.java
@@ -0,0 +1,49 @@
+/*
+* Copyright 2004,2005 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.axis2.util.threadpool;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadFactory;
+import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * This is a simple ThreadFactory implementation using java.util.concurrent
+ * Creates threads with the given name prefix
+ */
+public class DefaultThreadFactory implements ThreadFactory {
+                                 
+    final ThreadGroup group;
+    final AtomicInteger count;
+    final String namePrefix;
+
+    public DefaultThreadFactory(final ThreadGroup group, final String namePrefix) {
+        super();
+        this.count = new AtomicInteger(1);
+        this.group = group;
+        this.namePrefix = namePrefix;
+    }
+
+    public Thread newThread(final Runnable runnable) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(this.namePrefix);
+        buffer.append('-');
+        buffer.append(this.count.getAndIncrement());
+        Thread t = new Thread(group, runnable, buffer.toString(), 0);
+        t.setDaemon(false);
+        t.setPriority(Thread.NORM_PRIORITY);
+        return t;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/ThreadFactory.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/ThreadFactory.java
new file mode 100644
index 0000000..5d260f0
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/ThreadFactory.java
@@ -0,0 +1,21 @@
+/*
+* Copyright 2004,2005 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.axis2.util.threadpool;
+
+public interface ThreadFactory {
+    public void execute(java.lang.Runnable runnable);
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/ThreadPool.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/ThreadPool.java
new file mode 100644
index 0000000..edec52f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/util/threadpool/ThreadPool.java
@@ -0,0 +1,111 @@
+/*
+* Copyright 2004,2005 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.axis2.util.threadpool;
+
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.SynchronousQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.i18n.Messages;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This the thread pool for axis2. This class will be used a singleton
+ * across axis2 engine. <code>ThreadPool</code> is accepts <code>AxisWorkers</code> which has
+ * run method on them and execute this method, using one of the threads
+ * in the thread pool.
+ */
+public class ThreadPool implements ThreadFactory {
+	private static final Log log = LogFactory.getLog(ThreadPool.class);
+    protected static long SLEEP_INTERVAL = 1000;
+    private static boolean shutDown;
+    protected ThreadPoolExecutor executor;
+    
+    //integers that define the pool size, with the default values set.
+    private int corePoolSize = 5;
+    private int maxPoolSize = Integer.MAX_VALUE;
+    
+    public ThreadPool() {
+        setExecutor(createDefaultExecutor("Axis2 Task", Thread.NORM_PRIORITY, true));
+    }
+    
+    public ThreadPool(int corePoolSize,int maxPoolSize) {
+    	this.corePoolSize = corePoolSize;
+    	this.maxPoolSize = maxPoolSize;
+        setExecutor(createDefaultExecutor("Axis2 Task", Thread.NORM_PRIORITY, true));
+    }
+
+    public Executor getExecutor() {
+        return executor;
+    }
+
+    public void setExecutor(ThreadPoolExecutor executor) {
+        this.executor = executor;
+    }
+
+    public void execute(Runnable worker) {
+        if (shutDown) {
+            throw new RuntimeException(Messages.getMessage("threadpoolshutdown"));
+        }
+        executor.execute(worker);
+    }
+
+    /**
+     * A forceful shutdown mechanism for thread pool.
+     */
+    public void forceShutDown() {
+        if (log.isDebugEnabled()) {
+            log.debug("forceShutDown called. Thread workers will be stopped");
+        }
+        executor.shutdownNow();
+    }
+
+    /**
+     * This is the recommended shutdown method for the thread pool
+     * This will wait till all the workers that are already handed over to the
+     * thread pool get executed.
+     *
+     * @throws org.apache.axis2.AxisFault
+     */
+    public void safeShutDown() throws AxisFault {
+        synchronized (this) {
+            shutDown = true;
+        }
+
+        executor.shutdown();
+    }
+
+    protected ThreadPoolExecutor createDefaultExecutor(final String name,
+                                                       final int priority,
+                                                       final boolean daemon) {
+        ThreadPoolExecutor rc = new ThreadPoolExecutor(corePoolSize , maxPoolSize , 10,
+                TimeUnit.SECONDS, new SynchronousQueue(),
+                new edu.emory.mathcs.backport.java.util.concurrent.ThreadFactory() {
+            public Thread newThread(Runnable runnable) {
+                Thread thread = new Thread(runnable, name);
+                thread.setDaemon(daemon);
+                thread.setPriority(priority);
+                return thread;
+            }
+        });
+        rc.allowCoreThreadTimeOut(true);
+        return rc;
+    }
+}
diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/SOAPHeaderMessage.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/SOAPHeaderMessage.java
new file mode 100644
index 0000000..29110b4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/SOAPHeaderMessage.java
@@ -0,0 +1,96 @@
+package org.apache.axis2.wsdl;

+

+import org.apache.axis2.namespace.Constants;

+

+import javax.xml.namespace.QName;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class SOAPHeaderMessage {

+

+    public static final QName SOAP_11_HEADER = new QName(

+            Constants.URI_WSDL11_SOAP, "header");

+    public static final QName SOAP_12_HEADER = new QName(

+            Constants.URI_WSDL12_SOAP, "header");

+

+    private QName messageName = null;

+    private String part = null;

+    private QName element = null;

+    private QName type;

+    private String use;

+    private String namespaceURI;

+    private boolean required;

+

+

+    public SOAPHeaderMessage() {

+        this.type = SOAP_11_HEADER;

+    }

+

+    public SOAPHeaderMessage(QName type) {

+        this.type = type;

+    }

+

+    public QName getMessage() {

+        return messageName;

+    }

+

+    public void setMessage(QName message) {

+        this.messageName = message;

+    }

+

+    public String part() {

+        return part;

+    }

+

+    public void setPart(String part) {

+        this.part = part;

+    }

+

+    public QName getElement() {

+        return element;

+    }

+

+    public void setElement(QName element) {

+        this.element = element;

+    }

+

+    public String getUse() {

+        return use;

+    }

+

+    public void setUse(String use) {

+        this.use = use;

+    }

+

+    public String getNamespaceURI() {

+        return namespaceURI;

+    }

+

+    public void setNamespaceURI(String namespaceURI) {

+        this.namespaceURI = namespaceURI;

+    }

+    

+     public boolean isRequired() {

+        return required;

+    }

+

+    public void setRequired(boolean required) {

+        this.required = required;

+    }

+}

+

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/WSDLConstants.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/WSDLConstants.java
new file mode 100644
index 0000000..99dceeb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/WSDLConstants.java
@@ -0,0 +1,188 @@
+package org.apache.axis2.wsdl;

+

+import org.apache.axis2.namespace.Constants;

+

+import javax.xml.namespace.QName;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public interface WSDLConstants {

+

+    String STYLE_RPC = "rpc";

+    String STYLE_DOC = "document";

+    String STYLE_MSG = "msg";

+

+    String WSDL_4_J_DEFINITION  = "wsdl4jDefinition";

+    String WSDL_20_DESCRIPTION  = "WSDL20Description";

+    /**

+     * Field WSDL2_0_NAMESPACE

+     */

+    public static final String WSDL2_0_NAMESPACE = Constants.NS_URI_WSDL20;

+

+    /**

+     * Field WSDL1_1_NAMESPACE

+     */

+    public static final String WSDL1_1_NAMESPACE = Constants.NS_URI_WSDL11;

+

+

+    /**

+     * Field WSDL_MESSAGE_DIRECTION_IN

+     */

+    public static final String WSDL_MESSAGE_DIRECTION_IN = "in";

+

+

+    /**

+     * Field WSDL_MESSAGE_DIRECTION_OUT

+     */

+    public static final String WSDL_MESSAGE_DIRECTION_OUT = "out";

+

+    //////////////////////////////////////////////////

+    //////////////// Message Labels///////////////////

+    //////////////////////////////////////////////////

+

+    /**

+     * Constant to represent the message label "In" which is used by the

+     * following WSDL 2.0 defined MEPs: In-Only, Robust In-Only, In-Out,

+     * In-Optional-Out, Out-In, Out-Optional-In.

+     */

+    public static final byte MESSAGE_LABEL_IN = 0;

+

+    public static final String MESSAGE_LABEL_IN_VALUE = "In";

+    public static final String MESSAGE_LABEL_FAULT_VALUE = "Fault";

+

+    /**

+     * Constant to represent the message label "Out" which is used by the

+     * following WSDL 2.0 defined MEPs: In-Out, In-Optional-Out, Out-Only,

+     * Robust Out-Only, Out-In, Out-Optional-In.

+     */

+    public static final int MESSAGE_LABEL_OUT = 1;

+

+    public static final String MESSAGE_LABEL_OUT_VALUE = "Out";

+

+    /**

+     *

+     */

+    public static final String WSDL_USE_LITERAL = "literal";

+    public static final String WSDL_USE_ENCODED = "encoded";

+

+

+    int WSDL_1_1 = 1;

+    int WSDL_2_0 = 2;

+    String INPUT_PART_QNAME_SUFFIX = "_input";

+

+

+    public static interface WSDL11Constants{

+

+        /**

+         * The Type name for the SOAP Address defined in the Port/Endpoint

+         */

+        QName SOAP_11_ADDRESS = new QName(

+                Constants.URI_WSDL11_SOAP, "address");

+        QName SOAP_12_ADDRESS = new QName(

+               Constants.URI_WSDL12_SOAP, "address");

+        QName SOAP_11_OPERATION = new QName(

+               Constants.URI_WSDL11_SOAP, "operation");

+        QName SOAP_12_OPERATION = new QName(

+               Constants.URI_WSDL12_SOAP, "operation");

+        QName SCHEMA = new QName(

+               Constants.URI_2001_SCHEMA_XSD, "schema");

+        QName SOAP_11_BODY = new QName(

+               Constants.URI_WSDL11_SOAP, "body");

+        QName SOAP_12_BODY = new QName(

+               Constants.URI_WSDL12_SOAP, "body");

+        QName SOAP_11_HEADER = new QName(

+               Constants.URI_WSDL11_SOAP, "header");

+        QName SOAP_12_HEADER = new QName(

+               Constants.URI_WSDL12_SOAP, "header");

+        QName SOAP_11_BINDING = new QName(

+               Constants.URI_WSDL11_SOAP, "binding");

+        QName SOAP_12_BINDING = new QName(

+               Constants.URI_WSDL12_SOAP, "binding");

+        QName POLICY = new QName(

+               Constants.URI_POLICY, "Policy");

+        QName POLICY_REFERENCE = new QName(

+               Constants.URI_POLICY, "PolicyReference");

+    }

+

+   public static interface WSDL20_2004Constants {

+

+

+       /**

+        * Field MEP_URI_IN_ONLY

+        */

+       String MEP_URI_IN_ONLY = "http://www.w3.org/2004/08/wsdl/in-only";

+       int MEP_CONSTANT_IN_ONLY = 10;

+       /**

+        * Field MEP_URI_ROBUST_IN_ONLY

+        */

+       String MEP_URI_ROBUST_IN_ONLY = "http://www.w3.org/2004/08/wsdl/robust-in-only";

+       int MEP_CONSTANT_ROBUST_IN_ONLY = 11;

+       /**

+        * Field MEP_URI_IN_OUT

+        */

+       String MEP_URI_IN_OUT = "http://www.w3.org/2004/08/wsdl/in-out";

+       String MEP_URI_IN_OUT_03 = "http://www.w3.org/2004/03/wsdl/in-out";

+       int MEP_CONSTANT_IN_OUT = 12;

+       /**

+        * Field MEP_URI_IN_OPTIONAL_OUT

+        */

+       String MEP_URI_IN_OPTIONAL_OUT = "http://www.w3.org/2004/08/wsdl/in-opt-out";

+       int MEP_CONSTANT_IN_OPTIONAL_OUT = 13;

+       /**

+        * Field MEP_URI_OUT_ONLY

+        */

+       String MEP_URI_OUT_ONLY = "http://www.w3.org/2004/08/wsdl/out-only";

+       int MEP_CONSTANT_OUT_ONLY = 14;

+       /**

+        * Field MEP_URI_ROBUST_OUT_ONLY

+        */

+       String MEP_URI_ROBUST_OUT_ONLY = "http://www.w3.org/2004/08/wsdl/robust-out-only";

+       int MEP_CONSTANT_ROBUST_OUT_ONLY = 15;

+       /**

+        * Field MEP_URI_OUT_IN

+        */

+       String MEP_URI_OUT_IN = "http://www.w3.org/2004/08/wsdl/out-in";

+       int MEP_CONSTANT_OUT_IN = 16;

+       /**

+        * Field MEP_URI_OUT_OPTIONL_IN

+        */

+       String MEP_URI_OUT_OPTIONAL_IN = "http://www.w3.org/2004/08/wsdl/out-opt-in";

+       int MEP_CONSTANT_OUT_OPTIONAL_IN = 17;

+       int MEP_CONSTANT_INVALID = -1;

+   }

+    public static interface WSDL20_2006Constants {

+

+        // http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#in-only

+        String MEP_URI_IN_ONLY = "http://www.w3.org/2006/01/wsdl/in-only";

+        // http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#robust-in-only

+        String MEP_URI_ROBUST_IN_ONLY = "http://www.w3.org/2006/01/wsdl/robust-in-only";

+        // http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#in-out

+        String MEP_URI_IN_OUT = "http://www.w3.org/2006/01/wsdl/in-out";

+        // http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#in-opt-out

+        String MEP_URI_IN_OPTIONAL_OUT = "http://www.w3.org/2006/01/wsdl/in-opt-out";

+        // http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#out-only

+        String MEP_URI_OUT_ONLY = "http://www.w3.org/2006/01/wsdl/out-only";

+        // http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#robust-out-only

+        String MEP_URI_ROBUST_OUT_ONLY = "http://www.w3.org/2006/01/wsdl/robust-out-only";

+        // http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#out-in

+        String MEP_URI_OUT_IN = "http://www.w3.org/2006/01/wsdl/out-in";

+        // http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#out-opt-in

+        String MEP_URI_OUT_OPTIONAL_IN = "http://www.w3.org/2006/01/wsdl/out-opt-in";

+        String DEFAULT_NAMESPACE_URI = "http://www.w3.org/2006/01/wsdl";

+    }

+}

diff --git a/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/WSDLUtil.java b/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/WSDLUtil.java
new file mode 100644
index 0000000..e92875a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/src/org/apache/axis2/wsdl/WSDLUtil.java
@@ -0,0 +1,84 @@
+package org.apache.axis2.wsdl;

+

+import javax.xml.namespace.QName;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * Some utility methods for the WSDL users

+ */

+public class WSDLUtil {

+

+    /**

+     * returns whether the given mep uri is one of the

+     * input meps

+     * @param mep

+     */

+    public static boolean isInputPresentForMEP(String mep) {

+        return WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY.equals(mep) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mep) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mep) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mep) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY.equals(mep) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT.equals(mep) ||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mep)||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY.equals(mep)||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT.equals(mep)||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_IN.equals(mep)||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mep)||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(mep);

+    }

+

+    /**

+     * returns whether the given mep URI is one of the output meps

+     * @param MEP

+     */

+    public static boolean isOutputPresentForMEP(String MEP) {

+        return WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY.equals(MEP) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN.equals(MEP) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(MEP) ||

+                WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT.equals(MEP) ||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP) ||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT.equals(MEP) ||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_IN.equals(MEP) ||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_ONLY.equals(MEP) ||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN.equals(MEP) ||

+                WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY.equals(MEP);

+    }

+

+    /**

+     *  part names are not unique across messages. Hence

+     we need some way of making the part name a unique

+     one (due to the fact that the type mapper

+     is a global list of types).

+     The seemingly best way to do that is to

+     specify a namespace for the part QName reference which

+     is stored in the  list. This part qname is

+     temporary and should not be used with it's

+     namespace URI (which happened to be the operation name)

+     with _input (or a similar suffix) attached to it

+     * @param opName

+     * @param suffix

+     * @param partName

+     */

+    public static QName getPartQName(String opName,

+                                     String suffix,

+                                     String partName){

+        return new QName(opName+suffix,partName);

+    }

+

+}

diff --git a/rampart_1_1/modules/kernel/test-resources/OutHandlerTest.xml b/rampart_1_1/modules/kernel/test-resources/OutHandlerTest.xml
new file mode 100644
index 0000000..9929540
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/OutHandlerTest.xml
@@ -0,0 +1,22 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+    <soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:myRef="http://reference.org">
+        <wsa:From>
+            <wsa:Address>http://www.from.org/service/</wsa:Address>
+            <wsa:ReferenceParameters>
+                <Reference2>Value 200</Reference2>
+            </wsa:ReferenceParameters>
+        </wsa:From>
+        <wsa:To>http://www.to.org/service/</wsa:To>
+        <wsa:MessageID>123456-7890</wsa:MessageID>
+        <myRef:Reference4>Value 400</myRef:Reference4>
+        <myRef:Reference3>Value 300</myRef:Reference3>
+        <wsa:ServiceName wsa:PortName="port">serviceNS:Service</wsa:ServiceName>
+        <wsa:PortType>portNS:Port</wsa:PortType>
+        <wsa:Action>http://www.actions.org/action</wsa:Action>
+        <wsa:ReplyTo>
+            <wsa:Address>http://www.replyTo.org/service/</wsa:Address>
+        </wsa:ReplyTo>
+        <wsa:RelatesTo wsa:RelationshipType="TestRelation">http://www.relatesTo.org/service/</wsa:RelatesTo>
+    </soapenv:Header>
+    <soapenv:Body></soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/PingService.wsdl b/rampart_1_1/modules/kernel/test-resources/PingService.wsdl
new file mode 100644
index 0000000..1f60cbd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/PingService.wsdl
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- WSDL description of the WSS Ping interop scenarios -->
+
+<definitions name="Ping"
+    targetNamespace="http://xmlsoap.org/Ping"
+    xmlns:tns="http://xmlsoap.org/Ping"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+  <types>
+    <schema targetNamespace="http://xmlsoap.org/Ping"
+         xmlns="http://www.w3.org/2001/XMLSchema">
+      <complexType name="ping">
+        <sequence>
+          <element name="text" type="xsd:string" nillable="true"/>
+                 </sequence>
+      </complexType>
+      <complexType name="pingResponse">
+        <sequence>
+          <element name="text" type="xsd:string" nillable="true"/>
+                 </sequence>
+      </complexType>
+      <element name="Ping" type="tns:ping"/>
+      <element name="PingResponse" type="tns:pingResponse"/>
+    </schema>
+  </types>
+
+  <message name="PingRequest">
+    <part name="ping" element="tns:Ping"/>
+  </message>
+
+  <message name="PingResponse">
+    <part name="pingResponse" element="tns:PingResponse"/>
+  </message>
+
+  <portType name="PingPort">
+    <operation name="Ping">
+      <input  message="tns:PingRequest"/>
+      <output message="tns:PingResponse"/>
+    </operation>
+  </portType>
+
+  <binding name="PingBinding" type="tns:PingPort">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+style="document"/>
+    <operation name="Ping">
+      <soap:operation soapAction=""/>
+      <input> <soap:body use="literal"/></input>
+      <output><soap:body use="literal"/></output>
+    </operation>
+   </binding>
+
+  <service name="PingService">
+    <port name="PingPort" binding="tns:PingBinding">
+    <soap:address location="http://localhost:8080/axis2/services/PingService"/>
+    </port>
+  </service>
+
+</definitions>
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/AxisMessageTestRepo/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/AxisMessageTestRepo/axis2.xml
new file mode 100644
index 0000000..e020d16
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/AxisMessageTestRepo/axis2.xml
@@ -0,0 +1,124 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">true</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <parameter name="seralizeLocation" locked="false">.</parameter>

+    <hostConfiguration>

+        <ip>127.0.0.1</ip>

+        <port>5555</port>

+    </hostConfiguration>

+

+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->

+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+    </transportReceiver>

+

+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter>

+    </transportReceiver>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+    </transportSender>

+

+    <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+         <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/AxisMessageTestRepo/services/MessagetestService/META-INF/services.xml b/rampart_1_1/modules/kernel/test-resources/deployment/AxisMessageTestRepo/services/MessagetestService/META-INF/services.xml
new file mode 100644
index 0000000..3e472fa
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/AxisMessageTestRepo/services/MessagetestService/META-INF/services.xml
@@ -0,0 +1,20 @@
+<service name="">

+

+    <description>

+        This is a testing service , to test the system is working or not

+    </description>

+    <parameter name="ServiceClass" locked="false">org.apache.axis2.sample.echo.EchoImpl</parameter>

+    <operation name="echoString">

+        <message label="In">

+            <parameter name="messageIN" locked="false">messageIN</parameter>

+        </message>

+    </operation>

+    <operation name="echoStringArray">

+        <message label="In">

+            <parameter name="messageIN" locked="false">messageIN</parameter>

+        </message>

+        <message label="Out">

+            <parameter name="messageOut" locked="false">messageOut</parameter>

+        </message>

+    </operation>

+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/BadConfigOrderChange/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/BadConfigOrderChange/axis2.xml
new file mode 100644
index 0000000..b47cb20
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/BadConfigOrderChange/axis2.xml
@@ -0,0 +1,35 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+     <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        
+        <phase name="PostDispatch"/>
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/BadServer.xml b/rampart_1_1/modules/kernel/test-resources/deployment/BadServer.xml
new file mode 100644
index 0000000..f40c4d6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/BadServer.xml
@@ -0,0 +1,27 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="para1" locked="xsd:true">10</parameter>
+    <parameter name="para2" locked="false">Colombo</parameter>
+    <handler name="h1" class="org.apache.axis2.engine.registry.SpeakingHandler">
+        <order phase="p1" phaseFirst="true"/>
+        <parameter name="para8" locked="xsd:true">123</parameter>
+        <parameter name="para9" locked="xsd:true">456</parameter>
+        <parameter name="para10" locked="xsd:true">789</parameter>
+    </handler>
+    <handler name="h2" class="org.apache.axis2.engine.registry.SpeakingHandler"/>
+    <module ref="module1"> </module>
+    <!--
+      <module ref="uri">
+          <parameter name="para3" locked="xsd:true">10</parameter>
+          <parameter name="para4" locked="false">LSF</parameter>
+      </module>
+     -->
+    <phaseOrder>
+        <phase name="global"/>
+        <phase name="transport"/>
+        <phase name="module"/>
+        <phase name="service"/>
+    </phaseOrder>
+    <gool>
+        not good
+    </gool>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/Badmodule.xml b/rampart_1_1/modules/kernel/test-resources/deployment/Badmodule.xml
new file mode 100644
index 0000000..8e4ef77
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/Badmodule.xml
@@ -0,0 +1,44 @@
+<module name="module1" class="module1.java">
+    <parameter name="para123" locked="xsd:true">10</parameter>
+    <parameter name="para245" locked="false">Colombo</parameter>
+    <!--  Module TypeMapping -->
+    <typeMapping>Type mappping should come here</typeMapping>
+    <InFlow>
+        <handler name="h1" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p1" phaseFirst="true"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+        <handler name="h2" class="org.apache.axis2.engine.registry.SpeakingHandler"/>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="h3" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p2"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+        </handler>
+    </OutFlow>
+
+    <FaultFlow>
+        <handler name="h4" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+
+        <handler name="h5" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p1"/>
+        </handler>
+
+        <handler name="h6" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="anyhase" phaseFirst="true" phaseLast="false"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+    </FaultFlow>
+
+
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/ConfigWithObservers/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/ConfigWithObservers/axis2.xml
new file mode 100644
index 0000000..9103429
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/ConfigWithObservers/axis2.xml
@@ -0,0 +1,149 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--    The way of adding listener to the system-->
+    <listener class="org.apache.axis2.deployment.AxisObserverImpl">
+        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>
+    </listener>
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing
+    <module ref="addressing"/> -->
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/Op_overide_Service_para.xml b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/Op_overide_Service_para.xml
new file mode 100644
index 0000000..04edbdd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/Op_overide_Service_para.xml
@@ -0,0 +1,7 @@
+<service name="Service1">
+    <parameter name="Servicep" locked="true">org.apache.axis2.sample.echo.EchoImpl</parameter>
+    <parameter name="ServicePara2" locked="true">org.apache.axis2.sample.echo.EchoImpl</parameter>
+    <operation name="echoString">
+       <parameter name="Servicep" locked="true">value</parameter>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/axis2.xml
new file mode 100644
index 0000000..ee9d9f0
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/axis2.xml
@@ -0,0 +1,89 @@
+<axisconfig name="AxisJava2.0">
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <parameter name="ServicePara1" locked="false">true</parameter>
+    <parameter name="ServicePara2" locked="true">true</parameter>
+
+    <parameter name="modulePara1" locked="false">true</parameter>
+    <parameter name="modulePara2" locked="true">true</parameter>
+
+  <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/module_overide_global_non_locked_para.xml b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/module_overide_global_non_locked_para.xml
new file mode 100644
index 0000000..71d22e9
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/module_overide_global_non_locked_para.xml
@@ -0,0 +1,3 @@
+<module name="module1" class="org.apache.module.Module1Impl">
+    <parameter name="modulePara1" locked="true">org.apache.axis2.sample.echo.EchoImpl</parameter>
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/module_overide_locked_para.xml b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/module_overide_locked_para.xml
new file mode 100644
index 0000000..70e8062
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/module_overide_locked_para.xml
@@ -0,0 +1,3 @@
+<module name="module1" class="org.apache.module.Module1Impl">
+    <parameter name="modulePara2" locked="true">org.apache.axis2.sample.echo.EchoImpl</parameter>
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/op_overide_global_para.xml b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/op_overide_global_para.xml
new file mode 100644
index 0000000..be7aef6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/op_overide_global_para.xml
@@ -0,0 +1,9 @@
+<service name="Service1">
+    <description>
+        This is a testing service , to test the system is working or not
+    </description>
+    <parameter name="ServicePara2" locked="true">org.apache.axis2.sample.echo.EchoImpl</parameter>
+    <operation name="echoString">
+       <parameter name="ServicePara2" locked="true">org.apache.axis2.sample.echo.EchoImpl</parameter>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/service_overide_locked_para.xml b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/service_overide_locked_para.xml
new file mode 100644
index 0000000..f6ed909
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/service_overide_locked_para.xml
@@ -0,0 +1,6 @@
+<service name="Service1">
+    <description>
+        This is a testing service , to test the system is working or not
+    </description>
+    <parameter name="ServicePara2" locked="true">org.apache.axis2.sample.echo.EchoImpl</parameter>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/service_overide_non_locked_para.xml b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/service_overide_non_locked_para.xml
new file mode 100644
index 0000000..2365218
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/ParaLockedRepo/service_overide_non_locked_para.xml
@@ -0,0 +1,6 @@
+<service name="Service1">
+    <description>
+        This is a testing service , to test the system is working or not
+    </description>
+    <parameter name="ServicePara1" locked="true">org.apache.axis2.sample.echo.EchoImpl</parameter>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/SystemPhaseRemove/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/SystemPhaseRemove/axis2.xml
new file mode 100644
index 0000000..9c8335f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/SystemPhaseRemove/axis2.xml
@@ -0,0 +1,33 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+  
+     <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/axis2.xml
new file mode 100644
index 0000000..096dbef
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/axis2.xml
@@ -0,0 +1,90 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+    <parameter name="FavoriteColor">purple</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+     <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+
+</axisconfig>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/echo/META-INF/services.xml b/rampart_1_1/modules/kernel/test-resources/deployment/echo/META-INF/services.xml
new file mode 100644
index 0000000..7840c9b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/echo/META-INF/services.xml
@@ -0,0 +1,8 @@
+<service name="axisversion">
+    <description>
+           This service echo the given input , and this was developed to text the axis system working
+            correctly
+    </description>
+    <parameter name="ServiceClass" locked="false">org.apache.axis2.echo.Echo</parameter>
+    <operation name="viewVersion"/>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/echo/build.xml b/rampart_1_1/modules/kernel/test-resources/deployment/echo/build.xml
new file mode 100644
index 0000000..094cabe
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/echo/build.xml
@@ -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/echo"/>
+
+    <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.aar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/echo.aar">
+            <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>
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/exculeRepo/services/excludeService/META-INF/services.xml b/rampart_1_1/modules/kernel/test-resources/deployment/exculeRepo/services/excludeService/META-INF/services.xml
new file mode 100644
index 0000000..fb538bd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/exculeRepo/services/excludeService/META-INF/services.xml
@@ -0,0 +1,6 @@
+<service>

+    <parameter name="ServiceClass">org.apache.axis2.deployment.ExcludeService</parameter>

+    <excludeOperations>

+        <operation>add</operation>

+    </excludeOperations>

+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/hostConfigrepo/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/hostConfigrepo/axis2.xml
new file mode 100644
index 0000000..8aff5bb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/hostConfigrepo/axis2.xml
@@ -0,0 +1,170 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+    <parameter name="enableMTOM" locked="false">true</parameter>

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <parameter name="seralizeLocation" locked="false">.</parameter>

+    <hostConfiguration>

+        <ip>127.0.0.1</ip>

+        <port>5555</port>

+    </hostConfiguration>

+

+

+    <!--if you want to extract the service archive file and work with that please uncomment this-->

+    <!--else , it wont extract archive file or does not take into consideration if someone drop-->

+    <!--exploded directory into /service directory-->

+    <!--<parameter name="extractServiceArchive" locked="false">true</parameter>-->

+

+

+    <!--    The way of adding listener to the system-->

+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->

+    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->

+    <!--    </listener>-->

+

+    <!-- ================================================= -->

+    <!-- Message Receivers -->

+    <!-- ================================================= -->

+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->

+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+

+    <!-- ================================================= -->

+    <!-- Transport Ins -->

+    <!-- ================================================= -->

+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">

+        <parameter name="port" locked="false">6060</parameter>

+    </transportReceiver>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">

+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>

+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>

+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>

+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>

+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>

+      </transportReceiver> -->

+

+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">

+        <parameter name="port" locked="false">6060</parameter>

+    </transportReceiver>

+

+    <!-- ================================================= -->

+    <!-- Transport Outs -->

+    <!-- ================================================= -->

+

+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>

+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+    </transportSender>

+    <transportSender name="https"

+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

+    </transportSender>

+

+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver

+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">

+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>

+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>

+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>

+   </transportSender>

+   -->

+

+    <!-- ================================================= -->

+    <!-- Global Modules  -->

+    <!-- ================================================= -->

+

+

+    <!--Configuring module , providing parameters for modules whether they refer or not-->

+    <!--<moduleConfig name="addressing">-->

+    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->

+    <!--</moduleConfig>-->

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+   <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+         <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/invalidservice/META-INF/services.xml b/rampart_1_1/modules/kernel/test-resources/deployment/invalidservice/META-INF/services.xml
new file mode 100644
index 0000000..061c126
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/invalidservice/META-INF/services.xml
@@ -0,0 +1,5 @@
+<service name="">
+    <parameter name="ServiceClass" locked="false">org.apache.axis2.InvalidService</parameter>
+    <module ref="serviceModule"/>
+    <operation name="echo"/>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/invalidservice/build.xml b/rampart_1_1/modules/kernel/test-resources/deployment/invalidservice/build.xml
new file mode 100644
index 0000000..d82db55
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/invalidservice/build.xml
@@ -0,0 +1,53 @@
+<?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/InvalidDeployment/services/"/>
+
+    <path id="axis.test.classpath">
+        <path refid="maven.dependency.classpath"></path>
+        <pathelement location="../../../target/classes"/>
+        <pathelement location="../../../target/test-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}/invalidService.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/invalidService.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>
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/module1/META-INF/MANIFEST.MF b/rampart_1_1/modules/kernel/test-resources/deployment/module1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3a50b8f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/module1/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0

+Created-By: Ant 1.4.1

+

diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/module1/META-INF/module.xml b/rampart_1_1/modules/kernel/test-resources/deployment/module1/META-INF/module.xml
new file mode 100644
index 0000000..4299794
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/module1/META-INF/module.xml
@@ -0,0 +1,33 @@
+<module name="module1">
+    <InFlow>
+        <handler name="h1" class="org.apache.axis2.registry.Handler3">
+            <order phase="OperationInPhase"/>
+        </handler>
+        <handler name="h2" class="org.apache.axis2.registry.Handler3">
+            <order phase="OperationInPhase"/>
+        </handler>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="h3" class="org.apache.axis2.registry.Handler3">
+            <order phase="OperationOutPhase"/>
+        </handler>
+    </OutFlow>
+
+    <OutFaultFlow>
+        <handler name="h4" class="org.apache.axis2.registry.Handler3">
+            <order phase="OperationOutFaultPhase"/>
+        </handler>
+    </OutFaultFlow>
+
+    <InFaultFlow>
+        <handler name="h5" class="org.apache.axis2.registry.Handler3">
+            <order phase="OperationInFaultPhase"/>
+        </handler>
+    </InFaultFlow>
+
+    <operation name="creatSeq" mep="http://www.w3.org/2004/08/wsdl/in-out">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+        <parameter name="para1" locked="xsd:true">10</parameter>
+    </operation>
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/module1/build.xml b/rampart_1_1/modules/kernel/test-resources/deployment/module1/build.xml
new file mode 100644
index 0000000..bfebe84
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/module1/build.xml
@@ -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/deployment/modules/"/>
+
+    <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}/module1.mar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/module1.mar">
+            <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>
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/moduleConfig/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/moduleConfig/axis2.xml
new file mode 100644
index 0000000..f13e60b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/moduleConfig/axis2.xml
@@ -0,0 +1,90 @@
+<axisconfig name="AxisJava2.0">
+
+
+    <moduleConfig name="testModule">
+        <parameter name="testModulePara" locked="false">N/A</parameter>
+    </moduleConfig>
+
+    <moduleConfig name="testModule2">
+        <parameter name="testModulePara2" locked="false">N/A</parameter>
+    </moduleConfig>
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/moduleConfig/service1.xml b/rampart_1_1/modules/kernel/test-resources/deployment/moduleConfig/service1.xml
new file mode 100644
index 0000000..7c883cd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/moduleConfig/service1.xml
@@ -0,0 +1,14 @@
+<service name="Service1">
+    <description>
+        This is a testing service , to test the system is working or not
+    </description>
+
+    <moduleConfig name="Servie_module">
+        <parameter name="Servie_module_para" locked="false">N/A</parameter>
+    </moduleConfig>
+    <operation name="echoString">
+        <moduleConfig name="Op_Module">
+            <parameter name="Op_Module_para" locked="false">N/A</parameter>
+        </moduleConfig>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/moduleDisEngegeRepo/modules/testModule/META-INF/module.xml b/rampart_1_1/modules/kernel/test-resources/deployment/moduleDisEngegeRepo/modules/testModule/META-INF/module.xml
new file mode 100644
index 0000000..966ee59
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/moduleDisEngegeRepo/modules/testModule/META-INF/module.xml
@@ -0,0 +1,23 @@
+<module>

+    <InFlow>

+        <handler name="Hnadler1"

+                 class="org.apache.axis2.deployment.SpeakingHandler">

+            <order phase="PreDispatch"/>

+        </handler>

+        <handler name="Handler2"

+                 class="org.apache.axis2.deployment.SpeakingHandler">

+            <order phase="PreDispatch"/>

+        </handler>

+        <handler name="Handler3"

+                 class="org.apache.axis2.deployment.SpeakingHandler">

+            <order phase="OperationInPhase"/>

+        </handler>

+    </InFlow>

+

+    <OutFlow>

+        <handler name="Handler4"

+                 class="org.apache.axis2.deployment.SpeakingHandler">

+            <order phase="MessageOut"/>

+        </handler>

+    </OutFlow>

+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/moduleVersion/Test1/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/moduleVersion/Test1/axis2.xml
new file mode 100644
index 0000000..60cff24
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/moduleVersion/Test1/axis2.xml
@@ -0,0 +1,106 @@
+<axisconfig name="AxisJava2.0">

+    <!-- ================================================= -->

+    <!-- Parameters -->

+    <!-- ================================================= -->

+    <parameter name="hotdeployment" locked="false">true</parameter>

+    <parameter name="hotupdate" locked="false">false</parameter>

+

+    <defaultModuleVersions>

+        <module name="abc" version="1.23"/>

+        <module name="foo" version="0.89"/>

+    </defaultModuleVersions>

+

+

+    <parameter name="userName" locked="false">admin</parameter>

+    <parameter name="password" locked="false">axis2</parameter>

+

+    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </messageReceivers>

+

+    <!-- ================================================= -->

+    <!-- Phases  -->

+    <!-- ================================================= -->

+   <phaseOrder type="InFlow">

+        <!--  System pre defined phases       -->

+         <phase name="Transport">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+        </phase>

+        <phase name="Security"/>

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--  System pre defined phases       -->

+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->

+        <phase name="OperationInPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutPhase"/>

+        <!--system predefined phase-->

+        <!--these phase will run irrespective of the service-->

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+    <phaseOrder type="InFaultFlow">

+        <phase name="PreDispatch"/>

+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

+            <handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+

+            <handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

+                <order phase="Dispatch"/>

+            </handler>

+            <handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher">

+                <order phase="PostDispatch"/>

+            </handler>

+        </phase>

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationInFaultPhase"/>

+    </phaseOrder>

+    <phaseOrder type="OutFaultFlow">

+        <!--      user can add his own phases to this area  -->

+        <phase name="OperationOutFaultPhase"/>

+        <phase name="PolicyDetermination"/>

+        <phase name="MessageOut"/>

+    </phaseOrder>

+</axisconfig>

+

diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/outservice/META-INF/services.xml b/rampart_1_1/modules/kernel/test-resources/deployment/outservice/META-INF/services.xml
new file mode 100644
index 0000000..ccd3214
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/outservice/META-INF/services.xml
@@ -0,0 +1,8 @@
+<service name="">
+    <description>
+        This is a testing service , to test the system is working or not
+    </description>
+    <parameter name="ServiceClass" locked="false">org.apache.axis2.services.OutService</parameter>
+    <parameter name="OUTSERVICE" locked="xsd:true">true</parameter>
+    <operation name="outService"/>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/outservice/build.xml b/rampart_1_1/modules/kernel/test-resources/deployment/outservice/build.xml
new file mode 100644
index 0000000..d6b25f7
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/outservice/build.xml
@@ -0,0 +1,53 @@
+<?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/deployment/services/"/>
+
+    <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"/>
+                <include name="**/*.wsdl"/>
+                <exclude name="build.xml"/>
+            </fileset>
+        </copy>
+
+        <mkdir dir="${jar.dir}"/>
+        <jar jarfile="${jar.dir}/OutService.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/OutService.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>
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/server-transport.xml b/rampart_1_1/modules/kernel/test-resources/deployment/server-transport.xml
new file mode 100644
index 0000000..40a2d4a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/server-transport.xml
@@ -0,0 +1,88 @@
+<axisconfig name="AxisJava2.0">
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    <transportSender name="custom" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+ 
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+      <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/server1.xml b/rampart_1_1/modules/kernel/test-resources/deployment/server1.xml
new file mode 100644
index 0000000..1110daa
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/server1.xml
@@ -0,0 +1,64 @@
+<server name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <module ref="addressing"/>
+
+   <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</server>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service.xml b/rampart_1_1/modules/kernel/test-resources/deployment/service.xml
new file mode 100644
index 0000000..585f502
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service.xml
@@ -0,0 +1,68 @@
+<service provider="xsd:anyprovider" style="rpcI" contextPath="services">
+    <!-- these are Service Parameters -->
+    <parameter name="para1" locked="xsd:true">10</parameter>
+    <parameter name="para2" locked="false">Colombo</parameter>
+
+    <!--  Service TypeMapping -->
+    <typeMapping>Type mappping should come here</typeMapping>
+    <beanMapping>bean mappping should come here</beanMapping>
+
+    <!--
+    Phases
+    P1 p2 p3
+    -->
+
+    <InFlow>
+        <handler name="h1" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p1" phaseFirst="true"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+        <handler name="h2" class="org.apache.axis2.engine.registry.SpeakingHandler"/>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="h3" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p2"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+        </handler>
+    </OutFlow>
+
+    <FaultFlow>
+        <handler name="h4" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+
+        <handler name="h5" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p1"/>
+        </handler>
+
+        <handler name="h6" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="anyhase" phaseFirst="true" phaseLast="false"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+    </faultflow>
+
+
+    <operation name="opname" qname="opqname" style="anyStyle" use="anyUse">
+        <InFlow>
+            <handler name="h7" class="org.apache.axis2.engine.registry.SpeakingHandler"/>
+        </InFlow>
+        <OutFlow>
+            <handler name="h8" class="org.apache.axis2.engine.registry.SpeakingHandler">
+                <order phase="anyhase"/>
+                <parameter name="para8" locked="xsd:true">123</parameter>
+                <parameter name="para9" locked="xsd:true">456</parameter>
+                <parameter name="para10" locked="xsd:true">789</parameter>
+            </handler>
+        </OutFlow>
+        <FaultFlow>
+        </FaultFlow>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service1.xml b/rampart_1_1/modules/kernel/test-resources/deployment/service1.xml
new file mode 100644
index 0000000..f30188d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service1.xml
@@ -0,0 +1,79 @@
+<service provider="xsd:anyprovider" style="xsd:anyURI" contextPath="xsd:anycontextPath">
+    <!-- these are Service Parameters -->
+    <parameter name="para1" locked="xsd:true">10</parameter>
+    <parameter name="para2" locked="false">Colombo</parameter>
+
+    <module ref="module1"></module>
+    <module ref="module2"></module>
+
+
+    <!--  Service TypeMapping -->
+    <typeMapping>
+        <typeMapper xsiType="int" javaType="java.lang.Integer" class="org.apache.axis2.rpc.TypeMapperImpl"/>
+    </typeMapping>
+    <beanMapping>bean mappping should come here</beanMapping>
+
+    <!--
+    Phases
+    P1 p2 p3
+    -->
+
+    <InFlow>
+        <handler name="h1" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p1" phaseFirst="true"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+        <handler name="h2" class="org.apache.axis2.engine.registry.SpeakingHandler"/>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="h3" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p2"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+        </handler>
+    </OutFlow>
+
+    <FaultFlow>
+        <handler name="h4" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+
+        <handler name="h5" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="p1"/>
+        </handler>
+
+        <handler name="h6" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order phase="anyhase" phaseFirst="true" phaseLast="false"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+    </FaultFlow>
+
+
+    <operation name="opname" qname="opqname" style="anyStyle" use="anyUse">
+        <module ref="uri">
+            <parameter name="para3" locked="xsd:true">10</parameter>
+            <parameter name="para4" locked="false">LSF</parameter>
+        </module>
+
+        <InFlow>
+            <handler name="h7" class="org.apache.axis2.engine.registry.SpeakingHandler"/>
+        </InFlow>
+        <OutFlow>
+            <handler name="h8" class="org.apache.axis2.engine.registry.SpeakingHandler">
+                <order phase="anyhase"/>
+                <parameter name="para8" locked="xsd:true">123</parameter>
+                <parameter name="para9" locked="xsd:true">456</parameter>
+                <parameter name="para10" locked="xsd:true">789</parameter>
+            </handler>
+        </OutFlow>
+        <FaultFlow>
+        </FaultFlow>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service1/META-INF/MANIFEST.MF b/rampart_1_1/modules/kernel/test-resources/deployment/service1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3a50b8f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service1/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0

+Created-By: Ant 1.4.1

+

diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service1/META-INF/services.xml b/rampart_1_1/modules/kernel/test-resources/deployment/service1/META-INF/services.xml
new file mode 100644
index 0000000..ba1ca30
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service1/META-INF/services.xml
@@ -0,0 +1,14 @@
+<service name="">
+
+    <description>
+        This is a testing service , to test the system is working or not
+    </description>
+    <parameter name="ServiceClass" locked="false">org.apache.axis2.sample.echo.EchoImpl</parameter>
+    <operation name="echoString">
+        <module ref="module1"/>
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+    <operation name="echoStringArray"/>
+    <operation name="echoEchoStruct"/>
+    <operation name="echoEchoStructArray"/>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service1/build.xml b/rampart_1_1/modules/kernel/test-resources/deployment/service1/build.xml
new file mode 100644
index 0000000..9b55a75
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service1/build.xml
@@ -0,0 +1,53 @@
+<?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/deployment/services/"/>
+
+    <path id="axis.test.classpath">
+        <path refid="maven.dependency.classpath"></path>
+        <pathelement location="../../../target/classes"/>
+        <pathelement location="../../../target/test-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}/service1.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/service1.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>
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/service2.xml
new file mode 100644
index 0000000..520735c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service2.xml
@@ -0,0 +1,113 @@
+<service provider="xsd:anyprovider" style="xsd:anyURI" contextPath="xsd:anycontextPath">
+    <!-- these are Service Parameters -->
+    <parameter name="para1" locked="xsd:true">10</parameter>
+    <parameter name="para2" locked="false">Colombo</parameter>
+
+    <!--  Service TypeMapping -->
+    <typeMapping>Type mappping should come here</typeMapping>
+    <beanMapping>bean mappping should come here</beanMapping>
+
+
+    <handler name="h1" class="org.apache.axis2.engine.registry.SpeakingHandler">
+        <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+        <parameter name="para8" locked="xsd:true">123</parameter>
+        <parameter name="para9" locked="xsd:true">456</parameter>
+        <parameter name="para10" locked="xsd:true">789</parameter>
+    </handler>
+
+
+    <InFlow>
+        <handler name="h2" ref="h1"/>
+        <handler name="h3" ref="h1"/>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="h3" class="org.apache.axis2.engine.registry.SpeakingHandler">
+            <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+    </OutFlow>
+
+    <InFaultFlow>
+        <handler name="h4" class="Hander.class">
+            <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+        <handler name="h5" class="Hander.class">
+            <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+
+        <handler name="Handername" class="Hander.class">
+            <order phase="anyhase" phaseFirst="true" phaseLast="false"/>
+            <parameter name="para8" locked="xsd:true">123</parameter>
+            <parameter name="para9" locked="xsd:true">456</parameter>
+            <parameter name="para10" locked="xsd:true">789</parameter>
+        </handler>
+    </InFaultFlow>
+
+
+    <operation name="opname" qname="opqname" style="anyStyle" use="anyUse">
+        <module ref="uri">
+            <parameter name="para3" locked="xsd:true">10</parameter>
+            <parameter name="para4" locked="false">LSF</parameter>
+        </module>
+
+        <InFlow>
+            <handler ref="anyRef" name="Handername" class="Hander.class">
+                <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+                <parameter name="para8" locked="xsd:true">123</parameter>
+                <parameter name="para9" locked="xsd:true">456</parameter>
+                <parameter name="para10" locked="xsd:true">789</parameter>
+            </handler>
+
+            <handler ref="anyRef">
+                <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+
+                <parameter name="para8" locked="xsd:true">123</parameter>
+                <parameter name="para9" locked="xsd:true">456</parameter>
+                <parameter name="para10" locked="xsd:true">789</parameter>
+            </handler>
+
+        </InFlow>
+        <OutFlow>
+            <handler ref="anyRef" name="Handername" class="Hander.class">
+                <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+                <parameter name="para8" locked="xsd:true">123</parameter>
+                <parameter name="para9" locked="xsd:true">456</parameter>
+                <parameter name="para10" locked="xsd:true">789</parameter>
+            </handler>
+            <handler ref="anyRef">
+                <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+
+                <parameter name="para8" locked="xsd:true">123</parameter>
+                <parameter name="para9" locked="xsd:true">456</parameter>
+                <parameter name="para10" locked="xsd:true">789</parameter>
+
+            </handler>
+        </OutFlow>
+        <InFaultFlow>
+            <handler ref="anyRef" name="Handername" class="Hander.class">
+                <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+                <parameter name="para8" locked="xsd:true">123</parameter>
+                <parameter name="para9" locked="xsd:true">456</parameter>
+                <parameter name="para10" locked="xsd:true">789</parameter>
+            </handler>
+            <handler ref="anyRef">
+                <order before="anyBefireURI" after="anyafterURI" phase="anyhase" phaseFirst="true" phaseLast="false"/>
+
+                <parameter name="para8" locked="xsd:true">123</parameter>
+                <parameter name="para9" locked="xsd:true">456</parameter>
+                <parameter name="para10" locked="xsd:true">789</parameter>
+
+            </handler>
+        </InFaultFlow>
+    </operation>
+    <service ref="xsd:anyServiceRef"/>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service2/META-INF/MANIFEST.MF b/rampart_1_1/modules/kernel/test-resources/deployment/service2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3a50b8f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service2/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0

+Created-By: Ant 1.4.1

+

diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service2/META-INF/services.xml b/rampart_1_1/modules/kernel/test-resources/deployment/service2/META-INF/services.xml
new file mode 100644
index 0000000..4811eee
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service2/META-INF/services.xml
@@ -0,0 +1,11 @@
+<service name="">
+    <!-- these are Service Parameters -->
+    <parameter name="para1" locked="xsd:true">10</parameter>
+    <parameter name="para2" locked="false">Colombo</parameter>
+    <description>
+        This is a testing service , to test the system is working or not
+    </description>
+
+    <operation name="opname">
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/service2/build.xml b/rampart_1_1/modules/kernel/test-resources/deployment/service2/build.xml
new file mode 100644
index 0000000..910c609
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/service2/build.xml
@@ -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/deployment/services/"/>
+
+    <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}/service2.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/service2.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>
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/serviceGroupRepo/axis2.xml b/rampart_1_1/modules/kernel/test-resources/deployment/serviceGroupRepo/axis2.xml
new file mode 100644
index 0000000..00a2a17
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/serviceGroupRepo/axis2.xml
@@ -0,0 +1,135 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">true</parameter>
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <parameter name="seralizeLocation" locked="false">./target</parameter>
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <parameter name="extractServiceArchive" locked="false">true</parameter>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+ <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+       <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+       <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+   </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/serviceGroupRepo/services/serviceGroup/META-INF/services.xml b/rampart_1_1/modules/kernel/test-resources/deployment/serviceGroupRepo/services/serviceGroup/META-INF/services.xml
new file mode 100644
index 0000000..454e80c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/serviceGroupRepo/services/serviceGroup/META-INF/services.xml
@@ -0,0 +1,15 @@
+<serviceGroup>
+    <service name="service1">
+        <operation name="op1">
+        </operation>
+        <operation name="op2">
+        </operation>
+    </service>
+    <service name="service2">
+        <operation name="op1">
+        </operation>
+        <operation name="op2">
+        </operation>
+    </service>
+    <parameter name="ServiceClass">org.apache.axis2.Echo2</parameter>
+</serviceGroup>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/serviceModule/META-INF/module.xml b/rampart_1_1/modules/kernel/test-resources/deployment/serviceModule/META-INF/module.xml
new file mode 100644
index 0000000..4afd55e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/serviceModule/META-INF/module.xml
@@ -0,0 +1,28 @@
+<module name="serviceModule" class="org.apache.axis2.InavalidModuleImpl">
+    <InFlow>
+        <handler name="h1" class="org.apache.axis2.ModuleHandler1">
+            <order phase="Dispatch"/>
+        </handler>
+        <handler name="h2" class="org.apache.axis2.ModuleHandler1">
+            <order phase="TransportIn"/>
+        </handler>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="h3" class="org.apache.axis2.ModuleHandler1">
+            <order phase="Dispatch"/>
+        </handler>
+    </OutFlow>
+
+    <OutFaultFlow>
+        <handler name="h4" class="org.apache.axis2.ModuleHandler1">
+            <order phase="OperationOutFaultPhase"/>
+        </handler>
+    </OutFaultFlow>
+
+    <InFaultFlow>
+        <handler name="h5" class="org.apache.axis2.ModuleHandler1">
+            <order phase="OperationInFaultPhase"/>
+        </handler>
+    </InFaultFlow>
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/deployment/serviceModule/build.xml b/rampart_1_1/modules/kernel/test-resources/deployment/serviceModule/build.xml
new file mode 100644
index 0000000..9a0e6ba
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/deployment/serviceModule/build.xml
@@ -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/InvalidDeployment/modules/"/>
+
+    <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}/serviceModule.jar" basedir="${build.classes}">
+            <include name="**"/>
+        </jar>
+        <delete dir="${build}"/>
+    </target>
+
+    <target name="init">
+        <uptodate property="jars.uptodate" targetfile="${jar.dir}/serviceModule.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>
diff --git a/rampart_1_1/modules/kernel/test-resources/eprTest.xml b/rampart_1_1/modules/kernel/test-resources/eprTest.xml
new file mode 100644
index 0000000..ec6c352
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/eprTest.xml
@@ -0,0 +1,15 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+    <soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
+        <soapenv:Reference4>Value 400</soapenv:Reference4>
+        <soapenv:Reference1>Value 100</soapenv:Reference1>
+        <soapenv:Reference0>Value 0</soapenv:Reference0>
+        <soapenv:Reference2>Value 200</soapenv:Reference2>
+        <soapenv:Reference3>Value 300</soapenv:Reference3>
+        <wsa:ServiceName wsa:PortName="port">serviceNS:Service</wsa:ServiceName>
+        <wsa:PortType>portNS:Port</wsa:PortType>
+        <wsa:From>
+            <wsa:Address>http://www.from.org/service/</wsa:Address>
+        </wsa:From>
+    </soapenv:Header>
+    <soapenv:Body></soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/soapmessage.xml b/rampart_1_1/modules/kernel/test-resources/soapmessage.xml
new file mode 100644
index 0000000..5448afb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/soapmessage.xml
@@ -0,0 +1,16 @@
+<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/08/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">
+            <wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/test.xml b/rampart_1_1/modules/kernel/test-resources/test.xml
new file mode 100644
index 0000000..ec6c352
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/test.xml
@@ -0,0 +1,15 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+    <soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
+        <soapenv:Reference4>Value 400</soapenv:Reference4>
+        <soapenv:Reference1>Value 100</soapenv:Reference1>
+        <soapenv:Reference0>Value 0</soapenv:Reference0>
+        <soapenv:Reference2>Value 200</soapenv:Reference2>
+        <soapenv:Reference3>Value 300</soapenv:Reference3>
+        <wsa:ServiceName wsa:PortName="port">serviceNS:Service</wsa:ServiceName>
+        <wsa:PortType>portNS:Port</wsa:PortType>
+        <wsa:From>
+            <wsa:Address>http://www.from.org/service/</wsa:Address>
+        </wsa:From>
+    </soapenv:Header>
+    <soapenv:Body></soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test-resources/wsdl/actionTests.wsdl b/rampart_1_1/modules/kernel/test-resources/wsdl/actionTests.wsdl
new file mode 100644
index 0000000..2ffdd47
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/wsdl/actionTests.wsdl
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://ws.apache.org/axis2/actiontest/"

+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="actionTests"

+	xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"

+	targetNamespace="http://ws.apache.org/axis2/actiontest/">

+	<wsdl:types>

+	</wsdl:types>

+	<wsdl:message name="echoResponse">

+		<wsdl:part name="echoResponse" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoRequest">
+		<wsdl:part name="echoRequest" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoResponse1">
+		<wsdl:part name="echoResponse1" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoRequest1">
+		<wsdl:part name="echoRequest1" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoechoFault">
+		<wsdl:part name="echoechoFault" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoechoFault1">
+		<wsdl:part name="echoechoFault1" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoResponse2">
+		<wsdl:part name="echoResponse2" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoRequest2">
+		<wsdl:part name="echoRequest2" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoechoFault2">
+		<wsdl:part name="echoechoFault2" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoResponse3">
+		<wsdl:part name="echoResponse3" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoRequest3">
+		<wsdl:part name="echoRequest3" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="echoechoFault3">
+		<wsdl:part name="echoechoFault3" type="xsd:string"></wsdl:part>
+	</wsdl:message>
+	<wsdl:portType name="withoutWSAWAction">
+		<wsdl:operation name="echo">
+			<wsdl:input message="tns:echoRequest" name="NamedInput"></wsdl:input>

+			<wsdl:output message="tns:echoResponse" name="NamedOutput"></wsdl:output>

+			<wsdl:fault name="echoFault" message="tns:echoechoFault"></wsdl:fault>
+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:portType name="withWSAWAction">

+		<wsdl:operation name="echo">

+			<wsdl:input message="tns:echoRequest1" wsaw:Action="http://example.org/action/echoIn"></wsdl:input>

+			<wsdl:output message="tns:echoResponse1" wsaw:Action="http://example.org/action/echoOut"></wsdl:output>

+			<wsdl:fault name="echoFault" message="tns:echoechoFault1" wsaw:Action="http://example.org/action/echoFault"></wsdl:fault>
+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:portType name="withoutWSAWActionNoName">

+		<wsdl:operation name="echo">

+			<wsdl:input message="tns:echoRequest2"></wsdl:input>

+			<wsdl:output message="tns:echoResponse2"></wsdl:output>

+			<wsdl:fault name="echoFault" message="tns:echoechoFault2"></wsdl:fault>
+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:portType name="withSOAPAction">

+		<wsdl:operation name="echo">

+			<wsdl:input message="tns:echoRequest3"></wsdl:input>

+			<wsdl:output message="tns:echoResponse3"></wsdl:output>
+			<wsdl:fault name="echoFault" message="tns:echoechoFault3"></wsdl:fault>
+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:binding name="withoutWSAWActionBinding"

+		type="tns:withoutWSAWAction">

+		<soap:binding style="document"

+			transport="http://schemas.xmlsoap.org/soap/http" />

+		<wsdl:operation name="echo">

+			<soap:operation

+				soapAction="" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+			<wsdl:fault name="echoFault">

+				<soap:fault name="echoFault" use="literal" />

+			</wsdl:fault>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:binding name="withWSAWActionBinding"

+		type="tns:withWSAWAction">

+		<soap:binding style="document"

+			transport="http://schemas.xmlsoap.org/soap/http" />

+		<wsdl:operation name="echo">

+			<soap:operation

+				soapAction="" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+			<wsdl:fault name="echoFault">

+				<soap:fault name="echoFault" use="literal" />

+			</wsdl:fault>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:binding name="withoutWSAWActionNoNameBinding"

+		type="tns:withoutWSAWActionNoName">

+		<soap:binding style="document"

+			transport="http://schemas.xmlsoap.org/soap/http" />

+		<wsdl:operation name="echo">

+			<soap:operation

+				soapAction="" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+			<wsdl:fault name="echoFault">

+				<soap:fault name="echoFault" use="literal" />

+			</wsdl:fault>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:binding name="withSOAPActionBinding"

+		type="tns:withSOAPAction">

+		<soap:binding style="document"

+			transport="http://schemas.xmlsoap.org/soap/http" />

+		<wsdl:operation name="echo">

+			<soap:operation

+				soapAction="http://ws.apache.org/axis2/actiontest/echo" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+			<wsdl:fault name="echoFault">

+				<soap:fault name="echoFault" use="literal" />

+			</wsdl:fault>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:service name="actionTests">

+		<wsdl:port binding="tns:withSOAPActionBinding"

+			name="actionTestsSOAP">

+			<soap:address location="http://tempuri.org" />

+		</wsdl:port>

+	</wsdl:service>

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/kernel/test-resources/wsdl/test1.wsdl b/rampart_1_1/modules/kernel/test-resources/wsdl/test1.wsdl
new file mode 100644
index 0000000..e72851d
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/wsdl/test1.wsdl
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- WSDL description of the WSS Ping interop scenarios -->
+
+<definitions name="Echo"
+    targetNamespace="http://ws.apache.org/axis2/tests"
+    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
+    xmlns:tns="http://ws.apache.org/axis2/tests"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
+    xmlns:intf="http://ws-policy.tests">
+    	  
+  <types>
+    <schema targetNamespace="http://xmlsoap.org/Echo"
+         xmlns="http://www.w3.org/2001/XMLSchema">
+      <complexType name="echo">
+        <sequence>
+          <element name="text" type="xsd:string" nillable="true"/>
+                 </sequence>
+      </complexType>
+      <complexType name="echoResponse">
+        <sequence>
+          <element name="text" type="xsd:string" nillable="true"/>
+                 </sequence>
+      </complexType>
+      <element name="Echo" type="tns:echo"/>
+      <element name="EchoResponse" type="tns:echoResponse"/>
+    </schema>
+  </types>
+
+  <message name="EchoRequest">
+    <part name="echo" element="tns:Echo"/>
+  </message>
+
+  <message name="EchoResponse">
+    <part name="echoResponse" element="tns:EchoResponse"/>
+  </message>
+
+  <portType name="EchoPort">
+    <operation name="Echo">
+      <input  message="tns:EchoRequest" wsa:Action="http://tests.org/echo/in" />
+      <output message="tns:EchoResponse" wsa:Action="http://tests.org/echo/out" />
+    </operation>
+  </portType>
+
+  <binding name="EchoBinding" type="tns:EchoPort">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+style="document"/>
+    <operation name="Echo">
+      <soap:operation soapAction="http://ws.apache.org/axis2/tests/echo"/>
+      <input> 
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+  </binding>
+   
+  <service name="EchoService">
+    <port name="EchoPort" binding="tns:EchoBinding">
+      <soap:address location="http://localhost:8080/axis2/services/EchoService"/>
+    </port>
+  </service>
+
+</definitions>
diff --git a/rampart_1_1/modules/kernel/test-resources/wsdl/test2.wsdl b/rampart_1_1/modules/kernel/test-resources/wsdl/test2.wsdl
new file mode 100644
index 0000000..e2ce9cb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test-resources/wsdl/test2.wsdl
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- WSDL description of the WSS Ping interop scenarios -->
+
+<definitions name="Echo"
+    targetNamespace="http://ws.apache.org/axis2/tests"
+    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
+    xmlns:tns="http://ws.apache.org/axis2/tests"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
+    xmlns:intf="http://ws-policy.tests">
+    
+  <wsp:Policy wsu:Id="Message1-2">
+    <intf:MessagePolicyTestAssertion2 marker="6" />
+  </wsp:Policy>
+    
+  <wsp:Policy wsu:Id="Operation1-2">
+	<intf:OperationPolicyTestAssertion2 marker="6" />
+  </wsp:Policy>
+	
+  <wsp:Policy wsu:Id="Endpoint1-2">
+    <intf:EndpointPolicyTestAssertion2 marker="7" />
+  </wsp:Policy>
+	  
+  <types>
+    <schema targetNamespace="http://xmlsoap.org/Echo"
+         xmlns="http://www.w3.org/2001/XMLSchema">
+      <complexType name="echo">
+        <sequence>
+          <element name="text" type="xsd:string" nillable="true"/>
+                 </sequence>
+      </complexType>
+      <complexType name="echoResponse">
+        <sequence>
+          <element name="text" type="xsd:string" nillable="true"/>
+                 </sequence>
+      </complexType>
+      <element name="Echo" type="tns:echo"/>
+      <element name="EchoResponse" type="tns:echoResponse"/>
+    </schema>
+  </types>
+
+  <message name="EchoRequest">
+    <part name="echo" element="tns:Echo"/>
+  </message>
+
+  <message name="EchoResponse">
+    <part name="echoResponse" element="tns:EchoResponse"/>
+  </message>
+
+  <portType name="EchoPort" wsp:PolicyURIs="#Endpoint1-2">
+    <operation name="Echo">
+      <wsp:PolicyReference URI="#Operation1-2"/>
+      <input  message="tns:EchoRequest" wsp:PolicyURIs="#Message1-2" wsa:Action="http://tests.org/echo/in"/>
+      <output message="tns:EchoResponse" wsp:PolicyURIs="#Message1-2" wsa:Action="http://tests.org/echo/out" />
+    </operation>
+  </portType>
+
+  <binding name="EchoBinding" type="tns:EchoPort">
+    <wsp:Policy wsu:Id="Endpoint2">
+	  <intf:EndpointPolicyTestAssertion1 marker="6" />
+    </wsp:Policy>
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+style="document"/>
+    <operation name="Echo">
+      <wsp:Policy>
+        <intf:OperationPolicyTestAssertion2 marker="3" />
+      </wsp:Policy> 
+      <soap:operation soapAction="http://ws.apache.org/axis2/tests/echo"/>
+      <input> 
+        <wsp:Policy>
+          <intf:MessagePolicyTestAssertion1 marker="2" />
+		</wsp:Policy>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+        <wsp:Policy>
+          <intf:MessagePolicyTestAssertion1 marker="1" />
+		</wsp:Policy>
+      </output>
+    </operation>
+  </binding>
+   
+  <service name="EchoService">
+    <wsp:Policy>
+	  <intf:ServicePolicyTestAssertion1 marker="5" />
+	</wsp:Policy>
+    <port name="EchoPort" binding="tns:EchoBinding">
+      <wsp:Policy>
+	    <intf:EndpointPolicyTestAssertion1 marker="4" />
+	  </wsp:Policy>
+      <soap:address location="http://localhost:8080/axis2/services/EchoService"/>
+    </port>
+  </service>
+
+</definitions>
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/AbstractTestCase.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/AbstractTestCase.java
new file mode 100644
index 0000000..75f8b46
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/AbstractTestCase.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2004,2005 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.axis2;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+
+/**
+ * Abstract base class for test cases.
+ */
+public abstract class AbstractTestCase
+        extends TestCase {
+    protected String testDir = "test" + File.separator;
+    protected String sampleDir = "samples" + File.separator;
+    protected String outDir = "target" + File.separator + "generated" +
+            File.separator +
+            "samples" +
+            File.separator;
+    protected String tempDir = "target" + File.separator + "generated" +
+            File.separator +
+            "temp";
+    protected String testResourceDir = "test-resources";
+
+
+    /**
+     * Basedir for all file I/O. Important when running tests from
+     * the reactor.
+     */
+    public String basedir = System.getProperty("basedir");
+
+    /**
+     * @param testName
+     */
+    public AbstractTestCase(String testName) {
+        super(testName);
+        if (basedir == null) {
+            basedir = new File(".").getAbsolutePath();
+        }
+        testDir = new File(basedir, testDir).getAbsolutePath();
+        sampleDir = new File(basedir, sampleDir).getAbsolutePath();
+        outDir = new File(basedir, outDir).getAbsolutePath();
+        tempDir = new File(basedir, tempDir).getAbsolutePath();
+    }
+
+
+    public File getTestResourceFile(String relativePath) {
+        return new File(testResourceDir, relativePath);
+    }
+}
+
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/Echo2.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/Echo2.java
new file mode 100644
index 0000000..4e824d6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/Echo2.java
@@ -0,0 +1,25 @@
+package org.apache.axis2;

+

+import org.apache.axiom.soap.SOAPEnvelope;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class Echo2 {

+    public SOAPEnvelope echo(SOAPEnvelope in){

+        return in;

+    }

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/InavalidModuleImpl.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/InavalidModuleImpl.java
new file mode 100644
index 0000000..ab10f1a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/InavalidModuleImpl.java
@@ -0,0 +1,46 @@
+package org.apache.axis2;

+

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.description.AxisDescription;

+import org.apache.axis2.description.AxisModule;

+import org.apache.axis2.modules.Module;

+import org.apache.neethi.Assertion;

+import org.apache.neethi.Policy;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class InavalidModuleImpl implements Module {

+    // initialize the module

+    public void init(ConfigurationContext configContext, AxisModule module) throws AxisFault {

+    }

+

+    public void engageNotify(AxisDescription axisDescription) throws AxisFault {

+    }

+

+    // shutdown the module

+    public void shutdown(ConfigurationContext configurationContext) throws AxisFault {

+    }

+

+    public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault {

+    }

+

+    public boolean canSupportAssertion(Assertion assertion) {

+        return true;

+    }

+    

+    

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/ModuleHandler1.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/ModuleHandler1.java
new file mode 100644
index 0000000..38b0d02
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/ModuleHandler1.java
@@ -0,0 +1,52 @@
+package org.apache.axis2;

+

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.engine.Handler;

+import org.apache.axis2.handlers.AbstractHandler;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class ModuleHandler1 extends AbstractHandler implements Handler {

+    private static final Log log = LogFactory.getLog(ModuleHandler1 .class);

+    private String message;

+    private String name;

+

+    public ModuleHandler1() {

+        this.message = "inside invalid module";

+    }

+

+    public String getName() {

+        return name;

+    }

+

+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {

+        log.info("I am " + message + " Handler Running :)");

+        return InvocationResponse.CONTINUE;        

+    }

+

+    public void revoke(MessageContext msgContext) {

+        log.info("I am " + message + " Handler Running :)");

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+

+}

+

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java
new file mode 100644
index 0000000..abfefcb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java
@@ -0,0 +1,55 @@
+/*

+* Copyright 2006 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.axis2.addressing;

+

+import org.apache.axis2.context.MessageContext;

+

+import junit.framework.TestCase;

+

+public class AddressingHelperTest extends TestCase {

+

+    public void testIsReplyRedirectedNoReplyTo() {

+        MessageContext mc = new MessageContext();

+        assertFalse(AddressingHelper.isReplyRedirected(mc));

+    }

+    public void testIsReplyRedirectedAnonReplyTo() {

+        MessageContext mc = new MessageContext();

+        mc.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));

+        assertFalse(AddressingHelper.isReplyRedirected(mc));

+    }

+    public void testIsReplyRedirectedNonAnonReplyTo() {

+        MessageContext mc = new MessageContext();

+        mc.setReplyTo(new EndpointReference("http://ws.apache.org/axis2"));

+        assertTrue(AddressingHelper.isReplyRedirected(mc));

+    }

+    

+    public void testIsFaultRedirectedNoFaultToOrReplyTo() {

+        MessageContext mc = new MessageContext();

+        assertFalse(AddressingHelper.isFaultRedirected(mc));

+    }

+

+    public void testIsFaultRedirectedAnonFaultTo() {

+        MessageContext mc = new MessageContext();

+        mc.setFaultTo(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));

+        assertFalse(AddressingHelper.isFaultRedirected(mc));

+    }

+    

+    public void testIsFaultRedirectedNonAnonFaultTo() {

+        MessageContext mc = new MessageContext();

+        mc.setFaultTo(new EndpointReference("http://ws.apache.org/axis2"));

+        assertTrue(AddressingHelper.isFaultRedirected(mc));

+    }

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/EndpointReferenceTypeTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/EndpointReferenceTypeTest.java
new file mode 100644
index 0000000..a79e7f5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/EndpointReferenceTypeTest.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2004,2005 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.axis2.addressing;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+
+import javax.xml.namespace.QName;
+
+import java.util.ArrayList;
+import java.util.Map;
+
+
+public class EndpointReferenceTypeTest extends TestCase {
+
+    EndpointReference endpointReference;
+    private String address = "htttp://wwww.openource.lk/~chinthaka";
+
+    public static void main(String[] args) {
+        TestRunner.run(EndpointReferenceTypeTest.class);
+    }
+
+    /*
+     * @see TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+        endpointReference = new EndpointReference(address);
+    }
+
+    public void testGetAndSetAddress() {
+        assertEquals("Address not set properly in the constructor",
+                address,
+                endpointReference.getAddress());
+
+        String newAddress = "http://www.axis2.com";
+        endpointReference.setAddress(newAddress);
+        assertEquals("Address not set properly in the setter method",
+                newAddress,
+                endpointReference.getAddress());
+    }
+
+    public void testGetAndSetReferenceParameters() {
+        for (int i = 0; i < 10; i++) {
+            endpointReference.addReferenceParameter(
+                    new QName("http://www.opensouce.lk/" + i, "" + i),
+                    "value " + i * 50);
+        }
+
+        Map retrievedReferenceParameters = endpointReference.getAllReferenceParameters();
+        for (int i = 0; i < 10; i++) {
+            OMElement referenceParameter = (OMElement) retrievedReferenceParameters.get(
+                    new QName("http://www.opensouce.lk/" + i, "" + i));
+            assertEquals(
+                    "Input value differs from what is taken out from AnyContentType",
+                    referenceParameter.getText(),
+                    "value " + i * 50);
+        }
+    }
+    
+    public void testHasAnonymousAddress(){
+        // Default EndpointReference does not has 'anonymous address'
+        assertFalse(endpointReference.hasAnonymousAddress());
+        
+        // EndpointReference with 2005/08 Anonymous address
+        EndpointReference epr200508anon = new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+        assertTrue(epr200508anon.hasAnonymousAddress());
+        
+        // EndpointReference with 2004/08 Anonymous address
+        EndpointReference epr200408anon = new EndpointReference(AddressingConstants.Submission.WSA_ANONYMOUS_URL);
+        assertTrue(epr200408anon.hasAnonymousAddress());
+    }
+    
+    public void testHasNoneAddress(){
+        // Default EndpointReference does not has 'anonymous address'
+        assertFalse(endpointReference.hasNoneAddress());
+        
+        // EndpointReference with 2005/08 None address
+        EndpointReference epr200508none = new EndpointReference(AddressingConstants.Final.WSA_NONE_URI);
+        assertTrue(epr200508none.hasNoneAddress());
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/miheaders/RelatesToTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/miheaders/RelatesToTest.java
new file mode 100644
index 0000000..c27c06a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/miheaders/RelatesToTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2004,2005 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.axis2.addressing.miheaders;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+import org.apache.axis2.addressing.RelatesTo;
+
+
+public class RelatesToTest extends TestCase {
+    private RelatesTo relatesTo;
+    String address = "www.someaddress.com";
+    String relationshipType = "Reply";
+
+
+    public static void main(String[] args) {
+        TestRunner.run(RelatesToTest.class);
+
+    }
+
+    protected void setUp() throws Exception {
+
+    }
+
+    public void testGetAddress() {
+        relatesTo = new RelatesTo(address, relationshipType);
+
+        assertEquals(
+                "RelatesTo address has not been set properly in the constructor",
+                relatesTo.getValue(),
+                address);
+
+        String newAddress = "www.newRelation.org";
+        relatesTo.setValue(newAddress);
+        assertEquals("RelatesTo address has not been get/set properly",
+                relatesTo.getValue(),
+                newAddress);
+
+    }
+
+    public void testGetRelationshipType() {
+        relatesTo = new RelatesTo(address, relationshipType);
+
+        assertEquals(
+                "RelatesTo RelationshipType has not been set properly in the constructor",
+                relatesTo.getRelationshipType(),
+                relationshipType);
+
+        String newRelationshipType = "AnyOtherType";
+        relatesTo.setRelationshipType(newRelationshipType);
+        assertEquals("RelatesTo address has not been get/set properly",
+                relatesTo.getRelationshipType(),
+                newRelationshipType);
+    }
+
+    public void testSingleArgumentConstructor() {
+        relatesTo = new RelatesTo(address);
+        assertEquals(
+                "RelatesTo address has not been set properly in the constructor",
+                relatesTo.getValue(),
+                address);
+
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/wsdl/WSDL11ActionHelperTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/wsdl/WSDL11ActionHelperTest.java
new file mode 100644
index 0000000..205c871
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/addressing/wsdl/WSDL11ActionHelperTest.java
@@ -0,0 +1,136 @@
+/*

+ * Copyright 2004,2005 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.axis2.addressing.wsdl;

+

+import java.io.File;

+import java.net.URL;

+import java.util.List;

+

+import javax.wsdl.Definition;

+import javax.wsdl.Fault;

+import javax.wsdl.Input;

+import javax.wsdl.Operation;

+import javax.wsdl.Output;

+import javax.wsdl.PortType;

+import javax.wsdl.factory.WSDLFactory;

+import javax.wsdl.xml.WSDLReader;

+import javax.xml.namespace.QName;

+

+import junit.framework.TestCase;

+

+public class WSDL11ActionHelperTest extends TestCase {

+

+	String testWSDLFile = "/target/test-resources/wsdl/actionTests.wsdl";

+	

+	Definition definition;

+	

+	protected void setUp() throws Exception {

+		super.setUp();

+		WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();

+        reader.setFeature("javax.wsdl.importDocuments", false);

+        reader.setFeature("javax.wsdl.verbose", false);

+

+        URL wsdlFile = new File(System.getProperty("basedir")+testWSDLFile).toURL();//getClass().getClassLoader().getResource(testWSDLFile);

+        definition =  reader.readWSDL(wsdlFile.toString());

+	}

+

+

+	 // Test DefaultActionPattern (no names in WSDL)

+	 // Test not required for Fault as Fault elements MUST have naes per the WSDL 1.1 spec

+	 //	portType=withoutWSAWActionNoName

+	 // operation=echo

+	 public void testGenerateInputActionNoNames(){

+		 String expectedAction = "http://ws.apache.org/axis2/actiontest/withoutWSAWActionNoName/echoRequest";

+		 PortType pt = definition.getPortType(new QName("http://ws.apache.org/axis2/actiontest/","withoutWSAWActionNoName"));

+		 List operations = pt.getOperations();

+		 Operation op = (Operation)operations.get(0);

+		 Input in = op.getInput();

+		 String actualAction = WSDL11ActionHelper.getActionFromInputElement(definition,pt,op,in);

+		 assertEquals(expectedAction, actualAction);

+	 }

+	 public void testGenerateOutputActionNoNames(){

+		 String expectedAction = "http://ws.apache.org/axis2/actiontest/withoutWSAWActionNoName/echoResponse";

+		 PortType pt = definition.getPortType(new QName("http://ws.apache.org/axis2/actiontest/","withoutWSAWActionNoName"));

+		 List operations = pt.getOperations();

+		 Operation op = (Operation)operations.get(0);

+		 Output out = op.getOutput();

+		 String actualAction = WSDL11ActionHelper.getActionFromOutputElement(definition,pt,op,out);

+		 assertEquals(expectedAction, actualAction);

+	 }

+	

+	 // Test DefaultActionPattern (names explicitly set in WSDL)

+	 //	portType=withoutWSAWAction

+	 // operation=echo

+	 public void testGenerateInputAction(){

+		 String expectedAction = "http://ws.apache.org/axis2/actiontest/withoutWSAWAction/NamedInput";

+		 PortType pt = definition.getPortType(new QName("http://ws.apache.org/axis2/actiontest/","withoutWSAWAction"));

+		 List operations = pt.getOperations();

+		 Operation op = (Operation)operations.get(0);

+		 Input in = op.getInput();

+		 String actualAction = WSDL11ActionHelper.getActionFromInputElement(definition,pt,op,in);

+		 assertEquals(expectedAction, actualAction);

+	 }

+	 public void testGenerateOutputAction(){

+		 String expectedAction = "http://ws.apache.org/axis2/actiontest/withoutWSAWAction/NamedOutput";

+		 PortType pt = definition.getPortType(new QName("http://ws.apache.org/axis2/actiontest/","withoutWSAWAction"));

+		 List operations = pt.getOperations();

+		 Operation op = (Operation)operations.get(0);

+		 Output out = op.getOutput();

+		 String actualAction = WSDL11ActionHelper.getActionFromOutputElement(definition,pt,op,out);

+		 assertEquals(expectedAction, actualAction);

+	 }

+	 public void testGenerateFaultAction(){

+		 String expectedAction = "http://ws.apache.org/axis2/actiontest/withoutWSAWAction/echo/Fault/echoFault";

+		 PortType pt = definition.getPortType(new QName("http://ws.apache.org/axis2/actiontest/","withoutWSAWAction"));

+		 List operations = pt.getOperations();

+		 Operation op = (Operation)operations.get(0);

+		 Fault fault = op.getFault("echoFault");

+		 String actualAction = WSDL11ActionHelper.getActionFromFaultElement(definition,pt,op,fault);

+		 assertEquals(expectedAction, actualAction);

+	 }

+	

+	 // Test reading wsaw:Action values

+	 // portType=withWSAWAction

+	 // operation=echo

+	 public void testGetWSAWInputAction(){

+		 String expectedAction = "http://example.org/action/echoIn";

+		 PortType pt = definition.getPortType(new QName("http://ws.apache.org/axis2/actiontest/","withWSAWAction"));

+		 List operations = pt.getOperations();

+		 Operation op = (Operation)operations.get(0);

+		 Input in = op.getInput();

+		 String actualAction = WSDL11ActionHelper.getActionFromInputElement(definition,pt,op,in);

+		 assertEquals(expectedAction, actualAction);

+	 }

+	 public void testGetWSAWOutputAction(){

+		 String expectedAction = "http://example.org/action/echoOut";

+		 PortType pt = definition.getPortType(new QName("http://ws.apache.org/axis2/actiontest/","withWSAWAction"));

+		 List operations = pt.getOperations();

+		 Operation op = (Operation)operations.get(0);

+		 Output out = op.getOutput();

+		 String actualAction = WSDL11ActionHelper.getActionFromOutputElement(definition,pt,op,out);

+		 assertEquals(expectedAction, actualAction);

+	 }

+	 public void testGetWSAWFaultAction(){

+		 String expectedAction = "http://example.org/action/echoFault";

+		 PortType pt = definition.getPortType(new QName("http://ws.apache.org/axis2/actiontest/","withWSAWAction"));

+		 List operations = pt.getOperations();

+		 Operation op = (Operation)operations.get(0);

+		 Fault fault = op.getFault("echoFault");

+		 String actualAction = WSDL11ActionHelper.getActionFromFaultElement(definition,pt,op,fault);

+		 assertEquals(expectedAction, actualAction);

+	 }

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java
new file mode 100644
index 0000000..f2e4a99
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004,2005 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.axis2.context;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.InOutAxisOperation;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+
+import javax.xml.namespace.QName;
+
+public class ContextHierarchyTest extends TestCase {
+    private AxisOperation axisOperation;
+
+    private AxisService axisService;
+
+    private AxisConfiguration axisConfiguration;
+
+    public ContextHierarchyTest(String arg0) {
+        super(arg0);
+    }
+
+    protected void setUp() throws Exception {
+        axisOperation = new InOutAxisOperation(new QName("Temp"));
+        axisService = new AxisService("Temp");
+        axisConfiguration = new AxisConfiguration();
+        axisService.addOperation(axisOperation);
+        axisConfiguration.addService(axisService);
+    }
+
+    public void testCompleteHiracy() throws AxisFault {
+        ConfigurationContext configurationContext = new ConfigurationContext(
+                axisConfiguration);
+        ServiceGroupContext serviceGroupContext = new ServiceGroupContext(
+                configurationContext, (AxisServiceGroup) axisService.getParent());
+        ServiceContext serviceContext = serviceGroupContext
+                .getServiceContext(axisService);
+        MessageContext msgctx = new MessageContext();
+        msgctx.setConfigurationContext(configurationContext);
+        OperationContext opContext = axisOperation.findOperationContext(msgctx,
+                serviceContext);
+        axisOperation.registerOperationContext(msgctx,opContext);
+        msgctx.setServiceContext(serviceContext);
+
+        // test the complte Hierarchy built
+        assertEquals(msgctx.getParent(), opContext);
+        assertEquals(opContext.getParent(), serviceContext);
+        assertEquals(serviceContext.getParent(), serviceGroupContext);
+
+        String key1 = "key1";
+        String value1 = "Val1";
+        String value2 = "value2";
+        String key2 = "key2";
+        String value3 = "value";
+
+        configurationContext.setProperty(key1, value1);
+        assertEquals(value1, msgctx.getProperty(key1));
+
+        axisConfiguration.addParameter(new Parameter(key2, value2));
+        assertEquals(value2, msgctx.getParameter(key2).getValue());
+
+        opContext.setProperty(key1, value3);
+        assertEquals(value3, msgctx.getProperty(key1));
+        opContext.getConfigurationContext();
+
+    }
+
+    public void testDisconntectedHiracy() throws AxisFault {
+        ConfigurationContext configurationContext = new ConfigurationContext(
+                axisConfiguration);
+
+        MessageContext msgctx = new MessageContext();
+        msgctx.setConfigurationContext(configurationContext);
+
+        // test the complete Hierarchy built
+        assertEquals(msgctx.getParent(), null);
+
+        String key1 = "key1";
+        String value1 = "Val1";
+        String value2 = "value2";
+        String key2 = "key2";
+
+        configurationContext.setProperty(key1, value1);
+        assertEquals(value1, msgctx.getProperty(key1));
+
+        axisConfiguration.addParameter(new Parameter(key2, value2));
+        assertEquals(value2, msgctx.getParameter(key2).getValue());
+    }
+
+    protected void tearDown() throws Exception {
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java
new file mode 100644
index 0000000..5b7d2b2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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.axis2.context;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.RelatesTo;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.InOutAxisOperation;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.util.UUIDGenerator;
+
+import javax.xml.namespace.QName;
+
+public class OperationContextTest extends AbstractTestCase {
+
+    private ConfigurationContext configContext = new ConfigurationContext(
+            new AxisConfiguration());
+
+    public OperationContextTest(String arg0) {
+        super(arg0);
+    }
+
+    public void testMEPfindingOnRelatesTO() throws Exception {
+
+        AxisService axisService = new AxisService("TempSC");
+        configContext.getAxisConfiguration().addService(axisService);
+        ServiceGroupContext sgc = new ServiceGroupContext(configContext,
+                (AxisServiceGroup) axisService.getParent());
+
+        ServiceContext sessionContext = sgc.getServiceContext(axisService);
+        MessageContext messageContext1 = this.getBasicMessageContext();
+
+        messageContext1.setMessageID(UUIDGenerator.getUUID());
+        AxisOperation axisOperation = new InOutAxisOperation(new QName("test"));
+        OperationContext operationContext1 = axisOperation
+                .findOperationContext(messageContext1, sessionContext);
+        axisOperation.registerOperationContext(messageContext1,operationContext1);
+
+        MessageContext messageContext2 = this.getBasicMessageContext();
+        messageContext2.setMessageID(UUIDGenerator.getUUID());
+        messageContext2.getOptions().addRelatesTo(
+                new RelatesTo(messageContext1.getMessageID()));
+        messageContext2.setAxisOperation(axisOperation);
+        OperationContext operationContext2 = axisOperation
+                .findOperationContext(messageContext2, sessionContext);
+        assertEquals(operationContext1, operationContext2);
+    }
+
+    public MessageContext getBasicMessageContext() throws AxisFault {
+        MessageContext messageContext = new MessageContext();
+        messageContext.setConfigurationContext(configContext);
+        messageContext.setTransportIn(new TransportInDescription(
+                new QName("axis2")));
+        messageContext.setTransportOut(new TransportOutDescription(new QName(
+                "axis2")));
+
+        return messageContext;
+
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AddingObserverTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AddingObserverTest.java
new file mode 100644
index 0000000..5d3f3f8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AddingObserverTest.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import junit.framework.TestCase;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.engine.AxisConfiguration;
+
+public class AddingObserverTest extends TestCase {
+
+    AxisConfiguration er;
+
+    public void testAddingObservs() throws Exception {
+        try {
+            String filename = System.getProperty("basedir")+"/test-resources/deployment/ConfigWithObservers";
+            er = ConfigurationContextFactory.createConfigurationContextFromFileSystem(filename, filename + "/axis2.xml").getAxisConfiguration();
+            assertNotNull(er);
+        } catch (DeploymentException e) {
+            throw new DeploymentException(e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AxisMessageTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AxisMessageTest.java
new file mode 100644
index 0000000..d85d26e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AxisMessageTest.java
@@ -0,0 +1,63 @@
+package org.apache.axis2.deployment;

+

+import junit.framework.TestCase;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisMessage;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.engine.AxisConfiguration;

+

+import javax.xml.namespace.QName;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class AxisMessageTest extends TestCase {

+

+    public void testAxisMessage() throws Exception {

+        String filename = System.getProperty("basedir")+"/test-resources/deployment/AxisMessageTestRepo";

+        AxisConfiguration er = ConfigurationContextFactory.createConfigurationContextFromFileSystem(filename, filename + "/axis2.xml")

+                .getAxisConfiguration();

+

+        assertNotNull(er);

+        AxisService service = er.getService("MessagetestService");

+        assertNotNull(service);

+        AxisOperation op = service.getOperation(new QName("echoString"));

+        assertNotNull(op);

+        AxisMessage message = op.getMessage("In");

+        assertNotNull(message);

+        Parameter para = message.getParameter("messageIN");

+        assertNotNull(para);

+        assertEquals(para.getValue(), "messageIN");

+

+

+        op = service.getOperation(new QName("echoStringArray"));

+        assertNotNull(op);

+        message = op.getMessage("In");

+        assertNotNull(message);

+        para = message.getParameter("messageIN");

+        assertNotNull(para);

+        assertEquals(para.getValue(), "messageIN");

+

+        message = op.getMessage("Out");

+        assertNotNull(message);

+        para = message.getParameter("messageOut");

+        assertNotNull(para);

+        assertEquals(para.getValue(), "messageOut");

+

+    }

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AxisObserverImpl.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AxisObserverImpl.java
new file mode 100644
index 0000000..6870074
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/AxisObserverImpl.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.*;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisEvent;
+import org.apache.axis2.engine.AxisObserver;
+
+import java.util.ArrayList;
+
+public class AxisObserverImpl implements AxisObserver {
+
+    ParameterInclude parameterimpl;
+
+    // The initilization code will go here
+    public void init(AxisConfiguration axisConfig) {
+        parameterimpl = new ParameterIncludeImpl();
+    }
+
+    public void serviceUpdate(AxisEvent event, AxisService service) {
+    }
+
+    public void moduleUpdate(AxisEvent event, AxisModule module) {
+    }
+
+    public void addParameter(Parameter param) throws AxisFault {
+    }
+
+    public void removeParameter(Parameter param) throws AxisFault {
+    }
+
+    public Parameter getParameter(String name) {
+        return null;
+    }
+
+    public ArrayList getParameters() {
+        return null;
+    }
+
+    //to check whether the parameter is locked at any levle
+    public boolean isParameterLocked(String parameterName) {
+        return false;
+    }
+
+    public void deserializeParameters(OMElement parameterElement) throws AxisFault {
+        this.parameterimpl.deserializeParameters(parameterElement);
+    }
+
+    public void serviceGroupUpdate(AxisEvent event, AxisServiceGroup serviceGroup) {
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/BadModuleTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/BadModuleTest.java
new file mode 100644
index 0000000..2d03c16
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/BadModuleTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.engine.AxisConfiguration;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
+public class BadModuleTest extends AbstractTestCase {
+    /**
+     * Constructor.
+     */
+    public BadModuleTest(String testName) {
+        super(testName);
+    }
+
+    public void testBadModuleXML() {
+        try {
+            InputStream in = new FileInputStream(
+                    getTestResourceFile("deployment/Badmodule.xml"));
+            AxisConfiguration glabl = new AxisConfiguration();
+            AxisConfigBuilder builder =new AxisConfigBuilder(in, glabl);
+            builder.populateConfig();
+            fail(
+                    "this must failed gracefully with DeploymentException or FileNotFoundException");
+        } catch (FileNotFoundException e) {
+            return;
+        } catch (DeploymentException e) {
+            return;
+        } catch (Exception e) {
+            return;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/BuildERWithDeploymentTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/BuildERWithDeploymentTest.java
new file mode 100644
index 0000000..7fcb859
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/BuildERWithDeploymentTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.util.Loader;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.AxisConfiguration;
+
+import javax.xml.namespace.QName;
+
+public class BuildERWithDeploymentTest extends AbstractTestCase {
+    /**
+     * @param testName
+     */
+    public BuildERWithDeploymentTest(String testName) {
+        super(testName);
+    }
+
+    public void testDeployment() {
+        try {
+            String filename = System.getProperty("basedir")+"/target/test-resources/deployment";
+            AxisConfiguration er = ConfigurationContextFactory.createConfigurationContextFromFileSystem(filename,null)
+                    .getAxisConfiguration();
+
+            assertNotNull(er);
+            AxisService service = er.getService("service2");
+            assertNotNull(service);
+            //commentd since there is no service based messageReceivers
+            /*MessageReceiver provider = service.getMessageReceiver();
+          assertNotNull(provider);
+          assertTrue(provider instanceof RawXMLINOutMessageReceiver);*/
+            ClassLoader cl = service.getClassLoader();
+            assertNotNull(cl);
+            Loader.loadClass(cl, "org.apache.axis2.Echo2");
+            assertNotNull(service.getName());
+            assertNotNull(service.getParameter("para2"));
+
+            AxisOperation op = service.getOperation(new QName("opname"));
+            assertNotNull(op);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/DeploymentTotalTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/DeploymentTotalTest.java
new file mode 100644
index 0000000..86a2835
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/DeploymentTotalTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.phaseresolver.PhaseException;
+
+import javax.xml.stream.XMLStreamException;
+
+public class DeploymentTotalTest extends TestCase {
+    AxisConfiguration er;
+
+    public void testparseService1() throws PhaseException,
+            DeploymentException,
+            AxisFault,
+            XMLStreamException {
+        String filename = System.getProperty("basedir")+"/target/test-resources/deployment";
+        er = ConfigurationContextFactory.createConfigurationContextFromFileSystem(filename, filename + "/axis2.xml")
+                        .getAxisConfiguration();
+
+        // OK, no exceptions.  Now make sure we read the correct file...
+        Parameter param = er.getParameter("FavoriteColor");
+        assertNotNull("No FavoriteColor parameter in axis2.xml!", param);
+
+        assertEquals("purple", param.getValue());
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ExcludeService.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ExcludeService.java
new file mode 100644
index 0000000..ea2287c
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ExcludeService.java
@@ -0,0 +1,34 @@
+package org.apache.axis2.deployment;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class ExcludeService {

+    public int add(int a, int b) {

+        return a + b;

+    }

+

+    public int deduc(int a, int b) {

+        return a - b;

+    }

+

+    public int devide(int a, int b) {

+        return a / b;

+    }

+

+}

+

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModifiedConfigFileTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModifiedConfigFileTest.java
new file mode 100644
index 0000000..5d858d4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModifiedConfigFileTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.engine.AxisConfiguration;
+
+public class ModifiedConfigFileTest extends TestCase {
+
+    AxisConfiguration er;
+
+    public void testPhaseOrderchage() {
+        try {
+            String filename = "./test-resources/deployment/BadConfigOrderChange/axis2.xml";
+            er = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null,filename).getAxisConfiguration();
+            fail(
+                    "this must failed gracefully with DeploymentException \"Invalid System predefined " +
+                    "inphases , phase order does not\" +\n support\\n recheck axis2.xml\"");
+        } catch (AxisFault e) {
+
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModuleDisengagementTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModuleDisengagementTest.java
new file mode 100644
index 0000000..81f05ad
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModuleDisengagementTest.java
@@ -0,0 +1,210 @@
+package org.apache.axis2.deployment;

+

+import junit.framework.TestCase;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisModule;

+import org.apache.axis2.description.AxisOperation;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.InOutAxisOperation;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.Phase;

+

+import javax.xml.namespace.QName;

+import java.util.ArrayList;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class ModuleDisengagementTest extends TestCase {

+    AxisConfiguration er;

+    String serviceName = "testService";

+    QName opName = new QName("testOperation");

+

+    protected void setUp() throws Exception {

+        String filename = System.getProperty("basedir")+"/test-resources/deployment/moduleDisEngegeRepo";

+        er = ConfigurationContextFactory.

+                createConfigurationContextFromFileSystem(filename, null).getAxisConfiguration();

+        AxisService testService = new AxisService();

+        testService.setName(serviceName);

+        AxisOperation testOperation = new InOutAxisOperation();

+        testOperation.setName(opName);

+        testService.addOperation(testOperation);

+        er.addService(testService);

+    }

+

+    public void testGloalDisengagement() throws AxisFault {

+        AxisModule module = er.getModule(new QName("testModule"));

+        assertNotNull(module);

+        Phase predisptah;

+        Phase userPhase;

+        ArrayList globalinflow = er.getGlobalInFlow();

+        assertNotNull(globalinflow);

+        predisptah = (Phase) globalinflow.get(2);

+        assertNotNull(predisptah);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        AxisService service = er.getService(serviceName);

+        assertNotNull(service);

+        AxisOperation operation = service.getOperation(opName);

+        assertNotNull(operation);

+        userPhase = (Phase) operation.getRemainingPhasesInFlow().get(0);

+        assertNotNull(userPhase);

+        assertEquals(0, userPhase.getHandlerCount());

+        er.engageModule(module.getName());

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(1, userPhase.getHandlerCount());

+        er.disengageModule(module);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        assertEquals(0, userPhase.getHandlerCount());

+    }

+

+    public void testServiceDisengagement() throws AxisFault {

+        AxisModule module = er.getModule(new QName("testModule"));

+        assertNotNull(module);

+        Phase predisptah;

+        Phase userPhase;

+        ArrayList globalinflow = er.getGlobalInFlow();

+        assertNotNull(globalinflow);

+        predisptah = (Phase) globalinflow.get(2);

+        assertNotNull(predisptah);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        AxisService service = er.getService(serviceName);

+        assertNotNull(service);

+        AxisOperation operation = service.getOperation(opName);

+        assertNotNull(operation);

+        userPhase = (Phase) operation.getRemainingPhasesInFlow().get(0);

+        assertNotNull(userPhase);

+        assertEquals(0, userPhase.getHandlerCount());

+        er.engageModule(module.getName());

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(1, userPhase.getHandlerCount());

+        service.disengageModule(module);

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(0, userPhase.getHandlerCount());

+    }

+

+

+    public void testGlobalChcek() throws AxisFault {

+        AxisModule module = er.getModule(new QName("testModule"));

+        assertNotNull(module);

+        er.engageModule(module.getName());

+        er.disengageModule(module);

+        er.engageModule(module.getName());

+    }

+

+    public void testOperationDisengagement() throws AxisFault {

+        AxisModule module = er.getModule(new QName("testModule"));

+        assertNotNull(module);

+        Phase predisptah;

+        Phase userPhase;

+        ArrayList globalinflow = er.getGlobalInFlow();

+        assertNotNull(globalinflow);

+        predisptah = (Phase) globalinflow.get(2);

+        assertNotNull(predisptah);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        AxisService service = er.getService(serviceName);

+        assertNotNull(service);

+        AxisOperation operation = service.getOperation(opName);

+        assertNotNull(operation);

+        userPhase = (Phase) operation.getRemainingPhasesInFlow().get(0);

+        assertNotNull(userPhase);

+        assertEquals(0, userPhase.getHandlerCount());

+        er.engageModule(module.getName());

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(1, userPhase.getHandlerCount());

+        operation.disengageModule(module);

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(0, userPhase.getHandlerCount());

+    }

+

+    public void testServiceEnageServiceDisengag() throws AxisFault {

+        AxisModule module = er.getModule(new QName("testModule"));

+        assertNotNull(module);

+        Phase predisptah;

+        Phase userPhase;

+        ArrayList globalinflow = er.getGlobalInFlow();

+        assertNotNull(globalinflow);

+        predisptah = (Phase) globalinflow.get(2);

+        assertNotNull(predisptah);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        AxisService service = er.getService(serviceName);

+        assertNotNull(service);

+        AxisOperation operation = service.getOperation(opName);

+        assertNotNull(operation);

+        userPhase = (Phase) operation.getRemainingPhasesInFlow().get(0);

+        assertNotNull(userPhase);

+        assertEquals(0, userPhase.getHandlerCount());

+        service.engageModule(module, er);

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(1, userPhase.getHandlerCount());

+        service.disengageModule(module);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        assertEquals(0, userPhase.getHandlerCount());

+    }

+

+     public void testServiceEnageOperationDisengag() throws AxisFault {

+        AxisModule module = er.getModule(new QName("testModule"));

+        assertNotNull(module);

+        Phase predisptah;

+        Phase userPhase;

+        ArrayList globalinflow = er.getGlobalInFlow();

+        assertNotNull(globalinflow);

+        predisptah = (Phase) globalinflow.get(2);

+        assertNotNull(predisptah);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        AxisService service = er.getService(serviceName);

+        assertNotNull(service);

+        AxisOperation operation = service.getOperation(opName);

+        assertNotNull(operation);

+        userPhase = (Phase) operation.getRemainingPhasesInFlow().get(0);

+        assertNotNull(userPhase);

+        assertEquals(0, userPhase.getHandlerCount());

+        service.engageModule(module, er);

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(1, userPhase.getHandlerCount());

+        operation.disengageModule(module);

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(0, userPhase.getHandlerCount());

+    }

+

+    public void testOperationEnageOperationDisengage() throws AxisFault {

+        AxisModule module = er.getModule(new QName("testModule"));

+        assertNotNull(module);

+        Phase predisptah;

+        Phase userPhase;

+        ArrayList globalinflow = er.getGlobalInFlow();

+        assertNotNull(globalinflow);

+        predisptah = (Phase) globalinflow.get(2);

+        assertNotNull(predisptah);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        AxisService service = er.getService(serviceName);

+        assertNotNull(service);

+        AxisOperation operation = service.getOperation(opName);

+        assertNotNull(operation);

+        userPhase = (Phase) operation.getRemainingPhasesInFlow().get(0);

+        assertNotNull(userPhase);

+        assertEquals(0, userPhase.getHandlerCount());

+        operation.engageModule(module, er);

+        assertEquals(predisptah.getHandlerCount(), 2);

+        assertEquals(1, userPhase.getHandlerCount());

+        operation.disengageModule(module);

+        assertEquals(predisptah.getHandlerCount(), 0);

+        assertEquals(0, userPhase.getHandlerCount());

+    }

+

+

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModuleversionTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModuleversionTest.java
new file mode 100644
index 0000000..5077f85
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ModuleversionTest.java
@@ -0,0 +1,107 @@
+package org.apache.axis2.deployment;

+

+import junit.framework.TestCase;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisModule;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.util.Utils;

+

+import javax.xml.namespace.QName;

+import java.util.Iterator;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class ModuleversionTest extends TestCase {

+

+    public void testDefautModuleVersion() throws AxisFault {

+        String filename = System.getProperty("basedir")+"/test-resources/deployment/moduleVersion/Test1/axis2.xml";

+        AxisConfiguration ac = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null,filename)

+                .getAxisConfiguration();

+        assertNotNull(ac);

+        assertEquals(ac.getDefaultModuleVersion("abc"), "1.23");

+        assertEquals(ac.getDefaultModuleVersion("foo"), "0.89");

+    }

+

+    public void testCalculateDefaultModuleVersions() throws AxisFault {

+        AxisConfiguration axiConfiguration = new AxisConfiguration();

+        AxisModule module1 = new AxisModule();

+        module1.setName(new QName("Module1"));

+        axiConfiguration.addModule(module1);

+

+        AxisModule module2 = new AxisModule();

+        module2.setName(new QName("Module2-0.94"));

+        axiConfiguration.addModule(module2);

+

+        AxisModule module3 = new AxisModule();

+        module3.setName(new QName("Module2-0.95"));

+        axiConfiguration.addModule(module3);

+

+        AxisModule module4 = new AxisModule();

+        module4.setName(new QName("Module2-0.93"));

+        axiConfiguration.addModule(module4);

+

+        AxisModule module5 = new AxisModule();

+        module5.setName(new QName("testModule-1.93"));

+        axiConfiguration.addModule(module5);

+

+        Utils.calculateDefaultModuleVersion(axiConfiguration.getModules(), axiConfiguration);

+        assertEquals(module1, axiConfiguration.getDefaultModule("Module1"));

+        assertEquals(module3, axiConfiguration.getDefaultModule("Module2"));

+        assertEquals(module5, axiConfiguration.getDefaultModule("testModule"));

+        axiConfiguration.engageModule(new QName("Module2"));

+        axiConfiguration.engageModule(new QName("Module1"));

+        axiConfiguration.engageModule("testModule", "1.93");

+

+        Iterator engageModules = axiConfiguration.getEngagedModules().iterator();

+        boolean found1 = false;

+        boolean found2 = false;

+        boolean found3 = false;

+        while (engageModules.hasNext()) {

+            QName qName = (QName) engageModules.next();

+            if (qName.getLocalPart().equals("Module2-0.95")) {

+                found1 = true;

+            }

+        }

+        engageModules = axiConfiguration.getEngagedModules().iterator();

+        while (engageModules.hasNext()) {

+            QName qName = (QName) engageModules.next();

+            if (qName.getLocalPart().equals("Module1")) {

+                found2 = true;

+            }

+        }

+        engageModules = axiConfiguration.getEngagedModules().iterator();

+        while (engageModules.hasNext()) {

+            QName qName = (QName) engageModules.next();

+            if (qName.getLocalPart().equals("testModule-1.93")) {

+                found3 = true;

+            }

+        }

+

+

+        if (!found1) {

+            fail("this should fail");

+        }

+        if (!found2) {

+            fail("this should fail");

+        }

+        if (!found3) {

+            fail("this should fail");

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/OperationExcludeTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/OperationExcludeTest.java
new file mode 100644
index 0000000..e1f71a7
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/OperationExcludeTest.java
@@ -0,0 +1,47 @@
+package org.apache.axis2.deployment;

+

+import junit.framework.TestCase;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.phaseresolver.PhaseException;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamException;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class OperationExcludeTest extends TestCase {

+    AxisConfiguration er;

+

+    public void testExcludeOperations() throws PhaseException,

+            DeploymentException,

+            AxisFault,

+            XMLStreamException {

+        String filename = System.getProperty("basedir")+"/test-resources/deployment/exculeRepo";

+        er = ConfigurationContextFactory.createConfigurationContextFromFileSystem(filename, null)

+                .getAxisConfiguration();

+        AxisService service = er.getService("excludeService");

+        assertNotNull(service);

+        assertNotNull(service.getOperation(new QName("deduc")));

+        assertNull(service.getOperation(new QName("add")));

+    }

+

+}

+

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SameServiceAddingTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SameServiceAddingTest.java
new file mode 100644
index 0000000..1de6d1e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SameServiceAddingTest.java
@@ -0,0 +1,75 @@
+package org.apache.axis2.deployment;

+

+import junit.framework.TestCase;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.AxisServiceGroup;

+import org.apache.axis2.engine.AxisConfiguration;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 16, 2005

+ * Time: 11:29:06 PM

+ */

+public class SameServiceAddingTest extends TestCase {

+    AxisConfiguration ar;

+

+    public void testServiceGroup() throws AxisFault {

+        ar = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null).getAxisConfiguration();

+        AxisServiceGroup axisServiceGroup1 = new AxisServiceGroup();

+        axisServiceGroup1.setServiceGroupName("ServiceGroup1");

+        AxisService service1 = new AxisService();

+        service1.setName("serevice1");

+        axisServiceGroup1.addService(service1);

+

+        AxisService service4 = new AxisService();

+        service4.setName("serevice4");

+        axisServiceGroup1.addService(service4);

+        ar.addServiceGroup(axisServiceGroup1);

+

+

+        AxisServiceGroup axisServiceGroup2 = new AxisServiceGroup();

+        axisServiceGroup2.setServiceGroupName("ServiceGroup2");

+        AxisService service2 = new AxisService();

+        service2.setName("serevice2");

+        axisServiceGroup2.addService(service2);

+

+        AxisService service24 = new AxisService();

+        service24.setName("serevice4");

+        axisServiceGroup2.addService(service24);

+        try {

+            ar.addServiceGroup(axisServiceGroup2);

+        } catch (AxisFault axisFault) {

+            //I have to ignore this

+        }

+

+

+        AxisService servie = ar.getService("serevice1");

+        assertNotNull(servie);

+        servie = ar.getService("serevice4");

+        assertNotNull(servie);

+

+        servie = ar.getService("serevice2");

+        assertEquals(null, servie);

+        assertEquals(null, ar.getServiceGroup("service2"));

+    }

+

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ServiceGroupTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ServiceGroupTest.java
new file mode 100644
index 0000000..993157e
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/ServiceGroupTest.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.engine.AxisConfiguration;
+public class ServiceGroupTest extends TestCase {
+    AxisConfiguration ar;
+    String repo = System.getProperty("basedir")+"/test-resources/deployment/serviceGroupRepo";
+
+
+
+    protected void setUp() throws Exception {
+        ar = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo,null).getAxisConfiguration();
+    }
+
+    public void testServiceGroup() throws AxisFault {
+        AxisServiceGroup sgd = ar.getServiceGroup("serviceGroup");
+        assertNotNull(sgd);
+        AxisService service1 = ar.getService("service1");
+        assertNotNull(service1);
+        AxisService service2 = ar.getService("service2");
+        assertNotNull(service2);
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SpeakingHandler.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SpeakingHandler.java
new file mode 100644
index 0000000..81ab150
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SpeakingHandler.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class SpeakingHandler extends AbstractHandler implements Handler {
+
+    private static final Log log = LogFactory.getLog(SpeakingHandler.class);
+    private String message;
+    private String name;
+
+    public SpeakingHandler() {
+        this.message = "Hi I amtesting ";
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        log.info("I am " + message + " Handler Running :)");
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public void revoke(MessageContext msgContext) {
+        log.info("I am " + message + " Handler Running :)");
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SystemPhasesremovedTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SystemPhasesremovedTest.java
new file mode 100644
index 0000000..c2efe7a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/SystemPhasesremovedTest.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class SystemPhasesremovedTest extends TestCase {
+
+    AxisConfiguration er;
+	private static final Log log = LogFactory.getLog(SystemPhasesremovedTest.class);
+
+    public void testPhaseOrderchage() {
+        try {
+            String filename = "./test-resources/deployment/SystemPhaseRemove";
+            er =ConfigurationContextFactory.createConfigurationContextFromFileSystem(filename,filename + "/axis2.xml")
+                    .getAxisConfiguration();
+            fail(
+                    "this must failed gracefully with DeploymentException \"Invalid System predefined " +
+                    "inphases , phase order does not\" +\n support\\n recheck axis2.xml\"");
+        } catch (AxisFault e) {
+            log.info(e.getCause());
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/TransportDeploymentTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/TransportDeploymentTest.java
new file mode 100644
index 0000000..2fdb9cc
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/deployment/TransportDeploymentTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004,2005 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.axis2.deployment;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.phaseresolver.PhaseException;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import java.io.File;
+
+public class TransportDeploymentTest extends AbstractTestCase {
+    /**
+     * Constructor.
+     */
+    public TransportDeploymentTest(String testName) {
+        super(testName);
+    }
+
+    public void testTransports() throws AxisFault,
+            PhaseException,
+            DeploymentException,
+            XMLStreamException {
+        String repositoryName = testResourceDir + "/deployment";
+        File repo = new File(repositoryName);
+        String xmlFile = testResourceDir + "/deployment/server-transport.xml";
+        File xml = new File(xmlFile);
+        FileSystemConfigurator fsc = new FileSystemConfigurator(repo.getAbsolutePath(), xml.getAbsolutePath());
+        AxisConfiguration er = fsc.getAxisConfiguration();
+        TransportOutDescription transport1 = er.getTransportOut(
+                new QName("custom"));
+        assertNotNull(transport1);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/description/MockFlow.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/MockFlow.java
new file mode 100644
index 0000000..06fc530
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/MockFlow.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axis2.phaseresolver.PhaseMetadata;
+import org.apache.axis2.util.Utils;
+
+
+public class MockFlow extends Flow {
+    public MockFlow(String message, int length) {
+        super();
+        for (int i = 0; i < length; i++) {
+            SpeakingHandler1 h1 = new SpeakingHandler1(
+                    "Executing " + i + " inside " + message);
+            Utils.addHandler(this,
+                    h1,
+                    PhaseMetadata.PHASE_POLICY_DETERMINATION);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/description/RegistryTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/RegistryTest.java
new file mode 100644
index 0000000..4ab8bfd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/RegistryTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.handlers.AbstractHandler;
+
+import javax.xml.namespace.QName;
+
+public class RegistryTest extends AbstractTestCase {
+    private AxisConfiguration reg = new AxisConfiguration();
+    AxisService service = new AxisService("Service1");
+
+    public RegistryTest(String testName) {
+        super(testName);
+    }
+
+
+    public void testHandlerMetadata() throws AxisFault {
+        HandlerDescription hmd = new HandlerDescription();
+        testParameteInClude(hmd);
+    }
+
+    public void testService() throws AxisFault {
+        reg.addService(service);
+        testParameteInClude(service);
+    }
+
+    public void testModule() throws AxisFault {
+        AxisModule module = new AxisModule(new QName("module1"));
+        module.setParent(reg);
+        testParameteInClude(module);
+        testFlowIncludeTest(module);
+    }
+
+    public void testOperation() throws AxisFault {
+        AxisOperation op = new InOutAxisOperation(new QName("op"));
+        op.setParent(service);
+        testParameteInClude(op);
+    }
+
+
+    public void testParameteInClude(ParameterInclude parmInclude) throws AxisFault {
+        String key = "value1";
+        Parameter p = new Parameter(key, "value2");
+        parmInclude.addParameter(p);
+        assertEquals(p, parmInclude.getParameter(key));
+    }
+
+    public void testFlowIncludeTest(FlowInclude flowInclude) {
+        Flow flow1 = new Flow();
+        Flow flow2 = new Flow();
+        Flow flow3 = new Flow();
+
+        flowInclude.setInFlow(flow1);
+        flowInclude.setFaultInFlow(flow2);
+        flowInclude.setOutFlow(flow3);
+        assertSame(flow1, flowInclude.getInFlow());
+        assertSame(flow2, flowInclude.getFaultInFlow());
+        assertSame(flow3, flowInclude.getOutFlow());
+    }
+
+
+    public void testHandlers() throws AxisFault {
+        Handler handler = new AbstractHandler() {
+            private static final long serialVersionUID = 196289132377245632L;
+
+			public InvocationResponse invoke(MessageContext msgContext)  {
+                return InvocationResponse.CONTINUE;        
+            }
+        };
+        handler.init(new HandlerDescription());
+        assertNull(handler.getName());
+        assertNull(handler.getParameter("hello"));
+        handler.cleanup();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingHandler.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingHandler.java
new file mode 100644
index 0000000..a7279da
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingHandler.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class SpeakingHandler extends AbstractHandler implements Handler {
+    private static final Log log = LogFactory.getLog(SpeakingHandler.class);
+    private String message;
+    private String name;
+
+    public SpeakingHandler() {
+        this.message = "Hi I amtesting ";
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws
+            AxisFault {
+        log.info("I am " + message + " Handler Running :)");
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public void revoke(MessageContext msgContext) {
+        log.info("I am " + message + " Handler Running :)");
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingHandler1.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingHandler1.java
new file mode 100644
index 0000000..2433541
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingHandler1.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class SpeakingHandler1 extends AbstractHandler implements Handler {
+    private static final Log log = LogFactory.getLog(SpeakingHandler1.class);
+    private String message;
+    private String name;
+
+    public SpeakingHandler1(String message) {
+        this.message = message;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        log.info("I am " + message + " Handler Running :)");
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public void revoke(MessageContext msgContext) {
+        log.info("I am " + message + " Handler Running :)");
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingProvider.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingProvider.java
new file mode 100644
index 0000000..9975d04
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/SpeakingProvider.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class SpeakingProvider implements MessageReceiver {
+	private static final Log log = LogFactory.getLog(SpeakingProvider.class);
+
+    public SpeakingProvider() {
+    }
+
+
+    public void receive(MessageContext msgContext) throws AxisFault {
+        log.info("I am Speaking Provider Running :)");
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/description/WSDLToAllServicesBuilderTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/WSDLToAllServicesBuilderTest.java
new file mode 100644
index 0000000..f99f525
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/description/WSDLToAllServicesBuilderTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2004,2005 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.axis2.description;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder;
+import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
+import org.apache.axis2.description.WSDL20ToAllAxisServicesBuilder;
+import org.apache.axis2.engine.ListenerManager;
+
+import junit.framework.TestCase;
+
+
+/**
+ * Tests the WSDL11ToAllServicesBuilder class.
+ *
+ */
+public class WSDLToAllServicesBuilderTest extends TestCase {
+    private static final String[] expectedService11 = {
+        "EchoServicePortOne",
+        "EchoServicePortTwo", 
+        "EchoServicePortThree"};
+    private static final String[] expectedService20 = {
+        "echoService1$echoServiceSOAPBinding_http", 
+        "echoService1$echoServiceEndpoint2SOAPBinding_http", 
+        "echoService2$echoServiceSOAPBinding_http"};
+    private ConfigurationContext configContext;
+    ListenerManager lm;
+
+    protected void setUp() throws Exception {
+        configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+        lm = new ListenerManager();
+        lm.init(configContext);
+        lm.start();
+    }
+
+    protected void tearDown() throws AxisFault {
+        lm.stop();
+    }
+
+    private void checkResults(List axisServices, String expectedService[]) {
+        
+        Iterator asi = axisServices.iterator();
+        int i = 0;
+        while (asi.hasNext() && i < expectedService.length) {
+            AxisService as = (AxisService) asi.next();
+            System.out.println("AxisService : " + as.getName());
+            assertEquals("Unexpected service name in AxisService List: expected "
+                    + expectedService[i] + " but found " + as.getName() + ".",
+                    as.getName(),
+                    expectedService[i]);
+            i++;
+        }
+    }
+    
+    public void testWSDL11toAllAxisServices() throws Exception {
+        File testResourceFile = new File("target/test-classes/wsdl/EchoServiceWsdl11.wsdl");
+        File outLocation = new File("target/test-resources");
+        outLocation.mkdirs();
+        if (testResourceFile.exists()) {
+            List axisServices = null;
+            try {
+                WSDL11ToAllAxisServicesBuilder builder = new WSDL11ToAllAxisServicesBuilder(
+                        new FileInputStream(testResourceFile));
+                axisServices = builder.populateAllServices();
+                System.out.println("WSDL file: " + testResourceFile.getName());
+            } catch (Exception e) {
+                System.out.println("Error in WSDL : " + testResourceFile.getName());
+                System.out.println("Exception: " + e.toString());
+                throw e;
+            }
+            checkResults(axisServices, expectedService11);
+
+        }
+    }
+
+    public void testWSDL20toAllAxisServices() throws Exception {
+        File testResourceFile = new File("target/test-classes/wsdl/EchoServiceWsdl20.wsdl");
+        File outLocation = new File("target/test-resources");
+        outLocation.mkdirs();
+        if (testResourceFile.exists()) {
+            List axisServices = null;
+            try {
+                WSDL20ToAllAxisServicesBuilder builder = new WSDL20ToAllAxisServicesBuilder(
+                        new FileInputStream(testResourceFile));
+                axisServices = builder.populateAllServices();
+                System.out.println("WSDL file: " + testResourceFile.getName());
+            } catch (Exception e) {
+                System.out.println("Error in WSDL : " + testResourceFile.getName());
+                System.out.println("Exception: " + e.toString());
+                throw e;
+            }
+            checkResults(axisServices, expectedService20);
+
+        }
+    }
+
+
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/AbstractEngineTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/AbstractEngineTest.java
new file mode 100644
index 0000000..dae7db5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/AbstractEngineTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
+
+public class AbstractEngineTest extends TestCase {
+    public AbstractEngineTest() {
+    }
+
+    public AbstractEngineTest(String arg0) {
+        super(arg0);
+    }
+
+    public class NullMessageReceiver extends AbstractInOutSyncMessageReceiver {
+
+        public void invokeBusinessLogic(MessageContext inMessage,
+                                        MessageContext outMessage)
+                throws AxisFault {
+
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/EnginePausingTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/EnginePausingTest.java
new file mode 100644
index 0000000..bb2a153
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/EnginePausingTest.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.*;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver;
+import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
+import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class EnginePausingTest extends TestCase {
+
+    private QName serviceName = new QName("NullService");
+    private QName operationName = new QName("DummyOp");
+    private ConfigurationContext configConetxt;
+
+    private TransportOutDescription transportOut;
+    private TransportInDescription transportIn;
+    private MessageContext mc;
+    private ArrayList executedHandlers;
+
+    public EnginePausingTest(String arg0) {
+        super(arg0);
+        executedHandlers = new ArrayList();
+        AxisConfiguration engineRegistry = new AxisConfiguration();
+        configConetxt = new ConfigurationContext(engineRegistry);
+        transportOut = new TransportOutDescription(new QName("null"));
+        transportOut.setSender(new CommonsHTTPTransportSender());
+        transportIn = new TransportInDescription(new QName("null"));
+
+    }
+
+    protected void setUp() throws Exception {
+
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        configConetxt.getAxisConfiguration().addService(service);
+        configConetxt.getAxisConfiguration().addMessageReceiver(
+                "http://www.w3.org/2004/08/wsdl/in-only", new RawXMLINOnlyMessageReceiver());
+        configConetxt.getAxisConfiguration().addMessageReceiver(
+                "http://www.w3.org/2004/08/wsdl/in-out", new RawXMLINOutMessageReceiver());
+
+        DispatchPhase dispatchPhase = new DispatchPhase();
+
+        dispatchPhase.setName("Dispatch");
+
+        AddressingBasedDispatcher abd = new AddressingBasedDispatcher();
+
+        abd.initDispatcher();
+
+        RequestURIBasedDispatcher rud = new RequestURIBasedDispatcher();
+
+        rud.initDispatcher();
+
+        SOAPActionBasedDispatcher sabd = new SOAPActionBasedDispatcher();
+
+        sabd.initDispatcher();
+
+        SOAPMessageBodyBasedDispatcher smbd = new SOAPMessageBodyBasedDispatcher();
+
+        smbd.initDispatcher();
+
+        InstanceDispatcher id = new InstanceDispatcher();
+
+        id.init(new HandlerDescription("InstanceDispatcher"));
+        dispatchPhase.addHandler(abd);
+        dispatchPhase.addHandler(rud);
+        dispatchPhase.addHandler(sabd);
+        dispatchPhase.addHandler(smbd);
+        dispatchPhase.addHandler(id);
+        configConetxt.getAxisConfiguration().getGlobalInFlow().add(dispatchPhase);
+        AxisOperation axisOp = new InOutAxisOperation(operationName);
+        axisOp.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+
+            }
+        });
+        service.addOperation(axisOp);
+        service.mapActionToOperation(operationName.getLocalPart(), axisOp);
+
+        mc = new MessageContext();
+        mc.setConfigurationContext(configConetxt);
+        mc.setTransportIn(transportIn);
+        mc.setTransportOut(transportOut);
+
+        mc.setTransportOut(transportOut);
+        mc.setServerSide(true);
+        mc.setProperty(MessageContext.TRANSPORT_OUT, System.out);
+        SOAPFactory omFac = OMAbstractFactory.getSOAP11Factory();
+        mc.setEnvelope(omFac.getDefaultEnvelope());
+
+        Phase phase1 = new Phase("1");
+        phase1.addHandler(new TempHandler(1));
+        phase1.addHandler(new TempHandler(2));
+        phase1.addHandler(new TempHandler(3));
+        phase1.addHandler(new TempHandler(4));
+        phase1.addHandler(new TempHandler(5));
+        phase1.addHandler(new TempHandler(6));
+        phase1.addHandler(new TempHandler(7));
+        phase1.addHandler(new TempHandler(8));
+        phase1.addHandler(new TempHandler(9));
+
+        Phase phase2 = new Phase("2");
+        phase2.addHandler(new TempHandler(10));
+        phase2.addHandler(new TempHandler(11));
+        phase2.addHandler(new TempHandler(12));
+        phase2.addHandler(new TempHandler(13));
+        phase2.addHandler(new TempHandler(14));
+        phase2.addHandler(new TempHandler(15, true));
+        phase2.addHandler(new TempHandler(16));
+        phase2.addHandler(new TempHandler(17));
+        phase2.addHandler(new TempHandler(18));
+
+        Phase phase3 = new Phase("3");
+        phase3.addHandler(new TempHandler(19));
+        phase3.addHandler(new TempHandler(20));
+        phase3.addHandler(new TempHandler(21));
+        phase3.addHandler(new TempHandler(22));
+        phase3.addHandler(new TempHandler(23));
+        phase3.addHandler(new TempHandler(24));
+        phase3.addHandler(new TempHandler(25));
+        phase3.addHandler(new TempHandler(26));
+        phase3.addHandler(new TempHandler(27));
+
+        //TODO
+        axisOp.getRemainingPhasesInFlow().add(phase1);
+        axisOp.getRemainingPhasesInFlow().add(phase2);
+        axisOp.getRemainingPhasesInFlow().add(phase3);
+
+        mc.setWSAAction(operationName.getLocalPart());
+        mc.setSoapAction(operationName.getLocalPart());
+        System.out.flush();
+
+    }
+
+    public void testReceive() throws Exception {
+        mc.setTo(
+                new EndpointReference("/axis2/services/NullService"));
+        mc.setWSAAction("DummyOp");
+        AxisEngine engine = new AxisEngine(configConetxt);
+        engine.receive(mc);
+        assertEquals(14, executedHandlers.size());
+        for (int i = 0; i < 14; i++) {
+            assertEquals(((Integer) executedHandlers.get(i)).intValue(),
+                    i + 1);
+        }
+        engine.resume(mc);
+
+        assertEquals(27, executedHandlers.size());
+        for (int i = 15; i < 27; i++) {
+            assertEquals(((Integer) executedHandlers.get(i)).intValue(),
+                    i + 1);
+        }
+
+    }
+
+    public class TempHandler extends AbstractHandler {
+        private Integer index;
+        private boolean pause = false;
+
+        public TempHandler(int index, boolean pause) {
+            this.index = new Integer(index);
+            this.pause = pause;
+            init(new HandlerDescription("handler" + index));
+        }
+
+        public TempHandler(int index) {
+            this.index = new Integer(index);
+            init(new HandlerDescription("handler" + index));
+        }
+
+        public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+            if (pause) {
+                msgContext.pause();
+                pause = false;
+                return InvocationResponse.SUSPEND;        
+            } else {
+                executedHandlers.add(index);
+                return InvocationResponse.CONTINUE;        
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/EngineWithoutPhaseResolvingTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/EngineWithoutPhaseResolvingTest.java
new file mode 100644
index 0000000..3b5764f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/EngineWithoutPhaseResolvingTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.InOutAxisOperation;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
+
+import javax.xml.namespace.QName;
+
+public class EngineWithoutPhaseResolvingTest extends AbstractEngineTest {
+    private MessageContext mc;
+    private AxisConfiguration engineRegistry;
+    private QName serviceName = new QName("axis2/services/NullService");
+    private QName operationName = new QName("NullOperation");
+    private AxisService service;
+    private ConfigurationContext configContext;
+    private AxisOperation axisOp;
+
+    public EngineWithoutPhaseResolvingTest() {
+    }
+
+    public EngineWithoutPhaseResolvingTest(String arg0) {
+        super(arg0);
+    }
+
+    protected void setUp() throws Exception {
+
+        engineRegistry = new AxisConfiguration();
+        configContext = new ConfigurationContext(engineRegistry);
+
+        TransportOutDescription transport = new TransportOutDescription(
+                new QName("null"));
+        transport.setSender(new CommonsHTTPTransportSender());
+
+        TransportInDescription transportIn = new TransportInDescription(
+                new QName("null"));
+        axisOp = new InOutAxisOperation(operationName);
+
+        service = new AxisService(serviceName.getLocalPart());
+        axisOp.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) throws AxisFault {
+                // TODO Auto-generated method stub
+
+            }
+        });
+        engineRegistry.addService(service);
+        service.addOperation(axisOp);
+
+        mc = new MessageContext();
+        mc.setConfigurationContext(configContext);
+        mc.setTransportIn(transportIn);
+        mc.setTransportOut(transport);
+
+        OperationContext opCOntext = new OperationContext(axisOp);
+
+        mc.setOperationContext(opCOntext);
+        mc.setTransportOut(transport);
+        mc.setProperty(MessageContext.TRANSPORT_OUT, System.out);
+        mc.setServerSide(true);
+        SOAPFactory omFac = OMAbstractFactory.getSOAP11Factory();
+        mc.setEnvelope(omFac.getDefaultEnvelope());
+
+
+        mc.setWSAAction(operationName.getLocalPart());
+        mc.setSoapAction(operationName.getLocalPart());
+        System.out.flush();
+    }
+
+    public void testServerReceive() throws Exception {
+        mc.setTo(
+                new EndpointReference("axis2/services/NullService"));
+        AxisEngine engine = new AxisEngine(configContext);
+        mc.setServerSide(true);
+        engine.receive(mc);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/MessageContextTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/MessageContextTest.java
new file mode 100644
index 0000000..8767c72
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/MessageContextTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPProcessingException;
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+
+public class MessageContextTest extends AbstractTestCase {
+    public MessageContextTest(String testName) {
+        super(testName);
+    }
+
+    public void testMesssageContext() throws AxisFault,
+            SOAPProcessingException {
+        AxisConfiguration er = new AxisConfiguration();
+        AxisService servicesDesc = new AxisService();
+        servicesDesc.setName("testService");
+        er.addService(servicesDesc);
+
+        ConfigurationContext engineContext = new ConfigurationContext(er);
+
+        MessageContext msgctx = new MessageContext();
+        msgctx.setConfigurationContext(engineContext);
+
+        SOAPFactory omFac = OMAbstractFactory.getSOAP11Factory();
+
+        msgctx.setEnvelope(omFac.getDefaultEnvelope());
+        assertNotNull(msgctx.getEnvelope());
+
+        msgctx.setFaultTo(null);
+        assertNull(msgctx.getFaultTo());
+
+        msgctx.setFrom(null);
+        assertNull(msgctx.getFrom());
+
+        msgctx.setReplyTo(null);
+        assertNull(msgctx.getReplyTo());
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ModuleConfigTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ModuleConfigTest.java
new file mode 100644
index 0000000..57b4b06
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ModuleConfigTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.ServiceBuilder;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.ModuleConfiguration;
+import org.apache.axis2.description.Parameter;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
+public class ModuleConfigTest extends TestCase {
+
+    AxisConfiguration ar;
+    String axis2xml = System.getProperty("basedir")+"/target/test-resources/deployment/moduleConfig/axis2.xml";
+    String repo = System.getProperty("basedir")+"/target/test-resources/deployment/moduleConfig";
+
+
+    public void testModuleConfigAtAxisConfig() {
+        try {
+            ar = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, axis2xml).getAxisConfiguration();
+            ModuleConfiguration moduleConfiguration =
+                    ar.getModuleConfig(new QName("testModule"));
+            assertNotNull(moduleConfiguration);
+            Parameter para = moduleConfiguration.getParameter("testModulePara");
+            assertNotNull(para);
+
+            moduleConfiguration =
+                    ar.getModuleConfig(new QName("testModule2"));
+            assertNotNull(moduleConfiguration);
+            para = moduleConfiguration.getParameter("testModulePara2");
+            assertNotNull(para);
+        } catch (AxisFault e) {
+            fail("This can not fail with this DeploymentException " + e);
+        }
+    }
+
+
+    public void testModuleConfigAtService() {
+        try {
+            ConfigurationContext configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, axis2xml);
+            ar = configurationContext.getAxisConfiguration();
+
+
+            AxisService service = new AxisService();
+            service.setName("testService");
+            ar.addService(service);
+            InputStream in = new FileInputStream(repo + "/service1.xml");
+            ServiceBuilder sbuilder = new ServiceBuilder(in, configurationContext, service);
+            sbuilder.populateService(sbuilder.buildOM());
+
+            ModuleConfiguration moduleConfiguration = service.getModuleConfig(new QName("Servie_module"));
+            assertNotNull(moduleConfiguration);
+            Parameter para = moduleConfiguration.getParameter("Servie_module_para");
+            assertNotNull(para);
+
+            AxisOperation op = service.getOperation(new QName("echoString"));
+            assertNotNull(op);
+
+            moduleConfiguration = op.getModuleConfig(new QName("Op_Module"));
+            assertNotNull(moduleConfiguration);
+            para = moduleConfiguration.getParameter("Op_Module_para");
+            assertNotNull(para);
+
+
+        } catch (DeploymentException e) {
+            fail("This can not fail with this DeploymentException " + e);
+        } catch (FileNotFoundException e) {
+            fail("This can not fail with this FileNotFoundException  " + e);
+        } catch (AxisFault axisFault) {
+            fail("This can not fail with this AxisFault  " + axisFault);
+        } catch (XMLStreamException e) {
+            fail("This can not fail with this AxisFault  " + e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ModuleEngageTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ModuleEngageTest.java
new file mode 100644
index 0000000..aead0fe
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ModuleEngageTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.phaseresolver.PhaseException;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
+public class ModuleEngageTest extends TestCase {
+    AxisConfiguration ac;
+
+    public void testModuleEngageMent() throws PhaseException,
+            DeploymentException,
+            AxisFault,
+            XMLStreamException {
+        String filename = System.getProperty("basedir")+"/target/test-resources/deployment";
+        ac = ConfigurationContextFactory.createConfigurationContextFromFileSystem(filename,null)
+                .getAxisConfiguration();
+        AxisModule module = ac.getModule(new QName("module1"));
+        assertNotNull(module);
+        ac.engageModule(new QName("module1"));
+        AxisService service = ac.getService("service2");
+        assertNotNull(service);
+        AxisOperation moduleOperation = service.getOperation(
+                new QName("creatSeq"));
+        assertNotNull(moduleOperation);
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ParameterAddTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ParameterAddTest.java
new file mode 100644
index 0000000..51b14b6
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ParameterAddTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.InOutAxisOperation;
+import org.apache.axis2.description.Parameter;
+
+import javax.xml.namespace.QName;
+/**
+ * To chcek locked is working corrcetly
+ */
+
+public class ParameterAddTest extends TestCase {
+
+    private AxisConfiguration reg = new AxisConfiguration();
+    public void testAddParameterServiceLockedAtAxisConfig(){
+        try {
+            Parameter para = new Parameter();
+            para.setValue(null);
+            para.setName("PARA_NAME");
+            para.setLocked(true);
+            reg.addParameter(para);
+
+            AxisService service = new AxisService("Service1");
+            reg.addService(service);
+            service.addParameter(para);
+            fail("This should fails with Parmter is locked can not overide");
+        } catch (AxisFault axisFault) {
+
+        }
+    }
+
+     public void testAddParameterModuleLockedAtAxisConfig(){
+        try {
+            Parameter para = new Parameter();
+            para.setValue(null);
+            para.setName("PARA_NAME");
+            para.setLocked(true);
+            reg.addParameter(para);
+            AxisModule module = new AxisModule(new QName("Service1"));
+            module.setParent(reg);
+            module.addParameter(para);
+            fail("This should fails with Parmter is locked can not overide");
+        } catch (AxisFault axisFault) {
+
+        }
+    }
+
+     public void testAddParameterOperationlockedByAxisConfig(){
+        try {
+            Parameter para = new Parameter();
+            para.setValue(null);
+            para.setName("PARA_NAME");
+            para.setLocked(true);
+            reg.addParameter(para);
+
+            AxisService service = new AxisService("Service1");
+            reg.addService(service);
+
+            AxisOperation opertion = new InOutAxisOperation();
+            opertion.setParent(service);
+            opertion.addParameter(para);
+            fail("This should fails with Parmter is locked can not overide");
+
+
+        } catch (AxisFault axisFault) {
+
+        }
+    }
+
+     public void testAddParameterOperationLockebyService(){
+        try {
+            Parameter para = new Parameter();
+            para.setValue(null);
+            para.setName("PARA_NAME");
+            para.setLocked(true);
+
+            AxisService service = new AxisService("Service1");
+            reg.addService(service);
+            service.addParameter(para);
+
+            AxisOperation opertion = new InOutAxisOperation();
+            opertion.setParent(service);
+            opertion.addParameter(para);
+            fail("This should fails with Parmter is locked can not overide");
+        } catch (AxisFault axisFault) {
+
+        }
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ParameterLocked.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ParameterLocked.java
new file mode 100644
index 0000000..6764c10
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/engine/ParameterLocked.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2004,2005 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.axis2.engine;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.ModuleBuilder;
+import org.apache.axis2.deployment.ServiceBuilder;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisService;
+
+import javax.xml.stream.XMLStreamException;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
+public class ParameterLocked extends TestCase {
+
+    AxisConfiguration ar;
+    String repo = "./test-resources/deployment/ParaLockedRepo";
+
+
+    protected void setUp() throws Exception {
+        ar = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, repo + "/axis2.xml").getAxisConfiguration();
+    }
+
+    public void testOveride_Non_locked_Para_Service() {
+        try {
+            assertNotNull(ar);
+            AxisService service = new AxisService();
+            ar.addService(service);
+            InputStream in = new FileInputStream(repo + "/service_overide_non_locked_para.xml");
+            ServiceBuilder sbuilder = new ServiceBuilder(in, null, service);
+            sbuilder.populateService(sbuilder.buildOM());
+            assertNotNull(sbuilder);
+
+        } catch (FileNotFoundException e) {
+            fail("This can not fail with this FileNotFoundException " + e);
+        } catch (DeploymentException e) {
+            fail("This can not fail with this DeploymentException " + e);
+        } catch (AxisFault axisFault) {
+            fail("This can not fail with this AxisFault " + axisFault);
+        } catch (XMLStreamException e) {
+            fail("This can not fail with this AxisFault " + e);
+        }
+    }
+
+    public void testOveride_locked_Para_Service() {
+        try {
+            assertNotNull(ar);
+            AxisService service = new AxisService();
+            ar.addService(service);
+            InputStream in = new FileInputStream(repo + "/service_overide_locked_para.xml");
+            ServiceBuilder sbuilder = new ServiceBuilder(in, null, service);
+            sbuilder.populateService(sbuilder.buildOM());
+            assertNotNull(sbuilder);
+            fail("Parmter is locked can not overide");
+        } catch (FileNotFoundException e) {
+            fail("This can not fail with this FileNotFoundException " + e);
+        } catch (DeploymentException e) {
+
+        } catch (AxisFault axisFault) {
+            fail("This can not fail with this AxisFault " + axisFault);
+        } catch (XMLStreamException e) {
+            fail("This can not fail with this AxisFault " + e);
+        }
+    }
+
+    public void testOveride_locked_Para_Operation() {
+        try {
+            assertNotNull(ar);
+            AxisService service = new AxisService();
+            ar.addService(service);
+            InputStream in = new FileInputStream(repo + "/op_overide_global_para.xml");
+            ServiceBuilder sbuilder = new ServiceBuilder(in, null, service);
+            sbuilder.populateService(sbuilder.buildOM());
+            assertNotNull(sbuilder);
+            fail("Parmter is locked can not overide");
+        } catch (FileNotFoundException e) {
+            fail("This can not fail with this FileNotFoundException " + e);
+        } catch (DeploymentException e) {
+
+        } catch (AxisFault axisFault) {
+            fail("This can not fail with this AxisFault " + axisFault);
+        } catch (XMLStreamException e) {
+            fail("This can not fail with this AxisFault " + e);
+        }
+    }
+
+    public void testOveride_Service_locked_Para_Operation() {
+        try {
+            assertNotNull(ar);
+            AxisService service = new AxisService();
+            ar.addService(service);
+            InputStream in = new FileInputStream(repo + "/Op_overide_Service_para.xml");
+            ServiceBuilder sbuilder = new ServiceBuilder(in, null, service);
+            sbuilder.populateService(sbuilder.buildOM());
+            fail("Parmter is locked can not overide");
+        } catch (FileNotFoundException e) {
+            fail("This can not fail with this FileNotFoundException " + e);
+        } catch (DeploymentException e) {
+
+        } catch (AxisFault axisFault) {
+            fail("This can not fail with this AxisFault " + axisFault);
+        } catch (XMLStreamException e) {
+            fail("This can not fail with this AxisFault " + e);
+        }
+    }
+
+    public void testOveride_Non_locked_Para_Module() {
+        try {
+            assertNotNull(ar);
+            AxisModule module = new AxisModule();
+            module.setParent(ar);
+            InputStream in = new FileInputStream(repo + "/module_overide_global_non_locked_para.xml");
+            ModuleBuilder mbuilder = new ModuleBuilder(in, module, ar);
+            mbuilder.populateModule();
+        } catch (FileNotFoundException e) {
+            fail("This can not fail with this FileNotFoundException " + e);
+        } catch (DeploymentException e) {
+
+        }
+    }
+
+    public void testOveride_locked_Para_Module() {
+        try {
+            assertNotNull(ar);
+            AxisModule module = new AxisModule();
+            module.setParent(ar);
+            InputStream in = new FileInputStream(repo + "/module_overide_locked_para.xml");
+            ModuleBuilder mbuilder = new ModuleBuilder(in, module, ar);
+            mbuilder.populateModule();
+            fail("Parmter is locked can not overide");
+        } catch (FileNotFoundException e) {
+            fail("This can not fail with this FileNotFoundException " + e);
+        } catch (DeploymentException e) {
+
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/handlers/Handler2.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/handlers/Handler2.java
new file mode 100644
index 0000000..c93967a
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/handlers/Handler2.java
@@ -0,0 +1,53 @@
+package org.apache.axis2.handlers;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.engine.Handler;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class Handler2 extends AbstractHandler implements Handler {

+    private static final Log log = LogFactory.getLog(Handler2.class);

+    private String message;

+    private String name;

+

+    public Handler2() {

+        this.message = "inside service 2";

+    }

+

+    public String getName() {

+        return name;

+    }

+

+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {

+        log.info("I am " + message + " Handler Running :)");

+        return InvocationResponse.CONTINUE;        

+    }

+

+    public void revoke(MessageContext msgContext) {

+        log.info("I am " + message + " Handler Running :)");

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+

+}

+

+

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/misc/MiscTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/misc/MiscTest.java
new file mode 100644
index 0000000..0b99d43
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/misc/MiscTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.axis2.misc;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.AxisFault;
+
+import java.lang.reflect.InvocationTargetException;
+
+public class MiscTest extends AbstractTestCase {
+
+    /**
+     * @param testName
+     */
+    public MiscTest(String testName) {
+        super(testName);
+    }
+
+    
+
+
+    public void testAxisFault() {
+        Exception e = new InvocationTargetException(new Exception());
+        assertNotSame(AxisFault.makeFault(e), e);
+
+        e = new AxisFault("");
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java
new file mode 100644
index 0000000..160f001
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java
@@ -0,0 +1,148 @@
+package org.apache.axis2.phaserule;

+

+import org.apache.axis2.AbstractTestCase;

+import org.apache.axis2.description.HandlerDescription;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.DispatchPhase;

+import org.apache.axis2.engine.Handler;

+import org.apache.axis2.engine.Phase;

+import org.apache.axis2.phaseresolver.PhaseHolder;

+

+import java.util.ArrayList;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class AddingHandlerToEachPhaseTest extends AbstractTestCase {

+

+    AddingHandlerToEachPhaseTest phaserul;

+    AxisConfiguration axisSytem;

+

+    public AddingHandlerToEachPhaseTest(String testName) {

+        super(testName);

+    }

+

+    public void testPhaseRules() throws Exception {

+        super.setUp();

+        //TODO fix me

+        phaserul = new AddingHandlerToEachPhaseTest("");

+        axisSytem = new AxisConfiguration();

+        ArrayList inPhase = axisSytem.getGlobalInFlow();

+        Phase transportIN = new Phase("TransportIn");

+        Phase preDispatch = new Phase("PreDispatch");

+        DispatchPhase dispatchPhase = new DispatchPhase();

+//

+        dispatchPhase.setName("Dispatch");

+        inPhase.add(transportIN);

+        inPhase.add(preDispatch);

+        inPhase.add(dispatchPhase);

+

+        HandlerDescription hm = new HandlerDescription();

+        hm.setClassName("org.apache.axis2.handlers.AbstractHandler");

+        Handler h1 = new PhaseRuleHandlers();

+        hm.setHandler(h1);

+        hm.getRules().setPhaseName("*");

+

+        PhaseHolder ph = new PhaseHolder(inPhase);

+        ph.addHandler(hm);

+        boolean found;

+        for (int i = 0; i < inPhase.size(); i++) {

+            found = false;

+            Phase phase = (Phase) inPhase.get(i);

+            ArrayList hnadles = phase.getHandlers();

+            for (int j = 0; j < hnadles.size(); j++) {

+                Handler handler = (Handler) hnadles.get(j);

+                if (h1.equals(handler)) {

+                    found = true;

+                }

+            }

+            if (!found) {

+                fail("Some thing has gone wrong hnadler does not exit in the phase :"

+                        + phase.getPhaseName());

+            }

+        }

+    }

+

+    public void testPhaseRulesWithPhaseFirst() throws Exception {

+        super.setUp();

+        //TODO fix me

+        phaserul = new AddingHandlerToEachPhaseTest("");

+        axisSytem = new AxisConfiguration();

+        ArrayList inPhase = axisSytem.getGlobalInFlow();

+        Phase transportIN = new Phase("TransportIn");

+        Phase preDispatch = new Phase("PreDispatch");

+        DispatchPhase dispatchPhase = new DispatchPhase();

+//

+        dispatchPhase.setName("Dispatch");

+        inPhase.add(transportIN);

+        inPhase.add(preDispatch);

+        inPhase.add(dispatchPhase);

+

+        HandlerDescription hm = new HandlerDescription();

+        hm.setClassName("org.apache.axis2.handlers.AbstractHandler");

+        Handler h1 = new PhaseRuleHandlers();

+        hm.setHandler(h1);

+        hm.getRules().setPhaseName("*");

+        hm.getRules().setPhaseFirst(true);

+

+        PhaseHolder ph = new PhaseHolder(inPhase);

+        ph.addHandler(hm);

+        for (int i = 0; i < inPhase.size(); i++) {

+            Phase phase = (Phase) inPhase.get(i);

+            ArrayList hnadles = phase.getHandlers();

+            Handler handler = (Handler) hnadles.get(0);

+            if (!h1.equals(handler)) {

+                fail("Some thing has gone wrong hnadler does not exit as phase " +

+                        "first handler the phase :"

+                        + phase.getPhaseName());

+            }

+        }

+    }

+

+    public void testPhaseRulesWithAfter() throws Exception {

+        super.setUp();

+        //TODO fix me

+        phaserul = new AddingHandlerToEachPhaseTest("");

+        axisSytem = new AxisConfiguration();

+        ArrayList inPhase = axisSytem.getGlobalInFlow();

+        Phase transportIN = new Phase("TransportIn");

+        Phase preDispatch = new Phase("PreDispatch");

+        DispatchPhase dispatchPhase = new DispatchPhase();

+//

+        dispatchPhase.setName("Dispatch");

+        inPhase.add(transportIN);

+        inPhase.add(preDispatch);

+        inPhase.add(dispatchPhase);

+

+        HandlerDescription hm = new HandlerDescription();

+        hm.setClassName("org.apache.axis2.handlers.AbstractHandler");

+        Handler h1 = new PhaseRuleHandlers();

+        hm.setHandler(h1);

+        hm.getRules().setPhaseName("*");

+        hm.getRules().setPhaseFirst(true);

+        hm.getRules().setAfter("nothing");

+

+        PhaseHolder ph = new PhaseHolder(inPhase);

+        ph.addHandler(hm);

+        for (int i = 0; i < inPhase.size(); i++) {

+            Phase phase = (Phase) inPhase.get(i);

+            ArrayList hnadles = phase.getHandlers();

+            Handler handler = (Handler) hnadles.get(0);

+            assertEquals("",handler.getHandlerDesc().getRules().getAfter());

+        }

+    }

+}

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeAfterTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeAfterTest.java
new file mode 100644
index 0000000..05156e1
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeAfterTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class BeforeAfterTest extends TestCase {
+
+    public void testBeforeAfter() throws Exception {
+        ArrayList phases = new ArrayList();
+        Phase p1 = new Phase("PhaseA");
+        phases.add(p1);
+        Phase p2 = new Phase("PhaseB");
+        phases.add(p2);
+
+        PhaseHolder ph = new PhaseHolder(phases);
+        HandlerDescription hm = new HandlerDescription();
+        hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h1 = new PhaseRuleHandlers();
+        h1.init(hm);
+        ((PhaseRuleHandlers) h1).setName(new QName("First"));
+        hm.setHandler(h1);
+        hm.setName("H1");
+        PhaseRule rule = new PhaseRule();
+        rule.setPhaseName("PhaseA");
+        hm.setRules(rule);
+        ph.addHandler(hm);
+
+        HandlerDescription hm1 = new HandlerDescription();
+        hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h2 = new PhaseRuleHandlers();
+        ((PhaseRuleHandlers) h2).setName(new QName("Forth"));
+        h2.init(hm1);
+        hm1.setHandler(h2);
+        hm1.setName("H2");
+        PhaseRule rule1 = new PhaseRule();
+        rule1.setPhaseName("PhaseA");
+        hm1.setRules(rule1);
+        ph.addHandler(hm1);
+
+
+        HandlerDescription hm3 = new HandlerDescription();
+        hm3.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h3 = new PhaseRuleHandlers();
+        ((PhaseRuleHandlers) h3).setName(new QName("Second"));
+        h3.init(hm3);
+        hm3.setHandler(h3);
+        hm3.setName("H3");
+        PhaseRule rule3 = new PhaseRule();
+        rule3.setPhaseName("PhaseA");
+        rule3.setAfter("H1");
+        hm3.setRules(rule3);
+        ph.addHandler(hm3);
+
+        HandlerDescription hm4 = new HandlerDescription();
+        hm4.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h4 = new PhaseRuleHandlers();
+        ((PhaseRuleHandlers) h4).setName(new QName("Third"));
+        h4.init(hm4);
+        hm4.setHandler(h4);
+        hm4.setName("H4");
+        PhaseRule rule4 = new PhaseRule();
+        rule4.setPhaseName("PhaseA");
+        rule4.setAfter("H1");
+        rule4.setBefore("H2");
+        hm4.setRules(rule4);
+        ph.addHandler(hm4);
+
+        ArrayList handlers = p1.getHandlers();
+        boolean foundH1 = false;
+        boolean foundH4 = false;
+
+        for (Iterator iterator = handlers.iterator(); iterator.hasNext();) {
+            Handler handler = (Handler) iterator.next();
+            if (h3 == handler) {
+                if (!foundH1)
+                    fail("H3 found before H1");
+            }
+            if (h1 == handler)
+                foundH1 = true;
+            if (h2 == handler) {
+                if (!foundH4) {
+                    fail("H2 found before H4");
+                }
+            }
+            if (h4 == handler) {
+                if (!foundH1) {
+                    fail("H4 found before H1");
+                }
+                foundH4 = true;
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeTest.java
new file mode 100644
index 0000000..7333468
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class BeforeTest extends TestCase {
+
+    public void testBefore() throws AxisFault {
+        ArrayList phases = new ArrayList();
+        Phase p1 = new Phase("PhaseA");
+        phases.add(p1);
+        Phase p2 = new Phase("PhaseB");
+        phases.add(p2);
+
+        MessageContext msg = new MessageContext();
+        msg.setConfigurationContext(new ConfigurationContext(new AxisConfiguration()));
+
+        PhaseHolder ph = new PhaseHolder(phases);
+        HandlerDescription hm = new HandlerDescription();
+        hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h1 = new PhaseRuleHandlers();
+        h1.init(hm);
+        ((PhaseRuleHandlers) h1).setName(new QName("First"));
+        hm.setHandler(h1);
+        hm.setName("H1");
+        PhaseRule rule = new PhaseRule();
+        rule.setPhaseName("PhaseA");
+        hm.setRules(rule);
+        ph.addHandler(hm);
+
+        HandlerDescription hm1 = new HandlerDescription();
+        hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h2 = new PhaseRuleHandlers();
+        ((PhaseRuleHandlers) h2).setName(new QName("Second"));
+        h2.init(hm1);
+        hm1.setHandler(h2);
+        hm1.setName("H2");
+        PhaseRule rule1 = new PhaseRule();
+        rule1.setPhaseName("PhaseA");
+        rule1.setBefore("H1");
+        hm1.setRules(rule1);
+        ph.addHandler(hm1);
+
+        ArrayList handlers = p1.getHandlers();
+        Handler handler = (Handler) handlers.get(0);
+        if (handler != h2) {
+            fail("Computed Hnadler order is wrong ");
+        }
+        handler = (Handler) handlers.get(1);
+        if (handler != h1) {
+            fail("Computed Hnadler order is wrong ");
+        }
+        p1.invoke(msg);
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeWithNoFirstHandlerTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeWithNoFirstHandlerTest.java
new file mode 100644
index 0000000..22c5144
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/BeforeWithNoFirstHandlerTest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class BeforeWithNoFirstHandlerTest extends TestCase {
+    public void testBeforewithNoFirst() throws AxisFault {
+        ArrayList phases = new ArrayList();
+        Phase p1 = new Phase("PhaseA");
+        phases.add(p1);
+        Phase p2 = new Phase("PhaseB");
+        phases.add(p2);
+
+        MessageContext msg = new MessageContext();
+        msg.setConfigurationContext(
+                new ConfigurationContext(new AxisConfiguration()));
+
+        PhaseHolder ph = new PhaseHolder(phases);
+
+
+        HandlerDescription hm1 = new HandlerDescription();
+        hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h2 = new PhaseRuleHandlers();
+        ((PhaseRuleHandlers) h2).setName(new QName("Second"));
+        h2.init(hm1);
+        hm1.setHandler(h2);
+        hm1.setName("H2");
+        PhaseRule rule1 = new PhaseRule();
+        rule1.setPhaseName("PhaseA");
+        rule1.setBefore("H1");
+        hm1.setRules(rule1);
+        ph.addHandler(hm1);
+
+        HandlerDescription hm = new HandlerDescription();
+        hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h1 = new PhaseRuleHandlers();
+        h1.init(hm);
+        ((PhaseRuleHandlers) h1).setName(new QName("First"));
+        hm.setHandler(h1);
+        hm.setName("H1");
+        PhaseRule rule = new PhaseRule();
+        rule.setPhaseName("PhaseA");
+        hm.setRules(rule);
+        ph.addHandler(hm);
+
+        ArrayList handlers = p1.getHandlers();
+        Handler handler = (Handler) handlers.get(0);
+        if (handler != h2) {
+            fail("Computed Handler order is wrong ");
+        }
+        handler = (Handler) handlers.get(1);
+        if (handler != h1) {
+            fail("Computed Handler order is wrong ");
+        }
+        p1.invoke(msg);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseFirstRulesTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseFirstRulesTest.java
new file mode 100644
index 0000000..a680758
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseFirstRulesTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class InvalidPhaseFirstRulesTest extends TestCase {
+
+    public void testInvalidPhaseFirst1() {
+        try {
+            ArrayList phases = new ArrayList();
+            Phase p1 = new Phase("PhaseA");
+            phases.add(p1);
+            Phase p2 = new Phase("PhaseB");
+            phases.add(p2);
+
+            MessageContext msg = new MessageContext();
+            msg.setConfigurationContext(
+                    new ConfigurationContext(new AxisConfiguration()));
+
+            PhaseHolder ph = new PhaseHolder(phases);
+            HandlerDescription hm = new HandlerDescription();
+            hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h1 = new PhaseRuleHandlers();
+            h1.init(hm);
+            ((PhaseRuleHandlers) h1).setName(new QName("PhaseFirstHnadler"));
+            hm.setHandler(h1);
+            hm.setName("H1");
+            PhaseRule rule = new PhaseRule();
+            rule.setPhaseName("PhaseA");
+            rule.setPhaseFirst(true);
+            rule.setBefore("H2");
+            hm.setRules(rule);
+            ph.addHandler(hm);
+
+            HandlerDescription hm1 = new HandlerDescription();
+            hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h2 = new PhaseRuleHandlers();
+            ((PhaseRuleHandlers) h2).setName(new QName("Second Handler"));
+            h2.init(hm1);
+            hm1.setHandler(h2);
+            hm1.setName("H2");
+            PhaseRule rule1 = new PhaseRule();
+            rule1.setPhaseName("PhaseA");
+            hm1.setRules(rule1);
+            ph.addHandler(hm1);
+            fail(
+                    "Handler with PhaseFirst can not have any before or after proprty error in ");
+        } catch (AxisFault axisFault) {
+            return;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseFirstTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseFirstTest.java
new file mode 100644
index 0000000..4e2d4c2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseFirstTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class InvalidPhaseFirstTest extends TestCase {
+
+    public void testInvalidPhaseFirst1() {
+        try {
+            ArrayList phases = new ArrayList();
+            Phase p1 = new Phase("PhaseA");
+            phases.add(p1);
+            Phase p2 = new Phase("PhaseB");
+            phases.add(p2);
+
+            MessageContext msg = new MessageContext();
+            msg.setConfigurationContext(
+                    new ConfigurationContext(new AxisConfiguration()));
+
+            PhaseHolder ph = new PhaseHolder(phases);
+            HandlerDescription hm = new HandlerDescription();
+            hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h1 = new PhaseRuleHandlers();
+            h1.init(hm);
+            ((PhaseRuleHandlers) h1).setName(new QName("PhaseFirstHnadler"));
+            hm.setHandler(h1);
+            hm.setName("H1");
+            PhaseRule rule = new PhaseRule();
+            rule.setPhaseName("PhaseA");
+            rule.setPhaseFirst(true);
+            hm.setRules(rule);
+            ph.addHandler(hm);
+
+            HandlerDescription hm1 = new HandlerDescription();
+            hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h2 = new PhaseRuleHandlers();
+            ((PhaseRuleHandlers) h2).setName(new QName("Second Handler"));
+            h2.init(hm1);
+            hm1.setHandler(h2);
+            hm1.setName("H2");
+            PhaseRule rule1 = new PhaseRule();
+            rule1.setPhaseName("PhaseA");
+            rule1.setPhaseFirst(true);
+            hm1.setRules(rule1);
+            ph.addHandler(hm1);
+            fail("This should be faild with PhaseFirst already has been set, cannot have two " +
+                    "phaseFirst Handler for same phase ");
+        } catch (AxisFault axisFault) {
+            return;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseLastRuleTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseLastRuleTest.java
new file mode 100644
index 0000000..49c84fb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseLastRuleTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class InvalidPhaseLastRuleTest extends TestCase {
+
+    public void testInvalidPhaseLast() {
+        try {
+            ArrayList phases = new ArrayList();
+            Phase p1 = new Phase("PhaseA");
+            phases.add(p1);
+            Phase p2 = new Phase("PhaseB");
+            phases.add(p2);
+
+            MessageContext msg = new MessageContext();
+            msg.setConfigurationContext(
+                    new ConfigurationContext(new AxisConfiguration()));
+
+            PhaseHolder ph = new PhaseHolder(phases);
+            HandlerDescription hm = new HandlerDescription();
+            hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h1 = new PhaseRuleHandlers();
+            h1.init(hm);
+            ((PhaseRuleHandlers) h1).setName(new QName("PhaseFirstHnadler"));
+            hm.setHandler(h1);
+            hm.setName("H1");
+            PhaseRule rule = new PhaseRule();
+            rule.setPhaseName("PhaseA");
+            rule.setPhaseLast(true);
+            rule.setBefore("H2");
+            hm.setRules(rule);
+            ph.addHandler(hm);
+
+            HandlerDescription hm1 = new HandlerDescription();
+            hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h2 = new PhaseRuleHandlers();
+            ((PhaseRuleHandlers) h2).setName(new QName("Second Handler"));
+            h2.init(hm1);
+            hm1.setHandler(h2);
+            hm1.setName("H2");
+            PhaseRule rule1 = new PhaseRule();
+            rule1.setPhaseName("PhaseA");
+            hm1.setRules(rule1);
+            ph.addHandler(hm1);
+            fail(
+                    "Handler with PhaseFirst can not have any before or after proprty error in ");
+        } catch (AxisFault axisFault) {
+            return;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseRuleTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseRuleTest.java
new file mode 100644
index 0000000..de84cb7
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseRuleTest.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ArrayList;
+
+public class InvalidPhaseRuleTest extends AbstractTestCase {
+
+    InvalidPhaseRuleTest phaserul;
+    AxisConfiguration axisSytem;
+    private static final Log log = LogFactory.getLog(InvalidPhaseRuleTest.class);
+
+    public InvalidPhaseRuleTest(String testName) {
+        super(testName);
+    }
+
+    public void testInvalidPhaseRule1() {
+        try {
+            super.setUp();
+            phaserul = new InvalidPhaseRuleTest("");
+            axisSytem = new AxisConfiguration();
+            ArrayList inPhase = axisSytem.getGlobalInFlow();
+
+            Handler han = null;
+            PhaseHolder ph = new PhaseHolder(inPhase);
+
+
+            HandlerDescription hm = new HandlerDescription();
+            hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
+            hm.setHandler(han);
+            hm.setName("H1");
+            PhaseRule rule = new PhaseRule();
+            rule.setPhaseName("global");
+            rule.setPhaseFirst(true);
+            hm.setRules(rule);
+            ph.addHandler(hm);
+
+            HandlerDescription hm1 = new HandlerDescription();
+            hm1.setClassName("org.apache.axis2.handlers.AbstractHandler");
+            hm1.setHandler(han);
+            hm1.setName("H2");
+            PhaseRule rule1 = new PhaseRule();
+            rule1.setPhaseName("global");
+            rule1.setAfter("H1");
+            hm1.setRules(rule1);
+            ph.addHandler(hm1);
+
+            HandlerDescription hm3 = new HandlerDescription();
+            hm3.setClassName("org.apache.axis2.handlers.AbstractHandler");
+            hm3.setHandler(han);
+            hm3.setName("H4");
+            PhaseRule rule3 = new PhaseRule();
+            rule3.setPhaseName("Logging");
+            hm3.setRules(rule3);
+            ph.addHandler(hm3);
+            fail("this must failed gracefully with PhaseException ");
+        } catch (Exception e) {
+            log.info(e.getMessage());
+        }
+    }
+
+
+    public void testInvalidPhaseRule2() {
+        try {
+            super.setUp();
+
+            phaserul = new InvalidPhaseRuleTest("");
+            axisSytem = new AxisConfiguration();
+            ArrayList inPhase = axisSytem.getGlobalInFlow();
+
+            inPhase.add("global");
+            axisSytem.setInFaultPhases(inPhase);
+            axisSytem.setOutFaultPhases(inPhase);
+            axisSytem.setGlobalOutPhase(inPhase);
+
+            Handler han = null;
+            PhaseHolder ph = new PhaseHolder(inPhase);
+
+
+            HandlerDescription hm = new HandlerDescription();
+            hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
+            hm.setHandler(han);
+            hm.setName("H1");
+            PhaseRule rule = new PhaseRule();
+            rule.setPhaseName("global");
+            rule.setPhaseFirst(true);
+            rule.setPhaseLast(true);
+            hm.setRules(rule);
+            ph.addHandler(hm);
+
+            HandlerDescription hm1 = new HandlerDescription();
+            hm1.setClassName("org.apache.axis2.handlers.AbstractHandler");
+            hm1.setHandler(han);
+            hm1.setName("H2");
+            PhaseRule rule1 = new PhaseRule();
+            rule1.setPhaseName("global");
+            rule1.setAfter("H1");
+            hm1.setRules(rule1);
+            ph.addHandler(hm1);
+
+            fail("this must failed gracefully with PhaseException ");
+        } catch (Exception e) {
+            log.info(e.getMessage());
+        }
+    }
+
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaselastTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaselastTest.java
new file mode 100644
index 0000000..7b8f8eb
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaselastTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class InvalidPhaselastTest extends TestCase {
+
+    public void testInvalidPhaseLast() {
+        try {
+            ArrayList phases = new ArrayList();
+            Phase p1 = new Phase("PhaseA");
+            phases.add(p1);
+            Phase p2 = new Phase("PhaseB");
+            phases.add(p2);
+
+            MessageContext msg = new MessageContext();
+            msg.setConfigurationContext(
+                    new ConfigurationContext(new AxisConfiguration()));
+
+            PhaseHolder ph = new PhaseHolder(phases);
+            HandlerDescription hm = new HandlerDescription();
+            hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h1 = new PhaseRuleHandlers();
+            h1.init(hm);
+            ((PhaseRuleHandlers) h1).setName(new QName("PhaseLast"));
+            hm.setHandler(h1);
+            hm.setName("H1");
+            PhaseRule rule = new PhaseRule();
+            rule.setPhaseName("PhaseA");
+            rule.setPhaseLast(true);
+            hm.setRules(rule);
+            ph.addHandler(hm);
+
+            HandlerDescription hm1 = new HandlerDescription();
+            hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h2 = new PhaseRuleHandlers();
+            ((PhaseRuleHandlers) h2).setName(new QName("Second Handler"));
+            h2.init(hm1);
+            hm1.setHandler(h2);
+            hm1.setName("H2");
+            PhaseRule rule1 = new PhaseRule();
+            rule1.setPhaseName("PhaseA");
+            rule1.setPhaseLast(true);
+            hm1.setRules(rule1);
+            ph.addHandler(hm1);
+            fail("This should be faild with Phaselast already has been set, cannot have two " +
+                    "phaseFirst Handler for same phase ");
+        } catch (AxisFault axisFault) {
+            return;
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseFirstTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseFirstTest.java
new file mode 100644
index 0000000..6b0491f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseFirstTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseException;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class PhaseFirstTest extends TestCase {
+
+    public void testPhaseFirst() throws AxisFault {
+        ArrayList phases = new ArrayList();
+        Phase p1 = new Phase("PhaseA");
+        phases.add(p1);
+        Phase p2 = new Phase("PhaseB");
+        phases.add(p2);
+        PhaseHolder ph = new PhaseHolder(phases);
+        HandlerDescription hm = new HandlerDescription();
+        hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h1 = new PhaseRuleHandlers();
+        h1.init(hm);
+        ((PhaseRuleHandlers) h1).setName(new QName("PhaseFirstHnadler"));
+        hm.setHandler(h1);
+        hm.setName("H1");
+        PhaseRule rule = new PhaseRule();
+        rule.setPhaseName("PhaseA");
+        rule.setPhaseFirst(true);
+        hm.setRules(rule);
+        ph.addHandler(hm);
+
+        HandlerDescription hm1 = new HandlerDescription();
+        hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h2 = new PhaseRuleHandlers();
+        ((PhaseRuleHandlers) h2).setName(new QName("Second Handler"));
+        h2.init(hm1);
+        hm1.setHandler(h2);
+        hm1.setName("H2");
+        PhaseRule rule1 = new PhaseRule();
+        rule1.setPhaseName("PhaseA");
+        rule1.setBefore("H1");
+        hm1.setRules(rule1);
+        try {
+            ph.addHandler(hm1);
+        } catch (PhaseException e) {
+            return;
+        }
+        fail("Succeeded in deploying after PhaseFirst handler!");
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseLastTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseLastTest.java
new file mode 100644
index 0000000..71ef0cd
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseLastTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseException;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class PhaseLastTest extends TestCase {
+
+    public void testPhaseLast() throws AxisFault {
+        ArrayList phases = new ArrayList();
+        Phase p1 = new Phase("PhaseA");
+        phases.add(p1);
+        Phase p2 = new Phase("PhaseB");
+        phases.add(p2);
+
+        PhaseHolder ph = new PhaseHolder(phases);
+        HandlerDescription hm = new HandlerDescription();
+        hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h1 = new PhaseRuleHandlers();
+        h1.init(hm);
+        ((PhaseRuleHandlers) h1).setName(new QName("PhaseLast"));
+        hm.setHandler(h1);
+        hm.setName("H1");
+        PhaseRule rule = new PhaseRule();
+        rule.setPhaseName("PhaseA");
+        rule.setPhaseLast(true);
+        hm.setRules(rule);
+        ph.addHandler(hm);
+
+        HandlerDescription hm1 = new HandlerDescription();
+        hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+        Handler h2 = new PhaseRuleHandlers();
+        ((PhaseRuleHandlers) h2).setName(new QName("Second Handler"));
+        h2.init(hm1);
+        hm1.setHandler(h2);
+        hm1.setName("H2");
+        PhaseRule rule1 = new PhaseRule();
+        rule1.setPhaseName("PhaseA");
+        rule1.setAfter("H1");
+        hm1.setRules(rule1);
+        try {
+            ph.addHandler(hm1);
+        } catch (PhaseException e) {
+            return;
+        }
+        fail("Succeeded in deploying after PhaseLast handler!");
+
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandlers.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandlers.java
new file mode 100644
index 0000000..b0856f2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandlers.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+public class PhaseRuleHandlers extends AbstractHandler implements Handler {
+
+    private static final long serialVersionUID = 2941436920684525811L;
+    
+	private static final Log log = LogFactory.getLog(PhaseRuleHandlers.class);
+    private QName name;
+  
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        log.info("I am " + name + " Handler Running :)");
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public void revoke(MessageContext msgContext) {
+        log.info("I am " + name + " Handler Running :)");
+    }
+
+    public void setName(QName name) {
+        this.name = name;
+    }
+
+    public void init(HandlerDescription handlerdesc) {
+        super.init(handlerdesc);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTest.java
new file mode 100644
index 0000000..7483dd5
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTest.java
@@ -0,0 +1,105 @@
+/*
+* Copyright 2004,2005 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.axis2.phaserule;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.DispatchPhase;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import java.util.ArrayList;
+
+public class PhaseRuleTest extends AbstractTestCase {
+
+    PhaseRuleTest phaserul;
+    AxisConfiguration axisSytem;
+
+    public PhaseRuleTest(String testName) {
+        super(testName);
+    }
+
+
+    public void testPhaseRules() throws Exception {
+        super.setUp();
+        //TODO fix me
+        phaserul = new PhaseRuleTest("");
+        axisSytem = new AxisConfiguration();
+        ArrayList inPhase = axisSytem.getGlobalInFlow();
+        Phase transportIN = new Phase("TransportIn");
+        Phase preDispatch = new Phase("PreDispatch");
+        DispatchPhase dispatchPhase = new DispatchPhase();
+//
+        dispatchPhase.setName("Dispatch");
+        inPhase.add(transportIN);
+        inPhase.add(preDispatch);
+        inPhase.add(dispatchPhase);
+
+        PhaseHolder ph = new PhaseHolder(inPhase);
+
+        HandlerDescription hm = new HandlerDescription();
+        hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h1 = new PhaseRuleHandlers();
+        h1.init(hm);
+        hm.setHandler(h1);
+        hm.setName("H1");
+        PhaseRule rule = new PhaseRule();
+        rule.setPhaseName("PreDispatch");
+        rule.setPhaseFirst(true);
+        hm.setRules(rule);
+        ph.addHandler(hm);
+
+        HandlerDescription hm1 = new HandlerDescription();
+        hm1.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h2 = new PhaseRuleHandlers();
+        h2.init(hm1);
+        hm1.setHandler(h2);
+        hm1.setName("H2");
+        PhaseRule rule1 = new PhaseRule();
+        rule1.setPhaseName("PreDispatch");
+        rule1.setAfter("H1");
+        hm1.setRules(rule1);
+        ph.addHandler(hm1);
+
+        HandlerDescription hm2 = new HandlerDescription();
+        hm2.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h3 = new PhaseRuleHandlers();
+        h3.init(hm2);
+        hm2.setHandler(h3);
+        hm2.setName("H3");
+        PhaseRule rule2 = new PhaseRule();
+        rule2.setPhaseName("PreDispatch");
+        rule2.setAfter("H1");
+        rule2.setBefore("H2");
+        hm2.setRules(rule2);
+        ph.addHandler(hm2);
+
+        HandlerDescription hm3 = new HandlerDescription();
+        hm3.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h4 = new PhaseRuleHandlers();
+        h4.init(hm3);
+        hm3.setHandler(h4);
+        hm3.setName("H4");
+        PhaseRule rule3 = new PhaseRule();
+        rule3.setPhaseName("Dispatch");
+        hm3.setRules(rule3);
+        ph.addHandler(hm3);
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java
new file mode 100644
index 0000000..4c8c5c3
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.DispatchPhase;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import java.util.ArrayList;
+
+public class PreDispatchPhaseRuleTest extends AbstractTestCase {
+
+    PreDispatchPhaseRuleTest phaserul;
+    AxisConfiguration axisSytem;
+
+    public PreDispatchPhaseRuleTest(String testName) {
+        super(testName);
+    }
+
+    public void testPhaseRule() throws Exception {
+        //TODO Fix me
+        phaserul = new PreDispatchPhaseRuleTest("");
+        axisSytem = new AxisConfiguration();
+        ArrayList inPhase = axisSytem.getGlobalInFlow();
+        Phase transportIN = new Phase("TransportIn");
+        Phase preDispatch = new Phase("PreDispatch");
+        DispatchPhase dispatchPhase = new DispatchPhase();
+//
+        dispatchPhase.setName("Dispatch");
+        inPhase.add(transportIN);
+        inPhase.add(preDispatch);
+        inPhase.add(dispatchPhase);
+        PhaseHolder ph = new PhaseHolder(inPhase);
+
+
+        HandlerDescription pre = new HandlerDescription();
+        pre.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h1 = new PhaseRuleHandlers();
+        h1.init(pre);
+        pre.setHandler(h1);
+        pre.setName("pre-H1");
+        PhaseRule pre_rule1 = new PhaseRule();
+        pre_rule1.setPhaseName("PreDispatch");
+        pre.setRules(pre_rule1);
+        ph.addHandler(pre);
+
+        HandlerDescription pre2 = new HandlerDescription();
+        pre2.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h2 = new PhaseRuleHandlers();
+        h2.init(pre2);
+        pre2.setHandler(h2);
+        pre2.setName("dispatch");
+        PhaseRule prerule2 = new PhaseRule();
+        prerule2.setPhaseName("Dispatch");
+        pre2.setRules(prerule2);
+        ph.addHandler(pre2);
+
+
+        HandlerDescription hm = new HandlerDescription();
+        hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h3 = new PhaseRuleHandlers();
+        h3.init(hm);
+        hm.setHandler(h3);
+        hm.setName("pre-H2");
+        PhaseRule rule = new PhaseRule();
+        rule.setPhaseName("PreDispatch");
+        rule.setPhaseFirst(true);
+        hm.setRules(rule);
+        ph.addHandler(hm);
+
+        HandlerDescription hm1 = new HandlerDescription();
+        hm1.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h4 = new PhaseRuleHandlers();
+        h4.init(hm1);
+        hm1.setHandler(h4);
+        hm1.setName("pre-H3");
+        PhaseRule rule1 = new PhaseRule();
+        rule1.setPhaseName("PreDispatch");
+        rule1.setAfter("pre-H2");
+        hm1.setRules(rule1);
+        ph.addHandler(hm1);
+
+        HandlerDescription hm2 = new HandlerDescription();
+        hm2.setClassName("org.apache.axis2.handlers.AbstractHandler");
+        Handler h5 = new PhaseRuleHandlers();
+        h5.init(hm2);
+        hm2.setHandler(h5);
+        hm2.setName("H3");
+        PhaseRule rule2 = new PhaseRule();
+        rule2.setPhaseName("PreDispatch");
+        rule2.setAfter("pre-H2");
+        rule2.setBefore("pre-H3");
+        hm2.setRules(rule2);
+        ph.addHandler(hm2);
+
+        /*ArrayList oh = ph.getOrderHandler();
+        for (int i = 0; i < oh.size(); i++) {
+            HandlerDescription metadata = (HandlerDescription) oh.get(i);
+            System.out.println("Name:" + metadata.getName().getLocalPart());
+        }*/
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/SingleHandlerPhaseTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/SingleHandlerPhaseTest.java
new file mode 100644
index 0000000..e9dfbe8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/phaserule/SingleHandlerPhaseTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2004,2005 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.axis2.phaserule;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+public class SingleHandlerPhaseTest extends TestCase {
+
+    public void testSingleHandler() {
+        try {
+            ArrayList phases = new ArrayList();
+            Phase p1 = new Phase("PhaseA");
+            phases.add(p1);
+            Phase p2 = new Phase("PhaseB");
+            phases.add(p2);
+
+            MessageContext msg = new MessageContext();
+            msg.setConfigurationContext(
+                    new ConfigurationContext(new AxisConfiguration()));
+
+            PhaseHolder ph = new PhaseHolder(phases);
+            HandlerDescription hm = new HandlerDescription();
+            hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h1 = new PhaseRuleHandlers();
+            h1.init(hm);
+            ((PhaseRuleHandlers) h1).setName(new QName("PhaseFirstHnadler"));
+            hm.setHandler(h1);
+            hm.setName("H1");
+            PhaseRule rule = new PhaseRule();
+            rule.setPhaseName("PhaseA");
+            rule.setPhaseFirst(true);
+            rule.setPhaseLast(true);
+            hm.setRules(rule);
+            ph.addHandler(hm);
+
+            HandlerDescription hm1 = new HandlerDescription();
+            hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandlers");
+            Handler h2 = new PhaseRuleHandlers();
+            ((PhaseRuleHandlers) h2).setName(new QName("Second Handler"));
+            h2.init(hm1);
+            hm1.setHandler(h2);
+            hm1.setName("H2");
+            PhaseRule rule1 = new PhaseRule();
+            rule1.setPhaseName("PhaseA");
+            rule1.setAfter("H1");
+            hm1.setRules(rule1);
+            ph.addHandler(hm1);
+            p1.invoke(msg);
+            fail("This should fail with : can only have one handler, since there is a " +
+                    "handler with both phaseFirst and PhaseLast true ");
+        } catch (AxisFault axisFault) {
+            return;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/registry/Handler3.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/registry/Handler3.java
new file mode 100644
index 0000000..b73745f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/registry/Handler3.java
@@ -0,0 +1,55 @@
+package org.apache.axis2.registry;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.engine.Handler;

+import org.apache.axis2.handlers.AbstractHandler;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+import javax.xml.namespace.QName;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class Handler3 extends AbstractHandler implements Handler {

+    private static final Log log = LogFactory.getLog(Handler3 .class);

+    private String message;

+    private String name;

+

+    public Handler3() {

+        this.message = "inside Module 1";

+    }

+

+    public String getName() {

+        return name;

+    }

+

+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {

+        log.info("I am " + message + " Handler Running :)");

+        return InvocationResponse.CONTINUE;        

+    }

+

+    public void revoke(MessageContext msgContext) {

+        log.info("I am " + message + " Handler Running :)");

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+

+}

+

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/sample/echo/EchoImpl.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/sample/echo/EchoImpl.java
new file mode 100644
index 0000000..1a005a4
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/sample/echo/EchoImpl.java
@@ -0,0 +1,27 @@
+/*
+* Copyright 2004,2005 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.axis2.sample.echo;

+

+public class EchoImpl {

+	public EchoImpl(){}

+	public java.lang.String echoString(java.lang.String in) {

+		return in;

+	}

+	public java.lang.String[] echoStringArray(java.lang.String[] in) {

+		return in;

+	}

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/sample/handlers/LoggingHandler.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/sample/handlers/LoggingHandler.java
new file mode 100644
index 0000000..b184f02
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/sample/handlers/LoggingHandler.java
@@ -0,0 +1,41 @@
+package org.apache.axis2.sample.handlers;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.handlers.AbstractHandler;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+/*

+* Copyright 2004,2005 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.

+*

+*/

+

+public class LoggingHandler extends AbstractHandler {

+

+    private static final long serialVersionUID = 7656851260678664746L;

+    

+	private static final Log log = LogFactory.getLog(LoggingHandler.class);

+

+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {

+        log.info("Incoming message From " + msgContext.getTo().getAddress());

+        return InvocationResponse.CONTINUE;        

+    }

+

+    public void revoke(MessageContext msgContext) {

+        log.info("Incoming message Revoked at the server " + msgContext.getTo().getAddress());

+    }

+

+}

+

diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/HTTPTransportHeaderParsingTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/HTTPTransportHeaderParsingTest.java
new file mode 100644
index 0000000..f7465d8
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/HTTPTransportHeaderParsingTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2004,2005 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.axis2.transport;
+
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.http.HTTPTransportReceiver;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Map;
+
+public class HTTPTransportHeaderParsingTest extends AbstractTestCase {
+
+    public HTTPTransportHeaderParsingTest(String testName) {
+        super(testName);
+    }
+
+    public void testServerHaeders() throws Exception {
+        String message =
+                "POST /axis2/services/echo HTTP/1.0\n"
+                + "Content-Type: text/xml; charset=utf-8\n"
+                +
+                "Accept: application/soap+xml, application/dime, multipart/related, text/*\n"
+                + "User-Agent: Axis/1.2RC1\n"
+                + "Host: 127.0.0.1:8081\n"
+                + "Cache-Control: no-cache\n"
+                + "Pragma: no-cache\n"
+                + "SOAPAction: \"\"\n"
+                + "Content-Length: 73507\n\nee rwewebtewbeww";
+
+        InputStream reader = new ByteArrayInputStream(message.getBytes());
+        HTTPTransportReceiver receiver = new HTTPTransportReceiver();
+
+        Map map = receiver.parseTheHeaders(reader, true);
+        assertEquals(map.get(HTTPConstants.PROTOCOL_VERSION), "HTTP/1.0");
+        assertEquals(map.get(HTTPConstants.REQUEST_URI),
+                "/axis2/services/echo");
+        assertEquals(map.get("Accept"),
+                "application/soap+xml, application/dime, multipart/related, text/*");
+        assertEquals(map.get("User-Agent"), "Axis/1.2RC1");
+        assertEquals(map.get("Host"), "127.0.0.1:8081");
+        assertEquals(map.get("Cache-Control"), "no-cache");
+        assertEquals(map.get("Pragma"), "no-cache");
+        assertEquals(map.get("Content-Length"), "73507");
+        assertEquals(reader.read(), 'e');
+    }
+
+    public void testClientHeaders() throws Exception {
+        String message =
+                "HTTP/1.1 200 OK\n"
+                + "Content-Type: text/xml;charset=utf-8\n"
+                + "Date: Sat, 12 Feb 2005 10:39:39 GMT\n"
+                + "Server: Apache-Coyote/1.1\n"
+                + "Connection: close\n\nA";
+        InputStream reader = new ByteArrayInputStream(message.getBytes());
+        HTTPTransportReceiver receiver = new HTTPTransportReceiver();
+
+        Map map = receiver.parseTheHeaders(reader, false);
+        assertEquals(map.get(HTTPConstants.PROTOCOL_VERSION), "HTTP/1.1");
+        assertEquals(map.get(HTTPConstants.RESPONSE_CODE), "200");
+        assertEquals(map.get(HTTPConstants.RESPONSE_WORD), "OK");
+        assertEquals(map.get("Content-Type"), "text/xml;charset=utf-8");
+        assertEquals(map.get("Date"), "Sat, 12 Feb 2005 10:39:39 GMT");
+        assertEquals(map.get("Server"), "Apache-Coyote/1.1");
+        assertEquals(map.get("Connection"), "close");
+        assertEquals(reader.read(), 'A');
+    }
+
+    public void testWrongClientHeaders() throws AxisFault {
+        try {
+            String message =
+                    "HTTP/1.1 200 OK\n"
+                    + "Content-Type: text/xml;charset=utf-8\n"
+                    + "Date: Sat, 12 Feb 2005 10:39:39 GMT\n"
+                    + "Server: Apache-Coyote/1.1\n"
+                    + "Connection: close";
+            InputStream reader = new ByteArrayInputStream(message.getBytes());
+            HTTPTransportReceiver receiver = new HTTPTransportReceiver();
+            BufferedInputStream br = new BufferedInputStream(reader);
+            receiver.parseTheHeaders(br, false);
+            fail("test must failed as \n\n is missing");
+        } catch (AxisFault e) {
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/sample.xml b/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/sample.xml
new file mode 100644
index 0000000..b133aee
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/sample.xml
@@ -0,0 +1,15 @@
+<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/08/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">
+            <wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo>234</accountNo>
+        </ns1:getBalance>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/tcp/TCPTransportTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/tcp/TCPTransportTest.java
new file mode 100644
index 0000000..9e3260f
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/transport/tcp/TCPTransportTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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.axis2.transport.tcp;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import java.io.InputStream;
+
+public class TCPTransportTest extends TestCase {
+    public TCPTransportTest(String arg0) {
+        super(arg0);
+    }
+
+    public void testTransportSender() throws AxisFault {
+    }
+    
+    public SOAPEnvelope createSOAPEnvelope(InputStream in) throws AxisFault {
+        try {
+            XMLStreamReader xmlreader =
+                    StAXUtils.createXMLStreamReader(in);
+            StAXBuilder builder = new StAXSOAPModelBuilder(xmlreader, null);
+            return (SOAPEnvelope) builder.getDocumentElement();
+        } catch (Exception e) {
+            throw new AxisFault(e.getMessage(), e);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/util/ThreadContextMigratorTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/util/ThreadContextMigratorTest.java
new file mode 100644
index 0000000..9e1b3f2
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/util/ThreadContextMigratorTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2006 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.axis2.util;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.engine.AxisConfiguration;
+
+import junit.framework.TestCase;
+
+public class ThreadContextMigratorTest extends TestCase
+{
+  private static String TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID
+                         = "Test-ThreadContextMigrator-List";
+  private MessageContext messageContext;
+  
+  public void setUp()
+  {
+    messageContext = new MessageContext();
+    messageContext.setConfigurationContext(new ConfigurationContext(new AxisConfiguration()));
+  }
+  
+  public void testEmptyMigratorStructure()
+  throws Exception
+  {
+    ThreadContextMigratorUtil.performMigrationToThread(TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, messageContext);
+    ThreadContextMigratorUtil.performMigrationToContext(TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, messageContext);
+    ThreadContextMigratorUtil.performThreadCleanup(TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, messageContext);
+    ThreadContextMigratorUtil.performContextCleanup(TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, messageContext);
+  }
+  
+  public void testMigration()
+  throws Exception
+  {
+    TestMigrator testMigrator1 = new TestMigrator();
+    TestMigrator testMigrator2 = new TestMigrator();
+    ThreadContextMigratorUtil.addThreadContextMigrator(messageContext.getConfigurationContext(), TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, testMigrator1);
+    ThreadContextMigratorUtil.addThreadContextMigrator(messageContext.getConfigurationContext(), TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, testMigrator2);
+    ThreadContextMigratorUtil.performMigrationToThread(TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, messageContext);
+    assertTrue(testMigrator1.migratedToThread);
+    assertTrue(testMigrator2.migratedToThread);
+    ThreadContextMigratorUtil.performMigrationToContext(TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, messageContext);
+    assertTrue(testMigrator1.migratedToContext);
+    assertTrue(testMigrator2.migratedToContext);
+    ThreadContextMigratorUtil.performThreadCleanup(TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, messageContext);
+    assertTrue(testMigrator1.cleanedThread);
+    assertTrue(testMigrator2.cleanedThread);
+    ThreadContextMigratorUtil.performContextCleanup(TEST_THREAD_CONTEXT_MIGRATOR_LIST_ID, messageContext);
+    assertTrue(testMigrator1.cleanedContext);
+    assertTrue(testMigrator2.cleanedContext);
+  }
+  
+  class TestMigrator implements ThreadContextMigrator
+  {
+    boolean migratedToThread;
+    boolean cleanedThread;
+    boolean migratedToContext;
+    boolean cleanedContext;
+    
+    public void migrateContextToThread(MessageContext messageContext) throws AxisFault
+    {
+      migratedToThread = true;
+    }
+
+    public void cleanupThread(MessageContext messageContext)
+    {
+      cleanedThread = true;
+    }
+
+    public void migrateThreadToContext(MessageContext messageContext) throws AxisFault
+    {
+      migratedToContext = true;
+    }
+
+    public void cleanupContext(MessageContext messageContext)
+    {
+      cleanedContext = true;
+    }
+    
+  }
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/util/UtilsParseRequestTest.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/util/UtilsParseRequestTest.java
new file mode 100644
index 0000000..9e0c45b
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/util/UtilsParseRequestTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2005 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.axis2.util;
+
+import org.apache.axis2.AbstractTestCase;
+
+/**
+ * Test that things break
+ */
+
+public class UtilsParseRequestTest extends AbstractTestCase {
+
+    public UtilsParseRequestTest(String testName) {
+        super(testName);
+    }
+
+    public void testfailure() throws Exception {
+        fail("here");
+    }
+    public void testService() throws Exception {
+        assertParsesTo("http://localhost:8081/services/System",
+                "System");
+    }
+
+    public void testServiceCalledServices() throws Exception {
+        assertParsesTo("http://localhost:8081/services/services",
+                "services");
+    }
+
+    public void testServiceWithQuery() throws Exception {
+        assertParsesTo("http://localhost:8081/services/System?system=ecb2f",
+                "System");
+    }
+
+    public void testServiceWithDoubleQuery() throws Exception {
+        assertParsesTo("http://localhost:8081/services/System?system=ecb2f?job=3",
+                "System");
+    }
+
+    public void testOperation() throws Exception {
+        assertParsesTo("http://localhost:8081/services/System/operation",
+                "System", "operation");
+    }
+
+    public void testOperationWithQuery() throws Exception {
+        assertParsesTo("http://localhost:8081/services/System/operation?system=ecb2f",
+                "System","operation");
+    }
+
+    public void testOperationServiceCalledServices() throws Exception {
+        assertParsesTo("http://localhost:8081/services/services/operation",
+                "services","operation");
+    }
+
+    private void assertParsesTo(String path, String service) {
+        assertParsesTo(path, service, null);
+    }
+
+    private void assertParsesTo(String path, String service, String operation) {
+        String[] strings = Utils.parseRequestURLForServiceAndOperation(path, "/axis2/services");
+        assertEquals(service,strings[0]);
+        assertEquals(operation, strings[1]);
+    }
+
+}
diff --git a/rampart_1_1/modules/kernel/test/org/apache/axis2/util/threadpool/TestThreadPool.java b/rampart_1_1/modules/kernel/test/org/apache/axis2/util/threadpool/TestThreadPool.java
new file mode 100644
index 0000000..45610b0
--- /dev/null
+++ b/rampart_1_1/modules/kernel/test/org/apache/axis2/util/threadpool/TestThreadPool.java
@@ -0,0 +1,64 @@
+/*
+* Copyright 2004,2005 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.axis2.util.threadpool;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.AxisFault;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestThreadPool extends AbstractTestCase {
+    /**
+     * @param testName
+     */
+    public TestThreadPool(String testName) {
+        super(testName);
+    }
+
+    class TestWorker implements Runnable {
+        private boolean workDone;
+
+        public void run() {
+            workDone = true;
+        }
+
+        public boolean isWorkDone() {
+            return workDone;
+        }
+    }
+
+
+    public void testPool() throws AxisFault {
+        ThreadPool tPool = new ThreadPool();
+        List workerList = new ArrayList();
+
+        for (int i = 0; i < 5; i++) {
+            TestWorker worker = new TestWorker();
+            workerList.add(worker);
+            tPool.execute(worker);
+        }
+
+        tPool.safeShutDown();
+
+        for (int i = 0; i < 5; i++) {
+            assertEquals(true, ((TestWorker) workerList.get(i)).isWorkDone());
+        }
+
+    }
+
+}
diff --git a/rampart_1_1/modules/parent/pom.xml b/rampart_1_1/modules/parent/pom.xml
new file mode 100644
index 0000000..85ee304
--- /dev/null
+++ b/rampart_1_1/modules/parent/pom.xml
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <parent>

+    <groupId>org.apache</groupId>

+    <artifactId>apache</artifactId>

+    <version>3</version>

+  </parent>

+  <modelVersion>4.0.0</modelVersion>

+  <groupId>org.apache.axis2</groupId>

+  <artifactId>axis2-parent</artifactId>

+  <version>1.1.0.1-SNAPSHOT</version>

+  <packaging>pom</packaging>

+  <name>Axis 2.0 Parent Project</name>

+  <inceptionYear>2004</inceptionYear>

+  <description>Axis2 is an effort to re-design and totally re-implement both Axis/Java and

+        (eventually) Axis/C++ on a new architecture. Evolving from the now standard "handler chain"

+        model which Axis1 pioneered, Axis2 is developing a more flexible pipeline architecture which

+        can yet be managed and packaged in a more organized manner. This new design acknowledges the

+        maturing of the Web services space in terms of new protocols such as WS-ReliableMessaging,

+        WS-Security and WS-Addressing that are built on top of the base SOAP system. At the time

+        Axis1 was designed, while it was fully expected that other protocols such as

+        WS-ReliableMessaging would be built on top of it, there was not a proper extension

+        architecture defined to enable clean composition of such layers. Thus, one of the key

+        motivations for Axis2 is to provide a clean and simple environment for like Apache Sandesha

+        and Apache WSS4J to layer on top of the base SOAP system. Another driving force for Axis2 as

+        well as the move away from RPC oriented Web services towards more document-oriented, message

+        style asynchronous service interactions. The Axis2 project is centered on a new

+        representation for SOAP messages called AXIOM (AXIs Object Model). AXIOM consists of two

+        parts: a complete XML Infoset representation and a SOAP Infoset representation on top of

+        that. The XML Infoset representation provides a JDOM-like simple API but is built on a

+        deferred model via a StAX-based (Streaming API for XML) pull parsing API. A key feature of

+        AXIOM is that it allows one to stop building the XML tree and just access the pull stream

+        directly; thus enabling both maximum flexibility and maximum performance. This approach

+        allows us to support multiple levels of abstraction for consuming and offering Web services:

+        using plain AXIOM, using generated code and statically data-bound data types and so on. At

+        the time of Axis1's design, RPC-style, synchronous, request-response interactions were the

+        order of the day for Web services. Today service interactions are much more message

+        -oriented and exploit many different message exchange patterns. The Axis2 engine

+        architecture is careful to not build in any assumptions of request-response patterns to

+        ensure that it can be used easily to support arbitrary message exchange

+        patterns.</description>

+  <url>http://ws.apache.org/axis2/</url>

+

+  <organization>

+    <name>Apache Software Foundation</name>

+    <url>http://www.apache.org/</url>

+  </organization>

+

+  <issueManagement>

+    <system>jira</system>

+    <url>http://issues.apache.org/jira/browse/AXIS2</url>

+  </issueManagement>

+

+  <scm>

+    <connection>scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/branches/java/1_1</connection>

+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/branches/java/1_1</developerConnection>

+    <url>http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1</url>

+  </scm>

+

+  <mailingLists>

+    <mailingList>

+      <name>Axis Developer List</name>

+      <subscribe>axis-dev-subscribe@ws.apache.org</subscribe>

+      <unsubscribe>axis-dev-unsubscribe@ws.apache.org</unsubscribe>

+      <post>axis-dev@ws.apache.org</post>

+      <archive>http://marc.theaimsgroup.com/?l=axis-dev</archive>

+    </mailingList>

+    <mailingList>

+      <name>Axis User List</name>

+      <subscribe>axis-user-subscribe@ws.apache.org</subscribe>

+      <unsubscribe>axis-user-unsubscribe@ws.apache.org</unsubscribe>

+      <post>axis-user@ws.apache.org</post>

+      <archive>http://marc.theaimsgroup.com/?l=axis-user</archive>

+    </mailingList>

+  </mailingLists>

+

+  <developers>

+    <developer>

+      <name>Saminda Abeyruwan</name>

+      <id>saminda</id>

+      <email>saminda AT wso2.com</email>

+      <organization>WSO2</organization>

+    </developer>

+    <developer>

+      <name>Afkham Azeez</name>

+      <id>azeez</id>

+      <email>azeez AT wso2.com</email>

+      <organization>WSO2</organization>

+    </developer>

+    <developer>

+      <name>Eran Chinthaka</name>

+      <id>chinthaka</id>

+      <email>chinthaka AT wso2.com</email>

+      <organization>WSO2</organization>

+      <url>http://www.apache.org/~chinthaka</url>

+    </developer>

+    <developer>

+      <name>Glen Daniels</name>

+      <id>gdaniels</id>

+      <email>gdaniels AT apache.org</email>

+      <organization>Sonic Software</organization>

+    </developer>

+    <developer>

+      <name>Jaliya Ekanayake</name>

+      <id>jaliya</id>

+      <email>jaliya AT opensource.lk</email>

+      <organization>Indiana University, USA</organization>

+      <url>http://www.apache.org/~jaliya</url>

+    </developer>

+    <developer>

+      <name>Ruchith Fernando</name>

+      <id>ruchithf</id>

+      <email>ruchith AT wso2.com</email>

+      <organization>WSO2</organization>

+    </developer>

+    <developer>

+      <name>Thilina Gunarathne</name>

+      <id>thilina</id>

+      <email>thilina AT opensource.lk</email>

+      <organization>Lanka Software Foundation</organization>

+    </developer>

+    <developer>

+      <name>Chathura Herath</name>

+      <id>chathura</id>

+      <email>chathura AT opensource.lk</email>

+      <organization>Indiana University, USA</organization>

+      <url>www.apache.org/~chathura</url>

+    </developer>

+    <developer>

+      <name>Deepal Jayasinghe</name>

+      <id>deepal</id>

+      <email>deepal AT wso2.com</email>

+      <organization>WSO2</organization>

+      <url>http://www.apache.org/~deepal</url>

+    </developer>

+    <developer>

+      <name>Robert Lazarski</name>

+      <id>robertlazarski</id>

+      <email>robertlazarski AT gmail.com</email>

+      <organization>Brazil Outsource</organization>

+    </developer>

+    <developer>

+      <name>Steve Loughran</name>

+      <id>stevel</id>

+      <email>stevel AT apache.org</email>

+      <organization>HP labs</organization>

+    </developer>

+    <developer>

+      <name>Chatra Nakkawita</name>

+      <id>chatra</id>

+      <email>chatra AT WSO2.com</email>

+      <organization>WSO2</organization>

+    </developer>

+    <developer>

+      <name>Srinath Perera</name>

+      <id>hemapani</id>

+      <email>hemapani AT apache.org</email>

+      <organization>Indiana University, USA</organization>

+      <url>http://www.apache.org/~hemapani</url>

+    </developer>

+    <developer>

+      <name>Ajith Ranabahu</name>

+      <id>ajith</id>

+      <email>ajith AT wso2.com</email>

+      <organization>WSO2</organization>

+      <url>http://www.apache.org/~ajith</url>

+    </developer>

+    <developer>

+      <name>Venkat Reddy</name>

+      <id>venkat</id>

+      <email>vreddyp AT gmail.com</email>

+      <organization>Computer Associates</organization>

+    </developer>

+    <developer>

+      <name>Sanka Samaranayake</name>

+      <id>sanka</id>

+      <email>sanka AT wso2.com</email>

+      <organization>WSO2</organization>

+    </developer>

+    <developer>

+      <name>Ashutosh Shahi</name>

+      <id>ashu</id>

+      <email>Ashutosh.Shahi AT ca.com</email>

+      <organization>Computer Associates</organization>

+    </developer>

+    <developer>

+      <name>Aleksander Slominski</name>

+      <id>alek</id>

+      <email>aslom AT cs.indiana.edu</email>

+      <organization>Indiana University Extreme! Computing Lab</organization>

+    </developer>

+    <developer>

+      <name>Dennis Sosnoski</name>

+      <id>dsosnoski</id>

+      <email>dms AT sosnoski.com</email>

+      <organization>Sosnoski Software</organization>

+    </developer>

+    <developer>

+      <name>Davanum Srinivas</name>

+      <id>dims</id>

+      <email>dims AT wso2.com</email>

+      <organization>WSO2</organization>

+    </developer>

+    <developer>

+      <name>Jayachandra Sekhara Rao Sunkara</name>

+      <id>jaya</id>

+      <email>jayachandra AT gmail.com</email>

+      <organization>Computer Associates</organization>

+    </developer>

+    <developer>

+      <name>Chamil Thanthrimudalige</name>

+      <id>chamil</id>

+      <email>chamil AT wso2.com</email>

+      <organization>WSO2</organization>

+    </developer>

+    <developer>

+      <name>Dasarath Weerathunga</name>

+      <id>dasarath</id>

+      <email>dasarath AT opensource.lk</email>

+      <organization>Purdue University, USA</organization>

+    </developer>

+    <developer>

+      <name>Sanjiva Weerawarana</name>

+      <id>sanjiva</id>

+      <email>sanjiva AT wso2.com</email>

+      <organization>WSO2</organization>

+    </developer>

+  </developers>

+

+  <contributors>

+    <contributor>

+      <name>Gayan Asanka</name>

+      <email>gayan AT opensource.lk</email>

+      <organization>Lanka Software Foundation</organization>

+    </contributor>

+    <contributor>

+      <name>Dharshana Dias</name>

+      <email/>

+      <organization>Lanka Software Foundation / University of Moratuwa</organization>

+    </contributor>

+    <contributor>

+      <name>Nadana Gunarathna</name>

+      <email>nadana AT opensource.lk</email>

+      <organization>Lanka Software Foundation</organization>

+    </contributor>

+    <contributor>

+      <name>Thilini Gunawardhana</name>

+      <email>thilini AT WSO2.com</email>

+      <organization>WSO2</organization>

+    </contributor>

+    <contributor>

+      <name>Anushka Kumara</name>

+      <email>anushkakumar AT gmail.com</email>

+      <organization>Lanka Software Foundation / University of Moratuwa</organization>

+    </contributor>

+    <contributor>

+      <name>Farhaan Mohideen</name>

+      <email>fmohideen AT valista.com</email>

+      <organization>Lanka Software Foundation</organization>

+    </contributor>

+    <contributor>

+      <name>Chinthaka Thilakarathne</name>

+      <email/>

+      <organization>Lanka Software Foundation / University of Moratuwa</organization>

+    </contributor>

+  </contributors>

+

+  <dependencyManagement>

+    <dependencies>

+      <dependency>

+        <groupId>${project.groupId}</groupId>

+        <artifactId>axis2-java2wsdl</artifactId>

+        <version>${project.version}</version>

+      </dependency>

+      <dependency>

+        <groupId>${project.groupId}</groupId>

+        <artifactId>axis2-kernel</artifactId>

+        <version>${project.version}</version>

+      </dependency>

+      <dependency>

+        <groupId>${project.groupId}</groupId>

+        <artifactId>axis2-adb</artifactId>

+        <version>${project.version}</version>

+      </dependency>

+      <dependency>

+        <groupId>${project.groupId}</groupId>

+        <artifactId>axis2-codegen</artifactId>

+        <version>${project.version}</version>

+      </dependency>

+	  <dependency>

+        <groupId>org.apache.ws.commons.axiom</groupId>

+        <artifactId>axiom-api</artifactId>

+        <version>1.2</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.ws.commons.axiom</groupId>

+        <artifactId>axiom-impl</artifactId>

+        <version>1.2</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.ws.commons.axiom</groupId>

+        <artifactId>axiom-dom</artifactId>

+        <version>1.2</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.ws.commons.schema</groupId>

+        <artifactId>XmlSchema</artifactId>

+        <version>1.2</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.ws.commons.neethi</groupId>

+        <artifactId>neethi</artifactId>

+        <version>2.0</version>

+      </dependency>

+      <dependency>

+        <groupId>ant</groupId>

+        <artifactId>ant</artifactId>

+        <version>1.6.5</version>

+      </dependency>

+      <dependency>

+        <groupId>commons-logging</groupId>

+        <artifactId>commons-logging</artifactId>

+        <version>1.1</version>

+      </dependency>

+      <dependency>

+        <groupId>woodstox</groupId>

+        <artifactId>wstx-asl</artifactId>

+        <version>3.0.1</version>

+      </dependency>

+      <dependency>

+        <groupId>stax</groupId>

+        <artifactId>stax-api</artifactId>

+        <version>1.0.1</version>

+      </dependency>

+      <dependency>

+        <groupId>javax.mail</groupId>

+        <artifactId>mail</artifactId>

+        <version>1.4</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.geronimo.specs</groupId>

+        <artifactId>geronimo-jms_1.1_spec</artifactId>

+        <version>1.0.1</version>

+      </dependency>

+      <dependency>

+        <groupId>jaxen</groupId>

+        <artifactId>jaxen</artifactId>

+        <version>1.1-beta-10</version>

+      </dependency>

+      <dependency>

+        <groupId>annogen</groupId>

+        <artifactId>annogen</artifactId>

+        <version>0.1.0</version>

+      </dependency>

+      <dependency>

+        <groupId>javax.servlet</groupId>

+        <artifactId>servlet-api</artifactId>

+        <version>2.3</version>

+        <scope>provided</scope>

+      </dependency>

+      <dependency>

+        <groupId>commons-httpclient</groupId>

+        <artifactId>commons-httpclient</artifactId>

+        <version>3.0.1</version>

+      </dependency>

+      <dependency>

+        <groupId>commons-fileupload</groupId>

+        <artifactId>commons-fileupload</artifactId>

+        <version>1.1.1</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.httpcomponents</groupId>

+        <artifactId>jakarta-httpcore</artifactId>

+        <version>4.0-alpha2</version>

+      </dependency>

+      <dependency>

+        <groupId>wsdl4j</groupId>

+        <artifactId>wsdl4j</artifactId>

+        <version>1.6.1</version>

+      </dependency>

+      <dependency>

+        <groupId>backport-util-concurrent</groupId>

+        <artifactId>backport-util-concurrent</artifactId>

+        <version>2.2</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.woden</groupId>

+        <artifactId>woden</artifactId>

+        <version>1.0.0M6</version>
+        <exclusions>
+          <!-- Woden 1.0.0M6 uses Axiom 1.1.1 -->
+          <exclusion>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+          <!-- Woden 1.0.0M6 uses XmlSchema 1.1 -->
+          <exclusion>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+        </exclusions>

+      </dependency>

+      <dependency>

+        <groupId>xmlunit</groupId>

+        <artifactId>xmlunit</artifactId>

+        <version>1.0</version>

+        <scope>test</scope>

+      </dependency>

+      <dependency>

+        <groupId>xmlbeans</groupId>

+        <artifactId>xbean</artifactId>

+        <version>2.1.0</version>

+        <scope>provided</scope>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.ws.jaxme</groupId>

+        <artifactId>jaxme2</artifactId>

+        <version>0.5.2</version>

+        <scope>provided</scope>

+      </dependency>

+    </dependencies>

+  </dependencyManagement>

+

+  <build>

+    <plugins>

+      <plugin>

+        <artifactId>maven-compiler-plugin</artifactId>

+        <inherited>true</inherited>

+        <configuration>

+          <source>1.4</source>

+          <target>1.4</target>

+        </configuration>

+      </plugin>
+      <plugin>

+        <artifactId>maven-surefire-plugin</artifactId>

+        <version>2.1.3</version>

+        <inherited>true</inherited>

+        <configuration>

+          <skip>true</skip>

+        </configuration>

+      </plugin>

+    </plugins>

+  </build>
+  <profiles>
+    <profile>
+      <id>release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-source-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>create-source-jar</id>
+                <goals>
+                  <goal>jar</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <artifactId>maven-javadoc-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>create-javadoc-jar</id>
+                <goals>
+                  <goal>jar</goal>
+                </goals>
+                <configuration>
+                  <source>${maven.compile.source}</source>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>

+</project>

diff --git a/rampart_1_1/modules/rahas/maven.xml b/rampart_1_1/modules/rahas/maven.xml
new file mode 100644
index 0000000..23ad7b9
--- /dev/null
+++ b/rampart_1_1/modules/rahas/maven.xml
@@ -0,0 +1,71 @@
+<?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:u="jelly:util"

+    xmlns:maven="jelly:maven"

+    xmlns:deploy="deploy"

+    xmlns:ant="jelly:ant">

+    

+    <postGoal name="java:compile">

+    

+        <!-- Create the sts.aar : STATRT -->

+

+        <mkdir dir="target/sts/rahas-${rahas_version}/"/>

+        <mkdir dir="target/sts/rahas-${rahas_version}/lib"/>

+        <!-- Copy classes -->

+        <copy todir="target/sts/rahas-${rahas_version}/">

+            <fileset dir="target/classes">

+                <include name="**/*.class"/>

+            </fileset>

+        </copy>

+        <!-- copy jars -->

+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('on')}">

+            <copy file="${dependencies.dir}/xmlsec-${xmlsec.version}.jar" todir="target/sts/rahas-${rahas_version}/lib"/>

+            <copy file="${dependencies.dir}/bcprov-${bcprov.version}.jar" todir="target/sts/rahas-${rahas_version}/lib"/>

+            <copy file="${dependencies.dir}/opensaml-${opensaml.version}.jar" todir="target/sts/rahas-${rahas_version}/lib"/>

+            <copy file="${dependencies.dir}/wss4j-${wss4j.version}.jar" todir="target/sts/rahas-${rahas_version}/lib"/>        

+        </j:if>

+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('off')}">

+            <copy file="${maven.repo.local}/xml-security/jars/xmlsec-${xmlsec.version}.jar" todir="target/sts/rahas-${rahas_version}/lib"/>

+            <copy file="${maven.repo.local}/bouncycastle/jars/bcprov-${bcprov.version}.jar" todir="target/sts/rahas-${rahas_version}/lib"/>

+            <copy file="${maven.repo.local}/opensaml/jars/opensaml-${opensaml.version}.jar" todir="target/sts/rahas-${rahas_version}/lib"/>

+            <copy file="${maven.repo.local}/wss4j/jars/wss4j-${wss4j.version}.jar" todir="target/sts/rahas-${rahas_version}/lib"/>        

+        </j:if>

+        

+		<copy file="src/META-INF/module.xml" toFile="target/sts/rahas-${rahas_version}/META-INF/module.xml"/>

+		

+		<jar jarfile="target/rahas-${rahas_module_version}.mar" basedir="target/sts/rahas-${rahas_version}/">

+            <include name="**/*"/>

+        </jar>

+		

+		<delete file="target/sts/META-INF/module.xml"/>

+        <delete includeEmptyDirs="true">

+            <fileset dir="target/sts/rahas-${rahas_version}/org/apache/rahas/client"/>

+        </delete>

+    	

+        <copy file="sts-aar-resources/services.xml" toFile="target/sts/rahas-${rahas_version}/META-INF/services.xml"/>

+        <copy file="sts-aar-resources/sct-issuer-config.xml" toFile="target/sts/rahas-${rahas_version}/META-INF/sct-issuer-config.xml"/>

+        <copy file="sts-aar-resources/saml-issuer-config.xml" toFile="target/sts/rahas-${rahas_version}/META-INF/saml-issuer-config.xml"/>

+        <copy file="sts-aar-resources/token-canceler-config.xml" toFile="target/sts/rahas-${rahas_version}/META-INF/token-canceler-config.xml"/>

+        <copy file="sts-aar-resources/token-dispatcher-configuration.xml" toFile="target/sts/rahas-${rahas_version}/META-INF/token-dispatcher-configuration.xml"/>

+        <copy file="sts-aar-resources/rahas-sts.jks" toFile="target/sts/META-INF/rahas-sts.jks"/>

+        

+        <zip zipfile="target/rahas-${rahas_version}.zip" basedir="target/sts/">

+            <include name="**/*"/>

+        </zip>

+

+        <delete includeEmptyDirs="true">

+            <fileset dir="target/sts"/> 

+        </delete>

+    	

+        <!-- Create the sts.aar : END -->

+    </postGoal>

+	

+	<postGoal name="test:compile">

+	    <copy file="target/rahas-${rahas_module_version}.mar" tofile="target/modules/rahas-${rahas_module_version}.mar"/>

+        <copy file="target/rahas-${rahas_module_version}.mar" tofile="${maven.repo.local}/org.apache.axis2/mars/rahas-${rahas_module_version}.mar"/>

+	</postGoal>

+</project>

diff --git a/rampart_1_1/modules/rahas/project.xml b/rampart_1_1/modules/rahas/project.xml
new file mode 100644
index 0000000..6773154
--- /dev/null
+++ b/rampart_1_1/modules/rahas/project.xml
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - Rahas</name>
+    <id>axis2-rahas</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>Axis2 : WS-Trust implementation</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+		<dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-dom</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-secpolicy</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons.httpclient.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons.codec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>wss4j</groupId>
+            <artifactId>wss4j</artifactId>
+            <version>${wss4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-security</groupId>
+            <artifactId>xmlsec</artifactId>
+            <version>${xmlsec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>bouncycastle</groupId>
+            <artifactId>bcprov</artifactId>
+            <version>${bcprov.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>opensaml</groupId>
+            <artifactId>opensaml</artifactId>
+            <version>${opensaml.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+            <version>${xml_apis.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+            <version>${xerces.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxen</groupId>
+            <artifactId>jaxen</artifactId>
+            <version>${jaxen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>backport-util-concurrent</groupId>
+            <artifactId>backport-util-concurrent</artifactId>
+            <version>${backport_util_concurrent.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+		<dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+         <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${XmlSchema.version}</version>
+        </dependency>
+	<!-- For WS-Policy support -->
+	<dependency>
+		<groupId>org.apache.neethi</groupId>
+		<artifactId>neethi</artifactId>
+		<version>${neethi.version}</version>
+		<properties>
+			<module>true</module>
+		</properties>
+	</dependency>
+	<dependency>
+            <groupId>incubator-woden</groupId>
+            <artifactId>woden</artifactId>
+            <version>${woden.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+    </dependencies>
+    <!-- build information for the project -->
+    <build>
+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
+        <sourceDirectory>src</sourceDirectory>
+        <unitTestSourceDirectory>test</unitTestSourceDirectory>
+
+        <unitTest>
+            <includes>
+                <include>**/*Test.java</include>
+            </includes>
+        </unitTest>
+	</build>
+    <reports/>
+</project>
diff --git a/rampart_1_1/modules/rahas/src/META-INF/module.xml b/rampart_1_1/modules/rahas/src/META-INF/module.xml
new file mode 100644
index 0000000..d25f00f
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/META-INF/module.xml
@@ -0,0 +1,41 @@
+<module name="rahas">
+    <Description>This module is used to STS enable a service where it adds
+        the RequestSecurityToken operation to a service that the module is engaged to</Description>
+
+    <supported-policy-namespaces namespaces="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"/>
+    
+    <operation name="RequestSecurityToken" mep="http://www.w3.org/2004/08/wsdl/in-out">
+        <messageReceiver class="org.apache.rahas.STSMessageReceiver"/>
+
+		<!-- Action mapping to accept SCT requests -->
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT</actionMapping>
+
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Renew</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Cancel</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Validate</actionMapping>
+
+		<parameter name="token-dispatcher-configuration">
+			<token-dispatcher-configuration>
+                <!-- Issuers. You may have many issuers. -->
+                <issuer class="org.apache.rahas.impl.SCTIssuer" default="true">
+					<configuration type="parameter">sct-issuer-config</configuration>
+					<tokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</tokenType>
+				</issuer>
+				<issuer class="org.apache.rahas.impl.SAMLTokenIssuer">
+					<configuration type="parameter">saml-issuer-config</configuration>
+					<tokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</tokenType>
+				</issuer>
+
+                <!-- Only a single canceler is allowed -->
+                <canceler class="org.apache.rahas.impl.TokenCancelerImpl">
+					<configuration type="parameter">token-canceler-config</configuration>
+				</canceler>
+
+            </token-dispatcher-configuration>
+		</parameter>
+
+     </operation>
+
+</module>
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/RahasConstants.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/RahasConstants.java
new file mode 100644
index 0000000..a922c49
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/RahasConstants.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+
+public class RahasConstants {
+
+    public final static int VERSION_05_02 = 1;
+    public final static int VERSION_05_12 = 2;
+
+    /**
+     * WS-Trust 2005 Feb namespace
+     */
+    public final static String WST_NS_05_02 = "http://schemas.xmlsoap.org/ws/2005/02/trust";
+
+    /**
+     * WS-SX Namespace
+     */
+    public final static String WST_NS_05_12 = "http://docs.oasis-open.org/ws-sx/ws-trust/200512";
+
+    public final static String WST_PREFIX = "wst";
+
+    public final static String WSP_NS = "http://schemas.xmlsoap.org/ws/2004/09/policy";
+    public final static String WSP_PREFIX = "wsp";
+
+    public static class LocalNames {
+        public static final String REQUEST_SECURITY_TOKEN = "RequestSecurityToken";
+        public static final String REQUEST_SECURITY_TOKEN_RESPONSE = "RequestSecurityTokenResponse";
+        public static final String REQUEST_TYPE = "RequestType";
+        public static final String TOKEN_TYPE = "TokenType";
+        public static final String REQUESTED_PROOF_TOKEN = "RequestedProofToken";
+        public static final String
+                REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION = "RequestSecurityTokenResponseCollection";
+        public final static String BINARY_SECRET = "BinarySecret";
+    }
+
+    public static class IssuanceBindingLocalNames {
+        public static final String REQUESTED_SECURITY_TOKEN = "RequestedSecurityToken";
+        public static final String COMPUTED_KEY_ALGO = "ComputedKeyAlgorithm";
+        public static final String COMPUTED_KEY = "ComputedKey";
+        public static final String REQUESTED_ATTACHED_REFERENCE = "RequestedAttachedReference";
+        public static final String REQUESTED_UNATTACHED_REFERENCE = "RequestedUnattachedReference";
+        public static final String KEY_SIZE = "KeySize";
+        public static final String KEY_TYPE = "KeyType";
+        public static final String ENTROPY = "Entropy";
+        public static final String APPLIES_TO = "AppliesTo";
+        public static final String LIFETIME = "Lifetime";
+    }
+
+    public static class CancelBindingLocalNames {
+        public static final String REQUESTED_TOKEN_CANCELED = "RequestedTokenCancelled";
+        public static final String CANCEL_TARGET = "CancelTarget";
+        public static final String SECURITY_TOKEN_REF = "SecurityTokenReference";
+        public static final String REFERENCE = "Reference";
+        public static final String URI = "URI";
+    }
+
+    //Key types
+    public static final String KEY_TYPE_SYMM_KEY = "/SymmetricKey";
+    public static final String KEY_TYPE_PUBLIC_KEY = "/PublicKey";
+    public static final String KEY_TYPE_BEARER = "/Bearer";
+
+    //Attr values
+    public static final String BIN_SEC_TYPE_NONCE = "/Nonce";
+
+    //ComputedKey algos
+    public static final String COMPUTED_KEY_PSHA1 = "/CK/PSHA1";
+
+    //  RequestTypes
+    public static final String REQ_TYPE_ISSUE = "/Issue";
+    public static final String REQ_TYPE_VALIDATE = "/Validate";
+    public static final String REQ_TYPE_RENEW = "/Renew";
+    public static final String REQ_TYPE_CANCEL = "/Cancel";
+
+    //RST actions
+    public static final String RST_ACTION_ISSUE = "/RST" + REQ_TYPE_ISSUE;
+    public static final String RST_ACTION_VALIDATE = "/RST" + REQ_TYPE_VALIDATE;
+    public static final String RST_ACTION_RENEW = "/RST" + REQ_TYPE_RENEW;
+    public static final String RST_ACTION_CANCEL = "/RST" + REQ_TYPE_CANCEL;
+    public static final String RST_ACTION_SCT = "/RST/SCT";
+    public static final String RST_ACTION_CANCEL_SCT = "/RST/SCT" + REQ_TYPE_CANCEL;
+
+    //RSTR actions
+    public static final String RSTR_ACTION_ISSUE = "/RSTR" + REQ_TYPE_ISSUE;
+    public static final String RSTR_ACTION_VALIDATE = "/RSTR" + REQ_TYPE_VALIDATE;
+    public static final String RSTR_ACTION_RENEW = "/RSTR" + REQ_TYPE_RENEW;
+    public static final String RSTR_ACTION_CANCEL = "/RSTR" + REQ_TYPE_CANCEL;
+    public static final String RSTR_ACTION_SCT = "/RSTR/SCT";
+    public static final String RSTR_ACTION_CANCEL_SCT = "/RSTR/SCT" + REQ_TYPE_CANCEL;
+
+    //Token types
+    public static final String TOK_TYPE_SAML_10 = "http://docs.oasis-open.org/wss/" +
+                                                  "oasis-wss-saml-token-profile-1.1#SAMLV1.1";
+
+    //Attrs
+    public static final String ATTR_TYPE = "Type";
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/RahasData.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/RahasData.java
new file mode 100644
index 0000000..11e9040
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/RahasData.java
@@ -0,0 +1,423 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.Base64;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+
+import javax.xml.namespace.QName;
+
+import java.security.Principal;
+import java.security.cert.X509Certificate;
+import java.util.Vector;
+
+/**
+ * Common data items on WS-Trust request messages
+ */
+public class RahasData {
+
+    private MessageContext inMessageContext;
+
+    private OMElement rstElement;
+
+    private int version = -1;
+
+    private String wstNs;
+
+    private String requestType;
+
+    private String tokenType;
+
+    private int keysize = -1;
+
+    private String computedKeyAlgo;
+
+    private String keyType;
+
+    private String appliesToAddress;
+
+    private Principal principal;
+
+    private X509Certificate clientCert;
+
+    private byte[] ephmeralKey;
+
+    private byte[] requestEntropy;
+
+    private byte[] responseEntropy;
+
+    private String addressingNs;
+
+    private String soapNs;
+
+    /**
+     * Create a new RahasData instance and populate it with the information from
+     * the request.
+     *
+     * @throws TrustException <code>RequestSecurityToken</code> element is invalid.
+     */
+    public RahasData(MessageContext inMessageContext) throws TrustException {
+
+        this.inMessageContext = inMessageContext;
+
+        //Check for an authenticated Principal
+        this.processWSS4JSecurityResults();
+
+        // Find out the incoming addressing version
+        this.addressingNs = (String) this.inMessageContext
+                .getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+
+        this.rstElement = this.inMessageContext.getEnvelope().getBody()
+                .getFirstElement();
+
+        this.soapNs = this.inMessageContext.getEnvelope().getNamespace()
+                .getNamespaceURI();
+
+        this.wstNs = this.rstElement.getNamespace().getNamespaceURI();
+
+        int ver = TrustUtil.getWSTVersion(this.wstNs);
+
+        if (ver == -1) {
+            throw new TrustException(TrustException.INVALID_REQUEST);
+        } else {
+            this.version = ver;
+        }
+
+        this.processRequestType();
+
+        this.processTokenType();
+
+        this.processKeyType();
+
+        this.processKeySize();
+
+        this.processAppliesTo();
+
+        this.processEntropy();
+
+    }
+
+    /**
+     * Processes the authenticated user information from the WSS4J security
+     * resutls.
+     *
+     * @throws TrustException
+     */
+    private void processWSS4JSecurityResults() throws TrustException {
+
+        /*
+         * User can be identifier using a UsernameToken or a certificate - If a
+         * certificate is found then we use that to - identify the user and -
+         * encrypt the response (if required) - If a UsernameToken is found then
+         * we will not be encrypting the response
+         */
+
+        Vector results;
+        if ((results = (Vector) this.inMessageContext
+                .getProperty(WSHandlerConstants.RECV_RESULTS)) == null) {
+            throw new TrustException(TrustException.REQUEST_FAILED);
+        } else {
+
+            for (int i = 0; i < results.size(); i++) {
+                WSHandlerResult rResult = (WSHandlerResult) results.get(i);
+                Vector wsSecEngineResults = rResult.getResults();
+
+                for (int j = 0; j < wsSecEngineResults.size(); j++) {
+                    WSSecurityEngineResult wser = (WSSecurityEngineResult) wsSecEngineResults
+                            .get(j);
+                    if (wser.getAction() == WSConstants.SIGN
+                        && wser.getPrincipal() != null) {
+                        this.clientCert = wser.getCertificate();
+                        this.principal = wser.getPrincipal();
+                    } else if (wser.getAction() == WSConstants.UT
+                               && wser.getPrincipal() != null) {
+                        this.principal = wser.getPrincipal();
+                    }
+                }
+            }
+            // If the principal is missing
+            if (principal == null) {
+                throw new TrustException(TrustException.REQUEST_FAILED);
+            }
+        }
+    }
+
+    private void processAppliesTo() throws TrustException {
+
+        OMElement appliesToElem = this.rstElement
+                .getFirstChildWithName(new QName(RahasConstants.WSP_NS,
+                                                 RahasConstants.IssuanceBindingLocalNames.
+                                                         APPLIES_TO));
+
+        if (appliesToElem != null) {
+            OMElement eprElem = appliesToElem.getFirstElement();
+            // If there were no addressing headers
+            // The find the addressing version using the EPR element
+            if (this.addressingNs == null) {
+                this.addressingNs = eprElem.getNamespace()
+                        .getNamespaceURI();
+            }
+
+            if (eprElem != null) {
+                OMElement addrElem = eprElem
+                        .getFirstChildWithName(new QName(
+                                this.addressingNs,
+                                AddressingConstants.EPR_ADDRESS));
+                if (addrElem != null && addrElem.getText() != null
+                    && !"".equals(addrElem.getText().trim())) {
+                    this.appliesToAddress = addrElem.getText().trim();
+                } else {
+                    throw new TrustException("invalidAppliesToElem");
+                }
+            } else {
+                throw new TrustException("invalidAppliesToElem");
+            }
+        }
+    }
+
+    private void processRequestType() throws TrustException {
+        OMElement reqTypeElem = this.rstElement
+                .getFirstChildWithName(new QName(this.wstNs,
+                                                 RahasConstants.LocalNames.REQUEST_TYPE));
+
+        if (reqTypeElem == null ||
+            reqTypeElem.getText() == null ||
+            reqTypeElem.getText().trim().length() == 0) {
+            throw new TrustException(TrustException.INVALID_REQUEST);
+        } else {
+            this.requestType = reqTypeElem.getText().trim();
+        }
+    }
+
+    private void processTokenType() {
+        OMElement tokTypeElem = this.rstElement
+                .getFirstChildWithName(new QName(this.wstNs,
+                                                 RahasConstants.LocalNames.TOKEN_TYPE));
+
+        if (tokTypeElem != null && tokTypeElem.getText() != null
+            && !"".equals(tokTypeElem.getText().trim())) {
+            this.tokenType = tokTypeElem.getText().trim();
+        }
+    }
+
+    /**
+     * Find the value of the KeyType element of the RST
+     */
+    private void processKeyType() {
+        OMElement keyTypeElem = this.rstElement
+                .getFirstChildWithName(new QName(this.wstNs,
+                                                 RahasConstants.IssuanceBindingLocalNames.KEY_TYPE));
+        if (keyTypeElem != null) {
+            String text = keyTypeElem.getText();
+            if (text != null && !"".equals(text.trim())) {
+                this.keyType = text.trim();
+            }
+        }
+    }
+
+    /**
+     * Finds the KeySize and creates an empty ephmeral key.
+     *
+     * @throws TrustException
+     */
+    private void processKeySize() throws TrustException {
+        OMElement keySizeElem =
+                this.rstElement
+                        .getFirstChildWithName(new QName(this.wstNs,
+                                                         RahasConstants.IssuanceBindingLocalNames.
+                                                                 KEY_SIZE));
+        if (keySizeElem != null) {
+            String text = keySizeElem.getText();
+            if (text != null && !"".equals(text.trim())) {
+                try {
+                    //Set key size
+                    this.keysize = Integer.parseInt(text.trim());
+
+                    //Create an empty array to hold the key
+                    this.ephmeralKey = new byte[this.keysize];
+                } catch (NumberFormatException e) {
+                    throw new TrustException(TrustException.INVALID_REQUEST,
+                                             new String[]{"invalid wst:Keysize value"}, e);
+                }
+            }
+        }
+        this.keysize = -1;
+    }
+
+
+    /**
+     * Process wst:Entropy element in the request.
+     */
+    private void processEntropy() throws TrustException {
+        OMElement entropyElem = this.rstElement
+                .getFirstChildWithName(new QName(this.wstNs,
+                                                 RahasConstants.IssuanceBindingLocalNames.ENTROPY));
+
+        if (entropyElem != null) {
+            OMElement binSecElem = entropyElem.getFirstElement();
+            if (binSecElem != null && binSecElem.getText() != null
+                && !"".equals(binSecElem.getText())) {
+                this.requestEntropy = Base64.decode(binSecElem.getText());
+            } else {
+                throw new TrustException("malformedEntropyElement",
+                                         new String[]{entropyElem.toString()});
+            }
+
+        }
+    }
+
+    /**
+     * @return Returns the appliesToAddress.
+     */
+    public String getAppliesToAddress() {
+        return appliesToAddress;
+    }
+
+    /**
+     * @return Returns the clientCert.
+     */
+    public X509Certificate getClientCert() {
+        return clientCert;
+    }
+
+    /**
+     * @return Returns the computedKeyAlgo.
+     */
+    public String getComputedKeyAlgo() {
+        return computedKeyAlgo;
+    }
+
+    /**
+     * @return Returns the ephmeralKey.
+     */
+    public byte[] getEphmeralKey() {
+        return ephmeralKey;
+    }
+
+    /**
+     * @return Returns the inMessageContext.
+     */
+    public MessageContext getInMessageContext() {
+        return inMessageContext;
+    }
+
+    /**
+     * @return Returns the keysize.
+     */
+    public int getKeysize() {
+        return keysize;
+    }
+
+    /**
+     * @return Returns the keyType.
+     */
+    public String getKeyType() {
+        return keyType;
+    }
+
+    /**
+     * @return Returns the principal.
+     */
+    public Principal getPrincipal() {
+        return principal;
+    }
+
+    /**
+     * @return Returns the requestEntropy.
+     */
+    public byte[] getRequestEntropy() {
+        return requestEntropy;
+    }
+
+    /**
+     * @return Returns the requestType.
+     */
+    public String getRequestType() {
+        return requestType;
+    }
+
+    /**
+     * @return Returns the responseEntropy.
+     */
+    public byte[] getResponseEntropy() {
+        return responseEntropy;
+    }
+
+    /**
+     * @return Returns the rstElement.
+     */
+    public OMElement getRstElement() {
+        return rstElement;
+    }
+
+    /**
+     * @return Returns the tokenType.
+     */
+    public String getTokenType() {
+        return tokenType;
+    }
+
+    /**
+     * @return Returns the version.
+     */
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * @return Returns the addressingNs.
+     */
+    public String getAddressingNs() {
+        return addressingNs;
+    }
+
+    /**
+     * @return Returns the wstNs.
+     */
+    public String getWstNs() {
+        return wstNs;
+    }
+
+    /**
+     * @return Returns the soapNs.
+     */
+    public String getSoapNs() {
+        return soapNs;
+    }
+
+    /**
+     * @param responseEntropy The responseEntropy to set.
+     */
+    public void setResponseEntropy(byte[] responseEntropy) {
+        this.responseEntropy = responseEntropy;
+    }
+
+    /**
+     * @param ephmeralKey The ephmeralKey to set.
+     */
+    public void setEphmeralKey(byte[] ephmeralKey) {
+        this.ephmeralKey = ephmeralKey;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/STSMessageReceiver.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/STSMessageReceiver.java
new file mode 100644
index 0000000..bf201f8
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/STSMessageReceiver.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class STSMessageReceiver extends AbstractInOutSyncMessageReceiver {
+    
+	private static final Log log = LogFactory.getLog(STSMessageReceiver.class);
+    
+    public void invokeBusinessLogic(MessageContext inMessage,
+            MessageContext outMessage) throws AxisFault {
+
+        try {
+            Parameter param = inMessage
+                    .getParameter(TokenRequestDispatcherConfig.CONFIG_PARAM_KEY);
+            Parameter paramFile = inMessage
+                    .getParameter(TokenRequestDispatcherConfig.CONFIG_FILE_KEY);
+            TokenRequestDispatcher dispatcher = null;
+            if (param != null) {
+                dispatcher = new TokenRequestDispatcher(param
+                        .getParameterElement().getFirstChildWithName(
+                                new QName("token-dispatcher-configuration")));
+            } else if (paramFile != null) {
+                dispatcher = new TokenRequestDispatcher((String) paramFile
+                        .getValue());
+            } else {
+                dispatcher = new TokenRequestDispatcher(
+                        (OMElement) inMessage
+                                .getProperty(TokenRequestDispatcherConfig.CONFIG_PARAM_KEY));
+            }
+            
+            if(dispatcher != null) {
+                SOAPEnvelope responseEnv = dispatcher.handle(inMessage, outMessage);
+                outMessage.setEnvelope(responseEnv);
+            } else {
+                throw new TrustException("missingDispatcherConfiguration");
+            }
+        } catch (TrustException e) {
+            e.printStackTrace();
+            //Log the exception
+            log.error(e);
+            throw new AxisFault(e.getFaultString(), e.getFaultCode());
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/SimpleTokenStore.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/SimpleTokenStore.java
new file mode 100644
index 0000000..c1095dd
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/SimpleTokenStore.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.message.token.Reference;
+
+import javax.xml.namespace.QName;
+
+import java.util.List;
+import java.util.Map;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+/**
+ * In-memory implementation of the token storage
+ */
+public class SimpleTokenStore implements TokenStorage {
+
+    protected Map tokens = new Hashtable();
+
+    public void add(Token token) throws TrustException {
+        if (token != null && !"".equals(token.getId()) &&
+            token.getId() != null) {
+            if (this.tokens.keySet().size() == 0
+                || (this.tokens.keySet().size() > 0 && !this.tokens
+                    .keySet().contains(token.getId()))) {
+                tokens.put(token.getId(), token);
+            } else {
+                throw new TrustException("tokenAlreadyExists",
+                                         new String[]{token.getId()});
+            }
+
+        }
+    }
+
+    public void update(Token token) throws TrustException {
+        if (token != null && token.getId() != null && token.getId().trim().length() != 0) {
+
+            if (!this.tokens.keySet().contains(token.getId())) {
+                throw new TrustException("noTokenToUpdate", new String[]{token.getId()});
+            }
+            this.tokens.put(token.getId(), token);
+        }
+    }
+
+    public String[] getTokenIdentifiers() throws TrustException {
+        List identifiers = new ArrayList();
+        for (Iterator iterator = tokens.keySet().iterator(); iterator.hasNext();) {
+            identifiers.add(iterator.next());
+        }
+        return (String[]) identifiers.toArray(new String[identifiers.size()]);
+    }
+
+    public Token[] getValidTokens() throws TrustException {
+        return getTokens(new int[]{Token.ISSUED, Token.RENEWED});
+    }
+
+    public Token[] getRenewedTokens() throws TrustException {
+        return getTokens(Token.RENEWED);
+    }
+
+
+    public Token[] getCancelledTokens() throws TrustException {
+        return getTokens(Token.CANCELLED);
+    }
+
+    public Token[] getExpiredTokens() throws TrustException {
+        return getTokens(Token.EXPIRED);
+    }
+
+    private Token[] getTokens(int[] states) throws TrustException {
+        processTokenExpiry();
+        List tokens = new ArrayList();
+        for (Iterator iterator = this.tokens.values().iterator(); iterator.hasNext();) {
+            Token token = (Token) iterator.next();
+            for (int i = 0; i < states.length; i++) {
+                if (token.getState() == states[i]) {
+                    tokens.add(token);
+                    break;
+                }
+            }
+        }
+        return (Token[]) tokens.toArray(new Token[tokens.size()]);
+    }
+
+    private Token[] getTokens(int state) throws TrustException {
+        processTokenExpiry();
+        List tokens = new ArrayList();
+        for (Iterator iterator = this.tokens.values().iterator(); iterator.hasNext();) {
+            Token token = (Token) iterator.next();
+            if (token.getState() == state) {
+                tokens.add(token);
+            }
+        }
+        return (Token[]) tokens.toArray(new Token[tokens.size()]);
+    }
+
+    public Token getToken(String id) throws TrustException {
+        processTokenExpiry();
+        Token token = (Token) this.tokens.get(id);
+        
+        if(token == null) {
+            //Try the unattached refs
+            for (Iterator iterator = this.tokens.values().iterator(); iterator.hasNext();) {
+                Token tempToken = (Token) iterator.next();
+                OMElement elem = tempToken.getAttachedReference();
+                if(elem != null && id.equals(this.getIdFromSTR(elem))) {
+                    token = tempToken;
+                }
+                elem = tempToken.getUnattachedReference();
+                if(elem != null && id.equals(this.getIdFromSTR(elem))) {
+                    token = tempToken;
+                }
+                
+            }
+        }
+
+        
+        return token;
+    }
+
+    protected void processTokenExpiry() throws TrustException {
+        for (Iterator iterator = tokens.values().iterator(); iterator.hasNext();) {
+            Token token = (Token) iterator.next();
+            if (token.getExpires() != null &&
+                token.getExpires().getTime() < System.currentTimeMillis()) {
+                token.setState(Token.EXPIRED);
+                update(token);
+            }
+        }
+    }
+    
+    private String getIdFromSTR(OMElement str) {
+//      ASSUMPTION:SecurityTokenReference/KeyIdentifier
+        OMElement child = str.getFirstElement();
+        if(child == null) {
+            return null;
+        }
+        
+        if (child.getQName().equals(new QName(WSConstants.SIG_NS, "KeyInfo"))) {
+            return child.getText();
+        } else if(child.getQName().equals(Reference.TOKEN)) {
+            return child.getAttributeValue(new QName("URI")).substring(1);
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/Token.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/Token.java
new file mode 100644
index 0000000..5262aa8
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/Token.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.util.XmlSchemaDateFormat;
+
+import javax.xml.namespace.QName;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Properties;
+
+/**
+ * This represents a security token which can have either one of 4 states.
+ * <ul>
+ * <li>ISSUED</li>
+ * <li>EXPIRED</li>
+ * <li>CACELLED</li>
+ * <li>RENEWED</li>
+ * </ul>
+ * Also this holds the <code>OMElement</code>s representing the token in its 
+ * present state and the previous state.
+ * 
+ * These tokens are stired using the storage mechanism provided via the 
+ * <code>TokenStorage</code> interface.
+ * @see org.apache.rahas.TokenStorage
+ */
+public class Token {
+    
+    public final static int ISSUED = 1;
+    public final static int EXPIRED = 2;
+    public final static int CANCELLED = 3;
+    public final static int RENEWED = 4;
+    
+    /**
+     * Token identifier
+     */
+    private String id;
+    
+    /**
+     * Current state of the token
+     */
+    private int state = -1;
+    
+    /**
+     * The actual token in its current state
+     */
+    private OMElement token;
+    
+    /**
+     * The token in its previous state
+     */
+    private OMElement previousToken;
+    
+    /**
+     * The RequestedAttachedReference element
+     * NOTE : The oasis-200401-wss-soap-message-security-1.0 spec allows 
+     * an extensibility mechanism for wsse:SecurityTokenReference and 
+     * wsse:Reference. Hence we cannot limit to the 
+     * wsse:SecurityTokenReference\wsse:Reference case and only hold the URI and 
+     * the ValueType values.
+     */
+    private OMElement attachedReference;
+    
+    /**
+     * The RequestedUnattachedReference element
+     * NOTE : The oasis-200401-wss-soap-message-security-1.0 spec allows 
+     * an extensibility mechanism for wsse:SecurityTokenRefence and 
+     * wsse:Reference. Hence we cannot limit to the 
+     * wsse:SecurityTokenReference\wsse:Reference case and only hold the URI and 
+     * the ValueType values.
+     */
+    private OMElement unattachedReference;
+    
+    /**
+     * A bag to hold any other properties
+     */
+    private Properties  properties;
+
+    /**
+     * A flag to assist the TokenStorage
+     */
+    private boolean changed;
+    
+    /**
+     * The secret associated with the Token
+     */
+    private byte[] secret;
+    
+    /**
+     * Created time
+     */
+    private Date created;
+    
+    /**
+     * Expiration time
+     */
+    private Date expires;
+    
+    public Token(String id,
+                 OMElement tokenElem,
+                 Date created,
+                 Date expires) throws TrustException {
+        this.id = id;
+        this.token = new StAXOMBuilder(DOOMAbstractFactory.getOMFactory(),
+                tokenElem.getXMLStreamReader()).getDocumentElement();
+        this.created = created;
+        this.expires = expires;
+    }
+
+    public Token(String id,
+                 OMElement tokenElem,
+                 OMElement lifetimeElem) throws TrustException {
+        this.id = id;
+        this.token = new StAXOMBuilder(DOOMAbstractFactory.getOMFactory(),
+                tokenElem.getXMLStreamReader()).getDocumentElement();
+        this.processLifeTime(lifetimeElem);
+    }
+    
+    /**
+     * @param lifetimeElem
+     * @throws TrustException 
+     */
+    private void processLifeTime(OMElement lifetimeElem) throws TrustException {
+        try {
+            DateFormat zulu = new XmlSchemaDateFormat();
+            OMElement createdElem =
+                    lifetimeElem.getFirstChildWithName(new QName(WSConstants.WSU_NS,
+                                                                 WSConstants.CREATED_LN));
+            this.created = zulu.parse(createdElem.getText());
+            
+            OMElement expiresElem =
+                    lifetimeElem.getFirstChildWithName(new QName(WSConstants.WSU_NS,
+                                                                 WSConstants.EXPIRES_LN));
+            this.expires = zulu.parse(expiresElem.getText());
+        } catch (OMException e) {
+            throw new TrustException("lifeTimeProcessingError",
+                                     new String[]{lifetimeElem.toString()}, e);
+        } catch (ParseException e) {
+            throw new TrustException("lifeTimeProcessingError",
+                                     new String[]{lifetimeElem.toString()}, e);
+        }
+    }
+
+    /**
+     * @return Returns the chnaged.
+     */
+    public boolean isChanged() {
+        return changed;
+    }
+
+    /**
+     * @param chnaged The chnaged to set.
+     */
+    public void setChanged(boolean chnaged) {
+        this.changed = chnaged;
+    }
+    
+    /**
+     * @return Returns the properties.
+     */
+    public Properties getProperties() {
+        return properties;
+    }
+
+    /**
+     * @param properties The properties to set.
+     */
+    public void setProperties(Properties properties) {
+        this.properties = properties;
+    }
+
+    /**
+     * @return Returns the state.
+     */
+    public int getState() {
+        return state;
+    }
+
+    /**
+     * @param state The state to set.
+     */
+    public void setState(int state) {
+        this.state = state;
+    }
+
+    /**
+     * @return Returns the token.
+     */
+    public OMElement getToken() {
+        return token;
+    }
+
+    /**
+     * @param token The token to set.
+     */
+    public void setToken(OMElement token) {
+        this.token = token;
+    }
+
+    /**
+     * @return Returns the id.
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * @return Returns the presivousToken.
+     */
+    public OMElement getPreviousToken() {
+        return previousToken;
+    }
+
+    /**
+     * @param presivousToken The presivousToken to set.
+     */
+    public void setPreviousToken(OMElement presivousToken) {
+        this.previousToken = new StAXOMBuilder(DOOMAbstractFactory.getOMFactory(),
+                presivousToken.getXMLStreamReader()).getDocumentElement();
+    }
+
+    /**
+     * @return Returns the secret.
+     */
+    public byte[] getSecret() {
+        return secret;
+    }
+
+    /**
+     * @param secret The secret to set.
+     */
+    public void setSecret(byte[] secret) {
+        this.secret = secret;
+    }
+
+    /**
+     * @return Returns the attachedReference.
+     */
+    public OMElement getAttachedReference() {
+        return attachedReference;
+    }
+
+    /**
+     * @param attachedReference The attachedReference to set.
+     */
+    public void setAttachedReference(OMElement attachedReference) {
+        if(attachedReference != null) {
+            this.attachedReference = new StAXOMBuilder(DOOMAbstractFactory
+                    .getOMFactory(), attachedReference.getXMLStreamReader())
+                    .getDocumentElement();
+        }
+    }
+
+    /**
+     * @return Returns the unattachedReference.
+     */
+    public OMElement getUnattachedReference() {
+        return unattachedReference;
+    }
+
+    /**
+     * @param unattachedReference The unattachedReference to set.
+     */
+    public void setUnattachedReference(OMElement unattachedReference) {
+        if(unattachedReference != null) {
+            this.unattachedReference = new StAXOMBuilder(DOOMAbstractFactory
+                    .getOMFactory(), unattachedReference.getXMLStreamReader())
+                    .getDocumentElement();
+        }
+    }
+
+    /**
+     * @return Returns the created.
+     */
+    public Date getCreated() {
+        return created;
+    }
+
+    /**
+     * @return Returns the expires.
+     */
+    public Date getExpires() {
+        return expires;
+    }
+
+    /**
+     * @param expires The expires to set.
+     */
+    public void setExpires(Date expires) {
+        this.expires = expires;
+    }
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenCanceler.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenCanceler.java
new file mode 100644
index 0000000..6d427ad
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenCanceler.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.om.OMElement;
+
+public interface TokenCanceler {
+
+    /**
+     * Cancel the token specified in the request.
+     *
+     * @param data A populated <code>RahasData</code> instance
+     * @return Response SOAPEnveloper
+     * @throws TrustException
+     */
+    SOAPEnvelope cancel(RahasData data) throws TrustException;
+
+    /**
+     * Set the configuration file of this TokenCanceller.
+     * <p/>
+     * This is the text value of the &lt;configuration-file&gt; element of the
+     * token-dispatcher-configuration
+     *
+     * @param configFile
+     */
+    void setConfigurationFile(String configFile);
+
+    /**
+     * Set the configuration element of this TokenCanceller.
+     * <p/>
+     * This is the &lt;configuration&gt; element of the
+     * token-dispatcher-configuration
+     *
+     * @param configElement <code>OMElement</code> representing the configuation
+     */
+    void setConfigurationElement(OMElement configElement);
+
+    /**
+     * Set the name of the configuration parameter.
+     * <p/>
+     * If this is used then there must be a
+     * <code>org.apache.axis2.description.Parameter</code> object available in
+     * the via the messageContext when the <code>TokenIssuer</code> is called.
+     *
+     * @param configParamName
+     * @see org.apache.axis2.description.Parameter
+     */
+    void setConfigurationParamName(String configParamName);
+
+    /**
+     * Returns the <code>wsa:Action</code> of the response.
+     *
+     * @param data A populated <code>RahasData</code> instance
+     * @return Returns the <code>wsa:Action</code> of the response
+     * @throws TrustException
+     */
+    String getResponseAction(RahasData data) throws TrustException;
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenIssuer.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenIssuer.java
new file mode 100644
index 0000000..fd327c4
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenIssuer.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+
+/**
+ * The <code>TokenIssuer</code>
+ */
+public interface TokenIssuer {
+
+    /**
+     * Create the response <code>soap:Envelope</code> for the given issue
+     * request.
+     *
+     * @param data A populated <code>RahasData</code> instance
+     * @return The response <code>soap:Envelope</code> for the given issue
+     *         request.
+     * @throws TrustException
+     */
+    SOAPEnvelope issue(RahasData data) throws TrustException;
+
+    /**
+     * Returns the <code>wsa:Action</code> of the response.
+     *
+     * @param data A populated <code>RahasData</code> instance
+     * @return Returns the <code>wsa:Action</code> of the response
+     * @throws TrustException
+     */
+    String getResponseAction(RahasData data) throws TrustException;
+
+    /**
+     * Set the configuration file of this TokenIssuer.
+     * <p/>
+     * This is the text value of the &lt;configuration-file&gt; element of the
+     * token-dispatcher-configuration
+     *
+     * @param configFile
+     */
+    void setConfigurationFile(String configFile);
+
+    /**
+     * Set the configuration element of this TokenIssuer.
+     * <p/>
+     * This is the &lt;configuration&gt; element of the
+     * token-dispatcher-configuration
+     *
+     * @param configElement <code>OMElement</code> representing the configuation
+     */
+    void setConfigurationElement(OMElement configElement);
+
+    /**
+     * Set the name of the configuration parameter.
+     * <p/>
+     * If this is used then there must be a
+     * <code>org.apache.axis2.description.Parameter</code> object available in
+     * the via the messageContext when the <code>TokenIssuer</code> is called.
+     *
+     * @param configParamName
+     * @see org.apache.axis2.description.Parameter
+     */
+    void setConfigurationParamName(String configParamName);
+
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRenewer.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRenewer.java
new file mode 100644
index 0000000..8b06f82
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRenewer.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+
+public interface TokenRenewer {
+
+    /**
+     * Renew the token specified in the given request.
+     * 
+     * @param data
+     *            A populated <code>RahasData</code> instance
+     * @return Response SOAPEnveloper
+     * @throws TrustException
+     */
+    public SOAPEnvelope renew(RahasData data) throws TrustException;
+
+    /**
+     * Set the configuration file of this TokenRenewer.
+     * 
+     * This is the text value of the &lt;configuration-file&gt; element of the
+     * token-dispatcher-configuration
+     * 
+     * @param configFile
+     */
+    public void setConfigurationFile(String configFile);
+
+    /**
+     * Set the configuration element of this TokenRenewer.
+     * 
+     * This is the &lt;configuration&gt; element of the
+     * token-dispatcher-configuration
+     * 
+     * @param configElement
+     *            <code>OMElement</code> representing the configuation
+     */
+    public void setConfigurationElement(String configElement);
+
+    /**
+     * Set the name of the configuration parameter.
+     * 
+     * If this is used then there must be a
+     * <code>org.apache.axis2.description.Parameter</code> object available in
+     * the via the messageContext when the <code>TokenIssuer</code> is called.
+     * 
+     * @see org.apache.axis2.description.Parameter
+     * @param configParamName
+     */
+    public void setConfigurationParamName(String configParamName);
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRequestDispatcher.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRequestDispatcher.java
new file mode 100644
index 0000000..ed1e749
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRequestDispatcher.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.context.MessageContext;
+
+public class TokenRequestDispatcher {
+
+    private TokenRequestDispatcherConfig config;
+
+    public TokenRequestDispatcher(TokenRequestDispatcherConfig config) throws TrustException {
+        this.config = config;
+    }
+
+    public TokenRequestDispatcher(OMElement config) throws TrustException {
+        this(TokenRequestDispatcherConfig.load(config));
+    }
+
+    public TokenRequestDispatcher(String configFilePath) throws TrustException {
+        this(TokenRequestDispatcherConfig.load(configFilePath));
+    }
+
+    /**
+     * Processes the incoming request and returns a SOAPEnvelope
+     * @param inMsgCtx
+     * @return The response SOAPEnvelope
+     * @throws TrustException
+     */
+    public SOAPEnvelope handle(MessageContext inMsgCtx,
+                               MessageContext outMsgCtx) throws TrustException {
+        
+        RahasData data = new RahasData(inMsgCtx);
+        
+        String reqType = data.getRequestType();
+        String tokenType = data.getTokenType();
+        if ((RahasConstants.WST_NS_05_02 + RahasConstants.REQ_TYPE_ISSUE).equals(reqType) ||
+                (RahasConstants.WST_NS_05_12 + RahasConstants.REQ_TYPE_ISSUE).equals(reqType)) {
+            TokenIssuer issuer;
+            if (tokenType == null ||  tokenType.trim().length() == 0) {
+                issuer = config.getDefaultIssuerInstace();
+            } else {
+                issuer = config.getIssuer(tokenType);
+            }
+            
+            SOAPEnvelope response = issuer.issue(data);
+            
+            //set the response wsa/soap action in teh out message context
+            outMsgCtx.getOptions().setAction(issuer.getResponseAction(data));
+            
+            return response;
+        } else if((RahasConstants.WST_NS_05_02 + RahasConstants.REQ_TYPE_VALIDATE).equals(reqType) ||
+                (RahasConstants.WST_NS_05_12 + RahasConstants.REQ_TYPE_VALIDATE).equals(reqType)) {
+            throw new UnsupportedOperationException("TODO: handle " +
+                    "validate requests");
+        } else if((RahasConstants.WST_NS_05_02 + RahasConstants.REQ_TYPE_RENEW).equals(reqType) ||
+                (RahasConstants.WST_NS_05_12 + RahasConstants.REQ_TYPE_RENEW).equals(reqType)) {
+            throw new UnsupportedOperationException("TODO: handle " +
+                    "renew requests");            
+        } else if((RahasConstants.WST_NS_05_02 + RahasConstants.REQ_TYPE_CANCEL).equals(reqType) ||
+                (RahasConstants.WST_NS_05_12 + RahasConstants.REQ_TYPE_CANCEL).equals(reqType)) {
+
+            TokenCanceler canceler = config.getDefaultCancelerInstance();
+            SOAPEnvelope response = canceler.cancel(data);
+
+            //set the response wsa/soap action in the out message context
+            outMsgCtx.getOptions().setAction(canceler.getResponseAction(data));
+            return response;
+        } else {
+            throw new TrustException(TrustException.INVALID_REQUEST);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRequestDispatcherConfig.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRequestDispatcherConfig.java
new file mode 100644
index 0000000..9e04324
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenRequestDispatcherConfig.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.ws.security.util.Loader;
+
+import javax.xml.namespace.QName;
+import java.io.FileInputStream;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+
+public class TokenRequestDispatcherConfig {
+
+    public final static String CONFIG_PARAM_KEY = "token-dispatcher-configuration";
+    public final static String CONFIG_FILE_KEY = "token-dispatcher-configuration-file";
+
+    private final static QName DISPATCHER_CONFIG = new QName("token-dispatcher-configuration");
+    private final static QName ISSUER = new QName("issuer");
+    private final static QName CANCELER = new QName("canceler");
+    private final static QName TOKEN_TYPE = new QName("tokenType");
+    private final static QName CLASS_ATTR = new QName("class");
+    private final static QName DEFAULT_ATTR = new QName("default");
+    private final static QName CONFIGURATION_ELEMENT = new QName("configuration");
+
+    private Map issuers;
+    private Map configFiles = new Hashtable();
+    private Map configElements = new Hashtable();
+    private Map configParamNames = new Hashtable();
+
+    private String defaultIssuerClassName;
+    private String defaultCancelerClassName;
+
+    public static TokenRequestDispatcherConfig load(OMElement configElem) throws TrustException {
+
+        if (!DISPATCHER_CONFIG.equals(configElem.getQName())) {
+            throw new TrustException("incorrectConfiguration");
+        }
+        TokenRequestDispatcherConfig conf = new TokenRequestDispatcherConfig();
+
+        // Issuers
+        handleIssuers(configElem, conf);
+
+        // Cancelers
+        handleCancelers(configElem, conf);
+
+        //There must be a defulat issuer
+        if (conf.defaultIssuerClassName == null) {
+            throw new TrustException("defaultIssuerMissing");
+        }
+        return conf;
+    }
+
+    private static void handleCancelers(OMElement configElem,
+                                        TokenRequestDispatcherConfig conf) throws TrustException {
+
+        OMElement cancelerEle = configElem.getFirstChildWithName(CANCELER); // support only one canceler
+        if (cancelerEle != null) {
+            //get the class attr
+            String cancelerClass = cancelerEle.getAttributeValue(CLASS_ATTR);
+            if (cancelerClass == null) {
+                throw new TrustException("missingClassName");
+            }
+            conf.defaultCancelerClassName = cancelerClass;
+            processConfiguration(cancelerEle, conf, cancelerClass);
+        }
+
+        //TODO: imple
+    }
+
+    private static void handleIssuers(OMElement configElem,
+                                      TokenRequestDispatcherConfig conf) throws TrustException {
+        for (Iterator issuerElems = configElem.getChildrenWithName(ISSUER);
+             issuerElems.hasNext();) {
+
+            OMElement element = (OMElement) issuerElems.next();
+
+            //get the class attr
+            String issuerClass = element.getAttributeValue(CLASS_ATTR);
+            if (issuerClass == null) {
+                throw new TrustException("missingClassName");
+            }
+            String isDefault = element.getAttributeValue(DEFAULT_ATTR);
+            if (isDefault != null && "true".equalsIgnoreCase(isDefault)) {
+                //Use the first default issuer as the default isser
+                if (conf.defaultIssuerClassName == null) {
+                    conf.defaultIssuerClassName = issuerClass;
+                } else {
+                    throw new TrustException("badDispatcherConfigMultipleDefaultIssuers");
+                }
+            }
+
+            processConfiguration(element, conf, issuerClass);
+
+            //Process token types
+            for (Iterator tokenTypes = element.getChildrenWithName(TOKEN_TYPE);
+                 tokenTypes.hasNext();) {
+                OMElement type = (OMElement) tokenTypes.next();
+                String value = type.getText();
+                if (value == null || value.trim().length() == 0) {
+                    throw new TrustException("invalidTokenTypeDefinition",
+                                             new String[]{"Issuer", issuerClass});
+                }
+                if (conf.issuers == null) {
+                    conf.issuers = new Hashtable();
+                }
+                //If the token type is not aleady declared then add it to the
+                //table with the issuer classname
+                if (!conf.issuers.keySet().contains(value)) {
+                    conf.issuers.put(value, issuerClass);
+                }
+            }
+        }
+    }
+
+    private static void processConfiguration(OMElement element,
+                                             TokenRequestDispatcherConfig conf,
+                                             String implClass) {
+
+        for (Iterator configs = element.getChildrenWithName(CONFIGURATION_ELEMENT);
+             configs.hasNext();) {
+            OMElement configEle = (OMElement) configs.next();
+            String configType =
+                    configEle.getAttribute(new QName("type")).getAttributeValue().trim();
+            if (configType.equalsIgnoreCase("file")) { //Process configuration file information
+                String issuerConfigFile = configEle.getText();
+                if (issuerConfigFile != null) {
+                    conf.configFiles.put(implClass, issuerConfigFile);
+                }
+            } else if (configType.equalsIgnoreCase("element"))
+            { //Process configuration element information
+                conf.configElements.put(implClass, configEle);
+            } else if (configType.equalsIgnoreCase("parameter"))
+            { //Process configuration parameter name information
+                conf.configParamNames.put(implClass, configEle.getText());
+            }
+        }
+    }
+
+    public static TokenRequestDispatcherConfig load(String configFilePath) throws TrustException {
+        FileInputStream fis;
+        StAXOMBuilder builder;
+        try {
+            fis = new FileInputStream(configFilePath);
+            builder = new StAXOMBuilder(fis);
+        } catch (Exception e) {
+            throw new TrustException("errorLoadingConfigFile", new String[]{configFilePath});
+        }
+        return load(builder.getDocumentElement());
+    }
+
+    public TokenIssuer getDefaultIssuerInstace() throws TrustException {
+        if (this.defaultIssuerClassName != null) {
+            try {
+                return createIssuer(this.defaultIssuerClassName);
+            } catch (Exception e) {
+                throw new TrustException("cannotLoadClass",
+                                         new String[]{this.defaultIssuerClassName}, e);
+            }
+        } else {
+            return null;
+        }
+    }
+
+    public TokenCanceler getDefaultCancelerInstance() throws TrustException {
+        if (this.defaultCancelerClassName != null) {
+            try {
+                return createCanceler(this.defaultCancelerClassName);
+            } catch (Exception e) {
+                throw new TrustException("cannotLoadClass",
+                                         new String[]{this.defaultCancelerClassName}, e);
+            }
+        } else {
+            return null;
+        }
+    }
+
+    public String getDefaultIssuerName() {
+        return this.defaultIssuerClassName;
+    }
+
+
+    public TokenIssuer getIssuer(String tokenType) throws TrustException {
+        String issuerClassName = null;
+        //try to find the issuer class name from the tokenType<->issuer map
+        if (this.issuers != null) {
+            issuerClassName = (String) this.issuers.get(tokenType);
+        }
+        //If a specific issuer is not found use the default issuer
+        if (issuerClassName == null) {
+            issuerClassName = this.defaultIssuerClassName;
+        }
+        try {
+            return createIssuer(issuerClassName);
+        } catch (Exception e) {
+            throw new TrustException("cannotLoadClass",
+                                     new String[]{this.defaultIssuerClassName}, e);
+        }
+    }
+
+    /**
+     * @param issuerClassName
+     * @return TokenIssuer
+     */
+    private TokenIssuer createIssuer(String issuerClassName) throws Exception {
+        TokenIssuer issuer = (TokenIssuer) Loader.loadClass(issuerClassName).newInstance();
+        issuer.setConfigurationElement((OMElement) this.configElements.get(issuerClassName));
+        issuer.setConfigurationFile((String) this.configFiles.get(issuerClassName));
+        issuer.setConfigurationParamName((String) this.configParamNames.get(issuerClassName));
+        return issuer;
+    }
+
+    private TokenCanceler createCanceler(String cancelerClassName) throws Exception {
+        TokenCanceler canceler = (TokenCanceler) Loader.loadClass(cancelerClassName).newInstance();
+        canceler.setConfigurationElement((OMElement) this.configElements.get(cancelerClassName));
+        canceler.setConfigurationFile((String) this.configFiles.get(cancelerClassName));
+        canceler.setConfigurationParamName((String) this.configParamNames.get(cancelerClassName));
+        return canceler;
+    }
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenStorage.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenStorage.java
new file mode 100644
index 0000000..cc9d656
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenStorage.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+
+/**
+ * The storage interface to store security tokens and
+ * manipulate them  
+ */
+public interface TokenStorage {
+    
+    String TOKEN_STORAGE_KEY = "org.apache.rahas.TokenStorage";
+    
+    /**
+     * Add the given token to the list.
+     * @param token The token to be added
+     * @throws TrustException
+     */
+    void add(Token token) throws TrustException;
+    
+    /**
+     * Update an existing token.
+     * @param token
+     * @throws TrustException
+     */
+    void update(Token token) throws TrustException;
+    
+    /**
+     * Return the list of all token identifiers.
+     * @return As array of token identifiers
+     * @throws TrustException
+     */
+    String[] getTokenIdentifiers() throws TrustException;
+
+    /**
+     * Return the list of <code>EXPIRED</code> tokens.
+     * If there are no <code>EXPIRED</code> tokens <code>null</code> will be 
+     * returned
+     * @return An array of expired <code>Tokens</code>
+     * @throws TrustException
+     */
+    Token[] getExpiredTokens() throws TrustException;
+    
+    /**
+     * Return the list of ISSUED and RENEWED tokens.
+     * @return An array of ISSUED and RENEWED <code>Tokens</code>.
+     * @throws TrustException
+     */
+    Token[] getValidTokens() throws TrustException;
+    
+    /**
+     * Return the list of RENEWED tokens.
+     * @return An array of RENEWED <code>Tokens</code>
+     * @throws TrustException
+     */
+    Token[] getRenewedTokens() throws TrustException;
+    
+    /**
+     * Return the list of CANCELLED tokens
+     * @return An array of CANCELLED <code>Tokens</code>
+     * @throws TrustException
+     */
+    Token[] getCancelledTokens() throws TrustException;
+    
+    /**
+     * Returns the <code>Token</code> of the given id
+     * @param id
+     * @return The requested <code>Token</code> identified by the give id
+     * @throws TrustException
+     */
+    Token getToken(String id) throws TrustException;
+    
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenValidator.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenValidator.java
new file mode 100644
index 0000000..9626ce7
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TokenValidator.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+
+public interface TokenValidator {
+
+    /**
+     * Validate the token specified in the given request.
+     * 
+     * @param data
+     *            A populated <code>RahasData</code> instance
+     * @return Response SOAPEnveloper
+     * @throws TrustException
+     */
+    public SOAPEnvelope validate(RahasData data) throws TrustException;
+
+    /**
+     * Set the configuration file of this TokenValidator.
+     * 
+     * This is the text value of the &lt;configuration-file&gt; element of the
+     * token-dispatcher-configuration
+     * 
+     * @param configFile
+     */
+    public void setConfigurationFile(String configFile);
+
+    /**
+     * Set the configuration element of this TokenValidator.
+     * 
+     * This is the &lt;configuration&gt; element of the
+     * token-dispatcher-configuration
+     * 
+     * @param configElement
+     *            <code>OMElement</code> representing the configuation
+     */
+    public void setConfigurationElement(String configElement);
+
+    /**
+     * Set the name of the configuration parameter.
+     * 
+     * If this is used then there must be a
+     * <code>org.apache.axis2.description.Parameter</code> object available in
+     * the via the messageContext when the <code>TokenIssuer</code> is called.
+     * 
+     * @see org.apache.axis2.description.Parameter
+     * @param configParamName
+     */
+    public void setConfigurationParamName(String configParamName);
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TrustException.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TrustException.java
new file mode 100644
index 0000000..39a6ccc
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TrustException.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class TrustException extends Exception {
+
+    private static final long serialVersionUID = -445341784514373965L;
+
+    public final static String INVALID_REQUEST = "InvalidRequest";
+    public final static String FAILED_AUTHENTICATION = "FailedAuthentication";
+    public final static String REQUEST_FAILED = "RequestFailed";
+    public final static String INVALID_SECURITY_TOKEN = "InvalidSecurityToken";
+    public final static String AUTHENTICATION_BAD_ELEMENTS = "AuthenticationBadElements";
+    public final static String BAD_REQUEST = "BadRequest";
+    public final static String EXPIRED_DATA = "ExpiredData";
+    public final static String INVALID_TIME_RANGE = "InvalidTimeRange";
+    public final static String INVALID_SCOPE = "InvalidScope";
+    public final static String RENEW_NEEDED = "RenewNeeded";
+    public final static String UNABLE_TO_RENEW = "UnableToRenew";
+    
+    
+    private static ResourceBundle resources;
+
+    private String faultCode;
+    private String faultString;
+    
+    static {
+        try {
+            resources = ResourceBundle.getBundle("org.apache.rahas.errors");
+        } catch (MissingResourceException e) {
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+    
+    public TrustException(String faultCode, Object[] args) {
+        super(getMessage(faultCode, args));
+        this.faultCode = getFaultCode(faultCode);
+        this.faultString = getMessage(faultCode, args);
+    }
+    
+    /**
+     * Construct the fault properly code for the standard faults
+     * @param faultCode2
+     * @return
+     */
+    private String getFaultCode(String code) {
+        if(AUTHENTICATION_BAD_ELEMENTS.equals(code) ||
+           BAD_REQUEST.equals(code) ||
+           EXPIRED_DATA.equals(code) ||
+           FAILED_AUTHENTICATION.equals(code) ||
+           INVALID_REQUEST.equals(code) ||
+           INVALID_SCOPE.equals(code) ||
+           INVALID_SECURITY_TOKEN.equals(code) ||
+           INVALID_TIME_RANGE.equals(code) ||
+           RENEW_NEEDED.equals(code) ||
+           REQUEST_FAILED.equals(code) ||
+           UNABLE_TO_RENEW.equals(code)) {
+            return RahasConstants.WST_PREFIX + ":" + code;
+        } else {
+            return code;
+        }
+    }
+
+    public TrustException(String faultCode) {
+        this(faultCode, (Object[])null);
+    }
+    
+    public TrustException(String faultCode, Object[] args, Throwable e) {
+        super(getMessage(faultCode, args),e);
+        this.faultCode = faultCode;
+        this.faultString = getMessage(faultCode, args);
+    }
+    
+    public TrustException(String faultCode, Throwable e) {
+        this(faultCode, null, e);
+    }
+
+    /**
+     * get the message from resource bundle.
+     * <p/>
+     *
+     * @return the message translated from the property (message) file.
+     */
+    protected static String getMessage(String faultCode, Object[] args) {
+        String msg = null;
+        try {
+            msg = MessageFormat.format(resources.getString(faultCode), args);
+        } catch (MissingResourceException e) {
+            throw new RuntimeException("Undefined '" + faultCode + "' resource property");
+        }
+        if(msg != null) {
+            return msg;
+        } else {
+            return faultCode;
+        }
+    }
+
+    /**
+     * @return Returns the faultCode.
+     */
+    protected String getFaultCode() {
+        return faultCode;
+    }
+
+    /**
+     * @return Returns the faultString.
+     */
+    protected String getFaultString() {
+        return faultString;
+    }
+    
+    
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/TrustUtil.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/TrustUtil.java
new file mode 100644
index 0000000..e14cc43
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/TrustUtil.java
@@ -0,0 +1,503 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.message.token.Reference;
+import org.apache.ws.security.message.token.SecurityTokenReference;
+import org.apache.ws.security.util.XmlSchemaDateFormat;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.namespace.QName;
+
+import java.security.SecureRandom;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Properties;
+import java.util.Iterator;
+
+public class TrustUtil {
+    private static final String WSSE_NAMESPACE_URI =
+            "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
+    private static final String WSSE_PREFIX = "wsse";
+    private static final QName PROVIDER = new QName("provider");
+    private static final QName NAME = new QName("name");
+
+    /**
+     * Create a wsse:Reference element with the given uri and the value type
+     *
+     * @param doc
+     * @param refUri
+     * @param refValueType
+     * @return Element
+     */
+    public static Element createSecurityTokenReference(Document doc,
+                                                       String refUri, String refValueType) {
+
+        Reference ref = new Reference(doc);
+        ref.setURI(refUri);
+        if (refValueType != null) {
+            ref.setValueType(refValueType);
+        }
+        SecurityTokenReference str = new SecurityTokenReference(doc);
+        str.setReference(ref);
+
+        return str.getElement();
+    }
+
+    public static OMElement
+            createRequestSecurityTokenResponseElement(int version,
+                                                      OMElement parent) throws TrustException {
+        return createOMElement(parent,
+                               getWSTNamespace(version),
+                               RahasConstants.LocalNames.REQUEST_SECURITY_TOKEN_RESPONSE,
+                               RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement
+            createRequestSecurityTokenResponseCollectionElement(int version,
+                                                                OMElement parent) throws TrustException {
+        String ns = getWSTNamespace(version);
+        return createOMElement(parent, ns,
+                               RahasConstants.LocalNames.
+                                       REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION,
+                               RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement createRequestedSecurityTokenElement(
+            int version, OMElement parent) throws TrustException {
+        String ns = getWSTNamespace(version);
+        return createOMElement(parent, ns,
+                               RahasConstants.IssuanceBindingLocalNames.REQUESTED_SECURITY_TOKEN,
+                               RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement createRequestSecurityTokenElement(int version) throws TrustException {
+        String ns = getWSTNamespace(version);
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        return fac.
+                createOMElement(RahasConstants.LocalNames.REQUEST_SECURITY_TOKEN,
+                                ns,
+                                RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement createRequestedProofTokenElement(
+            int version, OMElement parent) throws TrustException {
+        String ns = getWSTNamespace(version);
+        return createOMElement(parent, ns,
+                               RahasConstants.LocalNames.REQUESTED_PROOF_TOKEN,
+                               RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement createEntropyElement(
+            int version, OMElement parent) throws TrustException {
+        String ns = getWSTNamespace(version);
+        return createOMElement(parent, ns,
+                               RahasConstants.IssuanceBindingLocalNames.ENTROPY,
+                               RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement createComputedKeyElement(int version,
+                                                     OMElement parent) throws TrustException {
+        return createOMElement(parent,
+                               getWSTNamespace(version),
+                               RahasConstants.IssuanceBindingLocalNames.COMPUTED_KEY,
+                               RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement createRequestTypeElement(int version,
+                                                     OMElement parent,
+                                                     String value) throws TrustException {
+        String ns = getWSTNamespace(version);
+
+        OMElement elem = createOMElement(parent,
+                                         ns,
+                                         RahasConstants.LocalNames.REQUEST_TYPE,
+                                         RahasConstants.WST_PREFIX);
+
+        if (RahasConstants.REQ_TYPE_ISSUE.equals(value)
+            || RahasConstants.REQ_TYPE_CANCEL.equals(value)
+            || RahasConstants.REQ_TYPE_RENEW.equals(value)
+            || RahasConstants.REQ_TYPE_VALIDATE.equals(value)) {
+            elem.setText(ns + value);
+        } else {
+            elem.setText(value);
+        }
+
+        return elem;
+    }
+
+    public static OMElement createTokenTypeElement(int version,
+                                                   OMElement parent) throws TrustException {
+        return createOMElement(parent,
+                               getWSTNamespace(version),
+                               RahasConstants.LocalNames.TOKEN_TYPE,
+                               RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement createBinarySecretElement(
+            int version,
+            OMElement parent,
+            String type) throws TrustException {
+        String ns = getWSTNamespace(version);
+        OMElement elem = createOMElement(parent, ns,
+                                         RahasConstants.LocalNames.BINARY_SECRET,
+                                         RahasConstants.WST_PREFIX);
+        if (type != null) {
+            elem.addAttribute(elem.getOMFactory().createOMAttribute(
+                    RahasConstants.ATTR_TYPE, null, ns + type));
+        }
+        return elem;
+    }
+
+    public static OMElement createComputedKeyAlgorithm(int version,
+                                                       OMElement parent,
+                                                       String algoId) throws TrustException {
+        String ns = getWSTNamespace(version);
+        OMElement elem = createOMElement(parent,
+                                         ns,
+                                         RahasConstants.IssuanceBindingLocalNames.COMPUTED_KEY_ALGO,
+                                         RahasConstants.WST_PREFIX);
+        elem.setText(ns + algoId);
+        return elem;
+    }
+
+    public static OMElement
+            createRequestedUnattachedRef(int version,
+                                         OMElement parent,
+                                         String refUri,
+                                         String refValueType) throws TrustException {
+        String ns = getWSTNamespace(version);
+        OMElement elem = createOMElement(parent, ns,
+                                         RahasConstants.IssuanceBindingLocalNames.
+                                                 REQUESTED_UNATTACHED_REFERENCE,
+                                         RahasConstants.WST_PREFIX);
+        elem.addChild((OMElement) createSecurityTokenReference(
+                ((Element) parent).getOwnerDocument(), refUri, refValueType));
+        return elem;
+    }
+
+    public static OMElement createRequestedAttachedRef(int version,
+                                                       OMElement parent,
+                                                       String refUri,
+                                                       String refValueType) throws TrustException {
+        String ns = getWSTNamespace(version);
+        OMElement elem = createOMElement(parent, ns,
+                                         RahasConstants.IssuanceBindingLocalNames.
+                                                 REQUESTED_ATTACHED_REFERENCE,
+                                         RahasConstants.WST_PREFIX);
+        elem.addChild((OMElement) createSecurityTokenReference(
+                ((Element) parent).getOwnerDocument(), refUri, refValueType));
+        return elem;
+    }
+
+    public static OMElement createKeySizeElement(int version,
+                                                 OMElement parent,
+                                                 int size) throws TrustException {
+        String ns = getWSTNamespace(version);
+        OMElement ksElem = createOMElement(parent, ns,
+                                           RahasConstants.IssuanceBindingLocalNames.KEY_SIZE,
+                                           RahasConstants.WST_PREFIX);
+        ksElem.setText(Integer.toString(size));
+        return ksElem;
+    }
+
+    public static OMElement createKeyTypeElement(int version,
+                                                 OMElement parent,
+                                                 String type) throws TrustException {
+        String ns = getWSTNamespace(version);
+        OMElement ktElem = createOMElement(parent, ns,
+                                           RahasConstants.IssuanceBindingLocalNames.KEY_TYPE,
+                                           RahasConstants.WST_PREFIX);
+        if (RahasConstants.KEY_TYPE_BEARER.equals(type) ||
+            RahasConstants.KEY_TYPE_PUBLIC_KEY.equals(type) ||
+            RahasConstants.KEY_TYPE_SYMM_KEY.equals(type)) {
+            ktElem.setText(ns + type);
+        } else {
+            ktElem.setText(type);
+        }
+        return ktElem;
+    }
+
+    public static OMElement
+            createRequestedTokenCanceledElement(int version,
+                                                OMElement parent) throws TrustException {
+        return createOMElement(parent,
+                               getWSTNamespace(version),
+                               RahasConstants.CancelBindingLocalNames.REQUESTED_TOKEN_CANCELED,
+                               RahasConstants.WST_PREFIX);
+    }
+
+    public static OMElement createLifetimeElement(int version,
+                                                  OMElement parent,
+                                                  String created,
+                                                  String expires) throws TrustException {
+
+        String ns = getWSTNamespace(version);
+
+        OMElement ltElem = createOMElement(parent, ns,
+                                           RahasConstants.IssuanceBindingLocalNames.LIFETIME,
+                                           RahasConstants.WST_PREFIX);
+
+        OMElement createdElem = createOMElement(ltElem, WSConstants.WSU_NS,
+                                                WSConstants.CREATED_LN,
+                                                WSConstants.WSU_PREFIX);
+        createdElem.setText(created);
+
+        OMElement expiresElem = createOMElement(ltElem, WSConstants.WSU_NS,
+                                                WSConstants.EXPIRES_LN,
+                                                WSConstants.WSU_PREFIX);
+        expiresElem.setText(expires);
+
+        return ltElem;
+    }
+
+    public static OMElement createLifetimeElement(int version,
+                                                  OMElement parent,
+                                                  long ttl) throws TrustException {
+
+        Date creationTime = new Date();
+        Date expirationTime = new Date();
+        expirationTime.setTime(creationTime.getTime() + ttl);
+
+        DateFormat zulu = new XmlSchemaDateFormat();
+
+        return createLifetimeElement(version,
+                                     parent,
+                                     zulu.format(creationTime),
+                                     zulu.format(expirationTime));
+    }
+
+    public static OMElement createAppliesToElement(OMElement parent,
+                                                   String address, String addressingNs) {
+        OMElement appliesToElem = createOMElement(parent,
+                                                  RahasConstants.WSP_NS,
+                                                  RahasConstants.IssuanceBindingLocalNames.
+                                                          APPLIES_TO,
+                                                  RahasConstants.WSP_PREFIX);
+
+        OMElement eprElem = createOMElement(appliesToElem,
+                                            addressingNs,
+                                            "EndpointReference",
+                                            AddressingConstants.WSA_DEFAULT_PREFIX);
+        OMElement addressElem = createOMElement(eprElem, addressingNs,
+                                                AddressingConstants.EPR_ADDRESS,
+                                                AddressingConstants.WSA_DEFAULT_PREFIX);
+        addressElem.setText(address);
+
+        return appliesToElem;
+    }
+
+    public static String getActionValue(int version, String action) throws TrustException {
+        if (RahasConstants.RST_ACTION_ISSUE.equals(action) ||
+            RahasConstants.RST_ACTION_CANCEL.equals(action) ||
+            RahasConstants.RST_ACTION_RENEW.equals(action) ||
+            RahasConstants.RST_ACTION_VALIDATE.equals(action) ||
+            RahasConstants.RST_ACTION_SCT.equals(action) ||
+            RahasConstants.RSTR_ACTION_ISSUE.equals(action) ||
+            RahasConstants.RSTR_ACTION_CANCEL.equals(action) ||
+            RahasConstants.RSTR_ACTION_RENEW.equals(action) ||
+            RahasConstants.RSTR_ACTION_VALIDATE.equals(action) ||
+            RahasConstants.RSTR_ACTION_SCT.equals(action)) {
+
+            return getWSTNamespace(version) + action;
+        }
+        return action;
+    }
+
+    /**
+     * Create a new <code>SOAPEnvelope</code> of the same version as the
+     * SOAPEnvelope in the given <code>MessageContext</code>
+     *
+     * @param nsUri
+     * @return SOAPEnvelope
+     */
+    public static SOAPEnvelope createSOAPEnvelope(String nsUri) {
+        if (nsUri != null
+            && SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsUri)) {
+            return DOOMAbstractFactory.getSOAP11Factory().getDefaultEnvelope();
+        } else {
+            return DOOMAbstractFactory.getSOAP12Factory().getDefaultEnvelope();
+        }
+    }
+
+
+    private static OMElement createOMElement(OMElement parent,
+                                             String ns,
+                                             String ln,
+                                             String prefix) {
+        return parent.getOMFactory().createOMElement(new QName(ns, ln, prefix),
+                                                     parent);
+    }
+
+    public static String getWSTNamespace(int version) throws TrustException {
+        switch (version) {
+            case RahasConstants.VERSION_05_02:
+                return RahasConstants.WST_NS_05_02;
+            case RahasConstants.VERSION_05_12:
+                return RahasConstants.WST_NS_05_12;
+            default:
+                throw new TrustException("unsupportedWSTVersion");
+        }
+    }
+
+    public static int getWSTVersion(String ns) throws TrustException {
+        if (RahasConstants.WST_NS_05_02.equals(ns)) {
+            return RahasConstants.VERSION_05_02;
+        } else if (RahasConstants.WST_NS_05_12.equals(ns)) {
+            return RahasConstants.VERSION_05_12;
+        } else {
+            throw new TrustException("unsupportedWSTVersion");
+        }
+    }
+
+    /**
+     * Returns the token store.
+     * If the token store is aleady available in the configuration context then
+     * fetch it and return it. If not create a new one, hook it up in the
+     * configuration context and return it
+     *
+     * @param msgCtx
+     * @return the token store
+     */
+    public static TokenStorage getTokenStore(MessageContext msgCtx) {
+        ConfigurationContext configCtx = msgCtx.getConfigurationContext();
+        TokenStorage storage =
+                (TokenStorage) configCtx.getProperty(TokenStorage.TOKEN_STORAGE_KEY);
+        if (storage == null) {
+            storage = new SimpleTokenStore();
+            configCtx.setProperty(TokenStorage.TOKEN_STORAGE_KEY, storage);
+        }
+        return storage;
+    }
+
+
+    /**
+     * Create an ephemeral key
+     *
+     * @return The generated ephemeral key
+     * @throws TrustException
+     */
+    protected byte[] generateEphemeralKey(int keySize) throws TrustException {
+        try {
+            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
+            byte[] temp = new byte[keySize / 8];
+            random.nextBytes(temp);
+            return temp;
+        } catch (Exception e) {
+            throw new TrustException("Error in creating the ephemeral key", e);
+        }
+    }
+
+    /**
+     * Create an ephemeral key
+     *
+     * @return The generated ephemeral key
+     * @throws TrustException
+     */
+    protected byte[] generateEphemeralKey(byte[] reqEnt,
+                                          byte[] respEnt,
+                                          String algo,
+                                          int keySize) throws TrustException {
+        try {
+            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
+            byte[] temp = new byte[keySize / 8];
+            random.nextBytes(temp);
+            return temp;
+        } catch (Exception e) {
+            throw new TrustException("Error in creating the ephemeral key", e);
+        }
+    }
+
+    public static OMElement createCancelTargetElement(int version,
+                                                      OMElement parent) throws TrustException {
+        return createOMElement(parent,
+                               getWSTNamespace(version),
+                               RahasConstants.CancelBindingLocalNames.CANCEL_TARGET,
+                               RahasConstants.WST_PREFIX);
+
+    }
+
+    public static OMElement createCancelRequest(String tokenId,
+                                                int version) throws TrustException {
+        /*
+       <wst:RequestSecurityToken>
+            <wst:RequestType>
+            http://schemas.xmlsoap.org/ws/2005/02/trust/Cancel
+            </wst:RequestType>
+            <wst:CancelTarget>
+                    <o:SecurityTokenReference
+                         xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
+                      <o:Reference URI="urn:uuid:8e6a3a95-fd1b-4c24-96d4-28e875025ff7"
+                                   ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" />
+                    </o:SecurityTokenReference>
+            </wst:CancelTarget>
+        </wst:RequestSecurityToken>
+        */
+        OMElement rst = TrustUtil.createRequestSecurityTokenElement(version);
+        TrustUtil.createRequestTypeElement(version, rst, RahasConstants.REQ_TYPE_CANCEL);
+        OMElement cancelTargetEle = TrustUtil.createCancelTargetElement(version, rst);
+        OMFactory factory = rst.getOMFactory();
+        OMElement secTokenRefEle =
+                factory.createOMElement(RahasConstants.CancelBindingLocalNames.SECURITY_TOKEN_REF,
+                                        WSSE_NAMESPACE_URI,
+                                        WSSE_PREFIX);
+        OMElement refEle =
+                factory.createOMElement(RahasConstants.CancelBindingLocalNames.REFERENCE,
+                                        WSSE_NAMESPACE_URI,
+                                        WSSE_PREFIX);
+        refEle.addAttribute(factory.createOMAttribute(RahasConstants.CancelBindingLocalNames.URI,
+                                                      null, tokenId));
+        secTokenRefEle.addChild(refEle);
+        cancelTargetEle.addChild(secTokenRefEle);
+
+        return rst;
+    }
+
+    public static Properties toProperties(OMElement cryptoElem) {
+        Properties properties = new Properties();
+
+        /*
+           Process an element similar to this;
+
+                <crypto provider="org.apache.ws.security.components.crypto.Merlin">
+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">jks</property>
+                    <property name="org.apache.ws.security.crypto.merlin.file">sts.jks</property>
+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>
+                </crypto>
+        */
+        for (Iterator propIter = cryptoElem.getChildElements(); propIter.hasNext();) {
+            OMElement propElem = (OMElement) propIter.next();
+            String name = propElem.getAttribute(NAME).getAttributeValue().trim();
+            String value = propElem.getText().trim();
+            properties.setProperty(name, value);
+        }
+        properties.setProperty("org.apache.ws.security.crypto.provider",
+                               cryptoElem.getAttribute(PROVIDER).getAttributeValue().trim());
+        return properties;
+    }
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/client/STSClient.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/client/STSClient.java
new file mode 100644
index 0000000..c50c752
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/client/STSClient.java
@@ -0,0 +1,618 @@
+/*
+ * Copyright 2004,2005 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.rahas.client;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axiom.om.util.Base64;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.util.UUIDGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Policy;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.Token;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.ws.secpolicy.model.AlgorithmSuite;
+import org.apache.ws.secpolicy.model.Binding;
+import org.apache.ws.secpolicy.model.Trust10;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSPasswordCallback;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.components.crypto.Crypto;
+import org.apache.ws.security.conversation.ConversationException;
+import org.apache.ws.security.conversation.dkalgo.P_SHA1;
+import org.apache.ws.security.message.token.Reference;
+import org.apache.ws.security.processor.EncryptedKeyProcessor;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.w3c.dom.Element;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.xml.namespace.QName;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+public class STSClient {
+
+    private static final String RAMPART_POLICY = "rampartPolicy";
+
+    private static Log log = LogFactory.getLog(STSClient.class);
+
+    private String action;
+
+    private OMElement rstTemplate;
+
+    private int version = RahasConstants.VERSION_05_02;
+
+    private Options options;
+
+    private Trust10 trust10;
+
+    private AlgorithmSuite algorithmSuite;
+
+    private byte[] requestorEntropy;
+
+    private String addressingNs = AddressingConstants.Final.WSA_NAMESPACE;
+
+    private int keySize;
+    
+    private String soapVersion = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+
+    /**
+     * Life time in seconds
+     * Default is 300 seconds (5 mins)
+     */
+    private int ttl = 300;
+    private Crypto crypto;
+    private CallbackHandler cbHandler;
+    private ConfigurationContext configCtx;
+
+    public STSClient(ConfigurationContext configCtx) throws TrustException {
+        if (configCtx != null) {
+            this.configCtx = configCtx;
+        } else {
+            throw new TrustException("stsClientCfgCtxNull");
+        }
+    }
+
+    public Token requestSecurityToken(Policy servicePolicy,
+                                      String issuerAddress,
+                                      Policy issuerPolicy,
+                                      String appliesTo) throws TrustException {
+        try {
+            QName rstQn = new QName("requestSecurityToken");
+            String requestType =
+                    TrustUtil.getWSTNamespace(version) + RahasConstants.REQ_TYPE_ISSUE;
+            
+            ServiceClient client = getServiceClient(rstQn, issuerAddress);
+            
+            client.getOptions().setProperty(RAMPART_POLICY, issuerPolicy);
+            client.getOptions().setSoapVersionURI(this.soapVersion); 
+
+            //Process the STS and service policy policy
+            this.processPolicy(issuerPolicy, servicePolicy);
+            OMElement response = client.sendReceive(rstQn,
+                                                    createIssueRequest(requestType, appliesTo));
+
+            return processIssueResponse(version, response);
+        } catch (AxisFault e) {
+            e.printStackTrace();
+            log.error("errorInObtainingToken", e);
+            throw new TrustException("errorInObtainingToken", new String[]{issuerAddress});
+        }
+    }
+
+    /**
+     * Cancel a particular security token
+     *
+     * @param issuerAddress
+     * @param tokenId
+     * @return true is the Token was successfully cancelled. False otherwise.
+     * @throws TrustException
+     */
+    public boolean cancelToken(String issuerAddress,
+                               String tokenId,
+                               String action) throws TrustException {
+        try {
+            QName rstQn = new QName("cancelSecurityToken");
+            ServiceClient client = getServiceClient(rstQn, issuerAddress);
+            if(action != null) {
+                client.getOptions().setAction(action);
+            }
+            
+            return processCancelResponse(client.sendReceive(rstQn,
+                                                            createCancelRequest(tokenId)));
+        } catch (AxisFault e) {
+            log.error("errorInCancelingToken", e);
+            throw new TrustException("errorInCancelingToken", e);
+        }
+    }
+    
+    private ServiceClient getServiceClient(QName rstQn,
+                                           String issuerAddress) throws AxisFault {
+        AxisService axisService =
+                new AxisService("SecurityTokenService" + UUIDGenerator.getUUID());
+        axisService.setClientSide(true);
+        AxisOperation operation = new OutInAxisOperation(rstQn);
+        axisService.addOperation(operation);
+        ServiceClient client = new ServiceClient(this.configCtx, axisService);
+
+        if (this.options != null) {
+            client.setOptions(options);
+        }
+
+        //Set the action
+        client.getOptions().setAction(action);
+        client.getOptions().setTo(new EndpointReference(issuerAddress));
+        client.engageModule(new QName("rampart"));
+        return client;
+    }
+
+    /**
+     * @param result
+     * @return Token
+     */
+    private Token processIssueResponse(int version, OMElement result) throws TrustException {
+        OMElement rstr = result;
+        if (version == RahasConstants.VERSION_05_12) {
+            //The WS-SX result will be an RSTRC
+            rstr = result.getFirstElement();
+        }
+
+        String ns = TrustUtil.getWSTNamespace(version);
+
+        //Get the RequestedAttachedReference
+        OMElement reqAttElem = rstr.getFirstChildWithName(new QName(
+                ns, RahasConstants.IssuanceBindingLocalNames.REQUESTED_ATTACHED_REFERENCE));
+        OMElement reqAttRef = reqAttElem == null ? null : reqAttElem.getFirstElement();
+
+        //Get the RequestedUnattachedReference
+        OMElement reqUnattElem =
+                rstr.getFirstChildWithName(new QName(ns,
+                                                     RahasConstants.IssuanceBindingLocalNames.
+                                                             REQUESTED_UNATTACHED_REFERENCE));
+        OMElement reqUnattRef = reqUnattElem == null ? null : reqUnattElem.getFirstElement();
+
+        //Get the security token
+        OMElement reqSecTok =
+                rstr.getFirstChildWithName(new QName(ns,
+                                                     RahasConstants.IssuanceBindingLocalNames.
+                                                             REQUESTED_SECURITY_TOKEN));
+        if (reqSecTok == null) {
+            throw new TrustException("reqestedSecTokMissing");
+        }
+
+        OMElement tokenElem = reqSecTok.getFirstElement();
+
+        String id = this.findIdentifier(reqAttRef, reqUnattRef, tokenElem);
+
+        if (id == null) {
+            throw new TrustException("cannotObtainTokenIdentifier");
+        }
+
+        OMElement lifeTimeEle =
+                rstr.getFirstChildWithName(new QName(ns,
+                                                     RahasConstants.IssuanceBindingLocalNames.
+                                                             LIFETIME));
+
+        Token token = new Token(id, tokenElem, lifeTimeEle);
+        token.setAttachedReference(reqAttRef);
+        token.setUnattachedReference(reqUnattRef);
+
+        //Handle proof token
+        OMElement rpt =
+                rstr.getFirstChildWithName(new QName(ns,
+                                                     RahasConstants.LocalNames.
+                                                             REQUESTED_PROOF_TOKEN));
+
+        byte[] secret = null;
+
+        if (rpt != null) {
+            OMElement child = rpt.getFirstElement();
+            if (child == null) {
+                throw new TrustException("invalidRPT");
+            }
+            if (child.getQName().equals(new QName(ns,
+                                                  RahasConstants.LocalNames.
+                                                          BINARY_SECRET))) {
+                //First check for the binary secret
+                String b64Secret = child.getText();
+                secret = Base64.decode(b64Secret);
+            } else if (child.getQName().equals(new QName(ns, WSConstants.ENC_KEY_LN))) {
+                try {
+                    Element domChild = (Element) new StAXOMBuilder(
+                            DOOMAbstractFactory.getOMFactory(), child
+                            .getXMLStreamReader()).getDocumentElement();
+
+                    EncryptedKeyProcessor processor = new EncryptedKeyProcessor();
+
+                    processor.handleToken(domChild, null, this.crypto,
+                                          this.cbHandler, null, new Vector(),
+                                          null);
+
+                    secret = processor.getDecryptedBytes();
+                } catch (WSSecurityException e) {
+                    throw new TrustException("errorInProcessingEncryptedKey", e);
+                }
+            } else if (child.getQName().equals(new QName(ns,
+                                                         RahasConstants.IssuanceBindingLocalNames.
+                                                                 COMPUTED_KEY))) {
+                //Handle the computed key
+
+                //Get service entropy
+                OMElement serviceEntrElem = rstr
+                        .getFirstChildWithName(new QName(ns,
+                                                         RahasConstants.IssuanceBindingLocalNames.
+                                                                 ENTROPY));
+
+                OMElement binSecElem = serviceEntrElem.getFirstElement();
+
+                if (binSecElem != null && binSecElem.getText() != null
+                    && !"".equals(binSecElem.getText().trim())) {
+
+                    byte[] serviceEntr = Base64.decode(binSecElem.getText());
+
+                    //Right now we only use PSHA1 as the computed key algo                    
+                    P_SHA1 p_sha1 = new P_SHA1();
+
+                    int length = (this.keySize > 0) ? keySize
+                                 : this.algorithmSuite
+                            .getMaximumSymmetricKeyLength();
+                    try {
+                        secret = p_sha1.createKey(this.requestorEntropy, serviceEntr, 0, length/8);
+                    } catch (ConversationException e) {
+                        throw new TrustException("keyDerivationError", e);
+                    }
+                } else {
+                    //Service entropy missing
+                    throw new TrustException("serviceEntropyMissing");
+                }
+            }
+
+        } else {
+            if (this.requestorEntropy != null) {
+                //Use requestor entropy as the key
+                secret = this.requestorEntropy;
+            }
+        }
+        token.setSecret(secret);
+        return token;
+    }
+
+    private boolean processCancelResponse(OMElement response) {
+        /*
+        <wst:RequestSecurityTokenResponse>
+            <wst:RequestedTokenCancelled/>
+        </wst:RequestSecurityTokenResponse>
+        */
+        return response.
+                getFirstChildWithName(new QName(RahasConstants.
+                        CancelBindingLocalNames.REQUESTED_TOKEN_CANCELED)) != null;
+    }
+
+    /**
+     * Find the token identifier.
+     *
+     * @param reqAttRef
+     * @param reqUnattRef
+     * @param token
+     * @return id
+     */
+    private String findIdentifier(OMElement reqAttRef,
+                                  OMElement reqUnattRef,
+                                  OMElement token) {
+        String id;
+        if (reqAttRef != null) {
+            //First try the attached ref
+            id = this.getIdFromSTR(reqAttRef);
+        } else if (reqUnattRef != null) {
+            //then try the unattached ref
+            id = this.getIdFromSTR(reqUnattRef);
+        } else {
+            //Return wsu:Id of the token element
+            id = token.getAttributeValue(new QName(WSConstants.WSU_NS, "Id"));
+        }
+        return id;
+    }
+
+
+    /**
+     * Process the given STR to find the id it refers to
+     *
+     * @param refElem
+     * @return id
+     */
+    private String getIdFromSTR(OMElement refElem) {
+        //ASSUMPTION:SecurityTokenReference/KeyIdentifier
+        OMElement child = refElem.getFirstElement();
+        if(child == null) {
+            return null;
+        }
+        
+        if (child.getQName().equals(new QName(WSConstants.SIG_NS, "KeyInfo"))) {
+            return child.getText();
+        } else if(child.getQName().equals(Reference.TOKEN)) {
+            return child.getAttributeValue(new QName("URI"));
+        } else {
+            return null;
+        }
+
+    }
+
+    /**
+     * Process the goven service policy and extract the info required to create
+     * the RST.
+     *
+     * @param servicePolicy
+     */
+    private void processPolicy(Policy issuerPolicy, Policy servicePolicy) {
+        //Get the policy assertions
+        //Assumption: there's only one alternative
+
+        if (issuerPolicy != null) {
+            log.debug("Processing Issuer policy");
+
+            List issuerAssertions = (List) issuerPolicy.getAlternatives().next();
+
+            for (Iterator iter = issuerAssertions.iterator(); iter.hasNext();) {
+                Assertion tempAssertion = (Assertion) iter.next();
+                //find the AlgorithmSuite assertion
+                if (tempAssertion instanceof Binding) {
+
+                    log.debug("Extracting algo suite from issuer " +
+                              "policy binding");
+
+                    this.algorithmSuite = ((Binding) tempAssertion)
+                            .getAlgorithmSuite();
+                }
+            }
+        }
+
+        if (servicePolicy != null) {
+
+            log.debug("Processing service policy to find Trust10 assertion");
+
+            List assertions = (List) servicePolicy.getAlternatives().next();
+
+            for (Iterator iter = assertions.iterator(); iter.hasNext();) {
+                Assertion tempAssertion = (Assertion) iter.next();
+                //find the Trust10 assertion
+                if (tempAssertion instanceof Trust10) {
+                    log.debug("Extracting Trust10 assertion from " +
+                              "service policy");
+                    this.trust10 = (Trust10) tempAssertion;
+                }
+            }
+        }
+    }
+
+    /**
+     * Create the RST request.
+     *
+     * @param requestType
+     * @param appliesTo
+     * @return OMElement
+     * @throws TrustException
+     */
+    private OMElement createIssueRequest(String requestType,
+                                         String appliesTo) throws TrustException {
+
+        log.debug("Creating request with request type: " + requestType +
+                  " and applies to: " + appliesTo);
+
+        OMElement rst = TrustUtil.createRequestSecurityTokenElement(version);
+
+        TrustUtil.createRequestTypeElement(this.version, rst, requestType);
+        if (appliesTo != null) {
+            TrustUtil.createAppliesToElement(rst, appliesTo, this.addressingNs);
+        }
+        TrustUtil.createLifetimeElement(this.version, rst, this.ttl * 1000);
+
+        //Copy over the elements from the template
+        if (this.rstTemplate != null) {
+
+            log.debug("Using RSTTemplate: " + this.rstTemplate.toString());
+
+            Iterator templateChildren = rstTemplate.getChildElements();
+            while (templateChildren.hasNext()) {
+                OMNode child = (OMNode) templateChildren.next();
+                rst.addChild(child);
+                //Look for the key size element
+                if (child instanceof OMElement
+                    && ((OMElement) child).getQName().equals(
+                        new QName(TrustUtil.getWSTNamespace(this.version),
+                                  RahasConstants.IssuanceBindingLocalNames.KEY_SIZE))) {
+                    log.debug("Extracting key size from the RSTTemplate: ");
+                    OMElement childElem = (OMElement) child;
+                    this.keySize =
+                            (childElem.getText() != null && !"".equals(childElem.getText())) ?
+                            Integer.parseInt(childElem.getText()) :
+                            -1;
+                    log.debug("Key size from RSTTemplate: " + this.keySize);
+                }
+            }
+        }
+
+        try {
+            // Handle entropy
+            if (this.trust10 != null) {
+
+                log.debug("Processing Trust10 assertion");
+
+                if (this.trust10.isRequireClientEntropy()) {
+
+                    log.debug("Requires client entropy");
+
+                    // setup requestor entropy
+                    OMElement ent = TrustUtil.createEntropyElement(this.version, rst);
+                    OMElement binSec =
+                            TrustUtil.createBinarySecretElement(this.version,
+                                                                ent,
+                                                                RahasConstants.BIN_SEC_TYPE_NONCE);
+                    this.requestorEntropy =
+                            WSSecurityUtil.generateNonce(this.algorithmSuite.
+                                    getMaximumSymmetricKeyLength());
+                    binSec.setText(Base64.encode(this.requestorEntropy));
+
+                    log.debug("Clien entropy : "
+                              + Base64.encode(this.requestorEntropy));
+
+                    // Add the ComputedKey element
+                    TrustUtil.createComputedKeyAlgorithm(this.version, rst,
+                                                         RahasConstants.COMPUTED_KEY_PSHA1);
+
+                }
+            }
+        } catch (Exception e) {
+            throw new TrustException("errorSettingUpRequestorEntropy", e);
+        }
+
+        
+        return rst;
+        
+    }
+
+    private OMElement createCancelRequest(String tokenId) throws TrustException {
+
+        return TrustUtil.createCancelRequest(tokenId, version);
+    }
+
+    /**
+     * Set this to set the entropy configurations.
+     * If this is provided in the given policy it will be overridden.
+     *
+     * @param trust10 The trust10 to set.
+     */
+    public void setTrust10(Trust10 trust10) {
+        this.trust10 = trust10;
+    }
+
+    /**
+     * This can be used in the case where the AlgorithmSuite is not specified in
+     * the given policy.
+     * If the AlgorithmSuite exists in a binding in the policy then the value
+     * set will be overridden.
+     *
+     * @param algorithmSuite The algorithmSuite to set.
+     */
+    public void setAlgorithmSuite(AlgorithmSuite algorithmSuite) {
+        this.algorithmSuite = algorithmSuite;
+    }
+
+    /**
+     * @param addressingNs The addressingNs to set.
+     */
+    public void setAddressingNs(String addressingNs) {
+        this.addressingNs = addressingNs;
+    }
+
+    /**
+     * @param ttl The ttl to set.
+     */
+    public void setTtl(int ttl) {
+        this.ttl = ttl;
+    }
+
+    /**
+     * Sets the crypto information required to process the RSTR.
+     *
+     * @param crypto    Crypto information
+     * @param cbHandler Callback handler to provide the private key password to
+     *                  decrypt
+     */
+    public void setCryptoInfo(Crypto crypto, CallbackHandler cbHandler) {
+        this.crypto = crypto;
+        this.cbHandler = cbHandler;
+    }
+
+    /**
+     * Sets the crypto information required to process the RSTR.
+     *
+     * @param crypto        The crypto information
+     * @param privKeyPasswd Private key password to decrypt
+     */
+    public void setCryptoInfo(Crypto crypto, String privKeyPasswd) {
+        this.crypto = crypto;
+        this.cbHandler = new CBHandler(privKeyPasswd);
+    }
+
+    /**
+     * @param action The action to set.
+     */
+    public void setAction(String action) {
+        this.action = action;
+    }
+
+    /**
+     * @param options The options to set.
+     */
+    public void setOptions(Options options) {
+        this.options = options;
+    }
+
+    /**
+     * @param rstTemplate The rstTemplate to set.
+     */
+    public void setRstTemplate(OMElement rstTemplate) {
+        this.rstTemplate = rstTemplate;
+    }
+
+    private class CBHandler implements CallbackHandler {
+
+        private String passwd;
+
+        private CBHandler(String passwd) {
+            this.passwd = passwd;
+        }
+
+        public void handle(Callback[] cb) throws IOException,
+                                                 UnsupportedCallbackException {
+            ((WSPasswordCallback) cb[0]).setPassword(this.passwd);
+        }
+
+    }
+
+    /**
+     * @param version The version to set.
+     */
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public void setSoapVersion(String soapVersion) {
+        this.soapVersion = soapVersion;
+    }
+
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/errors.properties b/rampart_1_1/modules/rahas/src/org/apache/rahas/errors.properties
new file mode 100644
index 0000000..34c4bd6
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/errors.properties
@@ -0,0 +1,84 @@
+# -------------------------------------------------------------------
+# 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.
+# -------------------------------------------------------------------
+
+
+InvalidRequest = The request was invalid or malformed, \"{0}\"
+FailedAuthentication = Authentication failed
+RequestFailed = The specified request failed
+InvalidSecurityToken = Security token has been revoked
+AuthenticationBadElements = Insufficient Digest Elements
+BadRequest = The specified RequestSecurityToken is not understood
+ExpiredData = The request data is out-of-date
+InvalidTimeRange = The requested time range is invalid or unsupported
+InvalidScope = The request scope is invalid or unsupported
+RenewNeeded = A renewable security token has expired
+UnableToRenew = The requested renewal failed
+
+
+errorInObtainingToken = Error in obtaining token from : \"{0}\" 
+incorrectConfiguration = The given configuration element is not a "token-dispatcher-configuration" element
+missingClassName = Class attribute missing
+cannotLoadClass = Error in loading and instanciating the class \"{0}\"
+invalidTokenTypeDefinition = Invalid 'tokenType' definition in \"{0}\" : \"{1}\"
+errorLoadingConfigFile = Error in loading configuration file : \"{0}\"
+defaultIssuerMissing = The default issuer must be specified
+tokenAlreadyExists = "The token \"{0}\" already exists in the store
+noTokenToUpdate = Canot find token : \"{0}\" to update 
+errorInBuildingTheEncryptedKey = Error in building a xenc:EncyptedKey , encrypted for \"{0}\" 
+missingDispatcherConfiguration = Cannot find the token-dispatcher-configuration
+missingConfiguration = Missing configuration: \"{0}\"
+expectedParameterMissing = Expected parameter missing : \"{0}\" 
+reqestedSecTokMissing = RequestedSecurityToken missing in the response
+rptMissing = RequestedProofToken missing in the response
+notSupported = Not supported: {0}
+errorCreatingSymmKey = Error in creating the ephemeral key
+badDispatcherConfigMultipleDefaultIssuers = Dispatcher configuration error : There should be only one default issuer
+errorInBuildingTheEncryptedKeyForPrincipal = Error in building encrypted key for principal : \"{0}\"
+invlidTTL = timeToLive (in milliseconds) must be a positive long value.
+invalidKeysize = Invalid key size
+unsupportedWSTVersion = Unsupported WS-Trust version
+unsupportedKeyType = Upsupported KeyType
+invalidAppliesToElem = Invalid AppliesTo element
+errorSettingUpRequestorEntropy = Error setting up requestor entropy
+errorInProcessingSTR = Error in processing SecurityTokenReference : {0}
+cannotObtainTokenIdentifier = Cannot obtain token identifier
+lifeTimeProcessingError = Error in processing Lifetime : {0}
+invalidRPT = Invalid RequestedProofToken
+serviceEntropyMissing = Service entropy missing
+keyDerivationError = Error in key derivation
+errorInProcessingEncryptedKey = Error in processing encrypted key
+
+stsClientCfgCtxNull = STSClient: ConfigurationContext client is null
+
+#SCTIssuer specific error messages
+sctIssuerCryptoPropertiesMissing = When the tokenType is not \"BinarySecret\" the cryptoProperties MUST be specified
+
+#SAMLTokenIssuer specific error messages 
+samlPropFileMissing = cryptoProperties missing in the SAMLTokenIssuer configuration
+samlIssuerKeyPasswdMissing = issuerKeyPassword missing in SAMLTokenIssuer configuration
+samlIssuerKeyAliasMissing = user value missing in the SAMLTokenIssuer configuration
+samlConverstionError = Error in converting a SAML token to DOOM 
+samlAssertionCreationError = Error in creating a SAMLToken using opensaml library
+aliasMissingForService = Certificate alias missing for service : \"{0}\"
+
+samlIssuerNameMissing = issuerName value missing in the SAMLTokenIssuer configuration
+samlUnsupportedPrincipal = Unsupported principal : \"{0}\"
+
+requiredElementNotFound = Required Element \"{0}\" not found!
+cannotDetermineTokenId = Cannot determine token ID from request
+tokenNotFound = Token with ID \"{0}\" cannot be found
+configurationIsNull = Configuration is null
+errorInCancelingToken = Error occurred while trying to cancel token
\ No newline at end of file
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/AbstractIssuerConfig.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/AbstractIssuerConfig.java
new file mode 100644
index 0000000..9742f0a
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/AbstractIssuerConfig.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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.rahas.impl;
+
+import org.apache.axiom.om.OMElement;
+
+import javax.xml.namespace.QName;
+
+/**
+ *
+ */
+public abstract class AbstractIssuerConfig {
+
+    /**
+     * The key computation policy when clien't entropy is provided
+     */
+    public static class KeyComputation {
+        public static final QName KEY_COMPUTATION = new QName("keyComputation");
+        public final static int KEY_COMP_USE_REQ_ENT = 1;
+        public final static int KEY_COMP_PROVIDE_ENT = 2;
+        public final static int KEY_COMP_USE_OWN_KEY = 3;
+    }
+
+    public final static QName ADD_REQUESTED_ATTACHED_REF = new QName("addRequestedAttachedRef");
+    public final static QName ADD_REQUESTED_UNATTACHED_REF = new QName("addRequestedUnattachedRef");
+    public static final QName PROOF_KEY_TYPE = new QName("proofKeyType");
+
+    /**
+     * Element name to include the crypto properties used to load the
+     * information used securing the response
+     */
+    public final static QName CRYPTO_PROPERTIES = new QName("cryptoProperties");
+    public static final QName CRYPTO = new QName("crypto");
+
+    protected int keyComputation = KeyComputation.KEY_COMP_PROVIDE_ENT;
+    protected String proofKeyType = TokenIssuerUtil.ENCRYPTED_KEY;
+    protected boolean addRequestedAttachedRef;
+    protected boolean addRequestedUnattachedRef;
+    protected long ttl = 300000;
+    protected String cryptoPropertiesFile;
+    protected OMElement cryptoPropertiesElement;
+    protected int keySize = 256;
+
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SAMLTokenIssuer.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SAMLTokenIssuer.java
new file mode 100644
index 0000000..886fbc7
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SAMLTokenIssuer.java
@@ -0,0 +1,599 @@
+/*
+ * Copyright 2004,2005 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.rahas.impl;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.RahasData;
+import org.apache.rahas.Token;
+import org.apache.rahas.TokenIssuer;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.WSUsernameTokenPrincipal;
+import org.apache.ws.security.components.crypto.Crypto;
+import org.apache.ws.security.components.crypto.CryptoFactory;
+import org.apache.ws.security.message.WSSecEncryptedKey;
+import org.apache.ws.security.util.Base64;
+import org.apache.ws.security.util.XmlSchemaDateFormat;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.EncryptionConstants;
+import org.opensaml.SAMLAssertion;
+import org.opensaml.SAMLAttribute;
+import org.opensaml.SAMLAttributeStatement;
+import org.opensaml.SAMLAuthenticationStatement;
+import org.opensaml.SAMLException;
+import org.opensaml.SAMLNameIdentifier;
+import org.opensaml.SAMLStatement;
+import org.opensaml.SAMLSubject;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+import java.security.Principal;
+import java.security.SecureRandom;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.X509Certificate;
+import java.text.DateFormat;
+import java.util.Arrays;
+import java.util.Date;
+
+/**
+ * Issuer to issue SAMl tokens
+ */
+public class SAMLTokenIssuer implements TokenIssuer {
+
+    private String configParamName;
+    private OMElement configElement;
+    private String configFile;
+
+    public SOAPEnvelope issue(RahasData data) throws TrustException {
+
+        MessageContext inMsgCtx = data.getInMessageContext();
+
+        SAMLTokenIssuerConfig config = null;
+        if (this.configElement != null) {
+            config = SAMLTokenIssuerConfig
+                    .load(configElement
+                            .getFirstChildWithName(SAMLTokenIssuerConfig.SAML_ISSUER_CONFIG));
+        }
+
+        //Look for the file
+        if (config == null && this.configFile != null) {
+            config = SAMLTokenIssuerConfig.load(this.configFile);
+        }
+
+        //Look for the param
+        if (config == null && this.configParamName != null) {
+            Parameter param = inMsgCtx.getParameter(this.configParamName);
+            if (param != null && param.getParameterElement() != null) {
+                config = SAMLTokenIssuerConfig.load(param.getParameterElement()
+                        .getFirstChildWithName(
+                        SAMLTokenIssuerConfig.SAML_ISSUER_CONFIG));
+            } else {
+                throw new TrustException("expectedParameterMissing",
+                                         new String[]{this.configParamName});
+            }
+        }
+
+        if (config == null) {
+            throw new TrustException("configurationIsNull");
+        }
+
+        //Set the DOM impl to DOOM
+        DocumentBuilderFactoryImpl.setDOOMRequired(true);
+
+        SOAPEnvelope env =
+                TrustUtil.
+                        createSOAPEnvelope(inMsgCtx.getEnvelope().getNamespace().getNamespaceURI());
+
+        Crypto crypto;
+        if (config.cryptoPropertiesElement != null) { // crypto props defined as elements
+            crypto = CryptoFactory.getInstance(TrustUtil.toProperties(config.cryptoPropertiesElement),
+                                               inMsgCtx.getAxisService().getClassLoader());
+        } else { // crypto props defined in a properties file
+            crypto = CryptoFactory.getInstance(config.cryptoPropertiesFile,
+                                               inMsgCtx.getAxisService().getClassLoader());
+        }
+
+        //Creation and expiration times
+        Date creationTime = new Date();
+        Date expirationTime = new Date();
+        expirationTime.setTime(creationTime.getTime() + config.ttl);
+
+        // Get the document
+        Document doc = ((Element) env).getOwnerDocument();
+
+        //Get the key size and create a new byte array of that size
+        int keySize = data.getKeysize();
+
+        keySize = (keySize == -1) ? config.keySize : keySize;
+
+        /*
+        * Find the KeyType
+        * If the KeyType is SymmetricKey or PublicKey, issue a SAML HoK
+        * assertion.
+        *      - In the case of the PublicKey, in coming security header
+        *      MUST contain a certificate (maybe via signature)
+        *
+        * If the KeyType is Bearer then issue a Bearer assertion
+        *
+        * If the key type is missing we will issue a HoK asserstion
+        */
+
+        String keyType = data.getKeyType();
+        SAMLAssertion assertion;
+        if (keyType == null) {
+            throw new TrustException(TrustException.INVALID_REQUEST,
+                                     new String[]{"Requested KeyType is missing"});
+        }
+
+        if (keyType.endsWith(RahasConstants.KEY_TYPE_SYMM_KEY) ||
+            keyType.endsWith(RahasConstants.KEY_TYPE_PUBLIC_KEY)) {
+            assertion = createHoKAssertion(config, doc, crypto, creationTime, expirationTime, data);
+        } else if (keyType.endsWith(RahasConstants.KEY_TYPE_BEARER)) {
+            assertion = createBearerAssertion(config, doc, crypto, creationTime, expirationTime, data);
+        } else {
+            throw new TrustException("unsupportedKeyType");
+        }
+
+        OMElement rstrElem;
+        int wstVersion = data.getVersion();
+        if (RahasConstants.VERSION_05_02 == wstVersion) {
+            rstrElem =
+                    TrustUtil.createRequestSecurityTokenResponseElement(wstVersion, env.getBody());
+        } else {
+            OMElement rstrcElem =
+                    TrustUtil.createRequestSecurityTokenResponseCollectionElement(wstVersion,
+                                                                                  env.getBody());
+            rstrElem = TrustUtil.createRequestSecurityTokenResponseElement(wstVersion, rstrcElem);
+        }
+
+        TrustUtil.createTokenTypeElement(wstVersion,
+                                          rstrElem).setText(RahasConstants.TOK_TYPE_SAML_10);
+
+        if (keyType.endsWith(RahasConstants.KEY_TYPE_SYMM_KEY)) {
+            TrustUtil.createKeySizeElement(wstVersion, rstrElem, keySize);
+        }
+
+        if (config.addRequestedAttachedRef) {
+            TrustUtil.createRequestedAttachedRef(wstVersion,
+                                                 rstrElem,
+                                                 "#" + assertion.getId(),
+                                                 RahasConstants.TOK_TYPE_SAML_10);
+        }
+
+        if (config.addRequestedUnattachedRef) {
+            TrustUtil.createRequestedUnattachedRef(wstVersion, rstrElem, assertion.getId(),
+                                                   RahasConstants.TOK_TYPE_SAML_10);
+        }
+
+        if (data.getAppliesToAddress() != null) {
+            TrustUtil.createAppliesToElement(rstrElem, data
+                    .getAppliesToAddress(), data.getAddressingNs());
+        }
+
+        // Use GMT time in milliseconds
+        DateFormat zulu = new XmlSchemaDateFormat();
+
+        // Add the Lifetime element
+        TrustUtil.createLifetimeElement(wstVersion, rstrElem, zulu
+                .format(creationTime), zulu.format(expirationTime));
+
+        //Create the RequestedSecurityToken element and add the SAML token to it
+        OMElement reqSecTokenElem = TrustUtil
+                .createRequestedSecurityTokenElement(wstVersion, rstrElem);
+        Token assertionToken;
+        try {
+            Node tempNode = assertion.toDOM();
+            reqSecTokenElem.
+                    addChild((OMNode) ((Element) rstrElem).getOwnerDocument().importNode(tempNode,
+                                                                                         true));
+
+            // Store the token
+            assertionToken = new Token(assertion.getId(),
+                                       (OMElement) assertion.toDOM(),
+                                       creationTime,
+                                       expirationTime);
+
+            // At this point we definitely have the secret
+            // Otherwise it should fail with an exception earlier
+            assertionToken.setSecret(data.getEphmeralKey());
+            TrustUtil.getTokenStore(inMsgCtx).add(assertionToken);
+
+        } catch (SAMLException e) {
+            throw new TrustException("samlConverstionError", e);
+        }
+
+        if (keyType.endsWith(RahasConstants.KEY_TYPE_SYMM_KEY) &&
+            config.keyComputation != SAMLTokenIssuerConfig.KeyComputation.KEY_COMP_USE_REQ_ENT) {
+
+            //Add the RequestedProofToken
+            TokenIssuerUtil.handleRequestedProofToken(data,
+                                                      wstVersion,
+                                                      config,
+                                                      rstrElem,
+                                                      assertionToken,
+                                                      doc);
+        }
+
+        // Unset the DOM impl to default
+        DocumentBuilderFactoryImpl.setDOOMRequired(false);
+
+        return env;
+    }
+
+
+    private SAMLAssertion createBearerAssertion(SAMLTokenIssuerConfig config,
+                                                Document doc,
+                                                Crypto crypto,
+                                                Date creationTime,
+                                                Date expirationTime,
+                                                RahasData data) throws TrustException {
+        try {
+            Principal principal = data.getPrincipal();
+            // In the case where the principal is a UT
+            if (principal instanceof WSUsernameTokenPrincipal) {
+                // TODO: Find the email address
+                String subjectNameId = "ruchithf@apache.org";
+                SAMLNameIdentifier nameId = new SAMLNameIdentifier(
+                        subjectNameId, null, SAMLNameIdentifier.FORMAT_EMAIL);
+                return createAuthAssertion(doc, SAMLSubject.CONF_BEARER,
+                                           nameId, null, config, crypto, creationTime,
+                                           expirationTime);
+            } else {
+                throw new TrustException("samlUnsupportedPrincipal",
+                                         new String[]{principal.getClass().getName()});
+            }
+        } catch (SAMLException e) {
+            throw new TrustException("samlAssertionCreationError", e);
+        }
+    }
+
+    private SAMLAssertion createHoKAssertion(SAMLTokenIssuerConfig config,
+                                             Document doc,
+                                             Crypto crypto,
+                                             Date creationTime,
+                                             Date expirationTime,
+                                             RahasData data) throws TrustException {
+
+
+        if (data.getKeyType().endsWith(RahasConstants.KEY_TYPE_SYMM_KEY)) {
+            Element encryptedKeyElem;
+            X509Certificate serviceCert = null;
+            try {
+
+                //Get ApliesTo to figureout which service to issue the token for
+                serviceCert = getServiceCert(config,
+                                             crypto,
+                                             data.getAppliesToAddress());
+
+                //Ceate the encrypted key
+                WSSecEncryptedKey encrKeyBuilder = new WSSecEncryptedKey();
+
+                //Use thumbprint id
+                encrKeyBuilder.setKeyIdentifierType(WSConstants.THUMBPRINT_IDENTIFIER);
+
+                //SEt the encryption cert
+                encrKeyBuilder.setUseThisCert(serviceCert);
+
+                //set keysize
+                int keysize = data.getKeysize();
+                keysize = (keysize != -1) ? keysize : config.keySize;
+                encrKeyBuilder.setKeySize(keysize);
+
+                encrKeyBuilder.
+                        setEphemeralKey(TokenIssuerUtil.getSharedSecret(data,
+                                                                        config.keyComputation,
+                                                                        keysize));
+
+                //Set key encryption algo
+                encrKeyBuilder.setKeyEncAlgo(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15);
+
+                //Build
+                encrKeyBuilder.prepare(doc, crypto);
+
+                //Extract the base64 encoded secret value
+                byte[] tempKey = new byte[keysize / 8];
+                System.arraycopy(encrKeyBuilder.getEphemeralKey(), 0, tempKey, 0, keysize / 8);
+
+                data.setEphmeralKey(tempKey);
+
+                //Extract the Encryptedkey DOM element
+                encryptedKeyElem = encrKeyBuilder.getEncryptedKeyElement();
+            } catch (WSSecurityException e) {
+                throw new TrustException("errorInBuildingTheEncryptedKeyForPrincipal",
+                                         new String[]{serviceCert.getSubjectDN().getName()}, e);
+            }
+            return this.createAttributeAssertion(doc, encryptedKeyElem,
+                                                 config, crypto, creationTime, expirationTime);
+        } else {
+            try {
+                String subjectNameId = data.getPrincipal().getName();
+                SAMLNameIdentifier nameId = new SAMLNameIdentifier(subjectNameId,
+                                                                   null,
+                                                                   SAMLNameIdentifier.FORMAT_EMAIL);
+
+                //Create the ds:KeyValue element with the ds:X509Data
+                byte[] clientCertBytes = data.getClientCert().getEncoded();
+                String base64Cert = Base64.encode(clientCertBytes);
+
+                Text base64CertText = doc.createTextNode(base64Cert);
+                Element x509CertElem = doc.createElementNS(WSConstants.SIG_NS, "X509Certificate");
+                x509CertElem.appendChild(base64CertText);
+                Element x509DataElem = doc.createElementNS(WSConstants.SIG_NS, "X509Data");
+                x509DataElem.appendChild(x509CertElem);
+                Element keyValueElem = doc.createElementNS(WSConstants.SIG_NS, "KeyValue");
+                keyValueElem.appendChild(x509DataElem);
+
+                return this.createAuthAssertion(doc,
+                                                SAMLSubject.CONF_HOLDER_KEY,
+                                                nameId,
+                                                keyValueElem,
+                                                config,
+                                                crypto,
+                                                creationTime,
+                                                expirationTime);
+            } catch (SAMLException e) {
+                throw new TrustException("samlAssertionCreationError", e);
+            } catch (CertificateEncodingException e) {
+                throw new TrustException("samlAssertionCreationError", e);
+            }
+        }
+    }
+
+    /**
+     * Uses the <code>wst:AppliesTo</code> to figure out the certificate to
+     * encrypt the secret in the SAML token
+     *
+     * @param config
+     * @param crypto
+     * @param serviceAddress The address of the service
+     * @return
+     * @throws WSSecurityException
+     */
+    private X509Certificate getServiceCert(SAMLTokenIssuerConfig config,
+                                           Crypto crypto,
+                                           String serviceAddress) throws WSSecurityException {
+
+        if (serviceAddress != null && !"".equals(serviceAddress)) {
+            String alias = (String) config.trustedServices.get(serviceAddress);
+            if (alias != null) {
+                return crypto.getCertificates(alias)[0];
+            } else {
+                alias = (String) config.trustedServices.get("*");
+                return crypto.getCertificates(alias)[0];
+            }
+        } else {
+            String alias = (String) config.trustedServices.get("*");
+            return crypto.getCertificates(alias)[0];
+        }
+
+    }
+
+    /**
+     * Create the SAML assertion with the secret held in an
+     * <code>xenc:EncryptedKey</code>
+     *
+     * @param doc
+     * @param keyInfoContent
+     * @param config
+     * @param crypto
+     * @param notBefore
+     * @param notAfter
+     * @return
+     * @throws TrustException
+     */
+    private SAMLAssertion createAttributeAssertion(Document doc,
+                                                   Element keyInfoContent,
+                                                   SAMLTokenIssuerConfig config,
+                                                   Crypto crypto,
+                                                   Date notBefore,
+                                                   Date notAfter) throws TrustException {
+        try {
+            String[] confirmationMethods = new String[]{SAMLSubject.CONF_HOLDER_KEY};
+
+            Element keyInfoElem = doc.createElementNS(WSConstants.SIG_NS, "KeyInfo");
+            ((OMElement) keyInfoContent).declareNamespace(WSConstants.SIG_NS, WSConstants.SIG_PREFIX);
+            ((OMElement) keyInfoContent).declareNamespace(WSConstants.ENC_NS, WSConstants.ENC_PREFIX);
+
+            keyInfoElem.appendChild(keyInfoContent);
+
+            SAMLSubject subject = new SAMLSubject(null,
+                                                  Arrays.asList(confirmationMethods),
+                                                  null,
+                                                  keyInfoElem);
+
+            SAMLAttribute attribute = new SAMLAttribute("Name",
+                                                        "https://rahas.apache.org/saml/attrns",
+                                                        null,
+                                                        -1,
+                                                        Arrays.asList(new String[]{"Colombo/Rahas"}));
+            SAMLAttributeStatement attrStmt = new SAMLAttributeStatement(
+                    subject, Arrays.asList(new SAMLAttribute[]{attribute}));
+
+            SAMLStatement[] statements = {attrStmt};
+
+            SAMLAssertion assertion = new SAMLAssertion(config.issuerName,
+                                                        notBefore,
+                                                        notAfter,
+                                                        null,
+                                                        null,
+                                                        Arrays.asList(statements));
+
+            //sign the assertion
+            X509Certificate[] issuerCerts =
+                    crypto.getCertificates(config.issuerKeyAlias);
+
+            String sigAlgo = XMLSignature.ALGO_ID_SIGNATURE_RSA;
+            String pubKeyAlgo =
+                    issuerCerts[0].getPublicKey().getAlgorithm();
+            if (pubKeyAlgo.equalsIgnoreCase("DSA")) {
+                sigAlgo = XMLSignature.ALGO_ID_SIGNATURE_DSA;
+            }
+            java.security.Key issuerPK =
+                    crypto.getPrivateKey(config.issuerKeyAlias,
+                                         config.issuerKeyPassword);
+            assertion.sign(sigAlgo, issuerPK, Arrays.asList(issuerCerts));
+
+
+            return assertion;
+        } catch (Exception e) {
+            throw new TrustException("samlAssertionCreationError", e);
+        }
+    }
+
+    /**
+     * @param doc
+     * @param confMethod
+     * @param subjectNameId
+     * @param keyInfoContent
+     * @param config
+     * @param crypto
+     * @param notBefore
+     * @param notAfter
+     * @return
+     * @throws TrustException
+     */
+    private SAMLAssertion createAuthAssertion(Document doc,
+                                              String confMethod,
+                                              SAMLNameIdentifier subjectNameId,
+                                              Element keyInfoContent,
+                                              SAMLTokenIssuerConfig config,
+                                              Crypto crypto,
+                                              Date notBefore,
+                                              Date notAfter) throws TrustException {
+        try {
+            String[] confirmationMethods = new String[]{confMethod};
+
+            Element keyInfoElem = null;
+            if (keyInfoContent != null) {
+                keyInfoElem = doc.createElementNS(WSConstants.SIG_NS, "KeyInfo");
+                ((OMElement) keyInfoContent).declareNamespace(WSConstants.SIG_NS,
+                                                              WSConstants.SIG_PREFIX);
+                ((OMElement) keyInfoContent).declareNamespace(WSConstants.ENC_NS,
+                                                              WSConstants.ENC_PREFIX);
+
+                keyInfoElem.appendChild(keyInfoContent);
+            }
+
+            SAMLSubject subject = new SAMLSubject(subjectNameId,
+                                                  Arrays.asList(confirmationMethods),
+                                                  null,
+                                                  keyInfoElem);
+
+            SAMLAuthenticationStatement authStmt =
+                    new SAMLAuthenticationStatement(subject,
+                                                    SAMLAuthenticationStatement.
+                                                            AuthenticationMethod_Password,
+                                                    notBefore,
+                                                    null, null, null);
+            SAMLStatement[] statements = {authStmt};
+
+            SAMLAssertion assertion = new SAMLAssertion(config.issuerName,
+                                                        notBefore,
+                                                        notAfter, null, null,
+                                                        Arrays.asList(statements));
+
+            //sign the assertion
+            X509Certificate[] issuerCerts =
+                    crypto.getCertificates(config.issuerKeyAlias);
+
+            String sigAlgo = XMLSignature.ALGO_ID_SIGNATURE_RSA;
+            String pubKeyAlgo =
+                    issuerCerts[0].getPublicKey().getAlgorithm();
+            if (pubKeyAlgo.equalsIgnoreCase("DSA")) {
+                sigAlgo = XMLSignature.ALGO_ID_SIGNATURE_DSA;
+            }
+            java.security.Key issuerPK =
+                    crypto.getPrivateKey(config.issuerKeyAlias,
+                                         config.issuerKeyPassword);
+            assertion.sign(sigAlgo, issuerPK, Arrays.asList(issuerCerts));
+
+
+            return assertion;
+        } catch (Exception e) {
+            throw new TrustException("samlAssertionCreationError", e);
+        }
+    }
+
+
+    /*
+    * (non-Javadoc)
+    *
+    * @see org.apache.rahas.TokenIssuer#getResponseAction(org.apache.axiom.om.OMElement,
+    *      org.apache.axis2.context.MessageContext)
+    */
+    public String getResponseAction(RahasData data) throws TrustException {
+        return TrustUtil.getActionValue(data.getVersion(), RahasConstants.RSTR_ACTION_ISSUE);
+    }
+
+
+    /**
+     * Create an ephemeral key
+     *
+     * @return The generated key as a byte array
+     * @throws TrustException
+     */
+    protected byte[] generateEphemeralKey(int keySize) throws TrustException {
+        try {
+            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
+            byte[] temp = new byte[keySize / 8];
+            random.nextBytes(temp);
+            return temp;
+        } catch (Exception e) {
+            throw new TrustException(
+                    "Error in creating the ephemeral key", e);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.rahas.TokenIssuer#setConfigurationFile(java.lang.String)
+     */
+    public void setConfigurationFile(String configFile) {
+        // TODO TODO SAMLTokenIssuer setConfigurationFile
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.rahas.TokenIssuer#setConfigurationElement(org.apache.axiom.om.OMElement)
+     */
+    public void setConfigurationElement(OMElement configElement) {
+        // TODO TODO SAMLTokenIssuer setConfigurationElement
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.rahas.TokenIssuer#setConfigurationParamName(java.lang.String)
+     */
+    public void setConfigurationParamName(String configParamName) {
+        this.configParamName = configParamName;
+    }
+
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SAMLTokenIssuerConfig.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SAMLTokenIssuerConfig.java
new file mode 100644
index 0000000..cc9e0cb
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SAMLTokenIssuerConfig.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright 2004,2005 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.rahas.impl;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.rahas.TrustException;
+
+import javax.xml.namespace.QName;
+
+import java.io.FileInputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Configuration manager for the <code>SAMLTokenIssuer</code>
+ *
+ * @see SAMLTokenIssuer
+ */
+public class SAMLTokenIssuerConfig extends AbstractIssuerConfig {
+
+    /**
+     * The QName of the configuration element of the SAMLTokenIssuer
+     */
+    public final static QName SAML_ISSUER_CONFIG = new QName("saml-issuer-config");
+
+    /**
+     * Element name to include the alias of the private key to sign the response or
+     * the issued token
+     */
+    private final static QName ISSUER_KEY_ALIAS = new QName("issuerKeyAlias");
+
+    /**
+     * Element name to include the password of the private key to sign the
+     * response or the issued token
+     */
+    private final static QName ISSUER_KEY_PASSWD = new QName("issuerKeyPassword");
+
+    /**
+     * Element to specify the lifetime of the SAMLToken
+     * Dafaults to 300000 milliseconds (5 mins)
+     */
+    private final static QName TTL = new QName("timeToLive");
+
+    /**
+     * Element to list the trusted services
+     */
+    private final static QName TRUSTED_SERVICES = new QName("trusted-services");
+
+    private final static QName KEY_SIZE = new QName("keySize");
+
+    private final static QName SERVICE = new QName("service");
+    private final static QName ALIAS = new QName("alias");
+
+    public final static QName USE_SAML_ATTRIBUTE_STATEMENT = new QName("useSAMLAttributeStatement");
+
+    public final static QName ISSUER_NAME = new QName("issuerName");
+
+    protected String issuerKeyAlias;
+    protected String issuerKeyPassword;
+    protected String issuerName;
+    protected Map trustedServices;
+    protected String trustStorePropFile;
+
+    private SAMLTokenIssuerConfig(OMElement elem) throws TrustException {
+        OMElement proofKeyElem = elem.getFirstChildWithName(PROOF_KEY_TYPE);
+        if (proofKeyElem != null) {
+            this.proofKeyType = proofKeyElem.getText().trim();
+        }
+
+        //The alias of the private key
+        OMElement userElem = elem.getFirstChildWithName(ISSUER_KEY_ALIAS);
+        if (userElem != null) {
+            this.issuerKeyAlias = userElem.getText().trim();
+        }
+
+        if (this.issuerKeyAlias == null || "".equals(this.issuerKeyAlias)) {
+            throw new TrustException("samlIssuerKeyAliasMissing");
+        }
+
+        OMElement issuerKeyPasswdElem = elem.getFirstChildWithName(ISSUER_KEY_PASSWD);
+        if (issuerKeyPasswdElem != null) {
+            this.issuerKeyPassword = issuerKeyPasswdElem.getText().trim();
+        }
+
+        if (this.issuerKeyPassword == null || "".equals(this.issuerKeyPassword)) {
+            throw new TrustException("samlIssuerKeyPasswdMissing");
+        }
+
+        OMElement issuerNameElem = elem.getFirstChildWithName(ISSUER_NAME);
+        if (issuerNameElem != null) {
+            this.issuerName = issuerNameElem.getText().trim();
+        }
+
+        if (this.issuerName == null || "".equals(this.issuerName)) {
+            throw new TrustException("samlIssuerNameMissing");
+        }
+
+        OMElement cryptoPropElem = elem.getFirstChildWithName(CRYPTO_PROPERTIES);
+        if (cryptoPropElem != null) {
+            if ((cryptoPropertiesElement =
+                    cryptoPropElem.getFirstChildWithName(CRYPTO)) == null){
+                // no children. Hence, prop file shud have been defined
+                this.cryptoPropertiesFile = cryptoPropElem.getText().trim();
+            }
+            // else Props should be defined as children of a crypto element
+        }
+
+        OMElement keyCompElem = elem.getFirstChildWithName(KeyComputation.KEY_COMPUTATION);
+        if (keyCompElem != null && keyCompElem.getText() != null && !"".equals(keyCompElem)) {
+            this.keyComputation = Integer.parseInt(keyCompElem.getText());
+        }
+
+        //time to live
+        OMElement ttlElem = elem.getFirstChildWithName(TTL);
+        if (ttlElem != null) {
+            try {
+                this.ttl = Long.parseLong(ttlElem.getText().trim());
+            } catch (NumberFormatException e) {
+                throw new TrustException("invlidTTL");
+            }
+        }
+
+        OMElement keySizeElem = elem.getFirstChildWithName(KEY_SIZE);
+        if (keySizeElem != null) {
+            try {
+                this.keySize = Integer.parseInt(keySizeElem.getText().trim());
+            } catch (NumberFormatException e) {
+                throw new TrustException("invalidKeysize");
+            }
+        }
+
+        this.addRequestedAttachedRef = elem
+                .getFirstChildWithName(ADD_REQUESTED_ATTACHED_REF) != null;
+        this.addRequestedUnattachedRef = elem
+                .getFirstChildWithName(ADD_REQUESTED_UNATTACHED_REF) != null;
+
+        //Process trusted services
+        OMElement trustedServices = elem.getFirstChildWithName(TRUSTED_SERVICES);
+
+        /*
+        * If there are trusted services add them to a list
+        * Only trusts myself to issue tokens to :
+        * In this case the STS is embedded in the service as well and
+        * the issued token can only be used with that particular service
+        * since the response secret is encrypted by the service's public key
+        */
+        if (trustedServices != null) {
+            //Now process the trusted services
+            Iterator servicesIter = trustedServices.getChildrenWithName(SERVICE);
+            while (servicesIter.hasNext()) {
+                OMElement service = (OMElement) servicesIter.next();
+                OMAttribute aliasAttr = service.getAttribute(ALIAS);
+                if (aliasAttr == null) {
+                    //The certificate alias is a must
+                    throw new TrustException("aliasMissingForService",
+                                             new String[]{service.getText().trim()});
+                }
+                if (this.trustedServices == null) {
+                    this.trustedServices = new HashMap();
+                }
+
+                //Add the trusted service and the alias to the map of services
+                this.trustedServices.put(service.getText().trim(), aliasAttr.getAttributeValue());
+            }
+
+            //There maybe no trusted services as well, Therefore do not 
+            //throw an exception when there are no trusted in the list at the 
+            //moment
+        }
+    }
+
+    public static SAMLTokenIssuerConfig load(OMElement elem) throws TrustException {
+        return new SAMLTokenIssuerConfig(elem);
+    }
+
+    public static SAMLTokenIssuerConfig load(String configFilePath)
+            throws TrustException {
+        FileInputStream fis;
+        StAXOMBuilder builder;
+        try {
+            fis = new FileInputStream(configFilePath);
+            builder = new StAXOMBuilder(fis);
+        } catch (Exception e) {
+            throw new TrustException("errorLoadingConfigFile",
+                                     new String[]{configFilePath});
+        }
+        return load(builder.getDocumentElement());
+    }
+
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SCTIssuer.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SCTIssuer.java
new file mode 100644
index 0000000..f1ed9e4
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SCTIssuer.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright 2004,2005 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.rahas.impl;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.RahasData;
+import org.apache.rahas.Token;
+import org.apache.rahas.TokenIssuer;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.ws.security.conversation.ConversationConstants;
+import org.apache.ws.security.conversation.ConversationException;
+import org.apache.ws.security.message.token.SecurityContextToken;
+import org.apache.ws.security.util.XmlSchemaDateFormat;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Hashtable;
+
+public class SCTIssuer implements TokenIssuer {
+
+    public final static String COMPUTED_KEY = "ComputedKey";
+
+    private String configFile;
+
+    private OMElement configElement;
+
+    private String configParamName;
+
+    /**
+     * Issue a {@link SecurityContextToken} based on the wsse:Signature or
+     * wsse:UsernameToken
+     * <p/>
+     * This will support returning the SecurityContextToken with the following
+     * types of wst:RequestedProof tokens:
+     * <ul>
+     * <li>xenc:EncryptedKey</li>
+     * <li>wst:ComputedKey</li>
+     * <li>wst:BinarySecret (for secure transport)</li>
+     * </ul>
+     */
+    public SOAPEnvelope issue(RahasData data) throws TrustException {
+
+        SCTIssuerConfig config = null;
+        if (this.configElement != null) {
+            config = SCTIssuerConfig
+                    .load(configElement
+                            .getFirstChildWithName(SCTIssuerConfig.SCT_ISSUER_CONFIG));
+        }
+
+        // Look for the file
+        if (config == null && this.configFile != null) {
+            config = SCTIssuerConfig.load(this.configFile);
+        }
+
+        // Look for the param
+        if (config == null && this.configParamName != null) {
+            Parameter param = data.getInMessageContext().getParameter(this.configParamName);
+            if (param != null && param.getParameterElement() != null) {
+                config = SCTIssuerConfig.load(param.getParameterElement()
+                        .getFirstChildWithName(
+                        SCTIssuerConfig.SCT_ISSUER_CONFIG));
+            } else {
+                throw new TrustException("expectedParameterMissing",
+                                         new String[]{this.configParamName});
+            }
+        }
+
+        if (config == null) {
+            throw new TrustException("missingConfiguration",
+                                     new String[]{SCTIssuerConfig.SCT_ISSUER_CONFIG
+                                             .getLocalPart()});
+        }
+
+        // Env
+        return createEnvelope(data, config);
+    }
+
+    private SOAPEnvelope createEnvelope(RahasData data,
+                                        SCTIssuerConfig config) throws TrustException {
+        try {
+            SOAPEnvelope env = TrustUtil.createSOAPEnvelope(data.getSoapNs());
+            int wstVersion = data.getVersion();
+
+            // Get the document
+            Document doc = ((Element) env).getOwnerDocument();
+
+            SecurityContextToken sct =
+                    new SecurityContextToken(this.getWSCVersion(data.getTokenType()), doc);
+
+            OMElement rstrElem =
+                    TrustUtil.createRequestSecurityTokenResponseElement(wstVersion,
+                                                                        env.getBody());
+
+            OMElement rstElem =
+                    TrustUtil.createRequestedSecurityTokenElement(wstVersion, rstrElem);
+
+            rstElem.addChild((OMElement) sct.getElement());
+
+            String tokenType = data.getTokenType();
+
+            OMElement reqAttachedRef = null;
+            OMElement reqUnattachedRef = null;
+            if (config.addRequestedAttachedRef) {
+                reqAttachedRef = TrustUtil.createRequestedAttachedRef(wstVersion,
+                                                         rstrElem,
+                                                         "#" + sct.getID(),
+                                                         tokenType);
+            }
+
+            if (config.addRequestedUnattachedRef) {
+                reqUnattachedRef = TrustUtil.createRequestedUnattachedRef(wstVersion,
+                                                           rstrElem,
+                                                           sct.getIdentifier(),
+                                                           tokenType);
+            }
+
+            //Creation and expiration times
+            Date creationTime = new Date();
+            Date expirationTime = new Date();
+
+            expirationTime.setTime(creationTime.getTime() + config.ttl);
+
+            // Use GMT time in milliseconds
+            DateFormat zulu = new XmlSchemaDateFormat();
+
+            // Add the Lifetime element
+            TrustUtil.createLifetimeElement(wstVersion,
+                                            rstrElem,
+                                            zulu.format(creationTime),
+                                            zulu.format(expirationTime));
+
+            // Store the tokens
+            Token sctToken = new Token(sct.getIdentifier(),
+                                       (OMElement) sct.getElement(),
+                                       creationTime,
+                                       expirationTime);
+            
+            sctToken.setUnattachedReference(reqAttachedRef.getFirstElement());
+            sctToken.setAttachedReference(reqAttachedRef.getFirstElement());
+
+            byte[] secret = TokenIssuerUtil.getSharedSecret(data, config.keyComputation, config.keySize);
+            sctToken.setSecret(secret);
+            
+            //Add the RequestedProofToken
+            TokenIssuerUtil.handleRequestedProofToken(data,
+                                                      wstVersion,
+                                                      config,
+                                                      rstrElem,
+                                                      sctToken,
+                                                      doc);
+            
+            sctToken.setState(Token.ISSUED);
+            TrustUtil.getTokenStore(data.getInMessageContext()).add(sctToken);
+            return env;
+        } catch (ConversationException e) {
+            throw new TrustException(e.getMessage(), e);
+        }
+    }
+
+    public String getResponseAction(RahasData data) throws TrustException {
+        return TrustUtil.getActionValue(data.getVersion(), RahasConstants.RSTR_ACTION_SCT);
+    }
+
+    /**
+     * @see org.apache.rahas.TokenIssuer#setConfigurationFile(java.lang.String)
+     */
+    public void setConfigurationFile(String configFile) {
+        this.configFile = configFile;
+    }
+
+    /**
+     * @see org.apache.rahas.TokenIssuer#setConfigurationElement(OMElement)
+     */
+    public void setConfigurationElement(OMElement configElement) {
+        this.configElement = configElement;
+    }
+
+    public void setConfigurationParamName(String configParamName) {
+        this.configParamName = configParamName;
+    }
+
+    private int getWSCVersion(String tokenTypeValue) throws ConversationException {
+
+        if (tokenTypeValue == null) {
+            return ConversationConstants.DEFAULT_VERSION;
+        }
+
+        if (tokenTypeValue.startsWith(ConversationConstants.WSC_NS_05_02)) {
+            return ConversationConstants.getWSTVersion(ConversationConstants.WSC_NS_05_02);
+        } else if (tokenTypeValue.startsWith(ConversationConstants.WSC_NS_05_12)) {
+            return ConversationConstants.getWSTVersion(ConversationConstants.WSC_NS_05_12);
+        } else {
+            throw new ConversationException("unsupportedSecConvVersion");
+        }
+    }
+    
+    /**
+     * Creates the unique (reproducible) id for to hold the context identifier
+     * of the message exchange.
+     * @return
+     */
+    private String getContextIdentifierKey(MessageContext msgContext) {
+        return msgContext.getAxisService().getName();
+    }
+    
+    
+    /**
+     * Returns the map of security context token identifiers
+     * @return
+     */
+    private Hashtable getContextMap(MessageContext msgContext) {
+        //Fist check whether its there
+        Object map = msgContext.getConfigurationContext().getProperty(
+                ConversationConstants.KEY_CONTEXT_MAP);
+        
+        if(map == null) {
+            //If not create a new one
+            map = new Hashtable();
+            //Set the map globally
+            msgContext.getConfigurationContext().setProperty(
+                    ConversationConstants.KEY_CONTEXT_MAP, map);
+        }
+        
+        return (Hashtable)map;
+    }
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SCTIssuerConfig.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SCTIssuerConfig.java
new file mode 100644
index 0000000..d790261
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/SCTIssuerConfig.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2004,2005 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.rahas.impl;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.rahas.TrustException;
+
+import javax.xml.namespace.QName;
+
+import java.io.FileInputStream;
+
+/**
+ * SCTIssuer Configuration processor
+ */
+public class SCTIssuerConfig extends AbstractIssuerConfig{
+
+    public final static QName SCT_ISSUER_CONFIG = new QName("sct-issuer-config");
+    protected byte[] requesterEntropy;
+
+    private SCTIssuerConfig(OMElement elem) throws TrustException {
+        OMElement proofKeyElem = elem.getFirstChildWithName(PROOF_KEY_TYPE);
+        if (proofKeyElem != null) {
+            this.proofKeyType = proofKeyElem.getText().trim();
+        }
+
+        OMElement cryptoPropertiesElem = elem
+                .getFirstChildWithName(new QName("cryptoProperties"));
+
+        if (!TokenIssuerUtil.BINARY_SECRET.equals(proofKeyType) && cryptoPropertiesElem == null) {
+            throw new TrustException("sctIssuerCryptoPropertiesMissing");
+        }
+
+        this.addRequestedAttachedRef =
+                elem.getFirstChildWithName(ADD_REQUESTED_ATTACHED_REF) != null;
+        this.addRequestedUnattachedRef =
+                elem.getFirstChildWithName(ADD_REQUESTED_UNATTACHED_REF) != null;
+        if ((cryptoPropertiesElement =
+                cryptoPropertiesElem.getFirstChildWithName(CRYPTO)) == null) { // no children. Hence, prop file shud have been defined
+            this.cryptoPropertiesFile = cryptoPropertiesElem.getText().trim();
+        }
+        // else Props should be defined as children of a crypto element
+        
+        OMElement keyCompElem = elem.getFirstChildWithName(KeyComputation.KEY_COMPUTATION);
+        if (keyCompElem != null && keyCompElem.getText() != null && !"".equals(keyCompElem)) {
+            this.keyComputation = Integer.parseInt(keyCompElem.getText());
+        }
+    }
+
+    public static SCTIssuerConfig load(OMElement elem) throws TrustException {
+        return new SCTIssuerConfig(elem);
+    }
+
+    public static SCTIssuerConfig load(String configFilePath)
+            throws TrustException {
+        FileInputStream fis;
+        StAXOMBuilder builder;
+        try {
+            fis = new FileInputStream(configFilePath);
+            builder = new StAXOMBuilder(fis);
+        } catch (Exception e) {
+            throw new TrustException("errorLoadingConfigFile",
+                    new String[] { configFilePath });
+        }
+
+        return load(builder.getDocumentElement());
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenCancelerConfig.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenCancelerConfig.java
new file mode 100644
index 0000000..820cf6b
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenCancelerConfig.java
@@ -0,0 +1,80 @@
+/*                                                                             
+ * Copyright 2004,2005 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.rahas.impl;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.rahas.TrustException;
+
+import javax.xml.namespace.QName;
+import java.io.FileInputStream;
+
+/**
+ * 
+ */
+public class TokenCancelerConfig {
+
+   /*
+   <parameter name="token-canceler-config">
+		<token-canceler-config>
+			<proofToken>EncryptedKey</proofToken>
+			<cryptoProperties>sctIssuer.properties</cryptoProperties>
+			<addRequestedAttachedRef />
+		</stoken-canceler-config>
+    </parameter>
+    */
+    public final static QName TOKEN_CANCELER_CONFIG = new QName("token-canceler-config");
+
+    private TokenCancelerConfig(OMElement elem) throws TrustException {
+        /*OMElement proofTokenElem =
+                elem.getFirstChildWithName(new QName("proofToken"));
+        if (proofTokenElem != null) {
+            this.proofTokenType = proofTokenElem.getText().trim();
+        }
+
+        OMElement cryptoPropertiesElem = elem
+                .getFirstChildWithName(new QName("cryptoProperties"));
+
+        if (!SCTIssuer.BINARY_SECRET.equals(proofTokenType)
+            && cryptoPropertiesElem == null) {
+            throw new TrustException("sctIssuerCryptoPropertiesMissing");
+        }
+
+        this.addRequestedAttachedRef = elem
+                .getFirstChildWithName(ADD_REQUESTED_ATTACHED_REF) != null;
+        this.addRequestedUnattachedRef = elem
+                .getFirstChildWithName(ADD_REQUESTED_UNATTACHED_REF) != null;
+
+        this.cryptoPropertiesFile = cryptoPropertiesElem.getText().trim();*/
+    }
+
+    public static TokenCancelerConfig load(OMElement elem) throws TrustException {
+        return new TokenCancelerConfig(elem);
+    }
+
+    public static TokenCancelerConfig load(String configFilePath)
+            throws TrustException {
+        FileInputStream fis;
+        StAXOMBuilder builder;
+        try {
+            fis = new FileInputStream(configFilePath);
+            builder = new StAXOMBuilder(fis);
+        } catch (Exception e) {
+            throw new TrustException("errorLoadingConfigFile", new String[] { configFilePath });
+        }
+        return load(builder.getDocumentElement());
+    }
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenCancelerImpl.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenCancelerImpl.java
new file mode 100644
index 0000000..11cd39f
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenCancelerImpl.java
@@ -0,0 +1,202 @@
+/*                                                                             
+ * Copyright 2004,2005 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.rahas.impl;
+
+import org.apache.rahas.TokenCanceler;
+import org.apache.rahas.RahasData;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.TokenStorage;
+import org.apache.rahas.Token;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.context.MessageContext;
+
+import javax.xml.namespace.QName;
+
+/**
+ * 
+ */
+public class TokenCancelerImpl implements TokenCanceler {
+
+    private String configFile;
+    private OMElement configElement;
+    private String configParamName;
+    
+    private static final QName QNAME_CANCEL_TARGET =
+            new QName(RahasConstants.CancelBindingLocalNames.CANCEL_TARGET);
+    private static final QName QNAME_SEC_TOKEN_REF =
+            new QName(RahasConstants.CancelBindingLocalNames.SECURITY_TOKEN_REF);
+    private static final QName QNAME_REFERENCE =
+            new QName(RahasConstants.CancelBindingLocalNames.REFERENCE);
+    private static final QName QNAME_URI = new QName(RahasConstants.CancelBindingLocalNames.URI);
+
+    /**
+     * Cancel the token specified in the request.
+     *
+     * @param data A populated <code>RahasData</code> instance
+     * @return Response SOAPEnveloper
+     * @throws org.apache.rahas.TrustException
+     *
+     */
+    public SOAPEnvelope cancel(RahasData data) throws TrustException {
+        TokenCancelerConfig config = null;
+        if (this.configElement != null) {
+            config = TokenCancelerConfig.load(configElement.
+                    getFirstChildWithName(SCTIssuerConfig.SCT_ISSUER_CONFIG));
+        }
+
+        // Look for the file
+        if (config == null && this.configFile != null) {
+            config = TokenCancelerConfig.load(this.configFile);
+        }
+
+        // Look for the param
+        if (config == null && this.configParamName != null) {
+            Parameter param = data.getInMessageContext().getParameter(this.configParamName);
+            if (param != null && param.getParameterElement() != null) {
+                config = TokenCancelerConfig.load(param.getParameterElement()
+                        .getFirstChildWithName(SCTIssuerConfig.SCT_ISSUER_CONFIG));
+            } else {
+                throw new TrustException("expectedParameterMissing",
+                                         new String[]{this.configParamName});
+            }
+        }
+
+        if (config == null) {
+            throw new TrustException("missingConfiguration",
+                                     new String[]{SCTIssuerConfig.SCT_ISSUER_CONFIG
+                                             .getLocalPart()});
+        }
+
+        OMElement rstEle = data.getRstElement();
+        OMElement cancelTargetEle = rstEle.getFirstChildWithName(QNAME_CANCEL_TARGET);
+        if (cancelTargetEle == null) {
+            throw new TrustException("requiredElementNotFound",
+                                     new String[]{QNAME_CANCEL_TARGET.getLocalPart()});
+        }
+        OMElement secTokenRefEle = cancelTargetEle.getFirstChildWithName(QNAME_SEC_TOKEN_REF);
+        String tokenId;
+        if (secTokenRefEle != null) {
+
+            /*
+            <o:SecurityTokenReference
+                 xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
+              <o:Reference URI="urn:uuid:8e6a3a95-fd1b-4c24-96d4-28e875025ff7"
+                           ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" />
+            </o:SecurityTokenReference>
+            */
+            OMElement referenceEle = secTokenRefEle.getFirstChildWithName(QNAME_REFERENCE);
+            if (referenceEle != null) {
+                OMAttribute uri = referenceEle.getAttribute(QNAME_URI);
+                if (uri != null) {
+                    tokenId = uri.getAttributeValue().substring(1);
+                } else {
+                    throw new TrustException("cannotDetermineTokenId");
+                }
+            } else {
+                throw new TrustException("cannotDetermineTokenId");
+            }
+        } else {
+            // TODO: we need to handle situation where the token itself is contained within the
+            // TODO:  <wst:CancelTarget> element
+            throw new TrustException("cannotDetermineTokenId");
+        }
+
+        // Cancel the token
+        MessageContext inMsgCtx = data.getInMessageContext();
+        TokenStorage tokenStore = TrustUtil.getTokenStore(inMsgCtx);
+        Token token = tokenStore.getToken(tokenId);
+        if (token == null) {
+            throw new TrustException("tokenNotFound", new String[]{tokenId});
+        }
+        token.setState(Token.CANCELLED);
+        tokenStore.update(token);
+
+        // Create the response SOAP Envelope
+        SOAPEnvelope responseEnv =
+                TrustUtil.
+                        createSOAPEnvelope(inMsgCtx.getEnvelope().getNamespace().getNamespaceURI());
+        OMElement rstrElem;
+        int version = data.getVersion();
+        if (RahasConstants.VERSION_05_02 == version) {
+            rstrElem = TrustUtil
+                    .createRequestSecurityTokenResponseElement(version, responseEnv.getBody());
+        } else {
+            OMElement rstrcElem = TrustUtil
+                    .createRequestSecurityTokenResponseCollectionElement(
+                            version, responseEnv.getBody());
+
+            rstrElem = TrustUtil.createRequestSecurityTokenResponseElement(version, rstrcElem);
+        }
+        OMElement reqTokenCanceledEle =
+                TrustUtil.createRequestedTokenCanceledElement(version, rstrElem);
+        return responseEnv;
+    }
+
+    /**
+     * Set the configuration file of this TokenCanceller.
+     * <p/>
+     * This is the text value of the &lt;configuration-file&gt; element of the
+     * token-dispatcher-configuration
+     *
+     * @param configFile
+     */
+    public void setConfigurationFile(String configFile) {
+        this.configFile = configFile;
+    }
+
+    /**
+     * Set the configuration element of this TokenCanceller.
+     * <p/>
+     * This is the &lt;configuration&gt; element of the
+     * token-dispatcher-configuration
+     *
+     * @param configElement <code>OMElement</code> representing the configuation
+     */
+    public void setConfigurationElement(OMElement configElement) {
+        this.configElement = configElement;
+    }
+
+    /**
+     * Set the name of the configuration parameter.
+     * <p/>
+     * If this is used then there must be a
+     * <code>org.apache.axis2.description.Parameter</code> object available in
+     * the via the messageContext when the <code>TokenIssuer</code> is called.
+     *
+     * @param configParamName
+     * @see org.apache.axis2.description.Parameter
+     */
+    public void setConfigurationParamName(String configParamName) {
+        this.configParamName = configParamName;
+    }
+
+    /**
+     * Returns the <code>wsa:Action</code> of the response.
+     *
+     * @param data A populated <code>RahasData</code> instance
+     * @return Returns the <code>wsa:Action</code> of the response
+     * @throws org.apache.rahas.TrustException
+     *
+     */
+    public String getResponseAction(RahasData data) throws TrustException {
+        return TrustUtil.getActionValue(data.getVersion(), RahasConstants.RSTR_ACTION_CANCEL);
+    }
+}
diff --git a/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenIssuerUtil.java b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenIssuerUtil.java
new file mode 100644
index 0000000..fc511c5
--- /dev/null
+++ b/rampart_1_1/modules/rahas/src/org/apache/rahas/impl/TokenIssuerUtil.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2004,2005 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.rahas.impl;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.rahas.RahasData;
+import org.apache.rahas.Token;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.rahas.RahasConstants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.components.crypto.Crypto;
+import org.apache.ws.security.components.crypto.CryptoFactory;
+import org.apache.ws.security.conversation.ConversationException;
+import org.apache.ws.security.conversation.dkalgo.P_SHA1;
+import org.apache.ws.security.message.WSSecEncryptedKey;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.apache.axis2.util.Base64;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.security.SecureRandom;
+
+/**
+ * 
+ */
+public class TokenIssuerUtil {
+
+    public final static String ENCRYPTED_KEY = "EncryptedKey";
+    public final static String BINARY_SECRET = "BinarySecret";
+
+    public static byte[] getSharedSecret(RahasData data,
+                                         int keyComputation,
+                                         int keySize) throws TrustException {
+
+        boolean reqEntrPresent = data.getRequestEntropy() != null;
+
+        try {
+            if (reqEntrPresent &&
+                keyComputation != SAMLTokenIssuerConfig.KeyComputation.KEY_COMP_USE_OWN_KEY) {
+                //If there is requestor entropy and if the issuer is not
+                //configured to use its own key
+
+                if (keyComputation ==
+                    SAMLTokenIssuerConfig.KeyComputation.KEY_COMP_PROVIDE_ENT) {
+                    data.setResponseEntropy(WSSecurityUtil.generateNonce(keySize / 8));
+                    P_SHA1 p_sha1 = new P_SHA1();
+                    return p_sha1.createKey(data.getRequestEntropy(),
+                                            data.getResponseEntropy(),
+                                            0,
+                                            keySize / 8);
+                } else {
+                    //If we reach this its expected to use the requestor's
+                    //entropy
+                    return data.getRequestEntropy();
+                }
+            } else { // need to use a generated key
+                return generateEphemeralKey(keySize);
+            }
+        } catch (WSSecurityException e) {
+            throw new TrustException("errorCreatingSymmKey", e);
+        } catch (ConversationException e) {
+            throw new TrustException("errorCreatingSymmKey", e);
+        }
+    }
+
+    public static void handleRequestedProofToken(RahasData data,
+                                                 int wstVersion,
+                                                 AbstractIssuerConfig config,
+                                                 OMElement rstrElem,
+                                                 Token token,
+                                                 Document doc) throws TrustException {
+        OMElement reqProofTokElem =
+                TrustUtil.createRequestedProofTokenElement(wstVersion, rstrElem);
+
+        if (config.keyComputation == AbstractIssuerConfig.KeyComputation.KEY_COMP_PROVIDE_ENT
+            && data.getRequestEntropy() != null) {
+            //If we there's requestor entropy and its configured to provide
+            //entropy then we have to set the entropy value and
+            //set the RPT to include a ComputedKey element
+
+            OMElement respEntrElem = TrustUtil.createEntropyElement(wstVersion, rstrElem);
+            String entr = Base64.encode(data.getResponseEntropy());
+            OMElement binSecElem = TrustUtil.createBinarySecretElement(wstVersion,
+                                                            respEntrElem,
+                                                            RahasConstants.BIN_SEC_TYPE_NONCE);
+            binSecElem.setText(entr);
+
+            OMElement compKeyElem =
+                    TrustUtil.createComputedKeyElement(wstVersion, reqProofTokElem);
+            compKeyElem.setText(data.getWstNs() + RahasConstants.COMPUTED_KEY_PSHA1);
+        } else {
+            if (TokenIssuerUtil.ENCRYPTED_KEY.equals(config.proofKeyType)) {
+                WSSecEncryptedKey encrKeyBuilder = new WSSecEncryptedKey();
+                Crypto crypto;
+                if (config.cryptoPropertiesElement != null) { // crypto props defined as elements
+                    crypto = CryptoFactory.getInstance(TrustUtil.toProperties(config.cryptoPropertiesElement),
+                                                       data.getInMessageContext().
+                                                               getAxisService().getClassLoader());
+                } else { // crypto props defined in a properties file
+                    crypto = CryptoFactory.getInstance(config.cryptoPropertiesFile,
+                                                       data.getInMessageContext().
+                                                               getAxisService().getClassLoader());
+                }
+
+                encrKeyBuilder.setKeyIdentifierType(WSConstants.THUMBPRINT_IDENTIFIER);
+                try {
+                    encrKeyBuilder.setUseThisCert(data.getClientCert());
+                    encrKeyBuilder.prepare(doc, crypto);
+                } catch (WSSecurityException e) {
+                    throw new TrustException("errorInBuildingTheEncryptedKeyForPrincipal",
+                                             new String[]{data.
+                                                     getClientCert().getSubjectDN().getName()});
+                }
+                Element encryptedKeyElem = encrKeyBuilder.getEncryptedKeyElement();
+                Element bstElem = encrKeyBuilder.getBinarySecurityTokenElement();
+                if (bstElem != null) {
+                    reqProofTokElem.addChild((OMElement) bstElem);
+                }
+
+                reqProofTokElem.addChild((OMElement) encryptedKeyElem);
+
+                token.setSecret(encrKeyBuilder.getEphemeralKey());
+            } else if (TokenIssuerUtil.BINARY_SECRET.equals(config.proofKeyType)) {
+                byte[] secret = TokenIssuerUtil.getSharedSecret(data,
+                                                                config.keyComputation,
+                                                                config.keySize);
+                OMElement binSecElem = TrustUtil.createBinarySecretElement(wstVersion,
+                                                                           reqProofTokElem,
+                                                                           null);
+                binSecElem.setText(org.apache.axis2.util.Base64.encode(secret));
+                token.setSecret(secret);
+            } else {
+                throw new IllegalArgumentException(config.proofKeyType);
+            }
+        }
+    }
+
+    private static byte[] generateEphemeralKey(int keySize) throws TrustException {
+        try {
+            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
+            byte[] temp = new byte[keySize / 8];
+            random.nextBytes(temp);
+            return temp;
+        } catch (Exception e) {
+            throw new TrustException("errorCreatingSymmKey", e);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/rahas/sts-aar-resources/rahas-sts.jks b/rampart_1_1/modules/rahas/sts-aar-resources/rahas-sts.jks
new file mode 100644
index 0000000..02d7c4e
--- /dev/null
+++ b/rampart_1_1/modules/rahas/sts-aar-resources/rahas-sts.jks
Binary files differ
diff --git a/rampart_1_1/modules/rahas/sts-aar-resources/saml-issuer-config.xml b/rampart_1_1/modules/rahas/sts-aar-resources/saml-issuer-config.xml
new file mode 100644
index 0000000..553ee61
--- /dev/null
+++ b/rampart_1_1/modules/rahas/sts-aar-resources/saml-issuer-config.xml
@@ -0,0 +1,46 @@
+<saml-issuer-config>
+	<issuerName>Test_STS</issuerName>
+
+	<!-- alias of the issuer's private key -->
+	<issuerKeyAlias>ip</issuerKeyAlias>
+
+	<!-- password of the issuer's private key -->
+	<issuerKeyPassword>password</issuerKeyPassword>
+
+    <cryptoProperties>
+       <crypto provider="org.apache.ws.security.components.crypto.Merlin">
+            <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>
+            <property name="org.apache.ws.security.crypto.merlin.file">META-INF/rahas-sts.jks</property>
+            <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>
+        </crypto>
+    </cryptoProperties>
+    
+    <timeToLive>300000</timeToLive>
+    
+	<keySize>256</keySize>
+	
+	<addRequestedAttachedRef />
+	<addRequestedUnattachedRef />
+
+    <!--
+       Key computation mechanism
+       1 - Use Request Entropy
+       2 - Provide Entropy
+       3 - Use Own Key
+    -->
+    <keyComputation>2</keyComputation>
+
+    <!--
+       proofKeyType element is valid only if the keyComputation is set to 3
+       i.e. Use Own Key
+
+       Valid values are: EncryptedKey & BinarySecret
+    -->
+    <proofKeyType>BinarySecret</proofKeyType>
+
+    <trusted-services>
+        <!-- The service name and the alias of the trusted cert to use -->
+		<service alias="bob">http://localhost:8080/axis2/services/STS</service>
+	</trusted-services>
+	
+</saml-issuer-config>
diff --git a/rampart_1_1/modules/rahas/sts-aar-resources/sct-issuer-config.xml b/rampart_1_1/modules/rahas/sts-aar-resources/sct-issuer-config.xml
new file mode 100644
index 0000000..2c7952a
--- /dev/null
+++ b/rampart_1_1/modules/rahas/sts-aar-resources/sct-issuer-config.xml
@@ -0,0 +1,29 @@
+<sct-issuer-config>
+
+	<cryptoProperties>
+       <crypto provider="org.apache.ws.security.components.crypto.Merlin">
+            <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>
+            <property name="org.apache.ws.security.crypto.merlin.file">META-INF/rahas-sts.jks</property>
+            <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>
+        </crypto>
+	</cryptoProperties>
+
+	<addRequestedAttachedRef />
+	<addRequestedUnattachedRef />
+
+    <!--
+       Key computation mechanism
+       1 - Use Request Entropy
+       2 - Provide Entropy
+       3 - Use Own Key
+    -->
+    <keyComputation>3</keyComputation>
+
+    <!--
+       proofKeyType element is valid only if the keyComputation is set to 3
+       i.e. Use Own Key
+
+       Valid values are: EncryptedKey & BinarySecret
+    -->
+    <proofKeyType>BinarySecret</proofKeyType>
+</sct-issuer-config>
diff --git a/rampart_1_1/modules/rahas/sts-aar-resources/services.xml b/rampart_1_1/modules/rahas/sts-aar-resources/services.xml
new file mode 100644
index 0000000..ac25751
--- /dev/null
+++ b/rampart_1_1/modules/rahas/sts-aar-resources/services.xml
@@ -0,0 +1,89 @@
+<!-- Security token service configuration -->
+<service name="STS">
+
+	<operation name="RequestSecurityToken">
+        <messageReceiver class="org.apache.rahas.STSMessageReceiver"/>
+
+		<!-- Action mapping to accept SCT requests -->
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT</actionMapping>
+
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Renew</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Cancel</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Validate</actionMapping>
+		
+	</operation>
+	
+	<!-- Using the config file -->
+	<parameter name="token-dispatcher-configuration-file">META-INF/token-dispatcher-configuration.xml</parameter>
+	
+	<!-- Configure Rampart to authenticate clients -->
+	<wsp:Policy wsu:Id="SigOnly" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+		<wsp:ExactlyOne>
+			<wsp:All>
+				
+				<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				
+					<ramp:user>ip</ramp:user>
+					<ramp:encryptionUser>useReqSigCert</ramp:encryptionUser>
+					<ramp:passwordCallbackClass>PWCBHandler</ramp:passwordCallbackClass>
+					
+					<ramp:signatureCrypto>
+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">META-INF/rahas-sts.jks</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+						</ramp:crypto>
+					</ramp:signatureCrypto>
+				
+				</ramp:RampartConfig>
+				
+				<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<wsp:Policy>
+						<sp:InitiatorToken>
+							<wsp:Policy>
+								<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+									<wsp:Policy>
+										<sp:WssX509V3Token10/>
+									</wsp:Policy>
+								</sp:X509Token>
+							</wsp:Policy>
+						</sp:InitiatorToken>
+						<sp:RecipientToken>
+							<wsp:Policy>
+								<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+									<wsp:Policy>
+										<sp:WssX509V3Token10/>
+									</wsp:Policy>
+								</sp:X509Token>
+							</wsp:Policy>
+						</sp:RecipientToken>
+						<sp:AlgorithmSuite>
+							<wsp:Policy>
+								<sp:TripleDesRsa15/>
+							</wsp:Policy>
+						</sp:AlgorithmSuite>
+						<sp:Layout>
+							<wsp:Policy>
+								<sp:Strict/>
+							</wsp:Policy>
+						</sp:Layout>
+						<sp:IncludeTimestamp/>
+						<sp:OnlySignEntireHeadersAndBody/>
+					</wsp:Policy>
+				</sp:AsymmetricBinding>
+				<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<wsp:Policy>
+						<sp:MustSupportRefKeyIdentifier/>
+						<sp:MustSupportRefIssuerSerial/>
+					</wsp:Policy>
+				</sp:Wss10>
+				<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<sp:Body/>
+				</sp:SignedParts>
+			</wsp:All>
+		</wsp:ExactlyOne>
+	</wsp:Policy>
+	
+</service>
diff --git a/rampart_1_1/modules/rahas/sts-aar-resources/token-canceler-config.xml b/rampart_1_1/modules/rahas/sts-aar-resources/token-canceler-config.xml
new file mode 100644
index 0000000..39ce78b
--- /dev/null
+++ b/rampart_1_1/modules/rahas/sts-aar-resources/token-canceler-config.xml
@@ -0,0 +1,3 @@
+<token-canceler-config>
+
+</token-canceler-config>
diff --git a/rampart_1_1/modules/rahas/sts-aar-resources/token-dispatcher-configuration.xml b/rampart_1_1/modules/rahas/sts-aar-resources/token-dispatcher-configuration.xml
new file mode 100644
index 0000000..7c405a0
--- /dev/null
+++ b/rampart_1_1/modules/rahas/sts-aar-resources/token-dispatcher-configuration.xml
@@ -0,0 +1,17 @@
+<token-dispatcher-configuration>
+    <!-- Issuers. You may have many issuers. -->
+    <issuer class="org.apache.rahas.impl.SCTIssuer" default="true">
+		<configuration type="file">sct-issuer-config.xml</configuration>
+		<tokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</tokenType>
+	</issuer>
+	<issuer class="org.apache.rahas.impl.SAMLTokenIssuer">
+		<configuration type="file">META-INF/saml-issuer-config.xml</configuration>
+		<tokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</tokenType>
+	</issuer>
+
+    <!-- Only a single canceler is allowed -->
+    <canceler class="org.apache.rahas.impl.TokenCancelerImpl">
+		<configuration type="file">META-INF/token-canceler-config.xml</configuration>
+	</canceler>
+
+</token-dispatcher-configuration>
\ No newline at end of file
diff --git a/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.invalid.1.xml b/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.invalid.1.xml
new file mode 100644
index 0000000..864f4b2
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.invalid.1.xml
@@ -0,0 +1,6 @@
+<token-dispatcher-configuration>
+	<issuer class="org.apache.rahas.TempIssuer">
+		<tokenType>http://example.org/mySpecialToken1</tokenType>
+		<tokenType>http://example.org/mySpecialToken2</tokenType>
+	</issuer>
+</token-dispatcher-configuration>
diff --git a/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.invalid.2.xml b/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.invalid.2.xml
new file mode 100644
index 0000000..86d4022
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.invalid.2.xml
@@ -0,0 +1,6 @@
+<token-dispatcher-configuration>
+	<issuer class="org.apache.rahas.TempIssuer" default="true">
+		<tokenType></tokenType>
+		<tokenType>http://example.org/mySpecialToken2</tokenType>
+	</issuer>
+</token-dispatcher-configuration>
diff --git a/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.xml b/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.xml
new file mode 100644
index 0000000..7f4f99b
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test-resources/trust/dispatcher.config.xml
@@ -0,0 +1,6 @@
+<token-dispatcher-configuration>
+	<issuer class="org.apache.rahas.TempIssuer" default="true">
+		<tokenType>http://example.org/mySpecialToken1</tokenType>
+		<tokenType>http://example.org/mySpecialToken2</tokenType>
+	</issuer>
+</token-dispatcher-configuration>
diff --git a/rampart_1_1/modules/rahas/test-resources/trust/impl/sct-issuer-config.xml b/rampart_1_1/modules/rahas/test-resources/trust/impl/sct-issuer-config.xml
new file mode 100644
index 0000000..615c7dc
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test-resources/trust/impl/sct-issuer-config.xml
@@ -0,0 +1,4 @@
+<sct-issuer-config>
+	<proofToken>EncryptedKey</proofToken>
+	<cryptoProperties>sctIssuer.properties</cryptoProperties>
+</sct-issuer-config>
diff --git a/rampart_1_1/modules/rahas/test-resources/trust/impl/sctIssuer.properties b/rampart_1_1/modules/rahas/test-resources/trust/impl/sctIssuer.properties
new file mode 100755
index 0000000..c126c57
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test-resources/trust/impl/sctIssuer.properties
@@ -0,0 +1,4 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=sts.jks
diff --git a/rampart_1_1/modules/rahas/test-resources/trust/impl/sts-services.xml b/rampart_1_1/modules/rahas/test-resources/trust/impl/sts-services.xml
new file mode 100644
index 0000000..fb3a4cd
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test-resources/trust/impl/sts-services.xml
@@ -0,0 +1,29 @@
+<!-- Security token service configuration -->
+<service name="STS">
+
+	<operation name="RequestSecurityToken">
+		<messageReceiver class="org.apache.rahas.STSMessageReceiver"/>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Renew</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Cancel</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Validate</actionMapping>
+		<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT</actionMapping>
+	</operation>
+	
+	<!-- Using the config file -->
+	<parameter name="token-dispatcher-configuration-file">token-dispatcher-configuration.xml</parameter>
+	
+    <parameter name="InflowSecurity">
+	<action>
+            <items>Timestamp Signature</items>
+            <signaturePropFile>sctIssuer.properties</signaturePropFile>
+        </action>
+    </parameter>
+	
+	<parameter name="OutflowSecurity">
+      	<action>
+        	<items>Timestamp</items>
+		</action>
+    </parameter>
+	
+</service>
diff --git a/rampart_1_1/modules/rahas/test-resources/trust/impl/sts.jks b/rampart_1_1/modules/rahas/test-resources/trust/impl/sts.jks
new file mode 100644
index 0000000..b4514d7
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test-resources/trust/impl/sts.jks
Binary files differ
diff --git a/rampart_1_1/modules/rahas/test-resources/trust/impl/token-dispatcher-configuration.xml b/rampart_1_1/modules/rahas/test-resources/trust/impl/token-dispatcher-configuration.xml
new file mode 100644
index 0000000..b5c16b8
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test-resources/trust/impl/token-dispatcher-configuration.xml
@@ -0,0 +1,6 @@
+<token-dispatcher-configuration>
+			<issuer class="org.apache.rahas.impl.SCTIssuer" default="true">
+				<configuration-file>sct-issuer-config.xml</configuration-file>
+				<tokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</tokenType>
+			</issuer>
+</token-dispatcher-configuration>
diff --git a/rampart_1_1/modules/rahas/test/org/apache/rahas/SimpleTokenStoreTest.java b/rampart_1_1/modules/rahas/test/org/apache/rahas/SimpleTokenStoreTest.java
new file mode 100644
index 0000000..e824232
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test/org/apache/rahas/SimpleTokenStoreTest.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+
+import java.util.Date;
+
+public class SimpleTokenStoreTest extends TestCase {
+
+    public void testAdd() {
+        SimpleTokenStore store = new SimpleTokenStore();
+        try {
+            store.add(getTestToken("id-1"));
+        } catch (TrustException e) {
+            fail("Adding a new token to an empty store should not fail, " +
+                 "message : " + e.getMessage());
+        }
+        Token token = null;
+        try {
+            token = getTestToken("id-1");
+            store.add(token);
+            fail("Adding an existing token must throw an exception");
+        } catch (TrustException e) {
+            assertEquals("Incorrect exception message",
+                         TrustException.getMessage("tokenAlreadyExists",
+                                                   new String[]{token.getId()}), e.getMessage());
+        }
+    }
+
+    public void testGettokenIdentifiers() {
+        SimpleTokenStore store = new SimpleTokenStore();
+        try {
+            String[] ids = store.getTokenIdentifiers();
+            assertEquals("There should not be any token ids at this point", 0, ids.length);
+        } catch (TrustException e) {
+            fail(e.getMessage());
+        }
+        try {
+            store.add(getTestToken("id-1"));
+            store.add(getTestToken("id-2"));
+            store.add(getTestToken("id-3"));
+            String[] ids = store.getTokenIdentifiers();
+            assertEquals("Incorrect number fo token ids", 3, ids.length);
+        } catch (TrustException e) {
+            fail(e.getMessage());
+        }
+    }
+
+    public void testUpdate() {
+        SimpleTokenStore store = new SimpleTokenStore();
+        Token token1 = null;
+        try {
+            token1 = getTestToken("id-1");
+        } catch (TrustException e) {
+            fail();
+        }
+        try {
+            store.update(token1);
+            fail("An exception must be thrown at this point : noTokenToUpdate");
+        } catch (TrustException e) {
+            assertEquals("Incorrect exception message", TrustException
+                    .getMessage("noTokenToUpdate", new String[]{token1
+                    .getId()}), e.getMessage());
+        }
+        try {
+            store.add(token1);
+            store.add(getTestToken("id-2"));
+            store.add(getTestToken("id-3"));
+            token1.setState(Token.EXPIRED);
+            store.update(token1);
+        } catch (TrustException e) {
+            fail(e.getMessage());
+        }
+    }
+
+    public void testGetValidExpiredRenewedTokens() {
+        SimpleTokenStore store = new SimpleTokenStore();
+        try {
+            Token token1 = getTestToken("id-1", new Date(System.currentTimeMillis() + 10000));
+            Token token2 = getTestToken("id-2", new Date(System.currentTimeMillis() + 10000));
+            Token token3 = getTestToken("id-3", new Date(System.currentTimeMillis() + 10000));
+            Token token4 = getTestToken("id-4", new Date(System.currentTimeMillis() + 10000));
+            Token token5 = getTestToken("id-5", new Date(System.currentTimeMillis() + 10000));
+            Token token6 = getTestToken("id-6", new Date(System.currentTimeMillis() + 10000));
+            Token token7 = getTestToken("id-7", new Date(System.currentTimeMillis() + 10000));
+
+            token1.setState(Token.ISSUED);
+            token2.setState(Token.ISSUED);
+            token3.setState(Token.ISSUED);
+            token4.setState(Token.RENEWED);
+            token5.setState(Token.RENEWED);
+            token6.setState(Token.EXPIRED);
+            token7.setState(Token.CANCELLED);
+
+            store.add(token1);
+            store.add(token2);
+            store.add(token3);
+            store.add(token4);
+            store.add(token5);
+            store.add(token6);
+            store.add(token7);
+
+            Token[] list = store.getValidTokens();
+            Token[] list2 = store.getExpiredTokens();
+            Token[] list3 = store.getRenewedTokens();
+            Token[] list4 = store.getCancelledTokens();
+
+            assertEquals("Incorrect number of valid tokens", 5, list.length);
+            assertEquals("Incorrect number of expired tokens", 1, list2.length);
+            assertEquals("Incorrect number of newed tokens", 2, list3.length);
+            assertEquals("Incorrect number of newed tokens", 1, list4.length);
+
+        } catch (TrustException e) {
+            fail(e.getMessage());
+        }
+    }
+
+    private Token getTestToken(String tokenId) throws TrustException {
+        return getTestToken(tokenId, new Date());
+    }
+
+    private Token getTestToken(String tokenId, Date expiry) throws TrustException {
+        OMFactory factory = DOOMAbstractFactory.getOMFactory();
+        OMElement tokenEle = factory.createOMElement("testToken", "", "");
+        Token token = new Token(tokenId, tokenEle, new Date(), expiry);
+        token.setAttachedReference(tokenEle);
+        token.setPreviousToken(tokenEle);
+        token.setState(Token.ISSUED);
+        token.setSecret("Top secret!".getBytes());
+        return token;
+    }
+}
diff --git a/rampart_1_1/modules/rahas/test/org/apache/rahas/TempIssuer.java b/rampart_1_1/modules/rahas/test/org/apache/rahas/TempIssuer.java
new file mode 100644
index 0000000..042713e
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test/org/apache/rahas/TempIssuer.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+
+public class TempIssuer implements TokenIssuer {
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TokenIssuer#setConfigurationFile(java.lang.String)
+     */
+    public void setConfigurationFile(String configFile) {
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TokenIssuer#setConfigurationElement(org.apache.axiom.om.OMElement)
+     */
+    public void setConfigurationElement(OMElement configElement) {
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TokenIssuer#setConfigurationParamName(java.lang.String)
+     */
+    public void setConfigurationParamName(String configParamName) {
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TokenIssuer#issue(org.apache.rahas.RahasData)
+     */
+    public SOAPEnvelope issue(RahasData data) throws TrustException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.rahas.TokenIssuer#getResponseAction(org.apache.rahas.RahasData)
+     */
+    public String getResponseAction(RahasData data) throws TrustException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+}
diff --git a/rampart_1_1/modules/rahas/test/org/apache/rahas/TokenRequestDispatcherConfigTest.java b/rampart_1_1/modules/rahas/test/org/apache/rahas/TokenRequestDispatcherConfigTest.java
new file mode 100644
index 0000000..44bbc2f
--- /dev/null
+++ b/rampart_1_1/modules/rahas/test/org/apache/rahas/TokenRequestDispatcherConfigTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2004,2005 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.rahas;
+
+import junit.framework.TestCase;
+
+public class TokenRequestDispatcherConfigTest extends TestCase {
+
+    public TokenRequestDispatcherConfigTest() {
+        super();
+    }
+
+    public TokenRequestDispatcherConfigTest(String arg0) {
+        super(arg0);
+    }
+
+    /**
+     * Testing a valid config file
+     */
+    public void testWithConfigFile() {
+        try {
+            TokenRequestDispatcherConfig config = TokenRequestDispatcherConfig
+                    .load("test-resources/trust/dispatcher.config.xml");
+
+            assertEquals("Incorrect default issuer class name",
+                    "org.apache.rahas.TempIssuer", config
+                            .getDefaultIssuerName());
+
+            TokenIssuer issuer = config
+                    .getIssuer("http://example.org/mySpecialToken1");
+
+            assertEquals("Incorrect issuer for token type : "
+                    + "http://example.org/mySpecialToken1", TempIssuer.class
+                    .getName(), issuer.getClass().getName());
+
+        } catch (TrustException e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+
+    /**
+     * Testing expected faliure when the default issuer is not specified
+     */
+    public void testInvalidCOnfigWithMissingDefaultIssuer() {
+        try {
+            TokenRequestDispatcherConfig
+                .load("test-resources/trust/dispatcher.config.invalid.1.xml");
+            fail("This should fail since there's no default isser specified");
+        } catch (TrustException e) {
+            assertEquals("Incorrect error", TrustException.getMessage(
+                    "defaultIssuerMissing", null), e.getMessage());
+        }
+    }
+
+    /**
+     * Testing expected faliure when the tokenType value is missing from a 
+     * tokenType definition
+     */
+    public void testInvalidRequestTypeDef() {
+        try {
+            TokenRequestDispatcherConfig
+                .load("test-resources/trust/dispatcher.config.invalid.2.xml");
+            fail("This should fail since there is an invalid " +
+                    "requestType definition");
+        } catch (TrustException e) {
+            assertEquals("Incorrect error", TrustException.getMessage(
+                    "invalidTokenTypeDefinition", new String[] { "Issuer",
+                            TempIssuer.class.getName() }), e.getMessage());
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/maven.xml b/rampart_1_1/modules/saaj/maven.xml
new file mode 100644
index 0000000..01d921c
--- /dev/null
+++ b/rampart_1_1/modules/saaj/maven.xml
@@ -0,0 +1,33 @@
+<?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:u="jelly:util"
+         xmlns:maven="jelly:maven"
+         xmlns:deploy="deploy"
+         xmlns:ant="jelly:ant">
+
+    <!-- <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>-->
+
+    <preGoal name="test:compile">
+        <ant:property name="maven.class.path" refid="maven.dependency.classpath"/>
+        
+        <!-- copy the mars so that they are available on the test classpath -->
+        <copy file="../addressing/target/addressing-${addressing_version}.mar"
+            tofile="target/test-classes/modules/addressing-${addressing_version}.mar"/>
+    </preGoal>
+
+    <postGoal name="test:compile">
+        <mkdir dir="target/test-resources/saaj-repo"/>
+        <ant:copy toDir="target/test-resources/saaj-repo">
+            <ant:fileset file="test-resources/axis2.xml"/>
+        </ant:copy>
+    </postGoal>
+</project>
diff --git a/rampart_1_1/modules/saaj/project.properties b/rampart_1_1/modules/saaj/project.properties
new file mode 100644
index 0000000..6d7fe44
--- /dev/null
+++ b/rampart_1_1/modules/saaj/project.properties
@@ -0,0 +1,18 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

+maven.junit.jvmargs=-Djavax.xml.soap.MessageFactory=org.apache.axis2.saaj.MessageFactoryImpl -Djavax.xml.soap.SOAPFactory=org.apache.axis2.saaj.SOAPFactoryImpl -Djavax.xml.soap.SOAPConnectionFactory=org.apache.axis2.saaj.SOAPConnectionFactoryImpl

diff --git a/rampart_1_1/modules/saaj/project.xml b/rampart_1_1/modules/saaj/project.xml
new file mode 100644
index 0000000..95086e6
--- /dev/null
+++ b/rampart_1_1/modules/saaj/project.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - SAAJ</name>
+    <id>axis2-saaj</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>Axis2 SAAJ implementation</description>
+
+    <build>
+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
+        <sourceDirectory>src</sourceDirectory>
+        <unitTestSourceDirectory>test</unitTestSourceDirectory>
+
+        <!--<sourceModifications>
+           <sourceModification>
+               <className>javax.activation.DataHandler</className>
+               <excludes>
+                   <exclude>javax/xml/soap/**.java</exclude>
+                   <exclude>org/apache/axis2/saaj/**.java</exclude>
+               </excludes>
+           </sourceModification>
+       </sourceModifications> -->
+
+        <unitTest>
+            <includes>
+                <include>**/*Test.java</include>
+            </includes>
+            <excludes>
+            </excludes>
+
+            <resources>
+                <resource>
+                    <directory>${basedir}/test-resources</directory>
+                </resource>
+                <resource>
+                    <directory>conf</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                    </includes>
+                </resource>
+                <resource>
+                    <directory>src</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                        <include>**/*.xml</include>
+                    </includes>
+                </resource>
+            </resources>
+        </unitTest>
+
+        <resources>
+            <resource>
+                <directory>conf</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+        </resources>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-java2wsdl</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+		<dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-dom</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-addressing</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <!-- external JARs -->
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>httpcomponents-httpcore</groupId>
+            <artifactId>jakarta-httpcore</artifactId>
+            <version>${jakarta.httpcore.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency> 
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+            <version>${xml_apis.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+            <version>${xerces.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javamail.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>backport-util-concurrent</groupId>
+            <artifactId>backport-util-concurrent</artifactId>
+            <version>${backport_util_concurrent.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons.httpclient.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${neethi.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+         <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${XmlSchema.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons.codec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>annogen</groupId>
+            <artifactId>annogen</artifactId>
+            <version>${annogen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xmlunit</groupId>
+            <artifactId>xmlunit</artifactId>
+            <version>${xmlunit.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+    </dependencies>
+
+    <reports/>
+</project>
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/namespace/QName.java b/rampart_1_1/modules/saaj/src/javax/xml/namespace/QName.java
new file mode 100644
index 0000000..6b06068
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/namespace/QName.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright 2004,2005 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 {
+
+    private static final long serialVersionUID = -6756054858541526837L;
+
+	/**
+     * 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;
+        }
+
+        return (namespaceURI.equals(((QName) obj).namespaceURI))
+                && (localPart.equals(((QName) obj).localPart));
+
+    }
+
+    /**
+     * 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
+     * @return QName corresponding to the given String
+     * @throws java.lang.IllegalArgumentException
+     *          If the specified String cannot be parsed as a QName
+     */
+    public static QName valueOf(String s) {
+
+        if ((s == null) || "".equals(s)) {
+            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();
+    }
+}
+
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/AttachmentPart.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/AttachmentPart.java
new file mode 100644
index 0000000..3aba34c
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/AttachmentPart.java
@@ -0,0 +1,437 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import javax.activation.DataHandler;
+import java.util.Iterator;
+
+/**
+ * <P>A single attachment to a <CODE>SOAPMessage</CODE> object. A
+ * <CODE>SOAPMessage</CODE> object may contain zero, one, or many
+ * <CODE>AttachmentPart</CODE> objects. Each <CODE>
+ * AttachmentPart</CODE> object consists of two parts,
+ * application-specific content and associated MIME headers. The
+ * MIME headers consists of name/value pairs that can be used to
+ * identify and describe the content.</P>
+ * <p/>
+ * <P>An <CODE>AttachmentPart</CODE> object must conform to
+ * certain standards.</P>
+ * <p/>
+ * <OL>
+ * <LI>It must conform to <A href=
+ * "http://www.ietf.org/rfc/rfc2045.txt">MIME [RFC2045]
+ * standards</A></LI>
+ * <p/>
+ * <LI>It MUST contain content</LI>
+ * <p/>
+ * <LI>
+ * The header portion MUST include the following header:
+ * <p/>
+ * <UL>
+ * <LI>
+ * <CODE>Content-Type</CODE><BR>
+ * This header identifies the type of data in the content
+ * of an <CODE>AttachmentPart</CODE> object and MUST
+ * conform to [RFC2045]. The following is an example of a
+ * Content-Type header:
+ * <PRE>
+ * Content-Type:  application/xml
+ * <p/>
+ * </PRE>
+ * The following line of code, in which <CODE>ap</CODE> is
+ * an <CODE>AttachmentPart</CODE> object, sets the header
+ * shown in the previous example.
+ * <PRE>
+ * ap.setMimeHeader("Content-Type", "application/xml");
+ * <p/>
+ * </PRE>
+ * <p/>
+ * <P></P>
+ * </LI>
+ * </UL>
+ * </LI>
+ * </OL>
+ * <p/>
+ * <P>There are no restrictions on the content portion of an
+ * <CODE>AttachmentPart</CODE> object. The content may be anything
+ * from a simple plain text object to a complex XML document or
+ * image file.</P>
+ * <p/>
+ * <P>An <CODE>AttachmentPart</CODE> object is created with the
+ * method <CODE>SOAPMessage.createAttachmentPart</CODE>. After
+ * setting its MIME headers, the <CODE>AttachmentPart</CODE>
+ * object is added to the message that created it with the method
+ * <CODE>SOAPMessage.addAttachmentPart</CODE>.</P>
+ * <p/>
+ * <P>The following code fragment, in which <CODE>m</CODE> is a
+ * <CODE>SOAPMessage</CODE> object and <CODE>contentStringl</CODE>
+ * is a <CODE>String</CODE>, creates an instance of <CODE>
+ * AttachmentPart</CODE>, sets the <CODE>AttachmentPart</CODE>
+ * object with some content and header information, and adds the
+ * <CODE>AttachmentPart</CODE> object to the <CODE>
+ * SOAPMessage</CODE> object.</P>
+ * <PRE>
+ * AttachmentPart ap1 = m.createAttachmentPart();
+ * ap1.setContent(contentString1, "text/plain");
+ * m.addAttachmentPart(ap1);
+ * </PRE>
+ * <p/>
+ * <P>The following code fragment creates and adds a second <CODE>
+ * AttachmentPart</CODE> instance to the same message. <CODE>
+ * jpegData</CODE> is a binary byte buffer representing the jpeg
+ * file.</P>
+ * <PRE>
+ * AttachmentPart ap2 = m.createAttachmentPart();
+ * byte[] jpegData =  ...;
+ * ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg");
+ * m.addAttachmentPart(ap2);
+ * </PRE>
+ * <p/>
+ * <P>The <CODE>getContent</CODE> method retrieves the contents
+ * and header from an <CODE>AttachmentPart</CODE> object.
+ * Depending on the <CODE>DataContentHandler</CODE> objects
+ * present, the returned <CODE>Object</CODE> can either be a typed
+ * Java object corresponding to the MIME type or an <CODE>
+ * InputStream</CODE> object that contains the content as
+ * bytes.</P>
+ * <PRE>
+ * String content1 = ap1.getContent();
+ * java.io.InputStream content2 = ap2.getContent();
+ * </PRE>
+ * The method <CODE>clearContent</CODE> removes all the content
+ * from an <CODE>AttachmentPart</CODE> object but does not affect
+ * its header information.
+ * <PRE>
+ * ap1.clearContent();
+ * </PRE>
+ */
+public abstract class AttachmentPart {
+
+    // fixme: should this constructor be protected?
+    /**
+     * Create a new AttachmentPart.
+     */
+    public AttachmentPart() {
+    }
+
+    /**
+     * Returns the number of bytes in this <CODE>
+     * AttachmentPart</CODE> object.
+     *
+     * @return the size of this <CODE>AttachmentPart</CODE> object
+     *         in bytes or -1 if the size cannot be determined
+     * @throws SOAPException if the content of this
+     *                       attachment is corrupted of if there was an exception
+     *                       while trying to determine the size.
+     */
+    public abstract int getSize() throws SOAPException;
+
+    /**
+     * Clears out the content of this <CODE>
+     * AttachmentPart</CODE> object. The MIME header portion is left
+     * untouched.
+     */
+    public abstract void clearContent();
+
+    /**
+     * Gets the content of this <code>AttachmentPart</code> object as a Java
+     * object. The type of the returned Java object depends on (1) the
+     * <code>DataContentHandler</code> object that is used to interpret the bytes
+     * and (2) the <code>Content-Type</code> given in the header.
+     * <p/>
+     * For the MIME content types "text/plain", "text/html" and "text/xml", the
+     * <code>DataContentHandler</code> object does the conversions to and
+     * from the Java types corresponding to the MIME types.
+     * For other MIME types,the <code>DataContentHandler</code> object
+     * can return an <code>InputStream</code> object that contains the content data
+     * as raw bytes.
+     * <p/>
+     * A JAXM-compliant implementation must, as a minimum, return a
+     * <code>java.lang.String</code> object corresponding to any content
+     * stream with a <code>Content-Type</code> value of
+     * <code>text/plain</code>, a
+     * <code>javax.xml.transform.StreamSource</code> object corresponding to a
+     * content stream with a <code>Content-Type</code> value of
+     * <code>text/xml</code>, a <code>java.awt.Image</code> object
+     * corresponding to a content stream with a
+     * <code>Content-Type</code> value of <code>image/gif</code> or
+     * <code>image/jpeg</code>.  For those content types that an
+     * installed <code>DataContentHandler</code> object does not understand, the
+     * <code>DataContentHandler</code> object is required to return a
+     * <code>java.io.InputStream</code> object with the raw bytes.
+     *
+     * @return a Java object with the content of this <CODE>
+     *         AttachmentPart</CODE> object
+     * @throws SOAPException if there is no content set
+     *                       into this <CODE>AttachmentPart</CODE> object or if there
+     *                       was a data transformation error
+     */
+    public abstract Object getContent() throws SOAPException;
+
+    /**
+     * Sets the content of this attachment part to that of the
+     * given <CODE>Object</CODE> and sets the value of the <CODE>
+     * Content-Type</CODE> header to the given type. The type of the
+     * <CODE>Object</CODE> should correspond to the value given for
+     * the <CODE>Content-Type</CODE>. This depends on the particular
+     * set of <CODE>DataContentHandler</CODE> objects in use.
+     *
+     * @param object      the Java object that makes up
+     *                    the content for this attachment part
+     * @param contentType the MIME string that
+     *                    specifies the type of the content
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          the contentType does not match the type of the content
+     *          object, or if there was no <CODE>
+     *          DataContentHandler</CODE> object for this content
+     *          object
+     * @see #getContent() getContent()
+     */
+    public abstract void setContent(Object object, String contentType);
+
+    /**
+     * Gets the <CODE>DataHandler</CODE> object for this <CODE>
+     * AttachmentPart</CODE> object.
+     *
+     * @return the <CODE>DataHandler</CODE> object associated with
+     *         this <CODE>AttachmentPart</CODE> object
+     * @throws SOAPException if there is
+     *                       no data in this <CODE>AttachmentPart</CODE> object
+     */
+    public abstract DataHandler getDataHandler() throws SOAPException;
+
+    /**
+     * Sets the given <CODE>DataHandler</CODE> object as the
+     * data handler for this <CODE>AttachmentPart</CODE> object.
+     * Typically, on an incoming message, the data handler is
+     * automatically set. When a message is being created and
+     * populated with content, the <CODE>setDataHandler</CODE>
+     * method can be used to get data from various data sources into
+     * the message.
+     *
+     * @param datahandler <CODE>DataHandler</CODE> object to
+     *                    be set
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified <CODE>
+     *          DataHandler</CODE> object
+     */
+    public abstract void setDataHandler(DataHandler datahandler);
+
+    /**
+     * Gets the value of the MIME header whose name is
+     * "Content-Id".
+     *
+     * @return a <CODE>String</CODE> giving the value of the
+     *         "Content-Id" header or <CODE>null</CODE> if there is
+     *         none
+     * @see #setContentId(java.lang.String) setContentId(java.lang.String)
+     */
+    public String getContentId() {
+
+        String as[] = getMimeHeader("Content-Id");
+
+        if (as != null && as.length > 0) {
+            return as[0];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets the value of the MIME header
+     * "Content-Location".
+     *
+     * @return a <CODE>String</CODE> giving the value of the
+     *         "Content-Location" header or <CODE>null</CODE> if there
+     *         is none
+     */
+    public String getContentLocation() {
+
+        String as[] = getMimeHeader("Content-Location");
+
+        if (as != null && as.length > 0) {
+            return as[0];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Gets the value of the MIME header "Content-Type".
+     *
+     * @return a <CODE>String</CODE> giving the value of the
+     *         "Content-Type" header or <CODE>null</CODE> if there is
+     *         none
+     */
+    public String getContentType() {
+
+        String as[] = getMimeHeader("Content-Type");
+
+        if (as != null && as.length > 0) {
+            return as[0];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the MIME header "Content-Id" with the given
+     * value.
+     *
+     * @param contentId a <CODE>String</CODE> giving
+     *                  the value of the "Content-Id" header
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified <CODE>
+     *          contentId</CODE> value
+     * @see #getContentId() getContentId()
+     */
+    public void setContentId(String contentId) {
+        setMimeHeader("Content-Id", contentId);
+    }
+
+    /**
+     * Sets the MIME header "Content-Location" with the given
+     * value.
+     *
+     * @param contentLocation a <CODE>String</CODE>
+     *                        giving the value of the "Content-Location" header
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified content
+     *          location
+     */
+    public void setContentLocation(String contentLocation) {
+        setMimeHeader("Content-Location", contentLocation);
+    }
+
+    /**
+     * Sets the MIME header "Content-Type" with the given
+     * value.
+     *
+     * @param contentType a <CODE>String</CODE>
+     *                    giving the value of the "Content-Type" header
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified content type
+     */
+    public void setContentType(String contentType) {
+        setMimeHeader("Content-Type", contentType);
+    }
+
+    /**
+     * Removes all MIME headers that match the given name.
+     *
+     * @param header - the string name of the MIME
+     *               header/s to be removed
+     */
+    public abstract void removeMimeHeader(String header);
+
+    /**
+     * Removes all the MIME header entries.
+     */
+    public abstract void removeAllMimeHeaders();
+
+    /**
+     * Gets all the values of the header identified by the given
+     * <CODE>String</CODE>.
+     *
+     * @param name the name of the header; example:
+     *             "Content-Type"
+     * @return a <CODE>String</CODE> array giving the value for the
+     *         specified header
+     * @see #setMimeHeader(java.lang.String, java.lang.String) setMimeHeader(java.lang.String, java.lang.String)
+     */
+    public abstract String[] getMimeHeader(String name);
+
+    /**
+     * Changes the first header entry that matches the given name
+     * to the given value, adding a new header if no existing
+     * header matches. This method also removes all matching
+     * headers but the first.
+     * <p/>
+     * <P>Note that RFC822 headers can only contain US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> giving the
+     *              name of the header for which to search
+     * @param value a <CODE>String</CODE> giving the
+     *              value to be set for the header whose name matches the
+     *              given name
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified mime header name
+     *          or value
+     */
+    public abstract void setMimeHeader(String name, String value);
+
+    /**
+     * Adds a MIME header with the specified name and value to
+     * this <CODE>AttachmentPart</CODE> object.
+     * <p/>
+     * <P>Note that RFC822 headers can contain only US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> giving the
+     *              name of the header to be added
+     * @param value a <CODE>String</CODE> giving the
+     *              value of the header to be added
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified mime header name
+     *          or value
+     */
+    public abstract void addMimeHeader(String name, String value);
+
+    /**
+     * Retrieves all the headers for this <CODE>
+     * AttachmentPart</CODE> object as an iterator over the <CODE>
+     * MimeHeader</CODE> objects.
+     *
+     * @return an <CODE>Iterator</CODE> object with all of the Mime
+     *         headers for this <CODE>AttachmentPart</CODE> object
+     */
+    public abstract Iterator getAllMimeHeaders();
+
+    /**
+     * Retrieves all <CODE>MimeHeader</CODE> objects that match
+     * a name in the given array.
+     *
+     * @param names a <CODE>String</CODE> array with
+     *              the name(s) of the MIME headers to be returned
+     * @return all of the MIME headers that match one of the names
+     *         in the given array as an <CODE>Iterator</CODE>
+     *         object
+     */
+    public abstract Iterator getMatchingMimeHeaders(String names[]);
+
+    /**
+     * Retrieves all <CODE>MimeHeader</CODE> objects whose name
+     * does not match a name in the given array.
+     *
+     * @param names a <CODE>String</CODE> array with
+     *              the name(s) of the MIME headers not to be returned
+     * @return all of the MIME headers in this <CODE>
+     *         AttachmentPart</CODE> object except those that match one
+     *         of the names in the given array. The nonmatching MIME
+     *         headers are returned as an <CODE>Iterator</CODE>
+     *         object.
+     */
+    public abstract Iterator getNonMatchingMimeHeaders(String names[]);
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/Detail.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/Detail.java
new file mode 100644
index 0000000..e992f57
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/Detail.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import java.util.Iterator;
+
+/**
+ * A container for <code>DetailEntry</code> objects. <code>DetailEntry</code>
+ * objects give detailed error information that is application-specific and
+ * related to the <code>SOAPBody</code> object that contains it.
+ * <P>
+ * A <code>Detail</code> object, which is part of a <code>SOAPFault</code>
+ * object, can be retrieved using the method <code>SOAPFault.getDetail</code>.
+ * The <code>Detail</code> interface provides two methods. One creates a new
+ * <code>DetailEntry</code> object and also automatically adds it to
+ * the <code>Detail</code> object. The second method gets a list of the
+ * <code>DetailEntry</code> objects contained in a <code>Detail</code>
+ * object.
+ * <P>
+ * The following code fragment, in which <i>sf</i> is a <code>SOAPFault</code>
+ * object, gets its <code>Detail</code> object (<i>d</i>), adds a new
+ * <code>DetailEntry</code> object to <i>d</i>, and then gets a list of all the
+ * <code>DetailEntry</code> objects in <i>d</i>. The code also creates a
+ * <code>Name</code> object to pass to the method <code>addDetailEntry</code>.
+ * The variable <i>se</i>, used to create the <code>Name</code> object,
+ * is a <code>SOAPEnvelope</code> object.
+ * <PRE>
+ * Detail d = sf.getDetail();
+ * Name name = se.createName("GetLastTradePrice", "WOMBAT",
+ * "http://www.wombat.org/trader");
+ * d.addDetailEntry(name);
+ * Iterator it = d.getDetailEntries();
+ * </PRE>
+ */
+public interface Detail extends SOAPFaultElement {
+
+    /**
+     * Creates a new <code>DetailEntry</code> object with the given
+     * name and adds it to this <code>Detail</code> object.
+     *
+     * @param name a <code>Name</code> object identifying the new <code>DetailEntry</code> object
+     * @return DetailEntry.
+     * @throws SOAPException thrown when there is a problem in adding a DetailEntry object to this Detail object.
+     */
+    public abstract DetailEntry addDetailEntry(Name name) throws SOAPException;
+
+    /**
+     * Gets a list of the detail entries in this <code>Detail</code> object.
+     *
+     * @return an <code>Iterator</code> object over the <code>DetailEntry</code>
+     *         objects in this <code>Detail</code> object
+     */
+    public abstract Iterator getDetailEntries();
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/DetailEntry.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/DetailEntry.java
new file mode 100644
index 0000000..406bbd9
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/DetailEntry.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * The content for a <code>Detail</code> object, giving details for
+ * a <code>SOAPFault</code> object.  A <code>DetailEntry</code> object,
+ * which carries information about errors related to the <code>SOAPBody</code>
+ * object that contains it, is application-specific.
+ * <P>
+ */
+public interface DetailEntry extends SOAPElement {
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/FactoryFinder.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/FactoryFinder.java
new file mode 100644
index 0000000..991d913
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/FactoryFinder.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Properties;
+
+/**
+ * This class is used to locate factory classes for javax.xml.soap.
+ * It has package scope since it is not part of JAXM and should not
+ * be accessed from other packages.
+ */
+class FactoryFinder {
+    /**
+     * instantiates an object go the given classname.
+     *
+     * @param factoryClassName
+     * @return a factory object
+     * @throws SOAPException
+     */
+    private static Object newInstance(String factoryClassName) throws SOAPException {
+        ClassLoader classloader = null;
+        try {
+            classloader = Thread.currentThread().getContextClassLoader();
+        } catch (Exception exception) {
+            throw new SOAPException(exception.toString(), exception);
+        }
+
+        try {
+            Class factory = null;
+            if (classloader == null) {
+                factory = Class.forName(factoryClassName);
+            } else {
+                try {
+                    factory = classloader.loadClass(factoryClassName);
+                } catch (ClassNotFoundException cnfe) {
+                }
+            }
+            if (factory == null) {
+                classloader = FactoryFinder.class.getClassLoader();
+                factory = classloader.loadClass(factoryClassName);
+            }
+            return factory.newInstance();
+        } catch (ClassNotFoundException classnotfoundexception) {
+            throw new SOAPException(
+                    "Provider " + factoryClassName + " not found",
+                    classnotfoundexception);
+        } catch (Exception exception) {
+            throw new SOAPException(
+                    "Provider " + factoryClassName +
+                    " could not be instantiated: " +
+                    exception,
+                    exception);
+        }
+    }
+
+    /**
+     * Instantiates a factory object given the factory's property name and the
+     * default class name.
+     *
+     * @param factoryPropertyName
+     * @param defaultFactoryClassName
+     * @return a factory object
+     * @throws SOAPException
+     */
+    static Object find(String factoryPropertyName,
+                       String defaultFactoryClassName) throws SOAPException {
+        try {
+            String factoryClassName = System.getProperty(factoryPropertyName);
+            if (factoryClassName != null) {
+                return newInstance(factoryClassName);
+            }
+        } catch (SecurityException securityexception) {
+        }
+
+        try {
+            String propertiesFileName = System.getProperty("java.home")
+                    + File.separator + "lib"
+                    + File.separator + "jaxm.properties";
+            File file = new File(propertiesFileName);
+            if (file.exists()) {
+                FileInputStream fileInput = new FileInputStream(file);
+                Properties properties = new Properties();
+                properties.load(fileInput);
+                fileInput.close();
+                String factoryClassName = properties.getProperty(
+                        factoryPropertyName);
+                return newInstance(factoryClassName);
+            }
+        } catch (Exception exception1) {
+        }
+
+        String factoryResource = "META-INF/services/" + factoryPropertyName;
+
+        try {
+            InputStream inputstream = getResource(factoryResource);
+            if (inputstream != null) {
+                BufferedReader bufferedreader = new BufferedReader(
+                        new InputStreamReader(inputstream, "UTF-8"));
+                String factoryClassName = bufferedreader.readLine();
+                bufferedreader.close();
+                if ((factoryClassName != null) && !"".equals(factoryClassName)) {
+                    return newInstance(factoryClassName);
+                }
+            }
+        } catch (Exception exception2) {
+        }
+
+        if (defaultFactoryClassName == null) {
+            throw new SOAPException(
+                    "Provider for " + factoryPropertyName + " cannot be found",
+                    null);
+        } else {
+            return newInstance(defaultFactoryClassName);
+        }
+    }
+
+    /**
+     * Returns an input stream for the specified resource.
+     * <p/>
+     * <p>This method will firstly try
+     * <code>ClassLoader.getSystemResourceAsStream()</code> then
+     * the class loader of the current thread with
+     * <code>getResourceAsStream()</code> and finally attempt
+     * <code>getResourceAsStream()</code> on
+     * <code>FactoryFinder.class.getClassLoader()</code>.
+     *
+     * @param factoryResource the resource name
+     * @return an InputStream that can be used to read that resource, or
+     *         <code>null</code> if the resource could not be resolved
+     */
+    private static InputStream getResource(String factoryResource) {
+        ClassLoader classloader = null;
+        try {
+            classloader = Thread.currentThread().getContextClassLoader();
+        } catch (SecurityException securityexception) {
+        }
+
+        InputStream inputstream;
+        if (classloader == null) {
+            inputstream =
+                    ClassLoader.getSystemResourceAsStream(factoryResource);
+        } else {
+            inputstream = classloader.getResourceAsStream(factoryResource);
+        }
+
+        if (inputstream == null) {
+            inputstream =
+                    FactoryFinder.class.getClassLoader().getResourceAsStream(
+                            factoryResource);
+        }
+        return inputstream;
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/MessageFactory.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/MessageFactory.java
new file mode 100644
index 0000000..286e5c6
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/MessageFactory.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * <P>A factory for creating <CODE>SOAPMessage</CODE> objects.</P>
+ * <p/>
+ * <P>A JAXM client performs the following steps to create a
+ * message.</P>
+ * <p/>
+ * <UL>
+ * <LI>
+ * Creates a <CODE>MessageFactory</CODE> object from a <CODE>
+ * ProviderConnection</CODE> object (<CODE>con</CODE> in the
+ * following line of code). The <CODE>String</CODE> passed to
+ * the <CODE>createMessageFactory</CODE> method is the name of
+ * of a messaging profile, which must be the URL for the
+ * schema.
+ * <PRE>
+ * MessageFactory mf = con.createMessageFactory(schemaURL);
+ * </PRE>
+ * </LI>
+ * <p/>
+ * <LI>
+ * Calls the method <CODE>createMessage</CODE> on the <CODE>
+ * MessageFactory</CODE> object. All messages produced by this
+ * <CODE>MessageFactory</CODE> object will have the header
+ * information appropriate for the messaging profile that was
+ * specified when the <CODE>MessageFactory</CODE> object was
+ * created.
+ * <PRE>
+ * SOAPMessage m = mf.createMessage();
+ * </PRE>
+ * </LI>
+ * </UL>
+ * It is also possible to create a <CODE>MessageFactory</CODE>
+ * object using the method <CODE>newInstance</CODE>, as shown in
+ * the following line of code.
+ * <PRE>
+ * MessageFactory mf = MessageFactory.newInstance();
+ * </PRE>
+ * A standalone client (a client that is not running in a
+ * container) can use the <CODE>newInstance</CODE> method to
+ * create a <CODE>MessageFactory</CODE> object.
+ * <p/>
+ * <P>All <CODE>MessageFactory</CODE> objects, regardless of how
+ * they are created, will produce <CODE>SOAPMessage</CODE> objects
+ * that have the following elements by default:</P>
+ * <p/>
+ * <UL>
+ * <LI>A <CODE>SOAPPart</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPEnvelope</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPBody</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPHeader</CODE> object</LI>
+ * </UL>
+ * If a <CODE>MessageFactory</CODE> object was created using a
+ * <CODE>ProviderConnection</CODE> object, which means that it was
+ * initialized with a specified profile, it will produce messages
+ * that also come prepopulated with additional entries in the
+ * <CODE>SOAPHeader</CODE> object and the <CODE>SOAPBody</CODE>
+ * object. The content of a new <CODE>SOAPMessage</CODE> object
+ * depends on which of the two <CODE>MessageFactory</CODE> methods
+ * is used to create it.
+ * <p/>
+ * <UL>
+ * <LI><CODE>createMessage()</CODE> -- message has no
+ * content<BR>
+ * This is the method clients would normally use to create a
+ * request message.</LI>
+ * <p/>
+ * <LI><CODE>createMessage(MimeHeaders,
+ * java.io.InputStream)</CODE> -- message has content from the
+ * <CODE>InputStream</CODE> object and headers from the <CODE>
+ * MimeHeaders</CODE> object<BR>
+ * This method can be used internally by a service
+ * implementation to create a message that is a response to a
+ * request.</LI>
+ * </UL>
+ */
+public abstract class MessageFactory {
+
+    /**
+     * Create a new MessageFactory.
+     */
+    public MessageFactory() {
+    }
+
+    /**
+     * Creates a new <CODE>MessageFactory</CODE> object that is
+     * an instance of the default implementation.
+     *
+     * @return a new <CODE>MessageFactory</CODE> object
+     * @throws SOAPException if there was an error in
+     *                       creating the default implementation of the <CODE>
+     *                       MessageFactory</CODE>
+     */
+    public static MessageFactory newInstance() throws SOAPException {
+
+        try {
+            return (MessageFactory) FactoryFinder.find(
+                    MESSAGE_FACTORY_PROPERTY,
+                    DEFAULT_MESSAGE_FACTORY);
+        } catch (Exception exception) {
+            throw new SOAPException("Unable to create message factory for SOAP: "
+                    + exception.getMessage());
+        }
+    }
+
+    /**
+     * Creates a new <CODE>SOAPMessage</CODE> object with the
+     * default <CODE>SOAPPart</CODE>, <CODE>SOAPEnvelope</CODE>,
+     * <CODE>SOAPBody</CODE>, and <CODE>SOAPHeader</CODE> objects.
+     * Profile-specific message factories can choose to
+     * prepopulate the <CODE>SOAPMessage</CODE> object with
+     * profile-specific headers.
+     * <p/>
+     * <P>Content can be added to this message's <CODE>
+     * SOAPPart</CODE> object, and the message can be sent "as is"
+     * when a message containing only a SOAP part is sufficient.
+     * Otherwise, the <CODE>SOAPMessage</CODE> object needs to
+     * create one or more <CODE>AttachmentPart</CODE> objects and
+     * add them to itself. Any content that is not in XML format
+     * must be in an <CODE>AttachmentPart</CODE> object.</P>
+     *
+     * @return a new <CODE>SOAPMessage</CODE> object
+     * @throws SOAPException if a SOAP error occurs
+     */
+    public abstract SOAPMessage createMessage() throws SOAPException;
+
+    /**
+     * Internalizes the contents of the given <CODE>
+     * InputStream</CODE> object into a new <CODE>SOAPMessage</CODE>
+     * object and returns the <CODE>SOAPMessage</CODE> object.
+     *
+     * @param mimeheaders the transport-specific headers
+     *                    passed to the message in a transport-independent fashion
+     *                    for creation of the message
+     * @param inputstream the <CODE>InputStream</CODE> object
+     *                    that contains the data for a message
+     * @return a new <CODE>SOAPMessage</CODE> object containing the
+     *         data from the given <CODE>InputStream</CODE> object
+     * @throws IOException   if there is a
+     *                       problem in reading data from the input stream
+     * @throws SOAPException if the message is invalid
+     */
+    public abstract SOAPMessage createMessage(MimeHeaders mimeheaders,
+                                              InputStream inputstream)
+            throws IOException, SOAPException;
+
+    private static final String DEFAULT_MESSAGE_FACTORY =
+            "org.apache.axis2.saaj.MessageFactoryImpl";
+
+    private static final String MESSAGE_FACTORY_PROPERTY =
+            "javax.xml.soap.MessageFactory";
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/MimeHeader.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/MimeHeader.java
new file mode 100644
index 0000000..85d5a1e
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/MimeHeader.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * An object that stores a MIME header name and its value. One
+ * or more <CODE>MimeHeader</CODE> objects may be contained in a
+ * <CODE>MimeHeaders</CODE> object.
+ *
+ * @see MimeHeaders MimeHeaders
+ */
+public class MimeHeader {
+
+    /**
+     * Constructs a <CODE>MimeHeader</CODE> object initialized
+     * with the given name and value.
+     *
+     * @param name  a <CODE>String</CODE> giving the
+     *              name of the header
+     * @param value a <CODE>String</CODE> giving the
+     *              value of the header
+     */
+    public MimeHeader(String name, String value) {
+        this.name = name;
+        this.value = value;
+    }
+
+    /**
+     * Returns the name of this <CODE>MimeHeader</CODE>
+     * object.
+     *
+     * @return the name of the header as a <CODE>String</CODE>
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Returns the value of this <CODE>MimeHeader</CODE>
+     * object.
+     *
+     * @return the value of the header as a <CODE>String</CODE>
+     */
+    public String getValue() {
+        return value;
+    }
+
+    private String name;
+
+    private String value;
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/MimeHeaders.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/MimeHeaders.java
new file mode 100644
index 0000000..3fbf7ef
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/MimeHeaders.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+/**
+ * A container for <CODE>MimeHeader</CODE> objects, which
+ * represent the MIME headers present in a MIME part of a
+ * message.</P>
+ * <p/>
+ * <P>This class is used primarily when an application wants to
+ * retrieve specific attachments based on certain MIME headers and
+ * values. This class will most likely be used by implementations
+ * of <CODE>AttachmentPart</CODE> and other MIME dependent parts
+ * of the JAXM API.
+ *
+ * @see SOAPMessage#getAttachments() SOAPMessage.getAttachments()
+ * @see AttachmentPart AttachmentPart
+ */
+public class MimeHeaders {
+
+    class MatchingIterator implements Iterator {
+
+        private Object nextMatch() {
+
+            label0:
+            while (iterator.hasNext()) {
+                MimeHeader mimeheader = (MimeHeader) iterator.next();
+
+                if (names == null) {
+                    return match
+                            ? null
+                            : mimeheader;
+                }
+
+                for (int i = 0; i < names.length; i++) {
+                    if (!mimeheader.getName().equalsIgnoreCase(names[i])) {
+                        continue;
+                    }
+
+                    if (match) {
+                        return mimeheader;
+                    }
+
+                    continue label0;
+                }
+
+                if (!match) {
+                    return mimeheader;
+                }
+            }
+
+            return null;
+        }
+
+        public boolean hasNext() {
+
+            if (nextHeader == null) {
+                nextHeader = nextMatch();
+            }
+
+            return nextHeader != null;
+        }
+
+        public Object next() {
+
+            if (nextHeader != null) {
+                Object obj = nextHeader;
+
+                nextHeader = null;
+
+                return obj;
+            }
+
+            if (hasNext()) {
+                return nextHeader;
+            } else {
+                return null;
+            }
+        }
+
+        public void remove() {
+            iterator.remove();
+        }
+
+        private boolean match;
+
+        private Iterator iterator;
+
+        private String names[];
+
+        private Object nextHeader;
+
+        MatchingIterator(String as[], boolean flag) {
+
+            match = flag;
+            names = as;
+            iterator = headers.iterator();
+        }
+    }
+
+    /**
+     * Constructs
+     * a default <CODE>MimeHeaders</CODE> object initialized with
+     * an empty <CODE>Vector</CODE> object.
+     */
+    public MimeHeaders() {
+        headers = new Vector();
+    }
+
+    /**
+     * Returns all of the values for the specified header as an
+     * array of <CODE>String</CODE> objects.
+     *
+     * @param name the name of the header for which
+     *             values will be returned
+     * @return a <CODE>String</CODE> array with all of the values
+     *         for the specified header
+     * @see #setHeader(java.lang.String, java.lang.String) setHeader(java.lang.String, java.lang.String)
+     */
+    public String[] getHeader(String name) {
+
+        Vector vector = new Vector();
+
+        for (int i = 0; i < headers.size(); i++) {
+            MimeHeader mimeheader = (MimeHeader) headers.elementAt(i);
+
+            if (mimeheader.getName().equalsIgnoreCase(name)
+                    && (mimeheader.getValue() != null)) {
+                vector.addElement(mimeheader.getValue());
+            }
+        }
+
+        if (vector.size() == 0) {
+            return null;
+        } else {
+            String as[] = new String[vector.size()];
+
+            vector.copyInto(as);
+
+            return as;
+        }
+    }
+
+    /**
+     * Replaces the current value of the first header entry whose
+     * name matches the given name with the given value, adding a
+     * new header if no existing header name matches. This method
+     * also removes all matching headers after the first one.
+     * <p/>
+     * <P>Note that RFC822 headers can contain only US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> with the
+     *              name of the header for which to search
+     * @param value a <CODE>String</CODE> with the
+     *              value that will replace the current value of the
+     *              specified header
+     * @throws java.lang.IllegalArgumentException
+     *          if there was a
+     *          problem in the mime header name or the value being set
+     * @see #getHeader(java.lang.String) getHeader(java.lang.String)
+     */
+    public void setHeader(String name, String value) {
+
+        boolean flag = false;
+
+        if ((name == null) || "".equals(name)) {
+            throw new IllegalArgumentException("Illegal MimeHeader name");
+        }
+
+        for (int i = 0; i < headers.size(); i++) {
+            MimeHeader mimeheader = (MimeHeader) headers.elementAt(i);
+
+            if (mimeheader.getName().equalsIgnoreCase(name)) {
+                if (!flag) {
+                    headers.setElementAt(new MimeHeader(mimeheader
+                            .getName(), value), i);
+
+                    flag = true;
+                } else {
+                    headers.removeElementAt(i--);
+                }
+            }
+        }
+
+        if (!flag) {
+            addHeader(name, value);
+        }
+    }
+
+    /**
+     * Adds a <CODE>MimeHeader</CODE> object with the specified
+     * name and value to this <CODE>MimeHeaders</CODE> object's
+     * list of headers.
+     * <p/>
+     * <P>Note that RFC822 headers can contain only US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> with the
+     *              name of the header to be added
+     * @param value a <CODE>String</CODE> with the
+     *              value of the header to be added
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem in the mime header name or value
+     *          being added
+     */
+    public void addHeader(String name, String value) {
+
+        if ((name == null) || "".equals(name)) {
+            throw new IllegalArgumentException("Illegal MimeHeader name");
+        }
+
+        int i = headers.size();
+
+        for (int j = i - 1; j >= 0; j--) {
+            MimeHeader mimeheader = (MimeHeader) headers.elementAt(j);
+
+            if (mimeheader.getName().equalsIgnoreCase(name)) {
+                headers.insertElementAt(new MimeHeader(name, value), j + 1);
+
+                return;
+            }
+        }
+
+        headers.addElement(new MimeHeader(name, value));
+    }
+
+    /**
+     * Remove all <CODE>MimeHeader</CODE> objects whose name
+     * matches the the given name.
+     *
+     * @param name a <CODE>String</CODE> with the
+     *             name of the header for which to search
+     */
+    public void removeHeader(String name) {
+
+        for (int i = 0; i < headers.size(); i++) {
+            MimeHeader mimeheader = (MimeHeader) headers.elementAt(i);
+
+            if (mimeheader.getName().equalsIgnoreCase(name)) {
+                headers.removeElementAt(i--);
+            }
+        }
+    }
+
+    /**
+     * Removes all the header entries from this <CODE>
+     * MimeHeaders</CODE> object.
+     */
+    public void removeAllHeaders() {
+        headers.removeAllElements();
+    }
+
+    /**
+     * Returns all the headers in this <CODE>MimeHeaders</CODE>
+     * object.
+     *
+     * @return an <CODE>Iterator</CODE> object over this <CODE>
+     *         MimeHeaders</CODE> object's list of <CODE>
+     *         MimeHeader</CODE> objects
+     */
+    public Iterator getAllHeaders() {
+        return headers.iterator();
+    }
+
+    /**
+     * Returns all the <CODE>MimeHeader</CODE> objects whose
+     * name matches a name in the given array of names.
+     *
+     * @param names an array of <CODE>String</CODE>
+     *              objects with the names for which to search
+     * @return an <CODE>Iterator</CODE> object over the <CODE>
+     *         MimeHeader</CODE> objects whose name matches one of the
+     *         names in the given list
+     */
+    public Iterator getMatchingHeaders(String names[]) {
+        return new MatchingIterator(names, true);
+    }
+
+    /**
+     * Returns all of the <CODE>MimeHeader</CODE> objects whose
+     * name does not match a name in the given array of names.
+     *
+     * @param names an array of <CODE>String</CODE>
+     *              objects with the names for which to search
+     * @return an <CODE>Iterator</CODE> object over the <CODE>
+     *         MimeHeader</CODE> objects whose name does not match one
+     *         of the names in the given list
+     */
+    public Iterator getNonMatchingHeaders(String names[]) {
+        return new MatchingIterator(names, false);
+    }
+
+    // fixme: does this need to be a Vector? Will a non-synchronized impl of
+    // List do?
+    /**
+     * A <code>Vector</code> containing the headers as <code>MimeHeader</code>
+     * instances.
+     */
+    private Vector headers;
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/Name.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/Name.java
new file mode 100644
index 0000000..73849dc
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/Name.java
@@ -0,0 +1,95 @@
+/*
+ * 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.soap;
+
+/**
+ * A representation of an XML name.  This interface provides methods for
+ * getting the local and namespace-qualified names and also for getting the
+ * prefix associated with the namespace for the name. It is also possible
+ * to get the URI of the namespace.
+ * <P>
+ * The following is an example of a namespace declaration in an element.
+ * <PRE>
+ * &lt;wombat:GetLastTradePrice xmlns:wombat="http://www.wombat.org/trader"&gt;
+ * </PRE>
+ * ("xmlns" stands for "XML namespace".)
+ * The following
+ * shows what the methods in the <code>Name</code> interface will return.
+ * <UL>
+ * <LI><code>getQualifiedName</code> will return "prefix:LocalName" =
+ * "WOMBAT:GetLastTradePrice"
+ * <LI><code>getURI</code> will return "http://www.wombat.org/trader"
+ * <LI><code>getLocalName</code> will return "GetLastTracePrice"
+ * <LI><code>getPrefix</code> will return "WOMBAT"
+ * </UL>
+ * <P>
+ * XML namespaces are used to disambiguate SOAP identifiers from
+ * application-specific identifiers.
+ * <P>
+ * <code>Name</code> objects are created using the method
+ * <code>SOAPEnvelope.createName</code>, which has two versions.
+ * One method creates <code>Name</code> objects with
+ * a local name, a namespace prefix, and a namespace URI.
+ * and the second creates <code>Name</code> objects with just a local name.
+ * The following line of
+ * code, in which <i>se</i> is a <code>SOAPEnvelope</code> object, creates a new
+ * <code>Name</code> object with all three.
+ * <PRE>
+ * Name name = se.createName("GetLastTradePrice", "WOMBAT",
+ * "http://www.wombat.org/trader");
+ * </PRE>
+ * The following line of code gives an example of how a <code>Name</code> object
+ * can be used. The variable <i>element</i> is a <code>SOAPElement</code> object.
+ * This code creates a new <code>SOAPElement</code> object with the given name and
+ * adds it to <i>element</i>.
+ * <PRE>
+ * element.addChildElement(name);
+ * </PRE>
+ */
+public interface Name {
+
+    /**
+     * Gets the local name part of the XML name that this <code>Name</code>
+     * object represents.
+     *
+     * @return a string giving the local name
+     */
+    public abstract String getLocalName();
+
+    /**
+     * Gets the namespace-qualified name of the XML name that this
+     * <code>Name</code> object represents.
+     *
+     * @return the namespace-qualified name as a string
+     */
+    public abstract String getQualifiedName();
+
+    /**
+     * Returns the prefix associated with the namespace for the XML
+     * name that this <code>Name</code> object represents.
+     *
+     * @return the prefix as a string
+     */
+    public abstract String getPrefix();
+
+    /**
+     * Returns the URI of the namespace for the XML
+     * name that this <code>Name</code> object represents.
+     *
+     * @return the URI as a string
+     */
+    public abstract String getURI();
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/Node.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/Node.java
new file mode 100644
index 0000000..c7f7073
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/Node.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * A representation of a node (element) in a DOM representation of an XML document
+ * that provides some tree manipulation methods.
+ * This interface provides methods for getting the value of a node, for
+ * getting and setting the parent of a node, and for removing a node.
+ */
+public interface Node extends org.w3c.dom.Node {
+
+    /**
+     * Returns the the value of the immediate child of this <code>Node</code>
+     * object if a child exists and its value is text.
+     *
+     * @return a <code>String</code> with the text of the immediate child of
+     *         this <code>Node</code> object if (1) there is a child and
+     *         (2) the child is a <code>Text</code> object;
+     *         <code>null</code> otherwise
+     */
+    public abstract String getValue();
+
+    /**
+     * Sets the parent of this <code>Node</code> object to the given
+     * <code>SOAPElement</code> object.
+     *
+     * @param parent the <code>SOAPElement</code> object to be set as
+     *               the parent of this <code>Node</code> object
+     * @throws SOAPException if there is a problem in setting the
+     *                       parent to the given element
+     * @see #getParentElement() getParentElement()
+     */
+    public abstract void setParentElement(SOAPElement parent)
+            throws SOAPException;
+
+    /**
+     * Returns the parent element of this <code>Node</code> object.
+     * This method can throw an <code>UnsupportedOperationException</code>
+     * if the tree is not kept in memory.
+     *
+     * @return the <code>SOAPElement</code> object that is the parent of
+     *         this <code>Node</code> object or <code>null</code> if this
+     *         <code>Node</code> object is root
+     * @throws java.lang.UnsupportedOperationException
+     *          if the whole tree is not kept in memory
+     * @see #setParentElement(javax.xml.soap.SOAPElement) setParentElement(javax.xml.soap.SOAPElement)
+     */
+    public abstract SOAPElement getParentElement();
+
+    /**
+     * Removes this <code>Node</code> object from the tree. Once
+     * removed, this node can be garbage collected if there are no
+     * application references to it.
+     */
+    public abstract void detachNode();
+
+    /**
+     * Notifies the implementation that this <code>Node</code>
+     * object is no longer being used by the application and that the
+     * implementation is free to reuse this object for nodes that may
+     * be created later.
+     * <P>
+     * Calling the method <code>recycleNode</code> implies that the method
+     * <code>detachNode</code> has been called previously.
+     */
+    public abstract void recycleNode();
+
+    /**
+     * If this is a Text node then this method will set its value, otherwise it
+     * sets the value of the immediate (Text) child of this node. The value of
+     * the immediate child of this node can be set only if, there is one child
+     * node and that node is a Text node, or if there are no children in which
+     * case a child Text node will be created.
+     *
+     * @param value the text to set
+     * @throws IllegalStateException if the node is not a Text  node and
+     *                               either has more than one child node or has a child node that
+     *                               is not a Text node
+     */
+
+    public abstract void setValue(String value);
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPBody.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPBody.java
new file mode 100644
index 0000000..746e493
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPBody.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import org.w3c.dom.Document;
+
+import java.util.Locale;
+
+/**
+ * An object that represents the contents of the SOAP body
+ * element in a SOAP message. A SOAP body element consists of XML data
+ * that affects the way the application-specific content is processed.
+ * <P>
+ * A <code>SOAPBody</code> object contains <code>SOAPBodyElement</code>
+ * objects, which have the content for the SOAP body.
+ * A <code>SOAPFault</code> object, which carries status and/or
+ * error information, is an example of a <code>SOAPBodyElement</code> object.
+ *
+ * @see SOAPFault SOAPFault
+ */
+public interface SOAPBody extends SOAPElement {
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to
+     * this <code>SOAPBody</code> object.
+     *
+     * @return the new <code>SOAPFault</code> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract SOAPFault addFault() throws SOAPException;
+
+    /**
+     * Indicates whether a <code>SOAPFault</code> object exists in
+     * this <code>SOAPBody</code> object.
+     *
+     * @return <code>true</code> if a <code>SOAPFault</code> object exists in
+     *         this <code>SOAPBody</code> object; <code>false</code>
+     *         otherwise
+     */
+    public abstract boolean hasFault();
+
+    /**
+     * Returns the <code>SOAPFault</code> object in this <code>SOAPBody</code>
+     * object.
+     *
+     * @return the <code>SOAPFault</code> object in this <code>SOAPBody</code>
+     *         object
+     */
+    public abstract SOAPFault getFault();
+
+    /**
+     * Creates a new <code>SOAPBodyElement</code> object with the
+     * specified name and adds it to this <code>SOAPBody</code> object.
+     *
+     * @param name a <code>Name</code> object with the name for the new
+     *             <code>SOAPBodyElement</code> object
+     * @return the new <code>SOAPBodyElement</code> object
+     * @throws SOAPException if a SOAP error occurs
+     */
+    public abstract SOAPBodyElement addBodyElement(Name name)
+            throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to this
+     * <code>SOAPBody</code> object. The new <code>SOAPFault</code> will have a
+     * <code>faultcode</code> element that is set to the <code>faultCode</code>
+     * parameter and a <code>faultstring</code> set to <code>faultstring</code>
+     * and localized to <code>locale</code>.
+     *
+     * @param faultCode   a <code>Name</code> object giving the fault code to be
+     *                    set; must be one of the fault codes defined in the SOAP 1.1
+     *                    specification and of type QName
+     * @param faultString a <code>String</code> giving an explanation of the
+     *                    fault
+     * @param locale      a <code>Locale</code> object indicating the native language
+     *                    of the <ocde>faultString</code>
+     * @return the new <code>SOAPFault</code> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract SOAPFault addFault(Name faultCode,
+                                       String faultString,
+                                       Locale locale) throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to this
+     * <code>SOAPBody</code> object. The new <code>SOAPFault</code> will have a
+     * <code>faultcode</code> element that is set to the <code>faultCode</code>
+     * parameter and a <code>faultstring</code> set to <code>faultstring</code>.
+     *
+     * @param faultCode   a <code>Name</code> object giving the fault code to be
+     *                    set; must be one of the fault codes defined in the SOAP 1.1
+     *                    specification and of type QName
+     * @param faultString a <code>String</code> giving an explanation of the
+     *                    fault
+     * @return the new <code>SOAPFault</code> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract SOAPFault addFault(Name faultCode, String faultString) throws SOAPException;
+
+    /**
+     * Adds the root node of the DOM <code>Document</code> to this
+     * <code>SOAPBody</code> object.
+     * <p/>
+     * Calling this method invalidates the <code>document</code> parameter. The
+     * client application should discard all references to this
+     * <code>Document</code> and its contents upon calling
+     * <code>addDocument</code>. The behavior of an application that continues
+     * to use such references is undefined.
+     *
+     * @param document the <code>Document</code> object whose root node will be
+     *                 added to this <code>SOAPBody</code>
+     * @return the <code>SOAPBodyElement</code> that represents the root node
+     *         that was added
+     * @throws SOAPException if the <code>Document</code> cannot be added
+     */
+    public abstract SOAPBodyElement addDocument(Document document) throws SOAPException;
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPBodyElement.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPBodyElement.java
new file mode 100644
index 0000000..3b8df1a
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPBodyElement.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * A <code>SOAPBodyElement</code> object represents the contents in
+ * a <code>SOAPBody</code> object.  The <code>SOAPFault</code> interface
+ * is a <code>SOAPBodyElement</code> object that has been defined.
+ * <P>
+ * A new <code>SOAPBodyElement</code> object can be created and added
+ * to a <code>SOAPBody</code> object with the <code>SOAPBody</code>
+ * method <code>addBodyElement</code>. In the following line of code,
+ * <code>sb</code> is a <code>SOAPBody</code> object, and
+ * <code>myName</code> is a <code>Name</code> object.
+ * <PRE>
+ * SOAPBodyElement sbe = sb.addBodyElement(myName);
+ * </PRE>
+ */
+public interface SOAPBodyElement extends SOAPElement {
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConnection.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConnection.java
new file mode 100644
index 0000000..da7b54b
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConnection.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * A point-to-point connection that a client can use for sending messages
+ * directly to a remote party (represented by a URL, for instance).
+ * <p/>
+ * A client can obtain a <code>SOAPConnection</code> object simply by
+ * calling the following static method.
+ * <pre>
+ * <p/>
+ *      SOAPConnection con = SOAPConnection.newInstance();
+ * </pre>
+ * A <code>SOAPConnection</code> object can be used to send messages
+ * directly to a URL following the request/response paradigm.  That is,
+ * messages are sent using the method <code>call</code>, which sends the
+ * message and then waits until it gets a reply.
+ */
+public abstract class SOAPConnection {
+
+    public SOAPConnection() {
+    }
+
+    /**
+     * Sends the given message to the specified endpoint and
+     * blocks until it has returned the response.
+     *
+     * @param request  the <CODE>SOAPMessage</CODE>
+     *                 object to be sent
+     * @param endpoint an <code>Object</code> that identifies
+     *                 where the message should be sent. It is required to
+     *                 support Objects of type
+     *                 <code>java.lang.String</code>,
+     *                 <code>java.net.URL</code>, and when JAXM is present
+     *                 <code>javax.xml.messaging.URLEndpoint</code>
+     * @return the <CODE>SOAPMessage</CODE> object that is the
+     *         response to the message that was sent
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract SOAPMessage call(SOAPMessage request, Object endpoint)
+            throws SOAPException;
+
+    /**
+     * Closes this <CODE>SOAPConnection</CODE> object.
+     *
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract void close() throws SOAPException;
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConnectionFactory.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConnectionFactory.java
new file mode 100644
index 0000000..76ee049
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConnectionFactory.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * A factory for creating <code>SOAPConnection</code> objects. Implementation of
+ * this class is optional. If <code>SOAPConnectionFactory.newInstance()</code>
+ * throws an <code>UnsupportedOperationException</code> then the implementation
+ * does not support the SAAJ communication infrastructure. Otherwise
+ * <code>SOAPConnection</code> objects can be created by calling
+ * <code>createConnection()</code> on the newly created
+ * <code>SOAPConnectionFactory</code> object.
+ */
+public abstract class SOAPConnectionFactory {
+
+    public SOAPConnectionFactory() {
+    }
+
+    /**
+     * Creates an instance of the default <CODE>
+     * SOAPConnectionFactory</CODE> object.
+     *
+     * @return a new instance of a default <CODE>
+     *         SOAPConnectionFactory</CODE> object
+     * @throws SOAPException                 if there was an error creating
+     *                                       the <CODE>SOAPConnectionFactory
+     * @throws UnsupportedOperationException if newInstance is not supported.
+     */
+    public static SOAPConnectionFactory newInstance()
+            throws SOAPException, UnsupportedOperationException {
+
+        try {
+            return (SOAPConnectionFactory) FactoryFinder.find(SF_PROPERTY,
+                    DEFAULT_SOAP_CONNECTION_FACTORY);
+        } catch (Exception exception) {
+            throw new SOAPException("Unable to create SOAP connection factory: "
+                    + exception.getMessage());
+        }
+    }
+
+    /**
+     * Create a new <CODE>SOAPConnection</CODE>.
+     *
+     * @return the new <CODE>SOAPConnection</CODE> object.
+     * @throws SOAPException if there was an exception
+     *                       creating the <CODE>SOAPConnection</CODE> object.
+     */
+    public abstract SOAPConnection createConnection() throws SOAPException;
+
+    private static final String DEFAULT_SOAP_CONNECTION_FACTORY =
+            "org.apache.axis2.saaj.SOAPConnectionFactoryImpl";
+
+    private static final String SF_PROPERTY =
+            "javax.xml.soap.SOAPConnectionFactory";
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConstants.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConstants.java
new file mode 100644
index 0000000..3bfaaf9
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPConstants.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * The definition of constants pertaining to the SOAP 1.1 protocol.
+ */
+public interface SOAPConstants {
+
+    /**
+     * The namespace identifier for the SOAP envelope.
+     */
+    public static final String URI_NS_SOAP_ENVELOPE =
+            "http://schemas.xmlsoap.org/soap/envelope/";
+
+    /**
+     * The namespace identifier for the SOAP encoding (see section 5 of
+     * the SOAP 1.1 specification).
+     */
+    public static final String URI_NS_SOAP_ENCODING =
+            "http://schemas.xmlsoap.org/soap/encoding/";
+
+    /**
+     * The URI identifying the first application processing a SOAP request as the intended
+     * actor for a SOAP header entry (see section 4.2.2 of the SOAP 1.1 specification).
+     */
+    public static final String URI_SOAP_ACTOR_NEXT =
+            "http://schemas.xmlsoap.org/soap/actor/next";
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPElement.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPElement.java
new file mode 100644
index 0000000..a1ca5f6
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPElement.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import java.util.Iterator;
+
+/**
+ * An object representing the contents in a
+ * <code>SOAPBody</code> object, the contents in a <code>SOAPHeader</code>
+ * object, the content that can follow the <code>SOAPBody</code> object in a
+ * <code>SOAPEnvelope</code> object, or what can follow the detail element
+ * in a <code>SOAPFault</code> object. It is
+ * the base class for all of the classes that represent the SOAP objects as
+ * defined in the SOAP specification.
+ */
+public interface SOAPElement extends javax.xml.soap.Node, org.w3c.dom.Element {
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the
+     * given <code>Name</code> object and adds the new element to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param name a <code>Name</code> object with the XML name for the
+     *             new element
+     * @return the new <code>SOAPElement</code> object that was created
+     * @throws SOAPException if there is an error in creating the
+     *                       <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement addChildElement(Name name) throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the
+     * given <code>String</code> object and adds the new element to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *                  the element
+     * @return the new <code>SOAPElement</code> object that was created
+     * @throws SOAPException if there is an error in creating the
+     *                       <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement addChildElement(String localName)
+            throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the
+     * specified local name and prefix and adds the new element to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *                  the new element
+     * @param prefix    a <code>String</code> giving the namespace prefix for
+     *                  the new element
+     * @return the new <code>SOAPElement</code> object that was created
+     * @throws SOAPException if there is an error in creating the
+     *                       <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement addChildElement(String localName,
+                                                String prefix)
+            throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the
+     * specified local name, prefix, and URI and adds the new element to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *                  the new element
+     * @param prefix    a <code>String</code> giving the namespace prefix for
+     *                  the new element
+     * @param uri       a <code>String</code> giving the URI of the namespace
+     *                  to which the new element belongs
+     * @return the new <code>SOAPElement</code> object that was created
+     * @throws SOAPException if there is an error in creating the
+     *                       <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement addChildElement(String localName,
+                                                String prefix,
+                                                String uri) throws SOAPException;
+
+    /**
+     * Add a <code>SOAPElement</code> as a child of this
+     * <code>SOAPElement</code> instance. The <code>SOAPElement</code>
+     * is expected to be created by a
+     * <code>SOAPElementFactory</code>. Callers should not rely on the
+     * element instance being added as is into the XML
+     * tree. Implementations could end up copying the content
+     * of the <code>SOAPElement</code> passed into an instance of
+     * a different <code>SOAPElement</code> implementation. For
+     * instance if <code>addChildElement()</code> is called on a
+     * <code>SOAPHeader</code>, <code>element</code> will be copied
+     * into an instance of a <code>SOAPHeaderElement</code>.
+     * <p/>
+     * <P>The fragment rooted in <code>element</code> is either added
+     * as a whole or not at all, if there was an error.
+     * <p/>
+     * <P>The fragment rooted in <code>element</code> cannot contain
+     * elements named "Envelope", "Header" or "Body" and in the SOAP
+     * namespace. Any namespace prefixes present in the fragment
+     * should be fully resolved using appropriate namespace
+     * declarations within the fragment itself.
+     *
+     * @param element the <code>SOAPElement</code> to be added as a
+     *                new child
+     * @return an instance representing the new SOAP element that was
+     *         actually added to the tree.
+     * @throws SOAPException if there was an error in adding this
+     *                       element as a child
+     */
+    public abstract SOAPElement addChildElement(SOAPElement element)
+            throws SOAPException;
+
+    /**
+     * Creates a new <code>Text</code> object initialized with the given
+     * <code>String</code> and adds it to this <code>SOAPElement</code> object.
+     *
+     * @param text a <code>String</code> object with the textual content to be added
+     * @return the <code>SOAPElement</code> object into which
+     *         the new <code>Text</code> object was inserted
+     * @throws SOAPException if there is an error in creating the
+     *                       new <code>Text</code> object
+     */
+    public abstract SOAPElement addTextNode(String text) throws SOAPException;
+
+    /**
+     * Adds an attribute with the specified name and value to this
+     * <code>SOAPElement</code> object.
+     * <p/>
+     *
+     * @param name  a <code>Name</code> object with the name of the attribute
+     * @param value a <code>String</code> giving the value of the attribute
+     * @return the <code>SOAPElement</code> object into which the attribute was
+     *         inserted
+     * @throws SOAPException if there is an error in creating the
+     *                       Attribute
+     */
+    public abstract SOAPElement addAttribute(Name name, String value)
+            throws SOAPException;
+
+    /**
+     * Adds a namespace declaration with the specified prefix and URI to this
+     * <code>SOAPElement</code> object.
+     * <p/>
+     *
+     * @param prefix a <code>String</code> giving the prefix of the namespace
+     * @param uri    a <CODE>String</CODE> giving
+     *               the prefix of the namespace
+     * @return the <code>SOAPElement</code> object into which this
+     *         namespace declaration was inserted.
+     * @throws SOAPException if there is an error in creating the
+     *                       namespace
+     */
+    public abstract SOAPElement addNamespaceDeclaration(String prefix,
+                                                        String uri) throws SOAPException;
+
+    /**
+     * Returns the value of the attribute with the specified
+     * name.
+     *
+     * @param name a <CODE>Name</CODE> object with
+     *             the name of the attribute
+     * @return a <CODE>String</CODE> giving the value of the
+     *         specified attribute
+     */
+    public abstract String getAttributeValue(Name name);
+
+    /**
+     * Returns an iterator over all of the attribute names in
+     * this <CODE>SOAPElement</CODE> object. The iterator can be
+     * used to get the attribute names, which can then be passed to
+     * the method <CODE>getAttributeValue</CODE> to retrieve the
+     * value of each attribute.
+     *
+     * @return an iterator over the names of the attributes
+     */
+    public abstract Iterator getAllAttributes();
+
+    /**
+     * Returns the URI of the namespace that has the given
+     * prefix.
+     *
+     * @param prefix a <CODE>String</CODE> giving
+     *               the prefix of the namespace for which to search
+     * @return a <CODE>String</CODE> with the uri of the namespace
+     *         that has the given prefix
+     */
+    public abstract String getNamespaceURI(String prefix);
+
+    /**
+     * Returns an iterator of namespace prefixes. The iterator
+     * can be used to get the namespace prefixes, which can then be
+     * passed to the method <CODE>getNamespaceURI</CODE> to retrieve
+     * the URI of each namespace.
+     *
+     * @return an iterator over the namespace prefixes in this
+     *         <CODE>SOAPElement</CODE> object
+     */
+    public abstract Iterator getNamespacePrefixes();
+
+    /**
+     * Returns the name of this <CODE>SOAPElement</CODE>
+     * object.
+     *
+     * @return a <CODE>Name</CODE> object with the name of this
+     *         <CODE>SOAPElement</CODE> object
+     */
+    public abstract Name getElementName();
+
+    /**
+     * Removes the attribute with the specified name.
+     *
+     * @param name the <CODE>Name</CODE> object with
+     *             the name of the attribute to be removed
+     * @return <CODE>true</CODE> if the attribute was removed
+     *         successfully; <CODE>false</CODE> if it was not
+     */
+    public abstract boolean removeAttribute(Name name);
+
+    /**
+     * Removes the namespace declaration corresponding to the
+     * given prefix.
+     *
+     * @param prefix a <CODE>String</CODE> giving
+     *               the prefix for which to search
+     * @return <CODE>true</CODE> if the namespace declaration was
+     *         removed successfully; <CODE>false</CODE> if it was
+     *         not
+     */
+    public abstract boolean removeNamespaceDeclaration(String prefix);
+
+    /**
+     * Returns an iterator over all the immediate content of
+     * this element. This includes <CODE>Text</CODE> objects as well
+     * as <CODE>SOAPElement</CODE> objects.
+     *
+     * @return an iterator with the content of this <CODE>
+     *         SOAPElement</CODE> object
+     */
+    public abstract Iterator getChildElements();
+
+    /**
+     * Returns an iterator over all the child elements with the
+     * specified name.
+     *
+     * @param name a <CODE>Name</CODE> object with
+     *             the name of the child elements to be returned
+     * @return an <CODE>Iterator</CODE> object over all the elements
+     *         in this <CODE>SOAPElement</CODE> object with the
+     *         specified name
+     */
+    public abstract Iterator getChildElements(Name name);
+
+    /**
+     * Sets the encoding style for this <CODE>SOAPElement</CODE>
+     * object to one specified.
+     *
+     * @param encodingStyle a <CODE>String</CODE>
+     *                      giving the encoding style
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem in the encoding style being set.
+     * @see #getEncodingStyle() getEncodingStyle()
+     */
+    public abstract void setEncodingStyle(String encodingStyle)
+            throws SOAPException;
+
+    /**
+     * Returns the encoding style for this <CODE>
+     * SOAPElement</CODE> object.
+     *
+     * @return a <CODE>String</CODE> giving the encoding style
+     * @see #setEncodingStyle(java.lang.String) setEncodingStyle(java.lang.String)
+     */
+    public abstract String getEncodingStyle();
+
+    /**
+     * Detaches all children of this <code>SOAPElement</code>.
+     * <p/>
+     * This method is useful for rolling back the construction of partially
+     * completed <code>SOAPHeaders</code> and <code>SOAPBodys</code> in
+     * reparation for sending a fault when an error condition is detected. It is
+     * also useful for recycling portions of a document within a SOAP message.
+     */
+    public abstract void removeContents();
+
+    /**
+     * Returns an <code>Iterator</code> over the namespace prefix
+     * <code>String</code>s visible to this element. The prefixes returned by
+     * this iterator can be passed to the method <code>getNamespaceURI()</code>
+     * to retrieve the URI of each namespace.
+     *
+     * @return an iterator over the namespace prefixes are within scope of this
+     *         <code>SOAPElement</code> object
+     */
+    public abstract Iterator getVisibleNamespacePrefixes();
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPElementFactory.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPElementFactory.java
new file mode 100644
index 0000000..4c266e6
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPElementFactory.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * <P><CODE>SOAPElementFactory</CODE> is a factory for XML
+ * fragments that will eventually end up in the SOAP part. These
+ * fragments can be inserted as children of the <CODE>
+ * SOAPHeader</CODE> or <CODE>SOAPBody</CODE> or <CODE>
+ * SOAPEnvelope</CODE>.</P>
+ * <p/>
+ * <P>Elements created using this factory do not have the
+ * properties of an element that lives inside a SOAP header
+ * document. These elements are copied into the XML document tree
+ * when they are inserted.</P>
+ *
+ * @see SOAPFactory SOAPFactory
+ * @deprecated - Use javax.xml.soap.SOAPFactory for creating SOAPElements.
+ */
+public class SOAPElementFactory {
+
+    /**
+     * Create a new <code>SOAPElementFactory from a <code>SOAPFactory</code>.
+     *
+     * @param soapfactory the <code>SOAPFactory</code> to use
+     */
+    private SOAPElementFactory(SOAPFactory soapfactory) {
+        sf = soapfactory;
+    }
+
+    /**
+     * Create a <CODE>SOAPElement</CODE> object initialized with
+     * the given <CODE>Name</CODE> object.
+     *
+     * @param name a <CODE>Name</CODE> object with
+     *             the XML name for the new element
+     * @return the new <CODE>SOAPElement</CODE> object that was
+     *         created
+     * @throws SOAPException if there is an error in
+     *                       creating the <CODE>SOAPElement</CODE> object
+     * @see SOAPFactory#createElement(javax.xml.soap.Name) SOAPFactory.createElement(javax.xml.soap.Name)
+     * @deprecated Use javax.xml.soap.SOAPFactory.createElement(javax.xml.soap.Name) instead
+     */
+    public SOAPElement create(Name name) throws SOAPException {
+        return sf.createElement(name);
+    }
+
+    /**
+     * Create a <CODE>SOAPElement</CODE> object initialized with
+     * the given local name.
+     *
+     * @param localName a <CODE>String</CODE> giving
+     *                  the local name for the new element
+     * @return the new <CODE>SOAPElement</CODE> object that was
+     *         created
+     * @throws SOAPException if there is an error in
+     *                       creating the <CODE>SOAPElement</CODE> object
+     * @see SOAPFactory#createElement(java.lang.String) SOAPFactory.createElement(java.lang.String)
+     * @deprecated Use javax.xml.soap.SOAPFactory.createElement(String localName) instead
+     */
+    public SOAPElement create(String localName) throws SOAPException {
+        return sf.createElement(localName);
+    }
+
+    /**
+     * Create a new <CODE>SOAPElement</CODE> object with the
+     * given local name, prefix and uri.
+     *
+     * @param localName a <CODE>String</CODE> giving
+     *                  the local name for the new element
+     * @param prefix    the prefix for this <CODE>
+     *                  SOAPElement</CODE>
+     * @param uri       a <CODE>String</CODE> giving the
+     *                  URI of the namespace to which the new element
+     *                  belongs
+     * @return the new <CODE>SOAPElement</CODE> object that was
+     *         created
+     * @throws SOAPException if there is an error in
+     *                       creating the <CODE>SOAPElement</CODE> object
+     * @see SOAPFactory#createElement(java.lang.String, java.lang.String, java.lang.String) SOAPFactory.createElement(java.lang.String, java.lang.String, java.lang.String)
+     * @deprecated Use javax.xml.soap.SOAPFactory.createElement(String localName, String prefix, String uri) instead
+     */
+    public SOAPElement create(String localName, String prefix, String uri)
+            throws SOAPException {
+        return sf.createElement(localName, prefix, uri);
+    }
+
+    /**
+     * Creates a new instance of <CODE>SOAPElementFactory</CODE>.
+     *
+     * @return a new instance of a <CODE>
+     *         SOAPElementFactory</CODE>
+     * @throws SOAPException if there was an error creating
+     *                       the default <CODE>SOAPElementFactory
+     */
+    public static SOAPElementFactory newInstance() throws SOAPException {
+
+        try {
+            return new SOAPElementFactory(SOAPFactory.newInstance());
+        } catch (Exception exception) {
+            throw new SOAPException("Unable to create SOAP Element Factory: "
+                    + exception.getMessage());
+        }
+    }
+
+    private SOAPFactory sf;
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPEnvelope.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPEnvelope.java
new file mode 100644
index 0000000..b1e87d7
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPEnvelope.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * The container for the SOAPHeader and SOAPBody portions of a
+ * <CODE>SOAPPart</CODE> object. By default, a <CODE>
+ * SOAPMessage</CODE> object is created with a <CODE>
+ * SOAPPart</CODE> object that has a <CODE>SOAPEnvelope</CODE>
+ * object. The <CODE>SOAPEnvelope</CODE> object by default has an
+ * empty <CODE>SOAPBody</CODE> object and an empty <CODE>
+ * SOAPHeader</CODE> object. The <CODE>SOAPBody</CODE> object is
+ * required, and the <CODE>SOAPHeader</CODE> object, though
+ * optional, is used in the majority of cases. If the <CODE>
+ * SOAPHeader</CODE> object is not needed, it can be deleted,
+ * which is shown later.</P>
+ * <p/>
+ * <P>A client can access the <CODE>SOAPHeader</CODE> and <CODE>
+ * SOAPBody</CODE> objects by calling the methods <CODE>
+ * SOAPEnvelope.getHeader</CODE> and <CODE>
+ * SOAPEnvelope.getBody</CODE>. The following lines of code use
+ * these two methods after starting with the <CODE>
+ * SOAPMessage</CODE> object <I>message</I> to get the <CODE>
+ * SOAPPart</CODE> object <I>sp</I>, which is then used to get the
+ * <CODE>SOAPEnvelope</CODE> object <I>se</I>.</P>
+ * <PRE>
+ * SOAPPart sp = message.getSOAPPart();
+ * SOAPEnvelope se = sp.getEnvelope();
+ * SOAPHeader sh = se.getHeader();
+ * SOAPBody sb = se.getBody();
+ * </PRE>
+ * <p/>
+ * <P>It is possible to change the body or header of a <CODE>
+ * SOAPEnvelope</CODE> object by retrieving the current one,
+ * deleting it, and then adding a new body or header. The <CODE>
+ * javax.xml.soap.Node</CODE> method <CODE>detachNode</CODE>
+ * detaches the XML element (node) on which it is called. For
+ * example, the following line of code deletes the <CODE>
+ * SOAPBody</CODE> object that is retrieved by the method <CODE>
+ * getBody</CODE>.</P>
+ * <PRE>
+ * se.getBody().detachNode();
+ * </PRE>
+ * To create a <CODE>SOAPHeader</CODE> object to replace the one
+ * that was removed, a client uses the method <CODE>
+ * SOAPEnvelope.addHeaderBlock</CODE>, which creates a new header and
+ * adds it to the <CODE>SOAPEnvelope</CODE> object. Similarly, the
+ * method <CODE>addBody</CODE> creates a new <CODE>SOAPBody</CODE>
+ * object and adds it to the <CODE>SOAPEnvelope</CODE> object. The
+ * following code fragment retrieves the current header, removes
+ * it, and adds a new one. Then it retrieves the current body,
+ * removes it, and adds a new one.
+ * <PRE>
+ * SOAPPart sp = message.getSOAPPart();
+ * SOAPEnvelope se = sp.getEnvelope();
+ * se.getHeader().detachNode();
+ * SOAPHeader sh = se.addHeaderBlock();
+ * se.getBody().detachNode();
+ * SOAPBody sb = se.addBody();
+ * </PRE>
+ * It is an error to add a <CODE>SOAPBody</CODE> or <CODE>
+ * SOAPHeader</CODE> object if one already exists.
+ * <p/>
+ * <P>The <CODE>SOAPEnvelope</CODE> interface provides three
+ * methods for creating <CODE>Name</CODE> objects. One method
+ * creates <CODE>Name</CODE> objects with a local name, a
+ * namespace prefix, and a namesapce URI. The second method
+ * creates <CODE>Name</CODE> objects with a local name and a
+ * namespace prefix, and the third creates <CODE>Name</CODE>
+ * objects with just a local name. The following line of code, in
+ * which <I>se</I> is a <CODE>SOAPEnvelope</CODE> object, creates
+ * a new <CODE>Name</CODE> object with all three.</P>
+ * <PRE>
+ * Name name = se.createName("GetLastTradePrice", "WOMBAT",
+ * "http://www.wombat.org/trader");
+ * </PRE>
+ */
+public interface SOAPEnvelope extends SOAPElement {
+
+    /**
+     * Creates a new <CODE>Name</CODE> object initialized with the
+     * given local name, namespace prefix, and namespace URI.
+     * <p/>
+     * <P>This factory method creates <CODE>Name</CODE> objects
+     * for use in the SOAP/XML document.
+     *
+     * @param localName a <CODE>String</CODE> giving
+     *                  the local name
+     * @param prefix    a <CODE>String</CODE> giving
+     *                  the prefix of the namespace
+     * @param uri       a <CODE>String</CODE> giving the
+     *                  URI of the namespace
+     * @return a <CODE>Name</CODE> object initialized with the given
+     *         local name, namespace prefix, and namespace URI
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Name createName(String localName,
+                                    String prefix,
+                                    String uri)
+            throws SOAPException;
+
+    /**
+     * Creates a new <CODE>Name</CODE> object initialized with the
+     * given local name.
+     * <p/>
+     * <P>This factory method creates <CODE>Name</CODE> objects
+     * for use in the SOAP/XML document.
+     *
+     * @param localName a <CODE>String</CODE> giving
+     *                  the local name
+     * @return a <CODE>Name</CODE> object initialized with the given
+     *         local name
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Name createName(String localName) throws SOAPException;
+
+    /**
+     * Returns the <CODE>SOAPHeader</CODE> object for this <CODE>
+     * SOAPEnvelope</CODE> object.
+     * <p/>
+     * <P>A new <CODE>SOAPMessage</CODE> object is by default
+     * created with a <CODE>SOAPEnvelope</CODE> object that
+     * contains an empty <CODE>SOAPHeader</CODE> object. As a
+     * result, the method <CODE>getHeader</CODE> will always
+     * return a <CODE>SOAPHeader</CODE> object unless the header
+     * has been removed and a new one has not been added.
+     *
+     * @return the <CODE>SOAPHeader</CODE> object or <CODE>
+     *         null</CODE> if there is none
+     * @throws SOAPException if there is a problem
+     *                       obtaining the <CODE>SOAPHeader</CODE> object
+     */
+    public abstract SOAPHeader getHeader() throws SOAPException;
+
+    /**
+     * Returns the <CODE>SOAPBody</CODE> object associated with
+     * this <CODE>SOAPEnvelope</CODE> object.
+     * <p/>
+     * <P>A new <CODE>SOAPMessage</CODE> object is by default
+     * created with a <CODE>SOAPEnvelope</CODE> object that
+     * contains an empty <CODE>SOAPBody</CODE> object. As a
+     * result, the method <CODE>getBody</CODE> will always return
+     * a <CODE>SOAPBody</CODE> object unless the body has been
+     * removed and a new one has not been added.
+     *
+     * @return the <CODE>SOAPBody</CODE> object for this <CODE>
+     *         SOAPEnvelope</CODE> object or <CODE>null</CODE> if there
+     *         is none
+     * @throws SOAPException if there is a problem
+     *                       obtaining the <CODE>SOAPBody</CODE> object
+     */
+    public abstract SOAPBody getBody() throws SOAPException;
+
+    /**
+     * Creates a <CODE>SOAPHeader</CODE> object and sets it as the
+     * <CODE>SOAPHeader</CODE> object for this <CODE>
+     * SOAPEnvelope</CODE> object.
+     * <p/>
+     * <P>It is illegal to add a header when the envelope already
+     * contains a header. Therefore, this method should be called
+     * only after the existing header has been removed.
+     *
+     * @return the new <CODE>SOAPHeader</CODE> object
+     * @throws SOAPException if this <CODE>
+     *                       SOAPEnvelope</CODE> object already contains a valid
+     *                       <CODE>SOAPHeader</CODE> object
+     */
+    public abstract SOAPHeader addHeader() throws SOAPException;
+
+    /**
+     * Creates a <CODE>SOAPBody</CODE> object and sets it as the
+     * <CODE>SOAPBody</CODE> object for this <CODE>
+     * SOAPEnvelope</CODE> object.
+     * <p/>
+     * <P>It is illegal to add a body when the envelope already
+     * contains a body. Therefore, this method should be called
+     * only after the existing body has been removed.
+     *
+     * @return the new <CODE>SOAPBody</CODE> object
+     * @throws SOAPException if this <CODE>
+     *                       SOAPEnvelope</CODE> object already contains a valid
+     *                       <CODE>SOAPBody</CODE> object
+     */
+    public abstract SOAPBody addBody() throws SOAPException;
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPException.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPException.java
new file mode 100644
index 0000000..1466abb
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPException.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * An exception that signals that a SOAP exception has
+ * occurred. A <CODE>SOAPException</CODE> object may contain a
+ * <CODE>String</CODE> that gives the reason for the exception, an
+ * embedded <CODE>Throwable</CODE> object, or both. This class
+ * provides methods for retrieving reason messages and for
+ * retrieving the embedded <CODE>Throwable</CODE> object.</P>
+ * <p/>
+ * <P>Typical reasons for throwing a <CODE>SOAPException</CODE>
+ * object are problems such as difficulty setting a header, not
+ * being able to send a message, and not being able to get a
+ * connection with the provider. Reasons for embedding a <CODE>
+ * Throwable</CODE> object include problems such as input/output
+ * errors or a parsing problem, such as an error in parsing a
+ * header.
+ */
+public class SOAPException extends Exception {
+
+    private static final long serialVersionUID = 5083961510786058130L;
+
+	/**
+     * Constructs a <CODE>SOAPException</CODE> object with no
+     * reason or embedded <CODE>Throwable</CODE> object.
+     */
+    public SOAPException() {
+        cause = null;
+    }
+
+    /**
+     * Constructs a <CODE>SOAPException</CODE> object with the
+     * given <CODE>String</CODE> as the reason for the exception
+     * being thrown.
+     *
+     * @param reason a description of what caused
+     *               the exception
+     */
+    public SOAPException(String reason) {
+
+        super(reason);
+
+        cause = null;
+    }
+
+    /**
+     * Constructs a <CODE>SOAPException</CODE> object with the
+     * given <CODE>String</CODE> as the reason for the exception
+     * being thrown and the given <CODE>Throwable</CODE> object as
+     * an embedded exception.
+     *
+     * @param reason a description of what caused
+     *               the exception
+     * @param cause  a <CODE>Throwable</CODE> object
+     *               that is to be embedded in this <CODE>SOAPException</CODE>
+     *               object
+     */
+    public SOAPException(String reason, Throwable cause) {
+
+        super(reason);
+
+        initCause(cause);
+    }
+
+    /**
+     * Constructs a <CODE>SOAPException</CODE> object
+     * initialized with the given <CODE>Throwable</CODE>
+     * object.
+     *
+     * @param cause a <CODE>Throwable</CODE> object
+     *              that is to be embedded in this <CODE>SOAPException</CODE>
+     *              object
+     */
+    public SOAPException(Throwable cause) {
+
+        super(cause.toString());
+
+        initCause(cause);
+    }
+
+    /**
+     * Returns the detail message for this <CODE>
+     * SOAPException</CODE> object.
+     * <p/>
+     * <P>If there is an embedded <CODE>Throwable</CODE> object,
+     * and if the <CODE>SOAPException</CODE> object has no detail
+     * message of its own, this method will return the detail
+     * message from the embedded <CODE>Throwable</CODE>
+     * object.</P>
+     *
+     * @return the error or warning message for this <CODE>
+     *         SOAPException</CODE> or, if it has none, the message of
+     *         the embedded <CODE>Throwable</CODE> object, if there is
+     *         one
+     */
+    public String getMessage() {
+
+        String s = super.getMessage();
+
+        if ((s == null) && (cause != null)) {
+            return cause.getMessage();
+        } else {
+            return s;
+        }
+    }
+
+    /**
+     * Returns the <CODE>Throwable</CODE> object embedded in
+     * this <CODE>SOAPException</CODE> if there is one. Otherwise,
+     * this method returns <CODE>null</CODE>.
+     *
+     * @return the embedded <CODE>Throwable</CODE> object or <CODE>
+     *         null</CODE> if there is none
+     */
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Initializes the <CODE>cause</CODE> field of this <CODE>
+     * SOAPException</CODE> object with the given <CODE>
+     * Throwable</CODE> object.
+     * <p/>
+     * <P>This method can be called at most once. It is generally
+     * called from within the constructor or immediately after the
+     * constructor has returned a new <CODE>SOAPException</CODE>
+     * object. If this <CODE>SOAPException</CODE> object was
+     * created with the constructor {@link #SOAPException(java.lang.Throwable) SOAPException(java.lang.Throwable)}
+     * or {@link #SOAPException(java.lang.String, java.lang.Throwable) SOAPException(java.lang.String, java.lang.Throwable)}, meaning
+     * that its <CODE>cause</CODE> field already has a value, this
+     * method cannot be called even once.
+     *
+     * @param cause the <CODE>Throwable</CODE>
+     *              object that caused this <CODE>SOAPException</CODE> object
+     *              to be thrown. The value of this parameter is saved for
+     *              later retrieval by the <A href=
+     *              "../../../javax/xml/soap/SOAPException.html#getCause()">
+     *              <CODE>getCause()</CODE></A> method. A <TT>null</TT> value
+     *              is permitted and indicates that the cause is nonexistent
+     *              or unknown.
+     * @return a reference to this <CODE>SOAPException</CODE>
+     *         instance
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          <CODE>cause</CODE> is this <CODE>Throwable</CODE> object.
+     *          (A <CODE>Throwable</CODE> object cannot be its own
+     *          cause.)
+     * @throws java.lang.IllegalStateException
+     *          if this <CODE>
+     *          SOAPException</CODE> object was created with {@link #SOAPException(java.lang.Throwable) SOAPException(java.lang.Throwable)}
+     *          or {@link #SOAPException(java.lang.String, java.lang.Throwable) SOAPException(java.lang.String, java.lang.Throwable)}, or this
+     *          method has already been called on this <CODE>
+     *          SOAPException</CODE> object
+     */
+    public synchronized Throwable initCause(Throwable cause) {
+
+        if (this.cause != null) {
+            throw new IllegalStateException("Can't override cause");
+        }
+
+        if (cause == this) {
+            throw new IllegalArgumentException("Self-causation not permitted");
+        } else {
+            this.cause = cause;
+
+            return this;
+        }
+    }
+
+    private Throwable cause;
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFactory.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFactory.java
new file mode 100644
index 0000000..0b00007
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFactory.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * <code>SOAPFactory</code> is a factory for creating various objects
+ * that exist in the SOAP XML tree.
+ * <p/>
+ * <code>SOAPFactory</code> can be
+ * used to create XML fragments that will eventually end up in the
+ * SOAP part. These fragments can be inserted as children of the
+ * <code>SOAPHeaderElement</code> or <code>SOAPBodyElement</code> or
+ * <code>SOAPEnvelope</code>.
+ * <p/>
+ * <code>SOAPFactory</code> also has methods to create
+ * <code>javax.xml.soap.Detail</code> objects as well as
+ * <code>java.xml.soap.Name</code> objects.
+ */
+public abstract class SOAPFactory {
+
+    public SOAPFactory() {
+    }
+
+    /**
+     * Create a <code>SOAPElement</code> object initialized with the
+     * given <code>Name</code> object.
+     *
+     * @param name a <code>Name</code> object with the XML name for
+     *             the new element
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     * @throws SOAPException if there is an error in creating the
+     *                       <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement createElement(Name name) throws SOAPException;
+
+    /**
+     * Create a <code>SOAPElement</code> object initialized with the
+     * given local name.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *                  the new element
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     * @throws SOAPException if there is an error in creating the
+     *                       <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement createElement(String localName) throws SOAPException;
+
+    /**
+     * Create a new <code>SOAPElement</code> object with the given
+     * local name, prefix and uri.
+     *
+     * @param localName a <code>String</code> giving the local name
+     *                  for the new element
+     * @param prefix    the prefix for this <code>SOAPElement</code>
+     * @param uri       a <code>String</code> giving the URI of the
+     *                  namespace to which the new element belongs
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     * @throws SOAPException if there is an error in creating the
+     *                       <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement createElement(String localName,
+                                              String prefix,
+                                              String uri)
+            throws SOAPException;
+
+    /**
+     * Creates a new <code>Detail</code> object which serves as a container
+     * for <code>DetailEntry</code> objects.
+     * <p/>
+     * This factory method creates <code>Detail</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPFault</code>
+     * abstraction.
+     *
+     * @return a <code>Detail</code> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Detail createDetail() throws SOAPException;
+
+    /**
+     * Creates a new <code>Name</code> object initialized with the
+     * given local name, namespace prefix, and namespace URI.
+     * <p/>
+     * This factory method creates <code>Name</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPEnvelope</code>
+     * abstraction.
+     *
+     * @param localName a <code>String</code> giving the local name
+     * @param prefix    a <code>String</code> giving the prefix of the namespace
+     * @param uri       a <code>String</code> giving the URI of the namespace
+     * @return a <code>Name</code> object initialized with the given
+     *         local name, namespace prefix, and namespace URI
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Name createName(String localName,
+                                    String prefix,
+                                    String uri)
+            throws SOAPException;
+
+    /**
+     * Creates a new <code>Name</code> object initialized with the
+     * given local name.
+     * <p/>
+     * This factory method creates <code>Name</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPEnvelope</code>
+     * abstraction.
+     *
+     * @param localName a <code>String</code> giving the local name
+     * @return a <code>Name</code> object initialized with the given
+     *         local name
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Name createName(String localName) throws SOAPException;
+
+    /**
+     * Creates a new instance of <code>SOAPFactory</code>.
+     *
+     * @return a new instance of a <code>SOAPFactory</code>
+     * @throws SOAPException if there was an error creating the
+     *                       default <code>SOAPFactory</code>
+     */
+    public static SOAPFactory newInstance() throws SOAPException {
+
+        try {
+            return (SOAPFactory) FactoryFinder.find(SF_PROPERTY, DEFAULT_SF);
+        } catch (Exception exception) {
+            throw new SOAPException("Unable to create SOAP Factory: "
+                    + exception.getMessage());
+        }
+    }
+
+    private static final String SF_PROPERTY = "javax.xml.soap.SOAPFactory";
+
+    private static final String DEFAULT_SF =
+            "org.apache.axis2.saaj.SOAPFactoryImpl";
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFault.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFault.java
new file mode 100644
index 0000000..9aa96a9
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFault.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import java.util.Locale;
+
+/**
+ * An element in the <CODE>SOAPBody</CODE> object that contains
+ * error and/or status information. This information may relate to
+ * errors in the <CODE>SOAPMessage</CODE> object or to problems
+ * that are not related to the content in the message itself.
+ * Problems not related to the message itself are generally errors
+ * in processing, such as the inability to communicate with an
+ * upstream server.
+ * <P>
+ * The <CODE>SOAPFault</CODE> interface provides methods for
+ * retrieving the information contained in a <CODE>
+ * SOAPFault</CODE> object and for setting the fault code, the
+ * fault actor, and a string describing the fault. A fault code is
+ * one of the codes defined in the SOAP 1.1 specification that
+ * describe the fault. An actor is an intermediate recipient to
+ * whom a message was routed. The message path may include one or
+ * more actors, or, if no actors are specified, the message goes
+ * only to the default actor, which is the final intended
+ * recipient.
+ */
+public interface SOAPFault extends SOAPBodyElement {
+
+    /**
+     * Sets this <CODE>SOAPFault</CODE> object with the given
+     * fault code.
+     * <p/>
+     * <P>Fault codes, which given information about the fault,
+     * are defined in the SOAP 1.1 specification.</P>
+     *
+     * @param faultCode a <CODE>String</CODE> giving
+     *                  the fault code to be set; must be one of the fault codes
+     *                  defined in the SOAP 1.1 specification
+     * @throws SOAPException if there was an error in
+     *                       adding the <CODE>faultCode</CODE> to the underlying XML
+     *                       tree.
+     * @see #getFaultCode() getFaultCode()
+     */
+    public abstract void setFaultCode(String faultCode) throws SOAPException;
+
+    /**
+     * Gets the fault code for this <CODE>SOAPFault</CODE>
+     * object.
+     *
+     * @return a <CODE>String</CODE> with the fault code
+     * @see #setFaultCode(java.lang.String) setFaultCode(java.lang.String)
+     */
+    public abstract String getFaultCode();
+
+    /**
+     * Sets this <CODE>SOAPFault</CODE> object with the given
+     * fault actor.
+     * <p/>
+     * <P>The fault actor is the recipient in the message path who
+     * caused the fault to happen.</P>
+     *
+     * @param faultActor a <CODE>String</CODE>
+     *                   identifying the actor that caused this <CODE>
+     *                   SOAPFault</CODE> object
+     * @throws SOAPException if there was an error in
+     *                       adding the <CODE>faultActor</CODE> to the underlying XML
+     *                       tree.
+     * @see #getFaultActor() getFaultActor()
+     */
+    public abstract void setFaultActor(String faultActor) throws SOAPException;
+
+    /**
+     * Gets the fault actor for this <CODE>SOAPFault</CODE>
+     * object.
+     *
+     * @return a <CODE>String</CODE> giving the actor in the message
+     *         path that caused this <CODE>SOAPFault</CODE> object
+     * @see #setFaultActor(java.lang.String) setFaultActor(java.lang.String)
+     */
+    public abstract String getFaultActor();
+
+    /**
+     * Sets the fault string for this <CODE>SOAPFault</CODE>
+     * object to the given string.
+     *
+     * @param faultString a <CODE>String</CODE>
+     *                    giving an explanation of the fault
+     * @throws SOAPException if there was an error in
+     *                       adding the <CODE>faultString</CODE> to the underlying XML
+     *                       tree.
+     * @see #getFaultString() getFaultString()
+     */
+    public abstract void setFaultString(String faultString)
+            throws SOAPException;
+
+    /**
+     * Gets the fault string for this <CODE>SOAPFault</CODE>
+     * object.
+     *
+     * @return a <CODE>String</CODE> giving an explanation of the
+     *         fault
+     */
+    public abstract String getFaultString();
+
+    /**
+     * Returns the detail element for this <CODE>SOAPFault</CODE>
+     * object.
+     * <p/>
+     * <P>A <CODE>Detail</CODE> object carries
+     * application-specific error information related to <CODE>
+     * SOAPBodyElement</CODE> objects.</P>
+     *
+     * @return a <CODE>Detail</CODE> object with
+     *         application-specific error information
+     */
+    public abstract Detail getDetail();
+
+    /**
+     * Creates a <CODE>Detail</CODE> object and sets it as the
+     * <CODE>Detail</CODE> object for this <CODE>SOAPFault</CODE>
+     * object.
+     * <p/>
+     * <P>It is illegal to add a detail when the fault already
+     * contains a detail. Therefore, this method should be called
+     * only after the existing detail has been removed.</P>
+     *
+     * @return the new <CODE>Detail</CODE> object
+     * @throws SOAPException if this
+     *                       <CODE>SOAPFault</CODE> object already contains a valid
+     *                       <CODE>Detail</CODE> object
+     */
+    public abstract Detail addDetail() throws SOAPException;
+
+    /**
+     * Sets this <code>SOAPFault</code> object with the given fault code.
+     * <p/>
+     * Fault codes, which give information about the fault, are defined in the
+     * SOAP 1.1 specification. A fault code is mandatory and must be of type
+     * <code>QName</code>. This method provides a convenient way to set a fault
+     * code. For example,
+     * <p/>
+     * <pre>
+     * SOAPEnvelope se = ...;
+     * // Create a qualified name in the SOAP namespace with a localName
+     * // of "Client".  Note that prefix parameter is optional and is null
+     * // here which causes the implementation to use an appropriate prefix.
+     * Name qname = se.createName("Client", null,
+     * SOAPConstants.URI_NS_SOAP_ENVELOPE);
+     * SOAPFault fault = ...;
+     * fault.setFaultCode(qname);
+     * <p/>
+     * It is preferable to use this method over setFaultCode(String).
+     *
+     * @param name a <code>Name</code> object giving the fault code to be set.
+     *             It must be namespace qualified.
+     * @throws SOAPException if there was an error in adding the
+     *                       <code>faultcode</code> element to the underlying XML tree
+     */
+    public abstract void setFaultCode(Name name) throws SOAPException;
+
+    /**
+     * Gets the mandatory SOAP 1.1 fault code for this <code>SOAPFault</code>
+     * object as a SAAJ <code>Name</code> object. The SOAP 1.1 specification
+     * requires the value of the "faultcode" element to be of type QName. This
+     * method returns the content of the element as a QName in the form of a
+     * SAAJ <code>Name</code> object. This method should be used instead of the
+     * <code>getFaultCode()</code> method since it allows applications to easily
+     * access the namespace name without additional parsing.
+     * <p/>
+     * In the future, a QName object version of this method may also be added.
+     *
+     * @return a <code>Name</code> representing the faultcode
+     */
+    public abstract Name getFaultCodeAsName();
+
+    /**
+     * Sets the fault string for this <code>SOAPFault</code> object to the given
+     * string and localized to the given locale.
+     *
+     * @param faultString a <code>String</code> giving an explanation of
+     *                    the fault
+     * @param locale      a <code>Locale</code> object indicating the
+     *                    native language of the <code>faultString</code>
+     * @throws SOAPException if there was an error in adding the
+     *                       <code>faultString</code> to the underlying XML tree
+     */
+    public abstract void setFaultString(String faultString, Locale locale) throws SOAPException;
+
+    /**
+     * Returns the optional detail element for this <code>SOAPFault</code>
+     * object.
+     *
+     * @return a <code>Locale</code> object indicating the native language of
+     *         the fault string or <code>null</code> if no locale was
+     *         specified
+     */
+    public abstract Locale getFaultStringLocale();
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFaultElement.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFaultElement.java
new file mode 100644
index 0000000..55906aa
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPFaultElement.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * A representation of the contents in
+ * a <code>SOAPFault</code> object.  The <code>Detail</code> interface
+ * is a <code>SOAPFaultElement</code> object that has been defined.
+ * <p/>
+ * Content is added to a <code>SOAPFaultElement</code> using the
+ * <code>SOAPElement</code> method <code>addTextNode</code>.
+ */
+public interface SOAPFaultElement extends SOAPElement {
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPHeader.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPHeader.java
new file mode 100644
index 0000000..c44f53c
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPHeader.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import java.util.Iterator;
+
+/**
+ * <P>A representation of the SOAP header element. A SOAP header
+ * element consists of XML data that affects the way the
+ * application-specific content is processed by the message
+ * provider. For example, transaction semantics, authentication
+ * information, and so on, can be specified as the content of a
+ * <CODE>SOAPHeader</CODE> object.</P>
+ * <p/>
+ * <P>A <CODE>SOAPEnvelope</CODE> object contains an empty <CODE>
+ * SOAPHeader</CODE> object by default. If the <CODE>
+ * SOAPHeader</CODE> object, which is optional, is not needed, it
+ * can be retrieved and deleted with the following line of code.
+ * The variable <I>se</I> is a <CODE>SOAPEnvelope</CODE>
+ * object.</P>
+ * <PRE>
+ * se.getHeader().detachNode();
+ * </PRE>
+ * A <CODE>SOAPHeader</CODE> object is created with the <CODE>
+ * SOAPEnvelope</CODE> method <CODE>addHeaderBlock</CODE>. This method,
+ * which creates a new header and adds it to the envelope, may be
+ * called only after the existing header has been removed.
+ * <PRE>
+ * se.getHeader().detachNode();
+ * SOAPHeader sh = se.addHeaderBlock();
+ * </PRE>
+ * <p/>
+ * <P>A <CODE>SOAPHeader</CODE> object can have only <CODE>
+ * SOAPHeaderElement</CODE> objects as its immediate children. The
+ * method <CODE>addHeaderElement</CODE> creates a new <CODE>
+ * HeaderElement</CODE> object and adds it to the <CODE>
+ * SOAPHeader</CODE> object. In the following line of code, the
+ * argument to the method <CODE>addHeaderElement</CODE> is a
+ * <CODE>Name</CODE> object that is the name for the new <CODE>
+ * HeaderElement</CODE> object.</P>
+ * <PRE>
+ * SOAPHeaderElement shElement = sh.addHeaderElement(name);
+ * </PRE>
+ *
+ * @see SOAPHeaderElement SOAPHeaderElement
+ */
+public interface SOAPHeader extends SOAPElement {
+
+    /**
+     * Creates a new <CODE>SOAPHeaderElement</CODE> object
+     * initialized with the specified name and adds it to this
+     * <CODE>SOAPHeader</CODE> object.
+     *
+     * @param name a <CODE>Name</CODE> object with
+     *             the name of the new <CODE>SOAPHeaderElement</CODE>
+     *             object
+     * @return the new <CODE>SOAPHeaderElement</CODE> object that
+     *         was inserted into this <CODE>SOAPHeader</CODE>
+     *         object
+     * @throws SOAPException if a SOAP error occurs
+     */
+    public abstract SOAPHeaderElement addHeaderElement(Name name)
+            throws SOAPException;
+
+    /**
+     * Returns a list of all the <CODE>SOAPHeaderElement</CODE>
+     * objects in this <CODE>SOAPHeader</CODE> object that have the
+     * the specified actor. An actor is a global attribute that
+     * indicates the intermediate parties to whom the message should
+     * be sent. An actor receives the message and then sends it to
+     * the next actor. The default actor is the ultimate intended
+     * recipient for the message, so if no actor attribute is
+     * included in a <CODE>SOAPHeader</CODE> object, the message is
+     * sent to its ultimate destination.
+     *
+     * @param actor a <CODE>String</CODE> giving the
+     *              URI of the actor for which to search
+     * @return an <CODE>Iterator</CODE> object over all the <CODE>
+     *         SOAPHeaderElement</CODE> objects that contain the
+     *         specified actor
+     * @see #extractHeaderElements(java.lang.String) extractHeaderElements(java.lang.String)
+     */
+    public abstract Iterator examineHeaderElements(String actor);
+
+    /**
+     * Returns a list of all the <CODE>SOAPHeaderElement</CODE>
+     * objects in this <CODE>SOAPHeader</CODE> object that have
+     * the the specified actor and detaches them from this <CODE>
+     * SOAPHeader</CODE> object.
+     * <p/>
+     * <P>This method allows an actor to process only the parts of
+     * the <CODE>SOAPHeader</CODE> object that apply to it and to
+     * remove them before passing the message on to the next
+     * actor.
+     *
+     * @param actor a <CODE>String</CODE> giving the
+     *              URI of the actor for which to search
+     * @return an <CODE>Iterator</CODE> object over all the <CODE>
+     *         SOAPHeaderElement</CODE> objects that contain the
+     *         specified actor
+     * @see #examineHeaderElements(java.lang.String) examineHeaderElements(java.lang.String)
+     */
+    public abstract Iterator extractHeaderElements(String actor);
+
+    /**
+     * Returns an <code>Iterator</code> over all the
+     * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader</code>
+     * object that have the specified actor and that have a MustUnderstand
+     * attribute whose value is equivalent to <code>true</code>.
+     *
+     * @param actor a <code>String</code> giving the URI of the actor for which
+     *              to search
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects that contain the
+     *         specified actor and are marked as MustUnderstand
+     */
+    public abstract Iterator examineMustUnderstandHeaderElements(String actor);
+
+    /**
+     * Returns an <code>Iterator</code> over all the
+     * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader</code>
+     * object.
+     *
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects contained by this
+     *         <code>SOAPHeader</code>
+     */
+    public abstract Iterator examineAllHeaderElements();
+
+    /**
+     * Returns an <code>Iterator</code> over all the
+     * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader </code>
+     * object and detaches them from this <code>SOAPHeader</code> object.
+     *
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects contained by this
+     *         <code>SOAPHeader</code>
+     */
+    public abstract Iterator extractAllHeaderElements();
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPHeaderElement.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPHeaderElement.java
new file mode 100644
index 0000000..26f4e17
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPHeaderElement.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * <P>An object representing the contents in the SOAP header part
+ * of the SOAP envelope. The immediate children of a <CODE>
+ * SOAPHeader</CODE> object can be represented only as <CODE>
+ * SOAPHeaderElement</CODE> objects.</P>
+ * <p/>
+ * <P>A <CODE>SOAPHeaderElement</CODE> object can have other
+ * <CODE>SOAPElement</CODE> objects as its children.</P>
+ */
+public interface SOAPHeaderElement extends SOAPElement {
+
+    /**
+     * Sets the actor associated with this <CODE>
+     * SOAPHeaderElement</CODE> object to the specified actor. The
+     * default value of an actor is: <CODE>
+     * SOAPConstants.URI_SOAP_ACTOR_NEXT</CODE>
+     *
+     * @param actorURI a <CODE>String</CODE> giving
+     *                 the URI of the actor to set
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there is a problem in setting the actor.
+     * @see #getActor() getActor()
+     */
+    public abstract void setActor(String actorURI);
+
+    /**
+     * Returns the uri of the actor associated with this <CODE>
+     * SOAPHeaderElement</CODE> object.
+     *
+     * @return a <CODE>String</CODE> giving the URI of the
+     *         actor
+     * @see #setActor(java.lang.String) setActor(java.lang.String)
+     */
+    public abstract String getActor();
+
+    /**
+     * Sets the mustUnderstand attribute for this <CODE>
+     * SOAPHeaderElement</CODE> object to be on or off.
+     * <p/>
+     * <P>If the mustUnderstand attribute is on, the actor who
+     * receives the <CODE>SOAPHeaderElement</CODE> must process it
+     * correctly. This ensures, for example, that if the <CODE>
+     * SOAPHeaderElement</CODE> object modifies the message, that
+     * the message is being modified correctly.</P>
+     *
+     * @param mustUnderstand <CODE>true</CODE> to
+     *                       set the mustUnderstand attribute on; <CODE>false</CODE>
+     *                       to turn if off
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there is a problem in setting the actor.
+     * @see #getMustUnderstand() getMustUnderstand()
+     */
+    public abstract void setMustUnderstand(boolean mustUnderstand);
+
+    /**
+     * Returns whether the mustUnderstand attribute for this
+     * <CODE>SOAPHeaderElement</CODE> object is turned on.
+     *
+     * @return <CODE>true</CODE> if the mustUnderstand attribute of
+     *         this <CODE>SOAPHeaderElement</CODE> object is turned on;
+     *         <CODE>false</CODE> otherwise
+     */
+    public abstract boolean getMustUnderstand();
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPMessage.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPMessage.java
new file mode 100644
index 0000000..8b96a49
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPMessage.java
@@ -0,0 +1,403 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import javax.activation.DataHandler;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Iterator;
+
+/**
+ * <P>The root class for all SOAP messages. As transmitted on the
+ * "wire", a SOAP message is an XML document or a MIME message
+ * whose first body part is an XML/SOAP document.</P>
+ * <p/>
+ * <P>A <CODE>SOAPMessage</CODE> object consists of a SOAP part
+ * and optionally one or more attachment parts. The SOAP part for
+ * a <CODE>SOAPMessage</CODE> object is a <CODE>SOAPPart</CODE>
+ * object, which contains information used for message routing and
+ * identification, and which can contain application-specific
+ * content. All data in the SOAP Part of a message must be in XML
+ * format.</P>
+ * <p/>
+ * <P>A new <CODE>SOAPMessage</CODE> object contains the following
+ * by default:</P>
+ * <p/>
+ * <UL>
+ * <LI>A <CODE>SOAPPart</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPEnvelope</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPBody</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPHeader</CODE> object</LI>
+ * </UL>
+ * The SOAP part of a message can be retrieved by calling the
+ * method <CODE>SOAPMessage.getSOAPPart()</CODE>. The <CODE>
+ * SOAPEnvelope</CODE> object is retrieved from the <CODE>
+ * SOAPPart</CODE> object, and the <CODE>SOAPEnvelope</CODE>
+ * object is used to retrieve the <CODE>SOAPBody</CODE> and <CODE>
+ * SOAPHeader</CODE> objects.
+ * <PRE>
+ * SOAPPart sp = message.getSOAPPart();
+ * SOAPEnvelope se = sp.getEnvelope();
+ * SOAPBody sb = se.getBody();
+ * SOAPHeader sh = se.getHeader();
+ * </PRE>
+ * <p/>
+ * <P>In addition to the mandatory <CODE>SOAPPart</CODE> object, a
+ * <CODE>SOAPMessage</CODE> object may contain zero or more <CODE>
+ * AttachmentPart</CODE> objects, each of which contains
+ * application-specific data. The <CODE>SOAPMessage</CODE>
+ * interface provides methods for creating <CODE>
+ * AttachmentPart</CODE> objects and also for adding them to a
+ * <CODE>SOAPMessage</CODE> object. A party that has received a
+ * <CODE>SOAPMessage</CODE> object can examine its contents by
+ * retrieving individual attachment parts.</P>
+ * <p/>
+ * <P>Unlike the rest of a SOAP message, an attachment is not
+ * required to be in XML format and can therefore be anything from
+ * simple text to an image file. Consequently, any message content
+ * that is not in XML format must be in an <CODE>
+ * AttachmentPart</CODE> object.</P>
+ * <p/>
+ * <P>A <CODE>MessageFactory</CODE> object creates new <CODE>
+ * SOAPMessage</CODE> objects. If the <CODE>MessageFactory</CODE>
+ * object was initialized with a messaging Profile, it produces
+ * <CODE>SOAPMessage</CODE> objects that conform to that Profile.
+ * For example, a <CODE>SOAPMessage</CODE> object created by a
+ * <CODE>MessageFactory</CODE> object initialized with the ebXML
+ * Profile will have the appropriate ebXML headers.</P>
+ *
+ * @see MessageFactory MessageFactory
+ * @see AttachmentPart AttachmentPart
+ */
+public abstract class SOAPMessage {
+
+    public SOAPMessage() {
+    }
+
+    /**
+     * Retrieves a description of this <CODE>SOAPMessage</CODE>
+     * object's content.
+     *
+     * @return a <CODE>String</CODE> describing the content of this
+     *         message or <CODE>null</CODE> if no description has been
+     *         set
+     * @see #setContentDescription(java.lang.String) setContentDescription(java.lang.String)
+     */
+    public abstract String getContentDescription();
+
+    /**
+     * Sets the description of this <CODE>SOAPMessage</CODE>
+     * object's content with the given description.
+     *
+     * @param description a <CODE>String</CODE>
+     *                    describing the content of this message
+     * @see #getContentDescription() getContentDescription()
+     */
+    public abstract void setContentDescription(String description);
+
+    /**
+     * Gets the SOAP part of this <CODE>SOAPMessage</CODE> object.
+     * <p/>
+     * <p/>
+     * <P>If a <CODE>SOAPMessage</CODE> object contains one or
+     * more attachments, the SOAP Part must be the first MIME body
+     * part in the message.</P>
+     *
+     * @return the <CODE>SOAPPart</CODE> object for this <CODE>
+     *         SOAPMessage</CODE> object
+     */
+    public abstract SOAPPart getSOAPPart();
+
+    /**
+     * Removes all <CODE>AttachmentPart</CODE> objects that have
+     * been added to this <CODE>SOAPMessage</CODE> object.
+     * <p/>
+     * <P>This method does not touch the SOAP part.</P>
+     */
+    public abstract void removeAllAttachments();
+
+    /**
+     * Gets a count of the number of attachments in this
+     * message. This count does not include the SOAP part.
+     *
+     * @return the number of <CODE>AttachmentPart</CODE> objects
+     *         that are part of this <CODE>SOAPMessage</CODE>
+     *         object
+     */
+    public abstract int countAttachments();
+
+    /**
+     * Retrieves all the <CODE>AttachmentPart</CODE> objects
+     * that are part of this <CODE>SOAPMessage</CODE> object.
+     *
+     * @return an iterator over all the attachments in this
+     *         message
+     */
+    public abstract Iterator getAttachments();
+
+    /**
+     * Retrieves all the <CODE>AttachmentPart</CODE> objects
+     * that have header entries that match the specified headers.
+     * Note that a returned attachment could have headers in
+     * addition to those specified.
+     *
+     * @param headers a <CODE>MimeHeaders</CODE>
+     *                object containing the MIME headers for which to
+     *                search
+     * @return an iterator over all attachments that have a header
+     *         that matches one of the given headers
+     */
+    public abstract Iterator getAttachments(MimeHeaders headers);
+
+    /**
+     * Adds the given <CODE>AttachmentPart</CODE> object to this
+     * <CODE>SOAPMessage</CODE> object. An <CODE>
+     * AttachmentPart</CODE> object must be created before it can be
+     * added to a message.
+     *
+     * @param attachmentpart an <CODE>
+     *                       AttachmentPart</CODE> object that is to become part of
+     *                       this <CODE>SOAPMessage</CODE> object
+     * @throws java.lang.IllegalArgumentException
+     *
+     */
+    public abstract void addAttachmentPart(AttachmentPart attachmentpart);
+
+    /**
+     * Creates a new empty <CODE>AttachmentPart</CODE> object.
+     * Note that the method <CODE>addAttachmentPart</CODE> must be
+     * called with this new <CODE>AttachmentPart</CODE> object as
+     * the parameter in order for it to become an attachment to this
+     * <CODE>SOAPMessage</CODE> object.
+     *
+     * @return a new <CODE>AttachmentPart</CODE> object that can be
+     *         populated and added to this <CODE>SOAPMessage</CODE>
+     *         object
+     */
+    public abstract AttachmentPart createAttachmentPart();
+
+    /**
+     * Creates an <CODE>AttachmentPart</CODE> object and
+     * populates it using the given <CODE>DataHandler</CODE>
+     * object.
+     * @param   datahandler  the <CODE>
+     *     javax.activation.DataHandler</CODE> object that will
+     *     generate the content for this <CODE>SOAPMessage</CODE>
+     *     object
+     * @return a new <CODE>AttachmentPart</CODE> object that
+     *     contains data generated by the given <CODE>
+     *     DataHandler</CODE> object
+     * @throws java.lang.IllegalArgumentException if
+     *     there was a problem with the specified <CODE>
+     *     DataHandler</CODE> object
+     * @see DataHandler DataHandler
+     * @see javax.activation.DataContentHandler DataContentHandler
+     */
+    public AttachmentPart createAttachmentPart(DataHandler datahandler) {
+
+        AttachmentPart attachmentpart = createAttachmentPart();
+
+        attachmentpart.setDataHandler(datahandler);
+
+        return attachmentpart;
+    }
+
+    /**
+     * Returns all the transport-specific MIME headers for this
+     * <CODE>SOAPMessage</CODE> object in a transport-independent
+     * fashion.
+     *
+     * @return a <CODE>MimeHeaders</CODE> object containing the
+     *         <CODE>MimeHeader</CODE> objects
+     */
+    public abstract MimeHeaders getMimeHeaders();
+
+    /**
+     * Creates an <CODE>AttachmentPart</CODE> object and
+     * populates it with the specified data of the specified content
+     * type.
+     *
+     * @param content     an <CODE>Object</CODE>
+     *                    containing the content for this <CODE>SOAPMessage</CODE>
+     *                    object
+     * @param contentType a <CODE>String</CODE>
+     *                    object giving the type of content; examples are
+     *                    "text/xml", "text/plain", and "image/jpeg"
+     * @return a new <CODE>AttachmentPart</CODE> object that
+     *         contains the given data
+     * @throws java.lang.IllegalArgumentException
+     *          if the contentType does not match the type of the content
+     *          object, or if there was no <CODE>
+     *          DataContentHandler</CODE> object for the given content
+     *          object
+     * @see DataHandler DataHandler
+     * @see javax.activation.DataContentHandler DataContentHandler
+     */
+    public AttachmentPart createAttachmentPart(Object content,
+                                               String contentType) {
+
+        AttachmentPart attachmentpart = createAttachmentPart();
+
+        attachmentpart.setContent(content, contentType);
+
+        return attachmentpart;
+    }
+
+    /**
+     * Updates this <CODE>SOAPMessage</CODE> object with all the
+     * changes that have been made to it. This method is called
+     * automatically when a message is sent or written to by the
+     * methods <CODE>ProviderConnection.send</CODE>, <CODE>
+     * SOAPConnection.call</CODE>, or <CODE>
+     * SOAPMessage.writeTo</CODE>. However, if changes are made to
+     * a message that was received or to one that has already been
+     * sent, the method <CODE>saveChanges</CODE> needs to be
+     * called explicitly in order to save the changes. The method
+     * <CODE>saveChanges</CODE> also generates any changes that
+     * can be read back (for example, a MessageId in profiles that
+     * support a message id). All MIME headers in a message that
+     * is created for sending purposes are guaranteed to have
+     * valid values only after <CODE>saveChanges</CODE> has been
+     * called.
+     * <p/>
+     * <P>In addition, this method marks the point at which the
+     * data from all constituent <CODE>AttachmentPart</CODE>
+     * objects are pulled into the message.</P>
+     *
+     * @throws SOAPException if there
+     *                       was a problem saving changes to this message.
+     */
+    public abstract void saveChanges() throws SOAPException;
+
+    /**
+     * Indicates whether this <CODE>SOAPMessage</CODE> object
+     * has had the method <CODE>saveChanges</CODE> called on
+     * it.
+     *
+     * @return <CODE>true</CODE> if <CODE>saveChanges</CODE> has
+     *         been called on this message at least once; <CODE>
+     *         false</CODE> otherwise.
+     */
+    public abstract boolean saveRequired();
+
+    /**
+     * Writes this <CODE>SOAPMessage</CODE> object to the given
+     * output stream. The externalization format is as defined by
+     * the SOAP 1.1 with Attachments specification.
+     * <p/>
+     * <P>If there are no attachments, just an XML stream is
+     * written out. For those messages that have attachments,
+     * <CODE>writeTo</CODE> writes a MIME-encoded byte stream.</P>
+     *
+     * @param out the <CODE>OutputStream</CODE>
+     *            object to which this <CODE>SOAPMessage</CODE> object will
+     *            be written
+     * @throws SOAPException if there was a problem in
+     *                       externalizing this SOAP message
+     * @throws IOException   if an I/O error
+     *                       occurs
+     */
+    public abstract void writeTo(OutputStream out)
+            throws SOAPException, IOException;
+
+    /**
+     * Gets the SOAP Body contained in this <code>SOAPMessage</code> object.
+     *
+     * @return the <code>SOAPBody</code> object contained by this
+     *         <code>SOAPMessage</code> object
+     * @throws SOAPException if the SOAP Body does not exist or cannot be
+     *                       retrieved
+     */
+    public SOAPBody getSOAPBody() throws SOAPException {
+        throw new UnsupportedOperationException(
+                "getSOAPBody must be overridden in subclasses of SOAPMessage");
+    }
+
+    /**
+     * Gets the SOAP Header contained in this <code>SOAPMessage</code> object.
+     *
+     * @return the <code>SOAPHeader</code> object contained by this
+     *         <code>SOAPMessage</code> object
+     * @throws SOAPException if the SOAP Header does not exist or cannot be
+     *                       retrieved
+     */
+    public SOAPHeader getSOAPHeader() throws SOAPException {
+        throw new UnsupportedOperationException(
+                "getSOAPHeader must be overridden in subclasses of SOAPMessage");
+    }
+
+    /**
+     * Associates the specified value with the specified property. If there was
+     * already a value associated with this property, the old value is replaced.
+     * <p/>
+     * The valid property names include <code>WRITE_XML_DECLARATION</code> and
+     * <code>CHARACTER_SET_ENCODING</code>. All of these standard SAAJ
+     * properties are prefixed by "javax.xml.soap". Vendors may also add
+     * implementation specific properties. These properties must be prefixed
+     * with package names that are unique to the vendor.
+     * <p/>
+     * Setting the property <code>WRITE_XML_DECLARATION</code> to
+     * <code>"true"</code> will cause an XML Declaration to be written out at
+     * the start of the SOAP message. The default value of "false" suppresses
+     * this declaration.
+     * <p/>
+     * The property <code>CHARACTER_SET_ENCODING</code> defaults to the value
+     * <code>"utf-8"</code> which causes the SOAP message to be encoded using
+     * UTF-8. Setting <code>CHARACTER_SET_ENCODING</code> to
+     * <code>"utf-16"</code> causes the SOAP message to be encoded using UTF-16.
+     * <p/>
+     * Some implementations may allow encodings in addition to UTF-8 and UTF-16.
+     * Refer to your vendor's documentation for details.
+     *
+     * @param property the property with which the specified value is to be
+     *                 associated
+     * @param value    the value to be associated with the specified property
+     * @throws SOAPException if the property name is not recognized
+     */
+    public void setProperty(String property, Object value)
+            throws SOAPException {
+        throw new UnsupportedOperationException(
+                "setProperty must be overridden in subclasses of SOAPMessage");
+    }
+
+    /**
+     * Retrieves value of the specified property.
+     *
+     * @param property the name of the property to retrieve
+     * @return the value of the property or <code>null</code> if no such
+     *         property exists
+     * @throws SOAPException if the property name is not recognized
+     */
+    public Object getProperty(String property) throws SOAPException {
+        throw new UnsupportedOperationException(
+                "getProperty must be overridden in subclasses of SOAPMessage");
+    }
+
+    /**
+     * Specifies the character type encoding for the SOAP Message.
+     */
+    public static final String CHARACTER_SET_ENCODING
+            = "javax.xml.soap.character-set-encoding";
+
+    /**
+     * Specifies whether the SOAP Message should contain an XML declaration.
+     */
+    public static final String WRITE_XML_DECLARATION
+            = "javax.xml.soap.write-xml-declaration";
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPPart.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPPart.java
new file mode 100644
index 0000000..d96b3f3
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/SOAPPart.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+import javax.xml.transform.Source;
+import java.util.Iterator;
+
+/**
+ * <P>The container for the SOAP-specific portion of a <CODE>
+ * SOAPMessage</CODE> object. All messages are required to have a
+ * SOAP part, so when a <CODE>SOAPMessage</CODE> object is
+ * created, it will automatically have a <CODE>SOAPPart</CODE>
+ * object.</P>
+ * <p/>
+ * <P>A <CODE>SOAPPart</CODE> object is a MIME part and has the
+ * MIME headers Content-Id, Content-Location, and Content-Type.
+ * Because the value of Content-Type must be "text/xml", a <CODE>
+ * SOAPPart</CODE> object automatically has a MIME header of
+ * Content-Type with its value set to "text/xml". The value must
+ * be "text/xml" because content in the SOAP part of a message
+ * must be in XML format. Content that is not of type "text/xml"
+ * must be in an <CODE>AttachmentPart</CODE> object rather than in
+ * the <CODE>SOAPPart</CODE> object.</P>
+ * <p/>
+ * <P>When a message is sent, its SOAP part must have the MIME
+ * header Content-Type set to "text/xml". Or, from the other
+ * perspective, the SOAP part of any message that is received must
+ * have the MIME header Content-Type with a value of
+ * "text/xml".</P>
+ * <p/>
+ * <P>A client can access the <CODE>SOAPPart</CODE> object of a
+ * <CODE>SOAPMessage</CODE> object by calling the method <CODE>
+ * SOAPMessage.getSOAPPart</CODE>. The following line of code, in
+ * which <CODE>message</CODE> is a <CODE>SOAPMessage</CODE>
+ * object, retrieves the SOAP part of a message.</P>
+ * <PRE>
+ * SOAPPart soapPart = message.getSOAPPart();
+ * </PRE>
+ * <p/>
+ * <P>A <CODE>SOAPPart</CODE> object contains a <CODE>
+ * SOAPEnvelope</CODE> object, which in turn contains a <CODE>
+ * SOAPBody</CODE> object and a <CODE>SOAPHeader</CODE> object.
+ * The <CODE>SOAPPart</CODE> method <CODE>getEnvelope</CODE> can
+ * be used to retrieve the <CODE>SOAPEnvelope</CODE> object.</P>
+ */
+public abstract class SOAPPart implements org.w3c.dom.Document {
+
+    public SOAPPart() {
+    }
+
+    /**
+     * Gets the <CODE>SOAPEnvelope</CODE> object associated with
+     * this <CODE>SOAPPart</CODE> object. Once the SOAP envelope is
+     * obtained, it can be used to get its contents.
+     *
+     * @return the <CODE>SOAPEnvelope</CODE> object for this <CODE>
+     *         SOAPPart</CODE> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract SOAPEnvelope getEnvelope() throws SOAPException;
+
+    /**
+     * Retrieves the value of the MIME header whose name is
+     * "Content-Id".
+     *
+     * @return a <CODE>String</CODE> giving the value of the MIME
+     *         header named "Content-Id"
+     * @see #setContentId(java.lang.String) setContentId(java.lang.String)
+     */
+    public String getContentId() {
+
+        String as[] = getMimeHeader("Content-Id");
+
+        if (as != null && as.length > 0) {
+            return as[0];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Retrieves the value of the MIME header whose name is
+     * "Content-Location".
+     *
+     * @return a <CODE>String</CODE> giving the value of the MIME
+     *         header whose name is "Content-Location"
+     * @see #setContentLocation(java.lang.String) setContentLocation(java.lang.String)
+     */
+    public String getContentLocation() {
+
+        String as[] = getMimeHeader("Content-Location");
+
+        if (as != null && as.length > 0) {
+            return as[0];
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Sets the value of the MIME header named "Content-Id" to
+     * the given <CODE>String</CODE>.
+     *
+     * @param contentId a <CODE>String</CODE> giving
+     *                  the value of the MIME header "Content-Id"
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there is a problem in setting the content id
+     * @see #getContentId() getContentId()
+     */
+    public void setContentId(String contentId) {
+        setMimeHeader("Content-Id", contentId);
+    }
+
+    /**
+     * Sets the value of the MIME header "Content-Location" to
+     * the given <CODE>String</CODE>.
+     *
+     * @param contentLocation a <CODE>String</CODE>
+     *                        giving the value of the MIME header
+     *                        "Content-Location"
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there is a problem in setting the content location.
+     * @see #getContentLocation() getContentLocation()
+     */
+    public void setContentLocation(String contentLocation) {
+        setMimeHeader("Content-Location", contentLocation);
+    }
+
+    /**
+     * Removes all MIME headers that match the given name.
+     *
+     * @param header a <CODE>String</CODE> giving
+     *               the name of the MIME header(s) to be removed
+     */
+    public abstract void removeMimeHeader(String header);
+
+    /**
+     * Removes all the <CODE>MimeHeader</CODE> objects for this
+     * <CODE>SOAPEnvelope</CODE> object.
+     */
+    public abstract void removeAllMimeHeaders();
+
+    /**
+     * Gets all the values of the <CODE>MimeHeader</CODE> object
+     * in this <CODE>SOAPPart</CODE> object that is identified by
+     * the given <CODE>String</CODE>.
+     *
+     * @param name the name of the header; example:
+     *             "Content-Type"
+     * @return a <CODE>String</CODE> array giving all the values for
+     *         the specified header
+     * @see #setMimeHeader(java.lang.String, java.lang.String) setMimeHeader(java.lang.String, java.lang.String)
+     */
+    public abstract String[] getMimeHeader(String name);
+
+    /**
+     * Changes the first header entry that matches the given
+     * header name so that its value is the given value, adding a
+     * new header with the given name and value if no existing
+     * header is a match. If there is a match, this method clears
+     * all existing values for the first header that matches and
+     * sets the given value instead. If more than one header has
+     * the given name, this method removes all of the matching
+     * headers after the first one.
+     * <p/>
+     * <P>Note that RFC822 headers can contain only US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> giving the
+     *              header name for which to search
+     * @param value a <CODE>String</CODE> giving the
+     *              value to be set. This value will be substituted for the
+     *              current value(s) of the first header that is a match if
+     *              there is one. If there is no match, this value will be
+     *              the value for a new <CODE>MimeHeader</CODE> object.
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified mime header name
+     *          or value
+     * @throws java.lang.IllegalArgumentException
+     *          if there was a problem with the specified mime header name or value
+     * @see #getMimeHeader(java.lang.String) getMimeHeader(java.lang.String)
+     */
+    public abstract void setMimeHeader(String name, String value);
+
+    /**
+     * Creates a <CODE>MimeHeader</CODE> object with the specified
+     * name and value and adds it to this <CODE>SOAPPart</CODE>
+     * object. If a <CODE>MimeHeader</CODE> with the specified
+     * name already exists, this method adds the specified value
+     * to the already existing value(s).
+     * <p/>
+     * <P>Note that RFC822 headers can contain only US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> giving the
+     *              header name
+     * @param value a <CODE>String</CODE> giving the
+     *              value to be set or added
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified mime header name
+     *          or value
+     */
+    public abstract void addMimeHeader(String name, String value);
+
+    /**
+     * Retrieves all the headers for this <CODE>SOAPPart</CODE>
+     * object as an iterator over the <CODE>MimeHeader</CODE>
+     * objects.
+     *
+     * @return an <CODE>Iterator</CODE> object with all of the Mime
+     *         headers for this <CODE>SOAPPart</CODE> object
+     */
+    public abstract Iterator getAllMimeHeaders();
+
+    /**
+     * Retrieves all <CODE>MimeHeader</CODE> objects that match
+     * a name in the given array.
+     *
+     * @param names a <CODE>String</CODE> array with
+     *              the name(s) of the MIME headers to be returned
+     * @return all of the MIME headers that match one of the names
+     *         in the given array, returned as an <CODE>Iterator</CODE>
+     *         object
+     */
+    public abstract Iterator getMatchingMimeHeaders(String names[]);
+
+    /**
+     * Retrieves all <CODE>MimeHeader</CODE> objects whose name
+     * does not match a name in the given array.
+     *
+     * @param names a <CODE>String</CODE> array with
+     *              the name(s) of the MIME headers not to be returned
+     * @return all of the MIME headers in this <CODE>SOAPPart</CODE>
+     *         object except those that match one of the names in the
+     *         given array. The nonmatching MIME headers are returned as
+     *         an <CODE>Iterator</CODE> object.
+     */
+    public abstract Iterator getNonMatchingMimeHeaders(String names[]);
+
+    /**
+     * Sets the content of the <CODE>SOAPEnvelope</CODE> object
+     * with the data from the given <CODE>Source</CODE> object.
+     *
+     * @param source javax.xml.transform.Source</CODE> object with the data to
+     *               be set
+     * @throws SOAPException if there is a problem in
+     *                       setting the source
+     * @see #getContent() getContent()
+     */
+    public abstract void setContent(Source source) throws SOAPException;
+
+    /**
+     * Returns the content of the SOAPEnvelope as a JAXP <CODE>
+     * Source</CODE> object.
+     *
+     * @return the content as a <CODE>
+     *         javax.xml.transform.Source</CODE> object
+     * @throws SOAPException if the implementation cannot
+     *                       convert the specified <CODE>Source</CODE> object
+     * @see #setContent(javax.xml.transform.Source) setContent(javax.xml.transform.Source)
+     */
+    public abstract Source getContent() throws SOAPException;
+}
diff --git a/rampart_1_1/modules/saaj/src/javax/xml/soap/Text.java b/rampart_1_1/modules/saaj/src/javax/xml/soap/Text.java
new file mode 100644
index 0000000..7c3a795
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/javax/xml/soap/Text.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004,2005 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.soap;
+
+/**
+ * A representation of a node whose value is text. A <CODE>
+ * Text</CODE> object may represent text that is content or text
+ * that is a comment.
+ */
+public interface Text extends Node, org.w3c.dom.Text {
+
+    /**
+     * Retrieves whether this <CODE>Text</CODE> object
+     * represents a comment.
+     *
+     * @return <CODE>true</CODE> if this <CODE>Text</CODE> object is
+     *         a comment; <CODE>false</CODE> otherwise
+     */
+    public abstract boolean isComment();
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java
new file mode 100644
index 0000000..730a16b
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java
@@ -0,0 +1,459 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axiom.om.impl.dom.DocumentImpl;
+import org.apache.axiom.om.impl.dom.TextImpl;
+import org.apache.axis2.saaj.util.SAAJDataSource;
+import org.apache.axis2.transport.http.HTTPConstants;
+
+import javax.activation.DataHandler;
+import javax.activation.UnsupportedDataTypeException;
+import javax.xml.soap.AttachmentPart;
+import javax.xml.soap.MimeHeader;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPException;
+import javax.xml.transform.stream.StreamSource;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Iterator;
+
+/**
+ * 
+ */
+public class AttachmentPartImpl extends AttachmentPart {
+    private DataHandler dataHandler;
+
+    private MimeHeaders mimeHeaders = new MimeHeaders();
+    private String attachmentFile;
+
+    private OMText omText;
+    private boolean isAttachmentReferenced;
+
+    /**
+     * Check whether at least one of the headers of this object matches a provided header
+     *
+     * @param headers
+     * @return <b>true</b> if at least one header of this AttachmentPart matches
+     *         a header in the provided <code>headers</code> parameter,
+     *         <b>false</b> if none of the headers of this AttachmentPart matches
+     *         at least one of the header in the provided <code>headers</code> parameter
+     */
+    public boolean matches(MimeHeaders headers) {
+        for (Iterator i = headers.getAllHeaders(); i.hasNext();) {
+            MimeHeader hdr = (javax.xml.soap.MimeHeader) i.next();
+            String values[] = mimeHeaders.getHeader(hdr.getName());
+            boolean found = false;
+            if (values != null) {
+                for (int j = 0; j < values.length; j++) {
+                    if (!hdr.getValue().equalsIgnoreCase(values[j])) {
+                        continue;
+                    }
+                    found = true;
+                    break;
+                }
+            }
+            if (!found) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public boolean isAttachmentReferenced() {
+        return isAttachmentReferenced;
+    }
+
+    public void setAttachmentReferenced(boolean attachmentReferenced) {
+        isAttachmentReferenced = attachmentReferenced;
+    }
+
+    /**
+     * Returns the number of bytes in this <CODE>
+     * AttachmentPart</CODE> object.
+     *
+     * @return the size of this <CODE>AttachmentPart</CODE> object
+     *         in bytes or -1 if the size cannot be determined
+     * @throws javax.xml.soap.SOAPException if the content of this
+     *                                      attachment is corrupted of if there was an exception
+     *                                      while trying to determine the size.
+     */
+    public int getSize() throws SOAPException {
+        if (dataHandler == null) {
+            return 0;
+        }
+        ByteArrayOutputStream bout = new ByteArrayOutputStream();
+        try {
+            dataHandler.writeTo(bout);
+        } catch (Exception ex) {
+            throw new SOAPException(ex);
+        }
+        return bout.size();
+    }
+
+    /**
+     * Clears out the content of this <CODE>
+     * AttachmentPart</CODE> object. The MIME header portion is left
+     * untouched.
+     */
+    public void clearContent() {
+        dataHandler = null;
+        omText = null;
+    }
+
+    /**
+     * Gets the content of this <code>AttachmentPart</code> object as a Java
+     * object. The type of the returned Java object depends on
+     * <ol>
+     * <li> the
+     * <code>DataContentHandler</code> object that is used to interpret the bytes
+     * </li>
+     * <li> the <code>Content-Type</code> given in the header</li>
+     * </ol>
+     * <p/>
+     * For the MIME content types "text/plain", "text/html" and "text/xml", the
+     * <code>DataContentHandler</code> object does the conversions to and
+     * from the Java types corresponding to the MIME types.
+     * For other MIME types,the <code>DataContentHandler</code> object
+     * can return an <code>InputStream</code> object that contains the content data
+     * as raw bytes.
+     * <p/>
+     * A JAXM-compliant implementation must, as a minimum, return a
+     * <code>java.lang.String</code> object corresponding to any content
+     * stream with a <code>Content-Type</code> value of
+     * <code>text/plain</code>, a
+     * <code>javax.xml.transform.StreamSource</code> object corresponding to a
+     * content stream with a <code>Content-Type</code> value of
+     * <code>text/xml</code>, a <code>java.awt.Image</code> object
+     * corresponding to a content stream with a
+     * <code>Content-Type</code> value of <code>image/gif</code> or
+     * <code>image/jpeg</code>.  For those content types that an
+     * installed <code>DataContentHandler</code> object does not understand, the
+     * <code>DataContentHandler</code> object is required to return a
+     * <code>java.io.InputStream</code> object with the raw bytes.
+     *
+     * @return a Java object with the content of this <CODE>
+     *         AttachmentPart</CODE> object
+     * @throws javax.xml.soap.SOAPException if there is no content set
+     *                                      into this <CODE>AttachmentPart</CODE> object or if there
+     *                                      was a data transformation error
+     */
+    public Object getContent() throws SOAPException {
+        if (dataHandler == null) {
+            throw new SOAPException("No content is present in this AttachmentPart");
+        }
+        try {
+            String contentType = dataHandler.getContentType();
+            if (contentType.equals("text/plain") ||
+                    contentType.equals("text/xml") ||
+                    contentType.equals("text/html")) {
+
+                //For these content types underlying DataContentHandler surely does
+                //the conversion to appropriate java object and we will return that java object
+                return dataHandler.getContent();
+            } else {
+                try {
+                    return dataHandler.getContent();
+                } catch (UnsupportedDataTypeException e) {
+
+                    //If the underlying DataContentHandler can't handle the object contents,
+                    //we will return an inputstream of raw bytes represneting the content data
+                    return dataHandler.getDataSource().getInputStream();
+                }
+            }
+        } catch (IOException e) {
+            throw new SOAPException(e);
+        }
+    }
+
+    /**
+     * Sets the content of this attachment part to that of the
+     * given <CODE>Object</CODE> and sets the value of the <CODE>
+     * Content-Type</CODE> header to the given type. The type of the
+     * <CODE>Object</CODE> should correspond to the value given for
+     * the <CODE>Content-Type</CODE>. This depends on the particular
+     * set of <CODE>DataContentHandler</CODE> objects in use.
+     *
+     * @param object      the Java object that makes up
+     *                    the content for this attachment part
+     * @param contentType the MIME string that
+     *                    specifies the type of the content
+     * @throws IllegalArgumentException if
+     *                                  the contentType does not match the type of the content
+     *                                  object, or if there was no <CODE>
+     *                                  DataContentHandler</CODE> object for this content
+     *                                  object
+     * @see #getContent()
+     */
+    public void setContent(Object object, String contentType) {
+        SAAJDataSource source;
+        setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, contentType);
+        Object contentObject;
+        if (object instanceof String) {
+            try {
+                String s = (String) object;
+                java.io.ByteArrayInputStream bais = new java.io.ByteArrayInputStream(s.getBytes());
+                source = new SAAJDataSource(bais,
+                        SAAJDataSource.MAX_MEMORY_DISK_CACHED,
+                        contentType, true);
+                extractFilename(source);
+                dataHandler = new DataHandler(source);
+                contentObject = object;
+            } catch (java.io.IOException io) {
+                throw new java.lang.IllegalArgumentException("Illegal Argument");
+            }
+        } else if (object instanceof java.io.InputStream) {
+            try {
+                source = new SAAJDataSource((java.io.InputStream) object,
+                        SAAJDataSource.MAX_MEMORY_DISK_CACHED,
+                        contentType, true);
+                extractFilename(source);
+                dataHandler = new DataHandler(source);
+                contentObject = null; // the stream has been consumed
+            } catch (java.io.IOException io) {
+                throw new java.lang.IllegalArgumentException("Illegal Argument");
+            }
+        } else if (object instanceof StreamSource) {
+            try {
+                source = new SAAJDataSource(((StreamSource) object).getInputStream(),
+                        SAAJDataSource.MAX_MEMORY_DISK_CACHED,
+                        contentType, true);
+                extractFilename(source);
+                dataHandler = new DataHandler(source);
+                contentObject = null; // the stream has been consumed
+            } catch (java.io.IOException io) {
+                throw new java.lang.IllegalArgumentException("Illegal Argument");
+            }
+        } else {
+            throw new java.lang.IllegalArgumentException("Illegal Argument");
+        }
+    }
+
+    /**
+     * Gets the <CODE>DataHandler</CODE> object for this <CODE>
+     * AttachmentPart</CODE> object.
+     *
+     * @return the <CODE>DataHandler</CODE> object associated with
+     *         this <CODE>AttachmentPart</CODE> object
+     * @throws javax.xml.soap.SOAPException if there is
+     *                                      no data in this <CODE>AttachmentPart</CODE> object
+     */
+    public DataHandler getDataHandler() throws SOAPException {
+//        if (getContent() == null) {
+//            throw new SOAPException("No Content present in the Attachment part");
+//        }
+        //commented to fix AXIS2-778
+        if (dataHandler == null) {
+            throw new SOAPException("No Content present in the Attachment part");
+        }
+
+        return dataHandler;
+    }
+
+    /**
+     * Sets the given <CODE>DataHandler</CODE> object as the
+     * data handler for this <CODE>AttachmentPart</CODE> object.
+     * Typically, on an incoming message, the data handler is
+     * automatically set. When a message is being created and
+     * populated with content, the <CODE>setDataHandler</CODE>
+     * method can be used to get data from various data sources into
+     * the message.
+     *
+     * @param datahandler <CODE>DataHandler</CODE> object to
+     *                    be set
+     * @throws IllegalArgumentException if
+     *                                  there was a problem with the specified <CODE>
+     *                                  DataHandler</CODE> object
+     */
+    public void setDataHandler(DataHandler datahandler) {
+        if (datahandler != null) {
+            this.dataHandler = datahandler;
+            setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, datahandler.getContentType());
+            omText = DOOMAbstractFactory.getOMFactory().createOMText(dataHandler, true);
+        } else {
+            throw new IllegalArgumentException("Cannot set null DataHandler");
+        }
+    }
+
+    /**
+     * Removes all MIME headers that match the given name.
+     *
+     * @param header - the string name of the MIME
+     *               header/s to be removed
+     */
+    public void removeMimeHeader(String header) {
+        mimeHeaders.removeHeader(header);
+    }
+
+    /**
+     * Removes all the MIME header entries.
+     */
+    public void removeAllMimeHeaders() {
+        mimeHeaders.removeAllHeaders();
+    }
+
+    /**
+     * Gets all the values of the header identified by the given
+     * <CODE>String</CODE>.
+     *
+     * @param name the name of the header; example:
+     *             "Content-Type"
+     * @return a <CODE>String</CODE> array giving the value for the
+     *         specified header
+     * @see #setMimeHeader(String, String) setMimeHeader(java.lang.String, java.lang.String)
+     */
+    public String[] getMimeHeader(String name) {
+        return mimeHeaders.getHeader(name);
+    }
+
+    /**
+     * Changes the first header entry that matches the given name
+     * to the given value, adding a new header if no existing
+     * header matches. This method also removes all matching
+     * headers but the first.
+     * <p/>
+     * <P>Note that RFC822 headers can only contain US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> giving the
+     *              name of the header for which to search
+     * @param value a <CODE>String</CODE> giving the
+     *              value to be set for the header whose name matches the
+     *              given name
+     * @throws IllegalArgumentException if
+     *                                  there was a problem with the specified mime header name
+     *                                  or value
+     */
+    public void setMimeHeader(String name, String value) {
+        mimeHeaders.setHeader(name, value);
+    }
+
+    /**
+     * Adds a MIME header with the specified name and value to
+     * this <CODE>AttachmentPart</CODE> object.
+     * <p/>
+     * <P>Note that RFC822 headers can contain only US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> giving the
+     *              name of the header to be added
+     * @param value a <CODE>String</CODE> giving the
+     *              value of the header to be added
+     * @throws IllegalArgumentException if
+     *                                  there was a problem with the specified mime header name
+     *                                  or value
+     */
+    public void addMimeHeader(String name, String value) {
+        mimeHeaders.addHeader(name, value);
+    }
+
+    /**
+     * Retrieves all the headers for this <CODE>
+     * AttachmentPart</CODE> object as an iterator over the <CODE>
+     * MimeHeader</CODE> objects.
+     *
+     * @return an <CODE>Iterator</CODE> object with all of the Mime
+     *         headers for this <CODE>AttachmentPart</CODE> object
+     */
+    public Iterator getAllMimeHeaders() {
+        return mimeHeaders.getAllHeaders();
+    }
+
+    /**
+     * Retrieves all <CODE>MimeHeader</CODE> objects that match
+     * a name in the given array.
+     *
+     * @param names a <CODE>String</CODE> array with
+     *              the name(s) of the MIME headers to be returned
+     * @return all of the MIME headers that match one of the names
+     *         in the given array as an <CODE>Iterator</CODE>
+     *         object
+     */
+    public Iterator getMatchingMimeHeaders(String names[]) {
+        return mimeHeaders.getMatchingHeaders(names);
+    }
+
+    /**
+     * Retrieves all <CODE>MimeHeader</CODE> objects whose name
+     * does not match a name in the given array.
+     *
+     * @param names a <CODE>String</CODE> array with
+     *              the name(s) of the MIME headers not to be returned
+     * @return all of the MIME headers in this <CODE>
+     *         AttachmentPart</CODE> object except those that match one
+     *         of the names in the given array. The nonmatching MIME
+     *         headers are returned as an <CODE>Iterator</CODE>
+     *         object.
+     */
+    public Iterator getNonMatchingMimeHeaders(String names[]) {
+        return mimeHeaders.getNonMatchingHeaders(names);
+    }
+
+    /**
+     * Retrieve the OMText
+     *
+     * @return the OMText
+     * @throws SOAPException If omText is not available
+     */
+    public OMText getOMText() throws SOAPException {
+        if (omText == null) {
+            throw new SOAPException("OMText set to null");
+        }
+        return omText;
+    }
+
+    public TextImpl getText(DocumentImpl doc) {
+        return new TextImpl(doc, omText.getText(), doc.getOMFactory());
+    }
+
+    /**
+     * Set the filename of this attachment part.
+     *
+     * @param path the new file path
+     */
+    protected void setAttachmentFile(String path) {
+        attachmentFile = path;
+    }
+
+    /**
+     * Detach the attachment file from this class, so it is not cleaned up.
+     * This has the side-effect of making subsequent calls to
+     * getAttachmentFile() return <code>null</code>.
+     */
+    public void detachAttachmentFile() {
+        attachmentFile = null;
+    }
+
+    /**
+     * Get the filename of this attachment.
+     *
+     * @return the filename or null for an uncached file
+     */
+    public String getAttachmentFile() {
+        return attachmentFile;
+    }
+
+    private void extractFilename(SAAJDataSource source) {
+
+        //check for there being a file
+        if (source.getDiskCacheFile() != null) {
+            String path = source.getDiskCacheFile().getAbsolutePath();
+            setAttachmentFile(path);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java
new file mode 100644
index 0000000..12b6b0f
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.impl.dom.ElementImpl;
+
+import javax.xml.soap.DetailEntry;
+
+/**
+ * The content for a Detail object, giving details for a SOAPFault object.
+ * A DetailEntry object, which carries information about errors related to the
+ * SOAPBody  object that contains it, is application-specific.
+ */
+public class DetailEntryImpl extends SOAPElementImpl implements DetailEntry {
+
+    /**
+     * @param element
+     */
+    public DetailEntryImpl(ElementImpl element) {
+        super(element);
+    }
+
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java
new file mode 100644
index 0000000..2bc71a8
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.soap.SOAPFaultDetail;
+import org.apache.axiom.om.impl.dom.ElementImpl;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.DetailEntry;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * A container for <code>DetailEntry</code> objects. <code>DetailEntry</code>
+ * objects give detailed error information that is application-specific and
+ * related to the <code>SOAPBody</code> object that contains it.
+ * <p/>
+ * A <code>Detail</code> object, which is part of a <code>SOAPFault</code>
+ * object, can be retrieved using the method <code>SOAPFault.getDetail</code>.
+ * The <code>Detail</code> interface provides two methods. One creates a new
+ * <code>DetailEntry</code> object and also automatically adds it to
+ * the <code>Detail</code> object. The second method gets a list of the
+ * <code>DetailEntry</code> objects contained in a <code>Detail</code>
+ * object.
+ * <p/>
+ * The following code fragment, in which <i>sf</i> is a <code>SOAPFault</code>
+ * object, gets its <code>Detail</code> object (<i>d</i>), adds a new
+ * <code>DetailEntry</code> object to <i>d</i>, and then gets a list of all the
+ * <code>DetailEntry</code> objects in <i>d</i>. The code also creates a
+ * <code>Name</code> object to pass to the method <code>addDetailEntry</code>.
+ * The variable <i>se</i>, used to create the <code>Name</code> object,
+ * is a <code>SOAPEnvelope</code> object.
+ * <PRE>
+ * Detail d = sf.getDetail();
+ * Name name = se.createName("GetLastTradePrice", "WOMBAT",
+ * "http://www.wombat.org/trader");
+ * d.addDetailEntry(name);
+ * Iterator it = d.getDetailEntries();
+ * </PRE>
+ */
+public class DetailImpl extends SOAPFaultElementImpl implements Detail {
+
+//    private SOAPFaultDetail faultDetail;
+
+    /**
+     * @param element
+     */
+    public DetailImpl(SOAPFaultDetail element) {
+        super((ElementImpl) element);
+//        faultDetail = element;
+    }
+
+    /**
+     * Creates a new <code>DetailEntry</code> object with the given
+     * name and adds it to this <code>Detail</code> object.
+     *
+     * @param name a <code>Name</code> object identifying the new <code>DetailEntry</code> object
+     * @return DetailEntry.
+     * @throws SOAPException thrown when there is a problem in adding a DetailEntry object to this Detail object.
+     */
+    public DetailEntry addDetailEntry(Name name) throws SOAPException {
+        SOAPElementImpl childElement = (SOAPElementImpl) addChildElement(name);
+        DetailEntryImpl detailEntry = new DetailEntryImpl(childElement.element);
+        childElement.element.setUserData(SAAJ_NODE, detailEntry, null);
+        return detailEntry;
+    }
+
+    /**
+     * Gets a list of the detail entries in this <code>Detail</code> object.
+     *
+     * @return an <code>Iterator</code> object over the <code>DetailEntry</code>
+     *         objects in this <code>Detail</code> object
+     */
+    public Iterator getDetailEntries() {
+        final Iterator detailEntriesIter = element.getChildElements();
+        Collection details = new ArrayList();
+        while (detailEntriesIter.hasNext()) {
+            details.add(new DetailEntryImpl((ElementImpl) detailEntriesIter.next()));
+        }
+        return details.iterator();
+    }
+
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java
new file mode 100644
index 0000000..d8d3a32
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * <P>A factory for creating <CODE>SOAPMessage</CODE> objects.</P>
+ * <p/>
+ * <P>A JAXM client performs the following steps to create a
+ * message.</P>
+ * <p/>
+ * <UL>
+ * <LI>
+ * Creates a <CODE>MessageFactory</CODE> object from a <CODE>
+ * ProviderConnection</CODE> object (<CODE>con</CODE> in the
+ * following line of code). The <CODE>String</CODE> passed to
+ * the <CODE>createMessageFactory</CODE> method is the name of
+ * of a messaging profile, which must be the URL for the
+ * schema.
+ * <PRE>
+ * MessageFactory mf = con.createMessageFactory(schemaURL);
+ * </PRE>
+ * </LI>
+ * <p/>
+ * <LI>
+ * Calls the method <CODE>createMessage</CODE> on the <CODE>
+ * MessageFactory</CODE> object. All messages produced by this
+ * <CODE>MessageFactory</CODE> object will have the header
+ * information appropriate for the messaging profile that was
+ * specified when the <CODE>MessageFactory</CODE> object was
+ * created.
+ * <PRE>
+ * SOAPMessage m = mf.createMessage();
+ * </PRE>
+ * </LI>
+ * </UL>
+ * It is also possible to create a <CODE>MessageFactory</CODE>
+ * object using the method <CODE>newInstance</CODE>, as shown in
+ * the following line of code.
+ * <PRE>
+ * MessageFactory mf = MessageFactory.newInstance();
+ * </PRE>
+ * A standalone client (a client that is not running in a
+ * container) can use the <CODE>newInstance</CODE> method to
+ * create a <CODE>MessageFactory</CODE> object.
+ * <p/>
+ * <P>All <CODE>MessageFactory</CODE> objects, regardless of how
+ * they are created, will produce <CODE>SOAPMessage</CODE> objects
+ * that have the following elements by default:</P>
+ * <p/>
+ * <UL>
+ * <LI>A <CODE>SOAPPart</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPEnvelope</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPBody</CODE> object</LI>
+ * <p/>
+ * <LI>A <CODE>SOAPHeader</CODE> object</LI>
+ * </UL>
+ * If a <CODE>MessageFactory</CODE> object was created using a
+ * <CODE>ProviderConnection</CODE> object, which means that it was
+ * initialized with a specified profile, it will produce messages
+ * that also come prepopulated with additional entries in the
+ * <CODE>SOAPHeader</CODE> object and the <CODE>SOAPBody</CODE>
+ * object. The content of a new <CODE>SOAPMessage</CODE> object
+ * depends on which of the two <CODE>MessageFactory</CODE> methods
+ * is used to create it.
+ * <p/>
+ * <UL>
+ * <LI><CODE>createMessage()</CODE> -- message has no
+ * content<BR>
+ * This is the method clients would normally use to create a
+ * request message.</LI>
+ * <p/>
+ * <LI><CODE>createMessage(MimeHeaders,
+ * java.io.InputStream)</CODE> -- message has content from the
+ * <CODE>InputStream</CODE> object and headers from the <CODE>
+ * MimeHeaders</CODE> object<BR>
+ * This method can be used internally by a service
+ * implementation to create a message that is a response to a
+ * request.</LI>
+ * </UL>
+ */
+public class MessageFactoryImpl extends MessageFactory {
+
+    /**
+     * Creates a new <CODE>SOAPMessage</CODE> object with the
+     * default <CODE>SOAPPart</CODE>, <CODE>SOAPEnvelope</CODE>,
+     * <CODE>SOAPBody</CODE>, and <CODE>SOAPHeader</CODE> objects.
+     * Profile-specific message factories can choose to
+     * prepopulate the <CODE>SOAPMessage</CODE> object with
+     * profile-specific headers.
+     * <p/>
+     * <P>Content can be added to this message's <CODE>
+     * SOAPPart</CODE> object, and the message can be sent "as is"
+     * when a message containing only a SOAP part is sufficient.
+     * Otherwise, the <CODE>SOAPMessage</CODE> object needs to
+     * create one or more <CODE>AttachmentPart</CODE> objects and
+     * add them to itself. Any content that is not in XML format
+     * must be in an <CODE>AttachmentPart</CODE> object.</P>
+     *
+     * @return a new <CODE>SOAPMessage</CODE> object
+     * @throws SOAPException if a SOAP error occurs
+     */
+    public SOAPMessage createMessage() throws SOAPException {
+        final SOAPEnvelopeImpl soapEnvelope =
+                new SOAPEnvelopeImpl((org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)
+                        new SOAP11Factory().getDefaultEnvelope());
+        SOAPMessageImpl soapMessage = new SOAPMessageImpl(soapEnvelope);
+        soapMessage.setSaveRequired();
+        return soapMessage;
+    }
+
+    /**
+     * Internalizes the contents of the given <CODE>
+     * InputStream</CODE> object into a new <CODE>SOAPMessage</CODE>
+     * object and returns the <CODE>SOAPMessage</CODE> object.
+     *
+     * @param mimeheaders the transport-specific headers
+     *                    passed to the message in a transport-independent fashion
+     *                    for creation of the message
+     * @param inputstream the <CODE>InputStream</CODE> object
+     *                    that contains the data for a message
+     * @return a new <CODE>SOAPMessage</CODE> object containing the
+     *         data from the given <CODE>InputStream</CODE> object
+     * @throws IOException   if there is a
+     *                       problem in reading data from the input stream
+     * @throws SOAPException if the message is invalid
+     */
+    public SOAPMessage createMessage(MimeHeaders mimeheaders,
+                                     InputStream inputstream) throws IOException, SOAPException {
+
+        /*System.err.println("@@@@@@@@@@ MessageFactoryImpl#createMessage");
+        byte[] b = new byte[10240];
+        inputstream.read(b);
+        System.err.println("byte=" + new String(b));
+        System.err.println("@@@@@@@@@@ END MessageFactoryImpl#createMessage");*/
+
+        SOAPMessageImpl soapMessage = new SOAPMessageImpl(inputstream, mimeheaders);
+        soapMessage.setSaveRequired();
+        return soapMessage;
+    }
+
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/MimeHeadersEx.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/MimeHeadersEx.java
new file mode 100644
index 0000000..23daf22
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/MimeHeadersEx.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import javax.xml.soap.MimeHeader;
+import java.util.Iterator;
+
+public class MimeHeadersEx extends javax.xml.soap.MimeHeaders {
+    public MimeHeadersEx() {
+    }
+
+    public MimeHeadersEx(javax.xml.soap.MimeHeaders mimeHeaders) {
+        Iterator iterator = mimeHeaders.getAllHeaders();
+        while (iterator.hasNext()) {
+            MimeHeader hdr = (MimeHeader) iterator.next();
+            addHeader(hdr.getName(), hdr.getValue());
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/NodeImplEx.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/NodeImplEx.java
new file mode 100644
index 0000000..5594330
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/NodeImplEx.java
@@ -0,0 +1,270 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.impl.dom.NodeImpl;
+import org.apache.axiom.soap.impl.dom.SOAPBodyImpl;
+import org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Comment;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Text;
+import org.w3c.dom.TypeInfo;
+
+import javax.xml.soap.Node;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+/**
+ * A representation of a node (element) in a DOM representation of an XML document
+ * that provides some tree manipulation methods.
+ * This interface provides methods for getting the value of a node, for
+ * getting and setting the parent of a node, and for removing a node.
+ */
+public abstract class NodeImplEx extends NodeImpl implements Node {
+
+    /**
+     * @param ownerDocument
+     * @param factory
+     */
+    protected NodeImplEx(OMFactory factory) {
+        super(factory);
+    }
+
+    protected SOAPElement parentElement;
+    static final String SAAJ_NODE = "saaj.node";
+
+    /**
+     * Removes this <code>Node</code> object from the tree. Once
+     * removed, this node can be garbage collected if there are no
+     * application references to it.
+     */
+    public void detachNode() {
+        this.detach();
+    }
+
+    public OMNode detach() {
+        parentElement = null;
+        return null;
+    }
+
+    /**
+     * Removes this <code>Node</code> object from the tree. Once
+     * removed, this node can be garbage collected if there are no
+     * application references to it.
+     */
+    public SOAPElement getParentElement() {
+        return this.parentElement;
+    }
+
+    public OMContainer getParent() {
+        return (OMContainer) this.parentElement;
+    }
+
+    /* public OMNode getOMNode() {
+        return omNode;
+    }*/
+
+    /**
+     * Returns the the value of the immediate child of this <code>Node</code>
+     * object if a child exists and its valu e is text.
+     *
+     * @return a <code>String</code> with the text of the immediate child of
+     *         this <code>Node</code> object if (1) there is a child and
+     *         (2) the child is a <code>Text</code> object;
+     *         <code>null</code> otherwise
+     */
+    public String getValue() {
+        if (this.getNodeType() == Node.TEXT_NODE) {
+            return this.getNodeValue();
+        } else if (this.getNodeType() == Node.ELEMENT_NODE) {
+            return ((NodeImplEx) (((OMElement) this).getFirstOMChild())).getValue();
+        }
+        return null;
+    }
+
+    /**
+     * Notifies the implementation that this <code>Node</code>
+     * object is no longer being used by the application and that the
+     * implementation is free to reuse this object for nodes that may
+     * be created later.
+     * <p/>
+     * Calling the method <code>recycleNode</code> implies that the method
+     * <code>detachNode</code> has been called previously.
+     */
+    public void recycleNode() {
+        // No corresponding implementation in OM
+        // There is no implementation in Axis 1.2 also
+    }
+
+    /**
+     * Sets the parent of this <code>Node</code> object to the given
+     * <code>SOAPElement</code> object.
+     *
+     * @param parent the <code>SOAPElement</code> object to be set as
+     *               the parent of this <code>Node</code> object
+     * @throws SOAPException if there is a problem in setting the
+     *                       parent to the given element
+     * @see #getParentElement() getParentElement()
+     */
+    public void setParentElement(SOAPElement parent) throws SOAPException {
+        this.parentElement = parent;
+    }
+
+    public void setType(int nodeType) throws OMException {
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public int getType() {
+        return this.getNodeType();
+    }
+
+    public TypeInfo getSchemaTypeInfo() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void setIdAttribute(String name, boolean isId) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void setIdAttributeNS(String namespaceURI, String localName, boolean isId) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void setIdAttributeNode(Attr idAttr, boolean isId) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    /**
+     * Converts or extracts the SAAJ node from the given DOM Node (domNode)
+     *
+     * @param domNode
+     * @return the SAAJ Node corresponding to the domNode
+     */
+    javax.xml.soap.Node toSAAJNode(org.w3c.dom.Node domNode) {
+        if (domNode == null) {
+            return null;
+        }
+        if (domNode instanceof org.w3c.dom.Text || domNode instanceof org.w3c.dom.Comment) {
+            org.w3c.dom.Node prevSiblingDOMNode = domNode.getPreviousSibling();
+            org.w3c.dom.Node nextSiblingDOMNode = domNode.getNextSibling();
+
+            TextImplEx saajTextNode = (TextImplEx) ((NodeImpl) domNode).getUserData(SAAJ_NODE);
+            if (saajTextNode == null){
+                // if SAAJ node has not been set in userData, try to construct it
+                return toSAAJNode2(domNode);
+            }
+            saajTextNode.setPreviousSibling(prevSiblingDOMNode);
+            saajTextNode.setNextSibling(nextSiblingDOMNode);
+            return saajTextNode;
+        }
+        Node saajNode = (Node) ((NodeImpl) domNode).getUserData(SAAJ_NODE);
+        if (saajNode == null) {  // if SAAJ node has not been set in userData, try to construct it
+            return toSAAJNode2(domNode);
+        }
+        return saajNode;
+    }
+
+    private javax.xml.soap.Node toSAAJNode2(org.w3c.dom.Node domNode) {
+        if (domNode == null) {
+            return null;
+        }
+        if (domNode instanceof org.w3c.dom.Text) {
+            Text text = (Text) domNode;
+            org.w3c.dom.Node prevSiblingDOMNode = text.getPreviousSibling();
+            org.w3c.dom.Node nextSiblingDOMNode = text.getNextSibling();
+            SOAPElementImpl parent = new SOAPElementImpl((ElementImpl) domNode.getParentNode());
+            TextImplEx saajTextNode =
+                    new TextImplEx(text.getData(), parent, prevSiblingDOMNode, nextSiblingDOMNode);
+            ((NodeImpl) domNode).setUserData(SAAJ_NODE, saajTextNode, null);
+            return saajTextNode;
+        } else if (domNode instanceof org.w3c.dom.Comment) {
+            Comment comment = (Comment) domNode;
+            org.w3c.dom.Node prevSiblingDOMNode = comment.getPreviousSibling();
+            org.w3c.dom.Node nextSiblingDOMNode = comment.getNextSibling();
+            SOAPElementImpl parent = new SOAPElementImpl((ElementImpl) domNode.getParentNode());
+            TextImplEx saajTextNode = new TextImplEx("<!--" +
+                                                     comment.getData() +
+                                                     "-->",
+                                                     parent, prevSiblingDOMNode, nextSiblingDOMNode);
+            ((NodeImpl) domNode).setUserData(SAAJ_NODE, saajTextNode, null);
+            return saajTextNode;
+        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPBodyImpl) {
+            org.apache.axiom.soap.impl.dom.SOAPBodyImpl doomSOAPBody = (SOAPBodyImpl) domNode;
+            javax.xml.soap.SOAPBody saajSOAPBody =
+                    new org.apache.axis2.saaj.SOAPBodyImpl(doomSOAPBody);
+            doomSOAPBody.setUserData(SAAJ_NODE, saajSOAPBody, null);
+            return saajSOAPBody;
+        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl) {
+            org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl doomSOAPEnv
+                    = (SOAPEnvelopeImpl) domNode;
+            javax.xml.soap.SOAPEnvelope saajEnvelope
+                    = new org.apache.axis2.saaj.SOAPEnvelopeImpl(doomSOAPEnv);
+            doomSOAPEnv.setUserData(SAAJ_NODE, saajEnvelope, null);
+            return saajEnvelope;
+        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPFaultNodeImpl) {
+            org.apache.axiom.soap.impl.dom.SOAPFaultNodeImpl doomSOAPFaultNode
+                    = (org.apache.axiom.soap.impl.dom.SOAPFaultNodeImpl) domNode;
+            javax.xml.soap.SOAPFaultElement saajSOAPFaultEle
+                    = new org.apache.axis2.saaj.SOAPFaultElementImpl(doomSOAPFaultNode);
+            doomSOAPFaultNode.setUserData(SAAJ_NODE, saajSOAPFaultEle, null);
+            return saajSOAPFaultEle;
+        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPFaultDetailImpl) {
+            org.apache.axiom.soap.impl.dom.SOAPFaultDetailImpl doomSOAPFaultDetail
+                    = (org.apache.axiom.soap.impl.dom.SOAPFaultDetailImpl) domNode;
+            javax.xml.soap.Detail saajDetail
+                    = new org.apache.axis2.saaj.DetailImpl(doomSOAPFaultDetail);
+            doomSOAPFaultDetail.setUserData(SAAJ_NODE, saajDetail, null);
+            return saajDetail;
+        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPFaultImpl) {
+            org.apache.axiom.soap.impl.dom.SOAPFaultImpl doomSOAPFault
+                    = (org.apache.axiom.soap.impl.dom.SOAPFaultImpl) domNode;
+            javax.xml.soap.SOAPFault saajSOAPFault
+                    = new org.apache.axis2.saaj.SOAPFaultImpl(doomSOAPFault);
+            doomSOAPFault.setUserData(SAAJ_NODE, saajSOAPFault, null);
+            return saajSOAPFault;
+        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPHeaderBlockImpl) {
+            org.apache.axiom.soap.impl.dom.SOAPHeaderBlockImpl doomSOAPHeaderBlock
+                    = (org.apache.axiom.soap.impl.dom.SOAPHeaderBlockImpl) domNode;
+            javax.xml.soap.SOAPHeaderElement saajSOAPHeaderEle
+                    = new org.apache.axis2.saaj.SOAPHeaderElementImpl(doomSOAPHeaderBlock);
+            doomSOAPHeaderBlock.setUserData(SAAJ_NODE, saajSOAPHeaderEle, null);
+            return saajSOAPHeaderEle;
+        } else if (domNode instanceof org.apache.axiom.soap.impl.dom.SOAPHeaderImpl) {
+            org.apache.axiom.soap.impl.dom.SOAPHeaderImpl doomSOAPHeader
+                    = (org.apache.axiom.soap.impl.dom.SOAPHeaderImpl) domNode;
+            javax.xml.soap.SOAPHeader saajSOAPHeader
+                    = new org.apache.axis2.saaj.SOAPHeaderImpl(doomSOAPHeader);
+            doomSOAPHeader.setUserData(SAAJ_NODE, saajSOAPHeader, null);
+            return saajSOAPHeader;
+        } else { // instanceof org.apache.axis2.om.impl.dom.ElementImpl
+            ElementImpl doomElement = (ElementImpl) domNode;
+            SOAPElementImpl saajSOAPElement = new SOAPElementImpl(doomElement);
+            doomElement.setUserData(SAAJ_NODE, saajSOAPElement, null);
+            return saajSOAPElement;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/NodeListImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/NodeListImpl.java
new file mode 100644
index 0000000..55ada08
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/NodeListImpl.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * The <code>NodeList</code> interface provides the abstraction of an ordered
+ * collection of nodes, without defining or constraining how this collection
+ * is implemented. <code>NodeList</code> objects in the DOM are live.
+ * <p>The items in the <code>NodeList</code> are accessible via an integral
+ * index, starting from 0.
+ * <p>See also the <a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>Document Object Model (DOM) Level 2 Core Specification</a>.
+ */
+public class NodeListImpl implements NodeList {
+
+    List mNodes;
+
+    public static final NodeList EMPTY_NODELIST = new NodeListImpl(
+            Collections.EMPTY_LIST);
+
+    /**
+     * Constructor and Setter is intensionally made package access only.
+     */
+    NodeListImpl() {
+        mNodes = new ArrayList();
+    }
+
+    NodeListImpl(List nodes) {
+        this();
+        mNodes.addAll(nodes);
+    }
+
+    void addNode(org.w3c.dom.Node node) {
+        mNodes.add(node);
+    }
+
+    void addNodeList(org.w3c.dom.NodeList nodes) {
+        for (int i = 0; i < nodes.getLength(); i++) {
+            mNodes.add(nodes.item(i));
+        }
+    }
+
+    /**
+     * Returns the <code>index</code>th item in the collection. If
+     * <code>index</code> is greater than or equal to the number of nodes in
+     * the list, this returns <code>null</code>.
+     *
+     * @param index Index into the collection.
+     * @return The node at the <code>index</code>th position in the
+     *         <code>NodeList</code>, or <code>null</code> if that is not a valid
+     *         index.
+     */
+    public Node item(int index) {
+        if (mNodes != null && mNodes.size() > index) {
+            return (Node) mNodes.get(index);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * The number of nodes in the list. The range of valid child node indices
+     * is 0 to <code>length-1</code> inclusive.
+     */
+    public int getLength() {
+        return mNodes.size();
+    }
+
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/PrefixedQName.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/PrefixedQName.java
new file mode 100644
index 0000000..10ed86b
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/PrefixedQName.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+
+/**
+ * Class Prefixed QName
+ * <p/>
+ * Took this implementation from Axis 1.2 code
+ */
+public class PrefixedQName implements Name {
+    /**
+     * comment/shared empty string
+     */
+    private static final String EMPTY_STRING = "".intern();
+
+    /**
+     * Field prefix
+     */
+    private String prefix;
+    /**
+     * Field qName
+     */
+    private QName qName;
+
+    /**
+     * Constructor PrefixedQName.
+     *
+     * @param uri
+     * @param localName
+     * @param prefix
+     */
+    public PrefixedQName(String uri, String localName, String prefix) {
+        qName = new QName(uri, localName);
+        this.prefix = (prefix == null)
+                      ? EMPTY_STRING
+                      : prefix.intern();
+    }
+
+    /**
+     * Constructor PrefixedQName
+     *
+     * @param qname
+     */
+    public PrefixedQName(QName qname) {
+        this.qName = qname;
+        prefix = EMPTY_STRING;
+    }
+
+    /**
+     * Gets the local name part of the XML name that this <code>Name</code>
+     * object represents.
+     *
+     * @return Returns the local name.
+     */
+    public String getLocalName() {
+        return qName.getLocalPart();
+    }
+
+    /**
+     * Gets the namespace-qualified name of the XML name that this
+     * <code>Name</code> object represents.
+     *
+     * @return Returns the namespace-qualified name.
+     */
+    public String getQualifiedName() {
+        StringBuffer buf = new StringBuffer(prefix);
+        if (!prefix.equals(EMPTY_STRING))
+            buf.append(':');
+        buf.append(qName.getLocalPart());
+        return buf.toString();
+    }
+
+    /**
+     * Returns the URI of the namespace for the XML
+     * name that this <code>Name</code> object represents.
+     *
+     * @return Returns the URI as a string.
+     */
+    public String getURI() {
+        return qName.getNamespaceURI();
+    }
+
+    /**
+     * Returns the prefix associated with the namespace for the XML
+     * name that this <code>Name</code> object represents.
+     *
+     * @return  Returns the prefix as a string.
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    public boolean equals(Object obj) {
+        if (obj == this) {
+            return true;
+        }
+        if (!(obj instanceof PrefixedQName)) {
+            return false;
+        }
+        if (!qName.equals(((PrefixedQName) obj).qName)) {
+            return false;
+        }
+        return prefix.equals(((PrefixedQName) obj).prefix);
+    }
+
+    public int hashCode() {
+        return prefix.hashCode() + qName.hashCode();
+    }
+
+    public String toString() {
+        return qName.toString();
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java
new file mode 100644
index 0000000..23b3f8e
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.impl.dom.ElementImpl;
+
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+public class SOAPBodyElementImpl extends SOAPElementImpl implements SOAPBodyElement {
+
+    /**
+     * @param element
+     */
+    public SOAPBodyElementImpl(ElementImpl element) {
+        super(element);
+    }
+
+    public void setParentElement(SOAPElement parent) throws SOAPException {
+        if (!(parent instanceof SOAPBody)){
+            throw new IllegalArgumentException("Parent is not a SOAPBody");
+        }
+        this.parentElement = parent;
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
new file mode 100644
index 0000000..2aa19cd
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
@@ -0,0 +1,381 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.om.impl.dom.DocumentImpl;
+import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.impl.dom.NamespaceImpl;
+import org.apache.axiom.om.impl.dom.NodeImpl;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11FaultImpl;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.Node;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFault;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Locale;
+
+public class SOAPBodyImpl extends SOAPElementImpl implements SOAPBody {
+
+    private org.apache.axiom.soap.SOAPBody omSOAPBody;
+    private boolean isBodyElementAdded;
+
+    /**
+     * @param omSOAPBody
+     */
+    public SOAPBodyImpl(org.apache.axiom.soap.SOAPBody omSOAPBody) {
+        super((ElementImpl) omSOAPBody);
+        this.omSOAPBody = omSOAPBody;
+    }
+
+    /* (non-Javadoc)
+    * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String)
+    */
+    public SOAPElement addChildElement(String localName) throws SOAPException {
+        if (omSOAPBody.hasFault()) {
+            throw new SOAPException("A SOAPFault has been already added to this SOAPBody");
+        }
+        SOAPBodyElementImpl childEle =
+                new SOAPBodyElementImpl((ElementImpl) getOwnerDocument().createElement(localName));
+        childEle.element.setUserData(SAAJ_NODE, childEle, null);
+        element.appendChild(childEle.element);
+        ((NodeImpl) childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        isBodyElementAdded = true;
+        return childEle;
+    }
+
+    public SOAPElement addChildElement(String localName, String prefix) throws SOAPException {
+        String namespaceURI = getNamespaceURI(prefix);
+
+        if (namespaceURI == null) {
+            throw new SOAPException("Namespace not declared for the give prefix: " + prefix);
+        }
+        SOAPBodyElementImpl childEle =
+                new SOAPBodyElementImpl((ElementImpl) getOwnerDocument().createElementNS(namespaceURI,
+                                                                                         localName));
+        childEle.element.setUserData(SAAJ_NODE, childEle, null);
+        childEle.element.setNamespace(childEle.element.declareNamespace(namespaceURI, prefix));
+        element.appendChild(childEle.element);
+        ((NodeImpl) childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.setParentElement(this);
+        return childEle;
+    }
+
+    public SOAPElement addChildElement(SOAPElement soapElement) throws SOAPException {
+        String namespaceURI = soapElement.getNamespaceURI();
+        String prefix = soapElement.getPrefix();
+        String localName = soapElement.getLocalName();
+        element.declareNamespace(namespaceURI, prefix);
+
+        SOAPBodyElementImpl childEle =
+                new SOAPBodyElementImpl((ElementImpl) getOwnerDocument().createElementNS(namespaceURI,
+                                                                                     localName));
+        for (Iterator iter = soapElement.getAllAttributes(); iter.hasNext();) {
+            Name name = (Name) iter.next();
+            childEle.addAttribute(name, soapElement.getAttributeValue(name));
+        }
+
+        for (Iterator iter = soapElement.getChildElements(); iter.hasNext();) {
+            Object o = iter.next();
+            if (o instanceof Text) {
+                childEle.addTextNode(((Text) o).getData());
+            } else {
+                childEle.addChildElement((SOAPElement) o);
+            }
+        }
+
+        childEle.element.setUserData(SAAJ_NODE, childEle, null);
+        childEle.element.setNamespace(childEle.element.declareNamespace(namespaceURI, prefix));
+        element.appendChild(childEle.element);
+        ((NodeImpl) childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.setParentElement(this);
+        return childEle;
+    }
+
+    /* (non-Javadoc)
+    * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String, java.lang.String, java.lang.String)
+    */
+    public SOAPElement addChildElement(String localName, String prefix, String uri) throws SOAPException {
+        if (omSOAPBody.hasFault()) {
+            throw new SOAPException("A SOAPFault has been already added to this SOAPBody");
+        }
+        SOAPBodyElementImpl childEle;
+        if(uri == null || "".equals(uri)) {
+            childEle = new SOAPBodyElementImpl(
+                    (ElementImpl) getOwnerDocument().createElement(localName));
+        } else {
+            childEle = new SOAPBodyElementImpl(
+                (ElementImpl) getOwnerDocument().createElementNS(uri,
+                        prefix + ":" + localName));
+        }
+        childEle.element.setUserData(SAAJ_NODE, childEle, null);
+        childEle.element.setNamespace(childEle.element.declareNamespace(uri, prefix));
+        element.appendChild(childEle.element);
+        ((NodeImpl) childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        isBodyElementAdded = true;
+        childEle.setParentElement(this);
+        return childEle;
+    }
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to
+     * this <code>SOAPBody</code> object.
+     *
+     * @return the new <code>SOAPFault</code> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public SOAPFault addFault() throws SOAPException {
+        if (isBodyElementAdded) {
+            throw new SOAPException("A SOAPBodyElement has been already added to this SOAPBody");
+        }
+        SOAP11FaultImpl fault = new SOAP11FaultImpl(omSOAPBody, (SOAPFactory)this.element.getOMFactory());
+        SOAPFaultImpl saajSOAPFault = new SOAPFaultImpl(fault);
+        ((NodeImpl) omSOAPBody.getFault()).setUserData(SAAJ_NODE, saajSOAPFault, null);
+        return saajSOAPFault;
+    }
+
+    /**
+     * Indicates whether a <code>SOAPFault</code> object exists in
+     * this <code>SOAPBody</code> object.
+     *
+     * @return <code>true</code> if a <code>SOAPFault</code> object exists in
+     *         this <code>SOAPBody</code> object; <code>false</code>
+     *         otherwise
+     */
+    public boolean hasFault() {
+        return omSOAPBody.hasFault();
+    }
+
+    /**
+     * Returns the <code>SOAPFault</code> object in this <code>SOAPBody</code>
+     * object.
+     *
+     * @return the <code>SOAPFault</code> object in this <code>SOAPBody</code>
+     *         object
+     */
+    public SOAPFault getFault() {
+        if (omSOAPBody.hasFault()) {
+            return (SOAPFault) toSAAJNode((org.w3c.dom.Node) omSOAPBody.getFault());
+        }
+        return null;
+    }
+
+    /**
+     * Creates a new <code>SOAPBodyElement</code> object with the
+     * specified name and adds it to this <code>SOAPBody</code> object.
+     *
+     * @param name a <code>Name</code> object with the name for the new
+     *             <code>SOAPBodyElement</code> object
+     * @return the new <code>SOAPBodyElement</code> object
+     * @throws SOAPException if a SOAP error occurs
+     */
+    public SOAPBodyElement addBodyElement(Name name) throws SOAPException {
+        return (SOAPBodyElement) addChildElement(name);
+    }
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to this
+     * <code>SOAPBody</code> object. The new <code>SOAPFault</code> will have a
+     * <code>faultcode</code> element that is set to the <code>faultCode</code>
+     * parameter and a <code>faultstring</code> set to <code>faultstring</code>
+     * and localized to <code>locale</code>.
+     *
+     * @param faultCode   a <code>Name</code> object giving the fault code to be
+     *                    set; must be one of the fault codes defined in the SOAP 1.1
+     *                    specification and of type QName
+     * @param faultString a <code>String</code> giving an explanation of the
+     *                    fault
+     * @param locale      a <code>Locale</code> object indicating the native language
+     *                    of the <ocde>faultString</code>
+     * @return the new <code>SOAPFault</code> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public SOAPFault addFault(Name faultCode, String faultString, Locale locale) throws SOAPException {
+        SOAP11FaultImpl fault = new SOAP11FaultImpl(omSOAPBody, new Exception(
+                faultString), (SOAPFactory) this.element.getOMFactory());
+        SOAPFaultImpl faultImpl = new SOAPFaultImpl(fault);
+        faultImpl.setFaultCode(faultCode);
+        if (locale != null) {
+            faultImpl.setFaultString(faultString, locale);
+        } else {
+            faultImpl.setFaultString(faultString);
+        }
+
+        return faultImpl;
+    }
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to this
+     * <code>SOAPBody</code> object. The new <code>SOAPFault</code> will have a
+     * <code>faultcode</code> element that is set to the <code>faultCode</code>
+     * parameter and a <code>faultstring</code> set to <code>faultstring</code>.
+     *
+     * @param faultCode   a <code>Name</code> object giving the fault code to be
+     *                    set; must be one of the fault codes defined in the SOAP 1.1
+     *                    specification and of type QName
+     * @param faultString a <code>String</code> giving an explanation of the
+     *                    fault
+     * @return the new <code>SOAPFault</code> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public SOAPFault addFault(Name faultCode, String faultString) throws SOAPException {
+        return addFault(faultCode, faultString, null);
+    }
+
+    /**
+     * Adds the root node of the DOM <code>Document</code> to this
+     * <code>SOAPBody</code> object.
+     * <p/>
+     * Calling this method invalidates the <code>document</code> parameter. The
+     * client application should discard all references to this
+     * <code>Document</code> and its contents upon calling
+     * <code>addDocument</code>. The behavior of an application that continues
+     * to use such references is undefined.
+     *
+     * @param document the <code>Document</code> object whose root node will be
+     *                 added to this <code>SOAPBody</code>
+     * @return the <code>SOAPBodyElement</code> that represents the root node
+     *         that was added
+     * @throws SOAPException if the <code>Document</code> cannot be added
+     */
+    public SOAPBodyElement addDocument(Document document) throws SOAPException {
+        Element docEle = document.getDocumentElement();
+
+        SOAPElement saajSOAPEle = (SOAPElement) toSAAJNode(docEle, this);
+        SOAPBodyElementImpl bodyEle =
+                new SOAPBodyElementImpl(((SOAPElementImpl) saajSOAPEle).element);
+        addChildElement(bodyEle);
+        return bodyEle;
+    }
+
+    private javax.xml.soap.Node toSAAJNode(org.w3c.dom.Node node,
+                                           SOAPElement parent) throws SOAPException {
+        if (node == null) {
+            return null;
+        }
+        if (node instanceof org.w3c.dom.Text) {
+            org.w3c.dom.Text domText = (org.w3c.dom.Text) node;
+            return new TextImplEx(domText.getData(), parent);
+        }
+        if (node instanceof org.w3c.dom.Comment) {
+            org.w3c.dom.Comment domText = (org.w3c.dom.Comment) node;
+            return new TextImplEx("<!--" + domText.getData() + "-->", parent);
+        }
+        Element domEle = ((Element) node);
+        int indexOfColon = domEle.getTagName().indexOf(":");
+        NamespaceImpl ns;
+        String localname;
+        if (indexOfColon != -1) {
+            localname = domEle.getTagName().substring(indexOfColon + 1);
+
+            ns = new NamespaceImpl(domEle.getNamespaceURI(),
+                                   domEle.getTagName().substring(0, indexOfColon));
+        } else {
+            localname = domEle.getLocalName();
+            ns = new NamespaceImpl(domEle.getNamespaceURI(), domEle.getPrefix());
+        }
+        ElementImpl eleImpl =
+                new ElementImpl((DocumentImpl) this.getOwnerDocument(), 
+                        localname, ns, this.element.getOMFactory());
+
+        SOAPElementImpl saajEle = new SOAPElementImpl(eleImpl);
+
+        saajEle.setParentElement(parent);
+        NamedNodeMap domAttrs = domEle.getAttributes();
+        for (int i = 0; i < domAttrs.getLength(); i++) {
+            org.w3c.dom.Node attrNode = domAttrs.item(i);
+            saajEle.addAttribute(new PrefixedQName(attrNode.getNamespaceURI(),
+                                                   attrNode.getLocalName(),
+                                                   attrNode.getPrefix()),
+                                 attrNode.getNodeValue());
+        }
+
+        NodeList childNodes = node.getChildNodes();
+        for (int i = 0; i < childNodes.getLength(); i++) {
+            Node childSAAJNode = toSAAJNode(childNodes.item(i), saajEle);
+            if (childSAAJNode instanceof javax.xml.soap.Text) {
+                saajEle.addTextNode(childSAAJNode.getValue());
+            } else {
+                saajEle.addChildElement((javax.xml.soap.SOAPElement) childSAAJNode);
+            }
+        }
+        return saajEle;
+    }
+
+    public void detachNode() {
+        this.detach();
+    }
+
+    public OMNode detach() {
+        this.parentElement = null;
+        return this.element.detach();
+    }
+
+    public Iterator getChildElements(Name name) {
+        QName qName = new QName(name.getURI(), name.getLocalName());
+        return getChildren(element.getChildrenWithName(qName));
+    }
+
+    public Iterator getChildElements() {
+        return getChildren(element.getChildren());
+    }
+
+    public SOAPElement addTextNode(String text) throws SOAPException {
+        throw new UnsupportedOperationException("Cannot add text node to SOAPBody");
+    }
+
+    private Iterator getChildren(Iterator childIter) {
+        Collection childElements = new ArrayList();
+        while (childIter.hasNext()) {
+            org.w3c.dom.Node domNode = (org.w3c.dom.Node) childIter.next();
+            Node saajNode = toSAAJNode(domNode);
+            if (saajNode instanceof javax.xml.soap.Text) {
+                childElements.add(saajNode);
+            } else if (!(saajNode instanceof SOAPBodyElement)) {
+                // silently replace node, as per saaj 1.2 spec
+                if (domNode instanceof ElementImpl) {
+                    if (omSOAPBody.hasFault()) {
+                        SOAP11FaultImpl fault = new SOAP11FaultImpl(omSOAPBody,
+                                (SOAPFactory) this.element.getOMFactory());
+                        SOAPFaultImpl saajSOAPFault = new SOAPFaultImpl(fault);
+                        ((NodeImpl) omSOAPBody.getFault()).setUserData(SAAJ_NODE, saajSOAPFault, null);
+                        childElements.add(saajSOAPFault);
+                    } else {
+                        SOAPBodyElement saajBodyEle = new SOAPBodyElementImpl((ElementImpl) domNode);
+                        ((NodeImpl) domNode).setUserData(SAAJ_NODE, saajBodyEle, null);
+                        childElements.add(saajBodyEle);
+                    }
+                }
+            } else {
+                childElements.add(saajNode);
+            }
+        }
+        return childElements.iterator();
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionFactoryImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionFactoryImpl.java
new file mode 100644
index 0000000..5580180
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionFactoryImpl.java
@@ -0,0 +1,36 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import javax.xml.soap.SOAPConnection;
+import javax.xml.soap.SOAPConnectionFactory;
+import javax.xml.soap.SOAPException;
+
+/**
+ * 
+ */
+public class SOAPConnectionFactoryImpl extends SOAPConnectionFactory {
+    /**
+     * Create a new <CODE>SOAPConnection</CODE>.
+     *
+     * @return the new <CODE>SOAPConnection</CODE> object.
+     * @throws javax.xml.soap.SOAPException if there was an exception
+     *                                      creating the <CODE>SOAPConnection</CODE> object.
+     */
+    public SOAPConnection createConnection() throws SOAPException {
+        return new SOAPConnectionImpl();
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
new file mode 100644
index 0000000..833155e
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
@@ -0,0 +1,396 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.saaj.util.IDGenerator;
+import org.apache.axis2.saaj.util.SAAJUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import javax.xml.soap.AttachmentPart;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPConnection;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ *
+ */
+public class SOAPConnectionImpl extends SOAPConnection {
+
+    /**
+     * Attribute which keeps track of whether this connection has been closed
+     */
+    private boolean closed = false;
+
+    private ServiceClient serviceClient;
+
+	private static final Log log = LogFactory.getLog(SOAPConnectionImpl.class);
+
+    /**
+     * Sends the given message to the specified endpoint and
+     * blocks until it has returned the response.
+     *
+     * @param request  the <CODE>SOAPMessage</CODE>
+     *                 object to be sent
+     * @param endpoint an <code>Object</code> that identifies
+     *                 where the message should be sent. It is required to
+     *                 support Objects of type
+     *                 <code>java.lang.String</code>,
+     *                 <code>java.net.URL</code>, and when JAXM is present
+     *                 <code>javax.xml.messaging.URLEndpoint</code>
+     * @return the <CODE>SOAPMessage</CODE> object that is the
+     *         response to the message that was sent
+     * @throws javax.xml.soap.SOAPException if there is a SOAP error,
+     *                                      or this SOAPConnection is already closed
+     */
+    public SOAPMessage call(SOAPMessage request, Object endpoint) throws SOAPException {
+
+        if (closed) {
+            throw new SOAPException("SOAPConnection closed");
+        }
+
+        // initialize URL
+        URL url;
+        try {
+            url = (endpoint instanceof URL) ? (URL) endpoint : new URL(endpoint.toString());
+        } catch (MalformedURLException e) {
+            throw new SOAPException(e);
+        }
+
+        // initialize and set Options
+        Options options = new Options();
+        options.setTo(new EndpointReference(url.toString()));
+
+        // initialize the Sender
+        OperationClient opClient;
+        try {
+            serviceClient = new ServiceClient();
+            opClient = serviceClient.createClient(ServiceClient.ANON_OUT_IN_OP);
+        } catch (AxisFault e) {
+            throw new SOAPException(e);
+        }
+        opClient.setOptions(options);
+
+        if (request.countAttachments() != 0) { // SOAPMessage with attachments
+            opClient.getOptions().setProperty(Constants.Configuration.ENABLE_MTOM,
+                                              Constants.VALUE_TRUE);
+            return handleSOAPMessage(request, opClient);
+        } else { // simple SOAPMessage
+            return handleSOAPMessage(request, opClient);
+        }
+    }
+
+    /**
+     * Closes this <CODE>SOAPConnection</CODE> object.
+     *
+     * @throws javax.xml.soap.SOAPException if there is a SOAP error,
+     *                                      or this SOAPConnection is already closed
+     */
+    public void close() throws SOAPException {
+        if (serviceClient != null) {
+            try {
+                serviceClient.cleanup();
+            } catch (AxisFault axisFault) {
+                throw new SOAPException(axisFault.getMessage());
+            }
+        }
+        if (closed) {
+            throw new SOAPException("SOAPConnection Closed");
+        }
+        closed = true;
+    }
+
+    private SOAPMessage handleSOAPMessage(SOAPMessage request,
+                                          OperationClient opClient) throws SOAPException {
+
+        MessageContext requestMsgCtx = new MessageContext();
+        try {
+            requestMsgCtx.setEnvelope(toOMSOAPEnvelope(request));
+            opClient.addMessageContext(requestMsgCtx);
+            opClient.execute(true);
+
+            MessageContext msgCtx = opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+            //TODO: get attachments
+
+            return getSOAPMessage(msgCtx.getEnvelope());
+        } catch (AxisFault e) {
+            throw new SOAPException(e);
+        }
+    }
+
+    /**
+     * This method handles the conversion of an OM SOAP Envelope to a SAAJ SOAPMessage
+     *
+     * @param respOMSoapEnv
+     * @return the SAAJ SOAPMessage
+     * @throws SOAPException If an exception occurs during this conversion
+     */
+    private SOAPMessage getSOAPMessage(org.apache.axiom.soap.SOAPEnvelope respOMSoapEnv)
+            throws SOAPException {
+
+        System.err.println("####### respOMSoapEnv=" + respOMSoapEnv);
+
+        // Create the basic SOAP Message
+        MessageFactory mf = MessageFactory.newInstance();
+        SOAPMessage response = mf.createMessage();
+        SOAPPart sPart = response.getSOAPPart();
+        javax.xml.soap.SOAPEnvelope env = sPart.getEnvelope();
+        SOAPBody body = env.getBody();
+        SOAPHeader header = env.getHeader();
+
+        //Convert all header blocks
+        for (Iterator hbIter = respOMSoapEnv.getHeader().examineAllHeaderBlocks();
+             hbIter.hasNext();) {
+
+            // Converting a single OM SOAP HeaderBlock to a SAAJ SOAP HeaderBlock
+            org.apache.axiom.soap.SOAPHeaderBlock hb =
+                    (org.apache.axiom.soap.SOAPHeaderBlock) hbIter.next();
+            final QName hbQName = hb.getQName();
+            final SOAPHeaderElement headerEle =
+                    header.addHeaderElement(env.createName(hbQName.getLocalPart(),
+                                                           hbQName.getPrefix(),
+                                                           hbQName.getNamespaceURI()));
+            for (Iterator attribIter = hb.getAllAttributes(); attribIter.hasNext();) {
+                OMAttribute attr = (OMAttribute) attribIter.next();
+                final QName attrQName = attr.getQName();
+                headerEle.addAttribute(env.createName(attrQName.getLocalPart(),
+                                                      attrQName.getPrefix(),
+                                                      attrQName.getNamespaceURI()),
+                                       attr.getAttributeValue());
+            }
+            final String role = hb.getRole();
+            if (role != null) {
+                headerEle.setActor(role);
+            }
+            headerEle.setMustUnderstand(hb.getMustUnderstand());
+
+            toSAAJElement(headerEle, hb, response);
+        }
+
+        // Convert the body
+        toSAAJElement(body, respOMSoapEnv.getBody(), response);
+
+        return response;
+    }
+
+    /**
+     * Converts an OMNode into a SAAJ SOAPElement
+     *
+     * @param saajEle
+     * @param omNode
+     * @param saajSOAPMsg
+     * @throws SOAPException If conversion fails
+     */
+    private void toSAAJElement(SOAPElement saajEle,
+                               OMNode omNode,
+                               javax.xml.soap.SOAPMessage saajSOAPMsg) throws SOAPException {
+
+        if (omNode instanceof OMText) {
+            return; // simply return since the text has already been added to saajEle
+        }
+
+        if (omNode instanceof OMElement) {
+            OMElement omEle = (OMElement) omNode;
+            for (Iterator childIter = omEle.getChildren(); childIter.hasNext();) {
+                OMNode omChildNode = (OMNode) childIter.next();
+                SOAPElement saajChildEle = null;
+
+                if (omChildNode instanceof OMText) {
+                    // check whether the omtext refers to an attachment
+
+                    final OMText omText = (OMText) omChildNode;
+                    if (omText.isOptimized()) { // is this an attachment?
+                        final DataHandler datahandler = (DataHandler) omText.getDataHandler();
+                        AttachmentPart attachment = saajSOAPMsg.createAttachmentPart(datahandler);
+                        final String id = IDGenerator.generateID();
+                        attachment.setContentId(id);
+                        attachment.setContentType(datahandler.getContentType());
+                        saajSOAPMsg.addAttachmentPart(attachment);
+
+                        saajEle.addAttribute(saajSOAPMsg.getSOAPPart().getEnvelope().createName("href"),
+                                             "cid:" + id);
+                    } else {
+                        saajChildEle = saajEle.addTextNode(omText.getText());
+                    }
+                } else if (omChildNode instanceof OMElement) {
+                    OMElement omChildEle = (OMElement) omChildNode;
+                    final QName omChildQName = omChildEle.getQName();
+                    saajChildEle =
+                            saajEle.addChildElement(omChildQName.getLocalPart(),
+                                                    omChildQName.getPrefix(),
+                                                    omChildQName.getNamespaceURI());
+                    for (Iterator attribIter = omChildEle.getAllAttributes();
+                         attribIter.hasNext();) {
+                        OMAttribute attr = (OMAttribute) attribIter.next();
+                        final QName attrQName = attr.getQName();
+                        saajChildEle.addAttribute(saajSOAPMsg.getSOAPPart().getEnvelope().
+                                createName(attrQName.getLocalPart(),
+                                           attrQName.getPrefix(),
+                                           attrQName.getNamespaceURI()),
+                                                  attr.getAttributeValue());
+                    }
+                }
+
+                // go down the tree adding child elements, till u reach a leaf(i.e. text element)
+                toSAAJElement(saajChildEle, omChildNode, saajSOAPMsg);
+            }
+        }
+    }
+
+    /**
+     * Converts a SAAJ SOAPMessage to an OM SOAPEnvelope
+     *
+     * @param saajSOAPMsg
+     * @return
+     * @throws SOAPException
+     */
+    protected org.apache.axiom.soap.SOAPEnvelope toOMSOAPEnvelope(SOAPMessage saajSOAPMsg)
+            throws SOAPException {
+
+        final org.apache.axiom.soap.SOAPEnvelope omSOAPEnv =
+                SAAJUtil.toOMSOAPEnvelope(saajSOAPMsg.getSOAPPart().getDocumentElement());
+        System.err.println("#### req OM Soap Env=" + omSOAPEnv);
+
+        Map attachmentMap = new HashMap();
+        final Iterator attachments = saajSOAPMsg.getAttachments();
+        while (attachments.hasNext()) {
+            final AttachmentPart attachment = (AttachmentPart) attachments.next();
+            if (attachment.getContentId() == null ||
+                attachment.getContentId().trim().length() == 0) {
+                attachment.setContentId(IDGenerator.generateID());
+            }
+            if (attachment.getDataHandler() == null) {
+                throw new SOAPException("Attachment with NULL DataHandler");
+            }
+            attachmentMap.put(attachment.getContentId(), attachment);
+        }
+
+        insertAttachmentNodes(attachmentMap, omSOAPEnv);
+
+//        printOMSOAPEnvelope(omSOAPEnv);
+
+        return omSOAPEnv;
+    }
+
+    /**
+     * Inserts the attachments in the proper places
+     *
+     * @param attachments
+     * @param omEnvelope
+     * @throws SOAPException
+     */
+    private void insertAttachmentNodes(Map attachments,
+                                       OMElement omEnvelope) throws SOAPException {
+
+        Iterator childIter = omEnvelope.getChildElements();
+        while (childIter.hasNext()) {
+            OMElement child = (OMElement) childIter.next();
+            final OMAttribute hrefAttr = child.getAttribute(new QName("href"));
+            String contentID = getContentID(hrefAttr);
+
+            if (contentID != null) {//This is an omEnvelope referencing an attachment
+                child.build();
+                AttachmentPart ap = ((AttachmentPart) attachments.get(contentID.trim()));
+                OMText text = new OMTextImpl(ap.getDataHandler(), true,
+                        omEnvelope.getOMFactory());
+                child.removeAttribute(hrefAttr);
+                child.addChild(text);
+            } else {
+
+                //possibly there can be references in the children of this omEnvelope
+                //so recurse through.
+                insertAttachmentNodes(attachments, child);
+            }
+        }
+
+        //TODO: Need to handle no referenced attachments
+    }
+
+    /**
+     * This method checks the value of attribute and if it is a valid CID then
+     * returns the contentID (with cid: prefix stripped off) or else returns null.
+     * A null return value can be assumed that this attribute is not an attachment
+     * referencing attribute
+     *
+     * @return the ContentID
+     */
+    private String getContentID(OMAttribute attr) {
+        String contentId;
+        if (attr != null) {
+            contentId = attr.getAttributeValue();
+        } else {
+            return null;
+        }
+
+        if (contentId.startsWith("cid:")) {
+            contentId = contentId.substring(4);
+            return contentId;
+        }
+        return null;
+    }
+
+    /* private void printOMSOAPEnvelope(final org.apache.axiom.soap.SOAPEnvelope omSOAPEnv) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        try {
+            omSOAPEnv.serialize(baos);
+            log.info("---------------------------------------------------------------------------");
+            log.info(baos);
+            log.info("---------------------------------------------------------------------------");
+            System.err.println("---------------------------------------------------------------------------");
+            System.err.println(baos);
+            System.err.println("---------------------------------------------------------------------------");
+        } catch (XMLStreamException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private String printSAAJSOAPMessage(final SOAPMessage msg) throws SOAPException, IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        msg.writeTo(baos);
+        String responseStr = baos.toString();
+
+        System.out.println("\n\n----------------------SAAJ Message-------------------------\n" +
+                           responseStr);
+        System.out.println("-------------------------------------------------------\n\n");
+        return responseStr;
+    }*/
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
new file mode 100644
index 0000000..caf7de1
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
@@ -0,0 +1,709 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.dom.DocumentImpl;
+import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.impl.dom.NodeImpl;
+import org.apache.axiom.om.impl.dom.TextImpl;
+import org.w3c.dom.Attr;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.stream.XMLStreamException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+public class SOAPElementImpl extends NodeImplEx implements SOAPElement {
+
+    /**
+     * Using a delegate because we can't extend from
+     * org.apache.axiom.om.impl.dom.ElementImpl since this class
+     * must extend SNodeImpl
+     */
+    protected ElementImpl element;
+
+    public SOAPElementImpl(ElementImpl element) {
+        super(element.getOMFactory());
+        this.element = element;
+    }
+
+    /* (non-Javadoc)
+      * @see org.apache.axiom.om.OMNode#discard()
+      */
+    public void discard() throws OMException {
+        element.discard();
+    }
+
+    /* (non-Javadoc)
+      */
+    public void internalSerialize(javax.xml.stream.XMLStreamWriter writer) throws XMLStreamException {
+        element.internalSerialize(writer);
+    }
+
+    /* (non-Javadoc)
+      * @see org.apache.axiom.om.OMNode#serializeAndConsume(org.apache.axiom.om.impl.OMOutputImpl)
+      */
+    public void internalSerializeAndConsume(javax.xml.stream.XMLStreamWriter writer) throws XMLStreamException {
+        element.internalSerializeAndConsume(writer);
+    }
+
+    /**
+     * Adds an attribute with the specified name and value to this
+     * <code>SOAPElement</code> object.
+     * <p/>
+     *
+     * @param name  a <code>Name</code> object with the name of the attribute
+     * @param value a <code>String</code> giving the value of the attribute
+     * @return the <code>SOAPElement</code> object into which the attribute was
+     *         inserted
+     * @throws SOAPException if there is an error in creating the
+     *                       Attribute
+     */
+    public SOAPElement addAttribute(Name name, String value) throws SOAPException {
+        if (name.getURI() == null || name.getURI().trim().length() == 0) {
+            element.setAttribute(name.getLocalName(), value);
+        } else {
+            element.setAttributeNS(name.getURI(), name.getPrefix() + ":" + name.getLocalName(), value);
+        }
+        return this;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#addChildElement(javax.xml.soap.Name)
+      */
+    public SOAPElement addChildElement(Name name) throws SOAPException {
+        String prefix = name.getPrefix();
+        return addChildElement(name.getLocalName(), "".equals(prefix) ? null : prefix  , name.getURI());
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#addChildElement(javax.xml.soap.SOAPElement)
+      */
+    public SOAPElement addChildElement(SOAPElement soapElement) throws SOAPException {
+        String namespaceURI = soapElement.getNamespaceURI();
+        String prefix = soapElement.getPrefix();
+        String localName = soapElement.getLocalName();
+        element.declareNamespace(namespaceURI, prefix);
+
+        SOAPElementImpl childEle =
+                new SOAPElementImpl((ElementImpl) getOwnerDocument().createElementNS(namespaceURI,
+                                                                                     localName));
+        for (Iterator iter = soapElement.getAllAttributes(); iter.hasNext();) {
+            Name name = (Name) iter.next();
+            childEle.addAttribute(name, soapElement.getAttributeValue(name));
+        }
+
+        for (Iterator iter = soapElement.getChildElements(); iter.hasNext();) {
+            Object o = iter.next();
+            if (o instanceof Text) {
+                childEle.addTextNode(((Text) o).getData());
+            } else {
+                childEle.addChildElement((SOAPElement) o);
+            }
+        }
+
+        childEle.element.setUserData(SAAJ_NODE, childEle, null);
+        childEle.element.setNamespace(childEle.element.declareNamespace(namespaceURI, prefix));
+        element.appendChild(childEle.element);
+        ((NodeImpl) childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.setParentElement(this);
+        return childEle;
+    }
+
+    public String getLocalName() {
+        return element.getLocalName();
+    }
+
+    public String getNamespaceURI() {
+        return element.getNamespaceURI();
+    }
+
+    /*
+    * Overidden in ElementImpl and AttrImpl.
+    */
+    public String getPrefix() {
+        return element.getPrefix();
+    }
+
+    /* (non-Javadoc)
+    * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String, java.lang.String, java.lang.String)
+    */
+    public SOAPElement addChildElement(String localName, String prefix, String uri) throws SOAPException {
+        OMNamespace omNamespace = element.declareNamespace(uri, prefix);
+        return addChildElement(localName, omNamespace.getPrefix());
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String, java.lang.String)
+      */
+    public SOAPElement addChildElement(String localName, String prefix) throws SOAPException {
+        String namespaceURI = getNamespaceURI(prefix);
+
+        if (namespaceURI == null) {
+            throw new SOAPException("Namespace not declared for the give prefix: " + prefix);
+        }
+        SOAPElementImpl childEle =
+                new SOAPElementImpl((ElementImpl) getOwnerDocument().createElementNS(namespaceURI,
+                                                                                     localName));
+        childEle.element.setUserData(SAAJ_NODE, childEle, null);
+        childEle.element.setNamespace(childEle.element.declareNamespace(namespaceURI, prefix));
+        element.appendChild(childEle.element);
+        ((NodeImpl) childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.setParentElement(this);
+        return childEle;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String)
+      */
+    public SOAPElement addChildElement(String localName) throws SOAPException {
+        SOAPElementImpl childEle =
+                new SOAPElementImpl((ElementImpl) getOwnerDocument().createElement(localName));
+        childEle.element.setUserData(SAAJ_NODE, childEle, null);
+        element.appendChild(childEle.element);
+        ((NodeImpl) childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
+        childEle.setParentElement(this);
+        return childEle;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#addNamespaceDeclaration(java.lang.String, java.lang.String)
+      */
+    public SOAPElement addNamespaceDeclaration(String prefix, String uri) throws SOAPException {
+        element.declareNamespace(uri, prefix);
+        return this;
+    }
+
+    /**
+     * Creates a new <code>Text</code> object initialized with the given
+     * <code>String</code> and adds it to this <code>SOAPElement</code> object.
+     *
+     * @param text a <code>String</code> object with the textual content to be added
+     * @return the <code>SOAPElement</code> object into which
+     *         the new <code>Text</code> object was inserted
+     * @throws SOAPException if there is an error in creating the
+     *                       new <code>Text</code> object
+     */
+    public SOAPElement addTextNode(String text) throws SOAPException {
+        //OmElement.setText() will remove all the other text nodes that it contains
+        //Therefore create a text node and add it
+        //TODO: May need to address the situation where the prev sibling of the textnode itself is a textnode
+        Text textNode = getOwnerDocument().createTextNode(text);
+        NodeImpl node = ((NodeImpl) element.appendChild(textNode));
+        TextImplEx saajTextNode = new TextImplEx(text, this);
+        node.setUserData(SAAJ_NODE, saajTextNode, null);
+        return this;
+    }
+
+    /**
+     * Returns an iterator over all of the attribute names in
+     * this <CODE>SOAPElement</CODE> object. The iterator can be
+     * used to get the attribute names, which can then be passed to
+     * the method <CODE>getAttributeValue</CODE> to retrieve the
+     * value of each attribute.
+     *
+     * @return an iterator over the names of the attributes
+     */
+    public Iterator getAllAttributes() {
+        final Iterator attribIter = element.getAllAttributes();
+        Collection attribName = new ArrayList();
+        Attr attr;
+        while (attribIter.hasNext()) {
+            attr = (Attr) attribIter.next();
+            PrefixedQName qname;
+            if (attr.getNamespaceURI() == null || attr.getNamespaceURI().trim().length() == 0) {
+                qname = new PrefixedQName(attr.getNamespaceURI(),
+                                          attr.getName(),
+                                          attr.getPrefix());
+            } else {
+                qname = new PrefixedQName(attr.getNamespaceURI(),
+                                          attr.getLocalName(),
+                                          attr.getPrefix());
+            }
+            attribName.add(qname);
+        }
+        return attribName.iterator();
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#getAttributeValue(javax.xml.soap.Name)
+      */
+    public String getAttributeValue(Name name) {
+        //This method is waiting on the finalization of the name for a method
+        //in OMElement that returns a OMAttribute from an input QName
+        final OMAttribute attribute = element.getAttribute(new QName(name.getURI(),
+                                                                     name.getLocalName(),
+                                                                     name.getPrefix()));
+        if (attribute == null) {
+            return null;
+        }
+        return attribute.getAttributeValue();
+    }
+
+    /**
+     * Returns an iterator over all the immediate content of
+     * this element. This includes <CODE>Text</CODE> objects as well
+     * as <CODE>SOAPElement</CODE> objects.
+     *
+     * @return an iterator over <CODE>Text</CODE> and <CODE>SOAPElement</CODE>
+     *         contained within this <CODE>SOAPElement</CODE> object
+     */
+    public Iterator getChildElements() {
+        Iterator childIter = element.getChildren();
+        Collection childElements = new ArrayList();
+        while (childIter.hasNext()) {
+            childElements.add(toSAAJNode((org.w3c.dom.Node) childIter.next()));
+        }
+        return childElements.iterator();
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#getChildElements(javax.xml.soap.Name)
+      */
+    public Iterator getChildElements(Name name) {
+        QName qName = new QName(name.getURI(), name.getLocalName());
+        Iterator childIter = element.getChildrenWithName(qName);
+        Collection childElements = new ArrayList();
+        while (childIter.hasNext()) {
+            childElements.add(toSAAJNode((org.w3c.dom.Node) childIter.next()));
+        }
+        return childElements.iterator();
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#getElementName()
+      */
+    public Name getElementName() {
+        QName qName = element.getQName();
+        return new PrefixedQName(qName.getNamespaceURI(),
+                                 qName.getLocalPart(),
+                                 qName.getPrefix());
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#getEncodingStyle()
+      */
+    public String getEncodingStyle() {
+        return ((DocumentImpl) getOwnerDocument()).getCharsetEncoding();
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#getNamespacePrefixes()
+      */
+    public Iterator getNamespacePrefixes() {
+        //Get all declared namespace, make a list of their prefixes and return an iterator over that list
+        ArrayList prefixList = new ArrayList();
+        Iterator nsIter = element.getAllDeclaredNamespaces();
+        while (nsIter.hasNext()) {
+            Object o = nsIter.next();
+            if (o instanceof org.apache.axiom.om.OMNamespace) {
+                org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace) o;
+                prefixList.add(ns.getPrefix());
+            }
+        }
+        return prefixList.iterator();
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#getNamespaceURI(java.lang.String)
+      */
+    public String getNamespaceURI(String prefix) {
+        return element.getNamespaceURI(prefix);
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#getVisibleNamespacePrefixes()
+      */
+    public Iterator getVisibleNamespacePrefixes() {
+        //I'll recursively return all the declared namespaces till this node, including its parents etc.
+        Iterator namespacesIter = element.getAllDeclaredNamespaces();
+        ArrayList returnList = new ArrayList();
+        while (namespacesIter.hasNext()) {
+            Object o = namespacesIter.next();
+            if (o instanceof OMNamespace) {
+                OMNamespace ns = (OMNamespace) o;
+                if (ns.getPrefix() != null) {
+                    returnList.add(ns.getPrefix());
+                }
+            }
+        }
+        //taken care of adding namespaces of this node.
+        //now we have to take care of adding the namespaces that are in the scope till the level of
+        //this nodes' parent.
+        org.apache.axiom.om.OMContainer parent = element.getParent();
+        if (parent != null && parent instanceof org.apache.axiom.om.OMElement) {
+            Iterator parentScopeNamespacesIter = ((org.apache.axiom.om.OMElement) parent).getAllDeclaredNamespaces();
+            while (parentScopeNamespacesIter.hasNext()) {
+                Object o = parentScopeNamespacesIter.next();
+                if (o instanceof OMNamespace) {
+                    OMNamespace ns = (OMNamespace) o;
+                    if (ns.getPrefix() != null) {
+                        returnList.add(ns.getPrefix());
+                    }
+                }
+            }
+        }
+        return returnList.iterator();
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#removeAttribute(javax.xml.soap.Name)
+      */
+    public boolean removeAttribute(Name name) {
+        org.apache.axiom.om.OMAttribute attr = element.getAttribute(new QName(name.getURI(),
+                                                                                   name.getLocalName(),
+                                                                                   name.getPrefix()));
+        if (attr != null) {
+            element.removeAttribute(attr);
+            return true;
+        }
+        return false;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#removeContents()
+      */
+    public void removeContents() {
+        //We will get all the children and iteratively call the detach() on all of 'em.
+        Iterator childIter = element.getChildren();
+
+        while (childIter.hasNext()) {
+            Object o = childIter.next();
+            if (o instanceof org.apache.axiom.om.OMNode) {
+                ((org.apache.axiom.om.OMNode) o).detach();
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#removeNamespaceDeclaration(java.lang.String)
+      */
+    public boolean removeNamespaceDeclaration(String prefix) {
+        return element.removeNamespace(prefix);
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPElement#setEncodingStyle(java.lang.String)
+      */
+    public void setEncodingStyle(String encodingStyle) throws SOAPException {
+        if (!encodingStyle.equals(SOAPConstants.URI_NS_SOAP_ENCODING)) {
+            throw new IllegalArgumentException("Invalid Encoding style : " + encodingStyle);
+        }
+        ((DocumentImpl) getOwnerDocument()).setCharsetEncoding(encodingStyle);
+    }
+
+    /* (non-Javadoc)
+      * @see org.apache.axiom.om.impl.OMNodeEx#setParent(org.apache.axiom.om.OMContainer)
+      */
+    public void setParent(OMContainer parentElement) {
+        element.setParent(parentElement);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#getAttribute(java.lang.String)
+      */
+    public String getAttribute(String name) {
+        return element.getAttribute(name);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#getAttributeNode(java.lang.String)
+      */
+    public Attr getAttributeNode(String name) {
+        return element.getAttributeNode(name);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#getAttributeNodeNS(java.lang.String, java.lang.String)
+      */
+    public Attr getAttributeNodeNS(String namespaceURI, String localName) {
+        return element.getAttributeNodeNS(namespaceURI, localName);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#getAttributeNS(java.lang.String, java.lang.String)
+      */
+    public String getAttributeNS(String namespaceURI, String localName) {
+        return element.getAttributeNS(namespaceURI, localName);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#getElementsByTagName(java.lang.String)
+      */
+    public NodeList getElementsByTagName(String name) {
+        return element.getElementsByTagName(name);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#getElementsByTagNameNS(java.lang.String, java.lang.String)
+      */
+    public NodeList getElementsByTagNameNS(String namespaceURI, String localName) {
+        return element.getElementsByTagNameNS(namespaceURI, localName);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#getTagName()
+      */
+    public String getTagName() {
+        return element.getTagName();
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#hasAttribute(java.lang.String)
+      */
+    public boolean hasAttribute(String name) {
+        return element.hasAttribute(name);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#hasAttributeNS(java.lang.String, java.lang.String)
+      */
+    public boolean hasAttributeNS(String namespaceURI, String localName) {
+        return element.hasAttributeNS(namespaceURI, localName);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#removeAttribute(java.lang.String)
+      */
+    public void removeAttribute(String name) throws DOMException {
+        element.removeAttribute(name);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#removeAttributeNode(org.w3c.dom.Attr)
+      */
+    public Attr removeAttributeNode(Attr attr) throws DOMException {
+        return element.removeAttributeNode(attr);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#removeAttributeNS(java.lang.String, java.lang.String)
+      */
+    public void removeAttributeNS(String namespaceURI, String localName) throws DOMException {
+        element.removeAttributeNS(namespaceURI, localName);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#setAttribute(java.lang.String, java.lang.String)
+      */
+    public void setAttribute(String name, String value) throws DOMException {
+        element.setAttribute(name, value);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#setAttributeNode(org.w3c.dom.Attr)
+      */
+    public Attr setAttributeNode(Attr attr) throws DOMException {
+        return element.setAttributeNode(attr);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#setAttributeNodeNS(org.w3c.dom.Attr)
+      */
+    public Attr setAttributeNodeNS(Attr attr) throws DOMException {
+        return element.setAttributeNodeNS(attr);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Element#setAttributeNS(java.lang.String, java.lang.String, java.lang.String)
+      */
+    public void setAttributeNS(String namespaceURI,
+                               String qualifiedName, String value) throws DOMException {
+        element.setAttributeNS(namespaceURI, qualifiedName, value);
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Node#getNodeName()
+      */
+    public String getNodeName() {
+        return element.getNodeName();
+    }
+
+    /* (non-Javadoc)
+      * @see org.w3c.dom.Node#getNodeType()
+      */
+    public short getNodeType() {
+        return Node.ELEMENT_NODE;
+    }
+
+    public ElementImpl getElement() {
+        return element;
+    }
+
+    /**
+     * Returns the parent element of this <code>Node</code> object.
+     * This method can throw an <code>UnsupportedOperationException</code>
+     * if the tree is not kept in memory.
+     *
+     * @return the <code>SOAPElement</code> object that is the parent of
+     *         this <code>Node</code> object or <code>null</code> if this
+     *         <code>Node</code> object is root
+     * @throws UnsupportedOperationException if the whole tree is not kept in memory
+     * @see #setParentElement(javax.xml.soap.SOAPElement) setParentElement(javax.xml.soap.SOAPElement)
+     */
+    public SOAPElement getParentElement() {
+        if (this.parentElement == null) {
+            return (SOAPElement) toSAAJNode(element.getParentNode());
+        }
+        return this.parentElement;
+    }
+
+    public void setParentElement(SOAPElement parent) throws SOAPException {
+        this.parentElement = parent;
+        this.element.setParent(((SOAPElementImpl)parent).element);
+    }
+
+    /**
+     * Find the Document that this Node belongs to (the document in
+     * whose context the Node was created). The Node may or may not
+     */
+    public Document getOwnerDocument() {
+        return element.getOwnerDocument();
+    }
+
+    /**
+     * Returns the the value of the immediate child of this <code>Node</code>
+     * object if a child exists and its value is text.
+     *
+     * @return a <code>String</code> with the text of the immediate child of
+     *         this <code>Node</code> object if (1) there is a child and
+     *         (2) the child is a <code>Text</code> object;
+     *         <code>null</code> otherwise
+     */
+    public String getValue() {
+        if (element.getType() == OMNode.TEXT_NODE) {
+            return element.getText();
+        } else if (element.getType() == OMNode.ELEMENT_NODE) {
+            final OMNode firstOMChild = element.getFirstOMChild();
+            if (firstOMChild instanceof TextImpl) {
+                return ((TextImpl) firstOMChild).getData();
+            } else if (firstOMChild instanceof SOAPElementImpl) {
+                return ((SOAPElementImpl) firstOMChild).getValue();
+            }
+        }
+        return null;
+    }
+
+
+    public org.w3c.dom.Node getFirstChild() {
+        return toSAAJNode(element.getFirstChild());
+    }
+
+    /**
+     * Method getLastChild
+     *
+     * @see org.w3c.dom.Node#getLastChild()
+     */
+    public org.w3c.dom.Node getLastChild() {
+        return toSAAJNode(element.getLastChild());
+    }
+
+    public Node getParentNode() {
+        return getParentElement();
+    }
+
+    /**
+     * dom Node method
+     */
+    public org.w3c.dom.Node getNextSibling() {
+        return toSAAJNode(element.getNextSibling());
+    }
+
+    public Node getPreviousSibling() {
+        return toSAAJNode(element.getPreviousSibling());
+    }
+
+    public NodeList getChildNodes() {
+        NodeList childNodes = element.getChildNodes();
+        NodeListImpl nodes = new NodeListImpl();
+
+        for (int i = 0; i < childNodes.getLength(); i++) {
+            nodes.addNode(toSAAJNode(childNodes.item(i)));
+        }
+        return nodes;
+    }
+
+    public boolean hasChildNodes() {
+        return element.hasChildNodes();
+    }
+
+    /**
+     * If this is a Text node then this method will set its value, otherwise it
+     * sets the value of the immediate (Text) child of this node. The value of
+     * the immediate child of this node can be set only if, there is one child
+     * node and that node is a Text node, or if there are no children in which
+     * case a child Text node will be created.
+     *
+     * @param value the text to set
+     * @throws IllegalStateException if the node is not a Text  node and
+     *                               either has more than one child node or has a child node that
+     *                               is not a Text node
+     */
+    public void setValue(String value) {
+        OMNode firstChild = element.getFirstOMChild();
+        if (firstChild == null) {
+            try {
+                this.addTextNode(value);
+            } catch (SOAPException e) {
+                throw new RuntimeException("Cannot add text node", e);
+            }
+        } else if (((org.w3c.dom.Node) firstChild).getNodeType() == javax.xml.soap.Node.TEXT_NODE
+                && firstChild.getNextOMSibling() == null) {
+            ((org.w3c.dom.Text) firstChild).setData(value);
+        } else {
+            throw new IllegalStateException("This node is not a Text  node and " +
+                                            "either has more than one child node or has a child " +
+                                            "node that is not a Text node");
+        }
+    }
+
+    public void detachNode() {
+        this.detach();
+    }
+
+    public OMNode detach() {
+        OMNode omNode = this.element.detach();
+        this.parentElement = null;
+        return omNode;
+    }
+
+    /**
+     * Returns the collection of attributes associated with this node, or null
+     * if none. At this writing, Element is the only type of node which will
+     * ever have attributes.
+     *
+     * @see org.apache.axiom.om.impl.dom.ElementImpl
+     */
+    public NamedNodeMap getAttributes() {
+        return element.getAttributes();
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java
new file mode 100644
index 0000000..6861379
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java
@@ -0,0 +1,215 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.om.impl.dom.DocumentImpl;
+import org.apache.axiom.om.impl.dom.NodeImpl;
+import org.apache.axiom.om.impl.dom.TextImpl;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11BodyImpl;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11HeaderImpl;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+
+/**
+ *
+ */
+public class SOAPEnvelopeImpl extends SOAPElementImpl implements javax.xml.soap.SOAPEnvelope {
+
+    private org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl omSOAPEnvelope;
+
+    public SOAPEnvelopeImpl(final org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl envelope) {
+        super(envelope);
+        omSOAPEnvelope = envelope;
+    }
+
+    public void setOwnerDocument(Document document) {
+        super.setOwnerDocument((DocumentImpl) document);
+    }
+
+    public org.apache.axiom.soap.SOAPEnvelope getOMEnvelope() {
+        return omSOAPEnvelope;
+    }
+
+    /**
+     * Creates a new <CODE>Name</CODE> object initialized with the
+     * given local name, namespace prefix, and namespace URI.
+     * <p/>
+     * <P>This factory method creates <CODE>Name</CODE> objects
+     * for use in the SOAP/XML document.
+     *
+     * @param localName a <CODE>String</CODE> giving
+     *                  the local name
+     * @param prefix    a <CODE>String</CODE> giving
+     *                  the prefix of the namespace
+     * @param uri       a <CODE>String</CODE> giving the
+     *                  URI of the namespace
+     * @return a <CODE>Name</CODE> object initialized with the given
+     *         local name, namespace prefix, and namespace URI
+     * @throws javax.xml.soap.SOAPException if there is a SOAP error
+     */
+    public Name createName(String localName, String prefix, String uri) throws SOAPException {
+        try {
+            return new PrefixedQName(uri, localName, prefix);
+        } catch (Exception e) {
+            throw new SOAPException(e);
+        }
+    }
+
+    /**
+     * Creates a new <CODE>Name</CODE> object initialized with the
+     * given local name.
+     * <p/>
+     * <P>This factory method creates <CODE>Name</CODE> objects
+     * for use in the SOAP/XML document.
+     *
+     * @param localName a <CODE>String</CODE> giving
+     *                  the local name
+     * @return a <CODE>Name</CODE> object initialized with the given
+     *         local name
+     * @throws javax.xml.soap.SOAPException if there is a SOAP error
+     */
+    public Name createName(String localName) throws SOAPException {
+        try {
+            return new PrefixedQName(null, localName, null);
+        } catch (Exception e) {
+            throw new SOAPException(e);
+        }
+    }
+
+    /**
+     * Returns the <CODE>SOAPHeader</CODE> object for this <CODE>
+     * SOAPEnvelope</CODE> object.
+     * <p/>
+     * <P>A new <CODE>SOAPMessage</CODE> object is by default
+     * created with a <CODE>SOAPEnvelope</CODE> object that
+     * contains an empty <CODE>SOAPHeader</CODE> object. As a
+     * result, the method <CODE>getHeader</CODE> will always
+     * return a <CODE>SOAPHeader</CODE> object unless the header
+     * has been removed and a new one has not been added.
+     *
+     * @return the <CODE>SOAPHeader</CODE> object or <CODE>
+     *         null</CODE> if there is none
+     * @throws javax.xml.soap.SOAPException if there is a problem
+     *                                      obtaining the <CODE>SOAPHeader</CODE> object
+     */
+    public SOAPHeader getHeader() throws SOAPException {
+        return (SOAPHeader) toSAAJNode((org.w3c.dom.Node) omSOAPEnvelope.getHeader());
+    }
+
+    /**
+     * Returns the <CODE>SOAPBody</CODE> object associated with
+     * this <CODE>SOAPEnvelope</CODE> object.
+     * <p/>
+     * <P>A new <CODE>SOAPMessage</CODE> object is by default
+     * created with a <CODE>SOAPEnvelope</CODE> object that
+     * contains an empty <CODE>SOAPBody</CODE> object. As a
+     * result, the method <CODE>getBody</CODE> will always return
+     * a <CODE>SOAPBody</CODE> object unless the body has been
+     * removed and a new one has not been added.
+     *
+     * @return the <CODE>SOAPBody</CODE> object for this <CODE>
+     *         SOAPEnvelope</CODE> object or <CODE>null</CODE> if there
+     *         is none
+     * @throws javax.xml.soap.SOAPException if there is a problem
+     *                                      obtaining the <CODE>SOAPBody</CODE> object
+     */
+    public SOAPBody getBody() throws SOAPException {
+        return (SOAPBody) toSAAJNode((org.w3c.dom.Node) omSOAPEnvelope.getBody());
+    }
+
+    /**
+     * Creates a <CODE>SOAPHeader</CODE> object and sets it as the
+     * <CODE>SOAPHeader</CODE> object for this <CODE>
+     * SOAPEnvelope</CODE> object.
+     * <p/>
+     * <P>It is illegal to add a header when the envelope already
+     * contains a header. Therefore, this method should be called
+     * only after the existing header has been removed.
+     *
+     * @return the new <CODE>SOAPHeader</CODE> object
+     * @throws javax.xml.soap.SOAPException if this <CODE>
+     *                                      SOAPEnvelope</CODE> object already contains a valid
+     *                                      <CODE>SOAPHeader</CODE> object
+     */
+    public SOAPHeader addHeader() throws SOAPException {
+        org.apache.axiom.soap.SOAPHeader header = omSOAPEnvelope.getHeader();
+        if (header == null) {
+            header = new SOAP11HeaderImpl(omSOAPEnvelope,
+                    (SOAPFactory) this.element.getOMFactory());
+            SOAPHeaderImpl saajSOAPHeader = new SOAPHeaderImpl(header);
+            saajSOAPHeader.setParentElement(this);
+            ((NodeImpl) omSOAPEnvelope.getHeader()).setUserData(SAAJ_NODE, saajSOAPHeader, null);
+            return saajSOAPHeader;
+        } else {
+            throw new SOAPException("Header already present, can't set header again without " +
+                                    "deleting the existing header. " +
+                                    "Use getHeader() method and detach the header instead.");
+        }
+    }
+
+    /**
+     * Creates a <CODE>SOAPBody</CODE> object and sets it as the
+     * <CODE>SOAPBody</CODE> object for this <CODE>
+     * SOAPEnvelope</CODE> object.
+     * <p/>
+     * <P>It is illegal to add a body when the envelope already
+     * contains a body. Therefore, this method should be called
+     * only after the existing body has been removed.
+     *
+     * @return the new <CODE>SOAPBody</CODE> object
+     * @throws javax.xml.soap.SOAPException if this <CODE>
+     *                                      SOAPEnvelope</CODE> object already contains a valid
+     *                                      <CODE>SOAPBody</CODE> object
+     */
+    public SOAPBody addBody() throws SOAPException {
+        org.apache.axiom.soap.SOAPBody body = omSOAPEnvelope.getBody();
+        if (body == null) {
+            body = new SOAP11BodyImpl(omSOAPEnvelope, (SOAPFactory)this.element.getOMFactory());
+            SOAPBodyImpl saajSOAPBody = new SOAPBodyImpl(body);
+            saajSOAPBody.setParentElement(this);
+            ((NodeImpl) omSOAPEnvelope.getBody()).setUserData(SAAJ_NODE, saajSOAPBody, null);
+            return saajSOAPBody;
+        } else {
+            throw new SOAPException("Body already present, can't set body again without " +
+                                    "deleting the existing body. Use getBody() method instead.");
+        }
+    }
+
+    public SOAPElement addTextNode(String text) throws SOAPException {
+
+        //TODO: Method implementation
+        Node firstChild = element.getFirstChild();
+        if (firstChild instanceof org.w3c.dom.Text) {
+            ((org.w3c.dom.Text) firstChild).setData(text);
+        } else {
+
+            // Else this is a header
+            TextImpl doomText = new TextImpl(text, this.element.getOMFactory());
+            doomText.setNextOMSibling((NodeImpl) firstChild);
+            doomText.setPreviousOMSibling(null);
+            element.setFirstChild(doomText);
+            ((NodeImpl) firstChild).setPreviousOMSibling(doomText);
+        }
+        return this;
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
new file mode 100644
index 0000000..4a5557c
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
@@ -0,0 +1,142 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
+
+/**
+ * 
+ */
+public class SOAPFactoryImpl extends SOAPFactory {
+
+    /**
+     * Create a <code>SOAPElement</code> object initialized with the
+     * given <code>Name</code> object.
+     *
+     * @param name a <code>Name</code> object with the XML name for
+     *             the new element
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     * @throws javax.xml.soap.SOAPException if there is an error in creating the
+     *                                      <code>SOAPElement</code> object
+     */
+    public SOAPElement createElement(Name name) throws SOAPException {
+        String localName = name.getLocalName();
+        String prefix = name.getPrefix();
+        String uri = name.getURI();
+        OMElement omElement = DOOMAbstractFactory.getOMFactory().createOMElement(localName, uri, prefix);
+        return new SOAPElementImpl((ElementImpl) omElement);
+    }
+
+    /**
+     * Create a <code>SOAPElement</code> object initialized with the
+     * given local name.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *                  the new element
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     * @throws javax.xml.soap.SOAPException if there is an error in creating the
+     *                                      <code>SOAPElement</code> object
+     */
+    public SOAPElement createElement(String localName) throws SOAPException {
+        OMDOMFactory omdomFactory = (OMDOMFactory) DOOMAbstractFactory.getOMFactory();
+
+        OMNamespace ns = omdomFactory.createOMNamespace(null, null);
+        OMElement omElement = omdomFactory.createOMElement(localName, ns);
+        return new SOAPElementImpl((ElementImpl) omElement);
+    }
+
+    /**
+     * Create a new <code>SOAPElement</code> object with the given
+     * local name, prefix and uri.
+     *
+     * @param localName a <code>String</code> giving the local name
+     *                  for the new element
+     * @param prefix    the prefix for this <code>SOAPElement</code>
+     * @param uri       a <code>String</code> giving the URI of the
+     *                  namespace to which the new element belongs
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     * @throws javax.xml.soap.SOAPException if there is an error in creating the
+     *                                      <code>SOAPElement</code> object
+     */
+    public SOAPElement createElement(String localName, String prefix, String uri) throws SOAPException {
+        OMElement omElement = DOOMAbstractFactory.getOMFactory().createOMElement(localName, uri, prefix);
+        return new SOAPElementImpl((ElementImpl) omElement);
+    }
+
+    /**
+     * Creates a new <code>Detail</code> object which serves as a container
+     * for <code>DetailEntry</code> objects.
+     * <p/>
+     * This factory method creates <code>Detail</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPFault</code>
+     * abstraction.
+     *
+     * @return a <code>Detail</code> object
+     * @throws javax.xml.soap.SOAPException if there is a SOAP error
+     */
+    public Detail createDetail() throws SOAPException { 
+        return new DetailImpl(DOOMAbstractFactory.getSOAP11Factory().createSOAPFaultDetail());
+    }
+
+    /**
+     * Creates a new <code>Name</code> object initialized with the
+     * given local name, namespace prefix, and namespace URI.
+     * <p/>
+     * This factory method creates <code>Name</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPEnvelope</code>
+     * abstraction.
+     *
+     * @param localName a <code>String</code> giving the local name
+     * @param prefix    a <code>String</code> giving the prefix of the namespace
+     * @param uri       a <code>String</code> giving the URI of the namespace
+     * @return a <code>Name</code> object initialized with the given
+     *         local name, namespace prefix, and namespace URI
+     * @throws javax.xml.soap.SOAPException if there is a SOAP error
+     */
+    public Name createName(String localName, String prefix, String uri) throws SOAPException {
+        return new PrefixedQName(uri, localName, prefix);
+    }
+
+    /**
+     * Creates a new <code>Name</code> object initialized with the
+     * given local name.
+     * <p/>
+     * This factory method creates <code>Name</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPEnvelope</code>
+     * abstraction.
+     *
+     * @param localName a <code>String</code> giving the local name
+     * @return a <code>Name</code> object initialized with the given
+     *         local name
+     * @throws javax.xml.soap.SOAPException if there is a SOAP error
+     */
+    public Name createName(String localName) throws SOAPException {
+        return new PrefixedQName(null, localName, null);
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultElementImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultElementImpl.java
new file mode 100644
index 0000000..752c71a
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultElementImpl.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.impl.dom.ElementImpl;
+
+import javax.xml.soap.SOAPFaultElement;
+
+public class SOAPFaultElementImpl extends SOAPElementImpl implements
+                                                          SOAPFaultElement {
+
+    /**
+     * @param element
+     */
+    public SOAPFaultElementImpl(ElementImpl element) {
+        super(element);
+    }
+
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
new file mode 100644
index 0000000..fc7554b
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
@@ -0,0 +1,265 @@
+/*
+* Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPFaultCode;
+import org.apache.axiom.soap.SOAPFaultReason;
+import org.apache.axiom.soap.SOAPFaultRole;
+import org.apache.axiom.soap.SOAPFaultText;
+import org.apache.axiom.soap.SOAPFaultValue;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.impl.dom.NodeImpl;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11FaultDetailImpl;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11FaultReasonImpl;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11FaultRoleImpl;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11FaultTextImpl;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Detail;
+import javax.xml.soap.Name;
+import javax.xml.soap.Node;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFault;
+import javax.xml.soap.SOAPFaultElement;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Locale;
+
+public class SOAPFaultImpl extends SOAPBodyElementImpl implements SOAPFault {
+
+    protected org.apache.axiom.soap.SOAPFault fault;
+    private boolean isDetailAdded;
+    private Name faultCodeName;
+    private Locale faultReasonLocale;
+
+    /**
+     * @param fault
+     */
+    public SOAPFaultImpl(org.apache.axiom.soap.SOAPFault fault) {
+        super((ElementImpl) fault);
+        this.fault = fault;
+    }
+
+    /**
+     * Sets this <CODE>SOAPFault</CODE> object with the given
+     * fault code.
+     * <p/>
+     * <P>Fault codes, which given information about the fault,
+     * are defined in the SOAP 1.1 specification.</P>
+     *
+     * @param faultCode a <CODE>String</CODE> giving
+     *                  the fault code to be set; must be one of the fault codes
+     *                  defined in the SOAP 1.1 specification
+     * @throws SOAPException if there was an error in
+     *                       adding the <CODE>faultCode</CODE> to the underlying XML
+     *                       tree.
+     * @see #getFaultCode() getFaultCode()
+     */
+    public void setFaultCode(String faultCode) throws SOAPException {
+        org.apache.axiom.soap.SOAPFactory soapFactory = DOOMAbstractFactory.getSOAP11Factory();
+        SOAPFaultCode fCode = soapFactory.createSOAPFaultCode(fault);
+        SOAPFaultValue fValue = soapFactory.createSOAPFaultValue(fCode);
+        fCode.setValue(fValue);
+        fValue.setText(faultCode);
+
+        this.fault.setCode(fCode);
+    }
+
+    /**
+     * Gets the fault code for this <CODE>SOAPFault</CODE>
+     * object.
+     *
+     * @return a <CODE>String</CODE> with the fault code
+     * @see #setFaultCode(java.lang.String) setFaultCode(java.lang.String)
+     */
+    public String getFaultCode() {
+        if (fault != null && fault.getCode() != null && fault.getCode().getValue() != null) {
+            return fault.getCode().getValue().getText();
+        }
+        return null;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#setFaultActor(java.lang.String)
+      */
+    public void setFaultActor(String faultActor) throws SOAPException {
+        if (this.fault.getRole() == null) {
+            SOAP11FaultRoleImpl faultRoleImpl = new SOAP11FaultRoleImpl(
+                    this.fault, (SOAPFactory) this.element.getOMFactory());
+            faultRoleImpl.setRoleValue(faultActor);
+            this.fault.setRole(faultRoleImpl);
+        } else {
+            SOAPFaultRole role = this.fault.getRole();
+            role.setRoleValue(faultActor);
+        }
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#getFaultActor()
+      */
+    public String getFaultActor() {
+        if (this.fault.getRole() != null) {
+            return this.fault.getRole().getRoleValue();
+        }
+        return null;
+    }
+
+    /**
+     * Sets the fault string for this <CODE>SOAPFault</CODE>
+     * object to the given string.
+     *
+     * @param faultString a <CODE>String</CODE>
+     *                    giving an explanation of the fault
+     * @throws SOAPException if there was an error in
+     *                       adding the <CODE>faultString</CODE> to the underlying XML
+     *                       tree.
+     * @see #getFaultString() getFaultString()
+     */
+    public void setFaultString(String faultString) throws SOAPException {
+        if (this.fault.getReason() != null) {
+            SOAPFaultReason reason = this.fault.getReason();
+            if (reason.getFirstSOAPText() != null) {
+                reason.getFirstSOAPText().getFirstOMChild().detach();
+                reason.getFirstSOAPText().setText(faultString);
+            } else {
+                SOAPFaultText text = new SOAP11FaultTextImpl(reason,
+                        (SOAPFactory) this.element.getOMFactory());
+                text.setText(faultString);
+                reason.addSOAPText(text);
+            }
+        } else {
+            org.apache.axiom.soap.SOAPFactory soapFactory =
+                    DOOMAbstractFactory.getSOAP11Factory();
+            SOAPFaultReason fReason = soapFactory.createSOAPFaultReason(fault);
+            SOAPFaultText fText = soapFactory.createSOAPFaultText(fReason);
+            fText.setText(faultString);
+        }
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#getFaultString()
+      */
+    public String getFaultString() {
+        if (this.fault.getReason() != null && this.fault.getReason().getFirstSOAPText() != null) {
+            return this.fault.getReason().getFirstSOAPText().getText();
+        }
+        return null;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#getDetail()
+      */
+    public Detail getDetail() {
+        return (Detail) toSAAJNode((org.w3c.dom.Node) fault.getDetail());
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#setFaultCode(javax.xml.soap.Name)
+      */
+    public void setFaultCode(Name name) throws SOAPException {
+        this.faultCodeName = name;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#addDetail()
+      */
+    public Detail addDetail() throws SOAPException {
+        if (isDetailAdded) {
+            throw new SOAPException("This SOAPFault already contains a Detail element. " +
+                                    "Please remove the existing Detail element before " +
+                                    "calling addDetail()");
+        }
+        SOAP11FaultDetailImpl omDetail = new SOAP11FaultDetailImpl(this.fault,
+                (SOAPFactory) this.element.getOMFactory());
+        Detail saajDetail = new DetailImpl(omDetail);
+        ((NodeImpl) fault.getDetail()).setUserData(SAAJ_NODE, saajDetail, null);
+        isDetailAdded = true;
+        return saajDetail;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#getFaultCodeAsName()
+      */
+    public Name getFaultCodeAsName() {
+        return this.faultCodeName;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#setFaultString(java.lang.String, java.util.Locale)
+      */
+    public void setFaultString(String faultString, Locale locale) throws SOAPException {
+        if (this.fault.getReason() != null) {
+            SOAPFaultReason reason = this.fault.getReason();
+            if (reason.getFirstSOAPText() != null) {
+                reason.getFirstSOAPText().setText(faultString);
+                reason.getFirstSOAPText().setLang(locale.getLanguage());
+            } else {
+                SOAPFaultText text = new SOAP11FaultTextImpl(reason,
+                        (SOAPFactory) this.element.getOMFactory());
+                text.setText(faultString);
+                text.setLang(locale.getLanguage());
+                reason.addSOAPText(text);
+            }
+        } else {
+            SOAPFaultReason reason = new SOAP11FaultReasonImpl(this.fault,
+                    (SOAPFactory) this.element.getOMFactory());
+            SOAPFaultText text = new SOAP11FaultTextImpl(reason,
+                    (SOAPFactory) this.element.getOMFactory());
+            text.setText(faultString);
+            text.setLang(locale.getLanguage());
+            reason.addSOAPText(text);
+            this.fault.setReason(reason);
+        }
+        this.faultReasonLocale = locale;
+    }
+
+    /* (non-Javadoc)
+      * @see javax.xml.soap.SOAPFault#getFaultStringLocale()
+      */
+    public Locale getFaultStringLocale() {
+        return this.faultReasonLocale;
+    }
+
+    public Iterator getChildElements(Name name) {
+        QName qName = new QName(name.getURI(), name.getLocalName());
+        return getChildren(element.getChildrenWithName(qName));
+    }
+
+    public Iterator getChildElements() {
+        return getChildren(element.getChildren());
+    }
+
+    private Iterator getChildren(Iterator childIter) {
+        Collection childElements = new ArrayList();
+        while (childIter.hasNext()) {
+            org.w3c.dom.Node domNode = (org.w3c.dom.Node) childIter.next();
+            Node saajNode = toSAAJNode(domNode);
+            if (!(saajNode instanceof SOAPFaultElement)) {
+                // silently replace node, as per saaj 1.2 spec
+                SOAPFaultElement bodyEle = new SOAPFaultElementImpl((ElementImpl) domNode);
+                ((NodeImpl) domNode).setUserData(SAAJ_NODE, bodyEle, null);
+                childElements.add(bodyEle);
+            } else {
+                childElements.add(saajNode);
+            }
+        }
+        return childElements.iterator();
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderElementImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderElementImpl.java
new file mode 100644
index 0000000..0038678
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderElementImpl.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.om.impl.dom.ElementImpl;
+
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+
+public class SOAPHeaderElementImpl extends SOAPElementImpl implements SOAPHeaderElement {
+
+    private SOAPHeaderBlock headerElem;
+
+    /**
+     * @param element
+     */
+    public SOAPHeaderElementImpl(SOAPHeaderBlock element) {
+        super((ElementImpl) element);
+        this.headerElem = element;
+    }
+
+    /**
+     * Sets the actor associated with this <CODE>
+     * SOAPHeaderElement</CODE> object to the specified actor. The
+     * default value of an actor is: <CODE>
+     * SOAPConstants.URI_SOAP_ACTOR_NEXT</CODE>
+     *
+     * @param actorURI a <CODE>String</CODE> giving
+     *                 the URI of the actor to set
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there is a problem in setting the actor.
+     * @see #getActor() getActor()
+     */
+    public void setActor(String actorURI) {
+        this.headerElem.setRole(actorURI);
+    }
+
+    /**
+     * Returns the uri of the actor associated with this <CODE>
+     * SOAPHeaderElement</CODE> object.
+     *
+     * @return a <CODE>String</CODE> giving the URI of the
+     *         actor
+     * @see #setActor(java.lang.String) setActor(java.lang.String)
+     */
+    public String getActor() {
+        return this.headerElem.getRole();
+    }
+
+    /**
+     * Sets the mustUnderstand attribute for this <CODE>
+     * SOAPHeaderElement</CODE> object to be on or off.
+     * <p/>
+     * <P>If the mustUnderstand attribute is on, the actor who
+     * receives the <CODE>SOAPHeaderElement</CODE> must process it
+     * correctly. This ensures, for example, that if the <CODE>
+     * SOAPHeaderElement</CODE> object modifies the message, that
+     * the message is being modified correctly.</P>
+     *
+     * @param mustUnderstand <CODE>true</CODE> to
+     *                       set the mustUnderstand attribute on; <CODE>false</CODE>
+     *                       to turn if off
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there is a problem in setting the actor.
+     * @see #getMustUnderstand() getMustUnderstand()
+     */
+    public void setMustUnderstand(boolean mustUnderstand) {
+        this.headerElem.setMustUnderstand(mustUnderstand);
+    }
+
+    /**
+     * Returns whether the mustUnderstand attribute for this
+     * <CODE>SOAPHeaderElement</CODE> object is turned on.
+     *
+     * @return <CODE>true</CODE> if the mustUnderstand attribute of
+     *         this <CODE>SOAPHeaderElement</CODE> object is turned on;
+     *         <CODE>false</CODE> otherwise
+     */
+    public boolean getMustUnderstand() {
+        return this.headerElem.getMustUnderstand();
+    }
+
+    public void setParentElement(SOAPElement parent) throws SOAPException {
+        if (!(parent instanceof SOAPHeader)) {
+            throw new IllegalArgumentException("Parent is not a SOAPHeader");
+        }
+        super.setParentElement(parent);
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java
new file mode 100644
index 0000000..25a59d2
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java
@@ -0,0 +1,282 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.om.impl.dom.ElementImpl;
+import org.apache.axiom.om.impl.dom.NamespaceImpl;
+import org.apache.axiom.om.impl.dom.NodeImpl;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11HeaderBlockImpl;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.Node;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+public class SOAPHeaderImpl extends SOAPElementImpl implements SOAPHeader {
+
+    private org.apache.axiom.soap.SOAPHeader omSOAPHeader;
+
+    /**
+     * Constructor
+     *
+     * @param header
+     */
+    public SOAPHeaderImpl(org.apache.axiom.soap.SOAPHeader header) {
+        super((ElementImpl) header);
+        omSOAPHeader = header;
+    }
+
+    /* (non-Javadoc)
+    * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String)
+    */
+    public SOAPElement addChildElement(String localName) throws SOAPException {
+        return addHeaderElement(new PrefixedQName(null, localName, null));
+    }
+
+    /* (non-Javadoc)
+    * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String, java.lang.String)
+    */
+    public SOAPElement addChildElement(String localName, String prefix) throws SOAPException {
+        String namespaceURI = getNamespaceURI(prefix);
+
+        if (namespaceURI == null) {
+            throw new SOAPException("Namespace not declared for the give prefix: " + prefix);
+        }
+        return addChildElement(localName, prefix, namespaceURI);
+    }
+
+    /* (non-Javadoc)
+    * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String, java.lang.String, java.lang.String)
+    */
+    public SOAPElement addChildElement(String localName, String prefix, String uri) throws SOAPException {
+        OMNamespace ns = new NamespaceImpl(uri, prefix);
+        SOAPHeaderBlock headerBlock =
+                new SOAP11HeaderBlockImpl(localName, ns, omSOAPHeader, (SOAPFactory)this.element.getOMFactory());
+        SOAPHeaderElementImpl soapHeaderElement = new SOAPHeaderElementImpl(headerBlock);
+        element.setUserData(SAAJ_NODE, this, null);
+        soapHeaderElement.element.setUserData(SAAJ_NODE, soapHeaderElement, null);
+        soapHeaderElement.setParentElement(this);
+        return soapHeaderElement;
+    }
+
+    /* (non-Javadoc)
+    * @see javax.xml.soap.SOAPElement#addChildElement(javax.xml.soap.Name)
+    */
+    public SOAPElement addChildElement(Name name) throws SOAPException {
+        return addHeaderElement(name);
+    }
+
+    /* (non-Javadoc)
+    * @see javax.xml.soap.SOAPElement#addChildElement(javax.xml.soap.SOAPElement)
+    */
+    public SOAPElement addChildElement(SOAPElement soapElement) throws SOAPException {
+        OMNamespace ns = new NamespaceImpl(soapElement.getNamespaceURI(), 
+                soapElement.getPrefix());
+        SOAPHeaderBlock headerBlock =
+                new SOAP11HeaderBlockImpl(soapElement.getLocalName(), ns, 
+                        omSOAPHeader,
+                        (SOAPFactory)this.element.getOMFactory());
+        SOAPHeaderElementImpl soapHeaderElement = new SOAPHeaderElementImpl(headerBlock);
+        element.setUserData(SAAJ_NODE, this, null);
+        soapHeaderElement.element.setUserData(SAAJ_NODE, soapHeaderElement, null);
+        soapHeaderElement.setParentElement(this);
+        return soapHeaderElement;
+    }
+
+    /**
+     * Creates a new <CODE>SOAPHeaderElement</CODE> object
+     * initialized with the specified name and adds it to this
+     * <CODE>SOAPHeader</CODE> object.
+     *
+     * @param name a <CODE>Name</CODE> object with
+     *             the name of the new <CODE>SOAPHeaderElement</CODE>
+     *             object
+     * @return the new <CODE>SOAPHeaderElement</CODE> object that
+     *         was inserted into this <CODE>SOAPHeader</CODE>
+     *         object
+     * @throws SOAPException if a SOAP error occurs
+     */
+    public SOAPHeaderElement addHeaderElement(Name name) throws SOAPException {
+        OMNamespace ns = new NamespaceImpl(name.getURI(), name.getPrefix());
+        SOAPHeaderBlock headerBlock =
+                new SOAP11HeaderBlockImpl(name.getLocalName(), ns, omSOAPHeader,
+                        (SOAPFactory)this.element.getOMFactory());
+        SOAPHeaderElementImpl soapHeaderElement = new SOAPHeaderElementImpl(headerBlock);
+        element.setUserData(SAAJ_NODE, this, null);
+        soapHeaderElement.element.setUserData(SAAJ_NODE, soapHeaderElement, null);
+        soapHeaderElement.setParentElement(this);
+        return soapHeaderElement;
+    }
+
+    /**
+     * Returns a list of all the <CODE>SOAPHeaderElement</CODE>
+     * objects in this <CODE>SOAPHeader</CODE> object that have the
+     * the specified actor. An actor is a global attribute that
+     * indicates the intermediate parties to whom the message should
+     * be sent. An actor receives the message and then sends it to
+     * the next actor. The default actor is the ultimate intended
+     * recipient for the message, so if no actor attribute is
+     * included in a <CODE>SOAPHeader</CODE> object, the message is
+     * sent to its ultimate destination.
+     *
+     * @param actor a <CODE>String</CODE> giving the
+     *              URI of the actor for which to search
+     * @return an <CODE>Iterator</CODE> object over all the <CODE>
+     *         SOAPHeaderElement</CODE> objects that contain the
+     *         specified actor
+     * @see #extractHeaderElements(java.lang.String) extractHeaderElements(java.lang.String)
+     */
+    public Iterator examineHeaderElements(String actor) {
+        Collection elements = new ArrayList();
+        for (Iterator iterator = omSOAPHeader.examineHeaderBlocks(actor); iterator.hasNext();) {
+            elements.add(((NodeImpl) iterator.next()).getUserData(SAAJ_NODE));
+        }
+        return elements.iterator();
+    }
+
+    /**
+     * Returns a list of all the <CODE>SOAPHeaderElement</CODE>
+     * objects in this <CODE>SOAPHeader</CODE> object that have
+     * the the specified actor and detaches them from this <CODE>
+     * SOAPHeader</CODE> object.
+     * <p/>
+     * <P>This method allows an actor to process only the parts of
+     * the <CODE>SOAPHeader</CODE> object that apply to it and to
+     * remove them before passing the message on to the next
+     * actor.
+     *
+     * @param actor a <CODE>String</CODE> giving the
+     *              URI of the actor for which to search
+     * @return an <CODE>Iterator</CODE> object over all the <CODE>
+     *         SOAPHeaderElement</CODE> objects that contain the
+     *         specified actor
+     * @see #examineHeaderElements(java.lang.String) examineHeaderElements(java.lang.String)
+     */
+    public Iterator extractHeaderElements(String actor) {
+        Collection elements = new ArrayList();
+        for (Iterator iterator = omSOAPHeader.extractHeaderBlocks(actor); iterator.hasNext();) {
+            elements.add(((NodeImpl) iterator.next()).getUserData(SAAJ_NODE));
+        }
+        return elements.iterator();
+    }
+
+    /**
+     * Returns an <code>Iterator</code> over all the
+     * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader</code>
+     * object that have the specified actor and that have a MustUnderstand
+     * attribute whose value is equivalent to <code>true</code>.
+     *
+     * @param actor a <code>String</code> giving the URI of the actor for which
+     *              to search
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects that contain the
+     *         specified actor and are marked as MustUnderstand
+     */
+    public Iterator examineMustUnderstandHeaderElements(String actor) {
+        Collection elements = new ArrayList();
+        for (Iterator iterator = omSOAPHeader.examineMustUnderstandHeaderBlocks(actor);
+             iterator.hasNext();) {
+            elements.add(((NodeImpl) iterator.next()).getUserData(SAAJ_NODE));
+        }
+        return elements.iterator();
+    }
+
+    /**
+     * Returns an <code>Iterator</code> over all the
+     * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader</code>
+     * object.
+     *
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects contained by this
+     *         <code>SOAPHeader</code>
+     */
+    public Iterator examineAllHeaderElements() {
+        Collection elements = new ArrayList();
+        for (Iterator iterator = omSOAPHeader.examineAllHeaderBlocks(); iterator.hasNext();) {
+            elements.add(((NodeImpl) iterator.next()).getUserData(SAAJ_NODE));
+        }
+        return elements.iterator();
+    }
+
+    /**
+     * Returns an <code>Iterator</code> over all the
+     * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader </code>
+     * object and detaches them from this <code>SOAPHeader</code> object.
+     *
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects contained by this
+     *         <code>SOAPHeader</code>
+     */
+    public Iterator extractAllHeaderElements() {
+        Collection elements = new ArrayList();
+        for (Iterator iterator = omSOAPHeader.extractAllHeaderBlocks(); iterator.hasNext();) {
+            elements.add(((NodeImpl) iterator.next()).getUserData(SAAJ_NODE));
+        }
+        return elements.iterator();
+    }
+
+    public SOAPElement addTextNode(String text) throws SOAPException {
+        throw new UnsupportedOperationException("Cannot add text node to SOAPHeader");
+    }
+
+    public Iterator getChildElements(Name name) {
+        QName qName = new QName(name.getURI(), name.getLocalName());
+        return getChildren(element.getChildrenWithName(qName));
+    }
+
+    public Iterator getChildElements() {
+        return getChildren(element.getChildren());
+    }
+
+    private Iterator getChildren(Iterator childIter) {
+        Collection childElements = new ArrayList();
+        while (childIter.hasNext()) {
+            org.w3c.dom.Node domNode = (org.w3c.dom.Node) childIter.next();
+            Node saajNode = toSAAJNode(domNode);
+            if (saajNode instanceof javax.xml.soap.Text) {
+                childElements.add(saajNode);
+            } else if (!(saajNode instanceof SOAPHeaderElement)) {
+                // silently replace node, as per saaj 1.2 spec
+                SOAPHeaderElement headerEle = new SOAPHeaderElementImpl((SOAPHeaderBlock) domNode);
+                ((NodeImpl) domNode).setUserData(SAAJ_NODE, headerEle, null);
+                childElements.add(headerEle);
+            } else {
+                childElements.add(saajNode);
+            }
+        }
+        return childElements.iterator();
+    }
+
+    public void detachNode() {
+        this.detach();
+    }
+
+    public OMNode detach() {
+        OMNode omNode = omSOAPHeader.detach();
+        parentElement = null;
+        return omNode;
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
new file mode 100644
index 0000000..140b545
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
@@ -0,0 +1,396 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axis2.transport.http.HTTPConstants;
+
+import javax.xml.soap.AttachmentPart;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+
+public class SOAPMessageImpl extends SOAPMessage {
+
+    private SOAPPart soapPart;
+    private Collection attachmentParts = new ArrayList();
+    private MimeHeadersEx mimeHeaders;
+
+    private Map props = new Hashtable();
+    private boolean saveRequired;
+
+    public SOAPMessageImpl(SOAPEnvelopeImpl soapEnvelope) {
+        String contentType = null;
+        if (mimeHeaders != null) {
+            String contentTypes[] = mimeHeaders.getHeader("Content-Type");
+            contentType = (contentTypes != null) ? contentTypes[0] : null;
+        }
+
+        setCharsetEncoding(contentType);
+
+        soapPart = new SOAPPartImpl(this, soapEnvelope);
+
+        this.mimeHeaders = new MimeHeadersEx();
+    }
+
+    public SOAPMessageImpl(InputStream inputstream,
+                           javax.xml.soap.MimeHeaders mimeHeaders) throws SOAPException {
+        String contentType = null;
+        if (mimeHeaders != null) {
+            String contentTypes[] = mimeHeaders.getHeader("Content-Type");
+            contentType = (contentTypes != null) ? contentTypes[0] : null;
+        }
+
+        setCharsetEncoding(contentType);
+        if (contentType != null && contentType.indexOf("multipart/related;") == 0) {
+//            soapPart = new SOAPPartImpl(this, inputstream, mimeHeaders);
+        } else {
+            soapPart = new SOAPPartImpl(this, inputstream);
+        }
+
+        this.mimeHeaders = (mimeHeaders == null) ?
+                           new MimeHeadersEx() :
+                           new MimeHeadersEx(mimeHeaders);
+    }
+
+    /**
+     * Retrieves a description of this <CODE>SOAPMessage</CODE>
+     * object's content.
+     *
+     * @return a <CODE>String</CODE> describing the content of this
+     *         message or <CODE>null</CODE> if no description has been
+     *         set
+     * @see #setContentDescription(java.lang.String) setContentDescription(java.lang.String)
+     */
+    public String getContentDescription() {
+        String values[] = mimeHeaders.getHeader(HTTPConstants.HEADER_CONTENT_DESCRIPTION);
+        if (values != null && values.length > 0) {
+            return values[0];
+        }
+        return null;
+    }
+
+    /**
+     * Sets the description of this <CODE>SOAPMessage</CODE>
+     * object's content with the given description.
+     *
+     * @param description a <CODE>String</CODE>
+     *                    describing the content of this message
+     * @see #getContentDescription() getContentDescription()
+     */
+    public void setContentDescription(String description) {
+        mimeHeaders.setHeader(HTTPConstants.HEADER_CONTENT_DESCRIPTION, description);
+    }
+
+    /**
+     * Gets the SOAP part of this <CODE>SOAPMessage</CODE> object.
+     * <p/>
+     * <p/>
+     * <P>If a <CODE>SOAPMessage</CODE> object contains one or
+     * more attachments, the SOAP Part must be the first MIME body
+     * part in the message.</P>
+     *
+     * @return the <CODE>SOAPPart</CODE> object for this <CODE>
+     *         SOAPMessage</CODE> object
+     */
+    public SOAPPart getSOAPPart() {
+        return soapPart;
+    }
+
+    /**
+     * Removes all <CODE>AttachmentPart</CODE> objects that have
+     * been added to this <CODE>SOAPMessage</CODE> object.
+     * <p/>
+     * <P>This method does not touch the SOAP part.</P>
+     */
+    public void removeAllAttachments() {
+        attachmentParts.clear();
+    }
+
+    /**
+     * Gets a count of the number of attachments in this
+     * message. This count does not include the SOAP part.
+     *
+     * @return the number of <CODE>AttachmentPart</CODE> objects
+     *         that are part of this <CODE>SOAPMessage</CODE>
+     *         object
+     */
+    public int countAttachments() {
+        return attachmentParts.size();
+    }
+
+    /**
+     * Retrieves all the <CODE>AttachmentPart</CODE> objects
+     * that are part of this <CODE>SOAPMessage</CODE> object.
+     *
+     * @return an iterator over all the attachments in this
+     *         message
+     */
+    public Iterator getAttachments() {
+        return attachmentParts.iterator();
+    }
+
+    /**
+     * Retrieves all the AttachmentPart objects that have header entries that match the specified
+     * headers.
+     * Note that a returned attachment could have headers in addition to those specified.
+     *
+     * @param headers a {@link javax.xml.soap.MimeHeaders}
+     *                object containing the MIME headers for which to search
+     * @return an iterator over all attachments({@link javax.xml.soap.AttachmentPart})
+     *         that have a header that matches one of the given headers
+     */
+    public Iterator getAttachments(javax.xml.soap.MimeHeaders headers) {
+        Collection matchingAttachmentParts = new ArrayList();
+        Iterator iterator = getAttachments();
+        {
+            AttachmentPartImpl part;
+            while (iterator.hasNext()) {
+                part = (AttachmentPartImpl) iterator.next();
+                if (part.matches(headers)) {
+                    matchingAttachmentParts.add(part);
+                }
+            }
+        }
+        return matchingAttachmentParts.iterator();
+    }
+
+    /**
+     * Adds the given <CODE>AttachmentPart</CODE> object to this
+     * <CODE>SOAPMessage</CODE> object. An <CODE>
+     * AttachmentPart</CODE> object must be created before it can be
+     * added to a message.
+     *
+     * @param attachmentPart an <CODE>
+     *                       AttachmentPart</CODE> object that is to become part of
+     *                       this <CODE>SOAPMessage</CODE> object
+     * @throws java.lang.IllegalArgumentException
+     *
+     */
+    public void addAttachmentPart(AttachmentPart attachmentPart) {
+        if (attachmentPart != null) {
+            attachmentParts.add(attachmentPart);
+            mimeHeaders.setHeader("Content-Type", "multipart/related");
+        }
+    }
+
+    /**
+     * Creates a new empty <CODE>AttachmentPart</CODE> object.
+     * Note that the method <CODE>addAttachmentPart</CODE> must be
+     * called with this new <CODE>AttachmentPart</CODE> object as
+     * the parameter in order for it to become an attachment to this
+     * <CODE>SOAPMessage</CODE> object.
+     *
+     * @return a new <CODE>AttachmentPart</CODE> object that can be
+     *         populated and added to this <CODE>SOAPMessage</CODE>
+     *         object
+     */
+    public AttachmentPart createAttachmentPart() {
+        return new AttachmentPartImpl();
+    }
+
+    /**
+     * Returns all the transport-specific MIME headers for this
+     * <CODE>SOAPMessage</CODE> object in a transport-independent
+     * fashion.
+     *
+     * @return a <CODE>MimeHeaders</CODE> object containing the
+     *         <CODE>MimeHeader</CODE> objects
+     */
+    public javax.xml.soap.MimeHeaders getMimeHeaders() {
+        return mimeHeaders;
+    }
+
+    /**
+     * Updates this <CODE>SOAPMessage</CODE> object with all the
+     * changes that have been made to it. This method is called
+     * automatically when a message is sent or written to by the
+     * methods <CODE>ProviderConnection.send</CODE>, <CODE>
+     * SOAPConnection.call</CODE>, or <CODE>
+     * SOAPMessage.writeTo</CODE>. However, if changes are made to
+     * a message that was received or to one that has already been
+     * sent, the method <CODE>saveChanges</CODE> needs to be
+     * called explicitly in order to save the changes. The method
+     * <CODE>saveChanges</CODE> also generates any changes that
+     * can be read back (for example, a MessageId in profiles that
+     * support a message id). All MIME headers in a message that
+     * is created for sending purposes are guaranteed to have
+     * valid values only after <CODE>saveChanges</CODE> has been
+     * called.
+     * <p/>
+     * <P>In addition, this method marks the point at which the
+     * data from all constituent <CODE>AttachmentPart</CODE>
+     * objects are pulled into the message.</P>
+     *
+     * @throws SOAPException if there was a problem saving changes to this message.
+     */
+    public void saveChanges() throws SOAPException {
+        saveRequired = false;
+        // TODO not sure of the implementation
+    }
+
+    public void setSaveRequired() {
+        this.saveRequired = true;
+    }
+
+    /**
+     * Indicates whether this <CODE>SOAPMessage</CODE> object
+     * has had the method {@link #saveChanges()} called on
+     * it.
+     *
+     * @return <CODE>true</CODE> if <CODE>saveChanges</CODE> has
+     *         been called on this message at least once; <CODE>
+     *         false</CODE> otherwise.
+     */
+    public boolean saveRequired() {
+        return saveRequired;
+    }
+
+    /**
+     * Writes this <CODE>SOAPMessage</CODE> object to the given
+     * output stream. The externalization format is as defined by
+     * the SOAP 1.1 with Attachments specification.
+     * <p/>
+     * <P>If there are no attachments, just an XML stream is
+     * written out. For those messages that have attachments,
+     * <CODE>writeTo</CODE> writes a MIME-encoded byte stream.</P>
+     *
+     * @param out the <CODE>OutputStream</CODE>
+     *            object to which this <CODE>SOAPMessage</CODE> object will
+     *            be written
+     * @throws SOAPException if there was a problem in externalizing this SOAP message
+     * @throws IOException   if an I/O error occurs
+     */
+    public void writeTo(OutputStream out) throws SOAPException, IOException {
+        try {
+            OMOutputFormat format = new OMOutputFormat();
+            format.setCharSetEncoding((String) getProperty(CHARACTER_SET_ENCODING));
+            String writeXmlDecl = (String) getProperty(WRITE_XML_DECLARATION);
+            if (writeXmlDecl == null || writeXmlDecl.equals("false")) {
+
+                //SAAJ default case doesn't send XML decl
+                format.setIgnoreXMLDeclaration(true);
+            }
+
+            //the writeTo method forces the elements to be built!!!
+            ((SOAPEnvelopeImpl) soapPart.getEnvelope()).getOMEnvelope().serialize(out, format);
+            saveChanges();
+        } catch (Exception e) {
+            throw new SOAPException(e);
+        }
+    }
+
+    /**
+     * Associates the specified value with the specified property. If there was
+     * already a value associated with this property, the old value is replaced.
+     * <p/>
+     * The valid property names include <code>WRITE_XML_DECLARATION</code> and
+     * <code>CHARACTER_SET_ENCODING</code>. All of these standard SAAJ
+     * properties are prefixed by "javax.xml.soap". Vendors may also add
+     * implementation specific properties. These properties must be prefixed
+     * with package names that are unique to the vendor.
+     * <p/>
+     * Setting the property <code>WRITE_XML_DECLARATION</code> to
+     * <code>"true"</code> will cause an XML Declaration to be written out at
+     * the start of the SOAP message. The default value of "false" suppresses
+     * this declaration.
+     * <p/>
+     * The property <code>CHARACTER_SET_ENCODING</code> defaults to the value
+     * <code>"utf-8"</code> which causes the SOAP message to be encoded using
+     * UTF-8. Setting <code>CHARACTER_SET_ENCODING</code> to
+     * <code>"utf-16"</code> causes the SOAP message to be encoded using UTF-16.
+     * <p/>
+     * Some implementations may allow encodings in addition to UTF-8 and UTF-16.
+     * Refer to your vendor's documentation for details.
+     *
+     * @param property the property with which the specified value is to be
+     *                 associated
+     * @param value    the value
+     *                 to be associated with the specified property
+     */
+    public void setProperty(String property, Object value) {
+        props.put(property, value);
+    }
+
+    /**
+     * Retrieves value of the specified property.
+     *
+     * @param property the name of the property to retrieve
+     * @return the value of the property or <code>null</code> if no such
+     *         property exists
+     * @throws SOAPException if the property name is not recognized
+     */
+    public Object getProperty(String property) throws SOAPException {
+        return props.get(property);
+    }
+
+    /**
+     * Gets the SOAP Header contained in this <code>SOAPMessage</code> object.
+     *
+     * @return the <code>SOAPHeader</code> object contained by this
+     *         <code>SOAPMessage</code> object
+     * @throws javax.xml.soap.SOAPException if the SOAP Header does not exist or cannot be
+     *                                      retrieved
+     */
+    public SOAPHeader getSOAPHeader() throws SOAPException {
+        return this.soapPart.getEnvelope().getHeader();
+    }
+
+    /**
+     * Gets the SOAP Body contained in this <code>SOAPMessage</code> object.
+     *
+     * @return the <code>SOAPBody</code> object contained by this
+     *         <code>SOAPMessage</code> object
+     * @throws javax.xml.soap.SOAPException if the SOAP Body does not exist or cannot be
+     *                                      retrieved
+     */
+    public SOAPBody getSOAPBody() throws SOAPException {
+        return this.soapPart.getEnvelope().getBody();
+    }
+
+    /**
+     * Set the character encoding based on the <code>contentType</code> parameter
+     *
+     * @param contentType
+     */
+    private void setCharsetEncoding(final String contentType) {
+        if (contentType != null) {
+            int delimiterIndex = contentType.lastIndexOf("charset");
+            if (delimiterIndex > 0) {
+                String charsetPart = contentType.substring(delimiterIndex);
+                int charsetIndex = charsetPart.indexOf('=');
+                String charset = charsetPart.substring(charsetIndex + 1).trim();
+                if ((charset.startsWith("\"") || charset.startsWith("\'"))) {
+                    charset = charset.substring(1, charset.length());
+                }
+                if ((charset.endsWith("\"") || charset.endsWith("\'"))) {
+                    charset = charset.substring(0, charset.length() - 1);
+                }
+                setProperty(SOAPMessage.CHARACTER_SET_ENCODING, charset);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
new file mode 100644
index 0000000..254275a
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
@@ -0,0 +1,1236 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.saaj.util.IDGenerator;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.w3c.dom.Attr;
+import org.w3c.dom.CDATASection;
+import org.w3c.dom.Comment;
+import org.w3c.dom.DOMConfiguration;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.DocumentType;
+import org.w3c.dom.Element;
+import org.w3c.dom.EntityReference;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.ProcessingInstruction;
+import org.w3c.dom.Text;
+import org.w3c.dom.UserDataHandler;
+
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.Source;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Iterator;
+
+public class SOAPPartImpl extends SOAPPart {
+
+    private Document document;
+    private SOAPMessage soapMessage;
+    private SOAPEnvelopeImpl envelope;
+    private MimeHeadersEx mimeHeaders = new MimeHeadersEx();
+
+    private Source source;
+
+    public SOAPPartImpl(SOAPMessageImpl parentSoapMsg,
+                        SOAPEnvelopeImpl soapEnvelope) {
+
+        setMimeHeader(HTTPConstants.HEADER_CONTENT_ID, IDGenerator.generateID());
+        setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, "text/xml");
+
+        soapMessage = parentSoapMsg;
+        envelope = soapEnvelope;
+        document = soapEnvelope.getOwnerDocument();
+    }
+
+    public SOAPPartImpl(SOAPMessageImpl parentSoapMsg,
+                        InputStream inputStream) throws SOAPException {
+
+        setMimeHeader(HTTPConstants.HEADER_CONTENT_ID, IDGenerator.generateID());
+        setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, "text/xml");
+
+        soapMessage = parentSoapMsg;
+
+        try {
+            InputStreamReader isReader = new InputStreamReader(inputStream);
+            StAXSOAPModelBuilder builder =
+                    new StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                                             new SOAP11Factory(),
+                                             null);
+            org.apache.axiom.soap.SOAPEnvelope soapEnvelope = builder.getSOAPEnvelope();
+            envelope = new SOAPEnvelopeImpl((org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)soapEnvelope);
+            envelope.element.build();
+            this.document = envelope.getOwnerDocument();
+        } catch (XMLStreamException e) {
+            e.printStackTrace();
+            throw new SOAPException(e);
+        }
+    }
+
+    /**
+     * Obtain the SOAPMessage
+     *
+     * @return the related SOAPMessage
+     */
+    public SOAPMessage getSoapMessage() {
+        return soapMessage;
+    }
+
+    /**
+     * Gets the <CODE>SOAPEnvelope</CODE> object associated with
+     * this <CODE>SOAPPart</CODE> object. Once the SOAP envelope is
+     * obtained, it can be used to get its contents.
+     *
+     * @return the <CODE>SOAPEnvelope</CODE> object for this <CODE>
+     *         SOAPPart</CODE> object
+     * @throws SOAPException if there is a SOAP error
+     */
+    public SOAPEnvelope getEnvelope() throws SOAPException {
+        return envelope;
+    }
+
+    /**
+     * Removes all MIME headers that match the given name.
+     *
+     * @param header a <CODE>String</CODE> giving
+     *               the name of the MIME header(s) to be removed
+     */
+    public void removeMimeHeader(String header) {
+        mimeHeaders.removeHeader(header);
+    }
+
+    /**
+     * Removes all the <CODE>MimeHeader</CODE> objects for this
+     * <CODE>SOAPEnvelope</CODE> object.
+     */
+    public void removeAllMimeHeaders() {
+        mimeHeaders.removeAllHeaders();
+    }
+
+    /**
+     * Gets all the values of the <CODE>MimeHeader</CODE> object
+     * in this <CODE>SOAPPart</CODE> object that is identified by
+     * the given <CODE>String</CODE>.
+     *
+     * @param name the name of the header; example:
+     *             "Content-Type"
+     * @return a <CODE>String</CODE> array giving all the values for
+     *         the specified header
+     * @see #setMimeHeader(java.lang.String, java.lang.String) setMimeHeader(java.lang.String, java.lang.String)
+     */
+    public String[] getMimeHeader(String name) {
+        return mimeHeaders.getHeader(name);
+    }
+
+    /**
+     * Changes the first header entry that matches the given
+     * header name so that its value is the given value, adding a
+     * new header with the given name and value if no existing
+     * header is a match. If there is a match, this method clears
+     * all existing values for the first header that matches and
+     * sets the given value instead. If more than one header has
+     * the given name, this method removes all of the matching
+     * headers after the first one.
+     * <p/>
+     * <P>Note that RFC822 headers can contain only US-ASCII
+     * characters.</P>
+     *
+     * @param name  a <CODE>String</CODE> giving the
+     *              header name for which to search
+     * @param value a <CODE>String</CODE> giving the
+     *              value to be set. This value will be substituted for the
+     *              current value(s) of the first header that is a match if
+     *              there is one. If there is no match, this value will be
+     *              the value for a new <CODE>MimeHeader</CODE> object.
+     * @throws java.lang.IllegalArgumentException
+     *          if
+     *          there was a problem with the specified mime header name
+     *          or value
+     * @throws java.lang.IllegalArgumentException
+     *          if there was a problem with the specified mime header name or value
+     * @see #getMimeHeader(java.lang.String) getMimeHeader(java.lang.String)
+     */
+    public void setMimeHeader(String name, String value) {
+        mimeHeaders.setHeader(name, value);
+    }
+
+    /**
+     * Creates a <CODE>MimeHeader</CODE> object with the specified
+     * name and value and adds it to this <CODE>SOAPPart</CODE>
+     * object. If a <CODE>MimeHeader</CODE> with the specified
+     * name already exists, this method adds the specified value
+     * to the already existing value(s).
+     * <p/>
+     * <P>Note that RFC822 headers can contain only US-ASCII
+     * characters.</P>
+     *
+     * @param header a <CODE>String</CODE> giving the
+     *               header name
+     * @param value  a <CODE>String</CODE> giving the
+     *               value to be set or added
+     * @throws IllegalArgumentException if
+     *                                  there was a problem with the specified mime header name
+     *                                  or value
+     */
+    public void addMimeHeader(String header, String value) {
+        mimeHeaders.addHeader(header, value);
+    }
+
+    /**
+     * Retrieves all the headers for this <CODE>SOAPPart</CODE>
+     * object as an iterator over the <CODE>MimeHeader</CODE>
+     * objects.
+     *
+     * @return an <CODE>Iterator</CODE> object with all of the Mime
+     *         headers for this <CODE>SOAPPart</CODE> object
+     */
+    public Iterator getAllMimeHeaders() {
+        return mimeHeaders.getAllHeaders();
+    }
+
+    /**
+     * Retrieves all <CODE>MimeHeader</CODE> objects that match
+     * a name in the given array.
+     *
+     * @param names a <CODE>String</CODE> array with
+     *              the name(s) of the MIME headers to be returned
+     * @return all of the MIME headers that match one of the names
+     *         in the given array, returned as an <CODE>Iterator</CODE>
+     *         object
+     */
+    public Iterator getMatchingMimeHeaders(String[] names) {
+        return mimeHeaders.getMatchingHeaders(names);
+    }
+
+    /**
+     * Retrieves all <CODE>MimeHeader</CODE> objects whose name
+     * does not match a name in the given array.
+     *
+     * @param names a <CODE>String</CODE> array with
+     *              the name(s) of the MIME headers not to be returned
+     * @return all of the MIME headers in this <CODE>SOAPPart</CODE>
+     *         object except those that match one of the names in the
+     *         given array. The nonmatching MIME headers are returned as
+     *         an <CODE>Iterator</CODE> object.
+     */
+    public Iterator getNonMatchingMimeHeaders(String[] names) {
+        return mimeHeaders.getNonMatchingHeaders(names);
+    }
+
+    /**
+     * Sets the content of the <CODE>SOAPEnvelope</CODE> object
+     * with the data from the given <CODE>Source</CODE> object.
+     *
+     * @param source javax.xml.transform.Source</CODE> object with the data to
+     *               be set
+     * @throws SOAPException if there is a problem in
+     *                       setting the source
+     * @see #getContent() getContent()
+     */
+    public void setContent(Source source) throws SOAPException {
+        this.source = source;
+
+        //TODO: Need to fix the source handling stuff
+    }
+
+    /**
+     * Returns the content of the SOAPEnvelope as a JAXP <CODE>
+     * Source</CODE> object.
+     *
+     * @return the content as a <CODE>
+     *         javax.xml.transform.Source</CODE> object
+     * @throws SOAPException if the implementation cannot
+     *                       convert the specified <CODE>Source</CODE> object
+     * @see #setContent(javax.xml.transform.Source) setContent(javax.xml.transform.Source)
+     */
+    public Source getContent() throws SOAPException {
+        return source;
+    }
+
+    /**
+     * The Document Type Declaration (see <code>DocumentType</code>)
+     * associated with this document. For HTML documents as well as XML
+     * documents without a document type declaration this returns
+     * <code>null</code>. The DOM Level 2 does not support editing the
+     * Document Type Declaration. <code>docType</code> cannot be altered in
+     * any way, including through the use of methods inherited from the
+     * <code>Node</code> interface, such as <code>insertNode</code> or
+     * <code>removeNode</code>.
+     */
+    public DocumentType getDoctype() {
+        return document.getDoctype();
+    }
+
+    /**
+     * The <code>DOMImplementation</code> object that handles this document. A
+     * DOM application may use objects from multiple implementations.
+     */
+    public DOMImplementation getImplementation() {
+        return document.getImplementation();
+    }
+
+    /**
+     * This is a convenience attribute that allows direct access to the child
+     * node that is the root element of the document. For HTML documents,
+     * this is the element with the tagName "HTML".
+     */
+    public Element getDocumentElement() {
+        return document.getDocumentElement();
+    }
+
+    /**
+     * Creates an element of the type specified. Note that the instance
+     * returned implements the <code>Element</code> interface, so attributes
+     * can be specified directly on the returned object.
+     * <br>In addition, if there are known attributes with default values,
+     * <code>Attr</code> nodes representing them are automatically created
+     * and attached to the element.
+     * <br>To create an element with a qualified name and namespace URI, use
+     * the <code>createElementNS</code> method.
+     *
+     * @param tagName The name of the element type to instantiate. For XML,
+     *                this is case-sensitive. For HTML, the <code>tagName</code>
+     *                parameter may be provided in any case, but it must be mapped to the
+     *                canonical uppercase form by the DOM implementation.
+     * @return A new <code>Element</code> object with the
+     *         <code>nodeName</code> attribute set to <code>tagName</code>, and
+     *         <code>localName</code>, <code>prefix</code>, and
+     *         <code>namespaceURI</code> set to <code>null</code>.
+     * @throws DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an
+     *                      illegal character.
+     */
+    public Element createElement(String tagName) throws DOMException {
+        return document.createElement(tagName);
+    }
+
+    /**
+     * Creates an empty <code>DocumentFragment</code> object.
+     *
+     * @return A new <code>DocumentFragment</code>.
+     */
+    public DocumentFragment createDocumentFragment() {
+        return document.createDocumentFragment();
+    }
+
+    /**
+     * Creates a <code>Text</code> node given the specified string.
+     *
+     * @param data The data for the node.
+     * @return The new <code>Text</code> object.
+     */
+    public Text createTextNode(String data) {
+        return document.createTextNode(data);
+    }
+
+    /**
+     * Creates a <code>CDATASection</code> node whose value is the specified
+     * string.
+     *
+     * @param data The data for the <code>CDATASection</code> contents.
+     * @return The new <code>CDATASection</code> object.
+     * @throws DOMException NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
+     */
+    public Comment createComment(String data) {
+        return document.createComment(data);
+    }
+
+    /**
+     * Creates a <code>CDATASection</code> node whose value is the specified
+     * string.
+     *
+     * @param data The data for the <code>CDATASection</code> contents.
+     * @return The new <code>CDATASection</code> object.
+     * @throws DOMException NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
+     */
+    public CDATASection createCDATASection(String data) throws DOMException {
+        return document.createCDATASection(data);
+    }
+
+    /**
+     * Creates a <code>ProcessingInstruction</code> node given the specified
+     * name and data strings.
+     *
+     * @param target The target part of the processing instruction.
+     * @param data   The data for the node.
+     * @return The new <code>ProcessingInstruction</code> object.
+     * @throws DOMException INVALID_CHARACTER_ERR: Raised if the specified target contains an
+     *                      illegal character.
+     *                      <br>NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
+     */
+    public ProcessingInstruction createProcessingInstruction(String target, String data) throws DOMException {
+        return document.createProcessingInstruction(target, data);
+    }
+
+    /**
+     * Creates an <code>Attr</code> of the given name. Note that the
+     * <code>Attr</code> instance can then be set on an <code>Element</code>
+     * using the <code>setAttributeNode</code> method.
+     * <br>To create an attribute with a qualified name and namespace URI, use
+     * the <code>createAttributeNS</code> method.
+     *
+     * @param name The name of the attribute.
+     * @return A new <code>Attr</code> object with the <code>nodeName</code>
+     *         attribute set to <code>name</code>, and <code>localName</code>,
+     *         <code>prefix</code>, and <code>namespaceURI</code> set to
+     *         <code>null</code>. The value of the attribute is the empty string.
+     * @throws DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an
+     *                      illegal character.
+     */
+    public Attr createAttribute(String name) throws DOMException {
+        return document.createAttribute(name);
+    }
+
+    /**
+     * Creates an <code>EntityReference</code> object. In addition, if the
+     * referenced entity is known, the child list of the
+     * <code>EntityReference</code> node is made the same as that of the
+     * corresponding <code>Entity</code> node.If any descendant of the
+     * <code>Entity</code> node has an unbound namespace prefix, the
+     * corresponding descendant of the created <code>EntityReference</code>
+     * node is also unbound; (its <code>namespaceURI</code> is
+     * <code>null</code>). The DOM Level 2 does not support any mechanism to
+     * resolve namespace prefixes.
+     *
+     * @param name The name of the entity to reference.
+     * @return The new <code>EntityReference</code> object.
+     * @throws DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an
+     *                      illegal character.
+     *                      <br>NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
+     */
+    public EntityReference createEntityReference(String name) throws DOMException {
+        return document.createEntityReference(name);
+    }
+
+    /**
+     * Returns a <code>NodeList</code> of all the <code>Elements</code> with a
+     * given tag name in the order in which they are encountered in a
+     * preorder traversal of the <code>Document</code> tree.
+     *
+     * @param tagname The name of the tag to match on. The special value "*"
+     *                matches all tags.
+     * @return A new <code>NodeList</code> object containing all the matched
+     *         <code>Elements</code>.
+     */
+    public NodeList getElementsByTagName(String tagname) {
+        return document.getElementsByTagName(tagname);
+    }
+
+    /**
+     * Imports a node from another document to this document. The returned
+     * node has no parent; (<code>parentNode</code> is <code>null</code>).
+     * The source node is not altered or removed from the original document;
+     * this method creates a new copy of the source node.
+     * <br>For all nodes, importing a node creates a node object owned by the
+     * importing document, with attribute values identical to the source
+     * node's <code>nodeName</code> and <code>nodeType</code>, plus the
+     * attributes related to namespaces (<code>prefix</code>,
+     * <code>localName</code>, and <code>namespaceURI</code>). As in the
+     * <code>cloneNode</code> operation on a <code>Node</code>, the source
+     * node is not altered.
+     * <br>Additional information is copied as appropriate to the
+     * <code>nodeType</code>, attempting to mirror the behavior expected if
+     * a fragment of XML or HTML source was copied from one document to
+     * another, recognizing that the two documents may have different DTDs
+     * in the XML case. The following list describes the specifics for each
+     * type of node.
+     * <dl>
+     * <dt>ATTRIBUTE_NODE</dt>
+     * <dd>The <code>ownerElement</code> attribute
+     * is set to <code>null</code> and the <code>specified</code> flag is
+     * set to <code>true</code> on the generated <code>Attr</code>. The
+     * descendants of the source <code>Attr</code> are recursively imported
+     * and the resulting nodes reassembled to form the corresponding subtree.
+     * Note that the <code>deep</code> parameter has no effect on
+     * <code>Attr</code> nodes; they always carry their children with them
+     * when imported.</dd>
+     * <dt>DOCUMENT_FRAGMENT_NODE</dt>
+     * <dd>If the <code>deep</code> option
+     * was set to <code>true</code>, the descendants of the source element
+     * are recursively imported and the resulting nodes reassembled to form
+     * the corresponding subtree. Otherwise, this simply generates an empty
+     * <code>DocumentFragment</code>.</dd>
+     * <dt>DOCUMENT_NODE</dt>
+     * <dd><code>Document</code>
+     * nodes cannot be imported.</dd>
+     * <dt>DOCUMENT_TYPE_NODE</dt>
+     * <dd><code>DocumentType</code>
+     * nodes cannot be imported.</dd>
+     * <dt>ELEMENT_NODE</dt>
+     * <dd>Specified attribute nodes of the
+     * source element are imported, and the generated <code>Attr</code>
+     * nodes are attached to the generated <code>Element</code>. Default
+     * attributes are not copied, though if the document being imported into
+     * defines default attributes for this element name, those are assigned.
+     * If the <code>importNode</code> <code>deep</code> parameter was set to
+     * <code>true</code>, the descendants of the source element are
+     * recursively imported and the resulting nodes reassembled to form the
+     * corresponding subtree.</dd>
+     * <dt>ENTITY_NODE</dt>
+     * <dd><code>Entity</code> nodes can be
+     * imported, however in the current release of the DOM the
+     * <code>DocumentType</code> is readonly. Ability to add these imported
+     * nodes to a <code>DocumentType</code> will be considered for addition
+     * to a future release of the DOM.On import, the <code>publicId</code>,
+     * <code>systemId</code>, and <code>notationName</code> attributes are
+     * copied. If a <code>deep</code> import is requested, the descendants
+     * of the the source <code>Entity</code> are recursively imported and
+     * the resulting nodes reassembled to form the corresponding subtree.</dd>
+     * <dt>
+     * ENTITY_REFERENCE_NODE</dt>
+     * <dd>Only the <code>EntityReference</code> itself is
+     * copied, even if a <code>deep</code> import is requested, since the
+     * source and destination documents might have defined the entity
+     * differently. If the document being imported into provides a
+     * definition for this entity name, its value is assigned.</dd>
+     * <dt>NOTATION_NODE</dt>
+     * <dd>
+     * <code>Notation</code> nodes can be imported, however in the current
+     * release of the DOM the <code>DocumentType</code> is readonly. Ability
+     * to add these imported nodes to a <code>DocumentType</code> will be
+     * considered for addition to a future release of the DOM.On import, the
+     * <code>publicId</code> and <code>systemId</code> attributes are copied.
+     * Note that the <code>deep</code> parameter has no effect on
+     * <code>Notation</code> nodes since they never have any children.</dd>
+     * <dt>
+     * PROCESSING_INSTRUCTION_NODE</dt>
+     * <dd>The imported node copies its
+     * <code>target</code> and <code>data</code> values from those of the
+     * source node.</dd>
+     * <dt>TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE</dt>
+     * <dd>These three
+     * types of nodes inheriting from <code>CharacterData</code> copy their
+     * <code>data</code> and <code>length</code> attributes from those of
+     * the source node.</dd>
+     * </dl>
+     *
+     * @param importedNode The node to import.
+     * @param deep         If <code>true</code>, recursively import the subtree under
+     *                     the specified node; if <code>false</code>, import only the node
+     *                     itself, as explained above. This has no effect on <code>Attr</code>
+     *                     , <code>EntityReference</code>, and <code>Notation</code> nodes.
+     * @return The imported node that belongs to this <code>Document</code>.
+     * @throws DOMException NOT_SUPPORTED_ERR: Raised if the type of node being imported is not
+     *                      supported.
+     * @since DOM Level 2
+     */
+    public Node importNode(Node importedNode, boolean deep) throws DOMException {
+        return document.importNode(importedNode, deep);
+    }
+
+    /**
+     * Creates an element of the given qualified name and namespace URI.
+     *
+     * @param namespaceURI  The namespace URI of the element to create.
+     * @param qualifiedName The qualified name of the element type to
+     *                      instantiate.
+     * @return A new <code>Element</code> object with the following
+     *         attributes:
+     *         <table border='1' summary="Description of attributes and values for the new Element object">
+     *         <tr>
+     *         <th>Attribute</th>
+     *         <th>Value</th>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Node.nodeName</code></td>
+     *         <td valign='top'>
+     *         <code>qualifiedName</code></td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Node.namespaceURI</code></td>
+     *         <td valign='top'>
+     *         <code>namespaceURI</code></td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Node.prefix</code></td>
+     *         <td valign='top'>prefix, extracted
+     *         from <code>qualifiedName</code>, or <code>null</code> if there is
+     *         no prefix</td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Node.localName</code></td>
+     *         <td valign='top'>local name, extracted from
+     *         <code>qualifiedName</code></td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Element.tagName</code></td>
+     *         <td valign='top'>
+     *         <code>qualifiedName</code></td>
+     *         </tr>
+     *         </table>
+     * @throws DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name
+     *                      contains an illegal character, per the XML 1.0 specification .
+     *                      <br>NAMESPACE_ERR: Raised if the <code>qualifiedName</code> is
+     *                      malformed per the Namespaces in XML specification, if the
+     *                      <code>qualifiedName</code> has a prefix and the
+     *                      <code>namespaceURI</code> is <code>null</code>, or if the
+     *                      <code>qualifiedName</code> has a prefix that is "xml" and the
+     *                      <code>namespaceURI</code> is different from "
+     *                      http://www.w3.org/XML/1998/namespace" .
+     *                      <br>NOT_SUPPORTED_ERR: Always thrown if the current document does not
+     *                      support the <code>"XML"</code> feature, since namespaces were
+     *                      defined by XML.
+     * @since DOM Level 2
+     */
+    public Element createElementNS(String namespaceURI, String qualifiedName) throws DOMException {
+        return document.createElementNS(namespaceURI, qualifiedName);
+    }
+
+    /**
+     * Creates an attribute of the given qualified name and namespace URI.
+     *
+     * @param namespaceURI  The namespace URI of the attribute to create.
+     * @param qualifiedName The qualified name of the attribute to
+     *                      instantiate.
+     * @return A new <code>Attr</code> object with the following attributes:
+     *         <table border='1' summary="Description of attributes and values for the new Attr object">
+     *         <tr>
+     *         <th>
+     *         Attribute</th>
+     *         <th>Value</th>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Node.nodeName</code></td>
+     *         <td valign='top'>qualifiedName</td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'>
+     *         <code>Node.namespaceURI</code></td>
+     *         <td valign='top'><code>namespaceURI</code></td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'>
+     *         <code>Node.prefix</code></td>
+     *         <td valign='top'>prefix, extracted from
+     *         <code>qualifiedName</code>, or <code>null</code> if there is no
+     *         prefix</td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Node.localName</code></td>
+     *         <td valign='top'>local name, extracted from
+     *         <code>qualifiedName</code></td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Attr.name</code></td>
+     *         <td valign='top'>
+     *         <code>qualifiedName</code></td>
+     *         </tr>
+     *         <tr>
+     *         <td valign='top'><code>Node.nodeValue</code></td>
+     *         <td valign='top'>the empty
+     *         string</td>
+     *         </tr>
+     *         </table>
+     * @throws DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name
+     *                      contains an illegal character, per the XML 1.0 specification .
+     *                      <br>NAMESPACE_ERR: Raised if the <code>qualifiedName</code> is
+     *                      malformed per the Namespaces in XML specification, if the
+     *                      <code>qualifiedName</code> has a prefix and the
+     *                      <code>namespaceURI</code> is <code>null</code>, if the
+     *                      <code>qualifiedName</code> has a prefix that is "xml" and the
+     *                      <code>namespaceURI</code> is different from "
+     *                      http://www.w3.org/XML/1998/namespace", or if the
+     *                      <code>qualifiedName</code>, or its prefix, is "xmlns" and the
+     *                      <code>namespaceURI</code> is different from "
+     *                      http://www.w3.org/2000/xmlns/".
+     *                      <br>NOT_SUPPORTED_ERR: Always thrown if the current document does not
+     *                      support the <code>"XML"</code> feature, since namespaces were
+     *                      defined by XML.
+     * @since DOM Level 2
+     */
+    public Attr createAttributeNS(String namespaceURI, String qualifiedName) throws DOMException {
+        return document.createAttributeNS(namespaceURI, qualifiedName);
+    }
+
+    /**
+     * Returns a <code>NodeList</code> of all the <code>Elements</code> with a
+     * given local name and namespace URI in the order in which they are
+     * encountered in a preorder traversal of the <code>Document</code> tree.
+     *
+     * @param namespaceURI The namespace URI of the elements to match on. The
+     *                     special value "*" matches all namespaces.
+     * @param localName    The local name of the elements to match on. The
+     *                     special value "*" matches all local names.
+     * @return A new <code>NodeList</code> object containing all the matched
+     *         <code>Elements</code>.
+     * @since DOM Level 2
+     */
+    public NodeList getElementsByTagNameNS(String namespaceURI, String localName) {
+        return document.getElementsByTagNameNS(namespaceURI, localName);
+    }
+
+    /**
+     * Returns the <code>Element</code> whose <code>ID</code> is given by
+     * <code>elementId</code>. If no such element exists, returns
+     * <code>null</code>. Behavior is not defined if more than one element
+     * has this <code>ID</code>. The DOM implementation must have
+     * information that says which attributes are of type ID. Attributes
+     * with the name "ID" are not of type ID unless so defined.
+     * Implementations that do not know whether attributes are of type ID or
+     * not are expected to return <code>null</code>.
+     *
+     * @param elementId The unique <code>id</code> value for an element.
+     * @return The matching element.
+     * @since DOM Level 2
+     */
+    public Element getElementById(String elementId) {
+        return document.getElementById(elementId);
+    }
+
+    public String getInputEncoding() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public String getXmlEncoding() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public boolean getXmlStandalone() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void setXmlStandalone(boolean xmlStandalone) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public String getXmlVersion() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void setXmlVersion(String xmlVersion) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public boolean getStrictErrorChecking() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void setStrictErrorChecking(boolean strictErrorChecking) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public String getDocumentURI() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void setDocumentURI(String documentURI) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public Node adoptNode(Node source) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public DOMConfiguration getDomConfig() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void normalizeDocument() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public Node renameNode(Node n, String namespaceURI, String qualifiedName) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    /**
+     * The name of this node, depending on its type; see the table above.
+     */
+    public String getNodeName() {
+        return document.getNodeName();
+    }
+
+    /**
+     * The value of this node, depending on its type; see the table above.
+     * When it is defined to be <code>null</code>, setting it has no effect.
+     *
+     * @throws DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+     * @throws DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than
+     *                      fit in a <code>DOMString</code> variable on the implementation
+     *                      platform.
+     */
+    public String getNodeValue() throws DOMException {
+        return document.getNodeValue();
+    }
+
+    /**
+     * The value of this node, depending on its type; see the table above.
+     * When it is defined to be <code>null</code>, setting it has no effect.
+     *
+     * @throws DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+     * @throws DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than
+     *                      fit in a <code>DOMString</code> variable on the implementation
+     *                      platform.
+     */
+    public void setNodeValue(String arg0) throws DOMException {
+        document.setNodeValue(arg0);
+    }
+
+    /**
+     * A code representing the type of the underlying object, as defined above.
+     */
+    public short getNodeType() {
+        return document.getNodeType();
+    }
+
+    /**
+     * The parent of this node. All nodes, except <code>Attr</code>,
+     * <code>Document</code>, <code>DocumentFragment</code>,
+     * <code>Entity</code>, and <code>Notation</code> may have a parent.
+     * However, if a node has just been created and not yet added to the
+     * tree, or if it has been removed from the tree, this is
+     * <code>null</code>.
+     */
+    public Node getParentNode() {
+        return document.getParentNode();
+    }
+
+    /**
+     * A <code>NodeList</code> that contains all children of this node. If
+     * there are no children, this is a <code>NodeList</code> containing no
+     * nodes.
+     */
+    public NodeList getChildNodes() {
+        return document.getChildNodes();
+    }
+
+    /**
+     * The first child of this node. If there is no such node, this returns
+     * <code>null</code>.
+     */
+    public Node getFirstChild() {
+        return document.getFirstChild();
+    }
+
+    /**
+     * The last child of this node. If there is no such node, this returns
+     * <code>null</code>.
+     */
+    public Node getLastChild() {
+        return document.getLastChild();
+    }
+
+    /**
+     * The node immediately preceding this node. If there is no such node,
+     * this returns <code>null</code>.
+     */
+    public Node getPreviousSibling() {
+        return document.getPreviousSibling();
+    }
+
+    /**
+     * The node immediately following this node. If there is no such node,
+     * this returns <code>null</code>.
+     */
+    public Node getNextSibling() {
+        return document.getNextSibling();
+    }
+
+    /**
+     * A <code>NamedNodeMap</code> containing the attributes of this node (if
+     * it is an <code>Element</code>) or <code>null</code> otherwise.
+     */
+    public NamedNodeMap getAttributes() {
+        return document.getAttributes();
+    }
+
+    /**
+     * The <code>Document</code> object associated with this node. This is
+     * also the <code>Document</code> object used to create new nodes. When
+     * this node is a <code>Document</code> or a <code>DocumentType</code>
+     * which is not used with any <code>Document</code> yet, this is
+     * <code>null</code>.
+     */
+    public Document getOwnerDocument() {
+        return document.getOwnerDocument();
+    }
+
+    /**
+     * Inserts the node <code>newChild</code> before the existing child node
+     * <code>refChild</code>. If <code>refChild</code> is <code>null</code>,
+     * insert <code>newChild</code> at the end of the list of children.
+     * <br>If <code>newChild</code> is a <code>DocumentFragment</code> object,
+     * all of its children are inserted, in the same order, before
+     * <code>refChild</code>. If the <code>newChild</code> is already in the
+     * tree, it is first removed.
+     *
+     * @param newChild The node to insert.
+     * @param refChild The reference node, i.e., the node before which the
+     *                 new node must be inserted.
+     * @return The node being inserted.
+     * @throws DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
+     *                      allow children of the type of the <code>newChild</code> node, or if
+     *                      the node to insert is one of this node's ancestors or this node
+     *                      itself.
+     *                      <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
+     *                      from a different document than the one that created this node.
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or
+     *                      if the parent of the node being inserted is readonly.
+     *                      <br>NOT_FOUND_ERR: Raised if <code>refChild</code> is not a child of
+     *                      this node.
+     */
+    public Node insertBefore(Node newChild, Node refChild) throws DOMException {
+        return document.insertBefore(newChild, refChild);
+    }
+
+    /**
+     * Replaces the child node <code>oldChild</code> with <code>newChild</code>
+     * in the list of children, and returns the <code>oldChild</code> node.
+     * <br>If <code>newChild</code> is a <code>DocumentFragment</code> object,
+     * <code>oldChild</code> is replaced by all of the
+     * <code>DocumentFragment</code> children, which are inserted in the
+     * same order. If the <code>newChild</code> is already in the tree, it
+     * is first removed.
+     *
+     * @param newChild The new node to put in the child list.
+     * @param oldChild The node being replaced in the list.
+     * @return The node replaced.
+     * @throws DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
+     *                      allow children of the type of the <code>newChild</code> node, or if
+     *                      the node to put in is one of this node's ancestors or this node
+     *                      itself.
+     *                      <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
+     *                      from a different document than the one that created this node.
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the parent of
+     *                      the new node is readonly.
+     *                      <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
+     *                      this node.
+     */
+    public Node replaceChild(Node newChild, Node oldChild) throws DOMException {
+        return document.replaceChild(newChild, oldChild);
+    }
+
+    /**
+     * Removes the child node indicated by <code>oldChild</code> from the list
+     * of children, and returns it.
+     *
+     * @param oldChild The node being removed.
+     * @return The node removed.
+     * @throws DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     *                      <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
+     *                      this node.
+     */
+    public Node removeChild(Node oldChild) throws DOMException {
+        return document.removeChild(oldChild);
+    }
+
+    /**
+     * Adds the node <code>newChild</code> to the end of the list of children
+     * of this node. If the <code>newChild</code> is already in the tree, it
+     * is first removed.
+     *
+     * @param newChild The node to add.If it is a
+     *                 <code>DocumentFragment</code> object, the entire contents of the
+     *                 document fragment are moved into the child list of this node
+     * @return The node added.
+     * @throws DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
+     *                      allow children of the type of the <code>newChild</code> node, or if
+     *                      the node to append is one of this node's ancestors or this node
+     *                      itself.
+     *                      <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
+     *                      from a different document than the one that created this node.
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or
+     *                      if the previous parent of the node being inserted is readonly.
+     */
+    public Node appendChild(Node newChild) throws DOMException {
+        return document.appendChild(newChild);
+    }
+
+    /**
+     * Returns whether this node has any children.
+     *
+     * @return <code>true</code> if this node has any children,
+     *         <code>false</code> otherwise.
+     */
+    public boolean hasChildNodes() {
+        return document.hasChildNodes();
+    }
+
+    /**
+     * Returns a duplicate of this node, i.e., serves as a generic copy
+     * constructor for nodes. The duplicate node has no parent; (
+     * <code>parentNode</code> is <code>null</code>.).
+     * <br>Cloning an <code>Element</code> copies all attributes and their
+     * values, including those generated by the XML processor to represent
+     * defaulted attributes, but this method does not copy any text it
+     * contains unless it is a deep clone, since the text is contained in a
+     * child <code>Text</code> node. Cloning an <code>Attribute</code>
+     * directly, as opposed to be cloned as part of an <code>Element</code>
+     * cloning operation, returns a specified attribute (
+     * <code>specified</code> is <code>true</code>). Cloning any other type
+     * of node simply returns a copy of this node.
+     * <br>Note that cloning an immutable subtree results in a mutable copy,
+     * but the children of an <code>EntityReference</code> clone are readonly
+     * . In addition, clones of unspecified <code>Attr</code> nodes are
+     * specified. And, cloning <code>Document</code>,
+     * <code>DocumentType</code>, <code>Entity</code>, and
+     * <code>Notation</code> nodes is implementation dependent.
+     *
+     * @param deep If <code>true</code>, recursively clone the subtree under
+     *             the specified node; if <code>false</code>, clone only the node
+     *             itself (and its attributes, if it is an <code>Element</code>).
+     * @return The duplicate node.
+     */
+    public Node cloneNode(boolean deep) {
+        return document.cloneNode(deep);
+    }
+
+    /**
+     * Puts all <code>Text</code> nodes in the full depth of the sub-tree
+     * underneath this <code>Node</code>, including attribute nodes, into a
+     * "normal" form where only structure (e.g., elements, comments,
+     * processing instructions, CDATA sections, and entity references)
+     * separates <code>Text</code> nodes, i.e., there are neither adjacent
+     * <code>Text</code> nodes nor empty <code>Text</code> nodes. This can
+     * be used to ensure that the DOM view of a document is the same as if
+     * it were saved and re-loaded, and is useful when operations (such as
+     * XPointer  lookups) that depend on a particular document tree
+     * structure are to be used.In cases where the document contains
+     * <code>CDATASections</code>, the normalize operation alone may not be
+     * sufficient, since XPointers do not differentiate between
+     * <code>Text</code> nodes and <code>CDATASection</code> nodes.
+     */
+    public void normalize() {
+        document.normalize();
+    }
+
+    /**
+     * Tests whether the DOM implementation implements a specific feature and
+     * that feature is supported by this node.
+     *
+     * @param feature The name of the feature to test. This is the same name
+     *                which can be passed to the method <code>hasFeature</code> on
+     *                <code>DOMImplementation</code>.
+     * @param version This is the version number of the feature to test. In
+     *                Level 2, version 1, this is the string "2.0". If the version is not
+     *                specified, supporting any version of the feature will cause the
+     *                method to return <code>true</code>.
+     * @return Returns <code>true</code> if the specified feature is
+     *         supported on this node, <code>false</code> otherwise.
+     * @since DOM Level 2
+     */
+    public boolean isSupported(String feature, String version) {
+        return document.isSupported(feature, version);
+    }
+
+    /**
+     * The namespace URI of this node, or <code>null</code> if it is
+     * unspecified.
+     * <br>This is not a computed value that is the result of a namespace
+     * lookup based on an examination of the namespace declarations in
+     * scope. It is merely the namespace URI given at creation time.
+     * <br>For nodes of any type other than <code>ELEMENT_NODE</code> and
+     * <code>ATTRIBUTE_NODE</code> and nodes created with a DOM Level 1
+     * method, such as <code>createElement</code> from the
+     * <code>Document</code> interface, this is always <code>null</code>.Per
+     * the Namespaces in XML Specification  an attribute does not inherit
+     * its namespace from the element it is attached to. If an attribute is
+     * not explicitly given a namespace, it simply has no namespace.
+     *
+     * @since DOM Level 2
+     */
+    public String getNamespaceURI() {
+        return document.getNamespaceURI();
+    }
+
+    /**
+     * The namespace prefix of this node, or <code>null</code> if it is
+     * unspecified.
+     * <br>Note that setting this attribute, when permitted, changes the
+     * <code>nodeName</code> attribute, which holds the qualified name, as
+     * well as the <code>tagName</code> and <code>name</code> attributes of
+     * the <code>Element</code> and <code>Attr</code> interfaces, when
+     * applicable.
+     * <br>Note also that changing the prefix of an attribute that is known to
+     * have a default value, does not make a new attribute with the default
+     * value and the original prefix appear, since the
+     * <code>namespaceURI</code> and <code>localName</code> do not change.
+     * <br>For nodes of any type other than <code>ELEMENT_NODE</code> and
+     * <code>ATTRIBUTE_NODE</code> and nodes created with a DOM Level 1
+     * method, such as <code>createElement</code> from the
+     * <code>Document</code> interface, this is always <code>null</code>.
+     *
+     * @throws DOMException INVALID_CHARACTER_ERR: Raised if the specified prefix contains an
+     *                      illegal character, per the XML 1.0 specification .
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     *                      <br>NAMESPACE_ERR: Raised if the specified <code>prefix</code> is
+     *                      malformed per the Namespaces in XML specification, if the
+     *                      <code>namespaceURI</code> of this node is <code>null</code>, if the
+     *                      specified prefix is "xml" and the <code>namespaceURI</code> of this
+     *                      node is different from "http://www.w3.org/XML/1998/namespace", if
+     *                      this node is an attribute and the specified prefix is "xmlns" and
+     *                      the <code>namespaceURI</code> of this node is different from "
+     *                      http://www.w3.org/2000/xmlns/", or if this node is an attribute and
+     *                      the <code>qualifiedName</code> of this node is "xmlns" .
+     * @since DOM Level 2
+     */
+    public String getPrefix() {
+        return document.getPrefix();
+    }
+
+    /**
+     * The namespace prefix of this node, or <code>null</code> if it is
+     * unspecified.
+     * <br>Note that setting this attribute, when permitted, changes the
+     * <code>nodeName</code> attribute, which holds the qualified name, as
+     * well as the <code>tagName</code> and <code>name</code> attributes of
+     * the <code>Element</code> and <code>Attr</code> interfaces, when
+     * applicable.
+     * <br>Note also that changing the prefix of an attribute that is known to
+     * have a default value, does not make a new attribute with the default
+     * value and the original prefix appear, since the
+     * <code>namespaceURI</code> and <code>localName</code> do not change.
+     * <br>For nodes of any type other than <code>ELEMENT_NODE</code> and
+     * <code>ATTRIBUTE_NODE</code> and nodes created with a DOM Level 1
+     * method, such as <code>createElement</code> from the
+     * <code>Document</code> interface, this is always <code>null</code>.
+     *
+     * @throws DOMException INVALID_CHARACTER_ERR: Raised if the specified prefix contains an
+     *                      illegal character, per the XML 1.0 specification .
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     *                      <br>NAMESPACE_ERR: Raised if the specified <code>prefix</code> is
+     *                      malformed per the Namespaces in XML specification, if the
+     *                      <code>namespaceURI</code> of this node is <code>null</code>, if the
+     *                      specified prefix is "xml" and the <code>namespaceURI</code> of this
+     *                      node is different from "http://www.w3.org/XML/1998/namespace", if
+     *                      this node is an attribute and the specified prefix is "xmlns" and
+     *                      the <code>namespaceURI</code> of this node is different from "
+     *                      http://www.w3.org/2000/xmlns/", or if this node is an attribute and
+     *                      the <code>qualifiedName</code> of this node is "xmlns" .
+     * @since DOM Level 2
+     */
+    public void setPrefix(String arg0) throws DOMException {
+        document.setPrefix(arg0);
+    }
+
+    /**
+     * Returns the local part of the qualified name of this node.
+     * <br>For nodes of any type other than <code>ELEMENT_NODE</code> and
+     * <code>ATTRIBUTE_NODE</code> and nodes created with a DOM Level 1
+     * method, such as <code>createElement</code> from the
+     * <code>Document</code> interface, this is always <code>null</code>.
+     *
+     * @since DOM Level 2
+     */
+    public String getLocalName() {
+        return document.getLocalName();
+    }
+
+    /**
+     * Returns whether this node (if it is an element) has any attributes.
+     *
+     * @return <code>true</code> if this node has any attributes,
+     *         <code>false</code> otherwise.
+     * @since DOM Level 2
+     */
+    public boolean hasAttributes() {
+        return document.hasAttributes();
+    }
+
+    protected void setMessage(SOAPMessageImpl message) {
+        soapMessage = message;
+    }
+
+    /*
+     * DOM-Level 3 methods
+     */
+
+    public String getBaseURI() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public short compareDocumentPosition(Node arg0) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public String getTextContent() throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void setTextContent(String arg0) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public boolean isSameNode(Node arg0) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public String lookupPrefix(String arg0) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public boolean isDefaultNamespace(String arg0) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public String lookupNamespaceURI(String arg0) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public boolean isEqualNode(Node arg0) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public Object getFeature(String arg0, String arg1) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public Object setUserData(String arg0, Object arg1, UserDataHandler arg2) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public Object getUserData(String arg0) {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/TextImplEx.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/TextImplEx.java
new file mode 100644
index 0000000..ee8552b
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/TextImplEx.java
@@ -0,0 +1,312 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axiom.om.impl.dom.TextImpl;
+import org.w3c.dom.DOMException;
+
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.Text;
+import javax.xml.stream.XMLStreamException;
+
+public class TextImplEx extends NodeImplEx implements Text {
+
+    //TODO: assign textNode
+
+    private TextImpl textNode;
+
+    private org.w3c.dom.Node previousSibling;
+    private org.w3c.dom.Node nextSibling;
+
+    public TextImplEx(String data, SOAPElement parent) {
+        super(((SOAPElementImpl)parent).getOMFactory());
+        textNode = (TextImpl) DOOMAbstractFactory.getOMFactory().createOMText(data);
+        this.parentElement = parent;
+    }
+
+    public TextImplEx(String data, SOAPElement parent,
+                      org.w3c.dom.Node prevSibling, org.w3c.dom.Node nextSibling) {
+        super(((SOAPElementImpl)parent).getOMFactory());
+        textNode = (TextImpl) DOOMAbstractFactory.getOMFactory().createOMText(data);
+        this.parentElement = parent;
+        this.previousSibling = prevSibling;
+        this.nextSibling = nextSibling;
+    }
+
+    public void setNextSibling(org.w3c.dom.Node nextSibling) {
+        this.nextSibling = nextSibling;
+    }
+
+    public void setPreviousSibling(org.w3c.dom.Node previousSibling) {
+        this.previousSibling = previousSibling;
+    }
+
+    /**
+     * Retrieves whether this <CODE>Text</CODE> object
+     * represents a comment.
+     *
+     * @return <CODE>true</CODE> if this <CODE>Text</CODE> object is
+     *         a comment; <CODE>false</CODE> otherwise
+     */
+    public boolean isComment() {
+        String value = textNode.getText();
+        return value.startsWith("<!--") && value.endsWith("-->");
+    }
+
+    /**
+     * The name of this node, depending on its type; see the table above.
+     */
+    public String getNodeName() {
+        return textNode.getNodeName();
+    }
+
+    /**
+     * A code representing the type of the underlying object, as defined above.
+     */
+    public short getNodeType() {
+        return textNode.getNodeType();
+    }
+
+    /**
+     * Breaks this node into two nodes at the specified <code>offset</code>,
+     * keeping both in the tree as siblings. After being split, this node
+     * will contain all the content up to the <code>offset</code> point. A
+     * new node of the same type, which contains all the content at and
+     * after the <code>offset</code> point, is returned. If the original
+     * node had a parent node, the new node is inserted as the next sibling
+     * of the original node. When the <code>offset</code> is equal to the
+     * length of this node, the new node has no data.
+     *
+     * @param offset The 16-bit unit offset at which to split, starting from
+     *               <code>0</code>.
+     * @return The new node, of the same type as this node.
+     * @throws DOMException INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
+     *                      than the number of 16-bit units in <code>data</code>.
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     */
+    public org.w3c.dom.Text splitText(int offset) throws DOMException {
+        return textNode.splitText(offset);
+    }
+
+    public boolean isElementContentWhitespace() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public String getWholeText() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public org.w3c.dom.Text replaceWholeText(String content) throws DOMException {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    /**
+     * The character data of the node that implements this interface. The DOM
+     * implementation may not put arbitrary limits on the amount of data
+     * that may be stored in a <code>CharacterData</code> node. However,
+     * implementation limits may mean that the entirety of a node's data may
+     * not fit into a single <code>DOMString</code>. In such cases, the user
+     * may call <code>substringData</code> to retrieve the data in
+     * appropriately sized pieces.
+     *
+     * @throws DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+     * @throws DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than
+     *                      fit in a <code>DOMString</code> variable on the implementation
+     *                      platform.
+     */
+    public String getData() throws DOMException {
+        return textNode.getData();
+    }
+
+    /**
+     * The character data of the node that implements this interface. The DOM
+     * implementation may not put arbitrary limits on the amount of data
+     * that may be stored in a <code>CharacterData</code> node. However,
+     * implementation limits may mean that the entirety of a node's data may
+     * not fit into a single <code>DOMString</code>. In such cases, the user
+     * may call <code>substringData</code> to retrieve the data in
+     * appropriately sized pieces.
+     *
+     * @throws DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+     * @throws DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than
+     *                      fit in a <code>DOMString</code> variable on the implementation
+     *                      platform.
+     */
+    public void setData(String data) throws DOMException {
+        textNode.setData(data);
+    }
+
+    /**
+     * Extracts a range of data from the node.
+     *
+     * @param offset Start offset of substring to extract.
+     * @param count  The number of 16-bit units to extract.
+     * @return The specified substring. If the sum of <code>offset</code> and
+     *         <code>count</code> exceeds the <code>length</code>, then all 16-bit
+     *         units to the end of the data are returned.
+     * @throws DOMException INDEX_SIZE_ERR: Raised if the specified <code>offset</code> is
+     *                      negative or greater than the number of 16-bit units in
+     *                      <code>data</code>, or if the specified <code>count</code> is
+     *                      negative.
+     *                      <br>DOMSTRING_SIZE_ERR: Raised if the specified range of text does
+     *                      not fit into a <code>DOMString</code>.
+     */
+    public String substringData(int offset, int count) throws DOMException {
+        return textNode.substringData(offset, count);
+    }
+
+    /**
+     * Append the string to the end of the character data of the node. Upon
+     * success, <code>data</code> provides access to the concatenation of
+     * <code>data</code> and the <code>DOMString</code> specified.
+     *
+     * @param value The <code>DOMString</code> to append.
+     * @throws DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     */
+    public void appendData(String value) throws DOMException {
+        textNode.appendData(value);
+    }
+
+    /**
+     * Insert a string at the specified 16-bit unit offset.
+     *
+     * @param offset The character offset at which to insert.
+     * @param data   The <code>DOMString</code> to insert.
+     * @throws DOMException INDEX_SIZE_ERR: Raised if the specified <code>offset</code> is
+     *                      negative or greater than the number of 16-bit units in
+     *                      <code>data</code>.
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     */
+    public void insertData(int offset, String data) throws DOMException {
+        textNode.insertData(offset, data);
+    }
+
+    /**
+     * Remove a range of 16-bit units from the node. Upon success,
+     * <code>data</code> and <code>length</code> reflect the change.
+     *
+     * @param offset The offset from which to start removing.
+     * @param count  The number of 16-bit units to delete. If the sum of
+     *               <code>offset</code> and <code>count</code> exceeds
+     *               <code>length</code> then all 16-bit units from <code>offset</code>
+     *               to the end of the data are deleted.
+     * @throws DOMException INDEX_SIZE_ERR: Raised if the specified <code>offset</code> is
+     *                      negative or greater than the number of 16-bit units in
+     *                      <code>data</code>, or if the specified <code>count</code> is
+     *                      negative.
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     */
+    public void deleteData(int offset, int count) throws DOMException {
+        textNode.deleteData(offset, count);
+    }
+
+    /**
+     * Replace the characters starting at the specified 16-bit unit offset
+     * with the specified string.
+     *
+     * @param offset The offset from which to start replacing.
+     * @param count  The number of 16-bit units to replace. If the sum of
+     *               <code>offset</code> and <code>count</code> exceeds
+     *               <code>length</code>, then all 16-bit units to the end of the data
+     *               are replaced; (i.e., the effect is the same as a <code>remove</code>
+     *               method call with the same range, followed by an <code>append</code>
+     *               method invocation).
+     * @param data   The <code>DOMString</code> with which the range must be
+     *               replaced.
+     * @throws DOMException INDEX_SIZE_ERR: Raised if the specified <code>offset</code> is
+     *                      negative or greater than the number of 16-bit units in
+     *                      <code>data</code>, or if the specified <code>count</code> is
+     *                      negative.
+     *                      <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+     */
+    public void replaceData(int offset, int count, String data) throws DOMException {
+        textNode.replaceData(offset, count, data);
+    }
+
+    /* (non-Javadoc)
+      * @see org.apache.axiom.om.impl.OMNodeEx#setParent(org.apache.axiom.om.OMContainer)
+      */
+    public void setParent(OMContainer element) {
+        textNode.setParent(element);
+    }
+
+    /* (non-Javadoc)
+      * @see org.apache.axiom.om.OMNode#getParent()
+      */
+    public OMContainer getParent() {
+        return textNode.getParent();
+    }
+
+    /* (non-Javadoc)
+      * @see org.apache.axiom.om.OMNode#discard()
+      */
+    public void discard() throws OMException {
+        textNode.discard();
+    }
+
+    public void internalSerialize(javax.xml.stream.XMLStreamWriter writer) throws XMLStreamException {
+        textNode.internalSerialize(writer);
+    }
+
+    public void internalSerializeAndConsume(javax.xml.stream.XMLStreamWriter writer) throws XMLStreamException {
+        textNode.internalSerializeAndConsume(writer);
+    }
+
+    /**
+     * Retrieve the text value (data) of this
+     *
+     * @return The text value (data) of this
+     */
+    public String getValue() {
+        return textNode.getData();
+    }
+
+    /**
+     * If this is a Text node then this method will set its value, otherwise it
+     * sets the value of the immediate (Text) child of this node. The value of
+     * the immediate child of this node can be set only if, there is one child
+     * node and that node is a Text node, or if there are no children in which
+     * case a child Text node will be created.
+     *
+     * @param value the text to set
+     * @throws IllegalStateException if the node is not a Text  node and
+     *                               either has more than one child node or has a child node that
+     *                               is not a Text node
+     */
+    public void setValue(String value) {
+        textNode.setData(value);
+    }
+
+    public String toString() {
+        return getValue();
+    }
+
+
+    public org.w3c.dom.Node getNextSibling() {
+        return toSAAJNode(nextSibling);
+    }
+
+
+    public org.w3c.dom.Node getPreviousSibling() {
+        return toSAAJNode(previousSibling);
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/IDGenerator.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/IDGenerator.java
new file mode 100644
index 0000000..41f9959
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/IDGenerator.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj.util;
+
+import java.util.Random;
+
+/**
+ * Code borrowed from AuthenticatorBase.java for generating a secure id's.
+ */
+public class IDGenerator {
+
+    /**
+     * The number of random bytes to include when generating a
+     * session identifier.
+     */
+    protected static final int SESSION_ID_BYTES = 16;
+
+    /**
+     * A random number generator to use when generating session identifiers.
+     */
+    protected static Random random = null;
+
+    /**
+     * The Java class name of the random number generator class to be used
+     * when generating session identifiers.
+     */
+    protected static String randomClass = "java.security.SecureRandom";
+
+    /**
+     * Generate and return a new session identifier.
+     *
+     * @return a new session id
+     */
+    public static synchronized String generateID() {
+        // Generate a byte array containing a session identifier
+        byte bytes[] = new byte[SESSION_ID_BYTES];
+
+        getRandom().nextBytes(bytes);
+
+        // Render the result as a String of hexadecimal digits
+        StringBuffer result = new StringBuffer();
+
+        for (int i = 0; i < bytes.length; i++) {
+            byte b1 = (byte) ((bytes[i] & 0xf0) >> 4);
+            byte b2 = (byte) (bytes[i] & 0x0f);
+
+            if (b1 < 10) {
+                result.append((char) ('0' + b1));
+            } else {
+                result.append((char) ('A' + (b1 - 10)));
+            }
+            if (b2 < 10) {
+                result.append((char) ('0' + b2));
+            } else {
+                result.append((char) ('A' + (b2 - 10)));
+            }
+        }
+        return (result.toString());
+    }
+
+    /**
+     * Return the random number generator instance we should use for
+     * generating session identifiers.  If there is no such generator
+     * currently defined, construct and seed a new one.
+     *
+     * @return Random object
+     */
+    private static synchronized Random getRandom() {
+        if (random == null) {
+            try {
+                Class clazz = Class.forName(randomClass);
+                random = (Random) clazz.newInstance();
+            } catch (Exception e) {
+                random = new java.util.Random();
+            }
+        }
+        return (random);
+    }
+
+}
+
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/SAAJDataSource.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/SAAJDataSource.java
new file mode 100644
index 0000000..3ebdd5b
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/SAAJDataSource.java
@@ -0,0 +1,621 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj.util;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.FileInputStream;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 
+ */
+public class SAAJDataSource implements javax.activation.DataSource {
+
+    /**
+     * The content type. This defaults to
+     * <code>application/octet-stream</code>.
+     */
+    protected String contentType = "application/octet-stream";
+
+    /**
+     * The incoming source stream.
+     */
+    private InputStream ss;
+
+    /**
+     * Field MIN_MEMORY_DISK_CACHED
+     */
+    public static final int MIN_MEMORY_DISK_CACHED = -1;
+
+    /**
+     * Field MAX_MEMORY_DISK_CACHED
+     */
+    public static final int MAX_MEMORY_DISK_CACHED = 16 * 1024;
+
+    /**
+     * Field maxCached
+     */
+    protected int maxCached = MAX_MEMORY_DISK_CACHED;       // max in memory cached. Default.
+
+    /**
+     * Field diskCacheFile
+     */
+    protected java.io.File diskCacheFile = null;
+
+    // A list of open input Streams.
+
+    /**
+     * Field readers
+     */
+    protected java.util.WeakHashMap readers = new java.util.WeakHashMap();
+
+    /**
+     * Flag to show if the resources behind this have been deleted.
+     */
+    protected boolean deleted;
+
+    /**
+     * Field READ_CHUNK_SZ
+     */
+    public static final int READ_CHUNK_SZ = 32 * 1024;
+
+
+    /**
+     * The linked list to hold the in memory buffers.
+     */
+    protected java.util.LinkedList memorybuflist = new java.util.LinkedList();
+
+    /**
+     * Hold the last memory buffer.
+     */
+    protected byte[] currentMemoryBuf = null;
+
+    /**
+     * The number of bytes written to the above buffer.
+     */
+    protected int currentMemoryBufSz;
+
+    /**
+     * The total size in bytes in this data source.
+     */
+    protected long totalsz;
+
+    /**
+     * This is the cached disk stream.
+     */
+    protected java.io.BufferedOutputStream cachediskstream;
+
+    /**
+     * If true the source input stream is now closed.
+     */
+    protected boolean closed = false;
+
+    /**
+     * Constructor SAAJDataSource.
+     */
+    protected SAAJDataSource() {
+    }
+
+    /**
+     * Create a new boundary stream.
+     *
+     * @param ss          is the source input stream that is used to create this data source.
+     * @param maxCached   This is the max memory that is to be used to cache the data.
+     * @param contentType the mime type for this data stream.
+     *                    by buffering you can some effiency in searching.
+     * @throws java.io.IOException
+     */
+    public SAAJDataSource(InputStream ss, int maxCached, String contentType)
+            throws java.io.IOException {
+        this(ss, maxCached, contentType, false);
+    }
+
+    /**
+     * Create a new boundary stream.
+     *
+     * @param ss          is the source input stream that is used to create this data source.
+     * @param maxCached   This is the max memory that is to be used to cache the data.
+     * @param contentType the mime type for this data stream.
+     *                    by buffering you can some effiency in searching.
+     * @param readall     if true will read in the whole source.
+     * @throws java.io.IOException
+     */
+    public SAAJDataSource(InputStream ss,
+                          int maxCached,
+                          String contentType, boolean readall) throws java.io.IOException {
+
+        if (ss instanceof BufferedInputStream) {
+            this.ss = ss;
+        } else {
+            this.ss = new BufferedInputStream(ss);
+        }
+        this.maxCached = maxCached;
+        if ((null != contentType) && (contentType.length() != 0)) {
+            this.contentType = contentType;
+        }
+        if (maxCached < MIN_MEMORY_DISK_CACHED) {
+            throw new IllegalArgumentException("badMaxCached " + maxCached);
+        }
+
+        // for now read all in to disk.
+        if (readall) {
+            byte[] readbuffer = new byte[READ_CHUNK_SZ];
+            int read = 0;
+
+            do {
+                read = ss.read(readbuffer);
+
+                if (read > 0) {
+                    write(readbuffer, read);
+                }
+            } while (read > -1);
+            close();
+        }
+    }
+
+    /**
+     * This method is a low level write.
+     * Close the stream.
+     *
+     * @throws java.io.IOException
+     */
+    protected synchronized void close() throws java.io.IOException {
+
+        if (!closed) {
+            closed = true;                    // Markit as closed.
+            if (null != cachediskstream) {    // close the disk cache.
+                cachediskstream.close();
+
+                cachediskstream = null;
+            }
+            if (null != memorybuflist) {      // There is a memory buffer.
+                if (currentMemoryBufSz > 0) {
+                    byte[] tmp =
+                            new byte[currentMemoryBufSz];    // Get the last buffer and make it the sizeof the actual data.
+
+                    System.arraycopy(currentMemoryBuf, 0, tmp, 0,
+                                     currentMemoryBufSz);
+                    memorybuflist.set(memorybuflist.size() - 1,
+                                      tmp);                 // Now replace the last buffer with this size.
+                }
+                currentMemoryBuf = null;      // No need for this anymore.
+            }
+        }
+    }
+
+    /**
+     * Routine to flush data to disk if is in memory.
+     *
+     * @throws java.io.IOException
+     * @throws java.io.FileNotFoundException
+     */
+    protected void flushToDisk() throws IOException, FileNotFoundException {
+        LinkedList ml = memorybuflist;
+        if (ml != null) {
+            if (null == cachediskstream) {    // Need to create a disk cache
+                try {
+                    /* MessageContext mc = MessageContext.getCurrentContext();
+            String attdir = (mc == null)
+                            ? null
+                            : mc.getStrProp(
+                    MessageContext.ATTACHMENTS_DIR);*/
+                    String attdir = "temp";
+                    diskCacheFile = java.io.File.createTempFile("Axis", ".att",
+                                                                (attdir == null)
+                                                                ? null
+                                                                : new File(
+                                                                        attdir));
+                    cachediskstream = new BufferedOutputStream(new FileOutputStream(diskCacheFile));
+                    int listsz = ml.size();
+
+                    // Write out the entire memory held store to disk.
+                    for (java.util.Iterator it = ml.iterator();
+                         it.hasNext();) {
+                        byte[] rbuf = (byte[]) it.next();
+                        int bwrite = (listsz-- == 0)
+                                     ? currentMemoryBufSz
+                                     : rbuf.length;
+                        cachediskstream.write(rbuf, 0, bwrite);
+                        if (closed) {
+                            cachediskstream.close();
+                            cachediskstream = null;
+                        }
+                    }
+                    memorybuflist = null;
+                } catch (java.lang.SecurityException se) {
+                    diskCacheFile = null;
+                    cachediskstream = null;
+                    maxCached = java.lang.Integer.MAX_VALUE;
+                }
+            }
+        }
+    }
+
+    /**
+     * Write bytes to the stream.
+     *
+     * @param data all bytes of this array are written to the stream
+     * @throws java.io.IOException if there was a problem writing the data
+     */
+    protected void write(byte[] data) throws java.io.IOException {
+        write(data, data.length);
+    }
+
+    /**
+     * This method is a low level write.
+     * Note it is designed to in the future to allow streaming to both memory
+     * AND to disk simultaneously.
+     *
+     * @param data
+     * @param length
+     * @throws java.io.IOException
+     */
+    protected synchronized void write(byte[] data, int length) throws java.io.IOException {
+
+        if (closed) {
+            throw new java.io.IOException("streamClosed");
+        }
+
+        int byteswritten = 0;
+
+        if ((null != memorybuflist)
+            && (totalsz + length > maxCached)) {    // Cache to disk.
+            if (null == cachediskstream) {               // Need to create a disk cache
+                flushToDisk();
+            }
+        }
+
+        if (memorybuflist != null) {    // Can write to memory.
+            do {
+                if (null == currentMemoryBuf) {
+                    currentMemoryBuf = new byte[READ_CHUNK_SZ];
+                    currentMemoryBufSz = 0;
+
+                    memorybuflist.add(currentMemoryBuf);
+                }
+
+                // bytes to write is the min. between the remaining bytes and what is left in this buffer.
+                int bytes2write = Math.min((length - byteswritten),
+                                           (currentMemoryBuf.length
+                                            - currentMemoryBufSz));
+
+                // copy the data.
+                System.arraycopy(data, byteswritten, currentMemoryBuf,
+                                 currentMemoryBufSz, bytes2write);
+
+                byteswritten += bytes2write;
+                currentMemoryBufSz += bytes2write;
+
+                if (byteswritten
+                    < length) {    // only get more if we really need it.
+                    currentMemoryBuf = new byte[READ_CHUNK_SZ];
+                    currentMemoryBufSz = 0;
+                    memorybuflist.add(currentMemoryBuf);    // add it to the chain.
+                }
+            } while (byteswritten < length);
+        }
+
+        if (null != cachediskstream) {    // Write to the out going stream.
+            cachediskstream.write(data, 0, length);
+        }
+        totalsz += length;
+    }
+
+
+    /**
+     * get the filename of the content if it is cached to disk.
+     *
+     * @return file object pointing to file, or null for memory-stored content
+     */
+    public File getDiskCacheFile() {
+        return diskCacheFile;
+    }
+
+    public InputStream getInputStream() throws IOException {
+        return new SAAJInputStream();    // Return the memory held stream.
+    }
+
+    public OutputStream getOutputStream() throws IOException {
+        //TODO: Method implementation
+        return null;
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+
+    public String getName() {
+        String ret = null;
+        try {
+            flushToDisk();
+            if (diskCacheFile != null) {
+                ret = diskCacheFile.getAbsolutePath();
+            }
+        } catch (Exception e) {
+            diskCacheFile = null;
+        }
+        return ret;
+    }
+
+
+    /**
+     * Inner class to handle getting an input stream to this data source
+     * Handles creating an input stream to the source.
+     */
+    private class SAAJInputStream extends java.io.InputStream {
+
+        /**
+         * bytes read.
+         */
+        protected long bread = 0;
+
+        /**
+         * The real stream.
+         */
+        private FileInputStream fileIS;
+
+        /**
+         * The position in the list were we are reading from.
+         */
+        int currentIndex;
+
+        /**
+         * the buffer we are currently reading from.
+         */
+        byte[] currentBuf;
+
+        /**
+         * The current position in there.
+         */
+        int currentBufPos;
+
+        /**
+         * The read stream has been closed.
+         */
+        boolean readClosed;
+
+        /**
+         * Constructor Instream.
+         *
+         * @throws java.io.IOException if the Instream could not be created or
+         *                             if the data source has been deleted
+         */
+        protected SAAJInputStream() throws java.io.IOException {
+            if (deleted) {
+                throw new java.io.IOException("resourceDeleted");
+            }
+            readers.put(this, null);
+        }
+
+        /**
+         * Query for the number of bytes available for reading.
+         *
+         * @return the number of bytes left
+         * @throws java.io.IOException if this stream is not in a state that
+         *                             supports reading
+         */
+        public int available() throws java.io.IOException {
+            if (deleted) {
+                throw new java.io.IOException("resourceDeleted");
+            }
+            if (readClosed) {
+                throw new java.io.IOException("streamClosed");
+            }
+            return new Long(Math.min(Integer.MAX_VALUE, totalsz - bread)).intValue();
+        }
+
+        /**
+         * Read a byte from the stream.
+         *
+         * @return byte read or -1 if no more data.
+         * @throws java.io.IOException
+         */
+        public int read() throws java.io.IOException {
+            synchronized (SAAJDataSource.this) {
+                byte[] retb = new byte[1];
+                int br = read(retb, 0, 1);
+                if (br == -1) {
+                    return -1;
+                }
+                return 0xFF & retb[0];
+            }
+        }
+
+        /**
+         * Not supported.
+         */
+        public boolean markSupported() {
+            return false;
+        }
+
+        /**
+         * Not supported.
+         *
+         * @param readlimit
+         */
+        public void mark(int readlimit) {
+        }
+
+        /**
+         * Not supported.
+         *
+         * @throws java.io.IOException
+         */
+        public void reset() throws IOException {
+            throw new IOException("noResetMark");
+        }
+
+        public long skip(long skipped) throws IOException {
+
+            if (deleted) {
+                throw new IOException("resourceDeleted");
+            }
+
+            if (readClosed) {
+                throw new IOException("streamClosed");
+            }
+
+            if (skipped < 1) {
+                return 0;    // nothing to skip.
+            }
+
+            synchronized (SAAJDataSource.this) {
+                skipped = Math.min(skipped, totalsz - bread);    // only skip what we've read.
+                if (skipped == 0) {
+                    return 0;
+                }
+                List ml = memorybuflist;    // hold the memory list.
+                int bwritten = 0;
+                if (ml != null) {
+                    if (null == currentBuf) {    // get the buffer we need to read from.
+                        currentBuf = (byte[]) ml.get(currentIndex);
+                        currentBufPos = 0;    // start reading from the begining.
+                    }
+                    do {
+                        long bcopy = Math.min(currentBuf.length - currentBufPos,
+                                              skipped - bwritten);
+
+                        bwritten += bcopy;
+                        currentBufPos += bcopy;
+                        if (bwritten < skipped) {
+                            currentBuf = (byte[]) ml.get(++currentIndex);
+                            currentBufPos = 0;
+                        }
+                    } while (bwritten < skipped);
+                }
+
+                if (null != fileIS) {
+                    fileIS.skip(skipped);
+                }
+
+                bread += skipped;
+            }
+            return skipped;
+        }
+
+        public int read(byte[] b, int off, int len) throws IOException {
+            if (deleted) {
+                throw new IOException("resourceDeleted");
+            }
+
+            if (readClosed) {
+                throw new IOException("streamClosed");
+            }
+
+            if (b == null) {
+                throw new RuntimeException("nullInput");
+            }
+
+            if (off < 0) {
+                throw new IndexOutOfBoundsException("negOffset " + off);
+            }
+
+            if (len < 0) {
+                throw new IndexOutOfBoundsException("length " + len);
+            }
+
+            if (len + off > b.length) {
+                throw new IndexOutOfBoundsException("writeBeyond");
+            }
+
+            if (len == 0) {
+                return 0;
+            }
+
+            int bwritten = 0;
+
+            synchronized (SAAJDataSource.this) {
+                if (bread == totalsz) {
+                    return -1;
+                }
+                List ml = memorybuflist;
+                long longlen = len;
+                longlen = Math.min(longlen, totalsz - bread);    // Only return the number of bytes in the data store that is left.
+                len = new Long(longlen).intValue();
+                if (ml != null) {
+                    if (null == currentBuf) {    // Get the buffer we need to read from.
+                        currentBuf = (byte[]) ml.get(currentIndex);
+                        currentBufPos = 0;    // New buffer start from the begining.
+                    }
+                    do {
+
+                        // The bytes to copy, the minimum of the bytes left in this buffer or bytes remaining.
+                        int bcopy = Math.min(currentBuf.length - currentBufPos, len - bwritten);
+
+                        // Copy the data.
+                        System.arraycopy(currentBuf, currentBufPos, b, off + bwritten, bcopy);
+                        bwritten += bcopy;
+                        currentBufPos += bcopy;
+                        if (bwritten < len) {    // Get the next buffer.
+                            currentBuf = (byte[]) ml.get(++currentIndex);
+                            currentBufPos = 0;
+                        }
+                    } while (bwritten < len);
+                }
+
+                if ((bwritten == 0) && (null != diskCacheFile)) {
+                    if (null == fileIS) {           // we are now reading from disk.
+                        fileIS = new java.io.FileInputStream(diskCacheFile);
+
+                        if (bread > 0) {
+                            fileIS.skip(bread);     // Skip what we've read so far.
+                        }
+                    }
+
+                    if (cachediskstream != null) {
+                        cachediskstream.flush();
+                    }
+                    bwritten = fileIS.read(b, off, len);
+                }
+
+                if (bwritten > 0) {
+                    bread += bwritten;
+                }
+            }
+            return bwritten;
+        }
+
+        /**
+         * close the stream.
+         *
+         * @throws IOException
+         */
+        public synchronized void close() throws IOException {
+            if (!readClosed) {
+                readers.remove(this);
+                readClosed = true;
+                if (fileIS != null) {
+                    fileIS.close();
+                }
+
+                fileIS = null;
+            }
+        }
+
+        protected void finalize() throws Throwable {
+            super.finalize();
+            close();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/SAAJUtil.java b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/SAAJUtil.java
new file mode 100644
index 0000000..75d8064
--- /dev/null
+++ b/rampart_1_1/modules/saaj/src/org/apache/axis2/saaj/util/SAAJUtil.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+/**
+ * Utility class for the Axis2-WSS4J Module
+ */
+public class SAAJUtil {
+
+    /**
+     * Create a DOM Document using the org.apache.axiom.soap.SOAPEnvelope
+     *
+     * @param env An org.apache.axiom.soap.SOAPEnvelope instance
+     * @return the DOM Document of the given SOAP Envelope
+     */
+    public static Document getDocumentFromSOAPEnvelope(org.apache.axiom.soap.SOAPEnvelope env) {
+        env.build();
+
+        //Check the namespace and find SOAP version and factory
+        String nsURI;
+        SOAPFactory factory;
+        if (env.getNamespace().getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+            nsURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+            factory = DOOMAbstractFactory.getSOAP11Factory();
+        } else {
+            nsURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+            factory = DOOMAbstractFactory.getSOAP11Factory();
+        }
+
+        StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(env.getXMLStreamReader(), factory, nsURI);
+        SOAPEnvelope envelope = (stAXSOAPModelBuilder).getSOAPEnvelope();
+        envelope.build();
+
+        Element envElem = (Element) envelope;
+        return envElem.getOwnerDocument();
+    }
+
+     /**
+     * Create a DOM Document using the org.apache.axiom.soap.SOAPEnvelope
+     *
+     * @param env An org.apache.axiom.soap.SOAPEnvelope instance
+     * @return the org.apache.axis2.soap.impl.dom.SOAPEnvelopeImpl of the given SOAP Envelope
+     */
+    public static org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl
+             toDOOMSOAPEnvelope(org.apache.axiom.soap.SOAPEnvelope env) {
+        env.build();
+
+        //Check the namespace and find SOAP version and factory
+        String nsURI;
+        SOAPFactory factory;
+        if (env.getNamespace().getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+            nsURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+            factory = DOOMAbstractFactory.getSOAP11Factory();
+        } else {
+            nsURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+            factory = DOOMAbstractFactory.getSOAP11Factory();
+        }
+
+        StAXSOAPModelBuilder stAXSOAPModelBuilder =
+                new StAXSOAPModelBuilder(env.getXMLStreamReader(), factory, nsURI);
+        SOAPEnvelope envelope = (stAXSOAPModelBuilder).getSOAPEnvelope();
+        envelope.build();
+
+        return (org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl) envelope;
+    }
+
+    public static org.apache.axiom.soap.SOAPEnvelope
+            getSOAPEnvelopeFromDOOMDocument(org.w3c.dom.Document doc) {
+
+        OMElement docElem = (OMElement) doc.getDocumentElement();
+        StAXSOAPModelBuilder stAXSOAPModelBuilder =
+                new StAXSOAPModelBuilder(docElem.getXMLStreamReader(), null);
+        return stAXSOAPModelBuilder.getSOAPEnvelope();
+    }
+
+
+    public static org.apache.axiom.soap.SOAPEnvelope
+            toOMSOAPEnvelope(org.w3c.dom.Element elem) {
+
+        OMElement docElem = (OMElement) elem;
+        StAXSOAPModelBuilder stAXSOAPModelBuilder =
+                new StAXSOAPModelBuilder(docElem.getXMLStreamReader(), null);
+        return stAXSOAPModelBuilder.getSOAPEnvelope();
+    }
+
+    /**
+     * Convert a given OMElement to a DOM Element
+     *
+     * @param element
+     * @return DOM Element
+     */
+    public static org.w3c.dom.Element toDOM(OMElement element) throws Exception {
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        element.serialize(baos);
+        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+
+        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+        factory.setNamespaceAware(true);
+        return factory.newDocumentBuilder().parse(bais).getDocumentElement();
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test-resources/axis2.jpg b/rampart_1_1/modules/saaj/test-resources/axis2.jpg
new file mode 100644
index 0000000..577ef8c
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test-resources/axis2.jpg
Binary files differ
diff --git a/rampart_1_1/modules/saaj/test-resources/axis2.xml b/rampart_1_1/modules/saaj/test-resources/axis2.xml
new file mode 100644
index 0000000..65b2fc8
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test-resources/axis2.xml
@@ -0,0 +1,124 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">true</parameter>
+    <parameter name="cacheAttachments" locked="false">false</parameter>
+    <!-- Uncomment this to enable REST support -->
+    <!--    <parameter name="eanbleREST" locked="false">true</parameter>-->
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+  <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+            <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Uncomment this to enable Addressing
+    <module ref="addressing"/> -->
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/saaj/test-resources/message.bin b/rampart_1_1/modules/saaj/test-resources/message.bin
new file mode 100644
index 0000000..8dced9f
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test-resources/message.bin
@@ -0,0 +1,14 @@
+--MIMEBoundaryurn:uuid:F02ECC18873CFB73E211412748909307
+content-type: application/xop+xml; charset=UTF-8; type="text/xml";
+content-transfer-encoding: binary
+content-id: <0.urn:uuid:F02ECC18873CFB73E211412748909308@apache.org>
+
+<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ns-prefix:Header1 xmlns:ns-prefix="ns-uri" xmlns:mustUnderstand="1" soapenv:mustUnderstand="1">This is Header1</ns-prefix:Header1><ns-prefix:Header2 xmlns:ns-prefix="ns-uri" xmlns:mustUnderstand="0" soapenv:mustUnderstand="0">This is Header2</ns-prefix:Header2><ns-prefix:Header3 xmlns:ns-prefix="ns-uri" xmlns:mustUnderstand="1" soapenv:mustUnderstand="1">This is Header3</ns-prefix:Header3><ns-prefix:Header4 xmlns:ns-prefix="ns-uri" xmlns:mustUnderstand="0" soapenv:mustUnderstand="0">This is Header4</ns-prefix:Header4></soapenv:Header><soapenv:Body><ns-prefix:Body1 xmlns:ns-prefix="ns-uri"><ns-prefix:Child1>This is Child1</ns-prefix:Child1><ns-prefix:Child2>This is Child2</ns-prefix:Child2></ns-prefix:Body1><swa:echo xmlns:swa="http://fakeNamespace.org"><internal xmlns=""><text xmlns=""><xop:Include href="cid:1.urn:uuid:F02ECC18873CFB73E211412748909349@apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include" /></text></internal></swa:echo></soapenv:Body></soapenv:Envelope>
+--MIMEBoundaryurn:uuid:F02ECC18873CFB73E211412748909307
+content-type: text/xml
+content-transfer-encoding: binary
+content-id: <1.urn:uuid:F02ECC18873CFB73E211412748909349@apache.org>
+
+TATA
+
+--MIMEBoundaryurn:uuid:F02ECC18873CFB73E211412748909307--
diff --git a/rampart_1_1/modules/saaj/test-resources/soap-body.xml b/rampart_1_1/modules/saaj/test-resources/soap-body.xml
new file mode 100644
index 0000000..38217f5
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test-resources/soap-body.xml
@@ -0,0 +1,9 @@
+<shw:Address shw:t='test' xmlns:shw="http://www.jcommerce.net/soap/ns/SOAPHelloWorld">
+    <shw:Number>12</shw:Number>
+    <shw:City>
+        <shw:z>Dehiwela</shw:z>
+    </shw:City>
+    <shw:Country>
+        <shw:y>Sri Lanka</shw:y>
+    </shw:Country>
+</shw:Address>
diff --git a/rampart_1_1/modules/saaj/test-resources/soap-part.xml b/rampart_1_1/modules/saaj/test-resources/soap-part.xml
new file mode 100644
index 0000000..e17bb4c
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test-resources/soap-part.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="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">
+    <soapenv:Header>
+        <shw:Hello xmlns:shw="http://www.jcommerce.net/soap/ns/SOAPHelloWorld">
+            <shw:Myname>Tony</shw:Myname>
+        </shw:Hello>
+    </soapenv:Header>
+    <soapenv:Body>
+        <shw:Address shw:t='test' xmlns:shw="http://www.jcommerce.net/soap/ns/SOAPHelloWorld">
+            <shw:City>GENT</shw:City>
+        </shw:Address>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/AttachmentSerializationTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/AttachmentSerializationTest.java
new file mode 100644
index 0000000..e467962
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/AttachmentSerializationTest.java
@@ -0,0 +1,142 @@
+/*
+* Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.xml.soap.AttachmentPart;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+
+public class AttachmentSerializationTest extends TestCase {
+
+    public static final String MIME_MULTIPART_RELATED = "multipart/related";
+    public static final String MIME_APPLICATION_DIME = "application/dime";
+    public static final String NS_PREFIX = "jaxmtst";
+    public static final String NS_URI = "http://www.jcommerce.net/soap/jaxm/TestJaxm";
+
+    public AttachmentSerializationTest(String name) {
+        super(name);
+    }
+
+    public void testAttachments() throws Exception {
+        try {
+            ByteArrayOutputStream bais = new ByteArrayOutputStream();
+            int count = saveMsgWithAttachments(bais);
+            assertEquals(count, 2);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    public int saveMsgWithAttachments(OutputStream os) throws Exception {
+        MessageFactory mf = MessageFactory.newInstance();
+        SOAPMessage msg = mf.createMessage();
+
+        SOAPPart soapPart = msg.getSOAPPart();
+        SOAPEnvelope envelope = soapPart.getEnvelope();
+        SOAPHeader header = envelope.getHeader();
+        SOAPBody body = envelope.getBody();
+
+        SOAPElement el = header.addHeaderElement(envelope.createName("field4", NS_PREFIX, NS_URI));
+
+        SOAPElement el2 = el.addChildElement("field4b", NS_PREFIX);
+        el2.addTextNode("field4value");
+
+        el = body.addBodyElement(envelope.createName("bodyfield3", NS_PREFIX, NS_URI));
+        el2 = el.addChildElement("bodyfield3a", NS_PREFIX);
+        el2.addTextNode("bodyvalue3a");
+        el2 = el.addChildElement("bodyfield3b", NS_PREFIX);
+        el2.addTextNode("bodyvalue3b");
+        el.addChildElement("datefield", NS_PREFIX);
+
+        // First Attachment
+        AttachmentPart ap = msg.createAttachmentPart();
+        final String testText = "some attachment text...";
+        ap.setContent(testText, "text/plain");
+        msg.addAttachmentPart(ap);
+
+        // Second attachment
+        String jpgfilename = "test-resources/axis2.jpg";
+        File myfile = new File(jpgfilename);
+        FileDataSource fds = new FileDataSource(myfile);
+        DataHandler dh = new DataHandler(fds);
+        AttachmentPart ap2 = msg.createAttachmentPart(dh);
+        ap2.setContentType("image/jpg");
+        msg.addAttachmentPart(ap2);
+
+        MimeHeaders headers = msg.getMimeHeaders();
+        assertTrue(headers != null);
+        String [] contentType = headers.getHeader("Content-Type");
+        assertTrue(contentType != null);
+
+        int i = 0;
+        for (Iterator iter = msg.getAttachments(); iter.hasNext();) {
+            AttachmentPart attachmentPart = (AttachmentPart) iter.next();
+            final Object content = attachmentPart.getDataHandler().getContent();
+            if (content instanceof String) {
+                assertEquals(testText, (String) content);
+            } else if (content instanceof FileInputStream) {
+
+                // try to write to a File and check whether it is ok
+                final FileInputStream fis = (FileInputStream) content;
+                byte[] b = new byte[15000];
+                final int lengthRead = fis.read(b);
+                FileOutputStream fos =
+                        new FileOutputStream(new File("target/test-resources/atts-op" + (i++) + ".jpg"));
+                fos.write(b, 0, lengthRead);
+                fos.flush();
+                fos.close();
+            }
+        }
+
+        msg.writeTo(os);
+        os.flush();
+        msg.writeTo(System.out);
+        return msg.countAttachments();
+    }
+
+    public int loadMsgWithAttachments(InputStream is) throws Exception {
+        MimeHeaders headers = new MimeHeaders();
+        headers.setHeader("Content-Type", MIME_MULTIPART_RELATED);
+        MessageFactory mf = MessageFactory.newInstance();
+        SOAPMessage msg = mf.createMessage(headers, is);
+
+        SOAPPart sp = msg.getSOAPPart();
+        assertTrue(sp != null);
+
+        SOAPEnvelope envelope = sp.getEnvelope();
+        assertTrue(envelope != null);
+        return msg.countAttachments();
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/AttachmentTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/AttachmentTest.java
new file mode 100644
index 0000000..055d37e
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/AttachmentTest.java
@@ -0,0 +1,143 @@
+package org.apache.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.xml.soap.AttachmentPart;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.transform.stream.StreamSource;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class AttachmentTest extends TestCase {
+
+    public AttachmentTest(String name) {
+        super(name);
+    }
+
+    public void testStringAttachment() throws Exception {
+
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message = factory.createMessage();
+        AttachmentPart attachment = message.createAttachmentPart();
+        String stringContent = "Update address for Sunny Skies " +
+                               "Inc., to 10 Upbeat Street, Pleasant Grove, CA 95439";
+
+        attachment.setContent(stringContent, "text/plain");
+        attachment.setContentId("update_address");
+        message.addAttachmentPart(attachment);
+
+        assertTrue(message.countAttachments() == 1);
+
+        java.util.Iterator it = message.getAttachments();
+        while (it.hasNext()) {
+            attachment = (AttachmentPart) it.next();
+            Object content = attachment.getContent();
+            String id = attachment.getContentId();
+            System.out.println("Attachment " + id + " contains: " + content);
+            assertEquals(content, stringContent);
+        }
+        System.out.println("Here is what the XML message looks like:");
+        message.writeTo(System.out);
+
+        message.removeAllAttachments();
+        assertTrue(message.countAttachments() == 0);
+    }
+
+    public void testMultipleAttachments() throws Exception {
+
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage msg = factory.createMessage();
+        java.net.URL url1 = new java.net.URL("http://www.apache.org/licenses/LICENSE-2.0.html");
+        java.net.URL url2 = new java.net.URL("http://www.apache.org/licenses/LICENSE-2.0.txt");
+
+        AttachmentPart a1 = msg.createAttachmentPart(new javax.activation.DataHandler(url1));
+        a1.setContentType("text/xml");
+        msg.addAttachmentPart(a1);
+        AttachmentPart a2 = msg.createAttachmentPart(new javax.activation.DataHandler(url1));
+        a2.setContentType("text/xml");
+        msg.addAttachmentPart(a2);
+        AttachmentPart a3 = msg.createAttachmentPart(new javax.activation.DataHandler(url2));
+        a3.setContentType("text/plain");
+        msg.addAttachmentPart(a3);
+
+        assertTrue(msg.countAttachments() == 3);
+
+        javax.xml.soap.MimeHeaders mimeHeaders = new javax.xml.soap.MimeHeaders();
+        mimeHeaders.addHeader("Content-Type", "text/xml");
+
+        int nAttachments = 0;
+        java.util.Iterator iterator = msg.getAttachments(mimeHeaders);
+        while (iterator.hasNext()) {
+            nAttachments++;
+            AttachmentPart ap = (AttachmentPart) iterator.next();
+            assertTrue(ap.equals(a1) || ap.equals(a2));
+        }
+        assertTrue(nAttachments == 2);
+    }
+
+    public void _testAttachment() {
+        try {
+            MessageFactory factory = MessageFactory.newInstance();
+            SOAPMessage msg = factory.createMessage();
+
+            AttachmentPart ap = msg.createAttachmentPart();
+            File f = new File("test-resources" + File.separator + "axis2.xml");
+            InputStream in = new FileInputStream("test-resources" + File.separator + "axis2.jpg");
+            ap.setContent(new StreamSource(in), "text/xml");
+
+            assertTrue(ap.getSize() <= 0);
+        } catch (SOAPException e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    public void testBadAttSize() throws Exception {
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message = factory.createMessage();
+
+        ByteArrayInputStream ins = new ByteArrayInputStream(new byte[5]);
+        DataHandler dh = new DataHandler(new Src(ins, "text/plain"));
+        AttachmentPart part = message.createAttachmentPart(dh);
+        assertEquals("Size should match", 5, part.getSize());
+    }
+
+    class Src implements DataSource {
+        InputStream m_src;
+        String m_type;
+
+        public Src(InputStream data, String type) {
+            m_src = data;
+            m_type = type;
+        }
+
+        public String getContentType() {
+            return m_type;
+        }
+
+        public InputStream getInputStream() throws IOException {
+            m_src.reset();
+            return m_src;
+        }
+
+        public String getName() {
+            return "Some-Data";
+        }
+
+        public OutputStream getOutputStream() {
+            throw new UnsupportedOperationException("I don't give output streams");
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/MessageFactoryTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/MessageFactoryTest.java
new file mode 100644
index 0000000..70c24dd
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/MessageFactoryTest.java
@@ -0,0 +1,126 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.File;
+import java.io.IOException;
+
+import org.custommonkey.xmlunit.XMLTestCase;
+
+/**
+ * 
+ */
+public class MessageFactoryTest extends XMLTestCase {
+    private MessageFactory mf = null;
+
+    protected void setUp() throws Exception {
+        mf = MessageFactory.newInstance();
+    }
+
+    public void testCreateMessage() {
+        try {
+            ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+            ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+
+            SOAPMessage msg1 = mf.createMessage();
+            msg1.writeTo(baos1);
+
+            MimeHeaders headers = new MimeHeaders();
+            headers.addHeader("Content-Type", "text/xml");
+
+            // Create SOAPMessage from MessageFactory object using InputStream
+            SOAPMessage msg2 = mf.createMessage(headers,
+                                                new ByteArrayInputStream(baos1.toString().getBytes()));
+            if (msg2 == null) {
+                fail();
+            }
+            msg2.writeTo(baos2);
+
+            if (!(baos1.toString().equals(baos2.toString()))) {
+                fail();
+            }
+        } catch (Exception e) {
+            fail();
+        }
+    }
+
+    public void testCreateMessage2() {
+        try {
+            ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+            ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+
+            final String XML_STRING =
+                    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                    "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
+                    "                   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
+                    "                   xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
+                    " <soapenv:Header>\n" +
+                    "  <shw:Hello xmlns:shw=\"http://www.jcommerce.net/soap/ns/SOAPHelloWorld\">\n" +
+                    "    <shw:Myname>Tony</shw:Myname>\n" +
+                    "  </shw:Hello>\n" +
+                    " </soapenv:Header>\n" +
+                    " <soapenv:Body>\n" +
+                    "<shw:Address shw:t='test' xmlns:shw=\"http://www.jcommerce.net/soap/ns/SOAPHelloWorld\">\n" +
+                    "<shw:City>GENT</shw:City>\n" +
+                    "</shw:Address>\n" +
+                    "</soapenv:Body>\n" +
+                    "</soapenv:Envelope>";
+
+            MimeHeaders headers = new MimeHeaders();
+            headers.addHeader("Content-Type", "text/xml");
+
+            SOAPMessage msg1 =
+                    mf.createMessage(headers, new ByteArrayInputStream(XML_STRING.getBytes()));
+            msg1.writeTo(baos1);
+
+            // Create SOAPMessage from MessageFactory object using InputStream
+            SOAPMessage msg2 = mf.createMessage(headers,
+                                                new ByteArrayInputStream(baos1.toString().getBytes()));
+            if (msg2 == null) {
+                fail();
+            }
+            msg2.writeTo(baos2);
+
+            this.assertXMLEqual(baos1.toString(), baos2.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    public void _testMessageFactory3() {
+        MimeHeaders headers = new MimeHeaders();
+        headers.addHeader("Content-Type",
+                          "multipart/related; boundary=MIMEBoundaryurn:uuid:F02ECC18873CFB73E211412748909307; type=\"application/xop+xml\"; start=\"<0.urn:uuid:F02ECC18873CFB73E211412748909308@apache.org>\"; start-info=\"text/xml\"; charset=UTF-16");
+
+        try {
+            FileInputStream fis = new FileInputStream("test-resources" + File.separator + "message.bin");
+            SOAPMessage msg1 = mf.createMessage(headers, fis);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/NodeTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/NodeTest.java
new file mode 100644
index 0000000..633bd49
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/NodeTest.java
@@ -0,0 +1,114 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import java.util.Iterator;
+
+/**
+ * 
+ */
+public class NodeTest extends TestCase {
+    private SOAPMessage msg = null;
+    private SOAPPart sp = null;
+    private SOAPBody body = null;
+    private SOAPEnvelope envelope = null;
+    private SOAPHeader header = null;
+    private SOAPHeaderElement headerEle = null;
+
+    protected void setUp() throws Exception {
+        msg = MessageFactory.newInstance().createMessage();
+        sp = msg.getSOAPPart();
+        envelope = sp.getEnvelope();
+        body = envelope.getBody();
+        header = envelope.getHeader();
+        headerEle = header.addHeaderElement(envelope.createName("foo", "f", "foo-URI"));
+        headerEle.setActor("actor-URI");
+    }
+
+    public void testDetachNode() {
+        try {
+            headerEle.detachNode();
+            Iterator iterator = header.examineHeaderElements("actor-URI");
+            assertFalse("SOAPHeader element is not detached - unexpected", iterator.hasNext());
+        } catch (Exception e) {
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testParentElement() {
+        try {
+            headerEle.detachNode();
+            SOAPElement parentElement = headerEle.getParentElement();
+            assertNull("Parent is not null : " + parentElement, parentElement);
+        } catch (Exception e) {
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testSetParentElement1() {
+        try {
+            headerEle.detachNode();
+            headerEle.setParentElement(header);
+            SOAPElement se = headerEle.getParentElement();
+            assertTrue("SOAPHeader element not returned - unexpected",
+                       se instanceof SOAPHeader);
+            SOAPHeader sh = (SOAPHeader) se;
+            assertTrue("SOAPHeader element does not match", sh.equals(header));
+        } catch (Exception e) {
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testSetParentElement2() {
+        try {
+            try {
+                headerEle.setParentElement(body);
+                fail("Expected IllegalArgumentException did not occur");
+            } catch (IllegalArgumentException e) {
+                assertTrue("Expected IllegalArgumentException occurred", true);
+            }
+        } catch (Exception e) {
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testSetValue() {
+        try {
+            headerEle.addTextNode("foo-bar");
+            String value = headerEle.getValue();
+            assertNotNull(value);
+            assertEquals("foo-bar", value);
+
+            headerEle.setValue("foo-bar2");
+            value = headerEle.getValue();
+            assertNotNull(value);
+            assertEquals("foo-bar2", value);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception: " + e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/PrefixesTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/PrefixesTest.java
new file mode 100644
index 0000000..a4a076c
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/PrefixesTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import javax.xml.soap.Text;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.Iterator;
+
+public class PrefixesTest extends TestCase {
+
+    public PrefixesTest(String name) {
+        super(name);
+    }
+
+    public void testAddingPrefixesForChildElements() throws Exception {
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage msg = factory.createMessage();
+        SOAPPart sp = msg.getSOAPPart();
+        SOAPEnvelope se = sp.getEnvelope();
+        SOAPBody sb = se.getBody();
+        SOAPElement el1 = sb.addBodyElement(se.createName("element1",
+                                                          "prefix1",
+                                                          "http://www.sun.com"));
+        el1.addChildElement(se.createName("element2",
+                                          "prefix2",
+                                          "http://www.apache.org"));
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        msg.writeTo(baos);
+
+        String xml = new String(baos.toByteArray());
+
+        System.out.println("########## xml = " + xml);
+        assertTrue(xml.indexOf("prefix1") != -1);
+        assertTrue(xml.indexOf("prefix2") != -1);
+        assertTrue(xml.indexOf("http://www.sun.com") != -1);
+        assertTrue(xml.indexOf("http://www.apache.org") != -1);
+    }
+
+    public void testAttribute() throws Exception {
+        String soappacket =
+                "<soapenv:Envelope xmlns:soapenv =\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
+                "                   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
+                "                   xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
+                "   <soapenv:Body>\n" +
+                "       <t:helloworld t:name=\"test\" xmlns:t='http://test.org/Test'>Hello</t:helloworld>\n" +
+                "   </soapenv:Body>\n" +
+                "</soapenv:Envelope>";
+
+        SOAPMessage msg =
+                MessageFactory.newInstance().createMessage(new MimeHeaders(),
+                                                           new ByteArrayInputStream(soappacket.getBytes()));
+        SOAPBody body = msg.getSOAPPart().getEnvelope().getBody();
+        msg.writeTo(System.out);
+
+        validateBody(body.getChildElements());
+    }
+
+    private void validateBody(Iterator iter) {
+        while (iter.hasNext()) {
+            final Object obj = iter.next();
+            if (obj instanceof Text) {
+                System.out.println("\n- Text Ignored.");
+            } else {
+                final SOAPElement soapElement = (SOAPElement) obj;
+                final Iterator attIter = soapElement.getAllAttributes();
+                while (attIter.hasNext()) {
+                    final Name name = (Name) attIter.next();
+                    assertEquals("test", soapElement.getAttributeValue(name));
+                    assertEquals("t", name.getPrefix());
+                    assertEquals("t:name", name.getQualifiedName());
+                    assertEquals("name", name.getLocalName());
+                    assertEquals("http://test.org/Test", name.getURI());
+                }
+
+                final Iterator childElementIter = soapElement.getChildElements();
+                if (childElementIter == null) return;
+                validateBody(childElementIter);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPBodyTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPBodyTest.java
new file mode 100644
index 0000000..0c9fbd9
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPBodyTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+import org.w3c.dom.Document;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.Name;
+import javax.xml.soap.Node;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import javax.xml.soap.Text;
+import java.io.File;
+import java.util.Iterator;
+
+public class SOAPBodyTest extends TestCase {
+
+    /**
+     * Method suite
+     *                                                         
+     * @return
+     */
+    /*  public static Test suite() {
+          return new TestSuite(test.message.TestSOAPBody.class);
+      }
+    */
+
+    /**
+     * Constructor TestSOAPBody
+     *
+     * @param name
+     */
+    public SOAPBodyTest(String name) {
+        super(name);
+    }
+
+    /**
+     * Method testSoapBodyBUG
+     *
+     * @throws Exception
+     */
+    public void testSoapBody() throws Exception {
+
+        MessageFactory fact = MessageFactory.newInstance();
+        SOAPMessage message = fact.createMessage();
+        SOAPPart soapPart = message.getSOAPPart();
+        SOAPEnvelopeImpl env = (SOAPEnvelopeImpl) soapPart.getEnvelope();
+        SOAPHeader header = env.getHeader();
+        Name hns = env.createName("Hello",
+                                  "shw",
+                                  "http://www.jcommerce.net/soap/ns/SOAPHelloWorld");
+        SOAPElement headElmnt = header.addHeaderElement(hns);
+        Name hns1 = env.createName("Myname",
+                                   "shw",
+                                   "http://www.jcommerce.net/soap/ns/SOAPHelloWorld");
+        SOAPElement myName = headElmnt.addChildElement(hns1);
+        myName.addTextNode("Tony");
+        Name ns = env.createName("Address",
+                                 "shw",
+                                 "http://www.jcommerce.net/soap/ns/SOAPHelloWorld");
+        SOAPBody body = env.getBody();
+        SOAPElement bodyElmnt = body.addBodyElement(ns);
+        Name ns1 = env.createName("City",
+                                  "shw",
+                                  "http://www.jcommerce.net/soap/ns/SOAPHelloWorld");
+        SOAPElement city = bodyElmnt.addChildElement(ns1);
+        city.addTextNode("GENT");
+
+        SOAPElement city2 = body.addChildElement(ns1);
+        assertTrue(city2 instanceof SOAPBodyElement);
+        city2.addTextNode("CIT2");
+
+        Iterator it = body.getChildElements();
+        int count = 0;
+
+        while (it.hasNext()) {
+            Object o = it.next();
+            assertTrue(o instanceof SOAPBodyElement);
+            SOAPBodyElement bodyElement = (SOAPBodyElement) o;
+            assertEquals("http://www.jcommerce.net/soap/ns/SOAPHelloWorld",
+                         bodyElement.getNamespaceURI());
+            assertEquals("shw", bodyElement.getPrefix());
+            assertTrue(bodyElement.getLocalName().equals("City") ||
+                       bodyElement.getLocalName().equals("Address"));
+            count++;
+        }
+        assertEquals(2, count);
+    }
+
+    public void testAddDocument() {
+        try {
+            Document document = null;
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            factory.setNamespaceAware(true);
+
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            document = builder.parse(new File("test-resources" + File.separator + "soap-body.xml"));
+            MessageFactory fact = MessageFactory.newInstance();
+            SOAPMessage message = fact.createMessage();
+
+            message.getSOAPHeader().detachNode();
+//            assertNull(message.getSOAPHeader());    // TODO:this fails. Header is always being created if it doesnt exist it DOOM
+
+            SOAPBody soapBody = message.getSOAPBody();
+            soapBody.addDocument(document);
+            message.saveChanges();
+
+            // Get contents using SAAJ APIs
+            Iterator iter1 = soapBody.getChildElements();
+            getContents(iter1, "");
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    private void getContents(Iterator iterator, String indent) {
+        while (iterator.hasNext()) {
+            Node node = (Node) iterator.next();
+            SOAPElement element = null;
+            Text text = null;
+
+            if (node instanceof SOAPElement) {
+                element = (SOAPElement) node;
+
+                Name name = element.getElementName();
+                System.out.println(indent + "Name is " + name.getQualifiedName());
+
+                Iterator attrs = element.getAllAttributes();
+
+                while (attrs.hasNext()) {
+                    Name attrName = (Name) attrs.next();
+                    System.out.println(indent + " Attribute name is " +
+                                       attrName.getQualifiedName());
+                    System.out.println(indent + " Attribute value is " +
+                                       element.getAttributeValue(attrName));
+                }
+
+                Iterator iter2 = element.getChildElements();
+                getContents(iter2, indent + " ");
+            } else {
+                text = (Text) node;
+
+                String content = text.getValue();
+                System.out.println(indent + "Content is: " + content);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java
new file mode 100644
index 0000000..838d742
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java
@@ -0,0 +1,84 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.SOAPConnection;
+import javax.xml.soap.SOAPConnectionFactory;
+import javax.xml.soap.SOAPException;
+
+/**
+ * 
+ */
+public class SOAPConnectionTest extends TestCase {
+    public void testClose() {
+        try {
+            SOAPConnection sCon = SOAPConnectionFactory.newInstance().createConnection();
+            sCon.close();
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+    }
+
+    public void testCloseTwice() {
+        SOAPConnectionFactory soapConnectionFactory = null;
+        try {
+            soapConnectionFactory = SOAPConnectionFactory.newInstance();
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+
+        SOAPConnection sCon = null;
+        try {
+            sCon = soapConnectionFactory.createConnection();
+            sCon.close();
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+
+        try {
+            sCon.close();
+            fail("Expected Exception did not occur");
+        } catch (SOAPException e) {
+            assertTrue(true);
+        }
+    }
+
+    public void testCallOnCloseConnection(){
+        SOAPConnectionFactory soapConnectionFactory = null;
+        try {
+            soapConnectionFactory = SOAPConnectionFactory.newInstance();
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+
+        SOAPConnection sCon = null;
+        try {
+            sCon = soapConnectionFactory.createConnection();
+            sCon.close();
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+
+        try {
+            sCon.call(null, new Object());
+            fail("Expected Exception did not occur");
+        } catch (SOAPException e) {
+            assertTrue(true);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPElementTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPElementTest.java
new file mode 100644
index 0000000..854dab6
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPElementTest.java
@@ -0,0 +1,382 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.impl.dom.NodeImpl;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.Name;
+import javax.xml.soap.Node;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.Text;
+import java.util.Iterator;
+import java.util.List;
+
+public class SOAPElementTest extends TestCase {
+
+    private SOAPElement soapEle;
+
+    protected void setUp() throws Exception {
+        soapEle =
+                SOAPFactoryImpl.newInstance().createElement("Test",
+                                                            "test",
+                                                            "http://test.apache.org/");
+    }
+
+    public void testAddTextNode() {
+        assertNotNull(soapEle);
+        String value = "foo";
+        try {
+            soapEle.addTextNode(value);
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+        assertEquals(value, soapEle.getValue());
+        TextImplEx text = assertContainsText(soapEle);
+        assertEquals(value, text.getValue());
+    }
+
+    public void testChildren() {
+        try {
+            soapEle.addTextNode("foo");
+            SOAPElement childEle1 =
+                    SOAPFactoryImpl.newInstance().createElement("Child1",
+                                                                "ch",
+                                                                "http://test.apache.org/");
+            SOAPElement childEle2 =
+                    SOAPFactoryImpl.newInstance().createElement("Child2",
+                                                                "ch",
+                                                                "http://test.apache.org/");
+            soapEle.addChildElement(childEle1);
+            soapEle.addChildElement(childEle2);
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+
+        Object o = soapEle.getChildElements().next();
+        Object o2 = soapEle.getChildElements().next();
+
+        assertSame(o, o2); // both elements should be the same SAAJ Node
+        assertEquals(((javax.xml.soap.Text) o).getValue(),
+                     ((javax.xml.soap.Text) o2).getValue());
+
+        int childrenCount = 0;
+        for (Iterator iter = soapEle.getChildElements(); iter.hasNext();) {
+            iter.next();
+            childrenCount ++;
+        }
+        assertEquals(3, childrenCount);
+
+        Object z1 = soapEle.getChildNodes().item(0);
+        Object z2 = soapEle.getFirstChild();
+
+        assertSame(o, z1);   // should be same SAAJ Node
+        assertSame(z1, z2);  // should be same SAAJ Node
+
+        assertEquals(((javax.xml.soap.Text) z1).getNodeValue(),
+                     ((javax.xml.soap.Text) z2).getNodeValue());
+
+        Node lastChildNode = (Node) soapEle.getLastChild();
+        SOAPElement lastChildSOAPEle = (SOAPElement) lastChildNode;
+
+        assertEquals("Child2", lastChildSOAPEle.getLocalName());
+        assertEquals("http://test.apache.org/", lastChildSOAPEle.getNamespaceURI());
+        assertEquals("ch", lastChildSOAPEle.getPrefix());
+    }
+
+    public void testChildrenAndSiblings() {
+        try {
+            soapEle.addTextNode("foo");
+            soapEle.addChildElement("Child1", "ch", "http://test.apache.org/");
+            soapEle.addChildElement("Child2", "ch", "http://test.apache.org/");
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+
+        Object o = soapEle.getChildElements().next();
+        Object o2 = soapEle.getChildElements().next();
+        assertSame(o, o2); // both elements should be the same SAAJ Node
+        assertEquals(((javax.xml.soap.Text) o).getValue(),
+                     ((javax.xml.soap.Text) o2).getValue());
+
+        int childrenCount = 0;
+        for (Iterator iter = soapEle.getChildElements(); iter.hasNext();) {
+            iter.next();
+            childrenCount ++;
+        }
+        assertEquals(3, childrenCount);
+
+        Object z1 = soapEle.getChildNodes().item(0);
+        Object z2 = soapEle.getFirstChild();
+        assertSame(o, z1);   // should be same SAAJ Node
+        assertSame(z1, z2);  // should be same SAAJ Node
+        assertEquals(((javax.xml.soap.Text) z1).getNodeValue(),
+                     ((javax.xml.soap.Text) z2).getNodeValue());
+
+        SOAPElement lastChildSOAPEle = (SOAPElement) soapEle.getLastChild();
+
+        assertEquals("Child2", lastChildSOAPEle.getLocalName());
+        assertEquals("ch:Child2", lastChildSOAPEle.getNodeName());
+        assertEquals("http://test.apache.org/", lastChildSOAPEle.getNamespaceURI());
+        assertEquals("ch", lastChildSOAPEle.getPrefix());
+        assertNotNull(lastChildSOAPEle.getParentNode());
+        assertTrue(lastChildSOAPEle.getPreviousSibling() instanceof javax.xml.soap.SOAPElement);
+        assertNull(lastChildSOAPEle.getNextSibling());
+
+        javax.xml.soap.Node firstChild = (javax.xml.soap.Node) soapEle.getFirstChild();
+        javax.xml.soap.Node nextSibling = (javax.xml.soap.Node) (firstChild.getNextSibling());
+        assertNull(firstChild.getPreviousSibling());
+
+        assertTrue(firstChild instanceof javax.xml.soap.Text);
+        assertTrue(nextSibling instanceof javax.xml.soap.SOAPElement);
+        assertTrue(nextSibling.getPreviousSibling() instanceof javax.xml.soap.Text);
+        assertEquals("Child1", nextSibling.getLocalName());
+        assertEquals("ch:Child1", nextSibling.getNodeName());
+        assertEquals("http://test.apache.org/", nextSibling.getNamespaceURI());
+        assertEquals("ch", nextSibling.getPrefix());
+
+        javax.xml.soap.Node nextSibling2 = (javax.xml.soap.Node) nextSibling.getNextSibling();
+        assertEquals("Child2", nextSibling2.getLocalName());
+        assertEquals("ch:Child2", nextSibling2.getNodeName());
+        assertEquals("http://test.apache.org/", lastChildSOAPEle.getNamespaceURI());
+        assertEquals("ch", nextSibling2.getPrefix());
+        assertNull(nextSibling2.getNextSibling());
+    }
+
+    public void testCommentSibling() {
+        try {
+            soapEle.addTextNode("foo");
+            soapEle.addChildElement("Child1", "ch", "http://test.apache.org/");
+            soapEle.addTextNode("<!-- This is a Comment-->");
+            soapEle.addChildElement("Child2", "ch", "http://test.apache.org/");
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+
+        assertTrue(((Text) soapEle.getFirstChild().getNextSibling().getNextSibling()).isComment());
+        assertTrue(((Text) soapEle.getLastChild().getPreviousSibling()).isComment());
+    }
+
+    public void testCommentSibling2() {
+        try {
+            soapEle.addTextNode("foo");
+            soapEle.addTextNode("<!-- This is a Comment-->");
+            soapEle.addTextNode("bar");
+            soapEle.addChildElement("Child1", "ch", "http://test.apache.org/");
+            soapEle.addChildElement("Child2", "ch", "http://test.apache.org/");
+        } catch (SOAPException e) {
+            fail("Unexpected Exception " + e);
+        }
+
+        assertTrue(((Text) soapEle.getFirstChild().getNextSibling()).isComment());
+        assertFalse(((Text) soapEle.getLastChild().getPreviousSibling().getPreviousSibling()).isComment());
+        assertFalse(((Text) soapEle.getLastChild().getPreviousSibling().getPreviousSibling()).isComment());
+    }
+
+    public void testAddChildElement() {
+        try {
+            String s = "MyName1";
+            String p = "MyPrefix1";
+            String u = "myURI";
+            SOAPBody body = MessageFactory.newInstance().createMessage().getSOAPBody();
+            SOAPElement myse = body.addNamespaceDeclaration(p, u);
+            SOAPElement se = body.addChildElement(s, p);
+            if (se == null) {
+                fail("SOAPElement was null");
+            } else {
+                Iterator i = body.getChildElements();
+                int count = getIteratorCount(i);
+                i = body.getChildElements();
+                if (count != 1) {
+                    fail("Wrong iterator count returned of " + count + ", expected 1");
+                } else {
+                    SOAPElement se2 = (SOAPElement) i.next();
+                    if (!se.equals(se2)) {
+                        fail("Elements not equal");
+                    }
+                }
+                String name = se.getElementName().getLocalName();
+                Name n = se.getElementName();
+                String prefix = se.getElementName().getPrefix();
+                if (!name.equals(s) || !prefix.equals(p)) {
+                    fail("addChildElement() did not return correct local name and prefix");
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testAddChildElement2() {
+        try {
+            SOAPMessage msg = MessageFactory.newInstance().createMessage();
+            Name name = msg.getSOAPPart().getEnvelope().createName("MyName1", "MyPrefix1", "MyUri1");
+            SOAPElement myse = SOAPFactory.newInstance().createElement(name);
+            SOAPBody body = msg.getSOAPBody();
+            SOAPElement se = body.addChildElement(myse);
+            if (se == null) {
+                fail("addChildElement() did not return SOAPElement");
+            } else {
+                Iterator i = body.getChildElements(name);
+                int count = getIteratorCount(i);
+                i = body.getChildElements(name);
+                if (count != 1) {
+                    fail("Wrong iterator count returned of " + count + ", expected 1");
+                } else {
+                    SOAPElement se2 = (SOAPElement) i.next();
+                    if (!se.equals(se2)) {
+                        fail();
+                    }
+                }
+                Name n = se.getElementName();
+                if (!n.equals(name)) {
+                    fail("addChildElement() did not return " +
+                         "correct name object expected localname=" +
+                         name.getLocalName() + ", got localname="
+                         + n.getLocalName());
+                }
+            }
+        } catch (Exception e) {
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testAddTextNode2() {
+        try {
+            SOAPMessage msg = MessageFactory.newInstance().createMessage();
+            SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
+            SOAPBody body = envelope.getBody();
+            Iterator iStart = envelope.getChildElements();
+            int countStart = getIteratorCount(iStart);
+            SOAPElement se = envelope.addTextNode("<txt>This is text</txt>");
+            if (se == null) {
+                fail("addTextNode() did not return SOAPElement");
+            } else if (!envelope.getValue().equals("<txt>This is text</txt>")) {
+                String s = body.getValue();
+                fail("addTextNode() did not return expected text, Returned " + s + ", Expected <txt>This is text</txt>");
+            }
+            Iterator i = envelope.getChildElements();
+            int count = getIteratorCount(i);
+            i = envelope.getChildElements();
+            if (count != ++countStart) {
+                fail("Wrong iterator count returned of " +
+                     count + ", expected " + countStart);
+            } else {
+                Object obj = null;
+                while (i.hasNext()) {
+                    obj = i.next();
+                    if (obj instanceof Text) {
+                        break;
+                    }
+                }
+                if (!(obj instanceof Text)) {
+                    fail("obj is not instanceof Text");
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testRemoveAttribute() {
+        try {
+            SOAPMessage msg = MessageFactory.newInstance().createMessage();
+            SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
+            SOAPBody body = envelope.getBody();
+            Name name = envelope.createName("MyAttr1");
+            String value = "MyValue1";
+            body.addAttribute(name, value);
+            boolean b = body.removeAttribute(name);
+            assertTrue("removeAttribute() did not return true", b);
+            b = body.removeAttribute(name);
+            assertFalse("removeAttribute() did not return false", b);
+            assertNull(body.getAttributeValue(name));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testRemoveNamespaceDeclaration() {
+        try {
+            String prefix = "myPrefix";
+            String uri = "myURI";
+            SOAPMessage msg = MessageFactory.newInstance().createMessage();
+            SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
+            SOAPBody body = envelope.getBody();
+            body.addNamespaceDeclaration(prefix, uri);
+            boolean b = body.removeNamespaceDeclaration(prefix);
+            assertTrue("removeNamespaceDeclaration() did not return true", b);
+            b = body.removeNamespaceDeclaration(prefix);
+            assertFalse("removeNamespaceDeclaration() did not return false", b);
+            assertNull(body.getNamespaceURI(prefix));
+        } catch (Exception e) {
+            fail("Exception: " + e);
+        }
+    }
+
+    public void testSetEncodingStyle(){
+         try {
+            SOAPMessage msg = MessageFactory.newInstance().createMessage();
+            SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
+            SOAPBody body = envelope.getBody();
+            body.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING);
+            try {
+                body.setEncodingStyle("BOGUS");
+                fail("Expected Exception did not occur");
+            } catch (IllegalArgumentException e) {
+                assertTrue("Expected Exception occurred", true);
+            }
+        } catch (Exception e) {
+            fail("Exception: " + e);
+        }
+    }
+
+    private int getIteratorCount(Iterator iter) {
+        int count = 0;
+        while (iter.hasNext()) {
+            iter.next();
+            count ++;
+        }
+        return count;
+    }
+
+    private TextImplEx assertContainsText(SOAPElement soapElem) {
+        assertTrue(soapElem.hasChildNodes());
+        List childElems = toList(soapElem.getChildElements());
+        assertTrue(childElems.size() == 1);
+        NodeImpl node = (NodeImpl) childElems.get(0);
+        assertTrue(node instanceof TextImplEx);
+        return (TextImplEx) node;
+    }
+
+    private List toList(java.util.Iterator iter) {
+        List list = new java.util.ArrayList();
+        while (iter.hasNext()) {
+            list.add(iter.next());
+        }
+        return list;
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPEnvelopeTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPEnvelopeTest.java
new file mode 100644
index 0000000..0fe4ef9
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPEnvelopeTest.java
@@ -0,0 +1,539 @@
+/*
+* Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.DetailEntry;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.Name;
+import javax.xml.soap.Node;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFault;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import javax.xml.soap.Text;
+import java.io.ByteArrayInputStream;
+import java.util.Iterator;
+
+public class SOAPEnvelopeTest extends TestCase {
+
+    private static final String XML_STRING =
+            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+            "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
+            "                   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
+            "                   xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
+            " <soapenv:Header>\n" +
+            "  <shw:Hello xmlns:shw=\"http://www.jcommerce.net/soap/ns/SOAPHelloWorld\">\n" +
+            "    <shw:Myname>Tony</shw:Myname>\n" +
+            "  </shw:Hello>\n" +
+            " </soapenv:Header>\n" +
+            " <soapenv:Body>\n" +
+            "<shw:Address shw:t='test' xmlns:shw=\"http://www.jcommerce.net/soap/ns/SOAPHelloWorld\">\n" +
+            "<shw:City>GENT</shw:City>\n" +
+            "</shw:Address>\n" +
+            "</soapenv:Body>\n" +
+            "</soapenv:Envelope>";
+
+    public SOAPEnvelopeTest(String name) {
+        super(name);
+    }
+
+    public void testEnvelope() throws Exception {
+        MessageFactory mf = MessageFactory.newInstance();
+        SOAPMessage smsg =
+                mf.createMessage(new MimeHeaders(), new ByteArrayInputStream(XML_STRING.getBytes()));
+        SOAPPart sp = smsg.getSOAPPart();
+        SOAPEnvelope se = sp.getEnvelope();
+        smsg.writeTo(System.out);
+        assertTrue(se != null);
+
+        // validate the body
+        final SOAPBody body = sp.getEnvelope().getBody();
+        validateBody(body.getChildElements());
+    }
+
+    public void testDetachHeader() throws Exception {
+        MessageFactory mf = MessageFactory.newInstance();
+        SOAPMessage smsg =
+                mf.createMessage(new MimeHeaders(), new ByteArrayInputStream(XML_STRING.getBytes()));
+        SOAPPart sp = smsg.getSOAPPart();
+        SOAPEnvelope se = sp.getEnvelope();
+        smsg.writeTo(System.out);
+        assertTrue(se != null);
+        SOAPHeader header = se.getHeader();
+        assertNotNull(header);
+        header.detachNode();
+        assertNull(se.getHeader());
+        assertNull(smsg.getSOAPHeader());
+    }
+
+    public void testDetachBody() {
+        try {
+            MessageFactory mf = MessageFactory.newInstance();
+            SOAPMessage smsg =
+                    mf.createMessage(new MimeHeaders(), new ByteArrayInputStream(XML_STRING.getBytes()));
+            SOAPPart sp = smsg.getSOAPPart();
+            SOAPEnvelope se = sp.getEnvelope();
+
+            try {
+                se.addBody();
+                fail("Expected Exception did not occur");
+            } catch (SOAPException e) {
+                assertTrue(true);
+            }
+
+            se.getBody().detachNode();
+            assertNull(se.getBody());
+            try {
+                se.addBody();
+            } catch (SOAPException e) {
+                e.printStackTrace();
+                fail("Unexpected Exception occurred.");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    public void testEnvelope2() throws Exception {
+        MessageFactory mf = MessageFactory.newInstance();
+        final ByteArrayInputStream baIS = new ByteArrayInputStream(XML_STRING.getBytes());
+        final MimeHeaders mimeheaders = new MimeHeaders();
+        mimeheaders.addHeader("Content-Type", "multipart/related");
+        SOAPMessage smsg =
+                mf.createMessage(mimeheaders, baIS);
+
+        smsg.writeTo(System.out);
+
+        SOAPEnvelope envelope = smsg.getSOAPPart().getEnvelope();
+        SOAPBody body = envelope.getBody();
+        assertTrue(body != null);
+    }
+
+    // TODO: This test fails due to some issues in OM. Needs to be added to the test suite
+    //   that issue is fixed
+    public void _testEnvelopeWithLeadingComment() throws Exception {
+        String soapMessageWithLeadingComment =
+                "<?xml version='1.0' encoding='UTF-8'?>" +
+                "<!-- Comment -->" +
+                "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
+                "<env:Body><echo><arg0>Hello</arg0></echo></env:Body>" +
+                "</env:Envelope>";
+
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message =
+                factory.createMessage(new MimeHeaders(),
+                                      new ByteArrayInputStream(soapMessageWithLeadingComment.getBytes()));
+        SOAPPart part = message.getSOAPPart();
+        SOAPEnvelope envelope = part.getEnvelope();
+        message.writeTo(System.out);
+        assertTrue(envelope != null);
+        assertTrue(envelope.getBody() != null);
+    }
+
+    public void testEnvelopeWithCommentInEnvelope() throws Exception {
+
+        String soapMessageWithLeadingComment =
+                "<?xml version='1.0' encoding='UTF-8'?>\n" +
+                "<soapenv:Envelope  xmlns='http://somewhere.com/html'\n" +
+                "                   xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'\n" +
+                "                   xmlns:xsd='http://www.w3.org/2001/XMLSchema'\n" +
+                "                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\n" +
+                "<!-- Comment -->" +
+                " <soapenv:Body>\n" +
+                "    <echo><arg0>Hello</arg0></echo>" +
+//                "    <t:echo xmlns:t='http://test.org/Test'><t:arg0>Hello</t:arg0></t:echo>" +
+" </soapenv:Body>\n" +
+"</soapenv:Envelope>";
+
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message =
+                factory.createMessage(new MimeHeaders(),
+                                      new ByteArrayInputStream(soapMessageWithLeadingComment.getBytes()));
+        SOAPPart part = message.getSOAPPart();
+        SOAPEnvelope envelope = part.getEnvelope();
+        message.writeTo(System.out);
+        assertTrue(envelope != null);
+        assertTrue(envelope.getBody() != null);
+    }
+
+    public void testEnvelopeWithCommentInBody() throws Exception {
+
+        String soapMessageWithLeadingComment =
+                "<?xml version='1.0' encoding='UTF-8'?>\n" +
+                "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'\n" +
+                "                   xmlns:xsd='http://www.w3.org/2001/XMLSchema'\n" +
+                "                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\n" +
+                " <soapenv:Body>\n" +
+                "<!-- Comment -->" +
+//                "    <echo><arg0>Hello</arg0></echo>" +
+"    <t:echo xmlns:t='http://test.org/Test'><t:arg0>Hello</t:arg0></t:echo>" +
+" </soapenv:Body>\n" +
+"</soapenv:Envelope>";
+
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message =
+                factory.createMessage(new MimeHeaders(),
+                                      new ByteArrayInputStream(soapMessageWithLeadingComment.getBytes()));
+        SOAPPart part = message.getSOAPPart();
+        SOAPEnvelope envelope = part.getEnvelope();
+        message.writeTo(System.out);
+        assertTrue(envelope != null);
+        assertTrue(envelope.getBody() != null);
+    }
+
+    public void testEnvelopeWithComments() throws Exception {
+
+        String soapMessageWithLeadingComment =
+                "<?xml version='1.0' encoding='UTF-8'?>\n" +
+                "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'\n" +
+                "                   xmlns:xsd='http://www.w3.org/2001/XMLSchema'\n" +
+                "                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\n" +
+                " <soapenv:Header>\n" +
+                "<!-- Comment -->" +
+                "  <shw:Hello xmlns:shw=\"http://www.jcommerce.net/soap/ns/SOAPHelloWorld\">\n" +
+                "<!-- Comment -->" +
+                "    <shw:Myname><!-- Comment -->Tony</shw:Myname>\n" +
+                "  </shw:Hello>\n" +
+                " </soapenv:Header>\n" +
+                " <soapenv:Body>\n" +
+                "<!-- Comment -->" +
+                "    <t:echo xmlns:t='http://test.org/Test'><t:arg0>Hello</t:arg0></t:echo>" +
+                " </soapenv:Body>\n" +
+                "</soapenv:Envelope>";
+
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message =
+                factory.createMessage(new MimeHeaders(),
+                                      new ByteArrayInputStream(soapMessageWithLeadingComment.getBytes()));
+        SOAPPart part = message.getSOAPPart();
+        SOAPEnvelope envelope = part.getEnvelope();
+        message.writeTo(System.out);
+        assertTrue(envelope != null);
+        assertTrue(envelope.getBody() != null);
+    }
+
+    public void testFaults() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPBody body = envelope.getBody();
+
+        assertFalse(body.hasFault());
+        SOAPFault soapFault = body.addFault();
+        soapFault.setFaultString("myFault");
+        soapFault.setFaultCode("CODE");
+
+        assertTrue(body.hasFault());
+        assertNotNull(body.getFault());
+        assertSame(soapFault, body.getFault());
+
+        assertEquals("myFault", soapFault.getFaultString());
+        assertEquals("CODE", soapFault.getFaultCode());
+    }
+
+    public void testFaults2() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPBody body = envelope.getBody();
+        SOAPFault fault = body.addFault();
+
+        assertTrue(body.getFault() != null);
+
+        Detail d1 = fault.addDetail();
+        Name name = envelope.createName("GetLastTradePrice", "WOMBAT",
+                                        "http://www.wombat.org/trader");
+        d1.addDetailEntry(name);
+
+        Detail d2 = fault.getDetail();
+        assertTrue(d2 != null);
+        Iterator i = d2.getDetailEntries();
+        assertTrue(getIteratorCount(i) == 1);
+        i = d2.getDetailEntries();
+        while (i.hasNext()) {
+            DetailEntry de = (DetailEntry) i.next();
+            assertEquals(de.getElementName(), name);
+        }
+    }
+
+    public void testHeaderElements() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPHeader header = envelope.getHeader();
+
+        SOAPHeaderElement headerEle = header.addHeaderElement(envelope.createName("foo1",
+                                                                                  "f1",
+                                                                                  "foo1-URI"));
+        headerEle.setActor("actor-URI");
+        headerEle.setMustUnderstand(true);
+
+        Iterator iterator = header.extractHeaderElements("actor-URI");
+        int cnt = 0;
+        while (iterator.hasNext()) {
+            cnt++;
+            SOAPHeaderElement resultHeaderEle = (SOAPHeaderElement) iterator.next();
+
+            assertEquals(headerEle.getActor(), resultHeaderEle.getActor());
+            assertEquals(resultHeaderEle.getMustUnderstand(), headerEle.getMustUnderstand());
+        }
+        assertTrue(cnt == 1);
+        iterator = header.extractHeaderElements("actor-URI");
+        assertTrue(!iterator.hasNext());
+    }
+
+    public void testText() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPBody body = envelope.getBody();
+        Iterator iStart = body.getChildElements();
+        int countStart = getIteratorCount(iStart);
+
+        final String bodyText = "This is the body text";
+
+        SOAPElement se = body.addChildElement("Child");
+        assertTrue(se != null);
+        SOAPElement soapElement = se.addTextNode(bodyText);
+        assertEquals(bodyText, soapElement.getValue());
+
+        Iterator i = body.getChildElements();
+        int count = getIteratorCount(i);
+        assertTrue(count == countStart + 1);
+    }
+
+    public void testNonCommentText() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPBody body = envelope.getBody();
+        SOAPElement se = body.addChildElement("Child");
+        se.addTextNode("This is text");
+        Iterator iterator = se.getChildElements();
+        Object o = null;
+        while (iterator.hasNext()) {
+            o = iterator.next();
+            if (o instanceof Text) {
+                break;
+            }
+        }
+        assertTrue(o instanceof Text);
+        Text t = (Text) o;
+        assertTrue(!t.isComment());
+    }
+
+    public void testCommentText() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPBody body = envelope.getBody();
+        SOAPElement se = body.addChildElement("Child");
+        se.addTextNode("<!-- This is a comment -->");
+        Iterator iterator = se.getChildElements();
+        Node n = null;
+        while (iterator.hasNext()) {
+            n = (Node) iterator.next();
+            if (n instanceof Text) {
+                break;
+            }
+        }
+        assertTrue(n instanceof Text);
+        Text t = (Text) n;
+        assertTrue(t.isComment());
+    }
+
+    public void testAttributes() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPBody body = envelope.getBody();
+
+        Name name1 = envelope.createName("MyAttr1");
+        String value1 = "MyValue1";
+
+        Name name2 = envelope.createName("MyAttr2");
+        String value2 = "MyValue2";
+
+        Name name3 = envelope.createName("MyAttr3");
+        String value3 = "MyValue3";
+
+        body.addAttribute(name1, value1);
+        body.addAttribute(name2, value2);
+        body.addAttribute(name3, value3);
+
+        Iterator iterator = body.getAllAttributes();
+        assertTrue(getIteratorCount(iterator) == 3);
+        iterator = body.getAllAttributes();
+
+        boolean foundName1 = false;
+        boolean foundName2 = false;
+        boolean foundName3 = false;
+        while (iterator.hasNext()) {
+            Name name = (Name) iterator.next();
+            if (name.equals(name1)) {
+                foundName1 = true;
+                assertEquals(value1, body.getAttributeValue(name));
+            } else if (name.equals(name2)) {
+                foundName2 = true;
+                assertEquals(value2, body.getAttributeValue(name));
+            } else if (name.equals(name3)) {
+                foundName3 = true;
+                assertEquals(value3, body.getAttributeValue(name));
+            }
+        }
+        assertTrue(foundName1 && foundName2 && foundName3);
+    }
+
+    public void testAttributes2() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPBody body = envelope.getBody();
+
+        Name name1 = envelope.createName("MyAttr1", "att", "http://test.com/Attr");
+        String value1 = "MyValue1";
+
+        Name name2 = envelope.createName("MyAttr2");
+        String value2 = "MyValue2";
+
+        Name name3 = envelope.createName("MyAttr3");
+        String value3 = "MyValue3";
+
+        body.addAttribute(name1, value1);
+        body.addAttribute(name2, value2);
+        body.addAttribute(name3, value3);
+
+        Iterator iterator = body.getAllAttributes();
+        assertTrue(getIteratorCount(iterator) == 3);
+        iterator = body.getAllAttributes();
+
+        boolean foundName1 = false;
+        boolean foundName2 = false;
+        boolean foundName3 = false;
+        while (iterator.hasNext()) {
+            Name name = (Name) iterator.next();
+            if (name.equals(name1)) {
+                foundName1 = true;
+                assertEquals(value1, body.getAttributeValue(name));
+            } else if (name.equals(name2)) {
+                foundName2 = true;
+                assertEquals(value2, body.getAttributeValue(name));
+            } else if (name.equals(name3)) {
+                foundName3 = true;
+                assertEquals(value3, body.getAttributeValue(name));
+            }
+        }
+        assertTrue(foundName1 && foundName2 && foundName3);
+    }
+
+    public void testAttributes3() throws Exception {
+        SOAPEnvelope envelope = getSOAPEnvelope();
+        SOAPBody body = envelope.getBody();
+
+        Name name1 = envelope.createName("MyAttr1", "att", "http://test.com/Attr");
+        String value1 = "MyValue1";
+
+        Name name2 = envelope.createName("MyAttr2", "att", "http://test.com/Attr");
+        String value2 = "MyValue2";
+
+        Name name3 = envelope.createName("MyAttr3", "att", "http://test.com/Attr");
+        String value3 = "MyValue3";
+
+        body.addAttribute(name1, value1);
+        body.addAttribute(name2, value2);
+        body.addAttribute(name3, value3);
+
+        Iterator iterator = body.getAllAttributes();
+        assertTrue(getIteratorCount(iterator) == 3);
+        iterator = body.getAllAttributes();
+
+        boolean foundName1 = false;
+        boolean foundName2 = false;
+        boolean foundName3 = false;
+        while (iterator.hasNext()) {
+            Name name = (Name) iterator.next();
+            if (name.equals(name1)) {
+                foundName1 = true;
+                assertEquals(value1, body.getAttributeValue(name));
+            } else if (name.equals(name2)) {
+                foundName2 = true;
+                assertEquals(value2, body.getAttributeValue(name));
+            } else if (name.equals(name3)) {
+                foundName3 = true;
+                assertEquals(value3, body.getAttributeValue(name));
+            }
+        }
+        assertTrue(foundName1 && foundName2 && foundName3);
+    }
+
+    public void testAddHeader() {
+        try {
+            SOAPEnvelope envelope = getSOAPEnvelope();
+            try {
+                envelope.addHeader();
+                fail("Did not get expected SOAPException");
+            } catch (SOAPException e) {
+                assertTrue("Got expected SOAPException", true);
+            }
+            envelope.getHeader().detachNode();
+            assertNull(envelope.getHeader());
+            SOAPHeader myhdr;
+
+            try {
+                myhdr = envelope.addHeader();
+                assertNotNull("SOAPHeader return value is null", myhdr);
+            } catch (SOAPException e) {
+                fail("Unexpected SOAPException : " + e);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    private SOAPEnvelope getSOAPEnvelope() throws Exception {
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message = factory.createMessage();
+        return message.getSOAPPart().getEnvelope();
+    }
+
+    private int getIteratorCount(java.util.Iterator i) {
+        int count = 0;
+        while (i.hasNext()) {
+            count++;
+            i.next();
+        }
+        return count;
+    }
+
+    private void validateBody(Iterator iter) {
+        while (iter.hasNext()) {
+            final Object obj = iter.next();
+            if (obj instanceof Text) {
+                final String data = ((Text) obj).getData();
+                assertTrue("\n".equals(data) || "GENT".equals(data));
+            } else {
+                final SOAPElement soapElement = (SOAPElement) obj;
+                final Iterator attIter = soapElement.getAllAttributes();
+                while (attIter.hasNext()) {
+                    final Object o = attIter.next();
+                    assertEquals("test", soapElement.getAttributeValue((Name) o));
+                }
+
+                final Iterator childElementIter = soapElement.getChildElements();
+                if (childElementIter == null) {
+                    return;
+                }
+                validateBody(childElementIter);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFactoryTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFactoryTest.java
new file mode 100644
index 0000000..00e7b49
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFactoryTest.java
@@ -0,0 +1,42 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.SOAPFactory;
+
+/**
+ * 
+ */
+public class SOAPFactoryTest extends TestCase {
+    public void testCreateDetail() {
+        try {
+            SOAPFactory sf = SOAPFactory.newInstance();
+            if (sf == null) {
+                fail("SOAPFactory was null");
+            }
+            Detail d = sf.createDetail();
+            if (d == null) {
+                fail("Detail was null");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception " + e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultDetailTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultDetailTest.java
new file mode 100644
index 0000000..9d86cd3
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultDetailTest.java
@@ -0,0 +1,76 @@
+/*
+* Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.DetailEntry;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPFault;
+import javax.xml.soap.SOAPMessage;
+import java.io.ByteArrayInputStream;
+import java.util.Iterator;
+
+public class SOAPFaultDetailTest extends TestCase {
+	
+	public SOAPFaultDetailTest(String name){
+		super(name);
+	}
+	
+    private String xmlString =
+    	"<?xml version=\"1.0\" encoding=\"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\">" +
+    	" <soapenv:Body>" +
+    	"  <soapenv:Fault>" +
+    	"   <faultcode>soapenv:Server.generalException</faultcode>" +
+    	"   <faultstring></faultstring>" +
+    	"   <detail>" +
+    	"    <tickerSymbol xsi:type=\"xsd:string\">MACR</tickerSymbol>" +
+    	"   <ns1:exceptionName xmlns:ns1=\"http://xml.apache.org/axis2/\">test.wsdl.faults.InvalidTickerFaultMessage</ns1:exceptionName>" +
+    	"   </detail>" +
+    	"  </soapenv:Fault>" +
+    	" </soapenv:Body>" +
+    	"</soapenv:Envelope>";
+    
+    public void testDetails() throws Exception{
+    	MessageFactory mf = MessageFactory.newInstance();
+    	SOAPMessage smsg = 
+    		mf.createMessage(new MimeHeaders(), new ByteArrayInputStream(xmlString.getBytes()));
+    	SOAPBody body = smsg.getSOAPBody();
+    	//smsg.writeTo(System.out);
+    	SOAPFault fault = body.getFault();
+    	fault.addDetail();
+    	javax.xml.soap.Detail d = fault.getDetail();
+    	Iterator i = d.getDetailEntries();
+    	while (i.hasNext()){
+    		DetailEntry entry = (DetailEntry) i.next();
+    		String name = entry.getElementName().getLocalName();
+    		if ("tickerSymbol".equals(name)) {
+    			assertEquals("the value of the tickerSymbol element didn't match",
+    					"MACR", entry.getValue());
+    		} else if ("exceptionName".equals(name)) {
+    			assertEquals("the value of the exceptionName element didn't match",
+    					"test.wsdl.faults.InvalidTickerFaultMessage", entry.getValue());
+    		} else {
+    			assertTrue("Expecting details element name of 'tickerSymbol' or " +
+                           "'expceptionName' - I found :" +name, false);
+    		}
+    	}
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java
new file mode 100644
index 0000000..fb45ff1
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java
@@ -0,0 +1,308 @@
+/*
+* Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.DetailEntry;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.SOAPFault;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import java.io.ByteArrayOutputStream;
+import java.util.Iterator;
+
+public class SOAPFaultTest extends TestCase {
+
+    public SOAPFaultTest(String name) {
+        super(name);
+    }
+
+    public void testSOAPFaultWithDetails() throws Exception {
+        /* We are trying to generate the following SOAPFault
+
+        <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:cwmp="http://cwmp.com">
+         <soapenv:Header>
+          <cwmp:ID soapenv:mustUnderstand="1">HEADERID-7867678</cwmp:ID>
+         </soapenv:Header>
+         <soapenv:Body>
+          <soapenv:Fault>
+           <faultcode>Client</faultcode>
+           <faultstring>CWMP fault</faultstring>
+           <faultactor>http://gizmos.com/order</faultactor>
+           <detail>
+            <cwmp:Fault>
+             <cwmp:FaultCode>This is the fault code</cwmp:FaultCode>
+             <cwmp:FaultString>Fault Message</cwmp:FaultString>
+             <cwmp:Message>This is a test fault</cwmp:FaultString>
+            </cwmp:Fault>
+           </detail>
+          </soapenv:Fault>
+         </soapenv:Body>
+        </soapenv:Envelope>
+
+        */
+
+        MessageFactory fac = MessageFactory.newInstance();
+
+        //Create the response to the message
+        SOAPMessage soapMessage = fac.createMessage();
+        SOAPPart soapPart = soapMessage.getSOAPPart();
+        SOAPEnvelope envelope = soapPart.getEnvelope();
+        envelope.addNamespaceDeclaration("cwmp", "http://cwmp.com");
+        SOAPBody body = envelope.getBody();
+        SOAPHeader header = envelope.getHeader();
+        Name idName = envelope.createName("ID", "cwmp", "http://cwmp.com");
+        SOAPHeaderElement id = header.addHeaderElement(idName);
+        id.setMustUnderstand(true);
+        id.addTextNode("HEADERID-7867678");
+
+        //Create the SOAPFault object
+        SOAPFault fault = body.addFault();
+        fault.setFaultCode("Client");
+        fault.setFaultString("CWMP fault");
+        fault.setFaultActor("http://gizmos.com/order");
+
+        assertEquals("Client", fault.getFaultCode());
+        assertEquals("CWMP fault", fault.getFaultString());
+        assertEquals("http://gizmos.com/order", fault.getFaultActor());
+
+        //Add Fault Detail information
+        Detail faultDetail = fault.addDetail();
+        Name cwmpFaultName = envelope.createName("Fault", "cwmp", "http://cwmp.com");
+        DetailEntry faultDetailEntry = faultDetail.addDetailEntry(cwmpFaultName);
+        SOAPElement e = faultDetailEntry.addChildElement("FaultCode");
+
+        e.addTextNode("This is the fault code");
+        SOAPElement e2 = faultDetailEntry.addChildElement(envelope.createName("FaultString",
+                                                                              "cwmp",
+                                                                              "http://cwmp.com"));
+        e2.addTextNode("Fault Message");
+
+        SOAPElement e3 = faultDetailEntry.addChildElement("Message");
+        e3.addTextNode("This is a test fault");
+
+        soapMessage.saveChanges();
+
+        // ------------------- Validate the contents -------------------------------------
+        final Detail detail = fault.getDetail();
+        final Iterator detailEntryIter = detail.getDetailEntries();
+        boolean foundFirst = false;
+        boolean foundSecond = false;
+        boolean foundThird = false;
+        while (detailEntryIter.hasNext()) {
+            final DetailEntry detailEntry = (DetailEntry) detailEntryIter.next();
+            final Iterator childElementsIter = detailEntry.getChildElements();
+            while (childElementsIter.hasNext()) {
+                final SOAPElement soapElement = (SOAPElement) childElementsIter.next();
+                if (soapElement.getTagName().equals("FaultCode") &&
+                    soapElement.getValue().equals("This is the fault code")) {
+                    foundFirst = true;
+                }
+                if (soapElement.getTagName().equals("cwmp:FaultString") &&
+                    soapElement.getValue().equals("Fault Message")) {
+                    foundSecond = true;
+                }
+                if (soapElement.getTagName().equals("Message") &&
+                    soapElement.getValue().equals("This is a test fault")) {
+                    foundThird = true;
+                }
+            }
+        }
+        assertTrue(foundFirst && foundSecond && foundThird);
+        // ------------------------------------------------------------------------------
+
+        // Test whether the fault is being serialized properly
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        soapMessage.writeTo(baos);
+        String xml = new String(baos.toByteArray());
+
+        System.out.println(xml);
+        assertTrue(xml.indexOf("<faultcode>Client</faultcode>") != -1);
+        assertTrue(xml.indexOf("<faultstring>CWMP fault</faultstring>") != -1);
+        assertTrue(xml.indexOf("<faultactor>http://gizmos.com/order</faultactor>") != -1);
+    }
+
+    public void testAddDetailsTwice() {
+        try {
+            MessageFactory fac = MessageFactory.newInstance();
+
+            //Create the response to the message
+            SOAPMessage soapMessage = fac.createMessage();
+            SOAPPart soapPart = soapMessage.getSOAPPart();
+            SOAPEnvelope envelope = soapPart.getEnvelope();
+            envelope.addNamespaceDeclaration("cwmp", "http://cwmp.com");
+            SOAPBody body = envelope.getBody();
+
+            body.addFault().addDetail();
+            try {
+                body.getFault().addDetail();
+                fail("Expected Exception did not occur");
+            } catch (SOAPException e) {
+                assertTrue(true);
+            }
+
+        } catch (SOAPException e) {
+            fail("Unexpected Exception Occurred : " + e);
+        }
+    }
+
+    public void testQuick() throws Exception {
+        MessageFactory msgfactory = MessageFactory.newInstance();
+        SOAPFactory factory = SOAPFactory.newInstance();
+        SOAPMessage outputmsg = msgfactory.createMessage();
+        String valueCode = "faultcode";
+        String valueString = "faultString";
+        SOAPFault fault = outputmsg.getSOAPPart().getEnvelope().getBody().addFault();
+        fault.setFaultCode(valueCode);
+        fault.setFaultString(valueString);
+        Detail detail = fault.addDetail();
+        detail.addDetailEntry(factory.createName("Hello"));
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        if (outputmsg.saveRequired()) {
+            outputmsg.saveChanges();
+        }
+        outputmsg.writeTo(baos);
+        String xml = new String(baos.toByteArray());
+        assertTrue(xml.indexOf("Hello") != -1);
+    }
+
+    public void testFaults() {
+        try {
+            MessageFactory messageFactory = MessageFactory.newInstance();
+            SOAPFactory soapFactory = SOAPFactory.newInstance();
+            SOAPMessage message = messageFactory.createMessage();
+            SOAPBody body = message.getSOAPBody();
+            SOAPFault fault = body.addFault();
+
+            Name faultName =
+                    soapFactory.createName("Client", "",
+                                           SOAPConstants.URI_NS_SOAP_ENVELOPE);
+            fault.setFaultCode(faultName);
+
+            fault.setFaultString("Message does not have necessary info");
+            fault.setFaultActor("http://gizmos.com/order");
+
+            Detail detail = fault.addDetail();
+
+            Name entryName =
+                    soapFactory.createName("order", "PO",
+                                           "http://gizmos.com/orders/");
+            DetailEntry entry = detail.addDetailEntry(entryName);
+            entry.addTextNode("Quantity element does not have a value");
+
+            Name entryName2 =
+                    soapFactory.createName("confirmation", "PO",
+                                           "http://gizmos.com/confirm");
+            DetailEntry entry2 = detail.addDetailEntry(entryName2);
+            entry2.addTextNode("Incomplete address: " + "no zip code");
+
+            message.saveChanges();
+
+            System.out.println("Here is what the XML message looks like:");
+            message.writeTo(System.out);
+            System.out.println();
+            System.out.println();
+
+            // Now retrieve the SOAPFault object and
+            // its contents, after checking to see that
+            // there is one
+            if (body.hasFault()) {
+                SOAPFault newFault = body.getFault();
+
+                // Get the qualified name of the fault code
+                Name code = newFault.getFaultCodeAsName();
+
+                String string = newFault.getFaultString();
+                String actor = newFault.getFaultActor();
+
+                System.out.println("SOAP fault contains: ");
+                System.out.println("  Fault code = " + code.getQualifiedName());
+                System.out.println("  Local name = " + code.getLocalName());
+                System.out.println("  Namespace prefix = " + code.getPrefix() +
+                                   ", bound to " + code.getURI());
+                System.out.println("  Fault string = " + string);
+
+                if (actor != null) {
+                    System.out.println("  Fault actor = " + actor);
+                }
+
+                Detail newDetail = newFault.getDetail();
+
+                if (newDetail != null) {
+                    Iterator entries = newDetail.getDetailEntries();
+
+                    while (entries.hasNext()) {
+                        DetailEntry newEntry = (DetailEntry) entries.next();
+                        String value = newEntry.getValue();
+                        System.out.println("  Detail entry = " + value);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    public void testGetFaultActor() {
+        try {
+            SOAPMessage msg = MessageFactory.newInstance().createMessage();
+            SOAPFault sf = msg.getSOAPBody().addFault();
+
+            sf.setFaultActor("/faultActorURI");
+            sf.setFaultActor("/faultActorURI2");
+            String result = sf.getFaultActor();
+
+            if (!result.equals("/faultActorURI2")) {
+                fail("Fault Actor not properly set");
+            }
+        } catch (Exception e) {
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    public void testGetFaultString() {
+        try {
+            SOAPMessage msg = MessageFactory.newInstance().createMessage();
+            SOAPFault sf = msg.getSOAPBody().addFault();
+
+            sf.setFaultString("1st Fault String");
+            sf.setFaultString("2nd Fault String");
+            String result = sf.getFaultString();
+
+            if (!result.equals("2nd Fault String")) {
+                fail("Fault String not properly set");
+            }
+        } catch (Exception e) {
+            fail("Unexpected Exception : " + e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java
new file mode 100644
index 0000000..849c816
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import java.util.Iterator;
+
+public class SOAPHeaderTest extends TestCase {
+    private MessageFactory mf = null;
+    private SOAPMessage msg = null;
+    private SOAPPart sp = null;
+    private SOAPEnvelope envelope = null;
+    private SOAPHeader hdr = null;
+    private SOAPHeaderElement she1 = null;
+    private SOAPHeaderElement she2 = null;
+
+    public SOAPHeaderTest(String name) {
+        super(name);
+    }
+
+    public void testAddHeaderElements() throws Exception {
+        javax.xml.soap.SOAPMessage soapMessage =
+                javax.xml.soap.MessageFactory.newInstance().createMessage();
+        javax.xml.soap.SOAPEnvelope soapEnv =
+                soapMessage.getSOAPPart().getEnvelope();
+        javax.xml.soap.SOAPHeader header = soapEnv.getHeader();
+        assertTrue(header.addChildElement("ebxmlms1") instanceof SOAPHeaderElement);
+        assertTrue(header.addChildElement("ebxmlms2", "ch2", "http;//test.apache.org") instanceof SOAPHeaderElement);
+        assertTrue(header.addHeaderElement(soapEnv.createName("ebxmlms3", "ch3", "http://test2.apache.org")) != null);
+        assertTrue(header.addHeaderElement(soapEnv.createName("ebxmlms4")) != null);
+        assertTrue(header.addHeaderElement(new PrefixedQName("http://test3.apache.org", "ebxmlms5", "ch5")) != null);
+
+        SOAPHeaderElement firstChild = (SOAPHeaderElement) header.getFirstChild();
+        assertEquals("ebxmlms1", firstChild.getLocalName());
+        assertEquals("", firstChild.getPrefix());
+        assertEquals("", firstChild.getNamespaceURI());
+
+        SOAPHeaderElement secondChild = (SOAPHeaderElement) firstChild.getNextSibling();
+        assertEquals("ebxmlms2", secondChild.getLocalName());
+        assertEquals("ch2", secondChild.getPrefix());
+        assertEquals("http;//test.apache.org", secondChild.getNamespaceURI());
+
+        SOAPHeaderElement thirdChild = (SOAPHeaderElement) secondChild.getNextSibling();
+        assertEquals("ebxmlms3", thirdChild.getLocalName());
+        assertEquals("ch3", thirdChild.getPrefix());
+        assertEquals("http://test2.apache.org", thirdChild.getNamespaceURI());
+
+        SOAPHeaderElement lastChild = (SOAPHeaderElement) header.getLastChild();
+        assertEquals("ebxmlms5", lastChild.getLocalName());
+        assertEquals("ch5", lastChild.getPrefix());
+        assertEquals("http://test3.apache.org", lastChild.getNamespaceURI());
+
+        SOAPHeaderElement fourthChild = (SOAPHeaderElement) lastChild.getPreviousSibling();
+        assertEquals("ebxmlms4", fourthChild.getLocalName());
+        assertEquals("", fourthChild.getPrefix());
+        assertEquals("", fourthChild.getNamespaceURI());
+
+        Iterator it = header.getChildElements();
+        int numOfHeaderElements = 0;
+        while (it.hasNext()) {
+            Object o = it.next();
+            assertTrue(o instanceof SOAPHeaderElement);
+            SOAPHeaderElement el = (SOAPHeaderElement) o;
+            String lName = el.getLocalName();
+            assertTrue(lName.equals("ebxmlms" + ++numOfHeaderElements));
+        }
+        assertEquals(5, numOfHeaderElements);
+    }
+
+    public void testHeaders() {
+        try {
+            // Create message factory and SOAP factory
+            MessageFactory messageFactory = MessageFactory.newInstance();
+            SOAPFactory soapFactory = SOAPFactory.newInstance();
+
+            // Create a message
+            SOAPMessage message = messageFactory.createMessage();
+
+            // Get the SOAP header from the message and
+            //  add headers to it
+            SOAPHeader header = message.getSOAPHeader();
+
+            String nameSpace = "ns";
+            String nameSpaceURI = "http://gizmos.com/NSURI";
+
+            Name order =
+                    soapFactory.createName("orderDesk", nameSpace, nameSpaceURI);
+            SOAPHeaderElement orderHeader = header.addHeaderElement(order);
+            orderHeader.setActor("http://gizmos.com/orders");
+
+            Name shipping =
+                    soapFactory.createName("shippingDesk", nameSpace, nameSpaceURI);
+            SOAPHeaderElement shippingHeader =
+                    header.addHeaderElement(shipping);
+            shippingHeader.setActor("http://gizmos.com/shipping");
+
+            Name confirmation =
+                    soapFactory.createName("confirmationDesk", nameSpace,
+                                           nameSpaceURI);
+            SOAPHeaderElement confirmationHeader =
+                    header.addHeaderElement(confirmation);
+            confirmationHeader.setActor("http://gizmos.com/confirmations");
+
+            Name billing =
+                    soapFactory.createName("billingDesk", nameSpace, nameSpaceURI);
+            SOAPHeaderElement billingHeader = header.addHeaderElement(billing);
+            billingHeader.setActor("http://gizmos.com/billing");
+
+            // Add header with mustUnderstand attribute
+            Name tName =
+                    soapFactory.createName("Transaction", "t",
+                                           "http://gizmos.com/orders");
+
+            SOAPHeaderElement transaction = header.addHeaderElement(tName);
+            transaction.setMustUnderstand(true);
+            transaction.addTextNode("5");
+
+            // Get the SOAP body from the message but leave
+            // it empty
+            SOAPBody body = message.getSOAPBody();
+
+            message.saveChanges();
+
+            // Display the message that would be sent
+            System.out.println("\n----- Request Message ----\n");
+            message.writeTo(System.out);
+
+            // Look at the headers
+            Iterator allHeaders = header.examineAllHeaderElements();
+
+            while (allHeaders.hasNext()) {
+                SOAPHeaderElement headerElement =
+                        (SOAPHeaderElement) allHeaders.next();
+                Name headerName = headerElement.getElementName();
+                System.out.println("\nHeader name is " +
+                                   headerName.getQualifiedName());
+                System.out.println("Actor is " + headerElement.getActor());
+                System.out.println("mustUnderstand is " +
+                                   headerElement.getMustUnderstand());
+            }
+        } catch (Exception e) {
+            fail("Enexpected Exception " + e);
+        }
+    }
+
+    protected void setUp() throws Exception {
+        msg = MessageFactory.newInstance().createMessage();
+        sp = msg.getSOAPPart();
+        envelope = sp.getEnvelope();
+        hdr = envelope.getHeader();
+    }
+
+    public void testExamineHeader() {
+        SOAPHeaderElement she = null;
+
+        try {
+            she1 = hdr.addHeaderElement(envelope.createName("foo1", "f1", "foo1-URI"));
+            she1.setActor("actor-URI");
+            Iterator iterator = hdr.examineAllHeaderElements();
+            int cnt = 0;
+            while (iterator.hasNext()) {
+                cnt++;
+                she = (SOAPHeaderElement) iterator.next();
+                if (!she.equals(she1)) {
+                    fail("SOAP Header Elements do not match");
+                }
+            }
+
+            if (cnt != 1) {
+                fail("SOAPHeaderElement count mismatch: expected 1, received " + cnt);
+            }
+
+            iterator = hdr.examineAllHeaderElements();
+            if (!iterator.hasNext()) {
+                fail("no elements in iterator - unexpected");
+            }
+
+        } catch (Exception e) {
+            fail("Unexpected Exception: " + e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java
new file mode 100644
index 0000000..fa391e8
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java
@@ -0,0 +1,49 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPMessage;
+
+/**
+ * 
+ */
+public class SOAPMessageTest extends TestCase {
+    private SOAPMessage msg;
+
+    protected void setUp() throws Exception {
+        msg = MessageFactory.newInstance().createMessage();
+    }
+
+    public void testSaveRequired() {
+        try {
+            assertTrue("Save Required is False",msg.saveRequired());
+        } catch (Exception e) {
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    public void testSaveRequired2() {
+        try {
+            msg.saveChanges();
+            assertFalse("Save Required is True",msg.saveRequired());
+        } catch (Exception e) {
+            fail("Unexpected Exception : " + e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPNamespaceTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPNamespaceTest.java
new file mode 100644
index 0000000..f8f3743
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPNamespaceTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPMessage;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+import junit.framework.TestCase;
+
+/**
+ * Ref: JIRA- Axis2-517
+ *
+ */
+public class SOAPNamespaceTest extends TestCase {
+
+    public SOAPNamespaceTest(String arg0) {
+        super(arg0);
+    }
+
+    
+    public void test() {
+        try
+        {
+            String xml = "<?xml version='1.0' ?><env:Envelope xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\"><env:Body/></env:Envelope>";
+            
+            SOAPMessage msg = MessageFactory.newInstance().createMessage(null, new ByteArrayInputStream(xml.getBytes()));
+            msg.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true");
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            msg.writeTo(baos);
+            String producedMag = new String(baos.toByteArray());
+            String [] splitParts = producedMag.split("http://schemas.xmlsoap.org/soap/envelope");
+            assertEquals("Extra namespace declaration" ,2 ,splitParts.length);
+        }
+        catch (Exception e)
+        {
+            fail(e.getMessage());
+        }
+    }
+    
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java
new file mode 100644
index 0000000..b675c24
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java
@@ -0,0 +1,147 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import javax.activation.DataHandler;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import javax.xml.soap.Text;
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamSource;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.util.Iterator;
+
+/**
+ * 
+ */
+public class SOAPPartTest extends TestCase {
+    public void testGetContents() {
+        try {
+            ByteArrayInputStream ins = new ByteArrayInputStream(new byte[5]);
+            DataHandler dh = new DataHandler(new AttachmentTest("t").new Src(ins, "text/plain"));
+            InputStream in = dh.getInputStream();
+            StreamSource ssrc = new StreamSource(in);
+
+            SOAPPart sp = MessageFactory.newInstance().createMessage().getSOAPPart();
+            sp.setContent(ssrc);
+
+            Source ssrc2 = sp.getContent();
+            if (ssrc2 == null) {
+                fail("Contents were null");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception " + e);
+        }
+    }
+
+    public void testAddSource() {
+        DOMSource domSource;
+        try {
+            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+            Document document = builder.parse(new File("test-resources" + File.separator + "soap-part.xml"));
+            domSource = new DOMSource(document);
+
+            SOAPMessage message = MessageFactory.newInstance().createMessage();
+
+            // Get the SOAP part and set its content to domSource
+            SOAPPart soapPart = message.getSOAPPart();
+            soapPart.setContent(domSource);
+            message.saveChanges();
+
+            SOAPHeader header = message.getSOAPHeader();
+            if (header != null) {
+                Iterator iter1 = header.getChildElements();
+                System.out.println("Header contents:");
+                getContents(iter1, "");
+            }
+
+            SOAPBody body = message.getSOAPBody();
+            Iterator iter2 = body.getChildElements();
+            System.out.println("Body contents:");
+            getContents(iter2, "");
+
+            /* SOAPEnvelope envelope = soapPart.getEnvelope();
+            SOAPHeader header = envelope.getHeader();
+            assertEquals("Header", header.getLocalName());
+            assertEquals("soapenv", header.getPrefix());
+
+            Node firstChild = header.getFirstChild();
+//            assertEquals("Hello", firstChild.getLocalName());
+//            assertEquals("shw", firstChild.getPrefix());
+
+            SOAPBody body = envelope.getBody();
+            assertEquals("Body", body.getLocalName());
+            assertEquals("soapenv", body.getPrefix());
+
+            for(Iterator iter=body.getChildElements(); iter.hasNext();){
+                System.err.println("$$$ " + iter.next());
+            }*/
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Unexpected Exception : " + e);
+        }
+    }
+
+    public void getContents(Iterator iterator, String indent) {
+        System.err.println(iterator.hasNext());
+        while (iterator.hasNext()) {
+            Node node = (Node) iterator.next();
+            SOAPElement element = null;
+            Text text = null;
+
+            if (node instanceof SOAPElement) {
+                element = (SOAPElement) node;
+
+                Name name = element.getElementName();
+                System.out.println(indent + "Name is " + name.getQualifiedName());
+
+                Iterator attrs = element.getAllAttributes();
+
+                while (attrs.hasNext()) {
+                    Name attrName = (Name) attrs.next();
+                    System.out.println(indent + " Attribute name is " +
+                                       attrName.getQualifiedName());
+                    System.out.println(indent + " Attribute value is " +
+                                       element.getAttributeValue(attrName));
+                }
+
+                Iterator iter2 = element.getChildElements();
+                getContents(iter2, indent + " ");
+            } else {
+                text = (Text) node;
+
+                String content = text.getValue();
+                System.out.println(indent + "Content is: " + content);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/TextTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/TextTest.java
new file mode 100644
index 0000000..07fe144
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/TextTest.java
@@ -0,0 +1,185 @@
+/*
+* Copyright 2004,2005 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.axis2.saaj;
+
+import junit.framework.TestCase;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.Text;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+public class TextTest extends TestCase {
+
+    public TextTest(String name) {
+        super(name);
+    }
+
+    //Test SAAJ addTextNode performance
+    public void testAddTextNode() throws Exception {
+        SOAPFactory soapFactory = SOAPFactory.newInstance();
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage message = factory.createMessage();
+        SOAPBody body = message.getSOAPBody();
+
+        // Create the base element
+        Name bodyName = soapFactory.createName("VBGenReceiver", "xsi",
+                                               "http://www.w3.org/2001/XMLSchema-instance");
+        SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
+                                                           
+        // Create the MetaData Tag
+        Name name = soapFactory.createName("MetaData");
+        SOAPElement metaData = bodyElement.addChildElement(name);
+
+        //Create the SKey Tag
+        name = soapFactory.createName("SKey");
+        SOAPElement sKey = metaData.addChildElement(name);
+        sKey.addTextNode("SKEY001");
+
+        //Create Object Tag
+        name = soapFactory.createName("Object");
+        SOAPElement object = bodyElement.addChildElement(name);
+
+        //Create Book ID Tag
+        name = soapFactory.createName("BookID");
+        SOAPElement bookID = object.addChildElement(name);
+        bookID.addTextNode("BookID002");
+
+        //Create OrderID tag
+        name = soapFactory.createName("OrderID");
+        SOAPElement orderID = object.addChildElement(name);
+        orderID.addTextNode("OrderID003");
+
+        //create PurchaseID tage
+        name = soapFactory.createName("PurchaseID");
+        SOAPElement purchaseID = object.addChildElement(name);
+        purchaseID.addTextNode("PurchaseID005");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("LanguageID");
+        SOAPElement languageID = object.addChildElement(name);
+        languageID.addTextNode("LanguageID004");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("LanguageName");
+        SOAPElement languageName = object.addChildElement(name);
+        languageName.addTextNode("LanguageName006");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("Title");
+        SOAPElement title = object.addChildElement(name);
+        title.addTextNode("Title007");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("Author");
+        SOAPElement author = object.addChildElement(name);
+        author.addTextNode("Author008");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("Format");
+        SOAPElement format = bodyElement.addChildElement(name);
+
+        //create LanguageID Tag
+        name = soapFactory.createName("Type");
+        SOAPElement formatType = format.addChildElement(name);
+        formatType.addTextNode("Type009");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("Delivery");
+        SOAPElement delivery = bodyElement.addChildElement(name);
+
+        //create LanguageID Tag
+        name = soapFactory.createName("Name");
+        SOAPElement delName = delivery.addChildElement(name);
+        delName.addTextNode("Name010");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("Address1");
+        SOAPElement address1 = delivery.addChildElement(name);
+        address1.addTextNode("Address1011");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("Address2");
+        SOAPElement address2 = delivery.addChildElement(name);
+        address2.addTextNode("Address2012");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("City");
+        SOAPElement city = delivery.addChildElement(name);
+        city.addTextNode("City013");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("State");
+        SOAPElement state = delivery.addChildElement(name);
+        state.addTextNode("State014");
+
+        //create LanguageID Tag
+        name = soapFactory.createName("PostalCode");
+        SOAPElement postalCode = delivery.addChildElement(name);
+        postalCode.addTextNode("PostalCode015");
+
+        System.out.println("The message is:\n");
+        message.writeTo(System.out);
+        System.out.flush();
+    }
+
+    public void testComment() throws SOAPException, IOException {
+
+        String xmlString = "<?xml version='1.0' encoding='utf-8'?> " +
+                           "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
+                           "<soapenv:Header></soapenv:Header>" +
+                           "<soapenv:Body>" +
+                           "<Node:abc xmlns:Node=\"http://www.simpletest.org\">" +
+                           "This is some text" +
+                           "<!--This is comment-->This is other text" +
+                           "<!--This is another comment-->This is some other text" +
+                           "</Node:abc>" +
+                           "</soapenv:Body>" +
+                           "</soapenv:Envelope>";
+
+        MessageFactory mf = MessageFactory.newInstance();
+        SOAPMessage message =
+                mf.createMessage(new MimeHeaders(), new ByteArrayInputStream(xmlString.getBytes()));
+
+        SOAPBody body = message.getSOAPBody();
+        Node bodyElement = body.getFirstChild();
+        NodeList textNodes = bodyElement.getChildNodes();
+
+        assertEquals(5, textNodes.getLength());
+
+        for (int i = 0; i < textNodes.getLength(); i++) {
+            Node node = textNodes.item(i);
+            boolean isComment;
+            isComment = ((Text) node).isComment();
+            if (i == 1 || i == 3) {
+                assertEquals(true, isComment);
+            } else {
+                assertEquals(false, isComment);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/EchoService.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/EchoService.java
new file mode 100644
index 0000000..d2416eb
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/EchoService.java
@@ -0,0 +1,40 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj.integration;
+
+import org.apache.axiom.om.OMElement;
+
+import javax.xml.stream.XMLStreamException;
+
+/**
+ * 
+ */
+public class EchoService {
+     public OMElement echo(OMElement element) throws XMLStreamException {
+        System.err.println("################ Echo Service was called, Element=" + element);
+
+        //Praparing the OMElement so that it can be attached to another OM Tree.
+        //First the OMElement should be completely built in case it is not fully built and still
+        //some of the xml is in the stream.
+        element.build();
+        //Secondly the OMElement should be detached from the current OMTree so that it can be attached
+        //some other OM Tree. Once detached the OmTree will remove its connections to this OMElement.
+//        element.detach();
+        return element;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/IntegrationTest.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/IntegrationTest.java
new file mode 100644
index 0000000..e54800f
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/IntegrationTest.java
@@ -0,0 +1,321 @@
+/*                                                                             
+ * Copyright 2006 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.axis2.saaj.integration;
+
+import junit.extensions.TestSetup;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.util.Utils;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.xml.namespace.QName;
+import javax.xml.soap.AttachmentPart;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPConnection;
+import javax.xml.soap.SOAPConnectionFactory;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Iterator;
+
+public class IntegrationTest extends TestCase {
+
+    private static final String ADDRESS = "http://127.0.0.1:" +
+                                          (UtilServer.TESTING_PORT) +
+                                          "/axis2/services/Echo";
+//    private static final String ADDRESS = "http://127.0.0.1:8081" +
+//                                          "/axis2/services/Echo";
+    public static final EndpointReference TARGET_EPR = new EndpointReference(ADDRESS);
+
+    public static final QName SERVICE_NAME = new QName("Echo");
+    public static final QName OPERATION_NAME = new QName("echo");
+
+    public static final String SAAJ_REPO = "target/test-resources/saaj-repo";
+
+    public IntegrationTest(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return new TestSetup(new TestSuite(IntegrationTest.class)) {
+            public void setUp() throws Exception {
+                UtilServer.start(SAAJ_REPO);
+                Parameter eneblemtom = new Parameter("enableMTOM","true");
+                UtilServer.getConfigurationContext().getAxisConfiguration().addParameter(eneblemtom);
+            }
+
+            public void tearDown() throws Exception {
+                UtilServer.stop();
+            }
+        };
+    }
+
+    protected void setUp() throws Exception {
+        final AxisService service = Utils.createSimpleService(SERVICE_NAME,
+                                                              EchoService.class.getName(),
+                                                              OPERATION_NAME);
+        UtilServer.deployService(service);
+    }
+
+    protected void tearDown() throws Exception {
+        UtilServer.unDeployService(SERVICE_NAME);
+        UtilServer.unDeployClientService();
+    }
+
+    public void testSendReceiveSimpleSOAPMessage() {
+        try {
+            MessageFactory mf = MessageFactory.newInstance();
+            SOAPMessage request = mf.createMessage();
+
+            createSimpleSOAPPart(request);
+
+            SOAPConnection sCon = SOAPConnectionFactory.newInstance().createConnection();
+            SOAPMessage response = sCon.call(request, ADDRESS);
+            assertFalse(response.getAttachments().hasNext());
+            assertEquals(0, response.countAttachments());
+
+            String requestStr = printSOAPMessage(request);
+            String responseStr = printSOAPMessage(response);
+//            assertEquals(requestStr, responseStr);
+            assertTrue(responseStr.indexOf("echo") != -1);
+            sCon.close();
+        } catch (SOAPException e) {
+            e.printStackTrace();
+            fail("Unexpected Exception while running test: " + e);
+        } catch (IOException e) {
+            fail("Unexpected Exception while running test: " + e);
+        }
+    }
+
+    private String printSOAPMessage(final SOAPMessage msg) throws SOAPException, IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        msg.writeTo(baos);
+        String responseStr = baos.toString();
+
+        System.out.println("\n\n----------------------Message-------------------------\n" +
+                           responseStr);
+        System.out.println("-------------------------------------------------------\n\n");
+        assertTrue(responseStr.indexOf("This is some text") != -1);
+        return responseStr;
+    }
+
+    public void testSendReceiveMessageWithAttachment() throws Exception {
+        MessageFactory mf = MessageFactory.newInstance();
+        SOAPMessage request = mf.createMessage();
+
+        //create the SOAPPart
+        createSOAPPart(request);
+
+        //Attach a text/plain object with the SOAP request
+        String sampleMessage = "Sample Message: Hello World!";
+        AttachmentPart textAttach = request.createAttachmentPart(sampleMessage, "text/plain");
+        textAttach.addMimeHeader("Content-Transfer-Encoding", "binary");
+        textAttach.setContentId("submitSampleText@apache.org");
+        request.addAttachmentPart(textAttach);
+
+        //Attach a java.awt.Image object to the SOAP request
+        String jpgfilename = "test-resources/axis2.jpg";
+        File myfile = new File(jpgfilename);
+        FileDataSource fds = new FileDataSource(myfile);
+        DataHandler imageDH = new DataHandler(fds);
+        AttachmentPart jpegAttach = request.createAttachmentPart(imageDH);
+        jpegAttach.addMimeHeader("Content-Transfer-Encoding", "binary");
+        jpegAttach.setContentId("submitSampleImage@apache.org");
+        jpegAttach.setContentType("image/jpg");
+        request.addAttachmentPart(jpegAttach);
+
+        SOAPConnection sCon = SOAPConnectionFactory.newInstance().createConnection();
+        SOAPMessage response = sCon.call(request, ADDRESS);
+
+        int attachmentCount = response.countAttachments();
+        assertTrue(attachmentCount == 2);
+
+        Iterator attachIter = response.getAttachments();
+
+        int i = 0;
+        while (attachIter.hasNext()) {
+            AttachmentPart attachment = (AttachmentPart) attachIter.next();
+            final Object content = attachment.getDataHandler().getContent();
+            if (content instanceof String) {
+                assertEquals(sampleMessage, (String) content);
+            } else if (content instanceof ByteArrayInputStream) {
+                ByteArrayInputStream bais = (ByteArrayInputStream) content;
+                byte[] b = new byte[15000];
+                final int lengthRead = bais.read(b);
+                FileOutputStream fos =
+                        new FileOutputStream(new File("target/test-resources/result" + (i++) + ".jpg"));
+                fos.write(b, 0, lengthRead);
+                fos.flush();
+                fos.close();
+
+                assertTrue(attachment.getContentType().equals("image/jpeg")
+                           || attachment.getContentType().equals("text/plain"));
+            }
+        }
+
+        sCon.close();
+
+        /*final SOAPBody respBody = response.getSOAPPart().getEnvelope().getBody();
+        System.out.println("------------------------------------");
+        for (Iterator childEleIter = respBody.getChildElements(); childEleIter.hasNext();) {
+            SOAPElement o = (SOAPElement) childEleIter.next();
+            System.out.println("@@@@@@@@@ o.tn=" + o.getTagName());
+            System.out.println("------------------------------------------");
+            for (Iterator iter = o.getChildElements(); iter.hasNext();) {
+                SOAPElement p = (SOAPElement) iter.next();
+                System.out.println("@@@@@@@@@ p.o=" + p);
+                System.out.println("@@@@@@@@@ p.pre=" + p.getPrefix());
+                System.out.println("@@@@@@@@@ p.ln=" + p.getLocalName());
+                System.out.println("@@@@@@@@@ p.tn=" + p.getTagName());
+                System.out.println("@@@@@@@@@ p.ns URI=" + p.getNamespaceURI());
+                System.out.println("@@@@@@@@@ p.Val=" + p.getValue());
+            }
+        }
+        System.out.println("------------------------------------");*/
+
+//        response.getSOAPPart().getEnvelope().getHeader().extractAllHeaderElements();
+//        sCon.call(response, ADDRESS);
+
+//        printSOAPMessage(response);
+    }
+
+    public void testSendReceiveNonRefAttachment() throws Exception {
+        MessageFactory mf = MessageFactory.newInstance();
+        SOAPMessage request = mf.createMessage();
+
+        //create the SOAPPart
+        createSimpleSOAPPart(request);
+
+        //Attach a text/plain object with the SOAP request
+        String sampleMessage = "Sample Message: Hello World!";
+        AttachmentPart textAttach = request.createAttachmentPart(sampleMessage, "text/plain");
+//        textAttach.addMimeHeader("Content-Transfer-Encoding", "binary");
+        request.addAttachmentPart(textAttach);
+
+        SOAPConnection sCon = SOAPConnectionFactory.newInstance().createConnection();
+        SOAPMessage response = sCon.call(request, ADDRESS);
+/*
+        int attachmentCount = response.countAttachments();
+        assertTrue(attachmentCount == 2);
+
+        Iterator attachIter = response.getAttachments();
+
+        int i = 0;
+        while (attachIter.hasNext()) {
+            AttachmentPart attachment = (AttachmentPart) attachIter.next();
+            final Object content = attachment.getDataHandler().getContent();
+            if (content instanceof String) {
+                assertEquals(sampleMessage, (String) content);
+            } else if (content instanceof ByteArrayInputStream) {
+                ByteArrayInputStream bais = (ByteArrayInputStream) content;
+                byte[] b = new byte[15000];
+                final int lengthRead = bais.read(b);
+                FileOutputStream fos =
+                        new FileOutputStream(new File("target/test-resources/result" + (i++) + ".jpg"));
+                fos.write(b, 0, lengthRead);
+                fos.flush();
+                fos.close();
+
+                assertTrue(attachment.getContentType().equals("image/jpeg")
+                           || attachment.getContentType().equals("text/plain"));
+            }
+        }*/
+
+        sCon.close();
+    }
+
+    private void createSOAPPart(SOAPMessage message) throws SOAPException {
+        SOAPPart sPart = message.getSOAPPart();
+        SOAPEnvelope env = sPart.getEnvelope();
+        SOAPBody body = env.getBody();
+
+        final SOAPHeader soapHeader = env.getHeader();
+        soapHeader.addHeaderElement(env.createName("TestHeader1", "swa", "http://fakeNamespace.org"));
+        soapHeader.addHeaderElement(env.createName("TestHeader2", "swa", "http://fakeNamespace.org"));
+        final SOAPHeaderElement headerEle3 =
+                soapHeader.addHeaderElement(env.createName("TestHeader3", "swa", "http://fakeNamespace.org"));
+        final SOAPElement ch1 = headerEle3.addChildElement("he3", "swa");
+        ch1.addTextNode("Im Header Element of header3");
+
+        Name ns = env.createName("echo", "swa", "http://fakeNamespace.org");
+        SOAPBodyElement bodyElement = body.addBodyElement(ns);
+
+        Name nameMain = env.createName("internal");
+        SOAPElement mainChildEle = bodyElement.addChildElement(nameMain);
+
+        Name ns2 = env.createName("text");
+        SOAPElement textReference = mainChildEle.addChildElement(ns2);
+        Name hrefAttr = env.createName("href");
+        textReference.addAttribute(hrefAttr, "cid:submitSampleText@apache.org");
+
+        Name ns3 = env.createName("image");
+        SOAPElement imageReference = mainChildEle.addChildElement(ns3);
+        Name ns31 = env.createName("inner");
+        final SOAPElement img = imageReference.addChildElement(ns31);
+        img.addAttribute(hrefAttr, "cid:submitSampleImage@apache.org");
+
+        Name ns4 = env.createName("plaintxt");
+        SOAPElement plainTxt = mainChildEle.addChildElement(ns4);
+        plainTxt.addTextNode("This is simple plain text");
+
+        Name ns5 = env.createName("nested");
+        SOAPElement nested = mainChildEle.addChildElement(ns5);
+        nested.addTextNode("Nested1 Plain Text");
+        Name ns6 = env.createName("nested2");
+        SOAPElement nested2 = nested.addChildElement(ns6);
+        nested2.addTextNode("Nested2 Plain Text");
+    }
+
+    private void createSimpleSOAPPart(SOAPMessage message) throws SOAPException {
+        SOAPPart sPart = message.getSOAPPart();
+        SOAPEnvelope env = sPart.getEnvelope();
+        SOAPBody body = env.getBody();
+        SOAPHeader header = env.getHeader();
+        header.addHeaderElement(env.createName("Header1",
+                                               "pref",
+                                               "http://test.apach.org/test")).addTextNode("This is header1");
+
+        Name ns = env.createName("echo", "swa2", "http://fakeNamespace2.org");
+        final SOAPBodyElement bodyElement = body.addBodyElement(ns);
+        Name ns2 = env.createName("something");
+        final SOAPElement ele1 = bodyElement.addChildElement(ns2);
+        ele1.addTextNode("This is some text");
+
+        Name ns3 = env.createName("ping", "swa3", "http://fakeNamespace3.org");
+        final SOAPBodyElement bodyElement2 = body.addBodyElement(ns3);
+        Name ns4 = env.createName("another");
+        final SOAPElement ele2 = bodyElement2.addChildElement(ns4);
+        ele2.addTextNode("This is another text");
+    }
+}
diff --git a/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/UtilServer.java b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/UtilServer.java
new file mode 100644
index 0000000..3250203
--- /dev/null
+++ b/rampart_1_1/modules/saaj/test/org/apache/axis2/saaj/integration/UtilServer.java
@@ -0,0 +1,181 @@
+/*                                                                             
+ * Copyright 2004,2005 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.axis2.saaj.integration;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.deployment.DeploymentEngine;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.io.FilenameFilter;
+
+/**
+ * 
+ */
+public class UtilServer {
+    private static int count = 0;
+
+    private static SimpleHTTPServer receiver;
+
+    public static final int TESTING_PORT = 5555;
+
+    public static synchronized void deployService(AxisService service) throws AxisFault {
+        receiver.getConfigurationContext().getAxisConfiguration().addService(service);
+    }
+
+    public static synchronized void unDeployService(QName service) throws AxisFault {
+        receiver.getConfigurationContext().getAxisConfiguration().
+                removeService(service.getLocalPart());
+    }
+
+    public static synchronized void unDeployClientService() throws AxisFault {
+        if (receiver.getConfigurationContext().getAxisConfiguration() != null) {
+            receiver.getConfigurationContext().getAxisConfiguration()
+                    .removeService("AnonymousService");
+        }
+    }
+
+    public static synchronized void start() throws Exception {
+        start(org.apache.axis2.Constants.TESTING_REPOSITORY);
+    }
+
+    public static synchronized void start(String repository) throws Exception {
+        if (count == 0) {
+            ConfigurationContext er = getNewConfigurationContext(repository);
+
+            receiver = new SimpleHTTPServer(er, TESTING_PORT);
+
+            receiver.start();
+            System.out.print("Server started on port " + TESTING_PORT + ".....");
+
+            try {
+                Thread.sleep(2000);
+            } catch (InterruptedException e1) {
+                throw new AxisFault("Thread interupted", e1);
+            }
+
+        }
+        count++;
+    }
+
+    public static ConfigurationContext getNewConfigurationContext(String repository)
+            throws Exception {
+        File file = new File(repository);
+        if (!file.exists()) {
+            throw new Exception("repository directory "
+                    + file.getAbsolutePath() + " does not exists");
+        }
+        return ConfigurationContextFactory.createConfigurationContextFromFileSystem(file.getAbsolutePath(), null);
+    }
+
+    public static synchronized void stop() throws AxisFault {
+        if (count == 1) {
+            receiver.stop();
+            while (receiver.isRunning()) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e1) {
+                }
+            }
+            count = 0;
+            System.out.print("Server stopped .....");
+        } else {
+            count--;
+        }
+        ListenerManager listenerManager = receiver.getConfigurationContext().getListenerManager();
+        if (listenerManager != null) {
+            listenerManager.stop();
+        }
+    }
+
+    public static ConfigurationContext getConfigurationContext() {
+        return receiver.getConfigurationContext();
+    }
+
+    static class AddressingFilter implements FilenameFilter {
+        public boolean accept(File dir, String name) {
+            return name.startsWith("addressing") && name.endsWith(".mar");
+        }
+    }
+
+    private static File getAddressingMARFile() {
+        File dir = new File(org.apache.axis2.Constants.TESTING_REPOSITORY);
+        File[] files = dir.listFiles(new AddressingFilter());
+        TestCase.assertTrue(files.length == 1);
+        File file = files[0];
+        TestCase.assertTrue(file.exists());
+        return file;
+    }
+
+    public static ServiceContext createAdressedEnabledClientSide(
+            AxisService service) throws AxisFault {
+        File file = getAddressingMARFile();
+        TestCase.assertTrue(file.exists());
+
+        ConfigurationContext configContext = ConfigurationContextFactory
+                .createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+        AxisModule axisModule = DeploymentEngine.buildModule(file,
+                configContext.getAxisConfiguration());
+        configContext.getAxisConfiguration().addModule(axisModule);
+
+        configContext.getAxisConfiguration().addService(service);
+
+        return new ServiceGroupContext(configContext, (AxisServiceGroup) service.getParent())
+                .getServiceContext(service);
+    }
+
+    public static ConfigurationContext createClientConfigurationContext() throws AxisFault {
+        File file = getAddressingMARFile();
+        TestCase.assertTrue(file.exists());
+
+        ConfigurationContext configContext = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-resources/integrationRepo", null);
+        AxisModule axisModule = DeploymentEngine.buildModule(file,
+                configContext.getAxisConfiguration());
+        configContext.getAxisConfiguration().addModule(axisModule);
+        configContext.getAxisConfiguration().engageModule(new QName("addressing"));
+        return configContext;
+    }
+
+    public static ServiceContext createAdressedEnabledClientSide(
+            AxisService service, String clientHome) throws AxisFault {
+        File file = getAddressingMARFile();
+        TestCase.assertTrue(file.exists());
+
+        ConfigurationContext configContext = ConfigurationContextFactory
+                .createConfigurationContextFromFileSystem(clientHome, null);
+        AxisModule axisModule = DeploymentEngine.buildModule(file,
+                configContext.getAxisConfiguration());
+
+        configContext.getAxisConfiguration().addModule(axisModule);
+        // sysContext.getAxisConfiguration().engageModule(moduleDesc.getName());
+
+        configContext.getAxisConfiguration().addService(service);
+
+        return new ServiceGroupContext(configContext, (AxisServiceGroup) service.getParent())
+                .getServiceContext(service);
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/build.xml b/rampart_1_1/modules/samples/build.xml
new file mode 100644
index 0000000..396323f
--- /dev/null
+++ b/rampart_1_1/modules/samples/build.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0"?>
+<!-- ====================================================================== 
+     Feb 11, 2005 1:04:21 PM                                                        
+
+      This build file is intended to compile and run the Axis2 samples
+      provided here with the service being deployed at Tomcat or by
+      running a simple Axis2 server.   
+     
+                   
+                                                                     
+     ====================================================================== -->
+<project name="samples" basedir="." default="compile">
+    <property name="src.dir" value="src"/>
+    <property name="build.dir" value="build"/>
+    <property name="lib.dir" value="${build.dir}/lib"/>
+    <property name="classes.dir" value="./classes"/>
+
+    <property name="jardrop.dir" value="${build.dir}/services"/>
+    <property environment="env"/>
+    <property name="AXIS2_HOME" value="${env.AXIS2_HOME}"/>
+    <property name="axis.serverJarDrop.dir" value="${AXIS2_HOME}/WEB-INF/services"/>
+
+    <property name="conf.dir" value="conf"/>
+
+    <path id="classpath.library">
+        <fileset dir="${AXIS2_HOME}/WEB-INF/lib">
+            <include name="**/*.jar"/>
+        </fileset>
+    </path>
+
+    <path id="classpath.client">
+        <fileset dir="${lib.dir}">
+            <include name="**/*.jar"/>
+        </fileset>
+    </path>
+
+    <path id="classpath.runtimelibraries">
+        <path refid="classpath.library"/>
+        <path refid="classpath.client"/>
+    </path>
+
+
+    <target name="clean" description="Delete all generated files">
+        <delete dir="${classes.dir}" failonerror="false"/>
+
+        <delete dir="${build.dir}" failonerror="false"/>
+    </target>
+
+    <target name="validateAxisHome">
+        <available file="${AXIS2_HOME}}" type="dir" property="axis2.deployed"/>
+    </target>
+
+    <target name="validateSevices.dir">
+        <available file="${AXIS2_HOME}/WEB-INF/services" type="dir" property="axis2.services"/>
+    </target>
+
+    <target name="validateDeploymentSettings" depends="validateAxisHome" unless="validateSevices.dir">
+        <mkdir dir="${AXIS2_HOME}/WEB-INF/services"/>
+    </target>
+
+
+    <target name="createDir">
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${lib.dir}"/>
+        <mkdir dir="${classes.dir}"/>
+        <mkdir dir="${jardrop.dir}"/>
+    </target>
+
+    <target name="compile" depends="clean,createDir">
+        <javac srcdir="${src.dir}" destdir="${classes.dir}">
+            <classpath refid="classpath.library"/>
+        </javac>
+        <jar destfile="${lib.dir}/${ant.project.name}-all.jar">
+            <fileset dir="${classes.dir}"/>
+        </jar>
+
+        <copy file="${conf.dir}/services.xml" todir="${build.dir}/META-INF" overwrite="true"/>
+
+        <jar destfile="${jardrop.dir}/sample1.jar">
+
+            <fileset dir="${classes.dir}">
+                <include name="**/EchoXML.class"/>
+            </fileset>
+            <fileset dir="${build.dir}">
+                <include name="META-INF/services.xml"/>
+            </fileset>
+        </jar>
+
+
+        <copy file="${conf.dir}/service4withhandler.xml" tofile="${build.dir}/META-INF/services.xml" overwrite="true"/>
+
+        <jar destfile="${jardrop.dir}/sample1WithHandler.jar">
+
+            <fileset dir="${classes.dir}">
+                <include name="**/EchoXML.class"/>
+                <include name="**/LoggingHandler.class"/>
+            </fileset>
+            <fileset dir="${build.dir}">
+                <include name="META-INF/services.xml"/>
+            </fileset>
+        </jar>
+        <delete dir="${classes.dir}" failonerror="false"/>
+    </target>
+
+
+    <target name="deploy" depends="compile,validateDeploymentSettings">
+        <copy file="${jardrop.dir}/sample1.jar" todir="${axis.serverJarDrop.dir}" overwrite="true"/>
+        <copy file="${jardrop.dir}/sample1WithHandler.jar" todir="${axis.serverJarDrop.dir}" overwrite="true"/>
+    </target>
+
+    <target name="echo" depends="compile">
+        <java classname="userguide.sample1.SynchronousClient">
+            <classpath refid="classpath.runtimelibraries"/>
+            <arg value="8080"/>
+            <arg value="/axis2/services/sample1"/>
+        </java>
+    </target>
+
+    <target name="echoWithHandler" depends="compile">
+        <java classname="userguide.sample1.SynchronousClient">
+            <classpath refid="classpath.runtimelibraries"/>
+            <arg value="8080"/>
+            <arg value="/axis2/services/sample1WithHandler"/>
+        </java>
+    </target>
+
+    <target name="echoAsync" depends="compile">
+        <java classname="userguide.sample1.AsynchronousClient">
+            <classpath refid="classpath.runtimelibraries"/>
+            <arg value="8080"/>
+            <arg value="/axis2/services/sample1"/>
+        </java>
+    </target>
+</project>
+
diff --git a/rampart_1_1/modules/samples/conf/service4withhandler.xml b/rampart_1_1/modules/samples/conf/service4withhandler.xml
new file mode 100644
index 0000000..3d9d717
--- /dev/null
+++ b/rampart_1_1/modules/samples/conf/service4withhandler.xml
@@ -0,0 +1,5 @@
+<service messageReceiver="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" style="rpc" contextPath="services">
+
+    <parameter name="ServiceClass" locked="false">userguide.sample1.EchoXML</parameter>
+    <operation name="echo" qname="echo"/>
+</service>
diff --git a/rampart_1_1/modules/samples/conf/services.xml b/rampart_1_1/modules/samples/conf/services.xml
new file mode 100644
index 0000000..81dbea9
--- /dev/null
+++ b/rampart_1_1/modules/samples/conf/services.xml
@@ -0,0 +1,4 @@
+<service name="">
+    <parameter name="ServiceClass" locked="false">userguide.sample1.EchoXML</parameter>
+    <operation name="echo" qname="echo"/>
+</service>
diff --git a/rampart_1_1/modules/samples/databinding/README.txt b/rampart_1_1/modules/samples/databinding/README.txt
new file mode 100644
index 0000000..24c11ce
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/README.txt
@@ -0,0 +1,66 @@
+Sample: Data Binding

+====================

+

+Introduction

+============

+

+This sample demonstrates how to use WSDL2Java generated code with Castor. 

+

+Running of this sample assumes that you are running this within the extracted release folder (Axis2_HOME/samples/databinding).

+

+

+Pre-Requisites

+==============

+ * Install Apache Ant 1.6.2 or later.

+ * Please create a directory named lib under the directory that contains this file.

+ * Download latest stax-utils jar from

+   https://stax-utils.dev.java.net/servlets/ProjectDocumentList?folderID=1106 and drop that into the

+   new lib directory.

+ * Download latest Castor jar from http://www.castor.org/download.html and drop that into the new

+   lib directory

+

+You can achieve all three of the above steps by running "ant download.jars", but it will take some 

+time to download those two jars, using ant.

+

+

+Deploying the Service

+=====================

+

+You need to create the stock service Web service and deploy it. Typing ant generate.service or 

+simply ant in the command prompt, will build the service against StockQuoteService.wsdl listed 

+inside Axis2_HOME/samples/databinding and put it under Axis2_HOME/repository/services.

+

+You need to then startup the server to deploy the service. Go to Axis2_HOME/bin folder and execute either

+axis2server.bat or axis2server.sh, depending on your platform.

+

+

+Running the Client

+==================

+

+Running the run.client runs the client/src/samples/databinding/StockClient.java class. You may use

+the command scripts to do so. You need to supply 2 parameters to the command- url and symbol.

+

+ * ant run.client -Durl=http://localhost:8080/axis2/services/StockQuoteService -Dsymbol=IBM

+   Succeeds with a Price of 99.0. You will see "Price = 99.0"

+

+When you call ant run.client with parameters, before running

+client/src/samples/databinding/StockClient.java class, it does the following as well:

+

+  * Generate the stubs (for the client) from the WSDL

+  * Compile the client classes

+  * Create a Jar of the client classes and copy it to build/client/StockService-test-client.jar

+

+How It Works

+==============

+

+- Generate code giving -d none to get all the Axis2 APIs with OMElements.

+- Create Castor objects for the schema given in the StockQuoteService.wsdl.

+- Client API and the service uses those castor objects to get/set data.

+- Get StAX events from the castor objects and construct OMElements from them. Those StAX events

+  are fed into StAXOMBuilder which can create OM tree from it.

+- Feed those OMElement in to generated code.

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

+

diff --git a/rampart_1_1/modules/samples/databinding/StockQuote.xsd b/rampart_1_1/modules/samples/databinding/StockQuote.xsd
new file mode 100644
index 0000000..5c626a4
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/StockQuote.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema 
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+	targetNamespace="http://w3.ibm.com/schemas/services/2002/11/15/stockquote"
+	xmlns="http://w3.ibm.com/schemas/services/2002/11/15/stockquote"
+>
+	
+	<xsd:element name="quote">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element name="symbol" type="xsd:string"/>
+				<xsd:element name="volume" type="xsd:integer"/>
+				<xsd:element name="lastTrade" type="lastTradeType"/>
+				<xsd:element name="change" type="changeType"/>
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+
+	<xsd:complexType name="changeType">
+		<xsd:sequence>
+			<xsd:element name="dollar" type="xsd:float"/>	
+			<xsd:element name="percent" type="xsd:float"/>
+			<xsd:element name="positive" type="xsd:boolean"/>	
+		</xsd:sequence>
+	</xsd:complexType>
+
+	<xsd:complexType name="lastTradeType">
+		<xsd:sequence>
+			<xsd:element name="price" type="xsd:float"/>
+			<xsd:element name="date" type="xsd:long"/>
+		</xsd:sequence>
+	</xsd:complexType>
+
+	<!-- Methods signatures -->
+	<xsd:element name="getStockQuote">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element name="symbol" type="xsd:string"/>
+			</xsd:sequence>	
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="getStockQuoteResponse">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element ref="quote" />
+			</xsd:sequence>	
+		</xsd:complexType>
+	</xsd:element>
+
+</xsd:schema>
diff --git a/rampart_1_1/modules/samples/databinding/StockQuoteService.wsdl b/rampart_1_1/modules/samples/databinding/StockQuoteService.wsdl
new file mode 100644
index 0000000..b6520aa
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/StockQuoteService.wsdl
@@ -0,0 +1,45 @@
+<definitions targetNamespace="http://w3.ibm.com/schemas/services/2002/11/15/stockquote/wsdl"

+	xmlns="http://schemas.xmlsoap.org/wsdl/" 

+	xmlns:tns="http://w3.ibm.com/schemas/services/2002/11/15/stockquote/wsdl" 

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

+	xmlns:types="http://w3.ibm.com/schemas/services/2002/11/15/stockquote"

+	>

+

+	<import namespace="http://w3.ibm.com/schemas/services/2002/11/15/stockquote" location="StockQuote.xsd" />

+

+	<message name="getStockQuoteReq">

+		<part name="parameters" element="types:getStockQuote" />

+	</message>

+

+	<message name="getStockQuoteResp">

+		<part name="parameters" element="types:getStockQuoteResponse" />

+	</message>

+

+	<portType name="StockQuotePortType">

+		<operation name="getStockQuote">

+			<input message="tns:getStockQuoteReq" />

+			<output message="tns:getStockQuoteResp" />

+		</operation>

+	</portType>

+

+	<binding name="StockQuoteSOAPBinding" type="tns:StockQuotePortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

+		<operation name="getStockQuote">

+			<soap:operation style="document" soapAction="getStockQuote" />

+			<input>

+				<soap:body use="literal" />

+			</input>

+			<output>

+				<soap:body use="literal" />

+			</output>

+		</operation>

+	</binding>

+

+	<service name="StockQuoteService">

+		<port name="StockQuoteSOAPPort" binding="tns:StockQuoteSOAPBinding">

+			<soap:address location="http://localhost:8080/axis2/services/StockQuoteService" />

+		</port>

+	</service>

+

+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/databinding/build.xml b/rampart_1_1/modules/samples/databinding/build.xml
new file mode 100644
index 0000000..b043874
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/build.xml
@@ -0,0 +1,170 @@
+<project basedir="." default="generate.service">
+
+    <property environment="env"/>
+
+    <property name="wsdl.uri" value="StockQuoteService.wsdl"/>
+    <property name="service.target" value="build/service"/>
+    <property name="client.target" value="build/client"/>
+
+    <path id="axis2.classpath">
+        <fileset dir="../../lib">
+            <include name="*.jar"/>
+        </fileset>
+        <fileset dir="lib">
+            <include name="*.jar"/>
+        </fileset>
+    </path>
+
+    <macrodef name="CastorSourceGenerator">
+       <attribute name="schema" default="NOT SET"/>
+       <attribute name="package" default="NOT SET"/>
+       <attribute name="output" default="NOT SET"/>
+       <sequential>
+          <echo/>
+          <java classname="org.exolab.castor.builder.SourceGeneratorMain" fork="true">
+              <classpath refid="axis2.classpath"/>
+              <arg line="-i @{schema}  -package @{package} -dest @{output}" />
+          </java>
+       </sequential>
+    </macrodef>
+
+    <!-- Build the service, then the client. -->
+    <target name="jar">
+        <ant dir="service" target="jar.server"/>
+        <ant dir="client"/>
+    </target>
+
+    <target name="run.client" depends="generate.stub">
+
+        <condition property="params.ok">
+            <and>
+                <isset property="url"/>
+                <isset property="symbol"/>
+            </and>
+        </condition>
+
+        <fail message="One of the parameters are not set. Usage: StockClient -Durl=&lt;url&gt; -Dsymbol=&lt;symbol&gt;"
+        unless="params.ok"/>
+        
+        <java classname="samples.databinding.StockClient" fork="true">
+            <arg line="${url} ${symbol}"/>
+            <classpath>
+                <pathelement location="${client.target}/StockService-test-client.jar"/>
+                <path refid="axis2.classpath"/>
+            </classpath>
+        </java>
+    </target>
+
+    <target name="generate.all" depends="generate.service,generate.stub"/>
+
+    <target name="generate.service">
+
+        <delete dir="${service.target}"/>
+        <mkdir dir="${service.target}"/>
+        <mkdir dir="${service.target}/classes"/>
+
+        <CastorSourceGenerator output="${service.target}/src"
+                               package="samples.databinding.data"
+                               schema="StockQuote.xsd"/>
+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true" classpathref="axis2.classpath">
+            <arg line="-uri ${wsdl.uri}"/>
+            <arg line="-ss"/>
+            <arg line="-sd"/>
+            <arg line="-p samples.databinding"/>
+            <arg line="-d none"/>
+            <arg line="-o ${service.target}"/>
+        </java>
+
+        <!--copy the already written skeleton class-->
+        <copy todir="${service.target}/src/"
+              overwrite="yes">
+            <fileset dir="service/src">
+                <include name="**/*.java"/>
+            </fileset>
+        </copy>
+
+        <!--First let's compile the classes-->
+        <javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true"
+               destdir="${service.target}/classes" srcdir="${service.target}/src"
+               classpathref="axis2.classpath">
+        </javac>
+
+        <!--aar them up -->
+        <copy toDir="${service.target}/classes/META-INF" failonerror="false">
+            <fileset dir="${service.target}/resources">
+                <include name="*.xml"/>
+                <include name="*.wsdl"/>
+                <include name="*.xsd"/>
+            </fileset>
+        </copy>
+        <jar destfile="${service.target}/StockService.aar">
+            <fileset excludes="**/Test.class" dir="${service.target}/classes"/>
+            <fileset dir="${basedir}">
+                <include name="lib/*.jar"/>
+            </fileset>
+        </jar>
+
+        <copy file="${service.target}/StockService.aar" tofile="../../repository/services/StockService.aar"
+              overwrite="true"/>
+
+    </target>
+
+    <target name="generate.stub" unless="skip.generate">
+        <delete dir="${client.target}"/>
+        <mkdir dir="${client.target}"/>
+        <mkdir dir="${client.target}/classes"/>
+
+
+        <CastorSourceGenerator output="${client.target}/src"
+                               package="samples.databinding.data"
+                               schema="StockQuote.xsd"/>
+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true" classpathref="axis2.classpath">
+            <arg line="-uri ${wsdl.uri}"/>
+            <arg line="-u"/>
+            <arg line="-p samples.databinding"/>
+            <arg line="-d none"/>
+            <arg line="-t"/>
+            <arg line="-o ${client.target}"/>
+        </java>
+
+        <copy todir="${client.target}/src/"
+              overwrite="yes">
+            <fileset dir="client/src">
+                <include name="**/*.java"/>
+            </fileset>
+        </copy>
+
+        <!--now compile the stub classes-->
+        <javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true"
+               srcdir="${client.target}/src"
+               excludes="**/StockClient2*.*"
+               destdir="${client.target}/classes"
+               classpathref="axis2.classpath">
+        </javac>
+
+        <!--jar the compiled stuff-->
+        <jar destfile="${client.target}/StockService-test-client.jar">
+            <fileset dir="${client.target}/classes">
+                <exclude name="**/META-INF/*.*"/>
+                <exclude name="**/*MessageReceiver.class"/>
+                <exclude name="**/*Skeleton.class"/>
+            </fileset>
+        </jar>
+    </target>
+
+    <!--We are not shipping castor and stax-utils jars with the release. This target can be used to
+    download those jars that are required to run this sample.-->
+    <target name="download.jars">
+       <mkdir dir="lib"/>
+
+        <get src="http://ws.zones.apache.org/repository/stax-utils/jars/stax-utils-20060915.jar"
+             dest="lib/stax-utils-20060915.jar" verbose="true"/>
+        <get src="http://dist.codehaus.org/castor/1.0.4/castor-1.0.4.jar" dest="lib/castor-1.0.4.jar"
+             verbose="true"/>
+    </target>
+
+    <target name="clean">
+        <delete dir="build"/>
+    </target>
+
+</project>
diff --git a/rampart_1_1/modules/samples/databinding/castorbuilder.properties b/rampart_1_1/modules/samples/databinding/castorbuilder.properties
new file mode 100644
index 0000000..afc4eb0
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/castorbuilder.properties
@@ -0,0 +1,58 @@
+#

+# Property file for SourceCodeGenerator

+#

+# $Id: castorbuilder.properties,v 1.9 2003/01/11 00:49:44 kvisco Exp $

+

+# To enable bound properties uncomment the following line. Please

+# note that currently *all* fields will be treated as bound properties

+# when enabled. This will change in the future when we introduce

+# fine grained control over each class and it's properties.

+#

+#org.exolab.castor.builder.boundproperties=true

+

+# Java class mapping of <xsd:element>'s and <xsd:complexType>'s 

+#

+org.exolab.castor.builder.javaclassmapping=element

+

+# This property allows one to specify the super class of *all* 

+# generated classes

+#

+#org.exolab.castor.builder.superclass=com.xyz.BaseObject

+

+# XML namespace mapping to Java packages

+#

+#org.exolab.castor.builder.nspackages=\

+  http://www.xyz.com/schemas/project=com.xyz.schemas.project,\

+  http://www.xyz.com/schemas/person=com.xyz.schemas.person

+

+# Set to true if you want to generate the equals method

+# for each generated class

+# false by default

+#

+#org.exolab.castor.builder.equalsmethod=true

+

+# Set to true if you want to use Object Wrappers instead

+# of primitives (e.g Float instead of float).

+# false by default.

+#

+#org.exolab.castor.builder.primitivetowrapper=false

+

+# Set to true if you want the generated class descriptors to

+# expose the element and attribute names they contain.

+# false by default.

+#

+#org.exolab.castor.builder.classdescfieldnames=false

+

+# Set to true if you want the generated source code to contain

+# Extra methods for the collection fields, such as get/set using

+# the collection type in addition to the type-safe array.

+# Set this to true if you want your code to be more compatible 

+# with Castor JDO. This is false by default.

+#

+#org.exolab.castor.builder.extraCollectionMethods=true

+

+# Use old-style (Castor 0.9.3.9) of naming that uppercases

+# names after an underscore

+#

+#org.exolab.castor.xml.JavaNaming.upperCaseAfterUnderscore=true

+

diff --git a/rampart_1_1/modules/samples/databinding/client/build.xml b/rampart_1_1/modules/samples/databinding/client/build.xml
new file mode 100644
index 0000000..8208aa7
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/client/build.xml
@@ -0,0 +1,43 @@
+<project basedir="." default="jar.client">

+

+    <property environment="env"/>

+

+    <property name="project.base.dir" value="."/>

+    <property name="parent.dir" value=".."/>

+

+    <property name="wsdl.uri" value="${parent.dir}/bank.wsdl"/>

+

+    <property name="src" value="${project.base.dir}/src"/>

+    <property name="target" value="${project.base.dir}/target"/>

+    <property name="target.java" value="${target}/src"/>

+    <property name="target.classes" value="${target}/classes"/>

+

+    <target name="check.dependency" unless="env.AXIS2_HOME">

+        <echo message="AXIS2_HOME must be set"/>

+    </target>

+

+    <target name="gen.stub" if="env.AXIS2_HOME" depends="check.dependency">

+        <delete dir="${target}"/>

+        <mkdir dir="${target}"/>

+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">

+            <arg line="-uri ${wsdl.uri}"/>

+            <arg line="-u"/>

+            <arg line="-o ${target}"/>

+            <classpath>

+                <fileset dir="${env.AXIS2_HOME}\lib">

+                    <include name="*.jar"/>

+                </fileset>

+            </classpath>

+        </java>

+    </target>

+

+    <!-- Create the service archive by executing target\build.xml (jar.server) -->

+    <target name="jar.client" if="env.AXIS2_HOME" depends="gen.stub">

+        <copy todir="${target.java}">

+            <fileset dir="${src}"/>

+        </copy>

+        <ant dir="${target}"/>

+        <copy file="${target}\build\lib\BankService-test-client.jar" todir=".."/>

+    </target>

+

+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/databinding/client/src/samples/databinding/StockClient.java b/rampart_1_1/modules/samples/databinding/client/src/samples/databinding/StockClient.java
new file mode 100644
index 0000000..d2588f5
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/client/src/samples/databinding/StockClient.java
@@ -0,0 +1,71 @@
+/*

+ * Copyright 2004,2005 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 samples.databinding;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.impl.builder.SAXOMBuilder;

+import org.exolab.castor.xml.Marshaller;

+import org.exolab.castor.xml.UnmarshalHandler;

+import org.exolab.castor.xml.Unmarshaller;

+import org.xml.sax.ContentHandler;

+import org.xml.sax.SAXException;

+import samples.databinding.data.GetStockQuote;

+import samples.databinding.data.GetStockQuoteResponse;

+

+import javax.xml.transform.TransformerException;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.sax.SAXResult;

+

+import javanet.staxutils.StAXSource;

+public final class StockClient {

+    public static void main(String[] args) throws Exception {

+        if (args.length != 2) {

+            System.err.println("Usage: StockClient <url> <symbol>");

+            return;

+        }

+        final String url = args[0];

+        final String symbol = args[1];

+

+        System.out.println();

+        System.out.println("Getting Stock Quote for " + symbol);

+

+        StockQuoteServiceStub stub =

+                new StockQuoteServiceStub(url);

+        stub._getServiceClient().getOptions().setAction("getStockQuote");

+        GetStockQuote stockQuote = new GetStockQuote();

+        stockQuote.setSymbol(symbol);

+        SAXOMBuilder builder = new SAXOMBuilder();

+        Marshaller.marshal(stockQuote, builder);

+        OMElement response = stub.getStockQuote(

+                builder.getRootElement());

+

+

+        StAXSource staxSource =

+                new StAXSource(response.getXMLStreamReader());

+        Unmarshaller unmarshaller = new Unmarshaller(GetStockQuoteResponse.class);

+        UnmarshalHandler unmarshalHandler = unmarshaller.createHandler();

+        GetStockQuoteResponse stockQuoteResponse;

+        try {

+            ContentHandler contentHandler = Unmarshaller.getContentHandler(unmarshalHandler);

+            TransformerFactory.newInstance().newTransformer().transform(staxSource, new SAXResult(contentHandler));

+            stockQuoteResponse = (GetStockQuoteResponse) unmarshalHandler.getObject();

+        } catch (SAXException e) {

+            throw new RuntimeException(e);

+        } catch (TransformerException e) {

+            throw new RuntimeException(e);

+        }

+        System.out.println("Price = " + stockQuoteResponse.getQuote().getLastTrade().getPrice());

+    }

+}

diff --git a/rampart_1_1/modules/samples/databinding/client/src/samples/databinding/StockClient2.java b/rampart_1_1/modules/samples/databinding/client/src/samples/databinding/StockClient2.java
new file mode 100644
index 0000000..5825485
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/client/src/samples/databinding/StockClient2.java
@@ -0,0 +1,103 @@
+package samples.databinding;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMDataSource;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMOutputFormat;

+import org.apache.axiom.om.impl.builder.SAXOMBuilder;

+import org.jdom.Document;

+import org.jdom.Element;

+import org.jdom.JDOMException;

+import org.jdom.input.StAXBuilder;

+import org.jdom.output.SAXOutputter;

+import org.jdom.output.StAXOutputter;

+import org.jdom.output.XMLOutputter;

+import org.jdom.xpath.XPath;

+

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+import javax.xml.stream.XMLStreamWriter;

+import java.io.IOException;

+import java.io.OutputStream;

+import java.io.Writer;

+public final class StockClient2 {

+    public static void main(String[] args) throws Exception {

+        if (args.length != 2) {

+            System.err.println("Usage: StockClient <url> <symbol>");

+            return;

+        }

+        final String url = args[0];

+        final String symbol = args[1];

+

+        System.out.println();

+        System.out.println("Getting Stock Quote for " + symbol);

+

+        StockQuoteServiceStub stub =

+                new StockQuoteServiceStub(url);

+        stub._getServiceClient().getOptions().setAction("getStockQuote");

+

+        Element element1 = new Element(

+            "getStockQuote", "nsl", "http://w3.ibm.com/schemas/services/2002/11/15/stockquote");

+        Element element2 = new Element("symbol");

+        element2.addContent(symbol);

+        element1.addContent(element2);

+

+        OMFactory factory = OMAbstractFactory.getOMFactory();

+        org.apache.axiom.om.OMDataSource src = new JDOMDataSource(element1);

+        org.apache.axiom.om.OMNamespace appns = factory.createOMNamespace("http://w3.ibm.com/schemas/services/2002/11/15/stockquote", "ns1");

+        OMElement child = factory.createOMElement(src, "getStockQuote", appns);

+

+        OMElement response = stub.getStockQuote(child);

+

+        StAXBuilder builder = new StAXBuilder();

+        Document doc = builder.build(response.getXMLStreamReader());

+        XPath path = XPath.newInstance("//price");

+        Element price = (Element) path.selectSingleNode(doc.getRootElement());

+        System.out.println("Price = " + price.getText());

+    }

+

+    private static class JDOMDataSource implements OMDataSource {

+        private final Element data;

+

+        private JDOMDataSource(Element data) {

+            this.data = data;

+        }

+

+        public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {

+            try {

+                XMLOutputter outputter = new XMLOutputter();

+                outputter.output(data, output);

+            } catch (IOException e) {

+                throw new XMLStreamException(e);

+            }

+        }

+

+        public void serialize(Writer writer, OMOutputFormat format) throws XMLStreamException {

+            try {

+                XMLOutputter outputter = new XMLOutputter();

+                outputter.output(data, writer);

+            } catch (IOException e) {

+                throw new XMLStreamException(e);

+            }

+        }

+

+        public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException {

+            StAXOutputter outputter = new StAXOutputter(xmlWriter);

+            try {

+                outputter.outputFragment(data);

+            } catch (JDOMException e) {

+                throw new XMLStreamException(e);

+            }

+        }

+

+        public XMLStreamReader getReader() throws XMLStreamException {

+            SAXOMBuilder builder = new SAXOMBuilder();

+            SAXOutputter outputter = new SAXOutputter();

+            outputter.setContentHandler(builder);

+            outputter.setEntityResolver(builder);

+            outputter.setDTDHandler(builder);

+            outputter.setEntityResolver(builder);

+            return builder.getRootElement().getXMLStreamReader();

+        }

+    }

+}

diff --git a/rampart_1_1/modules/samples/databinding/service/build.xml b/rampart_1_1/modules/samples/databinding/service/build.xml
new file mode 100644
index 0000000..e17d516
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/service/build.xml
@@ -0,0 +1,40 @@
+<project basedir="." default="gen.skeleton">

+	

+	<property environment="env"/>

+	

+	<property name="project.base.dir" value="."/>

+	<property name="parent.dir" value=".."/>

+	

+	<property name="wsdl.uri" value="${parent.dir}/bank.wsdl"/>

+	

+	<property name="src" value="${project.base.dir}/src"/>

+	<property name="target" value="${project.base.dir}/target"/>

+	

+	<target name="check.dependency" unless="env.AXIS2_HOME">

+		<echo message="AXIS2_HOME must be set"/>

+	</target>

+	

+	<target name="gen.skeleton" if="env.AXIS2_HOME" depends="check.dependency">

+

+

+        <delete dir="${target}"/>

+		<mkdir dir="${target}"/>

+		<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">

+			<arg line="-uri ${wsdl.uri}"/>

+			<arg line="-ss"/>

+			<arg line="-sd"/>

+			<arg line="-o ${target}"/> <!-- Output directory in which to generate files --> <!-- NB it generates to the src folder under this directory!! -->

+			<classpath>

+				<fileset dir="${env.AXIS2_HOME}\lib">

+					<include name="*.jar"/>

+				</fileset>

+			</classpath>

+		</java>

+	</target>

+	

+	<!-- Create the service archive by executing target\build.xml (jar.server) -->

+	<target name="jar.server" if="env.AXIS2_HOME">

+		<ant dir="${target}"/>

+		<copy file="${target}\build\lib\BankService.aar" todir=".."/>

+	</target>

+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/databinding/service/src/samples/databinding/StockQuoteServiceSkeleton.java b/rampart_1_1/modules/samples/databinding/service/src/samples/databinding/StockQuoteServiceSkeleton.java
new file mode 100644
index 0000000..1b4f125
--- /dev/null
+++ b/rampart_1_1/modules/samples/databinding/service/src/samples/databinding/StockQuoteServiceSkeleton.java
@@ -0,0 +1,82 @@
+/**

+ * StockQuoteServiceSkeleton.java

+ *

+ * This file was auto-generated from WSDL

+ * by the Apache Axis2 version: 1.1-SNAPSHOT Nov 03, 2006 (06:54:07 EST)

+ */

+package samples.databinding;

+import javanet.staxutils.StAXSource;

+import org.apache.axiom.om.impl.builder.SAXOMBuilder;

+import org.exolab.castor.xml.MarshalException;

+import org.exolab.castor.xml.Marshaller;

+import org.exolab.castor.xml.UnmarshalHandler;

+import org.exolab.castor.xml.Unmarshaller;

+import org.exolab.castor.xml.ValidationException;

+import org.xml.sax.ContentHandler;

+import org.xml.sax.SAXException;

+import samples.databinding.data.Change;

+import samples.databinding.data.GetStockQuote;

+import samples.databinding.data.GetStockQuoteResponse;

+import samples.databinding.data.LastTrade;

+import samples.databinding.data.Quote;

+

+import javax.xml.transform.TransformerException;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.sax.SAXResult;

+import java.io.IOException;

+import java.util.Calendar;

+/**

+ * StockQuoteServiceSkeleton java skeleton for the axisService

+ */

+public class StockQuoteServiceSkeleton {

+    /**

+     * Auto generated method signature

+     *

+     * @param param0

+     */

+    public org.apache.axiom.om.OMElement getStockQuote(org.apache.axiom.om.OMElement param0) {

+        StAXSource staxSource =

+                new StAXSource(param0.getXMLStreamReader());

+        Unmarshaller unmarshaller = new Unmarshaller(GetStockQuote.class);

+        UnmarshalHandler unmarshalHandler = unmarshaller.createHandler();

+        GetStockQuote stockQuote;

+        try {

+            ContentHandler contentHandler = Unmarshaller.getContentHandler(unmarshalHandler);

+            TransformerFactory.newInstance().newTransformer().transform(staxSource, new SAXResult(contentHandler));

+            stockQuote = (GetStockQuote) unmarshalHandler.getObject();

+        } catch (SAXException e) {

+            throw new RuntimeException(e);

+        } catch (TransformerException e) {

+            throw new RuntimeException(e);

+        }

+        GetStockQuoteResponse stockQuoteResponse = new GetStockQuoteResponse();

+        Quote quote = new Quote();

+        quote.setSymbol(stockQuote.getSymbol());

+        quote.setVolume(5000);

+

+        LastTrade lastTrade = new LastTrade();

+        lastTrade.setPrice(99);

+        lastTrade.setDate(Calendar.getInstance().getTimeInMillis());

+        quote.setLastTrade(lastTrade);

+

+        Change change = new Change();

+        change.setDollar(1);

+        change.setPercent(10);

+        change.setPositive(true);

+        quote.setChange(change);

+

+        stockQuoteResponse.setQuote(quote);

+        SAXOMBuilder builder = new SAXOMBuilder();

+        try {

+            Marshaller.marshal(stockQuoteResponse, builder);

+        } catch (MarshalException e) {

+            throw new RuntimeException(e);

+        } catch (ValidationException e) {

+            throw new RuntimeException(e);

+        } catch (IOException e) {

+            throw new RuntimeException(e);

+        }

+        return builder.getRootElement();

+    }

+}

+    
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/README.txt b/rampart_1_1/modules/samples/deprecated/amazonqs/README.txt
new file mode 100644
index 0000000..2276bd7
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/README.txt
@@ -0,0 +1,22 @@
+Sample for Amazon Simple Queuing Service

+========================================

+

+Introduction:

+-------------

+

+Running the Sample:

+-------------------

+There are two methods to run the sample

+

+1. Type <ant> command to run the sample. Here, Out operations GUI pops-up

+first. Once you've closed it, In operations GUI will pop-up.

+

+2. Using the scrip files. Use run.sh or run.bat to run the sample pertaining

+to the system you are using.

+

+Help:

+-----

+

+Please refer to the sample help page at "AXIS2_HOME\modules\samples\xdocs\amazonQS" for more details

+

+

diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/build.xml b/rampart_1_1/modules/samples/deprecated/amazonqs/build.xml
new file mode 100644
index 0000000..5c9b86b
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/build.xml
@@ -0,0 +1,22 @@
+<project name="samples" default="all">
+    <property name="mainDir" value="../.."/>
+    <path id="axis.classpath">
+        <fileset dir="../../lib">
+            <include name="*.jar"/>
+        </fileset>
+        <pathelement location="./amazonQS.jar"/>
+    </path>
+    <target name="cq">
+        <java classname="sample.amazon.amazonSimpleQueueService.RunGUICQ"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+    <target name="rq">
+        <java classname="sample.amazon.amazonSimpleQueueService.RunGUIRQ"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+    <target name="all" depends="cq,rq"/>
+</project>
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/docs/AmazonSimpleWebService.html b/rampart_1_1/modules/samples/deprecated/amazonqs/docs/AmazonSimpleWebService.html
new file mode 100644
index 0000000..c593dab
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/docs/AmazonSimpleWebService.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <title>Amazon Simple Queue Web Service - Sample</title>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+</head>
+
+<body>
+<h1>Amazon Queuing Service</h1>
+
+<h2>Section 1 - Basic Operations</h2>
+
+<h3>Introduction</h3>
+
+<p>The purpose of this example is to implement a user-friendly Queue Service
+with all possible operations such as Creating Queue, Reading etc, via
+Axis2-M2 SOAP engine. The Amazon Simple Queue Service (Beta 2) from
+amazon.com has been chosen for this example as the Web Service Provider.</p>
+
+<p>Using the Amazon Simple Queue Service, developers can decouple components
+of their application so that they run independently. The Simple Queue Service
+provides the message management between the independent components. Any
+component of a distributed application can store any type of data in a
+reliable queue at Amazon.com. Another component or application can retrieve
+the data using queue semantics. More information on this service visit <a
+href="http://www.amazon.com/gp/aws/sdk/" target="_blank">here</a></p>
+
+<p>In this example String objects are used to store in the Amazon queue.</p>
+
+<p>Description of the operations is available at <a
+href="http://webservices.amazon.com/AWSSimpleQueueService/AWSSimpleQueueService.wsdl"
+target="_blank">http://webservices.amazon.com/AWSSimpleQueueService/AWSSimpleQueueService.wsdl</a></p>
+
+<h3><strong>Getting Started</strong></h3>
+
+<p>The users who need to get the Web services out of this queue need to be
+registered with the amazon.com, as a developer. (For this particular example
+a key has been obtained from Amazon and via property file it has called to
+OMElement). Once being registered, a subscription Id will be given. This key
+has to be used with your code to get the required Web services. The key that
+is being obtained, should be incorporated to the key.properties file, which
+is located at ${user.dir}\modules\samples\properties</p>
+
+<p>Registration can be done at <a
+href="http://www.amazon.com/gp/aws/registration/registration-form.html"
+target="_blank">http://www.amazon.com/gp/aws/registration/registration-form.html</a></p>
+
+<p>There are seven services available for this queue from Amazon. Create
+Queue, Configure Queue, List My Queues, En-queue, Read and De-queue. For this
+example Create Queue, En-queue, Read and List My Queues have been
+implemented.</p>
+
+<p>En-queue operation has not been implemented. This operation has left out
+for users to implement. It is expected that once the user has implemented
+this operation, the fundamental perspective of the Axis2-M2 over Web Services
+is dealt with perfectly.</p>
+
+<p>The code is based on invokeNonBlocking(String, OMElement, Callback)
+operation to understand the maximum flexibility of the Axis2-M2.</p>
+
+<h3><span class="style3">Operations</span></h3>
+
+<p>The manipulation of the queue is divided in to two categories,</p>
+
+<h4><em>IN operations</em></h4>
+
+<p>In these operations user will be given the autonomy to create a new queue
+or use an existing queue to enqueue the selected queue. Only one queue is
+subjected to manipulate at a given instance.</p>
+
+<h4><em>OUT operations</em></h4>
+
+<p>In these operations user will be given the autonomy to list the queues
+that once possess for a given subscription Id and read the entries of a
+particular queue or if the queue is empty the queue can deliberately be
+deleted. If the queue is not empty, the delete operation will not work. The
+queue must empty before it has to be deleted. It is expected that the user to
+implement the de-queue operation in order to get the full understanding of
+the code. Necessary steps will be provided at the end of this
+documentation.</p>
+
+<p>On the perimeters of this example, I have generated a key
+(0HPJJ4GJDSG2TZ2C8X02) which is the subscription Id and hard coded to the
+key.properties file and OMElement objects obtained the value through
+Properties API, for each operation invocation. The service end point also
+hard coded, (<a
+href="http://webservices.amazon.com/onca/soap?Service=AWSSimpleQueueService">http://webservices.amazon.com/onca/soap?Service=AWSSimpleQueueService</a>
+). Thus, when a user reads the queues available, queues pertaining to this
+key will be displayed.</p>
+
+<h2>Section 2 - Architecture and Advanced Operations</h2>
+
+<h3>Architecture of the Code</h3>
+
+<p>The structure of the code has been divided in to three sections for the
+simplicity of understanding.</p>
+<ul>
+  <li><em>GUI component</em> &#x2013; This code is pertaining to GUI
+    interface development. </li>
+  <li><em>Underlying Event Listeners and Runnable Component</em> &#x2013; The
+    code pertaining to GUI and Axis2-M2 codes are being allowed to run on
+    different threads. This is allowed, in order to make sure that the GUI is
+    not blocked during the method invocation and consume the whole power of
+    invokeNonBlocking() method. </li>
+  <li><em>Axis2-M2 Component </em>&#x2013; Since this example is based on
+    invokeNonBlocking() user has to provide the Callback object. Thus, a
+    class that is extended from Callback can be used manipulate the code
+    after completion of the invocation, which is onComplete() method. </li>
+</ul>
+
+<p>OMElement for relevant operations are carried out by CreateQueue,
+DeleteQueue, Enqueue and Read classes. Event Listener for IN operations is
+carried by ListenersIn and OUT operations ListenersOut classes. Separate
+threads are created by RunnableXXX classes. Extended classes from Callback
+handled by SimpleQueueXXXCallbackHandler classes.</p>
+
+<p>Once a event is generated by AmazonSimpleQueueServiceXX class, the event
+is handled by ListnersXX class. The listener classs has references to
+RunnableXXX class, which is carried out the Axis2-M2 execution code.</p>
+
+<p>Once an event is generated by AmazonSimpleQueueServiceXX class, the event
+is handled by ListnersXX class. The listener class has a reference to
+RunnableXXX class, which contains the Axis2-M2 execution code. RunnableXXX
+class has references to classes that support OMElement, which is needed as
+references to invokeNonBlocking(String, OMElement,Callback) method and
+SimpleQueueXXXCallbackHandler classes. Once the onComplete() method executes,
+the response is send back to GUI's response handling components. Figure below
+shows the schematic architecture of the sample.</p>
+
+<p><img src="AmazonSimpleWebService_clip_image002.gif" width="579"
+height="321"><br>
+All the Web services are available as rpc-literal encoded style. Thus,
+OMElemnts adheres to this requirement.</p>
+
+<p class="style3">Running the Samples</p>
+<ol>
+  <li><em>IN operations </em>&#x2013; Go to ${user.dir}/modules/samples and
+    type &#x201c;ant amazonIn&#x201d;</li>
+  <li><em>OUT operations</em> &#x2013; Go to ${user.dir}/modules/samples and
+    type &#x201c;ant amazonOut&#x201d;</li>
+</ol>
+
+<p>GUI for IN operations is popped by Running RunGUICQ class and OUT
+operations is popped by running RunGUIRQ class.</p>
+
+<p class="style3">Handling the GUI Components</p>
+<ul>
+  <li><em>IN operations</em> &#x2013; Once the GUI is being loaded, user is
+    given the access to create a new queue. When type the name and Enter a
+    new queue will be generated to the given subscription Id (which is hard
+    coded), if the name exists user will allow to enqueue the queue. <br>
+  </li>
+  <li><em>OUT operations</em> &#x2013; Once the GUI is being loaded, user
+    should load the queues pertaining to the given subscription Id (hard
+    coded for this example). The results will contain the queue name and
+    queue code. It is recommended that the user select only the full queue
+    name only not the queue code. Once selected, it will be displayed on the
+    text field. Select the text field and press enter to read the queue. </li>
+</ul>
+
+<p class="style3">Guide to Create the Dequeue Operation</p>
+<ol>
+  <li>It is recommended that the user go through with the Dequeue operation
+    description from WSDL.</li>
+  <li>Write your custom Callback class to handle the onComplete() method.</li>
+  <li>Write the OMElement which corresponds Dequeue opreation.</li>
+  <li>Write the class which implements the Runnable interface to handle the
+    invokeNonBlocking() method.</li>
+  <li>Write the event handler to execute the above mentioned class.</li>
+  <li>Add a Component to the AmazonSimpleQueueServieOut GUI class and add the
+    above class as an action listener.</li>
+</ol>
+
+<p><br>
+</p>
+<hr>
+</body>
+</html>
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/docs/AmazonSimpleWebService_clip_image002.gif b/rampart_1_1/modules/samples/deprecated/amazonqs/docs/AmazonSimpleWebService_clip_image002.gif
new file mode 100644
index 0000000..9f95925
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/docs/AmazonSimpleWebService_clip_image002.gif
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/run.bat b/rampart_1_1/modules/samples/deprecated/amazonqs/run.bat
new file mode 100644
index 0000000..c28fbf2
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/run.bat
@@ -0,0 +1,40 @@
+@echo off

+rem ---------------------------------------------------------------------------

+rem Start script for running the Amazon Queuing service

+rem

+rem ---------------------------------------------------------------------------

+

+rem store the current directory

+set CURRENT_DIR=%cd%

+

+rem check the AXIS2_HOME environment variable

+if not "%AXIS2_HOME%" == "" goto gotHome

+

+rem guess the home. Jump two directories up and take that as the home

+cd ..

+cd ..

+set AXIS2_HOME=%cd%

+

+:gotHome

+if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome

+echo The AXIS2_HOME environment variable seems not to point to the correct location!

+echo This environment variable is needed to run this program

+pause

+exit

+

+:okHome

+rem set the classes

+cd %CURRENT_DIR%

+

+setlocal EnableDelayedExpansion

+

+rem loop through the libs and add them to the class path

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;%CURRENT_DIR%\amazonQS.jar

+

+start javaw -cp %AXIS2_CLASS_PATH% -Daxis2.repo=%AXIS2_HOME% sample.amazon.amazonSimpleQueueService.RunGUICQ

+start javaw -cp %AXIS2_CLASS_PATH% -Daxis2.repo=%AXIS2_HOME% sample.amazon.amazonSimpleQueueService.RunGUIRQ

+

+endlocal

+:end
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/run.sh b/rampart_1_1/modules/samples/deprecated/amazonqs/run.sh
new file mode 100755
index 0000000..c12e68f
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/run.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+export AXIS2_HOME=../..
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:amazonQS.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+export AXIS2_CLASSPATH
+echo classpath: $AXIS2_CLASSPATH
+java -classpath $AXIS2_CLASSPATH -Daxis2.repo=$AXIS2_HOME sample.amazon.amazonSimpleQueueService.RunGUICQ &
+java -classpath $AXIS2_CLASSPATH -Daxis2.repo=$AXIS2_HOME sample.amazon.amazonSimpleQueueService.RunGUIRQ &
+
+
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/AmazonSimpleQueueServiceIn.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/AmazonSimpleQueueServiceIn.java
new file mode 100644
index 0000000..f964303
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/AmazonSimpleQueueServiceIn.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService;
+
+import sample.amazon.amazonSimpleQueueService.util.QueueManager;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * GUI which handles the IN operations of the queue
+ */
+public class AmazonSimpleQueueServiceIn extends JFrame {
+    private static final String HELP_FILE_NAME = "/docs/AmazonSimpleWebService.html";
+    JTextField createQueue;
+    JTextField queueCode;
+    JTextField enqueue;
+    JTextArea resuts;
+
+    public AmazonSimpleQueueServiceIn() {
+        this.setBounds(200, 200, 450, 500);
+        this.setTitle("Amazon Simple Queue WS - In");
+        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        this.guiInit();
+    }
+
+    private void guiInit() {
+        getContentPane().setLayout(new GridBagLayout());
+        GridBagConstraints cons = new GridBagConstraints();
+        cons.fill = GridBagConstraints.BOTH;
+        JLabel lable1 = new JLabel("Create Queue");
+        cons.insets = new Insets(5, 5, 5, 5);
+        this.add(lable1, cons, 0, 0, 1, 1);
+        JLabel lable2 = new JLabel("Queue Code");
+        this.add(lable2, cons, 1, 0, 1, 1);
+        cons.weightx = 100;
+        createQueue = new JTextField("Test Queue LSF2");
+        this.add(createQueue, cons, 0, 1, 1, 1);
+        queueCode = new JTextField();
+        queueCode.setEditable(false);
+        this.add(queueCode, cons, 1, 1, 1, 1);
+        JLabel lable3 = new JLabel("Enqueue");
+        this.add(lable3, cons, 0, 2, 1, 1);
+        enqueue = new JTextField();
+        enqueue.setEditable(false);
+        this.add(enqueue, cons, 0, 3, 2, 1);
+        JLabel label4 = new JLabel("Results");
+        this.add(label4, cons, 0, 5, 1, 1);
+        cons.weighty = 100;
+        resuts = new JTextArea();
+        resuts.setEditable(false);
+        resuts.setLineWrap(true);
+        resuts.setWrapStyleWord(true);
+        JScrollPane resultpane = new JScrollPane(resuts);
+        this.add(resultpane, cons, 0, 6, 2, 2);
+        createQueue.addKeyListener(
+                new ListenersIn(createQueue, queueCode, enqueue, resuts));
+        enqueue.addKeyListener(
+                new ListenersIn(createQueue, queueCode, enqueue, resuts));
+
+        AddMenuItems();
+
+    }
+
+    private void AddMenuItems() {
+        //add the menus
+        JMenuBar menuBar = new JMenuBar();
+        JMenu settingsMenu = new JMenu("Settings");
+        settingsMenu.setMnemonic(KeyEvent.VK_S);
+        JMenuItem amazonKeyMenu = new JMenuItem("Set Amazon Key",
+                KeyEvent.VK_G);
+        amazonKeyMenu.setAccelerator(
+                KeyStroke.getKeyStroke(KeyEvent.VK_G, ActionEvent.CTRL_MASK));
+        amazonKeyMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setKey();
+            }
+        });
+        settingsMenu.add(amazonKeyMenu);
+
+        JMenu helpMenu = new JMenu("Help");
+        JMenuItem mnuItemHelp = new JMenuItem("Show Help");
+        helpMenu.add(mnuItemHelp);
+
+        mnuItemHelp.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                showHelp();
+            }
+        });
+
+        menuBar.add(settingsMenu);
+        menuBar.add(helpMenu);
+        setJMenuBar(menuBar);
+    }
+
+    private void setKey() {
+        String key = JOptionPane.showInputDialog(this,
+                "Set the Amazon Key",
+                QueueManager.getKey());
+        if (key != null && key.trim().length() != 0) {
+            QueueManager.setKey(key);
+        }
+    }
+
+    /**
+     * method showHelp
+     */
+    private void showHelp() {
+
+        JFrame frame = new JFrame();
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        frame.setLocation(screenSize.width / 5,
+                screenSize.height / 5);
+        frame.setSize(screenSize.width / 2, screenSize.height / 2);
+
+        BorderLayout layout = new BorderLayout();
+
+        JScrollPane jsp;
+        JEditorPane jep;
+
+        jep = new JEditorPane();
+        //jep.addHyperlinkListener(new LinkFollower());
+        jep.setEditable(false);
+        jep.setContentType("text/html");
+
+        jsp = new JScrollPane(jep);
+
+        Container contentPane = frame.getContentPane();
+        contentPane.setLayout(layout);
+        contentPane.add(jsp, BorderLayout.CENTER);
+        String helpDoc = System.getProperty("user.dir") + HELP_FILE_NAME;
+
+        try {
+            jep.setPage(new File(helpDoc).toURL());
+        } catch (IOException e) {
+            JOptionPane.showMessageDialog(this,
+                    "Help file not detected",
+                    "Help file error",
+                    JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+        frame.setVisible(true);
+    }
+
+
+    private void add(Component c,
+                     GridBagConstraints cons,
+                     int x,
+                     int y,
+                     int w,
+                     int h) {
+        cons.gridx = x;
+        cons.gridy = y;
+        cons.gridheight = h;
+        cons.gridwidth = w;
+        this.getContentPane().add(c, cons);
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/AmazonSimpleQueueServiceOut.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/AmazonSimpleQueueServiceOut.java
new file mode 100644
index 0000000..ca2b5c2
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/AmazonSimpleQueueServiceOut.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService;
+
+import sample.amazon.amazonSimpleQueueService.util.QueueManager;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * GUI class which handles the OUT operations of the queue
+ */
+public class AmazonSimpleQueueServiceOut extends JFrame {
+    private static final String HELP_FILE_NAME = "/docs/AmazonSimpleWebService.html";
+    JTextField createQueue;
+    JTextField queueCode;
+    JTextField read;
+    JTextArea resuts;
+    JButton loadButton;
+    JButton deleteButton;
+
+    public AmazonSimpleQueueServiceOut() {
+        this.setBounds(200, 200, 450, 500);
+        this.setTitle("Amazon Simple Queue WS - Out");
+        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        this.guiInit();
+    }
+
+    private void guiInit() {
+        getContentPane().setLayout(new GridBagLayout());
+        GridBagConstraints cons = new GridBagConstraints();
+        cons.fill = GridBagConstraints.BOTH;
+        cons.insets = new Insets(5, 5, 5, 5);
+        cons.weightx = 100;
+        JLabel label0 = new JLabel("Enter Queue Name");
+        this.add(label0, cons, 0, 0, 1, 1);
+        JLabel lable1 = new JLabel("Queue Code");
+        this.add(lable1, cons, 1, 0, 1, 1);
+        createQueue = new JTextField();
+        createQueue.setEditable(false);
+        this.add(createQueue, cons, 0, 1, 1, 1);
+        queueCode = new JTextField();
+        queueCode.setEditable(false);
+        this.add(queueCode, cons, 1, 1, 1, 1);
+        JLabel lable2 = new JLabel("Read");
+        this.add(lable2, cons, 0, 2, 1, 1);
+        read = new JTextField();
+        read.setEditable(false);
+        this.add(read, cons, 0, 3, 2, 1);
+        JLabel label3 = new JLabel("Results");
+        this.add(label3, cons, 0, 4, 1, 1);
+        resuts = new JTextArea();
+        resuts.setEditable(false);
+        JScrollPane resultPane = new JScrollPane(resuts);
+        cons.weighty = 100;
+        this.add(resultPane, cons, 0, 5, 2, 1);
+        JPanel buttonPannel = new JPanel();
+        loadButton = new JButton("Load Queue");
+        loadButton.setActionCommand("1");
+        deleteButton = new JButton("Delete Queue");
+        deleteButton.setActionCommand("2");
+        buttonPannel.add(loadButton);
+        buttonPannel.add(deleteButton);
+        cons.weightx = 0;
+        cons.weighty = 0;
+        this.add(buttonPannel, cons, 0, 6, 2, 1);
+        this.createQueue.addKeyListener(
+                new ListenersOut(this.createQueue,
+                        this.queueCode,
+                        this.read,
+                        this.resuts,
+                        this.loadButton,
+                        this.deleteButton));
+        this.loadButton.addActionListener(
+                new ListenersOut(this.createQueue,
+                        this.queueCode,
+                        this.read,
+                        this.resuts,
+                        this.loadButton,
+                        this.deleteButton));
+        this.resuts.addMouseMotionListener(
+                new ListenersOut(this.createQueue,
+                        this.queueCode,
+                        this.read,
+                        this.resuts,
+                        this.loadButton,
+                        this.deleteButton));
+        this.deleteButton.addActionListener(
+                new ListenersOut(this.createQueue,
+                        this.queueCode,
+                        this.read,
+                        this.resuts,
+                        this.loadButton,
+                        this.deleteButton));
+
+        AddMenuItems();
+    }
+
+    private void add(Component c,
+                     GridBagConstraints cons,
+                     int x,
+                     int y,
+                     int w,
+                     int h) {
+        cons.gridx = x;
+        cons.gridy = y;
+        cons.gridheight = h;
+        cons.gridwidth = w;
+        this.getContentPane().add(c, cons);
+    }
+
+    private void AddMenuItems() {
+        //add the menus
+        JMenuBar menuBar = new JMenuBar();
+        JMenu settingsMenu = new JMenu("Settings");
+        settingsMenu.setMnemonic(KeyEvent.VK_S);
+        JMenuItem amazonKeyMenu = new JMenuItem("Set Amazon Key",
+                KeyEvent.VK_G);
+        amazonKeyMenu.setAccelerator(
+                KeyStroke.getKeyStroke(KeyEvent.VK_G, ActionEvent.CTRL_MASK));
+        amazonKeyMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setKey();
+            }
+        });
+        settingsMenu.add(amazonKeyMenu);
+
+        JMenu helpMenu = new JMenu("Help");
+        JMenuItem mnuItemHelp = new JMenuItem("Show Help");
+        helpMenu.add(mnuItemHelp);
+
+        mnuItemHelp.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                showHelp();
+            }
+        });
+
+        menuBar.add(settingsMenu);
+        menuBar.add(helpMenu);
+        setJMenuBar(menuBar);
+    }
+
+    private void setKey() {
+        String key = JOptionPane.showInputDialog(this,
+                "Set the Amazon Key",
+                QueueManager.getKey());
+        if (key != null && key.trim().length() != 0) {
+            QueueManager.setKey(key);
+        }
+    }
+
+    /**
+     * method showHelp
+     */
+    private void showHelp() {
+
+        JFrame frame = new JFrame();
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        frame.setLocation(screenSize.width / 5,
+                screenSize.height / 5);
+        frame.setSize(screenSize.width / 2, screenSize.height / 2);
+
+        BorderLayout layout = new BorderLayout();
+
+        JScrollPane jsp;
+        JEditorPane jep;
+
+        jep = new JEditorPane();
+        //jep.addHyperlinkListener(new LinkFollower());
+        jep.setEditable(false);
+        jep.setContentType("text/html");
+
+        jsp = new JScrollPane(jep);
+
+        Container contentPane = frame.getContentPane();
+        contentPane.setLayout(layout);
+        contentPane.add(jsp, BorderLayout.CENTER);
+        String helpDoc = System.getProperty("user.dir") + HELP_FILE_NAME;
+
+        try {
+            jep.setPage(new File(helpDoc).toURL());
+        } catch (IOException e) {
+            JOptionPane.showMessageDialog(this,
+                    "Help file not detected",
+                    "Help file error",
+                    JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+        frame.setVisible(true);
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/ListenersIn.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/ListenersIn.java
new file mode 100644
index 0000000..678f903
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/ListenersIn.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService;
+
+import sample.amazon.amazonSimpleQueueService.util.RunnableCreateQueue;
+
+import javax.swing.*;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+/**
+ * Listeners for relevent Components in the IN operation
+ */
+public class ListenersIn implements KeyListener {
+    JTextField createQueue;
+    JTextArea result;
+    JTextField queueCode;
+    JTextField enqueue;
+    RunnableCreateQueue runnable;
+
+    public ListenersIn(JTextField createQueue, JTextField queueCode, JTextField enqueue,
+                       JTextArea result) {
+        this.queueCode = queueCode;
+        this.createQueue = createQueue;
+        this.enqueue = enqueue;
+        this.result = result;
+    }
+
+    public void keyPressed(KeyEvent e) {
+        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
+            runnable =
+                    new RunnableCreateQueue(this.createQueue, this.queueCode, this.enqueue,
+                            this.result);
+            Thread tread = new Thread(runnable);
+            tread.start();
+        }
+    }
+
+    public void keyReleased(KeyEvent e) {
+
+    }
+
+    public void keyTyped(KeyEvent e) {
+
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/ListenersOut.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/ListenersOut.java
new file mode 100644
index 0000000..54610ec
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/ListenersOut.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService;
+
+import sample.amazon.amazonSimpleQueueService.util.RunnableDeleteQueue;
+import sample.amazon.amazonSimpleQueueService.util.RunnableListMyQueues;
+import sample.amazon.amazonSimpleQueueService.util.RunnableReadQueue;
+
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseMotionListener;
+
+/**
+ * This will create the OMElement needed to be used in invokeNonBlocking() method
+ */
+public class ListenersOut implements KeyListener,
+        ActionListener,
+        MouseMotionListener {
+    JTextField createQueue;
+    JTextArea result;
+    JTextField queueCode;
+    JTextField read;
+    JButton buttonLoad;
+    JButton buttonDelete;
+    Runnable runableCodeListMyQueues;
+    Runnable runnableCodeDequeue;
+
+    public ListenersOut(JTextField createQueue,
+                        JTextField queueCode,
+                        JTextField read,
+                        JTextArea result,
+                        JButton buttonLoad,
+                        JButton buttonDelete) {
+        this.queueCode = queueCode;
+        this.createQueue = createQueue;
+        this.read = read;
+        this.result = result;
+        this.buttonLoad = buttonLoad;
+        this.buttonDelete = buttonDelete;
+    }
+
+    public void keyPressed(KeyEvent e) {
+        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
+            this.result.setText("");
+            this.createQueue.setEditable(false);
+            this.runableCodeListMyQueues =
+                    new RunnableReadQueue(this.createQueue,
+                            this.queueCode, this.read, this.result);
+            Thread thread = new Thread(this.runableCodeListMyQueues);
+            thread.start();
+        }
+    }
+
+    public void keyReleased(KeyEvent e) {
+    }
+
+    public void keyTyped(KeyEvent e) {
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        if (e.getActionCommand().equals("1")) {
+            this.runableCodeListMyQueues =
+                    new RunnableListMyQueues(this.createQueue, this.queueCode, this.read,
+                            this.result, this.buttonLoad);
+            Thread thread1 = new Thread(this.runableCodeListMyQueues);
+            thread1.start();
+            this.createQueue.setEditable(true);
+            this.buttonLoad.setText("Running..");
+        }
+        if (e.getActionCommand().equals("2")) {
+            this.buttonDelete.setText("Running");
+            this.runnableCodeDequeue =
+                    new RunnableDeleteQueue(this.createQueue, this.queueCode, this.read,
+                            this.result, this.buttonDelete);
+            Thread thread2 = new Thread(this.runnableCodeDequeue);
+            thread2.start();
+        }
+    }
+
+    public void mouseDragged(MouseEvent e) {
+        String selectedText = this.result.getSelectedText();
+        this.createQueue.setText(selectedText);
+    }
+
+    public void mouseMoved(MouseEvent e) {
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/OMElementCreator.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/OMElementCreator.java
new file mode 100644
index 0000000..c23a482
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/OMElementCreator.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPFactory;
+
+/**
+ * This will create the OMElement needed to be used in invokeNonBlocking() method
+ * OMElements are created for CreateQueueu, ListMyQueues, Read, and Enqueue operations
+ */
+public class OMElementCreator {
+    public static OMElement creatQueueElement(String createQueueElement,
+                                              String key) {
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        OMNamespace opN = factory.createOMNamespace(
+                "http://webservices.amazon.com/AWSSimpleQueueService/2005-01-01",
+                "nsQ");
+        OMElement createQueue = factory.createOMElement("CreateQueue", opN);
+        OMElement subID = factory.createOMElement("SubscriptionId", opN);
+        OMElement request = factory.createOMElement("Request", opN);
+        OMElement queueName = factory.createOMElement("QueueName", opN);
+        OMElement readLockTimeOutSeconds = factory.createOMElement(
+                "ReadLockTimeoutSeconds", opN);
+        request.addChild(queueName);
+        request.addChild(readLockTimeOutSeconds);
+        subID.addChild(factory.createOMText(key));
+        queueName.addChild(factory.createOMText(createQueueElement));
+        readLockTimeOutSeconds.addChild(factory.createOMText("10"));
+        createQueue.addChild(subID);
+        createQueue.addChild(request);
+        return createQueue;
+    }
+
+    public static OMElement deleteQueueElement(String deleteQueueName,
+                                               String key) {
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        OMNamespace opN = factory.createOMNamespace(
+                "http://webservices.amazon.com/AWSSimpleQueueService/2005-01-01",
+                "nsQ");
+        OMElement enque = factory.createOMElement("DeleteQueue", opN);
+        OMElement subID = factory.createOMElement("SubscriptionId", opN);
+        OMElement request = factory.createOMElement("Request", opN);
+        OMElement queueName = factory.createOMElement("QueueName", opN);
+        //OMElement queueID = factory.createOMElement("QueueId",opN);
+        request.addChild(queueName);
+        //request.addChild(queueID);
+        subID.addChild(factory.createOMText(key));
+        queueName.addChild(factory.createOMText(deleteQueueName));
+        //queueID.addChild(factory.createOMText(queueIden));
+        enque.addChild(subID);
+        enque.addChild(request);
+        return enque;
+    }
+
+    public static OMElement enqueueElement(String queueEntyBody,
+                                           String queueIden,
+                                           String key) {
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        OMNamespace opN = factory.createOMNamespace(
+                "http://webservices.amazon.com/AWSSimpleQueueService/2005-01-01",
+                "nsQ");
+        OMElement enque = factory.createOMElement("Enqueue", opN);
+        OMElement subID = factory.createOMElement("SubscriptionId", opN);
+        OMElement request = factory.createOMElement("Request", opN);
+        //OMElement queueName = factory.createOMElement("QueueName",opN);
+        OMElement queueID = factory.createOMElement("QueueId", opN);
+        OMElement queueEntryBodies = factory.createOMElement(
+                "QueueEntryBodies", opN);
+        OMElement queueEntryBody1 = factory.createOMElement("QueueEntryBody",
+                opN);
+        queueEntryBodies.addChild(queueEntryBody1);
+        //request.addChild(queueName);
+        request.addChild(queueID);
+        request.addChild(queueEntryBodies);
+        subID.addChild(factory.createOMText(key));
+        //queueName.addChild(factory.createOMText("Test Queue LSF "));
+        queueID.addChild(factory.createOMText(queueIden));
+        queueEntryBody1.addChild(factory.createOMText(queueEntyBody));
+        enque.addChild(subID);
+        enque.addChild(request);
+        return enque;
+    }
+
+    public static OMElement queueListElement(String key) {
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        OMNamespace opN = factory.createOMNamespace(
+                "http://webservices.amazon.com/AWSSimpleQueueService/2005-01-01",
+                "nsQ");
+        OMElement listMyQueues = factory.createOMElement("ListMyQueues", opN);
+        OMElement subID = factory.createOMElement("SubscriptionId", opN);
+        OMElement request = factory.createOMElement("Request", opN);
+        subID.addChild(factory.createOMText(key));
+        listMyQueues.addChild(subID);
+        listMyQueues.addChild(request);
+        return listMyQueues;
+    }
+
+    public static OMElement read(String requiredQueueName, String key) {
+        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+        OMNamespace opN = factory.createOMNamespace(
+                "http://webservices.amazon.com/AWSSimpleQueueService/2005-01-01",
+                "nsQ");
+        OMElement read = factory.createOMElement("Read", opN);
+        OMElement subID = factory.createOMElement("SubscriptionId", opN);
+        OMElement request = factory.createOMElement("Request", opN);
+        OMElement queueName = factory.createOMElement("QueueName", opN);
+        //OMElement queueID = factory.createOMElement("QueueId",opN);
+        OMElement readCount = factory.createOMElement("ReadCount", opN);
+        request.addChild(queueName);
+        //request.addChild(queueID);
+        request.addChild(readCount);
+        subID.addChild(factory.createOMText(key));
+        queueName.addChild(factory.createOMText(requiredQueueName));
+        //queueID.addChild(factory.createOMText(queueIden));
+        readCount.addChild(factory.createOMText("25"));
+        read.addChild(subID);
+        read.addChild(request);
+        return read;
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/RunGUICQ.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/RunGUICQ.java
new file mode 100644
index 0000000..4979053
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/RunGUICQ.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService;
+
+public class RunGUICQ {
+    public static void main(String[] args) {
+        AmazonSimpleQueueServiceIn queue = new AmazonSimpleQueueServiceIn();
+        queue.show();
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/RunGUIRQ.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/RunGUIRQ.java
new file mode 100644
index 0000000..e7de54f
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/RunGUIRQ.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService;
+
+public class RunGUIRQ {
+    public static void main(String[] args) {
+        AmazonSimpleQueueServiceOut frame = new AmazonSimpleQueueServiceOut();
+        frame.show();
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/QueueManager.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/QueueManager.java
new file mode 100644
index 0000000..8558d39
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/QueueManager.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import java.io.InputStream;
+import java.util.Properties;
+
+public class QueueManager {
+    private static String key = null;
+
+    static {
+        Class clazz = Object.class;
+        InputStream stream = clazz.getResourceAsStream(
+                "/sample/amazon/common/conf/key.properties");
+        Properties properties = new Properties();
+        try {
+            properties.load(stream);
+            key = properties.getProperty("key");
+        } catch (Exception e) {
+           // e.printStackTrace();
+        }
+
+    }
+
+    public static String getKey() {
+        return key;
+    }
+
+    public synchronized static void setKey(String tkey) {
+        key = tkey;
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableCreateQueue.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableCreateQueue.java
new file mode 100644
index 0000000..3d4f30b
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableCreateQueue.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.Callback;
+import sample.amazon.amazonSimpleQueueService.OMElementCreator;
+
+import javax.swing.*;
+
+/**
+ * This will create the Excutable code which runs separately of GUI interations
+ */
+public class RunnableCreateQueue extends QueueManager implements Runnable {
+    JTextField createQueue;
+    JTextArea result;
+    JTextField queueCode;
+    JTextField enqueue;
+
+    public RunnableCreateQueue(JTextField createQueue, JTextField queueCode,
+                               JTextField enqueue,
+                               JTextArea result) {
+        this.createQueue = createQueue;
+        this.queueCode = queueCode;
+        this.enqueue = enqueue;
+        this.result = result;
+    }
+
+    public void run() {
+        if (this.createQueue.isEditable()) {
+            OMElement createQueueElement = OMElementCreator.creatQueueElement(
+                    this.createQueue.getText(), getKey());
+            this.axis2EngineRuns("CreateQueue",
+                    createQueueElement,
+                    new SimpleQueueCreateQueueCallbackHandler(this.createQueue,
+                            this.queueCode,
+                            this.enqueue, this.result));
+        }
+        if (this.enqueue.isEditable()) {
+            OMElement enqueueElement = OMElementCreator.enqueueElement(
+                    this.enqueue.getText(),
+                    this.queueCode.getText(), getKey());
+            this.axis2EngineRuns("Enqueue",
+                    enqueueElement,
+                    new SimpleQueueEnqueueCallbackHandler(this.createQueue,
+                            this.queueCode,
+                            this.enqueue,
+                            this.result));
+        }
+    }
+
+    private void axis2EngineRuns(String operation, OMElement element,
+                                 Callback specificCallbackObject) {
+        //endpoint uri is hard coded....
+        String url =
+                "http://webservices.amazon.com/onca/soap?Service=AWSSimpleQueueService";
+        try {
+            Options options = new Options();
+            options.setTo(new EndpointReference(url));
+            options.setAction("http://soap.amazon.com");
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setProperty(
+                    HTTPConstants.CHUNKED,
+                    org.apache.axis2.Constants.VALUE_FALSE);
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+            sender.sendReceiveNonBlocking(element, specificCallbackObject);
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableDeleteQueue.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableDeleteQueue.java
new file mode 100644
index 0000000..0ea43c8
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableDeleteQueue.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.Callback;
+import sample.amazon.amazonSimpleQueueService.OMElementCreator;
+
+import javax.swing.*;
+
+/**
+ * This will create the Excutable code which runs separately of GUI interations
+ */
+public class RunnableDeleteQueue extends QueueManager implements Runnable {
+    JTextField createQueue;
+    JTextArea result;
+    JTextField queueCode;
+    JTextField read;
+    JButton button;
+
+    public RunnableDeleteQueue(JTextField createQueue, JTextField queueCode, JTextField read,
+                               JTextArea result, JButton button) {
+        this.createQueue = createQueue;
+        this.queueCode = queueCode;
+        this.read = read;
+        this.result = result;
+        this.button = button;
+    }
+
+    public void run() {
+        OMElement deleteQueueElement = OMElementCreator.deleteQueueElement(
+                this.createQueue.getText(), getKey());
+        this.axis2EngineRuns("DeleteQueue",
+                deleteQueueElement,
+                new SimpleQueueDeleteQueueCallbackHandler(this.result,
+                        this.button));
+    }
+
+    private void axis2EngineRuns(String operation, OMElement element,
+                                 Callback specificCallbackObject) {
+        //endpoint uri is hard coded....
+        String url = "http://webservices.amazon.com/onca/soap?Service=AWSSimpleQueueService";
+        try {
+            Options options = new Options();
+            options.setAction("http://soap.amazon.com");
+            options.setTo(new EndpointReference(url));
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setProperty(
+                    HTTPConstants.CHUNKED,
+                    org.apache.axis2.Constants.VALUE_FALSE);
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+            sender.sendReceiveNonBlocking(element, specificCallbackObject);
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableListMyQueues.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableListMyQueues.java
new file mode 100644
index 0000000..f10e77c
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableListMyQueues.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.Callback;
+import sample.amazon.amazonSimpleQueueService.OMElementCreator;
+
+import javax.swing.*;
+
+/**
+ * This will create the Excutable code which runs separately of GUI interations
+ */
+public class RunnableListMyQueues extends QueueManager implements Runnable {
+    JTextField createQueue;
+    JTextArea result;
+    JTextField queueCode;
+    JTextField read;
+    JButton button;
+
+    public RunnableListMyQueues(JTextField createQueue, JTextField queueCode, JTextField read,
+                                JTextArea result, JButton button) {
+        this.createQueue = createQueue;
+        this.queueCode = queueCode;
+        this.read = read;
+        this.result = result;
+        this.button = button;
+    }
+
+    public void run() {
+        OMElement listMyQueuesElement = OMElementCreator.queueListElement(
+                getKey());
+        this.axis2EngineRuns("ListMyQueues",
+                listMyQueuesElement,
+                new SimpleQueueListMyQueuesCallbackHandler(this.createQueue, this.queueCode,
+                        this.read, this.result, this.button));
+    }
+
+    private void axis2EngineRuns(String operation, OMElement element,
+                                 Callback specificCallbackObject) {
+        //endpoint uri is hard coded....
+        String url = "http://webservices.amazon.com/onca/soap?Service=AWSSimpleQueueService";
+        try {
+            Options options = new Options();
+            options.setAction("http://soap.amazon.com");
+            options.setTo(new EndpointReference(url));
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setProperty(
+                    HTTPConstants.CHUNKED,
+                    org.apache.axis2.Constants.VALUE_FALSE);
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+            sender.sendReceiveNonBlocking(element, specificCallbackObject);
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableReadQueue.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableReadQueue.java
new file mode 100644
index 0000000..648e226
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/RunnableReadQueue.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.Callback;
+import sample.amazon.amazonSimpleQueueService.OMElementCreator;
+
+import javax.swing.*;
+
+/**
+ * This will create the Excutable code which runs separately of GUI interations
+ */
+public class RunnableReadQueue extends QueueManager implements Runnable {
+    JTextField createQueue;
+    JTextArea result;
+    JTextField queueCode;
+    JTextField read;
+
+    public RunnableReadQueue(JTextField createQueue, JTextField queueCode, JTextField read,
+                             JTextArea result) {
+        this.createQueue = createQueue;
+        this.queueCode = queueCode;
+        this.read = read;
+        this.result = result;
+    }
+
+    public void run() {
+        OMElement readQueueElement = OMElementCreator.read(
+                this.createQueue.getText(), getKey());
+        this.axis2EngineRuns("Read",
+                readQueueElement,
+                new SimpleQueueReadCallbackHandler(this.queueCode,
+                        this.result));
+    }
+
+    private void axis2EngineRuns(String operation, OMElement element,
+                                 Callback specificCallbackObject) {
+        //endpoint uri is hard coded....
+        String url = "http://webservices.amazon.com/onca/soap?Service=AWSSimpleQueueService";
+        try {
+            Options options = new Options();
+            options.setAction("http://soap.amazon.com");
+            options.setTo(new EndpointReference(url));
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setProperty(
+                    HTTPConstants.CHUNKED,
+                    org.apache.axis2.Constants.VALUE_FALSE);
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+            sender.sendReceiveNonBlocking(element, specificCallbackObject);
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueCreateQueueCallbackHandler.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueCreateQueueCallbackHandler.java
new file mode 100644
index 0000000..d1c96a3
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueCreateQueueCallbackHandler.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+
+import javax.swing.*;
+import java.util.Iterator;
+
+/**
+ * Callback class which deals with the outcome of the operation
+ */
+public class SimpleQueueCreateQueueCallbackHandler extends Callback {
+    private static String returnString = "";
+    private JTextField createQueue;
+    private JTextArea result;
+    private JTextField queueCode;
+    private JTextField enqueue;
+
+    public SimpleQueueCreateQueueCallbackHandler() {
+    }//defaultConstructor
+
+    public SimpleQueueCreateQueueCallbackHandler(JTextField createQueue,
+                                                 JTextField queueCode,
+                                                 JTextField enqueue,
+                                                 JTextArea result) {
+        super();
+        this.createQueue = createQueue;
+        this.queueCode = queueCode;
+        this.enqueue = enqueue;
+        this.result = result;
+    }
+
+    public void onComplete(AsyncResult result) {
+        SOAPBody body = result.getResponseEnvelope().getBody();
+        getResults(body);
+    }
+
+    public void onError(Exception e) {
+
+    }
+
+    private boolean getResults(OMElement element) {
+        Iterator iterator = element.getChildren();
+        while (iterator.hasNext()) {
+            OMNode omNode = (OMNode) iterator.next();
+            if (omNode.getType() == OMNode.ELEMENT_NODE) {
+                OMElement omElement = (OMElement) omNode;
+                if ((omElement.getLocalName().equals("Status"))
+                        || (omElement.getLocalName().equals("QueueId"))) {
+                    this.getText(omElement);
+                } else {
+                    getResults(omElement);
+                }
+            }
+        }
+        return false;
+    }
+
+    public static String getReturnString() {
+        return returnString;
+    }
+
+    private void getText(OMElement element) {
+        if (element.getLocalName().equals("Status")) {
+            this.result.setText(element.getText() + ".......");
+            if (element.getText().equals("Success")) {
+                this.enqueue.setEditable(true);
+                returnString = returnString +
+                        "Successfully Added the new Queue.." +
+                        "[" + this.createQueue.getText() + "]" + "\n";
+                this.result.setText(returnString);
+            }
+            if (element.getText().equals("Warnings")) {
+                this.enqueue.setEditable(true);
+                this.createQueue.setEditable(false);
+                returnString = returnString + "Enque the existing queue.." +
+                        "[" + this.createQueue.getText() + "]" +
+                        "..Allow Enquring data";
+                this.result.setText(returnString);
+            }
+        }
+        if (element.getLocalName().equals("QueueId")) {
+            this.queueCode.setText(element.getText());
+        }
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueDeleteQueueCallbackHandler.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueDeleteQueueCallbackHandler.java
new file mode 100644
index 0000000..cd2d627
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueDeleteQueueCallbackHandler.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+
+import javax.swing.*;
+import java.util.Iterator;
+
+/**
+ * Callback class which deals with the outcome of the operation
+ */
+public class SimpleQueueDeleteQueueCallbackHandler extends Callback {
+    private String returnString = "";
+    JTextArea results;
+    JButton button;
+
+    public SimpleQueueDeleteQueueCallbackHandler() {
+    }//defalut handler
+
+    public SimpleQueueDeleteQueueCallbackHandler(JTextArea results,
+                                                 JButton button) {
+        super();
+        this.results = results;
+        this.button = button;
+    }
+
+    public void onComplete(AsyncResult result) {
+        SOAPBody body = result.getResponseEnvelope().getBody();
+        this.getQueueDeleteStatus(body);
+        this.button.setText("Delete Queue");
+    }
+
+    public void onError(Exception e) {
+
+    }
+
+    private void getQueueDeleteStatus(OMElement element) {
+        Iterator iterator = element.getChildren();
+        while (iterator.hasNext()) {
+            OMNode omNode = (OMNode) iterator.next();
+            if (omNode.getType() == OMNode.ELEMENT_NODE) {
+                OMElement omElement = (OMElement) omNode;
+                if (omElement.getLocalName().equals("Status")) {
+                    this.readTheQueue(omElement);
+                } else {
+                    getQueueDeleteStatus(omElement);
+                }
+            }
+        }
+    }
+
+    private void readTheQueue(OMElement element) {
+        if (element.getText().equals("Errors")) {
+            returnString += "Queue can't be deleted, it has to be dequeued first" +
+                    "\n";
+        } else {
+            returnString += "Queue is deleted" + "\n";
+        }
+        this.results.setText(returnString + "\n");
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueEnqueueCallbackHandler.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueEnqueueCallbackHandler.java
new file mode 100644
index 0000000..6c391f9
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueEnqueueCallbackHandler.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+
+import javax.swing.*;
+import java.util.Iterator;
+
+/**
+ * Callback class which deals with the outcome of the operation
+ */
+public class SimpleQueueEnqueueCallbackHandler extends Callback {
+    private static String returnString = "";
+    private JTextField createQueue;
+    private JTextArea result;
+    private JTextField queueCode;
+    private JTextField enqueue;
+
+    public SimpleQueueEnqueueCallbackHandler() {
+    }//defaultConstructor
+
+    public SimpleQueueEnqueueCallbackHandler(JTextField createQueue,
+                                             JTextField queueCode,
+                                             JTextField enqueue,
+                                             JTextArea result) {
+        super();
+        this.createQueue = createQueue;
+        this.queueCode = queueCode;
+        this.enqueue = enqueue;
+        this.result = result;
+    }
+
+    public void onComplete(AsyncResult result) {
+        SOAPBody body = result.getResponseEnvelope().getBody();
+        getResults(body);
+    }
+
+    public void onError(Exception e) {
+
+    }
+
+    private boolean getResults(OMElement element) {
+        Iterator iterator = element.getChildren();
+        while (iterator.hasNext()) {
+            OMNode omNode = (OMNode) iterator.next();
+            if (omNode.getType() == OMNode.ELEMENT_NODE) {
+                OMElement omElement = (OMElement) omNode;
+                if (omElement.getLocalName().equals("Status")) {
+                    this.getText(omElement);
+                } else {
+                    getResults(omElement);
+                }
+            }
+        }
+        return false;
+    }
+
+    public static String getReturnString() {
+        return returnString;
+    }
+
+    private void getText(OMElement element) {
+        if (element.getLocalName().equals("Status")) {
+            this.result.setText(element.getText() + ".......");
+            if (element.getText().equals("Success")) {
+                returnString = returnString + "Successfully Enqueued.." +
+                        "[" + this.enqueue.getText() + "]" + "..Queue.." + "["
+                        + this.createQueue.getText()
+                        + "]"
+                        + "\n";
+                this.result.setText(returnString);
+                this.enqueue.setText("");
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueListMyQueuesCallbackHandler.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueListMyQueuesCallbackHandler.java
new file mode 100644
index 0000000..2d8ae3a
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueListMyQueuesCallbackHandler.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+
+import javax.swing.*;
+import java.util.Iterator;
+
+/**
+ * Callback class which deals with the outcome of the operation
+ */
+public class SimpleQueueListMyQueuesCallbackHandler extends Callback {
+    private String returnString = "Listing Available Queues......\n";
+    private JTextField createQueue;
+    private JTextArea result;
+    private JTextField queueCode;
+    private JTextField read;
+    private JButton button;
+
+    public SimpleQueueListMyQueuesCallbackHandler() {
+    }//defaultConstructor
+
+    public SimpleQueueListMyQueuesCallbackHandler(JTextField createQueue, JTextField queueCode,
+                                                  JTextField read, JTextArea result,
+                                                  JButton button) {
+        super();
+        this.createQueue = createQueue;
+        this.queueCode = queueCode;
+        this.read = read;
+        this.result = result;
+        this.button = button;
+    }
+
+    public void onComplete(AsyncResult result) {
+        SOAPBody body = result.getResponseEnvelope().getBody();
+        getResults(body);
+        this.button.setText("Load Queue");
+    }
+
+    public void onError(Exception e) {
+
+    }
+
+    private boolean getResults(OMElement element) {
+        Iterator iterator = element.getChildren();
+        while (iterator.hasNext()) {
+            OMNode omNode = (OMNode) iterator.next();
+            if (omNode.getType() == OMNode.ELEMENT_NODE) {
+                OMElement omElement = (OMElement) omNode;
+                if ((omElement.getLocalName().equals("QueueId"))
+                        || (omElement.getLocalName().equals("QueueName"))) {
+
+                    if (omElement.getLocalName().equals("QueueId")) {
+                        this.getText(omElement);
+                    }
+                    if (omElement.getLocalName().equals("QueueName")) {
+                        this.getText(omElement);
+                    }
+
+                } else {
+                    getResults(omElement);
+                }
+            }
+        }
+        return false;
+    }
+
+    public String getReturnString() {
+        return this.returnString;
+    }
+
+    private void getText(OMElement element) {
+        returnString = returnString + element.getText() + "\n";
+        this.result.setText(returnString);
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueReadCallbackHandler.java b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueReadCallbackHandler.java
new file mode 100644
index 0000000..8a057b9
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/amazonSimpleQueueService/util/SimpleQueueReadCallbackHandler.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2004,2005 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 sample.amazon.amazonSimpleQueueService.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+
+import javax.swing.*;
+import java.util.Iterator;
+
+/**
+ * Callback class which deals with the outcome of the operation
+ */
+public class SimpleQueueReadCallbackHandler extends Callback {
+    private String returnString = "";
+    JTextField queueCode;
+    JTextArea results;
+
+    public SimpleQueueReadCallbackHandler() {
+    }//defalut handler
+
+    public SimpleQueueReadCallbackHandler(JTextField queueCode,
+                                          JTextArea results) {
+        super();
+        this.queueCode = queueCode;
+        this.results = results;
+    }
+
+    public void onComplete(AsyncResult result) {
+        SOAPBody body = result.getResponseEnvelope().getBody();
+        this.getQueueEntryBody(body);
+    }
+
+    public void onError(Exception e) {
+
+    }
+
+    private void getQueueEntryBody(OMElement element) {
+        Iterator iterator = element.getChildren();
+        while (iterator.hasNext()) {
+            OMNode omNode = (OMNode) iterator.next();
+            if (omNode.getType() == OMNode.ELEMENT_NODE) {
+                OMElement omElement = (OMElement) omNode;
+                if (omElement.getLocalName().equals("QueueEntryBody")) {
+                    this.readTheQueue(omElement);
+                } else {
+                    getQueueEntryBody(omElement);
+                }
+            }
+        }
+    }
+
+    private void readTheQueue(OMElement element) {
+        returnString = returnString + element.getText() + "\n";
+        this.results.setText(returnString + "\n");
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/common/conf/key.properties b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/common/conf/key.properties
new file mode 100644
index 0000000..1fe7e09
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/amazonqs/src/sample/amazon/common/conf/key.properties
@@ -0,0 +1,4 @@
+# This is the subcription Id for the Amazon Simple Queue Web Service

+# When a user need to run the sample through a new subcription Id 

+# simply changed this value of the key/value pair. 

+key=0HPJJ4GJDSG2TZ2C8X02
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/README.txt b/rampart_1_1/modules/samples/deprecated/googlesearch/README.txt
new file mode 100644
index 0000000..256583a
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/README.txt
@@ -0,0 +1,16 @@
+Sample for Google - Search - API

+========================================

+

+Running the Sample:

+-------------------

+There are two methods to run the sample.

+

+1. Type <ant> command

+

+2. Uing the scrip files. Use run.sh or run.bat to run the sample pertaining

+to the system you are using.

+

+Help:

+-----

+

+Please refer to the sample help page at "AXIS2_HOME\modules\samples\xdocs\googleSearch" for more details
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/build.xml b/rampart_1_1/modules/samples/deprecated/googlesearch/build.xml
new file mode 100644
index 0000000..44d7107
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/build.xml
@@ -0,0 +1,15 @@
+<project name="samples" default="run">
+    <property name="mainDir" value="../.."/>
+    <path id="axis.classpath">
+        <fileset dir="../../lib">
+            <include name="*.jar"/>
+        </fileset>
+        <pathelement location="./googleSearch.jar"/>
+    </path>
+    <target name="run">
+        <java classname="sample.google.search.AsynchronousClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/docs/GoogleSearchHelp.html b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/GoogleSearchHelp.html
new file mode 100644
index 0000000..08f0146
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/GoogleSearchHelp.html
@@ -0,0 +1,226 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <title>Untitled Document</title>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+</head>
+
+<body>
+<h1>SOAP Based AXIS Client for Google Search</h1>
+
+<h2>Section 1 - Basic Operations</h2>
+
+<h3><strong>Introduction</strong></h3>
+
+<p>This is a client that can be used  to do Google searches using the Google
+Web API. It allows the user to enter a word as the query parameters in the
+given text field of the GUI and in a moment it shows the search results in
+the text pane below. The special feature of this client is, when the user
+presses the space key after typing a word it starts searching for that word
+and displays the results while the user typing the next word. This feature is
+made possible by  the non blocking  invocation capability of Axis2. </p>
+
+<h3><strong>Getting Started</strong></h3>
+
+<p>Google search operation is done by means of Google Web API. (You can learn
+more and create your own account in Google Web API <a
+href="http://www.google.com/apis/">here</a>). If you need to build your own
+client using this Web API,  you should obtain a license key which can be
+obtained easily at the Google Web API page.</p>
+
+<p>When you work with this client, you can use the given license key with
+this release (This default key is included in a property file inside the jar
+file which will be automatically used in the sample when started). However it
+is convenient for you to get a license key of your own since the daily limit
+per key is 1000 requests and the limit will be reached quickly if a single
+license key is shared by many users.</p>
+
+<p>The first and the easiest option is downloading the binary distribution
+which includes the compiled samples. Scripts are included for starting the
+program in either Windows or Unix.</p>
+
+<p>Second option is to build the samples from source. This has to be done
+with Maven. All you have to do is go to Modules/Samples and type maven in the
+command prompt. This will compile and will build all the jars required and
+copy the necessary scripts as well.</p>
+
+<p>Execute the necessary shell scripts / batch files to start the tool.</p>
+
+<h3><strong>Items in the UI</strong></h3>
+
+<p>The following figure shows the UI of the tool</p>
+
+<p><img border="0" src="sceenShot1.JPG" width="616" height="577"></p>
+
+<p>The key can be set by using the settings menu</p>
+
+<p><img border="0" src="screenShot2.JPG" width="163" height="129"></p>
+
+<p>The Help menu pops up a help window which includes this text</p>
+
+<p><img border="0" src="screenShot3.JPG" width="193" height="112"></p>
+
+<p> </p>
+
+<h3><strong>Operation</strong></h3>
+
+<p>Now you are ready to do a Google search - SOAP style. Just type the word
+you want to search in the small text field in the GUI. After you press enter
+or space, client starts the searching and you will see the results displayed
+few seconds.</p>
+
+<p>You can also set the number of results per page from the set menu. Maximum
+is 10 results. You can view more results for the last search by pressing
+"More Results" button and can come back to previous page by "Previous Page"
+button.</p>
+
+<h2>Section 2 - How the sample works</h2>
+
+<h3><strong>Architecture</strong></h3>
+
+<p>This client is built from five classes.</p>
+<ol>
+  <li>AsynchronousClient:- This class is responsible for sending requests</li>
+  <li>ClientUtil:- Utility class to build the soap envelope and the
+    messageContext;</li>
+  <li>ClientCallbackHandler:- receives the response messages and processes it
+    to extract the required content.</li>
+  <li>LinkFollower:- Listens to the hyperlink events and produce new windows
+    to open relevant URLs.</li>
+  <li>GUIHandler:- Builds &amp; shows the GUI, Listens  to the events in the
+    GUI, </li>
+</ol>
+
+<p><img src="archi.JPG" width="550" height="384"></p>
+
+<p>The main method is inside the AsynchronousClient class. First it
+instantiates a LinkFollower and a GUIHandler . Then the main program calls to
+the GUIHandler to display the GUI. After that, the program starts running and
+captures and acts according to the events fired by the GUI. The KeyListner
+that listens to the text field events fires a search when it detects a space
+or Enter key. It would not take long time send a request, but here it's done
+using a separate thread because it's important to isolate the GUI from
+internal actions. The user never gets interrupted in anyway. So the user can
+type the query terms continuously on the text field while the program does
+the search for the query terms that are already typed and displays the
+results.</p>
+
+<p>The use of the other thread comes when the user click on a hyperlink. Then
+the program opens the URL in a new window. This may take a while to load up
+depending on the Web site. Hence a separate thread is used , where the 
+LinkFollower is made a Thread. </p>
+
+<h3><strong>More on the Code</strong></h3>
+
+<p>Now we have two threads, one is for  sending the soap request without
+interrupting the user and other is to open a new windows for clicked URLs.
+But there is another important action. That is processing the received
+response and displaying the results. That is done in the
+ClientCallbackHandler. This is also an important feature of the
+InvokeNonBlocking operation of Axis2. It lets you to have an additional
+thread in the callbackHandler class. All you have to do is send an object of
+that class as a parameter when you send the message. How it is done in the
+program is as follows. </p>
+
+<p><code>call.invokeNonBlocking(opdesc, requestContext, new
+ClientEchoCallbackHandler());</code></p>
+
+<p>opDesc is a QName which caries the operation name and relevant
+namespace.</p>
+
+<p>requestContext is a MessageContext that holds the request soap
+envelope.</p>
+
+<p>ClientEchoCallbackHandler is a class that receives the response soap
+envelope.</p>
+
+<p>Briefly, client thread is just sending the requests and it is not waiting
+for the response. So this client can send any amount of requests sequentially
+irrespective of whether the responses are received or not.
+ClientEchoCallbackHandler is responsible for receiving response messages and
+processing it. It extracts the required details from the message and displays
+it in the text pane of the GUI.</p>
+
+<p>The request soap message is built at the ClientUtil class. According to
+the Google Web API WSDL file, required namespaces are selected and attached
+to the envelope. We don't have to include anything in the header. The name of
+the first child element of the body should be operation name and it should be
+namespace qualified. We also have to include the binding namespace to this
+element. Here it is attached as an attribute to that element,</p>
+
+<p><code>OMElement operation = omFactory.createOMElement("doGoogleSearch",
+"urn:GoogleSearch", "ns1");</code></p>
+
+<p><code>opration.addAttribute("SOAP-ENV:encordingStyle",
+"http://schemas.xmlsoap.org/soap/encoding/", null);</code></p>
+
+<p>All the child elements of the operation element are carrying required
+parameters such as license key, query terms, results per page, etc. (for more
+information, download the developer kit from <a
+href="http://www.google.com/apis/download.html">http://www.google.com/apis/download.html
+</a>, and refer "APIs_Reference.html")</p>
+
+<p>This is a sample request soap enelope,</p>
+
+<p><samp>&lt;soapenv:Envelope
+xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance/"
+xmlns:xsd="http://www.w3.org/1999/XMLSchema"&gt;<br>
+&lt;soapenv:Header&gt;&lt;/soapenv:Header&gt;<br>
+&lt;soapenv:Body&gt;</samp></p>
+
+<blockquote>
+  <p><samp>&lt;ns1:doGoogleSearch xmlns:ns1="urn:GoogleSearch"
+  SOAP-ENV:encordingStyle="http://schemas.xmlsoap.org/soap/encoding/"&gt;<br>
+  &lt;key xmlns=""
+  xsi:type="xsd:string"&gt;F0wt5EFQFHKxTs+rl3P+27o6D112BTWd&lt;/key&gt;<br>
+  &lt;q xmlns="" xsi:type="xsd:string"&gt;axis&lt;/q&gt;<br>
+  &lt;start xmlns="" xsi:type="xsd:int"&gt;0&lt;/start&gt;<br>
+  &lt;maxResults xmlns="" xsi:type="xsd:int"&gt;2&lt;/maxResults&gt;<br>
+  &lt;filter xmlns="" xsi:type="xsd:boolean"&gt;true&lt;/filter&gt;<br>
+  &lt;restrict xmlns="" xsi:type="xsd:string"&gt;&lt;/restrict&gt;<br>
+  &lt;safeSearch xmlns=""
+  xsi:type="xsd:boolean"&gt;false&lt;/safeSearch&gt;<br>
+  &lt;lr xmlns="" xsi:type="xsd:string"&gt;&lt;/lr&gt;<br>
+  &lt;ie xmlns="" xsi:type="xsd:string"&gt;latin1&lt;/ie&gt;<br>
+  &lt;oe xmlns="" xsi:type="xsd:string"&gt;latin1&lt;/oe&gt;<br>
+  &lt;/ns1:doGoogleSearch&gt;</samp></p>
+</blockquote>
+
+<p><samp>&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</samp></p>
+
+<p>You can find a sample soap response message from the toolkit that you
+download from the Google Web API page.. ClientCallbackHandler processing
+response soap and extract elements which have the local names as "snippet"
+and "URL". It has to work with AXIOM. You can notice that it uses several
+Iterators to go through the children of an OMElement.  the Iterator returns
+an object that can be cast into an OMNode. Since you can't call for the
+children of an OMNode we have to cast it to an OMElement where a type
+checking needs to be done as follows. </p>
+<pre>Iterator iterator0 =
+operation.getChildren();
+while (iterator0.hasNext()) {
+OMNode node = (OMNode) iterator0.next();
+if (node.getType() == OMNode.ELEMENT_NODE) {
+OMElement elem = (OMElement) node;</pre>
+
+<p>A notable fact here is that the text in the snippet element is in the HTML
+format. But it cannot be displayed straight away because you have to attach
+the HTML header and footer to that. "beginHTML" and "endHTML" static
+variables are used for that purpose.</p>
+
+<h3><strong>Extending the Client</strong></h3>
+
+<p>If you observe the WSDL file of the Google API, you can find two more
+operations other than "<strong>doGoogleSearch</strong>". Those are
+<strong>"doGetCachedPage" </strong> and " <strong>doSpellingSuggestion"
+</strong>. You can extend this program to work these operations too. Because
+the soap requests and responses are different, it will need separate
+ClientUtil classes and ClientCallbackHandler classes to fulfill this task.</p>
+
+<p>  </p>
+<hr>
+</body>
+</html>
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/docs/archi.JPG b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/archi.JPG
new file mode 100644
index 0000000..d69af30
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/archi.JPG
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/docs/sceenShot1.JPG b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/sceenShot1.JPG
new file mode 100644
index 0000000..6ba45fd
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/sceenShot1.JPG
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/docs/screenShot2.JPG b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/screenShot2.JPG
new file mode 100644
index 0000000..40d4a52
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/screenShot2.JPG
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/docs/screenShot3.JPG b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/screenShot3.JPG
new file mode 100644
index 0000000..84bcbb4
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/docs/screenShot3.JPG
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/run.bat b/rampart_1_1/modules/samples/deprecated/googlesearch/run.bat
new file mode 100644
index 0000000..89468fd
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/run.bat
@@ -0,0 +1,41 @@
+@echo off

+rem ---------------------------------------------------------------------------

+rem Start script for running the Google Search tool

+rem

+rem ---------------------------------------------------------------------------

+

+rem store the current directory

+set CURRENT_DIR=%cd%

+

+rem check the AXIS2_HOME environment variable

+if not "%AXIS2_HOME%" == "" goto gotHome

+

+rem guess the home. Jump two directories up and take that as the home

+cd ..

+cd ..

+set AXIS2_HOME=%cd%

+

+echo using Axis Home %AXIS2_HOME%

+

+:gotHome

+if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome

+echo The AXIS2_HOME environment variable seems not to point to the correct loaction!

+echo This environment variable is needed to run this program

+pause

+exit

+

+:okHome

+rem set the classes

+cd %CURRENT_DIR%

+

+setlocal EnableDelayedExpansion

+rem loop through the libs and add them to the class path

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;"%CURRENT_DIR%\googleSearch.jar"

+

+start javaw -cp %AXIS2_CLASS_PATH% -Daxis2.repo=%AXIS2_HOME% sample.google.search.AsynchronousClient

+

+endlocal

+

+:end
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/run.sh b/rampart_1_1/modules/samples/deprecated/googlesearch/run.sh
new file mode 100755
index 0000000..3c2fc4a
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/run.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+export AXIS2_HOME=../..
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:googleSearch.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+export AXIS2_CLASSPATH
+echo classpath: $AXIS2_CLASSPATH
+
+java -classpath $AXIS2_CLASSPATH -Daxis2.repo=$AXIS2_HOME  sample.google.search.AsynchronousClient
+
+
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/common/conf/key.properties b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/common/conf/key.properties
new file mode 100644
index 0000000..c7f1868
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/common/conf/key.properties
@@ -0,0 +1,10 @@
+###################################################################################################

+######################   Property file for the google sample ######################################

+###################################################################################################

+#License Key

+#Wed Jun 01 15:28:16 LKT 2005

+google.key=wzdxGcZQFHJ71w7IgCj5ddQGLmODsP9g

+#Google URL

+google.url=api.google.com

+#Google service name

+google.name=/search/beta2

diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/common/util/PropertyLoader.java b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/common/util/PropertyLoader.java
new file mode 100644
index 0000000..db935d9
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/common/util/PropertyLoader.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2004,2005 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 sample.google.common.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+public class PropertyLoader {
+
+    private static String googleKey;
+    private static String googleEndpointURL;
+    private static String googleEndpointServiceName;
+
+    static {
+        try {
+            Properties prop = new Properties();
+            Class clazz = Object.class;
+            InputStream stream = clazz.getResourceAsStream(
+                    "/sample/google/common/conf/key.properties");
+            prop.load(stream);
+
+            googleKey = prop.getProperty("google.key");
+            googleEndpointURL = prop.getProperty("google.url");
+            googleEndpointServiceName = prop.getProperty("google.name");
+
+        } catch (IOException e) {
+            System.exit(0);
+        }
+
+    }
+
+    public static String getGoogleKey() {
+        return googleKey;
+    }
+
+    public static String getGoogleEndpointURL() {
+        return googleEndpointURL;
+    }
+
+    public static String getGoogleEndpointServiceName() {
+        return googleEndpointServiceName;
+    }
+
+    public static void setGoogleKey(String googleKey) {
+        PropertyLoader.googleKey = googleKey;
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/AsynchronousClient.java b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/AsynchronousClient.java
new file mode 100644
index 0000000..994fbdc
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/AsynchronousClient.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2004,2005 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 sample.google.search;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.OutInAxisOperation;
+import sample.google.common.util.PropertyLoader;
+
+import javax.xml.namespace.QName;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+public class AsynchronousClient {
+
+    /**
+     * Query parameter
+     */
+    protected String search = "";
+
+    /**
+     * Query parameters sent with the last request
+     */
+    protected String prevSearch = "";
+
+    /**
+     * Have to increase and set the start index when asking for more results
+     */
+    protected int StartIndex = 0;
+
+    /**
+     * License key
+     */
+    protected String key;
+
+    /**
+     * maximum results per page
+     */
+    protected String maxResults = String.valueOf(10);
+
+
+    private GUIHandler gui;
+
+
+    public static void main(String[] args) {
+        new AsynchronousClient();
+    }
+
+    public AsynchronousClient() {
+
+        this.key = PropertyLoader.getGoogleKey();
+        LinkFollower page = new LinkFollower();
+        LinkFollower.showURL = false;
+        gui = new GUIHandler(this);
+        gui.buildFrame();
+
+        Thread linkThread = new Thread(page);
+        linkThread.start();
+        linkThread.run();
+    }
+
+
+    public synchronized void sendMsg() throws AxisFault {
+        search.trim();
+        prevSearch = search;
+        URL url = null;
+        try {
+            url = new URL("http", "api.google.com", "/search/beta2");
+//              url = new URL("http://127.0.0.1:8084/search/beta2");
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+            System.exit(0);
+        }
+
+        Options options = new Options();
+        options.setProperty(HTTPConstants.CHUNKED, Constants.VALUE_FALSE);
+        options.setTo(
+                new EndpointReference(url.toString()));
+
+        MessageContext requestContext = ClientUtil.getMessageContext(this);
+        try {
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            QName opName = new QName("urn:GoogleSearch", "doGoogleSearch");
+            AxisOperation opdesc = new OutInAxisOperation();
+            opdesc.setName(opName);
+            //   AxisOperation opdesc = new AxisOperation(new QName("viewVersion"));
+            ServiceClient serviceClient = new ServiceClient();
+            serviceClient.setOptions(options);
+            OperationClient opClient = serviceClient.createClient(ServiceClient.ANON_OUT_IN_OP);
+            opClient.addMessageContext(requestContext);
+            opClient.setCallback(new ClientCallbackHandler(this.gui));
+            opClient.execute(false);
+
+        } catch (AxisFault e1) {
+            e1.printStackTrace();
+        }
+    }
+
+    public String getSearch() {
+        return search;
+    }
+
+    public String getPrevSearch() {
+        return prevSearch;
+    }
+
+    public int getStartIndex() {
+        return StartIndex;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getMaxResults() {
+        return maxResults;
+    }
+
+
+    public void setSearch(String search) {
+        this.search = search;
+    }
+
+    public void setPrevSearch(String prevSearch) {
+        this.prevSearch = prevSearch;
+    }
+
+    public void setStartIndex(int startIndex) {
+        StartIndex = startIndex;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public void setMaxResults(String maxResults) {
+        this.maxResults = maxResults;
+    }
+
+
+}
+
+
+
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/ClientCallbackHandler.java b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/ClientCallbackHandler.java
new file mode 100644
index 0000000..64598c8
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/ClientCallbackHandler.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2004,2005 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 sample.google.search;
+
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+
+import java.util.Iterator;
+
+/**
+ * This class implements the onComplete method extended by call back
+ * receives the Response
+ * process the soap with OM to extract the data
+ * Find the <NavigationURL> element and get the text from it
+ */
+public class ClientCallbackHandler extends Callback {
+
+    /**
+     * HTML Header to desplay snippet text
+     */
+    private String beginHTML = "<HTML><HEAD><TITLE>Wow</TITLE></HEAD><BODY>";
+
+    /**
+     * HTML footer
+     */
+    private String endHTML = "</BODY></HTML>";
+
+    /**
+     * Store the texts read by NavigationURL of soap
+     */
+    private String snippet = beginHTML;
+
+    /**
+     * Store the URLs read by snippet element of soap
+     */
+    private String strURL;
+
+    /**
+     * Store texts temperaly
+     */
+    private String tempStr;
+
+
+    private GUIHandler handler;
+
+    public ClientCallbackHandler(GUIHandler handler) {
+        this.handler = handler;
+    }
+
+    /**
+     * method onComplete
+     *
+     * @param result
+     */
+
+    public void onComplete(AsyncResult result) {
+        extractDetails(result);
+    }
+
+    /**
+     * method extractDetails
+     * Go through the children of soap
+     * stores requres information in variables
+     * Call to desplay the results
+     *
+     * @param result
+     */
+    private void extractDetails(AsyncResult result) {
+        Iterator iterator, iterator2;
+        OMNode node;
+        SOAPBody body;
+        OMElement operation, elem;
+        SOAPEnvelope resEnvelope;
+        resEnvelope = result.getResponseEnvelope();
+        body = resEnvelope.getBody();
+        operation = body.getFirstElement();
+        if (body.hasFault()) {
+            snippet =
+                    snippet +
+                    "A Fault message received, Check your Licence key. Else you have reached the" +
+                    " daily limit of 1000 requests";
+        } else {
+            OMElement part = operation.getFirstElement();
+
+            iterator = part.getChildren();
+            while (iterator.hasNext()) {
+                node = (OMNode) iterator.next();
+                if (node.getType() == OMNode.ELEMENT_NODE) {
+                    elem = (OMElement) node;
+                    String str = elem.getLocalName();
+                    //System.out.println(str);
+                    if (str.equals("resultElements")) {
+                        //System.out.println("Got the Result Elements");
+                        Iterator iterator0 = elem.getChildren();
+                        while (iterator0.hasNext()) {
+                            node = (OMNode) iterator0.next();
+                            if (node.getType() == OMNode.ELEMENT_NODE) {
+                                elem = (OMElement) node;
+                                if (elem.getLocalName().equals("item")) {
+                                    iterator2 = elem.getChildren();
+                                    while (iterator2.hasNext()) {
+                                        node = (OMNode) iterator2.next();
+                                        if (node.getType() ==
+                                                OMNode.ELEMENT_NODE) {
+                                            elem = (OMElement) node;
+                                            String str3 = elem.getLocalName();
+                                            if (elem.getLocalName().equals(
+                                                    "snippet")) {
+                                                //System.out.println("Got the snippet");
+                                                tempStr = elem.getText();
+
+                                                //System.out.println(tempStr);
+                                                snippet = snippet + tempStr;
+                                            }
+
+                                            if (elem.getLocalName().equals(
+                                                    "URL")) {
+                                                //System.out.println("Got the URL");
+                                                strURL = elem.getText();
+                                            }
+                                        }
+                                    }
+                                }
+                                snippet = snippet + "<br> URL:-<a href=" +
+                                        strURL +
+                                        ">" +
+                                        strURL +
+                                        "</a\n\n> <br><br>";
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        snippet = snippet + endHTML;
+        this.handler.showResults(snippet);
+    }
+
+    public void onError(Exception e) {
+        e.printStackTrace();
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/ClientUtil.java b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/ClientUtil.java
new file mode 100644
index 0000000..d5d3084
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/ClientUtil.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2004,2005 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 sample.google.search;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+
+/**
+ * Builds the MessageContext as called by AsynchronousClient
+ * First build the request soap envilope
+ * then build a messageContext and soap envelope is attached to it
+ */
+public class ClientUtil {
+
+    /** Soap request is included to this and pass it to sendMsg() in AsynchronousClient */
+    //static MessageContext msgContext;
+
+    /**
+     * method getMessageContext
+     *
+     * @return msgContext
+     */
+    public static MessageContext getMessageContext(
+            AsynchronousClient asyncClient)
+            throws AxisFault {
+        OMNamespace defNs;
+        OMElement operation;
+        MessageContext msgContext = null;
+
+        String str_ST_index = Integer.toString(asyncClient.getStartIndex());
+
+        defNs = OMAbstractFactory.getSOAP11Factory().createOMNamespace("", "");
+        SOAPFactory omFactory = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope envelope = omFactory.getDefaultEnvelope();
+        envelope.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/",
+                "soapenv");
+        envelope.declareNamespace("http://schemas.xmlsoap.org/soap/encoding/",
+                "SOAP-ENC");
+        envelope.declareNamespace("http://www.w3.org/2001/XMLSchema-instance",
+                "xsi");
+        envelope.declareNamespace("http://www.w3.org/2001/XMLSchema",
+                "xsd");
+
+        operation =
+                omFactory.createOMElement("doGoogleSearch",
+                        "urn:GoogleSearch",
+                        "ns1");
+        envelope.getBody().addChild(operation);
+        operation.addAttribute("soapenv:encordingStyle",
+                "http://schemas.xmlsoap.org/soap/encoding/", null);
+
+        operation.addChild(
+                getOMElement(omFactory,
+                        defNs,
+                        "key",
+                        "xsd:string",
+                        asyncClient.getKey()));
+        operation.addChild(
+                getOMElement(omFactory,
+                        defNs,
+                        "q",
+                        "xsd:string",
+                        asyncClient.getSearch()));
+        operation.addChild(
+                getOMElement(omFactory,
+                        defNs,
+                        "start",
+                        "xsd:int",
+                        str_ST_index));
+        operation.addChild(
+                getOMElement(omFactory,
+                        defNs,
+                        "maxResults",
+                        "xsd:int",
+                        asyncClient.getMaxResults()));
+        operation.addChild(
+                getOMElement(omFactory,
+                        defNs,
+                        "filter",
+                        "xsd:boolean",
+                        "true"));
+        operation.addChild(
+                getOMElement(omFactory, defNs, "restrict", "xsd:string", ""));
+        operation.addChild(
+                getOMElement(omFactory,
+                        defNs,
+                        "safeSearch",
+                        "xsd:boolean",
+                        "false"));
+        operation.addChild(
+                getOMElement(omFactory, defNs, "lr", "xsd:string", ""));
+        operation.addChild(
+                getOMElement(omFactory, defNs, "ie", "xsd:string", "latin1"));
+        operation.addChild(
+                getOMElement(omFactory, defNs, "oe", "xsd:string", "latin1"));
+
+        msgContext = new MessageContext();
+        msgContext.setEnvelope(envelope);
+        return msgContext;
+    }
+
+    private static OMElement getOMElement(OMFactory factory, OMNamespace ns, String elementName,
+                                          String type, String text) {
+        OMElement part = factory.createOMElement(elementName, ns);
+        part.addAttribute("xsi:type", type, null);
+        part.addChild(factory.createOMText(text));
+        return part;
+    }
+}
+
+
+
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/GUIHandler.java b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/GUIHandler.java
new file mode 100644
index 0000000..ebc17b7
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/GUIHandler.java
@@ -0,0 +1,353 @@
+/*
+ * Copyright 2004,2005 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 sample.google.search;
+
+import org.apache.axis2.AxisFault;
+import sample.google.common.util.PropertyLoader;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Build and desplay the GUI
+ * implements both KeyListner and ActionListner
+ * KeyListner is used to detect space or Enter key at textField
+ * ActionListner is used for menu cammands
+ * Thread is run to isolate the GUI from internal actions
+ */
+public class GUIHandler {
+    private static final String HELP_FILE_NAME = "/docs/GoogleSearchHelp.html";
+    /**
+     * Results are desplayed here
+     */
+    private JEditorPane textEditorPane;
+
+    /**
+     * Query parameters typed here
+     */
+    private JTextField textBox;
+
+    /**
+     * Buttons clicked to view more results and backButton
+     */
+    private JButton nextButton
+    ,
+    backButton;
+
+    /**
+     * Menu commands to set the key and maximum no of results per page
+     */
+    private JMenuItem keyMenuItem
+    ,
+    maxResultsMenuItem;
+    private AsynchronousClient asyncClient;
+
+    public GUIHandler(AsynchronousClient asyncClient) {
+        this.asyncClient = asyncClient;
+    }
+
+    /**
+     * Build the GUI using awt and swing components
+     */
+
+
+    public void buildFrame() {
+        JFrame frame;
+        SpringLayout layout;
+        JMenuBar menuBar;
+        JMenu settingsMenu;
+        Spring xSpring, ySpring, hSpring, wSpring;
+
+        frame = new JFrame("Google Search");
+        frame.setResizable(false);
+        layout = new SpringLayout();
+        Container pane = frame.getContentPane();
+        pane.setLayout(layout);
+
+        menuBar = new JMenuBar();
+        frame.setJMenuBar(menuBar);
+        settingsMenu = new JMenu("Settings"); // Create Set menu
+        menuBar.add(settingsMenu);
+
+        keyMenuItem = new JMenuItem("Key");
+        keyMenuItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setKey();
+            }
+        });
+        settingsMenu.add(keyMenuItem);
+
+        maxResultsMenuItem = new JMenuItem("Result per page");
+        maxResultsMenuItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setMaxResults();
+            }
+        });
+        settingsMenu.add(maxResultsMenuItem);
+        maxResultsMenuItem.setEnabled(true);
+        maxResultsMenuItem.setToolTipText(
+                "You can set the maximum number of results per page, Maximum allowable is 10");
+
+        JMenu helpMenu = new JMenu("Help");
+        JMenuItem mnuItemHelp = new JMenuItem("Show Help");
+        helpMenu.add(mnuItemHelp);
+        mnuItemHelp.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                showHelp();
+            }
+        });
+        menuBar.add(helpMenu);
+
+        Toolkit theKit = frame.getToolkit(); // Get the window toolkit
+        Dimension wndSize = theKit.getScreenSize(); // Get screen size
+        // Set the position to screen center & size to half screen size
+        frame.setBounds(wndSize.width / 6, wndSize.height / 10, // Position
+                wndSize.width * 3 / 5, wndSize.height * 3 / 4); // Size
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+        nextButton = new JButton("More Results");
+        pane.add(nextButton);
+        nextButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                processNextButton();
+            }
+        });
+
+        backButton = new JButton("Previous Page");
+        backButton.setVisible(false);
+        pane.add(backButton);
+        backButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                processBackButton();
+            }
+        });
+
+        textEditorPane = new JEditorPane();
+        textEditorPane.setEditable(false);
+        textEditorPane.setContentType("text/html");
+        textEditorPane.addHyperlinkListener(new LinkFollower());
+        JScrollPane scroll = new JScrollPane(textEditorPane, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+        pane.add(scroll);
+
+
+        textBox = new JTextField();
+        textBox.addKeyListener(new KeyListener() {
+            public void keyPressed(KeyEvent e) {
+            }
+
+            public void keyReleased(KeyEvent e) {
+            }
+
+            public void keyTyped(KeyEvent e) {
+                processKeyEvent(e.getKeyChar());
+            }
+        });
+
+        pane.add(textBox);
+
+        SpringLayout.Constraints textBoxConstraints = layout.getConstraints(
+                textBox);
+        xSpring = Spring.constant(0); // Spring we'll use for X
+        ySpring = Spring.constant(0); // Spring we'll use for Y
+        wSpring = Spring.constant(frame.getBounds().width - 8); // Spring we'll use for width
+        hSpring = Spring.constant(30); // Strut we?ll use for height
+        textBoxConstraints.setWidth(wSpring); // Set component width constraint
+        textBoxConstraints.setHeight(hSpring);
+        textBoxConstraints.setX(xSpring); // Set the WEST edge constraint
+        textBoxConstraints.setY(ySpring);
+
+        SpringLayout.Constraints scrollConstraints = layout.getConstraints(
+                scroll);
+        xSpring = Spring.constant(0); // Spring we'll use for X
+        ySpring = Spring.constant(30); // Spring we'll use for Y
+        wSpring = Spring.constant(frame.getBounds().width - 8); // Spring we'll use for width
+        hSpring = Spring.constant(450); // Strut we'll use for height
+        scrollConstraints.setWidth(wSpring); // Set component width constraint
+        scrollConstraints.setHeight(hSpring);
+        scrollConstraints.setX(xSpring); // Set the WEST edge constraint
+        scrollConstraints.setY(ySpring); // Set the NORTH edge constraint
+
+        SpringLayout.Constraints backBtnConstraints = layout.getConstraints(
+                backButton);
+        xSpring = Spring.constant(50); // Spring we'll use for X
+        ySpring = Spring.constant(480); // Spring we'll use for Y
+        wSpring = Spring.constant(200); // Spring we'll use for width
+        hSpring = Spring.constant(30); // Strut we'll use for height
+        backBtnConstraints.setWidth(wSpring); // Set component width constraint
+        backBtnConstraints.setHeight(hSpring);
+        backBtnConstraints.setX(xSpring); // Set the WEST edge constraint
+        backBtnConstraints.setY(ySpring);
+
+        SpringLayout.Constraints nextBtnConstraints = layout.getConstraints(
+                nextButton);
+        xSpring = Spring.constant(250); // Spring we?ll use for X
+        ySpring = Spring.constant(480); // Spring we?ll use for Y
+        wSpring = Spring.constant(200); // Spring we?ll use for width
+        hSpring = Spring.constant(30); // Strut we?ll use for height
+        nextBtnConstraints.setWidth(wSpring); // Set component width constraint
+        nextBtnConstraints.setHeight(hSpring);
+        nextBtnConstraints.setX(xSpring); // Set the WEST edge constraint
+        nextBtnConstraints.setY(ySpring);
+        frame.setVisible(true);
+    }
+
+    /**
+     * method showResults
+     * desplay results by ClientCallbackHandler
+     *
+     * @param results
+     */
+    protected void showResults(String results) {
+        textEditorPane.setText(results);
+    }
+
+    /**
+     * method setKey
+     * Get the key from user via an inputDialog and
+     * store it in the properties file
+     */
+    protected void setKey() {
+        String key = JOptionPane.showInputDialog(null,
+                "Set the Google Key",
+                PropertyLoader.getGoogleKey());
+        if (key != null && key.trim().length() != 0) {
+            PropertyLoader.setGoogleKey(key);
+        }
+    }
+
+    private void processBackButton() {
+        if (asyncClient.getStartIndex() != 0) {
+            int i = Integer.parseInt(asyncClient.getMaxResults());
+            asyncClient.setStartIndex(asyncClient.getStartIndex() - i);
+            if (asyncClient.getStartIndex() == 0) {
+                backButton.setVisible(false);
+            }
+            doSearch();
+        }
+    }
+
+    /**
+     * method keyTyped
+     * fires when user typing in TextField textBox
+     * act when detects space and Enter key only
+     *
+     * @param event
+     */
+    private void processKeyEvent(int event) {
+        if (event == KeyEvent.VK_SPACE || event == KeyEvent.VK_ENTER) {
+            asyncClient.setSearch(textBox.getText().trim());
+            if (!asyncClient.getPrevSearch().equals(asyncClient.getSearch())) {
+                doSearch();
+            }
+        }
+    }
+
+    /**
+     * method showHelp
+     */
+    private void showHelp() {
+
+        JFrame frame = new JFrame();
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        frame.setLocation(screenSize.width / 5,
+                screenSize.height / 5);
+        frame.setSize(screenSize.width / 2, screenSize.height / 2);
+
+        BorderLayout layout = new BorderLayout();
+
+        JScrollPane jsp;
+        JEditorPane jep;
+
+        jep = new JEditorPane();
+        jep.addHyperlinkListener(new LinkFollower());
+        jep.setEditable(false);
+        jep.setContentType("text/html");
+
+        jsp = new JScrollPane(jep);
+
+        Container contentPane = frame.getContentPane();
+        contentPane.setLayout(layout);
+        contentPane.add(jsp, BorderLayout.CENTER);
+        String helpDoc = System.getProperty("user.dir") + HELP_FILE_NAME;
+
+        try {
+            jep.setPage(new File(helpDoc).toURL());
+        } catch (IOException e) {
+            JOptionPane.showMessageDialog(null,
+                    "Help file not detected",
+                    "Help file error",
+                    JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+        frame.setVisible(true);
+    }
+
+
+    private void processNextButton() {
+        int i = Integer.parseInt(asyncClient.getMaxResults());
+        asyncClient.setStartIndex(asyncClient.getStartIndex() + i);
+        backButton.setVisible(true);
+        doSearch();
+    }
+
+    private void setMaxResults() {
+        String maxResults =
+                JOptionPane.showInputDialog(null,
+                        "Enter the number of maximum results per page (Maximum allowed is 10)",
+                        asyncClient.getMaxResults());
+        if (maxResults != null) {
+            try {
+                asyncClient.setMaxResults(Integer.toString(Integer.parseInt(maxResults)));
+                asyncClient.setPrevSearch("");
+            } catch (NumberFormatException e) {
+                return;
+            }
+        }
+    }
+
+
+    private void doSearch() {
+        new ClientThread().run();
+
+    }
+
+    private class ClientThread implements Runnable {
+        /**
+         * method run
+         * check the flag doSearch
+         * if it's set, call sendMsg method
+         */
+        public void run() {
+            if (!asyncClient.getSearch().equals(asyncClient.getPrevSearch())) {
+                asyncClient.setStartIndex(0);
+                // return;
+            }
+            try {
+                asyncClient.sendMsg();
+            } catch (AxisFault axisFault) {
+                axisFault.printStackTrace();
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/LinkFollower.java b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/LinkFollower.java
new file mode 100644
index 0000000..272fe2e
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/googlesearch/src/sample/google/search/LinkFollower.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2004,2005 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 sample.google.search;
+
+import javax.swing.*;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
+import java.awt.*;
+import java.io.IOException;
+
+/**
+ * class LinkFollower
+ * Listen to HyperLink actions and Open Simple web browser to open URLs
+ */
+class LinkFollower implements HyperlinkListener, Runnable {
+
+
+    /**
+     * Flag to used by the thread, If set, thread opens a URL in the Simple Web Browser
+     */
+    protected static boolean showURL = false;
+
+    /**
+     * Used as the root of the Simple web Browser, only one instance is needed
+     */
+    private static JEditorPane jep;
+
+    /**
+     * Used for the Simple web Browser, only one instance is needed
+     */
+    private static JFrame f;
+    private static JPanel contentPane;
+    private static JScrollPane scrollPane;
+
+    /**
+     * Flag to prevent duplicating Building of the Simple web browser Window
+     */
+    private static boolean builded = false;
+
+    /**
+     * Keep the URL of the last Hyperlink click event
+     */
+    private static String currentURL;
+
+    /**
+     * Constructor
+     */
+    public LinkFollower() {
+
+    }
+
+    /**
+     * method hyperlinkUpdate
+     * The action is to show the page of the URL the user clicked on.
+     *
+     * @param evt the event. We only care when its type is ACTIVATED.
+     */
+    public void hyperlinkUpdate(HyperlinkEvent evt) {
+        if (evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+
+            /** Window is not built yet, so build it */
+
+            if (!builded) {
+                buildURLWindaw();
+            }
+            try {
+                currentURL = evt.getURL().toString();
+                //System.out.println("Going to " + currentURL);
+                showURL = true;
+
+            } catch (Exception e) {
+            }
+        }
+    }
+
+    /**
+     * method setPage
+     * Open the URL in the simple web browser window by replacing the previous one
+     */
+    protected void setPage() {
+        jep.setEditable(false);
+        jep.addHyperlinkListener(new LinkFollower());
+        f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+
+        contentPane.setLayout(new BorderLayout());
+        contentPane.setPreferredSize(new Dimension(400, 100));
+        contentPane.add(scrollPane, BorderLayout.CENTER);
+
+        f.pack();
+        f.setSize(640, 360);
+        f.setVisible(true);
+        try {
+            jep.setPage(currentURL);
+            //jep.setPage("http://www.google.com/");
+        } catch (IOException e) {
+            System.err.println(e);
+        }
+    }
+
+    /**
+     * method buildURLWindow
+     * Build the Simple Web Broser but not displayed
+     */
+    private void buildURLWindaw() {
+        builded = true;
+        jep = new JEditorPane();
+        f = new JFrame("Simple Web Browser");
+        contentPane = (JPanel) f.getContentPane();
+        scrollPane = new JScrollPane(jep);
+    }
+
+    /**
+     * method run
+     * check the showURL flag and if set, open the url in simple Web Browser
+     */
+    public void run() {
+        while (true) {
+            if (showURL) {
+                this.setPage();
+                showURL = false;
+            }
+            try {
+                Thread.sleep(100);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}
+
diff --git a/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/GroovyRcv.groovy b/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/GroovyRcv.groovy
new file mode 100644
index 0000000..32a00c6
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/GroovyRcv.groovy
@@ -0,0 +1,58 @@
+import java.io.*;

+import javax.xml.parsers.DocumentBuilderFactory;

+import org.apache.xpath.XPathAPI;

+import groovy.xml.*

+import java.io.StringWriter;

+import javax.xml.parsers.DocumentBuilder;

+import org.w3c.dom.*;

+import org.xml.sax.*;

+

+class GroovyRcv{

+

+	public static void main(args){

+        String value = "<ADDRESS><DET><NAME>Ponnampalam Thayaparan</NAME> <OCC>Student</OCC><ADD>3-2/1,Hudson Road,Colombo-03</ADD><GENDER>Male</GENDER></DET><DET><NAME>Eranka Samaraweera</NAME><OCC>Student</OCC><ADD>Martara</ADD><GENDER>Male</GENDER></DET><DET><NAME>Sriskantharaja Ahilan</NAME><OCC>Student</OCC><ADD>Trincomalee</ADD><GENDER>Male</GENDER></DET></ADDRESS>"

+		println new GroovyRcv().echo(new StringReader(value))

+    }

+

+	Object echo(StringReader arg){

+

+	 List addNodeValues = []

+	 List nameNodeValues = []

+	 int countEmp = -1

+

+	 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance()

+	 DocumentBuilder builder = factory.newDocumentBuilder()

+	 Document doc = builder.parse(new InputSource(arg))

+

+	 NodeList detNodes = XPathAPI.selectNodeList(doc,"ADDRESS/DET")

+	 for(detNodeIndex in 0..(detNodes.getLength()-1)) {

+		 NodeList nameNodes = XPathAPI.selectNodeList(detNodes.item(detNodeIndex),"NAME")

+	

+		 for(nameNodeIndex in 0..(nameNodes.getLength()-1)) {

+			 Node nameNodeValue = nameNodes.item( nameNodeIndex ).getFirstChild()

+			 nameNodeValues += [nameNodeValue]

+		 }

+	

+		 NodeList addNodes = XPathAPI.selectNodeList(detNodes.item(detNodeIndex),"ADD")

+		 for(addNodeIndex in 0..(addNodes.getLength()-1)) {

+			 Node addNodeValue = addNodes.item(addNodeIndex).getFirstChild()

+			 addNodeValues += [addNodeValue]

+		 }

+		 countEmp++

+	 }//for

+

+	StringWriter writer = new StringWriter()

+    MarkupBuilder xmlBuilder = new MarkupBuilder(writer)

+	xmlBuilder.person(){

+	 	for(x in 0..countEmp){

+			employee(){

+			name(nameNodeValues[x])

+			address(addNodeValues[x])

+			tdate(new java.util.Date())

+	 	}

+	  }

+	 }

+

+   return writer

+  }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/GroovyReceiver.java b/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/GroovyReceiver.java
new file mode 100644
index 0000000..15241bc
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/GroovyReceiver.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2004,2005 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 sample.groovy;
+
+import groovy.lang.GroovyClassLoader;
+import groovy.lang.GroovyObject;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+public class GroovyReceiver
+        extends AbstractInOutSyncMessageReceiver
+        implements MessageReceiver {
+
+    public void invokeBusinessLogic(
+            MessageContext inMessage,
+            MessageContext outMessage)
+            throws AxisFault {
+        try {
+            AxisService service =
+                    inMessage
+                            .getOperationContext()
+                            .getServiceContext()
+                            .getAxisService();
+            Parameter implInfoParam = service.getParameter("GroovyClass");
+            if (implInfoParam == null) {
+                throw new AxisFault(
+                        Messages.getMessage("paramIsNotSpecified", "ServiceClass"));
+            }
+            InputStream groovyFileStream =
+                    service.getClassLoader().getResourceAsStream(
+                            implInfoParam.getValue().toString());
+
+            if (groovyFileStream == null) {
+                throw new AxisFault(
+                        Messages.getMessage("groovyUnableToLoad", implInfoParam.getValue().toString()));
+            }
+
+            //look at the method name. if available this should be a groovy method
+            AxisOperation op =
+                    inMessage.getOperationContext().getAxisOperation();
+            if (op == null) {
+                throw new AxisFault(
+                        Messages.getMessage("notFound", "Operation"));
+            }
+            String methodName = op.getName().getLocalPart();
+            OMElement firstChild =
+                    (OMElement) inMessage.getEnvelope().getBody().getFirstOMChild();
+            inMessage.getEnvelope().build();
+            StringWriter writer = new StringWriter();
+            firstChild.build();
+            firstChild.serialize(writer);
+            writer.flush();
+            String value = writer.toString();
+            if (value != null) {
+                GroovyClassLoader loader = new GroovyClassLoader();
+                Class groovyClass = loader.parseClass(groovyFileStream);
+                GroovyObject groovyObject =
+                        (GroovyObject) groovyClass.newInstance();
+                Object[] arg = {new StringReader(value)};
+                Object obj = groovyObject.invokeMethod(methodName, arg);
+                if (obj == null) {
+                    throw new AxisFault(Messages.getMessage("groovyNoanswer"));
+                }
+
+                SOAPFactory fac ;
+                if (inMessage.isSOAP11()) {
+                    fac = OMAbstractFactory.getSOAP11Factory();
+                } else {
+                    fac = OMAbstractFactory.getSOAP12Factory();
+                }
+                SOAPEnvelope envelope = fac.getDefaultEnvelope();
+                OMNamespace ns =
+                        fac.createOMNamespace("http://soapenc/", "res");
+                OMElement responseElement =
+                        fac.createOMElement(methodName + "Response", ns);
+                String outMessageString = obj.toString();
+                // System.out.println("outMessageString = " + outMessageString);
+                // responseElement.setText(outMessageString);
+                responseElement.addChild(getpayLoad(outMessageString));
+                envelope.getBody().addChild(responseElement);
+                outMessage.setEnvelope(envelope);
+            }
+        } catch (Exception e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    private OMElement getpayLoad(String str) throws XMLStreamException {
+        XMLStreamReader xmlReader =
+                StAXUtils.createXMLStreamReader(
+                        new ByteArrayInputStream(str.getBytes()));
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+
+        StAXOMBuilder staxOMBuilder =
+                new StAXOMBuilder(fac, xmlReader);
+        return staxOMBuilder.getDocumentElement();
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/META-INF/services.xml b/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/META-INF/services.xml
new file mode 100644
index 0000000..903181f
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/groovy/src/sample/groovy/META-INF/services.xml
@@ -0,0 +1,12 @@
+<service name="GroovyService">
+    <description>
+        This is Groovy service , what this really does is take the incoming SOAP message
+        and hand that over to Groovy class and which process the message and return a SOAP
+        message back to MessageReceiver
+    </description>
+    <parameter name="GroovyClass" locked="false">GroovyRcv.groovy</parameter>
+
+    <operation name="echo">
+        <messageReceiver class="sample.groovy.GroovyReceiver"/>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/README.txt b/rampart_1_1/modules/samples/deprecated/mtomsample/README.txt
new file mode 100644
index 0000000..f641e2a
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/README.txt
@@ -0,0 +1,56 @@
+Sample for MTOM
+===============
+
+Overview:
+---------
+
+This sample demonstrates the capabilities and power of MTOM & SwA support of 
+AXIS2. In this sample the user can send multiple files to the MTOM sample 
+service, which will save them on the server or echo them depending on the 
+selected operation (i.e. send or send & receive). Echoing would result the files
+to be saved on the client side.
+
+The option of client side file caching can be used when echoing a larger amount 
+of data which could result in memory overflows. 
+
+
+
+Running the Sample:
+-------------------
+1. Use <ant service> command in the AXIS2_DIST/sample/mtomsample/ to build the service.
+2. Drop the mtomSample.aar service to the AXIS2_DIST/repository/services.
+3. run the AXIS2_DIST/bin/axis2server.{sh.bat} to start the standalone axis2 server. 
+(Alternatively you can drop the sample to the services directory of a Axis2 server
+running in a servlet container)
+4. Use <ant client> to build and run the client.
+
+
+UI Configuration:
+-----------------
+1.  First browse a file or type the absolute path of a file that you want to 
+transmit. Then click "Add".  Add any number of files as you like.
+
+2.  Give the desired location that you want the files to be saved, for example 
+[/usr/temp/]. In the upload scenario(send) it must be a directory in the machine 
+which runs the Axis2 server. In echo scenario(send receive) it must be a 
+directory in the client machine.
+
+3. The default end point reference is given, assuming you are deploying the 
+mtomSample service in the same machine. You can change it according to your host.
+
+3.  Select the transfer method either as MTOM or as SOAP with attachments. 
+Select the operation as either to send or send & receive.
+
+4.  Client side File caching is enabled only in the send & receive operation. 
+Enter a threshold value in bytes so that files larger than this will be cached. 
+Files will be cached in the path given in the cache folder text box. This is 
+a must if you are planning to echo large attachments. 
+
+5.  Pressing "Execute" will perform the intended operation under given 
+configurations. On success a message box will appear informing the number of 
+files saved.
+
+
+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble 
+running the sample.
+
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/build.xml b/rampart_1_1/modules/samples/deprecated/mtomsample/build.xml
new file mode 100644
index 0000000..f5df2c5
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/build.xml
@@ -0,0 +1,45 @@
+<project name="FileTransferSample" default="service">
+	<property environment="env" />
+	<property name="axis2.home" value="../../" />
+	<property name="axis2.repo" value="${axis2.home}/repository" />
+	<property name="build.dir" value="build" />
+	<property name="client.classes.dir" value="${build.dir}/classes" />
+	<path id="axis.classpath">
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+		<pathelement location="build/mtomSampleClient.jar" />
+	</path>
+
+	<target name="service" depends="compile">
+		<jar destfile="${build.dir}/mtomSample.aar">
+			<fileset dir="src/sample/mtom/filetransfer/service/">
+				<include name="META-INF/services.xml" />
+			</fileset>
+			<fileset dir="${build.dir}/classes">
+				<include name="sample/mtom/filetransfer/service/**/*.class" />
+			</fileset>
+		</jar>
+	</target>
+
+	<target name="compile">
+		<mkdir dir="${client.classes.dir}" />
+		<!-- Compile client -->
+		<javac srcdir="src" destdir="${client.classes.dir}">
+			<classpath refid="axis.classpath" />
+		</javac>
+	</target>
+	<target name="client" depends="compile">
+		<jar destfile="${build.dir}/mtomSampleClient.jar">
+			<fileset dir="${build.dir}/classes">
+				<include name="sample/mtom/filetransfer/client/**/*.class" />
+			</fileset>
+		</jar>
+		<java classname="sample.mtom.filetransfer.client.MTOMClient" classpathref="axis.classpath" fork="true">
+			<jvmarg value="-Daxis2.repo=${axis2.repo}" />
+		</java>
+	</target>
+	<target name="clean">
+		<delete dir="build" />
+	</target>
+</project>
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/run.bat b/rampart_1_1/modules/samples/deprecated/mtomsample/run.bat
new file mode 100644
index 0000000..d082ca4
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/run.bat
@@ -0,0 +1,33 @@
+@echo of
+rem ---------------------------------------------------------------------------
+rem Start script for running the MTOM Image Transfer Service
+rem
+rem ---------------------------------------------------------------------------
+rem store the current directory
+set CURRENT_DIR=%cd%
+rem check the AXIS2_HOME environment variable
+if not "%AXIS2_HOME%" == "" goto gotHome
+rem guess the home. Jump two directories up and take that as the home
+cd ..
+cd ..
+set AXIS2_HOME=%cd%
+
+:gotHome
+if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome
+echo The AXIS2_HOME environment variable seems not to point to the correct location!
+echo This environment variable is needed to run this program
+pause
+exit
+:okHome
+rem set the classes
+cd %CURRENT_DIR%
+
+setlocal EnableDelayedExpansion
+rem loop through the libs and add them to the class path
+set AXIS2_CLASS_PATH=%AXIS2_HOME%
+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c
+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;"%CURRENT_DIR%\mtomClient.jar"
+
+start javaw -cp %AXIS2_CLASS_PATH% -Daxis2.repo=%AXIS2_HOME% sample.mtom.filetransfer.client.MTOMClient
+endlocal
+:end
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/run.sh b/rampart_1_1/modules/samples/deprecated/mtomsample/run.sh
new file mode 100644
index 0000000..7622457
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/run.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+export AXIS2_HOME=../..
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:mtomClient.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+export AXIS2_CLASSPATH
+echo classpath: $AXIS2_CLASSPATH
+
+java -classpath $AXIS2_CLASSPATH -Daxis2.repo=$AXIS2_HOME sample.mtom.filetransfer.client.MTOMClient &
+
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/MTOMClient.java b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/MTOMClient.java
new file mode 100755
index 0000000..57b54cf
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/MTOMClient.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2004,2005 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 sample.mtom.filetransfer.client;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class MTOMClient extends JFrame {
+
+    public MTOMClient(String title) throws HeadlessException {
+        super(title);
+
+        this.getContentPane().add(new UserInterface(this));
+        this.setVisible(true);
+    }
+
+    public static void main(String[] args) {
+        MTOMClient form = new MTOMClient("Axis2 Attachment Sample Client");
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        int left = (screenSize.width - UserInterface.WIDTH) / 2;
+        int top = (screenSize.height - UserInterface.HEIGHT) / 2;
+        form.setLocation(left, top);
+        form.setSize(UserInterface.WIDTH, UserInterface.HEIGHT);
+        form.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+        form.setVisible(true);
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/MTOMClientModel.java b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/MTOMClientModel.java
new file mode 100755
index 0000000..e5c9689
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/MTOMClientModel.java
@@ -0,0 +1,374 @@
+/*
+ * Copyright 2004,2005 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 sample.mtom.filetransfer.client;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.RandomAccessFile;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+
+public class MTOMClientModel {
+    private ArrayList fileList = null;
+
+    private String cacheFolder;
+
+    private int cacheThreshold;
+
+    private EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/mtomSample");
+
+    public MTOMClientModel() {
+
+    }
+
+    /**
+     * @param cacheThreshold Threshold value in bytes
+     */
+    public void setCacheThreshold(int cacheThreshold) {
+        this.cacheThreshold = cacheThreshold;
+    }
+
+    /**
+     * @param cacheFolder Absolute path of the cache folder
+     */
+    public void setCacheFolder(String cacheFolder) {
+        this.cacheFolder = cacheFolder;
+    }
+
+    /**
+     * @param folderName Absolute path of the destination folder
+     * @param operation  Name of the appropriate operation on the server
+     * @return The payload
+     * @throws Exception
+     */
+    private OMElement buildPayloadForMTOM(String folderName, String operation) throws Exception {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+
+        OMElement data = fac.createOMElement(operation, omNs);
+        OMElement folder = fac.createOMElement("folderName", omNs);
+        if (folderName != null) {
+            folder.setText(folderName);
+        }
+        data.addChild(folder);
+
+        OMElement files = fac.createOMElement("files", omNs);
+        data.addChild(files);
+
+        DataHandler dataHandler;
+
+        for (int i = 0; i < fileList.size(); i++) {
+            OMElement file = fac.createOMElement("file" + (i + 1), omNs);
+            file.addAttribute(fac.createOMAttribute("type", omNs, ((File)fileList.get(i)).getName()));
+            FileDataSource dataSource = new FileDataSource((File)fileList.get(i));
+            dataHandler = new DataHandler(dataSource);
+            OMText textData = fac.createOMText(dataHandler, true);
+            file.addChild(textData);
+            files.addChild(file);
+        }
+        return data;
+
+    }
+
+    /**
+     * @param folderName Absolute path of the destination folder
+     * @param operation  Name of the appropriate operation on the server
+     * @return The message context
+     * @throws Exception
+     */
+    private MessageContext createMessageContextForSwA(String folderName, String operation) throws Exception {
+
+        MessageContext mc = new MessageContext();
+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+        SOAPEnvelope soapEnvelope = fac.createSOAPEnvelope();
+
+        OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+        OMElement data = fac.createOMElement(operation, omNs);
+        OMElement folder = fac.createOMElement("folderName", omNs);
+        if (folderName != null) {
+            folder.setText(folderName);
+        }
+        data.addChild(folder);
+        OMElement files = fac.createOMElement("files", omNs);
+        data.addChild(files);
+
+        DataHandler dataHandler;
+        for (int i = 0; i < fileList.size(); i++) {
+            OMElement file = fac.createOMElement("file" + (i + 1), omNs);
+            file.addAttribute(fac.createOMAttribute("type", omNs,((File)fileList.get(i)).getName()));
+            FileDataSource dataSource = new FileDataSource((File)fileList.get(i));
+            dataHandler = new DataHandler(dataSource);
+            String contentID = mc.addAttachment(dataHandler);
+
+            file.setText(contentID);
+            files.addChild(file);
+        }
+        SOAPBody body = fac.createSOAPBody(soapEnvelope);
+        body.addChild(data);
+        mc.setEnvelope(soapEnvelope);
+        return mc;
+
+    }
+
+    /**
+     * @param folderName Absolute path of the destination folder
+     * @return The response from the server
+     * @throws Exception
+     */
+    public OMElement sendFilesUsingSwA(String folderName) throws Exception {
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+
+        ServiceClient sender = new ServiceClient(null, null);
+        sender.setOptions(options);
+        OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP);
+
+        MessageContext mc = createMessageContextForSwA(folderName, "uploadFileUsingSwA");
+        mepClient.addMessageContext(mc);
+        mepClient.execute(true);
+        MessageContext response = mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        return (OMElement) (response.getEnvelope().getBody().getChildren().next());
+    }
+
+    /**
+     * @param folderName Absolute path of the destination folder
+     * @return The response from the server
+     * @throws Exception
+     */
+    public OMElement sendFilesUsingMTOM(String folderName) throws Exception {
+
+        OMElement payload = buildPayloadForMTOM(folderName, "uploadFileUsingMTOM");
+        Options options = new Options();
+        options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        options.setTo(targetEPR);
+        // enabling MTOM in the client side
+        options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        ServiceClient sender = new ServiceClient();
+        sender.setOptions(options);
+        return sender.sendReceive(payload);
+    }
+
+    public OMElement sendReceiveUsingMTOM(String folderName, boolean cacheEnable) throws Exception {
+        OMElement payload = buildPayloadForMTOM(folderName, "sendReceiveUsingMTOM");
+        Options options = new Options();
+        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        options.setTo(targetEPR);
+
+        // enabling MTOM in the client side
+        options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        // enabling file caching in the client side
+        if (cacheEnable) {
+            options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,
+                    Constants.VALUE_TRUE);
+            options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, cacheFolder);
+            options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, ("" + cacheThreshold));
+        }
+        ServiceClient sender = new ServiceClient();
+        sender.setOptions(options);
+        OMElement response = sender.sendReceive(payload);
+        response.buildWithAttachments();
+        return handleMTOMResponse(response);
+    }
+
+    public OMElement sendReceiveUsingSwA(String folderName, boolean cacheEnable) throws Exception {
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+
+        // enabling file caching in the client side
+        if (cacheEnable) {
+            options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,
+                    Constants.VALUE_TRUE);
+            options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, cacheFolder);
+            options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, ("" + cacheThreshold));
+        }
+
+        ServiceClient sender = new ServiceClient(null, null);
+        sender.setOptions(options);
+        OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP);
+
+        MessageContext mc = createMessageContextForSwA(folderName, "sendReceiveUsingSwA");
+        mepClient.addMessageContext(mc);
+        mepClient.execute(true);
+        MessageContext response = mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        return handleSwAResponse(response);
+
+    }
+
+
+    private OMElement handleMTOMResponse(OMElement element) throws Exception {
+        OMElement folder;
+        OMElement files;
+        OMElement file;
+        String folderName;
+
+        Iterator itr = element.getChildElements();
+        folder = (OMElement) itr.next();
+        if (folder == null) throw new AxisFault("Destination Folder is null");
+        folderName = folder.getText();
+        File destFolder = new File(folderName);
+        if (!destFolder.exists()) {
+            destFolder.mkdirs();
+        }
+
+        files = (OMElement) itr.next();
+        itr = files.getChildElements();
+
+        int i = 1;
+        String fileName = null;
+        while (itr.hasNext()) {
+            file = (OMElement) itr.next();
+            if (file == null) throw new AxisFault("File " + i + " is null");
+            OMText binaryNode = (OMText) file.getFirstOMChild();
+            DataHandler dataHandler;
+            dataHandler = (DataHandler) binaryNode.getDataHandler();
+            fileName = createFileName(folderName, file, i);
+            writeData(dataHandler.getDataSource().getInputStream(), fileName);
+            i++;
+        }
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = fac.createOMNamespace("urn://fakenamespace", "ns");
+        OMElement ele = fac.createOMElement("handledResponse", ns);
+        ele.setText("" + (i - 1) + " Files(s) Saved Successfully on Client at " + folderName);
+        return ele;
+    }
+
+    private OMElement handleSwAResponse(MessageContext mc) throws Exception {
+        String folderName;
+        OMElement folder;
+        OMElement files;
+        OMElement file;
+
+        OMElement element = (OMElement) (mc.getEnvelope().getBody().getChildren().next());
+
+        Iterator itr = element.getChildElements();
+        folder = (OMElement) itr.next();
+        if (folder == null) throw new AxisFault("Destination Folder is null");
+        folderName = folder.getText();
+        File destFolder = new File(folderName);
+        if (!destFolder.exists()) {
+            destFolder.mkdirs();
+        }
+
+        files = (OMElement) itr.next();
+        itr = files.getChildElements();
+
+        Attachments attachment = mc.getAttachmentMap();
+
+        int i = 1;
+        String fileName;
+        DataHandler dataHandler;
+        while (itr.hasNext()) {
+            file = (OMElement) itr.next();
+            if (file == null) throw new AxisFault("File " + i + " is null");
+            dataHandler = attachment.getDataHandler(file.getText());
+            fileName = createFileName(folderName, file, i);
+            writeData(dataHandler.getDataSource().getInputStream(), fileName);
+            i++;
+        }
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = fac.createOMNamespace("urn://fakenamespace", "ns");
+        OMElement ele = fac.createOMElement("response", ns);
+        ele.setText("" + (i - 1) + " File(s) Saved Successfully on Client at " + folderName);
+        return ele;
+
+    }
+
+
+    /**
+     * @param inStrm   An input stream linking to the data
+     * @param fileName The absolute path of the file to which the data should be written
+     * @throws Exception
+     */
+    private void writeData(InputStream inStrm, String fileName) throws Exception {
+        RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
+        int b;
+        while (true) {
+            b = inStrm.read();
+            if (b == -1) {
+                break;
+            }
+            raf.writeByte(b);
+        }
+        inStrm.close();
+        raf.close();
+    }
+
+    private String createFileName(String folderName, OMElement file, int count) {
+        String fileName;
+        fileName = folderName + "/" + file.getAttributeValue(
+                new QName(file.getNamespace().getNamespaceURI(), "type"));
+
+        if (new File(fileName).exists()) {
+            fileName = folderName + "/copy(" + (count - 1) + ")" + file.getAttributeValue(
+                    new QName(file.getNamespace().getNamespaceURI(), "type"));
+            while (new File(fileName).exists()) {
+                count ++;
+                fileName = folderName + "/copy(" + (count - 1) + ")" + file.getAttributeValue(
+                        new QName(file.getNamespace().getNamespaceURI(), "type"));
+            }
+        }
+
+        return fileName;
+    }
+
+
+    public void setTargetEPR(String targetEPR) {
+        this.targetEPR = new EndpointReference(targetEPR);
+
+    }
+
+
+    public void setFileList(ArrayList fileList) {
+        this.fileList = fileList;
+    }
+}
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/UserInterface.java b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/UserInterface.java
new file mode 100755
index 0000000..d9d2b07
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/client/UserInterface.java
@@ -0,0 +1,451 @@
+/*
+ * Copyright 2004,2005 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 sample.mtom.filetransfer.client;
+
+import org.apache.axiom.om.OMElement;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+import java.io.File;
+import java.util.ArrayList;
+
+public class UserInterface extends JPanel implements ActionListener {
+    public static final int WIDTH = 480;
+    public static final int HEIGHT = 560;
+
+    JButton brwsBut1;
+    JButton brwsBut2;
+    JButton addFileButton;
+    JButton removeButton;
+    JButton executeButton;
+
+    JRadioButton sendRadio;
+    JRadioButton sendRecRadio;
+    JRadioButton MTOMRadio;
+    JRadioButton SOAPRadio;
+
+    JCheckBox cacheBox;
+
+    DefaultListModel model;
+    JList fileList;
+    JScrollPane fileListScroller;
+    JFileChooser fileChooser;
+
+    File file = null;
+
+    JTextField cacheThresholdText;
+    JTextField cacheFolderText;
+    JTextField EPRText;
+    JTextField destFolderText;
+    JTextField fileField;
+
+    JLabel fileListLabel;
+    JLabel EPRLabel;
+    JLabel destDir;
+    JLabel opLabel;
+    JLabel MTOMSOAPLabel;
+    JLabel thresholdLabel;
+    JLabel cacheFolderLabel;
+    JLabel bytesLabel;
+
+    private boolean cacheEnable = false;
+
+    private String destFolder = null;
+
+    private String EPR = null;
+
+    private ArrayList files;
+
+    private MTOMClient parent;
+
+    private MTOMClientModel mtomTest;
+
+    public UserInterface(MTOMClient parent) {
+        this.parent = parent;
+        initComponents();
+
+        brwsBut1.addActionListener(this);
+        brwsBut2.addActionListener(this);
+        addFileButton.addActionListener(this);
+        removeButton.addActionListener(this);
+
+        fileField.addKeyListener(new KeyListener() {
+            public void keyTyped(KeyEvent e) {
+                addFileButton.setEnabled(true);
+
+            }
+
+            public void keyPressed(KeyEvent e) {
+            }
+
+            public void keyReleased(KeyEvent e) {
+                if (fileField.getText().length() == 0) {
+                    addFileButton.setEnabled(false);
+                }
+            }
+        });
+
+        MTOMRadio.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                switchRadios(MTOMRadio, SOAPRadio);
+            }
+        });
+        SOAPRadio.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                switchRadios(SOAPRadio, MTOMRadio);
+            }
+        });
+
+        sendRadio.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                switchRadios(sendRadio, sendRecRadio);
+                cacheBox.setEnabled(false);
+                cacheBox.setSelected(false);
+                enableCaching();
+            }
+        });
+        sendRecRadio.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                switchRadios(sendRecRadio, sendRadio);
+                cacheBox.setEnabled(true);
+                enableCaching();
+            }
+        });
+
+        cacheBox.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                enableCaching();
+            }
+        });
+
+        executeButton.addActionListener(this);
+
+
+        Container pane = parent.getContentPane();
+        this.setLayout(null);
+
+        pane.add(fileField);
+        pane.add(brwsBut1);
+        pane.add(addFileButton);
+        pane.add(removeButton);
+
+        pane.add(fileListLabel);
+        pane.add(fileListScroller);
+
+        pane.add(destDir);
+        pane.add(destFolderText);
+
+        pane.add(EPRLabel);
+        pane.add(EPRText);
+
+        pane.add(opLabel);
+        pane.add(MTOMRadio);
+        pane.add(SOAPRadio);
+
+        pane.add(MTOMSOAPLabel);
+        pane.add(sendRadio);
+        pane.add(sendRecRadio);
+
+        pane.add(cacheBox);
+
+        pane.add(thresholdLabel);
+        pane.add(cacheThresholdText);
+        pane.add(bytesLabel);
+
+        pane.add(cacheFolderLabel);
+        pane.add(cacheFolderText);
+        pane.add(brwsBut2);
+
+        pane.add(executeButton);
+    }
+
+    public void initComponents() {
+        files = new ArrayList(0);
+
+        fileField = new JTextField();
+        fileField.setBounds(20, 20, 320, 20);
+
+        this.brwsBut1 = new JButton("Browse");
+        brwsBut1.setBounds(350, 20, 100, 20);
+        brwsBut1.setToolTipText("Browse a file");
+
+        addFileButton = new JButton("Add");
+        addFileButton.setBounds(20, 50, 100, 20);
+        addFileButton.setToolTipText("Add file to the file list");
+        addFileButton.setEnabled(false);
+
+        removeButton = new JButton("Remove Selection");
+        removeButton.setBounds(140, 50, 150, 20);
+        removeButton.setToolTipText("Remove selected file from the file list");
+        removeButton.setEnabled(false);
+
+        fileListLabel = new JLabel("File List");
+        fileListLabel.setBounds(20, 80, 50, 20);
+
+        model = new DefaultListModel();
+        fileList = new JList(model);
+        fileListScroller = new JScrollPane(fileList);
+        fileListScroller.setBounds(20, 100, 430, 80);
+
+
+        destDir = new JLabel("Dest. Folder: ", JLabel.RIGHT);
+        destDir.setBounds(20, 200, 100, 20);
+        destFolderText = new JTextField();
+        destFolderText.setBounds(120, 200, 330, 20);
+
+
+        EPRLabel = new JLabel("End Point: ", JLabel.RIGHT);
+        EPRLabel.setBounds(20, 230, 100, 20);
+        EPRText = new JTextField();
+        EPRText.setText("http://127.0.0.1:8080/axis2/services/mtomSample");
+        EPRText.setBounds(120, 230, 330, 20);
+
+        MTOMSOAPLabel = new JLabel("Send Using");
+        MTOMSOAPLabel.setBounds(20, 270, 150, 20);
+
+        MTOMRadio = new JRadioButton("MTOM");
+        MTOMRadio.setBounds(20, 295, 100, 20);
+        MTOMRadio.setSelected(true);
+
+        SOAPRadio = new JRadioButton("SOAP with Attachments");
+        SOAPRadio.setBounds(140, 295, 200, 20);
+
+        opLabel = new JLabel("Select Operation");
+        opLabel.setBounds(20, 320, 150, 20);
+
+        sendRadio = new JRadioButton("Send");
+        sendRadio.setBounds(20, 345, 100, 20);
+        sendRadio.setSelected(true);
+
+        sendRecRadio = new JRadioButton("Send & Receive");
+        sendRecRadio.setBounds(140, 345, 150, 20);
+
+        cacheBox = new JCheckBox("Enable Client Side File Caching");
+        cacheBox.setSelected(false);
+        cacheBox.setEnabled(false);
+        cacheBox.setBounds(20, 380, 250, 20);
+
+        thresholdLabel = new JLabel("File Cache Threshold: ");
+        thresholdLabel.setBounds(50, 410, 150, 20);
+        thresholdLabel.setEnabled(false);
+        cacheThresholdText = new JTextField();
+        cacheThresholdText.setBounds(200, 410, 40, 20);
+        cacheThresholdText.setEnabled(false);
+
+        bytesLabel = new JLabel("(in bytes)");
+        bytesLabel.setBounds(250, 410, 100, 20);
+        bytesLabel.setEnabled(false);
+
+        cacheFolderLabel = new JLabel("Cache Folder: ");
+        cacheFolderLabel.setBounds(50, 440, 150, 20);
+        cacheFolderLabel.setEnabled(false);
+        cacheFolderText = new JTextField();
+        cacheFolderText.setBounds(200, 440, 210, 20);
+        cacheFolderText.setEnabled(false);
+
+        brwsBut2 = new JButton("...");
+        brwsBut2.setBounds(420, 440, 30, 20);
+        brwsBut2.setToolTipText("Browse for a cache folder");
+        brwsBut2.setEnabled(false);
+
+        this.executeButton = new JButton("Execute");
+        executeButton.setBounds(((WIDTH - 200) / 2), 490, 200, 20);
+
+        fileChooser = new JFileChooser();
+        fileChooser.setName("File Chooser");
+    }
+
+    public void handleSelection() {
+        if (!files.isEmpty()) {
+            removeButton.setEnabled(false);
+        }
+    }
+
+    public void enableCaching() {
+        cacheEnable = cacheBox.isSelected();
+        thresholdLabel.setEnabled(cacheEnable);
+        cacheThresholdText.setEnabled(cacheEnable);
+        cacheFolderLabel.setEnabled(cacheEnable);
+        cacheFolderText.setEnabled(cacheEnable);
+        brwsBut2.setEnabled(cacheEnable);
+        bytesLabel.setEnabled(cacheEnable);
+    }
+
+    public void switchRadios(JRadioButton me, JRadioButton partner) {
+        me.setSelected(true);
+        partner.setSelected(false);
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        if (e.getSource() == brwsBut1) {
+            String str = browse(JFileChooser.FILES_ONLY);
+            if(str != null){
+                fileField.setText(str);
+                addFileButton.setEnabled(true);
+            }
+        } else if (e.getSource() == brwsBut2) {
+            String str = browse(JFileChooser.FILES_AND_DIRECTORIES);
+            if(str != null){
+                cacheFolderText.setText(str);
+            }
+        } else if (e.getSource() == executeButton) {
+            execute();
+        } else if (e.getSource() == addFileButton) {
+            addFile();
+        } else if (e.getSource() == removeButton) {
+            removeFromList();
+        }
+    }
+
+    public String browse(int selectionMode) {
+        fileChooser.setFileSelectionMode(selectionMode);
+        int returnVal = fileChooser.showDialog(this, "Select");
+
+        if (returnVal == JFileChooser.APPROVE_OPTION) {
+            file = fileChooser.getSelectedFile();
+            if (file.getAbsolutePath() != null) {
+                return file.getAbsolutePath();
+            }
+        }
+        fileChooser.setSelectedFile(null);
+        return null;
+    }
+
+    public void addFile() {
+        file = new File(fileField.getText());
+        if (file.exists() && file.isFile()) {
+            files.add(file);
+            model.addElement(file.getAbsolutePath());
+            fileList.setSelectedIndex(files.size() - 1);
+            removeButton.setEnabled(true);
+        } else {
+            JOptionPane.showMessageDialog(parent,
+                    "File does not exist", "File Error",
+                    JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
+    public void removeFromList() {
+        String selection = (String) fileList.getSelectedValue();
+        if (selection != null) {
+            file = new File(selection);
+            files.remove(file);
+            model.remove(fileList.getSelectedIndex());
+            fileList.setSelectedIndex(files.size() - 1);
+            if (files.isEmpty()) {
+                removeButton.setEnabled(false);
+            }
+        }
+    }
+
+    public void execute() {
+        EPR = EPRText.getText();
+        String operation;
+        String sendMethod;
+        String cacheFolder = null;
+        int cacheThreshold = 0;
+        File cache;
+        destFolder = destFolderText.getText();
+
+        if (!model.isEmpty()) {
+            if (destFolder.length() != 0 && EPR.length() != 0) {
+                sendMethod = (MTOMRadio.isSelected() ? "MTOM" : "SOAP");
+                operation = (sendRadio.isSelected() ? "send" : "sendreceive");
+                if (cacheEnable) {
+                    try {
+                        String temp = cacheThresholdText.getText();
+                        if (temp.length() != 0) {
+                            cacheThreshold = Integer.parseInt(temp);
+                        } else {
+                            throw new NumberFormatException();
+                        }
+
+                        cache = new File(cacheFolderText.getText());
+                        if (!cache.exists()) {
+                            cache.mkdirs();
+                        }
+                        cacheFolder = cache.getAbsolutePath();
+
+                    } catch (NumberFormatException e) {
+                        JOptionPane.showMessageDialog(parent, "Please enter an integer value",
+                                "Cache Threshold Error", JOptionPane.ERROR_MESSAGE);
+                        return;
+                    }
+                }
+
+                mtomTest = new MTOMClientModel();
+                mtomTest.setFileList(files);
+                mtomTest.setTargetEPR(EPR);
+
+                if (operation.equals("send")) {
+                    send(sendMethod);
+                } else {
+                    sendAndReceive(sendMethod, cacheThreshold, cacheFolder);
+                }
+            } else {
+                JOptionPane.showMessageDialog(parent, "Destination Folder or End Point cannot be null",
+                        "Data Error", JOptionPane.ERROR_MESSAGE);
+            }
+        } else {
+            JOptionPane.showMessageDialog(parent, "Add at least one file",
+                    "File List Empty", JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
+    public void sendAndReceive(String sendMethod, int cacheThreshold, String cacheFolder) {
+        OMElement result;
+        try {
+            mtomTest.setCacheFolder(cacheFolder);
+            mtomTest.setCacheThreshold(cacheThreshold);
+            String temp = (cacheEnable) ? "Enabled" : "Disabled";
+            if (sendMethod.equals("MTOM")) {
+                result = mtomTest.sendReceiveUsingMTOM(destFolder, cacheEnable);
+
+                temp = "File Caching " + temp + "\n\n" + result.getText();
+                JOptionPane.showMessageDialog(parent, temp,
+                        "Result of Send & Receive using MTOM", JOptionPane.PLAIN_MESSAGE);
+            } else {
+                result = mtomTest.sendReceiveUsingSwA(destFolder, cacheEnable);
+
+                temp = "File Caching " + temp + "\n\n" + result.getText();
+                JOptionPane.showMessageDialog(parent, temp,
+                        "Result of Send & Receive using SwA", JOptionPane.PLAIN_MESSAGE);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    public void send(String sendMethod) {
+        OMElement result;
+        try {
+            if (sendMethod.equals("MTOM")) {
+                result = mtomTest.sendFilesUsingMTOM(destFolder);
+                JOptionPane.showMessageDialog(parent, result.getText(),
+                        "Result of Send using MTOM", JOptionPane.PLAIN_MESSAGE);
+            } else {
+                result = mtomTest.sendFilesUsingSwA(destFolder);
+                JOptionPane.showMessageDialog(parent, result.getText(),
+                        "Result of Send using SOAP with Attachments", JOptionPane.PLAIN_MESSAGE);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/service/META-INF/services.xml b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/service/META-INF/services.xml
new file mode 100755
index 0000000..9e19ddd
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/service/META-INF/services.xml
@@ -0,0 +1,30 @@
+<service name="MTOMService">
+    <description>
+        This is a sample Web Service for illustrating MTOM based binary data transfer.
+    </description>
+    <parameter name="ServiceClass" locked="false">sample.mtom.filetransfer.service.MTOMService</parameter>
+    <operation name="uploadFileUsingMTOM">
+        <parameter name="enableMTOM" locked="false">true</parameter>
+        <parameter name="enableSwA" locked="false">false</parameter>
+        <actionMapping>urn:uploadFileUsingMTOM</actionMapping>
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+    <operation name="uploadFileUsingSwA">
+        <parameter name="enableMTOM" locked="false">false</parameter>
+        <parameter name="enableSwA" locked="false">true</parameter>
+        <actionMapping>urn:uploadFileUsingSwA</actionMapping>
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+    <operation name="sendReceiveUsingMTOM">
+        <parameter name="enableMTOM" locked="false">true</parameter>
+        <parameter name="enableSwA" locked="false">false</parameter>
+        <actionMapping>urn:sendReceiveUsingMTOM</actionMapping>
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+    <operation name="sendReceiveUsingSwA">
+        <parameter name="enableMTOM" locked="false">false</parameter>
+        <parameter name="enableSwA" locked="false">true</parameter>
+        <actionMapping>urn:sendReceiveUsingSwA</actionMapping>
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/service/MTOMService.java b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/service/MTOMService.java
new file mode 100755
index 0000000..85d0f44
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/mtomsample/src/sample/mtom/filetransfer/service/MTOMService.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2004,2005 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 sample.mtom.filetransfer.service;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.om.*;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+import javax.activation.DataHandler;
+import javax.imageio.IIOImage;
+import javax.imageio.ImageWriter;
+import javax.imageio.stream.ImageOutputStream;
+import javax.xml.namespace.QName;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.RandomAccessFile;
+import java.util.Iterator;
+
+public class MTOMService {
+    private OperationContext opcts;
+
+    private OMElement folder;
+    private OMElement files;
+    private OMElement file;
+    private String folderName;
+
+    public void setOperationContext(OperationContext oc) throws AxisFault {
+        opcts = oc;
+    }
+
+    /**
+     * @param element The OMElement handed by the Axis2 engine
+     * @return An OMElement containing the response of the operation
+     * @throws Exception
+     */
+    public OMElement uploadFileUsingMTOM(OMElement element) throws Exception {
+
+        Iterator itr = element.getChildElements();
+        folder = (OMElement) itr.next(); // Get the folderName element
+
+        // Throw AxisFault if destination folder is null
+        if (folder == null) throw new AxisFault("Destination Folder is null");
+
+        folderName = folder.getText();
+
+        // Create destination folder hierarchy if it does not exist
+        File destFolder = new File(folderName);
+        if (!destFolder.exists()) {
+            destFolder.mkdirs();
+        }
+
+        files = (OMElement) itr.next(); // Get the files element
+        itr = files.getChildElements(); // Get iterator for file elements
+
+
+        int i = 1;
+        String fileName;
+
+        // loop through each file element
+        while (itr.hasNext()) {
+            file = (OMElement) itr.next(); // Get next file element
+
+            // Throw AxisFault if the file element is null
+            if (file == null) throw new AxisFault("File " + i + " is null");
+
+            OMText binaryNode = (OMText) file.getFirstOMChild();
+            binaryNode.setBinary(true);
+            DataHandler dataHandler;
+            dataHandler = (DataHandler) binaryNode.getDataHandler(); // Get corresponding DataHandler
+            fileName = createFileName(i);
+            writeData(dataHandler.getDataSource().getInputStream(), fileName);
+            i++;
+        }
+
+        // Create response element
+        OMFactory fac = OMAbstractFactory.getOMFactory(); // Get OMFactory
+        OMNamespace ns = fac.createOMNamespace("urn://fakenamespace", "ns"); // Create a namespace
+        OMElement ele = fac.createOMElement("response", ns); // Create response element
+        ele.setText("" + (i - 1) + " File(s) Saved Successfully on Server at " + folderName);
+        return ele;
+    }
+
+
+    /**
+     * @param element The OMElement handed by the Axis2 engine
+     * @return An OMElement containing the response of the operation
+     * @throws Exception
+     */
+    public OMElement uploadFileUsingSwA(OMElement element) throws Exception {
+
+        Iterator itr = element.getChildElements();
+
+        folder = (OMElement) itr.next(); // Get the folderName element
+
+        // Throw AxisFault if destination folder is null
+        if (folder == null) throw new AxisFault("Destination Folder is null");
+
+        folderName = folder.getText();
+
+        // Create destination folder hierarchy if it does not exist
+        File destFolder = new File(folderName);
+        if (!destFolder.exists()) {
+            destFolder.mkdirs();
+        }
+
+        files = (OMElement) itr.next(); // Get the files element
+        itr = files.getChildElements(); // Get iterator for file elements
+
+        // Get attachements from the MessageContext
+        Attachments attachment = (opcts.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)).getAttachmentMap();
+
+        // loop through each file element
+        int i = 1;
+        String fileName;
+        DataHandler dataHandler;
+        while (itr.hasNext()) {
+            file = (OMElement) itr.next();
+            if (file == null) throw new AxisFault("File " + i + " is null");
+            dataHandler = attachment.getDataHandler(file.getText()); // Get corresponding DataHandler
+            fileName = createFileName(i);
+            writeData(dataHandler.getDataSource().getInputStream(), fileName);
+            i++;
+        }
+
+        // Create response element
+        OMFactory fac = OMAbstractFactory.getOMFactory(); // Get OMFactory
+        OMNamespace ns = fac.createOMNamespace("urn://fakenamespace", "ns"); // Create a namespace
+        OMElement ele = fac.createOMElement("response", ns); // Create response element
+        ele.setText("" + (i - 1) + " File(s) Saved Successfully on Server at " + folderName);
+        return ele;
+
+    }
+
+    public OMElement sendReceiveUsingMTOM(OMElement element) {
+        element.buildWithAttachments();
+        element.detach();
+        return element;
+    }
+
+    public OMElement sendReceiveUsingSwA(OMElement element) throws Exception {
+        Attachments attachment = (opcts.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)).getAttachmentMap();
+        opcts.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE).setAttachmentMap(attachment);
+        element.buildWithAttachments();
+        element.detach();
+        return element;
+    }
+
+
+    private String createFileName(int count) {
+        String fileName;
+        fileName = folderName + "/" + file.getAttributeValue(
+                new QName(file.getNamespace().getNamespaceURI(), "type"));
+
+        if (new File(fileName).exists()) {
+            fileName = folderName + "/copy(" + (count - 1) + ")" + file.getAttributeValue(
+                    new QName(file.getNamespace().getNamespaceURI(), "type"));
+            while (new File(fileName).exists()) {
+                count ++;
+                fileName = folderName + "/copy(" + (count - 1) + ")" + file.getAttributeValue(
+                        new QName(file.getNamespace().getNamespaceURI(), "type"));
+            }
+        }
+
+        return fileName;
+    }
+
+    /**
+     * @param inStrm   An input stream linking to the data
+     * @param fileName The absolute path of the file to which the data should be written
+     * @throws Exception
+     */
+    private void writeData(InputStream inStrm, String fileName) throws Exception {
+        RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
+        int b;
+        while (true) {
+            b = inStrm.read();
+            if (b == -1) {
+                break;
+            }
+            raf.writeByte(b);
+        }
+        inStrm.close();
+        raf.close();
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image1.JPG b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image1.JPG
new file mode 100644
index 0000000..fafaee3
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image1.JPG
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image2.JPG b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image2.JPG
new file mode 100644
index 0000000..5478b67
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image2.JPG
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image3.JPG b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image3.JPG
new file mode 100644
index 0000000..17f4dd9
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image3.JPG
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image4.JPG b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image4.JPG
new file mode 100644
index 0000000..eaab6fd
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/images/image4.JPG
Binary files differ
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/readme.html b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/readme.html
new file mode 100644
index 0000000..e90bcfa
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/docs/readme.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">

+	<TITLE></TITLE>

+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.4  (Win32)">

+	<META NAME="AUTHOR" CONTENT="Chamikara Jayalath">

+	<META NAME="CREATED" CONTENT="20050923;21203268">

+	<META NAME="CHANGEDBY" CONTENT="Chamikara Jayalath">

+	<META NAME="CHANGED" CONTENT="20050923;22064610">

+</HEAD>

+<BODY LANG="en-US" DIR="LTR">

+<H2><U><B>Sample application to demonstrate the functionality of

+service groups</B></U></H2>

+<P>Service Groups are a brand new concept introduced by Axis2. With

+Service Groups, users can group several services together. This

+concept gives two main advantages to users.</P>

+<OL>

+	<LI><P>Several related services can be easily managed and deployed.</P>

+	<LI><P>Can share information between different services of the same

+	Service Group at run time.</P>

+</OL>

+<P>This sample application demonstrate how you can create a service

+group and how you can use the functionalities offered by axis2 to

+share information between services of the same group at runtime.</P>

+<P><BR><BR>

+</P>

+<P><U>The idea</U></P>

+<P STYLE="text-decoration: none">The ides behind the sample is pretty

+simple. We have developed a Calculator service group with three

+services AddService, SubstractService and MultiplyService. Each

+service has two operations. For e.g. AddServices has a 'add'

+operation and a 'addPrevious' operation.  

+</P>

+<P STYLE="text-decoration: none">The 'add' operation is used to add

+two integers and produce a result. When a operation is run the result

+will be saved in the current ServiceGroupContext which is the Context

+that has to be used to share information between services of the same

+service group.</P>

+<P STYLE="text-decoration: none">When the addPrevious operation is

+run (which takes a single integer as the parameter) the saved value

+of the last operation will be added to the integer values that comes

+as a parameter.</P>

+<P STYLE="text-decoration: none">You can even call operations of the

+other two services. These services can also use the value saved from

+the previous operation.</P>

+<P STYLE="text-decoration: none">You can use the client class

+provided to run this in a interactive manner.</P>

+<P><U>How to run the sample</U></P>

+<P>Please run axis2 and deploy the provided Calculator.aar service by

+simply dropping it to the Axis2_webapp/WEB-INF/services directory (see

+axis user guide for more details).</P>

+<P>Run the run.bat file.</P>

+<P>You will see the following screen.</P>

+<P><BR><BR>

+</P>

+<P><IMG SRC="images/image1.JPG" NAME="Graphic1" ALIGN=LEFT WIDTH=701 HEIGHT=168 BORDER=0><BR CLEAR=LEFT><BR><BR>

+</P>

+<P>Select 'n' to start a new round.</P>

+<P><BR><BR>

+</P>

+<P><IMG SRC="images/image2.JPG" NAME="Graphic2" ALIGN=LEFT WIDTH=701 HEIGHT=211 BORDER=0><BR CLEAR=LEFT><BR><BR>

+</P>

+<P>Now select the service. + for AddService, - for SubstractService,

+* for MultiplyService. And press enter. 

+</P>

+<P>Enter the two parameters.</P>

+<P>You will see the result.</P>

+<P><BR><BR>

+</P>

+<P><IMG SRC="images/image3.JPG" NAME="Graphic3" ALIGN=LEFT WIDTH=701 HEIGHT=231 BORDER=0><BR CLEAR=LEFT><BR><BR>

+</P>

+<P>Now select the option 'c' to continue the round. Select the

+operation. You have to give a single parameter and press enter.</P>

+<P>The result will be generated using the entered valus and the

+result of the previous operation (which is obtained from the

+ServiceGroupContext).</P>

+<P><BR><BR>

+</P>

+<P><IMG SRC="images/image4.JPG" NAME="Graphic4" ALIGN=LEFT WIDTH=701 HEIGHT=307 BORDER=0><BR CLEAR=LEFT><BR><BR>

+</P>

+<P>You can continue this interactively any number of times.</P>

+<P><BR><BR>

+</P>

+</BODY>

+</HTML>

diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/run.bat b/rampart_1_1/modules/samples/deprecated/sgccalculator/run.bat
new file mode 100644
index 0000000..e50deb3
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/run.bat
@@ -0,0 +1,40 @@
+@echo off

+rem ---------------------------------------------------------------------------

+rem Start script for running the ServiceGroupContext Calculator

+rem

+rem ---------------------------------------------------------------------------

+

+rem store the current directory

+set CURRENT_DIR=%cd%

+

+rem check the AXIS2_HOME environment variable

+if not "%AXIS2_HOME%" == "" goto gotHome

+

+rem guess the home. Jump two directories up and take that as the home

+cd ..

+cd ..

+set AXIS2_HOME=%cd%

+

+echo using Axis Home %AXIS2_HOME%

+

+

+:gotHome

+if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome

+echo The AXIS2_HOME environment variable seems not to point to the correct loaction!

+echo This environment variable is needed to run this program

+pause

+exit

+

+:okHome

+cd %CURRENT_DIR%

+

+setlocal EnableDelayedExpansion

+rem loop through the libs and add them to the class path

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;"%CURRENT_DIR%\SGCCalculator.jar"

+

+java -cp %AXIS2_CLASS_PATH% -Daxis2.repo=%AXIS2_HOME% sample.sgccalculator.CalcClient

+endlocal

+:end
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/run.sh b/rampart_1_1/modules/samples/deprecated/sgccalculator/run.sh
new file mode 100644
index 0000000..b3489d7
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/run.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+export AXIS2_HOME=../..
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:SGCCalculator.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+export AXIS2_CLASSPATH
+echo classpath: $AXIS2_CLASSPATH
+
+java -classpath $AXIS2_CLASSPATH -Daxis2.repo=$AXIS2_HOME  sample.sgccalculator.CalcClient
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/AddService.java b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/AddService.java
new file mode 100644
index 0000000..37b1440
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/AddService.java
@@ -0,0 +1,103 @@
+/*

+ * Copyright 2004,2005 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 sample.sgccalculator;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.context.ServiceGroupContext;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+import java.util.Iterator;

+

+public class AddService {

+

+    MessageContext msgContext = null;

+

+    public void setOperationContext(OperationContext opContext) throws AxisFault {

+        this.msgContext = opContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+    }

+

+    public OMElement add(OMElement elem) {

+        Iterator iter = elem.getChildElements();

+        String param1Str = ((OMElement) iter.next()).getText();

+        String param2Str = ((OMElement) iter.next()).getText();

+

+        int param1 = Integer.parseInt(param1Str);

+        int param2 = Integer.parseInt(param2Str);

+        int result = param1 + param2;

+

+        if (msgContext != null)

+            System.out.println("ServiceGroupContextID:" + msgContext.getServiceGroupContextId());

+        else

+            System.out.println("Message Context is null");

+

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace namespace = fac.createOMNamespace("http://axis2/test/namespace1", "ns1");

+

+        OMElement resultElem = fac.createOMElement("result", namespace);

+        resultElem.setText(Integer.toString(result));

+

+        msgContext.getServiceGroupContext().setProperty(Constants.CALCULATOR_PREVIOUS_KEY, Integer.toString(result));

+        return resultElem;

+    }

+

+    public OMElement addPrevious(OMElement elem) {

+        Iterator iter = elem.getChildElements();

+        String paramStr = ((OMElement) iter.next()).getText();

+

+        int param = Integer.parseInt(paramStr);

+

+        if (msgContext == null) {

+            System.out.println("message context is null");

+            return null;

+        }

+

+        ServiceGroupContext sgc = msgContext.getServiceGroupContext();

+        if (sgc == null) {

+            System.out.println("message context is null");

+            return null;

+        }

+

+        String previousStr = (String) sgc.getProperty(Constants.CALCULATOR_PREVIOUS_KEY);

+        if (previousStr == null) {

+            System.out.println("Previous is null");

+            return null;

+        }

+

+        int previous = Integer.parseInt(previousStr);

+

+        int result = previous + param;

+

+        if (msgContext != null)

+            System.out.println("ServiceGroupContextID:" + msgContext.getServiceGroupContextId());

+        else

+            System.out.println("Message Context is null");

+

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace namespace = fac.createOMNamespace("http://axis2/test/namespace1", "ns1");

+

+        OMElement resultElem = fac.createOMElement("result", namespace);

+        resultElem.setText(Integer.toString(result));

+

+        msgContext.getServiceGroupContext().setProperty(Constants.CALCULATOR_PREVIOUS_KEY, Integer.toString(result));

+        return resultElem;

+    }

+}

diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/CalcClient.java b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/CalcClient.java
new file mode 100644
index 0000000..10dcd16
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/CalcClient.java
@@ -0,0 +1,248 @@
+/*

+ * Copyright 2004,2005 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 sample.sgccalculator;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.SOAPHeaderBlock;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.Constants;

+import org.apache.axis2.wsdl.WSDLConstants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.OperationClient;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.MessageContext;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.FactoryConfigurationError;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamWriter;

+import java.io.BufferedReader;

+import java.io.IOException;

+import java.io.InputStreamReader;

+

+public class CalcClient {

+

+    final static String addService = "http://localhost:8080/axis2/services/AddService";

+

+    final static String substractService = "http://localhost:8080/axis2/services/SubstractService";

+

+    final static String multiplyService = "http://localhost:8080/axis2/services/MultiplyService";

+

+    public static void main(String[] args) throws AxisFault, IOException {

+

+        System.out.println("\nTHIS IS A SAMPLE APPLICATION TO DEMONSTRATE THE FUNCTIONALITY OF SERVICE GROUPS");

+        System.out.println("===============================================================================");

+        Options options = new Options();

+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+        boolean exit = false;

+        String serviceGroupContextId = null;

+        while (!exit) {

+            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

+

+            System.out.print("\n\nNew round (n) /continue round (c).../exit (e)");

+            String option = reader.readLine();

+            if ("e".equalsIgnoreCase(option)) {

+                System.out.println("Exiting calculator...");

+                return;

+            }

+

+            if (!"n".equalsIgnoreCase(option) && !"c".equalsIgnoreCase(option)) {

+                System.out.println("Error: Invalid option");

+                continue;

+            }

+

+            System.out.print("Please Select the service ( '+' / '-' / '*' )....");

+            String operation = reader.readLine();

+            if (!"+".equalsIgnoreCase(operation) && !"-".equalsIgnoreCase(operation) && !"*".equalsIgnoreCase(operation)) {

+                System.out.println("Error: Invalid option");

+                continue;

+            }

+

+            if ("+".equals(operation))

+                options.setTo(new EndpointReference(addService));

+            else if ("-".equals(operation))

+                options.setTo(new EndpointReference(substractService));

+            else if ("*".equals(operation))

+                options.setTo(new EndpointReference(multiplyService));

+

+            if ("n".equalsIgnoreCase(option)) {

+                System.out.print("Enter parameter 1...");

+                String param1Str = reader.readLine();

+                System.out.print("Enter parameter 2...");

+                String param2Str = reader.readLine();

+                int param1 = Integer.parseInt(param1Str);

+                int param2 = Integer.parseInt(param2Str);

+

+                String opStr = null;

+                if ("+".equals(operation)) {

+                    opStr = "add";

+                } else if ("-".equals(operation)) {

+                    opStr = "substract";

+                } else if ("*".equals(operation)) {

+                    opStr = "multiply";

+                }

+                System.out.println("Invoking...");

+

+                ServiceClient serviceClient = new ServiceClient();

+                serviceClient.engageModule(new QName("addressing"));

+                serviceClient.setOptions(options);

+                options.setAction("urn:" + opStr);

+                MessageContext requetMessageContext = new MessageContext();

+                requetMessageContext.setEnvelope(getRequestEnvelope(opStr, param1, param2,

+                        serviceGroupContextId));

+

+                OperationClient opClient = serviceClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+                opClient.addMessageContext(requetMessageContext);

+                opClient.setOptions(options);

+

+                opClient.execute(true);

+

+                SOAPEnvelope result = opClient.getMessageContext(

+                        WSDLConstants.MESSAGE_LABEL_IN_VALUE).getEnvelope();

+

+                printResult(result);

+

+                if (serviceGroupContextId == null)

+                    serviceGroupContextId = getServiceGroupContextId(result);

+

+

+            } else if ("c".equalsIgnoreCase(option)) {

+                if (serviceGroupContextId == null) {

+                    System.out.println("Error: First operation must be a New one. Please select 'n'");

+                    continue;

+                }

+

+                System.out.print("Enter parameter...");

+                String paramStr = reader.readLine();

+                int param = Integer.parseInt(paramStr);

+                String opStr = null;

+                if ("+".equals(operation)) {

+                    opStr = "addPrevious";

+                } else if ("-".equals(operation)) {

+                    opStr = "substractPrevious";

+                } else if ("*".equals(operation)) {

+                    opStr = "multiplyPrevious";

+                }

+

+                System.out.println("Invoking...");

+

+

+                ServiceClient serviceClient = new ServiceClient();

+                serviceClient.setOptions(options);

+                options.setAction("urn:" + opStr);

+                MessageContext requetMessageContext = new MessageContext();

+                requetMessageContext.setEnvelope(getPreviousRequestEnvelope(opStr, param,

+                        serviceGroupContextId));

+

+                OperationClient opClient = serviceClient.createClient(ServiceClient.ANON_OUT_IN_OP);

+                opClient.addMessageContext(requetMessageContext);

+                opClient.setOptions(options);

+

+                opClient.execute(true);

+

+                SOAPEnvelope result = opClient.getMessageContext(

+                        WSDLConstants.MESSAGE_LABEL_IN_VALUE).getEnvelope();

+

+                printResult(result);

+

+            }

+

+        }

+    }

+

+    public static void printResult(SOAPEnvelope result) {

+        try {

+            XMLStreamWriter writer = XMLOutputFactory.newInstance()

+                    .createXMLStreamWriter(System.out);

+            if (result != null) {

+                OMElement resultOM = result.getBody().getFirstChildWithName(new QName("result"));

+                System.out.println("Result is:" + resultOM.getText());

+            } else

+                System.out.println("Result is null");

+        } catch (XMLStreamException e) {

+            e.printStackTrace();

+        } catch (FactoryConfigurationError e) {

+            e.printStackTrace();

+        }

+    }

+

+    public static SOAPEnvelope getRequestEnvelope(String operationName,

+                                                  int param1, int param2, String groupContextId) {

+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = fac.getDefaultEnvelope();

+        OMNamespace namespace = fac.createOMNamespace(

+                "http://axis2/test/namespace1", "ns1");

+

+        OMElement params = fac.createOMElement(operationName, namespace);

+        OMElement param1OM = fac.createOMElement("param1", namespace);

+        OMElement param2OM = fac.createOMElement("param2", namespace);

+        param1OM.setText(Integer.toString(param1));

+        param2OM.setText(Integer.toString(param2));

+        params.addChild(param1OM);

+        params.addChild(param2OM);

+        envelope.getBody().setFirstChild(params);

+

+        if (groupContextId != null) {

+            OMNamespace axis2Namespace = fac.createOMNamespace(

+                    Constants.AXIS2_NAMESPACE_URI,

+                    Constants.AXIS2_NAMESPACE_PREFIX);

+            SOAPHeaderBlock soapHeaderBlock = envelope.getHeader()

+                    .addHeaderBlock(Constants.SERVICE_GROUP_ID, axis2Namespace);

+            soapHeaderBlock.setText(groupContextId);

+        }

+

+        return envelope;

+    }

+

+    public static SOAPEnvelope getPreviousRequestEnvelope(String operationName,

+                                                          int param, String groupContextId) {

+        SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();

+        SOAPEnvelope envelope = fac.getDefaultEnvelope();

+        OMNamespace namespace = fac.createOMNamespace(

+                "http://axis2/test/namespace1", "ns1");

+

+        OMElement params = fac.createOMElement(operationName, namespace);

+        OMElement paramOM = fac.createOMElement("param", namespace);

+        paramOM.setText(Integer.toString(param));

+        params.addChild(paramOM);

+        envelope.getBody().setFirstChild(params);

+

+        if (groupContextId != null) {

+            OMNamespace axis2Namespace = fac.createOMNamespace(

+                    Constants.AXIS2_NAMESPACE_URI,

+                    Constants.AXIS2_NAMESPACE_PREFIX);

+            SOAPHeaderBlock soapHeaderBlock = envelope.getHeader()

+                    .addHeaderBlock(Constants.SERVICE_GROUP_ID, axis2Namespace);

+            soapHeaderBlock.setText(groupContextId);

+        }

+

+        return envelope;

+    }

+

+    public static String getServiceGroupContextId(SOAPEnvelope resultEnvelope) {

+        return resultEnvelope.getHeader()

+                .getFirstChildWithName(new QName("ReplyTo"))

+                .getFirstChildWithName(new QName("ReferenceParameters"))

+                .getFirstChildWithName(new QName("ServiceGroupId")).getText();

+    }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/Constants.java b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/Constants.java
new file mode 100644
index 0000000..bcf849c
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/Constants.java
@@ -0,0 +1,21 @@
+/*

+ * Copyright 2004,2005 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 sample.sgccalculator;

+

+public interface Constants {

+

+	String CALCULATOR_PREVIOUS_KEY = "CalcPreviousKey";

+}

diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/META-INF/services.xml b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/META-INF/services.xml
new file mode 100644
index 0000000..6806324
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/META-INF/services.xml
@@ -0,0 +1,45 @@
+<serviceGroup>

+

+  <service name="AddService" scope="soapsession">

+

+    <parameter name="ServiceClass" locked="xsd:false">sample.sgccalculator.AddService</parameter>

+

+    <operation name="add" > 

+          <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />

+    </operation>

+    

+    <operation name="addPrevious" > 

+          <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />

+    </operation>

+    

+  </service>

+  

+  <service name="MultiplyService" scope="soapsession">

+  

+    <parameter name="ServiceClass" locked="xsd:false">sample.sgccalculator.MultiplyService</parameter>

+

+    <operation name="multiply" > 

+          <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />

+    </operation>

+    

+    <operation name="multiplyPrevious" >

+          <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />

+    </operation>

+     

+  </service>

+ 

+   <service name="SubstractService" scope="soapsession">

+   

+   <parameter name="ServiceClass" locked="xsd:false">sample.sgccalculator.SubstractService</parameter>

+

+    <operation name="substract" >

+          <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />

+    </operation>

+     

+    <operation name="substractPrevious" > 

+          <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />

+    </operation>

+    

+  </service> 

+  

+</serviceGroup>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/MultiplyService.java b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/MultiplyService.java
new file mode 100644
index 0000000..50d7429
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/MultiplyService.java
@@ -0,0 +1,103 @@
+/*

+ * Copyright 2004,2005 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 sample.sgccalculator;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceGroupContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+import java.util.Iterator;

+

+public class MultiplyService {

+

+	MessageContext msgContext = null;

+	

+	public void setOperationContext(OperationContext opContext) throws AxisFault {

+        this.msgContext = opContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+    }

+	

+	public OMElement multiply (OMElement elem) {

+		Iterator iter = elem.getChildElements();

+		String param1Str = ((OMElement) iter.next()).getText();

+		String param2Str = ((OMElement) iter.next()).getText();

+		

+		int param1 = Integer.parseInt(param1Str);

+		int param2 = Integer.parseInt(param2Str);

+		int result = param1 * param2;

+		

+		if (msgContext!=null)

+			System.out.println ("ServiceGroupContextID:" + msgContext.getServiceGroupContextId());

+		else

+			System.out.println ("Message Context is null");

+		

+		OMFactory fac = OMAbstractFactory.getOMFactory();

+		OMNamespace namespace = fac.createOMNamespace("http://axis2/test/namespace1","ns1");

+		

+		OMElement resultElem = fac.createOMElement("result",namespace);

+		resultElem.setText(Integer.toString(result ));

+		

+		msgContext.getServiceGroupContext().setProperty(Constants.CALCULATOR_PREVIOUS_KEY,Integer.toString(result));

+		return resultElem;

+	}

+	

+	public OMElement multiplyPrevious (OMElement elem) {

+		Iterator iter = elem.getChildElements();

+		String paramStr = ((OMElement) iter.next()).getText();

+		

+		int param = Integer.parseInt(paramStr);

+

+		if (msgContext==null){

+			System.out.println ("message context is null");

+			return null;

+		}

+		

+		ServiceGroupContext sgc = msgContext.getServiceGroupContext();

+		if (sgc==null){

+			System.out.println ("message context is null");

+			return null;

+		}

+		

+		String previousStr = (String) sgc.getProperty(Constants.CALCULATOR_PREVIOUS_KEY);

+		if (previousStr==null) {

+			System.out.println ("Previous is null");

+			return null;

+		}

+		

+		int previous = Integer.parseInt(previousStr);

+		

+		int result = previous * param;

+		

+		if (msgContext!=null)

+			System.out.println ("ServiceGroupContextID:" + msgContext.getServiceGroupContextId());

+		else

+			System.out.println ("Message Context is null");

+		

+		OMFactory fac = OMAbstractFactory.getOMFactory();

+		OMNamespace namespace = fac.createOMNamespace("http://axis2/test/namespace1","ns1");

+		

+		OMElement resultElem = fac.createOMElement("result",namespace);

+		resultElem.setText(Integer.toString(result ));

+		

+		msgContext.getServiceGroupContext().setProperty(Constants.CALCULATOR_PREVIOUS_KEY,Integer.toString(result));

+		return resultElem;

+	}

+}

diff --git a/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/SubstractService.java b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/SubstractService.java
new file mode 100644
index 0000000..832d3fd
--- /dev/null
+++ b/rampart_1_1/modules/samples/deprecated/sgccalculator/src/sample/sgccalculator/SubstractService.java
@@ -0,0 +1,104 @@
+/*

+ * Copyright 2004,2005 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 sample.sgccalculator;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.context.ServiceGroupContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.wsdl.WSDLConstants;

+

+import java.util.Iterator;

+

+public class SubstractService {

+

+	MessageContext msgContext = null;

+	

+	public void setOperationContext(OperationContext opContext) throws AxisFault {

+        this.msgContext = opContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

+    }

+	

+	public OMElement substract (OMElement elem){

+		Iterator iter = elem.getChildElements();

+		String param1Str = ((OMElement) iter.next()).getText();

+		String param2Str = ((OMElement) iter.next()).getText();

+		

+		int param1 = Integer.parseInt(param1Str);

+		int param2 = Integer.parseInt(param2Str);

+		int result = param1 - param2;

+		

+		if (msgContext!=null)

+			System.out.println ("ServiceGroupContextID:" + msgContext.getServiceGroupContextId());

+		else

+			System.out.println ("Message Context is null");

+		

+		OMFactory fac = OMAbstractFactory.getOMFactory();

+		OMNamespace namespace = fac.createOMNamespace("http://axis2/test/namespace1","ns1");

+		

+		OMElement resultElem = fac.createOMElement("result",namespace);

+		resultElem.setText(Integer.toString(result ));

+		

+		msgContext.getServiceGroupContext().setProperty(Constants.CALCULATOR_PREVIOUS_KEY,Integer.toString(result));

+		return resultElem;

+	}

+	

+	public OMElement substractPrevious (OMElement elem) {

+		Iterator iter = elem.getChildElements();

+		String paramStr = ((OMElement) iter.next()).getText();

+		

+		int param = Integer.parseInt(paramStr);

+

+		if (msgContext==null){

+			System.out.println ("message context is null");

+			return null;

+		}

+		

+		ServiceGroupContext sgc = msgContext.getServiceGroupContext();

+		if (sgc==null){

+			System.out.println ("message context is null");

+			return null;

+		}

+		

+		String previousStr = (String) sgc.getProperty(Constants.CALCULATOR_PREVIOUS_KEY);

+		if (previousStr==null) {

+			System.out.println ("Previous is null");

+			return null;

+		}

+		

+		int previous = Integer.parseInt(previousStr);

+		

+		int result = previous - param;

+		

+		if (msgContext!=null)

+			System.out.println ("ServiceGroupContextID:" + msgContext.getServiceGroupContextId());

+		else

+			System.out.println ("Message Context is null");

+		

+		OMFactory fac = OMAbstractFactory.getOMFactory();

+		OMNamespace namespace = fac.createOMNamespace("http://axis2/test/namespace1","ns1");

+		

+		OMElement resultElem = fac.createOMElement("result",namespace);

+		resultElem.setText(Integer.toString(result ));

+		

+		msgContext.getServiceGroupContext().setProperty(Constants.CALCULATOR_PREVIOUS_KEY,Integer.toString(result));

+		return resultElem;

+	}

+	

+}

diff --git a/rampart_1_1/modules/samples/eventing/listner1.services.xml b/rampart_1_1/modules/samples/eventing/listner1.services.xml
new file mode 100644
index 0000000..cb050c5
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/listner1.services.xml
@@ -0,0 +1,13 @@
+<service name="ListnerService1">

+

+   <parameter name="ServiceClass" locked="xsd:false">sample.eventing.ListnerService1</parameter>

+

+    <description>

+        The Listner Service 1 of the Axis2 Eventing sample.

+    </description>

+

+    <operation name="publish" mep="http://www.w3.org/2004/08/wsdl/in-only">  

+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" />

+    </operation>

+           

+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/eventing/listner2.services.xml b/rampart_1_1/modules/samples/eventing/listner2.services.xml
new file mode 100644
index 0000000..0e5c9be
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/listner2.services.xml
@@ -0,0 +1,13 @@
+<service name="ListnerService2">

+

+   <parameter name="ServiceClass" locked="xsd:false">sample.eventing.ListnerService2</parameter>

+

+    <description>

+        The Listner Service 2 of the Axis2 Eventing sample.

+    </description>

+

+    <operation name="publish" mep="http://www.w3.org/2004/08/wsdl/in-only">  

+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" />

+    </operation>

+           

+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/eventing/publisher.services.xml b/rampart_1_1/modules/samples/eventing/publisher.services.xml
new file mode 100644
index 0000000..6aef695
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/publisher.services.xml
@@ -0,0 +1,15 @@
+<service name="PublisherService">

+

+   <parameter name="ServiceClass" locked="xsd:false">sample.eventing.PublisherService</parameter>

+

+    <description>

+        The Publisher Service of the Axis2 Eventing sample.

+    </description>

+

+    <module ref="savan" />

+       

+    <operation name="dummyMethod" mep="http://www.w3.org/2004/08/wsdl/in-only">  

+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" />

+    </operation>

+           

+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/eventing/run.bat b/rampart_1_1/modules/samples/eventing/run.bat
new file mode 100644
index 0000000..65cd786
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/run.bat
@@ -0,0 +1,40 @@
+@echo off

+rem ---------------------------------------------------------------------------

+rem Start script for running the Eventing Sample Client

+rem

+rem ---------------------------------------------------------------------------

+

+rem store the current directory

+set CURRENT_DIR=%cd%

+

+rem check the AXIS2_HOME environment variable

+if not "%AXIS2_HOME%" == "" goto gotHome

+

+rem guess the home. Jump two directories up and take that as the home

+cd ..

+cd ..

+set AXIS2_HOME=%cd%

+

+echo using Axis Home %AXIS2_HOME%

+

+

+:gotHome

+if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome

+echo The AXIS2_HOME environment variable seems not to point to the correct loaction!

+echo This environment variable is needed to run this program

+pause

+goto end

+

+:okHome

+cd %CURRENT_DIR%

+

+setlocal EnableDelayedExpansion

+rem loop through the libs and add them to the class path

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;"%CURRENT_DIR%\EventingSample.jar"

+

+java -cp %AXIS2_CLASS_PATH% -Daxis2.repo=%AXIS2_HOME% sample.eventing.Client

+endlocal

+:end
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/eventing/run.sh b/rampart_1_1/modules/samples/eventing/run.sh
new file mode 100644
index 0000000..58e078f
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/run.sh
@@ -0,0 +1,12 @@
+#!/bin/sh

+

+export AXIS2_HOME=../..

+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:SGCCalculator.jar

+for f in $AXIS2_HOME/lib/*.jar

+do

+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f

+done

+export AXIS2_CLASSPATH

+echo classpath: $AXIS2_CLASSPATH

+

+java -classpath $AXIS2_CLASSPATH -Daxis2.repo=$AXIS2_HOME  sample.sgccalculator.CalcClient

diff --git a/rampart_1_1/modules/samples/eventing/src/sample/eventing/Client.java b/rampart_1_1/modules/samples/eventing/src/sample/eventing/Client.java
new file mode 100644
index 0000000..c2df445
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/src/sample/eventing/Client.java
@@ -0,0 +1,293 @@
+/*

+ * Copyright 2004,2005 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 sample.eventing;

+

+import java.io.BufferedReader;

+import java.io.File;

+import java.io.IOException;

+import java.io.InputStreamReader;

+import java.util.Date;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ConfigurationContextFactory;

+import org.apache.savan.eventing.client.EventingClient;

+import org.apache.savan.eventing.client.EventingClientBean;

+import org.apache.savan.eventing.client.SubscriptionStatus;

+

+public class Client {

+

+    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

+    

+    private final int MIN_OPTION = 1;

+    private final int MAX_OPTION = 9;

+    

+    private final String SUBSCRIBER_1_ID = "subscriber1";

+    private final String SUBSCRIBER_2_ID = "subscriber2";

+    

+    private ServiceClient serviceClient = null;

+    private Options options = null;

+    private EventingClient eventingClient = null;

+    

+    private String toAddressPart = "/axis2/services/PublisherService";

+    private String listner1AddressPart = "/axis2/services/ListnerService1";

+    private String listner2AddressPart = "/axis2/services/ListnerService2";

+    

+	private final String applicationNamespaceName = "http://tempuri.org/"; 

+	private final String dummyMethod = "dummyMethod";

+    

+	private static String repo = null;

+	private static int port = 8080;

+	private static String serverIP = "127.0.0.1";

+	

+	private static final String portParam = "-p";

+	private static final String repoParam = "-r";

+	private static final String helpParam = "-h";

+	

+	public static void main (String[] args) throws Exception {

+		

+		for (int i=0;i<args.length;i++) {

+			if (helpParam.equalsIgnoreCase(args[i])) {

+				displayHelp ();

+				System.exit(0);

+			}

+		}

+		

+		String portStr = getParam(portParam,args);

+		if (portStr!=null) {

+			port = Integer.parseInt(portStr);

+			System.out.println("Server Port was set to:" + port);

+		}

+		

+		String repoStr = getParam(repoParam,args);

+		if (repoStr!=null) {

+			repo = repoStr;

+			System.out.println("Client Repository was set to:" + repo);

+		}

+		

+		Client c = new Client ();

+		c.run ();

+	}

+	

+	private static void displayHelp () {

+		System.out.println("Help page for the Eventing Client");

+		System.out.println("---------------------------------");

+		System.out.println("Set the client reposiory using the parameter -r");

+		System.out.println("Set the server port using the parameter -p");

+	}

+	

+    /**

+     * This will check the given parameter in the array and will return, if available

+     *

+     * @param param

+     * @param args

+     * @return

+     */

+    private static String getParam(String param, String[] args) {

+        if (param == null || "".equals(param)) {

+            return null;

+        }

+

+        for (int i = 0; i < args.length; i = i + 2) {

+            String arg = args[i];

+            if (param.equalsIgnoreCase(arg) && (args.length >= (i + 1))) {

+                return args[i + 1];

+            }

+        }

+        return null;

+    }

+	

+	public void run () throws Exception {

+		

+		System.out.println("\n");

+		System.out.println("Welcome to Axis2 Eventing Sample");

+		System.out.println("================================\n");

+		

+		boolean validOptionSelected = false;

+		int selectedOption = -1;

+		while (!validOptionSelected) {

+			displayMenu();

+			selectedOption = getIntInput();

+			if (selectedOption>=MIN_OPTION && selectedOption<=MAX_OPTION)

+				validOptionSelected = true;

+			else 

+				System.out.println("\nInvalid Option \n\n");

+		}

+			

+		initClient ();

+		performAction (selectedOption);

+		

+		//TODO publish

+		

+		System.out.println("Press enter to initialize the publisher service.");

+		reader.readLine();

+		

+		options.setAction("uuid:DummyMethodAction");

+		serviceClient.fireAndForget(getDummyMethodRequestElement ());

+		

+		while (true) {

+			

+			validOptionSelected = false;

+			selectedOption = -1;

+			while (!validOptionSelected) {

+				displayMenu();

+				selectedOption = getIntInput();

+				if (selectedOption>=MIN_OPTION && selectedOption<=MAX_OPTION)

+					validOptionSelected = true;

+				else 

+					System.out.println("\nInvalid Option \n\n");

+			}

+				

+			performAction (selectedOption);

+			

+		}

+	}

+	

+	private void displayMenu () {

+		System.out.println("Press 1 to subscribe Listner Service 1");

+		System.out.println("Press 2 to subscribe Listner Service 2");

+		System.out.println("Press 3 to subscribe both listner services");

+		System.out.println("Press 4 to unsubscribe Listner Service 1");

+		System.out.println("Press 5 to unsubscribe Listner Service 2");

+		System.out.println("Press 6 to unsubscribe both listner services");

+		System.out.println("Press 7 to to get the status of the subscription to Service 1");

+		System.out.println("Press 8 to to get the status of the subscription to Service 2");

+		System.out.println("Press 9 to Exit");

+	}

+	

+	private int getIntInput () throws IOException {

+        String option = reader.readLine();

+        try {

+            return Integer.parseInt(option);

+        } catch (NumberFormatException e) {

+        	//invalid option

+        	return -1;

+        }

+	}

+	

+	private void initClient () throws AxisFault {

+

+		String CLIENT_REPO = null;

+		String AXIS2_XML = null;

+		

+		if (repo!=null) {

+			CLIENT_REPO = repo;

+			AXIS2_XML = repo + File.separator + "axis2.xml";

+		} else {

+//			throw new AxisFault ("Please specify the client repository as a program argument.Use '-h' for help.");

+		}

+		

+		ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(CLIENT_REPO,AXIS2_XML);

+		serviceClient = new ServiceClient (configContext,null); //TODO give a repo

+		

+		options = new Options ();

+		serviceClient.setOptions(options);

+		serviceClient.engageModule(new QName ("addressing"));

+		

+		eventingClient = new EventingClient (serviceClient);

+		

+		String toAddress = "http://" + serverIP + ":" + port + toAddressPart;

+		options.setTo(new EndpointReference (toAddress));

+	}

+	

+	private void performAction (int action) throws Exception {

+		

+		switch (action) {

+		case 1:

+			doSubscribe(SUBSCRIBER_1_ID);

+			break;

+		case 2:

+			doSubscribe(SUBSCRIBER_2_ID);

+			break;

+		case 3:

+			doSubscribe(SUBSCRIBER_1_ID);

+			doSubscribe(SUBSCRIBER_2_ID);

+			break;

+		case 4:

+			doUnsubscribe(SUBSCRIBER_1_ID);

+			break;

+		case 5:

+			doUnsubscribe(SUBSCRIBER_2_ID);

+			break;

+		case 6:

+			doUnsubscribe(SUBSCRIBER_1_ID);

+			doUnsubscribe(SUBSCRIBER_2_ID);

+			break;

+		case 7:

+			doGetStatus(SUBSCRIBER_1_ID);

+			break;

+		case 8:

+			doGetStatus(SUBSCRIBER_2_ID);

+			break;

+		case 9:

+			System.exit(0);

+			break;

+		default:

+			break;

+		}

+	}

+	

+	private void doSubscribe (String ID) throws Exception {

+		EventingClientBean bean = new EventingClientBean ();

+		

+		String subscribingAddress = null;

+		if (SUBSCRIBER_1_ID.equals(ID)) {

+            subscribingAddress = "http://" + serverIP + ":" + port + listner1AddressPart;

+		} else if (SUBSCRIBER_2_ID.equals(ID)) {

+            subscribingAddress = "http://" + serverIP + ":" + port + listner2AddressPart;

+		}

+	

+		bean.setDeliveryEPR(new EndpointReference (subscribingAddress));

+	

+		//uncomment following to set an expiration time of 10 minutes.

+//		Date date = new Date ();

+//		date.setMinutes(date.getMinutes()+10);

+//		bean.setExpirationTime(date);

+		

+		eventingClient.subscribe(bean,ID);

+		Thread.sleep(1000);   //TODO remove if not sequired

+	}

+	

+	private void doUnsubscribe (String ID) throws Exception {

+		eventingClient.unsubscribe(ID);

+		Thread.sleep(1000);   //TODO remove if not sequired

+	}

+	

+	private void doGetStatus (String ID) throws Exception {

+		SubscriptionStatus status  = eventingClient.getSubscriptionStatus(ID);

+		Thread.sleep(1000);   //TODO remove if not sequired

+		

+		String statusValue = status.getExpirationValue();

+		System.out.println("Status of the subscriber '" + ID +"' is" + statusValue);

+	}

+	

+	private OMElement getDummyMethodRequestElement() {

+		OMFactory fac = OMAbstractFactory.getOMFactory();

+		OMNamespace namespace = fac.createOMNamespace(applicationNamespaceName,"ns1");

+		return fac.createOMElement(dummyMethod, namespace);

+	}

+	

+}

diff --git a/rampart_1_1/modules/samples/eventing/src/sample/eventing/ListnerService1.java b/rampart_1_1/modules/samples/eventing/src/sample/eventing/ListnerService1.java
new file mode 100644
index 0000000..ee9ba48
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/src/sample/eventing/ListnerService1.java
@@ -0,0 +1,32 @@
+/*

+ * Copyright 2004,2005 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 sample.eventing;

+

+import org.apache.axiom.om.OMElement;

+

+public class ListnerService1 {

+	

+	String name = "ListnerService1";

+

+	public void publish(OMElement param) throws Exception {

+		System.out.println("\n");

+		System.out.println("'" + name + "' got a new publication...");

+		System.out.println(param);

+		System.out.println("\n");

+	}

+

+}

diff --git a/rampart_1_1/modules/samples/eventing/src/sample/eventing/ListnerService2.java b/rampart_1_1/modules/samples/eventing/src/sample/eventing/ListnerService2.java
new file mode 100644
index 0000000..04d270f
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/src/sample/eventing/ListnerService2.java
@@ -0,0 +1,32 @@
+/*

+ * Copyright 2004,2005 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 sample.eventing;

+

+import org.apache.axiom.om.OMElement;

+

+public class ListnerService2 {

+  

+	String name = "ListnerService2";

+  

+	public void publish(OMElement param) throws Exception  {

+		System.out.println("\n");

+		System.out.println("'" + name +  "' got a new publication...");

+		System.out.println(param);

+		System.out.println("\n");

+	}

+

+}

diff --git a/rampart_1_1/modules/samples/eventing/src/sample/eventing/PublisherService.java b/rampart_1_1/modules/samples/eventing/src/sample/eventing/PublisherService.java
new file mode 100644
index 0000000..a46433d
--- /dev/null
+++ b/rampart_1_1/modules/samples/eventing/src/sample/eventing/PublisherService.java
@@ -0,0 +1,94 @@
+/*

+ * Copyright 2004,2005 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 sample.eventing;

+

+import java.util.Random;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.savan.publication.client.PublicationClient;

+import org.apache.savan.storage.SubscriberStore;

+import org.apache.savan.util.CommonUtil;

+

+public class PublisherService {

+  

+	ServiceContext serviceContext = null;

+	

+	public void init(ServiceContext serviceContext) throws AxisFault {

+		System.out.println("Eventing Service INIT called");

+		this.serviceContext = serviceContext;

+		

+		PublisherThread thread = new PublisherThread ();

+		thread.start();

+	}

+  

+	public void dummyMethod(OMElement param) throws Exception  {

+		System.out.println("Eventing Service dummy method called");

+	}

+	

+	private class PublisherThread extends Thread {

+		

+		String Publication = "Publication";

+		String publicationNamespaceValue = "http://tempuri/publication/";

+		Random r = new Random ();

+		

+		public void run () {

+			try {

+				while (true) {

+					

+					Thread.sleep(5000);

+					

+					//publishing

+					System.out.println("Publishing next publication...");

+					

+					SubscriberStore store = CommonUtil.getSubscriberStore(serviceContext.getAxisService());

+					if (store==null)

+						throw new Exception ("Cant find the Savan subscriber store");

+					

+					SOAPEnvelope envelope = getNextPublicationEnvelope ();

+					PublicationClient.sendPublication(envelope,serviceContext.getConfigurationContext(),store);

+				}

+				

+			} catch (Exception e) {

+				// TODO Auto-generated catch block

+				e.printStackTrace();

+			}

+		}

+		

+		public SOAPEnvelope getNextPublicationEnvelope () {

+			SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+			OMNamespace namespace = factory.createOMNamespace(publicationNamespaceValue,"ns1");

+			OMElement publicationElement = factory.createOMElement(Publication,namespace);

+			

+			int value = r.nextInt();

+			publicationElement.setText(Integer.toString(value));

+			

+			OMElement publishMethod = factory.createOMElement("publish",namespace);

+			publishMethod.addChild(publicationElement);

+			

+			SOAPEnvelope envelope = factory.getDefaultEnvelope();

+			envelope.getBody().addChild(publishMethod);

+			

+			return envelope;

+		}

+	}

+}

diff --git a/rampart_1_1/modules/samples/faulthandling/README.txt b/rampart_1_1/modules/samples/faulthandling/README.txt
new file mode 100644
index 0000000..0803b5e
--- /dev/null
+++ b/rampart_1_1/modules/samples/faulthandling/README.txt
@@ -0,0 +1,47 @@
+Sample: Exception Handling using WSDL Faults

+==============================================

+

+Introduction

+============

+

+This sample demonstrates how exceptions can be handled using WSDL faults, in other words, how to specify a WSDL fault in order to allow your service to communicate exception pathways to your clients. 

+

+Running of this sample assumes that you are running this within the extracted release folder.

+

+Pre-Requisites

+==============

+Apache Ant 1.6.2 or later

+

+

+Building The Service

+=====================

+

+* Type ant generate.service or just ant from Axis2_HOME/samples/faulthandling.

+* Then go to Axis2_HOME/bin directory and run either axis2server.bat or axis2server.sh depending on your platform.

+

+If you go to  http://localhost:8080/axis2/ you should see BankService is deployed. 

+

+Running The Client

+==================

+

+Invoke the client/src/example/BankClient.java class. You may use the command scripts to do so. You need to supply 3 parameters to the command- url, account and amount.

+

+ * ant run.client -Durl=http://localhost:8080/axis2/services/BankService -Daccount=13 -Damt=400

+   Throws AccountNotExistFaultMessageException. You will see "Account#13 does not exist"  

+ * ant run.client -Durl=http://localhost:8080/axis2/services/BankService -Daccount=88 -Damt=1200

+   Throws InsufficientFundsFaultMessageException. You will see "Account#88 has balance of 1000. It cannot support withdrawal   of 1200"  

+ * ant run.client -Durl=http://localhost:8080/axis2/services/BankService -Daccount=88 -Damt=400

+   Succeeds with a balance of 600. You will see "Balance = 600"  

+

+When you call ant run.client with parameters, before running client/src/example/BankClient.java class, it does the following as well:

+ * Generate the stubs (for the client) from the WSDL

+ * Compile the client classes

+ * Create a Jar of the client classes and copy it to build/client/BankService-test-client.jar

+

+Advanced Guide

+==============

+For more details kindly see doc/FaultHandlingSampleGuide.html

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

diff --git a/rampart_1_1/modules/samples/faulthandling/bank.wsdl b/rampart_1_1/modules/samples/faulthandling/bank.wsdl
new file mode 100644
index 0000000..5595407
--- /dev/null
+++ b/rampart_1_1/modules/samples/faulthandling/bank.wsdl
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions targetNamespace="http://example"

+	xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:tns="http://example"

+	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 elementFormDefault="qualified" targetNamespace="http://example"

+			xmlns="http://www.w3.org/2001/XMLSchema"

+			xmlns:apachesoap="http://xml.apache.org/xml-soap"

+			xmlns:tns="http://example" xmlns:intf="http://example"

+			xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

+			

+			<element name="withdraw">

+				<complexType>

+					<sequence>

+						<element name="account" type="xsd:string"/>

+						<element name="amount" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			

+			<element name="withdrawResponse">

+				<complexType>

+					<sequence>

+						<element name="balance" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			

+			<element name="AccountNotExistFault">

+				<complexType>

+					<sequence>

+						<element name="account" type="xsd:string"/>

+					</sequence>

+				</complexType>

+			</element>

+			

+			<element name="InsufficientFundFault">

+				<complexType>

+					<sequence>

+						<element name="account" type="xsd:string"/>

+						<element name="balance" type="xsd:int"/>

+						<element name="requestedFund" type="xsd:int"/>

+					</sequence>

+				</complexType>

+			</element>

+			

+		</schema>

+	</wsdl:types>

+	

+	<wsdl:message name="withdrawRequest">

+		<wsdl:part element="tns:withdraw" name="parameters"/>

+	</wsdl:message>

+	

+	<wsdl:message name="withdrawResponse">

+		<wsdl:part element="tns:withdrawResponse" name="return"/>

+	</wsdl:message>

+	

+	<wsdl:message name="InsufficientFundFaultMessage">

+		<wsdl:part element="tns:InsufficientFundFault" name="fault"/>

+	</wsdl:message>

+	

+	<wsdl:message name="AccountNotExistFaultMessage">

+		<wsdl:part element="tns:AccountNotExistFault" name="fault"/>

+	</wsdl:message>

+	

+	<wsdl:portType name="Bank">

+		<wsdl:operation name="withdraw">

+			<wsdl:input message="tns:withdrawRequest" name="withdrawRequest"/>

+			<wsdl:output message="tns:withdrawResponse" name="withdrawResponse"/>

+			<wsdl:fault message="tns:AccountNotExistFaultMessage" name="AccountNotExistException"/>

+			<wsdl:fault message="tns:InsufficientFundFaultMessage" name="InsufficientFundException"/>

+		</wsdl:operation>

+		

+	</wsdl:portType>

+	

+	<wsdl:binding name="BankSoapBinding" type="tns:Bank">

+		<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<wsdl:operation name="withdraw">

+			<wsdlsoap:operation soapAction=""/>

+			<wsdl:input name="withdrawRequest">

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output name="withdrawResponse">

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+			<wsdl:fault name="InsufficientFundException">

+				<wsdlsoap:fault name="InsufficientFundException" use="literal"/>

+			</wsdl:fault>

+			<wsdl:fault name="AccountNotExistException">

+				<wsdlsoap:fault name="AccountNotExistException" use="literal"/>

+			</wsdl:fault>

+		</wsdl:operation>

+	</wsdl:binding>

+	

+	<wsdl:service name="BankService">

+		<wsdl:port binding="tns:BankSoapBinding" name="Bank">

+			<wsdlsoap:address location="http://localhost:8080/bank/services/Bank"/>

+		</wsdl:port>

+	</wsdl:service>

+	

+</wsdl:definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/faulthandling/build.xml b/rampart_1_1/modules/samples/faulthandling/build.xml
new file mode 100644
index 0000000..24beb6a
--- /dev/null
+++ b/rampart_1_1/modules/samples/faulthandling/build.xml
@@ -0,0 +1,135 @@
+<project basedir="." default="generate.service">
+
+    <property environment="env"/>
+
+    <property name="wsdl.uri" value="bank.wsdl"/>
+    <property name="service.target" value="build/service"/>
+    <property name="client.target" value="build/client"/>
+
+    <!-- Build the service, then the client. -->
+    <target name="jar">
+        <ant dir="service" target="jar.server"/>
+        <ant dir="client"/>
+    </target>
+
+    <target name="run.client" depends="gen.stub">
+
+        <condition property="params.ok">
+            <and>
+                <isset property="url"/>
+                <isset property="account"/>
+                <isset property="amt"/>
+            </and>
+        </condition>
+
+        <fail message="One of the parameters are not set. Usage: BankClient -Durl=&lt;url&gt; -Daccount=&lt;account&gt; -Damt=&lt;amount&gt;"
+        unless="params.ok"/>
+        
+        <java classname="example.BankClient" fork="true">
+            <arg line="${url} ${account} ${amt}"/>
+            <classpath>
+                <pathelement location="${client.target}/BankService-test-client.jar"/>
+                <fileset dir="../../lib">
+                    <include name="*.jar"/>
+                </fileset>
+            </classpath>
+        </java>
+    </target>
+
+    <target name="generate.all" depends="generate.service,gen.stub"/>
+
+    <target name="generate.service">
+
+        <delete dir="${service.target}"/>
+        <mkdir dir="${service.target}"/>
+        <mkdir dir="${service.target}/classes"/>
+
+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+            <arg line="-uri ${wsdl.uri}"/>
+            <arg line="-ss"/>
+            <arg line="-sd"/>
+            <arg line="-o ${service.target}"/>
+            <!-- Output directory in which to generate files --> <!-- NB it generates to the src folder under this directory!! -->
+            <classpath>
+                <fileset dir="../../lib">
+                    <include name="*.jar"/>
+                </fileset>
+            </classpath>
+        </java>
+
+        <!--copy the already written skeleton class-->
+        <copy file="service/src/example/BankServiceSkeleton.java"
+              todir="${service.target}/src/example"
+              overwrite="yes"/>
+
+        <!--First let's compile the classes-->
+        <javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true"
+               destdir="${service.target}/classes" srcdir="${service.target}/src">
+            <classpath>
+                <fileset dir="../../lib">
+                    <include name="*.jar"/>
+                </fileset>
+            </classpath>
+        </javac>
+
+        <!--aar them up -->
+        <copy toDir="${service.target}/classes/META-INF" failonerror="false">
+            <fileset dir="${service.target}/resources">
+                <include name="*.xml"/>
+                <include name="*.wsdl"/>
+                <include name="*.xsd"/>
+            </fileset>
+        </copy>
+        <jar destfile="${service.target}/BankService.aar">
+            <fileset excludes="**/Test.class" dir="${service.target}/classes"/>
+        </jar>
+
+        <copy file="${service.target}/BankService.aar" tofile="../../repository/services/sample-faulthandling.aar"
+              overwrite="true"/>
+
+    </target>
+
+    <target name="gen.stub">
+        <delete dir="${client.target}"/>
+        <mkdir dir="${client.target}"/>
+        <mkdir dir="${client.target}/classes"/>
+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+            <arg line="-uri ${wsdl.uri}"/>
+            <arg line="-u"/>
+            <arg line="-o ${client.target}"/>
+            <classpath>
+                <fileset dir="../../lib">
+                    <include name="*.jar"/>
+                </fileset>
+            </classpath>
+        </java>
+
+        <copy file="client/src/example/BankClient.java" todir="${client.target}/src/example"/>
+
+        <!--now compile the stub classes-->
+        <javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true"
+               destdir="${client.target}/classes">
+            <src path="${client.target}/src"/>
+            <classpath>
+                <fileset dir="../../lib">
+                    <include name="*.jar"/>
+                </fileset>
+            </classpath>
+        </javac>
+
+        <!--jar the compiled stuff-->
+        <jar destfile="${client.target}/BankService-test-client.jar">
+            <fileset dir="${client.target}/classes">
+                <exclude name="**/META-INF/*.*"/>
+                <exclude name="**/lib/*.*"/>
+                <exclude name="**/*MessageReceiver.class"/>
+                <exclude name="**/*Skeleton.class"/>
+            </fileset>
+        </jar>
+    </target>
+
+    <target name="clean">
+        <delete dir="build"/>
+    </target>
+
+</project>
diff --git a/rampart_1_1/modules/samples/faulthandling/client/build.xml b/rampart_1_1/modules/samples/faulthandling/client/build.xml
new file mode 100644
index 0000000..8208aa7
--- /dev/null
+++ b/rampart_1_1/modules/samples/faulthandling/client/build.xml
@@ -0,0 +1,43 @@
+<project basedir="." default="jar.client">

+

+    <property environment="env"/>

+

+    <property name="project.base.dir" value="."/>

+    <property name="parent.dir" value=".."/>

+

+    <property name="wsdl.uri" value="${parent.dir}/bank.wsdl"/>

+

+    <property name="src" value="${project.base.dir}/src"/>

+    <property name="target" value="${project.base.dir}/target"/>

+    <property name="target.java" value="${target}/src"/>

+    <property name="target.classes" value="${target}/classes"/>

+

+    <target name="check.dependency" unless="env.AXIS2_HOME">

+        <echo message="AXIS2_HOME must be set"/>

+    </target>

+

+    <target name="gen.stub" if="env.AXIS2_HOME" depends="check.dependency">

+        <delete dir="${target}"/>

+        <mkdir dir="${target}"/>

+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">

+            <arg line="-uri ${wsdl.uri}"/>

+            <arg line="-u"/>

+            <arg line="-o ${target}"/>

+            <classpath>

+                <fileset dir="${env.AXIS2_HOME}\lib">

+                    <include name="*.jar"/>

+                </fileset>

+            </classpath>

+        </java>

+    </target>

+

+    <!-- Create the service archive by executing target\build.xml (jar.server) -->

+    <target name="jar.client" if="env.AXIS2_HOME" depends="gen.stub">

+        <copy todir="${target.java}">

+            <fileset dir="${src}"/>

+        </copy>

+        <ant dir="${target}"/>

+        <copy file="${target}\build\lib\BankService-test-client.jar" todir=".."/>

+    </target>

+

+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/faulthandling/client/src/example/BankClient.java b/rampart_1_1/modules/samples/faulthandling/client/src/example/BankClient.java
new file mode 100644
index 0000000..8eba7c7
--- /dev/null
+++ b/rampart_1_1/modules/samples/faulthandling/client/src/example/BankClient.java
@@ -0,0 +1,66 @@
+/*

+ * Copyright 2004,2005 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 example;

+

+import java.rmi.RemoteException;

+

+public final class BankClient {

+

+	/**

+	 * If account# == "13", then you will get a AccountNotExistFault.

+	 * otherwise if you provide an amount > 1000, you will get a InsufficientFundFaultMessageException,

+	 * otherwise you will get a response with a balance equal to 1000 - amountWithdrawn. 

+	 */

+	public static void main(String[] args) {

+

+		if (args.length != 3) {

+			System.err.println("Usage: BankClient -Durl=<url> -Daccount=<account> -Damt=<amount>");

+			return;

+		}

+		

+		final String url = args[0];

+		final String account = args[1];

+		final Integer withdrawalAmount = new Integer(args[2]);

+		

+		System.out.println();

+		System.out.println("Withdrawing " + withdrawalAmount + " dollars from account#" + account);

+		

+        try {

+            final BankService bankService = new BankServiceStub(url);

+            final Withdraw withdrawRequest = new Withdraw();

+            withdrawRequest.setAccount(account);

+            withdrawRequest.setAmount(withdrawalAmount.intValue());

+            

+            final WithdrawResponse withdrawResponse = bankService.withdraw(withdrawRequest);

+            System.out.println("Balance = " + withdrawResponse.getBalance());

+            

+        } catch (AccountNotExistFaultMessageException e) {

+            final AccountNotExistFault fault = e.getFaultMessage();

+            System.out.println("Account#" + fault.getAccount() + " does not exist");

+        } catch (InsufficientFundFaultMessageException e) {

+            final InsufficientFundFault fault = e.getFaultMessage();

+            System.out.println("Account#" + fault.getAccount() + " has balance of " + fault.getBalance() + ". It cannot support withdrawal of " + fault.getRequestedFund());

+        } catch (RemoteException e) {

+            e.printStackTrace();  

+        } catch (Exception e) {

+            e.printStackTrace(); 

+        }

+

+

+		

+	}

+}

diff --git a/rampart_1_1/modules/samples/faulthandling/docs/FaultHandlingSampleGuide.html b/rampart_1_1/modules/samples/faulthandling/docs/FaultHandlingSampleGuide.html
new file mode 100644
index 0000000..4e91735
--- /dev/null
+++ b/rampart_1_1/modules/samples/faulthandling/docs/FaultHandlingSampleGuide.html
@@ -0,0 +1,127 @@
+<html>
+<head>
+    <meta http-equiv="content-type" content="">
+    <title>:: Exception Handling using WSDL Faults ::</title>
+</head>
+
+<body>
+<h1>Exception Handling using WSDL Faults</h1>
+
+<p>This sample demonstrates how to specify a WSDL fault in order to allow
+    your service to communicate exception pathways to your clients.</p>
+
+<p>Running of this sample assumes that you are running this within the
+    extracted release folder.</p>
+
+<h2>Constructing the Service and Client</h2>
+
+<p>The first step is to generate the service skeleton and other interface
+    classes from the WSDL.</p>
+
+<p>Look at <em><a href="../bank.wsdl">bank.wsdl</a></em>. It defines the
+    interface for our service. Of particular interest are the
+    <strong>AccountNotExistFault</strong> and
+    <strong>InsufficientFundFault</strong> types defined in the wsdl:types
+    element.</p>
+
+<p>Using a command prompt, got to the folder of this example and type
+    <strong>ant generate.service</strong> or just <strong> ant</strong>. This
+    will:</p>
+<ul>
+    <li>Generate the source for all the service classes in
+        <em>build/service/src/example</em></li>
+    <li>Generate <em>services.xml</em> and a more complete
+        <em>BankService.wsdl</em> into the <em>build/service/resources</em>
+        folder.</li>
+    <li>Generate a <em>build/service/build.xml</em></li>
+    <li>Copies the pre-populated service skeleton class to the generated
+        code</li>
+    <li>Compile the Java classes for the service</li>
+    <li>Create the service archive and copy it to Axis2 repository
+        (<em>repository/services/</em>) as sample-faulthandling.aar.</li>
+</ul>
+
+<p>Open up <em>service/src/example/BankServiceSkeleton.java</em> and you will
+    see the following code fragment inside <strong>#withdraw</strong> method.
+    When <strong>generate.service</strong> has been executed, Axis2 generates a skeleton class
+    (<em>build/service/src/example/BankServiceSkeleton.java</em>) which has an empty method.
+    We replace it, the genedrated skeleton with a pre-populated skeleton class
+    (<em>service/src/example/BankServiceSkeleton.java</em>) which has the
+    following code inside it.</p>
+<pre> final String account = param0.getAccount();
+    if (account.equals("13")) {
+    final AccountNotExistFault fault = new AccountNotExistFault();
+    fault.setAccount(account);
+    AccountNotExistFaultMessageException messageException = new
+    AccountNotExistFaultMessageException("Account does
+    not exist!");
+    messageException.setFaultMessage(fault);
+    throw messageException;
+    }
+
+    final int amount = param0.getAmount();
+    if (amount &gt; 1000) {
+    final InsufficientFundFault fault = new InsufficientFundFault();
+    fault.setAccount(account);
+    fault.setBalance(1000);
+    fault.setRequestedFund(amount);
+    InsufficientFundFaultMessageException messageException = new
+    InsufficientFundFaultMessageException("Insufficient
+    funds");
+    messageException.setFaultMessage(fault);
+    throw messageException;
+    }
+
+    final WithdrawResponse response = new WithdrawResponse();
+    response.setBalance(1000 - amount);
+    return response;
+</pre>
+
+<p>Note that the source generated for the client will include the 2 faults
+    and the local Exceptions through which they will be transmitted. Also note
+    that the Exceptions are generated within the <em>BankStub</em> class.</p>
+
+<h2>Deploying the Service</h2>
+
+<p>The above step must have already copied your BankService.aar file in to
+    <em>repository/services/</em> folder. Then go to <em>bin</em> folder and run
+    either of axis2server.bat or axis2server.sh, depending on your platform in
+    order to startup Axis2 server.</p>
+
+<p>With the default configuration, if you go to <a
+        href="http://localhost:8080/axis2/"> http://localhost:8080/axis2/</a> you
+    should see <em>BankService</em> was deployed.</p>
+
+<h2>Running the Client</h2>
+
+<p>Invoke the <em>client/src/example/BankClient</em>.java class. You may use
+    the command scripts to do so. You need to supply 3 parameters to the command-
+    url, account and amount.</p>
+<ul>
+    <li><strong>ant run.client
+        -Durl=http://localhost:8080/axis2/services/BankService -Daccount=13
+        -Damt=400</strong><br>
+        Throws AccountNotExistFaultMessageException. You will see "Account#13
+        does not exist"</li>
+    <li><strong>ant run.client
+        -Durl=http://localhost:8080/axis2/services/BankService -Daccount=88
+        -Damt=1200</strong><br>
+        Throws InsufficientFundsFaultMessageException. You will see "Account#88
+        has balance of 1000. It cannot support withdrawal of 1200"<br>
+ </li>
+    <li><strong>ant run.client
+        -Durl=http://localhost:8080/axis2/services/BankService -Daccount=88
+        -Damt=400</strong><br>
+        Succeeds with a balance of 600. You will see "Balance = 600"</li>
+</ul>
+When you call ant run.client with parameters, before running
+<em>client/src/example/BankClient.java</em> class, it does the following as
+well:
+<ul>
+    <li>Generate the stubs (for the client) from the WSDL</li>
+    <li>Compile the client classes</li>
+    <li>Create a Jar of the client classes and copy it to
+        <em>build/client/BankService-test-client.jar</em></li>
+</ul>
+</body>
+</html>
diff --git a/rampart_1_1/modules/samples/faulthandling/service/build.xml b/rampart_1_1/modules/samples/faulthandling/service/build.xml
new file mode 100644
index 0000000..e17d516
--- /dev/null
+++ b/rampart_1_1/modules/samples/faulthandling/service/build.xml
@@ -0,0 +1,40 @@
+<project basedir="." default="gen.skeleton">

+	

+	<property environment="env"/>

+	

+	<property name="project.base.dir" value="."/>

+	<property name="parent.dir" value=".."/>

+	

+	<property name="wsdl.uri" value="${parent.dir}/bank.wsdl"/>

+	

+	<property name="src" value="${project.base.dir}/src"/>

+	<property name="target" value="${project.base.dir}/target"/>

+	

+	<target name="check.dependency" unless="env.AXIS2_HOME">

+		<echo message="AXIS2_HOME must be set"/>

+	</target>

+	

+	<target name="gen.skeleton" if="env.AXIS2_HOME" depends="check.dependency">

+

+

+        <delete dir="${target}"/>

+		<mkdir dir="${target}"/>

+		<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">

+			<arg line="-uri ${wsdl.uri}"/>

+			<arg line="-ss"/>

+			<arg line="-sd"/>

+			<arg line="-o ${target}"/> <!-- Output directory in which to generate files --> <!-- NB it generates to the src folder under this directory!! -->

+			<classpath>

+				<fileset dir="${env.AXIS2_HOME}\lib">

+					<include name="*.jar"/>

+				</fileset>

+			</classpath>

+		</java>

+	</target>

+	

+	<!-- Create the service archive by executing target\build.xml (jar.server) -->

+	<target name="jar.server" if="env.AXIS2_HOME">

+		<ant dir="${target}"/>

+		<copy file="${target}\build\lib\BankService.aar" todir=".."/>

+	</target>

+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/faulthandling/service/src/example/BankServiceSkeleton.java b/rampart_1_1/modules/samples/faulthandling/service/src/example/BankServiceSkeleton.java
new file mode 100644
index 0000000..389c48e
--- /dev/null
+++ b/rampart_1_1/modules/samples/faulthandling/service/src/example/BankServiceSkeleton.java
@@ -0,0 +1,46 @@
+
+    /**
+     * BankServiceSkeleton.java
+     *
+     */
+    package example;
+    /**
+     *  BankServiceSkeleton java skeleton for the axisService
+     */
+    public class BankServiceSkeleton{
+
+
+        /**
+
+          * @param param0
+
+         */
+        public  example.WithdrawResponse withdraw(example.Withdraw param0)
+           throws InsufficientFundFaultMessageException,AccountNotExistFaultMessageException{
+                final String account = param0.getAccount();
+        if (account.equals("13")) {
+            final AccountNotExistFault fault = new AccountNotExistFault();
+            fault.setAccount(account);
+            AccountNotExistFaultMessageException messageException = new AccountNotExistFaultMessageException("Account does not exist!");
+            messageException.setFaultMessage(fault);
+            throw messageException;
+        }
+
+        final int amount = param0.getAmount();
+        if (amount > 1000) {
+            final InsufficientFundFault fault = new InsufficientFundFault();
+            fault.setAccount(account);
+            fault.setBalance(1000);
+            fault.setRequestedFund(amount);
+            InsufficientFundFaultMessageException messageException = new InsufficientFundFaultMessageException("Insufficient funds");
+            messageException.setFaultMessage(fault);
+            throw messageException;
+        }
+
+        final WithdrawResponse response = new WithdrawResponse();
+        response.setBalance(1000 - amount);
+        return response;
+        }
+
+    }
+
diff --git a/rampart_1_1/modules/samples/googlespellcheck/README.txt b/rampart_1_1/modules/samples/googlespellcheck/README.txt
new file mode 100644
index 0000000..064763f
--- /dev/null
+++ b/rampart_1_1/modules/samples/googlespellcheck/README.txt
@@ -0,0 +1,45 @@
+Sample: Google Spell Checker

+=============================

+

+Introduction

+============

+

+This example demonstrates the use of asynchronous Web method invocations. The user can continue to type 

+text on the text editor where the text editor does the spell check from a hosted Web service. The Web 

+method invocation is carried out in an asynchronous manner allowing the user to continuously type text 

+without having to stall for the response.

+

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+

+Running The Sample

+==================

+

+To generate stubs and run the text editor, type ant.

+

+Note that when running the build script, a stub is generated for the hosted spell check service at:

+http://tools.wso2.net:12001/axis2/services/SimplifiedSpellCheck?wsdl

+

+N.B.: This public Web service uses Google Web APIs to provide spell check service. In case of a

+failure SimplifiedSpellCheck echo sends back the phrase (sent for spell check) instead of throwing

+an error. Therefore, if the spell check editor just outputs the input words/phrase, that is because

+of this behavior of the SimplifiedSpellCheck service.

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

+

+

+

+

+

+

+

+

+

+

+

diff --git a/rampart_1_1/modules/samples/googlespellcheck/build.xml b/rampart_1_1/modules/samples/googlespellcheck/build.xml
new file mode 100644
index 0000000..bbe17da
--- /dev/null
+++ b/rampart_1_1/modules/samples/googlespellcheck/build.xml
@@ -0,0 +1,95 @@
+
+<project basedir="." default="run.client">
+	
+	<property name="wsdl" value="http://tools.wso2.net:12001/axis2/services/SimplifiedSpellCheck?wsdl" />
+	
+	<property name="dest.dir" value="build" />
+	
+	<property name="dest.dir.classes" value="${dest.dir}/classes" />
+	
+	<property name="dest.dir.lib" value="${dest.dir}/lib" />
+	
+	<property name="axis2.home" value="../../" />
+	
+	<path id="client.class.path">
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+		<fileset dir="${dest.dir.lib}" includes="*.jar" />
+	</path>
+	
+	<path id="build.class.path">
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+	</path>
+	
+	<target name="clean">
+		
+		<delete dir="${dest.dir}" />
+		
+		<delete dir="src" includes="sample/spellcheck/stub/**"/>
+	
+	</target>
+	
+	<target name="prepare">
+		
+		<mkdir dir="${dest.dir}" />
+		
+		<mkdir dir="${dest.dir.classes}" />
+		
+		<mkdir dir="${dest.dir.lib}" />
+	
+	</target>
+	
+	<target name="run.client" depends="clean,prepare">
+	
+		<antcall target="client.codegen-stub">
+			<param name="wsdl" value="${wsdl}"/>
+		</antcall>
+		
+		<antcall target="client.compile" />
+		
+		<antcall target="client.jar" />
+		
+		<antcall target="client.run" />	
+	</target>
+	
+	<target name="client.codegen-stub">
+	
+		<java classname="org.apache.axis2.wsdl.WSDL2Java">
+			<arg value="-uri" />
+			<arg value="${wsdl}" />
+			<arg value="-p" />
+			<arg value="sample.spellcheck.stub" />
+			<arg value="-o" />
+			<arg value="src" />
+			<arg value="-f"/>
+			<classpath refid="build.class.path" />
+		</java>
+	
+	</target>
+	
+	<target name="client.compile">
+		
+		<javac srcdir="src" destdir="${dest.dir.classes}">
+			<classpath refid="build.class.path" />
+		</javac>
+	
+	</target>
+	
+	<target name="client.jar">
+		
+		<jar basedir="${dest.dir.classes}" destfile="${dest.dir.lib}/editor.jar" />
+	
+	</target>
+	
+	<target name="client.run">
+	
+		<java classname="sample.spellcheck.editor.SuggestionForm" fork="true">
+			<classpath refid="client.class.path" />
+		</java>
+		
+	</target>
+
+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/AsyncPanel.java b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/AsyncPanel.java
new file mode 100644
index 0000000..8682016
--- /dev/null
+++ b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/AsyncPanel.java
@@ -0,0 +1,110 @@
+/*
+* Copyright 2004,2005 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 sample.spellcheck.editor;
+
+import java.awt.Color;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+/**
+ * class sample.google.spellcheck.AsyncPanel
+ * This Impements its own GUI of the Asynchronous Client and it updates the string after getting the response to textarea
+ */
+public class AsyncPanel extends javax.swing.JPanel implements Observer,
+        KeyListener {
+    FormModel formModel;
+    JTextArea writingTextArea;
+    JTextArea displayTextArea;
+    JTextField errorMessageField;
+
+    public AsyncPanel() {
+        GridBagLayout gbLayout = new GridBagLayout();
+        GridBagConstraints constraint = new GridBagConstraints();
+        this.setLayout(gbLayout);
+
+        formModel = new FormModel(this);
+
+        writingTextArea = new JTextArea();
+        writingTextArea.setLineWrap(true);
+
+        displayTextArea = new JTextArea();
+        displayTextArea.setEditable(false);
+        displayTextArea.setLineWrap(true);
+
+        errorMessageField = new JTextField();
+        errorMessageField.setEditable(false);
+        errorMessageField.setBackground(Color.LIGHT_GRAY);
+        errorMessageField.setForeground(Color.RED);
+
+        JScrollPane scrollPaneGet = new JScrollPane(writingTextArea);
+        JScrollPane scrollPaneSet = new JScrollPane(displayTextArea);
+
+        writingTextArea.setText("Enter a String");
+        writingTextArea.addKeyListener(this);
+
+        constraint.fill = GridBagConstraints.BOTH;
+        constraint.gridx = 0;
+        constraint.weightx = 1;
+        constraint.weighty = 8;
+        gbLayout.setConstraints(scrollPaneGet, constraint);
+        this.add(scrollPaneGet);
+        gbLayout.setConstraints(scrollPaneSet, constraint);
+        this.add(scrollPaneSet);
+        constraint.weighty = 1;
+        gbLayout.setConstraints(errorMessageField, constraint);
+        this.add(errorMessageField);
+
+
+    }
+
+    public void update(String message) {
+        displayTextArea.setText(displayTextArea.getText() + " " + message);
+    }
+
+    //updates the error message to the error message display area
+    public void updateError(String message) {
+        errorMessageField.setText(message);
+    }
+
+
+    public void keyPressed(KeyEvent e) {
+        int key = e.getKeyChar();
+        if ((key == KeyEvent.VK_SPACE) || (key == KeyEvent.VK_ENTER)) {
+            String[] words = writingTextArea.getText().split("\\s");
+            if (words.length > 0)
+                formModel.doAsyncSpellingSuggestion(words[words.length - 1]);
+        }
+    }
+
+    public void keyReleased(KeyEvent e) {
+    }
+
+    public void keyTyped(KeyEvent e) {
+    }
+
+    public void clear() {
+        displayTextArea.setText("");
+        writingTextArea.setText("");
+        errorMessageField.setText("");
+    }
+}
diff --git a/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/FormModel.java b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/FormModel.java
new file mode 100644
index 0000000..18294c6
--- /dev/null
+++ b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/FormModel.java
@@ -0,0 +1,75 @@
+/*
+* Copyright 2004,2005 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 sample.spellcheck.editor;
+
+import sample.spellcheck.stub.SimplifiedSpellCheckStub;
+import sample.spellcheck.stub.SimplifiedSpellCheckStub.DoSpellingSuggestions;
+import sample.spellcheck.stub.SimplifiedSpellCheckStub.DoSpellingSuggestionsResponse;
+
+/**
+ * class sample.google.spellcheck.FormModel
+ * This is the Impementation of the Asynchronous Client
+ */
+public class FormModel {
+    Observer observer;
+   
+    public FormModel(Observer observer) {
+        this.observer = observer;
+    }
+
+    public void doAsyncSpellingSuggestion(String word) {
+               
+        try {
+            
+            SimplifiedSpellCheckStub stub = new SimplifiedSpellCheckStub();
+            
+            DoSpellingSuggestions doSpellingSuggestions = new DoSpellingSuggestions();
+            doSpellingSuggestions.setPhrase(word);
+            
+            SimplifiedSpellCheckCallbackHandlerImpl callbackHandlerImpl = new SimplifiedSpellCheckCallbackHandlerImpl(observer, word);
+            
+            stub.startdoSpellingSuggestions(doSpellingSuggestions, callbackHandlerImpl);
+        
+        } catch (Exception ex) {
+            observer.updateError(ex.getMessage());
+        }
+    }
+
+    public void doSyncSpellingSuggestion(String word) {
+        
+        try {
+            SimplifiedSpellCheckStub stub = new SimplifiedSpellCheckStub();
+            
+            DoSpellingSuggestions suggestions = new DoSpellingSuggestions();
+            suggestions.setPhrase(word);
+            
+            DoSpellingSuggestionsResponse response = stub.doSpellingSuggestions(suggestions);
+            String suggestion = response.get_return();
+            
+            if (suggestion == null) {
+                observer.update("No suggestions found for " + word);
+                
+            } else  {
+                observer.update(suggestion);
+            }
+            
+        } catch (Exception ex) {
+            observer.updateError(ex.getMessage());
+        }
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/Observer.java b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/Observer.java
new file mode 100644
index 0000000..332c23a
--- /dev/null
+++ b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/Observer.java
@@ -0,0 +1,31 @@
+/*
+* Copyright 2004,2005 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 sample.spellcheck.editor;
+
+
+/**
+ * interface sample.google.spellcheck.Observer
+ */
+public interface Observer {
+    // updates the message to the main test display area
+    public void update(String message);
+
+    //updates the error message to the error message display area
+    public void updateError(String message);
+
+    public void clear();
+}
diff --git a/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SimplifiedSpellCheckCallbackHandlerImpl.java b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SimplifiedSpellCheckCallbackHandlerImpl.java
new file mode 100644
index 0000000..2c4c9c2
--- /dev/null
+++ b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SimplifiedSpellCheckCallbackHandlerImpl.java
@@ -0,0 +1,53 @@
+package sample.spellcheck.editor;
+
+import sample.spellcheck.stub.SimplifiedSpellCheckCallbackHandler;
+import sample.spellcheck.stub.SimplifiedSpellCheckStub.DoSpellingSuggestionsResponse;
+
+/*
+ * 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.
+ */
+
+public class SimplifiedSpellCheckCallbackHandlerImpl extends SimplifiedSpellCheckCallbackHandler {
+
+    private Observer observer = null;
+    private String phrase = null;
+    
+    public SimplifiedSpellCheckCallbackHandlerImpl(Observer observer, String phrase) {
+        this.observer = observer;
+        this.phrase = phrase;
+    }
+    
+    public void receiveResultdoSpellingSuggestions(DoSpellingSuggestionsResponse param1) {
+        String suggestion = param1.get_return();
+        
+        if (suggestion == null) {
+            observer.update(phrase);
+            observer.updateError(
+                    "No suggestions found for " + phrase);
+        } else {
+            observer.update(suggestion);
+        }
+    }
+
+    public void receiveErrordoSpellingSuggestions(Exception e) {
+        e.printStackTrace();
+        observer.updateError(e.getMessage());
+    }   
+    
+    
+    
+    
+}
+
diff --git a/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SuggestionForm.java b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SuggestionForm.java
new file mode 100644
index 0000000..43dc8a5
--- /dev/null
+++ b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SuggestionForm.java
@@ -0,0 +1,205 @@
+/*
+* Copyright 2004,2005 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 sample.spellcheck.editor;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.HeadlessException;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.IOException;
+
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.KeyStroke;
+import javax.swing.WindowConstants;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
+
+/**
+ * class sample.google.spellcheck.SuggestionForm
+ * This is the implementation of the GUI
+ */
+public class SuggestionForm extends javax.swing.JFrame implements HyperlinkListener {
+    private AsyncPanel asyncPanel;
+    private SyncPanel syncPanel;
+    private JEditorPane helpDisplayPane;
+
+    private JMenuItem syncMenuItem;
+    private JMenuItem asyncMenuItem;
+    private static final String HELP_FILE_NAME = "/docs/GoogleSpellCheck.html";
+
+
+    public SuggestionForm() throws HeadlessException {
+        asyncPanel = new AsyncPanel();
+        syncPanel = new SyncPanel();
+
+        JMenuBar menuBar;
+        //Create the menu bar.
+        menuBar = new JMenuBar();
+
+        JMenu modeMenu = new JMenu("Mode");
+        modeMenu.setMnemonic(KeyEvent.VK_M);
+        syncMenuItem = new JMenuItem("Sync Mode", KeyEvent.VK_S);
+        syncMenuItem.setAccelerator(
+                KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
+        syncMenuItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setSyncPanel();
+            }
+        });
+        asyncMenuItem = new JMenuItem("ASync Mode", KeyEvent.VK_A);
+        asyncMenuItem.setAccelerator(
+                KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
+        asyncMenuItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setAsyncPanel();
+            }
+        });
+        modeMenu.add(syncMenuItem);
+        modeMenu.add(asyncMenuItem);
+
+        JMenu clearMenu = new JMenu("Clear");
+        clearMenu.setMnemonic(KeyEvent.VK_C);
+        JMenuItem clearMenuItem = new JMenuItem("Clear text boxes");
+        clearMenuItem.setAccelerator(
+                KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
+        clearMenuItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                asyncPanel.clear();
+                syncPanel.clear();
+            }
+        });
+        clearMenu.add(clearMenuItem);
+
+        JMenu helpMenu = new JMenu("Help");
+        JMenuItem mnuItemHelp = new JMenuItem("Show Help");
+        helpMenu.add(mnuItemHelp);
+
+        mnuItemHelp.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                showHelp();
+            }
+        });
+
+        menuBar.add(modeMenu);
+        menuBar.add(clearMenu);
+        menuBar.add(helpMenu);
+
+        this.setJMenuBar(menuBar);
+
+        this.getContentPane().setLayout(new GridLayout(1, 1));
+        setAsyncPanel();
+
+
+    }
+
+    public static void main(String[] args) {
+        SuggestionForm form = new SuggestionForm();
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        form.setLocation(screenSize.width / 4,
+                screenSize.height / 4);
+        form.setSize(screenSize.width / 2, screenSize.height / 2);
+        form.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+        //form.setResizable(false);
+        //form.pack();
+        form.setVisible(true);
+    }
+
+    private void setAsyncPanel() {
+        this.getContentPane().removeAll();
+        this.getContentPane().add(asyncPanel);
+        this.syncMenuItem.setEnabled(true);
+        this.asyncMenuItem.setEnabled(false);
+        this.getContentPane().repaint();
+        this.setTitle("Google Spell checker - Async Mode");
+        this.setVisible(true);
+
+    }
+
+    private void setSyncPanel() {
+        this.getContentPane().removeAll();
+        this.getContentPane().add(syncPanel);
+        this.syncMenuItem.setEnabled(false);
+        this.asyncMenuItem.setEnabled(true);
+        this.getContentPane().repaint();
+        this.setTitle("Google Spell checker - Sync Mode");
+        this.setVisible(true);
+    }
+
+    /**
+     * method showHelp
+     */
+    private void showHelp() {
+
+        JFrame frame = new JFrame();
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        frame.setLocation(screenSize.width / 5,
+                screenSize.height / 5);
+        frame.setSize(screenSize.width / 2, screenSize.height / 2);
+
+        BorderLayout layout = new BorderLayout();
+
+        JScrollPane jsp;
+
+
+        helpDisplayPane = new JEditorPane();
+        helpDisplayPane.addHyperlinkListener(this);
+        helpDisplayPane.setEditable(false);
+        helpDisplayPane.setContentType("text/html");
+
+        jsp = new JScrollPane(helpDisplayPane);
+
+        Container contentPane = frame.getContentPane();
+        contentPane.setLayout(layout);
+        contentPane.add(jsp, BorderLayout.CENTER);
+        String helpDoc = System.getProperty("user.dir") + HELP_FILE_NAME;
+
+        try {
+            helpDisplayPane.setPage(new File(helpDoc).toURL());
+        } catch (IOException e) {
+            JOptionPane.showMessageDialog(this, "Help file not detected", "Help file error",
+                    JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+        frame.setVisible(true);
+    }
+
+
+    public void hyperlinkUpdate(HyperlinkEvent e) {
+        if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+            try {
+                String url = e.getURL().toString();
+                helpDisplayPane.setPage(url);
+            } catch (Exception err) {
+                JOptionPane.showMessageDialog(this, "Help file not detected", err.getMessage(),
+                        JOptionPane.ERROR_MESSAGE);
+            }
+
+        }
+    }
+}
diff --git a/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SyncPanel.java b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SyncPanel.java
new file mode 100644
index 0000000..0232d55
--- /dev/null
+++ b/rampart_1_1/modules/samples/googlespellcheck/src/sample/spellcheck/editor/SyncPanel.java
@@ -0,0 +1,100 @@
+/*
+* Copyright 2004,2005 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 sample.spellcheck.editor;
+
+import javax.swing.*;
+
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+/**
+ * class sample.google.spellcheck.SyncPanel
+ * This Impements its own GUI of the Synchronous Client and it send the SOAP request after the mouse event.
+ */
+public class SyncPanel extends javax.swing.JPanel implements Observer,
+        ActionListener {
+    FormModel formModel;
+    JTextArea writingTextArea;
+    JTextArea displayTextArea;
+    JTextField errorMessageField;
+    JButton sendButton;
+
+    public SyncPanel() {
+        GridBagLayout gbLayout = new GridBagLayout();
+        GridBagConstraints constraint = new GridBagConstraints();
+        this.setLayout(gbLayout);
+
+        formModel = new FormModel(this);
+        writingTextArea = new javax.swing.JTextArea();
+        writingTextArea.setLineWrap(true);
+
+        displayTextArea = new javax.swing.JTextArea();
+        displayTextArea.setLineWrap(true);
+        displayTextArea.setEditable(false);
+
+        errorMessageField = new JTextField();
+        errorMessageField.setEditable(false);
+        errorMessageField.setBackground(Color.LIGHT_GRAY);
+        errorMessageField.setForeground(Color.RED);
+
+        sendButton = new javax.swing.JButton("Send");
+        JScrollPane scrollPaneget = new JScrollPane(writingTextArea);
+        JScrollPane scrollPaneset = new JScrollPane(displayTextArea);
+        writingTextArea.setText("Enter a String");
+
+        constraint.fill = GridBagConstraints.BOTH;
+        constraint.gridx = 0;
+        constraint.weightx = 1;
+        constraint.weighty = 8;
+        gbLayout.setConstraints(scrollPaneget, constraint);
+        this.add(scrollPaneget);
+        gbLayout.setConstraints(scrollPaneset, constraint);
+        this.add(scrollPaneset);
+        constraint.weighty = 1;
+        gbLayout.setConstraints(sendButton, constraint);
+        this.add(sendButton);
+        gbLayout.setConstraints(errorMessageField, constraint);
+        this.add(errorMessageField);
+
+        sendButton.addActionListener(this);
+
+    }
+
+    public void update(String suggestion) {
+        displayTextArea.setText(suggestion);
+    }
+
+    //updates the error message to the error message display area
+    public void updateError(String message) {
+        errorMessageField.setText(message);
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        String str = writingTextArea.getText().trim();
+        formModel.doSyncSpellingSuggestion(str);
+    }
+
+    public void clear() {
+        writingTextArea.setText("");
+        displayTextArea.setText("");
+        errorMessageField.setText("");
+    }
+
+}
+
+
diff --git a/rampart_1_1/modules/samples/jms/README.txt b/rampart_1_1/modules/samples/jms/README.txt
new file mode 100644
index 0000000..655f739
--- /dev/null
+++ b/rampart_1_1/modules/samples/jms/README.txt
@@ -0,0 +1,25 @@
+Sample: JMS

+===========

+

+Introduction

+============

+

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Building the Service

+====================

+

+Type "ant" from Axis2_HOME/samples/jms directory.

+

+

+Running the Client

+==================

+

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/maven.xml b/rampart_1_1/modules/samples/maven.xml
new file mode 100644
index 0000000..bfa3543
--- /dev/null
+++ b/rampart_1_1/modules/samples/maven.xml
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project default="jar"
+         xmlns:j="jelly:core"
+         xmlns:u="jelly:util"
+         xmlns:maven="jelly:maven"
+         xmlns:deploy="deploy"
+         xmlns:ant="jelly:ant">
+    <j:set var="samples.dir" value="target/samples"/>
+
+    <preGoal name="java:compile">
+        <path id="samples.src.path">
+            <pathelement location="version/src"/>
+            <pathelement location="yahoorestsearch/src"/>
+            <!-- we need groovy service for the tests in integration. 
+             Later we can migrate this to integration-->
+	    <pathelement location="deprecated/groovy/src"/>
+        </path>
+        <maven:addPath id="maven.compile.src.set" refid="samples.src.path"/>
+    </preGoal>
+
+    <postGoal name="test:test">
+        <!-- <j:if test="${context.getVariable('maven.test.skip') != 'true'}"> -->
+        <attainGoal name="create-samples"/>
+        <!-- </j:if> -->
+    </postGoal>
+
+    <goal name="mail-tests">
+        <!--       TODO call the Mail tests if the mail jar is presents
+       <j:if test="${maven.repo.local}/j2ee/jars/mail.jar">
+           <ant:ant antfile="script/mail-test.xml" inheritall="true" inheritrefs="true" dir="."/>
+        </j:if>
+        maven -Dtestcase=org.foo.bar.MyTest test:single-test
+        -->
+    </goal>
+
+    <goal name="create-samples">
+        <!--        <mkdir dir="target/samples"/>-->
+        <mkdir dir="${samples.dir}/userguide"/>
+        <mkdir dir="target/samples/wsdl"/>
+        <copy todir="target/samples/wsdl">
+            <ant:fileset dir="wsdl"/>
+        </copy>
+        <attainGoal name="userguide"/>
+        <attainGoal name="googleSpellcheck"/>
+        <attainGoal name="yahooRESTSearch"/>
+        <attainGoal name="version"/>
+        <attainGoal name="groovy"/>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Version Sample -->
+    <!-- ================================================================ -->
+    <goal name="version">
+        <mkdir dir="target/version" />
+        <jar destfile="target/version/version.jar">
+            <fileset dir="target/classes">
+                <include name="sample/axisversion/**"/>
+            </fileset>
+            <fileset dir="version/src/sample/axisversion/">
+                <include name="META-INF/services.xml"/>
+            </fileset>
+        </jar>
+        <copy file="target/version/version.jar"
+              tofile="target/toWar/services/version.aar"/>
+    </goal>
+    
+    <!-- ================================================================ -->
+    <!--- User Guide Sample -->
+    <!-- ================================================================ -->
+    <goal name="userguide">
+        <mkdir dir="target/samples"/>
+        <mkdir dir="${samples.dir}/userguide"/>
+        <mkdir dir="${samples.dir}/userguide/src"/>
+        <ant:copy todir="${samples.dir}/userguide/src">
+            <ant:fileset dir="userguide/src">
+                <ant:include name="userguide/**"/>
+            </ant:fileset>
+        </ant:copy>
+        <jar destfile="${samples.dir}/userguide/sample.jar">
+            <fileset dir="target/classes">
+                <include name="userguide/**"/>
+            </fileset>
+        </jar>
+    </goal>
+ 
+    <goal name="yahooRESTSearch">
+        <mkdir dir="target/yahoorestsearch" />
+        <jar destfile="target/yahoorestsearch/yahooRESTSearch.jar">
+            <fileset dir="target/classes">
+                <include name="sample/yahooservices/RESTSearch/**"/>
+            </fileset>
+        </jar>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Google SpellCheck Sample -->
+    <!-- ================================================================ -->
+
+    <goal name="googleSpellcheck">
+        <mkdir dir="target/googlespellcheck" />
+        <jar destfile="target/googlespellcheck/googleSpellcheck.jar">
+            <fileset dir="target/classes">
+                <include name="sample/google/spellcheck/**"/>
+                <include name="sample/google/common/**"/>
+            </fileset>
+        </jar>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Groovy Service Sample -->
+    <!-- ================================================================ -->
+
+    <goal name="groovy">
+        <mkdir dir="target/groovy"/>
+        <ant:copy file="deprecated/groovy/src/sample/groovy/GroovyRcv.groovy"
+                  tofile="target/classes/sample/groovy/GroovyRcv.groovy"/>
+        <mkdir dir="target/classes/sample/groovy/lib"/>
+        <mkdir dir="target/classes/sample/groovy/META-INF"/>
+        <mkdir dir="target/classes/sample/groovy/sample"/>
+        <mkdir dir="target/classes/sample/groovy/sample/groovy"/>
+        <ant:copy file="target/classes/sample/groovy/GroovyReceiver.class"
+                  tofile="target/classes/sample/groovy/sample/groovy/GroovyReceiver.class"/>
+        <ant:copy file="deprecated/groovy/src/sample/groovy/META-INF/services.xml"
+                  tofile="target/classes/sample/groovy/META-INF/services.xml"/>
+        <ant:delete file="target/classes/sample/groovy/GroovyReceiver.class"/>
+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('on')}">
+            <ant:copy file="${dependencies.dir}/groovy-all-${groovy.all.version}.jar"
+                      tofile="target/classes/sample/groovy/lib/groovy-all-${groovy.all.version}.jar"/>
+        </j:if>
+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('off')}">
+            <ant:copy file="${maven.repo.local}/groovy/jars/groovy-all-${groovy.all.version}.jar"
+                      tofile="target/classes/sample/groovy/lib/groovy-all-${groovy.all.version}.jar"/>
+        </j:if>
+        <jar destfile="target/groovy/groovyService.aar">
+            <fileset dir="target/classes/sample/groovy">
+            </fileset>
+        </jar>
+    </goal>
+ 
+
+    <!-- ================================================================ -->
+    <!--- Security Sample -->
+    <!-- ================================================================ -->
+    <goal name="securitySample">
+
+        <mkdir dir="target/security"/>
+        <mkdir dir="target/security/META-INF"/>
+
+        <!-- Create the service archive -->
+        <ant:move todir="target/security">
+            <ant:fileset dir="target/classes">
+                <ant:include name="sample/security/*.class"/>
+            </ant:fileset>
+        </ant:move>
+        <ant:copy file="src/sample/security/META-INF/services.xml"
+                  tofile="target/security/META-INF/services.xml"/>
+        <ant:copy file="resources/security/sec.jks" tofile="target/security/sec.jks"/>
+        <ant:copy file="resources/security/sec.properties" tofile="target/security/sec.properties"/>
+        <jar destfile="target/security/SecureService.aar">
+            <fileset dir="target/security"></fileset>
+        </jar>
+
+        <!-- Create a jar to hold the password callback class-->
+        <mkdir dir="target/security/secUtil/sample/security/"/>
+        <ant:copy file="target/security/sample/security/PWCallback.class"
+                  toFile="target/security/secUtil/sample/security/PWCallback.class"/>
+        <ant:copy file="target/security/sample/security/Client.class"
+                  toFile="target/security/secUtil/sample/security/Client.class"/>
+        <ant:copy file="resources/security/sec.jks" tofile="target/security/secUtil/sec.jks"/>
+        <ant:copy file="resources/security/sec.properties"
+                  tofile="target/security/secUtil/sec.properties"/>
+        <jar destfile="target/security/secUtil.jar">
+            <fileset dir="target/security/secUtil"></fileset>
+        </jar>
+
+        <mkdir dir="target/samples/security/client_repo/modules"/>
+        <ant:copy file="resources/security/client.axis2.xml"
+                  tofile="target/samples/security/client_repo/conf/axis2.xml"/>
+
+        <!-- Copy the sources and others ovrer to the target/samples/security-->
+        <mkdir dir="target/samples/security/src/sample/security/"/>
+        <ant:copy todir="target/samples/security/src/sample/security/">
+            <ant:fileset dir="src/sample/security"/>
+        </ant:copy>
+
+        <ant:copy file="target/security/SecureService.aar"
+                  tofile="target/samples/security/SecureService.aar"/>
+
+        <!-- copy the local libs -->
+        <mkdir dir="target/samples/security/lib"/>
+        <ant:copy file="target/security/secUtil.jar"
+                  tofile="target/samples/security/lib/secUtil.jar"/>
+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('on')}">
+            <ant:copy file="${dependencies.dir}/xmlsec-${xmlsec.version}.jar"
+                      todir="target/samples/security/lib/"/>
+            <ant:copy file="${dependencies.dir}/bcprov-${bcprov.version}.jar"
+                      todir="target/samples/security/lib/"/>
+            <ant:copy file="${dependencies.dir}/wss4j-${wss4j.version}.jar"
+                      todir="target/samples/security/lib/"/>
+            <ant:copy file="${dependencies.dir}/commons-discovery-${commons.discovery.version}.jar"
+                      todir="target/samples/security/lib/"/>
+        </j:if>
+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('off')}">
+            <ant:copy file="${maven.repo.local}/xml-security/jars/xmlsec-${xmlsec.version}.jar"
+                      todir="target/samples/security/lib/"/>
+            <ant:copy file="${maven.repo.local}/bouncycastle/jars/bcprov-${bcprov.version}.jar"
+                      todir="target/samples/security/lib/"/>
+            <ant:copy file="${maven.repo.local}/wss4j/jars/wss4j-${wss4j.version}.jar"
+                      todir="target/samples/security/lib/"/>
+        </j:if>
+        <ant:copy file="resources/security/README.txt" tofile="target/samples/security/README.txt"/>
+        <ant:copy file="resources/security/build.xml" tofile="target/samples/security/build.xml"/>
+
+        <delete dir="target/security/"/>
+
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Eventing Sample -->
+    <!-- ================================================================ -->
+    <!--goal name="eventing">
+    
+        <property name="eventing.temp.dir" value="${samples.dir}/eventing/temp" />
+        <property name="listner1.temp.dir" value="${eventing.temp.dir}/listner1" />
+        <property name="listner2.temp.dir" value="${eventing.temp.dir}/listner2" />
+        <property name="publisher.temp.dir" value="${eventing.temp.dir}/publisher" />
+        
+        <mkdir dir="${listner1.temp.dir}" />
+        <mkdir dir="${listner1.temp.dir}/META-INF" />
+        <mkdir dir="${listner2.temp.dir}" />
+        <mkdir dir="${listner2.temp.dir}/META-INF" />
+        <mkdir dir="${publisher.temp.dir}" />
+        <mkdir dir="${publisher.temp.dir}/META-INF" />
+                
+        <copy toFile="${listner1.temp.dir}/META-INF/services.xml" file="resources/eventing/listner1.services.xml"/>
+        <copy toFile="${listner2.temp.dir}/META-INF/services.xml" file="resources/eventing/listner2.services.xml"/>
+        <copy toFile="${publisher.temp.dir}/META-INF/services.xml" file="resources/eventing/publisher.services.xml"/>
+        
+        <jar destfile="${samples.dir}/eventing/ListnerService1.aar">
+            <fileset dir="target/classes">
+                <include name="sample/eventing/**/**/*ListnerService1*" />
+            </fileset>
+            <fileset dir="${listner1.temp.dir}">
+                <include name="META-INF/**"/>
+            </fileset>
+        </jar>
+        
+        <jar destfile="${samples.dir}/eventing/ListnerService2.aar">
+            <fileset dir="target/classes">
+                <include name="sample/eventing/**/**/*ListnerService2*" />
+            </fileset>
+            <fileset dir="${listner2.temp.dir}">
+                <include name="META-INF/**"/>
+            </fileset>
+        </jar>
+        
+        <jar destfile="${samples.dir}/eventing/PublisherService.aar">
+            <fileset dir="target/classes">
+                <include name="sample/eventing/**/**/*PublisherService*" />
+            </fileset>
+            <fileset dir="${publisher.temp.dir}">
+                <include name="META-INF/**"/>
+            </fileset>
+        </jar>
+        
+        <jar destfile="${samples.dir}/eventing/ListnerService1.aar">
+            <fileset dir="target/classes">
+                <include name="sample/eventing/**/**/*ListnerService1*" />
+            </fileset>
+            <fileset dir="${listner1.temp.dir}">
+                <include name="META-INF/**"/>
+            </fileset>
+        </jar>
+        
+        <jar destfile="${samples.dir}/eventing/EventingSample.jar">
+            <fileset dir="target/classes">
+                <include name="sample/eventing/**"/>
+            </fileset>
+        </jar>
+        
+        <ant:copy todir="${samples.dir}/eventing">
+            <ant:fileset dir="script/eventing"/>
+        </ant:copy>
+
+    </goal-->
+
+
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+
+</project>
diff --git a/rampart_1_1/modules/samples/mtom/README.txt b/rampart_1_1/modules/samples/mtom/README.txt
new file mode 100644
index 0000000..3254082
--- /dev/null
+++ b/rampart_1_1/modules/samples/mtom/README.txt
@@ -0,0 +1,28 @@
+Sample: MTOM (Message Transmission Optimization Mechanism)

+=========================================================

+

+Introduction:

+============

+

+This sample demonstrates the capabilities and power of MTOM support of AXIS2. In this sample the

+user can send a file to the service.

+

+Prerequisites

+=============

+Apache Ant 1.6.2 or later

+

+

+Running the Sample:

+===================

+1. Use ant generate.service or just ant command in the Axis2_HOME/sample/mtom/ to build the service.

+2. Generated service gets copied to the Axis2_HOME/repository/services automatically.

+3. Run the Axis2_HOME/bin/axis2server.{sh.bat} to start the standalone axis2 server. (Alternatively

+  you can drop the sample to the services directory of a Axis2 server running in a servlet container)

+4. Use ant run.client -Dfile "file to be send" -Ddest "destination file name" to build and run the

+ client.

+

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

+

diff --git a/rampart_1_1/modules/samples/mtom/build.xml b/rampart_1_1/modules/samples/mtom/build.xml
new file mode 100755
index 0000000..f2ba3b0
--- /dev/null
+++ b/rampart_1_1/modules/samples/mtom/build.xml
@@ -0,0 +1,124 @@
+<!--
+/*
+ * 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.
+ */
+ -->
+<project basedir="." default="generate.service">
+
+	<property environment="env" />
+	<property name="build.dir" value="build" />
+	<property name="client.dir" value="${build.dir}/client" />
+	<property name="service.dir" value="${build.dir}/service" />
+	<property name="client.classes.dir" value="${client.dir}/classes" />
+	<property name="skeleton.path" value="src/sample/mtom/service/MTOMSampleSkeleton.java" />
+	<property name="client.path" value="src/sample/mtom/client/Client.java" />
+	<!-- USE AXIS2_HOME FOR THIS -->
+	<property name="lib.dir" value="../lib" />
+
+	<path id="class.path">
+		<fileset dir="../../lib">
+			<include name="**/*.jar" />
+		</fileset>
+	</path>
+
+	<!-- Create Service -->
+	<target name="generate.service">
+
+		<java classname="org.apache.axis2.wsdl.WSDL2Java">
+			<arg value="-uri" />
+			<arg value="${basedir}/resources/MTOMSample.wsdl" />
+			<arg value="-ss" />
+			<arg value="-sd" />
+			<arg value="-p" />
+			<arg value="sample.mtom.service" />
+			<arg value="-o" />
+			<arg value="${service.dir}" />
+			<classpath refid="class.path" />
+		</java>
+		<copy file="${skeleton.path}" tofile="${service.dir}/${skeleton.path}" overwrite="true" />
+		<antcall target="jar.server"/>
+		<copy file="${service.dir}/sample-mtom.aar" tofile="../../repository/services/sample-mtom.aar" overwrite="true"/>
+	</target>
+	<target name="check-parameters">
+		<condition property="parameters.set">
+			<and>
+				<isset property="dest" />
+				<isset property="file" />
+			</and>
+		</condition>
+		<!-- This is a hack to get a if-else working in ant. Some much more "ANTy" person is welcome to improve this -->
+		<antcall target="print-usage" />
+	</target>
+
+	<target name="print-usage" unless="parameters.set">
+		<echo message="ant -Dfile &lt;file to be transfered&gt;  -Ddest &lt;name of the destination file&gt;" />
+	</target>
+
+	<!-- Run Client -->
+	<target name="run.client" depends="check-parameters" if="parameters.set">
+		<java classname="org.apache.axis2.wsdl.WSDL2Java">
+			<arg value="-uri" />
+			<arg value="resources/MTOMSample.wsdl" />
+			<arg value="-p" />
+			<arg value="sample.mtom.service" />
+			<arg value="-o" />
+			<arg value="${client.dir}" />
+			<classpath refid="class.path" />
+		</java>
+
+		<copy file="${client.path}" tofile="${client.dir}/${client.path}" overwrite="true" />
+
+		<mkdir dir="${client.classes.dir}" />
+		<!-- Compile client -->
+		<javac srcdir="${client.dir}/src" destdir="${client.classes.dir}">
+			<classpath refid="class.path" />
+		</javac>
+
+		<!-- Run client -->
+		<!-- Accept two arguments from the command line, Also use the class.path set earlier -->
+		<java classname="sample.mtom.client.Client" fork="true">
+			<arg value="-file" />
+			<arg value="${file}" />
+			<arg value="-dest" />
+			<arg value="${dest}" />
+			<classpath>
+				<fileset dir="../../lib">
+					<include name="**/*.jar" />
+				</fileset>
+				<dirset dir="${client.classes.dir}" />
+			</classpath>
+		</java>
+	</target>
+	<target  name="jar.server">
+		<mkdir dir="${service.dir}/classes" />
+		<javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true" 		destdir="${service.dir}/classes" srcdir="${service.dir}/src">
+		<classpath refid="class.path"/>
+		</javac>
+
+		<copy toDir="${service.dir}/classes/META-INF" failonerror="false">
+		<fileset dir="${service.dir}/resources">
+		<include name="*.xml"/>
+		<include name="*.wsdl"/>
+		<include name="*.xsd"/>
+		</fileset>
+		</copy>
+		<jar destfile="${service.dir}/sample-mtom.aar">
+		<fileset excludes="**/Test.class" dir="${service.dir}/classes"/>
+		</jar>
+	</target>
+	<target name="clean">
+		<delete dir="build" />
+	</target>
+</project>
diff --git a/rampart_1_1/modules/samples/mtom/resources/MTOMSample.wsdl b/rampart_1_1/modules/samples/mtom/resources/MTOMSample.wsdl
new file mode 100755
index 0000000..0f0d5d2
--- /dev/null
+++ b/rampart_1_1/modules/samples/mtom/resources/MTOMSample.wsdl
@@ -0,0 +1,84 @@
+<wsdl:definitions xmlns:tns="http://ws.apache.org/axis2/mtomsample/"
+	xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+	xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+	xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+	xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
+	xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns="http://schemas.xmlsoap.org/wsdl/"
+	targetNamespace="http://ws.apache.org/axis2/mtomsample/">
+	<wsdl:types>
+		<xsd:schema xmlns="http://schemas.xmlsoap.org/wsdl/"
+			attributeFormDefault="qualified" elementFormDefault="qualified"
+			targetNamespace="http://ws.apache.org/axis2/mtomsample/">
+			<xsd:import namespace="http://www.w3.org/2005/05/xmlmime"
+				schemaLocation="xmime.xsd" />
+			<xsd:complexType name="AttachmentType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="fileName"
+						type="xsd:string" />
+					<xsd:element minOccurs="0" name="binaryData"
+						type="xmime:base64Binary" />
+				</xsd:sequence>
+			</xsd:complexType>
+			<xsd:element name="AttachmentRequest" type="tns:AttachmentType" />
+			<xsd:element name="AttachmentResponse" type="xsd:string" />
+		</xsd:schema>
+	</wsdl:types>
+	<wsdl:message name="AttachmentRequest">
+		<wsdl:part name="part1" element="tns:AttachmentRequest" />
+	</wsdl:message>
+	<wsdl:message name="AttachmentResponse">
+		<wsdl:part name="part1" element="tns:AttachmentResponse" />
+	</wsdl:message>
+	<wsdl:portType name="MTOMServicePortType">
+		<wsdl:operation name="attachment">
+			<wsdl:input message="tns:AttachmentRequest"
+				wsaw:Action="attachment" />
+			<wsdl:output message="tns:AttachmentResponse"
+				wsaw:Action="http://schemas.xmlsoap.org/wsdl/MTOMServicePortType/AttachmentResponse" />
+		</wsdl:operation>
+	</wsdl:portType>
+	<wsdl:binding name="MTOMServiceSOAP11Binding"
+		type="tns:MTOMServicePortType">
+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+			style="document" />
+		<wsdl:operation name="attachment">
+			<soap:operation soapAction="attachment" style="document" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+	</wsdl:binding>
+	<wsdl:binding name="MTOMServiceSOAP12Binding"
+		type="tns:MTOMServicePortType">
+		<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"
+			style="document" />
+		<wsdl:operation name="attachment">
+			<soap12:operation soapAction="attachment" style="document" />
+			<wsdl:input>
+				<soap12:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap12:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+	</wsdl:binding>
+	<wsdl:service name="MTOMSample">
+		<wsdl:port name="MTOMSampleSOAP11port_http"
+			binding="tns:MTOMServiceSOAP11Binding">
+			<soap:address
+				location="http://localhost:8080/axis2/services/MTOMSample" />
+		</wsdl:port>
+		<wsdl:port name="MTOMSampleSOAP12port_http"
+			binding="tns:MTOMServiceSOAP12Binding">
+			<soap12:address
+				location="http://localhost:8080/axis2/services/MTOMSample" />
+		</wsdl:port>
+	</wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/mtom/resources/xmime.xsd b/rampart_1_1/modules/samples/mtom/resources/xmime.xsd
new file mode 100755
index 0000000..6bd9619
--- /dev/null
+++ b/rampart_1_1/modules/samples/mtom/resources/xmime.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
+	targetNamespace="http://www.w3.org/2005/05/xmlmime">

+	<xs:attribute name="contentType">

+		<xs:simpleType>

+			<xs:restriction base="xs:string">

+				<xs:minLength value="3" />

+			</xs:restriction>

+		</xs:simpleType>

+	</xs:attribute>

+	<xs:attribute name="expectedContentTypes" type="xs:string" />

+	<xs:complexType name="base64Binary">

+		<xs:simpleContent>

+			<xs:extension base="xs:base64Binary">

+				<xs:attribute ref="xmime:contentType" />

+			</xs:extension>

+		</xs:simpleContent>

+	</xs:complexType>

+	<xs:complexType name="hexBinary">

+		<xs:simpleContent>

+			<xs:extension base="xs:hexBinary">

+				<xs:attribute ref="xmime:contentType" />

+			</xs:extension>

+		</xs:simpleContent>

+	</xs:complexType>

+</xs:schema>

diff --git a/rampart_1_1/modules/samples/mtom/src/sample/mtom/client/Client.java b/rampart_1_1/modules/samples/mtom/src/sample/mtom/client/Client.java
new file mode 100755
index 0000000..cb9644c
--- /dev/null
+++ b/rampart_1_1/modules/samples/mtom/src/sample/mtom/client/Client.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2004,2005 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 sample.mtom.client;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.rmi.RemoteException;
+import java.util.List;
+import java.util.Map;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+
+import org.apache.axis2.Constants;
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.util.OptionsValidator;
+
+import sample.mtom.service.MTOMSampleStub;
+import sample.mtom.service.MTOMSampleStub.AttachmentRequest;
+import sample.mtom.service.MTOMSampleStub.AttachmentResponse;
+import sample.mtom.service.MTOMSampleStub.AttachmentType;
+import sample.mtom.service.MTOMSampleStub.Base64Binary;
+
+public class Client {
+
+	/**
+	 * @param args
+	 * @throws Exception
+	 */
+	public static void main(String[] args) throws Exception {
+		CommandLineOptionParser optionsParser = new CommandLineOptionParser(
+				args);
+		List invalidOptionsList = optionsParser
+				.getInvalidOptions(new OptionsValidator() {
+					public boolean isInvalid(CommandLineOption option) {
+						String optionType = option.getOptionType();
+						return !("dest".equalsIgnoreCase(optionType) || "file"
+								.equalsIgnoreCase(optionType));
+					}
+				});
+
+		if ((invalidOptionsList.size() > 0) || (args.length != 4)) {
+			// printUsage();
+			System.out.println("Invalid Parameters.");
+			return;
+		}
+
+		Map optionsMap = optionsParser.getAllOptions();
+
+		CommandLineOption fileOption = (CommandLineOption) optionsMap
+				.get("file");
+		CommandLineOption destinationOption = (CommandLineOption) optionsMap
+				.get("dest");
+		File file = new File(fileOption.getOptionValue());
+		if (file.exists())
+			transferFile(file, destinationOption.getOptionValue());
+		else
+			throw new FileNotFoundException();
+	}
+
+	public static void transferFile(File file, String destination)
+			throws RemoteException {
+		// uncomment the following if you need to capture the messages from
+		// TCPMON. Please look at http://ws.apache.org/commons/tcpmon/tcpmontutorial.html
+		// to learn how to setup tcpmon
+		MTOMSampleStub serviceStub = new MTOMSampleStub(
+				//"http://localhost:8081/axis2/rest/MTOMSample"
+		);
+
+		// Enable MTOM in the client side
+		serviceStub._getServiceClient().getOptions().setProperty(
+				Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+		//Increase the time out when sending large attachments
+		serviceStub._getServiceClient().getOptions().setTimeOutInMilliSeconds(10000);
+
+		// Uncomment and fill the following if you want to have client side file
+		// caching switched ON.
+		/*
+		 * serviceStub._getServiceClient().getOptions().setProperty(
+		 * Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
+		 * serviceStub._getServiceClient().getOptions().setProperty(
+		 * Constants.Configuration.ATTACHMENT_TEMP_DIR, "your temp dir");
+		 * serviceStub._getServiceClient().getOptions().setProperty(
+		 * Constants.Configuration.FILE_SIZE_THRESHOLD, "4000");
+		 */
+
+		// Populating the code generated beans
+		AttachmentRequest attachmentRequest = new AttachmentRequest();
+		AttachmentType attachmentType = new AttachmentType();
+		Base64Binary base64Binary = new Base64Binary();
+
+		// Creating a javax.activation.FileDataSource from the input file.
+		FileDataSource fileDataSource = new FileDataSource(file);
+
+		// Create a dataHandler using the fileDataSource. Any implementation of
+		// javax.activation.DataSource interface can fit here.
+		DataHandler dataHandler = new DataHandler(fileDataSource);
+		base64Binary.setBase64Binary(dataHandler);
+		base64Binary.setContentType(dataHandler.getContentType());
+		attachmentType.setBinaryData(base64Binary);
+		attachmentType.setFileName(destination);
+		attachmentRequest.setAttachmentRequest(attachmentType);
+
+		AttachmentResponse response = serviceStub.attachment(attachmentRequest);
+		System.out.println(response.getAttachmentResponse());
+	}
+
+}
diff --git a/rampart_1_1/modules/samples/mtom/src/sample/mtom/service/MTOMSampleSkeleton.java b/rampart_1_1/modules/samples/mtom/src/sample/mtom/service/MTOMSampleSkeleton.java
new file mode 100755
index 0000000..a05936a
--- /dev/null
+++ b/rampart_1_1/modules/samples/mtom/src/sample/mtom/service/MTOMSampleSkeleton.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2004,2005 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 sample.mtom.service;
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+import javax.activation.DataHandler;
+
+import org.apache.ws.axis2.mtomsample.AttachmentResponse;
+import org.apache.ws.axis2.mtomsample.AttachmentType;
+import org.w3.www._2005._05.xmlmime.Base64Binary;
+
+/**
+ * MTOMServiceSkeleton java skeleton for the axisService
+ */
+public class MTOMSampleSkeleton {
+
+	/**
+	 * Auto generated method signature
+	 * 
+	 * @param param0
+	 * @throws Exception 
+	 * 
+	 */
+	public org.apache.ws.axis2.mtomsample.AttachmentResponse attachment(
+			org.apache.ws.axis2.mtomsample.AttachmentRequest param0)
+			throws Exception
+
+	{
+		AttachmentType attachmentRequest = param0.getAttachmentRequest();
+		Base64Binary binaryData = attachmentRequest.getBinaryData();
+		DataHandler dataHandler = binaryData.getBase64Binary();
+		File file = new File(
+				attachmentRequest.getFileName());
+		FileOutputStream fileOutputStream = new FileOutputStream(file);
+		dataHandler.writeTo(fileOutputStream);
+		fileOutputStream.flush();
+		fileOutputStream.close();
+		
+		AttachmentResponse response = new AttachmentResponse();
+		response.setAttachmentResponse("File saved succesfully.");
+		return response;
+	}
+
+}
diff --git a/rampart_1_1/modules/samples/pojo/README.txt b/rampart_1_1/modules/samples/pojo/README.txt
new file mode 100644
index 0000000..eb410be
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojo/README.txt
@@ -0,0 +1,57 @@
+Sample: POJO (Plain Old Java Object)

+====================================

+

+Introduction

+============

+

+This is an example POJO Web service. It shows how to expose the methods of a Java class as a Web

+service using Aixs2.

+

+

+Prerequisites  

+=============

+

+To build the sample service you must have ant-1.6.x installed in your system. 

+

+To set AXIS2_HOME in Unix/Linux type:

+$export AXIS2_HOME=<path to axis2 distribution>

+

+Building the Service

+====================

+

+To build the sample service, type: $ant generate.service or just ant

+

+This will build the AddressBookService.aar in the build directory and copy it to the

+<AXIS2_HOME>/repository/services directory.

+

+You can start the Axis2 server by running either axis2server.bat (on Windows) or axis2server.sh

+(on Linux)that are located in <AXIS2_HOME>/bin directory.

+

+The WSDL for this service should be viewable at:

+

+http://<yourhost>:<yourport>/axis2/services/AddressBookService?wsdl 

+(e.g. http://localhost:8080/axis2/services/AddressBookService?wsdl)

+

+src/sample/addressbook/rpcclient/AddressBookRPCClient.java is a Client that uses RPCServiceClient

+to invoke the methods of this web services just like the method invocations of a Java object.

+

+

+Running the Client

+==================

+

+To compile and run, type

+$ant rpc.client

+

+src/sample/addressbook/adbclient/AddressBookADBClient is Client that uses a generated stub with ADB

+to invoke the methods of this web service.

+

+To generate the stub, compile and run, type

+$ant adb.client -Dwsdl=http://<yourhost>:<yourport>/axis2/services/AddressBookService?wsdl

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

+

+

+

+

diff --git a/rampart_1_1/modules/samples/pojo/build.xml b/rampart_1_1/modules/samples/pojo/build.xml
new file mode 100644
index 0000000..ae43417
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojo/build.xml
@@ -0,0 +1,148 @@
+
+<project basedir="." default="generate.service">
+
+	<property name="dest.dir" value="build" />
+
+	<property name="dest.dir.classes" value="${dest.dir}/classes" />
+
+	<property name="dest.dir.lib" value="${dest.dir}/lib" />
+
+	<property name="axis2.home" value="../../" />
+
+	<property name="repository.path" value="${axis2.home}/repository/services" />
+
+	<path id="build.class.path">
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+	</path>
+
+	<path id="client.class.path">
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+		<fileset dir="${dest.dir.lib}">
+			<include name="*.jar" />
+		</fileset>
+
+	</path>
+	<target name="clean">
+		<delete dir="${dest.dir}" />
+		<delete dir="src" includes="sample/addressbook/stub/**"/>
+	</target>
+
+	<target name="prepare">
+
+		<mkdir dir="${dest.dir}" />
+
+		<mkdir dir="${dest.dir.classes}" />
+
+		<mkdir dir="${dest.dir.lib}" />
+
+		<mkdir dir="${dest.dir.classes}/META-INF" />
+
+	</target>
+
+	<target name="generate.service" depends="clean,prepare">
+
+		<copy file="src/META-INF/services.xml" tofile="${dest.dir.classes}/META-INF/services.xml" overwrite="true" />
+
+		<javac srcdir="src" destdir="${dest.dir.classes}" includes="sample/addressbook/service/**,sample/addressbook/entry/**">
+			<classpath refid="build.class.path" />
+		</javac>
+
+		<jar basedir="${dest.dir.classes}" destfile="${dest.dir}/AddressBookService.aar" />
+
+		<copy file="${dest.dir}/AddressBookService.aar" tofile="${repository.path}/AddressBookService.aar" overwrite="true" />
+
+	</target>
+
+	<target name="rpc.client" depends="clean,prepare">
+
+		<antcall target="rpc.client.compile" />
+
+		<antcall target="rpc.client.jar" />
+
+		<antcall target="rpc.client.run">
+			<param name="uri" value="${uri}"/>
+		</antcall>
+
+	</target>
+
+	<target name="rpc.client.compile">
+		<javac srcdir="src" destdir="${dest.dir.classes}" includes="sample/addressbook/rpcclient/**,sample/addressbook/entry/**">
+			<classpath refid="build.class.path" />
+		</javac>
+	</target>
+
+	<target name="rpc.client.jar">
+		<jar basedir="${dest.dir.classes}" destfile="${dest.dir.lib}/rpc-client.jar" includes="sample/addressbook/rpcclient/**,sample/addressbook/entry/**" />
+	</target>
+
+	<target name="rpc.client.run">
+		<java classname="sample.addressbook.rpcclient.AddressBookRPCClient">
+			<classpath refid="client.class.path" />
+			<arg value="${uri}" />
+		</java>
+	</target>
+
+	<target name="check-parameters">
+		<condition property="parameters.set">
+			<and>
+				<isset property="wsdl" />
+			</and>
+		</condition>
+		<!-- This is a hack to get a if-else working in ant. Some much more "ANTy" person is welcome to improve this -->
+		<antcall target="print-usage" />
+	</target>
+
+	<target name="print-usage" unless="parameters.set">
+		<echo message="ant adb.client -Dwsdl='http://&lt;yourhost>:&lt;yourport>/axis2/services/AdressBookService?wsdl'" />
+	</target>
+
+	<target name="adb.client" depends="check-parameters" if="parameters.set">
+
+		<antcall target="clean" />
+		<antcall target="prepare" />
+		<antcall target="adb.client.codegen-stub">
+			<param name="wsdl" value="${wsdl}"/>
+		</antcall>
+
+		<antcall target="adb.client.compile" />
+
+		<antcall target="adb.client.jar" />
+
+		<antcall target="adb.client.run" />
+
+	</target>
+
+	<target name="adb.client.codegen-stub">
+		<java classname="org.apache.axis2.wsdl.WSDL2Java">
+			<arg value="-uri" />
+			<arg value="${wsdl}" />
+			<arg value="-p" />
+			<arg value="sample.addressbook.stub" />
+			<arg value="-o" />
+			<arg value="src" />
+			<arg value="-f" />
+			<classpath refid="build.class.path" />
+		</java>
+	</target>
+
+	<target name="adb.client.compile">
+		<javac srcdir="src" destdir="${dest.dir.classes}" includes="sample/addressbook/adbclient/**,sample/addressbook/stub/**">
+			<classpath refid="build.class.path" />
+		</javac>
+	</target>
+
+	<target name="adb.client.jar">
+		<jar basedir="${dest.dir.classes}" destfile="${dest.dir.lib}/adb-client.jar" includes="sample/addressbook/adbclient/**,sample/addressbook/stub/**" />
+	</target>
+
+	<target name="adb.client.run">
+		<java classname="sample.addressbook.adbclient.AddressBookADBClient">
+			<classpath refid="client.class.path" />
+		</java>
+	</target>
+
+</project>
diff --git a/rampart_1_1/modules/samples/pojo/src/META-INF/services.xml b/rampart_1_1/modules/samples/pojo/src/META-INF/services.xml
new file mode 100644
index 0000000..98b504d
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojo/src/META-INF/services.xml
@@ -0,0 +1,13 @@
+<service name="AddressBookService" scope="application">
+    <description>
+        POJO: AddressBook Service
+    </description>
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+    </messageReceivers>
+    <parameter name="ServiceClass" locked="false">sample.addressbook.service.AddressBookService</parameter>
+
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/pojo/src/sample/addressbook/adbclient/AddressBookADBClient.java b/rampart_1_1/modules/samples/pojo/src/sample/addressbook/adbclient/AddressBookADBClient.java
new file mode 100644
index 0000000..c3a4301
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojo/src/sample/addressbook/adbclient/AddressBookADBClient.java
@@ -0,0 +1,72 @@
+/*
+ * 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 sample.addressbook.adbclient;
+
+import sample.addressbook.stub.AddressBookServiceStub;
+import sample.addressbook.stub.AddressBookServiceStub.AddEntry;
+import sample.addressbook.stub.AddressBookServiceStub.Entry;
+import sample.addressbook.stub.AddressBookServiceStub.FindEntry;
+import sample.addressbook.stub.AddressBookServiceStub.FindEntryResponse;
+
+
+public class AddressBookADBClient {
+
+    private static String URL = "http://127.0.0.1:8080/axis2/services/AddressBookService";
+
+    public static void main(String[] args) {
+
+        try {
+            AddressBookServiceStub stub;
+
+            if (args != null && args.length != 0) {
+                stub = new AddressBookServiceStub(args[0]);
+                
+            } else {
+                stub = new AddressBookServiceStub(URL);
+            }
+            
+            AddEntry addEntry = new AddEntry();
+            Entry entry = new Entry();
+            
+            entry.setName("Abby Cadabby");
+            entry.setStreet("Sesame Street");
+            entry.setCity("Sesame City");
+            entry.setState("Sesame State");
+            entry.setPostalCode("11111");
+            
+            addEntry.setParam0(entry);
+            stub.addEntry(addEntry);
+            
+            FindEntry findEntry = new FindEntry();
+            
+            findEntry.setParam0("Abby Cadabby");
+            
+            FindEntryResponse response = stub.findEntry(findEntry);
+            Entry responseEntry = response.get_return();
+            
+            System.out.println("Name   :" + responseEntry.getName());
+            System.out.println("Street :" + responseEntry.getStreet());
+            System.out.println("City   :" + responseEntry.getCity());
+            System.out.println("State  :" + responseEntry.getState());
+            System.out.println("Postal Code :" + responseEntry.getPostalCode());
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/pojo/src/sample/addressbook/entry/Entry.java b/rampart_1_1/modules/samples/pojo/src/sample/addressbook/entry/Entry.java
new file mode 100644
index 0000000..729d7d0
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojo/src/sample/addressbook/entry/Entry.java
@@ -0,0 +1,70 @@
+package sample.addressbook.entry;
+/*
+ * 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.
+ */
+
+public class Entry {
+    
+    private String name = null;
+    
+    private String street = null;
+    
+    private String city = null;
+    
+    private String state = null;
+    
+    private String postalCode = null;
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPostalCode() {
+        return postalCode;
+    }
+
+    public void setPostalCode(String postalCode) {
+        this.postalCode = postalCode;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getStreet() {
+        return street;
+    }
+
+    public void setStreet(String street) {
+        this.street = street;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/pojo/src/sample/addressbook/rpcclient/AddressBookRPCClient.java b/rampart_1_1/modules/samples/pojo/src/sample/addressbook/rpcclient/AddressBookRPCClient.java
new file mode 100644
index 0000000..0f92bc6
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojo/src/sample/addressbook/rpcclient/AddressBookRPCClient.java
@@ -0,0 +1,105 @@
+/*
+ * 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 sample.addressbook.rpcclient;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.rpc.client.RPCServiceClient;
+
+import sample.addressbook.entry.Entry;
+
+
+
+public class AddressBookRPCClient {
+
+    public static void main(String[] args1) throws AxisFault {
+
+        RPCServiceClient serviceClient = new RPCServiceClient();
+
+        Options options = serviceClient.getOptions();
+
+        EndpointReference targetEPR = new EndpointReference(
+                "http://127.0.0.1:8080/axis2/services/AddressBookService");
+        options.setTo(targetEPR);
+
+        // /////////////////////////////////////////////////////////////////////
+
+        /*
+         * Creates an Entry and stores it in the AddressBook.
+         */
+
+        // QName of the target method 
+        QName opAddEntry = new QName("http://service.addressbook.sample/xsd", "addEntry");
+
+        /*
+         * Constructing a new Entry
+         */
+        Entry entry = new Entry();
+
+        entry.setName("Abby Cadabby");
+        entry.setStreet("Sesame Street");
+        entry.setCity("Sesame City");
+        entry.setState("Sesame State");
+        entry.setPostalCode("11111");
+
+        // Constructing the arguments array for the method invocation
+        Object[] opAddEntryArgs = new Object[] { entry };
+
+        // Invoking the method
+        serviceClient.invokeRobust(opAddEntry, opAddEntryArgs);
+
+        ////////////////////////////////////////////////////////////////////////
+        
+        
+        ///////////////////////////////////////////////////////////////////////
+        
+        /*
+         * Fetching an Entry from the Address book
+         */
+        
+        // QName of the method to invoke 
+        QName opFindEntry = new QName("http://service.addressbook.sample/xsd", "findEntry");
+
+        //
+        String name = "Abby Cadabby";
+
+        Object[] opFindEntryArgs = new Object[] { name };
+        Class[] returnTypes = new Class[] { Entry.class };
+
+        
+        Object[] response = serviceClient.invokeBlocking(opFindEntry,
+                opFindEntryArgs, returnTypes);
+        
+        Entry result = (Entry) response[0];
+        
+        if (result == null) {
+            System.out.println("No entry found for " + name);
+            return;
+        } 
+        
+        System.out.println("Name   :" + result.getName());
+        System.out.println("Street :" + result.getStreet());
+        System.out.println("City   :" + result.getCity());
+        System.out.println("State  :" + result.getState());
+        System.out.println("Postal Code :" + result.getPostalCode());
+        
+
+        ///////////////////////////////////////////////////////////////////////
+    }
+}
diff --git a/rampart_1_1/modules/samples/pojo/src/sample/addressbook/service/AddressBookService.java b/rampart_1_1/modules/samples/pojo/src/sample/addressbook/service/AddressBookService.java
new file mode 100644
index 0000000..cf1e15d
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojo/src/sample/addressbook/service/AddressBookService.java
@@ -0,0 +1,31 @@
+package sample.addressbook.service;
+
+
+import java.util.HashMap;
+
+import sample.addressbook.entry.Entry;
+
+
+
+public class AddressBookService {
+    
+    private HashMap entries = new HashMap();
+
+    /**
+     * Add an Entry to the Address Book
+     * @param entry
+     */
+    public void addEntry(Entry entry) {
+        this.entries.put(entry.getName(), entry);
+    }
+    
+    /**
+     * Search an address of a person
+     * 
+     * @param name the name of the person whose address needs to be found
+     * @return return the address entry of the person. 
+     */
+    public Entry findEntry(String name) {
+        return (Entry) this.entries.get(name);
+    }
+}
diff --git a/rampart_1_1/modules/samples/pojoguide/README.txt b/rampart_1_1/modules/samples/pojoguide/README.txt
new file mode 100644
index 0000000..2fa9032
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguide/README.txt
@@ -0,0 +1,38 @@
+POJO Web Services using Apache Axis2- Sample 1

+=============================================

+This sample contains source code for the xdocs/1_1/pojoguide.html document found in 

+the extracted Axis2 Documents Distribution. For a more detailed description on the 

+source code kindly see this 'POJO Web Services using Apache Axis2' document.

+

+The above mentioned document shows you how to take a simple POJO (Plain Old Java 

+Object), and deploy it on Apache Tomcat as a Web service in the exploded directory 

+format. This is a quick way to get a Web service up and running in no time. 

+

+Introduction

+============

+

+This sample shows how to expose a Java class as a web service.  

+The WeatherService Java class provides methods to get and set a Weather 

+type Java objects. The client uses RPCServiceClient to invoke those two 

+methods just as Java object method invocation.

+

+Prerequisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Building the Service

+====================

+

+Type $ant from Axis2_HOME/samples/pojoguide

+

+

+Running the Client

+==================

+

+Type $ant rpc.client

+

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/pojoguide/build.xml b/rampart_1_1/modules/samples/pojoguide/build.xml
new file mode 100644
index 0000000..4003b8b
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguide/build.xml
@@ -0,0 +1,77 @@
+

+<project basedir="." default="generate.service">

+

+	<property name="service.name" value="WeatherService" />

+	<property name="dest.dir" value="build" />

+	<property name="dest.dir.classes" value="${dest.dir}/${service.name}" />

+	<property name="dest.dir.lib" value="${dest.dir}/lib" />	

+	<property name="axis2.home" value="../../" />

+	<property name="repository.path" value="${axis2.home}/repository" />

+

+	<path id="build.class.path">

+		<fileset dir="${axis2.home}/lib">

+			<include name="*.jar" />

+		</fileset>

+	</path>

+

+	<path id="client.class.path">

+		<fileset dir="${axis2.home}/lib">

+			<include name="*.jar" />

+		</fileset>

+		<fileset dir="${dest.dir.lib}">

+			<include name="*.jar" />

+		</fileset>

+

+	</path>

+	<target name="clean">

+		<delete dir="${dest.dir}" />

+		<delete dir="src" includes="sample/pojo/stub/**"/>

+	</target>

+

+	<target name="prepare">

+		<mkdir dir="${dest.dir}" />

+		<mkdir dir="${dest.dir}/lib" />

+		<mkdir dir="${dest.dir.classes}" />

+		<mkdir dir="${dest.dir.classes}/META-INF" />

+	</target>

+

+	<target name="generate.service" depends="clean,prepare">

+

+		<copy file="src/META-INF/services.xml" tofile="${dest.dir.classes}/META-INF/services.xml" overwrite="true" />

+

+		<javac srcdir="src" destdir="${dest.dir.classes}" includes="sample/pojo/service/**,sample/pojo/data/**">

+			<classpath refid="build.class.path" />

+		</javac>

+		

+		<jar basedir="${dest.dir.classes}" destfile="${dest.dir}/${service.name}.aar" />

+

+		<copy file="${dest.dir}/${service.name}.aar" tofile="${repository.path}/services/${service.name}.aar" overwrite="true" />

+		

+	</target>

+

+	<target name="rpc.client" depends="clean,prepare">

+

+		<antcall target="rpc.client.compile" />

+

+		<antcall target="rpc.client.jar" />

+

+		<antcall target="rpc.client.run" />

+

+	</target>

+

+	<target name="rpc.client.compile">

+		<javac srcdir="src" destdir="${dest.dir.classes}" includes="sample/pojo/rpcclient/**,sample/pojo/data/**">

+			<classpath refid="build.class.path" />

+		</javac>

+	</target>

+

+	<target name="rpc.client.jar">

+		<jar basedir="${dest.dir.classes}" destfile="${dest.dir.lib}/rpc-client.jar" includes="sample/pojo/rpcclient/**,sample/pojo/data/**" />

+	</target>

+

+	<target name="rpc.client.run">

+		<java classname="sample.pojo.rpcclient.WeatherRPCClient">

+			<classpath refid="client.class.path" />

+		</java>

+	</target>

+</project>

diff --git a/rampart_1_1/modules/samples/pojoguide/src/META-INF/services.xml b/rampart_1_1/modules/samples/pojoguide/src/META-INF/services.xml
new file mode 100644
index 0000000..69776d2
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguide/src/META-INF/services.xml
@@ -0,0 +1,13 @@
+<service name="WeatherService" scope="application">

+    <description>

+        Weather POJO Service

+    </description>

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+    </messageReceivers>

+    <parameter name="ServiceClass">sample.pojo.service.WeatherService</parameter>

+

+</service>

diff --git a/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/data/Weather.java b/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/data/Weather.java
new file mode 100644
index 0000000..e759368
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/data/Weather.java
@@ -0,0 +1,40 @@
+package sample.pojo.data;

+

+public class Weather{

+    float temperature;

+    String forecast;

+    boolean rain;

+    float howMuchRain;

+    

+    public void setTemperature(float temp){

+        temperature = temp;

+    }

+

+    public float getTemperature(){

+        return temperature;

+    }

+    

+    public void setForecast(String fore){

+        forecast = fore;

+    }

+

+    public String getForecast(){

+        return forecast;

+    }

+    

+    public void setRain(boolean r){

+        rain = r;

+    }

+

+    public boolean getRain(){

+        return rain;

+    }

+    

+    public void setHowMuchRain(float howMuch){

+        howMuchRain = howMuch;

+    }

+

+    public float getHowMuchRain(){

+        return howMuchRain;

+    }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/rpcclient/WeatherRPCClient.java b/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/rpcclient/WeatherRPCClient.java
new file mode 100644
index 0000000..97d129e
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/rpcclient/WeatherRPCClient.java
@@ -0,0 +1,68 @@
+package sample.pojo.rpcclient;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.rpc.client.RPCServiceClient;

+

+import sample.pojo.data.Weather;

+

+

+public class WeatherRPCClient {

+

+    public static void main(String[] args1) throws AxisFault {

+

+        RPCServiceClient serviceClient = new RPCServiceClient();

+

+        Options options = serviceClient.getOptions();

+

+        EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/WeatherService");

+

+        options.setTo(targetEPR);

+

+        // Setting the weather

+        QName opSetWeather = new QName("http://service.pojo.sample/xsd", "setWeather");

+

+        Weather w = new Weather();

+

+        w.setTemperature((float)39.3);

+        w.setForecast("Cloudy with showers");

+        w.setRain(true);

+        w.setHowMuchRain((float)4.5);

+

+        Object[] opSetWeatherArgs = new Object[] { w };

+

+        serviceClient.invokeRobust(opSetWeather, opSetWeatherArgs);

+

+

+        // Getting the weather

+        QName opGetWeather = new QName("http://service.pojo.sample/xsd", "getWeather");

+

+        Object[] opGetWeatherArgs = new Object[] { };

+        Class[] returnTypes = new Class[] { Weather.class };

+        

+        

+        Object[] response = serviceClient.invokeBlocking(opGetWeather,

+                opGetWeatherArgs, returnTypes);

+        

+        Weather result = (Weather) response[0];

+        

+        if (result == null) {

+            System.out.println("Weather didn't initialize!");

+            return;

+        }

+        

+        // Displaying the result

+        System.out.println("Temperature               : " +

+                           result.getTemperature());

+        System.out.println("Forecast                  : " +

+                           result.getForecast());

+        System.out.println("Rain                      : " +

+                           result.getRain());

+        System.out.println("How much rain (in inches) : " +

+                           result.getHowMuchRain());

+        

+    }

+}

diff --git a/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/service/WeatherService.java b/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/service/WeatherService.java
new file mode 100644
index 0000000..d97d92c
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguide/src/sample/pojo/service/WeatherService.java
@@ -0,0 +1,15 @@
+package sample.pojo.service;

+

+import sample.pojo.data.Weather;

+

+public class WeatherService{

+    Weather weather;

+    

+    public void setWeather(Weather weather){

+        this.weather = weather;

+    }

+

+    public Weather getWeather(){

+        return this.weather;

+    }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/pojoguidespring/README.txt b/rampart_1_1/modules/samples/pojoguidespring/README.txt
new file mode 100644
index 0000000..d6c2b95
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguidespring/README.txt
@@ -0,0 +1,40 @@
+POJO Web Services using Apache Axis2- Sample 2

+==============================================

+This sample contains source code for the xdocs/1_1/pojoguide.html document found in 

+the extracted Axis2 Documents Distribution. For a more detailed description on the 

+source code kindly see this 'POJO Web Services using Apache Axis2' document.

+

+In this specific sample you'll be shown how to take a POJO  (Plain Old Java Object) 

+based on the Spring Framework, and deploy that as an AAR packaged Web service on Tomcat. 

+This is a quick way to get a Web service up and running in no time. 

+

+Introduction

+============

+

+This sample shows how to expose the getters and setters of WeatherSpringService that 

+takes Weather type Java Object as the argument and the return type. It uses the Spring 

+framework to initialize the weather property of the WeatherSpringService.

+

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Spring-1.2.6.jar or later 

+You need to have this jar in your build and runtime class path. The easiest way to do this 

+is to copy it to Axis2_HOME/lib directory.

+

+Building the Service

+====================

+

+Type $ant from Axis2_HOME/samples/pojoguidespring

+

+

+Running the Client

+==================

+Type $ant rpc.client from from Axis2_HOME/samples/pojoguidespring

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/pojoguidespring/build.xml b/rampart_1_1/modules/samples/pojoguidespring/build.xml
new file mode 100644
index 0000000..6058077
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguidespring/build.xml
@@ -0,0 +1,84 @@
+<project basedir="." default="generate.service" name="WeatherSpringService">

+

+	<property environment="env" />

+	<property name="service-name" value="WeatherSpringService" />

+	<property name="dest.dir" value="target" />

+	<property name="axis2.home" value="../../" />

+

+	<property name="repository.path" value="${axis2.home}/repository" />

+

+	<property name="dest.dir.classes" value="${dest.dir}/classes" />

+

+	<property name="dest.dir.lib" value="${dest.dir}/lib" />

+

+	<property name="catalina-modules" value="${env.CATALINA_HOME}/webapps/axis2/WEB-INF/services" />

+

+	<path id="build.class.path">

+		<fileset dir="${axis2.home}/lib">

+			<include name="*.jar" />

+		</fileset>

+    </path>

+

+	<path id="client.class.path">

+		<pathelement location="${dest.dir.classes}" />

+		<fileset dir="${axis2.home}/lib">

+			<include name="*.jar" />

+		</fileset>

+	</path>

+

+	<target name="clean">

+		<delete dir="${dest.dir}" />

+	</target>

+

+	<target name="prepare" depends="clean">

+

+		<mkdir dir="${dest.dir}" />

+

+		<mkdir dir="${dest.dir.classes}" />

+

+		<mkdir dir="${dest.dir.classes}/META-INF" />

+

+	</target>

+

+	<target name="generate.service" depends="prepare">

+

+		<mkdir dir="${dest.dir}" />

+

+		<mkdir dir="${dest.dir.classes}" />

+		<mkdir dir="${dest.dir.classes}/META-INF" />

+

+		<copy file="src/META-INF/services.xml" tofile="${dest.dir.classes}/META-INF/services.xml" overwrite="true" />

+		<copy file="src/applicationContext.xml" tofile="${dest.dir.classes}/applicationContext.xml" overwrite="true" />

+

+		<javac debug="on" srcdir="src" destdir="${dest.dir.classes}" includes="sample/**">

+			<classpath refid="build.class.path" />

+		</javac>

+

+		<jar basedir="${dest.dir.classes}" destfile="${dest.dir}/${service-name}.aar" />

+

+		<copy file="${dest.dir}/${service-name}.aar" tofile="${repository.path}/services/${service-name}.aar" overwrite="true" />

+

+	</target>

+

+	<target name="rpc.client">

+		<antcall target="rpc.client.run" />

+	</target>

+

+	<target name="rpc.client.compile" depends="prepare">

+		<javac debug="on" srcdir="src" destdir="${dest.dir.classes}" includes="client/**">

+			<classpath refid="build.class.path" />

+		</javac>

+	</target>

+

+	<target name="rpc.client.run" depends="rpc.client.compile">

+		<echo message="${ant.file}" />

+		<java classname="client.WeatherSpringRPCClient">

+			<classpath refid="client.class.path" />

+		</java>

+	</target>

+

+	<target name="copy.to.tomcat" depends="generate.service">

+		<copy file="${dest.dir}/${service-name}.aar" todir="${catalina-modules}" />

+	</target>

+

+</project>

diff --git a/rampart_1_1/modules/samples/pojoguidespring/src/META-INF/services.xml b/rampart_1_1/modules/samples/pojoguidespring/src/META-INF/services.xml
new file mode 100644
index 0000000..d8eeac9
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguidespring/src/META-INF/services.xml
@@ -0,0 +1,27 @@
+<serviceGroup>

+  <service name="SpringInit" class="sample.spring.service.SpringInit">

+    <description>

+      This web service initializes Spring.

+    </description>

+    <parameter name="ServiceClass" >sample.spring.service.SpringInit</parameter>

+    <parameter name="ServiceTCCL" >composite</parameter>

+    <parameter name="load-on-startup" >true</parameter>

+    <operation name="springInit">

+      <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </operation>

+  </service>

+  <service name="WeatherSpringService">

+    <description>

+      Weather Spring POJO Axis2 AAR deployment

+    </description>

+    <parameter name="ServiceClass" >sample.spring.service.WeatherSpringService</parameter>

+    <parameter name="ServiceObjectSupplier" >org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter>

+    <parameter name="SpringBeanName" >weatherSpringService</parameter>

+    <messageReceivers>

+      <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                       class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>

+      <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                       class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+    </messageReceivers>

+  </service>

+</serviceGroup>

diff --git a/rampart_1_1/modules/samples/pojoguidespring/src/applicationContext.xml b/rampart_1_1/modules/samples/pojoguidespring/src/applicationContext.xml
new file mode 100644
index 0000000..b2a908e
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguidespring/src/applicationContext.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

+

+<beans>

+  <bean id="applicationContext" 

+    class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />

+

+  <bean id="weatherSpringService" class="sample.spring.service.WeatherSpringService">

+    <property name="weather" ref="weatherBean"/>

+  </bean>

+

+  <bean id="weatherBean" class="sample.spring.bean.Weather">

+    <property name="temperature" value="89.9"/>

+    <property name="forecast" value="Sunny"/>

+    <property name="rain" value="false"/>

+    <property name="howMuchRain" value="0.2"/>

+  </bean>

+</beans>

diff --git a/rampart_1_1/modules/samples/pojoguidespring/src/client/WeatherSpringRPCClient.java b/rampart_1_1/modules/samples/pojoguidespring/src/client/WeatherSpringRPCClient.java
new file mode 100644
index 0000000..25b1da4
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguidespring/src/client/WeatherSpringRPCClient.java
@@ -0,0 +1,52 @@
+package client;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.rpc.client.RPCServiceClient;

+

+import sample.spring.bean.Weather;

+

+public class WeatherSpringRPCClient {

+

+    public static void main(String[] args1) throws AxisFault {

+

+        RPCServiceClient serviceClient = new RPCServiceClient();

+

+        Options options = serviceClient.getOptions();

+

+        EndpointReference targetEPR 

+                = new EndpointReference(

+                "http://localhost:8080/axis2/services/WeatherSpringService"); 

+        

+        options.setTo(targetEPR);

+

+        // Get the weather (no setting, the Spring Framework has already initialized it for us)

+        QName opGetWeather = new QName("http://service.spring.sample/xsd", "getWeather");

+

+        Object[] opGetWeatherArgs = new Object[] { };

+        Class[] returnTypes = new Class[] { Weather.class };

+        

+        

+        Object[] response = serviceClient.invokeBlocking(opGetWeather,

+                opGetWeatherArgs, returnTypes);

+        

+        Weather result = (Weather) response[0];

+        

+        // display results

+        if (result == null) {

+            System.out.println("Weather didn't initialize!");

+        }else{

+            System.out.println("Temperature               : " +

+                               result.getTemperature());

+            System.out.println("Forecast                  : " +

+                               result.getForecast());

+            System.out.println("Rain                      : " +

+                               result.getRain());

+            System.out.println("How much rain (in inches) : " +

+                               result.getHowMuchRain());

+        }

+    }

+}

diff --git a/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/bean/Weather.java b/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/bean/Weather.java
new file mode 100644
index 0000000..f5757d8
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/bean/Weather.java
@@ -0,0 +1,40 @@
+package sample.spring.bean;

+

+public class Weather{

+    float temperature;

+    String forecast;

+    boolean rain;

+    float howMuchRain;

+    

+    public void setTemperature(float temp){

+        temperature = temp;

+    }

+

+    public float getTemperature(){

+        return temperature;

+    }

+    

+    public void setForecast(String fore){

+        forecast = fore;

+    }

+

+    public String getForecast(){

+        return forecast;

+    }

+    

+    public void setRain(boolean r){

+        rain = r;

+    }

+

+    public boolean getRain(){

+        return rain;

+    }

+    

+    public void setHowMuchRain(float howMuch){

+        howMuchRain = howMuch;

+    }

+

+    public float getHowMuchRain(){

+        return howMuchRain;

+    }

+}

diff --git a/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/service/SpringInit.java b/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/service/SpringInit.java
new file mode 100644
index 0000000..dc0bcf2
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/service/SpringInit.java
@@ -0,0 +1,58 @@
+package sample.spring.service;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.engine.ServiceLifeCycle;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.OperationContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.description.AxisService;

+import org.springframework.context.support.ClassPathXmlApplicationContext;

+

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+public class SpringInit implements ServiceLifeCycle {

+        

+    private static Log logger = LogFactory

+        .getLog(SpringInit .class);

+

+    // The web service

+    public OMElement springInit(OMElement ignore) {

+

+        return null;

+    }

+

+    public void init(ServiceContext serviceContext) {

+        

+    }

+

+    public void setOperationContext(OperationContext arg0) {

+

+    }

+

+    public void destroy(ServiceContext arg0) {

+

+    }

+

+     /**

+     * this will be called during the deployement time of the service. irrespective

+     * of the service scope this method will be called

+     */

+    public void startUp(ConfigurationContext ignore, AxisService service) {

+        ClassLoader classLoader = service.getClassLoader();

+        ClassPathXmlApplicationContext appCtx = new

+            ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"}, false);

+        appCtx.setClassLoader(classLoader);

+        appCtx.refresh();

+        if (logger.isDebugEnabled()) {

+            logger.debug("\n\nstartUp() set spring classloader via axisService.getClassLoader() ... ");

+        }

+    }

+    /**

+     * this will be called during the deployement time of the service. irrespective

+     * of the service scope this method will be called

+     */

+    public void shutDown(ConfigurationContext ignore, AxisService service) {

+        

+    }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/service/WeatherSpringService.java b/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/service/WeatherSpringService.java
new file mode 100644
index 0000000..ea29255
--- /dev/null
+++ b/rampart_1_1/modules/samples/pojoguidespring/src/sample/spring/service/WeatherSpringService.java
@@ -0,0 +1,15 @@
+package sample.spring.service;

+

+import sample.spring.bean.Weather;

+

+public class WeatherSpringService{

+    Weather weather;

+    

+    public void setWeather(Weather w){

+        weather = w;

+    }

+

+    public Weather getWeather(){

+        return weather;

+    }

+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/project.properties b/rampart_1_1/modules/samples/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/samples/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/samples/project.xml b/rampart_1_1/modules/samples/project.xml
new file mode 100644
index 0000000..ec34818
--- /dev/null
+++ b/rampart_1_1/modules/samples/project.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+* 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.
+*/
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - Samples</name>
+    <id>axis2-samples</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>Samples for Axis 2.0</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+	<dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${neethi.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>     
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-addressing</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+	  <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <!-- external JARs -->
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>groovy</groupId>
+            <artifactId>groovy-all</artifactId>
+            <version>${groovy.all.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+            <url>http://dist.codehaus.org/groovy/jars/</url>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons.httpclient.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons.codec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javamail.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xmlbeans</groupId>
+            <artifactId>xbean</artifactId>
+            <version>${xbean.version}</version>
+            <type>jar</type>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>wss4j</groupId>
+            <artifactId>wss4j</artifactId>
+            <version>${wss4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-security</groupId>
+            <artifactId>xmlsec</artifactId>
+            <version>${xmlsec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>bouncycastle</groupId>
+            <artifactId>bcprov</artifactId>
+            <version>${bcprov.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>opensaml</groupId>
+            <artifactId>opensaml</artifactId>
+            <version>${opensaml.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+	<dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+            <version>${xml_apis.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxen</groupId>
+            <artifactId>jaxen</artifactId>
+            <version>${jaxen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>backport-util-concurrent</groupId>
+            <artifactId>backport-util-concurrent</artifactId>
+            <version>${backport_util_concurrent.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+         <!--for java2wsdl generation we use JAM , so there should be a dependency on the annogen jar or-->
+        <!--XML Beans-->
+         <dependency>
+            <groupId>annogen</groupId>
+            <artifactId>annogen</artifactId>
+            <version>${annogen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+    </dependencies>
+
+    <!-- build information for the project -->
+    <build>
+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
+        <sourceDirectory>src</sourceDirectory>
+        <unitTestSourceDirectory>test</unitTestSourceDirectory>
+	
+	<sourceModifications>
+            <sourceModification>
+		<className>fakeClass</className>
+		<excludes>
+	      	     <exclude>**/eventing/**</exclude>
+		</excludes>
+	    </sourceModification>
+        </sourceModifications>
+
+        <unitTest>
+
+            <excludes>
+                <exclude>**/*Abstract*.java</exclude>
+                <exclude>**/*Util*.java</exclude>
+                <exclude>**/*InteropStubTest.java</exclude>
+                <exclude>**org/apache/axis2/mail/*.java</exclude>
+            </excludes>
+            <includes>
+                <include>**/*Test.java</include>
+            </includes>
+
+            <resources>
+                <resource>
+                    <directory>${basedir}/test-resources</directory>
+                </resource>
+                <resource>
+                    <directory>conf</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                    </includes>
+                </resource>
+                <resource>
+                    <directory>src</directory>
+                    <includes>
+                        <include>**/*.properties</include>
+                        <include>**/*.xml</include>
+                    </includes>
+                </resource>
+            </resources>
+        </unitTest>
+
+        <resources>
+            <resource>
+                <directory>conf</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>test</directory>
+                <includes>
+                    <include>**/*.jpg</include>
+                </includes>
+            </resource>
+        </resources>
+    </build>
+
+    <reports/>
+
+</project>
diff --git a/rampart_1_1/modules/samples/quickstart/README.txt b/rampart_1_1/modules/samples/quickstart/README.txt
new file mode 100644
index 0000000..42cf93c
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstart/README.txt
@@ -0,0 +1,46 @@
+Axis2 Quick Start Guide- Sample 1

+=================================

+

+This sample contains source code for the xdocs/1_1/quickstartguide.html document found in 

+the extracted Axis2 Documents Distribution. For a more detailed description on the 

+source code kindly see this 'Axis2 Quick Start Guide' document.

+

+Introduction

+============

+In this sample, we are deploying a POJO after writing a services.xml and

+creating an aar. We also test the gePrice and update methods using a browser.

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Building the Service

+====================

+

+Type "ant generate.service" or just "ant" from Axis2_HOME/samples/quickstart directory 

+and then deploy the Axis2_HOME/samples/quickstart/build/StockQuoteService.aar

+

+Generate WSDL

+==============

+

+Type "ant generate.wsdl" from Axis2_HOME/samples/quickstart directory which generates a 

+WSDL file for the above Web service and it will be placed in Axis2_HOME/samples/quickstart/build 

+directory.

+

+Running the Client

+==================

+- From your browser, If you point to the following URL:

+http://localhost:8080/axis2/rest/StockQuoteService/getPrice?symbol=IBM

+

+You will get the following response:

+<ns:getPriceResponse><ns:return>42.0</ns:return></ns:getPriceResponse>

+

+- If you invoke the update method like so:

+http://localhost:8080/axis2/rest/StockQuoteService/update?symbol=IBM&price=100

+

+And then execute the first getPrice url. You can see that the price got updated.

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/quickstart/build.xml b/rampart_1_1/modules/samples/quickstart/build.xml
new file mode 100644
index 0000000..8f47072
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstart/build.xml
@@ -0,0 +1,57 @@
+<project basedir="." default="generate.service">
+
+    <property environment="env"/>
+    <property name="AXIS2_HOME" value="${env.AXIS2_HOME}"/>
+
+    <property name="build.dir" value="build"/>
+
+    <path id="axis2.classpath">
+        <fileset dir="${AXIS2_HOME}/lib">
+            <include name="*.jar"/>
+        </fileset>
+    </path>
+
+    <target name="compile.service">
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${build.dir}/classes"/>
+
+        <!--First let's compile the classes-->
+        <javac debug="on" 
+               fork="true"
+               destdir="${build.dir}/classes" 
+               srcdir="${basedir}/src"
+               classpathref="axis2.classpath">
+        </javac>
+    </target>
+
+    <target name="generate.wsdl" depends="compile.service">
+        <taskdef name="java2wsdl"
+                 classname="org.apache.ws.java2wsdl.Java2WSDLTask"
+                 classpathref="axis2.classpath"/>
+        <java2wsdl className="samples.quickstart.service.pojo.StockQuoteService"
+                   outputLocation="${build.dir}"
+                   targetNamespace="http://quickstart.samples/"
+                   schemaTargetNamespace="http://quickstart.samples/xsd">
+            <classpath>
+                <pathelement path="${axis2.classpath}"/>
+                <pathelement location="${build.dir}/classes"/>
+            </classpath>
+        </java2wsdl>
+    </target>
+
+    <target name="generate.service" depends="compile.service">
+        <!--aar them up -->
+        <copy toDir="${build.dir}/classes" failonerror="false">
+            <fileset dir="${basedir}/resources">
+                <include name="**/*.xml"/>
+            </fileset>
+        </copy>
+        <jar destfile="${build.dir}/StockQuoteService.aar">
+            <fileset excludes="**/Test.class" dir="${build.dir}/classes"/>
+        </jar>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build.dir}"/>
+    </target>
+</project>
diff --git a/rampart_1_1/modules/samples/quickstart/resources/META-INF/services.xml b/rampart_1_1/modules/samples/quickstart/resources/META-INF/services.xml
new file mode 100644
index 0000000..d6fe2dd
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstart/resources/META-INF/services.xml
@@ -0,0 +1,13 @@
+<service name="StockQuoteService" scope="application" targetNamespace="http://quickstart.samples/">

+    <description>

+        Stock Quote Service

+    </description>

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+    </messageReceivers>

+    <schema schemaNamespace="http://quickstart.samples/xsd"/>

+    <parameter name="ServiceClass">samples.quickstart.service.pojo.StockQuoteService</parameter>

+</service>

diff --git a/rampart_1_1/modules/samples/quickstart/src/samples/quickstart/service/pojo/StockQuoteService.java b/rampart_1_1/modules/samples/quickstart/src/samples/quickstart/service/pojo/StockQuoteService.java
new file mode 100644
index 0000000..c763d8c
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstart/src/samples/quickstart/service/pojo/StockQuoteService.java
@@ -0,0 +1,19 @@
+package samples.quickstart.service.pojo;

+

+import java.util.HashMap;

+

+public class StockQuoteService {

+    private HashMap map = new HashMap();

+

+    public double getPrice(String symbol) {

+        Double price = (Double) map.get(symbol);

+        if(price != null){

+            return price.doubleValue();

+        }

+        return 42.00;

+    }

+

+    public void update(String symbol, double price) {

+        map.put(symbol, new Double(price));

+    }

+}

diff --git a/rampart_1_1/modules/samples/quickstartadb/README.txt b/rampart_1_1/modules/samples/quickstartadb/README.txt
new file mode 100644
index 0000000..e89e8df
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartadb/README.txt
@@ -0,0 +1,34 @@
+Axis2 Quick Start Guide- Sample 2 (ADB)

+======================================

+

+This sample contains source code for the xdocs/1_1/quickstartguide.html document found in 

+the extracted Axis2 Documents Distribution. For a more detailed description on the 

+source code kindly see this 'Axis2 Quick Start Guide' document.

+

+Introduction

+============

+

+In this sample, we are deploying an ADB generated service. The service

+is tested using generated client stubs.

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Building the Service

+====================

+

+Type "ant generate.service" from Axis2_HOME/samples/quickstartadb

+directory and then deploy the 

+Axis2_HOME/samples/quickstartadb/build/service/build/lib/StockQuoteService.aar

+

+Running the Client

+==================

+

+type ant run.client in the Axis2_HOME/samples/quickstartadb directory

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you

+have any trouble running the sample.

diff --git a/rampart_1_1/modules/samples/quickstartadb/build.xml b/rampart_1_1/modules/samples/quickstartadb/build.xml
new file mode 100644
index 0000000..8328895
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartadb/build.xml
@@ -0,0 +1,80 @@
+<project basedir="." default="generate.service">
+
+    <property environment="env"/>
+    <property name="AXIS2_HOME" value="${env.AXIS2_HOME}"/>
+
+    <property name="build.dir" value="build"/>
+
+    <path id="axis2.classpath">
+        <fileset dir="${AXIS2_HOME}/lib">
+            <include name="*.jar"/>
+        </fileset>
+    </path>
+    <path id="client.class.path">
+        <fileset dir="${AXIS2_HOME}/lib">
+            <include name="*.jar" />
+        </fileset>
+        <fileset dir="${build.dir}/client/build/lib" >
+            <include name="*.jar" />
+        </fileset>
+    </path>
+
+    <target name="init">
+        <mkdir dir="${build.dir}"/>
+    </target>
+
+    <target name="generate.service" depends="init">
+        <taskdef name="wsdl2java"
+                 classname="org.apache.axis2.tool.ant.AntCodegenTask"
+                 classpathref="axis2.classpath"/>
+        <wsdl2java wsdlFilename="${basedir}/resources/META-INF/StockQuoteService.wsdl"
+                   output="${build.dir}/service"
+                   packageName="samples.quickstart.service.adb"
+                   language="java"
+                   databindingName="adb"
+                   synconly="true"
+                   serverside="true"
+                   serverSideInterface="true"
+                   namespaceToPackages="http://quickstart.samples/xsd=samples.quickstart.service.adb.xsd"
+                   generateservicexml="true"/>
+        <copy file="${basedir}/src/samples/quickstart/service/adb/StockQuoteServiceSkeleton.java"
+              toDir="${build.dir}/service/src/samples/quickstart/service/adb/"
+              overwrite="yes">    
+        </copy>
+        <copy file="${basedir}/resources/META-INF/services.xml"
+              toDir="${build.dir}/service/resources/"
+              overwrite="yes">
+        </copy>
+        <ant dir="${build.dir}/service"/>
+    </target>
+
+    <target name="generate.client" depends="init">
+        <taskdef name="wsdl2java"
+                 classname="org.apache.axis2.tool.ant.AntCodegenTask"
+                 classpathref="axis2.classpath"/>
+        <wsdl2java wsdlFilename="${basedir}/resources/META-INF/StockQuoteService.wsdl"
+                   output="${build.dir}/client"
+                   packageName="samples.quickstart.service.adb"
+                   databindingName="adb"
+                   namespaceToPackages="http://quickstart.samples/xsd=samples.quickstart.service.adb.xsd"
+                   language="java"
+                   synconly="true"/>
+        <copy file="${basedir}/src/samples/quickstart/clients/ADBClient.java"
+              toDir="${build.dir}/client/src/samples/quickstart/clients/"
+              overwrite="yes">
+        </copy>
+        <ant dir="${build.dir}/client"/>
+    </target>
+
+    <target name="generate.all" depends="generate.service, generate.client"/>
+
+    <target name="run.client" depends="generate.client">
+        <java classname="samples.quickstart.clients.ADBClient">
+            <classpath refid="client.class.path" />
+        </java>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build.dir}"/>
+    </target>
+</project>
diff --git a/rampart_1_1/modules/samples/quickstartadb/resources/META-INF/StockQuoteService.wsdl b/rampart_1_1/modules/samples/quickstartadb/resources/META-INF/StockQuoteService.wsdl
new file mode 100644
index 0000000..fbb2ce3
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartadb/resources/META-INF/StockQuoteService.wsdl
@@ -0,0 +1,24 @@
+<wsdl:definitions xmlns:axis2="http://quickstart.samples/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns="http://quickstart.samples/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://quickstart.samples/"><wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd">
+<xs:element name="getPrice">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="symbol" nillable="true" type="xs:string" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+<xs:element name="getPriceResponse">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="return" nillable="true" type="xs:double" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+<xs:element name="update">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="symbol" nillable="true" type="xs:string" />
+<xs:element name="price" nillable="true" type="xs:double" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+</xs:schema></wsdl:types><wsdl:message name="getPriceMessage"><wsdl:part name="part1" element="ns:getPrice" /></wsdl:message><wsdl:message name="getPriceResponseMessage"><wsdl:part name="part1" element="ns:getPriceResponse" /></wsdl:message><wsdl:message name="updateMessage"><wsdl:part name="part1" element="ns:update" /></wsdl:message><wsdl:portType name="StockQuoteServicePortType"><wsdl:operation name="getPrice"><wsdl:input message="axis2:getPriceMessage" /><wsdl:output message="axis2:getPriceResponseMessage" /></wsdl:operation><wsdl:operation name="update"><wsdl:input message="axis2:updateMessage" /></wsdl:operation></wsdl:portType><wsdl:binding name="StockQuoteServiceSOAP11Binding" type="axis2:StockQuoteServicePortType"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /><wsdl:operation name="getPrice"><soap:operation soapAction="urn:getPrice" style="document" /><wsdl:input><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input><wsdl:output><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:output></wsdl:operation><wsdl:operation name="update"><soap:operation soapAction="urn:update" style="document" /><wsdl:input><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input></wsdl:operation></wsdl:binding><wsdl:binding name="StockQuoteServiceSOAP12Binding" type="axis2:StockQuoteServicePortType"><soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /><wsdl:operation name="getPrice"><soap12:operation soapAction="urn:getPrice" style="document" /><wsdl:input><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input><wsdl:output><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:output></wsdl:operation><wsdl:operation name="update"><soap12:operation soapAction="urn:update" style="document" /><wsdl:input><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input></wsdl:operation></wsdl:binding><wsdl:service name="StockQuoteService"><wsdl:port name="StockQuoteServiceSOAP11port" binding="axis2:StockQuoteServiceSOAP11Binding"><soap:address location="http://localhost:8080/axis2/services/StockQuoteService" /></wsdl:port><wsdl:port name="StockQuoteServiceSOAP12port" binding="axis2:StockQuoteServiceSOAP12Binding"><soap12:address location="http://localhost:8080/axis2/services/StockQuoteService" /></wsdl:port></wsdl:service></wsdl:definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/quickstartadb/resources/META-INF/services.xml b/rampart_1_1/modules/samples/quickstartadb/resources/META-INF/services.xml
new file mode 100644
index 0000000..0bc41e0
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartadb/resources/META-INF/services.xml
@@ -0,0 +1,17 @@
+<service name="StockQuoteService" scope="application">

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="samples.quickstart.service.adb.StockQuoteServiceMessageReceiverInOut"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="samples.quickstart.service.adb.StockQuoteServiceMessageReceiverInOnly"/>

+    </messageReceivers>

+    <parameter locked="false" name="ServiceClass">samples.quickstart.service.adb.StockQuoteServiceSkeleton

+    </parameter>

+    <operation name="update" mep="http://www.w3.org/2004/08/wsdl/in-only">

+        <actionMapping>urn:update</actionMapping>

+    </operation>

+    <operation name="getPrice" mep="http://www.w3.org/2004/08/wsdl/in-out">

+        <actionMapping>urn:getPrice</actionMapping>

+        <outputActionMapping>http://quickstart.samples/StockQuoteServicePortType/getPriceResponse</outputActionMapping>

+    </operation>

+</service>

diff --git a/rampart_1_1/modules/samples/quickstartadb/src/samples/quickstart/clients/ADBClient.java b/rampart_1_1/modules/samples/quickstartadb/src/samples/quickstart/clients/ADBClient.java
new file mode 100644
index 0000000..837f639
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartadb/src/samples/quickstart/clients/ADBClient.java
@@ -0,0 +1,52 @@
+package samples.quickstart.clients;

+

+import samples.quickstart.service.adb.StockQuoteServiceStub;

+public class ADBClient{

+    public static void main(java.lang.String args[]){

+        try{

+            StockQuoteServiceStub stub =

+                new StockQuoteServiceStub

+                ("http://localhost:8080/axis2/services/StockQuoteService");

+

+            getPrice(stub);

+            update(stub);

+

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* fire and forget */

+    public static void update(StockQuoteServiceStub stub){

+        try{

+            StockQuoteServiceStub.Update req = new StockQuoteServiceStub.Update();

+            req.setSymbol ("ABC");

+            req.setPrice (42.35);

+

+            stub.update(req);

+            System.err.println("done");

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* two way call/receive */

+    public static void getPrice(StockQuoteServiceStub stub){

+        try{

+            StockQuoteServiceStub.GetPrice req = new StockQuoteServiceStub.GetPrice();

+

+            req.setSymbol("ABC");

+

+            StockQuoteServiceStub.GetPriceResponse res =

+                stub.getPrice(req);

+

+            System.err.println(res.get_return());

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/samples/quickstartadb/src/samples/quickstart/service/adb/StockQuoteServiceSkeleton.java b/rampart_1_1/modules/samples/quickstartadb/src/samples/quickstart/service/adb/StockQuoteServiceSkeleton.java
new file mode 100644
index 0000000..76c3c56
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartadb/src/samples/quickstart/service/adb/StockQuoteServiceSkeleton.java
@@ -0,0 +1,25 @@
+package samples.quickstart.service.adb;

+import samples.quickstart.service.adb.xsd.GetPriceResponse;

+import samples.quickstart.service.adb.xsd.Update;

+import samples.quickstart.service.adb.xsd.GetPrice;

+

+import java.util.HashMap;

+public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {

+    private HashMap map = new HashMap();

+

+    public void update(Update param0) {

+        map.put(param0.getSymbol(), new Double(param0.getPrice()));

+    }

+

+    public GetPriceResponse getPrice(GetPrice param1) {

+        Double price = (Double) map.get(param1.getSymbol());

+        double ret = 42;

+        if(price != null){

+            ret = price.doubleValue();

+        }

+        GetPriceResponse res =

+                new GetPriceResponse();

+        res.set_return(ret);

+        return res;

+    }

+}

diff --git a/rampart_1_1/modules/samples/quickstartaxiom/README.txt b/rampart_1_1/modules/samples/quickstartaxiom/README.txt
new file mode 100644
index 0000000..585f516
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartaxiom/README.txt
@@ -0,0 +1,37 @@
+Axis2 Quick Start Guide - Sample 3 (AXIOM)

+==========================================

+

+This sample contains source code for the xdocs/1_1/quickstartguide.html document found in 

+the extracted Axis2 Documents Distribution. For a more detailed description on the 

+source code kindly see this 'Axis2 Quick Start Guide' document.

+

+Introduction

+============

+

+In this sample, we are deploying an AXIOM based POJO service after writing

+a services.xml and creating an aar. We also test successful

+deployment using an AXIOM based client.

+

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Building the Service

+====================

+

+Type "ant generate.service" from Axis2_HOME/samples/quickstartaxiom directory.

+Then deploy the 

+Axis2_HOME/samples/quickstartaxiom/build/StockQuoteService.aar

+

+

+Running the Client

+==================

+

+Type ant run.client in the Axis2_HOME/samples/quickstartaxiom directory

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have

+any trouble running the sample.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/quickstartaxiom/build.xml b/rampart_1_1/modules/samples/quickstartaxiom/build.xml
new file mode 100644
index 0000000..df28fdb
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartaxiom/build.xml
@@ -0,0 +1,55 @@
+<project basedir="." default="generate.service">
+
+    <property environment="env"/>
+    <property name="AXIS2_HOME" value="${env.AXIS2_HOME}"/>
+
+    <property name="build.dir" value="build"/>
+
+    <path id="axis2.classpath">
+        <fileset dir="${AXIS2_HOME}/lib">
+            <include name="*.jar"/>
+        </fileset>
+    </path>
+	<path id="client.class.path">
+		<fileset dir="${AXIS2_HOME}/lib">
+			<include name="*.jar" />
+		</fileset>
+		<pathelement location="${build.dir}/classes" />
+	</path>
+
+    <target name="compile">
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${build.dir}/classes"/>
+
+        <!--First let's compile the classes-->
+        <javac debug="on" 
+               fork="true"
+               destdir="${build.dir}/classes" 
+               srcdir="${basedir}/src"
+               classpathref="axis2.classpath">
+        </javac>
+    </target>
+
+    <target name="generate.service" depends="compile">
+        <!--aar them up -->
+        <copy toDir="${build.dir}/classes" failonerror="false">
+            <fileset dir="${basedir}/resources">
+                <include name="**/*.xml"/>
+                <include name="**/*.wsdl"/>
+            </fileset>
+        </copy>
+        <jar destfile="${build.dir}/StockQuoteService.aar">
+            <fileset excludes="**/Test.class" dir="${build.dir}/classes"/>
+        </jar>
+    </target>
+
+    <target name="run.client" depends="compile">
+        <java classname="samples.quickstart.clients.AXIOMClient">
+            <classpath refid="client.class.path" />
+        </java>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build.dir}"/>
+    </target>
+</project>
diff --git a/rampart_1_1/modules/samples/quickstartaxiom/resources/META-INF/StockQuoteService.wsdl b/rampart_1_1/modules/samples/quickstartaxiom/resources/META-INF/StockQuoteService.wsdl
new file mode 100644
index 0000000..fbb2ce3
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartaxiom/resources/META-INF/StockQuoteService.wsdl
@@ -0,0 +1,24 @@
+<wsdl:definitions xmlns:axis2="http://quickstart.samples/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns="http://quickstart.samples/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://quickstart.samples/"><wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd">
+<xs:element name="getPrice">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="symbol" nillable="true" type="xs:string" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+<xs:element name="getPriceResponse">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="return" nillable="true" type="xs:double" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+<xs:element name="update">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="symbol" nillable="true" type="xs:string" />
+<xs:element name="price" nillable="true" type="xs:double" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+</xs:schema></wsdl:types><wsdl:message name="getPriceMessage"><wsdl:part name="part1" element="ns:getPrice" /></wsdl:message><wsdl:message name="getPriceResponseMessage"><wsdl:part name="part1" element="ns:getPriceResponse" /></wsdl:message><wsdl:message name="updateMessage"><wsdl:part name="part1" element="ns:update" /></wsdl:message><wsdl:portType name="StockQuoteServicePortType"><wsdl:operation name="getPrice"><wsdl:input message="axis2:getPriceMessage" /><wsdl:output message="axis2:getPriceResponseMessage" /></wsdl:operation><wsdl:operation name="update"><wsdl:input message="axis2:updateMessage" /></wsdl:operation></wsdl:portType><wsdl:binding name="StockQuoteServiceSOAP11Binding" type="axis2:StockQuoteServicePortType"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /><wsdl:operation name="getPrice"><soap:operation soapAction="urn:getPrice" style="document" /><wsdl:input><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input><wsdl:output><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:output></wsdl:operation><wsdl:operation name="update"><soap:operation soapAction="urn:update" style="document" /><wsdl:input><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input></wsdl:operation></wsdl:binding><wsdl:binding name="StockQuoteServiceSOAP12Binding" type="axis2:StockQuoteServicePortType"><soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /><wsdl:operation name="getPrice"><soap12:operation soapAction="urn:getPrice" style="document" /><wsdl:input><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input><wsdl:output><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:output></wsdl:operation><wsdl:operation name="update"><soap12:operation soapAction="urn:update" style="document" /><wsdl:input><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input></wsdl:operation></wsdl:binding><wsdl:service name="StockQuoteService"><wsdl:port name="StockQuoteServiceSOAP11port" binding="axis2:StockQuoteServiceSOAP11Binding"><soap:address location="http://localhost:8080/axis2/services/StockQuoteService" /></wsdl:port><wsdl:port name="StockQuoteServiceSOAP12port" binding="axis2:StockQuoteServiceSOAP12Binding"><soap12:address location="http://localhost:8080/axis2/services/StockQuoteService" /></wsdl:port></wsdl:service></wsdl:definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/quickstartaxiom/resources/META-INF/services.xml b/rampart_1_1/modules/samples/quickstartaxiom/resources/META-INF/services.xml
new file mode 100644
index 0000000..9b44536
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartaxiom/resources/META-INF/services.xml
@@ -0,0 +1,12 @@
+<service name="StockQuoteService" scope="application">

+    <description>

+        Stock Quote Service

+    </description>

+    <operation name="getPrice">

+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

+    </operation>

+    <operation name="update">

+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

+    </operation>

+    <parameter name="ServiceClass">samples.quickstart.service.axiom.StockQuoteService</parameter>

+</service>

diff --git a/rampart_1_1/modules/samples/quickstartaxiom/src/samples/quickstart/clients/AXIOMClient.java b/rampart_1_1/modules/samples/quickstartaxiom/src/samples/quickstart/clients/AXIOMClient.java
new file mode 100644
index 0000000..fb358f7
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartaxiom/src/samples/quickstart/clients/AXIOMClient.java
@@ -0,0 +1,72 @@
+package samples.quickstart.clients;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+public class AXIOMClient {
+
+    private static EndpointReference targetEPR = 
+        new EndpointReference(
+                              "http://localhost:8080/axis2/services/StockQuoteService");
+
+    public static OMElement getPricePayload(String symbol) {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                                                 "http://quickstart.samples/xsd", "tns");
+
+        OMElement method = fac.createOMElement("getPrice", omNs);
+        OMElement value = fac.createOMElement("symbol", omNs);
+        value.addChild(fac.createOMText(value, symbol));
+        method.addChild(value);
+        return method;
+    }
+
+    public static OMElement updatePayload(String symbol, double price) {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                                                 "http://quickstart.samples/xsd", "tns");
+
+        OMElement method = fac.createOMElement("update", omNs);
+
+        OMElement value1 = fac.createOMElement("symbol", omNs);
+        value1.addChild(fac.createOMText(value1, symbol));
+        method.addChild(value1);
+
+        OMElement value2 = fac.createOMElement("price", omNs);
+        value2.addChild(fac.createOMText(value2,
+                                         Double.toString(price)));
+        method.addChild(value2);
+        return method;
+    }
+
+    public static void main(String[] args) {
+        try {
+            OMElement getPricePayload = getPricePayload("WSO");
+            OMElement updatePayload = updatePayload("WSO", 123.42);
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+
+            sender.fireAndForget(updatePayload);
+            System.err.println("done");
+            Thread.sleep(3000);
+            OMElement result = sender.sendReceive(getPricePayload);
+
+            String response = result.getFirstElement().getText();
+            System.err.println("Current price of WSO: " + response);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/quickstartaxiom/src/samples/quickstart/service/axiom/StockQuoteService.java b/rampart_1_1/modules/samples/quickstartaxiom/src/samples/quickstart/service/axiom/StockQuoteService.java
new file mode 100644
index 0000000..0104b4f
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartaxiom/src/samples/quickstart/service/axiom/StockQuoteService.java
@@ -0,0 +1,47 @@
+package samples.quickstart.service.axiom;

+

+import javax.xml.stream.XMLStreamException;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+

+import java.util.HashMap;

+public class StockQuoteService {

+    private HashMap map = new HashMap();

+

+    public OMElement getPrice(OMElement element) throws XMLStreamException {

+        element.build();

+        element.detach();

+

+        OMElement symbolElement = element.getFirstElement();

+        String symbol = symbolElement.getText();

+

+        String returnText = "42";

+        Double price = (Double) map.get(symbol);

+        if(price != null){

+            returnText  = "" + price.doubleValue();

+        }

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace omNs =

+            fac.createOMNamespace("http://quickstart.samples/xsd", "ns");

+        OMElement method = fac.createOMElement("getPriceResponse", omNs);

+        OMElement value = fac.createOMElement("return", omNs);

+        value.addChild(fac.createOMText(value, returnText));

+        method.addChild(value);

+        return method;

+    }

+

+    public void update(OMElement element) throws XMLStreamException {

+        element.build();

+        element.detach();

+

+        OMElement symbolElement = element.getFirstElement();

+        String symbol = symbolElement.getText();

+

+        OMElement priceElement = (OMElement)symbolElement.getNextOMSibling();

+        String price = priceElement.getText();

+

+        map.put(symbol, new Double(price));

+    }

+}

diff --git a/rampart_1_1/modules/samples/quickstartjibx/README.txt b/rampart_1_1/modules/samples/quickstartjibx/README.txt
new file mode 100644
index 0000000..9106c4d
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartjibx/README.txt
@@ -0,0 +1,29 @@
+Axis2 Quick Start Guide- (JiBX)

+======================================

+

+Introduction

+============

+In this sample, we are deploying a JiBX generated service. The service

+is tested using generated client stubs.

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Building the Service

+====================

+

+Type "ant generate.service" from Axis2_HOME/samples/quickstartjibx

+directory and then deploy the 

+Axis2_HOME/samples/quickstartjibx/build/service/build/lib/StockQuoteService.aar

+

+Running the Client

+==================

+

+type ant run.client in the Axis2_HOME/samples/quickstartadb directory

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you

+have any trouble running the sample.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/quickstartjibx/build.xml b/rampart_1_1/modules/samples/quickstartjibx/build.xml
new file mode 100644
index 0000000..685efad
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartjibx/build.xml
@@ -0,0 +1,83 @@
+<project basedir="." default="generate.all">
+
+    <property environment="env"/>
+    <property name="AXIS2_HOME" value="${env.AXIS2_HOME}"/>
+
+    <property name="build.dir" value="build"/>
+
+    <path id="axis2.classpath">
+        <fileset dir="${AXIS2_HOME}/lib">
+            <include name="*.jar"/>
+        </fileset>
+    </path>
+    <path id="client.class.path">
+        <fileset dir="${AXIS2_HOME}/lib">
+            <include name="*.jar" />
+        </fileset>
+        <fileset dir="${build.dir}/client/build/lib" >
+            <include name="*.jar" />
+        </fileset>
+    </path>
+
+    <target name="init">
+        <delete dir="${build.dir}"/>
+        <mkdir dir="${build.dir}"/>
+    </target>
+
+    <target name="generate.service" depends="init">
+        <taskdef name="wsdl2java"
+                 classname="org.apache.axis2.tool.ant.AntCodegenTask"
+                 classpathref="axis2.classpath"/>
+        <wsdl2java wsdlFilename="${basedir}/resources/META-INF/StockQuoteService.wsdl"
+                   output="${build.dir}/service"
+                   packageName="samples.quickstart.service.jibx"
+                   language="java"
+                   databindingName="jibx"
+                   unwrap="true"
+                   synconly="true"
+                   serverside="true"
+                   serverSideInterface="true"
+                   namespaceToPackages="http://StockQuoteService/xsd=samples.quickstart.service.jibx.xsd"
+                   generateservicexml="true"/>
+        <copy file="${basedir}/src/samples/quickstart/service/jibx/StockQuoteServiceSkeleton.java"
+              toDir="${build.dir}/service/src/samples/quickstart/service/jibx/"
+              overwrite="yes">    
+        </copy>
+        <copy file="${basedir}/resources/META-INF/services.xml"
+              toDir="${build.dir}/service/resources/"
+              overwrite="yes">
+        </copy>
+        <ant dir="${build.dir}/service"/>
+    </target>
+
+    <target name="generate.client" depends="init">
+        <taskdef name="wsdl2java"
+                 classname="org.apache.axis2.tool.ant.AntCodegenTask"
+                 classpathref="axis2.classpath"/>
+        <wsdl2java wsdlFilename="${basedir}/resources/META-INF/StockQuoteService.wsdl"
+                   output="${build.dir}/client"
+                   packageName="samples.quickstart.service.jibx"
+                   databindingName="jibx"
+                   namespaceToPackages="http://StockQuoteService/xsd=samples.quickstart.service.jibx.xsd"
+                   language="java"
+                   unwrap="true"
+                   synconly="true"/>
+        <copy file="${basedir}/src/samples/quickstart/clients/JiBXClient.java"
+              toDir="${build.dir}/client/src/samples/quickstart/clients/"
+              overwrite="yes">
+        </copy>
+        <ant dir="${build.dir}/client"/>
+    </target>
+
+    <target name="generate.all" depends="generate.service, generate.client"/>
+
+    <target name="run.client" depends="generate.client">
+        <java classname="samples.quickstart.clients.JiBXClient">
+            <classpath refid="client.class.path" />
+        </java>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build.dir}"/>
+    </target>
+</project>
diff --git a/rampart_1_1/modules/samples/quickstartjibx/resources/META-INF/StockQuoteService.wsdl b/rampart_1_1/modules/samples/quickstartjibx/resources/META-INF/StockQuoteService.wsdl
new file mode 100644
index 0000000..c8890bc
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartjibx/resources/META-INF/StockQuoteService.wsdl
@@ -0,0 +1,90 @@
+<wsdl:definitions xmlns:axis2="http://StockQuoteService" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns="http://StockQuoteService/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://StockQuoteService">
+  <wsdl:types>
+    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://StockQuoteService/xsd">
+      <xs:element name="getPrice">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="symbol" nillable="true" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="getPriceResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="return" nillable="true" type="xs:double"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="update">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="symbol" nillable="true" type="xs:string"/>
+            <xs:element name="price" nillable="true" type="xs:double"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:schema>
+  </wsdl:types>
+  <wsdl:message name="getPriceMessage">
+    <wsdl:part name="part1" element="ns:getPrice"/>
+  </wsdl:message>
+  <wsdl:message name="getPriceResponseMessage">
+    <wsdl:part name="part1" element="ns:getPriceResponse"/>
+  </wsdl:message>
+  <wsdl:message name="updateMessage">
+    <wsdl:part name="part1" element="ns:update"/>
+  </wsdl:message>
+  <wsdl:portType name="StockQuoteServicePortType">
+    <wsdl:operation name="getPrice">
+      <wsdl:input message="axis2:getPriceMessage"/>
+      <wsdl:output message="axis2:getPriceResponseMessage"/>
+    </wsdl:operation>
+    <wsdl:operation name="update">
+      <wsdl:input message="axis2:updateMessage"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="StockQuoteServiceSOAP11Binding" type="axis2:StockQuoteServicePortType">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <wsdl:operation name="getPrice">
+      <soap:operation soapAction="urn:getPrice" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal" namespace="http://StockQuoteService"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" namespace="http://StockQuoteService"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="update">
+      <soap:operation soapAction="urn:update" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal" namespace="http://StockQuoteService"/>
+      </wsdl:input>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="StockQuoteServiceSOAP12Binding" type="axis2:StockQuoteServicePortType">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <wsdl:operation name="getPrice">
+      <soap12:operation soapAction="urn:getPrice" style="document"/>
+      <wsdl:input>
+        <soap12:body use="literal" namespace="http://StockQuoteService"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" namespace="http://StockQuoteService"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="update">
+      <soap12:operation soapAction="urn:update" style="document"/>
+      <wsdl:input>
+        <soap12:body use="literal" namespace="http://StockQuoteService"/>
+      </wsdl:input>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="StockQuoteService">
+    <wsdl:port name="StockQuoteServiceSOAP11port" binding="axis2:StockQuoteServiceSOAP11Binding">
+      <soap:address location="http://localhost:8080/axis2/services/StockQuoteService"/>
+    </wsdl:port>
+    <wsdl:port name="StockQuoteServiceSOAP12port" binding="axis2:StockQuoteServiceSOAP12Binding">
+      <soap12:address location="http://localhost:8080/axis2/services/StockQuoteService"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/quickstartjibx/resources/META-INF/services.xml b/rampart_1_1/modules/samples/quickstartjibx/resources/META-INF/services.xml
new file mode 100644
index 0000000..d2bc76d
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartjibx/resources/META-INF/services.xml
@@ -0,0 +1,17 @@
+<service name="StockQuoteService" scope="application">

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="samples.quickstart.service.jibx.StockQuoteServiceMessageReceiverInOut"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="samples.quickstart.service.jibx.StockQuoteServiceMessageReceiverInOnly"/>

+    </messageReceivers>

+    <parameter locked="false" name="ServiceClass">samples.quickstart.service.jibx.StockQuoteServiceSkeleton

+    </parameter>

+    <operation name="update" mep="http://www.w3.org/2004/08/wsdl/in-only">

+        <actionMapping>urn:update</actionMapping>

+    </operation>

+    <operation name="getPrice" mep="http://www.w3.org/2004/08/wsdl/in-out">

+        <actionMapping>urn:getPrice</actionMapping>

+        <outputActionMapping>http://quickstart.samples/StockQuoteServicePortType/getPriceResponse</outputActionMapping>

+    </operation>

+</service>

diff --git a/rampart_1_1/modules/samples/quickstartjibx/src/samples/quickstart/clients/JiBXClient.java b/rampart_1_1/modules/samples/quickstartjibx/src/samples/quickstart/clients/JiBXClient.java
new file mode 100644
index 0000000..b80bdb2
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartjibx/src/samples/quickstart/clients/JiBXClient.java
@@ -0,0 +1,42 @@
+package samples.quickstart.clients;

+

+import samples.quickstart.service.jibx.StockQuoteServiceStub;

+

+public class JiBXClient{

+    public static void main(java.lang.String args[]){

+        try{

+            StockQuoteServiceStub stub =

+                new StockQuoteServiceStub

+                ("http://localhost:8080/axis2/services/StockQuoteService");

+

+            getPrice(stub);

+            update(stub);

+

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* fire and forget */

+    public static void update(StockQuoteServiceStub stub){

+        try{

+            stub.update("ABC", new Double(42.35));

+            System.err.println("done");

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* two way call/receive */

+    public static void getPrice(StockQuoteServiceStub stub){

+        try{

+            System.err.println(stub.getPrice("ABC"));

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/samples/quickstartjibx/src/samples/quickstart/service/jibx/StockQuoteServiceSkeleton.java b/rampart_1_1/modules/samples/quickstartjibx/src/samples/quickstart/service/jibx/StockQuoteServiceSkeleton.java
new file mode 100644
index 0000000..27aabbe
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartjibx/src/samples/quickstart/service/jibx/StockQuoteServiceSkeleton.java
@@ -0,0 +1,19 @@
+package samples.quickstart.service.jibx;

+

+import java.util.HashMap;

+

+public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {

+    private HashMap map = new HashMap();

+

+    public void update(String symbol, Double price) {

+        map.put(symbol, price);

+    }

+

+    public Double getPrice(String symbol) {

+        Double ret = (Double) map.get(symbol);

+        if (ret == null) {

+            ret = new Double(42.0);

+        }

+        return ret;

+    }

+}

diff --git a/rampart_1_1/modules/samples/quickstartxmlbeans/README.txt b/rampart_1_1/modules/samples/quickstartxmlbeans/README.txt
new file mode 100644
index 0000000..fcbced2
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartxmlbeans/README.txt
@@ -0,0 +1,35 @@
+Axis2 Quick Start Guide- Sample 4 (XML Beans)

+============================================

+

+This sample contains source code for the xdocs/1_1/quickstartguide.html document found in 

+the extracted Axis2 Documents Distribution. For a more detailed description on the 

+source code kindly see this 'Axis2 Quick Start Guide' document.

+

+Introduction

+============

+In this sample, we are deploying an XMLBEANS generated service. The service

+is tested using generated client stubs.

+

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Building the Service

+====================

+

+Type "ant generate.service" from Axis2_HOME/samples/quickstartxmlbeans

+directory. Then deploy the 

+Axis2_HOME/samples/quickstartxmlbeans/build/service/build/lib/StockQuoteService.aar

+

+

+Running the Client

+==================

+

+type ant run.client in the Axis2_HOME/samples/quickstartxmlbeans directory

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have

+any trouble running the sample.

diff --git a/rampart_1_1/modules/samples/quickstartxmlbeans/build.xml b/rampart_1_1/modules/samples/quickstartxmlbeans/build.xml
new file mode 100644
index 0000000..eedfda8
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartxmlbeans/build.xml
@@ -0,0 +1,80 @@
+<project basedir="." default="generate.service">
+
+    <property environment="env"/>
+    <property name="AXIS2_HOME" value="${env.AXIS2_HOME}"/>
+
+    <property name="build.dir" value="build"/>
+
+    <path id="axis2.classpath">
+        <fileset dir="${AXIS2_HOME}/lib">
+            <include name="*.jar"/>
+        </fileset>
+    </path>
+    <path id="client.class.path">
+        <fileset dir="${AXIS2_HOME}/lib">
+            <include name="*.jar" />
+        </fileset>
+        <fileset dir="${build.dir}/client/build/lib" >
+            <include name="*.jar" />
+        </fileset>
+    </path>
+
+    <target name="init">
+        <mkdir dir="${build.dir}"/>
+    </target>
+
+    <target name="generate.service" depends="init">
+        <taskdef name="wsdl2java"
+                 classname="org.apache.axis2.tool.ant.AntCodegenTask"
+                 classpathref="axis2.classpath"/>
+        <wsdl2java wsdlFilename="${basedir}/resources/META-INF/StockQuoteService.wsdl"
+                   output="${build.dir}/service"
+                   packageName="samples.quickstart.service.xmlbeans"
+                   language="java"
+                   databindingName="xmlbeans"
+                   synconly="true"
+                   serverside="true"
+                   serverSideInterface="true"
+                   namespaceToPackages="http://quickstart.samples/xsd=samples.quickstart.service.xmlbeans.xsd"
+                   generateservicexml="true"/>
+        <copy file="${basedir}/src/samples/quickstart/service/xmlbeans/StockQuoteServiceSkeleton.java"
+              toDir="${build.dir}/service/src/samples/quickstart/service/xmlbeans/"
+              overwrite="yes">    
+        </copy>
+        <copy file="${basedir}/resources/META-INF/services.xml"
+              toDir="${build.dir}/service/resources/"
+              overwrite="yes">
+        </copy>
+        <ant dir="${build.dir}/service"/>
+    </target>
+
+    <target name="generate.client" depends="init">
+        <taskdef name="wsdl2java"
+                 classname="org.apache.axis2.tool.ant.AntCodegenTask"
+                 classpathref="axis2.classpath"/>
+        <wsdl2java wsdlFilename="${basedir}/resources/META-INF/StockQuoteService.wsdl"
+                   output="${build.dir}/client"
+                   packageName="samples.quickstart.service.xmlbeans"
+                   databindingName="xmlbeans"
+                   namespaceToPackages="http://quickstart.samples/xsd=samples.quickstart.service.xmlbeans.xsd"
+                   language="java"
+                   synconly="true"/>
+        <copy file="${basedir}/src/samples/quickstart/clients/XMLBEANSClient.java"
+              toDir="${build.dir}/client/src/samples/quickstart/clients/"
+              overwrite="yes">
+        </copy>
+        <ant dir="${build.dir}/client"/>
+    </target>
+
+    <target name="generate.all" depends="generate.service, generate.client"/>
+
+    <target name="run.client" depends="generate.client">
+        <java classname="samples.quickstart.clients.XMLBEANSClient">
+            <classpath refid="client.class.path" />
+        </java>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build.dir}"/>
+    </target>
+</project>
diff --git a/rampart_1_1/modules/samples/quickstartxmlbeans/resources/META-INF/StockQuoteService.wsdl b/rampart_1_1/modules/samples/quickstartxmlbeans/resources/META-INF/StockQuoteService.wsdl
new file mode 100644
index 0000000..fbb2ce3
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartxmlbeans/resources/META-INF/StockQuoteService.wsdl
@@ -0,0 +1,24 @@
+<wsdl:definitions xmlns:axis2="http://quickstart.samples/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns="http://quickstart.samples/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://quickstart.samples/"><wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd">
+<xs:element name="getPrice">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="symbol" nillable="true" type="xs:string" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+<xs:element name="getPriceResponse">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="return" nillable="true" type="xs:double" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+<xs:element name="update">
+<xs:complexType>
+<xs:sequence>
+<xs:element name="symbol" nillable="true" type="xs:string" />
+<xs:element name="price" nillable="true" type="xs:double" />
+</xs:sequence>
+</xs:complexType>
+</xs:element>
+</xs:schema></wsdl:types><wsdl:message name="getPriceMessage"><wsdl:part name="part1" element="ns:getPrice" /></wsdl:message><wsdl:message name="getPriceResponseMessage"><wsdl:part name="part1" element="ns:getPriceResponse" /></wsdl:message><wsdl:message name="updateMessage"><wsdl:part name="part1" element="ns:update" /></wsdl:message><wsdl:portType name="StockQuoteServicePortType"><wsdl:operation name="getPrice"><wsdl:input message="axis2:getPriceMessage" /><wsdl:output message="axis2:getPriceResponseMessage" /></wsdl:operation><wsdl:operation name="update"><wsdl:input message="axis2:updateMessage" /></wsdl:operation></wsdl:portType><wsdl:binding name="StockQuoteServiceSOAP11Binding" type="axis2:StockQuoteServicePortType"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /><wsdl:operation name="getPrice"><soap:operation soapAction="urn:getPrice" style="document" /><wsdl:input><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input><wsdl:output><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:output></wsdl:operation><wsdl:operation name="update"><soap:operation soapAction="urn:update" style="document" /><wsdl:input><soap:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input></wsdl:operation></wsdl:binding><wsdl:binding name="StockQuoteServiceSOAP12Binding" type="axis2:StockQuoteServicePortType"><soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /><wsdl:operation name="getPrice"><soap12:operation soapAction="urn:getPrice" style="document" /><wsdl:input><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input><wsdl:output><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:output></wsdl:operation><wsdl:operation name="update"><soap12:operation soapAction="urn:update" style="document" /><wsdl:input><soap12:body use="literal" namespace="http://quickstart.samples/" /></wsdl:input></wsdl:operation></wsdl:binding><wsdl:service name="StockQuoteService"><wsdl:port name="StockQuoteServiceSOAP11port" binding="axis2:StockQuoteServiceSOAP11Binding"><soap:address location="http://localhost:8080/axis2/services/StockQuoteService" /></wsdl:port><wsdl:port name="StockQuoteServiceSOAP12port" binding="axis2:StockQuoteServiceSOAP12Binding"><soap12:address location="http://localhost:8080/axis2/services/StockQuoteService" /></wsdl:port></wsdl:service></wsdl:definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/quickstartxmlbeans/resources/META-INF/services.xml b/rampart_1_1/modules/samples/quickstartxmlbeans/resources/META-INF/services.xml
new file mode 100644
index 0000000..6a8d3b8
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartxmlbeans/resources/META-INF/services.xml
@@ -0,0 +1,17 @@
+<service name="StockQuoteService" scope="application">

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="samples.quickstart.service.xmlbeans.StockQuoteServiceMessageReceiverInOut"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="samples.quickstart.service.xmlbeans.StockQuoteServiceMessageReceiverInOnly"/>

+    </messageReceivers>

+    <parameter locked="false" name="ServiceClass">samples.quickstart.service.xmlbeans.StockQuoteServiceSkeleton

+    </parameter>

+    <operation name="update" mep="http://www.w3.org/2004/08/wsdl/in-only">

+        <actionMapping>urn:update</actionMapping>

+    </operation>

+    <operation name="getPrice" mep="http://www.w3.org/2004/08/wsdl/in-out">

+        <actionMapping>urn:getPrice</actionMapping>

+        <outputActionMapping>http://quickstart.samples/StockQuoteServicePortType/getPriceResponse</outputActionMapping>

+    </operation>

+</service>

diff --git a/rampart_1_1/modules/samples/quickstartxmlbeans/src/samples/quickstart/clients/XMLBEANSClient.java b/rampart_1_1/modules/samples/quickstartxmlbeans/src/samples/quickstart/clients/XMLBEANSClient.java
new file mode 100644
index 0000000..224877f
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartxmlbeans/src/samples/quickstart/clients/XMLBEANSClient.java
@@ -0,0 +1,57 @@
+package samples.quickstart.clients;

+

+import samples.quickstart.service.xmlbeans.StockQuoteServiceStub;

+import samples.quickstart.service.xmlbeans.xsd.GetPriceDocument;

+import samples.quickstart.service.xmlbeans.xsd.GetPriceResponseDocument;

+import samples.quickstart.service.xmlbeans.xsd.UpdateDocument;

+

+public class XMLBEANSClient{

+

+    public static void main(java.lang.String args[]){

+        try{

+            StockQuoteServiceStub stub =

+                new StockQuoteServiceStub

+                ("http://localhost:8080/axis2/services/StockQuoteService");

+

+            getPrice(stub);

+            update(stub);

+

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* fire and forget */

+    public static void update(StockQuoteServiceStub stub){

+        try{

+            UpdateDocument reqDoc = UpdateDocument.Factory.newInstance();

+            UpdateDocument.Update req = reqDoc.addNewUpdate();

+            req.setSymbol ("ABC");

+            req.setPrice (42.32);

+

+            stub.update(reqDoc);

+            System.err.println("done");

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* two way call/receive */

+    public static void getPrice(StockQuoteServiceStub stub){

+        try{

+            GetPriceDocument reqDoc = GetPriceDocument.Factory.newInstance();

+            GetPriceDocument.GetPrice req = reqDoc.addNewGetPrice();

+            req.setSymbol("ABC");

+

+            GetPriceResponseDocument res =

+                stub.getPrice(reqDoc);

+

+            System.err.println(res.getGetPriceResponse().getReturn());

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+}

diff --git a/rampart_1_1/modules/samples/quickstartxmlbeans/src/samples/quickstart/service/xmlbeans/StockQuoteServiceSkeleton.java b/rampart_1_1/modules/samples/quickstartxmlbeans/src/samples/quickstart/service/xmlbeans/StockQuoteServiceSkeleton.java
new file mode 100644
index 0000000..ebacb75
--- /dev/null
+++ b/rampart_1_1/modules/samples/quickstartxmlbeans/src/samples/quickstart/service/xmlbeans/StockQuoteServiceSkeleton.java
@@ -0,0 +1,39 @@
+/**

+ * StockQuoteServiceSkeleton.java

+ *

+ * This file was auto-generated from WSDL

+ * by the Apache Axis2 version: 1.1-RC2 Nov 02, 2006 (02:37:50 LKT)

+ */

+package samples.quickstart.service.xmlbeans;

+import samples.quickstart.service.xmlbeans.xsd.GetPriceDocument;

+import samples.quickstart.service.xmlbeans.xsd.GetPriceResponseDocument;

+import samples.quickstart.service.xmlbeans.xsd.UpdateDocument;

+

+import java.util.HashMap;

+/**

+ * StockQuoteServiceSkeleton java skeleton for the axisService

+ */

+public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {

+

+    private HashMap map = new HashMap();

+

+    public void update(UpdateDocument param0) {

+        map.put(param0.getUpdate().getSymbol(), new Double(param0.getUpdate().getPrice()));

+    }

+

+    public GetPriceResponseDocument getPrice(GetPriceDocument param1) {

+        Double price = (Double) map.get(param1.getGetPrice().getSymbol());

+        double ret = 42;

+        if(price != null){

+            ret = price.doubleValue();

+        }

+        System.err.println();

+        GetPriceResponseDocument resDoc =

+                GetPriceResponseDocument.Factory.newInstance();

+        GetPriceResponseDocument.GetPriceResponse res =

+                resDoc.addNewGetPriceResponse();

+        res.setReturn(ret);

+        return resDoc;

+    }

+}

+    
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/resources/om/binary/binary.xml b/rampart_1_1/modules/samples/resources/om/binary/binary.xml
new file mode 100644
index 0000000..13f952b
--- /dev/null
+++ b/rampart_1_1/modules/samples/resources/om/binary/binary.xml
@@ -0,0 +1 @@
+<Project xmlns:apache="http://ws.apache.org/axis2"><Name>Axis2</Name><CurrentVersion>0.9</CurrentVersion><Modules><!-- List of modules that can be found under Axis2 project --><Module name="xml"><Description>XML Object Model</Description></Module><Module name="wsdl"><Description>Full WSDL solution for Axis2</Description></Module><Module name="core"><Description>Core parts of Axis2</Description></Module></Modules></Project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/script/build.xml b/rampart_1_1/modules/samples/script/build.xml
new file mode 100644
index 0000000..b0a8ff0
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/build.xml
@@ -0,0 +1,54 @@
+<project name="samples" default="alltests">
+    <property name="mainDir" value="../.."/>
+    <path id="axis.classpath">
+        <fileset dir="../../lib">
+            <include name="*.jar"/>
+        </fileset>
+        <pathelement location="./sample.jar"/>
+    </path>
+    <path id="sample.classpath">
+        <path refid="axis.classpath"/>
+    </path>
+
+    <target name="alltests"
+            depends="testEchoBlockingClient,testEchoBlockingDualClient,testEchoNonBlockingDualClient,testPingClient,testWebServiceWithModuleClient">
+    </target>
+
+    <target name="testEchoBlockingClient">
+        <java classname="userguide.clients.EchoBlockingClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+    <target name="testEchoBlockingDualClient">
+        <java classname="userguide.clients.EchoBlockingDualClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+    <target name="testEchoNonBlockingDualClient">
+        <java classname="userguide.clients.EchoNonBlockingDualClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+    <target name="testPingClient">
+        <java classname="userguide.clients.PingClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+    <target name="testWebServiceWithModuleClient">
+        <java classname="userguide.clients.ClientForWebServiceWithModule"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+
+    <target name="testEchoNonBlockingClient">
+        <java classname="userguide.clients.EchoNonBlockingClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}"/>
+        </java>
+    </target>
+</project>
diff --git a/rampart_1_1/modules/samples/script/mail-test.xml b/rampart_1_1/modules/samples/script/mail-test.xml
new file mode 100644
index 0000000..f7439ac
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/mail-test.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<!-- ====================================================================== 
+     Feb 11, 2005 1:04:21 PM                                                        
+
+      This build file is intended to compile and run the Axis2 samples
+      provided here with the service being deployed at Tomcat or by
+      running a simple Axis2 server.   
+     
+                   
+                                                                     
+     ====================================================================== -->
+<project name="samples" basedir=".." default="mail-test">
+    <property name="maven.repo.local" value="${user.home}/.maven/repository/"/>
+    <property name="class.dir" value="${basedir}/target/test-classes"/>
+    <property name="report.dir" value="${basedir}/target/test-reports"/>
+    <property name="src.dir" value="${basedir}/test"/>
+
+    <path id="test.classpath">
+        <fileset dir="${maven.repo.local}">
+            <include name="geronimo-spec/jars/geronimo-spec-activation-1.0.2-SNAPSHOT.jar"/>
+            <include name="j2ee/jars/mail.jar"/>
+            <include name="axis/jars/axis2-core-0.9.jar"/>
+            <include name="axis/jars/axis2-xml-0.9.jar"/>
+            <include name="axis/jars/axis2-wsdl-0.9.jar"/>
+            <include name="axis/jars/axis-wsdl4j-1.2.jar"/>
+            <include name="commons-logging/jars/commons-logging-1.0.3.jar"/>
+            <include name="stax/jars/stax-1.1.2-dev.jar"/>
+            <include name="stax/jars/stax-api-1.0.jar"/>
+            <include name="log4j/jars/log4j-1.2.8.jar"/>
+            <include name="junit/jars/*.jar"/>
+        </fileset>
+    </path>
+    
+
+    <target name="mail-test" description="Delete all generated files">
+        <echo message="running Mail tests"/>
+        <mkdir dir="${report.dir}"/>
+        <mkdir dir="${class.dir}"/>
+
+        <javac srcdir="${src.dir}" destdir="${class.dir}">
+            <classpath refid="test.classpath"/>
+        </javac>
+        <copy todir="${class.dir}">
+            <fileset dir="${src.dir}">
+                <include name="**/*.jpg"/>
+            </fileset>
+        </copy>
+        <junit printsummary="yes" haltonfailure="yes">
+            <formatter type="plain"/>
+            <test name="org.apache.axis2.mail.MailetRequestResponceRawXMLTest" todir="${report.dir}"/>
+            <classpath>
+                <pathelement location="${class.dir}"/>
+                <path refid="test.classpath"/>
+            </classpath>
+        </junit>
+        <junit printsummary="yes" haltonfailure="yes">
+            <formatter type="plain"/>
+            <test name="org.apache.axis2.mail.MailOneWayRawXMLTest" todir="${report.dir}"/>
+            <classpath>
+                <pathelement location="${class.dir}"/>
+                <path refid="test.classpath"/>
+            </classpath>
+        </junit>
+        <junit printsummary="yes" haltonfailure="yes">
+            <formatter type="plain"/>
+            <test name="org.apache.axis2.mail.MailRequestResponseRawXMLTest" todir="${report.dir}"/>
+            <classpath>
+                <pathelement location="${class.dir}"/>
+                <path refid="test.classpath"/>
+            </classpath>
+        </junit>
+
+    </target>
+</project>
+
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoBlockingClient.bat b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoBlockingClient.bat
new file mode 100644
index 0000000..792e985
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoBlockingClient.bat
@@ -0,0 +1,13 @@
+@echo off

+setlocal EnableDelayedExpansion

+

+rem loop through the libs and add them to the class path

+set AXIS2_HOME=..\..\..\

+

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;..\sample.jar

+

+java -cp %AXIS2_CLASS_PATH% userguide.clients.EchoBlockingClient

+endlocal
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoBlockingDualClient.bat b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoBlockingDualClient.bat
new file mode 100644
index 0000000..c44e052
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoBlockingDualClient.bat
@@ -0,0 +1,13 @@
+@echo off

+setlocal EnableDelayedExpansion

+

+rem loop through the libs and add them to the class path

+set AXIS2_HOME=..\..\..\

+

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;..\sample.jar

+

+java -cp %AXIS2_CLASS_PATH% userguide.clients.EchoBlockingDualClient

+endlocal
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoNonBlockingClient.bat b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoNonBlockingClient.bat
new file mode 100644
index 0000000..f985642
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoNonBlockingClient.bat
@@ -0,0 +1,13 @@
+@echo off

+setlocal EnableDelayedExpansion

+

+rem loop through the libs and add them to the class path

+set AXIS2_HOME=..\..\..\

+

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;..\sample.jar

+

+java -cp %AXIS2_CLASS_PATH% userguide.clients.EchoNonBlockingClient

+endlocal
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoNonBlockingDualClient.bat b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoNonBlockingDualClient.bat
new file mode 100644
index 0000000..4bffcb7
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestEchoNonBlockingDualClient.bat
@@ -0,0 +1,13 @@
+@echo off

+setlocal EnableDelayedExpansion

+

+rem loop through the libs and add them to the class path

+set AXIS2_HOME=..\..\..\

+

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;..\sample.jar

+

+java -cp %AXIS2_CLASS_PATH% userguide.clients.EchoNonBlockingDualClient

+endlocal
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/TestPingClient.bat b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestPingClient.bat
new file mode 100644
index 0000000..50f4057
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestPingClient.bat
@@ -0,0 +1,13 @@
+@echo off

+setlocal EnableDelayedExpansion

+

+rem loop through the libs and add them to the class path

+set AXIS2_HOME=..\..\..\

+

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;..\sample.jar

+

+java -cp %AXIS2_CLASS_PATH% userguide.clients.PingClient

+endlocal
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/TestPingClient.sh b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestPingClient.sh
new file mode 100644
index 0000000..8b2f0bd
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestPingClient.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+export AXIS2_HOME=../../../
+
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:../sample.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+
+export AXIS2_CLASSPATH
+java -classpath $AXIS2_CLASSPATH  userguide.clients.PingClient
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/TestWebServiceWithModuleClient.bat b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestWebServiceWithModuleClient.bat
new file mode 100644
index 0000000..cbfd440
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestWebServiceWithModuleClient.bat
@@ -0,0 +1,12 @@
+@echo off

+setlocal EnableDelayedExpansion

+

+rem loop through the libs and add them to the class path

+set AXIS2_HOME=..\..\..\

+

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+set AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;..\sample.jar

+

+java -cp %AXIS2_CLASS_PATH% userguide.clients.ClientForWebServiceWithModule

+endlocal
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/TestWebServiceWithModuleClient.sh b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestWebServiceWithModuleClient.sh
new file mode 100644
index 0000000..53ce2a6
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/TestWebServiceWithModuleClient.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+export AXIS2_HOME=../../../
+
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:../sample.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+
+export AXIS2_CLASSPATH
+java -classpath $AXIS2_CLASSPATH  userguide.clients.ClientForWebServiceWithModule
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_blocking_client.sh b/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_blocking_client.sh
new file mode 100644
index 0000000..b95c5f9
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_blocking_client.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+export AXIS2_HOME=../../../
+
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:../sample.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+
+export AXIS2_CLASSPATH
+java -classpath $AXIS2_CLASSPATH userguide.clients.EchoBlockingClient
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_blocking_dual_client.sh b/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_blocking_dual_client.sh
new file mode 100644
index 0000000..b1b50c1
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_blocking_dual_client.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+export AXIS2_HOME=../../../
+
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:../sample.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+
+export AXIS2_CLASSPATH
+java -classpath $AXIS2_CLASSPATH userguide.clients.EchoBlockingDualClient
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_non_blocking_client.sh b/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_non_blocking_client.sh
new file mode 100644
index 0000000..afed39a
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_non_blocking_client.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+export AXIS2_HOME=../../../
+
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:../sample.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+
+export AXIS2_CLASSPATH
+java -classpath $AXIS2_CLASSPATH userguide.clients.EchoNonBlockingClient
diff --git a/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_non_blocking_dual_client.sh b/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_non_blocking_dual_client.sh
new file mode 100644
index 0000000..aee3dd8
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/userguide/client_scripts/test_echo_non_blocking_dual_client.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+export AXIS2_HOME=../../../
+
+AXIS2_CLASSPATH=$AXIS2_CLASSPATH:../sample.jar
+for f in $AXIS2_HOME/lib/*.jar
+do
+  AXIS2_CLASSPATH=$AXIS2_CLASSPATH:$f
+done
+
+export AXIS2_CLASSPATH
+java -classpath $AXIS2_CLASSPATH  userguide.clients.EchoNonBlockingDualClient
diff --git a/rampart_1_1/modules/samples/script/wsdl-test.xml b/rampart_1_1/modules/samples/script/wsdl-test.xml
new file mode 100644
index 0000000..db9664a
--- /dev/null
+++ b/rampart_1_1/modules/samples/script/wsdl-test.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+
+<project name="samples" basedir=".." default="testCodeGen">
+     <property name="maven.repo.local" value="${user.home}/.maven/repository/" />
+     
+     <property name="codeGen.dir" value="${basedir}/target/code-gen" />
+     <property name="report.dir" value="${basedir}/target/test-reports" />
+     <property name="src.dir" value="${basedir}/test" />
+     <property name="wsdl.dir" value="${basedir}/../wsdl/test-resources/"/>
+           
+
+	<path id="test.classpath">
+		      <fileset dir="${maven.repo.local}">
+					<include name="j2ee/jars/activation.jar"/>
+					<include name="j2ee/jars/mail.jar"/>
+					<include name="axis/jars/axis2-core-0.9.jar"/>
+					<include name="axis/jars/axis2-common-0.9.jar"/>
+					<include name="axis/jars/axis2-tools-0.9.jar"/>
+					<include name="axis/jars/axis2-xml-0.9.jar"/>
+					<include name="axis/jars/axis2-wsdl-0.9.jar"/>
+					<include name="axis/jars/axis-wsdl4j-1.2.jar"/>
+					<include name="commons-logging/jars/commons-logging-1.0.3.jar"/>
+					<include name="commons-httpclient/jars/commons-httpclient-3.0-rc2.jar"/>
+					<include name="stax/jars/stax-1.1.2-dev.jar"/>
+					<include name="stax/jars/stax-api-1.0.jar"/>
+					<include name="log4j/jars/log4j-1.2.8.jar"/>
+					<include name="junit/jars/*.jar"/>
+					<include name="xmlbeans/jars/xbean-2.0.0-beta1.jar"/>
+		      </fileset>
+		      <pathelement location="${class.dir}"/>
+	</path>
+	
+     <taskdef name="wsdl2java"
+        classname="org.apache.axis2.tool.ant.AntCodegenTask"
+            classpathref="test.classpath"/>
+
+	<target name="testCodeGen">
+        <mkdir dir="${codeGen.dir}/1"/>  
+       	<mkdir dir="${codeGen.dir}/1/src"/>  
+       	<mkdir dir="${codeGen.dir}/1/classes"/>  
+       	
+        <wsdl2java WSDLFileName="${wsdl.dir}/compound2.wsdl" 
+        	output="${codeGen.dir}/1/src"> 
+        	<classpath refid="test.classpath" />
+        </wsdl2java>	
+        <move todir="${codeGen.dir}/1/classes/schema">
+    		<fileset dir="${codeGen.dir}/1/src/schema"/>
+       </move>
+        <javac srcdir="${codeGen.dir}/1/src" destdir="${codeGen.dir}/1/classes" debug="on">
+           <classpath refid="test.classpath" />
+        </javac>
+
+        <mkdir dir="${codeGen.dir}/2"/>  
+       	<mkdir dir="${codeGen.dir}/2/src"/>  
+       	<mkdir dir="${codeGen.dir}/2/classes"/>  
+       	
+        <wsdl2java WSDLFileName="${wsdl.dir}/complex-doc-literal.wsdl" output="${codeGen.dir}/2/src"/> 
+        <move todir="${codeGen.dir}/2/classes/schema">
+    		<fileset dir="${codeGen.dir}/2/src/schema"/>
+        </move>
+        <javac srcdir="${codeGen.dir}/2/src" destdir="${codeGen.dir}/2/classes" debug="on">
+           <classpath refid="test.classpath" />
+        </javac>
+        
+        <mkdir dir="${codeGen.dir}/3"/>  
+       	<mkdir dir="${codeGen.dir}/3/src"/>  
+       	<mkdir dir="${codeGen.dir}/3/classes"/>  
+       	
+        <wsdl2java WSDLFileName="${wsdl.dir}/simple-doc-literal.wsdl" output="${codeGen.dir}/3/src"/> 
+        <move todir="${codeGen.dir}/3/classes/schema">
+    		<fileset dir="${codeGen.dir}/3/src/schema"/>
+       </move>
+        <javac srcdir="${codeGen.dir}/3/src" destdir="${codeGen.dir}/3/classes" debug="on">
+           <classpath refid="test.classpath" />
+        </javac>
+	</target>
+            
+            
+	            
+	
+	<target name="doInterop-test">
+              <mkdir dir="${interop3.dir}"/>  
+			<mkdir dir="${work.dir}"/>  
+				<mkdir dir="${calss.dir}"/>                       
+				
+		       <wsdl2java WSDLFileName="${wsdl.dir}compound2.wsdl" output="${work.dir}"/> 
+               
+                <move todir="${classes.dir}/schema">
+            		<fileset dir="${work.dir}/schema"/>
+               </move>   
+    	
+              <javac srcdir="${work.dir}" destdir="${classes.dir}" debug="on">
+                  <classpath refid="test.classpath" />
+              </javac>
+    	
+    	     <!-- Run the interop test 
+    	     <java classname="Client">
+                <classpath refid="maven.dependency.classpath" />
+   		     </java>
+    	
+		    <junit dir="${classes.dir}" printsummary="yes" haltonfailure="yes">
+			    <classpath refid="maven.dependency.classpath" />
+			    <formatter type="plain"/>
+			    <test name="InteropClient2" />
+		    </junit>
+		    
+		    -->
+	</target>
+</project>
+
diff --git a/rampart_1_1/modules/samples/security/README.txt b/rampart_1_1/modules/samples/security/README.txt
new file mode 100644
index 0000000..b631364
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/README.txt
@@ -0,0 +1,11 @@
+********************************************************************************
+**************************** Apache Rampart Samples ****************************
+********************************************************************************
+
+This directory contains three sub directories:
+
+    - basic - A set of samples that uses basic rampart configuration using 
+    	          parameters
+
+    - policy - A set of samples that uses rampart with WS-SecurityPolicy
+
diff --git a/rampart_1_1/modules/samples/security/basic/README.txt b/rampart_1_1/modules/samples/security/basic/README.txt
new file mode 100644
index 0000000..18f66b1
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/README.txt
@@ -0,0 +1,44 @@
+********************************************************************************
+**************************** Apache Rampart Samples ****************************
+********************************************************************************
+
+This is a set of Apache Rampart samples which uses configuraiton parameters 
+to configure rampart.
+
+Each "sampleX" directory contains :
+
+    - client.axis2.xml - Client configuration
+    - services.xml - Service configuration
+    - src - Source of the sample
+    - README.txt - you have to read this :-)
+
+We use two parameters named "InflowSecurity" and "OutflowSecurity" within
+these files to configure rampart.
+
+01.) Rampart Engaged and no configuration
+02.) UsernameToken authentication
+03.) UsernameToken authentication with a plain text password
+04.) Message integrity and non-repudiation with signature
+05.) Encryption
+06.) Sign and encrypt a messages
+07.) Encrypt and sign messages
+08.) Signing twice
+09.) Encryption with a key known to both parties
+10.) MTOM Optimizing base64 content in the secured message
+11.) Dynamic configuration : Get rid of the config files ... let's use code!
+
+You can use the ant build script provided here to run these samples.
+
+Exmaple: Running sample - 01
+    - Start two shell instnaces and change to the directory where this file is
+    - To start the service: 
+      $ ant service.01
+    - To run client: 
+      $ ant client.01
+
+--------------------------------------------------------------------------------
+NOTE: To view the messages exchanged
+    - Change the "client.port" property in the "build.xml" to an available port
+    	  E.g. : <property name="client.port" value="9080"/>
+    	- Setup tcpmon (http://ws.apache.org/commons/tcpmon/) to listen on the above
+    	  port and to point to port 8080 (value of the service.port property)
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/build.xml b/rampart_1_1/modules/samples/security/basic/build.xml
new file mode 100644
index 0000000..5049a41
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/build.xml
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<project basedir="." default="clean">
+
+	<property name="service.repos.dir" value="build/service_repositories"/>
+	<property name="client.repos.dir" value="build/client_repositories"/>
+	<property name="temp.dir" value="build/temp"/>
+	<property name="keys.dir" value="../keys"/>
+	<property name="temp.client.dir" value="build/temp_client"/>
+	
+	<property name="addressing.mar" value="addressing-1.1.mar"/>
+	<property name="rampart.mar" value="rampart-1.1.mar"/>	
+	
+	<property name="client.port" value="8080"/>
+	<property name="server.port" value="8080"/>
+	
+	<property name="sample.services.url" value="http://localhost:${client.port}/axis2/services"/>
+	
+    <property environment="env"/>
+    	
+	<target name="check.dependency" unless="env.AXIS2_HOME">
+        <echo message="AXIS2_HOME must be set"/>
+    </target>
+	
+	<!-- Sample Service 01 -->
+	<target name="service.01" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="01"/>
+	</target>
+
+	<!-- Sample Client 01 -->
+	<target name="client.01" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="01"/>
+	</target>
+	
+	<!-- Sample Service 02 -->
+	<target name="service.02" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="02"/>
+	</target>
+
+	<!-- Sample Client 02 -->
+	<target name="client.02" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="02"/>
+	</target>
+
+	<!-- Sample Service 03 -->
+	<target name="service.03" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="03"/>
+	</target>
+
+	<!-- Sample Client 03 -->
+	<target name="client.03" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="03"/>
+	</target>
+
+	<!-- Sample Service 04 -->
+	<target name="service.04" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="04"/>
+	</target>
+
+	<!-- Sample Client 04 -->
+	<target name="client.04" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="04"/>
+	</target>
+
+	<!-- Sample Service 05 -->
+	<target name="service.05" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="05"/>
+	</target>
+
+	<!-- Sample Client 05 -->
+	<target name="client.05" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="05"/>
+	</target>
+	
+	<!-- Sample Service 06 -->
+	<target name="service.06" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="06"/>
+	</target>
+
+	<!-- Sample Client 06 -->
+	<target name="client.06" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="06"/>
+	</target>
+	
+	<!-- Sample Service 07 -->
+	<target name="service.07" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="07"/>
+	</target>
+
+	<!-- Sample Client 07 -->
+	<target name="client.07" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="07"/>
+	</target>
+
+	<!-- Sample Service 08 -->
+	<target name="service.08" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="08"/>
+	</target>
+
+	<!-- Sample Client 08 -->
+	<target name="client.08" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="08"/>
+	</target>
+
+	<!-- Sample Service 09 -->
+	<target name="service.09" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="09"/>
+	</target>
+
+	<!-- Sample Client 09 -->
+	<target name="client.09" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="09"/>
+	</target>
+
+	<!-- Sample Service 10 -->
+	<target name="service.10" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="10"/>
+	</target>
+
+	<!-- Sample Client 10 -->
+	<target name="client.10" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="10"/>
+	</target>
+	
+	<!-- Sample Service 11 -->
+	<target name="service.11" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="11"/>
+	</target>
+
+	<!-- Sample Client 11 -->
+	<target name="client.11" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="11"/>
+	</target>
+	
+	
+	<target name="clean">
+		<delete dir="build" />
+	</target>
+	
+	<!-- Macro to create a service repo for a given sample -->
+	<macrodef name="create.service.repo">
+	   	<attribute name="sample.number" default="sample"/>
+	   	<sequential>
+	   		
+	   		<property name="modules.dir" value="${env.AXIS2_HOME}/repository/modules/"/>
+	   		<property name="lib.dir" value="${env.AXIS2_HOME}/lib"/>
+	   		
+	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}"/>
+	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}/services"/>
+	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}/modules"/>
+	   		
+	   		<!-- copy modules -->
+	   		<copy file="${modules.dir}/${addressing.mar}" tofile="${service.repos.dir}/sample@{sample.number}/modules/${addressing.mar}" overwrite="true"/>
+	   		<copy file="${modules.dir}/${rampart.mar}" tofile="${service.repos.dir}/sample@{sample.number}/modules/${rampart.mar}" overwrite="true"/>
+	   		
+	   		<!-- create service -->
+	   		<mkdir dir="${temp.dir}"/>
+	   		<mkdir dir="${temp.dir}/META-INF"/>
+	   		
+	   		<!-- Compile service -->
+            <javac srcdir="sample@{sample.number}/src" destdir="${temp.dir}">
+                    <classpath>
+                            <fileset dir="${lib.dir}">
+                                    <include name="**/*.jar"/>
+                            </fileset>
+                    </classpath>
+                    <exclude name="**/Client.java"/>
+            </javac>
+	   		
+	   		<copy file="sample@{sample.number}/services.xml" tofile="${temp.dir}/META-INF/services.xml" overwrite="true"/>
+	   		<copy file="${keys.dir}/service.jks" tofile="${temp.dir}/service.jks" overwrite="true"/>
+	   		<copy file="${keys.dir}/service.properties" tofile="${temp.dir}/service.properties" overwrite="true"/>
+
+	   		<jar destfile="${service.repos.dir}/sample@{sample.number}/services/sample@{sample.number}.aar">
+				<fileset dir="${temp.dir}"></fileset>
+			</jar>
+	   		
+			<delete dir="${temp.dir}" />
+	   		<!-- start SimpleHTTPserver -->
+            <java classname="org.apache.axis2.transport.http.SimpleHTTPServer" fork="true">
+                    <arg value="${service.repos.dir}/sample@{sample.number}"/>
+                    <arg value="-p${server.port}"/>
+                    <classpath>
+                            <fileset dir="${lib.dir}">
+                                    <include name="**/*.jar"/>
+                            </fileset>
+                    </classpath>
+            </java>
+
+	   </sequential>
+	</macrodef>
+
+	<macrodef name="create.and.run.client">
+	   	<attribute name="sample.number" default="sample"/>
+	   	<sequential>
+	   		
+	   		<property name="modules.dir" value="${env.AXIS2_HOME}/repository/modules/"/>
+	   		<property name="lib.dir" value="${env.AXIS2_HOME}/lib"/>
+	   		
+	   		<!-- Create the client repo -->
+	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}"/>
+	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}/conf"/>
+	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}/modules"/>
+	   		
+	   		<!-- Copy axis2.xml file -->
+	   		<copy file="sample@{sample.number}/client.axis2.xml" tofile="${client.repos.dir}/sample@{sample.number}/conf/axis2.xml" overwrite="true"/>
+	   		
+	   		<!-- copy modules -->
+	   		<copy file="${modules.dir}/${addressing.mar}" tofile="${client.repos.dir}/sample@{sample.number}/modules/${addressing.mar}" overwrite="true"/>
+	   		<copy file="${modules.dir}/${rampart.mar}" tofile="${client.repos.dir}/sample@{sample.number}/modules/${rampart.mar}" overwrite="true"/>
+	   		
+	   		<mkdir dir="${temp.client.dir}"/>
+	   		
+	   		<!-- Compile client -->
+            <javac srcdir="sample@{sample.number}/src" destdir="${temp.client.dir}">
+                    <classpath>
+	                    <fileset dir="${lib.dir}">
+                            <include name="**/*.jar"/>
+	                    </fileset>
+                    </classpath>
+                    <exclude name="**/SimpleService.java"/>
+            </javac>
+
+	   		<copy file="${keys.dir}/client.jks" tofile="${temp.client.dir}/client.jks" overwrite="true"/>
+	   		<copy file="${keys.dir}/client.properties" tofile="${temp.client.dir}/client.properties" overwrite="true"/>
+
+	   		
+	   		<!-- Run client -->
+            <java classname="org.apache.rampart.samples.sample@{sample.number}.Client" fork="true">
+                    <arg value="${sample.services.url}/sample@{sample.number}"/>
+                    <arg value="${client.repos.dir}/sample@{sample.number}"/>
+                    <classpath>
+                        <fileset dir="${lib.dir}">
+                        	<include name="**/*.jar"/>
+                        </fileset>
+                  		<dirset dir="${temp.client.dir}" />
+                    </classpath>
+            </java>
+
+<!--	   		<delete dir="${temp.client.dir}"/> -->
+		</sequential>		
+	</macrodef>
+
+</project>
diff --git a/rampart_1_1/modules/samples/security/basic/sample01/README.txt b/rampart_1_1/modules/samples/security/basic/sample01/README.txt
new file mode 100644
index 0000000..a4c35f9
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample01/README.txt
@@ -0,0 +1,6 @@
+Rampart Engaged and no configuration
+
+This sample shows that Apache Rampart does not work on the messages when simply
+engagd without any configuration
+
+Note: <module ref="rampart"/> in both client.axis2.xml and services.xml
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample01/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample01/client.axis2.xml
new file mode 100644
index 0000000..f16592e
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample01/client.axis2.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+ 
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample01/services.xml b/rampart_1_1/modules/samples/security/basic/sample01/services.xml
new file mode 100644
index 0000000..f76daf9
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample01/services.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-1 : No Security-->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample01.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample01/src/org/apache/rampart/samples/sample01/Client.java b/rampart_1_1/modules/samples/security/basic/sample01/src/org/apache/rampart/samples/sample01/Client.java
new file mode 100644
index 0000000..3d2067b
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample01/src/org/apache/rampart/samples/sample01/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample01;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample01.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample01/src/org/apache/rampart/samples/sample01/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample01/src/org/apache/rampart/samples/sample01/SimpleService.java
new file mode 100644
index 0000000..3247722
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample01/src/org/apache/rampart/samples/sample01/SimpleService.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright  2003-2005 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.rampart.samples.sample01;
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample02/README.txt b/rampart_1_1/modules/samples/security/basic/sample02/README.txt
new file mode 100644
index 0000000..de24747
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample02/README.txt
@@ -0,0 +1,10 @@
+UsernameToken authentication
+
+The client is configured to add a UsernameToken to the outgoing message.
+	- See the "OutflowSecurity" parameter in the client.axis2.xml
+	
+The service is configured to process it.
+	- See the "InflowSecurity" parameter in the services.xml
+
+Note how org.apache.rampart.samples.sample02.PWCBHandler supplies the password 
+to wss4j to compute the digest for comparison.
diff --git a/rampart_1_1/modules/samples/security/basic/sample02/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample02/client.axis2.xml
new file mode 100644
index 0000000..85625b0
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample02/client.axis2.xml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+	
+	<parameter name="OutflowSecurity">
+    	<action>
+        	<items>UsernameToken Timestamp</items>
+        	<user>bob</user>
+        	<passwordCallbackClass>org.apache.rampart.samples.sample02.PWCBHandler</passwordCallbackClass>
+      	</action>
+    </parameter>
+    
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample02/services.xml b/rampart_1_1/modules/samples/security/basic/sample02/services.xml
new file mode 100644
index 0000000..ac94b4b
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample02/services.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-2 : Timestamp and UsernameToken-->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample02.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	

+	<parameter name="InflowSecurity">

+      <action>

+        <items>UsernameToken Timestamp</items>

+        <passwordCallbackClass>org.apache.rampart.samples.sample02.PWCBHandler</passwordCallbackClass>

+      </action>

+    </parameter>

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/Client.java b/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/Client.java
new file mode 100644
index 0000000..8c38db0
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample02;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample02.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/PWCBHandler.java
new file mode 100644
index 0000000..35074f4
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/PWCBHandler.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample02;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            String id = pwcb.getIdentifer();
+            if("bob".equals(id)) {
+                pwcb.setPassword("bobPW");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/SimpleService.java
new file mode 100644
index 0000000..3249257
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample02/src/org/apache/rampart/samples/sample02/SimpleService.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright  2003-2005 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.rampart.samples.sample02;
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample03/README.txt b/rampart_1_1/modules/samples/security/basic/sample03/README.txt
new file mode 100644
index 0000000..1446348
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample03/README.txt
@@ -0,0 +1,12 @@
+UsernameToken authentication with a plain text password
+
+The client is configured to add a UsernameToken to the outgoing message.
+	- See the "OutflowSecurity" parameter in the client.axis2.xml
+	- Note the <passwordType>PasswordText</passwordType> element
+	
+The service is configured to process it.
+	- See the "InflowSecurity" parameter in the services.xml
+
+Note how org.apache.rampart.samples.sample03.PWCBHandler authenticates the 
+password
+
diff --git a/rampart_1_1/modules/samples/security/basic/sample03/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample03/client.axis2.xml
new file mode 100644
index 0000000..e864e46
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample03/client.axis2.xml
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+	
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>UsernameToken</items>
+        <user>bob</user>
+        <passwordCallbackClass>org.apache.rampart.samples.sample03.PWCBHandler</passwordCallbackClass>
+        <passwordType>PasswordText</passwordType>
+      </action>
+    </parameter>
+    	
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample03/services.xml b/rampart_1_1/modules/samples/security/basic/sample03/services.xml
new file mode 100644
index 0000000..1d0e6c5
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample03/services.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-3 : Timestamp and UsernameToken (with plaintext password)-->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample03.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	

+	<parameter name="InflowSecurity">

+      <action>

+        <items>UsernameToken</items>

+        <passwordCallbackClass>org.apache.rampart.samples.sample03.PWCBHandler</passwordCallbackClass>

+      </action>

+    </parameter>

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/Client.java b/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/Client.java
new file mode 100644
index 0000000..bac19c0
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample03;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample03.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/PWCBHandler.java
new file mode 100644
index 0000000..cb52caf
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/PWCBHandler.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample03;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+
+        for (int i = 0; i < callbacks.length; i++) {
+            
+            //When the server side need to authenticate the user
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            if (pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+                if(pwcb.getIdentifer().equals("bob") && pwcb.getPassword().equals("bobPW")) {
+                    //If authentication successful, simply return
+                    return;
+                } else {
+                    throw new UnsupportedCallbackException(callbacks[i], "check failed");
+                }
+            }
+            
+            //When the client requests for the password to be added in to the 
+            //UT element
+            pwcb.setPassword("bobPW");
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/SimpleService.java
new file mode 100644
index 0000000..630cf80
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample03/src/org/apache/rampart/samples/sample03/SimpleService.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright  2003-2005 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.rampart.samples.sample03;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.WSUsernameTokenPrincipal;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+
+import java.util.Vector;
+
+public class SimpleService {
+
+    public String echo(String arg) {
+    	return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample04/README.txt b/rampart_1_1/modules/samples/security/basic/sample04/README.txt
new file mode 100644
index 0000000..df4599d
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample04/README.txt
@@ -0,0 +1,7 @@
+Message integrity and non-repudiation with signature
+
+Both client and servce are configured to sign the outgoing message and to verify
+the signature of the incoming message using their key pairs.
+	- See the "OutflowSecurity" and "InflowSecurity" parameters in the 
+      client.axis2.xml and serivces.xml files
+	
diff --git a/rampart_1_1/modules/samples/security/basic/sample04/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample04/client.axis2.xml
new file mode 100644
index 0000000..0b05648
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample04/client.axis2.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+
+	<module ref="rampart" />
+	
+	<parameter name="OutflowSecurity">
+      <action>
+        <items>Timestamp Signature</items>
+        <user>client</user>
+        <signaturePropFile>client.properties</signaturePropFile>
+        <passwordCallbackClass>org.apache.rampart.samples.sample04.PWCBHandler</passwordCallbackClass>
+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+      </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Timestamp Signature</items>
+        <signaturePropFile>client.properties</signaturePropFile>
+      </action>
+    </parameter>
+    
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample04/services.xml b/rampart_1_1/modules/samples/security/basic/sample04/services.xml
new file mode 100644
index 0000000..daff4d3
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample04/services.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-4 : Signature only -->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample04.SimpleService</parameter>

+

+	<module ref="rampart" />

+

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature</items>

+        <signaturePropFile>service.properties</signaturePropFile>

+      </action>

+    </parameter>

+	

+	<parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp Signature</items>

+        <user>service</user>

+        <passwordCallbackClass>org.apache.rampart.samples.sample04.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>

+      </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/Client.java b/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/Client.java
new file mode 100644
index 0000000..3b3dce8
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample04;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample04.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/PWCBHandler.java
new file mode 100644
index 0000000..557755c
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/PWCBHandler.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample04;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/SimpleService.java
new file mode 100644
index 0000000..9132949
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample04/src/org/apache/rampart/samples/sample04/SimpleService.java
@@ -0,0 +1,25 @@
+package org.apache.rampart.samples.sample04;
+/*
+
+ * Copyright  2003-2005 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.
+ *
+ */
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample05/README.txt b/rampart_1_1/modules/samples/security/basic/sample05/README.txt
new file mode 100644
index 0000000..8ca2fd8
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample05/README.txt
@@ -0,0 +1,7 @@
+Encrypting messages
+
+Both client and servce are configured to encrypt the outgoing message and to 
+decrypt incoming message using their key pairs.
+	- See the "OutflowSecurity" and "InflowSecurity" parameters in the 
+      client.axis2.xml and serivces.xml files
+	
diff --git a/rampart_1_1/modules/samples/security/basic/sample05/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample05/client.axis2.xml
new file mode 100644
index 0000000..eec3aa0
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample05/client.axis2.xml
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+
+	<parameter name="OutflowSecurity">
+      <action>
+        <items>Encrypt</items>
+        <encryptionUser>service</encryptionUser>
+        <encryptionPropFile>client.properties</encryptionPropFile>
+      </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Encrypt</items>
+        <passwordCallbackClass>org.apache.rampart.samples.sample05.PWCBHandler</passwordCallbackClass>
+        <decryptionPropFile>client.properties</decryptionPropFile>
+      </action>
+    </parameter>
+
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample05/services.xml b/rampart_1_1/modules/samples/security/basic/sample05/services.xml
new file mode 100644
index 0000000..2b329a8
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample05/services.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-5 : Encryption only -->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample05.SimpleService</parameter>

+	

+	<module ref="rampart" />

+		

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Encrypt</items>

+        <passwordCallbackClass>org.apache.rampart.samples.sample05.PWCBHandler</passwordCallbackClass>

+        <decryptionPropFile>service.properties</decryptionPropFile>

+      </action>

+    </parameter>

+    

+	<parameter name="OutflowSecurity">

+      <action>

+        <items>Encrypt</items>

+        <encryptionUser>client</encryptionUser>

+        <encryptionPropFile>service.properties</encryptionPropFile>

+      </action>

+    </parameter>

+

+

+	

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/Client.java b/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/Client.java
new file mode 100644
index 0000000..b775eb1
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample05;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample05.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/PWCBHandler.java
new file mode 100644
index 0000000..b5f97d4
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/PWCBHandler.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample05;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/SimpleService.java
new file mode 100644
index 0000000..083a322
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample05/src/org/apache/rampart/samples/sample05/SimpleService.java
@@ -0,0 +1,25 @@
+package org.apache.rampart.samples.sample05;
+/*
+
+ * Copyright  2003-2005 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.
+ *
+ */
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample06/README.txt b/rampart_1_1/modules/samples/security/basic/sample06/README.txt
new file mode 100644
index 0000000..54642b5
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample06/README.txt
@@ -0,0 +1,8 @@
+Sign and encrypt messages
+
+Both client and servce are configured to first sign and then encrypt the 
+outgoing message and to decrypt and verify the incoming message using their 
+key pairs.
+	- See the "OutflowSecurity" and "InflowSecurity" parameters in the 
+      client.axis2.xml and serivces.xml files
+	
diff --git a/rampart_1_1/modules/samples/security/basic/sample06/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample06/client.axis2.xml
new file mode 100644
index 0000000..d40948f
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample06/client.axis2.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+    
+    <!--Signature and Encryption : Using the request's certificate-->
+	
+	<module ref="rampart" />
+	
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Timestamp Signature Encrypt</items>
+        <user>client</user>
+        <passwordCallbackClass>org.apache.rampart.samples.sample06.PWCBHandler</passwordCallbackClass>
+        <signaturePropFile>client.properties</signaturePropFile>
+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+        <encryptionUser>service</encryptionUser>
+      </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Timestamp Signature Encrypt</items>
+        <passwordCallbackClass>org.apache.rampart.samples.sample06.PWCBHandler</passwordCallbackClass>
+        <signaturePropFile>client.properties</signaturePropFile>
+      </action>
+    </parameter>
+    
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample06/services.xml b/rampart_1_1/modules/samples/security/basic/sample06/services.xml
new file mode 100644
index 0000000..2c9b865
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample06/services.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-6 : Signature and Encryption : Using the request's certificate-->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample06.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <passwordCallbackClass>org.apache.rampart.samples.sample06.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+      </action>

+    </parameter>

+    

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <user>service</user>

+        <passwordCallbackClass>org.apache.rampart.samples.sample06.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>

+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>

+        <encryptionUser>useReqSigCert</encryptionUser>

+      </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/Client.java b/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/Client.java
new file mode 100644
index 0000000..6984030
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample06;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample06.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/PWCBHandler.java
new file mode 100644
index 0000000..148b24d
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/PWCBHandler.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample06;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/SimpleService.java
new file mode 100644
index 0000000..185825e
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample06/src/org/apache/rampart/samples/sample06/SimpleService.java
@@ -0,0 +1,25 @@
+package org.apache.rampart.samples.sample06;
+/*
+
+ * Copyright  2003-2005 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.
+ *
+ */
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample07/README.txt b/rampart_1_1/modules/samples/security/basic/sample07/README.txt
new file mode 100644
index 0000000..f524604
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample07/README.txt
@@ -0,0 +1,8 @@
+Encrypt and sign messages
+
+Both client and servce are configured to first encrypt and then sign the 
+outgoing message and to verify and decrypt the incoming message using their 
+key pairs.
+	- See the "OutflowSecurity" and "InflowSecurity" parameters in the 
+      client.axis2.xml and serivces.xml files
+	
diff --git a/rampart_1_1/modules/samples/security/basic/sample07/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample07/client.axis2.xml
new file mode 100644
index 0000000..ab26716
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample07/client.axis2.xml
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+	
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Timestamp Encrypt Signature</items>
+        <user>client</user>
+        <passwordCallbackClass>org.apache.rampart.samples.sample07.PWCBHandler</passwordCallbackClass>
+        <signaturePropFile>client.properties</signaturePropFile>
+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+        <encryptionUser>service</encryptionUser>
+      </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Timestamp Encrypt Signature</items>
+        <passwordCallbackClass>org.apache.rampart.samples.sample07.PWCBHandler</passwordCallbackClass>
+        <signaturePropFile>client.properties</signaturePropFile>
+      </action>
+    </parameter>
+    
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample07/services.xml b/rampart_1_1/modules/samples/security/basic/sample07/services.xml
new file mode 100644
index 0000000..0b12f2b
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample07/services.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-7 : Encryption and Signature -->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample07.SimpleService</parameter>

+		

+    <module ref="rampart" />

+	

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Encrypt Signature</items>

+        <passwordCallbackClass>org.apache.rampart.samples.sample07.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+      </action>

+    </parameter>

+    

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp Encrypt Signature</items>

+        <user>service</user>

+        <passwordCallbackClass>org.apache.rampart.samples.sample07.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>

+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>

+        <encryptionUser>useReqSigCert</encryptionUser>

+      </action>

+    </parameter>

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/Client.java b/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/Client.java
new file mode 100644
index 0000000..8d9295e
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample07;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample07.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/PWCBHandler.java
new file mode 100644
index 0000000..2169966
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/PWCBHandler.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample07;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/SimpleService.java
new file mode 100644
index 0000000..cd14fc0
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample07/src/org/apache/rampart/samples/sample07/SimpleService.java
@@ -0,0 +1,25 @@
+package org.apache.rampart.samples.sample07;
+/*
+
+ * Copyright  2003-2005 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.
+ *
+ */
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample08/README.txt b/rampart_1_1/modules/samples/security/basic/sample08/README.txt
new file mode 100644
index 0000000..4643e47
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample08/README.txt
@@ -0,0 +1,10 @@
+Signing twice
+
+The client is configured to sign the outgoing message twice
+	- See the "OutflowSecurity" parameter in the client.axis2.xml
+	- Note the aditional <action> element that defines the second signature.
+	
+The service is configured to process it.
+	- See the "InflowSecurity" parameter in the services.xml. Not that we 
+      simply use "Signature Signature" as action items.
+
diff --git a/rampart_1_1/modules/samples/security/basic/sample08/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample08/client.axis2.xml
new file mode 100644
index 0000000..626fc25
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample08/client.axis2.xml
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+
+	<!-- sample-8 : Double Signature -->
+	<parameter name="OutflowSecurity">
+
+        <action>
+            <items>Timestamp Signature NoSerialization</items>
+            <user>client</user>
+            <passwordCallbackClass>org.apache.rampart.samples.sample08.PWCBHandler</passwordCallbackClass>
+            <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+            <signatureParts>{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp</signatureParts>
+            <signaturePropFile>client.properties</signaturePropFile>
+        </action>
+
+        <action>
+            <items>Signature</items>
+            <user>client</user>
+            <passwordCallbackClass>org.apache.rampart.samples.sample08.PWCBHandler</passwordCallbackClass>
+            <signaturePropFile>client.properties</signaturePropFile>
+        </action>
+
+    </parameter>
+	
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample08/services.xml b/rampart_1_1/modules/samples/security/basic/sample08/services.xml
new file mode 100644
index 0000000..38a8ce2
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample08/services.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-8 : Double Signature -->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample08.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	

+	<parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature Signature</items>

+        <passwordCallbackClass>org.apache.rampart.samples.sample08.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+      </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/Client.java b/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/Client.java
new file mode 100644
index 0000000..dec9168
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample08;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample08.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/PWCBHandler.java
new file mode 100644
index 0000000..98c13be
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/PWCBHandler.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample08;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/SimpleService.java
new file mode 100644
index 0000000..a61f706
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample08/src/org/apache/rampart/samples/sample08/SimpleService.java
@@ -0,0 +1,25 @@
+package org.apache.rampart.samples.sample08;
+/*
+
+ * Copyright  2003-2005 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.
+ *
+ */
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample09/README.txt b/rampart_1_1/modules/samples/security/basic/sample09/README.txt
new file mode 100644
index 0000000..7202cc6
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample09/README.txt
@@ -0,0 +1,8 @@
+Encryption with a key known to both parties
+
+Both client and servce are configured to encrypt the outgoing message and to 
+decrypt incoming message using a known named key
+	- See the "OutflowSecurity" and "InflowSecurity" parameters in the 
+      client.axis2.xml and serivces.xml files
+    - Note the use of <EmbeddedKeyName>SessionKey</EmbeddedKeyName>
+    - Note that org.apache.rampart.samples.sample09.PWCBHandler sets the key
diff --git a/rampart_1_1/modules/samples/security/basic/sample09/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample09/client.axis2.xml
new file mode 100644
index 0000000..34dcae5
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample09/client.axis2.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+
+    <parameter name="OutflowSecurity">
+        <action>
+            <items>Encrypt</items>
+            <user>client</user>
+            <encryptionKeyIdentifier>EmbeddedKeyName</encryptionKeyIdentifier>
+            <EmbeddedKeyCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</EmbeddedKeyCallbackClass>
+            <encryptionPropFile>client.properties</encryptionPropFile>
+            <EmbeddedKeyName>SessionKey</EmbeddedKeyName>
+        </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+        <action>
+            <items>Encrypt</items>
+            <passwordCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</passwordCallbackClass>
+            <decryptionPropFile>client.properties</decryptionPropFile>
+        </action>
+    </parameter>
+
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample09/services.xml b/rampart_1_1/modules/samples/security/basic/sample09/services.xml
new file mode 100644
index 0000000..9c2f5c0
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample09/services.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-9 : Encryption using a known key -->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample09.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	

+    <parameter name="InflowSecurity">

+        <action>

+            <items>Encrypt</items>

+            <passwordCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</passwordCallbackClass>

+            <decryptionPropFile>service.properties</decryptionPropFile>

+        </action>

+    </parameter>

+    

+    <parameter name="OutflowSecurity">

+        <action>

+            <items>Encrypt</items>

+            <user>service</user>

+            <encryptionKeyIdentifier>EmbeddedKeyName</encryptionKeyIdentifier>

+            <encryptionPropFile>service.properties</encryptionPropFile>

+            <EmbeddedKeyCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</EmbeddedKeyCallbackClass>

+            <EmbeddedKeyName>SessionKey</EmbeddedKeyName>

+        </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/Client.java b/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/Client.java
new file mode 100644
index 0000000..7592cd8
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample09;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample09.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/PWCBHandler.java
new file mode 100644
index 0000000..92adde4
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/PWCBHandler.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample09;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    private static final byte[] key = {
+
+    (byte) 0x31, (byte) 0xfd, (byte) 0xcb, (byte) 0xda, (byte) 0xfb,
+
+    (byte) 0xcd, (byte) 0x6b, (byte) 0xa8, (byte) 0xe6, (byte) 0x19,
+
+    (byte) 0xa7, (byte) 0xbf, (byte) 0x51, (byte) 0xf7, (byte) 0xc7,
+
+    (byte) 0x3e };
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback) callbacks[i];
+
+            if (pwcb.getUsage() == WSPasswordCallback.KEY_NAME) {
+                pwcb.setKey(key);
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/SimpleService.java
new file mode 100644
index 0000000..7862caf
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample09/src/org/apache/rampart/samples/sample09/SimpleService.java
@@ -0,0 +1,25 @@
+package org.apache.rampart.samples.sample09;
+/*
+
+ * Copyright  2003-2005 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.
+ *
+ */
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample10/README.txt b/rampart_1_1/modules/samples/security/basic/sample10/README.txt
new file mode 100644
index 0000000..0ad0c6a
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample10/README.txt
@@ -0,0 +1,8 @@
+Sign and encrypt messages
+
+Both client and servce are configured to first sign and then encrypt the 
+outgoing message and to decrypt and verify the incoming message using their 
+key pairs.
+	- See the "OutflowSecurity" and "InflowSecurity" parameters in the 
+      client.axis2.xml and serivces.xml files
+    - Note the use of <optimizeParts>[xpath expression]</optimizeParts>
diff --git a/rampart_1_1/modules/samples/security/basic/sample10/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample10/client.axis2.xml
new file mode 100644
index 0000000..b6cad86
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample10/client.axis2.xml
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+
+	<module ref="rampart" />
+
+	<!-- sample-10 : MTOM optimize encrypted content -->
+	
+    <parameter name="OutflowSecurity">
+      <action>
+        <items>Timestamp Signature Encrypt</items>
+        <user>client</user>
+        <passwordCallbackClass>org.apache.rampart.samples.sample10.PWCBHandler</passwordCallbackClass>
+        <signaturePropFile>client.properties</signaturePropFile>
+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
+        <encryptionUser>service</encryptionUser>
+        
+        <optimizeParts>//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</optimizeParts>
+        
+      </action>
+    </parameter>
+
+    <parameter name="InflowSecurity">
+      <action>
+        <items>Timestamp Signature Encrypt</items>
+        <passwordCallbackClass>org.apache.rampart.samples.sample10.PWCBHandler</passwordCallbackClass>
+        <signaturePropFile>client.properties</signaturePropFile>
+      </action>
+    </parameter>
+
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample10/services.xml b/rampart_1_1/modules/samples/security/basic/sample10/services.xml
new file mode 100644
index 0000000..8cada6d
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample10/services.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-10 : MTOM optimize encrypted content -->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample10.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <passwordCallbackClass>org.apache.rampart.samples.sample10.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+      </action>

+    </parameter>

+    

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <user>service</user>

+        <passwordCallbackClass>org.apache.rampart.samples.sample10.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>

+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>

+        <encryptionUser>useReqSigCert</encryptionUser>

+      </action>

+    </parameter>

+    

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/Client.java b/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/Client.java
new file mode 100644
index 0000000..acd09c6
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/Client.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample10;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        client.setOptions(options);
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample10.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/PWCBHandler.java
new file mode 100644
index 0000000..2675cdb
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/PWCBHandler.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample10;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/SimpleService.java
new file mode 100644
index 0000000..93743ea
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample10/src/org/apache/rampart/samples/sample10/SimpleService.java
@@ -0,0 +1,25 @@
+package org.apache.rampart.samples.sample10;
+/*
+
+ * Copyright  2003-2005 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.
+ *
+ */
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample11/README.txt b/rampart_1_1/modules/samples/security/basic/sample11/README.txt
new file mode 100644
index 0000000..2a60545
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample11/README.txt
@@ -0,0 +1,8 @@
+Dynamic configuration : Get rid of the config files ... let's use code!
+
+Both client and servce are configured to first sign and then encrypt the 
+outgoing message and to decrypt and verify the incoming message using their 
+key pairs.
+	- Note that we don't use any parameters in the client.axis2.xml
+    - See org.apache.rampart.samples.sample11.Client's getOutflowConfiguration()
+      getInflowConfiguration() methods and their usage.
diff --git a/rampart_1_1/modules/samples/security/basic/sample11/client.axis2.xml b/rampart_1_1/modules/samples/security/basic/sample11/client.axis2.xml
new file mode 100644
index 0000000..ba44dab
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample11/client.axis2.xml
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<axisconfig name="AxisJava2.0">
+	
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">false</parameter>
+
+    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+    <!--that behaviour.-->
+    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+    <!--This is the user name and password of admin console-->
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--<parameter name="services" locked="false">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="modules" locked="false">modules</parameter>-->
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
+    <!--<parameter name="servicePath" locked="false">services</parameter>-->
+    <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+    <!--Set the flag to true if you want to enable transport level session management-->
+    <parameter name="manageTransportSession" locked="false">false</parameter>
+
+    <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+    <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+    <!--parameters help to tweak the message handling of two main servlets. -->
+
+    <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+    <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+    <!-- Following parameter will completely disable REST handling in both the servlets-->
+    <parameter name="disableREST" locked="true">false</parameter>
+
+    <!-- This will disable the separate servlet we have for REST handling. -->
+    <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for particular service by adding the same element with your requirement-->
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Target Resolvers -->
+    <!-- ================================================= -->
+    <!-- Uncomment the following and specify the class name for your TargetResolver to add -->
+    <!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
+    <!-- choose a server in a cluster -->
+    <!--<targetResolvers>-->
+    <!--<targetResolver class="" />-->
+    <!--</targetResolvers>-->
+
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <transportReceiver name="tcp"
+                       class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6061</parameter>
+        <!--If you want to give your own host address for EPR generation-->
+        <!--uncomment following parameter , and set as you required.-->
+        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
+    <transportSender name="tcp"
+                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+    </transportSender>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System pre-defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/basic/sample11/services.xml b/rampart_1_1/modules/samples/security/basic/sample11/services.xml
new file mode 100644
index 0000000..28715e1
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample11/services.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-11 : Dynamic client configuration -->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample11.SimpleService</parameter>

+	

+		<module ref="rampart" />

+	

+    <parameter name="InflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <passwordCallbackClass>org.apache.rampart.samples.sample11.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+      </action>

+    </parameter>

+    

+    <parameter name="OutflowSecurity">

+      <action>

+        <items>Timestamp Signature Encrypt</items>

+        <user>service</user>

+        <passwordCallbackClass>org.apache.rampart.samples.sample11.PWCBHandler</passwordCallbackClass>

+        <signaturePropFile>service.properties</signaturePropFile>

+        <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>

+        <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>

+        <encryptionUser>useReqSigCert</encryptionUser>

+      </action>

+    </parameter>

+</service>

diff --git a/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/Client.java b/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/Client.java
new file mode 100644
index 0000000..de84d10
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/Client.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample11;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.Parameter;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+
+import javax.xml.namespace.QName;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 2) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml");
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        
+        //Set the rampart parameters
+        options.setProperty(WSSHandlerConstants.OUTFLOW_SECURITY, getOutflowConfiguration());
+        options.setProperty(WSSHandlerConstants.INFLOW_SECURITY, getInflowConfiguration());
+        
+        client.setOptions(options);
+        
+        //Engage rampart
+        client.engageModule(new QName("rampart"));
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample11.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+    private static Parameter getOutflowConfiguration() {
+        OutflowConfiguration ofc = new OutflowConfiguration();
+        ofc.setActionItems("Timestamp Signature Encrypt");
+        ofc.setUser("client");
+        ofc.setPasswordCallbackClass("org.apache.rampart.samples.sample11.PWCBHandler");
+        ofc.setSignaturePropFile("client.properties");
+        ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
+        ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.ISSUER_SERIAL);
+        ofc.setEncryptionUser("service");
+        
+        return ofc.getProperty();
+    }
+    
+    private static Parameter getInflowConfiguration() {
+        InflowConfiguration ifc = new InflowConfiguration();
+        ifc.setActionItems("Timestamp Signature Encrypt");
+        ifc.setPasswordCallbackClass("org.apache.rampart.samples.sample11.PWCBHandler");
+        ifc.setSignaturePropFile("client.properties");
+        
+        return ifc.getProperty();
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/PWCBHandler.java b/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/PWCBHandler.java
new file mode 100644
index 0000000..1e10288
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/PWCBHandler.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.sample11;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/SimpleService.java b/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/SimpleService.java
new file mode 100644
index 0000000..012bd62
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/basic/sample11/src/org/apache/rampart/samples/sample11/SimpleService.java
@@ -0,0 +1,25 @@
+package org.apache.rampart.samples.sample11;
+/*
+
+ * Copyright  2003-2005 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.
+ *
+ */
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/build.xml b/rampart_1_1/modules/samples/security/build.xml
new file mode 100644
index 0000000..6a51e7e
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/build.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<project basedir="." default="setup">
+
+	<property name="lib.dir" value="../lib"/>
+	<property name="modules.dir" value="../"/>
+	
+	<property environment="env"/>
+    	
+	<target name="check.dependency" unless="env.AXIS2_HOME">
+        <echo message="AXIS2_HOME must be set"/>
+    </target>
+
+	<!-- Copy the required jars and mars appropriately -->
+	<target name="setup" if="env.AXIS2_HOME" depends="check.dependency">
+		
+   		<property name="axis2.modules.dir" value="${env.AXIS2_HOME}/repository/modules/"/>
+   		<property name="axis2.lib.dir" value="${env.AXIS2_HOME}/lib"/>
+		
+		<copy todir="${axis2.lib.dir}">
+	        <fileset dir="${lib.dir}">
+	                <include name="**/*.jar"/>
+	        </fileset>
+		</copy>
+		
+		<copy todir="${axis2.modules.dir}">
+	        <fileset dir="${modules.dir}">
+	                <include name="**/*.mar"/>
+	        </fileset>
+		</copy>
+				
+	</target>
+	
+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/keys/client.jks b/rampart_1_1/modules/samples/security/keys/client.jks
new file mode 100644
index 0000000..9011b2c
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/keys/client.jks
Binary files differ
diff --git a/rampart_1_1/modules/samples/security/keys/client.properties b/rampart_1_1/modules/samples/security/keys/client.properties
new file mode 100644
index 0000000..985250f
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/keys/client.properties
@@ -0,0 +1,4 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=apache
+org.apache.ws.security.crypto.merlin.file=client.jks
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/keys/service.jks b/rampart_1_1/modules/samples/security/keys/service.jks
new file mode 100644
index 0000000..0c5ab81
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/keys/service.jks
Binary files differ
diff --git a/rampart_1_1/modules/samples/security/keys/service.properties b/rampart_1_1/modules/samples/security/keys/service.properties
new file mode 100644
index 0000000..cdd231c
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/keys/service.properties
@@ -0,0 +1,4 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=apache
+org.apache.ws.security.crypto.merlin.file=service.jks
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/policy/build.xml b/rampart_1_1/modules/samples/security/policy/build.xml
new file mode 100644
index 0000000..a5ee526
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/build.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+
+<project basedir="." default="clean">
+
+	<property name="service.repos.dir" value="build/service_repositories"/>
+	<property name="client.repos.dir" value="build/client_repositories"/>
+	<property name="temp.dir" value="build/temp"/>
+	<property name="keys.dir" value="../keys"/>
+	<property name="temp.client.dir" value="build/temp_client"/>
+	
+	<property name="addressing.mar" value="addressing-1.1.mar"/>
+	<property name="rampart.mar" value="rampart-1.1.mar"/>
+	<property name="rahas.mar" value="rahas-1.1.mar"/>
+
+	<property name="client.port" value="8080"/>
+	<property name="server.port" value="8080"/>
+	
+	<property name="sample.services.url" value="http://localhost:${client.port}/axis2/services"/>
+	
+    <property environment="env"/>
+    	
+	<target name="check.dependency" unless="env.AXIS2_HOME">
+        <echo message="AXIS2_HOME must be set"/>
+    </target>
+	
+	<!-- Sample Service 01 -->
+	<target name="service.01" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="01"/>
+	</target>
+
+	<!-- Sample Client 01 -->
+	<target name="client.01" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="01"/>
+	</target>
+	
+	<!-- Sample Service 02 -->
+	<target name="service.02" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="02"/>
+	</target>
+
+	<!-- Sample Client 02 -->
+	<target name="client.02" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="02"/>
+	</target>
+
+	<!-- Sample Service 03 -->
+	<target name="service.03" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="03"/>
+	</target>
+
+	<!-- Sample Client 01 -->
+	<target name="client.03" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="03"/>
+	</target>
+
+	<!-- Sample Service 04 -->
+	<target name="service.04" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.service.repo sample.number="04"/>
+	</target>
+
+	<!-- Sample Client 04 -->
+	<target name="client.04" if="env.AXIS2_HOME" depends="check.dependency">
+		<create.and.run.client sample.number="04"/>
+	</target>
+	
+	<target name="clean">
+		<delete dir="build" />
+	</target>
+	
+	<!-- Macro to create a service repo for a given sample -->
+	<macrodef name="create.service.repo">
+	   	<attribute name="sample.number" default="sample"/>
+	   	<sequential>
+	   		
+	   		<property name="modules.dir" value="${env.AXIS2_HOME}/repository/modules/"/>
+	   		<property name="lib.dir" value="${env.AXIS2_HOME}/lib"/>
+	   		
+	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}"/>
+	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}/services"/>
+	   		<mkdir dir="${service.repos.dir}/sample@{sample.number}/modules"/>
+	   		
+	   		<!-- copy modules -->
+	   		<copy file="${modules.dir}/${addressing.mar}" tofile="${service.repos.dir}/sample@{sample.number}/modules/${addressing.mar}" overwrite="true"/>
+	   		<copy file="${modules.dir}/${rampart.mar}" tofile="${service.repos.dir}/sample@{sample.number}/modules/${rampart.mar}" overwrite="true"/>
+	   		<copy file="${modules.dir}/${rahas.mar}" tofile="${service.repos.dir}/sample@{sample.number}/modules/${rahas.mar}" overwrite="true"/>
+	   		
+	   		<!-- create service -->
+	   		<mkdir dir="${temp.dir}"/>
+	   		<mkdir dir="${temp.dir}/META-INF"/>
+	   		
+	   		<!-- Compile service -->
+            <javac srcdir="sample@{sample.number}/src" destdir="${temp.dir}">
+                    <classpath>
+                            <fileset dir="${lib.dir}">
+                                    <include name="**/*.jar"/>
+                            </fileset>
+                    </classpath>
+                    <exclude name="**/Client.java"/>
+            </javac>
+	   		
+	   		<copy file="sample@{sample.number}/services.xml" tofile="${temp.dir}/META-INF/services.xml" overwrite="true"/>
+	   		<copy file="${keys.dir}/service.jks" tofile="${temp.dir}/service.jks" overwrite="true"/>
+	   		<copy file="${keys.dir}/service.properties" tofile="${temp.dir}/service.properties" overwrite="true"/>
+
+	   		<jar destfile="${service.repos.dir}/sample@{sample.number}/services/sample@{sample.number}.aar">
+				<fileset dir="${temp.dir}"></fileset>
+			</jar>
+	   		
+			<delete dir="${temp.dir}" />
+	   		<!-- start SimpleHTTPserver -->
+            <java classname="org.apache.axis2.transport.http.SimpleHTTPServer" fork="true">
+                    <arg value="${service.repos.dir}/sample@{sample.number}"/>
+                    <arg value="-p${server.port}"/>
+                    <classpath>
+                            <fileset dir="${lib.dir}">
+                                    <include name="**/*.jar"/>
+                            </fileset>
+                    </classpath>
+            </java>
+
+	   </sequential>
+	</macrodef>
+
+	<macrodef name="create.and.run.client">
+	   	<attribute name="sample.number" default="sample"/>
+	   	<sequential>
+	   		
+	   		<property name="modules.dir" value="${env.AXIS2_HOME}/repository/modules/"/>
+	   		<property name="lib.dir" value="${env.AXIS2_HOME}/lib"/>
+	   		
+	   		<!-- Create the client repo -->
+	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}"/>
+	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}/conf"/>
+	   		<mkdir dir="${client.repos.dir}/sample@{sample.number}/modules"/>
+	   		
+	   		<!-- copy modules -->
+	   		<copy file="${modules.dir}/${addressing.mar}" tofile="${client.repos.dir}/sample@{sample.number}/modules/${addressing.mar}" overwrite="true"/>
+	   		<copy file="${modules.dir}/${rampart.mar}" tofile="${client.repos.dir}/sample@{sample.number}/modules/${rampart.mar}" overwrite="true"/>
+	   		
+	   		<mkdir dir="${temp.client.dir}"/>
+	   		
+	   		<!-- Compile client -->
+            <javac srcdir="sample@{sample.number}/src" destdir="${temp.client.dir}">
+                    <classpath>
+	                    <fileset dir="${lib.dir}">
+                            <include name="**/*.jar"/>
+	                    </fileset>
+                    </classpath>
+                    <exclude name="**/SimpleService.java"/>
+            </javac>
+
+	   		<copy file="${keys.dir}/client.jks" tofile="${temp.client.dir}/client.jks" overwrite="true"/>
+	   		<copy file="${keys.dir}/client.properties" tofile="${temp.client.dir}/client.properties" overwrite="true"/>
+
+	   		
+	   		<!-- Run client -->
+            <java classname="org.apache.rampart.samples.policy.sample@{sample.number}.Client" fork="true">
+                    <arg value="${sample.services.url}/sample@{sample.number}"/>
+                    <arg value="${client.repos.dir}/sample@{sample.number}"/>
+                    <arg value="sample@{sample.number}/policy.xml"/>
+                    <classpath>
+                        <fileset dir="${lib.dir}">
+                        	<include name="**/*.jar"/>
+                        </fileset>
+                  		<dirset dir="${temp.client.dir}" />
+                    </classpath>
+            </java>
+
+<!--	   		<delete dir="${temp.client.dir}"/> -->
+		</sequential>		
+	</macrodef>
+
+</project>
diff --git a/rampart_1_1/modules/samples/security/policy/sample01/README.txt b/rampart_1_1/modules/samples/security/policy/sample01/README.txt
new file mode 100644
index 0000000..ad75ce6
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample01/README.txt
@@ -0,0 +1,8 @@
+UsernameToken Authentication
+
+The policy uses a TransportBinding and requires a SignedSupportingToken which 
+is a UsernameToken and the inclusion of a TimeStamp. 
+
+Note that Rampart does not enforce the use of HTTPS transport and that 
+{http://ws.apache.org/rampart/policy}RampartConfig assertion provides
+additional information required to secure the message.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/policy/sample01/policy.xml b/rampart_1_1/modules/samples/security/policy/sample01/policy.xml
new file mode 100644
index 0000000..7e7209d
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample01/policy.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<wsp:Policy wsu:Id="UTOverTransport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+	  <wsp:All>
+		<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+		  <wsp:Policy>
+			<sp:TransportToken>
+			  <wsp:Policy>
+				<sp:HttpsToken RequireClientCertificate="false"/>
+			  </wsp:Policy>
+			</sp:TransportToken>
+			<sp:AlgorithmSuite>
+			  <wsp:Policy>
+				<sp:Basic256/>
+			  </wsp:Policy>
+			</sp:AlgorithmSuite>
+			<sp:Layout>
+			  <wsp:Policy>
+				<sp:Lax/>
+			  </wsp:Policy>
+			</sp:Layout>
+			<sp:IncludeTimestamp/>
+		  </wsp:Policy>
+		</sp:TransportBinding>
+		<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
+		  </wsp:Policy>
+		</sp:SignedSupportingTokens>
+		
+		<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+			<ramp:user>alice</ramp:user>
+			<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample01.PWCBHandler</ramp:passwordCallbackClass>
+		</ramp:RampartConfig>
+		
+	  </wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/policy/sample01/services.xml b/rampart_1_1/modules/samples/security/policy/sample01/services.xml
new file mode 100644
index 0000000..24dad18
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample01/services.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-1 : UsernameToken-->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.policy.sample01.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	<module ref="addressing" />

+

+	<wsp:Policy wsu:Id="UTOverTransport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">

+		<wsp:ExactlyOne>

+		  <wsp:All>

+			<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+			  <wsp:Policy>

+				<sp:TransportToken>

+				  <wsp:Policy>

+					<sp:HttpsToken RequireClientCertificate="false"/>

+				  </wsp:Policy>

+				</sp:TransportToken>

+				<sp:AlgorithmSuite>

+				  <wsp:Policy>

+					<sp:Basic256/>

+				  </wsp:Policy>

+				</sp:AlgorithmSuite>

+				<sp:Layout>

+				  <wsp:Policy>

+					<sp:Lax/>

+				  </wsp:Policy>

+				</sp:Layout>

+				<sp:IncludeTimestamp/>

+			  </wsp:Policy>

+			</sp:TransportBinding>

+			<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+				<wsp:Policy>

+					<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />

+			  </wsp:Policy>

+			</sp:SignedSupportingTokens>

+			

+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 

+				<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample01.PWCBHandler</ramp:passwordCallbackClass>

+			</ramp:RampartConfig>

+			

+		  </wsp:All>

+		</wsp:ExactlyOne>

+	</wsp:Policy>

+

+</service>

diff --git a/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/Client.java b/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/Client.java
new file mode 100644
index 0000000..3de1541
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/Client.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.policy.sample01;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.rampart.RampartMessageData;
+
+import javax.xml.namespace.QName;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 3) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path policy_xml_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], null);
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,  loadPolicy(args[2]));
+        client.setOptions(options);
+        
+        client.engageModule(new QName("addressing"));
+        client.engageModule(new QName("rampart"));
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static Policy loadPolicy(String xmlPath) throws Exception {
+        StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
+        return PolicyEngine.getPolicy(builder.getDocumentElement());
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample01.policy.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/PWCBHandler.java b/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/PWCBHandler.java
new file mode 100644
index 0000000..a7c0011
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/PWCBHandler.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.policy.sample01;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            
+            //When the server side need to authenticate the user
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            if (pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+                if(pwcb.getIdentifer().equals("alice") && pwcb.getPassword().equals("bobPW")) {
+                    return;
+                } else {
+                    throw new UnsupportedCallbackException(callbacks[i], "check failed");
+                }
+            }
+            
+            //When the client requests for the password to be added in to the 
+            //UT element
+            pwcb.setPassword("bobPW");
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/SimpleService.java b/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/SimpleService.java
new file mode 100644
index 0000000..2dd8e82
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample01/src/org/apache/rampart/samples/policy/sample01/SimpleService.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright  2003-2005 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.rampart.samples.policy.sample01;
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample02/README.txt b/rampart_1_1/modules/samples/security/policy/sample02/README.txt
new file mode 100644
index 0000000..47a2fa7
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample02/README.txt
@@ -0,0 +1,7 @@
+Sign only
+
+An AsymmetricBinding is used. Entire headers and body to be signed.
+Algorithm suite is TripleDesRsa15
+
+Note that {http://ws.apache.org/rampart/policy}RampartConfig assertion provides
+additional information required to secure the message.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/policy/sample02/policy.xml b/rampart_1_1/modules/samples/security/policy/sample02/policy.xml
new file mode 100644
index 0000000..f5951b9
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample02/policy.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<wsp:Policy wsu:Id="SigOnly" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:TripleDesRsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>client</ramp:user>
+				<ramp:encryptionUser>service</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample02.PWCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">client.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+			</ramp:RampartConfig>
+
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/policy/sample02/services.xml b/rampart_1_1/modules/samples/security/policy/sample02/services.xml
new file mode 100644
index 0000000..3fbcbe7
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample02/services.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-2 : Sign only-->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.policy.sample02.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	<module ref="addressing" />

+

+	<wsp:Policy wsu:Id="SigOnly" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">

+		<wsp:ExactlyOne>

+			<wsp:All>

+				<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+					<wsp:Policy>

+						<sp:InitiatorToken>

+							<wsp:Policy>

+								<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">

+									<wsp:Policy>

+										<sp:WssX509V3Token10/>

+									</wsp:Policy>

+								</sp:X509Token>

+							</wsp:Policy>

+						</sp:InitiatorToken>

+						<sp:RecipientToken>

+							<wsp:Policy>

+								<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">

+									<wsp:Policy>

+										<sp:WssX509V3Token10/>

+									</wsp:Policy>

+								</sp:X509Token>

+							</wsp:Policy>

+						</sp:RecipientToken>

+						<sp:AlgorithmSuite>

+							<wsp:Policy>

+								<sp:TripleDesRsa15/>

+							</wsp:Policy>

+						</sp:AlgorithmSuite>

+						<sp:Layout>

+							<wsp:Policy>

+								<sp:Strict/>

+							</wsp:Policy>

+						</sp:Layout>

+						<sp:IncludeTimestamp/>

+						<sp:OnlySignEntireHeadersAndBody/>

+					</wsp:Policy>

+				</sp:AsymmetricBinding>

+				<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+					<wsp:Policy>

+						<sp:MustSupportRefKeyIdentifier/>

+						<sp:MustSupportRefIssuerSerial/>

+					</wsp:Policy>

+				</sp:Wss10>

+				<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+					<sp:Body/>

+				</sp:SignedParts>

+	

+				<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 

+					<ramp:user>service</ramp:user>

+					<ramp:encryptionUser>client</ramp:encryptionUser>

+					<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample02.PWCBHandler</ramp:passwordCallbackClass>

+					

+					<ramp:signatureCrypto>

+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">

+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>

+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">service.jks</ramp:property>

+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>

+						</ramp:crypto>

+					</ramp:signatureCrypto>

+				</ramp:RampartConfig>

+	

+			</wsp:All>

+		</wsp:ExactlyOne>

+	</wsp:Policy>

+</service>

diff --git a/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/Client.java b/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/Client.java
new file mode 100644
index 0000000..9ab7025
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/Client.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.policy.sample02;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.rampart.RampartMessageData;
+
+import javax.xml.namespace.QName;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 3) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path policy_xml_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], null);
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,  loadPolicy(args[2]));
+        client.setOptions(options);
+        
+        client.engageModule(new QName("addressing"));
+        client.engageModule(new QName("rampart"));
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static Policy loadPolicy(String xmlPath) throws Exception {
+        StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
+        return PolicyEngine.getPolicy(builder.getDocumentElement());
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample02.policy.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/PWCBHandler.java b/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/PWCBHandler.java
new file mode 100644
index 0000000..684fb99
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/PWCBHandler.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.policy.sample02;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/SimpleService.java b/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/SimpleService.java
new file mode 100644
index 0000000..7404669
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample02/src/org/apache/rampart/samples/policy/sample02/SimpleService.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright  2003-2005 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.rampart.samples.policy.sample02;
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample03/README.txt b/rampart_1_1/modules/samples/security/policy/sample03/README.txt
new file mode 100644
index 0000000..57bf529
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample03/README.txt
@@ -0,0 +1,9 @@
+Sign and Encrypt messages
+
+An AsymmetricBinding is used. Entire headers and body to be signed. 
+EncryptionParts specifies the Body to be encrypted.
+
+Algorithm suite is TripleDesRsa15
+
+Note that {http://ws.apache.org/rampart/policy}RampartConfig assertion provides
+additional information required to secure the message.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/policy/sample03/policy.xml b/rampart_1_1/modules/samples/security/policy/sample03/policy.xml
new file mode 100644
index 0000000..63253ec
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample03/policy.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+ 
+<wsp:Policy wsu:Id="SigEncr" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:TripleDesRsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>client</ramp:user>
+				<ramp:encryptionUser>service</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample03.PWCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">client.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">client.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/samples/security/policy/sample03/services.xml b/rampart_1_1/modules/samples/security/policy/sample03/services.xml
new file mode 100644
index 0000000..d3a3b4d
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample03/services.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-2 : Sign only-->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.policy.sample03.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	<module ref="addressing" />

+

+<wsp:Policy wsu:Id="SigEncr" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">

+	<wsp:ExactlyOne>

+		<wsp:All>

+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+				<wsp:Policy>

+					<sp:InitiatorToken>

+						<wsp:Policy>

+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">

+								<wsp:Policy>

+									<sp:WssX509V3Token10/>

+								</wsp:Policy>

+							</sp:X509Token>

+						</wsp:Policy>

+					</sp:InitiatorToken>

+					<sp:RecipientToken>

+						<wsp:Policy>

+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">

+								<wsp:Policy>

+									<sp:WssX509V3Token10/>

+								</wsp:Policy>

+							</sp:X509Token>

+						</wsp:Policy>

+					</sp:RecipientToken>

+					<sp:AlgorithmSuite>

+						<wsp:Policy>

+							<sp:TripleDesRsa15/>

+						</wsp:Policy>

+					</sp:AlgorithmSuite>

+					<sp:Layout>

+						<wsp:Policy>

+							<sp:Strict/>

+						</wsp:Policy>

+					</sp:Layout>

+					<sp:IncludeTimestamp/>

+					<sp:OnlySignEntireHeadersAndBody/>

+				</wsp:Policy>

+			</sp:AsymmetricBinding>

+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+				<wsp:Policy>

+					<sp:MustSupportRefKeyIdentifier/>

+					<sp:MustSupportRefIssuerSerial/>

+				</wsp:Policy>

+			</sp:Wss10>

+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+				<sp:Body/>

+			</sp:SignedParts>

+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+				<sp:Body/>

+			</sp:EncryptedParts>

+

+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 

+				<ramp:user>service</ramp:user>

+				<ramp:encryptionUser>client</ramp:encryptionUser>

+				<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample03.PWCBHandler</ramp:passwordCallbackClass>

+				

+				<ramp:signatureCrypto>

+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">

+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>

+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">service.jks</ramp:property>

+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>

+					</ramp:crypto>

+				</ramp:signatureCrypto>

+				<ramp:encryptionCypto>

+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">

+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>

+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">service.jks</ramp:property>

+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>

+					</ramp:crypto>

+				</ramp:encryptionCypto>

+			</ramp:RampartConfig>

+

+		</wsp:All>

+	</wsp:ExactlyOne>

+</wsp:Policy>

+

+</service>

diff --git a/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/Client.java b/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/Client.java
new file mode 100644
index 0000000..71cd96a
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/Client.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.policy.sample03;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.rampart.RampartMessageData;
+
+import javax.xml.namespace.QName;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 3) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path policy_xml_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], null);
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,  loadPolicy(args[2]));
+        client.setOptions(options);
+        
+        client.engageModule(new QName("addressing"));
+        client.engageModule(new QName("rampart"));
+        
+        OMElement response = client.sendReceive(getPayload("Hello world"));
+        
+        System.out.println(response);
+        
+    }
+    
+    private static Policy loadPolicy(String xmlPath) throws Exception {
+        StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
+        return PolicyEngine.getPolicy(builder.getDocumentElement());
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample03.policy.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/PWCBHandler.java b/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/PWCBHandler.java
new file mode 100644
index 0000000..2d8ef1f
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/PWCBHandler.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.policy.sample03;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/SimpleService.java b/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/SimpleService.java
new file mode 100644
index 0000000..2ed33a6
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample03/src/org/apache/rampart/samples/policy/sample03/SimpleService.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright  2003-2005 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.rampart.samples.policy.sample03;
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample04/README.txt b/rampart_1_1/modules/samples/security/policy/sample04/README.txt
new file mode 100644
index 0000000..33a0168
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample04/README.txt
@@ -0,0 +1,15 @@
+SecureConversation 
+
+The secure session is bootstrapped using a SymetricBinding which uses
+derived keys based on an ephemeral key. 
+
+Messages in the secure conversation :
+	- Includes a timestamp
+	- All headers are signed along with the timestamp
+	- Signature encrypted
+	- Body encrypted
+
+Algorithm suite is Basic128Rsa15
+
+Note that {http://ws.apache.org/rampart/policy}RampartConfig assertion provides
+additional information required to secure the message.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/policy/sample04/policy.xml b/rampart_1_1/modules/samples/security/policy/sample04/policy.xml
new file mode 100644
index 0000000..07ab984
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample04/policy.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+ 
+<wsp:Policy wsu:Id="SecConvPolicy2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:BootstrapPolicy>
+										<wsp:Policy>
+											<sp:EncryptedParts>
+												<sp:Body/>
+											</sp:EncryptedParts>
+											<sp:SymmetricBinding>
+												<wsp:Policy>
+													<sp:ProtectionToken>
+														<wsp:Policy>
+															<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+																<wsp:Policy>
+																	<sp:RequireDerivedKeys/>
+																	<sp:RequireThumbprintReference/>
+																	<sp:WssX509V3Token10/>
+																</wsp:Policy>
+															</sp:X509Token>
+														</wsp:Policy>
+													</sp:ProtectionToken>
+													<sp:AlgorithmSuite>
+														<wsp:Policy>
+															<sp:Basic128Rsa15/>
+														</wsp:Policy>
+													</sp:AlgorithmSuite>
+													<sp:Layout>
+														<wsp:Policy>
+															<sp:Strict/>
+														</wsp:Policy>
+													</sp:Layout>
+													<sp:IncludeTimestamp/>
+													<sp:EncryptSignature/>
+													<sp:OnlySignEntireHeadersAndBody/>
+												</wsp:Policy>
+											</sp:SymmetricBinding>
+											<sp:EndorsingSupportingTokens>
+												<wsp:Policy>
+													<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+														<wsp:Policy>
+															<sp:RequireThumbprintReference/>
+															<sp:WssX509V3Token10/>
+														</wsp:Policy>
+													</sp:X509Token>
+												</wsp:Policy>
+											</sp:EndorsingSupportingTokens>
+											<sp:Wss11>
+												<wsp:Policy>
+													<sp:MustSupportRefKeyIdentifier/>
+													<sp:MustSupportRefIssuerSerial/>
+													<sp:MustSupportRefThumbprint/>
+													<sp:MustSupportRefEncryptedKey/>
+													<sp:RequireSignatureConfirmation/>
+												</wsp:Policy>
+											</sp:Wss11>
+											<sp:Trust10>
+												<wsp:Policy>
+													<sp:MustSupportIssuedTokens/>
+													<sp:RequireClientEntropy/>
+													<sp:RequireServerEntropy/>
+												</wsp:Policy>
+											</sp:Trust10>
+										</wsp:Policy>
+									</sp:BootstrapPolicy>
+								</wsp:Policy>
+							</sp:SecureConversationToken>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic128Rsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptSignature/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+				</wsp:Policy>
+			</sp:Wss11>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>client</ramp:user>
+				<ramp:encryptionUser>service</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample04.PWCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">client.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">client.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+				
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/security/policy/sample04/services.xml b/rampart_1_1/modules/samples/security/policy/sample04/services.xml
new file mode 100644
index 0000000..61a8c12
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample04/services.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<!-- services.xml of sample-2 : Sign only-->

+<service>

+	<operation name="echo">

+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+	</operation>    

+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.policy.sample04.SimpleService</parameter>

+	

+	<module ref="rampart" />

+	<module ref="rahas" />

+	<module ref="addressing" />

+

+	<wsp:Policy wsu:Id="SecConvPolicy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">

+		<wsp:ExactlyOne>

+			<wsp:All>

+				<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+					<wsp:Policy>

+						<sp:ProtectionToken>

+							<wsp:Policy>

+								<sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">

+									<wsp:Policy>

+										<sp:RequireDerivedKeys/>

+										<sp:BootstrapPolicy>

+											<wsp:Policy>

+												<sp:EncryptedParts>

+													<sp:Body/>

+												</sp:EncryptedParts>

+												<sp:SymmetricBinding>

+													<wsp:Policy>

+														<sp:ProtectionToken>

+															<wsp:Policy>

+																<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">

+																	<wsp:Policy>

+																		<sp:RequireDerivedKeys/>

+																		<sp:RequireThumbprintReference/>

+																		<sp:WssX509V3Token10/>

+																	</wsp:Policy>

+																</sp:X509Token>

+															</wsp:Policy>

+														</sp:ProtectionToken>

+														<sp:AlgorithmSuite>

+															<wsp:Policy>

+																<sp:Basic128Rsa15/>

+															</wsp:Policy>

+														</sp:AlgorithmSuite>

+														<sp:Layout>

+															<wsp:Policy>

+																<sp:Strict/>

+															</wsp:Policy>

+														</sp:Layout>

+														<sp:IncludeTimestamp/>

+														<sp:EncryptSignature/>

+														<sp:OnlySignEntireHeadersAndBody/>

+													</wsp:Policy>

+												</sp:SymmetricBinding>

+												<sp:EndorsingSupportingTokens>

+													<wsp:Policy>

+														<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">

+															<wsp:Policy>

+																<sp:RequireThumbprintReference/>

+																<sp:WssX509V3Token10/>

+															</wsp:Policy>

+														</sp:X509Token>

+													</wsp:Policy>

+												</sp:EndorsingSupportingTokens>

+												<sp:Wss11>

+													<wsp:Policy>

+														<sp:MustSupportRefKeyIdentifier/>

+														<sp:MustSupportRefIssuerSerial/>

+														<sp:MustSupportRefThumbprint/>

+														<sp:MustSupportRefEncryptedKey/>

+														<sp:RequireSignatureConfirmation/>

+													</wsp:Policy>

+												</sp:Wss11>

+												<sp:Trust10>

+													<wsp:Policy>

+														<sp:MustSupportIssuedTokens/>

+														<sp:RequireClientEntropy/>

+														<sp:RequireServerEntropy/>

+													</wsp:Policy>

+												</sp:Trust10>

+											</wsp:Policy>

+										</sp:BootstrapPolicy>

+									</wsp:Policy>

+								</sp:SecureConversationToken>

+							</wsp:Policy>

+						</sp:ProtectionToken>

+						<sp:AlgorithmSuite>

+							<wsp:Policy>

+								<sp:Basic128Rsa15/>

+							</wsp:Policy>

+						</sp:AlgorithmSuite>

+						<sp:Layout>

+							<wsp:Policy>

+								<sp:Strict/>

+							</wsp:Policy>

+						</sp:Layout>

+						<sp:IncludeTimestamp/>

+						<sp:EncryptSignature/>

+						<sp:OnlySignEntireHeadersAndBody/>

+					</wsp:Policy>

+				</sp:SymmetricBinding>

+				<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+					<wsp:Policy>

+						<sp:MustSupportRefKeyIdentifier/>

+						<sp:MustSupportRefIssuerSerial/>

+						<sp:MustSupportRefThumbprint/>

+						<sp:MustSupportRefEncryptedKey/>

+					</wsp:Policy>

+				</sp:Wss11>

+				<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+					<wsp:Policy>

+						<sp:MustSupportIssuedTokens/>

+						<sp:RequireClientEntropy/>

+						<sp:RequireServerEntropy/>

+					</wsp:Policy>

+				</sp:Trust10>

+				<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

+					<sp:Body/>

+				</sp:EncryptedParts>

+				<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 

+					<ramp:user>service</ramp:user>

+					<ramp:encryptionUser>client</ramp:encryptionUser>

+					<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample04.PWCBHandler</ramp:passwordCallbackClass>

+					

+					<ramp:signatureCrypto>

+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">

+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>

+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">service.jks</ramp:property>

+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>

+						</ramp:crypto>

+					</ramp:signatureCrypto>

+					<ramp:encryptionCypto>

+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">

+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>

+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">service.jks</ramp:property>

+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>

+						</ramp:crypto>

+					</ramp:encryptionCypto>

+

+				</ramp:RampartConfig>

+			</wsp:All>

+		</wsp:ExactlyOne>

+	</wsp:Policy>

+	

+    <parameter name="sct-issuer-config">

+		<sct-issuer-config>

+			<cryptoProperties>

+               <crypto provider="org.apache.ws.security.components.crypto.Merlin">

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</property>

+                    <property name="org.apache.ws.security.crypto.merlin.file">sts.jks</property>

+                    <property name="org.apache.ws.security.crypto.merlin.keystore.password">password</property>

+                </crypto>

+			</cryptoProperties>

+			<addRequestedAttachedRef />

+			<addRequestedUnattachedRef />

+

+            <!--

+               Key computation mechanism

+               1 - Use Request Entropy

+               2 - Provide Entropy

+               3 - Use Own Key

+            -->

+            <keyComputation>3</keyComputation>

+

+            <!--

+               proofKeyType element is valid only if the keyComputation is set to 3

+               i.e. Use Own Key

+

+               Valid values are: EncryptedKey & BinarySecret

+            -->

+            <proofKeyType>BinarySecret</proofKeyType>

+        </sct-issuer-config>

+    </parameter>

+	

+	<parameter name="token-canceler-config">

+		<token-canceler-config>

+

+		</token-canceler-config>

+    </parameter>

+	

+</service>

diff --git a/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/Client.java b/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/Client.java
new file mode 100644
index 0000000..7b372f1
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/Client.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.policy.sample04;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.rampart.RampartMessageData;
+
+import javax.xml.namespace.QName;
+
+public class Client {
+
+    public static void main(String[] args) throws Exception {
+        
+        if(args.length != 3) {
+            System.out.println("Usage: $java Client endpoint_address client_repo_path policy_xml_path");
+        }
+        
+        ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], null);
+        
+        ServiceClient client = new ServiceClient(ctx, null);
+        Options options = new Options();
+        options.setAction("urn:echo");
+        options.setTo(new EndpointReference(args[0]));
+        options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,  loadPolicy(args[2]));
+        client.setOptions(options);
+        
+        client.engageModule(new QName("addressing"));
+        client.engageModule(new QName("rampart"));
+        
+        OMElement response = client.sendReceive(getPayload("Hello world1"));
+        System.out.println("Response 1 : " + response);
+        response = client.sendReceive(getPayload("Hello world2"));
+        System.out.println("Response 2 : " + response);
+        response = client.sendReceive(getPayload("Hello world3"));
+        System.out.println("Response 3 : " + response);
+
+        System.out.println("Sending cancel request");
+        options.setProperty(RampartMessageData.CANCEL_REQUEST, Constants.VALUE_TRUE);
+        response = client.sendReceive(getPayload("Hello world3"));
+        System.out.println("Cancel response: " + response);
+    }
+    
+    private static Policy loadPolicy(String xmlPath) throws Exception {
+        StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
+        return PolicyEngine.getPolicy(builder.getDocumentElement());
+    }
+    
+    private static OMElement getPayload(String value) {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMNamespace ns = factory.createOMNamespace("http://sample04.policy.samples.rampart.apache.org/xsd","ns1");
+        OMElement elem = factory.createOMElement("echo", ns);
+        OMElement childElem = factory.createOMElement("param0", null);
+        childElem.setText(value);
+        elem.addChild(childElem);
+        
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/PWCBHandler.java b/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/PWCBHandler.java
new file mode 100644
index 0000000..c3b3a47
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/PWCBHandler.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004,2005 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.rampart.samples.policy.sample04;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+public class PWCBHandler implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException,
+            UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
+            String id = pwcb.getIdentifer();
+            if("client".equals(id)) {
+                pwcb.setPassword("apache");
+            } else if("service".equals(id)) {
+                pwcb.setPassword("apache");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/SimpleService.java b/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/SimpleService.java
new file mode 100644
index 0000000..d539c87
--- /dev/null
+++ b/rampart_1_1/modules/samples/security/policy/sample04/src/org/apache/rampart/samples/policy/sample04/SimpleService.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright  2003-2005 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.rampart.samples.policy.sample04;
+
+public class SimpleService {
+    
+    public String echo(String arg) {
+        return arg;
+    }
+}
diff --git a/rampart_1_1/modules/samples/servicelifecycle/README.txt b/rampart_1_1/modules/samples/servicelifecycle/README.txt
new file mode 100644
index 0000000..524203a
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/README.txt
@@ -0,0 +1,47 @@
+Sample: ServiceLifeCycle

+=========================

+

+Introduction:

+============

+

+This sample demonstrate usage of service lifecycle and bit of session managment. 

+The main idea is to show where and how to use service lifecycle interface and 

+session related methods. 

+

+

+Prerequisites

+=============

+Apache Ant 1.6.2 or later

+

+If you want to access the service in REST manner you have to deploy the service in 

+application server such as Apache Tomcat. Note that it will not work with axis2server.

+

+

+

+Deploying the Sevrice

+===================== 

+

+Deploy into Sample repository:

+    

+ * Type ant generate.service or simply ant from Axis2_HOME/samples/servicelifecycle

+

+Deploy into Tomcat :

+     

+ * To build and copy the service archive file into Tomcat, type ant copy.to.tomcat from 

+Axis2_HOME/samples/servicelifecycle which will copy the aar file into

+tomcat/web-app/axis2/WEB-INF/services directory.

+

+Running the Client

+==================

+Type ant run.client from Axis2_HOME/samples/servicelifecycle.

+

+And then follow the instructions as mentioned in the console.

+

+Advanced Guide

+==============

+For more details kindly see doc/servicelifecycleguide.html

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

+

diff --git a/rampart_1_1/modules/samples/servicelifecycle/build.xml b/rampart_1_1/modules/samples/servicelifecycle/build.xml
new file mode 100644
index 0000000..c932800
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/build.xml
@@ -0,0 +1,102 @@
+<project basedir="." default="build" name="Library">
+
+    <property environment="env"/>
+    <property name="service-name" value="Library.aar"/>
+    <property name="dest.dir" value="target"/>
+    <property name="axis2.home" value="../../" />
+
+	<property name="repository.path" value="${axis2.home}/repository/services" />
+
+    <property name="dest.dir.classes" value="${dest.dir}/classes"/>
+
+    <property name="dest.dir.lib" value="${dest.dir}/lib"/>
+    <property name="catalina-modules"
+              value="${env.CATALINA_HOME}/webapps/axis2/WEB-INF/services"/>
+
+    <path id="build.class.path">
+        <fileset dir="../../lib">
+            <include name="*.jar"/>
+        </fileset>
+    </path>
+
+    <target name="clean">
+        <delete dir="${dest.dir}"/>
+    </target>
+
+    <target name="prepare" depends="clean">
+
+        <mkdir dir="${dest.dir}"/>
+
+        <mkdir dir="${dest.dir.classes}"/>
+
+        <mkdir dir="${dest.dir.classes}/META-INF"/>
+
+    </target>
+
+    <target name="build" depends="prepare">
+
+        <mkdir dir="${dest.dir}"/>
+
+        <mkdir dir="${dest.dir.classes}"/>
+        <mkdir dir="${dest.dir.classes}/META-INF"/>
+
+        <copy file="src/META-INF/services.xml"
+              tofile="${dest.dir.classes}/META-INF/services.xml"
+              overwrite="true"/>
+
+        <javac debug="on" srcdir="src" destdir="${dest.dir.classes}" includes="sample/**">
+            <classpath refid="build.class.path"/>
+        </javac>
+
+        <jar basedir="${dest.dir.classes}"
+             destfile="${dest.dir}/${service-name}"/>
+
+    </target>
+
+     <target name="generate.service" depends="prepare">
+
+        <mkdir dir="${dest.dir}"/>
+
+        <mkdir dir="${dest.dir.classes}"/>
+        <mkdir dir="${dest.dir.classes}/META-INF"/>
+
+        <copy file="src/META-INF/services.xml"
+              tofile="${dest.dir.classes}/META-INF/services.xml"
+              overwrite="true"/>
+
+        <javac debug="on" srcdir="src" destdir="${dest.dir.classes}" includes="sample/**">
+            <classpath refid="build.class.path"/>
+        </javac>
+
+        <jar basedir="${dest.dir.classes}"
+             destfile="${repository.path}/${service-name}"/>
+
+    </target>
+
+
+
+    <target name="run.client" depends="prepare">
+        <mkdir dir="${dest.dir}"/>
+        <mkdir dir="${dest.dir.classes}"/>
+        <javac debug="on" srcdir="src" destdir="${dest.dir.classes}" includes="client/**">
+            <classpath>
+                <fileset dir="../../lib">
+                    <include name="*.jar"/>
+                </fileset>
+            </classpath>
+        </javac>
+
+        <java classname="client.LibraryServiceClient">
+            <classpath>
+                <pathelement location="${dest.dir.classes}"/>
+                <fileset dir="../../lib">
+                    <include name="*.jar"/>
+                </fileset>
+            </classpath>
+        </java>
+	</target>
+    <target name="copy.to.tomcat" depends="build">
+        <copy file="${dest.dir}/${service-name}" todir="${catalina-modules}"/>
+    </target>
+
+</project>
diff --git a/rampart_1_1/modules/samples/servicelifecycle/doc/servicelifecycleguide.html b/rampart_1_1/modules/samples/servicelifecycle/doc/servicelifecycleguide.html
new file mode 100644
index 0000000..ebffca9
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/doc/servicelifecycleguide.html
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+  <title>Service Life Cycle Sample Guide</title>
+  <meta name="generator" content="amaya 9.2.1, see http://www.w3.org/Amaya/"
+  />
+</head>
+
+<body>
+<h1>Service Life Cycle Sample Guide</h1>
+
+<h2>Introduction</h2>
+
+<p>This sample is to demonstrate usage of a service life cycle interface and
+session scoping with a sample on application scope session. The sample
+consists of two parts, Service and Client.</p>
+
+<p>Let's take a library system, which has the following operations, as the
+scenario for this sample.</p>
+<ul>
+  <li>Register user</li>
+  <li>Login to system</li>
+  <li>View all books</li>
+  <li>View available books</li>
+  <li>View lend books</li>
+  <li>Lend and return books</li>
+</ul>
+
+<h2>Why Do We Need Service Life Cycle Here?</h2>
+
+<p>In order to make sure that at the runtime service impl class can access
+data read from anywhere, we need to initialize the service at deployment.
+Let's forget about the session for a minute and think about the scenario
+where you want to populate a bean or need to start a Data Base connection for
+the service. In such a situation having service life cycle class is very
+useful.</p>
+
+<p>In this sample you will learn how to use the service life cycle class for
+your application. The interface has only two methods</p>
+<ol>
+  <li>startUp</li>
+  <li>shutDown</li>
+</ol>
+
+<p>Where startUp method will be called when the service is deployed and it
+will call only once for that particular service, while shutDown method calls
+when system shutdown.</p>
+
+<p>So in this sample, the life cycle class will load the library inside the
+startUp method. At the very first time the system will load from
+services.xml. It has all the available books in the system. And at the time
+of system shutdown it will save the status of the library into a file
+(library.xml) in the java.io.temp directory. So the next time onwards it will
+populate library using the above file. So all the changes will be there in
+the new instance as well.</p>
+
+<h2>Prerequisites</h2>
+
+<p>You will have to install <a href="http://ant.apache.org/">Apache Ant</a>
+1.6.2 or later.</p>
+
+<h2>Running the Sample</h2>
+
+<h3>How to Build the Service?</h3>
+
+<p>Building the service is just a matter of running ant build file. It will
+create the service aar file, or you could just run the copy.to.tomcat goal
+which will copy the aar file into tomcat/web-app/axis2/WEB-INF/services
+directory.</p>
+
+<p>Next, go to http://[url and port to your app server]/axis2 and see whether
+your service is listed there.</p>
+
+<h3>How to Invoke the Service</h3>
+
+<p>You can invoke complete service using REST API, but it only works in
+application servers like Apache Tomcat and it will not work in
+SimpleHttpServer. First try to use library system using REST API.</p>
+
+<p>This sample is a simple one and will not do complex tasks. So let's follow
+steps given below to make sure that the sample works as it should:</p>
+
+<p><strong>Step 1</strong>:- View all the available books in the library,
+just type the URL http://127.0.0.1:8080/axis2/rest/Library/listAvailableBook
+on your favorite browser.</p>
+
+<p>You will see all the available books in the system.</p>
+
+<p><strong>Step 2</strong> : View all the books in the system at
+http://127.0.0.1:8080/axis2/rest/Library/listAllBook</p>
+
+<p>In this case you will get exactly the same result for both the request,
+since no one has borrowed the book.</p>
+
+<p><strong>Step 3</strong>: Now look at all the lent books in the system. And
+you will see an empty list at
+http://127.0.0.1:8080/axis2/rest/Library/listLendBook</p>
+
+<p><strong>Step 4</strong> : Register a user. To lend a book or return a
+book, you need to register first. Do not register twice, if you try to do so
+you will get an exception.</p>
+
+<p>To register you need to give user name and password (have a look at the
+wsdl at http://127.0.0.1:port/axis2/services/serviceName?wsdl. You will see
+what you need to pass in)</p>
+
+<p>So let's create a user called 'foo' with the password '123'
+(http://127.0.0.1:8080/axis2/rest/Library/register?userName=foo&amp;passWord=123)</p>
+
+<p>Then you will get the following response, if everything has gone well.</p>
+<pre>&lt;ns:registerResponse&gt;
+&lt;ns:return&gt;true&lt;/ns:return&gt;
+&lt;/ns:registerResponse&gt;</pre>
+
+<p><strong>Step 5</strong> : Log into system. To log in you need to pass user
+name and password. So let's try to login to system. The request will be
+http://127.0.0.1:8080/axis2/rest/Library/login?userName=foo&amp;passWord=123</p>
+
+<p><strong>Step 6</strong> : Now we are ready to lend a book. To lend a book
+you need to pass isbn and userName. Let's try to lend the book with isbn
+0-937175-77-3, your request would look like below:</p>
+
+<p>http://127.0.0.1:8080/axis2/rest/Library/lendBook?isbn=0-937175-77-3&amp;userName=foo</p>
+
+<p>If everything went well, you will see the following response in the
+browser.</p>
+<pre>&lt;ns:lendBookResponse&gt;
+&lt;ns:return&gt;
+&lt;author&gt;John Bloomer&lt;/author&gt;
+&lt;isbn&gt;0-937175-77-3&lt;/isbn&gt;
+&lt;title&gt;Power Programming with RPC&lt;/title&gt;
+&lt;/ns:return&gt;
+&lt;/ns:lendBookResponse&gt;</pre>
+
+<p><strong>Step 7</strong> : Now go and look at lent list again at
+http://127.0.0.1:8080/axis2/rest/Library/listLendBook, you will see the
+following output in the browser.</p>
+<pre>&lt;ns:listLendBookResponse&gt;
+&lt;ns:return&gt;
+&lt;author&gt;John Bloomer&lt;/author&gt;
+&lt;isbn&gt;0-937175-77-3&lt;/isbn&gt;
+&lt;title&gt;Power Programming with RPC&lt;/title&gt;
+&lt;/ns:return&gt;
+&lt;/ns:listLendBookResponse&gt;</pre>
+
+<p>That's the book you just lent!</p>
+
+<p>Note : Now if we view the available books, you will not see the above book
+in that list.</p>
+
+<p><strong>Step 8</strong> : Now let's return the book.</p>
+
+<p>http://127.0.0.1:8080/axis2/rest/Library/returnBook?isbn= 0-937175-77-3</p>
+
+<p><strong>Step 9</strong> : Now let's look at the lent book list again, and
+you will realize that list is empty.</p>
+
+<p><strong>Step 10</strong> : Lend few more book and re-start the app server
+(say Tomcat), and see whether all the previous data is there in the new
+instance.</p>
+
+<h3>Running the Java Client</h3>
+
+<p>Open up the LibraryServiceClient java class in your favorite IDE and run
+the main class. And you can comment out the methods you do not wish to invoke
+while un-commenting the method(s) you want to invoke.</p>
+
+<p>Java client also can be run using <a
+href="http://ant.apache.org/">Ant</a>. You can execute the client and invoke
+service typing <code>ant run.client</code> command in the
+Axis2_HOME/samples/servicelifecycle</p>
+
+<p>And then follow the instructions as mentioned in the console.</p>
+</body>
+</html>
diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/META-INF/services.xml b/rampart_1_1/modules/samples/servicelifecycle/src/META-INF/services.xml
new file mode 100644
index 0000000..2850c2c
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/META-INF/services.xml
@@ -0,0 +1,53 @@
+<service name="Library"

+         class="sample.servicelifecycle.LibraryLifeCycle" scope="application">

+    <description>

+        This is sample service 2

+    </description>

+    <messageReceivers>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>

+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

+    </messageReceivers>

+    <parameter name="ServiceClass" locked="false">

+        sample.servicelifecycle.LibraryService</parameter>

+    <parameter name="allBooks">

+        <allBooks>

+            <book>

+                <author>John Bloomer</author>

+                <isbn>0-937175-77-3</isbn>

+                <title>Power Programming with RPC</title>

+            </book>

+            <book>

+                <author>Stephen Spainhour and Valerie Quercia</author>

+                <isbn>1-56592-229-8</isbn>

+                <title>WEBMASTER IN A NUTSHELL</title>

+            </book>

+            <book>

+                <author>David Flanagan</author>

+                <isbn>1-56592-371-5</isbn>

+                <title>Java Examples</title>

+            </book>

+            <book>

+                <author>Mark Lutz and David Ascher</author>

+                <isbn>1-56592-464-8</isbn>

+                <title>Learning Python</title>

+            </book>

+            <book>

+                <author>A. Keyton Weissinger</author>

+                <isbn>1-56592-490-8</isbn>

+                <title>ASP In a nutshell</title>

+            </book>

+            <book>

+                <author>Clinton Wong</author>

+                <isbn>1-56592-214-X</isbn>

+                <title>Web Client Programming with Perl</title>

+            </book>

+            <book>

+                <author>Don Box , Aaron Skonnard and John Lam</author>

+                <isbn>0-201-70914-7</isbn>

+                <title>Essential XML , Beyond Markup</title>

+            </book>

+        </allBooks>

+    </parameter>

+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/client/LibraryServiceClient.java b/rampart_1_1/modules/samples/servicelifecycle/src/client/LibraryServiceClient.java
new file mode 100644
index 0000000..2c7fb20
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/client/LibraryServiceClient.java
@@ -0,0 +1,267 @@
+package client;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.databinding.utils.BeanUtil;

+import org.apache.axis2.engine.DefaultObjectSupplier;

+import org.apache.axis2.rpc.client.RPCServiceClient;

+import sample.servicelifecycle.bean.Book;

+

+import javax.xml.namespace.QName;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Iterator;

+

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class LibraryServiceClient {

+    private static final String USER_NAME = "-userName";

+    private static final String PASS_WORD = "-passWord";

+    private static final String ISBN = "-isbn";

+

+    public static void main(String[] args) throws Exception {

+        LibraryServiceClient client = new LibraryServiceClient();

+        client.runClient();

+    }

+

+    public void runClient() throws Exception {

+        System.out.println("=====Welcome to Libraray client======");

+        System.out.println("                                     ");

+        System.out.println(" To list All books type 1");

+        System.out.println(" To list Available books type 2");

+        System.out.println(" To list Lend books type 3");

+        System.out.println(" To register  4  - -userName -passWord");

+        System.out.println(" To login     5 - -userName -passWord");

+        System.out.println(" To lend a book 6 - -isbn -userName   ");

+        System.out.println(" To return a book 7 - -isbn");

+        System.out.println(" To exit type -1 ");

+        System.out.println("                                      ");

+        System.out.println("                                      ");

+        System.out.println("Enter service epr address :          ");

+        String epr = getInput();

+        RPCServiceClient rpcClient = new RPCServiceClient();

+        Options opts = new Options();

+        opts.setTo(new EndpointReference(epr));

+        rpcClient.setOptions(opts);

+        LibraryServiceClient client = new LibraryServiceClient();

+        while (true) {

+            System.out.println("Type your command here : ");

+            String commandsParms = getInput();

+            if (commandsParms != null) {

+                String[] args = commandsParms.split(" ");

+                String firstarg = args[0];

+                int command = Integer.parseInt(firstarg);

+                switch (command) {

+                    case 1 : {

+                        client.listAllBook(rpcClient);

+                        break;

+                    }

+                    case 2 : {

+                        client.listAvailableBook(rpcClient);

+                        break;

+                    }

+                    case 3 : {

+                        client.listLendBook(rpcClient);

+                        break;

+                    }

+                    case 4 : {

+                        String usreName = null;

+                        String passWord = null;

+                        if (args.length < 5) {

+                            throw new Exception("No enough number of arguments");

+                        }

+                        if (USER_NAME.equals(args[1])) {

+                            usreName = args[2];

+                        } else if (USER_NAME.equals(args[3])) {

+                            usreName = args[4];

+                        }

+

+                        if (PASS_WORD.equals(args[1])) {

+                            passWord = args[2];

+                        } else if (PASS_WORD.equals(args[3])) {

+                            passWord = args[4];

+                        }

+                        client.register(usreName, passWord, rpcClient);

+                        break;

+                    }

+                    case 5 : {

+                        String usreName = null;

+                        String passWord = null;

+                        if (args.length < 5) {

+                            throw new Exception("No enough number of arguments");

+                        }

+                        if (USER_NAME.equals(args[1])) {

+                            usreName = args[2];

+                        } else if (USER_NAME.equals(args[3])) {

+                            usreName = args[4];

+                        }

+

+                        if (PASS_WORD.equals(args[1])) {

+                            passWord = args[2];

+                        } else if (PASS_WORD.equals(args[3])) {

+                            passWord = args[4];

+                        }

+                        client.login(usreName, passWord, rpcClient);

+                        break;

+                    }

+                    case 6 : {

+                        String isbn = null;

+                        String userName = null;

+                        if (args.length < 5) {

+                            throw new Exception("No enough number of arguments");

+                        }

+                        if (USER_NAME.equals(args[1])) {

+                            userName = args[2];

+                        } else if (USER_NAME.equals(args[3])) {

+                            userName = args[4];

+                        }

+

+                        if (ISBN.equals(args[1])) {

+                            isbn = args[2];

+                        } else if (ISBN.equals(args[3])) {

+                            isbn = args[4];

+                        }

+                        client.lendBook(isbn, userName, rpcClient);

+                        break;

+                    }

+                    case 7 : {

+                        String isbn = null;

+                        if (args.length < 3) {

+                            throw new Exception("No enough number of arguments");

+                        }

+                        if (ISBN.equals(args[1])) {

+                            isbn = args[2];

+                        }

+                        client.returnBook(isbn, rpcClient);

+                        break;

+                    }

+                    case -1 : {

+                        System.exit(0);

+                    }

+                }

+            }

+        }

+

+        //  System.in.read()

+    }

+

+    //

+

+

+    private String getInput() {

+        try {

+            byte b [] = new byte [256];

+            int i = System.in.read(b);

+            String msg = "";

+            if (i != -1) {

+                msg = new String(b).substring(0, i - 1).trim();

+            }

+            return msg;

+        } catch (IOException e) {

+            System.err.println(" occurred while reading in command : " + e);

+            return null;

+        }

+    }

+

+

+    public void returnBook(String isbn, RPCServiceClient rpcClient) throws Exception {

+        rpcClient.getOptions().setAction("urn:returnBook");

+        ArrayList args = new ArrayList();

+        args.add(isbn);

+        rpcClient.invokeRobust(new QName("http://servicelifecycle.sample/xsd",

+                "returnBook"), args.toArray());

+    }

+

+    public void lendBook(String isbn, String userName,

+                         RPCServiceClient rpcClient) throws Exception {

+        rpcClient.getOptions().setAction("urn:lendBook");

+        ArrayList args = new ArrayList();

+        args.add(isbn);

+        args.add(userName);

+        Object obj [] = rpcClient.invokeBlocking(new QName("http://servicelifecycle.sample/xsd",

+                "lendBook"), args.toArray(), new Class[]{Book.class});

+        Book book = (Book) obj[0];

+        System.out.println("Title : " + book.getTitle());

+        System.out.println("Isbn : " + book.getIsbn());

+        System.out.println("Author : " + book.getAuthor());

+

+    }

+

+    public boolean register(String userName,

+                            String passWord,

+                            RPCServiceClient rpcClient) throws Exception {

+        rpcClient.getOptions().setAction("urn:register");

+        ArrayList args = new ArrayList();

+        args.add(userName);

+        args.add(passWord);

+        Object obj [] = rpcClient.invokeBlocking(new QName("http://servicelifecycle.sample/xsd",

+                "register"), args.toArray(), new Class[]{Boolean.class});

+        return ((Boolean) obj[0]).booleanValue();

+    }

+

+    public boolean login(String userName,

+                         String passWord,

+                         RPCServiceClient rpcClient) throws Exception {

+        rpcClient.getOptions().setAction("urn:login");

+        ArrayList args = new ArrayList();

+        args.add(userName);

+        args.add(passWord);

+        Object obj [] = rpcClient.invokeBlocking(new QName("http://servicelifecycle.sample/xsd",

+                "login"), args.toArray(), new Class[]{Boolean.class});

+        return ((Boolean) obj[0]).booleanValue();

+    }

+

+    public void listAvailableBook(RPCServiceClient rpcClient) throws Exception {

+        rpcClient.getOptions().setAction("urn:listAvailableBook");

+        OMElement elemnt = rpcClient.invokeBlocking(new QName("http://servicelifecycle.sample/xsd",

+                "listAvailableBook"), new Object[]{null});

+        printBookData(elemnt);

+    }

+

+    private void printBookData(OMElement element) throws Exception {

+        if (element != null) {

+            Iterator values = element.getChildrenWithName(new QName("http://servicelifecycle.sample/xsd", "return"));

+            while (values.hasNext()) {

+                OMElement omElement = (OMElement) values.next();

+                Book book = (Book) BeanUtil.deserialize(Book.class, omElement, new DefaultObjectSupplier(), "book");

+                System.out.println("Isbn : " + book.getIsbn());

+                System.out.println("Author : " + book.getAuthor());

+                System.out.println("Title : " + book.getTitle());

+                System.out.println("");

+            }

+

+        }

+    }

+

+    public void listAllBook(RPCServiceClient rpcClient) throws Exception {

+        rpcClient.getOptions().setAction("urn:listAllBook");

+        OMElement elemnt = rpcClient.invokeBlocking(new QName("http://servicelifecycle.sample/xsd",

+                "listAllBook"), new Object[]{null});

+        printBookData(elemnt);

+    }

+

+    public void listLendBook(RPCServiceClient rpcClient) throws Exception {

+        rpcClient.getOptions().setAction("urn:listLendBook");

+        OMElement elemnt = rpcClient.invokeBlocking(new QName("http://servicelifecycle.sample/xsd",

+                "listLendBook"), new Object[]{null});

+        printBookData(elemnt);

+    }

+

+}

diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryConstants.java b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryConstants.java
new file mode 100644
index 0000000..71b3867
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryConstants.java
@@ -0,0 +1,26 @@
+package sample.servicelifecycle;

+/*

+* Copyright 2004,2005 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 : Deepal Jayasinghe (deepal@apache.org)

+*

+*/

+

+public interface LibraryConstants {

+    String AVAILABLE_BOOK = "availableBooks";

+    String ALL_BOOK = "allBooks";

+    String LEND_BOOK = "lendBooks";

+    String USER_LIST = "users";

+}

diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryLifeCycle.java b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryLifeCycle.java
new file mode 100644
index 0000000..a45de77
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryLifeCycle.java
@@ -0,0 +1,177 @@
+package sample.servicelifecycle;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.om.util.StAXUtils;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.databinding.utils.BeanUtil;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.engine.DefaultObjectSupplier;

+import org.apache.axis2.engine.ServiceLifeCycle;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+import sample.servicelifecycle.bean.Book;

+import sample.servicelifecycle.bean.BookList;

+import sample.servicelifecycle.bean.User;

+import sample.servicelifecycle.bean.UserList;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLStreamReader;

+import java.io.*;

+import java.util.Iterator;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class LibraryLifeCycle implements ServiceLifeCycle {

+    private static final Log log = LogFactory.getLog(LibraryLifeCycle.class);

+

+    public void startUp(ConfigurationContext configctx,

+                        AxisService service) {

+        try {

+            String tempDir = System.getProperty("java.io.tmpdir");

+            File tempFile = new File(tempDir);

+            File libFile = new File(tempFile, "library.xml");

+            OMElement libraryElement;

+            boolean noFile = true;

+            if (!libFile.exists()) {

+                //Service starting at the first time or user has clean the temp.dir

+                Parameter allBooks = service.getParameter(LibraryConstants.ALL_BOOK);

+                libraryElement = allBooks.getParameterElement();

+            } else {

+                InputStream in = new FileInputStream(libFile);

+                XMLStreamReader xmlReader = StAXUtils

+                        .createXMLStreamReader(in);

+                StAXOMBuilder staxOMBuilder = new StAXOMBuilder(xmlReader);

+                libraryElement = staxOMBuilder.getDocumentElement();

+                noFile = false;

+            }

+            processOmelemnt(libraryElement, service, noFile);

+        } catch (Exception exception) {

+            log.info(exception);

+        }

+    }

+

+    public void shutDown(ConfigurationContext configctx,

+                         AxisService service) {

+        try {

+            BookList availableBookList = (BookList) service.getParameterValue(LibraryConstants.AVAILABLE_BOOK);

+            BookList allBookList = (BookList) service.getParameterValue(LibraryConstants.ALL_BOOK);

+            BookList lendBookList = (BookList) service.getParameterValue(LibraryConstants.LEND_BOOK);

+            UserList userList = (UserList) service.getParameterValue(LibraryConstants.USER_LIST);

+            OMFactory fac = OMAbstractFactory.getOMFactory();

+            OMElement libElement = fac.createOMElement("library", null);

+            Book[] bookList = allBookList.getBookList();

+            libElement.addChild(BeanUtil.getOMElement(

+                    new QName(LibraryConstants.ALL_BOOK),

+                    bookList, new QName("book"), false, null));

+            libElement.addChild(BeanUtil.getOMElement(

+                    new QName(LibraryConstants.AVAILABLE_BOOK),

+                    availableBookList.getBookList(), new QName("book"), false, null));

+            libElement.addChild(BeanUtil.getOMElement(

+                    new QName(LibraryConstants.LEND_BOOK),

+                    lendBookList.getBookList(), new QName("book"), false, null));

+

+            libElement.addChild(BeanUtil.getOMElement(

+                    new QName(LibraryConstants.USER_LIST),

+                    userList.getUsers(), new QName("user"), false, null));

+

+            String tempDir = System.getProperty("java.io.tmpdir");

+            File tempFile = new File(tempDir);

+            File libFile = new File(tempFile, "library.xml");

+            OutputStream out = new FileOutputStream(libFile);

+            libElement.serialize(out);

+            out.flush();

+            out.close();

+        } catch (Exception e) {

+            log.info(e);

+        }

+    }

+

+    private void processOmelemnt(OMElement element, AxisService service, boolean fileFound) throws AxisFault {

+        BookList allBookList = new BookList(LibraryConstants.ALL_BOOK);

+        OMElement bookEle = element.getFirstChildWithName(new QName(LibraryConstants.ALL_BOOK));

+        Iterator book_itr = bookEle.getChildren();

+        while (book_itr.hasNext()) {

+            Object obj = book_itr.next();

+            if (obj instanceof OMElement) {

+                OMElement omElement = (OMElement) obj;

+                allBookList.addBook((Book) BeanUtil.deserialize(Book.class, omElement, new DefaultObjectSupplier(), "book"));

+            }

+        }

+

+        BookList availableBookList = new BookList(LibraryConstants.AVAILABLE_BOOK);

+        OMElement avaliableBooksEle =

+                element.getFirstChildWithName(new QName(LibraryConstants.AVAILABLE_BOOK));

+        if (avaliableBooksEle != null) {

+            Iterator available_book_itr = avaliableBooksEle.getChildren();

+            while (available_book_itr.hasNext()) {

+                Object obj = available_book_itr.next();

+                if (obj instanceof OMElement) {

+                    OMElement omElement = (OMElement) obj;

+                    availableBookList.addBook((Book) BeanUtil.deserialize(Book.class, omElement, new DefaultObjectSupplier(), "book"));

+                }

+

+            }

+        }

+

+

+        BookList lendBookList = new BookList(LibraryConstants.LEND_BOOK);

+        OMElement lendBooksEle =

+                element.getFirstChildWithName(new QName(LibraryConstants.LEND_BOOK));

+        if (lendBooksEle != null) {

+            Iterator lend_book_itr = lendBooksEle.getChildren();

+            while (lend_book_itr.hasNext()) {

+                Object obj = lend_book_itr.next();

+                if (obj instanceof OMElement) {

+                    OMElement omElement = (OMElement) obj;

+                    lendBookList.addBook((Book) BeanUtil.deserialize(Book.class, omElement, new DefaultObjectSupplier(), "book"));

+                }

+            }

+        }

+        UserList users = new UserList();

+        OMElement usersEle =

+                element.getFirstChildWithName(new QName(LibraryConstants.USER_LIST));

+        if (usersEle != null) {

+            Iterator usre_itr = usersEle.getChildren();

+            while (usre_itr.hasNext()) {

+                Object obj = usre_itr.next();

+                if (obj instanceof OMElement) {

+                    OMElement omElement = (OMElement) obj;

+                    users.addUser((User) BeanUtil.deserialize(User.class, omElement,

+                            new DefaultObjectSupplier(), "user"));

+                }

+

+            }

+        }

+        if (fileFound) {

+            availableBookList = allBookList.copy();

+            service.addParameter(new Parameter(LibraryConstants.AVAILABLE_BOOK, availableBookList));

+        } else {

+            service.addParameter(new Parameter(LibraryConstants.AVAILABLE_BOOK, availableBookList));

+        }

+

+

+        service.addParameter(new Parameter(LibraryConstants.ALL_BOOK, allBookList));

+        service.addParameter(new Parameter(LibraryConstants.LEND_BOOK, lendBookList));

+        service.addParameter(new Parameter(LibraryConstants.USER_LIST, users));

+    }

+}

diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryService.java b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryService.java
new file mode 100644
index 0000000..ad73721
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/LibraryService.java
@@ -0,0 +1,110 @@
+package sample.servicelifecycle;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import sample.servicelifecycle.bean.Book;

+import sample.servicelifecycle.bean.BookList;

+import sample.servicelifecycle.bean.User;

+import sample.servicelifecycle.bean.UserList;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class LibraryService {

+

+    //To store all the available books

+    private BookList availableBookList;

+    //to keep all the book in the system

+    private BookList allBookList;

+    //to keep all the lended books

+    private BookList lendBookList;

+    //to keep the system users

+    private UserList userList;

+

+

+    public Book[] listAvailableBook() {

+        return availableBookList.getBookList();

+    }

+

+    public Book[] listAllBook() {

+        return allBookList.getBookList();

+    }

+

+    public Book[] listLendBook() {

+        return lendBookList.getBookList();

+    }

+

+    public Book lendBook(String isbn, String userName) throws AxisFault {

+        if (isLooged(userName)) {

+            Book book = availableBookList.getBook(isbn);

+            if (book == null) {

+                book = lendBookList.getBook(isbn);

+                if (book != null) {

+                    throw new AxisFault("Someone has borrowed the book");

+                }

+                throw new AxisFault("Book is not available for lending");

+            }

+            availableBookList.removeBook(book);

+            lendBookList.addBook(book);

+            return book;

+        } else {

+            throw new AxisFault("First log into system");

+        }

+    }

+

+    public void returnBook(String isbn) {

+        Book tempBook = allBookList.getBook(isbn);

+        availableBookList.addBook(tempBook);

+        lendBookList.removeBook(tempBook);

+    }

+

+    private boolean isLooged(String userName) {

+        return userList.isLogged(userName);

+    }

+

+    public boolean register(String userName,

+                            String passWord) throws AxisFault {

+        userList.addUser(new User(userName, passWord));

+        return true;

+    }

+

+    public boolean login(String userName, String passWord) throws AxisFault {

+        return userList.login(userName, passWord);

+    }

+

+    /**

+     * Session related methods

+     */

+    public void init(ServiceContext serviceContext) {

+        AxisService service = serviceContext.getAxisService();

+        this.availableBookList = (BookList) service.getParameterValue(LibraryConstants.AVAILABLE_BOOK);

+        this.availableBookList.setListName(LibraryConstants.AVAILABLE_BOOK);

+        this.allBookList = (BookList) service.getParameterValue(LibraryConstants.ALL_BOOK);

+        this.lendBookList = (BookList) service.getParameterValue(LibraryConstants.LEND_BOOK);

+        this.userList = (UserList) service.getParameterValue(LibraryConstants.USER_LIST);

+    }

+

+    public void destroy(ServiceContext serviceContext) throws AxisFault {

+        AxisService service = serviceContext.getAxisService();

+        service.addParameter(new Parameter(LibraryConstants.AVAILABLE_BOOK, availableBookList));

+        service.addParameter(new Parameter(LibraryConstants.ALL_BOOK, allBookList));

+        service.addParameter(new Parameter(LibraryConstants.LEND_BOOK, lendBookList));

+        service.addParameter(new Parameter(LibraryConstants.USER_LIST, userList));

+    }

+}

diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/UsersService.java b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/UsersService.java
new file mode 100644
index 0000000..1119ea3
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/UsersService.java
@@ -0,0 +1,23 @@
+package sample.servicelifecycle;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class UsersService {

+

+

+}

diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/Book.java b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/Book.java
new file mode 100644
index 0000000..6658898
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/Book.java
@@ -0,0 +1,56 @@
+package sample.servicelifecycle.bean;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class Book {

+

+    private String title;

+    private String author;

+    private String isbn;

+

+    public String getTitle() {

+        return title;

+    }

+

+    public void setTitle(String title) {

+        this.title = title;

+    }

+

+    public String getAuthor() {

+        return author;

+    }

+

+    public void setAuthor(String author) {

+        this.author = author;

+    }

+

+    public String getIsbn() {

+        return isbn;

+    }

+

+    public void setIsbn(String isbn) {

+        this.isbn = isbn;

+    }

+

+    public OMElement serialize(OMFactory fac) {

+        return null;

+    }

+}

diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/BookList.java b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/BookList.java
new file mode 100644
index 0000000..9b60be4
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/BookList.java
@@ -0,0 +1,96 @@
+package sample.servicelifecycle.bean;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+

+import java.util.HashMap;

+import java.util.Iterator;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class BookList {

+

+    private HashMap bookTable;

+    private String listName;

+

+    public BookList(String listName) {

+        this.bookTable = new HashMap();

+        this.listName = listName;

+    }

+

+    public void addBook(Book book) {

+        bookTable.put(book.getIsbn().trim(), book);

+    }

+

+    public Book getBook(String isbn) {

+        return (Book) bookTable.get(isbn.trim());

+    }

+

+    public void removeBook(Book book) {

+        bookTable.remove(book.getIsbn());

+    }

+

+    public void removeBook(String isbn) {

+        bookTable.remove(isbn);

+    }

+

+    public HashMap getBookTable() {

+        return bookTable;

+    }

+

+    public void setBookTable(HashMap bookTable) {

+        this.bookTable = bookTable;

+    }

+

+    public String getListName() {

+        return listName;

+    }

+

+    public void setListName(String listName) {

+        this.listName = listName;

+    }

+

+    public OMElement serialize(OMFactory fac) {

+        return null;

+    }

+

+    public Book[] getBookList() {

+        Book [] books = new Book[bookTable.size()];

+        Iterator books_itr = bookTable.values().iterator();

+        int count = 0;

+        while (books_itr.hasNext()) {

+            books[count] = (Book) books_itr.next();

+            count ++;

+        }

+        return books;

+    }

+

+    public BookList copy() {

+        BookList books = new BookList(getListName());

+        Book [] allBooks = getBookList();

+        for (int i = 0; i < allBooks.length; i++) {

+            Book allBook = allBooks[i];

+            Book book = new Book();

+            book.setAuthor(allBook.getAuthor());

+            book.setIsbn(allBook.getIsbn());

+            book.setTitle(allBook.getTitle());

+            books.addBook(book);

+        }

+        return books;

+    }

+}

diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/User.java b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/User.java
new file mode 100644
index 0000000..8f70086
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/User.java
@@ -0,0 +1,48 @@
+package sample.servicelifecycle.bean;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class User {

+    private String userName;

+    private String passWord;

+

+    public User() {

+    }

+

+    public User(String userName, String passWord) {

+        this.userName = userName;

+        this.passWord = passWord;

+    }

+

+    public String getPassWord() {

+        return passWord;

+    }

+

+    public void setPassWord(String passWord) {

+        this.passWord = passWord;

+    }

+

+    public String getUserName() {

+        return userName;

+    }

+

+    public void setUserName(String userName) {

+        this.userName = userName;

+    }

+

+}

diff --git a/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/UserList.java b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/UserList.java
new file mode 100644
index 0000000..526ca1d
--- /dev/null
+++ b/rampart_1_1/modules/samples/servicelifecycle/src/sample/servicelifecycle/bean/UserList.java
@@ -0,0 +1,69 @@
+package sample.servicelifecycle.bean;

+

+import org.apache.axis2.AxisFault;

+

+import java.util.HashMap;

+import java.util.Iterator;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class UserList {

+    private HashMap userList;

+    private HashMap loggedUsers;

+

+    public UserList() {

+        this.userList = new HashMap();

+        loggedUsers = new HashMap();

+    }

+

+    public void addUser(User user) throws AxisFault {

+        if (userList.get(user.getUserName().trim()) != null) {

+            throw new AxisFault("User has already registered.");

+        }

+        userList.put(user.getUserName(), user);

+    }

+

+    public boolean login(String userName, String passWord) throws AxisFault {

+        User user = (User) userList.get(userName.trim());

+        if (user == null) {

+            throw new AxisFault("user has not registerd");

+        }

+        if (user.getPassWord().equals(passWord)) {

+            loggedUsers.put(userName, user);

+            return true;

+        } else {

+            throw new AxisFault("Invalid user , pass owrd incorrect");

+        }

+    }

+

+    public boolean isLogged(String userName) {

+        User user = (User) loggedUsers.get(userName.trim());

+        return user != null;

+    }

+

+    public User[] getUsers() {

+        User [] users = new User[userList.size()];

+        Iterator users_itr = userList.values().iterator();

+        int count = 0;

+        while (users_itr.hasNext()) {

+            users[count] = (User) users_itr.next();

+            count ++;

+        }

+        return users;

+    }

+}

diff --git a/rampart_1_1/modules/samples/soapwithattachments/README.txt b/rampart_1_1/modules/samples/soapwithattachments/README.txt
new file mode 100644
index 0000000..d54b8a6
--- /dev/null
+++ b/rampart_1_1/modules/samples/soapwithattachments/README.txt
@@ -0,0 +1,58 @@
+Sample: SOAP with Attachments

+================================

+

+Introduction

+============

+This sample demonstrates the capabilities and power of SOAP with Attachment support and the

+Attachment API of AXIS2. More information about Axis2 attachment implementation can be found at 

+http://ws.apache.org/axis2/1_1/mtom-guide.html. 

+

+This sample includes a service and a client which can be used to upload a file to the server using 

+SOAP message containing a SOAP with Attachment type binary attachment. The service is written and 

+deployed using the RCPMessageReceiver and a POJO(Plain Old Java Object). The POJO service class uses 

+the Attachment API of the MessageContext to retrieve the received attachment.The client program is 

+written using the OperationClient API of Axis2 together with the Attachment API of MessageContext.

+

+

+Objectives

+==========

+

+ * Writing a POJO (Plain Old Java Object) based service to access attachments.

+ * Implement a Axis2 OperationClient based Web Service client to invoke the service with SOAP 

+   with Attachment type attachments.

+ * Invoke the deployed service.

+

+Prerequisites

+=============

+Install Apache Ant 1.6.2 or later

+

+

+Running the Sample:

+===================

+The files belonging to this sample are contained in the samples/soapwithattachments folder of the 

+extracted Axis2 binary distribution, which will be called here after as SWA_SAMPLE_DIR. The 

+location of the extracted binary distribution will be refered as AXIS2_DIST. There is a 

+"build.xml" Ant script in the SWA_SAMPLE_DIR that contains build targets for building the service 

+archive and running the client application - all described in steps below. 

+

+1. Generate the service

+Use "ant generate.service" command in the SWA_SAMPLE_DIR to build the service. Generated service 

+will automatically gets copied in to the AXIS2_DIST/repository/services directory. Source file 

+ralating to this service can be found at 

+SWA_SAMPLE_DIR/src/sample/soapwithattachments/service/AttachmentService.java. The services.xml used

+when building this service can be found at SWA_SAMPLE_DIR/resources directory. 

+

+2. Deploy the service

+Run the AXIS2_DIST/bin/axis2server.{sh.bat} script to start the standalone axis2 server. This server 

+will deploy all the srvices available at AXIS2_DIST/repository/services directory. Alternatively you

+can drop the sample-swa.aar service archive to the services directory of a running Axis2 servlet)

+

+3. Running the client

+Use "ant run.client -Dfile <file to be send> -Ddest <destination file name>" command in the 

+SWA_SAMPLE_DIR to build and run the client. Source file ralating to the client can be found at 

+SWA_SAMPLE_DIR/src/sample/soapwithattachments/client/SWAClient.java.

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

+

diff --git a/rampart_1_1/modules/samples/soapwithattachments/build.xml b/rampart_1_1/modules/samples/soapwithattachments/build.xml
new file mode 100644
index 0000000..64c32c5
--- /dev/null
+++ b/rampart_1_1/modules/samples/soapwithattachments/build.xml
@@ -0,0 +1,65 @@
+<project name="SOAPWithAttachmentsSample" default="generate.service">
+	<property environment="env" />
+	<property name="axis2.home" value="../../" />
+	<property name="axis2.repo" value="${axis2.home}/repository" />
+	<property name="build.dir" value="build" />
+	<property name="client.classes.dir" value="${build.dir}/classes" />
+	<path id="axis.classpath">
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+		<pathelement location="build/swaSampleClient.jar" />
+	</path>
+
+	<target name="generate.service" depends="compile">
+		<jar destfile="${build.dir}/sample-swa.aar">	
+			<fileset dir="resources/">
+				<include name="META-INF/services.xml" />
+			</fileset>
+			<fileset dir="${build.dir}/classes">
+				<include name="sample/soapwithattachments/service/**/*.class" />
+			</fileset>
+		</jar>
+		<copy file="${build.dir}/sample-swa.aar" tofile="${axis2.home}/repository/services/sample-swa.aar" overwrite="true" />
+	</target>
+
+	<target name="compile">
+		<mkdir dir="${client.classes.dir}" />
+		<!-- Compile client -->
+		<javac debug="on"  srcdir="src" destdir="${client.classes.dir}">
+			<classpath refid="axis.classpath" />
+		</javac>
+	</target>
+	<target name="check-parameters">
+		<condition property="parameters.set">
+			<and>
+				<isset property="dest" />
+				<isset property="file" />
+			</and>
+		</condition>
+		<!-- This is a hack to get a if-else working in ant. Some much more "ANTy" person is welcome to improve this -->
+		<antcall target="print-usage" />
+	</target>
+
+	<target name="print-usage" unless="parameters.set">
+		<echo message="ant -Dfile &lt;file to be transfered&gt;  -Ddest &lt;name of the destination file&gt;" />
+	</target>
+
+	<target name="run.client" depends="compile,check-parameters" if="parameters.set">
+		<jar destfile="${build.dir}/swaSampleClient.jar">
+			<fileset dir="${build.dir}/classes">
+				<include name="sample/soapwithattachments/client/**/*.class" />
+			</fileset>
+		</jar>
+		<java classname="sample.soapwithattachments.client.SWAClient" classpathref="axis.classpath" fork="true">
+			<arg value="-file" />
+			<arg value="${file}" />
+			<arg value="-dest" />
+			<arg value="${dest}" />
+			<jvmarg value="-Daxis2.repo=${axis2.repo}" />
+		</java>
+	</target>
+	<target name="clean">
+		<delete dir="build" />
+	</target>
+</project>
diff --git a/rampart_1_1/modules/samples/soapwithattachments/resources/META-INF/services.xml b/rampart_1_1/modules/samples/soapwithattachments/resources/META-INF/services.xml
new file mode 100755
index 0000000..d1ee812
--- /dev/null
+++ b/rampart_1_1/modules/samples/soapwithattachments/resources/META-INF/services.xml
@@ -0,0 +1,10 @@
+<service name="SWASampleService">
+    <description>
+        This is a sample Web Service for illustrating Attachments API of Axis2
+    </description>
+    <parameter name="ServiceClass" locked="false">sample.soapwithattachments.service.AttachmentService</parameter>
+    <operation name="uploadFile">
+        <actionMapping>urn:uploadFile</actionMapping>
+        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+    </operation>
+</service>
diff --git a/rampart_1_1/modules/samples/soapwithattachments/src/sample/soapwithattachments/client/SWAClient.java b/rampart_1_1/modules/samples/soapwithattachments/src/sample/soapwithattachments/client/SWAClient.java
new file mode 100755
index 0000000..ed36dc1
--- /dev/null
+++ b/rampart_1_1/modules/samples/soapwithattachments/src/sample/soapwithattachments/client/SWAClient.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2004,2005 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 sample.soapwithattachments.client;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.List;
+import java.util.Map;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.util.OptionsValidator;
+import org.apache.axis2.wsdl.WSDLConstants;
+
+public class SWAClient {
+
+	private static EndpointReference targetEPR = new EndpointReference(
+			"http://localhost:8080/axis2/services/SWASampleService");
+
+	public static void main(String[] args) throws Exception {
+		CommandLineOptionParser optionsParser = new CommandLineOptionParser(
+				args);
+		List invalidOptionsList = optionsParser
+				.getInvalidOptions(new OptionsValidator() {
+					public boolean isInvalid(CommandLineOption option) {
+						String optionType = option.getOptionType();
+						return !("dest".equalsIgnoreCase(optionType) || "file"
+								.equalsIgnoreCase(optionType));
+					}
+				});
+
+		if ((invalidOptionsList.size() > 0) || (args.length != 4)) {
+			// printUsage();
+			System.out
+					.println("Invalid Parameters.  Usage -file <file to be send> -dest <destination file>");
+			return;
+		}
+
+		Map optionsMap = optionsParser.getAllOptions();
+
+		CommandLineOption fileOption = (CommandLineOption) optionsMap
+				.get("file");
+		CommandLineOption destinationOption = (CommandLineOption) optionsMap
+				.get("dest");
+		File file = new File(fileOption.getOptionValue());
+		if (file.exists())
+			transferFile(file, destinationOption.getOptionValue());
+		else
+			throw new FileNotFoundException();
+	}
+
+	public static void transferFile(File file, String destinationFile)
+			throws Exception {
+
+		Options options = new Options();
+		options.setTo(targetEPR);
+		options.setProperty(Constants.Configuration.ENABLE_SWA,
+				Constants.VALUE_TRUE);
+		options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+		// Increase the time out when sending large attachments
+		options.setTimeOutInMilliSeconds(10000);
+		options.setTo(targetEPR);
+		options.setAction("urn:uploadFile");
+
+		// assume the use runs this sample at
+		// <axis2home>/samples/soapwithattachments/ dir
+		ConfigurationContext configContext = ConfigurationContextFactory
+				.createConfigurationContextFromFileSystem("../../repository",
+						null);
+
+		ServiceClient sender = new ServiceClient(configContext, null);
+		sender.setOptions(options);
+		OperationClient mepClient = sender
+				.createClient(ServiceClient.ANON_OUT_IN_OP);
+
+		MessageContext mc = new MessageContext();
+		FileDataSource fileDataSource = new FileDataSource(file);
+
+		// Create a dataHandler using the fileDataSource. Any implementation of
+		// javax.activation.DataSource interface can fit here.
+		DataHandler dataHandler = new DataHandler(fileDataSource);
+		String attachmentID = mc.addAttachment(dataHandler);
+
+		SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
+		SOAPEnvelope env = fac.getDefaultEnvelope();
+		OMNamespace omNs = fac.createOMNamespace(
+				"http://service.soapwithattachments.sample/xsd", "swa");
+		OMElement uploadFile = fac.createOMElement("uploadFile", omNs);
+		OMElement nameEle = fac.createOMElement("name", omNs);
+		nameEle.setText(destinationFile);
+		OMElement idEle = fac.createOMElement("attchmentID", omNs);
+		idEle.setText(attachmentID);
+		uploadFile.addChild(nameEle);
+		uploadFile.addChild(idEle);
+		env.getBody().addChild(uploadFile);
+		mc.setEnvelope(env);
+
+		mepClient.addMessageContext(mc);
+		mepClient.execute(true);
+		MessageContext response = mepClient
+				.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+	  	SOAPBody body = response.getEnvelope().getBody();
+	  	OMElement element = body.getFirstElement().getFirstChildWithName(new QName("return"));
+		System.out.println(element.getText());
+	}
+}
diff --git a/rampart_1_1/modules/samples/soapwithattachments/src/sample/soapwithattachments/service/AttachmentService.java b/rampart_1_1/modules/samples/soapwithattachments/src/sample/soapwithattachments/service/AttachmentService.java
new file mode 100755
index 0000000..9e32d66
--- /dev/null
+++ b/rampart_1_1/modules/samples/soapwithattachments/src/sample/soapwithattachments/service/AttachmentService.java
@@ -0,0 +1,28 @@
+package sample.soapwithattachments.service;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import javax.activation.DataHandler;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axis2.context.MessageContext;
+
+public class AttachmentService {
+
+	public String uploadFile(String name, String attchmentID) throws IOException
+	{
+        MessageContext msgCtx = MessageContext.getCurrentMessageContext();
+        Attachments attachment = msgCtx.getAttachmentMap();
+        DataHandler dataHandler = attachment.getDataHandler(attchmentID);
+        File file = new File(
+				name);
+		FileOutputStream fileOutputStream = new FileOutputStream(file);
+		dataHandler.writeTo(fileOutputStream);
+		fileOutputStream.flush();
+		fileOutputStream.close();
+		
+		return "File saved succesfully.";
+	}
+
+}
diff --git a/rampart_1_1/modules/samples/userguide/README.txt b/rampart_1_1/modules/samples/userguide/README.txt
new file mode 100644
index 0000000..c43886e
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/README.txt
@@ -0,0 +1,80 @@
+Axis2 User's Guide Sample

+=========================

+

+This sample contains the source code relevant to xdocs/1_1/userguide.html, 

+more specifically to xdocs/1_1/dii.html and xmlbased-server.html which are sections 

+of Axis2 User's Guide found in the Dcouments Distribution.

+

+The sample explains how to write a Web service and Web service client with 

+Apache Axis2 using XML based client APIs (Axis2's Primary APIs).

+

+Introduction

+============

+

+The following sample clients are located at 

+Axis2_home/samples/userguide/samples/userguide/src/userguide/clients directory. 

+

+EchoBlockingClient.java -- Demonstrates the request-response, blocking client which 

+is written using Axis2's primary APIs.

+

+EchoBlockingDualClient.java -- Demonstrates the request-response, blocking client which 

+uses two transport connections and written using Axis2's primary APIs.

+

+EchoNonBlockingClient.java -- Demonstrates the request-response, non-blocking invocation 

+which is written using Axis2's primary APIs.

+

+EchoNonBlockingDualClient.java -- Demonstrates the request-response, non-blocking invocation 

+using two transport connections and is written using Axis2's primary APIs.

+

+MailClient.java -- Represents a client for invoking 

+

+PingClient.java -- Represents a simple one-way client which is written using Axis2's primary APIs.

+

+RESTClient.java -- Represents a client for invoking a REST Web service

+

+TCPClient.java -- Demonstrates a client for invoking a Web service using TCP

+

+example1, example2 and example3 directories inside Axis2_home/samples/userguide/src/userguide 

+contain the Web services which are invoked by the above clients.

+

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Building the Service

+====================

+

+* Type "ant generate.service" or just "ant" from Axis2_HOME/samples/userguide

+* Then go to Axis2_HOME/bin directory and run either axis2server.bat or axis2server.sh depending on your platform.

+

+Alternatively you can copy the the generated service archives in to a servlet container.

+

+If you go to http://localhost:8080/axis2/, you should see MyService, MyServiceWithModule are deployed. 

+

+

+Running the Clients

+===================

+

+Type the following ant commands from Axis2_HOME/samples/userguide to run the clients one by one.

+

+ * "ant run.client.blocking"

+   This invokes MyService through a request-response, blocking client.   

+ * "ant run.client.blockingdual"

+   This invokes MyService through a request-response, blocking client via dual transport channels.   

+ * "ant run.client.nonblocking"

+   This invokes MyService through a request-response, non-blocking client.  

+ * "ant run.client.nonblockingdual"

+   This invokes MyService through a request-response, non-blocking client via dual transport channels.   

+ * "ant run.client.ping"

+   This invokes MyService through a one-way client

+

+ 

+You can find more information on the above clients in Axis2 users guide, RESTFul Web services support, 

+TCP Transport documents found in the Documents Distribution's xdocs directory. Also, you may find it 

+useful to try out the above services and clients while going through these documents.

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

diff --git a/rampart_1_1/modules/samples/userguide/build.xml b/rampart_1_1/modules/samples/userguide/build.xml
new file mode 100644
index 0000000..926edc4
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/build.xml
@@ -0,0 +1,124 @@
+<project name="samples" default="generate.service">
+    <property name="mainDir" value="../.."/>
+    <property name="classes.dir" value="build/classes"/>
+    <path id="axis.classpath">
+        <fileset dir="../../lib">
+            <include name="*.jar"/>
+        </fileset>
+        <pathelement location="build/userguide.jar"/>
+    </path>
+
+    <target name="run.client.all"
+            depends="run.client.ping,run.client.blocking,run.client.blockingdual,run.client.nonblocking,run.client.nonblockingdual,run.client.servicewithmodule">
+    </target>
+    
+    <target name="compile">
+    		<mkdir dir="${classes.dir}" />
+		<javac srcdir="src" destdir="${classes.dir}">
+			<classpath refid="axis.classpath" />
+		</javac>
+		<jar destfile="build/userguide.jar">
+            		<fileset dir="${classes.dir}">
+                		<include name="userguide/**"/>
+            		</fileset>
+       		</jar>
+    </target>
+    
+    <target name="generate.service" depends="compile">
+            <jar destfile="build/MyService.aar">
+            <fileset dir="src/userguide/example1/">
+                <include name="META-INF/**"/>
+            </fileset>
+            <fileset dir="${classes.dir}">
+                <include name="userguide/example1/**/*.class"/>
+            </fileset>
+        </jar>
+        <copy file="build/MyService.aar" tofile="../../repository/services/sample-MyService.aar" overwrite="true"/>
+        <jar destfile="build/MyServiceWithModule.aar" >
+            <fileset dir="src/userguide/example2/">
+                <include name="META-INF/**"/>
+            </fileset>
+            <fileset dir="${classes.dir}">
+                <include name="userguide/example2/**/*.class"/>
+            </fileset>
+        </jar>
+        <copy file="build/MyServiceWithModule.aar" tofile="../../repository/services/sample-MyServiceWithModule.aar" overwrite="true"/>
+        <jar destfile="build/WsaMappingService.aar">
+            <fileset dir="src/userguide/example3/">
+                <include name="META-INF/**"/>
+            </fileset>
+            <fileset dir="${classes.dir}">
+                <include name="userguide/example3/**/*.class"/>
+            </fileset>
+        </jar>
+        <copy file="build/WsaMappingService.aar" tofile="../../repository/services/sample-WsaMappingService.aar" overwrite="true"/>
+    </target>
+    
+    <target name="generate.module">
+       <jar destfile="build/logging.mar">
+            <fileset dir="src/userguide/loggingmodule/">
+                <include name="META-INF/**"/>
+            </fileset>
+            <fileset dir="${classes.dir}">
+                <include name="userguide/loggingmodule/**/*.class"/>
+            </fileset>
+       </jar>
+       <copy file="build/logging.mar" tofile="../../repository/modules/sample-logging.mar" overwrite="true"/>
+       <echo message="*** Please add the logging phase to the ../../conf/axis2.xml. For more details please refer to the http://ws.apache.org/axis2/1_1/modules.html ***"/>
+    </target>
+
+    <target name="run.client.blocking" depends="compile">
+        <java classname="userguide.clients.EchoBlockingClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}/repository"/>
+        </java>
+    </target>
+    <target name="run.client.blockingdual" depends="compile">
+        <java classname="userguide.clients.EchoBlockingDualClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}/repository"/>
+        </java>
+    </target>
+    
+    <target name="run.client.nonblocking" depends="compile">
+        <java classname="userguide.clients.EchoNonBlockingClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}/repository"/>
+        </java>
+    </target>
+    
+    <target name="run.client.nonblockingdual" depends="compile">
+        <java classname="userguide.clients.EchoNonBlockingDualClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}/repository"/>
+        </java>
+    </target>
+    
+    <target name="run.client.ping" depends="compile">
+        <java classname="userguide.clients.PingClient"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}/repository"/>
+        </java>
+    </target>
+    
+    <target name="run.client.servicewithmodule" depends="compile">
+        <java classname="userguide.clients.ClientForWebServiceWithModule"
+              classpathref="axis.classpath" fork="true">
+            <jvmarg value="-Daxis2.repo=${mainDir}/repository"/>
+        </java>
+    </target>
+    
+    <target name="run.client">
+	<echo message="Please use the following ant targets to run the clients" />
+	<echo message="run.client.ping" />
+	<echo message="run.client.blocking" />
+	<echo message="run.client.blockingdual" />
+	<echo message="run.client.nonblocking" />
+	<echo message="run.client.nonblockingdual" />
+	<echo message="run.client.servicewithmodule" />
+	<echo message="run.client.all  -  run all clients" />
+    </target>
+    <target name="clean">
+	<delete dir="build" />
+    </target>
+</project>
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientForWebServiceWithModule.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientForWebServiceWithModule.java
new file mode 100644
index 0000000..859e51b
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientForWebServiceWithModule.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import java.io.StringWriter;
+
+public class ClientForWebServiceWithModule {
+    private static EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:8080/axis2/services/MyServiceWithModule");
+
+    public static void main(String[] args) {
+        try {
+            OMElement payload = ClientUtil.getEchoOMElement();
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+            OMElement result = sender.sendReceive(payload);
+
+
+            StringWriter writer = new StringWriter();
+            result.serialize(XMLOutputFactory.newInstance()
+                    .createXMLStreamWriter(writer));
+            writer.flush();
+            System.out.println(writer.toString());
+
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (XMLStreamException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientSideModuleEngagement.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientSideModuleEngagement.java
new file mode 100644
index 0000000..c6570e6
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientSideModuleEngagement.java
@@ -0,0 +1,52 @@
+package userguide.clients;
+/*
+ * 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 org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.io.FileNotFoundException;
+
+/**
+ * Sample for engaged modules in Client side.
+ * Logging module has been used.
+ */
+public class ClientSideModuleEngagement {
+    public static void main(String[] args) throws Exception {
+        String home = System.getProperty("user.home");
+        // create this folder at your home. This folder could be anything
+        //then create the "modules" folder
+
+        File repository = new File(home + File.separator + "client-repository");
+        if (!repository.exists()) {
+            throw new FileNotFoundException("Repository Doesnot Exist");
+        }
+        //copy the LoggingModule.mar to "modules" folder.
+        //then modify the axis2.xml that is generating there according to
+        //phases that being included in the "module.xml"
+        ConfigurationContext configContext = ConfigurationContextFactory.
+                createConfigurationContextFromFileSystem(repository.getAbsolutePath(),
+                        repository.getName() + "/axis2.xml");
+        ServiceClient serviceClient = new ServiceClient(configContext, null);
+        serviceClient.engageModule(new QName("LoggingModule"));
+//        call.engageModule(new QName("LoggingModule"));
+    }
+}
+
+
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientUtil.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientUtil.java
new file mode 100644
index 0000000..bed4c26
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/ClientUtil.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+
+public class ClientUtil {
+
+    public static OMElement getEchoOMElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://example1.org/example1", "example1");
+        OMElement method = fac.createOMElement("echo", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createOMText(value, "Axis2 Echo String "));
+        method.addChild(value);
+
+        return method;
+    }
+
+    public static OMElement getPingOMElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://example1.org/example1", "example1");
+        OMElement method = fac.createOMElement("ping", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createOMText(value, "Axis2 Ping String "));
+        method.addChild(value);
+
+        return method;
+    }
+
+
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingClient.java
new file mode 100644
index 0000000..8e3e72a
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingClient.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+/**
+ * Sample for synchronous single channel blocking service invocation.
+ * Message Exchage Pattern IN-OUT
+ */
+public class EchoBlockingClient {
+    private static EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/MyService");
+
+    public static void main(String[] args) {
+        try {
+            OMElement payload = ClientUtil.getEchoOMElement();
+            Options options = new Options();
+            options.setTo(targetEPR);
+
+            //Blocking invocation
+            ServiceClient sender = new ServiceClient();
+            sender.setOptions(options);
+            OMElement result = sender.sendReceive(payload);
+
+            System.out.println(result);
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        }
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingDualClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingDualClient.java
new file mode 100644
index 0000000..5ca9ed2
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingDualClient.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLOutputFactory;
+import java.io.StringWriter;
+
+/**
+ * Sample for synchronous dual channel blocking service invocation.
+ * Message Exchage Pattern IN-OUT
+ */
+public class EchoBlockingDualClient {
+    private static EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:8080/axis2/services/MyService");
+
+    public static void main(String[] args) {
+        ServiceClient sender = null;
+        try {
+            OMElement payload = ClientUtil.getEchoOMElement();
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setAction("urn:echo");
+            //The boolean flag informs the axis2 engine to use two separate transport connection
+            //to retrieve the response.
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setUseSeparateListener(true);
+
+            //Blocking Invocation
+            sender = new ServiceClient();
+            sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
+            sender.setOptions(options);
+            OMElement result = sender.sendReceive(payload);
+
+            StringWriter writer = new StringWriter();
+            result.serialize(XMLOutputFactory.newInstance()
+                    .createXMLStreamWriter(writer));
+            writer.flush();
+            System.out.println(writer.toString());
+
+            //Need to close the Client Side Listener.
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        } finally{
+            try {
+                sender.cleanup();
+            } catch (AxisFault axisFault) {
+                //
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingWsaBasedClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingWsaBasedClient.java
new file mode 100644
index 0000000..33286d8
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoBlockingWsaBasedClient.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+import java.io.StringWriter;
+
+/**
+ * To run this sample you have to deploy WsaMappingService.aar to the
+ * service folder.
+ */
+public class EchoBlockingWsaBasedClient {
+
+    private static EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/WsaMappingTest");
+
+    private static OMElement getBody() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac
+                .createOMNamespace("http://example1.org/example1", "example1");
+        OMElement id = fac.createOMElement("id", omNs);
+        id.addChild(fac.createOMText(id, "Axis2"));
+        return id;
+    }
+
+    public static void main(String[] args) throws Exception {
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        //Blocking invocation via wsa mapping
+        options.setAction("urn:sample/echo");
+
+        ServiceClient sender = new ServiceClient();
+        sender.setOptions(options);
+        OMElement result = sender.sendReceive(getBody());
+
+        StringWriter writer = new StringWriter();
+        result.serialize(writer);
+        writer.flush();
+
+        System.out.println(writer.toString());
+
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoNonBlockingClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoNonBlockingClient.java
new file mode 100644
index 0000000..e89af0c
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoNonBlockingClient.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+
+/**
+ * Sample for asynchronous single channel non-blocking service invocation.
+ * Message Exchage Pattern IN-OUT
+ */
+public class EchoNonBlockingClient {
+    private static EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:8080/axis2/services/MyService");
+
+    public static void main(String[] args) {
+        ServiceClient sender = null;
+        try {
+            OMElement payload = ClientUtil.getEchoOMElement();
+            Options options = new Options();
+            options.setTo(targetEPR);
+
+            //Callback to handle the response
+            Callback callback = new Callback() {
+                public void onComplete(AsyncResult result) {
+                    System.out.println(result.getResponseEnvelope());
+                }
+
+                public void onError(Exception e) {
+                    e.printStackTrace();
+                }
+            };
+
+            //Non-Blocking Invocation
+            sender = new ServiceClient();
+            sender.setOptions(options);
+            sender.sendReceiveNonBlocking(payload, callback);
+
+            //Wait till the callback receives the response.
+            while (!callback.isComplete()) {
+                Thread.sleep(1000);
+            }
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        } finally {
+            try {
+                sender.cleanup();
+            } catch (AxisFault axisFault) {
+                //
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoNonBlockingDualClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoNonBlockingDualClient.java
new file mode 100644
index 0000000..185bf22
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/EchoNonBlockingDualClient.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Sample for asynchronous dual channel non-blocking service invocation.
+ * Message Exchage Pattern IN-OUT
+ * Ulitmate asynchronous service invocation sample.
+ */
+public class EchoNonBlockingDualClient {
+    private static EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:8080/axis2/services/MyService");
+
+    public static void main(String[] args) {
+        ServiceClient sender = null;
+        try {
+            OMElement payload = ClientUtil.getEchoOMElement();
+
+            Options options = new Options();
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+            options.setUseSeparateListener(true);
+            options.setAction("urn:echo");  // this is the action mapping we put within the service.xml
+
+            //Callback to handle the response
+            Callback callback = new Callback() {
+                public void onComplete(AsyncResult result) {
+                    System.out.println(result.getResponseEnvelope());
+                }
+
+                public void onError(Exception e) {
+                    e.printStackTrace();
+                }
+            };
+
+            //Non-Blocking Invocation
+            sender = new ServiceClient();
+            sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
+            sender.setOptions(options);
+            sender.sendReceiveNonBlocking(payload, callback);
+
+            //Wait till the callback receives the response.
+            while (!callback.isComplete()) {
+                Thread.sleep(1000);
+            }
+            //Need to close the Client Side Listener.
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        } finally {
+            try {
+                sender.cleanup();
+            } catch (AxisFault axisFault) {
+                //have to ignore this
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/MailClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/MailClient.java
new file mode 100644
index 0000000..ec24a6e
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/MailClient.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+/**
+ * This is a Client progam that accesses 'MyService' web service in Axis2 samples
+ * @deprecated 
+ */
+public class MailClient {
+
+    private static String toEpr = "http://localhost:8080/axis2/services/myservice";
+
+    public static void main(String[] args) throws AxisFault {
+        Options options = new Options();
+        options.setTo(
+                new EndpointReference(toEpr));
+        ServiceClient servicClient = new ServiceClient();
+
+        servicClient.setOptions(options);
+
+        servicClient.sendRobust(getPayload());
+    }
+
+    private static OMElement getPayload() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://example1.org/example1", "example1");
+        OMElement method = fac.createOMElement("echo", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createOMText(value, "Axis2 Echo String "));
+        method.addChild(value);
+
+        return method;
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/PingClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/PingClient.java
new file mode 100644
index 0000000..08530e0
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/PingClient.java
@@ -0,0 +1,55 @@
+/*
+ * 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 userguide.clients;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+/**
+ * Sample for fire-and-forget service invocation
+ * Message Exchage Pattern IN-Only
+ */
+public class PingClient {
+    private static EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/MyService");
+
+    public static void main(String[] args) {
+        try {
+            OMElement payload = ClientUtil.getPingOMElement();
+            ServiceClient serviceClient = new ServiceClient();
+
+            Options options = new Options();
+            serviceClient.setOptions(options);
+            options.setTo(targetEPR);
+
+            serviceClient.fireAndForget(payload);
+            /**
+             * We have to bock this thread untill we send the request , the problem
+             * is if we go out of the main thread , then request wont send ,so
+             * you have to wait some time :)
+             */
+          Thread.sleep(500);
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        } catch (InterruptedException e) {
+            //
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/RESTClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/RESTClient.java
new file mode 100644
index 0000000..7353d2e
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/RESTClient.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * This is a Client progam that accesses 'MyService' web service in Axis2 samples
+ */
+public class RESTClient {
+
+    private static String toEpr = "http://localhost:8080/axis2/rest/MyService";
+
+    public static void main(String[] args) throws AxisFault {
+
+        Options options = new Options();
+        options.setTo(new EndpointReference(toEpr));
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+        options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);
+
+        ServiceClient sender = new ServiceClient();
+        sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
+        sender.setOptions(options);
+        OMElement result = sender.sendReceive(getPayload());
+
+        try {
+            XMLStreamWriter writer = XMLOutputFactory.newInstance()
+                    .createXMLStreamWriter(System.out);
+            result.serialize(writer);
+            writer.flush();
+        } catch (XMLStreamException e) {
+            e.printStackTrace();
+        } catch (FactoryConfigurationError e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    private static OMElement getPayload() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://example1.org/example1", "example1");
+        OMElement method = fac.createOMElement("echo", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createOMText(value, "Axis2 Echo String "));
+        method.addChild(value);
+
+        return method;
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/clients/TCPClient.java b/rampart_1_1/modules/samples/userguide/src/userguide/clients/TCPClient.java
new file mode 100644
index 0000000..21c8783
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/clients/TCPClient.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2004,2005 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 userguide.clients;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * This is a Client progam that accesses 'MyService' web service in Axis2 samples
+ */
+public class TCPClient {
+
+    private static String toEpr = "tcp://localhost:8080/axis2/services/MyService";
+
+    public static void main(String[] args) throws AxisFault {
+
+        Options options = new Options();
+        options.setTo(new EndpointReference(toEpr));
+        options.setTransportInProtocol(Constants.TRANSPORT_TCP);
+        options.setAction("urn:echo");
+
+        ServiceClient sender = new ServiceClient();
+        sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
+        sender.setOptions(options);
+        OMElement result = sender.sendReceive(getPayload());
+
+        try {
+            XMLStreamWriter writer = XMLOutputFactory.newInstance()
+                    .createXMLStreamWriter(System.out);
+            result.serialize(writer);
+            writer.flush();
+        } catch (XMLStreamException e) {
+            e.printStackTrace();
+        } catch (FactoryConfigurationError e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    private static OMElement getPayload() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "tcp://localhost:8080/axis2/services/MyService", "example1");
+        OMElement method = fac.createOMElement("echo", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createOMText(value, "Axis2 Echo String "));
+        method.addChild(value);
+
+        return method;
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/example1/META-INF/services.xml b/rampart_1_1/modules/samples/userguide/src/userguide/example1/META-INF/services.xml
new file mode 100644
index 0000000..8cd6114
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/example1/META-INF/services.xml
@@ -0,0 +1,14 @@
+<service name="MyService">
+    <description>
+        This is a sample Web Service with two operations,echo and ping.
+    </description>
+    <parameter name="ServiceClass" locked="false">userguide.example1.MyService</parameter>
+    <operation name="echo">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+        <actionMapping>urn:echo</actionMapping>
+    </operation>
+    <operation name="ping">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <actionMapping>urn:ping</actionMapping>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/example1/MyService.java b/rampart_1_1/modules/samples/userguide/src/userguide/example1/MyService.java
new file mode 100644
index 0000000..9aace4a
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/example1/MyService.java
@@ -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 userguide.example1;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+
+import javax.xml.stream.XMLStreamException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Jaliya
+ * Date: Jun 2, 2005
+ * Time: 2:17:58 PM
+ */
+public class MyService {
+    public OMElement echo(OMElement element) throws XMLStreamException {
+        //Praparing the OMElement so that it can be attached to another OM Tree.
+        //First the OMElement should be completely build in case it is not fully built and still
+        //some of the xml is in the stream.
+        element.build();
+        //Secondly the OMElement should be detached from the current OMTree so that it can be attached
+        //some other OM Tree. Once detached the OmTree will remove its connections to this OMElement.
+        element.detach();
+        return element;
+    }
+
+    public void ping(OMElement element) throws XMLStreamException {
+        //Do some processing
+    }
+    public void pingF(OMElement element) throws AxisFault{
+        throw new AxisFault("Fault being thrown");
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/example2/META-INF/services.xml b/rampart_1_1/modules/samples/userguide/src/userguide/example2/META-INF/services.xml
new file mode 100644
index 0000000..4f0c391
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/example2/META-INF/services.xml
@@ -0,0 +1,13 @@
+<service name="MyServiceWithModule">
+    <description>
+        This is a sample Web Service with a logging module engaged.
+    </description>
+    <module ref="logging"/>
+    <parameter name="ServiceClass" locked="false">userguide.example2.MyService</parameter>
+    <operation name="echo">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+    <operation name="ping">
+        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/example2/MyService.java b/rampart_1_1/modules/samples/userguide/src/userguide/example2/MyService.java
new file mode 100644
index 0000000..588092f
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/example2/MyService.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2004,2005 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 userguide.example2;
+
+import org.apache.axiom.om.OMElement;
+
+import javax.xml.stream.XMLStreamException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Jaliya
+ * Date: Jun 2, 2005
+ * Time: 2:17:58 PM
+ */
+public class MyService {
+    public OMElement echo(OMElement element) throws XMLStreamException {
+        //Praparing the OMElement so that it can be attached to another OM Tree.
+        //First the OMElement should be completely build in case it is not fully built and still
+        //some of the xml is in the stream.
+        element.build();
+        //Secondly the OMElement should be detached from the current OMTree so that it can be attached
+        //some other OM Tree. Once detached the OmTree will remove its connections to this OMElement.
+        element.detach();
+        return element;
+    }
+
+    public void ping(OMElement element) throws XMLStreamException {
+        //Do some processing
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/example3/META-INF/services.xml b/rampart_1_1/modules/samples/userguide/src/userguide/example3/META-INF/services.xml
new file mode 100644
index 0000000..32c5822
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/example3/META-INF/services.xml
@@ -0,0 +1,13 @@
+<serviceGroup>
+    <service name="WsaMappingTest">
+        <description>
+            Sample to via WSA Mapping
+        </description>
+        <parameter name="ServiceClass" locked="false">userguide.example3.MyService</parameter>
+        <operation name="echo">
+            <messageReceiver
+                    class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+            <actionMapping>urn:sample/echo</actionMapping>
+        </operation>
+    </service>
+</serviceGroup>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/example3/MyService.java b/rampart_1_1/modules/samples/userguide/src/userguide/example3/MyService.java
new file mode 100644
index 0000000..d88dd15
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/example3/MyService.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2004,2005 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 userguide.example3;
+
+import org.apache.axiom.om.OMElement;
+
+import javax.xml.stream.XMLStreamException;
+
+
+public class MyService {
+    public OMElement echo(OMElement element) throws XMLStreamException {
+            //Praparing the OMElement so that it can be attached to another OM Tree.
+            //First the OMElement should be completely build in case it is not fully built and still
+            //some of the xml is in the stream.
+            element.build();
+            //Secondly the OMElement should be detached from the current OMTree so that it can be attached
+            //some other OM Tree. Once detached the OmTree will remove its connections to this OMElement.
+            element.detach();
+            return element;
+        }
+
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/LogHandler.java b/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/LogHandler.java
new file mode 100644
index 0000000..d4e2b52
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/LogHandler.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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 userguide.loggingmodule;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+
+public class LogHandler extends AbstractHandler implements Handler {
+	private static final Log log = LogFactory.getLog(LogHandler.class);
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        log.info(msgContext.getEnvelope().toString());
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public void revoke(MessageContext msgContext) {
+        log.info(msgContext.getEnvelope().toString());
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/LoggingModule.java b/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/LoggingModule.java
new file mode 100644
index 0000000..ad787fd
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/LoggingModule.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004,2005 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 userguide.loggingmodule;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisDescription;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.modules.Module;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Policy;
+
+public class LoggingModule implements Module {
+
+
+    // initialize the module
+    public void init(ConfigurationContext configContext, AxisModule module) throws AxisFault {
+    }
+
+    public void engageNotify(AxisDescription axisDescription) throws AxisFault {
+    }
+
+    // shutdown the module
+    public void shutdown(ConfigurationContext configurationContext) throws AxisFault {
+    }
+    
+    public String[] getPolicyNamespaces() {
+    	return null;	
+    }
+
+    public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault {
+    }
+		   
+    public boolean canSupportAssertion(Assertion assertion) {
+        return true;
+    }
+}
diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/META-INF/MANIFEST.MF b/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3a50b8f
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0

+Created-By: Ant 1.4.1

+

diff --git a/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/META-INF/module.xml b/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/META-INF/module.xml
new file mode 100644
index 0000000..0e377e4
--- /dev/null
+++ b/rampart_1_1/modules/samples/userguide/src/userguide/loggingmodule/META-INF/module.xml
@@ -0,0 +1,25 @@
+<module name="logging" class="userguide.loggingmodule.LoggingModule">
+    <InFlow>
+        <handler name="InFlowLogHandler" class="userguide.loggingmodule.LogHandler">
+            <order phase="loggingPhase"/>
+        </handler>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="OutFlowLogHandler" class="userguide.loggingmodule.LogHandler">
+            <order phase="loggingPhase"/>
+        </handler>
+    </OutFlow>
+
+    <OutFaultFlow>
+        <handler name="FaultOutFlowLogHandler" class="userguide.loggingmodule.LogHandler">
+            <order phase="loggingPhase"/>
+        </handler>
+    </OutFaultFlow>
+
+    <InFaultFlow>
+        <handler name="FaultInFlowLogHandler" class="userguide.loggingmodule.LogHandler">
+            <order phase="loggingPhase"/>
+        </handler>
+    </InFaultFlow>
+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/version/README.txt b/rampart_1_1/modules/samples/version/README.txt
new file mode 100644
index 0000000..27f8094
--- /dev/null
+++ b/rampart_1_1/modules/samples/version/README.txt
@@ -0,0 +1,28 @@
+Sample: Version

+===============

+

+Introduction

+============

+

+A simple service that returns a text which contains the version number and the built 

+date of the Axis2 Distribution used.

+

+In other words, this is a simple service used by many to test whether the distribution they got is setup 

+and working properly. It contains a single method that simply returns version and built 

+date of the Axis2 distribution used.

+

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Running the Sample

+==================

+

+Type $ant from Axis2_HOME/samples/version

+

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/version/build.xml b/rampart_1_1/modules/samples/version/build.xml
new file mode 100644
index 0000000..8641dd8
--- /dev/null
+++ b/rampart_1_1/modules/samples/version/build.xml
@@ -0,0 +1,46 @@
+
+<project basedir="." default="generate.service">
+	
+	<property name="dest.dir" value="build" />
+	
+	<property name="dest.dir.classes" value="${dest.dir}/classes" />
+	
+	<property name="axis2.home" value="../../" />
+	
+	<property name="repository.path" value="${axis2.home}/repository/services" />
+	
+	<path id="build.class.path">
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+	</path>
+	
+	<target name="clean">
+		<delete dir="${dest.dir}" />
+	</target>
+	
+	<target name="prepare">
+		
+		<mkdir dir="${dest.dir}" />
+		
+		<mkdir dir="${dest.dir.classes}" />
+		
+		<mkdir dir="${dest.dir.classes}/META-INF" />
+	
+	</target>
+	
+	<target name="generate.service" depends="clean,prepare">
+		
+		<copy file="src/sample/axisversion/META-INF/services.xml" tofile="${dest.dir.classes}/META-INF/services.xml" overwrite="true" />
+		
+		<javac srcdir="src" destdir="${dest.dir.classes}" includes="sample/axisversion/**">
+			<classpath refid="build.class.path" />
+		</javac>
+		
+		<jar basedir="${dest.dir.classes}" destfile="${dest.dir}/version.aar" />
+		
+		<copy file="${dest.dir}/version.aar" tofile="${repository.path}/version.aar" overwrite="true" />
+	
+	</target>
+	
+</project>
diff --git a/rampart_1_1/modules/samples/version/src/sample/axisversion/META-INF/services.xml b/rampart_1_1/modules/samples/version/src/sample/axisversion/META-INF/services.xml
new file mode 100644
index 0000000..ede8a7b
--- /dev/null
+++ b/rampart_1_1/modules/samples/version/src/sample/axisversion/META-INF/services.xml
@@ -0,0 +1,9 @@
+<service name="Version">
+    <description>
+        This service is to get the running Axis version
+    </description>
+    <parameter name="ServiceClass" locked="false">sample.axisversion.Version</parameter>
+    <operation name="getVersion">
+    <messageReceiver  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
+    </operation>
+</service>
\ No newline at end of file
diff --git a/rampart_1_1/modules/samples/version/src/sample/axisversion/Version.java b/rampart_1_1/modules/samples/version/src/sample/axisversion/Version.java
new file mode 100644
index 0000000..ef17543
--- /dev/null
+++ b/rampart_1_1/modules/samples/version/src/sample/axisversion/Version.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2004,2005 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 sample.axisversion;
+
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.OperationContext;
+
+public class Version {
+    public String getVersion() throws Exception {
+        return "Hello I am Axis2 version service ," +
+                " My version is " + org.apache.axis2.Version.getVersionText();
+    }
+}
diff --git a/rampart_1_1/modules/samples/wsdl/Axis2SampleDocLit.wsdl b/rampart_1_1/modules/samples/wsdl/Axis2SampleDocLit.wsdl
new file mode 100644
index 0000000..880ae29
--- /dev/null
+++ b/rampart_1_1/modules/samples/wsdl/Axis2SampleDocLit.wsdl
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://userguide.axis2.apache.org/Axis2SampleDocLit" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://userguide.axis2.apache.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://userguide.axis2.apache.org/Axis2SampleDocLit" name="Axis2SampleDocLitService">

+	<types>

+		<schema targetNamespace="http://userguide.axis2.apache.org/xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified">

+			<complexType name="ArrayOfstring_literal">

+				<sequence>

+					<element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>

+				</sequence>

+			</complexType>

+			<complexType name="SOAPStruct">

+				<all>

+					<element name="varFloat" type="xsd:float"/>

+					<element name="varInt" type="xsd:int"/>

+					<element name="varString" type="xsd:string"/>

+				</all>

+			</complexType>

+			<element name="echoStringParam" type="xsd:string"/>

+			<element name="echoIntParam" type="xsd:int"/>

+			<element name="echoStringReturn" type="xsd:string"/>

+			<element name="echoStringArrayParam" type="xsd1:ArrayOfstring_literal"/>

+			<element name="echoStringArrayReturn" type="xsd1:ArrayOfstring_literal"/>

+			<element name="echoStructParam" type="xsd1:SOAPStruct"/>

+			<element name="echoStructReturn" type="xsd1:SOAPStruct"/>

+		</schema>

+	</types>

+	<message name="echoString">

+		<part name="a" element="xsd1:echoStringParam"/>

+	</message>

+	<message name="echoStringResponse">

+		<part name="result" element="xsd1:echoStringReturn"/>

+	</message>

+	<message name="echoStringArray">

+		<part name="a" element="xsd1:echoStringArrayParam"/>

+	</message>

+	<message name="echoStringArrayResponse">

+		<part name="result" element="xsd1:echoStringArrayReturn"/>

+	</message>

+	<message name="echoStruct">

+		<part name="a" element="xsd1:echoStructParam"/>

+	</message>

+	<message name="echoStructResponse">

+		<part name="result" element="xsd1:echoStructReturn"/>

+	</message>

+	<portType name="Axis2SampleDocLitPortType">

+		<operation name="echoString">

+			<input name="echoString" message="tns:echoString"/>

+			<output name="echoStringResponse" message="tns:echoStringResponse"/>

+		</operation>

+		<operation name="echoStringArray">

+			<input name="echoStringArray" message="tns:echoStringArray"/>

+			<output name="echoStringArrayResponse" message="tns:echoStringArrayResponse"/>

+		</operation>

+		<operation name="echoStruct">

+			<input name="echoStruct" message="tns:echoStruct"/>

+			<output name="echoStructResponse" message="tns:echoStructResponse"/>

+		</operation>

+	</portType>

+	<binding name="Axis2SampleDocLitPortBinding" type="tns:Axis2SampleDocLitPortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<operation name="echoString">

+			<soap:operation soapAction="echoString" style="document"/>

+			<input>

+				<soap:body use="literal" namespace="http://userguide.axis2.apache.org/Axis2SampleDocLit"/>

+			</input>

+			<output>

+				<soap:body use="literal" namespace="http://userguide.axis2.apache.org/Axis2SampleDocLit"/>

+			</output>

+		</operation>

+		<operation name="echoStringArray">

+			<soap:operation soapAction="echoStringArray" style="document"/>

+			<input>

+				<soap:body use="literal" namespace="http://userguide.axis2.apache.org/Axis2SampleDocLit"/>

+			</input>

+			<output>

+				<soap:body use="literal" namespace="http://userguide.axis2.apache.org/Axis2SampleDocLit"/>

+			</output>

+		</operation>

+		<operation name="echoStruct">

+			<soap:operation soapAction="echoStruct" style="document"/>

+			<input>

+				<soap:body use="literal" namespace="http://userguide.axis2.apache.org/Axis2SampleDocLit"/>

+			</input>

+			<output>

+				<soap:body use="literal" namespace="http://userguide.axis2.apache.org/Axis2SampleDocLit"/>

+			</output>

+		</operation>

+	</binding>

+	<service name="Axis2SampleDocLitService">

+		<port name="Axis2SampleDocLitPort" binding="tns:Axis2SampleDocLitPortBinding">

+			<soap:address location="http://userguide.axis2.apache.org/stkv3/wsdl/Axis2SampleDocLit.wsdl"/>

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/samples/wsdl/perf.wsdl b/rampart_1_1/modules/samples/wsdl/perf.wsdl
new file mode 100644
index 0000000..2ad0fda
--- /dev/null
+++ b/rampart_1_1/modules/samples/wsdl/perf.wsdl
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://perf.samples" xmlns:intf="http://perf.samples" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://perf.samples">

+	<wsdl:types>

+		<schema elementFormDefault="qualified" targetNamespace="http://perf.samples" xmlns="http://www.w3.org/2001/XMLSchema">

+			<element name="inputElement">

+				<complexType>

+					<sequence>

+						<element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="outputElement" type="xsd:string"/>

+		</schema>

+	</wsdl:types>

+	<wsdl:message name="handleStringArrayResponse">

+		<wsdl:part name="output" element="impl:outputElement"/>

+	</wsdl:message>

+	<wsdl:message name="handleStringArrayRequest">

+		<wsdl:part name="input" element="impl:inputElement"/>

+	</wsdl:message>

+	<wsdl:portType name="PerfPortType">

+		<wsdl:operation name="handleStringArray" parameterOrder="input">

+			<wsdl:input name="handleStringArrayRequest" message="impl:handleStringArrayRequest"/>

+			<wsdl:output name="handleStringArrayResponse" message="impl:handleStringArrayResponse"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:binding name="PerformanceSoapBinding" type="impl:PerfPortType">

+		<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<wsdl:operation name="handleStringArray">

+			<wsdlsoap:operation soapAction="handleStringArray"/>

+			<wsdl:input>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<wsdlsoap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:service name="PerfSoapService">

+		<wsdl:port name="Performance" binding="impl:PerformanceSoapBinding">

+			<wsdlsoap:address location="http://localhost:8080/axis2/services/PerfPortType"/>

+		</wsdl:port>

+	</wsdl:service>

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/samples/yahoorestsearch/README.txt b/rampart_1_1/modules/samples/yahoorestsearch/README.txt
new file mode 100755
index 0000000..ab08e22
--- /dev/null
+++ b/rampart_1_1/modules/samples/yahoorestsearch/README.txt
@@ -0,0 +1,25 @@
+Sample for Yahoo - Search - REST

+=================================

+

+Introduction

+============

+

+Axis2 client API has facilities to invoke REST interfaces. The API to be used is almost the same

+as the one we use while invoking with REST.

+

+Yahoo provides a REST API to call its search service. This sample demonstrates how to call Yahoo

+search service using an Axis2 client.

+

+Pre-Requisites

+==============

+

+Apache Ant 1.6.2 or later

+

+Running The Sample

+==================

+

+Type "ant" from Axis2_HOME/samples/yahoorestsearch directory.

+

+Help

+====

+Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

diff --git a/rampart_1_1/modules/samples/yahoorestsearch/build.xml b/rampart_1_1/modules/samples/yahoorestsearch/build.xml
new file mode 100755
index 0000000..b2cfcdc
--- /dev/null
+++ b/rampart_1_1/modules/samples/yahoorestsearch/build.xml
@@ -0,0 +1,32 @@
+<project name="YahooRestSearchSample" default="run.client">
+	<property environment="env" />
+	<property name="axis2.home" value="../../" />
+	<property name="axis2.repo" value="${axis2.home}/repository" />
+	<property name="build.dir" value="build" />
+	<property name="client.classes.dir" value="${build.dir}/classes" />
+	<path id="axis.classpath">
+		<fileset dir="${axis2.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+		<pathelement location="build/yahooRESTSearch.jar" />
+	</path>
+
+	<target name="compile">
+		<mkdir dir="${client.classes.dir}" />
+		<!-- Compile client -->
+		<javac srcdir="src" destdir="${client.classes.dir}">
+			<classpath refid="axis.classpath" />
+		</javac>
+		<jar destfile="${build.dir}/yahooRESTSearch.jar">
+			<fileset dir="${build.dir}/classes" />
+		</jar>
+	</target>
+	<target name="run.client" depends="compile">
+		<java classname="sample.yahooservices.RESTSearch.RESTSearchClient" classpathref="axis.classpath" fork="true">
+			<jvmarg value="-Daxis2.repo=${axis2.repo}" />
+		</java>
+	</target>
+	<target name="clean">
+		<delete dir="build" />
+	</target>
+</project>
diff --git a/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/RESTSearchClient.java b/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/RESTSearchClient.java
new file mode 100644
index 0000000..b08286b
--- /dev/null
+++ b/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/RESTSearchClient.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2004,2005 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 sample.yahooservices.RESTSearch;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class RESTSearchClient extends JFrame {
+    public static int width;
+    public static int height;
+
+    public RESTSearchClient(String title) throws HeadlessException {
+        super(title);
+
+        this.getContentPane().add(new UserInterface(this));
+        this.setVisible(true);
+    }
+
+    public static void main(String[] args) {
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        width = screenSize.width;
+        height = screenSize.height;
+        RESTSearchClient form = new RESTSearchClient("Axis2 REST Search Client");
+
+        int left = (width) / 2;
+        int top = (height) / 2;
+        form.setLocation(left, top);
+        form.setSize(width, height);
+        form.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+        form.setVisible(true);
+    }
+}
diff --git a/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/RESTSearchModel.java b/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/RESTSearchModel.java
new file mode 100644
index 0000000..3e700b9
--- /dev/null
+++ b/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/RESTSearchModel.java
@@ -0,0 +1,111 @@
+/*
+* Copyright 2004,2005 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 sample.yahooservices.RESTSearch;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Iterator;
+
+public class RESTSearchModel {
+    /**
+     * HTML Header to desplay snippet text
+     */
+    private String beginHTML = "<HTML><HEAD><TITLE>Search Results</TITLE></HEAD><BODY>";
+
+    /**
+     * HTML footer
+     */
+    private String endHTML = "</BODY></HTML>";
+
+    /**
+     * Store the texts read by NavigationURL of soap
+     */
+    private String snippet;
+
+    public String searchYahoo(String query, String format) {
+        try {
+            snippet = beginHTML;
+            String epr = "http://api.search.yahoo.com/WebSearchService/V1/webSearch";
+
+            ServiceClient client = new ServiceClient();
+            Options options = new Options();
+            client.setOptions(options);
+            options.setTo(new EndpointReference(epr));
+            options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);
+            options.setProperty(Constants.Configuration.HTTP_METHOD, Constants.Configuration.HTTP_METHOD_GET);
+
+            //if post is through GET of HTTP
+            OMElement response = client.sendReceive(getPayloadForYahooSearchCall(query, format));
+            generateSnippet(response);
+            return snippet;
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            snippet = "<H2>Error occurred during the invocation to Yahoo search service</H2>" +
+                    "<p>" + e.getMessage() + "</p>" + endHTML;
+        }
+        return null;
+    }
+
+    private static OMElement getPayloadForYahooSearchCall(String queryStr, String formatStr) throws UnsupportedEncodingException {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMElement rootElement = fac.createOMElement("webSearch", null);
+
+        OMElement appId = fac.createOMElement("appid", null, rootElement);
+        appId.setText("ApacheRestDemo");
+
+        OMElement query = fac.createOMElement("query", null, rootElement);
+        query.setText(URLEncoder.encode(queryStr, "UTF-8"));
+
+        if (formatStr != null && formatStr.length() != 0) {
+            OMElement format = fac.createOMElement("format", null, rootElement);
+            format.setText(URLEncoder.encode(formatStr, "UTF-8"));
+        }
+        return rootElement;
+    }
+
+    private void generateSnippet(OMElement response) {
+        String title = null;
+        String summary = null;
+        String clickUrl = null;
+        String url = null;
+        OMElement result = null;
+        //get an iterator for Result elements
+        Iterator itr = response.getChildElements();
+        Iterator innerItr;
+        while (itr.hasNext()) {
+            result = (OMElement) itr.next();
+            innerItr = result.getChildElements();
+            title = ((OMElement) innerItr.next()).getText();
+            summary = ((OMElement) innerItr.next()).getText();
+            url = ((OMElement) innerItr.next()).getText();
+            clickUrl = ((OMElement) innerItr.next()).getText();
+            snippet += "<a href=" + clickUrl + ">" + title + "</a>" + "<br>" + summary +
+                    "<br>" + url + "<br>" + "<br>";
+        }
+        snippet += endHTML;
+    }
+}
+
diff --git a/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/UserInterface.java b/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/UserInterface.java
new file mode 100644
index 0000000..bf13f7c
--- /dev/null
+++ b/rampart_1_1/modules/samples/yahoorestsearch/src/sample/yahooservices/RESTSearch/UserInterface.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2004,2005 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 sample.yahooservices.RESTSearch;
+
+import javax.swing.*;
+import javax.swing.event.HyperlinkListener;
+import javax.swing.event.HyperlinkEvent;
+import java.awt.*;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+public class UserInterface extends JPanel implements HyperlinkListener {
+
+    private JEditorPane jep;
+    private JScrollPane scrollPane;
+
+    private JTextField schField;
+    private JTextField formatField;
+
+    private JButton schButton;
+    private JButton backButton;
+
+    private JLabel schLabel;
+    private JLabel formatLabel;
+
+
+    private RESTSearchModel model;
+    private RESTSearchClient parent;
+
+    private String response;
+    public UserInterface(RESTSearchClient parent) {
+        this.parent = parent;
+        model =  new RESTSearchModel();
+        initComponents();
+
+        schButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleSearch();
+            }
+        });
+
+        backButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleBack();
+            }
+        });
+
+        Container pane = parent.getContentPane();
+        pane.setLayout(null);
+
+        pane.add(schLabel);
+        pane.add(schField);
+        pane.add(formatLabel);
+        pane.add(formatField);
+        pane.add(backButton);
+        pane.add(schButton);
+        pane.add(scrollPane);
+    }
+
+    public void initComponents() {
+        schLabel = new JLabel("Search for");
+        schLabel.setBounds(20, 10, 80, 25);
+        schField = new JTextField();
+        schField.setBounds(90, 10, 250, 25);
+
+        formatLabel = new JLabel("format");
+        formatLabel.setBounds(350, 10, 50, 25);
+        formatField = new JTextField();
+        formatField.setBounds(400, 10, 100, 25);
+
+        backButton = new JButton("Back to Results");
+        backButton.setBounds(670, 10, 150, 25);
+        backButton.setEnabled(false);
+
+        schButton =  new JButton("Search");
+        schButton.setBounds(510, 10, 150, 25);
+
+
+        jep = new JEditorPane();
+        jep.setEditable(false);
+        jep.setContentType("text/html");
+        jep.addHyperlinkListener(this);
+
+        scrollPane = new JScrollPane(jep);
+        scrollPane.setBounds(10, 80, (RESTSearchClient.width - 30), (RESTSearchClient.height - 160));
+
+
+    }
+
+    private void handleSearch(){
+        String query = schField.getText();
+
+        if(!query.equals("")){
+            response = model.searchYahoo(query, formatField.getText());
+            jep.setText(response);
+        }
+    }
+
+    private void handleBack(){
+        jep.setText(response);
+        backButton.setEnabled(false);
+    }
+
+    public void hyperlinkUpdate(HyperlinkEvent he) {
+        if (he.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+            try {
+                jep.setPage(he.getURL());
+                backButton.setEnabled(true);
+            }
+            catch (Exception e) {
+                  JOptionPane.showMessageDialog(parent, "Page could not be loaded",
+                                "Page Error", JOptionPane.ERROR_MESSAGE);
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/savan/conf/module.xml b/rampart_1_1/modules/savan/conf/module.xml
new file mode 100644
index 0000000..cf5e175
--- /dev/null
+++ b/rampart_1_1/modules/savan/conf/module.xml
@@ -0,0 +1,24 @@
+<module name="Savan" class="org.apache.savan.module.SavanModule">

+

+    <InFlow>

+        <handler name="SavanInHandler" class="org.apache.savan.handlers.SavanInHandler">

+            <order phase="OperationInPhase"/>

+        </handler>

+    </InFlow>

+    

+    <OutFlow>

+        <handler name="SavanOutHandler" class="org.apache.savan.handlers.SavanOutHandler">

+            <order phase="OperationOutPhase"/>

+        </handler>

+    </OutFlow>

+

+    <operation name="SavanInOutOperation" mep="http://www.w3.org/2004/08/wsdl/in-out">

+        <messageReceiver class="org.apache.savan.messagereceiver.SavanInOutMessageReceiver"/>

+        

+        <actionMapping>http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</actionMapping>

+        <actionMapping>http://schemas.xmlsoap.org/ws/2004/08/eventing/Renew</actionMapping>

+        <actionMapping>http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus</actionMapping>

+        <actionMapping>http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</actionMapping>

+    </operation>

+    

+</module>
\ No newline at end of file
diff --git a/rampart_1_1/modules/savan/conf/savan-config.xml b/rampart_1_1/modules/savan/conf/savan-config.xml
new file mode 100644
index 0000000..1773586
--- /dev/null
+++ b/rampart_1_1/modules/savan/conf/savan-config.xml
@@ -0,0 +1,61 @@
+<savan-config>

+

+    <protocols>

+        <protocol>

+        	<name>eventing</name>

+        	<utilFactory>org.apache.savan.eventing.EventingUtilFactory</utilFactory>

+        	<mapping-rules>

+                <action>http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</action>

+                <action>http://schemas.xmlsoap.org/ws/2004/08/eventing/Renew</action>

+                <action>http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus</action>

+                <action>http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</action>

+        	</mapping-rules>

+        	<defaultSubscriber>eventing-leaf</defaultSubscriber>

+        	<defaultFilter>empty</defaultFilter>

+        	<!--

+        	<parameters>

+        	    <parameter>

+        	        <name>eventing-topic-subscriber</name>

+        	        <value>eventing-topic</value>

+        	    </parameter>

+        	</parameters>

+        	-->

+        </protocol>

+    </protocols>

+    

+    <subscriberStores>

+    	<subscriberStore>

+    		<key>default</key>

+    		<class>org.apache.savan.storage.DefaultSubscriberStore</class>

+    	</subscriberStore>

+    </subscriberStores>

+    

+    <filters>

+        <filter>

+            <name>empty</name>

+    		<identifier>empty</identifier>

+    		<class>org.apache.savan.filters.EmptyFilter</class>

+    	</filter>

+    	<filter>

+    	    <name>xpath</name>

+    		<identifier>http://www.w3.org/TR/1999/REC-xpath-19991116</identifier>

+    		<class>org.apache.savan.filters.XPathBasedFilter</class>

+    	</filter>

+    </filters>

+    

+    <subscribers>

+    	<subscriber>

+    		<name>composite</name>

+    		<class>org.apache.savan.subscribers.CompositeSubscriber</class>

+    	</subscriber>

+    	<subscriber>

+    		<name>eventing-leaf</name>

+    		<class>org.apache.savan.eventing.subscribers.EventingLeafSubscriber</class>

+    	</subscriber>

+    	 <subscriber>

+    		<name>eventing-topic</name>

+    		<class>org.apache.savan.eventing.subscribers.EventingTopicSubscriber</class>

+    	</subscriber>

+    </subscribers>

+    

+</savan-config>
\ No newline at end of file
diff --git a/rampart_1_1/modules/savan/maven.xml b/rampart_1_1/modules/savan/maven.xml
new file mode 100644
index 0000000..bd223b8
--- /dev/null
+++ b/rampart_1_1/modules/savan/maven.xml
@@ -0,0 +1,52 @@
+<?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:u="jelly:util"

+    xmlns:maven="jelly:maven"

+    xmlns:deploy="deploy"

+    xmlns:ant="jelly:ant">

+    

+    <postGoal name="jar">

+

+        <mkdir dir="target/classes/META-INF"/>

+        <copy file="conf/module.xml"

+            toDir="target/classes/META-INF/"/>

+	  <copy file="conf/savan-config.xml"

+            toDir="target/classes/"/>

+        <copy file="../../LICENSE.txt"

+            toDir="target/classes/META-INF/" overwrite="true"/>

+        <mkdir dir="target/modules"/>

+        

+        <jar jarfile="target/savan-${savan_version}.mar" basedir="target/classes">

+            <include name="**"/>

+        </jar>

+

+    </postGoal>

+    

+

+    <postGoal name="jar:install">

+    

+        <mkdir dir="target/classes/META-INF"/>

+        <copy file="conf/module.xml"

+            toDir="target/classes/META-INF/"/>

+        <copy file="../../LICENSE.txt"

+            toDir="target/classes/META-INF/" overwrite="true"/>

+	  <copy file="conf/savan-config.xml"

+            toDir="target/classes/"/>

+        <mkdir dir="target/modules"/>

+        

+        <jar jarfile="target/savan-${savan_version}.mar" basedir="target/classes">

+            <include name="**"/>

+        </jar>

+

+        <!-- copying the jar and mar files to the local repo-->

+        <copy file="target/savan-${savan_version}.mar" 

+            tofile="${maven.repo.local}/org.apache.axis2/mars/savan-${savan_version}.mar"/>

+

+    </postGoal>

+

+    

+</project>

diff --git a/rampart_1_1/modules/savan/project.properties b/rampart_1_1/modules/savan/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/savan/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/savan/project.xml b/rampart_1_1/modules/savan/project.xml
new file mode 100644
index 0000000..e9d0a57
--- /dev/null
+++ b/rampart_1_1/modules/savan/project.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <name>Apache Axis 2.0 - Savan</name>

+    <id>axis2-savan</id>

+    <groupId>org.apache.axis2</groupId>

+    <description>Publisher/Subscriber implememtation for Axis2</description>

+

+    <dependencies>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>${wsdl4j.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+			<groupId>org.apache.ws.commons.schema</groupId>

+			<artifactId>XmlSchema</artifactId>

+			<version>${XmlSchema.version}</version>

+		</dependency>

+        

+        <dependency>

+            <groupId>jaxen</groupId>

+            <artifactId>jaxen</artifactId>

+            <version>${jaxen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://www.ibiblio.org/maven/jaxen/jars/</url>

+        </dependency>

+

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-java2wsdl</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        

+        <!-- Following dependency was required due to the ConverterUtil class-->

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-adb</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        

+        <!-- Following dependency was required due to the EndpointReferenceHelper class-->

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-addressing</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        

+        <!-- external JARs -->

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>${stax.impl.groupid}</groupId>

+            <artifactId>${stax.impl.artifactid}</artifactId>

+            <version>${stax.impl.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>${activation.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javamail.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>

+        <dependency>

+            <groupId>commons-httpclient</groupId>

+            <artifactId>commons-httpclient</artifactId>

+            <version>${commons.httpclient.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-codec</groupId>

+            <artifactId>commons-codec</artifactId>

+            <version>${commons.codec.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>backport-util-concurrent</groupId>

+            <artifactId>backport-util-concurrent</artifactId>

+            <version>${backport_util_concurrent.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <!--for java2wsdl generation we use JAM , so there should be a dependency on the annogen jar or-->

+        <!--XML Beans-->

+        <dependency>

+            <groupId>annogen</groupId>

+            <artifactId>annogen</artifactId>

+            <version>${annogen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+       <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>${neethi.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+    </dependencies>

+

+    <reports/>

+</project>

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/MessageInitializer.java b/rampart_1_1/modules/savan/src/org/apache/savan/MessageInitializer.java
new file mode 100644
index 0000000..7ee1b8e
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/MessageInitializer.java
@@ -0,0 +1,26 @@
+/*

+ * Copyright  1999-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.savan;

+

+public class MessageInitializer {

+

+	public static void initializeMessage (SavanMessageContext smc) {

+		//TODO fill the properties in to the SMC,

+		//For e.g. UtilFactory and the SubscriberStore

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/SavanConstants.java b/rampart_1_1/modules/savan/src/org/apache/savan/SavanConstants.java
new file mode 100644
index 0000000..268f1e9
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/SavanConstants.java
@@ -0,0 +1,62 @@
+/*

+ * Copyright  1999-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.savan;

+

+/**

+ * Contains the constants used by Savan

+ * 

+ *

+ */

+public interface SavanConstants {

+

+	String CONFIGURATION_MANAGER = "SavanConfigurationManager"; //Property name to store the CM in the ConfigCtx.

+	

+	String VALUE_TRUE = "true";

+	String VALUE_FALSE = "false";

+

+	String MESSAGE_TYPE = "SavanMessageType";

+	String PUBLICATION_MESSAGE = "SavanPublicationMessage";

+	

+	String SUBSCRIBER_STORE = "SubscriberStore"; //AxisService property

+	String SUBSCRIBER_STORE_KEY = "SubscriberStoreKey"; //to mention the key in the services.xml

+	String PROTOCOL = "Protocol";

+	

+	String CONFIG_FILE = "savan-config.xml";

+	String UTIL_FACTORY = "UtilFactory";

+	

+	String DEFAULT_SUBSCRIBER_STORE_KEY = "default";

+	

+	interface MessageTypes {

+		int UNKNOWN = -1;

+		int SUBSCRIPTION_MESSAGE = 1;

+		int SUBSCRIPTION_RESPONSE_MESSAGE = 2;

+		int UNSUBSCRIPTION_MESSAGE = 3;

+		int UNSUBSCRIPTION_RESPONSE_MESSAGE = 4;

+		int RENEW_MESSAGE = 5;

+		int RENEW_RESPONSE_MESSAGE = 6;

+		int GET_STATUS_MESSAGE = 7;

+		int GET_STATUS_RESPONSE_MESSAGE = 8;

+	}

+	

+	interface Properties {

+		String SUBSCRIBER_STORE = "SubscriberStore";

+	}

+	

+

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/SavanException.java b/rampart_1_1/modules/savan/src/org/apache/savan/SavanException.java
new file mode 100644
index 0000000..b374cdf
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/SavanException.java
@@ -0,0 +1,39 @@
+/*

+ * Copyright  1999-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.savan;

+

+import org.apache.axis2.AxisFault;

+

+/**

+ * To convey a exception that occured in Savan.

+ * 

+ */

+public class SavanException extends AxisFault {

+

+	public SavanException (String cause) {

+		super (cause);

+	}

+	

+	public SavanException (String cause, Exception superException) {

+	    super (cause,superException);	

+	}

+	

+	public SavanException (Exception superException) {

+	    super (superException);	

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/SavanMessageContext.java b/rampart_1_1/modules/savan/src/org/apache/savan/SavanMessageContext.java
new file mode 100644
index 0000000..21ee103
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/SavanMessageContext.java
@@ -0,0 +1,106 @@
+/*

+ * Copyright  1999-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.savan;

+

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.Parameter;

+import org.apache.savan.configuration.Protocol;

+import org.apache.savan.storage.SubscriberStore;

+

+/**

+ * This encaptulates a Axis2 Message Context.

+ * Provide some easy methods to access Savan specific properties easily.

+ */

+public class SavanMessageContext {

+

+	MessageContext messageContext = null;

+	

+	public SavanMessageContext (MessageContext messageContext) {

+		this.messageContext = messageContext;

+	}

+	

+	public void setMessageType (int type) {

+		messageContext.setProperty(SavanConstants.MESSAGE_TYPE, new Integer (type));

+	}

+	

+	public int getMessageType () {

+		Integer typeInt = (Integer) messageContext.getProperty(SavanConstants.MESSAGE_TYPE);

+		if (typeInt==null) {

+			typeInt = new Integer (SavanConstants.MessageTypes.UNKNOWN);

+			messageContext.setProperty(SavanConstants.MESSAGE_TYPE,typeInt);

+		}

+		

+		return typeInt.intValue();

+	}

+	

+	public ConfigurationContext getConfigurationContext () {

+		return messageContext.getConfigurationContext();

+	}

+	

+	public Object getProperty (String key) {

+		return messageContext.getProperty(key);

+	}

+	

+	public void setProperty (String key, Object val) {

+		messageContext.setProperty(key,val);

+	}

+	

+	public SOAPEnvelope getEnvelope () {

+		return messageContext.getEnvelope();

+	}

+	

+	public MessageContext getMessageContext () {

+		return messageContext;

+	}

+	

+	public SubscriberStore getSubscriberStore () {

+		Parameter parameter = messageContext.getParameter(SavanConstants.SUBSCRIBER_STORE);

+		SubscriberStore subscriberStore = null;

+		if (parameter!=null) {

+			parameter = messageContext.getParameter(SavanConstants.SUBSCRIBER_STORE);

+			subscriberStore = (SubscriberStore) parameter.getValue();

+		}

+		

+		return subscriberStore;

+	}

+	

+	public void setSubscriberStore (SubscriberStore store) throws SavanException  {

+		Parameter parameter = new Parameter ();

+		parameter.setName(SavanConstants.SUBSCRIBER_STORE);

+		parameter.setValue(store);

+		

+		try {

+			messageContext.getAxisService().addParameter(parameter);

+		} catch (AxisFault e) {

+			String message = "Could not add the AbstractSubscriber Store parameter";

+			throw new SavanException (message,e);

+		}

+	}

+	

+	public void setProtocol (Protocol protocol) {

+		messageContext.setProperty(SavanConstants.PROTOCOL, protocol);

+	}

+	

+	public Protocol getProtocol () {

+		return (Protocol) messageContext.getProperty(SavanConstants.PROTOCOL);

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/configuration/ConfigurationManager.java b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/ConfigurationManager.java
new file mode 100644
index 0000000..fc16593
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/ConfigurationManager.java
@@ -0,0 +1,423 @@
+/*

+ * Copyright  1999-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.savan.configuration;

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.IOException;

+import java.io.InputStream;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.impl.builder.StAXOMBuilder;

+import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanException;

+import org.apache.savan.filters.Filter;

+import org.apache.savan.storage.SubscriberStore;

+import org.apache.savan.subscribers.AbstractSubscriber;

+import org.apache.savan.subscribers.Subscriber;

+import org.apache.savan.util.UtilFactory;

+

+/**

+ * This is responsible for loading Savan configuration data from a resource

+ * for e.g. from a savan-config.xml fie

+ */

+public class ConfigurationManager {

+	

+	private HashMap protocolMap = null;

+	private HashMap subscriberStoreNamesMap = null;

+	private HashMap filterMap = null;

+	private HashMap subscribersMap = null;

+	

+	private final String SAVAN_CONFIG = "savan-config";

+	private final String PROTOCOLS = "protocols";

+	private final String PROTOCOL = "protocol";

+	private final String NAME = "name";

+	private final String UTIL_FACTORY = "utilFactory";

+	private final String MAPPING_RULES = "mapping-rules";

+	private final String ACTION = "mapping-rules";

+	private final String SOAP_ACTION = "mapping-rules";

+	private final String SUBSCRIBER_STORES = "subscriberStores";

+	private final String SUBSCRIBER_STORE = "subscriberStore";

+	private final String FILTERS = "filters";

+	private final String FILTER = "filter";

+	private final String KEY = "key";

+	private final String CLASS = "class";

+	private final String IDENTIFIER = "identifier";

+	private final String SUBSCRIBERS = "subscribers";

+	private final String SUBSCRIBER = "subscriber";

+	private final String URL_APPENDER = "urlAppender";

+	private final String DEFAULT_SUBSCRIBER = "defaultSubscriber";

+	private final String DEFAULT_FILTER = "defaultFilter";

+	

+	

+	public ConfigurationManager () {

+		protocolMap = new HashMap ();

+		subscriberStoreNamesMap = new HashMap ();

+		filterMap = new HashMap ();

+		subscribersMap = new HashMap ();

+	}

+	

+	/**

+	 * To load configurations from a savan-config.xml file in the classpath.

+	 * 

+	 * @throws SavanException

+	 */

+	public void configure () throws SavanException {

+		ClassLoader classLoader = getClass().getClassLoader();

+

+		configure(classLoader);

+	}

+	

+	public void configure (ClassLoader classLoader) throws SavanException {

+		InputStream in = classLoader.getResourceAsStream(SavanConstants.CONFIG_FILE);

+

+		if (in==null)

+			throw new SavanException ("Cannot find the savan configuration file. Initialation cannot continue.");

+		

+		configure(in);

+	}

+	

+	/**

+	 * To Load configurations from a file.

+	 * 

+	 * @param file

+	 * @throws SavanException

+	 */

+	public void configure (File file) throws SavanException {

+		try {

+			InputStream in = new FileInputStream (file);

+			configure(in);

+		} catch (IOException e) {

+			throw new SavanException (e);

+		}

+	}

+	

+	/**

+	 * To load configurations from a InputStream.

+	 * 

+	 * @param in

+	 * @throws SavanException

+	 */

+	public void configure (InputStream in) throws SavanException {

+

+		if (in==null) {

+			String message = "Invalid InputStream.";

+			throw new SavanException (message);

+		}

+		

+		try {

+			XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(in);

+			OMFactory factory = OMAbstractFactory.getOMFactory();

+			

+			StAXOMBuilder builder = OMXMLBuilderFactory.createStAXOMBuilder(factory,parser);

+			OMElement document = builder.getDocumentElement();

+			

+			if (document==null) {

+				throw new SavanException ("Configuration XML does not have a document element");

+			}

+			

+			processSavanConfig(document);

+		} catch (Exception e) {

+			throw new SavanException (e);

+		} 

+	}

+	

+	

+	private void processSavanConfig (OMElement element) throws SavanException {

+		if (!SAVAN_CONFIG.equals(element.getLocalName())) {

+			throw new SavanException ("'savan-config'should be the document element of the savan configuration xml file");

+		}

+		

+		OMElement protocolsElement = element.getFirstChildWithName(new QName (PROTOCOLS));

+		if (protocolsElement==null) {

+			throw new SavanException ("'protocols' element should be present, as a sub-element of the 'savan-config' element");

+		}

+		processProtocols(protocolsElement);

+		

+		OMElement subscriberStoresElement = element.getFirstChildWithName(new QName (SUBSCRIBER_STORES));

+		if (subscriberStoresElement==null) {

+			throw new SavanException ("'subscriberStores' element should be present, as a sub-element of the 'savan-config' element");

+		}

+		processSubscriberStores(subscriberStoresElement);

+		

+		OMElement filtersElement = element.getFirstChildWithName(new QName (FILTERS));

+		if (subscriberStoresElement==null) {

+			throw new SavanException ("'Filters' element should be present, as a sub-element of the 'savan-config' element");

+		}

+		processFilters (filtersElement);

+		

+		OMElement subscribersElement = element.getFirstChildWithName(new QName (SUBSCRIBERS));

+		if (subscriberStoresElement==null) {

+			throw new SavanException ("'Subscribers' element should be present as a sub-element of the 'savan-config' element");

+		}

+		processSubscribers (subscribersElement);

+		

+	}

+	

+	private void processProtocols (OMElement element) throws SavanException {

+		Iterator protocolElementsIterator = element.getChildrenWithName(new QName (PROTOCOL));

+		while (protocolElementsIterator.hasNext()) {

+			OMElement protocolElement = (OMElement) protocolElementsIterator.next();

+			processProtocol(protocolElement);

+		}

+	}

+	

+	private void processProtocol (OMElement element) throws SavanException {

+		Protocol protocol = new Protocol ();

+		

+		OMElement nameElement = element.getFirstChildWithName(new QName (NAME));

+		if (nameElement==null)

+			throw new SavanException ("Protocol must have a 'Name' subelement");

+		String name = nameElement.getText();

+		protocol.setName(name);

+		

+		OMElement utilFactoryNameElement = element.getFirstChildWithName(new QName (UTIL_FACTORY));

+		if (utilFactoryNameElement==null)

+			throw new SavanException ("Protocol must have a 'UtilFactory' subelement");

+		String utilFactoryName = utilFactoryNameElement.getText();

+		Object obj = getObject(utilFactoryName);

+		if (!(obj instanceof UtilFactory))

+			throw new SavanException ("UtilFactory element" + utilFactoryName + "is not a subtype of the UtilFactory class");

+		protocol.setUtilFactory((UtilFactory) obj);

+		

+		OMElement mappingRulesElement = element.getFirstChildWithName(new QName (MAPPING_RULES));

+		if (mappingRulesElement==null)

+			throw new SavanException ("Protocol must have a 'mappingRules' sub-element");

+		processMappingRules (mappingRulesElement,protocol);

+		

+		OMElement defaultSubscriberElement = element.getFirstChildWithName(new QName (DEFAULT_SUBSCRIBER));

+		if (defaultSubscriberElement==null)

+			throw new SavanException ("Protocols must have a 'defaultSubscriber' sub-element");

+		String defaultSubscriber = defaultSubscriberElement.getText();

+		protocol.setDefaultSubscriber(defaultSubscriber);

+		

+		OMElement defaultFilterElement = element.getFirstChildWithName(new QName (DEFAULT_FILTER));

+		if (defaultFilterElement==null)

+			throw new SavanException ("Protocols must have a 'defaultFilter' sub-element");

+		String defaultFilter = defaultFilterElement.getText();

+		protocol.setDefaultFilter(defaultFilter);

+		

+		protocolMap.put(protocol.getName(),protocol);

+	}

+	

+	private void processMappingRules (OMElement element, Protocol protocol) {

+		

+		MappingRules mappingRules = new MappingRules ();

+		

+		Iterator actionsIterator = element.getChildrenWithName(new QName (ACTION));

+		while (actionsIterator.hasNext()) {

+			OMElement actionElement = (OMElement) actionsIterator.next();

+			String action = actionElement.getText();

+			mappingRules.addAction(action);

+		}

+		

+		Iterator SOAPActionsIterator = element.getChildrenWithName(new QName (SOAP_ACTION));

+		while (SOAPActionsIterator.hasNext()) {

+			OMElement SOAPactionElement = (OMElement) SOAPActionsIterator.next();

+			String SOAPaction = SOAPactionElement.getText();

+			mappingRules.addAction(SOAPaction);

+		}

+	}

+	

+	private void processSubscriberStores (OMElement element) throws SavanException {

+		Iterator subscriberStoreElementsIterator = element.getChildrenWithName(new QName (SUBSCRIBER_STORE));

+		while (subscriberStoreElementsIterator.hasNext()) {

+			OMElement subscriberStoreElement = (OMElement) subscriberStoreElementsIterator.next();

+			processSubscriberStore(subscriberStoreElement);

+		}

+	}

+	

+	private void processSubscriberStore (OMElement element) throws SavanException {

+		OMElement keyElement = element.getFirstChildWithName(new QName (KEY));

+		if (keyElement==null)

+			throw new SavanException ("SubscriberStore must have a 'key' subelement");

+		String key = keyElement.getText();

+		

+		OMElement classElement = element.getFirstChildWithName(new QName (CLASS));

+		if (classElement==null)

+			throw new SavanException ("SubscriberStore must have a 'Clazz' subelement'");

+		

+		String clazz = classElement.getText();

+		

+		//initialize the class to check weather it is value

+		Object obj = getObject(clazz);

+		

+		if (!(obj instanceof SubscriberStore)) {

+			String message = "Class " + clazz + " does not implement the  SubscriberStore interface.";

+			throw new SavanException (message);

+		}

+		

+		subscriberStoreNamesMap.put(key,clazz);

+	}

+

+	public HashMap getProtocolMap () {

+		return protocolMap;

+	}

+	

+	public Protocol getProtocol (String name) {

+		return (Protocol) protocolMap.get(name);

+	}

+	

+	public SubscriberStore getSubscriberStoreInstance (String key) throws SavanException {

+		String name = (String) subscriberStoreNamesMap.get(key);

+		return (SubscriberStore) getObject(name);

+	}

+	

+	public Filter getFilterInstanceFromName (String name) throws SavanException {

+		for (Iterator it=filterMap.keySet().iterator();it.hasNext();) {

+			String key = (String) it.next();

+			FilterBean filterBean = (FilterBean) filterMap.get(key);

+			if (name.equals(filterBean.getName()))

+				return (Filter) getObject(filterBean.getClazz());

+		}

+		

+		return null;

+	}

+	

+	public Filter getFilterInstanceFromId (String id) throws SavanException {

+		FilterBean filterBean = (FilterBean) filterMap.get(id);

+		String filterClass = filterBean.getClazz();

+		if (filterClass==null)

+			return null;

+		

+		return (Filter) getObject(filterClass);

+	}

+	

+	private Object getObject (String className) throws SavanException {

+	

+		Object obj;

+		try {

+			Class c = Class.forName (className);

+			 obj = c.newInstance();

+		} catch (Exception e) {

+			String message = "Can't instantiate the class:" + className;

+			throw new SavanException (message,e);

+		}

+		 

+		return obj;

+	}

+	

+	private void processFilters (OMElement element) throws SavanException {

+		Iterator filterElementsIterator = element.getChildrenWithName(new QName (FILTER));

+		while (filterElementsIterator.hasNext()) {

+			OMElement filterElement = (OMElement) filterElementsIterator.next();

+			processFilter (filterElement);

+		}

+	}

+	

+	private void processFilter (OMElement element) throws SavanException {

+		OMElement nameElement = element.getFirstChildWithName(new QName (NAME));

+		OMElement identifierElement = element.getFirstChildWithName(new QName (IDENTIFIER));

+		OMElement classElement = element.getFirstChildWithName(new QName (CLASS));

+		

+		if (nameElement==null)

+			throw new SavanException ("Name element is not present within the Filter");

+		if (identifierElement==null)

+			throw new SavanException ("Identifier element is not present within the Filter");

+		if (classElement==null)

+			throw new SavanException ("Class element is not present within the Filter");

+		

+		String name = nameElement.getText();

+		String identifier = identifierElement.getText();

+		String clazz = classElement.getText();

+		

+		//initialize the class to check weather it is value

+		Object obj = getObject(clazz);

+		

+		if (!(obj instanceof Filter)) {

+			String message = "Class " + clazz + " does not implement the  Filter interface.";

+			throw new SavanException (message);

+		}

+		

+		FilterBean bean = new FilterBean ();

+		bean.setName(name);

+		bean.setIdentifier(identifier);

+		bean.setClazz(clazz);

+		

+		filterMap.put(identifier,bean);

+	}

+	

+	private void processSubscribers (OMElement element) throws SavanException {

+		Iterator subscriberElementsIterator = element.getChildrenWithName(new QName (SUBSCRIBER));

+		while (subscriberElementsIterator.hasNext()) {

+			OMElement subscriberElement = (OMElement) subscriberElementsIterator.next();

+			processSubscriber (subscriberElement);

+		}

+	}

+	

+	private void processSubscriber (OMElement element) throws SavanException {

+		OMElement nameElement = element.getFirstChildWithName(new QName (NAME));

+		OMElement urlAppenderElement = element.getFirstChildWithName(new QName (URL_APPENDER));

+		OMElement classElement = element.getFirstChildWithName(new QName (CLASS));

+		

+		if (nameElement==null)

+			throw new SavanException ("Name element is not present within the AbstractSubscriber");

+		if (classElement==null)

+			throw new SavanException ("Class element is not present within the Filter");

+		

+		String name = nameElement.getText();

+		String clazz = classElement.getText();

+		

+		//initialize the class to check weather it is valid

+		Object obj = getObject(clazz);

+		

+		if (!(obj instanceof Subscriber)) {

+			String message = "Class " + clazz + " does not implement the  Subscriber interface.";

+			throw new SavanException (message);

+		}

+		

+		SubscriberBean bean = new SubscriberBean ();

+		bean.setName(name);

+		bean.setClazz(clazz);

+		

+		subscribersMap.put(name,bean);

+	}

+	

+	public Map getSubscriberBeans () {

+		return subscribersMap;

+	}

+	

+	public Map getFilterBeans () {

+		return filterMap;

+	}

+	

+	public SubscriberBean getSubscriberBean (String subscriberName) {

+		return (SubscriberBean) subscribersMap.get(subscriberName);

+	}

+	

+	public AbstractSubscriber getSubscriberInstance (String subscriberName) throws SavanException {

+		SubscriberBean subscriberBean = (SubscriberBean) subscribersMap.get(subscriberName);

+		if (subscriberBean==null) {

+			String message = "A subscriber with the name '" + subscriberName + "' was not found.";

+			throw new SavanException (message);

+		}

+		

+		return (AbstractSubscriber) getObject(subscriberBean.getClazz());

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/configuration/FilterBean.java b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/FilterBean.java
new file mode 100644
index 0000000..df83833
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/FilterBean.java
@@ -0,0 +1,49 @@
+/*

+ * Copyright 2004,2005 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.savan.configuration;

+

+public class FilterBean {

+

+	String name;

+	String identifier;

+	String clazz;

+	

+	public String getClazz() {

+		return clazz;

+	}

+	

+	public String getIdentifier() {

+		return identifier;

+	}

+	

+	public String getName() {

+		return name;

+	}

+	

+	public void setClazz(String clazz) {

+		this.clazz = clazz;

+	}

+	

+	public void setIdentifier(String identifier) {

+		this.identifier = identifier;

+	}

+	

+	public void setName(String name) {

+		this.name = name;

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/configuration/MappingRules.java b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/MappingRules.java
new file mode 100644
index 0000000..f42e1f3
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/MappingRules.java
@@ -0,0 +1,52 @@
+/*

+ * Copyright  1999-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.savan.configuration;

+

+import java.util.ArrayList;

+

+/**

+ *Encapsulates a date of a set of Mapping-Rules as defined by Savan configurations. 

+ *(probably from a savan-config.xml file).

+ */

+public class MappingRules {

+

+	private ArrayList actionMap = null;

+	private ArrayList SOAPActionMap = null;

+	

+	public MappingRules () {

+		actionMap = new ArrayList ();

+		SOAPActionMap = new ArrayList ();

+	}

+	

+	public void addAction (String action) {

+		actionMap.add(action);

+	}

+	

+	public boolean isActionPresent (String action) {

+		return actionMap.contains(action);

+	}

+	

+	public void addSOAPAction (String SOAPAction) {

+		SOAPActionMap.add(SOAPAction);

+	}

+	

+	public boolean isSOAPActionPresent (String SOAPAction) {

+		return SOAPActionMap.contains(SOAPAction);

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/configuration/Protocol.java b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/Protocol.java
new file mode 100644
index 0000000..d48ca65
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/Protocol.java
@@ -0,0 +1,73 @@
+/*

+ * Copyright  1999-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.savan.configuration;

+

+import org.apache.savan.util.UtilFactory;

+

+/**

+ *Encapsulates a date of a Protocol as defined by Savan configurations. 

+ *(probably from a savan-config.xml file).

+ */

+public class Protocol {

+

+	private String name;

+	private UtilFactory utilFactory;

+	private MappingRules mappingRules;

+	private String defaultSubscriber;

+	private String defaultFilter;

+	

+	public String getDefaultFilter() {

+		return defaultFilter;

+	}

+

+	public String getDefaultSubscriber() {

+		return defaultSubscriber;

+	}

+

+	public void setDefaultFilter(String defaultFilter) {

+		this.defaultFilter = defaultFilter;

+	}

+

+	public void setDefaultSubscriber(String defaultSubscriber) {

+		this.defaultSubscriber = defaultSubscriber;

+	}

+

+	public String getName() {

+		return name;

+	}

+	

+	public UtilFactory getUtilFactory() {

+		return utilFactory;

+	}

+	

+	public void setName(String name) {

+		this.name = name;

+	}

+	

+	public void setUtilFactory(UtilFactory utilFactory) {

+		this.utilFactory = utilFactory;

+	}

+

+	public MappingRules getMappingRules() {

+		return mappingRules;

+	}

+

+	public void setMappingRules(MappingRules mappingRule) {

+		this.mappingRules = mappingRule;

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/configuration/SubscriberBean.java b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/SubscriberBean.java
new file mode 100644
index 0000000..20fe622
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/configuration/SubscriberBean.java
@@ -0,0 +1,39 @@
+/*

+ * Copyright 2004,2005 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.savan.configuration;

+

+public class SubscriberBean {

+	

+	String name;

+	String clazz;

+	

+	public String getClazz() {

+		return clazz;

+	}

+	public String getName() {

+		return name;

+	}

+

+	public void setClazz(String clazz) {

+		this.clazz = clazz;

+	}

+	public void setName(String name) {

+		this.name = name;

+	}

+	

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/Delivery.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/Delivery.java
new file mode 100644
index 0000000..c8b6ee7
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/Delivery.java
@@ -0,0 +1,45 @@
+/*

+ * Copyright  1999-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.savan.eventing;

+

+import org.apache.axis2.addressing.EndpointReference;

+

+public class Delivery {

+

+	EndpointReference deliveryEPR;

+	String deliveryMode;

+

+	public EndpointReference getDeliveryEPR() {

+		return deliveryEPR;

+	}

+

+	public String getDeliveryMode() {

+		return deliveryMode;

+	}

+

+	public void setDeliveryEPR(EndpointReference deliveryEPR) {

+		this.deliveryEPR = deliveryEPR;

+	}

+

+	public void setDeliveryMode(String deliveryMode) {

+		this.deliveryMode = deliveryMode;

+	}

+	

+	

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingConstants.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingConstants.java
new file mode 100644
index 0000000..4edf16a
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingConstants.java
@@ -0,0 +1,68 @@
+/*

+ * Copyright  1999-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.savan.eventing;

+

+public interface EventingConstants {

+

+	String EVENTING_NAMESPACE = "http://schemas.xmlsoap.org/ws/2004/08/eventing";

+	String EVENTING_PREFIX = "wse";

+	String DEFAULT_DELIVERY_MODE = "http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/Push";

+	String DEFAULT_FILTER_IDENTIFIER = FilterDialects.XPath;

+	

+	interface TransferedProperties {

+		String SUBSCRIBER_UUID = "SAVAN_EVENTING_SUBSCRIBER_UUID";

+	}

+	

+	interface ElementNames {

+		String Subscribe = "Subscribe";

+		String EndTo = "EndTo";

+		String Delivery = "Delivery";

+		String Mode = "Mode";

+		String NotifyTo = "NotifyTo";

+		String Expires = "Expires";

+		String Filter = "Filter";

+		String Dialect = "Dialect";

+		String SubscribeResponse = "SubscribeResponse";

+		String SubscriptionManager = "SubscriptionManager";

+		String Renew = "Renew";

+		String RenewResponse = "RenewResponse";

+		String Identifier = "Identifier";

+		String Unsubscribe = "Unsubscribe";

+		String GetStatus = "GetStatus";

+		String GetStatusResponse = "GetStatusResponse";

+	}

+	

+	interface Actions {

+		String Subscribe = "http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe";

+		String SubscribeResponse = "http://schemas.xmlsoap.org/ws/2004/08/eventing/SubscribeResponse";

+		String Renew = "http://schemas.xmlsoap.org/ws/2004/08/eventing/Renew";

+		String RenewResponse = "http://schemas.xmlsoap.org/ws/2004/08/eventing/RenewResponse";

+		String Unsubscribe = "http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe";

+		String UnsubscribeResponse = "http://schemas.xmlsoap.org/ws/2004/08/eventing/UnsubscribeResponse";

+		String GetStatus = "http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus";

+		String GetStatusResponse = "http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatusResponse";

+	}

+	

+	interface Properties {

+		String SOAPVersion = "SOAPVersion";

+	}

+	

+	interface FilterDialects {

+		String XPath = "http://www.w3.org/TR/1999/REC-xpath-19991116";

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingMessageReceiverDeligater.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingMessageReceiverDeligater.java
new file mode 100644
index 0000000..f59a18e
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingMessageReceiverDeligater.java
@@ -0,0 +1,255 @@
+/*

+ * Copyright  1999-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.savan.eventing;

+

+import java.util.Calendar;

+import java.util.Date;

+import javax.xml.namespace.QName;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.addressing.EndpointReferenceHelper;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.eventing.subscribers.EventingLeafSubscriber;

+import org.apache.savan.messagereceiver.MessageReceiverDeligater;

+import org.apache.savan.storage.SubscriberStore;

+import org.apache.savan.subscribers.AbstractSubscriber;

+import org.apache.savan.subscribers.Subscriber;

+import org.apache.savan.util.CommonUtil;

+

+

+public class EventingMessageReceiverDeligater implements MessageReceiverDeligater {

+

+	public void handleSubscriptionRequest(SavanMessageContext subscriptionMessage, MessageContext outMessage) throws SavanException {

+		

+		if (outMessage==null)

+			throw new SavanException ("Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");

+		

+		MessageContext subscriptionMsgCtx = subscriptionMessage.getMessageContext();

+		

+		SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();

+		SOAPFactory factory = null;

+		

+		if (outMessageEnvelope!=null) {

+			factory = (SOAPFactory) outMessageEnvelope.getOMFactory();

+		} else {

+			factory = (SOAPFactory) subscriptionMsgCtx.getEnvelope().getOMFactory();

+			outMessageEnvelope = factory.getDefaultEnvelope();

+			

+			try {

+				outMessage.setEnvelope(outMessageEnvelope);

+			} catch (AxisFault e) {

+				throw new SavanException (e);

+			}

+		}

+		

+		//setting the action

+		outMessage.getOptions().setAction(EventingConstants.Actions.SubscribeResponse);

+			

+		//sending the subscription response message.

+		String address = subscriptionMsgCtx.getOptions().getTo().getAddress();

+		EndpointReference subscriptionManagerEPR = new EndpointReference (address);

+

+		String id = (String) subscriptionMessage.getProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID);

+		if (id==null)

+			throw new SavanException ("Subscription UUID is not set");

+		

+		subscriptionManagerEPR.addReferenceParameter(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Identifier,EventingConstants.EVENTING_PREFIX),id);

+		

+		OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,EventingConstants.EVENTING_PREFIX);

+		OMElement subscribeResponseElement = factory.createOMElement(EventingConstants.ElementNames.SubscribeResponse,ens);

+		OMElement subscriptionManagerElement = null;

+		try {

+			subscriptionManagerElement = EndpointReferenceHelper.toOM(subscribeResponseElement.getOMFactory(), subscriptionManagerEPR, new QName(EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.SubscriptionManager,EventingConstants.EVENTING_PREFIX), AddressingConstants.Submission.WSA_NAMESPACE);

+		} catch (AxisFault e) {

+			throw new SavanException (e);

+		}

+		

+		//TODO set expires

+		

+		subscribeResponseElement.addChild(subscriptionManagerElement);

+		outMessageEnvelope.getBody().addChild(subscribeResponseElement);

+		

+		//setting the message type

+		outMessage.setProperty(SavanConstants.MESSAGE_TYPE,new Integer (SavanConstants.MessageTypes.SUBSCRIPTION_RESPONSE_MESSAGE));

+	

+	}

+	

+	public void handleRenewRequest(SavanMessageContext renewMessage, MessageContext outMessage) throws SavanException {

+		

+		if (outMessage==null)

+			throw new SavanException ("Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");

+		

+		MessageContext subscriptionMsgCtx = renewMessage.getMessageContext();

+		

+		SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();

+		SOAPFactory factory = null;

+		

+		if (outMessageEnvelope!=null) {

+			factory = (SOAPFactory) outMessageEnvelope.getOMFactory();

+		} else {

+			factory = (SOAPFactory) subscriptionMsgCtx.getEnvelope().getOMFactory();

+			outMessageEnvelope = factory.getDefaultEnvelope();

+			

+			try {

+				outMessage.setEnvelope(outMessageEnvelope);

+			} catch (AxisFault e) {

+				throw new SavanException (e);

+			}

+		}

+		

+		//setting the action

+		outMessage.getOptions().setAction(EventingConstants.Actions.RenewResponse);

+		

+		OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,EventingConstants.EVENTING_PREFIX);

+			

+		//sending the Renew Response message.

+		OMElement renewResponseElement = factory.createOMElement(EventingConstants.ElementNames.RenewResponse,ens);

+		String subscriberID = (String) renewMessage.getProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID);

+		if (subscriberID==null) {

+			String message = "SubscriberID TransferedProperty is not set";

+			throw new SavanException (message);

+		}

+

+		SubscriberStore store = CommonUtil.getSubscriberStore(renewMessage.getMessageContext().getAxisService());

+		Subscriber subscriber = store.retrieve(subscriberID);

+		EventingLeafSubscriber eventingSubscriber = (EventingLeafSubscriber) subscriber;

+		if (eventingSubscriber==null) {

+			String message = "Cannot find the AbstractSubscriber with the given ID";

+			throw new SavanException (message);

+		}

+		

+		Date expiration = eventingSubscriber.getSubscriptionEndingTime();

+		Calendar calendar = Calendar.getInstance();

+		calendar.setTime(expiration);

+		

+		String expiresValue = ConverterUtil.convertToString(calendar);

+		

+		if (expiresValue!=null) {

+			OMElement expiresElement = factory.createOMElement(EventingConstants.ElementNames.Expires,ens);

+			renewResponseElement.addChild(expiresElement);

+		}

+		

+		outMessageEnvelope.getBody().addChild(renewResponseElement);

+		

+		//setting the message type

+		outMessage.setProperty(SavanConstants.MESSAGE_TYPE,new Integer (SavanConstants.MessageTypes.RENEW_RESPONSE_MESSAGE));

+	}

+

+	public void handleEndSubscriptionRequest(SavanMessageContext renewMessage, MessageContext outMessage) throws SavanException {

+		

+		if (outMessage==null)

+			throw new SavanException ("Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");

+		

+		MessageContext subscriptionMsgCtx = renewMessage.getMessageContext();

+		

+		//setting the action

+		outMessage.getOptions().setAction(EventingConstants.Actions.UnsubscribeResponse);

+		

+		SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();

+		SOAPFactory factory = null;

+		

+		if (outMessageEnvelope!=null) {

+			factory = (SOAPFactory) outMessageEnvelope.getOMFactory();

+		} else {

+			factory = (SOAPFactory) subscriptionMsgCtx.getEnvelope().getOMFactory();

+			outMessageEnvelope = factory.getDefaultEnvelope();

+			

+			try {

+				outMessage.setEnvelope(outMessageEnvelope);

+			} catch (AxisFault e) {

+				throw new SavanException (e);

+			}

+		}	

+		

+		//setting the message type

+		outMessage.setProperty(SavanConstants.MESSAGE_TYPE,new Integer (SavanConstants.MessageTypes.UNSUBSCRIPTION_RESPONSE_MESSAGE));

+	}

+

+	public void handleGetStatusRequest(SavanMessageContext getStatusMessage, MessageContext outMessage) throws SavanException {

+

+		if (outMessage==null)

+			throw new SavanException ("Eventing protocol need to sent the SubscriptionResponseMessage. But the outMessage is null");

+		

+		MessageContext subscriptionMsgCtx = getStatusMessage.getMessageContext();

+		

+		String id = (String) getStatusMessage.getProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID);

+		if (id==null)

+			throw new SavanException ("Cannot fulfil request. AbstractSubscriber ID not found");

+		

+		//setting the action

+		outMessage.getOptions().setAction(EventingConstants.Actions.UnsubscribeResponse);

+		

+		SOAPEnvelope outMessageEnvelope = outMessage.getEnvelope();

+		SOAPFactory factory = null;

+		

+		if (outMessageEnvelope!=null) {

+			factory = (SOAPFactory) outMessageEnvelope.getOMFactory();

+		} else {

+			factory = (SOAPFactory) subscriptionMsgCtx.getEnvelope().getOMFactory();

+			outMessageEnvelope = factory.getDefaultEnvelope();

+			

+			try {

+				outMessage.setEnvelope(outMessageEnvelope);

+			} catch (AxisFault e) {

+				throw new SavanException (e);

+			}

+		}

+		

+		SubscriberStore store = CommonUtil.getSubscriberStore(getStatusMessage.getMessageContext().getAxisService());

+		

+		

+		if (store==null) {

+			throw new SavanException ("AbstractSubscriber Store was not found");

+		}

+		

+		EventingLeafSubscriber subscriber = (EventingLeafSubscriber) store.retrieve(id);

+		if (subscriber==null) {

+			throw new SavanException ("AbstractSubscriber not found");

+		}

+		

+		OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,EventingConstants.EVENTING_PREFIX);

+		OMElement getStatusResponseElement = factory.createOMElement(EventingConstants.ElementNames.GetStatusResponse,ens);

+		

+		Date expires = subscriber.getSubscriptionEndingTime();

+		if (expires!=null) {

+			OMElement expiresElement = factory.createOMElement(EventingConstants.ElementNames.Expires,ens);

+			Calendar calendar = Calendar.getInstance();

+			calendar.setTime(expires);

+			String expirationString = ConverterUtil.convertToString(calendar);

+			expiresElement.setText(expirationString);

+			getStatusResponseElement.addChild(expiresElement);

+		}

+		

+		outMessageEnvelope.getBody().addChild(getStatusResponseElement);

+		

+		//setting the message type

+		outMessage.setProperty(SavanConstants.MESSAGE_TYPE,new Integer (SavanConstants.MessageTypes.GET_STATUS_RESPONSE_MESSAGE));

+	}

+	

+	

+

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingSubscriptionProcessor.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingSubscriptionProcessor.java
new file mode 100644
index 0000000..7f24c8c
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingSubscriptionProcessor.java
@@ -0,0 +1,339 @@
+/*

+ * Copyright  1999-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.savan.eventing;

+

+import java.util.Calendar;

+import java.util.Date;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.soap.SOAP11Constants;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axiom.soap.SOAPHeader;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReferenceHelper;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.databinding.types.Duration;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+import org.apache.axis2.util.UUIDGenerator;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.configuration.ConfigurationManager;

+import org.apache.savan.configuration.Protocol;

+import org.apache.savan.configuration.SubscriberBean;

+import org.apache.savan.eventing.subscribers.EventingSubscriber;

+import org.apache.savan.filters.Filter;

+import org.apache.savan.subscribers.AbstractSubscriber;

+import org.apache.savan.subscribers.Subscriber;

+import org.apache.savan.subscription.ExpirationBean;

+import org.apache.savan.subscription.SubscriptionProcessor;

+import org.apache.savan.util.CommonUtil;

+import org.apache.savan.util.UtilFactory;

+

+public class EventingSubscriptionProcessor extends SubscriptionProcessor {

+

+	public void init (SavanMessageContext smc) throws SavanException {

+		//setting the subscriber_id as a property if possible.

+		

+		String id = getSubscriberID(smc);

+		if (id!=null) {

+			smc.setProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID,id);

+		}

+	}

+	

+	public Subscriber getSubscriberFromMessage(SavanMessageContext smc) throws SavanException {

+

+		ConfigurationManager configurationManager = (ConfigurationManager) smc.getConfigurationContext().getProperty(SavanConstants.CONFIGURATION_MANAGER);

+		if (configurationManager==null)

+			throw new SavanException ("Configuration Manager not set");

+		

+		Protocol protocol = smc.getProtocol();

+		if (protocol==null)

+			throw new SavanException ("Protocol not found");

+		

+		UtilFactory utilFactory = protocol.getUtilFactory();

+		

+		SOAPEnvelope envelope = smc.getEnvelope();

+		if (envelope==null)

+			return null;

+		

+//		AbstractSubscriber subscriber = utilFactory.createSubscriber();  //eventing only works on leaf subscriber for now.

+		

+		String subscriberName = protocol.getDefaultSubscriber();

+		SubscriberBean subscriberBean = configurationManager.getSubscriberBean(subscriberName);

+		

+		AbstractSubscriber subscriber = configurationManager.getSubscriberInstance(subscriberName);

+		

+		if (!(subscriber instanceof EventingSubscriber)) {

+			String message = "Eventing protocol only support implementations of eventing subscriber as Subscribers";

+			throw new SavanException (message);

+		}

+		

+		EventingSubscriber eventingSubscriber = (EventingSubscriber) subscriber;

+		String id = UUIDGenerator.getUUID();

+		smc.setProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID,id);

+	

+		eventingSubscriber.setId(id);

+		

+		SOAPBody body = envelope.getBody();

+		OMElement subscribeElement = body.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Subscribe));

+		if (subscribeElement==null)

+			throw new SavanException ("'Subscribe' element is not present");

+		

+		OMElement endToElement = subscribeElement.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.EndTo));

+		if (endToElement!=null) {

+			EndpointReference endToEPR = null;

+            

+            try {

+                endToEPR = EndpointReferenceHelper.fromOM(endToElement);

+            }

+            catch (AxisFault af) {

+                throw new SavanException(af);

+            }

+            

+			eventingSubscriber.setEndToEPr(endToEPR);

+		}

+		

+		OMElement deliveryElement = subscribeElement.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Delivery));

+		if (deliveryElement==null)

+			throw new SavanException ("Delivery element is not present");

+		

+		OMElement notifyToElement = deliveryElement.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.NotifyTo));

+		if (notifyToElement==null)

+			throw new SavanException ("NotifyTo element is null");

+		

+		EndpointReference notifyToEPr = null;

+        

+        try {

+            notifyToEPr = EndpointReferenceHelper.fromOM(notifyToElement);

+        }

+        catch (AxisFault af) {    

+            throw new SavanException(af);

+        }

+        

+		OMAttribute deliveryModeAttr = deliveryElement.getAttribute(new QName (EventingConstants.ElementNames.Mode));

+		String deliveryMode = null;

+		if (deliveryModeAttr!=null) {

+			deliveryMode = deliveryModeAttr.getAttributeValue().trim();

+		} else {

+			deliveryMode = EventingConstants.DEFAULT_DELIVERY_MODE;

+		}

+		

+		if (!deliveryModesupported()) {

+			//TODO throw unsupported delivery mode fault.

+		}

+		

+		Delivery delivery = new Delivery ();

+		delivery.setDeliveryEPR(notifyToEPr);

+		delivery.setDeliveryMode(deliveryMode);

+		

+		eventingSubscriber.setDelivery(delivery);

+		

+		OMElement expiresElement = subscribeElement.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Expires));

+		if (expiresElement!=null) {

+			String expiresText = expiresElement.getText();

+

+			if (expiresText==null){

+				String message = "Expires Text is null";

+				throw new SavanException (message);

+			}

+			

+			expiresText = expiresText.trim();

+			

+			ExpirationBean expirationBean = getExpirationBeanFromString(expiresText);

+			Date expiration = null;

+			if (expirationBean.isDuration()) {

+				Calendar calendar = Calendar.getInstance();

+				CommonUtil.addDurationToCalendar(calendar,expirationBean.getDurationValue());

+				expiration = calendar.getTime();

+			} else

+				expiration = expirationBean.getDateValue();

+			

+			

+			if (expiration==null) {

+				String message = "Cannot understand the given date-time value for the Expiration";

+				throw new SavanException (message);

+			}

+			

+			eventingSubscriber.setSubscriptionEndingTime(expiration);

+		}

+		

+		OMElement filterElement = subscribeElement.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Filter));

+		if (filterElement!=null) {

+			OMNode filterNode = filterElement.getFirstOMChild();

+			OMAttribute dialectAttr = filterElement.getAttribute(new QName (EventingConstants.ElementNames.Dialect));

+			Filter filter = null;

+			

+			String filterKey = EventingConstants.DEFAULT_FILTER_IDENTIFIER;

+			if (dialectAttr!=null) {

+				filterKey = dialectAttr.getAttributeValue();

+			}

+			filter = configurationManager.getFilterInstanceFromId(filterKey);

+			if (filter==null)

+				throw new SavanException ("The Filter defined by the dialect is not available");

+			

+			filter.setUp (filterNode);

+			

+			eventingSubscriber.setFilter(filter);

+		}

+		

+		return eventingSubscriber;

+	}

+

+	public void pauseSubscription(SavanMessageContext pauseSubscriptionMessage) throws SavanException {

+		throw new UnsupportedOperationException ("Eventing specification does not support this type of messages");

+	}

+

+	public void resumeSubscription(SavanMessageContext resumeSubscriptionMessage) throws SavanException {

+		throw new UnsupportedOperationException ("Eventing specification does not support this type of messages");

+	}

+

+	public ExpirationBean getExpirationBean(SavanMessageContext renewMessage) throws SavanException {

+

+		SOAPEnvelope envelope = renewMessage.getEnvelope();

+		SOAPBody body = envelope.getBody();

+		

+		ExpirationBean expirationBean = null;

+		

+		OMElement renewElement = body.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Renew));

+		if (renewElement==null) {

+			String message = "Renew element not present in the assumed Renew Message";

+			throw new SavanException (message);

+		}

+		

+		OMElement expiresElement = renewElement.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Expires));

+		if (expiresElement!=null) {

+			String expiresText = expiresElement.getText().trim();

+			expirationBean = getExpirationBeanFromString(expiresText);

+		}

+		

+		String subscriberID = getSubscriberID(renewMessage);

+		if (subscriberID==null) {

+			String message = "Cannot find the subscriber ID";

+			throw new SavanException (message);

+		}

+		

+		renewMessage.setProperty(EventingConstants.TransferedProperties.SUBSCRIBER_UUID,subscriberID);

+		

+		expirationBean.setSubscriberID(subscriberID);

+		return expirationBean;

+	}

+

+	public String getSubscriberID(SavanMessageContext smc) throws SavanException {

+		SOAPEnvelope envelope = smc.getEnvelope();

+		SOAPHeader header = envelope.getHeader();

+		if (header==null) {

+			return null;

+		}

+		

+		OMElement ideltifierElement = envelope.getHeader().getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Identifier));

+		if (ideltifierElement==null) {

+			return null;

+		}

+		

+		return ideltifierElement.getText().trim();

+	}

+	

+	private ExpirationBean getExpirationBeanFromString (String expiresStr) throws SavanException {

+

+		ExpirationBean bean = new ExpirationBean ();

+		

+		//expires can be a duration or a date time.

+		//Doing the conversion using the ConverUtil helper class.

+		

+		Date date = null;

+		boolean isDuration = CommonUtil.isDuration(expiresStr);

+		

+		if (isDuration) {

+			try {

+				bean.setDuration(true);

+				Duration duration = ConverterUtil.convertToDuration(expiresStr);

+				bean.setDurationValue(duration);

+			} catch (IllegalArgumentException e) {

+				String message = "Cannot convert the Expiration value to a valid duration";

+				throw new SavanException (message,e);

+			}

+		} else {

+			try {

+			    Calendar calendar = ConverterUtil.convertToDateTime(expiresStr);

+			    date = calendar.getTime();

+			    bean.setDateValue(date);

+			} catch (Exception e) {

+				String message = "Cannot convert the Expiration value to a valid DATE/TIME";

+				throw new SavanException (message,e);

+			}

+		}

+		

+		boolean invalidExpirationTime = false;

+		if (bean.isDuration()) {

+			if (isInvalidDiration (bean.getDurationValue()))

+				invalidExpirationTime = true;

+		} else {

+			if (isDateInThePast (bean.getDateValue())) 

+				invalidExpirationTime = true;

+		}

+		

+		if (invalidExpirationTime) {

+			//TODO throw Invalid Expiration Time fault

+		}

+		

+		return bean;

+	}

+

+	public void doProtocolSpecificEndSubscription(Subscriber subscriber, String reason, ConfigurationContext configurationContext) throws SavanException {

+		String SOAPVersion = (String) subscriber.getProperty(EventingConstants.Properties.SOAPVersion);

+		if (SOAPVersion==null) 

+			throw new SavanException ("Cant find the SOAP version of the subscriber");

+		

+		SOAPFactory factory = null;

+		if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP11Factory();

+		else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP12Factory();

+		else

+			throw new SavanException ("The subscriber has a unknown SOAP version property set");

+		

+		SOAPEnvelope envelope = factory.getDefaultEnvelope();

+	}

+	

+	private boolean deliveryModesupported() {

+		return true;

+	}

+	

+	private boolean isInvalidDiration (Duration duration) {

+		return false;

+	}

+	

+	private boolean isDateInThePast (Date date) {

+		return false;

+	}

+	

+	private boolean filterDilalectSupported (String filterDialect){ 

+		return true;

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingUtilFactory.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingUtilFactory.java
new file mode 100644
index 0000000..f448ef1
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/EventingUtilFactory.java
@@ -0,0 +1,71 @@
+/*

+ * Copyright  1999-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.savan.eventing;

+

+import org.apache.axis2.context.MessageContext;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.eventing.subscribers.EventingLeafSubscriber;

+import org.apache.savan.messagereceiver.MessageReceiverDeligater;

+import org.apache.savan.subscribers.AbstractSubscriber;

+import org.apache.savan.subscription.SubscriptionProcessor;

+import org.apache.savan.util.UtilFactory;

+

+public class EventingUtilFactory implements UtilFactory {

+

+	public SavanMessageContext initializeMessage(SavanMessageContext smc) {

+		

+		MessageContext messageContext = smc.getMessageContext();

+		

+		//setting the message type.

+		String action = messageContext.getOptions().getAction();

+		if (EventingConstants.Actions.Subscribe.equals(action))

+			smc.setMessageType(SavanConstants.MessageTypes.SUBSCRIPTION_MESSAGE);

+		else if (EventingConstants.Actions.Renew.equals(action))

+			smc.setMessageType(SavanConstants.MessageTypes.RENEW_MESSAGE);

+		else if (EventingConstants.Actions.Unsubscribe.equals(action))

+			smc.setMessageType(SavanConstants.MessageTypes.UNSUBSCRIPTION_MESSAGE);

+		else if (EventingConstants.Actions.GetStatus.equals(action))

+			smc.setMessageType(SavanConstants.MessageTypes.GET_STATUS_MESSAGE);

+		else if (EventingConstants.Actions.SubscribeResponse.equals(action))

+			smc.setMessageType(SavanConstants.MessageTypes.SUBSCRIPTION_RESPONSE_MESSAGE);

+		else if (EventingConstants.Actions.RenewResponse.equals(action))

+			smc.setMessageType(SavanConstants.MessageTypes.RENEW_RESPONSE_MESSAGE);

+		else if (EventingConstants.Actions.UnsubscribeResponse.equals(action))

+			smc.setMessageType(SavanConstants.MessageTypes.UNSUBSCRIPTION_RESPONSE_MESSAGE);

+		else if (EventingConstants.Actions.GetStatusResponse.equals(action))

+			smc.setMessageType(SavanConstants.MessageTypes.GET_STATUS_RESPONSE_MESSAGE);

+		else 

+			smc.setMessageType(SavanConstants.MessageTypes.UNKNOWN);

+		

+		return smc;

+	}

+

+	public SubscriptionProcessor createSubscriptionProcessor() {

+		return new EventingSubscriptionProcessor ();

+	}

+	

+	public MessageReceiverDeligater createMessageReceiverDeligater() {

+		return new EventingMessageReceiverDeligater ();

+	}

+

+	public AbstractSubscriber createSubscriber() {

+		return new EventingLeafSubscriber ();

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/EventingClient.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/EventingClient.java
new file mode 100644
index 0000000..3b34b6f
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/EventingClient.java
@@ -0,0 +1,358 @@
+/*

+ * Copyright  1999-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.savan.eventing.client;

+

+import java.util.Calendar;

+import java.util.Date;

+import java.util.HashMap;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMAttribute;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axiom.soap.SOAP11Constants;

+import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axiom.soap.SOAPBody;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.addressing.AddressingConstants;

+import org.apache.axis2.addressing.EndpointReferenceHelper;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.databinding.types.Duration;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+import org.apache.savan.eventing.EventingConstants;

+import org.apache.savan.subscription.ExpirationBean;

+import org.apache.savan.util.CommonUtil;

+

+public class EventingClient {

+

+	ServiceClient serviceClient = null;

+	HashMap subscriptionDataMap = null;

+	

+	public EventingClient (ServiceClient serviceClient) {

+		this.serviceClient = serviceClient;

+		subscriptionDataMap = new HashMap (); 

+	}

+	

+	public void subscribe (EventingClientBean bean, String subscriptionID) throws Exception {

+		

+		Options options = serviceClient.getOptions();

+		if (options==null) {

+			options = new Options ();

+			serviceClient.setOptions(options);

+		}

+		

+		String SOAPVersion = options.getSoapVersionURI();

+		if (SOAPVersion==null) 

+			SOAPVersion = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;

+		

+		SOAPEnvelope envelope = createSubscriptionEnvelope(bean,SOAPVersion);

+		

+		String oldAction = options.getAction();

+		String action = EventingConstants.Actions.Subscribe;

+		options.setAction(action);

+		OMElement subscriptionResponse =  serviceClient.sendReceive (envelope.getBody().getFirstElement());

+		SubscriptionResponseData subscriptionResponseData = getSubscriptionResponseData (subscriptionResponse);

+		

+		subscriptionDataMap.put(subscriptionID,subscriptionResponseData);

+		

+		options.setAction(oldAction);

+	}

+	

+	public void renewSubscription (Date newExpirationTime, String subscriptionID) throws Exception {

+		String expirationString = ConverterUtil.convertToString(newExpirationTime);

+		renewSubscription(expirationString,subscriptionID);

+	}

+	

+	public void renewSubscription (Duration duration, String subscriptionID) throws Exception {

+		String expirationString = ConverterUtil.convertToString(duration);

+		renewSubscription(expirationString,subscriptionID);

+	}

+	

+	public void renewSubscription (String expirationString, String subscriptionID) throws Exception {

+		SubscriptionResponseData data = (SubscriptionResponseData) subscriptionDataMap.get(subscriptionID);

+		EndpointReference managerEPR = data.getSubscriptionManager();

+		if (managerEPR==null)

+			throw new Exception ("Manager EPR is not set");

+		

+		Options options = serviceClient.getOptions();

+		if (options==null) {

+			options = new Options ();

+			serviceClient.setOptions(options);

+		}

+		

+		String SOAPVersion = options.getSoapVersionURI();

+		if (SOAPVersion==null) 

+			SOAPVersion = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;

+		

+		SOAPEnvelope envelope = createRenewSubscriptionEnvelope(expirationString,SOAPVersion);

+		

+		String oldAction = options.getAction();

+		String action = EventingConstants.Actions.Renew;

+		options.setAction(action);

+		

+		EndpointReference oldTo = serviceClient.getOptions().getTo();

+		options.setTo(managerEPR);

+		

+		OMElement renewResponse =  serviceClient.sendReceive (envelope.getBody().getFirstElement());

+

+		options.setAction(oldAction);

+		options.setTo(oldTo);

+	}

+	

+	public void unsubscribe (String subscriptionID) throws Exception {

+		SubscriptionResponseData data = (SubscriptionResponseData) subscriptionDataMap.get(subscriptionID);

+		EndpointReference managerEPR = data.getSubscriptionManager();

+		if (managerEPR==null)

+			throw new Exception ("Manager EPR is not set");

+		

+		Options options = serviceClient.getOptions();

+		if (options==null) {

+			options = new Options ();

+			serviceClient.setOptions(options);

+		}

+		

+		String SOAPVersion = options.getSoapVersionURI();

+		if (SOAPVersion==null) 

+			SOAPVersion = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;

+		

+		SOAPEnvelope envelope = createUnsubscriptionEnvelope(SOAPVersion);

+		

+		String oldAction = options.getAction();

+		String action = EventingConstants.Actions.Unsubscribe;

+		options.setAction(action);

+		

+		EndpointReference oldTo = serviceClient.getOptions().getTo();

+		options.setTo(managerEPR);

+		

+		OMElement unsubscribeResponse =  serviceClient.sendReceive (envelope.getBody().getFirstElement());

+		//TODO process unsubscriber response

+		

+		options.setAction(oldAction);

+		options.setTo(oldTo);

+	}

+	

+	public SubscriptionStatus getSubscriptionStatus (String subscriptionID) throws Exception {

+		SubscriptionResponseData data = (SubscriptionResponseData) subscriptionDataMap.get(subscriptionID);

+		EndpointReference managerEPR = data.getSubscriptionManager();

+		if (managerEPR==null)

+			throw new Exception ("Manager EPR is not set");

+		

+		Options options = serviceClient.getOptions();

+		if (options==null) {

+			options = new Options ();

+			serviceClient.setOptions(options);

+		}

+		

+		String SOAPVersion = options.getSoapVersionURI();

+		if (SOAPVersion==null) 

+			SOAPVersion = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;

+		

+		SOAPEnvelope envelope = createGetStatusEnvelope(SOAPVersion);

+		

+		String oldAction = options.getAction();

+		String action = EventingConstants.Actions.GetStatus;

+		options.setAction(action);

+		

+		EndpointReference oldTo = serviceClient.getOptions().getTo();

+		options.setTo(managerEPR);

+		

+		OMElement getStatusResponse =  serviceClient.sendReceive (envelope.getBody().getFirstElement());

+		SubscriptionStatus subscriptionStatus = getSubscriptionStatus (getStatusResponse);

+		

+		options.setAction(oldAction);

+		options.setTo(oldTo);

+		

+		return subscriptionStatus;

+	}

+	

+	private SubscriptionResponseData getSubscriptionResponseData (OMElement responseMessagePayload) throws Exception {

+		SubscriptionResponseData data = new SubscriptionResponseData ();

+		

+		OMElement subscriberManagerElement = responseMessagePayload.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.SubscriptionManager));

+		EndpointReference managerEPR = EndpointReferenceHelper.fromOM(subscriberManagerElement);

+		data.setSubscriptionManager(managerEPR);

+		

+		OMElement expiresElement = responseMessagePayload.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Expires));

+		if (expiresElement!=null) {

+			String text = expiresElement.getText().trim();

+

+			ExpirationBean expirationBean = new ExpirationBean ();

+			if (CommonUtil.isDuration(text)) {

+				expirationBean.setDuration(true);

+				Duration duration = ConverterUtil.convertToDuration(text);

+				expirationBean.setDurationValue(duration);

+			} else {

+				expirationBean.setDuration(false);

+				Date date = ConverterUtil.convertToDateTime(text).getTime();

+				expirationBean.setDateValue(date);

+			}

+			

+			data.setExpiration(expirationBean);

+		}

+		

+		return data;

+	}

+	

+	private SubscriptionStatus getSubscriptionStatus (OMElement getStatusResponseElement) throws Exception {

+		SubscriptionStatus subscriptionStatus = new SubscriptionStatus ();

+		

+		OMElement expiresElementElement = getStatusResponseElement.getFirstChildWithName(new QName (EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Expires));

+		if (expiresElementElement!=null) {

+			String valueStr = expiresElementElement.getText();

+//			long expires = Long.parseLong(valueStr);

+			subscriptionStatus.setExpirationValue(valueStr);

+		}

+		

+		return subscriptionStatus;

+	}

+	

+	private SOAPEnvelope createSubscriptionEnvelope (EventingClientBean bean, String SOAPVersion) throws Exception{

+		SOAPFactory factory = null;

+		

+		if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP11Factory();

+		else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP12Factory();

+		else throw new Exception ("Unknown SOAP version");

+		

+		SOAPEnvelope envelope = factory.getDefaultEnvelope();

+		SOAPBody body = envelope.getBody();

+		

+		OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,EventingConstants.EVENTING_PREFIX);

+		

+		OMElement subscriptionElement = factory.createOMElement(EventingConstants.ElementNames.Subscribe,ens);

+		

+		EndpointReference endToEPR = bean.getEndToEPR();

+		if (bean.getEndToEPR()!=null) {

+			OMElement endToElement = EndpointReferenceHelper.toOM(subscriptionElement.getOMFactory(), endToEPR, new QName(EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.EndTo,EventingConstants.EVENTING_PREFIX), AddressingConstants.Submission.WSA_NAMESPACE);

+			subscriptionElement.addChild(endToElement);

+		}

+		

+		EndpointReference deliveryEPR = bean.getDeliveryEPR();

+		if (deliveryEPR==null)

+			throw new Exception ("Delivery EPR is not set");

+		

+		OMElement deliveryElement = factory.createOMElement(EventingConstants.ElementNames.Delivery,ens);

+		OMElement notifyToElement = EndpointReferenceHelper.toOM(subscriptionElement.getOMFactory(), deliveryEPR, new QName(EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.NotifyTo,EventingConstants.EVENTING_PREFIX), AddressingConstants.Submission.WSA_NAMESPACE);

+

+		deliveryElement.addChild(notifyToElement);

+		subscriptionElement.addChild(deliveryElement);

+		

+		if (bean.getExpirationTime()!=null || bean.getExpirationDuration()!=null) {

+			String timeString = null;

+			

+			//if time is set it will be taken. Otherwise duration will be taken.

+			if (bean.getExpirationTime()!=null) {

+				Date date = bean.getExpirationTime();

+				Calendar calendar = Calendar.getInstance();

+				calendar.setTime(date);

+				timeString = ConverterUtil.convertToString(calendar);

+			} else if (bean.getExpirationDuration()!=null) {

+				Duration duration = bean.getExpirationDuration();

+				timeString = ConverterUtil.convertToString(duration);

+			}

+			

+			OMElement expiresElement = factory.createOMElement(EventingConstants.ElementNames.Expires,ens);

+			expiresElement.setText(timeString);

+			subscriptionElement.addChild(expiresElement);

+		}

+		

+		if (bean.getFilter()!=null) {

+			String filter = bean.getFilter();

+			String dialect = bean.getFilterDialect();

+			

+			OMElement filterElement = factory.createOMElement(EventingConstants.ElementNames.Filter,ens);

+			OMAttribute dialectAttr = factory.createOMAttribute(EventingConstants.ElementNames.Dialect,null,dialect);

+			filterElement.addAttribute(dialectAttr);

+			filterElement.setText(filter);

+			

+			subscriptionElement.addChild(filterElement);

+		}

+		

+		body.addChild(subscriptionElement);

+		

+		return envelope;

+	}

+	

+	private SOAPEnvelope createRenewSubscriptionEnvelope (String expiresString, String SOAPVersion) throws Exception{

+		SOAPFactory factory = null;

+		

+		if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP11Factory();

+		else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP12Factory();

+		else throw new Exception ("Unknown SOAP version");

+		

+		SOAPEnvelope envelope = factory.getDefaultEnvelope();

+		SOAPBody body = envelope.getBody();

+		

+		OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,EventingConstants.EVENTING_PREFIX);

+		OMElement renewElement = factory.createOMElement(EventingConstants.ElementNames.Renew,ens);

+		OMElement expiresElement = factory.createOMElement(EventingConstants.ElementNames.Expires,ens);

+		expiresElement.setText(expiresString);

+		renewElement.addChild(expiresElement);

+		

+		body.addChild(renewElement);

+		

+		return envelope;

+	}

+	

+	private SOAPEnvelope createUnsubscriptionEnvelope (String SOAPVersion) throws Exception {

+		SOAPFactory factory = null;

+		

+		if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP11Factory();

+		else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP12Factory();

+		else throw new Exception ("Unknown SOAP version");

+		

+		SOAPEnvelope envelope = factory.getDefaultEnvelope();

+		SOAPBody body = envelope.getBody();

+		

+		OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,EventingConstants.EVENTING_PREFIX);

+		OMElement unsubscribeElement = factory.createOMElement(EventingConstants.ElementNames.Unsubscribe,ens);

+		body.addChild(unsubscribeElement);

+		

+		return envelope;

+	}

+

+	private SOAPEnvelope createGetStatusEnvelope (String SOAPVersion) throws Exception {

+		SOAPFactory factory = null;

+		

+		if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP11Factory();

+		else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))

+			factory = OMAbstractFactory.getSOAP12Factory();

+		else throw new Exception ("Unknown SOAP version");

+		

+		SOAPEnvelope envelope = factory.getDefaultEnvelope();

+		SOAPBody body = envelope.getBody();

+		

+		OMNamespace ens = factory.createOMNamespace(EventingConstants.EVENTING_NAMESPACE,EventingConstants.EVENTING_PREFIX);

+		OMElement getStatusElement = factory.createOMElement(EventingConstants.ElementNames.GetStatus,ens);

+		body.addChild(getStatusElement);

+		

+		return envelope;

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/EventingClientBean.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/EventingClientBean.java
new file mode 100644
index 0000000..f5c046c
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/EventingClientBean.java
@@ -0,0 +1,80 @@
+/*

+ * Copyright  1999-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.savan.eventing.client;

+

+import java.util.Date;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.databinding.types.Duration;

+

+public class EventingClientBean {

+

+	EndpointReference deliveryEPR;

+	EndpointReference endToEPR;

+	String filterDialect;

+	String filter;

+	Date expirationTime;

+	Duration expirationDuration;

+	

+	public Duration getExpirationDuration() {

+		return expirationDuration;

+	}

+

+	public void setExpirationDuration(Duration expirationDuration) {

+		this.expirationDuration = expirationDuration;

+	}

+

+	public EndpointReference getDeliveryEPR() {

+		return deliveryEPR;

+	}

+	

+	public EndpointReference getEndToEPR() {

+		return endToEPR;

+	}

+	

+	public Date getExpirationTime() {

+		return expirationTime;

+	}

+	

+	public String getFilter() {

+		return filter;

+	}

+	

+	public String getFilterDialect() {

+		return filterDialect;

+	}

+	

+	public void setDeliveryEPR(EndpointReference deliveryEPR) {

+		this.deliveryEPR = deliveryEPR;

+	}

+	

+	public void setEndToEPR(EndpointReference endToEPR) {

+		this.endToEPR = endToEPR;

+	}

+	

+	public void setExpirationTime(Date expirationTime) {

+		this.expirationTime = expirationTime;

+	}

+	

+	public void setFilter(String filter) {

+		this.filter = filter;

+	}

+	

+	public void setFilterDialect(String filterDialect) {

+		this.filterDialect = filterDialect;

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/SubscriptionResponseData.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/SubscriptionResponseData.java
new file mode 100644
index 0000000..fb15094
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/SubscriptionResponseData.java
@@ -0,0 +1,47 @@
+/*

+ * Copyright  1999-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.savan.eventing.client;

+

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.savan.subscription.ExpirationBean;

+

+public class SubscriptionResponseData {

+

+	EndpointReference subscriptionManager = null;

+	ExpirationBean  expiration = null;

+	

+	public SubscriptionResponseData () {

+		expiration = new ExpirationBean ();

+	}

+

+	public EndpointReference getSubscriptionManager() {

+		return subscriptionManager;

+	}

+

+	public ExpirationBean getExpiration() {

+		return expiration;

+	}

+

+	public void setExpiration(ExpirationBean expiration) {

+		this.expiration = expiration;

+	}

+

+	public void setSubscriptionManager(EndpointReference subscriptionManager) {

+		this.subscriptionManager = subscriptionManager;

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/SubscriptionStatus.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/SubscriptionStatus.java
new file mode 100644
index 0000000..58dac3d
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/client/SubscriptionStatus.java
@@ -0,0 +1,34 @@
+/*
+* Copyright 2004,2005 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.savan.eventing.client;

+

+public class SubscriptionStatus {

+

+	String expirationValue;
+
+	public String getExpirationValue() {
+		return expirationValue;
+	}
+
+	public void setExpirationValue(String expirationValue) {
+		this.expirationValue = expirationValue;
+	}

+

+	

+	

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingLeafSubscriber.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingLeafSubscriber.java
new file mode 100644
index 0000000..47446df
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingLeafSubscriber.java
@@ -0,0 +1,85 @@
+/*

+ * Copyright  1999-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.savan.eventing.subscribers;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.OperationClient;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.MessageContext;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.eventing.Delivery;

+import org.apache.savan.subscribers.LeafSubscriber;

+

+public class EventingLeafSubscriber extends LeafSubscriber implements EventingSubscriber {

+

+	private EndpointReference endToEPr;

+	

+	private Delivery delivery;

+	

+	public Delivery getDelivery() {

+		return delivery;

+	}

+

+	public EndpointReference getEndToEPr() {

+		return endToEPr;

+	}

+

+	public void setDelivery(Delivery delivery) {

+		this.delivery = delivery;

+	}

+

+	public void setEndToEPr(EndpointReference errorReportingEPR) {

+		this.endToEPr = errorReportingEPR;

+	}

+	

+	public void doProtocolSpecificPublication(SavanMessageContext publication) throws SavanException {

+		

+		EndpointReference deliveryEPR  = delivery.getDeliveryEPR();

+		

+		try {

+			ServiceClient sc = new ServiceClient (publication.getConfigurationContext(),null);

+			

+			Options options = publication.getMessageContext().getOptions();

+			if (options==null) {

+				options = new Options ();

+			}

+			

+			sc.engageModule(new QName ("addressing"));

+			

+			options.setProperty("xmppasync", "true");

+			sc.setOptions(options);

+			

+			options.setTo(deliveryEPR);

+			MessageContext mc = new MessageContext ();

+			mc.setEnvelope(publication.getEnvelope());

+			OperationClient client = sc.createClient(ServiceClient.ANON_OUT_ONLY_OP);

+			client.addMessageContext(mc);

+			client.execute(true);

+		} catch (AxisFault e) {

+			throw new SavanException (e);

+		}

+		

+		

+	}

+

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingSubscriber.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingSubscriber.java
new file mode 100644
index 0000000..9d3fe36
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingSubscriber.java
@@ -0,0 +1,52 @@
+/*

+ * Copyright 2004,2005 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.savan.eventing.subscribers;

+

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.savan.eventing.Delivery;

+import org.apache.savan.subscribers.Subscriber;

+

+/**

+ * Defines methods common to all eventing subscribers.

+ */

+public interface EventingSubscriber extends Subscriber {

+	

+	/**

+	 * To get the EndTo EPR

+	 * @return

+	 */

+	EndpointReference getEndToEPr();

+	

+	/**

+	 * To get the Delivery object

+	 * @return

+	 */

+	Delivery getDelivery();

+	

+	/**

+	 * To se the Delivery object

+	 * @param delivery

+	 */

+	void setDelivery(Delivery delivery);

+	

+	/**

+	 * To set the EndTo EPR

+	 * @param errorReportingEPR

+	 */

+	void setEndToEPr(EndpointReference errorReportingEPR);

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingTopicSubscriber.java b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingTopicSubscriber.java
new file mode 100644
index 0000000..1db73f2
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/eventing/subscribers/EventingTopicSubscriber.java
@@ -0,0 +1,46 @@
+/*

+ * Copyright 2004,2005 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.savan.eventing.subscribers;

+

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.savan.eventing.Delivery;

+import org.apache.savan.subscribers.CompositeSubscriber;

+

+public class EventingTopicSubscriber extends CompositeSubscriber implements EventingSubscriber {

+	

+	private EndpointReference endToEPr;

+	

+	private Delivery delivery;

+	

+	public Delivery getDelivery() {

+		return delivery;

+	}

+

+	public EndpointReference getEndToEPr() {

+		return endToEPr;

+	}

+

+	public void setDelivery(Delivery delivery) {

+		this.delivery = delivery;

+	}

+

+	public void setEndToEPr(EndpointReference errorReportingEPR) {

+		this.endToEPr = errorReportingEPR;

+	}

+	

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/filters/EmptyFilter.java b/rampart_1_1/modules/savan/src/org/apache/savan/filters/EmptyFilter.java
new file mode 100644
index 0000000..79432e2
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/filters/EmptyFilter.java
@@ -0,0 +1,40 @@
+/*

+ * Copyright 2004,2005 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.savan.filters;

+

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.savan.SavanException;

+

+/**

+ * This filter does not do any affective filtering.

+ * May be the default for some protocols.

+ */

+public class EmptyFilter extends Filter {

+

+	public boolean checkEnvelopeCompliance(SOAPEnvelope envelope) throws SavanException {

+		return true;

+	}

+

+	public Object getFilterValue() {

+		return null;

+	}

+

+	public void setUp(OMNode element) {

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/filters/Filter.java b/rampart_1_1/modules/savan/src/org/apache/savan/filters/Filter.java
new file mode 100644
index 0000000..568cb5b
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/filters/Filter.java
@@ -0,0 +1,52 @@
+/*

+ * Copyright  1999-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.savan.filters;

+

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.savan.SavanException;

+

+/**

+ * Defines a filter used by Savan. 

+ *

+ */

+public abstract class Filter {

+	

+	/**

+	 * To check weather the passed envelope is compliant with the current filter.

+	 * @param envelope

+	 * @return

+	 * @throws SavanException

+	 */

+	public abstract boolean checkEnvelopeCompliance (SOAPEnvelope envelope) throws SavanException;

+	

+	/**

+	 * To initialize the filter. The filter value should be sent to the argument

+	 * (for e.g. As a OMText for a String)

+	 * 

+	 * @param element

+	 */

+	public abstract void setUp (OMNode element);

+	

+	/**

+	 * Returns a previously set filter value.

+	 * 

+	 * @return

+	 */

+	public abstract Object getFilterValue ();

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/filters/XPathBasedFilter.java b/rampart_1_1/modules/savan/src/org/apache/savan/filters/XPathBasedFilter.java
new file mode 100644
index 0000000..9b2c0c5
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/filters/XPathBasedFilter.java
@@ -0,0 +1,97 @@
+/*

+ * Copyright  1999-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.savan.filters;

+

+import java.util.List;

+

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.om.OMText;

+import org.apache.axiom.om.xpath.AXIOMXPath;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.savan.SavanException;

+/*

+ * Copyright  1999-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 org.jaxen.JaxenException;

+

+/**

+ * A filter that does filtering of messages based on a XPath string.

+ * 

+ */

+public class XPathBasedFilter extends Filter {

+

+	private String XPathString = null;

+	

+	public String getXPathString() {

+		return XPathString;

+	}

+

+	public void setXPathString(String XPathString) {

+		this.XPathString = XPathString;

+	}

+

+	/**

+	 * This method may fail due to the JIRA issues WS-Commons(40) amd WS-Commons (41)

+	 */

+	public boolean checkEnvelopeCompliance(SOAPEnvelope envelope) throws SavanException {

+		OMElement firstChild = envelope.getBody().getFirstElement();

+		if (firstChild==null)

+			return false;

+		

+		if (XPathString==null)

+			return true;

+		

+		try {

+			AXIOMXPath xpath = new AXIOMXPath (XPathString);

+			List resultList = xpath.selectNodes(firstChild);

+

+            return resultList.size() > 0;

+		} catch (JaxenException e) {

+			throw new SavanException (e);

+		}

+	}

+

+	public void setUp(OMNode element) {

+		if (!(element instanceof OMText))

+			throw new IllegalArgumentException ("Cannot determine a valid XPath string");

+		

+		OMText text = (OMText) element;

+		XPathString = text.getText();

+	}

+

+	public Object getFilterValue() {

+		return XPathString;

+	}

+

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/handlers/SavanInHandler.java b/rampart_1_1/modules/savan/src/org/apache/savan/handlers/SavanInHandler.java
new file mode 100644
index 0000000..50b3ca3
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/handlers/SavanInHandler.java
@@ -0,0 +1,102 @@
+/*

+ * Copyright  1999-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.savan.handlers;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.handlers.AbstractHandler;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.configuration.ConfigurationManager;

+import org.apache.savan.configuration.Protocol;

+import org.apache.savan.storage.SubscriberStore;

+import org.apache.savan.subscription.SubscriptionProcessor;

+import org.apache.savan.util.UtilFactory;

+import org.apache.savan.util.ProtocolManager;

+

+/**

+ * The handler of Savan in the InFlow.

+ * Will handle the control messages like subscription, renew, unsubscription.

+ * 

+ */

+public class SavanInHandler extends AbstractHandler  {

+

+	public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {

+		

+		SavanMessageContext smc = new SavanMessageContext (msgContext);

+		

+		//setting the Protocol

+		Protocol protocol = ProtocolManager.getMessageProtocol(smc);

+		smc.setProtocol(protocol);

+		

+		AxisService axisService = msgContext.getAxisService();

+		if (axisService==null)

+			throw new SavanException ("Service context is null");

+		

+		//setting the AbstractSubscriber Store

+		Parameter parameter = axisService.getParameter(SavanConstants.SUBSCRIBER_STORE);

+		if (parameter==null){

+			setSubscriberStore (smc);

+			parameter = axisService.getParameter(SavanConstants.SUBSCRIBER_STORE);

+		}

+		

+		UtilFactory utilFactory = smc.getProtocol().getUtilFactory();

+		utilFactory.initializeMessage (smc);

+		

+		int messageType = smc.getMessageType ();

+

+		SubscriptionProcessor processor = utilFactory.createSubscriptionProcessor ();

+		processor.init (smc);

+		if (messageType==SavanConstants.MessageTypes.SUBSCRIPTION_MESSAGE) {

+		   processor.subscribe(smc);

+		} else if (messageType==SavanConstants.MessageTypes.UNSUBSCRIPTION_MESSAGE) {

+			processor.unsubscribe(smc);

+		} else if (messageType==SavanConstants.MessageTypes.RENEW_MESSAGE) {

+			processor.renewSubscription(smc);

+		}

+        return InvocationResponse.CONTINUE;        

+	}

+	

+	private void setSubscriberStore (SavanMessageContext smc) throws SavanException {

+		MessageContext msgContext = smc.getMessageContext();

+		AxisService axisService = msgContext.getAxisService();

+		

+		Parameter parameter = axisService.getParameter(SavanConstants.SUBSCRIBER_STORE_KEY);

+		String subscriberStoreKey = SavanConstants.DEFAULT_SUBSCRIBER_STORE_KEY;

+		if (parameter!=null)

+			subscriberStoreKey = (String) parameter.getValue();

+		

+		ConfigurationManager configurationManager = (ConfigurationManager) smc.getConfigurationContext().getProperty(SavanConstants.CONFIGURATION_MANAGER);

+		SubscriberStore store = configurationManager.getSubscriberStoreInstance(subscriberStoreKey);

+

+		parameter = new Parameter ();

+		parameter.setName(SavanConstants.SUBSCRIBER_STORE);

+		parameter.setValue(store);

+		

+		try {

+			axisService.addParameter(parameter);

+		} catch (AxisFault e) {

+			throw new SavanException (e);

+		}

+		

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/handlers/SavanOutHandler.java b/rampart_1_1/modules/savan/src/org/apache/savan/handlers/SavanOutHandler.java
new file mode 100644
index 0000000..12bae9c
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/handlers/SavanOutHandler.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2004,2005 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.savan.handlers;
+
+import java.util.Iterator;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.savan.SavanConstants;
+import org.apache.savan.SavanException;
+import org.apache.savan.SavanMessageContext;
+import org.apache.savan.publication.PublicationReport;
+import org.apache.savan.storage.SubscriberStore;
+import org.apache.savan.subscribers.AbstractSubscriber;
+import org.apache.savan.util.CommonUtil;
+
+/**
+ * Handler of Savan in the outFlow.
+ * Notification messages should go through this handler and this will sent them to
+ * each subscriber based on their filter.
+ * 
+ */
+public class SavanOutHandler extends AbstractHandler {
+
+	Log log = LogFactory.getLog(SavanOutHandler.class);
+	
+	public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+
+		SavanMessageContext smc = new SavanMessageContext (msgContext);
+		int messagetype = smc.getMessageType();
+	
+		//TODO hv a better method to identify publication messages
+		if (messagetype == SavanConstants.MessageTypes.UNKNOWN) {
+			SavanMessageContext publication = new SavanMessageContext(msgContext);
+			SubscriberStore store = CommonUtil.getSubscriberStore(msgContext.getAxisService());
+			if (store != null) {
+				
+				//building the publication envelope
+				msgContext.getEnvelope().build();
+				
+				//this tell addressing to polulate the SOAP envelope with the new values set in the options object
+				//(i.e. by removing old headers) every time the message sent through it.
+				msgContext.setProperty(AddressingConstants.REPLACE_ADDRESSING_HEADERS, Boolean.TRUE);
+				
+				PublicationReport report = new PublicationReport();
+				Iterator iterator = store.retrieveAll();
+				while (iterator.hasNext()) {
+					AbstractSubscriber subscriber = (AbstractSubscriber) iterator.next();
+					try {
+						subscriber.processPublication (publication, report);
+					} catch (SavanException e) {
+						report.addErrorReportEntry(subscriber.getId(),e);
+						e.printStackTrace();
+					}
+					
+					//TODO do something with the report.
+				}
+			} else {
+				String message = "Couldnt send the message since the subscriber storage was not found";
+				log.debug(message);
+			}
+			
+            msgContext.pause();
+            return InvocationResponse.SUSPEND;        
+		}
+        return InvocationResponse.CONTINUE;        
+
+	}
+
+}
diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/MessageReceiverDeligater.java b/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/MessageReceiverDeligater.java
new file mode 100644
index 0000000..96a55f8
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/MessageReceiverDeligater.java
@@ -0,0 +1,69 @@
+/*

+ * Copyright  1999-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.savan.messagereceiver;

+

+import org.apache.axis2.context.MessageContext;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+

+/**

+ * Provide abstract functions that may be done by protocols at the MessageReceiver level.

+ *

+ */

+public interface MessageReceiverDeligater {

+	

+	/**

+	 * Handles a subscription request at the MessageReceiver level.

+	 * (may possibly send a subscription response).

+	 * 

+	 * @param subscriptionMessage

+	 * @param outMessage

+	 * @throws SavanException

+	 */

+	void handleSubscriptionRequest (SavanMessageContext subscriptionMessage, MessageContext outMessage) throws SavanException ;

+	

+	/**

+	 * Handles a renew request at the MessageReceiver level.

+	 * (may possibly send a renew response)

+	 * 

+	 * @param renewMessage

+	 * @param outMessage

+	 * @throws SavanException

+	 */

+	void handleRenewRequest(SavanMessageContext renewMessage, MessageContext outMessage) throws SavanException;

+	

+	/**

+	 * Handles an EndSubscription request at the MessageReceiver level.

+	 * (may possibly send a EndSubscription response)

+	 * 

+	 * @param renewMessage

+	 * @param outMessage

+	 * @throws SavanException

+	 */

+	void handleEndSubscriptionRequest(SavanMessageContext renewMessage, MessageContext outMessage) throws SavanException;

+	

+	/**

+	 * Handles a GetStatus request at the MessageReceiver level.

+	 * (may possibly send a GetStatus response).

+	 * 

+	 * @param renewMessage

+	 * @param outMessage

+	 * @throws SavanException

+	 */

+	void handleGetStatusRequest (SavanMessageContext renewMessage, MessageContext outMessage) throws SavanException;

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/SavanInOnlyMessageReceiver.java b/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/SavanInOnlyMessageReceiver.java
new file mode 100644
index 0000000..d2d8647
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/SavanInOnlyMessageReceiver.java
@@ -0,0 +1,35 @@
+/*

+ * Copyright  1999-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.savan.messagereceiver;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.receivers.AbstractInMessageReceiver;

+

+/**

+ * InOnly message deceiver for Savan. 

+ * May get called for control messages depending on the protocol.

+ *

+ */

+public class SavanInOnlyMessageReceiver extends AbstractInMessageReceiver {

+

+	public void invokeBusinessLogic(MessageContext inMessage) throws AxisFault {

+	}

+

+

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/SavanInOutMessageReceiver.java b/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/SavanInOutMessageReceiver.java
new file mode 100644
index 0000000..0a26056
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/messagereceiver/SavanInOutMessageReceiver.java
@@ -0,0 +1,63 @@
+/*

+ * Copyright  1999-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.savan.messagereceiver;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.configuration.Protocol;

+import org.apache.savan.util.UtilFactory;

+

+/**

+ * InOut message deceiver for Savan. 

+ * May get called for control messages depending on the protocol.

+ */

+public class SavanInOutMessageReceiver extends AbstractInOutSyncMessageReceiver {

+

+	public void invokeBusinessLogic(MessageContext inMessage, MessageContext outMessage) throws AxisFault {

+

+		SavanMessageContext savanInMessage = new SavanMessageContext (inMessage);

+		

+//		Integer protocolVersion = (Integer) inMessage.getProperty(SavanConstants.PROTOCOL_VERSION);

+//		UtilFactory utilFactory = AbstractSavanUtilFactory.getUtilFactory(protocolVersion.intValue());

+		

+		Protocol protocol = savanInMessage.getProtocol();

+		if (protocol==null) {

+			throw new SavanException ("Protocol not found");

+		}

+		

+		UtilFactory utilFactory = protocol.getUtilFactory();

+		MessageReceiverDeligater deligator = utilFactory.createMessageReceiverDeligater();

+

+		int messageType = savanInMessage.getMessageType();

+		if (messageType==SavanConstants.MessageTypes.SUBSCRIPTION_MESSAGE) {

+			deligator.handleSubscriptionRequest(savanInMessage,outMessage);

+		} else if (messageType==SavanConstants.MessageTypes.RENEW_MESSAGE) {

+			deligator.handleRenewRequest (savanInMessage,outMessage);

+		} else if (messageType==SavanConstants.MessageTypes.UNSUBSCRIPTION_MESSAGE) {

+			deligator.handleEndSubscriptionRequest (savanInMessage,outMessage);

+		} else if (messageType==SavanConstants.MessageTypes.GET_STATUS_MESSAGE) {

+			deligator.handleGetStatusRequest (savanInMessage,outMessage);

+		}

+		

+	}

+

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/module/SavanModule.java b/rampart_1_1/modules/savan/src/org/apache/savan/module/SavanModule.java
new file mode 100644
index 0000000..55d1be2
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/module/SavanModule.java
@@ -0,0 +1,81 @@
+/*

+ * Copyright  1999-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.savan.module;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.description.AxisDescription;

+import org.apache.axis2.description.AxisModule;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.modules.Module;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+import org.apache.neethi.Assertion;

+import org.apache.neethi.Policy;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanException;

+import org.apache.savan.configuration.ConfigurationManager;

+import org.apache.savan.storage.SubscriberStore;

+

+/**

+ * Savan Module class. 

+ *

+ */

+public class SavanModule implements Module  {

+

+	private static final Log log = LogFactory.getLog(SavanModule.class);

+	

+	public void engageNotify(AxisDescription axisDescription) throws AxisFault {

+		//adding a subscriber store to the description

+		

+		if (axisDescription instanceof AxisService) { //TODO remove this restriction

+

+			//TODO set a suitable SubscriberStore for the service.

+			

+		}

+		

+	}

+

+	public void init(ConfigurationContext configContext, AxisModule module) throws AxisFault {

+		ConfigurationManager configurationManager = new ConfigurationManager ();

+		try {

+			ClassLoader moduleClassLoader = module.getModuleClassLoader();

+			configurationManager.configure(moduleClassLoader);

+		} catch (SavanException e) {

+			log.error ("Exception thrown while trying to configure the Savan module",e);

+		}

+		

+		configContext.setProperty(SavanConstants.CONFIGURATION_MANAGER,configurationManager);

+	}

+

+	public void shutdown(ConfigurationContext configurationContext) throws AxisFault {

+	}

+

+    public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault {

+        // TODO

+    }

+

+    public boolean canSupportAssertion(Assertion assertion) {

+        // TODO 

+        return true;

+    }

+    

+    

+

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/publication/PublicationReport.java b/rampart_1_1/modules/savan/src/org/apache/savan/publication/PublicationReport.java
new file mode 100644
index 0000000..8f2847a
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/publication/PublicationReport.java
@@ -0,0 +1,65 @@
+/*

+ * Copyright  1999-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.savan.publication;

+

+import java.util.ArrayList;

+import java.util.Hashtable;

+

+import org.apache.savan.SavanException;

+

+/**

+ * This will encapsulate error information of a specific publication.

+ * Probably will contain details of each subscriber to which the message could not

+ * be delivered successfully. 

+ */

+public class PublicationReport {

+

+	/**

+	 * The susbscribers to which this msg could not be sent. Probably their ID and the

+	 * Exception that occured.

+	 */

+	private Hashtable errors = null;

+	

+	/**

+	 * Ids of the subscribers to which this msg could be sent successfully.

+	 */

+	private ArrayList notifiedSubscribers;

+	

+	public PublicationReport () {

+		errors = new Hashtable ();

+		notifiedSubscribers = new ArrayList ();

+	}

+	

+	public void addErrorReportEntry (String id, SavanException reason) {

+		errors.put(id,reason);

+	}

+	

+	public void addNotifiedSubscriber (String subscriberID) {

+		notifiedSubscribers.add(subscriberID);

+	}

+

+	public Hashtable getErrors() {

+		return errors;

+	}

+

+	public ArrayList getNotifiedSubscribers() {

+		return notifiedSubscribers;

+	}

+	

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/publication/client/PublicationClient.java b/rampart_1_1/modules/savan/src/org/apache/savan/publication/client/PublicationClient.java
new file mode 100644
index 0000000..0db579c
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/publication/client/PublicationClient.java
@@ -0,0 +1,91 @@
+/*

+ * Copyright  1999-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.savan.publication.client;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.OperationClient;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.description.Parameter;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanException;

+import org.apache.savan.storage.SubscriberStore;

+

+/**

+ * This can be used to make the Publication Process easy.

+ * Handle things like engaging the savan module correctly and setting the

+ * correct subscriber store.

+ */

+public class PublicationClient {

+	

+	public static final String TEMP_PUBLICATION_ACTION = "UUID:TempPublicationAction";

+	

+	public static void sendPublication (SOAPEnvelope publication,ConfigurationContext configurationContext, SubscriberStore store) throws SavanException {

+		

+		try {

+			Options options = new Options ();

+			sendPublication(publication,configurationContext,options,store);

+			

+		} catch (AxisFault e) {

+			String message = "Could not send the publication";

+			throw new SavanException (message,e);

+		}

+	}

+	

+	public static void sendPublication (SOAPEnvelope publication,ConfigurationContext configurationContext, Options options, SubscriberStore store) throws SavanException {

+		

+		try {

+			ServiceClient sc = new ServiceClient (configurationContext,null);

+			

+			options.setTo(new EndpointReference ("http://temp.publication.URI"));

+			

+			if (options.getAction()==null)

+				options.setAction(TEMP_PUBLICATION_ACTION);

+			

+			sc.setOptions(options);

+			

+			//this will not be required when the 

+			Parameter parameter = new Parameter ();

+			parameter.setName(SavanConstants.SUBSCRIBER_STORE);

+			parameter.setValue(store);

+			sc.getAxisService().addParameter(parameter);

+			

+			//if already engaged, axis2 will neglect this engagement.

+			sc.engageModule( new QName("savan"));

+			

+			MessageContext mc = new MessageContext ();

+			mc.setEnvelope(publication);

+			OperationClient client = sc.createClient(ServiceClient.ANON_OUT_ONLY_OP);

+			client.addMessageContext(mc);

+			client.execute(true);

+		} catch (AxisFault e) {

+			String message = "Could not send the publication";

+			throw new SavanException (message,e);

+		}

+	}

+	

+	public static void endSubscription (String subscriberID) {

+		

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/storage/DefaultSubscriberStore.java b/rampart_1_1/modules/savan/src/org/apache/savan/storage/DefaultSubscriberStore.java
new file mode 100644
index 0000000..8cd38dc
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/storage/DefaultSubscriberStore.java
@@ -0,0 +1,63 @@
+/*

+ * Copyright  1999-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.savan.storage;

+

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.Iterator;

+

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.savan.SavanException;

+import org.apache.savan.subscribers.AbstractSubscriber;

+import org.apache.savan.subscribers.Subscriber;

+

+public class DefaultSubscriberStore implements SubscriberStore {

+

+	private HashMap subscriberMap = null;

+	

+	public DefaultSubscriberStore () {

+		subscriberMap = new HashMap ();

+	}

+	

+	public void init(ConfigurationContext configurationContext) throws SavanException {

+		// TODO Auto-generated method stub

+	}

+

+	public Subscriber retrieve(String id) {

+		return (AbstractSubscriber) subscriberMap.get(id);

+	}

+

+	public void store(Subscriber s) {

+		subscriberMap.put(s.getId(),s);

+	}

+

+	public void delete(String subscriberID) {

+		subscriberMap.remove(subscriberID);

+	}

+

+	public Iterator retrieveAll() {

+		ArrayList allSubscribers = new ArrayList ();

+		for (Iterator iter=subscriberMap.keySet().iterator();iter.hasNext();) {

+			Object key = iter.next();

+			allSubscribers.add(subscriberMap.get(key));

+		}

+		return allSubscribers.iterator();

+	}

+

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/storage/SubscriberStore.java b/rampart_1_1/modules/savan/src/org/apache/savan/storage/SubscriberStore.java
new file mode 100644
index 0000000..79657da
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/storage/SubscriberStore.java
@@ -0,0 +1,70 @@
+/*

+ * Copyright 2004,2005 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.savan.storage;

+

+import java.util.Iterator;

+

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.savan.SavanException;

+import org.apache.savan.subscribers.Subscriber;

+

+/**

+ * Defines the Storage for storing subscribers. 

+ */

+public interface SubscriberStore {

+

+	/**

+	 * To Initialize the storage.

+	 * 

+	 * @param configurationContext

+	 * @throws SavanException

+	 */

+	void init (ConfigurationContext configurationContext) throws SavanException;

+	

+	/**

+	 * To store the subscriber.

+	 * 

+	 * @param s

+	 * @throws SavanException

+	 */

+	void store (Subscriber s) throws SavanException;

+	

+	/**

+	 * To retrieve a previously stored subscriber.

+	 * 

+	 * @param subscriberID

+	 * @return

+	 * @throws SavanException

+	 */

+	Subscriber retrieve (String subscriberID) throws SavanException;

+	

+	/**

+	 * To retrieve all subscribers stored upto now.

+	 * 

+	 * @return

+	 * @throws SavanException

+	 */

+	Iterator retrieveAll () throws SavanException;

+	

+	/**

+	 * To delete a previously stored subscriber.

+	 * 

+	 * @param subscriberID

+	 * @throws SavanException

+	 */

+	void delete (String subscriberID) throws SavanException;

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/AbstractSubscriber.java b/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/AbstractSubscriber.java
new file mode 100644
index 0000000..18e88e9
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/AbstractSubscriber.java
@@ -0,0 +1,105 @@
+/*

+ * Copyright  1999-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.savan.subscribers;

+

+import java.util.Date;

+import java.util.HashMap;

+

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.filters.Filter;

+import org.apache.savan.publication.PublicationReport;

+import org.apache.savan.subscription.ExpirationBean;

+

+/**

+ * Defines a subscriber which is the entity that define a specific subscription 

+ * in savan. Independent of the protocol type.

+ *

+ */

+public abstract class AbstractSubscriber implements Subscriber {

+

+	String id;

+	Filter filter = null;

+	HashMap properties = null;

+	

+	public AbstractSubscriber () {

+		properties = new HashMap ();

+	}

+	

+	public void addProperty (String key, Object value) {

+		properties.put(key,value);

+	}

+	

+	public Object getProperty (String key) {

+		return properties.get(key);

+	}

+	

+	public Filter getFilter() {

+		return filter;

+	}

+

+	public void setFilter(Filter filter) {

+		this.filter = filter;

+	}

+

+	public String getId() {

+		return id;

+	}

+	

+	public void setId(String id) {

+		this.id = id;

+	}

+	

+	public boolean doesMessageBelongToTheFilter(SavanMessageContext smc) throws SavanException {

+		if (filter!=null) {

+			SOAPEnvelope envelope = smc.getEnvelope();

+			return filter.checkEnvelopeCompliance(envelope);

+		} else 

+			return true;

+	}

+	

+	/**

+	 * This method first checks weather the passed message complies with the current filter.

+	 * If so message is sent, and the subscriberID is added to the PublicationReport.

+	 * Else message is ignored.

+	 * 

+	 * @param smc

+	 * @param report

+	 * @throws SavanException

+	 */

+	public void processPublication (SavanMessageContext publication,PublicationReport report) throws SavanException {

+		if (doesMessageBelongToTheFilter(publication)) {

+			sendPublication(publication,report);

+			if (getId()!=null)

+				report.addNotifiedSubscriber(getId());

+		}

+	}

+	

+	public abstract void setSubscriptionEndingTime (Date subscriptionEndingTime);

+	public abstract void renewSubscription (ExpirationBean bean);

+	

+	/**

+	 * This should be used by based classes to sendThe publication in its own manner

+	 * 

+	 * @param publication

+	 * @param report

+	 * @throws SavanException

+	 */

+	protected abstract void sendPublication (SavanMessageContext publication,PublicationReport report) throws SavanException;

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/CompositeSubscriber.java b/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/CompositeSubscriber.java
new file mode 100644
index 0000000..ccb4395
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/CompositeSubscriber.java
@@ -0,0 +1,65 @@
+/*

+ * Copyright  1999-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.savan.subscribers;

+

+import java.util.ArrayList;

+import java.util.Date;

+import java.util.Iterator;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.publication.PublicationReport;

+import org.apache.savan.subscription.ExpirationBean;

+

+/**

+ * Defines a set of subscribers that are acting as a group or a Topic.

+ *

+ */

+public class CompositeSubscriber extends AbstractSubscriber {

+

+	ArrayList subscribers = null;

+	

+	public CompositeSubscriber (){

+		subscribers = new ArrayList ();

+	}

+	

+	public void addSubscriber (AbstractSubscriber subscriber) {

+		subscribers.add(subscriber);

+	}

+	

+	public void sendPublication(SavanMessageContext publication, PublicationReport report)  throws SavanException {

+		for (Iterator it = subscribers.iterator();it.hasNext();) {

+			AbstractSubscriber subscriber = (AbstractSubscriber) it.next();

+			subscriber.processPublication(publication,report);

+		}

+	}

+

+	public void renewSubscription(ExpirationBean bean) {

+		for (Iterator it = subscribers.iterator();it.hasNext();) {

+			AbstractSubscriber subscriber = (AbstractSubscriber) it.next();

+			subscriber.renewSubscription(bean);

+		}

+	}

+

+	public void setSubscriptionEndingTime(Date subscriptionEndingTime) {

+		for (Iterator it = subscribers.iterator();it.hasNext();) {

+			AbstractSubscriber subscriber = (AbstractSubscriber) it.next();

+			subscriber.setSubscriptionEndingTime(subscriptionEndingTime);

+		}

+	}

+

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/LeafSubscriber.java b/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/LeafSubscriber.java
new file mode 100644
index 0000000..b12ff70
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/LeafSubscriber.java
@@ -0,0 +1,93 @@
+/*

+ * Copyright  1999-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.savan.subscribers;

+

+import java.util.Calendar;

+import java.util.Date;

+

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.module.SavanModule;

+import org.apache.savan.publication.PublicationReport;

+import org.apache.savan.subscription.ExpirationBean;

+import org.apache.savan.util.CommonUtil;

+

+/**

+ *Defines a single node subscriber. 

+ *

+ */

+public abstract class LeafSubscriber extends AbstractSubscriber {

+	

+	private static final Log log = LogFactory.getLog(LeafSubscriber.class);

+	

+	/**

+	 * The time at which further notification of messages should be avaoded

+	 * to this subscriber.

+	 */

+	private Date subscriptionEndingTime = null;

+	

+	public void renewSubscription (ExpirationBean bean) {

+		if (bean.isDuration()) {

+			if (subscriptionEndingTime==null) {

+				Calendar calendar = Calendar.getInstance();

+				CommonUtil.addDurationToCalendar(calendar,bean.getDurationValue());

+				subscriptionEndingTime = calendar.getTime();

+			} else {

+				Calendar expiration = Calendar.getInstance();

+				expiration.setTime(subscriptionEndingTime);

+				CommonUtil.addDurationToCalendar(expiration,bean.getDurationValue());

+				subscriptionEndingTime = expiration.getTime();

+			}

+		} else

+			subscriptionEndingTime = bean.getDateValue();

+	}

+	

+	public Date getSubscriptionEndingTime () {

+		return subscriptionEndingTime;

+	}

+	

+	public void setSubscriptionEndingTime () {

+		

+	}

+	

+	public void sendPublication(SavanMessageContext publication,PublicationReport report) throws SavanException {

+		Date date = new Date ();

+		

+		boolean expired = false;

+		if (subscriptionEndingTime!=null && date.after(subscriptionEndingTime))

+			expired = true;

+		

+		if (expired) {

+			String message = "Cant notify the listner since the subscription has been expired";

+			log.debug(message);

+			

+			//TODO inform in some other manner than sending an exception.

+//			throw new SavanException (message);

+		}

+		

+		doProtocolSpecificPublication (publication);

+	}

+	

+	public void setSubscriptionEndingTime(Date subscriptionEndingTime) {

+		this.subscriptionEndingTime = subscriptionEndingTime;

+	}

+

+	public abstract void doProtocolSpecificPublication (SavanMessageContext publication) throws SavanException;

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/Subscriber.java b/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/Subscriber.java
new file mode 100644
index 0000000..3eaf411
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/subscribers/Subscriber.java
@@ -0,0 +1,100 @@
+/*

+ * Copyright 2004,2005 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.savan.subscribers;

+

+import java.util.Date;

+

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.filters.Filter;

+import org.apache.savan.publication.PublicationReport;

+import org.apache.savan.subscription.ExpirationBean;

+

+/**

+ * Defines methods common to all subscribers.

+ */

+public interface Subscriber {

+	

+	/**

+	 * To get the Filter object

+	 * @return

+	 */

+	Filter getFilter ();

+	

+	/**

+	 * To set the Filter object

+	 * @param filter

+	 */

+	void setFilter (Filter filter);

+	

+	/**

+	 * To get the subscriber Id.

+	 * @return

+	 */

+	String getId ();

+	

+	/**

+	 * To set the subscriber Id

+	 * @param id

+	 */

+	void setId (String id);

+	

+	/**

+	 * To add a property to the subscriber.

+	 * 

+	 * @param key

+	 * @param value

+	 */

+	void addProperty (String key, Object value);

+	

+	/**

+	 * To get a property from the Subscriber.

+	 * 

+	 * @param key

+	 * @return

+	 */

+	public Object getProperty (String key);

+	

+	/**

+	 * To check weather a certain message complies with the filter.

+	 * 

+	 * @param smc

+	 * @return

+	 * @throws SavanException

+	 */

+	boolean doesMessageBelongToTheFilter (SavanMessageContext smc) throws SavanException;

+	

+	

+	void processPublication (SavanMessageContext publication,PublicationReport report) throws SavanException;

+	

+	/**

+	 * To set the Subscription expiration time.

+	 * 

+	 * @param subscriptionEndingTime

+	 */

+	void setSubscriptionEndingTime (Date subscriptionEndingTime);

+	

+	/**

+	 * To renew a subscription.

+	 * 

+	 * @param bean

+	 */

+	void renewSubscription (ExpirationBean bean);

+

+	

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/subscription/ExpirationBean.java b/rampart_1_1/modules/savan/src/org/apache/savan/subscription/ExpirationBean.java
new file mode 100644
index 0000000..121584f
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/subscription/ExpirationBean.java
@@ -0,0 +1,65 @@
+/*

+ * Copyright  1999-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.savan.subscription;

+

+import java.util.Date;

+

+import org.apache.axis2.databinding.types.Duration;

+

+/**

+ * Defines a expiration. Could be based on a specific time in the future or a duration.

+ */

+public class ExpirationBean {

+

+	Date dateValue;

+	Duration durationValue;

+	String subscriberID;

+	boolean duration;

+	

+	public String getSubscriberID() {

+		return subscriberID;

+	}

+	

+	public void setSubscriberID(String subscriberID) {

+		this.subscriberID = subscriberID;

+	}

+	

+	public boolean isDuration() {

+		return duration;

+	}

+	

+	public void setDuration(boolean duration) {

+		this.duration = duration;

+	}

+

+	public Date getDateValue() {

+		return dateValue;

+	}

+

+	public Duration getDurationValue() {

+		return durationValue;

+	}

+

+	public void setDateValue(Date dateValue) {

+		this.dateValue = dateValue;

+	}

+

+	public void setDurationValue(Duration durationValue) {

+		this.durationValue = durationValue;

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/subscription/RenewBean.java b/rampart_1_1/modules/savan/src/org/apache/savan/subscription/RenewBean.java
new file mode 100644
index 0000000..e1da7ca
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/subscription/RenewBean.java
@@ -0,0 +1,42 @@
+/*

+ * Copyright  1999-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.savan.subscription;

+

+/**

+ * Encapsulates a data for a subscrpition renewal.

+ */

+public class RenewBean {

+

+	long renewMount;

+	String subscriberID;

+	

+	public long getRenewMount() {

+		return renewMount;

+	}

+	public String getSubscriberID() {

+		return subscriberID;

+	}

+	public void setRenewMount(long renewMount) {

+		this.renewMount = renewMount;

+	}

+	public void setSubscriberID(String subscriberID) {

+		this.subscriberID = subscriberID;

+	}

+	

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/subscription/SubscriptionProcessor.java b/rampart_1_1/modules/savan/src/org/apache/savan/subscription/SubscriptionProcessor.java
new file mode 100644
index 0000000..7ea8671
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/subscription/SubscriptionProcessor.java
@@ -0,0 +1,102 @@
+/*

+ * Copyright  1999-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.savan.subscription;

+

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.ServiceContext;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.storage.SubscriberStore;

+import org.apache.savan.subscribers.AbstractSubscriber;

+import org.apache.savan.subscribers.Subscriber;

+import org.apache.savan.util.CommonUtil;

+

+/**

+ * Abstractly defines subscription methods.

+ * Each protocol may extend this to add its own work.

+ */

+public abstract class SubscriptionProcessor {

+	

+	public abstract void init (SavanMessageContext smc) throws SavanException;

+	

+	public void unsubscribe(SavanMessageContext endSubscriptionMessage)  throws SavanException {

+		String subscriberID = getSubscriberID (endSubscriptionMessage);

+		if (subscriberID==null) {

+			String message = "Cannot find the subscriber ID";

+			throw new SavanException (message);

+		}

+		

+		SubscriberStore store = endSubscriptionMessage.getSubscriberStore();

+		if (store==null)

+			throw new SavanException ("AbstractSubscriber store not found");

+		

+		store.delete (subscriberID);

+	}

+

+	public void renewSubscription(SavanMessageContext renewMessage)  throws SavanException {

+		SubscriberStore store = renewMessage.getSubscriberStore();

+		if (store==null)

+			throw new SavanException ("AbstractSubscriber store not found");

+			

+		ExpirationBean bean = getExpirationBean(renewMessage);

+		AbstractSubscriber subscriber = (AbstractSubscriber) store.retrieve(bean.getSubscriberID());

+		if (subscriber==null) {

+			throw new SavanException ("Given subscriber is not present");

+		}

+		

+		subscriber.renewSubscription(bean);

+	}

+

+	public void subscribe(SavanMessageContext subscriptionMessage) throws SavanException {

+		SubscriberStore store = subscriptionMessage.getSubscriberStore();

+		if (store==null)

+			throw new SavanException ("AbstractSubscriber store not found");

+			

+		if (store==null)

+			throw new SavanException ("Sabscriber store not found");

+		

+		Subscriber subscriber = getSubscriberFromMessage (subscriptionMessage);

+		store.store (subscriber);

+	}

+	

+	public void endSubscription(String subscriberID,String reason,ServiceContext serviceContext)  throws SavanException {

+		

+		SubscriberStore store =CommonUtil.getSubscriberStore(serviceContext.getAxisService());

+		if (store==null) {

+			//TODO do something

+		}

+		

+		Subscriber subscriber = store.retrieve(subscriberID);

+		doProtocolSpecificEndSubscription(subscriber,reason,serviceContext.getConfigurationContext());

+		

+		store.delete(subscriberID);

+	}

+	

+	public abstract void pauseSubscription (SavanMessageContext pauseSubscriptionMessage) throws SavanException;

+	

+	public abstract void resumeSubscription (SavanMessageContext resumeSubscriptionMessage) throws SavanException;

+	

+	public abstract Subscriber getSubscriberFromMessage (SavanMessageContext smc) throws SavanException;

+	

+	public abstract ExpirationBean getExpirationBean (SavanMessageContext renewMessage) throws SavanException;

+	

+	public abstract String getSubscriberID (SavanMessageContext smc) throws SavanException;

+	

+	public abstract void doProtocolSpecificEndSubscription (Subscriber subscriber,String reason,ConfigurationContext configurationContext) throws SavanException;

+

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/util/CommonUtil.java b/rampart_1_1/modules/savan/src/org/apache/savan/util/CommonUtil.java
new file mode 100644
index 0000000..10f2a16
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/util/CommonUtil.java
@@ -0,0 +1,89 @@
+/*

+ * Copyright  1999-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.savan.util;

+

+import java.io.File;

+import java.io.FileReader;

+import java.io.IOException;

+import java.util.Calendar;

+

+import javax.xml.stream.XMLInputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.XMLStreamReader;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.axis2.databinding.types.Duration;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.storage.SubscriberStore;

+

+/**

+ * A common set of methods that may be used in various places of Savan.

+ */

+public class CommonUtil {

+

+	public static Calendar addDurationToCalendar (Calendar calendar,Duration duration) {

+		calendar.add(Calendar.YEAR,duration.getYears());

+		calendar.add(Calendar.MONTH,duration.getMonths());

+		calendar.add(Calendar.DATE,duration.getDays());

+		calendar.add(Calendar.HOUR,duration.getHours());

+		calendar.add(Calendar.MINUTE,duration.getMinutes());

+		calendar.add(Calendar.SECOND,(int) duration.getSeconds());

+		

+		return calendar;

+	}

+	

+	/**

+	 * Will be used by test cases to load XML files from test-resources as Envelopes

+	 * SOAP 1.1 is assumed

+	 * 

+	 * @param path

+	 * @param name

+	 * @return

+	 */

+	public static SOAPEnvelope getTestEnvelopeFromFile (String path, String name) throws IOException {

+        try {

+        	String fullName = path + File.separator + name;

+            FileReader reader = new FileReader(fullName);

+            XMLStreamReader streamReader = XMLInputFactory.newInstance().createXMLStreamReader(

+                    reader);

+            StAXSOAPModelBuilder builder = OMXMLBuilderFactory.createStAXSOAPModelBuilder(

+                    OMAbstractFactory.getSOAP11Factory(), streamReader);

+            return builder.getSOAPEnvelope();

+        } catch (XMLStreamException e) {

+            throw new RuntimeException(e);

+        }

+	}

+	

+	public static boolean isDuration (String timeStr) {

+        return timeStr.startsWith("p") || timeStr.startsWith("P") || timeStr.startsWith("-p") || timeStr.startsWith("-P");

+

+    }

+	

+	public static SubscriberStore getSubscriberStore (AxisService axisService) {

+		Parameter parameter = axisService.getParameter(SavanConstants.SUBSCRIBER_STORE);

+		if (parameter==null)

+			return null;

+		

+		return (SubscriberStore) parameter.getValue();

+	}

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/util/ProtocolManager.java b/rampart_1_1/modules/savan/src/org/apache/savan/util/ProtocolManager.java
new file mode 100644
index 0000000..88d6400
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/util/ProtocolManager.java
@@ -0,0 +1,42 @@
+/*

+ * Copyright  1999-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.savan.util;

+

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.configuration.ConfigurationManager;

+import org.apache.savan.configuration.Protocol;

+

+/**

+ * Utility class to extract the Protocol type from a MessageContext

+ */

+public class ProtocolManager {

+

+	public static Protocol getMessageProtocol (SavanMessageContext smc) throws SavanException {

+		//TODO to this depending on Protocol rules. //TODO make this algorithm efficient

+		

+		ConfigurationManager configurationManager = (ConfigurationManager) smc.getConfigurationContext().getProperty(SavanConstants.CONFIGURATION_MANAGER);

+		if (configurationManager==null)

+			throw new SavanException ("Cant find the Configuration Manager");

+		

+		return (Protocol) configurationManager.getProtocolMap().get("eventing");

+		

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/src/org/apache/savan/util/UtilFactory.java b/rampart_1_1/modules/savan/src/org/apache/savan/util/UtilFactory.java
new file mode 100644
index 0000000..47fa8b4
--- /dev/null
+++ b/rampart_1_1/modules/savan/src/org/apache/savan/util/UtilFactory.java
@@ -0,0 +1,38 @@
+/*

+ * Copyright  1999-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.savan.util;

+

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.filters.Filter;

+import org.apache.savan.messagereceiver.MessageReceiverDeligater;

+import org.apache.savan.subscribers.AbstractSubscriber;

+import org.apache.savan.subscription.SubscriptionProcessor;

+

+/**

+ * Defines a Utility Factory in Savan. Each Protocol will provide its own set of 

+ * utilities.

+ * These utilities will be used in various levels in Savan.

+ */

+public interface UtilFactory {

+	

+	public abstract SavanMessageContext initializeMessage (SavanMessageContext messageContext);

+	public abstract SubscriptionProcessor createSubscriptionProcessor ();

+	public abstract MessageReceiverDeligater createMessageReceiverDeligater ();

+//	public abstract AbstractSubscriber createSubscriber ();

+	

+}

diff --git a/rampart_1_1/modules/savan/test-resources/eventing-renew-datetime.xml b/rampart_1_1/modules/savan/test-resources/eventing-renew-datetime.xml
new file mode 100644
index 0000000..1a34fcd
--- /dev/null
+++ b/rampart_1_1/modules/savan/test-resources/eventing-renew-datetime.xml
@@ -0,0 +1,14 @@
+<s12:Envelope 

+xmlns:s12='http://www.w3.org/2003/05/soap-envelope' 

+xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/08/addressing' 

+xmlns:wse='http://schemas.xmlsoap.org/ws/2004/08/eventing' 

+xmlns:ow='http://www.example.org/oceanwatch' > 

+	<s12:Header> 

+          <wse:Identifier>UUID:DummySubscriberID</wse:Identifier>

+	</s12:Header> 

+	<s12:Body> 

+		<wse:Renew> 

+			<wse:Expires>2004-06-26T21:07:00.000-08:00</wse:Expires> 

+		</wse:Renew> 

+	</s12:Body> 

+</s12:Envelope> 

diff --git a/rampart_1_1/modules/savan/test-resources/eventing-renew-duration.xml b/rampart_1_1/modules/savan/test-resources/eventing-renew-duration.xml
new file mode 100644
index 0000000..4561cce
--- /dev/null
+++ b/rampart_1_1/modules/savan/test-resources/eventing-renew-duration.xml
@@ -0,0 +1,14 @@
+<s12:Envelope 

+xmlns:s12='http://www.w3.org/2003/05/soap-envelope' 

+xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/08/addressing' 

+xmlns:wse='http://schemas.xmlsoap.org/ws/2004/08/eventing' 

+xmlns:ow='http://www.example.org/oceanwatch' > 

+	<s12:Header> 

+          <wse:Identifier>UUID:DummySubscriberID</wse:Identifier>

+	</s12:Header> 

+	<s12:Body> 

+		<wse:Renew> 

+			<wse:Expires>P1Y2M3DT10H30M</wse:Expires> 

+		</wse:Renew> 

+	</s12:Body> 

+</s12:Envelope> 
\ No newline at end of file
diff --git a/rampart_1_1/modules/savan/test-resources/eventing-subscription.xml b/rampart_1_1/modules/savan/test-resources/eventing-subscription.xml
new file mode 100644
index 0000000..8b27b5d
--- /dev/null
+++ b/rampart_1_1/modules/savan/test-resources/eventing-subscription.xml
@@ -0,0 +1,28 @@
+<s12:Envelope 

+ xmlns:s12='http://www.w3.org/2003/05/soap-envelope' 

+ xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/08/addressing' 

+ xmlns:wse='http://schemas.xmlsoap.org/ws/2004/08/eventing' 

+ xmlns:ew='http://www.example.com/warnings' > 

+ 	<s12:Header /> 

+ 	<s12:Body> 

+ 	<wse:Subscribe> 

+ 		<wse:EndTo> 

+ 			<wsa:Address>http://www.example.com/MyEventSink</wsa:Address> 

+ 			<wsa:ReferenceProperties> 

+ 				<ew:MySubscription>2597</ew:MySubscription> 

+ 			</wsa:ReferenceProperties> 

+ 		</wse:EndTo> 

+ 		<wse:Delivery> 

+ 			<wse:NotifyTo> 

+ 				<wsa:Address>http://www.other.example.com/OnStormWarning</wsa:Address> 

+ 				<wsa:ReferenceProperties> 

+ 					<ew:MySubscription>2597</ew:MySubscription> 

+ 				</wsa:ReferenceProperties> 

+ 			</wse:NotifyTo> 

+ 		</wse:Delivery> 

+ 		<wse:Expires>2004-06-26T21:07:00.000-08:00</wse:Expires> 

+ 		<wse:Filter xmlns:ow='http://www.example.org/oceanwatch' 

+ 		Dialect='http://www.w3.org/TR/1999/REC-xpath-19991116'>/</wse:Filter> 

+ 	</wse:Subscribe> 

+ </s12:Body> 

+ </s12:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/savan/test-resources/savan-config-test.xml b/rampart_1_1/modules/savan/test-resources/savan-config-test.xml
new file mode 100644
index 0000000..1773586
--- /dev/null
+++ b/rampart_1_1/modules/savan/test-resources/savan-config-test.xml
@@ -0,0 +1,61 @@
+<savan-config>

+

+    <protocols>

+        <protocol>

+        	<name>eventing</name>

+        	<utilFactory>org.apache.savan.eventing.EventingUtilFactory</utilFactory>

+        	<mapping-rules>

+                <action>http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</action>

+                <action>http://schemas.xmlsoap.org/ws/2004/08/eventing/Renew</action>

+                <action>http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus</action>

+                <action>http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</action>

+        	</mapping-rules>

+        	<defaultSubscriber>eventing-leaf</defaultSubscriber>

+        	<defaultFilter>empty</defaultFilter>

+        	<!--

+        	<parameters>

+        	    <parameter>

+        	        <name>eventing-topic-subscriber</name>

+        	        <value>eventing-topic</value>

+        	    </parameter>

+        	</parameters>

+        	-->

+        </protocol>

+    </protocols>

+    

+    <subscriberStores>

+    	<subscriberStore>

+    		<key>default</key>

+    		<class>org.apache.savan.storage.DefaultSubscriberStore</class>

+    	</subscriberStore>

+    </subscriberStores>

+    

+    <filters>

+        <filter>

+            <name>empty</name>

+    		<identifier>empty</identifier>

+    		<class>org.apache.savan.filters.EmptyFilter</class>

+    	</filter>

+    	<filter>

+    	    <name>xpath</name>

+    		<identifier>http://www.w3.org/TR/1999/REC-xpath-19991116</identifier>

+    		<class>org.apache.savan.filters.XPathBasedFilter</class>

+    	</filter>

+    </filters>

+    

+    <subscribers>

+    	<subscriber>

+    		<name>composite</name>

+    		<class>org.apache.savan.subscribers.CompositeSubscriber</class>

+    	</subscriber>

+    	<subscriber>

+    		<name>eventing-leaf</name>

+    		<class>org.apache.savan.eventing.subscribers.EventingLeafSubscriber</class>

+    	</subscriber>

+    	 <subscriber>

+    		<name>eventing-topic</name>

+    		<class>org.apache.savan.eventing.subscribers.EventingTopicSubscriber</class>

+    	</subscriber>

+    </subscribers>

+    

+</savan-config>
\ No newline at end of file
diff --git a/rampart_1_1/modules/savan/test/org/apache/axis2/savan/CompositeSubscriberTest.java b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/CompositeSubscriberTest.java
new file mode 100644
index 0000000..2f36810
--- /dev/null
+++ b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/CompositeSubscriberTest.java
@@ -0,0 +1,61 @@
+/*

+ * Copyright 2004,2005 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.axis2.savan;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.context.MessageContext;

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.publication.PublicationReport;

+import org.apache.savan.subscribers.CompositeSubscriber;

+import org.apache.savan.subscribers.LeafSubscriber;

+

+public class CompositeSubscriberTest extends TestCase {

+

+	public void testSubscribers () throws SavanException {

+		

+		MessageContext mc = new MessageContext ();

+		SavanMessageContext smc = new SavanMessageContext (mc);

+		

+		LeafSubscriberImpl leafSubscriber1 = new LeafSubscriberImpl ();

+		LeafSubscriberImpl leafSubscriber2 = new LeafSubscriberImpl ();

+		CompositeSubscriber compositeSubscriber = new CompositeSubscriber ();

+		

+		compositeSubscriber.addSubscriber(leafSubscriber1);

+		compositeSubscriber.addSubscriber(leafSubscriber2);

+		

+		PublicationReport report = new PublicationReport ();

+		compositeSubscriber.sendPublication(smc,report);

+		assertTrue(leafSubscriber1.isNotified());

+		assertTrue(leafSubscriber2.isNotified());

+	}

+	

+	class LeafSubscriberImpl extends LeafSubscriber {

+		

+		boolean notified = false;

+		

+		public void doProtocolSpecificPublication(SavanMessageContext notificationMessage) {

+			notified = true;

+		}

+		

+		public boolean isNotified () {

+			return notified;

+		}

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/test/org/apache/axis2/savan/ConfigurationManagerTest.java b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/ConfigurationManagerTest.java
new file mode 100644
index 0000000..b36e776
--- /dev/null
+++ b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/ConfigurationManagerTest.java
@@ -0,0 +1,43 @@
+/*

+ * Copyright 2004,2005 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.axis2.savan;

+

+import java.io.File;

+

+import org.apache.savan.SavanException;

+import org.apache.savan.configuration.ConfigurationManager;

+

+import junit.framework.TestCase;

+

+public class ConfigurationManagerTest extends TestCase {

+

+	public void testFromXMLFile () throws SavanException {

+		

+        File baseDir = new File("");

+        String testRource = baseDir.getAbsolutePath() + File.separator + "test-resources";

+        String testConfigurationFile = testRource + File.separator + "savan-config-test.xml";

+        

+		File f = new File (testConfigurationFile);  //test-resources configuration file.

+		if (!f.isFile())

+			throw new SavanException ("Cant find the test configuration file");

+		

+		ConfigurationManager cm = new ConfigurationManager ();

+		cm.configure(f);

+		

+		

+	}

+}

diff --git a/rampart_1_1/modules/savan/test/org/apache/axis2/savan/ConpositeSubscriberTest.java b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/ConpositeSubscriberTest.java
new file mode 100644
index 0000000..f3413c0
--- /dev/null
+++ b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/ConpositeSubscriberTest.java
@@ -0,0 +1,54 @@
+/*
+* Copyright 2004,2005 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.axis2.savan;

+

+import org.apache.savan.SavanException;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.subscribers.CompositeSubscriber;

+import org.apache.savan.subscribers.LeafSubscriber;

+

+import junit.framework.TestCase;

+

+public class ConpositeSubscriberTest extends TestCase {

+

+	public void testSubscribers () throws SavanException {

+		LeafSubscriberImpl leafSubscriber1 = new LeafSubscriberImpl ();

+		LeafSubscriberImpl leafSubscriber2 = new LeafSubscriberImpl ();

+		CompositeSubscriber compositeSubscriber = new CompositeSubscriber ();

+		

+		compositeSubscriber.addSubscriber(leafSubscriber1);

+		compositeSubscriber.addSubscriber(leafSubscriber2);

+		

+		compositeSubscriber.sendPublication(null,null);

+		assertTrue(leafSubscriber1.isNotified());

+		assertTrue(leafSubscriber2.isNotified());

+	}

+	

+	class LeafSubscriberImpl extends LeafSubscriber {

+		

+		boolean notified = false;

+		

+		public void doProtocolSpecificPublication(SavanMessageContext notificationMessage) {

+			notified = true;

+		}

+		

+		public boolean isNotified () {

+			return notified;

+		}

+	}

+	

+}

diff --git a/rampart_1_1/modules/savan/test/org/apache/axis2/savan/EventingExpirationTypesTest.java b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/EventingExpirationTypesTest.java
new file mode 100644
index 0000000..6a58798
--- /dev/null
+++ b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/EventingExpirationTypesTest.java
@@ -0,0 +1,80 @@
+/*

+ * Copyright 2004,2005 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.axis2.savan;

+

+import java.io.File;

+import java.io.IOException;

+import java.util.Date;

+import javax.xml.namespace.QName;

+import junit.framework.TestCase;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.databinding.types.Duration;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.eventing.EventingSubscriptionProcessor;

+import org.apache.savan.subscription.ExpirationBean;

+import org.apache.savan.util.CommonUtil;

+

+public class EventingExpirationTypesTest extends TestCase {

+

+	public void testDuration () throws Exception {

+		SavanMessageContext renewMessage = getRenewMessage("eventing-renew-duration.xml");

+		EventingSubscriptionProcessor processor = new EventingSubscriptionProcessor ();

+		ExpirationBean expirationBean = processor.getExpirationBean(renewMessage);

+		assertTrue(expirationBean.isDuration());

+		

+		Duration duration = ConverterUtil.convertToDuration("P1Y2M3DT10H30M");

+		assertEquals(duration,expirationBean.getDurationValue());

+		assertEquals (expirationBean.getSubscriberID(),"UUID:DummySubscriberID");

+	}

+	

+	public void testDateTime () throws Exception {

+		SavanMessageContext renewMessage = getRenewMessage("eventing-renew-datetime.xml");

+		EventingSubscriptionProcessor processor = new EventingSubscriptionProcessor ();

+		ExpirationBean expirationBean = processor.getExpirationBean(renewMessage);

+		assertFalse(expirationBean.isDuration());

+		

+		Date date = ConverterUtil.convertToDateTime("2004-06-26T21:07:00.000-08:00").getTime();

+		assertEquals(expirationBean.getDateValue(),date);

+		assertEquals (expirationBean.getSubscriberID(),"UUID:DummySubscriberID");

+	}

+	

+	private SavanMessageContext getRenewMessage (String name) throws IOException {

+        File baseDir = new File("");

+        String testRource = baseDir.getAbsolutePath() + File.separator + "test-resources";

+

+		SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,name);

+		

+		MessageContext mc = new MessageContext ();

+		SavanMessageContext smc = new SavanMessageContext (mc);

+		mc.setEnvelope(envelope);

+		

+		Options options = new Options ();

+		options.setTo(new EndpointReference ("http://DummyToAddress/"));

+		

+		EndpointReference replyToEPR = new EndpointReference ("http://DummyReplyToAddress/");

+		replyToEPR.addReferenceParameter(new QName ("RefParam1"),"RefParamVal1");

+		options.setTo(replyToEPR);

+		

+		options.setAction("urn:uuid:DummyAction");

+		

+		return smc;

+	}

+}

diff --git a/rampart_1_1/modules/savan/test/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java
new file mode 100644
index 0000000..f26dd08
--- /dev/null
+++ b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java
@@ -0,0 +1,161 @@
+/*

+ * Copyright 2004,2005 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.axis2.savan;

+

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.databinding.utils.ConverterUtil;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.savan.SavanConstants;

+import org.apache.savan.SavanMessageContext;

+import org.apache.savan.configuration.ConfigurationManager;

+import org.apache.savan.configuration.Protocol;

+import org.apache.savan.eventing.EventingConstants;

+import org.apache.savan.eventing.EventingSubscriptionProcessor;

+import org.apache.savan.eventing.subscribers.EventingLeafSubscriber;

+import org.apache.savan.storage.DefaultSubscriberStore;

+import org.apache.savan.storage.SubscriberStore;

+import org.apache.savan.subscription.ExpirationBean;

+import org.apache.savan.util.CommonUtil;

+

+import javax.xml.namespace.QName;

+

+import java.io.File;

+import java.io.IOException;

+import java.util.Date;

+

+import junit.framework.TestCase;

+

+public class EventingSubscripitonProcessorTest extends TestCase {

+

+	private final String TEST_SAVAN_CONFIG = "savan-config-test.xml";

+	private final String EVENTING_PROTOCOL_NAME = "eventing";

+	

+	public void testSubscriberExtraction () throws Exception {

+		SavanMessageContext smc = getSubscriptionMessage();

+		

+//		Protocol protocol = new Protocol ();

+//		protocol.setName("eventing");

+//		protocol.setUtilFactory(new EventingUtilFactory ());

+//		protocol.setDefaultSubscriber("org.apache.savan.eventing.subscribers.EventingLeafSubscriber");

+		

+		SubscriberStore store = new DefaultSubscriberStore ();

+		

+//		smc.setProtocol(protocol);

+		

+		smc.setSubscriberStore(store);

+		

+		EventingSubscriptionProcessor esp = new EventingSubscriptionProcessor ();

+		EventingLeafSubscriber eventingSubscriber = (EventingLeafSubscriber) esp.getSubscriberFromMessage(smc);

+		assertNotNull(eventingSubscriber);

+		

+		assertNotNull(eventingSubscriber.getDelivery());

+		assertNotNull(eventingSubscriber.getDelivery().getDeliveryEPR());

+		assertNotNull(eventingSubscriber.getFilter());

+		assertNotNull(eventingSubscriber.getEndToEPr());

+		assertNotNull(eventingSubscriber.getId());

+		assertNotNull(eventingSubscriber.getSubscriptionEndingTime());

+		

+		assertEquals(eventingSubscriber.getDelivery().getDeliveryMode(),EventingConstants.DEFAULT_DELIVERY_MODE);

+		

+		assertEquals(eventingSubscriber.getDelivery().getDeliveryEPR().getAddress() ,"http://www.other.example.com/OnStormWarning");

+		assertEquals(eventingSubscriber.getEndToEPr().getAddress(),"http://www.example.com/MyEventSink");

+		Date date = ConverterUtil.convertToDateTime("2004-06-26T21:07:00.000-08:00").getTime();

+		assertEquals(eventingSubscriber.getSubscriptionEndingTime(),date);

+	}

+	

+	public void testExpirationBeanExtraction () throws Exception {

+		SavanMessageContext smc = getRenewMessage();

+		EventingSubscriptionProcessor esp = new EventingSubscriptionProcessor ();

+		ExpirationBean expirationBean = esp.getExpirationBean(smc);

+		

+		assertNotNull(expirationBean);

+		assertNotNull(expirationBean.getSubscriberID());

+		

+		Date date = ConverterUtil.convertToDateTime("2004-06-26T21:07:00.000-08:00").getTime();

+		assertEquals(expirationBean.getDateValue(),date);

+	}

+	

+	private SavanMessageContext getSubscriptionMessage () throws IOException {

+        File baseDir = new File("");

+        String testRource = baseDir.getAbsolutePath() + File.separator + "test-resources";

+

+		SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,"eventing-subscription.xml");

+		

+		AxisConfiguration axisConfiguration = new AxisConfiguration ();

+		ConfigurationContext configurationContext = new ConfigurationContext (axisConfiguration);

+		

+		MessageContext mc = new MessageContext ();

+		SavanMessageContext smc = new SavanMessageContext (mc);

+		mc.setEnvelope(envelope);

+		

+		mc.setConfigurationContext(configurationContext);

+		

+		Options options = new Options ();

+		options.setTo(new EndpointReference ("http://DummyToAddress/"));

+		

+		EndpointReference replyToEPR = new EndpointReference ("http://DummyReplyToAddress/");

+		replyToEPR.addReferenceParameter(new QName ("RefParam1"),"RefParamVal1");

+		options.setTo(replyToEPR);

+		

+		//adding a dummy AxisService to avoid NullPointer Exceptions.

+		mc.setAxisService(new AxisService ("DummyService"));

+		

+		options.setAction("urn:uuid:DummyAction");

+		

+		String savan_concig_file = testRource + File.separator + TEST_SAVAN_CONFIG;

+		File file = new File (savan_concig_file);

+		if (!file.exists())

+			throw new IOException (TEST_SAVAN_CONFIG + " file is not available in test-resources.");

+		

+		ConfigurationManager configurationManager = new ConfigurationManager ();

+		configurationManager.configure(file);

+		

+		configurationContext.setProperty(SavanConstants.CONFIGURATION_MANAGER,configurationManager);

+		

+		Protocol protocol = configurationManager.getProtocol(EVENTING_PROTOCOL_NAME);

+		smc.setProtocol(protocol);

+		

+		return smc;

+	}

+	

+	private SavanMessageContext getRenewMessage () throws IOException {

+        File baseDir = new File("");

+        String testRource = baseDir.getAbsolutePath() + File.separator + "test-resources";

+

+		SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,"eventing-renew-datetime.xml");

+		

+		MessageContext mc = new MessageContext ();

+		SavanMessageContext smc = new SavanMessageContext (mc);

+		mc.setEnvelope(envelope);

+		

+		Options options = new Options ();

+		options.setTo(new EndpointReference ("http://DummyToAddress/"));

+		

+		EndpointReference replyToEPR = new EndpointReference ("http://DummyReplyToAddress/");

+		replyToEPR.addReferenceParameter(new QName ("RefParam1"),"RefParamVal1");

+		options.setTo(replyToEPR);

+		

+		options.setAction("urn:uuid:DummyAction");

+		

+		return smc;

+	}

+}

diff --git a/rampart_1_1/modules/savan/test/org/apache/axis2/savan/XPathBasedFilterTest.java b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/XPathBasedFilterTest.java
new file mode 100644
index 0000000..8ba1dc1
--- /dev/null
+++ b/rampart_1_1/modules/savan/test/org/apache/axis2/savan/XPathBasedFilterTest.java
@@ -0,0 +1,69 @@
+/*

+ * Copyright  1999-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.axis2.savan;

+

+import junit.framework.TestCase;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMNode;

+import org.apache.axiom.om.OMText;

+import org.apache.axiom.soap.SOAPEnvelope;

+import org.apache.axiom.soap.SOAPFactory;

+import org.apache.axis2.AxisFault;

+import org.apache.savan.filters.Filter;

+import org.apache.savan.filters.XPathBasedFilter;

+

+public class XPathBasedFilterTest extends TestCase {

+

+	String filterString = "//elem1";

+	

+	public void testMessageFiltering () throws AxisFault {

+		SOAPEnvelope envelope = createTestEnvelope ();

+		

+		OMNode filterNode = getFilterElement ();

+		Filter filter = new XPathBasedFilter ();

+		filter.setUp(filterNode);

+		

+		assertTrue (filter.checkEnvelopeCompliance(envelope));

+	}

+	

+	private SOAPEnvelope createTestEnvelope () {

+		SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+		SOAPEnvelope envelope = factory.getDefaultEnvelope();

+		

+		OMElement elem1 = factory.createOMElement("elem1",null);

+		OMElement elem2 = factory.createOMElement("elem2",null);

+		OMElement elem3 = factory.createOMElement("elem3",null);

+

+		elem2.addChild(elem3);

+		elem1.addChild(elem2);

+		

+		envelope.getBody().addChild(elem1);

+		factory.createOMDocument().addChild(envelope);

+		

+		return envelope;

+	}

+	

+	private OMNode getFilterElement () {

+		SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

+		OMText text = factory.createOMText(filterString);

+		return text;

+	}

+	

+}

diff --git a/rampart_1_1/modules/secpolicy/maven.xml b/rampart_1_1/modules/secpolicy/maven.xml
new file mode 100644
index 0000000..6b78e3c
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/maven.xml
@@ -0,0 +1,20 @@
+<?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:u="jelly:util"

+    xmlns:maven="jelly:maven"

+    xmlns:deploy="deploy"

+    xmlns:ant="jelly:ant">

+    

+    <preGoal name="java:compile" >

+    	<copy toDir="target/classes/META-INF/">

+		<fileset dir="src/META-INF">

+			<include name="**/services/*"/>

+		</fileset>

+        </copy>

+    </preGoal>

+    

+</project>

diff --git a/rampart_1_1/modules/secpolicy/project.xml b/rampart_1_1/modules/secpolicy/project.xml
new file mode 100644
index 0000000..0300719
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/project.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <name>Apache Axis 2.0 - Security Policy</name>

+    <id>axis2-secpolicy</id>

+    <groupId>org.apache.axis2</groupId>

+    <description>Axis2 : WS-Security Policy implementation</description>

+

+    <dependencies>

+    	<dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-dom</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+			<groupId>${stax.impl.groupid}</groupId>

+			<artifactId>${stax.impl.artifactid}</artifactId>

+			<version>${stax.impl.version}</version>

+			<properties>

+				<module>true</module>

+			</properties>

+		</dependency>

+		<dependency>

+			<groupId>stax</groupId>

+			<artifactId>stax-api</artifactId>

+			<version>${stax.api.version}</version>

+			<properties>

+				<module>true</module>

+			</properties>

+		</dependency>

+		<dependency>

+			<groupId>commons-logging</groupId>

+			<artifactId>commons-logging</artifactId>

+			<version>${commons.logging.version}</version>

+			<properties>

+				<module>true</module>

+			</properties>

+		</dependency>

+    	<dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>${neethi.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+	

+    </dependencies>

+    <!-- build information for the project -->

+    <build>

+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>

+        <sourceDirectory>src</sourceDirectory>

+        <unitTestSourceDirectory>test</unitTestSourceDirectory>

+

+        <unitTest>

+            <includes>

+                <include>**/*Test.java</include>

+            </includes>

+        </unitTest>

+	</build>

+    <reports/>

+</project>

diff --git a/rampart_1_1/modules/secpolicy/src/META-INF/services/org.apache.neethi.builders.AssertionBuilder b/rampart_1_1/modules/secpolicy/src/META-INF/services/org.apache.neethi.builders.AssertionBuilder
new file mode 100644
index 0000000..ddebc4b
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/META-INF/services/org.apache.neethi.builders.AssertionBuilder
@@ -0,0 +1,22 @@
+org.apache.ws.secpolicy.builders.AlgorithmSuiteBuilder
+org.apache.ws.secpolicy.builders.AsymmetricBindingBuilder
+org.apache.ws.secpolicy.builders.EncryptedElementsBuilder
+org.apache.ws.secpolicy.builders.EncryptedPartsBuilder
+org.apache.ws.secpolicy.builders.InitiatorTokenBuilder
+org.apache.ws.secpolicy.builders.LayoutBuilder
+org.apache.ws.secpolicy.builders.ProtectionTokenBuilder
+org.apache.ws.secpolicy.builders.RecipientTokenBuilder
+org.apache.ws.secpolicy.builders.SignedElementsBuilder
+org.apache.ws.secpolicy.builders.SignedPartsBuilder
+org.apache.ws.secpolicy.builders.SupportingTokensBuilder
+org.apache.ws.secpolicy.builders.TransportBindingBuilder
+org.apache.ws.secpolicy.builders.TransportTokenBuilder
+org.apache.ws.secpolicy.builders.UsernameTokenBuilder
+org.apache.ws.secpolicy.builders.WSS10Builder
+org.apache.ws.secpolicy.builders.WSS11Builder
+org.apache.ws.secpolicy.builders.X509TokenBuilder
+org.apache.ws.secpolicy.builders.Trust10Builder
+org.apache.ws.secpolicy.builders.SecurityContextTokenBuilder
+org.apache.ws.secpolicy.builders.SecureConversationTokenBuilder
+org.apache.ws.secpolicy.builders.SymmetricBindingBuilder
+org.apache.ws.secpolicy.builders.IssuedTokenBuilder
\ No newline at end of file
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/Constants.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/Constants.java
new file mode 100644
index 0000000..be7066a
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/Constants.java
@@ -0,0 +1,435 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy;
+
+import javax.xml.namespace.QName;
+
+public class Constants {
+
+    public static final String P_NS = "http://schemas.xmlsoap.org/ws/2004/09/policy";
+
+    public static final String P_PREFIX = "wsp";
+
+    public static final QName POLICY = new QName(P_NS, "Policy", P_PREFIX);
+
+    public final static String SP_NS = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";
+
+    public final static String SP_PREFIX = "sp";
+
+    public final static String ATTR_INCLUDE_TOKEN = "IncludeToken";
+
+    public final static String INCLUDE_NEVER = Constants.SP_NS
+            + "/IncludeToken/Never";
+
+    public final static String INCLUDE_ONCE = Constants.SP_NS
+            + "/IncludeToken/Once";
+
+    public final static String INCLUDE_ALWAYS_TO_RECIPIENT = Constants.SP_NS
+            + "/IncludeToken/AlwaysToRecipient";
+
+    public final static String INCLUDE_ALWAYS = Constants.SP_NS
+            + "/IncludeToken/Always";
+
+    public final static int SUPPORTING_TOKEN_SUPPORTING = 1;
+
+    public final static int SUPPORTING_TOKEN_ENDORSING = 2;
+
+    public final static int SUPPORTING_TOKEN_SIGNED = 3;
+
+    public final static int SUPPORTING_TOKEN_SIGNED_ENDORSING = 4;
+
+    /**
+     * Security Header Layout : Strict
+     */
+    public final static String LAYOUT_STRICT = "Strict";
+
+    /**
+     * Security Header Layout : Lax
+     */
+    public final static String LAYOUT_LAX = "Lax";
+
+    /**
+     * Security Header Layout : LaxTimestampFirst
+     */
+    public final static String LAYOUT_LAX_TIMESTAMP_FIRST = "LaxTimestampFirst";
+
+    /**
+     * Security Header Layout : LaxTimestampLast
+     */
+    public final static String LAYOUT_LAX_TIMESTAMP_LAST = "LaxTimestampLast";
+
+    /**
+     * Protection Order : EncryptBeforeSigning
+     */
+    public final static String ENCRYPT_BEFORE_SIGNING = "EncryptBeforeSigning";
+
+    /**
+     * Protection Order : SignBeforeEncrypting
+     */
+    public final static String SIGN_BEFORE_ENCRYPTING = "SignBeforeEncrypting";
+
+    public final static String ONLY_SIGN_ENTIRE_HEADERS_AND_BODY = "OnlySignEntireHeadersAndBody";
+
+    public final static String WSS_X509_V1_TOKEN10 = "WssX509V1Token10";
+
+    public final static String WSS_X509_V3_TOKEN10 = "WssX509V3Token10";
+
+    public final static String WSS_X509_PKCS7_TOKEN10 = "WssX509Pkcs7Token10";
+
+    public final static String WSS_X509_PKI_PATH_V1_TOKEN10 = "WssX509PkiPathV1Token10";
+
+    public final static String WSS_X509_V1_TOKEN11 = "WssX509V1Token11";
+
+    public final static String WSS_X509_V3_TOKEN11 = "WssX509V3Token11";
+
+    public final static String WSS_X509_PKCS7_TOKEN11 = "WssX509Pkcs7Token11";
+
+    public final static String WSS_X509_PKI_PATH_V1_TOKEN11 = "WssX509PkiPathV1Token11";
+
+    // /
+    // /Algorithm Suites
+    // /
+    public final static String ALGO_SUITE_BASIC256 = "Basic256";
+
+    public final static String ALGO_SUITE_BASIC192 = "Basic192";
+
+    public final static String ALGO_SUITE_BASIC128 = "Basic128";
+
+    public final static String ALGO_SUITE_TRIPLE_DES = "TripleDes";
+
+    public final static String ALGO_SUITE_BASIC256_RSA15 = "Basic256Rsa15";
+
+    public final static String ALGO_SUITE_BASIC192_RSA15 = "Basic192Rsa15";
+
+    public final static String ALGO_SUITE_BASIC128_RSA15 = "Basic128Rsa15";
+
+    public final static String ALGO_SUITE_TRIPLE_DES_RSA15 = "TripleDesRsa15";
+
+    public final static String ALGO_SUITE_BASIC256_SHA256 = "Basic256Sha256";
+
+    public final static String ALGO_SUITE_BASIC192_SHA256 = "Basic192Sha256";
+
+    public final static String ALGO_SUITE_BASIC128_SHA256 = "Basic128Sha256";
+
+    public final static String ALGO_SUITE_TRIPLE_DES_SHA256 = "TripleDesSha256";
+
+    public final static String ALGO_SUITE_BASIC256_SHA256_RSA15 = "Basic256Sha256Rsa15";
+
+    public final static String ALGO_SUITE_BASIC192_SHA256_RSA15 = "Basic192Sha256Rsa15";
+
+    public final static String ALGO_SUITE_BASIC128_SHA256_RSA15 = "Basic128Sha256Rsa15";
+
+    public final static String ALGO_SUITE_TRIPLE_DES_SHA256_RSA15 = "TripleDesSha256Rsa15";
+
+    // /
+    // /Algorithms
+    // /
+    public final static String HMAC_SHA1 = "http://www.w3.org/2000/09/xmldsig#hmac-sha1";
+
+    public final static String RSA_SHA1 = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
+
+    public final static String SHA1 = "http://www.w3.org/2000/09/xmldsig#sha1";
+
+    public final static String SHA256 = "http://www.w3.org/2001/04/xmlenc#sha256";
+
+    public final static String SHA512 = "http://www.w3.org/2001/04/xmlenc#sha512";
+
+    public final static String AES128 = "http://www.w3.org/2001/04/xmlenc#aes128-cbc";
+
+    public final static String AES192 = "http://www.w3.org/2001/04/xmlenc#aes192-cbc";
+
+    public final static String AES256 = "http://www.w3.org/2001/04/xmlenc#aes256-cbc";
+
+    public final static String TRIPLE_DES = "http://www.w3.org/2001/04/xmlenc#tripledes-cbc";
+
+    public final static String KW_AES128 = "http://www.w3.org/2001/04/xmlenc#kw-aes128";
+
+    public final static String KW_AES192 = "http://www.w3.org/2001/04/xmlenc#kw-aes192";
+
+    public final static String KW_AES256 = "http://www.w3.org/2001/04/xmlenc#kw-aes256";
+
+    public final static String KW_TRIPLE_DES = "http://www.w3.org/2001/04/xmlenc#kw-tripledes";
+
+    public final static String KW_RSA_OAEP = "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p";
+
+    public final static String KW_RSA15 = "http://www.w3.org/2001/04/xmlenc#rsa-1_5";
+
+    public final static String P_SHA1 = "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1";
+
+    public final static String P_SHA1_L128 = "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1";
+
+    public final static String P_SHA1_L192 = "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1";
+
+    public final static String P_SHA1_L256 = "http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1";
+
+    public final static String XPATH = "http://www.w3.org/TR/1999/REC-xpath-19991116";
+
+    public final static String XPATH20 = "http://www.w3.org/2002/06/xmldsig-filter2";
+
+    public final static String C14N = "http://www.w3.org/2001/10/xml-c14n#";
+
+    public final static String EX_C14N = "http://www.w3.org/2001/10/xml-exc-c14n#";
+
+    public final static String SNT = "http://www.w3.org/TR/soap12-n11n";
+
+    public final static String STRT10 = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform";
+
+    // //////////////////////////////////////////////////////////////////////
+
+    public static final String INCLUSIVE_C14N = "InclusiveC14N";
+
+    public static final String SOAP_NORMALIZATION_10 = "SoapNormalization10";
+
+    public static final String STR_TRANSFORM_10 = "STRTransform10";
+
+    public static final String XPATH10 = "XPath10";
+
+    public static final String XPATH_FILTER20 = "XPathFilter20";
+
+    // /////////////////////////////////////////////////////////////////////
+
+    public static final QName ATTR_XPATH_VERSION = new QName(SP_NS, "XPathVersion", Constants.SP_PREFIX);
+    
+    ////////////////////////////////////////////////////////////////////////
+    public static final QName INCLUDE_TOKEN = new QName(SP_NS, "IncludeToken",
+            Constants.SP_PREFIX);
+
+    public static final QName TRANSPORT_BINDING = new QName(SP_NS,
+            "TransportBinding", Constants.SP_PREFIX);
+
+    public static final QName ALGORITHM_SUITE = new QName(SP_NS,
+            "AlgorithmSuite", Constants.SP_PREFIX);
+
+    public static final QName LAYOUT = new QName(SP_NS, "Layout", SP_PREFIX);
+
+    // ///////////////////
+
+    public static final QName STRICT = new QName(Constants.SP_NS, "Strict",
+            Constants.SP_PREFIX);
+
+    public static final QName LAX = new QName(Constants.SP_NS, "Lax",
+            Constants.SP_PREFIX);
+
+    public static final QName LAXTSFIRST = new QName(Constants.SP_NS,
+            "LaxTsFirst", Constants.SP_PREFIX);
+
+    public static final QName LAXTSLAST = new QName(Constants.SP_NS,
+            "LaxTsLast", Constants.SP_PREFIX);
+
+    // ////////////////
+
+    public static final QName INCLUDE_TIMESTAMP = new QName(SP_NS,
+            "IncludeTimestamp", Constants.SP_PREFIX);
+
+    public static final QName TRANSPORT_TOKEN = new QName(SP_NS,
+            "TransportToken", Constants.SP_PREFIX);
+
+    public static final QName HTTPS_TOKEN = new QName(Constants.SP_NS,
+            "HttpsToken", Constants.SP_PREFIX);
+
+    public static final QName SECURITY_CONTEXT_TOKEN = new QName(
+            Constants.SP_NS, "SecurityContextToken", Constants.SP_PREFIX);
+
+    public static final QName SECURE_CONVERSATION_TOKEN = new QName(
+            Constants.SP_NS, "SecureConversationToken", Constants.SP_PREFIX);
+
+    public static final QName SIGNATURE_TOKEN = new QName(Constants.SP_NS,
+            "SignatureToken", Constants.SP_PREFIX);
+
+    public static final QName SIGNED_PARTS = new QName(Constants.SP_NS,
+            "SignedParts", Constants.SP_PREFIX);
+
+    public static final QName USERNAME_TOKEN = new QName(Constants.SP_NS,
+            "UsernameToken", Constants.SP_PREFIX);
+
+    public static final QName WSS_USERNAME_TOKEN10 = new QName(Constants.SP_NS,
+            "WssUsernameToken10", Constants.SP_PREFIX);
+
+    public static final QName WSS_USERNAME_TOKEN11 = new QName(Constants.SP_NS,
+            "WssUsernameToken11", Constants.SP_PREFIX);
+
+    public static final QName ENCRYPTED_PARTS = new QName(Constants.SP_NS,
+            "EncryptedParts", Constants.SP_PREFIX);
+
+    public static final QName SIGNED_ELEMENTS = new QName(Constants.SP_NS,
+            "SignedElements", Constants.SP_PREFIX);
+
+    public static final QName ENCRYPTED_ELEMENTS = new QName(Constants.SP_NS,
+            "EncryptedElements", Constants.SP_PREFIX);
+
+    public static final QName ENCRYPTION_TOKEN = new QName(Constants.SP_NS,
+            "EncryptionToken", Constants.SP_PREFIX);
+
+    public static final QName X509_TOKEN = new QName(Constants.SP_NS,
+            "X509Token", Constants.SP_PREFIX);
+
+    public static final QName ISSUED_TOKEN = new QName(Constants.SP_NS,
+            "IssuedToken", Constants.SP_PREFIX);
+
+    public static final QName SUPPORIING_TOKENS = new QName(Constants.SP_NS,
+            "SupportingTokens", Constants.SP_PREFIX);
+
+    public static final QName SIGNED_SUPPORTING_TOKENS = new QName(
+            Constants.SP_NS, "SignedSupportingTokens", Constants.SP_PREFIX);
+
+    public static final QName ENDORSING_SUPPORTING_TOKENS = new QName(
+            Constants.SP_NS, "EndorsingSupportingTokens", Constants.SP_PREFIX);
+
+    public static final QName SIGNED_ENDORSING_SUPPORTING_TOKENS = new QName(
+            Constants.SP_NS, "SignedEndorsingSupportingTokens",
+            Constants.SP_PREFIX);
+
+    public static final QName PROTECTION_TOKEN = new QName(Constants.SP_NS,
+            "ProtectionToken", Constants.SP_PREFIX);
+
+    public static final QName ASYMMETRIC_BINDING = new QName(Constants.SP_NS,
+            "AsymmetricBinding", Constants.SP_PREFIX);
+
+    public static final QName SYMMETRIC_BINDING = new QName(Constants.SP_NS,
+            "SymmetricBinding", Constants.SP_PREFIX);
+
+    public static final QName INITIATOR_TOKEN = new QName(Constants.SP_NS,
+            "InitiatorToken", Constants.SP_PREFIX);
+
+    public static final QName RECIPIENT_TOKEN = new QName(Constants.SP_NS,
+            "RecipientToken", Constants.SP_PREFIX);
+
+    public static final QName ENCRYPT_SIGNATURE = new QName(Constants.SP_NS,
+            "EncryptSignature", Constants.SP_PREFIX);
+
+    public static final QName PROTECT_TOKENS = new QName(Constants.SP_NS,
+            "ProtectTokens", Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_KEY_IDENTIFIRE_REFERENCE = new QName(
+            Constants.SP_NS, "RequireKeyIdentifireReference",
+            Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_ISSUER_SERIAL_REFERENCE = new QName(
+            Constants.SP_NS, "RequireIssuerSerializerReference",
+            Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_EMBEDDED_TOKEN_REFERENCE = new QName(
+            Constants.SP_NS, "RequireEmbeddedTokenReference",
+            Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_THUMBPRINT_REFERENCE = new QName(
+            Constants.SP_NS, "RequireThumbprintReference", Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_V1_TOKEN_10 = new QName(Constants.SP_NS,
+            "WssX509V1Token10", Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_V3_TOKEN_10 = new QName(Constants.SP_NS,
+            "WssX509V3Token10", Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_PKCS7_TOKEN_10 = new QName(
+            Constants.SP_NS, "WssX509Pkcs7Token10", Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_PKI_PATH_V1_TOKEN_10 = new QName(
+            Constants.SP_NS, "WssX509PkiPathV1Token10", Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_V1_TOKEN_11 = new QName(Constants.SP_NS,
+            "WssX509V1Token11", Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_V3_TOKEN_11 = new QName(Constants.SP_NS,
+            "WssX509V3Token11", Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_PKCS7_TOKEN_11 = new QName(
+            Constants.SP_NS, "WssX509Pkcs7Token11", Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_PKI_PATH_V1_TOKEN_11 = new QName(
+            Constants.SP_NS, "WssX509PkiPathV1Token11", Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_KEY_IDENTIFIER = new QName(
+            Constants.SP_NS, "MustSupportRefKeyIdentifier", Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_ISSUER_SERIAL = new QName(
+            Constants.SP_NS, "MustSupportRefIssuerSerial", Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_EXTERNAL_URI = new QName(
+            Constants.SP_NS, "MustSupportRefExternalURI", Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_EMBEDDED_TOKEN = new QName(
+            Constants.SP_NS, "MustSupportRefEmbeddedToken", Constants.SP_PREFIX);
+
+    public static final QName WSS10 = new QName(Constants.SP_NS, "Wss10",
+            Constants.SP_PREFIX);
+
+    public static final QName WSS11 = new QName(Constants.SP_NS, "Wss11",
+            Constants.SP_PREFIX);
+
+    public static final QName TRUST_10 = new QName(Constants.SP_NS, "Trust10",
+            Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_THUMBPRINT = new QName(
+            Constants.SP_NS, "MustSupportRefThumbprint", Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_ENCRYPTED_KEY = new QName(
+            Constants.SP_NS, "MustSupportRefEncryptedkey", Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_SIGNATURE_CONFIRMATION = new QName(
+            Constants.SP_NS, "RequireSignatureConfirmation",
+            Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_CLIENT_CHALLENGE = new QName(
+            Constants.SP_NS, "MustSupportClientChanllenge", Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_SERVER_CHALLENGE = new QName(
+            Constants.SP_NS, "MustSupportServerChanllenge", Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_CLIENT_ENTROPY = new QName(
+            Constants.SP_NS, "RequireClientEntropy", Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_SERVER_ENTROPY = new QName(
+            Constants.SP_NS, "RequireServerEntropy", Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_ISSUED_TOKENS = new QName(
+            Constants.SP_NS, "MustSupportIssuedTokens", Constants.SP_PREFIX);
+
+    public static final QName ISSUER = new QName(Constants.SP_NS, "Issuer",
+            Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_DERIVED_KEYS = new QName(Constants.SP_NS,
+            "RequireDerivedKeys", Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_EXTERNAL_URI_REFERNCE = new QName(
+            Constants.SP_NS, "RequireExternalUriReference", Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_EXTERNAL_REFERNCE = new QName(
+            Constants.SP_NS, "RequireExternalReference", Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_INTERNAL_REFERNCE = new QName(
+            Constants.SP_NS, "RequireInternalReference", Constants.SP_PREFIX);
+
+    public static final QName REQUEST_SECURITY_TOKEN_TEMPLATE = new QName(
+            Constants.SP_NS, "RequestSecurityTokenTemplate",
+            Constants.SP_PREFIX);
+
+    public static final QName SC10_SECURITY_CONTEXT_TOKEN = new QName(
+            Constants.SP_NS, "SC10SecurityContextToken", Constants.SP_PREFIX);
+
+    public static final QName BOOTSTRAP_POLICY = new QName(Constants.SP_NS,
+            "BootstrapPolicy", Constants.SP_PREFIX);
+
+    public static final QName RST_TEMPLATE = new QName(Constants.SP_NS,
+            "RequestSecurityTokenTemplate", Constants.SP_PREFIX);
+
+    public final static QName REQUIRE_CLIENT_CERTIFICATE = new QName(
+            "RequireClientCertificate");
+
+    public final static QName XPATH_ = new QName(Constants.SP_NS, "XPath",
+            Constants.SP_PREFIX);
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/WSSPolicyException.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/WSSPolicyException.java
new file mode 100644
index 0000000..7f7ef32
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/WSSPolicyException.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy;
+
+public class WSSPolicyException extends Exception {
+
+    private static final long serialVersionUID = 5904800255533588133L;
+
+    public WSSPolicyException(String message, Throwable e) {
+        super(message, e);
+    }
+
+    public WSSPolicyException(String message) {
+        super(message);
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/AlgorithmSuiteBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/AlgorithmSuiteBuilder.java
new file mode 100644
index 0000000..9613b32
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/AlgorithmSuiteBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.AlgorithmSuite;
+
+import javax.xml.namespace.QName;
+
+public class AlgorithmSuiteBuilder implements AssertionBuilder {
+    
+    public static final String INCLUSIVE_C14N = "InclusiveC14N";
+    public static final String SOAP_NORMALIZATION_10 = "SoapNormalization10";
+    public static final String STR_TRANSFORM_10 = "STRTransform10";
+    public static final String XPATH10 = "XPath10";
+    public static final String XPATH_FILTER20 = "XPathFilter20"; 
+
+    
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        AlgorithmSuite algorithmSuite = new AlgorithmSuite();
+        
+        OMElement policyElem = element.getFirstElement();
+        algorithmSuite.setAlgorithmSuite(policyElem.getFirstElement().getLocalName());
+        
+        return algorithmSuite;
+    }
+    
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.ALGORITHM_SUITE};
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/AsymmetricBindingBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/AsymmetricBindingBuilder.java
new file mode 100644
index 0000000..ab41eff
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/AsymmetricBindingBuilder.java
@@ -0,0 +1,104 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.AlgorithmSuite;
+import org.apache.ws.secpolicy.model.AsymmetricBinding;
+import org.apache.ws.secpolicy.model.InitiatorToken;
+import org.apache.ws.secpolicy.model.Layout;
+import org.apache.ws.secpolicy.model.RecipientToken;
+
+public class AsymmetricBindingBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        
+        AsymmetricBinding asymmetricBinding =  new AsymmetricBinding();
+        
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), asymmetricBinding);
+            
+            /*
+             * since there should be only one alternative
+             */
+            break;
+        }
+        
+        return asymmetricBinding;
+    }
+    
+    private void processAlternative(List assertions, AsymmetricBinding asymmetricBinding) {
+               
+        Assertion assertion;
+        QName name;
+        
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            assertion = (Assertion) iterator.next();
+            name = assertion.getName();
+            
+            if (Constants.INITIATOR_TOKEN.equals(name)) {
+                asymmetricBinding.setInitiatorToken((InitiatorToken) assertion);
+                
+            } else if (Constants.RECIPIENT_TOKEN.equals(name)){
+                asymmetricBinding.setRecipientToken((RecipientToken) assertion);
+                
+            } else if (Constants.ALGORITHM_SUITE.equals(name)) {
+                asymmetricBinding.setAlgorithmSuite((AlgorithmSuite) assertion);
+            
+            } else if (Constants.LAYOUT.equals(name)) {
+                asymmetricBinding.setLayout((Layout) assertion);
+                
+            } else if (Constants.INCLUDE_TIMESTAMP.equals(name)) {
+                asymmetricBinding.setIncludeTimestamp(true);
+
+            } else if (Constants.ENCRYPT_BEFORE_SIGNING.equals(name.getLocalPart())) {
+                asymmetricBinding.setProtectionOrder(Constants.ENCRYPT_BEFORE_SIGNING);
+                
+            } else if (Constants.SIGN_BEFORE_ENCRYPTING.equals(name.getLocalPart())) {
+                asymmetricBinding.setProtectionOrder(Constants.SIGN_BEFORE_ENCRYPTING);
+                
+            } else if (Constants.ENCRYPT_SIGNATURE.equals(name)) {
+                asymmetricBinding.setSignatureProtection(true);
+                
+            } else if (Constants.PROTECT_TOKENS.equals(name)) {
+                asymmetricBinding.setTokenProtection(true);
+                
+            } else if (Constants.ONLY_SIGN_ENTIRE_HEADERS_AND_BODY.equals(name.getLocalPart())) {
+                asymmetricBinding.setEntireHeadersAndBodySignatures(true);
+            }
+        }
+    }
+    
+    public QName[] getKnownElements() {
+        return new QName[]{Constants.ASYMMETRIC_BINDING};
+    }
+    
+}
+ 
\ No newline at end of file
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/EncryptedElementsBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/EncryptedElementsBuilder.java
new file mode 100644
index 0000000..b17551b
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/EncryptedElementsBuilder.java
@@ -0,0 +1,65 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.SignedEncryptedElements;
+
+public class EncryptedElementsBuilder implements AssertionBuilder {
+    
+    public static final QName ATTR_XPATH_VERSION = new QName(Constants.SP_NS, "XPathVersion");
+    public static final QName XPATH = new QName(Constants.SP_NS, "XPath");
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        SignedEncryptedElements signedEncryptedElements = new SignedEncryptedElements(false);
+        
+        OMAttribute attribute = element.getAttribute(ATTR_XPATH_VERSION);
+        if (attribute != null) {
+            signedEncryptedElements.setXPathVersion(attribute.getAttributeValue());
+        }
+        
+        for (Iterator iterator = element.getChildElements(); iterator.hasNext();) {
+            processElement((OMElement) iterator.next(), signedEncryptedElements);
+        }
+        
+        return signedEncryptedElements;
+    }
+    
+    
+    
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.ENCRYPTED_ELEMENTS};
+    }
+
+
+
+    private void processElement(OMElement element, SignedEncryptedElements parent) {
+        if (XPATH.equals(element.getQName())) {
+            parent.setXPathVersion(element.getText());                        
+        }
+    }
+    
+    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/EncryptedPartsBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/EncryptedPartsBuilder.java
new file mode 100644
index 0000000..c420233
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/EncryptedPartsBuilder.java
@@ -0,0 +1,71 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.Header;
+import org.apache.ws.secpolicy.model.SignedEncryptedParts;
+
+public class EncryptedPartsBuilder implements AssertionBuilder {
+
+    public static final QName HEADER = new QName(Constants.SP_NS, "Header");
+    public static final QName NAME = new QName(Constants.SP_NS, "Name");
+    public static final QName NAMESPACE = new QName(Constants.SP_NS, "Namespace");
+    public static final QName BODY = new QName(Constants.SP_NS, "Body");
+        
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        
+        SignedEncryptedParts signedEncryptedParts = new SignedEncryptedParts(false);
+        
+        for (Iterator iterator = element.getChildElements(); iterator.hasNext();) {
+            processElement((OMElement) iterator.next(), signedEncryptedParts);
+        }
+        
+        return signedEncryptedParts;
+    }
+    
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.ENCRYPTED_PARTS};
+    }
+
+    private void processElement(OMElement element, SignedEncryptedParts parent) {
+        
+        QName name = element.getQName();
+        
+        if (HEADER.equals(name)) {
+            Header header = new Header();
+            
+            OMAttribute nameAttribute = element.getAttribute(NAME);
+            header.setName(nameAttribute.getAttributeValue());
+            
+            OMAttribute namespaceAttribute = element.getAttribute(NAMESPACE);
+            header.setNamespace(namespaceAttribute.getAttributeValue());
+            
+        } else if (BODY.equals(name)) {
+            parent.setBody(true);            
+        }        
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/InitiatorTokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/InitiatorTokenBuilder.java
new file mode 100644
index 0000000..6657d06
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/InitiatorTokenBuilder.java
@@ -0,0 +1,67 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.InitiatorToken;
+import org.apache.ws.secpolicy.model.Token;
+
+public class InitiatorTokenBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        InitiatorToken initiatorToken = new InitiatorToken();
+        
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false); 
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), initiatorToken);
+            break; // TODO process all the token that must be set ..
+        }
+        
+        return initiatorToken;
+    }
+    
+    private void processAlternative(List assertions, InitiatorToken parent) {
+        
+        Object token;
+        
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            token = iterator.next();
+            
+            if (token instanceof Token) {
+                parent.setInitiatorToken((Token) token);
+            }
+        }
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.INITIATOR_TOKEN};
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/IssuedTokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/IssuedTokenBuilder.java
new file mode 100644
index 0000000..74904fa
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/IssuedTokenBuilder.java
@@ -0,0 +1,91 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.IssuedToken;
+
+import javax.xml.namespace.QName;
+
+import java.util.Iterator;
+import java.util.List;
+
+public class IssuedTokenBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        IssuedToken issuedToken = new IssuedToken();
+
+        // Extract Issuer
+        OMElement issuerElem = element.getFirstChildWithName(Constants.ISSUER);
+        if (issuerElem != null && issuerElem.getFirstElement() != null) {
+            issuedToken.setIssuerEpr(issuerElem.getFirstElement());
+        }
+
+        // Extract RSTTemplate
+        OMElement rstTmplElem = element.getFirstChildWithName(Constants.ISSUER);
+        if (rstTmplElem != null) {
+            issuedToken.setIssuerEpr(rstTmplElem);
+        }
+
+        OMElement policyElement = element.getFirstElement();
+
+        if (policyElement != null
+                && policyElement.getQName().equals(
+                        org.apache.neethi.Constants.Q_ELEM_POLICY)) {
+
+            Policy policy = PolicyEngine.getPolicy(policyElement);
+            policy = (Policy) policy.normalize(false);
+
+            for (Iterator iterator = policy.getAlternatives(); iterator
+                    .hasNext();) {
+                processAlternative((List) iterator.next(), issuedToken);
+                break; // since there should be only one alternative ..
+            }
+        }
+
+        return issuedToken;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] { Constants.ISSUED_TOKEN };
+    }
+
+    private void processAlternative(List assertions, IssuedToken parent) {
+        Assertion assertion;
+        QName name;
+
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            assertion = (Assertion) iterator.next();
+            name = assertion.getName();
+
+            if (Constants.REQUIRE_DERIVED_KEYS.equals(name)) {
+                parent.setDerivedKeys(true);
+            } else if (Constants.REQUIRE_EXTERNAL_REFERNCE.equals(name)) {
+                parent.setRequireExternalReference(true);
+            } else if (Constants.REQUIRE_INTERNAL_REFERNCE.equals(name)) {
+                parent.setRequireInternalReference(true);
+            }
+        }
+
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/LayoutBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/LayoutBuilder.java
new file mode 100644
index 0000000..6899bb6
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/LayoutBuilder.java
@@ -0,0 +1,72 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.Layout;
+
+public class LayoutBuilder implements AssertionBuilder {
+    
+    
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        Layout layout = new Layout();
+        
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext(); ) {
+            processAlternative((List) iterator.next(), layout);         
+            break; // there should be only one alternative
+        }
+                        
+        return layout;
+    }
+    
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.LAYOUT};
+    }
+
+    public void processAlternative(List assertions, Layout parent) {
+        
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            Assertion assertion = (Assertion) iterator.next();
+            QName qname = assertion.getName();
+            
+            if (Constants.STRICT.equals(qname)) {
+                parent.setValue(Constants.LAYOUT_STRICT);
+            } else if (Constants.LAX.equals(qname)) {
+                parent.setValue(Constants.LAYOUT_LAX);
+            } else if (Constants.LAXTSFIRST.equals(qname)) {
+                parent.setValue(Constants.LAYOUT_LAX_TIMESTAMP_FIRST);
+            } else if (Constants.LAXTSLAST.equals(qname)) {
+                parent.setValue(Constants.LAYOUT_LAX_TIMESTAMP_LAST);
+            }
+            
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/ProtectionTokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/ProtectionTokenBuilder.java
new file mode 100644
index 0000000..59f0f1d
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/ProtectionTokenBuilder.java
@@ -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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.ProtectionToken;
+import org.apache.ws.secpolicy.model.Token;
+
+public class ProtectionTokenBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        ProtectionToken protectionToken = new ProtectionToken();
+        
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), protectionToken);
+            break; // since there should be only one alternative ..
+        }
+        
+        return protectionToken;
+    }
+        
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.PROTECTION_TOKEN};
+    }
+
+    private void processAlternative(List assertions, ProtectionToken parent) {
+        Object token = assertions.get(0);
+        
+        if (token instanceof Token) {
+            parent.setToken((Token) token);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/RecipientTokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/RecipientTokenBuilder.java
new file mode 100644
index 0000000..81667c5
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/RecipientTokenBuilder.java
@@ -0,0 +1,71 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.RecipientToken;
+import org.apache.ws.secpolicy.model.Token;
+
+public class RecipientTokenBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        RecipientToken recipientToken = new RecipientToken();
+        
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), recipientToken);
+            
+            /* 
+             * for the moment we will pick the first token specified in the policy
+             */
+            break;   
+        }
+        
+        return recipientToken;
+    }
+
+    private void processAlternative(List assertions, RecipientToken parent) {
+        
+        Assertion assertion;
+        
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            assertion = (Assertion) iterator.next();
+            
+            if (assertion instanceof Token) {
+                parent.setToken((Token) assertion);
+            }
+        }        
+    }
+    
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.RECIPIENT_TOKEN};
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SecureConversationTokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SecureConversationTokenBuilder.java
new file mode 100644
index 0000000..85386d9
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SecureConversationTokenBuilder.java
@@ -0,0 +1,93 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.SecureConversationToken;
+
+public class SecureConversationTokenBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        SecureConversationToken conversationToken = new SecureConversationToken();
+        
+        OMAttribute attribute = element.getAttribute(Constants.INCLUDE_TOKEN);
+        if (attribute == null) {
+            throw new IllegalArgumentException(
+                    "SecurityContextToken doesn't contain any sp:IncludeToken attribute");
+        }
+        
+        String inclusionValue = attribute.getAttributeValue().trim();
+        
+        if (inclusionValue.endsWith(Constants.INCLUDE_NEVER)) {
+            conversationToken.setInclusion(Constants.INCLUDE_NEVER);
+
+        } else if (inclusionValue.endsWith(Constants.INCLUDE_ONCE)) {
+            conversationToken.setInclusion(Constants.INCLUDE_ONCE);
+
+        } else if (inclusionValue
+                .endsWith(Constants.INCLUDE_ALWAYS_TO_RECIPIENT)) {
+            conversationToken.setInclusion(Constants.INCLUDE_ALWAYS_TO_RECIPIENT);
+
+        } else if (inclusionValue.endsWith(Constants.INCLUDE_ALWAYS)) {
+            conversationToken.setInclusion(Constants.INCLUDE_ALWAYS);
+        }
+        
+        OMElement issuer = element.getFirstChildWithName(Constants.ISSUER);
+        if ( issuer != null) {
+            conversationToken.setIssuerEpr(issuer.getFirstElement());
+        }
+        
+        element = element.getFirstChildWithName(Constants.POLICY);
+        if (element != null) {
+            if (element.getFirstChildWithName(Constants.REQUIRE_DERIVED_KEYS) != null) {
+                conversationToken.setDerivedKeys(true);
+            }
+
+            if (element
+                    .getFirstChildWithName(Constants.REQUIRE_EXTERNAL_URI_REFERNCE) != null) {
+                conversationToken.setRequireExternalUriRef(true);
+            }
+
+            if (element
+                    .getFirstChildWithName(Constants.SC10_SECURITY_CONTEXT_TOKEN) != null) {
+                conversationToken.setSc10SecurityContextToken(true);
+            }
+            
+            OMElement bootstrapPolicyElement = element.getFirstChildWithName(Constants.BOOTSTRAP_POLICY);
+            if (bootstrapPolicyElement != null) {
+                Policy policy = PolicyEngine.getPolicy(bootstrapPolicyElement.getFirstElement());
+                conversationToken.setBootstrapPolicy(policy);
+            }
+        }
+        
+        return conversationToken;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.SECURE_CONVERSATION_TOKEN};
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SecurityContextTokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SecurityContextTokenBuilder.java
new file mode 100644
index 0000000..6c352ec
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SecurityContextTokenBuilder.java
@@ -0,0 +1,83 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.SecurityContextToken;
+
+public class SecurityContextTokenBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+
+        SecurityContextToken contextToken = new SecurityContextToken();
+
+        OMAttribute attribute = element.getAttribute(Constants.INCLUDE_TOKEN);
+        if (attribute == null) {
+            throw new IllegalArgumentException(
+                    "SecurityContextToken doesn't contain any sp:IncludeToken attribute");
+        }
+        
+        String inclusionValue = attribute.getAttributeValue().trim();
+        
+        if (inclusionValue.endsWith(Constants.INCLUDE_NEVER)) {
+            contextToken.setInclusion(Constants.INCLUDE_NEVER);
+
+        } else if (inclusionValue.endsWith(Constants.INCLUDE_ONCE)) {
+            contextToken.setInclusion(Constants.INCLUDE_ONCE);
+
+        } else if (inclusionValue
+                .endsWith(Constants.INCLUDE_ALWAYS_TO_RECIPIENT)) {
+            contextToken.setInclusion(Constants.INCLUDE_ALWAYS_TO_RECIPIENT);
+
+        } else if (inclusionValue.endsWith(Constants.INCLUDE_ALWAYS)) {
+            contextToken.setInclusion(Constants.INCLUDE_ALWAYS);
+        }
+
+        element = element.getFirstChildWithName(Constants.POLICY);
+
+        if (element != null) {
+
+            if (element.getFirstChildWithName(Constants.REQUIRE_DERIVED_KEYS) != null) {
+                contextToken.setDerivedKeys(true);
+            }
+
+            if (element
+                    .getFirstChildWithName(Constants.REQUIRE_EXTERNAL_URI_REFERNCE) != null) {
+                contextToken.setRequireExternalUriRef(true);
+            }
+
+            if (element
+                    .getFirstChildWithName(Constants.SC10_SECURITY_CONTEXT_TOKEN) != null) {
+                contextToken.setSc10SecurityContextToken(true);
+            }
+        }
+
+        return contextToken;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.SECURE_CONVERSATION_TOKEN};
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SignedElementsBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SignedElementsBuilder.java
new file mode 100644
index 0000000..bcc0494
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SignedElementsBuilder.java
@@ -0,0 +1,61 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.SignedEncryptedElements;
+
+public class SignedElementsBuilder implements AssertionBuilder {
+
+    public static final QName ATTR_XPATH_VERSION = new QName(Constants.SP_NS, "XPathVersion");
+    public static final QName XPATH = new QName(Constants.SP_NS, "XPath");
+    
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        
+        SignedEncryptedElements signedEncryptedElements = new SignedEncryptedElements(true);
+        OMAttribute attrXPathVersion = element.getAttribute(ATTR_XPATH_VERSION);
+        
+        if (attrXPathVersion != null) {
+            signedEncryptedElements.setXPathVersion(attrXPathVersion.getAttributeValue());
+        }
+        
+        for (Iterator iterator = element.getChildElements(); iterator.hasNext();) {
+            processElement((OMElement) iterator.next(), signedEncryptedElements);            
+        }
+        
+        return signedEncryptedElements;
+    }
+        
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.SIGNED_ELEMENTS};
+    }
+
+    private void processElement(OMElement element, SignedEncryptedElements parent) {
+        QName name = element.getQName();
+        if (XPATH.equals(name)) {
+            parent.addXPathExpression(element.getText());
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SignedPartsBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SignedPartsBuilder.java
new file mode 100644
index 0000000..6223f27
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SignedPartsBuilder.java
@@ -0,0 +1,70 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.Header;
+import org.apache.ws.secpolicy.model.SignedEncryptedParts;
+
+public class SignedPartsBuilder implements AssertionBuilder {
+    public static final QName HEADER = new QName(Constants.SP_NS, "Header");
+    public static final QName NAME = new QName("Name");
+    public static final QName NAMESPACE = new QName("Namespace");
+    public static final QName BODY = new QName(Constants.SP_NS, "Body");
+        
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        SignedEncryptedParts signedEncryptedParts = new SignedEncryptedParts(true);
+        
+        for (Iterator iterator = element.getChildElements(); iterator.hasNext();) {
+            processElement((OMElement) iterator.next(), signedEncryptedParts);
+        }
+        
+        return signedEncryptedParts;
+    }
+       
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.SIGNED_PARTS};
+    }
+
+    private void processElement(OMElement element, SignedEncryptedParts parent) {
+        
+        QName name = element.getQName();
+        
+        if (HEADER.equals(name)) {
+            Header header = new Header();
+            
+            OMAttribute nameAttribute = element.getAttribute(NAME);
+            header.setName(nameAttribute.getAttributeValue());
+            
+            OMAttribute namespaceAttribute = element.getAttribute(NAMESPACE);
+            header.setNamespace(namespaceAttribute.getAttributeValue());
+            
+            parent.addHeader(header);
+            
+        } else if (BODY.equals(name)) {
+            parent.setBody(true);            
+        }        
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SupportingTokensBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SupportingTokensBuilder.java
new file mode 100644
index 0000000..0e8cca5
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SupportingTokensBuilder.java
@@ -0,0 +1,109 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.AlgorithmSuite;
+import org.apache.ws.secpolicy.model.SignedEncryptedElements;
+import org.apache.ws.secpolicy.model.SignedEncryptedParts;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.Token;
+
+public class SupportingTokensBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        QName name = element.getQName();
+        SupportingToken supportingToken = null;
+
+        if (Constants.SUPPORIING_TOKENS.equals(name)) {
+            supportingToken = new SupportingToken(
+                    Constants.SUPPORTING_TOKEN_SUPPORTING);
+        } else if (Constants.SIGNED_SUPPORTING_TOKENS.equals(name)) {
+            supportingToken = new SupportingToken(
+                    Constants.SUPPORTING_TOKEN_SIGNED);
+        } else if (Constants.ENDORSING_SUPPORTING_TOKENS.equals(name)) {
+            supportingToken = new SupportingToken(
+                    Constants.SUPPORTING_TOKEN_ENDORSING);
+        } else if (Constants.SIGNED_ENDORSING_SUPPORTING_TOKENS.equals(name)) {
+            supportingToken = new SupportingToken(
+                    Constants.SUPPORTING_TOKEN_SIGNED_ENDORSING);
+        }
+
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), supportingToken);
+            /*
+             * for the moment we will say there should be only one alternative 
+             */
+            break;            
+        }
+
+        return supportingToken;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] { Constants.SUPPORIING_TOKENS,
+                Constants.SIGNED_SUPPORTING_TOKENS,
+                Constants.ENDORSING_SUPPORTING_TOKENS,
+                Constants.SIGNED_ENDORSING_SUPPORTING_TOKENS};
+    }
+
+    private void processAlternative(List assertions, SupportingToken supportingToken) {
+        
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+
+            Assertion primitive = (Assertion) iterator.next();
+            QName qname = primitive.getName();
+
+            if (Constants.ALGORITHM_SUITE.equals(qname)) {
+                supportingToken.setAlgorithmSuite((AlgorithmSuite) primitive);
+
+            } else if (Constants.SIGNED_PARTS.equals(qname)) {
+                supportingToken
+                        .setSignedParts((SignedEncryptedParts) primitive);
+
+            } else if (Constants.SIGNED_ELEMENTS.equals(qname)) {
+                supportingToken
+                        .setSignedElements((SignedEncryptedElements) primitive);
+
+            } else if (Constants.ENCRYPTED_PARTS.equals(qname)) {
+                supportingToken
+                        .setEncryptedParts((SignedEncryptedParts) primitive);
+
+            } else if (Constants.ENCRYPTED_ELEMENTS.equals(qname)) {
+                supportingToken
+                        .setEncryptedElements((SignedEncryptedElements) primitive);
+
+            } else if (primitive instanceof Token) {
+                supportingToken.addToken((Token) primitive);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SymmetricBindingBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SymmetricBindingBuilder.java
new file mode 100644
index 0000000..16fcf7e
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/SymmetricBindingBuilder.java
@@ -0,0 +1,92 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.AlgorithmSuite;
+import org.apache.ws.secpolicy.model.Layout;
+import org.apache.ws.secpolicy.model.ProtectionToken;
+import org.apache.ws.secpolicy.model.SymmetricBinding;
+
+public class SymmetricBindingBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        SymmetricBinding symmetricBinding = new SymmetricBinding(); 
+        
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternatives((List) iterator.next(), symmetricBinding);
+            
+            /*
+             * since there should be only one alternative ..
+             */
+            break; 
+        }
+        return symmetricBinding;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.SYMMETRIC_BINDING};
+    }
+    
+    private void processAlternatives(List assertions, SymmetricBinding symmetricBinding) {
+        Assertion assertion;
+        QName name;
+        
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            assertion = (Assertion) iterator.next();
+            name = assertion.getName();
+            
+            if (Constants.ALGORITHM_SUITE.equals(name)) {
+                symmetricBinding.setAlgorithmSuite((AlgorithmSuite) assertion);
+                
+            } else if (Constants.LAYOUT.equals(name)) {
+                symmetricBinding.setLayout((Layout) assertion);
+                
+            } else if (Constants.INCLUDE_TIMESTAMP.equals(name)) {
+                symmetricBinding.setIncludeTimestamp(true);
+                
+            } else if (Constants.PROTECTION_TOKEN.equals(name)) {
+                symmetricBinding.setProtectionToken((ProtectionToken) assertion);
+                
+            } else if (Constants.ENCRYPT_BEFORE_SIGNING.equals(name.getLocalPart())) {
+                symmetricBinding.setProtectionOrder(Constants.ENCRYPT_BEFORE_SIGNING);
+                
+            } else if (Constants.SIGN_BEFORE_ENCRYPTING.equals(name.getLocalPart())) {
+                symmetricBinding.setProtectionOrder(Constants.SIGN_BEFORE_ENCRYPTING);
+                
+            } else if (Constants.ONLY_SIGN_ENTIRE_HEADERS_AND_BODY.equals(name.getLocalPart())) {
+                symmetricBinding.setEntireHeadersAndBodySignatures(true);
+                
+            } else if (Constants.ENCRYPT_SIGNATURE.equals(name)) {
+                symmetricBinding.setSignatureProtection(true);
+            }
+        }        
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/TransportBindingBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/TransportBindingBuilder.java
new file mode 100644
index 0000000..064e9ae
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/TransportBindingBuilder.java
@@ -0,0 +1,87 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.AlgorithmSuite;
+import org.apache.ws.secpolicy.model.Layout;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.TransportBinding;
+import org.apache.ws.secpolicy.model.TransportToken;
+
+public class TransportBindingBuilder implements AssertionBuilder {
+ 
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        TransportBinding transportBinding = new TransportBinding();
+       
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), transportBinding, factory);
+            
+            /*
+             * since there should be only one alternative
+             */
+            break; 
+        }
+        
+        return transportBinding;
+    }
+    
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.TRANSPORT_BINDING};
+    }
+
+    private void processAlternative(List assertionList, TransportBinding parent, AssertionBuilderFactory factory) {
+        
+        for (Iterator iterator = assertionList.iterator(); iterator.hasNext(); ) {
+            
+            Assertion primitive = (Assertion) iterator.next();
+            QName name = primitive.getName();
+            
+            if (name.equals(Constants.ALGORITHM_SUITE)) {
+                parent.setAlgorithmSuite((AlgorithmSuite) primitive);
+                
+            } else if (name.equals(Constants.TRANSPORT_TOKEN)) {
+                parent.setTransportToken(((TransportToken) primitive));
+                
+            } else if (name.equals(Constants.INCLUDE_TIMESTAMP)) {
+                parent.setIncludeTimestamp(true);
+                
+            } else if (name.equals(Constants.LAYOUT)) {
+                parent.setLayout((Layout) primitive);
+                 
+            } else if (name.equals(Constants.SIGNED_SUPPORTING_TOKENS)) {
+                parent.setSignedSupportingToken((SupportingToken) primitive);
+                
+            } else if (name.equals(Constants.SIGNED_ENDORSING_SUPPORTING_TOKENS)) {
+                parent.setSignedEndorsingSupportingTokens((SupportingToken) primitive);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/TransportTokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/TransportTokenBuilder.java
new file mode 100644
index 0000000..905dbf9
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/TransportTokenBuilder.java
@@ -0,0 +1,73 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.neethi.builders.xml.XmlPrimtiveAssertion;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.HttpsToken;
+import org.apache.ws.secpolicy.model.TransportToken;
+
+public class TransportTokenBuilder implements AssertionBuilder {
+    
+   
+    
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        TransportToken transportToken = new TransportToken();
+        
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), transportToken);
+            break; // since there should be only one alternative
+        }
+        
+        return transportToken;
+    }
+        
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.TRANSPORT_TOKEN};
+    }
+    
+    private void processAlternative(List assertions, TransportToken parent) {
+        
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            XmlPrimtiveAssertion primtive = (XmlPrimtiveAssertion) iterator.next();
+            QName qname = primtive.getName();
+            
+            if (Constants.HTTPS_TOKEN.equals(qname)) {
+                HttpsToken httpsToken = new HttpsToken();
+                OMAttribute attr = primtive.getValue().getAttribute(Constants.REQUIRE_CLIENT_CERTIFICATE);
+                if(attr != null) {
+                    httpsToken.setRequireClientCertificate("true".equals(attr.getAttributeValue()));
+                }
+                parent.setToken(httpsToken);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/Trust10Builder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/Trust10Builder.java
new file mode 100644
index 0000000..7a92b24
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/Trust10Builder.java
@@ -0,0 +1,70 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.Trust10;
+
+public class Trust10Builder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+
+        element = element.getFirstChildWithName(Constants.POLICY);
+
+        if (element == null) {
+            throw new IllegalArgumentException(
+                    "Trust10 assertion doesn't contain any Policy");
+        }
+
+        Trust10 trust10 = new Trust10();
+
+        if (element
+                .getFirstChildWithName(Constants.MUST_SUPPORT_CLIENT_CHALLENGE) != null) {
+            trust10.setMustSupportClientChallenge(true);
+        }
+
+        if (element
+                .getFirstChildWithName(Constants.MUST_SUPPORT_SERVER_CHALLENGE) != null) {
+            trust10.setMustSupportServerChallenge(true);
+        }
+
+        if (element.getFirstChildWithName(Constants.REQUIRE_CLIENT_ENTROPY) != null) {
+            trust10.setRequireClientEntropy(true);
+        }
+
+        if (element.getFirstChildWithName(Constants.REQUIRE_SERVER_ENTROPY) != null) {
+            trust10.setRequireServerEntropy(true);
+        }
+
+        if (element.getFirstChildWithName(Constants.MUST_SUPPORT_ISSUED_TOKENS) != null) {
+            trust10.setMustSupportIssuedTokens(true);
+        }
+
+        return trust10;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.TRUST_10};
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/UsernameTokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/UsernameTokenBuilder.java
new file mode 100644
index 0000000..a708466
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/UsernameTokenBuilder.java
@@ -0,0 +1,94 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.UsernameToken;
+
+public class UsernameTokenBuilder implements AssertionBuilder {
+
+    
+    public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        UsernameToken usernameToken = new UsernameToken();
+        
+        OMAttribute attribute = element.getAttribute(Constants.INCLUDE_TOKEN);
+        String inclusionValue = attribute.getAttributeValue();
+        
+        if (inclusionValue.endsWith(Constants.INCLUDE_NEVER)) {
+            usernameToken.setInclusion(Constants.INCLUDE_NEVER);
+            
+        } else if (inclusionValue.endsWith(Constants.INCLUDE_ONCE)) {
+            usernameToken.setInclusion(Constants.INCLUDE_ONCE);
+            
+        } else if (inclusionValue.endsWith(Constants.INCLUDE_ALWAYS_TO_RECIPIENT)) {
+            usernameToken.setInclusion(Constants.INCLUDE_ALWAYS_TO_RECIPIENT);
+            
+        } else if (inclusionValue.endsWith(Constants.INCLUDE_ALWAYS)) {
+            usernameToken.setInclusion(Constants.INCLUDE_ALWAYS);
+        }
+        
+        
+        OMElement policyElement = element.getFirstElement();
+        
+        if (policyElement != null && !policyElement.getQName().equals(org.apache.neethi.Constants.Q_ELEM_POLICY)) {
+        
+            Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+            policy = (Policy) policy.normalize(false);
+            
+            for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+                processAlternative((List) iterator.next(), usernameToken);
+                
+                /*
+                 * since there should be only one alternative
+                 */
+                break;
+            }            
+        }
+        
+        return usernameToken;
+    }
+        
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.USERNAME_TOKEN};
+    }
+
+    private void processAlternative(List assertions, UsernameToken parent) {
+                
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            Assertion assertion = (Assertion) iterator.next();
+            QName qname = assertion.getName();
+            
+            if (Constants.WSS_USERNAME_TOKEN10.equals(qname)) {
+                parent.setUseUTProfile10(true);
+                
+            } else if (Constants.WSS_USERNAME_TOKEN11.equals(qname)) {
+                parent.setUseUTProfile11(true);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/WSS10Builder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/WSS10Builder.java
new file mode 100644
index 0000000..dcbcbd0
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/WSS10Builder.java
@@ -0,0 +1,80 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.Wss10;
+
+public class WSS10Builder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        
+        Wss10 wss10 = new Wss10();
+        
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+        
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), wss10);
+            /*
+             * since there should be only one alternative
+             */
+            break;
+        }
+        
+        return wss10;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.WSS10};
+    }
+    
+    private void processAlternative(List assertions, Wss10 parent) {
+        
+        Assertion assertion;
+        QName name;
+        
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext(); ) {
+            assertion = (Assertion) iterator.next();
+            name = assertion.getName();
+            
+            if (Constants.MUST_SUPPORT_REF_KEY_IDENTIFIER.equals(name)) {
+                parent.setMustSupportRefKeyIdentifier(true);
+                
+            } else if (Constants.MUST_SUPPORT_REF_ISSUER_SERIAL.equals(name)) {
+                parent.setMustSupportRefIssuerSerial(true);
+                
+            } else if (Constants.MUST_SUPPORT_REF_EXTERNAL_URI.equals(name)) {
+                parent.setMustSupportRefExternalURI(true);
+                
+            } else if (Constants.MUST_SUPPORT_REF_EMBEDDED_TOKEN.equals(name)) {
+                parent.setMustSupportRefEmbeddedToken(true);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/WSS11Builder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/WSS11Builder.java
new file mode 100644
index 0000000..f787171
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/WSS11Builder.java
@@ -0,0 +1,88 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.Wss11;
+
+public class WSS11Builder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        Wss11 wss11 = new Wss11();
+
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+
+        for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) {
+            processAlternative((List) iterator.next(), wss11);
+            /*
+             * since there should be only one alternative
+             */
+            break;
+        }
+
+        return wss11;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.WSS11};
+    }
+
+    private void processAlternative(List assertions, Wss11 parent) {
+        
+        Assertion assertion;
+        QName name;
+
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            assertion = (Assertion) iterator.next();
+            name = assertion.getName();
+
+            if (Constants.MUST_SUPPORT_REF_KEY_IDENTIFIER.equals(name)) {
+                parent.setMustSupportRefKeyIdentifier(true);
+
+            } else if (Constants.MUST_SUPPORT_REF_ISSUER_SERIAL.equals(name)) {
+                parent.setMustSupportRefIssuerSerial(true);
+
+            } else if (Constants.MUST_SUPPORT_REF_EXTERNAL_URI.equals(name)) {
+                parent.setMustSupportRefExternalURI(true);
+
+            } else if (Constants.MUST_SUPPORT_REF_EMBEDDED_TOKEN.equals(name)) {
+                parent.setMustSupportRefEmbeddedToken(true);
+                
+            } else if (Constants.MUST_SUPPORT_REF_THUMBPRINT.equals(name)) {
+                parent.setMustSupportRefThumbprint(true);
+                
+            } else if (Constants.MUST_SUPPORT_REF_ENCRYPTED_KEY.equals(name)) {
+                parent.setMustSupportRefEncryptedKey(true);
+                
+            } else if (Constants.REQUIRE_SIGNATURE_CONFIRMATION.equals(name)) {
+                parent.setRequireSignatureConfirmation(true);
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/X509TokenBuilder.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/X509TokenBuilder.java
new file mode 100644
index 0000000..96e35df
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/builders/X509TokenBuilder.java
@@ -0,0 +1,123 @@
+/*
+ * 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.ws.secpolicy.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.X509Token;
+
+public class X509TokenBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        X509Token x509Token = new X509Token();
+
+        OMElement policyElement = element.getFirstElement();
+        
+        //Process token inclusion
+        OMAttribute  includeAttr = element.getAttribute(Constants.INCLUDE_TOKEN);
+        if(includeAttr != null) {
+            x509Token.setInclusion(includeAttr.getAttributeValue());
+        }
+
+        if (policyElement != null) {
+            
+            if (policyElement.getFirstChildWithName(Constants.REQUIRE_DERIVED_KEYS) != null) {
+                x509Token.setDerivedKeys(true);
+            }
+            
+            Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+            policy = (Policy) policy.normalize(false);
+
+            for (Iterator iterator = policy.getAlternatives(); iterator
+                    .hasNext();) {
+                processAlternative((List) iterator.next(), x509Token);
+                
+                /*
+                 * since there should be only one alternative
+                 */
+                break;
+            }
+        }
+        return x509Token;
+    }
+
+    private void processAlternative(List assertions, X509Token parent) {
+                Assertion assertion;
+        QName name;
+
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            assertion = (Assertion) iterator.next();
+            name = assertion.getName();
+
+            if (Constants.REQUIRE_KEY_IDENTIFIRE_REFERENCE.equals(name)) {
+                parent.setRequireKeyIdentifierReference(true);
+
+            } else if (Constants.REQUIRE_ISSUER_SERIAL_REFERENCE.equals(name)) {
+                parent.setRequireIssuerSerialReference(true);
+
+            } else if (Constants.REQUIRE_EMBEDDED_TOKEN_REFERENCE.equals(name)) {
+                parent.setRequireEmbeddedTokenReference(true);
+
+            } else if (Constants.REQUIRE_THUMBPRINT_REFERENCE.equals(name)) {
+                parent.setRequireThumbprintReference(true);
+
+            } else if (Constants.WSS_X509_V1_TOKEN_10.equals(name)) {
+                parent.setTokenVersionAndType(Constants.WSS_X509_V1_TOKEN10);
+
+            } else if (Constants.WSS_X509_V1_TOKEN_11.equals(name)) {
+                parent.setTokenVersionAndType(Constants.WSS_X509_V1_TOKEN11);
+
+            } else if (Constants.WSS_X509_V3_TOKEN_10.equals(name)) {
+                parent.setTokenVersionAndType(Constants.WSS_X509_V3_TOKEN10);
+
+            } else if (Constants.WSS_X509_V3_TOKEN_11.equals(name)) {
+                parent.setTokenVersionAndType(Constants.WSS_X509_V3_TOKEN11);
+
+            } else if (Constants.WSS_X509_PKCS7_TOKEN_10.equals(name)) {
+                parent
+                        .setTokenVersionAndType(Constants.WSS_X509_PKCS7_TOKEN10);
+
+            } else if (Constants.WSS_X509_PKCS7_TOKEN_11.equals(name)) {
+                parent
+                        .setTokenVersionAndType(Constants.WSS_X509_PKCS7_TOKEN11);
+
+            } else if (Constants.WSS_X509_PKI_PATH_V1_TOKEN_10.equals(name)) {
+                parent
+                        .setTokenVersionAndType(Constants.WSS_X509_PKI_PATH_V1_TOKEN10);
+
+            } else if (Constants.WSS_X509_PKI_PATH_V1_TOKEN_11.equals(name)) {
+                parent
+                        .setTokenVersionAndType(Constants.WSS_X509_PKI_PATH_V1_TOKEN11);
+            }
+        }
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {Constants.X509_TOKEN};
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AbstractConfigurableSecurityAssertion.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AbstractConfigurableSecurityAssertion.java
new file mode 100644
index 0000000..7f088d6
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AbstractConfigurableSecurityAssertion.java
@@ -0,0 +1,44 @@
+/*
+ * 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.ws.secpolicy.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.neethi.Assertion;
+
+public abstract class AbstractConfigurableSecurityAssertion extends AbstractSecurityAssertion {
+    
+    protected ArrayList configurations = null;
+    
+    public void addConfiguration(Assertion assertion) {
+        if (configurations == null) {
+            configurations = new ArrayList();
+        }
+        configurations.add(assertion);
+    }
+    
+    public List getConfigurations() {
+        return configurations;
+    }
+    
+    public Assertion getDefaultAssertion() {
+        if (configurations != null) {
+            return (Assertion) configurations.get(0);
+        }
+        return null;
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AbstractSecurityAssertion.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AbstractSecurityAssertion.java
new file mode 100644
index 0000000..0f2d125
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AbstractSecurityAssertion.java
@@ -0,0 +1,59 @@
+/*
+ * 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.ws.secpolicy.model;
+
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
+import org.apache.neethi.PolicyComponent;
+
+public abstract class AbstractSecurityAssertion implements Assertion {
+
+    private boolean isOptional;
+    
+    private boolean normalized = false;
+
+    public boolean isOptional() {
+        return isOptional;
+    }
+    
+    public void setOptional(boolean isOptional) {
+        this.isOptional = isOptional;
+    }
+
+    public short getType() {
+        return Constants.TYPE_ASSERTION;
+    }    
+    
+    public boolean equal(PolicyComponent policyComponent) {
+        throw new UnsupportedOperationException();
+    }
+    
+    public void setNormalized(boolean normalized) {
+        this.normalized = normalized;
+    }
+    
+    public boolean isNormalized() {
+        return true;
+    }
+
+    public PolicyComponent normalize() {
+        
+        /*
+         * TODO: Handling the isOptional:TRUE case
+         */
+        return this;
+    }    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AlgorithmSuite.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AlgorithmSuite.java
new file mode 100644
index 0000000..318be2e
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AlgorithmSuite.java
@@ -0,0 +1,452 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.WSSPolicyException;
+
+public class AlgorithmSuite extends AbstractConfigurableSecurityAssertion {
+
+    private String algoSuiteString;
+
+    private String symmetricSignature = Constants.HMAC_SHA1;
+
+    private String asymmetricSignature = Constants.RSA_SHA1;
+
+    private String computedKey = Constants.P_SHA1;
+
+    private int maximumSymmetricKeyLength = 256;
+
+    private int minimumAsymmetricKeyLength = 1024;
+
+    private int maximumAsymmetricKeyLength = 4096;
+
+    private String digest;
+
+    private String encryption;
+
+    private String symmetricKeyWrap;
+
+    private String asymmetricKeyWrap;
+
+    private String encryptionKeyDerivation;
+
+    private String signatureKeyDerivation;
+
+    private int minimumSymmetricKeyLength;
+
+    private String c14n = Constants.EX_C14N;
+
+    private String soapNormalization;
+
+    private String strTransform;
+
+    private String xPath;
+
+    /**
+     * Set the algorithm suite
+     * 
+     * @param algoSuite
+     * @throws WSSPolicyException
+     * @see Constants#ALGO_SUITE_BASIC128
+     * @see Constants#ALGO_SUITE_BASIC128_RSA15
+     * @see Constants#ALGO_SUITE_BASIC128_SHA256
+     * @see Constants#ALGO_SUITE_BASIC128_SHA256_RSA15
+     * @see Constants#ALGO_SUITE_BASIC192
+     * @see Constants#ALGO_SUITE_BASIC192_RSA15
+     * @see Constants#ALGO_SUITE_BASIC192_SHA256
+     * @see Constants#ALGO_SUITE_BASIC192_SHA256_RSA15
+     * @see Constants#ALGO_SUITE_BASIC256
+     * @see Constants#ALGO_SUITE_BASIC256_RSA15
+     * @see Constants#ALGO_SUITE_BASIC256_SHA256
+     * @see Constants#ALGO_SUITE_BASIC256_SHA256_RSA15
+     * @see Constants#ALGO_SUITE_TRIPLE_DES
+     * @see Constants#ALGO_SUITE_TRIPLE_DES_RSA15
+     * @see Constants#ALGO_SUITE_TRIPLE_DES_SHA256
+     * @see Constants#ALGO_SUITE_TRIPLE_DES_SHA256_RSA15
+     */
+    public void setAlgorithmSuite(String algoSuite) {
+        setAlgoSuiteString(algoSuite);
+        this.algoSuiteString = algoSuite;
+
+        // TODO: Optimize this :-)
+        if (Constants.ALGO_SUITE_BASIC256.equals(algoSuite)) {
+            this.digest = Constants.SHA1;
+            this.encryption = Constants.AES256;
+            this.symmetricKeyWrap = Constants.KW_AES256;
+            this.asymmetricKeyWrap = Constants.KW_RSA_OAEP;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L256;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 256;
+        } else if (Constants.ALGO_SUITE_BASIC192.equals(algoSuite)) {
+            this.digest = Constants.SHA1;
+            this.encryption = Constants.AES192;
+            this.symmetricKeyWrap = Constants.KW_AES192;
+            this.asymmetricKeyWrap = Constants.KW_RSA_OAEP;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L192;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 192;
+        } else if (Constants.ALGO_SUITE_BASIC128.equals(algoSuite)) {
+            this.digest = Constants.SHA1;
+            this.encryption = Constants.AES128;
+            this.symmetricKeyWrap = Constants.KW_AES128;
+            this.asymmetricKeyWrap = Constants.KW_RSA_OAEP;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L128;
+            this.signatureKeyDerivation = Constants.P_SHA1_L128;
+            this.minimumSymmetricKeyLength = 128;
+        } else if (Constants.ALGO_SUITE_TRIPLE_DES.equals(algoSuite)) {
+            this.digest = Constants.SHA1;
+            this.encryption = Constants.TRIPLE_DES;
+            this.symmetricKeyWrap = Constants.KW_TRIPLE_DES;
+            this.asymmetricKeyWrap = Constants.KW_RSA_OAEP;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L192;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 192;
+        } else if (Constants.ALGO_SUITE_BASIC256_RSA15.equals(algoSuite)) {
+            this.digest = Constants.SHA1;
+            this.encryption = Constants.AES256;
+            this.symmetricKeyWrap = Constants.KW_AES256;
+            this.asymmetricKeyWrap = Constants.KW_RSA15;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L256;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 256;
+        } else if (Constants.ALGO_SUITE_BASIC192_RSA15.equals(algoSuite)) {
+            this.digest = Constants.SHA1;
+            this.encryption = Constants.AES192;
+            this.symmetricKeyWrap = Constants.KW_AES192;
+            this.asymmetricKeyWrap = Constants.KW_RSA15;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L192;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 192;
+        } else if (Constants.ALGO_SUITE_BASIC128_RSA15.equals(algoSuite)) {
+            this.digest = Constants.SHA1;
+            this.encryption = Constants.AES128;
+            this.symmetricKeyWrap = Constants.KW_AES128;
+            this.asymmetricKeyWrap = Constants.KW_RSA15;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L128;
+            this.signatureKeyDerivation = Constants.P_SHA1_L128;
+            this.minimumSymmetricKeyLength = 128;
+        } else if (Constants.ALGO_SUITE_TRIPLE_DES_RSA15.equals(algoSuite)) {
+            this.digest = Constants.SHA1;
+            this.encryption = Constants.TRIPLE_DES;
+            this.symmetricKeyWrap = Constants.KW_TRIPLE_DES;
+            this.asymmetricKeyWrap = Constants.KW_RSA15;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L192;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 192;
+        } else if (Constants.ALGO_SUITE_BASIC256_SHA256.equals(algoSuite)) {
+            this.digest = Constants.SHA256;
+            this.encryption = Constants.AES256;
+            this.symmetricKeyWrap = Constants.KW_AES256;
+            this.asymmetricKeyWrap = Constants.KW_RSA_OAEP;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L256;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 256;
+        } else if (Constants.ALGO_SUITE_BASIC192_SHA256.equals(algoSuite)) {
+            this.digest = Constants.SHA256;
+            this.encryption = Constants.AES192;
+            this.symmetricKeyWrap = Constants.KW_AES192;
+            this.asymmetricKeyWrap = Constants.KW_RSA_OAEP;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L192;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 192;
+        } else if (Constants.ALGO_SUITE_BASIC128_SHA256.equals(algoSuite)) {
+            this.digest = Constants.SHA256;
+            this.encryption = Constants.AES128;
+            this.symmetricKeyWrap = Constants.KW_AES128;
+            this.asymmetricKeyWrap = Constants.KW_RSA_OAEP;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L128;
+            this.signatureKeyDerivation = Constants.P_SHA1_L128;
+            this.minimumSymmetricKeyLength = 128;
+        } else if (Constants.ALGO_SUITE_TRIPLE_DES_SHA256.equals(algoSuite)) {
+            this.digest = Constants.SHA256;
+            this.encryption = Constants.TRIPLE_DES;
+            this.symmetricKeyWrap = Constants.KW_TRIPLE_DES;
+            this.asymmetricKeyWrap = Constants.KW_RSA_OAEP;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L192;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 192;
+        } else if (Constants.ALGO_SUITE_BASIC256_SHA256_RSA15.equals(algoSuite)) {
+            this.digest = Constants.SHA256;
+            this.encryption = Constants.AES256;
+            this.symmetricKeyWrap = Constants.KW_AES256;
+            this.asymmetricKeyWrap = Constants.KW_RSA15;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L256;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 256;
+        } else if (Constants.ALGO_SUITE_BASIC192_SHA256_RSA15.equals(algoSuite)) {
+            this.digest = Constants.SHA256;
+            this.encryption = Constants.AES192;
+            this.symmetricKeyWrap = Constants.KW_AES192;
+            this.asymmetricKeyWrap = Constants.KW_RSA15;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L192;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 192;
+        } else if (Constants.ALGO_SUITE_BASIC128_SHA256_RSA15.equals(algoSuite)) {
+            this.digest = Constants.SHA256;
+            this.encryption = Constants.AES128;
+            this.symmetricKeyWrap = Constants.KW_AES128;
+            this.asymmetricKeyWrap = Constants.KW_RSA15;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L128;
+            this.signatureKeyDerivation = Constants.P_SHA1_L128;
+            this.minimumSymmetricKeyLength = 128;
+        } else if (Constants.ALGO_SUITE_TRIPLE_DES_SHA256_RSA15
+                .equals(algoSuite)) {
+            this.digest = Constants.SHA256;
+            this.encryption = Constants.TRIPLE_DES;
+            this.symmetricKeyWrap = Constants.KW_TRIPLE_DES;
+            this.asymmetricKeyWrap = Constants.KW_RSA15;
+            this.encryptionKeyDerivation = Constants.P_SHA1_L192;
+            this.signatureKeyDerivation = Constants.P_SHA1_L192;
+            this.minimumSymmetricKeyLength = 192;
+        } else {
+            // throw new WSSPolicyException("Invalid algorithm suite : " +
+            // algoSuite);
+        }
+    }
+
+    /**
+     * @return Returns the asymmetricKeyWrap.
+     */
+    public String getAsymmetricKeyWrap() {
+        return asymmetricKeyWrap;
+    }
+
+    /**
+     * @return Returns the asymmetricSignature.
+     */
+    public String getAsymmetricSignature() {
+        return asymmetricSignature;
+    }
+
+    /**
+     * @return Returns the computedKey.
+     */
+    public String getComputedKey() {
+        return computedKey;
+    }
+
+    /**
+     * @return Returns the digest.
+     */
+    public String getDigest() {
+        return digest;
+    }
+
+    /**
+     * @return Returns the encryption.
+     */
+    public String getEncryption() {
+        return encryption;
+    }
+
+    /**
+     * @return Returns the encryptionKeyDerivation.
+     */
+    public String getEncryptionKeyDerivation() {
+        return encryptionKeyDerivation;
+    }
+
+    /**
+     * @return Returns the maximumAsymmetricKeyLength.
+     */
+    public int getMaximumAsymmetricKeyLength() {
+        return maximumAsymmetricKeyLength;
+    }
+
+    /**
+     * @return Returns the maximumSymmetricKeyLength.
+     */
+    public int getMaximumSymmetricKeyLength() {
+        return maximumSymmetricKeyLength;
+    }
+
+    /**
+     * @return Returns the minimumAsymmetricKeyLength.
+     */
+    public int getMinimumAsymmetricKeyLength() {
+        return minimumAsymmetricKeyLength;
+    }
+
+    /**
+     * @return Returns the minimumSymmetricKeyLength.
+     */
+    public int getMinimumSymmetricKeyLength() {
+        return minimumSymmetricKeyLength;
+    }
+
+    /**
+     * @return Returns the signatureKeyDerivation.
+     */
+    public String getSignatureKeyDerivation() {
+        return signatureKeyDerivation;
+    }
+
+    /**
+     * @return Returns the symmetricKeyWrap.
+     */
+    public String getSymmetricKeyWrap() {
+        return symmetricKeyWrap;
+    }
+
+    /**
+     * @return Returns the symmetricSignature.
+     */
+    public String getSymmetricSignature() {
+        return symmetricSignature;
+    }
+
+    /**
+     * @return Returns the c14n.
+     */
+    public String getInclusiveC14n() {
+        return c14n;
+    }
+
+    /**
+     * @param c14n
+     *            The c14n to set.
+     */
+    public void setC14n(String c14n) {
+        this.c14n = c14n;
+    }
+
+    /**
+     * @return Returns the soapNormalization.
+     */
+    public String getSoapNormalization() {
+        return soapNormalization;
+    }
+
+    /**
+     * @param soapNormalization
+     *            The soapNormalization to set.
+     */
+    public void setSoapNormalization(String soapNormalization) {
+        this.soapNormalization = soapNormalization;
+    }
+
+    /**
+     * @return Returns the strTransform.
+     */
+    public String getStrTransform() {
+        return strTransform;
+    }
+
+    /**
+     * @param strTransform
+     *            The strTransform to set.
+     */
+    public void setStrTransform(String strTransform) {
+        this.strTransform = strTransform;
+    }
+
+    /**
+     * @return Returns the xPath.
+     */
+    public String getXPath() {
+        return xPath;
+    }
+
+    /**
+     * @param path
+     *            The xPath to set.
+     */
+    public void setXPath(String path) {
+        xPath = path;
+    }
+
+    private void setAlgoSuiteString(String algoSuiteString) {
+        this.algoSuiteString = algoSuiteString;
+    }
+
+    private String getAlgoSuiteString() {
+        return algoSuiteString;
+    }
+
+    public QName getName() {
+        return Constants.ALGORITHM_SUITE;
+    }
+
+    public PolicyComponent normalize() {
+        throw new UnsupportedOperationException(
+                "AlgorithmSuite.normalize() is not supported");
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+
+        String localName = Constants.ALGORITHM_SUITE.getLocalPart();
+        String namespaceURI = Constants.ALGORITHM_SUITE.getNamespaceURI();
+
+        String prefix = writer.getPrefix(Constants.ALGORITHM_SUITE
+                .getNamespaceURI());
+
+        if (prefix == null) {
+            prefix = Constants.ALGORITHM_SUITE.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        writer.writeNamespace(prefix, namespaceURI);
+
+        // <wsp:Policy>
+        writer.writeStartElement(Constants.POLICY.getPrefix(), Constants.POLICY
+                .getLocalPart(), Constants.POLICY.getNamespaceURI());
+        
+        //
+        writer.writeStartElement(prefix, getAlgoSuiteString(), namespaceURI);
+        writer.writeEndElement();
+
+        if (Constants.C14N.equals(getInclusiveC14n())) {
+            writer.writeStartElement(prefix, Constants.INCLUSIVE_C14N, prefix);
+            writer.writeEndElement();
+        }
+
+        if (Constants.SNT.equals(getSoapNormalization())) {
+            writer.writeStartElement(prefix, Constants.SOAP_NORMALIZATION_10,
+                    namespaceURI);
+            writer.writeEndElement();
+        }
+
+        if (Constants.STRT10.equals(getStrTransform())) {
+            writer.writeStartElement(prefix, Constants.STR_TRANSFORM_10,
+                    namespaceURI);
+            writer.writeEndElement();
+        }
+
+        if (Constants.XPATH.equals(getXPath())) {
+            writer.writeStartElement(prefix, Constants.XPATH10, namespaceURI);
+            writer.writeEndElement();
+        }
+
+        if (Constants.XPATH20.equals(getXPath())) {
+            writer.writeStartElement(prefix, Constants.XPATH_FILTER20,
+                    namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:AlgorithmSuite>
+        writer.writeEndElement();
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AlgorithmWrapper.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AlgorithmWrapper.java
new file mode 100644
index 0000000..d0c8c6c
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AlgorithmWrapper.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+public interface AlgorithmWrapper {
+
+    public void setAlgorithmSuite(AlgorithmSuite algorithmSuite);
+    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AsymmetricBinding.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AsymmetricBinding.java
new file mode 100644
index 0000000..1a085ff
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/AsymmetricBinding.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.All;
+import org.apache.neethi.ExactlyOne;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class AsymmetricBinding extends SymmetricAsymmetricBindingBase {
+
+    private InitiatorToken initiatorToken;
+
+    private RecipientToken recipientToken;
+
+    /**
+     * @return Returns the initiatorToken.
+     */
+    public InitiatorToken getInitiatorToken() {
+        return initiatorToken;
+    }
+
+    /**
+     * @param initiatorToken
+     *            The initiatorToken to set.
+     */
+    public void setInitiatorToken(InitiatorToken initiatorToken) {
+        this.initiatorToken = initiatorToken;
+    }
+
+    /**
+     * @return Returns the recipientToken.
+     */
+    public RecipientToken getRecipientToken() {
+        return recipientToken;
+    }
+
+    /**
+     * @param recipientToken
+     *            The recipientToken to set.
+     */
+    public void setRecipientToken(RecipientToken recipientToken) {
+        this.recipientToken = recipientToken;
+    }
+
+    public QName getName() {
+        return Constants.ASYMMETRIC_BINDING;
+    }
+
+    public PolicyComponent normalize() {
+
+        if (isNormalized()) {
+            return this;
+        }
+
+        AlgorithmSuite algorithmSuite = getAlgorithmSuite();
+        List configs = algorithmSuite.getConfigurations();
+
+        Policy policy = new Policy();
+        ExactlyOne exactlyOne = new ExactlyOne();
+
+        policy.addPolicyComponent(exactlyOne);
+
+        All wrapper;
+        AsymmetricBinding asymmetricBinding;
+
+        for (Iterator iterator = configs.iterator(); iterator.hasNext();) {
+            wrapper = new All();
+            asymmetricBinding = new AsymmetricBinding();
+
+            asymmetricBinding.setAlgorithmSuite((AlgorithmSuite) iterator
+                    .next());
+            asymmetricBinding
+                    .setEntireHeadersAndBodySignatures(isEntireHeadersAndBodySignatures());
+            asymmetricBinding.setIncludeTimestamp(isIncludeTimestamp());
+            asymmetricBinding.setInitiatorToken(getInitiatorToken());
+            asymmetricBinding.setLayout(getLayout());
+            asymmetricBinding.setProtectionOrder(getProtectionOrder());
+            asymmetricBinding.setRecipientToken(getRecipientToken());
+            asymmetricBinding.setSignatureProtection(isSignatureProtection());
+            asymmetricBinding
+                    .setSignedEndorsingSupportingTokens(getSignedEndorsingSupportingTokens());
+            asymmetricBinding.setTokenProtection(isTokenProtection());
+
+            asymmetricBinding.setNormalized(true);
+            wrapper.addPolicyComponent(wrapper);
+        }
+
+        return policy;
+
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localname = Constants.ASYMMETRIC_BINDING.getLocalPart();
+        String namespaceURI = Constants.ASYMMETRIC_BINDING.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+        
+        if (prefix == null) {
+            prefix = Constants.ASYMMETRIC_BINDING.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        // <sp:AsymmetricBinding>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        writer.writeNamespace(prefix, namespaceURI);
+
+        String pPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (pPrefix == null) {
+            pPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(pPrefix, Constants.POLICY.getNamespaceURI());
+        }
+
+        // <wsp:Policy>
+        writer.writeStartElement(pPrefix, Constants.POLICY.getLocalPart(),
+                Constants.POLICY.getNamespaceURI());
+
+        if (initiatorToken == null) {
+            throw new RuntimeException("InitiatorToken is not set");
+        }
+
+        // <sp:InitiatorToken>
+        initiatorToken.serialize(writer);
+        // </sp:InitiatorToken>
+
+        if (recipientToken == null) {
+            throw new RuntimeException("RecipientToken is not set");
+        }
+
+        // <sp:RecipientToken>
+        recipientToken.serialize(writer);
+        // </sp:RecipientToken>
+
+        AlgorithmSuite algorithmSuite = getAlgorithmSuite();
+        if (algorithmSuite == null) {
+            throw new RuntimeException("AlgorithmSuite is not set");
+        }
+
+        // <sp:AlgorithmSuite>
+        algorithmSuite.serialize(writer);
+        // </sp:AlgorithmSuite>
+
+        Layout layout = getLayout();
+        if (layout != null) {
+            // <sp:Layout>
+            layout.serialize(writer);
+            // </sp:Layout>
+        }
+
+        if (isIncludeTimestamp()) {
+            // <sp:IncludeTimestamp>
+            writer.writeStartElement(Constants.INCLUDE_TIMESTAMP.getPrefix(),
+                    Constants.INCLUDE_TIMESTAMP.getLocalPart(),
+                    Constants.INCLUDE_TIMESTAMP.getNamespaceURI());
+            writer.writeEndElement();
+            // </sp:IncludeTimestamp>
+        }
+
+        if (Constants.ENCRYPT_BEFORE_SIGNING.equals(getProtectionOrder())) {
+            // <sp:EncryptBeforeSign />
+            writer.writeStartElement(prefix, Constants.ENCRYPT_BEFORE_SIGNING,
+                    namespaceURI);
+            writer.writeEndElement();
+        }
+
+        if (isSignatureProtection()) {
+            // <sp:EncryptSignature />
+            // FIXME move the String constants to a QName
+            writer.writeStartElement(prefix, Constants.ENCRYPT_SIGNATURE
+                    .getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+
+        if (isTokenProtection()) {
+            // <sp:ProtectTokens />
+            writer.writeStartElement(prefix, Constants.PROTECT_TOKENS
+                    .getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+
+        if (isEntireHeadersAndBodySignatures()) {
+            // <sp:OnlySignEntireHeaderAndBody />
+            writer.writeStartElement(prefix,
+                    Constants.ONLY_SIGN_ENTIRE_HEADERS_AND_BODY, namespaceURI);
+            writer.writeEndElement();
+        }
+
+        // </wsp:Policy>
+        writer.writeEndElement();
+
+        // </sp:AsymmetircBinding>
+        writer.writeEndElement();
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Binding.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Binding.java
new file mode 100644
index 0000000..a7a2eb0
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Binding.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+public abstract class Binding extends AbstractSecurityAssertion implements AlgorithmWrapper {
+
+    private AlgorithmSuite algorithmSuite;
+    private boolean includeTimestamp;
+    private Layout layout = new Layout();
+    private SupportingToken signedSupportingToken;
+    private SupportingToken signedEndorsingSupportingTokens;
+        
+    /**
+     * @return Returns the algorithmSuite.
+     */
+    public AlgorithmSuite getAlgorithmSuite() {
+        return algorithmSuite;
+    }
+
+    /**
+     * @param algorithmSuite The algorithmSuite to set.
+     */
+    public void setAlgorithmSuite(AlgorithmSuite algorithmSuite) {
+        this.algorithmSuite = algorithmSuite;
+    }
+
+    /**
+     * @return Returns the includeTimestamp.
+     */
+    public boolean isIncludeTimestamp() {
+        return includeTimestamp;
+    }
+
+    /**
+     * @param includeTimestamp The includeTimestamp to set.
+     */
+    public void setIncludeTimestamp(boolean includeTimestamp) {
+        this.includeTimestamp = includeTimestamp;
+    }
+    
+    /**
+     * @return Returns the layout.
+     */
+    public Layout getLayout() {
+        return layout;
+    }
+
+    /**
+     * @param layout The layout to set.
+     */
+    public void setLayout(Layout layout) {
+        this.layout = layout;
+    }
+
+    public SupportingToken getSignedEndorsingSupportingTokens() {
+        return signedEndorsingSupportingTokens;
+    }
+
+    public void setSignedEndorsingSupportingTokens(
+            SupportingToken signedEndorsingSupportingTokens) {
+        this.signedEndorsingSupportingTokens = signedEndorsingSupportingTokens;
+    }
+
+    public SupportingToken getSignedSupportingToken() {
+        return signedSupportingToken;
+    }
+
+    public void setSignedSupportingToken(SupportingToken signedSupportingToken) {
+        this.signedSupportingToken = signedSupportingToken;
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/EncryptionToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/EncryptionToken.java
new file mode 100644
index 0000000..7af329d
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/EncryptionToken.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.ws.secpolicy.Constants;
+
+public class EncryptionToken extends AbstractSecurityAssertion implements TokenWrapper {
+
+    private Token encryptionToken;
+
+    /**
+     * @return Returns the encryptionToken.
+     */
+    public Token getEncryptionToken() {
+        return encryptionToken;
+    }
+
+    /**
+     * @param encryptionToken The encryptionToken to set.
+     */
+    public void setEncryptionToken(Token encryptionToken) {
+        this.encryptionToken = encryptionToken;
+    }
+
+    public void setToken(Token tok)  {
+        this.setEncryptionToken(tok);
+    }
+
+    public QName getName() {
+        return Constants.ENCRYPTION_TOKEN;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localname = Constants.ENCRYPTION_TOKEN.getLocalPart();
+        String namespaceURI = Constants.ENCRYPTION_TOKEN.getNamespaceURI();
+        String prefix;
+        
+        String writerPrefix = writer.getPrefix(namespaceURI);
+        
+        if (writerPrefix == null) {
+            prefix = Constants.ENCRYPTION_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        } else {
+            prefix = writerPrefix;
+        }
+        
+        // <sp:EncryptionToken>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        
+        if (writerPrefix == null) {
+            // xmlns:sp=".."
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+        
+        
+        String wspNamespaceURI = Constants.POLICY.getNamespaceURI();
+        
+        String wspPrefix;
+        
+        String wspWriterPrefix = writer.getPrefix(wspNamespaceURI);
+        
+        if (wspWriterPrefix == null) {
+            wspPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(wspPrefix, wspNamespaceURI);
+            
+        } else {
+            wspPrefix = wspWriterPrefix;
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(wspPrefix, Constants.POLICY.getLocalPart(), wspNamespaceURI);
+        
+        if (wspWriterPrefix == null) {
+            // xmlns:wsp=".."
+            writer.writeNamespace(wspPrefix, wspNamespaceURI);
+        }
+        
+        if (encryptionToken == null) {
+            throw new RuntimeException("EncryptionToken is not set");
+        }
+        
+        encryptionToken.serialize(writer);
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:EncryptionToken>
+        writer.writeEndElement();
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Header.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Header.java
new file mode 100644
index 0000000..8e95a29
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Header.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+public class Header {
+
+    private String name;
+    private String namespace;
+    
+    /**
+     * @return Returns the name.
+     */
+    public String getName() {
+        return name;
+    }
+    /**
+     * @param name The name to set.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+    /**
+     * @return Returns the namespace.
+     */
+    public String getNamespace() {
+        return namespace;
+    }
+    /**
+     * @param namespace The namespace to set.
+     */
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
+    }
+    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/HttpsToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/HttpsToken.java
new file mode 100644
index 0000000..af1f4a3
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/HttpsToken.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+/**
+ * 
+ * @author Ruchith Fernando (ruchith.fernando@gmail.com)
+ */
+public class HttpsToken extends Token {
+
+    private boolean requireClientCertificate = false;
+
+    public boolean isRequireClientCertificate() {
+        return requireClientCertificate;
+    }
+
+    public void setRequireClientCertificate(boolean requireClientCertificate) {
+        this.requireClientCertificate = requireClientCertificate;
+    }
+
+    public QName getName() {
+        return Constants.HTTPS_TOKEN;
+    }
+
+    public PolicyComponent normalize() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+
+        String localname = Constants.HTTPS_TOKEN.getLocalPart();
+        String namespaceURI = Constants.HTTPS_TOKEN.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+        if (prefix == null) {
+            prefix = Constants.HTTPS_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        // <sp:HttpsToken
+        writer.writeStartElement(prefix, localname, namespaceURI);
+
+        // RequireClientCertificate=".."
+        writer
+                .writeAttribute(Constants.REQUIRE_CLIENT_CERTIFICATE
+                        .getLocalPart(), Boolean
+                        .toString(isRequireClientCertificate()));
+
+        writer.writeEndElement();
+        // </sp:HttpsToken>
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/InitiatorToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/InitiatorToken.java
new file mode 100644
index 0000000..6f7570f
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/InitiatorToken.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class InitiatorToken extends AbstractSecurityAssertion implements TokenWrapper {
+    
+    private Token initiatorToken;
+
+    /**
+     * @return Returns the initiatorToken.
+     */
+    public Token getInitiatorToken() {
+        return initiatorToken;
+    }
+
+    /**
+     * @param initiatorToken The initiatorToken to set.
+     */
+    public void setInitiatorToken(Token initiatorToken) {
+        this.initiatorToken = initiatorToken;
+    }
+
+    public void setToken(Token tok) {
+        this.setInitiatorToken(tok);
+    }
+    
+    public QName getName() {
+        return Constants.INITIATOR_TOKEN;
+    }
+
+    public PolicyComponent normalize() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localName = Constants.INITIATOR_TOKEN.getLocalPart();
+        String namespaceURI = Constants.INITIATOR_TOKEN.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+
+        if (prefix == null) {
+            prefix = Constants.INITIATOR_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+        
+        // <sp:InitiatorToken>
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        
+        String pPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (pPrefix == null) {
+            pPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(pPrefix, Constants.POLICY.getNamespaceURI());
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(pPrefix, Constants.POLICY.getLocalPart(), Constants.POLICY.getNamespaceURI());
+
+        Token token = getInitiatorToken();
+        if (token == null) {
+            throw new RuntimeException("InitiatorToken doesn't contain any token assertions");
+        }
+        token.serialize(writer);
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:InitiatorToken>
+        writer.writeEndElement();
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/IssuedToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/IssuedToken.java
new file mode 100644
index 0000000..dd98c25
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/IssuedToken.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * Model bean for the IssuedToken assertion.
+ */
+public class IssuedToken extends Token {
+
+    private OMElement issuerEpr;
+
+    private OMElement rstTemplate;
+
+    boolean requireExternalReference;
+
+    boolean requireInternalReference;
+
+    /**
+     * @return Returns the issuerEpr.
+     */
+    public OMElement getIssuerEpr() {
+        return issuerEpr;
+    }
+
+    /**
+     * @param issuerEpr
+     *            The issuerEpr to set.
+     */
+    public void setIssuerEpr(OMElement issuerEpr) {
+        this.issuerEpr = issuerEpr;
+    }
+
+    /**
+     * @return Returns the requireExternalReference.
+     */
+    public boolean isRequireExternalReference() {
+        return requireExternalReference;
+    }
+
+    /**
+     * @param requireExternalReference
+     *            The requireExternalReference to set.
+     */
+    public void setRequireExternalReference(boolean requireExternalReference) {
+        this.requireExternalReference = requireExternalReference;
+    }
+
+    /**
+     * @return Returns the requireInternalReference.
+     */
+    public boolean isRequireInternalReference() {
+        return requireInternalReference;
+    }
+
+    /**
+     * @param requireInternalReference
+     *            The requireInternalReference to set.
+     */
+    public void setRequireInternalReference(boolean requireInternalReference) {
+        this.requireInternalReference = requireInternalReference;
+    }
+
+    /**
+     * @return Returns the rstTemplate.
+     */
+    public OMElement getRstTemplate() {
+        return rstTemplate;
+    }
+
+    /**
+     * @param rstTemplate
+     *            The rstTemplate to set.
+     */
+    public void setRstTemplate(OMElement rstTemplate) {
+        this.rstTemplate = rstTemplate;
+    }
+
+    public QName getName() {
+        return Constants.ISSUED_TOKEN;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localname = Constants.ISSUED_TOKEN.getLocalPart();
+        String namespaceURI = Constants.ISSUED_TOKEN.getNamespaceURI();
+
+        String prefix;
+        String writerPrefix = writer.getPrefix(namespaceURI);
+
+        if (writerPrefix == null) {
+            prefix = Constants.ISSUED_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+
+        } else {
+            prefix = writerPrefix;
+        }
+
+        // <sp:IssuedToken>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+
+        if (writerPrefix == null) {
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+
+        String inclusion = getInclusion();
+        if (inclusion != null) {
+            writer.writeAttribute(prefix, namespaceURI,
+                    Constants.ATTR_INCLUDE_TOKEN, inclusion);
+        }
+
+        if (issuerEpr != null) {
+            writer.writeStartElement(prefix, Constants.ISSUER.getLocalPart(),
+                    namespaceURI);
+            issuerEpr.serialize(writer);
+            writer.writeEndElement();
+        }
+
+        if (rstTemplate != null) {
+            // <sp:RequestSecurityTokenTemplate>
+            writer.writeStartElement(prefix,
+                    Constants.REQUEST_SECURITY_TOKEN_TEMPLATE.getLocalPart(),
+                    namespaceURI);
+
+            rstTemplate.serialize(writer);
+
+            // </sp:RequestSecurityTokenTemplate>
+            writer.writeEndElement();
+        }
+
+        String policyLocalName = Constants.PROTECTION_TOKEN.getLocalPart();
+        String policyNamespaceURI = Constants.PROTECTION_TOKEN
+                .getNamespaceURI();
+
+        String wspPrefix;
+
+        String wspWriterPrefix = writer.getPrefix(policyNamespaceURI);
+
+        if (wspWriterPrefix == null) {
+            wspPrefix = Constants.PROTECTION_TOKEN.getPrefix();
+            writer.setPrefix(wspPrefix, policyNamespaceURI);
+        } else {
+            wspPrefix = wspWriterPrefix;
+        }
+
+        if (isRequireExternalReference() || isRequireInternalReference()) {
+
+            // <wsp:Policy>
+            writer.writeStartElement(wspPrefix, policyLocalName,
+                    policyNamespaceURI);
+
+            if (wspWriterPrefix == null) {
+                // xmlns:wsp=".."
+                writer.writeNamespace(wspPrefix, policyNamespaceURI);
+            }
+
+            if (isRequireExternalReference()) {
+                // <sp:RequireExternalReference />
+                writer.writeEmptyElement(prefix, Constants.REQUIRE_EXTERNAL_REFERNCE.getLocalPart(), namespaceURI);
+            }
+            
+            if (isRequireInternalReference()) {
+                // <sp:RequireInternalReference />
+                writer.writeEmptyElement(prefix, Constants.REQUIRE_INTERNAL_REFERNCE.getLocalPart(), namespaceURI);
+            }
+            
+            // <wsp:Policy>
+            writer.writeEndElement();
+        }
+
+        // </sp:IssuedToken>
+        writer.writeEndElement();
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Layout.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Layout.java
new file mode 100644
index 0000000..59b2499
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Layout.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class Layout extends AbstractSecurityAssertion {
+
+    private String value = Constants.LAYOUT_LAX;
+
+    /**
+     * @return Returns the value.
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * @param value
+     *            The value to set.
+     */
+    public void setValue(String value) {
+        if (Constants.LAYOUT_LAX.equals(value)
+                || Constants.LAYOUT_STRICT.equals(value)
+                || Constants.LAYOUT_LAX_TIMESTAMP_FIRST.equals(value)
+                || Constants.LAYOUT_LAX_TIMESTAMP_LAST.equals(value)) {
+            this.value = value;
+        } else {
+            // throw new WSSPolicyException("Incorrect layout value : " +
+            // value);
+        }
+    }
+
+    public QName getName() {
+        return Constants.LAYOUT;
+    }
+
+    public PolicyComponent normalize() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+
+        String localName = Constants.LAYOUT.getLocalPart();
+        String namespaceURI = Constants.LAYOUT.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+
+        if (prefix == null) {
+            prefix = Constants.LAYOUT.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        // <sp:Layout>
+        writer.writeStartElement(prefix, localName, namespaceURI);
+
+        // <wsp:Policy>
+        writer.writeStartElement(Constants.POLICY.getPrefix(), Constants.POLICY
+                .getLocalPart(), Constants.POLICY.getNamespaceURI());
+
+        // .. <sp:Strict /> | <sp:Lax /> | <sp:LaxTsFirst /> | <sp:LaxTsLast /> ..
+        if (Constants.LAYOUT_STRICT.equals(value)) {
+            writer.writeStartElement(prefix, Constants.STRICT.getLocalPart(), namespaceURI);
+            
+        } else if (Constants.LAYOUT_LAX.equals(value)) {
+            writer.writeStartElement(prefix, Constants.LAX.getLocalPart(), namespaceURI);
+            
+        } else if (Constants.LAYOUT_LAX_TIMESTAMP_FIRST.equals(value)) {
+            writer.writeStartElement(prefix, Constants.LAXTSFIRST.getLocalPart(), namespaceURI);
+            
+        } else if (Constants.LAYOUT_LAX_TIMESTAMP_LAST.equals(value)) {
+            writer.writeStartElement(prefix, Constants.LAXTSLAST.getLocalPart(), namespaceURI);
+        }
+        
+        writer.writeEndElement();
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:Layout>
+        writer.writeEndElement();
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/ProtectionToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/ProtectionToken.java
new file mode 100644
index 0000000..0270402
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/ProtectionToken.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class ProtectionToken extends AbstractSecurityAssertion implements TokenWrapper {
+    
+    private Token protectionToken;
+
+    /**
+     * @return Returns the protectionToken.
+     */
+    public Token getProtectionToken() {
+        return protectionToken;
+    }
+
+    /**
+     * @param protectionToken The protectionToken to set.
+     */
+    public void setProtectionToken(Token protectionToken) {
+        this.protectionToken = protectionToken;
+    }
+
+    public void setToken(Token tok) {
+        this.setProtectionToken(tok);
+    }
+    
+    public QName getName() {
+        return Constants.PROTECTION_TOKEN;
+    }
+
+    public PolicyComponent normalize() {
+        /*
+         *  ProtectionToken can not contain multiple values. Hence we consider it
+         *  to always be in the normalized format.
+         */
+        return this;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localname = Constants.PROTECTION_TOKEN.getLocalPart();
+        String namespaceURI = Constants.PROTECTION_TOKEN.getNamespaceURI();
+        
+        String prefix;
+        
+        String writerPrefix = writer.getPrefix(namespaceURI);
+        if (writerPrefix == null) {
+            prefix = Constants.PROTECTION_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+            
+        } else {
+            prefix = writerPrefix;
+        }
+        
+        // <sp:ProtectionToken>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        
+        if (writerPrefix == null) {
+            // xmlns:sp=".."
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+        
+        String policyLocalName = Constants.POLICY.getLocalPart();
+        String policyNamespaceURI = Constants.POLICY.getNamespaceURI();
+        
+        String wspPrefix;
+        
+        String wspWriterPrefix = writer.getPrefix(policyNamespaceURI);
+        
+        if (wspWriterPrefix == null) {
+            wspPrefix = Constants.PROTECTION_TOKEN.getPrefix();
+            writer.setPrefix(wspPrefix, policyNamespaceURI);
+        } else {
+            wspPrefix = wspWriterPrefix;
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(wspPrefix, policyLocalName, policyNamespaceURI);
+        
+        if (wspWriterPrefix == null) {
+            // xmlns:wsp=".."
+            writer.writeNamespace(wspPrefix, policyNamespaceURI);
+        }
+        
+        if (protectionToken == null) {
+            throw new RuntimeException("ProtectionToken is not set");
+        }
+        
+        protectionToken.serialize(writer);
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+
+        // </sp:ProtectionToken>
+        writer.writeEndElement();
+    }    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/RecipientToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/RecipientToken.java
new file mode 100644
index 0000000..b4ce19d
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/RecipientToken.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class RecipientToken extends AbstractSecurityAssertion implements TokenWrapper {
+    
+    private Token receipientToken;
+   
+    /**
+     * @return Returns the receipientToken.
+     */
+    public Token getReceipientToken() {
+        return receipientToken;
+    }
+
+    /**
+     * @param receipientToken The receipientToken to set.
+     */
+    public void setReceipientToken(Token receipientToken) {
+        this.receipientToken = receipientToken;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.ws.security.policy.TokenWrapper#setToken(org.apache.ws.security.policy.Token)
+     */
+    public void setToken(Token tok) {
+        this.setReceipientToken(tok);
+    }
+
+    public QName getName() {
+        return Constants.RECIPIENT_TOKEN;
+    }
+
+    public PolicyComponent normalize() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localName = Constants.RECIPIENT_TOKEN.getLocalPart();
+        String namespaceURI = Constants.RECIPIENT_TOKEN.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+
+        if (prefix == null) {
+            prefix = Constants.RECIPIENT_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+        
+        // <sp:RecipientToken>
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        
+        String pPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (pPrefix == null) {
+            pPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(pPrefix, Constants.POLICY.getNamespaceURI());
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(pPrefix, Constants.POLICY.getLocalPart(), Constants.POLICY.getNamespaceURI());
+
+        Token token = getReceipientToken();
+        if (token == null) {
+            throw new RuntimeException("RecipientToken doesn't contain any token assertions");
+        }
+        token.serialize(writer);
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:RecipientToken>
+        writer.writeEndElement();
+    }    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SecureConversationToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SecureConversationToken.java
new file mode 100644
index 0000000..f0981ab
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SecureConversationToken.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * Model class of SecureConversationToken asertion
+ */
+public class SecureConversationToken extends SecurityContextToken {
+
+    private Policy bootstrapPolicy;
+
+    private OMElement issuerEpr;
+
+    /**
+     * @return Returns the bootstrapPolicy.
+     */
+    public Policy getBootstrapPolicy() {
+        return bootstrapPolicy;
+    }
+
+    /**
+     * @param bootstrapPolicy
+     *            The bootstrapPolicy to set.
+     */
+    public void setBootstrapPolicy(Policy bootstrapPolicy) {
+        this.bootstrapPolicy = bootstrapPolicy;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.neethi.Assertion#getName()
+     */
+    public QName getName() {
+        return Constants.SECURE_CONVERSATION_TOKEN;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+
+        String localname = Constants.SECURE_CONVERSATION_TOKEN.getLocalPart();
+        String namespaceURI = Constants.SECURE_CONVERSATION_TOKEN
+                .getNamespaceURI();
+        String prefix;
+
+        String writerPrefix = writer.getPrefix(namespaceURI);
+
+        if (writerPrefix == null) {
+            prefix = Constants.SECURE_CONVERSATION_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        } else {
+            prefix = writerPrefix;
+        }
+
+        // <sp:SecureConversationToken>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+
+        if (writerPrefix == null) {
+            // xmlns:sp=".."
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+
+        String inclusion = getInclusion();
+
+        if (inclusion != null) {
+            writer.writeAttribute(prefix, namespaceURI, Constants.INCLUDE_TOKEN
+                    .getLocalPart(), inclusion);
+        }
+
+        if (issuerEpr != null) {
+            // <sp:Issuer>
+            writer.writeStartElement(prefix, Constants.ISSUER.getLocalPart(),
+                    namespaceURI);
+
+            issuerEpr.serialize(writer);
+
+            writer.writeEndElement();
+        }
+
+        if (isDerivedKeys() || isRequireExternalUriRef()
+                || isSc10SecurityContextToken() || (bootstrapPolicy != null)) {
+
+            String wspNamespaceURI = Constants.POLICY.getNamespaceURI();
+
+            String wspPrefix;
+
+            String wspWriterPrefix = writer.getPrefix(wspNamespaceURI);
+
+            if (wspWriterPrefix == null) {
+                wspPrefix = Constants.POLICY.getPrefix();
+                writer.setPrefix(wspPrefix, wspNamespaceURI);
+
+            } else {
+                wspPrefix = wspWriterPrefix;
+            }
+
+            // <wsp:Policy>
+            writer.writeStartElement(wspPrefix,
+                    Constants.POLICY.getLocalPart(), wspNamespaceURI);
+
+            if (wspWriterPrefix == null) {
+                // xmlns:wsp=".."
+                writer.writeNamespace(wspPrefix, wspNamespaceURI);
+            }
+            
+            if (isDerivedKeys()) {
+                // <sp:RequireDerivedKeys />
+                writer.writeEmptyElement(prefix, Constants.REQUIRE_DERIVED_KEYS.getLocalPart(), wspWriterPrefix);
+            }
+            
+            if (isRequireExternalUriRef()) {
+                // <sp:RequireExternalUriReference />
+                writer.writeEmptyElement(prefix, Constants.REQUIRE_EXTERNAL_URI_REFERNCE.getLocalPart(), namespaceURI);
+            }
+            
+            if (isSc10SecurityContextToken()) {
+                // <sp:SC10SecurityContextToken />
+                writer.writeEmptyElement(prefix, Constants.SC10_SECURITY_CONTEXT_TOKEN.getLocalPart(), namespaceURI);
+            }
+            
+            if (bootstrapPolicy != null) {
+                // <sp:BootstrapPolicy ..>
+                writer.writeStartElement(prefix, Constants.BOOTSTRAP_POLICY.getLocalPart(), namespaceURI);
+                bootstrapPolicy.serialize(writer);
+                writer.writeEndElement();
+            }
+
+            // </wsp:Policy>
+            writer.writeEndElement();
+        }
+
+        // </sp:SecureConversationToken>
+        writer.writeEndElement();
+    }
+
+    /**
+     * @return Returns the issuerEpr.
+     */
+    public OMElement getIssuerEpr() {
+        return issuerEpr;
+    }
+
+    /**
+     * @param issuerEpr
+     *            The issuerEpr to set.
+     */
+    public void setIssuerEpr(OMElement issuerEpr) {
+        this.issuerEpr = issuerEpr;
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SecurityContextToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SecurityContextToken.java
new file mode 100644
index 0000000..978d525
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SecurityContextToken.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * Model class of SecurityContextToken assertion
+ */
+public class SecurityContextToken extends Token {
+
+    boolean requireExternalUriRef;
+    
+    boolean sc10SecurityContextToken;
+    
+    /**
+     * @return Returns the requireExternalUriRef.
+     */
+    public boolean isRequireExternalUriRef() {
+        return requireExternalUriRef;
+    }
+
+    /**
+     * @param requireExternalUriRef The requireExternalUriRef to set.
+     */
+    public void setRequireExternalUriRef(boolean requireExternalUriRef) {
+        this.requireExternalUriRef = requireExternalUriRef;
+    }
+
+    /**
+     * @return Returns the sc10SecurityContextToken.
+     */
+    public boolean isSc10SecurityContextToken() {
+        return sc10SecurityContextToken;
+    }
+
+    /**
+     * @param sc10SecurityContextToken The sc10SecurityContextToken to set.
+     */
+    public void setSc10SecurityContextToken(boolean sc10SecurityContextToken) {
+        this.sc10SecurityContextToken = sc10SecurityContextToken;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.neethi.Assertion#getName()
+     */
+    public QName getName() {
+        return Constants.SECURITY_CONTEXT_TOKEN;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.neethi.Assertion#normalize()
+     */
+    public PolicyComponent normalize() {
+        // TODO TODO Sanka
+        throw new UnsupportedOperationException("TODO Sanka");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.neethi.PolicyComponent#serialize(javax.xml.stream.XMLStreamWriter)
+     */
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        // TODO TODO Sanka
+        throw new UnsupportedOperationException("TODO Sanka");
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignatureToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignatureToken.java
new file mode 100644
index 0000000..257d9b1
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignatureToken.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.ws.secpolicy.Constants;
+
+public class SignatureToken extends AbstractSecurityAssertion implements TokenWrapper {
+
+    private Token signatureToken;
+
+    /**
+     * @return Returns the signatureToken.
+     */
+    public Token getSignatureToken() {
+        return signatureToken;
+    }
+
+    /**
+     * @param signatureToken The signatureToken to set.
+     */
+    public void setSignatureToken(Token signatureToken) {
+        this.signatureToken = signatureToken;
+    }
+
+    public void setToken(Token tok) {
+        this.setSignatureToken(tok);
+    }
+
+    public QName getName() {
+        return Constants.SIGNATURE_TOKEN;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        
+        String localname = Constants.SIGNATURE_TOKEN.getLocalPart();
+        String namespaceURI = Constants.SIGNATURE_TOKEN.getNamespaceURI();
+        
+        String prefix;
+        String writerPrefix = writer.getPrefix(namespaceURI);
+        
+        if (writerPrefix == null) {
+            prefix = Constants.SIGNATURE_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+            
+        } else {
+            prefix = writerPrefix;
+        }
+        
+        // <sp:SignatureToken>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        
+        if (writerPrefix == null) {
+            // xmlns:sp=".."
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+        
+        
+        String wspNamespaceURI = Constants.POLICY.getNamespaceURI();
+        
+        String wspPrefix;
+        
+        String wspWriterPrefix = writer.getPrefix(wspNamespaceURI);
+        
+        if (wspWriterPrefix == null) {
+            wspPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(wspPrefix, wspNamespaceURI);
+            
+        } else {
+            wspPrefix = wspWriterPrefix;
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(wspPrefix, Constants.POLICY.getLocalPart(), wspNamespaceURI);
+        
+        if (wspWriterPrefix == null) {
+            // xmlns:wsp=".."
+            writer.writeNamespace(wspPrefix, wspNamespaceURI);
+        }
+        
+        if (signatureToken == null) {
+            throw new RuntimeException("EncryptionToken is not set");
+        }
+        
+        signatureToken.serialize(writer);
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:SignatureToken>
+        writer.writeEndElement();
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignedEncryptedElements.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignedEncryptedElements.java
new file mode 100644
index 0000000..191d655
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignedEncryptedElements.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class SignedEncryptedElements extends AbstractSecurityAssertion {
+
+    private ArrayList xPathExpressions = new ArrayList();
+
+    private String xPathVersion;
+
+    /**
+     * Just a flag to identify whether this holds sign element info or encr
+     * elements info
+     */
+    private boolean signedElemets;
+
+    public SignedEncryptedElements(boolean signedElements) {
+        this.signedElemets = signedElements;
+    }
+
+    /**
+     * @return Returns the xPathExpressions.
+     */
+    public ArrayList getXPathExpressions() {
+        return xPathExpressions;
+    }
+
+    public void addXPathExpression(String expr) {
+        this.xPathExpressions.add(expr);
+    }
+
+    /**
+     * @return Returns the xPathVersion.
+     */
+    public String getXPathVersion() {
+        return xPathVersion;
+    }
+
+    /**
+     * @param pathVersion
+     *            The xPathVersion to set.
+     */
+    public void setXPathVersion(String pathVersion) {
+        xPathVersion = pathVersion;
+    }
+
+    /**
+     * @return Returns the signedElemets.
+     */
+    public boolean isSignedElemets() {
+        return signedElemets;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+
+        String localName = getName().getLocalPart();
+        String namespaceURI = getName().getNamespaceURI();
+
+        String prefix;
+        String writerPrefix = writer.getPrefix(namespaceURI);
+
+        if (writerPrefix == null) {
+            prefix = getName().getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        } else {
+            prefix = writerPrefix;
+        }
+
+        // <sp:SignedElements> | <sp:EncryptedElements>
+        writer.writeStartElement(prefix, localName, namespaceURI);
+
+        if (writerPrefix == null) {
+            // xmlns:sp=".."
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+
+        if (xPathVersion != null) {
+            writer.writeAttribute(prefix, namespaceURI,
+                    Constants.ATTR_XPATH_VERSION.getLocalPart(), xPathVersion);
+        }
+
+        String xpathExpression;
+
+        for (Iterator iterator = xPathExpressions.iterator(); iterator
+                .hasNext();) {
+            xpathExpression = (String) iterator.next();
+            // <sp:XPath ..>
+            writer.writeStartElement(prefix, Constants.XPATH_.getLocalPart(),
+                    namespaceURI);
+            writer.writeCharacters(xpathExpression);
+            writer.writeEndElement();
+        }
+
+        // </sp:SignedElements> | </sp:EncryptedElements>
+        writer.writeEndElement();
+    }
+
+    public QName getName() {
+        if (signedElemets) {
+            return Constants.SIGNED_ELEMENTS;
+        }
+
+        return Constants.ENCRYPTED_ELEMENTS;
+    }
+
+    public PolicyComponent normalize() {
+        return this;
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignedEncryptedParts.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignedEncryptedParts.java
new file mode 100644
index 0000000..65f7501
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SignedEncryptedParts.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class SignedEncryptedParts extends AbstractSecurityAssertion {
+
+    private boolean body;
+    
+    private ArrayList headers = new ArrayList();
+    
+    private boolean signedParts;
+    
+    public SignedEncryptedParts(boolean signedParts) {
+        this.signedParts = signedParts;
+    }
+
+    /**
+     * @return Returns the body.
+     */
+    public boolean isBody() {
+        return body;
+    }
+
+    /**
+     * @param body The body to set.
+     */
+    public void setBody(boolean body) {
+        this.body = body;
+    }
+
+    /**
+     * @return Returns the headers.
+     */
+    public ArrayList getHeaders() {
+        return this.headers;
+    }
+
+    /**
+     * @param headers The headers to set.
+     */
+    public void addHeader(Header header) {
+        this.headers.add(header);
+    }
+
+    /**
+     * @return Returns the signedParts.
+     */
+    public boolean isSignedParts() {
+        return signedParts;
+    }
+
+    public QName getName() {
+        if (signedParts) {
+            return Constants.SIGNED_PARTS;
+        }
+        return Constants.ENCRYPTED_PARTS;
+    }
+
+    public PolicyComponent normalize() {
+        return this;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localName = getName().getLocalPart();
+        String namespaceURI = getName().getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+
+        if (prefix == null) {
+            prefix = getName().getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+            
+        // <sp:SignedParts> | <sp:EncryptedParts> 
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        
+        // xmlns:sp=".."
+        writer.writeNamespace(prefix, namespaceURI);
+        
+        if (isBody()) {
+            // <sp:Body />
+            // FIXME : move 'Body' to Constants
+            writer.writeStartElement(prefix, "Body", namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        Header header;        
+        for (Iterator iterator = headers.iterator(); iterator.hasNext();) {
+            header = (Header) iterator.next();
+            // <sp:Header Name=".." Namespace=".." />
+            // FIXME move 'Header' to Constants
+            writer.writeStartElement(prefix, "Header", namespaceURI);
+            
+            writer.writeAttribute("Name", header.getName());
+            writer.writeAttribute("Namespace", header.getNamespace());
+            
+            writer.writeEndElement();
+        }
+        
+        // </sp:SignedParts> | </sp:EncryptedParts>
+        writer.writeEndElement();
+    }    
+    
+    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SupportingToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SupportingToken.java
new file mode 100644
index 0000000..301c6d3
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SupportingToken.java
@@ -0,0 +1,265 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class SupportingToken extends AbstractSecurityAssertion implements
+        AlgorithmWrapper, TokenWrapper {
+
+    /**
+     * Type of SupportingToken
+     * 
+     * @see SupportingToken#SUPPORTING
+     * @see SupportingToken#ENDORSING
+     * @see SupportingToken#SIGNED
+     * @see SupportingToken#SIGNED_ENDORSING
+     */
+    private int type;
+
+    private AlgorithmSuite algorithmSuite;
+
+    private ArrayList tokens = new ArrayList();
+
+    private SignedEncryptedElements signedElements;
+
+    private SignedEncryptedElements encryptedElements;
+
+    private SignedEncryptedParts signedParts;
+
+    private SignedEncryptedParts encryptedParts;
+
+    public SupportingToken(int type) {
+        this.type = type;
+    }
+
+    /**
+     * @return Returns the algorithmSuite.
+     */
+    public AlgorithmSuite getAlgorithmSuite() {
+        return algorithmSuite;
+    }
+
+    /**
+     * @param algorithmSuite
+     *            The algorithmSuite to set.
+     */
+    public void setAlgorithmSuite(AlgorithmSuite algorithmSuite) {
+        this.algorithmSuite = algorithmSuite;
+    }
+
+    /**
+     * @return Returns the token.
+     */
+    public ArrayList getTokens() {
+        return tokens;
+    }
+
+    /**
+     * @param token
+     *            The token to set.
+     */
+    public void addToken(Token token) {
+        this.tokens.add(token);
+    }
+
+    /**
+     * @return Returns the type.
+     */
+    public int getTokenType() {
+        return type;
+    }
+
+    /**
+     * @param type
+     *            The type to set.
+     */
+    public void setTokenType(int type) {
+        this.type = type;
+    }
+
+    /**
+     * @return Returns the encryptedElements.
+     */
+    public SignedEncryptedElements getEncryptedElements() {
+        return encryptedElements;
+    }
+
+    /**
+     * @param encryptedElements
+     *            The encryptedElements to set.
+     */
+    public void setEncryptedElements(SignedEncryptedElements encryptedElements) {
+        this.encryptedElements = encryptedElements;
+    }
+
+    /**
+     * @return Returns the encryptedParts.
+     */
+    public SignedEncryptedParts getEncryptedParts() {
+        return encryptedParts;
+    }
+
+    /**
+     * @param encryptedParts
+     *            The encryptedParts to set.
+     */
+    public void setEncryptedParts(SignedEncryptedParts encryptedParts) {
+        this.encryptedParts = encryptedParts;
+    }
+
+    /**
+     * @return Returns the signedElements.
+     */
+    public SignedEncryptedElements getSignedElements() {
+        return signedElements;
+    }
+
+    /**
+     * @param signedElements
+     *            The signedElements to set.
+     */
+    public void setSignedElements(SignedEncryptedElements signedElements) {
+        this.signedElements = signedElements;
+    }
+
+    /**
+     * @return Returns the signedParts.
+     */
+    public SignedEncryptedParts getSignedParts() {
+        return signedParts;
+    }
+
+    /**
+     * @param signedParts
+     *            The signedParts to set.
+     */
+    public void setSignedParts(SignedEncryptedParts signedParts) {
+        this.signedParts = signedParts;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.ws.security.policy.TokenWrapper#setToken(org.apache.ws.security.policy.Token)
+     */
+    public void setToken(Token tok) {
+        this.addToken(tok);
+    }
+
+    public QName getName() {
+        switch (type) {
+        case Constants.SUPPORTING_TOKEN_SUPPORTING:
+            return Constants.SUPPORIING_TOKENS;
+        case Constants.SUPPORTING_TOKEN_SIGNED:
+            return Constants.SIGNED_SUPPORTING_TOKENS;
+        case Constants.SUPPORTING_TOKEN_ENDORSING:
+            return Constants.ENDORSING_SUPPORTING_TOKENS;
+        case Constants.SUPPORTING_TOKEN_SIGNED_ENDORSING:
+            return Constants.SIGNED_ENDORSING_SUPPORTING_TOKENS;
+        default:
+            return null;
+        }
+    }
+
+    public PolicyComponent normalize() {
+        return this;
+    }
+
+    public short getType() {
+        return org.apache.neethi.Constants.TYPE_ASSERTION;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String namespaceURI = Constants.SUPPORIING_TOKENS.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+        if (prefix == null) {
+            prefix = Constants.SUPPORIING_TOKENS.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        String localname = null;
+
+        switch (getTokenType()) {
+        case Constants.SUPPORTING_TOKEN_SUPPORTING:
+            localname = Constants.SUPPORIING_TOKENS.getLocalPart();
+            break;
+        case Constants.SUPPORTING_TOKEN_SIGNED:
+            localname = Constants.SIGNED_SUPPORTING_TOKENS.getLocalPart();
+            break;
+        case Constants.SUPPORTING_TOKEN_ENDORSING:
+            localname = Constants.ENDORSING_SUPPORTING_TOKENS.getLocalPart();
+            break;
+        case Constants.SUPPORTING_TOKEN_SIGNED_ENDORSING:
+            localname = Constants.SIGNED_ENDORSING_SUPPORTING_TOKENS
+                    .getLocalPart();
+            break;
+        default:
+            throw new RuntimeException("Invalid SupportingTokenType");
+        }
+
+        // <sp:SupportingToken>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        
+        // xmlns:sp=".."
+        writer.writeNamespace(prefix, namespaceURI);
+
+        String pPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (pPrefix == null) {
+            pPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(pPrefix, Constants.POLICY.getNamespaceURI());
+        }
+        // <wsp:Policy>
+        writer.writeStartElement(pPrefix, Constants.POLICY.getLocalPart(),
+                Constants.POLICY.getNamespaceURI());
+
+        Token token;
+        for (Iterator iterator = getTokens().iterator(); iterator.hasNext();) {
+            // [Token Assertion] +
+            token = (Token) iterator.next();
+            token.serialize(writer);
+        }
+
+        
+        if (signedParts != null) {
+            signedElements.serialize(writer);
+            
+        } else if (signedElements != null) {
+            signedElements.serialize(writer);
+            
+        } else if (encryptedParts != null) {
+            encryptedParts.serialize(writer);
+            
+        } else if (encryptedElements != null) {
+            encryptedElements.serialize(writer);
+        }
+        // </wsp:Policy>
+        writer.writeEndElement();
+
+        writer.writeEndElement();
+        // </sp:SupportingToken>
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SymmetricAsymmetricBindingBase.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SymmetricAsymmetricBindingBase.java
new file mode 100644
index 0000000..7b5fba5
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SymmetricAsymmetricBindingBase.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import org.apache.ws.secpolicy.Constants;
+
+public abstract class SymmetricAsymmetricBindingBase extends Binding {
+
+    private String protectionOrder = Constants.SIGN_BEFORE_ENCRYPTING;
+    
+    private boolean signatureProtection;
+    
+    private boolean tokenProtection;
+    
+    private boolean entireHeadersAndBodySignatures;
+
+    /**
+     * @return Returns the entireHeaderAndBodySignatures.
+     */
+    public boolean isEntireHeadersAndBodySignatures() {
+        return entireHeadersAndBodySignatures;
+    }
+
+    /**
+     * @param entireHeaderAndBodySignatures The entireHeaderAndBodySignatures to set.
+     */
+    public void setEntireHeadersAndBodySignatures(
+            boolean entireHeaderAndBodySignatures) {
+        this.entireHeadersAndBodySignatures = entireHeaderAndBodySignatures;
+    }
+
+    /**
+     * @return Returns the protectionOrder.
+     */
+    public String getProtectionOrder() {
+        return protectionOrder;
+    }
+
+    /**
+     * @param protectionOrder The protectionOrder to set.
+     */
+    public void setProtectionOrder(String protectionOrder) {
+        if(Constants.ENCRYPT_BEFORE_SIGNING.equals(protectionOrder) ||
+           Constants.SIGN_BEFORE_ENCRYPTING.equals(protectionOrder)) {
+            this.protectionOrder = protectionOrder;
+        } else {
+//            throw new WSSPolicyException("Incorrect protection order value : "
+//                    + protectionOrder);
+        }
+    }
+
+    /**
+     * @return Returns the signatureProtection.
+     */
+    public boolean isSignatureProtection() {
+        return signatureProtection;
+    }
+
+    /**
+     * @param signatureProtection The signatureProtection to set.
+     */
+    public void setSignatureProtection(boolean signatureProtection) {
+        this.signatureProtection = signatureProtection;
+    }
+
+    /**
+     * @return Returns the tokenProtection.
+     */
+    public boolean isTokenProtection() {
+        return tokenProtection;
+    }
+
+    /**
+     * @param tokenProtection The tokenProtection to set.
+     */
+    public void setTokenProtection(boolean tokenProtection) {
+        this.tokenProtection = tokenProtection;
+    }
+    
+    
+    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SymmetricBinding.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SymmetricBinding.java
new file mode 100644
index 0000000..9ed9f61
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/SymmetricBinding.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.All;
+import org.apache.neethi.ExactlyOne;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class SymmetricBinding extends SymmetricAsymmetricBindingBase {
+
+    private EncryptionToken encryptionToken;
+    
+    private SignatureToken signatureToken;
+    
+    private ProtectionToken protectionToken;
+    
+    /**
+     * @return Returns the encryptionToken.
+     */
+    public EncryptionToken getEncryptionToken() {
+        return encryptionToken;
+    }
+
+    /**
+     * @param encryptionToken The encryptionToken to set.
+     */
+    public void setEncryptionToken(EncryptionToken encryptionToken)  {
+        if(this.protectionToken != null) {
+//            throw new WSSPolicyException("Cannot use an EncryptionToken in a " +
+//                    "SymmetricBinding when there is a ProtectionToken");
+        }
+        this.encryptionToken = encryptionToken;
+    }
+
+    /**
+     * @return Returns the protectionToken.
+     */
+    public ProtectionToken getProtectionToken() {
+        return protectionToken;
+    }
+
+    /**
+     * @param protectionToken The protectionToken to set.
+     */
+    public void setProtectionToken(ProtectionToken protectionToken)  {
+        if(this.encryptionToken != null || this.signatureToken != null) {
+//            throw new WSSPolicyException("Cannot use a ProtectionToken in a " +
+//            "SymmetricBinding when there is a SignatureToken or an" +
+//            "EncryptionToken");
+        }
+        this.protectionToken = protectionToken;
+    }
+
+    /**
+     * @return Returns the signatureToken.
+     */
+    public SignatureToken getSignatureToken() {
+        return signatureToken;
+    }
+
+    /**
+     * @param signatureToken The signatureToken to set.
+     */
+    public void setSignatureToken(SignatureToken signatureToken) {
+        if(this.protectionToken != null) {
+//            throw new WSSPolicyException("Cannot use a SignatureToken in a " +
+//                    "SymmetricBinding when there is a ProtectionToken");
+        }
+        this.signatureToken = signatureToken;
+    }
+    
+    public QName getName() {
+        return Constants.SYMMETRIC_BINDING;
+    }
+
+    public PolicyComponent normalize() {
+        if (isNormalized()) {
+            return this;
+        }
+        
+        AlgorithmSuite algorithmSuite = getAlgorithmSuite();
+        List configurations = algorithmSuite.getConfigurations();
+        
+        if (configurations == null && configurations.size() == 1) {
+            setNormalized(true);
+            return this;
+        }
+        
+        Policy policy = new Policy();
+        ExactlyOne exactlyOne = new ExactlyOne();
+        
+        All wrapper;
+        SymmetricBinding symmetricBinding;
+        
+        for (Iterator iterator = configurations.iterator(); iterator.hasNext();) {
+            wrapper = new All();
+            symmetricBinding = new SymmetricBinding();
+            
+            algorithmSuite = (AlgorithmSuite) iterator.next();
+            symmetricBinding.setAlgorithmSuite(algorithmSuite);
+            
+            symmetricBinding.setEncryptionToken(getEncryptionToken());
+            symmetricBinding.setEntireHeadersAndBodySignatures(isEntireHeadersAndBodySignatures());
+            symmetricBinding.setIncludeTimestamp(isIncludeTimestamp());
+            symmetricBinding.setLayout(getLayout());
+            symmetricBinding.setProtectionOrder(getProtectionOrder());
+            symmetricBinding.setProtectionToken(getProtectionToken());
+            symmetricBinding.setSignatureProtection(isSignatureProtection());
+            symmetricBinding.setSignatureToken(getSignatureToken());
+            symmetricBinding.setSignedEndorsingSupportingTokens(getSignedEndorsingSupportingTokens());
+            symmetricBinding.setSignedSupportingToken(getSignedSupportingToken());
+            symmetricBinding.setTokenProtection(isTokenProtection());
+            
+            symmetricBinding.setNormalized(true);
+            wrapper.addPolicyComponent(symmetricBinding);
+            exactlyOne.addPolicyComponent(wrapper);
+        }
+        
+        policy.addPolicyComponent(exactlyOne);
+        return policy;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        
+        String localname = Constants.SYMMETRIC_BINDING.getLocalPart();
+        String namespaceURI = Constants.SYMMETRIC_BINDING.getNamespaceURI();
+        
+        String prefix;
+        String writerPrefix = writer.getPrefix(namespaceURI);
+        
+        if (writerPrefix == null) {
+            prefix = Constants.SYMMETRIC_BINDING.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        } else {
+            prefix = writerPrefix;
+        }
+
+        // <sp:SymmetricBinding>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        
+        if (writerPrefix == null) {
+            // xmlns:sp=".."
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+        
+        
+        String policyLocalName = Constants.POLICY.getLocalPart();
+        String policyNamespaceURI = Constants.POLICY.getNamespaceURI();
+        
+        String wspPrefix;
+        
+        String wspWriterPrefix = writer.getPrefix(policyNamespaceURI);
+        if (wspWriterPrefix == null) {
+            wspPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(wspPrefix, policyNamespaceURI);
+            
+        } else {
+           wspPrefix = wspWriterPrefix;
+        }
+        // <wsp:Policy>
+        writer.writeStartElement(wspPrefix, policyLocalName, policyNamespaceURI);
+        
+        if ( protectionToken != null) {
+            protectionToken.serialize(writer);
+            
+        } else if (encryptionToken != null &&  signatureToken != null) {
+            encryptionToken.serialize(writer);
+            signatureToken.serialize(writer);
+            
+        } else {
+            throw new RuntimeException("Either (EncryptionToken and SignatureToken) or ProtectionToken must be set");
+        }
+        
+        AlgorithmSuite algorithmSuite = getAlgorithmSuite();
+        
+        if (algorithmSuite == null) {
+            throw new RuntimeException("AlgorithmSuite must be set");
+        }
+        // <sp:AlgorithmSuite />
+        algorithmSuite.serialize(writer);
+        
+        Layout layout = getLayout();
+        if (layout != null) {
+            // <sp:Layout />
+            layout.serialize(writer);
+        }
+        
+        if (isIncludeTimestamp()) {
+            // <sp:IncludeTimestamp />
+            writer.writeStartElement(prefix, Constants.INCLUDE_TIMESTAMP.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (Constants.ENCRYPT_BEFORE_SIGNING.equals(getProtectionOrder())) {
+            // <sp:EncryptBeforeSigning />
+            writer.writeStartElement(prefix, Constants.ENCRYPT_BEFORE_SIGNING, namespaceURI);
+            writer.writeEndElement();
+            
+        } else if (Constants.SIGN_BEFORE_ENCRYPTING.equals(getProtectionOrder())) {
+            // <sp:SignBeforeEncrypt />
+            writer.writeStartElement(prefix, Constants.SIGN_BEFORE_ENCRYPTING, namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isSignatureProtection()) {
+            // <sp:EncryptSignature />
+            writer.writeStartElement(prefix, Constants.ENCRYPT_SIGNATURE.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isEntireHeadersAndBodySignatures()) {
+            // <sp:OnlySignEntireHeadersAndBody />
+            writer.writeStartElement(prefix, Constants.ONLY_SIGN_ENTIRE_HEADERS_AND_BODY, namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:SymmetricBinding>
+        writer.writeEndElement();
+        
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Token.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Token.java
new file mode 100644
index 0000000..1e3d993
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Token.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import org.apache.ws.secpolicy.Constants;
+
+public abstract class Token extends AbstractSecurityAssertion {
+
+    /**
+     * Inclusiong property of a TokenAssertion
+     */
+    private String inclusion = Constants.INCLUDE_ALWAYS;
+    
+    /**
+     * Whether to derive keys or not
+     */
+    private boolean derivedKeys;
+    
+    /**
+     * @return Returns the inclusion.
+     */
+    public String getInclusion() {
+        return inclusion;
+    }
+
+    /**
+     * @param inclusion The inclusion to set.
+     */
+    public void setInclusion(String inclusion)  {
+        if(Constants.INCLUDE_ALWAYS.equals(inclusion) || 
+           Constants.INCLUDE_ALWAYS_TO_RECIPIENT.equals(inclusion) ||
+           Constants.INCLUDE_NEVER.equals(inclusion) ||
+           Constants.INCLUDE_ONCE.equals(inclusion)) {
+            this.inclusion = inclusion;
+        } else {
+//            throw new WSSPolicyException("Incorrect inclusion value: " + inclusion);
+        }
+    }
+    
+    /**
+     * @return Returns the derivedKeys.
+     */
+    public boolean isDerivedKeys() {
+        return derivedKeys;
+    }
+
+    /**
+     * @param derivedKeys The derivedKeys to set.
+     */
+    public void setDerivedKeys(boolean derivedKeys) {
+        this.derivedKeys = derivedKeys;
+    }    
+    
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TokenWrapper.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TokenWrapper.java
new file mode 100644
index 0000000..1da62f7
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TokenWrapper.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+public interface TokenWrapper {
+
+    public void setToken(Token tok);
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TransportBinding.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TransportBinding.java
new file mode 100644
index 0000000..ffba0b3
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TransportBinding.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.All;
+import org.apache.neethi.ExactlyOne;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class TransportBinding extends Binding {
+
+    private TransportToken transportToken;
+
+    private List transportBindings;
+
+    /**
+     * @return Returns the transportToken.
+     */
+    public TransportToken getTransportToken() {
+        return transportToken;
+    }
+
+    /**
+     * @param transportToken
+     *            The transportToken to set.
+     */
+    public void setTransportToken(TransportToken transportToken) {
+        this.transportToken = transportToken;
+    }
+
+    public List getConfigurations() {
+        return transportBindings;
+    }
+
+    public TransportBinding getDefaultConfiguration() {
+        if (transportBindings != null) {
+            return (TransportBinding) transportBindings.get(0);
+        }
+        return null;
+    }
+
+    public void addConfiguration(TransportBinding transportBinding) {
+        if (transportBindings == null) {
+            transportBindings = new ArrayList();
+        }
+        transportBindings.add(transportBinding);
+    }
+
+    public QName getName() {
+        return Constants.TRANSPORT_BINDING;
+    }
+
+    public PolicyComponent normalize() {
+        if (isNormalized()) {
+            return this;
+        }
+
+        AlgorithmSuite algorithmSuite = getAlgorithmSuite();
+        List configurations = algorithmSuite.getConfigurations();
+
+        if (configurations != null && configurations.size() == 1) {
+            setNormalized(true);
+            return this;
+        }
+
+        Policy policy = new Policy();
+        ExactlyOne exactlyOne = new ExactlyOne();
+
+        All wrapper;
+        TransportBinding transportBinding;
+
+        for (Iterator iterator = configurations.iterator(); iterator.hasNext();) {
+            wrapper = new All();
+            transportBinding = new TransportBinding();
+
+            algorithmSuite = (AlgorithmSuite) iterator.next();
+            transportBinding.setAlgorithmSuite(algorithmSuite);
+            transportBinding.setIncludeTimestamp(isIncludeTimestamp());
+            transportBinding.setLayout(getLayout());
+            transportBinding
+                    .setSignedEndorsingSupportingTokens(getSignedEndorsingSupportingTokens());
+            transportBinding
+                    .setSignedSupportingToken(getSignedSupportingToken());
+            transportBinding.setTransportToken(getTransportToken());
+
+            wrapper.addPolicyComponent(transportBinding);
+            exactlyOne.addPolicyComponent(wrapper);
+        }
+
+        policy.addPolicyComponent(exactlyOne);
+        return policy;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localName = Constants.TRANSPORT_BINDING.getLocalPart();
+        String namespaceURI = Constants.TRANSPORT_BINDING.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+
+        if (prefix == null) {
+            prefix = Constants.TRANSPORT_BINDING.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        // <sp:TransportBinding>
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        writer.writeNamespace(prefix, namespaceURI);
+        
+        String pPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (pPrefix == null) {
+            pPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(pPrefix, Constants.POLICY.getNamespaceURI());
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(pPrefix, Constants.POLICY.getLocalPart(), Constants.POLICY.getNamespaceURI());
+        
+
+        if (transportToken == null) {
+            // TODO more meaningful exception
+            throw new RuntimeException("no TransportToken found");
+        }
+
+        // <sp:TransportToken>
+        transportToken.serialize(writer);
+        // </sp:TransportToken>
+
+        AlgorithmSuite algorithmSuite = getAlgorithmSuite();
+        if (algorithmSuite == null) {
+            throw new RuntimeException("no AlgorithmSuite found");
+        }
+
+        // <sp:AlgorithmSuite>
+        algorithmSuite.serialize(writer);
+        // </sp:AlgorithmSuite>
+
+        Layout layout = getLayout();
+        if (layout != null) {
+            // <sp:Layout>
+            layout.serialize(writer);
+            // </sp:Layout>
+        }
+
+        if (isIncludeTimestamp()) {
+            // <sp:IncludeTimestamp>
+            writer.writeStartElement(Constants.INCLUDE_TIMESTAMP.getPrefix(),
+                    Constants.INCLUDE_TIMESTAMP.getLocalPart(),
+                    Constants.INCLUDE_TIMESTAMP.getNamespaceURI());
+            writer.writeEndElement();
+            // </sp:IncludeTimestamp>
+        }
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+
+        // </sp:TransportBinding>
+        writer.writeEndElement();
+
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TransportToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TransportToken.java
new file mode 100644
index 0000000..65fce43
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/TransportToken.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+
+public class TransportToken extends AbstractSecurityAssertion implements TokenWrapper {
+
+    private Token transportToken;
+    
+    /**
+     * @return Returns the transportToken.
+     */
+    public Token getTransportToken() {
+        return transportToken;
+    }
+    
+    public QName getName() {
+        return new QName(Constants.SP_NS, "TransportToken");
+    }
+
+    public boolean isOptional() {
+        throw new UnsupportedOperationException();
+    }
+
+    public PolicyComponent normalize() {
+        throw new UnsupportedOperationException();
+    }
+
+    public short getType() {
+        return org.apache.neethi.Constants.TYPE_ASSERTION;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        
+        String localName = Constants.TRANSPORT_TOKEN.getLocalPart();
+        String namespaceURI = Constants.TRANSPORT_TOKEN.getNamespaceURI();
+        
+        String prefix = writer.getPrefix(namespaceURI);
+        if (prefix == null) {
+            writer.setPrefix(prefix, namespaceURI);
+        }
+        
+        // <sp:TransportToken>
+        
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        
+        String wspPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (wspPrefix == null) {
+            writer.setPrefix(wspPrefix, Constants.POLICY.getNamespaceURI());
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(Constants.POLICY.getPrefix(), Constants.POLICY.getLocalPart(), Constants.POLICY.getNamespaceURI());
+        
+        // serialization of the token ..
+        transportToken.serialize(writer);
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        
+        writer.writeEndElement();
+        // </sp:TransportToken>
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.ws.secpolicy.model.TokenWrapper#setToken(org.apache.ws.secpolicy.model.Token)
+     */
+    public void setToken(Token tok) {
+        this.transportToken = tok;
+    }
+    
+    
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Trust10.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Trust10.java
new file mode 100644
index 0000000..ce6d9e2
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Trust10.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+/**
+ * Model bean to capture Trust10 assertion info
+ */
+public class Trust10 extends AbstractSecurityAssertion {
+
+    private boolean mustSupportClientChallenge;
+    private boolean mustSupportServerChallenge;
+    private boolean requireClientEntropy;
+    private boolean requireServerEntropy;
+    private boolean mustSupportIssuedTokens;
+    
+    /**
+     * @return Returns the mustSupportClientChallenge.
+     */
+    public boolean isMustSupportClientChallenge() {
+        return mustSupportClientChallenge;
+    }
+
+    /**
+     * @param mustSupportClientChallenge The mustSupportClientChallenge to set.
+     */
+    public void setMustSupportClientChallenge(boolean mustSupportClientChallenge) {
+        this.mustSupportClientChallenge = mustSupportClientChallenge;
+    }
+
+    /**
+     * @return Returns the mustSupportIssuedTokens.
+     */
+    public boolean isMustSupportIssuedTokens() {
+        return mustSupportIssuedTokens;
+    }
+
+    /**
+     * @param mustSupportIssuedTokens The mustSupportIssuedTokens to set.
+     */
+    public void setMustSupportIssuedTokens(boolean mustSupportIssuedTokens) {
+        this.mustSupportIssuedTokens = mustSupportIssuedTokens;
+    }
+
+    /**
+     * @return Returns the mustSupportServerChallenge.
+     */
+    public boolean isMustSupportServerChallenge() {
+        return mustSupportServerChallenge;
+    }
+
+    /**
+     * @param mustSupportServerChallenge The mustSupportServerChallenge to set.
+     */
+    public void setMustSupportServerChallenge(boolean mustSupportServerChallenge) {
+        this.mustSupportServerChallenge = mustSupportServerChallenge;
+    }
+
+    /**
+     * @return Returns the requireClientEntropy.
+     */
+    public boolean isRequireClientEntropy() {
+        return requireClientEntropy;
+    }
+
+    /**
+     * @param requireClientEntropy The requireClientEntropy to set.
+     */
+    public void setRequireClientEntropy(boolean requireClientEntropy) {
+        this.requireClientEntropy = requireClientEntropy;
+    }
+
+    /**
+     * @return Returns the requireServerEntropy.
+     */
+    public boolean isRequireServerEntropy() {
+        return requireServerEntropy;
+    }
+
+    /**
+     * @param requireServerEntropy The requireServerEntropy to set.
+     */
+    public void setRequireServerEntropy(boolean requireServerEntropy) {
+        this.requireServerEntropy = requireServerEntropy;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.neethi.Assertion#getName()
+     */
+    public QName getName() {
+        return Constants.TRUST_10;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.neethi.Assertion#isOptional()
+     */
+    public boolean isOptional() {
+        // TODO TODO Sanka
+        throw new UnsupportedOperationException("TODO Sanka");
+    }
+
+    public PolicyComponent normalize() {
+        return this;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        
+        String localname = Constants.TRUST_10.getLocalPart();
+        String namespaceURI = Constants.TRUST_10.getNamespaceURI();
+        
+        String prefix = writer.getPrefix(namespaceURI);
+        if (prefix == null) {
+            prefix = Constants.TRUST_10.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+        
+        // <sp:Trust10>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        // xmlns:sp=".."
+        writer.writeNamespace(prefix, namespaceURI);
+        
+        String wspPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (wspPrefix == null) {
+            writer.setPrefix(wspPrefix, Constants.POLICY.getNamespaceURI());
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(Constants.POLICY.getPrefix(), Constants.POLICY.getLocalPart(), Constants.POLICY.getNamespaceURI());
+        
+        if (isMustSupportClientChallenge()) {
+            // <sp:MustSupportClientChallenge />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_CLIENT_CHALLENGE.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportServerChallenge()) {
+            // <sp:MustSupportServerChallenge />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_SERVER_CHALLENGE.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isRequireClientEntropy()) {
+            // <sp:RequireClientEntropy />
+            writer.writeStartElement(prefix, Constants.REQUIRE_CLIENT_ENTROPY.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        
+        if (isRequireServerEntropy()) {
+            // <sp:RequireServerEntropy />
+            writer.writeStartElement(prefix, Constants.REQUIRE_SERVER_ENTROPY.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportIssuedTokens()) {
+            // <sp:MustSupportIssuedTokens />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_ISSUED_TOKENS.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        
+        // </sp:Trust10>
+        writer.writeEndElement();
+        
+        
+        
+        
+    }
+
+    public short getType() {
+        return org.apache.neethi.Constants.TYPE_ASSERTION;
+    }
+
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/UsernameToken.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/UsernameToken.java
new file mode 100644
index 0000000..56318cd
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/UsernameToken.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class UsernameToken extends Token {
+
+    private boolean useUTProfile10 = false;
+
+    private boolean useUTProfile11 = false;
+
+    /**
+     * @return Returns the useUTProfile11.
+     */
+    public boolean isUseUTProfile11() {
+        return useUTProfile11;
+    }
+
+    /**
+     * @param useUTProfile11
+     *            The useUTProfile11 to set.
+     */
+    public void setUseUTProfile11(boolean useUTProfile11) {
+        this.useUTProfile11 = useUTProfile11;
+    }
+
+    public boolean isUseUTProfile10() {
+        return useUTProfile10;
+    }
+
+    public void setUseUTProfile10(boolean useUTProfile10) {
+        this.useUTProfile10 = useUTProfile10;
+    }
+
+    public QName getName() {
+        return Constants.USERNAME_TOKEN;
+    }
+
+    public PolicyComponent normalize() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localname = Constants.USERNAME_TOKEN.getLocalPart();
+        String namespaceURI = Constants.USERNAME_TOKEN.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+        if (prefix == null) {
+            prefix = Constants.USERNAME_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        // <sp:UsernameToken
+        writer.writeStartElement(prefix, localname, namespaceURI);
+
+        writer.writeNamespace(prefix, namespaceURI);
+
+        String inclusion = getInclusion();
+        if (inclusion != null) {
+            writer.writeAttribute(prefix, namespaceURI, Constants.INCLUDE_TOKEN
+                    .getLocalPart(), inclusion);
+        }
+
+        if (isUseUTProfile10() || isUseUTProfile11()) {
+            String pPrefix = writer.getPrefix(Constants.POLICY
+                    .getNamespaceURI());
+            if (pPrefix == null) {
+                writer.setPrefix(Constants.POLICY.getPrefix(), Constants.POLICY
+                        .getNamespaceURI());
+            }
+
+            // <wsp:Policy>
+            writer.writeStartElement(prefix, Constants.POLICY.getLocalPart(),
+                    Constants.POLICY.getNamespaceURI());
+
+            // CHECKME
+            if (isUseUTProfile10()) {
+                // <sp:WssUsernameToken10 />
+                writer.writeStartElement(prefix, Constants.WSS_USERNAME_TOKEN10
+                        .getLocalPart(), namespaceURI);
+            } else {
+                // <sp:WssUsernameToken11 />
+                writer.writeStartElement(prefix, Constants.WSS_USERNAME_TOKEN11
+                        .getLocalPart(), namespaceURI);
+            }
+            writer.writeEndElement();
+
+            // </wsp:Policy>
+            writer.writeEndElement();
+
+        }
+
+        writer.writeEndElement();
+        // </sp:UsernameToken>
+
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Wss10.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Wss10.java
new file mode 100644
index 0000000..43fbcc9
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Wss10.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class Wss10 extends AbstractSecurityAssertion {
+    
+    private boolean mustSupportRefKeyIdentifier;
+    private boolean MustSupportRefIssuerSerial;
+    private boolean MustSupportRefExternalURI;
+    private boolean MustSupportRefEmbeddedToken;
+    
+    /**
+     * @return Returns the mustSupportRefEmbeddedToken.
+     */
+    public boolean isMustSupportRefEmbeddedToken() {
+        return MustSupportRefEmbeddedToken;
+    }
+    /**
+     * @param mustSupportRefEmbeddedToken The mustSupportRefEmbeddedToken to set.
+     */
+    public void setMustSupportRefEmbeddedToken(boolean mustSupportRefEmbeddedToken) {
+        MustSupportRefEmbeddedToken = mustSupportRefEmbeddedToken;
+    }
+    /**
+     * @return Returns the mustSupportRefExternalURI.
+     */
+    public boolean isMustSupportRefExternalURI() {
+        return MustSupportRefExternalURI;
+    }
+    /**
+     * @param mustSupportRefExternalURI The mustSupportRefExternalURI to set.
+     */
+    public void setMustSupportRefExternalURI(boolean mustSupportRefExternalURI) {
+        MustSupportRefExternalURI = mustSupportRefExternalURI;
+    }
+    /**
+     * @return Returns the mustSupportRefIssuerSerial.
+     */
+    public boolean isMustSupportRefIssuerSerial() {
+        return MustSupportRefIssuerSerial;
+    }
+    /**
+     * @param mustSupportRefIssuerSerial The mustSupportRefIssuerSerial to set.
+     */
+    public void setMustSupportRefIssuerSerial(boolean mustSupportRefIssuerSerial) {
+        MustSupportRefIssuerSerial = mustSupportRefIssuerSerial;
+    }
+    /**
+     * @return Returns the mustSupportRefKeyIdentifier.
+     */
+    public boolean isMustSupportRefKeyIdentifier() {
+        return mustSupportRefKeyIdentifier;
+    }
+    /**
+     * @param mustSupportRefKeyIdentifier The mustSupportRefKeyIdentifier to set.
+     */
+    public void setMustSupportRefKeyIdentifier(boolean mustSupportRefKeyIdentifier) {
+        this.mustSupportRefKeyIdentifier = mustSupportRefKeyIdentifier;
+    }
+    
+    public QName getName() {
+        return Constants.WSS10;
+    }
+    
+    public PolicyComponent normalize() {
+        return this;
+    }
+    
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localname = Constants.WSS10.getLocalPart();
+        String namespaceURI = Constants.WSS10.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+        if (prefix == null) {
+            prefix = Constants.WSS10.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        // <sp:Wss10>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        
+        // xmlns:sp=".."
+        writer.writeNamespace(prefix, namespaceURI);
+        
+        String pPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (pPrefix == null) {
+            writer.setPrefix(Constants.POLICY.getPrefix(), Constants.POLICY.getNamespaceURI());
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(prefix, Constants.POLICY.getLocalPart(), Constants.POLICY.getNamespaceURI());
+        
+        if (isMustSupportRefKeyIdentifier()) {
+            // <sp:MustSupportRefKeyIdentifier />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_KEY_IDENTIFIER.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportRefIssuerSerial()) {
+            // <sp:MustSupportRefIssuerSerial />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_ISSUER_SERIAL.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportRefExternalURI()) {
+            // <sp:MustSupportRefExternalURI />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_EXTERNAL_URI.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportRefEmbeddedToken()) {
+            // <sp:MustSupportRefEmbeddedToken />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_EMBEDDED_TOKEN.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+
+            
+        }
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:Wss10>
+        writer.writeEndElement();
+
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Wss11.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Wss11.java
new file mode 100644
index 0000000..e64042d
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/Wss11.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.ws.secpolicy.Constants;
+
+public class Wss11 extends Wss10 {
+    
+    private boolean MustSupportRefThumbprint;
+    private boolean MustSupportRefEncryptedKey;
+    private boolean RequireSignatureConfirmation;
+    
+    /**
+     * @return Returns the mustSupportRefEncryptedKey.
+     */
+    public boolean isMustSupportRefEncryptedKey() {
+        return MustSupportRefEncryptedKey;
+    }
+    /**
+     * @param mustSupportRefEncryptedKey The mustSupportRefEncryptedKey to set.
+     */
+    public void setMustSupportRefEncryptedKey(boolean mustSupportRefEncryptedKey) {
+        MustSupportRefEncryptedKey = mustSupportRefEncryptedKey;
+    }
+    /**
+     * @return Returns the mustSupportRefThumbprint.
+     */
+    public boolean isMustSupportRefThumbprint() {
+        return MustSupportRefThumbprint;
+    }
+    /**
+     * @param mustSupportRefThumbprint The mustSupportRefThumbprint to set.
+     */
+    public void setMustSupportRefThumbprint(boolean mustSupportRefThumbprint) {
+        MustSupportRefThumbprint = mustSupportRefThumbprint;
+    }
+    /**
+     * @return Returns the requireSignatureConfirmation.
+     */
+    public boolean isRequireSignatureConfirmation() {
+        return RequireSignatureConfirmation;
+    }
+    /**
+     * @param requireSignatureConfirmation The requireSignatureConfirmation to set.
+     */
+    public void setRequireSignatureConfirmation(boolean requireSignatureConfirmation) {
+        RequireSignatureConfirmation = requireSignatureConfirmation;
+    }
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localname = Constants.WSS11.getLocalPart();
+        String namespaceURI = Constants.WSS11.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+        if (prefix == null) {
+            prefix = Constants.WSS11.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+
+        // <sp:Wss11>
+        writer.writeStartElement(prefix, localname, namespaceURI);
+        
+        // xmlns:sp=".."
+        writer.writeNamespace(prefix, namespaceURI);
+        
+        String pPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (pPrefix == null) {
+            writer.setPrefix(Constants.POLICY.getPrefix(), Constants.POLICY.getNamespaceURI());
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(prefix, Constants.POLICY.getLocalPart(), Constants.POLICY.getNamespaceURI());
+        
+        // <sp:MustSupportRefKeyIndentifier />
+        if (isMustSupportRefKeyIdentifier()) {
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_KEY_IDENTIFIER.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportRefIssuerSerial()) {
+            // <sp:MustSupportRefIssuerSerial />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_ISSUER_SERIAL.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportRefExternalURI()) {
+            // <sp:MustSupportRefExternalURI />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_EXTERNAL_URI.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportRefEmbeddedToken()) {
+            // <sp:MustSupportRefEmbeddedToken />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_EMBEDDED_TOKEN.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportRefThumbprint()) {
+            // <sp:MustSupportRefThumbprint />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_THUMBPRINT.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isMustSupportRefEncryptedKey()) {
+            // <sp:MustSupportRefEncryptedKey />
+            writer.writeStartElement(prefix, Constants.MUST_SUPPORT_REF_ENCRYPTED_KEY.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isRequireSignatureConfirmation()) {
+            // <sp:RequireSignatureConfirmation />
+            writer.writeStartElement(prefix, Constants.REQUIRE_SIGNATURE_CONFIRMATION.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:Wss11>
+        writer.writeEndElement();
+    }
+}
diff --git a/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/X509Token.java b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/X509Token.java
new file mode 100644
index 0000000..753bfb1
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/src/org/apache/ws/secpolicy/model/X509Token.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.Constants;
+
+public class X509Token extends Token {
+
+    private boolean requireKeyIdentifierReference;
+    
+    private boolean requireIssuerSerialReference;
+    
+    private boolean requireEmbeddedTokenReference;
+    
+    private boolean requireThumbprintReference;
+    
+    private String tokenVersionAndType;
+    
+    /**
+     * @return Returns the requireEmbeddedTokenReference.
+     */
+    public boolean isRequireEmbeddedTokenReference() {
+        return requireEmbeddedTokenReference;
+    }
+
+    /**
+     * @param requireEmbeddedTokenReference The requireEmbeddedTokenReference to set.
+     */
+    public void setRequireEmbeddedTokenReference(
+            boolean requireEmbeddedTokenReference) {
+        this.requireEmbeddedTokenReference = requireEmbeddedTokenReference;
+    }
+
+    /**
+     * @return Returns the requireIssuerSerialReference.
+     */
+    public boolean isRequireIssuerSerialReference() {
+        return requireIssuerSerialReference;
+    }
+
+    /**
+     * @param requireIssuerSerialReference The requireIssuerSerialReference to set.
+     */
+    public void setRequireIssuerSerialReference(boolean requireIssuerSerialReference) {
+        this.requireIssuerSerialReference = requireIssuerSerialReference;
+    }
+
+    /**
+     * @return Returns the requireKeyIdentifierReference.
+     */
+    public boolean isRequireKeyIdentifierReference() {
+        return requireKeyIdentifierReference;
+    }
+
+    /**
+     * @param requireKeyIdentifierReference The requireKeyIdentifierReference to set.
+     */
+    public void setRequireKeyIdentifierReference(
+            boolean requireKeyIdentifierReference) {
+        this.requireKeyIdentifierReference = requireKeyIdentifierReference;
+    }
+
+    /**
+     * @return Returns the requireThumbprintReference.
+     */
+    public boolean isRequireThumbprintReference() {
+        return requireThumbprintReference;
+    }
+
+    /**
+     * @param requireThumbprintReference The requireThumbprintReference to set.
+     */
+    public void setRequireThumbprintReference(boolean requireThumbprintReference) {
+        this.requireThumbprintReference = requireThumbprintReference;
+    }
+
+    /**
+     * @return Returns the tokenVersionAndType.
+     */
+    public String getTokenVersionAndType() {
+        return tokenVersionAndType;
+    }
+
+    /**
+     * @param tokenVersionAndType The tokenVersionAndType to set.
+     */
+    public void setTokenVersionAndType(String tokenVersionAndType) {
+        this.tokenVersionAndType = tokenVersionAndType;
+    }
+
+    public QName getName() {
+        return Constants.X509_TOKEN;
+    }
+
+    public PolicyComponent normalize() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localName = Constants.X509_TOKEN.getLocalPart();
+        String namespaceURI = Constants.X509_TOKEN.getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+
+        if (prefix == null) {
+            prefix = Constants.X509_TOKEN.getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+            
+        // <sp:X509Token> 
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        
+        String inclusion = getInclusion();
+        
+        if (inclusion != null) {
+            writer.writeAttribute(prefix, namespaceURI, Constants.INCLUDE_TOKEN
+                    .getLocalPart(), inclusion);
+        }
+        
+        
+        String pPrefix = writer.getPrefix(Constants.POLICY.getNamespaceURI());
+        if (pPrefix == null) {
+            pPrefix = Constants.POLICY.getPrefix();
+            writer.setPrefix(pPrefix, Constants.POLICY.getNamespaceURI());
+        }
+        
+        // <wsp:Policy>
+        writer.writeStartElement(pPrefix, Constants.POLICY.getLocalPart(), Constants.POLICY.getNamespaceURI());
+        
+        if (isRequireKeyIdentifierReference()) {
+            // <sp:RequireKeyIdentifierReference />
+            writer.writeStartElement(prefix, Constants.REQUIRE_KEY_IDENTIFIRE_REFERENCE.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isRequireIssuerSerialReference()) {
+            // <sp:RequireIssuerSerialReference />
+            writer.writeStartElement(prefix, Constants.REQUIRE_ISSUER_SERIAL_REFERENCE.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isRequireEmbeddedTokenReference()) {
+            // <sp:RequireEmbeddedTokenReference />
+            writer.writeStartElement(prefix, Constants.REQUIRE_EMBEDDED_TOKEN_REFERENCE.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (isRequireThumbprintReference()) {
+            // <sp:RequireThumbprintReference />
+            writer.writeStartElement(prefix, Constants.REQUIRE_THUMBPRINT_REFERENCE.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if (tokenVersionAndType != null) {
+            // <sp:WssX509V1Token10 /> | ..
+            writer.writeStartElement(prefix, tokenVersionAndType, namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        if(isDerivedKeys()) {
+            // <sp:RequireDerivedKeys/>
+            writer.writeStartElement(prefix, Constants.REQUIRE_DERIVED_KEYS.getLocalPart(), namespaceURI);
+            writer.writeEndElement();
+        }
+        
+        // </wsp:Policy>
+        writer.writeEndElement();
+        
+        // </sp:X509Token>
+        writer.writeEndElement();
+    }
+       
+}
diff --git a/rampart_1_1/modules/secpolicy/test-resources/policy-asymm-binding.xml b/rampart_1_1/modules/secpolicy/test-resources/policy-asymm-binding.xml
new file mode 100644
index 0000000..e0ae9ff
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/test-resources/policy-asymm-binding.xml
@@ -0,0 +1,46 @@
+<wsp:Policy wsu:Id="1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/secpolicy/test-resources/policy-symm-binding.xml b/rampart_1_1/modules/secpolicy/test-resources/policy-symm-binding.xml
new file mode 100644
index 0000000..0a54024
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/test-resources/policy-symm-binding.xml
@@ -0,0 +1,53 @@
+<wsp:Policy wsu:Id="3" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:RequireDerivedKeys/>
+									<sp:RequireThumbprintReference/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptSignature/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:EndorsingSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+						<wsp:Policy>
+							<sp:RequireThumbprintReference/>
+							<sp:WssX509V3Token10/>
+						</wsp:Policy>
+					</sp:X509Token>
+				</wsp:Policy>
+			</sp:EndorsingSupportingTokens>
+			<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+					<sp:RequireSignatureConfirmation/>
+				</wsp:Policy>
+			</sp:Wss11>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/secpolicy/test-resources/policy-transport-binding.xml b/rampart_1_1/modules/secpolicy/test-resources/policy-transport-binding.xml
new file mode 100644
index 0000000..d4edb5f
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/test-resources/policy-transport-binding.xml
@@ -0,0 +1,43 @@
+<wsp:Policy wsu:Id="2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:TransportToken>
+						<wsp:Policy>
+							<sp:HttpsToken RequireClientCertificate="false"/>
+						</wsp:Policy>
+					</sp:TransportToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+				</wsp:Policy>
+			</sp:TransportBinding>
+			<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+						<wsp:Policy>
+							<sp:WssUsernameToken10/>
+						</wsp:Policy>
+					</sp:UsernameToken>
+				</wsp:Policy>
+			</sp:SignedSupportingTokens>
+			<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+				</wsp:Policy>
+			</sp:Wss11>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/secpolicy/test/org/apache/ws/secpolicy/model/SecpolicyModelTest.java b/rampart_1_1/modules/secpolicy/test/org/apache/ws/secpolicy/model/SecpolicyModelTest.java
new file mode 100644
index 0000000..866e780
--- /dev/null
+++ b/rampart_1_1/modules/secpolicy/test/org/apache/ws/secpolicy/model/SecpolicyModelTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2004,2005 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.ws.secpolicy.model;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.ws.secpolicy.Constants;
+
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class SecpolicyModelTest extends TestCase {
+    
+    
+    public void testSymmBinding() {
+        try {
+            Policy p = this.getPolicy("test-resources/policy-symm-binding.xml");
+            List assertions = (List)p.getAlternatives().next();
+            
+            boolean symmBindingFound = false;
+            
+            for (Iterator iter = assertions.iterator(); iter.hasNext();) {
+                Assertion assertion = (Assertion) iter.next();
+                if(assertion instanceof SymmetricBinding) {
+                    symmBindingFound = true;
+                    SymmetricBinding binding = (SymmetricBinding)assertion;
+                    assertEquals("IncludeTimestamp assertion not processed", true, binding.isIncludeTimestamp());
+                    
+                    ProtectionToken protectionToken = binding.getProtectionToken();
+                    assertNotNull("ProtectionToken missing", protectionToken);
+                    
+                    Token token = protectionToken.getProtectionToken();
+                    if(token instanceof X509Token) {
+                        assertEquals("incorrect X509 token versin and type",
+                                Constants.WSS_X509_V3_TOKEN10,
+                                ((X509Token) token).getTokenVersionAndType());
+                    } else {
+                        fail("ProtectionToken must contain a X509Token assertion");
+                    }
+                    
+                }
+            }
+            //The Asymm binding mean is not built in the policy processing :-(
+            assertTrue("SymmetricBinding not porcessed",  symmBindingFound);
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+    
+    public void testAsymmBinding() {
+        try {
+            this.getPolicy("test-resources/policy-asymm-binding.xml");
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+    
+    public void testTransportBinding() {
+        try {
+            this.getPolicy("test-resources/policy-transport-binding.xml");
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+    
+    private Policy getPolicy(String filePath) throws Exception {
+        StAXOMBuilder builder = new StAXOMBuilder(filePath);
+        OMElement elem = builder.getDocumentElement();
+        return PolicyEngine.getPolicy(elem);
+    }
+}
diff --git a/rampart_1_1/modules/security/interop/axis2.crypto.properties b/rampart_1_1/modules/security/interop/axis2.crypto.properties
new file mode 100644
index 0000000..a563666
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/axis2.crypto.properties
@@ -0,0 +1,6 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=pkcs12
+org.apache.ws.security.crypto.merlin.keystore.password=security
+org.apache.ws.security.crypto.merlin.keystore.alias=16c73ab6-b892-458f-abf5-2f875f74882e
+org.apache.ws.security.crypto.merlin.alias.password=security
+org.apache.ws.security.crypto.merlin.file=x509.PFX.MSFT
diff --git a/rampart_1_1/modules/security/interop/axis2.saml.properties b/rampart_1_1/modules/security/interop/axis2.saml.properties
new file mode 100644
index 0000000..fd56a56
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/axis2.saml.properties
@@ -0,0 +1,12 @@
+org.apache.ws.security.saml.issuerClass=org.apache.ws.security.saml.SAMLIssuerImpl
+org.apache.ws.security.saml.issuer.cryptoProp.file=axis2.crypto.properties
+org.apache.ws.security.saml.issuer.key.name=16c73ab6-b892-458f-abf5-2f875f74882e
+org.apache.ws.security.saml.issuer.key.password=security
+org.apache.ws.security.saml.issuer=www.example.com
+org.apache.ws.security.saml.subjectNameId.name=uid=joe,ou=people,ou=saml-demo,o=example.com
+org.apache.ws.security.saml.subjectNameId.qualifier=www.example.com
+org.apache.ws.security.saml.authenticationMethod=password
+org.apache.ws.security.saml.confirmationMethod=senderVouches
+#org.apache.ws.security.saml.confirmationMethod=keyHolder
+#org.apache.ws.security.saml
+#org.apache.ws.security.saml
diff --git a/rampart_1_1/modules/security/interop/axis2.saml3.properties b/rampart_1_1/modules/security/interop/axis2.saml3.properties
new file mode 100644
index 0000000..fd56a56
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/axis2.saml3.properties
@@ -0,0 +1,12 @@
+org.apache.ws.security.saml.issuerClass=org.apache.ws.security.saml.SAMLIssuerImpl
+org.apache.ws.security.saml.issuer.cryptoProp.file=axis2.crypto.properties
+org.apache.ws.security.saml.issuer.key.name=16c73ab6-b892-458f-abf5-2f875f74882e
+org.apache.ws.security.saml.issuer.key.password=security
+org.apache.ws.security.saml.issuer=www.example.com
+org.apache.ws.security.saml.subjectNameId.name=uid=joe,ou=people,ou=saml-demo,o=example.com
+org.apache.ws.security.saml.subjectNameId.qualifier=www.example.com
+org.apache.ws.security.saml.authenticationMethod=password
+org.apache.ws.security.saml.confirmationMethod=senderVouches
+#org.apache.ws.security.saml.confirmationMethod=keyHolder
+#org.apache.ws.security.saml
+#org.apache.ws.security.saml
diff --git a/rampart_1_1/modules/security/interop/axis2.saml4.properties b/rampart_1_1/modules/security/interop/axis2.saml4.properties
new file mode 100644
index 0000000..b98235c
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/axis2.saml4.properties
@@ -0,0 +1,12 @@
+org.apache.ws.security.saml.issuerClass=org.apache.ws.security.saml.SAMLIssuerImpl
+org.apache.ws.security.saml.issuer.cryptoProp.file=axis2.crypto.properties
+org.apache.ws.security.saml.issuer.key.name=16c73ab6-b892-458f-abf5-2f875f74882e
+org.apache.ws.security.saml.issuer.key.password=security
+org.apache.ws.security.saml.issuer=www.example.com
+org.apache.ws.security.saml.subjectNameId.name=uid=joe,ou=people,ou=saml-demo,o=example.com
+org.apache.ws.security.saml.subjectNameId.qualifier=www.example.com
+org.apache.ws.security.saml.authenticationMethod=password
+#org.apache.ws.security.saml.confirmationMethod=senderVouches
+org.apache.ws.security.saml.confirmationMethod=keyHolder
+#org.apache.ws.security.saml
+#org.apache.ws.security.saml
diff --git a/rampart_1_1/modules/security/interop/interop.properties b/rampart_1_1/modules/security/interop/interop.properties
new file mode 100644
index 0000000..0d6de68
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/interop.properties
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=interop2.jks
+
diff --git a/rampart_1_1/modules/security/interop/interop2.jks b/rampart_1_1/modules/security/interop/interop2.jks
new file mode 100644
index 0000000..a7d1a3f
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/interop2.jks
Binary files differ
diff --git a/rampart_1_1/modules/security/interop/org/apache/axis2/oasis/ping/PingPortSkeleton.java b/rampart_1_1/modules/security/interop/org/apache/axis2/oasis/ping/PingPortSkeleton.java
new file mode 100644
index 0000000..f63b844
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/org/apache/axis2/oasis/ping/PingPortSkeleton.java
@@ -0,0 +1,74 @@
+/*
+* Copyright 2004,2005 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.axis2.oasis.ping;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+import org.xmlsoap.ping.PingDocument;
+import org.xmlsoap.ping.PingResponse;
+import org.xmlsoap.ping.PingResponseDocument;
+
+import java.util.Vector;
+
+/**
+ * Auto generated java skeleton for the service by the Axis code generator
+ */
+public class PingPortSkeleton{
+    /**
+     * Auto generated method signature
+     *
+     * @param param0
+     */
+    public PingResponseDocument Ping
+            (PingDocument param0) {
+        Vector results = null;
+        MessageContext msgCtx = MessageContext.getCurrentMessageContext();
+        if ((results =
+                (Vector) msgCtx.getProperty(WSHandlerConstants.RECV_RESULTS))
+                == null) {
+            System.out.println("No security results!!");
+            throw new RuntimeException("No security results!!");
+        } else {
+            System.out.println("Number of results: " + results.size());
+            for (int i = 0; i < results.size(); i++) {
+                WSHandlerResult rResult =
+                        (WSHandlerResult) results.get(i);
+                Vector wsSecEngineResults = rResult.getResults();
+    
+                for (int j = 0; j < wsSecEngineResults.size(); j++) {
+                    WSSecurityEngineResult wser =
+                            (WSSecurityEngineResult) wsSecEngineResults.get(j);
+                    if (wser.getAction() != WSConstants.ENCR && wser.getPrincipal() != null) {
+                        System.out.println(wser.getPrincipal().getName());
+                    }
+                }
+            }
+            PingResponseDocument response = PingResponseDocument.Factory.newInstance();
+            PingResponse pingRes = response.addNewPingResponse();
+            pingRes.setText("Response: " + param0.getPing().getText());
+            return response;
+        }
+    }
+
+}
+    
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/interop/org/apache/axis2/security/InteropScenarioClient.java b/rampart_1_1/modules/security/interop/org/apache/axis2/security/InteropScenarioClient.java
new file mode 100644
index 0000000..9e01a93
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/org/apache/axis2/security/InteropScenarioClient.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.oasis.ping.PingPortStub;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.xmlsoap.ping.Ping;
+import org.xmlsoap.ping.PingDocument;
+import org.xmlsoap.ping.PingResponse;
+import org.xmlsoap.ping.PingResponseDocument;
+import org.xmlsoap.ping.TicketType;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * Client for the interop service This MUST be used with the codegen'ed classes
+ */
+public class InteropScenarioClient {
+
+    String soapNsURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+
+    public InteropScenarioClient(boolean useSOAP12InStaticConfigTest) {
+        if (useSOAP12InStaticConfigTest) {
+            soapNsURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+        }
+    }
+
+    public void invokeWithStaticConfig(String clientRepo, String url)
+            throws Exception {
+        TicketType ticket = TicketType.Factory.newInstance();
+        ticket.setId("My ticket Id");
+
+        Ping ping = Ping.Factory.newInstance();
+        ping.setText("Testing axis2-wss4j module");
+        ping.setTicket(ticket);
+
+        PingDocument pingDoc = PingDocument.Factory.newInstance();
+        pingDoc.setPing(ping);
+
+        ConfigurationContext configCtx = ConfigurationContextFactory
+                        .createConfigurationContextFromFileSystem(clientRepo,
+                                clientRepo + "/conf/axis2.xml");
+        PingPortStub stub = new PingPortStub(configCtx, url);
+
+        // Enable MTOM to those scenarios where they are configured using:
+        // <optimizeParts>xpathExpression</optimizeParts>
+        stub._getServiceClient().getOptions().setProperty(
+                Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        stub._getServiceClient().getOptions().setSoapVersionURI(soapNsURI);
+        stub._getServiceClient().engageModule(
+                new javax.xml.namespace.QName("rampart"));
+
+        PingResponseDocument pingResDoc = stub.Ping(pingDoc);
+
+        PingResponse pingRes = pingResDoc.getPingResponse();
+
+        System.out.println(pingRes.getText());
+    }
+
+    public void invokeWithGivenConfig(String clientRepo, String url,
+            OutflowConfiguration outflowConfig, InflowConfiguration inflowConfig)
+            throws Exception {
+        TicketType ticket = TicketType.Factory.newInstance();
+        ticket.setId("My ticket Id");
+
+        Ping ping = Ping.Factory.newInstance();
+        ping.setText("Testing axis2-wss4j module");
+        ping.setTicket(ticket);
+
+        PingDocument pingDoc = PingDocument.Factory.newInstance();
+        pingDoc.setPing(ping);
+
+        PingPortStub stub = new PingPortStub(ConfigurationContextFactory
+                .createConfigurationContextFromFileSystem(clientRepo,
+                        clientRepo + "/conf/axis2.xml"), url);
+
+        // Enable MTOM to those scenarios where they are configured using:
+        // <optimizeParts>xpathExpression</optimizeParts>
+        stub._getServiceClient().getOptions().setProperty(
+                Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        // Engage the security module
+        stub._getServiceClient().engageModule(
+                new javax.xml.namespace.QName("rampart"));
+
+        if (outflowConfig != null) {
+            stub._getServiceClient().getOptions().setProperty(
+                    WSSHandlerConstants.OUTFLOW_SECURITY,
+                    outflowConfig.getProperty());
+        }
+        if (inflowConfig != null) {
+            stub._getServiceClient().getOptions().setProperty(
+                    WSSHandlerConstants.INFLOW_SECURITY,
+                    inflowConfig.getProperty());
+        }
+        PingResponseDocument pingResDoc = stub.Ping(pingDoc);
+
+        PingResponse pingRes = pingResDoc.getPingResponse();
+
+        System.out.println(pingRes.getText());
+        stub = null;
+    }
+
+    public void invokeWithGivenConfigWithProRefs(String clientRepo, String url,
+            OutflowConfiguration outflowConfig, InflowConfiguration inflowConfig,
+            Hashtable propRefs)
+            throws Exception {
+        TicketType ticket = TicketType.Factory.newInstance();
+        ticket.setId("My ticket Id");
+
+        Ping ping = Ping.Factory.newInstance();
+        ping.setText("Testing axis2-wss4j module");
+        ping.setTicket(ticket);
+
+        PingDocument pingDoc = PingDocument.Factory.newInstance();
+        pingDoc.setPing(ping);
+
+        PingPortStub stub = new PingPortStub(ConfigurationContextFactory
+                .createConfigurationContextFromFileSystem(clientRepo,
+                        clientRepo + "/conf/axis2.xml"), url);
+
+        // Enable MTOM to those scenarios where they are configured using:
+        // <optimizeParts>xpathExpression</optimizeParts>
+        stub._getServiceClient().getOptions().setProperty(
+                Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+        // Engage the security module
+        stub._getServiceClient().engageModule(
+                new javax.xml.namespace.QName("rampart"));
+
+        if (outflowConfig != null) {
+            stub._getServiceClient().getOptions().setProperty(
+                    WSSHandlerConstants.OUTFLOW_SECURITY,
+                    outflowConfig.getProperty());
+        }
+        if (inflowConfig != null) {
+            stub._getServiceClient().getOptions().setProperty(
+                    WSSHandlerConstants.INFLOW_SECURITY,
+                    inflowConfig.getProperty());
+        }
+        
+        if(propRefs != null) {
+            Enumeration keysEnum = propRefs.keys();
+            while (keysEnum.hasMoreElements()) {
+                String refKey = (String) keysEnum.nextElement();
+                
+                stub._getServiceClient().getOptions().setProperty(refKey,
+                       propRefs.get(refKey));
+            }
+        }
+        
+        PingResponseDocument pingResDoc = stub.Ping(pingDoc);
+
+        PingResponse pingRes = pingResDoc.getPingResponse();
+
+        System.out.println(pingRes.getText());
+        stub = null;
+    }
+}
diff --git a/rampart_1_1/modules/security/interop/org/apache/axis2/security/PWCallback.java b/rampart_1_1/modules/security/interop/org/apache/axis2/security/PWCallback.java
new file mode 100644
index 0000000..df9d4de
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/org/apache/axis2/security/PWCallback.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import java.io.IOException;
+
+
+
+/**
+
+ * Class PWCallback
+
+ */
+
+public class PWCallback implements CallbackHandler {
+
+
+
+    /** Field key */
+
+    private static final byte[] key = {
+
+        (byte) 0x31, (byte) 0xfd, (byte) 0xcb, (byte) 0xda, (byte) 0xfb,
+
+        (byte) 0xcd, (byte) 0x6b, (byte) 0xa8, (byte) 0xe6, (byte) 0x19,
+
+        (byte) 0xa7, (byte) 0xbf, (byte) 0x51, (byte) 0xf7, (byte) 0xc7,
+
+        (byte) 0x3e, (byte) 0x80, (byte) 0xae, (byte) 0x98, (byte) 0x51,
+
+        (byte) 0xc8, (byte) 0x51, (byte) 0x34, (byte) 0x04,
+
+    };
+
+
+
+    /*
+
+     * (non-Javadoc)
+
+     * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
+
+     */
+
+
+
+    /**
+
+     * Method handle
+
+     * 
+
+     * @param callbacks 
+
+     * @throws java.io.IOException                  
+
+     * @throws javax.security.auth.callback.UnsupportedCallbackException 
+
+     */
+
+    public void handle(Callback[] callbacks)
+
+            throws IOException, UnsupportedCallbackException {
+
+
+
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+
+
+
+                /*
+
+                 * This usage type is used only in case we received a
+
+                 * username token with a password of type PasswordText or
+
+                 * an unknown password type.
+
+                 * 
+
+                 * This case the WSPasswordCallback object contains the
+
+                 * identifier (aka username), the password we received, and
+
+                 * the password type string to identify the type.
+
+                 * 
+
+                 * Here we perform only a very simple check.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+
+                	if(pc.getIdentifer().equals("Ron") && pc.getPassword().equals("noR")) {
+
+                        return;
+
+                	}
+
+                    if (pc.getPassword().equals("sirhC")) {
+
+                        return;
+
+                    }               	
+
+                    throw new UnsupportedCallbackException(callbacks[i],
+
+                    "check failed");
+
+                }
+
+                /*
+
+                 * here call a function/method to lookup the password for
+
+                 * the given identifier (e.g. a user name or keystore alias)
+
+                 * e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier))
+
+                 * for Testing we supply a fixed name here.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.KEY_NAME) {
+
+                    pc.setKey(key);
+
+                } else if(pc.getIdentifer().equals("alice")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("bob")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("Ron")) {
+
+                    pc.setPassword("noR");
+
+                } else {
+
+                    pc.setPassword("sirhC");
+
+                }
+
+            } else {
+
+                throw new UnsupportedCallbackException(callbacks[i],
+
+                        "Unrecognized Callback");
+
+            }
+
+        }
+
+    }
+
+}
+
+
diff --git a/rampart_1_1/modules/security/interop/ping.wsdl b/rampart_1_1/modules/security/interop/ping.wsdl
new file mode 100644
index 0000000..946c935
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/ping.wsdl
@@ -0,0 +1,99 @@
+<definitions xmlns:s1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"

+             xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+             xmlns:s="http://www.w3.org/2001/XMLSchema"

+             xmlns:tns="http://xmlsoap.org/Ping"

+             xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"

+             xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"

+             xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"

+             targetNamespace="http://xmlsoap.org/Ping"

+             xmlns="http://schemas.xmlsoap.org/wsdl/">

+    <types>

+        <s:schema elementFormDefault="qualified" targetNamespace="http://xmlsoap.org/Ping">

+            <s:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/>

+            <s:element name="Ping" nillable="true" type="tns:ping"/>

+            <s:complexType name="ping">

+                <s:sequence>

+                    <s:element minOccurs="0" maxOccurs="1" name="ticket" type="tns:ticketType"/>

+                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+            <s:complexType name="ticketType">

+                <s:simpleContent>

+                    <s:extension base="s:string">

+                        <s:attribute ref="s1:Id"/>

+                    </s:extension>

+                </s:simpleContent>

+            </s:complexType>

+            <s:element name="PingResponse" nillable="true" type="tns:pingResponse"/>

+            <s:complexType name="pingResponse">

+                <s:sequence>

+                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+        </s:schema>

+        <s:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

+            <s:attribute name="Id" type="s:string"/>

+        </s:schema>

+    </types>

+    <message name="PingRequest">

+        <part name="ping" element="tns:Ping"/>

+    </message>

+    <message name="PingResponse">

+        <part name="pingResponse" element="tns:PingResponse"/>

+    </message>

+    <portType name="PingPort">

+        <operation name="Ping">

+            <input message="tns:PingRequest"/>

+            <output message="tns:PingResponse"/>

+        </operation>

+    </portType>

+    <binding name="PingBinding" type="tns:PingPort">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="Ping">

+            <soap:operation soapAction="urn:Ping" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="PingPort">

+        <port name="Ping1" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping1"/>

+        </port>

+        <port name="Ping2" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping2"/>

+        </port>

+        <port name="Ping2a" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping2a"/>

+        </port>

+        <port name="Ping3" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping3"/>

+        </port>

+        <port name="Ping4" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping4"/>

+        </port>

+        <port name="Ping5" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping5"/>

+        </port>

+        <port name="Ping6" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping6"/>

+        </port>

+        <port name="Ping7" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping7"/>

+        </port>

+        <port name="STPing1" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/STPing1"/>

+        </port>

+        <port name="STPing3" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/STPing3"/>

+        </port>

+        <port name="STPing4" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/STPing4"/>

+        </port>

+        

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/security/interop/services.xml b/rampart_1_1/modules/security/interop/services.xml
new file mode 100644
index 0000000..f366848
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/services.xml
@@ -0,0 +1,8 @@
+<!--Auto generated Axis Service XML-->
+<service name="PingPort">
+	<parameter locked="false" name="ServiceClass">org.apache.axis2.oasis.ping.PingPortSkeleton</parameter>
+	<!--Mounting the method Ping-->
+	<operation name="Ping">
+		<messageReceiver class="org.apache.axis2.oasis.ping.PingPortMessageReceiver"/>
+	</operation>    
+</service>
diff --git a/rampart_1_1/modules/security/interop/x509.PFX.MSFT b/rampart_1_1/modules/security/interop/x509.PFX.MSFT
new file mode 100644
index 0000000..98be0df
--- /dev/null
+++ b/rampart_1_1/modules/security/interop/x509.PFX.MSFT
Binary files differ
diff --git a/rampart_1_1/modules/security/maven.xml b/rampart_1_1/modules/security/maven.xml
new file mode 100644
index 0000000..e56a96f
--- /dev/null
+++ b/rampart_1_1/modules/security/maven.xml
@@ -0,0 +1,224 @@
+<?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:u="jelly:util"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+    
+    <postGoal name="test:compile">
+        <!-- Temp dir to hold the contents of the mar -->
+        <mkdir dir="target/temp-mar/META-INF"/>
+        <mkdir dir="target/temp-mar/lib"/>
+        
+        <mkdir dir="target/modules"/>
+
+        <!-- Copy the required content for the mar into the temp dir-->
+
+        <copy todir="target/temp-mar">
+            <fileset dir="target/classes">
+                <include name="**/org/apache/*/**/*.class"/>
+                <exclude name="**/org/apache/axis2/security/InteropScenarioClient.class"/>
+            </fileset>
+        </copy>
+
+        <!--include the license for jars-->
+        <ant:copy toDir="target/temp-mar/lib">
+            <ant:fileset dir="../../legal/rampart">
+                <ant:include name="*.txt"/>
+            </ant:fileset>
+        </ant:copy>
+
+        <copy file="../../LICENSE.txt"
+            tofile="target/temp-mar/META-INF/LICENSE.txt" overwrite="true"/>
+
+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('on')}">
+			<copy file="${dependencies.dir}/xmlsec-${xmlsec.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/bcprov-${bcprov.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/opensaml-${opensaml.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/wss4j-${wss4j.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/jaxen-${jaxen.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/xml-apis-${xml_apis.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/xercesImpl-${xerces.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/commons-codec-${commons.codec.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/axis2-rahas-${pom.currentVersion}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${dependencies.dir}/axis2-secpolicy-${pom.currentVersion}.jar" todir="target/temp-mar/lib"/>
+        </j:if>
+		<j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('off')}">
+			<copy file="${maven.repo.local}/xml-security/jars/xmlsec-${xmlsec.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/bouncycastle/jars/bcprov-${bcprov.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/opensaml/jars/opensaml-${opensaml.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/wss4j/jars/wss4j-${wss4j.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/jaxen/jars/jaxen-${jaxen.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/xml-apis/jars/xml-apis-${xml_apis.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/xerces/jars/xercesImpl-${xerces.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/commons-codec/jars/commons-codec-${commons.codec.version}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/org.apache.axis2/jars/axis2-rahas-${pom.currentVersion}.jar" todir="target/temp-mar/lib"/>
+			<copy file="${maven.repo.local}/org.apache.axis2/jars/axis2-secpolicy-${pom.currentVersion}.jar" todir="target/temp-mar/lib"/>
+        </j:if>
+		
+        <copy file="src/META-INF/module.xml"
+            tofile="target/temp-mar/META-INF/module.xml" overwrite="true"/>
+	<copy file="src/META-INF/services/org.apache.neethi.builders.AssertionBuilder"
+	    tofile="target/temp-mar/META-INF/services/org.apache.neethi.builders.AssertionBuilder" overwrite="true" />
+
+        <jar jarfile="target/rampart-${rampart_module_version}.mar" basedir="target/temp-mar/">
+            <include name="**/*"/>
+        </jar>
+
+        <copy file="target/rampart-${rampart_module_version}.mar" tofile="target/modules/rampart-${rampart_module_version}.mar"/>
+        <copy file="target/rampart-${rampart_module_version}.mar" tofile="${maven.repo.local}/org.apache.axis2/mars/rampart-${rampart_module_version}.mar"/>
+		
+        <delete includeEmptyDirs="true">
+            <fileset dir="target/temp-mar"/>
+        </delete>
+    </postGoal>
+
+    <preGoal name="java:compile">
+     <j:if test="${context.getVariable('maven.test.skip') != 'true'}">
+
+        <j:set var="interop.dir" value="target/interop"/>
+        <j:set var="work.dir" value="${interop.dir}/work"/>
+        <j:set var="class.dir" value="${interop.dir}/classes"/>
+
+        <mkdir dir="${interop.dir}"/>
+        <mkdir dir="${work.dir}"/>
+        <mkdir dir="${class.dir}"/>
+        
+        <!-- Run WSDL2Java -->
+        <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+            <classpath refid="maven.dependency.classpath"/>
+            <arg value="-uri"/>
+            <arg file="interop/ping.wsdl"/>
+            <arg value="-ss"/>
+            <arg value="-o"/>
+            <arg file="${work.dir}"/>
+            <arg value="-p"/>
+            <arg value="org.apache.axis2.oasis.ping"/>
+            <arg value="-d"/>
+            <arg value="xmlbeans"/>
+            <arg value="-g"/>
+        </java>
+
+        <!-- move/copy schema stuff into class.dir -->
+        <ant:move todir="${class.dir}">
+            <ant:fileset dir="${work.dir}/resources">
+                <ant:include name="**/schema*/**/*.xsb"/>
+                <ant:include name="**/schema*/**/*.class"/>
+            </ant:fileset>
+        </ant:move>
+        
+        <!-- copy the service impl -->
+        <copy file="interop/org/apache/axis2/oasis/ping/PingPortSkeleton.java" 
+            tofile="${work.dir}/src/org/apache/axis2/oasis/ping/PingPortSkeleton.java" overwrite="yes"/>
+    
+        <!-- Password callback class for the interop service -->
+        <copy file="test-resources/PWCallback.java" 
+            tofile="${work.dir}/src/org/apache/axis2/security/PWCallback.java" overwrite="yes"/>
+        
+        <!-- Interop client -->
+        <copy file="interop/org/apache/axis2/security/InteropScenarioClient.java" 
+            tofile="${work.dir}/src/org/apache/axis2/security/InteropScenarioClient.java" overwrite="yes"/>
+		
+		<copy toDir="target/classes/META-INF/">
+			<fileset dir="src/META-INF">
+                <include name="**/services/*"/>
+            </fileset>
+		</copy>
+
+        <ant:path id="classes.dir" location="${class.dir}"/>
+        <maven:addPath id="maven.dependency.classpath" refid="classes.dir"/>
+
+        <ant:path id="src.dir" location="${work.dir}/src"/>
+        <maven:addPath id="maven.compile.src.set" refid="src.dir"/> 
+     </j:if>
+    </preGoal>
+
+    <!--Create the service.aar" -->
+    <postGoal name="java:compile">
+      <j:if test="${context.getVariable('maven.test.skip') != 'true'}">
+
+        <!-- move/copy interop classes into class.dir -->
+        <ant:move todir="${class.dir}">
+            <ant:fileset dir="${basedir}/target/classes">
+                <ant:include name="**/ping/**/*.class"/>
+                <ant:include name="**/oasisOpen/**/*.class"/>
+                <ant:include name="**/xmlmime/**/*.class"/>
+                <ant:include name="**/PWCallback.class"/>
+                <ant:include name="**/InteropScenarioClient.class"/>
+            </ant:fileset>
+        </ant:move>
+
+        <delete includeEmptyDirs="true">
+            <fileset dir="${basedir}/target/classes/org/apache/axis2/oasis/"/>
+            <!--<fileset dir="${basedir}/target/classes/org/xmlsoap/"/>-->
+            <!--<fileset dir="${basedir}/target/classes/org/oasisOpen/"/>-->
+        </delete>
+
+        <j:set var="interop.dir" value="target/interop"/>
+        <j:set var="work.dir" value="${interop.dir}/work"/>
+        <j:set var="class.dir" value="${interop.dir}/classes"/>
+        
+        <!-- Create the META-INF directory -->
+        <mkdir dir="${class.dir}/META-INF"/>
+        
+            <!-- copy the services.xml-->
+        <copy file="interop/services.xml"
+            tofile="${class.dir}/META-INF/services.xml" overwrite="yes"/>
+
+
+        <!-- copy axis2.crypto.properties -->
+        <copy file="interop/axis2.crypto.properties" 
+            tofile="${class.dir}/axis2.crypto.properties" overwrite="yes"/>
+        <!-- copy axis2.saml.properties -->
+        <copy file="interop/axis2.saml.properties" 
+            tofile="${class.dir}/axis2.saml.properties" overwrite="yes"/>
+        <!-- copy axis2.saml3.properties -->
+        <copy file="interop/axis2.saml3.properties" 
+            tofile="${class.dir}/axis2.saml3.properties" overwrite="yes"/>
+        <!-- copy axis2.saml4.properties -->
+        <copy file="interop/axis2.saml4.properties" 
+            tofile="${class.dir}/axis2.saml4.properties" overwrite="yes"/>
+        <!-- copy x509.PFX.MSFT -->
+        <copy file="interop/x509.PFX.MSFT" 
+            tofile="${class.dir}/x509.PFX.MSFT" overwrite="yes"/>
+        <!-- Copy interop.properties-->
+        <copy file="interop/interop.properties" 
+            tofile="${class.dir}/interop.properties" overwrite="yes"/>
+        <!-- Copy interop.jks -->
+        <copy file="interop/interop2.jks" 
+            tofile="${class.dir}/interop2.jks" overwrite="yes"/>
+        
+    		<jar jarfile="target/PingPort.aar" basedir="target/interop/classes">
+            <include name="**/*"/>
+        </jar>
+      	
+     </j:if>
+    </postGoal>
+
+    <preGoal name="jar:jar">
+        <mkdir dir="target/classes/META-INF/services"/>
+        <copy toDir="target/classes/META-INF/services" overwrite="yes">
+            <fileset dir="src/META-INF/services" />
+        </copy>
+        <j:if test="${context.getVariable('maven.test.skip') != 'true'}">
+			<delete includeEmptyDirs="true">
+				<fileset dir="target/classes/org/xmlsoap/"/>
+				<fileset dir="target/classes/org/oasis_open/"/>
+				<fileset dir="target/classes/org/w3/"/>
+				<fileset file="target/classes/org/apache/axis2/security/InteropScenarioClient.class"/>
+			</delete>
+        	</j:if>
+    </preGoal>
+	
+</project>
diff --git a/rampart_1_1/modules/security/project.properties b/rampart_1_1/modules/security/project.properties
new file mode 100644
index 0000000..5a10001
--- /dev/null
+++ b/rampart_1_1/modules/security/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------
+# 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.
+# -------------------------------------------------------------------
+
+maven.multiproject.type=jar
diff --git a/rampart_1_1/modules/security/project.xml b/rampart_1_1/modules/security/project.xml
new file mode 100644
index 0000000..0852169
--- /dev/null
+++ b/rampart_1_1/modules/security/project.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - Security</name>
+    <id>axis2-security</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>WS-Security implementation</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+		
+		<dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-dom</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+		<dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-java2wsdl</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-codegen</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>         
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-jibx</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-secpolicy</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>  
+       <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-xmlbeans</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-rahas</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <!-- external JARs -->
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xalan</groupId>
+            <artifactId>xalan</artifactId>
+            <version>${xalan.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons.httpclient.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons.codec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>wss4j</groupId>
+            <artifactId>wss4j</artifactId>
+            <version>${wss4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-security</groupId>
+            <artifactId>xmlsec</artifactId>
+            <version>${xmlsec.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>bouncycastle</groupId>
+            <artifactId>bcprov</artifactId>
+            <version>${bcprov.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>opensaml</groupId>
+            <artifactId>opensaml</artifactId>
+            <version>${opensaml.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xmlbeans</groupId>
+            <artifactId>xbean</artifactId>
+            <version>${xbean.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+            <version>${xml_apis.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+            <version>${xerces.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxen</groupId>
+            <artifactId>jaxen</artifactId>
+            <version>${jaxen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>backport-util-concurrent</groupId>
+            <artifactId>backport-util-concurrent</artifactId>
+            <version>${backport_util_concurrent.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+         <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${XmlSchema.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${javamail.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+	<!-- For WS-Policy support -->
+	<dependency>
+		<groupId>org.apache.neethi</groupId>
+		<artifactId>neethi</artifactId>
+		<version>${neethi.version}</version>
+		<properties>
+			<module>true</module>
+		</properties>
+	</dependency>
+	<dependency>
+            <groupId>incubator-woden</groupId>
+            <artifactId>woden</artifactId>
+            <version>${woden.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+    </dependencies>
+    <!-- build information for the project -->
+    <build>
+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
+        <sourceDirectory>src</sourceDirectory>
+        <unitTestSourceDirectory>test</unitTestSourceDirectory>
+
+        <unitTest>
+            <includes>
+                <include>**/*Test.java</include>
+            </includes>
+        </unitTest>
+	</build>
+    <reports/>
+</project>
diff --git a/rampart_1_1/modules/security/release-docs/LICENSE.txt b/rampart_1_1/modules/security/release-docs/LICENSE.txt
new file mode 100755
index 0000000..6b0b127
--- /dev/null
+++ b/rampart_1_1/modules/security/release-docs/LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/rampart_1_1/modules/security/release-docs/NOTICE.txt b/rampart_1_1/modules/security/release-docs/NOTICE.txt
new file mode 100644
index 0000000..77d3370
--- /dev/null
+++ b/rampart_1_1/modules/security/release-docs/NOTICE.txt
@@ -0,0 +1,12 @@
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Axis2 distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Please read the different LICENSE files present in the lib directory of
+   this distribution.
+
diff --git a/rampart_1_1/modules/security/release-docs/README.txt b/rampart_1_1/modules/security/release-docs/README.txt
new file mode 100644
index 0000000..7171c82
--- /dev/null
+++ b/rampart_1_1/modules/security/release-docs/README.txt
@@ -0,0 +1,59 @@
+======================================================

+Apache Rampart-1.1 build  (December 5th, 2006)

+

+http://ws.apache.org/axis2/modules/rampart/

+------------------------------------------------------

+

+___________________

+Contents

+===================

+

+lib      - This directory contains all the libraries required by rampart

+           in addition to the libraries available in the axis2 standard binary 

+           release.

+	   

+

+rampart-1.1.mar   - WS-Security and WS-SecureConversation support for Axis2

+rahas-1.1.mar     - STS module - to be used to add STS operations to a service

+				IMPORTANT: Note that the module versions are set to 1.1 enven 

+				though this release is 1.1-RC1

+

+rahas-1.1.zip - STS zip - you can use this to create your own configured STS

+

+samples  - This contains samples on using Apache Rampart and configuring

+           different conponents to carryout different WS-Sec* operations.

+

+README.txt - This file

+

+build.xml - Setup file to copy all jars to required places

+

+IMPORTANT: Before you try any of the samples makesure you

+

+1.) Have the Axis2 standard binary distribution downloaded and extracted.

+2.) Set the AXIS2_HOME environment variable

+3.) Run ant from the "samples" directory to copy the required libraries and

+    modules to relevant directories in AXIS2_HOME.

+4.) Download xalan-2.7.0.jar from here[1] and put under AXIS2_HOME\lib folder,

+    if you use JDK 1.5.

+

+___________________

+Support

+===================

+ 

+Any problem with this release can be reported to Axis mailing list

+or in the JIRA issue tracker. If you are sending an email to the mailing

+list make sure to add the [Rampart] prefix to the subject.

+

+Mailing list subscription:

+    axis-dev-subscribe@ws.apache.org

+

+Jira:

+    http://issues.apache.org/jira/browse/AXIS2

+    (Component - modules)

+

+

+Thank you for using Apache Rampart!

+

+The Apache Rampart team. 

+

+[1] http://www.apache.org/dist/java-repository/xalan/jars/

diff --git a/rampart_1_1/modules/security/release-docs/build.xml b/rampart_1_1/modules/security/release-docs/build.xml
new file mode 100644
index 0000000..13034c5
--- /dev/null
+++ b/rampart_1_1/modules/security/release-docs/build.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+
+<project basedir="." default="setup">
+
+	<property name="lib.dir" value="lib"/>
+	<property name="modules.dir" value="."/>
+	
+	<property environment="env"/>
+    	
+	<target name="check.dependency" unless="env.AXIS2_HOME">
+        <echo message="AXIS2_HOME must be set"/>
+    </target>
+
+	<!-- Copy the required jars and mars appropriately -->
+	<target name="setup" if="env.AXIS2_HOME" depends="check.dependency">
+		
+   		<property name="axis2.modules.dir" value="${env.AXIS2_HOME}/repository/modules/"/>
+   		<property name="axis2.lib.dir" value="${env.AXIS2_HOME}/lib"/>
+		
+		<!-- Delete exising axiom jars -->
+		<delete file="${axis2.lib.dir}/axiom-api-1.2.jar"/>
+		<delete file="${axis2.lib.dir}/axiom-impl-1.2.jar"/>
+		<delete file="${axis2.lib.dir}/axiom-dom-1.2.jar"/>
+
+		<copy todir="${axis2.lib.dir}">
+	        <fileset dir="${lib.dir}">
+	                <include name="**/*.jar"/>
+	        </fileset>
+		</copy>
+		
+		<copy todir="${axis2.modules.dir}">
+	        <fileset dir="${modules.dir}">
+	                <include name="**/*.mar"/>
+	        </fileset>
+		</copy>
+				
+	</target>
+	
+</project>
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/release-docs/release-notes.html b/rampart_1_1/modules/security/release-docs/release-notes.html
new file mode 100644
index 0000000..a7e641c
--- /dev/null
+++ b/rampart_1_1/modules/security/release-docs/release-notes.html
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+  <title>Apache Rampart - Release Notes</title>
+  <meta name="generator" content="amaya 9.2.2, see http://www.w3.org/Amaya/"
+  />
+</head>
+
+<body>
+<h1>Apache Rampart Release Notes</h1>
+
+<p>This is the 1.1 release of Apache Rampart.</p>
+
+<p>Apache Rampart 1.1 is a toolkit that provides implementations of the WS-Sec*
+specifications for Apache Axis 1.1, based on Apache WSS4J 1.5.1 and 
+the Apache AXIOM-DOOM 1.2.1 implementation.</p>
+
+<b>What is in this release</b>
+
+<p>There are two main Apache Axis2 modules provided with this release.</p> 
+<ul>
+<li>rampart-1.1.mar</li>
+This provides support for WS-Security and WS-SecureConversation features.
+<li>rahas-1.1.mar</li>
+This module provides the necessary components to enable SecurityTokenService 
+functionality on a service.
+</ul>
+
+<p>Apache Rampart 1.1 introduces a new configuration model based on WS-Policy 
+and WS-Security Policy and it is important to note that Apache Rampart 1.0 style 
+configuration is now deprecated and will not be available in next major version.
+</p>
+
+<p>Apache Rampart 1.1 can be successfully used with the next Apache Sandesha2 
+release targeted towards Apache Axis2 1.1 to configure 
+WS-SecureConversation + WS-ReliableMessaging scenarios.</p>
+<p>
+The rampart module was successfully tested for interoperability with other
+WS-Security implementations.</p>
+
+<p>WS - Sec* specifications supported by Apache Rampart are as follows:</p>
+
+<ul>
+<li>WS - Security 1.0</li>
+<li>WS - Secure Conversation - February 2005</li>
+<li>WS - Security Policy - 1.1 - July 2005</li>
+<li>WS - Trust - February 2005</li>
+<li>WS - Trust - WS-SX spec - EXPERIMENTAL </li>
+</ul>
+
+
+
+
+<p>Thank you for using Apache Rampart.</p>
+
+<p></p>
+
+<p>Apache Rampart team</p>
+
+<p></p>
+
+<p></p>
+
+<p></p>
+
+<p></p>
+
+<p></p>
+
+<p></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/src/META-INF/module.xml b/rampart_1_1/modules/security/src/META-INF/module.xml
new file mode 100644
index 0000000..8482ba9
--- /dev/null
+++ b/rampart_1_1/modules/security/src/META-INF/module.xml
@@ -0,0 +1,29 @@
+<module name="rampart" class="org.apache.rampart.Rampart">
+
+    <Description>This module provides the WS-Security and WS-SecureConversation 
+    functionalities for Axis2, based on Apache WSS4J, Apache XML-Security 
+    and Apache Rahas implementations.
+	</Description>
+	    
+    <InFlow>
+        <handler name="PolicyBasedSecurityInHandler" class="org.apache.rampart.handler.RampartReceiver">
+            <order phase="Security" phaseFirst="true"/>
+        </handler>
+        <handler name="SecurityInHandler" class="org.apache.rampart.handler.WSDoAllReceiver">
+            <order phase="Security"/>
+        </handler>
+    </InFlow>
+
+    <OutFlow>
+        <handler name="SecurityOutHandler" class="org.apache.rampart.handler.WSDoAllSender">
+            <order phase="Security"/>
+        </handler>
+        <handler name="PolicyBasedSecurityOutHandler" class="org.apache.rampart.handler.RampartSender">
+            <order phase="Security" phaseLast="true"/>
+        </handler>
+    </OutFlow>
+    <supported-policy-namespaces namespaces="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"/>
+    <local-policy-assertions>
+    	<rampart:RampartConfig xmlns:rampart="http://ws.apache.org/rampart/policy" />
+    </local-policy-assertions>
+</module>
diff --git a/rampart_1_1/modules/security/src/META-INF/services/org.apache.neethi.builders.AssertionBuilder b/rampart_1_1/modules/security/src/META-INF/services/org.apache.neethi.builders.AssertionBuilder
new file mode 100644
index 0000000..92c67c0
--- /dev/null
+++ b/rampart_1_1/modules/security/src/META-INF/services/org.apache.neethi.builders.AssertionBuilder
@@ -0,0 +1,2 @@
+org.apache.rampart.policy.builders.CryptoConfigBuilder
+org.apache.rampart.policy.builders.RampartConfigBuilder
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/MessageBuilder.java b/rampart_1_1/modules/security/src/org/apache/rampart/MessageBuilder.java
new file mode 100644
index 0000000..f38d25e
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/MessageBuilder.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.AddressingConstants.Final;
+import org.apache.axis2.addressing.AddressingConstants.Submission;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.util.XMLUtils;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.TrustUtil;
+import org.apache.rampart.builder.AsymmetricBindingBuilder;
+import org.apache.rampart.builder.SymmetricBindingBuilder;
+import org.apache.rampart.builder.TransportBindingBuilder;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import javax.xml.namespace.QName;
+
+public class MessageBuilder {
+    
+    private static Log log = LogFactory.getLog(MessageBuilder.class);
+    
+    public void build(MessageContext msgCtx) throws WSSPolicyException,
+            RampartException, WSSecurityException, AxisFault {
+
+        Axis2Util.useDOOM(true);
+        
+        RampartMessageData rmd = new RampartMessageData(msgCtx, true);
+        
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        if(rpd == null) {
+            return;
+        }
+        
+        //Copy the RECV_RESULTS if available
+        if(!rmd.isClientSide()) {
+            OperationContext opCtx = msgCtx.getOperationContext();
+            MessageContext inMsgCtx;
+            if(opCtx != null && 
+                    (inMsgCtx = opCtx.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)) != null) {
+                msgCtx.setProperty(WSHandlerConstants.RECV_RESULTS, 
+                        inMsgCtx.getProperty(WSHandlerConstants.RECV_RESULTS));
+            }
+        }
+        
+        
+        String isCancelreq = (String)msgCtx.getProperty(RampartMessageData.CANCEL_REQUEST);
+        if(isCancelreq != null && Constants.VALUE_TRUE.equals(isCancelreq)) {
+            try {
+                
+                String cancelAction = TrustUtil.getWSTNamespace(rmd.getWstVersion()) + RahasConstants.RST_ACTION_CANCEL_SCT;
+                //Set action
+                msgCtx.getOptions().setAction(cancelAction);
+                
+                //Change the wsa:Action header
+                String wsaNs = Final.WSA_NAMESPACE;
+                Object addressingVersionFromCurrentMsgCtxt = msgCtx.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+                if (Submission.WSA_NAMESPACE.equals(addressingVersionFromCurrentMsgCtxt)) {
+                    wsaNs = Submission.WSA_NAMESPACE;
+                }
+                OMElement header = msgCtx.getEnvelope().getHeader();
+                if(header != null) {
+                    OMElement actionElem = header.getFirstChildWithName(new QName(wsaNs, AddressingConstants.WSA_ACTION));
+                    if(actionElem != null) {
+                        actionElem.setText(cancelAction);
+                    }
+                }
+                
+                //set payload to a cancel request
+                String ctxIdKey = RampartUtil.getContextIdentifierKey(msgCtx);
+                String tokenId = (String)RampartUtil.getContextMap(msgCtx).get(ctxIdKey);
+                
+                if(tokenId != null && RampartUtil.isTokenValid(rmd, tokenId)) {
+                    OMElement bodyElem = msgCtx.getEnvelope().getBody();
+                    OMElement child = bodyElem.getFirstElement();
+                    OMElement newChild = TrustUtil.createCancelRequest(tokenId, rmd.getWstVersion());
+                    Element newDomChild = XMLUtils.toDOM(newChild);
+                    Node importedNode = rmd.getDocument().importNode((Element) newDomChild, true);
+                    ((Element) bodyElem).replaceChild(importedNode, (Element) child);
+                } else {
+                    throw new RampartException("tokenToBeCancelledInvalid");
+                }
+                
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new RampartException("errorInTokenCancellation");
+            }
+        }
+        
+        if(rpd.isTransportBinding()) {
+            log.debug("Building transport binding");
+            TransportBindingBuilder building = new TransportBindingBuilder();
+            building.build(rmd);
+        } else if(rpd.isSymmetricBinding()) {
+            log.debug("Building SymmetricBinding");
+            SymmetricBindingBuilder builder = new SymmetricBindingBuilder();
+            builder.build(rmd);
+        } else {
+            AsymmetricBindingBuilder builder = new AsymmetricBindingBuilder();
+            builder.build(rmd);
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/PolicyBasedResultsValidator.java b/rampart_1_1/modules/security/src/org/apache/rampart/PolicyBasedResultsValidator.java
new file mode 100644
index 0000000..97c08cb
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/PolicyBasedResultsValidator.java
@@ -0,0 +1,534 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.Token;
+import org.apache.ws.secpolicy.model.UsernameToken;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSEncryptionPart;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.message.token.Timestamp;
+import org.apache.ws.security.util.WSSecurityUtil;
+
+import java.math.BigInteger;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Vector;
+
+public class PolicyBasedResultsValidator {
+    
+    private static Log log = LogFactory.getLog(PolicyBasedResultsValidator.class);
+    
+    public void validate(ValidatorData data, Vector results) 
+    throws RampartException {
+        
+        RampartMessageData rmd = data.getRampartMessageData();
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        //Check presence of timestamp
+        if(rpd.isIncludeTimestamp()) {
+            WSSecurityEngineResult tsResult = 
+                WSSecurityUtil.fetchActionResult(results, WSConstants.TS);
+            if(tsResult == null) {
+                throw new RampartException("timestampMissing");
+            }
+            
+        }
+        
+        //sig/encr
+        Vector encryptedParts = RampartUtil.getEncryptedParts(rmd);
+        if(rpd.isSignatureProtection() && isSignatureRequired(rpd)) {
+            encryptedParts.add(new WSEncryptionPart(WSConstants.SIG_LN, 
+                    WSConstants.SIG_NS, "Element"));
+        }
+        
+        Vector signatureParts = RampartUtil.getSignedParts(rmd);
+        validateEncrSig(encryptedParts, signatureParts, results);
+        
+        validateProtectionOrder(data, results);
+        
+        validateEncryptedParts(data, results);
+
+        //Supporting tokens
+        if(!rmd.isClientSide()) {
+            validateSupportingTokens(data, results);
+        }
+        
+        /*
+         * Now we can check the certificate used to sign the message. In the
+         * following implementation the certificate is only trusted if either it
+         * itself or the certificate of the issuer is installed in the keystore.
+         * 
+         * Note: the method verifyTrust(X509Certificate) allows custom
+         * implementations with other validation algorithms for subclasses.
+         */
+
+        // Extract the signature action result from the action vector
+        WSSecurityEngineResult actionResult = WSSecurityUtil.fetchActionResult(
+                results, WSConstants.SIGN);
+
+        if (actionResult != null) {
+            X509Certificate returnCert = actionResult.getCertificate();
+
+            if (returnCert != null) {
+                if (!verifyTrust(returnCert, rmd)) {
+                    throw new RampartException ("trustVerificationError");
+                }
+            }
+        }
+        
+        /*
+         * Perform further checks on the timestamp that was transmitted in the
+         * header. In the following implementation the timestamp is valid if it
+         * was created after (now-ttl), where ttl is set on server side, not by
+         * the client.
+         * 
+         * Note: the method verifyTimestamp(Timestamp) allows custom
+         * implementations with other validation algorithms for subclasses.
+         */
+
+        // Extract the timestamp action result from the action vector
+        actionResult = WSSecurityUtil.fetchActionResult(results, WSConstants.TS);
+
+        if (actionResult != null) {
+            Timestamp timestamp = actionResult.getTimestamp();
+
+            if (timestamp != null) {
+                if (!verifyTimestamp(timestamp, rmd.getTimeToLive())) {
+                    throw new RampartException("cannotValidateTimestamp");
+                }
+            }
+        }
+    }
+    
+    /**
+     * @param encryptedParts
+     * @param signatureParts
+     */
+    private void validateEncrSig(Vector encryptedParts, Vector signatureParts, Vector results) 
+    throws RampartException {
+        ArrayList actions = getSigEncrActions(results);
+        boolean sig = false; 
+        boolean encr = false;
+        for (Iterator iter = actions.iterator(); iter.hasNext();) {
+            Integer act = (Integer) iter.next();
+            if(act.intValue() == WSConstants.SIGN) {
+                sig = true;
+            } else if(act.intValue() == WSConstants.ENCR) {
+                encr = true;
+            }
+        }
+        
+        if(sig && signatureParts.size() == 0) {
+            
+            //Unexpected signature
+            throw new RampartException("unexprectedSignature");
+        } else if(!sig && signatureParts.size() > 0) {
+            
+            //required signature missing
+            throw new RampartException("signatureMissing");
+        }
+        
+        if(encr && encryptedParts.size() == 0) {
+            
+            //Check whether its just an encrypted key
+            ArrayList list = this.getResults(results, WSConstants.ENCR);
+            boolean encrDataFound = false;
+            for (Iterator iter = list.iterator(); iter.hasNext();) {
+                WSSecurityEngineResult result = (WSSecurityEngineResult) iter.next();
+                if(result.getDataRefUris() != null) {
+                    encrDataFound = true;
+                }
+            }
+            if(encrDataFound) {
+                //Unexpected encryption
+                throw new RampartException("unexprectedEncryptedPart");
+            }
+        } else if(!encr && encryptedParts.size() > 0) {
+            
+            //required signature missing
+            throw new RampartException("encryptionMissing");
+        }
+    }
+
+    /**
+     * @param data
+     * @param results
+     */
+    private void validateSupportingTokens(ValidatorData data, Vector results) 
+    throws RampartException {
+        
+        //Check for UsernameToken
+        RampartPolicyData rpd = data.getRampartMessageData().getPolicyData();
+        SupportingToken suppTok = rpd.getSupportingTokens();
+        handleSupportingTokens(results, suppTok);
+        SupportingToken signedSuppToken = rpd.getSignedSupportingTokens();
+        handleSupportingTokens(results, signedSuppToken);
+        SupportingToken signedEndSuppToken = rpd.getSignedEndorsingSupportingTokens();
+        handleSupportingTokens(results, signedEndSuppToken);
+        SupportingToken endSuppToken = rpd.getEndorsingSupportingTokens();
+        handleSupportingTokens(results, endSuppToken);
+    }
+
+    /**
+     * @param results
+     * @param suppTok
+     * @throws RampartException
+     */
+    private void handleSupportingTokens(Vector results, SupportingToken suppTok) throws RampartException {
+        
+        if(suppTok == null) {
+            return;
+        }
+        
+        ArrayList tokens = suppTok.getTokens();
+        for (Iterator iter = tokens.iterator(); iter.hasNext();) {
+            Token token = (Token) iter.next();
+            if(token instanceof UsernameToken) {
+                //Check presence of a UsernameToken
+                WSSecurityEngineResult utResult = WSSecurityUtil.fetchActionResult(results, WSConstants.UT);
+                if(utResult == null) {
+                    throw new RampartException("usernameTokenMissing");
+                }
+                
+            }
+        }
+    }
+    
+    
+    
+
+    /**
+     * @param data
+     * @param results
+     */
+    private void validateProtectionOrder(ValidatorData data, Vector results) 
+    throws RampartException {
+        
+        String protectionOrder = data.getRampartMessageData().getPolicyData().getProtectionOrder();
+        ArrayList sigEncrActions = this.getSigEncrActions(results);
+        
+        if(sigEncrActions.size() < 2) {
+            //There are no results to COMPARE
+            return;
+        }
+        boolean done = false;
+        if(Constants.SIGN_BEFORE_ENCRYPTING.equals(protectionOrder)) {
+            boolean sigfound = false;
+            for (Iterator iter = sigEncrActions.iterator(); 
+                iter.hasNext() || !done;) {
+                Integer act = (Integer) iter.next();
+                if(act.intValue() == WSConstants.SIGN) {
+                    sigfound = true;
+                } else if(sigfound) {
+                    //We have an ENCR action after sig
+                    done = true;
+                }
+            }
+            
+        } else {
+            boolean encrFound = false;
+            for (Iterator iter = sigEncrActions.iterator(); iter.hasNext();) {
+                Integer act = (Integer) iter.next();
+                if(act.intValue() == WSConstants.ENCR) {
+                    encrFound = true;
+                } else if(encrFound) {
+                    //We have an ENCR action after sig
+                    done = true;
+                }
+            }
+        }
+        
+        if(!done) {
+            throw new RampartException("protectionOrderMismatch");
+        }
+    }
+
+
+    private ArrayList getSigEncrActions(Vector results) {
+        ArrayList sigEncrActions = new ArrayList();
+        for (Iterator iter = results.iterator(); iter.hasNext();) {
+            int action = ((WSSecurityEngineResult) iter.next()).getAction();
+            if(WSConstants.SIGN == action || WSConstants.ENCR == action) {
+                sigEncrActions.add(new Integer(action));
+            }
+            
+        }
+        return sigEncrActions;
+    }
+
+    private void validateEncryptedParts(ValidatorData data, Vector results) 
+    throws RampartException {
+        
+        RampartMessageData rmd = data.getRampartMessageData();
+        
+        ArrayList encrRefs = getEncryptedReferences(results);
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        //Check for encrypted body
+        if(rpd.isEncryptBody()) {
+            
+            if(!encrRefs.contains(data.getBodyEncrDataId())){
+                throw new RampartException("encryptedPartMissing", 
+                        new String[]{data.getBodyEncrDataId()});
+            }
+        }
+        
+        int refCount = 0;
+        
+        refCount += rpd.getEncryptedParts().size();
+        
+        if(encrRefs.size() != refCount) {
+            throw new RampartException("invalidNumberOfEncryptedParts", 
+                    new String[]{Integer.toString(refCount)});
+        }
+        
+    }
+
+    private boolean isSignatureRequired(RampartPolicyData rpd) {
+        return (rpd.isSymmetricBinding() && rpd.getSignatureToken() != null) ||
+                (!rpd.isSymmetricBinding() && !rpd.isTransportBinding() && 
+                        rpd.getInitiatorToken() != null);
+    }
+    
+
+    
+    private boolean verifyTimestamp(Timestamp timestamp, int timeToLive) throws RampartException {
+
+        // Calculate the time that is allowed for the message to travel
+        Calendar validCreation = Calendar.getInstance();
+        long currentTime = validCreation.getTime().getTime();
+        currentTime -= timeToLive * 1000;
+        validCreation.setTime(new Date(currentTime));
+
+        // Validate the time it took the message to travel
+        // if (timestamp.getCreated().before(validCreation) ||
+        // !timestamp.getCreated().equals(validCreation)) {
+        Calendar cre = timestamp.getCreated();
+        if (cre != null && !cre.after(validCreation)) {
+            return false;
+        }
+
+        return true;
+    }
+    
+    /**
+     * Evaluate whether a given certificate should be trusted.
+     * Hook to allow subclasses to implement custom validation methods however they see fit.
+     * <p/>
+     * Policy used in this implementation:
+     * 1. Search the keystore for the transmitted certificate
+     * 2. Search the keystore for a connection to the transmitted certificate
+     * (that is, search for certificate(s) of the issuer of the transmitted certificate
+     * 3. Verify the trust path for those certificates found because the search for the issuer might be fooled by a phony DN (String!)
+     *
+     * @param cert the certificate that should be validated against the keystore
+     * @return true if the certificate is trusted, false if not (AxisFault is thrown for exceptions during CertPathValidation)
+     * @throws WSSecurityException
+     */
+    protected boolean verifyTrust(X509Certificate cert, RampartMessageData rmd) throws RampartException {
+
+        // If no certificate was transmitted, do not trust the signature
+        if (cert == null) {
+            return false;
+        }
+
+        String[] aliases = null;
+        String alias = null;
+        X509Certificate[] certs;
+
+        String subjectString = cert.getSubjectDN().getName();
+        String issuerString = cert.getIssuerDN().getName();
+        BigInteger issuerSerial = cert.getSerialNumber();
+        
+        boolean doDebug = log.isDebugEnabled();
+
+        if (doDebug) {
+            log.debug("WSHandler: Transmitted certificate has subject " + 
+                    subjectString);
+            log.debug("WSHandler: Transmitted certificate has issuer " + 
+                    issuerString + " (serial " + issuerSerial + ")");
+        }
+
+        // FIRST step
+        // Search the keystore for the transmitted certificate
+
+        // Search the keystore for the alias of the transmitted certificate
+        try {
+            alias = RampartUtil.getSignatureCrypto(
+                    rmd.getPolicyData().getRampartConfig(),
+                    rmd.getCustomClassLoader()).getAliasForX509Cert(
+                    issuerString, issuerSerial);
+        } catch (WSSecurityException ex) {
+            throw new RampartException("cannotFindAliasForCert", new String[]{subjectString}, ex);
+        }
+
+        if (alias != null) {
+            // Retrieve the certificate for the alias from the keystore
+            try {
+                certs = RampartUtil.getSignatureCrypto(
+                        rmd.getPolicyData().getRampartConfig(),
+                        rmd.getCustomClassLoader()).getCertificates(alias);
+            } catch (WSSecurityException ex) {
+                throw new RampartException("noCertForAlias", new String[] {alias}, ex);
+            }
+
+            // If certificates have been found, the certificates must be compared
+            // to ensure againgst phony DNs (compare encoded form including signature)
+            if (certs != null && certs.length > 0 && cert.equals(certs[0])) {
+                if (doDebug) {
+                    log.debug("Direct trust for certificate with " + subjectString);
+                }
+                return true;
+            }
+        } else {
+            if (doDebug) {
+                log.debug("No alias found for subject from issuer with " + issuerString + " (serial " + issuerSerial + ")");
+            }
+        }
+
+        // SECOND step
+        // Search for the issuer of the transmitted certificate in the keystore
+
+        // Search the keystore for the alias of the transmitted certificates issuer
+        try {
+            aliases = RampartUtil.getSignatureCrypto(
+                    rmd.getPolicyData().getRampartConfig(),
+                    rmd.getCustomClassLoader()).getAliasesForDN(issuerString);
+        } catch (WSSecurityException ex) {
+            throw new RampartException("cannotFindAliasForCert", new String[]{issuerString}, ex);
+        }
+
+        // If the alias has not been found, the issuer is not in the keystore
+        // As a direct result, do not trust the transmitted certificate
+        if (aliases == null || aliases.length < 1) {
+            if (doDebug) {
+                log.debug("No aliases found in keystore for issuer " + issuerString + " of certificate for " + subjectString);
+            }
+            return false;
+        }
+
+        // THIRD step
+        // Check the certificate trust path for every alias of the issuer found in the keystore
+        for (int i = 0; i < aliases.length; i++) {
+            alias = aliases[i];
+
+            if (doDebug) {
+                log.debug("Preparing to validate certificate path with alias " + alias + " for issuer " + issuerString);
+            }
+
+            // Retrieve the certificate(s) for the alias from the keystore
+            try {
+                certs = RampartUtil.getSignatureCrypto(
+                        rmd.getPolicyData().getRampartConfig(),
+                        rmd.getCustomClassLoader()).getCertificates(alias);
+            } catch (WSSecurityException ex) {
+                throw new RampartException("noCertForAlias", new String[] {alias}, ex);
+            }
+
+            // If no certificates have been found, there has to be an error:
+            // The keystore can find an alias but no certificate(s)
+            if (certs == null | certs.length < 1) {
+                throw new RampartException("noCertForAlias", new String[] {alias});
+            }
+
+            // Form a certificate chain from the transmitted certificate
+            // and the certificate(s) of the issuer from the keystore
+            // First, create new array
+            X509Certificate[] x509certs = new X509Certificate[certs.length + 1];
+            // Then add the first certificate ...
+            x509certs[0] = cert;
+            // ... and the other certificates
+            for (int j = 0; j < certs.length; j++) {
+                cert = certs[i];
+                x509certs[certs.length + j] = cert;
+            }
+            certs = x509certs;
+
+            // Use the validation method from the crypto to check whether the subjects certificate was really signed by the issuer stated in the certificate
+            try {
+                if (RampartUtil.getSignatureCrypto(
+                        rmd.getPolicyData().getRampartConfig(),
+                        rmd.getCustomClassLoader()).validateCertPath(certs)) {
+                    if (doDebug) {
+                        log.debug("WSHandler: Certificate path has been verified for certificate with subject " + subjectString);
+                    }
+                    return true;
+                }
+            } catch (WSSecurityException ex) {
+                throw new RampartException("certPathVerificationFailed", new String[]{subjectString}, ex);
+            }
+        }
+
+        log.debug("WSHandler: Certificate path could not be verified for certificate with subject " + subjectString);
+        return false;
+    }
+
+    
+    private ArrayList getEncryptedReferences(Vector results) {
+        
+        //there can be multiple ref lists
+        ArrayList encrResults = getResults(results, WSConstants.ENCR);
+        
+        ArrayList refs = new ArrayList();
+        
+        for (Iterator iter = encrResults.iterator(); iter.hasNext();) {
+            WSSecurityEngineResult engineResult = (WSSecurityEngineResult) iter.next();
+            ArrayList dataRefUris = engineResult.getDataRefUris();
+            
+            //take only the ref list processing results
+            if(dataRefUris != null) {
+                for (Iterator iterator = dataRefUris.iterator(); iterator
+                        .hasNext();) {
+                    String uri = (String) iterator.next();
+                    refs.add(uri);
+                }
+            }
+        }
+        
+        return refs;
+    }
+    
+    
+    
+    private ArrayList getResults(Vector results, int action) {
+        
+        ArrayList list = new ArrayList();
+        
+        for (int i = 0; i < results.size(); i++) {
+            // Check the result of every action whether it matches the given
+            // action
+            if (((WSSecurityEngineResult) results.get(i)).getAction() == action) {
+                list.add((WSSecurityEngineResult) results.get(i));
+            }
+        }
+        
+        return list;
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/Rampart.java b/rampart_1_1/modules/security/src/org/apache/rampart/Rampart.java
new file mode 100644
index 0000000..b6f53f4
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/Rampart.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisDescription;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.modules.Module;
+import org.apache.axis2.modules.ModulePolicyExtension;
+import org.apache.axis2.modules.PolicyExtension;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Policy;
+
+public class Rampart implements Module, ModulePolicyExtension  {
+
+    public void init(ConfigurationContext configContext, AxisModule module)
+            throws AxisFault {
+    }
+
+    public void engageNotify(AxisDescription axisDescription) throws AxisFault {
+        //Nothing to do here, since RampartMessageData will pick up the 
+        //effective policy from the message context 
+    }
+
+    public void shutdown(ConfigurationContext configurationContext) throws AxisFault {
+        // at the moment, nothing needs to be done ..
+    }
+
+    public PolicyExtension getPolicyExtension() {
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault {
+        // TODO Ruchith
+    }
+
+    public boolean canSupportAssertion(Assertion assertion) {
+        // TODO Ruchith
+        return true;
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/RampartEngine.java b/rampart_1_1/modules/security/src/org/apache/rampart/RampartEngine.java
new file mode 100644
index 0000000..2b2a99e
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/RampartEngine.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.security.WSSecurityEngine;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.util.WSSecurityUtil;
+
+import java.util.Vector;
+
+public class RampartEngine {
+
+
+    public Vector process(MessageContext msgCtx) throws WSSPolicyException,
+    RampartException, WSSecurityException, AxisFault {
+        
+        RampartMessageData rmd = new RampartMessageData(msgCtx, false);
+        
+
+        //If there is no policy information or if the message is a fault
+        RampartPolicyData rpd = rmd.getPolicyData();
+        if(rpd == null || 
+                WSSecurityUtil.findElement(rmd.getDocument().getDocumentElement(), 
+                        "Fault", 
+                        rmd.getSoapConstants().getEnvelopeURI()) != null) {
+            SOAPEnvelope env = Axis2Util.getSOAPEnvelopeFromDOOMDocument(rmd.getDocument());
+
+            //Convert back to llom since the inflow cannot use llom
+            msgCtx.setEnvelope(env);
+            Axis2Util.useDOOM(false);
+            return null;
+        }
+        
+        Vector results = null;
+        
+        WSSecurityEngine engine = new WSSecurityEngine();
+        
+        ValidatorData data = new ValidatorData(rmd);
+        
+        if(rpd.isSymmetricBinding()) {
+            //Here we have to create the CB handler to get the tokens from the 
+            //token storage
+            
+            results = engine.processSecurityHeader(rmd.getDocument(), 
+                                null, 
+                                new TokenCallbackHandler(rmd.getTokenStorage(), RampartUtil.getPasswordCB(rmd)),
+                                RampartUtil.getSignatureCrypto(rpd.getRampartConfig(), 
+                                        msgCtx.getAxisService().getClassLoader()));
+        } else {
+            results = engine.processSecurityHeader(rmd.getDocument(),
+                      null, 
+                      new TokenCallbackHandler(rmd.getTokenStorage(), RampartUtil.getPasswordCB(rmd)),
+                      RampartUtil.getSignatureCrypto(rpd.getRampartConfig(), 
+                              msgCtx.getAxisService().getClassLoader()), 
+                      RampartUtil.getEncryptionCrypto(rpd.getRampartConfig(), 
+                              msgCtx.getAxisService().getClassLoader()));
+        }
+        
+
+        SOAPEnvelope env = Axis2Util.getSOAPEnvelopeFromDOOMDocument(rmd.getDocument());
+
+        //Convert back to llom since the inflow cannot use DOOM
+        msgCtx.setEnvelope(env);
+        Axis2Util.useDOOM(false);
+
+        PolicyBasedResultsValidator validator = new PolicyBasedResultsValidator();
+        validator.validate(data, results);
+        
+        return results;
+    }
+
+
+
+    
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/RampartException.java b/rampart_1_1/modules/security/src/org/apache/rampart/RampartException.java
new file mode 100644
index 0000000..f76de9c
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/RampartException.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class RampartException extends Exception {
+    
+    private static final long serialVersionUID = 8674795537585339704L;
+
+    private static ResourceBundle resources;
+
+    private String faultCode;
+    private String faultString;
+    
+    static {
+        try {
+            resources = ResourceBundle.getBundle("org.apache.rampart.errors");
+        } catch (MissingResourceException e) {
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+    
+    public RampartException(String faultCode, Object[] args) {
+        super(getMessage(faultCode, args));
+        this.faultCode = getFaultCode(faultCode);
+        this.faultString = getMessage(faultCode, args);
+    }
+    
+    /**
+     * Construct the fault properly code for the standard faults
+     * @param faultCode2
+     * @return
+     */
+    private String getFaultCode(String code) {
+        //TODO check for spec specific error codes
+        return code;
+    }
+
+    public RampartException(String faultCode) {
+        this(faultCode, (Object[])null);
+    }
+    
+    public RampartException(String faultCode, Object[] args, Throwable e) {
+        super(getMessage(faultCode, args),e);
+        this.faultCode = faultCode;
+        this.faultString = getMessage(faultCode, args);
+    }
+    
+    public RampartException(String faultCode, Throwable e) {
+        this(faultCode, null, e);
+    }
+
+    /**
+     * get the message from resource bundle.
+     * <p/>
+     *
+     * @return the message translated from the property (message) file.
+     */
+    protected static String getMessage(String faultCode, Object[] args) {
+        String msg = null;
+        try {
+            msg = MessageFormat.format(resources.getString(faultCode), args);
+        } catch (MissingResourceException e) {
+            throw new RuntimeException("Undefined '" + faultCode + "' resource property");
+        }
+        return msg;
+    }
+
+    /**
+     * @return Returns the faultCode.
+     */
+    protected String getFaultCode() {
+        return faultCode;
+    }
+
+    /**
+     * @return Returns the faultString.
+     */
+    protected String getFaultString() {
+        return faultString;
+    }
+    
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/RampartMessageData.java b/rampart_1_1/modules/security/src/org/apache/rampart/RampartMessageData.java
new file mode 100644
index 0000000..d0088a1
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/RampartMessageData.java
@@ -0,0 +1,624 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.SimpleTokenStore;
+import org.apache.rahas.TokenStorage;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.policy.RampartPolicyBuilder;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.policy.model.RampartConfig;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.security.SOAPConstants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSConfig;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.conversation.ConversationConstants;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+import org.apache.ws.security.message.WSSecHeader;
+import org.apache.ws.security.util.Loader;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.w3c.dom.Document;
+
+import javax.xml.namespace.QName;
+
+import java.util.List;
+import java.util.Vector;
+
+public class RampartMessageData {
+    
+    /**
+     * Axis2 parameter name to be used in the client's axis2 xml
+     */
+    public final static String KEY_RAMPART_POLICY = "rampartPolicy";
+    
+    /**
+     * Key to hold the address of the issuer in the msg ctx.
+     */
+    public final static String KEY_ISSUER_ADDRESS = "issuerAddress";
+    
+    /**
+     * Key to hold the WS-Trust version
+     */
+    public final static String KEY_WST_VERSION = "wstVersion";
+
+    /**
+     * Key to hold the WS-SecConv version
+     */
+    public final static String KEY_WSSC_VERSION = "wscVersion";
+
+    public static final String KEY_SCT_ISSUER_POLICY = "sct-issuer-policy";
+    
+    public final static String CANCEL_REQUEST = "cancelrequest";
+    
+    public final static String SCT_ID = "sctID";
+    
+    private MessageContext msgContext = null;
+
+    private RampartPolicyData policyData = null;
+
+    private WSSecHeader secHeader = null;
+
+    private WSSConfig config = null;
+    
+    private int timeToLive = 300;
+    
+    private String timestampId;
+    
+    private Document document;
+
+    private TokenStorage tokenStorage;
+    
+    /**
+     * WS-Trust version to use.
+     * 
+     * Pissible values:
+     * RahasConstants.VERSION_05_02
+     * RahasConstants.VERSION_05_12
+     */
+    
+    private int wstVersion = RahasConstants.VERSION_05_02;
+    
+    private int secConvVersion = ConversationConstants.DEFAULT_VERSION;
+    
+    /*
+     * IssuedTokens or SecurityContextTokens can be used
+     * as the encryption token, signature token,
+     */
+    private String issuedEncryptionTokenId;
+    
+    private String issuedSignatureTokenId;
+    
+    /**
+     * The service policy extracted from the message context.
+     * If policy is specified in the RampartConfig <b>this</b> will take precedence
+     */
+    private Policy servicePolicy;
+
+    private boolean isClientSide;
+    
+    private boolean sender;
+    
+    private ClassLoader customClassLoader;
+    
+    private SOAPConstants soapConstants;
+
+    public RampartMessageData(MessageContext msgCtx, boolean sender) throws RampartException {
+        
+        this.msgContext = msgCtx;
+        
+        try {
+            
+            /*
+             * First get the SOAP envelope as document, then create a security
+             * header and insert into the document (Envelope)
+             */
+            this.document = Axis2Util.getDocumentFromSOAPEnvelope(msgCtx.getEnvelope(), false);
+            msgCtx.setEnvelope((SOAPEnvelope)this.document.getDocumentElement());
+            
+            this.soapConstants = WSSecurityUtil.getSOAPConstants(this.document.getDocumentElement());
+            
+            //Extract known properties from the msgCtx
+            
+            if(msgCtx.getProperty(KEY_WST_VERSION) != null) {
+                this.wstVersion = TrustUtil.getWSTVersion((String)msgCtx.getProperty(KEY_WST_VERSION));
+            }
+            
+            if(msgCtx.getProperty(KEY_WSSC_VERSION) != null) {
+                this.secConvVersion = TrustUtil.getWSTVersion((String)msgCtx.getProperty(KEY_WSSC_VERSION));
+            }
+            
+            //If the policy is already available in the service, then use it
+            
+            String operationPolicyKey = getOperationPolicyKey(msgCtx);
+            if(msgCtx.getProperty(operationPolicyKey) != null) {
+                this.servicePolicy = (Policy)msgCtx.getProperty(operationPolicyKey);
+            } 
+            
+            String svcPolicyKey = getServicePolicyKey(msgCtx);
+            if(this.servicePolicy == null && msgCtx.getProperty(svcPolicyKey) != null) {
+                this.servicePolicy = (Policy)msgCtx.getProperty(svcPolicyKey);
+            }
+            
+            if(msgCtx.getProperty(KEY_RAMPART_POLICY) != null) {
+                this.servicePolicy = (Policy)msgCtx.getProperty(KEY_RAMPART_POLICY);
+            }
+            
+            /*
+             * Init policy:
+             * When creating the RampartMessageData instance we 
+             * extract the service policy is set in the msgCtx.
+             * If it is missing then try to obtain from the configuration files.
+             */
+            if(this.servicePolicy == null) {
+                if(msgCtx.isServerSide()) {
+                    this.servicePolicy = msgCtx.getEffectivePolicy();
+                } else {
+                    Parameter param = msgCtx.getParameter(RampartMessageData.KEY_RAMPART_POLICY);
+                    if(param != null) {
+                        OMElement policyElem = param.getParameterElement().getFirstElement();
+                        this.servicePolicy = PolicyEngine.getPolicy(policyElem);
+                    }
+
+                    //Set the policy in the config ctx
+                    msgCtx.getConfigurationContext().setProperty(
+                            RampartMessageData.getOperationPolicyKey(msgCtx), this.servicePolicy);
+                }
+                
+            }
+            
+            if(!msgCtx.isServerSide() && this.servicePolicy != null) {
+                msgCtx.getServiceContext().setProperty(RampartMessageData.KEY_RAMPART_POLICY, this.servicePolicy);
+            }
+            
+            if(this.servicePolicy != null){
+                List it = (List)this.servicePolicy.getAlternatives().next();
+
+                //Process policy and build policy data
+                this.policyData = RampartPolicyBuilder.build(it);
+            }
+            
+            
+            if(isClientSide && this.policyData != null && this.policyData.getRampartConfig() == null) {
+                //We'r missing the extra info rampart needs
+                throw new RampartException("rampartConigMissing");
+            }
+            
+            if(this.policyData != null) {
+                
+                //Check for RST and RSTR for an SCT
+                if((WSSHandlerConstants.RST_ACTON_SCT.equals(msgContext.getWSAAction())
+                        || WSSHandlerConstants.RSTR_ACTON_SCT.equals(msgContext.getWSAAction())) &&
+                        this.policyData.getIssuerPolicy() != null) {
+                    
+                    this.servicePolicy = this.policyData.getIssuerPolicy();
+                    
+                    RampartConfig rampartConfig = policyData.getRampartConfig();
+                    /*
+                     * Copy crypto info from the into the new issuer policy 
+                     */
+                    RampartConfig rc = new RampartConfig();
+                    rc.setEncrCryptoConfig(rampartConfig.getEncrCryptoConfig());
+                    rc.setSigCryptoConfig(rampartConfig.getSigCryptoConfig());
+                    rc.setDecCryptoConfig(rampartConfig.getDecCryptoConfig());
+                    rc.setUser(rampartConfig.getUser());
+                    rc.setEncryptionUser(rampartConfig.getEncryptionUser());
+                    rc.setPwCbClass(rampartConfig.getPwCbClass());
+                    
+                    this.servicePolicy.addAssertion(rc);
+                    
+                    List it = (List)this.servicePolicy.getAlternatives().next();
+    
+                    //Process policy and build policy data
+                    this.policyData = RampartPolicyBuilder.build(it);
+                }
+            }
+            
+            this.isClientSide = !msgCtx.isServerSide();
+            this.sender = sender;
+            
+            OperationContext opCtx = this.msgContext.getOperationContext();
+            
+            if(!this.isClientSide && this.sender) {
+                //Get hold of the incoming msg ctx
+                MessageContext inMsgCtx;
+                if (opCtx != null
+                        && (inMsgCtx = opCtx
+                                .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)) != null
+                                && msgContext.getProperty(WSHandlerConstants.RECV_RESULTS) == null) {
+                    msgContext.setProperty(WSHandlerConstants.RECV_RESULTS, 
+                            inMsgCtx.getProperty(WSHandlerConstants.RECV_RESULTS));
+                    
+                    //If someone set the sct_id externally use it at the receiver
+                    msgContext.setProperty(SCT_ID, inMsgCtx.getProperty(SCT_ID));
+                }
+            }
+            
+            if(this.isClientSide && !this.sender) {
+                MessageContext outMsgCtx;
+                if (opCtx != null
+                        && (outMsgCtx = opCtx
+                                .getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE)) != null) {
+                    
+                    //If someone set the sct_id externally use it at the receiver
+                    msgContext.setProperty(SCT_ID, outMsgCtx.getProperty(SCT_ID));
+                }
+            }
+            
+            this.config = WSSConfig.getDefaultWSConfig();
+
+            this.customClassLoader = msgCtx.getAxisService().getClassLoader();
+            
+            if(this.policyData != null) {
+                this.secHeader = new WSSecHeader();
+                secHeader.insertSecurityHeader(this.document);
+            }
+            
+        } catch (TrustException e) {
+            throw new RampartException("errorInExtractingMsgProps", e);
+        } catch (AxisFault e) {
+            throw new RampartException("errorInExtractingMsgProps", e);
+        } catch (WSSPolicyException e) {
+            throw new RampartException("errorInExtractingMsgProps", e);
+        } catch (WSSecurityException e) {
+            throw new RampartException("errorInExtractingMsgProps", e);
+        }
+        
+    }
+
+    /**
+     * @return Returns the document.
+     */
+    public Document getDocument() {
+        return document;
+    }
+
+    /**
+     * @param document The document to set.
+     */
+    public void setDocument(Document document) {
+        this.document = document;
+    }
+
+    /**
+     * @return Returns the timeToLive.
+     */
+    public int getTimeToLive() {
+        return timeToLive;
+    }
+
+    /**
+     * @param timeToLive The timeToLive to set.
+     */
+    public void setTimeToLive(int timeToLive) {
+        this.timeToLive = timeToLive;
+    }
+
+    /**
+     * @return Returns the config.
+     */
+    public WSSConfig getConfig() {
+        return config;
+    }
+
+    /**
+     * @param config
+     *            The config to set.
+     */
+    public void setConfig(WSSConfig config) {
+        this.config = config;
+    }
+
+    /**
+     * @return Returns the msgContext.
+     */
+    public MessageContext getMsgContext() {
+        return msgContext;
+    }
+
+    /**
+     * @param msgContext
+     *            The msgContext to set.
+     */
+    public void setMsgContext(MessageContext msgContext) {
+        this.msgContext = msgContext;
+    }
+
+    /**
+     * @return Returns the policyData.
+     */
+    public RampartPolicyData getPolicyData() {
+        return policyData;
+    }
+
+    /**
+     * @param policyData
+     *            The policyData to set.
+     */
+    public void setPolicyData(RampartPolicyData policyData) throws RampartException {
+        this.policyData = policyData;
+        
+        try {
+            //if client side then check whether sig conf enabled 
+            //and get hold of the stored signature values
+            if(this.isClientSide && !this.sender && policyData.isSignatureConfirmation()) {
+                OperationContext opCtx = msgContext.getOperationContext();
+                MessageContext outMsgCtx = opCtx
+                        .getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+                msgContext.setProperty(WSHandlerConstants.SEND_SIGV, outMsgCtx
+                        .getProperty(WSHandlerConstants.SEND_SIGV));
+            }
+        } catch (AxisFault e) {
+            throw new RampartException("errorGettingSignatureValuesForSigconf", e);
+        }
+    }
+
+    /**
+     * @return Returns the secHeader.
+     */
+    public WSSecHeader getSecHeader() {
+        return secHeader;
+    }
+
+    /**
+     * @param secHeader
+     *            The secHeader to set.
+     */
+    public void setSecHeader(WSSecHeader secHeader) {
+        this.secHeader = secHeader;
+    }
+
+    /**
+     * @return Returns the issuedEncryptionTokenId.
+     */
+    public String getIssuedEncryptionTokenId() {
+        return issuedEncryptionTokenId;
+    }
+
+    /**
+     * @param issuedEncryptionTokenId The issuedEncryptionTokenId to set.
+     */
+    public void setIssuedEncryptionTokenId(String issuedEncryptionTokenId) {
+        this.issuedEncryptionTokenId = issuedEncryptionTokenId;
+    }
+
+    /**
+     * @return Returns the issuedSignatureTokenId.
+     */
+    public String getIssuedSignatureTokenId() {
+        return issuedSignatureTokenId;
+    }
+
+    /**
+     * @param issuedSignatureTokenId The issuedSignatureTokenId to set.
+     */
+    public void setIssuedSignatureTokenId(String issuedSignatureTokenId) {
+        this.issuedSignatureTokenId = issuedSignatureTokenId;
+    }
+
+    /**
+     * @return Returns the secConvTokenId.
+     */
+    public String getSecConvTokenId() {
+        String id = null;
+        
+        if(this.isClientSide) {
+            String contextIdentifierKey = RampartUtil.getContextIdentifierKey(this.msgContext);
+            id = (String) RampartUtil.getContextMap(this.msgContext).get(contextIdentifierKey);
+        } else {
+            //get the sec context id from the req msg ctx
+            Vector results = (Vector)this.msgContext.getProperty(WSHandlerConstants.RECV_RESULTS);
+            for (int i = 0; i < results.size(); i++) {
+                WSHandlerResult rResult = (WSHandlerResult) results.get(i);
+                Vector wsSecEngineResults = rResult.getResults();
+
+                for (int j = 0; j < wsSecEngineResults.size(); j++) {
+                    WSSecurityEngineResult wser = (WSSecurityEngineResult) wsSecEngineResults
+                            .get(j);
+                    if(WSConstants.SCT == wser.getAction()) {
+                        id = wser.getSecurityContextToken().getID();
+                    }
+
+                }
+            }
+        }
+
+        if(id == null || id.length() == 0) {
+            //If we can't find the sec conv token id up to this point then
+            //check if someone has specified which one to use
+            id = (String)this.msgContext.getProperty(SCT_ID);
+        }
+        
+        return id;
+    }
+
+    /**
+     * @param secConvTokenId The secConvTokenId to set.
+     */
+    public void setSecConvTokenId(String secConvTokenId) {
+        String contextIdentifierKey = RampartUtil.getContextIdentifierKey(this.msgContext);
+        RampartUtil.getContextMap(this.msgContext).put(
+                                                    contextIdentifierKey,
+                                                    secConvTokenId);
+    }
+
+
+    
+    /**
+     * @return Returns the tokenStorage.
+     */
+    public TokenStorage getTokenStorage() throws RampartException {
+
+        if(this.tokenStorage != null) {
+            return this.tokenStorage;
+        }
+
+        TokenStorage storage = (TokenStorage) this.msgContext.getProperty(
+                        TokenStorage.TOKEN_STORAGE_KEY);
+
+        if (storage != null) {
+            this.tokenStorage = storage;
+        } else {
+
+            String storageClass = this.policyData.getRampartConfig()
+                    .getTokenStoreClass();
+    
+            if (storageClass != null) {
+                Class stClass = null;
+                try {
+                    stClass = Loader.loadClass(msgContext.getAxisService()
+                            .getClassLoader(), storageClass);
+                } catch (ClassNotFoundException e) {
+                    throw new RampartException(
+                            "WSHandler: cannot load token storage class: "
+                                    + storageClass, e);
+                }
+                try {
+                    this.tokenStorage = (TokenStorage) stClass.newInstance();
+                } catch (java.lang.Exception e) {
+                    throw new RampartException(
+                            "Cannot create instance of token storage: "
+                                    + storageClass, e);
+                }
+            } else {
+                this.tokenStorage = new SimpleTokenStore();
+                
+            }
+            
+            //Set the storage instance
+            this.msgContext.getConfigurationContext().setProperty(
+                    TokenStorage.TOKEN_STORAGE_KEY, this.tokenStorage);
+        }
+        
+        
+        return tokenStorage;
+    }
+
+    /**
+     * @param tokenStorage The tokenStorage to set.
+     */
+    public void setTokenStorage(TokenStorage tokenStorage) {
+        this.tokenStorage = tokenStorage;
+    }
+
+    /**
+     * @return Returns the wstVerion.
+     */
+    public int getWstVersion() {
+        return wstVersion;
+    }
+
+    /**
+     * @param wstVerion The wstVerion to set.
+     */
+    public void setWstVersion(int wstVerion) {
+        this.wstVersion = wstVerion;
+    }
+
+    /**
+     * @return Returns the secConvVersion.
+     */
+    public int getSecConvVersion() {
+        return secConvVersion;
+    }
+
+    /**
+     * @return Returns the servicePolicy.
+     */
+    public Policy getServicePolicy() {
+        return servicePolicy;
+    }
+
+    /**
+     * @param servicePolicy The servicePolicy to set.
+     */
+    public void setServicePolicy(Policy servicePolicy) {
+        this.servicePolicy = servicePolicy;
+    }
+    
+    /**
+     * @param msgCtx
+     * @return The key to store/pickup policy of an operation
+     */
+    public static String getOperationPolicyKey(MessageContext msgCtx) {
+        if(msgCtx.getAxisOperation() != null) {
+            return createPolicyKey(msgCtx.getAxisService().getName(), 
+                                msgCtx.getAxisOperation().getName());
+            
+        }
+        return null;
+    }
+
+    public static String getServicePolicyKey(MessageContext msgCtx) {
+        return  createPolicyKey(msgCtx.getAxisService().getName(), null);
+    }
+    
+    public static String createPolicyKey(String service, QName operation) {
+        if(operation != null) {
+            return RampartMessageData.KEY_RAMPART_POLICY + service
+                    + "{" + operation.getNamespaceURI() + "}"
+                    + operation.getLocalPart();
+        } else {
+            return RampartMessageData.KEY_RAMPART_POLICY + service;
+        }
+    }
+    
+    /**
+     * @return Returns the timestampId.
+     */
+    public String getTimestampId() {
+        return timestampId;
+    }
+
+    /**
+     * @param timestampId The timestampId to set.
+     */
+    public void setTimestampId(String timestampId) {
+        this.timestampId = timestampId;
+    }
+
+    /**
+     * @return Returns the isClientSide.
+     */
+    public boolean isClientSide() {
+        return isClientSide;
+    }
+
+    public ClassLoader getCustomClassLoader() {
+        return customClassLoader;
+    }
+
+    public SOAPConstants getSoapConstants() {
+        return soapConstants;
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/TokenCallbackHandler.java b/rampart_1_1/modules/security/src/org/apache/rampart/TokenCallbackHandler.java
new file mode 100644
index 0000000..c1ea6f1
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/TokenCallbackHandler.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.rahas.Token;
+import org.apache.rahas.TokenStorage;
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+
+public class TokenCallbackHandler implements CallbackHandler {
+
+    private TokenStorage store;
+    private CallbackHandler handler;
+    
+    public TokenCallbackHandler(TokenStorage store, CallbackHandler handler) {
+        this.store = store;
+        this.handler = handler;
+    }
+    
+    public void handle(Callback[] callbacks) 
+    throws IOException, UnsupportedCallbackException {
+        
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+                if(pc.getUsage() == WSPasswordCallback.SECURITY_CONTEXT_TOKEN &&
+                        this.store != null) {
+                    String id = pc.getIdentifer();
+                    Token tok;
+                    try {
+                        //Pick up the token from the token store
+                        tok = this.store.getToken(id);
+                        if(tok != null) {
+                            //Get the secret and set it in the callback object
+                            pc.setKey(tok.getSecret());
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        throw new IOException(e.getMessage());
+                    }
+                } else {
+                    //Handle other types of callbacks with the usual handler
+                    if(this.handler != null) {
+                        handler.handle(new Callback[]{pc});
+                    }
+                }
+
+            } else {
+                throw new UnsupportedCallbackException(callbacks[i],
+                        "Unrecognized Callback");
+            }
+        }
+    }
+    
+
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/ValidatorData.java b/rampart_1_1/modules/security/src/org/apache/rampart/ValidatorData.java
new file mode 100644
index 0000000..57b096a
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/ValidatorData.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.apache.xml.security.utils.EncryptionConstants;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import java.util.ArrayList;
+
+public class ValidatorData {
+
+    private RampartMessageData rmd;
+    ArrayList encryptedDataRefIds = new ArrayList();
+    private String bodyEncrDataId;
+    
+    public ValidatorData(RampartMessageData rmd) {
+        this.rmd = rmd;
+        this.extractEncryptedPartInformation();
+    }
+    
+    private void extractEncryptedPartInformation() {
+        Node start = rmd.getDocument().getDocumentElement();
+        while(start != null) {
+            Element elem = (Element) WSSecurityUtil.findElement(start, 
+                    EncryptionConstants._TAG_ENCRYPTEDDATA, WSConstants.ENC_NS);
+            if(elem != null) {
+                Element parentElem = (Element)elem.getParentNode();
+                if(parentElem != null && parentElem.getLocalName().equals(SOAP11Constants.BODY_LOCAL_NAME) &&
+                        parentElem.getNamespaceURI().equals(rmd.getSoapConstants().getEnvelopeURI())) {
+                    this.bodyEncrDataId = elem.getAttribute("Id");
+                } else {
+                    encryptedDataRefIds.add(elem.getAttribute("Id"));
+                }
+                
+                if(elem.getNextSibling() != null) {
+                    start = elem.getNextSibling();
+                } else {
+                    start = elem.getParentNode().getNextSibling();
+                }
+            } else {
+                if(start.getNextSibling() != null) {
+                    start = start.getNextSibling();
+                } else {
+                    start = start.getParentNode().getNextSibling();
+                }
+            }
+            
+        }
+        
+    }
+
+    public ArrayList getEncryptedDataRefIds() {
+        return encryptedDataRefIds;
+    }
+
+    public RampartMessageData getRampartMessageData() {
+        return rmd;
+    }
+
+    public String getBodyEncrDataId() {
+        return bodyEncrDataId;
+    }
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/builder/AsymmetricBindingBuilder.java b/rampart_1_1/modules/security/src/org/apache/rampart/builder/AsymmetricBindingBuilder.java
new file mode 100644
index 0000000..e02a1ab
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/builder/AsymmetricBindingBuilder.java
@@ -0,0 +1,585 @@
+/*
+ * Copyright 2004,2005 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.rampart.builder;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.rahas.TrustException;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.RampartMessageData;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.policy.model.RampartConfig;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.Token;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSEncryptionPart;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.conversation.ConversationException;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.message.WSSecDKEncrypt;
+import org.apache.ws.security.message.WSSecDKSign;
+import org.apache.ws.security.message.WSSecEncrypt;
+import org.apache.ws.security.message.WSSecEncryptedKey;
+import org.apache.ws.security.message.WSSecSignature;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Vector;
+
+public class AsymmetricBindingBuilder extends BindingBuilder {
+
+    private static Log log = LogFactory.getLog(AsymmetricBindingBuilder.class);
+
+    private Token sigToken;
+
+    private WSSecSignature sig;
+
+    private WSSecEncryptedKey encrKey;
+    
+    private String encryptedKeyId;
+    
+    private byte[] encryptedKeyValue;
+
+    private Vector signatureValues = new Vector();
+
+    private Element encrTokenElement;
+    
+    private Element sigDKTElement;
+    
+    private Element encrDKTElement;
+
+    private Vector sigParts = new Vector();
+    
+    private Element signatureElement; 
+
+    public void build(RampartMessageData rmd) throws RampartException {
+        log.debug("AsymmetricBindingBuilder build invoked");
+
+        RampartPolicyData rpd = rmd.getPolicyData();
+        if (rpd.isIncludeTimestamp()) {
+            this.addTimestamp(rmd);
+        }
+
+        if (Constants.ENCRYPT_BEFORE_SIGNING.equals(rpd.getProtectionOrder())) {
+            this.doEncryptBeforeSig(rmd);
+        } else {
+            this.doSignBeforeEncrypt(rmd);
+        }
+
+        log.debug("AsymmetricBindingBuilder build invoked : DONE");
+    }
+
+    private void doEncryptBeforeSig(RampartMessageData rmd)
+            throws RampartException {
+
+        RampartPolicyData rpd = rmd.getPolicyData();
+        Document doc = rmd.getDocument();
+        RampartConfig config = rpd.getRampartConfig();
+
+        /*
+         * We need to hold on to these two element to use them as refence in the
+         * case of encypting the signature
+         */
+        Element encrDKTokenElem = null;
+        WSSecEncrypt encr = null;
+        Element refList = null;
+        WSSecDKEncrypt dkEncr = null;
+
+        /*
+         * We MUST use keys derived from the same token
+         */
+        Token encryptionToken = rpd.getRecipientToken();
+        Vector encrParts = RampartUtil.getEncryptedParts(rmd);
+
+        if(encryptionToken == null && encrParts.size() > 0) {
+            throw new RampartException("encryptionTokenMissing");
+        }
+        
+        if (encryptionToken != null && encrParts.size() > 0) {
+            if (encryptionToken.isDerivedKeys()) {
+                try {
+                    this.setupEncryptedKey(rmd, encryptionToken);
+                    // Create the DK encryption builder
+                    dkEncr = new WSSecDKEncrypt();
+                    dkEncr.setParts(encrParts);
+                    dkEncr.setExternalKey(this.encryptedKeyValue, 
+                            this.encryptedKeyId);
+                    dkEncr.prepare(doc);
+
+                    // Get and add the DKT element
+                    this.encrDKTElement = dkEncr.getdktElement();
+                    encrDKTokenElem = RampartUtil.appendChildToSecHeader(rmd, this.encrDKTElement);
+
+                    refList = dkEncr.encryptForExternalRef(null, encrParts);
+
+                } catch (WSSecurityException e) {
+                    throw new RampartException("errorCreatingEncryptedKey", e);
+                } catch (ConversationException e) {
+                    throw new RampartException("errorInDKEncr", e);
+                }
+            } else {
+                try {
+                    encr = new WSSecEncrypt();
+                    encr.setParts(encrParts);
+                    encr.setWsConfig(rmd.getConfig());
+                    encr.setDocument(doc);
+                    RampartUtil.setEncryptionUser(rmd, encr);
+                    encr.setSymmetricEncAlgorithm(rpd.getAlgorithmSuite().getEncryption());
+                    encr.setKeyEncAlgo(rpd.getAlgorithmSuite().getAsymmetricKeyWrap());
+                    encr.prepare(doc, RampartUtil.getEncryptionCrypto(config, rmd.getCustomClassLoader()));
+
+                    Element bstElem = encr.getBinarySecurityTokenElement();
+                    if (bstElem != null) {
+                        RampartUtil.appendChildToSecHeader(rmd, bstElem);
+                    }
+
+                    this.encrTokenElement = encr.getEncryptedKeyElement();
+                    this.encrTokenElement = RampartUtil.appendChildToSecHeader(rmd,
+                            encrTokenElement);
+
+                    refList = encr.encryptForExternalRef(null, encrParts);
+
+                } catch (WSSecurityException e) {
+                    throw new RampartException("errorInEncryption", e);
+                }
+            }
+
+            RampartUtil.appendChildToSecHeader(rmd, refList);
+
+            this.setInsertionLocation(encrTokenElement);
+
+            HashMap sigSuppTokMap = null;
+            HashMap endSuppTokMap = null;
+            HashMap sgndEndSuppTokMap = null;
+            this.sigParts = RampartUtil.getSignedParts(rmd);
+            sigParts.add(new WSEncryptionPart(RampartUtil
+                    .addWsuIdToElement((OMElement) this.timestampElement)));
+
+            if (rmd.isClientSide()) {
+
+                // Now add the supporting tokens
+                SupportingToken sgndSuppTokens = rpd
+                        .getSignedSupportingTokens();
+
+                sigSuppTokMap = this
+                        .handleSupportingTokens(rmd, sgndSuppTokens);
+
+                SupportingToken endSuppTokens = rpd
+                        .getEndorsingSupportingTokens();
+
+                endSuppTokMap = this.handleSupportingTokens(rmd, endSuppTokens);
+
+                SupportingToken sgndEndSuppTokens = rpd
+                        .getSignedEndorsingSupportingTokens();
+
+                sgndEndSuppTokMap = this.handleSupportingTokens(rmd,
+                        sgndEndSuppTokens);
+
+                // Setup signature parts
+                sigParts = addSignatureParts(sigSuppTokMap, sigParts);
+                sigParts = addSignatureParts(sgndEndSuppTokMap, sigParts);
+            } else {
+                addSignatureConfirmation(rmd, sigParts);
+            }
+            
+            if(rpd.getInitiatorToken() != null) {
+                this.doSignature(rmd);
+            }
+
+            if (rmd.isClientSide()) {
+                // Do endorsed signatures
+                Vector endSigVals = this.doEndorsedSignatures(rmd,
+                        endSuppTokMap);
+                for (Iterator iter = endSigVals.iterator(); iter.hasNext();) {
+                    signatureValues.add(iter.next());
+                }
+
+                // Do signed endorsing signatures
+                Vector sigEndSigVals = this.doEndorsedSignatures(rmd,
+                        sgndEndSuppTokMap);
+                for (Iterator iter = sigEndSigVals.iterator(); iter.hasNext();) {
+                    signatureValues.add(iter.next());
+                }
+            }
+
+            // Check for signature protection
+            if (rpd.isSignatureProtection() && this.mainSigId != null) {
+
+                Vector secondEncrParts = new Vector();
+
+                // Now encrypt the signature using the above token
+                secondEncrParts.add(new WSEncryptionPart(this.mainSigId,
+                        "Element"));
+
+                Element secondRefList = null;
+
+                if (encryptionToken.isDerivedKeys()) {
+                    try {
+
+                        secondRefList = dkEncr.encryptForExternalRef(null,
+                                secondEncrParts);
+                        RampartUtil.insertSiblingAfter(rmd, encrDKTokenElem,
+                                secondRefList);
+
+                    } catch (WSSecurityException e) {
+                        throw new RampartException("errorCreatingEncryptedKey",
+                                e);
+                    }
+                } else {
+                    try {
+                        // Encrypt, get hold of the ref list and add it
+                        secondRefList = encr.encryptForExternalRef(null,
+                                encrParts);
+
+                        // Insert the ref list after the encrypted key elem
+                        this.setInsertionLocation(RampartUtil
+                                .insertSiblingAfter(rmd, encrTokenElement,
+                                        secondRefList));
+                    } catch (WSSecurityException e) {
+                        throw new RampartException("errorInEncryption", e);
+                    }
+                }
+            }
+        }
+
+    }
+
+    private void doSignBeforeEncrypt(RampartMessageData rmd)
+            throws RampartException {
+        RampartPolicyData rpd = rmd.getPolicyData();
+        Document doc = rmd.getDocument();
+
+        HashMap sigSuppTokMap = null;
+        HashMap endSuppTokMap = null;
+        HashMap sgndEndSuppTokMap = null;
+        sigParts = RampartUtil.getSignedParts(rmd);
+        
+        //Add timestamp
+        sigParts.add(new WSEncryptionPart(RampartUtil
+                .addWsuIdToElement((OMElement) this.timestampElement)));
+
+        if (rmd.isClientSide()) {
+            // Now add the supporting tokens
+            SupportingToken sgndSuppTokens = rpd.getSignedSupportingTokens();
+
+            sigSuppTokMap = this.handleSupportingTokens(rmd, sgndSuppTokens);
+
+            SupportingToken endSuppTokens = rpd.getEndorsingSupportingTokens();
+
+            endSuppTokMap = this.handleSupportingTokens(rmd, endSuppTokens);
+
+            SupportingToken sgndEndSuppTokens = rpd
+                    .getSignedEndorsingSupportingTokens();
+
+            sgndEndSuppTokMap = this.handleSupportingTokens(rmd,
+                    sgndEndSuppTokens);
+
+            // Setup signature parts
+            sigParts = addSignatureParts(sigSuppTokMap, sigParts);
+            sigParts = addSignatureParts(sgndEndSuppTokMap, sigParts);
+        } else {
+            addSignatureConfirmation(rmd, sigParts);
+        }
+
+        if(rpd.getInitiatorToken() != null) {
+            // Do signature
+            this.doSignature(rmd);
+        }
+        
+        //Do endorsed signature
+
+        if (rmd.isClientSide()) {
+            // Do endorsed signatures
+            Vector endSigVals = this.doEndorsedSignatures(rmd,
+                    endSuppTokMap);
+            for (Iterator iter = endSigVals.iterator(); iter.hasNext();) {
+                signatureValues.add(iter.next());
+            }
+
+            // Do signed endorsing signatures
+            Vector sigEndSigVals = this.doEndorsedSignatures(rmd,
+                    sgndEndSuppTokMap);
+            for (Iterator iter = sigEndSigVals.iterator(); iter.hasNext();) {
+                signatureValues.add(iter.next());
+            }
+        }
+        
+        Vector encrParts = RampartUtil.getEncryptedParts(rmd);
+        
+        //Check for signature protection
+        if(rpd.isSignatureProtection() && this.mainSigId != null) {
+            encrParts.add(new WSEncryptionPart(RampartUtil.addWsuIdToElement((OMElement)this.signatureElement), "Element"));
+        }
+        
+        //Do encryption
+        Token encrToken = rpd.getRecipientToken();
+        if(encrToken != null && encrParts.size() > 0) {
+            Element refList = null;
+            if(encrToken.isDerivedKeys()) {
+                
+                try {
+                    WSSecDKEncrypt dkEncr = new WSSecDKEncrypt();
+                    
+                    if(this.encrKey == null) {
+                        this.setupEncryptedKey(rmd, encrToken);
+                    }
+                    
+                    dkEncr.setExternalKey(this.encryptedKeyValue, this.encryptedKeyId);
+                    dkEncr.setSymmetricEncAlgorithm(rpd.getAlgorithmSuite().getEncryption());
+                    dkEncr.prepare(doc);
+                    
+                    
+                    if(this.encrTokenElement != null) {
+                        this.encrDKTElement = RampartUtil.insertSiblingAfter(
+                                rmd, this.encrTokenElement, dkEncr.getdktElement());
+                    } else {
+                        this.encrDKTElement = RampartUtil.insertSiblingBefore(
+                                rmd, this.sigDKTElement, dkEncr.getdktElement());
+                    }
+                    
+                    refList = dkEncr.encryptForExternalRef(null, encrParts);
+                    
+                    RampartUtil.insertSiblingAfter(rmd, 
+                                                    this.encrDKTElement, 
+                                                    refList);
+                                                    
+                } catch (WSSecurityException e) {
+                    throw new RampartException("errorInDKEncr");
+                } catch (ConversationException e) {
+                    throw new RampartException("errorInDKEncr");
+                }
+            } else {
+                try {
+                    
+                    WSSecEncrypt encr = new WSSecEncrypt();
+                    
+                    
+                    if(encrToken.getInclusion().equals(Constants.INCLUDE_NEVER)) {
+                        if(rpd.getWss10() != null && rpd.getWss10().isMustSupportRefKeyIdentifier()) {
+                            encr.setKeyIdentifierType(WSConstants.SKI_KEY_IDENTIFIER);
+                        } else if(rpd.getWss11() != null && rpd.getWss11().isMustSupportRefThumbprint()) {
+                            encr.setKeyIdentifierType(WSConstants.THUMBPRINT_IDENTIFIER);
+                        }
+                    } else {
+                        encr.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE);
+                    }
+                    
+                    encr.setWsConfig(rmd.getConfig());
+                    
+                    encr.setDocument(doc);
+                    RampartUtil.setEncryptionUser(rmd, encr);
+                    encr.setSymmetricEncAlgorithm(rpd.getAlgorithmSuite().getEncryption());
+                    encr.setKeyEncAlgo(rpd.getAlgorithmSuite().getAsymmetricKeyWrap());
+                    encr.prepare(doc, RampartUtil.getEncryptionCrypto(rpd
+                            .getRampartConfig(), rmd.getCustomClassLoader()));
+                    
+                    this.setInsertionLocation(this.timestampElement);
+                    if(encr.getBSTTokenId() != null) {
+                        this.setInsertionLocation(RampartUtil
+                                .insertSiblingAfter(rmd,
+                                        this.getInsertionLocation(),
+                                        encr.getBinarySecurityTokenElement()));
+                    }
+                    
+                    Element encryptedKeyElement = encr.getEncryptedKeyElement();
+                    this.setInsertionLocation(RampartUtil
+                            .insertSiblingAfter(rmd,
+                                    this.getInsertionLocation(),
+                                    encryptedKeyElement));
+                    
+                    //Encrypt, get hold of the ref list and add it
+                    refList = encr.encryptForInternalRef(null, encrParts);
+    
+                    //Add internal refs
+                    encryptedKeyElement.appendChild(refList);
+//                    RampartUtil.insertSiblingAfter(rmd,
+//                                                    this.getInsertionLocation(),
+//                                                    refList);
+                } catch (WSSecurityException e) {
+                    throw new RampartException("errorInEncryption", e);
+                }    
+            }
+        }
+        
+    }
+
+    private void doSignature(RampartMessageData rmd) throws RampartException {
+
+        RampartPolicyData rpd = rmd.getPolicyData();
+        Document doc = rmd.getDocument();
+
+        sigToken = rpd.getInitiatorToken();
+
+        if (sigToken.isDerivedKeys()) {
+            // Set up the encrypted key to use
+            if(this.encrKey == null) {
+                setupEncryptedKey(rmd, sigToken);
+            }
+            
+            WSSecDKSign dkSign = new WSSecDKSign();
+            dkSign.setExternalKey(this.encryptedKeyValue, this.encryptedKeyId);
+
+            // Set the algo info
+            dkSign.setSignatureAlgorithm(rpd.getAlgorithmSuite()
+                    .getSymmetricSignature());
+            dkSign.setDerivedKeyLength(rpd.getAlgorithmSuite()
+                    .getMinimumSymmetricKeyLength() / 8);
+            
+            try {
+                dkSign.prepare(doc, rmd.getSecHeader());
+
+                if (rpd.isTokenProtection()) {
+                    sigParts.add(new WSEncryptionPart(encrKey.getId()));
+                }
+
+                dkSign.setParts(sigParts);
+
+                dkSign.addReferencesToSign(sigParts, rmd.getSecHeader());
+
+                // Do signature
+                dkSign.computeSignature();
+
+                 ;
+                // Add elements to header
+                 this.sigDKTElement = RampartUtil.insertSiblingAfter(rmd,
+                        this.getInsertionLocation(), dkSign.getdktElement());
+                this.setInsertionLocation(this.sigDKTElement);
+
+                this.setInsertionLocation(RampartUtil.insertSiblingAfter(rmd,
+                        this.getInsertionLocation(), dkSign
+                                .getSignatureElement()));
+
+                this.mainSigId = RampartUtil
+                        .addWsuIdToElement((OMElement) dkSign
+                                .getSignatureElement());
+
+                signatureValues.add(dkSign.getSignatureValue());
+                
+                signatureElement = dkSign.getSignatureElement();
+            } catch (WSSecurityException e) {
+                throw new RampartException("errorInDerivedKeyTokenSignature", e);
+            } catch (ConversationException e) {
+                throw new RampartException("errorInDerivedKeyTokenSignature", e);
+            }
+
+        } else {
+            sig = this.getSignatureBuider(rmd, sigToken);
+            Element bstElem = sig.getBinarySecurityTokenElement();
+            if(bstElem != null) {
+                bstElem = RampartUtil.insertSiblingAfter(rmd, this
+                                        .getInsertionLocation(), bstElem);
+                this.setInsertionLocation(bstElem);
+            }
+            
+            if (rmd.getPolicyData().isTokenProtection()
+                    && sig.getBSTTokenId() != null) {
+                sigParts.add(new WSEncryptionPart(sig.getBSTTokenId()));
+            }
+
+            try {
+                sig.addReferencesToSign(sigParts, rmd.getSecHeader());
+                sig.computeSignature();
+
+                signatureElement = sig.getSignatureElement();
+                
+                this.setInsertionLocation(RampartUtil.insertSiblingAfter(
+                                rmd, this.getInsertionLocation(), signatureElement));
+
+                this.mainSigId = RampartUtil.addWsuIdToElement((OMElement) signatureElement);
+            } catch (WSSecurityException e) {
+                throw new RampartException("errorInSignatureWithX509Token", e);
+            }
+            signatureValues.add(sig.getSignatureValue());
+        }
+
+    }
+
+    /**
+     * @param rmd
+     * @throws RampartException
+     */
+    private void setupEncryptedKey(RampartMessageData rmd, Token token) 
+    throws RampartException {
+        if(!rmd.isClientSide() && token.isDerivedKeys()) {
+                
+                //If we already have them, simply return
+                if(this.encryptedKeyId != null && this.encryptedKeyValue != null) {
+                    return;
+                }
+                
+                //Use the secret from the incoming EncryptedKey element
+                Object resultsObj = rmd.getMsgContext().getProperty(WSHandlerConstants.RECV_RESULTS);
+                if(resultsObj != null) {
+                    encryptedKeyId = RampartUtil.getRequestEncryptedKeyId((Vector)resultsObj);
+                    encryptedKeyValue = RampartUtil.getRequestEncryptedKeyValue((Vector)resultsObj);
+                    
+                    //In the case where we don't have the EncryptedKey in the 
+                    //request, for the control to have reached this state,
+                    //the scenario MUST be a case where this is the response
+                    //message by a listener created for an async client
+                    //Therefor we will create a new EncryptedKey
+                    if(encryptedKeyId == null && encryptedKeyValue == null) {
+                        createEncryptedKey(rmd, token);
+                    }
+                } else {
+                    throw new RampartException("noSecurityResults");
+                }
+        } else {
+            createEncryptedKey(rmd, token);
+        }
+    }
+
+    /**
+     * Create an encrypted key element
+     * @param rmd
+     * @param token
+     * @throws RampartException
+     */
+    private void createEncryptedKey(RampartMessageData rmd, Token token) throws RampartException {
+        //Set up the encrypted key to use
+        encrKey = this.getEncryptedKeyBuilder(rmd, token);
+
+        Element bstElem = encrKey.getBinarySecurityTokenElement();
+        if (bstElem != null) {
+            // If a BST is available then use it
+            RampartUtil.appendChildToSecHeader(rmd, bstElem);
+        }
+        
+        // Add the EncryptedKey
+        encrTokenElement = encrKey.getEncryptedKeyElement();
+        this.encrTokenElement = RampartUtil.appendChildToSecHeader(rmd,
+                encrTokenElement);
+        encryptedKeyValue = encrKey.getEphemeralKey();
+        encryptedKeyId = encrKey.getId();
+
+        //Store the token for client - response verification 
+        // and server - response creation
+        try {
+            org.apache.rahas.Token tok = new org.apache.rahas.Token(
+                    encryptedKeyId, (OMElement)encrTokenElement , null, null);
+            tok.setSecret(encryptedKeyValue);
+            rmd.getTokenStorage().add(tok);
+        } catch (TrustException e) {
+            throw new RampartException("errorInAddingTokenIntoStore", e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/builder/BindingBuilder.java b/rampart_1_1/modules/security/src/org/apache/rampart/builder/BindingBuilder.java
new file mode 100644
index 0000000..33e5349
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/builder/BindingBuilder.java
@@ -0,0 +1,615 @@
+/*
+ * Copyright 2004,2005 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.rampart.builder;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.rahas.TrustException;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.RampartMessageData;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.IssuedToken;
+import org.apache.ws.secpolicy.model.SecureConversationToken;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.Token;
+import org.apache.ws.secpolicy.model.UsernameToken;
+import org.apache.ws.secpolicy.model.X509Token;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSEncryptionPart;
+import org.apache.ws.security.WSPasswordCallback;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.conversation.ConversationException;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+import org.apache.ws.security.message.WSSecDKSign;
+import org.apache.ws.security.message.WSSecEncryptedKey;
+import org.apache.ws.security.message.WSSecSignature;
+import org.apache.ws.security.message.WSSecSignatureConfirmation;
+import org.apache.ws.security.message.WSSecTimestamp;
+import org.apache.ws.security.message.WSSecUsernameToken;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Vector;
+
+public abstract class BindingBuilder {
+    private static Log log = LogFactory.getLog(BindingBuilder.class);
+            
+    private Element insertionLocation;
+    
+    protected String mainSigId = null;
+    
+    protected Element timestampElement;
+    
+    /**
+     * @param rmd
+     */
+    protected void addTimestamp(RampartMessageData rmd) {
+        log.debug("Adding timestamp");
+        
+        WSSecTimestamp timestampBuilder = new WSSecTimestamp();
+        timestampBuilder.setWsConfig(rmd.getConfig());
+
+        timestampBuilder.setTimeToLive(RampartUtil.getTimeToLive(rmd));
+        
+        // add the Timestamp to the SOAP Enevelope
+
+        timestampBuilder.build(rmd.getDocument(), rmd
+                .getSecHeader());
+        
+        log.debug("Timestamp id: " + timestampBuilder.getId());
+
+        rmd.setTimestampId(timestampBuilder.getId());
+        
+        this.timestampElement = timestampBuilder.getElement();
+        log.debug("Adding timestamp: DONE");
+    }
+    
+    /**
+     * Add a UsernameToken to the security header
+     * @param rmd
+     * @return The <code>WSSecUsernameToken</code> instance
+     * @throws RampartException
+     */
+    protected WSSecUsernameToken addUsernameToken(RampartMessageData rmd) throws RampartException {
+       
+        log.debug("Adding a UsernameToken");
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        //Get the user
+        String user = rpd.getRampartConfig().getUser();
+        if(user != null && !"".equals(user)) {
+            log.debug("User : " + user);
+            
+            //Get the password
+            CallbackHandler handler = RampartUtil.getPasswordCB(rmd);
+            
+            if(handler == null) {
+                //If the callback handler is missing
+                throw new RampartException("cbHandlerMissing");
+            }
+            
+            WSPasswordCallback[] cb = { new WSPasswordCallback(user,
+                    WSPasswordCallback.USERNAME_TOKEN) };
+            
+            try {
+                handler.handle(cb);
+                
+                //get the password
+                String password = cb[0].getPassword();
+                
+                log.debug("Password : " + password);
+                
+                if(password != null && !"".equals(password)) {
+                    //If the password is available then build the token
+                    
+                    WSSecUsernameToken utBuilder = new WSSecUsernameToken();
+                    
+                    //TODO Get the UT type, only WS-SX spec supports this
+                    utBuilder.setUserInfo(user, password);
+                    
+                    return utBuilder;
+                } else {
+                    //If there's no password then throw an exception
+                    throw new RampartException("noPasswordForUser", 
+                            new String[]{user});
+                }
+            } catch (IOException e) {
+                throw new RampartException("errorInGettingPasswordForUser", 
+                        new String[]{user}, e);
+            } catch (UnsupportedCallbackException e) {
+                throw new RampartException("errorInGettingPasswordForUser", 
+                        new String[]{user}, e);
+            }
+            
+        } else {
+            log.debug("No user value specified in the configuration");
+            throw new RampartException("userMissing");
+        }
+        
+    }
+    
+    
+    /**
+     * @param rmd
+     * @param token
+     * @return
+     * @throws WSSecurityException
+     * @throws RampartException
+     */
+    protected WSSecEncryptedKey getEncryptedKeyBuilder(RampartMessageData rmd, Token token) throws RampartException {
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        Document doc = rmd.getDocument();
+        
+        WSSecEncryptedKey encrKey = new WSSecEncryptedKey();
+        if(token.getInclusion().equals(Constants.INCLUDE_NEVER)) {
+            //Use thumbprint
+            encrKey.setKeyIdentifierType(WSConstants.THUMBPRINT_IDENTIFIER);
+        } else {
+            encrKey.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE);
+        }
+        try {
+            RampartUtil.setEncryptionUser(rmd, encrKey);
+            encrKey.setKeySize(rpd.getAlgorithmSuite().getMaximumSymmetricKeyLength());
+            encrKey.setKeyEncAlgo(rpd.getAlgorithmSuite().getAsymmetricKeyWrap());
+            
+            encrKey.prepare(doc, RampartUtil.getEncryptionCrypto(rpd.getRampartConfig(), rmd.getCustomClassLoader()));
+            
+            return encrKey;
+        } catch (WSSecurityException e) {
+            throw new RampartException("errorCreatingEncryptedKey", e);
+        }
+    }
+    
+    
+    protected WSSecSignature getSignatureBuider(RampartMessageData rmd, Token token) throws RampartException {
+
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        WSSecSignature sig = new WSSecSignature();
+        sig.setWsConfig(rmd.getConfig());
+        
+        log.debug("Token inclusion: " + token.getInclusion());
+        if(token.getInclusion().equals(Constants.INCLUDE_NEVER)) {
+            //Use thumbprint
+            sig.setKeyIdentifierType(WSConstants.THUMBPRINT_IDENTIFIER);
+        } else {
+            sig.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE);
+        }
+
+        //Get the user
+        String user = rpd.getRampartConfig().getUser();
+        String password = null;
+
+        if(user != null && !"".equals(user)) {
+            log.debug("User : " + user);
+            
+            //Get the password
+            CallbackHandler handler = RampartUtil.getPasswordCB(rmd);
+            
+            if(handler == null) {
+                //If the callback handler is missing
+                throw new RampartException("cbHandlerMissing");
+            }
+            
+            WSPasswordCallback[] cb = { new WSPasswordCallback(user,
+                    WSPasswordCallback.SIGNATURE) };
+            
+            try {
+                handler.handle(cb);
+                if(cb[0].getPassword() != null && !"".equals(cb[0].getPassword())) {
+                    password = cb[0].getPassword();
+                    log.debug("Password : " + password);
+                } else {
+                    //If there's no password then throw an exception
+                    throw new RampartException("noPasswordForUser", 
+                            new String[]{user});
+                }
+            } catch (IOException e) {
+                throw new RampartException("errorInGettingPasswordForUser", 
+                        new String[]{user}, e);
+            } catch (UnsupportedCallbackException e) {
+                throw new RampartException("errorInGettingPasswordForUser", 
+                        new String[]{user}, e);
+            }
+            
+        } else {
+            log.debug("No user value specified in the configuration");
+            throw new RampartException("userMissing");
+        }
+        
+        sig.setUserInfo(user, password);
+        sig.setSignatureAlgorithm(rpd.getAlgorithmSuite().getAsymmetricSignature());
+        sig.setSigCanonicalization(rpd.getAlgorithmSuite().getInclusiveC14n());
+        
+        try {
+            sig.prepare(rmd.getDocument(), RampartUtil.getSignatureCrypto(rpd
+                    .getRampartConfig(), rmd.getCustomClassLoader()), 
+                    rmd.getSecHeader());
+        } catch (WSSecurityException e) {
+            throw new RampartException("errorInSignatureWithX509Token", e);
+        }
+        
+        return sig;
+    }
+    
+    /**
+     * @param rmd
+     * @param suppTokens
+     * @throws RampartException
+     */
+    protected HashMap handleSupportingTokens(RampartMessageData rmd, SupportingToken suppTokens)
+            throws RampartException {
+        
+        //Create the list to hold the tokens
+        HashMap endSuppTokMap = new HashMap();
+        
+        if(suppTokens != null && suppTokens.getTokens() != null &&
+                suppTokens.getTokens().size() > 0) {
+            log.debug("Processing endorsing supporting tokens");
+            
+            ArrayList tokens = suppTokens.getTokens();
+            for (Iterator iter = tokens.iterator(); iter.hasNext();) {
+                Token token = (Token) iter.next();
+                org.apache.rahas.Token endSuppTok = null;
+                if(token instanceof IssuedToken && rmd.isClientSide()){
+                    String id = RampartUtil.getIssuedToken(rmd, (IssuedToken)token);
+                    try {
+                        endSuppTok = rmd.getTokenStorage().getToken(id);
+                    } catch (TrustException e) {
+                        throw new RampartException("errorInRetrievingTokenId", 
+                                new String[]{id}, e);
+                    }
+                    
+                    if(endSuppTok == null) {
+                        throw new RampartException("errorInRetrievingTokenId", 
+                                new String[]{id});
+                    }
+                    
+                    //Add the token to the header
+                    Element siblingElem = RampartUtil
+                            .insertSiblingAfter(rmd, this.getInsertionLocation(),
+                                    (Element) endSuppTok.getToken());
+                    this.setInsertionLocation(siblingElem);
+                    
+                    //Add the extracted token
+                    endSuppTokMap.put(token, endSuppTok);
+                    
+                } else if(token instanceof X509Token) {
+                    //Get the to be added
+                    if(token.isDerivedKeys()) {
+                        //We have to use an EncryptedKey
+                        try {
+                            WSSecEncryptedKey encrKey = this
+                                    .getEncryptedKeyBuilder(rmd, token);
+                            
+                            Element bstElem = encrKey.getBinarySecurityTokenElement();
+                            if(bstElem != null) {
+                               Element siblingElem = RampartUtil
+                                        .insertSiblingAfter(rmd, this.getInsertionLocation(),
+                                                bstElem);
+                               this.setInsertionLocation(siblingElem);
+                            }
+                            
+                            Element siblingElem = RampartUtil
+                                    .insertSiblingAfter(rmd, 
+                                            this.getInsertionLocation(),
+                                            encrKey.getEncryptedKeyElement());
+                            
+                            this.setInsertionLocation(siblingElem);
+                            
+                            Date now = new Date();
+                            endSuppTok =  
+                                new org.apache.rahas.Token(encrKey.getId(), 
+                                        (OMElement)encrKey.getEncryptedKeyElement(),
+                                        now, new Date(now.getTime() + 300000));
+                            
+                            endSuppTokMap.put(token, endSuppTok);
+                            
+                        } catch (TrustException e) {
+                            throw new RampartException("errorCreatingRahasToken", e);
+                        }
+                    } else {
+                        //We have to use a cert
+                        //Prepare X509 signature
+                        WSSecSignature sig = this.getSignatureBuider(rmd, token);
+                        Element bstElem = sig.getBinarySecurityTokenElement();
+                        if(bstElem != null) {   
+                            bstElem = RampartUtil.insertSiblingAfter(rmd, 
+                                    this.getInsertionLocation(), bstElem);
+                            this.setInsertionLocation(bstElem);
+                        }
+                        endSuppTokMap.put(token, sig);
+                    }
+                } else if(token instanceof UsernameToken) {
+                    WSSecUsernameToken utBuilder = addUsernameToken(rmd);
+                    
+                    utBuilder.prepare(rmd.getDocument());
+                    
+                    //Add the UT
+                    Element elem = utBuilder.getUsernameTokenElement();
+                    RampartUtil.insertSiblingAfter(rmd, this.getInsertionLocation(), elem);
+                    
+                    //Move the insert location to th enext element
+                    this.setInsertionLocation(elem);
+                    Date now = new Date();
+                    try {
+                        org.apache.rahas.Token tempTok = new org.apache.rahas.Token(
+                                utBuilder.getId(), (OMElement) elem, now,
+                                new Date(now.getTime() + 300000));
+                        endSuppTokMap.put(token, tempTok);
+                    } catch (TrustException e) {
+                        throw new RampartException("errorCreatingRahasToken", e);
+                    }
+                }
+            }
+        }
+        
+        return endSuppTokMap;
+    }
+    /**
+     * @param tokenMap
+     * @param sigParts
+     * @throws RampartException
+     */
+    protected Vector addSignatureParts(HashMap tokenMap, Vector sigParts) throws RampartException {
+        
+        Set entrySet = tokenMap.entrySet();
+        
+        for (Iterator iter = entrySet.iterator(); iter.hasNext();) {
+            Object tempTok =  iter.next();
+            WSEncryptionPart part = null;
+            if(tempTok instanceof org.apache.rahas.Token) {
+                part = new WSEncryptionPart(
+                        ((org.apache.rahas.Token) tempTok).getId());
+            } else if(tempTok instanceof WSSecSignature) {
+                WSSecSignature tempSig = (WSSecSignature) tempTok;
+                if(tempSig.getBSTTokenId() != null) {
+                    part = new WSEncryptionPart(tempSig.getBSTTokenId());
+                }
+            } else {
+              throw new RampartException("UnsupportedTokenInSupportingToken");  
+            }
+            sigParts.add(part);
+        }
+                
+        return sigParts;
+    }
+
+    
+    public Element getInsertionLocation() {
+        return insertionLocation;
+    }
+
+    public void setInsertionLocation(Element insertionLocation) {
+        this.insertionLocation = insertionLocation;
+    }
+    
+    
+    protected Vector doEndorsedSignatures(RampartMessageData rmd, HashMap tokenMap) throws RampartException {
+        
+        Set tokenSet = tokenMap.keySet();
+        
+        Vector sigValues = new Vector();
+        
+        for (Iterator iter = tokenSet.iterator(); iter.hasNext();) {
+            
+            Token token = (Token)iter.next();
+            
+            Object tempTok = tokenMap.get(token);
+            
+            Vector sigParts = new Vector();
+            sigParts.add(new WSEncryptionPart(this.mainSigId));
+            
+            if (tempTok instanceof org.apache.rahas.Token) {
+                org.apache.rahas.Token tok = (org.apache.rahas.Token)tempTok;
+                if(rmd.getPolicyData().isTokenProtection()) {
+                    sigParts.add(new WSEncryptionPart(tok.getId()));
+                }
+                
+                this.doSymmSignature(rmd, token, (org.apache.rahas.Token)tempTok, sigParts);
+                
+            } else if (tempTok instanceof WSSecSignature) {
+                WSSecSignature sig = (WSSecSignature)tempTok;
+                if(rmd.getPolicyData().isTokenProtection() &&
+                        sig.getBSTTokenId() != null) {
+                    sigParts.add(new WSEncryptionPart(sig.getBSTTokenId()));
+                }
+                
+                try {
+                    sig.addReferencesToSign(sigParts, rmd.getSecHeader());
+                    sig.computeSignature();
+                    
+                    this.setInsertionLocation(RampartUtil.insertSiblingAfter(
+                            rmd, 
+                            this.getInsertionLocation(), 
+                            sig.getSignatureElement()));
+                    
+                } catch (WSSecurityException e) {
+                    throw new RampartException("errorInSignatureWithX509Token", e);
+                }
+                sigValues.add(sig.getSignatureValue());
+            }
+        } 
+
+        return sigValues;
+            
+    }
+    
+    
+    protected byte[] doSymmSignature(RampartMessageData rmd, Token policyToken, org.apache.rahas.Token tok, Vector sigParts) throws RampartException {
+        
+        Document doc = rmd.getDocument();
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        if(policyToken.isDerivedKeys() || policyToken instanceof SecureConversationToken) {
+            try {
+                WSSecDKSign dkSign = new WSSecDKSign();
+
+                OMElement ref = tok.getAttachedReference();
+                if(ref == null) {
+                    ref = tok.getUnattachedReference();
+                }
+                if(ref != null) {
+                    dkSign.setExternalKey(tok.getSecret(), (Element) 
+                            doc.importNode((Element) ref, true));
+                } else {
+                    dkSign.setExternalKey(tok.getSecret(), tok.getId());
+                }
+
+                //Set the algo info
+                dkSign.setSignatureAlgorithm(rpd.getAlgorithmSuite().getSymmetricSignature());
+                dkSign.setDerivedKeyLength(rpd.getAlgorithmSuite().getMinimumSymmetricKeyLength()/8);
+                
+                dkSign.prepare(doc, rmd.getSecHeader());
+                
+                if(rpd.isTokenProtection()) {
+                    sigParts.add(new WSEncryptionPart(tok.getId()));
+                }
+                
+                dkSign.setParts(sigParts);
+                
+                dkSign.addReferencesToSign(sigParts, rmd.getSecHeader());
+                
+                //Do signature
+                dkSign.computeSignature();
+                
+                //Add elements to header
+                this.setInsertionLocation(RampartUtil
+                        .insertSiblingAfter(rmd, 
+                                this.getInsertionLocation(),
+                                dkSign.getdktElement()));
+
+                this.setInsertionLocation(RampartUtil.insertSiblingAfter(
+                        rmd, 
+                        this.getInsertionLocation(), 
+                        dkSign.getSignatureElement()));
+
+                return dkSign.getSignatureValue();
+                
+            } catch (ConversationException e) {
+                throw new RampartException(
+                        "errorInDerivedKeyTokenSignature", e);
+            } catch (WSSecurityException e) {
+                throw new RampartException(
+                        "errorInDerivedKeyTokenSignature", e);
+            }
+        } else {
+            //TODO :  Example SAMLTOken Signature
+            throw new UnsupportedOperationException("TODO");
+        }
+    }
+    
+    /**
+     * Get hold of the token from the token storage
+     * @param rmd
+     * @param tokenId
+     * @return token from the token storage
+     * @throws RampartException
+     */
+    protected org.apache.rahas.Token getToken(RampartMessageData rmd, 
+                    String tokenId) throws RampartException {
+        org.apache.rahas.Token tok = null;
+        try {
+            tok = rmd.getTokenStorage().getToken(tokenId);
+        } catch (TrustException e) {
+            throw new RampartException("errorInRetrievingTokenId", 
+                    new String[]{tokenId}, e);
+        }
+        
+        if(tok == null) {
+            throw new RampartException("errorInRetrievingTokenId", 
+                    new String[]{tokenId});
+        }
+        return tok;
+    }
+    
+
+    protected void addSignatureConfirmation(RampartMessageData rmd, Vector sigParts) {
+        
+        if(!rmd.getPolicyData().isSignatureConfirmation()) {
+            
+            //If we don't require sig confirmation simply go back :-)
+            return;
+        }
+        
+        Document doc = rmd.getDocument();
+        
+        Vector results = (Vector)rmd.getMsgContext().getProperty(WSHandlerConstants.RECV_RESULTS);
+        /*
+         * loop over all results gathered by all handlers in the chain. For each
+         * handler result get the various actions. After that loop we have all
+         * signature results in the signatureActions vector
+         */
+        Vector signatureActions = new Vector();
+        for (int i = 0; i < results.size(); i++) {
+            WSHandlerResult wshResult = (WSHandlerResult) results.get(i);
+
+            WSSecurityUtil.fetchAllActionResults(wshResult.getResults(),
+                    WSConstants.SIGN, signatureActions);
+            WSSecurityUtil.fetchAllActionResults(wshResult.getResults(),
+                    WSConstants.ST_SIGNED, signatureActions);
+            WSSecurityUtil.fetchAllActionResults(wshResult.getResults(),
+                    WSConstants.UT_SIGN, signatureActions);
+        }
+        
+        // prepare a SignatureConfirmation token
+        WSSecSignatureConfirmation wsc = new WSSecSignatureConfirmation();
+        if (signatureActions.size() > 0) {
+            if (log.isDebugEnabled()) {
+                log.debug("Signature Confirmation: number of Signature results: "
+                        + signatureActions.size());
+            }
+            for (int i = 0; i < signatureActions.size(); i++) {
+                WSSecurityEngineResult wsr = (WSSecurityEngineResult) signatureActions
+                        .get(i);
+                byte[] sigVal = wsr.getSignatureValue();
+                wsc.setSignatureValue(sigVal);
+                wsc.prepare(doc);
+                RampartUtil.appendChildToSecHeader(rmd, wsc.getSignatureConfirmationElement());
+                if(sigParts != null) {
+                    sigParts.add(new WSEncryptionPart(wsc.getId()));
+                }
+            }
+        } else {
+            //No Sig value
+            wsc.prepare(doc);
+            RampartUtil.appendChildToSecHeader(rmd, wsc.getSignatureConfirmationElement());
+            if(sigParts != null) {
+                sigParts.add(new WSEncryptionPart(wsc.getId()));
+            }
+        }
+    }
+
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/builder/SymmetricBindingBuilder.java b/rampart_1_1/modules/security/src/org/apache/rampart/builder/SymmetricBindingBuilder.java
new file mode 100644
index 0000000..5209764
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/builder/SymmetricBindingBuilder.java
@@ -0,0 +1,648 @@
+/*
+ * Copyright 2004,2005 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.rampart.builder;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.context.MessageContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.TrustException;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.RampartMessageData;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.IssuedToken;
+import org.apache.ws.secpolicy.model.SecureConversationToken;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.Token;
+import org.apache.ws.secpolicy.model.X509Token;
+import org.apache.ws.security.WSEncryptionPart;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.conversation.ConversationException;
+import org.apache.ws.security.message.WSSecDKEncrypt;
+import org.apache.ws.security.message.WSSecEncrypt;
+import org.apache.ws.security.message.WSSecEncryptedKey;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Vector;
+
+
+public class SymmetricBindingBuilder extends BindingBuilder {
+
+    private static Log log = LogFactory.getLog(SymmetricBindingBuilder.class);
+    
+    
+    public void build(RampartMessageData rmd) throws RampartException {
+        
+        log.debug("SymmetricBindingBuilder build invoked");
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        if(rpd.isIncludeTimestamp()) {
+            this.addTimestamp(rmd);
+        }
+        
+        if(rmd.isClientSide()) {
+            //Setup required tokens
+            initializeTokens(rmd);
+        }
+        
+            
+        if(Constants.ENCRYPT_BEFORE_SIGNING.equals(rpd.getProtectionOrder())) {
+            this.doEncryptBeforeSig(rmd);
+        } else {
+            this.doSignBeforeEncrypt(rmd);
+        }
+
+    
+        log.debug("SymmetricBindingBuilder build invoked : DONE");
+        
+    }
+    
+    private void doEncryptBeforeSig(RampartMessageData rmd) throws RampartException {
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        Vector signatureValues = new Vector();
+        
+        Token encryptionToken = rpd.getEncryptionToken();
+        Vector encrParts = RampartUtil.getEncryptedParts(rmd);
+
+        if(encryptionToken == null && encrParts.size() > 0) {
+            throw new RampartException("encryptionTokenMissing");
+        }
+        
+        if(encryptionToken != null && encrParts.size() > 0) {
+            //The encryption token can be an IssuedToken or a 
+             //SecureConversationToken
+            String tokenId = null;
+            org.apache.rahas.Token tok = null;
+            
+            if(encryptionToken instanceof IssuedToken) {
+                tokenId = rmd.getIssuedEncryptionTokenId();
+                log.debug("Issued EncryptionToken Id : " + tokenId);
+            } else if(encryptionToken instanceof SecureConversationToken) {
+                tokenId = rmd.getSecConvTokenId();
+                log.debug("SCT Id : " + tokenId);
+            } else if (encryptionToken instanceof X509Token) {
+                tokenId = setupEncryptedKey(rmd, encryptionToken);
+            } //TODO SAMLToken
+            
+            if(tokenId == null || tokenId.length() == 0) {
+                throw new RampartException("noSecurityToken");
+            }
+            
+            /*
+             * Get hold of the token from the token storage
+             */
+            tok = this.getToken(rmd, tokenId);
+
+            /*
+             * Attach the token into the message based on token inclusion 
+             * values
+             */
+            boolean attached = false;
+            Element encrTokenElement = null;
+            Element refList = null;
+            WSSecDKEncrypt dkEncr = null;
+            WSSecEncrypt encr = null;
+            Element encrDKTokenElem = null;
+            
+            if(Constants.INCLUDE_ALWAYS.equals(encryptionToken.getInclusion()) ||
+                    Constants.INCLUDE_ONCE.equals(encryptionToken.getInclusion()) ||
+                    (rmd.isClientSide() && Constants.INCLUDE_ALWAYS_TO_RECIPIENT.equals(encryptionToken.getInclusion()))) {
+                encrTokenElement = RampartUtil.appendChildToSecHeader(rmd, tok.getToken());
+                attached = true;
+            }
+            
+            //In the X509 case we MUST add the EncryptedKey
+            if(encryptionToken instanceof X509Token) {
+                RampartUtil.appendChildToSecHeader(rmd, tok.getToken());
+            }
+            Document doc = rmd.getDocument();
+
+            if(encryptionToken.isDerivedKeys()) {
+                log.debug("Use drived keys");
+                
+                dkEncr = new WSSecDKEncrypt();
+                
+                if(attached && tok.getAttachedReference() != null) {
+                    
+                    dkEncr.setExternalKey(tok.getSecret(), (Element) doc
+                            .importNode((Element) tok.getAttachedReference(),
+                                    true));
+                    
+                } else if(tok.getUnattachedReference() != null) {
+                    dkEncr.setExternalKey(tok.getSecret(), (Element) doc
+                            .importNode((Element) tok.getUnattachedReference(),
+                                    true));
+                } else {
+                    dkEncr.setExternalKey(tok.getSecret(), tok.getId());
+                }
+                try {
+                    dkEncr.prepare(doc);
+                    encrDKTokenElem = dkEncr.getdktElement();
+                    RampartUtil.appendChildToSecHeader(rmd, encrDKTokenElem);
+                    
+                    refList = dkEncr.encryptForExternalRef(null, encrParts);
+                    
+                } catch (WSSecurityException e) {
+                    throw new RampartException("errorInDKEncr");
+                } catch (ConversationException e) {
+                    throw new RampartException("errorInDKEncr");
+                }
+            } else {
+                log.debug("NO derived keys, use the shared secret");
+                encr = new WSSecEncrypt();
+                
+                encr.setWsConfig(rmd.getConfig());
+                
+                encr.setEphemeralKey(tok.getSecret());
+                encr.setDocument(doc);
+                
+                try {
+                    //Encrypt, get hold of the ref list and add it
+                    refList = encr.encryptForExternalRef(null, encrParts);
+                } catch (WSSecurityException e) {
+                    throw new RampartException("errorInEncryption", e);
+                }
+            }
+            
+            RampartUtil.appendChildToSecHeader(rmd, refList);
+            
+            this.setInsertionLocation(encrTokenElement);
+
+            HashMap sigSuppTokMap = null;
+            HashMap endSuppTokMap = null;
+            HashMap sgndEndSuppTokMap = null;
+            Vector sigParts = RampartUtil.getSignedParts(rmd);
+            sigParts.add(new WSEncryptionPart(RampartUtil
+                    .addWsuIdToElement((OMElement) this.timestampElement)));
+
+            if(rmd.isClientSide()) {
+            
+    //          Now add the supporting tokens
+                SupportingToken sgndSuppTokens = rpd.getSignedSupportingTokens();
+                
+                sigSuppTokMap = this.handleSupportingTokens(rmd, sgndSuppTokens);
+                
+                SupportingToken endSuppTokens = rpd.getEndorsingSupportingTokens();
+    
+                endSuppTokMap = this.handleSupportingTokens(rmd, endSuppTokens);
+    
+                SupportingToken sgndEndSuppTokens = rpd.getSignedEndorsingSupportingTokens();
+                
+                sgndEndSuppTokMap = this.handleSupportingTokens(rmd, sgndEndSuppTokens);
+    
+                //Setup signature parts
+                sigParts = addSignatureParts(sigSuppTokMap, sigParts);
+                sigParts = addSignatureParts(sgndEndSuppTokMap, sigParts);
+            } else {
+                addSignatureConfirmation(rmd, sigParts);
+            }
+            
+            //Sign the message
+            //We should use the same key in the case of EncryptBeforeSig
+            signatureValues.add(this.doSymmSignature(rmd, encryptionToken, tok, sigParts));
+
+            this.mainSigId = RampartUtil.addWsuIdToElement((OMElement)this.getInsertionLocation());
+            
+            
+            if(rmd.isClientSide()) {
+                //Do endorsed signatures
+                Vector endSigVals = this.doEndorsedSignatures(rmd, endSuppTokMap);
+                for (Iterator iter = endSigVals.iterator(); iter.hasNext();) {
+                    signatureValues.add(iter.next());
+                }
+                
+                //Do signed endorsing signatures
+                Vector sigEndSigVals = this.doEndorsedSignatures(rmd, sgndEndSuppTokMap);
+                for (Iterator iter = sigEndSigVals.iterator(); iter.hasNext();) {
+                    signatureValues.add(iter.next());
+                }
+            }
+            
+            //Check for signature protection
+            if(rpd.isSignatureProtection() && this.mainSigId != null) {
+                
+                Vector secondEncrParts = new Vector();
+                
+                //Now encrypt the signature using the above token
+                secondEncrParts.add(new WSEncryptionPart(this.mainSigId, "Element"));
+                
+                Element secondRefList = null;
+                
+                if(encryptionToken.isDerivedKeys()) {
+                    try {
+                        secondRefList = dkEncr.encryptForExternalRef(null, 
+                                secondEncrParts);
+                        RampartUtil.insertSiblingAfter(
+                                rmd, 
+                                encrDKTokenElem, 
+                                secondRefList);
+                    } catch (WSSecurityException e) {
+                        throw new RampartException("errorInDKEncr");
+                    }
+                } else {
+                    try {
+                        //Encrypt, get hold of the ref list and add it
+                        secondRefList = encr.encryptForExternalRef(null,
+                                encrParts);
+                        RampartUtil.insertSiblingAfter(
+                                rmd, 
+                                encrTokenElement,
+                                secondRefList);
+                    } catch (WSSecurityException e) {
+                        throw new RampartException("errorInEncryption", e);
+                    }    
+                }
+            }
+           
+        } else {
+            throw new RampartException("encryptionTokenMissing");
+        }
+    }
+
+
+    private void doSignBeforeEncrypt(RampartMessageData rmd) throws RampartException {
+
+        RampartPolicyData rpd = rmd.getPolicyData();
+        Document doc = rmd.getDocument();
+        
+        Token sigToken = rpd.getSignatureToken();
+        
+        String encrTokId = null;
+        String sigTokId = null;
+        
+        org.apache.rahas.Token encrTok = null;
+        org.apache.rahas.Token sigTok = null;
+        
+        Element sigTokElem = null;
+        
+        Vector signatureValues = new Vector();
+        
+        if(sigToken != null) {
+            if(sigToken instanceof SecureConversationToken) {
+                sigTokId = rmd.getSecConvTokenId();
+            } else if(sigToken instanceof IssuedToken) {
+                sigTokId = rmd.getIssuedSignatureTokenId();
+            } else if(sigToken instanceof X509Token) {
+                sigTokId = setupEncryptedKey(rmd, sigToken);
+            }
+        } else {
+            throw new RampartException("signatureTokenMissing");
+        }
+        
+        if(sigTokId == null || sigTokId.length() == 0) {
+            throw new RampartException("noSecurityToken");
+        }
+        
+        sigTok = this.getToken(rmd, sigTokId);
+
+        if(Constants.INCLUDE_ALWAYS.equals(sigToken.getInclusion()) ||
+                Constants.INCLUDE_ONCE.equals(sigToken.getInclusion()) ||
+                (rmd.isClientSide() && 
+                        Constants.INCLUDE_ALWAYS_TO_RECIPIENT.equals(
+                                sigToken.getInclusion()))) {
+            sigTokElem = RampartUtil.appendChildToSecHeader(rmd, 
+                                                            sigTok.getToken());
+            this.setInsertionLocation(sigTokElem);
+        }
+        
+
+        
+        //In the X509 case we MUST add the EncryptedKey
+        if(sigToken instanceof X509Token) {
+            sigTokElem = RampartUtil.appendChildToSecHeader(rmd, sigTok.getToken());
+            
+            //Set the insertion location
+            this.setInsertionLocation(sigTokElem);
+        }
+        
+
+        HashMap sigSuppTokMap = null;
+        HashMap endSuppTokMap = null;
+        HashMap sgndEndSuppTokMap = null;
+        Vector sigParts = RampartUtil.getSignedParts(rmd);
+        sigParts.add(new WSEncryptionPart(RampartUtil
+                .addWsuIdToElement((OMElement) this.timestampElement)));
+
+        if(rmd.isClientSide()) {
+    //      Now add the supporting tokens
+            SupportingToken sgndSuppTokens = rpd.getSignedSupportingTokens();
+            
+            sigSuppTokMap = this.handleSupportingTokens(rmd, sgndSuppTokens);
+            
+            SupportingToken endSuppTokens = rpd.getEndorsingSupportingTokens();
+    
+            endSuppTokMap = this.handleSupportingTokens(rmd, endSuppTokens);
+    
+            SupportingToken sgndEndSuppTokens = rpd.getSignedEndorsingSupportingTokens();
+            
+            sgndEndSuppTokMap = this.handleSupportingTokens(rmd, sgndEndSuppTokens);
+    
+            //Setup signature parts
+            sigParts = addSignatureParts(sigSuppTokMap, rpd.getSignedParts());
+            sigParts = addSignatureParts(sgndEndSuppTokMap, sigParts);
+        } else {
+            addSignatureConfirmation(rmd, sigParts);
+        }
+        //Sign the message
+        signatureValues.add(this.doSymmSignature(rmd, sigToken, sigTok, sigParts));
+
+        this.mainSigId = RampartUtil.addWsuIdToElement((OMElement)this.getInsertionLocation());
+
+        if(rmd.isClientSide()) {
+            //Do endorsed signatures
+            Vector endSigVals = this.doEndorsedSignatures(rmd, endSuppTokMap);
+            for (Iterator iter = endSigVals.iterator(); iter.hasNext();) {
+                signatureValues.add(iter.next());
+            }
+            
+            //Do signed endorsing signatures
+            Vector sigEndSigVals = this.doEndorsedSignatures(rmd, sgndEndSuppTokMap);
+            for (Iterator iter = sigEndSigVals.iterator(); iter.hasNext();) {
+                signatureValues.add(iter.next());
+            }
+        }
+
+        //Encryption
+        Token encrToken = rpd.getEncryptionToken();
+        Element encrTokElem = null;
+        if(sigToken.equals(encrToken)) {
+            //Use the same token
+            encrTokId = sigTokId;
+            encrTok = sigTok;
+            encrTokElem = sigTokElem;
+        } else {
+            encrTokId = rmd.getIssuedEncryptionTokenId();
+            encrTok = this.getToken(rmd, encrTokId);
+            
+            if(Constants.INCLUDE_ALWAYS.equals(encrToken.getInclusion()) ||
+                    Constants.INCLUDE_ONCE.equals(encrToken.getInclusion()) ||
+                    (rmd.isClientSide() && Constants.INCLUDE_ALWAYS_TO_RECIPIENT.equals(encrToken.getInclusion()))) {
+                encrTokElem = (Element)encrTok.getToken();
+                
+                //Add the encrToken element before the sigToken element
+                RampartUtil.insertSiblingBefore(rmd, sigTokElem, encrTokElem);
+            }
+            
+        }
+        
+        Vector encrParts = RampartUtil.getEncryptedParts(rmd);
+        
+        //Check for signature protection
+        if(rpd.isSignatureProtection() && this.mainSigId != null) {
+            //Now encrypt the signature using the above token
+            encrParts.add(new WSEncryptionPart(this.mainSigId, "Element"));
+        }
+        Element refList = null;
+        
+        if(encrToken.isDerivedKeys() || encrToken instanceof SecureConversationToken) {
+            
+            try {
+                WSSecDKEncrypt dkEncr = new WSSecDKEncrypt();
+                
+                if(encrTokElem != null && encrTok.getAttachedReference() != null) {
+                    
+                    dkEncr.setExternalKey(encrTok.getSecret(), (Element) doc
+                            .importNode((Element) encrTok.getAttachedReference(),
+                                    true));
+                    
+                } else if(encrTok.getUnattachedReference() != null) {
+                    dkEncr.setExternalKey(encrTok.getSecret(), (Element) doc
+                            .importNode((Element) encrTok.getUnattachedReference(),
+                                    true));
+                } else {
+                    dkEncr.setExternalKey(encrTok.getSecret(), encrTok.getId());
+                }
+                
+                dkEncr.prepare(doc);
+                Element encrDKTokenElem = null;
+                encrDKTokenElem = dkEncr.getdktElement();
+                if(encrTokElem != null) {
+                    RampartUtil.insertSiblingAfter(rmd, encrTokElem, encrDKTokenElem);
+                } else {
+                    RampartUtil.insertSiblingAfter(rmd, this.timestampElement, encrDKTokenElem);
+                }
+                
+                refList = dkEncr.encryptForExternalRef(null, encrParts);
+                
+                RampartUtil.insertSiblingAfter(rmd, 
+                                                encrDKTokenElem, 
+                                                refList);
+
+            } catch (WSSecurityException e) {
+                throw new RampartException("errorInDKEncr");
+            } catch (ConversationException e) {
+                throw new RampartException("errorInDKEncr");
+            }
+        } else {
+            try {
+                
+                WSSecEncrypt encr = new WSSecEncrypt();
+                
+                encr.setWsConfig(rmd.getConfig());
+                
+                encr.setEphemeralKey(encrTok.getSecret());
+                RampartUtil.setEncryptionUser(rmd, encr);
+                encr.setDocument(doc);
+                encr.prepare(doc, RampartUtil.getEncryptionCrypto(rpd
+                        .getRampartConfig(), rmd.getCustomClassLoader()));
+                
+                //Encrypt, get hold of the ref list and add it
+                refList = encr.encryptForExternalRef(null, encrParts);
+
+                RampartUtil.insertSiblingAfter(rmd,
+                                                encrTokElem,
+                                                refList);
+            } catch (WSSecurityException e) {
+                throw new RampartException("errorInEncryption", e);
+            }    
+        }
+    }
+
+    /**
+     * @param rmd
+     * @param sigToken
+     * @return
+     * @throws RampartException
+     */
+    private String setupEncryptedKey(RampartMessageData rmd, Token sigToken) 
+    throws RampartException {
+        try {
+            WSSecEncryptedKey encrKey = this.getEncryptedKeyBuilder(rmd, 
+                                                                sigToken);
+            String id = encrKey.getId();
+            //Create a rahas token from this info and store it so we can use
+            //it in the next steps
+    
+            Date created = new Date();
+            Date expires = new Date();
+            //TODO make this lifetime configurable ???
+            expires.setTime(System.currentTimeMillis() + 300000);
+            org.apache.rahas.Token tempTok = new org.apache.rahas.Token(
+                            id, 
+                            (OMElement) encrKey.getEncryptedKeyElement(),
+                            created, 
+                            expires);
+            tempTok.setSecret(encrKey.getEphemeralKey());
+            
+            rmd.getTokenStorage().add(tempTok);
+            
+            String bstTokenId = encrKey.getBSTTokenId();
+            //If direct ref is used to refer to the cert
+            //then add the cert to the sec header now
+            if(bstTokenId != null && bstTokenId.length() > 0) {
+                RampartUtil.appendChildToSecHeader(rmd, 
+                        encrKey.getBinarySecurityTokenElement());
+            }
+            
+            return id;
+            
+        } catch (TrustException e) {
+            throw new RampartException("errorInAddingTokenIntoStore");
+        }
+    }
+    
+    /**
+     * Setup the required tokens
+     * @param rmd
+     * @param rpd
+     * @throws RampartException
+     */
+    private void initializeTokens(RampartMessageData rmd) throws RampartException {
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        MessageContext msgContext = rmd.getMsgContext();
+        if(rpd.isSymmetricBinding() && !msgContext.isServerSide()) {
+            log.debug("Procesing symmentric binding: " +
+                    "Setting up encryption token and signature token");
+            //Setting up encryption token and signature token
+            
+            Token sigTok = rpd.getSignatureToken();
+            Token encrTok = rpd.getEncryptionToken();
+            if(sigTok instanceof IssuedToken) {
+                
+                log.debug("SignatureToken is an IssuedToken");
+                
+                if(rmd.getIssuedSignatureTokenId() == null) {
+                    log.debug("No Issuedtoken found, requesting a new token");
+                    
+                    IssuedToken issuedToken = (IssuedToken)sigTok;
+                    
+                    String id = RampartUtil.getIssuedToken(rmd, 
+                            issuedToken);
+                    rmd.setIssuedSignatureTokenId(id);
+                    
+                    
+                }
+                
+            } else if(sigTok instanceof SecureConversationToken) {
+                
+                log.debug("SignatureToken is a SecureConversationToken");
+                
+                //TODO check for an existing token and use it 
+                
+                String secConvTokenId = rmd.getSecConvTokenId();
+                
+                //The RSTR has to be secured with the cancelled token
+                String action = msgContext.getOptions().getAction();
+                boolean cancelReqResp = action.equals(RahasConstants.WST_NS_05_02 + RahasConstants.RSTR_ACTION_CANCEL_SCT) || 
+                                           action.equals(RahasConstants.WST_NS_05_02 + RahasConstants.RSTR_ACTION_CANCEL_SCT) ||
+                                           action.equals(RahasConstants.WST_NS_05_02 + RahasConstants.RST_ACTION_CANCEL_SCT) || 
+                                           action.equals(RahasConstants.WST_NS_05_02 + RahasConstants.RST_ACTION_CANCEL_SCT);
+                
+                //In the case of the cancel req or resp we should mark the token as cancelled
+                if(secConvTokenId != null && cancelReqResp) {
+                    try {
+                        rmd.getTokenStorage().getToken(secConvTokenId).setState(org.apache.rahas.Token.CANCELLED);
+                        msgContext.setProperty(RampartMessageData.SCT_ID, secConvTokenId);
+                        
+                        //remove from the local map of contexts
+                        String contextIdentifierKey = RampartUtil.getContextIdentifierKey(msgContext);
+                        RampartUtil.getContextMap(msgContext).remove(contextIdentifierKey);
+                    } catch (TrustException e) {
+                        throw new RampartException("errorExtractingToken");
+                    }
+                }
+                
+                if (secConvTokenId == null
+                        || (secConvTokenId != null && 
+                                (!RampartUtil.isTokenValid(rmd, secConvTokenId) && !cancelReqResp))) {
+                
+                    log.debug("No SecureConversationToken found, " +
+                            "requesting a new token");
+                    
+                    SecureConversationToken secConvTok = 
+                                        (SecureConversationToken) sigTok;
+                    
+                    try {
+
+                        String id = RampartUtil.getSecConvToken(rmd, secConvTok);
+                        rmd.setSecConvTokenId(id);
+                        
+                    } catch (TrustException e) {
+                        throw new RampartException("errorInObtainingSct", e);
+                    }
+                }
+            }
+            
+            //If it was the ProtectionToken assertion then sigTok is the
+            //same as encrTok
+            if(sigTok.equals(encrTok) && sigTok instanceof IssuedToken) {
+                
+                log.debug("Symmetric binding uses a ProtectionToken, both" +
+                        " SignatureToken and EncryptionToken are the same");
+                
+                rmd.setIssuedEncryptionTokenId(rmd.getIssuedEncryptionTokenId());
+            } else {
+                //Now we'll have to obtain the encryption token as well :-)
+                //ASSUMPTION: SecureConversationToken is used as a 
+                //ProtectionToken therfore we only have to process a issued 
+                //token here
+                
+                log.debug("Obtaining the Encryption Token");
+                if(rmd.getIssuedEncryptionTokenId() != null) {
+                    
+                    log.debug("EncrytionToken not alredy set");
+
+                    IssuedToken issuedToken = (IssuedToken)encrTok;
+                        
+                    String id = RampartUtil.getIssuedToken(rmd, 
+                            issuedToken);
+                    rmd.setIssuedEncryptionTokenId(id);
+
+                }
+                
+            }
+        }
+        
+        //TODO : Support processing IssuedToken and SecConvToken assertoins
+        //in supporting tokens, right now we only support UsernameTokens and 
+        //X.509 Tokens
+    }
+
+
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/builder/TransportBindingBuilder.java b/rampart_1_1/modules/security/src/org/apache/rampart/builder/TransportBindingBuilder.java
new file mode 100644
index 0000000..33def73
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/builder/TransportBindingBuilder.java
@@ -0,0 +1,329 @@
+/*
+ * Copyright 2004,2005 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.rampart.builder;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.rahas.TrustException;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.RampartMessageData;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.IssuedToken;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.Token;
+import org.apache.ws.secpolicy.model.UsernameToken;
+import org.apache.ws.secpolicy.model.X509Token;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSEncryptionPart;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.conversation.ConversationException;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.message.WSSecDKSign;
+import org.apache.ws.security.message.WSSecEncryptedKey;
+import org.apache.ws.security.message.WSSecSignature;
+import org.apache.ws.security.message.WSSecUsernameToken;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Vector;
+
+public class TransportBindingBuilder extends BindingBuilder {
+
+    private static Log log = LogFactory.getLog(TransportBindingBuilder.class);
+    
+    public void build(RampartMessageData rmd) throws RampartException {
+        
+        log.debug("TransportBindingBuilder build invoked");
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+
+        addTimestamp(rmd);
+        
+        /*
+         * Process Supporting tokens
+         */
+        if(rmd.isClientSide()) {
+            Vector signatureValues = new Vector();
+            
+            SupportingToken sgndSuppTokens = rpd.getSignedSupportingTokens();
+            
+            if(sgndSuppTokens != null && sgndSuppTokens.getTokens() != null &&
+                    sgndSuppTokens.getTokens().size() > 0) {
+                
+                log.debug("Processing signed supporting tokens");
+                
+                ArrayList tokens = sgndSuppTokens.getTokens();
+                for (Iterator iter = tokens.iterator(); iter.hasNext();) {
+                    
+                    Token token = (Token) iter.next();
+                    if(token instanceof UsernameToken) {
+                        WSSecUsernameToken utBuilder = addUsernameToken(rmd);
+                        utBuilder.setPasswordType(WSConstants.PASSWORD_TEXT);
+                        
+                        utBuilder.prepare(rmd.getDocument());
+                        
+                        //Add the UT
+                        utBuilder.appendToHeader(rmd.getSecHeader());
+                        
+                    } else {
+                        throw new RampartException("unsupportedSignedSupportingToken", 
+                                new String[]{"{" +token.getName().getNamespaceURI() 
+                                + "}" + token.getName().getLocalPart()});
+                    }
+                }
+            }
+            
+            SupportingToken sgndEndSuppTokens = rpd.getSignedEndorsingSupportingTokens();
+            if(sgndEndSuppTokens != null && sgndEndSuppTokens.getTokens() != null &&
+                    sgndEndSuppTokens.getTokens().size() > 0) {
+                
+                log.debug("Processing endorsing signed supporting tokens");
+                
+                ArrayList tokens = sgndEndSuppTokens.getTokens();
+                for (Iterator iter = tokens.iterator(); iter.hasNext();) {
+                    Token token = (Token) iter.next();
+                    if(token instanceof IssuedToken && rmd.isClientSide()) {
+                        signatureValues.add(doIssuedTokenSignature(rmd, token));
+                    } else if(token instanceof X509Token) {
+                        signatureValues.add(doX509TokenSignature(rmd, token));
+                    }
+                }
+            }
+    
+            SupportingToken endSupptokens = rpd.getEndorsingSupportingTokens();
+            if(endSupptokens != null && endSupptokens.getTokens() != null &&
+                    endSupptokens.getTokens().size() > 0) {
+                log.debug("Processing endorsing supporting tokens");
+                ArrayList tokens = endSupptokens.getTokens();
+                for (Iterator iter = tokens.iterator(); iter.hasNext();) {
+                    Token token = (Token) iter.next();
+                    if(token instanceof IssuedToken && rmd.isClientSide()){
+                        signatureValues.add(doIssuedTokenSignature(rmd, token));
+                    } else if(token instanceof X509Token) {
+                        signatureValues.add(doX509TokenSignature(rmd, token));
+                    }
+                }
+            }
+            
+            //Store the signature values vector
+            rmd.getMsgContext().setProperty(WSHandlerConstants.SEND_SIGV, signatureValues);
+        } else {
+            addSignatureConfirmation(rmd, null);
+        }
+    }
+
+
+
+    /**
+     * X.509 signature
+     * @param rmd
+     * @param token
+     */
+    private byte[] doX509TokenSignature(RampartMessageData rmd, Token token) throws RampartException {
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        Document doc = rmd.getDocument();
+        
+        if(token.isDerivedKeys()) {
+            //In this case we will have to encrypt the ephmeral key with the 
+            //other party's key and then use it as the parent key of the
+            // derived keys
+            try {
+                
+                WSSecEncryptedKey encrKey = getEncryptedKeyBuilder(rmd, token);
+                
+                Element bstElem = encrKey.getBinarySecurityTokenElement();
+                if(bstElem != null) {
+                   RampartUtil.appendChildToSecHeader(rmd, bstElem); 
+                }
+                
+                encrKey.appendToHeader(rmd.getSecHeader());
+                
+                WSSecDKSign dkSig = new WSSecDKSign();
+                
+                dkSig.setWsConfig(rmd.getConfig());
+                
+                dkSig.setSigCanonicalization(rpd.getAlgorithmSuite().getInclusiveC14n());
+                dkSig.setSignatureAlgorithm(rpd.getAlgorithmSuite().getSymmetricSignature());
+                dkSig.setDerivedKeyLength(rpd.getAlgorithmSuite().getMinimumSymmetricKeyLength()/8);
+                
+                dkSig.setExternalKey(encrKey.getEphemeralKey(), encrKey.getId());
+                
+                dkSig.prepare(doc, rmd.getSecHeader());
+                
+                Vector sigParts = new  Vector();
+                
+                sigParts.add(new WSEncryptionPart(rmd.getTimestampId()));                          
+                
+                if(rpd.isTokenProtection()) {
+                    sigParts.add(new WSEncryptionPart(encrKey.getBSTTokenId()));
+                }
+                
+                dkSig.setParts(sigParts);
+                
+                dkSig.addReferencesToSign(sigParts, rmd.getSecHeader());
+                
+                //Do signature
+                dkSig.computeSignature();
+                
+                dkSig.appendDKElementToHeader(rmd.getSecHeader());
+
+                dkSig.appendSigToHeader(rmd.getSecHeader());
+                
+                return dkSig.getSignatureValue();
+                
+            } catch (WSSecurityException e) {
+                throw new RampartException("errorInDerivedKeyTokenSignature", e);
+            } catch (ConversationException e) {
+                throw new RampartException("errorInDerivedKeyTokenSignature", e);
+            }
+            
+        } else {
+            
+            try {
+                WSSecSignature sig = this.getSignatureBuider(rmd, token);
+                
+
+                sig.appendBSTElementToHeader(rmd.getSecHeader());
+                
+                Vector sigParts = new Vector();
+                sigParts.add(new WSEncryptionPart(rmd.getTimestampId()));
+                if (rpd.isTokenProtection()
+                        && !Constants.INCLUDE_NEVER
+                                .equals(token.getInclusion())) {
+                    sigParts.add(new WSEncryptionPart(sig.getBSTTokenId()));
+                }
+                
+                sig.addReferencesToSign(sigParts, rmd.getSecHeader());
+                
+                sig.appendToHeader(rmd.getSecHeader());
+                
+                sig.computeSignature();
+                
+                return sig.getSignatureValue();    
+            } catch (WSSecurityException e) {
+                throw new RampartException("errorInSignatureWithX509Token", e);
+            }
+            
+            
+        }
+        
+    }
+
+
+    /**
+     * IssuedToken signature
+     * @param rmd
+     * @param token
+     * @throws RampartException
+     */
+    private byte[] doIssuedTokenSignature(RampartMessageData rmd, Token token) throws RampartException {
+        
+        RampartPolicyData rpd = rmd.getPolicyData();
+        Document doc= rmd.getDocument();
+        
+        //Get the issued token
+        String id = RampartUtil.getIssuedToken(rmd, (IssuedToken)token);
+   
+        String inclusion = token.getInclusion();
+        org.apache.rahas.Token tok = null;
+        try {
+          tok = rmd.getTokenStorage().getToken(id);
+        } catch (TrustException e) {
+          throw new RampartException("errorExtractingToken",
+                  new String[]{id} ,e);
+        }
+   
+        boolean tokenIncluded = false;
+        
+        if(inclusion.equals(Constants.INCLUDE_ALWAYS) ||
+        ((inclusion.equals(Constants.INCLUDE_ALWAYS_TO_RECIPIENT) 
+                || inclusion.equals(Constants.INCLUDE_ONCE)) 
+                && rmd.isClientSide())) {
+          
+            //Add the token
+            rmd.getSecHeader().getSecurityHeader().appendChild(
+                  doc.importNode((Element) tok.getToken(), true));
+          
+            tokenIncluded = true;
+        }
+   
+        //check for dirived keys
+        if(token.isDerivedKeys()) {
+          //Create a derived key and add
+          try {
+   
+              //Do Signature with derived keys
+              WSSecDKSign dkSign = new WSSecDKSign();
+              
+              OMElement ref = tok.getAttachedReference();
+              if(ref == null) {
+                  ref = tok.getUnattachedReference();
+              }
+              if(ref != null) {
+                  dkSign.setExternalKey(tok.getSecret(), (Element) 
+                          doc.importNode((Element) ref, true));
+              } else {
+                  dkSign.setExternalKey(tok.getSecret(), tok.getId());
+              }
+              
+              //Set the algo info
+              dkSign.setSignatureAlgorithm(rpd.getAlgorithmSuite().getSymmetricSignature());
+              
+              
+              dkSign.prepare(doc);
+              
+              dkSign.appendDKElementToHeader(rmd.getSecHeader());
+              
+              Vector sigParts = new  Vector();
+              
+              sigParts.add(new WSEncryptionPart(rmd.getTimestampId()));                          
+              
+              if(rpd.isTokenProtection() && tokenIncluded) {
+                  sigParts.add(new WSEncryptionPart(id));
+              }
+              
+              dkSign.setParts(sigParts);
+              
+              dkSign.addReferencesToSign(sigParts, rmd.getSecHeader());
+              
+              //Do signature
+              dkSign.computeSignature();
+              
+              dkSign.appendSigToHeader(rmd.getSecHeader());
+              
+              return dkSign.getSignatureValue();
+              
+          } catch (ConversationException e) {
+              throw new RampartException(
+                      "errorInDerivedKeyTokenSignature", e);
+          } catch (WSSecurityException e) {
+              throw new RampartException(
+                      "errorInDerivedKeyTokenSignature", e);
+          }
+          
+        } else {
+          //TODO: Do signature withtout derived keys with the Issuedtoken ??
+            return null;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/conversation/ConversationCallbackHandler.java b/rampart_1_1/modules/security/src/org/apache/rampart/conversation/ConversationCallbackHandler.java
new file mode 100644
index 0000000..4b43b48
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/conversation/ConversationCallbackHandler.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2004,2005 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.rampart.conversation;
+
+import org.apache.rahas.Token;
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+/**
+ * This is ths callback handler used to extract he secure conversation
+ * session key for a given context identifier
+ * @deprecated 
+ */
+public class ConversationCallbackHandler implements CallbackHandler {
+
+    private ConversationConfiguration config;
+    
+    public ConversationCallbackHandler(ConversationConfiguration config) {
+        this.config = config;
+    }
+    
+    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+                String id = pc.getIdentifer();
+                Token tok;
+                try {
+                    //Pick up the token from the token store
+                    tok = this.config.getTokenStore().getToken(id);
+                    //Get the secret and set it in the callback object
+                    pc.setKey(tok.getSecret());
+                    //Register the security context in the current configuration
+                    Util.resgisterContext(id, config);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw new IOException(e.getMessage());
+                }
+
+            } else {
+                throw new UnsupportedCallbackException(callbacks[i],
+                        "Unrecognized Callback");
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/conversation/ConversationConfiguration.java b/rampart_1_1/modules/security/src/org/apache/rampart/conversation/ConversationConfiguration.java
new file mode 100644
index 0000000..663686f
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/conversation/ConversationConfiguration.java
@@ -0,0 +1,688 @@
+/*
+ * Copyright 2004,2005 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.rampart.conversation;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.SimpleTokenStore;
+import org.apache.rahas.TokenStorage;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.ws.security.components.crypto.Crypto;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.message.token.SecurityContextToken;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.security.auth.callback.CallbackHandler;
+import javax.xml.namespace.QName;
+
+import java.util.Hashtable;
+import java.util.Properties;
+
+/**
+ * Configuration manager for Ramapart-SecConv
+ * @deprecated
+ */
+public class ConversationConfiguration {
+    
+    public final static String SC_CONFIG = "sc-configuration";
+    
+    public final static String SCOPE_SERVICE = "service";
+    
+    public final static String SCOPE_OPERATION = "operation";
+
+    public final static QName SCOPE = new QName("scope");
+    
+    public final static QName STS_EPR_ADDRESS = new QName("stsEprAddress");
+    
+    public final static QName DERIVED_KEY_LENGTH = new QName("derivedKeyLength");
+    
+    public final static QName KEY_DERIVATION_ALGORITHM_CLASS = 
+                              new QName("keyDerivationAlgorithmClass");
+    
+    public final static QName TOKEN_STORE_CLASS = new QName("tokenStoreClass");
+    
+    public final static QName CRYPTO_PROPERTIES_FILE = new QName(
+            "cryptoProperties");
+    
+    public final static QName ENCRYPTION_USER = new QName("encryptionUser");
+    
+    public final static QName PW_CALLBACK_CLASS = new QName(
+            WSHandlerConstants.PW_CALLBACK_CLASS);
+
+    private static final QName PROVIDE_ENTROPY = new QName("provideEntropy");
+    
+    private String scope = SCOPE_SERVICE;
+    
+    private String stsEPRAddress;
+    
+    private String derivedKeyLength;
+    
+    private String keyDerivationAlgorithmClass;
+    
+    private Hashtable contextMap;
+    
+    private String tokenStoreClass;
+    
+    private TokenStorage tokenStore;
+
+    private MessageContext msgCtx;
+    
+    private String contextIdentifier;
+    
+    /**
+     * This is the properties of a particular <code>Crypto</code> impl
+     * 
+     * @see org.apache.ws.security.components.crypto.Crypto
+     */
+    private Properties cryptoProperties;
+    
+    /**
+     * This is the <code>Crypto</code> impl class name.
+     * 
+     * This will ONLY be set via the message context as a property using 
+     * <code>org.apache.rampart.WSSHandlerConstants#CRYPTO_PROPERTIES_KEY<code>. 
+     * 
+     * @see org.apache.ws.security.components.crypto.Crypto
+     * @see org.apache.ws.security.components.crypto.Merlin
+     */
+    private String cryptoClassName;
+    
+    /**
+     * This is the crypto properties file to be used
+     * In this case the <code>Crypto</code> impl and its properties 
+     * MUST be listed in this
+     * @see org.apache.ws.security.components.crypto.CryptoFactory#getInstance(String)
+     */
+    private String cryptoPropertiesFile;
+    
+    private String passwordCallbackClass;
+    
+    /**
+     * WSPasswordCallback handler reference
+     */
+    private CallbackHandler passwordCallbackRef;
+    
+    /**
+     * Whether this configuration instance is created/used by the sender 
+     * handler or not
+     */
+    private boolean sender;
+    
+    private Document doc;
+    
+    private Crypto crypto;
+    
+    private ClassLoader classLoader;
+    
+    private SecurityContextToken sct;
+    
+    private String encryptionUser;
+    
+    private boolean provideEntropy;
+    
+    /**
+     * WS-Trust version to use
+     * Default is RahasConstants.VERSION_05_02
+     */
+    private int wstVersion = RahasConstants.VERSION_05_02;
+    
+    /**
+     * Builds the configuration from an Axis2 parameter.
+     * @param msgCtx
+     * @param sender
+     * @return If there is an Axis2 parameter available in the context
+     * hierarchy or the configuration hierarchy then return the populated
+     * <code>ConversationConfiguration</code> instance. If the parameter is not
+     * found then  
+     * @throws Exception
+     */
+    public static ConversationConfiguration load(MessageContext msgCtx, boolean sender)
+            throws Exception {
+        Parameter param = getParameter(msgCtx);
+        if(param != null) {
+            OMElement elem = param.getParameterElement();
+            if (elem != null
+                    && elem.getFirstElement() != null
+                    && elem.getFirstElement().getLocalName().equals(
+                            SC_CONFIG)) {
+                
+                OMElement confElem = elem.getFirstElement();
+                
+                ConversationConfiguration config = new ConversationConfiguration();
+                
+                config.msgCtx = msgCtx;
+                msgCtx.setProperty(SC_CONFIG, config);
+                
+                config.scope = getStringValue(confElem.getFirstChildWithName(SCOPE));
+                
+                config.stsEPRAddress = getStringValue(confElem
+                        .getFirstChildWithName(STS_EPR_ADDRESS));
+
+                config.keyDerivationAlgorithmClass = getStringValue(confElem
+                        .getFirstChildWithName(KEY_DERIVATION_ALGORITHM_CLASS));
+                
+                config.tokenStoreClass = getStringValue(confElem
+                        .getFirstChildWithName(TOKEN_STORE_CLASS));
+                
+                config.cryptoPropertiesFile = getStringValue(confElem
+                        .getFirstChildWithName(CRYPTO_PROPERTIES_FILE));
+
+                config.passwordCallbackClass = getStringValue(confElem
+                        .getFirstChildWithName(PW_CALLBACK_CLASS));
+                
+                config.encryptionUser = getStringValue(confElem
+                        .getFirstChildWithName(ENCRYPTION_USER));
+                
+                config.provideEntropy = confElem
+                        .getFirstChildWithName(PROVIDE_ENTROPY) != null;
+                
+                //Get the action<->ctx-identifier map
+                config.contextMap = (Hashtable) msgCtx
+                        .getProperty(WSSHandlerConstants.CONTEXT_MAP_KEY);
+
+                //Convert the Envelop to DOOM
+                config.doc = Axis2Util.getDocumentFromSOAPEnvelope(msgCtx
+                        .getEnvelope(), false);
+                
+                //Token store
+                config.tokenStore = (TokenStorage) msgCtx
+                        .getProperty(TokenStorage.TOKEN_STORAGE_KEY);
+    
+                // Context identifier
+                if(sender) {
+                    if(!msgCtx.isServerSide()) {
+                        //Client side sender
+                        if (config.scope.equals(ConversationConfiguration.SCOPE_OPERATION)) {
+                            // Operation scope
+                            String action = msgCtx.getSoapAction();
+                            config.contextIdentifier = (String) config.getContextMap()
+                                    .get(action);
+                        } else {
+                            // Service scope
+                            String serviceAddress = msgCtx.getTo().getAddress();
+                            config.contextIdentifier = (String) config.getContextMap()
+                                    .get(serviceAddress);
+                        }
+                        if(config.sct == null && config.contextIdentifier != null) {
+                            OMElement tokElem = config.getTokenStore().getToken(config.contextIdentifier).getToken();
+                            config.sct = new SecurityContextToken((Element)config.doc.importNode((Element)tokElem, true));
+                        }
+                        
+                    } else {
+                        //Server side sender
+                        OperationContext opCtx = msgCtx.getOperationContext();
+                        MessageContext inMsgCtx;
+                        ConversationConfiguration inConfig = null;
+                        if(opCtx != null && (inMsgCtx = opCtx.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)) != null) {
+                            inConfig = (ConversationConfiguration)inMsgCtx.getProperty(SC_CONFIG);
+                        }
+                        if(inConfig != null && inConfig.contextIdentifier != null) {
+                            config.contextIdentifier = inConfig.contextIdentifier;
+                            config.tokenStore = inConfig.tokenStore;
+                            OMElement token = config.tokenStore.getToken(config.contextIdentifier).getToken();
+                            config.sct = new SecurityContextToken((Element)config.doc.importNode((Element)token, true));
+                        } else {
+                            throw new RampartException("canotFindContextIdentifier");
+                        }
+                        
+                        config.setClassLoader(msgCtx.getAxisService().getClassLoader());
+                    }
+                }
+
+                //Crypto properties
+                config.cryptoProperties = (Properties)msgCtx
+                        .getProperty(WSSHandlerConstants.CRYPTO_PROPERTIES_KEY);
+
+                config.cryptoClassName = (String) msgCtx
+                        .getProperty(WSSHandlerConstants.CRYPTO_CLASS_KEY);
+                
+                config.passwordCallbackRef = (CallbackHandler)msgCtx
+                        .getProperty(WSHandlerConstants.PW_CALLBACK_REF);
+                
+                config.sender = sender;
+                
+                return config;
+            } else {
+                throw new RampartException("missingConfiguration",
+                        new String[] { SC_CONFIG });
+            }
+        } else {
+            //If there's no configuration return null
+            return null;
+        }
+        
+    }
+
+    /**
+     * @param msgCtx
+     * @return The configuration parameter from the given message context
+     */
+    public static Parameter getParameter(MessageContext msgCtx) {
+        Parameter param = msgCtx.getParameter(SC_CONFIG);
+        if(param == null) {
+            param = (Parameter)msgCtx.getProperty(SC_CONFIG);
+        }
+        return param;
+    }
+
+    /**
+     * @param elem
+     * @throws RampartException
+     */
+    private static String getStringValue(OMElement elem) throws RampartException {
+        if(elem != null) {
+            return elem.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Generate the Axis2 parameter representing ConversationConfiguration
+     * @return The Axis2 parameter representing ConversationConfiguration
+     */
+    public Parameter getParameter() {
+        Parameter param = new Parameter();
+        OMElement element = this.getOMElement();
+        OMElement paramElem = element.getOMFactory().createOMElement("parameter", null);
+        paramElem.addAttribute("name", ConversationConfiguration.SC_CONFIG, null);
+        paramElem.addChild(element);
+        param.setParameterElement(paramElem);
+        return param;
+    }
+    
+    private OMElement getOMElement() {
+        OMFactory factory = OMAbstractFactory.getOMFactory();
+        OMElement elem = factory.createOMElement(SC_CONFIG, null);
+        if (this.scope != null) {
+            OMElement tempElem = factory.createOMElement(SCOPE, elem);
+            tempElem.setText(this.scope);
+            elem.addChild(tempElem);
+        }
+        if (this.stsEPRAddress != null) {
+            OMElement tempElem = factory.createOMElement(STS_EPR_ADDRESS, elem);
+            tempElem.setText(this.stsEPRAddress);
+            elem.addChild(tempElem);
+        }
+        if (this.derivedKeyLength != null) {
+            OMElement tempElem = factory.createOMElement(DERIVED_KEY_LENGTH, elem);
+            tempElem.setText(this.derivedKeyLength);
+            elem.addChild(tempElem);
+        }
+        if (this.keyDerivationAlgorithmClass != null) {
+            OMElement tempElem = factory.createOMElement(KEY_DERIVATION_ALGORITHM_CLASS, elem);
+            tempElem.setText(this.keyDerivationAlgorithmClass);
+            elem.addChild(tempElem);
+        }
+        if (this.passwordCallbackClass != null) {
+            OMElement tempElem = factory.createOMElement(PW_CALLBACK_CLASS, elem);
+            tempElem.setText(this.passwordCallbackClass);
+            elem.addChild(tempElem);
+        }
+        if(this.cryptoPropertiesFile != null) {
+            OMElement tempElem = factory.createOMElement(CRYPTO_PROPERTIES_FILE, elem);
+            tempElem.setText(this.cryptoPropertiesFile);
+            elem.addChild(tempElem);
+        }
+        if(this.encryptionUser != null) {
+            OMElement tempElem = factory.createOMElement(ENCRYPTION_USER, elem);
+            tempElem.setText(this.encryptionUser);
+            elem.addChild(tempElem);
+        }
+        if(this.provideEntropy) {
+            factory.createOMElement(PROVIDE_ENTROPY, elem);
+        }
+        return elem;
+    }
+    
+//    /**
+//     * This registers the security context mapping ?e context identifier to 
+//     * the wsa:Action/soapAction or the service address, depending on the scope.
+//     * 
+//     * @param identifier The security context identifier
+//     * @throws RampartException 
+//     *      If scope is "operation" and the wsa:Action is not available.
+//     *      If scope is "service" and the wsa:To is missing.  
+//     */
+//    protected void resgisterContext(String identifier) throws RampartException {
+//        this.contextIdentifier = identifier;
+//        
+//        if(this.scope.equals(SCOPE_OPERATION)) {
+//            String action = msgCtx.getSoapAction();
+//            if(action != null) {
+//                this.getContextMap().put(action, identifier);
+//            } else {
+//                throw new RampartException("missingWSAAction");
+//            }
+//        } else {
+//            String to = msgCtx.getTo().getAddress();
+//            if(to != null) {
+//                this.getContextMap().put(to, identifier);
+//            } else {
+//                throw new RampartException("missingWSATo");
+//            }
+//        }
+//        //TODO
+//        //this.contextMap
+//    }
+    
+    /**
+     * @return Returns the scope.
+     */
+    public String getScope() {
+        return scope;
+    }
+
+    /**
+     * @return Returns the stsEPR.
+     */
+    public String getStsEPRAddress() {
+        return stsEPRAddress;
+    }
+
+    /**
+     * @return Returns the derivedKeyLength.
+     */
+    public String getDerivedKeyLength() {
+        return derivedKeyLength;
+    }
+
+    /**
+     * @return Returns the keyDerivationAlgorithmClass.
+     */
+    public String getKeyDerivationAlgorithmClass() {
+        return keyDerivationAlgorithmClass;
+    }
+
+    /**
+     * @param derivedKeyLength The derivedKeyLength to set.
+     */
+    public void setDerivedKeyLength(String derivedKeyLength) {
+        this.derivedKeyLength = derivedKeyLength;
+    }
+
+    /**
+     * @param keyDerivationAlgorithmClass The keyDerivationAlgorithmClass to set.
+     */
+    public void setKeyDerivationAlgorithmClass(String keyDerivationAlgorithmClass) {
+        this.keyDerivationAlgorithmClass = keyDerivationAlgorithmClass;
+    }
+
+    /**
+     * @param scope The scope to set.
+     */
+    public void setScope(String scope) {
+        this.scope = scope;
+    }
+
+    /**
+     * @param stsEPRAddress The stsEPRAddress to set.
+     */
+    public void setStsEPRAddress(String stsEPRAddress) {
+        this.stsEPRAddress = stsEPRAddress;
+    }
+
+    /**
+     * @return Returns the contextMap.
+     */
+    protected Hashtable getContextMap() {
+        if(contextMap == null) {
+            contextMap = new Hashtable();
+            
+            //Context map should be global
+            this.msgCtx.getConfigurationContext().setProperty(
+                    WSSHandlerConstants.CONTEXT_MAP_KEY, contextMap);
+        }
+        
+        return contextMap;
+    }
+
+    /**
+     * @return Returns the tokenStore.
+     */
+    public TokenStorage getTokenStore() throws Exception {
+        if(this.tokenStore == null) {
+            
+            //First check the context hierarchy
+            this.tokenStore = (TokenStorage) this.msgCtx
+                    .getProperty(TokenStorage.TOKEN_STORAGE_KEY
+                            + msgCtx.getWSAAction());
+            if(this.tokenStore == null) {
+                this.tokenStore = (TokenStorage) this.msgCtx
+                .getProperty(TokenStorage.TOKEN_STORAGE_KEY
+                        + msgCtx.getAxisService().getName()); 
+            }
+            
+            //Create a new store
+            if(this.tokenStore == null) {
+                if(this.tokenStoreClass != null) {
+                     this.tokenStore = (TokenStorage) Class
+                            .forName(this.tokenStoreClass).newInstance();
+                } else {
+                    this.tokenStore = new SimpleTokenStore();
+                }
+            }
+            
+            if(SCOPE_SERVICE.equals(this.scope)) {
+                this.msgCtx.getConfigurationContext().setProperty(
+                        TokenStorage.TOKEN_STORAGE_KEY, this.tokenStore);
+            } else {
+                this.msgCtx.getConfigurationContext().setProperty(
+                        TokenStorage.TOKEN_STORAGE_KEY, this.tokenStore);
+            }
+        }
+        return tokenStore;
+    }
+
+    /**
+     * @return Returns the tokenStoreClass.
+     */
+    public String getTokenStoreClass() {
+        return tokenStoreClass;
+    }
+
+
+    /**
+     * @return Returns the cryptoProperties.
+     */
+    public Properties getCryptoProperties() {
+        return cryptoProperties;
+    }
+
+    /**
+     * @param cryptoProperties The cryptoProperties to set.
+     */
+    public void setCryptoProperties(Properties cryptoProperties) {
+        this.cryptoProperties = cryptoProperties;
+    }
+
+    /**
+     * @param tokenStoreClass The tokenStoreClass to set.
+     */
+    public void setTokenStoreClass(String tokenStoreClass) {
+        this.tokenStoreClass = tokenStoreClass;
+    }
+
+    /**
+     * @return Returns the cryptoPropertiesFile.
+     */
+    public String getCryptoPropertiesFile() {
+        return cryptoPropertiesFile;
+    }
+
+    /**
+     * @param cryptoPropertiesFile The cryptoPropertiesFile to set.
+     */
+    public void setCryptoPropertiesFile(String cryptoPropertiesFile) {
+        this.cryptoPropertiesFile = cryptoPropertiesFile;
+    }
+
+    /**
+     * @return Returns the cryptoClassName.
+     */
+    public String getCryptoClassName() {
+        return cryptoClassName;
+    }
+
+    /**
+     * @param cryptoClassName The cryptoClassName to set.
+     */
+    public void setCryptoClassName(String cryptoClassName) {
+        this.cryptoClassName = cryptoClassName;
+    }
+
+    /**
+     * @return Returns the sender.
+     */
+    protected boolean isSender() {
+        return sender;
+    }
+
+    /**
+     * @return Returns the doc.
+     */
+    public Document getDocument() {
+        return doc;
+    }
+
+    /**
+     * @param doc The doc to set.
+     */
+    protected void setDocument(Document doc) {
+        this.doc = doc;
+    }
+
+    /**
+     * @return Returns the passwordCallbackClass.
+     */
+    public String getPasswordCallbackClass() {
+        return passwordCallbackClass;
+    }
+
+    /**
+     * @return Returns the passwordCallbackRef.
+     */
+    public CallbackHandler getPasswordCallbackRef() {
+        return passwordCallbackRef;
+    }
+
+    /**
+     * @param passwordCallbackClass The passwordCallbackClass to set.
+     */
+    public void setPasswordCallbackClass(String passwordCallbackClass) {
+        this.passwordCallbackClass = passwordCallbackClass;
+    }
+
+    /**
+     * @return Returns the encryptionUser.
+     */
+    public String getEncryptionUser() {
+        return encryptionUser;
+    }
+
+    /**
+     * @param encryptionUser The encryptionUser to set.
+     */
+    public void setEncryptionUser(String encryptionUser) {
+        this.encryptionUser = encryptionUser;
+    }
+
+    /**
+     * @return Returns the provideEntropy.
+     */
+    public boolean isProvideEntropy() {
+        return provideEntropy;
+    }
+
+    /**
+     * @param provideEntropy The provideEntropy to set.
+     */
+    public void setProvideEntropy(boolean provideEntropy) {
+        this.provideEntropy = provideEntropy;
+    }
+
+    /**
+     * @return Returns the crypto.
+     */
+    public Crypto getCrypto() {
+        return crypto;
+    }
+
+    /**
+     * @param crypto The crypto to set.
+     */
+    protected void setCrypto(Crypto crypto) {
+        this.crypto = crypto;
+    }
+
+    /**
+     * @return Returns the classLoader.
+     */
+    protected ClassLoader getClassLoader() {
+        return classLoader;
+    }
+
+    /**
+     * @param classLoader The classLoader to set.
+     */
+    protected void setClassLoader(ClassLoader classLoader) {
+        this.classLoader = classLoader;
+    }
+
+    /**
+     * @return Returns the msgCtx.
+     */
+    public MessageContext getMsgCtx() {
+        return msgCtx;
+    }
+    
+    /**
+     * @return Returns the contextIdentifier.
+     */
+    public String getContextIdentifier() {
+        return contextIdentifier;
+    }
+
+    /**
+     * @param contextIdentifier The contextIdentifier to set.
+     */
+    protected void setContextIdentifier(String contextIdentifier) {
+        this.contextIdentifier = contextIdentifier;
+    }
+
+    /**
+     * @return Returns the wstVersion.
+     */
+    public int getWstVersion() {
+        return wstVersion;
+    }
+
+    /**
+     * @param wstVersion The wstVersion to set.
+     */
+    public void setWstVersion(int wstVersion) {
+        this.wstVersion = wstVersion;
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/conversation/STSRequester.java b/rampart_1_1/modules/security/src/org/apache/rampart/conversation/STSRequester.java
new file mode 100644
index 0000000..5ed3a10
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/conversation/STSRequester.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2004,2005 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.rampart.conversation;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.util.Base64;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.ws.security.conversation.ConversationConstants;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.w3c.dom.Element;
+
+import javax.xml.namespace.QName;
+
+/**
+ * @deprecated
+ */
+public class STSRequester {
+    
+    
+    //TODO: Remove when policy support is completed
+    public static void issueRequest(ConversationConfiguration config) throws RampartException, AxisFault, TrustException  {
+        MessageContext msgCtx = config.getMsgCtx();
+        AxisService axisService = new AxisService("SecurityTokenService");
+        QName rstQn = new QName("requestSecurityToken");
+        OutInAxisOperation operation = new OutInAxisOperation(rstQn);
+        axisService.addOperation(operation);
+        ServiceClient client = new ServiceClient(msgCtx
+                .getConfigurationContext(), axisService);
+        
+        Options options = new Options();
+        options.setTo(new EndpointReference(config.getStsEPRAddress()));
+        
+        options.setAction(TrustUtil.getActionValue(config.getWstVersion(), RahasConstants.RST_ACTION_SCT));
+
+        //Get the security configurations
+        Parameter outFlowParam = msgCtx
+                .getParameter(WSSHandlerConstants.STS_OUTFLOW_SECURITY);
+        Parameter inFlowParam = msgCtx
+                .getParameter(WSSHandlerConstants.STS_INFLOW_SECURITY);
+        
+        if(outFlowParam == null) {
+            outFlowParam = (Parameter) msgCtx
+                    .getProperty(WSSHandlerConstants.STS_OUTFLOW_SECURITY);
+        }
+        if(inFlowParam == null) {
+            inFlowParam = (Parameter) msgCtx
+                    .getProperty(WSSHandlerConstants.STS_INFLOW_SECURITY);
+        }
+        
+        
+        //Set the STS specific config config
+        options.setProperty(WSSHandlerConstants.OUTFLOW_SECURITY, outFlowParam);
+        options.setProperty(WSSHandlerConstants.INFLOW_SECURITY, inFlowParam);
+        
+        client.engageModule(new QName(WSSHandlerConstants.SECURITY_MODULE_NAME));
+        
+        client.setOptions(options);
+
+        try {
+            OMElement rstElem = TrustUtil.createRequestSecurityTokenElement(config.getWstVersion());
+            TrustUtil.createRequestTypeElement(config.getWstVersion(), rstElem, RahasConstants.REQ_TYPE_ISSUE);
+            OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(config.getWstVersion(), rstElem);
+            tokenTypeElem.setText(ConversationConstants.getWSCNs(ConversationConstants.DEFAULT_VERSION) + ConversationConstants.TOKEN_TYPE_SECURITY_CONTEXT_TOKEN);
+            
+            if(config.isProvideEntropy()) {
+                //TODO Option to get the nonce lenght and  
+                //keysize from the the configuration
+                
+                // Length of nonce in bytes
+                int nonceLength = 16;
+
+                OMElement entropyElem = TrustUtil.createEntropyElement(config.getWstVersion(), rstElem);
+                
+                byte[] nonce = WSSecurityUtil.generateNonce(nonceLength);
+                OMElement elem = TrustUtil.createBinarySecretElement(config.getWstVersion(), entropyElem, RahasConstants.BIN_SEC_TYPE_NONCE);
+         
+                elem.setText(Base64.encode(nonce));
+
+                TrustUtil.createKeySizeElement(config.getWstVersion(), rstElem, nonceLength * 8);
+            }
+
+            OMElement tempResult = client.sendReceive(rstQn, rstElem);
+            Axis2Util.useDOOM(true);
+            OMElement tempelem = Axis2Util.toDOOM(DOOMAbstractFactory.getOMFactory(), tempResult);
+            OMElement elem = (OMElement)config.getDocument().importNode((Element)tempelem, true);
+            Util.processRSTR(elem, config);
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RampartException("errorInObtainingSct",
+                    new String[] { config.getStsEPRAddress() }, e);
+        }
+    }
+
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/conversation/Util.java b/rampart_1_1/modules/security/src/org/apache/rampart/conversation/Util.java
new file mode 100644
index 0000000..05b76d5
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/conversation/Util.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright 2004,2005 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.rampart.conversation;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.util.Base64;
+import org.apache.axis2.util.Loader;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.Token;
+import org.apache.rahas.TrustException;
+import org.apache.rampart.RampartException;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.components.crypto.Crypto;
+import org.apache.ws.security.components.crypto.CryptoFactory;
+import org.apache.ws.security.message.token.SecurityContextToken;
+import org.apache.ws.security.processor.EncryptedKeyProcessor;
+import org.w3c.dom.Element;
+
+import javax.security.auth.callback.CallbackHandler;
+import javax.xml.namespace.QName;
+import java.util.Vector;
+
+public class Util {
+
+    /**
+     * Returns the crypto instance of this configuration. If one is not
+     * availabale then it will try to create a <code>Crypto</code> instance
+     * using available configuration information and will set it as the
+     * <code>Crypto</code> instance of the configuration.
+     *
+     * @param config
+     * @return The crypto instance of this configuration
+     * @throws RahasException
+     */
+    public static Crypto getCryptoInstace(ConversationConfiguration config)
+            throws RampartException {
+        if (config.getCrypto() != null) {
+            return config.getCrypto();
+        } else {
+            Crypto crypto = null;
+            if (config.getCryptoClassName() != null
+                && config.getCryptoProperties() != null) {
+                crypto = CryptoFactory.getInstance(config.getCryptoClassName(),
+                                                   config.getCryptoProperties());
+            } else if (config.getCryptoPropertiesFile() != null) {
+                if (config.getClassLoader() != null) {
+                    crypto = CryptoFactory
+                            .getInstance(config.getCryptoPropertiesFile(),
+                                         config.getClassLoader());
+                } else {
+                    crypto = CryptoFactory.getInstance(config
+                            .getCryptoPropertiesFile());
+                }
+            } else {
+                throw new RampartException("cannotCrateCryptoInstance");
+            }
+            config.setCrypto(crypto);
+            return crypto;
+        }
+    }
+
+    public static void processRSTR(OMElement rstr, ConversationConfiguration config)
+            throws Exception {
+        // Extract the SecurityContextToken
+
+        String ns = null;
+
+        OMElement rstElem =
+                rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_02,
+                                                     RahasConstants.IssuanceBindingLocalNames.
+                                                             REQUESTED_SECURITY_TOKEN));
+        if (rstElem != null) {
+            ns = RahasConstants.WST_NS_05_02;
+        } else {
+            //At this point we certainthe version is the WS-SX version
+            rstElem =
+                    rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_12,
+                                                         RahasConstants.IssuanceBindingLocalNames.
+                                                                 REQUESTED_SECURITY_TOKEN));
+            ns = RahasConstants.WST_NS_05_12;
+        }
+        Token token = null;
+        if (rstElem != null) {
+            OMElement sctElem = rstElem.getFirstElement();
+            if (sctElem != null) {
+                SecurityContextToken sct = new SecurityContextToken(
+                        (Element) sctElem);
+                token = new Token(sct.getIdentifier(), sctElem, rstr
+                        .getFirstChildWithName(new QName(ns,
+                                                         RahasConstants.IssuanceBindingLocalNames.
+                                                                 LIFETIME)));
+                resgisterContext(sct.getIdentifier(), config);
+            } else {
+                throw new RampartException("sctMissingInResponse");
+            }
+        } else {
+            throw new TrustException("reqestedSecTokMissing");
+        }
+
+        // Process RequestedProofToken and extract the secret
+        byte[] secret = null;
+        OMElement rpt = rstr.getFirstChildWithName(new QName(ns,
+                                                             RahasConstants.LocalNames.
+                                                                     REQUESTED_PROOF_TOKEN));
+        if (rpt != null) {
+            OMElement elem = rpt.getFirstElement();
+
+            if (WSConstants.ENC_KEY_LN.equals(elem.getLocalName())
+                && WSConstants.ENC_NS.equals(elem.getNamespace().getNamespaceURI())) {
+                // Handle the xenc:EncryptedKey case
+                EncryptedKeyProcessor processor = new EncryptedKeyProcessor();
+                processor.handleToken((Element) elem, null, Util
+                        .getCryptoInstace(config),
+                                      getCallbackHandlerInstance(config), null, new Vector(),
+                                      null);
+                secret = processor.getDecryptedBytes();
+            } else if (RahasConstants.LocalNames.BINARY_SECRET.equals(elem.getLocalName()) &&
+                       RahasConstants.WST_NS_05_02.equals(elem.getNamespace().getNamespaceURI()))
+            {
+                // Handle the wst:BinarySecret case
+                secret = Base64.decode(elem.getText());
+            } else {
+                throw new TrustException("notSupported", new String[]{"{"
+                                                                      + elem.getNamespace().getNamespaceURI() + "}"
+                                                                      + elem.getLocalName()});
+            }
+        } else {
+            throw new TrustException("rptMissing");
+        }
+
+        // Check for attached ref
+        OMElement reqAttElem =
+                rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_02,
+                                                     RahasConstants.IssuanceBindingLocalNames.
+                                                             REQUESTED_ATTACHED_REFERENCE));
+        OMElement reqAttRef = reqAttElem == null ? null : reqAttElem
+                .getFirstElement();
+
+        OMElement reqUnattElem =
+                rstr.getFirstChildWithName(new QName(RahasConstants.WST_NS_05_02,
+                                                     RahasConstants.IssuanceBindingLocalNames.
+                                                             REQUESTED_UNATTACHED_REFERENCE));
+        OMElement reqUnattRef = reqUnattElem == null ? null : reqUnattElem
+                .getFirstElement();
+
+        token.setAttachedReference(reqAttRef);
+        token.setUnattachedReference(reqUnattRef);
+        token.setSecret(secret);
+        config.getTokenStore().add(token);
+    }
+
+    private static CallbackHandler getCallbackHandlerInstance(
+            ConversationConfiguration config) throws Exception {
+        if (config.getPasswordCallbackRef() != null) {
+            return config.getPasswordCallbackRef();
+        } else if (config.getPasswordCallbackClass() != null) {
+            if (config.getClassLoader() != null) {
+                Class clazz = Loader.loadClass(config.getClassLoader(), config
+                        .getPasswordCallbackClass());
+                return (CallbackHandler) clazz.newInstance();
+            } else {
+                Class clazz = Loader.loadClass(config
+                        .getPasswordCallbackClass());
+                return (CallbackHandler) clazz.newInstance();
+            }
+        } else {
+            throw new RampartException("noInfoForCBhandler");
+        }
+    }
+
+    /**
+     * This registers the security context mapping ?e context identifier to
+     * the wsa:Action/soapAction or the service address, depending on the scope.
+     *
+     * @param identifier The security context identifier
+     * @param config     The ConversationConfiguration instance
+     * @throws RampartException If scope is "operation" and the wsa:Action is not available.
+     *                          If scope is "service" and the wsa:To is missing.
+     */
+    public static void resgisterContext(String identifier, ConversationConfiguration config) throws RampartException {
+        config.setContextIdentifier(identifier);
+
+        if (config.getScope().equals(ConversationConfiguration.SCOPE_OPERATION)) {
+            String action = config.getMsgCtx().getSoapAction();
+            if (action != null) {
+                config.getContextMap().put(action, identifier);
+            } else {
+                throw new RampartException("missingWSAAction");
+            }
+        } else {
+            String to = config.getMsgCtx().getTo().getAddress();
+            if (to != null) {
+                config.getContextMap().put(to, identifier);
+            } else {
+                throw new RampartException("missingWSATo");
+            }
+        }
+        //TODO
+        //this.contextMap
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/errors.properties b/rampart_1_1/modules/security/src/org/apache/rampart/errors.properties
new file mode 100644
index 0000000..599719d
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/errors.properties
@@ -0,0 +1,83 @@
+# -------------------------------------------------------------------
+# 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.
+# -------------------------------------------------------------------
+
+
+missingConfiguration = Missing or malformed configuration: \"{0}\"
+expectedParameterMissing = Expected parameter missing : \"{0}\" 
+missingScopeValue = Missing or incorrect scope value
+canotFindContextIdentifier = Cannot find context identifier
+missingWSAAction = wsa:Action value missing
+missingWSATo = wsa:To address value missing
+cannotCrateCryptoInstance = Cannot create Crypto instace
+noInfoForCBhandler = Cannot obtain a callback handler with available configuration information 
+missingEncryptionUser=Encryption user not specified (The context is created by the initiating party)
+
+missingSignatureCrypto=Signature crypto information not available
+missingEncryptionCrypto=Encryption crypto information not available
+missingCallbackHandler=Password callback handler cannot be located
+errorInObtainingSct=Error in obtaining SCT from \"{0}\"
+errorInObtainingToken=Error in obtaining a token
+errorInExtractingMsgProps = Error in extracting message properties
+userMissing = No user value in the rampart configuration policy
+cbHandlerMissing = Password CallbackHandler not speficied in rampart configuration policy or the CallbackHandler instance not available in the MessageContext
+errorInGettingPasswordForUser = Error in getting password for user : \"{0}\"
+noPasswordForUser = No password supplied by the callback handler for the user : \"{0}\"
+unsupportedSignedSupportingToken = Unsupported SignedSupportingToken : \"{0}\"
+errorExtractingToken = Error extracting token : \"{0}\"
+errorInAddingTokenIntoStore = Error in adding token into store
+errorInDerivedKeyTokenSignature = Error in DerivedKeyToken signature
+errorInSignatureWithX509Token = Error in signature with X509Token
+errorCreatingEncryptedKey = Error in creating an encrypted key
+errorGettingSignatureValuesForSigconf = Error in getting signature values for signature confirmation
+cannotLoadPWCBClass = Cannot load password callback class: {0}
+cannotCreatePWCBInstance = Cannot create instance of password callback : {0}
+pwcbFailed = password callback failed
+unknownKeyRefSpeficier = Unknown key reference specifier for X509Token
+errorInRetrievingTokenId = Error in retrieving token : {0}
+errorInEncryption = Error in encryption
+errorInDKEncr = Error in encryption with a derived key
+errorCreatingRahasToken = Error in creating a org.apache.rahas.Token instance
+UnsupportedTokenInSupportingToken = Unsupprted token in supporting tokens
+encryptionTokenMissing = Encryption token missing
+signatureTokenMissing = Signature token missging
+errorInEncryption = Error during encryption
+sctIssuerPolicyMissing = sct-issuer-policy parameter missing 
+errorInTokenCancellation = Error in cancelling token
+tokenToBeCancelledInvalid = Token to be cancelled is invalid or expired 
+errorCreatingRSTTemplateForSCT=Error in creating RST template for SCT
+noSecurityToken = Missing security token
+noSecurityResults= No security processing results from the incoming message
+missingEncryptedKeyInRequest=There was no EncryptedKey in the request message
+rampartConigMissing = Please include configured RampartConfiguration assertion in policy
+
+#Errors in processors
+errorProcessingUT = Error in processing UsernameToken
+
+cannotValidateTimestamp = The timestamp could not be validated
+trustVerificationError = The certificate used for the signature is not trusted
+cannotFindAliasForCert = Could not get alias for certificate with {0}
+noCertForAlias = Could not get certificates for alias  {0}
+certPathVerificationFailed = Certificate path verification failed for certificate with subject
+
+#Rampart Results Validation Errors
+timestampMissing = Missing Timestamp
+encryptedPartMissing = Missing encryption result for id : {0}
+invalidNumberOfEncryptedParts = Invalid number of encrypted parts
+protectionOrderMismatch = Protection order mismatch
+usernameTokenMissing = UsernameToken missing in request
+signatureMissing = Message is not signed
+unexprectedEncryptedPart = Unexpected encrypted data found, no encryption required
+encryptionMissing = Expected encrypted part missing
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/handler/RampartReceiver.java b/rampart_1_1/modules/security/src/org/apache/rampart/handler/RampartReceiver.java
new file mode 100644
index 0000000..ae01e2d
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/handler/RampartReceiver.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler;
+
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.Handler;
+import org.apache.rampart.RampartEngine;
+import org.apache.rampart.RampartException;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+
+import javax.xml.namespace.QName;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+
+public class RampartReceiver implements Handler {
+    
+    private static HandlerDescription EMPTY_HANDLER_METADATA =
+        new HandlerDescription("deafult Handler");
+
+    private HandlerDescription handlerDesc;
+    
+    
+    public RampartReceiver() {
+        this.handlerDesc = EMPTY_HANDLER_METADATA;
+    }
+    
+    public void cleanup() {        
+    }
+
+    public void init(HandlerDescription handlerdesc) {
+        this.handlerDesc = handlerdesc;
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        
+        if (!msgContext.isEngaged(new QName(WSSHandlerConstants.SECURITY_MODULE_NAME))) {
+          return InvocationResponse.CONTINUE;        
+        }
+        
+        RampartEngine engine = new RampartEngine();
+        Vector wsResult;
+        try {
+            wsResult = engine.process(msgContext);
+            
+        } catch (WSSecurityException e) {
+            e.printStackTrace();
+            throw new AxisFault(e);
+        } catch (WSSPolicyException e) {
+            e.printStackTrace();
+            throw new AxisFault(e);
+        } catch (RampartException e) {
+            e.printStackTrace();
+            throw new AxisFault(e);
+        } 
+        
+        if(wsResult == null) {
+          return InvocationResponse.CONTINUE;        
+        }
+        
+        Vector results = null;
+        if ((results = (Vector) msgContext.getProperty(WSHandlerConstants.RECV_RESULTS)) == null) {
+            results = new Vector();
+            msgContext.setProperty(WSHandlerConstants.RECV_RESULTS, results);
+        }
+        WSHandlerResult rResult = new WSHandlerResult("", wsResult);
+        results.add(0, rResult);
+        
+        SOAPHeader header = null;
+        try {
+            header = msgContext.getEnvelope().getHeader();
+        } catch (OMException ex) {
+            throw new AxisFault(
+                    "RampartReceiver: cannot get SOAP header after security processing",
+                    ex);
+        }
+
+        Iterator headers = header.getChildElements();
+
+        SOAPHeaderBlock headerBlock = null;
+
+        while (headers.hasNext()) { // Find the wsse header
+            SOAPHeaderBlock hb = (SOAPHeaderBlock) headers.next();
+            if (hb.getLocalName().equals(WSConstants.WSSE_LN)
+                    && hb.getNamespace().getNamespaceURI().equals(WSConstants.WSSE_NS)) {
+                headerBlock = hb;
+                break;
+            }
+        }
+
+        headerBlock.setProcessed();
+        return InvocationResponse.CONTINUE;        
+
+    }
+
+    
+    public HandlerDescription getHandlerDesc() {
+        return this.handlerDesc;
+    }
+
+    public String getName() {
+        return "Apache Rampart inflow handler";
+    }
+
+    public Parameter getParameter(String name) {
+        return this.handlerDesc.getParameter(name);
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/handler/RampartSender.java b/rampart_1_1/modules/security/src/org/apache/rampart/handler/RampartSender.java
new file mode 100644
index 0000000..d7ab3e3
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/handler/RampartSender.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.Handler;
+import org.apache.rampart.MessageBuilder;
+import org.apache.rampart.RampartException;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.security.WSSecurityException;
+
+import javax.xml.namespace.QName;
+
+
+public class RampartSender implements Handler {
+    
+    private static HandlerDescription EMPTY_HANDLER_METADATA =
+        new HandlerDescription("deafult Handler");
+
+    private HandlerDescription handlerDesc;
+    
+    
+    public RampartSender() {
+        this.handlerDesc = EMPTY_HANDLER_METADATA;
+    }
+    
+    public void cleanup() {        
+    }
+
+    public void init(HandlerDescription handlerdesc) {
+        this.handlerDesc = handlerdesc;
+    }
+
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        
+        if (!msgContext.isEngaged(new QName(WSSHandlerConstants.SECURITY_MODULE_NAME))) {
+          return InvocationResponse.CONTINUE;        
+        }
+        
+        MessageBuilder builder = new MessageBuilder();
+        try {
+            builder.build(msgContext);
+        } catch (WSSecurityException e) {
+            throw new AxisFault(e.getMessage(), e);
+        } catch (WSSPolicyException e) {
+            throw new AxisFault(e.getMessage(), e);
+        } catch (RampartException e) {
+            throw new AxisFault(e.getMessage(), e);
+        }
+        return InvocationResponse.CONTINUE;        
+    }
+
+    public HandlerDescription getHandlerDesc() {
+        return this.handlerDesc;
+    }
+
+    public String getName() {
+        return "Apache Rampart outflow handler";
+    }
+
+    public Parameter getParameter(String name) {
+        return this.handlerDesc.getParameter(name);
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllHandler.java b/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllHandler.java
new file mode 100644
index 0000000..c3d27dd
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllHandler.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.Handler;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.ws.security.handler.WSHandler;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Class WSDoAllHandler
+ */
+public abstract class WSDoAllHandler extends WSHandler implements Handler {
+
+    /**
+     * Field EMPTY_HANDLER_METADATA
+     */
+    private static HandlerDescription EMPTY_HANDLER_METADATA =
+            new HandlerDescription("deafult Handler");
+
+    private final static String WSS_PASSWORD = "password";
+
+    private final static String WSS_USERNAME = "username";
+
+    /**
+     * Field handlerDesc
+     */
+    protected HandlerDescription handlerDesc;
+
+    /**
+     * In Axis2, the user cannot set inflow and outflow parameters.
+     * Therefore, we need to map the Axis2 specific inflow and outflow
+     * parameters to WSS4J params,
+     * <p/>
+     * Knowledge of inhandler and out handler is used to get the mapped value.
+     */
+    protected boolean inHandler;
+
+    /**
+     * Constructor AbstractHandler.
+     */
+    public WSDoAllHandler() {
+        handlerDesc = EMPTY_HANDLER_METADATA;
+    }
+
+    public abstract void processMessage(MessageContext msgContext) throws AxisFault;
+
+    /* (non-Javadoc)
+    * @see org.apache.axis2.engine.Handler#invoke(org.apache.axis2.context.MessageContext)
+    */
+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+        //If the security module is not engaged for this service
+        //do not do any processing
+        if (msgContext.isEngaged(new QName(WSSHandlerConstants.SECURITY_MODULE_NAME))) {
+            this.processMessage(msgContext);
+        }
+        return InvocationResponse.CONTINUE;        
+    }
+
+    /**
+     * Method getName.
+     *
+     * @return Returns name.
+     */
+    public String getName() {
+        return handlerDesc.getName();
+    }
+
+    /**
+     * Method cleanup.
+     */
+    public void cleanup() {
+    }
+
+    /**
+     * Method getParameter.
+     *
+     * @param name
+     * @return Returns parameter.
+     */
+    public Parameter getParameter(String name) {
+        return handlerDesc.getParameter(name);
+    }
+
+    /**
+     * Method init.
+     *
+     * @param handlerdesc
+     */
+    public void init(HandlerDescription handlerdesc) {
+        this.handlerDesc = handlerdesc;
+    }
+
+    /**
+     * Gets the handler description.
+     *
+     * @return Returns handler description.
+     */
+    public HandlerDescription getHandlerDesc() {
+        return handlerDesc;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString() {
+        String name = this.getName();
+        return (name != null) ? name : null;
+    }
+
+
+    public Object getProperty(Object msgContext, String axisKey) {
+
+        int repetition = getCurrentRepetition(msgContext);
+
+        String key = Axis2Util.getKey(axisKey, inHandler, repetition);
+        Object property = ((MessageContext) msgContext).getProperty(key);
+        if (property == null) {
+            //Try the description hierarchy
+            Parameter parameter = ((MessageContext) msgContext).getParameter(key);
+            if (parameter != null) {
+                property = parameter.getValue();
+            }
+        }
+        return property;
+    }
+
+    /**
+     * Returns the repetition number from the message context
+     *
+     * @param msgContext
+     * @return Returns int.
+     */
+    protected int getCurrentRepetition(Object msgContext) {
+        //get the repetition from the message context
+        int repetition = 0;
+        if (!inHandler) {//We only need to repete the out handler
+            Integer count = (Integer) ((MessageContext) msgContext).getProperty(WSSHandlerConstants.CURRENT_REPETITON);
+            if (count != null) { //When we are repeting the handler
+                repetition = count.intValue();
+            }
+        }
+        return repetition;
+    }
+
+    public String getPassword(Object msgContext) {
+        return (String) ((MessageContext) msgContext).getProperty(WSS_PASSWORD);
+    }
+
+    public void setPassword(Object msgContext, String password) {
+        ((MessageContext) msgContext).setProperty(WSS_PASSWORD, password);
+    }
+
+    public String getUsername(Object msgContext) {
+        return (String) ((MessageContext) msgContext).getProperty(WSS_USERNAME);
+    }
+
+    public void setUsername(Object msgContext, String username) {
+        ((MessageContext) msgContext).setProperty(WSS_USERNAME, username);
+    }
+
+    /**
+     * Gets optoin. Extracts the configuration values from the service.xml
+     * and/or axis2.xml. Values set in the service.xml takes prority over
+     * values of the axis2.xml
+     */
+    public Object getOption(String axisKey) {
+        Parameter parameter = this.handlerDesc.getParameter(axisKey);
+        return (parameter == null) ? null : parameter.getValue();
+    }
+
+    public void setProperty(Object msgContext, String key, Object value) {
+        ((MessageContext) msgContext).setProperty(key, value);
+    }
+
+    /**
+     * Overrides the class loader used to load the PW callback class.
+     *
+     * @param msgCtx MessageContext
+     * @return Returns class loader.
+     */
+    public java.lang.ClassLoader getClassLoader(Object msgCtx) {
+        try {
+            return ((MessageContext) msgCtx).getAxisService().getClassLoader();
+        } catch (Throwable t) {
+            return super.getClassLoader(msgCtx);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java b/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java
new file mode 100644
index 0000000..d480633
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java
@@ -0,0 +1,426 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.rampart.conversation.ConversationCallbackHandler;
+import org.apache.rampart.conversation.ConversationConfiguration;
+import org.apache.rampart.conversation.Util;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.rampart.util.HandlerParameterDecoder;
+import org.apache.ws.security.SOAPConstants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.handler.RequestData;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+import org.apache.ws.security.message.token.Timestamp;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.w3c.dom.Document;
+
+import javax.security.auth.callback.CallbackHandler;
+import javax.xml.namespace.QName;
+import java.security.cert.X509Certificate;
+import java.util.Iterator;
+import java.util.Vector;
+
+/**
+ * @deprecated
+ */
+public class WSDoAllReceiver extends WSDoAllHandler {
+
+    private static final Log log = LogFactory.getLog(WSDoAllReceiver.class);
+
+    public WSDoAllReceiver() {
+        super();
+        inHandler = true;
+    }
+
+    public void processMessage(MessageContext msgContext) throws AxisFault {
+
+        boolean doDebug = log.isDebugEnabled();
+
+        if (doDebug) {
+            log.debug("WSDoAllReceiver: enter invoke() ");
+        }
+
+        String disableDoomValue = (String) msgContext
+                .getProperty(WSSHandlerConstants.DISABLE_DOOM);
+        boolean disableDoom = disableDoomValue != null
+                && Constants.VALUE_TRUE.equalsIgnoreCase(disableDoomValue);
+
+        RequestData reqData = new RequestData();
+        try {
+
+            Parameter param = ConversationConfiguration
+                    .getParameter(msgContext);
+
+            if (param == null
+                    || WSSHandlerConstants.RST_ACTON_SCT.equals(msgContext
+                            .getWSAAction())
+                    || WSSHandlerConstants.RSTR_ACTON_SCT.equals(msgContext
+                            .getWSAAction())) {
+                this.processBasic(msgContext, disableDoom, reqData);
+            } else {
+                this.processSecConv(msgContext);
+            }
+        } catch (AxisFault axisFault) {
+            setAddressingInformationOnFault(msgContext);
+            throw axisFault;
+        } catch (Exception e) {
+            setAddressingInformationOnFault(msgContext);
+            throw new AxisFault(e);
+        } finally {
+
+            if (reqData != null) {
+                reqData.clear();
+                reqData = null;
+            }
+
+            if (doDebug) {
+                log.debug("WSDoAllReceiver: exit invoke()");
+            }
+        }
+
+    }
+
+    /**
+     * Use WS-SecureConversation to secure messages
+     * @param msgContext
+     * @throws Exception
+     */
+    private void processSecConv(MessageContext msgContext) throws Exception {
+        // Parse the configuration
+        ConversationConfiguration config = ConversationConfiguration
+                .load(msgContext, false);
+
+        // check if there's an RSTR in the msg and process it if exists
+        SOAPEnvelope env = (SOAPEnvelope) config.getDocument()
+                .getDocumentElement();
+        SOAPHeader header = env.getHeader();
+        if (header != null
+                && header
+                        .getFirstChildWithName(new QName(
+                                WSSHandlerConstants.WST_NS,
+                                WSSHandlerConstants.REQUEST_SECURITY_TOKEN_RESPONSE_LN)) != null) {
+            OMElement elem = header
+                    .getFirstChildWithName(new QName(
+                            WSSHandlerConstants.WST_NS,
+                            WSSHandlerConstants.REQUEST_SECURITY_TOKEN_RESPONSE_LN));
+            Util.processRSTR(elem, config);
+        }
+
+        secEngine.processSecurityHeader(config.getDocument(), null,
+                new ConversationCallbackHandler(config), config
+                        .getCrypto());
+
+        // Convert back to llom since the inflow cannot use llom
+        msgContext.setEnvelope(Axis2Util
+                .getSOAPEnvelopeFromDOOMDocument(config.getDocument()));
+    }
+
+    private void processBasic(MessageContext msgContext, boolean disableDoom, RequestData reqData)
+            throws Exception {
+
+        // populate the properties
+        try {
+            HandlerParameterDecoder.processParameters(msgContext, true);
+        } catch (Exception e) {
+            throw new AxisFault("Configuration error", e);
+        }
+
+        reqData = new RequestData();
+
+        reqData.setMsgContext(msgContext);
+
+        if (((getOption(WSSHandlerConstants.INFLOW_SECURITY)) == null) &&
+            ((getProperty(msgContext, WSSHandlerConstants.INFLOW_SECURITY)) == null)) {
+            
+            if (msgContext.isServerSide() && 
+                ((getOption(WSSHandlerConstants.INFLOW_SECURITY_SERVER)) == null) &&
+                ((getProperty(msgContext, WSSHandlerConstants.INFLOW_SECURITY_SERVER)) == null)) {
+            
+                return;
+            } else if (((getOption(WSSHandlerConstants.INFLOW_SECURITY_CLIENT)) == null) &&
+                    ((getProperty(msgContext, WSSHandlerConstants.INFLOW_SECURITY_CLIENT)) == null))  {
+                
+                return;
+            }
+        }
+        
+        Vector actions = new Vector();
+        String action = null;
+        if ((action = (String) getOption(WSSHandlerConstants.ACTION_ITEMS)) == null) {
+            action = (String) getProperty(msgContext,
+                    WSSHandlerConstants.ACTION_ITEMS);
+        }
+        if (action == null) {
+            throw new AxisFault("WSDoAllReceiver: No action items defined");
+        }
+        int doAction = WSSecurityUtil.decodeAction(action, actions);
+
+        if (doAction == WSConstants.NO_SECURITY) {
+            return;
+        }
+
+        String actor = (String) getOption(WSHandlerConstants.ACTOR);
+
+        Document doc = null;
+
+        try {
+            doc = Axis2Util.getDocumentFromSOAPEnvelope(msgContext
+                    .getEnvelope(), disableDoom);
+        } catch (WSSecurityException wssEx) {
+            throw new AxisFault(
+                    "WSDoAllReceiver: Error in converting to Document", wssEx);
+        }
+
+        // Do not process faults
+        SOAPConstants soapConstants = WSSecurityUtil.getSOAPConstants(doc
+                .getDocumentElement());
+        if (WSSecurityUtil.findElement(doc.getDocumentElement(), "Fault",
+                soapConstants.getEnvelopeURI()) != null) {
+            return;
+        }
+
+        /*
+         * To check a UsernameToken or to decrypt an encrypted message we need a
+         * password.
+         */
+        CallbackHandler cbHandler = null;
+        if ((doAction & (WSConstants.ENCR | WSConstants.UT)) != 0) {
+            cbHandler = getPasswordCB(reqData);
+        }
+
+        // Copy the WSHandlerConstants.SEND_SIGV over to the new message
+        // context - if it exists, if signatureConfirmation in the response msg
+        String sigConfEnabled = null;
+        if ((sigConfEnabled = (String) getOption(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION)) == null) {
+            sigConfEnabled = (String) getProperty(msgContext,
+                    WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION);
+        }
+
+        // To handle sign confirmation of a sync response
+        // TODO Async response
+        if (!msgContext.isServerSide()
+                && !"false".equalsIgnoreCase(sigConfEnabled)) {
+            OperationContext opCtx = msgContext.getOperationContext();
+            MessageContext outMsgCtx = opCtx
+                    .getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+            if (outMsgCtx != null) {
+                msgContext.setProperty(WSHandlerConstants.SEND_SIGV, outMsgCtx
+                        .getProperty(WSHandlerConstants.SEND_SIGV));
+            } else {
+                throw new WSSecurityException(
+                        "Cannot obtain request message context");
+            }
+        }
+
+        /*
+         * Get and check the Signature specific parameters first because they
+         * may be used for encryption too.
+         */
+
+        doReceiverAction(doAction, reqData);
+
+        Vector wsResult = null;
+        try {
+            wsResult = secEngine.processSecurityHeader(doc, actor, cbHandler,
+                    reqData.getSigCrypto(), reqData.getDecCrypto());
+        } catch (WSSecurityException ex) {
+            throw new AxisFault("WSDoAllReceiver: security processing failed",
+                    ex);
+        }
+        if (wsResult == null) { // no security header found
+            if (doAction == WSConstants.NO_SECURITY) {
+                return;
+            } else {
+                throw new AxisFault(
+                        "WSDoAllReceiver: Incoming message does not contain required Security header");
+            }
+        }
+
+        if (reqData.getWssConfig().isEnableSignatureConfirmation()
+                && !msgContext.isServerSide()) {
+            checkSignatureConfirmation(reqData, wsResult);
+        }
+
+        /**
+         * Set the new SOAPEnvelope
+         */
+
+        msgContext.setEnvelope(Axis2Util.getSOAPEnvelopeFromDOOMDocument(doc));
+
+        /*
+         * After setting the new current message, probably modified because of
+         * decryption, we need to locate the security header. That is, we force
+         * Axis (with getSOAPEnvelope()) to parse the string, build the new
+         * header. Then we examine, look up the security header and set the
+         * header as processed.
+         * 
+         * Please note: find all header elements that contain the same actor
+         * that was given to processSecurityHeader(). Then check if there is a
+         * security header with this actor.
+         */
+        SOAPHeader header = null;
+        try {
+            header = msgContext.getEnvelope().getHeader();
+        } catch (OMException ex) {
+            throw new AxisFault(
+                    "WSDoAllReceiver: cannot get SOAP header after security processing",
+                    ex);
+        }
+
+        Iterator headers = header.examineHeaderBlocks(actor);
+
+        SOAPHeaderBlock headerBlock = null;
+
+        while (headers.hasNext()) { // Find the wsse header
+            SOAPHeaderBlock hb = (SOAPHeaderBlock) headers.next();
+            if (hb.getLocalName().equals(WSConstants.WSSE_LN)
+                    && hb.getNamespace().getNamespaceURI().equals(WSConstants.WSSE_NS)) {
+                headerBlock = hb;
+                break;
+            }
+        }
+
+        headerBlock.setProcessed();
+
+        /*
+         * Now we can check the certificate used to sign the message. In the
+         * following implementation the certificate is only trusted if either it
+         * itself or the certificate of the issuer is installed in the keystore.
+         * 
+         * Note: the method verifyTrust(X509Certificate) allows custom
+         * implementations with other validation algorithms for subclasses.
+         */
+
+        // Extract the signature action result from the action vector
+        WSSecurityEngineResult actionResult = WSSecurityUtil.fetchActionResult(
+                wsResult, WSConstants.SIGN);
+
+        if (actionResult != null) {
+            X509Certificate returnCert = actionResult.getCertificate();
+
+            if (returnCert != null) {
+                if (!verifyTrust(returnCert, reqData)) {
+                    throw new AxisFault(
+                            "WSDoAllReceiver: The certificate used for the signature is not trusted");
+                }
+            }
+        }
+
+        /*
+         * Perform further checks on the timestamp that was transmitted in the
+         * header. In the following implementation the timestamp is valid if it
+         * was created after (now-ttl), where ttl is set on server side, not by
+         * the client.
+         * 
+         * Note: the method verifyTimestamp(Timestamp) allows custom
+         * implementations with other validation algorithms for subclasses.
+         */
+
+        // Extract the timestamp action result from the action vector
+        actionResult = WSSecurityUtil.fetchActionResult(wsResult,
+                WSConstants.TS);
+
+        if (actionResult != null) {
+            Timestamp timestamp = actionResult.getTimestamp();
+
+            if (timestamp != null) {
+                String ttl = null;
+                if ((ttl = (String) getOption(WSHandlerConstants.TTL_TIMESTAMP)) == null) {
+                    ttl = (String) getProperty(msgContext,
+                            WSHandlerConstants.TTL_TIMESTAMP);
+                }
+                int ttl_i = 0;
+                if (ttl != null) {
+                    try {
+                        ttl_i = Integer.parseInt(ttl);
+                    } catch (NumberFormatException e) {
+                        ttl_i = reqData.getTimeToLive();
+                    }
+                }
+                if (ttl_i <= 0) {
+                    ttl_i = reqData.getTimeToLive();
+                }
+
+                if (!verifyTimestamp(timestamp, reqData.getTimeToLive())) {
+                    throw new AxisFault(
+                            "WSDoAllReceiver: The timestamp could not be validated");
+                }
+            }
+        }
+
+        /*
+         * now check the security actions: do they match, in right order?
+         */
+        if (!checkReceiverResults(wsResult, actions)) {
+            throw new AxisFault(
+                    "WSDoAllReceiver: security processing failed (actions mismatch)");
+
+        }
+        /*
+         * All ok up to this point. Now construct and setup the security result
+         * structure. The service may fetch this and check it. Also the
+         * DoAllSender will use this in certain situations such as:
+         * USE_REQ_SIG_CERT to encrypt
+         */
+        Vector results = null;
+        if ((results = (Vector) getProperty(msgContext,
+                WSHandlerConstants.RECV_RESULTS)) == null) {
+            results = new Vector();
+            msgContext.setProperty(WSHandlerConstants.RECV_RESULTS, results);
+        }
+        WSHandlerResult rResult = new WSHandlerResult(actor, wsResult);
+        results.add(0, rResult);
+    }
+
+    private void setAddressingInformationOnFault(MessageContext msgContext) {
+        SOAPEnvelope env = msgContext.getEnvelope();
+        SOAPHeader header = env.getHeader();
+
+        if (header != null) {
+            OMElement msgIdElem = header.getFirstChildWithName(new QName(
+                    AddressingConstants.Final.WSA_NAMESPACE,
+                    AddressingConstants.WSA_MESSAGE_ID));
+            if (msgIdElem == null) {
+                msgIdElem = header.getFirstChildWithName(new QName(
+                        AddressingConstants.Submission.WSA_NAMESPACE,
+                        AddressingConstants.WSA_MESSAGE_ID));
+            }
+            if (msgIdElem != null && msgIdElem.getText() != null) {
+                msgContext.getOptions().setMessageId(msgIdElem.getText());
+            }
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllSender.java b/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllSender.java
new file mode 100644
index 0000000..ddc2fd9
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSDoAllSender.java
@@ -0,0 +1,438 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.conversation.ConversationConfiguration;
+import org.apache.rampart.conversation.STSRequester;
+import org.apache.rampart.conversation.Util;
+import org.apache.rampart.util.Axis2Util;
+import org.apache.rampart.util.HandlerParameterDecoder;
+import org.apache.rampart.util.MessageOptimizer;
+import org.apache.rahas.Token;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.components.crypto.Crypto;
+import org.apache.ws.security.handler.RequestData;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.message.WSSecDKEncrypt;
+import org.apache.ws.security.message.WSSecEncryptedKey;
+import org.apache.ws.security.message.WSSecHeader;
+import org.apache.ws.security.message.token.SecurityContextToken;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.apache.ws.security.util.XmlSchemaDateFormat;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.security.cert.X509Certificate;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Vector;
+
+/**
+ * @deprecated
+ */
+public class WSDoAllSender extends WSDoAllHandler {
+    
+    private static final Log log = LogFactory.getLog(WSDoAllSender.class);
+    
+    
+    public WSDoAllSender() {
+        super();
+        inHandler = false;
+    }
+      
+    public void processMessage(MessageContext msgContext) throws AxisFault {
+        
+        String disableDoomValue = (String)msgContext.getProperty(WSSHandlerConstants.DISABLE_DOOM);
+        boolean disableDoom = disableDoomValue != null && Constants.VALUE_TRUE.equalsIgnoreCase(disableDoomValue);
+        
+        RequestData reqData = new RequestData();
+        try {
+            Parameter param = ConversationConfiguration.getParameter(msgContext);
+            
+            if(param == null || WSSHandlerConstants.RST_ACTON_SCT.equals(msgContext.getWSAAction()) ||
+                    WSSHandlerConstants.RSTR_ACTON_SCT.equals(msgContext.getWSAAction()) ||
+                    WSSHandlerConstants.RSTR_ACTON_ISSUE.equals(msgContext.getWSAAction())) {
+                //If the msgs are msgs to an STS then use basic WS-Sec
+                processBasic(msgContext, disableDoom, reqData);
+            } else {
+                processSecConv(msgContext);
+            }
+            
+        } catch (Exception e) {
+            throw new AxisFault(e.getMessage(), e);
+        }
+        finally {
+            if(reqData != null) {
+                reqData.clear();
+                reqData = null;
+            }
+        }     
+    }
+
+    /**
+     * Use WS-SecureConversation to secure the messages
+     * @param msgContext
+     * @throws Exception
+     */
+    private void processSecConv(MessageContext msgContext) throws Exception {
+        //Parse the Conversation configuration
+        ConversationConfiguration config = ConversationConfiguration.load(msgContext, true);
+        if(config != null)
+        msgContext.setEnvelope((SOAPEnvelope) config.getDocument()
+                .getDocumentElement());
+        
+        if(!config.getMsgCtx().isServerSide()) {
+            if(config.getContextIdentifier() == null && !config.getMsgCtx().isServerSide()) {
+      
+                String sts = config.getStsEPRAddress();
+                if(sts != null) {
+                  //Use a security token service
+                    Axis2Util.useDOOM(false);
+                    STSRequester.issueRequest(config);
+                    Axis2Util.useDOOM(true);
+                } else {
+                    //Create an an SCT, include it in an RSTR 
+                    // and add the RSTR to the header
+                    this.createRSTR(config);
+                }
+                
+            }
+        }
+        this.constructMessage(config);
+    }
+    
+    /**
+     * This will carryout the WS-Security related operations.
+     * 
+     * @param msgContext
+     * @param disableDoom
+     * @throws WSSecurityException
+     * @throws AxisFault
+     */
+    private void processBasic(MessageContext msgContext, boolean disableDoom,
+            RequestData reqData) throws WSSecurityException, AxisFault {
+        boolean doDebug = log.isDebugEnabled();
+        
+        try {
+            HandlerParameterDecoder.processParameters(msgContext,false);
+        } catch (Exception e) {
+            throw new AxisFault("Configureation error", e);
+        }
+        
+        if (doDebug) {
+            log.debug("WSDoAllSender: enter invoke()");
+        }
+        
+        /*
+         * Copy the RECV_RESULTS over to the current message context
+         * - IF available 
+         */
+        OperationContext opCtx = msgContext.getOperationContext();
+        MessageContext inMsgCtx;
+        if(opCtx != null && 
+                (inMsgCtx = opCtx.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)) != null) {
+            msgContext.setProperty(WSHandlerConstants.RECV_RESULTS, 
+                    inMsgCtx.getProperty(WSHandlerConstants.RECV_RESULTS));
+        }
+        
+        
+        
+        reqData.setNoSerialization(false);
+        reqData.setMsgContext(msgContext);
+        
+        if (((getOption(WSSHandlerConstants.OUTFLOW_SECURITY)) == null) &&
+                ((getProperty(msgContext, WSSHandlerConstants.OUTFLOW_SECURITY)) == null)) {
+                
+                if (msgContext.isServerSide() && 
+                    ((getOption(WSSHandlerConstants.OUTFLOW_SECURITY_SERVER)) == null) &&
+                    ((getProperty(msgContext, WSSHandlerConstants.OUTFLOW_SECURITY_SERVER)) == null)) {
+                
+                    return;
+                } else if (((getOption(WSSHandlerConstants.OUTFLOW_SECURITY_CLIENT)) == null) &&
+                        ((getProperty(msgContext, WSSHandlerConstants.OUTFLOW_SECURITY_CLIENT)) == null))  {
+                    
+                    return;
+                }
+            }
+        
+        Vector actions = new Vector();
+        String action = null;
+        if ((action = (String) getOption(WSSHandlerConstants.ACTION_ITEMS)) == null) {
+            action = (String) getProperty(msgContext, WSSHandlerConstants.ACTION_ITEMS);
+        }
+        if (action == null) {
+            throw new AxisFault("WSDoAllReceiver: No action items defined");
+        }
+        
+        int doAction = WSSecurityUtil.decodeAction(action, actions);
+        if (doAction == WSConstants.NO_SECURITY) {
+            return;
+        }
+        
+        /*
+         * For every action we need a username, so get this now. The
+         * username defined in the deployment descriptor takes precedence.
+         */
+        reqData.setUsername((String) getOption(WSHandlerConstants.USER));
+        if (reqData.getUsername() == null || reqData.getUsername().length() == 0) {
+            String username = (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.USER);
+            if (username != null) {
+                reqData.setUsername(username);
+            }
+        }
+        
+        /*
+         * Now we perform some set-up for UsernameToken and Signature
+         * functions. No need to do it for encryption only. Check if
+         * username is available and then get a passowrd.
+         */
+        if ((doAction & (WSConstants.SIGN | WSConstants.UT | WSConstants.UT_SIGN)) != 0) {
+            /*
+             * We need a username - if none throw an AxisFault. For
+             * encryption there is a specific parameter to get a username.
+             */
+            if (reqData.getUsername() == null
+                    || reqData.getUsername().length() == 0) {
+                throw new AxisFault(
+                "WSDoAllSender: Empty username for specified action");
+            }
+        }
+        
+        /*
+         * Now get the SOAPEvelope from the message context and convert it
+         * into a Document
+         * 
+         * Now we can perform our security operations on this request.
+         */
+        
+        
+        Document doc = null;
+        /*
+         * If the message context property conatins a document then this is
+         * a chained handler.
+         */
+        if ((doc = (Document) ((MessageContext)reqData.getMsgContext())
+                .getProperty(WSHandlerConstants.SND_SECURITY)) == null) {
+            try {
+                doc = Axis2Util.getDocumentFromSOAPEnvelope(msgContext.getEnvelope(), disableDoom);
+            } catch (WSSecurityException wssEx) {
+                throw new AxisFault("WSDoAllReceiver: Error in converting to Document", wssEx);
+            }
+        }
+        
+        
+        doSenderAction(doAction, doc, reqData, actions, !msgContext.isServerSide());
+        
+        /*
+         * If noSerialization is false, this handler shall be the last (or
+         * only) one in a handler chain. If noSerialization is true, just
+         * set the processed Document in the transfer property. The next
+         * Axis WSS4J handler takes it and performs additional security
+         * processing steps.
+         *
+         */
+        if (reqData.isNoSerialization()) {
+            ((MessageContext)reqData.getMsgContext()).setProperty(WSHandlerConstants.SND_SECURITY,
+                    doc);
+        } else {
+            msgContext.setEnvelope((SOAPEnvelope)doc.getDocumentElement());
+            ((MessageContext)reqData.getMsgContext()).setProperty(WSHandlerConstants.SND_SECURITY, null);
+        }
+        
+
+        /**
+         * If the optimizeParts parts are set then optimize them
+         */
+        String optimizeParts;
+        
+        if((optimizeParts = (String) getOption(WSSHandlerConstants.OPTIMIZE_PARTS)) == null) {
+            optimizeParts = (String)
+            getProperty(reqData.getMsgContext(), WSSHandlerConstants.OPTIMIZE_PARTS);
+        }
+        if(optimizeParts != null) {
+            // Optimize the Envelope
+            MessageOptimizer.optimize(msgContext.getEnvelope(),optimizeParts);
+        }
+        
+        //Enable handler repetition
+        Integer repeat;
+        int repeatCount;
+        if ((repeat = (Integer)getOption(WSSHandlerConstants.SENDER_REPEAT_COUNT)) == null) {
+            repeat = (Integer)
+            getProperty(reqData.getMsgContext(), WSSHandlerConstants.SENDER_REPEAT_COUNT);
+        }
+        
+        repeatCount = repeat.intValue();
+        
+        //Get the current repetition from message context
+        int repetition = this.getCurrentRepetition(msgContext);
+        
+        if(repeatCount > 0 && repetition < repeatCount) {
+            
+            reqData.clear();
+            reqData = null;
+            
+            // Increment the repetition to indicate the next repetition
+            // of the same handler
+            repetition++;
+            msgContext.setProperty(WSSHandlerConstants.CURRENT_REPETITON,
+                    new Integer(repetition));
+            
+            this.invoke(msgContext);
+        }
+        
+        if (doDebug) {
+            log.debug("WSDoAllSender: exit invoke()");
+        }
+    }
+    
+
+    /**
+     * Create the self created <code>wsc:SecurityContextToken</code> and 
+     * add it to a <code>wst:RequestSecurityTokenResponse</code>.
+     * 
+     * This is called in the case where the security context establishment 
+     * is done by one of the parties with out the use of an STS
+     * and the creted SCT is sent across to the other party in an unsolicited 
+     * <code>wst:RequestSecurityTokenResponse</code>
+     * 
+     * @param config
+     * @throws Exception
+     */
+    private void createRSTR(ConversationConfiguration config) throws Exception {
+        
+        WSSecEncryptedKey encrKeyBuilder = new WSSecEncryptedKey();
+        Crypto crypto = org.apache.rampart.conversation.Util.getCryptoInstace(config);
+        String encryptionUser = config.getEncryptionUser();
+        if(encryptionUser == null) {
+            throw new RampartException("missingEncryptionUser");
+        }
+        X509Certificate cert = crypto.getCertificates(encryptionUser)[0];
+        
+        encrKeyBuilder.setKeyIdentifierType(WSConstants.THUMBPRINT_IDENTIFIER);
+        try {
+            encrKeyBuilder.setUseThisCert(cert);
+            encrKeyBuilder.prepare(config.getDocument(), crypto);
+        } catch (WSSecurityException e) {
+            throw new TrustException(
+                    "errorInBuildingTheEncryptedKeyForPrincipal",
+                    new String[] { cert.getSubjectDN().getName()}, e);
+        }
+        
+        SecurityContextToken sct = new SecurityContextToken(config.getDocument());
+        Util.resgisterContext(sct.getIdentifier(), config);
+        
+        //Creation and expiration times
+        Date creationTime = new Date();
+        Date expirationTime = new Date();
+        
+        expirationTime.setTime(creationTime.getTime() + 300000);
+        
+        Token token = new Token(sct.getIdentifier(), (OMElement)sct.getElement(), creationTime, expirationTime);
+        token.setSecret(encrKeyBuilder.getEphemeralKey());
+        
+        config.getTokenStore().add(token);
+        
+        SOAPEnvelope env = config.getMsgCtx().getEnvelope();
+
+        SOAPHeader header = env.getHeader();
+        if(header == null) {
+            header = ((SOAPFactory)env.getOMFactory()).createSOAPHeader(env);
+        }
+        
+        OMElement rstrElem = TrustUtil.createRequestSecurityTokenResponseElement(config.getWstVersion(), header);
+
+        OMElement rstElem = TrustUtil.createRequestedSecurityTokenElement(config.getWstVersion(), rstrElem);
+
+        // Use GMT time in milliseconds
+        DateFormat zulu = new XmlSchemaDateFormat();
+        
+        // Add the Lifetime element
+        TrustUtil.createLifetimeElement(config.getWstVersion(), rstrElem, zulu
+                .format(creationTime), zulu.format(expirationTime));
+        
+        rstElem.addChild((OMElement)sct.getElement());
+        
+        TrustUtil.createRequestedAttachedRef(config.getWstVersion(), rstrElem,
+                "#" + sct.getID(), WSSHandlerConstants.TOK_TYPE_SCT);
+
+        TrustUtil
+                .createRequestedUnattachedRef(config.getWstVersion(), rstrElem,
+                        sct.getIdentifier(), WSSHandlerConstants.TOK_TYPE_SCT);
+        
+        Element encryptedKeyElem = encrKeyBuilder.getEncryptedKeyElement();
+        Element bstElem = encrKeyBuilder.getBinarySecurityTokenElement();
+        
+        OMElement reqProofTok = TrustUtil.createRequestedProofTokenElement(
+                config.getWstVersion(), rstrElem);
+
+        if(bstElem != null) {
+            reqProofTok.addChild((OMElement)bstElem);
+        }
+        
+        reqProofTok.addChild((OMElement)encryptedKeyElem);
+        
+    }
+    
+    private void constructMessage(ConversationConfiguration config) throws Exception {
+
+        Document doc = config.getDocument();
+
+        WSSecHeader secHeader = new WSSecHeader();
+        secHeader.insertSecurityHeader(doc);
+
+        Token tempToken = config.getTokenStore().getToken(
+                config.getContextIdentifier());
+        byte[] tempSecret = tempToken.getSecret();
+
+        SecurityContextToken sct = new SecurityContextToken((Element) doc
+                .importNode((Element) tempToken.getToken(), true));
+
+        // Derived key encryption
+        WSSecDKEncrypt encrBuilder = new WSSecDKEncrypt();
+        encrBuilder.setSymmetricEncAlgorithm(WSConstants.AES_128);
+        OMElement attachedReference = tempToken.getAttachedReference();
+        if(attachedReference != null) {
+            encrBuilder.setExternalKey(tempSecret, (Element) doc.importNode(
+                    (Element) attachedReference, true));
+        } else {
+            String tokenId = sct.getID();
+            encrBuilder.setExternalKey(tempSecret, tokenId);
+        }
+        encrBuilder.build(doc, secHeader);
+
+        WSSecurityUtil.prependChildElement(doc, secHeader.getSecurityHeader(),
+                sct.getElement(), false);
+    }
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSSHandlerConstants.java b/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSSHandlerConstants.java
new file mode 100644
index 0000000..679f7c6
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/handler/WSSHandlerConstants.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler;
+
+/**
+ * Constants specific to the Axis2 security module
+ */
+public class WSSHandlerConstants {
+
+    private WSSHandlerConstants() {
+    }
+    
+    /**
+     * Name of the .mar file
+     */
+    public final static String SECURITY_MODULE_NAME = "rampart";
+    
+   /**
+     * Inflow security parameter
+     */
+    public static final String INFLOW_SECURITY = "InflowSecurity";
+    
+    public static final String INFLOW_SECURITY_SERVER = "InflowSecurity-server";
+    public static final String INFLOW_SECURITY_CLIENT = "InflowSecurity-client";
+    
+    /**
+     * Outflow security parameter 
+     */
+    public static final String OUTFLOW_SECURITY = "OutflowSecurity";
+    
+    public static final String OUTFLOW_SECURITY_SERVER = "OutflowSecurity-server";
+    public static final String OUTFLOW_SECURITY_CLIENT = "OutflowSecurity-client";
+    
+    
+    /**
+     * Inflow security parameter of a client to talk to an STS 
+     * when sec conv is used
+     */
+    public final static String STS_INFLOW_SECURITY = "STSInflowSecurity"; 
+
+    /**
+     * Outflow security parameter of a client to talk to an STS 
+     * when sec conv is used
+     */
+    public final static String STS_OUTFLOW_SECURITY = "STSOutflowSecurity"; 
+
+    
+    public static final String ACTION = "action";
+    
+    public static final String ACTION_ITEMS = "items";
+    
+
+    /**
+     *  Repetition count
+     */
+	public static final String SENDER_REPEAT_COUNT = "senderRepeatCount";
+
+	/**
+	 * The current repetition
+	 */
+	public static final String CURRENT_REPETITON = "currentRepetition";
+
+	/**
+	 * This is used to indicate the XPath expression used to indicate the
+	 * Elements whose first child (must be a text node) is to be optimized  
+	 */
+	public static final String OPTIMIZE_PARTS = "optimizeParts";
+	
+	public static final String PRESERVE_ORIGINAL_ENV = "preserveOriginalEnvelope";
+	
+	
+	/*
+	 * These are useful in configuring using the OutflowConfiguration 
+	 * and InflowConfiguration 
+	 * The set of possible key identifiers
+	 */
+	
+	public static final String BST_DIRECT_REFERENCE = "DirectReference";
+	
+	public static final String ISSUER_SERIAL = "IssuerSerial";
+	
+	public static final String X509_KEY_IDENTIFIER = "X509KeyIdentifier";
+	
+	public static final String SKI_KEY_IDENTIFIER = "SKIKeyIdentifier";
+	
+	public static final String EMBEDDED_KEYNAME = "EmbeddedKeyName";
+	
+	public static final String THUMBPRINT_IDENTIFIER = "Thumbprint";
+	
+    
+    public final static String SIGN_ALL_HEADERS = "signAllHeaders";
+    public final static String SIGN_BODY = "signBody";
+    public final static String ENCRYPT_BODY = "encryptBody";
+    
+    /**
+     * Key to be used to set a flag in msg ctx to enable/disable using doom
+     */
+    public final static String DISABLE_DOOM = "useDoom";
+    
+    
+    ///
+    /// WS-SecureConversation constants
+    ///
+    
+    
+    /**
+     * Key to hod the map of security context identifiers against the 
+     * service epr addresses (service scope) or wsa:Action values (operation 
+     * scope).
+     */
+    public final static String CONTEXT_MAP_KEY = "contextMap";
+    
+    /**
+     * The <code>java.util.Properties</code> object holding the properties 
+     * of a <code>org.apache.ws.security.components.crypto.Crypto</code> impl.
+     * 
+     * This should ONLY be used when the CRYPTO_CLASS_KEY is specified.
+     * 
+     * @see org.apache.ws.security.components.crypto.Crypto
+     */
+    public final static String CRYPTO_PROPERTIES_KEY = "cryptoPropertiesRef";
+    
+    /**
+     * The class that implements 
+     * <code>org.apache.ws.security.components.crypto.Crypto</code>.
+     */
+    public final static String CRYPTO_CLASS_KEY = "cryptoClass";
+    
+    //TODO: Get these constants from the WS-Trust impl's constants
+    public final static String RST_ACTON_SCT = "http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT";
+    public final static String RSTR_ACTON_SCT = "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT";
+    public final static String RSTR_ACTON_ISSUE = "http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue";
+    
+    public final static String TOK_TYPE_SCT = "http://schemas.xmlsoap.org/ws/2005/02/sc/sct";
+    
+    public final static String WST_NS = "http://schemas.xmlsoap.org/ws/2005/02/trust";
+    public static final String REQUEST_SECURITY_TOKEN_RESPONSE_LN = "RequestSecurityTokenResponse";
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/handler/config/InflowConfiguration.java b/rampart_1_1/modules/security/src/org/apache/rampart/handler/config/InflowConfiguration.java
new file mode 100644
index 0000000..61d8df5
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/handler/config/InflowConfiguration.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler.config;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axis2.description.Parameter;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerConstants;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * This is the representation of the inflow configurations of the security
+ * module.
+ * 
+ * @deprecated
+ */
+public class InflowConfiguration {
+	
+	private HashMap action = new HashMap();
+	
+	/**
+	 * Returns the configuration as an OMElement.
+	 * @return Returns Parameter.
+	 */
+	public Parameter getProperty() {
+        
+        if (! action.containsKey("items")) {
+            return null;
+        }
+                
+		OMFactory fac = OMAbstractFactory.getOMFactory();
+        //TODO: Find the constants for "Parameter" and "name"
+        OMElement paramElement = fac.createOMElement("Parameter",null);
+        paramElement.addAttribute(fac.createOMAttribute("name", null ,WSSHandlerConstants.INFLOW_SECURITY));
+		
+		OMElement actionElem = fac.createOMElement(
+				WSSHandlerConstants.ACTION, null);
+		
+		// Get the set of kes of the selected action
+		Iterator keys = action.keySet().iterator();
+
+		while (keys.hasNext()) {
+			String key = (String) keys.next();
+            String value = (String) action.get(key);
+            if(value != null && value.length() > 0) {
+                // Create an element with the name of the key
+    			OMElement elem = fac.createOMElement(key, null);
+    			// Set the text value of the element
+                elem.setText(value);
+    			// Add the element as a child of this action element
+    			actionElem.addChild(elem);
+            }
+		}
+		
+		paramElement.addChild(actionElem);
+		
+		Parameter param = new Parameter();
+		param.setParameterElement(paramElement);
+        param.setValue(paramElement);
+        param.setName(WSSHandlerConstants.INFLOW_SECURITY);
+		
+		return param;
+	}
+
+	/**
+	 * Returns the action items.
+	 * @return Returns String.
+	 */
+	public String getActionItems() {
+		return (String)this.action.get(WSSHandlerConstants.ACTION_ITEMS);
+	}
+
+	/**
+	 * Sets the action items.
+	 * @param actionItems
+	 */
+	public void setActionItems(String actionItems) {
+		this.action.put(WSSHandlerConstants.ACTION_ITEMS, actionItems);
+	}
+
+	/**
+	 * Returns the decryption property file.
+	 * @return Returns String.
+	 */
+	public String getDecryptionPropFile() {
+		return (String)this.action.get(WSHandlerConstants.DEC_PROP_FILE);
+	}
+
+	/**
+	 * Sets the decryption property file.
+	 * @param decryptionPropFile
+	 */
+	public void setDecryptionPropFile(String decryptionPropFile) {
+		this.action.put(WSHandlerConstants.DEC_PROP_FILE,decryptionPropFile);
+	}
+    
+    /**
+     * Sets the decryption property ref key.
+     * @param decryptionPropRefKey
+     */
+    public void setDecryptionPropRefKey(String decryptionPropRefKey) {
+        this.action.put(WSHandlerConstants.DEC_PROP_REF_ID,decryptionPropRefKey);
+    }
+
+	/**
+	 * Returns the password callback class name.
+	 * @return Returns String.
+	 */
+	public String getPasswordCallbackClass() {
+		return (String)this.action.get(WSHandlerConstants.PW_CALLBACK_CLASS);
+	}
+
+	/**
+	 * Sets the password callback class name.
+	 * @param passwordCallbackClass
+	 */
+	public void setPasswordCallbackClass(String passwordCallbackClass) {
+		this.action.put(WSHandlerConstants.PW_CALLBACK_CLASS,passwordCallbackClass);
+	}
+
+	/**
+	 * Returns the signature property file.
+	 * @return Returns String.
+	 */
+	public String getSignaturePropFile() {
+		return (String)this.action.get(WSHandlerConstants.SIG_PROP_FILE);
+	}
+
+	/**
+	 * Sets the signature property file.
+	 * @param signaturePropFile
+	 */
+	public void setSignaturePropFile(String signaturePropFile) {
+		this.action.put(WSHandlerConstants.SIG_PROP_FILE, signaturePropFile);
+	}
+    
+    /**
+     * Sets the signature property ref key.
+     * @param signaturePropRefId
+     */
+    public void setSignaturePropRefId(String signaturePropRefId) {
+        this.action.put(WSHandlerConstants.SIG_PROP_REF_ID, signaturePropRefId);
+    }
+	
+	/**
+	 * Sets whether signature confirmation should be enabled or not.
+	 * @param value
+	 */
+	public void setEnableSignatureConfirmation(boolean value) {
+		this.action.put(
+				WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION, value?"true":"false");
+	}
+	
+	/**
+	 * Returns whether signature confirmation should be enabled or not.
+	 * @return Returns String.
+	 */
+	public String getEnableSignatureConfirmation() {
+		return (String) this.action
+				.get(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION);
+	}
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/handler/config/OutflowConfiguration.java b/rampart_1_1/modules/security/src/org/apache/rampart/handler/config/OutflowConfiguration.java
new file mode 100644
index 0000000..0fe5212
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/handler/config/OutflowConfiguration.java
@@ -0,0 +1,600 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler.config;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axis2.description.Parameter;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerConstants;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * This is the representation of the outflow configurations of the security
+ * module.
+ * 
+ * @deprecated
+ */
+public class OutflowConfiguration {
+
+	private HashMap[] actionList;
+
+	private int currentAction = 0;
+
+	/**
+	 * Creates a default outflow configuration instance with an action.
+	 */
+	public OutflowConfiguration() {
+		this.actionList = new HashMap[1];
+		this.actionList[0] = new HashMap();
+	}
+
+	/**
+	 * Creates a new outflow configuration instance with the given number of
+	 * actions.
+	 * 
+	 * @param actionCount
+	 */
+	public OutflowConfiguration(int actionCount) {
+		this.actionList = new HashMap[actionCount];
+		for (int i = 0; i < actionCount; i++) {
+			this.actionList[i] = new HashMap();
+		}
+	}
+
+	/**
+	 * Returns the configuration as an Parameter
+	 * 
+	 * @return Returns Parameter.
+	 */
+	public Parameter getProperty() {
+		
+
+        for (int i = 0; i < actionList.length; i++) {
+            HashMap action = actionList[i];
+            
+            if (! action.keySet().contains("items")) {
+                return null;
+            }
+        }
+                
+		OMFactory fac = OMAbstractFactory.getOMFactory();
+        //TODO: Find the constants for "Parameter" and "name"
+        OMElement paramElement = fac.createOMElement("Parameter",null);
+		paramElement.addAttribute(fac.createOMAttribute("name", null ,WSSHandlerConstants.OUTFLOW_SECURITY));
+
+		
+		for (int i = 0; i < this.actionList.length; i++) {
+			// Create the action element
+			OMElement actionElem = fac.createOMElement(
+					WSSHandlerConstants.ACTION, null);
+
+			// Get the current action
+			HashMap action = this.actionList[i];
+
+			// Get the set of kes of the selected action
+			Iterator keys = action.keySet().iterator();
+
+			while (keys.hasNext()) {
+				String key = (String) keys.next();
+                String value = (String) action.get(key);
+                if(value != null && value.length() > 0) {
+                    // Create an element with the name of the key
+    				OMElement elem = fac.createOMElement(key, null);
+    				// Set the text value of the element
+                    elem.setText(value);
+    				// Add the element as a child of this action element
+    				actionElem.addChild(elem);
+                }
+			}
+			
+			paramElement.addChild(actionElem);
+		}
+		
+		Parameter param = new Parameter();
+		param.setParameterElement(paramElement);
+        param.setValue(paramElement);
+        param.setName(WSSHandlerConstants.OUTFLOW_SECURITY);
+		return param;
+	}
+
+	/**
+	 * Moves to the next action. If this is called when the current action is the
+	 * last action then the current action will not change.
+	 * 
+	 * @throws Exception
+	 */
+	public void nextAction() {
+		if (currentAction < this.actionList.length - 1) {
+			this.currentAction++;
+		}
+	}
+
+	/**
+	 * Moves to previous action. If this is called when the current action is the
+	 * first option then then the current action will not change.
+	 * 
+	 * @throws Exception
+	 */
+	public void previousAction() {
+		if (this.currentAction > 0) {
+			this.currentAction--;
+		}
+	}
+
+	/**
+	 * Sets the action items.
+	 * 
+	 * @param actionItems
+	 */
+	public void setActionItems(String actionItems) {
+		this.actionList[this.currentAction].put(
+				WSSHandlerConstants.ACTION_ITEMS, actionItems);
+	}
+
+	/**
+	 * Returns the action items.
+	 * @return Returns String.
+	 */
+	public String getActionItems() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSSHandlerConstants.ACTION_ITEMS);
+	}
+	
+	/**
+	 * Sets the user of the current action.
+	 * 
+	 * @param user
+	 */
+	public void setUser(String user) {
+		this.actionList[this.currentAction].put(WSHandlerConstants.USER, user);
+	}
+
+	/**
+	 * Returns the user of the current action.
+	 * @return Returns String.
+	 */
+	public String getUser() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.USER);
+	}
+	
+	/**
+	 * Sets the name of the password callback class of the current action.
+	 * 
+	 * @param passwordCallbackClass
+	 */
+	public void setPasswordCallbackClass(String passwordCallbackClass) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.PW_CALLBACK_CLASS, passwordCallbackClass);
+	}
+
+	/**
+	 * Returns the name of the password callback class of the current action.
+	 * @return Returns String.
+	 */
+	public String getPasswordCallbackClass() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.PW_CALLBACK_CLASS);
+	}
+	
+	/**
+	 * Sets the signature property file of the current action.
+	 * 
+	 * @param signaturePropFile
+	 */
+	public void setSignaturePropFile(String signaturePropFile) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.SIG_PROP_FILE, signaturePropFile);
+	}
+
+    /**
+     * Sets the signature property ref key of the current action.
+     * 
+     * @param signaturePropRefId
+     */
+    public void setSignaturePropRefId(String signaturePropRefId) {
+        this.actionList[this.currentAction].put(
+                WSHandlerConstants.SIG_PROP_REF_ID, signaturePropRefId);
+    }
+    
+	/**
+	 * Returns the signature property file of the current action.
+	 * @return Returns String.
+	 */
+	public String getSignaturePropFile() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.SIG_PROP_FILE);
+	}
+	
+	/**
+	 * Sets the signatue key identifier of the current action.
+	 * 
+	 * @param signatureKeyIdentifier
+     * Valid values:
+     * <ul>
+     * <li>X509KeyIdentifier - {@link WSSHandlerConstants#X509_KEY_IDENTIFIER}</li>
+     * <li>SKIKeyIdentifier - {@link WSSHandlerConstants#SKI_KEY_IDENTIFIER}</li>
+     * <li>IssuerSerial - {@link WSSHandlerConstants#ISSUER_SERIAL}</li>
+     * <li>DirectReference - {@link WSSHandlerConstants#BST_DIRECT_REFERENCE}</li>
+     * <li>Thumbprint - {@link WSSHandlerConstants#THUMBPRINT_IDENTIFIER}</li>
+     * </ul> 
+	 */
+	public void setSignatureKeyIdentifier(String signatureKeyIdentifier) {
+		this.actionList[this.currentAction].put(WSHandlerConstants.SIG_KEY_ID,
+				signatureKeyIdentifier);
+	}
+
+	/**
+	 * Returns the signatue key identifier of the current action.
+	 * @return Returns String.
+	 */
+	public String getSignatureKeyIdentifier() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.SIG_KEY_ID);
+	}
+    
+    public void setSignatureAlgorithm(String signatureAlgo) {
+        this.actionList[this.currentAction].put(WSHandlerConstants.SIG_ALGO,
+                signatureAlgo);
+    }
+    
+    public String getSignatureAlgorithm() {
+        return (String) this.actionList[this.currentAction]
+                .get(WSHandlerConstants.SIG_ALGO);
+    }
+	
+	/**
+	 * Sets the encrypted key identifier of the current action.
+     * <br/>
+	 * @param encryptionKeyIdentifier
+     * Valid values:
+     * <ul>
+     * <li>X509KeyIdentifier - {@link WSSHandlerConstants#X509_KEY_IDENTIFIER}</li>
+     * <li>SKIKeyIdentifier - {@link WSSHandlerConstants#SKI_KEY_IDENTIFIER}</li>
+     * <li>IssuerSerial - {@link WSSHandlerConstants#ISSUER_SERIAL}</li>
+     * <li>DirectReference - {@link WSSHandlerConstants#BST_DIRECT_REFERENCE}</li>
+     * <li>EmbeddedKeyName - {@link WSSHandlerConstants#EMBEDDED_KEYNAME}</li>
+     * <li>Thumbprint - {@link WSSHandlerConstants#THUMBPRINT_IDENTIFIER}</li>
+     * </ul> 
+	 */
+	public void setEncryptionKeyIdentifier(String encryptionKeyIdentifier) {
+		this.actionList[this.currentAction].put(WSHandlerConstants.ENC_KEY_ID,
+				encryptionKeyIdentifier);
+	}
+
+	/**
+	 * Returns the encrypted key identifier of the current action.
+	 * @return Returns String.
+	 */
+	public String getEncryptionKeyIdentifier() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENC_KEY_ID);
+	}
+	
+	/**
+	 * Sets the encryption user of the current action.
+	 * 
+	 * @param encryptionUser
+	 */
+	public void setEncryptionUser(String encryptionUser) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.ENCRYPTION_USER, encryptionUser);
+	}
+
+	/**
+	 * Returns the encryption user of the current action.
+	 * @return Returns String.
+	 */
+	public String getEncryptionUser() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENCRYPTION_USER);
+	}
+	
+	/**
+	 * Sets the signature parts of the current action.
+	 * 
+	 * @param signatureParts
+	 */
+	public void setSignatureParts(String signatureParts) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.SIGNATURE_PARTS, signatureParts);
+	}
+	
+	/**
+	 * Returns the signature parts of the current action.
+	 * @return Returns String.
+	 */
+	public String getSignatureParts() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.SIGNATURE_PARTS);
+	}
+
+	/**
+	 * Sets the encryption parts of the current action.
+	 * 
+	 * @param encryptionParts
+	 */
+	public void setEncryptionParts(String encryptionParts) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.ENCRYPTION_PARTS, encryptionParts);
+	}
+	
+	/**
+	 * Returns the encryption parts of the current action.
+	 * @return Returns String.
+	 */
+	public String getEncryptionParts() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENCRYPTION_PARTS);
+	}	
+
+	/**
+	 * Sets the password type of the current action
+	 * 
+	 * @param passwordType
+	 */
+	public void setPasswordType(String passwordType) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.PASSWORD_TYPE, passwordType);
+	}
+
+	/**
+	 * Returns the password type of the current action.
+	 * @return Returns String.
+	 */
+	public String getPasswordType() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.PASSWORD_TYPE);
+	}
+	
+	/**
+	 * Sets the encryption symmetric algorithm of the current action
+	 * 
+	 * @param encryptionSymAlgorithm
+	 */
+	public void setEncryptionSymAlgorithm(String encryptionSymAlgorithm) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.ENC_SYM_ALGO, encryptionSymAlgorithm);
+	}
+
+	/**
+	 * Returns the encryption symmetric algorithm of the current action.
+	 * @return Returns String.
+	 */
+	public String getEncryptionSymAlgorithm() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENC_SYM_ALGO);
+	}
+	
+	/**
+	 * Sets the encryption key transport algorithm of the current action
+	 * 
+	 * @param encryptionKeyTransportAlgorithm
+	 */
+	public void setEncryptionKeyTransportAlgorithm(
+			String encryptionKeyTransportAlgorithm) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.ENC_KEY_TRANSPORT,
+				encryptionKeyTransportAlgorithm);
+	}
+
+	/**
+	 * Returns the encryption key transport algorithm of the current action.
+	 * @return Returns String.
+	 */
+	public String getEncryptionKeyTransportAlgorithm() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENC_KEY_TRANSPORT);
+	}
+
+	/**
+	 * Sets the embedded key callback class of the current action
+	 * 
+	 * @param embeddedKeyCallbackClass
+	 */
+	public void setEmbeddedKeyCallbackClass(String embeddedKeyCallbackClass) {
+		this.actionList[this.currentAction]
+				.put(WSHandlerConstants.ENC_CALLBACK_CLASS,
+						embeddedKeyCallbackClass);
+	}
+
+	/**
+	 * Returns the embedded key callback class of the current action.
+	 * 
+	 * @return Returns String.
+	 */
+	public String getEmbeddedKeyCallbackClass() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENC_CALLBACK_CLASS);
+	}
+
+	/**
+	 * Sets the XPath expression to selecte the elements with content of the
+	 * current action to be MTOM optimized.
+	 * 
+	 * @param optimizePartsXPathExpr
+	 */
+	public void setOptimizeParts(String optimizePartsXPathExpr) {
+		this.actionList[this.currentAction].put(
+				WSSHandlerConstants.OPTIMIZE_PARTS, optimizePartsXPathExpr);
+	}
+
+	/**
+	 * Returns the Path expression to selecte the elements with content of the
+	 * current action to be MTOM optimized.
+	 * 
+	 * @return Returns String.
+	 */
+	public String getOptimizeParts() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSSHandlerConstants.OPTIMIZE_PARTS);
+	}
+	
+	/**
+	 * Sets the SAML property file of the current action.
+	 * @param samlPropFile
+	 */
+	public void setSamlPropFile(String samlPropFile) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.SAML_PROP_FILE, samlPropFile);
+	}
+	
+	/**
+	 * Returns the SAML property file of the current action.
+	 * @return Returns String.
+	 */
+	public String getSamlPropFile() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.SAML_PROP_FILE);
+	}
+	
+	/**
+	 * Sets the encryption property file.
+	 * @param encPropFile
+	 */
+	public void setEncryptionPropFile(String encPropFile) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.ENC_PROP_FILE, encPropFile);
+	}
+	
+    /**
+     * Sets the encryption property ref key of the current action.
+     * 
+     * @param encryptionPropRefId
+     */
+    public void setEncryptionPropRefId(String encryptionPropRefId) {
+        this.actionList[this.currentAction].put(
+                WSHandlerConstants.ENC_PROP_REF_ID, encryptionPropRefId);
+    }
+    
+	/**
+	 * Returns the encryption property file. 
+	 * @return Returns String.
+	 */
+	public String getEncryptionPropFile() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENC_PROP_FILE);
+	}
+
+    /**
+     * Enable/Disable PrecisionInMilliseconds
+     * @param value
+     */
+    public void setPrecisionInMilliseconds(boolean value) {
+        this.actionList[this.currentAction].put(
+                WSHandlerConstants.TIMESTAMP_PRECISION, value?"true":"false");
+    }
+    
+    /**
+     * Returns whether PrecisionInMilliseconds is enabled or not
+     * @return Returns String.
+     */
+    public String getPrecisionInMilliseconds() {
+        return (String) this.actionList[this.currentAction]
+                .get(WSHandlerConstants.TIMESTAMP_PRECISION);
+    }
+    
+	/**
+	 * Option to add additional elements in the username token element.
+	 * Example: Nonce and Create elements
+	 * @param addUTElements
+	 */
+	public void setAddUTElements(String addUTElements) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.ADD_UT_ELEMENTS, addUTElements);
+	}
+	
+	/**
+	 * Returns the additional elements to be added to the username token element.
+	 */
+	public String getAddUTElements() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ADD_UT_ELEMENTS);
+	}
+	
+	/**
+	 * Sets the text of the key name that needs to be sent.
+	 * @param embeddedKeyName
+	 */
+	public void setEmbeddedKeyName(String embeddedKeyName) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.ENC_KEY_NAME, embeddedKeyName);
+	}
+	
+	/**
+	 * Returns the text of the key name that needs to be sent.
+	 * @return Returns String.
+	 */
+	public String getEmbeddedKeyName() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENC_KEY_NAME);
+	}
+	
+	/**
+	 * Sets whether signature confirmation should be enabled or not.
+	 * @param value
+	 */
+	public void setEnableSignatureConfirmation(boolean value) {
+		this.actionList[this.currentAction].put(
+				WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION, value?"true":"false");
+	}
+	
+	/**
+	 * Returns whether signature confirmation should be enabled or not
+	 * @return Returns String.
+	 */
+	public String getEnableSignatureConfirmation() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION);
+	}
+	
+	/**
+	 * Sets whether signature confirmation should be enabled or not
+	 * @param value
+	 */
+	public void setPreserveOriginalEnvelope(boolean value) {
+		this.actionList[this.currentAction].put(
+				WSSHandlerConstants.PRESERVE_ORIGINAL_ENV, value?"true":"false");
+	}
+	
+	/**
+	 * Returns whether signature confirmation should be enabled or not.
+	 * @return Returns String.
+	 */
+	public String getPreserveOriginalEnvelope() {
+		return (String) this.actionList[this.currentAction]
+				.get(WSSHandlerConstants.PRESERVE_ORIGINAL_ENV);
+	}
+    
+    
+    public void setSignAllHeadersAndBody() {
+        this.actionList[this.currentAction].put(WSSHandlerConstants.SIGN_ALL_HEADERS, "true");
+        this.setSignBody();
+    }
+    
+    public void setSignBody() {
+        this.actionList[this.currentAction].put(WSSHandlerConstants.SIGN_BODY, "true");
+    }
+    
+    public void setEncryptBody() {
+        this.actionList[this.currentAction].put(WSSHandlerConstants.ENCRYPT_BODY, "true");
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/policy/RampartPolicyBuilder.java b/rampart_1_1/modules/security/src/org/apache/rampart/policy/RampartPolicyBuilder.java
new file mode 100755
index 0000000..6fae756
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/policy/RampartPolicyBuilder.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright 2004,2005 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.rampart.policy;
+
+import org.apache.neethi.Assertion;
+import org.apache.rampart.policy.model.RampartConfig;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.secpolicy.model.AsymmetricBinding;
+import org.apache.ws.secpolicy.model.Binding;
+import org.apache.ws.secpolicy.model.EncryptionToken;
+import org.apache.ws.secpolicy.model.Header;
+import org.apache.ws.secpolicy.model.InitiatorToken;
+import org.apache.ws.secpolicy.model.ProtectionToken;
+import org.apache.ws.secpolicy.model.RecipientToken;
+import org.apache.ws.secpolicy.model.SignatureToken;
+import org.apache.ws.secpolicy.model.SignedEncryptedElements;
+import org.apache.ws.secpolicy.model.SignedEncryptedParts;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.SymmetricAsymmetricBindingBase;
+import org.apache.ws.secpolicy.model.SymmetricBinding;
+import org.apache.ws.secpolicy.model.TokenWrapper;
+import org.apache.ws.secpolicy.model.TransportBinding;
+import org.apache.ws.secpolicy.model.Trust10;
+import org.apache.ws.secpolicy.model.Wss10;
+import org.apache.ws.secpolicy.model.Wss11;
+
+import java.util.Iterator;
+import java.util.List;
+
+public class RampartPolicyBuilder {
+    
+    /**
+     * Compile the parsed security data into one Policy data block.
+     * 
+     * This methods loops over all top level Policy Engine data elements,
+     * extracts the parsed parameters and sets them into a single data block.
+     * During this processing the method prepares the parameters in a format
+     * that is ready for processing by the WSS4J functions.
+     * 
+     * <p/>
+     * 
+     * The WSS4J policy enabled handler takes this data block to control the
+     * setup of the security header.
+     * 
+     * @param topLevelAssertions
+     *            The iterator of the top level policy assertions
+     * @return The compile Poilcy data block.
+     * @throws WSSPolicyException
+     */
+    public static RampartPolicyData build(List topLevelAssertions)
+            throws WSSPolicyException {
+        
+        RampartPolicyData rpd = new RampartPolicyData();
+        
+        for (Iterator iter = topLevelAssertions.iterator(); iter.hasNext();) {
+            Assertion assertion = (Assertion) iter.next();
+            if (assertion instanceof Binding) {
+                if (assertion instanceof SymmetricBinding) {
+                    processSymmetricPolicyBinding((SymmetricBinding) assertion, rpd);
+                } else if(assertion instanceof AsymmetricBinding) {
+                    processAsymmetricPolicyBinding((AsymmetricBinding) assertion, rpd);
+                } else {
+                    processTransportBinding((TransportBinding) assertion, rpd);
+                }
+                
+                /*
+                 * Don't change the order of Wss11 / Wss10 instance checks
+                 * because Wss11 extends Wss10 - thus first check Wss11.
+                 */
+            } else if (assertion instanceof Wss11) {
+                processWSS11((Wss11) assertion, rpd);
+            } else if (assertion instanceof Wss10) {
+                processWSS10((Wss10) assertion, rpd);
+            } else if (assertion instanceof SignedEncryptedElements) {
+                processSignedEncryptedElements((SignedEncryptedElements) assertion,
+                        rpd);
+            } else if (assertion instanceof SignedEncryptedParts) {
+                processSignedEncryptedParts((SignedEncryptedParts) assertion, rpd);
+            } else if (assertion instanceof SupportingToken) {
+                processSupportingTokens((SupportingToken) assertion, rpd);
+            } else if (assertion instanceof Trust10) {
+                processTrust10((Trust10)assertion, rpd);
+            } else if (assertion instanceof RampartConfig) {
+                processRampartConfig((RampartConfig)assertion, rpd);
+            } else {
+                
+                System.out.println("Unknown top level PED found: "
+                        + assertion.getClass().getName());
+            }
+        }
+        
+        return rpd;
+    }
+
+    /**
+     * @param binding
+     * @param rpd
+     */
+    private static void processTransportBinding(TransportBinding binding, RampartPolicyData rpd) {
+        binding(binding, rpd);
+        rpd.setTransportBinding(true);
+    }
+
+    /**
+     * Add TRust10 assertion info into rampart policy data
+     * @param trust10
+     * @param rpd
+     */
+    private static void processTrust10(Trust10 trust10, RampartPolicyData rpd) {
+        rpd.setTrust10(trust10);
+    }
+
+    /**
+     * Add the rampart configuration information into rampart policy data.
+     * @param config
+     * @param rpd
+     */
+    private static void processRampartConfig(RampartConfig config, RampartPolicyData rpd) {
+        rpd.setRampartConfig(config);
+    }
+
+    /**
+     * Evaluate the symmetric policy binding data.
+     * 
+     * @param binding
+     *            The binding data
+     * @param rpd
+     *            The WSS4J data to initialize
+     * @throws WSSPolicyException
+     */
+    private static void processSymmetricPolicyBinding(
+            SymmetricBinding symmBinding, RampartPolicyData rpd)
+            throws WSSPolicyException {
+        rpd.setSymmetricBinding(true);
+        binding(symmBinding, rpd);
+        symmAsymmBinding(symmBinding, rpd);
+        symmetricBinding(symmBinding, rpd);
+    }
+
+    private static void processWSS10(Wss10 wss10, RampartPolicyData rpd) {
+        rpd.setWss10(wss10);
+    }
+
+    /**
+     * Evaluate the asymmetric policy binding data.
+     * 
+     * @param binding
+     *            The binding data
+     * @param rpd
+     *            The WSS4J data to initialize
+     * @throws WSSPolicyException
+     */
+    private static void processAsymmetricPolicyBinding(
+            AsymmetricBinding binding, RampartPolicyData rpd)
+            throws WSSPolicyException {
+        rpd.setSymmetricBinding(false);
+        binding(binding, rpd);
+        symmAsymmBinding(binding, rpd);
+        asymmetricBinding(binding, rpd);
+    }
+
+    private static void processWSS11(Wss11 wss11, RampartPolicyData rpd) {
+        rpd.setSignatureConfirmation(wss11.isRequireSignatureConfirmation());
+        rpd.setWss11(wss11);
+    }
+
+    /**
+     * Populate elements to sign and/or encrypt with the message tokens.
+     * 
+     * @param sep
+     *            The data describing the elements (XPath)
+     * @param rpd
+     *            The WSS4J data to initialize
+     */
+    private static void processSignedEncryptedElements(
+            SignedEncryptedElements see, RampartPolicyData rpd) {
+        Iterator it = see.getXPathExpressions().iterator();
+        if (see.isSignedElemets()) {
+            while (it.hasNext()) {
+                rpd.setSignedElements((String) it.next());
+            }
+        } else {
+            while (it.hasNext()) {
+                rpd.setEncryptedElements((String) it.next());
+            }
+        }
+    }
+
+    /**
+     * Populate parts to sign and/or encrypt with the message tokens.
+     * 
+     * @param sep
+     *            The data describing the parts
+     * @param rpd
+     *            The WSS4J data to initialize
+     */
+    private static void processSignedEncryptedParts(SignedEncryptedParts sep,
+            RampartPolicyData rpd) {
+        Iterator it = sep.getHeaders().iterator();
+        if (sep.isSignedParts()) {
+            rpd.setSignBody(sep.isBody());
+            while (it.hasNext()) {
+                Header header = (Header) it.next();
+                rpd.setSignedParts(header.getNamespace(), header.getName());
+            }
+        } else {
+            rpd.setEncryptBody(sep.isBody());
+            while (it.hasNext()) {
+                Header header = (Header) it.next();
+                rpd.setEncryptedParts(header.getNamespace(), header.getName());
+            }
+        }
+    }
+
+    /**
+     * Evaluate policy data that is common to all bindings.
+     * 
+     * @param binding
+     *            The common binding data
+     * @param rpd
+     *            The WSS4J data to initialize
+     */
+    private static void binding(Binding binding, RampartPolicyData rpd) {
+        rpd.setLayout(binding.getLayout().getValue());
+        rpd.setIncludeTimestamp(binding.isIncludeTimestamp());
+        rpd.setAlgorithmSuite(binding.getAlgorithmSuite());
+    }
+
+    /**
+     * Evaluate policy data that is common to symmetric and asymmetric bindings.
+     * 
+     * @param binding
+     *            The symmetric/asymmetric binding data
+     * @param rpd
+     *            The WSS4J data to initialize
+     */
+    private static void symmAsymmBinding(
+            SymmetricAsymmetricBindingBase binding, RampartPolicyData rpd) {
+        rpd.setEntireHeadersAndBodySignatures(binding
+                .isEntireHeadersAndBodySignatures());
+        rpd.setProtectionOrder(binding.getProtectionOrder());
+        rpd.setSignatureProtection(binding.isSignatureProtection());
+        rpd.setTokenProtection(binding.isTokenProtection());
+        rpd.setAlgorithmSuite(binding.getAlgorithmSuite());
+    }
+
+    /**
+     * Evaluate policy data that is specific to symmetric binding.
+     * 
+     * @param binding
+     *            The symmetric binding data
+     * @param rpd
+     *            The WSS4J data to initialize
+     */
+    private static void symmetricBinding(SymmetricBinding binding,
+            RampartPolicyData rpd) throws WSSPolicyException {
+        Assertion token = binding.getProtectionToken();
+        
+        if (token != null) {
+            rpd.setProtectionToken(((ProtectionToken)token).getProtectionToken());
+        } else {
+            token = binding.getEncryptionToken();
+            Assertion token1 = binding.getSignatureToken();
+            if (token == null && token1 == null) {
+                // this is an error - throw something
+            }
+            rpd.setEncryptionToken(
+                    ((EncryptionToken) token).getEncryptionToken());
+            rpd.setSignatureToken(((SignatureToken) token).getSignatureToken());
+        }
+    }
+
+    /**
+     * Evaluate policy data that is specific to asymmetric binding.
+     * 
+     * @param binding
+     *            The asymmetric binding data
+     * @param rpd
+     *            The WSS4J data to initialize
+     */
+    private static void asymmetricBinding(AsymmetricBinding binding,
+            RampartPolicyData rpd) throws WSSPolicyException {
+        TokenWrapper tokWrapper = binding.getRecipientToken();
+        TokenWrapper tokWrapper1 = binding.getInitiatorToken();
+        if (tokWrapper == null && tokWrapper1 == null) {
+            // this is an error - throw something
+        }
+        rpd.setRecipientToken(((RecipientToken) tokWrapper).getReceipientToken());
+        rpd.setInitiatorToken(((InitiatorToken) tokWrapper1).getInitiatorToken());
+    }
+
+    private static void processSupportingTokens(SupportingToken token,
+            RampartPolicyData rpd) throws WSSPolicyException {
+        rpd.setSupportingTokens(token);
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/policy/RampartPolicyData.java b/rampart_1_1/modules/security/src/org/apache/rampart/policy/RampartPolicyData.java
new file mode 100755
index 0000000..0a7e5b1
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/policy/RampartPolicyData.java
@@ -0,0 +1,634 @@
+/*
+ * Copyright 2004,2005 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.rampart.policy;
+
+import org.apache.neethi.Policy;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.policy.model.RampartConfig;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.WSSPolicyException;
+import org.apache.ws.secpolicy.model.AlgorithmSuite;
+import org.apache.ws.secpolicy.model.SecureConversationToken;
+import org.apache.ws.secpolicy.model.SupportingToken;
+import org.apache.ws.secpolicy.model.Token;
+import org.apache.ws.secpolicy.model.Trust10;
+import org.apache.ws.secpolicy.model.Wss10;
+import org.apache.ws.secpolicy.model.Wss11;
+import org.apache.ws.security.WSEncryptionPart;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class RampartPolicyData {
+
+    /*
+     * Global settings for overall security processing
+     */
+    private boolean symmetricBinding;
+    
+    private boolean transportBinding;
+
+    private String layout;
+
+    private boolean includeTimestamp;
+
+    private boolean entireHeadersAndBodySignatures;
+
+    private String protectionOrder;
+
+    private boolean signatureProtection;
+
+    private boolean tokenProtection;
+
+    private boolean signatureConfirmation;
+
+    /*
+     * Message tokens for symmetrical binding
+     */
+    private Token encryptionToken;
+
+    private Token signatureToken;
+
+    /*
+     * Message tokens for asymmetrical binding
+     */
+    private Token recipientToken; // used to encrypt data to
+
+    // receipient
+
+    private Token initiatorToken; // used to sign data by
+
+    // initiator
+
+    /*
+     * Which parts or elements of the message to sign/encrypt with the messagen
+     * tokens. Parts or elements to sign/encrypt with supporting tokens are
+     * stored together with the tokens (see WSS4JPolicyToken).
+     */
+    private boolean signBody;
+
+    private boolean encryptBody;
+
+    private Vector signedParts = new Vector();
+
+    private Vector signedElements = new Vector();
+
+    private Vector encryptedParts = new Vector();
+
+    private Vector encryptedElements = new Vector();
+
+    /*
+     * Holds the supporting tokens elements
+     */
+    private SupportingToken supportingTokens;
+
+    private SupportingToken signedSupportingTokens;
+
+    private SupportingToken endorsingSupportingTokens;
+
+    private SupportingToken signedEndorsingSupportingTokens;
+    
+    private AlgorithmSuite algorithmSuite;
+    
+    private RampartConfig rampartConfig;
+    
+    private Trust10 trust10;
+    
+    private HashMap supportingTokensIdMap;
+    private HashMap signedSupportingTokensIdMap;
+    private HashMap endorsingSupportingTokensIdMap;
+    private HashMap signedEndorsingSupportingTokensIdMap;
+    
+    private Wss10 wss10;
+    private Wss11 wss11;
+    
+    private Policy issuerPolicy;
+    
+    /**
+     * @return Returns the symmetricBinding.
+     */
+    public boolean isSymmetricBinding() {
+        return symmetricBinding;
+    }
+
+    /**
+     * @param symmetricBinding
+     *            The symmetricBinding to set.
+     */
+    public void setSymmetricBinding(boolean symmetricBinding) {
+        this.symmetricBinding = symmetricBinding;
+    }
+
+    /**
+     * @return Returns the entireHeaderAndBodySignatures.
+     */
+    public boolean isEntireHeadersAndBodySignatures() {
+        return entireHeadersAndBodySignatures;
+    }
+
+    /**
+     * @param entireHeaderAndBodySignatures
+     *            The entireHeaderAndBodySignatures to set.
+     */
+    public void setEntireHeadersAndBodySignatures(
+            boolean entireHeaderAndBodySignatures) {
+        this.entireHeadersAndBodySignatures = entireHeaderAndBodySignatures;
+    }
+
+    /**
+     * @return Returns the includeTimestamp.
+     */
+    public boolean isIncludeTimestamp() {
+        return includeTimestamp;
+    }
+
+    /**
+     * @param includeTimestamp
+     *            The includeTimestamp to set.
+     */
+    public void setIncludeTimestamp(boolean includeTimestamp) {
+        this.includeTimestamp = includeTimestamp;
+    }
+
+    /**
+     * @return Returns the layout.
+     */
+    public String getLayout() {
+        return layout;
+    }
+
+    /**
+     * @param layout
+     *            The layout to set.
+     */
+    public void setLayout(String layout) {
+        this.layout = layout;
+    }
+
+    /**
+     * @return Returns the protectionOrder.
+     */
+    public String getProtectionOrder() {
+        return protectionOrder;
+    }
+
+    /**
+     * @param protectionOrder
+     *            The protectionOrder to set.
+     */
+    public void setProtectionOrder(String protectionOrder) {
+        this.protectionOrder = protectionOrder;
+    }
+
+    /**
+     * @return Returns the signatureProtection.
+     */
+    public boolean isSignatureProtection() {
+        return signatureProtection;
+    }
+
+    /**
+     * @param signatureProtection
+     *            The signatureProtection to set.
+     */
+    public void setSignatureProtection(boolean signatureProtection) {
+        this.signatureProtection = signatureProtection;
+    }
+
+    /**
+     * @return Returns the tokenProtection.
+     */
+    public boolean isTokenProtection() {
+        return tokenProtection;
+    }
+
+    /**
+     * @param tokenProtection
+     *            The tokenProtection to set.
+     */
+    public void setTokenProtection(boolean tokenProtection) {
+        this.tokenProtection = tokenProtection;
+    }
+
+    /**
+     * @return Returns the signatureConfirmation.
+     */
+    public boolean isSignatureConfirmation() {
+        return signatureConfirmation;
+    }
+
+    /**
+     * @param signatureConfirmation
+     *            The signatureConfirmation to set.
+     */
+    public void setSignatureConfirmation(boolean signatureConfirmation) {
+        this.signatureConfirmation = signatureConfirmation;
+    }
+
+    /**
+     * @return Returns the encryptedElements.
+     */
+    public Vector getEncryptedElements() {
+        return encryptedElements;
+    }
+
+    /**
+     * @param encElement
+     *            The encrypted Element (XPath) to set.
+     */
+    public void setEncryptedElements(String encElement) {
+
+        encryptedElements.add(encElement);
+    }
+
+    /**
+     * @return Returns the encryptedParts.
+     */
+    public Vector getEncryptedParts() {
+        return encryptedParts;
+    }
+
+    /**
+     * @param namespace
+     *            The namespace of the part.
+     * @param element
+     *            The part's element name.
+     */
+    public void setEncryptedParts(String namespace, String element) {
+        WSEncryptionPart wep = new WSEncryptionPart(element, namespace,
+                "Element");
+        encryptedParts.add(wep);
+    }
+
+    /**
+     * @return Returns the encryptBody.
+     */
+    public boolean isEncryptBody() {
+        return encryptBody;
+    }
+
+    /**
+     * @param encryptBody
+     *            The encryptBody to set.
+     */
+    public void setEncryptBody(boolean encryptBody) {
+        this.encryptBody = encryptBody;
+    }
+
+    /**
+     * @return Returns the signBody.
+     */
+    public boolean isSignBody() {
+        return signBody;
+    }
+
+    /**
+     * @param signBody
+     *            The signBody to set.
+     */
+    public void setSignBody(boolean signBody) {
+        this.signBody = signBody;
+    }
+
+    /**
+     * @return Returns the signedElements.
+     */
+    public Vector getSignedElements() {
+        return signedElements;
+    }
+
+    /**
+     * @param sigElement
+     *            The signed Element (XPath) to set.
+     */
+    public void setSignedElements(String sigElement) {
+
+        signedElements.add(sigElement);
+    }
+
+    /**
+     * @return Returns the signedParts.
+     */
+    public Vector getSignedParts() {
+        return signedParts;
+    }
+
+    /**
+     * @param namespace
+     *            The namespace of the part.
+     * @param element
+     *            The part's element name.
+     */
+    public void setSignedParts(String namespace, String element) {
+
+        WSEncryptionPart wep = new WSEncryptionPart(element, namespace,
+                "Content");
+        signedParts.add(wep);
+    }
+
+    public void setSupportingTokens(SupportingToken suppTokens)
+            throws WSSPolicyException {
+
+        int tokenType = suppTokens.getTokenType();
+        if (tokenType == Constants.SUPPORTING_TOKEN_SUPPORTING) {
+            supportingTokens = suppTokens;
+        } else if (tokenType == Constants.SUPPORTING_TOKEN_SIGNED) {
+            signedSupportingTokens = suppTokens;
+        } else if (tokenType == Constants.SUPPORTING_TOKEN_ENDORSING) {
+            endorsingSupportingTokens = suppTokens;
+        } else if (tokenType == Constants.SUPPORTING_TOKEN_SIGNED_ENDORSING) {
+            signedEndorsingSupportingTokens = suppTokens;
+        }
+    }
+    
+    
+
+    /**
+     * @return Returns the rampartConfig.
+     */
+    public RampartConfig getRampartConfig() {
+        return rampartConfig;
+    }
+
+    /**
+     * @return Returns the encryptionToken.
+     */
+    public Token getEncryptionToken() {
+        return encryptionToken;
+    }
+
+    /**
+     * @param encryptionToken The encryptionToken to set.
+     */
+    public void setEncryptionToken(Token encryptionToken) {
+        this.encryptionToken = encryptionToken;
+        this.extractIssuerPolicy(encryptionToken);
+    }
+
+    /**
+     * @return Returns the initiatorToken.
+     */
+    public Token getInitiatorToken() {
+        return initiatorToken;
+    }
+
+    /**
+     * @param initiatorToken The initiatorToken to set.
+     */
+    public void setInitiatorToken(Token initiatorToken) {
+        this.initiatorToken = initiatorToken;
+    }
+
+    /**
+     * @return Returns the recipientToken.
+     */
+    public Token getRecipientToken() {
+        return recipientToken;
+    }
+
+    /**
+     * @param recipientToken The recipientToken to set.
+     */
+    public void setRecipientToken(Token recipientToken) {
+        this.recipientToken = recipientToken;
+    }
+    
+    public void setProtectionToken(Token protectionToken) {
+        this.setEncryptionToken(protectionToken);
+        this.setSignatureToken(protectionToken);
+        this.extractIssuerPolicy(protectionToken);
+    }
+
+    /**
+     * @return Returns the signatureToken.
+     */
+    public Token getSignatureToken() {
+        return signatureToken;
+    }
+
+    /**
+     * @param signatureToken The signatureToken to set.
+     */
+    public void setSignatureToken(Token signatureToken) {
+        this.signatureToken = signatureToken;
+        this.extractIssuerPolicy(signatureToken);
+    }
+
+    /**
+     * @return Returns the signedEndorsingSupportingToken.
+     */
+    public SupportingToken getSignedEndorsingSupportingTokens() {
+        return signedEndorsingSupportingTokens;
+    }
+
+    /**
+     * @param signedEndorsingSupportingTokens The signedEndorsingSupportingToken to set.
+     */
+    public void setSignedEndorsingSupportingTokens(
+            SupportingToken signedEndorsingSupportingTokens) {
+        this.signedEndorsingSupportingTokens = signedEndorsingSupportingTokens;
+    }
+
+    /**
+     * @return Returns the signedSupportingToken.
+     */
+    public SupportingToken getSignedSupportingTokens() {
+        return signedSupportingTokens;
+    }
+
+    /**
+     * @param signedSupportingTokens The signedSupportingToken to set.
+     */
+    public void setSignedSupportingTokens(SupportingToken signedSupportingTokens) {
+        this.signedSupportingTokens = signedSupportingTokens;
+    }
+
+    /**
+     * @return Returns the supportingToken.
+     */
+    public SupportingToken getSupportingTokens() {
+        return supportingTokens;
+    }
+
+    /**
+     * @param endorsingSupportingTokens The endorsingSupportingToken to set.
+     */
+    public void setEndorsingSupportingTokens(SupportingToken endorsingSupportingTokens) {
+        this.endorsingSupportingTokens = endorsingSupportingTokens;
+    }
+
+    /**
+     * @return Returns the endorsingSupportingToken.
+     */
+    public SupportingToken getEndorsingSupportingTokens() {
+        return endorsingSupportingTokens;
+    }
+
+    /**
+     * @return Returns the algorithmSuite.
+     */
+    public AlgorithmSuite getAlgorithmSuite() {
+        return algorithmSuite;
+    }
+
+    /**
+     * @param algorithmSuite The algorithmSuite to set.
+     */
+    public void setAlgorithmSuite(AlgorithmSuite algorithmSuite) {
+        this.algorithmSuite = algorithmSuite;
+    }
+
+    /**
+     * @return Returns the trust10.
+     */
+    public Trust10 getTrust10() {
+        return trust10;
+    }
+
+    /**
+     * @param trust10 The trust10 to set.
+     */
+    public void setTrust10(Trust10 trust10) {
+        this.trust10 = trust10;
+    }
+
+    /**
+     * @param rampartConfig The rampartConfig to set.
+     */
+    public void setRampartConfig(RampartConfig rampartConfig) {
+        this.rampartConfig = rampartConfig;
+    }
+
+    /**
+     * @return Returns the transportBinding.
+     */
+    public boolean isTransportBinding() {
+        return transportBinding;
+    }
+
+    /**
+     * @param transportBinding The transportBinding to set.
+     */
+    public void setTransportBinding(boolean transportBinding) {
+        this.transportBinding = transportBinding;
+    }
+
+    
+    /**
+     * Add the given token and id to the map. 
+     * @param token
+     * @param id
+     */
+    public void setSupporttingtokenId(Token token, String id, int type) throws RampartException {
+        
+        HashMap tokenMap = null;
+        switch (type) {
+        case Constants.SUPPORTING_TOKEN_SUPPORTING:
+            if(this.supportingTokensIdMap == null) {
+                this.supportingTokensIdMap = new HashMap();
+            }
+            tokenMap = this.supportingTokensIdMap;
+            break;
+
+        case Constants.SUPPORTING_TOKEN_SIGNED:
+            if(this.signedSupportingTokensIdMap == null) {
+                this.signedSupportingTokensIdMap = new HashMap();
+            }
+            tokenMap = this.signedSupportingTokensIdMap;
+            break;
+            
+        case Constants.SUPPORTING_TOKEN_ENDORSING:
+            if(this.endorsingSupportingTokensIdMap == null) {
+                this.endorsingSupportingTokensIdMap = new HashMap();
+            }
+            tokenMap = this.endorsingSupportingTokensIdMap;
+            break;
+            
+        case Constants.SUPPORTING_TOKEN_SIGNED_ENDORSING:
+            if(this.signedEndorsingSupportingTokensIdMap == null) {
+                this.signedEndorsingSupportingTokensIdMap = new HashMap();
+            }
+            tokenMap = this.signedEndorsingSupportingTokensIdMap;
+            break;
+            
+        default:
+            throw new RampartException("invalidSupportingVersionType",
+                    new String[] { Integer.toString(type) });
+        }
+        
+        tokenMap.put(token, id);
+    }
+    
+    public String getSupportingTokenID(Token token, int type)
+            throws RampartException {
+        switch (type) {
+        case Constants.SUPPORTING_TOKEN_SUPPORTING:
+            if(this.supportingTokensIdMap != null) {
+                return (String)this.supportingTokensIdMap.get(token);
+            }
+            return null;
+
+        case Constants.SUPPORTING_TOKEN_SIGNED:
+            if(this.signedSupportingTokensIdMap != null) {
+                return (String)this.signedSupportingTokensIdMap.get(token);
+            }
+            return null;
+            
+        case Constants.SUPPORTING_TOKEN_ENDORSING:
+            if(this.endorsingSupportingTokensIdMap != null) {
+                return (String)this.endorsingSupportingTokensIdMap.get(token);
+            }
+            return null;
+            
+        case Constants.SUPPORTING_TOKEN_SIGNED_ENDORSING:
+            if(this.signedEndorsingSupportingTokensIdMap == null) {
+                this.signedEndorsingSupportingTokensIdMap = new HashMap();
+            }
+            return null;
+
+        default:
+            throw new RampartException("invalidSupportingVersionType",
+                    new String[] { Integer.toString(type) });
+        }
+    }
+
+    public Wss10 getWss10() {
+        return wss10;
+    }
+
+    public void setWss10(Wss10 wss10) {
+        this.wss10 = wss10;
+    }
+
+    public Wss11 getWss11() {
+        return wss11;
+    }
+
+    public void setWss11(Wss11 wss11) {
+        this.wss11 = wss11;
+    }
+    
+    private void extractIssuerPolicy(Token token) {
+        if(token instanceof SecureConversationToken && this.issuerPolicy == null) {
+            this.issuerPolicy = ((SecureConversationToken)token).getBootstrapPolicy();
+        }
+    }
+
+    public Policy getIssuerPolicy() {
+        return issuerPolicy;
+    }
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/policy/builders/CryptoConfigBuilder.java b/rampart_1_1/modules/security/src/org/apache/rampart/policy/builders/CryptoConfigBuilder.java
new file mode 100644
index 0000000..dc70b03
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/policy/builders/CryptoConfigBuilder.java
@@ -0,0 +1,75 @@
+/*
+ * 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.rampart.policy.builders;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.rampart.policy.model.CryptoConfig;
+import org.apache.rampart.policy.model.RampartConfig;
+
+import javax.xml.namespace.QName;
+
+import java.util.Iterator;
+import java.util.Properties;
+
+public class CryptoConfigBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        
+        CryptoConfig cryptoCofig = new CryptoConfig();
+        
+        OMAttribute attribute = element.getAttribute(new QName(CryptoConfig.PROVIDER_ATTR));
+        cryptoCofig.setProvider(attribute.getAttributeValue().trim());
+        
+        Properties properties = new Properties();
+
+        OMElement childElement;
+        OMAttribute name;
+        String value;
+
+        for (Iterator iterator = element.getChildElements(); iterator.hasNext();) {
+            /*
+             * In this senario we could have used
+             * element.getChildrenWithQName(USER); Unfortunately we can't do
+             * that due to a bug in this method. TODO Need to get it fixed
+             */
+
+            childElement = (OMElement) iterator.next();
+
+            QName prop = new QName(RampartConfig.NS, CryptoConfig.PROPERTY_LN);
+            
+            if (prop.equals(childElement.getQName())) {
+                name = childElement.getAttribute(new QName(CryptoConfig.PROPERTY_NAME_ATTR));
+                value = childElement.getText();
+
+                properties.put(name.getAttributeValue(), value.trim());
+            }
+
+        }
+
+        cryptoCofig.setProp(properties);
+        return cryptoCofig;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {new QName(RampartConfig.NS, CryptoConfig.CRYPTO_LN)};
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/policy/builders/RampartConfigBuilder.java b/rampart_1_1/modules/security/src/org/apache/rampart/policy/builders/RampartConfigBuilder.java
new file mode 100644
index 0000000..509e1cf
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/policy/builders/RampartConfigBuilder.java
@@ -0,0 +1,68 @@
+/*
+ * 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.rampart.policy.builders;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.rampart.policy.model.CryptoConfig;
+import org.apache.rampart.policy.model.RampartConfig;
+
+import javax.xml.namespace.QName;
+
+public class RampartConfigBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+
+        RampartConfig rampartConfig = new RampartConfig();
+
+        OMElement childElement;
+
+        childElement = element.getFirstChildWithName(new QName(
+                RampartConfig.NS, RampartConfig.USER_LN));
+        if (childElement != null) {
+            rampartConfig.setUser(childElement.getText().trim());
+        }
+
+        childElement = element.getFirstChildWithName(new QName(
+                RampartConfig.NS, RampartConfig.ENCRYPTION_USER_LN));
+        if (childElement != null) {
+            rampartConfig.setEncryptionUser(childElement.getText().trim());
+        }
+
+        childElement = element.getFirstChildWithName(new QName(
+                RampartConfig.NS, RampartConfig.PW_CB_CLASS_LN));
+        if (childElement != null) {
+            rampartConfig.setPwCbClass(childElement.getText().trim());
+        }
+
+        childElement = element.getFirstChildWithName(new QName(
+                RampartConfig.NS, RampartConfig.SIG_CRYPTO_LN));
+        if (childElement != null) {
+            rampartConfig.setSigCryptoConfig((CryptoConfig) factory
+                    .build(childElement.getFirstElement()));
+        }
+
+        return rampartConfig;
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {new QName(RampartConfig.NS, RampartConfig.RAMPART_CONFIG_LN)};
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/policy/model/CryptoConfig.java b/rampart_1_1/modules/security/src/org/apache/rampart/policy/model/CryptoConfig.java
new file mode 100644
index 0000000..69e7361
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/policy/model/CryptoConfig.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2004,2005 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.rampart.policy.model;
+
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
+import org.apache.neethi.PolicyComponent;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import java.util.Iterator;
+import java.util.Properties;
+
+/**
+ * Policy model bean to capture crypto information.
+ * 
+ * Example:
+<pre>
+<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+    <ramp:property name="keystoreType">JKS</ramp:property>
+    <ramp:property name="keystoreFile">/path/to/file.jks</ramp:property>
+    <ramp:property name="keystorePassword">password</ramp:property>
+</ramp:crypto>
+</pre>
+ */
+public class CryptoConfig implements Assertion {
+    
+    public final static String CRYPTO_LN = "crypto";
+    public final static String PROVIDER_ATTR = "provider";
+    public final static String PROPERTY_LN = "property";
+    public final static String PROPERTY_NAME_ATTR = "name";
+
+    private String provider;
+    private Properties prop;
+    
+    public Properties getProp() {
+        return prop;
+    }
+    public void setProp(Properties prop) {
+        this.prop = prop;
+    }
+    public String getProvider() {
+        return provider;
+    }
+    public void setProvider(String provider) {
+        this.provider = provider;
+    }
+    
+    public QName getName() {
+        return new QName(RampartConfig.NS, CRYPTO_LN);
+    }
+
+    public boolean isOptional() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+ 
+    public PolicyComponent normalize() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String prefix = writer.getPrefix(RampartConfig.NS);
+        
+        if (prefix == null) {
+            prefix = RampartConfig.NS;
+            writer.setPrefix(prefix, RampartConfig.NS);
+        }
+        
+        writer.writeStartElement(prefix, CRYPTO_LN, RampartConfig.NS);
+        
+        if (getProvider() != null) {
+            writer.writeAttribute(PROVIDER_ATTR, getProvider());
+        }
+        
+        String key;
+        String value;
+        
+        for (Iterator iterator = prop.keySet().iterator(); iterator.hasNext();) {
+            key = (String) iterator.next();
+            value = prop.getProperty(key);
+            writer.writeStartElement(RampartConfig.NS, PROPERTY_LN);
+
+            writer.writeAttribute("name", key);
+
+            writer.writeCharacters(value);
+            writer.writeEndElement();
+        }
+        
+        writer.writeEndElement();
+    }
+    
+    public boolean equal(PolicyComponent policyComponent) {
+        throw new UnsupportedOperationException();
+    }
+
+    public short getType() {
+        return Constants.TYPE_ASSERTION;
+    }
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/policy/model/RampartConfig.java b/rampart_1_1/modules/security/src/org/apache/rampart/policy/model/RampartConfig.java
new file mode 100644
index 0000000..24f899c
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/policy/model/RampartConfig.java
@@ -0,0 +1,265 @@
+/*
+ * Copyright 2004,2005 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.rampart.policy.model;
+
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
+import org.apache.neethi.PolicyComponent;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * Rampart policy model bean to capture Rampart configuration assertion info.
+ * 
+ * Example:
+ * 
+ * <pre>
+ *  &lt;ramp:RampartConfig xmlns:ramp=&quot;http://ws.apache.org/rampart/policy&quot;&gt; 
+ *  &lt;ramp:user&gt;alice&lt;/ramp:user&gt;
+ *  &lt;ramp:encryptionUser&gt;bob&lt;/ramp:encryptionUser&gt;
+ *  &lt;ramp:passwordCallbackClass&gt;org.apache.axis2.security.PWCallback&lt;/ramp:passwordCallbackClass&gt;
+ *  &lt;ramp:timestampTTL&gt;300&lt;/ramp:timestampTTL&gt;
+ *  &lt;ramp:tokenStoreClass&gt;org.apache.rahas.StorageImpl&lt;/ramp:tokenStoreClass&gt;
+ *  
+ *  &lt;ramp:signatureCrypto&gt;
+ *  &lt;ramp:crypto provider=&quot;org.apache.ws.security.components.crypto.Merlin&quot;&gt;
+ *  &lt;ramp:property name=&quot;keystoreType&quot;&gt;JKS&lt;/ramp:property&gt;
+ *  &lt;ramp:property name=&quot;keystoreFile&quot;&gt;/path/to/file.jks&lt;/ramp:property&gt;
+ *  &lt;ramp:property name=&quot;keystorePassword&quot;&gt;password&lt;/ramp:property&gt;
+ *  &lt;/ramp:crypto&gt;
+ *  &lt;/ramp:signatureCrypto&gt;
+ *  
+ *  &lt;ramp:tokenIssuerPolicy&gt;
+ *  &lt;wsp:Policy&gt;
+ *  ....
+ *  ....
+ *  &lt;/wsp:Policy&gt;
+ *  &lt;/ramp:tokenIssuerPolicy&gt;
+ *  &lt;/ramp:RampartConfig&gt;
+ * 
+ * </pre>
+ * 
+ */
+public class RampartConfig implements Assertion {
+
+    public static final int DEFAULT_TIMESTAMP_TTL = 300000;
+
+    public final static String NS = "http://ws.apache.org/rampart/policy";
+
+    public final static String PREFIX = "rampart";
+
+    public final static String RAMPART_CONFIG_LN = "RampartConfig";
+
+    public final static String USER_LN = "user";
+
+    public final static String ENCRYPTION_USER_LN = "encryptionUser";
+
+    public final static String PW_CB_CLASS_LN = "passwordCallbackClass";
+
+    public final static String SIG_CRYPTO_LN = "signatureCrypto";
+
+    public final static String ENCR_CRYPTO_LN = "encryptionCypto";
+
+    public final static String DEC_CRYPTO_LN = "decryptionCrypto";
+
+    public final static String TS_TTL_LN = "timestampTTL";
+
+    public final static String TOKEN_STORE_CLASS_LN = "tokenStoreClass";
+
+    private String user;
+
+    private String encryptionUser;
+
+    private String pwCbClass;
+
+    private CryptoConfig sigCryptoConfig;
+
+    private CryptoConfig encrCryptoConfig;
+
+    private CryptoConfig decCryptoConfig;
+
+    private String timestampTTL = Integer.toString(DEFAULT_TIMESTAMP_TTL);
+
+    private String tokenStoreClass;
+
+    /**
+     * @return Returns the tokenStoreClass.
+     */
+    public String getTokenStoreClass() {
+        return tokenStoreClass;
+    }
+
+    /**
+     * @param tokenStoreClass
+     *            The tokenStoreClass to set.
+     */
+    public void setTokenStoreClass(String tokenStoreClass) {
+        this.tokenStoreClass = tokenStoreClass;
+    }
+
+    public CryptoConfig getDecCryptoConfig() {
+        return decCryptoConfig;
+    }
+
+    public void setDecCryptoConfig(CryptoConfig decCrypto) {
+        this.decCryptoConfig = decCrypto;
+    }
+
+    public CryptoConfig getEncrCryptoConfig() {
+        return encrCryptoConfig;
+    }
+
+    public void setEncrCryptoConfig(CryptoConfig encrCrypto) {
+        this.encrCryptoConfig = encrCrypto;
+    }
+
+    public String getEncryptionUser() {
+        return encryptionUser;
+    }
+
+    public void setEncryptionUser(String encryptionUser) {
+        this.encryptionUser = encryptionUser;
+    }
+
+    public String getPwCbClass() {
+        return pwCbClass;
+    }
+
+    public void setPwCbClass(String pwCbClass) {
+        this.pwCbClass = pwCbClass;
+    }
+
+    public CryptoConfig getSigCryptoConfig() {
+        return sigCryptoConfig;
+    }
+
+    public void setSigCryptoConfig(CryptoConfig sigCryptoConfig) {
+        this.sigCryptoConfig = sigCryptoConfig;
+    }
+
+    public String getUser() {
+        return user;
+    }
+
+    public void setUser(String user) {
+        this.user = user;
+    }
+
+    public QName getName() {
+        return new QName(NS, RAMPART_CONFIG_LN);
+    }
+
+    public boolean isOptional() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public PolicyComponent normalize() {
+        // TODO TODO
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String prefix = writer.getPrefix(NS);
+
+        if (prefix == null) {
+            prefix = PREFIX;
+            writer.setPrefix(PREFIX, NS);
+        }
+
+        writer.writeStartElement(PREFIX, RAMPART_CONFIG_LN, NS);
+        writer.writeNamespace(prefix, NS);
+
+        if (getUser() != null) {
+            writer.writeStartElement(NS, USER_LN);
+            writer.writeCharacters(getUser());
+            writer.writeEndElement();
+        }
+        
+        if (getEncryptionUser() != null) {
+            writer.writeStartElement(NS, ENCRYPTION_USER_LN);
+            writer.writeCharacters(getEncryptionUser());
+            writer.writeEndElement();
+        }
+        
+        if (getPwCbClass() != null) {
+            writer.writeStartElement(NS, PW_CB_CLASS_LN);
+            writer.writeCharacters(getPwCbClass());
+            writer.writeEndElement();
+        }
+        
+        if (getTimestampTTL() != null) {
+            writer.writeStartElement(NS, TS_TTL_LN);
+            writer.writeCharacters(getTimestampTTL());
+            writer.writeEndElement();
+        }
+        
+        if (getTokenStoreClass() != null) {
+            writer.writeStartElement(NS, TOKEN_STORE_CLASS_LN);
+            writer.writeCharacters(getTokenStoreClass());
+            writer.writeEndElement();
+        }
+        
+        if (encrCryptoConfig != null) {
+            writer.writeStartElement(NS, ENCR_CRYPTO_LN);
+            encrCryptoConfig.serialize(writer);
+            writer.writeEndElement();
+            
+        }
+        
+        if (decCryptoConfig != null) {
+            writer.writeStartElement(NS, DEC_CRYPTO_LN);
+            decCryptoConfig.serialize(writer);
+            writer.writeEndElement();
+        }
+        
+        if (sigCryptoConfig != null) {
+            writer.writeStartElement(NS, SIG_CRYPTO_LN);
+            sigCryptoConfig.serialize(writer);
+            writer.writeEndElement();
+        }
+        
+        writer.writeEndElement();
+
+    }
+
+    public boolean equal(PolicyComponent policyComponent) {
+        throw new UnsupportedOperationException("TODO");
+    }
+
+    public short getType() {
+        return Constants.TYPE_ASSERTION;
+    }
+
+    /**
+     * @return Returns the timestampTTL.
+     */
+    public String getTimestampTTL() {
+        return timestampTTL;
+    }
+
+    /**
+     * @param timestampTTL
+     *            The timestampTTL to set.
+     */
+    public void setTimestampTTL(String timestampTTL) {
+        this.timestampTTL = timestampTTL;
+    }
+
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/util/Axis2Util.java b/rampart_1_1/modules/security/src/org/apache/rampart/util/Axis2Util.java
new file mode 100644
index 0000000..7ee19cc
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/util/Axis2Util.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2004,2005 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.rampart.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.ws.security.WSSecurityException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamReader;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+/**
+ * Utility class for the Axis2-WSS4J Module
+ */
+public class Axis2Util {
+    
+    private static ThreadLocal doomTacker = new ThreadLocal();
+    
+    public static boolean isUseDOOM() {
+        Object value = doomTacker.get();
+        return (value != null);
+    }
+    
+    public static void useDOOM(boolean isDOOMRequired) {
+//TODO Enable this when we have DOOM fixed to be able to flow in and out of Axis2
+//        if(isDOOMRequired) {
+//            if(!isUseDOOM()) {
+//                System.setProperty(OMAbstractFactory.SOAP11_FACTORY_NAME_PROPERTY, SOAP11Factory.class.getName());
+//                System.setProperty(OMAbstractFactory.SOAP12_FACTORY_NAME_PROPERTY, SOAP12Factory.class.getName());
+//                System.setProperty(OMAbstractFactory.OM_FACTORY_NAME_PROPERTY, OMDOMFactory.class.getName());
+//                doomTacker.set(new Object());
+//            }
+//        } else {
+//            System.getProperties().remove(OMAbstractFactory.SOAP11_FACTORY_NAME_PROPERTY);
+//            System.getProperties().remove(OMAbstractFactory.SOAP12_FACTORY_NAME_PROPERTY);
+//            System.getProperties().remove(OMAbstractFactory.OM_FACTORY_NAME_PROPERTY);
+//            doomTacker.set(null);
+//        }
+    }
+    
+    
+	/**
+	 * Creates a DOM Document using the SOAP Envelope.
+	 * @param env An org.apache.axiom.soap.SOAPEnvelope instance
+	 * @return Returns the DOM Document of the given SOAP Envelope.
+	 * @throws Exception
+	 */
+	public static Document getDocumentFromSOAPEnvelope(SOAPEnvelope env, boolean disableDoom)
+			throws WSSecurityException {
+		try {
+            if(env instanceof Element) {
+                return ((Element)env).getOwnerDocument();
+            }
+            
+            if(!disableDoom) {
+    			env.build();
+                
+                //Workaround to prevent a bug in AXIOM where 
+                //there can be an incomplete OMElement as the first child body 
+                OMElement firstElement = env.getBody().getFirstElement();
+                if(firstElement != null) {
+                    firstElement.build();
+                }
+    			
+    			//Check the namespace and find SOAP version and factory
+    			String nsURI = null;
+    			SOAPFactory factory;
+    			if(env.getNamespace().getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+    				nsURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+    				factory = DOOMAbstractFactory.getSOAP11Factory();
+    			} else {
+    				nsURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+    				factory = DOOMAbstractFactory.getSOAP12Factory();
+    			}
+    			
+    			StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(env.getXMLStreamReader(),factory, nsURI);
+    			SOAPEnvelope envelope = (stAXSOAPModelBuilder).getSOAPEnvelope();
+    			((OMNode)envelope.getParent()).build();
+    			
+    			Element envElem = (Element)envelope;
+    			return envElem.getOwnerDocument();
+            } else {
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                env.build();
+                env.serialize(baos);
+                ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+                factory.setNamespaceAware(true);
+                return factory.newDocumentBuilder().parse(bais);
+            }
+		} catch (Exception e) {
+			throw new WSSecurityException(
+					"Error in converting SOAP Envelope to Document", e);
+		}
+	}
+
+	public static SOAPEnvelope getSOAPEnvelopeFromDOOMDocument(Document doc)
+            throws WSSecurityException {
+
+        try {
+            XMLStreamReader reader = ((OMElement) doc.getDocumentElement())
+                    .getXMLStreamReader();
+            StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(
+                    reader, null);
+            SOAPEnvelope envelope = stAXSOAPModelBuilder.getSOAPEnvelope();
+            envelope.build();
+            return envelope;
+            
+        } catch (FactoryConfigurationError e) {
+            throw new WSSecurityException(e.getMessage());
+        }
+
+    }
+	
+	
+	/**
+	 * Provides the appropriate key to pickup config params from the message context.
+	 * This is acutally used when the outflow handler (WSDoAllSender)
+	 * is repeated n number of times.
+	 * @param originalKey The default key
+	 * @param inHandler Whether the handler is the inflow handler or not
+	 * @param repetition The current repetition number
+	 * @return Returns the key to be used internally in the security module to pick
+	 * up the config params.
+	 */
+	public static String getKey(String originalKey, boolean inHandler, int repetition) {
+		
+		if(repetition > 0 && !inHandler && 
+				!originalKey.equals(WSSHandlerConstants.OUTFLOW_SECURITY)&&	
+				!originalKey.equals(WSSHandlerConstants.SENDER_REPEAT_COUNT)) {
+			
+				return originalKey + repetition;
+		}
+		return originalKey;
+	}
+	
+    /**
+     * This will build a DOOM Element that is of the same <code>Document</code>
+     * @param factory
+     * @param element
+     * @return
+     */
+    public static OMElement toDOOM(OMFactory factory, OMElement element){
+        StAXOMBuilder builder = new StAXOMBuilder(factory, element.getXMLStreamReader());
+        OMElement elem = builder.getDocumentElement();
+        elem.build();
+        return elem;
+    }
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/util/HandlerParameterDecoder.java b/rampart_1_1/modules/security/src/org/apache/rampart/util/HandlerParameterDecoder.java
new file mode 100644
index 0000000..8b0a227
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/util/HandlerParameterDecoder.java
@@ -0,0 +1,291 @@
+/*
+ * Copyright 2004,2005 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.rampart.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.rampart.handler.config.InflowConfiguration;
+import org.apache.rampart.handler.config.OutflowConfiguration;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.handler.WSHandlerConstants;
+
+import javax.xml.namespace.QName;
+import java.util.Iterator;
+
+/**
+ * This is used to process the security parameters from the configuration files
+ * 
+ * Example: <code>
+ <br>
+
+ </code>
+ * 
+ */
+public class HandlerParameterDecoder {
+
+	/**
+	 * 
+	 * @param msgCtx
+	 * @param inflow
+	 * @throws WSSecurityException
+	 */
+	public static void processParameters(MessageContext msgCtx, boolean inflow)
+			throws Exception {
+ 		Parameter inFlowSecParam;
+        	Parameter outFlowSecParam;
+        
+	        if(msgCtx.isServerSide()){
+            		inFlowSecParam = msgCtx.getParameter(WSSHandlerConstants.INFLOW_SECURITY_SERVER);
+            		outFlowSecParam = msgCtx.getParameter(WSSHandlerConstants.OUTFLOW_SECURITY_SERVER);
+       		 }else{
+            		inFlowSecParam = msgCtx.getParameter(WSSHandlerConstants.INFLOW_SECURITY_CLIENT);
+            		outFlowSecParam = msgCtx.getParameter(WSSHandlerConstants.OUTFLOW_SECURITY_CLIENT);
+        	}
+        
+        	//TODO: check whether policy is available 
+        	if(inFlowSecParam == null){
+            		inFlowSecParam = (Parameter)msgCtx.getProperty(WSSHandlerConstants.INFLOW_SECURITY);            
+       		}
+
+       	 	if(outFlowSecParam == null){
+            		outFlowSecParam = (Parameter)msgCtx.getProperty(WSSHandlerConstants.OUTFLOW_SECURITY);            
+       		 }
+		
+		//If the configs are not availabale in the file
+		if(inFlowSecParam == null) {
+			inFlowSecParam = msgCtx.getParameter(WSSHandlerConstants.INFLOW_SECURITY);
+		}
+		if(outFlowSecParam == null) {
+			outFlowSecParam = msgCtx.getParameter(WSSHandlerConstants.OUTFLOW_SECURITY);
+		}
+
+		int repetitionCount = -1;
+
+		/*
+		 * Populate the inflow parameters
+		 */
+		if (inFlowSecParam != null && inflow) {
+			OMElement inFlowParamElem = inFlowSecParam.getParameterElement();
+
+			OMElement actionElem = inFlowParamElem
+					.getFirstChildWithName(new QName(WSSHandlerConstants.ACTION));
+			if (actionElem == null) {
+				throw new Exception(
+						"Inflow configurtion must contain an 'action' "
+								+ "elementas the child of 'InflowSecurity' element");
+			}
+
+			Iterator childElements = actionElem.getChildElements();
+			while (childElements.hasNext()) {
+				OMElement element = (OMElement) childElements.next();
+				msgCtx.setProperty(element.getLocalName(), element.getText().trim());
+			}
+
+		}
+
+		/*
+		 * Populate the outflow parameters
+		 */
+		if (outFlowSecParam != null && !inflow) {
+			OMElement outFlowParamElem = outFlowSecParam.getParameterElement();
+			
+			Iterator childElements = outFlowParamElem.getChildElements();
+			while (childElements.hasNext()) {
+				OMElement element = (OMElement) childElements.next();
+				
+				if(!element.getLocalName().equals(WSSHandlerConstants.ACTION)) {
+					throw new Exception(
+							"Alian element '"
+									+ element.getLocalName()
+									+ "' in the 'OutFlowSecurity' element, " 
+									+ "only 'action' elements can be present");
+				}
+				
+                boolean signAllHeaders = false;
+                boolean signBody = false;
+                boolean encryptBody = false;
+                
+                repetitionCount++;
+				Iterator paramElements = element.getChildElements();
+				while (paramElements.hasNext()) {
+					OMElement elem = (OMElement) paramElements.next();
+                    String localName = elem.getLocalName();
+                    String text = elem.getText().trim();
+                    if(localName.equals(WSSHandlerConstants.SIGN_ALL_HEADERS)) {
+                        signAllHeaders = true;
+                    } else if(localName.equals(WSSHandlerConstants.SIGN_BODY)) {
+                        signBody = true;
+                    } else if(localName.equals(WSSHandlerConstants.ENCRYPT_BODY)) {
+                        encryptBody = true;
+                    } else {
+                        msgCtx.setProperty(Axis2Util.getKey(localName,
+							inflow,repetitionCount), text);
+                    }
+				}
+                
+                if(signAllHeaders || signBody || encryptBody) {
+                    handleSignEncrParts(signAllHeaders, signBody, encryptBody,
+                            msgCtx, repetitionCount);
+                }
+                
+				
+			}
+
+			msgCtx.setProperty(WSSHandlerConstants.SENDER_REPEAT_COUNT,
+					new Integer(repetitionCount));
+		}
+	}
+    
+    public static OutflowConfiguration getOutflowConfiguration(Parameter outflowConfigParam) throws AxisFault {
+        if (outflowConfigParam != null) {
+            OMElement outflowParamElem = outflowConfigParam.getParameterElement();
+
+            OMElement actionElem = outflowParamElem
+                    .getFirstChildWithName(new QName(WSSHandlerConstants.ACTION));
+            if (actionElem == null) {
+                throw new AxisFault(
+                        "Inflow configurtion must contain an 'action' "
+                                + "elementas the child of 'InflowSecurity' element");
+            }
+
+            OutflowConfiguration outflowConfiguration = new OutflowConfiguration();
+            
+            Iterator childElements = actionElem.getChildElements();
+            while (childElements.hasNext()) {
+                OMElement element = (OMElement) childElements.next();
+                
+                String localName = element.getLocalName();
+                String text = element.getText().trim();
+                if(localName.equals(WSHandlerConstants.PW_CALLBACK_CLASS)) {
+                    outflowConfiguration.setPasswordCallbackClass(text);
+                } else if(localName.equals(WSHandlerConstants.SIG_PROP_FILE)) {
+                    outflowConfiguration.setSignaturePropFile(text);
+                } else if(localName.equals(WSHandlerConstants.ENC_PROP_FILE)) {
+                    outflowConfiguration.setEncryptionPropFile(text);
+                } else if(localName.equals(WSHandlerConstants.ENC_CALLBACK_CLASS)) {
+                    outflowConfiguration.setEmbeddedKeyCallbackClass(text);
+                } else if(localName.equals(WSHandlerConstants.USER)) {
+                    outflowConfiguration.setUser(text);
+                } else if(localName.equals(WSHandlerConstants.ENCRYPTION_USER)) {
+                    outflowConfiguration.setEncryptionUser(text);
+                }
+            }
+            return outflowConfiguration;
+        }
+        return null;
+    }
+    
+    public static InflowConfiguration getInflowConfiguration(Parameter inflowConfigParam) throws AxisFault {
+
+        if (inflowConfigParam != null) {
+            OMElement inFlowParamElem = inflowConfigParam.getParameterElement();
+
+            OMElement actionElem = inFlowParamElem
+                    .getFirstChildWithName(new QName(WSSHandlerConstants.ACTION));
+            if (actionElem == null) {
+                throw new AxisFault(
+                        "Inflow configurtion must contain an 'action' "
+                                + "elementas the child of 'InflowSecurity' element");
+            }
+
+            InflowConfiguration inflowConfiguration = new InflowConfiguration();
+            
+            Iterator childElements = actionElem.getChildElements();
+            while (childElements.hasNext()) {
+                OMElement element = (OMElement) childElements.next();
+                
+                String localName = element.getLocalName();
+                String text = element.getText().trim();
+                
+                if(localName.equals(WSHandlerConstants.PW_CALLBACK_CLASS)) {
+                    inflowConfiguration.setPasswordCallbackClass(text);
+                } else if(localName.equals(WSHandlerConstants.SIG_PROP_FILE)) {
+                    inflowConfiguration.setSignaturePropFile(text);
+                } else if(localName.equals(WSHandlerConstants.DEC_PROP_FILE)) {
+                    inflowConfiguration.setDecryptionPropFile(text);
+                } else if (WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION
+                        .equals(localName)) {
+                    if ("false".equals(text)
+                            || "0".equals(text)) {
+                        inflowConfiguration
+                                .setEnableSignatureConfirmation(false);
+                    }
+                }
+            }
+            return inflowConfiguration;
+        }
+        return null;
+    }
+
+    private static void handleSignEncrParts(boolean signAllHeaders,
+            boolean signBody, boolean encrBody, MessageContext msgCtx,
+            int repetition) {
+        String soapNs = msgCtx.getEnvelope().getNamespace().getNamespaceURI();
+        if(signBody) {
+            //Add body signPart
+            String sigBodySigPart = "{Element}{" + soapNs + "}Body";
+            addSigPart(sigBodySigPart, msgCtx, repetition);
+        }
+        if(encrBody) {
+            //Encrypt body content
+            String encrBodyEncrPart = "{}{" + soapNs + "}Body";
+            addEncrPart(encrBodyEncrPart, msgCtx, repetition);
+        }
+        if(signAllHeaders) {
+            Iterator children = msgCtx.getEnvelope().getHeader().getChildElements();
+            while (children.hasNext()) {
+                OMElement element = (OMElement) children.next();
+                //Sign only the quilified headers
+                //TODO check whether we can sign the unqualified header elements
+                String ns = element.getNamespace().getNamespaceURI();
+                if(ns != null && ns.length() > 0) {
+                    addSigPart("{Element}{" + ns + "}" + element.getLocalName(),msgCtx, repetition);
+                }
+            }
+        }
+        
+    }
+    
+    private static void addSigPart(String sigPart, MessageContext msgCtx, int repetition) {
+        String key = Axis2Util.getKey(WSHandlerConstants.SIGNATURE_PARTS, false, repetition);
+        String existingSignParts = (String) msgCtx.getProperty(key);
+        if (existingSignParts != null && existingSignParts.length() > 0) {
+            // If the part is not already there as a sign part
+            if (existingSignParts.indexOf(sigPart) != -1) {
+                msgCtx.setProperty(key, existingSignParts + ";" + sigPart);
+            }
+        } else {
+            // If there are no signed parts
+            msgCtx.setProperty(key, sigPart);
+        }
+    }
+    
+    private static void addEncrPart(String encrPart, MessageContext msgCtx, int repetition) {
+        String key = Axis2Util.getKey(WSHandlerConstants.ENCRYPTION_PARTS, false, repetition);
+        String existingEncrParts = (String) msgCtx.getProperty(key);
+        if (existingEncrParts != null && existingEncrParts.length() > 0) {
+            if (existingEncrParts.indexOf(encrPart) != -1) {
+                msgCtx.setProperty(key, existingEncrParts + ";" + encrPart);
+            }
+        } else {
+            msgCtx.setProperty(key, encrPart);
+        }
+    }
+    
+}
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/util/MessageOptimizer.java b/rampart_1_1/modules/security/src/org/apache/rampart/util/MessageOptimizer.java
new file mode 100644
index 0000000..10a1d58
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/util/MessageOptimizer.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2004,2005 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.rampart.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityException;
+import org.jaxen.JaxenException;
+import org.jaxen.SimpleNamespaceContext;
+import org.jaxen.XPath;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+/**
+ * Utility class to handle MTOM-Optimizing Base64 Text values
+ */
+public class MessageOptimizer {
+
+	/**
+	 * Mark the requied Base64 text values as optimized
+	 * @param env
+	 * @param optimizeParts This is a set of xPath expressions
+	 *  
+	 * @throws WSSecurityException
+	 */
+	public static void optimize(SOAPEnvelope env, String optimizeParts) throws WSSecurityException {
+		String separater = "<>";
+		StringTokenizer tokenizer = new StringTokenizer(optimizeParts, separater);
+		
+		while(tokenizer.hasMoreTokens()) {
+			
+			String xpathExpr = tokenizer.nextToken(); 
+			
+			//Find binary content
+			List list = findElements(env,xpathExpr);
+			
+			Iterator cipherValueElements = list.iterator();
+			
+			while (cipherValueElements.hasNext()) {
+				OMElement element = (OMElement) cipherValueElements.next();
+				OMText text = (OMText)element.getFirstOMChild();
+                System.out.println(text.getText().length());
+				text.setOptimize(true);
+			}
+		}
+	}
+	
+	
+	private static List findElements(OMElement elem, String expression) throws WSSecurityException {
+		try {
+			XPath xp = new AXIOMXPath(expression);
+			
+			//Set namespaces
+			SimpleNamespaceContext nsCtx = new SimpleNamespaceContext();
+			nsCtx.addNamespace(WSConstants.ENC_PREFIX,WSConstants.ENC_NS);
+			nsCtx.addNamespace(WSConstants.SIG_PREFIX,WSConstants.SIG_NS);
+			nsCtx.addNamespace(WSConstants.WSSE_PREFIX,WSConstants.WSSE_NS);
+			nsCtx.addNamespace(WSConstants.WSU_PREFIX,WSConstants.WSU_NS);
+			
+			xp.setNamespaceContext(nsCtx);
+			
+			return xp.selectNodes(elem);
+			
+		} catch (JaxenException e) {
+			throw new WSSecurityException(e.getMessage(), e);
+		}
+		
+	}
+	
+	
+	
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/src/org/apache/rampart/util/RampartUtil.java b/rampart_1_1/modules/security/src/org/apache/rampart/util/RampartUtil.java
new file mode 100644
index 0000000..d695703
--- /dev/null
+++ b/rampart_1_1/modules/security/src/org/apache/rampart/util/RampartUtil.java
@@ -0,0 +1,714 @@
+/*
+ * Copyright 2004,2005 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.rampart.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.neethi.Policy;
+import org.apache.rahas.RahasConstants;
+import org.apache.rahas.Token;
+import org.apache.rahas.TrustException;
+import org.apache.rahas.TrustUtil;
+import org.apache.rahas.client.STSClient;
+import org.apache.rampart.RampartException;
+import org.apache.rampart.RampartMessageData;
+import org.apache.rampart.policy.RampartPolicyData;
+import org.apache.rampart.policy.model.CryptoConfig;
+import org.apache.rampart.policy.model.RampartConfig;
+import org.apache.ws.secpolicy.Constants;
+import org.apache.ws.secpolicy.model.IssuedToken;
+import org.apache.ws.secpolicy.model.SecureConversationToken;
+import org.apache.ws.secpolicy.model.X509Token;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSEncryptionPart;
+import org.apache.ws.security.WSPasswordCallback;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.components.crypto.Crypto;
+import org.apache.ws.security.components.crypto.CryptoFactory;
+import org.apache.ws.security.conversation.ConversationConstants;
+import org.apache.ws.security.conversation.ConversationException;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
+import org.apache.ws.security.message.WSSecEncryptedKey;
+import org.apache.ws.security.util.Loader;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import javax.crypto.KeyGenerator;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.xml.namespace.QName;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Properties;
+import java.util.Vector;
+
+public class RampartUtil {
+
+    private static final String CRYPTO_PROVIDER = "org.apache.ws.security.crypto.provider";
+    private static Log log = LogFactory.getLog(RampartUtil.class);
+    
+
+    public static CallbackHandler getPasswordCB(RampartMessageData rmd) throws RampartException {
+
+        MessageContext msgContext = rmd.getMsgContext();
+        RampartPolicyData rpd = rmd.getPolicyData();
+        
+        return getPasswordCB(msgContext, rpd);
+    }
+
+    /**
+     * @param msgContext
+     * @param rpd
+     * @return The <code>CallbackHandler</code> instance
+     * @throws RampartException
+     */
+    public static CallbackHandler getPasswordCB(MessageContext msgContext, RampartPolicyData rpd) throws RampartException {
+        
+        CallbackHandler cbHandler;
+
+        if (rpd.getRampartConfig() != null && rpd.getRampartConfig().getPwCbClass() != null) {
+            
+            String cbHandlerClass = rpd.getRampartConfig().getPwCbClass();
+            ClassLoader classLoader = msgContext.getAxisService().getClassLoader();
+                
+            log.debug("loading class : " + cbHandlerClass);
+            
+            Class cbClass;
+            try {
+                cbClass = Loader.loadClass(classLoader, cbHandlerClass);
+            } catch (ClassNotFoundException e) {
+                throw new RampartException("cannotLoadPWCBClass", 
+                        new String[]{cbHandlerClass}, e);
+            }
+            try {
+                cbHandler = (CallbackHandler) cbClass.newInstance();
+            } catch (java.lang.Exception e) {
+                throw new RampartException("cannotCreatePWCBInstance",
+                        new String[]{cbHandlerClass}, e);
+            }
+        } else {
+            cbHandler = (CallbackHandler) msgContext.getProperty(
+                    WSHandlerConstants.PW_CALLBACK_REF);
+            if(cbHandler == null) {
+                Parameter param = msgContext.getParameter(
+                        WSHandlerConstants.PW_CALLBACK_REF);
+                cbHandler = (CallbackHandler)param.getValue();
+            }
+        }
+        
+        return cbHandler;
+    }
+    
+    /**
+     * Perform a callback to get a password.
+     * <p/>
+     * The called back function gets an indication why to provide a password:
+     * to produce a UsernameToken, Signature, or a password (key) for a given
+     * name.
+     */
+    public static WSPasswordCallback performCallback(CallbackHandler cbHandler,
+                                               String username,
+                                               int doAction)
+            throws RampartException {
+
+        WSPasswordCallback pwCb;
+        int reason = 0;
+
+        switch (doAction) {
+        case WSConstants.UT:
+        case WSConstants.UT_SIGN:
+                reason = WSPasswordCallback.USERNAME_TOKEN;
+                break;
+            case WSConstants.SIGN:
+                reason = WSPasswordCallback.SIGNATURE;
+                break;
+            case WSConstants.ENCR:
+                reason = WSPasswordCallback.KEY_NAME;
+                break;
+        }
+        pwCb = new WSPasswordCallback(username, reason);
+        Callback[] callbacks = new Callback[1];
+        callbacks[0] = pwCb;
+        /*
+        * Call back the application to get the password
+        */
+        try {
+            cbHandler.handle(callbacks);
+        } catch (Exception e) {
+            throw new RampartException("pwcbFailed", e);
+        }
+        return pwCb;
+    }
+    
+    /**
+     * Create the <code>Crypto</code> instance for encryption using information 
+     * from the rampart configuration assertion
+     * 
+     * @param config
+     * @return The <code>Crypto</code> instance to be used for encryption
+     * @throws RampartException
+     */
+    public static Crypto getEncryptionCrypto(RampartConfig config, ClassLoader loader)
+            throws RampartException {
+        log.debug("Loading encryption crypto");
+        
+        if(config != null && config.getEncrCryptoConfig() != null) {
+            CryptoConfig cryptoConfig = config.getEncrCryptoConfig();
+            String provider = cryptoConfig.getProvider();
+            log.debug("Usig provider: " + provider);
+            Properties prop = cryptoConfig.getProp();
+            prop.put(CRYPTO_PROVIDER, provider);
+            return CryptoFactory.getInstance(prop, loader);
+        } else {
+            log.debug("Trying the signature crypto info");
+
+            //Try using signature crypto infomation
+            if(config != null && config.getSigCryptoConfig() != null) {
+                CryptoConfig cryptoConfig = config.getSigCryptoConfig();
+                String provider = cryptoConfig.getProvider();
+                log.debug("Usig provider: " + provider);
+                Properties prop = cryptoConfig.getProp();
+                prop.put(CRYPTO_PROVIDER, provider);
+                return CryptoFactory.getInstance(prop, loader);
+            } else {
+                return null;
+            }
+        }
+    }
+    
+    /**
+     * Create the <code>Crypto</code> instance for signature using information 
+     * from the rampart configuration assertion
+     * 
+     * @param config
+     * @return The <code>Crypto</code> instance to be used for signature
+     * @throws RampartException
+     */
+    public static Crypto getSignatureCrypto(RampartConfig config, ClassLoader loader)
+            throws RampartException {
+        log.debug("Loading Signature crypto");
+        
+        if(config != null && config.getSigCryptoConfig() != null) {
+            CryptoConfig cryptoConfig = config.getSigCryptoConfig();
+            String provider = cryptoConfig.getProvider();
+            log.debug("Usig provider: " + provider);
+            Properties prop = cryptoConfig.getProp();
+            prop.put(CRYPTO_PROVIDER, provider);
+            return CryptoFactory.getInstance(prop, loader);
+        } else {
+            return null;
+        }
+    }
+    
+    
+    /**
+     * figureout the key identifier of a give X509Token
+     * @param token
+     * @return The key identifier of a give X509Token
+     * @throws RampartException
+     */
+    public static int getKeyIdentifier(X509Token token) throws RampartException {
+        if (token.isRequireIssuerSerialReference()) {
+            return WSConstants.ISSUER_SERIAL;
+        } else if (token.isRequireThumbprintReference()) {
+            return WSConstants.THUMBPRINT_IDENTIFIER;
+        } else if (token.isRequireEmbeddedTokenReference()) {
+            return WSConstants.BST_DIRECT_REFERENCE;
+        } else {
+            throw new RampartException(
+                    "unknownKeyRefSpeficier");
+
+        }
+    }
+    
+    /**
+     * Process a give issuer address element and return the address.
+     * @param issuerAddress
+     * @return The address of an issuer address element
+     * @throws RampartException If the issuer address element is malformed.
+     */
+    public static String processIssuerAddress(OMElement issuerAddress) 
+        throws RampartException {
+        if(issuerAddress != null && issuerAddress.getText() != null && 
+                !"".equals(issuerAddress.getText())) {
+            return issuerAddress.getText().trim();
+        } else {
+            throw new RampartException("invalidIssuerAddress",
+                    new String[] { issuerAddress.toString() });
+        }
+    }
+    
+    
+    public static OMElement createRSTTempalteForSCT(int conversationVersion, 
+            int wstVersion) throws RampartException {
+        try {
+            log.debug("Creating RSTTemplate for an SCT request");
+            OMFactory fac = OMAbstractFactory.getOMFactory();
+            
+            OMNamespace wspNs = fac.createOMNamespace(Constants.SP_NS, "wsp");
+            OMElement rstTempl = fac.createOMElement(
+                    Constants.REQUEST_SECURITY_TOKEN_TEMPLATE.getLocalPart(),
+                    wspNs);
+            
+            //Create TokenType element and set the value
+            OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(
+                    wstVersion, rstTempl);
+            String tokenType = ConversationConstants
+                    .getWSCNs(conversationVersion)
+                    + ConversationConstants.TOKEN_TYPE_SECURITY_CONTEXT_TOKEN;
+            tokenTypeElem.setText(tokenType);
+            
+            return rstTempl;
+        } catch (TrustException e) {
+            throw new RampartException("errorCreatingRSTTemplateForSCT", e);
+        } catch (ConversationException e) {
+            throw new RampartException("errorCreatingRSTTemplateForSCT", e);
+        }
+    }
+    
+
+    public static int getTimeToLive(RampartMessageData messageData) {
+
+        RampartConfig rampartConfig = messageData.getPolicyData().getRampartConfig();
+        if(rampartConfig != null) {
+        String ttl = rampartConfig.getTimestampTTL();
+        int ttl_i = 0;
+        if (ttl != null) {
+            try {
+                ttl_i = Integer.parseInt(ttl);
+            } catch (NumberFormatException e) {
+                ttl_i = messageData.getTimeToLive();
+            }
+        }
+        if (ttl_i <= 0) {
+            ttl_i = messageData.getTimeToLive();
+        }
+        return ttl_i;
+        } else {
+            return RampartConfig.DEFAULT_TIMESTAMP_TTL;
+        }
+    }
+    
+    /**
+     * Obtain a security context token.
+     * @param rmd
+     * @param secConvTok
+     * @return Return the SecurityContextidentifier of the token
+     * @throws TrustException
+     * @throws RampartException
+     */
+    public static String getSecConvToken(RampartMessageData rmd,
+            SecureConversationToken secConvTok) throws TrustException,
+            RampartException {
+        String action = TrustUtil.getActionValue(
+                rmd.getWstVersion(),
+                RahasConstants.RST_ACTION_SCT);
+        
+        // Get sts epr
+        OMElement issuerEpr = secConvTok.getIssuerEpr();
+        String issuerEprAddress = rmd.getMsgContext().getTo().getAddress();
+        if(issuerEpr != null) {
+            issuerEprAddress = RampartUtil.processIssuerAddress(issuerEpr);
+        }
+        
+        //Find SC version
+        int conversationVersion = rmd.getSecConvVersion();
+        
+        OMElement rstTemplate = RampartUtil.createRSTTempalteForSCT(
+                conversationVersion, 
+                rmd.getWstVersion());
+        
+        Policy stsPolicy = null;
+
+        //Try boot strap policy
+        Policy bsPol = secConvTok.getBootstrapPolicy();
+        
+        if(bsPol != null) {
+            log.debug("BootstrapPolicy found");
+            bsPol.addAssertion(rmd.getPolicyData().getRampartConfig());
+            stsPolicy = bsPol;
+        } else {
+            //No bootstrap policy use issuer policy
+            log.debug("No bootstrap policy, using issuer policy");
+            stsPolicy = rmd.getPolicyData().getIssuerPolicy();
+        }
+        
+        String id = getToken(rmd, rstTemplate,
+                issuerEprAddress, action, stsPolicy);
+        
+        log.debug("SecureConversationToken obtained: id=" + id);
+        return id;
+    }
+    
+
+    /**
+     * Obtain an issued token.
+     * @param rmd
+     * @param issuedToken
+     * @return The identifier of the issued token
+     * @throws RampartException
+     */
+    public static String getIssuedToken(RampartMessageData rmd,
+            IssuedToken issuedToken) throws RampartException {
+
+        try {
+            String action = TrustUtil.getActionValue(rmd.getWstVersion(),
+                    RahasConstants.RST_ACTION_ISSUE);
+
+            // Get sts epr
+            String issuerEprAddress = RampartUtil.processIssuerAddress(issuedToken
+                    .getIssuerEpr());
+
+            OMElement rstTemplate = issuedToken.getRstTemplate();
+
+            // Get STS policy
+            Policy stsPolicy = rmd.getPolicyData().getIssuerPolicy();
+
+            String id = getToken(rmd, rstTemplate, issuerEprAddress, action,
+                    stsPolicy);
+
+            log.debug("Issued token obtained: id=" + id);
+            return id;
+        } catch (TrustException e) {
+            throw new RampartException("errorInObtainingToken", e);
+        } 
+    }
+    
+    /**
+     * Request a token.
+     * @param rmd
+     * @param rstTemplate
+     * @param issuerEpr
+     * @param action
+     * @param issuerPolicy
+     * @return Return the identifier of the obtained token
+     * @throws RampartException
+     */
+    public static String getToken(RampartMessageData rmd, OMElement rstTemplate,
+            String issuerEpr, String action, Policy issuerPolicy) throws RampartException {
+
+        try {
+            Axis2Util.useDOOM(false);
+            
+            STSClient client = new STSClient(rmd.getMsgContext()
+                    .getConfigurationContext());
+            // Set request action
+            client.setAction(action);
+            
+            client.setRstTemplate(rstTemplate);
+    
+            // Set crypto information
+            Crypto crypto = RampartUtil.getSignatureCrypto(rmd.getPolicyData().getRampartConfig(), 
+                    rmd.getMsgContext().getAxisService().getClassLoader());
+            CallbackHandler cbh = RampartUtil.getPasswordCB(rmd);
+            client.setCryptoInfo(crypto, cbh);
+    
+            // Get service policy
+            Policy servicePolicy = rmd.getServicePolicy();
+    
+            // Get service epr
+            String servceEprAddress = rmd.getMsgContext()
+                    .getOptions().getTo().getAddress();
+    
+            //Make the request
+            org.apache.rahas.Token rst = 
+                client.requestSecurityToken(servicePolicy, 
+                                            issuerEpr,
+                                            issuerPolicy, 
+                                            servceEprAddress);
+            
+            //Add the token to token storage
+            rst.setState(Token.ISSUED);
+            rmd.getTokenStorage().add(rst);
+            Axis2Util.useDOOM(true);
+            return rst.getId();
+        } catch (Exception e) {
+            throw new RampartException("errorInObtainingToken", e);
+        }
+    }
+
+    public static String getSoapBodyId(SOAPEnvelope env) {
+        return addWsuIdToElement(env.getBody());
+    }
+    
+    public static String addWsuIdToElement(OMElement elem) {
+        String id;
+        OMAttribute idAttr = elem.getAttribute(new QName(WSConstants.WSU_NS, "Id"));
+        if(idAttr != null) {
+            id = idAttr.getAttributeValue();
+        } else {
+            //Add an id
+            OMNamespace ns = elem.getOMFactory().createOMNamespace(
+                    WSConstants.WSU_NS, WSConstants.WSU_PREFIX);
+            id = "Id-" + elem.hashCode();
+            idAttr = elem.getOMFactory().createOMAttribute("Id", ns, id);
+            elem.addAttribute(idAttr);
+        }
+        
+        return id;
+    }
+    
+    public static Element appendChildToSecHeader(RampartMessageData rmd,
+            OMElement elem) {
+        return appendChildToSecHeader(rmd, (Element)elem);
+    }
+    
+    public static Element appendChildToSecHeader(RampartMessageData rmd,
+            Element elem) {
+        Element secHeaderElem = rmd.getSecHeader().getSecurityHeader();
+        Node node = secHeaderElem.getOwnerDocument().importNode(
+                        elem, true);
+        return (Element)secHeaderElem.appendChild(node);
+    }
+
+    public static Element insertSiblingAfter(RampartMessageData rmd, Element child, Element sibling) {
+        if(child == null) {
+            return appendChildToSecHeader(rmd, sibling);
+        } else {
+            if(child.getOwnerDocument().equals(sibling.getOwnerDocument())) {
+                ((OMElement)child).insertSiblingAfter((OMElement)sibling);
+                return sibling;
+            } else {
+                Element newSib = (Element)child.getOwnerDocument().importNode(sibling, true);
+                ((OMElement)child).insertSiblingAfter((OMElement)newSib);
+                return newSib;
+            }
+        }
+    }
+    
+    public static Element insertSiblingBefore(RampartMessageData rmd, Element child, Element sibling) {
+        if(child == null) {
+            return appendChildToSecHeader(rmd, sibling);
+        } else {
+            if(child.getOwnerDocument().equals(sibling.getOwnerDocument())) {
+                ((OMElement)child).insertSiblingBefore((OMElement)sibling);
+                return sibling;
+            } else {
+                Element newSib = (Element)child.getOwnerDocument().importNode(sibling, true);
+                ((OMElement)child).insertSiblingBefore((OMElement)newSib);
+                return newSib;
+            }
+        }
+        
+    }
+    
+    public static Vector getEncryptedParts(RampartMessageData rmd) {
+        RampartPolicyData rpd =  rmd.getPolicyData();
+        Vector parts = rpd.getEncryptedParts();
+        SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+        if(rpd.isEncryptBody()) {
+            parts.add(new WSEncryptionPart(addWsuIdToElement(envelope.getBody()), "Content"));
+        }
+        
+        return parts;
+    }
+    
+    public static Vector getSignedParts(RampartMessageData rmd) {
+        RampartPolicyData rpd =  rmd.getPolicyData();
+        Vector parts = rpd.getSignedParts();
+        SOAPEnvelope envelope = rmd
+                            .getMsgContext().getEnvelope();
+        if(rpd.isEntireHeadersAndBodySignatures()) {
+            Iterator childElems = envelope.getHeader().getChildElements();
+            while (childElems.hasNext()) {
+                OMElement element = (OMElement) childElems.next();
+                if(!element.getQName().equals(new QName(WSConstants.WSSE_NS, WSConstants.WSSE_LN)) &&
+                        !element.getQName().equals(new QName(WSConstants.WSSE11_NS, WSConstants.WSSE_LN))) {
+                    parts.add(new WSEncryptionPart(addWsuIdToElement(element)));
+                }
+            }
+            parts.add(new WSEncryptionPart(addWsuIdToElement(envelope.getBody())));
+            
+        } else if(rpd.isEncryptBody()) {
+            parts.add(new WSEncryptionPart(addWsuIdToElement(envelope.getBody())));
+        }
+        
+        return parts;
+    }
+    
+    public static KeyGenerator getEncryptionKeyGenerator(String symEncrAlgo) throws WSSecurityException {
+        KeyGenerator keyGen;
+        try {
+            /*
+             * Assume AES as default, so initialize it
+             */
+            keyGen = KeyGenerator.getInstance("AES");
+            if (symEncrAlgo.equalsIgnoreCase(WSConstants.TRIPLE_DES)) {
+                keyGen = KeyGenerator.getInstance("DESede");
+            } else if (symEncrAlgo.equalsIgnoreCase(WSConstants.AES_128)) {
+                keyGen.init(128);
+            } else if (symEncrAlgo.equalsIgnoreCase(WSConstants.AES_192)) {
+                keyGen.init(192);
+            } else if (symEncrAlgo.equalsIgnoreCase(WSConstants.AES_256)) {
+                keyGen.init(256);
+            } else {
+                return null;
+            }
+        } catch (NoSuchAlgorithmException e) {
+            throw new WSSecurityException(
+                    WSSecurityException.UNSUPPORTED_ALGORITHM, null, null, e);
+        }
+        return keyGen;
+    }
+    
+    /**
+     * Creates the unique (reproducible) id for to hold the context identifier
+     * of the message exchange.
+     * @return Id to hold the context identifier in the message context
+     */
+    public static String getContextIdentifierKey(MessageContext msgContext) {
+        return msgContext.getAxisService().getName();
+    }
+    
+    
+    /**
+     * Returns the map of security context token identifiers
+     * @return the map of security context token identifiers
+     */
+    public static Hashtable getContextMap(MessageContext msgContext) {
+        //Fist check whether its there
+        Object map = msgContext.getConfigurationContext().getProperty(
+                ConversationConstants.KEY_CONTEXT_MAP);
+        
+        if(map == null) {
+            //If not create a new one
+            map = new Hashtable();
+            //Set the map globally
+            msgContext.getConfigurationContext().setProperty(
+                    ConversationConstants.KEY_CONTEXT_MAP, map);
+        }
+        
+        return (Hashtable)map;
+    }
+    
+    public static boolean isTokenValid(RampartMessageData rmd, String id) throws RampartException {
+        try {
+            org.apache.rahas.Token token = rmd.getTokenStorage().getToken(id);
+            return token!= null && token.getState() == org.apache.rahas.Token.ISSUED;
+        } catch (TrustException e) {
+            throw new RampartException("errorExtractingToken");
+        } 
+    }
+    
+    public static void setEncryptionUser(RampartMessageData rmd, WSSecEncryptedKey encrKeyBuilder) throws RampartException {
+        RampartPolicyData rpd = rmd.getPolicyData();
+        String encrUser = rpd.getRampartConfig().getEncryptionUser();
+        if(encrUser == null || "".equals(encrUser)) {
+            throw new RampartException("missingEncryptionUser");
+        }
+        if(encrUser.equals(WSHandlerConstants.USE_REQ_SIG_CERT)) {
+            Object resultsObj = rmd.getMsgContext().getProperty(WSHandlerConstants.RECV_RESULTS);
+            if(resultsObj != null) {
+                encrKeyBuilder.setUseThisCert(getReqSigCert((Vector)resultsObj));
+            } else {
+                throw new RampartException("noSecurityResults");
+            }
+        } else {
+            encrKeyBuilder.setUserInfo(encrUser);
+        }
+    }
+    
+    private static X509Certificate getReqSigCert(Vector results) {
+        /*
+        * Scan the results for a matching actor. Use results only if the
+        * receiving Actor and the sending Actor match.
+        */
+        for (int i = 0; i < results.size(); i++) {
+            WSHandlerResult rResult =
+                    (WSHandlerResult) results.get(i);
+
+            Vector wsSecEngineResults = rResult.getResults();
+            /*
+            * Scan the results for the first Signature action. Use the
+            * certificate of this Signature to set the certificate for the
+            * encryption action :-).
+            */
+            for (int j = 0; j < wsSecEngineResults.size(); j++) {
+                WSSecurityEngineResult wser =
+                        (WSSecurityEngineResult) wsSecEngineResults.get(j);
+                if (wser.getAction() == WSConstants.SIGN) {
+                    return wser.getCertificate();
+                }
+            }
+        }
+        
+        return null;
+    }
+    
+    public static String getRequestEncryptedKeyId(Vector results) {
+        
+        for (int i = 0; i < results.size(); i++) {
+            WSHandlerResult rResult =
+                    (WSHandlerResult) results.get(i);
+
+            Vector wsSecEngineResults = rResult.getResults();
+            /*
+            * Scan the results for the first Signature action. Use the
+            * certificate of this Signature to set the certificate for the
+            * encryption action :-).
+            */
+            for (int j = 0; j < wsSecEngineResults.size(); j++) {
+                WSSecurityEngineResult wser =
+                        (WSSecurityEngineResult) wsSecEngineResults.get(j);
+                if (wser.getAction() == WSConstants.ENCR && 
+                        wser.getEncryptedKeyId() != null) {
+                    return wser.getEncryptedKeyId();
+                }
+            }
+        }
+        
+        return null;
+    }
+    
+    public static byte[] getRequestEncryptedKeyValue(Vector results) {
+        
+        for (int i = 0; i < results.size(); i++) {
+            WSHandlerResult rResult =
+                    (WSHandlerResult) results.get(i);
+
+            Vector wsSecEngineResults = rResult.getResults();
+            /*
+            * Scan the results for the first Signature action. Use the
+            * certificate of this Signature to set the certificate for the
+            * encryption action :-).
+            */
+            for (int j = 0; j < wsSecEngineResults.size(); j++) {
+                WSSecurityEngineResult wser =
+                        (WSSecurityEngineResult) wsSecEngineResults.get(j);
+                if (wser.getAction() == WSConstants.ENCR && 
+                        wser.getDecryptedKey() != null) {
+                    return wser.getDecryptedKey();
+                }
+            }
+        }
+        
+        return null;
+    }
+}
diff --git a/rampart_1_1/modules/security/test-resources/PWCallback.java b/rampart_1_1/modules/security/test-resources/PWCallback.java
new file mode 100644
index 0000000..df9d4de
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/PWCallback.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2004,2005 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.axis2.security;
+
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import java.io.IOException;
+
+
+
+/**
+
+ * Class PWCallback
+
+ */
+
+public class PWCallback implements CallbackHandler {
+
+
+
+    /** Field key */
+
+    private static final byte[] key = {
+
+        (byte) 0x31, (byte) 0xfd, (byte) 0xcb, (byte) 0xda, (byte) 0xfb,
+
+        (byte) 0xcd, (byte) 0x6b, (byte) 0xa8, (byte) 0xe6, (byte) 0x19,
+
+        (byte) 0xa7, (byte) 0xbf, (byte) 0x51, (byte) 0xf7, (byte) 0xc7,
+
+        (byte) 0x3e, (byte) 0x80, (byte) 0xae, (byte) 0x98, (byte) 0x51,
+
+        (byte) 0xc8, (byte) 0x51, (byte) 0x34, (byte) 0x04,
+
+    };
+
+
+
+    /*
+
+     * (non-Javadoc)
+
+     * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
+
+     */
+
+
+
+    /**
+
+     * Method handle
+
+     * 
+
+     * @param callbacks 
+
+     * @throws java.io.IOException                  
+
+     * @throws javax.security.auth.callback.UnsupportedCallbackException 
+
+     */
+
+    public void handle(Callback[] callbacks)
+
+            throws IOException, UnsupportedCallbackException {
+
+
+
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+
+
+
+                /*
+
+                 * This usage type is used only in case we received a
+
+                 * username token with a password of type PasswordText or
+
+                 * an unknown password type.
+
+                 * 
+
+                 * This case the WSPasswordCallback object contains the
+
+                 * identifier (aka username), the password we received, and
+
+                 * the password type string to identify the type.
+
+                 * 
+
+                 * Here we perform only a very simple check.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+
+                	if(pc.getIdentifer().equals("Ron") && pc.getPassword().equals("noR")) {
+
+                        return;
+
+                	}
+
+                    if (pc.getPassword().equals("sirhC")) {
+
+                        return;
+
+                    }               	
+
+                    throw new UnsupportedCallbackException(callbacks[i],
+
+                    "check failed");
+
+                }
+
+                /*
+
+                 * here call a function/method to lookup the password for
+
+                 * the given identifier (e.g. a user name or keystore alias)
+
+                 * e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier))
+
+                 * for Testing we supply a fixed name here.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.KEY_NAME) {
+
+                    pc.setKey(key);
+
+                } else if(pc.getIdentifer().equals("alice")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("bob")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("Ron")) {
+
+                    pc.setPassword("noR");
+
+                } else {
+
+                    pc.setPassword("sirhC");
+
+                }
+
+            } else {
+
+                throw new UnsupportedCallbackException(callbacks[i],
+
+                        "Unrecognized Callback");
+
+            }
+
+        }
+
+    }
+
+}
+
+
diff --git a/rampart_1_1/modules/security/test-resources/axis2.xml b/rampart_1_1/modules/security/test-resources/axis2.xml
new file mode 100644
index 0000000..7d978b4
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/axis2.xml
@@ -0,0 +1,97 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+
+    <!-- This is only till we get the service specific parameters fixed in service.xml -->
+    <parameter name="InAction" locked="false">UsernameToken</parameter>
+    <parameter name="passwordCallbackClass" locked="false">
+        org.apache.axis2.security.PWCallback</parameter>
+
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+    <module ref="security"/>
+
+    <phaseOrder type="InFlow">
+        <!--  System pre defined phases       -->
+         <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="OperationInPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+                <order phase="Dispatch"/>
+            </handler>
+            <handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher">
+                <order phase="PostDispatch"/>
+            </handler>
+        </phase>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyBindings.xml b/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyBindings.xml
new file mode 100644
index 0000000..abcecbd
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyBindings.xml
@@ -0,0 +1,50 @@
+
+<!-- Example Endpoint Policy --> 
+<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+            xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
+            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
+<sp:AsymmetricBinding>
+ <wsp:Policy>
+ <sp:RecipientToken>
+ <wsp:Policy>
+ <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always" />
+ </wsp:Policy> </sp:RecipientToken>
+ <sp:InitiatorToken>
+ <wsp:Policy>
+ <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always" />
+ </wsp:Policy>
+ </sp:InitiatorToken>
+ <sp:AlgorithmSuite>
+ <wsp:Policy>
+ <sp:Basic256 />
+ </wsp:Policy>
+ </sp:AlgorithmSuite>
+ <sp:Layout>
+ <wsp:Policy>
+ <sp:Strict />
+ </wsp:Policy>
+ </sp:Layout>
+ <sp:IncludeTimestamp />
+ <sp:EncryptBeforeSigning />
+ <sp:EncryptSignature />
+ <sp:ProtectTokens />
+ <sp:SignedSupportingTokens>
+ <wsp:Policy>
+ <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once" />
+ </wsp:Policy>
+ </sp:SignedSupportingTokens>
+ <sp:SignedEndorsingSupportingTokens>
+ <wsp:Policy>
+ <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once" />
+ </wsp:Policy>
+ </sp:SignedEndorsingSupportingTokens>
+ </wsp:Policy> 
+ </sp:AsymmetricBinding>
+ <sp:Wss11> 
+ <wsp:Policy>
+ <sp:RequireSignatureConfirmation />
+ </wsp:Policy>
+ </sp:Wss11>
+ </wsp:Policy>
+
+ 
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyBindingsSymm.xml b/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyBindingsSymm.xml
new file mode 100644
index 0000000..9577ee3
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyBindingsSymm.xml
@@ -0,0 +1,43 @@
+<!-- Example Endpoint Policy -->

+<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"

+            xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"

+            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

+<sp:SymmetricBinding>

+<wsp:Policy>

+<sp:ProtectionToken>
+<wsp:Policy>

+<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always"/>
+</wsp:Policy>

+</sp:ProtectionToken>

+<sp:AlgorithmSuite>

+<wsp:Policy>

+<sp:Basic256 />

+</wsp:Policy>

+</sp:AlgorithmSuite>

+<sp:Layout>

+<wsp:Policy>

+<sp:Strict />

+</wsp:Policy>

+</sp:Layout>

+<sp:IncludeTimestamp />

+<sp:EncryptBeforeSigning />

+<sp:EncryptSignature />

+<sp:ProtectTokens />

+<sp:SignedSupportingTokens>

+<wsp:Policy>

+<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once" />

+</wsp:Policy>

+</sp:SignedSupportingTokens>

+<!--<sp:SignedEndorsingSupportingTokens>

+<wsp:Policy>

+<sp:X509V3Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/IncludeToken/Once" />

+</wsp:Policy>

+</sp:SignedEndorsingSupportingTokens> -->

+</wsp:Policy>

+</sp:SymmetricBinding>

+<sp:Wss11>

+<wsp:Policy>

+<sp:RequireSignatureConfirmation />

+</wsp:Policy>

+</sp:Wss11>

+</wsp:Policy>

diff --git a/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyMsg.xml b/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyMsg.xml
new file mode 100644
index 0000000..b2be5fd
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/SecurityPolicyMsg.xml
@@ -0,0 +1,19 @@
+<!-- Example Endpoint Policy --> 
+<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+            xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
+            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
+
+ <!-- Example Message Policy -->
+
+ <sp:SignedParts>
+   <sp:Header Name="Header1" Namespace="uri:namespace_1" />
+   <sp:Header Name="Header2" Namespace="uri:namespace_2" /> 
+   <sp:Body/>
+ </sp:SignedParts>
+ <sp:EncryptedParts>
+   <sp:Header Name="Header2" Namespace="uri:namespace_2" />
+   <sp:Body/>
+ </sp:EncryptedParts>
+
+ </wsp:Policy>
+ 
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-1.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-1.xml
new file mode 100644
index 0000000..618bdc9
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-1.xml
@@ -0,0 +1,75 @@
+<wsp:Policy  wsu:Id="6" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+	
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-2-sig-dk.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-2-sig-dk.xml
new file mode 100644
index 0000000..77c8ba0
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-2-sig-dk.xml
@@ -0,0 +1,76 @@
+<wsp:Policy  wsu:Id="6" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+									<sp:RequireDerivedKeys />
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+	
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-3-dk.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-3-dk.xml
new file mode 100644
index 0000000..f0afd7e
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-3-dk.xml
@@ -0,0 +1,77 @@
+<wsp:Policy  wsu:Id="6" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+									<sp:RequireDerivedKeys />
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+									<sp:RequireDerivedKeys />
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+	
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-4-dk-ebs.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-4-dk-ebs.xml
new file mode 100644
index 0000000..397ffe1
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-4-dk-ebs.xml
@@ -0,0 +1,85 @@
+<wsp:Policy  wsu:Id="6" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+									<sp:RequireDerivedKeys />
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+									<sp:RequireDerivedKeys />
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:EncryptBeforeSigning />
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+	
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-5-ebs.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-5-ebs.xml
new file mode 100644
index 0000000..3ce1403
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-5-ebs.xml
@@ -0,0 +1,81 @@
+<wsp:Policy  wsu:Id="6" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:EncryptBeforeSigning />
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:EncryptedParts>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>alice</ramp:user>
+				<ramp:encryptionUser>bob</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+				<ramp:encryptionCypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+					</ramp:crypto>
+				</ramp:encryptionCypto>
+			</ramp:RampartConfig>
+	
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-6-3des-r15.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-6-3des-r15.xml
new file mode 100644
index 0000000..fa88d3c
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-6-3des-r15.xml
@@ -0,0 +1,74 @@
+<wsp:Policy wsu:Id="SigEncrTripleDesRSA15" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+	<wsp:All>
+		<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:InitiatorToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+							<wsp:Policy>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:InitiatorToken>
+				<sp:RecipientToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+							<wsp:Policy>
+								<sp:WssX509V3Token10/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:RecipientToken>
+				<sp:AlgorithmSuite>
+					<wsp:Policy>
+						<sp:TripleDesRsa15/>
+					</wsp:Policy>
+				</sp:AlgorithmSuite>
+				<sp:Layout>
+					<wsp:Policy>
+						<sp:Strict/>
+					</wsp:Policy>
+				</sp:Layout>
+				<sp:IncludeTimestamp/>
+				<sp:OnlySignEntireHeadersAndBody/>
+			</wsp:Policy>
+		</sp:AsymmetricBinding>
+		<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:MustSupportRefKeyIdentifier/>
+				<sp:MustSupportRefIssuerSerial/>
+			</wsp:Policy>
+		</sp:Wss10>
+		<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:SignedParts>
+		<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:EncryptedParts>
+
+		<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+			<ramp:user>alice</ramp:user>
+			<ramp:encryptionUser>bob</ramp:encryptionUser>
+			<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+			
+			<ramp:signatureCrypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:signatureCrypto>
+			<ramp:encryptionCypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:encryptionCypto>
+		</ramp:RampartConfig>
+
+	</wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-7-3des-r15-DK.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-7-3des-r15-DK.xml
new file mode 100644
index 0000000..9108957
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-asymm-binding-7-3des-r15-DK.xml
@@ -0,0 +1,76 @@
+<wsp:Policy wsu:Id="SigEncrTripleDesRSA15" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+	<wsp:All>
+		<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:InitiatorToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+							<wsp:Policy>
+								<sp:WssX509V3Token10/>
+								<sp:RequireDerivedKeys/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:InitiatorToken>
+				<sp:RecipientToken>
+					<wsp:Policy>
+						<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+							<wsp:Policy>
+								<sp:WssX509V3Token10/>
+								<sp:RequireDerivedKeys/>
+							</wsp:Policy>
+						</sp:X509Token>
+					</wsp:Policy>
+				</sp:RecipientToken>
+				<sp:AlgorithmSuite>
+					<wsp:Policy>
+						<sp:TripleDesRsa15/>
+					</wsp:Policy>
+				</sp:AlgorithmSuite>
+				<sp:Layout>
+					<wsp:Policy>
+						<sp:Strict/>
+					</wsp:Policy>
+				</sp:Layout>
+				<sp:IncludeTimestamp/>
+				<sp:OnlySignEntireHeadersAndBody/>
+			</wsp:Policy>
+		</sp:AsymmetricBinding>
+		<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<wsp:Policy>
+				<sp:MustSupportRefKeyIdentifier/>
+				<sp:MustSupportRefIssuerSerial/>
+			</wsp:Policy>
+		</sp:Wss10>
+		<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:SignedParts>
+		<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+			<sp:Body/>
+		</sp:EncryptedParts>
+
+		<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+			<ramp:user>alice</ramp:user>
+			<ramp:encryptionUser>bob</ramp:encryptionUser>
+			<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+			
+			<ramp:signatureCrypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:signatureCrypto>
+			<ramp:encryptionCypto>
+				<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+					<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+				</ramp:crypto>
+			</ramp:encryptionCypto>
+		</ramp:RampartConfig>
+
+	</wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-policy-1.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-policy-1.xml
new file mode 100644
index 0000000..b3a9923
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-policy-1.xml
@@ -0,0 +1,15 @@
+<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+		<ramp:user>alice</ramp:user>
+		<ramp:encryptionUser>bob</ramp:encryptionUser>
+		<ramp:passwordCallbackClass>org.apache.axis2.security.PWCallback</ramp:passwordCallbackClass>
+		
+		<ramp:signatureCrypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="keystoreType">JKS</ramp:property>
+				<ramp:property name="keystoreFile">/path/to/file.jks</ramp:property>
+				<ramp:property name="keystorePassword">password</ramp:property>
+			</ramp:crypto>
+		</ramp:signatureCrypto>
+	</ramp:RampartConfig>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding-dk.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding-dk.xml
new file mode 100644
index 0000000..14cb817
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding-dk.xml
@@ -0,0 +1,68 @@
+<wsp:Policy wsu:Id="5" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+  <wsp:All>
+	<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:TransportToken>
+		  <wsp:Policy>
+			<sp:HttpsToken RequireClientCertificate="false"/>
+		  </wsp:Policy>
+		</sp:TransportToken>
+		<sp:AlgorithmSuite>
+		  <wsp:Policy>
+			<sp:Basic256/>
+		  </wsp:Policy>
+		</sp:AlgorithmSuite>
+		<sp:Layout>
+		  <wsp:Policy>
+			<sp:Lax/>
+		  </wsp:Policy>
+		</sp:Layout>
+		<sp:IncludeTimestamp/>
+	  </wsp:Policy>
+	</sp:TransportBinding>
+	<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+		<wsp:Policy>
+			<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
+	  </wsp:Policy>
+	</sp:SignedSupportingTokens>
+	<sp:SignedEndorsingSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+			<wsp:Policy>
+				<sp:RequireDerivedKeys />
+			</wsp:Policy>
+		</sp:X509Token>
+	  </wsp:Policy>
+	</sp:SignedEndorsingSupportingTokens>
+	<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportRefKeyIdentifier/>
+		<sp:MustSupportRefIssuerSerial/>
+	  </wsp:Policy>
+	</sp:Wss10>
+	<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportIssuedTokens/>
+		<sp:RequireClientEntropy/>
+		<sp:RequireServerEntropy/>
+	  </wsp:Policy>
+	</sp:Trust10>
+	
+	<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+		<ramp:user>alice</ramp:user>
+		<ramp:encryptionUser>bob</ramp:encryptionUser>
+		<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+		
+		<ramp:signatureCrypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:signatureCrypto>
+	</ramp:RampartConfig>
+	
+  </wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding-no-bst.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding-no-bst.xml
new file mode 100644
index 0000000..cb7e227
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding-no-bst.xml
@@ -0,0 +1,64 @@
+<wsp:Policy wsu:Id="5" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+  <wsp:All>
+	<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:TransportToken>
+		  <wsp:Policy>
+			<sp:HttpsToken RequireClientCertificate="false"/>
+		  </wsp:Policy>
+		</sp:TransportToken>
+		<sp:AlgorithmSuite>
+		  <wsp:Policy>
+			<sp:Basic256/>
+		  </wsp:Policy>
+		</sp:AlgorithmSuite>
+		<sp:Layout>
+		  <wsp:Policy>
+			<sp:Lax/>
+		  </wsp:Policy>
+		</sp:Layout>
+		<sp:IncludeTimestamp/>
+	  </wsp:Policy>
+	</sp:TransportBinding>
+	<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+		<wsp:Policy>
+			<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
+	  </wsp:Policy>
+	</sp:SignedSupportingTokens>
+	<sp:SignedEndorsingSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never" />
+	  </wsp:Policy>
+	</sp:SignedEndorsingSupportingTokens>
+	<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportRefKeyIdentifier/>
+		<sp:MustSupportRefIssuerSerial/>
+	  </wsp:Policy>
+	</sp:Wss10>
+	<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportIssuedTokens/>
+		<sp:RequireClientEntropy/>
+		<sp:RequireServerEntropy/>
+	  </wsp:Policy>
+	</sp:Trust10>
+	
+	<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+		<ramp:user>alice</ramp:user>
+		<ramp:encryptionUser>bob</ramp:encryptionUser>
+		<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+		
+		<ramp:signatureCrypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:signatureCrypto>
+	</ramp:RampartConfig>
+	
+  </wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding.xml b/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding.xml
new file mode 100644
index 0000000..656fa5a
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/rampart-transport-binding.xml
@@ -0,0 +1,64 @@
+<wsp:Policy wsu:Id="5" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+<wsp:ExactlyOne>
+  <wsp:All>
+	<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:TransportToken>
+		  <wsp:Policy>
+			<sp:HttpsToken RequireClientCertificate="false"/>
+		  </wsp:Policy>
+		</sp:TransportToken>
+		<sp:AlgorithmSuite>
+		  <wsp:Policy>
+			<sp:Basic256/>
+		  </wsp:Policy>
+		</sp:AlgorithmSuite>
+		<sp:Layout>
+		  <wsp:Policy>
+			<sp:Lax/>
+		  </wsp:Policy>
+		</sp:Layout>
+		<sp:IncludeTimestamp/>
+	  </wsp:Policy>
+	</sp:TransportBinding>
+	<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+		<wsp:Policy>
+			<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
+	  </wsp:Policy>
+	</sp:SignedSupportingTokens>
+	<sp:SignedEndorsingSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
+	  </wsp:Policy>
+	</sp:SignedEndorsingSupportingTokens>
+	<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportRefKeyIdentifier/>
+		<sp:MustSupportRefIssuerSerial/>
+	  </wsp:Policy>
+	</sp:Wss10>
+	<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	  <wsp:Policy>
+		<sp:MustSupportIssuedTokens/>
+		<sp:RequireClientEntropy/>
+		<sp:RequireServerEntropy/>
+	  </wsp:Policy>
+	</sp:Trust10>
+	
+	<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+		<ramp:user>alice</ramp:user>
+		<ramp:encryptionUser>bob</ramp:encryptionUser>
+		<ramp:passwordCallbackClass>org.apache.rampart.TestCBHandler</ramp:passwordCallbackClass>
+		
+		<ramp:signatureCrypto>
+			<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.file">interop/interop2.jks</ramp:property>
+				<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
+			</ramp:crypto>
+		</ramp:signatureCrypto>
+	</ramp:RampartConfig>
+	
+  </wsp:All>
+</wsp:ExactlyOne>
+</wsp:Policy>
diff --git a/rampart_1_1/modules/security/test-resources/policy/soapmessage.xml b/rampart_1_1/modules/security/test-resources/policy/soapmessage.xml
new file mode 100644
index 0000000..c84e287
--- /dev/null
+++ b/rampart_1_1/modules/security/test-resources/policy/soapmessage.xml
@@ -0,0 +1,57 @@
+<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/08/addressing"
+                  xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam">
+        <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 axis2:AttrExt="123456789" soapenv:mustUnderstand="0" >
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+            </wsa:ReferenceParameters>
+            <wsa:ReferenceProperties>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceProperties>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:From>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:ReplyTo axis2:AttrExt="123456789">
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+            </wsa:ReferenceParameters>
+            <wsa:ReferenceProperties>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceProperties>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:ReplyTo>
+        
+        <wsa:FaultTo axis2:AttrExt="123456789">
+            <wsa:Address>http://example.com/fabrikam/fault</wsa:Address>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+            </wsa:ReferenceParameters>
+            <wsa:ReferenceProperties>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceProperties>
+            <axis2:EPRExt axis2:AttrExt="123456789">123456789</axis2:EPRExt>
+        </wsa:FaultTo>
+        <wsa:RelatesTo>http://some.previous.message</wsa:RelatesTo>
+        <wsa:RelatesTo RelationshipType="axis2:some.custom.relationship">http://identifier.of.other.message/</wsa:RelatesTo>
+        
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/rampart_1_1/modules/security/test/org/apache/rampart/AsymmetricBindingBuilderTest.java b/rampart_1_1/modules/security/test/org/apache/rampart/AsymmetricBindingBuilderTest.java
new file mode 100644
index 0000000..ff949a9
--- /dev/null
+++ b/rampart_1_1/modules/security/test/org/apache/rampart/AsymmetricBindingBuilderTest.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.neethi.Policy;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.conversation.ConversationConstants;
+
+import javax.xml.namespace.QName;
+
+import java.util.ArrayList;
+
+public class AsymmetricBindingBuilderTest extends MessageBuilderTestBase {
+//    
+//    public void testAsymmBinding() {
+//        try {
+//            MessageContext ctx = getMsgCtx();
+//            
+//            String policyXml = "test-resources/policy/rampart-asymm-binding-1.xml";
+//            Policy policy = this.loadPolicy(policyXml);
+//            
+//            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+//            
+//            MessageBuilder builder = new MessageBuilder();
+//            builder.build(ctx);
+//
+//            ArrayList list = new ArrayList();
+//            
+//            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+//            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+//            
+//            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            fail(e.getMessage());
+//        }
+//    }
+//    
+//    public void testAsymmBindingServerSide() {
+//        try {
+//            MessageContext ctx = getMsgCtx();
+//            
+//            ctx.setServerSide(true);
+//            String policyXml = "test-resources/policy/rampart-asymm-binding-1.xml";
+//            Policy policy = this.loadPolicy(policyXml);
+//            
+//            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+//            
+//            MessageBuilder builder = new MessageBuilder();
+//            builder.build(ctx);
+//            
+//            ArrayList list = new ArrayList();
+//            
+//            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+//            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+//            
+//            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            fail(e.getMessage());
+//        }
+//    }
+//    
+//    public void testAsymmBindingWithSigDK() {
+//        try {
+//            MessageContext ctx = getMsgCtx();
+//            
+//            String policyXml = "test-resources/policy/rampart-asymm-binding-2-sig-dk.xml";
+//            Policy policy = this.loadPolicy(policyXml);
+//            
+//            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+//            
+//            MessageBuilder builder = new MessageBuilder();
+//            builder.build(ctx);
+//            
+//            ArrayList list = new ArrayList();
+//            
+//            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+//            list.add(new QName(WSConstants.WSSE_NS, WSConstants.BINARY_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+//            list.add(new QName(ConversationConstants.WSC_NS_05_02, ConversationConstants.DERIVED_KEY_TOKEN_LN));
+//            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+//            
+//            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+//            
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            fail(e.getMessage());
+//        }
+//    }
+//    
+//    public void testAsymmBindingWithDK() {
+//        try {
+//            MessageContext ctx = getMsgCtx();
+//            
+//            String policyXml = "test-resources/policy/rampart-asymm-binding-3-dk.xml";
+//            Policy policy = this.loadPolicy(policyXml);
+//            
+//            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+//            
+//            MessageBuilder builder = new MessageBuilder();
+//            builder.build(ctx);
+//            
+//            ArrayList list = new ArrayList();
+//            
+//            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+//            list.add(new QName(WSConstants.WSSE_NS, WSConstants.BINARY_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+//            list.add(new QName(ConversationConstants.WSC_NS_05_02, ConversationConstants.DERIVED_KEY_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.REF_LIST_LN));
+//            list.add(new QName(ConversationConstants.WSC_NS_05_02, ConversationConstants.DERIVED_KEY_TOKEN_LN));
+//            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+//            
+//            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+//            
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            fail(e.getMessage());
+//        }
+//    }
+//    
+//    public void testAsymmBindingWithDKEncrBeforeSig() {
+//        try {
+//            MessageContext ctx = getMsgCtx();
+//            
+//            String policyXml = "test-resources/policy/rampart-asymm-binding-4-dk-ebs.xml";
+//            Policy policy = this.loadPolicy(policyXml);
+//            
+//            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+//            
+//            MessageBuilder builder = new MessageBuilder();
+//            builder.build(ctx);
+//            
+//            ArrayList list = new ArrayList();
+//            
+//            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+//            list.add(new QName(ConversationConstants.WSC_NS_05_02, ConversationConstants.DERIVED_KEY_TOKEN_LN));
+//            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+//            list.add(new QName(ConversationConstants.WSC_NS_05_02, ConversationConstants.DERIVED_KEY_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.REF_LIST_LN));
+//             
+//            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+//            
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            fail(e.getMessage());
+//        }
+//    }
+//    
+//    
+//    public void testAsymmBindingEncrBeforeSig() {
+//        try {
+//            MessageContext ctx = getMsgCtx();
+//            
+//            String policyXml = "test-resources/policy/rampart-asymm-binding-5-ebs.xml";
+//            Policy policy = this.loadPolicy(policyXml);
+//            
+//            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+//            
+//            MessageBuilder builder = new MessageBuilder();
+//            builder.build(ctx);
+//            
+//            ArrayList list = new ArrayList();
+//            
+//            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+//            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.REF_LIST_LN));
+//             
+//            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            fail(e.getMessage());
+//        }
+//    }
+//    
+    public void testAsymmBindingTripleDesRSA15() {
+        try {
+            MessageContext ctx = getMsgCtx();
+            
+            String policyXml = "test-resources/policy/rampart-asymm-binding-6-3des-r15.xml";
+            Policy policy = this.loadPolicy(policyXml);
+            
+            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+            
+            MessageBuilder builder = new MessageBuilder();
+            builder.build(ctx);
+            System.out.println(ctx.getEnvelope());
+            ArrayList list = new ArrayList();
+            
+            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+            list.add(new QName(WSConstants.WSSE_NS, WSConstants.BINARY_TOKEN_LN));
+            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+            
+            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+
+    public void testAsymmBindingTripleDesRSA15DK() {
+        try {
+            MessageContext ctx = getMsgCtx();
+            
+            String policyXml = "test-resources/policy/rampart-asymm-binding-7-3des-r15-DK.xml";
+            Policy policy = this.loadPolicy(policyXml);
+            
+            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+            
+            MessageBuilder builder = new MessageBuilder();
+            builder.build(ctx);
+
+            System.out.println(ctx.getEnvelope());
+            
+//            ArrayList list = new ArrayList();
+//            
+//            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+//            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+//            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+//            
+//            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+    
+}
diff --git a/rampart_1_1/modules/security/test/org/apache/rampart/MessageBuilderTestBase.java b/rampart_1_1/modules/security/test/org/apache/rampart/MessageBuilderTestBase.java
new file mode 100644
index 0000000..4aa781e
--- /dev/null
+++ b/rampart_1_1/modules/security/test/org/apache/rampart/MessageBuilderTestBase.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.ws.security.WSConstants;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import java.io.FileInputStream;
+import java.util.Iterator;
+
+import junit.framework.TestCase;
+
+public class MessageBuilderTestBase extends TestCase {
+
+    public MessageBuilderTestBase() {
+        super();
+    }
+
+    public MessageBuilderTestBase(String arg0) {
+        super(arg0);
+    }
+
+    /**
+     * @throws XMLStreamException
+     * @throws FactoryConfigurationError
+     * @throws AxisFault
+     */
+    protected MessageContext getMsgCtx() throws Exception {
+        MessageContext ctx = new MessageContext();
+        
+        ctx.setConfigurationContext(new ConfigurationContext(new AxisConfiguration()));
+        AxisService axisService = new AxisService("TestService");
+        ServiceContext serviceContext = new ServiceContext(axisService, 
+                new ServiceGroupContext(null, null));
+        ctx.setServiceContext(serviceContext);
+        ctx.setAxisService(axisService);
+        ctx.setAxisOperation(new OutInAxisOperation(new QName("http://rampart.org", "test")));
+        Options options = new Options();
+        options.setAction("urn:testOperation");
+        ctx.setOptions(options);
+
+        XMLStreamReader reader =
+                XMLInputFactory.newInstance().
+                        createXMLStreamReader(new FileInputStream("test-resources/policy/soapmessage.xml"));
+        ctx.setEnvelope(new StAXSOAPModelBuilder(reader, null).getSOAPEnvelope());
+        return ctx;
+    }
+
+    protected Policy loadPolicy(String xmlPath) throws Exception {
+        StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
+        return PolicyEngine.getPolicy(builder.getDocumentElement());
+    }
+
+    protected void verifySecHeader(Iterator qnameList, SOAPEnvelope env) {
+        Iterator secHeaderChildren =
+                env.getHeader().
+                        getFirstChildWithName(new QName(WSConstants.WSSE_NS,
+                                                        WSConstants.WSSE_LN)).getChildElements();
+
+        while (secHeaderChildren.hasNext()) {
+            OMElement element = (OMElement) secHeaderChildren.next();
+            if (qnameList.hasNext()) {
+                if (!element.getQName().equals(qnameList.next())) {
+                    fail("Incorrect Element" + element);
+                }
+            } else {
+                fail("Extra child in the security header: " + element.toString());
+            }
+        }
+
+        if (qnameList.hasNext()) {
+            fail("Incorrect number of children in the security header: " +
+                 "next expected element" + qnameList.next().toString());
+        }
+    }
+
+}
diff --git a/rampart_1_1/modules/security/test/org/apache/rampart/TestCBHandler.java b/rampart_1_1/modules/security/test/org/apache/rampart/TestCBHandler.java
new file mode 100644
index 0000000..ef43f08
--- /dev/null
+++ b/rampart_1_1/modules/security/test/org/apache/rampart/TestCBHandler.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+
+public class TestCBHandler implements CallbackHandler {
+
+    /** Field key */
+
+    private static final byte[] key = {
+
+        (byte) 0x31, (byte) 0xfd, (byte) 0xcb, (byte) 0xda, (byte) 0xfb,
+
+        (byte) 0xcd, (byte) 0x6b, (byte) 0xa8, (byte) 0xe6, (byte) 0x19,
+
+        (byte) 0xa7, (byte) 0xbf, (byte) 0x51, (byte) 0xf7, (byte) 0xc7,
+
+        (byte) 0x3e, (byte) 0x80, (byte) 0xae, (byte) 0x98, (byte) 0x51,
+
+        (byte) 0xc8, (byte) 0x51, (byte) 0x34, (byte) 0x04,
+
+    };
+
+
+
+    /*
+
+     * (non-Javadoc)
+
+     * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
+
+     */
+
+
+
+    /**
+
+     * Method handle
+
+     * 
+
+     * @param callbacks 
+
+     * @throws java.io.IOException                  
+
+     * @throws javax.security.auth.callback.UnsupportedCallbackException 
+
+     */
+
+    public void handle(Callback[] callbacks)
+
+            throws IOException, UnsupportedCallbackException {
+
+
+
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+
+
+
+                /*
+
+                 * This usage type is used only in case we received a
+
+                 * username token with a password of type PasswordText or
+
+                 * an unknown password type.
+
+                 * 
+
+                 * This case the WSPasswordCallback object contains the
+
+                 * identifier (aka username), the password we received, and
+
+                 * the password type string to identify the type.
+
+                 * 
+
+                 * Here we perform only a very simple check.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+
+                    if(pc.getIdentifer().equals("Ron") && pc.getPassword().equals("noR")) {
+
+                        return;
+
+                    }
+
+                    if (pc.getPassword().equals("sirhC")) {
+
+                        return;
+
+                    }                   
+
+                    throw new UnsupportedCallbackException(callbacks[i],
+
+                    "check failed");
+
+                }
+
+                /*
+
+                 * here call a function/method to lookup the password for
+
+                 * the given identifier (e.g. a user name or keystore alias)
+
+                 * e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier))
+
+                 * for Testing we supply a fixed name here.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.KEY_NAME) {
+
+                    pc.setKey(key);
+
+                } else if(pc.getIdentifer().equals("alice")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("bob")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("Ron")) {
+
+                    pc.setPassword("noR");
+
+                } else {
+
+                    pc.setPassword("sirhC");
+
+                }
+
+            } else {
+
+                throw new UnsupportedCallbackException(callbacks[i],
+
+                        "Unrecognized Callback");
+
+            }
+
+        }
+
+    }
+
+}
diff --git a/rampart_1_1/modules/security/test/org/apache/rampart/TransportBindingBuilderTest.java b/rampart_1_1/modules/security/test/org/apache/rampart/TransportBindingBuilderTest.java
new file mode 100644
index 0000000..34d8c7d
--- /dev/null
+++ b/rampart_1_1/modules/security/test/org/apache/rampart/TransportBindingBuilderTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2004,2005 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.rampart;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.neethi.Policy;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.conversation.ConversationConstants;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.List;
+
+public class TransportBindingBuilderTest extends MessageBuilderTestBase {
+
+    public void testTransportBinding() {
+        try {
+            MessageContext ctx = getMsgCtx();
+
+            String policyXml = "test-resources/policy/rampart-transport-binding.xml";
+            Policy policy = this.loadPolicy(policyXml);
+
+            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+
+            MessageBuilder builder = new MessageBuilder();
+            builder.build(ctx);
+
+            List list = new ArrayList();
+            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+            list.add(new QName(WSConstants.WSSE_NS, WSConstants.USERNAME_TOKEN_LN));
+            list.add(new QName(WSConstants.WSSE_NS, WSConstants.BINARY_TOKEN_LN));
+            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+
+    public void testTransportBindingNoBST() {
+        try {
+            MessageContext ctx = getMsgCtx();
+
+            String policyXml = "test-resources/policy/rampart-transport-binding-no-bst.xml";
+            Policy policy = this.loadPolicy(policyXml);
+
+            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+
+            MessageBuilder builder = new MessageBuilder();
+            builder.build(ctx);
+
+            List list = new ArrayList();
+            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+            list.add(new QName(WSConstants.WSSE_NS, WSConstants.USERNAME_TOKEN_LN));
+            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+
+    public void testTransportBindingWithDK() {
+        try {
+            MessageContext ctx = getMsgCtx();
+
+            String policyXml = "test-resources/policy/rampart-transport-binding-dk.xml";
+            Policy policy = this.loadPolicy(policyXml);
+
+            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+
+            MessageBuilder builder = new MessageBuilder();
+            builder.build(ctx);
+
+            List list = new ArrayList();
+            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+            list.add(new QName(WSConstants.WSSE_NS, WSConstants.USERNAME_TOKEN_LN));
+            list.add(new QName(WSConstants.ENC_NS, WSConstants.ENC_KEY_LN));
+            list.add(new QName(ConversationConstants.WSC_NS_05_02,
+                               ConversationConstants.DERIVED_KEY_TOKEN_LN));
+            list.add(new QName(WSConstants.SIG_NS, WSConstants.SIG_LN));
+            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+
+    public void testTransportBindingWithDKServerSide() {
+        try {
+            MessageContext ctx = getMsgCtx();
+            ctx.setServerSide(true);
+
+            String policyXml = "test-resources/policy/rampart-transport-binding-dk.xml";
+            Policy policy = this.loadPolicy(policyXml);
+
+            ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+
+            MessageBuilder builder = new MessageBuilder();
+            builder.build(ctx);
+
+            List list = new ArrayList();
+            list.add(new QName(WSConstants.WSU_NS, WSConstants.TIMESTAMP_TOKEN_LN));
+            this.verifySecHeader(list.iterator(), ctx.getEnvelope());
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+    }
+
+
+}
diff --git a/rampart_1_1/modules/security/test/org/apache/rampart/handler/config/InflowConfigurationTest.java b/rampart_1_1/modules/security/test/org/apache/rampart/handler/config/InflowConfigurationTest.java
new file mode 100644
index 0000000..4f2ca7b
--- /dev/null
+++ b/rampart_1_1/modules/security/test/org/apache/rampart/handler/config/InflowConfigurationTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler.config;
+
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerConstants;
+
+import junit.framework.TestCase;
+
+public class InflowConfigurationTest extends TestCase {
+
+	public InflowConfigurationTest() {
+		super();
+	}
+
+	public InflowConfigurationTest(String name) {
+		super(name);
+	}
+	
+	public void testGetProperty() {
+		String actionItems = "Timestamp Signature Encrypt";
+		String sigPropFile = "sig.properties";
+		String decPropFile = "enc.properties";
+		String pwcb = "org.apache.axis2.security.PWCallback";
+		
+		InflowConfiguration ifc = new InflowConfiguration();
+		
+		ifc.setActionItems(actionItems);
+		ifc.setSignaturePropFile(sigPropFile);
+		ifc.setDecryptionPropFile(decPropFile);
+		ifc.setPasswordCallbackClass(pwcb);
+		
+		// Check whether the props are there
+		assertTrue("Action items missing", -1 < ifc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSSHandlerConstants.ACTION_ITEMS + ">"
+								+ actionItems + "</"
+								+ WSSHandlerConstants.ACTION_ITEMS + ">"));
+		
+		assertTrue("passwordCallbackClass missing", -1 < ifc.getProperty().getParameterElement()
+				.toString().indexOf(
+						"<" + WSHandlerConstants.PW_CALLBACK_CLASS + ">" + pwcb
+								+ "</" + WSHandlerConstants.PW_CALLBACK_CLASS
+								+ ">"));
+
+		assertTrue("sigPropFile missing", -1 < ifc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.SIG_PROP_FILE + ">"
+								+ sigPropFile + "</"
+								+ WSHandlerConstants.SIG_PROP_FILE + ">"));
+		
+		assertTrue("decPropFile missing", -1 < ifc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.DEC_PROP_FILE + ">"
+								+ decPropFile + "</"
+								+ WSHandlerConstants.DEC_PROP_FILE + ">"));
+	}
+
+}
diff --git a/rampart_1_1/modules/security/test/org/apache/rampart/handler/config/OutflowConfigurationTest.java b/rampart_1_1/modules/security/test/org/apache/rampart/handler/config/OutflowConfigurationTest.java
new file mode 100644
index 0000000..01f786a
--- /dev/null
+++ b/rampart_1_1/modules/security/test/org/apache/rampart/handler/config/OutflowConfigurationTest.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright 2004,2005 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.rampart.handler.config;
+
+import junit.framework.TestCase;
+import org.apache.rampart.handler.WSSHandlerConstants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.handler.WSHandlerConstants;
+
+/**
+ * Tests the org.apache.axis2.security.handler.config.OutflowConfiguration
+ */
+public class OutflowConfigurationTest extends TestCase {
+
+	public OutflowConfigurationTest() {
+		super();
+	}
+
+	public OutflowConfigurationTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * This sets all the possible properties that can be set with 
+	 * the outflow configuration
+	 */
+	public void testGetProperty() {
+
+		OutflowConfiguration ofc = new OutflowConfiguration();
+
+		String actionItems = "Timestamp Signature Encrypt";
+		String user = "alice";
+		String pwcb = "org.apache.axis2.security.PWCallback";
+		String sigKeyId = "interop.properties";
+		String sigParts = "{Element}{http://schemas.xmlsoap.org/ws/2004/08/"
+				+ "addressing}MessageID;{Element}{http://docs.oasis-open.org/wss/"
+				+ "2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp";
+		String optimizeParts = "//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue";
+		String embeddedKeyCallbackClass = "org.apache.axis2.security.PWCallback";
+		String encrUser = "bob";
+		String samlPropFile = "saml.properties";
+		String sigPropFile = "sig.properties";
+		String encPropFile = "enc.properties";
+
+		// Setting the properties in the ofc
+		ofc.setActionItems(actionItems);
+		ofc.setUser(user);
+		ofc.setPasswordCallbackClass(pwcb);
+		ofc.setSignatureKeyIdentifier(sigKeyId);
+		ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.SKI_KEY_IDENTIFIER);
+		ofc.setSignatureParts(sigParts);
+		ofc.setOptimizeParts(optimizeParts);
+		ofc.setEmbeddedKeyCallbackClass(embeddedKeyCallbackClass);
+		ofc.setEncryptionKeyTransportAlgorithm(WSConstants.KEYTRANSPORT_RSA15);
+		ofc.setEncryptionSymAlgorithm(WSConstants.AES_128);
+		ofc.setEncryptionUser(encrUser);
+		ofc.setPasswordType(WSConstants.PW_DIGEST);
+		ofc.setSamlPropFile(samlPropFile);
+		ofc.setSignaturePropFile(sigPropFile);
+		ofc.setEncryptionPropFile(encPropFile);
+
+		// Check whether the props are there
+		assertTrue("Action items missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSSHandlerConstants.ACTION_ITEMS + ">"
+								+ actionItems + "</"
+								+ WSSHandlerConstants.ACTION_ITEMS + ">"));
+
+		assertTrue("User missing", -1 < ofc.getProperty().getParameterElement().toString().indexOf(
+				"<" + WSHandlerConstants.USER + ">" + user + "</"
+						+ WSHandlerConstants.USER + ">"));
+
+		assertTrue("passwordCallbackClass missing", -1 < ofc.getProperty().getParameterElement()
+				.toString().indexOf(
+						"<" + WSHandlerConstants.PW_CALLBACK_CLASS + ">" + pwcb
+								+ "</" + WSHandlerConstants.PW_CALLBACK_CLASS
+								+ ">"));
+
+		assertTrue("sigKeyId missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.SIG_KEY_ID + ">" + sigKeyId
+								+ "</" + WSHandlerConstants.SIG_KEY_ID + ">"));
+
+		assertTrue("encKeyId missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.ENC_KEY_ID + ">"
+								+ WSSHandlerConstants.SKI_KEY_IDENTIFIER + "</"
+								+ WSHandlerConstants.ENC_KEY_ID + ">"));
+
+		assertTrue("signature parts missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.SIGNATURE_PARTS + ">"
+								+ sigParts + "</"
+								+ WSHandlerConstants.SIGNATURE_PARTS + ">"));
+
+		assertTrue("optimize parts missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSSHandlerConstants.OPTIMIZE_PARTS + ">"
+								+ optimizeParts + "</"
+								+ WSSHandlerConstants.OPTIMIZE_PARTS + ">"));
+
+		assertTrue("EmbeddedKeyCallbackClass missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.ENC_CALLBACK_CLASS + ">"
+								+ embeddedKeyCallbackClass + "</"
+								+ WSHandlerConstants.ENC_CALLBACK_CLASS + ">"));
+
+		assertTrue("encryptionKeyTransportAlgorithm missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.ENC_KEY_TRANSPORT + ">"
+								+ WSConstants.KEYTRANSPORT_RSA15 + "</"
+								+ WSHandlerConstants.ENC_KEY_TRANSPORT + ">"));
+
+		assertTrue("encryptionSymAlgorithm missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.ENC_SYM_ALGO + ">"
+								+ WSConstants.AES_128 + "</"
+								+ WSHandlerConstants.ENC_SYM_ALGO + ">"));
+
+		assertTrue("encrUser missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.ENCRYPTION_USER + ">"
+								+ encrUser + "</"
+								+ WSHandlerConstants.ENCRYPTION_USER + ">"));
+
+		assertTrue("passwordType missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.PASSWORD_TYPE + ">"
+								+ WSConstants.PW_DIGEST + "</"
+								+ WSHandlerConstants.PASSWORD_TYPE + ">"));
+
+		assertTrue("samlPropFile missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.SAML_PROP_FILE + ">"
+								+ samlPropFile + "</"
+								+ WSHandlerConstants.SAML_PROP_FILE + ">"));
+
+		assertTrue("sigPropFile missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.SIG_PROP_FILE + ">"
+								+ sigPropFile + "</"
+								+ WSHandlerConstants.SIG_PROP_FILE + ">"));
+		assertTrue("encPropFile missing", -1 < ofc.getProperty().getParameterElement().toString()
+				.indexOf(
+						"<" + WSHandlerConstants.ENC_PROP_FILE + ">"
+								+ encPropFile + "</"
+								+ WSHandlerConstants.ENC_PROP_FILE + ">"));
+	}
+	
+	/**
+	 * This tests multiple action configurations
+	 */
+	public void testMultipleActions() {
+		OutflowConfiguration ofc = new OutflowConfiguration(2);
+
+		String actionItems1 = "Timestamp Signature Encrypt";
+		String user1 = "alice";
+
+		String actionItems2 = "Signature Encrypt Timestamp";
+		String user2 = "alice2";
+		
+		ofc.setActionItems(actionItems1);
+		ofc.setUser(user1);
+		
+		ofc.nextAction();
+		
+		ofc.setActionItems(actionItems2);
+		ofc.setUser(user2);
+
+		assertEquals("Action items mismatch", actionItems2, ofc.getActionItems());
+		assertEquals("Action items mismatch", user2, ofc.getUser());
+		
+		ofc.previousAction();
+		
+		assertEquals("Action items mismatch", actionItems1, ofc.getActionItems());
+		assertEquals("Action items mismatch", user1, ofc.getUser());
+		
+	}
+
+}
diff --git a/rampart_1_1/modules/security/test/org/apache/rampart/policy/model/RampartPolicyTest.java b/rampart_1_1/modules/security/test/org/apache/rampart/policy/model/RampartPolicyTest.java
new file mode 100644
index 0000000..db78554
--- /dev/null
+++ b/rampart_1_1/modules/security/test/org/apache/rampart/policy/model/RampartPolicyTest.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2004,2005 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.rampart.policy.model;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+
+import javax.xml.namespace.QName;
+
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+public class RampartPolicyTest extends TestCase {
+    
+    public final static QName RAMPART_CONFIG_NAME = new QName(RampartConfig.NS,RampartConfig.RAMPART_CONFIG_LN);
+    public final static QName CRYPTO_CONFIG_NAME = new QName(RampartConfig.NS,CryptoConfig.CRYPTO_LN);
+    
+    public void testLoadPolicy() {
+        try {
+            String xmlPath = "test-resources/policy/rampart-policy-1.xml";
+            StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
+            
+            OMElement elem = builder.getDocumentElement();
+            
+            Policy policy = PolicyEngine.getPolicy(elem);
+            
+            Assertion assertion = (Assertion)policy.getAssertions().get(0);
+            
+            assertEquals("Incorrect namespace in RampartConfig",
+                    RAMPART_CONFIG_NAME.getNamespaceURI(), assertion.getName()
+                            .getNamespaceURI());
+            assertEquals("Incorrect localname in RampartConfig",
+                    RAMPART_CONFIG_NAME.getLocalPart(), assertion.getName()
+                            .getLocalPart());
+
+            RampartConfig config = (RampartConfig) assertion;
+            CryptoConfig sigCryptoConfig = config.getSigCryptoConfig();
+
+            assertNotNull("Signature Crypto missing", sigCryptoConfig);
+            
+            assertEquals("Incorrect namespace in SignatureCrypto",
+                    CRYPTO_CONFIG_NAME.getNamespaceURI(), sigCryptoConfig
+                            .getName().getNamespaceURI());
+            assertEquals("Incorrect localname in SignatureCrypto",
+                    CRYPTO_CONFIG_NAME.getLocalPart(), sigCryptoConfig.getName()
+                            .getLocalPart());
+            
+            assertEquals("Incorrect provider value",
+                    "org.apache.ws.security.components.crypto.Merlin",
+                    sigCryptoConfig.getProvider());
+            
+            Properties prop = sigCryptoConfig.getProp();
+            assertEquals("Incorrect number of properties", 3, prop.size());
+            
+            assertEquals("Incorrect property value", "JKS", prop
+                    .getProperty("keystoreType"));
+            assertEquals("Incorrect property value", "/path/to/file.jks", prop
+                    .getProperty("keystoreFile"));
+            assertEquals("Incorrect property value", "password", prop
+                    .getProperty("keystorePassword"));
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+        
+    }
+    
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/soapmonitor/maven.xml b/rampart_1_1/modules/soapmonitor/maven.xml
new file mode 100644
index 0000000..62d1ae9
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/maven.xml
@@ -0,0 +1,51 @@
+<?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:u="jelly:util"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+    <postGoal name="java:compile">
+        <!-- Temp dir to hold the contents of the mar -->
+        <mkdir dir="target/temp-mar/META-INF"/>
+        
+        <mkdir dir="target/modules"/>
+
+        <!-- Copy the required content for the mar into the temp dir-->
+
+        <copy todir="target/temp-mar">
+            <fileset dir="target/classes">
+                <include name="**/org/apache/axis2/handlers/*/**/*.class"/>
+            </fileset>
+        </copy>
+
+        <copy file="src/META-INF/module.xml"
+            tofile="target/temp-mar/META-INF/module.xml" overwrite="true"/>
+        
+        <copy file="../../LICENSE.txt"
+            tofile="target/temp-mar/META-INF/LICENSE.txt" overwrite="true"/>
+
+        <jar jarfile="target/soapmonitor-${soapmonitor_version}.mar" basedir="target/temp-mar/">
+            <include name="**/*"/>
+        </jar>
+
+        <copy file="target/soapmonitor-${soapmonitor_version}.mar" tofile="target/modules/soapmonitor-${soapmonitor_version}.mar"/>
+        <copy file="target/soapmonitor-${soapmonitor_version}.mar" tofile="${maven.repo.local}/org.apache.axis2/mars/soapmonitor-${soapmonitor_version}.mar"/>
+
+        <delete includeEmptyDirs="true">
+            <fileset dir="target/temp-mar"/>
+            <!-- don't put handler files in jar -->
+            <fileset dir="target/classes/org/apache/axis2/handlers"/>
+        </delete>
+
+    </postGoal>
+</project>
diff --git a/rampart_1_1/modules/soapmonitor/project.properties b/rampart_1_1/modules/soapmonitor/project.properties
new file mode 100644
index 0000000..3c5dee8
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/project.properties
@@ -0,0 +1,18 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

+maven.jar.excludes= **/META-INF/*

diff --git a/rampart_1_1/modules/soapmonitor/project.xml b/rampart_1_1/modules/soapmonitor/project.xml
new file mode 100644
index 0000000..7f07731
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/project.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <name>Apache Axis 2.0 - soapmonitor</name>

+    <id>axis2-soapmonitor</id>

+    <groupId>org.apache.axis2</groupId>

+    <description>soapmonitor for Axis 2.0</description>

+

+    <dependencies>

+

+       <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>${neethi.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>										    

+	<dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <!-- external JARs -->

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+          <groupId>servletapi</groupId>

+          <artifactId>servletapi</artifactId>

+          <version>${servletapi.version}</version>

+          <properties>

+            <module>true</module>

+          </properties>

+        </dependency>

+	  <!-- added for the QName -->	

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+

+    </dependencies>

+    <build/>

+    <reports/>

+</project>

diff --git a/rampart_1_1/modules/soapmonitor/src/META-INF/MANIFEST.MF b/rampart_1_1/modules/soapmonitor/src/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3a50b8f
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/src/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0

+Created-By: Ant 1.4.1

+

diff --git a/rampart_1_1/modules/soapmonitor/src/META-INF/module.xml b/rampart_1_1/modules/soapmonitor/src/META-INF/module.xml
new file mode 100644
index 0000000..1381ac4
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/src/META-INF/module.xml
@@ -0,0 +1,25 @@
+<module name="soapmonitor" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorModule">

+    <InFlow>

+        <handler name="InFlowSOAPMonitorHandler" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler">

+            <order phase="soapmonitorPhase"/>

+        </handler>

+    </InFlow>

+

+    <OutFlow>

+        <handler name="OutFlowSOAPMonitorHandler" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler">

+            <order phase="soapmonitorPhase"/>

+        </handler>

+    </OutFlow>

+

+    <OutFaultFlow>

+        <handler name="FaultOutFlowSOAPMonitorHandler" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler">

+            <order phase="soapmonitorPhase"/>

+        </handler>

+    </OutFaultFlow>

+

+    <InFaultFlow>

+        <handler name="FaultInFlowSOAPMonitorHandler" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler">

+            <order phase="soapmonitorPhase"/>

+        </handler>

+    </InFaultFlow>

+</module>

diff --git a/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/handlers/soapmonitor/SOAPMonitorHandler.java b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/handlers/soapmonitor/SOAPMonitorHandler.java
new file mode 100644
index 0000000..f4c40d8
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/handlers/soapmonitor/SOAPMonitorHandler.java
@@ -0,0 +1,131 @@
+/*

+ * Copyright 2004,2005 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.axis2.handlers.soapmonitor;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.context.MessageContext;

+import org.apache.axis2.handlers.AbstractHandler;

+import org.apache.axis2.soapmonitor.servlet.SOAPMonitorConstants;

+import org.apache.axis2.soapmonitor.servlet.SOAPMonitorService;

+

+public class SOAPMonitorHandler extends AbstractHandler {

+

+    private String name;

+

+    private static long next_message_id = 1;

+

+    /**

+     * Constructor

+     */

+    public SOAPMonitorHandler() {

+        super();

+    }

+

+    public String getName() {

+        return name;

+    }

+

+    public void revoke(MessageContext msgContext) {

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+

+

+    /**

+     * Process and SOAP message

+     */

+    public InvocationResponse invoke(MessageContext messageContext) throws AxisFault {

+

+        EndpointReference ref = null;

+

+        // Get id, type and content

+        Long id;

+        Integer type;

+        // 'soap request' must be called first

+        if (messageContext.getFLOW() == MessageContext.IN_FLOW) {

+            // show soap message inside the 'soap request' pane in the applet

+            id = assignMessageId(messageContext);

+            type = new Integer(SOAPMonitorConstants.SOAP_MONITOR_REQUEST);

+            ref = messageContext.getTo();

+        } else if (messageContext.getFLOW() == MessageContext.OUT_FLOW) {

+            id = getMessageId(messageContext);

+            // show soap message inside the 'soap response' pane in the applet

+            type = new Integer(SOAPMonitorConstants.SOAP_MONITOR_RESPONSE);

+            ref = messageContext.getFrom();

+        } else if (messageContext.getFLOW() == MessageContext.IN_FAULT_FLOW) {

+            id = getMessageId(messageContext);

+            // show soap message inside the 'soap request' pane in the applet

+            type = new Integer(SOAPMonitorConstants.SOAP_MONITOR_REQUEST);

+            ref = messageContext.getFaultTo();

+        } else if (messageContext.getFLOW() == MessageContext.OUT_FAULT_FLOW) {

+            id = getMessageId(messageContext);

+            // show soap message inside the 'soap response' pane in the applet

+            type = new Integer(SOAPMonitorConstants.SOAP_MONITOR_RESPONSE);

+            // TODO - How do I get an EPR on MessageContext.OUT_FAULT_FLOW ?

+        } else {

+            throw new IllegalStateException("unknown FLOW detected in messageContext: " + messageContext.getFLOW());

+        }

+

+        String target = null;

+        if (ref != null) {

+            target = ref.getAddress();

+        }

+        // Check for null target

+        if (target == null) {

+            target = "";

+        }

+

+        // Get the SOAP portion of the message

+        String soap = null;

+        if (messageContext.getEnvelope() != null) {

+            soap = messageContext.getEnvelope().toString();

+        }

+        // If we have an id and a SOAP portion, then send the

+        // message to the SOAP monitor service

+        if ((id != null) && (soap != null)) {

+            SOAPMonitorService.publishMessage(id, type, target, soap);

+        }

+        return InvocationResponse.CONTINUE;

+    }

+

+    /**

+     * Assign a new message id

+     */

+    private Long assignMessageId(MessageContext messageContext) {

+        Long id;

+        synchronized (SOAPMonitorConstants.SOAP_MONITOR_ID) {

+            id = new Long(next_message_id);

+            next_message_id++;

+        }

+        messageContext.getOperationContext().setProperty(

+                SOAPMonitorConstants.SOAP_MONITOR_ID, id);

+        return id;

+    }

+

+    /**

+     * Get the already assigned message id

+     */

+    private Long getMessageId(MessageContext messageContext) {

+        Long id;

+        id = (Long) messageContext.getOperationContext().getProperty(

+                SOAPMonitorConstants.SOAP_MONITOR_ID);

+        return id;

+    }

+}

diff --git a/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/handlers/soapmonitor/SOAPMonitorModule.java b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/handlers/soapmonitor/SOAPMonitorModule.java
new file mode 100644
index 0000000..6f5dc01
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/handlers/soapmonitor/SOAPMonitorModule.java
@@ -0,0 +1,55 @@
+/*

+ * Copyright 2004,2005 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.axis2.handlers.soapmonitor;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.context.ConfigurationContext;

+import org.apache.axis2.description.AxisDescription;

+import org.apache.axis2.description.AxisModule;

+import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.modules.Module;

+import org.apache.neethi.Assertion;

+import org.apache.neethi.Policy;

+

+public class SOAPMonitorModule implements Module {

+

+

+     // initialize the module

+    public void init(ConfigurationContext configContext, AxisModule module) throws AxisFault {

+    }

+

+    public void engageNotify(AxisDescription axisDescription) throws AxisFault {

+    }

+

+    // shutdown the module

+    public void shutdown(ConfigurationContext configContext) throws AxisFault {

+    }

+

+    public String[] getPolicyNamespaces() {

+        return null;

+    }

+

+    public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault {

+    }

+

+    public boolean canSupportAssertion(Assertion assertion) {

+        return true;

+    }

+    

+    

+}

diff --git a/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/applet/SOAPMonitorApplet.java b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/applet/SOAPMonitorApplet.java
new file mode 100644
index 0000000..ed640a1
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/applet/SOAPMonitorApplet.java
@@ -0,0 +1,1479 @@
+/*

+ * 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 java.awt.*;

+import java.awt.event.*;

+import java.io.*;

+import java.net.*;

+import java.text.*;

+import java.util.*;

+import javax.swing.*;

+import javax.swing.border.*;

+import javax.swing.event.*;

+import javax.swing.table.*;

+

+import org.apache.axis2.soapmonitor.servlet.SOAPMonitorConstants;

+

+/**

+ * This is a SOAP Mointor Applet class.  This class provides

+ * the user interface for displaying data from the SOAP

+ * monitor service.

+ */

+public class SOAPMonitorApplet extends JApplet {

+

+    /**

+     * Private data

+     */

+    private JPanel      main_panel = null;

+    private JTabbedPane tabbed_pane = null;

+    private int         port = 0;

+    private Vector      pages = null;

+

+    /**

+     * Constructor

+     */

+    public SOAPMonitorApplet() {

+    }

+

+    /**

+     * Applet initialization

+     */

+    public void init() {

+        // Get the port to be used

+        String port_str = getParameter("port");

+        if (port_str != null) {

+            port = Integer.parseInt(port_str);

+        }

+        // Try to use the system look and feel

+        try {

+           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

+        } catch (Exception e){

+        }

+        // Create main panel to hold notebook

+        main_panel = new JPanel();

+        main_panel.setBackground(Color.white);

+        main_panel.setLayout(new BorderLayout());

+        setContentPane(main_panel);

+        // Create the notebook

+        tabbed_pane = new JTabbedPane(JTabbedPane.TOP);

+        main_panel.add(tabbed_pane,BorderLayout.CENTER);

+        // Add notebook page for default host connection

+        pages = new Vector();

+        addPage(new SOAPMonitorPage(getCodeBase().getHost()));

+    }

+

+    /**

+     * Add a page to the notebook

+     */

+    private void addPage(SOAPMonitorPage pg) {

+        tabbed_pane.addTab("  "+pg.getHost()+"  ", pg);

+        pages.addElement(pg);

+    }

+

+    /** 

+     * Applet is being displayed 

+     */

+    public void start() {

+        // Tell all pages to start talking to the server

+        Enumeration e = pages.elements();

+        while (e.hasMoreElements()) {

+            SOAPMonitorPage pg = (SOAPMonitorPage) e.nextElement();

+            if (pg != null) {

+                pg.start();

+            }

+        }

+    }

+

+    /*

+     * Applet is no longer displayed

+     */

+    public void stop() {

+        // Tell all pages to stop talking to the server

+        Enumeration e = pages.elements();

+        while (e.hasMoreElements()) {

+            SOAPMonitorPage pg = (SOAPMonitorPage) e.nextElement();

+            if (pg != null) {

+                pg.stop();

+            }

+        }

+    }

+

+    /**

+     * Applet cleanup

+     */

+    public void destroy() {

+        tabbed_pane = null;

+        main_panel = null;

+    }

+

+    /**

+     * This class provides the contents of a notebook page

+     * representing a server connection.

+     */

+    class SOAPMonitorPage extends JPanel 

+                          implements Runnable,

+                                     ListSelectionListener,

+                                     ActionListener {

+

+        /**

+         * Status Strings

+         */

+        private final String STATUS_ACTIVE    = "The SOAP Monitor is started.";

+        private final String STATUS_STOPPED   = "The SOAP Monitor is stopped.";

+        private final String STATUS_CLOSED    = "The server communication has been terminated.";

+        private final String STATUS_NOCONNECT = "The SOAP Monitor is unable to communcate with the server.";

+

+        /**

+         * Private data

+         */

+        private String                host = null;

+        private Socket                socket = null;

+        private ObjectInputStream     in = null;

+        private ObjectOutputStream    out = null;

+        private SOAPMonitorTableModel model = null;

+        private JTable                table = null;

+        private JScrollPane           scroll = null;

+        private JPanel                list_panel = null;

+        private JPanel                list_buttons = null;

+        private JButton               remove_button = null;

+        private JButton               remove_all_button = null;

+        private JButton               filter_button = null;

+        private JPanel                details_panel = null;

+        private JPanel                details_header = null;

+        private JSplitPane            details_soap = null;

+        private JPanel                details_buttons = null;

+        private JLabel                details_time = null;

+        private JLabel                details_target = null;

+        private JLabel                details_status = null;

+        private JLabel                details_time_value = null;

+        private JLabel                details_target_value = null;

+        private JLabel                details_status_value = null;

+        private EmptyBorder           empty_border = null;

+        private EtchedBorder          etched_border = null;

+        private JPanel                request_panel = null;

+        private JPanel                response_panel = null;

+        private JLabel                request_label = null;

+        private JLabel                response_label = null;

+        private SOAPMonitorTextArea   request_text = null;

+        private SOAPMonitorTextArea   response_text = null;

+        private JScrollPane           request_scroll = null;

+        private JScrollPane           response_scroll = null;

+        private JButton               layout_button = null;

+        private JSplitPane            split = null;

+        private JPanel                status_area = null;

+        private JPanel                status_buttons = null;

+        private JButton               start_button = null;

+        private JButton               stop_button = null;

+        private JLabel                status_text = null;

+        private JPanel                status_text_panel = null;

+        private SOAPMonitorFilter     filter = null;

+        private GridBagLayout         details_header_layout = null;

+        private GridBagConstraints    details_header_constraints = null;

+        private JCheckBox             reflow_xml = null;

+

+        /**

+         * Constructor (create and layout page)

+         */

+        public SOAPMonitorPage(String host_name) {

+            host = host_name;

+            // Set up default filter (show all messages)

+            filter = new SOAPMonitorFilter();

+            // Use borders to help improve appearance

+            etched_border = new EtchedBorder();

+            // Build top portion of split (list panel) 

+            model = new SOAPMonitorTableModel();

+            table = new JTable(model);

+            table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

+            table.setRowSelectionInterval(0,0);

+            table.setPreferredScrollableViewportSize(new Dimension(600, 96));

+            table.getSelectionModel().addListSelectionListener(this);

+            scroll = new JScrollPane(table);

+            remove_button = new JButton("Remove");

+            remove_button.addActionListener(this);

+            remove_button.setEnabled(false);

+            remove_all_button = new JButton("Remove All");

+            remove_all_button.addActionListener(this);

+            filter_button = new JButton("Filter ...");

+            filter_button.addActionListener(this);

+            list_buttons = new JPanel();

+            list_buttons.setLayout(new FlowLayout());

+            list_buttons.add(remove_button);

+            list_buttons.add(remove_all_button);

+            list_buttons.add(filter_button);

+            list_panel = new JPanel();

+            list_panel.setLayout(new BorderLayout());

+            list_panel.add(scroll,BorderLayout.CENTER);

+            list_panel.add(list_buttons, BorderLayout.SOUTH);

+            list_panel.setBorder(empty_border);

+            // Build bottom portion of split (message details) 

+            details_time = new JLabel("Time: ", SwingConstants.RIGHT);

+            details_target = new JLabel("Target Service: ", SwingConstants.RIGHT);

+            details_status = new JLabel("Status: ", SwingConstants.RIGHT);

+            details_time_value = new JLabel();

+            details_target_value = new JLabel();

+            details_status_value = new JLabel();

+            Dimension preferred_size = details_time.getPreferredSize();

+            preferred_size.width = 1;

+            details_time.setPreferredSize(preferred_size); 

+            details_target.setPreferredSize(preferred_size); 

+            details_status.setPreferredSize(preferred_size); 

+            details_time_value.setPreferredSize(preferred_size); 

+            details_target_value.setPreferredSize(preferred_size); 

+            details_status_value.setPreferredSize(preferred_size);

+            details_header = new JPanel();

+            details_header_layout = new GridBagLayout();

+            details_header.setLayout(details_header_layout);

+            details_header_constraints = new GridBagConstraints();

+            details_header_constraints.fill=GridBagConstraints.BOTH;

+            details_header_constraints.weightx=0.5;

+            details_header_layout.setConstraints(details_time,details_header_constraints);

+            details_header.add(details_time);

+            details_header_layout.setConstraints(details_time_value,details_header_constraints);

+            details_header.add(details_time_value);

+            details_header_layout.setConstraints(details_target,details_header_constraints);

+            details_header.add(details_target);

+            details_header_constraints.weightx=1.0;

+            details_header_layout.setConstraints(details_target_value,details_header_constraints);

+            details_header.add(details_target_value);

+            details_header_constraints.weightx=.5;

+            details_header_layout.setConstraints(details_status,details_header_constraints);

+            details_header.add(details_status);

+            details_header_layout.setConstraints(details_status_value,details_header_constraints);

+            details_header.add(details_status_value);

+            details_header.setBorder(etched_border);

+            request_label = new JLabel("SOAP Request", SwingConstants.CENTER);

+            request_text = new SOAPMonitorTextArea();

+            request_text.setEditable(false);

+            request_scroll = new JScrollPane(request_text);

+            request_panel = new JPanel();

+            request_panel.setLayout(new BorderLayout());

+            request_panel.add(request_label, BorderLayout.NORTH);

+            request_panel.add(request_scroll, BorderLayout.CENTER);

+            response_label = new JLabel("SOAP Response", SwingConstants.CENTER);

+            response_text = new SOAPMonitorTextArea();

+            response_text.setEditable(false);

+            response_scroll = new JScrollPane(response_text);

+            response_panel = new JPanel();

+            response_panel.setLayout(new BorderLayout());

+            response_panel.add(response_label, BorderLayout.NORTH);

+            response_panel.add(response_scroll, BorderLayout.CENTER);

+            details_soap = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);

+            details_soap.setTopComponent(request_panel);

+            details_soap.setRightComponent(response_panel);

+            details_soap.setResizeWeight(.5);

+            details_panel = new JPanel();

+            layout_button = new JButton("Switch Layout");

+            layout_button.addActionListener(this);

+            reflow_xml = new JCheckBox("Reflow XML text");

+            reflow_xml.addActionListener(this);

+            details_buttons = new JPanel();

+            details_buttons.setLayout(new FlowLayout());

+            details_buttons.add(reflow_xml);

+            details_buttons.add(layout_button);

+            details_panel.setLayout(new BorderLayout());

+            details_panel.add(details_header,BorderLayout.NORTH);

+            details_panel.add(details_soap,BorderLayout.CENTER);

+            details_panel.add(details_buttons,BorderLayout.SOUTH);

+            details_panel.setBorder(empty_border);

+            // Add the two parts to the age split pane

+            split = new JSplitPane(JSplitPane.VERTICAL_SPLIT);

+            split.setTopComponent(list_panel);

+            split.setRightComponent(details_panel);

+            // Build status area

+            start_button = new JButton("Start");

+            start_button.addActionListener(this);

+            stop_button = new JButton("Stop");

+            stop_button.addActionListener(this);

+            status_buttons = new JPanel();

+            status_buttons.setLayout(new FlowLayout());

+            status_buttons.add(start_button);

+            status_buttons.add(stop_button);

+            status_text = new JLabel();

+            status_text.setBorder(new BevelBorder(BevelBorder.LOWERED));

+            status_text_panel = new JPanel();

+            status_text_panel.setLayout(new BorderLayout());

+            status_text_panel.add(status_text, BorderLayout.CENTER);

+            status_text_panel.setBorder(empty_border);

+            status_area = new JPanel();

+            status_area.setLayout(new BorderLayout());

+            status_area.add(status_buttons, BorderLayout.WEST);

+            status_area.add(status_text_panel, BorderLayout.CENTER);

+            status_area.setBorder(etched_border);

+            // Add the split and status area to page

+            setLayout(new BorderLayout());

+            add(split, BorderLayout.CENTER);

+            add(status_area, BorderLayout.SOUTH);

+        }

+

+        /**

+         * Get the name of the host we are displaying

+         */

+        public String getHost() {

+            return host;

+        }

+

+        /**

+         * Set the status text

+         */

+        public void setStatus(String txt) {

+            status_text.setForeground(Color.black);

+            status_text.setText("  "+txt);

+        }

+

+        /**

+         * Set the status text to an error

+         */

+        public void setErrorStatus(String txt) {

+            status_text.setForeground(Color.red);

+            status_text.setText("  "+txt);

+        }

+

+        /**

+         * Start talking to the server

+         */

+        public void start() {

+            String codehost = getCodeBase().getHost();

+            if (socket == null) {

+                try {

+                    // Open the socket to the server

+                    socket = new Socket(codehost, port);

+                    // Create output stream

+                    out = new ObjectOutputStream(socket.getOutputStream());

+                    out.flush();

+                    // Create input stream and start background

+                    // thread to read data from the server

+                    in = new ObjectInputStream(socket.getInputStream());

+                    new Thread(this).start();

+                } catch (Exception e) {

+                    // Exceptions here are unexpected, but we can't

+                    // really do anything (so just write it to stdout

+                    // in case someone cares and then ignore it)

+                    System.out.println("Exception! "+e.toString());

+                    e.printStackTrace();

+                    setErrorStatus(STATUS_NOCONNECT);

+                    socket = null;

+                }

+            } else {

+                // Already started

+            }

+            if (socket != null) {

+                // Make sure the right buttons are enabled

+                start_button.setEnabled(false);

+                stop_button.setEnabled(true);

+                setStatus(STATUS_ACTIVE);

+            }

+        }

+

+        /**

+         * Stop talking to the server

+         */

+        public void stop() {

+            if (socket != null) {

+                // Close all the streams and socket

+                if (out != null) {

+                    try {

+                        out.close();

+                    } catch (IOException ioe) {

+                    }

+                    out = null;

+                }

+                if (in != null) {

+                    try {

+                        in.close();

+                    } catch (IOException ioe) {

+                    }

+                    in = null;

+                }

+                if (socket != null) {

+                    try {

+                        socket.close();

+                    } catch (IOException ioe) {

+                    }

+                    socket = null;

+                }

+            } else {

+                // Already stopped

+            }

+            // Make sure the right buttons are enabled

+            start_button.setEnabled(true);

+            stop_button.setEnabled(false);

+            setStatus(STATUS_STOPPED);

+        }

+

+        /**

+         * Background thread used to receive data from

+         * the server.

+         */

+        public void run() {

+            Long            id;

+            Integer         message_type;

+            String          target;

+            String          soap;

+            SOAPMonitorData data;

+            int             selected;

+            int             row;

+            boolean         update_needed;

+            while (socket != null) {

+                try {

+                    // Get the data from the server

+                    message_type = (Integer) in.readObject();

+                    // Process the data depending on its type

+                    switch (message_type.intValue()) {

+                        case SOAPMonitorConstants.SOAP_MONITOR_REQUEST:

+                            // Get the id, target and soap info

+                            id = (Long) in.readObject();

+                            target = (String) in.readObject();

+                            soap = (String) in.readObject();

+                            // Add new request data to the table

+                            data = new SOAPMonitorData(id,target,soap);

+                            model.addData(data);

+                            // If "most recent" selected then update

+                            // the details area if needed

+                            selected = table.getSelectedRow();

+                            if ((selected == 0) && model.filterMatch(data)) {

+                                valueChanged(null);

+                            }

+                            break;

+                        case SOAPMonitorConstants.SOAP_MONITOR_RESPONSE:

+                            // Get the id and soap info

+                            id = (Long) in.readObject();

+                            soap = (String) in.readObject();

+                            data = model.findData(id);

+                            if (data != null) {

+                                update_needed = false;

+                                // Get the selected row

+                                selected = table.getSelectedRow();

+                                // If "most recent", then always

+                                // update details area

+                                if (selected == 0) {

+                                    update_needed = true;

+                                }

+                                // If the data being updated is

+                                // selected then update details

+                                row = model.findRow(data);

+                                if ((row != -1) && (row == selected)) {

+                                    update_needed = true;

+                                }

+                                // Set the response and update table

+                                data.setSOAPResponse(soap);

+                                model.updateData(data);

+                                // Refresh details area (if needed)

+                                if (update_needed) {

+                                    valueChanged(null);

+                                }

+                            }

+                            break;

+                    }

+

+                } catch (Exception e) {

+                    // Exceptions are expected here when the

+                    // server communication has been terminated.

+                    if (stop_button.isEnabled()) {

+                        stop();

+                        setErrorStatus(STATUS_CLOSED);

+                    }

+                }

+            }

+        }

+

+        /**

+         * Listener to handle table selection changes

+         */

+        public void valueChanged(ListSelectionEvent e) {

+            int row = table.getSelectedRow();

+            // Check if they selected a specific row

+            if (row > 0) {

+                remove_button.setEnabled(true);

+            } else {

+                remove_button.setEnabled(false);

+            }

+            // Check for "most recent" selection

+            if (row == 0) {

+                row = model.getRowCount() - 1;

+                if (row == 0) {

+                    row = -1;

+                }

+            }

+            if (row == -1) {

+                // Clear the details panel

+                details_time_value.setText("");

+                details_target_value.setText("");

+                details_status_value.setText("");

+                request_text.setText("");

+                response_text.setText("");

+            } else {

+                // Show the details for the row

+                SOAPMonitorData soap = model.getData(row);

+                details_time_value.setText(soap.getTime());

+                details_target_value.setText(soap.getTargetService());

+                details_status_value.setText(soap.getStatus());

+                if (soap.getSOAPRequest() == null) {

+                    request_text.setText("");

+                } else {

+                    request_text.setText(soap.getSOAPRequest());

+                    request_text.setCaretPosition(0);

+                }

+                if (soap.getSOAPResponse() == null) {

+                    response_text.setText("");

+                } else {

+                    response_text.setText(soap.getSOAPResponse());

+                    response_text.setCaretPosition(0);

+                }

+            }

+        }

+

+        /**

+         * Listener to handle button actions

+         */

+        public void actionPerformed(ActionEvent e) {

+            // Check if the user pressed the remove button

+            if (e.getSource() == remove_button) {

+                int row = table.getSelectedRow();

+                model.removeRow(row);

+                table.clearSelection();

+                table.repaint();

+                valueChanged(null);

+            }

+            // Check if the user pressed the remove all button

+            if (e.getSource() == remove_all_button) {

+                model.clearAll();

+                table.setRowSelectionInterval(0,0);

+                table.repaint();

+                valueChanged(null);

+            }

+            // Check if the user pressed the filter button

+            if (e.getSource() == filter_button) {

+                filter.showDialog();

+                if (filter.okPressed()) {

+                    // Update the display with new filter

+                    model.setFilter(filter);

+                    table.repaint();

+                }

+            }

+            // Check if the user pressed the start button

+            if (e.getSource() == start_button) {

+                start();

+            }

+            // Check if the user pressed the stop button

+            if (e.getSource() == stop_button) {

+                stop();

+            }

+            // Check if the user wants to switch layout

+            if (e.getSource() == layout_button) {

+                details_panel.remove(details_soap);

+                details_soap.removeAll();

+                if (details_soap.getOrientation() == JSplitPane.HORIZONTAL_SPLIT) {

+                    details_soap = new JSplitPane(JSplitPane.VERTICAL_SPLIT);

+                } else {

+                    details_soap = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);

+                }

+                details_soap.setTopComponent(request_panel);

+                details_soap.setRightComponent(response_panel);

+                details_soap.setResizeWeight(.5);

+                details_panel.add(details_soap, BorderLayout.CENTER);

+                details_panel.validate();

+                details_panel.repaint();

+            }

+            // Check if the user is changing the reflow option

+            if (e.getSource() == reflow_xml) {

+                request_text.setReflowXML(reflow_xml.isSelected());

+                response_text.setReflowXML(reflow_xml.isSelected());

+            }

+        }

+    }

+

+    /**

+     * This class represend the data for a SOAP request/response pair

+     */

+    class SOAPMonitorData {

+

+        /**

+         * Private data

+         */

+        private Long    id;

+        private String  time;

+        private String  target;

+        private String  soap_request;

+        private String  soap_response;

+

+        /**

+         * Constructor

+         */

+        public SOAPMonitorData(Long id, String target, String soap_request) {

+            this.id = id;

+            // A null id is used to signal that the "most recent" entry

+            // is being created.

+            if (id == null) {

+                this.time = "Most Recent";

+                this.target = "---";

+                this.soap_request = null;

+                this.soap_response = null;

+            } else {

+                this.time = DateFormat.getTimeInstance().format(new Date());

+                this.target = target;

+                this.soap_request = soap_request;

+                this.soap_response = null;

+            }

+        }

+

+        /**

+         * Get the id for the SOAP message

+         */

+        public Long getId() {

+            return id;

+        }

+

+        /**

+         * Get the time the SOAP request was received by the applet

+         */

+        public String getTime() {

+            return time;

+        }

+

+        /**

+         * Get the SOAP request target service name

+         */

+        public String getTargetService() {

+            return target;

+        }

+

+        /**

+         * Get the status of the request

+         */

+        public String getStatus() {

+            String status = "---";

+            if (id != null) {

+                status = "Complete";

+                if (soap_response == null) {

+                    status = "Active";

+                }

+            }

+            return status;

+        }

+

+        /**

+         * Get the request SOAP contents

+         */

+        public String getSOAPRequest() {

+            return soap_request;

+        }

+

+        /**

+         * Set the resposne SOAP contents

+         */

+        public void setSOAPResponse(String response) {

+            soap_response = response;

+        }

+

+        /**

+         * Get the response SOAP contents

+         */

+        public String getSOAPResponse() {

+            return soap_response;

+        }

+    }

+

+    /**

+     * This table model is used to manage the table displayed

+     * at the top of the page to show all the SOAP messages

+     * we have received and to control which message details are

+     * to be displayed on the bottom of the page.

+     */

+    class SOAPMonitorTableModel extends AbstractTableModel {

+

+        /**

+         * Column titles

+         */

+        private final String[] column_names = { "Time",

+                                                "Target Service",

+                                                "Status" };

+        /**                                        

+         * Private data

+         */

+        private Vector  data;

+        private Vector  filter_include;

+        private Vector  filter_exclude;

+        private boolean filter_active;

+        private boolean filter_complete;

+        private Vector  filter_data;

+

+        /**

+         * Constructor

+         */

+        public SOAPMonitorTableModel() {

+            data = new Vector();

+            // Add "most recent" entry to top of table

+            SOAPMonitorData soap = new SOAPMonitorData(null,null,null);

+            data.addElement(soap);

+            filter_include = null;

+            filter_exclude = null;

+            filter_active = false;

+            filter_complete = false;

+            filter_data = null;

+            // By default, exclude NotificationService and

+            // EventViewerService messages

+            filter_exclude = new Vector();

+            filter_exclude.addElement("NotificationService");

+            filter_exclude.addElement("EventViewerService");

+            filter_data = new Vector();

+            filter_data.addElement(soap);

+        }

+

+        /**

+         * Get column count (part of table model interface)

+         */

+        public int getColumnCount() {

+            return column_names.length;

+        }

+        

+        /**

+         * Get row count (part of table model interface)

+         */

+        public int getRowCount() {

+            int count = data.size();

+            if (filter_data != null) {

+                count = filter_data.size();

+            }

+            return count;

+        }

+

+        /**

+         * Get column name (part of table model interface)

+         */

+        public String getColumnName(int col) {

+            return column_names[col];

+        }

+

+        /**

+         * Get value at (part of table model interface)

+         */

+        public Object getValueAt(int row, int col) {

+            SOAPMonitorData soap;

+            String          value = null;

+            soap = (SOAPMonitorData) data.elementAt(row);

+            if (filter_data != null) {

+                soap = (SOAPMonitorData) filter_data.elementAt(row);

+            }

+            switch (col) {

+                case 0:

+                    value = soap.getTime();

+                    break;

+                case 1:

+                    value = soap.getTargetService();

+                    break;

+                case 2:

+                    value = soap.getStatus();

+                    break;

+            }

+            return value;

+        }

+

+        /**

+         * Check if soap data matches filter 

+         */

+        public boolean filterMatch(SOAPMonitorData soap) {

+            boolean match = true;

+            if (filter_include != null) {

+                // Check for service match

+                Enumeration e = filter_include.elements();

+                match = false;

+                while (e.hasMoreElements() && !match) {

+                    String service = (String) e.nextElement();

+                    if (service.equals(soap.getTargetService())) {

+                        match = true;

+                    }

+                }

+            }

+            if (filter_exclude != null) {

+                // Check for service match

+                Enumeration e = filter_exclude.elements();

+                while (e.hasMoreElements() && match) {

+                    String service = (String) e.nextElement();

+                    if (service.equals(soap.getTargetService())) {

+                        match = false;

+                    }

+                }

+            }

+            if (filter_active) {

+                // Check for active status match

+                if (soap.getSOAPResponse() != null) {

+                    match = false;

+                }

+            }

+            if (filter_complete) {

+                // Check for complete status match

+                if (soap.getSOAPResponse() == null) {

+                    match = false;

+                }

+            }

+            // The "most recent" is always a match

+            if (soap.getId() == null) {

+                match = true;

+            }

+            return match;

+        }

+

+        /**

+         * Add data to the table as a new row

+         */

+        public void addData(SOAPMonitorData soap) {

+            int row = data.size();

+            data.addElement(soap);

+            if (filter_data != null) {

+                if (filterMatch(soap)) {

+                    row = filter_data.size();

+                    filter_data.addElement(soap);

+                    fireTableRowsInserted(row,row);

+                }

+            } else {

+                fireTableRowsInserted(row,row);

+            }

+        }

+

+        /**

+         * Find the data for a given id

+         */

+        public SOAPMonitorData findData(Long id) {

+            SOAPMonitorData soap = null;

+            for (int row=data.size(); (row > 0) && (soap == null); row--) {

+                soap = (SOAPMonitorData) data.elementAt(row-1);

+                if (soap.getId().longValue() != id.longValue()) {

+                    soap = null;

+                }

+            }

+            return soap;

+        }

+

+        /**

+         * Find the row in the table for a given message id

+         */

+        public int findRow(SOAPMonitorData soap) {

+            int row = -1;

+            if (filter_data != null) {

+                row = filter_data.indexOf(soap);

+            } else {

+                row = data.indexOf(soap);

+            }

+            return row;

+        }

+

+        /**

+         * Remove all messages from the table (but leave "most recent")

+         */

+        public void clearAll() {

+            int last_row = data.size() - 1;

+            if (last_row > 0) {

+                data.removeAllElements();

+                SOAPMonitorData soap = new SOAPMonitorData(null,null,null);

+                data.addElement(soap);

+                if (filter_data != null) {

+                    filter_data.removeAllElements();

+                    filter_data.addElement(soap);

+                }

+                fireTableDataChanged();

+            }

+        }

+

+        /**

+         * Remove a message from the table

+         */

+        public void removeRow(int row) {

+            SOAPMonitorData soap = null;

+            if (filter_data == null) {

+                soap = (SOAPMonitorData) data.elementAt(row);

+                data.remove(soap);

+            } else {

+                soap = (SOAPMonitorData) filter_data.elementAt(row);

+                filter_data.remove(soap);

+                data.remove(soap);

+            }         

+            fireTableRowsDeleted(row,row);

+        }

+

+        /**

+         * Set a new filter

+         */

+        public void setFilter(SOAPMonitorFilter filter) {

+            // Save new filter criteria

+            filter_include = filter.getFilterIncludeList();

+            filter_exclude = filter.getFilterExcludeList();

+            filter_active = filter.getFilterActive();

+            filter_complete = filter.getFilterComplete();

+            applyFilter();

+        }

+

+        /**

+         * Refilter the list of messages

+         */

+        public void applyFilter() {

+            // Re-filter using new criteria

+            filter_data = null;

+            if ((filter_include != null) || 

+                (filter_exclude != null) ||

+                 filter_active || filter_complete ) {

+                filter_data = new Vector();

+                Enumeration e = data.elements();

+                SOAPMonitorData soap;

+                while (e.hasMoreElements()) {

+                    soap = (SOAPMonitorData) e.nextElement();

+                    if (filterMatch(soap)) {

+                        filter_data.addElement(soap);

+                    }

+                }

+            }

+            fireTableDataChanged();

+        }

+

+        /**

+         * Get the data for a row

+         */

+        public SOAPMonitorData getData(int row) {

+            SOAPMonitorData soap = null;

+            if (filter_data == null) {

+                soap = (SOAPMonitorData) data.elementAt(row);

+            } else {

+                soap = (SOAPMonitorData) filter_data.elementAt(row);

+            }

+            return soap;

+        }

+

+        /**

+         * Update a message

+         */

+        public void updateData (SOAPMonitorData soap) {

+           int row;

+           if (filter_data == null) {

+               // No filter, so just fire table updated

+               row = data.indexOf(soap);

+               if (row != -1) {

+                   fireTableRowsUpdated(row,row);

+               }

+           } else {

+               // Check if the row was being displayed

+               row = filter_data.indexOf(soap);

+               if (row == -1) {

+                   // Row was not displayed, so check for if it

+                   // now needs to be displayed

+                   if (filterMatch(soap)) {

+                       int index = -1;

+                       row = data.indexOf(soap) + 1;

+                       while ((row < data.size()) && (index == -1)) {

+                           index = filter_data.indexOf(data.elementAt(row));

+                           if (index != -1) {                   

+                               // Insert at this location

+                               filter_data.add(index,soap);

+                           }

+                           row++;

+                       }

+                       if (index == -1) {

+                           // Insert at end

+                           index = filter_data.size();

+                           filter_data.addElement(soap);

+                       }

+                       fireTableRowsInserted(index,index);

+                   }

+               } else {

+                   // Row was displayed, so check if it needs to

+                   // be updated or removed

+                   if (filterMatch(soap)) {

+                       fireTableRowsUpdated(row,row);

+                   } else {

+                       filter_data.remove(soap);

+                       fireTableRowsDeleted(row,row);

+                   }

+               }

+           }

+        }

+

+    }

+

+    /**

+     * Panel with checkbox and list

+     */

+    class ServiceFilterPanel extends JPanel 

+                             implements ActionListener,

+                                        ListSelectionListener,

+                                        DocumentListener {

+

+        private JCheckBox    service_box = null;

+        private Vector       filter_list = null;

+        private Vector       service_data = null;

+        private JList        service_list = null;

+        private JScrollPane  service_scroll = null;

+        private JButton      remove_service_button = null;

+        private JPanel       remove_service_panel = null;

+        private EmptyBorder  indent_border = null;

+        private EmptyBorder  empty_border = null;

+        private JPanel       service_area = null;

+        private JPanel       add_service_area = null;

+        private JTextField   add_service_field = null;

+        private JButton      add_service_button = null;

+        private JPanel       add_service_panel = null;

+

+        /**

+         * Constructor

+         */

+        public ServiceFilterPanel(String text, Vector list) {

+            empty_border = new EmptyBorder(5,5,0,5);

+            indent_border = new EmptyBorder(5,25,5,5);

+            service_box = new JCheckBox(text);

+            service_box.addActionListener(this);

+            service_data = new Vector();

+            if (list != null) {

+                service_box.setSelected(true);

+                service_data = (Vector) list.clone();

+            }

+            service_list = new JList(service_data);

+            service_list.setBorder(new EtchedBorder());

+            service_list.setVisibleRowCount(5);

+            service_list.addListSelectionListener(this);

+            service_list.setEnabled(service_box.isSelected());

+            service_scroll = new JScrollPane(service_list);

+            service_scroll.setBorder(new EtchedBorder());

+            remove_service_button = new JButton("Remove");

+            remove_service_button.addActionListener(this);

+            remove_service_button.setEnabled(false);

+            remove_service_panel = new JPanel();

+            remove_service_panel.setLayout(new FlowLayout());

+            remove_service_panel.add(remove_service_button);

+            service_area = new JPanel();

+            service_area.setLayout(new BorderLayout());

+            service_area.add(service_scroll, BorderLayout.CENTER);

+            service_area.add(remove_service_panel, BorderLayout.EAST);

+            service_area.setBorder(indent_border);

+            add_service_field = new JTextField();

+            add_service_field.addActionListener(this);

+            add_service_field.getDocument().addDocumentListener(this);

+            add_service_field.setEnabled(service_box.isSelected());

+            add_service_button = new JButton("Add");

+            add_service_button.addActionListener(this);

+            add_service_button.setEnabled(false);

+            add_service_panel = new JPanel();

+            add_service_panel.setLayout(new BorderLayout());

+            JPanel dummy = new JPanel();

+            dummy.setBorder(empty_border);

+            add_service_panel.add(dummy, BorderLayout.WEST);

+            add_service_panel.add(add_service_button, BorderLayout.EAST);

+            add_service_area = new JPanel();

+            add_service_area.setLayout(new BorderLayout());

+            add_service_area.add(add_service_field, BorderLayout.CENTER);

+            add_service_area.add(add_service_panel, BorderLayout.EAST);

+            add_service_area.setBorder(indent_border);

+            setLayout(new BorderLayout());

+            add(service_box, BorderLayout.NORTH);

+            add(service_area, BorderLayout.CENTER);

+            add(add_service_area, BorderLayout.SOUTH);

+            setBorder(empty_border);

+        }

+

+        /**

+         * Get the current list of services

+         */

+        public Vector getServiceList() {

+            Vector list = null;

+            if (service_box.isSelected()) {

+                list = service_data;

+            }

+            return list;

+        }

+

+        /**

+         * Listener to handle button actions

+         */

+        public void actionPerformed(ActionEvent e) {

+            // Check if the user changed the service filter option

+            if (e.getSource() == service_box) {

+                service_list.setEnabled(service_box.isSelected());

+                service_list.clearSelection();

+                remove_service_button.setEnabled(false);

+                add_service_field.setEnabled(service_box.isSelected());

+                add_service_field.setText("");

+                add_service_button.setEnabled(false);

+            }

+            // Check if the user pressed the add service button

+            if ((e.getSource() == add_service_button) ||

+                (e.getSource() == add_service_field)) {

+                String text = add_service_field.getText();

+                if ((text != null) && (text.length() > 0)) {

+                    service_data.addElement(text);

+                    service_list.setListData(service_data);

+                }

+                add_service_field.setText("");

+                add_service_field.requestFocus();

+            }

+            // Check if the user pressed the remove service button

+            if (e.getSource() == remove_service_button) {

+                Object[] sels = service_list.getSelectedValues();

+                for (int i=0; i<sels.length; i++) {

+                    service_data.removeElement(sels[i]);

+                }

+                service_list.setListData(service_data);

+                service_list.clearSelection();

+            }

+        }

+

+        /**

+         * Handle changes to the text field

+         */

+        public void changedUpdate(DocumentEvent e) {

+            String text = add_service_field.getText();

+            if ((text != null) && (text.length() > 0)) {

+                add_service_button.setEnabled(true);

+            } else {

+                add_service_button.setEnabled(false);

+            }

+        }

+

+        /**

+         * Handle changes to the text field

+         */

+        public void insertUpdate(DocumentEvent e) {

+            changedUpdate(e);

+        }

+

+        /**

+         * Handle changes to the text field

+         */

+        public void removeUpdate(DocumentEvent e) {

+            changedUpdate(e);

+        }

+

+        /**

+         * Listener to handle service list selection changes

+         */

+        public void valueChanged(ListSelectionEvent e) {

+            if (service_list.getSelectedIndex() == -1) {

+                remove_service_button.setEnabled(false);

+            } else {

+                remove_service_button.setEnabled(true);

+            }

+        }

+    }

+

+    /**

+     * Class for showing the filter dialog

+     */

+    class SOAPMonitorFilter implements ActionListener {

+

+        /**

+         * Private data

+         */

+        private JDialog            dialog = null;

+        private JPanel             panel = null;

+        private JPanel             buttons = null;

+        private JButton            ok_button = null;

+        private JButton            cancel_button = null;

+        private ServiceFilterPanel include_panel = null;

+        private ServiceFilterPanel exclude_panel = null;

+        private JPanel             status_panel = null;

+        private JCheckBox          status_box = null;

+        private EmptyBorder  empty_border = null;

+        private EmptyBorder  indent_border = null;

+        private JPanel             status_options = null;

+        private ButtonGroup        status_group = null;

+        private JRadioButton       status_active = null;

+        private JRadioButton       status_complete = null;

+        private Vector             filter_include_list = null;

+        private Vector             filter_exclude_list = null;

+        private boolean            filter_active = false;

+        private boolean            filter_complete = false;

+        private boolean            ok_pressed = false;

+

+        /**

+         * Constructor

+         */

+        public SOAPMonitorFilter() {

+            // By default, exclude NotificationService and

+            // EventViewerService messages

+            filter_exclude_list = new Vector();

+            filter_exclude_list.addElement("NotificationService");

+            filter_exclude_list.addElement("EventViewerService");

+        }

+

+        /**

+         * Get list of services to be included

+         */

+        public Vector getFilterIncludeList() {

+            return filter_include_list;

+        }

+

+        /**

+         * Get list of services to be excluded

+         */

+        public Vector getFilterExcludeList() {

+            return filter_exclude_list;

+        }

+

+        /**

+         * Check if filter active messages

+         */

+        public boolean getFilterActive() {

+            return filter_active;

+        }

+

+        /**

+         * Check if filter complete messages

+         */

+        public boolean getFilterComplete() {

+            return filter_complete;

+        }

+

+        /**

+         * Show the filter dialog

+         */

+        public void showDialog() {

+            empty_border = new EmptyBorder(5,5,0,5);

+            indent_border = new EmptyBorder(5,25,5,5);

+            include_panel = new ServiceFilterPanel("Include messages based on target service:",

+                                                   filter_include_list);

+            exclude_panel = new ServiceFilterPanel("Exclude messages based on target service:",

+                                                   filter_exclude_list);

+            status_box = new JCheckBox("Filter messages based on status:");

+            status_box.addActionListener(this);

+            status_active = new JRadioButton("Active messages only");

+            status_active.setSelected(true);

+            status_active.setEnabled(false);

+            status_complete = new JRadioButton("Complete messages only");

+            status_complete.setEnabled(false);

+            status_group = new ButtonGroup();

+            status_group.add(status_active);

+            status_group.add(status_complete);

+            if (filter_active || filter_complete) {

+                status_box.setSelected(true);

+                status_active.setEnabled(true);

+                status_complete.setEnabled(true);

+                if (filter_complete) {

+                    status_complete.setSelected(true);

+                }

+            }

+            status_options = new JPanel();

+            status_options.setLayout(new BoxLayout(status_options, BoxLayout.Y_AXIS));

+            status_options.add(status_active);

+            status_options.add(status_complete);

+            status_options.setBorder(indent_border);

+            status_panel = new JPanel();

+            status_panel.setLayout(new BorderLayout());

+            status_panel.add(status_box, BorderLayout.NORTH);

+            status_panel.add(status_options, BorderLayout.CENTER);

+            status_panel.setBorder(empty_border);

+            ok_button = new JButton("Ok");

+            ok_button.addActionListener(this);

+            cancel_button = new JButton("Cancel");

+            cancel_button.addActionListener(this);

+            buttons = new JPanel();

+            buttons.setLayout(new FlowLayout());

+            buttons.add(ok_button);

+            buttons.add(cancel_button);

+            panel = new JPanel();

+            panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

+            panel.add(include_panel);

+            panel.add(exclude_panel);

+            panel.add(status_panel);

+            panel.add(buttons);

+            dialog = new JDialog();

+            dialog.setTitle("SOAP Monitor Filter");

+            dialog.setContentPane(panel);

+            dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

+            dialog.setModal(true);

+            dialog.pack();

+            Dimension d = dialog.getToolkit().getScreenSize();

+            dialog.setLocation((d.width-dialog.getWidth())/2,

+                               (d.height-dialog.getHeight())/2);

+            ok_pressed = false;

+            dialog.show();

+        }

+

+        /**

+         * Listener to handle button actions

+         */

+        public void actionPerformed(ActionEvent e) {

+            // Check if the user pressed the ok button

+            if (e.getSource() == ok_button) {

+                filter_include_list = include_panel.getServiceList();

+                filter_exclude_list = exclude_panel.getServiceList();

+                if (status_box.isSelected()) {

+                    filter_active = status_active.isSelected();

+                    filter_complete = status_complete.isSelected();

+                } else {

+                    filter_active = false;

+                    filter_complete = false;

+                }

+                ok_pressed = true;

+                dialog.dispose();

+            }

+            // Check if the user pressed the cancel button

+            if (e.getSource() == cancel_button) {

+                dialog.dispose();

+            }

+            // Check if the user changed the status filter option

+            if (e.getSource() == status_box) {

+                status_active.setEnabled(status_box.isSelected());

+                status_complete.setEnabled(status_box.isSelected());

+            }

+        }

+

+        /**

+         * Check if the user pressed the ok button

+         */

+        public boolean okPressed() {

+            return ok_pressed;

+        }

+    }

+

+    /**

+     * Text panel class that supports XML reflow

+     */

+    class SOAPMonitorTextArea extends JTextArea {

+

+        /**

+         * Private data

+         */

+        private boolean format = false;

+        private String  original = "";

+        private String  formatted = null; 

+

+        /**

+         * Constructor

+         */

+        public SOAPMonitorTextArea() {

+        }

+

+        /** 

+         * Override setText to do formatting

+         */

+        public void setText(String text) {

+            original = text;

+            formatted = null;

+            if (format) {

+                doFormat();

+                super.setText(formatted);

+            } else {

+                super.setText(original);

+            }

+        }

+

+        /**

+         * Turn reflow on or off

+         */

+        public void setReflowXML(boolean reflow) {

+            format = reflow;

+            if (format) {

+                if (formatted == null) {

+                    doFormat();

+                }

+                super.setText(formatted);

+            } else {

+                super.setText(original);

+            }

+        }

+

+        /**

+         * Reflow XML

+         */

+        public void doFormat() {

+            Vector       parts = new Vector();

+            char[]       chars = original.toCharArray();

+            int          index = 0;

+            int          first = 0;

+            String       part = null;

+            while (index < chars.length) {

+                // Check for start of tag

+                if (chars[index] == '<') {

+                    // Did we have data before this tag?

+                    if (first < index) {

+                        part = new String(chars,first,index-first);

+                        part = part.trim();

+                        // Save non-whitespace data

+                        if (part.length() > 0) {

+                            parts.addElement(part);

+                        }

+                    }

+                    // Save the start of tag

+                    first = index;

+                }

+                // Check for end of tag

+                if (chars[index] == '>') {

+                    // Save the tag

+                    part = new String(chars,first,index-first+1);

+                    parts.addElement(part);

+                    first = index+1;

+                }

+                // Check for end of line

+                if ((chars[index] == '\n') || (chars[index] == '\r')) {

+                    // Was there data on this line?

+                    if (first < index) {

+                        part = new String(chars,first,index-first);

+                        part = part.trim();

+                        // Save non-whitespace data

+                        if (part.length() > 0) {

+                            parts.addElement(part);

+                        }

+                    }

+                    first = index+1;

+                }

+                index++;

+            }

+            // Reflow as XML

+            StringBuffer buf = new StringBuffer();

+            Object[] list = parts.toArray();

+            int indent = 0;

+            int pad = 0;

+            index = 0;

+            while (index < list.length) {

+                part = (String) list[index];

+                if (buf.length() == 0) {

+                    // Just add first tag (should be XML header)

+                    buf.append(part);

+                } else {

+                    // All other parts need to start on a new line

+                    buf.append('\n');

+                    // If we're at an end tag then decrease indent

+                    if (part.startsWith("</")) {

+                        indent--;

+                    }            

+                    // Add any indent

+                    for (pad = 0; pad < indent; pad++) {

+                        buf.append("  ");

+                    }

+                    // Add the tag or data

+                    buf.append(part);

+                    // If this is a start tag then increase indent

+                    if (part.startsWith("<") &&

+                        !part.startsWith("</") &&

+                        !part.endsWith("/>")) {

+                        indent++;

+                        // Check for special <tag>data</tag> case

+                        if ((index + 2) < list.length) {

+                            part = (String) list[index+2];

+                            if (part.startsWith("</")) {

+                                part = (String) list[index+1];

+                                if (!part.startsWith("<")) {

+                                    buf.append(part);

+                                    part = (String) list[index+2];

+                                    buf.append(part);

+                                    index = index + 2;

+                                    indent--;

+                                }

+                            }

+                        }

+                    }

+                }

+                index++;

+            }

+            formatted = new String(buf);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/servlet/SOAPMonitorConstants.java b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/servlet/SOAPMonitorConstants.java
new file mode 100644
index 0000000..759bb97
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/servlet/SOAPMonitorConstants.java
@@ -0,0 +1,40 @@
+/*

+ * 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.axis2.soapmonitor.servlet;

+

+/**

+ * SOAP Monitor Service constants

+ */

+

+public class SOAPMonitorConstants {

+

+  /**

+   * SOAP message types

+   */

+  public static final int SOAP_MONITOR_REQUEST  = 0;

+  public static final int SOAP_MONITOR_RESPONSE = 1;

+

+  /** 

+   * Servlet initialization parameter names

+   */

+  public static final String SOAP_MONITOR_PORT = "SOAPMonitorPort";

+

+  /**

+   * Unique SOAP monitor id tag

+   */

+  public static final String SOAP_MONITOR_ID = "SOAPMonitorId";

+}

diff --git a/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
new file mode 100644
index 0000000..59b626a
--- /dev/null
+++ b/rampart_1_1/modules/soapmonitor/src/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
@@ -0,0 +1,299 @@
+/*

+ * 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.axis2.soapmonitor.servlet;

+

+import javax.servlet.ServletConfig;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+import java.io.IOException;

+import java.io.ObjectInputStream;

+import java.io.ObjectOutputStream;

+import java.net.ServerSocket;

+import java.net.Socket;

+import java.util.Enumeration;

+import java.util.Vector;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+

+/**

+ * This is a SOAP Monitor Service class. 

+ *

+ * During the HTTP server startup, the servlet init method 

+ * is invoked.  This allows the code to open a server 

+ * socket that will be used to communicate with running 

+ * applets.

+ *

+ * When an HTTP GET request is received, the servlet 

+ * dynamically produces an HTML document to load the SOAP 

+ * monitor applet and supply the port number being used by

+ * the server socket (so the applet will know how to 

+ * connect back to the server).

+ *

+ * Each time a socket connection is established, a new 

+ * thread is created to handle communications from the 

+ * applet.

+ *

+ * The publishMethod routine is invoked by the SOAP monitor

+ * handler when a SOAP message request or response is 

+ * detected.  The information about the SOAP message is 

+ * then forwared to all current socket connections for 

+ * display by the applet.

+ */

+

+public class SOAPMonitorService extends HttpServlet {

+

+  /**

+   * Private data 

+   */

+  private static ServerSocket server_socket = null;

+  private static Vector       connections = null;

+

+  private static final Log log = LogFactory.getLog(SOAPMonitorService.class);

+

+  /**

+   * Constructor

+   */

+  public SOAPMonitorService() {

+  }

+

+

+  /**

+   * Publish a SOAP message to listeners

+   */

+  public static void publishMessage(Long id, 

+                                    Integer type, 

+                                    String target,

+                                    String soap) {

+    if (connections != null) {

+      Enumeration e = connections.elements();

+      while (e.hasMoreElements()) {

+        ConnectionThread ct = (ConnectionThread) e.nextElement();

+        ct.publishMessage(id,type,target,soap);

+      }

+    }

+  }

+

+  /**

+   * Servlet initialiation

+   */

+  public void init() throws ServletException {

+    if (connections == null) {

+      // Create vector to hold connection information

+      connections = new Vector();

+    }

+    if (server_socket == null) {

+      // Get the server socket port from the init params

+      ServletConfig config = super.getServletConfig();

+      String port = config.getInitParameter(SOAPMonitorConstants.SOAP_MONITOR_PORT);

+      if (port == null) {

+        // No port defined, so let the system assign a port

+        port = "0";

+      } 

+      try {

+        // Try to open the server socket

+        server_socket = new ServerSocket(Integer.parseInt(port));

+      } catch (Exception ex) {

+        // Let someone know we could not open the socket

+        log.error("Unable to open server socket using port: " + port);

+        log.error(ex.getMessage(), ex);

+        server_socket = null;

+      }

+      if (server_socket != null) {

+        // Start the server socket thread

+        new Thread(new ServerSocketThread()).start();

+      }

+    }

+  }

+

+  /**

+   * Servlet termination

+   */

+  public void destroy() {

+    // End all connection threads

+    Enumeration e = connections.elements();

+    while (e.hasMoreElements()) {

+      ConnectionThread ct = (ConnectionThread) e.nextElement();

+      ct.close();

+    }

+    // End main server socket thread

+    if (server_socket != null) {

+      try {

+        server_socket.close();

+      } catch (Exception x) {}

+      server_socket = null;

+    }

+  }

+

+  /**

+   * HTTP GET request

+   */

+  public void doGet(HttpServletRequest request, HttpServletResponse response)

+              throws IOException, ServletException

+  {

+   // Create HTML to load the SOAP monitor applet

+   int port = 0;

+   if (server_socket != null) {

+     port = server_socket.getLocalPort();

+     log.debug("Sending param to SOAP monitor applet as port: " + port);

+   }

+   response.setContentType("text/html");

+   response.getWriter().println("<html>");

+   response.getWriter().println("<head>");

+   response.getWriter().println("<title>SOAP Monitor</title>");

+   response.getWriter().println("</head>");

+   response.getWriter().println("<body>");

+   response.getWriter().println("<object classid=\"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93\" width=100% height=100% codebase=\"http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0\">");

+   response.getWriter().println("<param name=code value=SOAPMonitorApplet.class>");

+   response.getWriter().println("<param name=\"type\" value=\"application/x-java-applet;version=1.3\">");

+   response.getWriter().println("<param name=\"scriptable\" value=\"false\">");

+   response.getWriter().println("<param name=\"port\" value=\""+port+"\">");

+   response.getWriter().println("<comment>");

+   response.getWriter().println("<embed type=\"application/x-java-applet;version=1.3\" code=SOAPMonitorApplet.class width=100% height=100% port=\""+port+"\" scriptable=false pluginspage=\"http://java.sun.com/products/plugin/1.3/plugin-install.html\">"); 

+   response.getWriter().println("<noembed>"); 

+   response.getWriter().println("</comment>"); 

+   response.getWriter().println("</noembed>"); 

+   response.getWriter().println("</embed>"); 

+   response.getWriter().println("</object>");

+   response.getWriter().println("</body>");

+   response.getWriter().println("</html>");

+  }

+

+  /**

+   * Thread class for handling the server socket

+   */

+  class ServerSocketThread implements Runnable {

+

+    /**

+     * Thread for handling the server socket

+     */

+    public void run() {

+      // Wait for socket connections

+      while (server_socket != null) {

+        try {

+          Socket socket = server_socket.accept();

+          new Thread(new ConnectionThread(socket)).start();

+        } catch (IOException ioe) {}

+      }

+    }

+  }

+

+  /**

+   * Thread class for handling socket connections

+   */

+  class ConnectionThread implements Runnable {

+

+    private Socket             socket = null;

+    private ObjectInputStream  in = null;

+    private ObjectOutputStream out = null;

+    private boolean            closed = false;

+

+    /**

+     * Constructor

+     */

+    public ConnectionThread(Socket s) {

+      socket = s;

+      try {

+        // Use object streams for input and output

+        //

+        // NOTE: We need to be sure to create and flush the 

+        // output stream first because the ObjectOutputStream

+        // constructor writes a header to the stream that is

+        // needed by the ObjectInputStream on the other end

+        out = new ObjectOutputStream(socket.getOutputStream());

+        out.flush();

+        in = new ObjectInputStream(socket.getInputStream());

+      } catch (Exception e) {}

+      // Add the connection to our list

+      synchronized (connections) {

+        connections.addElement(this);

+      }

+    }

+

+    /**

+     * Close the socket connection

+     */

+    public void close() {

+      closed = true;

+      try {

+        socket.close();

+      } catch (IOException ioe) {}

+    }

+

+    /**

+     * Thread to handle the socket connection

+     */

+    public void run() {

+      try {

+        while (!closed) {

+          Object o = in.readObject();

+        }

+      } catch (Exception e) {}

+      // Cleanup connection list

+      synchronized (connections) {

+        connections.removeElement(this);

+      }

+      // Cleanup I/O streams 

+      if (out != null) {

+        try {

+          out.close();

+        } catch (IOException ioe) {}

+        out = null;

+      }

+      if (in != null) {

+        try {

+          in.close();

+        } catch (IOException ioe) {}

+        in = null;

+      }

+      // Be sure the socket is closed

+      close();

+    }

+

+    /**

+     * Publish SOAP message information

+     */

+    public synchronized void publishMessage(Long id, 

+                               Integer message_type, 

+                               String target, 

+                               String soap) {

+      // If we have a valid output stream, then

+      // send the data to the applet

+      if (out != null) {

+        try {

+          switch (message_type.intValue()) {

+            case SOAPMonitorConstants.SOAP_MONITOR_REQUEST:

+              out.writeObject(message_type);

+              out.writeObject(id);

+              out.writeObject(target);

+              out.writeObject(soap);

+              out.flush();

+              break;

+            case SOAPMonitorConstants.SOAP_MONITOR_RESPONSE:

+              out.writeObject(message_type);

+              out.writeObject(id);

+              out.writeObject(soap);

+              out.flush();

+              break;

+          }

+        } catch (Exception e) {}

+      }

+    }

+  }

+}

+

diff --git a/rampart_1_1/modules/spring/maven.xml b/rampart_1_1/modules/spring/maven.xml
new file mode 100644
index 0000000..a6968ac
--- /dev/null
+++ b/rampart_1_1/modules/spring/maven.xml
@@ -0,0 +1,17 @@
+<?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:u="jelly:util"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+</project>
diff --git a/rampart_1_1/modules/spring/project.properties b/rampart_1_1/modules/spring/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/spring/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/spring/project.xml b/rampart_1_1/modules/spring/project.xml
new file mode 100644
index 0000000..7e31711
--- /dev/null
+++ b/rampart_1_1/modules/spring/project.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <name>Apache Axis 2.0 - spring</name>

+    <id>axis2-spring</id>

+    <groupId>org.apache.axis2</groupId>

+    <description>spring for Axis 2.0</description>

+

+    <dependencies>

+

+       <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-codegen</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-adb</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <!-- external JARs -->

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+	  <!-- added for the QName -->	

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.springframework</groupId>

+            <artifactId>spring-core</artifactId>

+            <version>${spring.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.springframework</groupId>

+            <artifactId>spring-beans</artifactId>

+            <version>${spring.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.springframework</groupId>

+            <artifactId>spring-context</artifactId>

+            <version>${spring.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.springframework</groupId>

+            <artifactId>spring-web</artifactId>

+            <version>${spring.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+          <groupId>servletapi</groupId>

+          <artifactId>servletapi</artifactId>

+          <version>${servletapi.version}</version>

+          <properties>

+            <module>true</module>

+          </properties>

+        </dependency>

+

+    </dependencies>

+    <build/>

+    <reports/>

+</project>

diff --git a/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/ApplicationContextHolder.java b/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/ApplicationContextHolder.java
new file mode 100644
index 0000000..faac82d
--- /dev/null
+++ b/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/ApplicationContextHolder.java
@@ -0,0 +1,45 @@
+/*
+* Copyright 2004,2005 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.axis2.extensions.spring.receivers;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+/** Implementation of a Spring interface who is configured in Spring's 
+ *  applicationContext.xml or some other Spring type of way. This class
+ *  and the spring bean needed to wire it could be used as an alternative 
+ *  to getting the ApplicationContext from the ServletContext. 
+ */
+public class ApplicationContextHolder implements ApplicationContextAware {
+
+    private static ApplicationContext appCtx;
+
+    public ApplicationContextHolder() {}
+
+    /** Spring supplied interface method for injecting app context. */
+    public void setApplicationContext(ApplicationContext applicationContext) 
+        throws BeansException {
+        appCtx = applicationContext;
+    }
+
+    /** Access to spring wired beans. */    
+    public static ApplicationContext getContext() {
+        return appCtx;
+    }
+
+}
diff --git a/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringAppContextAwareObjectSupplier.java b/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringAppContextAwareObjectSupplier.java
new file mode 100644
index 0000000..4a3acb1
--- /dev/null
+++ b/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringAppContextAwareObjectSupplier.java
@@ -0,0 +1,65 @@
+/*

+ * Copyright 2004,2005 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.axis2.extensions.spring.receivers;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.ServiceObjectSupplier;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.i18n.Messages;

+import org.springframework.context.ApplicationContext;

+

+public class SpringAppContextAwareObjectSupplier implements ServiceObjectSupplier {

+

+    public static final String SERVICE_SPRING_BEANNAME = "SpringBeanName";

+

+    /**

+     * Method getServiceObject that is Spring aware via Spring interface

+     * ApplicationContextAware.

+     *

+     * @param axisService

+     * @return Returns Object.

+     * @throws AxisFault

+     */

+

+    public Object getServiceObject(AxisService axisService) throws AxisFault {

+        try {

+            // Name of spring aware bean to be injected, taken from services.xml

+            // via 'SERVICE_SPRING_BEANNAME ' . The Bean and its properties are pre-configured

+            // as normally done in a spring type of way and subsequently loaded by Spring.

+            // Axis2 just assumes that the bean is configured and is in the classloader.

+            Parameter implBeanParam = axisService.getParameter(SERVICE_SPRING_BEANNAME);

+            String beanName = ((String) implBeanParam.getValue()).trim();

+            if (beanName != null) {

+                // ApplicationContextHolder implements Spring interface ApplicationContextAware

+                ApplicationContext aCtx = ApplicationContextHolder.getContext();

+                if (aCtx == null) {

+                    throw new Exception("Axis2 Can't find Spring's ApplicationContext");

+                } else if (aCtx.getBean(beanName) == null) {

+                    throw new Exception("Axis2 Can't find Spring Bean: " + beanName);

+                }

+                return aCtx.getBean(beanName);

+            } else {

+                throw new AxisFault(

+                        Messages.getMessage("paramIsNotSpecified", "SERVICE_SPRING_BEANNAME"));

+            }

+        } catch (Exception e) {

+            throw AxisFault.makeFault(e);

+        }

+    }

+}

+

diff --git a/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringServletContextObjectSupplier.java b/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringServletContextObjectSupplier.java
new file mode 100644
index 0000000..ed4fde2
--- /dev/null
+++ b/rampart_1_1/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringServletContextObjectSupplier.java
@@ -0,0 +1,88 @@
+/*

+ * Copyright 2004,2005 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.axis2.extensions.spring.receivers;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.ServiceObjectSupplier;

+import org.apache.axis2.description.AxisService;

+import org.apache.axis2.description.Parameter;

+import org.apache.axis2.i18n.Messages;

+import org.apache.axis2.transport.http.HTTPConstants;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

+import org.springframework.context.ApplicationContext;

+import org.springframework.web.context.support.WebApplicationContextUtils;

+

+import javax.servlet.ServletConfig;

+import javax.servlet.ServletContext;

+

+public class SpringServletContextObjectSupplier implements ServiceObjectSupplier {

+

+    private static Log log = LogFactory.getLog(SpringServletContextObjectSupplier.class);

+

+    public static final String SERVICE_SPRING_BEANNAME = "SpringBeanName";

+

+    /**

+     * Method getServiceObject that is Spring aware via ServletContext.

+     *

+     * @param axisService

+     * @return Returns Object.

+     * @throws AxisFault

+     */

+    public Object getServiceObject(AxisService axisService) throws AxisFault {

+        try {

+            // Name of spring aware bean to be injected, taken from services.xml

+            // via 'SERVICE_SPRING_BEANNAME ' . The Bean and its properties are pre-configured

+            // as normally done in a spring type of way and subsequently loaded by Spring.

+            // Axis2 just assumes that the bean is configured and is in the classloader.

+            Parameter implBeanParam = axisService.getParameter(SERVICE_SPRING_BEANNAME);

+            String beanName = ((String) implBeanParam.getValue()).trim();

+            if (beanName != null) {

+                Parameter servletConfigParam = axisService.getAxisConfiguration()

+                        .getParameter(HTTPConstants.HTTP_SERVLETCONFIG);

+

+                if (servletConfigParam == null) {

+                    throw new Exception("Axis2 Can't find ServletConfigParameter");

+                }

+                Object obj = servletConfigParam.getValue();

+                ServletContext servletContext;

+                if (obj instanceof ServletConfig) {

+                    ServletConfig servletConfig = (ServletConfig)obj;

+                    servletContext = servletConfig.getServletContext();

+                } else {

+                    throw new Exception("Axis2 Can't find ServletConfig");

+                }

+                ApplicationContext aCtx =

+                        WebApplicationContextUtils.getWebApplicationContext(servletContext);

+                if (aCtx == null) {

+                    log.warn("Axis2 Can't find Spring's ApplicationContext");

+                    return null;

+                } else if (aCtx.getBean(beanName) == null) {

+                    throw new Exception("Axis2 Can't find Spring Bean: " + beanName);

+                }

+                return aCtx.getBean(beanName);

+            } else {

+                throw new AxisFault(

+                        Messages.getMessage("paramIsNotSpecified", "SERVICE_SPRING_BEANNAME"));

+            }

+        } catch (Exception e) {

+            throw AxisFault.makeFault(e);

+        }

+

+    }

+}

+

diff --git a/rampart_1_1/modules/spring/test-resources/applicationContext.xml b/rampart_1_1/modules/spring/test-resources/applicationContext.xml
new file mode 100644
index 0000000..c759552
--- /dev/null
+++ b/rampart_1_1/modules/spring/test-resources/applicationContext.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans>
+  <!-- Used to test a non-servlet container environment - gives spring to give a hook to axis2 -->
+  <bean id="applicationContext" 
+    class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />
+
+  <!-- Axis2 Web Service, but to Spring, its just another bean that has dependencies -->
+  <bean id="springAwareService" class="org.apache.axis2.spring.SpringAwareService">
+    <property name="myBean" ref="myBean"/>
+  </bean>
+
+  <!-- just another bean with a wired implementation, that's injected by Spring 
+          into the Web Service -->
+   <bean id="myBean" class="org.apache.axis2.spring.MyBeanImpl">
+     <property name="val" value="Spring, emerge thyself" />
+  </bean>
+</beans>
diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/pom.xml b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/pom.xml
new file mode 100644
index 0000000..b0b5fbd
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/pom.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <parent>

+    <groupId>org.apache.axis2.maven2</groupId>

+    <artifactId>axis2-maven-tools</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+    <relativePath>../pom.xml</relativePath>

+  </parent>

+  <modelVersion>4.0.0</modelVersion>

+  <artifactId>axis2-aar-maven-plugin</artifactId>

+  <packaging>maven-plugin</packaging>

+  <name>Axis 2 Aar Maven Plugin</name>

+

+  <description>

+    A Maven 2 plugin for creating Axis 2 service archives (aar files)

+  </description>

+

+  <dependencies>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-plugin-api</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-project</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-archiver</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.codehaus.plexus</groupId>

+      <artifactId>plexus-utils</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-artifact</artifactId>

+    </dependency>

+  </dependencies>

+

+  <developers>

+    <developer>

+      <id>jochen</id>

+      <name>Jochen Wiedmann</name>

+      <email>jochen.wiedmann@gmail.com</email>

+    </developer>

+  </developers>

+

+  <contributors>

+    <contributor>

+      <name>John Pfeifer</name>

+      <email>john.pfeifer@hnpsolutions.com</email>

+    </contributor>

+  </contributors>

+

+  <reporting>

+    <plugins>

+      <plugin>

+        <groupId>org.apache.maven.plugins</groupId>

+        <artifactId>maven-javadoc-plugin</artifactId>

+      </plugin>

+      <plugin>

+        <groupId>org.apache.maven.plugins</groupId>

+        <artifactId>maven-changes-plugin</artifactId>

+        <reportSets>

+          <reportSet>

+            <reports>

+              <report>changes-report</report>

+            </reports>

+          </reportSet>

+        </reportSets>

+      </plugin>

+    </plugins>

+  </reporting>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/changes/changes.xml b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/changes/changes.xml
new file mode 100644
index 0000000..e188ea4
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/changes/changes.xml
@@ -0,0 +1,18 @@
+<document>

+  <properties>

+    <title>Changes in the Axis2 AAR plugin for Maven 2</title>

+  </properties>

+  <body>

+    <release version="1.1-SNAPSHOT" date="Not yet released">

+      <action dev="jochen" type="fix" issue="AXIS2-1140" due-to="John Pfeifer"

+          due-to-email="">

+        Dependencies haven't been added to the aar files lib directory.

+      </action>

+    </release>

+    <release version="1.0-SNAPSHOT" date="Not yet released">

+      <action dev="jochen" type="add">

+        Initial version. Never actually published.

+      </action>

+    </release>

+  </body>

+</document>

diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarExplodedMojo.java b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarExplodedMojo.java
new file mode 100644
index 0000000..c9e9487
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarExplodedMojo.java
@@ -0,0 +1,36 @@
+package org.apache.axis2.maven2.aar;
+
+/*
+ * Copyright 2006 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 org.apache.maven.plugin.MojoExecutionException;
+
+/**
+ * Generate the exploded aar
+ *
+ * @goal exploded
+ * @phase package
+ * @requiresDependencyResolution runtime
+ */
+public class AarExplodedMojo
+    extends AbstractAarMojo
+{
+    public void execute() 
+      throws MojoExecutionException
+    {
+        buildExplodedAar();
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarInPlaceMojo.java b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarInPlaceMojo.java
new file mode 100644
index 0000000..421998d
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarInPlaceMojo.java
@@ -0,0 +1,38 @@
+package org.apache.axis2.maven2.aar;
+
+/*
+ * Copyright 2006 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 org.apache.maven.plugin.MojoExecutionException;
+
+/**
+ * Generates aar in the source directory
+ *
+ * @goal inplace
+ * @requiresDependencyResolution runtime
+ */
+public class AarInPlaceMojo 
+  extends AbstractAarMojo
+{
+
+  public void execute()
+    throws MojoExecutionException
+  {
+
+    getLog().debug("Generating aar in source directory... " + aarDirectory);
+    buildExplodedAar();
+  }
+}
diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarMojo.java b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarMojo.java
new file mode 100644
index 0000000..41d62f4
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AarMojo.java
@@ -0,0 +1,161 @@
+package org.apache.axis2.maven2.aar;
+
+/*
+ * Copyright 2006 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 java.io.File;
+import java.io.IOException;
+
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.archiver.MavenArchiver;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProjectHelper;
+import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.jar.JarArchiver;
+import org.codehaus.plexus.archiver.jar.ManifestException;
+
+/**
+ * Build a aar.
+ * 
+ * @goal aar
+ * @phase package
+ * @requiresDependencyResolution runtime
+ */
+public class AarMojo extends AbstractAarMojo
+{
+    /**
+     * The directory for the generated aar.
+     * 
+     * @parameter expression="${project.build.directory}"
+     * @required
+     */
+    private String outputDirectory;
+
+    /**
+     * The name of the generated aar.
+     * 
+     * @parameter expression="${project.build.finalName}"
+     * @required
+     */
+    private String aarName;
+
+    /**
+     * The Jar archiver.
+     * 
+     * @parameter expression="${component.org.codehaus.plexus.archiver.Archiver#jar}"
+     * @required
+     */
+    private JarArchiver jarArchiver;
+
+    /**
+     * The maven archive configuration to use.
+     * 
+     * @parameter
+     */
+    private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
+
+    /**
+     * Classifier to add to the artifact generated. If given, the artifact will be an attachment instead.
+     * 
+     * @parameter
+     */
+    private String classifier;
+
+    /**
+     * Whether this is the main artifact being built. Set to <code>false</code> if you don't want to install or deploy
+     * it to the local repository instead of the default one in an execution.
+     * 
+     * @parameter expression="${primaryArtifact}" default-value="true"
+     */
+    private boolean primaryArtifact;
+
+    /**
+     * @component
+     */
+    private MavenProjectHelper projectHelper;
+
+    /**
+     * Executes the AarMojo on the current project.
+     * 
+     * @throws MojoExecutionException
+     *             if an error occured while building the webapp
+     */
+    public void execute() throws MojoExecutionException
+    {
+
+        File aarFile = new File( outputDirectory, aarName + ".aar" );
+
+        try
+        {
+            performPackaging( aarFile );
+        }
+        catch ( Exception e )
+        {
+            throw new MojoExecutionException( "Error assembling aar", e );
+        }
+    }
+
+    /**
+     * Generates the aar.
+     * 
+     * @param aarFile
+     *            the target aar file
+     * @throws IOException
+     * @throws ArchiverException
+     * @throws ManifestException
+     * @throws DependencyResolutionRequiredException
+     */
+    private void performPackaging( File aarFile )
+        throws IOException, ArchiverException, ManifestException, DependencyResolutionRequiredException,
+        MojoExecutionException
+    {
+
+        buildExplodedAar( );
+
+        // generate aar file
+        getLog().info( "Generating aar " + aarFile.getAbsolutePath() );
+        MavenArchiver archiver = new MavenArchiver();
+        archiver.setArchiver( jarArchiver );
+        archiver.setOutputFile( aarFile );
+        jarArchiver.addDirectory( aarDirectory );
+
+        // create archive
+        archiver.createArchive( project, archive );
+
+        if ( classifier != null )
+        {
+            projectHelper.attachArtifact( project, "aar", classifier, aarFile );
+        }
+        else
+        {
+            Artifact artifact = project.getArtifact();
+            if ( primaryArtifact )
+            {
+                artifact.setFile( aarFile );
+            }
+            else if ( artifact.getFile() == null || artifact.getFile().isDirectory() )
+            {
+                artifact.setFile( aarFile );
+            }
+            else
+            {
+                projectHelper.attachArtifact( project, "aar", aarFile );
+            }
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AbstractAarMojo.java b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AbstractAarMojo.java
new file mode 100644
index 0000000..b0c39cd
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/AbstractAarMojo.java
@@ -0,0 +1,324 @@
+package org.apache.axis2.maven2.aar;
+
+/*
+ * Copyright 2006 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 java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.DirectoryScanner;
+import org.codehaus.plexus.util.FileUtils;
+
+
+
+/**
+ * Abstract base class of all the mojos in the axis2-aar-maven-plugin.
+ */
+public abstract class AbstractAarMojo
+    extends AbstractMojo
+{
+
+    /**
+     * The projects base directory.
+     *
+     * @parameter expression="${project.basedir}"
+     * @required
+     * @readonly
+     */
+    protected File baseDir;
+    
+    /**
+     * The maven project.
+     *
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    protected MavenProject project;
+
+    /**
+     * The directory containing generated classes.
+     *
+     * @parameter expression="${project.build.outputDirectory}"
+     * @required
+     */
+    private File classesDirectory;
+
+    /**
+     * The directory where the aar is built.
+     *
+     * @parameter expression="${project.build.directory}/aar"
+     * @required
+     */
+    protected File aarDirectory;
+
+    /**
+     * The location of the services.xml file.  If it is present in the META-INF
+     * directory in src/main/resources with that name then it will automatically be 
+     * included. Otherwise this parameter must be set.
+     *
+     * @parameter 
+     */
+    private File servicesXmlFile;
+
+    /**
+     * The location of the WSDL file, if any. By default, no WSDL file is added
+     * and it is assumed, that Axis 2 will automatically generate a WSDL file.
+     *
+     * @parameter 
+     */
+    private File wsdlFile;
+
+    /**
+     * Name, to which the wsdl file shall be mapped. By default, the name will
+     * be computed from the files path by removing the directory.
+     * 
+     * @parameter default-value="service.wsdl"
+     */
+    private String wsdlFileName;
+
+    /**
+     * Additional file sets, which are being added to the archive.
+     *
+     * @parameter
+     */
+    private FileSet[] fileSets;
+
+    /**
+     * Builds the exploded AAR file.
+     * @throws MojoExecutionException
+     */
+    protected void buildExplodedAar( )
+        throws MojoExecutionException
+    {
+        getLog().debug( "Exploding aar..." );
+
+        aarDirectory.mkdirs();
+        getLog().debug( "Assembling aar " + project.getArtifactId() + " in " + aarDirectory );
+
+        try
+        {
+            final File metaInfDir = new File( aarDirectory, "META-INF" );
+            final File libDir = new File(aarDirectory, "lib");

+            final File servicesFileTarget = new File( metaInfDir, "services.xml" );
+            boolean existsBeforeCopyingClasses = servicesFileTarget.exists();
+
+            String wsdlName = wsdlFileName;
+            if ( wsdlName == null  &&  wsdlFile != null )
+            {
+                wsdlName = wsdlFile.getName();
+            }
+            File wsdlFileTarget = null;
+            if ( wsdlFile != null )
+            {
+                wsdlFileTarget = new File( metaInfDir, wsdlFileName );
+            }
+            boolean wsdlExistsBeforeCopyingClasses = wsdlFileTarget == null ? false : wsdlFileTarget.exists();
+
+            if ( classesDirectory.exists() && ( !classesDirectory.equals( aarDirectory ) ) )
+            {
+                FileUtils.copyDirectoryStructure( classesDirectory, aarDirectory );
+            }
+
+            if ( fileSets != null )
+            {
+                for ( int i = 0;  i < fileSets.length;   i++ )
+                {
+                    FileSet fileSet = fileSets[i];
+                    copyFileSet( fileSet, aarDirectory );
+                }
+            }
+            
+            copyMetaInfFile( servicesXmlFile, servicesFileTarget, existsBeforeCopyingClasses, "services.xml file" );
+            copyMetaInfFile( wsdlFile, wsdlFileTarget, wsdlExistsBeforeCopyingClasses, "WSDL file" );
+

+            Set artifacts = project.getArtifacts();

+

+            List duplicates = findDuplicates( artifacts );

+

+            for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )

+            {

+            	Artifact artifact = (Artifact) iter.next();

+            	String targetFileName = getDefaultFinalName( artifact );

+

+            	getLog().debug( "Processing: " + targetFileName );

+

+            	if ( duplicates.contains( targetFileName ) )

+            	{

+            		getLog().debug( "Duplicate found: " + targetFileName );

+            		targetFileName = artifact.getGroupId() + "-" + targetFileName;

+            		getLog().debug( "Renamed to: " + targetFileName );

+            	}
+

+            	// TODO: utilise appropriate methods from project builder

+            	ScopeArtifactFilter filter = new ScopeArtifactFilter( Artifact.SCOPE_RUNTIME );

+            	if ( !artifact.isOptional() && filter.include( artifact ) )

+            	{

+            		String type = artifact.getType();

+            		if ( "jar".equals( type ) )

+            		{

+            			copyFileIfModified( artifact.getFile(), new File( libDir, targetFileName ) );

+            		}

+            	}

+            }

+        }

+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Could not explode aar...", e );
+        }
+    }
+
+    /**

+     * Searches a set of artifacts for duplicate filenames and returns a list of duplicates.

+     *

+     * @param artifacts set of artifacts

+     * @return List of duplicated artifacts

+     */

+    private List findDuplicates( Set artifacts )

+    {

+        List duplicates = new ArrayList();

+        List identifiers = new ArrayList();

+        for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )

+        {

+            Artifact artifact = (Artifact) iter.next();

+            String candidate = getDefaultFinalName( artifact );

+            if ( identifiers.contains( candidate ) )

+            {

+                duplicates.add( candidate );

+            }

+            else

+            {

+                identifiers.add( candidate );

+            }

+        }

+        return duplicates;

+    }

+
+    /**

+     * Converts the filename of an artifact to artifactId-version.type format.

+     *

+     * @param artifact

+     * @return converted filename of the artifact

+     */

+    private String getDefaultFinalName( Artifact artifact )

+    {

+        return artifact.getArtifactId() + "-" + artifact.getVersion() + "." +

+            artifact.getArtifactHandler().getExtension();

+    }

+

+    /**

+     * Copy file from source to destination only if source timestamp is later than the destination timestamp.

+     * The directories up to <code>destination</code> will be created if they don't already exist.

+     * <code>destination</code> will be overwritten if it already exists.

+     *

+     * @param source      An existing non-directory <code>File</code> to copy bytes from.

+     * @param destination A non-directory <code>File</code> to write bytes to (possibly

+     *                    overwriting).

+     * @throws IOException                   if <code>source</code> does not exist, <code>destination</code> cannot be

+     *                                       written to, or an IO error occurs during copying.

+     * @throws java.io.FileNotFoundException if <code>destination</code> is a directory

+     *                                       <p/>

+     *                                       TO DO: Remove this method when Maven moves to plexus-utils version 1.4

+     */

+    private void copyFileIfModified( File source, File destination )

+        throws IOException

+    {

+        // TO DO: Remove this method and use the method in WarFileUtils when Maven 2 changes

+        // to plexus-utils 1.2.

+        if ( destination.lastModified() < source.lastModified() )

+        {

+            FileUtils.copyFile( source.getCanonicalFile(), destination );

+            // preserve timestamp

+            destination.setLastModified( source.lastModified() );

+        }

+    }

+
+    private void copyFileSet( FileSet fileSet, File targetDirectory )
+        throws IOException
+    {
+        File dir = fileSet.getDirectory();
+        if ( dir == null )
+        {
+            dir = baseDir;
+        }
+        File targetDir = targetDirectory;
+        if ( fileSet.getOutputDirectory() != null )
+        {
+            targetDir = new File( targetDir, fileSet.getOutputDirectory() );
+        }
+        if ( targetDir.equals( dir ) )
+        {
+            return;
+        }
+
+        DirectoryScanner ds = new DirectoryScanner();
+        ds.setBasedir( dir );
+        if ( !fileSet.isSkipDefaultExcludes() )
+        {
+            ds.addDefaultExcludes();
+        }
+        final String[] excludes = fileSet.getExcludes();
+        if ( excludes != null )
+        {
+            ds.setExcludes( excludes );
+        }
+        final String[] includes = fileSet.getIncludes();
+        if ( includes != null )
+        {
+            ds.setIncludes( includes );
+        }
+        ds.scan();
+        String[] files = ds.getIncludedFiles();
+        for ( int i = 0;  i < files.length;  i++ )
+        {
+            File sourceFile = new File( dir, files[i] );
+            File targetFile = new File( targetDir, files[i] );
+            FileUtils.copyFile( sourceFile, targetFile );
+        }
+    }
+
+
+    private void copyMetaInfFile( final File pSource, final File pTarget,
+                                  final boolean pExistsBeforeCopying,
+                                  final String pDescription )
+        throws MojoExecutionException, IOException
+    {
+        if ( pSource != null  &&  pTarget != null )
+        {
+            if ( !pSource.exists() )
+            {
+                throw new MojoExecutionException( "The configured " + pDescription + " could not be found at "
+                                                  + pSource );
+            }
+
+            if ( !pExistsBeforeCopying  &&  pTarget.exists() )
+            {
+                getLog().warn( "The configured " + pDescription + " overwrites another file from the classpath." );
+            }
+
+            FileUtils.copyFile( pSource, pTarget );
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/FileSet.java b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/FileSet.java
new file mode 100644
index 0000000..9eeb264
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/java/org/apache/axis2/maven2/aar/FileSet.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2006 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.axis2.maven2.aar;
+
+import java.io.File;
+
+
+/**
+ * A FileSet defines additional files, which are being added to the
+ * Axis application archive. The objects structure follows the
+ * FileSet object from the maven-assembly-plugin, see the
+ * <a href="http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html">plugin documentation</a>
+ * for details.
+ */
+public class FileSet
+{
+    private File directory;
+    private String outputDirectory;
+    private String[] includes, excludes;
+    private boolean skipDefaultExcludes;
+
+    /**
+     * Returns the file sets base directory. May be omitted, in which
+     * case the projects base directory is assumed.
+     */
+    public File getDirectory()
+    {
+        return directory;
+    }
+
+    /**
+     * Sets the file sets base directory. May be omitted, in which
+     * case the projects base directory is assumed.
+     */
+    public void setDirectory( File directory )
+    {
+        this.directory = directory;
+    }
+
+    /**
+     * Returns the file sets exclusion list.
+     */
+    public String[] getExcludes()
+    {
+        return excludes;
+    }
+
+    /**
+     * Sets the file sets exclusion list.
+     */
+    public void setExcludes( String[] excludes )
+    {
+        this.excludes = excludes;
+    }
+
+    /**
+     * Returns the file sets inclusion list.
+     */
+    public String[] getIncludes()
+    {
+        return includes;
+    }
+
+    /**
+     * Sets the file sets inclusion list.
+     */
+    public void setIncludes( String[] includes )
+    {
+        this.includes = includes;
+    }
+
+    /**
+     * Sets a prefix, which the included files should have
+     * when being added to the Axis application archive.
+     */
+    public String getOutputDirectory()
+    {
+        return outputDirectory;
+    }
+
+    /**
+     * Returns a prefix, which the included files should have
+     * when being added to the Axis application archive.
+     */
+    public void setOutputDirectory( String outputDirectory )
+    {
+        this.outputDirectory = outputDirectory;
+    }
+
+    /**
+     * Returns, whether the default excludes should be used. Defaults
+     * to true.
+     */
+    public boolean isSkipDefaultExcludes()
+    {
+        return skipDefaultExcludes;
+    }
+
+    /**
+     * Sets, whether the default excludes should be used. Defaults to
+     * true.
+     */
+    public void setSkipDefaultExcludes( boolean skipDefaultExcludes )
+    {
+        this.skipDefaultExcludes = skipDefaultExcludes;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/resources/META-INF/plexus/components.xml b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/resources/META-INF/plexus/components.xml
new file mode 100644
index 0000000..30a0e48
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/main/resources/META-INF/plexus/components.xml
@@ -0,0 +1,34 @@
+<component-set>

+  <components>

+    <component>

+      <role>org.apache.maven.artifact.handler.ArtifactHandler</role>

+      <role-hint>aar</role-hint>

+      <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>

+      <configuration>

+        <classifier></classifier>

+        <extension>aar</extension>

+        <type>aar</type>

+        <packaging>jar</packaging>

+        <language>java</language>

+        <addedToClasspath>false</addedToClasspath>

+      </configuration>

+    </component>

+    <component>

+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>

+      <role-hint>aar</role-hint>

+      <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>

+      <configuration>

+        <phases>

+          <process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>

+          <compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>

+          <process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>

+          <test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>

+          <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>

+          <package>org.apache.axis2.maven2:axis2-aar-maven-plugin:aar</package>

+          <install>org.apache.maven.plugins:maven-install-plugin:install</install>

+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>

+        </phases>

+      </configuration>

+    </component>

+  </components>

+</component-set>

diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/configuration.apt b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/configuration.apt
new file mode 100644
index 0000000..cf4c5ed
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/configuration.apt
@@ -0,0 +1,105 @@
+Configuration

+

+  All Aar plugin goals takes the following configuration parameters as input:

+

+*------------------+----------------------------------+------------------------------------------------+

+| Parameter name   | Default value                    | Description                                    |

+*------------------+----------------------------------+------------------------------------------------+

+| aarDirectory     | ${project.build.directory}/aar   | Directory where the aar file is built.         |

+*------------------+----------------------------------+------------------------------------------------+

+| classesDirectory | ${project.build.outputDirectory} | Directory with compiled classes and resources. |

+*------------------+----------------------------------+------------------------------------------------+

+| fileSets         |                                  | Additional file sets, which are being added to |

+|                  |                                  | the archive. See "File Sets" below for an      |

+|                  |                                  | example.                                       |

+*------------------+----------------------------------+------------------------------------------------+

+| servicesXmlFile  |                                  | Location of the services.xml file. By default, |

+|                  |                                  | it is assumed that the file is already present |

+|                  |                                  | in classesDirectory/META-INF and no special    |

+|                  |                                  | processing is required.                        |

+*------------------+----------------------------------+------------------------------------------------+

+| wsdlFile         |                                  | Location of the WSDL file. By default, it is   |

+|                  |                                  | assumed that the file is already present in    |

+|                  |                                  | classesDirectory/META-INF and no special       |

+|                  |                                  | processing is required.                        |

+*------------------+----------------------------------+------------------------------------------------+

+| wsdlFileName     | service.wsdl                     | Name, to which the WSDL file should be mapped. |

+*------------------+----------------------------------+------------------------------------------------+

+

+

+The aar goal

+

+  The aar goal allows the following additional parameters:

+

+*------------------+----------------------------+------------------------------------------------+

+| Parameter name   | Default value              | Description                                    |

+*------------------+----------------------------+------------------------------------------------+

+| outputDirectory  | ${project.build.directory} | Directory where to generate the AAR file.      |

+*------------------+----------------------------+------------------------------------------------+

+| aarName          | ${project.build.finalName} | The generated AAR files name.                  |

+*------------------+----------------------------+------------------------------------------------+

+| archive          |                            | A Maven archive configuration. This allows,    |

+|                  |                            | for example, to configure the MANIFEST.MF      |

+|                  |                            | file.                                          |

+*------------------+----------------------------+------------------------------------------------+

+| classifier       |                            | A classifier, which should be added to the     |

+|                  |                            | generated AAR files name. Setting this         |

+|                  |                            | parameter has the side effect, that the        |

+|                  |                            | artifact is treated as an attachment and not   |

+|                  |                            | as the projects primary artifact.              |

+*------------------+----------------------------+------------------------------------------------+

+| primaryArtifact  | true                       | Setting this property to false disables        |

+|                  |                            | installation or deployment of the artifact as  |

+|                  |                            | the projects primary artifact.                 |

+*------------------+----------------------------+------------------------------------------------+

+

+

+File Sets

+

+  Additional file sets may be configured for inclusion into the AAR file. A file set looks

+  as follows:

+

+-----------------

+  <fileSets>

+    <fileSet>

+      <directory>src/aar/files</directory>

+      <outputDirectory>META-INF/docs</outputDirectory>

+      <includes>

+        <include>**/*.html</include>

+      </includes>

+    </fileSet>

+    <fileSet>

+      <directory>src/aar/files</directory>

+      <outputDirectory>META-INF/etc</outputDirectory>

+      <excludes>

+        <exclude>**/*.html</exclude>

+      </excludes>

+    </fileSet>

+  </fileSets>

+-----------------

+

+  The example specifies, that the contents of the directory src/aar/files shall

+  be added to the AAR file. HTML files will go into META-INF/docs, all other

+  files to META-INF/etc.

+

+  A file set is configured through the following configuration parameters:

+

+*---------------------+-------------------------------------------------------------------+

+| Parameter name      | Description                                                       |

+*---------------------+-------------------------------------------------------------------+

+| directory           | The directory, from which to read the file set. This parameter is |

+|                     | required.                                                         |

+*---------------------+-------------------------------------------------------------------+

+| outputDirectory     | The target directory within the AAR file. Defaults to the AAR     |

+|                     | files root directory.                                             |

+*---------------------+-------------------------------------------------------------------+

+| includes            | Configures the set of files, which shall be included into the AAR |

+|                     | file. Defaults to **/*.                                           |

+*---------------------+-------------------------------------------------------------------+

+| excludes            | Configures a set of files, which shall be excluded from the file  |

+|                     | set. Defaults to the Maven default excludes (**/*~, **/cvs/**/*,  |

+|                     | **/.svn/**/*, etc.)                                               |

+*---------------------+-------------------------------------------------------------------+

+| skipDefaultExcludes | If this parameter is set to true, then no default excludes are    |

+|                     | being used.                                                       |

+*---------------------+-------------------------------------------------------------------+

diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/howto.apt b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/howto.apt
new file mode 100644
index 0000000..a58473d
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/howto.apt
@@ -0,0 +1,23 @@
+ ------

+ Maven 2 Aar Plugin: configuration examples

+ ------

+ Jochen Wiedmann 

+ <jochen.wiedmann@gmail.com>

+ ------

+

+Goals

+

+  The Aar plugin allows the packaging of an Axis 2 service aar in 3 different modes:

+

+   * aar (default): generates the aar artifact

+

+   * inplace: package the aar in the source tree

+

+   * exploded : package an exploded aar application

+

+  Each mode is materialized by a goal. For instance, to generate an exploded

+  aar from the current project, one would type

+

++--------

+  mvn aar:exploded

++---------

diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/introduction.apt b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/introduction.apt
new file mode 100644
index 0000000..65420ae
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/apt/introduction.apt
@@ -0,0 +1,15 @@
+ ------

+ Maven 2 Aar Plugin

+ ------

+ Jochen Wiedmann

+ <jochen.wiedmann@gmail.com>

+ ------

+

+Introduction

+

+  This plugin generates an Axis 2 service file (AAR file).

+

+  The full description of goals is available {{{howto.html}here}}.

+

+

+

diff --git a/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/site.xml b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/site.xml
new file mode 100644
index 0000000..7875ef1
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-aar-maven-plugin/src/site/site.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+/*
+ * Copyright 2006 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.
+ */
+-->
+
+<project name="Maven Axis 2 AAR Plugin">
+  <bannerLeft>
+    <name>Maven Axis 2 AAR Plugin</name>
+    <src>http://maven.apache.org/images/apache-maven-project.png</src>
+    <href>http://maven.apache.org/</href>
+  </bannerLeft>
+  <bannerRight>
+    <src>http://maven.apache.org/images/maven-small.gif</src>
+  </bannerRight>
+  <body>
+    <links>
+      <item name="Apache" href="http://www.apache.org/"/>

+      <item name="Webservices" href="http://ws.apache.org/"/>

+      <item name="Axis 2" href="http://ws.apache.org/axis2/"/>

+      <item name="Maven 2" href="http://maven.apache.org/maven2/"/>
+    </links>
+
+    <menu name="Overview">
+      <item name="Introduction" href="introduction.html"/>
+      <item name="How to Use" href="howto.html"/>

+      <item name="Configuration" href="configuration.html"/>
+    </menu>
+    ${reports}
+  </body>
+</project>
diff --git a/rampart_1_1/modules/tool/axis2-ant-plugin/pom.xml b/rampart_1_1/modules/tool/axis2-ant-plugin/pom.xml
new file mode 100644
index 0000000..c6a5b52
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-ant-plugin/pom.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+        xmlns="http://maven.apache.org/POM/4.0.0"

+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+    <parent>

+        <groupId>org.apache.axis2.maven2</groupId>

+        <artifactId>axis2-maven-tools</artifactId>

+        <version>1.1.0.1-SNAPSHOT</version>

+    </parent>

+    <modelVersion>4.0.0</modelVersion>

+    <artifactId>axis2-ant-plugin</artifactId>

+    <name>Axis 2 WSDL2Code Maven Plugin</name>

+    <packaging>maven-plugin</packaging>

+    <description>The Axis 2 Plugin for Ant Tasks.</description>

+    <repositories>

+        <repository>

+            <id>repo1</id>

+            <name>maven repository</name>

+            <url>http://repo1.maven.org/maven2/</url>

+        </repository>

+        <repository>

+            <id>ibiblio</id>

+            <name>ibiblio repository</name>

+            <url>http://ibiblio.org/maven/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <id>ibiblio</id>

+            <name>ibiblio repository</name>

+            <url>http://ibiblio.org/maven2/</url>

+        </repository>

+        <repository>

+            <id>apache-m1</id>

+            <name>apache m1-ibiblio-rsync repository</name>

+            <url>http://people.apache.org/repo/m1-ibiblio-rsync-repository/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <snapshots>

+                <enabled>true</enabled>

+            </snapshots>

+            <id>apache-people-repo</id>

+            <name>apache people maven repository</name>

+            <url>http://people.apache.org/repository/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <snapshots>

+                <enabled>true</enabled>

+            </snapshots>

+            <id>ws-zones</id>

+            <name>ws.zones maven repository</name>

+            <url>http://ws.zones.apache.org/repository/</url>

+            <layout>legacy</layout>

+        </repository>

+    </repositories>

+    <dependencies>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-codegen</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-common</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-adb</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-adb-codegen</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-java2wsdl</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>junit</groupId>

+            <artifactId>junit</artifactId>

+            <version>3.8.2</version>

+            <scope>test</scope>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>1.5.2</version>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>1.1</version>

+        </dependency>

+        <dependency>

+            <groupId>commons-httpclient</groupId>

+            <artifactId>commons-httpclient</artifactId>

+            <version>3.0.1</version>

+            <scope>runtime</scope>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>2.0</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>woodstox</groupId>

+            <artifactId>wstx</artifactId>

+            <version>asl-3.0.0</version>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>1.0.1</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.mail</groupId>

+            <artifactId>mail</artifactId>

+            <version>1.4</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>1.1</version>

+        </dependency>

+        <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant</artifactId>

+            <version>1.6.2</version>

+        </dependency>

+    </dependencies>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-ant-plugin/src/main/java/org/apache/axis2/ant/AntCodegenTask.java b/rampart_1_1/modules/tool/axis2-ant-plugin/src/main/java/org/apache/axis2/ant/AntCodegenTask.java
new file mode 100644
index 0000000..8e0d699
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-ant-plugin/src/main/java/org/apache/axis2/ant/AntCodegenTask.java
@@ -0,0 +1,447 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.ant;
+
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;
+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
+import org.apache.tools.ant.AntClassLoader;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.Reference;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class AntCodegenTask extends Task {
+
+    private String wsdlFileName = null;
+    private String output = ".";
+    private String language = ConfigPropertyFileLoader.getDefaultLanguage();
+    private String packageName = URLProcessor.DEFAULT_PACKAGE;
+    private String databindingName=ConfigPropertyFileLoader.getDefaultDBFrameworkName();
+    private String portName=null;
+    private String serviceName=null;
+
+    private boolean asyncOnly = false;
+    private boolean syncOnly = false;
+    private boolean serverSide = false;
+    private boolean testcase = false;
+    private boolean generateServiceXml = false;
+    private boolean generateAllClasses = false;
+    private boolean unpackClasses = false;
+    private boolean serverSideInterface  = false;
+
+    private String repositoryPath = null;
+    private String externalMapping = null;
+    private String wsdlVersion = null;
+    private String targetSourceFolderLocation = null;
+    private String targetResourcesFolderLocation = null;
+    private boolean unwrap = false;
+
+    private String namespaceToPackages = null;
+
+    private Path classpath;
+
+
+
+
+    /**
+     * 
+     */
+    public AntCodegenTask() {
+        super();
+    }
+
+
+    /**
+     * Sets the classpath.
+     * @return Returns Path.
+     */
+    public Path createClasspath() {
+        if (classpath == null) {
+            classpath = new Path(getProject());
+            classpath = classpath.concatSystemClasspath();
+        }
+        return classpath.createPath();
+    }
+
+    /**
+     * Set the reference to an optional classpath 
+     *
+     * @param r the id of the Ant path instance to act as the classpath
+     */
+    public void setClasspathRef(Reference r) {
+        createClasspath().setRefid(r);
+    }
+
+    /**
+     *
+     * @return
+     */
+    public boolean isServerSideInterface() {
+        return serverSideInterface;
+    }
+
+    /**
+     *
+     * @param serverSideInterface
+     */
+    public void setServerSideInterface(boolean serverSideInterface) {
+        this.serverSideInterface = serverSideInterface;
+    }
+
+    /**
+     * Fills the option map. This map is passed onto
+     * the code generation API to generate the code.
+     */
+    private Map fillOptionMap() {
+        Map optionMap = new HashMap();
+
+        ////////////////////////////////////////////////////////////////
+        //WSDL file name
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
+                        getStringArray(wsdlFileName)));
+        
+        //WSDL version
+        if (wsdlVersion != null) {
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.WSDL_VERSION_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.WSDL_VERSION_OPTION,
+                        getStringArray(wsdlVersion)));
+        }
+
+        // repository path
+        if (repositoryPath != null) {
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.REPOSITORY_PATH_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.REPOSITORY_PATH_OPTION,
+                        getStringArray(repositoryPath)));
+        }
+
+        // external mapping
+        if (externalMapping != null) {
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.EXTERNAL_MAPPING_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.EXTERNAL_MAPPING_OPTION,
+                        getStringArray(externalMapping)));
+        }
+
+        // target source folder location
+        if (targetSourceFolderLocation != null) {
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.SOURCE_FOLDER_NAME_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.SOURCE_FOLDER_NAME_OPTION,
+                        getStringArray(targetSourceFolderLocation)));
+        }
+
+        // target source folder location
+        if (targetResourcesFolderLocation != null) {
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.RESOURCE_FOLDER_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.RESOURCE_FOLDER_OPTION,
+                        getStringArray(targetResourcesFolderLocation)));
+        }
+
+        // target source folder location
+        if (unwrap) {
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.UNWRAP_PARAMETERS,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.UNWRAP_PARAMETERS,
+                        new String[0]));
+        }
+
+        //output location
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
+                        getStringArray(output)));
+        //////////////////////////////////////////////////////////////////
+        // Databinding type
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
+                        getStringArray(databindingName)));
+
+        // Async only option - forcing to generate async methods only
+        if (asyncOnly) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION,
+                            new String[0]));
+        }
+        // Sync only option - forcing to generate Sync methods only
+        if (syncOnly) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION,
+                            new String[0]));
+        }
+
+        //Package
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION,
+                        getStringArray(packageName)));
+
+        //stub language
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.STUB_LANGUAGE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.STUB_LANGUAGE_OPTION,
+                        getStringArray(language)));
+
+
+        //server side and generate services.xml options
+        if (serverSide) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION,
+                            new String[0]));
+
+            //services XML generation - effective only when specified as the server side
+            if (generateServiceXml) {
+                optionMap.put(
+                        CommandLineOptionConstants.WSDL2JavaConstants
+                                .GENERATE_SERVICE_DESCRIPTION_OPTION,
+                        new CommandLineOption(
+                                CommandLineOptionConstants.WSDL2JavaConstants
+                                        .GENERATE_SERVICE_DESCRIPTION_OPTION,
+                                new String[0]));
+            }
+            //generate all option - Only valid when generating serverside code
+            if (generateAllClasses) {
+                optionMap.put(
+                        CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION,
+                        new CommandLineOption(
+                                CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION,
+                                new String[0]));
+            }
+
+        }
+
+        //generate the test case
+        if (testcase) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION,
+                            new String[0]));
+        }
+
+        //Unwrap classes option - this determines whether the generated classes are inside the stub/MR
+        //or gets generates as seperate classes
+        if (unpackClasses) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.UNPACK_CLASSES_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.UNPACK_CLASSES_OPTION,
+                            new String[0]));
+        }
+
+        //server side interface option
+        if (serverSideInterface) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION,
+                            new String[0]));
+        }
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.SERVICE_NAME_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.SERVICE_NAME_OPTION,
+                        new String[]{serviceName}));
+
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.PORT_NAME_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.PORT_NAME_OPTION,
+                        new String[]{portName}));
+        // set the namespaces
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION,
+                        new String[]{namespaceToPackages}));
+
+        return optionMap;
+    }
+
+    /**
+     * Utility method to convert a string into a single item string[]
+     * @param value
+     * @return Returns String[].
+     */
+    private String[] getStringArray(String value) {
+        String[] values = new String[1];
+        values[0] = value;
+        return values;
+    }
+
+    public void execute() throws BuildException {
+        try {
+            /*
+             * This needs the ClassLoader we use to load the task
+             * have all the dependancies set, hope that
+             * is ok for now
+             */
+
+            AntClassLoader cl = new AntClassLoader(
+                    getClass().getClassLoader(),
+                    getProject(),
+                    classpath == null ? createClasspath() : classpath,
+                    false);
+
+            Thread.currentThread().setContextClassLoader(cl);
+            cl.addPathElement(output);
+
+            Map commandLineOptions = this.fillOptionMap();
+            CommandLineOptionParser parser =
+                    new CommandLineOptionParser(commandLineOptions);
+            new CodeGenerationEngine(parser).generate();
+        } catch (Throwable e) {
+            throw new BuildException(e);
+        }
+
+    }
+
+    public void setPortName(String portName) {
+        this.portName = portName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public void setGenerateAllClasses(boolean generateAllClasses) {
+        this.generateAllClasses = generateAllClasses;
+    }
+
+    public void setUnpackClasses(boolean unpackClasses) {
+        this.unpackClasses = unpackClasses;
+    }
+
+    public void setWsdlFileName(String wsdlFileName) {
+        this.wsdlFileName = wsdlFileName;
+    }
+
+    public void setOutput(String output) {
+        this.output = output;
+    }
+
+    public void setPackageName(String packageName) {
+        this.packageName = packageName;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    public void setAsyncOnly(boolean asyncOnly) {
+        this.asyncOnly = asyncOnly;
+    }
+
+    public void setSyncOnly(boolean syncOnly) {
+        this.syncOnly = syncOnly;
+    }
+
+    public void setServerSide(boolean serverSide) {
+        this.serverSide = serverSide;
+    }
+
+    public void setTestcase(boolean testcase) {
+        this.testcase = testcase;
+    }
+
+    public void setGenerateServiceXml(boolean generateServiceXml) {
+        this.generateServiceXml = generateServiceXml;
+    }
+
+    public void setRepositoryPath(String repositoryPath) {
+        this.repositoryPath = repositoryPath;
+    }
+
+    public void setExternalMapping(String externalMapping) {
+        this.externalMapping = externalMapping;
+    }
+
+    public void setWsdlVersion(String wsdlVersion) {
+        this.wsdlVersion = wsdlVersion;
+    }
+
+    public void setTargetSourceFolderLocation(String targetSourceFolderLocation) {
+        this.targetSourceFolderLocation = targetSourceFolderLocation;
+    }
+
+    public void setTargetResourcesFolderLocation(String targetResourcesFolderLocation) {
+        this.targetResourcesFolderLocation = targetResourcesFolderLocation;
+    }
+
+    public void setUnwrap(boolean unwrap) {
+        this.unwrap = unwrap;
+    }
+
+    /**
+     * @return Returns Path.
+     */
+    public Path getClasspath() {
+        return classpath;
+    }
+
+    /**
+     * @param path
+     */
+    public void setClasspath(Path path) {
+        classpath = path;
+    }
+
+    public String getDatabindingName() {
+        return databindingName;
+    }
+
+    public void setDatabindingName(String databindingName) {
+        this.databindingName = databindingName;
+    }
+
+    public String getNamespaceToPackages() {
+        return namespaceToPackages;
+    }
+
+    public void setNamespaceToPackages(String namespaceToPackages) {
+        this.namespaceToPackages = namespaceToPackages;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-ant-plugin/src/test/resources/log4j.properties b/rampart_1_1/modules/tool/axis2-ant-plugin/src/test/resources/log4j.properties
new file mode 100644
index 0000000..58ecb07
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-ant-plugin/src/test/resources/log4j.properties
@@ -0,0 +1,21 @@
+# Set root category priority to INFO and its only appender to CONSOLE.
+log4j.rootCategory=INFO, CONSOLE
+#log4j.rootCategory=INFO, CONSOLE, LOGFILE
+
+# Set the enterprise logger priority to FATAL
+log4j.logger.org.apache.axis2.enterprise=FATAL
+log4j.logger.de.hunsicker.jalopy.io=FATAL
+log4j.logger.httpclient.wire.header=FATAL
+log4j.logger.org.apache.commons.httpclient=FATAL
+
+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c - %m%n
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+log4j.appender.LOGFILE=org.apache.log4j.FileAppender
+log4j.appender.LOGFILE.File=axis2.log
+log4j.appender.LOGFILE.Append=true
+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/pom.xml b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
new file mode 100644
index 0000000..fee38de
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+        xmlns="http://maven.apache.org/POM/4.0.0"

+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+    <parent>

+        <groupId>org.apache.axis2.maven2</groupId>

+        <artifactId>axis2-maven-tools</artifactId>

+        <version>1.1.0.1-SNAPSHOT</version>

+    </parent>

+    <modelVersion>4.0.0</modelVersion>

+    <artifactId>axis2-wsdl2code-maven-plugin</artifactId>

+    <name>Axis 2 WSDL2Code Maven Plugin</name>

+    <packaging>maven-plugin</packaging>

+    <description>The Axis 2 Plugin for Maven allows client side and server side sources from a WSDL.</description>

+    <repositories>

+        <repository>

+            <id>repo1</id>

+            <name>maven repository</name>

+            <url>http://repo1.maven.org/maven2/</url>

+        </repository>

+        <repository>

+            <id>ibiblio</id>

+            <name>ibiblio repository</name>

+            <url>http://ibiblio.org/maven/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <id>ibiblio</id>

+            <name>ibiblio repository</name>

+            <url>http://ibiblio.org/maven2/</url>

+        </repository>

+        <repository>

+            <id>apache-m1</id>

+            <name>apache m1-ibiblio-rsync repository</name>

+            <url>http://people.apache.org/repo/m1-ibiblio-rsync-repository/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <snapshots>

+                <enabled>true</enabled>

+            </snapshots>

+            <id>apache-people-repo</id>

+            <name>apache people maven repository</name>

+            <url>http://people.apache.org/repository/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <snapshots>

+                <enabled>true</enabled>

+            </snapshots>

+            <id>ws-zones</id>

+            <name>ws.zones maven repository</name>

+            <url>http://ws.zones.apache.org/repository/</url>

+            <layout>legacy</layout>

+        </repository>

+    </repositories>

+    <dependencies>

+        <dependency>

+            <groupId>org.apache.maven</groupId>

+            <artifactId>maven-plugin-api</artifactId>

+            <version>2.0.4</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.maven</groupId>

+            <artifactId>maven-artifact</artifactId>

+            <version>2.0.4</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.maven</groupId>

+            <artifactId>maven-project</artifactId>

+            <version>2.0.4</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-codegen</artifactId>

+            <version>1.1	</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-common</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-adb</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-adb-codegen</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-java2wsdl</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>junit</groupId>

+            <artifactId>junit</artifactId>

+            <version>3.8.2</version>

+            <scope>test</scope>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.maven.shared</groupId>

+            <artifactId>maven-plugin-testing-harness</artifactId>

+            <version>1.0-beta-1</version>

+            <scope>test</scope>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>1.5.2</version>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>1.1</version>

+        </dependency>

+        <dependency>

+            <groupId>commons-httpclient</groupId>

+            <artifactId>commons-httpclient</artifactId>

+            <version>3.0.1</version>

+            <scope>runtime</scope>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>2.0</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>woodstox</groupId>

+            <artifactId>wstx</artifactId>

+            <version>asl-3.0.0</version>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>1.0.1</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.mail</groupId>

+            <artifactId>mail</artifactId>

+            <version>1.4</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>1.1</version>

+        </dependency>

+        <dependency>

+            <groupId>org.codehaus.plexus</groupId>

+            <artifactId>plexus-utils</artifactId>

+            <version>1.0.5</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.core</groupId>

+            <artifactId>runtime</artifactId>

+            <version>3.1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse</groupId>

+            <artifactId>swt</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse</groupId>

+            <artifactId>osgi</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.swt</groupId>

+            <artifactId>gtk_linux_x86</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.ui</groupId>

+            <artifactId>ide</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.ui</groupId>

+            <artifactId>workbench</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.core</groupId>

+            <artifactId>resources</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse</groupId>

+            <artifactId>jface</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant</artifactId>

+            <version>1.6.2</version>

+        </dependency>

+    </dependencies>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/WSDL2JavaGenerator.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/WSDL2JavaGenerator.java
new file mode 100644
index 0000000..3a1ba68
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/WSDL2JavaGenerator.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen;
+
+
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionConstants;
+
+import javax.wsdl.WSDLException;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+
+public class WSDL2JavaGenerator {
+    
+    /**
+     * Maps a string containing the name of a language to a constant defined in CommandLineOptionConstants.LanguageNames
+     * 
+     * @param UILangValue a string containg a language, e.g. "java", "cs", "cpp" or "vb"
+     * @return a normalized string constant
+     */
+    private String mapLanguagesWithCombo(String UILangValue)
+    {
+       return UILangValue;
+    }
+    /**
+     * Creates a list of parameters for the code generator based on the decisions made by the user on the OptionsPage
+     * (page2). For each setting, there is a Command-Line option for the Axis2 code generator.
+     * 
+     * @return a Map with keys from CommandLineOptionConstants with the values entered by the user on the Options Page.
+     */
+    public Map fillOptionMap(boolean isAyncOnly,
+            		  boolean isSyncOnly,
+            		  boolean isServerSide,
+            		  boolean isServerXML,
+            		  boolean isTestCase,
+            		  boolean isGenerateAll,
+            		  String serviceName,
+            		  String portName,
+            		  String databindingName,
+            		  String WSDLURI,
+            		  String packageName,
+            		  String selectedLanguage,
+            		  String outputLocation,
+            		  String namespace2packageList,
+            		  boolean isServerSideInterface
+            		  )
+    {
+       Map optionMap = new HashMap();
+       //WSDL file name
+       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION, new CommandLineOption(
+    		   CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION, getStringArray(WSDLURI)));
+       
+       //Async only
+       if (isAyncOnly)
+       {
+          optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION, new CommandLineOption(
+        		  CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION, new String[0]));
+       }
+       //sync only
+       if (isSyncOnly)
+       {
+          optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION, new CommandLineOption(
+        		  CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION, new String[0]));
+       }
+       //serverside
+       if (isServerSide)
+       {
+          optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION, new CommandLineOption(
+        		  CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION, new String[0]));
+          //server xml
+          if (isServerXML)
+          {
+             optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION, new CommandLineOption(
+            		 CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION, new String[0]));
+          }
+          if (isGenerateAll){
+              optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION, new CommandLineOption(
+            		  CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION, new String[0]));
+          }
+       }
+       //test case
+       if (isTestCase)
+       {
+          optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION, new CommandLineOption(
+        		  CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION, new String[0]));
+       }
+       //package name
+       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION, new CommandLineOption(
+    		   CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION, getStringArray(packageName)));
+       //selected language
+       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.STUB_LANGUAGE_OPTION, new CommandLineOption(
+    		   CommandLineOptionConstants.WSDL2JavaConstants.STUB_LANGUAGE_OPTION, getStringArray(mapLanguagesWithCombo(selectedLanguage))));
+       //output location
+       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION, new CommandLineOption(
+    		   CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION, getStringArray(outputLocation)));
+       
+      //databinding
+       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION, new CommandLineOption(
+    		   CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION, getStringArray(databindingName)));
+       
+       //port name
+       if (portName!=null){
+	       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.PORT_NAME_OPTION, new CommandLineOption(
+	    		   CommandLineOptionConstants.WSDL2JavaConstants.PORT_NAME_OPTION, getStringArray(portName)));
+       }
+       //service name
+       if (serviceName!= null){
+	       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.SERVICE_NAME_OPTION, new CommandLineOption(
+	    		   CommandLineOptionConstants.WSDL2JavaConstants.SERVICE_NAME_OPTION, getStringArray(serviceName)));
+       }
+       //ns2pkg mapping
+       if (namespace2packageList!= null){
+	       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION, new CommandLineOption(
+	    		   CommandLineOptionConstants.WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION, getStringArray(namespace2packageList)));
+       }
+       
+       //server side interface  mapping
+       if (isServerSideInterface){
+	       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION, new CommandLineOption(
+	    		   CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION, new String[0]));
+       }
+       return optionMap;
+       
+    }
+    
+    public String getBaseUri(String wsdlURI){
+    	
+    	try {
+			URL url;
+			if (wsdlURI.indexOf("://")==-1){
+				url = new URL("file","",wsdlURI);
+			}else{
+				url = new URL(wsdlURI);	
+			}
+
+			
+			String baseUri;
+			if ("file".equals(url.getProtocol())){
+				baseUri = new File(url.getFile()).getParentFile().toURL().toExternalForm();
+			}else{
+				baseUri = url.toExternalForm().substring(0,
+						url.toExternalForm().lastIndexOf("/")
+				);
+			}
+		
+			
+			return baseUri;
+		} catch (MalformedURLException e) {
+			throw new RuntimeException(e);
+		}
+    }
+    /**
+     * Reads the WSDL Object Model from the given location.
+     * 
+     * @param wsdlURI the filesystem location (full path) of the WSDL file to read in.
+     * @return the WSDLDescription object containing the WSDL Object Model of the given WSDL file
+     * @throws WSDLException when WSDL File is invalid
+     * @throws IOException on errors reading the WSDL file
+     */
+    public AxisService getAxisService(String wsdlURI) throws Exception{
+    	
+    		URL url;
+			if (wsdlURI.indexOf("://")==-1){
+				url = new URL("file","",wsdlURI);
+			}else{
+				url = new URL(wsdlURI);	
+			}
+
+			//FIXME @author soi - 
+		    // This quick fix assume that the wsdlURI points to a wsdl 1.1 version.
+			// A better fix should be to determine which builder to use based on the wsdl version. 
+			// The current implementation of the wsdl builder classes did not allow for this. I will suggest
+			// that the determination of which builder to use should be done in the builder classes, preferably
+			// in the parent builder class. 
+			// Accessable through a static reference to a method like getBuilderInstance(String wsdlURI) in
+			// the parent builder class or through a builder Abstract Factor or Abstract factory methods.
+			
+			WSDL11ToAxisServiceBuilder builder = new WSDL11ToAxisServiceBuilder(url.openConnection().getInputStream());
+					
+			builder.setBaseUri(getBaseUri(wsdlURI));
+			return builder.populateService();
+    }
+
+    /**
+     * Converts a single String into a String Array
+     * 
+     * @param value a single string
+     * @return an array containing only one element
+     */
+    private String[] getStringArray(String value)
+    {
+       String[] values = new String[1];
+       values[0] = value;
+       return values;
+    }
+}
+
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/CodeGenWizard.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/CodeGenWizard.java
new file mode 100644
index 0000000..f562797
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/CodeGenWizard.java
@@ -0,0 +1,560 @@
+/*
+* Copyright 2004,2005 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.axis2.tool.codegen.eclipse;
+
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.tool.core.JarFileWriter;
+import org.apache.axis2.tool.codegen.WSDL2JavaGenerator;
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.apache.axis2.tool.codegen.eclipse.ui.AbstractWizardPage;
+import org.apache.axis2.tool.codegen.eclipse.ui.JavaSourceSelectionPage;
+import org.apache.axis2.tool.codegen.eclipse.ui.JavaWSDLOptionsPage;
+import org.apache.axis2.tool.codegen.eclipse.ui.JavaWSDLOutputLocationPage;
+import org.apache.axis2.tool.codegen.eclipse.ui.OptionsPage;
+import org.apache.axis2.tool.codegen.eclipse.ui.OutputPage;
+import org.apache.axis2.tool.codegen.eclipse.ui.ToolSelectionPage;
+import org.apache.axis2.tool.codegen.eclipse.ui.WSDLFileSelectionPage;
+import org.apache.axis2.tool.codegen.eclipse.util.SettingsConstants;
+import org.apache.axis2.tool.codegen.eclipse.util.UIConstants;
+import org.apache.axis2.tool.core.SrcCompiler;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.ws.java2wsdl.Java2WSDLCodegenEngine;
+import org.apache.ws.java2wsdl.utils.Java2WSDLCommandLineOption;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWizard;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * The main wizard for the codegen wizard
+ */
+
+public class CodeGenWizard extends Wizard implements INewWizard,CommandLineOptionConstants.Java2WSDLConstants {
+    private ToolSelectionPage toolSelectionPage;
+    
+    private WSDLFileSelectionPage wsdlSelectionPage;
+
+    private OptionsPage optionsPage;
+
+    private OutputPage outputPage;
+
+    private JavaWSDLOptionsPage java2wsdlOptionsPage;
+
+    private JavaSourceSelectionPage javaSourceSelectionPage;
+
+    private JavaWSDLOutputLocationPage java2wsdlOutputLocationPage;
+
+    private int selectedWizardType = SettingsConstants.WSDL_2_JAVA_TYPE;//TODO change this
+
+    private int selectedCodegenOptionType = SettingsConstants.CODEGEN_DEFAULT_TYPE;//TODO change this
+    
+
+   
+
+    /**
+     * Constructor for CodeGenWizard.
+     */
+    public CodeGenWizard() {
+        super();
+        setNeedsProgressMonitor(true);
+        this
+                .setWindowTitle(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+                        .getResourceString("general.name"));
+    }
+
+    /**
+     * Adding the page to the wizard.
+     */
+
+    public void addPages() {
+        toolSelectionPage = new ToolSelectionPage();
+        addPage(toolSelectionPage);
+
+        //add the wsdl2java wizard pages
+        wsdlSelectionPage = new WSDLFileSelectionPage();
+        addPage(wsdlSelectionPage);
+        
+        optionsPage = new OptionsPage();
+        addPage(optionsPage);
+        outputPage = new OutputPage();
+        addPage(outputPage);
+
+        //add java2wsdl wizard pages
+        javaSourceSelectionPage = new JavaSourceSelectionPage();
+        addPage(javaSourceSelectionPage);
+        java2wsdlOptionsPage = new JavaWSDLOptionsPage();
+        addPage(java2wsdlOptionsPage);
+        java2wsdlOutputLocationPage = new JavaWSDLOutputLocationPage();
+        addPage(java2wsdlOutputLocationPage);
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.wizard.IWizard#canFinish()
+     */
+    public boolean canFinish() {
+        IWizardPage[] pages = getPages();
+        AbstractWizardPage wizardPage = null;
+        for (int i = 0; i < pages.length; i++) {
+            wizardPage = (AbstractWizardPage) pages[i];
+            if (wizardPage.getPageType() == this.selectedWizardType) {
+                if (!(wizardPage.isPageComplete()))
+                    return false;
+            }
+        }
+        return true;
+    }
+
+    public IWizardPage getNextPage(IWizardPage page) {
+        AbstractWizardPage currentPage = (AbstractWizardPage) page;
+        AbstractWizardPage pageout = (AbstractWizardPage) super
+                .getNextPage(page);
+
+        while (pageout != null && selectedWizardType != pageout.getPageType()) {
+            AbstractWizardPage temp = pageout;
+            pageout = (AbstractWizardPage) super.getNextPage(currentPage);
+            currentPage = temp;
+        }
+        return pageout;
+    }
+
+    /**
+     * This method is called when 'Finish' button is pressed in the wizard. We
+     * will create an operation and run it using wizard as execution context.
+     */
+    public boolean performFinish() {
+        try {
+            switch (selectedWizardType) {
+            case SettingsConstants.WSDL_2_JAVA_TYPE:
+                doFinishWSDL2Java();
+                break;
+            case SettingsConstants.JAVA_2_WSDL_TYPE:
+                doFinishJava2WSDL();
+                break;
+            case SettingsConstants.UNSPECIFIED_TYPE:
+                break; //Do nothing
+            default:
+                throw new RuntimeException(CodegenWizardPlugin.
+                		getResourceString("general.invalid.state"));
+            }
+        } catch (Exception e) {
+            MessageDialog.openError(getShell(), 
+                    CodegenWizardPlugin.getResourceString("general.Error"), 
+                    CodegenWizardPlugin.getResourceString("general.Error.prefix") +
+                    e.getMessage());
+            return false;
+        }
+        MessageDialog.openInformation(this.getShell(), 
+                 CodegenWizardPlugin
+                .getResourceString("general.name"), CodegenWizardPlugin
+                .getResourceString("wizard.success"));
+        return true;
+    }
+
+    /**
+     * The worker method, generates the code itself.
+     */
+    private void doFinishWSDL2Java() {
+        WorkspaceModifyOperation op = new WorkspaceModifyOperation()
+        {
+           protected void execute(IProgressMonitor monitor)
+           throws CoreException, InvocationTargetException, InterruptedException{
+              if (monitor == null)
+                 monitor = new NullProgressMonitor();
+
+              /*
+               * "3" is the total amount of steps, see below monitor.worked(amount)
+               */
+              monitor.beginTask(CodegenWizardPlugin.getResourceString("generator.generating"), 3);
+
+              try
+              {
+                 /*
+                  * TODO: Introduce a progress monitor interface for CodeGenerationEngine.
+                  * Since this monitor here doesn't make much sense, we
+                  * should either remove the progress monitor from the CodeGenWizard,
+                  * or give a (custom) progress monitor to the generate() method, so
+                  * we will be informed by Axis2 about the progress of code generation.  
+                  */
+                 WSDL2JavaGenerator generator = new WSDL2JavaGenerator(); 
+                 monitor.subTask(CodegenWizardPlugin.getResourceString("generator.readingWOM"));
+                 AxisService service = generator.getAxisService(wsdlSelectionPage.getFileName());
+                 monitor.worked(1);
+                 
+                 Map optionsMap = generator.fillOptionMap(optionsPage.isAsyncOnlyOn(),
+                         									optionsPage.isSyncOnlyOn(),
+                         									optionsPage.isServerside(),
+                         									optionsPage.isServerXML(),
+                         									optionsPage.isGenerateTestCase(),
+                         									optionsPage.getGenerateAll(),
+                         									optionsPage.getServiceName(),
+                         									optionsPage.getPortName(),
+                         									optionsPage.getDatabinderName(),
+                         									wsdlSelectionPage.getFileName(),
+                         									optionsPage.getPackageName(),
+                         									optionsPage.getSelectedLanguage(),
+                         									outputPage.getOutputLocation(),
+                         									optionsPage.getNs2PkgMapping(),
+                         									optionsPage.getGenerateServerSideInterface());
+                 
+                 CodeGenConfiguration codegenConfig = new CodeGenConfiguration(service, optionsMap);
+                 //set the baseURI
+                 codegenConfig.setBaseURI(generator.getBaseUri(wsdlSelectionPage.getFileName()));
+                 monitor.worked(1);
+                 
+                 monitor.subTask(CodegenWizardPlugin.getResourceString("generator.generating"));
+                 
+                 new CodeGenerationEngine(codegenConfig).generate();
+                 
+                 //TODO refresh the eclipse project space to show the generated files
+                 
+                 //Add the codegen libs that are coming with the plugin to the project lib that has been created
+                 if (outputPage.getAxis2PluginLibCopyCheckBoxSelection()){ 
+                	 String eclipseHome = System.getProperty("user.dir");
+                	 String pluginLibLocation = eclipseHome+File.separator+UIConstants.PLUGINS+
+											File.separator+UIConstants.AXIS_CODEGEN_PLUGIN_FOLDER+
+											File.separator+UIConstants.LIB;
+                	 addLibsToProjectLib(pluginLibLocation, outputPage.getOutputLocation());
+                 }
+                 
+                 //Also another requirement arises 
+                 //If the codegen project was newly buided project or else the eclipse
+                 //project intended to save this generated code does not have the required libs
+                 //to compile the generated code. We need to add the relevent libs to a lib directory 
+                 //of the <code>outputPage.getOutputLocation()</code>
+                 
+                 //Add the libraries on the plugin lib directory to the created project lib
+                 if (outputPage.getAxisLibCopyCheckBoxSelection() && outputPage.oktoLoadLibs()){
+//                	 String libDirectory = outputPage.getAxisHomeLocation()+File.separator+
+//                	 					   UIConstants.TARGET+File.separator+UIConstants.LIB;
+                	 String libDirectory = outputPage.getAxisJarsLocation();
+                	 addLibsToProjectLib(libDirectory, outputPage.getOutputLocation());
+                 }
+                 
+                 //This will Create a jar file from the codegen results and add to the output 
+                 //locations lib directory
+                 if (outputPage.getCreateJarCheckBoxSelection()){
+                	 String tempCodegenLocation =  System.getProperty("user.dir")+File.separator+"codegen";
+                	 String tempProjectSrcLocation = tempCodegenLocation+File.separator+"codegen_temp_src_"+
+                	 								 System.currentTimeMillis();
+                	 String tempProjectClassLocation = tempCodegenLocation+File.separator+"codegen_temp_class_"+
+                	 							       System.currentTimeMillis();
+                	 File tempCodegenFile = new File(tempCodegenLocation);
+                	 File tempSrcFile = new File(tempProjectSrcLocation);
+                	 File tempClassFile = new File(tempProjectClassLocation);
+                	 tempCodegenFile.mkdir();
+                	 tempSrcFile.mkdir();
+                	 tempClassFile.mkdir();
+                	 copyDirectory(new File(outputPage.getOutputLocation()), tempSrcFile);
+                	 //Compile the source to another directory 
+                	 SrcCompiler srcCompileTool = new SrcCompiler();
+                	 srcCompileTool.compileSource(tempClassFile, tempProjectSrcLocation);
+                	 //create the jar file and add that to the lib directory
+                	 String projectLib = outputPage.getOutputLocation()+File.separator+"lib";
+                	 JarFileWriter jarFileWriter = new JarFileWriter();
+                	 String jarFileName = "CodegenResults.jar";
+                	 if (!outputPage.getJarFilename().equals("")){
+                		 jarFileName=outputPage.getJarFilename();
+                	 }
+                	 outputPage.setJarFileName(jarFileName);
+                	 jarFileWriter.writeJarFile(new File(projectLib), jarFileName, tempClassFile);
+                	 
+                	 //Delete the temp folders
+                	 deleteDir(tempCodegenFile);
+
+                 }
+                 
+                 
+                 monitor.worked(1);
+              }
+              catch (Exception e)
+              {
+                 ///////////////////////////////
+            	  e.printStackTrace();
+            	 ///////////////////////////// 
+                 throw new InterruptedException(e.getMessage());
+              }
+
+              monitor.done();
+           }
+        };
+
+
+        /*
+         * Start the generation as new Workbench Operation, so the user
+         * can see the progress and, if needed, can stop the operation.
+         */
+        try
+        {
+           getContainer().run(false, true, op);
+        }
+        catch (InvocationTargetException e1)
+        {
+        	/////////////////////////
+        	e1.printStackTrace();
+        	////////////////////////
+            throw new RuntimeException(e1);
+        }
+        catch (InterruptedException e1)
+        {
+           throw new RuntimeException(e1);
+        }
+        catch (Exception e)
+        {
+           throw new RuntimeException(e);
+        }
+
+
+    }
+
+    private void doFinishJava2WSDL() throws Exception {
+
+        WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
+            protected void execute(IProgressMonitor monitor) {
+                if (monitor == null)
+                    monitor = new NullProgressMonitor();
+
+                /*
+                 * "2" is the total amount of steps, see below
+                 * monitor.worked(amount)
+                 */
+                monitor.beginTask(CodegenWizardPlugin
+                        .getResourceString("generator.generating"), 3);
+
+                try {
+                    monitor.worked(1);
+                    //fill the option map
+                    Map optionsMap = new HashMap();
+                    Java2WSDLCommandLineOption option = new Java2WSDLCommandLineOption(
+                    		CLASSNAME_OPTION,new String[]{javaSourceSelectionPage.getClassName()});
+                    optionsMap.put(CLASSNAME_OPTION,option);
+                    
+                    option = new Java2WSDLCommandLineOption(
+                    		CLASSPATH_OPTION,javaSourceSelectionPage.getClassPathList());
+                    optionsMap.put(CLASSPATH_OPTION,option);
+                    
+                    option = new Java2WSDLCommandLineOption(
+                    		TARGET_NAMESPACE_OPTION,
+                    		new String[]{java2wsdlOptionsPage.getTargetNamespace()});
+                    optionsMap.put(TARGET_NAMESPACE_OPTION,option);
+                    
+                    option = new Java2WSDLCommandLineOption(
+                    		TARGET_NAMESPACE_PREFIX_OPTION,
+                    		new String[]{java2wsdlOptionsPage.getTargetNamespacePrefix()});
+                    optionsMap.put(TARGET_NAMESPACE_PREFIX_OPTION,option);
+                    
+                    option = new Java2WSDLCommandLineOption(
+                    		SCHEMA_TARGET_NAMESPACE_OPTION,
+                    		new String[]{java2wsdlOptionsPage.getSchemaTargetNamespace()});
+                    optionsMap.put(SCHEMA_TARGET_NAMESPACE_OPTION,option);
+                    
+                    option = new Java2WSDLCommandLineOption(
+                    		SERVICE_NAME_OPTION,new String[]{java2wsdlOptionsPage.getServiceName()});
+                    optionsMap.put(SERVICE_NAME_OPTION,option);
+                    
+                    option = new Java2WSDLCommandLineOption(
+                    		SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION,
+                    		new String[]{java2wsdlOptionsPage.getSchemaTargetNamespacePrefix()});
+                    optionsMap.put(SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION,option);
+                    
+                    option = new Java2WSDLCommandLineOption(
+                    		OUTPUT_LOCATION_OPTION,new String[]{java2wsdlOutputLocationPage.getOutputLocation()});
+                    optionsMap.put(OUTPUT_LOCATION_OPTION,option);
+                    
+                    option = new Java2WSDLCommandLineOption(
+                    		OUTPUT_FILENAME_OPTION,new String[]{java2wsdlOutputLocationPage.getOutputWSDLName()});
+                    optionsMap.put(OUTPUT_FILENAME_OPTION,option);
+                    
+                    monitor.worked(1);
+                    
+                    new Java2WSDLCodegenEngine(optionsMap).generate();
+                    
+                    monitor.worked(1);
+                    
+                    
+                } catch (Throwable e) {
+                	
+                	    throw new RuntimeException(e);
+                }
+
+                monitor.done();
+            }
+        };
+
+        try {
+            getContainer().run(false, true, op);
+        } catch (InvocationTargetException e1) {
+            throw new RuntimeException(e1);
+        } catch (InterruptedException e1) {
+            throw new RuntimeException(CodegenWizardPlugin.
+            		getResourceString("general.useraborted.state"));
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    /**
+     * We will accept the selection in the workbench to see if we can initialize
+     * from it.
+     * 
+     * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
+     */
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        //do nothing
+    }
+
+    /**
+     * @return Returns the selectedWizardType.
+     */
+    public int getSelectedWizardType() {
+        return selectedWizardType;
+    }    
+
+    /**
+     * @param selectedWizardType
+     *            The selectedWizardType to set.
+     */
+    public void setSelectedWizardType(int selectedWizardType) {
+        this.selectedWizardType = selectedWizardType;
+    }
+    
+    /**
+     * @return Returns the codegenOptionType.
+     */
+    public int getSelectedCodegenOptionType() {
+        return selectedCodegenOptionType;
+    }
+    
+    /**
+     * @param selectedCodegenOptionType
+     *            The selectedCodegenOptionType to set.
+     */
+    public void setSelectedCodegenOptionType(int selectedCodegenOptionType) {
+        this.selectedCodegenOptionType = selectedCodegenOptionType;
+    }
+
+    /**
+     * Get the selected WSDL from the WSDLselectionpage
+     * @return
+     */
+    public String getWSDLname(){
+        return wsdlSelectionPage.getFileName();	
+    }
+    
+    /**
+     * populate the options page. Usually done after reloading the WSDL
+     *
+     */
+    public void populateOptions(){
+    	optionsPage.populateParamsFromWSDL();
+    }
+    
+    public void setDefaultNamespaces(String fullyQualifiedClassName){
+    	java2wsdlOptionsPage.setNamespaceDefaults(fullyQualifiedClassName);
+    }
+    
+    
+    private void addLibsToProjectLib(String libDirectory, String outputLocation){
+    	String newOutputLocation = outputLocation+File.separator+UIConstants.LIB;
+    	//Create a lib directory; all ancestor directories must exist
+    	boolean success = (new File(newOutputLocation)).mkdir();
+        if (!success) {
+            // Directory creation failed
+        }
+        try {
+			copyDirectory(new File(libDirectory),new File(newOutputLocation));
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+    }
+    
+    // Copies all files under srcDir to dstDir.
+    // If dstDir does not exist, it will be created.
+    public void copyDirectory(File srcDir, File dstDir) throws IOException {
+        if (srcDir.isDirectory()) {
+            if (!dstDir.exists()) {
+                dstDir.mkdir();
+            }
+    
+            String[] children = srcDir.list();
+            for (int i=0; i<children.length; i++) {
+                copyDirectory(new File(srcDir, children[i]),
+                                     new File(dstDir, children[i]));
+            }
+        } else {
+            copyFile(srcDir, dstDir);
+        }
+    }
+        
+    // Copies src file to dst file.
+    // If the dst file does not exist, it is created
+    private void copyFile(File src, File dst) throws IOException {
+        InputStream in = new FileInputStream(src);
+        OutputStream out = new FileOutputStream(dst);
+    
+        // Transfer bytes from in to out
+        byte[] buf = new byte[1024];
+        int len;
+        while ((len = in.read(buf)) > 0) {
+            out.write(buf, 0, len);
+        }
+        in.close();
+        out.close();
+    }
+    
+    // Deletes all files and subdirectories under dir.
+    // Returns true if all deletions were successful.
+    // If a deletion fails, the method stops attempting to delete and returns false.
+    private boolean deleteDir(File dir) {
+        if (dir.isDirectory()) {
+            String[] children = dir.list();
+            for (int i=0; i<children.length; i++) {
+                boolean success = deleteDir(new File(dir, children[i]));
+                if (!success) {
+                    return false;
+                }
+            }
+        }
+    
+        // The directory is now empty so delete it
+        return dir.delete();
+    }
+    
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/plugin/CodegenWizardPlugin.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/plugin/CodegenWizardPlugin.java
new file mode 100644
index 0000000..6784cf4
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/plugin/CodegenWizardPlugin.java
@@ -0,0 +1,97 @@
+/*
+* Copyright 2004,2005 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.axis2.tool.codegen.eclipse.plugin;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class CodegenWizardPlugin extends AbstractUIPlugin {
+	//The shared instance.
+	private static CodegenWizardPlugin plugin;
+	//Resource bundle.
+	private ResourceBundle resourceBundle;
+	private static ImageDescriptor wizardImageDescriptor;
+	
+	/**
+	 * The constructor.
+	 */
+	public CodegenWizardPlugin() {
+		super();
+		plugin = this;
+		try {
+			resourceBundle = ResourceBundle.getBundle("org.apache.axis2.tool.codegen.resource.Codegen");
+		} catch (MissingResourceException x) {
+			resourceBundle = null;
+		}
+	}
+
+	/**
+	 * This method is called upon plug-in activation
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/**
+	 * This method is called when the plug-in is stopped
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static CodegenWizardPlugin getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle,
+	 * or 'key' if not found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = CodegenWizardPlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null) ? bundle.getString(key) : key;
+		} catch (MissingResourceException e) {
+			return key;
+		}
+	}
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return resourceBundle;
+	}
+	
+	public static ImageDescriptor getWizardImageDescriptor(){
+	    if (wizardImageDescriptor==null){
+	        wizardImageDescriptor =CodegenWizardPlugin.imageDescriptorFromPlugin("Axis2_Codegen_Wizard","icons/asf-feather.gif");
+	    }
+	    return wizardImageDescriptor;
+	}
+	
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/AbstractWizardPage.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/AbstractWizardPage.java
new file mode 100644
index 0000000..ea0c1e4
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/AbstractWizardPage.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.ui;
+
+import org.apache.axis2.tool.codegen.eclipse.CodeGenWizard;
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.apache.axis2.tool.codegen.eclipse.util.SettingsConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.wizard.WizardPage;
+
+public abstract class AbstractWizardPage extends WizardPage implements SettingsConstants {
+    
+    protected IDialogSettings settings;
+    protected boolean restoredFromPreviousSettings = false;
+    
+    public AbstractWizardPage(String pageName){
+        super(pageName+".name");
+        init(pageName);
+    }
+    
+    protected void init(String pageName){
+        setTitle(CodegenWizardPlugin.getResourceString(pageName+".title"));
+        setDescription(CodegenWizardPlugin.getResourceString(pageName+".desc"));
+        setImageDescriptor(CodegenWizardPlugin.getWizardImageDescriptor());
+        
+        /*
+         * Get the settings for this page. If there is no section in the
+         * Plugin's settings for this OptionsPage, create a new section
+         */
+        IDialogSettings rootSettings = CodegenWizardPlugin.getDefault()
+                .getDialogSettings();
+        IDialogSettings section = rootSettings.getSection(this.getClass()
+                .getName());
+        if (section == null) {
+            settings = rootSettings.addNewSection(this.getClass().getName());
+            restoredFromPreviousSettings = false;
+            initializeDefaultSettings();
+        } else {
+            restoredFromPreviousSettings=true;
+            settings = section;
+        }
+    }
+
+    protected void updateStatus(String message) {
+    	setErrorMessage(message);
+        setPageComplete(message == null);
+    }
+
+    protected abstract void initializeDefaultSettings(); 
+   
+    public abstract int getPageType() ;
+    
+    /**
+     * a convenient method to get the wizard
+     * @return
+     */
+    public CodeGenWizard getCodegenWizard(){
+    	return (CodeGenWizard)getWizard();
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaSourceSelectionPage.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaSourceSelectionPage.java
new file mode 100644
index 0000000..fc83de9
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaSourceSelectionPage.java
@@ -0,0 +1,328 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.ui;
+
+
+
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.apache.axis2.tool.codegen.eclipse.util.ClassFileReader;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GCData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Text;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class JavaSourceSelectionPage extends AbstractWizardPage{
+
+    private Composite container;
+    private Text javaClassNameBox;
+    private List javaClasspathList;
+    private Label statusLabel;
+
+    public JavaSourceSelectionPage() {  
+    	super("page4");
+    }
+
+    protected void initializeDefaultSettings() {
+        settings.put(JAVA_CLASS_NAME, "");
+        settings.put(JAVA_CLASS_PATH_ENTRIES, new String[]{""});
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis2.tool.codegen.eclipse.ui.CodegenPage#getPageType()
+     */
+    public int getPageType() {
+        return JAVA_2_WSDL_TYPE;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    public void createControl(Composite parent) {
+        container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        container.setLayout(layout);
+        layout.numColumns = 3;
+        layout.verticalSpacing = 9;
+
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        
+        //class name  entry
+        Label label = new Label(container, SWT.NULL);
+        label.setText(CodegenWizardPlugin
+                .getResourceString("page4.classname.label"));
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 2;
+        javaClassNameBox = new Text(container,SWT.BORDER);
+        javaClassNameBox.setLayoutData(gd);
+        javaClassNameBox.setText(settings.get(JAVA_CLASS_NAME));
+        javaClassNameBox.addModifyListener(new ModifyListener(){
+            public void modifyText(ModifyEvent e){
+                handleClassNameTextChange();
+             }
+         });
+        
+        //class path entry
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan=3;
+        label = new Label(container, SWT.NULL);
+        label.setLayoutData(gd);
+        label.setText(CodegenWizardPlugin
+                .getResourceString("page4.classpath.label"));
+        
+        
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        Button addDirButton = new Button(container,SWT.PUSH);
+        addDirButton.setLayoutData(gd);
+        addDirButton.setText(CodegenWizardPlugin
+                .getResourceString("page4.addDir.label"));
+        addDirButton.addMouseListener(new MouseAdapter(){
+        	public void mouseUp(MouseEvent e) {
+        		handleDirectoryBrowse();
+        	}
+        });
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        Button addJarButton = new Button(container,SWT.PUSH);
+        addJarButton.setLayoutData(gd);
+        addJarButton.setText(CodegenWizardPlugin
+                .getResourceString("page4.addJar.label"));
+        addJarButton.addMouseListener(new MouseAdapter(){
+        	public void mouseUp(MouseEvent e) {
+        		handleFileBrowse();
+        	}
+        });
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        Button removeEntryButton = new Button(container,SWT.PUSH);
+        removeEntryButton.setLayoutData(gd);
+        removeEntryButton.setText(CodegenWizardPlugin
+                .getResourceString("page4.removeEntry.label"));
+        removeEntryButton.addMouseListener(new MouseAdapter(){
+        	public void mouseUp(MouseEvent e) {
+        		handleRemove();
+        	}
+        });
+        
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		gd.verticalSpan = 2;
+        ScrolledComposite c2 = new ScrolledComposite(container, SWT.V_SCROLL);
+        c2.setExpandHorizontal(false);
+        c2.setExpandVertical(false);
+		c2.setLayoutData(gd);
+		javaClasspathList = new List(c2,SWT.READ_ONLY |SWT.BORDER | SWT.V_SCROLL);
+		javaClasspathList.setLayoutData(gd);
+        settings.put(JAVA_CLASS_PATH_ENTRIES, new String[]{});
+		javaClasspathList.setItems(settings.getArray(JAVA_CLASS_PATH_ENTRIES));
+		javaClasspathList.setSize(600, 250);
+		c2.setContent(javaClasspathList);
+
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        Button tryLoadButton = new Button(container,SWT.PUSH);
+        tryLoadButton.setLayoutData(gd);
+        tryLoadButton.setText(CodegenWizardPlugin
+                .getResourceString("page4.tryLoad.label"));
+        tryLoadButton.addMouseListener(new MouseAdapter(){
+        	public void mouseUp(MouseEvent e) {
+        		java.util.List errorListener = new ArrayList();
+        		if (!ClassFileReader.tryLoadingClass(getClassName(),
+        				getClassPathList(),
+        				errorListener)){
+        			Iterator it = errorListener.iterator();
+        			while(it.hasNext()){
+        				Object nextObject = it.next();
+        				String errorMessage = nextObject==null?CodegenWizardPlugin
+				                .getResourceString("page4.unknownError.label"):nextObject.toString();
+						updateStatus(errorMessage);
+						updateStatusTextField(false,errorMessage);
+        			}
+        			
+        		}else{
+        			updateStatusTextField(true,CodegenWizardPlugin
+			                .getResourceString("page4.successLoading.label"));
+        			updateStatus(null);
+        		}
+        	}
+        });
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 2;
+        statusLabel = new Label(container,SWT.NULL);
+        statusLabel.setLayoutData(gd);
+        
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label fillLabel3 = new Label(container, SWT.HORIZONTAL | SWT.SEPARATOR);
+		fillLabel3.setLayoutData(gd);
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3; 
+		Label hintLabel = new Label(container, SWT.NULL);
+		hintLabel
+				.setText(CodegenWizardPlugin
+						.getResourceString("page4.hint.caption"));
+		hintLabel.setLayoutData(gd);
+//		hintLabel.setFont(new Font(new Device() {
+//			public int internal_new_GC(GCData data) {return 0;}
+//			public void internal_dispose_GC(int handle, GCData data) {}
+//											},"hintFont",8,SWT.NORMAL));
+        
+        setPageComplete(false);
+        setControl(container);
+        
+        if (restoredFromPreviousSettings){
+            handleClassNameTextChange();
+        }
+
+    }
+
+    
+    /**
+     * Pops up the file browse dialog box
+     *  
+     */
+    private void handleDirectoryBrowse() {
+        DirectoryDialog fileDialog = new DirectoryDialog(this.getShell());
+        String dirName = fileDialog.open();
+        if (dirName != null) {
+        	if (!checkFilenameExistsInList(dirName)){  
+        		javaClasspathList.add(dirName);
+        		updateListEntries();
+        	}
+        }
+        updateStatusTextField(false,"");
+    }
+    
+    
+    /**
+     * Pops up the file browse dialog box
+     *  
+     */
+    private void handleRemove() {
+        int[] selectionIndices = javaClasspathList.getSelectionIndices();
+        for (int i=0;i<selectionIndices.length;i++){
+        	javaClasspathList.remove(selectionIndices[i]);
+        }
+        updateListEntries();
+        updateStatusTextField(false,"");
+    }
+    
+   
+    /**
+     * Pops up the file browse dialog box
+     *  
+     */
+    private void handleFileBrowse() {
+        FileDialog fileDialog = new FileDialog(this.getShell());
+        fileDialog.setFilterExtensions(new String[]{"*.jar"});
+        String fileName = fileDialog.open();
+        if (fileName != null) {
+        	if (!checkFilenameExistsInList(fileName)){
+            	javaClasspathList.add(fileName);
+            	updateListEntries();
+        	}
+        }
+        updateStatusTextField(false,"");
+    }
+    
+    /**
+     * Method checks the list antries and compare that to the file name 
+     * return the results of the comparison
+     * @param filename
+     * @return
+     */
+    private boolean checkFilenameExistsInList(String filename){
+    	String[] array = javaClasspathList.getItems();
+
+    	for (int i = 0; i < array.length; i++) {
+			if (array[i].equals(filename)) {
+				return true;
+			}
+		}
+    	return false;
+    }
+    
+    private void updateStatusTextField(boolean success,String text){
+    	if (success){
+    		getCodegenWizard().setDefaultNamespaces(javaClassNameBox.getText());
+    	}
+     	statusLabel.setText(text);
+    }
+    
+    private void updateListEntries(){
+    	settings.put(JAVA_CLASS_PATH_ENTRIES,javaClasspathList.getItems());
+    }
+    /**
+     * 
+     *
+     */
+    private void handleClassNameTextChange(){
+        String className = javaClassNameBox.getText();
+        settings.put(JAVA_CLASS_NAME,className);
+        if (className==null || "".equals(className.trim())){
+            updateStatus(CodegenWizardPlugin
+                    .getResourceString("page4.error.invalidClassName"));
+        }else if(className.endsWith(".")){
+            updateStatus(CodegenWizardPlugin
+                    .getResourceString("page4.error.ClassNameNotTerminated"));
+        }else{
+        	//just leave it
+            //updateStatus(null);
+        }
+    }
+    
+    /**
+     * 
+     * @return
+     */
+    public String getClassName(){
+        return javaClassNameBox.getText();
+    }
+    
+    /**
+     * 
+     * @return
+     */
+    public String[] getClassPathList(){
+        return javaClasspathList.getItems();
+    }
+    
+   
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOptionsPage.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOptionsPage.java
new file mode 100644
index 0000000..97ba08a
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOptionsPage.java
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.ui;
+
+import org.apache.axis2.tool.codegen.eclipse.CodeGenWizard;
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.apache.axis2.tool.codegen.eclipse.util.NamespaceFinder;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/*
+ * Usage java2wsdl -cn <fully qualified class name> : class file name -o <output
+ * Location> : output file location -cp <class path uri> : list of classpath
+ * entries - (urls) -tn <target namespace> : target namespace -tp <target
+ * namespace prefix> : target namespace prefix -stn <schema target namespace> :
+ * target namespace for schema -stp <schema target namespace prefix> : target
+ * namespace prefix for schema -sn <service name> : service name -of <output
+ * file name> : output file name for the WSDL
+ */
+public class JavaWSDLOptionsPage extends AbstractWizardPage {
+
+	private Text targetNamespaceText;
+
+	private Text targetNamespacePrefixText;
+
+	private Text schemaTargetNamepaceText;
+
+	private Text schemaTargetNamespacePrefixText;
+
+	private Text serviceNameText;
+
+	// TODO need more here
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.axis2.tool.codegen.eclipse.ui.AbstractWizardPage#initializeDefaultSettings()
+	 */
+	protected void initializeDefaultSettings() {
+		settings.put(PREF_JAVA_TARGET_NS,"" );
+		settings.put(PREF_JAVA_TARGET_NS_PREF, "");
+		settings.put(PREF_JAVA_SCHEMA_TARGET_NS, "");
+		settings.put(PREF_JAVA_SCHEMA_TARGET_NS_PREF, "");
+		settings.put(PREF_JAVA_SERVICE_NAME, "");
+
+	}
+
+	
+	public void setNamespaceDefaults(String fullyQualifiedClassName){
+		
+		targetNamespaceText.setText(NamespaceFinder.getTargetNamespaceFromClass(fullyQualifiedClassName));
+		schemaTargetNamepaceText.setText(NamespaceFinder.getSchemaTargetNamespaceFromClass(fullyQualifiedClassName));
+		
+		targetNamespacePrefixText.setText(NamespaceFinder.getDefaultNamespacePrefix());
+		schemaTargetNamespacePrefixText.setText(NamespaceFinder.getDefaultSchemaNamespacePrefix());
+		
+		serviceNameText.setText(fullyQualifiedClassName.replaceAll("\\.","_"));
+	}
+	/**
+	 * @param pageName
+	 */
+	public JavaWSDLOptionsPage() {
+		super("page5");
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.axis2.tool.codegen.eclipse.ui.CodegenPage#getPageType()
+	 */
+	public int getPageType() {
+		return JAVA_2_WSDL_TYPE;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		container.setLayout(layout);
+		layout.numColumns = 2;
+		layout.verticalSpacing = 9;
+
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		Label label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page5.targetNamespace.label"));
+
+		targetNamespaceText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		targetNamespaceText.setLayoutData(gd);
+		targetNamespaceText.setText(settings.get(PREF_JAVA_TARGET_NS));
+		targetNamespaceText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				settings
+						.put(PREF_JAVA_TARGET_NS, targetNamespaceText.getText());
+				// dialogChanged();
+			}
+		});
+
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page5.targetNamespacePrefix.label"));
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		targetNamespacePrefixText = new Text(container, SWT.BORDER);
+		targetNamespacePrefixText.setLayoutData(gd);
+		targetNamespacePrefixText.setText(settings
+				.get(PREF_JAVA_TARGET_NS_PREF));
+		targetNamespacePrefixText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				settings.put(PREF_JAVA_TARGET_NS_PREF,
+						targetNamespacePrefixText.getText());
+				// dialogChanged();
+			}
+		});
+
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page5.schemaTargetNs.label"));
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		schemaTargetNamepaceText = new Text(container, SWT.BORDER);
+		schemaTargetNamepaceText.setLayoutData(gd);
+		schemaTargetNamepaceText.setText(settings
+				.get(PREF_JAVA_SCHEMA_TARGET_NS_PREF));
+		schemaTargetNamepaceText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				settings.put(PREF_JAVA_SCHEMA_TARGET_NS_PREF,
+						schemaTargetNamepaceText.getText());
+				// dialogChanged();
+			}
+		});
+
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page5.schemaTargetNsPrefix.label"));
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		schemaTargetNamespacePrefixText = new Text(container, SWT.BORDER);
+		schemaTargetNamespacePrefixText.setLayoutData(gd);
+		schemaTargetNamespacePrefixText.setText(settings
+				.get(PREF_JAVA_SCHEMA_TARGET_NS));
+		schemaTargetNamespacePrefixText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				settings.put(PREF_JAVA_SCHEMA_TARGET_NS,
+						schemaTargetNamespacePrefixText.getText());
+				// dialogChanged();
+			}
+		});
+
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page5.serviceName.label"));
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		serviceNameText = new Text(container, SWT.BORDER);
+		serviceNameText.setLayoutData(gd);
+		serviceNameText.setText(settings
+				.get(PREF_JAVA_SCHEMA_TARGET_NS));
+		serviceNameText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				settings.put(PREF_JAVA_SERVICE_NAME,
+						serviceNameText.getText());
+				dialogChanged();
+			}
+		});
+
+		setControl(container);
+		
+
+	}
+
+	public String getTargetNamespace() {
+		return this.targetNamespaceText.getText();
+	}
+
+	public String getTargetNamespacePrefix() {
+		return this.targetNamespacePrefixText.getText();
+	}
+
+	public String getSchemaTargetNamespace() {
+		return this.schemaTargetNamepaceText.getText();
+	}
+
+	public String getSchemaTargetNamespacePrefix() {
+		return this.schemaTargetNamespacePrefixText.getText();
+	}
+
+	public String getServiceName() {
+		return this.serviceNameText.getText();
+	}
+
+    /**
+     * Handle the dialog change event. Basically evaluates the file name and
+     * sets the error message accordingly
+     */
+    private void dialogChanged() {
+        String fileName = getServiceName();
+
+        if (fileName.length() == 0) {
+            updateStatus(CodegenWizardPlugin
+                    .getResourceString("page5.error.filemissingerror"));
+            return;
+	}
+        // update the status
+        updateStatus(null);
+    }
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOutputLocationPage.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOutputLocationPage.java
new file mode 100644
index 0000000..eccbe15
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOutputLocationPage.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.ui;
+
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.ContainerSelectionDialog;
+
+import java.io.File;
+
+public class JavaWSDLOutputLocationPage extends AbstractWizardPage {
+
+	private Text outputFolderTextBox;
+
+	private Text outputFileNameTextBox;
+
+	private Button workspaceProjectOptionsButton;
+
+	private Button filesyStemOptionsButton;
+
+	private boolean workspaceSaveOption = false;
+
+	/**
+	 * @param pageName
+	 */
+	public JavaWSDLOutputLocationPage() {
+		super("page6");
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.tool.codegen.eclipse.ui.AbstractWizardPage#initializeDefaultSettings()
+	 */
+	protected void initializeDefaultSettings() {
+		settings.put(PREF_JAVA_OUTPUT_WSDL_LOCATION, System
+				.getProperty("user.dir"));
+		settings.put(JAVA_OUTPUT_WSDL_NAME, "services.wsdl");
+		settings.put(PREF_JAVA_OUTPUT_FILESYATEM, true);
+		settings.put(PREF_JAVA_OUTPUT_WORKSPACE, false);
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.tool.codegen.eclipse.ui.AbstractWizardPage#getPageType()
+	 */
+	public int getPageType() {
+		return JAVA_2_WSDL_TYPE;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		layout.numColumns = 3;
+		//layout.verticalSpacing = 9;
+		container.setLayout(layout);
+
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label selectLabel = new Label(container, SWT.NULL);
+		selectLabel
+				.setText(CodegenWizardPlugin
+						.getResourceString("Select the location where to put the output"));
+		selectLabel.setLayoutData(gd);
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		workspaceProjectOptionsButton = new Button(container, SWT.RADIO);
+		workspaceProjectOptionsButton.setLayoutData(gd);
+		workspaceProjectOptionsButton.setText(CodegenWizardPlugin
+				.getResourceString("page6.workspace.caption"));
+		workspaceProjectOptionsButton.setToolTipText(CodegenWizardPlugin
+				.getResourceString("page6.workspace.desc"));
+		workspaceProjectOptionsButton.setSelection(settings
+				.getBoolean(PREF_JAVA_OUTPUT_WORKSPACE));
+		workspaceProjectOptionsButton
+				.addSelectionListener(new SelectionAdapter() {
+					public void widgetSelected(SelectionEvent e) {
+						handleCheckboxSelection();
+					}
+				});
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		filesyStemOptionsButton = new Button(container, SWT.RADIO);
+		filesyStemOptionsButton.setLayoutData(gd);
+		filesyStemOptionsButton.setText(CodegenWizardPlugin
+				.getResourceString("page6.filesystem.caption"));
+		filesyStemOptionsButton.setToolTipText(CodegenWizardPlugin
+				.getResourceString("page6.filesystem.desc"));
+		filesyStemOptionsButton.setSelection(settings
+				.getBoolean(PREF_JAVA_OUTPUT_FILESYATEM));
+		filesyStemOptionsButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handleCheckboxSelection();
+			}
+		});
+
+		Label label1 = new Label(container, SWT.NULL);
+		label1.setText(CodegenWizardPlugin
+				.getResourceString("page6.output.label"));
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		outputFolderTextBox = new Text(container, SWT.BORDER);
+		outputFolderTextBox.setLayoutData(gd);
+		outputFolderTextBox.setText(settings
+				.get(PREF_JAVA_OUTPUT_WSDL_LOCATION));
+		outputFolderTextBox.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				handleFolderTextChange();
+			}
+		});
+
+		Button browseButton = new Button(container, SWT.PUSH);
+		browseButton.setText(CodegenWizardPlugin
+				.getResourceString("general.browse"));
+		browseButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				handleBrowse();
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		Label label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page6.outputname.label"));
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		outputFileNameTextBox = new Text(container, SWT.BORDER);
+		outputFileNameTextBox.setLayoutData(gd);
+		outputFileNameTextBox.setText(settings.get(JAVA_OUTPUT_WSDL_NAME));
+		outputFileNameTextBox.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				handleFileNameTextChange();
+			}
+		});
+
+		if (restoredFromPreviousSettings) {
+			handleFolderTextChange();
+			handleFolderTextChange();
+		}
+
+		setControl(container);
+
+	}
+
+	private void handleCheckboxSelection() {
+		if (workspaceProjectOptionsButton.getSelection()) {
+			settings.put(PREF_JAVA_OUTPUT_WORKSPACE, true);
+			settings.put(PREF_JAVA_OUTPUT_FILESYATEM, false);
+			workspaceSaveOption = true;
+		} else if (filesyStemOptionsButton.getSelection()) {
+			settings.put(PREF_JAVA_OUTPUT_FILESYATEM, true);
+			settings.put(PREF_JAVA_OUTPUT_WORKSPACE, false);
+			workspaceSaveOption = false;
+		}
+	}
+
+	private void handleFolderTextChange() {
+		String outputFolder = outputFolderTextBox.getText();
+		settings.put(PREF_JAVA_OUTPUT_WSDL_LOCATION, outputFolder);
+		if ("".equals(outputFolder.trim())) {
+			updateStatus("Input a proper location for the output");
+		} else {
+			updateStatus(null);
+		}
+	}
+
+	private void handleFileNameTextChange() {
+		String outFileName = outputFileNameTextBox.getText();
+		settings.put(JAVA_OUTPUT_WSDL_NAME, outFileName);
+		if ("".equals(outFileName.trim())) {
+			updateStatus("Input a file name");
+		} else if (outFileName.matches("\\W")) {
+			updateStatus("Input a valid file name");
+		} else if (!(outFileName.endsWith(".wsdl") || outFileName.endsWith(".xml")) ) {
+			updateStatus("Input a valid file name , Example : services.wsdl or services.xml");
+		} else {
+			updateStatus(null);
+		}
+	}
+
+	private void handleBrowse() {
+
+		//    	boolean location = locationSelectCheckBox.getSelection();
+		boolean location = false;
+		if(settings.getBoolean(PREF_JAVA_OUTPUT_FILESYATEM)){
+			location = false;
+		}else if(settings.getBoolean(PREF_JAVA_OUTPUT_WORKSPACE)){
+			location = true;
+		}
+		if (workspaceSaveOption) {
+			location = true;
+		}
+		if (!location) {
+			DirectoryDialog dialog = new DirectoryDialog(this.getShell());
+			String returnString = dialog.open();
+			if (returnString != null) {
+				outputFolderTextBox.setText(returnString);
+			}
+		} else {
+			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+
+			ContainerSelectionDialog dialog = new ContainerSelectionDialog(
+					getShell(), root, false, CodegenWizardPlugin
+							.getResourceString("page3.containerbox.title"));
+			if (dialog.open() == ContainerSelectionDialog.OK) {
+				Object[] result = dialog.getResult();
+				if (result.length == 1) {
+					Path path = ((Path) result[0]);
+					// append to the workspace path
+					if (root.exists(path)) {
+						outputFolderTextBox.setText(root.getLocation().append(
+								path).toFile().getAbsolutePath());
+					}
+				}
+			}
+		}
+
+	}
+
+	public String getFullFileName() {
+		String folder = this.outputFolderTextBox.getText();
+		String fileName = this.outputFileNameTextBox.getText();
+		if (!fileName.endsWith(".wsdl")) {
+			fileName = fileName + ".wsdl";
+		}
+		return folder + File.separator + fileName;
+	}
+
+	public String getOutputWSDLName() {
+		return this.outputFileNameTextBox.getText();
+	}
+
+	public String getOutputLocation() {
+		return this.outputFolderTextBox.getText();
+	}
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OptionsPage.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OptionsPage.java
new file mode 100644
index 0000000..dbb6421
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OptionsPage.java
@@ -0,0 +1,1234 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.ui;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.wsdl.WSDLException;
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.apache.axis2.tool.codegen.eclipse.util.UIConstants;
+import org.apache.axis2.tool.codegen.eclipse.util.WSDLPropertyReader;
+import org.apache.axis2.util.URLProcessor;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.TableEditor;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Options Page lets the user change general settings on the code generation. It
+ * is used in the CodegenWizardPlugin, CodeGenWizard.
+ * 
+ */
+public class OptionsPage extends AbstractWizardPage implements UIConstants {
+
+	/**
+	 * Selection list for target languages
+	 */
+	private Combo languageSelectionComboBox;
+
+	/**
+	 * A radio button to enable/disable code generation for synchronous and
+	 * asynchronous calls.
+	 */
+	private Button syncAndAsyncRadioButton;
+
+	/**
+	 * A radio button to choose "synchronous only" code generation
+	 */
+	private Button syncOnlyRadioButton;
+
+	/**
+	 * A radio button to choose "asynchronous only" code generation
+	 */
+	private Button asyncOnlyRadioButton;
+
+	/**
+	 * Label holding the full qualified package name for generated code
+	 */
+	private Text packageText;
+
+	/**
+	 * Checkbox to enable server-side skeleton code generation. If enabled,
+	 * generates an empty implementation of the service
+	 */
+	private Button serverSideCheckBoxButton;
+	
+	/**
+	 * Checkbox to enable client side code generation. If enabled,
+	 * generates an empty implementation of the service
+	 */
+	private Button clientSideCheckBoxButton;
+
+	/**
+	 * Checkbox to enable the generation of test case classes for the generated
+	 * implementation of the webservice.
+	 */
+	private Button testCaseCheckBoxButton;
+
+	/**
+	 * Checkbox to enable the generation of a default server.xml configuration
+	 * file
+	 */
+	private Button serverXMLCheckBoxButton;
+
+	/**
+	 * Checkbox to enable the generate all classes
+	 */
+	private Button generateAllCheckBoxButton;
+	
+	/**
+	 *  check box for server side interface
+	 */
+	private Button generateServerSideInterfaceCheckBoxButton;
+
+	private Combo databindingTypeCombo;
+
+	/**
+	 * Text box to have the portname
+	 */
+	private Combo portNameCombo;
+
+	/**
+	 * Text box to have the service name
+	 */
+	private Combo serviceNameCombo;
+
+	private WSDLPropertyReader reader;
+
+	private java.util.List serviceQNameList = null;
+	
+	private final int EDITABLECOLUMN = 1;
+	
+	private String defaultPackageName = null;
+	
+	private Combo codegenOptionSelectionComboBox;
+	
+	/**
+	 * A table to keep the namespace to 
+	 * package mappings
+	 */
+	private Table namespace2packageTable = null;
+	
+	Composite container;
+
+	/**
+	 * Creates the page and initialize some settings
+	 */
+	public OptionsPage() {
+		super("page2");
+	}
+
+	/**
+	 * Sets the default values for the Options page
+	 * 
+	 */
+	protected void initializeDefaultSettings() {
+		settings.put(PREF_CHECK_GENERATE_SERVERCONFIG, false);
+		settings.put(PREF_CHECK_GENERATE_SERVERSIDE, false);
+		settings.put(PREF_CHECK_GENERATE_TESTCASE, false);
+		settings.put(PREF_LANGUAGE_INDEX, 0);
+		settings.put(PREF_PACKAGE_NAME, DEFAULT_PACKAGENAME);
+		settings.put(PREF_RADIO_ASYNC_ONLY, false);
+		settings.put(PREF_RADIO_SYNC_AND_ASYNC, true);
+		settings.put(PREF_RADIO_SYNC_ONLY, false);
+		settings.put(PREF_COMBO_PORTNAME_INDEX, 0);
+		settings.put(PREF_COMBO_SERVICENAME_INDEX, 0);
+		settings.put(PREF_DATABINDER_INDEX, 0);
+		settings.put(PREF_GEN_ALL, false);
+		settings.put(PREF_GEN_SS_INTERFACE, false);
+	}
+
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createControl(Composite parent) {
+
+		container = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		container.setLayout(layout);
+		layout.numColumns = 3;
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+
+	    Label label = new Label(container, SWT.NULL);
+	    label.setText(CodegenWizardPlugin.getResourceString("page2.options.desc"));
+	    label.setLayoutData(gd);
+	    
+	        
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+
+		codegenOptionSelectionComboBox = new Combo(container, SWT.DROP_DOWN| SWT.BORDER | SWT.READ_ONLY);
+		// fill the combo
+		this.fillCodegenOptionSelectionComboBox();
+		codegenOptionSelectionComboBox.setLayoutData(gd);
+		settings.put(PREF_CODEGEN_OPTION_INDEX, codegenOptionSelectionComboBox
+				.getSelectionIndex());
+		codegenOptionSelectionComboBox.select(settings.getInt(PREF_CODEGEN_OPTION_INDEX));
+		codegenOptionSelectionComboBox.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_CODEGEN_OPTION_INDEX, codegenOptionSelectionComboBox
+						.getSelectionIndex());
+				if (codegenOptionSelectionComboBox
+						.getSelectionIndex() == 0 ){
+					disableControls();
+					
+				}else if (codegenOptionSelectionComboBox
+						.getSelectionIndex() == 1){
+					enableControls();
+				}
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+			
+			
+			
+			
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+
+		Label label1 = new Label(container, SWT.NULL);
+		label1.setText(CodegenWizardPlugin
+				.getResourceString("page2.language.caption"));
+
+		languageSelectionComboBox = new Combo(container, SWT.DROP_DOWN| SWT.BORDER | SWT.READ_ONLY);
+		// fill the combo
+		this.fillLanguageCombo();
+		languageSelectionComboBox.setLayoutData(gd);
+		languageSelectionComboBox.select(settings.getInt(PREF_LANGUAGE_INDEX));
+		languageSelectionComboBox.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_LANGUAGE_INDEX, languageSelectionComboBox
+						.getSelectionIndex());
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		// service name
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page2.serviceName.caption"));
+
+		serviceNameCombo = new Combo(container, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		serviceNameCombo.setLayoutData(gd);
+		// serviceNameCombo.setText(settings.get(PREF_TEXT_SERVICENAME));
+		serviceNameCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				// update the settings
+				settings.put(PREF_COMBO_SERVICENAME_INDEX, serviceNameCombo
+						.getSelectionIndex());
+				// reload the portName list
+				loadPortNames();
+
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		// port name
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page2.portName.caption"));
+		portNameCombo = new Combo(container, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		portNameCombo.setLayoutData(gd);
+
+		portNameCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				// do something here
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		// Databinding
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page2.databindingCheck.caption"));
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		databindingTypeCombo = new Combo(container, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		databindingTypeCombo.setLayoutData(gd);
+		fillDatabinderCombo();
+		databindingTypeCombo.select(settings.getInt(PREF_DATABINDER_INDEX));
+		databindingTypeCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_DATABINDER_INDEX, databindingTypeCombo
+						.getSelectionIndex());
+
+			};
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			};
+		});
+		
+		// package name
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page2.package.caption"));
+		packageText = new Text(container, SWT.BORDER);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+
+		packageText.setLayoutData(gd);
+		String packageName;
+		String storedPackageName = settings.get(PREF_PACKAGE_NAME);
+		this.defaultPackageName = storedPackageName;
+		if (storedPackageName.equals("")) {
+			packageName = URLProcessor.makePackageName("");
+		} else {
+			packageName = storedPackageName;
+		}
+		
+		//if the package name somehow turned out to be null set it to 
+		//default package
+		if (packageName==null)packageName=URLProcessor.DEFAULT_PACKAGE;
+		
+		packageText.setText(packageName); // get this text from the
+		// URLProcessor
+		packageText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				handleCustomPackageNameModifyEvent();
+				settings.put(PREF_PACKAGE_NAME, packageText.getText());
+			}
+		});
+		
+		
+		// generate test case option
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		testCaseCheckBoxButton = new Button(container, SWT.CHECK);
+		testCaseCheckBoxButton.setLayoutData(gd);
+		testCaseCheckBoxButton
+				.setText(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+						.getResourceString("page2.testcase.caption"));
+		testCaseCheckBoxButton.setSelection(settings
+				.getBoolean(PREF_CHECK_GENERATE_TESTCASE));
+		testCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_CHECK_GENERATE_TESTCASE,
+						testCaseCheckBoxButton.getSelection());
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label fillLabel = new Label(container, SWT.HORIZONTAL | SWT.SEPARATOR);
+		fillLabel.setLayoutData(gd);
+
+		//cleint side label 
+//		gd = new GridData(GridData.FILL_HORIZONTAL);
+//		gd.horizontalSpan = 3;
+//		Label lblClientside = new Label(container, SWT.NONE);
+//		lblClientside.setText(CodegenWizardPlugin
+//				.getResourceString("page2.clientside.caption"));
+//		lblClientside.setLayoutData(gd);
+		
+		//cleint side label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		clientSideCheckBoxButton = new Button(container, SWT.CHECK);
+		clientSideCheckBoxButton.setLayoutData(gd);
+		clientSideCheckBoxButton.setText(CodegenWizardPlugin
+				.getResourceString("page2.clientside.caption"));
+		clientSideCheckBoxButton.setSelection(settings
+				.getBoolean(PREF_CHECK_GENERATE_CLIENTSIDE));
+		clientSideCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				handleClientsideSelection();
+				settings.put(PREF_CHECK_GENERATE_CLIENTSIDE,
+						clientSideCheckBoxButton.getSelection());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+
+		//client side buttons
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 1;
+		syncAndAsyncRadioButton = new Button(container, SWT.RADIO);
+		syncAndAsyncRadioButton.setLayoutData(gd);
+		syncAndAsyncRadioButton.setText(CodegenWizardPlugin
+				.getResourceString("page2.syncAsync.caption"));
+		syncAndAsyncRadioButton.setSelection(settings
+				.getBoolean(PREF_RADIO_SYNC_AND_ASYNC));
+		syncAndAsyncRadioButton.setVisible(true);
+		syncAndAsyncRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_RADIO_SYNC_AND_ASYNC, syncAndAsyncRadioButton
+						.getSelection());
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 1;
+		syncOnlyRadioButton = new Button(container, SWT.RADIO);
+		syncOnlyRadioButton.setLayoutData(gd);
+		syncOnlyRadioButton.setText(CodegenWizardPlugin
+				.getResourceString("page2.sync.caption"));
+		syncOnlyRadioButton.setSelection(settings
+				.getBoolean(PREF_RADIO_SYNC_ONLY));
+		syncOnlyRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_RADIO_SYNC_ONLY, syncOnlyRadioButton
+						.getSelection());
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 1;
+		asyncOnlyRadioButton = new Button(container, SWT.RADIO);
+		asyncOnlyRadioButton.setLayoutData(gd);
+		asyncOnlyRadioButton
+				.setText(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+						.getResourceString("page2.async.caption"));
+		asyncOnlyRadioButton.setSelection(settings
+				.getBoolean(PREF_RADIO_ASYNC_ONLY));
+		asyncOnlyRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_RADIO_ASYNC_ONLY, asyncOnlyRadioButton
+						.getSelection());
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label fillLabel1 = new Label(container, SWT.HORIZONTAL | SWT.SEPARATOR);
+		fillLabel1.setLayoutData(gd);
+		
+		
+		// Server side check box
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		serverSideCheckBoxButton = new Button(container, SWT.CHECK);
+		serverSideCheckBoxButton.setLayoutData(gd);
+		serverSideCheckBoxButton.setText(CodegenWizardPlugin
+				.getResourceString("page2.serverside.caption"));
+		serverSideCheckBoxButton.setSelection(settings
+				.getBoolean(PREF_CHECK_GENERATE_SERVERSIDE));
+		serverSideCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				handleServersideSelection();
+				settings.put(PREF_CHECK_GENERATE_SERVERSIDE,
+						serverSideCheckBoxButton.getSelection());
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		// Server side services xml
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 1;
+		serverXMLCheckBoxButton = new Button(container, SWT.CHECK);
+		serverXMLCheckBoxButton.setLayoutData(gd);
+		serverXMLCheckBoxButton.setSelection(settings
+				.getBoolean(PREF_CHECK_GENERATE_SERVERCONFIG));
+		serverXMLCheckBoxButton.setText(CodegenWizardPlugin
+				.getResourceString("page2.serviceXML.caption"));
+		serverXMLCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_CHECK_GENERATE_SERVERCONFIG,
+						serverXMLCheckBoxButton.getEnabled());
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+
+		//the server side interface option
+		generateServerSideInterfaceCheckBoxButton = new Button(container, SWT.CHECK);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 1;
+		generateServerSideInterfaceCheckBoxButton.setLayoutData(gd);
+		generateServerSideInterfaceCheckBoxButton.setSelection(settings
+				.getBoolean(PREF_GEN_SS_INTERFACE));
+		generateServerSideInterfaceCheckBoxButton.setText(CodegenWizardPlugin
+				.getResourceString("page2.ssInterface.caption"));
+		generateServerSideInterfaceCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_GEN_SS_INTERFACE, generateServerSideInterfaceCheckBoxButton
+						.getSelection());
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label fillLabel2 = new Label(container, SWT.HORIZONTAL | SWT.SEPARATOR);
+		fillLabel2.setLayoutData(gd);
+		
+		// generate all
+		generateAllCheckBoxButton = new Button(container, SWT.CHECK);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		generateAllCheckBoxButton.setLayoutData(gd);
+		generateAllCheckBoxButton.setSelection(settings
+				.getBoolean(PREF_GEN_ALL));
+		generateAllCheckBoxButton.setText(CodegenWizardPlugin
+				.getResourceString("page2.genAll.caption"));
+		generateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				settings.put(PREF_GEN_ALL, generateAllCheckBoxButton
+						.getSelection());
+				handleGenerateAllSelection();
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label fillLabel3 = new Label(container, SWT.HORIZONTAL | SWT.SEPARATOR);
+		fillLabel3.setLayoutData(gd);
+
+		//		 Databinding
+		label = new Label(container, SWT.NULL);
+		label.setText(CodegenWizardPlugin
+				.getResourceString("page2.namespace2Pkg.caption"));
+		
+		//add a table to set namespace to package mapping
+		gd = new GridData(GridData.FILL_BOTH);
+        gd.horizontalSpan = 3;
+        gd.verticalSpan = 5;
+        
+        namespace2packageTable = new Table(container,SWT.BORDER|SWT.MULTI);
+        namespace2packageTable.setLinesVisible(true);
+        namespace2packageTable.setHeaderVisible(true); 
+        namespace2packageTable.setEnabled(true);
+        namespace2packageTable.setLayoutData(gd);
+       
+        declareColumn(namespace2packageTable,
+        		350, //a default width until we adjust
+        		CodegenWizardPlugin
+				.getResourceString("page2.namespace.caption"));
+        declareColumn(namespace2packageTable,
+        		200,//a default width until we adjust
+        		CodegenWizardPlugin
+				.getResourceString("page2.package.caption"));
+        
+        namespace2packageTable.setVisible(true);
+        
+        // add the table editor
+        final TableEditor editor = new TableEditor(namespace2packageTable);
+        editor.setColumn(1);
+        editor.horizontalAlignment = SWT.LEFT;
+        editor.grabHorizontal = true;
+        //This is the cute way of making the namespaces columns editable
+        namespace2packageTable.addListener(SWT.MouseDown, new Listener() {
+            public void handleEvent(Event event) {
+              Rectangle clientArea = namespace2packageTable.getClientArea();
+              Point pt = new Point(event.x, event.y);
+              int index = namespace2packageTable.getTopIndex();
+              while (index < namespace2packageTable.getItemCount()) {
+                boolean visible = false;
+                final TableItem item = namespace2packageTable.getItem(index);
+                for (int i = 0; i < namespace2packageTable.getColumnCount(); i++) {
+                  Rectangle rect = item.getBounds(i);
+                  if (rect.contains(pt)) {
+                    final int column = i;
+                    final Text text = new Text(namespace2packageTable, SWT.NONE);
+                    Listener textListener = new Listener() {
+                      public void handleEvent(final Event e) {
+                        switch (e.type) {
+                        case SWT.FocusOut:
+                          item.setText(column, text.getText());
+                          text.dispose();
+                          break;
+                        case SWT.Traverse:
+                          switch (e.detail) {
+                          case SWT.TRAVERSE_RETURN:
+                            item
+                                .setText(column, text
+                                    .getText());
+                          // FALL THROUGH
+                          case SWT.TRAVERSE_ESCAPE:
+                            text.dispose();
+                            e.doit = false;
+                          }
+                          break;
+                        }
+                      }
+                    };
+                    text.addListener(SWT.FocusOut, textListener);
+                    text.addListener(SWT.Traverse, textListener);
+                    editor.setEditor(text, item, i);
+                    text.setText(item.getText(i));
+                    text.selectAll();
+                    text.setFocus();
+                    return;
+                  }
+                  if (!visible && rect.intersects(clientArea)) {
+                    visible = true;
+                  }
+                }
+                if (!visible)
+                  return;
+                index++;
+              }
+            }
+          });
+       
+        
+        //adjust the width
+        //adjustColumnWidth(namespace2packageTable);
+       
+		/*
+		 * Check the state of server-side selection, so we can enable/disable
+		 * the serverXML checkbox button.
+		 */
+		handleServersideSelection();
+		/*
+		 * try populating the combos and other information from the WSDL if this
+		 * is restored
+		 */
+		if (restoredFromPreviousSettings) {
+			populateParamsFromWSDL();
+			selectDefaults();
+		}
+		
+		//first appearence Disable all the controls 
+		disableControls();
+		
+		
+		setControl(container);
+
+		setPageComplete(true);
+
+	}
+
+//	/**
+//	 * Adjust the column widths
+//	 * @param table
+//	 */
+//	private void adjustColumnWidth(Table table){
+//		 Point p = namespace2packageTable.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+//	     int columns = table.getColumnCount();
+//	     for (int i=0;i<columns;i++){
+//	    	 table.getColumn(i).setWidth(p.x/columns);
+//	     }
+//	}
+	/**
+	 * A util method to create a new column
+	 * @param table
+	 * @param width
+	 * @param colName
+	 */
+	private void declareColumn(Table table, int width,String colName){
+        TableColumn column = new TableColumn(table,SWT.NONE);
+        column.setWidth(width);
+        column.setText(colName);
+    }
+	
+	private void selectDefaults() {
+		serviceNameCombo.select(settings.getInt(PREF_COMBO_SERVICENAME_INDEX));
+		// ports need to be renamed in order for correct default selection
+		loadPortNames();
+		portNameCombo.select(settings.getInt(PREF_COMBO_SERVICENAME_INDEX));
+	}
+
+	private void populatePackageName() {
+		this.packageText.setText(reader.packageFromTargetNamespace());
+	}
+
+	/**
+	 * populate the service and the port from the WSDL this needs to be public
+	 * since the WSDLselection page may call this
+	 */
+	public void populateParamsFromWSDL() {
+		if (reader == null)
+			reader = new WSDLPropertyReader();
+		try {
+			String lname = getCodegenWizard().getWSDLname();
+			if (!"".equals(lname.trim())) {
+				
+				reader.readWSDL(lname);
+
+				// enable the combo's
+				setComboBoxEnable(true);
+
+				this.serviceQNameList = reader.getServiceList();
+				if (!serviceQNameList.isEmpty()) {
+					serviceNameCombo.removeAll();
+					for (int i = 0; i < serviceQNameList.size(); i++) {
+						// add the local part of the
+						serviceNameCombo.add(((QName) serviceQNameList.get(i))
+								.getLocalPart());
+					}
+					;
+					// select the first one as the default
+					serviceNameCombo.select(0);
+
+					// load the ports
+					loadPortNames();
+
+					updateStatus(null);
+				} else {
+					// service name list being empty means we are switching to
+					// the interface mode
+					if (serviceNameCombo!=null) serviceNameCombo.removeAll();
+					if (portNameCombo!=null) portNameCombo.removeAll();
+					// disable the combo's
+					setComboBoxEnable(false);
+					//this is not an error
+					updateStatus(null);
+			
+				}
+
+				populatePackageName();
+				
+				//populate the namespacess
+			    loadNamespaces(reader.getDefinitionNamespaceMap());
+			}
+		} catch (WSDLException e) {
+			// disable the combo's
+			setComboBoxEnable(false);
+			updateStatus(CodegenWizardPlugin
+					.getResourceString("page2.wsdlInvalid.message"));
+		}
+		catch (Exception e) {
+			// disable the combo's
+			setComboBoxEnable(false);
+			updateStatus(CodegenWizardPlugin
+					.getResourceString("page2.wsdlNotFound.message"));
+		}
+
+	}
+
+	private void loadPortNames() {
+		int selectionIndex = serviceNameCombo.getSelectionIndex();
+		if (selectionIndex != -1) {
+			java.util.List ports = reader.getPortNameList((QName) serviceQNameList
+					.get(selectionIndex));
+			if (!ports.isEmpty()) {
+				portNameCombo.removeAll();
+				for (int i = 0; i < ports.size(); i++) {
+					// add the local part of the
+					portNameCombo.add(ports.get(i).toString());
+				}
+				updateStatus(null);
+				portNameCombo.select(0);
+			} else {
+				updateStatus(CodegenWizardPlugin
+						.getResourceString("page2.noports.message"));// TODO
+			}
+		}
+	}
+
+	private void setComboBoxEnable(boolean b) {
+		if (serviceNameCombo != null) {
+			serviceNameCombo.setEnabled(b);
+			portNameCombo.setEnabled(b);
+		}
+	}
+
+	/**
+	 * Loads the namespaces
+	 * @param namespaceMap
+	 */
+	private void loadNamespaces(Map namespaceMap){
+		Iterator namespaces = namespaceMap.values().iterator();
+		namespace2packageTable.removeAll();
+        TableItem[] items = new TableItem[namespaceMap.size()]; // An item for each field
+        
+        int i = 0;
+        while(namespaces.hasNext()){
+        	
+           items[i] = new TableItem(namespace2packageTable, SWT.NULL);
+           String namespace = (String)namespaces.next();
+           items[i].setText(0,namespace);
+           items[i].setText(1,getPackageFromNamespace(namespace));
+           i++;
+        }
+
+        namespace2packageTable.setVisible(true);
+		
+	}
+	
+	/**
+	 * Fill the combo with proper databinding names
+	 * 
+	 */
+	private void fillDatabinderCombo() {
+
+		databindingTypeCombo.add(DATA_BINDING_ADB);
+		databindingTypeCombo.add(DATA_BINDING_XMLBEANS);
+		//databindingTypeCombo.add(DATA_BINDING_JIBX);
+		//databindingTypeCombo.add(DATA_BINDING_JAXME);
+		databindingTypeCombo.add(DATA_BINDING_NONE);
+
+	}
+
+	/**
+	 * Fill the combo with proper language names
+	 * 
+	 */
+	private void fillLanguageCombo() {
+
+		languageSelectionComboBox.add(JAVA);
+		//since we have not looked at C# support seriously
+		//for a long time, we'll just leave it out
+		//languageSelectionComboBox.add(C_SHARP);
+
+		languageSelectionComboBox.select(0);
+	}
+	
+	/**
+	 * Fill the combo with properoption selection
+	 * 
+	 */
+	private void fillCodegenOptionSelectionComboBox() {
+		codegenOptionSelectionComboBox.add(DEFAULT);
+		codegenOptionSelectionComboBox.add(CUSTOM);
+		codegenOptionSelectionComboBox.select(0);
+	}
+
+
+	/**
+	 * Validates the status of the server-side checkbox, and enables/disables
+	 * the generation checkbox for XML configuration file
+	 */
+	private void handleServersideSelection() {
+		if (this.serverSideCheckBoxButton.getSelection()) {
+			settings.put(PREF_CHECK_GENERATE_SERVERSIDE, serverSideCheckBoxButton
+					.getSelection());
+			this.serverXMLCheckBoxButton.setEnabled(true);
+			//this.generateAllCheckBoxButton.setEnabled(true);
+			this.generateServerSideInterfaceCheckBoxButton.setEnabled(true);
+			if(clientSideCheckBoxButton.getSelection()==true 
+					|| generateAllCheckBoxButton.getSelection() == true){
+				uncheckClientSide();
+				uncheckGenerateAll();
+				serverSideCheckBoxButton.setSelection(true);
+				settings.put(PREF_CHECK_GENERATE_SERVERSIDE, serverSideCheckBoxButton
+						.getSelection());
+			}
+			this.syncAndAsyncRadioButton.setSelection(false);
+			this.asyncOnlyRadioButton.setSelection(false);
+			this.syncOnlyRadioButton.setSelection(false);
+			//earlier existing code (This only set focus false)
+			this.syncAndAsyncRadioButton.setEnabled(false);
+			this.asyncOnlyRadioButton.setEnabled(false);
+			this.syncOnlyRadioButton.setEnabled(false);
+			this.testCaseCheckBoxButton.setEnabled(false);
+			this.testCaseCheckBoxButton.setSelection(false);
+
+		} 
+			else {
+//			//added this to increase the UI features (this will deselct all the selected features)
+//			this.serverXMLCheckBoxButton.setSelection(false);
+//			//this.generateAllCheckBoxButton.setSelection(false);
+//			this.generateServerSideInterfaceCheckBoxButton.setSelection(false);
+//			//earlier existing code (This only set focus false)
+//			this.serverXMLCheckBoxButton.setEnabled(false);
+//			//this.generateAllCheckBoxButton.setEnabled(false);
+//			this.generateServerSideInterfaceCheckBoxButton.setEnabled(false);
+			if(clientSideCheckBoxButton.getSelection()==false 
+					&& generateAllCheckBoxButton.getSelection() == false){
+				serverSideCheckBoxButton.setSelection(true);
+				settings.put(PREF_CHECK_GENERATE_SERVERSIDE, serverSideCheckBoxButton
+						.getSelection());
+			}
+		}
+	}
+	
+	/**
+	 * Validates the status of the client-side checkbox, and enables/disables
+	 * the generation checkbox for XML configuration file
+	 */
+	private void handleClientsideSelection() {
+		if (this.clientSideCheckBoxButton.getSelection()) {
+			this.syncAndAsyncRadioButton.setSelection(true);
+			this.syncAndAsyncRadioButton.setEnabled(true);
+			this.asyncOnlyRadioButton.setEnabled(true);
+			this.syncOnlyRadioButton.setEnabled(true);
+			if(serverSideCheckBoxButton.getSelection()==true 
+					|| generateAllCheckBoxButton.getSelection() == true){
+				clientSideCheckBoxButton.setSelection(true);
+				settings.put(PREF_CHECK_GENERATE_CLIENTSIDE, clientSideCheckBoxButton
+						.getSelection());
+				uncheckServerSide();
+				uncheckGenerateAll();
+			}
+			this.serverXMLCheckBoxButton.setEnabled(false);
+			this.serverXMLCheckBoxButton.setSelection(false);
+			this.generateServerSideInterfaceCheckBoxButton.setEnabled(false);
+			this.generateServerSideInterfaceCheckBoxButton.setSelection(false);
+			this.testCaseCheckBoxButton.setEnabled(true);
+		}
+		else {
+			//added this to increase the UI features (this will deselct all the selected features)
+//			this.syncAndAsyncRadioButton.setSelection(false);
+//			this.asyncOnlyRadioButton.setSelection(false);
+//			this.syncOnlyRadioButton.setSelection(false);
+			//earlier existing code (This only set focus false)
+//			this.syncAndAsyncRadioButton.setEnabled(false);
+//			this.asyncOnlyRadioButton.setEnabled(false);
+//			this.syncOnlyRadioButton.setEnabled(false);
+			if(serverSideCheckBoxButton.getSelection()==false 
+					&& generateAllCheckBoxButton.getSelection() == false){
+				clientSideCheckBoxButton.setSelection(true);
+				settings.put(PREF_CHECK_GENERATE_CLIENTSIDE, clientSideCheckBoxButton
+						.getSelection());
+			}
+		}
+	}
+	
+	private void handleGenerateAllSelection() {
+		if (this.generateAllCheckBoxButton.getSelection()) {
+			settings.put(PREF_GEN_ALL, generateAllCheckBoxButton
+					.getSelection());
+			if(serverSideCheckBoxButton.getSelection()==true 
+					|| clientSideCheckBoxButton.getSelection() == true){
+				this.serverSideCheckBoxButton.setSelection(false);
+				settings.put(PREF_CHECK_GENERATE_SERVERSIDE, serverSideCheckBoxButton.getSelection());
+				uncheckServerSide();
+				uncheckClientSide();
+			}
+			this.syncAndAsyncRadioButton.setSelection(false);
+			this.asyncOnlyRadioButton.setSelection(false);
+			this.syncOnlyRadioButton.setSelection(false);
+			//earlier existing code (This only set focus false)
+			this.syncAndAsyncRadioButton.setEnabled(false);
+			this.asyncOnlyRadioButton.setEnabled(false);
+			this.syncOnlyRadioButton.setEnabled(false);
+			
+			this.serverXMLCheckBoxButton.setEnabled(false);
+			this.serverXMLCheckBoxButton.setSelection(false);
+			this.generateServerSideInterfaceCheckBoxButton.setEnabled(false);
+			this.generateServerSideInterfaceCheckBoxButton.setSelection(false);
+			this.testCaseCheckBoxButton.setEnabled(true);
+		}
+		else{
+			if(serverSideCheckBoxButton.getSelection()==false 
+					|| clientSideCheckBoxButton.getSelection() == false){
+				generateAllCheckBoxButton.setSelection(true);
+				settings.put(PREF_GEN_ALL, generateAllCheckBoxButton
+						.getSelection());
+			}
+		}
+	}
+
+	/**
+	 * Get the selected language
+	 * 
+	 * @return a string containing the name of the target language
+	 */
+	public String getSelectedLanguage() {
+		return languageSelectionComboBox.getItem(languageSelectionComboBox
+				.getSelectionIndex());
+	}
+
+	/**
+	 * the async only status
+	 * 
+	 * @return true if "Generate asynchronous code only" is checked
+	 */
+	public boolean isAsyncOnlyOn() {
+		return asyncOnlyRadioButton.getSelection();
+	}
+
+	/**
+	 * the sync only status
+	 * 
+	 * @return true if "Generate synchronous code only" is checked
+	 */
+	public boolean isSyncOnlyOn() {
+		return syncOnlyRadioButton.getSelection();
+	}
+
+	/**
+	 * return the package name
+	 * 
+	 * @return a string containing the package name to use for code generation
+	 */
+	public String getPackageName() {
+		if ("".equals(packageText.getText().trim())){
+			//we do not allow the packaging to be empty
+			//if the user sets it to empty we set it to
+			//the default
+			return URLProcessor.DEFAULT_PACKAGE;
+		}
+		return this.packageText.getText();
+	}
+
+	/**
+	 * The serverside status
+	 * 
+	 * @return true if "Generate Server-Side" is checked
+	 */
+	public boolean isServerside() {
+		return this.serverSideCheckBoxButton.getSelection();
+	}
+
+	/**
+	 * 
+	 * @return true if "Generate XML configuration file" is checked
+	 */
+	public boolean isServerXML() {
+		if (this.serverXMLCheckBoxButton.isEnabled())
+			return this.serverXMLCheckBoxButton.getSelection();
+		else
+			return false;
+	}
+
+	/**
+	 * 
+	 * @return true if "Generate test case" is checked
+	 */
+	public boolean isGenerateTestCase() {
+		return this.testCaseCheckBoxButton.getSelection();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.axis2.tool.codegen.eclipse.ui.CodegenPage#getPageType()
+	 */
+	public int getPageType() {
+		return WSDL_2_JAVA_TYPE;
+	}
+
+	/**
+	 * 
+	 * @return null if portname is empty
+	 */
+	public String getPortName() {
+		int selectionIndex = portNameCombo.getSelectionIndex();
+		if (selectionIndex != -1) {
+			String text = this.portNameCombo.getItem(selectionIndex);
+
+			if (text == null || text.trim().equals("")) {
+				return null;
+			}
+			return text;
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * @return null if the text is empty
+	 * 
+	 */
+	public String getServiceName() {
+		int selectionIndex = serviceNameCombo.getSelectionIndex();
+		// cater for the scenario where the combo's can be empty
+		if (selectionIndex != -1) {
+			String text = this.serviceNameCombo.getItem(selectionIndex);
+
+			if (text == null || text.trim().equals("")) {
+				return null;
+			}
+			return text;
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * 
+	 * @return
+	 */
+	public String getDatabinderName() {
+		return this.databindingTypeCombo.getItem(databindingTypeCombo
+				.getSelectionIndex());
+
+	}
+
+	/**
+	 * 
+	 * @return
+	 */
+	public boolean getGenerateServerSideInterface() {
+		return this.generateServerSideInterfaceCheckBoxButton.getSelection();
+	}
+	
+	/**
+	 * 
+	 * @return
+	 */
+	public boolean getGenerateAll() {
+		return this.generateAllCheckBoxButton.getSelection();
+	}
+	
+	/**
+	 * get the package to namespace mappings
+	 * @return
+	 */
+	public String getNs2PkgMapping(){
+		String returnList="";
+		TableItem[] items = namespace2packageTable.getItems();
+		String packageValue; 
+		for (int i=0;i<items.length;i++){
+			packageValue = items[i].getText(1);
+			if (packageValue!=null && !"".equals(packageValue)){
+				returnList = returnList +
+				             ("".equals(returnList)?"":",") +
+				             items[i].getText(0)+ "=" + packageValue;
+			}
+			
+		}
+		return "".equals(returnList)?null:returnList;
+	}
+	
+	
+	private void disableControls(){
+		this.codegenOptionSelectionComboBox.select(0);
+		this.testCaseCheckBoxButton.setEnabled(false);
+        this.testCaseCheckBoxButton.setSelection(false);
+        this.databindingTypeCombo.setEnabled(false);
+        this.databindingTypeCombo.select(0);
+        this.generateAllCheckBoxButton.setEnabled(false);
+        this.generateAllCheckBoxButton.setSelection(false);
+        this.generateServerSideInterfaceCheckBoxButton.setEnabled(false);
+        this.generateServerSideInterfaceCheckBoxButton.setSelection(false);
+        this.languageSelectionComboBox.setEnabled(false);
+        this.namespace2packageTable.setEnabled(false);
+        this.packageText.setEditable(false);
+        this.portNameCombo.setEnabled(false);
+        this.portNameCombo.select(0);        
+        this.serverSideCheckBoxButton.setEnabled(false);
+        this.serverSideCheckBoxButton.setSelection(false);
+        this.serverXMLCheckBoxButton.setEnabled(false);
+        this.serverXMLCheckBoxButton.setSelection(false);
+        this.serviceNameCombo.setEnabled(false);
+        this.serviceNameCombo.select(0);
+        this.syncOnlyRadioButton.setEnabled(false);
+        this.syncOnlyRadioButton.setSelection(false);
+        this.asyncOnlyRadioButton.setEnabled(false);
+        this.asyncOnlyRadioButton.setSelection(false);
+        this.syncAndAsyncRadioButton.setEnabled(false);
+        this.syncAndAsyncRadioButton.setSelection(true);
+        this.packageText.setEnabled(false);
+        this.clientSideCheckBoxButton.setEnabled(false);
+        this.clientSideCheckBoxButton.setSelection(true);
+        this.generateAllCheckBoxButton.setEnabled(false);
+	}
+	
+	private void enableControls(){
+        this.testCaseCheckBoxButton.setEnabled(true);
+        this.databindingTypeCombo.setEnabled(true);
+        this.languageSelectionComboBox.setEnabled(true);
+        this.namespace2packageTable.setEnabled(true);
+        this.packageText.setEditable(true);
+        this.portNameCombo.setEnabled(true);
+        this.serverSideCheckBoxButton.setEnabled(true);
+        this.serviceNameCombo.setEnabled(true);
+        this.syncOnlyRadioButton.setEnabled(true);
+        this.asyncOnlyRadioButton.setEnabled(true);
+        this.syncAndAsyncRadioButton.setEnabled(true);
+        this.packageText.setEnabled(true);
+        this.clientSideCheckBoxButton.setEnabled(true);
+        this.generateAllCheckBoxButton.setEnabled(true);
+	}
+	
+	/**
+	 * get the package derived by  Namespace
+	 */
+	public String getPackageFromNamespace(String namespace){
+		return  URLProcessor.makePackageName(namespace);
+	}
+	
+	private void handleCustomPackageNameModifyEvent() {
+	// This method is add as a tempory fix for the Axis2-1368 
+	// TODO fix this permanantly.	
+	String text = this.packageText.getText();
+	if ((text == null) || (text.trim().equals(""))|| (text.endsWith(".")) || (text.startsWith("."))) {
+		updateStatus(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+				.getResourceString("page2.pachage.error.nolocation"));
+		return;
+	}
+		updateStatus(null);
+	}
+	
+	private void uncheckServerSide(){
+		this.serverSideCheckBoxButton.setSelection(false);
+		settings.put(PREF_CHECK_GENERATE_SERVERSIDE, serverSideCheckBoxButton.getSelection());
+	}
+	
+	private void uncheckClientSide(){
+		this.clientSideCheckBoxButton.setSelection(false);
+		settings.put(PREF_CHECK_GENERATE_CLIENTSIDE, clientSideCheckBoxButton.getSelection());
+	}
+	
+	private void uncheckGenerateAll(){
+		this.generateAllCheckBoxButton.setSelection(false);
+		settings.put(PREF_GEN_ALL, generateAllCheckBoxButton.getSelection());
+
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OutputPage.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OutputPage.java
new file mode 100644
index 0000000..155618f
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OutputPage.java
@@ -0,0 +1,614 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.ui;
+
+import java.io.File;
+
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.apache.axis2.tool.codegen.eclipse.util.UIConstants;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GCData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.ContainerSelectionDialog;
+
+public class OutputPage extends AbstractWizardPage {
+
+	private Text outputLocation;
+	
+	private Text axisHomeLocation;
+	
+	private Text jarFileNameText;
+
+	private Button browseButton;
+	
+	private Button axisHomeBrowseButton;
+	
+	private Button axisLoadLibsButton;
+	
+	private Button copyLibButton;
+	
+	private Button jarCreationButton;
+
+	private Button workspaceProjectOptionsButton;
+
+	private Button filesyStemOptionsButton;
+
+	private Button copyPluginLibButton;
+	
+	private boolean workspaceSaveOption = false;
+	
+	private boolean jarFileCopyOption = false;
+	
+	private Label axisHomeLabel;
+	
+	private Label axisLoadLibResultsLabel;
+	
+	private Label jarFileNameLabel;
+	
+	private String axis2LibsLocation = null;
+	
+
+	/**
+	 * 
+	 */
+	public OutputPage() {
+		 super("page3");
+	}
+
+	/**
+	 * Creates some initial values for the settings. 
+	 */
+	protected void initializeDefaultSettings() {
+		settings.put(PREF_OUTPUT_LOCATION, "");
+		settings.put(PREF_AXIS_HOME_OUTPUT_LOCATION, "");
+		settings.put(PREF_JAR_FILE_NAME, "");
+		settings.put(PREF_CHECK_WORKSPACE, false);
+		settings.put(PREF_CHECK_FILE_SYSTEM, true);
+		settings.put(PREF_CHECK_AXIS_LIB_COPY, false);
+		settings.put(PREF_CHECK_JAR_CREATION, false);
+		settings.put(PREF_CHECK_AXIS_PLUGIN_LIB_COPY, false);
+		workspaceSaveOption = false;
+		jarFileCopyOption = false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		container.setLayout(layout);
+		layout.numColumns = 3;
+		layout.verticalSpacing = 9;
+
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label selectLabel = new Label(container, SWT.NULL);
+		selectLabel
+				.setText(CodegenWizardPlugin
+						.getResourceString("page3.result.decs"));
+		selectLabel.setLayoutData(gd);
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		workspaceProjectOptionsButton = new Button(container, SWT.RADIO);
+		workspaceProjectOptionsButton.setLayoutData(gd);
+		workspaceProjectOptionsButton.setText(CodegenWizardPlugin
+				.getResourceString("page3.workspace.caption"));
+		workspaceProjectOptionsButton.setToolTipText(CodegenWizardPlugin
+				.getResourceString("page3.workspace.desc"));
+		settings.put(PREF_CHECK_WORKSPACE, false);
+		settings.put(PREF_CHECK_FILE_SYSTEM, true);
+		workspaceProjectOptionsButton.setSelection(settings
+				.getBoolean(PREF_CHECK_WORKSPACE));
+		workspaceProjectOptionsButton
+				.addSelectionListener(new SelectionAdapter() {
+					public void widgetSelected(SelectionEvent e) {
+						handleCheckboxSelection();
+					}
+				});
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		filesyStemOptionsButton = new Button(container, SWT.RADIO);
+		filesyStemOptionsButton.setLayoutData(gd);
+		filesyStemOptionsButton.setText(CodegenWizardPlugin
+				.getResourceString("page3.filesystem.caption"));
+		filesyStemOptionsButton.setToolTipText(CodegenWizardPlugin
+				.getResourceString("page3.filesystem.desc"));
+		filesyStemOptionsButton.setSelection(settings
+				.getBoolean(PREF_CHECK_FILE_SYSTEM));
+		filesyStemOptionsButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handleCheckboxSelection();
+			}
+		});
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		Label label = new Label(container, SWT.NULL);
+		label
+				.setText(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+						.getResourceString("page3.output.caption"));
+		
+		settings.put(PREF_OUTPUT_LOCATION, "");
+		settings.put(PREF_AXIS_HOME_OUTPUT_LOCATION, "");
+		outputLocation = new Text(container, SWT.BORDER);
+		outputLocation.setText(settings.get(PREF_OUTPUT_LOCATION));
+		outputLocation.setLayoutData(gd);
+		outputLocation.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				settings.put(PREF_OUTPUT_LOCATION, outputLocation.getText());
+				handleModifyEvent();
+			}
+		});
+
+		browseButton = new Button(container, SWT.PUSH);
+		browseButton.setText(CodegenWizardPlugin
+				.getResourceString("page3.outselection.browse"));
+		browseButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handleBrowse();
+			}
+		});
+		
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		copyPluginLibButton = new Button(container, SWT.CHECK);
+		copyPluginLibButton.setText(CodegenWizardPlugin
+				.getResourceString("page3.copypluginlib.caption"));
+		copyPluginLibButton.setToolTipText(CodegenWizardPlugin
+				.getResourceString("page3.copypluginlib.caption"));
+		settings.put(PREF_CHECK_AXIS_PLUGIN_LIB_COPY,false);
+		copyPluginLibButton.setSelection(settings.getBoolean(PREF_CHECK_AXIS_PLUGIN_LIB_COPY));
+		copyPluginLibButton.setLayoutData(gd);
+		copyPluginLibButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handleCopyPluginLibsCheckBox();
+				settings.put(PREF_CHECK_AXIS_PLUGIN_LIB_COPY, copyPluginLibButton.getSelection());
+			}
+		});
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan=3;
+		Label fillLabel = new Label(container, SWT.NULL);
+		fillLabel.setText("");
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label fillLabel1 = new Label(container, SWT.HORIZONTAL | SWT.SEPARATOR);
+		fillLabel1.setLayoutData(gd);
+
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		copyLibButton = new Button(container, SWT.CHECK);
+		copyLibButton.setText(CodegenWizardPlugin
+				.getResourceString("page3.addaxislib.caption"));
+		copyLibButton.setToolTipText(CodegenWizardPlugin
+				.getResourceString("page3.addaxislib.desc"));
+		settings.put(PREF_CHECK_AXIS_LIB_COPY,false);
+		copyLibButton.setSelection(settings.getBoolean(PREF_CHECK_AXIS_LIB_COPY));
+		copyLibButton.setLayoutData(gd);
+		copyLibButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handlejarCheckBox();
+				settings.put(PREF_CHECK_AXIS_LIB_COPY, copyLibButton.getSelection());
+			}
+		});
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		axisHomeLabel = new Label(container, SWT.NULL);
+		axisHomeLabel
+				.setText(CodegenWizardPlugin
+						.getResourceString("page3.axishome.caption"));
+		
+		
+		axisHomeLocation = new Text(container, SWT.BORDER);
+		axisHomeLocation.setLayoutData(gd);
+		settings.put(PREF_AXIS_HOME_OUTPUT_LOCATION, "");
+		axisHomeLocation.setText(settings.get(PREF_AXIS_HOME_OUTPUT_LOCATION));
+		axisHomeLocation.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				settings.put(PREF_AXIS_HOME_OUTPUT_LOCATION, axisHomeLocation.getText());
+				handleAxisHomeModifyEvent();
+			}
+		});
+
+		axisHomeBrowseButton = new Button(container, SWT.PUSH);
+		axisHomeBrowseButton.setText(CodegenWizardPlugin
+				.getResourceString("page3.outselection.browse"));
+		axisHomeBrowseButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handleAxisHomeBrowse();
+			}
+		});
+		
+		axisLoadLibsButton = new Button(container, SWT.PUSH);
+		axisLoadLibsButton.setText(CodegenWizardPlugin
+				.getResourceString("page3.loadlibs.browse"));
+		axisLoadLibsButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handleLoadLibsBrowse();
+			}
+		});
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		axisLoadLibResultsLabel = new Label(container, SWT.NULL);
+		axisLoadLibResultsLabel	.setText("");
+		axisLoadLibResultsLabel.setLayoutData(gd);
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label fillLabel2 = new Label(container, SWT.HORIZONTAL | SWT.SEPARATOR);
+		fillLabel2.setLayoutData(gd);
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		jarCreationButton= new Button(container, SWT.CHECK);
+		jarCreationButton.setText(CodegenWizardPlugin
+				.getResourceString("page3.jarcreation.caption"));
+		jarCreationButton.setToolTipText(CodegenWizardPlugin
+				.getResourceString("page3.jarcreation.desc"));
+		settings.put(PREF_CHECK_JAR_CREATION,false);
+		jarCreationButton.setSelection(settings.getBoolean(PREF_CHECK_JAR_CREATION));
+		jarCreationButton.setLayoutData(gd);
+		jarCreationButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handlejarCreationCheckBox();
+//				settings.put(PREF_CHECK_JAR_CREATION, jarCreationButton.getSelection());
+			}
+		});
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		jarFileNameLabel = new Label(container, SWT.NULL);
+		jarFileNameLabel
+				.setText(CodegenWizardPlugin
+						.getResourceString("page3.jarname.caption"));
+				
+		jarFileNameText = new Text(container, SWT.BORDER);
+		jarFileNameText.setLayoutData(gd);
+		jarFileNameText.setText(settings.get(PREF_JAR_FILE_NAME));
+		jarFileNameText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				settings.put(PREF_JAR_FILE_NAME, jarFileNameText.getText());
+//				handleAxisHomeModifyEvent();
+			}
+		});
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label fillLabel3 = new Label(container, SWT.HORIZONTAL | SWT.SEPARATOR);
+		fillLabel3.setLayoutData(gd);
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3; 
+		Label hintLabel = new Label(container, SWT.NULL);
+		hintLabel
+				.setText(CodegenWizardPlugin
+						.getResourceString("page3.hint.caption"));
+		hintLabel.setLayoutData(gd);
+//		hintLabel.setFont(new Font(new Device() {
+//				public int internal_new_GC(GCData data) {return 0;}
+//				public void internal_dispose_GC(int handle, GCData data) {}
+//												},"hintFont",8,SWT.NORMAL));
+		
+		disableControls();
+		
+		setControl(container);
+
+		/*
+		 * Update the buttons, in case this was restored from an earlier setting
+		 */
+		if (restoredFromPreviousSettings) {
+			handleModifyEvent();
+		}
+	}
+
+	/**
+	 * get the output location
+	 * 
+	 * @return a string containing the full pathname of the output location
+	 */
+	public String getOutputLocation() {
+		return outputLocation.getText();
+	}
+
+	public String getAxisHomeLocation() {
+		return axisHomeLocation.getText();
+	}
+	
+	public String getJarFilename() {
+		return jarFileNameText.getText();
+	}
+	
+	public boolean getAxis2PluginLibCopyCheckBoxSelection(){
+//		return settings.getBoolean(PREF_CHECK_AXIS_PLUGIN_LIB_COPY);
+		return this.copyPluginLibButton.getSelection();
+	}
+	
+	public boolean getAxisLibCopyCheckBoxSelection(){
+//		return settings.getBoolean(PREF_CHECK_AXIS_LIB_COPY);
+		return this.copyLibButton.getSelection();
+	}
+	
+	public boolean getCreateJarCheckBoxSelection(){
+//		return settings.getBoolean(PREF_CHECK_JAR_CREATION);
+		return jarCreationButton.getSelection();
+		
+	}
+	
+	public String getAxisJarsLocation(){
+		return this.axis2LibsLocation;
+		
+	}
+	
+	public boolean oktoLoadLibs(){
+		return this.jarFileCopyOption;
+	}
+	
+	public void setJarFileName(String jarFileName){
+		this.jarFileNameText.setText(jarFileName);
+	}
+	
+	/**
+	 * Worker method for handling modifications to the textbox
+	 * 
+	 */
+	private void handleModifyEvent() {
+		String text = this.outputLocation.getText();
+		if ((text == null) || (text.trim().equals(""))) {
+			updateStatus(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+					.getResourceString("page3.error.nolocation"));
+			return;
+		}
+		updateStatus(null);
+	}
+
+	
+	private void handleAxisHomeModifyEvent() {
+		String text = this.axisHomeLocation.getText();
+		if ((text == null) || (text.trim().equals(""))) {
+			updateStatus(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+					.getResourceString("page3.error.nolocation"));
+			return;
+		}
+		updateStatus(null);
+	}
+	
+//	private void handleJarNameModifyEvent() {
+//		String text = this.jarFileNameText.getText();
+//		if ((text == null) || (text.trim().equals(""))) {
+//			updateStatus(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+//					.getResourceString("page3.error.nolocation"));
+//			return;
+//		}
+//		updateStatus(null);
+//	}
+
+	private void handleCheckboxSelection() {
+		if (workspaceProjectOptionsButton.getSelection()) {
+			settings.put(PREF_CHECK_WORKSPACE, true);
+			settings.put(PREF_CHECK_FILE_SYSTEM, false);
+			workspaceSaveOption = true;
+		} else if (filesyStemOptionsButton.getSelection()) {
+			settings.put(PREF_CHECK_FILE_SYSTEM, true);
+			settings.put(PREF_CHECK_WORKSPACE, false);
+			workspaceSaveOption = false;
+		}
+	}
+	
+	
+	private void handlejarCheckBox() {
+		if(copyLibButton.getSelection()){
+			enableControls();
+			settings.put(PREF_CHECK_AXIS_LIB_COPY, true);
+		}else{
+			disableControls();
+			settings.put(PREF_CHECK_AXIS_LIB_COPY, false);
+		}
+	}
+	
+	private void handleCopyPluginLibsCheckBox() {
+		if(copyPluginLibButton.getSelection()){
+			settings.put(PREF_CHECK_AXIS_PLUGIN_LIB_COPY, true);
+		}else{
+			settings.put(PREF_CHECK_AXIS_PLUGIN_LIB_COPY, false);
+		}
+	}
+	
+	private void handlejarCreationCheckBox() {
+		if(jarCreationButton.getSelection()== true){
+			settings.put(PREF_CHECK_JAR_CREATION, true);
+		}else{
+			settings.put(PREF_CHECK_JAR_CREATION, false);
+			this.jarFileNameText.setText("");
+		}
+		if(jarFileNameLabel.equals("")){
+			updateStatus("Please enter a valid name to the jar file");
+		}
+	}
+	
+	private void disableControls(){
+		this.axisHomeLocation.setText("Unpacked Axis2 binary home Or Axis2 source location");
+		this.axisHomeBrowseButton.setEnabled(false);
+		this.axisHomeLocation.setEnabled(false);
+		this.jarCreationButton.setSelection(false);
+		this.jarCreationButton.setEnabled(false);
+		this.axisHomeLabel.setEnabled(false);
+		this.axisLoadLibResultsLabel.setText("");
+		this.axisLoadLibResultsLabel.setEnabled(false);
+		this.axisLoadLibsButton.setEnabled(false);
+		this.jarFileNameLabel.setEnabled(false);
+		this.jarFileNameText.setText("");
+		this.jarFileNameText.setEnabled(false);
+		settings.put(PREF_CHECK_JAR_CREATION, false);
+		jarFileCopyOption = false;
+		Color color = getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND);
+		axisLoadLibResultsLabel.setBackground(color);
+	}
+	
+	private void enableControls(){
+		this.axisHomeBrowseButton.setEnabled(true);
+		this.axisHomeLocation.setEnabled(true);
+		this.jarCreationButton.setEnabled(true);
+		this.axisHomeLabel.setEnabled(true);
+		this.axisLoadLibResultsLabel.setEnabled(true);
+		this.axisLoadLibsButton.setEnabled(true);
+		this.jarFileNameLabel.setEnabled(true);
+		this.jarFileNameText.setEnabled(true);
+		if (axisLoadLibResultsLabel.getText().equals("")){
+			updateStatus("Please enter a valid path to the Axis2 libs and then try to load the libraries using the check libs button");
+		}
+	     axisLoadLibResultsLabel.setText(CodegenWizardPlugin
+					.getResourceString("page3.loadlib.fail.caption"));
+	     Color color = getShell().getDisplay().getSystemColor(SWT.COLOR_RED);
+	     axisLoadLibResultsLabel.setBackground(color);
+	}
+	
+	private void handleAxisHomeBrowse() {
+		    this.axisHomeLocation.setText("unpacked Axis2 binary home Or Axis2 source Location");
+			DirectoryDialog dialog = new DirectoryDialog(this.getShell());
+			String returnString = dialog.open();
+			if (returnString != null) {
+				axisHomeLocation.setText(returnString);
+				settings.put(PREF_AXIS_HOME_OUTPUT_LOCATION, axisHomeLocation.getText());
+			}
+	}
+	
+	private void handleLoadLibsBrowse() {
+		if(axisHomeLocation.getText().equals("")){
+			 axisLoadLibResultsLabel.setText(CodegenWizardPlugin
+						.getResourceString("page3.loadlib.fail.caption"));
+			 jarFileCopyOption=false;
+		     if (axisLoadLibResultsLabel.getText().equals("")){
+					updateStatus("Please enter a valid path to the Axis2 libs and then try to load the libraries using the check libs button");
+		     }
+		}else{
+			settings.put(PREF_AXIS_HOME_OUTPUT_LOCATION, axisHomeLocation.getText());
+			String axis_home = settings.get(PREF_AXIS_HOME_OUTPUT_LOCATION);
+			String axis_target_lib=axis_home+File.separator+UIConstants.TARGET+File.separator+UIConstants.LIB;
+			String axis_std_lib_directory=axis_home+File.separator+UIConstants.LIB;
+
+			File axis_target_libs_directory = new File(axis_target_lib);
+			File axis_libs_directory = new File(axis_std_lib_directory);
+			 if (axis_libs_directory.isDirectory() || axis_target_libs_directory.isDirectory()) {
+				 axisLoadLibResultsLabel.setText(CodegenWizardPlugin
+							.getResourceString("page3.loadlib.success.caption"));
+				if(axis_libs_directory.isDirectory()){
+					axis2LibsLocation=axis_std_lib_directory;
+				}
+				else if(axis_target_libs_directory.isDirectory()){
+					axis2LibsLocation=axis_target_lib;
+				}
+				 jarFileCopyOption =true;
+				 Color color = getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND);
+				 axisLoadLibResultsLabel.setBackground(color);
+			 }else{
+			     axisLoadLibResultsLabel.setText(CodegenWizardPlugin
+							.getResourceString("page3.loadlib.fail.caption"));
+			     Color color = getShell().getDisplay().getSystemColor(SWT.COLOR_RED);
+			     axisLoadLibResultsLabel.setBackground(color);
+			     updateStatus(org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin
+						.getResourceString("page3.loadlib.fail.message"));
+			     jarFileCopyOption=false;
+			 }
+		}
+	}
+
+	
+	/**
+	 * Handle the browse button events: opens a dialog where the user can choose
+	 * an external directory location
+	 * 
+	 */
+	private void handleBrowse() {
+		// Change this to add the clarity of 2 option buttions
+		// boolean location = locationSelectCheckBox.getSelection();
+		boolean location = false;
+		if(settings.getBoolean(PREF_CHECK_FILE_SYSTEM)){
+			location = false;
+		}else if(settings.getBoolean(PREF_CHECK_WORKSPACE)){
+			location = true;
+		}
+
+		if (workspaceSaveOption) {
+			location = true;
+		}
+
+		if (!location) {
+			DirectoryDialog dialog = new DirectoryDialog(this.getShell());
+			String returnString = dialog.open();
+			if (returnString != null) {
+				outputLocation.setText(returnString);
+			}
+		} else {
+			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+
+			ContainerSelectionDialog dialog = new ContainerSelectionDialog(
+					getShell(), root, false, CodegenWizardPlugin
+							.getResourceString("page3.containerbox.title"));
+			if (dialog.open() == ContainerSelectionDialog.OK) {
+				Object[] result = dialog.getResult();
+				if (result.length == 1) {
+					Path path = ((Path) result[0]);
+					// append to the workspace path
+					if (root.exists(path)) {
+						outputLocation.setText(root.getLocation().append(path)
+								.toFile().getAbsolutePath());
+					}
+				}
+			}
+		}
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.axis2.tool.codegen.eclipse.ui.CodegenPage#getPageType()
+	 */
+	public int getPageType() {
+		return WSDL_2_JAVA_TYPE;
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/ToolSelectionPage.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/ToolSelectionPage.java
new file mode 100644
index 0000000..980ed85
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/ToolSelectionPage.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.ui;
+
+import org.apache.axis2.tool.codegen.eclipse.CodeGenWizard;
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GCData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+public class ToolSelectionPage extends AbstractWizardPage {
+   
+    private Button java2WSDLRadioButton;
+    private Button wsdl2JavaRadioButton;
+    public ToolSelectionPage() {
+        super("page0");
+       
+    }
+    
+    /**
+     * Creates a default value for the settings on this page
+     */
+    protected void initializeDefaultSettings() {
+        settings.put(PREF_TOOL_SELECTION_JAVA2WSDL, false);
+        settings.put(PREF_TOOL_SELECTION_WSDL2JAVA, true);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+public void createControl(Composite parent) {
+        
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        container.setLayout(layout);
+        layout.numColumns = 1;
+        layout.verticalSpacing = 9;
+
+              
+        Label label = new Label(container, SWT.NULL);
+        label.setText(CodegenWizardPlugin.getResourceString("page0.options.desc"));
+             
+        wsdl2JavaRadioButton = new Button(container,SWT.RADIO);
+        wsdl2JavaRadioButton.setText(CodegenWizardPlugin.getResourceString("page0.wsdl2java.caption"));
+        wsdl2JavaRadioButton.setToolTipText(CodegenWizardPlugin.getResourceString("page0.wsdl2java.desc"));
+        wsdl2JavaRadioButton.setSelection(settings.getBoolean(PREF_TOOL_SELECTION_WSDL2JAVA));
+        wsdl2JavaRadioButton.addSelectionListener(new SelectionAdapter(){
+           public void widgetSelected(SelectionEvent e)
+           {
+              handleCheckboxSelection();
+           }
+        });
+        
+        java2WSDLRadioButton = new Button(container,SWT.RADIO);
+        java2WSDLRadioButton.setText(CodegenWizardPlugin.getResourceString("page0.java2wsdl.caption"));
+        java2WSDLRadioButton.setToolTipText(CodegenWizardPlugin.getResourceString("page0.java2wsdl.desc"));
+        java2WSDLRadioButton.setSelection(settings.getBoolean(PREF_TOOL_SELECTION_JAVA2WSDL));
+        java2WSDLRadioButton.addSelectionListener(new SelectionAdapter(){
+           public void widgetSelected(SelectionEvent e)
+           {
+              handleCheckboxSelection();
+           }
+        });
+        
+        Label fillLabel = new Label(container, SWT.NULL);
+
+        Label hintLabel = new Label(container, SWT.NULL);
+        hintLabel.setText(CodegenWizardPlugin.getResourceString("page0.hint.desc"));
+//        hintLabel.setFont(new Font(new Device() {
+//			public int internal_new_GC(GCData data) {return 0;}
+//			public void internal_dispose_GC(int handle, GCData data) {}
+//											},"hintFont",8,SWT.NORMAL));
+        ///////////////////////////////////////
+        //java2WSDLRadioButton.setEnabled(false);
+        //////////////////////////////////////
+        
+        handleCheckboxSelection();
+        setControl(container);
+
+    }
+
+	private void handleCheckboxSelection(){
+	    CodeGenWizard wizard = (CodeGenWizard)this.getWizard();
+	    if (wsdl2JavaRadioButton.getSelection()){
+	        settings.put(PREF_TOOL_SELECTION_WSDL2JAVA,true);
+	        settings.put(PREF_TOOL_SELECTION_JAVA2WSDL,false);
+	       wizard.setSelectedWizardType(WSDL_2_JAVA_TYPE); 
+	    }else if (java2WSDLRadioButton.getSelection()){
+	        settings.put(PREF_TOOL_SELECTION_WSDL2JAVA,false);
+	        settings.put(PREF_TOOL_SELECTION_JAVA2WSDL,true);
+	        wizard.setSelectedWizardType(JAVA_2_WSDL_TYPE); 
+	    }
+	}
+	
+	
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.codegen.eclipse.ui.CodegenPage#getPageType()
+     */
+    public int getPageType() {
+         return UNSPECIFIED_TYPE;
+    }
+    
+        
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/WSDLFileSelectionPage.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/WSDLFileSelectionPage.java
new file mode 100644
index 0000000..fff3e24
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/WSDLFileSelectionPage.java
@@ -0,0 +1,184 @@
+/*
+* Copyright 2004,2005 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.axis2.tool.codegen.eclipse.ui;
+
+import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin;
+import org.eclipse.jface.dialogs.IDialogPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GCData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * The first page of the code generator wizrad. Asks for the WSDL file Name
+ */
+
+public class WSDLFileSelectionPage extends AbstractWizardPage {
+
+    private Text fileText; 
+
+   
+    /**
+     * 
+     * @param pageName
+     */
+    public WSDLFileSelectionPage() {
+        super("page1");
+       
+
+    }
+
+    /**
+     * Creates a default value for the settings on this page. For
+     * WSDLFileSelection, this is not very much.
+     */
+    protected void initializeDefaultSettings() {
+        settings.put(PREF_WSDL_LOCATION, "");
+    }
+
+    /**
+     * @see IDialogPage#createControl(Composite)
+     */
+    public void createControl(Composite parent) {
+
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        container.setLayout(layout);
+        layout.numColumns = 3;
+        //layout.verticalSpacing = 9;
+     
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+       
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        Label labelFile = new Label(container, SWT.NULL);
+        labelFile.setText(CodegenWizardPlugin
+                .getResourceString("page1.fileselection.label"));
+        
+        fileText = new Text(container, SWT.BORDER | SWT.SINGLE);
+        fileText.setLayoutData(gd);
+	    fileText.setText(settings.get(PREF_WSDL_LOCATION));
+        fileText.addModifyListener(new ModifyListener() {
+            public void modifyText(ModifyEvent e) {
+                settings.put(PREF_WSDL_LOCATION, fileText.getText());
+                dialogChanged();
+            }
+        });
+
+        Button button = new Button(container, SWT.PUSH);
+        button.setText(CodegenWizardPlugin
+                .getResourceString("page1.fileselection.browse"));
+        button.addSelectionListener(new SelectionAdapter() {
+            public void widgetSelected(SelectionEvent e) {
+                handleBrowse();
+            }
+        });
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan=3;
+        Label fillLabel = new Label(container, SWT.NULL);
+        fillLabel.setLayoutData(gd);
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan=3;
+        Label hintLabel = new Label(container, SWT.NULL);
+        hintLabel.setText(CodegenWizardPlugin.getResourceString("page1.hint.desc"));
+        hintLabel.setLayoutData(gd);
+//        hintLabel.setFont(new Font(new Device() {
+//			public int internal_new_GC(GCData data) {return 0;}
+//			public void internal_dispose_GC(int handle, GCData data) {}
+//											},"hintFont",6,SWT.NORMAL));
+        
+        setPageComplete(false);
+        setControl(container);
+
+        /*
+         * Validate this dialog, because we could have got valid values from the
+         * settings already.
+         */
+        if (restoredFromPreviousSettings){
+            dialogChanged();
+        }
+    }
+
+    /**
+     * Handle the dialog change event. Basically evaluates the file name and
+     * sets the error message accordingly
+     * 
+     * TODO - we might need to call this in a different event!!!
+     */
+    private void dialogChanged() {
+        String fileName = getFileName();
+
+        if (fileName.length() == 0) {
+            updateStatus(CodegenWizardPlugin
+                    .getResourceString("page1.error.filemissingerror"));
+            return;
+        }
+        
+        //try populate the options
+        getCodegenWizard().populateOptions();
+        // update the status
+        updateStatus(null);
+
+    }
+
+    /**
+     * Pops up the file browse dialog box
+     *  
+     */
+    private void handleBrowse() {
+	    fileText.setText("enter a valid *.wsdl/*.xml service description file");
+        FileDialog fileDialog = new FileDialog(this.getShell());
+        fileDialog.setFilterExtensions(new String[] { "*.wsdl" ,"*.xml"});
+        String fileName = fileDialog.open();
+        if (fileName != null) {
+            fileText.setText(fileName);
+        }
+    }
+
+    
+    /**
+     * Get the file name
+     * 
+     * @return
+     */
+    public String getFileName() {
+        return fileText.getText();
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.axis2.tool.codegen.eclipse.ui.CodegenPage#getPageType()
+     */
+    public int getPageType() {
+        return WSDL_2_JAVA_TYPE;
+    }
+    
+    
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/ClassFileReader.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/ClassFileReader.java
new file mode 100644
index 0000000..0f14d26
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/ClassFileReader.java
@@ -0,0 +1,88 @@
+/*
+* Copyright 2004,2005 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.axis2.tool.codegen.eclipse.util;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.List;
+
+/**
+ * A utility class for reading/loading classes and
+ * extracting the information.
+ *
+ */
+public class ClassFileReader {
+
+	/**
+	 * try whether a given class can be loaded from the given location
+	 * @param className
+	 * @param classPathEntries
+	 * @param errorListener
+	 * @return
+	 */
+	public static boolean tryLoadingClass(String className,
+			String[] classPathEntries, List errorListener) {
+		//make a URL class loader from the entries
+		ClassLoader classLoader;
+
+		if (classPathEntries.length > 0) {
+			URL[] urls = new URL[classPathEntries.length];
+
+			try {
+				for (int i = 0; i < classPathEntries.length; i++) {
+					String classPathEntry = classPathEntries[i];
+					//this should be a file(or a URL)
+					if (classPathEntry.startsWith("http://")) {
+						urls[i] = new URL(classPathEntry);
+					} else {
+						urls[i] = new File(classPathEntry).toURL();
+					}
+				}
+			} catch (MalformedURLException e) {
+				if (errorListener!=null){
+					errorListener.add(e);
+				}
+				return false;
+			}
+
+			classLoader = new URLClassLoader(urls);
+
+		} else {
+			classLoader = Thread.currentThread().getContextClassLoader();
+		}
+		
+		//try to load the class with the given name
+		
+		try {
+			Class clazz=classLoader.loadClass(className);
+			clazz.getMethods();
+		    
+			
+		} catch (Throwable t) {
+			if (errorListener!=null){
+				errorListener.add(t);
+			}
+			return false;
+		}
+
+		return true;
+
+	}
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/NamespaceFinder.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/NamespaceFinder.java
new file mode 100644
index 0000000..0fe4f6d
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/NamespaceFinder.java
@@ -0,0 +1,53 @@
+/*
+* Copyright 2004,2005 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.axis2.tool.codegen.eclipse.util;
+
+public class NamespaceFinder {
+	
+	private static String NS_PREFIX = "http://";
+	private static String SCHEMA_NS_SUFFIX = "/types";
+	private static String SCHEMA_NS_DEFAULT_PREFIX = "types";
+	private static String NS_DEFAULT_PREFIX = "ns";
+	
+	
+	public static String getTargetNamespaceFromClass(String fullyQualifiedClassName){
+		//tokenize the className
+		String[] classNameParts = fullyQualifiedClassName.split("\\.");
+		//add the strings in reverse order to make
+		//the namespace
+		String nsUri = "";
+		for(int i=classNameParts.length-1;i>=0;i--){
+			nsUri = nsUri + classNameParts[i] + (i==0?"":".");
+		}
+		
+		return NS_PREFIX + nsUri;
+		
+		
+	}
+	
+	public static String getSchemaTargetNamespaceFromClass(String fullyQualifiedClassName){
+		return getTargetNamespaceFromClass(fullyQualifiedClassName) +SCHEMA_NS_SUFFIX;
+	}
+
+	public static String getDefaultSchemaNamespacePrefix(){
+		return SCHEMA_NS_DEFAULT_PREFIX;
+	}
+	
+	public static String getDefaultNamespacePrefix(){
+		return NS_DEFAULT_PREFIX;
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/SettingsConstants.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/SettingsConstants.java
new file mode 100644
index 0000000..7c1ca3b
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/SettingsConstants.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.util;
+
+public interface SettingsConstants {
+
+    // ######################################################################
+    //WSDL Selection page constants
+    /**
+     * The key for storing the WSDL location in the dialog settings of the
+     * WSDLFileSelectionPage
+     */
+    static final String PREF_WSDL_LOCATION = "PREF_WSDL_LOCATION";
+
+    // ######################################################################
+    // Tools selection page
+    static final String PREF_TOOL_SELECTION_WSDL2JAVA = "PREF_TOOL_SELECTION_WSDL2JAVA";
+
+    static final String PREF_TOOL_SELECTION_JAVA2WSDL = "PREF_TOOL_SELECTION_JAVA2WSDL";
+    
+    // ######################################################################
+//     Codegen Options selection page
+    static final String PREF_OPTION_SELECTION_DEFULT = "PREF_OPTION_SELECTION_DEFULT";
+
+    static final String PREF_OPTION_SELECTION_CUSTOM = "PREF_OPTION_SELECTION_CUSTOM";
+
+    // ######################################################################
+    // Output selection page
+    /**
+     * The key to store the output location in the settings
+     *  
+     */
+    static final String PREF_OUTPUT_LOCATION = "PREF_OUTPUT_LOCATION";
+    static final String PREF_CHECK_BROWSE_PROJECTS = "PREF_CHECK_BROWSE_PROJECTS";
+
+    //Options page constants
+    /**
+     * Position in the combox for choosing the target programming language. Default is 0
+     */
+    static final String PREF_LANGUAGE_INDEX = "PREF_LANGUAGE_INDEX";
+
+    /**
+     * Three radio buttons: Generate Code for Sync calls, Async and Both. Both is default.
+     */
+    static final String PREF_RADIO_SYNC_AND_ASYNC = "PREF_RADIO_SYNC_AND_ASYNC";
+
+    /**
+     * Three radio buttons: Generate Code for Sync calls, Async and Both. Both is default.
+     */
+    static final String PREF_RADIO_SYNC_ONLY = "PREF_RADIO_SYNC_ONLY";
+
+    /**
+     * Three radio buttons: Generate Code for Sync calls, Async and Both. Both is default.
+     */
+    static final String PREF_RADIO_ASYNC_ONLY = "PREF_RADIO_ASYNC_ONLY";
+
+    /**
+     * Specifies the full qualified package name for the generated source code.
+     */
+    static final String PREF_PACKAGE_NAME = "PREF_PACKAGE_NAME";
+
+    /**
+     * A boolean value whether JUnit test classes are generated or not.
+     */
+    static final String PREF_CHECK_GENERATE_TESTCASE = "PREF_CHECK_GENERATE_TESTCASE";
+
+    /**
+     * A boolean value whether the server-side skeletons are generated or not
+     */
+    static final String PREF_CHECK_GENERATE_SERVERSIDE = "PREF_CHECK_GENERATE_SERVERSIDE";
+    
+    /**
+     * A boolean value whether the server-side skeletons are generated or not
+     */
+    static final String PREF_CHECK_GENERATE_CLIENTSIDE = "PREF_CHECK_GENERATE_CLIENTSIDE";
+
+    /**
+     * A boolean value whether the server-side configuration file for Axis2 (server.xml) will be generated or not.
+     */
+    static final String PREF_CHECK_GENERATE_SERVERCONFIG = "PREF_CHECK_GENERATE_SERVERCONFIG";
+    
+    static final String PREF_COMBO_PORTNAME_INDEX = "PREF_TEXT_PORTNAME";
+    
+    static final String PREF_COMBO_SERVICENAME_INDEX = "PREF_TEXT_SERVICENAME";
+    
+    static final String PREF_DATABINDER_INDEX = "PREF_DATABINDER_INDEX";
+    
+    static final String PREF_GEN_ALL = "PREF_GEN_ALL";
+    static final String PREF_GEN_SS_INTERFACE = "PREF_GEN_SERVERSIDE_INTERFACE";
+
+    // ##################################################################################
+    // Java source file selection page
+    static final String JAVA_CLASS_NAME = "JAVA_CLASS_NAME";
+    static final String JAVA_CLASS_PATH_ENTRIES = "JAVA_CLASS_PATH_NAME";
+    
+    // ##################################################################################
+    // Java2wsdl options selection page
+    static final String PREF_JAVA_TARGET_NS = "TARGET_NS";
+    static final String PREF_JAVA_TARGET_NS_PREF = "TARGET_NS_PREF";
+    static final String PREF_JAVA_SCHEMA_TARGET_NS = "SCHEMA_TARGET_NS";
+    static final String PREF_JAVA_SERVICE_NAME = "SCHEMA_SERVICE";
+    static final String PREF_JAVA_STYLE_INDEX = "STYLE_INDEX";
+    static final String PREF_JAVA_SCHEMA_TARGET_NS_PREF = "SCHEMA_TARGET_NS_PREF";
+    
+    // ##################################################################################
+    //output page
+    static final String JAVA_OUTPUT_WSDL_NAME = "OUTPUT_WSDL";
+    static final String PREF_JAVA_OUTPUT_WSDL_LOCATION = "OUTPUT_WSDL_LOCATION";
+    static final String PREF_JAVA_OUTPUT_FILESYATEM= "OUTPUT_WSDL_LOCATION_FILESYATEM";
+    static final String PREF_JAVA_OUTPUT_WORKSPACE = "OUTPUT_WSDL_LOCATION_WORKSPACE";
+    // ##################################################################################
+    // Page constants
+     static final int WSDL_2_JAVA_TYPE = 1;
+     static final int JAVA_2_WSDL_TYPE = 2;
+     static final int UNSPECIFIED_TYPE = 3;
+     
+     // ##################################################################################
+     // Codegen Options constants
+      static final int CODEGEN_DEFAULT_TYPE = 11;
+      static final int CODEGEN_CUSTOM_TYPE = 12;
+      static final int CODEGEN_UNDECLEARED_TYPE = 13;
+    
+    // ##################################################################################
+    // WSDL Mode constants
+     static final String WSDL_ALL = "All";
+     static final String WSDL_INTERFACE_ONLY = "Interface only";
+     static final String WSDL_IMPLEMENTATION_ONLY = "Implementation only";
+     
+     // ###########################################################
+     static final String WSDL_STYLE_DOCUMENT="Document";
+     static final String WSDL_STYLE_RPC="rpc";
+     static final String WSDL_STYLE_WRAPPED="wrapped";
+
+     // ###########################################################
+     static final String PREF_CHECK_WORKSPACE ="PREF_CHECK_WORKSPACE";
+     
+     static final String PREF_CHECK_FILE_SYSTEM ="PREF_CHECK_FILE_SYSTEM";
+
+     static final String PREF_CHECK_AXIS_LIB_COPY ="PREF_CHECK_FILE_SYSTEM";
+     
+     static final String PREF_CHECK_JAR_CREATION ="PREF_CHECK_FILE_SYSTEM";
+     
+     static final String PREF_AXIS_HOME_OUTPUT_LOCATION = "PREF_OUTPUT_LOCATION";
+     
+     static final String PREF_AXIS_LIB_LOCATION = "PREF_OUTPUT_LOCATION";
+     
+     static final String PREF_JAR_FILE_NAME = "PREF_OUTPUT_LOCATION";
+     
+     static final String PREF_CODEGEN_OPTION_INDEX = "PREF_CODEGEN_OPTION_INDEX";
+     
+     static final String PREF_CHECK_AXIS_PLUGIN_LIB_COPY ="PREF_CHECK_AXIS_PLUGIN_LIB_COPY";
+     
+     
+    
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/UIConstants.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/UIConstants.java
new file mode 100644
index 0000000..2a8e4ae
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/UIConstants.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.codegen.eclipse.util;
+
+public interface UIConstants {
+    public static final String JAVA = "java" ;
+    public static final String C_SHARP = "c-sharp" ;
+    public static final String C_PLUS_PLUS = "C++" ;
+    
+    public static final String DATA_BINDING_NONE = "none" ;
+    public static final String DATA_BINDING_ADB = "adb" ;
+    public static final String DATA_BINDING_XMLBEANS = "xmlbeans" ;
+    public static final String DATA_BINDING_JIBX = "jibx" ;
+    public static final String DATA_BINDING_JAXME = "jaxme" ;
+    
+	// Selected Option by the user at the previous page (default/false Custom/true)
+	public static boolean selectedOption = false;
+	
+	//codegen options
+	public static final String DEFAULT = "default" ;
+	public static final String CUSTOM = "custom" ;
+	
+	//Default package name 
+	public static final String DEFAULT_PACKAGENAME = "org.example.webservice" ;
+	
+	//Folder names
+	public static final String LIB = "lib" ;
+	public static final String TARGET = "target" ;
+	public static final String PLUGINS = "plugins" ;
+	public static final String AXIS_CODEGEN_PLUGIN_FOLDER = "Axis2_Codegen_Wizard_1.2.0" ;
+	
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/WSDLPropertyReader.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/WSDLPropertyReader.java
new file mode 100644
index 0000000..3dd6bd2
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/util/WSDLPropertyReader.java
@@ -0,0 +1,112 @@
+/*
+* Copyright 2004,2005 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.axis2.tool.codegen.eclipse.util;
+
+import org.apache.axis2.util.URLProcessor;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+
+
+/**
+ * This class presents a convenient way of reading the 
+ * WSDL file(url) and producing a useful set of information
+ * It does NOT use any of the standard WSDL classes from 
+ * Axis2, rather it uses wsdl4j to read the wsdl and extract 
+ * the properties (This is meant as a convenience for the UI
+ * only. We may not need the whole conversion the WSDLpump 
+ * goes through)
+ * One would need to change this to suit a proper WSDL 
+ */
+public class WSDLPropertyReader {
+    private Definition wsdlDefinition = null;
+    
+	public void readWSDL(String filepath) throws WSDLException {
+		WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
+		wsdlDefinition = reader.readWSDL(filepath); 
+	}
+	
+	/**
+	 * Returns the namespace map from definition
+	 * @return
+	 */
+	public Map getDefinitionNamespaceMap(){
+		return wsdlDefinition.getNamespaces();
+	}
+	
+	/**
+	 * get the default package derived by the targetNamespace
+	 */
+	public String packageFromTargetNamespace(){
+		return  URLProcessor.makePackageName(wsdlDefinition.getTargetNamespace());
+		
+	}
+	
+	/**
+	 * Returns a list of service names
+	 * the names are QNames
+	 * @return
+	 */
+	public List getServiceList(){
+		List returnList = new ArrayList();
+		Service service = null;
+		Map serviceMap = wsdlDefinition.getServices();
+		if(serviceMap!=null && !serviceMap.isEmpty()){
+		   Iterator serviceIterator = serviceMap.values().iterator();
+		   while(serviceIterator.hasNext()){
+			   service = (Service)serviceIterator.next();
+			   returnList.add(service.getQName());
+		   }
+		}
+		
+		return returnList;
+	}
+
+	/**
+	 * Returns a list of ports for a particular service
+	 * the names are QNames
+	 * @return
+	 */
+	public List getPortNameList(QName serviceName){
+		List returnList = new ArrayList();
+		Service service = wsdlDefinition.getService(serviceName);
+		Port port = null; 
+		if(service!=null){
+		   Map portMap = service.getPorts();
+		   if (portMap!=null && !portMap.isEmpty()){
+			   Iterator portIterator = portMap.values().iterator();
+			   while(portIterator.hasNext()){
+				 port = (Port)portIterator.next();
+				 returnList.add(port.getName());
+			   }
+		   }
+		  
+		}
+		
+		return returnList;
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/resource/Codegen.properties b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/resource/Codegen.properties
new file mode 100644
index 0000000..13baea3
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/resource/Codegen.properties
@@ -0,0 +1,155 @@
+#############################################################################
+################### Property file for the Axis2 Code generator ##############
+#############################################################################
+##
+#General
+general.Error=Error
+general.Error.prefix=An error occurred while completing process -
+general.name=Axis2 Codegen Wizard
+general.browse=Browse...
+general.search=Search..
+general.invalid.state=Invalid state!
+general.useraborted.state=User aborted!
+############################################################################
+# Initial tool selection page - Page0
+# Tool selection
+page0.name=Axis2 Code generation wizard
+page0.title=Select the wizard
+page0.desc=Welcome to the Axis2 code generator wizard. 
+#
+page0.options.desc=Please specify what you want to do. 
+page0.hint.desc=Hint : You can generate java code from a WSDL or WSDL from a Java source file.
+page0.java2wsdl.desc=Select this option if you already have a java source file and need to generate a WSDL 
+page0.java2wsdl.caption=Generate a WSDL from a Java source file
+#
+page0.wsdl2java.desc=Select this option if you need to generate stubs/skeletons from a WSDL 
+page0.wsdl2java.caption=Generate Java source code from a WSDL file
+############################################################################
+#WSDL selection page - Page1
+#WSDL selection page name
+page1.name=page1
+page1.title=WSDL selection page
+page1.desc=Please Select the WSDL file location
+#labels
+page1.fileselection.label=WSDL file location :
+page1.fileselection.browse=Browse...
+page1.hint.desc=Hint : You can select only *.wsdl/*.xml file location 
+
+#Errors
+page1.error.filemissingerror=File name should be specified
+page1.error.wrongextension=File extension must be wsdl
+#
+####################################################################### 
+#Options - page3
+page2.name=page3
+page2.title=Options
+page2.desc=Set the options for the code generator. If you wish to edit the codegen options, Select custom option from Codegen Option drop down list.
+#labels
+page2.language.caption=Output language
+page2.syncAsync.caption=Generate both sync and async
+page2.sync.caption=Generate sync style only
+page2.async.caption=Generate async style only
+page2.package.caption=Custom package name
+page2.namespace.caption=Namespace
+page2.namespace2Pkg.caption=Namespace to package mappings
+page2.serverside.caption=Generate server side code
+page2.clientside.caption=Generate client side code
+page2.serviceXML.caption=Generate a default services.xml
+page2.testcase.caption=Generate test case
+page2.databindingCheck.caption=Databinding Name
+page2.serviceName.caption=Service Name
+page2.portName.caption=Port Name
+page2.genAll.caption=Generate All
+page2.ssInterface.caption=Generate an Interface for Skeleton
+page2.wsdlNotFound.message=Specified WSDL is not found!, Please Check whether you have entered the correct path to a *.wsdl on previous page.
+page2.wsdlInvalid.message=Specified WSDL is invalid!, Please select a validated *.wsdl/*.xml file on previous page.
+page2.noports.message=No ports found in the specified service
+#
+page2.options.desc=Codegen option
+page2.default.desc=Select this to codegen by accepting the default options
+page2.default.caption=Default Codegen Options
+#
+page2.custom.desc=Select this option if you need to customize the codegen options
+page2.custom.caption=Custom Codegen Options
+#errors
+page2.pachage.error.nolocation=Invalid package name. Please enter a valid package name.
+####################################################################### 
+#Output location selection - page4  
+page3.name=page4
+page3.title=Output
+page3.desc=Set the output location for the generated code
+#lables
+page3.result.decs=Select one of below to save the codegen output either on eclipse workspace project or \n on file system and then browse to enter the output path
+page3.output.caption=Output path
+page3.axishome.caption=Axis Home
+page3.jarname.caption=Jar File Name
+page3.outselection.browse=Browse...
+page3.loadlibs.browse=Check Libs...
+page3.containerbox.title=Select new file container
+page3.workspace.caption=Browse and select a project on current eclipse workspace
+page3.workspace.desc=Select this to add the codegen results under a project on current eclipse workspace
+page3.filesystem.caption=Browse and select location on local file system
+page3.filesystem.desc=Select this to save the results of the codegen on local file system
+page3.addaxislib.caption=Add Axis2 libraries to the codegen result project
+page3.addaxislib.desc=Click this to Copy the Axis2 Libraries to the created project library
+page3.jarcreation.caption=Create a jar file of codegen result project and add to resulted project lib folder (Default : CodegenResults.jar)
+page3.jarcreation.desc=Click this to create a jar file of the codegen results and put that in output location
+page3.copypluginlib.caption=Add the Axis2 codegen jars to the codegen resulted project
+page3.copypluginlib.desc=Click this to add all the Axis2 libs in to the generated project as the result of codegen
+page3.hint.caption=Hint : If you have Axis2 binary distribution or Axis source, then you can add those libs also to the\n resulted codegen project by checking the \"Add Axis2 Libraries to the codegen resulted project\"\n check box and specifying the Axis2 home. Another option you have is to compile the codegen \n result project and add it as a jar file in the lib directory of the resulted project, for that you can \n check the \"Create a jar file of codegen result project and add to resulted project lib folder\" \n checkbox and then give the jar file name that you prefer. \n If you are adding the codegen result to a eclipse project on current eclipse workspace, \n please make sure to refresh that particular eclipse project. \n Also if you select the options to add libs to the project, make sure to add those libs to the \n project library path.
+page3.loadlib.success.caption=Axis libs loaded successfully !!
+page3.loadlib.fail.caption=Axis libs are not available!! Please verify the entered path!!
+page3.loadlib.fail.message=Axis libs are not available!! Please verify the entered path, If you point to source try maven goal create-lib !! 
+#errors
+page3.error.nolocation=output location needs to be specified
+#
+##########################################################################
+#java source file selection = page5
+page4.name=page5
+page4.title=Java source/classpath selection
+page4.desc=Select the classes and the libraries
+#labels
+page4.classpath.label=Java Class path Entries. Select either folders or jar files
+page4.classname.label=Fully Qualified Class name
+page4.addDir.label=Add Folder
+page4.addJar.label=Add Jar
+page4.removeEntry.label=Remove
+page4.error.invalidClassName=Fully qualified class name needs to be specified!
+page4.error.ClassNameNotTerminated=Class name is not properly terminated!
+page4.tryLoad.label=Test Class Loading..
+page4.unknownError.label=Unknown error!
+page4.successLoading.label=Class file loaded successfully
+page4.hint.caption=Hint : Please give the fully qualified class name, example :com.foo.BarService\n         Then add the folder or the jar file which contains that class file. \n         Finally check whether the class file can be loaded from the plugin. \n\n         If the class that you are going to load contains any dependencies \n         on other axis2 libraries ( for example like axiom*.jar), please add those \n         libraries as well and try to load the class.
+
+###############################################################
+#java2wsdl options = page6
+page5.name=page6
+page5.title=Java to WSDL Options
+page5.desc=Set the Options for the generator
+page5.targetNamespace.label=Target Namespace
+page5.targetNamespacePrefix.label=Target Namespace Prefix
+page5.schemaTargetNs.label=Schema target namespace
+page5.schemaTargetNsPrefix.label=Schema target namespace Prefix
+page5.serviceName.label=Service Name
+page5.error.filemissingerror=Service name should be specified
+
+###############################################################
+#java2wsdl output location - page7
+page6.name=page7
+page6.title=WSDL file output location
+page6.desc=Select the location for the generated WSDL.
+####
+page6.output.label=Output location
+page6.outputname.label=Output File Name
+page6.workspace.caption=Browse and add the WSDL to a project on current eclipse workspace
+page6.workspace.desc=Select this to add the WSDL file under a project on current eclipse workspace
+page6.filesystem.caption=Browse and save the WSDL file on local file system
+page6.filesystem.desc=Select this to save the resulted WSDL on local file system
+#Wizard
+generator.generating=Generating code...
+generator.readingWOM=Reading WSDL file...
+#Success message
+wizard.success=All operations completed successfully !
+
+##############################################################
+
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/ClassFileHandler.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/ClassFileHandler.java
new file mode 100644
index 0000000..0e9c12e
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/ClassFileHandler.java
@@ -0,0 +1,53 @@
+package org.apache.axis2.tool.core;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+/*
+ * Copyright 2004,2005 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.
+ */
+public class ClassFileHandler {
+
+
+   
+/**
+ * 
+ * @param classFileName
+ * @param location
+ * @return
+ * @throws IOException
+ * @throws ClassNotFoundException
+ */
+    public ArrayList getMethodNamesFromClass(String classFileName,String location) throws IOException, ClassNotFoundException{
+        ArrayList returnList = new ArrayList();
+        File fileEndpoint = new File(location);
+        if (!fileEndpoint.exists())
+            throw new IOException("the location is invalid");
+        URL[] urlList = {fileEndpoint.toURL()};
+        URLClassLoader clazzLoader = new URLClassLoader(urlList);
+        Class clazz = clazzLoader.loadClass(classFileName);
+        Method[] methods = clazz.getDeclaredMethods();
+
+        for (int i = 0; i < methods.length; i++) {
+            returnList.add(methods[i].getName());
+
+        }
+        return returnList;
+    }
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/FileCopier.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/FileCopier.java
new file mode 100644
index 0000000..a458a5f
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/FileCopier.java
@@ -0,0 +1,56 @@
+package org.apache.axis2.tool.core;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Copy;
+import org.apache.tools.ant.types.FileSet;
+
+import java.io.File;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class FileCopier extends Copy{
+    public FileCopier() {
+        this.setProject(new Project());
+        this.getProject().init();
+        this.setTaskType("copy");
+        this.setTaskName("copy-files");
+        this.setOwningTarget(new org.apache.tools.ant.Target());
+    }
+
+    public void copyFiles(File sourceFile,File destinationDirectory,String filter){
+
+        this.filesets.clear();
+
+        if (sourceFile.isFile())
+            this.setFile(sourceFile);
+        else {
+            FileSet fileset = new FileSet();
+            fileset.setDir(sourceFile);
+            if (filter!=null){
+                if (filter.matches("\\.\\w*")){
+                    fileset.setIncludes("*/**/*"+filter); 
+                }
+            }
+            
+            this.addFileset(fileset);
+        }
+        this.setTodir(destinationDirectory);
+        this.perform();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/JarFileWriter.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/JarFileWriter.java
new file mode 100644
index 0000000..3f31b41
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/JarFileWriter.java
@@ -0,0 +1,55 @@
+package org.apache.axis2.tool.core;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Jar;
+
+import java.io.File;
+import java.io.IOException;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+public class JarFileWriter extends Jar{
+
+
+    public JarFileWriter() {
+        this.setProject(new Project());
+        this.getProject().init();
+        this.setTaskType("jar");
+        this.setTaskName("jar");
+        this.setOwningTarget(new org.apache.tools.ant.Target());
+    }
+
+    public void writeJarFile(File outputFolder,String outputFileName,File inputFileFolder) throws IOException,Exception {
+
+        if (!outputFolder.exists()){
+            outputFolder.mkdir(); //create the output path
+        }else{
+            if (!outputFolder.isDirectory())
+                return;
+        }
+
+        File targetFile = new File(outputFolder,outputFileName);
+        this.setBasedir(inputFileFolder);
+        this.setDestFile(targetFile);
+
+        //run the task
+        this.perform();
+
+
+    }
+
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/ServiceFileCreator.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/ServiceFileCreator.java
new file mode 100644
index 0000000..a98801c
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/ServiceFileCreator.java
@@ -0,0 +1,104 @@
+package org.apache.axis2.tool.core;
+
+import org.apache.axis2.wsdl.codegen.writer.ClassWriter;
+import org.apache.axis2.wsdl.codegen.writer.ServiceXMLWriter;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+
+/*
+* Copyright 2004,2005 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.
+*/
+
+public class ServiceFileCreator {
+    
+    public File createServiceFile(String serviceName,String implementationClassName,ArrayList methodList) throws Exception {
+        
+        String currentUserDir = System.getProperty("user.dir");
+        String fileName = "services.xml";
+        
+        ClassWriter serviceXmlWriter = new ServiceXMLWriter(currentUserDir);
+        writeClass(getServiceModel(serviceName,implementationClassName,methodList),serviceXmlWriter,fileName);
+
+        return new File(currentUserDir + File.separator + fileName);
+
+
+
+
+    }
+
+    private Document getServiceModel(String serviceName,String className,ArrayList methods){
+
+        DocumentBuilder builder = null;
+        try {
+            builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+        } catch (ParserConfigurationException e) {
+            throw new RuntimeException(e);
+        }
+        Document doc = builder.newDocument();
+        
+        Element rootElement = doc.createElement("interface");
+        rootElement.setAttribute("classpackage","");
+        rootElement.setAttribute("name",className);
+        rootElement.setAttribute("servicename",serviceName);
+        Element methodElement = null;
+        int size = methods.size();
+        for(int i=0;i<size;i++){
+            methodElement = doc.createElement("method");
+            rootElement.setAttribute("name",methods.get(i).toString());
+            rootElement.appendChild(methodElement);
+        }
+        doc.appendChild(rootElement);
+        return doc;
+    }
+    
+    /**
+     * A resusable method for the implementation of interface and implementation writing
+     * @param model
+     * @param writer
+     * @throws IOException
+     * @throws Exception
+     */
+    private void writeClass(Document model, ClassWriter writer,String fileName) throws IOException,Exception {
+        
+        Source source = new DOMSource(model);
+        ByteArrayOutputStream memoryStream = new ByteArrayOutputStream();
+        Result result = new StreamResult(memoryStream);
+        Transformer xformer = TransformerFactory.newInstance().newTransformer();
+        xformer.transform(source, result);
+        
+        //TODO: Doesn't really output stuff from the memorystream to file...hmm.
+        
+        writer.loadTemplate();
+        writer.createOutFile(null,
+                 fileName);
+    }
+    
+   
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/SrcCompiler.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/SrcCompiler.java
new file mode 100644
index 0000000..a66f667
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/core/SrcCompiler.java
@@ -0,0 +1,63 @@
+package org.apache.axis2.tool.core;
+/*
+ * Copyright 2004,2005 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 org.apache.tools.ant.taskdefs.Javac;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.Project;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.FilenameFilter;
+import java.io.FileFilter;
+import java.net.URL;
+import java.util.Properties;
+
+/**
+ * This is the custom class for compiling the source 
+ */
+public class SrcCompiler extends Javac {
+
+    Project project;
+    public SrcCompiler() {
+        project = new Project();
+        this.setProject(project);
+        project.init();
+    }
+
+    public void compileSource(File destDir, String compilableSrcLocation){
+
+        Path path;
+        Path srcPath = new Path(project,compilableSrcLocation + File.separator + "src");
+        this.setSrcdir(srcPath);
+        this.setDestdir(destDir);
+        this.setIncludes("**/*.java, *.java");
+        File lib = new File(compilableSrcLocation+  File.separator + "lib");
+        File files [] = new File[lib.listFiles().length];
+        files = lib.listFiles();
+
+        Path classpath = new Path(project);
+        for (int count =0;count<files.length;count++){
+            path = new Path(project,files[count].getAbsolutePath());
+            classpath.add(path);
+        }
+        
+        this.setClasspath(classpath);
+        this.setFork(true);
+        this.perform();
+
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java
new file mode 100644
index 0000000..a635270
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.util;
+
+public class Constants {
+    public class UIConstants{
+        public static final int LABEL_WIDTH=100;
+        public static final int RADIO_BUTTON_WIDTH=200;
+        public static final int TEXT_BOX_WIDTH=250;
+        public static final int BROWSE_BUTTON_WIDTH=20;
+        public static final int GENERAL_BUTTON_WIDTH=80;
+
+        public static final int GENERAL_COMP_HEIGHT=20;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/test/resources/log4j.properties b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/test/resources/log4j.properties
new file mode 100644
index 0000000..58ecb07
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-codegen-plugin/src/test/resources/log4j.properties
@@ -0,0 +1,21 @@
+# Set root category priority to INFO and its only appender to CONSOLE.
+log4j.rootCategory=INFO, CONSOLE
+#log4j.rootCategory=INFO, CONSOLE, LOGFILE
+
+# Set the enterprise logger priority to FATAL
+log4j.logger.org.apache.axis2.enterprise=FATAL
+log4j.logger.de.hunsicker.jalopy.io=FATAL
+log4j.logger.httpclient.wire.header=FATAL
+log4j.logger.org.apache.commons.httpclient=FATAL
+
+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c - %m%n
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+log4j.appender.LOGFILE=org.apache.log4j.FileAppender
+log4j.appender.LOGFILE.File=axis2.log
+log4j.appender.LOGFILE.Append=true
+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/pom.xml b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/pom.xml
new file mode 100644
index 0000000..d99377b
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/pom.xml
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+        xmlns="http://maven.apache.org/POM/4.0.0"

+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+    <parent>

+        <groupId>org.apache.axis2.maven2</groupId>

+        <artifactId>axis2-maven-tools</artifactId>

+        <version>1.1.0.1-SNAPSHOT</version>

+    </parent>

+    <modelVersion>4.0.0</modelVersion>

+    <artifactId>axis2-wsdl2code-maven-plugin</artifactId>

+    <name>Axis 2 WSDL2Code Maven Plugin</name>

+    <packaging>maven-plugin</packaging>

+    <description>The Axis 2 Plugin for Maven allows client side and server side sources from a WSDL.</description>

+    <repositories>

+        <repository>

+            <id>repo1</id>

+            <name>maven repository</name>

+            <url>http://repo1.maven.org/maven2/</url>

+        </repository>

+        <repository>

+            <id>ibiblio</id>

+            <name>ibiblio repository</name>

+            <url>http://ibiblio.org/maven/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <id>ibiblio</id>

+            <name>ibiblio repository</name>

+            <url>http://ibiblio.org/maven2/</url>

+        </repository>

+        <repository>

+            <id>apache-m1</id>

+            <name>apache m1-ibiblio-rsync repository</name>

+            <url>http://people.apache.org/repo/m1-ibiblio-rsync-repository/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <snapshots>

+                <enabled>true</enabled>

+            </snapshots>

+            <id>apache-people-repo</id>

+            <name>apache people maven repository</name>

+            <url>http://people.apache.org/repository/</url>

+            <layout>legacy</layout>

+        </repository>

+        <repository>

+            <snapshots>

+                <enabled>true</enabled>

+            </snapshots>

+            <id>ws-zones</id>

+            <name>ws.zones maven repository</name>

+            <url>http://ws.zones.apache.org/repository/</url>

+            <layout>legacy</layout>

+        </repository>

+    </repositories>

+    <dependencies>

+        <dependency>

+            <groupId>org.apache.maven</groupId>

+            <artifactId>maven-plugin-api</artifactId>

+            <version>2.0.4</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.maven</groupId>

+            <artifactId>maven-artifact</artifactId>

+            <version>2.0.4</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.maven</groupId>

+            <artifactId>maven-project</artifactId>

+            <version>2.0.4</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-codegen</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-adb</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-adb-codegen</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>axis2</groupId>

+            <artifactId>axis2-java2wsdl</artifactId>

+            <version>1.1.0.1-SNAPSHOT</version>

+        </dependency>

+        <dependency>

+            <groupId>junit</groupId>

+            <artifactId>junit</artifactId>

+            <version>3.8.2</version>

+            <scope>test</scope>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.maven.shared</groupId>

+            <artifactId>maven-plugin-testing-harness</artifactId>

+            <version>1.0-beta-1</version>

+            <scope>test</scope>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>1.5.2</version>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>1.1</version>

+        </dependency>

+        <dependency>

+            <groupId>commons-httpclient</groupId>

+            <artifactId>commons-httpclient</artifactId>

+            <version>3.0.1</version>

+            <scope>runtime</scope>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>2.0</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>woodstox</groupId>

+            <artifactId>wstx</artifactId>

+            <version>asl-3.0.0</version>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>1.0.1</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.mail</groupId>

+            <artifactId>mail</artifactId>

+            <version>1.4</version>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>1.1</version>

+        </dependency>

+        <dependency>

+            <groupId>org.codehaus.plexus</groupId>

+            <artifactId>plexus-utils</artifactId>

+            <version>1.0.5</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.core</groupId>

+            <artifactId>runtime</artifactId>

+            <version>3.1.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse</groupId>

+            <artifactId>swt</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse</groupId>

+            <artifactId>osgi</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.swt</groupId>

+            <artifactId>gtk_linux_x86</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.ui</groupId>

+            <artifactId>ide</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse.ui</groupId>

+            <artifactId>workbench</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>org.eclipse</groupId>

+            <artifactId>jface</artifactId>

+            <version>3.2</version>

+        </dependency>

+        <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant</artifactId>

+            <version>1.6.2</version>

+        </dependency>

+    </dependencies>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ClassFileHandler.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ClassFileHandler.java
new file mode 100644
index 0000000..0e9c12e
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ClassFileHandler.java
@@ -0,0 +1,53 @@
+package org.apache.axis2.tool.core;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+/*
+ * Copyright 2004,2005 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.
+ */
+public class ClassFileHandler {
+
+
+   
+/**
+ * 
+ * @param classFileName
+ * @param location
+ * @return
+ * @throws IOException
+ * @throws ClassNotFoundException
+ */
+    public ArrayList getMethodNamesFromClass(String classFileName,String location) throws IOException, ClassNotFoundException{
+        ArrayList returnList = new ArrayList();
+        File fileEndpoint = new File(location);
+        if (!fileEndpoint.exists())
+            throw new IOException("the location is invalid");
+        URL[] urlList = {fileEndpoint.toURL()};
+        URLClassLoader clazzLoader = new URLClassLoader(urlList);
+        Class clazz = clazzLoader.loadClass(classFileName);
+        Method[] methods = clazz.getDeclaredMethods();
+
+        for (int i = 0; i < methods.length; i++) {
+            returnList.add(methods[i].getName());
+
+        }
+        return returnList;
+    }
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/FileCopier.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/FileCopier.java
new file mode 100644
index 0000000..a458a5f
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/FileCopier.java
@@ -0,0 +1,56 @@
+package org.apache.axis2.tool.core;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Copy;
+import org.apache.tools.ant.types.FileSet;
+
+import java.io.File;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class FileCopier extends Copy{
+    public FileCopier() {
+        this.setProject(new Project());
+        this.getProject().init();
+        this.setTaskType("copy");
+        this.setTaskName("copy-files");
+        this.setOwningTarget(new org.apache.tools.ant.Target());
+    }
+
+    public void copyFiles(File sourceFile,File destinationDirectory,String filter){
+
+        this.filesets.clear();
+
+        if (sourceFile.isFile())
+            this.setFile(sourceFile);
+        else {
+            FileSet fileset = new FileSet();
+            fileset.setDir(sourceFile);
+            if (filter!=null){
+                if (filter.matches("\\.\\w*")){
+                    fileset.setIncludes("*/**/*"+filter); 
+                }
+            }
+            
+            this.addFileset(fileset);
+        }
+        this.setTodir(destinationDirectory);
+        this.perform();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/JarFileWriter.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/JarFileWriter.java
new file mode 100644
index 0000000..dcec61f
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/JarFileWriter.java
@@ -0,0 +1,55 @@
+package org.apache.axis2.tool.core;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Jar;
+
+import java.io.File;
+import java.io.IOException;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+public class JarFileWriter extends Jar{
+
+
+    public JarFileWriter() {
+        this.setProject(new Project());
+        this.getProject().init();
+        this.setTaskType("jar");
+        this.setTaskName("jar");
+        this.setOwningTarget(new org.apache.tools.ant.Target());
+    }
+
+    public void writeJarFile(File outputFolder,String outputFileName,File inputFileFolder) throws IOException,Exception {
+
+        if (!outputFolder.exists()){
+            outputFolder.mkdir(); //create the output path
+        }else{
+            if (!outputFolder.isDirectory())
+                return;
+        }
+
+        File targetFile = new File(outputFolder,outputFileName);
+        this.setBasedir(inputFileFolder);
+        this.setDestFile(targetFile);
+
+        //run the task
+        this.perform();
+
+
+    }
+
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ServiceFileCreator.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ServiceFileCreator.java
new file mode 100644
index 0000000..a98801c
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ServiceFileCreator.java
@@ -0,0 +1,104 @@
+package org.apache.axis2.tool.core;
+
+import org.apache.axis2.wsdl.codegen.writer.ClassWriter;
+import org.apache.axis2.wsdl.codegen.writer.ServiceXMLWriter;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+
+/*
+* Copyright 2004,2005 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.
+*/
+
+public class ServiceFileCreator {
+    
+    public File createServiceFile(String serviceName,String implementationClassName,ArrayList methodList) throws Exception {
+        
+        String currentUserDir = System.getProperty("user.dir");
+        String fileName = "services.xml";
+        
+        ClassWriter serviceXmlWriter = new ServiceXMLWriter(currentUserDir);
+        writeClass(getServiceModel(serviceName,implementationClassName,methodList),serviceXmlWriter,fileName);
+
+        return new File(currentUserDir + File.separator + fileName);
+
+
+
+
+    }
+
+    private Document getServiceModel(String serviceName,String className,ArrayList methods){
+
+        DocumentBuilder builder = null;
+        try {
+            builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+        } catch (ParserConfigurationException e) {
+            throw new RuntimeException(e);
+        }
+        Document doc = builder.newDocument();
+        
+        Element rootElement = doc.createElement("interface");
+        rootElement.setAttribute("classpackage","");
+        rootElement.setAttribute("name",className);
+        rootElement.setAttribute("servicename",serviceName);
+        Element methodElement = null;
+        int size = methods.size();
+        for(int i=0;i<size;i++){
+            methodElement = doc.createElement("method");
+            rootElement.setAttribute("name",methods.get(i).toString());
+            rootElement.appendChild(methodElement);
+        }
+        doc.appendChild(rootElement);
+        return doc;
+    }
+    
+    /**
+     * A resusable method for the implementation of interface and implementation writing
+     * @param model
+     * @param writer
+     * @throws IOException
+     * @throws Exception
+     */
+    private void writeClass(Document model, ClassWriter writer,String fileName) throws IOException,Exception {
+        
+        Source source = new DOMSource(model);
+        ByteArrayOutputStream memoryStream = new ByteArrayOutputStream();
+        Result result = new StreamResult(memoryStream);
+        Transformer xformer = TransformerFactory.newInstance().newTransformer();
+        xformer.transform(source, result);
+        
+        //TODO: Doesn't really output stuff from the memorystream to file...hmm.
+        
+        writer.loadTemplate();
+        writer.createOutFile(null,
+                 fileName);
+    }
+    
+   
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ServiceXMLCreater.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ServiceXMLCreater.java
new file mode 100644
index 0000000..2301375
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/core/ServiceXMLCreater.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.core;
+
+import java.util.ArrayList;
+
+public class ServiceXMLCreater {
+    private String serviceName;
+    private String serviceClass;
+    private ArrayList operations;
+
+    public ServiceXMLCreater(String serviceName, String serviceClass, ArrayList operations) {
+        this.serviceName = serviceName;
+        this.serviceClass = serviceClass;
+        this.operations = operations;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public String getServiceClass() {
+        return serviceClass;
+    }
+
+    public ArrayList getOperations() {
+        return operations;
+    }
+
+    public String toString() {
+        String serviceXML = "<service name=\"" + serviceName + "\" >\n" +
+                "<description>\n" +
+                "Please Type your service description here\n" +
+                "</description>\n" +
+                "<parameter name=\"ServiceClass\" locked=\"false\">" + serviceClass + "</parameter>\n";
+        if (operations.size() > 0) {
+            serviceXML = serviceXML + "<excludeOperations>\n";
+            for (int i = 0; i < operations.size(); i++) {
+                String s = (String) operations.get(i);
+                String op = "<operation>" + s + "</operation>\n";
+                serviceXML = serviceXML + op;
+            }
+            serviceXML = serviceXML + "</excludeOperations>\n";
+        }
+        serviceXML = serviceXML + "</service>\n";
+        return serviceXML;
+    }
+
+}
+
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/ClassFileSelectionBean.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/ClassFileSelectionBean.java
new file mode 100644
index 0000000..364c97b
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/ClassFileSelectionBean.java
@@ -0,0 +1,44 @@
+package org.apache.axis2.tool.service.bean;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class ClassFileSelectionBean {
+    private String fileLocation;
+    private String filter;
+
+    public String getFileLocation() {
+        return fileLocation;
+    }
+
+    public void setFileLocation(String fileLocation) {
+        this.fileLocation = fileLocation;
+    }
+    
+    
+    /**
+     * @return Returns the filter.
+     */
+    public String getFilter() {
+        return filter;
+    }
+    /**
+     * @param filter The filter to set.
+     */
+    public void setFilter(String filter) {
+        this.filter = filter;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/LibrarySelectionBean.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/LibrarySelectionBean.java
new file mode 100644
index 0000000..5cb1e93
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/LibrarySelectionBean.java
@@ -0,0 +1,38 @@
+/*
+* Copyright 2004,2005 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.axis2.tool.service.bean;

+

+public class LibrarySelectionBean {

+    

+    private String[] fileList = null;

+    

+    

+

+    /**

+     * @return Returns the fileList.

+     */

+    public String[] getFileList() {

+        return fileList;

+    }

+    /**

+     * @param fileList The fileList to set.

+     */

+    public void setFileList(String[] fileList) {

+        this.fileList = fileList;

+    }

+}

diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/Page2Bean.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/Page2Bean.java
new file mode 100644
index 0000000..2770936
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/Page2Bean.java
@@ -0,0 +1,108 @@
+package org.apache.axis2.tool.service.bean;
+
+import java.util.ArrayList;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class Page2Bean {
+    private boolean manual = false;
+    private boolean automatic = false;
+
+    private String manualFileName;
+    private String automaticClassName;
+    private String providerClassName;
+
+    private ArrayList selectedMethodNames;
+    private String serviceName;
+    
+    
+    /**
+     * @return Returns the serviceName.
+     */
+    public String getServiceName() {
+        return serviceName;
+    }
+    /**
+     * @param serviceName The serviceName to set.
+     */
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+    public String getProviderClassName() {
+        return providerClassName;
+    }
+
+    public void setProviderClassName(String providerClassName) {
+        this.providerClassName = providerClassName;
+    }
+
+    public Page2Bean() {
+        selectedMethodNames = new ArrayList();
+    }
+
+    public boolean isManual() {
+        return manual;
+    }
+
+    public void setManual(boolean manual) {
+        this.manual = manual;
+    }
+
+    public boolean isAutomatic() {
+        return automatic;
+    }
+
+    public void setAutomatic(boolean automatic) {
+        this.automatic = automatic;
+    }
+
+    public String getManualFileName() {
+        return manualFileName;
+    }
+
+    public void setManualFileName(String manualFileName) {
+        this.manualFileName = manualFileName;
+    }
+
+    public String getAutomaticClassName() {
+        return automaticClassName;
+    }
+
+    public void setAutomaticClassName(String automaticClassName) {
+        this.automaticClassName = automaticClassName;
+    }
+
+    public int getMethodNameCount() {
+        return selectedMethodNames.size();
+    }
+
+    public void setSelectedMethodNames(ArrayList list) {
+        this.selectedMethodNames = list;
+    }
+
+    public String getMethodName(int index) {
+        return selectedMethodNames.get(index).toString();
+    }
+
+    public void addMethodName(String selectedMethodName) {
+        this.selectedMethodNames.add(selectedMethodNames);
+    }
+
+    public ArrayList getSelectedMethodNames() {
+        return selectedMethodNames;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/Page3Bean.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/Page3Bean.java
new file mode 100644
index 0000000..3a2174b
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/Page3Bean.java
@@ -0,0 +1,38 @@
+package org.apache.axis2.tool.service.bean;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class Page3Bean {
+    private String outputFolderName;
+    private String outputFileName;
+
+    public String getOutputFolderName() {
+        return outputFolderName;
+    }
+
+    public void setOutputFolderName(String outputFolderName) {
+        this.outputFolderName = outputFolderName;
+    }
+
+    public String getOutputFileName() {
+        return outputFileName;
+    }
+
+    public void setOutputFileName(String outputFileName) {
+        this.outputFileName = outputFileName;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WSDLAutoGenerateOptionBean.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WSDLAutoGenerateOptionBean.java
new file mode 100644
index 0000000..22f24d8
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WSDLAutoGenerateOptionBean.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.bean;
+
+import java.util.Vector;
+
+
+public class WSDLAutoGenerateOptionBean {
+    //rest of the parameters are taken from other
+    //beans
+    private String classFileName;
+    private String style;
+    private String outputFileName;
+    private Vector listOfMethods;
+    
+
+    /**
+     * @return Returns the outputFileName.
+     */
+    public String getOutputFileName() {
+        return outputFileName;
+    }
+    /**
+     * @param outputFileName The outputFileName to set.
+     */
+    public void setOutputFileName(String outputFileName) {
+        this.outputFileName = outputFileName;
+    }
+    /**
+     * @return Returns the classFileName.
+     */
+    public String getClassFileName() {
+        return classFileName;
+    }
+    /**
+     * @param classFileName The classFileName to set.
+     */
+    public void setClassFileName(String classFileName) {
+        this.classFileName = classFileName;
+    }
+    /**
+     * @return Returns the style.
+     */
+    public String getStyle() {
+        return style;
+    }
+    /**
+     * @param style The style to set.
+     */
+    public void setStyle(String style) {
+        this.style = style;
+    }
+    
+    /**
+     * @return Returns the listOfMethods.
+     */
+    public Vector getListOfMethods() {
+        return listOfMethods;
+    }
+    /**
+     * @param listOfMethods The listOfMethods to set.
+     */
+    public void setListOfMethods(Vector listOfMethods) {
+        this.listOfMethods = listOfMethods;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WSDLFileLocationBean.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WSDLFileLocationBean.java
new file mode 100644
index 0000000..79b665b
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WSDLFileLocationBean.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.bean;
+
+public class WSDLFileLocationBean {
+
+    private String WSDLFileName;
+    private boolean manual;
+    private boolean skip;
+    
+    
+    
+    /**
+     * @return Returns the skip.
+     */
+    public boolean isSkip() {
+        return skip;
+    }
+    /**
+     * @param skip The skip to set.
+     */
+    public void setSkip(boolean skip) {
+        this.skip = skip;
+    }
+    /**
+     * @return Returns the manual.
+     */
+    public boolean isManual() {
+        return manual;
+    }
+    /**
+     * @param manual The manual to set.
+     */
+    public void setManual(boolean manual) {
+        this.manual = manual;
+    }
+    /**
+     * @return Returns the wSDLFileName.
+     */
+    public String getWSDLFileName() {
+        return WSDLFileName;
+    }
+    /**
+     * @param fileName The wSDLFileName to set.
+     */
+    public void setWSDLFileName(String fileName) {
+        WSDLFileName = fileName;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WizardBean.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WizardBean.java
new file mode 100644
index 0000000..1cfb5c4
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/bean/WizardBean.java
@@ -0,0 +1,77 @@
+package org.apache.axis2.tool.service.bean;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class WizardBean {
+    private ClassFileSelectionBean classFileBean;
+    private WSDLFileLocationBean wsdlBean;
+    private LibrarySelectionBean libraryBean;
+    
+    private Page2Bean page2bean;
+    private Page3Bean page3bean;
+    
+
+    /**
+     * @return Returns the libraryBean.
+     */
+    public LibrarySelectionBean getLibraryBean() {
+        return libraryBean;
+    }
+    /**
+     * @param libraryBean The libraryBean to set.
+     */
+    public void setLibraryBean(LibrarySelectionBean libraryBean) {
+        this.libraryBean = libraryBean;
+    }
+    
+    /**
+     * @return Returns the wsdlBean.
+     */
+    public WSDLFileLocationBean getWsdlBean() {
+        return wsdlBean;
+    }
+    /**
+     * @param wsdlBean The wsdlBean to set.
+     */
+    public void setWsdlBean(WSDLFileLocationBean wsdlBean) {
+        this.wsdlBean = wsdlBean;
+    }
+    public ClassFileSelectionBean getPage1bean() {
+        return classFileBean;
+    }
+
+    public void setPage1bean(ClassFileSelectionBean page1bean) {
+        this.classFileBean = page1bean;
+    }
+
+    public Page2Bean getPage2bean() {
+        return page2bean;
+    }
+
+    public void setPage2bean(Page2Bean page2bean) {
+        this.page2bean = page2bean;
+    }
+
+    public Page3Bean getPage3bean() {
+        return page3bean;
+    }
+
+    public void setPage3bean(Page3Bean page3bean) {
+        this.page3bean = page3bean;
+    }
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/control/Controller.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/control/Controller.java
new file mode 100644
index 0000000..39973ec
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/control/Controller.java
@@ -0,0 +1,211 @@
+package org.apache.axis2.tool.service.control;
+
+import org.apache.axis2.tool.core.ClassFileHandler;
+import org.apache.axis2.tool.core.FileCopier;
+import org.apache.axis2.tool.core.JarFileWriter;
+import org.apache.axis2.tool.core.ServiceFileCreator;
+import org.apache.axis2.tool.core.ServiceXMLCreater;
+import org.apache.axis2.tool.service.bean.ClassFileSelectionBean;
+import org.apache.axis2.tool.service.bean.LibrarySelectionBean;
+import org.apache.axis2.tool.service.bean.Page2Bean;
+import org.apache.axis2.tool.service.bean.Page3Bean;
+import org.apache.axis2.tool.service.bean.WSDLFileLocationBean;
+import org.apache.axis2.tool.service.bean.WizardBean;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class Controller {
+
+    public ArrayList getMethodList(WizardBean bean) throws ProcessException {
+        ArrayList returnList = null;
+        try {
+            returnList =
+                    new ClassFileHandler().getMethodNamesFromClass(
+                            bean.getPage2bean().getAutomaticClassName(),
+                            bean.getPage1bean().getFileLocation());
+        } catch (IOException e) {
+            throw new ProcessException(
+                    "IO Error, The class file location may be faulty!", e);
+        } catch (ClassNotFoundException e) {
+            throw new ProcessException(
+                    " The specified class does not exist!!!");
+        } catch (Exception e) {
+            throw new ProcessException(
+                    "Unknown Error! See whether all parameters are available");
+        }
+        return returnList;
+    }
+
+
+    public void process(WizardBean bean) throws ProcessException, Exception {
+
+        ClassFileSelectionBean page1Bean = bean.getPage1bean();
+        WSDLFileLocationBean wsdlBean = bean.getWsdlBean();
+        LibrarySelectionBean libBean = bean.getLibraryBean();
+        Page2Bean page2Bean = bean.getPage2bean();
+        Page3Bean page3Bean = bean.getPage3bean();
+
+        File serviceFile = null;
+        File wsdlFile = null;
+        File classFileFolder = null;
+        File outputFolder = null;
+        String outputFileName = null;
+        boolean isServiceCreated = false;
+        boolean isWSDLAvailable = false;
+
+        //see if the class file location is valid
+        classFileFolder = new File(page1Bean.getFileLocation());
+        if (!classFileFolder.exists()) {
+            throw new ProcessException(
+                    "Specified Class file location is empty!!");
+        }
+        if (!classFileFolder.isDirectory()) {
+            throw new ProcessException(
+                    "The class file location must be a folder!");
+        }
+
+        //see if the  service.xml file is valid
+        if (page2Bean.isManual()) {
+            serviceFile = new File(page2Bean.getManualFileName());
+            if (!serviceFile.exists()) {
+                throw new ProcessException(
+                        "Specified Service XML file is missing!");
+            }
+        } else {
+            ArrayList methodList = page2Bean.getSelectedMethodNames();
+            if (methodList.isEmpty()) {
+                throw new ProcessException(
+                        "There are no methods selected to generate the service!!");
+            }
+            String currentUserDir = System.getProperty("user.dir");
+            String fileName = "services.xml";
+            ServiceXMLCreater serviceXMLCreater = new ServiceXMLCreater(page2Bean.getServiceName(),
+            												 page2Bean.getAutomaticClassName(),
+            												 page2Bean.getSelectedMethodNames());
+            String serviceFileString = serviceXMLCreater.toString();
+            	serviceFile = new File(currentUserDir + File.separator + fileName);
+            FileWriter serviceXMLFileWriter = new FileWriter(serviceFile, true);
+            BufferedWriter writer = new BufferedWriter(serviceXMLFileWriter) ;
+            writer.write(serviceFileString) ;
+            writer.close() ;
+            
+//                    new ServiceFileCreator().createServiceFile(
+//                            page2Bean.getServiceName(),
+//                            page2Bean.getAutomaticClassName(),
+//                            page2Bean.getSelectedMethodNames());//create the file here
+            	
+            isServiceCreated = true;
+        }
+
+        //see if the WSDL file is available
+        if (!wsdlBean.isSkip()){
+            wsdlFile = new File(wsdlBean.getWSDLFileName());
+            if (!wsdlFile.exists()) {
+                throw new ProcessException(
+                        "Specified WSDL file is missing!");
+            }else{
+                isWSDLAvailable = true;
+            }
+        }
+        
+        List fileList = new ArrayList();
+        //check the libs
+        if (libBean!=null){
+            String[] files = libBean.getFileList();
+            File tempFile = null;
+            if (files!=null){
+               for (int i=0;i<files.length;i++){
+                 tempFile = new File(files[i]); 
+                 if (!tempFile.exists()||tempFile.isDirectory()){
+                     throw new ProcessException("Invalid libraries");
+                 }else{
+                     fileList.add(tempFile);
+                 }
+               }
+            }
+        }
+        
+        outputFolder = new File(page3Bean.getOutputFolderName());
+        outputFileName = page3Bean.getOutputFileName();
+        if (!outputFileName.toLowerCase().endsWith(".jar")) {
+            outputFileName = outputFileName + ".jar";
+        }
+
+        File tempFileFolder = null;
+
+        try {
+            //create a temporary directory and copy the files
+            tempFileFolder = new File("Service-copy");
+            tempFileFolder.mkdir();
+            
+            File metaInfFolder = new File(tempFileFolder, "META-INF");
+            metaInfFolder.mkdir();
+            
+            File libFolder = new File(tempFileFolder,"lib");
+            libFolder.mkdir();
+            
+            FileCopier copier = new FileCopier();
+            //copy the classes
+            copier.copyFiles(classFileFolder, tempFileFolder,page1Bean.getFilter());
+            //copy the service.xml
+            copier.copyFiles(serviceFile, metaInfFolder,null);
+            //copy the libs
+            for (int i=0;i < fileList.size();i++){
+               copier.copyFiles((File)fileList.get(i),libFolder,null); 
+            }
+            
+            if (isWSDLAvailable){
+                new FileCopier().copyFiles(wsdlFile, metaInfFolder,null);
+            }
+            //jar the temp directory. the output folder will be created if missing
+            new JarFileWriter().writeJarFile(outputFolder,
+                    outputFileName,
+                    tempFileFolder);
+        } catch (Exception e) {
+            throw new ProcessException(e);
+        } finally {
+            deleteDir(tempFileFolder);
+             if (isServiceCreated)
+                serviceFile.delete();
+
+
+        }
+
+    }
+    
+    private  boolean deleteDir(File dir) {
+        if (dir.isDirectory()) {
+            String[] children = dir.list();
+            for (int i=0; i<children.length; i++) {
+                boolean success = deleteDir(new File(dir, children[i]));
+                if (!success) {
+                    return false;
+                }
+            }
+        }
+    
+        // The directory is now empty so delete it
+        return dir.delete();
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/control/ProcessException.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/control/ProcessException.java
new file mode 100644
index 0000000..4040183
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/control/ProcessException.java
@@ -0,0 +1,34 @@
+package org.apache.axis2.tool.service.control;
+
+/*
+ * Copyright 2004,2005 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.
+ */
+
+public class ProcessException extends Exception {
+    public ProcessException() {
+    }
+
+    public ProcessException(String message) {
+        super(message);
+    }
+
+    public ProcessException(Throwable cause) {
+        super(cause);
+    }
+
+    public ProcessException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/plugin/ServiceArchiver.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/plugin/ServiceArchiver.java
new file mode 100644
index 0000000..a48d8f0
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/plugin/ServiceArchiver.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.plugin;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class ServiceArchiver extends AbstractUIPlugin {
+    //The shared instance.
+    private static ServiceArchiver plugin;
+    //Resource bundle.
+    private ResourceBundle resourceBundle;
+    private static ImageDescriptor wizardImageDescriptor;
+
+    /**
+     * The constructor.
+     */
+    public ServiceArchiver() {
+        super();
+        plugin = this;
+        try {
+            resourceBundle =
+                    ResourceBundle.getBundle(
+                            "org.apache.axis2.tool.service.resource.ServiceResources");
+        } catch (MissingResourceException x) {
+            resourceBundle = null;
+        }
+    }
+
+    /**
+     * This method is called upon plug-in activation
+     */
+    public void start(BundleContext context) throws Exception {
+        super.start(context);
+    }
+
+    /**
+     * This method is called when the plug-in is stopped
+     */
+    public void stop(BundleContext context) throws Exception {
+        super.stop(context);
+    }
+
+    /**
+     * Returns the shared instance.
+     */
+    public static ServiceArchiver getDefault() {
+        return plugin;
+    }
+
+    /**
+     * Returns the string from the plugin's resource bundle,
+     * or 'key' if not found.
+     */
+    public static String getResourceString(String key) {
+        ResourceBundle bundle = ServiceArchiver.getDefault().getResourceBundle();
+        try {
+            return (bundle != null) ? bundle.getString(key) : key;
+        } catch (MissingResourceException e) {
+            return key;
+        }
+    }
+
+    /**
+     * Returns the plugin's resource bundle,
+     */
+    public ResourceBundle getResourceBundle() {
+        return resourceBundle;
+    }
+
+    public static ImageDescriptor getWizardImageDescriptor() {
+        if (wizardImageDescriptor == null) {
+            wizardImageDescriptor =
+                    ServiceArchiver.imageDescriptorFromPlugin(
+                            "Axis_Service_Archiver", "icons/asf-feather.gif");
+        }
+        return wizardImageDescriptor;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/AbstractServiceWizardPage.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/AbstractServiceWizardPage.java
new file mode 100644
index 0000000..b691122
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/AbstractServiceWizardPage.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.apache.axis2.tool.service.eclipse.util.SettingsConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.wizard.WizardPage;
+
+
+public abstract class AbstractServiceWizardPage extends WizardPage implements SettingsConstants{
+    protected IDialogSettings settings;
+    protected boolean restoredFromPreviousSettings = false;
+    
+    public AbstractServiceWizardPage(String pageName){
+        super(pageName+".name");
+        init(pageName);
+    }
+    
+    protected void init(String pageName){
+        setTitle(ServiceArchiver.getResourceString(pageName+".title"));
+        setDescription(ServiceArchiver.getResourceString(pageName+".desc"));
+        setImageDescriptor(ServiceArchiver.getWizardImageDescriptor());
+        
+        /*
+         * Get the settings for this page. If there is no section in the
+         * Plugin's settings for this OptionsPage, create a new section
+         */
+        IDialogSettings rootSettings = ServiceArchiver.getDefault()
+                .getDialogSettings();
+        IDialogSettings section = rootSettings.getSection(this.getClass()
+                .getName());
+        if (section == null) {
+            settings = rootSettings.addNewSection(this.getClass().getName());
+            restoredFromPreviousSettings = false;
+            initializeDefaultSettings();
+        } else {
+            restoredFromPreviousSettings=true;
+            settings = section;
+        }
+    }
+
+    protected void updateStatus(String message) {
+        setErrorMessage(message);
+        setPageComplete(message == null);
+    }
+
+    protected abstract void initializeDefaultSettings(); 
+    
+    protected abstract boolean getWizardComplete(); 
+    
+    //Default implementation
+    public boolean isSkipNext(){
+        return false;
+    }
+    
+    //public abstract WizardBean getBean();
+    
+    
+    
+    
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ClassFileLocationPage.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ClassFileLocationPage.java
new file mode 100644
index 0000000..d569486
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ClassFileLocationPage.java
@@ -0,0 +1,151 @@
+/**
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+
+import org.apache.axis2.tool.service.bean.ClassFileSelectionBean;
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+
+public class ClassFileLocationPage extends AbstractServiceWizardPage{
+
+    private Text classFileLocationText;
+    private Button filterByClassFilesCheckBox;
+    
+   
+    public ClassFileLocationPage(){
+        super("page1");
+    }
+   
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#initializeDefaultSettings()
+     */
+    protected void initializeDefaultSettings() {
+      settings.put(PREF_CLASS_FILE_LOCATION,System.getProperty("user.dir"));
+      settings.put(PREF_FILTER_BY_CLASSES,true);
+
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    public void createControl(Composite parent) {
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns=3;
+        layout.verticalSpacing = 9;
+        
+        container.setLayout(layout);
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		Label lable = new Label(container,SWT.NULL);
+		lable.setText(ServiceArchiver.getResourceString("page1.fileLocationLabel"));
+		
+		classFileLocationText = new Text(container,SWT.BORDER);
+		classFileLocationText.setLayoutData(gd);
+		classFileLocationText.setText(settings.get(PREF_CLASS_FILE_LOCATION));
+		classFileLocationText.addModifyListener(new ModifyListener(){
+		    public void modifyText(ModifyEvent e){
+		        handleModify();
+		    }
+		});
+		
+		Button browseButton = new Button(container,SWT.PUSH);
+		browseButton.setText(ServiceArchiver.getResourceString("general.browse"));
+		browseButton.addMouseListener(new MouseAdapter(){
+		    public void mouseUp(MouseEvent e) {
+		        handleBrowse();
+		    } 
+		});
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		filterByClassFilesCheckBox = new Button(container,SWT.CHECK);
+		filterByClassFilesCheckBox.setLayoutData(gd);
+		filterByClassFilesCheckBox.setText(ServiceArchiver.getResourceString("page1.filter.caption"));
+		filterByClassFilesCheckBox.setSelection(settings.getBoolean(PREF_FILTER_BY_CLASSES));
+		filterByClassFilesCheckBox.addSelectionListener(new SelectionListener(){
+		    public void widgetSelected(SelectionEvent e){
+		        settings.put(PREF_FILTER_BY_CLASSES,filterByClassFilesCheckBox.getSelection());
+		    }
+		    public void widgetDefaultSelected(SelectionEvent e){}
+		});
+		
+		
+		setControl(container);
+		//call the handle modify method if the setttings are restored
+		
+		if (restoredFromPreviousSettings){
+		    handleModify();
+		}
+    }
+    
+    
+    private void handleBrowse(){
+       DirectoryDialog dirDialog = new DirectoryDialog(this.getShell());
+       dirDialog.setMessage(ServiceArchiver.getResourceString("page1.filedialogTitle"));
+       String returnText = dirDialog.open();
+       if (returnText!=null){
+           this.classFileLocationText.setText(returnText);
+       }
+    }
+    
+    private void handleModify(){
+        String classLocationText = this.classFileLocationText.getText().trim();
+        settings.put(PREF_CLASS_FILE_LOCATION,classLocationText);
+        //update the wizard
+        ((ServiceArchiveWizard)this.getWizard()).setClassFileLocation(classLocationText);
+        
+        if ("".equals(classLocationText)){
+            updateStatus(ServiceArchiver.getResourceString("page1.error.filemissing"));
+        }else{    
+            updateStatus(null);
+        }
+    }
+    
+    public String getClassFileLocation(){
+        return classFileLocationText.getText();
+    }
+    
+    public ClassFileSelectionBean getBean(){
+        ClassFileSelectionBean pageBean = new ClassFileSelectionBean();
+        pageBean.setFileLocation(this.classFileLocationText.getText());
+        if (filterByClassFilesCheckBox.getSelection()){
+            pageBean.setFilter(".class");
+        }
+        return pageBean;
+    }
+
+
+
+	protected boolean getWizardComplete() {
+		return false;
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/LibraryAddingPage.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/LibraryAddingPage.java
new file mode 100644
index 0000000..6c36e60
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/LibraryAddingPage.java
@@ -0,0 +1,186 @@
+/*
+* Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+import org.apache.axis2.tool.service.bean.LibrarySelectionBean;
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Text;
+
+public class LibraryAddingPage extends AbstractServiceWizardPage {
+    
+    private Label libraryNameLabel;
+    private Text libraryNameText;
+    private Button browseButton;
+    private Button addButton;
+    private Button removeButton;
+    private List jarFileList;
+    private Label jarFilecountLabel;
+    
+    /**
+     * 
+     */
+    public LibraryAddingPage() {
+        super("page6");
+       
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#initializeDefaultSettings()
+     */
+    protected void initializeDefaultSettings() {
+       settings.put(PREF_LIB_LIBNAMES,new String[]{});//put an empty array
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    public void createControl(Composite parent) {
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns=3;
+        container.setLayout(layout);
+     
+		
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan =3;
+        libraryNameText = new Text(container,SWT.BORDER);
+        libraryNameText.setLayoutData(gd);
+       
+        libraryNameText.addModifyListener(new ModifyListener(){
+		    public void modifyText(ModifyEvent e){
+		    //handleModify();
+		    }
+		});
+		
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+		browseButton = new Button(container,SWT.PUSH);
+		browseButton.setLayoutData(gd);
+		browseButton.setText(ServiceArchiver.getResourceString("general.browse"));
+		browseButton.addMouseListener(new MouseAdapter(){
+		    public void mouseUp(MouseEvent e) {
+		        handleBrowse();
+		    }
+		});
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		addButton = new Button(container,SWT.PUSH);
+		addButton.setLayoutData(gd);
+		addButton.setText(ServiceArchiver.getResourceString("page6.add"));
+		addButton.addMouseListener(new MouseAdapter(){
+		    public void mouseUp(MouseEvent e) {
+		        handleAdd();
+		    }
+
+           
+		});
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		removeButton = new Button(container,SWT.PUSH);
+		removeButton.setLayoutData(gd);
+		removeButton.setText(ServiceArchiver.getResourceString("page6.remove"));
+		removeButton.addMouseListener(new MouseAdapter(){
+		    public void mouseUp(MouseEvent e) {
+		        handleRemove();
+		    }
+
+           
+		});
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		Label dummyLabel = new Label(container,SWT.NONE);
+		dummyLabel.setText(ServiceArchiver.getResourceString("page6.liblist.caption"));
+		dummyLabel.setLayoutData(gd);
+		
+		gd = new GridData(GridData.FILL_BOTH);
+		gd.horizontalSpan = 3;
+		gd.verticalSpan = 5;
+		
+		jarFileList = new List(container,SWT.BORDER|SWT.V_SCROLL);
+		jarFileList.setItems(settings.getArray(PREF_LIB_LIBNAMES));
+		jarFileList.setLayoutData(gd);
+		
+		
+		// Label for the count
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		jarFilecountLabel = new Label(container,SWT.NONE);
+		jarFilecountLabel.setLayoutData(gd);
+		
+		setControl(container);
+		setPageComplete(true);
+    }
+
+    private void handleBrowse(){
+        FileDialog fileDialog = new FileDialog(this.getShell());
+        fileDialog.setFilterExtensions(new String[]{"*.jar"});
+        String returnFileName = fileDialog.open() ;
+        if (returnFileName!=null){
+            this.libraryNameText.setText(returnFileName);
+        }
+    }
+    
+    private void handleAdd() {
+        String libName = libraryNameText.getText().trim();
+        if (!libName.equals("")){
+            //add the libs to the list
+            jarFileList.add(libName);
+            updateList();
+            libraryNameText.setText("");
+        }
+    }
+    
+    private void handleRemove() {
+        int selectedIndex = jarFileList.getSelectionIndex();
+        //-1 is returned when nothing is selected
+        if (selectedIndex!=-1){
+           jarFileList.remove(selectedIndex);
+           updateList();
+        }
+    }
+    
+    private void updateList(){
+        jarFilecountLabel.setText(jarFileList.getItemCount() + " " + ServiceArchiver.getResourceString("page6.liblist.count.caption"));
+        settings.put(PREF_LIB_LIBNAMES,jarFileList.getItems());
+    }
+    
+    public LibrarySelectionBean getBean(){
+        LibrarySelectionBean bean = new LibrarySelectionBean();
+        bean.setFileList(jarFileList.getItems());
+        return bean;
+    }
+    
+	protected boolean getWizardComplete() {
+		return false;
+	}
+    
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceArchiveOutputLocationPage.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceArchiveOutputLocationPage.java
new file mode 100644
index 0000000..791e6e3
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceArchiveOutputLocationPage.java
@@ -0,0 +1,192 @@
+ /*
+  * Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+ import org.apache.axis2.tool.service.bean.Page3Bean;
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+ public class ServiceArchiveOutputLocationPage extends AbstractServiceWizardPage {
+
+     private static final String DEFAULT_JAR_NAME = "my_service.aar";
+     private Text outputFileLocationTextBox;
+     private Button browseButton;
+     private Text outputFileNameTextbox;
+     private boolean isWizardComplete = false;
+     
+     public ServiceArchiveOutputLocationPage(){
+         super("page4");
+     }
+     
+     
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#initializeDefaultSettings()
+     */
+    protected void initializeDefaultSettings() {
+        settings.put(PREF_OUTPUT_LOCATION,System.getProperty("user.dir"));
+        settings.put(PREF_OUTPUT_NAME,DEFAULT_JAR_NAME);
+
+    }
+     /* (non-Javadoc)
+      * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+      */
+     public void createControl(Composite parent) {
+         Composite container = new Composite(parent, SWT.NULL);
+         GridLayout layout = new GridLayout();
+         layout.numColumns=3;
+         container.setLayout(layout);
+         
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.grabExcessHorizontalSpace = true;
+         
+ 		Label lable = new Label(container,SWT.NULL);
+ 		lable.setText(ServiceArchiver.getResourceString("page4.outputlocation.label"));
+ 		
+ 		outputFileLocationTextBox = new Text(container,SWT.BORDER);
+ 		outputFileLocationTextBox.setLayoutData(gd);
+ 		outputFileLocationTextBox.setText("");
+ 		outputFileLocationTextBox.addModifyListener(new ModifyListener(){
+ 		    public void modifyText(ModifyEvent e){
+ 		        handleLocationModification();
+ 		    }
+ 		});
+ 		
+ 		gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
+ 				
+ 		browseButton = new Button(container,SWT.PUSH);
+ 		browseButton.setText(ServiceArchiver.getResourceString("general.browse"));
+ 		browseButton.setLayoutData(gd);
+ 		browseButton.addMouseListener(new MouseAdapter(){
+ 		    public void mouseUp(MouseEvent e) {
+ 		        handleBrowse();
+ 		    } 
+ 		});
+ 		
+ 		lable = new Label(container,SWT.NULL);
+ 		lable.setText(ServiceArchiver.getResourceString("page4.outputname.label"));
+ 		
+ 		gd = new GridData(GridData.FILL_HORIZONTAL);
+ 		
+ 		outputFileNameTextbox = new Text(container,SWT.BORDER);
+ 		outputFileNameTextbox.setLayoutData(gd);
+ 		outputFileNameTextbox.setText(settings.get(PREF_OUTPUT_NAME));
+ 		outputFileNameTextbox.addModifyListener(new ModifyListener(){
+ 		    public void modifyText(ModifyEvent e){
+ 		        handleFileNameModification();
+ 		    }
+        });
+ 		
+ 		//Add some fill lables 
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 3;
+ 		Label fillLable = new Label(container,SWT.NULL);
+ 		fillLable.setText("");
+ 		fillLable.setLayoutData(gd);
+ 		Label fillLable1 = new Label(container,SWT.NULL);
+ 		fillLable1.setText("");
+ 		fillLable1.setLayoutData(gd);
+ 		
+        //Hint Lable
+ 		Label hintLable = new Label(container,SWT.NULL);
+ 		hintLable.setText(ServiceArchiver.getResourceString("page4.hint.caption"));
+ 		hintLable.setLayoutData(gd);
+ 		
+        if (restoredFromPreviousSettings) {
+            handleFileNameModification();
+            handleLocationModification();
+        } else {
+            //nothing yet
+        }
+
+        setControl(container);
+
+    }
+     
+     private void handleBrowse(){
+         DirectoryDialog dirDialog = new DirectoryDialog(this.getShell());
+         dirDialog.setMessage(ServiceArchiver.getResourceString("page4.dirdialog.caption"));
+         String returnText = dirDialog.open();
+         if (returnText!=null){
+             this.outputFileLocationTextBox.setText(returnText);
+             this.outputFileLocationTextBox.setToolTipText(returnText);
+         }
+      }
+     
+     private void handleLocationModification(){
+         String outputLocationText = outputFileLocationTextBox.getText();
+         settings.put(PREF_OUTPUT_LOCATION,outputLocationText);
+         if (outputLocationText==null ||"".equals(outputLocationText.trim())){
+             this.updateStatus(ServiceArchiver.getResourceString("page4.error.location"));
+             isWizardComplete=false;
+             updateStatus(null);
+         }else{
+             String outputFilenameText = outputFileNameTextbox.getText();
+             settings.put(PREF_OUTPUT_NAME,outputFilenameText);
+        	 if (outputFilenameText==null || "".equals(outputFilenameText.trim())){
+                 this.updateStatus(ServiceArchiver.getResourceString("page4.error.filename"));
+                 isWizardComplete=false;
+                 updateStatus(null);
+        	 }else{
+        		 isWizardComplete = true;
+        		 updateStatus(null);
+        	 }
+         }
+     }
+     private void handleFileNameModification(){
+         String outputFilenameText = outputFileNameTextbox.getText();
+         settings.put(PREF_OUTPUT_NAME,outputFilenameText);
+         if (outputFilenameText==null || "".equals(outputFilenameText.trim())){
+             this.updateStatus(ServiceArchiver.getResourceString("page4.error.filename"));
+             isWizardComplete=false;
+             updateStatus(null);
+         }else{
+             String outputLocationText = outputFileLocationTextBox.getText();
+             settings.put(PREF_OUTPUT_LOCATION,outputLocationText);
+             if (outputLocationText==null ||"".equals(outputLocationText.trim())){
+                 this.updateStatus(ServiceArchiver.getResourceString("page4.error.location"));
+                 isWizardComplete=false;
+                 updateStatus(null);
+             }else{
+            	 isWizardComplete = true;
+            	 updateStatus(null);
+             }
+         }
+     }
+     
+     
+     
+     public Page3Bean getBean(){
+         Page3Bean pageBean = new Page3Bean();
+         pageBean.setOutputFolderName(this.outputFileLocationTextBox.getText().trim());
+         pageBean.setOutputFileName(this.outputFileNameTextbox.getText().trim());
+         return pageBean;
+     }
+     
+ 	protected boolean getWizardComplete() {
+		return isWizardComplete;
+	}
+ }
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceArchiveWizard.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceArchiveWizard.java
new file mode 100644
index 0000000..83dd16c
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceArchiveWizard.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+
+import org.apache.axis2.tool.service.bean.WizardBean;
+import org.apache.axis2.tool.service.control.Controller;
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+
+public class ServiceArchiveWizard extends Wizard implements INewWizard {
+
+
+	private ClassFileLocationPage classFileLocationPage;
+    private WSDLFileSelectionPage wsdlFileSelectionPage;
+    private ServiceXMLFileSelectionPage serviceXMLFileSelectionPage;
+    private ServiceXMLGenerationPage serviceXMLGenerationPage;
+    private ServiceArchiveOutputLocationPage serviceArchiveOutputLocationPage;
+    private LibraryAddingPage libPage;
+
+    private boolean updateServiceGenerationStatus;
+    private String classFileLocation;
+    private String wsdlFileGenerationStatus;
+    
+  
+    
+    /**
+     * @return Returns the wsdlFileGenerationStatus.
+     */
+    public String getWsdlFileGenerationStatus() {
+        return wsdlFileGenerationStatus;
+    }
+    /**
+     * @param message The wsdlFileGenerationStatus to set.
+     */
+    public void updateWsdlFileGenerationStatus(String message) {
+        this.wsdlFileGenerationStatus = message;
+    }
+    public  String getClassFileLocation(){
+        return classFileLocation;
+    }
+    
+    //get the lib file list
+    public String[] getLibFileList(){
+        return libPage.getBean().getFileList();
+    }
+    
+    public  void setClassFileLocation(String location){
+        this.classFileLocation = location;
+    }
+    
+    public void updateServiceXMLGeneration(boolean status){
+        serviceXMLGenerationPage.setPageComplete(status);
+    }
+    /**
+     * 
+     */
+    public ServiceArchiveWizard() {
+        super();
+        setNeedsProgressMonitor(true);
+        setWindowTitle(ServiceArchiver.getResourceString("main.title"));
+    }
+
+    public boolean canFinish() {
+        IWizardPage[] pages = getPages();
+        AbstractServiceWizardPage wizardPage = null;
+        for (int i = 0; i < pages.length; i++) {
+            wizardPage = (AbstractServiceWizardPage) pages[i];
+            if (wizardPage.getName().equals("page4.name")){
+	            if (!wizardPage.getWizardComplete() ) {
+	                    return false;
+	            }
+            }
+        }
+        return true;
+	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.wizard.IWizard#getNextPage(org.eclipse.jface.wizard.IWizardPage)
+     */
+    public IWizardPage getNextPage(IWizardPage page) {
+        AbstractServiceWizardPage thisPage = (AbstractServiceWizardPage)page;
+        AbstractServiceWizardPage nextPage = (AbstractServiceWizardPage)super.getNextPage(page);
+        while (thisPage!=null && thisPage.isSkipNext()) {
+            if (nextPage!=null) {
+                thisPage = nextPage;
+                nextPage = (AbstractServiceWizardPage)super.getNextPage(nextPage);
+            }else{
+                break;
+            }
+        }
+        return nextPage;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.wizard.IWizard#addPages()
+     */
+    public void addPages() {
+        classFileLocationPage = new ClassFileLocationPage();
+        this.addPage(classFileLocationPage);
+        wsdlFileSelectionPage = new WSDLFileSelectionPage();
+        this.addPage(wsdlFileSelectionPage);
+        libPage = new LibraryAddingPage();
+        this.addPage(libPage);
+        serviceXMLFileSelectionPage = new ServiceXMLFileSelectionPage();
+        this.addPage(serviceXMLFileSelectionPage);
+        serviceXMLGenerationPage = new ServiceXMLGenerationPage();
+        this.addPage(serviceXMLGenerationPage);
+        serviceArchiveOutputLocationPage = new ServiceArchiveOutputLocationPage();
+        this.addPage(serviceArchiveOutputLocationPage);
+    }
+
+    /* (non-Javadobc)
+     * @see org.eclipse.jface.wizard.IWizard#performFinish()
+     */
+    public boolean performFinish() {
+                
+        WorkspaceModifyOperation op = new WorkspaceModifyOperation()
+        {
+           protected void execute(IProgressMonitor monitor)
+           throws CoreException , InvocationTargetException, InterruptedException{
+              if (monitor == null)
+                 monitor = new NullProgressMonitor();
+
+              /*
+               * "7" is the total amount of steps, see below monitor.worked(amount)
+               */
+              monitor.beginTask(ServiceArchiver.getResourceString("wizard.codegen.startmsg"), 8);
+
+              try
+              {
+                  monitor.worked(1);
+                  // create a wizard bean
+                  WizardBean wizBean = new WizardBean();
+                  monitor.worked(1);
+                  wizBean.setPage1bean(classFileLocationPage.getBean());
+                  monitor.worked(1);
+                  wizBean.setWsdlBean(wsdlFileSelectionPage.getBean());
+                  monitor.worked(1);
+                  wizBean.setPage2bean(serviceXMLGenerationPage.getBean(serviceXMLFileSelectionPage.getBean()));
+                  monitor.worked(1);
+                  wizBean.setLibraryBean(libPage.getBean());
+                  monitor.worked(1);
+                  wizBean.setPage3bean(serviceArchiveOutputLocationPage.getBean());
+                  monitor.worked(1);
+                  new Controller().process(wizBean);
+                  monitor.worked(1);
+              }
+              catch (Throwable e)
+              {
+                 throw new InterruptedException(e.getMessage() );
+              }
+
+              monitor.done();
+           }
+        };
+        
+        /*
+         * Start the generation as new Workbench Operation, so the user
+         * can see the progress and, if needed, can stop the operation.
+         */
+        try
+        {
+           getContainer().run(false, true, op);
+           showSuccessMessage(ServiceArchiver.getResourceString("wizard.codegen.success"));
+           return true;
+        }
+        catch (InvocationTargetException e1)
+        {
+            showErrorMessage(e1.getTargetException().getMessage());
+            return false;
+        }
+        catch (InterruptedException e1)
+        {
+            showErrorMessage(e1.getMessage());
+            return false;
+        }
+        catch (Exception e)
+        {
+            showErrorMessage(ServiceArchiver.getResourceString("wizard.codegen.unknown.error") + "  "+  e.getMessage());
+            return false;
+        }
+
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+     */
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        // TODO Auto-generated method stub
+
+    }
+
+    private void showErrorMessage(String message) {
+        MessageDialog.openError(this.getShell(), ServiceArchiver.getResourceString("wizard.codegen.error.msg.heading"), message);
+    }
+
+    private void showSuccessMessage(String message) {
+        MessageDialog.openInformation(this.getShell(), ServiceArchiver.getResourceString("wizard.codegen.success.msg.heading"), message);
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLFileSelectionPage.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLFileSelectionPage.java
new file mode 100644
index 0000000..d9bbbe9
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLFileSelectionPage.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+import org.apache.axis2.tool.service.bean.Page2Bean;
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class ServiceXMLFileSelectionPage extends AbstractServiceWizardPage {
+   
+    private static final String SERVICES_XML_NAME = "services.xml";
+    private Text serviceXMLText;
+    private Label manualSelectionLabel;
+    private Label recommendationTextLable;
+    private Button browseButton;
+    private Button selectAutoFileGenerationCheckBox;
+    
+    
+    private boolean skipNextPage=true;
+    private boolean pageComplete;
+    
+    public ServiceXMLFileSelectionPage(){
+        super("page2");
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#initializeDefaultSettings()
+     */
+    protected void initializeDefaultSettings() {
+       settings.put(PREF_SERVICE_XML_FILE,"");
+       settings.put(PREF_CHECK_AUTO_GEN_SERVICE_XML,false);
+
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    public void createControl(Composite parent) {
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns=3;
+        container.setLayout(layout);
+               
+        manualSelectionLabel = new Label(container,SWT.NULL);
+        manualSelectionLabel.setText(ServiceArchiver.getResourceString("page2.selectservicexml.caption"));
+		
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		serviceXMLText = new Text(container,SWT.BORDER);
+		serviceXMLText.setLayoutData(gd);
+		serviceXMLText.setText(settings.get(PREF_SERVICE_XML_FILE));
+		serviceXMLText.addModifyListener(new ModifyListener(){
+		    public void modifyText(ModifyEvent e){
+		    handleModify();
+		    }
+		});
+		
+		browseButton = new Button(container,SWT.PUSH);
+		browseButton.setText(ServiceArchiver.getResourceString("general.browse"));
+		browseButton.addMouseListener(new MouseAdapter(){
+		    public void mouseUp(MouseEvent e) {
+		        handleBrowse();
+		    }
+		});
+		
+		gd = new GridData();
+		gd.horizontalSpan = 2;
+		selectAutoFileGenerationCheckBox = new Button(container,SWT.CHECK);
+		selectAutoFileGenerationCheckBox.setLayoutData(gd);
+		selectAutoFileGenerationCheckBox.setText(ServiceArchiver.getResourceString("page2.generateauto.caption"));
+		selectAutoFileGenerationCheckBox.setSelection(settings.getBoolean(PREF_CHECK_AUTO_GEN_SERVICE_XML));
+		selectAutoFileGenerationCheckBox.addSelectionListener(new SelectionListener(){
+		    public void widgetSelected(SelectionEvent e){
+		        handleSelection();
+		    }
+		    public void widgetDefaultSelected(SelectionEvent e){}
+		});
+		/////////////////////////////////////////
+		//enable the selection combo for now
+		//selectAutoFileGenerationCheckBox.setEnabled(false);
+		selectAutoFileGenerationCheckBox.setToolTipText(ServiceArchiver.getResourceString("page2.autogen.tooltip"));
+		////////////////////////////////////////////
+		
+		gd = new GridData(GridData.FILL_BOTH);
+		gd.horizontalSpan = 2;
+		gd.verticalSpan  =2;
+		recommendationTextLable = new Label(container,SWT.NULL);
+		recommendationTextLable.setLayoutData(gd);
+		//recommendationTextLable.setForeground()));
+		
+		setControl(container);
+		
+		if (restoredFromPreviousSettings){
+		    handleModify();
+		    handleSelection();
+		}else{
+		    setPageComplete(false);
+		    updateGenerationPage(false);
+		}
+		
+		
+    }
+    
+    private void handleBrowse(){
+        FileDialog fileDialog = new FileDialog(this.getShell());
+        fileDialog.setFilterExtensions(new String[]{SERVICES_XML_NAME});
+        String returnFileName = fileDialog.open() ;
+        if (returnFileName!=null){
+            this.serviceXMLText.setText(returnFileName);
+        }
+    }
+    
+    private void handleSelection(){
+        boolean selection = this.selectAutoFileGenerationCheckBox.getSelection();
+        settings.put(PREF_CHECK_AUTO_GEN_SERVICE_XML,selection);
+        if (selection){
+            changeManualSelectionStatus(false); 
+            this.skipNextPage = false;
+            updateStatus(null);
+            updateGenerationPage(false);
+        }else{
+            changeManualSelectionStatus(true);
+            this.skipNextPage = true;
+            handleModify();
+            updateGenerationPage(true);
+        }
+    }
+    
+    private void updateGenerationPage(boolean status){
+        ServiceArchiveWizard wizard = (ServiceArchiveWizard)this.getWizard();
+        wizard.updateServiceXMLGeneration(status);
+       
+    }
+    
+    private void changeManualSelectionStatus(boolean state){
+        this.serviceXMLText.setEnabled(state);
+        this.browseButton.setEnabled(state);
+        this.manualSelectionLabel.setEnabled(state);
+    }
+    
+    private void handleModify(){
+        String serviceXMLString =serviceXMLText.getText().trim().toLowerCase(); 
+        settings.put(PREF_SERVICE_XML_FILE,serviceXMLString);
+        if (serviceXMLString.equals("")){
+           this.updateStatus(ServiceArchiver.getResourceString("page2.error.servicenameempty")); 
+        }else if(!serviceXMLString.endsWith(SERVICES_XML_NAME)){
+            this.updateStatus(ServiceArchiver.getResourceString("page2.error.servicenamewrong"));  
+        }else{
+            this.updateStatus(null);
+        }
+    }
+    
+ 
+    public void updateRecommendation(String message){
+        if (recommendationTextLable!=null)
+        recommendationTextLable.setText(message);
+    }
+    
+   
+    
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#isSkipNext()
+     */
+    public boolean isSkipNext() {
+       return this.skipNextPage;
+    }
+    public Page2Bean getBean(){
+        Page2Bean pageBean = new Page2Bean();
+        pageBean.setManual(!this.selectAutoFileGenerationCheckBox.getSelection());
+        pageBean.setManualFileName(this.serviceXMLText.getText());
+        return pageBean;
+    }
+    
+	protected boolean getWizardComplete() {
+		return false;
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLGenerationPage.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLGenerationPage.java
new file mode 100644
index 0000000..ce439ed
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLGenerationPage.java
@@ -0,0 +1,304 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+import org.apache.axis2.tool.service.bean.Page2Bean;
+import org.apache.axis2.tool.service.bean.WSDLAutoGenerateOptionBean;
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+
+
+public class ServiceXMLGenerationPage extends AbstractServiceWizardPage{
+    
+    private Text classNameTextBox;
+    private Text serviceNameTextBox;
+    private Button searchDeclaredMethodsCheckBox;
+    Button loadButton;
+    private Table table;
+    
+    private boolean dirty = false;
+    
+    public ServiceXMLGenerationPage(){
+        super("page3");
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#initializeDefaultSettings()
+     */
+    protected void initializeDefaultSettings() {
+      settings.put(PREF_SERVICE_GEN_SERVICE_NAME,"MyService");
+      settings.put(PREF_SERVICE_GEN_CLASSNAME,"");
+      settings.put(PREF_SERVICE_GEN_LOAD_ALL,false);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    public void createControl(Composite parent) {
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns=3;
+        container.setLayout(layout);
+        
+        Label label = new Label(container,SWT.NULL);
+        label.setText(ServiceArchiver.getResourceString("page3.servicename.lable"));
+        
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 2;
+        serviceNameTextBox = new Text(container,SWT.BORDER);
+        serviceNameTextBox.setLayoutData(gd);
+        serviceNameTextBox.setToolTipText(ServiceArchiver.getResourceString("page3.servicename.tooltip"));
+        serviceNameTextBox.setText(settings.get(PREF_SERVICE_GEN_SERVICE_NAME));
+        serviceNameTextBox.addModifyListener(new ModifyListener(){
+            public void modifyText(ModifyEvent e){
+                updateDirtyStatus(true);
+                settings.put(PREF_SERVICE_GEN_SERVICE_NAME,serviceNameTextBox.getText());
+                //validate
+            }
+        });
+       
+        
+        label = new Label(container,SWT.NULL);
+        label.setText(ServiceArchiver.getResourceString("page3.classname.lable"));
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        classNameTextBox = new Text(container,SWT.BORDER);
+        classNameTextBox.setLayoutData(gd);
+        classNameTextBox.setToolTipText(ServiceArchiver.getResourceString("page3.classname.tooltip"));
+        classNameTextBox.setText(settings.get(PREF_SERVICE_GEN_CLASSNAME));
+        classNameTextBox.addModifyListener(new ModifyListener(){
+            public void modifyText(ModifyEvent e){
+                updateDirtyStatus(true);
+                settings.put(PREF_SERVICE_GEN_CLASSNAME,classNameTextBox.getText());
+            }
+        });
+       
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        loadButton = new Button(container,SWT.PUSH);
+        loadButton.setText(ServiceArchiver.getResourceString("page3.loadbutton.lable"));
+        loadButton.setLayoutData(gd);
+        loadButton.addSelectionListener(new SelectionListener(){
+            public void widgetSelected(SelectionEvent e){
+                updateTable();
+            }
+            public void widgetDefaultSelected(SelectionEvent e){}
+        });
+        
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 3;
+        
+        searchDeclaredMethodsCheckBox = new Button(container,SWT.CHECK);
+        searchDeclaredMethodsCheckBox.setLayoutData(gd);
+        searchDeclaredMethodsCheckBox.setText(ServiceArchiver.getResourceString("page3.declared.lable"));
+        searchDeclaredMethodsCheckBox.addSelectionListener(new SelectionListener(){
+            public void widgetSelected(SelectionEvent e){
+                updateDirtyStatus(true);//dirty
+                settings.put(PREF_SERVICE_GEN_LOAD_ALL,searchDeclaredMethodsCheckBox.getSelection());
+                if(table.isVisible()){
+                    updateTable();
+                }
+                
+            }
+            public void widgetDefaultSelected(SelectionEvent e){} 
+        });
+        searchDeclaredMethodsCheckBox.setSelection(settings.getBoolean(PREF_SERVICE_GEN_LOAD_ALL));
+        
+        gd = new GridData(GridData.FILL_BOTH);
+        gd.horizontalSpan = 2;
+        gd.verticalSpan = 5;
+        
+        table = new Table(container,SWT.SINGLE|SWT.FULL_SELECTION|SWT.CHECK);
+        table.setLinesVisible(true);
+        table.setHeaderVisible(true); 
+        table.setLayoutData(gd);
+        declareColumn(table,20,"");
+        declareColumn(table,100,ServiceArchiver.getResourceString("page3.table.col1"));
+        declareColumn(table,100,ServiceArchiver.getResourceString("page3.table.col2"));
+        declareColumn(table,100,ServiceArchiver.getResourceString("page3.table.col3"));
+        
+        table.setVisible(false);
+		
+        if (restoredFromPreviousSettings){
+            //try running the update
+            updateTable();
+        }else{
+            setPageComplete(false);  
+        }
+        
+        
+		setControl(container);
+
+    }
+     
+    /**
+     * if the user has already filled the data, this page needs to be 
+     * unchangeable
+     *
+     */
+    public void fillDatafromPrevious(WSDLAutoGenerateOptionBean bean) {
+        //set class name
+        String automaticClassName = bean.getClassFileName();
+        this.classNameTextBox.setText(automaticClassName);
+        this.classNameTextBox.setEnabled(false);
+        //set service name
+        String[] classnameParts = automaticClassName.split("\\.");
+        if (classnameParts.length == 0) {
+            this.serviceNameTextBox.setText(automaticClassName);
+        } else {
+            this.serviceNameTextBox
+                    .setText(classnameParts[classnameParts.length - 1]);
+        }
+        //load the classes
+        updateTable();
+        //check the correct ones
+
+        //disbale the table
+        table.setEnabled(false);
+        loadButton.setEnabled(false);
+    }
+    
+    public void clearPreviousData(){
+        this.classNameTextBox.setText("");
+        this.classNameTextBox.setEnabled(true);
+        //set service name
+        this.serviceNameTextBox.setText("");
+        if (table.isVisible()){
+            table.setVisible(false);
+        }
+        loadButton.setEnabled(true);
+    }
+    private void updateDirtyStatus(boolean status){
+        dirty = status;
+        if (table.isVisible()){
+            table.setEnabled(!status);
+        }
+        setPageComplete(!status);
+    }
+    
+    private void declareColumn(Table table, int width,String colName){
+        TableColumn column = new TableColumn(table,SWT.NONE);
+        column.setWidth(width);
+        column.setText(colName);
+    }
+    
+    private void updateTable() {
+        //get a URL from the class file location
+        try {
+            String classFileLocation = getClassFileLocation();
+            URL classFileURL = new File(classFileLocation).toURL();
+            
+           ArrayList listofURLs = new ArrayList();
+           listofURLs.add(classFileURL);
+           
+            //get the libraries from the lib page and load it 
+            String[] libFileList = ((ServiceArchiveWizard)this.getWizard()).getLibFileList();
+            if (libFileList!=null){
+            	int count = libFileList.length;
+				for (int i=0;i<count;i++){
+					listofURLs.add(new File(libFileList[i]).toURL());
+            	}
+            }
+           
+            
+            ClassLoader loader = new URLClassLoader((URL[])listofURLs.toArray(new URL[listofURLs.size()]));
+            Class clazz = Class.forName(classNameTextBox.getText(),true,loader);
+            Method[] methods = null;
+            
+            
+            if (searchDeclaredMethodsCheckBox.getSelection()){
+                methods = clazz.getDeclaredMethods();
+            }else{
+                methods = clazz.getMethods();
+            }
+
+            int methodCount = methods.length;
+            if (methodCount > 0) {
+                table.removeAll();
+                TableItem[] items = new TableItem[methodCount]; // An item for each field
+                for (int i = 0 ; i < methodCount; i++){
+                   items[i] = new TableItem(table, SWT.NONE);
+                   items[i].setText(1,methods[i].getName());
+                   items[i].setText(2,methods[i].getReturnType().getName());
+                   items[i].setText(3,methods[i].getParameterTypes().length+"");
+                   items[i].setChecked(true);//check them all by default
+                }
+                table.setVisible(true);
+                
+                //update the dirty variable
+               updateDirtyStatus(false);
+               updateStatus(null);
+            }
+
+        } catch (MalformedURLException e) {
+           updateStatus(ServiceArchiver.getResourceString("page3.error.url") +e.getMessage());
+        } catch (ClassNotFoundException e) {
+           updateStatus(ServiceArchiver.getResourceString("page3.error.class")+ e.getMessage());
+        } catch (Exception e){
+            e.printStackTrace();
+            updateStatus(ServiceArchiver.getResourceString("page3.error.unknown") + e.getMessage()); 
+        }
+    }
+    
+    public boolean isDirty(){
+        return dirty;
+    }
+    private String getClassFileLocation(){
+        ServiceArchiveWizard wizard = (ServiceArchiveWizard)getWizard();
+        return wizard.getClassFileLocation();
+    }
+    
+    public Page2Bean getBean(Page2Bean previousBean){
+        if (!previousBean.isManual()){
+	        previousBean.setAutomatic(true);
+	        previousBean.setAutomaticClassName(classNameTextBox.getText());
+	        ArrayList list = new ArrayList();
+	        TableItem[] items = table.getItems();
+	        int itemLength = items.length;
+	        for(int i=0;i<itemLength;i++){
+	           if(items[i].getChecked()){
+	               list.add(items[i].getText(1));//get the selected method name only
+	           }
+	        }
+	        previousBean.setSelectedMethodNames(list);
+	        previousBean.setServiceName(this.serviceNameTextBox.getText());
+        }
+        return previousBean;
+    }
+    
+	protected boolean getWizardComplete() {
+		return false;
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/WSDLFileSelectionPage.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/WSDLFileSelectionPage.java
new file mode 100644
index 0000000..b65d3f9
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/WSDLFileSelectionPage.java
@@ -0,0 +1,306 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+import org.apache.axis2.tool.service.bean.WSDLFileLocationBean;
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class WSDLFileSelectionPage extends AbstractServiceWizardPage {
+    
+    //  set the default to false. This step cannot be skipped
+    private boolean skipNextPage = false;
+    
+    private Text wsdlTextBox;
+    private Label selectionLabel;
+    private Button browseButton;
+    //private Button autoGenerateWSDLCheckButton;
+    private Button skipWSDLCheckButton;
+    private Button selectWSDLCheckButton;
+    
+    public WSDLFileSelectionPage(){
+        super("page5");
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#initializeDefaultSettings()
+     */
+    protected void initializeDefaultSettings() {
+        settings.put(PREF_WSDL_FILE_NAME,"");
+        settings.put(PREF_CHECK_WSDL_GENERATE,true);
+        settings.put(PREF_CHECK_SKIP_WSDL,false);
+        settings.put(PREF_CHECK_SELECT_WSDL,false);
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    public void createControl(Composite parent) {
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        layout.numColumns=3;
+        container.setLayout(layout);
+        
+        GridData gd = new GridData();
+		//gd.horizontalSpan = 3;
+		//autoGenerateWSDLCheckButton = new Button(container,SWT.CHECK);
+		//autoGenerateWSDLCheckButton.setLayoutData(gd);
+		//autoGenerateWSDLCheckButton.setText(ServiceArchiver.getResourceString("page5.generateauto.caption"));
+		//autoGenerateWSDLCheckButton.setSelection(settings.getBoolean(PREF_CHECK_WSDL_GENERATE));
+		//autoGenerateWSDLCheckButton.addSelectionListener(new SelectionListener(){
+		//    public void widgetSelected(SelectionEvent e){
+		//        handleSelection();
+		//    }
+		//    public void widgetDefaultSelected(SelectionEvent e){}
+		//});
+		//autoGenerateWSDLCheckButton.setToolTipText(ServiceArchiver.getResourceString("page5.autogen.tooltip"));
+		////////////////////////////////////////
+		// enable the automatic generation box
+		//autoGenerateWSDLCheckButton.setEnabled(true);
+		///////////////////////////////////////
+		
+		
+		gd = new GridData();
+		gd.horizontalSpan = 3;
+		skipWSDLCheckButton = new Button(container,SWT.CHECK);
+		skipWSDLCheckButton.setText(ServiceArchiver.getResourceString("page5.skipWSDL.caption"));
+		skipWSDLCheckButton.setLayoutData(gd);
+		skipWSDLCheckButton.setSelection(settings.getBoolean(PREF_CHECK_SKIP_WSDL));
+		////////////////////////////////////////
+		// enable the skip check box
+		skipWSDLCheckButton.setEnabled(true);
+		///////////////////////////////////////
+		skipWSDLCheckButton.addSelectionListener(new SelectionListener(){
+		    public void widgetSelected(SelectionEvent e){
+		        handleSkip();
+		    }
+		    public void widgetDefaultSelected(SelectionEvent e){} 
+		    
+		});
+		
+		//add an empty lable
+		new Label(container,SWT.NONE);
+		
+		gd = new GridData();
+		gd.horizontalSpan = 3;
+		selectWSDLCheckButton = new Button(container,SWT.CHECK);
+		selectWSDLCheckButton.setText(ServiceArchiver.getResourceString("page5.selectWSDL.caption"));
+		selectWSDLCheckButton.setLayoutData(gd);
+		selectWSDLCheckButton.setSelection(settings.getBoolean(PREF_CHECK_SELECT_WSDL));
+		////////////////////////////////////////
+		// enable the skip check box
+		selectWSDLCheckButton.setEnabled(true);
+		///////////////////////////////////////
+		selectWSDLCheckButton.addSelectionListener(new SelectionListener(){
+		    public void widgetSelected(SelectionEvent e){
+		        handleSelect();
+		    }
+		    public void widgetDefaultSelected(SelectionEvent e){} 
+		    
+		});
+           
+		gd = new GridData(GridData.FILL_HORIZONTAL); 
+        selectionLabel= new Label(container,SWT.NULL);
+        selectionLabel.setText(ServiceArchiver.getResourceString("page5.selectwsdl.caption"));
+		
+        wsdlTextBox = new Text(container,SWT.BORDER);
+        wsdlTextBox.setLayoutData(gd);
+        wsdlTextBox.setText(settings.get(PREF_WSDL_FILE_NAME));
+        wsdlTextBox.addModifyListener(new ModifyListener(){
+		    public void modifyText(ModifyEvent e){
+		        handleModify();
+		    }
+		});
+		
+		browseButton = new Button(container,SWT.PUSH);
+		browseButton.setText(ServiceArchiver.getResourceString("general.browse"));
+		browseButton.addMouseListener(new MouseAdapter(){
+		    public void mouseUp(MouseEvent e) {
+		        handleBrowse();
+		    }
+		});
+		
+
+				
+		setControl(container);
+		
+		if (restoredFromPreviousSettings){
+		    handleSkip();
+		    if (!skipWSDLCheckButton.getSelection()){
+		    	handleSelect();
+		    }
+		}
+    }
+    
+    //private void handleSelection(){
+    //    boolean selection = this.autoGenerateWSDLCheckButton.getSelection();
+    //    settings.put(PREF_CHECK_WSDL_GENERATE,selection);
+    //    if (selection){
+    //        this.skipNextPage = false;
+    //        updateStatus(null);
+    //        updateRecommendation(ServiceArchiver.getResourceString("page5.recommendation"));
+    //        this.skipWSDLCheckButton.setSelection(false);
+    //        this.selectWSDLCheckButton.setSelection(false);
+    //        changeManualSelectionStatus(false); 
+    //    }else{ 
+    //          changeManualSelectionStatus(true);
+    //          this.skipNextPage = true;
+    //          handleModify();
+    //          updateRecommendation("");
+    //          this.skipWSDLCheckButton.setSelection(true);
+    //    	if (skipWSDLCheckButton.getSelection() || selectWSDLCheckButton.getSelection()){
+    //    		//you should not come here
+    //   		
+    //    	}else {
+    //    		autoGenerateWSDLCheckButton.setSelection(true);
+    //            this.skipNextPage = false;
+    //            updateStatus(null);
+    //            updateRecommendation(ServiceArchiver.getResourceString("page5.recommendation"));
+    //            this.skipWSDLCheckButton.setSelection(false);
+    //            this.selectWSDLCheckButton.setSelection(false);
+    //            changeManualSelectionStatus(false); 
+    //    	}
+    //    }
+    //}
+
+    private void handleSkip(){
+        if (skipWSDLCheckButton.getSelection()){
+           //disable other widgtets
+           changeManualSelectionStatus(false);
+           //enable next
+           this.updateStatus(null);
+           settings.put(PREF_CHECK_SKIP_WSDL,true);
+           this.selectWSDLCheckButton.setSelection(false);
+        }else{
+//            //call this to update the status
+//            handleModify();
+//            settings.put(PREF_CHECK_SKIP_WSDL,false);
+//            this.autoGenerateWSDLCheckButton.setSelection(true);
+        	if (selectWSDLCheckButton.getSelection()){
+        		//you should not come here
+        		
+        	}else {
+        		skipWSDLCheckButton.setSelection(true);
+                //disable other widgtets
+                changeManualSelectionStatus(false);
+                //enable next
+                this.updateStatus(null);
+                settings.put(PREF_CHECK_SKIP_WSDL,true);
+                this.selectWSDLCheckButton.setSelection(false);
+        	}
+        }
+    }
+    
+    private void handleSelect(){
+        if (selectWSDLCheckButton.getSelection()){
+            changeManualSelectionStatus(true);
+            //enable next
+            this.updateStatus(null);
+            this.skipWSDLCheckButton.setSelection(false);
+           
+        }else{
+//            setStatus(true);
+//            //call this to update the status
+//            handleModify();
+//            settings.put(PREF_CHECK_SKIP_WSDL,false);
+//            this.autoGenerateWSDLCheckButton.setSelection(true);
+        	if (skipWSDLCheckButton.getSelection()){
+        		//you should not come here
+        		
+        	}else {
+        		selectWSDLCheckButton.setSelection(true);
+                //disable other widgtets
+                changeManualSelectionStatus(true);
+                //enable next
+                this.updateStatus(null);
+                this.skipWSDLCheckButton.setSelection(false);
+        	}
+        }
+    }
+    
+   private void handleBrowse(){
+        FileDialog fileDialog = new FileDialog(this.getShell());
+        fileDialog.setFilterExtensions(new String[]{"*.wsdl"});
+        String returnFileName = fileDialog.open() ;
+        if (returnFileName!=null){
+            this.wsdlTextBox.setText(returnFileName);
+        }
+    }
+    
+
+    
+    private void handleModify(){
+        String text = wsdlTextBox.getText();
+        settings.put(PREF_WSDL_FILE_NAME,text);
+        //validate
+        if ("".equals(text)){
+            this.updateStatus(ServiceArchiver.getResourceString("page5.error.wsdlnameempty")); 
+         }else if(!text.endsWith(".wsdl")){
+             this.updateStatus(ServiceArchiver.getResourceString("page5.error.wsdlnamewrong"));  
+         }else{
+             this.updateStatus(null);
+         }
+        
+    }
+    private void updateRecommendation(String message){
+        ServiceArchiveWizard wizard = (ServiceArchiveWizard)this.getWizard();
+        wizard.updateWsdlFileGenerationStatus(message);
+       
+    }
+    private void changeManualSelectionStatus(boolean state){
+        this.wsdlTextBox.setEnabled(state);
+        this.browseButton.setEnabled(state);
+        this.selectionLabel.setEnabled(state);
+    }
+    
+    public boolean isAutoGenerate(){
+        return false ;// autoGenerateWSDLCheckButton.getSelection();
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#isSkipNext()
+     */
+    public boolean isSkipNext() {
+        return false;
+        //return this.skipNextPage;
+    }
+    
+    public WSDLFileLocationBean getBean(){
+        WSDLFileLocationBean locationBean = new WSDLFileLocationBean();
+        locationBean.setManual(!isAutoGenerate());
+        locationBean.setWSDLFileName(wsdlTextBox.getText());
+        locationBean.setSkip(skipWSDLCheckButton.getSelection());
+        return locationBean;
+    }
+    
+	protected boolean getWizardComplete() {
+		return false;
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/WSDLOptionsPage.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/WSDLOptionsPage.java
new file mode 100644
index 0000000..5fc43c1
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/WSDLOptionsPage.java
@@ -0,0 +1,283 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.ui;
+
+import org.apache.axis2.tool.service.bean.WSDLAutoGenerateOptionBean;
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+public class WSDLOptionsPage extends AbstractServiceWizardPage {
+
+    private static final String SERVICE_WSDL_DEFAULT_NAME = "service.wsdl";
+    private Text classNameTextBox;
+    private Text outputFileNameTextBox;
+    private Combo styleSelectionCombo;
+    private Button searchDeclaredMethodsCheckBox;
+    private Table table;
+    
+    private boolean dirty = false;
+    
+    public WSDLOptionsPage(){
+        super("page6");
+    }
+    /* (non-Javadoc)
+     * @see org.apache.axis2.tool.service.eclipse.ui.AbstractServiceWizardPage#initializeDefaultSettings()
+     */
+    protected void initializeDefaultSettings() {
+       settings.put(PREF_WSDL_FILE_NAME,SERVICE_WSDL_DEFAULT_NAME);
+       settings.put(PREF_WSDL_CLASS_NAME,"");
+       settings.put(PREF_WSDL_STYLE_INDEX,0);
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    public void createControl(Composite parent) {
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout layout = new GridLayout();
+        container.setLayout(layout);
+        layout.numColumns = 3;
+        layout.verticalSpacing = 9;
+
+        // #########################################################
+
+        Label label = new Label(container, SWT.NULL);
+        label
+                .setText(ServiceArchiver
+                        .getResourceString("page6.fileName.label"));
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 2;
+        outputFileNameTextBox = new Text(container, SWT.BORDER);
+        outputFileNameTextBox.setLayoutData(gd);
+        outputFileNameTextBox.setText(settings.get(PREF_WSDL_FILE_NAME));
+        //###########################################################
+        outputFileNameTextBox.setEnabled(false);//this text box is disbaled for
+                                                // now
+        //########################################################
+        outputFileNameTextBox.addModifyListener(new ModifyListener() {
+            public void modifyText(ModifyEvent e) {
+                handlFileNameModification();
+            }
+        });
+
+        //########################################################
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        label = new Label(container, SWT.NULL);
+        label.setText(ServiceArchiver.getResourceString("page6.class.label"));
+
+        classNameTextBox = new Text(container, SWT.BORDER);
+        classNameTextBox.setLayoutData(gd);
+        classNameTextBox.setText(settings.get(PREF_WSDL_CLASS_NAME));
+        classNameTextBox.addModifyListener(new ModifyListener() {
+            public void modifyText(ModifyEvent e) {
+                handleClassNameModification();
+            }
+        });
+
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        Button loadButton = new Button(container, SWT.PUSH);
+        loadButton.setText("Load");
+        loadButton.setLayoutData(gd);
+        loadButton.addSelectionListener(new SelectionListener() {
+            public void widgetSelected(SelectionEvent e) {
+                updateTable();
+            }
+
+            public void widgetDefaultSelected(SelectionEvent e) {
+            }
+        });
+
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 3;
+        
+        searchDeclaredMethodsCheckBox = new Button(container,SWT.CHECK);
+        searchDeclaredMethodsCheckBox.setLayoutData(gd);
+        searchDeclaredMethodsCheckBox.setText("List Declared Methods Only");
+        searchDeclaredMethodsCheckBox.addSelectionListener(new SelectionListener(){
+            public void widgetSelected(SelectionEvent e){
+                updateDirtyStatus(true);//dirty
+            }
+            public void widgetDefaultSelected(SelectionEvent e){} 
+        });
+        
+        // #####################################################
+        label = new Label(container, SWT.NULL);
+        label.setText(ServiceArchiver.getResourceString("page6.style.label"));
+
+        gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 2;
+        styleSelectionCombo = new Combo(container, SWT.DROP_DOWN | SWT.BORDER
+                | SWT.READ_ONLY);
+        styleSelectionCombo.setLayoutData(gd);
+        populateStyleCombo();
+        styleSelectionCombo.addSelectionListener(new SelectionListener() {
+            public void widgetSelected(SelectionEvent e) {
+                settings.put(PREF_WSDL_STYLE_INDEX, styleSelectionCombo
+                        .getSelectionIndex());
+            }
+
+            public void widgetDefaultSelected(SelectionEvent e) {
+            }
+        });
+        
+        gd = new GridData(GridData.FILL_BOTH);
+        gd.horizontalSpan = 3;
+        gd.verticalSpan = 5;
+        
+        table = new Table(container,SWT.SINGLE|SWT.FULL_SELECTION|SWT.CHECK);
+        table.setLinesVisible(true);
+        table.setHeaderVisible(true); 
+        table.setLayoutData(gd);
+        declareColumn(table,20,"");
+        declareColumn(table,100,"Method Name");
+        declareColumn(table,100,"Return Type");
+        declareColumn(table,100,"Parameter Count");
+        
+        table.setVisible(false);
+        
+        setControl(container);
+
+    }
+    
+    private void declareColumn(Table table, int width,String colName){
+        TableColumn column = new TableColumn(table,SWT.NONE);
+        column.setWidth(width);
+        column.setText(colName);
+    }
+    
+    
+    private void populateStyleCombo() {
+        styleSelectionCombo.add("Document");
+        styleSelectionCombo.add("rpc");
+        styleSelectionCombo.add("Wrapped");
+
+        styleSelectionCombo.select(settings.getInt(PREF_WSDL_STYLE_INDEX));
+        
+    }
+    
+    private void updateTable() {
+        //get a URL from the class file location
+        try {
+            String classFileLocation = getClassFileLocation();
+            URL classFileURL = new File(classFileLocation).toURL();
+            ClassLoader loader = new URLClassLoader(new URL[] { classFileURL });
+
+            Class clazz = loader.loadClass(classNameTextBox.getText());
+            Method[] methods = null;
+            
+            if (searchDeclaredMethodsCheckBox.getSelection()){
+                methods = clazz.getDeclaredMethods();
+            }else{
+                methods = clazz.getMethods();
+            }
+
+            int methodCount = methods.length;
+            if (methodCount > 0) {
+                table.removeAll();
+                TableItem[] items = new TableItem[methodCount]; // An item for each field
+                for (int i = 0 ; i < methodCount; i++){
+                   items[i] = new TableItem(table, SWT.NONE);
+                   items[i].setText(1,methods[i].getName());
+                   items[i].setText(2,methods[i].getReturnType().getName());
+                   items[i].setText(3,methods[i].getParameterTypes().length+"");
+                   items[i].setChecked(true);//check them all by default
+                }
+                table.setVisible(true);
+                
+                //update the dirty variable
+               updateDirtyStatus(false);
+               updateStatus(null);
+            }
+
+        } catch (MalformedURLException e) {
+           updateStatus("Error : invalid location " +e.getMessage());
+        } catch (ClassNotFoundException e) {
+           updateStatus("Error : Class not found " + e.getMessage());
+        }
+    }
+    private void handleClassNameModification(){
+        String className = classNameTextBox.getText();
+        settings.put(PREF_WSDL_CLASS_NAME, className);
+        
+        if (className==null || "".equals(className.trim())){
+            updateStatus(ServiceArchiver.getResourceString("page6.error.classname1"));
+        }else if (className.endsWith(".")){
+            updateStatus(ServiceArchiver.getResourceString("page6.error.classname2"));
+        }else{
+            updateStatus(null);
+        }
+        
+    }
+    
+    private void handlFileNameModification(){
+        String wsdlFileName = outputFileNameTextBox.getText();
+        settings.put(PREF_WSDL_FILE_NAME, wsdlFileName);
+        
+        if (wsdlFileName==null || "".equals(wsdlFileName.trim())){
+            updateStatus(ServiceArchiver.getResourceString("page6.error.fileName1"));
+        }else if (wsdlFileName.endsWith(".wsdl")){
+            updateStatus(ServiceArchiver.getResourceString("page6.error.fileName2"));
+        }else{
+            updateStatus(null);
+        }
+        
+    }
+    private String getClassFileLocation(){
+        ServiceArchiveWizard wizard = (ServiceArchiveWizard)getWizard();
+        return wizard.getClassFileLocation();
+    }
+    
+    public WSDLAutoGenerateOptionBean getBean(){
+        WSDLAutoGenerateOptionBean optionBean = new WSDLAutoGenerateOptionBean();
+        optionBean.setClassFileName(classNameTextBox.getText());
+        optionBean.setOutputFileName(outputFileNameTextBox.getText());
+        optionBean.setStyle(styleSelectionCombo.getItem(styleSelectionCombo.getSelectionIndex()));
+        return optionBean;
+    }
+    
+    private void updateDirtyStatus(boolean status){
+        dirty = status;
+        if (table.isVisible()){
+            table.setEnabled(!status);
+        }
+        setPageComplete(!status);
+    }
+    
+	protected boolean getWizardComplete() {
+		return false;
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/util/SettingsConstants.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/util/SettingsConstants.java
new file mode 100644
index 0000000..1e08d32
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/util/SettingsConstants.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.eclipse.util;
+
+public interface SettingsConstants {
+   //#####################################################
+   static final String PREF_CLASS_FILE_LOCATION = "CLASS_FILE_LOCATION" ;
+   static final String PREF_FILTER_BY_CLASSES = "FILTER_BY_CLASSES" ;
+   //#####################################################
+   static final String PREF_SERVICE_XML_FILE = "SERVICE_XML" ;
+   static final String PREF_CHECK_AUTO_GEN_SERVICE_XML = "AUTO_GEN" ;
+   //#####################################################
+   static final String PREF_WSDL_FILE_NAME="WSDL_FILE_NAME";
+   static final String PREF_CHECK_WSDL_GENERATE="WSDL_GEN";
+   static final String PREF_CHECK_SKIP_WSDL="SKIP_WSDL";
+   static final String PREF_CHECK_SELECT_WSDL="SELECT_WSDL";
+   // ####################################################
+   static final String PREF_WSDL_CLASS_NAME="WSDL_CLASS_NAME";
+   static final String PREF_WSDL_STYLE_INDEX="WSDL_STYLE";
+   //#######################################################
+   static final String PREF_OUTPUT_LOCATION="OUT_LOCATION";
+   static final String PREF_OUTPUT_NAME="OUT_NAME";
+   // #######################################################
+   static final String PREF_SERVICE_GEN_SERVICE_NAME="SERVICE_NAME";
+   static final String PREF_SERVICE_GEN_CLASSNAME="CLASSNAME";
+   static final String PREF_SERVICE_GEN_LOAD_ALL="LOAD_ALL";
+   //######################################################
+   static final String PREF_LIB_LIBNAMES="LIB_NAMES";
+   
+   
+   
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/resource/ServiceResources.properties b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/resource/ServiceResources.properties
new file mode 100644
index 0000000..14b7d70
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/resource/ServiceResources.properties
@@ -0,0 +1,101 @@
+################################################################
+##################   Resources for the interface ###############
+#####################  Default en_us ###########################
+#
+# Main page title
+main.title=Apache Axis Service Archiver
+
+#general texts
+#Ok button caption
+general.ok=Ok
+#Cancle button caption
+general.cancel=Cancel
+#Next button caption
+general.next=Next
+#Previous button caption
+general.prev=Prev
+#Finish button caption
+general.finish=Finish
+#browse
+general.browse=Browse...
+general.add=Add
+###############################################################################
+#Firstpage title
+page1.name=page1
+page1.title=Service Archiver
+page1.desc=Welcome to the new AXIS Service packager Wizard Interface.Insert the location for the class files here.
+# First page
+page1.fileLocationLabel=Class File Location
+page1.filedialogTitle=Browse for the class file location
+page1.filter.caption=Include .class files only
+page1.filedialogTitle=Browse for a location
+page1.error.filemissing=The specified file is missing
+################################################################################
+# second page
+page2.name=page2
+page2.title=Service Archiver
+page2.desc=Select the Service XML file to be included in the Service archive
+page2.selectservicexml.caption=Set the service XML file
+page2.generateauto.caption=Generate the service xml automatically
+page2.error.servicenameempty=Service XML should not be empty
+page2.error.servicenamewrong=Please select a file named service.xml
+###############################################################################
+#third page
+page3.name=page3
+page3.title=Service Archiver
+page3.desc=Generate the Service XML file
+page3.servicename.lable=Service name
+page3.servicename.tooltip=Put the name of the service here.
+page3.classname.lable=Class name
+page3.classname.tooltip=The class that you need to expose as the service. Note that this needs to be in the previosly selected folder
+page3.loadbutton.lable=Load
+page3.declared.lable=Search declared methods only
+page3.table.col1=Method name
+page3.table.col2=Return type
+page3.table.col3=Parameters
+page3.error.url=Error : invalid location
+page3.error.class=Error : Class not found
+page3.error.unknown=Error : Unknown error
+################################################################################
+#Fourth page
+page4.name=page4
+page4.title=Service Archiver
+page4.desc=Set the output loacation and the output file name
+page4.outputlocation.label=Output file location
+page4.outputname.label=Output File Name
+page4.dirdialog.caption=Browse for the output location
+page4.hint.caption=Hint : To Finish the wizard, please enter valid entries to the output location and output file. 
+# errors
+page4.error.location=Browse and enter the location to save the output file
+page4.error.filename=Enter a name for Service File (Ideally it sould be the service name ending with the valid extention *.jar)
+#################################################################################
+#Fifth page
+page5.name=page5
+page5.title=Service Archiver
+page5.desc=Add the WSDL File
+page5.selectwsdl.caption=Select a WSDL file
+page5.generateauto.caption=Generate a WSDL file
+page5.autogen.tooltip=Tick this to generate a WSDL file automatically
+page5.recommendation=Since you generated the service.XML it is recommended that the WSDL is auto generated
+page5.error.wsdlnameempty=WSDL file name is empty
+page5.error.wsdlnamewrong=WSDL file name is invalid
+page5.skipWSDL.caption=Skip WSDL
+page5.selectWSDL.caption=Select WSDL
+##################################################################################
+#Sixth page
+page6.name=page6
+page6.title=Service Archiver
+page6.desc=Add any external libraries
+page6.add=Add ->
+page6.remove=Remove <-
+page6.libnames.caption=Libraries
+page6.liblist.caption=Added libraries
+page6.liblist.count.caption= jars in list
+
+##################################################################################
+# Wizards error messages
+wizard.codegen.success=Service Archive Generated successfully!
+wizard.codegen.unknown.error=Unknown Error!
+wizard.codegen.success.msg.heading=Success
+wizard.codegen.error.msg.heading=Error
+wizard.codegen.startmsg=Running the archiving process
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/MainWindow.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/MainWindow.java
new file mode 100644
index 0000000..037d4f2
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/MainWindow.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.swing.ui;
+
+import org.apache.axis2.tool.service.bean.WizardBean;
+import org.apache.axis2.tool.service.control.Controller;
+import org.apache.axis2.tool.service.control.ProcessException;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import java.awt.HeadlessException;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class MainWindow extends JFrame {
+
+    private JPanel wizardPaneContainer;
+    private JButton nextButton;
+    private JButton previousButton;
+    private JButton cancelButton;
+    private JButton finishButton;
+    private int currentPage;
+    private WizardPane currentWizardPane;
+
+    private static final int PAGE_1 = 1;
+    private static final int PAGE_2 = 2;
+    private static final int PAGE_3 = 3;
+    //private static final int PAGE_4=4;
+
+
+    private WizardBean wizardBean = new WizardBean();
+
+    public MainWindow() throws HeadlessException {
+        super("Axis 2 - Service Jar Builder");
+        init();
+
+    }
+
+    private void init() {
+        this.getContentPane().setLayout(null);
+
+        this.setBounds(
+                (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() /
+                2 -
+                400 / 2,
+                (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() /
+                2 -
+                360 / 2,
+                400, 360);
+        this.setResizable(false);
+        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
+
+        int hgap = 5;
+        int vgap = 5;
+        int bWidth = 80;
+        int bHeight = 20;
+
+        this.wizardPaneContainer = new JPanel(null);
+        this.getContentPane().add(this.wizardPaneContainer);
+        this.wizardPaneContainer.setBounds(0, 0, 400, 300);
+
+        this.previousButton = new JButton("Previous");
+        this.getContentPane().add(this.previousButton);
+        this.previousButton.setBounds(hgap, 300 + vgap, bWidth, bHeight);
+        this.previousButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                moveBackWard();
+            }
+
+        });
+
+        this.nextButton = new JButton("Next");
+        this.getContentPane().add(this.nextButton);
+        this.nextButton.setBounds(hgap + bWidth + hgap,
+                300 + vgap,
+                bWidth,
+                bHeight);
+        this.nextButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                moveForward();
+            }
+        });
+
+        this.cancelButton = new JButton("Close");
+        this.getContentPane().add(this.cancelButton);
+        this.cancelButton.setBounds(hgap + (bWidth + hgap) * 2,
+                300 + vgap,
+                bWidth,
+                bHeight);
+        this.cancelButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if (confirmExit())
+                    System.exit(0);
+            }
+        });
+
+        this.finishButton = new JButton("Finish");
+        this.getContentPane().add(this.finishButton);
+        this.finishButton.setBounds(hgap + (bWidth + hgap) * 3,
+                300 + vgap,
+                bWidth,
+                bHeight);
+        this.finishButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                processFinish();
+            }
+        });
+
+
+        this.currentPage = PAGE_1;
+        moveToPage(currentPage); //add the first page as default
+    }
+
+    private void showErrorMessage() {
+        JOptionPane.showMessageDialog(this,
+                "Required Value Not set!!!",
+                "Error",
+                JOptionPane.ERROR_MESSAGE);
+    }
+
+    private void showErrorMessage(String message) {
+        JOptionPane.showMessageDialog(this,
+                message,
+                "Error",
+                JOptionPane.ERROR_MESSAGE);
+    }
+
+    private void showSuccessMessage(String message) {
+        JOptionPane.showMessageDialog(this,
+                message,
+                "Error",
+                JOptionPane.INFORMATION_MESSAGE);
+    }
+
+    private boolean confirmExit() {
+        int returnType = JOptionPane.showOptionDialog(this,
+                "Are you sure you want to exit?",
+                "Exit service builder",
+                JOptionPane.YES_NO_OPTION,
+                JOptionPane.WARNING_MESSAGE,
+                null, null, null);
+        return (returnType == JOptionPane.YES_OPTION);
+    }
+
+    private void moveForward() {
+        if (currentWizardPane.validateValues()) {
+            this.currentPage++;
+            moveToPage(this.currentPage);
+        } else {
+            showErrorMessage();
+        }
+    }
+
+    private void moveBackWard() {
+        this.currentPage--;
+        moveToPage(this.currentPage);
+
+    }
+
+    private void moveToPage(int page) {
+        switch (page) {
+            case PAGE_1:
+                processPage(new WizardPane1(this.wizardBean, this),
+                        false,
+                        true,
+                        false);
+                break;
+            case PAGE_2:
+                processPage(new WizardPane2(this.wizardBean, this),
+                        true,
+                        true,
+                        false);
+                break;
+            case PAGE_3:
+                processPage(new WizardPane3(this.wizardBean, this),
+                        true,
+                        false,
+                        true);
+                break;
+            default:
+                return;
+        }
+    }
+
+    private void processFinish() {
+        if (currentWizardPane.validateValues()) {
+            try {
+                new Controller().process(wizardBean);
+                showSuccessMessage(" jar file creation successful! ");
+            } catch (ProcessException e) {
+                showErrorMessage(e.getMessage());
+            } catch (Exception e) {
+                showErrorMessage("Unknown Error! " + e.getMessage());
+            }
+        } else {
+            showErrorMessage();
+        }
+    }
+
+    private void processPage(WizardPane pane,
+                             boolean prevButtonState,
+                             boolean nextButtonState,
+                             boolean finishButtonState) {
+        this.wizardPaneContainer.removeAll();
+        currentWizardPane = pane;
+        this.wizardPaneContainer.add(pane);
+        this.previousButton.setEnabled(prevButtonState);
+        this.nextButton.setEnabled(nextButtonState);
+        this.finishButton.setEnabled(finishButtonState);
+        this.repaint();
+    }
+
+
+    public static void main(String[] args) {
+        new MainWindow().show();
+    }
+
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane.java
new file mode 100644
index 0000000..10ae3e5
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.swing.ui;
+
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import javax.swing.filechooser.FileFilter;
+import java.awt.LayoutManager;
+import java.io.File;
+
+public abstract class WizardPane extends JPanel {
+    protected JTextArea descriptionLabel;
+    protected JFrame ownerFrame;
+
+    protected int descWidth = 400;
+    protected int descHeight = 100;
+    protected int width = 400;
+    protected int height = 300;
+    protected int hgap = 5;
+    protected int vgap = 5;
+
+    protected WizardPane() {
+    }
+
+    protected WizardPane(JFrame ownerFrame) {
+        this.ownerFrame = ownerFrame;
+    }
+
+    protected WizardPane(boolean isDoubleBuffered) {
+        super(isDoubleBuffered);
+    }
+
+    protected WizardPane(LayoutManager layout) {
+        super(layout);
+    }
+
+    protected WizardPane(LayoutManager layout, boolean isDoubleBuffered) {
+        super(layout, isDoubleBuffered);
+    }
+
+    protected void initDescription(String desc) {
+        this.descriptionLabel = new JTextArea(desc);
+        this.descriptionLabel.setOpaque(false);
+        this.descriptionLabel.setEditable(false);
+        this.descriptionLabel.setAutoscrolls(true);
+        this.descriptionLabel.setBounds(0, 0, descWidth, descHeight);
+        this.add(this.descriptionLabel);
+    }
+
+    public abstract boolean validateValues();
+
+    protected void showErrorMessage(String message) {
+        JOptionPane.showMessageDialog(this,
+                message,
+                "Error",
+                JOptionPane.ERROR_MESSAGE);
+    }
+
+
+    protected String browseForAFile(final String extension) {
+        String str = "";
+        JFileChooser fc = new JFileChooser();
+        fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
+        fc.addChoosableFileFilter(new FileFilter() {
+            public boolean accept(File f) {
+                if (f.getName().endsWith(extension) || f.isDirectory())
+                    return true;
+                else
+                    return false;
+            }
+
+            public String getDescription() {
+                return extension + " file filter ";
+            }
+        });
+
+        int returnVal = fc.showOpenDialog(this);
+        if (returnVal == JFileChooser.APPROVE_OPTION) {
+            str = fc.getSelectedFile().getAbsolutePath().trim();
+        }
+        return str;
+    }
+
+    protected String browseForAFolder() {
+        String str = "";
+        JFileChooser fc = new JFileChooser();
+        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+        int returnVal = fc.showOpenDialog(this);
+        if (returnVal == JFileChooser.APPROVE_OPTION) {
+            str = fc.getSelectedFile().getAbsolutePath().trim();
+        }
+        return str;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane1.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane1.java
new file mode 100644
index 0000000..8146c7a
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane1.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.swing.ui;
+
+import org.apache.axis2.tool.service.bean.ClassFileSelectionBean;
+import org.apache.axis2.tool.service.bean.WizardBean;
+import org.apache.axis2.tool.util.Constants;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+public class WizardPane1 extends WizardPane {
+
+    private ClassFileSelectionBean myBean = null;
+
+    private JLabel classFileLocationLabel;
+    private JTextField classFileLocationTextBox;
+    private JButton browseButton;
+
+    public WizardPane1(WizardBean wizardBean, JFrame ownerFrame) {
+
+        super(ownerFrame);
+
+        init();
+
+        if (wizardBean.getPage1bean() != null) {
+            myBean = wizardBean.getPage1bean();
+            this.classFileLocationTextBox.setText(myBean.getFileLocation());
+        } else {
+            myBean = new ClassFileSelectionBean();
+            wizardBean.setPage1bean(myBean);
+        }
+
+
+    }
+
+    public boolean validateValues() {
+        String text = myBean.getFileLocation();
+        return (text != null && text.trim().length() > 0);
+    }
+
+    private void init() {
+        this.setLayout(null);
+        this.setSize(width, height);
+
+        initDescription("Welcome to the new AXIS Service packager Wizard Interface.\n\n " +
+                "Insert the location for the class files here.This should be a folder with \n" +
+                " the compiled classes");
+
+
+        this.classFileLocationLabel = new JLabel("class file location");
+        this.add(this.classFileLocationLabel);
+        this.classFileLocationLabel.setBounds(hgap,
+                descHeight,
+                Constants.UIConstants.LABEL_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+
+        this.classFileLocationTextBox = new JTextField();
+        this.add(this.classFileLocationTextBox);
+        this.classFileLocationTextBox.setBounds(
+                Constants.UIConstants.LABEL_WIDTH + 2 * hgap,
+                descHeight,
+                Constants.UIConstants.TEXT_BOX_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+        this.classFileLocationTextBox.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleTextBoxChange();
+            }
+        });
+        this.classFileLocationTextBox.addKeyListener(new KeyListener() {
+            public void keyTyped(KeyEvent e) {
+            }
+
+            public void keyPressed(KeyEvent e) {
+            }
+
+            public void keyReleased(KeyEvent e) {
+                handleTextBoxChange();
+            }
+        });
+
+        this.browseButton = new JButton(".");
+        this.add(this.browseButton);
+        this.browseButton.setBounds(
+                Constants.UIConstants.LABEL_WIDTH + 2 * hgap +
+                Constants.UIConstants.TEXT_BOX_WIDTH,
+                descHeight,
+                Constants.UIConstants.BROWSE_BUTTON_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+        this.browseButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                classFileLocationTextBox.setText(browseForAFolder());
+                handleTextBoxChange();
+            }
+        });
+    }
+
+
+    private void handleTextBoxChange() {
+        String text = classFileLocationTextBox.getText();
+        if (text != null) {
+            this.myBean.setFileLocation(text);
+        }
+    }
+
+
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane2.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane2.java
new file mode 100644
index 0000000..f872c97
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane2.java
@@ -0,0 +1,538 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.swing.ui;
+
+import org.apache.axis2.tool.service.bean.Page2Bean;
+import org.apache.axis2.tool.service.bean.WizardBean;
+import org.apache.axis2.tool.service.control.Controller;
+import org.apache.axis2.tool.service.control.ProcessException;
+import org.apache.axis2.tool.util.Constants;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+import java.awt.HeadlessException;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.util.ArrayList;
+
+public class WizardPane2 extends WizardPane {
+
+    private WizardBean parentBean;
+    private Page2Bean myBean;
+
+    private JRadioButton selectManualFileRadioButton;
+    private JRadioButton createAutomaticFileRadioButton;
+    private JPanel selectionPanel;
+
+
+    public WizardPane2(WizardBean wizardBean, JFrame ownerFrame) {
+        super(ownerFrame);
+
+        init();
+
+        parentBean = wizardBean;
+
+        if (wizardBean.getPage2bean() != null) {
+            myBean = wizardBean.getPage2bean();
+            //set the initial settings from the bean
+            setBeanValues();
+
+        } else {
+            myBean = new Page2Bean();
+            wizardBean.setPage2bean(myBean);
+            setDefaultValues();
+        }
+
+    }
+
+    public void setBeanValues() {
+        if (myBean.isManual()) {
+            this.selectManualFileRadioButton.setSelected(true);
+            loadScreen(new ManualSelectionPanel(true));
+        } else {
+            this.createAutomaticFileRadioButton.setSelected(true);
+            loadScreen(new AutomaticSelectionPanel(true));
+        }
+    }
+
+
+    public boolean validateValues() {
+        String text = "";
+        String text2 = "";
+        boolean returnValue = false;
+        if (myBean.isManual()) {
+            text = myBean.getManualFileName();
+            returnValue = (text != null && text.trim().length() > 0);
+        } else {
+            text = myBean.getAutomaticClassName();
+            text2 = myBean.getProviderClassName();
+            returnValue = (text != null && text.trim().length() > 0) &&
+                    (text2 != null && text2.trim().length() > 0);
+        }
+
+        return returnValue;
+    }
+
+    private void init() {
+        this.setLayout(null);
+        this.setSize(width, height);
+
+        initDescription("\n Select either the service xml file or the class that you want to \n " +
+                " expose as the service to auto generate a service.xml. \n " +
+                " Only the class files that are in the previously selected location can\n" +
+                " be laded from here");
+
+        ButtonGroup group = new ButtonGroup();
+
+        this.selectManualFileRadioButton =
+                new JRadioButton("Select a file manually");
+        this.selectManualFileRadioButton.setBounds(hgap,
+                descHeight,
+                Constants.UIConstants.RADIO_BUTTON_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+        this.add(this.selectManualFileRadioButton);
+        group.add(selectManualFileRadioButton);
+        this.selectManualFileRadioButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                changeSelectionScreen();
+            }
+        });
+        this.createAutomaticFileRadioButton =
+                new JRadioButton("Create a file automatically");
+        this.createAutomaticFileRadioButton.setBounds(hgap,
+                descHeight + vgap + Constants.UIConstants.GENERAL_COMP_HEIGHT,
+                Constants.UIConstants.RADIO_BUTTON_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+        this.add(this.createAutomaticFileRadioButton);
+        group.add(createAutomaticFileRadioButton);
+        this.createAutomaticFileRadioButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                changeSelectionScreen();
+            }
+        });
+
+        this.selectionPanel = new JPanel();
+        this.selectionPanel.setLayout(null);
+        this.selectionPanel.setBounds(0,
+                descHeight + 2 * Constants.UIConstants.GENERAL_COMP_HEIGHT +
+                2 * vgap,
+                width,
+                100);
+        this.add(this.selectionPanel);
+
+        //select manual option by default
+
+
+    }
+
+    private void setDefaultValues() {
+        this.selectManualFileRadioButton.setSelected(true);
+        loadScreen(new ManualSelectionPanel());
+        updateBeanFlags(true);
+    }
+
+    private void changeSelectionScreen() {
+        if (selectManualFileRadioButton.isSelected()) {
+            loadScreen(new ManualSelectionPanel(true));
+            updateBeanFlags(true);
+        } else {
+            loadScreen(new AutomaticSelectionPanel(true));
+            updateBeanFlags(false);
+        }
+    }
+
+    private void updateBeanFlags(boolean flag) {
+        myBean.setManual(flag);
+        myBean.setAutomatic(!flag);
+    }
+
+    private void loadScreen(JPanel panel) {
+        this.selectionPanel.removeAll();
+        this.selectionPanel.add(panel);
+        this.repaint();
+    }
+
+
+    private class ManualSelectionPanel extends JPanel {
+
+        private JLabel serverXMLFileLocationLabel;
+        private JTextField serverXMLFileLocationTextBox;
+        private JButton browseButton;
+
+        public ManualSelectionPanel() {
+            init();
+        }
+
+        public ManualSelectionPanel(boolean loadVals) {
+            init();
+            if (loadVals) {
+                this.serverXMLFileLocationTextBox.setText(
+                        myBean.getManualFileName());
+            }
+        }
+
+        private void init() {
+            this.setLayout(null);
+            this.setSize(width, 100);
+
+            this.serverXMLFileLocationLabel = new JLabel("Service File");
+            this.add(this.serverXMLFileLocationLabel);
+            this.serverXMLFileLocationLabel.setBounds(hgap,
+                    vgap,
+                    Constants.UIConstants.LABEL_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+
+            this.serverXMLFileLocationTextBox = new JTextField();
+            this.add(this.serverXMLFileLocationTextBox);
+            this.serverXMLFileLocationTextBox.setBounds(
+                    Constants.UIConstants.LABEL_WIDTH + 2 * hgap,
+                    vgap,
+                    Constants.UIConstants.TEXT_BOX_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+            this.serverXMLFileLocationTextBox.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    setOutFileName();
+                }
+            });
+            this.serverXMLFileLocationTextBox.addKeyListener(new KeyListener() {
+                public void keyTyped(KeyEvent e) {
+                }
+
+                public void keyPressed(KeyEvent e) {
+                }
+
+                public void keyReleased(KeyEvent e) {
+                    setOutFileName();
+                }
+            });
+
+            this.browseButton = new JButton(".");
+            this.add(this.browseButton);
+            this.browseButton.setBounds(
+                    Constants.UIConstants.LABEL_WIDTH + 2 * hgap +
+                    Constants.UIConstants.TEXT_BOX_WIDTH,
+                    vgap,
+                    Constants.UIConstants.BROWSE_BUTTON_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+            this.browseButton.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    serverXMLFileLocationTextBox.setText(browseForAFile("xml"));
+                    setOutFileName();
+                }
+            });
+
+        }
+
+        private void setOutFileName() {
+            myBean.setManualFileName(serverXMLFileLocationTextBox.getText());
+        }
+    }
+
+    private class AutomaticSelectionPanel extends JPanel {
+
+        private JLabel classFileListLable;
+        private JLabel providerClassLable;
+        private JTextField classFileNameTextBox;
+        private JTextField providerClassNameTextBox;
+        private JButton loadButton;
+        private JButton advancedButton;
+
+        public AutomaticSelectionPanel() {
+            init();
+        }
+
+        public AutomaticSelectionPanel(boolean loadVals) {
+            init();
+            if (loadVals) {
+                this.classFileNameTextBox.setText(
+                        myBean.getAutomaticClassName());
+                this.providerClassNameTextBox.setText(
+                        myBean.getProviderClassName());
+            }
+        }
+
+        private void init() {
+            this.setLayout(null);
+            this.setSize(width, 100);
+
+            this.classFileListLable = new JLabel("Class Name");
+            this.add(this.classFileListLable);
+            this.classFileListLable.setBounds(hgap,
+                    vgap,
+                    Constants.UIConstants.LABEL_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+
+            this.classFileNameTextBox = new JTextField();
+            this.add(this.classFileNameTextBox);
+            this.classFileNameTextBox.setBounds(
+                    Constants.UIConstants.LABEL_WIDTH + 2 * hgap,
+                    vgap,
+                    Constants.UIConstants.TEXT_BOX_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+            this.classFileNameTextBox.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    setClassName();
+                }
+            });
+            this.classFileNameTextBox.addKeyListener(new KeyListener() {
+                public void keyTyped(KeyEvent e) {
+                }
+
+                public void keyPressed(KeyEvent e) {
+                }
+
+                public void keyReleased(KeyEvent e) {
+                    setClassName();
+                }
+            });
+
+            this.providerClassLable = new JLabel("Provider Class Name");
+            this.add(this.providerClassLable);
+            this.providerClassLable.setBounds(hgap,
+                    (Constants.UIConstants.GENERAL_COMP_HEIGHT + vgap),
+                    Constants.UIConstants.LABEL_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+
+            this.providerClassNameTextBox = new JTextField();
+            this.add(this.providerClassNameTextBox);
+            this.providerClassNameTextBox.setBounds(
+                    Constants.UIConstants.LABEL_WIDTH + 2 * hgap,
+                    (Constants.UIConstants.GENERAL_COMP_HEIGHT + vgap * 2),
+                    Constants.UIConstants.TEXT_BOX_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+            this.providerClassNameTextBox.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    setProviderClassName();
+                }
+            });
+            this.providerClassNameTextBox.addKeyListener(new KeyListener() {
+                public void keyTyped(KeyEvent e) {
+                }
+
+                public void keyPressed(KeyEvent e) {
+                }
+
+                public void keyReleased(KeyEvent e) {
+                    setProviderClassName();
+                }
+            });
+
+            this.loadButton = new JButton("Load");
+            this.add(this.loadButton);
+            this.loadButton.setBounds(hgap, (Constants.UIConstants.GENERAL_COMP_HEIGHT +
+                    vgap) *
+                    2 +
+                    vgap,
+                    Constants.UIConstants.GENERAL_BUTTON_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+            this.loadButton.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    loadAllMethods();
+                }
+            });
+            loadButton.setEnabled(false);
+
+            this.advancedButton = new JButton("Advanced");
+            this.add(this.advancedButton);
+            this.advancedButton.setBounds(
+                    2 * hgap + Constants.UIConstants.GENERAL_BUTTON_WIDTH
+                    , (Constants.UIConstants.GENERAL_COMP_HEIGHT + vgap) * 2 +
+                    vgap,
+                    Constants.UIConstants.GENERAL_BUTTON_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+            this.advancedButton.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    openDialog();
+                }
+            });
+            this.advancedButton.setEnabled(false);
+        }
+
+        private void loadAllMethods() {
+            try {
+                ArrayList methodList = new Controller().getMethodList(
+                        parentBean);
+                myBean.setSelectedMethodNames(methodList);
+                loadButton.setEnabled(false);
+                advancedButton.setEnabled(true);
+            } catch (ProcessException e) {
+                showErrorMessage(e.getMessage());
+            }
+        }
+
+        private void openDialog() {
+            try {
+                new AdvancedSelectionDialog().show();
+            } catch (ProcessException e) {
+                showErrorMessage(e.getMessage());
+            }
+        }
+
+        private void setClassName() {
+            loadButton.setEnabled(true);
+            advancedButton.setEnabled(false);
+            myBean.setAutomaticClassName(classFileNameTextBox.getText());
+        }
+
+        private void setProviderClassName() {
+            //loadButton.setEnabled(true);
+            //advancedButton.setEnabled(false);
+            myBean.setProviderClassName(providerClassNameTextBox.getText());
+        }
+
+
+    }
+
+
+    private class AdvancedSelectionDialog extends JDialog {
+
+        private JPanel lablePanel;
+        private JButton okButton;
+        private JButton cancelButton;
+        private boolean[] selectedValues;
+        private ArrayList completeMethodList;
+
+
+        public AdvancedSelectionDialog() throws HeadlessException,
+                ProcessException {
+            super();
+            super.setModal(true);
+            super.setTitle("Select Methods");
+            this.getContentPane().setLayout(null);
+            init();
+        }
+
+        private void init() throws ProcessException {
+            //load the class file list
+            this.completeMethodList =
+                    new Controller().getMethodList(parentBean);
+            int methodCount = this.completeMethodList.size();
+            int panelHeight = methodCount *
+                    (Constants.UIConstants.GENERAL_COMP_HEIGHT + vgap);
+
+            this.lablePanel = new JPanel();
+            this.lablePanel.setLayout(null);
+            this.lablePanel.setBounds(0, 0, width, panelHeight);
+            this.getContentPane().add(this.lablePanel);
+
+            ArrayList currentSelectedList = myBean.getSelectedMethodNames();
+            //create check boxes for all the methods and add them to the panel
+            JCheckBox tempCheckBox;
+            boolean currentSelection;
+            this.selectedValues = new boolean[methodCount];
+
+            for (int i = 0; i < methodCount; i++) {
+                tempCheckBox =
+                        new JCheckBox(
+                                this.completeMethodList.get(i).toString());
+                currentSelection =
+                        currentSelectedList.contains(
+                                this.completeMethodList.get(i));
+                tempCheckBox.setSelected(currentSelection);
+                selectedValues[i] = currentSelection;
+                tempCheckBox.setBounds(hgap, vgap +
+                        (Constants.UIConstants.GENERAL_COMP_HEIGHT + vgap) * i,
+                        Constants.UIConstants.LABEL_WIDTH * 3,
+                        Constants.UIConstants.GENERAL_COMP_HEIGHT);
+                tempCheckBox.addActionListener(
+                        new CheckBoxActionListner(tempCheckBox, i));
+                this.lablePanel.add(tempCheckBox);
+
+            }
+
+            okButton = new JButton("OK");
+            this.getContentPane().add(this.okButton);
+            this.okButton.setBounds(hgap, panelHeight + vgap,
+                    Constants.UIConstants.GENERAL_BUTTON_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+            this.okButton.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    loadValuesToBean();
+                    closeMe();
+                }
+            });
+
+            cancelButton = new JButton("Cancel");
+            this.getContentPane().add(this.cancelButton);
+            this.cancelButton.setBounds(
+                    hgap * 2 + Constants.UIConstants.GENERAL_BUTTON_WIDTH, panelHeight +
+                    vgap,
+                    Constants.UIConstants.GENERAL_BUTTON_WIDTH,
+                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
+            this.cancelButton.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    closeMe();
+                }
+            });
+
+            this.setSize(width,
+                    panelHeight +
+                    2 * Constants.UIConstants.GENERAL_COMP_HEIGHT +
+                    30);
+            this.setResizable(false);
+        }
+
+        private void updateSelection(JCheckBox checkBox, int index) {
+            if (checkBox.isSelected()) {
+                selectedValues[index] = true;
+            } else {
+                selectedValues[index] = false;
+            }
+
+        }
+
+        private void loadValuesToBean() {
+            ArrayList modifiedMethodList = new ArrayList();
+            for (int i = 0; i < selectedValues.length; i++) {
+                if (selectedValues[i])
+                    modifiedMethodList.add(completeMethodList.get(i));
+            }
+
+            myBean.setSelectedMethodNames(modifiedMethodList);
+        }
+
+        private void closeMe() {
+            this.dispose();
+        }
+
+        private class CheckBoxActionListner implements ActionListener {
+            private JCheckBox checkBox;
+            private int index;
+
+            public CheckBoxActionListner(JCheckBox checkBox, int index) {
+                this.index = index;
+                this.checkBox = checkBox;
+            }
+
+            public void actionPerformed(ActionEvent e) {
+                updateSelection(checkBox, index);
+            }
+
+        }
+    }
+
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane3.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane3.java
new file mode 100644
index 0000000..33179e9
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/swing/ui/WizardPane3.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.service.swing.ui;
+
+import org.apache.axis2.tool.service.bean.Page3Bean;
+import org.apache.axis2.tool.service.bean.WizardBean;
+import org.apache.axis2.tool.util.Constants;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+public class WizardPane3 extends WizardPane {
+
+    private Page3Bean myBean;
+
+    private JLabel outputFileLocationLabel;
+    private JTextField outputFileLocationTextBox;
+    private JButton browseButton;
+
+    private JLabel outputFileNameLabel;
+    private JTextField outputFileNameTextBox;
+
+    public WizardPane3(WizardBean bean, JFrame ownerFrame) {
+        super(ownerFrame);
+        init();
+        if (bean.getPage3bean() != null) {
+            this.myBean = bean.getPage3bean();
+            setBeanValues();
+        } else {
+            this.myBean = new Page3Bean();
+            bean.setPage3bean(myBean);
+        }
+    }
+
+    public boolean validateValues() {
+        String text1 = myBean.getOutputFileName();
+        String text2 = myBean.getOutputFolderName();
+        boolean text1Validity = (text1 != null && text1.trim().length() > 0);
+        boolean text2Validity = (text2 != null && text2.trim().length() > 0);
+
+        return text1Validity && text2Validity;
+    }
+
+    private void setBeanValues() {
+        this.outputFileLocationTextBox.setText(myBean.getOutputFolderName());
+        this.outputFileNameTextBox.setText(myBean.getOutputFileName());
+    }
+
+    private void init() {
+        this.setLayout(null);
+        this.setSize(width, height);
+
+        initDescription("\nInput the location for the output file and the name for \n" +
+                "the compiled jar file ");
+
+
+        this.outputFileLocationLabel = new JLabel("Output Folder");
+        this.add(this.outputFileLocationLabel);
+        this.outputFileLocationLabel.setBounds(hgap,
+                descHeight,
+                Constants.UIConstants.LABEL_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+
+        this.outputFileLocationTextBox = new JTextField();
+        this.add(this.outputFileLocationTextBox);
+        this.outputFileLocationTextBox.setBounds(
+                Constants.UIConstants.LABEL_WIDTH + 2 * hgap,
+                descHeight,
+                Constants.UIConstants.TEXT_BOX_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+        this.outputFileLocationTextBox.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleLocationChange();
+            }
+        });
+        this.outputFileLocationTextBox.addKeyListener(new KeyListener() {
+            public void keyTyped(KeyEvent e) {
+            }
+
+            public void keyPressed(KeyEvent e) {
+                handleLocationChange();
+            }
+
+            public void keyReleased(KeyEvent e) {
+            }
+        });
+
+
+        this.browseButton = new JButton(".");
+        this.add(this.browseButton);
+        this.browseButton.setBounds(
+                Constants.UIConstants.LABEL_WIDTH + 2 * hgap +
+                Constants.UIConstants.TEXT_BOX_WIDTH,
+                descHeight,
+                Constants.UIConstants.BROWSE_BUTTON_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+        this.browseButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                outputFileLocationTextBox.setText(browseForAFolder());
+                handleLocationChange();
+
+            }
+        });
+
+
+        this.outputFileNameLabel = new JLabel("Out File Name");
+        this.add(this.outputFileNameLabel);
+        this.outputFileNameLabel.setBounds(hgap,
+                descHeight + Constants.UIConstants.GENERAL_COMP_HEIGHT + vgap,
+                Constants.UIConstants.LABEL_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+
+        this.outputFileNameTextBox = new JTextField();
+        this.add(this.outputFileNameTextBox);
+        this.outputFileNameTextBox.setBounds(
+                Constants.UIConstants.LABEL_WIDTH + 2 * hgap,
+                descHeight + Constants.UIConstants.GENERAL_COMP_HEIGHT + vgap,
+                Constants.UIConstants.TEXT_BOX_WIDTH,
+                Constants.UIConstants.GENERAL_COMP_HEIGHT);
+        this.outputFileNameTextBox.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleFileNameChange();
+            }
+        });
+        this.outputFileNameTextBox.addKeyListener(new KeyListener() {
+            public void keyTyped(KeyEvent e) {
+            }
+
+            public void keyPressed(KeyEvent e) {
+            }
+
+            public void keyReleased(KeyEvent e) {
+                handleFileNameChange();
+            }
+        });
+
+    }
+
+    private void handleLocationChange() {
+        myBean.setOutputFolderName(outputFileLocationTextBox.getText());
+    }
+
+    private void handleFileNameChange() {
+        myBean.setOutputFileName(outputFileNameTextBox.getText());
+    }
+
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java
new file mode 100644
index 0000000..a635270
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004,2005 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.axis2.tool.util;
+
+public class Constants {
+    public class UIConstants{
+        public static final int LABEL_WIDTH=100;
+        public static final int RADIO_BUTTON_WIDTH=200;
+        public static final int TEXT_BOX_WIDTH=250;
+        public static final int BROWSE_BUTTON_WIDTH=20;
+        public static final int GENERAL_BUTTON_WIDTH=80;
+
+        public static final int GENERAL_COMP_HEIGHT=20;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/test/resources/log4j.properties b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/test/resources/log4j.properties
new file mode 100644
index 0000000..58ecb07
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-eclipse-service-plugin/src/test/resources/log4j.properties
@@ -0,0 +1,21 @@
+# Set root category priority to INFO and its only appender to CONSOLE.
+log4j.rootCategory=INFO, CONSOLE
+#log4j.rootCategory=INFO, CONSOLE, LOGFILE
+
+# Set the enterprise logger priority to FATAL
+log4j.logger.org.apache.axis2.enterprise=FATAL
+log4j.logger.de.hunsicker.jalopy.io=FATAL
+log4j.logger.httpclient.wire.header=FATAL
+log4j.logger.org.apache.commons.httpclient=FATAL
+
+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c - %m%n
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+log4j.appender.LOGFILE=org.apache.log4j.FileAppender
+log4j.appender.LOGFILE.File=axis2.log
+log4j.appender.LOGFILE.Append=true
+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/maven.xml b/rampart_1_1/modules/tool/axis2-idea-plugin/maven.xml
new file mode 100644
index 0000000..bb99326
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/maven.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Revision: 1.21 $ $Date: 2004-10-27 20:54:09 +0600 (Wed, 27 Oct 2004) $ -->
+
+<project default="java:compile"
+         xmlns:j="jelly:core"
+         xmlns:u="jelly:util"
+         xmlns:maven="jelly:maven"
+         xmlns:deploy="deploy"
+         xmlns:ant="jelly:ant">
+
+    <postGoal name="java:compile">
+
+        <!-- Create zip for axis2-idea-plugin -->
+        <mkdir dir="target/plugin"/>
+        <mkdir dir="target/plugin/axis2-idea-plugin"/>
+        <mkdir dir="target/plugin/axis2-idea-plugin/META-INF"/>
+        <mkdir dir="target/plugin/axis2-idea-plugin/lib"/>
+        <mkdir dir="target/plugin/axis2-idea-plugin/classes/icons"/>
+	<mkdir dir="target/plugin/axis2-idea-plugin/classes"/>
+
+        <ant:copy todir="target/plugin/axis2-idea-plugin/classes">
+            <ant:fileset dir="target/classes"/>
+        </ant:copy>
+        <ant:copy todir="target/plugin/axis2-idea-plugin/classes/icons">
+            <ant:fileset dir="plugin/icons"/>
+        </ant:copy>
+        <ant:copy todir="target/plugin/axis2-idea-plugin/META-INF">
+            <ant:fileset dir="plugin/META-INF"/>
+        </ant:copy>
+
+
+	<j:forEach var="depItem" items="${pom.getDependencies()}">
+		<j:if test="${depItem.getType().equalsIgnoreCase('jar')}">
+			<j:if test="${depItem.getGroupId() != 'com.intellij'}">
+				<j:set var="groupId" value="${depItem.getGroupId()}"/>
+				<j:set var="artifactId" value="${depItem.getArtifactId()}"/>
+				<j:set var="version" value="${depItem.getVersion()}"/>
+				<copy overwrite="yes" 
+					file="${maven.repo.local}/${groupId}/jars/${artifactId}-${version}.jar"
+        				tofile="target/plugin/axis2-idea-plugin/lib/${artifactId}-${version}.jar"/>
+				<j:remove var="groupId"/>
+				<j:remove var="artifactId"/>
+				<j:remove var="version"/>
+			</j:if>
+		</j:if>
+	</j:forEach>
+
+
+       <zip destfile="target/axis2-idea-plugin.zip"
+       		basedir="target/plugin"/>
+        
+
+	<ant:delete dir="target/plugin"/>
+
+    </postGoal>
+</project>
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/META-INF/plugin.xml b/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/META-INF/plugin.xml
new file mode 100644
index 0000000..fe18cd9
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/META-INF/plugin.xml
@@ -0,0 +1,61 @@
+<!DOCTYPE idea-plugin PUBLIC "Plugin/DTD" "http://plugins.intellij.net/plugin.dtd">
+<!--<idea-plugin>-->
+<idea-plugin url="http://www.apache.org/~deepal">
+
+    <!-- Plugin name -->
+    <name>Axis2 IDEA tools</name>
+
+    <!-- Description -->
+    <description>Service Archive creation and Codegenaration</description>
+
+    <!-- Plugin version -->
+    <version>1.0</version>
+
+    <!-- Plugin's vendor -->
+    <!--  <vendor logo="/general/ijLogo.png">IntelliJ</vendor>-->
+    <vendor email="deepal@apache.org">Deepal Jayasinghe</vendor>
+
+    <!-- the IDEA build number which works with plugin -->
+    <idea-version since-build="2000"/>
+
+    <!-- Plugin's application components -->
+    <application-components>
+        <component>
+            <!-- Component's implementation class -->
+            <implementation-class>org.apache.ideaplugin.plugin.Axis2IdeaPlugin
+            </implementation-class>
+
+            <!-- Component's interface class -->
+            <interface-class>org.apache.ideaplugin.plugin.Axis2IdeaPlugin</interface-class>
+        </component>
+    </application-components>
+    <!-- Component's actions -->
+    <actions>
+        <!-- We use "PluginName.ComponentName.ActionName" notation for "id" to avoid conflicts -->
+        <action id="ActionsSample.ActionsPlugin.ServiceArchiveCreator"
+                class="org.apache.ideaplugin.plugin.Axis2PluginAction"
+                text="Axis2 plugins" description="Service creation and codegeneration">
+            <keyboard-shortcut first-keystroke="alt W" second-keystroke="C" keymap="$default"/>
+            <mouse-shortcut keystroke="ctrl alt button2" keymap="$default"/>
+        </action>
+
+        <!--    <group id="Actions.ActionsPlugin.SampleGroup" text="S_ample" description="Sample group">-->
+        <group id="Actions.ActionsPlugin.SampleGroup" text="Axis2" description="Axis2 Group">
+            <reference id="ActionsSample.ActionsPlugin.ServiceArchiveCreator"/>
+            <separator/>
+            <add-to-group group-id="MainMenu" anchor="last"/>
+            <add-to-group group-id="MainToolBar" anchor="before" relative-to-action="HelpTopics"/>
+        </group>
+
+        <!--the group below contains only the "Hello World" action defined above -->
+        <group>
+            <reference id="ActionsSample.ActionsPlugin.ServiceArchiveCreator"/>
+            <!--the group is added to the editor popup menu-->
+            <add-to-group group-id="EditorPopupMenu" anchor="after"
+                          relative-to-action="CutCopyPasteGroup"/>
+        </group>
+
+    </actions>
+
+</idea-plugin>
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/asf-feather.gif b/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/asf-feather.gif
new file mode 100644
index 0000000..a3a4130
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/asf-feather.gif
Binary files differ
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/asf-feather.png b/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/asf-feather.png
new file mode 100644
index 0000000..0d5b22f
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/asf-feather.png
Binary files differ
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/icon.png b/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/icon.png
new file mode 100644
index 0000000..28f5f33
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/plugin/icons/icon.png
Binary files differ
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/pom.xml b/rampart_1_1/modules/tool/axis2-idea-plugin/pom.xml
new file mode 100644
index 0000000..8228e61
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/pom.xml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <parent>

+    <groupId>org.apache.axis2.maven2</groupId>

+    <artifactId>axis2-maven-tools</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+  </parent>

+  <modelVersion>4.0.0</modelVersion>

+  <artifactId>axis2-idea-plugin</artifactId>

+  <packaging>maven-plugin</packaging>

+  <name>Axis 2 Intellij IDEA Plugin</name>

+  <description>

+    A Intellij IDEA plugin for Service Archive creation and Code Generation

+  </description>

+	<repositories>

+		<repository>

+			<id>repo1</id>

+			<name>maven repository</name>

+			<url>http://repo1.maven.org/maven2/</url>

+		</repository>

+		<repository>

+			<id>ibiblio</id>

+			<name>ibiblio repository</name>

+			<url>http://ibiblio.org/maven/</url>

+			<layout>legacy</layout>

+		</repository>

+		<repository>

+			<id>apache-m1</id>

+			<name>apache m1-ibiblio-rsync repository</name>

+			<url>http://people.apache.org/repo/m1-ibiblio-rsync-repository/</url>

+			<layout>legacy</layout>

+		</repository>

+		<repository>

+			<snapshots>

+				<enabled>true</enabled>

+			</snapshots>

+			<id>apache-people-repo</id>

+			<name>apache people maven repository</name>

+			<url>http://people.apache.org/repository/</url>

+			<layout>legacy</layout>

+		</repository>

+		<repository>

+			<snapshots>

+				<enabled>true</enabled>

+			</snapshots>

+			<id>ws-zones</id>

+			<name>ws.zones maven repository</name>

+			<url>http://ws.zones.apache.org/repository/</url>

+			<layout>legacy</layout>

+		</repository>

+	</repositories>

+  <dependencies>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-plugin-api</artifactId>

+      <version>2.0.4</version>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-project</artifactId>

+      <version>2.0.4</version>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-archiver</artifactId>

+      <version>2.0.1</version>

+    </dependency>

+    <dependency>

+      <groupId>org.codehaus.plexus</groupId>

+      <artifactId>plexus-utils</artifactId>

+      <version>1.0.5</version>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-artifact</artifactId>

+      <version>2.0</version>

+    </dependency>

+    <dependency>

+      <groupId>axis2</groupId>

+      <artifactId>axis2-codegen</artifactId>

+      <version>1.1.0.1-SNAPSHOT</version>

+    </dependency>

+    <dependency>

+      <groupId>axis2</groupId>

+      <artifactId>axis2-kernel</artifactId>

+      <version>1.1.0.1-SNAPSHOT</version>

+    </dependency>

+    <dependency>

+      <groupId>axis2</groupId>

+      <artifactId>axis2-adb</artifactId>

+      <version>1.1.0.1-SNAPSHOT</version>

+    </dependency>

+    <dependency>

+      <groupId>axis2</groupId>

+      <artifactId>axis2-adb-codegen</artifactId>

+      <version>1.1.0.1-SNAPSHOT</version>

+    </dependency>

+    <dependency>

+      <groupId>axis2</groupId>

+      <artifactId>axis2-java2wsdl</artifactId>

+      <version>1.1.0.1-SNAPSHOT</version>

+    </dependency>

+		<dependency>

+			<groupId>org.apache.ws.commons.axiom</groupId>

+			<artifactId>axiom-api</artifactId>

+			<version>1.2</version>

+		</dependency>

+		<dependency>

+			<groupId>org.apache.ws.commons.axiom</groupId>

+			<artifactId>axiom-impl</artifactId>

+			<version>1.2</version>

+		</dependency>

+		<dependency>

+			<groupId>woodstox</groupId>

+			<artifactId>wstx</artifactId>

+			<version>asl-3.0.0</version>

+		</dependency>

+		<dependency>

+			<groupId>stax</groupId>

+			<artifactId>stax-api</artifactId>

+			<version>1.0.1</version>

+		</dependency>

+		<dependency>

+			<groupId>javax.mail</groupId>

+			<artifactId>mail</artifactId>

+			<version>1.4</version>

+		</dependency>

+		<dependency>

+			<groupId>javax.activation</groupId>

+			<artifactId>activation</artifactId>

+			<version>1.1</version>

+		</dependency>

+        <dependency>

+            <groupId>com.intellij</groupId>

+            <artifactId>openapi</artifactId>

+

+            <version>5.0</version>

+        </dependency>

+        <dependency>

+            <groupId>com.intellij</groupId>

+            <artifactId>extensions</artifactId>

+            <version>5.0</version>

+        </dependency>

+		<dependency>

+			<groupId>wsdl4j</groupId>

+			<artifactId>wsdl4j</artifactId>

+			<version>1.5.2</version>

+		</dependency>

+		<dependency>

+		  <groupId>ant</groupId>

+		  <artifactId>ant</artifactId>

+		  <version>1.6.2</version>

+		</dependency>

+  </dependencies>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/project.xml b/rampart_1_1/modules/tool/axis2-idea-plugin/project.xml
new file mode 100644
index 0000000..1fbb8b6
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/project.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../../etc/project.xml</extend>
+
+    <name>Apache Axis 2 Intellij IDEA Plugin</name>
+    <id>axis2-idea-plugin</id>
+    <groupId>axis2-tools</groupId>
+    <description>A Intellij IDEA plugin for Service Archive creation and Code Generation
+    </description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>${axiom.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>ant</groupId>
+            <artifactId>ant</artifactId>
+            <version>${ant.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+        <!-- external JARs -->
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons.logging.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>${stax.impl.groupid}</groupId>
+            <artifactId>${stax.impl.artifactid}</artifactId>
+            <version>${stax.impl.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax.api.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.intellij</groupId>
+            <artifactId>openapi</artifactId>
+
+            <version>5.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.intellij</groupId>
+            <artifactId>extensions</artifactId>
+            <version>5.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>${pom.currentVersion}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-codegen</artifactId>
+            <version>${pom.currentVersion}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-xmlbeans</artifactId>
+            <version>${pom.currentVersion}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${neethi.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb-codegen</artifactId>
+            <version>${pom.currentVersion}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-java2wsdl</artifactId>
+            <version>${pom.currentVersion}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+
+        </dependency>
+
+        <dependency>
+            <groupId>xmlbeans</groupId>
+            <artifactId>xbean</artifactId>
+            <version>${xbean.version}</version>
+            <type>jar</type>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+
+        <!--added this to support to keep WSDL information in AxisService-->
+        <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${XmlSchema.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>${activation.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+        <!--for java2wsdl generation we use JAM , so there should be a dependency on the annogen jar or-->
+        <!--XML Beans-->
+        <dependency>
+            <groupId>annogen</groupId>
+            <artifactId>annogen</artifactId>
+            <version>${annogen.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <!-- Added this to support WS Policy in Axis2 -->
+    </dependencies>
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+            </resource>
+        </resources>
+    </build>
+    <reports/>
+</project>
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/bean/CodegenBean.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/bean/CodegenBean.java
new file mode 100644
index 0000000..648ad3d
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/bean/CodegenBean.java
@@ -0,0 +1,514 @@
+package org.apache.axis2.tools.bean;
+
+import com.intellij.openapi.module.Module;
+import com.intellij.openapi.module.ModuleManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.ModuleRootManager;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;
+
+
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.*;
+
+/*
+* Copyright 2004,2005 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.
+*
+*
+*/
+
+public class CodegenBean {
+
+    private String WSDLFileName = null;
+    private String output = ".";
+    private String packageName = URLProcessor.DEFAULT_PACKAGE;
+    private String language = "java";
+
+    private boolean asyncOnly = false;
+    private boolean syncOnly = false;
+    private boolean serverSide = false;
+    private boolean testcase = true;
+    private boolean isServerXML;
+    private boolean isGenerateAll;
+    private boolean isTestCase;
+    private String serviceName;
+    private String portName;
+    private String databindingName;
+
+    public void setNamespace2packageList(String namespace2packageList) {
+        this.namespace2packageList = namespace2packageList;
+    }
+
+    private String namespace2packageList;
+
+    private boolean defaultClient = true;
+
+    Project project;
+
+    public boolean isServerSideInterface() {
+        return isServerSideInterface;
+    }
+
+    public void setServerSideInterface(boolean serverSideInterface) {
+        isServerSideInterface = serverSideInterface;
+    }
+
+    private boolean isServerSideInterface = true;
+
+
+    public boolean isDefaultClient() {
+        return defaultClient;
+    }
+
+    public void setDefaultClient(boolean defaultClient) {
+        this.defaultClient = defaultClient;
+    }
+
+    public boolean isServerXML() {
+        return isServerXML;
+    }
+
+    public void setServerXML(boolean serverXML) {
+        isServerXML = serverXML;
+    }
+
+    public boolean isGenerateAll() {
+        return isGenerateAll;
+    }
+
+    public void setGenerateAll(boolean generateAll) {
+        isGenerateAll = generateAll;
+    }
+
+    public boolean isTestCase() {
+        return isTestCase;
+    }
+
+    public void setTestCase(boolean testCase) {
+        isTestCase = testCase;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getPortName() {
+        return portName;
+    }
+
+    public void setPortName(String portName) {
+        this.portName = portName;
+    }
+
+    public String getDatabindingName() {
+        return databindingName;
+    }
+
+    public void setDatabindingName(String databindingName) {
+        this.databindingName = databindingName;
+    }
+
+    /**
+     * Maps a string containing the name of a language to a constant defined in CommandLineOptionConstants.LanguageNames
+     *
+     * @param UILangValue a string containg a language, e.g. "java", "cs", "cpp" or "vb"
+     * @return a normalized string constant
+     */
+    private String mapLanguagesWithCombo(String UILangValue) {
+        return UILangValue;
+    }
+
+    /**
+     * Creates a list of parameters for the code generator based on the decisions made by the user on the OptionsPage
+     * (page2). For each setting, there is a Command-Line option for the Axis2 code generator.
+     *
+     * @return a Map with keys from CommandLineOptionConstants with the values entered by the user on the Options Page.
+     */
+    public Map fillOptionMap() {
+        Map optionMap = new HashMap();
+        //WSDL file name
+        optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION, new CommandLineOption(
+                CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION, getStringArray(WSDLFileName)));
+
+        //Async only
+        if (asyncOnly) {
+            optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION, new CommandLineOption(
+                    CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION, new String[0]));
+        }
+        //sync only
+        if (syncOnly) {
+            optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION, new CommandLineOption(
+                    CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION, new String[0]));
+        }
+        //serverside
+        if (serverSide) {
+            optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION, new CommandLineOption(
+                    CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION, new String[0]));
+            //server xml
+            if (isServerXML) {
+                optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION, new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION, new String[0]));
+            }
+            if (isGenerateAll) {
+                optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION, new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION, new String[0]));
+            }
+        }
+        //test case
+        if (isTestCase) {
+            optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION, new CommandLineOption(
+                    CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION, new String[0]));
+        }
+        //package name
+        optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION, new CommandLineOption(
+                CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION, getStringArray(packageName)));
+        //selected language
+        optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.STUB_LANGUAGE_OPTION, new CommandLineOption(
+                CommandLineOptionConstants.WSDL2JavaConstants.STUB_LANGUAGE_OPTION, getStringArray(mapLanguagesWithCombo(language))));
+        //output location
+        optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION, new CommandLineOption(
+                CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION, getStringArray(output)));
+
+        //databinding
+        optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION, new CommandLineOption(
+                CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION, getStringArray(databindingName)));
+
+        //port name
+        if (portName != null) {
+            optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.PORT_NAME_OPTION, new CommandLineOption(
+                    CommandLineOptionConstants.WSDL2JavaConstants.PORT_NAME_OPTION, getStringArray(portName)));
+        }
+        //service name
+        if (serviceName != null) {
+            optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.SERVICE_NAME_OPTION, new CommandLineOption(
+                    CommandLineOptionConstants.WSDL2JavaConstants.SERVICE_NAME_OPTION, getStringArray(serviceName)));
+        }
+        //server side interface  mapping
+       if (isServerSideInterface){
+	       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION, new CommandLineOption(
+	    		   CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION, new String[0]));
+       }
+
+        //ns2pkg mapping
+       if (namespace2packageList!= null){
+	       optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION, new CommandLineOption(
+	    		   CommandLineOptionConstants.WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION, getStringArray(namespace2packageList)));
+       }
+        return optionMap;
+
+    }
+
+    public String getBaseUri(String wsdlURI) {
+
+        try {
+            URL url;
+            if (wsdlURI.indexOf("://") == -1) {
+                url = new URL("file", "", wsdlURI);
+            } else {
+                url = new URL(wsdlURI);
+            }
+
+
+            String baseUri;
+            if ("file".equals(url.getProtocol())) {
+                baseUri = new File(url.getFile()).getParentFile().toURL().toExternalForm();
+            } else {
+                baseUri = url.toExternalForm().substring(0,
+                        url.toExternalForm().lastIndexOf("/")
+                );
+            }
+
+
+            return baseUri;
+        } catch (MalformedURLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Reads the WSDL Object Model from the given location.
+     *
+     * @param wsdlURI the filesystem location (full path) of the WSDL file to read in.
+     * @return the WSDLDescription object containing the WSDL Object Model of the given WSDL file
+     * @throws IOException on errors reading the WSDL file
+     */
+    public AxisService getAxisService(String wsdlURI) throws Exception {
+
+        URL url;
+        if (wsdlURI.indexOf("://") == -1) {
+            url = new URL("file", "", wsdlURI);
+        } else {
+            url = new URL(wsdlURI);
+        }
+
+
+        WSDL11ToAxisServiceBuilder builder =
+                new WSDL11ToAxisServiceBuilder(url.openConnection().getInputStream());
+
+        builder.setBaseUri(getBaseUri(wsdlURI));
+        return builder.populateService();
+    }
+
+    /**
+     * Converts a single String into a String Array
+     *
+     * @param value a single string
+     * @return an array containing only one element
+     */
+    private String[] getStringArray(String value) {
+        String[] values = new String[1];
+        values[0] = value;
+        return values;
+    }
+
+    public String getWSDLFileName() {
+        return WSDLFileName;
+    }
+
+    public void setWSDLFileName(String WSDLFileName) {
+        this.WSDLFileName = WSDLFileName;
+    }
+
+    public boolean isSyncOnly() {
+        return syncOnly;
+    }
+
+    public void setSyncOnly(boolean syncOnly) {
+        this.syncOnly = syncOnly;
+    }
+
+    public boolean isAsyncOnly() {
+        return asyncOnly;
+    }
+
+    public void setAsyncOnly(boolean asyncOnly) {
+        this.asyncOnly = asyncOnly;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    public String getPackageName() {
+        return packageName;
+    }
+
+    public void setPackageName(String packageName) {
+        this.packageName = packageName;
+    }
+
+    public String getOutput() {
+        return output;
+    }
+
+    public void setOutput(String output) {
+        this.output = output;
+    }
+
+    public boolean isServerSide() {
+        return serverSide;
+    }
+
+    public void setServerSide(boolean serverSide) {
+        this.serverSide = serverSide;
+    }
+
+    public boolean isTestcase() {
+        return testcase;
+    }
+
+    public void setTestcase(boolean testcase) {
+        this.testcase = testcase;
+    }
+
+    public void generate() throws Exception {
+
+
+        ClassLoader tcl = Thread.currentThread().getContextClassLoader();
+        try {
+            if (!"xmlbeans".equals(getDatabindingName())) {
+                Thread.currentThread().setContextClassLoader(Class.class.getClassLoader());
+            }
+            CodeGenConfiguration codegenConfig = new CodeGenConfiguration(getAxisService(WSDLFileName), fillOptionMap());
+            //set the baseURI
+            codegenConfig.setBaseURI(getBaseUri(WSDLFileName));
+            new CodeGenerationEngine(codegenConfig).generate();
+        } catch (Throwable e) {
+            try {
+                CodeGenConfiguration codegenConfig = new CodeGenConfiguration(getAxisService(WSDLFileName), fillOptionMap());
+                //set the baseURI
+                codegenConfig.setBaseURI(getBaseUri(WSDLFileName));
+                new CodeGenerationEngine(codegenConfig).generate();
+            } catch (Throwable e1) {
+                throw new Exception("Code generation failed due to " + e.getLocalizedMessage());
+            }
+        } finally {
+            if (!"xmlbeans".equals(getDatabindingName())) {
+                Thread.currentThread().setContextClassLoader(tcl);
+            }
+
+        }
+    }
+
+    private Definition wsdlDefinition = null;
+
+    public void readWSDL() throws WSDLException {
+
+
+            WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
+            wsdlDefinition = reader.readWSDL(WSDLFileName);
+        
+    }
+
+    //get the default package derived by the targetNamespace
+
+    public String packageFromTargetNamespace() {
+        return URLProcessor.makePackageName(wsdlDefinition.getTargetNamespace());
+
+    }
+
+    /**
+     * Returns a list of service names
+     * the names are QNames
+     */
+    public List getServiceList() {
+        List returnList = new ArrayList();
+        Service service = null;
+        Map serviceMap = wsdlDefinition.getServices();
+        if (serviceMap != null && !serviceMap.isEmpty()) {
+            Iterator serviceIterator = serviceMap.values().iterator();
+            while (serviceIterator.hasNext()) {
+                service = (Service) serviceIterator.next();
+                returnList.add(service.getQName());
+            }
+        }
+
+        return returnList;
+    }
+
+    /**
+     * Returns a list of ports for a particular service
+     * the names are QNames
+     */
+    public List getPortNameList(QName serviceName) {
+        List returnList = new ArrayList();
+        Service service = wsdlDefinition.getService(serviceName);
+        Port port = null;
+        if (service != null) {
+            Map portMap = service.getPorts();
+            if (portMap != null && !portMap.isEmpty()) {
+                Iterator portIterator = portMap.values().iterator();
+                while (portIterator.hasNext()) {
+                    port = (Port) portIterator.next();
+                    returnList.add(port.getName());
+                }
+            }
+
+        }
+
+        return returnList;
+    }
+
+
+    public Project getActiveProject() {
+        return project;
+
+    }
+
+    public void setProject(Project project) {
+        this.project = project;
+        System.out.println();
+    }
+
+
+    public File getTemp() {
+
+        String time = Calendar.getInstance().getTime().toString().replace(':', '-');
+        File temp = new File(getActiveProject().getProjectFile().getParent().getPath() + File.separator + "temp-" + time);
+        return temp;
+    }
+
+    public Module[] getModules() {
+
+        Project project = getActiveProject();
+        if (project != null) {
+            return ModuleManager.getInstance(project).getModules();
+        }
+        return null;
+    }
+
+    public String[] getModuleSrc(String name) {
+        Project project = getActiveProject();
+        if (project != null) {
+            Module module = ModuleManager.getInstance(project).findModuleByName(name);
+            ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module);
+            VirtualFile virtualFiles[] = moduleRootManager.getSourceRoots();
+            String src[] = new String[virtualFiles.length];
+            for (int count = 0; count < src.length; count++) {
+                src[count] = virtualFiles[count].getPresentableUrl();
+            }
+            return src;
+        }
+        return null;
+    }
+
+    /**
+	 * Returns the namespace map from definition
+	 * @return
+	 */
+	public Collection getDefinitionNamespaceMap(){
+
+        Map namespaces = wsdlDefinition.getNamespaces();
+        ArrayList list = new ArrayList();
+        String target = wsdlDefinition.getTargetNamespace();
+        Iterator iterator = namespaces.values().iterator();
+        while (iterator.hasNext())
+        {
+            String namespace = (String)iterator.next();
+            if (!(namespace.equalsIgnoreCase(target)))
+                list.add(namespace);
+        }
+        return list;
+	}
+
+
+}
+
+
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/bean/SrcCompiler.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/bean/SrcCompiler.java
new file mode 100644
index 0000000..113a8da
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/bean/SrcCompiler.java
@@ -0,0 +1,70 @@
+package org.apache.axis2.tools.bean;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Javac;
+import org.apache.tools.ant.types.Path;
+
+import java.io.File;
+import java.net.URL;
+
+/*
+* Copyright 2004,2005 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.
+*
+*
+*/
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: keith chapman
+ * Date: 28/09/2006
+ * Time: 16:35:06
+ */
+public class SrcCompiler extends Javac {
+
+    Project project;
+
+    public SrcCompiler() {
+        project = new Project();
+        this.setProject(project);
+        project.init();
+
+    }
+
+    public void compileSource(String tempPath) {
+
+        Path path;
+        File destDir = new File(tempPath + File.separator + "classes");
+        destDir.mkdir();
+
+        Path srcPath = new Path(project, tempPath + File.separator + "src");
+        this.setSrcdir(srcPath);
+        this.setDestdir(destDir);
+        this.setIncludes("**" + File.separator + "*.java, *.java");
+        URL url = getClass().getResource("/icons");
+        File lib = new File(url.getPath() + File.separator + ".." + File.separator + ".." + File.separator + "lib");
+        File[] files;
+        files = lib.listFiles();
+
+        Path classpath = new Path(project);
+        for (int count = 0; count < files.length; count++) {
+            path = new Path(project, files[count].getAbsolutePath());
+            classpath.add(path);
+        }
+        this.setClasspath(classpath);
+       this.setFork(true);
+        this.perform();
+
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ActionsPlugin.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ActionsPlugin.java
new file mode 100644
index 0000000..7e7beb8
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ActionsPlugin.java
@@ -0,0 +1,52 @@
+/*

+* Copyright 2004,2005 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.axis2.tools.idea;

+

+import com.intellij.openapi.components.ApplicationComponent;

+

+/**

+ * <h3>SampleApplicationPlugin</h3>

+ * <p/>

+ * Application level plugin sample showing IDEA <b>OpenAPI</b> basics.<br>

+ * Implements <code>ApplicationComponent</code> interface.

+ */

+public class ActionsPlugin implements ApplicationComponent {

+

+    /**

+     * Method is called after plugin is already created and configured. Plugin can start to communicate with

+     * other plugins only in this method.

+     */

+    public void initComponent() {

+

+    }

+

+    /**

+     * This method is called on plugin disposal.

+     */

+    public void disposeComponent() {

+    }

+

+    /**

+     * Returns the name of component

+     *

+     * @return String representing component name. Use PluginName.ComponentName notation

+     *         to avoid conflicts.

+     */

+    public String getComponentName() {

+        return "ActionsSample.ActionsPlugin";

+    }

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/BottomPanel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/BottomPanel.java
new file mode 100644
index 0000000..aad8b5e
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/BottomPanel.java
@@ -0,0 +1,320 @@
+package org.apache.axis2.tools.idea;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.StringWriter;
+
+/*
+* Copyright 2004,2005 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 : Deepal Jayasinghe
+ * Date: Jul 20, 2005
+ * Time: 3:38:12 PM
+ */
+public class BottomPanel extends JPanel implements ActionListener {
+    public static JButton btnBack;
+    public static JButton btnNext;
+    public static JButton btnFinish;
+    public static JButton btnCancel;
+
+    private Java2CodeFrame java2CodeFrame;
+
+    public BottomPanel(Java2CodeFrame java2CodeFrame) {
+        this.java2CodeFrame = java2CodeFrame;
+        setFont(new Font("Helvetica", Font.PLAIN, 12));
+        BottomLayout customLayout = new BottomLayout();
+
+        setLayout(customLayout);
+
+        btnBack = new JButton("< Back");
+        btnBack.setEnabled(true);
+        btnBack.addActionListener(this);
+        add(btnBack);
+
+        btnNext = new JButton("Next >");
+        btnNext.addActionListener(this);
+        add(btnNext);
+
+        btnFinish = new JButton("Finish");
+        btnFinish.addActionListener(this);
+        add(btnFinish);
+
+        btnCancel = new JButton("Cancel");
+        btnCancel.addActionListener(this);
+        add(btnCancel);
+
+        setSize(getPreferredSize());
+
+    }
+
+    public static void setEnable(boolean back,boolean next, boolean finish, boolean cancel) {
+        btnBack.setEnabled(back);
+        btnNext.setEnabled(next);
+        btnFinish.setEnabled(finish);
+        btnCancel.setEnabled(cancel);
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        Object obj = e.getSource();
+        if (obj == btnBack) {
+            java2CodeFrame.backButtonImpl();
+        }
+        else if (obj == btnCancel) {
+            java2CodeFrame.dispose();
+            Thread.currentThread().setContextClassLoader(java2CodeFrame.getClassLoader());
+            return;
+        } else if (obj == btnFinish) {
+
+            File outputDir = new File(java2CodeFrame.outputpane.txtoutput.getText().trim());
+            if (java2CodeFrame.outputpane.radCustomLocation.isSelected() )
+            {
+                if (!outputDir.isDirectory())
+                {
+                JOptionPane.showMessageDialog(java2CodeFrame, "The Output Directory specified is invalid. Please provide a valid directory",
+                            "Error!", JOptionPane.ERROR_MESSAGE);
+                    java2CodeFrame.repaint();
+                    return;
+                }
+            }
+
+            String selected = java2CodeFrame.optionPane.buttonGroup.getSelection().getActionCommand();
+
+            if (selected.equalsIgnoreCase("radDefaultClient")) {
+                    File temp = java2CodeFrame.optionPane.setDefaultClientConfigurations();
+                    try {
+                        java2CodeFrame.generateDefaultClientCode(temp);
+                    } catch (Exception e1) {
+                        StringWriter writer = new StringWriter();
+                        JOptionPane.showMessageDialog(java2CodeFrame, "Code genaration failed!" + writer.toString(),
+                                "Axis2 code generation", JOptionPane.ERROR_MESSAGE);
+                        java2CodeFrame.dispose();
+                        return;
+                    }
+
+                    JOptionPane.showMessageDialog(java2CodeFrame, "Code generation successful!",
+                            "Axis2 code generation", JOptionPane.INFORMATION_MESSAGE);
+                    java2CodeFrame.dispose();
+                    return;
+
+                }
+
+           else if (selected.equalsIgnoreCase("radCustom")) {
+
+                String output = java2CodeFrame.outputpane.buttonGroup.getSelection().getActionCommand();
+
+                if (output.equalsIgnoreCase("radCurrentProject")) {
+
+                    File temp = java2CodeFrame.secondPanel.codegenBean.getTemp();
+                    java2CodeFrame.secondPanel.codegenBean.setOutput(temp.getAbsolutePath());
+                    try {
+                        java2CodeFrame.generatecode();
+                        java2CodeFrame.copyDirectory(new File(temp + File.separator + "src"), new File((String) java2CodeFrame.outputpane.cmbModuleSrc.getSelectedItem()));
+                        File src = new File(temp + File.separator + "resources");
+                        if (src.isDirectory())
+                        java2CodeFrame.copyDirectory(src, new File((String) java2CodeFrame.outputpane.cmbModuleSrc.getSelectedItem() + File.separator + ".." + File.separator + "resources"));
+
+                        java2CodeFrame.deleteDirectory(temp);
+                    } catch (Exception e1) {
+                    StringWriter writer = new StringWriter();
+                    JOptionPane.showMessageDialog(java2CodeFrame, "Code genaration failed!" + writer.toString(),
+                            "Axis2 code generation", JOptionPane.ERROR_MESSAGE);
+                    java2CodeFrame.dispose();
+                        return;
+                    }
+
+                }
+                else
+                {
+
+                try {
+
+                    java2CodeFrame.generatecode();
+
+                } catch (Exception e1) {
+                    StringWriter writer = new StringWriter();
+                    JOptionPane.showMessageDialog(java2CodeFrame, "Code genaration failed!" + writer.toString(),
+                            "Axis2 code generation", JOptionPane.ERROR_MESSAGE);
+                    java2CodeFrame.dispose();
+                    return;
+                }
+                }
+            } else if (selected.equalsIgnoreCase("radDefaultServer")) {
+
+                File temp = java2CodeFrame.optionPane.setDefaultServerConfigurations();
+                String output = java2CodeFrame.outputpane.buttonGroup.getSelection().getActionCommand();
+
+                if (output.equalsIgnoreCase("radCurrentProject")) {
+
+                    try {
+
+                        java2CodeFrame.generateDefaultServerCode(temp, (String) java2CodeFrame.outputpane.cmbModuleSrc.getSelectedItem());
+                    } catch (Exception e1) {
+                        StringWriter writer = new StringWriter();
+                        JOptionPane.showMessageDialog(java2CodeFrame, "Code genaration failed!" + writer.toString(),
+                                "Axis2 code generation", JOptionPane.ERROR_MESSAGE);
+                        java2CodeFrame.dispose();
+                        return;
+                    }
+
+
+                } else {
+                    String path = java2CodeFrame.outputpane.txtoutput.getText();
+                    File outputPath = new File(path);
+                    if (outputPath.exists()) {
+                        try {
+                            java2CodeFrame.generateDefaultServerCodeCustomLocation(path);
+                        } catch (Exception e1) {
+                            StringWriter writer = new StringWriter();
+                            JOptionPane.showMessageDialog(java2CodeFrame, "Code genaration failed!" + writer.toString(),
+                                    "Axis2 code generation", JOptionPane.ERROR_MESSAGE);
+                            java2CodeFrame.dispose();
+                            return;
+                        }
+
+                    } else {
+                        JOptionPane.showMessageDialog(java2CodeFrame, "Invalid file path!",
+                                "Error!!!", JOptionPane.INFORMATION_MESSAGE);
+                        return;
+                    }
+
+
+                }
+            } else if (selected.equalsIgnoreCase("radDefaultBoth")) {
+
+                File temp = java2CodeFrame.optionPane.setDefaultServerConfigurations();
+                String output = java2CodeFrame.outputpane.buttonGroup.getSelection().getActionCommand();
+
+                if (output.equalsIgnoreCase("radCurrentProject")) {
+                    try {
+
+                        java2CodeFrame.generateDefaultServerCode(temp, (String) java2CodeFrame.outputpane.cmbModuleSrc.getSelectedItem());
+                        File temp2 = java2CodeFrame.optionPane.setDefaultClientConfigurations();
+                        java2CodeFrame.generateDefaultClientCode(temp2);
+
+                    } catch (Exception e1) {
+                        StringWriter writer = new StringWriter();
+                        JOptionPane.showMessageDialog(java2CodeFrame, "Code genaration failed!" + writer.toString(),
+                                "Axis2 code generation", JOptionPane.ERROR_MESSAGE);
+                        java2CodeFrame.dispose();
+                        return;
+
+                    }
+
+                } else {
+                    String path = java2CodeFrame.outputpane.txtoutput.getText();
+                    File outputPath = new File(path);
+                    if (outputPath.exists()) {
+                        try {
+                            java2CodeFrame.generateDefaultServerCodeCustomLocation(path);
+                            File temp2 = java2CodeFrame.optionPane.setDefaultClientConfigurations();
+                            java2CodeFrame.generateDefaultClientCode(temp2);
+                        } catch (Exception e1) {
+                            StringWriter writer = new StringWriter();
+                            JOptionPane.showMessageDialog(java2CodeFrame, "Code genaration failed!" + writer.toString(),
+                                    "Axis2 code generation", JOptionPane.ERROR_MESSAGE);
+                            java2CodeFrame.dispose();
+                            return;
+                        }
+
+                    } else {
+                        JOptionPane.showMessageDialog(java2CodeFrame, "Invalid file path!",
+                                "Error!!!", JOptionPane.INFORMATION_MESSAGE);
+                        return;
+                    }
+
+
+                }
+            }
+
+            JOptionPane.showMessageDialog(java2CodeFrame, "Code generation successful!",
+                    "Axis2 code generation", JOptionPane.INFORMATION_MESSAGE);
+            java2CodeFrame.dispose();
+            return;
+
+        } else if (obj == btnNext) {
+
+                if (java2CodeFrame.optionPane.isVisible()) {
+
+                String selected = java2CodeFrame.optionPane.buttonGroup.getSelection().getActionCommand();
+
+
+                if (selected.equalsIgnoreCase("radDefaultServer") || selected.equalsIgnoreCase("radDefaultBoth")) {
+
+                    java2CodeFrame.increasePanelID();
+
+                }
+
+            }
+
+            java2CodeFrame.setPane();
+        }
+    }
+}
+
+class BottomLayout implements LayoutManager {
+
+    public BottomLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+    }
+
+    public void removeLayoutComponent(Component comp) {
+    }
+
+    public Dimension preferredLayoutSize(Container parent) {
+        Dimension dim = new Dimension(0, 0);
+
+        Insets insets = parent.getInsets();
+        dim.width = 541 + insets.left + insets.right;
+        dim.height = 60 + insets.top + insets.bottom;
+
+        return dim;
+    }
+
+    public Dimension minimumLayoutSize(Container parent) {
+        return new Dimension(0, 0);
+    }
+
+    public void layoutContainer(Container parent) {
+        Insets insets = parent.getInsets();
+
+        Component c;
+        c = parent.getComponent(0);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 152, insets.top + 10, 80, 24);
+        }
+        c = parent.getComponent(1);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 232, insets.top + 10, 80, 24);
+        }
+        c = parent.getComponent(2);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 312, insets.top + 10, 80, 24);
+        }
+        c = parent.getComponent(3);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 392, insets.top + 10, 80, 24);
+        }
+    }
+}
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/FirstPanel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/FirstPanel.java
new file mode 100644
index 0000000..404bff3
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/FirstPanel.java
@@ -0,0 +1,210 @@
+package org.apache.axis2.tools.idea;
+
+import org.apache.axis2.tools.bean.CodegenBean;
+
+import javax.swing.*;
+import javax.swing.filechooser.FileFilter;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.File;
+
+/*
+* Copyright 2004,2005 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 : Deepal Jayasinghe
+ * Date: Jul 20, 2005
+ * Time: 3:35:47 PM
+ */
+public class FirstPanel extends JPanel implements ActionListener, MouseListener {
+
+    JLabel lblWSDL;
+    JTextField txtWSDL;
+    JButton btnBrowse;
+    final JFileChooser fc = new JFileChooser();
+    private CodegenBean codegenBean;
+
+    public FirstPanel(CodegenBean codegenBean) {
+        this.codegenBean = codegenBean;
+        FirstPanelLayout customLayout = new FirstPanelLayout();
+        setLayout(customLayout);
+
+        setFont(new Font("Helvetica", Font.PLAIN, 12));
+        lblWSDL = new JLabel("WSDL File");
+        add(lblWSDL);
+
+        txtWSDL = new JTextField("");
+        add(txtWSDL);
+        txtWSDL.addActionListener(this);
+        txtWSDL.addMouseListener(this);
+
+        btnBrowse = new JButton("Browse...");
+        add(btnBrowse);
+        btnBrowse.addActionListener(this);
+
+
+        Dimension dim = new Dimension(450, 600);
+        setSize(dim);
+        fc.setFileFilter(new WSDLFileFilter());
+
+
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        Object obj = e.getSource();
+        if (obj == btnBrowse) {
+
+            int returnVal = fc.showOpenDialog(this);
+            if (returnVal == JFileChooser.APPROVE_OPTION) {
+                File file = fc.getSelectedFile();
+                txtWSDL.setText(file.getAbsolutePath());
+                BottomPanel.setEnable(false,true, false, true);
+                codegenBean.setWSDLFileName(file.getAbsolutePath());
+            } 
+        } else if (obj == txtWSDL) {
+            if (txtWSDL.getText() != null && !txtWSDL.getText().trim().equals("")) {
+                BottomPanel.setEnable(false,true, false, true);
+                codegenBean.setWSDLFileName(txtWSDL.getText().trim());
+            }
+
+        }
+
+    }
+
+    public void mouseClicked(MouseEvent e) {
+        Object obj = e.getSource();
+        if (obj == txtWSDL) {
+            if (txtWSDL.getText() != null && !txtWSDL.getText().trim().equals("")) {
+                BottomPanel.setEnable(false,true, false, true);
+                codegenBean.setWSDLFileName(txtWSDL.getText().trim());
+            }
+        }
+    }
+
+    public void mouseEntered(MouseEvent e) {
+    }
+
+    public void mouseExited(MouseEvent e) {
+        Object obj = e.getSource();
+        if (obj == txtWSDL) {
+            if (txtWSDL.getText() != null && !txtWSDL.getText().trim().equals("")) {
+                BottomPanel.setEnable(false,true, false, true);
+                codegenBean.setWSDLFileName(txtWSDL.getText().trim());
+            }
+        }
+    }
+
+    public void mousePressed(MouseEvent e) {
+        Object obj = e.getSource();
+        if (obj == txtWSDL) {
+            if (txtWSDL.getText() != null && !txtWSDL.getText().trim().equals("")) {
+                BottomPanel.setEnable(false,true, false, true);
+                codegenBean.setWSDLFileName(txtWSDL.getText().trim());
+            }
+        }
+    }
+
+    public void mouseReleased(MouseEvent e) {
+        Object obj = e.getSource();
+        if (obj == txtWSDL) {
+            if (txtWSDL.getText() != null && !txtWSDL.getText().trim().equals("")) {
+                BottomPanel.setEnable(false,true, false, true);
+                codegenBean.setWSDLFileName(txtWSDL.getText().trim());
+            }
+        }
+    }
+}
+
+class WSDLFileFilter extends FileFilter {
+
+    public boolean accept(File f) {
+        if (f.isDirectory()) {
+            return true;
+        }
+        String extension = getExtension(f);
+        if (extension != null) {
+            return extension.equals("wsdl");
+        }
+
+        return false;
+
+    }
+
+    public String getDescription() {
+        return ".wsdl";
+    }
+
+    private String getExtension(File f) {
+        String ext = null;
+        String s = f.getName();
+        int i = s.lastIndexOf('.');
+
+        if (i > 0 && i < s.length() - 1) {
+            ext = s.substring(i + 1).toLowerCase();
+        }
+        return ext;
+    }
+
+}
+
+class FirstPanelLayout implements LayoutManager {
+
+    public FirstPanelLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+    }
+
+    public void removeLayoutComponent(Component comp) {
+    }
+
+    public Dimension preferredLayoutSize(Container parent) {
+        Dimension dim = new Dimension(0, 0);
+
+        Insets insets = parent.getInsets();
+        dim.width = 541 + insets.left + insets.right;
+        dim.height = 600 + insets.top + insets.bottom;
+
+        return dim;
+    }
+
+    public Dimension minimumLayoutSize(Container parent) {
+        return new Dimension(0, 0);
+    }
+
+    public void layoutContainer(Container parent) {
+        Insets insets = parent.getInsets();
+
+        Component c;
+        c = parent.getComponent(0);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 8, 72, 24);
+        }
+        c = parent.getComponent(1);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 88, insets.top + 8, 350, 24);
+        }
+        c = parent.getComponent(2);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 448, insets.top + 8, 90, 24);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ImagePanel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ImagePanel.java
new file mode 100644
index 0000000..e28cc56
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ImagePanel.java
@@ -0,0 +1,108 @@
+package org.apache.axis2.tools.idea;

+

+import javax.swing.*;

+import java.awt.*;

+

+/*

+* Copyright 2004,2005 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 : Deepal Jayasinghe

+ * Date: Jul 20, 2005

+ * Time: 9:33:14 PM

+ */

+public class ImagePanel extends JPanel {

+    JLabel lblImage;

+    JLabel labTop;

+    JLabel lblBottom;

+    ImageIcon apachelogo;

+

+    public ImagePanel() {

+        ImageLayout customLayout = new ImageLayout();

+        setLayout(customLayout);

+

+        java.net.URL resource = ImagePanel.class.getResource("/icons/asf-feather.png");

+        apachelogo = new ImageIcon(resource);

+

+        lblImage = new JLabel(apachelogo);

+        add(lblImage);

+        lblImage.setBackground(Color.white);

+

+        labTop = new JLabel();

+        labTop.setBackground(Color.white);

+        add(labTop);

+        labTop.setFont(new Font("Helvetica", Font.BOLD, 12));

+

+        lblBottom = new JLabel();

+        add(lblBottom);

+        lblBottom.setBackground(Color.white);

+        lblBottom.setFont(new Font("Helvetica", Font.PLAIN, 10));

+

+        setSize(getPreferredSize());

+        this.setBackground(Color.white);

+    }

+

+    public void setCaptions(String lbl1, String lbl2) {

+        labTop.setText(lbl1);

+        lblBottom.setText(lbl2);

+    }

+}

+

+class ImageLayout implements LayoutManager {

+

+    public ImageLayout() {

+    }

+

+    public void addLayoutComponent(String name, Component comp) {

+    }

+

+    public void removeLayoutComponent(Component comp) {

+    }

+

+    public Dimension preferredLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+

+        Insets insets = parent.getInsets();

+        dim.width = 535 + insets.left + insets.right;

+        dim.height = 77 + insets.top + insets.bottom;

+

+        return dim;

+    }

+

+    public Dimension minimumLayoutSize(Container parent) {

+        return new Dimension(0, 0);

+    }

+

+    public void layoutContainer(Container parent) {

+        Insets insets = parent.getInsets();

+

+        Component c;

+        c = parent.getComponent(0);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 368, insets.top, 168, 80);

+        }

+        c = parent.getComponent(1);

+        if (c.isVisible()) {

+            c.setBounds(insets.left, insets.top, 368, 40);

+        }

+        c = parent.getComponent(2);

+        if (c.isVisible()) {

+            c.setBounds(insets.left, insets.top + 40, 368, 40);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/Java2CodeFrame.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/Java2CodeFrame.java
new file mode 100644
index 0000000..7c7e6f1
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/Java2CodeFrame.java
@@ -0,0 +1,451 @@
+package org.apache.axis2.tools.idea;
+
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.OrderRootType;
+import com.intellij.openapi.roots.libraries.Library;
+import com.intellij.openapi.roots.libraries.LibraryTable;
+import com.intellij.openapi.vfs.JarFileSystem;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.openapi.vfs.VirtualFileManager;
+import org.apache.axis2.tools.bean.CodegenBean;
+import org.apache.axis2.tools.bean.SrcCompiler;
+import org.apache.ideaplugin.bean.JarFileWriter;
+import org.apache.ideaplugin.frames.Axi2PluginPage;
+
+import javax.swing.*;
+import javax.wsdl.WSDLException;
+import java.awt.*;
+import java.io.*;
+
+/*
+* Copyright 2004,2005 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 : Deepal Jayasinghe
+ * Date: Jul 19, 2005
+ * Time: 2:26:15 PM
+ */
+public class Java2CodeFrame extends JFrame {
+    ImagePanel panel_3;
+    FirstPanel plMiddle;
+    BottomPanel lblBottom;
+    //    SecondPanel secondPanel;
+    SecondFrame secondPanel;
+    OutPutPane outputpane;
+    OptionPane optionPane;
+    private int panleID = 0;
+    private ClassLoader classLoader;
+
+    // To keep the value of wsdl wizzard
+    private CodegenBean codegenBean;
+
+    public Java2CodeFrame() {
+        windowLayout customLayout = new windowLayout(1);
+
+        setTitle("Axis2 Code Generation Wizard");
+
+
+        getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12));
+        getContentPane().setLayout(customLayout);
+
+        codegenBean = new CodegenBean();
+
+        panel_3 = new ImagePanel();
+        panel_3.setCaptions("  WSDL selection page"
+                , "  Welcome to the Axis2 code generation wizard. Select the WSDL file");
+
+        getContentPane().add(panel_3);
+
+        plMiddle = new FirstPanel(codegenBean);
+        getContentPane().add(plMiddle);
+
+        lblBottom = new BottomPanel(this);
+        BottomPanel.setEnable(false,false, false, true);
+        getContentPane().add(lblBottom);
+
+        optionPane = new OptionPane();
+        optionPane.setVisible(false);
+        getContentPane().add(optionPane);
+
+        secondPanel = new SecondFrame();
+        secondPanel.setVisible(false);
+        getContentPane().add(secondPanel);
+
+        outputpane = new OutPutPane(codegenBean);
+        outputpane.setVisible(false);
+        getContentPane().add(outputpane);
+
+        Dimension dim = new Dimension(450, 600);
+        setSize(dim);
+        setBounds(200, 200, dim.width, dim.height);
+    }
+
+    public void setProject(Project project) {
+        codegenBean.setProject(project);
+    }
+
+
+    public ClassLoader getClassLoader() {
+        return classLoader;
+    }
+
+    public void setClassLoader(ClassLoader classLoader) {
+        this.classLoader = classLoader;
+    }
+
+    public void generatecode() throws Exception {
+        secondPanel.fillBean();
+        codegenBean.generate();
+    }
+
+    public void generateDefaultServerCode(File temp, String output) throws Exception {
+
+
+        temp.mkdir();
+        try {
+            codegenBean.generate();
+            copyDirectory(new File(temp + File.separator + "src"), new File(output));
+            copyDirectory(new File(temp + File.separator + "resources"), new File(output + File.separator + ".." + File.separator + "resources"));
+
+        } catch (Exception e1) {
+            throw e1;
+        }
+        finally {
+
+            deleteDirectory(temp);
+        }
+    }
+
+    public void generateDefaultServerCodeCustomLocation(String output) throws Exception {
+
+
+        try {
+
+            codegenBean.setOutput(output);
+            codegenBean.generate();
+
+        } catch (Exception e1) {
+            throw e1;
+        }
+        
+    }
+
+    public void copyDirectory(File srcDir, File destDir) throws IOException {
+        if (srcDir.isDirectory()) {
+            if (!destDir.isDirectory()) {
+                destDir.mkdir();
+            }
+            String[] children = srcDir.list();
+            for (int count = 0; count < children.length; count++) {
+                copyDirectory(new File(srcDir, children[count]), new File(destDir, children[count]));
+            }
+        } else {
+            copyFiles(srcDir, destDir);
+        }
+    }
+
+    public void copyFiles(File src, File dest) throws IOException {
+        InputStream in = new FileInputStream(src);
+        OutputStream out = new FileOutputStream(dest);
+        byte[] buf = new byte[1024];
+        int len;
+        while ((len = in.read(buf)) > 0) {
+            out.write(buf, 0, len);
+        }
+        in.close();
+        out.close();
+
+    }
+
+    public void deleteDirectory(File dir) {
+        if (dir.isDirectory()) {
+            String[] children = dir.list();
+            for (int count = 0; count < children.length; count++) {
+                deleteDirectory(new File(dir, children[count]));
+            }
+        }
+        dir.delete();
+    }
+
+    public void generateDefaultClientCode(File temp) throws Exception {
+
+
+        temp.mkdir();
+        try {
+            codegenBean.generate();
+            SrcCompiler compiler = new SrcCompiler();
+            compiler.compileSource(temp.getAbsolutePath());
+            String wsdl = codegenBean.getWSDLFileName();
+            final String name = wsdl.substring(wsdl.lastIndexOf(File.separatorChar) + 1, wsdl.lastIndexOf(".")) + "-stub";
+            final File lib = new File(codegenBean.getActiveProject().getProjectFile().getParent().getPath() + File.separator + "lib");
+            if (!lib.isDirectory()) {
+                lib.mkdir();
+            }
+            JarFileWriter jarFileWriter = new JarFileWriter();
+            jarFileWriter.writeJarFile(lib, name + ".jar", new File(temp + File.separator + "classes"));
+            Project project = codegenBean.getActiveProject();
+
+            final LibraryTable table = (LibraryTable) project.getComponent(LibraryTable.class);
+
+
+
+
+            ApplicationManager.getApplication().runWriteAction(new
+                    Runnable() {
+                        public void run() {
+
+                            String url = VirtualFileManager.constructUrl(JarFileSystem.PROTOCOL, lib.getAbsolutePath() + File.separator + name + ".jar") + JarFileSystem.JAR_SEPARATOR;
+
+
+
+                            VirtualFile jarVirtualFile = VirtualFileManager.getInstance().findFileByUrl(url);
+                            Library myLibrary = table.createLibrary(name);
+                            Library.ModifiableModel libraryModel = myLibrary.getModifiableModel();
+                            libraryModel.addRoot(jarVirtualFile, OrderRootType.CLASSES);
+                            libraryModel.commit();
+
+
+                        }
+                    });
+        } catch (Exception e1) {
+           throw e1;
+        }
+        finally {
+
+            deleteDirectory(temp);
+        }
+    }
+
+
+    public void setPane() {
+        panleID++;
+        switch (panleID) {
+            case 1: {
+                try {
+                    codegenBean.readWSDL();
+                } catch (WSDLException e) {
+                    JOptionPane.showMessageDialog(this, "An error occured while parsing the " +
+                            "specified WSDL. Please make sure that the selected file is a valid WSDL.",
+                    "Error!", JOptionPane.ERROR_MESSAGE);
+                    panleID--;
+                    break;
+                }
+                panel_3.setCaptions("  Options"
+                        , " Select from custom or default");
+                this.secondPanel.setVisible(false);
+                this.plMiddle.setVisible(false);
+                if (this.optionPane.codegenBean == null)
+                this.optionPane.setCodeGenBean(codegenBean);
+                this.optionPane.setVisible(true);
+                this.outputpane.setVisible(false);
+                BottomPanel.setEnable(true,true, false, true);
+                break;
+            }
+            case 2: {
+                panel_3.setCaptions("  Custom Options"
+                        , "  Set the options for the code generation");
+
+                this.secondPanel.setVisible(true);
+                if(this.secondPanel.codegenBean == null)
+                this.secondPanel.setCodeGenBean(codegenBean);
+                this.secondPanel.setStatus();
+                this.plMiddle.setVisible(false);
+                this.optionPane.setVisible(false);
+                this.outputpane.setVisible(false);
+                BottomPanel.setEnable(true,true, false, true);
+                break;
+            }
+            case 3: {
+                String result;
+                if (this.optionPane.radCustom.isSelected() && (result = validatePackageNames()) != null)
+                {
+                    JOptionPane.showMessageDialog(this, "The package name " + result + " is not a valid package name",
+                                "Error!!!", JOptionPane.INFORMATION_MESSAGE);
+                    panleID--;
+                    break;
+                }
+
+                panel_3.setCaptions("  Set the output location for the generated code"
+                        , "  set the output project for the generated code");
+                this.secondPanel.setVisible(false);
+                this.plMiddle.setVisible(false);
+                this.optionPane.setVisible(false);
+                outputpane.loadCmbCurrentProject();
+                outputpane.loadcmbModuleSrcProject();
+                this.outputpane.setVisible(true);
+                BottomPanel.setEnable(true,false, true, true);
+                break;
+            }
+        }
+    }
+
+    public String validatePackageNames(){
+        if (!validatePackageName(this.secondPanel.txtPacakgeName.getText()))
+        return this.secondPanel.txtPacakgeName.getText();
+
+        for(int count=0;count<this.secondPanel.table.getRowCount();count++){
+            if(!validatePackageName((String)this.secondPanel.table.getValueAt(count,1)))
+            return (String)this.secondPanel.table.getValueAt(count,1);
+        }
+        return null;
+    }
+
+     public boolean validatePackageName(String name){
+
+       if(name.matches("[a-z]([a-z0-9_]+\\.?)+[a-z0-9_]"))
+       return true;
+
+       return false;
+   }
+
+    public void backButtonImpl(){
+        panleID--;
+        switch (panleID) {
+            case 0: {
+                panel_3.setCaptions("  WSDL selection page"
+                , "  Welcome to the Axis2 code generation wizard. Select the WSDL file");
+                this.secondPanel.setVisible(false);
+                this.plMiddle.setVisible(true);
+
+                this.optionPane.setVisible(false);
+                this.outputpane.setVisible(false);
+                BottomPanel.setEnable(false,true, false, true);
+                break;
+            }
+            case 1: {
+
+                panel_3.setCaptions("  Options"
+                        , " Select from custom or default");
+                this.secondPanel.setVisible(false);
+                this.plMiddle.setVisible(false);
+                this.outputpane.setVisible(false);
+                this.optionPane.setVisible(true);
+                BottomPanel.setEnable(true,true, false, true);
+                break;
+            }
+            case 2: {
+                if (!this.optionPane.radCustom.isSelected())
+                {
+
+                    this.backButtonImpl();
+                    break;
+                }
+                panel_3.setCaptions("  Custom  Options"
+                        , "  Set the options for the code generation");
+
+                this.secondPanel.setVisible(true);
+                this.plMiddle.setVisible(false);
+                this.optionPane.setVisible(false);
+                this.outputpane.setVisible(false);
+                BottomPanel.setEnable(true,true, false, true);
+                break;
+            }
+            case 3: {
+                panel_3.setCaptions("  Set the output location for the generated code"
+                        , "  set the output project for the generated code");
+                this.secondPanel.setVisible(false);
+                this.plMiddle.setVisible(false);
+                this.optionPane.setVisible(false);
+
+                this.outputpane.setVisible(true);
+                BottomPanel.setEnable(true,false, true, true);
+                break;
+            }
+        }
+
+    }
+
+    public void increasePanelID() {
+        panleID++;
+    }
+
+    public void setMiddlerPanel(int panel) {
+        this.panleID = panel;
+        if (panleID == 2) {
+            panel_3.setCaptions("  Options"
+                    , "  Set the options for the code generation");
+            this.secondPanel.setVisible(true);
+            this.plMiddle.setVisible(false);
+            BottomPanel.setEnable(true,true, true, true);
+        }
+        this.pack();
+        this.show();
+    }
+
+
+}
+
+class windowLayout implements LayoutManager {
+
+    int paneID;
+
+    public windowLayout(int panelid) {
+        paneID = panelid;
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+    }
+
+    public void removeLayoutComponent(Component comp) {
+    }
+
+    public Dimension preferredLayoutSize(Container parent) {
+        Dimension dim = new Dimension(0, 0);
+
+        Insets insets = parent.getInsets();
+        dim.width = 550 + insets.left + insets.right;
+        dim.height = 600 + insets.top + insets.bottom;
+
+        return dim;
+    }
+
+    public Dimension minimumLayoutSize(Container parent) {
+        return new Dimension(0, 0);
+    }
+
+    public void layoutContainer(Container parent) {
+        Insets insets = parent.getInsets();
+
+        Component c;
+        c = parent.getComponent(0);
+        if (c.isVisible()) {
+            c.setBounds(insets.left, insets.top, 600, 80);
+        }
+        c = parent.getComponent(1);
+        if (c.isVisible()) {
+            c.setBounds(insets.left, insets.top + 80, 600, 480);
+        }
+        c = parent.getComponent(3);
+        if (c.isVisible()) {
+            c.setBounds(insets.left, insets.top + 80, 600, 480);
+        }
+        c = parent.getComponent(4);
+        if (c.isVisible()) {
+            c.setBounds(insets.left, insets.top + 80, 600, 480);
+        }
+        c = parent.getComponent(5);
+        if (c.isVisible()) {
+            c.setBounds(insets.left, insets.top + 80, 600, 480);
+        }
+        c = parent.getComponent(2);
+        if (c.isVisible()) {
+            c.setBounds(insets.left, insets.top + 550, 600, 50);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/OptionPane.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/OptionPane.java
new file mode 100644
index 0000000..3bea6b4
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/OptionPane.java
@@ -0,0 +1,206 @@
+package org.apache.axis2.tools.idea;
+
+import org.apache.axis2.tools.bean.CodegenBean;
+
+import javax.swing.*;
+import javax.xml.namespace.QName;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.util.ArrayList;
+
+import com.intellij.openapi.module.Module;
+
+
+public class OptionPane extends JPanel implements ActionListener {
+
+
+    JLabel lblOption;
+    JRadioButton radDefaultClient;
+    JRadioButton radDefaultServer;
+    JRadioButton radDefaultBoth;
+
+    JRadioButton radCustom;
+    ButtonGroup buttonGroup;
+
+    CodegenBean codegenBean;
+
+    QName serviceName;
+    String portName;
+
+    public OptionPane() {
+        OptionPaneLayout customLayout = new OptionPaneLayout();
+
+
+        setLayout(customLayout);
+
+        lblOption = new JLabel("");
+        add(lblOption);
+
+        buttonGroup = new ButtonGroup();
+
+        radDefaultBoth = new JRadioButton("Generate both client and server code with default configurations", true);
+        buttonGroup.add(radDefaultBoth);
+        radDefaultBoth.setActionCommand("radDefaultBoth");
+        add(radDefaultBoth);
+        radDefaultBoth.addActionListener(this);
+
+        radDefaultClient = new JRadioButton("Generate client code with default configurations");
+        radDefaultClient.setToolTipText("Generates the jar that contains the stub and places it in the lib folder under the project. The generated jar is added as a project dependancy ");
+        buttonGroup.add(radDefaultClient);
+        radDefaultClient.setActionCommand("radDefaultClient");
+        add(radDefaultClient);
+        radDefaultClient.addActionListener(this);
+
+        radDefaultServer = new JRadioButton("Generate Server code with default configurations");
+        buttonGroup.add(radDefaultServer);
+        radDefaultServer.setActionCommand("radDefaultServer");
+        radDefaultServer.setToolTipText("Generates the skeleton for the service and places it in a path specified by the user");
+        add(radDefaultServer);
+        radDefaultServer.addActionListener(this);
+
+        radCustom = new JRadioButton("Custom");
+        buttonGroup.add(radCustom);
+        radCustom.setActionCommand("radCustom");
+        radCustom.setToolTipText("Allows the user to choose custom settings for the generation process");
+        add(radCustom);
+        radCustom.addActionListener(this);
+
+
+        setSize(getPreferredSize());
+
+    }
+
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object obj = e.getSource();
+
+        if (obj == radDefaultBoth) {
+            BottomPanel.setEnable(true,true, false, true);
+        } else if (obj == radDefaultClient) {
+            BottomPanel.setEnable(true,false, true, true);
+        } else if (obj == radDefaultServer) {
+            BottomPanel.setEnable(true,true, false, true);
+        } else if (obj == radCustom) {
+            BottomPanel.setEnable(true,true, false, true);
+        }
+
+    }
+
+    public void setDefaultBothConfigurations() {
+
+        setDefaultCommonConfigurations();
+    }
+
+    public void setDefaultCommonConfigurations() {
+
+        codegenBean.setLanguage("java");
+
+        codegenBean.setDatabindingName("adb");
+
+        codegenBean.setTestCase(false);
+
+        codegenBean.setServiceName(serviceName.getLocalPart());
+
+        codegenBean.setPortName(portName);
+
+        codegenBean.setPackageName("org.axis2");
+
+
+    }
+
+    public File setDefaultServerConfigurations() {
+        setDefaultCommonConfigurations();
+        codegenBean.setServerSide(true);
+        codegenBean.setServerXML(true);
+        File temp = codegenBean.getTemp();
+        codegenBean.setOutput(temp.getAbsolutePath());
+        return temp;
+
+    }
+
+    public File setDefaultClientConfigurations() {
+        setDefaultCommonConfigurations();
+        codegenBean.setServerSide(false);
+        codegenBean.setServerXML(false);
+        codegenBean.setPackageName(codegenBean.packageFromTargetNamespace());
+        File temp = codegenBean.getTemp();
+        codegenBean.setOutput(temp.getAbsolutePath());
+
+        return temp;
+    }
+
+    public void setCodeGenBean(CodegenBean codegenBean) {
+        this.codegenBean = codegenBean;
+        java.util.List serviceList = new ArrayList();
+        java.util.List portList = new ArrayList();
+
+        serviceList = codegenBean.getServiceList();
+        if (serviceList.size() > 0) {
+            serviceName = (QName) serviceList.get(0);
+            portList = codegenBean.getPortNameList(serviceName);
+        }
+        if (portList.size() > 0)
+            portName = (String) portList.get(0);
+
+        Module modules[] = codegenBean.getModules();
+        if (modules == null){
+            radDefaultBoth.setEnabled(false);
+            radDefaultClient.setEnabled(false);
+            radDefaultServer.setEnabled(false);
+            radCustom.setSelected(true);
+        }
+    }
+
+
+    class OptionPaneLayout implements LayoutManager {
+        public void removeLayoutComponent(Component comp) {
+        }
+
+        public void layoutContainer(Container parent) {
+            Insets insets = parent.getInsets();
+
+            Component c;
+            c = parent.getComponent(0);
+            if (c.isVisible()) {
+                c.setBounds(insets.left + 8, insets.top + 8, 500, 24);
+            }
+            c = parent.getComponent(1);
+            if (c.isVisible()) {
+                c.setBounds(insets.left + 8, insets.top + 40, 500, 24);
+            }
+            c = parent.getComponent(2);
+            if (c.isVisible()) {
+                c.setBounds(insets.left + 8, insets.top + 70, 500, 24);
+            }
+            c = parent.getComponent(3);
+            if (c.isVisible()) {
+                c.setBounds(insets.left + 8, insets.top + 100, 500, 24);
+            }
+            c = parent.getComponent(4);
+            if (c.isVisible()) {
+                c.setBounds(insets.left + 8, insets.top + 130, 500, 24);
+            }
+
+        }
+
+        public void addLayoutComponent(String name, Component comp) {
+        }
+
+        public Dimension minimumLayoutSize(Container parent) {
+            return null;
+        }
+
+        public Dimension preferredLayoutSize(Container parent) {
+            Dimension dim = new Dimension(0, 0);
+
+            Insets insets = parent.getInsets();
+            dim.width = 565 + insets.left + insets.right;
+            dim.height = 600 + insets.top + insets.bottom;
+
+            return dim;
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/OutPutPane.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/OutPutPane.java
new file mode 100644
index 0000000..e456eec
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/OutPutPane.java
@@ -0,0 +1,258 @@
+package org.apache.axis2.tools.idea;
+
+import com.intellij.openapi.module.Module;
+import org.apache.axis2.tools.bean.CodegenBean;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+/*
+* Copyright 2004,2005 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 : Deepal Jayasinghe
+ * Date: Jul 22, 2005
+ * Time: 12:52:31 PM
+ */
+public class OutPutPane extends JPanel implements ActionListener {
+    JTextField txtoutput;
+    JButton btwBrowse;
+
+    JRadioButton radCurrentProject;
+    JLabel lblCurrentProject;
+    JComboBox cmbCurrentProject;
+    JRadioButton radCustomLocation;
+
+    ButtonGroup buttonGroup;
+
+    JLabel lblModuleSrc;
+    JComboBox cmbModuleSrc;
+    boolean flag = true;
+    private CodegenBean cogenbean;
+    final JFileChooser fc = new JFileChooser();
+
+    public OutPutPane(CodegenBean bean) {
+        this.cogenbean = bean;
+        OutPutPaneLayout customLayout = new OutPutPaneLayout();
+
+        setLayout(customLayout);
+
+        buttonGroup = new ButtonGroup();
+
+        txtoutput = new JTextField("");
+        txtoutput.setEnabled(false);
+        add(txtoutput);
+
+        btwBrowse = new JButton("Browse..");
+        add(btwBrowse);
+        btwBrowse.setEnabled(false);
+        btwBrowse.addActionListener(this);
+
+
+        radCurrentProject = new JRadioButton("Add sources to current project", true);
+        buttonGroup.add(radCurrentProject);
+        radCurrentProject.setActionCommand("radCurrentProject");
+        add(radCurrentProject);
+        radCurrentProject.addActionListener(this);
+
+        lblCurrentProject = new JLabel("Select Module");
+        lblCurrentProject.setEnabled(true);
+        add(lblCurrentProject);
+
+        radCustomLocation = new JRadioButton("Select custom output location");
+        buttonGroup.add(radCustomLocation);
+        radCustomLocation.setActionCommand("radCustomLocation");
+        add(radCustomLocation);
+        radCustomLocation.addActionListener(this);
+
+        cmbCurrentProject = new JComboBox();
+        cmbCurrentProject.setEnabled(true);
+        add(cmbCurrentProject);
+        cmbCurrentProject.addActionListener(this);
+
+        lblModuleSrc = new JLabel("Select Source Directory");
+        lblModuleSrc.setEnabled(true);
+        add(lblModuleSrc);
+
+        cmbModuleSrc = new JComboBox();
+        cmbModuleSrc.setEnabled(true);
+        add(cmbModuleSrc);
+
+
+//        loadCmbCurrentProject();
+//        loadcmbModuleSrcProject();
+
+
+        setSize(getPreferredSize());
+    }
+
+    public void loadCmbCurrentProject() {
+        Module modules[] = cogenbean.getModules();
+
+        if (modules != null) {
+            for (int count = 0; count < modules.length; count++) {
+                cmbCurrentProject.addItem(modules[count].getName());
+            }
+        }
+
+    }
+
+    public void loadcmbModuleSrcProject() {
+        String module = null;
+        module = (String) cmbCurrentProject.getSelectedItem();
+        cmbModuleSrc.removeAllItems();
+        int count = 0;
+        if (module != null) {
+            String src[] = cogenbean.getModuleSrc(module);
+            for ( count = 0; count < src.length; count++) {
+                cmbModuleSrc.addItem(src[count]);
+            }
+
+            count = src.length;
+        }
+
+        if (flag)
+        {
+            flag = false;
+
+        if (count == 0) {
+            radCurrentProject.setEnabled(false);
+            cmbCurrentProject.setEnabled(false);
+            cmbModuleSrc.setEnabled(false);
+            lblCurrentProject.setEnabled(false);
+            lblModuleSrc.setEnabled(false);
+            radCustomLocation.setSelected(true);
+            txtoutput.setEnabled(true);
+            btwBrowse.setEnabled(true);
+        }
+        else{
+            radCurrentProject.setEnabled(true);
+            cmbCurrentProject.setEnabled(true);
+            cmbModuleSrc.setEnabled(true);
+            lblCurrentProject.setEnabled(true);
+            lblModuleSrc.setEnabled(true);
+            radCurrentProject.setSelected(true);
+            txtoutput.setEnabled(false);
+            btwBrowse.setEnabled(false);
+        }
+        }
+    }
+
+
+    public void actionPerformed(ActionEvent e) {
+        Object obj = e.getSource();
+        if (obj == btwBrowse) {
+            fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+            int returnVal = fc.showOpenDialog(this);
+            if (returnVal == JFileChooser.APPROVE_OPTION) {
+                File file = fc.getSelectedFile();
+                cogenbean.setOutput(file.getAbsolutePath());
+                txtoutput.setText(file.getAbsolutePath());
+            } else {
+                System.out.println("no file");
+            }
+        } else if (obj == radCurrentProject) {
+            lblCurrentProject.setEnabled(true);
+            cmbCurrentProject.setEnabled(true);
+            lblModuleSrc.setEnabled(true);
+            cmbModuleSrc.setEnabled(true);
+            txtoutput.setEnabled(false);
+            btwBrowse.setEnabled(false);
+
+        } else if (obj == radCustomLocation) {
+            lblCurrentProject.setEnabled(false);
+            cmbCurrentProject.setEnabled(false);
+            lblModuleSrc.setEnabled(false);
+            cmbModuleSrc.setEnabled(false);
+            txtoutput.setEnabled(true);
+            btwBrowse.setEnabled(true);
+        }
+        else if (obj == cmbCurrentProject) {
+            loadcmbModuleSrcProject();
+    }
+}
+
+class OutPutPaneLayout implements LayoutManager {
+
+    public OutPutPaneLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+    }
+
+    public void removeLayoutComponent(Component comp) {
+    }
+
+    public Dimension preferredLayoutSize(Container parent) {
+        Dimension dim = new Dimension(0, 0);
+
+        Insets insets = parent.getInsets();
+        dim.width = 611 + insets.left + insets.right;
+        dim.height = 600 + insets.top + insets.bottom;
+
+        return dim;
+    }
+
+    public Dimension minimumLayoutSize(Container parent) {
+        return new Dimension(0, 0);
+    }
+
+    public void layoutContainer(Container parent) {
+        Insets insets = parent.getInsets();
+
+        Component c;
+        c = parent.getComponent(2);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 8, 350, 24);
+        }
+        c = parent.getComponent(3);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 30, insets.top + 40, 150, 24);
+        }
+        c = parent.getComponent(5);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 200, insets.top + 40, 330, 24);
+        }
+        c = parent.getComponent(6);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 30, insets.top + 70, 150, 24);
+        }
+        c = parent.getComponent(7);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 200, insets.top + 70, 330, 24);
+        }
+        c = parent.getComponent(4);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 100, 350, 24);
+        }
+        c = parent.getComponent(0);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 30, insets.top + 130, 150, 24);
+        }
+        c = parent.getComponent(1);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 200, insets.top + 130, 150, 24);
+        }
+    }
+}
+
+}
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/PackageNameTableModel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/PackageNameTableModel.java
new file mode 100644
index 0000000..2a816e4
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/PackageNameTableModel.java
@@ -0,0 +1,72 @@
+package org.apache.axis2.tools.idea;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: keith
+ * Date: 21/10/2006
+ * Time: 14:27:40
+ * To change this template use File | Settings | File Templates.
+ */
+
+
+public class PackageNameTableModel extends AbstractTableModel {
+    Object [] [] tableData;
+
+
+    public PackageNameTableModel(Object[][] tableData) {
+        this.tableData = tableData;
+    }
+
+    public void setTableData(Object [][] tableData) {
+        this.tableData = tableData;
+    }
+
+    public String getColumnName(int c)
+   {
+      return columnNames[c];
+   }
+
+   public Class getColumnClass(int c)
+   {
+      return tableData[0][c].getClass();
+   }
+
+   public int getColumnCount()
+   {
+      return tableData[0].length;
+   }
+
+   public int getRowCount()
+   {
+      return tableData.length;
+   }
+
+   public Object getValueAt(int r, int c)
+   {
+      return tableData[r][c];
+   }
+
+   public void setValueAt(Object obj, int r, int c)
+   {
+      tableData[r][c] = obj;
+   }
+
+   public boolean isCellEditable(int r, int c)
+   {
+      return  c == PACKAGENAME_COLUMN;
+
+   }
+
+   public static final int NAMESPACE_COLUMN = 0;
+   public static final int PACKAGENAME_COLUMN = 1;
+
+
+
+   private String[] columnNames =
+   {
+      "Namespace", "Custom Package Name"
+   };
+}
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/PluginClassLoader.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/PluginClassLoader.java
new file mode 100644
index 0000000..5c05a9c
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/PluginClassLoader.java
@@ -0,0 +1,183 @@
+package org.apache.axis2.tools.idea;

+

+import java.io.*;

+import java.net.URL;

+import java.net.URLClassLoader;

+import java.util.ArrayList;

+import java.util.zip.ZipEntry;

+import java.util.zip.ZipInputStream;

+

+/*

+* Copyright 2004,2005 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 : Deepal Jayasinghe

+ * Date: Jul 22, 2005

+ * Time: 2:25:59 PM

+ */

+public class PluginClassLoader extends URLClassLoader {

+

+    //urls which gives to create the classLoader

+    private URL[] urls;

+

+    //To keep jar files inside /lib directory in the main jar

+    private ArrayList lib_jars_list;

+

+

+    /**

+     * PluginClassLoader is exetend form URLClassLoader , and the constructor

+     * has not overide the super constroctor , but has done some stuff to find out

+     * jar fils inside /lib director

+     *

+     * @param urls   <code>URL</code>

+     * @param parent parent classloader <code>ClassLoader</code>

+     */

+    public PluginClassLoader(URL[] urls, ClassLoader parent) {

+        super(urls, parent);

+        this.urls = urls;

+        lib_jars_list = new ArrayList();

+        findLibJars();

+    }

+

+    /**

+     * This just search for jar files inside /lib dirctory and if there are any then those

+     * will be added to the arraylit (only the name of the jar file)

+     */

+    private void findLibJars() {

+        /**

+         * though the URL array can contains one or more urls , I have only consider the

+         * first one , that is this classLoader is only for Axis2 stuff and the classloader

+         * is created by Deployment , so there wont be any chance to have more the one urls for

+         * the URL array list

+         */

+        File file = new File(urls[0].getFile());

+        try {

+            ZipInputStream zin = new ZipInputStream(new FileInputStream(file));

+            ZipEntry entry;

+            String entryName = "";

+            while ((entry = zin.getNextEntry()) != null) {

+                entryName = entry.getName();

+                /**

+                 * id the entry name start with /lib and end with .jar

+                 * then those entry name will be added to the arraylist

+                 */

+                if (entryName != null && (entryName.startsWith("lib/") ||

+                        entryName.startsWith("Lib/")) &&

+                        entryName.endsWith(".jar")) {

+                    lib_jars_list.add(entryName);

+                }

+            }

+            zin.close();

+        } catch (Exception e) {

+            throw new RuntimeException(e);

+        }

+    }

+

+    /**

+     * @param name <code>String</code>  Name of the file to be loaded

+     * @return <code>Class</code> return a class object if it found else

+     *         will return null or classNotfoun exeption

+     *         <p/>

+     *         The method has ovride in the following way

+     *         1. called the super class and check to see wether the class is there

+     *         if the class is found then return that , else if super returns ClassNotfoundExeption

+     *         2. Check wether the entry corresponding to the class name exsit in one of jar files

+     *         in /lib director

+     *         3. If it is there get the byte array out of that and creat a Class object out of that

+     *         by calling "defineClass()" , if it sucssed then return that else

+     *         4. Throw classNotfound exeption

+     * @throws ClassNotFoundException

+     */

+    protected Class findClass(final String name)

+            throws ClassNotFoundException {

+        Class cla = null;

+        try {

+            boolean foundClass = false;

+            try {

+                cla = super.findClass(name);

+                foundClass = true;

+                return cla;

+            } catch (ClassNotFoundException e) {

+                foundClass = false;

+            }

+            if (!foundClass) {

+                byte raw[] = getBytes(name);

+                cla = defineClass(name, raw, 0, raw.length);

+                foundClass = true;

+                return cla;

+            }

+            if (!foundClass) {

+                throw new ClassNotFoundException("Class Not found : " + name);

+            }

+

+        } catch (Exception e) {

+

+        }

+        return null;

+    }

+

+    /**

+     * Read jar file (/lib) one by one , then for each file craete <code>ZipInputStream</code>

+     * that and check to see wether there is any entry eith given name if it found then

+     * Creat ByteArrayOutPutStream and get the class bytes to that .

+     * after goning throgh each and evry jar file if there is no entry with given name

+     * will throug a ClassNotFound execption

+     *

+     * @param filename <code>String</code>  Name of the file to be loaded (Class Name)

+     * @return bytt[]

+     * @throws java.io.IOException <code>Exception</code>

+     */

+    private byte[] getBytes(String filename) throws Exception {

+        String completeFileName = filename;

+        /**

+         * Replacing org.apache. -> org/apache/...

+         */

+        completeFileName = completeFileName.replace('.', '/').concat(".class");

+        byte raw[] = null;

+        for (int i = 0; i < lib_jars_list.size(); i++) {

+            String libjar_name = (String) lib_jars_list.get(i);

+            InputStream in = this.getResourceAsStream(libjar_name);

+            try {

+                ZipInputStream zin = new ZipInputStream(in);

+                ZipEntry entry;

+                String entryName = "";

+                while ((entry = zin.getNextEntry()) != null) {

+                    entryName = entry.getName();

+                    if (entryName != null &&

+                            entryName.endsWith(completeFileName)) {

+                        byte data[] = new byte[2048];

+                        ByteArrayOutputStream out = new ByteArrayOutputStream();

+                        int count;

+                        while ((count = zin.read(data, 0, 2048)) != -1) {

+                            out.write(data, 0, count);

+                        }

+                        raw = out.toByteArray();

+                        out.close();

+                        zin.close();

+                        return raw;

+                    }

+                }

+            } catch (IOException e) {

+                throw e;

+            }

+

+        }

+        throw new ClassNotFoundException("Class Not found : " + filename);

+    }

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/SecondFrame.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/SecondFrame.java
new file mode 100644
index 0000000..ccf4a6e
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/SecondFrame.java
@@ -0,0 +1,566 @@
+package org.apache.axis2.tools.idea;
+
+import org.apache.axis2.tools.bean.CodegenBean;
+import org.apache.axis2.util.URLProcessor;
+
+import javax.swing.*;
+import javax.swing.table.TableModel;
+import javax.swing.border.BevelBorder;
+import javax.xml.namespace.QName;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Map;
+import java.util.Iterator;
+import java.util.Collection;
+
+import com.intellij.openapi.module.Module;
+/*
+* Copyright 2004,2005 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.
+*
+*
+*/
+
+public class SecondFrame extends JPanel implements ActionListener {
+
+    JLabel lblLangauge;
+    JComboBox cmbLan;
+
+    JLabel lblServiceName;
+    JComboBox cmbServiceName;
+
+    JLabel lblportName;
+    JComboBox cmbPortName;
+
+    JLabel lblpackgeName;
+    JTextField txtPacakgeName;
+
+    JLabel lbldbtype;
+    JComboBox cmbdbtype;
+
+    JCheckBox chkTestCase;
+
+    JRadioButton clientSide;
+
+
+    JRadioButton rdBoth;
+    JRadioButton rdsyn;
+    JRadioButton rdasync;
+
+    JRadioButton serverSide;
+    JCheckBox serviceXML;
+
+    JCheckBox serverSideInterface;
+
+    JRadioButton all;
+
+    ButtonGroup buttonGroup;
+
+    ButtonGroup generationType;
+
+    PackageNameTableModel model;
+
+    JLabel lblPackageMapping;
+
+    JTable table;
+
+    CodegenBean codegenBean;
+    java.util.List serviceNameList;
+
+    public SecondFrame()  {
+        SecondFrameLayout customLayout = new SecondFrameLayout();
+
+        setFont(new Font("Helvetica", Font.PLAIN, 12));
+        setLayout(customLayout);
+
+       
+
+        lblLangauge = new JLabel("Select the output language");
+        add(lblLangauge);
+
+        cmbLan = new JComboBox();
+        cmbLan.addItem("java");
+        cmbLan.addItem("C#");
+        cmbLan.setToolTipText("Select the language of the generated code");
+        add(cmbLan);
+
+        lblServiceName = new JLabel("Select Service Name");
+        add(lblServiceName);
+
+        cmbServiceName = new JComboBox();
+        add(cmbServiceName);
+        cmbServiceName.setToolTipText("Select the name of the service that the code should be generated for");
+        cmbServiceName.addActionListener(this);
+
+        lblportName = new JLabel("Select Port Name");
+        add(lblportName);
+
+        cmbPortName = new JComboBox();
+        cmbPortName.setToolTipText("Select the port name that the code should be generated for");
+        add(cmbPortName);
+
+        lblpackgeName = new JLabel("Select the package name");
+        add(lblpackgeName);
+
+        txtPacakgeName = new JTextField("org.axis2");
+        txtPacakgeName.setToolTipText("Set the package name of the generated code");
+        add(txtPacakgeName);
+
+        lbldbtype = new JLabel("Select Databinding type");
+        add(lbldbtype);
+
+        cmbdbtype = new JComboBox();
+        cmbdbtype.addItem("adb");
+        cmbdbtype.addItem("xmlbeans");
+        cmbdbtype.addItem("none");
+        cmbdbtype.setToolTipText("Select the databinding framework to be used in the generation process");
+        add(cmbdbtype);
+
+        chkTestCase = new JCheckBox("Generate Test Case", true);
+        chkTestCase.setVisible(false);
+        chkTestCase.setToolTipText("A test case will be generated if this is checked");
+        add(chkTestCase);
+
+        generationType = new ButtonGroup();
+
+        JSeparator clintSep = new JSeparator(JSeparator.HORIZONTAL);
+        add(clintSep);
+
+        clientSide = new JRadioButton("Generate Client Side",true);
+        generationType.add(clientSide);
+        clientSide.addActionListener(this);
+        add(clientSide);
+
+        buttonGroup = new ButtonGroup();
+
+        rdBoth = new JRadioButton("Generate both sync and async", true);
+        buttonGroup.add(rdBoth);
+        add(rdBoth);
+
+        rdsyn = new JRadioButton("Generate sync only", false);
+        buttonGroup.add(rdsyn);
+        add(rdsyn);
+
+        rdasync = new JRadioButton("Generate async only", false);
+        buttonGroup.add(rdasync);
+        add(rdasync);
+
+        JSeparator serverSep = new JSeparator(JSeparator.HORIZONTAL);
+        add(serverSep);
+
+        serverSide = new JRadioButton("Generate Server Side");
+        generationType.add(serverSide);
+        serverSide.addActionListener(this);
+        add(serverSide);
+
+        serviceXML = new JCheckBox("Generate default service.xml", true);
+        serviceXML.setEnabled(false);
+        add(serviceXML);
+
+        serverSideInterface = new JCheckBox("Generate an interface for skeleton", true);
+        serverSideInterface.setEnabled(false);
+        add(serverSideInterface);
+
+        JSeparator allSep = new JSeparator(JSeparator.HORIZONTAL);
+        add(allSep);
+
+        all = new JRadioButton("Generate All");
+        generationType.add(all);
+        all.addActionListener(this);
+        add(all);
+
+        JSeparator packageSep = new JSeparator(JSeparator.HORIZONTAL);
+        add(packageSep);
+
+        lblPackageMapping = new JLabel("Namespace to Package Mapping");
+        add(lblPackageMapping);
+
+        model = new PackageNameTableModel(new Object [1][2]);
+        table = new JTable(model);
+        add(new JScrollPane(table));
+
+        Dimension dim = new Dimension(450, 600);
+        setSize(dim);
+    }
+
+    public void setCodeGenBean(CodegenBean codegenBean) {
+        this.codegenBean = codegenBean;
+        setStatus();
+
+    }
+
+    public void setStatus(){
+        loadNamespaces(codegenBean.getDefinitionNamespaceMap());
+        table.updateUI();
+        txtPacakgeName.setText(codegenBean.packageFromTargetNamespace());
+        cmbServiceName.removeAllItems();
+        serviceNameList = codegenBean.getServiceList();
+        for (int i = 0; i < serviceNameList.size(); i++) {
+            QName name = (QName) serviceNameList.get(i);
+            cmbServiceName.addItem(name.getLocalPart());
+        }
+        cmbServiceName.setSelectedIndex(0);
+    }
+
+    /**
+	 * Loads the namespaces
+	 * @param namespaceMap
+	 */
+	private void loadNamespaces(Collection namespaceMap){
+		Iterator namespaces = namespaceMap.iterator();
+        Object tableData [][] = new Object[namespaceMap.size()][2];
+        int i = 0;
+        while(namespaces.hasNext()){
+
+           String namespace = (String)namespaces.next();
+           tableData[i][0] = namespace;
+           tableData[i][1] = getPackageFromNamespace(namespace);
+           i++;
+        }
+
+        model.setTableData(tableData);
+
+
+    }
+
+    /**
+	 * get the package derived by  Namespace
+	 */
+	public String getPackageFromNamespace(String namespace){
+		return  URLProcessor.makePackageName(namespace);
+	}
+
+    public void fillBean() {
+        int index = cmbLan.getSelectedIndex();
+        switch (index) {
+            case 0: {
+                codegenBean.setLanguage("java");
+                break;
+            }
+            case 1: {
+                codegenBean.setLanguage("c-sharp");
+                break;
+            }
+        }
+
+        index = cmbdbtype.getSelectedIndex();
+        switch (index) {
+            case 0: {
+                codegenBean.setDatabindingName("adb");
+                break;
+            }
+            case 1: {
+                codegenBean.setDatabindingName("xmlbeans");
+                break;
+            }
+            case 2: {
+                codegenBean.setDatabindingName("none");
+                break;
+            }
+        }
+
+        if (clientSide.isSelected()){
+
+        if (rdasync.isSelected()) {
+            codegenBean.setAsyncOnly(true);
+        }
+        else if (rdsyn.isSelected()) {
+            codegenBean.setSyncOnly(true);
+        }
+        }
+        else if (serverSide.isSelected()) {
+
+            if (serviceXML.isSelected())
+                codegenBean.setServerSide(true);
+            else
+                codegenBean.setServerSide(false);
+            if (serverSideInterface.isSelected())
+                codegenBean.setServerSideInterface(true);
+            else
+               codegenBean.setServerSideInterface(false);
+        }
+        else {
+        codegenBean.setGenerateAll(true);
+
+
+}
+        if (chkTestCase.isSelected()) {
+            codegenBean.setTestCase(true);
+        }
+        else
+        codegenBean.setTestCase(false);
+        codegenBean.setPackageName(txtPacakgeName.getText());
+        codegenBean.setServiceName(cmbServiceName.getSelectedItem().toString());
+        codegenBean.setServiceName(cmbPortName.getSelectedItem().toString());
+        codegenBean.setNamespace2packageList(getNs2PkgMapping());
+    }
+
+    /**
+	 * get the package to namespace mappings
+	 * @return
+	 */
+	public String getNs2PkgMapping(){
+		String returnList="";
+		String packageValue;
+		for (int i=0;i<table.getRowCount();i++){
+			packageValue = (String)table.getValueAt(i,1);
+				returnList = returnList +
+				             ("".equals(returnList)?"":",") +
+				             (String)table.getValueAt(i,0)+ "=" + packageValue;
+
+
+		}
+		return "".equals(returnList)?null:returnList;
+	}
+
+    public void actionPerformed(ActionEvent e) {
+        Object obj = e.getSource();
+        if (obj == cmbServiceName) {
+            int selindex = cmbServiceName.getSelectedIndex();
+            if (selindex>=0)
+            {
+            java.util.List ports = codegenBean.getPortNameList((QName) serviceNameList.get(selindex));
+            cmbPortName.removeAllItems();
+            for (int i = 0; i < ports.size(); i++) {
+                String portName = (String) ports.get(i);
+                cmbPortName.addItem(portName);
+            }
+            }
+        }
+        else if (obj == serverSide){
+            if(clientSide.isSelected()){
+                rdasync.setEnabled(true);
+                rdBoth.setEnabled(true);
+                rdsyn.setEnabled(true);
+                chkTestCase.setEnabled(true);
+                serviceXML.setEnabled(false);
+                serverSideInterface.setEnabled(false);
+            }
+            else
+            {
+               rdasync.setEnabled(false);
+                rdBoth.setEnabled(false);
+                rdsyn.setEnabled(false);
+                chkTestCase.setEnabled(false);
+                serviceXML.setEnabled(true);
+                serverSideInterface.setEnabled(true);
+            }
+        }
+        else if (obj == clientSide){
+            if(serverSide.isSelected()){
+                rdasync.setEnabled(false);
+                rdBoth.setEnabled(false);
+                rdsyn.setEnabled(false);
+                serviceXML.setEnabled(true);
+                chkTestCase.setEnabled(false);
+                serverSideInterface.setEnabled(true);
+            }
+            else
+            {
+                rdasync.setEnabled(true);
+                rdBoth.setEnabled(true);
+                rdsyn.setEnabled(true);
+                chkTestCase.setEnabled(true);
+                serviceXML.setEnabled(false);
+                serverSideInterface.setEnabled(false);
+            }
+        }
+         else if (obj == all){
+            if(all.isSelected()){
+                rdasync.setEnabled(false);
+                rdBoth.setEnabled(false);
+                rdsyn.setEnabled(false);
+                serviceXML.setEnabled(false);
+                serverSideInterface.setEnabled(false);
+                chkTestCase.setEnabled(true);
+            }
+
+
+        }
+    }
+}
+
+class SecondFrameLayout implements LayoutManager {
+
+    public SecondFrameLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+    }
+
+    public void removeLayoutComponent(Component comp) {
+    }
+
+    public Dimension preferredLayoutSize(Container parent) {
+        Dimension dim = new Dimension(0, 0);
+
+        Insets insets = parent.getInsets();
+        dim.width = 575 + insets.left + insets.right;
+        dim.height = 600 + insets.top + insets.bottom;
+
+        return dim;
+    }
+
+    public Dimension minimumLayoutSize(Container parent) {
+        return new Dimension(0, 0);
+    }
+
+    public void layoutContainer(Container parent) {
+        Insets insets = parent.getInsets();
+
+        Component c;
+
+        // Language selection
+        c = parent.getComponent(0);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 10, 192, 24);
+        }
+        c = parent.getComponent(1);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 272, insets.top + 10, 250, 24);
+        }
+
+        // Service Name selection
+        c = parent.getComponent(2);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 40, 192, 24);
+        }
+        c = parent.getComponent(3);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 272, insets.top + 40, 250, 24);
+        }
+
+        // Port Name Selection
+        c = parent.getComponent(4);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 70, 192, 24);
+        }
+        c = parent.getComponent(5);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 272, insets.top + 70, 250, 24);
+        }
+
+        // Data Binding Selection
+        c = parent.getComponent(6);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 130, 192, 24);
+        }
+        c = parent.getComponent(7);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 272, insets.top + 130, 250, 24);
+        }
+
+        //Package NAme Selection
+        c = parent.getComponent(8);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 100, 192, 24);
+        }
+        c = parent.getComponent(9);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 272, insets.top + 100, 250, 24);
+        }
+
+
+
+        // Test Case Selection
+        c = parent.getComponent(10);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 160, 208, 24);
+        }
+
+        // JSeperator
+
+        c = parent.getComponent(11);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 187, 530, 2);
+        }
+
+        // Client side options
+        c = parent.getComponent(12);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 190, 168, 24);
+        }
+
+        // Service invocation both,sync,async
+        c = parent.getComponent(13);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 48, insets.top + 220, 210, 24);
+        }
+        c = parent.getComponent(14);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 260, insets.top + 220, 140, 24);
+        }
+        c = parent.getComponent(15);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 400, insets.top + 220, 145, 24);
+        }
+
+        // JSeperator
+
+        c = parent.getComponent(16);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 247, 530, 2);
+        }
+
+        // Server side options
+        c = parent.getComponent(17);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 250, 168, 24);
+        }
+
+        // Generate serverside, generate service XML
+        c = parent.getComponent(18);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 48, insets.top + 280, 200, 24);
+        }
+
+        c = parent.getComponent(19);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 248, insets.top + 280, 250, 24);
+        }
+
+        // JSeperator
+
+        c = parent.getComponent(20);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 307, 530, 2);
+        }
+
+        c = parent.getComponent(21);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 310, 200, 24);
+        }
+
+        // JSeperator
+
+        c = parent.getComponent(22);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 337, 530, 2);
+        }
+
+        c = parent.getComponent(23);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 340, 250, 24);
+        }
+
+        c = parent.getComponent(24);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 370, 522, 85);
+        }
+
+
+    }
+}
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/SecondPanel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/SecondPanel.java
new file mode 100644
index 0000000..faec4b9
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/SecondPanel.java
@@ -0,0 +1,90 @@
+package org.apache.axis2.tools.idea;

+

+import java.awt.*;

+

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+class SecondPanelLayout implements LayoutManager {

+

+    public SecondPanelLayout() {

+    }

+

+    public void addLayoutComponent(String name, Component comp) {

+    }

+

+    public void removeLayoutComponent(Component comp) {

+    }

+

+    public Dimension preferredLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+

+        Insets insets = parent.getInsets();

+        dim.width = 565 + insets.left + insets.right;

+        dim.height = 300 + insets.top + insets.bottom;

+

+        return dim;

+    }

+

+    public Dimension minimumLayoutSize(Container parent) {

+        return new Dimension(0, 0);

+    }

+

+    public void layoutContainer(Container parent) {

+        Insets insets = parent.getInsets();

+

+        Component c;

+        c = parent.getComponent(0);

+        if (c.isVisible()) {

+            c.setBounds(insets.left, insets.top + 5, 200, 20);

+        }

+        c = parent.getComponent(1);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 210, insets.top + 5, 160, 20);

+        }

+        c = parent.getComponent(2);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 8, insets.top + 30, 250, 24);

+        }

+        c = parent.getComponent(3);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 280, insets.top + 30, 150, 24);

+        }

+        c = parent.getComponent(4);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 8, insets.top + 55, 150, 24);

+        }

+        c = parent.getComponent(5);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 8, insets.top + 80, 200, 24);

+        }

+        c = parent.getComponent(6);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 210, insets.top + 80, 160, 24);

+        }

+        c = parent.getComponent(7);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 8, insets.top + 110, 200, 24);

+        }

+        c = parent.getComponent(8);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 210, insets.top + 110, 200, 24);

+        }

+    }

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ServiceArchiveCreator.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ServiceArchiveCreator.java
new file mode 100644
index 0000000..633ca0e
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/axis2/tools/idea/ServiceArchiveCreator.java
@@ -0,0 +1,49 @@
+/*
+* Copyright 2004,2005 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.axis2.tools.idea;
+
+import com.intellij.openapi.actionSystem.*;
+import com.intellij.openapi.project.Project;
+
+import javax.swing.*;
+
+public class ServiceArchiveCreator extends AnAction {
+    private ImageIcon myIcon;
+
+    public ServiceArchiveCreator() {
+        super("GC", "Create Service Archive File", null);
+    }
+
+    public void actionPerformed(AnActionEvent event) {
+//        Java2CodeFrame win = new Java2CodeFrame();
+//        win.setProject((Project) event.getDataContext().getData(DataConstants.PROJECT));
+//        win.pack();
+//        win.show();
+    }
+
+    public void update(AnActionEvent event) {
+        super.update(event);
+        Presentation presentation = event.getPresentation();
+        if (ActionPlaces.MAIN_TOOLBAR.equals(event.getPlace())) {
+            if (myIcon == null) {
+                java.net.URL resource = ServiceArchiveCreator.class.getResource("/icons/garbage.png");
+                myIcon = new ImageIcon(resource);
+            }
+            presentation.setIcon(myIcon);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/ModuleDialog.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/ModuleDialog.java
new file mode 100644
index 0000000..3e99555
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/ModuleDialog.java
@@ -0,0 +1,88 @@
+package org.apache.ideaplugin;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+/*
+* Copyright 2004,2005 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: Deepal Jayasinghe
+ * Date: Sep 23, 2005
+ * Time: 4:11:19 PM
+ */
+public class ModuleDialog extends JFrame implements ActionListener {
+
+    Insets insets;
+
+    protected JLabel moduleName;
+    protected JTextField txtModule;
+    protected JButton addbut;
+
+    protected String val;
+    JTextArea textarea;
+    int position;
+
+    public ModuleDialog() {
+        getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12));
+        getContentPane().setLayout(null);
+        getContentPane().setBounds(150, 150, 300, 100);
+        insets = getInsets();
+
+        moduleName = new JLabel("Module Name: ");
+        getContentPane().add(moduleName);
+
+        txtModule = new JTextField("moduleName");
+        getContentPane().add(txtModule);
+
+        addbut = new JButton("Add");
+        getContentPane().add(addbut);
+        addbut.addActionListener(this);
+
+
+        moduleName.setBounds(insets.left + 5, insets.top + 6, 100, 24);
+        txtModule.setBounds(insets.left + 110, insets.top + 6, 160, 24);
+        addbut.setBounds(insets.left + 100, insets.top + 45, 60, 24);
+
+        setSize(getPreferredSize());
+        setResizable(false);
+    }
+
+    public void showDialog(String in, JTextArea textarea, int position) {
+        this.textarea = textarea;
+        this.position = position;
+        this.show();
+        this.val = in;
+        this.setVisible(true);
+    }
+
+    public String hideForm() {
+        return this.val;
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        Object obj = e.getSource();
+        if (obj == addbut) {
+            String str = "<module ref=\"" + txtModule.getText().trim() + "\" \\>";
+            val = str;
+            textarea.insert(str, position + 1);
+            this.setVisible(false);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/ParameterDialog.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/ParameterDialog.java
new file mode 100644
index 0000000..3d2b8e4
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/ParameterDialog.java
@@ -0,0 +1,104 @@
+package org.apache.ideaplugin;

+

+import javax.swing.*;

+import java.awt.*;

+import java.awt.event.ActionEvent;

+import java.awt.event.ActionListener;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 23, 2005

+ * Time: 12:11:36 PM

+ */

+public class ParameterDialog extends JFrame implements ActionListener {

+

+    Insets insets;

+

+    protected JLabel paraName;

+    protected JLabel paravale;

+    protected JTextField txtpraName;

+    protected JTextArea txtparaValue;

+    protected JScrollPane sp;

+    protected JButton addbut;

+    protected String val;

+    JTextArea textarea;

+    int position;

+

+    public ParameterDialog() {

+        getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12));

+        getContentPane().setLayout(null);

+        getContentPane().setBounds(150, 150, 300, 180);

+        insets = getInsets();

+

+        paraName = new JLabel("Parameter Name: ");

+        getContentPane().add(paraName);

+

+        paravale = new JLabel("Parameter Value: ");

+        getContentPane().add(paravale);

+

+

+        txtpraName = new JTextField("-para name -");

+        getContentPane().add(txtpraName);

+

+

+        txtparaValue = new JTextArea("-para vale -");

+        sp = new JScrollPane(txtparaValue);

+        getContentPane().add(sp);

+        sp.setAutoscrolls(true);

+

+        addbut = new JButton("Add");

+        getContentPane().add(addbut);

+        addbut.addActionListener(this);

+

+

+        paraName.setBounds(insets.left + 5, insets.top + 6, 100, 24);

+        paravale.setBounds(insets.left + 5, insets.top + 34, 100, 24);

+        sp.setBounds(insets.left + 110, insets.top + 34, 160, 60);

+        txtpraName.setBounds(insets.left + 110, insets.top + 6, 160, 24);

+        addbut.setBounds(insets.left + 100, insets.top + 100, 60, 24);

+

+        setSize(getPreferredSize());

+        setResizable(false);

+    }

+

+    public void showDialog(String in, JTextArea textarea, int position) {

+        this.textarea = textarea;

+        this.position = position;

+        this.show();

+        this.val = in;

+        this.setVisible(true);

+    }

+

+    public String hideForm() {

+        return this.val;

+    }

+

+    public void actionPerformed(ActionEvent e) {

+        Object obj = e.getSource();

+        if (obj == addbut) {

+            String str = "<parameter locked=\"false\" name=\"" + txtpraName.getText().trim() + "\">\n"

+                    + txtparaValue.getText() + "\n" +

+                    "</parameter>\n";

+            val = str;

+            textarea.insert(str, position + 1);

+            this.setVisible(false);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ArchiveBean.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ArchiveBean.java
new file mode 100644
index 0000000..3ccbac7
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ArchiveBean.java
@@ -0,0 +1,245 @@
+package org.apache.ideaplugin.bean;

+

+import java.io.File;

+import java.io.FileNotFoundException;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Calendar;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 17, 2005

+ * Time: 11:40:40 PM

+ */

+public class ArchiveBean {

+

+    private boolean singleService = false;

+    private boolean generetServiceDesc = false;

+    private ArrayList classLocation = new ArrayList();

+    private File classLoc;

+    private ClassLoader classLoader;

+    private String ServiceXML;

+

+    public String fileSeparator = System.getProperty("file.separator");

+

+    private ArrayList libs = new ArrayList();

+    private ArrayList tempLibs = new ArrayList();

+    private ArrayList tempWsdls = new ArrayList();

+

+

+    private ArrayList wsdls = new ArrayList();

+

+    private String outPath;

+    private String archiveName;

+    private ArrayList servicelsit = new ArrayList();

+

+

+    public ArrayList getTempWsdls() {

+        return tempWsdls;

+    }

+

+    public void setTempWsdls(ArrayList tempWsdls) {

+        this.tempWsdls = tempWsdls;

+    }

+

+    public ArrayList getTempLibs() {

+        return tempLibs;

+    }

+

+    public void setTempLibs(ArrayList tempLibs) {

+        this.tempLibs = tempLibs;

+    }

+

+    public File getClassLoc() {

+        return classLoc;

+    }

+

+    public void setClassLoc(File classLoc) {

+        this.classLoc = classLoc;

+    }

+

+    public ArrayList getServicelsit() {

+        return servicelsit;

+    }

+

+    public void addToServicelsit(ServiceObj service) {

+        for (int count =0;count<servicelsit.size();count++)

+        {

+            if (((ServiceObj)servicelsit.get(count)).getServiceName().equalsIgnoreCase(service.getServiceName()))

+            {

+                servicelsit.remove(count);

+                servicelsit.add(service);

+                return;

+            }

+

+        }

+        servicelsit.add(service);

+    }

+

+    public boolean isSingleService() {

+        return singleService;

+    }

+

+    public void setSingleService(boolean singleService) {

+        this.singleService = singleService;

+    }

+

+    public boolean isGeneretServiceDesc() {

+        return generetServiceDesc;

+    }

+

+    public void setGeneretServiceDesc(boolean generetServiceDesc) {

+        this.generetServiceDesc = generetServiceDesc;

+    }

+

+    public ArrayList getClassLocation() {

+        return classLocation;

+    }

+

+    public void addClassLocation(File classLocation) {

+        this.classLocation.add(classLocation);

+    }

+

+    public String getServiceXML() {

+        return ServiceXML;

+    }

+

+    public void setServiceXML(String serviceXML) {

+        ServiceXML = serviceXML;

+    }

+

+    public ArrayList getLibs() {

+        return libs;

+    }

+

+    public void addLibs(ArrayList libs) {

+        this.libs.addAll(libs);

+    }

+

+    public ArrayList getWsdls() {

+        return wsdls;

+    }

+

+    public void addWsdls(ArrayList wsdls) {

+        this.wsdls.addAll(wsdls);

+    }

+

+    public String getOutPath() {

+        return outPath;

+    }

+

+    public void setOutPath(String outPath) {

+        this.outPath = outPath;

+    }

+

+    public String getArchiveName() {

+        return archiveName;

+    }

+

+    public void setArchiveName(String archiveName) {

+        this.archiveName = archiveName;

+    }

+

+    public void finsh() throws Exception {

+        //Creating out File

+        try {

+            File outFile = new File(getOutPath());

+            String time = Calendar.getInstance().getTime().toString().replace(':', '-');

+            File tempfile = new File(outFile, "temp-" + time);

+            tempfile.mkdir();

+            //creating META-INF

+            File metainf = new File(tempfile, "META-INF");

+            if (!metainf.exists()) {

+                metainf.mkdir();

+            }

+

+            // Writing services.xml

+            File servicexml = new File(metainf, "services.xml");

+            FileWriter writer = new FileWriter(servicexml);

+            writer.write(getServiceXML());

+            writer.flush();

+            writer.close();

+

+            //Coping class files

+            FileCopier fc = new FileCopier();

+            for (int count=0;count<classLocation.size();count++)

+            fc.copyFiles((File)classLocation.get(count), tempfile, null);

+

+            // Coping wsdl files

+            File lib = new File(tempfile, "lib");

+            if (!lib.exists()) {

+                lib.mkdir();

+            }

+            if (libs!=null)

+            {

+            for (int i = 0; i < libs.size(); i++) {

+                String libname = (String) libs.get(i);

+                fc.copyFiles(new File(libname), lib, null);

+            }

+            }

+

+            //coping wsdl files

+            if (wsdls!=null)

+            for (int i = 0; i < wsdls.size(); i++) {

+                String libname = (String) wsdls.get(i);

+                fc.copyFiles(new File(libname), metainf, null);

+            }

+

+            String arcivename = getArchiveName();

+            if (arcivename.indexOf(".aar") < 0) {

+                arcivename = arcivename + ".aar";

+            }

+            JarFileWriter jwriter = new JarFileWriter();

+            jwriter.writeJarFile(outFile, arcivename, tempfile);

+            //craeting the jar file

+            deleteDir(tempfile);

+//

+

+        } catch (Exception e) {

+            throw e;

+        }

+    }

+

+    private boolean deleteDir(File dir) {

+        if (dir.isDirectory()) {

+            String[] children = dir.list();

+            for (int i = 0; i < children.length; i++) {

+                boolean success = deleteDir(new File(dir, children[i]));

+                if (!success) {

+                    return false;

+                }

+            }

+        }

+

+        // The directory is now empty so delete it

+        return dir.delete();

+    }

+

+    public ClassLoader getClassLoader() {

+        return classLoader;

+    }

+

+    public void setClassLoader(ClassLoader classLoader) {

+        this.classLoader = classLoader;

+    }

+

+

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/FileCopier.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/FileCopier.java
new file mode 100644
index 0000000..7f83c9b
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/FileCopier.java
@@ -0,0 +1,63 @@
+package org.apache.ideaplugin.bean;

+

+import org.apache.tools.ant.Project;

+import org.apache.tools.ant.taskdefs.Copy;

+import org.apache.tools.ant.types.FileSet;

+

+import java.io.File;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 23, 2005

+ * Time: 6:15:54 PM

+ */

+public class FileCopier extends Copy {

+    public FileCopier() {

+        this.setProject(new Project());

+        this.getProject().init();

+        this.setTaskType("copy");

+        this.setTaskName("copy-files");

+        this.setOwningTarget(new org.apache.tools.ant.Target());

+    }

+

+    public void copyFiles(File sourceFile, File destinationDirectory, String filter) {

+

+        this.filesets.clear();

+

+        if (sourceFile.isFile())

+            this.setFile(sourceFile);

+        else {

+            FileSet fileset = new FileSet();

+            fileset.setDir(sourceFile);

+            if (filter != null) {

+                if (filter.matches("\\.\\w*")) {

+                    fileset.setIncludes("*/**/*" + filter);

+                }

+            }

+

+            this.addFileset(fileset);

+        }

+        this.setTodir(destinationDirectory);

+        this.perform();

+    }

+

+

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/JarFileWriter.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/JarFileWriter.java
new file mode 100644
index 0000000..33bcd4e
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/JarFileWriter.java
@@ -0,0 +1,63 @@
+package org.apache.ideaplugin.bean;

+

+import org.apache.tools.ant.Project;

+import org.apache.tools.ant.taskdefs.Jar;

+

+import java.io.File;

+import java.io.IOException;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 23, 2005

+ * Time: 8:48:21 PM

+ */

+public class JarFileWriter extends Jar {

+

+

+    public JarFileWriter() {

+        this.setProject(new Project());

+        this.getProject().init();

+        this.setTaskType("jar");

+        this.setTaskName("jar");

+        this.setOwningTarget(new org.apache.tools.ant.Target());

+    }

+

+    public void writeJarFile(File outputFolder, String outputFileName, File inputFileFolder) throws IOException, Exception {

+

+        if (!outputFolder.exists()) {

+            outputFolder.mkdir(); //create the output path

+        } else {

+            if (!outputFolder.isDirectory())

+                return;

+        }

+

+        File targetFile = new File(outputFolder, outputFileName);

+        this.setBasedir(inputFileFolder);

+        this.setDestFile(targetFile);

+

+        //run the task

+        this.perform();

+

+

+    }

+

+

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ObjectKeeper.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ObjectKeeper.java
new file mode 100644
index 0000000..7d796d5
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ObjectKeeper.java
@@ -0,0 +1,47 @@
+package org.apache.ideaplugin.bean;

+

+import javax.swing.*;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 17, 2005

+ * Time: 11:40:12 PM

+ */

+

+//to fill the bean

+public interface ObjectKeeper {

+

+    void fillBean(ArchiveBean bean);

+

+    //to keep a refernce to next panel

+    void setNext(JPanel next);

+

+    JPanel getNext();

+

+    //to keep a refernce to previous panel

+    void setPrivious(JPanel privious);

+

+    JPanel getPrivious();

+

+    String getTopLable();

+

+    String getLable();

+

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/OperationObj.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/OperationObj.java
new file mode 100644
index 0000000..948bc7b
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/OperationObj.java
@@ -0,0 +1,81 @@
+package org.apache.ideaplugin.bean;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 21, 2005

+ * Time: 11:36:02 PM

+ */

+public class OperationObj {

+

+    private String OpName;

+    private String ReturnValue;

+    private Integer parameters;

+    private Boolean select;

+

+    public OperationObj(String opName, String returnVale, Integer parameters, Boolean select) {

+        OpName = opName;

+        ReturnValue = returnVale;

+        this.parameters = parameters;

+        this.select = select;

+    }

+

+

+    public String getOpName() {

+        return OpName;

+    }

+

+    public void setOpName(String opName) {

+        OpName = opName;

+    }

+

+    public String getReturnValue() {

+        return ReturnValue;

+    }

+

+    public void setReturnValue(String returnValue) {

+        ReturnValue = returnValue;

+    }

+

+    public Integer getParameters() {

+        return parameters;

+    }

+

+    public void setParameters(Integer parameters) {

+        this.parameters = parameters;

+    }

+

+    public Boolean getSelect() {

+        return select;

+    }

+

+    public void setSelect(Boolean select) {

+        this.select = select;

+    }

+

+    public void printMe() {

+        System.out.println("======== Row =============");

+        System.out.println("OpName = " + OpName);

+        System.out.println("parameters = " + parameters);

+        System.out.println("ReturnValue = " + ReturnValue);

+        System.out.println("select = " + select);

+        System.out.println("==========================");

+    }

+

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ServiceObj.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ServiceObj.java
new file mode 100644
index 0000000..3b5918d
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/bean/ServiceObj.java
@@ -0,0 +1,69 @@
+package org.apache.ideaplugin.bean;

+

+import java.util.ArrayList;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 22, 2005

+ * Time: 11:11:48 PM

+ */

+public class ServiceObj {

+    private String serviceName;

+    private String serviceClass;

+    private ArrayList operations;

+

+    public ServiceObj(String serviceName, String serviceClass, ArrayList operations) {

+        this.serviceName = serviceName;

+        this.serviceClass = serviceClass;

+        this.operations = operations;

+    }

+

+    public String getServiceName() {

+        return serviceName;

+    }

+

+    public String getServiceClass() {

+        return serviceClass;

+    }

+

+    public ArrayList getOperations() {

+        return operations;

+    }

+

+    public String toString() {

+        String serviceXML = "<service name=\"" + serviceName + "\" >\n" +

+                "<description>\n" +

+                "Please Type your service description here\n" +

+                "</description>\n" +

+                "<parameter name=\"ServiceClass\" locked=\"false\">" + serviceClass + "</parameter>\n";

+        if (operations.size() > 0) {

+            serviceXML = serviceXML + "<excludeOperations>\n";

+            for (int i = 0; i < operations.size(); i++) {

+                String s = (String) operations.get(i);

+                String op = "<operation>" + s + "</operation>\n";

+                serviceXML = serviceXML + op;

+            }

+            serviceXML = serviceXML + "</excludeOperations>\n";

+        }

+        serviceXML = serviceXML + "</service>\n";

+        return serviceXML;

+    }

+

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/Axi2PluginPage.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/Axi2PluginPage.java
new file mode 100644
index 0000000..de59261
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/Axi2PluginPage.java
@@ -0,0 +1,172 @@
+package org.apache.ideaplugin.frames;
+
+import com.intellij.openapi.project.Project;
+import org.apache.axis2.tools.idea.Java2CodeFrame;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+/*
+* Copyright 2004,2005 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: Deepal Jayasinghe
+ * Date: Sep 24, 2005
+ * Time: 10:41:41 AM
+ */
+public class Axi2PluginPage extends JFrame implements ActionListener {
+    ButtonGroup cbg;
+    JRadioButton service;
+    JRadioButton javawsdl;
+    JButton butOK;
+    JButton butCancle;
+    JPanel imglbl;
+    Project project;
+    Java2CodeFrame win;
+
+    public Axi2PluginPage() {
+        setBackground(Color.white);
+        Dimension dim = getPreferredSize();
+        setSize(dim);
+        setBounds(200, 200, dim.width, dim.height);
+        setBounds(200, 200, dim.width, dim.height);
+        Axi2PluginPageLayout customLayout = new Axi2PluginPageLayout();
+
+        setFont(new Font("Helvetica", Font.PLAIN, 12));
+        getContentPane().setLayout(customLayout);
+        setTitle("Axis2 Plugin");
+        cbg = new ButtonGroup();
+        service = new JRadioButton("Create a service archive", true);
+        service.setToolTipText("Hepls package classes, libs and WSDLs to create a archive that can be deployed in Axis2");
+        cbg.add(service);
+        getContentPane().add(service);
+
+        javawsdl = new JRadioButton("WSDL2Code code generation", false);
+        javawsdl.setToolTipText("Helps generate skeletons and stubs for a given WSDL");
+        cbg.add(javawsdl);
+        getContentPane().add(javawsdl);
+
+        butOK = new JButton("OK");
+        butOK.addActionListener(this);
+        getContentPane().add(butOK);
+
+        butCancle = new JButton("Cancel");
+        butCancle.addActionListener(this);
+        getContentPane().add(butCancle);
+
+        imglbl = new LogoPage();
+        getContentPane().add(imglbl);
+
+    }
+
+    public void showUI() {
+        pack();
+        this.setVisible(true);
+        show();
+    }
+
+    public void setProject(Project project) {
+
+        this.project = project;
+    }
+
+
+    public void actionPerformed(ActionEvent e) {
+        Object obj = e.getSource();
+        if (obj == butCancle) {
+            this.hide();
+            setVisible(false);
+        } else if (obj == butOK) {
+            this.hide();
+            setVisible(false);
+            if (javawsdl.isSelected()) {
+
+                win = new Java2CodeFrame();
+                win.setResizable(false);
+                win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+                win.setProject(project);
+                win.pack();
+                win.show();
+                
+            } else {
+                ServiceArciveFrame window = new ServiceArciveFrame();
+                window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+                window.setResizable(false);
+                window.setTitle("Service Archive creation");
+                window.show();
+            }
+        }
+
+    }
+
+    public JComponent getRootComponent() {
+        return this.getRootPane();
+    }
+}
+
+class Axi2PluginPageLayout implements LayoutManager {
+
+    public Axi2PluginPageLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+    }
+
+    public void removeLayoutComponent(Component comp) {
+    }
+
+    public Dimension preferredLayoutSize(Container parent) {
+        Dimension dim = new Dimension(0, 0);
+
+        Insets insets = parent.getInsets();
+        dim.width = 320 + insets.left + insets.right;
+        dim.height = 240 + insets.top + insets.bottom;
+
+        return dim;
+    }
+
+    public Dimension minimumLayoutSize(Container parent) {
+        return new Dimension(0, 0);
+    }
+
+    public void layoutContainer(Container parent) {
+        Insets insets = parent.getInsets();
+        Component c;
+        c = parent.getComponent(0);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 24, insets.top + 104, 208, 24);
+        }
+        c = parent.getComponent(1);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 24, insets.top + 136, 208, 24);
+        }
+        c = parent.getComponent(2);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 130, insets.top + 200, 80, 24);
+        }
+        c = parent.getComponent(3);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 215, insets.top + 200, 80, 24);
+        }
+        c = parent.getComponent(4);
+        if (c.isVisible()) {
+            c.setBounds(insets.left, insets.top, 320, 80);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/BottomPanel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/BottomPanel.java
new file mode 100644
index 0000000..cdbf4d7
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/BottomPanel.java
@@ -0,0 +1,173 @@
+package org.apache.ideaplugin.frames;
+
+import org.apache.ideaplugin.bean.ArchiveBean;
+import org.apache.ideaplugin.bean.ObjectKeeper;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+/*
+* Copyright 2004,2005 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: Deepal Jayasinghe
+ * Date: Sep 18, 2005
+ * Time: 12:01:58 PM
+ */
+public class BottomPanel extends JPanel implements ActionListener {
+    JButton butBack;
+    JButton butNext;
+    JButton btnFinsh;
+    JButton btnCanclel;
+    ServiceArciveFrame parent;
+    private ArchiveBean bean;
+
+    private JPanel currentPanel = null;
+
+    public BottomPanel(JPanel currPanel, ServiceArciveFrame parent, ArchiveBean bean) {
+        BottomPanelLayout customLayout = new BottomPanelLayout();
+
+        setFont(new Font("Helvetica", Font.PLAIN, 12));
+        setLayout(customLayout);
+        this.parent = parent;
+        this.bean = bean;
+
+        butBack = new JButton("< Back");
+        add(butBack);
+        butBack.addActionListener(this);
+
+        butNext = new JButton("Next >");
+        butNext.setEnabled(false);
+        add(butNext);
+        butNext.addActionListener(this);
+
+        btnFinsh = new JButton("Finish");
+        btnFinsh.setEnabled(false);
+        add(btnFinsh);
+        btnFinsh.addActionListener(this);
+
+        btnCanclel = new JButton("Cancel");
+        add(btnCanclel);
+        btnCanclel.addActionListener(this);
+
+        this.currentPanel = currPanel;
+
+        if (((ObjectKeeper) currentPanel).getPrivious() == null) {
+            butBack.setEnabled(false);
+        }
+        setSize(getPreferredSize());
+    }
+
+    public void setEnable(boolean back, boolean next, boolean finish, boolean cancel) {
+        butBack.setEnabled(back);
+        butNext.setEnabled(next);
+        btnFinsh.setEnabled(finish);
+        btnCanclel.setEnabled(cancel);
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        Object obj = e.getSource();
+        if (obj == btnCanclel) {
+            parent.setVisible(false);
+        }
+        if (obj == butNext) {
+            ((ObjectKeeper) currentPanel).fillBean(bean);
+            if (currentPanel instanceof SelectPanel){
+               ((SelectPanel)currentPanel).process(); 
+            }
+            if(currentPanel instanceof FirstFrame){
+                parent.setEnable(true, false, false, true);
+            }
+            currentPanel = ((ObjectKeeper) currentPanel).getNext();
+
+
+            parent.Next(currentPanel);
+
+        } else if (obj == btnFinsh) {
+            ((ObjectKeeper) currentPanel).fillBean(bean);
+            try {
+                bean.finsh();
+            } catch (Exception e1) {
+               JOptionPane.showMessageDialog(parent, "An error occured while creating the service archieve",
+                    "Error!", JOptionPane.ERROR_MESSAGE);
+            parent.dispose();
+            }
+
+            JOptionPane.showMessageDialog(parent, "Service creation successful!",
+                    "Axis2 Service creation", JOptionPane.INFORMATION_MESSAGE);
+            parent.dispose();
+
+        } else if (obj == butBack) {
+            currentPanel = ((ObjectKeeper) currentPanel).getPrivious();
+            parent.Back(currentPanel);
+            if (currentPanel instanceof FirstFrame) {
+                parent.setEnable(false, true, false, true);
+            }
+        }
+    }
+}
+
+class BottomPanelLayout implements LayoutManager {
+
+    public BottomPanelLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+    }
+
+    public void removeLayoutComponent(Component comp) {
+    }
+
+    public Dimension preferredLayoutSize(Container parent) {
+        Dimension dim = new Dimension(0, 0);
+
+        Insets insets = parent.getInsets();
+        dim.width = 606 + insets.left + insets.right;
+        dim.height = 64 + insets.top + insets.bottom;
+
+        return dim;
+    }
+
+    public Dimension minimumLayoutSize(Container parent) {
+        return new Dimension(0, 0);
+    }
+
+    public void layoutContainer(Container parent) {
+        Insets insets = parent.getInsets();
+
+        Component c;
+        c = parent.getComponent(0);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 176, insets.top + 24, 80, 24);
+        }
+        c = parent.getComponent(1);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 260, insets.top + 24, 80, 24);
+        }
+        c = parent.getComponent(2);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 344, insets.top + 24, 80, 24);
+        }
+        c = parent.getComponent(3);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 426, insets.top + 24, 80, 24);
+        }
+    }
+}
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ClassSelctionPage.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ClassSelctionPage.java
new file mode 100644
index 0000000..3548580
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ClassSelctionPage.java
@@ -0,0 +1,127 @@
+package org.apache.ideaplugin.frames;

+

+import org.apache.ideaplugin.bean.ArchiveBean;

+import org.apache.ideaplugin.bean.ObjectKeeper;

+

+import javax.swing.*;

+import java.awt.*;

+import java.awt.event.ActionEvent;

+import java.awt.event.ActionListener;

+import java.io.File;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 22, 2005

+ * Time: 5:18:26 PM

+ */

+public class ClassSelctionPage extends JPanel implements ObjectKeeper, ActionListener {

+

+    protected JLabel lblClass;

+    protected JTextField txtClassDir;

+    protected JButton butSelect;

+

+    private JPanel previous;

+

+    File file;

+    Insets insets;

+    ServiceArciveFrame parent;

+//    protected SelectPanel selectPanel;

+

+

+    public ClassSelctionPage(ServiceArciveFrame parent) {

+        this.parent = parent;

+

+        setFont(new Font("Helvetica", Font.PLAIN, 12));

+        this.setLayout(null);

+        insets = parent.getInsets();

+

+        lblClass = new JLabel("Select Classes");

+        add(lblClass);

+        lblClass.setBounds(insets.left + 8, insets.top + 24, 120, 24);

+

+        txtClassDir = new JTextField("");

+        add(txtClassDir);

+        txtClassDir.setBounds(insets.left + 136, insets.top + 24, 336, 24);

+

+        butSelect = new JButton("Browse...");

+        add(butSelect);

+        butSelect.addActionListener(this);

+        butSelect.setBounds(insets.left + 480, insets.top + 24, 90, 24);

+        setSize(getPreferredSize());

+//        this.parent.setEnable(true, false, false, true);

+//        this.parent.reShow();

+

+

+    }

+

+    public void fillBean(ArchiveBean bean) {

+        bean.setClassLoc(file);

+    }

+

+    //to keep a refernce to next panel

+    public void setNext(JPanel next) {

+    }

+

+    public JPanel getNext() {

+        ResourceChooser res = new ResourceChooser(parent);

+        parent.setEnable(true,true,false,true);

+        res.setPrivious(this);

+        return res;

+//        return selectPanel;

+    }

+

+    //to keep a refernce to previous panel

+    public void setPrivious(JPanel privious) {

+        this.previous = privious;

+    }

+

+    public JPanel getPrivious() {

+        return this.previous;

+    }

+

+

+    public String getTopLable() {

+        return "Class location selection";

+    }

+

+    public String getLable() {

+        return " Select the location of service classes directory";

+    }

+

+    public void actionPerformed(ActionEvent e) {

+        Object obj = e.getSource();

+        if (obj == butSelect) {

+            parent.fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

+            int returnVal = parent.fc.showOpenDialog(this);

+            if (returnVal == JFileChooser.APPROVE_OPTION) {

+                file = parent.fc.getSelectedFile();

+                parent.fc.setCurrentDirectory(file);

+                txtClassDir.setText(file.getAbsolutePath());

+                parent.setEnable(true, true, false, true);

+//                selectPanel = new SelectPanel(parent,file);

+//                selectPanel.setPrivious(this);

+            } else {

+                txtClassDir.setText("");

+                parent.setEnable(true, false, false, true);

+            }

+        }

+    }

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/DescriptorFile.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/DescriptorFile.java
new file mode 100644
index 0000000..fcd5f35
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/DescriptorFile.java
@@ -0,0 +1,126 @@
+package org.apache.ideaplugin.frames;

+

+import org.apache.ideaplugin.ModuleDialog;

+import org.apache.ideaplugin.ParameterDialog;

+import org.apache.ideaplugin.bean.ArchiveBean;

+import org.apache.ideaplugin.bean.ObjectKeeper;

+

+import javax.swing.*;

+import java.awt.*;

+import java.awt.event.ActionEvent;

+import java.awt.event.ActionListener;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 22, 2005

+ * Time: 11:42:16 PM

+ */

+public class DescriptorFile extends JPanel implements ObjectKeeper, ActionListener {

+

+    protected JTextArea desArea;

+    protected JButton butaddpara;

+    protected JButton addModuleRef;

+    protected ServiceArciveFrame parent;

+    protected Insets insets;

+    protected JScrollPane sp;

+

+    protected ParameterDialog pradialog;

+    protected ModuleDialog moduledialog;

+    private JPanel previous;

+

+    public DescriptorFile(ServiceArciveFrame parent, String XML) {

+        this.parent = parent;

+

+        setFont(new Font("Helvetica", Font.PLAIN, 12));

+        this.setLayout(null);

+        insets = parent.getInsets();

+

+        desArea = new JTextArea(XML);

+        sp = new JScrollPane(desArea);

+        sp.setAutoscrolls(true);

+        add(sp);

+        sp.setBounds(insets.left + 8, insets.top + 26, 560, 190);

+

+        butaddpara = new JButton("+Parameter ");

+        add(butaddpara);

+        butaddpara.addActionListener(this);

+        butaddpara.setBounds(insets.left + 10, insets.top + 2, 120, 20);

+

+        addModuleRef = new JButton("+ModuleRef ");

+        add(addModuleRef);

+        addModuleRef.addActionListener(this);

+        addModuleRef.setBounds(insets.left + 135, insets.top + 2, 120, 20);

+

+        pradialog = new ParameterDialog();

+        moduledialog = new ModuleDialog();

+        setSize(getPreferredSize());

+

+

+    }

+

+

+    public void fillBean(ArchiveBean bean) {

+        bean.setServiceXML(desArea.getText());

+    }

+

+    //to keep a refernce to next panel

+    public void setNext(JPanel next) {

+    }

+

+    public JPanel getNext() {

+        OutPage out = new OutPage(parent);

+        parent.setEnable(true, true, false, true);

+        out.setPrivious(this);

+        return out;

+    }

+

+    //to keep a refernce to previous panel

+    public void setPrivious(JPanel privious) {

+        this.previous = privious;

+    }

+

+    public JPanel getPrivious() {

+        return this.previous;

+    }

+

+    public void actionPerformed(ActionEvent e) {

+        Object obj = e.getSource();

+        if (obj == butaddpara) {

+            String str = "";

+            int cusrpos = desArea.getCaretPosition();

+            pradialog.showDialog(str, desArea, cusrpos);

+            pradialog.hideForm();

+        } else if (obj == addModuleRef) {

+            String str = "";

+            int cusrpos = desArea.getCaretPosition();

+            moduledialog.showDialog(str, desArea, cusrpos);

+            moduledialog.hideForm();

+        }

+    }

+

+    public String getTopLable() {

+        return "Edit service descriptor";

+    }

+

+    public String getLable() {

+        return "Edit description file add parameters and module references";

+    }

+

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/FirstFrame.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/FirstFrame.java
new file mode 100644
index 0000000..0156b27
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/FirstFrame.java
@@ -0,0 +1,188 @@
+package org.apache.ideaplugin.frames;
+
+import org.apache.ideaplugin.bean.ArchiveBean;
+import org.apache.ideaplugin.bean.ObjectKeeper;
+
+import javax.swing.*;
+import java.awt.*;
+/*
+* Copyright 2004,2005 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: Deepal Jayasinghe
+ * Date: Sep 17, 2005
+ * Time: 10:09:08 PM
+ */
+public class FirstFrame extends JPanel implements ObjectKeeper {
+    JLabel lblArchivetype;
+    ButtonGroup cbgservoceType;
+    ButtonGroup cbggenerateserviceDesc;
+    JRadioButton radioSingle;
+    JRadioButton serviGroup;
+    JLabel label_1;
+    JRadioButton radioGenerate;
+    JRadioButton radihaveService;
+
+    private JPanel previous;
+    protected ClassSelctionPage classPage;
+    ServiceArciveFrame parent;
+
+    public FirstFrame(ServiceArciveFrame parent) {
+        this.parent = parent;
+        FirstFrameLayout customLayout = new FirstFrameLayout();
+        setFont(new Font("Helvetica", Font.PLAIN, 12));
+        setLayout(customLayout);
+
+        lblArchivetype = new JLabel("Select Archive Type");
+        add(lblArchivetype);
+
+        cbgservoceType = new ButtonGroup();
+        radioSingle = new JRadioButton("Single service Archive", true);
+        cbgservoceType.add(radioSingle);
+        add(radioSingle);
+
+        serviGroup = new JRadioButton("Service Group Archive", false);
+        cbgservoceType.add(serviGroup);
+        add(serviGroup);
+
+        label_1 = new JLabel("Do you want to generate services.xml");
+        add(label_1);
+
+        cbggenerateserviceDesc = new ButtonGroup();
+        radioGenerate = new JRadioButton("Generate services.xml", true);
+        cbggenerateserviceDesc.add(radioGenerate);
+        add(radioGenerate);
+
+        radihaveService = new JRadioButton("I already have services.xml", false);
+        cbggenerateserviceDesc.add(radihaveService);
+        add(radihaveService);
+
+        //creating next page
+//        classPage = new ClassSelctionPage(parent);
+//        classPage.setPrivious(this);
+        setSize(getPreferredSize());
+    }
+
+    public void fillBean(ArchiveBean bean) {
+        bean.setGeneretServiceDesc(radioGenerate.isSelected());
+        bean.setSingleService(radioSingle.isSelected());
+    }
+
+    //to keep a refernce to next panel
+    public void setNext(JPanel next) {
+//        this.next = next;
+    }
+
+    public JPanel getNext() {
+        boolean singleservice = radioSingle.isSelected();
+        boolean generateXML = radioGenerate.isSelected();
+        
+        if (singleservice && generateXML) {
+            parent.singleService = true;
+            parent.generateServiceXML = true;
+            ClassSelctionPage classPage = new ClassSelctionPage(parent);
+            classPage.setPrivious(this);
+            return classPage;
+        } else if (!generateXML) {
+            parent.generateServiceXML = false;
+            XMLSelectionPage xml = new XMLSelectionPage(parent);
+            xml.setPrivious(this);
+            return xml;
+        } else {
+            parent.generateServiceXML = true;
+            parent.singleService = false;
+            ClassSelctionPage classPage = new ClassSelctionPage(parent);
+            classPage.setPrivious(this);
+            return classPage;
+        }
+    }
+
+    //to keep a refernce to previous panel
+    public void setPrivious(JPanel privious) {
+        this.previous = privious;
+    }
+
+    public JPanel getPrivious() {
+        return this.previous;
+    }
+
+    public String getTopLable() {
+        return "Service Type selection";
+    }
+
+    public String getLable() {
+        return "Welcome to Axis2 service archive generation. " +
+                "Select service type";
+    }
+}
+
+class FirstFrameLayout implements LayoutManager {
+
+    public FirstFrameLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+    }
+
+    public void removeLayoutComponent(Component comp) {
+    }
+
+    public Dimension preferredLayoutSize(Container parent) {
+        Dimension dim = new Dimension(0, 0);
+
+        Insets insets = parent.getInsets();
+        dim.width = 494 + insets.left + insets.right;
+        dim.height = 281 + insets.top + insets.bottom;
+
+        return dim;
+    }
+
+    public Dimension minimumLayoutSize(Container parent) {
+        return new Dimension(0, 0);
+    }
+
+    public void layoutContainer(Container parent) {
+        Insets insets = parent.getInsets();
+
+        Component c;
+        c = parent.getComponent(0);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 24, 208, 24);
+        }
+        c = parent.getComponent(1);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 32, insets.top + 56, 184, 24);
+        }
+        c = parent.getComponent(2);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 32, insets.top + 88, 184, 24);
+        }
+        c = parent.getComponent(3);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 8, insets.top + 136, 250, 24);
+        }
+        c = parent.getComponent(4);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 32, insets.top + 168, 224, 24);
+        }
+        c = parent.getComponent(5);
+        if (c.isVisible()) {
+            c.setBounds(insets.left + 32, insets.top + 200, 224, 16);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ImagePanel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ImagePanel.java
new file mode 100644
index 0000000..81495c2
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ImagePanel.java
@@ -0,0 +1,108 @@
+package org.apache.ideaplugin.frames;

+

+import javax.swing.*;

+import java.awt.*;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 18, 2005

+ * Time: 8:50:16 PM

+ */

+public class ImagePanel extends JPanel {

+    JLabel lblImage;

+    JLabel labTop;

+    JLabel lblBottom;

+    ImageIcon apachelogo;

+

+    public ImagePanel() {

+        ImageLayout customLayout = new ImageLayout();

+        setLayout(customLayout);

+

+        java.net.URL resource = ImagePanel.class.getResource("/icons/asf-feather.png");

+        apachelogo = new ImageIcon(resource);

+

+        lblImage = new JLabel(apachelogo);

+        add(lblImage);

+        lblImage.setBackground(Color.white);

+

+        labTop = new JLabel();

+        labTop.setBackground(Color.white);

+        add(labTop);

+        labTop.setFont(new Font("Helvetica", Font.BOLD, 12));

+

+        lblBottom = new JLabel();

+        add(lblBottom);

+        lblBottom.setBackground(Color.white);

+        lblBottom.setFont(new Font("Helvetica", Font.PLAIN, 10));

+

+        setSize(getPreferredSize());

+        this.setBackground(Color.white);

+    }

+

+    public void setCaptions(String lbl1, String lbl2) {

+        labTop.setText("  " + lbl1);

+        lblBottom.setText("  " + lbl2);

+    }

+}

+

+class ImageLayout implements LayoutManager {

+

+    public ImageLayout() {

+    }

+

+    public void addLayoutComponent(String name, Component comp) {

+    }

+

+    public void removeLayoutComponent(Component comp) {

+    }

+

+    public Dimension preferredLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+

+        Insets insets = parent.getInsets();

+        dim.width = 535 + insets.left + insets.right;

+        dim.height = 77 + insets.top + insets.bottom;

+

+        return dim;

+    }

+

+    public Dimension minimumLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+        return dim;

+    }

+

+    public void layoutContainer(Container parent) {

+        Insets insets = parent.getInsets();

+

+        Component c;

+        c = parent.getComponent(0);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 368, insets.top + 0, 168, 80);

+        }

+        c = parent.getComponent(1);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 0, insets.top + 0, 368, 40);

+        }

+        c = parent.getComponent(2);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 0, insets.top + 40, 368, 40);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/LogoPage.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/LogoPage.java
new file mode 100644
index 0000000..5f17060
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/LogoPage.java
@@ -0,0 +1,81 @@
+package org.apache.ideaplugin.frames;

+

+import javax.swing.*;

+import java.awt.*;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 24, 2005

+ * Time: 11:04:25 AM

+ */

+public class LogoPage extends JPanel {

+    JLabel imagelbl;

+    ImageIcon apachelogo;

+

+    public LogoPage() {

+        LogoPageLayout customLayout = new LogoPageLayout();

+        setFont(new Font("Helvetica", Font.PLAIN, 12));

+        setLayout(customLayout);

+

+        java.net.URL resource = LogoPage.class.getResource("/icons/asf-feather.png");

+        apachelogo = new ImageIcon(resource);

+        imagelbl = new JLabel(apachelogo);

+        add(imagelbl);

+        setSize(getPreferredSize());

+        setBackground(Color.white);

+    }

+}

+

+class LogoPageLayout implements LayoutManager {

+

+    public LogoPageLayout() {

+    }

+

+    public void addLayoutComponent(String name, Component comp) {

+    }

+

+    public void removeLayoutComponent(Component comp) {

+    }

+

+    public Dimension preferredLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+

+        Insets insets = parent.getInsets();

+        dim.width = 320 + insets.left + insets.right;

+        dim.height = 76 + insets.top + insets.bottom;

+

+        return dim;

+    }

+

+    public Dimension minimumLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+        return dim;

+    }

+

+    public void layoutContainer(Container parent) {

+        Insets insets = parent.getInsets();

+

+        Component c;

+        c = parent.getComponent(0);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 8, insets.top + 8, 304, 64);

+        }

+    }

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/OutPage.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/OutPage.java
new file mode 100644
index 0000000..3609799
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/OutPage.java
@@ -0,0 +1,171 @@
+package org.apache.ideaplugin.frames;

+

+import org.apache.ideaplugin.bean.ArchiveBean;

+import org.apache.ideaplugin.bean.ObjectKeeper;

+

+import javax.swing.*;

+import java.awt.*;

+import java.awt.event.ActionEvent;

+import java.awt.event.ActionListener;

+import java.io.File;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 23, 2005

+ * Time: 5:12:13 PM

+ */

+public class OutPage extends JPanel implements ObjectKeeper, ActionListener {

+    JLabel lblout;

+    JTextField txtoutput;

+    JButton butselect;

+    JLabel lblname;

+    JTextField txtjarName;

+

+    public final JFileChooser fc = new JFileChooser();

+    ServiceArciveFrame parent;

+    private JPanel previous;

+

+

+    public OutPage(ServiceArciveFrame parent) {

+        this.parent = parent;

+        OutPageLayout customLayout = new OutPageLayout();

+        setFont(new Font("Helvetica", Font.PLAIN, 12));

+        setLayout(customLayout);

+

+        lblout = new JLabel("Select Output location");

+        add(lblout);

+

+        txtoutput = new JTextField(".");

+        add(txtoutput);

+

+        butselect = new JButton("Browse...");

+        butselect.addActionListener(this);

+        add(butselect);

+

+        lblname = new JLabel("Archive name");

+        add(lblname);

+

+        txtjarName = new JTextField("MyArchive");

+        add(txtjarName);

+

+        setSize(getPreferredSize());

+    }

+

+    public void fillBean(ArchiveBean bean) {

+        bean.setOutPath(txtoutput.getText().trim());

+        bean.setArchiveName(txtjarName.getText().trim());

+    }

+

+    //to keep a refernce to next panel

+    public void setNext(JPanel next) {

+

+    }

+

+    public JPanel getNext() {

+        return null;

+    }

+

+    //to keep a refernce to previous panel

+    public void setPrivious(JPanel privious) {

+        this.previous = privious;

+    }

+

+    public JPanel getPrivious() {

+        return this.previous;

+    }

+

+    public String getTopLable() {

+        return "Output location selection";

+    }

+

+    public String getLable() {

+        return "Select output location and archive name";

+    }

+

+

+    public void actionPerformed(ActionEvent e) {

+        Object obj = e.getSource();

+        if (obj == butselect) {

+            fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

+            int returnVal = fc.showOpenDialog(this);

+            if (returnVal == JFileChooser.APPROVE_OPTION) {

+                fc.setFileSelectionMode(JFileChooser.FILES_ONLY);

+                File newfile = fc.getSelectedFile();

+                txtoutput.setText(newfile.getAbsolutePath());

+            } else {

+                txtoutput.setText("");

+            }

+            parent.setEnable(false, false, true, true);

+        }

+    }

+}

+

+class OutPageLayout implements LayoutManager {

+

+    public OutPageLayout() {

+    }

+

+    public void addLayoutComponent(String name, Component comp) {

+    }

+

+    public void removeLayoutComponent(Component comp) {

+    }

+

+    public Dimension preferredLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+

+        Insets insets = parent.getInsets();

+        dim.width = 594 + insets.left + insets.right;

+        dim.height = 240 + insets.top + insets.bottom;

+

+        return dim;

+    }

+

+    public Dimension minimumLayoutSize(Container parent) {

+        return new Dimension(0, 0);

+    }

+

+    public void layoutContainer(Container parent) {

+        Insets insets = parent.getInsets();

+

+        Component c;

+        c = parent.getComponent(0);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 8, insets.top + 16, 152, 24);

+        }

+        c = parent.getComponent(1);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 168, insets.top + 16, 312, 24);

+        }

+        c = parent.getComponent(2);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 488, insets.top + 16, 90, 24);

+        }

+        c = parent.getComponent(3);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 8, insets.top + 56, 152, 24);

+        }

+        c = parent.getComponent(4);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 168, insets.top + 56, 312, 24);

+        }

+    }

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ResourceChooser.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ResourceChooser.java
new file mode 100644
index 0000000..6e37333
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ResourceChooser.java
@@ -0,0 +1,317 @@
+package org.apache.ideaplugin.frames;

+

+import org.apache.ideaplugin.bean.ArchiveBean;

+import org.apache.ideaplugin.bean.ObjectKeeper;

+

+import javax.swing.*;

+import java.awt.*;

+import java.awt.event.ActionEvent;

+import java.awt.event.ActionListener;

+import java.io.File;

+import java.net.MalformedURLException;

+import java.net.URL;

+import java.net.URLClassLoader;

+import java.util.ArrayList;

+import java.util.Enumeration;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 23, 2005

+ * Time: 4:30:18 PM

+ */

+public class ResourceChooser extends JPanel implements ObjectKeeper, ActionListener {

+

+    JLabel libLbl;

+    JTextField txtLibs;

+    JButton butLoad;

+    JButton butselect;

+    JList lisLibs;

+    JScrollPane sp_lisLibs;

+    JLabel lblwsdl;

+    JTextField txtwsdl;

+    JButton butSelectwsdl;

+    JButton butaddwsdl;

+    JList listwsdl;

+    JScrollPane sp_listwsdl;

+    private DefaultListModel listModellibs;

+    private DefaultListModel listModellwsdls;

+    private JPanel previous;

+

+    public final JFileChooser fc = new JFileChooser();

+    ServiceArciveFrame parent;

+

+    public ResourceChooser(ServiceArciveFrame parent) {

+        this.parent = parent;

+        ResourceChooserLayout customLayout = new ResourceChooserLayout();

+

+        setFont(new Font("Helvetica", Font.PLAIN, 12));

+        setLayout(customLayout);

+

+        libLbl = new JLabel("Select Lib files : ");

+        add(libLbl);

+

+        txtLibs = new JTextField("");

+        add(txtLibs);

+

+        butLoad = new JButton("Add");

+        butLoad.addActionListener(this);

+        add(butLoad);

+

+        butselect = new JButton("Browse...");

+        butselect.addActionListener(this);

+        add(butselect);

+

+        listModellibs = new DefaultListModel();

+        lisLibs = new JList(listModellibs);

+        sp_lisLibs = new JScrollPane(lisLibs);

+        add(sp_lisLibs);

+

+        lblwsdl = new JLabel("Select WSDLs : ");

+        add(lblwsdl);

+

+        txtwsdl = new JTextField("");

+        add(txtwsdl);

+

+        butSelectwsdl = new JButton("Browse...");

+        butSelectwsdl.addActionListener(this);

+        add(butSelectwsdl);

+

+        butaddwsdl = new JButton("Add");

+        butaddwsdl.addActionListener(this);

+        add(butaddwsdl);

+

+        listModellwsdls = new DefaultListModel();

+        listwsdl = new JList(listModellwsdls);

+        sp_listwsdl = new JScrollPane(listwsdl);

+        add(sp_listwsdl);

+

+   setSize(getPreferredSize());

+

+    }

+

+    public void actionPerformed(ActionEvent e) {

+        Object obj = e.getSource();

+        if (obj == butLoad) {

+            File lib = new File(txtLibs.getText());

+            if (lib.isFile() ) {

+                if( !listModellibs.contains(txtLibs.getText()))

+            listModellibs.addElement(txtLibs.getText());

+            }

+            else{

+                JOptionPane.showMessageDialog(parent, "The file selected is not a valid jar file",

+                    "Axis2 ServiceArchieve creation", JOptionPane.ERROR_MESSAGE);

+            }

+        } else if (obj == butselect) {

+            fc.setFileSelectionMode(JFileChooser.FILES_ONLY);

+            int returnVal = fc.showOpenDialog(this);

+            if (returnVal == JFileChooser.APPROVE_OPTION) {

+                fc.setFileSelectionMode(JFileChooser.FILES_ONLY);

+                File newfile = fc.getSelectedFile();

+                txtLibs.setText(newfile.getAbsolutePath());

+            } else {

+                txtLibs.setText("");

+            }

+        } else if (obj == butSelectwsdl) {

+            fc.setFileSelectionMode(JFileChooser.FILES_ONLY);

+            int returnVal = fc.showOpenDialog(this);

+            if (returnVal == JFileChooser.APPROVE_OPTION) {

+                fc.setFileSelectionMode(JFileChooser.FILES_ONLY);

+                File newfile = fc.getSelectedFile();

+                txtwsdl.setText(newfile.getAbsolutePath());

+            } else {

+                txtwsdl.setText("");

+            }

+        } else if (obj == butaddwsdl) {

+            File wsdl = new File(txtwsdl.getText());

+            if (wsdl.isFile()){

+                if(!listModellwsdls.contains(txtwsdl.getText()))

+            listModellwsdls.addElement(txtwsdl.getText());

+            }

+            else{

+                JOptionPane.showMessageDialog(parent, "The file selected is not a valid jar file",

+                    "Axis2 ServiceArchieve creation", JOptionPane.ERROR_MESSAGE);

+            }

+        }

+    }

+

+    public void fillBean(ArchiveBean bean) {

+

+        Enumeration enumerator = listModellibs.elements();

+        ArrayList libs = new ArrayList();

+        URL urllist[] = new URL[listModellibs.size() + 1];

+        int count = 0;

+        while (enumerator.hasMoreElements()) {

+            String s = (String) enumerator.nextElement();

+            File file = new File(s);

+            if (file.exists()) {

+                try {

+                    urllist[count] = file.toURL();

+                } catch (MalformedURLException e) {

+                    System.out.println("Error");

+                }

+            }

+            libs.add(s);

+            count++;

+        }

+        try {

+            urllist[count] = bean.getClassLoc().toURL();

+        } catch (MalformedURLException e) {

+

+        }

+        ClassLoader cls = new URLClassLoader(urllist, ResourceChooser.class.getClassLoader());

+        bean.setClassLoader(cls);

+//        Enumeration enumerator =listModellibs.elements();

+//        ArrayList libs = new ArrayList();

+//        while (enumerator.hasMoreElements()) {

+//            String s = (String) enumerator.nextElement();

+//            libs.add(s);

+//        }

+        bean.setTempLibs(libs);

+        enumerator = listModellwsdls.elements();

+        ArrayList wsdls = new ArrayList();

+        while (enumerator.hasMoreElements()) {

+            String s = (String) enumerator.nextElement();

+            wsdls.add(s);

+        }

+        bean.setTempWsdls(wsdls);

+    }

+

+

+    public String getTopLable() {

+        return "Resource Selection";

+    }

+

+    public String getLable() {

+        return "Select service specific lib and service WSDLs";

+    }

+

+    //to keep a refernce to next panel

+    public void setNext(JPanel next) {

+

+    }

+

+    public JPanel getNext() {

+

+

+

+

+        if (parent.generateServiceXML) {

+            parent.setEnable(true, false, false, true);

+            SelectPanel sp = new SelectPanel(parent, parent.bean.getClassLoc());

+            

+            

+            sp.setPrivious(this);

+            return sp;

+        } else {

+            DescriptorFile dis = new DescriptorFile(parent, parent.bean.getServiceXML());

+            parent.setEnable(true, true, false, true);

+            dis.setPrivious(this);

+            return dis;

+        }

+

+

+//        OutPage op = new OutPage(parent);

+//        op.setPrivious(this);

+//        return op;

+    }

+

+    //to keep a refernce to previous panel

+    public void setPrivious(JPanel privious) {

+        this.previous = privious;

+    }

+

+    public JPanel getPrivious() {

+        return this.previous;

+    }

+}

+

+class ResourceChooserLayout implements LayoutManager {

+

+    public ResourceChooserLayout() {

+    }

+

+    public void addLayoutComponent(String name, Component comp) {

+    }

+

+    public void removeLayoutComponent(Component comp) {

+    }

+

+    public Dimension preferredLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+

+        Insets insets = parent.getInsets();

+        dim.width = 587 + insets.left + insets.right;

+        dim.height = 278 + insets.top + insets.bottom;

+

+        return dim;

+    }

+

+    public Dimension minimumLayoutSize(Container parent) {

+        Dimension dim = new Dimension(0, 0);

+        return dim;

+    }

+

+    public void layoutContainer(Container parent) {

+        Insets insets = parent.getInsets();

+

+        Component c;

+        c = parent.getComponent(0);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 16, insets.top + 16, 100, 24);

+        }

+        c = parent.getComponent(1);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 120, insets.top + 16, 300, 24);

+        }

+        c = parent.getComponent(2);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 530, insets.top + 16, 60, 24);

+        }

+        c = parent.getComponent(3);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 430, insets.top + 16, 90, 24);

+        }

+        c = parent.getComponent(4);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 120, insets.top + 48, 300, 72);

+        }

+        c = parent.getComponent(5);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 16, insets.top + 128, 100, 24);

+        }

+        c = parent.getComponent(6);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 120, insets.top + 128, 300, 24);

+        }

+        c = parent.getComponent(7);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 430, insets.top + 128, 90, 24);

+        }

+        c = parent.getComponent(8);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 530, insets.top + 128, 60, 24);

+        }

+        c = parent.getComponent(9);

+        if (c.isVisible()) {

+            c.setBounds(insets.left + 120, insets.top + 160, 300, 72);

+        }

+    }

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/SelectPanel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/SelectPanel.java
new file mode 100644
index 0000000..9beeb36
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/SelectPanel.java
@@ -0,0 +1,326 @@
+package org.apache.ideaplugin.frames;
+
+import org.apache.ideaplugin.bean.ArchiveBean;
+import org.apache.ideaplugin.bean.ObjectKeeper;
+import org.apache.ideaplugin.bean.OperationObj;
+import org.apache.ideaplugin.bean.ServiceObj;
+import org.apache.ideaplugin.frames.table.ArchiveTableModel;
+
+import javax.swing.*;
+import javax.swing.filechooser.FileFilter;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+/*
+* Copyright 2004,2005 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: Deepal Jayasinghe
+ * Date: Sep 18, 2005
+ * Time: 9:11:54 PM
+ */
+public class SelectPanel extends JPanel implements ObjectKeeper, ActionListener {
+
+    protected JLabel lblClass;
+    protected JLabel lblServiceNam;
+    protected JTextField txtClassDir;
+    protected JTextField txtServiceName;
+    protected JButton butSelect;
+    protected JButton load;
+    protected JScrollPane sp;
+    protected JLabel tablelbl;
+
+    private JPanel previous;
+    protected File file;
+    protected Insets insets;
+    protected ServiceArciveFrame parent;
+    protected String fileName;
+    protected int count = 1;
+    protected HashMap operations;
+    protected DescriptorFile disfile;
+    protected ClassSelctionPage classPage;
+    protected String sgXMl;
+    ArrayList servicelsit;
+
+    public SelectPanel(ServiceArciveFrame parent, File file) {
+        this.parent = parent;
+        this.file = file;
+
+        setFont(new Font("Helvetica", Font.PLAIN, 12));
+        this.setLayout(null);
+
+        insets = parent.getInsets();
+
+        lblClass = new JLabel("Select Service Classes");
+        add(lblClass);
+        lblClass.setBounds(insets.left + 8, insets.top + 2, 130, 24);
+
+        txtClassDir = new JTextField("");
+        add(txtClassDir);
+        txtClassDir.setBounds(insets.left + 140, insets.top + 2, 280, 24);
+
+        butSelect = new JButton("Browse...");
+        add(butSelect);
+        butSelect.addActionListener(this);
+        butSelect.setBounds(insets.left + 420, insets.top + 2, 90, 24);
+
+
+        load = new JButton(" Load ");
+        add(load);
+        load.addActionListener(this);
+        load.setBounds(insets.left + 512, insets.top + 2, 70, 24);
+
+
+        lblServiceNam = new JLabel("Service Name : ");
+        add(lblServiceNam);
+        lblServiceNam.setBounds(insets.left + 10, insets.top + 185, 100, 24);
+        txtServiceName = new JTextField("");
+        add(txtServiceName);
+        txtServiceName.setBounds(insets.left + 115, insets.top + 185, 120, 24);
+        lblServiceNam.setVisible(false);
+        txtServiceName.setVisible(false);
+        setSize(getPreferredSize());
+        parent.fc.setFileFilter(new ClassFileFilter());
+    }
+
+    public void fillBean(ArchiveBean bean) {
+        bean.addClassLocation(bean.getClassLoc());
+        bean.setServiceXML(sgXMl);
+        bean.addLibs(bean.getTempLibs());
+        bean.addWsdls(bean.getTempWsdls());
+    }
+
+    //to keep a refernce to next panel
+    public void setNext(JPanel next) {
+        //no one call this
+    }
+
+    public JPanel getNext() {
+        parent.setEnable(true, true, false, true);
+        if (classPage != null) {
+
+         classPage.setPrivious(this);
+            return classPage;
+        }
+        return disfile;
+    }
+
+    //to keep a refernce to previous panel
+    public void setPrivious(JPanel privious) {
+        this.previous = privious;
+    }
+
+    public JPanel getPrivious() {
+        return this.previous;
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        Object obj = e.getSource();
+        if (obj == butSelect) {
+            parent.fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
+            int returnVal = parent.fc.showOpenDialog(this);
+            if (returnVal == JFileChooser.APPROVE_OPTION) {
+
+                File newfile = parent.fc.getSelectedFile();
+                String newFile = newfile.getPath();
+                int index = newFile.indexOf(file.getAbsolutePath().trim());
+                if (index >= 0) {
+                    int lastindex = file.getAbsolutePath().trim().length();
+                    newFile = newFile.substring(lastindex + 1);
+                    char ch = parent.fileSeparator.toCharArray()[0];
+                    char newch = '.';
+                    int cindex = newFile.indexOf(ch);
+                    while (cindex >= 0) {
+                        newFile = newFile.replace(ch, newch);
+                        cindex = newFile.indexOf(ch);
+                    }
+                    fileName = newFile;
+                    int classIndex = fileName.lastIndexOf(".");
+                    fileName = fileName.substring(0, classIndex);
+                    txtClassDir.setText(fileName);
+
+
+                }
+            }
+        } else if (obj == load) {
+            if (file == null || fileName ==null) {
+                return;
+            }
+            try {
+                try {
+                    this.remove(sp);
+                    this.remove(tablelbl);
+                    lblServiceNam.setVisible(false);
+                    txtServiceName.setVisible(false);
+                } catch (Exception e1) {
+//                    e1.printStackTrace();
+                }
+
+//                ClassLoader classLoader = new URLClassLoader(
+//                        new URL[]{file.toURL()},SelectPanel.class.getClassLoader());
+
+                ClassLoader classLoader = parent.bean.getClassLoader();
+                Class serCla = Class.forName(fileName, true, classLoader);
+                Method[] methods = serCla.getDeclaredMethods();
+                operations = new HashMap();
+                if (methods.length > 0) {
+                    for (int i = 0; i < methods.length; i++) {
+                        Method method = methods[i];
+                        OperationObj operationobj = new OperationObj(method.getName(),
+                                method.getReturnType().toString(),
+                                new Integer(method.getParameterTypes().length), new Boolean(false));
+                        operations.put(method.getName(), operationobj);
+                    }
+                }
+
+                ArchiveTableModel myModel = new ArchiveTableModel(operations);
+                JTable table = new JTable(myModel);
+                tablelbl = new JLabel("Mark operation you do not want to publish ");
+                add(tablelbl);
+                tablelbl.setBounds(insets.left + 10, insets.top + 45, 400, 24);
+
+                sp = new JScrollPane(table);
+                add(sp);
+                sp.setAutoscrolls(true);
+                sp.setBounds(insets.left + 10, insets.top + 75, 550, 100);
+                txtServiceName.setText("MyService" + count);
+                lblServiceNam.setVisible(true);
+                txtServiceName.setVisible(true);
+                parent.setEnable(true,true,false,true);
+            } catch (ClassNotFoundException e1) {
+                JOptionPane.showMessageDialog(parent, "The specified file is not a valid java class",
+                            "Error!", JOptionPane.ERROR_MESSAGE);
+            }
+             catch (NoClassDefFoundError e1) {
+                JOptionPane.showMessageDialog(parent, "The specified file is not a valid java class",
+                            "Error!", JOptionPane.ERROR_MESSAGE);
+            }
+            parent.repaint();
+
+        }
+    }
+
+    public String getTopLable() {
+        return "Service class and operation selection";
+    }
+
+    public String getLable() {
+        return "First select service class and load its method operations";
+    }
+
+    public void process(){
+
+        ArrayList ops = new ArrayList();
+            Iterator opitr = operations.values().iterator();
+            while (opitr.hasNext()) {
+                OperationObj operationObj = (OperationObj) opitr.next();
+                if (operationObj.getSelect().booleanValue()) {
+                    ops.add(operationObj.getOpName());
+                }
+            }
+
+            ServiceObj service = new ServiceObj(txtServiceName.getText(), fileName, ops);
+
+            parent.bean.addToServicelsit(service);
+            if (!parent.singleService) {
+                int valu = JOptionPane.showConfirmDialog(parent, "Do you want to add an another service to group", "Service Archive",
+                        JOptionPane.YES_NO_OPTION);
+                if (valu == 0) {
+                    txtClassDir.setText("");
+                    fileName = "";
+                    try {
+                        this.remove(sp);
+                        this.remove(tablelbl);
+                        lblServiceNam.setVisible(false);
+                        txtServiceName.setVisible(false);
+                    } catch (Exception e1) {
+//                    e1.printStackTrace();
+                    }
+                    classPage = new ClassSelctionPage(parent);
+                    count++;
+                    parent.reShow();
+                    this.repaint();
+                } else {
+                    servicelsit = parent.bean.getServicelsit();
+                    parent.setEnable(false, true, false, true);
+                    sgXMl = "<serviceGroup>\n";
+                    for (int i = 0; i < servicelsit.size(); i++) {
+                        ServiceObj serviceObj = (ServiceObj) servicelsit.get(i);
+                        sgXMl = sgXMl + serviceObj.toString();
+                    }
+                    sgXMl = sgXMl + "</serviceGroup>";
+                    disfile = new DescriptorFile(parent, sgXMl);
+                    disfile.setPrivious(this);
+                }
+            } else {
+                servicelsit = parent.bean.getServicelsit();
+                parent.setEnable(false, true, false, true);
+                sgXMl = "<serviceGroup>\n";
+                for (int i = 0; i < servicelsit.size(); i++) {
+                    ServiceObj serviceObj = (ServiceObj) servicelsit.get(i);
+                    sgXMl = sgXMl + serviceObj.toString();
+                }
+                sgXMl = sgXMl + "</serviceGroup>";
+                disfile = new DescriptorFile(parent, sgXMl);
+                disfile.setPrivious(this);
+
+            }
+
+    }
+
+
+class ClassFileFilter extends FileFilter {
+
+    public boolean accept(File f) {
+        if (f.isDirectory()) {
+            return true;
+        }
+        String extension = getExtension(f);
+        if (extension != null) {
+            return extension.equals("class");
+        }
+
+        return false;
+
+    }
+
+    public String getDescription() {
+        return ".class";
+    }
+
+    private String getExtension(File f) {
+        String ext = null;
+        String s = f.getName();
+        int i = s.lastIndexOf('.');
+
+        if (i > 0 && i < s.length() - 1) {
+            ext = s.substring(i + 1).toLowerCase();
+        }
+        return ext;
+    }
+
+
+
+}
+}
+
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ServiceArciveFrame.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ServiceArciveFrame.java
new file mode 100644
index 0000000..9554fe6
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/ServiceArciveFrame.java
@@ -0,0 +1,164 @@
+package org.apache.ideaplugin.frames;
+
+import org.apache.ideaplugin.bean.ArchiveBean;
+import org.apache.ideaplugin.bean.ObjectKeeper;
+
+import javax.swing.*;
+import java.awt.*;
+/*
+* Copyright 2004,2005 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: Deepal Jayasinghe
+ * Date: Sep 18, 2005
+ * Time: 11:45:58 AM
+ */
+public class ServiceArciveFrame extends JFrame {
+
+    protected ImagePanel topPanel;
+    protected BottomPanel bottomPanel;
+    public boolean singleService;
+    public boolean generateServiceXML;
+    //  protected JPanel firstpanel ;
+    //    protected SelectPanel slectpanel;
+    protected JPanel currentpanle;
+    public String fileSeparator = System.getProperty("file.separator");
+    public final JFileChooser fc = new JFileChooser();
+    Insets insets;
+    ArchiveBean bean;
+
+    public ServiceArciveFrame() {
+        setBounds(200, 200, 600, 420);
+        getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12));
+        getContentPane().setLayout(null);
+        getContentPane().setBounds(200, 200, 600, 420);
+        bean = new ArchiveBean();
+
+        topPanel = new ImagePanel();
+        getContentPane().add(topPanel);
+        topPanel.setCaptions("Service Type selection", "Welcome to Axis2 service archive generation. " +
+                "Select service type");
+
+        currentpanle = new FirstFrame(this);
+        getContentPane().add(currentpanle);
+
+
+        bottomPanel = new BottomPanel(currentpanle, this, bean);
+        getContentPane().add(bottomPanel);
+        bottomPanel.setEnable(false, true, false, true);
+
+        insets = getInsets();
+        topPanel.setBounds(insets.left, insets.top, 608, 80);
+        currentpanle.setBounds(insets.left, insets.top + 80, 608, 260);
+        bottomPanel.setBounds(insets.left, insets.top + 328, 608, 60);
+        setSize(getPreferredSize());
+        setResizable(false);
+        
+
+    }
+
+    public void setEnable(boolean back, boolean next, boolean finish, boolean cancel) {
+        if (currentpanle instanceof FirstFrame) {
+            bottomPanel.setEnable(back, next, finish, cancel);
+        } else {
+            bottomPanel.setEnable(back, next, finish, cancel);
+        }
+
+    }
+
+    public void Next(JPanel current) {
+        currentpanle.setVisible(false);
+        try {
+            remove(currentpanle);
+        } catch (Exception e) {
+            System.out.println("");
+        }
+        getContentPane().add(current);
+        current.setBounds(insets.left, insets.top + 80, 608, 260);
+        currentpanle = current;
+        
+        reShow();
+    }
+
+    public void Back(JPanel current) {
+        currentpanle.setVisible(false);
+        try {
+            remove(currentpanle);
+        } catch (Exception e) {
+            System.out.println("");
+        }
+        getContentPane().add(current);
+        current.setBounds(insets.left, insets.top + 80, 608, 260);
+        currentpanle = current;
+        currentpanle.setVisible(true);
+        setEnable(true, true, false, true);
+        reShow();
+    }
+
+    public void reShow() {
+        ObjectKeeper keeper = (ObjectKeeper) currentpanle;
+        topPanel.setCaptions(keeper.getTopLable(), keeper.getLable());
+        this.show();
+    }
+
+    class MainFrameLayout implements LayoutManager {
+
+        public MainFrameLayout() {
+        }
+
+        public void addLayoutComponent(String name, Component comp) {
+        }
+
+        public void removeLayoutComponent(Component comp) {
+        }
+
+        public Dimension preferredLayoutSize(Container parent) {
+            Dimension dim = new Dimension(0, 0);
+
+            Insets insets = parent.getInsets();
+            dim.width = 608 + insets.left + insets.right;
+            dim.height = 400 + insets.top + insets.bottom;
+
+            return dim;
+        }
+
+        public Dimension minimumLayoutSize(Container parent) {
+            return new Dimension(0, 0);
+        }
+
+        public void layoutContainer(Container parent) {
+            Insets insets = parent.getInsets();
+
+            Component c;
+            c = parent.getComponent(0);
+            if (c.isVisible()) {
+                c.setBounds(insets.left, insets.top, 608, 80);
+            }
+            c = parent.getComponent(1);
+            if (c.isVisible()) {
+                c.setBounds(insets.left, insets.top + 80, 608, 260);
+            }
+            c = parent.getComponent(2);
+            if (c.isVisible()) {
+                c.setBounds(insets.left, insets.top + 328, 608, 60);
+            }
+//        c = parent.getComponent(3);
+//        if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+80,608,260);}
+        }
+    }
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/XMLSelectionPage.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/XMLSelectionPage.java
new file mode 100644
index 0000000..c4744b8
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/XMLSelectionPage.java
@@ -0,0 +1,177 @@
+package org.apache.ideaplugin.frames;

+

+import org.apache.ideaplugin.bean.ArchiveBean;

+import org.apache.ideaplugin.bean.ObjectKeeper;

+

+import javax.swing.*;

+import java.awt.*;

+import java.awt.event.ActionEvent;

+import java.awt.event.ActionListener;

+import java.io.ByteArrayOutputStream;

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.IOException;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 23, 2005

+ * Time: 11:26:02 PM

+ */

+public class XMLSelectionPage extends JPanel implements ObjectKeeper, ActionListener {

+    JLabel selectxml;

+    JTextField txtService;

+    JButton butSelect;

+

+    JLabel selctclass;

+    JTextField txtclass;

+    File file;

+    JButton bustSelectclss;

+    String value;

+    private JPanel previous;

+

+    protected ServiceArciveFrame parent;

+

+    public XMLSelectionPage(ServiceArciveFrame parent) {

+        Insets insets = parent.getInsets();

+        this.parent = parent;

+        setFont(new Font("Helvetica", Font.PLAIN, 12));

+        setLayout(null);

+

+        selectxml = new JLabel("Select services.xml");

+        add(selectxml);

+

+        txtService = new JTextField("");

+        add(txtService);

+

+        butSelect = new JButton("Browse...");

+        butSelect.addActionListener(this);

+        add(butSelect);

+

+        selctclass = new JLabel("Select class location");

+        add(selctclass);

+

+        txtclass = new JTextField("");

+        add(txtclass);

+

+        bustSelectclss = new JButton("Browse...");

+        bustSelectclss.addActionListener(this);

+        add(bustSelectclss);

+

+        selectxml.setBounds(insets.left + 16, insets.top + 16, 168, 24);

+        txtService.setBounds(insets.left + 192, insets.top + 16, 288, 24);

+        butSelect.setBounds(insets.left + 488, insets.top + 16, 90, 24);

+

+        selctclass.setBounds(insets.left + 16, insets.top + 45, 168, 24);

+        txtclass.setBounds(insets.left + 192, insets.top + 45, 288, 24);

+        bustSelectclss.setBounds(insets.left + 488, insets.top + 45, 90, 24);

+

+        setSize(getPreferredSize());

+    }

+

+    public void fillBean(ArchiveBean bean) {

+        bean.addClassLocation(file);

+        bean.setClassLoc(file);

+        bean.setServiceXML(value);

+    }

+

+    //to keep a refernce to next panel

+    public void setNext(JPanel next) {

+

+    }

+

+    public String getTopLable() {

+        return "Class location & Service descriptor selection";

+    }

+

+    public String getLable() {

+        return " Select the location of service classes directory and services.xml";

+    }

+

+    public JPanel getNext() {

+

+        ResourceChooser resourceChooser = new ResourceChooser(parent);

+        parent.setEnable(true,true,false,true);

+        resourceChooser.setPrivious(this);

+        return resourceChooser;

+

+

+        /*

+        DescriptorFile disfile = new DescriptorFile(parent, value);

+        disfile.setPrivious(this);

+        return disfile;

+        */

+    }

+

+    //to keep a refernce to previous panel

+    public void setPrivious(JPanel privious) {

+        this.previous = privious;

+    }

+

+    public JPanel getPrivious() {

+        return this.previous;

+    }

+

+    public void actionPerformed(ActionEvent e) {

+        Object obj = e.getSource();

+        if (obj == bustSelectclss) {

+            parent.fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

+            int returnVal = parent.fc.showOpenDialog(this);

+            if (returnVal == JFileChooser.APPROVE_OPTION) {

+                file = parent.fc.getSelectedFile();

+                txtclass.setText(file.getAbsolutePath());

+                if ((new File(txtService.getText())).isFile())

+                parent.setEnable(false, true, false, true);

+            } else {

+                txtclass.setText("");

+                parent.setEnable(true, false, false, true);

+            }

+

+        } else if (obj == butSelect) {

+            parent.fc.setFileSelectionMode(JFileChooser.FILES_ONLY);

+            int returnVal = parent.fc.showOpenDialog(this);

+            if (returnVal == JFileChooser.APPROVE_OPTION) {

+                File file = parent.fc.getSelectedFile();

+

+                byte[] buf = new byte[1024];

+                int read;

+                ByteArrayOutputStream out;

+                try {

+                    FileInputStream in = new FileInputStream(file);

+

+                    out = new ByteArrayOutputStream();

+                    while ((read = in.read(buf)) > 0) {

+                        out.write(buf, 0, read);

+                    }

+                    in.close();

+                    value = new String(out.toByteArray());

+                } catch (IOException e1) {

+                }

+                txtService.setText(file.getAbsolutePath());

+                if ((new File(txtclass.getText())).isDirectory())

+                parent.setEnable(false, true, false, true);

+            } else {

+                txtService.setText("");

+                parent.setEnable(true, false, false, true);

+            }

+

+        }

+    }

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/table/ArchiveTableModel.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/table/ArchiveTableModel.java
new file mode 100644
index 0000000..553b5c7
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/frames/table/ArchiveTableModel.java
@@ -0,0 +1,97 @@
+package org.apache.ideaplugin.frames.table;

+

+import org.apache.ideaplugin.bean.OperationObj;

+

+import javax.swing.table.AbstractTableModel;

+import java.util.HashMap;

+import java.util.Iterator;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 22, 2005

+ * Time: 11:57:24 AM

+ */

+public class ArchiveTableModel extends AbstractTableModel {

+

+    final String[] columnNames = {"Operation Name", "Return Value", "Parameters ", "Select"};

+    Object[][] datvalue;

+    private HashMap datobjs;

+

+    public ArchiveTableModel(HashMap dataobject) {

+        int size = dataobject.size();

+        datvalue = new Object[size][4];

+        Iterator itr = dataobject.values().iterator();

+        int count = 0;

+        while (itr.hasNext()) {

+            OperationObj operationObj = (OperationObj) itr.next();

+            datvalue[count][0] = operationObj.getOpName();

+            datvalue[count][1] = operationObj.getReturnValue();

+            datvalue[count][2] = operationObj.getParameters();

+            datvalue[count][3] = operationObj.getSelect();

+            count++;

+        }

+        this.datobjs = dataobject;

+    }

+

+    public int getColumnCount() {

+        return columnNames.length;

+    }

+

+    public int getRowCount() {

+        return datvalue.length;

+    }

+

+    public String getColumnName(int col) {

+        return columnNames[col];

+    }

+

+    public Object getValueAt(int row, int col) {

+        return datvalue[row][col];

+    }

+

+    public Class getColumnClass(int c) {

+        return getValueAt(0, c).getClass();

+    }

+

+    public boolean isCellEditable(int row, int col) {

+        return col >= 3;

+    }

+

+    public void setValueAt(Object value, int row, int col) {

+        OperationObj obj = (OperationObj) datobjs.get(getValueAt(row, 0));

+        if (col == 3) {

+            obj.setSelect((Boolean) value);

+        }

+

+        if (datvalue[0][col] instanceof Integer) {

+            try {

+                datvalue[row][col] = new Integer((String) value);

+            } catch (NumberFormatException e) {

+                System.out.println("Error");

+            }

+        } else {

+            datvalue[row][col] = value;

+        }

+//        obj.printMe();

+    }

+}

+

+

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/plugin/Axis2IdeaPlugin.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/plugin/Axis2IdeaPlugin.java
new file mode 100644
index 0000000..998fa48
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/plugin/Axis2IdeaPlugin.java
@@ -0,0 +1,114 @@
+package org.apache.ideaplugin.plugin;

+

+import com.intellij.openapi.components.ApplicationComponent;

+import com.intellij.openapi.options.Configurable;

+import com.intellij.openapi.options.ConfigurationException;

+import com.intellij.openapi.project.Project;

+import org.apache.ideaplugin.frames.Axi2PluginPage;

+

+import javax.swing.*;

+import javax.xml.stream.XMLInputFactory;

+/*

+* Copyright 2004,2005 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.

+*

+*

+*/

+

+public class Axis2IdeaPlugin implements ApplicationComponent, Configurable {

+    private Axi2PluginPage form;

+    private ImageIcon myIcon;

+

+    /**

+     * Method is called after plugin is already created and configured. Plugin can start to communicate with

+     * other plugins only in this method.

+     */

+    public void initComponent() {

+        try {

+            XMLInputFactory.newInstance();

+        } catch (Exception e) {

+            //Fixing class loading issue

+        } catch (Throwable e) {

+            ////Fixing class loading issue

+        }

+

+        if (form == null) {

+            form = new Axi2PluginPage();

+            form.setResizable(false);

+            form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

+        }

+        if (myIcon == null) {

+            java.net.URL resource = Axis2IdeaPlugin.class.getResource("/icons/icon.png");

+            myIcon = new ImageIcon(resource);

+        }

+    }

+

+    /**

+     * This method is called on plugin disposal.

+     */

+    public void disposeComponent() {

+    }

+

+    /**

+     * Returns the name of component

+     *

+     * @return String representing component name. Use PluginName.ComponentName notation

+     *         to avoid conflicts.

+     */

+    public String getComponentName() {

+        return "ActionsSample.ActionsPlugin";

+    }

+

+    public String getDisplayName() {

+        return "Axis2 Plug-ins";

+    }

+

+    public Icon getIcon() {

+        return myIcon;

+    }

+

+    public String getHelpTopic() {

+        return "No help available";

+    }

+

+    public JComponent createComponent() {

+        if (form == null) {

+            form = new Axi2PluginPage();

+        }

+        return form.getRootComponent();

+    }

+

+    public boolean isModified() {

+        return false;

+    }

+

+    public void apply() throws ConfigurationException {

+

+    }

+

+    public void reset() {

+        //To change body of implemented methods use File | Settings | File Templates.

+    }

+

+    public void disposeUIResources() {

+        form = null;

+    }

+

+    public void showTool(Project project) {

+        form.setProject(project);

+        form.showUI();

+

+    }

+}

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/plugin/Axis2PluginAction.java b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/plugin/Axis2PluginAction.java
new file mode 100644
index 0000000..9a0bc85
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/java/org/apache/ideaplugin/plugin/Axis2PluginAction.java
@@ -0,0 +1,62 @@
+package org.apache.ideaplugin.plugin;

+

+import com.intellij.openapi.actionSystem.*;

+import com.intellij.openapi.application.Application;

+import com.intellij.openapi.application.ApplicationManager;

+import com.intellij.openapi.project.Project;

+

+import javax.swing.*;

+/*

+* Copyright 2004,2005 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: Deepal Jayasinghe

+ * Date: Sep 24, 2005

+ * Time: 10:22:08 AM

+ */

+public class Axis2PluginAction extends AnAction {

+

+    private ImageIcon myIcon;

+

+    public Axis2PluginAction() {

+        super("GC", "Axis2 plugins", null);

+    }

+

+    public void actionPerformed(AnActionEvent anActionEvent) {

+        Application application =

+                ApplicationManager.getApplication();

+        Project project = (Project) anActionEvent.getDataContext().getData(DataConstants.PROJECT);

+

+        Axis2IdeaPlugin axis2component =

+                (Axis2IdeaPlugin) application.getComponent(Axis2IdeaPlugin.class);

+        axis2component.showTool(project);

+    }

+

+    public void update(AnActionEvent event) {

+        super.update(event);

+        Presentation presentation = event.getPresentation();

+        if (ActionPlaces.MAIN_TOOLBAR.equals(event.getPlace())) {

+            if (myIcon == null) {

+                java.net.URL resource = Axis2PluginAction.class.getResource("/icons/icon.png");

+                myIcon = new ImageIcon(resource);

+            }

+            presentation.setIcon(myIcon);

+        }

+    }

+

+}

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/resources/META-INF/plexus/components.xml b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/resources/META-INF/plexus/components.xml
new file mode 100644
index 0000000..30a0e48
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/resources/META-INF/plexus/components.xml
@@ -0,0 +1,34 @@
+<component-set>

+  <components>

+    <component>

+      <role>org.apache.maven.artifact.handler.ArtifactHandler</role>

+      <role-hint>aar</role-hint>

+      <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>

+      <configuration>

+        <classifier></classifier>

+        <extension>aar</extension>

+        <type>aar</type>

+        <packaging>jar</packaging>

+        <language>java</language>

+        <addedToClasspath>false</addedToClasspath>

+      </configuration>

+    </component>

+    <component>

+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>

+      <role-hint>aar</role-hint>

+      <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>

+      <configuration>

+        <phases>

+          <process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>

+          <compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>

+          <process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>

+          <test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>

+          <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>

+          <package>org.apache.axis2.maven2:axis2-aar-maven-plugin:aar</package>

+          <install>org.apache.maven.plugins:maven-install-plugin:install</install>

+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>

+        </phases>

+      </configuration>

+    </component>

+  </components>

+</component-set>

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/resources/META-INF/plugin.xml b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/resources/META-INF/plugin.xml
new file mode 100644
index 0000000..9329602
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/main/resources/META-INF/plugin.xml
@@ -0,0 +1,58 @@
+<!DOCTYPE idea-plugin PUBLIC "Plugin/DTD" "http://plugins.intellij.net/plugin.dtd">
+<!--<idea-plugin>-->
+<idea-plugin url="http://www.apache.org/~deepal">
+
+    <!-- Plugin name -->
+    <name>Axis2 IDEA tools</name>
+
+    <!-- Description -->
+    <description> Service Archive creation and Code Generation </description>
+
+    <!-- Plugin version -->
+    <version>1.0</version>
+
+    <!-- Plugin's vendor -->
+    <!--  <vendor logo="/general/ijLogo.png">IntelliJ</vendor>-->
+    <vendor email="deepal@apache.org">Deepal Jayasinghe </vendor>
+
+    <!-- the IDEA build number which works with plugin -->
+    <idea-version since-build="2000" />
+
+    <!-- Plugin's application components -->
+    <application-components>
+        <component>
+            <!-- Component's implementation class -->
+            <implementation-class>org.apache.ideaplugin.plugin.Axis2IdeaPlugin</implementation-class>
+
+            <!-- Component's interface class -->
+            <interface-class>org.apache.ideaplugin.plugin.Axis2IdeaPlugin</interface-class>
+        </component>
+    </application-components>
+    <!-- Component's actions -->
+    <actions>
+        <!-- We use "PluginName.ComponentName.ActionName" notation for "id" to avoid conflicts -->
+        <action id="ActionsSample.ActionsPlugin.ServiceArchiveCreator"
+            class="org.apache.ideaplugin.plugin.Axis2PluginAction"
+            text="Axis2 plugins" description="Service creation and code generation">
+            <keyboard-shortcut first-keystroke="alt W" second-keystroke="C" keymap="$default"/>
+            <mouse-shortcut keystroke="ctrl alt button2" keymap="$default"/>
+        </action>
+
+        <!--    <group id="Actions.ActionsPlugin.SampleGroup" text="S_ample" description="Sample group">-->
+        <group id="Actions.ActionsPlugin.SampleGroup" text="Axis2" description="Axis2 Group">
+            <reference id="ActionsSample.ActionsPlugin.ServiceArchiveCreator"/>
+            <separator/>
+            <add-to-group group-id="MainMenu" anchor="last"/>
+            <add-to-group group-id="MainToolBar" anchor="before" relative-to-action="HelpTopics"/>
+        </group>
+
+        <!--the group below contains only the "Hello World" action defined above -->
+        <group>
+            <reference id="ActionsSample.ActionsPlugin.ServiceArchiveCreator"/>
+            <!--the group is added to the editor popup menu-->
+            <add-to-group group-id="EditorPopupMenu" anchor="after" relative-to-action="CutCopyPasteGroup"/>
+        </group>
+
+    </actions>
+
+</idea-plugin>
diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/apt/howto.apt b/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/apt/howto.apt
new file mode 100644
index 0000000..b4e4a89
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/apt/howto.apt
@@ -0,0 +1,23 @@
+ ------

+ Maven 2 Aar Plugin: configuration examples

+ ------

+ Jochen Wiedmann 

+ <jochen.wiedmann@gmail.com>

+ ------

+

+Introduction

+

+  The Aar plugin allows the packaging of an Axis 2 service aar in 3 different modes:

+

+   * aar (default): generates the aar artifact

+

+   * inplace: package the aar in the source tree

+

+   * exploded : package an exploded aar application

+

+  Each mode is materialized by a goal. For instance, to generate an exploded

+  sar from the current project, one would type

+

++--------

+  mvn aar:exploded

++---------

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/apt/introduction.apt b/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/apt/introduction.apt
new file mode 100644
index 0000000..65420ae
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/apt/introduction.apt
@@ -0,0 +1,15 @@
+ ------

+ Maven 2 Aar Plugin

+ ------

+ Jochen Wiedmann

+ <jochen.wiedmann@gmail.com>

+ ------

+

+Introduction

+

+  This plugin generates an Axis 2 service file (AAR file).

+

+  The full description of goals is available {{{howto.html}here}}.

+

+

+

diff --git a/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/site.xml b/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/site.xml
new file mode 100644
index 0000000..d6f6240
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-idea-plugin/src/site/site.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+/*
+ * Copyright 2006 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.
+ */
+-->
+
+<project name="Maven Axis 2 AAR Plugin">
+  <bannerLeft>
+    <name>Maven Axis 2 AAR Plugin</name>
+    <src>http://maven.apache.org/images/apache-maven-project.png</src>
+    <href>http://maven.apache.org/</href>
+  </bannerLeft>
+  <bannerRight>
+    <src>http://maven.apache.org/images/maven-small.gif</src>
+  </bannerRight>
+  <body>
+    <links>
+      <item name="Maven 2" href="http://maven.apache.org/maven2/"/>
+    </links>
+
+    <menu name="Overview">
+      <item name="Introduction" href="introduction.html"/>
+      <item name="How to Use" href="howto.html"/>
+    </menu>
+    ${reports}
+  </body>
+</project>
diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
new file mode 100644
index 0000000..c829276
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <parent>

+    <groupId>org.apache.axis2.maven2</groupId>

+    <artifactId>axis2-maven-tools</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+  </parent>

+  <modelVersion>4.0.0</modelVersion>

+  <artifactId>axis2-java2wsdl-maven-plugin</artifactId>

+  <name>Axis 2 Java2WSDL Maven Plugin</name>

+  <description>

+    A Maven 2 plugin for creating WSDL files from Java source.

+  </description>

+  <packaging>maven-plugin</packaging>

+  <build>

+    <sourceDirectory>src/main/java</sourceDirectory>

+    <testSourceDirectory>src/test/java</testSourceDirectory>

+  </build>

+  <dependencies>

+    <dependency>

+      <groupId>org.apache.axis2</groupId>

+      <artifactId>axis2-java2wsdl</artifactId>

+      <version>${parent.version}</version>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-plugin-api</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-project</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>junit</groupId>

+      <artifactId>junit</artifactId>

+    </dependency>

+      <dependency>

+        <groupId>org.apache.maven.shared</groupId>

+        <artifactId>maven-plugin-testing-harness</artifactId>

+      </dependency>

+  </dependencies>

+

+  <reporting>

+    <plugins>

+      <plugin>

+        <groupId>org.apache.maven.plugins</groupId>

+        <artifactId>maven-javadoc-plugin</artifactId>

+      </plugin>

+      <plugin>

+        <groupId>org.apache.maven.plugins</groupId>

+        <artifactId>maven-changes-plugin</artifactId>

+        <reportSets>

+          <reportSet>

+            <reports>

+              <report>changes-report</report>

+            </reports>

+          </reportSet>

+        </reportSets>

+      </plugin>

+    </plugins>

+  </reporting>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/changes/changes.xml b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/changes/changes.xml
new file mode 100644
index 0000000..f84801d
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/changes/changes.xml
@@ -0,0 +1,17 @@
+<document>

+  <properties>

+    <title>Changes in the Axis2 Java2WSDL plugin for Maven 2</title>

+  </properties>

+  <body>

+    <release version="1.1-SNAPSHOT" date="Not yet released">

+      <action dev="jochen" type="add">

+        Added user documentation.

+      </action>

+    </release>

+    <release version="1.0-SNAPSHOT" date="Not yet released">

+      <action dev="jochen" type="add">

+        Initial version. Never actually published.

+      </action>

+    </release>

+  </body>

+</document>

diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/main/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojo.java b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/main/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojo.java
new file mode 100644
index 0000000..9de0e53
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/main/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojo.java
@@ -0,0 +1,152 @@
+package org.apache.axis2.maven2.java2wsdl;
+
+/*
+ * Copyright 2006 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 java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+import org.apache.ws.java2wsdl.Java2WSDLCodegenEngine;
+import org.apache.ws.java2wsdl.Java2WSDLConstants;
+import org.apache.ws.java2wsdl.utils.Java2WSDLCommandLineOption;
+
+
+/**
+ * Takes a Java class as input and converts it into an equivalent
+ * WSDL file.
+ * 
+ * @goal java2wsdl
+ * @phase generate-resources
+ * @requiresDependencyResolution compile
+ */
+public class Java2WSDLMojo extends AbstractMojo {
+    /**
+     * The maven project.
+     * @parameter expression="${project}"
+     * @read-only
+     * @required
+     */
+    private MavenProject project;
+
+    /**
+     * Fully qualified name of the class, which is being inspected.
+     * @parameter expression="${axis2.java2wsdl.className}"
+     * @required
+     */
+    private String className;
+
+    /**
+     * Target namespace of the generated WSDL.
+     * @parameter expression="${axis2.java2wsdl.targetNamespace}"
+     */
+    private String targetNamespace;
+
+    /**
+     * The namespace prefix, which is being used for the WSDL's
+     * target namespace.
+     * @parameter expression="${axis2.java2wsdl.targetNamespacePrefix}"
+     */
+    private String targetNamespacePrefix;
+
+    /**
+     * The generated schemas target namespace.
+     * @parameter expression="${axis2.java2wsdl.schemaTargetNamespace}"
+     */
+    private String schemaTargetNamespace;
+
+    /**
+     * The generated schemas target namespace prefix.
+     * @parameter expression="${axis2.java2wsdl.schemaTargetNamespacePrefix}"
+     */
+    private String schemaTargetNamespacePrefix;
+
+    /**
+     * Name of the generated service.
+     * @parameter expression="${axis2.java2wsdl.serviceName}"
+     */
+    private String serviceName;
+
+    /**
+     * Name of the service file, which is being generated.
+     * @parameter expression="${axis2.java2wsdl.outputFileName}" default-value="${project.build.outputDirectory}/generated-resources/java2wsdl/service.xml"
+     */
+    private String outputFileName;
+
+    private void addToOptionMap(Map map, String option, String value) {
+        if (value != null) {
+            map.put(option,
+                    new Java2WSDLCommandLineOption(option, new String[]{value}));
+        }
+    }
+
+    /**
+     * Fills the option map. This map is passed onto
+     * the code generation API to generate the code.
+     */
+    private Map fillOptionMap() throws MojoFailureException {
+        Map optionMap = new HashMap();
+
+        if (className == null) {
+            throw new MojoFailureException("You must specify a classname");
+        }
+        addToOptionMap( optionMap,
+                        Java2WSDLConstants.CLASSNAME_OPTION,
+                        className);
+        addToOptionMap( optionMap,
+                        Java2WSDLConstants.TARGET_NAMESPACE_OPTION,
+                        targetNamespace);
+        addToOptionMap( optionMap,
+                        Java2WSDLConstants.TARGET_NAMESPACE_PREFIX_OPTION,
+                        targetNamespacePrefix);
+        addToOptionMap( optionMap,
+                        Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_OPTION,
+                        schemaTargetNamespace);
+        addToOptionMap( optionMap,
+                        Java2WSDLConstants.SCHEMA_TARGET_NAMESPACE_PREFIX_OPTION,
+                        schemaTargetNamespacePrefix);
+        addToOptionMap( optionMap,
+                        Java2WSDLConstants.SERVICE_NAME_OPTION,
+                        serviceName);
+        File f = new File(project.getBasedir(), outputFileName);
+        File dir = f.getParentFile();
+        if (!dir.isDirectory()) {
+            dir.mkdirs();
+        }
+        addToOptionMap( optionMap,
+                        Java2WSDLConstants.OUTPUT_LOCATION_OPTION,
+                        dir.getPath() );
+        addToOptionMap( optionMap,
+                        Java2WSDLConstants.OUTPUT_FILENAME_OPTION,
+                        f.getName() );
+
+        return optionMap;
+    }
+
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        Map commandLineOptions = fillOptionMap();
+        try {
+            new Java2WSDLCodegenEngine(commandLineOptions).generate();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new MojoExecutionException(e.getMessage(), e);
+        }
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/configuration.apt b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/configuration.apt
new file mode 100644
index 0000000..ef9c1ab
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/configuration.apt
@@ -0,0 +1,30 @@
+Configuration

+

+  The Java2WSDL goal takes the following parameters as input. All parameters can be set from the command line by using

+  properties. For example, the parameter "className" may be set using the property

+  "axis2.java2wsdl.className". If the parameter isn't set via property or in the POM, then a default

+  value applies.

+

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| Parameter name              | Command line property                          | Description                                    |

+|                             | Default value                                  |                                                |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| className                   | ${axis2.java2wsdl.className}                   | Fully qualified name of the class, which is    |

+|                             |                                                | being read and transformed into a WSDL.        |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| outputFileName              | ${axis2.java2wsdl.outputFileName}              | Path of the generated service file.            |

+*-----------------------------*------------------------------------------------*------------------------------------------------*

+| schemaTargetNamespace       | ${axis2.java2wsdl.schemaTargetNamespace}       | Target namespace of the generated schema.      |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| schemaTargetNamespacePrefix | ${axis2.java2wsdl.schemaTargetNamespacePrefix} | Prefix, which is being associated with the     |

+|                             |                                                | schemas target namespace.                      |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| serviceName                 | ${axis2.java2wsdl.serviceName}                 | Name of the generated web service.             |

+|                             | Unqualified name of the input class.           |                                                |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| targetNamespace             | ${axis2.java2wsdl.targetNamespace}             | Target namespace of the generated WSDL.        |

+|                             | Default namespace                              |                                                |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| targetNamespacePrefix       | ${axis2.java2wsdl.targetNamespacePrefix}       | Prefix, which is being associated with the     |

+|                             |                                                | target namespace.                              |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/goals.apt b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/goals.apt
new file mode 100644
index 0000000..4623c0e
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/goals.apt
@@ -0,0 +1,54 @@
+ ------

+ Maven 2 Java2WSDL Plugin: configuration examples

+ ------

+ Jochen Wiedmann 

+ <jochen.wiedmann@gmail.com>

+ ------

+

+Goals

+

+  The Java2WSDL plugin offers a single goal:

+

+   * java2wsdl (default): Reads a java class and generates a WSDL for invoking the classes methods as a web service.

+

+  To run the plugin, add the following section to your POM:

+

+------------------------

+  <build>

+    <plugins>

+      <plugin>

+        <groupId>org.apache.axis2.maven2</groupId>

+        <artifactId>axis2-java2wsdl-maven-plugin</artifactId>

+        <executions>

+          <execution>

+            <goals>

+              <goal>java2wsdl</goal>

+            </goals>

+          </execution>

+          <configuration>

+            <className>com.foo.myservice.MyHandler</className>

+          </configuration>

+        </executions>

+      </plugin>

+    </plugins>

+  </build>

+------------------------

+

+  The plugin will be invoked automatically in the generate-resources

+  phase. You can also invoke it directly from the command line by

+  running the command

+

++--------

+  mvn java2wsdl:java2wsdl

++---------

+

+

+The Java2WSDL Goal

+

+  By default, the plugin reads the given Java class and creates a

+  file <<<target/generated-resources/java2wsdl/service.xml>>>. The

+  Java class is given by the configuration element <<<className>>>

+  above.

+

+  See the detailed documentation on {{{configuration.html}properties}} for

+  how to configure the goal.

diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/introduction.apt b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/introduction.apt
new file mode 100644
index 0000000..921f1a8
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/apt/introduction.apt
@@ -0,0 +1,14 @@
+ ------

+ Maven 2 Java2WSDL Plugin

+ ------

+ Jochen Wiedmann

+ <jochen.wiedmann@gmail.com>

+ ------

+

+Introduction

+

+  This plugin takes as input a Java class and generates a WSDL,

+  which describes a web service for invoking the classes

+  methods.

+

+  The full description of goals is available {{{goals.html}here}}.

diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/site.xml b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/site.xml
new file mode 100644
index 0000000..a4d2c81
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/site/site.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+/*
+ * Copyright 2006 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.
+ */
+-->
+
+<project name="Maven Axis 2 Java2WSDL Plugin">
+  <bannerLeft>
+    <name>Maven Axis 2 Java2WSDL Plugin</name>
+    <src>http://maven.apache.org/images/apache-maven-project.png</src>
+    <href>http://maven.apache.org/</href>
+  </bannerLeft>
+  <bannerRight>
+    <src>http://maven.apache.org/images/maven-small.gif</src>
+  </bannerRight>
+  <body>
+    <links>
+      <item name="Apache" href="http://www.apache.org/"/>

+      <item name="Webservices" href="http://ws.apache.org/"/>

+      <item name="Axis 2" href="http://ws.apache.org/axis2/"/>

+      <item name="Maven 2" href="http://maven.apache.org/maven2/"/>
+    </links>
+
+    <menu name="Overview">
+      <item name="Introduction" href="introduction.html"/>
+      <item name="How to Use" href="howto.html"/>

+      <item name="Configuration" href="configuration.html"/>
+    </menu>
+    ${reports}
+  </body>
+</project>
diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojoTest.java b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojoTest.java
new file mode 100644
index 0000000..3dda85c
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/java/org/apache/axis2/maven2/java2wsdl/Java2WSDLMojoTest.java
@@ -0,0 +1,58 @@
+package org.apache.axis2.maven2.java2wsdl;
+
+/*
+ * Copyright 2006 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 java.io.File;
+
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
+
+
+/**
+ * Test case for running the java2wsdl goal.
+ */
+public class Java2WSDLMojoTest extends AbstractMojoTestCase {
+    private static final String WSDL_FILE = "target/generated-sources/java2wsdl/service.xml";
+
+    /**
+     * Tests running the WSDL generator.
+     */
+    public void testJava() throws Exception {
+        final String dir = "src/test/test1";
+        runTest(dir , "java2wsdl" );
+        assertTrue( new File(dir, WSDL_FILE).exists());
+    }
+
+    protected Java2WSDLMojo newMojo( String pDir, String pGoal ) throws Exception
+    {
+        final File baseDir = new File(new File(getBasedir()), pDir);
+        File testPom = new File( baseDir, "pom.xml" );
+        Java2WSDLMojo mojo = (Java2WSDLMojo) lookupMojo( pGoal, testPom );
+        MavenProjectStub project = new MavenProjectStub(){
+            public File getBasedir() { return baseDir; }
+        };
+        setVariableValueToObject(mojo, "project", project);
+        setVariableValueToObject(mojo, "outputFileName", WSDL_FILE);
+        return mojo;
+    }
+
+    protected void runTest( String pDir, String pGoal )
+        throws Exception
+    {
+        newMojo( pDir, pGoal ).execute();
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/java/org/apache/axis2/maven2/java2wsdl/test/Adder.java b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/java/org/apache/axis2/maven2/java2wsdl/test/Adder.java
new file mode 100644
index 0000000..613c72a
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/java/org/apache/axis2/maven2/java2wsdl/test/Adder.java
@@ -0,0 +1,29 @@
+package org.apache.axis2.maven2.java2wsdl.test;
+
+/*
+ * Copyright 2006 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.
+ */
+
+/**
+ * A dummy service class
+ */
+public class Adder {
+    /**
+     * Returns the sum of its parameters.
+     */
+    public int add(int p1, int p2) {
+        return p1 + p2;
+    }
+}
diff --git a/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/test1/pom.xml b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/test1/pom.xml
new file mode 100644
index 0000000..3cf0888
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-java2wsdl-maven-plugin/src/test/test1/pom.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project>

+  <modelVersion>4.0.0</modelVersion>

+  <groupId>org.apache.axis2.maven2</groupId>

+  <artifactId>axis2-wsdl2code-maven-plugin-test1</artifactId>

+  <version>1.1.0.1-SNAPSHOT</version>

+  <name>Test 1 of the axis2-wsdl2code-maven-plugin</name>

+  <build>

+    <plugins>

+      <plugin>

+        <groupId>org.apache.axis2.maven2</groupId>

+        <artifactId>axis2-java2wsdl-maven-plugin</artifactId>

+        <version>1.1.0.1-SNAPSHOT</version>

+        <configuration>

+          <className>org.apache.axis2.maven2.java2wsdl.test.Adder</className>

+        </configuration>

+      </plugin>

+    </plugins>

+  </build>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
new file mode 100644
index 0000000..59d98a8
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <parent>

+    <groupId>org.apache.axis2.maven2</groupId>

+    <artifactId>axis2-maven-tools</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+  </parent>

+  <modelVersion>4.0.0</modelVersion>

+  <artifactId>axis2-wsdl2code-maven-plugin</artifactId>

+  <name>Axis 2 WSDL2Code Maven Plugin</name>

+  <packaging>maven-plugin</packaging>

+  <description>The Axis 2 Plugin for Maven allows client side and server side sources from a WSDL.</description>

+

+  <dependencies>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-plugin-api</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-artifact</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven</groupId>

+      <artifactId>maven-project</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.axis2</groupId>

+      <artifactId>axis2-codegen</artifactId>

+      <version>${parent.version}</version>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.axis2</groupId>

+      <artifactId>axis2-kernel</artifactId>

+      <version>${parent.version}</version>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.axis2</groupId>

+      <artifactId>axis2-adb</artifactId>

+      <version>${parent.version}</version>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.axis2</groupId>

+      <artifactId>axis2-adb-codegen</artifactId>

+      <version>${parent.version}</version>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.axis2</groupId>

+      <artifactId>axis2-java2wsdl</artifactId>

+      <version>${parent.version}</version>

+    </dependency>

+    <dependency>

+      <groupId>junit</groupId>

+      <artifactId>junit</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.apache.maven.shared</groupId>

+      <artifactId>maven-plugin-testing-harness</artifactId>

+    </dependency>

+    <dependency>

+      <groupId>org.codehaus.plexus</groupId>

+      <artifactId>plexus-utils</artifactId>

+    </dependency>

+  </dependencies>

+

+  <reporting>

+    <plugins>

+      <plugin>

+        <groupId>org.apache.maven.plugins</groupId>

+        <artifactId>maven-javadoc-plugin</artifactId>

+      </plugin>

+      <plugin>

+        <groupId>org.apache.maven.plugins</groupId>

+        <artifactId>maven-changes-plugin</artifactId>

+        <reportSets>

+          <reportSet>

+            <reports>

+              <report>changes-report</report>

+            </reports>

+          </reportSet>

+        </reportSets>

+      </plugin>

+    </plugins>

+  </reporting>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/changes/changes.xml b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/changes/changes.xml
new file mode 100644
index 0000000..4e31ccc
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/changes/changes.xml
@@ -0,0 +1,17 @@
+<document>

+  <properties>

+    <title>Changes in the Axis2 WSDL2Code plugin for Maven 2</title>

+  </properties>

+  <body>

+    <release version="1.1-SNAPSHOT" date="Not yet released">

+      <action dev="jochen" type="add">

+        Added user documentation.

+      </action>

+    </release>

+    <release version="1.0-SNAPSHOT" date="Not yet released">

+      <action dev="jochen" type="add">

+        Initial version. Never actually published.

+      </action>

+    </release>

+  </body>

+</document>

diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/NamespaceURIMapping.java b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/NamespaceURIMapping.java
new file mode 100644
index 0000000..85a0805
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/NamespaceURIMapping.java
@@ -0,0 +1,34 @@
+package org.apache.axis2.maven2.wsdl2code;

+

+/**

+ * Data class for specifying URI->Package mappings.

+ */

+public class NamespaceURIMapping {

+	private String uri, packageName;

+

+	/**

+	 * Returns the package name, to which the URI shall be mapped.

+	 */

+	public String getPackageName() {

+		return packageName;

+	}

+

+	/**

+	 * Sets the package name, to which the URI shall be mapped.

+	 */

+	public void setPackageName(String pPackageName) {

+		packageName = pPackageName;

+	}

+

+	/** Returns the URI, which shall be mapped.

+	 */

+	public String getUri() {

+		return uri;

+	}

+

+	/** Sets the URI, which shall be mapped.

+	 */

+	public void setUri(String pUri) {

+		uri = pUri;

+	}

+}

diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojo.java b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojo.java
new file mode 100644
index 0000000..2dd5063
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojo.java
@@ -0,0 +1,515 @@
+package org.apache.axis2.maven2.wsdl2code;
+
+/*
+ * Copyright 2006 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 java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.MavenProject;
+
+
+/**
+ * @description A Mojo for generating Java sources from a WSDL.
+ * @goal wsdl2code
+ * @phase generate-sources
+ * @requiresDependencyResolution test
+  */
+public class WSDL2CodeMojo extends AbstractMojo
+{
+	/**
+	 * The maven project.
+	 * @parameter expression="${project}"
+	 * @read-only
+	 * @required
+	 */
+	private MavenProject project;
+
+	/**
+	 * The artifact factory.
+	 * @parameter expression="${component.org.apache.maven.artifact.factory.ArtifactFactory}"
+	 * @read-only
+	 * @required
+	 */
+	private ArtifactFactory artifactFactory;
+
+	/**
+	 * The plugins artifact list.
+	 * @parameter expression="${plugin.artifacts}"
+	 * @read-only
+	 * @required
+	 */
+	private List pluginArtifacts;
+
+	/**
+	 * The WSDL file, which is being read.
+	 * @parameter expression="${axis2.wsdl2code.wsdl}" default-value="src/main/axis2/service.wsdl"
+	 */
+	private File wsdlFile;
+
+	/**
+	 * The output directory, where the generated sources are being created.
+	 * @parameter expression="${axis2.wsdl2code.target}" default-value="${project.build.directory}/generated-sources/axis2/wsdl2code"
+	 */
+	private File outputDirectory;
+
+	/**
+	 * Package name of the generated sources; will be used to create a package structure
+	 * below the output directory.
+	 * @parameter expression="${axis2.wsdl2code.package}"
+	 * @required
+	 */
+	private String packageName;
+
+	/**
+	 * The programming language of the generated sources.
+	 * @parameter expression="${axis2.wsdl2code.language}" default-value="java"
+	 */
+    private String language;
+
+    /**
+     * The databinding framework, which is being used.
+     * @parameter expression="${axis2.wsdl2code.databindingName}" default-value="adb"
+     */
+    private String databindingName;
+
+    /**
+     * Port name, for which to generate sources. By default, sources will
+     * be generated for all ports.
+     * @parameter expression="${axis2.wsdl2code.portName}"
+     */
+    private String portName;
+
+    /**
+     * Service name, for which to generate sources. By default, sources will
+     * be generated for all services.
+     * @parameter expression="${axis2.wsdl2code.serviceName}"
+     */
+    private String serviceName;
+
+    /**
+     * Mode, for which sources are being generated; either of "sync", "async" or "both".
+     * @parameter expression="${axis2.wsdl2code.syncMode}" default-value="both"
+     */
+    private String syncMode;
+
+    /**
+     * Whether server side sources are being generated.
+     * @parameter expression="${axis2.wsdl2code.generateServerSide}" default-value="false"
+     */
+    private boolean generateServerSide;
+
+    /**
+     * Whether to generate sources for a test case.
+     * @parameter expression="${axis2.wsdl2code.generateTestCase}" default-value="false"
+     */
+    private boolean generateTestcase;
+
+    /**
+     * Whether to generate a "services.xml" file.
+     * @parameter expression="${axis2.wsdl2code.generateServicesXml}" default-value="false"
+     */
+    private boolean generateServicesXml;
+
+    /**
+     * Whether to generate simply all classes. This is only valid in conjunction with
+     * "generateServerSide".
+     * @parameter expression="${axis2.wsdl2code.generateAllClasses}" default-value="false"
+     */
+    private boolean generateAllClasses;
+
+    /**
+     * Whether to unpack classes.
+     * @parameter expression="${axis2.wsdl2code.unpackClasses}" default-value="false"
+     */
+    private boolean unpackClasses;
+
+    /**
+     * Whether to generate the server side interface.
+     * @parameter expression="${axis2.wsdl2code.generateServerSideInterface}" default-value="false"
+     */
+    private boolean generateServerSideInterface  = false;
+
+    /**
+     * @parameter expression="${axis2.wsdl2code.namespaceToPackages}"
+     */
+    private String namespaceToPackages = null;
+
+    /**
+     * @parameter
+     */
+    private NamespaceURIMapping[] namespaceURIs;
+
+    private static class InheritedArtifact
+    {
+    	private final String groupId, artifactId;
+    	private boolean added;
+    	InheritedArtifact( String pGroupId, String pArtifactId )
+    	{
+    		groupId = pGroupId;
+    		artifactId = pArtifactId;
+    	}
+    	String getGroupId() { return groupId; }
+    	String getArtifactId() { return artifactId; }
+    	boolean isAdded() { return added; }
+    	void setAdded() {
+    		if (added)
+    		{
+    			throw new IllegalStateException( "This artifact was already added: " +
+    					                         groupId + ":" + artifactId );
+    		}
+    	}
+    }
+
+    private static final InheritedArtifact[] inheritedArtifacts =
+    {
+    	new InheritedArtifact( "org.apache.axis2", "axis2-common" ),
+    	new InheritedArtifact( "org.apache.axis2", "axis2-core" ),
+    	new InheritedArtifact( "org.apache.ws.commons.axiom", "axiom-api" ),
+    	new InheritedArtifact( "org.apache.ws.commons.axiom", "axiom-impl" ),
+    	new InheritedArtifact( "org.apache.ws.commons", "neethi" ),
+    	new InheritedArtifact( "wsdl4j", "wsdl4j" ),
+    	new InheritedArtifact( "commons-httpclient", "commons-httpclient" )
+    };
+
+    private static final InheritedArtifact[] adbArtifacts =
+    {
+    	new InheritedArtifact( "org.apache.axis2", "axis2-adb" )
+    };
+
+    /**
+     * Fills the option map. This map is passed onto
+     * the code generation API to generate the code.
+     */
+    private Map fillOptionMap() throws MojoFailureException {
+        Map optionMap = new HashMap();
+
+        ////////////////////////////////////////////////////////////////
+        //WSDL file name
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
+                        getStringArray(wsdlFile.getPath())));
+        //output location
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
+                        getStringArray(outputDirectory.getPath())));
+        //////////////////////////////////////////////////////////////////
+        // Databinding type
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
+                        getStringArray(databindingName)));
+
+        if ("async".equals(syncMode)) {
+            // Async only option - forcing to generate async methods only
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_ASYNC_ONLY_OPTION,
+                            new String[0]));
+        } else if ("sync".equals(syncMode)) {
+        	// Sync only option - forcing to generate Sync methods only
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.CODEGEN_SYNC_ONLY_OPTION,
+                            new String[0]));
+        } else if ("both".equals(syncMode)) {
+        	// Do nothing
+        } else {
+        	throw new MojoFailureException("Invalid syncMode: " + syncMode +
+        			", expected either of 'sync', 'async' or 'both'.");
+        }
+
+        //Package
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION,
+                        getStringArray(packageName)));
+
+        //stub language
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.STUB_LANGUAGE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.STUB_LANGUAGE_OPTION,
+                        getStringArray(language)));
+
+
+        //server side and generate services.xml options
+        if (generateServerSide) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION,
+                            new String[0]));
+
+            //services XML generation - effective only when specified as the server side
+            if (generateServicesXml) {
+                optionMap.put(
+                        CommandLineOptionConstants.WSDL2JavaConstants
+                                .GENERATE_SERVICE_DESCRIPTION_OPTION,
+                        new CommandLineOption(
+                                CommandLineOptionConstants.WSDL2JavaConstants
+                                        .GENERATE_SERVICE_DESCRIPTION_OPTION,
+                                new String[0]));
+            }
+            //generate all option - Only valid when generating serverside code
+            if (generateAllClasses) {
+                optionMap.put(
+                        CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION,
+                        new CommandLineOption(
+                                CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION,
+                                new String[0]));
+            }
+
+        }
+
+        //generate the test case
+        if (generateTestcase) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_TEST_CASE_OPTION,
+                            new String[0]));
+        }
+
+        //Unwrap classes option - this determines whether the generated classes are inside the stub/MR
+        //or gets generates as seperate classes
+        if (unpackClasses) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.UNPACK_CLASSES_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.UNPACK_CLASSES_OPTION,
+                            new String[0]));
+        }
+
+        //server side interface option
+        if (generateServerSideInterface) {
+            optionMap.put(
+                    CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION,
+                    new CommandLineOption(
+                            CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_INTERFACE_OPTION,
+                            new String[0]));
+        }
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.SERVICE_NAME_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.SERVICE_NAME_OPTION,
+                        new String[]{serviceName}));
+
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.PORT_NAME_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.PORT_NAME_OPTION,
+                        new String[]{portName}));
+        // set the namespaces
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.NAME_SPACE_TO_PACKAGE_OPTION,
+                        new String[]{getNamespaceToPackagesMap()}));
+
+        return optionMap;
+    }
+
+    private String getNamespaceToPackagesMap() throws MojoFailureException {
+    	StringBuffer sb = new StringBuffer();
+    	if (namespaceToPackages != null) {
+    		sb.append(namespaceToPackages);
+    	}
+    	if (namespaceURIs != null) {
+    		for (int i = 0;  i < namespaceURIs.length;  i++) {
+    			NamespaceURIMapping mapping = namespaceURIs[i];
+    			String uri = mapping.getUri();
+    			if (uri == null) {
+    				throw new MojoFailureException("A namespace to package mapping requires an uri child element.");
+    			}
+    			String uriPackageName = mapping.getPackageName();
+    			if (uriPackageName != null) {
+    				throw new MojoFailureException("A namespace to package mapping requires a packageName child element.");
+    			}
+    			if(sb.length() > 0) {
+    				sb.append(",");
+    			}
+    			sb.append(uri);
+    			sb.append('=');
+    			sb.append(uriPackageName);
+    		}
+    	}
+    	return sb.toString();
+    }
+    
+    /**
+     * Utility method to convert a string into a single item string[]
+     * @param value
+     * @return Returns String[].
+     */
+    private String[] getStringArray(String value) {
+        String[] values = new String[1];
+        values[0] = value;
+        return values;
+    }
+
+    public void execute() throws MojoFailureException, MojoExecutionException {
+    	Map commandLineOptions = this.fillOptionMap();
+    	CommandLineOptionParser parser =
+                    new CommandLineOptionParser(commandLineOptions);
+    	try {
+			new CodeGenerationEngine(parser).generate();
+		} catch (CodeGenerationException e) {
+			Throwable t = e;
+			while (t.getCause() != null)
+			{
+				t = t.getCause();
+			}
+			t.printStackTrace();
+			throw new MojoExecutionException(e.getMessage(), e);
+		}
+
+		fixCompileSourceRoots();
+		fixDependencies();
+		showDependencies();
+    }
+
+    private void showDependencies()
+    {
+    	Log log = getLog();
+    	if ( !log.isDebugEnabled() )
+    	{
+    		return;
+    	}
+    	log.debug( "The projects dependency artifacts are: " );
+    	for (Iterator iter = project.getDependencyArtifacts().iterator();  iter.hasNext();  )
+    	{
+    		Artifact artifact = (Artifact) iter.next();
+    		log.debug( "    " + artifact.getGroupId() + ":" + artifact.getArtifactId() +
+    				   ":" + artifact.getVersion() + ":" + artifact.getClassifier() +
+    				   ":" + artifact.getScope() + ":" + artifact.getType() );
+    	}
+    	log.debug( "The projects transitive artifacts are: " );
+    	for (Iterator iter = project.getArtifacts().iterator();  iter.hasNext();  )
+    	{
+    		Artifact artifact = (Artifact) iter.next();
+    		log.debug( "    " + artifact.getGroupId() + ":" + artifact.getArtifactId() +
+    				   ":" + artifact.getVersion() + ":" + artifact.getClassifier() +
+    				   ":" + artifact.getScope() + ":" + artifact.getType() );
+    	}
+    }
+
+	private Artifact findArtifact(Collection pCollection, String pGroupId, String pArtifactId) {
+		for ( Iterator iter = pCollection.iterator();  iter.hasNext();  )
+    	{
+    		Artifact artifact = (Artifact) iter.next();
+    		if ( pGroupId.equals( artifact.getGroupId() )  &&
+    			 pArtifactId.equals( artifact.getArtifactId() ) )
+    		{
+    			return artifact;
+    		}
+    	}
+    	return null;
+	}
+
+	private InheritedArtifact[] getInheritedArtifacts()
+	{
+		final List list = new ArrayList();
+		list.addAll( Arrays.asList( inheritedArtifacts ) );
+		if ( "adb".equals( databindingName ) ) {
+			list.addAll( Arrays.asList( adbArtifacts ) );
+		}
+		return (InheritedArtifact[]) list.toArray( new InheritedArtifact[ list.size() ] );
+	}
+
+	private InheritedArtifact getInheritedArtifact( InheritedArtifact[] pInheritedArtifacts,
+													Artifact pArtifact )
+	{
+		for ( int i = 0;  i < pInheritedArtifacts.length;  i++ )
+		{
+			InheritedArtifact iArtifact = pInheritedArtifacts[i];
+			if ( iArtifact.getGroupId().equals( pArtifact.getGroupId() )  &&
+				 iArtifact.getArtifactId().equals( pArtifact.getArtifactId() ) )
+			{
+				return iArtifact;
+			}
+		}
+		return null;
+	}
+
+    private void fixDependencies() 
+    {
+    	final Set set = new HashSet( project.getDependencyArtifacts() );
+    	final InheritedArtifact[] inhArtifacts = getInheritedArtifacts();
+    	for (Iterator iter = pluginArtifacts.iterator();  iter.hasNext();  )
+    	{
+    		final Artifact artifact = (Artifact) iter.next();
+    		final InheritedArtifact iArtifact = getInheritedArtifact( inhArtifacts, artifact );
+    		if ( iArtifact != null )
+    		{
+    			iArtifact.setAdded();
+        		final String groupId = artifact.getGroupId();
+        		final String artifactId = artifact.getArtifactId();
+    			if ( findArtifact( project.getArtifacts(), groupId, artifactId )
+    					== null)
+    			{
+    				getLog().debug( "Adding artifact " + groupId + ":" + artifactId );
+    				Artifact artfct = artifactFactory.createArtifactWithClassifier( groupId, artifactId,
+                            													    artifact.getVersion(),
+                            													    artifact.getType(),
+                            													    artifact.getClassifier() );
+    				artfct.setScope( Artifact.SCOPE_COMPILE );
+    				set.add( artfct );
+    			}
+    			else
+    			{
+    				getLog().debug( "The artifact " + artifact.getGroupId() + ":" +
+    						        artifact.getArtifactId() + " is already present " +
+    						        " in the project and will not be added." );
+    			}
+    		}
+    	}
+    	project.setDependencyArtifacts( set );
+    }
+
+	private void fixCompileSourceRoots()
+	{
+		File srcDir = new File(outputDirectory, "src");
+		project.addCompileSourceRoot(srcDir.getPath());
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/configuration.apt b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/configuration.apt
new file mode 100644
index 0000000..719ad56
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/configuration.apt
@@ -0,0 +1,71 @@
+Configuration

+

+  The WSDL2Code goal takes the following parameters as input. All parameters can be set from the command line by using

+  properties. For example, the parameter "generateServerSide" may be set using the property

+  "axis2.wsdl2code.generateServerSide". If the parameter isn't set via property or in the POM, then a default

+  value applies.

+

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| Parameter name              | Command line property                          | Description                                    |

+|                             | Default value                                  |                                                |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| databindingName             | ${axis2.wsdl2code.databindingName}             | Data binding framework, which is being used by |

+|                             | adb                                            | the generated sources.                         |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| generateAllClasses          | ${axis2.wsdl2code.generateAllClasses}          | Whether to generate simply all classes. This   |

+|                             | false                                          | is only valid in conjunction with              |

+|                             |                                                | "generateServerSide".                          |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| generateServerSide          | ${axis2.wsdl2code.generateServerSide}          | Whether server side sources are being          |

+|                             | false                                          | generated.                                     |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| generateServerSideInterface | ${axis2.wsdl2code.generateServerSideInterface} | Whether to generate the server side            |

+|                             | false                                          | interface.                                     |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| generateServicesXml         | ${axis2.wsdl2code.generateServicesXml}         | Whether a "services.xml" file is being         |

+|                             | false                                          | generated.                                     |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| generateTestcase            | ${axis2.wsdl2code.generateTestCase}            | Whether a test case is being generated.        |

+|                             | false                                          |                                                |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| language                    | ${axis2.wsdl2code.language}                    | Programming language of the generated sources. |

+|                             | java                                           |                                                |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| namespaceToPackages         | ${axis2.wsdl2code.namespaceToPackages}         | Map of namespace URI to packages in the format |

+|                             |                                                | uri1=package1,uri2=package2,...                |

+|                             |                                                | Using this parameter is discouraged. In        |

+|                             |                                                | general, you should use the                    |

+|                             |                                                | namespaceUris parameter. However, the latter   |

+|                             |                                                | cannot be set on the command line.             |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| namespaceURIs               |                                                | Map of namespace URI to packages. Example:     |

+|                             |                                                | \<namespaceURIs\>                              |

+|                             |                                                |   \<namespaceURI\>                             |

+|                             |                                                |     \<uri\>uri1\</uri1\>                       |

+|                             |                                                |     \<package\>package1\</package\>            |

+|                             |                                                |   \</namespaceURI\>                            |

+|                             |                                                |   ...                                          |

+|                             |                                                | \</namespaceURIs\>                             |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| outputDirectory             | ${axis2.wsdl2code.target}                      | Target directory, where sources are being      |

+|                             | target/generated-sources/axis2/wsdl2code       | generated.                                     |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| packageName                 | ${axis2.wsdl2code.package}                     | Package name of the generated sources.         |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| portName                    | ${axis2.wsdl2code.portName}                    | Port name, for which sources are being         |

+|                             |                                                | generated. By default, sources are generated   |

+|                             |                                                | for all ports.                                 |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| serviceName                 | ${axis2.wsdl2code.serviceName}                 | Service name, for which sources are being      |

+|                             |                                                | generated. By default, sources are generated   |

+|                             |                                                | for all services.                              |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| syncMode                    | ${axis2.wsdl2code.syncMode}                    | Sync mode, for which sources are being         |

+|                             | both                                           | generated; either of "sync", "async", or       |

+|                             |                                                | "both" (default).                              |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

+| unpackClasses               | ${axis2.wsdl2code.unpackClasses}               | Whether to unpack classes.                     |

+*-----------------------------+------------------------------------------------+------------------------------------------------|

+| wsdlFile                    | ${axis2.wsdl2code.wsdl}                        | Location of the WSDL file, which is read as    |

+|                             | src/main/axis2/service.wsdl                    | input.                                         |

+*-----------------------------+------------------------------------------------+------------------------------------------------+

diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/goals.apt b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/goals.apt
new file mode 100644
index 0000000..3687fbb
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/goals.apt
@@ -0,0 +1,55 @@
+ ------

+ Maven 2 WSDL2Code Plugin: configuration examples

+ ------

+ Jochen Wiedmann 

+ <jochen.wiedmann@gmail.com>

+ ------

+

+Goals

+

+  The WSDl2Code offers a single goal:

+

+   * wsdl2code (default): Reads the WSDL and generates code.

+

+  To run the plugin, add the following section to your POM:

+

+------------------------

+  <build>

+    <plugins>

+      <plugin>

+        <groupId>org.apache.axis2.maven2</groupId>

+        <artifactId>axis2-wsdl2code-maven-plugin</artifactId>

+        <executions>

+          <execution>

+            <goals>

+              <goal>wsdl2code</goal>

+            </goals>

+          </execution>

+          <configuration>

+            <packageName>com.foo.myservice</packageName>

+          </configuration>

+        </executions>

+      </plugin>

+    </plugins>

+  </build>

+------------------------

+

+  The plugin will be invoked automatically in the generate-sources

+  phase. You can also invoke it directly from the command line by

+  running the command

+

++--------

+  mvn wsdl2code:wsdl2code

++---------

+

+

+The WSDL2Code Goal

+

+  By default, the plugin reads the file <<<src/main/axis2/service.wsdl>>>.

+  Sources for the Java programming language and the ADB data binding are

+  generated into <<<target/generated-sources/axis2/wsdl2code>>>.

+  Note the configuration element <<<packageName>>> above, which sets

+  the package name, thus a subdirectory.

+

+  See the detailed documentation on {{{configuration.html}properties}} for

+  how to configure the goal.

diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/introduction.apt b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/introduction.apt
new file mode 100644
index 0000000..8dd6883
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/apt/introduction.apt
@@ -0,0 +1,14 @@
+ ------

+ Maven 2 WSDL2Code Plugin

+ ------

+ Jochen Wiedmann

+ <jochen.wiedmann@gmail.com>

+ ------

+

+Introduction

+

+  This plugin takes as input a WSDL and generates client

+  and server stubs for calling or implementing a web service

+  matching the WSDL.

+

+  The full description of goals is available {{{goals.html}here}}.

diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/site.xml b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/site.xml
new file mode 100644
index 0000000..de6da3b
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/site/site.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+/*
+ * Copyright 2006 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.
+ */
+-->
+
+<project name="Maven Axis 2 WSDL2Code Plugin">
+  <bannerLeft>
+    <name>Maven Axis 2 WSDL2Code Plugin</name>
+    <src>http://maven.apache.org/images/apache-maven-project.png</src>
+    <href>http://maven.apache.org/</href>
+  </bannerLeft>
+  <bannerRight>
+    <src>http://maven.apache.org/images/maven-small.gif</src>
+  </bannerRight>
+  <body>
+    <links>
+      <item name="Apache" href="http://www.apache.org/"/>

+      <item name="Webservices" href="http://ws.apache.org/"/>

+      <item name="Axis 2" href="http://ws.apache.org/axis2/"/>

+      <item name="Maven 2" href="http://maven.apache.org/maven2/"/>
+    </links>
+
+    <menu name="Overview">
+      <item name="Introduction" href="introduction.html"/>
+      <item name="How to Use" href="howto.html"/>

+      <item name="Configuration" href="configuration.html"/>
+    </menu>
+    ${reports}
+  </body>
+</project>
diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojoTest.java b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojoTest.java
new file mode 100644
index 0000000..777cadc
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/java/org/apache/axis2/maven2/wsdl2code/WSDL2CodeMojoTest.java
@@ -0,0 +1,61 @@
+package org.apache.axis2.maven2.wsdl2code;
+
+/*
+ * Copyright 2006 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 java.io.File;
+import java.util.ArrayList;
+import java.util.HashSet;
+
+import org.apache.axis2.maven2.wsdl2code.WSDL2CodeMojo;
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
+
+
+/**
+ * Test class for running the wsdl2code mojo.
+ */
+public class WSDL2CodeMojoTest extends AbstractMojoTestCase {
+    /**
+     * Tests running the java generator.
+     */
+    public void testJava() throws Exception {
+		runTest( "src/test/test1", "wsdl2code" );
+	}
+
+	protected WSDL2CodeMojo newMojo( String pDir, String pGoal ) throws Exception
+	{
+		File baseDir = new File(new File(getBasedir()), pDir);
+		File testPom = new File( baseDir, "pom.xml" );
+		WSDL2CodeMojo mojo = (WSDL2CodeMojo) lookupMojo( pGoal, testPom );
+		MavenProjectStub project = new MavenProjectStub();
+		project.setDependencyArtifacts( new HashSet() );
+		setVariableValueToObject(mojo, "project", project);
+		setVariableValueToObject(mojo, "pluginArtifacts", new ArrayList());
+		setVariableValueToObject(mojo, "wsdlFile", new File(baseDir, "src/main/axis2/service.wsdl"));
+		setVariableValueToObject(mojo, "outputDirectory", new File(baseDir, "target/generated-sources/axis2/wsdl2code"));
+		setVariableValueToObject(mojo, "syncMode", "both");
+		setVariableValueToObject(mojo, "databindingName", "adb");
+		setVariableValueToObject(mojo, "language", "java");
+		return mojo;
+	}

+

+	protected void runTest( String pDir, String pGoal )
+    	throws Exception
+	{
+		newMojo( pDir, pGoal ).execute();
+	}
+}
diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/resources/log4j.properties b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/resources/log4j.properties
new file mode 100644
index 0000000..58ecb07
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/resources/log4j.properties
@@ -0,0 +1,21 @@
+# Set root category priority to INFO and its only appender to CONSOLE.
+log4j.rootCategory=INFO, CONSOLE
+#log4j.rootCategory=INFO, CONSOLE, LOGFILE
+
+# Set the enterprise logger priority to FATAL
+log4j.logger.org.apache.axis2.enterprise=FATAL
+log4j.logger.de.hunsicker.jalopy.io=FATAL
+log4j.logger.httpclient.wire.header=FATAL
+log4j.logger.org.apache.commons.httpclient=FATAL
+
+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c - %m%n
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+log4j.appender.LOGFILE=org.apache.log4j.FileAppender
+log4j.appender.LOGFILE.File=axis2.log
+log4j.appender.LOGFILE.Append=true
+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/pom.xml b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/pom.xml
new file mode 100644
index 0000000..cdd33df
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project>

+  <modelVersion>4.0.0</modelVersion>

+  <groupId>org.apache.axis2.maven2</groupId>

+  <artifactId>axis2-wsdl2code-maven-plugin-test1</artifactId>

+  <version>1.1.0.1-SNAPSHOT</version>

+  <name>Test 1 of the axis2-wsdl2code-maven-plugin</name>

+  <build>

+    <plugins>

+      <plugin>

+        <groupId>org.apache.axis2.maven2</groupId>

+        <artifactId>axis2-wsdl2code-maven-plugin</artifactId>

+        <version>1.1.0.1-SNAPSHOT</version>

+        <configuration>

+          <generateServerSide>true</generateServerSide>

+          <generateServerSideInterface>true</generateServerSideInterface>

+          <generateAllClasses>true</generateAllClasses>

+          <generateServicesXml>true</generateServicesXml>

+          <packageName>demo</packageName>

+        </configuration>

+      </plugin>

+    </plugins>

+  </build>

+</project>

diff --git a/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/src/main/axis2/service.wsdl b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/src/main/axis2/service.wsdl
new file mode 100644
index 0000000..c4f647e
--- /dev/null
+++ b/rampart_1_1/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/src/main/axis2/service.wsdl
@@ -0,0 +1,93 @@
+<wsdl:definitions
+    xmlns:axis2="http://ws.apache.org/axis2"
+    xmlns:ns1="http://org.apache.axis2/xsd"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+    xmlns:ns="http://axisversion.sample/xsd"
+    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+    targetNamespace="http://ws.apache.org/axis2">
+  <wsdl:documentation>
+    xDWS service example
+  </wsdl:documentation>
+  <wsdl:types>
+    <xs:schema
+        xmlns:xs="http://www.w3.org/2001/XMLSchema"
+        attributeFormDefault="unqualified"
+        elementFormDefault="qualified"
+        targetNamespace="http://axisversion.sample/xsd">
+      <xs:element name="commands">
+        <xs:complexType/>
+      </xs:element>
+      <xs:element name="commandsResponse">
+        <xs:complexType/>
+      </xs:element>
+    </xs:schema>
+  </wsdl:types>
+  <wsdl:message name="commandsMessage">
+    <wsdl:part name="part1" element="ns:commands"/>
+  </wsdl:message>
+  <wsdl:message name="commandsResponse">
+    <wsdl:part name="part1" element="ns:commandsResponse"/>
+  </wsdl:message>
+  <wsdl:portType name="axis2-test-0.0.1PortType">
+    <wsdl:operation name="commands">
+      <wsdl:input
+          xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+          message="axis2:commandsMessage"
+          wsaw:Action="urn:commands"/>
+      <wsdl:output
+          xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+          message="axis2:commandsResponse"
+          wsaw:Action="http://ws.apache.org/axis2/xDWSPortType/commandsResponse"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="axis2-test-0.0.1SOAP11Binding" type="axis2:axis2-test-0.0.1PortType">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <wsdl:operation name="commands">
+      <soap:operation soapAction="urn:commands" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="axis2-test-0.0.1SOAP12Binding" type="axis2:axis2-test-0.0.1PortType">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <wsdl:operation name="commands">
+      <soap12:operation soapAction="urn:commands" style="document"/>
+      <wsdl:input>
+        <soap12:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="axis2-test-0.0.1HttpBinding" type="axis2:axis2-test-0.0.1PortType">
+    <http:binding verb="POST"/>
+    <wsdl:operation name="commands">
+      <http:operation location="commands"/>
+      <wsdl:input>
+        <mime:content type="text/xml"/>
+      </wsdl:input>
+      <wsdl:output>
+        <mime:content type="text/xml"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="axis2-test-0.0.1">
+    <wsdl:port name="axis2-test-0.0.1SOAP11port_http" binding="axis2:axis2-test-0.0.1SOAP11Binding">
+      <soap:address location="http://192.168.136.3:8080/axis2-webapp/services/axis2-test-0.0.1"/>
+    </wsdl:port>
+    <wsdl:port name="axis2-test-0.0.1SOAP12port_http" binding="axis2:axis2-test-0.0.1SOAP12Binding">
+      <soap12:address location="http://192.168.136.3:8080/axis2-webapp/services/axis2-test-0.0.1"/>
+    </wsdl:port>
+    <wsdl:port name="axis2-test-0.0.1Httpport0" binding="axis2:axis2-test-0.0.1HttpBinding">
+      <http:address location="http://192.168.136.3:8080/axis2-webapp/rest/axis2-test-0.0.1"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
diff --git a/rampart_1_1/modules/tool/conf/codegen/.project b/rampart_1_1/modules/tool/conf/codegen/.project
new file mode 100644
index 0000000..f34b1c7
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/codegen/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>Axis-CodegenWizard</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/rampart_1_1/modules/tool/conf/codegen/build.properties b/rampart_1_1/modules/tool/conf/codegen/build.properties
new file mode 100644
index 0000000..5646d28
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/codegen/build.properties
@@ -0,0 +1,33 @@
+source.Axis2CodegenWizard.jar = src/
+output.Axis2CodegenWizard.jar = bin/
+bin.includes = plugin.xml,\
+               Axis2CodegenWizard.jar,\
+               icons/,\
+               help_toc.xml,\
+               help/,\
+               lib/,\
+               src/,\
+               lib/activation-@activation.version@.jar,\
+               lib/annogen-@annogen.version@.jar,\
+               lib/ant-@ant.version@.jar,\
+               lib/axiom-api-@axiom.version@.jar,\
+               lib/axiom-dom-@axiom.version@.jar,\
+               lib/axiom-impl-@axiom.version@.jar,\
+               lib/axis2-@axis2_version@.jar,\
+               lib/commons-logging-@commons.logging.version@.jar,\
+               lib/log4j-@log4j.version@.jar,\
+               lib/neethi-@neethi.version@.jar,\
+               lib/stax-api-@stax.api.version@.jar,\
+               lib/wsdl4j-@wsdl4j.version@.jar,\
+               lib/wstx-@stax.impl.version@.jar,\
+               lib/xbean-@xbean.version@.jar,\
+               lib/XmlSchema-@XmlSchema.version@.jar,\
+               lib/woden-@woden.version@.jar,\
+src.includes = icons/,\
+               plugin.xml,\
+               src/,\
+               help_toc.xml,\
+               help/,\
+               .project,\
+               .classpath,\
+               build.properties
diff --git a/rampart_1_1/modules/tool/conf/codegen/help_toc.xml b/rampart_1_1/modules/tool/conf/codegen/help_toc.xml
new file mode 100644
index 0000000..9e4ee57
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/codegen/help_toc.xml
@@ -0,0 +1,3 @@
+<toc label="Axis2 Code Generator" >

+  <topic label="Code Generator" href="help/wsdl2java-plugin.html"/>

+</toc>
\ No newline at end of file
diff --git a/rampart_1_1/modules/tool/conf/codegen/icons/asf-feather.gif b/rampart_1_1/modules/tool/conf/codegen/icons/asf-feather.gif
new file mode 100644
index 0000000..41d1c33
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/codegen/icons/asf-feather.gif
Binary files differ
diff --git a/rampart_1_1/modules/tool/conf/codegen/icons/icon.gif b/rampart_1_1/modules/tool/conf/codegen/icons/icon.gif
new file mode 100644
index 0000000..6e15d8c
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/codegen/icons/icon.gif
Binary files differ
diff --git a/rampart_1_1/modules/tool/conf/codegen/plugin.xml b/rampart_1_1/modules/tool/conf/codegen/plugin.xml
new file mode 100644
index 0000000..1346847
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/codegen/plugin.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin
+   id="Axis2_Codegen_Wizard"
+   name="Axis2 Codegen Wizard Plug-in"
+   version="1.2.0"
+   provider-name="Apache Software Foundation"
+   class="org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin">
+
+   <runtime>
+      <library name="Axis2CodegenWizard.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/activation-@activation.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/annogen-@annogen.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/ant-@ant.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/axiom-api-@axiom.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/axiom-dom-@axiom.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/axiom-impl-@axiom.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/commons-logging-@commons.logging.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/axis2-@axis2_version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/log4j-@log4j.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/neethi-@neethi.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/stax-api-@stax.api.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/wsdl4j-@wsdl4j.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/wstx-@stax.impl.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/xbean-@xbean.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/XmlSchema-@XmlSchema.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/woden-@woden.version@.jar">
+         <export name="*"/>
+      </library>
+   </runtime>
+
+   <requires>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.ui.ide"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.apache.ant"/>
+   </requires>
+
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <category
+            name="Axis2 Wizards"
+            id="Axis2_Wizards">
+      </category>
+      <wizard
+            name="Axis2 Code Generator"
+            icon="icons/icon.gif"
+            category="Axis2_Wizards"
+            class="org.apache.axis2.tool.codegen.eclipse.CodeGenWizard"
+            id="org.apache.axis2.tool.codegen.eclipse.CodeGenWizard">
+      </wizard>
+   </extension>
+    <extension point="org.eclipse.help.toc">
+    <toc file="help_toc.xml" primary="true" />
+</extension>
+
+</plugin>
diff --git a/rampart_1_1/modules/tool/conf/codegen/readme.txt b/rampart_1_1/modules/tool/conf/codegen/readme.txt
new file mode 100644
index 0000000..ed989cf
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/codegen/readme.txt
@@ -0,0 +1,11 @@
+Axis2 Eclipse Codegen Wizard Installation

+-----------------------------------------

+

+1) Shut down Eclipse IDE, if already running.

+2) Please remove existing Axis2 Codegen Wizards inside ECLIPSE_HOME/plugins directory.

+3) copy the Axis2_Codegen_Wizard_<current_version> folder to the ECLIPSE_HOME/plugins directory.

+4) Start Eclipse.

+5) Axis2 wizards are available at File -> new -> other. [  ctl +n  ]

+

+

+Note : The Axis2 codegen wizard elcipse plugin only compatible with Eclipse 3.1 upwards. 
\ No newline at end of file
diff --git a/rampart_1_1/modules/tool/conf/service/.project b/rampart_1_1/modules/tool/conf/service/.project
new file mode 100644
index 0000000..46edad1
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/service/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Axis-ServiceArchiver</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/rampart_1_1/modules/tool/conf/service/build.properties b/rampart_1_1/modules/tool/conf/service/build.properties
new file mode 100644
index 0000000..42404db
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/service/build.properties
@@ -0,0 +1,21 @@
+source.Axis_Service_Archiver.jar = src/
+output.Axis_Service_Archiver.jar = bin/
+bin.includes = plugin.xml,\
+               icons/,\
+               help_toc.xml,\
+               help/,\
+               lib/,\
+               src/,\
+               lib/axis2-1.1-@axis2_version@.jar,\
+               lib/commons-logging-@commons.logging.version@.jar,\
+               lib/log4j-@log4j.version@.jar,\
+               lib/ant-@ant.version@.jar,\
+               Axis_Service_Archiver.jar
+src.includes = icons/,\
+               plugin.xml,\
+               src/,\
+               help_toc.xml,\
+               help/,\
+               .project,\
+               .classpath,\
+               build.properties
diff --git a/rampart_1_1/modules/tool/conf/service/help_toc.xml b/rampart_1_1/modules/tool/conf/service/help_toc.xml
new file mode 100644
index 0000000..eebd69c
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/service/help_toc.xml
@@ -0,0 +1,3 @@
+<toc label="Axis2 Service Archiver" >

+  <topic label="Service Archiver" href="help/servicearchiver-plugin.html"/>

+</toc>
\ No newline at end of file
diff --git a/rampart_1_1/modules/tool/conf/service/icons/asf-feather.gif b/rampart_1_1/modules/tool/conf/service/icons/asf-feather.gif
new file mode 100644
index 0000000..41d1c33
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/service/icons/asf-feather.gif
Binary files differ
diff --git a/rampart_1_1/modules/tool/conf/service/icons/sample.gif b/rampart_1_1/modules/tool/conf/service/icons/sample.gif
new file mode 100644
index 0000000..6e15d8c
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/service/icons/sample.gif
Binary files differ
diff --git a/rampart_1_1/modules/tool/conf/service/plugin.xml b/rampart_1_1/modules/tool/conf/service/plugin.xml
new file mode 100644
index 0000000..55dfd00
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/service/plugin.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin
+   id="Axis_Service_Archiver"
+   name="Axis Service Maker"
+   version="1.0.0"
+   provider-name="Apache Software Foundation"
+   class="org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver">
+
+   <runtime>
+      <library name="Axis_Service_Archiver.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/axis2-@axis2_version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/commons-logging-@commons.logging.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/log4j-@log4j.version@.jar">
+         <export name="*"/>
+      </library>
+      <library name="lib/ant-@ant.version@.jar">
+         <export name="*"/>
+      </library>
+   </runtime>
+
+   <requires>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.ui.ide"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.apache.ant"/>
+      <import plugin="org.eclipse.jface.text"/>
+   </requires>
+
+<extension
+         point="org.eclipse.ui.newWizards">
+      <category
+            name="Axis2 Wizards"
+            id="Axis2_Wizards">
+      </category>
+      <wizard
+            name="Axis2 Service Archiver"
+            icon="icons/sample.gif"
+            category="Axis2_Wizards"
+            class="org.apache.axis2.tool.service.eclipse.ui.ServiceArchiveWizard"
+            id="org.apache.axis2.tool.service.serviceWizard">
+      </wizard>
+   </extension>
+   <extension point="org.eclipse.help.toc">
+    <toc file="help_toc.xml" primary="true" />
+</extension>
+</plugin>
diff --git a/rampart_1_1/modules/tool/conf/service/readme.txt b/rampart_1_1/modules/tool/conf/service/readme.txt
new file mode 100644
index 0000000..e41b60f
--- /dev/null
+++ b/rampart_1_1/modules/tool/conf/service/readme.txt
@@ -0,0 +1,12 @@
+Axis2 Eclipse Service Archiver Wizard Installation

+--------------------------------------------------

+

+1) Shut down Eclipse IDE, if already running.

+2) If previous versions of the same plugin exists, 

+   please remove existing Axis2 Service Archiver Wizard inside ECLIPSE_HOME/plugins directory.

+3) copy the Axis_Service_Archiver_<current_version> folder to the ECLIPSE_HOME/plugins directory.

+4) Start Eclipse.

+5) Axis2 wizards are available at File -> new -> other. [  ctl +n  ]

+

+

+Note : The Axis2 service archiver wizard elcipse plugin only compatible with Eclipse 3.1 upwards. 
\ No newline at end of file
diff --git a/rampart_1_1/modules/tool/create-project.xml b/rampart_1_1/modules/tool/create-project.xml
new file mode 100644
index 0000000..27332bc
--- /dev/null
+++ b/rampart_1_1/modules/tool/create-project.xml
@@ -0,0 +1,386 @@
+<project basedir="." default="all">
+
+    <!--Set your elcipse home directory  -->
+	<property environment="env" />
+	<property name="eclipse.home" value="${env.ECLIPSE_HOME}"></property>
+	
+    <!-- properties file to load the versions of dependencies -->
+    <property file="../../etc/project.properties"/>
+    <property name="codegen.plugin.version" value="Axis2_Codegen_Wizard_1.2.0"></property>
+    <property name="service.plugin.version" value="Axis_Service_Archiver_1.0.0"></property>
+    <property name="codegen.plugin.zip.name" value="axis2-eclipse-codegen-wizard.zip"></property>
+    <property name="service.plugin.zip.name" value="axis2-eclipse-service-archiver-wizard.zip"></property>
+	
+    <property name="src" value="./src"></property>
+    <property name="codegen.src.dir" value="./axis2-eclipse-codegen-plugin/src/main/java"></property>
+    <property name="service.src.dir" value="./axis2-eclipse-service-plugin/src/main/java"></property>
+    <property name="output" value="./eclipse_projects"></property>
+	 <property name="output.target" value="${output}/target"></property>
+    <property name="service.output.dir" value="${output}/service-archiver"></property>
+    <property name="codegen.output.dir" value="${output}/code-gen"></property>
+    <property name="plugin.output.dir" value="${output}/plugin"></property>
+    <property name="codegen.plugin.output.dir" value="${plugin.output.dir}/${codegen.plugin.version}"></property>
+    <property name="service.plugin.output.dir" value="${plugin.output.dir}/${service.plugin.version}"></property>
+
+    <property name="source.dir.name" value="src"></property>
+    <property name="lib.dir.name" value="lib"></property>
+    <property name="bin.dir.name" value="bin"></property>
+    <property name="help.dir.name" value="help"></property>
+    <property name="icons.dir.name" value="icons"></property>
+
+    <property name="codegen.resource.dir" value="./conf/codegen"></property>
+    <property name="service.resource.dir" value="./conf/service"></property>
+
+    <property name="codegen.help.resource.file" value="../../xdocs/tools/1_1/eclipse/wsdl2java-plugin.html"></property>
+    <property name="service.help.resource.file" value="../../xdocs/tools/1_1/eclipse/servicearchiver-plugin.html"></property>
+    
+     <property name="codegen.help.images.dir" value="../../xdocs/tools/1_1/eclipse/images"></property>
+     <property name="service.help.images.dir" value="../../xdocs/tools/1_1/eclipse/images"></property>
+
+     <property name="axis2.lib.dir" value="../../target/lib"></property>
+     <property name="readme.file.name" value="readme.txt"></property>
+
+	 <!--Filter tockens for the copy command to filter the versions of external dependencies -->
+     <filter token="axis2_version" value="${axis2_version}" />
+     <filter token="activation.version" value="${activation.version}" />
+     <filter token="annogen.version" value="${annogen.version}" />
+     <filter token="ant.version" value="${ant.version}" />
+     <filter token="axiom.version" value="${axiom.version}" />
+     <filter token="commons.logging.version" value="${commons.logging.version}" />
+     <filter token="neethi.version" value="${neethi.version}" />
+     <filter token="stax.api.version" value="${stax.api.version}" />
+     <filter token="stax.impl.version" value="${stax.impl.version}" />
+     <filter token="xbean.version" value="${xbean.version}" />
+     <filter token="XmlSchema.version" value="${XmlSchema.version}" />
+     <filter token="log4j.version" value="${log4j.version}" />
+     <filter token="wsdl4j.version" value="${wsdl4j.version}" />
+     <filter token="woden.version" value="${woden.version}" />
+
+
+     <!--Codegen wizard libraries -->
+     <fileset id="codegen.libs" dir="${axis2.lib.dir}">
+ 		<include name="activation-${activation.version}.jar" />
+ 		<include name="annogen-${annogen.version}.jar" />
+		<include name="ant-${ant.version}.jar" />
+		<include name="axiom-api-${axiom.version}.jar" />
+		<include name="axiom-dom-${axiom.version}.jar" />
+		<include name="axiom-impl-${axiom.version}.jar" />
+	    <include name="axis2-${axis2_version}.jar" />
+		<include name="commons-logging-${commons.logging.version}.jar" />
+		<include name="log4j-${log4j.version}.jar" />
+		<include name="neethi-${neethi.version}.jar" />
+		<include name="stax-api-${stax.api.version}.jar" />
+		<include name="wsdl4j-${wsdl4j.version}.jar" />
+		<include name="wstx-${stax.impl.version}.jar" />
+		<include name="xbean-${xbean.version}.jar" />
+		<include name="XmlSchema-${XmlSchema.version}.jar" />
+		<include name="woden-${woden.version}.jar" />
+    </fileset>
+
+     <!--Service wizard libraries -->
+     <fileset id="service.libs" dir="${axis2.lib.dir}">
+	     	<include name="ant-${ant.version}.jar" />
+		<include name="log4j-${log4j.version}.jar" />
+		<include name="commons-logging-${commons.logging.version}.jar" />
+	    	<include name="axis2-${axis2_version}.jar" />
+     </fileset>
+	
+	
+    <!-- Default target to generate all the services -->
+    <target name="all">
+    	<antcall target="clean" />
+        <antcall target="generate-service-project"/>
+        <antcall target="generate-codegen-project"/>
+        <antcall target="generate-codegen-plugin"/>
+        <antcall target="generate-service-plugin"/>
+    </target>
+
+    <!-- init-->
+    <target name="init">
+        <mkdir dir="${output}"></mkdir>
+        <mkdir dir="${service.output.dir}"></mkdir>
+        <mkdir dir="${codegen.output.dir}"></mkdir>
+    </target>
+
+  <!-- Codegen Project -->
+    <!--generate the codegen project-->
+    <target name="generate-codegen-project" depends="init">
+        <!-- copy the source  -->
+        <copy todir="${codegen.output.dir}/${source.dir.name}">
+            <fileset dir="${codegen.src.dir}" excludes="**/service/**/*.java"/>
+        </copy>
+        <!-- Copy the other stuff -->
+        <copy todir="${codegen.output.dir}" filtering="on" >
+            <fileset dir="${codegen.resource.dir}" excludes="**/*.gif"></fileset>
+        </copy>
+        <!-- Copy the icons dir -->
+        <copy todir="${codegen.output.dir}">
+            <fileset dir="${codegen.resource.dir}" includes="**/*.gif"></fileset>
+        </copy>
+        <!-- create bin directory -->
+	    <mkdir dir="${codegen.output.dir}/${bin.dir.name}"></mkdir>
+        <!-- create the help directory -->
+        <mkdir dir="${codegen.output.dir}/${help.dir.name}"></mkdir>
+	    <!-- copy the help directory -->
+        <copy todir="${codegen.output.dir}/${help.dir.name}">
+            <fileset file="${codegen.help.resource.file}"></fileset>
+        </copy>
+        <!-- copy the libraries to the plugin-->
+        <copy todir="${codegen.output.dir}/${lib.dir.name}">
+            <fileset refid="codegen.libs" />
+        </copy>
+        <available property="images.dir" file="${codegen.help.images.dir}" type="dir" value="${codegen.help.images.dir}"/>
+          <copy todir="${codegen.output.dir}/${help.dir.name}/images">
+            <fileset dir="${images.dir}"/>
+         </copy>
+
+    </target>
+    
+    <!--Generate the codegen plugin -->	
+    <target name="generate-codegen-plugin" depends="init,generate-codegen-project">
+        <mkdir dir="${codegen.plugin.output.dir}"></mkdir>
+        <!-- copy the plugin.xml and help_toc.xml -->
+        <copy todir="${codegen.plugin.output.dir}">
+            <fileset dir="${codegen.output.dir}" >
+		<include name="plugin.xml" />
+		<include name="help_toc.xml" />
+		<include name="build.properties" />
+		<include name="**/ServiceResources.properties" />
+	    </fileset>
+        </copy>
+        <!-- copy the help directory-->
+        <copy todir="${codegen.plugin.output.dir}/help">
+            <fileset dir="${codegen.output.dir}/help" />
+        </copy>
+        <!-- copy the icons directory-->
+        <copy todir="${codegen.plugin.output.dir}/icons">
+            <fileset dir="${codegen.output.dir}/icons" />
+        </copy>
+        <!-- copy the libraries to the plugin-->
+        <copy todir="${codegen.plugin.output.dir}/${lib.dir.name}">
+            <fileset refid="codegen.libs" />
+        </copy>
+        <!-- copy the sources to the plugin-->
+        <copy todir="${codegen.plugin.output.dir}/${source.dir.name}">
+	    <fileset dir="${codegen.output.dir}/${source.dir.name}">
+		    <include name="org/**" />
+            </fileset>
+        </copy>
+
+	<!-- compile the plugin java files -->
+	<delete dir="${codegen.plugin.output.dir}/class"></delete>
+ 	<mkdir dir="${codegen.plugin.output.dir}/class"></mkdir>
+	<javac srcdir="${codegen.output.dir}/${source.dir.name}" 
+               destdir="${codegen.plugin.output.dir}/class" 
+               includes="org/apache/axis2/**">
+		<classpath>
+     			<fileset dir="${codegen.plugin.output.dir}/lib">
+        			<include name="**/*.jar" />
+     			</fileset>
+       			 <fileset dir="${eclipse.home}/plugins/">
+				<include name="**/*.jar" />
+     			</fileset>
+    		</classpath>	
+	</javac>
+	
+	<!-- create the Axis2CodegenWizard.jar -->
+        <copy todir="${codegen.plugin.output.dir}/class">
+            <fileset dir="${codegen.output.dir}/${source.dir.name}" >
+		<include name="**/Codegen.properties" />
+	    </fileset>
+        </copy>
+      
+        <jar destfile="${codegen.plugin.output.dir}/Axis2CodegenWizard.jar" 
+	       basedir="${codegen.plugin.output.dir}/class"
+           includes="org/apache/**"
+          />
+    </target>
+
+    <!--Install the codegen plugin -->
+    <target name="install-codegen-plugin" depends="init,generate-codegen-project,generate-codegen-plugin">
+        <delete dir="${eclipse.home}/plugins/${codegen.plugin.version}"></delete>
+          <copy todir="${eclipse.home}/plugins">
+    		<fileset dir="${plugin.output.dir}"/>
+          </copy>
+    </target>
+
+  <!-- Service Archiver Project -->
+	<!-- generate the service archiver project -->
+	<target name="generate-service-project" depends="init">
+	        <!-- copy the source -->
+	        <copy todir="${service.output.dir}/${source.dir.name}">
+	            <fileset dir="${service.src.dir}/" excludes="**/codegen/**/*.java"/>
+	        </copy>
+			<!-- Copy the other stuff -->
+	        <copy todir="${service.output.dir}" filtering="on">
+	            <fileset dir="${service.resource.dir}" excludes="**/*.gif"></fileset>
+	        </copy>
+		    <!-- Copy the icons folder -->
+            <copy todir="${service.output.dir}">
+                 <fileset dir="${service.resource.dir}" includes="**/*.gif" ></fileset>
+            </copy>
+		    <!-- create bin directory -->
+		    <mkdir dir="${service.output.dir}/${bin.dir.name}"></mkdir>
+		    <!-- create the help directory -->
+	        	<mkdir dir="${service.output.dir}/${help.dir.name}"></mkdir>
+		    <!-- copy the help directory -->
+	        <copy todir="${service.output.dir}/${help.dir.name}">
+	            <fileset file="${service.help.resource.file}"></fileset>
+	        </copy>
+	        <!-- copy the libraries to the plugin-->
+	        <copy todir="${service.output.dir}/${lib.dir.name}">
+	            <fileset refid="service.libs" />
+	        </copy>
+		 	<available property="images.dir" 
+		                    file="${service.help.images.dir}" 
+		                    type="dir" 
+		                    value="${service.help.images.dir}"/>
+	         <copy todir="${service.output.dir}/${help.dir.name}/images">
+	          <fileset dir="${images.dir}"/>
+	         </copy> 
+
+	    </target>
+
+    <!--Generate the service plugin -->	
+    <target name="generate-service-plugin" depends="init,generate-service-project">
+        <mkdir dir="${service.plugin.output.dir}"></mkdir>
+        <!-- copy the plugin.xml,build.properties and help_toc.xml -->
+        <copy todir="${service.plugin.output.dir}">
+            <fileset dir="${service.output.dir}" >
+		<include name="plugin.xml" />
+		<include name="help_toc.xml" />
+		<include name="build.properties" />
+ 		<include name="**/ServiceResources.properties" />
+	    </fileset>
+        </copy>
+        <!-- copy the help directory-->
+        <copy todir="${service.plugin.output.dir}/help">
+            <fileset dir="${service.output.dir}/help" />
+        </copy>
+        <!-- copy the icons directory-->
+        <copy todir="${service.plugin.output.dir}/icons">
+            <fileset dir="${service.output.dir}/icons" />
+        </copy>
+        <!-- copy the libraries to the plugin-->
+        <copy todir="${service.plugin.output.dir}/${lib.dir.name}">
+            <fileset refid="service.libs" />
+        </copy>
+        <!-- copy the sources to the plugin-->
+        <copy todir="${service.plugin.output.dir}/${source.dir.name}">
+	    <fileset dir="${service.output.dir}/${source.dir.name}">
+		<include name="org/**" />
+	    </fileset>
+        </copy>
+
+	<!-- compile the plugin java files -->
+	<delete dir="${service.plugin.output.dir}/class"></delete>
+ 	<mkdir dir="${service.plugin.output.dir}/class"></mkdir>
+	<javac srcdir="${service.output.dir}/${source.dir.name}" 
+               destdir="${service.plugin.output.dir}/class" 
+               includes="org/apache/axis2/**">
+		<classpath>
+     			<fileset dir="${service.plugin.output.dir}/lib">
+        			<include name="**/*.jar" />
+     			</fileset>
+       			 <fileset dir="${eclipse.home}/plugins/">
+				<include name="**/*.jar" />
+     			</fileset>
+    		</classpath>	
+	</javac>
+	
+	<!-- create the Axis_Service_Archiver.jar -->
+          <copy todir="${service.plugin.output.dir}/class">
+            <fileset dir="${service.output.dir}/${source.dir.name}" >
+                <include name="**/ServiceResources.properties" />
+            </fileset>
+          </copy>
+
+	  <jar destfile="${service.plugin.output.dir}/Axis_Service_Archiver.jar" 
+	       basedir="${service.plugin.output.dir}/class"
+           includes="org/apache/**"
+          />
+    </target>
+
+    <!--Install the service plugin -->
+    <target name="install-service-plugin" depends="init,generate-service-project,generate-service-plugin">
+        <delete dir="${eclipse.home}/plugins/${service.plugin.version}"></delete>
+          <copy todir="${eclipse.home}/plugins">
+                <fileset dir="${plugin.output.dir}"/>
+          </copy>
+    </target>
+
+    <!--Relese the plugins (this will install the plugins and build the zip version)-->
+    <target name="release-plugins">
+    	<delete dir="${output.target}" />
+    	<mkdir dir="${output.target}" />
+    	<mkdir dir="${output.target}/service/${service.plugin.version}" />
+    	<mkdir dir="${output.target}/codegen/${codegen.plugin.version}" />
+    	
+        <antcall target="install-service-plugin"/>
+        <antcall target="install-codegen-plugin"/>
+    	
+        <copy todir="${output.target}/service/${service.plugin.version}">
+              <fileset dir="${plugin.output.dir}/${service.plugin.version}"/>
+        </copy>
+        <copy todir="${output.target}/codegen/${codegen.plugin.version}">
+              <fileset dir="${plugin.output.dir}/${codegen.plugin.version}"/>
+        </copy>
+    	
+    	<!--Copy the readme.txt files -->
+        <copy todir="${output.target}/codegen">
+              <fileset file="${codegen.resource.dir}/${readme.file.name}"/>
+        </copy>
+        <copy todir="${output.target}/service">
+              <fileset file="${service.resource.dir}/${readme.file.name}"/>
+        </copy>
+    	
+    	<!--Zip the eclipse plugins to eclipse_plugins/target -->
+    	<zip destfile="${output.target}/${codegen.plugin.zip.name}"
+    	       basedir="${output.target}/codegen"
+    	       update="true"
+    	/>
+    	<zip destfile="${output.target}/${service.plugin.zip.name}"
+    	       basedir="${output.target}/service"
+    	       update="true"
+    	/>
+    	<delete dir="${output.target}/service" />
+    	<delete dir="${output.target}/codegen" />
+    </target>
+
+
+    <!-- Clean the directory -->
+    <target name="clean">
+        <delete dir="${output}"></delete>
+    </target>
+
+	<!-- help, list of targets -->
+    <target name="help">
+	    <echo message="****************************************************************************" />
+	    <echo message="**                   Eclipse Plugin Build                                 **" />
+	    <echo message="**  pre-requisit            : env.ECLIPSE_HOME                               **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**  build eclipse projects  : generate-service-project                    **" />
+	    <echo message="**                            generate-codegen-project                    **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**  build eclipse plugins   : generate-service-plugin                     **" />
+	    <echo message="**                            generate-codegen-plugin                     **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**  install plugins         : install-service-plugin                      **" />
+	    <echo message="**                            install-codegen-plugin                      **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**  release eclipse plugins : release-plugins                             **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="**                                                                        **" />
+	    <echo message="****************************************************************************" />
+
+    </target>
+
+</project>
+
+
+
diff --git a/rampart_1_1/modules/tool/maven.xml b/rampart_1_1/modules/tool/maven.xml
new file mode 100644
index 0000000..8aa9365
--- /dev/null
+++ b/rampart_1_1/modules/tool/maven.xml
@@ -0,0 +1,37 @@
+<?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:artifact="artifact"
+    xmlns:j="jelly:core"
+    xmlns:u="jelly:util"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+
+    <goal name="jar-tool">
+        <!-- make the jar tool-->
+        <mkdir dir="target/jar-tool"/>
+        <mkdir dir="target/jar-tool"/>
+        <copy todir="target/jar-tool">
+            <fileset dir="target">
+                <include name="axis2*.jar"/>
+            </fileset>
+        </copy>
+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('on')}">
+			<copy file="${dependencies.dir}/ant-${ant.version}.jar" todir="target/jar-tool"/>
+        </j:if>
+        <j:if test="${context.getVariable('maven.jar.override').toString().trim().equalsIgnoreCase('off')}">
+			<copy file="${maven.repo.local}/ant/jars/ant-${ant.version}.jar" todir="target/jar-tool"/>
+        </j:if>
+        <copy file="src/script/jar-tool-UI.bat" todir="target/jar-tool"></copy>
+    </goal>
+    
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+</project>
diff --git a/rampart_1_1/modules/tool/pom.xml b/rampart_1_1/modules/tool/pom.xml
new file mode 100644
index 0000000..ab80a31
--- /dev/null
+++ b/rampart_1_1/modules/tool/pom.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ !

+ ! Copyright 2006 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.

+ !-->

+<project

+    xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+  <parent>

+    <groupId>org.apache.axis2</groupId>

+    <artifactId>axis2-parent</artifactId>

+    <version>1.1.0.1-SNAPSHOT</version>

+    <relativePath>../parent/pom.xml</relativePath>

+  </parent>

+  <modelVersion>4.0.0</modelVersion>

+  <groupId>org.apache.axis2.maven2</groupId>

+  <artifactId>axis2-maven-tools</artifactId>

+  <name>Maven 2 tools for Axis 2</name>

+  <description>

+    This is a set of Maven 2 plugins for working with Axis 2.

+  </description>

+  <packaging>pom</packaging>

+

+  <scm>

+    <connection>http://svn.apache.org/repos/asf/webservices/axis2/branches/java/1_1/modules/tool</connection>

+    <developerConnection>https://svn.apache.org/repos/asf/webservices/axis2/branches/java/1_1/modules/tool</developerConnection>

+    <url>http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/tool</url>

+  </scm>

+

+  <modules>

+    <module>axis2-aar-maven-plugin</module>

+    <module>axis2-java2wsdl-maven-plugin</module>

+    <module>axis2-wsdl2code-maven-plugin</module>

+  </modules>

+

+  <repositories>

+     <repository>

+        <id>maven-repo1</id>

+        <name>maven official repo</name>

+        <url>http://repo1.maven.org/maven/</url>

+        <layout>legacy</layout>

+     </repository>

+     <repository>

+        <snapshots>

+           <enabled>true</enabled>

+        </snapshots>

+        <id>ws-zones</id>

+        <name>ws.zones maven repository</name>

+        <url>http://ws.zones.apache.org/repository/</url>

+        <layout>legacy</layout>

+     </repository>

+  </repositories>

+  <dependencyManagement>

+    <dependencies>

+      <dependency>

+        <groupId>org.apache.maven</groupId>

+        <artifactId>maven-plugin-api</artifactId>

+        <version>2.0.4</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.maven</groupId>

+        <artifactId>maven-project</artifactId>

+        <version>2.0.4</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.maven</groupId>

+        <artifactId>maven-artifact</artifactId>

+        <version>2.0.4</version>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.maven</groupId>

+        <artifactId>maven-archiver</artifactId>

+        <version>2.2</version>

+      </dependency>

+      <dependency>

+        <groupId>org.codehaus.plexus</groupId>

+        <artifactId>plexus-utils</artifactId>

+        <version>1.1</version>

+      </dependency>

+      <dependency>

+        <groupId>junit</groupId>

+        <artifactId>junit</artifactId>

+        <version>3.8.2</version>

+        <scope>test</scope>

+      </dependency>

+      <dependency>

+        <groupId>org.apache.maven.shared</groupId>

+        <artifactId>maven-plugin-testing-harness</artifactId>

+        <version>1.0-beta-1</version>

+        <scope>test</scope>

+      </dependency>

+    </dependencies>

+  </dependencyManagement>

+</project>

diff --git a/rampart_1_1/modules/tool/project.properties b/rampart_1_1/modules/tool/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/tool/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/tool/project.xml b/rampart_1_1/modules/tool/project.xml
new file mode 100644
index 0000000..d82fe60
--- /dev/null
+++ b/rampart_1_1/modules/tool/project.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <name>Apache Axis 2.0 - Tools</name>
+    <id>axis2-tools</id>
+    <groupId>org.apache.axis2</groupId>
+    <description>Tools available for Axis 2.0.</description>
+
+    <dependencies>
+        <!-- external JARs -->
+        <dependency>
+            <groupId>ant</groupId>
+            <artifactId>ant</artifactId>
+            <version>${ant.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-codegen</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${wsdl4j.version}</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
+        <sourceDirectory>axis2-ant-plugin/src/main/java</sourceDirectory>
+        <unitTestSourceDirectory>test</unitTestSourceDirectory>
+
+        <sourceModifications>
+            <sourceModification>
+                <className>fakeClass</className>
+                <excludes>
+                    <exclude>**/eclipse/**/*.java</exclude>
+                    <exclude>**/core/**/*.java</exclude>
+                    <exclude>**/service/**/*.java</exclude>
+                </excludes>
+            </sourceModification>
+        </sourceModifications>
+
+        <unitTest>
+            <includes>
+                <include>**/*Test.java</include>
+            </includes>
+        </unitTest>
+
+        <resources>
+            <resource>
+                <directory>conf</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+        </resources>
+    </build>
+    <reports/>
+
+</project>
diff --git a/rampart_1_1/modules/tool/readme.txt b/rampart_1_1/modules/tool/readme.txt
new file mode 100644
index 0000000..24d5f09
--- /dev/null
+++ b/rampart_1_1/modules/tool/readme.txt
@@ -0,0 +1,41 @@
+================
+Using the tools  
+================
+
+(1) elcipse plugins
+
+Note - The plugins are specificallyqp for Eclipse version 3.1 and up
+
+Create Eclipse Plugin Projects
+------------------------------
+
+	* Since the source for the tools has a dependency on the eclipse classes. one has to run the
+	  ant build file (create-project.xml) to generate a relevant eclipse project from the source.
+	  
+	* In order to compile the plugin first you must do a maven create-lib on Axis2 Source and
+	  set ECLIPSE_HOME environment variable to point to your eclipse home directory.  
+	
+	* use the ant -f create-project.xml command to generate the plugin projects.
+	
+	* Once the projects are generated (which can be found in the newly created eclipse_project 
+	  directory) they can be opened in the Eclipse PDE for building and editing.
+	  
+	* This can be done by File -> Import -> Existing project into workspace on Elcipse menu and 
+	  point that to the eclipse_project directory newly created.
+
+Build Eclipse Plugin Projects
+------------------------------
+
+	* If you need to build and install the eclipse plugin to your local eclipse plugin directory
+		* In order to compile the plugin first you must do a maven create-lib on Axis2 Source and
+	  	  set ECLIPSE_HOME environment variable to point to your eclipse home directory
+		* stop eclpse if still on operation.
+		* use ant -f create-project.xml install-codegen-plugin install-service-plugin
+	      or to release the plugins [ant -f create-project.xml release-plugins]
+		* start eclipse
+		* plugins will be accessible through [File -> New -> Other] ctl+n under Axis2 Wizards.
+	
+	* The tool sources are not included in the build
+	
+	* To run the plugin you need please refer to 
+		- Tools Page On Apache Axis 2 Documentation  http://ws.apache.org/axis2/tools/
diff --git a/rampart_1_1/modules/tool/script/axis2.bat b/rampart_1_1/modules/tool/script/axis2.bat
new file mode 100644
index 0000000..d7fd01b
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/axis2.bat
@@ -0,0 +1,76 @@
+@echo off

+

+REM  Copyright 2001,2004-2006 The Apache Software Foundation

+REM

+REM  Licensed under the Apache License, Version 2.0 (the "License");

+REM  you may not use this file except in compliance with the License.

+REM  You may obtain a copy of the License at

+REM

+REM      http://www.apache.org/licenses/LICENSE-2.0

+REM

+REM  Unless required by applicable law or agreed to in writing, software

+REM  distributed under the License is distributed on an "AS IS" BASIS,

+REM  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+REM  See the License for the specific language governing permissions and

+REM  limitations under the License.

+

+rem ---------------------------------------------------------------------------

+rem Axis2 Script

+rem

+rem Environment Variable Prequisites

+rem

+rem   AXIS2_HOME      Must point at your AXIS2 directory

+rem

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options

+rem ---------------------------------------------------------------------------

+set CURRENT_DIR=%cd%

+

+rem Make sure prerequisite environment variables are set

+if not "%JAVA_HOME%" == "" goto gotJavaHome

+echo The JAVA_HOME environment variable is not defined

+echo This environment variable is needed to run this program

+goto end

+:gotJavaHome

+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

+goto okJavaHome

+:noJavaHome

+echo The JAVA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+echo NB: JAVA_HOME should point to a JDK/JRE

+goto end

+:okJavaHome

+

+rem check the AXIS2_HOME environment variable

+if not "%AXIS2_HOME%" == "" goto gotHome

+set AXIS2_HOME=%CURRENT_DIR%

+if exist "%AXIS2_HOME%\bin\java2wsdl.bat" goto okHome

+

+rem guess the home. Jump one directory up to check if that is the home

+cd ..

+set AXIS2_HOME=%cd%

+cd "%CURRENT_DIR%"

+

+:gotHome

+if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome

+echo The AXIS2_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+

+:okHome

+rem set the classes

+setlocal EnableDelayedExpansion

+rem loop through the libs and add them to the class path

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in ("%AXIS2_HOME%\lib\*.jar") DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+rem ----- Execute The Requested Command ---------------------------------------

+echo Using AXIS2_HOME:   %AXIS2_HOME%

+echo Using JAVA_HOME:    %JAVA_HOME%

+REM echo %AXIS2_CLASS_PATH%

+set _RUNJAVA="%JAVA_HOME%\bin\java"

+

+echo %_RUNJAVA% %JAVA_OPTS% -cp "%AXIS2_CLASS_PATH%" -Daxis2.repo="%AXIS2_HOME%\repository" -Daxis2.xml="%AXIS2_HOME%\conf\axis2.xml" %*

+endlocal

+:end

diff --git a/rampart_1_1/modules/tool/script/axis2.sh b/rampart_1_1/modules/tool/script/axis2.sh
new file mode 100644
index 0000000..5b6d289
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/axis2.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+#  Copyright 2001,2004-2006 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.
+
+# ----------------------------------------------------------------------------
+#    Axis2 Script
+#
+# Pre-requisites
+#   - setenv.sh must have been called.
+#
+#   AXIS2_HOME   Home of Axis2 installation. If not set I will  try
+#                   to figure it out.
+#
+#   JAVA_HOME       Must point at your Java Development Kit installation.
+#
+# -----------------------------------------------------------------------------
+
+# Get the context and from that find the location of setenv.sh
+. `dirname $0`/setenv.sh
+
+
+$JAVA_HOME/bin/java -classpath "$AXIS2_CLASSPATH" \
+-Daxis2.xml="$AXIS2_HOME/conf/axis2.xml" -Daxis2.repo="$AXIS2_HOME/repository" $*
\ No newline at end of file
diff --git a/rampart_1_1/modules/tool/script/axis2server.bat b/rampart_1_1/modules/tool/script/axis2server.bat
new file mode 100644
index 0000000..c68f71c
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/axis2server.bat
@@ -0,0 +1,88 @@
+@echo off

+

+REM  Copyright 2001,2004-2005 The Apache Software Foundation

+REM

+REM  Licensed under the Apache License, Version 2.0 (the "License");

+REM  you may not use this file except in compliance with the License.

+REM  You may obtain a copy of the License at

+REM

+REM      http://www.apache.org/licenses/LICENSE-2.0

+REM

+REM  Unless required by applicable law or agreed to in writing, software

+REM  distributed under the License is distributed on an "AS IS" BASIS,

+REM  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+REM  See the License for the specific language governing permissions and

+REM  limitations under the License.

+

+rem ---------------------------------------------------------------------------

+rem Startup script for the Simple Axis Server (with default parameters)

+rem

+rem Environment Variable Prequisites

+rem

+rem   AXIS2_HOME      Must point at your AXIS2 directory 

+rem

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options 

+rem ---------------------------------------------------------------------------

+

+if "%OS%"=="Windows_NT" @setlocal

+if "%OS%"=="WINNT" @setlocal

+

+rem %~dp0 is expanded pathname of the current script under NT

+set DEFAULT_AXIS2_HOME=%~dp0..

+

+if "%AXIS2_HOME%"=="" set AXIS2_HOME=%DEFAULT_AXIS2_HOME%

+set DEFAULT_AXIS2_HOME=

+

+rem find AXIS2_HOME if it does not exist due to either an invalid value passed

+rem by the user or the %0 problem on Windows 9x

+

+if exist "%AXIS2_HOME%\conf\axis2.xml" goto checkJava

+

+:noAxis2Home

+echo AXIS2_HOME environment variable is set incorrectly or AXIS2 could not be located. 

+echo Please set the AXIS2_HOME variable appropriately

+goto end

+

+:checkJava

+set _JAVACMD=%JAVACMD%

+

+if "%JAVA_HOME%" == "" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

+if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe

+if  "%AXIS2_CMD_LINE_ARGS%" == "" goto defaultParams

+

+goto runAxis2

+

+:defaultParams

+set AXIS2_CMD_LINE_ARGS=-repo "%AXIS2_HOME%\repository" -conf "%AXIS2_HOME%\conf\axis2.xml"

+goto runAxis2

+

+:noJavaHome

+if "%_JAVACMD%" == "" set _JAVACMD=java.exe

+echo JAVA_HOME environment variable is set incorrectly or Java runtime could not be located.

+echo Please set the JAVA_HOME variable appropriately

+goto end

+

+:runAxis2

+rem set the classes by looping through the libs

+setlocal EnableDelayedExpansion

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in ("%AXIS2_HOME%\lib\*.jar") DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+echo Using JAVA_HOME    %JAVA_HOME%

+echo Using AXIS2_HOME   %AXIS2_HOME%

+

+cd %AXIS2_HOME%

+"%_JAVACMD%" %JAVA_OPTS% -cp "%AXIS2_CLASS_PATH%" org.apache.axis2.transport.SimpleAxis2Server %AXIS2_CMD_LINE_ARGS%

+goto end

+

+:end

+set _JAVACMD=

+set AXIS2_CMD_LINE_ARGS=

+

+if "%OS%"=="Windows_NT" @endlocal

+if "%OS%"=="WINNT" @endlocal

+

+:mainEnd

diff --git a/rampart_1_1/modules/tool/script/axis2server.sh b/rampart_1_1/modules/tool/script/axis2server.sh
new file mode 100755
index 0000000..6936f54
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/axis2server.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+#  Copyright 2001,2004-2006 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.
+
+# ----------------------------------------------------------------------------
+# SimpleAxis2Server Script
+#
+# Environment Variable Prequisites
+#
+#   AXIS2_HOME   Home of Axis2 installation. If not set I will  try
+#                   to figure it out.
+#
+#   JAVA_HOME       Must point at your Java Development Kit installation.
+#
+# -----------------------------------------------------------------------------
+
+# Get the context and from that find the location of setenv.sh
+. `dirname $0`/setenv.sh
+
+java -classpath $AXIS2_CLASSPATH org.apache.axis2.transport.SimpleAxis2Server \
+-repo $AXIS2_HOME/repository -conf $AXIS2_HOME/conf/axis2.xml $*
diff --git a/rampart_1_1/modules/tool/script/java2wsdl.bat b/rampart_1_1/modules/tool/script/java2wsdl.bat
new file mode 100644
index 0000000..eaf0ddd
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/java2wsdl.bat
@@ -0,0 +1,60 @@
+@echo off

+rem ---------------------------------------------------------------------------

+rem Startup script for the WSDLJava

+rem

+rem Environment Variable Prequisites

+rem

+rem   AXIS2_HOME      Must point at your AXIS2 directory 

+rem

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options 

+rem ---------------------------------------------------------------------------

+set CURRENT_DIR=%cd%

+

+rem Make sure prerequisite environment variables are set

+if not "%JAVA_HOME%" == "" goto gotJavaHome

+echo The JAVA_HOME environment variable is not defined

+echo This environment variable is needed to run this program

+goto end

+:gotJavaHome

+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

+goto okJavaHome

+:noJavaHome

+echo The JAVA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+echo NB: JAVA_HOME should point to a JDK/JRE

+goto end

+:okJavaHome

+

+rem check the AXIS2_HOME environment variable

+if not "%AXIS2_HOME%" == "" goto gotHome

+set AXIS2_HOME=%CURRENT_DIR%

+if exist "%AXIS2_HOME%\bin\start.bat" goto okHome

+

+rem guess the home. Jump one directory up to check if that is the home

+cd ..

+set AXIS2_HOME=%cd%

+cd %CURRENT_DIR%

+

+:gotHome

+if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome

+echo The AXIS2_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+

+:okHome

+rem set the classes

+setlocal EnableDelayedExpansion

+rem loop through the libs and add them to the class path

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in ("%AXIS2_HOME%\lib\*.jar") DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+rem ----- Execute The Requested Command ---------------------------------------

+echo Using AXIS2_HOME:   %AXIS2_HOME%

+echo Using JAVA_HOME:    %JAVA_HOME%

+set _RUNJAVA="%JAVA_HOME%\bin\java"

+

+%_RUNJAVA% %JAVA_OPTS% -cp "%AXIS2_CLASS_PATH%" org.apache.ws.java2wsdl.Java2WSDL %*

+endlocal

+:end

diff --git a/rampart_1_1/modules/tool/script/java2wsdl.sh b/rampart_1_1/modules/tool/script/java2wsdl.sh
new file mode 100644
index 0000000..76abdfd
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/java2wsdl.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+#  Copyright 2001,2004-2006 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.
+
+. `dirname $0`/axis2.sh org.apache.ws.java2wsdl.Java2WSDL $*
diff --git a/rampart_1_1/modules/tool/script/setenv.sh b/rampart_1_1/modules/tool/script/setenv.sh
new file mode 100644
index 0000000..13268a5
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/setenv.sh
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+#  Copyright 2001,2004-2006 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.
+
+# ----------------------------------------------------------------------------
+#  Set Environment Shell Script
+#
+#  This will set AXIS2_HOME and JAVA_HOME environment variables properly.
+#
+#   AXIS2_HOME   Home of Axis2 installation. If not set I will  try
+#                   to figure it out.
+#
+#   JAVA_HOME       Must point at your Java Development Kit installation.
+#
+# NOTE: Borrowed generously from Apache Tomcat startup scripts.
+# -----------------------------------------------------------------------------
+
+# if JAVA_HOME is not set we're not happy
+if [ -z "$JAVA_HOME" ]; then
+  echo "You must set the JAVA_HOME variable before running Axis2 Script."
+  exit 1
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false
+os400=false
+case "`uname`" in
+CYGWIN*) cygwin=true;;
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ]; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '.*/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+# Get standard environment variables
+PRGDIR=`dirname "$PRG"`
+
+# Only set AXIS2_HOME if not already set
+[ -z "$AXIS2_HOME" ] && AXIS2_HOME=`cd "$PRGDIR/.." ; pwd`
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin; then
+  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$AXIS2_HOME" ] && AXIS2_HOME=`cygpath --unix "$AXIS2_HOME"`
+  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For OS400
+if $os400; then
+  # Set job priority to standard for interactive (interactive - 6) by using
+  # the interactive priority - 6, the helper threads that respond to requests
+  # will be running at the same priority as interactive jobs.
+  COMMAND='chgjob job('$JOBNAME') runpty(6)'
+  system $COMMAND
+
+  # Enable multi threading
+  export QIBM_MULTI_THREADED=Y
+fi
+
+# update classpath
+AXIS2_CLASSPATH=""
+for f in "$AXIS2_HOME"/lib/*.jar
+do
+  AXIS2_CLASSPATH="$AXIS2_CLASSPATH":$f
+done
+AXIS2_CLASSPATH="$JAVA_HOME/lib/tools.jar":"$AXIS2_CLASSPATH":"$CLASSPATH"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
+  AXIS2_HOME=`cygpath --absolute --windows "$AXIS2_HOME"`
+  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
+fi
+
+export AXIS2_HOME=$AXIS2_HOME
+export JAVA_HOME=$JAVA_HOME
+export AXIS2_CLASSPATH=$AXIS2_CLASSPATH
+
+
+echo " Using AXIS2_HOME:   $AXIS2_HOME"
+echo " Using JAVA_HOME:       $JAVA_HOME"
+
+
+
diff --git a/rampart_1_1/modules/tool/script/wsdl2java.bat b/rampart_1_1/modules/tool/script/wsdl2java.bat
new file mode 100644
index 0000000..ad32111
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/wsdl2java.bat
@@ -0,0 +1,60 @@
+@echo off

+rem ---------------------------------------------------------------------------

+rem Startup script for the WSDLJava

+rem

+rem Environment Variable Prequisites

+rem

+rem   AXIS2_HOME      Must point at your AXIS2 directory 

+rem

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options 

+rem ---------------------------------------------------------------------------

+set CURRENT_DIR=%cd%

+

+rem Make sure prerequisite environment variables are set

+if not "%JAVA_HOME%" == "" goto gotJavaHome

+echo The JAVA_HOME environment variable is not defined

+echo This environment variable is needed to run this program

+goto end

+:gotJavaHome

+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

+goto okJavaHome

+:noJavaHome

+echo The JAVA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+echo NB: JAVA_HOME should point to a JDK/JRE

+goto end

+:okJavaHome

+

+rem check the AXIS2_HOME environment variable

+if not "%AXIS2_HOME%" == "" goto gotHome

+set AXIS2_HOME=%CURRENT_DIR%

+if exist "%AXIS2_HOME%\bin\start.bat" goto okHome

+

+rem guess the home. Jump one directory up to check if that is the home

+cd ..

+set AXIS2_HOME=%cd%

+cd %CURRENT_DIR%

+

+:gotHome

+if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome

+echo The AXIS2_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+

+:okHome

+rem set the classes

+setlocal EnableDelayedExpansion

+rem loop through the libs and add them to the class path

+set AXIS2_CLASS_PATH=%AXIS2_HOME%

+FOR %%c in ("%AXIS2_HOME%\lib\*.jar") DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c

+

+rem ----- Execute The Requested Command ---------------------------------------

+echo Using AXIS2_HOME:   %AXIS2_HOME%

+echo Using JAVA_HOME:    %JAVA_HOME%

+set _RUNJAVA="%JAVA_HOME%\bin\java"

+

+%_RUNJAVA% %JAVA_OPTS% -cp "%AXIS2_CLASS_PATH%" org.apache.axis2.wsdl.WSDL2Java %*

+endlocal

+:end

diff --git a/rampart_1_1/modules/tool/script/wsdl2java.sh b/rampart_1_1/modules/tool/script/wsdl2java.sh
new file mode 100755
index 0000000..3a369af
--- /dev/null
+++ b/rampart_1_1/modules/tool/script/wsdl2java.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+#  Copyright 2001,2004-2006 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.
+
+. `dirname $0`/axis2.sh org.apache.axis2.wsdl.WSDL2Java $*
diff --git a/rampart_1_1/modules/webapp/ActivateService.jsp b/rampart_1_1/modules/webapp/ActivateService.jsp
new file mode 100644
index 0000000..0f9452b
--- /dev/null
+++ b/rampart_1_1/modules/webapp/ActivateService.jsp
@@ -0,0 +1,82 @@
+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisService,

+                 java.util.Collection,

+                 java.util.HashMap,

+                 java.util.Iterator"%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<h1>Turn On Service</h1>

+<form method="get" name="serviceActivate" action="axis2-admin/activateService">

+  <table width="100%"  border="0">

+<tr>

+  <td colspan="2" >

+     <p>The services that are inactive are listed below. Although you can activate the services from this page, once system is restarted the services will be inactive again</p>

+  </td>

+  </tr>

+  <tr>
+  <%
+HashMap services = (HashMap)request.getSession().getAttribute(Constants.SERVICE_MAP);
+Collection col = services.values();
+String html = "";
+int count = 0;
+
+for (Iterator iterator = col.iterator(); iterator.hasNext();) {
+	AxisService axisServices = (AxisService) iterator.next();
+	if(!axisServices.isActive()){
+		count++;
+		html += "<option value='" + axisServices.getName() + "'>";
+		html += axisServices.getName() + "</option>";
+	}
+}
+request.getSession().setAttribute(Constants.SERVICE_MAP,null);
+if (count > 0) {
+%>
+  

+    <td width="20%"> Select Service : </td>

+    <td width="80%">

+       <select name="axisService" class="selectBoxes">
+		<%=html%>
+		</select>

+  </tr>

+  <tr>

+    <td width="20%">Activate Service </td>

+    <td width="80%"><input type="checkbox" name="turnon">

+    </td>

+  </tr>

+  <tr>

+  <td>&nbsp;</td>

+  <td>

+    <input name="submit" type="submit" value=" Activate " >

+   <input name="reset" type="reset" value=" Clear " >

+  </td>
+<%
+} else {
+	%>
+	<td colspan="2">No inactive services present.</td>
+	<%
+}
+%>

+  </tr>

+

+</table>

+</form>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/webapp/EngageToServiceGroup.jsp b/rampart_1_1/modules/webapp/EngageToServiceGroup.jsp
new file mode 100644
index 0000000..568ebd4
--- /dev/null
+++ b/rampart_1_1/modules/webapp/EngageToServiceGroup.jsp
@@ -0,0 +1,137 @@
+<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="org.apache.axis2.Constants,
+                                                                             org.apache.axis2.description.AxisModule,
+                                                                             org.apache.axis2.description.AxisServiceGroup,
+                                                                             java.util.Collection" errorPage="" %>
+<%@ page import="java.util.HashMap"%>
+<%@ page import="java.util.Iterator"%>
+<%
+/*
+ * Copyright 2004,2005 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.
+ *
+ *
+ */
+ %>
+<jsp:include page="include/adminheader.jsp"></jsp:include>
+<%
+    String status = (String)request.getSession().getAttribute(Constants.ENGAGE_STATUS);
+    HashMap moduels = (HashMap)request.getSession().getAttribute(Constants.MODULE_MAP);
+    request.getSession().setAttribute(Constants.MODULE_MAP,null);
+    Collection moduleCol =  moduels.values();
+    Iterator servicesGroups = (Iterator)request.getSession().getAttribute(Constants.SERVICE_GROUP_MAP);
+    request.getSession().setAttribute(Constants.SERVICE_GROUP_MAP,null);
+%>
+<h1>Engage Module for a Service Group</h1>
+<p>To engage a module for a set of services grouped as an axis service group,
+
+    <ol>
+        <li>select the module you want to engage </li>
+        <li>select the axis service group you like the module to be engaged.</li>
+        <li>click "Engage".</li>
+    </ol>
+
+    </p>
+<%
+	if (!moduleCol.iterator().hasNext()) {%>
+		<p>No modules are present to be engaged.</p>
+	<%} else {
+		if  (!servicesGroups.hasNext()) {%>
+		<p>No Axis service groups are present to be engaged.</p>
+		<%} else {
+%>
+<form method="get" name="selectModuleForm" action="axis2-admin/engageToServiceGroup">
+    <table border="0" width="100%" cellspacing="1" cellpadding="1">
+        <tr>
+            <td>Select a Module :</td>
+        </tr>
+        <tr>
+            <td>
+                <select name="modules">
+                    <%
+                for (Iterator iterator = moduleCol.iterator(); iterator.hasNext();) {
+                    AxisModule axisOperation = (AxisModule) iterator.next();
+                    String modulename = axisOperation.getName().getLocalPart();
+            %> <option  align="left" value="<%=modulename%>"><%=modulename%></option>
+                    <%
+                }
+             %>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                &nbsp;
+                &nbsp;
+            </td>
+        </tr>
+        <tr>
+            <td>Select a Service Group :</td>
+        </tr>
+        <tr>
+            <td>
+                <select name="axisService">
+                    <%
+
+                        while(servicesGroups.hasNext()){
+                            AxisServiceGroup axisServiceGroup = (AxisServiceGroup) servicesGroups.next();
+                            String serviceName = axisServiceGroup.getServiceGroupName();
+                    %> <option  align="left" value="<%=serviceName%>"><%=serviceName%></option>
+                    <%
+                        }
+
+                    %>
+                </select>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                &nbsp;
+                &nbsp;
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <input name="submit" type="submit" value=" Engage " >
+            </td>
+        </tr>
+        <tr>
+            <td>
+                &nbsp;
+                &nbsp;
+            </td>
+        </tr>
+        <tr>
+            <td>
+                &nbsp;
+                &nbsp;
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <textarea cols="50"  <%
+                    if(status == null){
+                %>
+                          style="display:none"
+                        <%
+                            } %>
+                        ><%=status%></textarea>
+            </td>
+        </tr>
+    </table>
+</form>
+<%
+		}
+	}
+%>
+<jsp:include page="include/adminfooter.jsp"></jsp:include>
+
diff --git a/rampart_1_1/modules/webapp/Error/AuthError.html b/rampart_1_1/modules/webapp/Error/AuthError.html
new file mode 100644
index 0000000..5e7cc68
--- /dev/null
+++ b/rampart_1_1/modules/webapp/Error/AuthError.html
@@ -0,0 +1,25 @@
+<html>

+ <header><title>Error In Admin Application</title></header>

+ <body>

+ <table width="100%">

+  <tr>

+    <td align="left"><img src="../images/asf-logo.gif"/></td>

+    <td align="right"><img src="../images/axis_l.jpg"/></td>

+    </tr>

+</table>

+<table width="100%">

+  <tr>

+    <td align="center">Failure in Authentication! Please check your username and password</td>

+  

+    </tr>

+    <tr>  <td align="center"><a href="/axis2/Login.jsp">back</a></td></tr>

+</table>

+

+<hr/>

+<table width="100%">

+ <tr>

+   <td align="center">All rights reserved by Apache Software Foundation</td>

+   </tr>

+</table>

+ </body>

+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/Error/GenError.html b/rampart_1_1/modules/webapp/Error/GenError.html
new file mode 100644
index 0000000..02b95da
--- /dev/null
+++ b/rampart_1_1/modules/webapp/Error/GenError.html
@@ -0,0 +1,25 @@
+<html>

+ <header><title>Error In Admin Application</title></header>

+ <body>

+ <table width="100%">

+  <tr>

+    <td align="left"><img src="../images/asf-logo.gif"/></td>

+    <td align="right"><img src="../images/axis_l.jpg"/></td>

+    </tr>

+</table>

+<table width="100%">

+  <tr>

+    <td align="center">Server Encountered an Error!</td>

+  

+    </tr>

+    <tr>  <td align="center"><a href="/">home</a></td></tr>

+</table>

+

+<hr/>

+<table width="100%">

+ <tr>

+   <td align="center">All rights reserved by Apache Software Foundation</td>

+   </tr>

+</table>

+ </body>

+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/Error/error404.jsp b/rampart_1_1/modules/webapp/Error/error404.jsp
new file mode 100644
index 0000000..f6f0510
--- /dev/null
+++ b/rampart_1_1/modules/webapp/Error/error404.jsp
@@ -0,0 +1,44 @@
+<%@ page contentType="text/html;charset=iso-8859-1" language="java" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+  <head>
+    <jsp:include page="../include/httpbase.jsp"/>
+    <title>Axis2 :: Resource not found!</title>
+    <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css"/>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+  </head>
+
+  <body>
+    <table width="100%">
+      <tr>
+        <td align="left"><img src="axis2-web/images/asf-logo.gif" alt=""/></td>
+        <td align="right"><img src="axis2-web/images/axis_l.jpg" alt=""/></td>
+      </tr>
+    </table>
+    <table width="100%">
+      <tr>
+        <td>
+          <h1>Requested resource not found!</h1>
+          <br/>
+          <br/>
+          <br/>
+          <br/>
+        </td>
+      </tr>
+      <tr><td align="center"><a href="axis2-web/index.jsp">home</a></td></tr>
+    </table>
+    <table width="100%">
+      <tr><td>
+        <table width="950px">
+          <tr><td><hr size="1" noshade=""/></td></tr>
+          <tr>
+            <td align="center">Copyright &#169; 1999-2006, The Apache Software Foundation<br/>Licensed under the <a
+              href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</td>
+          </tr>
+        </table>
+      </td>
+        <td>&nbsp;</td>
+      </tr>
+    </table>
+  </body>
+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/Error/error500.jsp b/rampart_1_1/modules/webapp/Error/error500.jsp
new file mode 100644
index 0000000..deeb70b
--- /dev/null
+++ b/rampart_1_1/modules/webapp/Error/error500.jsp
@@ -0,0 +1,45 @@
+<%@ page contentType="text/html;charset=iso-8859-1" language="java" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+  <head>
+    <jsp:include page="../include/httpbase.jsp"/>
+    <title>Axis2 :: Internal server error</title>
+    <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css"/>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+  </head>
+
+  <body>
+    <table width="100%">
+      <tr>
+        <td align="left"><img src="axis2-web/images/asf-logo.gif" alt=""/></td>
+        <td align="right"><img src="axis2-web/images/axis_l.jpg" alt=""/></td>
+      </tr>
+    </table>
+    <table width="100%">
+      <tr>
+        <td>
+          <h1>Internal server error</h1>
+          <br/>
+          <br/>
+          <br/>
+          <br/>
+        </td>
+      </tr>
+      <tr><td align="center"><a href="axis2-web/index.jsp">home</a></td></tr>
+    </table>
+    <hr/>
+    <table width="100%">
+      <tr><td>
+        <table width="950px">
+          <tr><td><hr size="1" noshade=""/></td></tr>
+          <tr>
+            <td align="center">Copyright &#169; 1999-2006, The Apache Software Foundation<br/>Licensed under the <a
+              href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</td>
+          </tr>
+        </table>
+      </td>
+        <td>&nbsp;</td>
+      </tr>
+    </table>
+  </body>
+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/HappyAxis.jsp b/rampart_1_1/modules/webapp/HappyAxis.jsp
new file mode 100644
index 0000000..27b8fa8
--- /dev/null
+++ b/rampart_1_1/modules/webapp/HappyAxis.jsp
@@ -0,0 +1,518 @@
+<html>
+<%@ page import="org.apache.axiom.om.OMAbstractFactory,
+                 org.apache.axiom.om.OMElement,
+                 org.apache.axiom.om.OMFactory,
+                 org.apache.axiom.om.OMNamespace,
+                 org.apache.axis2.AxisFault,
+                 org.apache.axis2.Constants,
+                 org.apache.axis2.addressing.EndpointReference,
+                 org.apache.axis2.client.Options,
+                 org.apache.axis2.client.ServiceClient,
+                 org.apache.axis2.context.ConfigurationContext,
+                 org.apache.axis2.context.ConfigurationContextFactory,
+                 javax.servlet.ServletContext,
+                 javax.servlet.http.HttpServletRequest,
+                 javax.servlet.http.HttpServletResponse,
+                 javax.servlet.jsp.JspWriter,
+                 javax.xml.parsers.SAXParser,
+                 javax.xml.parsers.SAXParserFactory"
+         session="false" %>
+<%@ page import="javax.xml.stream.XMLOutputFactory" %>
+<%@ page import="javax.xml.stream.XMLStreamException" %>
+<%@ page import="java.io.IOException" %>
+<%@ page import="java.io.InputStream" %>
+<%@ page import="java.io.StringWriter" %>
+<%@ page import="java.lang.Class" %>
+<%@ page import="java.lang.ClassNotFoundException"%>
+<%@ page import="java.lang.Exception" %>
+<%@ page import="java.lang.Integer" %>
+<%@ page import="java.lang.NoClassDefFoundError" %>
+<%@ page import="java.lang.SecurityException" %>
+<%@ page import="java.lang.String" %>
+<%@ page import="java.lang.System" %>
+<%@ page import="java.lang.Throwable" %>
+
+<%
+   /*
+    * Copyright 2002,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.
+    */
+%>
+<head>
+    <jsp:include page="include/httpbase.jsp"/>
+    <title>Axis2 Happiness Page</title>
+    <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+<jsp:include page="include/header.inc"/>
+<jsp:include page="include/link-footer.jsp"/>
+<%IP = request.getRequestURL().toString();%>
+<%!
+    /*
+    * Happiness tests for axis2. These look at the classpath and warn if things
+    * are missing. Normally addng this much code in a JSP page is mad
+    * but here we want to validate JSP compilation too, and have a drop-in
+    * page for easy re-use
+    */
+    String IP;
+
+    /**
+     * Get a string providing install information.
+     * TODO: make this platform aware and give specific hints
+     */
+    public String getInstallHints(HttpServletRequest request) {
+
+        return "<B><I>Note:</I></B> On Tomcat 4.x and Java1.4, you may need to put libraries that contain "
+                + "java.* or javax.* packages into CATALINA_HOME/common/lib"
+                + "<br>jaxrpc.jar and saaj.jar are two such libraries.";
+    }
+
+    /**
+     * test for a class existing
+     * @param classname
+     * @return class iff present
+     */
+    Class classExists(String classname) {
+        try {
+            return Class.forName(classname);
+        } catch (ClassNotFoundException e) {
+            return null;
+        }
+    }
+
+    /**
+     * test for resource on the classpath
+     * @param resource
+     * @return true iff present
+     */
+    boolean resourceExists(String resource) {
+        boolean found;
+        InputStream instream = this.getClass().getResourceAsStream(resource);
+        found = instream != null;
+        if (instream != null) {
+            try {
+                instream.close();
+            } catch (IOException e) {
+            }
+        }
+        return found;
+    }
+
+    /**
+     * probe for a class, print an error message is missing
+     * @param out stream to print stuff
+     * @param category text like "warning" or "error"
+     * @param classname class to look for
+     * @param jarFile where this class comes from
+     * @param errorText extra error text
+     * @param homePage where to d/l the library
+     * @return the number of missing classes
+     * @throws IOException
+     */
+    int probeClass(JspWriter out,
+                   String category,
+                   String classname,
+                   String jarFile,
+                   String axisOperation,
+                   String errorText,
+                   String homePage) throws IOException {
+        try {
+            Class clazz = classExists(classname);
+            if (clazz == null) {
+                String url = "";
+                if (homePage != null) {
+                    url = "<br>  See <a href=" + homePage + ">" + homePage + "</a>";
+                }
+                out.write("<p>" + category + ": could not find class " + classname
+                        + " from file <b>" + jarFile
+                        + "</b><br>  " + errorText
+                        + url
+                        + "<p>");
+                return 1;
+            } else {
+                String location = getLocation(out, clazz);
+                if (location == null) {
+                    out.write("Found " + axisOperation + " (" + classname + ")<br/>");
+                } else {
+                    out.write("Found " + axisOperation + " (" + classname + ") <br/> &nbsp;&nbsp;at " + location + "<br/>");
+                }
+                return 0;
+            }
+        } catch (NoClassDefFoundError ncdfe) {
+            String url = "";
+            if (homePage != null) {
+                url = "<br>  See <a href=" + homePage + ">" + homePage + "</a>";
+            }
+            out.write("<p>" + category + ": could not find a dependency"
+                    + " of class " + classname
+                    + " from file <b>" + jarFile
+                    + "</b><br> " + errorText
+                    + url
+                    + "<br>The root cause was: " + ncdfe.getMessage()
+                    + "<br>This can happen e.g. if " + classname + " is in"
+                    + " the 'common' classpath, but a dependency like "
+                    + " activation.jar is only in the webapp classpath."
+                    + "<p>");
+            return 1;
+        }
+    }
+
+    /**
+     * get the location of a class
+     * @param out
+     * @param clazz
+     * @return the jar file or path where a class was found
+     */
+
+    String getLocation(JspWriter out,
+                       Class clazz) {
+        try {
+            java.net.URL url = clazz.getProtectionDomain().getCodeSource().getLocation();
+            String location = url.toString();
+            if (location.startsWith("jar")) {
+                url = ((java.net.JarURLConnection) url.openConnection()).getJarFileURL();
+                location = url.toString();
+            }
+
+            if (location.startsWith("file")) {
+                java.io.File file = new java.io.File(url.getFile());
+                return file.getAbsolutePath();
+            } else {
+                return url.toString();
+            }
+        } catch (Throwable t) {
+        }
+        return "an unknown location";
+    }
+
+    /**
+     * a class we need if a class is missing
+     * @param out stream to print stuff
+     * @param classname class to look for
+     * @param jarFile where this class comes from
+     * @param errorText extra error text
+     * @param homePage where to d/l the library
+     * @throws IOException when needed
+     * @return the number of missing libraries (0 or 1)
+     */
+    int needClass(JspWriter out,
+                  String classname,
+                  String jarFile,
+                  String axisOperation,
+                  String errorText,
+                  String homePage) throws IOException {
+        return probeClass(out,
+                "<b>Error</b>",
+                classname,
+                jarFile,
+                axisOperation,
+                errorText,
+                homePage);
+    }
+
+    /**
+     * print warning message if a class is missing
+     * @param out stream to print stuff
+     * @param classname class to look for
+     * @param jarFile where this class comes from
+     * @param errorText extra error text
+     * @param homePage where to d/l the library
+     * @throws IOException when needed
+     * @return the number of missing libraries (0 or 1)
+     */
+    int wantClass(JspWriter out,
+                  String classname,
+                  String jarFile,
+                  String axisOperation,
+                  String errorText,
+                  String homePage) throws IOException {
+        return probeClass(out,
+                "<b>Warning</b>",
+                classname,
+                jarFile,
+                axisOperation,
+                errorText,
+                homePage);
+    }
+
+    /**
+     * probe for a resource existing,
+     * @param out
+     * @param resource
+     * @param errorText
+     * @throws Exception
+     */
+    int wantResource(JspWriter out,
+                     String resource,
+                     String errorText) throws Exception {
+        if (!resourceExists(resource)) {
+            out.write("<p><b>Warning</b>: could not find resource " + resource
+                    + "<br>"
+                    + errorText);
+            return 0;
+        } else {
+            out.write("found " + resource + "<br>");
+            return 1;
+        }
+    }
+
+
+    /**
+     *  get servlet version string
+     *
+     */
+
+    public String getServletVersion() {
+        ServletContext context = getServletConfig().getServletContext();
+        int major = context.getMajorVersion();
+        int minor = context.getMinorVersion();
+        return Integer.toString(major) + '.' + Integer.toString(minor);
+    }
+
+
+    /**
+     * what parser are we using.
+     * @return the classname of the parser
+     */
+    private String getParserName() {
+        SAXParser saxParser = getSAXParser();
+        if (saxParser == null) {
+            return "Could not create an XML Parser";
+        }
+
+        // check to what is in the classname
+        return saxParser.getClass().getName();
+    }
+
+    /**
+     * Create a JAXP SAXParser
+     * @return parser or null for trouble
+     */
+    private SAXParser getSAXParser() {
+        SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
+        if (saxParserFactory == null) {
+            return null;
+        }
+        SAXParser saxParser = null;
+        try {
+            saxParser = saxParserFactory.newSAXParser();
+        } catch (Exception e) {
+        }
+        return saxParser;
+    }
+
+    /**
+     * get the location of the parser
+     * @return path or null for trouble in tracking it down
+     */
+
+    private String getParserLocation(JspWriter out) {
+        SAXParser saxParser = getSAXParser();
+        if (saxParser == null) {
+            return null;
+        }
+        return getLocation(out, saxParser.getClass());
+    }
+
+    private String value;
+
+    private OMElement createEnvelope() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace("http://axisversion.sample/xsd", "ns1");
+        OMElement method = fac.createOMElement("getVersion", omNs);
+        OMElement value = fac.createOMElement("myValue", omNs);
+        method.addChild(value);
+        return method;
+    }
+
+    public boolean invokeTheService() {
+        try {
+            // since this one is an internal request we do not use public frontendHostUrl
+            // for it
+            int lastindex = IP.lastIndexOf('/');
+            IP = IP.substring(0, lastindex);
+            ///axis2/axis2-web/services/version
+            IP = IP.replaceAll("axis2-web", "");
+
+            OMElement payload = createEnvelope();
+            ConfigurationContext configctx =
+                    ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
+            ServiceClient client = new ServiceClient(configctx, null);
+            EndpointReference targetEPR = new EndpointReference(IP + configctx.getServicePath() + "/Version");
+            Options options = new Options();
+            client.setOptions(options);
+            options.setTo(targetEPR);
+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+            OMElement result = client.sendReceive(payload);
+            StringWriter writer = new StringWriter();
+            result.serialize(XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
+            writer.flush();
+            value = writer.toString();
+            return true;
+        } catch (AxisFault axisFault) {
+            System.out.println(value);
+            return false;
+        } catch (XMLStreamException e) {
+            value = e.getMessage();
+            return false;
+        }
+    }
+    
+    public String getFormatedSystemProperty(String systemProperty){
+    	return  systemProperty.replaceAll(":", ": ");
+    }
+%>
+
+<h1>Axis2 Happiness Page</h1>
+
+<h2>Examining webapp configuration</h2>
+
+<blockquote>
+
+<h4>Essential Components</h4>
+
+<%
+    int needed = 0,wanted = 0;
+
+    /**
+     * the essentials, without these Axis is not going to work
+     */
+    needed = needClass(out, "org.apache.axis2.transport.http.AxisServlet",
+            "axis2-1.0.jar",
+            "Apache-Axis",
+            "Axis2 will not work",
+            "http://xml.apache.org/axis2/");
+    needed += needClass(out, "org.apache.commons.logging.Log",
+            "commons-logging.jar",
+            "Jakarta-Commons Logging",
+            "Axis2 will not work",
+            "http://jakarta.apache.org/commons/logging.html");
+    needed += needClass(out, "javax.xml.stream.XMLStreamReader",
+            "stax-api-1.0.1.jar",
+            "Streaming API for XML",
+            "Axis2 will not work",
+            "http://dist.codehaus.org/stax/jars/");
+    needed += needClass(out, "org.codehaus.stax2.XMLStreamWriter2",
+            "wstx-asl-3.0.1.jar",
+            "Streaming API for XML implementation",
+            "Axis2 will not work",
+            "http://dist.codehaus.org/stax/jars/");
+
+%>
+<%
+    /*
+    * resources on the classpath path
+    */
+    /* broken; this is a file, not a resource
+    wantResource(out,"/server-config.wsdd",
+    "There is no server configuration file;"
+    +"run AdminClient to create one");
+    */
+    /* add more libraries here */
+
+    //is everything we need here
+    if (needed == 0) {
+        //yes, be happy
+        out.write("<p><font color='green'><strong>The core axis2 libraries are present.</strong></font></p>");
+    } else {
+        //no, be very unhappy
+        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+        out.write("<font color='red'><i>"
+                + needed
+                + " core axis2 librar"
+                + (needed == 1 ? "y is" : "ies are")
+                + " missing</i></font>");
+    }
+    //now look at wanted stuff
+%>
+<p>
+    <B><I>Note:</I></B> Even if everything this page probes for is present,
+    there is no guarantee your Axis Service will work, because there are many configuration options
+    that we do not check for. These tests are <i>necessary</i> but not <i>sufficient</i>
+</p>
+</blockquote>
+<h2>Examining Version Service</h2>
+<%
+    boolean serviceStatus = invokeTheService();
+    if (serviceStatus) {
+%>
+<blockquote>
+    <font color="green"><strong>
+        Found Axis2 default Version service and Axis2 is working
+        properly.</strong></font>
+    <p>Now you can drop a service archive in axis2/WEB-INF/services.
+        Following output was produced while invoking Axis2 version service
+        </p>
+        <p><%= value%></p>
+</blockquote>
+
+<%
+} else {
+%>
+<p>
+    <font color="brown"> There was a problem in Axis2 version service , may be
+        the service not available or some thing has gone wrong. But this does
+        not mean system is not working !
+        Try to upload some other service and check to see whether it is
+        working.
+        <br>
+    </font>
+</p>
+
+<%
+    }
+%>
+<h2>Examining Application Server</h2>
+<blockquote>
+<table>
+    <tr><td>Servlet version</td><td><%=getServletVersion()%></td></tr>
+    <tr><td>Platform</td>
+        <td><%=getServletConfig().getServletContext().getServerInfo()%></td>
+    </tr>
+</table>
+</blockquote>
+<h2>Examining System Properties</h2>
+<%
+    /**
+     * Dump the system properties
+     */
+    java.util.Enumeration e = null;
+    try {
+        e = System.getProperties().propertyNames();
+    } catch (SecurityException se) {
+    }
+    if (e != null) {
+        out.write("<pre>");
+        out.write("<table cellpadding='5px' cellspacing='0px' style='border: .5px blue solid;'>");
+        for (; e.hasMoreElements();) {
+            out.write("<tr>");
+            String key = (String) e.nextElement();
+            out.write("<th style='border: .5px #A3BBFF solid;'>" + key + "</th>");
+            out.write("<td style='border: .5px #A3BBFF solid;'>" + getFormatedSystemProperty(System.getProperty(key)) + "&nbsp;</td>");
+            out.write("<tr>");
+        }
+        out.write("</table>");
+        out.write("</pre><p>");
+    } else {
+        out.write("System properties are not accessible<p>");
+    }
+%>
+
+<jsp:include page="include/footer.inc"/>
+</body>
+</html>
+
+
diff --git a/rampart_1_1/modules/webapp/InActivateService.jsp b/rampart_1_1/modules/webapp/InActivateService.jsp
new file mode 100644
index 0000000..2aec627
--- /dev/null
+++ b/rampart_1_1/modules/webapp/InActivateService.jsp
@@ -0,0 +1,83 @@
+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisService,

+                 java.util.Collection,

+                 java.util.HashMap,

+                 java.util.Iterator"%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<h1>Deactivate Service</h1>

+<form method="get" name="serviceInActivate" action="axis2-admin/deactivateService">

+  <table width="100%"  border="0">

+<tr>

+  <td colspan="2" >

+     <p>Only the services that are active are listed below. Note that although you can activate a service from this page, once system is restarted the service will be active again</p>

+  </td>

+  </tr>

+  <tr>
+<%
+HashMap services = (HashMap)request.getSession().getAttribute(Constants.SERVICE_MAP);
+Collection col = services.values();
+String html = "";
+int count = 0;
+
+for (Iterator iterator = col.iterator(); iterator.hasNext();) {
+	AxisService axisServices = (AxisService) iterator.next();
+	if(axisServices.isActive()){
+		count++;
+		html += "<option value='" + axisServices.getName() + "'>";
+		html += axisServices.getName() + "</option>";
+	}
+}
+request.getSession().setAttribute(Constants.SERVICE_MAP,null);
+if (count > 0) {
+%>
+

+    <td width="20%"> Select Service : </td>

+    <td width="80%">

+       <select name="axisService" class="selectBoxes">

+<%=html%>
+		</select>
+	</td>

+  </tr>

+  <tr>

+    <td width="20%">Deactivate Service </td>

+    <td width="80%"><input type="checkbox" name="turnoff">

+    </td>

+  </tr>

+  <tr>

+  <td>&nbsp;</td>

+  <td>

+    <input name="submit" type="submit" value=" Deactivate " >

+   <input name="reset" type="reset" value=" Clear " >

+  </td>
+<%
+} else {
+	%>
+	<td colspan="2">No active services present.</td>
+	<%
+}
+%>

+  </tr>

+

+</table>

+</form>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/webapp/LeftFrame.jsp b/rampart_1_1/modules/webapp/LeftFrame.jsp
new file mode 100644
index 0000000..bec6519
--- /dev/null
+++ b/rampart_1_1/modules/webapp/LeftFrame.jsp
@@ -0,0 +1,184 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<%

+/*

+ * Copyright 2004,2005 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.

+ *

+ *

+ */

+%>

+<table width="100%" style="border-right:1px solid #CCCCCC;">

+    <tr>

+     <td colspan="2" >

+       <b>Tools </b>

+     </td>

+    </tr>

+    <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/upload">Upload Service</a>

+       </td>

+    </tr>

+<tr>

+     <td colspan="2" >

+      <b><nobr>System Components&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</nobr></b>

+     </td>

+  </tr>

+  <tr>

+    <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+    </td>

+    <td >

+      <a href="axis2-admin/listService">Available Services</a>

+    </td>

+ </tr>

+ <tr>

+    <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+    </td>

+    <td >

+      <a href="axis2-admin/listServiceGroups">Available Service Groups</a>

+    </td>

+ </tr>

+ <tr>

+    <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+    </td>

+    <td >

+      <a href="axis2-admin/listModules">Available Modules</a>

+    </td>

+ </tr>

+ <tr>

+    <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+    </td>

+    <td>

+      <a href="axis2-admin/globalModules">Globally Engaged Modules</a>

+    </td>

+ </tr>

+ <tr>

+    <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+    </td>

+    <td >

+      <a href="axis2-admin/listPhases">Available Phases</a>

+    </td>

+ </tr>

+  <tr>

+     <td colspan="2" >

+       <b>Execution Chains</b>

+     </td>

+  </tr>

+   <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/viewGlobalHandlers">Global Chains</a>

+       </td>

+    </tr>

+    <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/selectService">Operation Specific Chains</a>

+       </td>

+    </tr>

+    <tr>

+     <td colspan="2" >

+       <b>Engage Module</b>

+     </td>

+  </tr>

+   <tr>

+       <td>

+        &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/engagingglobally">For all Services</a>

+       </td>

+    </tr>

+     <tr>

+        <td>

+         &nbsp;&nbsp;&nbsp;&nbsp;

+        </td>

+        <td>

+          <a href="axis2-admin/engageToServiceGroup">For a Service Group</a>

+        </td>

+     </tr>

+

+

+    <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/engageToService">For a Service</a>

+       </td>

+    </tr>

+

+     <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/listOperation">For an Operation</a>

+       </td>

+    </tr>

+

+    <tr>

+     <td colspan="2" >

+       <b>Services</b>

+     </td>

+  </tr>

+    <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/deactivateService">Deactivate Service</a>

+       </td>

+    </tr>

+    <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/activateService">Activate Service</a>

+       </td>

+    </tr>

+    <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/selectServiceParaEdit">Edit Parameters</a>

+       </td>

+    </tr>

+    <tr>

+     <td colspan="2" >

+       <b>Contexts</b>

+     </td>

+    </tr>

+    <tr>

+       <td>

+       &nbsp;&nbsp;&nbsp;&nbsp;

+       </td>

+       <td>

+         <a href="axis2-admin/listContexts">View Hierarchy</a>

+       </td>

+    </tr>

+</table>

diff --git a/rampart_1_1/modules/webapp/ListServiceGroup.jsp b/rampart_1_1/modules/webapp/ListServiceGroup.jsp
new file mode 100644
index 0000000..f28226b
--- /dev/null
+++ b/rampart_1_1/modules/webapp/ListServiceGroup.jsp
@@ -0,0 +1,66 @@
+<%@ page import="org.apache.axis2.Constants" %>
+<%@ page import="org.apache.axis2.description.AxisService" %>
+<%@ page import="org.apache.axis2.description.AxisServiceGroup" %>
+<%@ page import="javax.xml.namespace.QName" %>
+<%@ page import="java.util.ArrayList" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>
+<jsp:include page="include/adminheader.jsp"/>
+<h1>Available Service Groups</h1>
+<%
+    Iterator axisServiceGroupIter = (Iterator) request.getSession().getAttribute(
+            Constants.SERVICE_GROUP_MAP);
+    request.getSession().setAttribute(Constants.SERVICE_GROUP_MAP,null);
+    while (axisServiceGroupIter.hasNext()) {
+        AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisServiceGroupIter.next();
+        String groupName = axisServiceGroup.getServiceGroupName();
+        ArrayList modules = axisServiceGroup.getEngagedModules();
+        Iterator axisServiceIter = axisServiceGroup.getServices();
+%>
+<h2><%=groupName%></h2><ul>
+    <%
+        while (axisServiceIter.hasNext()){
+            AxisService axisService = (AxisService) axisServiceIter.next();
+            String serviceName = axisService.getName();
+    %>
+    <li><font color="blue"><a href="axis2-admin/ListSingleService?serviceName=<%=serviceName%>">
+        <%=serviceName%></a></font></li>
+    <%
+        }
+    %>
+</ul>
+<%
+    if (modules.size() > 0) {
+%>
+<I>Engaged modules</I><ul>
+    <%
+        for (int i = 0; i < modules.size(); i++) {
+            QName modulDesc = (QName) modules.get(i);
+    %>
+    <li><%=modulDesc.getLocalPart()%></li>
+    <%
+        }
+    %></ul><%
+        }
+    }
+%>
+<jsp:include page="include/adminfooter.jsp"/>
diff --git a/rampart_1_1/modules/webapp/Login.jsp b/rampart_1_1/modules/webapp/Login.jsp
new file mode 100644
index 0000000..803b883
--- /dev/null
+++ b/rampart_1_1/modules/webapp/Login.jsp
@@ -0,0 +1,90 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%--
+/*
+ * Copyright 2004,2005 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.
+ *
+ *
+ */
+--%>
+<html>
+  <head>
+    <jsp:include page="include/httpbase.jsp"/>
+    <title>Login to Axis2 :: Administration page</title>
+    <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css">
+  </head>
+
+  <body onload="javascript:document.LoginForm.userName.focus();">
+    <jsp:include page="include/header.inc"/>
+    <jsp:include page="include/link-footer.jsp"/>
+    <table class="FULL_BLANK">
+      <tr>
+        <td valign="top">
+        	<h2>Welcome :</h2>
+        	<p>Welcome to the Axis2 administration console. From inside the Axis2 administration console you can :</p>
+	    	<ul style="list-style: none;" class="loginUL">
+	       		<li>Check on the health of your Axis2 deployment.</li>
+ 	       		<li>Change any parameters at run time.</li>
+ 	       		<li>Upload new services into Axis2 [Service hot-deployment].</li>
+ 	   		</ul>
+	        <font color="orange">Warning: Please note that configuration changes done through the administration console
+    	    will be lost when the server is restarted.</font>
+    	</td>
+        <td valign="top" align="left">
+          <form method="post" name="LoginForm" action="axis2-admin/login">
+            <table class="LOG_IN_FORM">
+              <tr>
+                <td align="center" colspan="2" bgcolor="#b0b0b0" color="#FFFFFF"><font color="#FFFFFF">Login</font></td>
+              </tr>
+              <tr>
+                 <td align="center" colspan="2">&nbsp;</td>
+               </tr>
+              <tr>
+                <td align="right">Username:</td>
+                <td><input align="left" type="text" name="userName" tabindex="1">
+                </td>
+              </tr>
+              <tr>
+                <td align="right">Password : </td>
+                <td><input align="left" type="password" name="password" tabindex="2">
+                </td>
+              </tr>
+              <tr>
+                <td colspan="2">
+                  <br>
+                </td>
+              </tr>
+              <tr>
+                <td align="center" colspan="2">
+                  <input name="cancel" type="reset" value=" Clear "> &nbsp; &nbsp;
+                  <input name="submit" type="submit" value=" Login ">
+                </td>
+              </tr>
+              <tr>
+                <td align="center" colspan="2">
+                  <font color="red">&nbsp;<% if (request.getAttribute("errorMessage") != null) {%><%= request.getAttribute("errorMessage")%><% } %>&nbsp;</font>
+                </td>
+              </tr>
+            </table>
+          </form>
+          <br/><br/><br/><br/><br/><br/>
+        </td>
+      </tr>
+    </table>
+    <p>Test</p>
+    <jsp:include page="include/footer.inc"/>
+  </body>
+</html>
+
+
diff --git a/rampart_1_1/modules/webapp/MainFrame.jsp b/rampart_1_1/modules/webapp/MainFrame.jsp
new file mode 100644
index 0000000..f48c88a
--- /dev/null
+++ b/rampart_1_1/modules/webapp/MainFrame.jsp
@@ -0,0 +1,29 @@
+<%

+ /*

+  * Copyright 2004,2005 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.

+  *

+  *

+  */

+%>

+<html>

+  <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>Axis2 Administration </title>

+    <style type="text/css">

+    </style></head>

+

+  <body>

+  </body>

+</html>

diff --git a/rampart_1_1/modules/webapp/SelectService.jsp b/rampart_1_1/modules/webapp/SelectService.jsp
new file mode 100644
index 0000000..3d84f12
--- /dev/null
+++ b/rampart_1_1/modules/webapp/SelectService.jsp
@@ -0,0 +1,79 @@
+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisService,

+                 java.util.Collection,

+                 java.util.HashMap,

+                 java.util.Iterator"%>

+  <%

+/*

+ * Copyright 2004,2005 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.

+ *

+ *

+ */

+%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+

+  <%

+      String action ="";

+      String buttonName="" ;

+      String status = (String)request.getSession().getAttribute(Constants.SELECT_SERVICE_TYPE);

+      String heading = "";

+      String disc = "";

+      if(status != null && status.equals("MODULE")) {

+          action = "listOperations";

+          buttonName = " View Operations";

+          heading = "Select a service to view operation specific chains";

+          disc = "Select an Axis service from the combo and click on the 'View Operations' button to view operation specific Chains.";

+      } else if(status != null && status.equals("VIEW")){

+          buttonName = " View ";

+          action = "viewServiceHandlers";

+          heading = "Select a service to view service handlers";

+          disc = "Select an Axis service from the combo and click on the 'View' button to view service handlers.";

+      } else if (status != null && status.equals("SERVICE_PARAMETER")){

+          buttonName = " Edit Parameters ";

+          action = "editServicePara"; // Constants.EDIR_SERVICE_PARA;

+          heading = "Select a Service to Edit Parameters";

+          disc = "Select an Axis service from the combo and click on the 'Edit Parameters' button to edit parameters.";

+      }

+  %>

+<h1><%=heading%></h1>

+<p><%=disc%></p>

+<form method="get" name="selectServiceForm" action="axis2-admin/<%=action%>">

+<table border="0" width="50%" cellspacing="1" cellpadding="1">

+         <tr>

+        <td width="35%">Select a Service :</td><td width="65%">

+            <select name="axisService">

+            <%

+                HashMap services = (HashMap)request.getSession().getAttribute(Constants.SERVICE_MAP);

+                Collection serviceCol =  services.values();

+                for (Iterator iterator = serviceCol.iterator(); iterator.hasNext();) {

+                    AxisService axisService = (AxisService)iterator.next();

+                    String serviceName = axisService.getName();

+            %> <option  align="left" value="<%=serviceName%>"><%=serviceName%></option>

+             <%

+                }

+                request.getSession().setAttribute(Constants.SERVICE_MAP,null);

+             %>

+           </td>

+        </tr>

+	<tr><td colspan="2">&nbsp;</td></tr>

+        <tr><td>&nbsp;</td>

+             <td colspan="2" align="left">

+                <input name="submit" type="submit" value="<%=buttonName%>" >

+             </td>

+         </tr>

+      </table>

+   </form>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/webapp/ServiceParaEdit.jsp b/rampart_1_1/modules/webapp/ServiceParaEdit.jsp
new file mode 100644
index 0000000..22f2438
--- /dev/null
+++ b/rampart_1_1/modules/webapp/ServiceParaEdit.jsp
@@ -0,0 +1,116 @@
+<%@ page import="org.apache.axis2.Constants,
+                 org.apache.axis2.description.AxisOperation,
+                 org.apache.axis2.description.AxisService,
+                 org.apache.axis2.description.Parameter,
+                 java.util.ArrayList,
+                 java.util.Iterator"%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>
+<jsp:include page="include/adminheader.jsp"></jsp:include>
+<h1>Edit Service Parameters</h1>
+  <form method="get" name="editServicepara" action="axis2-admin/editServicepara">
+   <%
+            AxisService axisService = (AxisService)request.getSession().
+                    getAttribute(Constants.SERVICE);
+             if(axisService != null ){
+   %>     <table width="100%">
+
+            <tr>
+                 <td colspan="2" ><b>
+           <%
+                 String servicName =  axisService.getName();
+                 %>Service Parameters :: <%=servicName%>
+                 </b></td>
+             </tr>
+             <tr>
+             <td colspan="2" ><input style="display:none"  name="axisService" value="<%=servicName%>"></td>
+            </tr>
+             <%
+                 ArrayList service_para = axisService.getParameters();
+                 for (int i = 0; i < service_para.size(); i++) {
+                     Parameter parameter = (Parameter) service_para.get(i);
+                     %>
+                     <tr>
+                     <td><%=parameter.getName()%></td>
+                     <td><input type="text" value="<%=parameter.getValue()%>"
+                           name="<%=(servicName + "_" + parameter.getName())%>" size="50">
+                           </td>
+                     </tr>
+                     <%
+                 }
+                Iterator operations =  axisService.getOperations();
+                if(operations.hasNext()){
+                    %>
+                    <tr>
+                      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                    </tr>
+                    <tr>
+                       <td colspan="2" > <b>Operation Paramaters :: </b>
+                       </td>
+                    </tr>
+                    <%
+                }
+
+                 ArrayList op_paras ;
+                        operations = axisService.getOperations();
+                 while (operations.hasNext()) {
+                     AxisOperation axisOperation = (AxisOperation) operations.next();
+                     String operationName = axisOperation.getName().getLocalPart();
+                     %>
+                     <tr>
+                       <td colspan="2" > &nbsp;&nbsp;&nbsp;&nbsp;</td>
+                     </tr>
+                     <tr>
+                       <td colspan="2" ><b>Operation : <%=operationName%></b></td>
+                     </tr>
+                    <%
+                     op_paras = axisOperation.getParameters();
+                     for (int i = 0; i < op_paras.size(); i++) {
+                     Parameter parameter = (Parameter) op_paras.get(i);
+                     %>
+                     <tr>
+                     <td><%=parameter.getName()%></td>
+                     <td><input type="text" value="<%=parameter.getValue()%>"
+                           name="<%=(operationName + "_" + parameter.getName())%>" size="50">
+                           </td>
+                     </tr>
+                     <%
+                  }
+                 }
+                 %>
+                 <tr>
+                    <td>&nbsp;</td>
+                <td>
+                     <input name="changePara" type="submit" value=" Change " >
+               </td>
+               </tr>
+                 </table>
+                 <%
+             } else {
+            	%>
+            	<p><%=request.getAttribute("status")%></p>
+            	<%
+             }
+
+       %>
+       <form>
+<jsp:include page="include/adminfooter.jsp"></jsp:include>
diff --git a/rampart_1_1/modules/webapp/TopFrame.jsp b/rampart_1_1/modules/webapp/TopFrame.jsp
new file mode 100644
index 0000000..cfb7824
--- /dev/null
+++ b/rampart_1_1/modules/webapp/TopFrame.jsp
@@ -0,0 +1,31 @@
+<%

+ /*

+  * Copyright 2004,2005 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.

+  *

+  *

+  */

+%>

+<html>

+  <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>Untitled Document</title>

+    <style type="text/css">

+    </style></head>

+

+  <body>

+    <jsp:include page="include/adminheader.inc">

+    </jsp:include>

+  </body>

+</html>

diff --git a/rampart_1_1/modules/webapp/ViewContexts.jsp b/rampart_1_1/modules/webapp/ViewContexts.jsp
new file mode 100644
index 0000000..93dcc1a
--- /dev/null
+++ b/rampart_1_1/modules/webapp/ViewContexts.jsp
@@ -0,0 +1,65 @@
+<%@ page import="org.apache.axis2.Constants"%>

+<%@ page import="org.apache.axis2.context.ConfigurationContext"%>

+<%@ page import="org.apache.axis2.context.ServiceContext"%>

+<%@ page import="org.apache.axis2.context.ServiceGroupContext"%>

+<%@ page import="java.util.Hashtable"%>

+<%@ page import="java.util.Iterator"%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<h1>Running Context Hierarchy</h1>

+<%

+    ConfigurationContext configContext = (ConfigurationContext)request.getSession().getAttribute(

+            Constants.CONFIG_CONTEXT);

+

+    Hashtable serviceGroupContextsMap = configContext.getServiceGroupContexts();

+    Iterator serviceGroupContext = serviceGroupContextsMap.keySet().iterator();

+    if(serviceGroupContextsMap.size() >0){

+    %>

+     <ul>

+    <%

+    while (serviceGroupContext.hasNext()) {

+        String groupContextID = (String)serviceGroupContext.next();

+        ServiceGroupContext groupContext = (ServiceGroupContext)serviceGroupContextsMap.get(groupContextID);

+        %>

+           <li><%=groupContextID%><font color="blue"><a href="viewServiceGroupContext.jsp?TYPE=VIEW&ID=<%=groupContextID%>">

+                    View</a></font>  <font color="red"><a href="viewServiceGroupContext.jsp?TYPE=DELETE&ID=<%=groupContextID%>">

+                    Remove</a> </font></li>

+        <%

+        Iterator serviceContextItr = groupContext.getServiceContexts();

+            %><ul><%

+        while (serviceContextItr.hasNext()) {

+            ServiceContext serviceContext = (ServiceContext)serviceContextItr.next();

+             String serviceConID = serviceContext.getAxisService().getName();

+        %>

+            <li><%=serviceConID%><font color="blue"><a href="viewServiceContext.jsp?TYPE=VIEW&ID=<%=serviceConID%>&PID=<%=groupContextID%>">

+                    View</a></font></li>

+        <%

+        }

+                %></ul><hr><%

+    }

+    %>  </ul>

+        <%

+            } else {%>

+	<p>No running contexts were found on the system.</p>

+            <%}

+%>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/webapp/ViewGlobalHandlers.jsp b/rampart_1_1/modules/webapp/ViewGlobalHandlers.jsp
new file mode 100644
index 0000000..894add4
--- /dev/null
+++ b/rampart_1_1/modules/webapp/ViewGlobalHandlers.jsp
@@ -0,0 +1,138 @@
+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.engine.AxisConfiguration,

+                 org.apache.axis2.engine.Handler,

+                 org.apache.axis2.engine.Phase,

+                 java.util.ArrayList"%>

+ <%--

+/*

+ * Copyright 2004,2005 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.

+ *

+ *

+ */

+

+--%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<h1>View Global Execution Chains</h1>

+   <%

+            AxisConfiguration axisConfig = (AxisConfiguration)request.getSession().

+                    getAttribute(Constants.GLOBAL_HANDLERS);

+             if(axisConfig != null ){

+                 ArrayList handlers ;

+                 ArrayList phases = axisConfig.getGlobalInFlow();

+                 %>

+                 <h3> In Flow Up To and Including Dispatcher </h3>

+                 <ul>

+                 <%

+                 for (int i = 0; i < phases.size(); i++) {

+                     Phase phase = (Phase) phases.get(i);

+                     %>

+                     <li>Phase Name :  <%=phase.getPhaseName()%></li>

+                     <ul>

+                     <%

+                      handlers = phase.getHandlers();

+                      for (int j = 0; j < handlers.size(); j++) {

+                          Handler handler = (Handler) handlers.get(j);

+                          %>

+                          <li>Handler Name : <%=handler.getHandlerDesc().getName()%></li>

+                          <%

+                      }

+                     %>

+                     </ul>

+                 <%

+                 }

+                 %>

+                 </ul>

+                 <%

+                 phases = axisConfig.getInFaultFlow();

+                 %>

+                 <h3> In Fault Flow </h3>

+                 <ul>

+                 <%

+                 for (int i = 0; i < phases.size(); i++) {

+                     Phase phase = (Phase) phases.get(i);

+                     %>

+                     <li>Phase Name  : <%=phase.getPhaseName()%></li>

+                     <ul>

+                     <%

+                      handlers = phase.getHandlers();

+                      for (int j = 0; j < handlers.size(); j++) {

+                          Handler handler = (Handler) handlers.get(j);

+                          %>

+                          <li>Handler Name : <%=handler.getHandlerDesc().getName()%></li>

+                          <%

+                      }

+                     %>

+                     </ul>

+                 <%

+                 }

+                 %>

+                 </ul>

+                 <%

+

+                 phases = axisConfig.getGlobalOutPhases();

+                 %>

+                 <h3> Out Flow </h3>

+                 <ul>

+                 <%

+                 for (int i = 0; i < phases.size(); i++) {

+                     Phase phase = (Phase) phases.get(i);

+                     %>

+                     <li>Phase Name : <%=phase.getPhaseName()%></li>

+                     <ul>

+                     <%

+                      handlers = phase.getHandlers();

+                      for (int j = 0; j < handlers.size(); j++) {

+                          Handler handler = (Handler) handlers.get(j);

+                          %>

+                          <li>Handler Name : <%=handler.getHandlerDesc().getName()%></li>

+                          <%

+                      }

+                     %>

+                     </ul>

+                 <%

+                 }

+                 %>

+                 </ul>

+                 <%

+                 phases = axisConfig.getOutFaultFlow();

+                 %>

+                 <h3> Out Fault Flow </h3>

+                 <ul>

+                 <%

+                 for (int i = 0; i < phases.size(); i++) {

+                     Phase phase = (Phase) phases.get(i);

+                     %>

+                     <li>Phase Name : <%=phase.getPhaseName()%></li>

+                     <ul>

+                     <%

+                      handlers = phase.getHandlers();

+                      for (int j = 0; j < handlers.size(); j++) {

+                          Handler handler = (Handler) handlers.get(j);

+                          %>

+                          <li>Handler Name : <%=handler.getHandlerDesc().getName()%></li>

+                          <%

+                      }

+                     %>

+                     </ul>

+                 <%

+                 }

+                 %>

+                 </ul>

+                 <%

+

+             }

+              %>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/webapp/ViewServiceHandlers.jsp b/rampart_1_1/modules/webapp/ViewServiceHandlers.jsp
new file mode 100644
index 0000000..617e811
--- /dev/null
+++ b/rampart_1_1/modules/webapp/ViewServiceHandlers.jsp
@@ -0,0 +1,146 @@
+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisOperation,

+                 org.apache.axis2.description.AxisService,

+                 org.apache.axis2.engine.Handler,

+                 org.apache.axis2.engine.Phase,

+                 java.util.ArrayList,

+                 java.util.Iterator"%>

+<%

+        /*

+         * Copyright 2004,2005 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.

+         *

+         *

+         */

+      %>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<html>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<h1>View Operation Specific Chains</h1>

+   <%

+            AxisService axisService = (AxisService)request.getSession().

+                    getAttribute(Constants.SERVICE_HANDLERS);

+             if(axisService != null ){

+                 ArrayList handlers ;

+                Iterator operations =  axisService.getOperations();

+                 while (operations.hasNext()) {

+                     AxisOperation axisOperationon = (AxisOperation) operations.next();

+                     %><h2>Operation Name : <%=axisOperationon.getName().getLocalPart()%></h2><%

+                     ArrayList phases = axisOperationon.getRemainingPhasesInFlow();

+                 %>

+                 <h3> In Flow </h3>

+                 <ul>

+                 <%

+                 for (int i = 0; i < phases.size(); i++) {

+                     Phase phase = (Phase) phases.get(i);

+                     %>

+                     <li>Phase Name :  <%=phase.getPhaseName()%></li>

+                     <ul>

+                     <%

+                      handlers = phase.getHandlers();

+                      for (int j = 0; j < handlers.size(); j++) {

+                          Handler handler = (Handler) handlers.get(j);

+                          %>

+                          <li>Handler Name : <%=handler.getHandlerDesc().getName()%></li>

+                          <%

+                      }

+                     %>

+                     </ul>

+                 <%

+                 }

+                 %>

+                 </ul>

+                 <%

+                 phases = axisOperationon.getPhasesInFaultFlow();

+                 %>

+                 <h3> In Fault Flow </h3>

+                 <ul>

+                 <%

+                 for (int i = 0; i < phases.size(); i++) {

+                     Phase phase = (Phase) phases.get(i);

+                     %>

+                     <li>Phase Name  : <%=phase.getPhaseName()%></li>

+                     <ul>

+                     <%

+                      handlers = phase.getHandlers();

+                      for (int j = 0; j < handlers.size(); j++) {

+                          Handler handler = (Handler) handlers.get(j);

+                          %>

+                          <li>Handler Name : <%=handler.getHandlerDesc().getName()%></li>

+                          <%

+                      }

+                     %>

+                     </ul>

+                 <%

+                 }

+                 %>

+                 </ul>

+                 <%

+

+                 phases = axisOperationon.getPhasesOutFlow();

+                 %>

+                 <h3> Out Flow </h3>

+                 <ul>

+                 <%

+                 for (int i = 0; i < phases.size(); i++) {

+                     Phase phase = (Phase) phases.get(i);

+                     %>

+                     <li>Phase Name : <%=phase.getPhaseName()%></li>

+                     <ul>

+                     <%

+                      handlers = phase.getHandlers();

+                      for (int j = 0; j < handlers.size(); j++) {

+                          Handler handler = (Handler) handlers.get(j);

+                          %>

+                          <li>Handler Name : <%=handler.getHandlerDesc().getName()%></li>

+                          <%

+                      }

+                     %>

+                     </ul>

+                 <%

+                 }

+                 %>

+                 </ul>

+                 <%

+                 phases = axisOperationon.getPhasesOutFaultFlow();

+                 %>

+                 <h3> Out Fault Flow </h3>

+                 <ul>

+                 <%

+                 for (int i = 0; i < phases.size(); i++) {

+                     Phase phase = (Phase) phases.get(i);

+                     %>

+                     <li>Phase Name : <%=phase.getPhaseName()%></li>

+                     <ul>

+                     <%

+                      handlers = phase.getHandlers();

+                      for (int j = 0; j < handlers.size(); j++) {

+                          Handler handler = (Handler) handlers.get(j);

+                          %>

+                          <li>Handler Name : <%=handler.getHandlerDesc().getName()%></li>

+                          <%

+                      }

+                     %>

+                     </ul>

+                 <%

+                 }

+                 %>

+                 </ul>

+                 <%

+

+             }

+                 }

+

+              %>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/admin.jsp b/rampart_1_1/modules/webapp/admin.jsp
new file mode 100644
index 0000000..ba2818d
--- /dev/null
+++ b/rampart_1_1/modules/webapp/admin.jsp
@@ -0,0 +1,31 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<%

+ /*

+  * Copyright 2004,2005 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.

+  *

+  *

+  */

+%>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<h1>Welcome to Axis2 Web Admin Module !!</h1>

+<p>You are now logged into the Axis2 administration console from inside
+the console you will be able to

+    <ul>

+        <li>to check on the health of your Axis2 deployment.</li>

+        <li>to change any parameters at run time.</li>

+        <li>to upload new services into Axis2 [Service hot-deployment].</li>

+    </ul>

+</p>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/webapp/conf/web.xml b/rampart_1_1/modules/webapp/conf/web.xml
new file mode 100644
index 0000000..4e39490
--- /dev/null
+++ b/rampart_1_1/modules/webapp/conf/web.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+    <display-name>Apache-Axis2</display-name>
+    <servlet>
+        <servlet-name>AxisServlet</servlet-name>
+        <display-name>Apache-Axis Servlet</display-name>
+        <servlet-class>
+            org.apache.axis2.transport.http.AxisServlet</servlet-class>
+        <!--<init-param>-->
+        <!--<param-name>axis2.xml.path</param-name>-->
+        <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
+        <!--<param-name>axis2.xml.url</param-name>-->
+        <!--<param-value>http://localhot/myrepo/axis2.xml</param-value>-->
+        <!--<param-name>axis2.repository.path</param-name>-->
+        <!--<param-value>/WEB-INF</param-value>-->
+        <!--<param-name>axis2.repository.url</param-name>-->
+        <!--<param-value>http://localhot/myrepo</param-value>-->
+        <!--</init-param>-->
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet>
+        <servlet-name>AxisRESTServlet</servlet-name>
+        <display-name>Apache-Axis Servlet (REST)</display-name>
+        <servlet-class>
+            org.apache.axis2.transport.http.AxisRESTServlet</servlet-class>
+    </servlet>
+    <servlet>
+        <servlet-name>AxisAdminServlet</servlet-name>
+        <display-name>Apache-Axis AxisAdmin Servlet (REST)</display-name>
+        <servlet-class>
+            org.apache.axis2.transport.http.AxisAdminServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>AxisRESTServlet</servlet-name>
+        <url-pattern>/rest/*</url-pattern>
+    </servlet-mapping>
+
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/servlet/AxisServlet</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>*.jws</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/services/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>AxisAdminServlet</servlet-name>
+        <url-pattern>/axis2-admin/*</url-pattern>
+    </servlet-mapping>
+
+   <welcome-file-list>
+      <welcome-file>index.jsp</welcome-file>
+      <welcome-file>index.html</welcome-file>
+      <welcome-file>/axis2-web/index.jsp</welcome-file>
+    </welcome-file-list>
+
+    <error-page>
+      <error-code>404</error-code>
+      <location>/axis2-web/Error/error404.jsp</location>
+    </error-page>
+
+    <error-page>
+        <error-code>500</error-code>
+        <location>/axis2-web/Error/error500.jsp</location>
+    </error-page>
+
+
+</web-app>
diff --git a/rampart_1_1/modules/webapp/conf/weblogic.xml b/rampart_1_1/modules/webapp/conf/weblogic.xml
new file mode 100644
index 0000000..c78abc6
--- /dev/null
+++ b/rampart_1_1/modules/webapp/conf/weblogic.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE weblogic-web-app PUBLIC "-//BEA

+Systems, Inc.//DTD Web Application 7.0//EN"

+"http://www.bea.com/servers/wls700/dtd/weblogic700-web-jar.dtd">

+<weblogic-web-app>

+	<container-descriptor>

+		<prefer-web-inf-classes>true</prefer-web-inf-classes>

+	</container-descriptor>

+</weblogic-web-app>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/css/axis-style.css b/rampart_1_1/modules/webapp/css/axis-style.css
new file mode 100644
index 0000000..bbf22a6
--- /dev/null
+++ b/rampart_1_1/modules/webapp/css/axis-style.css
@@ -0,0 +1,32 @@
+BODY         {

+	background-color : "#FFFFFF";

+	leftmargin:"0";

+	topmargin:"0";

+	font-family:Arial;

+	font-size:11pt;

+}

+h1           { font-family: Arial; font-size: 16pt; font-weight: bold }

+h2           { font-family: Arial; font-size: 13pt; font-weight: bold; color: #5D0D7D }

+ul           { font-family: Arial; font-size: 11pt }

+input        { font-family: Arial; font-size: 8pt; font-weight: bold }

+td           { font-family: Arial; font-size: 10pt }

+h3           { font-family: Arial; font-size: 12pt; font-weight:bold }

+TABLE.FULL_BLANK {

+	width : 100%;

+	height : 100%;

+	border : 0;

+	padding : 0;

+}

+

+TABLE.LOG_IN_FORM{

+	height: 200px%;

+	border:1px solid #000000;

+	width: 300px%;

+	cellspacing:1px;

+	cellpadding:1px;

+	background-color: #f7f7f7 ;

+}
+
+UL.loginUL LI{
+	padding: 10pt;
+}
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/disengage.jsp b/rampart_1_1/modules/webapp/disengage.jsp
new file mode 100644
index 0000000..0f6b3d5
--- /dev/null
+++ b/rampart_1_1/modules/webapp/disengage.jsp
@@ -0,0 +1,31 @@
+<%@ page import="org.apache.axis2.Constants,
+                 org.apache.axis2.description.AxisModule" %>
+<%@ page import="org.apache.axis2.description.AxisOperation" %>
+<%@ page import="org.apache.axis2.description.AxisService" %>
+<%@ page import="org.apache.axis2.description.Parameter" %>
+<%@ page import="org.apache.axis2.engine.AxisConfiguration" %>
+<%@ page import="org.apache.axis2.util.JavaUtils" %>
+<%@ page import="java.util.*" %>
+<%
+   /*
+    * Copyright 2004,2005 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.
+    *
+    *
+    */
+%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<jsp:include page="include/adminheader.jsp"/>
+<%=request.getSession().getAttribute("status")%>
+<jsp:include page="include/adminfooter.jsp" />
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/engagingglobally.jsp b/rampart_1_1/modules/webapp/engagingglobally.jsp
new file mode 100644
index 0000000..748c512
--- /dev/null
+++ b/rampart_1_1/modules/webapp/engagingglobally.jsp
@@ -0,0 +1,70 @@
+<%

+   /*

+    * Copyright 2004,2005 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.

+    *

+    *

+    */

+%>

+

+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisModule,

+                 java.util.Collection,

+                 java.util.HashMap,

+                 java.util.Iterator" %>

+<html>

+<jsp:include page="include/adminheader.jsp"/>

+<%

+    String status = (String) request.getSession().getAttribute(Constants.ENGAGE_STATUS);

+%>

+<h1>Engage Module Globally</h1>

+

+<p>To engage a module on all services across the system, select a module from the combo box below

+    and click on the "Engage" button. Any module that needs to place handlers into the pre-dispatch

+    phase needs to be engaged globally.</p>

+

+<form method="get" name="selectModuleForm" action="axis2-admin/engagingglobally">

+    <table border="0" width="100%" cellspacing="1" cellpadding="1">

+        <tr>

+            <td width="15%">Select a Module :</td>

+            <td width="75%" align="left">

+                <select name="modules">

+                    <%

+                        HashMap moduels = (HashMap) request.getSession().getAttribute(Constants.MODULE_MAP);

+                        request.getSession().setAttribute(Constants.MODULE_MAP,null);

+                        Collection moduleCol = moduels.values();

+                        for (Iterator iterator = moduleCol.iterator(); iterator.hasNext();) {

+                            AxisModule axisOperation = (AxisModule) iterator.next();

+                            String modulename = axisOperation.getName().getLocalPart();

+                    %> <option align="left" value="<%=modulename%>"><%=modulename%></option>

+                    <%

+                        }

+                    %>

+                </select>

+            </td>

+        </tr>

+        <tr><td>&nbsp;</td>

+            <td>

+                <input name="submit" type="submit" value=" Engage ">

+            </td>

+        </tr>

+    </table>

+</form>

+<%

+    if (status != null) {

+%>

+<p><font color="blue"><%=status%></font></p>

+<%

+    } %>

+<jsp:include page="include/adminfooter.jsp"/>

diff --git a/rampart_1_1/modules/webapp/engagingtoanoperation.jsp b/rampart_1_1/modules/webapp/engagingtoanoperation.jsp
new file mode 100644
index 0000000..a8fef59
--- /dev/null
+++ b/rampart_1_1/modules/webapp/engagingtoanoperation.jsp
@@ -0,0 +1,125 @@
+<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="org.apache.axis2.Constants,

+                                                                             org.apache.axis2.description.AxisModule,

+                                                                             org.apache.axis2.description.AxisOperation,

+                                                                             java.util.Collection,

+                                                                             java.util.HashMap,

+                                                                             java.util.Iterator"%>

+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>
+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<%

+    String status = (String)request.getSession().getAttribute(Constants.ENGAGE_STATUS);

+%>

+<h1>Engage Module for an Operation</h1>

+<p>To engage a module for an  axis operation,

+    <ol>

+            <li>select the module you want to engage </li>

+            <li>select the axis operation you like the module to be engaged.</li>

+            <li>click "Engage".</li>

+        </ol>

+</p>

+<form method="get" name="selectModuleForm" action="axis2-admin/listOperations">

+<table border="0" width="100%" cellspacing="1" cellpadding="1">

+    <tr>

+        <td>

+            &nbsp;

+            &nbsp;

+        </td>

+    </tr>

+    <tr>

+        <td>Select a Module :</td>

+    </tr>

+    <tr>

+        <td>

+            <select name="modules">

+            <%

+                HashMap moduels = (HashMap)request.getSession().getAttribute(Constants.MODULE_MAP);

+                request.getSession().setAttribute(Constants.MODULE_MAP,null);

+                Collection moduleCol =  moduels.values();

+                for (Iterator iterator = moduleCol.iterator(); iterator.hasNext();) {

+                    AxisModule axisOperation = (AxisModule) iterator.next();

+                    String modulename = axisOperation.getName().getLocalPart();

+            %> <option  align="left" value="<%=modulename%>"><%=modulename%></option>

+             <%

+                }

+             %>

+           </td>

+        </tr>

+        <tr>

+           <td>

+             &nbsp;

+             &nbsp;

+           </td>

+         </tr>

+         <tr>

+        <td>Select an Operation :</td>

+    </tr>

+    <tr>

+        <td>

+            <select name="axisOperation">

+            <%

+                Iterator operations = (Iterator)request.getSession().getAttribute(Constants.OPERATION_MAP);

+                while (operations.hasNext()) {

+                    AxisOperation axisOperationtion = (AxisOperation)operations.next();

+                    String opname = axisOperationtion.getName().getLocalPart();

+            %> <option  align="left" value="<%=opname%>"><%=opname%></option>

+             <%

+                }

+                request.getSession().setAttribute(Constants.OPERATION_MAP,null);

+             %>

+           </td>

+        </tr>

+        <tr>

+           <td>

+             &nbsp;

+             &nbsp;

+           </td>

+         </tr>

+         <tr>

+             <td>

+                <input name="submit" type="submit" value=" Engage " >

+             </td>

+         </tr>

+         <tr>

+             <td>

+             &nbsp;

+             &nbsp;

+             </td>

+         </tr>

+         <tr>

+             <td>

+             &nbsp;

+             &nbsp;

+             </td>

+         </tr>

+         <tr>

+             <td>

+                <textarea cols="50"  <%

+                        if(status == null){

+                           %>

+                            style="display:none"

+                            <%

+                        } %>

+                    ><%=status%></textarea>

+              </td>

+           </tr>

+      </table>

+   </form>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/webapp/engagingtoaservice.jsp b/rampart_1_1/modules/webapp/engagingtoaservice.jsp
new file mode 100644
index 0000000..290fd30
--- /dev/null
+++ b/rampart_1_1/modules/webapp/engagingtoaservice.jsp
@@ -0,0 +1,143 @@
+<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="org.apache.axis2.Constants,

+                                                                             org.apache.axis2.description.AxisModule,

+                                                                             org.apache.axis2.description.AxisService,

+                                                                             java.util.Collection,

+                                                                             java.util.HashMap,

+                                                                             java.util.Iterator"

+         errorPage="" %>

+<%

+/*

+ * Copyright 2004,2005 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.

+ *

+ *

+ */

+ %>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<%

+    String status = (String) request.getSession().getAttribute(Constants.ENGAGE_STATUS);

+%>

+<h1>Engage Module for a Service</h1>

+

+<p>To engage a module for a axis service,

+

+    <ol>

+        <li>select the module you want to engage</li>

+        <li>select the axis service you like the module to be engaged.</li>

+        <li>click "Engage".</li>

+    </ol>

+</p>

+<form method="get" name="selectModuleForm" action="axis2-admin/engageToService">

+    <table border="0" width="100%" cellspacing="1" cellpadding="1">

+        <tr>

+            <td>

+                &nbsp;

+                &nbsp;

+            </td>

+        </tr>

+        <tr>

+            <td>Select a Module :</td>

+        </tr>

+        <tr>

+            <td>

+                <select name="modules">

+                    <%

+

+                        HashMap moduels = (HashMap)request.getSession().getAttribute(Constants.MODULE_MAP);

+                        request.getSession().setAttribute(Constants.MODULE_MAP,null);

+                        Collection moduleCol =  moduels.values();

+                        for (Iterator iterator = moduleCol.iterator(); iterator.hasNext();) {

+                            AxisModule axisOperation = (AxisModule) iterator.next();

+                            String modulename = axisOperation.getName().getLocalPart();

+

+                    %>

+                    <option align="left" value="<%=modulename%>"><%=modulename%>

+                    </option>

+                    <%

+

+                       }

+

+                    %>

+            </td>

+        </tr>

+        <tr>

+            <td>

+                &nbsp;

+                &nbsp;

+            </td>

+        </tr>

+        <tr>

+            <td>Select a Service :</td>

+        </tr>

+        <tr>

+            <td>

+                <select name="axisService">

+                    <%

+

+                        HashMap services = (HashMap)request.getSession().getAttribute(Constants.SERVICE_MAP);

+                        Collection serviceCol =  services.values();

+                        for (Iterator iterator = serviceCol.iterator(); iterator.hasNext();) {

+                            AxisService axisService = (AxisService)iterator.next();

+                            String serviceName = axisService.getName();

+

+                    %>

+                    <option align="left" value="<%=serviceName%>"><%=serviceName%>

+                    </option>

+                    <%

+

+                       }

+                       request.getSession().setAttribute(Constants.SERVICE_MAP,null);

+

+                    %>

+            </td>

+        </tr>

+        <tr>

+            <td>

+                &nbsp;

+                &nbsp;

+            </td>

+        </tr>

+        <tr>

+            <td>

+                <input name="submit" type="submit" value=" Engage ">

+            </td>

+        </tr>

+        <tr>

+            <td>

+                &nbsp;

+                &nbsp;

+            </td>

+        </tr>

+        <tr>

+            <td>

+                &nbsp;

+                &nbsp;

+            </td>

+        </tr>

+        <tr>

+            <td>

+                <textarea cols="50"  <%

+                    if (status == null) {

+                %>

+                          style="display:none"

+                        <%

+                            } %>

+                        ><%=status%>

+                </textarea>

+            </td>

+        </tr>

+    </table>

+</form>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

+

diff --git a/rampart_1_1/modules/webapp/error.jsp b/rampart_1_1/modules/webapp/error.jsp
new file mode 100644
index 0000000..04ec1c5
--- /dev/null
+++ b/rampart_1_1/modules/webapp/error.jsp
@@ -0,0 +1,32 @@
+<%--

+ /*

+  * Copyright 2004,2005 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.

+  *

+  *

+  */

+

+--%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<%@page isErrorPage="true" %>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+  <table>

+  <tr>

+  <td align="center">An error has occured!. Please check the details below</td>

+  </tr>

+  <tr>

+  <td align="center"><%=exception.getMessage()%></td>

+  </tr>

+  </table>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/errorModule.jsp b/rampart_1_1/modules/webapp/errorModule.jsp
new file mode 100644
index 0000000..788ddbd
--- /dev/null
+++ b/rampart_1_1/modules/webapp/errorModule.jsp
@@ -0,0 +1,30 @@
+<%@ page import="org.apache.axis2.Constants,
+                 java.util.Hashtable"%>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<jsp:include page="include/adminheader.jsp"></jsp:include>
+  <%
+      Hashtable errornessModules =(Hashtable)request.getSession().getAttribute(Constants.ERROR_MODULE_MAP);
+      String moduleName = request.getParameter("moduleName");
+  %> <h3>The Module has deployment faults</h3><%
+  %><font color="red" ><%=(String)errornessModules.get(moduleName) %></font><%
+  %>
+<jsp:include page="include/adminfooter.jsp"></jsp:include>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/globalModules.jsp b/rampart_1_1/modules/webapp/globalModules.jsp
new file mode 100644
index 0000000..66bd915
--- /dev/null
+++ b/rampart_1_1/modules/webapp/globalModules.jsp
@@ -0,0 +1,57 @@
+ <%

+/*

+ * Copyright 2004,2005 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.

+ *

+ *

+ */

+        %>

+<%@ page import="org.apache.axis2.Constants,

+                 javax.xml.namespace.QName,

+                 java.util.Collection,

+                 java.util.Iterator"%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<h1>Globally Engaged Modules</h1>

+     <%

+	boolean foundModules = false;

+	boolean wroteUL = false;

+         String modulename = "";

+         Collection moduleCol = (Collection)request.getSession().getAttribute(Constants.MODULE_MAP);

+         request.getSession().setAttribute(Constants.MODULE_MAP,null);

+         if(moduleCol != null && moduleCol.size() > 0) {

+             for (Iterator iterator = moduleCol.iterator(); iterator.hasNext();) {

+                 QName axisOperation = (QName) iterator.next();

+                 modulename = axisOperation.getLocalPart();

+		if (!wroteUL){

+			wroteUL = true;

+%>

+	<ul>

+<%

+		}

+     %><li><%=modulename%></li>

+     <br> <%

+             }

+		if (wroteUL){

+%>

+	</ul>

+<%

+		}

+         } else{

+     %>

+    <h2><font color="blue">There are no modules engaged globally</font></h2> 

+                 <%

+         }

+                 %>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/webapp/images/asf-logo.gif b/rampart_1_1/modules/webapp/images/asf-logo.gif
new file mode 100644
index 0000000..b240328
--- /dev/null
+++ b/rampart_1_1/modules/webapp/images/asf-logo.gif
Binary files differ
diff --git a/rampart_1_1/modules/webapp/images/axis.gif b/rampart_1_1/modules/webapp/images/axis.gif
new file mode 100644
index 0000000..e970c5b
--- /dev/null
+++ b/rampart_1_1/modules/webapp/images/axis.gif
Binary files differ
diff --git a/rampart_1_1/modules/webapp/images/axis.jpg b/rampart_1_1/modules/webapp/images/axis.jpg
new file mode 100644
index 0000000..47f9762
--- /dev/null
+++ b/rampart_1_1/modules/webapp/images/axis.jpg
Binary files differ
diff --git a/rampart_1_1/modules/webapp/images/axis_l.jpg b/rampart_1_1/modules/webapp/images/axis_l.jpg
new file mode 100644
index 0000000..172a755
--- /dev/null
+++ b/rampart_1_1/modules/webapp/images/axis_l.jpg
Binary files differ
diff --git a/rampart_1_1/modules/webapp/include/adminfooter.jsp b/rampart_1_1/modules/webapp/include/adminfooter.jsp
new file mode 100644
index 0000000..da6f95e
--- /dev/null
+++ b/rampart_1_1/modules/webapp/include/adminfooter.jsp
@@ -0,0 +1,5 @@
+</td></tr>
+</table>
+<jsp:include page="footer.inc"></jsp:include>
+</body>
+</html>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/include/adminheader.inc b/rampart_1_1/modules/webapp/include/adminheader.inc
new file mode 100644
index 0000000..bab660c
--- /dev/null
+++ b/rampart_1_1/modules/webapp/include/adminheader.inc
@@ -0,0 +1,10 @@
+<table width="100%">

+  <tr>

+    <td align="left"><img src="axis2-web/images/asf-logo.gif"/><h1>Axis 2</h1></td>

+    <td align="right"><img src="axis2-web/images/axis.jpg"/></td>

+    </tr>

+    <tr>

+    <td>.</td>

+   <td align="right"><a href="logout" target="_parent" >Log out</a></td>

+   </tr>

+</table>

diff --git a/rampart_1_1/modules/webapp/include/adminheader.jsp b/rampart_1_1/modules/webapp/include/adminheader.jsp
new file mode 100644
index 0000000..e102d1f
--- /dev/null
+++ b/rampart_1_1/modules/webapp/include/adminheader.jsp
@@ -0,0 +1,24 @@
+<%@ page contentType="text/html;charset=iso-8859-1" language="java" %>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+  <head>

+    <jsp:include page="../include/httpbase.jsp"/>

+    <title>Axis2 :: Administration Page</title>

+    <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css"/>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

+  </head>

+

+  <body>

+    <jsp:include page="header.inc"/>

+    <table class="FULL_BLANK">

+      <tr>

+        <td valign="top" width="20%">

+          <jsp:include page="../LeftFrame.jsp"/>

+        </td>

+        <td valign="top" align="left" width="80%">

+        <table width="100%">

+          <tr>

+            <td align="right" colspan="2"><a href="#" onclick="javaacript:history.back();">Back</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a

+              href="axis2-admin/logout">Log out</a></td>

+          </tr>

+        </table>

diff --git a/rampart_1_1/modules/webapp/include/footer.inc b/rampart_1_1/modules/webapp/include/footer.inc
new file mode 100644
index 0000000..f3f4296
--- /dev/null
+++ b/rampart_1_1/modules/webapp/include/footer.inc
@@ -0,0 +1,19 @@
+</td>

+</tr>

+<tr height="20px">

+	<td>

+	<table width="100%">

+		<tr><td>

+			<table width="950px">

+				<tr><td><hr size="1" noshade="" /></td></tr>

+				<tr>

+					<td align="center">Copyright &#169; 1999-2006, The Apache Software Foundation<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</td>

+				</tr>

+			</table>

+		</td>

+		<td>&nbsp;</td>

+		</tr>

+	</table>

+	</td>

+</tr>

+</table>

diff --git a/rampart_1_1/modules/webapp/include/header.inc b/rampart_1_1/modules/webapp/include/header.inc
new file mode 100644
index 0000000..6a13a23
--- /dev/null
+++ b/rampart_1_1/modules/webapp/include/header.inc
@@ -0,0 +1,11 @@
+<table class="FULL_BLANK"><tr height="100%"><td valign="top">

+<table width="100%">

+<tr><td>

+<table width="950px">

+  <tr>

+    <td align="left"><img src="axis2-web/images/asf-logo.gif"/></td>

+    <td align="right"><img src="axis2-web/images/axis_l.jpg"/></td>

+    </tr>

+</table>

+</td>

+<td>&nbsp;</td></tr></table>

diff --git a/rampart_1_1/modules/webapp/include/httpbase.jsp b/rampart_1_1/modules/webapp/include/httpbase.jsp
new file mode 100644
index 0000000..315a236
--- /dev/null
+++ b/rampart_1_1/modules/webapp/include/httpbase.jsp
@@ -0,0 +1,46 @@
+<%@ page import="org.apache.axis2.Constants" %>
+<%@ page import="org.apache.axis2.context.ConfigurationContext" %>
+<%@ page import="org.apache.axis2.description.Parameter" %>
+<%@ page import="org.apache.axis2.transport.http.AxisServlet" %>
+<%@ page import="javax.servlet.ServletContext" %>
+<%@ page import="javax.servlet.http.HttpServletRequest" %>
+<%!
+  private String frontendHostUrl;
+
+  public void jspInit() {
+    ServletContext context = this.getServletConfig().getServletContext();
+    ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT);
+    Parameter parameter = configctx.getAxisConfiguration().getParameter(Constants.HTTP_FRONTEND_HOST_URL);
+    if (parameter != null) {
+      frontendHostUrl = (String) parameter.getValue();
+    }
+  }
+
+  public String calculateHttpBase(HttpServletRequest aRequest) {
+    StringBuffer stringBuffer = new StringBuffer();
+    if (frontendHostUrl != null) {
+      stringBuffer.append(frontendHostUrl);
+    } else {
+      String scheme = aRequest.getScheme();
+      stringBuffer.append(scheme);
+      stringBuffer.append("://");
+      stringBuffer.append(aRequest.getServerName());
+      if (("http".equalsIgnoreCase(scheme) && aRequest.getServerPort() != 80) || "https".equalsIgnoreCase(scheme) && aRequest.getServerPort() != 443)
+      {
+        stringBuffer.append(":");
+        stringBuffer.append(aRequest.getServerPort());
+      }
+      // I think i saw web containers return null for root web context
+      if (aRequest.getContextPath() != null) {
+        stringBuffer.append(aRequest.getContextPath());
+      }
+    }
+    // append / char if needed
+    if (stringBuffer.charAt(stringBuffer.length() - 1) != '/') {
+      stringBuffer.append("/");
+    }
+    String curentUrl = stringBuffer.toString();
+    aRequest.setAttribute("frontendHostUrl", curentUrl);
+    return curentUrl;
+  }
+%><base href="<%= calculateHttpBase(request)%>"/>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/include/link-footer.inc b/rampart_1_1/modules/webapp/include/link-footer.inc
new file mode 100644
index 0000000..16b6b14
--- /dev/null
+++ b/rampart_1_1/modules/webapp/include/link-footer.inc
@@ -0,0 +1,5 @@
+<table width="100%">

+ <tr>

+   <td align="center"><a href="index.jsp">Back Home</a></td>

+   </tr>

+</table>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/include/link-footer.jsp b/rampart_1_1/modules/webapp/include/link-footer.jsp
new file mode 100644
index 0000000..a3eaf02
--- /dev/null
+++ b/rampart_1_1/modules/webapp/include/link-footer.jsp
@@ -0,0 +1,10 @@
+<table width="100%">

+	<tr><td>

+		<table width="950px">

+			<tr>

+				<td align="right"><a href="axis2-web/index.jsp">Back Home</a>&nbsp;&nbsp;|&nbsp;&nbsp; <a href="#" onclick="javascript:window.location.reload(true);return false;">Refresh</a></td>

+			</tr>

+		</table>

+	</td>

+	<td>&nbsp;</td></tr>

+</table>

diff --git a/rampart_1_1/modules/webapp/index.jsp b/rampart_1_1/modules/webapp/index.jsp
new file mode 100644
index 0000000..ec1f549
--- /dev/null
+++ b/rampart_1_1/modules/webapp/index.jsp
@@ -0,0 +1,58 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<html>

+  <%

+   /*

+    * Copyright 2004,2005 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.

+    *

+    *

+    */

+  %>

+  <head>

+    <jsp:include page="include/httpbase.jsp"/>

+    <title>Axis 2 - Home</title>

+    <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css"/>

+  </head>

+

+  <body>

+    <jsp:include page="include/header.inc" />

+    <br/>

+

+    <h1>Welcome!</h1>

+    Welcome to the new generation of Axis. If you can see this page you have

+    successfully deployed the Axis2 Web Application. However, to ensure that Axis2

+    is properly working, we encourage you to click on the validate link.

+    <br/>

+    <ul>

+      <li><a href="services/listServices">Services</a>

+        <br/>

+        View the list of all the available services deployed in this server.

+      </li>

+      <li><a href="axis2-web/HappyAxis.jsp">Validate</a>

+        <br/>

+        Check the system to see whether all the required libraries are in place

+        and view the system information.

+      </li>

+      <%--<li><a href="interop.jsp">Do an interop test</a>

+      <br/>

+      You can run Interoperability tests here

+      </li>--%>

+      <li><a href="axis2-admin/">Administration</a>

+        <br/>

+        Console for administering this Axis2 installation.

+      </li>

+    </ul>

+    <jsp:include page="include/footer.inc"/>

+  </body>

+</html>

diff --git a/rampart_1_1/modules/webapp/listFaultyService.jsp b/rampart_1_1/modules/webapp/listFaultyService.jsp
new file mode 100644
index 0000000..91c8091
--- /dev/null
+++ b/rampart_1_1/modules/webapp/listFaultyService.jsp
@@ -0,0 +1,88 @@
+<%@ page import="org.apache.axis2.Constants,
+                 org.apache.axis2.description.AxisOperation"%>
+<%@ page import="org.apache.axis2.description.AxisService"%>
+<%@ page import="java.util.Hashtable"%>
+<%@ page import="java.util.Iterator"%>
+<%@ page import="org.apache.axis2.transport.http.AxisServlet"%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>
+<html>
+  <head>
+    <jsp:include page="include/httpbase.jsp"/>
+    <title>List Single service</title>
+    <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css">
+  </head>
+  <body>
+  <jsp:include page="include/header.inc"></jsp:include>
+    <jsp:include page="include/link-footer.jsp"></jsp:include>
+  <%
+        String prifix = request.getAttribute("frontendHostUrl") + (String)request.getSession().getAttribute(Constants.SERVICE_PATH) +"services/";
+        String restprefix = request.getAttribute("frontendHostUrl") + "rest/";
+    %>
+        <%
+            String isFault = (String)request.getSession().getAttribute(Constants.IS_FAULTY);
+            String servicName = request.getParameter("serviceName");
+            if(Constants.IS_FAULTY.equals(isFault)){
+                Hashtable errornessservices =(Hashtable)request.getSession().getAttribute(Constants.ERROR_SERVICE_MAP);
+                %>
+                    <h3>This Web axisService has deployment faults</h3><%
+                     %><font color="red" ><%=(String)errornessservices.get(servicName) %></font>
+                <%
+
+                    }else {
+
+                    AxisService axisService =
+                            (AxisService) request.getSession().getAttribute(Constants.SINGLE_SERVICE);
+                    if(axisService!=null){
+           Iterator opItr = axisService.getOperations();
+            //operationsList = operations.values();
+          String  serviceName = axisService.getName();
+            %><h2><font color="blue"><a href="<%=prifix + axisService.getName()%>?wsdl"><%=serviceName%></a></font></h2>
+           <font color="blue">Service EPR : </font><font color="black"><%=prifix + axisService.getName()%></font><br>
+               <font color="blue">Service REST epr :</font><font color="black"><%=restprefix + axisService.getName()%></font>
+           <h4>Service Description : <font color="black"><%=axisService.getServiceDescription()%></h4>
+           <i><font color="blue">Service Status : <%=axisService.isActive()?"Active":"InActive"%></font></i><br>
+           <%
+            if (opItr.hasNext()) {
+                %><i>Available operations</i><%
+            } else {
+                %><i> There are no Operations specified</i><%
+            }
+               opItr = axisService.getOperations();
+           %><ul><%
+            while (opItr.hasNext()) {
+                AxisOperation axisOperation = (AxisOperation) opItr.next();
+                %><li><%=axisOperation.getName().getLocalPart()%></li>
+                <%
+            }
+           %></ul>
+           <%
+                    } else{
+                           %>
+                <h3><font color="red" >No services found in this location.</font></h3>
+ <%
+                    }
+
+            }
+        %>
+<jsp:include page="include/footer.inc"></jsp:include>
+        </body>
+</html>
diff --git a/rampart_1_1/modules/webapp/listGroupService.jsp b/rampart_1_1/modules/webapp/listGroupService.jsp
new file mode 100644
index 0000000..350f2c5
--- /dev/null
+++ b/rampart_1_1/modules/webapp/listGroupService.jsp
@@ -0,0 +1,108 @@
+<%@ page import="org.apache.axis2.Constants" %>

+<%@ page import="org.apache.axis2.description.AxisModule" %>

+<%@ page import="org.apache.axis2.description.AxisOperation" %>

+<%@ page import="org.apache.axis2.description.AxisService" %>

+<%@ page import="java.util.Collection" %>

+<%@ page import="java.util.HashMap" %>

+<%@ page import="java.util.Iterator" %>

+<%@ page import="org.apache.axis2.transport.http.AxisServlet"%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>

+<html>

+<head>

+  <jsp:include page="include/httpbase.jsp"/>

+  <title>List Services</title>

+  <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css" />

+</head>

+

+<body>

+<jsp:include page="include/adminheader.jsp">

+</jsp:include>

+<h1>Available services</h1>

+<%

+  String prifix = request.getAttribute("frontendHostUrl") + (String)request.getSession().getAttribute(Constants.SERVICE_PATH) +"/";

+%>

+<%

+  HashMap serviceMap = (HashMap) request.getSession().getAttribute(Constants.SERVICE_MAP);

+  request.getSession().setAttribute(Constants.SERVICE_MAP,null);

+  String servicName = request.getParameter("serviceName");

+  AxisService axisService = (AxisService) serviceMap.get(servicName);

+  if (axisService != null) {

+    Iterator operations;

+    String serviceName;

+    operations = axisService.getOperations();

+    serviceName = axisService.getName();

+%><hr>

+

+<h2><font color="blue"><a href="<%=prifix + axisService.getName()%>?wsdl"><%=serviceName%></a>

+</font></h2>

+<font color="blue">Service EPR :</font><font color="black"><%=prifix + axisService.getName()%></font>

+<h4>Service Description : <font color="black"><%=axisService.getServiceDescription()%></h4>

+<i><font color="blue">Service Status : <%=axisService.isActive() ? "Active" : "InActive"%></font></i><br/>

+<%

+  Collection engagedModules = axisService.getEngagedModules();

+  String moduleName;

+  if (engagedModules.size() > 0) {

+%>

+<i>Engaged Modules for the Axis Service</i><ul>

+  <%

+    for (Iterator iteratorm = engagedModules.iterator(); iteratorm.hasNext();) {

+      AxisModule axisOperation = (AxisModule) iteratorm.next();

+      moduleName = axisOperation.getName().getLocalPart();

+  %><li><%=moduleName%></li>

+  <%

+    }%>

+</ul>

+<%

+  }

+  if (operations.hasNext()) {

+%><br><i>Available operations</i><%

+} else {

+%><i> There are no operations specified</i><%

+  }

+%><ul><%

+  operations = axisService.getOperations();

+  while (operations.hasNext()) {

+    AxisOperation axisOperation = (AxisOperation) operations.next();

+%><li><%=axisOperation.getName().getLocalPart()%></li>

+  <%

+    engagedModules = axisOperation.getEngagedModules();

+    if (engagedModules.size() > 0) {

+  %>

+  <br><i>Engaged Modules for the Operation</i><ul>

+  <%

+    for (Iterator iterator2 = engagedModules.iterator(); iterator2.hasNext();) {

+      AxisModule moduleDecription = (AxisModule) iterator2.next();

+      moduleName = moduleDecription.getName().getLocalPart();

+  %><li><%=moduleName%></li><br><%

+  }

+%></ul><%

+    }

+

+  }

+%></ul>

+<%

+  }

+%>

+<jsp:include page="include/adminfooter.jsp">

+</jsp:include>

+</body>

+</html>

diff --git a/rampart_1_1/modules/webapp/listModules.jsp b/rampart_1_1/modules/webapp/listModules.jsp
new file mode 100644
index 0000000..4c6e4f6
--- /dev/null
+++ b/rampart_1_1/modules/webapp/listModules.jsp
@@ -0,0 +1,78 @@
+ <%

+/*

+ * Copyright 2004,2005 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.

+ *

+ *

+ */

+        %>

+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisModule,

+                 java.util.Collection"%>

+ <%@ page import="java.util.Enumeration"%>

+ <%@ page import="java.util.HashMap"%>

+ <%@ page import="java.util.Hashtable"%>

+ <%@ page import="java.util.Iterator"%>

+ <%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+  <h1>Available Modules</h1>

+     <%

+         boolean foundModules = false;

+	boolean wroteUL = false;

+         HashMap moduleMap = (HashMap)request.getSession().getAttribute(Constants.MODULE_MAP);

+         request.getSession().setAttribute(Constants.MODULE_MAP,null);

+         Hashtable errornesModules =(Hashtable)request.getSession().getAttribute(Constants.ERROR_MODULE_MAP);

+         if (moduleMap!=null && !moduleMap.isEmpty()){

+             String modulename = "";

+             Collection moduleNames = moduleMap.values();

+             for (Iterator iterator = moduleNames.iterator(); iterator.hasNext();) {

+                 foundModules = true;

+                 AxisModule  moduleQName = (AxisModule) iterator.next();

+                 modulename = moduleQName.getName().getLocalPart();

+		if (!wroteUL){

+			wroteUL = true;

+%>

+	<ul>

+<%

+		}

+     %><li><%=modulename%></li>

+      <%

+             }

+		if (wroteUL){

+%>

+	</ul>

+<%

+		}

+        }

+      %>

+      <%if(errornesModules.size()>0){

+          %>

+      <h3><font color="red">Faulty Modules</font></h3>

+             <%

+             Enumeration faultyModules = errornesModules.keys();

+             while (faultyModules.hasMoreElements()) {

+                 foundModules = true;

+                 String faultyModuleName = (String) faultyModules.nextElement();

+             %><a href="errorModule.jsp?moduleName=<%=faultyModuleName%>">

+                    <%=faultyModuleName%></a>

+                    <%

+             }

+      }

+             if(! foundModules) {

+                 %>

+                 <h2><font color="blue">There are no modules deployed in the system.</font></h2>

+                 <%

+             }

+     %>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/listService.jsp b/rampart_1_1/modules/webapp/listService.jsp
new file mode 100644
index 0000000..c15ca7d
--- /dev/null
+++ b/rampart_1_1/modules/webapp/listService.jsp
@@ -0,0 +1,179 @@
+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisModule" %>

+<%@ page import="org.apache.axis2.description.AxisOperation" %>

+<%@ page import="org.apache.axis2.description.AxisService" %>

+<%@ page import="org.apache.axis2.description.Parameter" %>

+<%@ page import="org.apache.axis2.engine.AxisConfiguration" %>

+<%@ page import="org.apache.axis2.util.JavaUtils" %>

+<%@ page import="java.util.*" %>

+<%

+   /*

+    * Copyright 2004,2005 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.

+    *

+    *

+    */

+%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<jsp:include page="include/adminheader.jsp"/>

+

+<h1>Available Services</h1>

+<% String prefix = request.getAttribute("frontendHostUrl") + (String)request.getSession().getAttribute(Constants.SERVICE_PATH) + "/";

+    String restPrefix = request.getAttribute("frontendHostUrl") + "rest/";

+%>

+<%

+    HashMap serviceMap = (HashMap) request.getSession().getAttribute(Constants.SERVICE_MAP);

+    request.getSession().setAttribute(Constants.SERVICE_MAP, null);

+    Hashtable errornessservice = (Hashtable) request.getSession().getAttribute(Constants.ERROR_SERVICE_MAP);

+    boolean status = false;

+    if (serviceMap != null && !serviceMap.isEmpty()) {

+        Iterator operations;

+        String serviceName;

+        Collection servicecol = serviceMap.values();

+        for (Iterator iterator = servicecol.iterator(); iterator.hasNext();) {

+            AxisService axisService = (AxisService) iterator.next();

+            operations = axisService.getOperations();

+            serviceName = axisService.getName();

+%><h2><font color="blue"><a href="<%=prefix + axisService.getName()%>?wsdl"><%=serviceName%></a></font></h2>

+<font color="blue">Service EPR : </font><font color="black"><%=prefix + axisService.getName()%></font><br>

+<%

+    // do we need to enable REST in the main servlet so that it handles both REST and SOAP messages

+    boolean enableRESTInAxis2MainServlet = false;

+    boolean disableREST = false;

+    boolean disableSeperateEndpointForREST = false;

+    AxisConfiguration axisConfiguration = axisService.getAxisConfiguration();

+

+    Parameter parameter = axisConfiguration.getParameter(Constants.Configuration.ENABLE_REST_IN_AXIS2_MAIN_SERVLET);

+    if (parameter != null) {

+        enableRESTInAxis2MainServlet = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    // do we need to completely disable REST support

+    parameter = axisConfiguration.getParameter(Constants.Configuration.DISABLE_REST);

+    if (parameter != null) {

+        disableREST = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    // Do we need to have a separate endpoint for REST

+    parameter = axisConfiguration.getParameter(Constants.Configuration.DISABLE_SEPARATE_ENDPOINT_FOR_REST);

+    if (parameter != null) {

+        disableSeperateEndpointForREST = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    if (enableRESTInAxis2MainServlet) {

+%>

+<font color="blue">Service REST epr : </font><font color="black"><%=prefix + axisService.getName()%></font>

+<%

+    }

+    if (!disableREST && !disableSeperateEndpointForREST) {

+        if (!enableRESTInAxis2MainServlet) {

+%>

+<font color="blue">Service REST epr : </font><font color="black"><%=restPrefix + axisService.getName()%></font>

+<%

+} else {

+%>

+<br/>

+<font color="blue"> : </font><font color="black"><%=restPrefix + axisService.getName()%></font>

+<%

+

+    }

+%>

+<%

+    }

+

+

+    String serviceDescription = axisService.getServiceDescription();

+    if (serviceDescription == null || "".equals(serviceDescription)) {

+        serviceDescription = "No description available for this service";

+    }

+%>

+        <h4>Service Description : <font color="black"><%=serviceDescription%></h4>

+<i><font color="blue">Service Status : <%=axisService.isActive() ? "Active" : "InActive"%></font></i><br>

+<%

+    Collection engagedModules = axisService.getEngagedModules();

+    String moduleName;

+    boolean modules_present = false;

+    if (engagedModules.size() > 0) {

+%>

+<i>Engaged modules for the service</i>

+<%

+    for (Iterator iteratorm = engagedModules.iterator(); iteratorm.hasNext();) {

+        AxisModule axisOperation = (AxisModule) iteratorm.next();

+        moduleName = axisOperation.getName().getLocalPart();

+        if (!modules_present) {

+            modules_present = true;

+%>

+<ul>

+    <% }

+    %><li><%=moduleName%> :: <a href="axis2-admin/disengageModule?type=service&serviceName=<%=serviceName%>&module=<%=moduleName%>">Disengage</a></li>

+    <br>

+    <%

+        }

+        if (modules_present) {%>

+</ul>

+<%

+        }

+    }

+    if (operations.hasNext()) {

+%><br><i>Available operations</i><%

+} else {

+%><i> There are no Operations specified</i><%

+    }

+%><ul><%

+    operations = axisService.getOperations();

+    while (operations.hasNext()) {

+        AxisOperation axisOperation = (AxisOperation) operations.next();

+%><li><%=axisOperation.getName().getLocalPart()%></li>

+    <%--                 <br>Operation EPR : <%=prifix + axisService.getName().getLocalPart() + "/"+ axisOperation.getName().getLocalPart()%>--%>

+    <%

+        engagedModules = axisOperation.getEngagedModules();

+        if (engagedModules.size() > 0) {

+    %>

+    <br><i>Engaged Modules for the Operation</i><ul>

+    <%

+        for (Iterator iterator2 = engagedModules.iterator(); iterator2.hasNext();) {

+            AxisModule moduleDecription = (AxisModule) iterator2.next();

+            moduleName = moduleDecription.getName().getLocalPart();

+    %><li><%=moduleName%> :: <a href="axis2-admin/disengageModule?type=operation&serviceName=<%=serviceName%>&operation=<%=axisOperation.getName().getLocalPart()%>&module=<%=moduleName%>">Disengage</a></li><br><%

+    }

+%></ul><%

+        }

+

+    }

+%></ul>

+<%

+            status = true;

+        }

+    }

+    if (errornessservice != null) {

+        if (errornessservice.size() > 0) {

+            request.getSession().setAttribute(Constants.IS_FAULTY, Constants.IS_FAULTY);

+%>

+<h3><font color="red">Faulty Services</font></h3>

+<%

+    Enumeration faultyservices = errornessservice.keys();

+    while (faultyservices.hasMoreElements()) {

+        String faultyserviceName = (String) faultyservices.nextElement();

+%><h3><font color="blue"><a href="services/ListFaultyServices?serviceName=<%=faultyserviceName%>">

+    <%=faultyserviceName%></a></font></h3>

+<%

+            }

+        }

+        status = true;

+    }

+    if (!status) {

+%> No services listed! Try hitting refresh. <%

+    }

+%>

+<jsp:include page="include/adminfooter.jsp" />

diff --git a/rampart_1_1/modules/webapp/listServices.jsp b/rampart_1_1/modules/webapp/listServices.jsp
new file mode 100644
index 0000000..ae2a674
--- /dev/null
+++ b/rampart_1_1/modules/webapp/listServices.jsp
@@ -0,0 +1,153 @@
+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisOperation" %>

+<%@ page import="org.apache.axis2.description.AxisService" %>

+<%@ page import="org.apache.axis2.description.Parameter" %>

+<%@ page import="org.apache.axis2.engine.AxisConfiguration" %>

+<%@ page import="org.apache.axis2.util.JavaUtils" %>

+<%@ page import="java.util.*" %>

+<%--

+/*

+ * Copyright 2002,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.

+ */

+--%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<html>

+<jsp:include page="include/httpbase.jsp"/>

+<head><title>List Services</title>

+    <link href="axis2-web/css/axis-style.css" rel="stylesheet" type="text/css"/>

+</head>

+

+<body>

+<jsp:include page="include/header.inc" />

+<jsp:include page="include/link-footer.jsp" />

+<h1>Available services</h1>

+<% String prefix = request.getAttribute("frontendHostUrl") + (String)request.getSession().getAttribute(Constants.SERVICE_PATH) + "/";

+    String restPrefix = request.getAttribute("frontendHostUrl") + "rest/";

+%>

+<%

+    HashMap serviceMap = (HashMap) request.getSession().getAttribute(Constants.SERVICE_MAP);

+    request.getSession().setAttribute(Constants.SERVICE_MAP, null);

+    Hashtable errornessservice = (Hashtable) request.getSession().getAttribute(Constants.ERROR_SERVICE_MAP);

+    boolean status = false;

+    if (serviceMap != null && !serviceMap.isEmpty()) {

+        Iterator opItr;

+        //HashMap operations;

+        String serviceName;

+        Collection servicecol = serviceMap.values();

+        // Collection operationsList;

+        for (Iterator iterator = servicecol.iterator(); iterator.hasNext();) {

+            AxisService axisService = (AxisService) iterator.next();

+            opItr = axisService.getOperations();

+            //operationsList = operations.values();

+            serviceName = axisService.getName();

+%><h2><font color="blue"><a href="<%=prefix + axisService.getName()%>?wsdl"><%=serviceName%></a></font></h2>

+<font color="blue">Service EPR : </font><font color="black"><%=prefix + axisService.getName()%></font><br>

+<%

+    // do we need to enable REST in the main servlet so that it handles both REST and SOAP messages

+    boolean enableRESTInAxis2MainServlet = false;

+    boolean disableREST = false;

+    boolean disableSeperateEndpointForREST = false;

+    AxisConfiguration axisConfiguration = axisService.getAxisConfiguration();

+

+    Parameter parameter = axisConfiguration.getParameter(Constants.Configuration.ENABLE_REST_IN_AXIS2_MAIN_SERVLET);

+    if (parameter != null) {

+        enableRESTInAxis2MainServlet = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    // do we need to completely disable REST support

+    parameter = axisConfiguration.getParameter(Constants.Configuration.DISABLE_REST);

+    if (parameter != null) {

+        disableREST = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    // Do we need to have a separate endpoint for REST

+    parameter = axisConfiguration.getParameter(Constants.Configuration.DISABLE_SEPARATE_ENDPOINT_FOR_REST);

+    if (parameter != null) {

+        disableSeperateEndpointForREST = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    if (enableRESTInAxis2MainServlet) {

+%>

+<font color="blue">Service REST epr : </font><font color="black"><%=prefix + axisService.getName()%></font>

+<%

+    }

+    if (!disableREST && !disableSeperateEndpointForREST) {

+        if (!enableRESTInAxis2MainServlet) {

+%>

+<font color="blue">Service REST epr : </font><font color="black"><%=restPrefix + axisService.getName()%></font>

+<%

+} else {

+%>

+<br />

+<font color="blue">                  : </font><font color="black"><%=restPrefix + axisService.getName()%></font>

+<%

+

+    }

+%>

+<%

+    }

+

+

+    String serviceDescription = axisService.getServiceDescription();

+    if (serviceDescription == null || "".equals(serviceDescription)) {

+        serviceDescription = "No description available for this service";

+    }

+%>

+<h4>Service Description : <font color="black"><%=serviceDescription%></h4>

+<i><font color="blue">Service Status : <%=axisService.isActive() ? "Active" : "InActive"%></font></i><br>

+<%

+    if (opItr.hasNext()) {

+%><i>Available Operations</i><%

+} else {

+%><i> There are no Operations specified</i><%

+    }

+    opItr = axisService.getOperations();

+%><ul><%

+    while (opItr.hasNext()) {

+        AxisOperation axisOperation = (AxisOperation) opItr.next();

+%><li><%=axisOperation.getName().getLocalPart()%></li>

+    <%--                <br>Operation EPR : <%=prifix + axisService.getName().getLocalPart() + "/"+ axisOperation.getName().getLocalPart()%>--%>

+    <%

+        }

+    %></ul>

+<%

+            status = true;

+        }

+    }

+    if (errornessservice != null) {

+        if (errornessservice.size() > 0) {

+            request.getSession().setAttribute(Constants.IS_FAULTY, Constants.IS_FAULTY);

+%>

+<hr>

+

+<h3><font color="blue">Faulty Services</font></h3>

+<%

+    Enumeration faultyservices = errornessservice.keys();

+    while (faultyservices.hasMoreElements()) {

+        String faultyserviceName = (String) faultyservices.nextElement();

+%><h3><font color="blue"><a href="services/ListFaultyServices?serviceName=<%=faultyserviceName%>">

+    <%=faultyserviceName%></a></font></h3>

+<%

+            }

+        }

+        status = true;

+    }

+    if (!status) {

+%> No services listed! Try hitting refresh. <%

+    }

+%>

+<jsp:include page="include/footer.inc" />

+</body>

+</html>

diff --git a/rampart_1_1/modules/webapp/listSingleService.jsp b/rampart_1_1/modules/webapp/listSingleService.jsp
new file mode 100644
index 0000000..12413c2
--- /dev/null
+++ b/rampart_1_1/modules/webapp/listSingleService.jsp
@@ -0,0 +1,134 @@
+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.description.AxisOperation" %>

+<%@ page import="org.apache.axis2.description.AxisService" %>

+<%@ page import="org.apache.axis2.description.Parameter" %>

+<%@ page import="org.apache.axis2.engine.AxisConfiguration" %>

+<%@ page import="org.apache.axis2.transport.http.AxisServlet" %>

+<%@ page import="org.apache.axis2.util.JavaUtils" %>

+<%@ page import="java.util.Hashtable" %>

+<%@ page import="java.util.Iterator" %>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>

+<jsp:include page="include/adminheader.jsp"/>

+<h1>List Single Service</h1>

+<%

+    String prefix = request.getAttribute("frontendHostUrl") + (String)request.getSession().getAttribute(Constants.SERVICE_PATH) + "/";

+    String restPrefix = request.getAttribute("frontendHostUrl") + "rest/";

+%>

+<%

+    String isFault = (String) request.getSession().getAttribute(Constants.IS_FAULTY);

+    String servicName = request.getParameter("serviceName");

+    if (Constants.IS_FAULTY.equals(isFault)) {

+        Hashtable errornessservices = (Hashtable) request.getSession().getAttribute(Constants.ERROR_SERVICE_MAP);

+%>

+<h3>This Axis service has deployment faults.</h3><%

+%><font color="red"><%=(String) errornessservices.get(servicName) %></font>

+<%

+

+} else {

+

+    AxisService axisService =

+            (AxisService) request.getSession().getAttribute(Constants.SINGLE_SERVICE);

+    if (axisService != null) {

+        Iterator opItr = axisService.getOperations();

+        //operationsList = operations.values();

+        String serviceName = axisService.getName();

+%><h2><font color="blue"><a href="<%=prefix + axisService.getName()%>?wsdl"><%=serviceName%></a></font></h2>

+<font color="blue">Service EPR : </font><font color="black"><%=prefix + axisService.getName()%></font><br>

+<%

+    // do we need to enable REST in the main servlet so that it handles both REST and SOAP messages

+    boolean enableRESTInAxis2MainServlet = false;

+    boolean disableREST = false;

+    boolean disableSeperateEndpointForREST = false;

+    AxisConfiguration axisConfiguration = axisService.getAxisConfiguration();

+

+    Parameter parameter = axisConfiguration.getParameter(Constants.Configuration.ENABLE_REST_IN_AXIS2_MAIN_SERVLET);

+    if (parameter != null) {

+        enableRESTInAxis2MainServlet = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    // do we need to completely disable REST support

+    parameter = axisConfiguration.getParameter(Constants.Configuration.DISABLE_REST);

+    if (parameter != null) {

+        disableREST = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    // Do we need to have a separate endpoint for REST

+    parameter = axisConfiguration.getParameter(Constants.Configuration.DISABLE_SEPARATE_ENDPOINT_FOR_REST);

+    if (parameter != null) {

+        disableSeperateEndpointForREST = !JavaUtils.isFalseExplicitly(parameter.getValue());

+    }

+

+    if (enableRESTInAxis2MainServlet) {

+%>

+<font color="blue">Service REST epr : </font><font color="black"><%=prefix + axisService.getName()%></font>

+<%

+    }

+    if (!disableREST && !disableSeperateEndpointForREST) {

+        if (!enableRESTInAxis2MainServlet) {

+%>

+<font color="blue">Service REST epr : </font><font color="black"><%=restPrefix + axisService.getName()%></font>

+<%

+} else {

+%>

+<br/>

+<font color="blue"> : </font><font color="black"><%=restPrefix + axisService.getName()%></font>

+<%

+

+    }

+%>

+<%

+    }

+

+

+    String serviceDescription = axisService.getServiceDescription();

+    if (serviceDescription == null || "".equals(serviceDescription)) {

+        serviceDescription = "No description available for this service";

+    }

+%>

+<h4>Service Description : <font color="black"><%=serviceDescription%></h4>

+

+<i><font color="blue">Service Status : <%=axisService.isActive() ? "Active" : "InActive"%></font></i><br>

+<%

+    if (opItr.hasNext()) {

+%><i>Available operations</i><%

+} else {

+%><i> There are no Operations specified</i><%

+    }

+    opItr = axisService.getOperations();

+%><ul><%

+    while (opItr.hasNext()) {

+        AxisOperation axisOperation = (AxisOperation) opItr.next();

+%><li><%=axisOperation.getName().getLocalPart()%></li>

+    <%--                <br>Operation EPR : <%=prifix + axisService.getName().getLocalPart() + "/"+ axisOperation.getName().getLocalPart()%>--%>

+    <%

+        }

+    %></ul>

+<%

+} else {

+%>

+<h3><font color="red">No services found in this location</font></h3>

+<%

+        }

+

+    }

+%>

+<jsp:include page="include/adminfooter.jsp"/>

diff --git a/rampart_1_1/modules/webapp/project.xml b/rampart_1_1/modules/webapp/project.xml
new file mode 100644
index 0000000..2156feb
--- /dev/null
+++ b/rampart_1_1/modules/webapp/project.xml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <id>axis2-webapp</id>

+    <name>Apache Axis 2.0 - Web Application</name>

+    <groupId>org.apache.axis2</groupId>

+    <description>Axis2 Web Application module</description>

+

+    <dependencies>

+        <dependency>

+            <groupId>xerces</groupId>

+            <artifactId>xercesImpl</artifactId>

+            <version>${xerces.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>xml-apis</groupId>

+            <artifactId>xml-apis</artifactId>

+            <version>${xml_apis.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>jaxen</groupId>

+            <artifactId>jaxen</artifactId>

+            <version>${jaxen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://www.ibiblio.org/maven/jaxen/jars/</url>

+        </dependency>

+        <dependency>

+            <groupId>commons-codec</groupId>

+            <artifactId>commons-codec</artifactId>

+            <version>${commons.codec.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-fileupload</groupId>

+            <artifactId>commons-fileupload</artifactId>

+            <version>${commons.fileupload.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-io</groupId>

+            <artifactId>commons-io</artifactId>

+            <version>${commons.io.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>${XmlSchema.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+		<dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-dom</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>xalan</groupId>

+            <artifactId>xalan</artifactId>

+            <version>${xalan.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>incubator-woden</groupId>

+            <artifactId>woden</artifactId>

+            <version>${woden.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>javax.activation</groupId>

+            <artifactId>activation</artifactId>

+            <version>${activation.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>javax.mail</groupId>

+            <artifactId>mail</artifactId>

+            <version>${javamail.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>xmlbeans</groupId>

+            <artifactId>xbean</artifactId>

+            <version>${xbean.version}</version>

+            <type>jar</type>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-httpclient</groupId>

+            <artifactId>commons-httpclient</artifactId>

+            <version>${commons.httpclient.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>${stax.impl.groupid}</groupId>

+            <artifactId>${stax.impl.artifactid}</artifactId>

+            <version>${stax.impl.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://dist.codehaus.org/stax/jars/</url>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://dist.codehaus.org/stax/jars/</url>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>${wsdl4j.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant</artifactId>

+            <version>${ant.version}</version>

+            <type>jar</type>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>xmlunit</groupId>

+            <artifactId>xmlunit</artifactId>

+            <version>${xmlunit.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://www.ibiblio.org/maven/xmlunit/jars/</url>

+        </dependency>

+        <dependency>

+            <groupId>annogen</groupId>

+            <artifactId>annogen</artifactId>

+            <version>${annogen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>backport-util-concurrent</groupId>

+            <artifactId>backport-util-concurrent</artifactId>

+            <version>${backport_util_concurrent.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>${neethi.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>jibx</groupId>

+            <artifactId>jibx-run</artifactId>

+            <version>${jibx.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+

+    </dependencies>

+

+    <reports/>

+</project>

diff --git a/rampart_1_1/modules/webapp/scripts/build.xml b/rampart_1_1/modules/webapp/scripts/build.xml
new file mode 100644
index 0000000..3b14d99
--- /dev/null
+++ b/rampart_1_1/modules/webapp/scripts/build.xml
@@ -0,0 +1,67 @@
+<project basedir="../" default="create.war">
+	<property name="dist" value="dist" />
+	<property name="temp" value="${dist}/temp" />
+
+	<target name="init">
+		<mkdir dir="${dist}" />
+		<mkdir dir="${temp}" />
+		<copy toDir="${temp}">
+			<fileset dir="webapp">
+				<include name="**/**" />
+				<exclude name="**/web.xml"/>
+			</fileset>
+		</copy>
+	</target>
+	
+	<target depends="init" name="prepare.repo">
+		
+		<!-- Copying the axis2 repository from ../repository -->
+		<copy toDir="${temp}/WEB-INF">
+			<fileset dir="repository">
+				<include name="**/**" />
+			</fileset>
+		</copy>
+
+		<!-- Creating the services.list -->
+		<path id="services.archives">
+			<fileset dir="${temp}/WEB-INF/services">
+				<include name="*.aar" />
+			</fileset>
+		</path>
+		<pathconvert pathsep="${line.separator}" property="echo.services.archives" refid="services.archives">
+			<flattenmapper />
+		</pathconvert>
+		<echo file="${temp}/WEB-INF/services/services.list" message="${echo.services.archives}" />
+
+		<!-- Creating the modules.list -->
+		<path id="modules.archives">
+			<fileset dir="${temp}/WEB-INF/modules">
+				<include name="*.mar" />
+			</fileset>
+		</path>
+		<pathconvert pathsep="${line.separator}" property="echo.modules.archives" refid="modules.archives">
+			<flattenmapper />
+		</pathconvert>
+		<echo file="${temp}/WEB-INF/modules/modules.list" message="${echo.modules.archives}" />
+
+		<!-- Copying the axis2.xml from ../conf -->
+		<mkdir dir="${temp}/WEB-INF/conf" />
+		<copy file="conf/axis2.xml" toDir="${temp}/WEB-INF/conf" />
+	</target>
+	
+	<target depends="init,prepare.repo" name="create.war">
+		<war destfile="dist/axis2.war" webxml="webapp/WEB-INF/web.xml">
+			<lib dir="lib">
+				<include name="**" />
+				<exclude name="**servlet**" />
+				<exclude name="ant*.jar" />
+			</lib>
+			<webinf dir="${temp}/WEB-INF" />
+			<fileset dir="${temp}">
+				<include name="**/axis2-web/**" />
+			</fileset>
+		</war>
+		<delete dir="${temp}" />
+	</target>
+</project>
+
diff --git a/rampart_1_1/modules/webapp/upload.jsp b/rampart_1_1/modules/webapp/upload.jsp
new file mode 100644
index 0000000..631c8ef
--- /dev/null
+++ b/rampart_1_1/modules/webapp/upload.jsp
@@ -0,0 +1,67 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<%

+ /*

+  * Copyright 2002,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.

+  */

+%>

+

+<jsp:include page="include/adminheader.jsp"/>
+<script type="text/javascript">
+<!--
+	function checkFileUpload(){
+		if (document.getElementById('serviceUpload').value == '') {
+			alert('Please select a file before clicking the upload button.');
+			return false;
+		} else {
+			document.Axis2upload.submit();
+		}
+	}
+//-->
+</script>

+<h1>Upload an Axis Service Archive File</h1>

+

+<p>You can upload a packaged Axis2 service from this page in two small steps.</p>

+<ul>

+  <li>Browse to the location and select the axis service archive file you wish to upload</li>

+  <li>Click "Upload" button</li>

+</ul>

+<p>Simple as that!</p>

+

+<% if ("success".equals(request.getAttribute("status"))) { %>

+<font color="green">File <%= request.getAttribute("filename") %> successfully uploaded </font><br/><br/>

+<%

+} else if ("failure".equals(request.getAttribute("status"))) {

+%>

+<font color="red">The following error occurred <br/> <%= request.getAttribute("cause") %></font><br/>

+<% } %>

+

+<form method="post" name="Axis2upload" id="Axis2upload" action="axis2-admin/upload"

+      enctype="multipart/form-data">

+  <table>

+    <tr>

+      <td>Service archive : </td>

+      <td><input id="serviceUpload" type="file" name="filename" size="50"/></td>

+    </tr>

+    <tr>

+      <td>&nbsp;</td>

+      <td><input name="upload" type="button" onclick="javascript:checkFileUpload();" value=" Upload "/></td>

+    </tr>

+  </table>

+</form>
+<blockquote>
+<p>Hot deployment of new service archives is <%=request.getAttribute("hotDeployment") %></p>
+<p>Hot update of existing service archives is <%=request.getAttribute("hotUpdate") %></p>
+</blockquote>

+<jsp:include page="include/adminfooter.jsp"/>

diff --git a/rampart_1_1/modules/webapp/viewServiceContext.jsp b/rampart_1_1/modules/webapp/viewServiceContext.jsp
new file mode 100644
index 0000000..5d34eb0
--- /dev/null
+++ b/rampart_1_1/modules/webapp/viewServiceContext.jsp
@@ -0,0 +1,69 @@
+<%@ page import="org.apache.axis2.Constants" %>
+<%@ page import="org.apache.axis2.context.ConfigurationContext" %>
+<%@ page import="org.apache.axis2.context.ServiceContext" %>
+<%@ page import="org.apache.axis2.context.ServiceGroupContext" %>
+<%@ page import="org.apache.axis2.description.AxisService" %>
+<%@ page import="java.util.Hashtable" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="java.util.Map" %>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>
+<jsp:include page="include/adminheader.jsp"/>
+<h1>Running Context Hierarchy</h1>
+<%
+    ConfigurationContext configContext = (ConfigurationContext) request.getSession().getAttribute(Constants.CONFIG_CONTEXT);
+    Hashtable serviceGroupContextsMap = configContext.getServiceGroupContexts();
+    String type = request.getParameter("TYPE");
+    String sgID = request.getParameter("PID");
+    String ID = request.getParameter("ID");
+    ServiceGroupContext sgContext = (ServiceGroupContext) serviceGroupContextsMap.get(sgID);
+    AxisService service = sgContext.getDescription().getService(ID);
+    ServiceContext serviceContext = sgContext.getServiceContext(service);
+    if (sgID != null && serviceContext != null) {
+        if (type != null) {
+            if ("VIEW".equals(type)) {
+                Map perMap = serviceContext.getProperties();
+                if (perMap.size() > 0) {
+%>
+<h4>Persistance Properties</h4><ul>
+    <%
+        Iterator itr = perMap.keySet().iterator();
+        while (itr.hasNext()) {
+            String key = (String) itr.next();
+            Object property = perMap.get(key);
+    %>
+    <li><%=key%> : <%=property.toString()%></li>
+    <%
+        }
+    %></ul>
+<%
+} else {
+%>
+<h4>No persistance properties found in the context</h4>
+<%
+        }
+    }
+} else {
+%> <h4>No Service Context Found</h4><%
+        }
+    }
+%>
+<jsp:include page="include/adminfooter.jsp"/>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/viewServiceGroupContext.jsp b/rampart_1_1/modules/webapp/viewServiceGroupContext.jsp
new file mode 100644
index 0000000..2fd8820
--- /dev/null
+++ b/rampart_1_1/modules/webapp/viewServiceGroupContext.jsp
@@ -0,0 +1,71 @@
+<%@ page import="org.apache.axis2.Constants"%>
+<%@ page import="org.apache.axis2.context.ConfigurationContext"%>
+<%@ page import="org.apache.axis2.context.ServiceGroupContext"%>
+<%@ page import="java.util.Hashtable"%>
+<%@ page import="java.util.Iterator"%>
+<%@ page import="java.util.Map"%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ /*
+  * Copyright 2004,2005 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.
+  *
+  *
+  */
+%>
+<jsp:include page="include/adminheader.jsp"></jsp:include>
+<h1>Runing Context hierachy</h1>
+<%
+    ConfigurationContext configContext = (ConfigurationContext)request.getSession().getAttribute(Constants.CONFIG_CONTEXT);
+    Hashtable serviceGroupContextsMap = configContext.getServiceGroupContexts();
+    String type = request.getParameter("TYPE");
+    String sgID = request.getParameter("ID");
+    ServiceGroupContext sgContext = (ServiceGroupContext)serviceGroupContextsMap.get(sgID);
+    if(sgID !=null && sgContext !=null){
+        if(type != null){
+            if("VIEW".equals(type)){
+             Map perMap = sgContext.getProperties();
+             if(perMap.size()>0){
+             %>
+             <h4>Persistance properties</h4><ul>
+             <%
+                 Iterator itr = perMap.keySet().iterator();
+                 while (itr.hasNext()) {
+                     String key = (String) itr.next();
+                     Object property =  perMap.get(key);
+              %>
+                   <li><%=key%> : <%=property.toString()%></li>
+              <%
+                 }
+                 %></ul>
+                 <%
+             } else {
+            %>
+             <h4>No persistance properties found in the context</h4>
+            <%
+             }
+            }   else if("DELETE".equals(type)){
+                Object obj = serviceGroupContextsMap.remove(sgID);
+                if(obj != null){
+                 %>Removed the context<%
+            }else {
+                %>Unable to remove the context <%
+            }
+            }
+        }
+    } else {
+%> <h4>No service group context found</h4><%
+    }
+%>
+<jsp:include page="include/adminfooter.jsp"></jsp:include>
\ No newline at end of file
diff --git a/rampart_1_1/modules/webapp/viewphases.jsp b/rampart_1_1/modules/webapp/viewphases.jsp
new file mode 100644
index 0000000..c120d9b
--- /dev/null
+++ b/rampart_1_1/modules/webapp/viewphases.jsp
@@ -0,0 +1,113 @@
+ <%

+ /*

+  * Copyright 2004,2005 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.

+  *

+  *

+  */

+        %>

+<%@ page import="org.apache.axis2.Constants,

+                 org.apache.axis2.engine.Phase,

+                 java.util.ArrayList"%>

+ <%@ page import="org.apache.axis2.deployment.util.PhasesInfo"%>

+<%@ page contentType="text/html;charset=UTF-8" language="java" %>

+<jsp:include page="include/adminheader.jsp"></jsp:include>

+<h1>Available Phases</h1>

+     <%

+         PhasesInfo phases = (PhasesInfo)request.getSession().getAttribute(Constants.PHASE_LIST);

+         request.getSession().setAttribute(Constants.PHASE_LIST,null);

+         ArrayList tempList = phases.getGlobalInflow();

+     %><h2><font color="blue">System Pre-defined Phases</font></h2>

+     <b>InFlow Up to Dispatcher</b>

+     <blockquote>

+         <%

+             for (int i = 0; i < tempList.size(); i++) {

+                 Phase phase = (Phase) tempList.get(i);

+         %><%=phase.getPhaseName()%><br><%

+             }

+         %>

+         </blockquote>

+         <b>InFaultFlow </b>

+         <blockquote>

+         <%

+             tempList = phases.getGlobalInFaultPhases();

+             for (int i = 0; i < tempList.size(); i++) {

+                 Phase phase = (Phase) tempList.get(i);

+         %><%=phase.getPhaseName()%><br><%

+             }

+         %>

+         </blockquote>

+         <b>OutFlow </b>

+         <blockquote>

+         <%

+             tempList = phases.getGlobalOutPhaseList();

+             for (int i = 0; i < tempList.size(); i++) {

+                 Phase phase = (Phase) tempList.get(i);

+         %><%=phase.getPhaseName()%><br><%

+             }

+         %>

+         </blockquote>

+         <b>OutFaultFlow </b>

+         <blockquote>

+         <%

+             tempList = phases.getOUT_FaultPhases();

+             for (int i = 0; i < tempList.size(); i++) {

+                 Phase phase = (Phase) tempList.get(i);

+         %><%=phase.getPhaseName()%><br><%

+             }

+         %>

+         </blockquote>

+         <br>

+         <h2><font color="blue">User Defined Phases</font></h2>

+         <b>Inflow after Dispatcher</b>

+         <blockquote>

+         <%

+             tempList = phases.getOperationInPhases();

+             for (int i = 0; i < tempList.size(); i++) {

+                 Phase phase = (Phase) tempList.get(i);

+         %><%=phase.getPhaseName()%><br><%

+             }

+         %>

+         </blockquote>

+         <b>InFaultFlow after Dispatcher</b>

+         <blockquote>

+         <%

+             tempList = phases.getOperationInFaultPhases();

+             for (int i = 0; i < tempList.size(); i++) {

+                 Phase phase = (Phase) tempList.get(i);

+         %><%=phase.getPhaseName()%><br><%

+             }

+         %>

+         </blockquote>

+         <b>OutFlow  </b>

+         <blockquote>

+         <%

+             tempList = phases.getOperationOutPhases();

+             for (int i = 0; i < tempList.size(); i++) {

+                 Phase phase = (Phase) tempList.get(i);

+         %><%=phase.getPhaseName()%><br><%

+             }

+         %>

+         </blockquote>

+         <b>OutFaultFlow </b>

+         <blockquote>

+         <%

+             tempList = phases.getOperationOutFaultPhases();

+             for (int i = 0; i < tempList.size(); i++) {

+                 Phase phase = (Phase) tempList.get(i);

+         %><%=phase.getPhaseName()%><br><%

+             }

+         %>

+         </blockquote>

+<jsp:include page="include/adminfooter.jsp"></jsp:include>

diff --git a/rampart_1_1/modules/xmlbeans/maven.xml b/rampart_1_1/modules/xmlbeans/maven.xml
new file mode 100644
index 0000000..c4c878d
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/maven.xml
@@ -0,0 +1,20 @@
+<?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:u="jelly:util"
+         xmlns:maven="jelly:maven"
+         xmlns:util="jelly:util"
+         xmlns:deploy="deploy"
+         xmlns:ant="jelly:ant">
+
+    <preGoal name="itest:compile">
+        <u:file var="file" name="${maven.itest.src}"/>
+        <j:if test="${!file.exists()}">
+            <j:expr value="${context.setVariable('maven.itest.skip', 'true')}"/>
+        </j:if>
+    </preGoal>
+
+</project>
diff --git a/rampart_1_1/modules/xmlbeans/project.properties b/rampart_1_1/modules/xmlbeans/project.properties
new file mode 100644
index 0000000..56a6117
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/project.properties
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------

+# 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.

+# -------------------------------------------------------------------

+

+maven.multiproject.type=jar

diff --git a/rampart_1_1/modules/xmlbeans/project.xml b/rampart_1_1/modules/xmlbeans/project.xml
new file mode 100644
index 0000000..8f47a83
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/project.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+<project>

+    <pomVersion>3</pomVersion>

+    <extend>../../etc/project.xml</extend>

+

+    <id>axis2-xmlbeans</id>

+    <name>Apache Axis 2.0 - XMLBeans Data Binding</name>

+    <groupId>org.apache.axis2</groupId>

+    <description>XMLBeans data binding support for Axis2</description>

+

+    <dependencies>

+       <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-api</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+       

+        <dependency>

+            <groupId>org.apache.ws.commons.axiom</groupId>

+            <artifactId>axiom-impl</artifactId>

+            <version>${axiom.version}</version>

+        </dependency>

+

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-codegen</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-kernel</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+	  <dependency>

+            <groupId>org.apache.axis2</groupId>

+            <artifactId>axis2-java2wsdl</artifactId>

+            <version>${pom.currentVersion}</version>

+        </dependency>

+

+        <dependency>

+            <groupId>org.apache.ws.commons.schema</groupId>

+            <artifactId>XmlSchema</artifactId>

+            <version>${XmlSchema.version}</version>

+        </dependency>

+        <dependency>

+            <groupId>xmlbeans</groupId>

+            <artifactId>xbean</artifactId>

+            <version>${xbean.version}</version>

+            <type>jar</type>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>commons-logging</groupId>

+            <artifactId>commons-logging</artifactId>

+            <version>${commons.logging.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>${stax.impl.groupid}</groupId>

+            <artifactId>${stax.impl.artifactid}</artifactId>

+            <version>${stax.impl.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://dist.codehaus.org/stax/jars/</url>

+        </dependency>

+        <dependency>

+            <groupId>stax</groupId>

+            <artifactId>stax-api</artifactId>

+            <version>${stax.api.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://dist.codehaus.org/stax/jars/</url>

+        </dependency>

+        <dependency>

+            <groupId>wsdl4j</groupId>

+            <artifactId>wsdl4j</artifactId>

+            <version>${wsdl4j.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>ant</groupId>

+            <artifactId>ant</artifactId>

+            <version>${ant.version}</version>

+            <type>jar</type>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>xmlunit</groupId>

+            <artifactId>xmlunit</artifactId>

+            <version>${xmlunit.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+            <url>http://www.ibiblio.org/maven/xmlunit/jars/</url>

+        </dependency>

+         <dependency>

+            <groupId>annogen</groupId>

+            <artifactId>annogen</artifactId>

+            <version>${annogen.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>backport-util-concurrent</groupId>

+            <artifactId>backport-util-concurrent</artifactId>

+            <version>${backport_util_concurrent.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+        <dependency>

+            <groupId>org.apache.neethi</groupId>

+            <artifactId>neethi</artifactId>

+            <version>${neethi.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+	  <dependency>

+            <groupId>incubator-woden</groupId>

+            <artifactId>woden</artifactId>

+            <version>${woden.version}</version>

+            <properties>

+                <module>true</module>

+            </properties>

+        </dependency>

+

+    </dependencies>

+

+    <reports/>

+    <!-- add the build properties-->

+    <build>

+        <resources>

+            <resource>

+                <directory>src</directory>

+                <includes>

+                    <include>**/*.properties</include>

+                    <include>**/*.xml</include>

+                    <include>**/*.xsl</include>

+                    <include>**/*.xsd</include>

+                </includes>

+            </resource>

+        </resources>

+    </build>

+</project>

diff --git a/rampart_1_1/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java b/rampart_1_1/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java
new file mode 100644
index 0000000..10b0504
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java
@@ -0,0 +1,563 @@
+/*
+ * Copyright 2004,2005 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.axis2.xmlbeans;
+
+import org.apache.axis2.description.AxisMessage;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.util.URLProcessor;
+import org.apache.axis2.util.XMLUtils;
+import org.apache.axis2.util.SchemaUtil;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.WSDLUtil;
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.databinding.DefaultTypeMapper;
+import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
+import org.apache.axis2.wsdl.databinding.TypeMapper;
+import org.apache.axis2.wsdl.util.Constants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.xmlbeans.BindingConfig;
+import org.apache.xmlbeans.Filer;
+import org.apache.xmlbeans.SchemaGlobalElement;
+import org.apache.xmlbeans.SchemaProperty;
+import org.apache.xmlbeans.SchemaType;
+import org.apache.xmlbeans.SchemaTypeSystem;
+import org.apache.xmlbeans.XmlBeans;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlOptions;
+import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
+import org.w3c.dom.Element;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import javax.xml.namespace.QName;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.io.StringWriter;
+import java.io.StringReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+/**
+ * Framework-linked code used by XMLBeans data binding support. This is accessed
+ * via reflection from the XMLBeans code generation extension when XMLBeans data
+ * binding is selected.
+ */
+public class CodeGenerationUtility {
+    public static final String SCHEMA_FOLDER = "schemas";
+
+    public static String MAPPINGS = "mappings";
+    public static String MAPPING = "mapping";
+    public static String MESSAGE = "message";
+    public static String JAVA_NAME = "javaclass";
+
+    public static final String MAPPING_FOLDER = "Mapping";
+    public static final String MAPPER_FILE_NAME = "mapper";
+    public static final String SCHEMA_PATH = "/org/apache/axis2/wsdl/codegen/schema/";
+
+    private static final Log log = LogFactory.getLog(CodeGenerationUtility.class);
+    boolean debug = false;
+
+    /**
+     * @param additionalSchemas
+     * @throws RuntimeException
+     */
+    public static TypeMapper processSchemas(List schemas,
+                                            Element[] additionalSchemas, CodeGenConfiguration cgconfig) throws RuntimeException {
+        try {
+
+            //check for the imported types. Any imported types are supposed to be here also
+            if (schemas == null || schemas.isEmpty()) {
+                //there are no types to be code generated
+                //However if the type mapper is left empty it will be a problem for the other
+                //processes. Hence the default type mapper is set to the configuration
+                return new DefaultTypeMapper();
+            }
+
+            SchemaTypeSystem sts;
+            List completeSchemaList = new ArrayList();
+            List topLevelSchemaList = new ArrayList();
+
+            //create the type mapper
+            //First try to take the one that is already there
+            TypeMapper mapper = cgconfig.getTypeMapper();
+            if (mapper == null) {
+                mapper = new JavaTypeMapper();
+            }
+
+            //change the  default class name of the mapper to
+            //xmlbeans specific XMLObject
+            mapper.setDefaultMappingName(XmlObject.class.getName());
+
+            Map nameSpacesMap = cgconfig.getAxisService().getNameSpacesMap();
+
+            // process all the schemas and make a list of all of them for
+            // resolving entities
+            for (int i = 0; i < schemas.size(); i++) {
+                XmlSchema schema = (XmlSchema) schemas.get(i);
+                XmlOptions options = new XmlOptions();
+                options.setLoadAdditionalNamespaces(
+                        nameSpacesMap); //add the namespaces
+                XmlSchema[] allSchemas = SchemaUtil.getAllSchemas(schema);
+                for (int j = 0; j < allSchemas.length; j++) {
+                    completeSchemaList.add(allSchemas[j]);
+                }
+            }
+
+            //make another list of top level schemas for passing into XMLbeans
+            for (int i = 0; i < schemas.size(); i++) {
+                XmlSchema schema = (XmlSchema) schemas.get(i);
+                XmlOptions options = new XmlOptions();
+                options.setLoadAdditionalNamespaces(
+                        nameSpacesMap); //add the namespaces
+                topLevelSchemaList.add(
+                        XmlObject.Factory.parse(
+                                getSchemaAsString(schema)
+                                , options));
+
+            }
+
+            XmlSchemaCollection extras = new XmlSchemaCollection();
+            // add the third party schemas
+            //todo perhaps checking the namespaces would be a good idea to
+            //make the generated code work efficiently
+            for (int i = 0; i < additionalSchemas.length; i++) {
+                completeSchemaList.add(extras.read(additionalSchemas[i]));
+                topLevelSchemaList.add(XmlObject.Factory.parse(
+                        additionalSchemas[i]
+                        , null));
+            }
+
+            //compile the type system
+            Axis2EntityResolver er = new Axis2EntityResolver();
+            er.setSchemas((XmlSchema[]) completeSchemaList.toArray(new XmlSchema[completeSchemaList.size()]));
+            er.setBaseUri(cgconfig.getBaseURI());
+
+
+            sts = XmlBeans.compileXmlBeans(
+                    //set the STS name to null. it makes the generated class
+                    // include a unique (but random) STS name
+                    null,
+                    null,
+                    convertToSchemaArray(topLevelSchemaList),
+                    new Axis2BindingConfig(cgconfig.getUri2PackageNameMap()),
+                    XmlBeans.getContextTypeLoader(),
+                    new Axis2Filer(cgconfig),
+                    new XmlOptions().setEntityResolver(er));
+
+            // prune the generated schema type system and add the list of base64 types
+            cgconfig.putProperty(Constants.BASE_64_PROPERTY_KEY,
+                    findBase64Types(sts));
+            cgconfig.putProperty(Constants.PLAIN_BASE_64_PROPERTY_KEY,
+                    findPlainBase64Types(sts));
+
+            SchemaTypeSystem internal = XmlBeans.getBuiltinTypeSystem();
+            SchemaType[] schemaTypes = internal.globalTypes();
+            for (int j = 0; j < schemaTypes.length; j++) {
+                mapper.addTypeMappingName(schemaTypes[j].getName(),
+                        schemaTypes[j].getFullJavaName());
+
+            }
+
+            //get the schematypes and add the document types to the type mapper
+            schemaTypes = sts.documentTypes();
+            for (int j = 0; j < schemaTypes.length; j++) {
+                mapper.addTypeMappingName(schemaTypes[j].getDocumentElementName(),
+                        schemaTypes[j].getFullJavaName());
+
+            }
+
+            //process the unwrapped parameters
+            if (!cgconfig.isParametersWrapped()) {
+                //figure out the unwrapped operations
+                AxisService axisService = cgconfig.getAxisService();
+                for (Iterator operations = axisService.getOperations();
+                     operations.hasNext();) {
+                    AxisOperation op = (AxisOperation) operations.next();
+                    if (WSDLUtil.isInputPresentForMEP(op.getMessageExchangePattern())) {
+                        AxisMessage message = op.getMessage(
+                                WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                        if (message != null && message.getParameter(Constants.UNWRAPPED_KEY) != null) {
+                            SchemaGlobalElement xmlbeansElement = sts.findElement(message.getElementQName());
+                            SchemaType sType = xmlbeansElement.getType();
+
+                            SchemaProperty[] elementProperties = sType.getElementProperties();
+                            for (int i = 0; i < elementProperties.length; i++) {
+                                SchemaProperty elementProperty = elementProperties[i];
+
+                                QName partQName = WSDLUtil.getPartQName(op.getName().getLocalPart(),
+                                        WSDLConstants.INPUT_PART_QNAME_SUFFIX,
+                                        elementProperty.getName().getLocalPart());
+
+                                //this type is based on a primitive type- use the
+                                //primitive type name in this case
+                                String fullJaveName = elementProperty.getType().getFullJavaName();
+                                if (elementProperty.extendsJavaArray()) {
+                                    fullJaveName = fullJaveName.concat("[]");
+                                }
+                                mapper.addTypeMappingName(partQName, fullJaveName);
+                                SchemaType primitiveType = elementProperty.getType().getPrimitiveType();
+
+
+                                if (primitiveType != null) {
+                                    mapper.addTypeMappingStatus(partQName, Boolean.TRUE);
+                                }
+                                if (elementProperty.extendsJavaArray()){
+                                    mapper.addTypeMappingStatus(partQName,Constants.ARRAY_TYPE);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            //return mapper to be set in the config
+            return mapper;
+
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Populate the base64 types
+     * The algo is to look for simpletypes that have base64 content, and then step out of that
+     * onestep and get the element. For now there's an extended check to see whether the simple type
+     * is related to the Xmime:contentType!
+     *
+     * @param sts
+     */
+    private static List findBase64Types(SchemaTypeSystem sts) {
+        List allSeenTypes = new ArrayList();
+        List base64ElementQNamesList = new ArrayList();
+        SchemaType outerType;
+        //add the document types and global types
+        allSeenTypes.addAll(Arrays.asList(sts.documentTypes()));
+        allSeenTypes.addAll(Arrays.asList(sts.globalTypes()));
+
+        for (int i = 0; i < allSeenTypes.size(); i++) {
+            SchemaType sType = (SchemaType) allSeenTypes.get(i);
+
+            if (sType.getContentType() == SchemaType.SIMPLE_CONTENT && sType.getPrimitiveType() != null) {
+                if (org.apache.axis2.namespace.Constants.BASE_64_CONTENT_QNAME.equals(sType.getPrimitiveType().getName()))
+                {
+                    outerType = sType.getOuterType();
+                    //check the outer type further to see whether it has the contenttype attribute from
+                    //XMime namespace
+                    SchemaProperty[] properties = sType.getProperties();
+                    for (int j = 0; j < properties.length; j++) {
+                        if (org.apache.axis2.namespace.Constants.XMIME_CONTENT_TYPE_QNAME.equals(properties[j].getName()))
+                        {
+                            //add this only if it is a document type ??
+                            if (outerType.isDocumentType()) {
+                                base64ElementQNamesList.add(outerType.getDocumentElementName());
+                            }
+                            break;
+                        }
+                    }
+                }
+            }
+            //add any of the child types if there are any
+            allSeenTypes.addAll(Arrays.asList(sType.getAnonymousTypes()));
+        }
+
+        return base64ElementQNamesList;
+    }
+
+    /**
+     * @param sts
+     * @return array list
+     */
+    private static List findPlainBase64Types(SchemaTypeSystem sts) {
+        ArrayList allSeenTypes = new ArrayList();
+
+        allSeenTypes.addAll(Arrays.asList(sts.documentTypes()));
+        allSeenTypes.addAll(Arrays.asList(sts.globalTypes()));
+
+        ArrayList base64Types = new ArrayList();
+
+        for (Iterator iterator = allSeenTypes.iterator(); iterator.hasNext();) {
+            SchemaType stype = (SchemaType) iterator.next();
+            findPlainBase64Types(stype, base64Types, new ArrayList());
+        }
+
+        return base64Types;
+    }
+
+    /**
+     * @param stype
+     * @param base64Types
+     */
+    private static void findPlainBase64Types(SchemaType stype,
+                                             ArrayList base64Types,
+                                             ArrayList processedTypes) {
+
+        SchemaProperty[] elementProperties = stype.getElementProperties();
+        QName name;
+        SchemaType schemaType;
+        for (int i = 0; i < elementProperties.length; i++) {
+            schemaType = elementProperties[i].getType();
+            name = elementProperties[i].getName();
+            if (!base64Types.contains(name) && !processedTypes.contains(schemaType.getName())) {
+                processedTypes.add(stype.getName());
+                if (schemaType.isPrimitiveType()) {
+                    SchemaType primitiveType = schemaType.getPrimitiveType();
+                    if (org.apache.axis2.namespace.Constants.BASE_64_CONTENT_QNAME.equals(primitiveType.getName())) {
+                        base64Types.add(name);
+                    }
+
+                } else {
+                    findPlainBase64Types(schemaType, base64Types, processedTypes);
+                }
+            }
+        }
+
+
+    }
+
+
+    /**
+     * Private class to generate the filer
+     */
+    private static class Axis2Filer implements Filer {
+
+        private File location;
+        private boolean flatten = false;
+        private String resourceDirName;
+        private String srcDirName;
+        private static final String JAVA_FILE_EXTENSION = ".java";
+
+        private Axis2Filer(CodeGenConfiguration config) {
+            location = config.getOutputLocation();
+            flatten = config.isFlattenFiles();
+            resourceDirName = config.getResourceLocation();
+            srcDirName = config.getSourceLocation();
+        }
+
+        public OutputStream createBinaryFile(String typename)
+                throws IOException {
+            File resourcesDirectory =
+                    flatten ?
+                            location :
+                            new File(location, resourceDirName);
+
+            if (!resourcesDirectory.exists()) {
+                resourcesDirectory.mkdirs();
+            }
+            File file = new File(resourcesDirectory, typename);
+            file.getParentFile().mkdirs();
+            file.createNewFile();
+            return new FileOutputStream(file);
+        }
+
+        public Writer createSourceFile(String typename)
+                throws IOException {
+            typename =
+                    typename.replace('.', File.separatorChar);
+
+            File outputDir =
+                    flatten ?
+                            location :
+                            new File(location, srcDirName);
+
+            if (!outputDir.exists()) {
+                outputDir.mkdirs();
+            }
+            File file = new File(outputDir,
+                    typename + JAVA_FILE_EXTENSION);
+            file.getParentFile().mkdirs();
+            file.createNewFile();
+            return new FileWriter(file);
+        }
+    }
+
+    /**
+     * Convert schema into a String
+     *
+     * @param schema
+     */
+    private static String getSchemaAsString(XmlSchema schema) throws IOException {
+        StringWriter writer = new StringWriter();
+        schema.write(writer);
+        return writer.toString();
+    }
+
+    /**
+     * Custom binding configuration for the code generator. This controls
+     * how the namespaces are suffixed/prefixed
+     */
+    private static class Axis2BindingConfig extends BindingConfig {
+
+        private Map uri2packageMappings = null;
+
+        public Axis2BindingConfig(Map uri2packageMappings) {
+            this.uri2packageMappings = uri2packageMappings;
+            if (this.uri2packageMappings == null) {
+                //make an empty one to avoid nasty surprises
+                this.uri2packageMappings = new HashMap();
+            }
+        }
+
+        public String lookupPackageForNamespace(String uri) {
+            if (uri2packageMappings.containsKey(uri)) {
+                return (String) uri2packageMappings.get(uri);
+            } else {
+                return URLProcessor.makePackageName(uri);
+            }
+
+        }
+    }
+
+    /**
+     * Converts a given vector of schemaDocuments to XmlBeans processable
+     * schema objects. One drawback we have here is the non-inclusion of
+     * untargeted namespaces
+     *
+     * @param vec
+     * @return schema array
+     */
+    private static SchemaDocument.Schema[] convertToSchemaArray(List vec) {
+        SchemaDocument[] schemaDocuments =
+                (SchemaDocument[]) vec.toArray(new SchemaDocument[vec.size()]);
+        //remove duplicates
+        Vector uniqueSchemas = new Vector(schemaDocuments.length);
+        Vector uniqueSchemaTns = new Vector(schemaDocuments.length);
+        SchemaDocument.Schema s;
+        for (int i = 0; i < schemaDocuments.length; i++) {
+            s = schemaDocuments[i].getSchema();
+            if (!uniqueSchemaTns.contains(s.getTargetNamespace())) {
+                uniqueSchemas.add(s);
+                uniqueSchemaTns.add(s.getTargetNamespace());
+            } else if (s.getTargetNamespace() == null) {
+                uniqueSchemas.add(s);
+            }
+        }
+        return (SchemaDocument.Schema[])
+                uniqueSchemas.toArray(
+                        new SchemaDocument.Schema[uniqueSchemas.size()]);
+    }
+
+    /**
+     * Axis2 specific entity resolver
+     */
+    private static class Axis2EntityResolver implements EntityResolver {
+        private XmlSchema[] schemas;
+        private String baseUri;
+
+        /**
+         * @param publicId - this is the target namespace
+         * @param systemId - this is the location (value of schemaLocation)
+         * @return
+         * @see EntityResolver#resolveEntity(String, String)
+         */
+        public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
+            if (systemId.startsWith("project://local/")) {
+                systemId = systemId.substring("project://local/".length());
+            }
+            log.info("Resolving schema with publicId [" + publicId + "] and systemId [" + systemId + "]");
+            try {
+                for (int i = 0; i < schemas.length; i++) {
+                    XmlSchema schema = schemas[i];
+                    boolean found = false;
+                    if (systemId.indexOf('/') == -1 && schema.getSourceURI() != null && schema.getSourceURI().endsWith(systemId))
+                    {
+                        found = true;
+                    } else if (schema.getSourceURI() != null && schema.getSourceURI().equals(systemId)) {
+                        found = true;
+                    }
+                    if (found) {
+                        try {
+                            return new InputSource(getSchemaAsReader(schemas[i]));
+                        } catch (IOException e) {
+                            throw new RuntimeException(e);
+                        }
+                    }
+                }
+                for (int i = 0; i < schemas.length; i++) {
+                    XmlSchema schema = schemas[i];
+                    if (schema.getTargetNamespace() != null && schema.getTargetNamespace().equals(publicId)) {
+                        try {
+                            return new InputSource(getSchemaAsReader(schemas[i]));
+                        } catch (IOException e) {
+                            throw new RuntimeException(e);
+                        }
+                    }
+                }
+                if (systemId.indexOf(':') == -1) {
+                    //if the base URI is missing then attache the file:/// to it
+                    //if the systemId actually had a scheme then as per the URL
+                    //constructor, the context URL scheme should be ignored
+                    baseUri = (baseUri == null) ? "file:///" : baseUri;
+                    URL url = new URL(new URL(baseUri), systemId);
+                    return new InputSource(url.openStream());
+                }
+                return XMLUtils.getEmptyInputSource();
+            } catch (Exception e) {
+                throw new SAXException(e);
+            }
+        }
+
+        public XmlSchema[]  getSchemas() {
+            return schemas;
+        }
+
+        public void setSchemas(XmlSchema[] schemas) {
+            this.schemas = schemas;
+        }
+
+        public String getBaseUri() {
+            return baseUri;
+        }
+
+        public void setBaseUri(String baseUri) {
+            this.baseUri = baseUri;
+        }
+
+        /**
+         * Convert schema into a InputStream
+         *
+         * @param schema
+         */
+        private StringReader getSchemaAsReader(XmlSchema schema) throws IOException {
+            StringWriter writer = new StringWriter();
+            schema.write(writer);
+            writer.flush();
+            return new StringReader(writer.toString());
+        }
+    }
+
+
+}
+
+
+
diff --git a/rampart_1_1/modules/xmlbeans/src/org/apache/axis2/xmlbeans/template/XmlbeansDatabindingTemplate.xsl b/rampart_1_1/modules/xmlbeans/src/org/apache/axis2/xmlbeans/template/XmlbeansDatabindingTemplate.xsl
new file mode 100644
index 0000000..a60514f
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/src/org/apache/axis2/xmlbeans/template/XmlbeansDatabindingTemplate.xsl
@@ -0,0 +1,229 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

+    <xsl:output method="text"/>

+

+    <xsl:key name="paramsIn" match="//databinders/param[@direction='in']" use="@type"/>

+    <xsl:key name="paramsOut" match="//databinders/param[@direction='out']" use="@type"/>

+    <xsl:key name="innerParams" match="//databinders/param[@direction='in']/param" use="@partname"/>

+

+    <!-- #################################################################################  -->

+    <!-- ############################   xmlbeans template   ##############################  -->

+    <xsl:template match="databinders[@dbtype='xmlbeans']">

+        <xsl:variable name="serverside" select="@isserverside"/>

+        <xsl:variable name="base64" select="base64Elements/name"/>

+        <xsl:if test="$base64">

+            private static javax.xml.namespace.QName[] qNameArray = {

+            <xsl:for-each select="base64Elements/name">

+                <xsl:if test="position()>1">,</xsl:if>new javax.xml.namespace.QName("<xsl:value-of select="@ns-url"/>","<xsl:value-of select="@localName"/>")

+            </xsl:for-each>

+            };

+        </xsl:if>

+

+        <xsl:for-each select="param[not(@type = preceding-sibling::param/@type) and @type!='']">

+

+            private  org.apache.axiom.om.OMElement  toOM(<xsl:value-of select="@type"/> param, boolean optimizeContent){

+            org.apache.axiom.om.impl.builder.StAXOMBuilder builder = new org.apache.axiom.om.impl.builder.StAXOMBuilder

+            (org.apache.axiom.om.OMAbstractFactory.getOMFactory(),new org.apache.axis2.util.StreamWrapper(param.newXMLStreamReader())) ;

+            org.apache.axiom.om.OMElement documentElement = builder.getDocumentElement();

+

+            <xsl:if test="$base64">

+                if (optimizeContent) {

+                optimizeContent(documentElement,qNameArray);

+                }

+            </xsl:if>

+

+            ((org.apache.axiom.om.impl.OMNodeEx)documentElement).setParent(null);

+            return documentElement;

+            }

+        </xsl:for-each>

+

+

+        <xsl:for-each select="opnames/name">

+

+            <xsl:variable name="opname" select="."/>

+            <xsl:variable name="opnsuri" select="@opnsuri"/>

+            <xsl:variable name="paramcount" select="count(../../param[@type!='' and @direction='in' and @opname=$opname])"/>

+             <!-- get the opname capitalized -->

+            <xsl:variable name="opnameCapitalized" select="concat(translate(substring($opname, 1, 1 ),'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($opname, 2, string-length($opname)))"></xsl:variable>

+

+            <xsl:if test="not($serverside)">

+                <xsl:choose>

+                    <xsl:when test="$paramcount &gt; 0">

+                        <xsl:variable name="inputElement" select="../../param[@type!='' and @direction='in' and @opname=$opname]"></xsl:variable>

+                        <xsl:variable name="inputElementType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@type"></xsl:variable>

+                        <xsl:variable name="inputElementShortType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@shorttype"></xsl:variable>

+                        <xsl:variable name="inputElementComplexType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@complextype"></xsl:variable>

+                        <xsl:variable name="wrappedParameterCount" select="count(../../param[@type!='' and @direction='in' and @opname=$opname]/param)"></xsl:variable>

+

+                        <xsl:if test="generate-id($inputElement) = generate-id(key('paramsIn', $inputElementType)[1])">

+                            <xsl:choose>

+                            <xsl:when test="$wrappedParameterCount &gt; 0">

+                                <!-- geneate the toEnvelope method-->

+                                private  org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory,

+                                <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+                                    <xsl:value-of select="@type"/> param<xsl:value-of select="position()"/>,

+                                </xsl:for-each><xsl:value-of select="$inputElementType"/> dummyWrappedType,

+                                boolean optimizeContent){

+

+                                <xsl:value-of select="$inputElementType"/> wrappedType = <xsl:value-of select="$inputElementType"/>.Factory.newInstance();

+

+                                <xsl:choose>

+                                    <xsl:when test="string-length(normalize-space($inputElementComplexType)) > 0">

+                                        <xsl:value-of select="$inputElementComplexType"/> innerType = wrappedType.addNew<xsl:value-of select="substring-before($inputElementShortType,'Document')"/>();

+                                    </xsl:when>

+                                    <xsl:otherwise>

+                                        <xsl:value-of select="$inputElementType"/>.<xsl:value-of select="substring-before($inputElementShortType,'Document')"/> innerType = wrappedType.addNew<xsl:value-of select="substring-before($inputElementShortType,'Document')"/>();

+                                    </xsl:otherwise>

+                                </xsl:choose>

+

+                                <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+                                    <xsl:choose>

+                                        <xsl:when test="@array">

+                                            innerType.xset<xsl:value-of select="@partname"/>Array(param<xsl:value-of select="position()"/>);

+                                        </xsl:when>

+                                        <xsl:otherwise>

+                                            innerType.xset<xsl:value-of select="@partname"/>(param<xsl:value-of select="position()"/>);

+                                        </xsl:otherwise>

+                                    </xsl:choose>

+                                </xsl:for-each>

+

+                                org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();

+                                envelope.getBody().addChild(toOM(wrappedType, optimizeContent));

+                                return envelope;

+

+                                }

+

+                            </xsl:when>

+                            <xsl:otherwise>

+                                <!-- Assumption - the parameter is always an XMLBeans -->

+                                private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, <xsl:value-of select="$inputElementType"/> param, boolean optimizeContent){

+                                org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();

+                                if (param != null){

+                                envelope.getBody().addChild(toOM(param, optimizeContent));

+                                }

+                                return envelope;

+                                }

+                            </xsl:otherwise>

+                        </xsl:choose>

+                        </xsl:if>

+                    </xsl:when>

+

+                    <xsl:otherwise>

+                        <!-- Do nothing here -->

+                    </xsl:otherwise>

+                </xsl:choose>

+            </xsl:if>

+            <!-- this piece of logic needs to be generated only for the server side-->

+            <xsl:if test="$serverside">

+

+

+                <xsl:choose>

+                    <xsl:when test="count(../../param[@type!='' and @direction='out' and @opname=$opname])=1">

+                        <xsl:variable name="outElement" select="../../param[@type!='' and @direction='out' and @opname=$opname]"></xsl:variable>

+                        <xsl:variable name="outElementType" select="../../param[@type!='' and @direction='out' and @opname=$opname]/@type"></xsl:variable>

+

+                        <!-- Assumption - This is an XMLBeans element-->

+                        <xsl:if test="generate-id($outElement) = generate-id(key('paramsOut', $outElementType)[1])">

+                            private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, <xsl:value-of select="../../param[@type!='' and @direction='out' and @opname=$opname]/@type"/> param, boolean optimizeContent){

+                            org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();

+                            if (param != null){

+                            envelope.getBody().addChild(toOM(param, optimizeContent));

+                            }

+                            return envelope;

+                            }

+                        </xsl:if>

+

+                    </xsl:when>

+                </xsl:choose>

+                <xsl:if test="count(../../param[@type!='' and @direction='in' and @opname=$opname])=1">

+                    <!-- generate the get methods -->

+                   <xsl:variable name="inputElement" select="../../param[@type!='' and @direction='in' and @opname=$opname]"></xsl:variable>

+                   <xsl:variable name="inputElementType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@type"></xsl:variable>

+                   <xsl:variable name="inputElementShortType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@shorttype"></xsl:variable>

+                   <xsl:variable name="inputElementComplexType" select="../../param[@type!='' and @direction='in' and @opname=$opname]/@complextype"></xsl:variable>

+

+                    <xsl:for-each select="../../param[@type!='' and @direction='in' and @opname=$opname]/param">

+                        <xsl:variable name="paramElement" select="."></xsl:variable>

+                        <xsl:variable name="partName" select="@partname"></xsl:variable>

+

+                        <xsl:if test="(generate-id($paramElement) = generate-id(key('innerParams', $partName)[1])) or

+                        (generate-id($inputElement) = generate-id(key('paramsIn', $inputElementType)[1]))">

+

+                            private <xsl:value-of select="@type"/> get<xsl:value-of select="@partname"/>(

+                            <xsl:value-of select="../@type"/> wrappedType){

+

+                            <!-- there is not difference betwee having a seperate complex type and the

+                                inline complex type implementation -->

+                            <xsl:choose>

+                                 <xsl:when test="@array">

+                                     return wrappedType.get<xsl:value-of select="substring-before($inputElementShortType,'Document')"/>().xget<xsl:value-of select="$partName"/>Array();

+                                 </xsl:when>

+                                 <xsl:otherwise>

+                                     return wrappedType.get<xsl:value-of select="substring-before($inputElementShortType,'Document')"/>().xget<xsl:value-of select="$partName"/>();

+                                 </xsl:otherwise>

+                            </xsl:choose>

+                        }

+                       </xsl:if>

+                    </xsl:for-each>

+                </xsl:if>

+            </xsl:if>

+        </xsl:for-each>

+

+

+        /**

+        *  get the default envelope

+        */

+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory){

+        return factory.getDefaultEnvelope();

+        }

+

+        public org.apache.xmlbeans.XmlObject fromOM(

+        org.apache.axiom.om.OMElement param,

+        java.lang.Class type,

+        java.util.Map extraNamespaces){

+        try{

+        <xsl:for-each select="param[@type!='' and not(@primitive)]">

+

+            if (<xsl:value-of select="@type"/>.class.equals(type)){

+            if (extraNamespaces!=null){

+            return <xsl:value-of select="@type"/>.Factory.parse(

+            param.getXMLStreamReaderWithoutCaching(),

+            new org.apache.xmlbeans.XmlOptions().setLoadAdditionalNamespaces(extraNamespaces));

+            }else{

+            return <xsl:value-of select="@type"/>.Factory.parse(

+            param.getXMLStreamReaderWithoutCaching());

+            }

+            }

+

+        </xsl:for-each>

+        }catch(java.lang.Exception e){

+        throw new RuntimeException("Data binding error",e);

+        }

+        return null;

+        }

+

+        <!-- Generate the base 64 optimize methods only if the base64 items are present -->

+        <xsl:if test="$base64">

+

+            private void optimizeContent(org.apache.axiom.om.OMElement element, javax.xml.namespace.QName[] qNames){

+            for (int i = 0; i &lt; qNames.length; i++) {

+            markElementsAsOptimized(qNames[i],element);

+            }

+            }

+

+            private void markElementsAsOptimized(javax.xml.namespace.QName qName,org.apache.axiom.om.OMElement rootElt){

+            if (rootElt.getQName().equals(qName)){

+            //get the text node and mark it

+            org.apache.axiom.om.OMNode node = rootElt.getFirstOMChild();

+            if (node.getType()==org.apache.axiom.om.OMNode.TEXT_NODE){

+            ((org.apache.axiom.om.OMText)node).setOptimize(true);

+            }

+

+            }

+            java.util.Iterator childElements = rootElt.getChildElements();

+            while (childElements.hasNext()) {

+            markElementsAsOptimized(qName,(org.apache.axiom.om.OMElement)childElements.next());

+            }

+            }

+        </xsl:if>

+    </xsl:template>

+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/BookQuote.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/BookQuote.wsdl
new file mode 100644
index 0000000..729d7da
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/BookQuote.wsdl
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns:mh="http://www.Monson-Haefel.com/jwsbook/BookQuote" xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+             targetNamespace="http://www.Monson-Haefel.com/jwsbook/BookQuote"
+             xmlns:types="http://www.Monson-Haefel.com/jwsbook/BookQuote/xsd" name="BookQuote">
+    <types>
+    <xsd:schema elementFormDefault="qualified"
+                targetNamespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/xsd">
+      <xsd:element name="faultElement" type="xsd:anyType"/>
+    </xsd:schema>
+  </types>
+	<message name="BookQuote_getBookPrice">
+		<part name="isbn" type="xsd:anyType"/>
+		<part name="number" type="xsd:int"/>
+	</message>
+	<message name="BookQuote_getBookPriceResponse">
+		<part name="result" type="xsd:anyType"/>
+	</message>
+	<message name="InvalidIsbnFault">
+        <part name="message" element="types:faultElement"/>
+	</message>
+	<portType name="BookQuote">
+		<operation name="getBookPrice">
+			<input message="mh:BookQuote_getBookPrice"/>
+			<output message="mh:BookQuote_getBookPriceResponse"/>
+			<fault name="InvalidIsbnFault" message="mh:InvalidIsbnFault"/>
+		</operation>
+		<operation name="getBookPriceNonRobust">
+			<input message="mh:BookQuote_getBookPrice"/>
+			<output message="mh:BookQuote_getBookPriceResponse"/>
+		</operation>
+	</portType>
+	<binding name="BookQuoteBinding" type="mh:BookQuote">
+		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+		<operation name="getBookPrice">
+			<soap:operation soapAction="myAction"/>
+			<input>
+				<soap:body use="literal" namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>
+			</input>
+			<output>
+				<soap:body use="literal" namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>
+			</output>
+			<fault name="InvalidIsbnFault">
+				<soap:fault name="InvalidIsbnFault" use="literal"/>
+			</fault>	
+		</operation>
+		<operation name="getBookPriceNonRobust">
+			<soap:operation soapAction="myAction2"/>
+			<input>
+				<soap:body use="literal" namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>
+			</input>
+			<output>
+				<soap:body use="literal" namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>
+			</output>
+		</operation>
+	</binding>
+	<service name="BookQuoteService">
+		<port name="BookQuotePort" binding="mh:BookQuoteBinding">
+			<soap:address location="http://www.Monson-Haefel.com/jwsbook/BookQuoteService"/>
+		</port>
+	</service>
+</definitions>
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/BookQuote2.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/BookQuote2.wsdl
new file mode 100644
index 0000000..1238575
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/BookQuote2.wsdl
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns:mh="http://www.Monson-Haefel.com/jwsbook/BookQuote" 

+             xmlns="http://schemas.xmlsoap.org/wsdl/" 

+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+             xmlns:types="http://www.Monson-Haefel.com/jwsbook/BookQuote/xsd"

+             targetNamespace="http://www.Monson-Haefel.com/jwsbook/BookQuote"

+             name="BookQuote">

+    <types>
+    <xsd:schema elementFormDefault="qualified"
+                targetNamespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/xsd">
+      <xsd:element name="faultElement" type="xsd:string"/>
+    </xsd:schema>
+  </types>
+	<message name="BookQuote_getBookPrice">

+		<part name="isbn" type="xsd:string"/>

+		<part name="number" type="xsd:int"/>

+	</message>

+	<message name="BookQuote_getBookPriceResponse">

+		<part name="result" type="xsd:string"/>

+	</message>

+	<message name="InvalidIsbnFault">

+        <part name="message" element="types:faultElement"/>
+	</message>

+	<portType name="BookQuote">

+		<operation name="getBookPrice">

+			<input message="mh:BookQuote_getBookPrice"/>

+			<output message="mh:BookQuote_getBookPriceResponse"/>

+			<fault name="InvalidIsbnFault" message="mh:InvalidIsbnFault"/>

+		</operation>

+		<operation name="getBookPriceNonRobust">

+			<input message="mh:BookQuote_getBookPrice"/>

+			<output message="mh:BookQuote_getBookPriceResponse"/>

+		</operation>

+	</portType>

+	<binding name="BookQuoteBinding" type="mh:BookQuote">

+		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<operation name="getBookPrice">

+			<soap:operation soapAction="myAction"/>

+			<input>

+				<soap:body use="literal" namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>

+			</input>

+			<output>

+				<soap:body use="literal" namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>

+			</output>

+			<fault name="InvalidIsbnFault">

+				<soap:fault name="InvalidIsbnFault" use="literal"/>

+			</fault>	

+		</operation>

+		<operation name="getBookPriceNonRobust">

+			<soap:operation soapAction="myAction2"/>

+			<input>

+				<soap:body use="literal" namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>

+			</input>

+			<output>

+				<soap:body use="literal" namespace="http://www.Monson-Haefel.com/jwsbook/BookQuote/BookQuote"/>

+			</output>

+		</operation>

+	</binding>

+	<service name="BookQuoteService">

+		<port name="BookQuotePort" binding="mh:BookQuoteBinding">

+			<soap:address location="http://www.Monson-Haefel.com/jwsbook/BookQuoteService"/>

+		</port>

+	</service>

+</definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/InteropTest.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/InteropTest.wsdl
new file mode 100644
index 0000000..7bcc724
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/InteropTest.wsdl
@@ -0,0 +1,717 @@
+<?xml version="1.0"?>

+<!-- This WSDL file is a combination of the InteropTest.wsdl -->

+<!-- and InteropTest2.wsdl files from White Mesa -->

+<definitions name="InteropTest" targetNamespace="http://soapinterop.org/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xml-soap="http://xml.apache.org/xml-soap">

+

+    <!-- These are the types defined for Round 2 A and B -->

+    <!-- These types were copied from white mesa InteropTest.wsdl/InteropTestB.wsdl -->

+    <types>

+        <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/xsd">

+            <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

+            <complexType name="ArrayOfstring">

+                <complexContent>

+                    <restriction base="SOAP-ENC:Array">

+                        <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="string[]"/>

+                    </restriction>

+                </complexContent>

+            </complexType>

+            <complexType name="ArrayOfint">

+                <complexContent>

+                    <restriction base="SOAP-ENC:Array">

+                        <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>

+                    </restriction>

+                </complexContent>

+            </complexType>

+            <complexType name="ArrayOffloat">

+                <complexContent>

+                    <restriction base="SOAP-ENC:Array">

+                        <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="float[]"/>

+                    </restriction>

+                </complexContent>

+            </complexType>

+            <complexType name="ArrayOfSOAPStruct">

+                <complexContent>

+                    <restriction base="SOAP-ENC:Array">

+                        <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="s:SOAPStruct[]"/>

+                    </restriction>

+                </complexContent>

+            </complexType>

+            <complexType name="SOAPStruct">

+                <all>

+                    <element name="varString" type="string"/>

+                    <element name="varInt" type="int"/>

+                    <element name="varFloat" type="float"/>

+                </all>

+            </complexType>

+            <complexType name="SOAPStructStruct">

+                <all>

+                    <element name="varString" type="string"/>

+                    <element name="varInt" type="int"/>

+                    <element name="varFloat" type="float"/>

+                    <element name="varStruct" type="s:SOAPStruct"/>

+                </all>

+            </complexType>

+            <complexType name="SOAPArrayStruct">

+                <all>

+                    <element name="varString" type="string"/>

+                    <element name="varInt" type="int"/>

+                    <element name="varFloat" type="float"/>

+                    <element name="varArray" type="s:ArrayOfstring"/>

+                </all>

+            </complexType>

+            <complexType name="ArrayOfString2D">

+                <complexContent>

+                    <restriction base="SOAP-ENC:Array">

+                        <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[,]"/>

+                    </restriction>

+                </complexContent>

+            </complexType>

+

+            <complexType name="ArrayOfMap">

+                <complexContent>

+                    <restriction base="SOAP-ENC:Array">

+                        <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xml-soap:Map[]"/>

+                    </restriction>

+                </complexContent>

+            </complexType>

+        </schema>

+    </types>

+

+    <!-- message, portType and binding for Round 2 tests -->

+    <!-- Copied from white mesa InteropTest.wsdl -->

+    <message name="echoStringRequest">

+        <part name="inputString" type="xsd:string"/>

+    </message>

+    <message name="echoStringResponse">

+        <part name="return" type="xsd:string"/>

+    </message>

+    <message name="echoStringArrayRequest">

+        <part name="inputStringArray" type="s:ArrayOfstring"/>

+    </message>

+    <message name="echoStringArrayResponse">

+        <part name="return" type="s:ArrayOfstring"/>

+    </message>

+    <message name="echoIntegerRequest">

+        <part name="inputInteger" type="xsd:int"/>

+    </message>

+    <message name="echoIntegerResponse">

+        <part name="return" type="xsd:int"/>

+    </message>

+    <message name="echoIntegerArrayRequest">

+        <part name="inputIntegerArray" type="s:ArrayOfint"/>

+    </message>

+    <message name="echoIntegerArrayResponse">

+        <part name="return" type="s:ArrayOfint"/>

+    </message>

+    <message name="echoFloatRequest">

+        <part name="inputFloat" type="xsd:float"/>

+    </message>

+    <message name="echoFloatResponse">

+        <part name="return" type="xsd:float"/>

+    </message>

+    <message name="echoFloatArrayRequest">

+        <part name="inputFloatArray" type="s:ArrayOffloat"/>

+    </message>

+    <message name="echoFloatArrayResponse">

+        <part name="return" type="s:ArrayOffloat"/>

+    </message>

+    <message name="echoStructRequest">

+        <part name="inputStruct" type="s:SOAPStruct"/>

+    </message>

+    <message name="echoStructResponse">

+        <part name="return" type="s:SOAPStruct"/>

+    </message>

+    <message name="echoStructArrayRequest">

+        <part name="inputStructArray" type="s:ArrayOfSOAPStruct"/>

+    </message>

+    <message name="echoStructArrayResponse">

+        <part name="return" type="s:ArrayOfSOAPStruct"/>

+    </message>

+    <message name="echoVoidRequest"/>

+    <message name="echoVoidResponse"/>

+    <message name="echoBase64Request">

+        <part name="inputBase64" type="xsd:base64Binary"/>

+    </message>

+    <message name="echoBase64Response">

+        <part name="return" type="xsd:base64Binary"/>

+    </message>

+    <message name="echoDateRequest">

+        <part name="inputDate" type="xsd:dateTime"/>

+    </message>

+    <message name="echoDateResponse">

+        <part name="return" type="xsd:dateTime"/>

+    </message>

+    <message name="echoHexBinaryRequest">

+        <part name="inputHexBinary" type="xsd:hexBinary"/>

+    </message>

+    <message name="echoHexBinaryResponse">

+        <part name="return" type="xsd:hexBinary"/>

+    </message>

+    <message name="echoDecimalRequest">

+        <part name="inputDecimal" type="xsd:decimal"/>

+    </message>

+    <message name="echoDecimalResponse">

+        <part name="return" type="xsd:decimal"/>

+    </message>

+    <message name="echoBooleanRequest">

+        <part name="inputBoolean" type="xsd:boolean"/>

+    </message>

+    <message name="echoBooleanResponse">

+        <part name="return" type="xsd:boolean"/>

+    </message>

+

+    <!-- messages for Round 2B tests -->

+    <!-- Copied from white mesa InteropTestB.wsdl -->

+    <message name="echoStructAsSimpleTypesRequest">

+        <part name="inputStruct" type="s:SOAPStruct"/>

+    </message>

+    <message name="echoStructAsSimpleTypesResponse">

+        <part name="outputString" type="xsd:string"/>

+        <part name="outputInteger" type="xsd:int"/>

+        <part name="outputFloat" type="xsd:float"/>

+    </message>

+    <message name="echoSimpleTypesAsStructRequest">

+        <part name="inputString" type="xsd:string"/>

+        <part name="inputInteger" type="xsd:int"/>

+        <part name="inputFloat" type="xsd:float"/>

+    </message>

+    <message name="echoSimpleTypesAsStructResponse">

+        <part name="return" type="s:SOAPStruct"/>

+    </message>

+    <message name="echo2DStringArrayRequest">

+        <part name="input2DStringArray" type="s:ArrayOfString2D"/>

+    </message>

+    <message name="echo2DStringArrayResponse">

+        <part name="return" type="s:ArrayOfString2D"/>

+    </message>

+    <message name="echoNestedStructRequest">

+        <part name="inputStruct" type="s:SOAPStructStruct"/>

+    </message>

+    <message name="echoNestedStructResponse">

+        <part name="return" type="s:SOAPStructStruct"/>

+    </message>

+    <message name="echoNestedArrayRequest">

+        <part name="inputStruct" type="s:SOAPArrayStruct"/>

+    </message>

+    <message name="echoNestedArrayResponse">

+        <part name="return" type="s:SOAPArrayStruct"/>

+    </message>

+

+    <message name="echoMapRequest">

+        <part name="input" type="xml-soap:Map"/>

+    </message>

+    <message name="echoMapResponse">

+        <part name="return" type="xml-soap:Map"/>

+    </message>

+

+    <message name="echoMapArrayRequest">

+        <part name="input" type="s:ArrayOfMap"/>

+    </message>

+    <message name="echoMapArrayResponse">

+        <part name="return" type="s:ArrayOfMap"/>

+    </message>

+

+    <message name="echoTokenRequest">

+        <part name="inputToken" type="xsd:token"/>

+    </message>

+    <message name="echoTokenResponse">

+        <part name="return" type="xsd:token"/>

+    </message>

+

+    <message name="echoNormalizedStringRequest">

+        <part name="inputNormalizedString" type="xsd:normalizedString"/>

+    </message>

+    <message name="echoNormalizedStringResponse">

+        <part name="return" type="xsd:normalizedString"/>

+    </message>

+

+    <message name="echoUnsignedLongRequest">

+        <part name="inputUnsignedLong" type="xsd:unsignedLong"/>

+    </message>

+    <message name="echoUnsignedLongResponse">

+        <part name="return" type="xsd:unsignedLong"/>

+    </message>

+

+    <message name="echoUnsignedIntRequest">

+        <part name="inputUnsignedInt" type="xsd:unsignedInt"/>

+    </message>

+    <message name="echoUnsignedIntResponse">

+        <part name="return" type="xsd:unsignedInt"/>

+    </message>

+

+    <message name="echoUnsignedShortRequest">

+        <part name="inputUnsignedShort" type="xsd:unsignedShort"/>

+    </message>

+    <message name="echoUnsignedShortResponse">

+        <part name="return" type="xsd:unsignedShort"/>

+    </message>

+

+    <message name="echoUnsignedByteRequest">

+        <part name="inputUnsignedByte" type="xsd:unsignedByte"/>

+    </message>

+    <message name="echoUnsignedByteResponse">

+        <part name="return" type="xsd:unsignedByte"/>

+    </message>

+

+    <message name="echoNonNegativeIntegerRequest">

+        <part name="inputNonNegativeInteger" type="xsd:nonNegativeInteger"/>

+    </message>

+    <message name="echoNonNegativeIntegerResponse">

+        <part name="return" type="xsd:nonNegativeInteger"/>

+    </message>

+

+    <message name="echoPositiveIntegerRequest">

+        <part name="inputPositiveInteger" type="xsd:positiveInteger"/>

+    </message>

+    <message name="echoPositiveIntegerResponse">

+        <part name="return" type="xsd:positiveInteger"/>

+    </message>

+

+    <message name="echoNonPositiveIntegerRequest">

+        <part name="inputNonPositiveInteger" type="xsd:nonPositiveInteger"/>

+    </message>

+    <message name="echoNonPositiveIntegerResponse">

+        <part name="return" type="xsd:nonPositiveInteger"/>

+    </message>

+

+    <message name="echoNegativeIntegerRequest">

+        <part name="inputNegativeInteger" type="xsd:negativeInteger"/>

+    </message>

+    <message name="echoNegativeIntegerResponse">

+        <part name="return" type="xsd:negativeInteger"/>

+    </message>

+

+    <portType name="InteropTestPortType">

+        <operation name="echoString" parameterOrder="inputString">

+            <input message="tns:echoStringRequest"/>

+            <output message="tns:echoStringResponse"/>

+        </operation>

+        <operation name="echoStringArray" parameterOrder="inputStringArray">

+            <input message="tns:echoStringArrayRequest"/>

+            <output message="tns:echoStringArrayResponse"/>

+        </operation>

+        <operation name="echoInteger" parameterOrder="inputInteger">

+            <input message="tns:echoIntegerRequest"/>

+            <output message="tns:echoIntegerResponse"/>

+        </operation>

+        <operation name="echoIntegerArray" parameterOrder="inputIntegerArray">

+            <input message="tns:echoIntegerArrayRequest"/>

+            <output message="tns:echoIntegerArrayResponse"/>

+        </operation>

+        <operation name="echoFloat" parameterOrder="inputFloat">

+            <input message="tns:echoFloatRequest"/>

+            <output message="tns:echoFloatResponse"/>

+        </operation>

+        <operation name="echoFloatArray" parameterOrder="inputFloatArray">

+            <input message="tns:echoFloatArrayRequest"/>

+            <output message="tns:echoFloatArrayResponse"/>

+        </operation>

+        <operation name="echoStruct" parameterOrder="inputStruct">

+            <input message="tns:echoStructRequest"/>

+            <output message="tns:echoStructResponse"/>

+        </operation>

+        <operation name="echoStructArray" parameterOrder="inputStructArray">

+            <input message="tns:echoStructArrayRequest"/>

+            <output message="tns:echoStructArrayResponse"/>

+        </operation>

+        <operation name="echoVoid">

+            <input message="tns:echoVoidRequest"/>

+            <output message="tns:echoVoidResponse"/>

+        </operation>

+        <operation name="echoBase64" parameterOrder="inputBase64">

+            <input message="tns:echoBase64Request"/>

+            <output message="tns:echoBase64Response"/>

+        </operation>

+        <operation name="echoDate" parameterOrder="inputDate">

+            <input message="tns:echoDateRequest"/>

+            <output message="tns:echoDateResponse"/>

+        </operation>

+        <operation name="echoHexBinary" parameterOrder="inputHexBinary">

+            <input message="tns:echoHexBinaryRequest"/>

+            <output message="tns:echoHexBinaryResponse"/>

+        </operation>

+        <operation name="echoDecimal" parameterOrder="inputDecimal">

+            <input message="tns:echoDecimalRequest"/>

+            <output message="tns:echoDecimalResponse"/>

+        </operation>

+        <operation name="echoBoolean" parameterOrder="inputBoolean">

+            <input message="tns:echoBooleanRequest"/>

+            <output message="tns:echoBooleanResponse"/>

+        </operation>

+

+        <!-- Round2B operations -->

+        <operation name="echoStructAsSimpleTypes" parameterOrder="inputStruct outputString outputInteger outputFloat">

+            <input message="tns:echoStructAsSimpleTypesRequest"/>

+            <output message="tns:echoStructAsSimpleTypesResponse"/>

+        </operation>

+        <operation name="echoSimpleTypesAsStruct" parameterOrder="inputString inputInteger inputFloat">

+            <input message="tns:echoSimpleTypesAsStructRequest"/>

+            <output message="tns:echoSimpleTypesAsStructResponse"/>

+        </operation>

+        <operation name="echo2DStringArray" parameterOrder="input2DStringArray">

+            <input message="tns:echo2DStringArrayRequest"/>

+            <output message="tns:echo2DStringArrayResponse"/>

+        </operation>

+        <operation name="echoNestedStruct" parameterOrder="inputStruct">

+            <input message="tns:echoNestedStructRequest"/>

+            <output message="tns:echoNestedStructResponse"/>

+        </operation>

+        <operation name="echoNestedArray" parameterOrder="inputStruct">

+            <input message="tns:echoNestedArrayRequest"/>

+            <output message="tns:echoNestedArrayResponse"/>

+        </operation>

+

+

+        <operation name="echoMap" parameterOrder="input">

+            <input message="tns:echoMapRequest"/>

+            <output message="tns:echoMapResponse"/>

+        </operation>

+        <operation name="echoMapArray" parameterOrder="input">

+            <input message="tns:echoMapArrayRequest"/>

+            <output message="tns:echoMapArrayResponse"/>

+        </operation>

+

+        <operation name="echoToken">

+            <input message="tns:echoTokenRequest"/>

+            <output message="tns:echoTokenResponse"/>

+        </operation>

+

+        <operation name="echoNormalizedString">

+            <input message="tns:echoNormalizedStringRequest"/>

+            <output message="tns:echoNormalizedStringResponse"/>

+        </operation>

+

+        <operation name="echoUnsignedLong">

+            <input message="tns:echoUnsignedLongRequest"/>

+            <output message="tns:echoUnsignedLongResponse"/>

+        </operation>

+        <operation name="echoUnsignedInt">

+            <input message="tns:echoUnsignedIntRequest"/>

+            <output message="tns:echoUnsignedIntResponse"/>

+        </operation>

+        <operation name="echoUnsignedShort">

+            <input message="tns:echoUnsignedShortRequest"/>

+            <output message="tns:echoUnsignedShortResponse"/>

+        </operation>

+        <operation name="echoUnsignedByte">

+            <input message="tns:echoUnsignedByteRequest"/>

+            <output message="tns:echoUnsignedByteResponse"/>

+        </operation>

+        <operation name="echoNonNegativeInteger">

+            <input message="tns:echoNonNegativeIntegerRequest"/>

+            <output message="tns:echoNonNegativeIntegerResponse"/>

+        </operation>

+        <operation name="echoPositiveInteger">

+            <input message="tns:echoPositiveIntegerRequest"/>

+            <output message="tns:echoPositiveIntegerResponse"/>

+        </operation>

+        <operation name="echoNonPositiveInteger">

+            <input message="tns:echoNonPositiveIntegerRequest"/>

+            <output message="tns:echoNonPositiveIntegerResponse"/>

+        </operation>

+        <operation name="echoNegativeInteger">

+            <input message="tns:echoNegativeIntegerRequest"/>

+            <output message="tns:echoNegativeIntegerResponse"/>

+        </operation>

+    </portType>

+

+    <binding name="InteropTestSoapBinding" type="tns:InteropTestPortType">

+        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="echoString">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoStringArray">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoInteger">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoIntegerArray">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoFloat">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoFloatArray">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoStruct">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoStructArray">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoVoid">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoBase64">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoDate">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoHexBinary">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoDecimal">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoBoolean">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+

+        <!-- Round2B Binding operations -->

+        <operation name="echoStructAsSimpleTypes">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoSimpleTypesAsStruct">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echo2DStringArray">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoNestedStruct">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoNestedArray">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+

+        <operation name="echoMap">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoMapArray">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+

+        <operation name="echoToken">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+

+        <operation name="echoNormalizedString">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+

+        <operation name="echoUnsignedLong">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoUnsignedInt">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoUnsignedShort">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoUnsignedByte">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoNonNegativeInteger">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoPositiveInteger">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoNonPositiveInteger">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+        <operation name="echoNegativeInteger">

+            <soap:operation soapAction="http://soapinterop.org/"/>

+            <input>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </input>

+            <output>

+                <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

+            </output>

+        </operation>

+    </binding>

+

+    <!-- Service Description for Axis -->

+    <service name="InteropTestService">

+

+        <port binding="tns:InteropTestSoapBinding" name="echo">

+

+            <soap:address location="http://nagoya.apache.org:5049/axis/services/echo"/>

+

+        </port>

+    </service>

+

+</definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/InteropTestDocLit2.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/InteropTestDocLit2.wsdl
new file mode 100644
index 0000000..14d0e2b
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/InteropTestDocLit2.wsdl
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="WSDLInteropTestDocLitService"

+    targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit"

+    xmlns="http://schemas.xmlsoap.org/wsdl/"

+    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+    xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit"

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+    xmlns:xsd1="http://soapinterop.org/xsd"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+    <types>

+        <schema targetNamespace="http://soapinterop.org/xsd"

+            xmlns="http://www.w3.org/2001/XMLSchema"

+            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+            elementFormDefault="qualified">

+            <complexType name="ArrayOfstring_literal">

+                <sequence>

+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>

+                </sequence>

+            </complexType>

+            <complexType name="SOAPStruct">

+                <all>

+                    <element name="varFloat" type="xsd:float"/>

+                    <element name="varInt" type="xsd:int"/>

+                    <element name="varString" type="xsd:string"/>

+                </all>

+            </complexType>

+

+            <element name="echoStringParam" type="xsd:string"/>

+

+            <element name="echoStringReturn" type="xsd:string"/>

+            <element name="echoStringArrayParam" type="xsd1:ArrayOfstring_literal"/>

+

+            <element name="echoStringArrayReturn" type="xsd1:ArrayOfstring_literal"/>

+

+            <element name="echoStructParam" type="xsd1:SOAPStruct"/>

+

+            <element name="echoStructReturn" type="xsd1:SOAPStruct"/>

+        </schema>

+    </types>

+    <message name="echoString">

+        <part element="xsd1:echoStringParam" name="a"/>

+    </message>

+    <message name="echoStringResponse">

+        <part element="xsd1:echoStringReturn" name="result"/>

+    </message>

+    <message name="echoStringArray">

+        <part element="xsd1:echoStringArrayParam" name="a"/>

+    </message>

+    <message name="echoStringArrayResponse">

+        <part element="xsd1:echoStringArrayReturn" name="result"/>

+    </message>

+    <message name="echoStruct">

+        <part element="xsd1:echoStructParam" name="a"/>

+    </message>

+    <message name="echoStructResponse">

+        <part element="xsd1:echoStructReturn" name="result"/>

+    </message>

+    <message name="echoVoid"/>

+    <message name="echoVoidResponse"/>

+

+    <portType name="WSDLInteropTestDocLitPortType">

+        <operation name="echoString">

+            <input message="tns:echoString" name="echoString"/>

+            <output message="tns:echoStringResponse" name="echoStringResponse"/>

+        </operation>

+        <operation name="echoStringArray">

+            <input message="tns:echoStringArray" name="echoStringArray"/>

+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>

+        </operation>

+        <operation name="echoStruct">

+            <input message="tns:echoStruct" name="echoStruct"/>

+            <output message="tns:echoStructResponse" name="echoStructResponse"/>

+        </operation>

+        <operation name="echoVoid">

+            <input message="tns:echoVoid" name="echoVoid"/>

+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>

+        </operation>

+    </portType>

+    <binding name="WSDLInteropTestDocLitPortBinding"

+        type="tns:WSDLInteropTestDocLitPortType">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="echoString">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoString">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStringResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStringArray">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStringArray">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStringArrayResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStruct">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStruct">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStructResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoVoid">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoVoid">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoVoidResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="WSDLInteropTestDocLitService">

+        <port binding="tns:WSDLInteropTestDocLitPortBinding"

+            name="WSDLInteropTestDocLitPort">

+            <soap:address

+                location="http://mssoapinterop.org/stkv3/wsdl/interopTestDocLit.wsdl"/>

+        </port>

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/SalesRankNPrice.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/SalesRankNPrice.wsdl
new file mode 100755
index 0000000..0a2eced
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/SalesRankNPrice.wsdl
@@ -0,0 +1,879 @@
+<?xml version="1.0" encoding="utf-8"?>

+<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://www.PerfectXML.com/NETWebSvcs/BookService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://www.PerfectXML.com/NETWebSvcs/BookService" xmlns="http://schemas.xmlsoap.org/wsdl/">

+    <types>

+        <s:schema elementFormDefault="qualified" targetNamespace="http://www.PerfectXML.com/NETWebSvcs/BookService">

+            <s:element name="GetAmazonSalesRank">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonSalesRankResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetAmazonSalesRankResult" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonUKSalesRank">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonUKSalesRankResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetAmazonUKSalesRankResult" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetBNSalesRank">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetBNSalesRankResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetBNSalesRankResult" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonPrice">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonPriceResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetAmazonPriceResult" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonUKPrice">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonUKPriceResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetAmazonUKPriceResult" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetBNPrice">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetBNPriceResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetBNPriceResult" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonSalesRankNPrice">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonSalesRankNPriceResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetAmazonSalesRankNPriceResult" type="s0:SalesRankNPrice1"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:complexType name="SalesRankNPrice1">

+                <s:sequence>

+                    <s:element minOccurs="0" maxOccurs="1" name="SalesRank" type="s:string"/>

+                    <s:element minOccurs="0" maxOccurs="1" name="Price" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+            <s:element name="GetBNSalesRankNPrice">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetBNSalesRankNPriceResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetBNSalesRankNPriceResult" type="s0:SalesRankNPrice1"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonAndBNSalesRank">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonAndBNSalesRankResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetAmazonAndBNSalesRankResult" type="s0:SalesRanks"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:complexType name="SalesRanks">

+                <s:sequence>

+                    <s:element minOccurs="0" maxOccurs="1" name="AmazonSalesRank" type="s:string"/>

+                    <s:element minOccurs="0" maxOccurs="1" name="BNSalesRank" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+            <s:element name="GetAmazonAndBNPrice">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAmazonAndBNPriceResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetAmazonAndBNPriceResult" type="s0:Prices"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:complexType name="Prices">

+                <s:sequence>

+                    <s:element minOccurs="0" maxOccurs="1" name="AmazonPrice" type="s:string"/>

+                    <s:element minOccurs="0" maxOccurs="1" name="BNPrice" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+            <s:element name="GetAll">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="ISBN" type="s:string"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:element name="GetAllResponse">

+                <s:complexType>

+                    <s:sequence>

+                        <s:element minOccurs="0" maxOccurs="1" name="GetAllResult" type="s0:All"/>

+                    </s:sequence>

+                </s:complexType>

+            </s:element>

+            <s:complexType name="All">

+                <s:sequence>

+                    <s:element minOccurs="0" maxOccurs="1" name="AmazonSalesRank" type="s:string"/>

+                    <s:element minOccurs="0" maxOccurs="1" name="AmazonPrice" type="s:string"/>

+                    <s:element minOccurs="0" maxOccurs="1" name="BNSalesRank" type="s:string"/>

+                    <s:element minOccurs="0" maxOccurs="1" name="BNPrice" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+            <s:element name="string" nillable="true" type="s:string"/>

+            <s:element name="SalesRankNPrice1" nillable="true" type="s0:SalesRankNPrice1"/>

+            <s:element name="SalesRanks" nillable="true" type="s0:SalesRanks"/>

+            <s:element name="Prices" nillable="true" type="s0:Prices"/>

+            <s:element name="All" nillable="true" type="s0:All"/>

+        </s:schema>

+    </types>

+    <message name="GetAmazonSalesRankSoapIn">

+        <part name="parameters" element="s0:GetAmazonSalesRank"/>

+    </message>

+    <message name="GetAmazonSalesRankSoapOut">

+        <part name="parameters" element="s0:GetAmazonSalesRankResponse"/>

+    </message>

+    <message name="GetAmazonUKSalesRankSoapIn">

+        <part name="parameters" element="s0:GetAmazonUKSalesRank"/>

+    </message>

+    <message name="GetAmazonUKSalesRankSoapOut">

+        <part name="parameters" element="s0:GetAmazonUKSalesRankResponse"/>

+    </message>

+    <message name="GetBNSalesRankSoapIn">

+        <part name="parameters" element="s0:GetBNSalesRank"/>

+    </message>

+    <message name="GetBNSalesRankSoapOut">

+        <part name="parameters" element="s0:GetBNSalesRankResponse"/>

+    </message>

+    <message name="GetAmazonPriceSoapIn">

+        <part name="parameters" element="s0:GetAmazonPrice"/>

+    </message>

+    <message name="GetAmazonPriceSoapOut">

+        <part name="parameters" element="s0:GetAmazonPriceResponse"/>

+    </message>

+    <message name="GetAmazonUKPriceSoapIn">

+        <part name="parameters" element="s0:GetAmazonUKPrice"/>

+    </message>

+    <message name="GetAmazonUKPriceSoapOut">

+        <part name="parameters" element="s0:GetAmazonUKPriceResponse"/>

+    </message>

+    <message name="GetBNPriceSoapIn">

+        <part name="parameters" element="s0:GetBNPrice"/>

+    </message>

+    <message name="GetBNPriceSoapOut">

+        <part name="parameters" element="s0:GetBNPriceResponse"/>

+    </message>

+    <message name="GetAmazonSalesRankNPriceSoapIn">

+        <part name="parameters" element="s0:GetAmazonSalesRankNPrice"/>

+    </message>

+    <message name="GetAmazonSalesRankNPriceSoapOut">

+        <part name="parameters" element="s0:GetAmazonSalesRankNPriceResponse"/>

+    </message>

+    <message name="GetBNSalesRankNPriceSoapIn">

+        <part name="parameters" element="s0:GetBNSalesRankNPrice"/>

+    </message>

+    <message name="GetBNSalesRankNPriceSoapOut">

+        <part name="parameters" element="s0:GetBNSalesRankNPriceResponse"/>

+    </message>

+    <message name="GetAmazonAndBNSalesRankSoapIn">

+        <part name="parameters" element="s0:GetAmazonAndBNSalesRank"/>

+    </message>

+    <message name="GetAmazonAndBNSalesRankSoapOut">

+        <part name="parameters" element="s0:GetAmazonAndBNSalesRankResponse"/>

+    </message>

+    <message name="GetAmazonAndBNPriceSoapIn">

+        <part name="parameters" element="s0:GetAmazonAndBNPrice"/>

+    </message>

+    <message name="GetAmazonAndBNPriceSoapOut">

+        <part name="parameters" element="s0:GetAmazonAndBNPriceResponse"/>

+    </message>

+    <message name="GetAllSoapIn">

+        <part name="parameters" element="s0:GetAll"/>

+    </message>

+    <message name="GetAllSoapOut">

+        <part name="parameters" element="s0:GetAllResponse"/>

+    </message>

+    <message name="GetAmazonSalesRankHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonSalesRankHttpGetOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetAmazonUKSalesRankHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonUKSalesRankHttpGetOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetBNSalesRankHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetBNSalesRankHttpGetOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetAmazonPriceHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonPriceHttpGetOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetAmazonUKPriceHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonUKPriceHttpGetOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetBNPriceHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetBNPriceHttpGetOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetAmazonSalesRankNPriceHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonSalesRankNPriceHttpGetOut">

+        <part name="Body" element="s0:SalesRankNPrice1"/>

+    </message>

+    <message name="GetBNSalesRankNPriceHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetBNSalesRankNPriceHttpGetOut">

+        <part name="Body" element="s0:SalesRankNPrice1"/>

+    </message>

+    <message name="GetAmazonAndBNSalesRankHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonAndBNSalesRankHttpGetOut">

+        <part name="Body" element="s0:SalesRanks"/>

+    </message>

+    <message name="GetAmazonAndBNPriceHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonAndBNPriceHttpGetOut">

+        <part name="Body" element="s0:Prices"/>

+    </message>

+    <message name="GetAllHttpGetIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAllHttpGetOut">

+        <part name="Body" element="s0:All"/>

+    </message>

+    <message name="GetAmazonSalesRankHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonSalesRankHttpPostOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetAmazonUKSalesRankHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonUKSalesRankHttpPostOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetBNSalesRankHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetBNSalesRankHttpPostOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetAmazonPriceHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonPriceHttpPostOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetAmazonUKPriceHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonUKPriceHttpPostOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetBNPriceHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetBNPriceHttpPostOut">

+        <part name="Body" element="s0:string"/>

+    </message>

+    <message name="GetAmazonSalesRankNPriceHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonSalesRankNPriceHttpPostOut">

+        <part name="Body" element="s0:SalesRankNPrice1"/>

+    </message>

+    <message name="GetBNSalesRankNPriceHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetBNSalesRankNPriceHttpPostOut">

+        <part name="Body" element="s0:SalesRankNPrice1"/>

+    </message>

+    <message name="GetAmazonAndBNSalesRankHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonAndBNSalesRankHttpPostOut">

+        <part name="Body" element="s0:SalesRanks"/>

+    </message>

+    <message name="GetAmazonAndBNPriceHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAmazonAndBNPriceHttpPostOut">

+        <part name="Body" element="s0:Prices"/>

+    </message>

+    <message name="GetAllHttpPostIn">

+        <part name="ISBN" type="s:string"/>

+    </message>

+    <message name="GetAllHttpPostOut">

+        <part name="Body" element="s0:All"/>

+    </message>

+    <portType name="SalesRankNPriceSoap">

+        <operation name="GetAmazonSalesRank">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank for that book.</documentation>

+            <input message="s0:GetAmazonSalesRankSoapIn"/>

+            <output message="s0:GetAmazonSalesRankSoapOut"/>

+        </operation>

+        <operation name="GetAmazonUKSalesRank">

+            <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk&lt;/b&gt; Sales Rank for that book.</documentation>

+            <input message="s0:GetAmazonUKSalesRankSoapIn"/>

+            <output message="s0:GetAmazonUKSalesRankSoapOut"/>

+        </operation>

+        <operation name="GetBNSalesRank">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank for that book.</documentation>

+            <input message="s0:GetBNSalesRankSoapIn"/>

+            <output message="s0:GetBNSalesRankSoapOut"/>

+        </operation>

+        <operation name="GetAmazonPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Price (in USD) for that book.</documentation>

+            <input message="s0:GetAmazonPriceSoapIn"/>

+            <output message="s0:GetAmazonPriceSoapOut"/>

+        </operation>

+        <operation name="GetAmazonUKPrice">

+            <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk Price (in &amp;pound;)&lt;/b&gt; for that book.</documentation>

+            <input message="s0:GetAmazonUKPriceSoapIn"/>

+            <output message="s0:GetAmazonUKPriceSoapOut"/>

+        </operation>

+        <operation name="GetBNPrice">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Price (in USD) for that book.</documentation>

+            <input message="s0:GetBNPriceSoapIn"/>

+            <output message="s0:GetBNPriceSoapOut"/>

+        </operation>

+        <operation name="GetAmazonSalesRankNPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>

+            <input message="s0:GetAmazonSalesRankNPriceSoapIn"/>

+            <output message="s0:GetAmazonSalesRankNPriceSoapOut"/>

+        </operation>

+        <operation name="GetBNSalesRankNPrice">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>

+            <input message="s0:GetBNSalesRankNPriceSoapIn"/>

+            <output message="s0:GetBNSalesRankNPriceSoapOut"/>

+        </operation>

+        <operation name="GetAmazonAndBNSalesRank">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>

+            <input message="s0:GetAmazonAndBNSalesRankSoapIn"/>

+            <output message="s0:GetAmazonAndBNSalesRankSoapOut"/>

+        </operation>

+        <operation name="GetAmazonAndBNPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>

+            <input message="s0:GetAmazonAndBNPriceSoapIn"/>

+            <output message="s0:GetAmazonAndBNPriceSoapOut"/>

+        </operation>

+        <operation name="GetAll">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks as well as Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing Four strings. (Amazon SalesRank, Amazon Price, B&amp;N Sales Rank, and B&amp;N Price).</documentation>

+            <input message="s0:GetAllSoapIn"/>

+            <output message="s0:GetAllSoapOut"/>

+        </operation>

+    </portType>

+    <portType name="SalesRankNPriceHttpGet">

+        <operation name="GetAmazonSalesRank">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank for that book.</documentation>

+            <input message="s0:GetAmazonSalesRankHttpGetIn"/>

+            <output message="s0:GetAmazonSalesRankHttpGetOut"/>

+        </operation>

+        <operation name="GetAmazonUKSalesRank">

+            <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk&lt;/b&gt; Sales Rank for that book.</documentation>

+            <input message="s0:GetAmazonUKSalesRankHttpGetIn"/>

+            <output message="s0:GetAmazonUKSalesRankHttpGetOut"/>

+        </operation>

+        <operation name="GetBNSalesRank">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank for that book.</documentation>

+            <input message="s0:GetBNSalesRankHttpGetIn"/>

+            <output message="s0:GetBNSalesRankHttpGetOut"/>

+        </operation>

+        <operation name="GetAmazonPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Price (in USD) for that book.</documentation>

+            <input message="s0:GetAmazonPriceHttpGetIn"/>

+            <output message="s0:GetAmazonPriceHttpGetOut"/>

+        </operation>

+        <operation name="GetAmazonUKPrice">

+            <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk Price (in &amp;pound;)&lt;/b&gt; for that book.</documentation>

+            <input message="s0:GetAmazonUKPriceHttpGetIn"/>

+            <output message="s0:GetAmazonUKPriceHttpGetOut"/>

+        </operation>

+        <operation name="GetBNPrice">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Price (in USD) for that book.</documentation>

+            <input message="s0:GetBNPriceHttpGetIn"/>

+            <output message="s0:GetBNPriceHttpGetOut"/>

+        </operation>

+        <operation name="GetAmazonSalesRankNPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>

+            <input message="s0:GetAmazonSalesRankNPriceHttpGetIn"/>

+            <output message="s0:GetAmazonSalesRankNPriceHttpGetOut"/>

+        </operation>

+        <operation name="GetBNSalesRankNPrice">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>

+            <input message="s0:GetBNSalesRankNPriceHttpGetIn"/>

+            <output message="s0:GetBNSalesRankNPriceHttpGetOut"/>

+        </operation>

+        <operation name="GetAmazonAndBNSalesRank">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>

+            <input message="s0:GetAmazonAndBNSalesRankHttpGetIn"/>

+            <output message="s0:GetAmazonAndBNSalesRankHttpGetOut"/>

+        </operation>

+        <operation name="GetAmazonAndBNPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>

+            <input message="s0:GetAmazonAndBNPriceHttpGetIn"/>

+            <output message="s0:GetAmazonAndBNPriceHttpGetOut"/>

+        </operation>

+        <operation name="GetAll">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks as well as Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing Four strings. (Amazon SalesRank, Amazon Price, B&amp;N Sales Rank, and B&amp;N Price).</documentation>

+            <input message="s0:GetAllHttpGetIn"/>

+            <output message="s0:GetAllHttpGetOut"/>

+        </operation>

+    </portType>

+    <portType name="SalesRankNPriceHttpPost">

+        <operation name="GetAmazonSalesRank">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank for that book.</documentation>

+            <input message="s0:GetAmazonSalesRankHttpPostIn"/>

+            <output message="s0:GetAmazonSalesRankHttpPostOut"/>

+        </operation>

+        <operation name="GetAmazonUKSalesRank">

+            <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk&lt;/b&gt; Sales Rank for that book.</documentation>

+            <input message="s0:GetAmazonUKSalesRankHttpPostIn"/>

+            <output message="s0:GetAmazonUKSalesRankHttpPostOut"/>

+        </operation>

+        <operation name="GetBNSalesRank">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank for that book.</documentation>

+            <input message="s0:GetBNSalesRankHttpPostIn"/>

+            <output message="s0:GetBNSalesRankHttpPostOut"/>

+        </operation>

+        <operation name="GetAmazonPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Price (in USD) for that book.</documentation>

+            <input message="s0:GetAmazonPriceHttpPostIn"/>

+            <output message="s0:GetAmazonPriceHttpPostOut"/>

+        </operation>

+        <operation name="GetAmazonUKPrice">

+            <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk Price (in &amp;pound;)&lt;/b&gt; for that book.</documentation>

+            <input message="s0:GetAmazonUKPriceHttpPostIn"/>

+            <output message="s0:GetAmazonUKPriceHttpPostOut"/>

+        </operation>

+        <operation name="GetBNPrice">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Price (in USD) for that book.</documentation>

+            <input message="s0:GetBNPriceHttpPostIn"/>

+            <output message="s0:GetBNPriceHttpPostOut"/>

+        </operation>

+        <operation name="GetAmazonSalesRankNPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>

+            <input message="s0:GetAmazonSalesRankNPriceHttpPostIn"/>

+            <output message="s0:GetAmazonSalesRankNPriceHttpPostOut"/>

+        </operation>

+        <operation name="GetBNSalesRankNPrice">

+            <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>

+            <input message="s0:GetBNSalesRankNPriceHttpPostIn"/>

+            <output message="s0:GetBNSalesRankNPriceHttpPostOut"/>

+        </operation>

+        <operation name="GetAmazonAndBNSalesRank">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>

+            <input message="s0:GetAmazonAndBNSalesRankHttpPostIn"/>

+            <output message="s0:GetAmazonAndBNSalesRankHttpPostOut"/>

+        </operation>

+        <operation name="GetAmazonAndBNPrice">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>

+            <input message="s0:GetAmazonAndBNPriceHttpPostIn"/>

+            <output message="s0:GetAmazonAndBNPriceHttpPostOut"/>

+        </operation>

+        <operation name="GetAll">

+            <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks as well as Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing Four strings. (Amazon SalesRank, Amazon Price, B&amp;N Sales Rank, and B&amp;N Price).</documentation>

+            <input message="s0:GetAllHttpPostIn"/>

+            <output message="s0:GetAllHttpPostOut"/>

+        </operation>

+    </portType>

+    <binding name="SalesRankNPriceSoap" type="s0:SalesRankNPriceSoap">

+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+        <operation name="GetAmazonSalesRank">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonSalesRank" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonUKSalesRank">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonUKSalesRank" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetBNSalesRank">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetBNSalesRank" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonPrice">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonPrice" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonUKPrice">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonUKPrice" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetBNPrice">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetBNPrice" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonSalesRankNPrice">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonSalesRankNPrice" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetBNSalesRankNPrice">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetBNSalesRankNPrice" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonAndBNSalesRank">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonAndBNSalesRank" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonAndBNPrice">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonAndBNPrice" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+        <operation name="GetAll">

+            <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAll" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <binding name="SalesRankNPriceHttpGet" type="s0:SalesRankNPriceHttpGet">

+        <http:binding verb="GET"/>

+        <operation name="GetAmazonSalesRank">

+            <http:operation location="/GetAmazonSalesRank"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonUKSalesRank">

+            <http:operation location="/GetAmazonUKSalesRank"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetBNSalesRank">

+            <http:operation location="/GetBNSalesRank"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonPrice">

+            <http:operation location="/GetAmazonPrice"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonUKPrice">

+            <http:operation location="/GetAmazonUKPrice"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetBNPrice">

+            <http:operation location="/GetBNPrice"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonSalesRankNPrice">

+            <http:operation location="/GetAmazonSalesRankNPrice"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetBNSalesRankNPrice">

+            <http:operation location="/GetBNSalesRankNPrice"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonAndBNSalesRank">

+            <http:operation location="/GetAmazonAndBNSalesRank"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonAndBNPrice">

+            <http:operation location="/GetAmazonAndBNPrice"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAll">

+            <http:operation location="/GetAll"/>

+            <input>

+                <http:urlEncoded/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+    </binding>

+    <binding name="SalesRankNPriceHttpPost" type="s0:SalesRankNPriceHttpPost">

+        <http:binding verb="POST"/>

+        <operation name="GetAmazonSalesRank">

+            <http:operation location="/GetAmazonSalesRank"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonUKSalesRank">

+            <http:operation location="/GetAmazonUKSalesRank"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetBNSalesRank">

+            <http:operation location="/GetBNSalesRank"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonPrice">

+            <http:operation location="/GetAmazonPrice"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonUKPrice">

+            <http:operation location="/GetAmazonUKPrice"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetBNPrice">

+            <http:operation location="/GetBNPrice"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonSalesRankNPrice">

+            <http:operation location="/GetAmazonSalesRankNPrice"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetBNSalesRankNPrice">

+            <http:operation location="/GetBNSalesRankNPrice"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonAndBNSalesRank">

+            <http:operation location="/GetAmazonAndBNSalesRank"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAmazonAndBNPrice">

+            <http:operation location="/GetAmazonAndBNPrice"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+        <operation name="GetAll">

+            <http:operation location="/GetAll"/>

+            <input>

+                <mime:content type="application/x-www-form-urlencoded"/>

+            </input>

+            <output>

+                <mime:mimeXml part="Body"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="SalesRankNPrice">

+        <documentation>&lt;b&gt;This Web Service can be used to get the Sales Rank and/or price for any book available on Amazon and/or B&amp;N Web sites.&lt;/b&gt; This Web Service is created by &lt;a href=http://www.PerfectXML.com target=_blank&gt;PerfectXML Team&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Please email your questions/comments/suggestions to &lt;a href=mailto:darshan@PerfectXML.com&gt;&lt;b&gt;darshan@PerfectXML.com&lt;/b&gt;&lt;/a&gt;.&lt;br&gt;Web Service built using ASP.NET (&lt;b&gt;1.0.3705&lt;/b&gt;) and Visual Studio .NET (&lt;b&gt;7.0.9466&lt;/b&gt;)&lt;br&gt;&lt;br&gt;The C# client application that accesses SalesRankNPrice Web Service is available (with source code)to download at &lt;A href=http://www.perfectxml.com/Downloads/SalesRankNPriceWinClient.zip &gt;http://www.PerfectXML.com/Downloads/SalesRankNPriceWinClient.zip&lt;/A&gt;.&lt;br&gt;&lt;br&gt;&lt;A href=http://www.perfectxml.com/images/SalesRankNPrice.jpg target=_blank&gt;Click here&lt;/A&gt; to view the screenshot image of this client application.&lt;br&gt;&lt;br&gt;You can configure which books to monitor, the settings are saved in XML configuration files locally.&lt;br&gt;&lt;br&gt;For &lt;b&gt;more information on Web Services&lt;/b&gt;, visit &lt;a href=http://www.PerfectXML.com/WebSvc1.asp target=_blank&gt;PerfectXML Web Services focus section&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Note that this Web Service posts data directly to Amazon and BarnesAndNoble Web sites. This Web Service is intended only for non-commercial, personal use.&lt;br&gt;&lt;br&gt;&lt;u&gt;Few sample ISBN Numbers&lt;/u&gt;:&lt;blockquote&gt;186100589X: &lt;b&gt;XML Application Development with MSXML 4.0&lt;/b&gt; (Wrox Press)&lt;br&gt;1861005628 : &lt;b&gt;Early Adopter VoiceXML&lt;/b&gt; (Wrox Press)&lt;br&gt;073571052X : &lt;b&gt;C++ XML&lt;/b&gt; (New Riders)&lt;br&gt;1861005466 : &lt;b&gt;Professional SQL Server 2000 XML&lt;/b&gt; (Wrox Press)&lt;br&gt;1861005318 : &lt;b&gt;Professional XML for .NET Developers&lt;/b&gt; (Wrox Press)&lt;br&gt;1893115976 : &lt;b&gt;Moving to VB.NET: Strategies, Concepts, and Code (Beta 2)&lt;/b&gt; (APress)&lt;/blockquote&gt;</documentation>

+        <port name="SalesRankNPriceSoap" binding="s0:SalesRankNPriceSoap">

+            <soap:address location="http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx"/>

+        </port>

+        <port name="SalesRankNPriceHttpGet" binding="s0:SalesRankNPriceHttpGet">

+            <http:address location="http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx"/>

+        </port>

+        <port name="SalesRankNPriceHttpPost" binding="s0:SalesRankNPriceHttpPost">

+            <http:address location="http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx"/>

+        </port>

+    </service>

+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/complex-doc-literal.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/complex-doc-literal.wsdl
new file mode 100755
index 0000000..b090408
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/complex-doc-literal.wsdl
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions

+	xmlns="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:tns="http://soapinterop.org/wsdl"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+	xmlns:ns2="http://soapinterop.org/types"

+	xmlns:ns3="http://soapinterop.org/types/part"

+	xmlns:ns4="http://soapinterop.org/types/requestresponse"

+	targetNamespace="http://soapinterop.org/wsdl">

+

+	<types>

+		<schema

+			xmlns="http://www.w3.org/2001/XMLSchema"

+			xmlns:tns="http://soapinterop.org/types"

+			targetNamespace="http://soapinterop.org/types">

+

+			<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

+

+			<complexType name="SOAPStruct">

+				<sequence>

+					<element name="varString" type="xsd:string"/>

+					<element name="varInt" type="xsd:int"/>

+					<element name="varFloat" type="xsd:float"/>

+				</sequence>

+			</complexType>

+

+			<complexType name="SOAPStructFault">

+				<sequence>

+					<element name="soapStruct" type="tns:SOAPStruct"/>

+				</sequence>

+			</complexType>

+

+			<complexType name="BaseStruct">

+				<sequence>

+					<element name="structMessage" type="tns:SOAPStruct"/>

+					<element name="shortMessage" type="xsd:short"/>

+				</sequence>

+			</complexType>

+

+			<complexType name="ExtendedStruct">

+				<complexContent>

+					<extension base="tns:BaseStruct">

+						<sequence>

+							<element name="stringMessage" type="xsd:string"/>

+							<element name="intMessage" type="xsd:int"/>

+							<element name="anotherIntMessage" type="xsd:int"/>

+						</sequence>

+					</extension>

+				</complexContent>

+			</complexType>

+

+			<complexType name="MoreExtendedStruct">

+				<complexContent>

+					<extension base="tns:ExtendedStruct">

+						<sequence>

+							<element name="booleanMessage" type="xsd:boolean"/>

+						</sequence>

+					</extension>

+				</complexContent>

+			</complexType>

+

+		</schema>

+

+		<schema

+			xmlns="http://www.w3.org/2001/XMLSchema"

+			xmlns:tns="http://soapinterop.org/types/part"

+			targetNamespace="http://soapinterop.org/types/part">

+

+			<element name="SOAPStructFaultPart" type="ns2:SOAPStructFault"/>

+			<element name="BaseStructPart" type="ns2:BaseStruct"/>

+			<element name="ExtendedStructPart" type="ns2:ExtendedStruct"/>

+			<element name="MoreExtendedStructPart" type="ns2:MoreExtendedStruct"/>

+

+		</schema>

+

+		<schema

+			xmlns="http://www.w3.org/2001/XMLSchema"

+			xmlns:tns="http://soapinterop.org/types/requestresponse"

+			targetNamespace="http://soapinterop.org/types/requestresponse">

+

+			<element name="echoSOAPStructFaultRequest" type="ns2:SOAPStruct"/>

+			<element name="echoSOAPStructFaultResponse">

+				<complexType/>

+			</element>

+

+			<element name="echoBaseStructFaultRequest" type="ns2:BaseStruct"/>

+			<element name="echoBaseStructFaultResponse">

+				<complexType/>

+			</element>

+

+			<element name="echoExtendedStructFaultRequest" type="ns2:ExtendedStruct"/>

+			<element name="echoExtendedStructFaultResponse">

+				<complexType/>

+			</element>

+

+			<element name="echoMultipleFaults1Request">

+				<complexType>

+					<sequence>

+						<element name="whichFault" type="xsd:int"/>

+						<element name="param1" type="ns2:SOAPStruct"/>

+						<element name="param2" type="ns2:BaseStruct"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoMultipleFaults1Response">

+				<complexType/>

+			</element>

+

+			<element name="echoMultipleFaults2Request">

+				<complexType>

+					<sequence>

+						<element name="whichFault" type="xsd:int"/>

+						<element name="param1" type="ns2:BaseStruct"/>

+						<element name="param2" type="ns2:ExtendedStruct"/>

+						<element name="param3" type="ns2:MoreExtendedStruct"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoMultipleFaults2Response">

+				<complexType/>

+			</element>

+

+		</schema>

+	</types>

+

+	<message name="echoSOAPStructFaultRequest">

+		<part name="param" element="ns4:echoSOAPStructFaultRequest"/>

+	</message>

+	<message name="echoSOAPStructFaultResponse">

+		<part name="param" element="ns4:echoSOAPStructFaultResponse"/>

+	</message>

+

+	<message name="echoBaseStructFaultRequest">

+		<part name="param" element="ns4:echoBaseStructFaultRequest"/>

+	</message>

+	<message name="echoBaseStructFaultResponse">

+		<part name="param" element="ns4:echoBaseStructFaultResponse"/>

+	</message>

+

+	<message name="echoExtendedStructFaultRequest">

+		<part name="param" element="ns4:echoExtendedStructFaultRequest"/>

+	</message>

+	<message name="echoExtendedStructFaultResponse">

+		<part name="param" element="ns4:echoExtendedStructFaultResponse"/>

+	</message>

+

+	<message name="echoMultipleFaults1Request">

+		<part name="param" element="ns4:echoMultipleFaults1Request"/>

+	</message>

+	<message name="echoMultipleFaults1Response">

+		<part name="param" element="ns4:echoMultipleFaults1Response"/>

+	</message>

+

+	<message name="echoMultipleFaults2Request">

+		<part name="param" element="ns4:echoMultipleFaults2Request"/>

+	</message>

+	<message name="echoMultipleFaults2Response">

+		<part name="param" element="ns4:echoMultipleFaults2Response"/>

+	</message>

+

+	<!-- Fault messages -->

+	<message name="SOAPStructFault">

+		<part name="part3" element="ns3:SOAPStructFaultPart"/>

+	</message>

+	<message name="BaseStructFault">

+		<part name="part1" element="ns3:BaseStructPart"/>

+	</message>

+	<message name="ExtendedStructFault">

+		<part name="part2" element="ns3:ExtendedStructPart"/>

+	</message>

+	<message name="MoreExtendedStructFault">

+		<part name="part5" element="ns3:MoreExtendedStructPart"/>

+	</message>

+

+	<portType name="ComplexDocLitPortType">

+		<!--

+			Throws a fault with an embedded SOAPStruct

+		-->

+		<operation name="echoSOAPStructFault" parameterOrder="">

+			<input message="tns:echoSOAPStructFaultRequest"/>

+			<output message="tns:echoSOAPStructFaultResponse"/>

+			<fault name="ComplexFault" message="tns:SOAPStructFault"/>

+		</operation>

+

+		<!--

+			Throws a fault with a base complex struct

+		-->

+		<operation name="echoBaseStructFault" parameterOrder="">

+			<input message="tns:echoBaseStructFaultRequest"/>

+			<output message="tns:echoBaseStructFaultResponse"/>

+			<fault name="ComplexFault" message="tns:BaseStructFault"/>

+		</operation>

+

+		<!--

+			Throws a fault with an en extended complex type

+		-->

+		<operation name="echoExtendedStructFault" parameterOrder="">

+			<input message="tns:echoExtendedStructFaultRequest"/>

+			<output message="tns:echoExtendedStructFaultResponse"/>

+			<fault name="ComplexFault" message="tns:ExtendedStructFault"/>

+		</operation>

+

+		<!--

+			Throws a fault with embedded complex type, fault with an

+			extended complex type and fault with an array of a base

+			complex type

+		-->

+		<operation name="echoMultipleFaults1" parameterOrder="param">

+			<input message="tns:echoMultipleFaults1Request"/>

+			<output message="tns:echoMultipleFaults1Response"/>

+			<fault name="ComplexFault1" message="tns:SOAPStructFault"/>

+			<fault name="ComplexFault2" message="tns:BaseStructFault"/>

+		</operation>

+

+		<!--

+			Throws a fault with an array of base complex type and

+			a fault with doubly extended complex type

+		-->

+		<operation name="echoMultipleFaults2" parameterOrder="param">

+			<input message="tns:echoMultipleFaults2Request"/>

+			<output message="tns:echoMultipleFaults2Response"/>

+			<fault name="ComplexFault1" message="tns:BaseStructFault"/>

+			<fault name="ComplexFault2" message="tns:ExtendedStructFault"/>

+			<fault name="ComplexFault3" message="tns:MoreExtendedStructFault"/>

+		</operation>

+	</portType>

+

+	<binding name="ComplexDocLitBinding" type="tns:ComplexDocLitPortType">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<operation name="echoSOAPStructFault">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault">

+				<soap:fault

+					name="ComplexFault"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+

+		<operation name="echoBaseStructFault">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault">

+				<soap:fault

+					name="ComplexFault"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+

+		<operation name="echoExtendedStructFault">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault">

+				<soap:fault

+					name="ComplexFault"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+

+		<operation name="echoMultipleFaults1">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault1">

+				<soap:fault 

+					name="ComplexFault1"

+					use="literal"/>

+			</fault>

+			<fault name="ComplexFault2">

+				<soap:fault

+					name="ComplexFault2"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+

+		<operation name="echoMultipleFaults2">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault1">

+				<soap:fault

+					name="ComplexFault1"

+					use="literal"/>

+			</fault>

+			<fault name="ComplexFault2">

+				<soap:fault 

+					name="ComplexFault2"

+					use="literal"/>

+			</fault>

+			<fault name="ComplexFault3">

+				<soap:fault 

+					name="ComplexFault3"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+	</binding>

+

+	<service name="ComplexDocLitService">

+		<port name="ComplexDocLitPort" binding="tns:ComplexDocLitBinding">

+			<soap:address

+				location="http://localhost:8080/axis/services/ComplexDocLitPort"/>

+		</port>

+	</service>

+</definitions>

+

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/compound1.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/compound1.wsdl
new file mode 100644
index 0000000..ed0dee8
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/compound1.wsdl
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlns="http://soapinterop.org/" xmlns:typens="http://soapinterop.org/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SoapInteropCompound" targetNamespace="http://soapinterop.org/">
+    <types>
+        <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/xsd" elementFormDefault="qualified">
+            <complexType name="Person">
+                <sequence>
+                    <element minOccurs="1" maxOccurs="1" name="Age" type="double"/>
+                    <element minOccurs="1" maxOccurs="1" name="ID" type="xsd:float"/>
+                </sequence>
+                <attribute name="Name" type="string"/>
+                <attribute name="Male" type="boolean"/>
+            </complexType>
+            <element name="x_Person" type="typens:Person"/>
+            <element name="result_Person" type="typens:Person"/>
+
+            <complexType name="Document">
+                <simpleContent>
+                    <extension base="string">
+                        <xsd:attribute name="ID" type="string"/>
+                    </extension>
+                </simpleContent>
+            </complexType>
+            <element name="x_Document" type="typens:Document"/>
+            <element name="result_Document" type="typens:Document"/>
+        </schema>
+    </types>
+    <message name="echoPerson">
+        <part name="x" element="typens:x_Person"/>
+    </message>
+    <message name="echoPersonResponse">
+        <part name="Result" element="typens:result_Person"/>
+    </message>
+    <message name="echoDocument">
+        <part name="x" element="typens:x_Document"/>
+    </message>
+    <message name="echoDocumentResponse">
+        <part name="Result" element="typens:result_Document"/>
+    </message>
+    <portType name="SoapInteropCompound1PortType">
+        <operation name="echoPerson" parameterOrder="x">
+            <input message="wsdlns:echoPerson"/>
+            <output message="wsdlns:echoPersonResponse"/>
+        </operation>
+        <operation name="echoDocument" parameterOrder="x">
+            <input message="wsdlns:echoDocument"/>
+            <output message="wsdlns:echoDocumentResponse"/>
+        </operation>
+    </portType>
+    <binding name="SoapInteropCompound1Binding" type="wsdlns:SoapInteropCompound1PortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <operation name="echoPerson">
+            <soap:operation soapAction="http://soapinterop/echoPerson"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="echoDocument">
+            <soap:operation soapAction="http://soapinterop/echoDocument"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+    </binding>
+    <service name="Compound1">
+        <port name="SoapInteropCompound1Port" binding="wsdlns:SoapInteropCompound1Binding">
+            <soap:address xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" location="http://soapinterop.java.sun.com:80/round3/groupd/compound1"/>
+        </port>
+    </service>
+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/compound2.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/compound2.wsdl
new file mode 100644
index 0000000..753fdda
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/compound2.wsdl
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlns="http://soapinterop.org/" xmlns:emp="http://soapinterop.org/employee" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SoapInteropCompound" targetNamespace="http://soapinterop.org/">
+    <types>
+        <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/person" elementFormDefault="qualified">
+
+            <complexType name="Person">
+                <sequence>
+                    <element minOccurs="1" maxOccurs="1" name="Name" type="string"/>
+                    <element minOccurs="1" maxOccurs="1" name="Male" type="boolean"/>
+                </sequence>
+            </complexType>
+        </schema>
+        <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:prs="http://soapinterop.org/person" targetNamespace="http://soapinterop.org/employee" elementFormDefault="qualified">
+            <import namespace="http://soapinterop.org/person"/>
+            <complexType name="Employee">
+                <sequence>
+                    <element minOccurs="1" maxOccurs="1" name="person" type="prs:Person"/>
+                    <element minOccurs="1" maxOccurs="1" name="salary" type="double"/>
+                    <element minOccurs="1" maxOccurs="1" name="ID" type="int"/>
+                </sequence>
+            </complexType>
+            <element name="x_Employee" type="emp:Employee"/>
+            <element name="result_Employee" type="emp:Employee"/>
+        </schema>
+    </types>
+    <message name="echoEmployee">
+        <part name="x" element="emp:x_Employee"/>
+    </message>
+    <message name="echoEmployeeResponse">
+        <part name="result" element="emp:result_Employee"/>
+    </message>
+    <portType name="SoapInteropCompound2PortType">
+        <operation name="echoEmployee" parameterOrder="x">
+            <input message="wsdlns:echoEmployee"/>
+            <output message="wsdlns:echoEmployeeResponse"/>
+        </operation>
+    </portType>
+    <binding name="SoapInteropCompound2Binding" type="wsdlns:SoapInteropCompound2PortType">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <operation name="echoEmployee">
+            <soap:operation soapAction="#echoEmployee"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="Compound2">
+        <port name="SoapInteropCompound2Port" binding="wsdlns:SoapInteropCompound2Binding">
+            <soap:address xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" location="http://soapinterop.java.sun.com:80/round3/groupd/compound2"/>
+        </port>
+    </service>
+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/dime-doc.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/dime-doc.wsdl
new file mode 100644
index 0000000..c15465a
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/dime-doc.wsdl
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="utf-8"?>

+<wsdl:definitions name="SOAPBuilders"

+                  xmlns="http://soapinterop.org/attachments/wsdl"

+                  xmlns:types="http://soapinterop.org/attachments/xsd"

+                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+                  xmlns:dime="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/"

+                  xmlns:content="http://schemas.xmlsoap.org/ws/2002/04/content-type/"

+                  xmlns:ref="http://schemas.xmlsoap.org/ws/2002/04/reference/"

+                  targetNamespace="http://soapinterop.org/attachments/wsdl">

+    <wsdl:types>

+        <schema xmlns="http://www.w3.org/2001/XMLSchema"

+                targetNamespace="http://soapinterop.org/attachments/xsd"

+                elementFormDefault="qualified" attributeFormDefault="qualified">

+            <import namespace="http://schemas.xmlsoap.org/ws/2002/04/reference/"/>

+            <import namespace="http://schemas.xmlsoap.org/ws/2002/04/content-type/"/>

+            <complexType name="ReferencedBinary">

+                <simpleContent>

+                    <restriction base="xsd:base64Binary">

+                        <annotation>

+                            <appinfo>

+                                <content:mediaType

+                                        value="application/octetstream"/>

+                            </appinfo>

+                        </annotation>

+                        <attribute ref="ref:location" use="optional"/>

+                    </restriction>

+                </simpleContent>

+            </complexType>

+            <complexType name="ReferencedText">

+                <simpleContent>

+                    <restriction base="xsd:base64Binary">

+                        <annotation>

+                            <appinfo>

+                                <content:mediaType value="text/plain"/>

+                            </appinfo>

+                        </annotation>

+                        <attribute ref="ref:location" use="optional"/>

+                    </restriction>

+                </simpleContent>

+            </complexType>

+            <element name="EchoAttachment" type="types:EchoAttachment"/>

+            <element name="EchoAttachmentResponse"

+                     type="types:EchoAttachmentResponse"/>

+            <complexType name="EchoAttachment">

+                <sequence>

+                    <element name="In" type="types:ReferencedBinary"/>

+                </sequence>

+            </complexType>

+            <complexType name="EchoAttachmentResponse">

+                <sequence>

+                    <element name="Out" type="types:ReferencedBinary"/>

+                </sequence>

+            </complexType>

+            <element name="EchoAttachments" type="types:Attachments"/>

+            <element name="EchoAttachmentsResponse" type="types:Attachments"/>

+            <complexType name="Attachments">

+                <sequence>

+                    <element name="Item" minOccurs="0" maxOccurs="unbounded"

+                             type="types:ReferencedBinary"/>

+                </sequence>

+            </complexType>

+            <element name="EchoAttachmentAsBase64" type="types:EchoAttachment"/>

+            <element name="EchoAttachmentAsBase64Response"

+                     type="types:base64Out"/>

+            <element name="EchoBase64AsAttachment" type="types:base64In"/>

+            <element name="EchoBase64AsAttachmentResponse"

+                     type="types:EchoAttachmentResponse"/>

+            <complexType name="base64In">

+                <sequence>

+                    <element name="In" type="xsd:base64Binary"/>

+                </sequence>

+            </complexType>

+            <complexType name="base64Out">

+                <sequence>

+                    <element name="Out" type="xsd:base64Binary"/>

+                </sequence>

+            </complexType>

+            <element name="EchoUnrefAttachments" type="types:emptyType"/>

+            <element name="EchoUnrefAttachmentsResponse"

+                     type="types:emptyType"/>

+            <complexType name="emptyType">

+                <sequence/>

+            </complexType>

+            <element name="EchoAttachmentAsString"

+                     type="types:EchoAttachmentAsString"/>

+            <element name="EchoAttachmentAsStringResponse"

+                     type="types:EchoAttachmentAsStringResponse"/>

+            <complexType name="EchoAttachmentAsString">

+                <sequence>

+                    <element name="In" type="types:ReferencedText"/>

+                </sequence>

+            </complexType>

+            <complexType name="EchoAttachmentAsStringResponse">

+                <sequence>

+                    <element name="Out" type="xsd:string"/>

+                </sequence>

+            </complexType>

+        </schema>

+    </wsdl:types>

+    <wsdl:message name="EchoAttachmentIn">

+        <wsdl:part name="In" element="types:EchoAttachment"/>

+    </wsdl:message>

+    <wsdl:message name="EchoAttachmentOut">

+        <wsdl:part name="Out" element="types:EchoAttachmentResponse"/>

+    </wsdl:message>

+    <wsdl:message name="EchoAttachmentsIn">

+        <wsdl:part name="In" element="types:EchoAttachments"/>

+    </wsdl:message>

+    <wsdl:message name="EchoAttachmentsOut">

+        <wsdl:part name="Out" element="types:EchoAttachmentsResponse"/>

+    </wsdl:message>

+    <wsdl:message name="EchoAttachmentAsBase64In">

+        <wsdl:part name="In" element="types:EchoAttachmentAsBase64"/>

+    </wsdl:message>

+    <wsdl:message name="EchoAttachmentAsBase64Out">

+        <wsdl:part name="Out" element="types:EchoAttachmentAsBase64Response"/>

+    </wsdl:message>

+    <wsdl:message name="EchoBase64AsAttachmentIn">

+        <wsdl:part name="In" element="types:EchoBase64AsAttachment"/>

+    </wsdl:message>

+    <wsdl:message name="EchoBase64AsAttachmentOut">

+        <wsdl:part name="Out" element="types:EchoBase64AsAttachmentResponse"/>

+    </wsdl:message>

+    <wsdl:message name="EchoUnrefAttachmentsIn">

+        <wsdl:part name="In" element="types:EchoUnrefAttachments"/>

+    </wsdl:message>

+    <wsdl:message name="EchoUnrefAttachmentsOut">

+        <wsdl:part name="Out" element="types:EchoUnrefAttachmentsResponse"/>

+    </wsdl:message>

+    <wsdl:message name="EchoAttachmentAsStringIn">

+        <wsdl:part name="In" element="types:EchoAttachmentAsString"/>

+    </wsdl:message>

+    <wsdl:message name="EchoAttachmentAsStringOut">

+        <wsdl:part name="Out" element="types:EchoAttachmentAsStringResponse"/>

+    </wsdl:message>

+    <wsdl:portType name="AttachmentsPortType">

+        <wsdl:operation name="EchoAttachment">

+            <wsdl:input name="EchoAttachmentInput" message="EchoAttachmentIn"/>

+            <wsdl:output name="EchoAttachmentOutput"

+                         message="EchoAttachmentOut"/>

+        </wsdl:operation>

+        <wsdl:operation name="EchoAttachments">

+            <wsdl:input name="EchoAttachmentsInput"

+                        message="EchoAttachmentsIn"/>

+            <wsdl:output name="EchoAttachmentsOutput"

+                         message="EchoAttachmentsOut"/>

+        </wsdl:operation>

+        <wsdl:operation name="EchoAttachmentAsBase64">

+            <wsdl:input name="EchoAttachmentAsBase64Input"

+                        message="EchoAttachmentAsBase64In"/>

+            <wsdl:output name="EchoAttachmentAsBase64Output"

+                         message="EchoAttachmentAsBase64Out"/>

+        </wsdl:operation>

+        <wsdl:operation name="EchoBase64AsAttachment">

+            <wsdl:input name="EchoBase64AsAttachmentInput"

+                        message="EchoBase64AsAttachmentIn"/>

+            <wsdl:output name="EchoBase64AsAttachmentOutput"

+                         message="EchoBase64AsAttachmentOut"/>

+        </wsdl:operation>

+        <wsdl:operation name="EchoUnrefAttachments">

+            <wsdl:input name="EchoUnrefAttachmentsInput"

+                        message="EchoUnrefAttachmentsIn"/>

+            <wsdl:output name="EchoUnrefAttachmentsOutput"

+                         message="EchoUnrefAttachmentsOut"/>

+        </wsdl:operation>

+        <wsdl:operation name="EchoAttachmentAsString">

+            <wsdl:input name="EchoAttachmentAsStringInput"

+                        message="EchoAttachmentAsStringIn"/>

+            <wsdl:output name="EchoAttachmentAsStringOutput"

+                         message="EchoAttachmentAsStringOut"/>

+        </wsdl:operation>

+    </wsdl:portType>

+    <wsdl:binding name="AttachmentsBinding" type="AttachmentsPortType">

+        <soap:binding style="document"

+                      transport="http://schemas.xmlsoap.org/soap/http"/>

+        <wsdl:operation name="EchoAttachment">

+            <soap:operation soapAction="http://soapinterop.org/attachments/"/>

+            <wsdl:input name="EchoAttachmentInput">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:input>

+            <wsdl:output name="EchoAttachmentOutput">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:output>

+        </wsdl:operation>

+        <wsdl:operation name="EchoAttachments">

+            <soap:operation soapAction="http://soapinterop.org/attachments/"/>

+            <wsdl:input name="EchoAttachmentsInput">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:input>

+            <wsdl:output name="EchoAttachmentsOutput">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:output>

+        </wsdl:operation>

+        <wsdl:operation name="EchoAttachmentAsBase64">

+            <soap:operation soapAction="http://soapinterop.org/attachments/"/>

+            <wsdl:input name="EchoAttachmentAsBase64Input">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:input>

+            <wsdl:output name="EchoAttachmentAsBase64Output">

+                <soap:body use="literal"/>

+            </wsdl:output>

+        </wsdl:operation>

+        <wsdl:operation name="EchoBase64AsAttachment">

+            <soap:operation soapAction="http://soapinterop.org/attachments/"/>

+            <wsdl:input name="EchoBase64AsAttachmentInput">

+                <soap:body use="literal"/>

+            </wsdl:input>

+            <wsdl:output name="EchoBase64AsAttachmentOutput">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:output>

+        </wsdl:operation>

+        <wsdl:operation name="EchoUnrefAttachments">

+            <soap:operation soapAction="http://soapinterop.org/attachments/"/>

+            <wsdl:input name="EchoUnrefAttachmentsInput">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/open-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:input>

+            <wsdl:output name="EchoUnrefAttachmentsOutput">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/open-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:output>

+        </wsdl:operation>

+        <wsdl:operation name="EchoAttachmentAsString">

+            <soap:operation soapAction="http://soapinterop.org/attachments/"/>

+            <wsdl:input name="EchoAttachmentAsStringInput">

+                <dime:message

+                        layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout"

+                        wsdl:required="true"/>

+                <soap:body use="literal"/>

+            </wsdl:input>

+            <wsdl:output name="EchoAttachmentAsStringOutput">

+                <soap:body use="literal"/>

+            </wsdl:output>

+        </wsdl:operation>

+    </wsdl:binding>

+    <wsdl:service name="DimeDOCInterop">

+        <wsdl:port name="DimeDOCSoapPort" binding="AttachmentsBinding">

+            <soap:address

+                    location="http://localhost:8080/axis/services/DimeDOCSoapPort"/>

+        </wsdl:port>

+    </wsdl:service>

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/headers.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/headers.wsdl
new file mode 100644
index 0000000..0661bd2
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/headers.wsdl
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapinterop.org/" xmlns:types="http://soapinterop.org/xsd" targetNamespace="http://soapinterop.org/">
+  <types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/xsd">
+      <s:element name="echoStringParam" type="s:string"/>
+         
+      <s:element name="echoStringReturn" type="s:string"/>
+
+      <s:element name="Header1" type="types:Header1"/>
+      <s:complexType name="Header1">
+        <s:sequence>
+          <s:element name="string" type="s:string"/>
+          <s:element name="int" type="s:int"/>
+        </s:sequence>
+	<s:anyAttribute/>
+      </s:complexType>
+      <s:element name="Header2" type="types:Header2"/>
+      <s:complexType name="Header2">
+        <s:sequence>
+          <s:element name="int" type="s:int"/>
+          <s:element name="string" type="s:string"/>
+        </s:sequence>
+	<s:anyAttribute/>
+      </s:complexType>
+    </s:schema>
+  </types>
+  <message name="echoString">
+        <part element="types:echoStringParam" name="a"/>
+    </message>
+    <message name="echoStringResponse">
+        <part element="types:echoStringReturn" name="result"/>
+    </message>
+  <message name="Header1">
+    <part name="Header1" element="types:Header1"/>
+  </message>
+  <message name="Header2">
+    <part name="Header2" element="types:Header2"/>
+  </message>
+  <portType name="RetHeaderPortType">
+    <operation name="echoString">
+      <input message="tns:echoString"/>
+      <output message="tns:echoStringResponse"/>
+    </operation>
+  </portType>
+  <binding name="RetHeaderBinding" type="tns:RetHeaderPortType">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <operation name="echoString">
+      <soap:operation soapAction="http://soapinterop.org/" style="document"/>
+      <input>
+        <soap:body use="literal"/>
+        <soap:header message="tns:Header1" part="Header1" use="literal"/>
+        <soap:header message="tns:Header2" part="Header2" use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+  </binding>
+  <service name="RetHeaderService">
+    <port name="RetHeaderPort" binding="tns:RetHeaderBinding">
+      <soap:address location="http://soapinterop.java.sun.com:80/round3/groupf/headers"/>
+    </port>
+  </service>
+</definitions>
\ No newline at end of file
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/interoptestdoclit.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/interoptestdoclit.wsdl
new file mode 100755
index 0000000..14d0e2b
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/interoptestdoclit.wsdl
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="WSDLInteropTestDocLitService"

+    targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit"

+    xmlns="http://schemas.xmlsoap.org/wsdl/"

+    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+    xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit"

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+    xmlns:xsd1="http://soapinterop.org/xsd"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+    <types>

+        <schema targetNamespace="http://soapinterop.org/xsd"

+            xmlns="http://www.w3.org/2001/XMLSchema"

+            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+            elementFormDefault="qualified">

+            <complexType name="ArrayOfstring_literal">

+                <sequence>

+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>

+                </sequence>

+            </complexType>

+            <complexType name="SOAPStruct">

+                <all>

+                    <element name="varFloat" type="xsd:float"/>

+                    <element name="varInt" type="xsd:int"/>

+                    <element name="varString" type="xsd:string"/>

+                </all>

+            </complexType>

+

+            <element name="echoStringParam" type="xsd:string"/>

+

+            <element name="echoStringReturn" type="xsd:string"/>

+            <element name="echoStringArrayParam" type="xsd1:ArrayOfstring_literal"/>

+

+            <element name="echoStringArrayReturn" type="xsd1:ArrayOfstring_literal"/>

+

+            <element name="echoStructParam" type="xsd1:SOAPStruct"/>

+

+            <element name="echoStructReturn" type="xsd1:SOAPStruct"/>

+        </schema>

+    </types>

+    <message name="echoString">

+        <part element="xsd1:echoStringParam" name="a"/>

+    </message>

+    <message name="echoStringResponse">

+        <part element="xsd1:echoStringReturn" name="result"/>

+    </message>

+    <message name="echoStringArray">

+        <part element="xsd1:echoStringArrayParam" name="a"/>

+    </message>

+    <message name="echoStringArrayResponse">

+        <part element="xsd1:echoStringArrayReturn" name="result"/>

+    </message>

+    <message name="echoStruct">

+        <part element="xsd1:echoStructParam" name="a"/>

+    </message>

+    <message name="echoStructResponse">

+        <part element="xsd1:echoStructReturn" name="result"/>

+    </message>

+    <message name="echoVoid"/>

+    <message name="echoVoidResponse"/>

+

+    <portType name="WSDLInteropTestDocLitPortType">

+        <operation name="echoString">

+            <input message="tns:echoString" name="echoString"/>

+            <output message="tns:echoStringResponse" name="echoStringResponse"/>

+        </operation>

+        <operation name="echoStringArray">

+            <input message="tns:echoStringArray" name="echoStringArray"/>

+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>

+        </operation>

+        <operation name="echoStruct">

+            <input message="tns:echoStruct" name="echoStruct"/>

+            <output message="tns:echoStructResponse" name="echoStructResponse"/>

+        </operation>

+        <operation name="echoVoid">

+            <input message="tns:echoVoid" name="echoVoid"/>

+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>

+        </operation>

+    </portType>

+    <binding name="WSDLInteropTestDocLitPortBinding"

+        type="tns:WSDLInteropTestDocLitPortType">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="echoString">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoString">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStringResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStringArray">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStringArray">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStringArrayResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStruct">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStruct">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStructResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoVoid">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoVoid">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoVoidResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="WSDLInteropTestDocLitService">

+        <port binding="tns:WSDLInteropTestDocLitPortBinding"

+            name="WSDLInteropTestDocLitPort">

+            <soap:address

+                location="http://mssoapinterop.org/stkv3/wsdl/interopTestDocLit.wsdl"/>

+        </port>

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/interoptestdoclitparameters.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/interoptestdoclitparameters.wsdl
new file mode 100755
index 0000000..1dbe3c8
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/interoptestdoclitparameters.wsdl
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions name="WSDLInteropTestDocLitService"

+    targetNamespace="http://soapinterop.org/WSDLInteropTestDocLit"

+    xmlns="http://schemas.xmlsoap.org/wsdl/"

+    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+    xmlns:tns="http://soapinterop.org/WSDLInteropTestDocLit"

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+    xmlns:xsd1="http://soapinterop.org/xsd"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+    <types>

+        <schema targetNamespace="http://soapinterop.org/xsd"

+            xmlns="http://www.w3.org/2001/XMLSchema"

+            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

+            <complexType name="ArrayOfstring_literal">

+                <sequence>

+                    <element maxOccurs="unbounded" minOccurs="1" name="string" type="xsd:string"/>

+                </sequence>

+            </complexType>

+            <complexType name="SOAPStruct">

+                <all>

+                    <element name="varFloat" type="xsd:float"/>

+                    <element name="varInt" type="xsd:int"/>

+                    <element name="varString" type="xsd:string"/>

+                </all>

+            </complexType>

+

+            <element name="echoString">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd:string"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd:string"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringArray">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd1:ArrayOfstring_literal"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStringArrayResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd1:ArrayOfstring_literal"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStruct">

+                <complexType>

+                    <sequence>

+                        <element name="param0" type="xsd1:SOAPStruct"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoStructResponse">

+                <complexType>

+                    <sequence>

+                        <element name="return" type="xsd1:SOAPStruct"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoVoid">

+                <complexType/>

+            </element>

+            <element name="echoVoidResponse">

+                <complexType/>

+            </element>

+        </schema>

+    </types>

+    <message name="echoString">

+        <part element="xsd1:echoString" name="parameters"/>

+    </message>

+    <message name="echoStringResponse">

+        <part element="xsd1:echoStringResponse" name="parameters"/>

+    </message>

+    <message name="echoStringArray">

+        <part element="xsd1:echoStringArray" name="parameters"/>

+    </message>

+    <message name="echoStringArrayResponse">

+        <part element="xsd1:echoStringArrayResponse" name="parameters"/>

+    </message>

+    <message name="echoStruct">

+        <part element="xsd1:echoStruct" name="parameters"/>

+    </message>

+    <message name="echoStructResponse">

+        <part element="xsd1:echoStructResponse" name="parameters"/>

+    </message>

+    <message name="echoVoid">

+        <part element="xsd1:echoVoid" name="parameters"/>

+    </message>

+    <message name="echoVoidResponse">

+        <part element="xsd1:echoVoidResponse" name="parameters"/>

+    </message>

+    <portType name="WSDLInteropTestDocLitPortType">

+        <operation name="echoString">

+            <input message="tns:echoString" name="echoString"/>

+            <output message="tns:echoStringResponse" name="echoStringResponse"/>

+        </operation>

+        <operation name="echoStringArray">

+            <input message="tns:echoStringArray" name="echoStringArray"/>

+            <output message="tns:echoStringArrayResponse" name="echoStringArrayResponse"/>

+        </operation>

+        <operation name="echoStruct">

+            <input message="tns:echoStruct" name="echoStruct"/>

+            <output message="tns:echoStructResponse" name="echoStructResponse"/>

+        </operation>

+        <operation name="echoVoid">

+            <input message="tns:echoVoid" name="echoVoid"/>

+            <output message="tns:echoVoidResponse" name="echoVoidResponse"/>

+        </operation>

+    </portType>

+    <binding name="WSDLInteropTestDocLitPortBinding"

+        type="tns:WSDLInteropTestDocLitPortType">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="echoString">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoString">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStringResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStringArray">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStringArray">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStringArrayResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoStruct">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoStruct">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoStructResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+        <operation name="echoVoid">

+            <soap:operation soapAction="http://soapinterop.org/" style="document"/>

+            <input name="echoVoid">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </input>

+            <output name="echoVoidResponse">

+                <soap:body namespace="http://soapinterop.org/WSDLInteropTestDocLit"

+                    use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="WSDLInteropTestDocLitService">

+        <port binding="tns:WSDLInteropTestDocLitPortBinding"

+            name="WSDLInteropTestDocLitParamPort">

+            <soap:address

+                location="http://www.whitemesa.net/interop/r3/doclitparam"/>

+        </port>

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/mime-doc.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/mime-doc.wsdl
new file mode 100644
index 0000000..23d86c0
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/mime-doc.wsdl
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>

+<wsdl:definitions name="SOAPBuilders" 

+    xmlns="http://soapinterop.org/attachments/wsdl" 

+    xmlns:types="http://soapinterop.org/attachments/xsd" 

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

+    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 

+    xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" 

+    targetNamespace="http://soapinterop.org/attachments/wsdl">

+	<wsdl:types>

+		<schema 

+			xmlns="http://www.w3.org/2001/XMLSchema" 

+			targetNamespace="http://soapinterop.org/attachments/xsd" 

+			elementFormDefault="qualified"

+			attributeFormDefault="qualified">

+		

+		<complexType name="binary">

+			<simpleContent>

+				<extension base="xsd:base64Binary">

+					<attribute name="href" type="xsd:anyURI"/>

+				</extension>

+			</simpleContent>

+		</complexType >

+		

+		<element name="EchoAttachment" type="types:EchoAttachment"/>

+		<element name="EchoAttachmentResponse" type="types:EchoAttachmentResponse"/>

+		<complexType name="EchoAttachment">

+			<sequence>

+				<element name="In" type="types:binary"/>

+			</sequence>

+		</complexType>

+		<complexType name="EchoAttachmentResponse">

+			<sequence>

+				<element name="Out" type="types:binary"/>

+			</sequence>

+		</complexType>

+		

+		<element name="EchoAttachments" type="types:Attachments"/>

+		<element name="EchoAttachmentsResponse" type="types:Attachments"/>

+		<complexType name="Attachments">

+			<sequence>

+				<element name="Item" minOccurs="0" maxOccurs="unbounded" type="types:binary">

+				</element>

+			</sequence>

+		</complexType>

+		

+		<element name="EchoAttachmentAsBase64" type="types:EchoAttachment"/>

+		<element name="EchoAttachmentAsBase64Response" type="types:EchoAttachmentResponse"/>

+		

+		<element name="EchoBase64AsAttachment" type="types:EchoAttachment"/>

+		<element name="EchoBase64AsAttachmentResponse" type="types:EchoAttachmentResponse"/>

+		</schema>

+	</wsdl:types>

+	

+	<wsdl:message name="EchoAttachmentIn">

+		<wsdl:part name="In" element="types:EchoAttachment"/>

+	</wsdl:message>

+	<wsdl:message name="EchoAttachmentOut">

+		<wsdl:part name="Out" element="types:EchoAttachmentResponse"/>

+	</wsdl:message>

+	<wsdl:message name="EchoAttachmentsIn">

+		<wsdl:part name="In" element="types:EchoAttachments"/>

+	</wsdl:message>

+	<wsdl:message name="EchoAttachmentsOut">

+		<wsdl:part name="Out" element="types:EchoAttachmentsResponse"/>

+	</wsdl:message>

+	<wsdl:message name="EchoAttachmentAsBase64In">

+		<wsdl:part name="In" element="types:EchoAttachmentAsBase64"/>

+	</wsdl:message>

+	<wsdl:message name="EchoAttachmentAsBase64Out">

+		<wsdl:part name="Out" element="types:EchoAttachmentAsBase64Response"/>

+	</wsdl:message>

+	<wsdl:message name="EchoBase64AsAttachmentIn">

+		<wsdl:part name="In" element="types:EchoBase64AsAttachment"/>

+	</wsdl:message>

+	<wsdl:message name="EchoBase64AsAttachmentOut">

+		<wsdl:part name="Out" element="types:EchoBase64AsAttachmentResponse"/>

+	</wsdl:message>

+	

+	<wsdl:portType name="AttachmentsPortType">

+		<wsdl:operation name="EchoAttachment">

+			<wsdl:input name="EchoAttachmentInput" message="EchoAttachmentIn"/>

+			<wsdl:output name="EchoAttachmentOutput" message="EchoAttachmentOut"/>

+		</wsdl:operation>

+		<wsdl:operation name="EchoAttachments">

+			<wsdl:input name="EchoAttachmentsInput" message="EchoAttachmentsIn"/>

+			<wsdl:output name="EchoAttachmentsOutput" message="EchoAttachmentsOut"/>

+		</wsdl:operation>

+		<wsdl:operation name="EchoAttachmentAsBase64">

+			<wsdl:input name="EchoAttachmentAsBase64Input" message="EchoAttachmentAsBase64In"/>

+			<wsdl:output name="EchoAttachmentAsBase64Output" message="EchoAttachmentAsBase64Out"/>

+		</wsdl:operation>

+		<wsdl:operation name="EchoBase64AsAttachment">

+			<wsdl:input name="EchoBase64AsAttachmentInput" message="EchoBase64AsAttachmentIn"/>

+			<wsdl:output name="EchoBase64AsAttachmentOutput" message="EchoBase64AsAttachmentOut"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:binding name="AttachmentsBinding" type="AttachmentsPortType">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+		<wsdl:operation name="EchoAttachment">

+			<soap:operation soapAction="http://soapinterop.org/attachments/"/>

+			<wsdl:input name="EchoAttachmentInput">

+				<mime:multipartRelated>

+					<mime:part>

+						<soap:body use="literal"/>

+					</mime:part>

+					<mime:part>

+						<mime:content part="In" type="application/octetstream"/>

+					</mime:part>

+				</mime:multipartRelated>

+			</wsdl:input>

+			<wsdl:output name="EchoAttachmentOutput">

+				<mime:multipartRelated>

+					<mime:part>

+						<soap:body use="literal" />

+					</mime:part>

+					<mime:part>

+						<mime:content part="Out" type="application/octetstream"/>

+					</mime:part>

+				</mime:multipartRelated>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="EchoAttachments">

+			<soap:operation soapAction="http://soapinterop.org/attachments/"/>

+			<wsdl:input name="EchoAttachmentsInput">

+				<mime:multipartRelated>

+					<mime:part>

+						<soap:body use="literal"/>

+					</mime:part>

+					<mime:part>

+						<mime:content part="In" type="application/octetstream"/>

+					</mime:part>

+				</mime:multipartRelated>

+			</wsdl:input>

+			<wsdl:output name="EchoAttachmentsOutput">

+				<mime:multipartRelated>

+					<mime:part>

+						<soap:body use="literal"/>

+					</mime:part>

+					<mime:part>

+						<mime:content part="Out" type="application/octetstream"/>

+					</mime:part>

+				</mime:multipartRelated>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="EchoAttachmentAsBase64">

+			<soap:operation soapAction="http://soapinterop.org/attachments/"/>

+			<wsdl:input name="EchoAttachmentAsBase64Input">

+				<mime:multipartRelated>

+					<mime:part>

+						<soap:body use="literal"/>

+					</mime:part>

+					<mime:part>

+						<mime:content part="In" type="application/octetstream"/>

+					</mime:part>

+				</mime:multipartRelated>

+			</wsdl:input>

+			<wsdl:output name="EchoAttachmentAsBase64Output">

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="EchoBase64AsAttachment">

+			<soap:operation soapAction="http://soapinterop.org/attachments/"/>

+			<wsdl:input name="EchoBase64AsAttachmentInput">

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output name="EchoBase64AsAttachmentOutput">

+				<mime:multipartRelated>

+					<mime:part>

+						<soap:body use="literal"/>

+					</mime:part>

+					<mime:part>

+						<mime:content part="Out" type="application/octetstream"/>

+					</mime:part>

+				</mime:multipartRelated>

+			</wsdl:output>

+		</wsdl:operation>

+	</wsdl:binding>

+    <wsdl:service name="MimeDOCInterop">

+	    <wsdl:port name="MimeDOCSoapPort" binding="AttachmentsBinding">

+            <soap:address location="http://localhost:8080/axis/services/MimeDOCSoapPort"/>

+        </wsdl:port>

+    </wsdl:service>

+</wsdl:definitions>	
\ No newline at end of file
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/mtomecho.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/mtomecho.wsdl
new file mode 100644
index 0000000..22a60d0
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/mtomecho.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>

+<wsdl:definitions xmlns:x="http://example.org/mtom/data" 

+				  xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 

+				  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 

+				  xmlns:tns="http://martingudgin-2.dsl.easynet.co.uk/mtom"

+				  targetNamespace="http://martingudgin-2.dsl.easynet.co.uk/mtom" >

+

+  <wsdl:types>

+	<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' 

+			   xmlns:xmime='http://www.w3.org/2004/06/xmlmime'

+			   targetNamespace='http://example.org/mtom/data'>

+

+	  <xs:import namespace='http://www.w3.org/2004/06/xmlmime' />

+

+	  <xs:element name='Data' >

+		<xs:complexType>

+		  <xs:simpleContent>

+			<xs:extension base='xs:base64Binary' >

+			  <xs:attribute ref='xmime:contentType' />

+			</xs:extension>

+		  </xs:simpleContent>

+		</xs:complexType>

+	  </xs:element>

+

+	  <xs:element name='EchoTest' >

+		<xs:complexType>

+		  <xs:sequence>

+			<xs:element ref='x:Data' minOccurs='1' maxOccurs='unbounded' />

+		  </xs:sequence>

+		</xs:complexType>

+	  </xs:element>

+		

+	</xs:schema>

+  </wsdl:types>

+	

+  <wsdl:message name="EchoTestSingle">

+	<wsdl:part name="P" element="x:Data"/>

+  </wsdl:message>

+

+  <wsdl:message name="EchoTestMultiple">

+	<wsdl:part name="P" element="x:EchoTest"/>

+  </wsdl:message>

+	

+  <wsdl:portType name="EchoTest">

+	<wsdl:operation name="EchoTestSingle">

+	  <wsdl:input name="EchoTestSingleInput" message="tns:EchoTestSingle"/>

+	  <wsdl:output name="EchoTestSingleOutput" message="tns:EchoTestSingle"/>

+	</wsdl:operation>

+	<wsdl:operation name="EchoTestMultiple">

+	  <wsdl:input name="EchoTestMultipleInput" message="tns:EchoTestMultiple"/>

+	  <wsdl:output name="EchoTestMultipleOutput" message="tns:EchoTestMultiple"/>

+	</wsdl:operation>

+  </wsdl:portType>

+

+  <wsdl:binding name="EchoTest" type="tns:EchoTest">

+	<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+	<wsdl:operation name="EchoTestSingle">

+	  <soap12:operation />

+	  <wsdl:input name="EchoTestSingleInput">

+		<soap12:body use="literal"/>

+	  </wsdl:input>

+	  <wsdl:output name="EchoTestSingleOutput">

+		<soap12:body use="literal"/>

+	  </wsdl:output>

+	</wsdl:operation>

+	<wsdl:operation name="EchoTestMultiple">

+	  <soap12:operation />

+	  <wsdl:input name="EchoTestMultipleInput">

+		<soap12:body use="literal"/>

+	  </wsdl:input>

+	  <wsdl:output name="EchoTestMultipleOutput">

+		<soap12:body use="literal"/>

+	  </wsdl:output>

+	</wsdl:operation>

+  </wsdl:binding>

+

+  <wsdl:service name="EchoTest">

+	<wsdl:port name="EchoTest" binding="tns:EchoTest">

+	  <soap12:address location="http://martingudgin-2.dsl.easynet.co.uk/dotnet/mtom/mtomecho.ashx" />

+	</wsdl:port>

+  </wsdl:service>

+

+</wsdl:definitions>	

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/no-service.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/no-service.wsdl
new file mode 100644
index 0000000..e0f5a39
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/no-service.wsdl
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions
+  targetNamespace="http://www.gridforum.org/cddlm/deployapi/2005/02/wsdl"
+  xmlns:tns="http://www.gridforum.org/cddlm/deployapi/2005/02/wsdl"
+  xmlns:api="http://www.gridforum.org/cddlm/deployapi/2005/02"
+  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
+  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+  xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing"
+  >
+  
+   <wsdl:types>
+    <xsd:schema targetNamespace="http://www.gridforum.org/cddlm/deployapi/2005/02"
+      xmlns="http://www.gridforum.org/cddlm/deployapi/2005/02"
+      elementFormDefault="qualified">
+    
+    
+       <xsd:complexType name="unboundedXMLAnyNamespace">
+        <xsd:sequence>
+          <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:complexType>
+       
+      <xsd:element name="createRequest">
+        <xsd:complexType>
+          <xsd:annotation>
+            <xsd:documentation>
+              This is our request to create a system
+            </xsd:documentation>
+          </xsd:annotation>
+          <xsd:sequence>
+            <xsd:element name="hostname" type="xsd:string" minOccurs="0"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!-- ============================================================= -->
+      <!-- ============================================================= -->
+      <xsd:element name="createResponse">
+        <xsd:complexType>
+          <xsd:annotation>
+            <xsd:documentation>
+              This is our deployment response.
+              It consists of a reference to the system, 
+              which can then be used directly
+            </xsd:documentation>
+          </xsd:annotation>
+          <xsd:sequence>
+            <xsd:element name="ResourceId" type="xsd:anyURI"/>
+            <xsd:element name="systemReference" type="api:unboundedXMLAnyNamespace"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      
+    </xsd:schema>
+    
+   </wsdl:types>
+  
+   
+  <wsdl:message name="createRequest">
+    <wsdl:part element="api:createRequest" name="createRequest"/>
+  </wsdl:message>
+
+  <wsdl:message name="createResponse">
+    <wsdl:part element="api:createResponse" name="createResponse"/>
+  </wsdl:message>
+  
+ <wsdl:portType name="PortalEPR"
+    >
+    
+    <!-- create -->
+    <wsdl:operation name="Create">
+      <wsdl:input message="tns:createRequest" name="CreateRequest"/>
+      <wsdl:output message="tns:createResponse" name="CreateResponse"/>
+      <wsdl:fault name="DeploymentFault"
+        message="tns:DeploymentFault"/>
+    </wsdl:operation>
+    
+    </wsdl:portType>
+  
+  <wsdl:binding name="PortalEPRBinding" type="tns:PortalEPR">
+    <wsdlsoap:binding style="document"
+      transport="http://schemas.xmlsoap.org/soap/http"/>
+  <wsdl:operation name="Create">
+      <wsdlsoap:operation soapAction="" style="document"/>
+      <wsdl:input name="CreateRequest">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="CreateResponse">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:output>
+<!--       <wsdl:fault name="DeploymentFault">
+        <wsdlsoap:fault name="DeploymentFault" use="literal"/>
+      </wsdl:fault> -->
+    </wsdl:operation>
+    
+  </wsdl:binding>
+      
+  </wsdl:definitions>
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/ping-mod.xsd b/rampart_1_1/modules/xmlbeans/test-resources/ping-mod.xsd
new file mode 100644
index 0000000..d8a529d
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/ping-mod.xsd
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<s:schema elementFormDefault="qualified" targetNamespace="http://xmlsoap.org/Ping" xmlns:s="http://www.w3.org/2001/XMLSchema">

+            <s:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/>

+            <s:element name="Ping" nillable="true" type="tns:ping"/>

+            <s:complexType name="ping">

+                <s:sequence>

+                    <s:element minOccurs="0" maxOccurs="1" name="ticket" type="tns:ticketType"/>

+                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+            <s:complexType name="ticketType">

+                <s:simpleContent>

+                    <s:extension base="s:string">

+                        <s:attribute ref="s1:Id"/>

+                    </s:extension>

+                </s:simpleContent>

+            </s:complexType>

+            <s:element name="PingResponse" nillable="true" type="tns:pingResponse"/>

+            <s:complexType name="pingResponse">

+                <s:sequence>

+                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+        </s:schema>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/ping-modified.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/ping-modified.wsdl
new file mode 100644
index 0000000..9d25a78
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/ping-modified.wsdl
@@ -0,0 +1,82 @@
+<definitions xmlns:s1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"

+             xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+             xmlns:s="http://www.w3.org/2001/XMLSchema"

+             xmlns:tns="http://xmlsoap.org/Ping"

+             xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"

+             xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"

+             xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"

+             targetNamespace="http://xmlsoap.org/Ping"

+             xmlns="http://schemas.xmlsoap.org/wsdl/">

+    <types>

+        <s:schema>

+       <s:import

+         namespace="http://xmlsoap.org/Ping" 

+         schemaLocation="ping-mod.xsd" />

+     </s:schema>

+

+        <s:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

+            <s:attribute name="Id" type="s:string"/>

+        </s:schema>

+    </types>

+    <message name="PingRequest">

+        <part name="ping" element="tns:Ping"/>

+    </message>

+    <message name="PingResponse">

+        <part name="pingResponse" element="tns:PingResponse"/>

+    </message>

+    <portType name="PingPort">

+        <operation name="Ping">

+            <input message="tns:PingRequest"/>

+            <output message="tns:PingResponse"/>

+        </operation>

+    </portType>

+    <binding name="PingBinding" type="tns:PingPort">

+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

+        <operation name="Ping">

+            <soap:operation soapAction="Ping" style="document"/>

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+        </operation>

+    </binding>

+    <service name="PingService">

+        <port name="Ping1" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping1"/>

+        </port>

+        <port name="Ping2" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping2"/>

+        </port>

+        <port name="Ping2a" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping2a"/>

+        </port>

+        <port name="Ping3" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping3"/>

+        </port>

+        <port name="Ping4" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping4"/>

+        </port>

+        <port name="Ping5" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping5"/>

+        </port>

+        <port name="Ping6" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping6"/>

+        </port>

+        <port name="Ping7" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/Ping7"/>

+        </port>

+        <port name="STPing1" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/STPing1"/>

+        </port>

+        <port name="STPing3" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/STPing3"/>

+        </port>

+        <port name="STPing4" binding="tns:PingBinding">

+            <soap:address location="http://localhost:9080/pingservice/STPing4"/>

+        </port>

+        

+    </service>

+</definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/ping-unbound.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/ping-unbound.wsdl
new file mode 100644
index 0000000..ea855c4
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/ping-unbound.wsdl
@@ -0,0 +1,52 @@
+<definitions xmlns:s1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"

+             xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+             xmlns:s="http://www.w3.org/2001/XMLSchema"

+             xmlns:tns="http://xmlsoap.org/Ping"

+             xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"

+             xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"

+             xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"

+             targetNamespace="http://xmlsoap.org/Ping"

+             xmlns="http://schemas.xmlsoap.org/wsdl/">

+    <types>

+        <s:schema elementFormDefault="qualified" targetNamespace="http://xmlsoap.org/Ping">

+            <s:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/>

+            <s:element name="Ping" nillable="true" type="tns:ping"/>

+            <s:complexType name="ping">

+                <s:sequence>

+                    <s:element minOccurs="0" maxOccurs="1" name="ticket" type="tns:ticketType"/>

+                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+            <s:complexType name="ticketType">

+                <s:simpleContent>

+                    <s:extension base="s:string">

+                        <s:attribute ref="s1:Id"/>

+                    </s:extension>

+                </s:simpleContent>

+            </s:complexType>

+            <s:element name="PingResponse" nillable="true" type="tns:pingResponse"/>

+            <s:complexType name="pingResponse">

+                <s:sequence>

+                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>

+                </s:sequence>

+            </s:complexType>

+        </s:schema>

+        <s:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

+            <s:attribute name="Id" type="s:string"/>

+        </s:schema>

+    </types>

+    <message name="PingRequest">

+        <part name="ping" element="tns:Ping"/>

+    </message>

+    <message name="PingResponse">

+        <part name="pingResponse" element="tns:PingResponse"/>

+    </message>

+    <portType name="PingPort">

+        <operation name="Ping">

+            <input message="tns:PingRequest"/>

+            <output message="tns:PingResponse"/>

+        </operation>

+    </portType>

+    <!-- Bindings are removed -->

+</definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/ping.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/ping.wsdl
new file mode 100644
index 0000000..5b72950
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/ping.wsdl
@@ -0,0 +1,99 @@
+<definitions xmlns:s1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
+             xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+             xmlns:s="http://www.w3.org/2001/XMLSchema"
+             xmlns:tns="http://xmlsoap.org/Ping"
+             xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+             xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
+             xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+             targetNamespace="http://xmlsoap.org/Ping"
+             xmlns="http://schemas.xmlsoap.org/wsdl/">
+    <types>
+        <s:schema elementFormDefault="qualified" targetNamespace="http://xmlsoap.org/Ping">
+            <s:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/>
+            <s:element name="Ping" nillable="true" type="tns:ping"/>
+            <s:complexType name="ping">
+                <s:sequence>
+                    <s:element minOccurs="0" maxOccurs="1" name="ticket" type="tns:ticketType"/>
+                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>
+                </s:sequence>
+            </s:complexType>
+            <s:complexType name="ticketType">
+                <s:simpleContent>
+                    <s:extension base="s:string">
+                        <s:attribute ref="s1:Id"/>
+                    </s:extension>
+                </s:simpleContent>
+            </s:complexType>
+            <s:element name="PingResponse" nillable="true" type="tns:pingResponse"/>
+            <s:complexType name="pingResponse">
+                <s:sequence>
+                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>
+                </s:sequence>
+            </s:complexType>
+        </s:schema>
+        <s:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
+            <s:attribute name="Id" type="s:string"/>
+        </s:schema>
+    </types>
+    <message name="PingRequest">
+        <part name="ping" element="tns:Ping"/>
+    </message>
+    <message name="PingResponse">
+        <part name="pingResponse" element="tns:PingResponse"/>
+    </message>
+    <portType name="PingPort">
+        <operation name="Ping">
+            <input message="tns:PingRequest"/>
+            <output message="tns:PingResponse"/>
+        </operation>
+    </portType>
+    <binding name="PingBinding" type="tns:PingPort">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <operation name="Ping">
+            <soap:operation soapAction="Ping" style="document"/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="PingService">
+        <port name="Ping1" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/Ping1"/>
+        </port>
+        <port name="Ping2" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/Ping2"/>
+        </port>
+        <port name="Ping2a" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/Ping2a"/>
+        </port>
+        <port name="Ping3" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/Ping3"/>
+        </port>
+        <port name="Ping4" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/Ping4"/>
+        </port>
+        <port name="Ping5" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/Ping5"/>
+        </port>
+        <port name="Ping6" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/Ping6"/>
+        </port>
+        <port name="Ping7" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/Ping7"/>
+        </port>
+        <port name="STPing1" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/STPing1"/>
+        </port>
+        <port name="STPing3" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/STPing3"/>
+        </port>
+        <port name="STPing4" binding="tns:PingBinding">
+            <soap:address location="http://localhost:9080/pingservice/STPing4"/>
+        </port>
+        
+    </service>
+</definitions>
diff --git a/rampart_1_1/modules/xmlbeans/test-resources/simple-doc-literal.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/simple-doc-literal.wsdl
new file mode 100755
index 0000000..2785b0d
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/simple-doc-literal.wsdl
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions

+    xmlns="http://schemas.xmlsoap.org/wsdl/"

+    xmlns:tns="http://soapinterop.org/wsdl"

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+    xmlns:ns2="http://soapinterop.org/types"

+    xmlns:ns3="http://soapinterop.org/types/part"

+    xmlns:ns4="http://soapinterop.org/types/requestresponse"

+    targetNamespace="http://soapinterop.org/wsdl">

+    <types>

+        <schema

+            xmlns="http://www.w3.org/2001/XMLSchema"

+            xmlns:tns="http://soapinterop.org/types"

+            targetNamespace="http://soapinterop.org/types">

+

+            <complexType name="ArrayOfString">

+                <sequence>

+                    <element name="value" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>

+                </sequence>

+            </complexType>

+

+            <complexType name="ArrayOfInt">

+                <sequence>

+                    <element name="value" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>

+                </sequence>

+            </complexType>

+

+            <complexType name="ArrayOfFloat">

+                <sequence>

+                    <element name="value" minOccurs="0" maxOccurs="unbounded" type="xsd:float"/>

+                </sequence>

+            </complexType>

+

+            <simpleType name="Enum">

+                <restriction base="xsd:int">

+                    <enumeration value="1"/>

+                    <enumeration value="2"/>

+                </restriction>

+            </simpleType>

+

+        </schema>

+

+        <schema

+            xmlns="http://www.w3.org/2001/XMLSchema"

+            xmlns:tns="http://soapinterop.org/types/part"

+            targetNamespace="http://soapinterop.org/types/part">

+

+            <element name="EmptyPart">

+                <complexType/>

+            </element>

+

+            <element name="StringPart" type="xsd:string"/>

+            <element name="IntPart" type="xsd:int"/>

+            <element name="FloatPart" type="xsd:float"/>

+            <element name="ArrayOfStringPart" type="ns2:ArrayOfString"/>

+            <element name="ArrayOfIntPart" type="ns2:ArrayOfInt"/>

+            <element name="ArrayOfFloatPart" type="ns2:ArrayOfFloat"/>

+            <element name="String2Part" type="xsd:string"/>

+            <element name="EnumPart" type="ns2:Enum"/>

+

+        </schema>

+

+        <schema

+            xmlns="http://www.w3.org/2001/XMLSchema"

+            xmlns:tns="http://soapinterop.org/types/requestresponse"

+            targetNamespace="http://soapinterop.org/types/requestresponse">

+

+            <element name="echoEmptyFaultRequest">

+                <complexType/>

+            </element>

+            <element name="echoEmptyFaultResponse">

+                <complexType/>

+            </element>

+

+            <element name="echoStringFaultRequest" type="xsd:string"/>

+            <element name="echoStringFaultResponse">

+                <complexType/>

+            </element>

+

+            <element name="echoIntArrayFaultRequest" type="ns2:ArrayOfInt"/>

+            <element name="echoIntArrayFaultResponse">

+                <complexType/>

+            </element>

+

+            <element name="echoMultipleFaults1Request">

+                <complexType>

+                    <sequence>

+                        <element name="whichFault" type="xsd:int"/>

+                        <element name="param1" type="xsd:string"/>

+                        <element name="param2" type="ns2:ArrayOfFloat"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoMultipleFaults1Response">

+                <complexType/>

+            </element>

+

+            <element name="echoMultipleFaults2Request">

+                <complexType>

+                    <sequence>

+                        <element name="whichFault" type="xsd:int"/>

+                        <element name="param1" type="xsd:string"/>

+                        <element name="param2" type="xsd:float"/>

+                        <element name="param3" type="ns2:ArrayOfString"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoMultipleFaults2Response">

+                <complexType/>

+            </element>

+

+            <element name="echoMultipleFaults3Request">

+                <complexType>

+                    <sequence>

+                        <element name="whichFault" type="xsd:int"/>

+                        <element name="param1" type="xsd:string"/>

+                        <element name="param2" type="xsd:string"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoMultipleFaults3Response">

+                <complexType/>

+            </element>

+

+            <element name="echoMultipleFaults4Request">

+                <complexType>

+                    <sequence>

+                        <element name="whichFault" type="xsd:int"/>

+                        <element name="param1" type="xsd:int"/>

+                        <element name="param2" type="ns2:Enum"/>

+                    </sequence>

+                </complexType>

+            </element>

+            <element name="echoMultipleFaults4Response">

+                <complexType/>

+            </element>

+

+        </schema>

+    </types>

+

+    <message name="echoEmptyFaultRequest">

+        <part name="param" element="ns4:echoEmptyFaultRequest"/>

+    </message>

+    <message name="echoEmptyFaultResponse">

+        <part name="param" element="ns4:echoEmptyFaultResponse"/>

+    </message>

+

+    <message name="echoStringFaultRequest">

+        <part name="param" element="ns4:echoStringFaultRequest"/>

+    </message>

+    <message name="echoStringFaultResponse">

+        <part name="param" element="ns4:echoStringFaultResponse"/>

+    </message>

+

+    <message name="echoIntArrayFaultRequest">

+        <part name="param" element="ns4:echoIntArrayFaultRequest"/>

+    </message>

+    <message name="echoIntArrayFaultResponse">

+        <part name="param" element="ns4:echoIntArrayFaultResponse"/>

+    </message>

+

+    <message name="echoMultipleFaults1Request">

+        <part name="param" element="ns4:echoMultipleFaults1Request"/>

+    </message>

+    <message name="echoMultipleFaults1Response">

+        <part name="param" element="ns4:echoMultipleFaults1Response"/>

+    </message>

+

+    <message name="echoMultipleFaults2Request">

+        <part name="param" element="ns4:echoMultipleFaults2Request"/>

+    </message>

+    <message name="echoMultipleFaults2Response">

+        <part name="param" element="ns4:echoMultipleFaults2Response"/>

+    </message>

+

+    <message name="echoMultipleFaults3Request">

+        <part name="param" element="ns4:echoMultipleFaults3Request"/>

+    </message>

+    <message name="echoMultipleFaults3Response">

+        <part name="param" element="ns4:echoMultipleFaults3Response"/>

+    </message>

+

+    <message name="echoMultipleFaults4Request">

+        <part name="param" element="ns4:echoMultipleFaults4Request"/>

+    </message>

+    <message name="echoMultipleFaults4Response">

+        <part name="param" element="ns4:echoMultipleFaults4Response"/>

+    </message>

+

+    <!-- Fault messages -->

+    <message name="EmptyFault">

+        <part name="part1" element="ns3:EmptyPart"/>

+    </message>

+    <message name="StringFault">

+        <part name="part2" element="ns3:StringPart"/>

+    </message>

+    <message name="IntFault">

+        <part name="part3" element="ns3:IntPart"/>

+    </message>

+    <message name="FloatFault">

+        <part name="part4" element="ns3:FloatPart"/>

+    </message>

+    <message name="StringArrayFault">

+        <part name="part5" element="ns3:ArrayOfStringPart"/>

+    </message>

+    <message name="IntArrayFault">

+        <part name="part6" element="ns3:ArrayOfIntPart"/>

+    </message>

+    <message name="FloatArrayFault">

+        <part name="part7" element="ns3:ArrayOfFloatPart"/>

+    </message>

+    <!--

+        Part name same as in Fault2 message

+    -->

+    <message name="String2Fault">

+        <part name="part2" element="ns3:String2Part"/>

+    </message>

+    <message name="EnumFault">

+        <part name="part9" element="ns3:EnumPart"/>

+    </message>

+

+    <portType name="SimpleDocLitPortType">

+        <!--

+            Throws an empty fault

+        -->

+        <operation name="echoEmptyFault" parameterOrder="">

+            <input message="tns:echoEmptyFaultRequest"/>

+            <output message="tns:echoEmptyFaultResponse"/>

+            <fault name="SimpleFault" message="tns:EmptyFault"/>

+        </operation>

+

+        <!--

+            Throws fault with xsd:string parameter

+        -->

+        <operation name="echoStringFault" parameterOrder="param">

+            <input message="tns:echoStringFaultRequest"/>

+            <output message="tns:echoStringFaultResponse"/>

+            <fault name="SimpleFault" message="tns:StringFault"/>

+        </operation>

+

+        <!--

+            Throws fault with xsd:int[] parameter

+        -->

+        <operation name="echoIntArrayFault" parameterOrder="param">

+            <input message="tns:echoIntArrayFaultRequest"/>

+            <output message="tns:echoIntArrayFaultResponse"/>

+            <fault name="SimpleFault" message="tns:IntArrayFault"/>

+        </operation>

+

+        <!--

+            Throws empty fault, fault with a xsd:string

+            parameter and fault with xsd:float[] parameter

+        -->

+        <operation name="echoMultipleFaults1" parameterOrder="param">

+            <input message="tns:echoMultipleFaults1Request"/>

+            <output message="tns:echoMultipleFaults1Response"/>

+            <fault name="SimpleFault1" message="tns:EmptyFault"/>

+            <fault name="SimpleFault2" message="tns:StringFault"/>

+            <fault name="SimpleFault3" message="tns:FloatArrayFault"/>

+        </operation>

+

+        <!--

+            Throws fault with xsd:string parameter, fault with

+            xsd:float parameter and fault with xsd:string[]

+            parameters

+        -->

+        <operation name="echoMultipleFaults2" parameterOrder="param">

+            <input message="tns:echoMultipleFaults2Request"/>

+            <output message="tns:echoMultipleFaults2Response"/>

+            <fault name="SimpleFault1" message="tns:StringFault"/>

+            <fault name="SimpleFault2" message="tns:FloatFault"/>

+            <fault name="SimpleFault3" message="tns:StringArrayFault"/>

+        </operation>

+

+        <!--

+            Throws two faults, each with xsd:string parameters

+            and same part names

+        -->

+        <operation name="echoMultipleFaults3" parameterOrder="param">

+            <input message="tns:echoMultipleFaults3Request"/>

+            <output message="tns:echoMultipleFaults3Response"/>

+            <fault name="SimpleFault1" message="tns:StringFault"/>

+            <fault name="SimpleFault2" message="tns:String2Fault"/>

+        </operation>

+

+        <!--

+            Throws fault with xsd:int parameter and fault with an

+            int enumeration parameter

+        -->

+        <operation name="echoMultipleFaults4" parameterOrder="param">

+            <input message="tns:echoMultipleFaults4Request"/>

+            <output message="tns:echoMultipleFaults4Response"/>

+            <fault name="SimpleFault1" message="tns:IntFault"/>

+            <fault name="SimpleFault2" message="tns:EnumFault"/>

+        </operation>

+    </portType>

+

+    <binding name="SimpleDocLitBinding" type="tns:SimpleDocLitPortType">

+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+

+        <operation name="echoEmptyFault">

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+            <fault name="SimpleFault">

+                <soap:fault use="literal"/>

+            </fault>

+            <soap:operation soapAction="http://soapinterop.org/r4/groupg/"/>

+        </operation>

+

+        <operation name="echoStringFault">

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+            <fault name="SimpleFault">

+                <soap:fault use="literal"/>

+            </fault>

+            <soap:operation soapAction="http://soapinterop.org/r4/groupg/"/>

+        </operation>

+

+        <operation name="echoIntArrayFault">

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+            <fault name="SimpleFault">

+                <soap:fault use="literal"/>

+            </fault>

+            <soap:operation soapAction="http://soapinterop.org/r4/groupg/"/>

+        </operation>

+

+        <operation name="echoMultipleFaults1">

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+            <fault name="SimpleFault1">

+                <soap:fault use="literal"/>

+            </fault>

+            <fault name="SimpleFault2">

+                <soap:fault use="literal"/>

+            </fault>

+            <fault name="SimpleFault3">

+                <soap:fault use="literal"/>

+            </fault>

+            <soap:operation soapAction="http://soapinterop.org/r4/groupg/"/>

+        </operation>

+

+        <operation name="echoMultipleFaults2">

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+            <fault name="SimpleFault1">

+                <soap:fault use="literal"/>

+            </fault>

+            <fault name="SimpleFault2">

+                <soap:fault use="literal"/>

+            </fault>

+            <fault name="SimpleFault3">

+                <soap:fault use="literal"/>

+            </fault>

+            <soap:operation soapAction="http://soapinterop.org/r4/groupg/"/>

+        </operation>

+

+        <operation name="echoMultipleFaults3">

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+            <fault name="SimpleFault1">

+                <soap:fault use="literal"/>

+            </fault>

+            <fault name="SimpleFault2">

+                <soap:fault use="literal"/>

+            </fault>

+            <soap:operation soapAction="http://soapinterop.org/r4/groupg/"/>

+        </operation>

+

+        <operation name="echoMultipleFaults4">

+            <input>

+                <soap:body use="literal"/>

+            </input>

+            <output>

+                <soap:body use="literal"/>

+            </output>

+            <fault name="SimpleFault1">

+                <soap:fault use="literal"/>

+            </fault>

+            <fault name="SimpleFault2">

+                <soap:fault use="literal"/>

+            </fault>

+            <soap:operation soapAction="http://soapinterop.org/r4/groupg/"/>

+        </operation>

+

+    </binding>

+

+    <service name="SimpleDocLitService">

+        <port name="SimpleDocLitPort" binding="tns:SimpleDocLitBinding">

+            <soap:address

+                location="http://localhost:8080/axis/services/SimpleDocLitPort"/>

+        </port>

+    </service>

+</definitions>

+

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/unreferenced.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/unreferenced.wsdl
new file mode 100644
index 0000000..99a113f
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/unreferenced.wsdl
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions

+	xmlns="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:tns="http://soapinterop.org/wsdl"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+	xmlns:ns2="http://soapinterop.org/types"

+	xmlns:ns3="http://soapinterop.org/types/part"

+	xmlns:ns4="http://soapinterop.org/types/requestresponse"

+	targetNamespace="http://soapinterop.org/wsdl">

+

+	<types>

+		<schema

+			xmlns="http://www.w3.org/2001/XMLSchema"

+			xmlns:tns="http://soapinterop.org/types"

+			targetNamespace="http://soapinterop.org/types">

+

+			<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

+

+			<complexType name="SOAPStruct">

+				<sequence>

+					<element name="varString" type="xsd:string"/>

+					<element name="varInt" type="xsd:int"/>

+					<element name="varFloat" type="xsd:float"/>

+				</sequence>

+			</complexType>

+

+			<complexType name="SOAPStructFault">

+				<sequence>

+					<element name="soapStruct" type="tns:SOAPStruct"/>

+				</sequence>

+			</complexType>

+

+			<complexType name="BaseStruct">

+				<sequence>

+					<element name="structMessage" type="tns:SOAPStruct"/>

+					<element name="shortMessage" type="xsd:short"/>

+				</sequence>

+			</complexType>

+

+			<complexType name="ExtendedStruct">

+				<complexContent>

+					<extension base="tns:BaseStruct">

+						<sequence>

+							<element name="stringMessage" type="xsd:string"/>

+							<element name="intMessage" type="xsd:int"/>

+							<element name="anotherIntMessage" type="xsd:int"/>

+						</sequence>

+					</extension>

+				</complexContent>

+			</complexType>

+

+			<complexType name="MoreExtendedStruct">

+				<complexContent>

+					<extension base="tns:ExtendedStruct">

+						<sequence>

+							<element name="booleanMessage" type="xsd:boolean"/>

+						</sequence>

+					</extension>

+				</complexContent>

+			</complexType>

+

+		</schema>

+

+		<schema

+			xmlns="http://www.w3.org/2001/XMLSchema"

+			xmlns:tns="http://soapinterop.org/types/part"

+			targetNamespace="http://soapinterop.org/types/part">

+

+			<element name="SOAPStructFaultPart" type="ns2:SOAPStructFault"/>

+			<element name="BaseStructPart" type="ns2:BaseStruct"/>

+			<element name="ExtendedStructPart" type="ns2:ExtendedStruct"/>

+			<element name="MoreExtendedStructPart" type="ns2:MoreExtendedStruct"/>

+

+		</schema>

+

+		<schema

+			xmlns="http://www.w3.org/2001/XMLSchema"

+			xmlns:tns="http://soapinterop.org/types/requestresponse"

+			targetNamespace="http://soapinterop.org/types/requestresponse">

+

+			<element name="echoSOAPStructFaultRequest" type="ns2:SOAPStruct"/>

+			<element name="echoSOAPStructFaultResponse">

+				<complexType/>

+			</element>

+

+			<element name="echoBaseStructFaultRequest" type="ns2:BaseStruct"/>

+			<element name="echoBaseStructFaultResponse">

+				<complexType/>

+			</element>

+

+			<element name="echoExtendedStructFaultRequest" type="ns2:ExtendedStruct"/>

+			<element name="echoExtendedStructFaultResponse">

+				<complexType/>

+			</element>

+

+			<element name="echoMultipleFaults1Request">

+				<complexType>

+					<sequence>

+						<element name="whichFault" type="xsd:int"/>

+						<element name="param1" type="ns2:SOAPStruct"/>

+						<element name="param2" type="ns2:BaseStruct"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoMultipleFaults1Response">

+				<complexType/>

+			</element>

+

+			<element name="echoMultipleFaults2Request">

+				<complexType>

+					<sequence>

+						<element name="whichFault" type="xsd:int"/>

+						<element name="param1" type="ns2:BaseStruct"/>

+						<element name="param2" type="ns2:ExtendedStruct"/>

+						<element name="param3" type="ns2:MoreExtendedStruct"/>

+					</sequence>

+				</complexType>

+			</element>

+			<element name="echoMultipleFaults2Response">

+				<complexType/>

+			</element>

+

+		</schema>

+	</types>

+

+    <!-- Some part references are  misspelled-->

+    <message name="echoSOAPStructFaultRequest">

+		<part name="param" element="ns4:echoSOAPStructFaultRequest1"/>

+	</message>

+	<message name="echoSOAPStructFaultResponse">

+		<part name="param" element="ns4:echoSOAPStructFaultResponse2"/>

+	</message>

+

+	<message name="echoBaseStructFaultRequest">

+		<part name="param" element="ns4:echoBaseStructFaultRequest1"/>

+	</message>

+	<message name="echoBaseStructFaultResponse">

+		<part name="param" element="ns4:echoBaseStructFaultResponse"/>

+	</message>

+

+	<message name="echoExtendedStructFaultRequest">

+		<part name="param" element="ns4:echoExtendedStructFaultRequest"/>

+	</message>

+	<message name="echoExtendedStructFaultResponse">

+		<part name="param" element="ns4:echoExtendedStructFaultResponse"/>

+	</message>

+

+	<message name="echoMultipleFaults1Request">

+		<part name="param" element="ns4:echoMultipleFaults1Request"/>

+	</message>

+	<message name="echoMultipleFaults1Response">

+		<part name="param" element="ns4:echoMultipleFaults1Response"/>

+	</message>

+

+	<message name="echoMultipleFaults2Request">

+		<part name="param" element="ns4:echoMultipleFaults2Request"/>

+	</message>

+	<message name="echoMultipleFaults2Response">

+		<part name="param" element="ns4:echoMultipleFaults2Response"/>

+	</message>

+

+	<!-- Fault messages -->

+	<message name="SOAPStructFault">

+		<part name="part3" element="ns3:SOAPStructFaultPart"/>

+	</message>

+	<message name="BaseStructFault">

+		<part name="part1" element="ns3:BaseStructPart"/>

+	</message>

+	<message name="ExtendedStructFault">

+		<part name="part2" element="ns3:ExtendedStructPart"/>

+	</message>

+	<message name="MoreExtendedStructFault">

+		<part name="part5" element="ns3:MoreExtendedStructPart"/>

+	</message>

+

+	<portType name="ComplexDocLitPortType">

+		<!--

+			Throws a fault with an embedded SOAPStruct

+		-->

+		<operation name="echoSOAPStructFault" parameterOrder="">

+			<input message="tns:echoSOAPStructFaultRequest"/>

+			<output message="tns:echoSOAPStructFaultResponse"/>

+			<fault name="ComplexFault" message="tns:SOAPStructFault"/>

+		</operation>

+

+		<!--

+			Throws a fault with a base complex struct

+		-->

+		<operation name="echoBaseStructFault" parameterOrder="">

+			<input message="tns:echoBaseStructFaultRequest"/>

+			<output message="tns:echoBaseStructFaultResponse"/>

+			<fault name="ComplexFault" message="tns:BaseStructFault"/>

+		</operation>

+

+		<!--

+			Throws a fault with an en extended complex type

+		-->

+		<operation name="echoExtendedStructFault" parameterOrder="">

+			<input message="tns:echoExtendedStructFaultRequest"/>

+			<output message="tns:echoExtendedStructFaultResponse"/>

+			<fault name="ComplexFault" message="tns:ExtendedStructFault"/>

+		</operation>

+

+		<!--

+			Throws a fault with embedded complex type, fault with an

+			extended complex type and fault with an array of a base

+			complex type

+		-->

+		<operation name="echoMultipleFaults1" parameterOrder="param">

+			<input message="tns:echoMultipleFaults1Request"/>

+			<output message="tns:echoMultipleFaults1Response"/>

+			<fault name="ComplexFault1" message="tns:SOAPStructFault"/>

+			<fault name="ComplexFault2" message="tns:BaseStructFault"/>

+		</operation>

+

+		<!--

+			Throws a fault with an array of base complex type and

+			a fault with doubly extended complex type

+		-->

+		<operation name="echoMultipleFaults2" parameterOrder="param">

+			<input message="tns:echoMultipleFaults2Request"/>

+			<output message="tns:echoMultipleFaults2Response"/>

+			<fault name="ComplexFault1" message="tns:BaseStructFault"/>

+			<fault name="ComplexFault2" message="tns:ExtendedStructFault"/>

+			<fault name="ComplexFault3" message="tns:MoreExtendedStructFault"/>

+		</operation>

+	</portType>

+

+	<binding name="ComplexDocLitBinding" type="tns:ComplexDocLitPortType">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<operation name="echoSOAPStructFault">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault">

+				<soap:fault

+					name="ComplexFault"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+

+		<operation name="echoBaseStructFault">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault">

+				<soap:fault

+					name="ComplexFault"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+

+		<operation name="echoExtendedStructFault">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault">

+				<soap:fault

+					name="ComplexFault"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+

+		<operation name="echoMultipleFaults1">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault1">

+				<soap:fault 

+					name="ComplexFault1"

+					use="literal"/>

+			</fault>

+			<fault name="ComplexFault2">

+				<soap:fault

+					name="ComplexFault2"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+

+		<operation name="echoMultipleFaults2">

+			<input>

+				<soap:body use="literal"/>

+			</input>

+			<output>

+				<soap:body use="literal"/>

+			</output>

+			<fault name="ComplexFault1">

+				<soap:fault

+					name="ComplexFault1"

+					use="literal"/>

+			</fault>

+			<fault name="ComplexFault2">

+				<soap:fault 

+					name="ComplexFault2"

+					use="literal"/>

+			</fault>

+			<fault name="ComplexFault3">

+				<soap:fault 

+					name="ComplexFault3"

+					use="literal"/>

+			</fault>

+			<soap:operation soapAction=""/>

+		</operation>

+	</binding>

+

+	<service name="ComplexDocLitService">

+		<port name="ComplexDocLitPort" binding="tns:ComplexDocLitBinding">

+			<soap:address

+				location="http://localhost:8080/axis/services/ComplexDocLitPort"/>

+		</port>

+	</service>

+</definitions>

+

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/wsat.wsdl b/rampart_1_1/modules/xmlbeans/test-resources/wsat.wsdl
new file mode 100644
index 0000000..00aef9a
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/wsat.wsdl
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- 

+Legal Disclaimer

+

+The presentation, distribution or other dissemination of the information 

+contained in this specification is not a license, either expressly or impliedly, 

+to any intellectual property owned or controlled by BEA or IBM or Microsoft and\or any other 

+third party.  BEA and IBM and Microsoft and\or any other third party may have patents, patent 

+applications, trademarks, copyrights, or other intellectual property rights 

+covering subject matter in this document.  The furnishing of this document 

+does not give you any license to BEA's and IBM's and Microsoft's or any other third party's patents, trademarks, copyrights, or other intellectual property.

+

+This specification and the information contained herein is provided on an "AS IS"

+ basis and to the maximum extent permitted by applicable law, BEA and IBM and Microsoft provides 

+the document AS IS AND WITH ALL FAULTS, and hereby disclaims all other warranties 

+and conditions, either express, implied or statutory, including, but not limited 

+to, any (if any) implied warranties, duties or conditions of merchantability, of 

+fitness for a particular purpose, of accuracy or completeness of responses, of 

+results, of workmanlike effort, of lack of viruses, and of lack of negligence, 

+all with regard to the document. ALSO, THERE IS NO WARRANTY OR CONDITION OF 

+TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR 

+NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE DOCUMENT.

+

+IN NO EVENT WILL BEA or IBM or MICROSOFT BE LIABLE TO ANY OTHER PARTY FOR THE COST OF PROCURING 

+SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, LOSS OF DATA, OR ANY 

+INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER 

+CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY 

+OTHER AGREEMENT RELATING TO THIS DOCUMENT, WHETHER OR NOT SUCH PARTY HAD ADVANCE 

+NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.

+

+Copyright Notice

+

+Copyright 2001, 2002 BEA Systems and IBM Corporation and Microsoft Corporation. All rights reserved.

+-->

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsat="http://schemas.xmlsoap.org/ws/2003/09/wsat" targetNamespace="http://schemas.xmlsoap.org/ws/2003/09/wsat">

+	<wsdl:import namespace="http://schemas.xmlsoap.org/ws/2003/09/wsat" location="wsat.xsd"/>

+	<!-- location="http://schemas.xmlsoap.org/ws/2003/09/wsat" -->

+	<!-- Messages -->

+	<wsdl:message name="Prepare">

+		<wsdl:part name="parameters" element="wsat:Prepare"/>

+	</wsdl:message>

+	<wsdl:message name="Prepared">

+		<wsdl:part name="parameters" element="wsat:Prepared"/>

+	</wsdl:message>

+	<wsdl:message name="Aborted">

+		<wsdl:part name="parameters" element="wsat:Aborted"/>

+	</wsdl:message>

+	<wsdl:message name="ReadOnly">

+		<wsdl:part name="parameters" element="wsat:ReadOnly"/>

+	</wsdl:message>

+	<wsdl:message name="Commit">

+		<wsdl:part name="parameters" element="wsat:Commit"/>

+	</wsdl:message>

+	<wsdl:message name="Rollback">

+		<wsdl:part name="parameters" element="wsat:Rollback"/>

+	</wsdl:message>

+	<wsdl:message name="Committed">

+		<wsdl:part name="parameters" element="wsat:Committed"/>

+	</wsdl:message>

+	<wsdl:message name="Replay">

+		<wsdl:part name="parameters" element="wsat:Replay"/>

+	</wsdl:message>

+	<wsdl:message name="PrepareResponse">

+		<wsdl:part name="parameters" element="wsat:PrepareResponse"/>

+	</wsdl:message>

+	<wsdl:message name="ReplayResponse">

+		<wsdl:part name="parameters" element="wsat:ReplayResponse"/>

+	</wsdl:message>

+	<!-- Mandatory Asynchronous Messaging PortTypes -->

+	<wsdl:portType name="CompletionCoordinatorPortType">

+		<wsdl:operation name="CommitOperation">

+			<wsdl:input message="wsat:Commit"/>

+		</wsdl:operation>

+		<wsdl:operation name="RollbackOperation">

+			<wsdl:input message="wsat:Rollback"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:portType name="CompletionInitiatorPortType">

+		<wsdl:operation name="CommittedOperation">

+			<wsdl:input message="wsat:Committed"/>

+		</wsdl:operation>

+		<wsdl:operation name="AbortedOperation">

+			<wsdl:input message="wsat:Aborted"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:portType name="CoordinatorPortType">

+		<wsdl:operation name="PreparedOperation">

+			<wsdl:input message="wsat:Prepared"/>

+		</wsdl:operation>

+		<wsdl:operation name="AbortedOperation">

+			<wsdl:input message="wsat:Aborted"/>

+		</wsdl:operation>

+		<wsdl:operation name="ReadOnlyOperation">

+			<wsdl:input message="wsat:ReadOnly"/>

+		</wsdl:operation>

+		<wsdl:operation name="CommittedOperation">

+			<wsdl:input message="wsat:Committed"/>

+		</wsdl:operation>

+		<wsdl:operation name="ReplayOperation">

+			<wsdl:input message="wsat:Replay"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:portType name="ParticipantPortType">

+		<wsdl:operation name="PrepareOperation">

+			<wsdl:input message="wsat:Prepare"/>

+		</wsdl:operation>

+		<wsdl:operation name="CommitOperation">

+			<wsdl:input message="wsat:Commit"/>

+		</wsdl:operation>

+		<wsdl:operation name="RollbackOperation">

+			<wsdl:input message="wsat:Rollback"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<!-- Optional Syncronous RPC Port Types -->

+	<wsdl:portType name="CompletionPortTypeRPC">

+		<wsdl:operation name="CommitOperation">

+			<wsdl:input message="wsat:Commit"/>

+			<wsdl:output message="wsat:Committed"/>

+		</wsdl:operation>

+		<wsdl:operation name="RollbackOperation">

+			<wsdl:input message="wsat:Rollback"/>

+			<wsdl:output message="wsat:Aborted"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:portType name="ParticipantPortTypeRPC">

+		<wsdl:operation name="PrepareOperation">

+			<wsdl:input message="wsat:Prepare"/>

+			<wsdl:output message="wsat:PrepareResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="CommitOperation">

+			<wsdl:input message="wsat:Commit"/>

+			<wsdl:output message="wsat:Committed"/>

+		</wsdl:operation>

+		<wsdl:operation name="RollbackOperation">

+			<wsdl:input message="wsat:Rollback"/>

+			<wsdl:output message="wsat:Aborted"/>

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:portType name="CoordinatorPortTypeRPC">

+		<wsdl:operation name="ReplayOperation">

+			<wsdl:input message="wsat:Replay"/>

+			<wsdl:output message="wsat:ReplayResponse"/>

+		</wsdl:operation>

+		<wsdl:operation name="AbortedOperation">

+			<wsdl:input message="wsat:Aborted"/>

+		</wsdl:operation>

+		<wsdl:operation name="ReadOnlyOperation">

+			<wsdl:input message="wsat:ReadOnly"/>

+		</wsdl:operation>

+	</wsdl:portType>

+

+<!--

+

+<wsdl:binding name="CompletionCoordinatorPortTypeBinding" type="wsat:CompletionCoordinatorPortType">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<wsdl:operation name="CommitOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+		<wsdl:operation name="RollbackOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+</wsdl:binding>

+<wsdl:binding name="CompletionInitiatorPortTypeBinding" type="wsat:CompletionInitiatorPortType">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<wsdl:operation name="CommittedOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+		<wsdl:operation name="AbortedOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+</wsdl:binding>

+<wsdl:binding name="CoordinatorPortTypeBinding" type="wsat:CoordinatorPortType">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<wsdl:operation name="PreparedOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+		<wsdl:operation name="AbortedOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+		<wsdl:operation name="ReadOnlyOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+		<wsdl:operation name="CommittedOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+		<wsdl:operation name="ReplayOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+</wsdl:binding>

+<wsdl:binding name="ParticipantPortTypeBinding" type="wsat:ParticipantPortType">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<wsdl:operation name="PrepareOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+		<wsdl:operation name="CommitOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+		<wsdl:operation name="RollbackOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+		</wsdl:operation>

+</wsdl:binding>

+

+-->

+

+<wsdl:binding name="CompletionPortTypeRPCBinding" type="wsat:CompletionPortTypeRPC">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<wsdl:operation name="CommitOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="RollbackOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+</wsdl:binding>

+

+<wsdl:binding name="CoordinatorPortTypeRPCBinding" type="wsat:CoordinatorPortTypeRPC">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<wsdl:operation name="ReplayOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="AbortedOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="ReadOnlyOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+</wsdl:binding>

+

+<wsdl:binding name="ParticipantPortTypeRPCBinding" type="wsat:ParticipantPortTypeRPC">

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

+		<wsdl:operation name="PrepareOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="CommitOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+		<wsdl:operation name="RollbackOperation">

+			<soap:operation soapAction="http://xxx"/>

+			<wsdl:input>

+				<soap:body use="literal"/>

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal"/>

+			</wsdl:output>

+		</wsdl:operation>

+</wsdl:binding>

+

+

+

+<wsdl:service name="xxx">

+<!--

+   		<wsdl:port binding="wsat:CompletionCoordinatorPortTypeBinding" name="CompletionCoordinator">

+      			<soap:address location="http://localhost:8081/axis2/services/CompletionCoordinator"/>

+    		</wsdl:port>

+		<wsdl:port binding="wsat:CompletionInitiatorPortTypeBinding" name="CompletionInitiator">

+      			<soap:address location="http://localhost:8081/axis2/services/CompletionInitiator"/>

+    		</wsdl:port>

+		<wsdl:port binding="wsat:CoordinatorPortTypeBinding" name="Coordinator">

+      			<soap:address location="http://localhost:8081/axis2/services/Coordinator"/>

+    		</wsdl:port>

+		<wsdl:port binding="wsat:ParticipantPortTypeBinding" name="Participant">

+      			<soap:address location="http://localhost:8081/axis2/services/Participant"/>

+    		</wsdl:port>

+-->    		

+		<wsdl:port binding="wsat:ParticipantPortTypeRPCBinding" name="ParticipantRPC">

+      			<soap:address location="http://localhost:8081/axis/services/ParticipantRPC"/>

+   		</wsdl:port>

+		<wsdl:port binding="wsat:CoordinatorPortTypeRPCBinding" name="CoordinatorRPC">

+      			<soap:address location="http://localhost:8081/axis/services/CoordinatorRPC"/>

+   		</wsdl:port>

+		<wsdl:port binding="wsat:CompletionPortTypeRPCBinding" name="CompletionRPC">

+   			<soap:address location="http://localhost:8081/axis/services/CompletionRPC"/>

+   		</wsdl:port>

+</wsdl:service>

+

+</wsdl:definitions>

diff --git a/rampart_1_1/modules/xmlbeans/test-resources/wsat.xsd b/rampart_1_1/modules/xmlbeans/test-resources/wsat.xsd
new file mode 100644
index 0000000..018f1a5
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test-resources/wsat.xsd
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!-- 

+Legal Disclaimer

+

+The presentation, distribution or other dissemination of the information 

+contained in this specification is not a license, either expressly or impliedly, 

+to any intellectual property owned or controlled by BEA or IBM or Microsoft and\or any other 

+third party.  BEA and IBM and Microsoft and\or any other third party may have patents, patent 

+applications, trademarks, copyrights, or other intellectual property rights 

+covering subject matter in this document.  The furnishing of this document 

+does not give you any license to BEA's and IBM's and Microsoft's or any other third party's patents, 

+trademarks, copyrights, or other intellectual property.

+

+This specification and the information contained herein is provided on an "AS IS"

+ basis and to the maximum extent permitted by applicable law, BEA and IBM and Microsoft provides 

+the document AS IS AND WITH ALL FAULTS, and hereby disclaims all other warranties 

+and conditions, either express, implied or statutory, including, but not limited 

+to, any (if any) implied warranties, duties or conditions of merchantability, of 

+fitness for a particular purpose, of accuracy or completeness of responses, of 

+results, of workmanlike effort, of lack of viruses, and of lack of negligence, 

+all with regard to the document. ALSO, THERE IS NO WARRANTY OR CONDITION OF 

+TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR 

+NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE DOCUMENT.

+

+IN NO EVENT WILL BEA or IBM or MICROSOFT BE LIABLE TO ANY OTHER PARTY FOR THE COST OF PROCURING 

+SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, LOSS OF DATA, OR ANY 

+INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER 

+CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY 

+OTHER AGREEMENT RELATING TO THIS DOCUMENT, WHETHER OR NOT SUCH PARTY HAD ADVANCE 

+NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.

+

+Copyright Notice

+

+Copyright 2001, 2002 BEA Systems and IBM Corporation and Microsoft Corporation. All rights reserved.

+-->

+<xsd:schema targetNamespace="http://schemas.xmlsoap.org/ws/2003/09/wsat" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsat="http://schemas.xmlsoap.org/ws/2003/09/wsat" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

+	<xsd:complexType name="Notification">

+		<xsd:sequence>

+			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

+		</xsd:sequence>

+		<xsd:anyAttribute namespace="##other" processContents="lax"/>

+	</xsd:complexType>

+	<xsd:element name="Prepare" type="wsat:Notification"/>

+	<xsd:element name="Prepared" type="wsat:Notification"/>

+	<xsd:element name="Aborted" type="wsat:Notification"/>

+	<xsd:element name="ReadOnly" type="wsat:Notification"/>

+	<xsd:element name="Commit" type="wsat:Notification"/>

+	<xsd:element name="Rollback" type="wsat:Notification"/>

+	<xsd:element name="Committed" type="wsat:Notification"/>

+	<xsd:element name="Replay" type="wsat:Notification"/>

+	<xsd:simpleType name="Vote">

+		<xsd:restriction base="xsd:string">

+			<xsd:enumeration value="VoteCommit"/>

+			<xsd:enumeration value="VoteRollback"/>

+			<xsd:enumeration value="VoteReadOnly"/>

+		</xsd:restriction>

+	</xsd:simpleType>

+	<xsd:element name="PrepareResponse">

+		<xsd:complexType>

+			<xsd:attribute name="vote" type="wsat:Vote"/>

+		</xsd:complexType>

+	</xsd:element>

+	<xsd:simpleType name="Outcome">

+		<xsd:restriction base="xsd:string">

+			<xsd:enumeration value="Commit"/>

+			<xsd:enumeration value="Rollback"/>

+		</xsd:restriction>

+	</xsd:simpleType>

+	<xsd:element name="ReplayResponse">

+		<xsd:complexType>

+			<xsd:attribute name="outcome" type="wsat:Outcome"/>

+		</xsd:complexType>

+	</xsd:element>

+	<xsd:simpleType name="ErrorCodes">

+		<xsd:restriction base="xsd:QName">

+			<xsd:enumeration value="wsat:InconsistentInternalState"/>

+		</xsd:restriction>

+	</xsd:simpleType>

+</xsd:schema>

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/TestConstants.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/TestConstants.java
new file mode 100644
index 0000000..1bf42a6
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/TestConstants.java
@@ -0,0 +1,34 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class TestConstants {

+

+     public interface LanguageNames {

+        public static final String JAVA = "java";

+        public static final String C_SHARP = "cs";

+        public static final String VB_DOT_NET = "vb";

+        public static final String C_PLUS_PLUS = "cpp";

+

+    }

+

+    public interface Databinding {

+    	public static final String XML_BEANS = "xmlbeans";

+    	public static final String JAXME = "jaxme";

+    	public static final String ADB = "adb";

+        public static final String NONE = "none";

+    }

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java11Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java11Test.java
new file mode 100644
index 0000000..bb80bfc
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java11Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java11Test extends WSDL2JavaSuccessTestBase {

+

+     protected void setUp() throws Exception {

+        this.wsdlFileName =  "mtomecho.wsdl";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java12Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java12Test.java
new file mode 100644
index 0000000..acc0ea7
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java12Test.java
@@ -0,0 +1,31 @@
+package org.apache.axis2.xmlbeans;

+

+import org.apache.axis2.wsdl.codegen.CodeGenerationException;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * Test for the WSDL that's unreferenced type

+ */

+public class WSDL2Java12Test extends WSDL2JavaFailureTestBase {

+

+    protected void setUp() throws Exception {

+        this.wsdlFileName = "unreferenced.wsdl";

+        super.setUp();

+    }

+

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java13Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java13Test.java
new file mode 100644
index 0000000..fe68214
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java13Test.java
@@ -0,0 +1,34 @@
+package org.apache.axis2.xmlbeans;

+

+import org.apache.axis2.wsdl.codegen.CodeGenerationException;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+     * Test for the modified ping-unboond wsdl.

+     * The binding is removed in this wsdl.Codegen should fail for this

+     * WSDL by saying  no binding!

+     *

+     */

+public class WSDL2Java13Test extends WSDL2JavaFailureTestBase {

+

+    protected void setUp() throws Exception {

+        this.wsdlFileName = "ping-unbound.wsdl";

+        super.setUp();

+    }

+

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java1Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java1Test.java
new file mode 100644
index 0000000..7daa085
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java1Test.java
@@ -0,0 +1,26 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java1Test extends WSDL2JavaSuccessTestBase {

+

+    protected void setUp() throws Exception {

+        this.wsdlFileName =  "wsat.wsdl";

+        super.setUp();

+    }

+

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java2Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java2Test.java
new file mode 100644
index 0000000..de0f0c7
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java2Test.java
@@ -0,0 +1,33 @@
+package org.apache.axis2.xmlbeans;

+

+import org.apache.axis2.wsdl.codegen.CodeGenerationException;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+/**

+ * Test for the WSDL that's missing a service

+ * Since we do not permit the clients to be generated when

+ * service is missing, we should get an error

+ */

+public class WSDL2Java2Test extends WSDL2JavaFailureTestBase {

+

+    protected void setUp() throws Exception {

+        this.wsdlFileName = "no-service.wsdl";

+        super.setUp();

+    }

+

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java3Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java3Test.java
new file mode 100644
index 0000000..62d76db
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java3Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java3Test extends WSDL2JavaSuccessTestBase {

+

+     protected void setUp() throws Exception {

+        this.wsdlFileName =  "headers.wsdl";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java4Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java4Test.java
new file mode 100644
index 0000000..561c7cc
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java4Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java4Test extends WSDL2JavaSuccessTestBase {

+

+     protected void setUp() throws Exception {

+        this.wsdlFileName =  "ping.wsdl";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java5Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java5Test.java
new file mode 100644
index 0000000..a38a9ef
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java5Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java5Test extends WSDL2JavaSuccessTestBase {

+

+     protected void setUp() throws Exception {

+        this.wsdlFileName =   "interoptestdoclitparameters.wsdl";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java6Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java6Test.java
new file mode 100644
index 0000000..8e7df8a
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java6Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java6Test extends WSDL2JavaSuccessTestBase {

+

+     protected void setUp() throws Exception {

+        this.wsdlFileName = "mime-doc.wsdl";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java7Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java7Test.java
new file mode 100644
index 0000000..a4507e9
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java7Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java7Test extends WSDL2JavaSuccessTestBase {

+

+     protected void setUp() throws Exception {

+        this.wsdlFileName =  "interoptestdoclit.wsdl";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java8Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java8Test.java
new file mode 100644
index 0000000..485fb61
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java8Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java8Test extends WSDL2JavaSuccessTestBase {

+

+     protected void setUp() throws Exception {

+        this.wsdlFileName =  "simple-doc-literal.wsdl";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java9Test.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java9Test.java
new file mode 100644
index 0000000..5bfd04f
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2Java9Test.java
@@ -0,0 +1,25 @@
+package org.apache.axis2.xmlbeans;

+/*

+ * Copyright 2004,2005 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.

+ */

+

+public class WSDL2Java9Test extends WSDL2JavaSuccessTestBase {

+

+     protected void setUp() throws Exception {

+        this.wsdlFileName =  "complex-doc-literal.wsdl";

+        super.setUp();

+    }

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaFailureTestBase.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaFailureTestBase.java
new file mode 100644
index 0000000..11c347a
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaFailureTestBase.java
@@ -0,0 +1,49 @@
+/*

+ * Copyright 2004,2005 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.axis2.xmlbeans;

+

+import junit.framework.TestCase;

+

+import org.apache.axis2.util.CommandLineOption;

+import org.apache.axis2.util.CommandLineOptionConstants;

+import org.apache.axis2.util.CommandLineOptionParser;

+import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;

+import org.apache.axis2.wsdl.codegen.CodeGenerationException;

+import org.apache.tools.ant.BuildException;

+import org.apache.tools.ant.Project;

+import org.apache.tools.ant.Target;

+import org.apache.tools.ant.taskdefs.Javac;

+import org.apache.tools.ant.types.Path;

+

+import java.io.File;

+import java.util.HashMap;

+import java.util.Map;

+

+public abstract class WSDL2JavaFailureTestBase extends WSDL2JavaSuccessTestBase{

+

+    public void testWSDLFile() {

+        try {

+            generateAndCompile(wsdlFileName, OUTPUT_LOCATION_BASE+OUTPUT_LOCATION_PREFIX+folderCount++);

+            fail("Undesired behavior while code generating!");

+        } catch (CodeGenerationException e) {

+            //we are ok here

+        }

+    }

+

+

+

+}

diff --git a/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaSuccessTestBase.java b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaSuccessTestBase.java
new file mode 100644
index 0000000..cacd908
--- /dev/null
+++ b/rampart_1_1/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaSuccessTestBase.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright 2004,2005 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.axis2.xmlbeans;
+
+import junit.framework.TestCase;
+
+import org.apache.axis2.util.CommandLineOption;
+import org.apache.axis2.util.CommandLineOptionConstants;
+import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.taskdefs.Javac;
+import org.apache.tools.ant.types.Path;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+public abstract class WSDL2JavaSuccessTestBase extends TestCase{
+
+    public static final String OUTPUT_LOCATION_BASE = "./out_put_classes";
+    public static final String OUTPUT_LOCATION_PREFIX = "/test";
+    protected static int folderCount = 0;
+    public static final String WSDL_BASE_DIR = "test-resources/";
+    public static final String CLASSES_DIR = "/target/classes/";
+    private String[] moduleNames={"xml","common","core"};
+    private static final String MODULE_PATH_PREFIX = "../modules/";
+    private static final String COMPILE_TARGET_NAME = "compile";
+
+    protected String wsdlFileName;
+
+    /**
+     * Make the root output directory
+     * @throws Exception
+     */
+    protected void setUp() throws Exception {
+        File outputFile = new File(OUTPUT_LOCATION_BASE);
+        if (outputFile.exists() && outputFile.isDirectory()){
+            deleteDir(outputFile);
+            outputFile.mkdir();
+        }else{
+            outputFile.mkdir();
+        }
+    }
+
+    /**
+     *  Remove the root output directory
+     * @throws Exception
+     */
+    protected void tearDown() throws Exception {
+        File outputFile = new File(OUTPUT_LOCATION_BASE);
+        if (outputFile.exists() && outputFile.isDirectory()){
+            deleteDir(outputFile);
+        }
+    }
+
+    /**
+     * Deletes all files and subdirectories under dir.
+     * Returns true if all deletions were successful.
+     * If a deletion fails, the method stops attempting to delete and returns false.
+     */
+    private boolean deleteDir(File dir) {
+        if (dir.isDirectory()) {
+            String[] children = dir.list();
+            for (int i=0; i<children.length; i++) {
+                boolean success = deleteDir(new File(dir, children[i]));
+                if (!success) {
+                    return false;
+                }
+            }
+        }
+
+        // The directory is now empty so delete it
+        return dir.delete();
+    }
+
+
+    public void testWSDLFile(){
+         try {
+            generateAndCompile(wsdlFileName, OUTPUT_LOCATION_BASE+OUTPUT_LOCATION_PREFIX+folderCount++);
+        } catch (CodeGenerationException e) {
+             e.printStackTrace();
+            fail("Exception while code generation test! " + wsdlFileName + e.getMessage());
+        }
+
+    }
+
+
+
+
+//    /**
+//     * Test for the sales rank and price!
+//     */
+//    public void testCodeGenerationSalesRankNPrice(){
+//        try {
+//            generateAndCompile("SalesRankNPrice.wsdl", OUTPUT_LOCATION_BASE+OUTPUT_LOCATION_PREFIX+folderCount++);
+//        } catch (CodeGenerationException e) {
+//            fail("Exception while code generation test!"+ e.getMessage());
+//        }
+//    }
+
+
+//     /**
+//     * Test for the dime doc
+//     */
+//    public void testCodeGenerationDimeDoc(){
+//
+//        try {
+//            generateAndCompile("dime-doc.wsdl", OUTPUT_LOCATION_BASE+OUTPUT_LOCATION_PREFIX+folderCount++);
+//        } catch (CodeGenerationException e) {
+//            fail("Exception while code generation test!"+ e.getMessage());
+//        }
+//    }
+
+    /**
+     * Test for the modified ping wsdl. it will be the test for the detached schema with only an import
+     * statement
+     */
+//    public void testCodeGenerationPingModified(){
+//
+//        try {
+//            generateAndCompile("ping-modified.wsdl", OUTPUT_LOCATION_BASE+OUTPUT_LOCATION_PREFIX+folderCount++);
+//        } catch (CodeGenerationException e) {
+//            fail("Exception while code generation test!"+ e.getMessage());
+//        }
+//    }
+
+
+    /**
+     *
+     * @param wsdlName
+     * @param outputLocation
+     * @throws CodeGenerationException
+     */
+    protected void generateAndCompile(String wsdlName, String outputLocation) throws CodeGenerationException {
+        codeGenerate(WSDL_BASE_DIR + wsdlName,outputLocation);
+        compile(outputLocation);
+    }
+
+    /**
+     *
+     * @param wsdlFile
+     * @param outputLocation
+     * @throws CodeGenerationException
+     */
+    private void codeGenerate(String wsdlFile,String outputLocation) throws CodeGenerationException {
+        //create the option map
+        Map optionMap = fillOptionMap(wsdlFile,outputLocation);
+        CommandLineOptionParser parser =
+                new CommandLineOptionParser(optionMap);
+        new CodeGenerationEngine(parser).generate();
+    }
+
+    /**
+     *
+     * @param outputLocation
+     */
+    private void compile(String outputLocation){
+        //using the ant javac task for compilation
+        Javac javaCompiler = new Javac();
+        Project codeGenProject = new Project();
+        Target compileTarget = new Target();
+
+        compileTarget.setName(COMPILE_TARGET_NAME);
+        compileTarget.addTask(javaCompiler);
+        codeGenProject.addTarget(compileTarget);
+        codeGenProject.setSystemProperties();
+        javaCompiler.setProject(codeGenProject);
+        javaCompiler.setIncludejavaruntime(true);
+        javaCompiler.setIncludeantruntime(true);
+
+        /*
+          This harmless looking setFork is actually very important. unless the compiler is
+          forked it wont work!
+        */
+        javaCompiler.setFork(true);
+
+        //Create classpath - The generated output directories also become part of the classpath
+        //reason for this is that some codegenerators(XMLBeans) produce compiled classes as part of
+        //generated artifacts
+        File outputLocationFile = new File(outputLocation);
+        Path classPath = new Path(codeGenProject,outputLocation) ;
+        classPath.addExisting(classPath.concatSystemClasspath(),false);
+        for (int i = 0; i < moduleNames.length; i++) {
+            classPath.add(new Path(codeGenProject,MODULE_PATH_PREFIX +moduleNames[i]+CLASSES_DIR));
+        }
+        javaCompiler.setClasspath(classPath);
+
+        //set sourcePath - The generated output directories also become part of the sourcepath
+        Path sourcePath = new Path(codeGenProject,outputLocation) ;
+        sourcePath.setLocation(outputLocationFile);
+        javaCompiler.setSrcdir(sourcePath);
+
+        //output the classes into the output dir as well
+        javaCompiler.setDestdir(outputLocationFile);
+        javaCompiler.setVerbose(true);
+        javaCompiler.execute();
+
+    }
+
+    /**
+     *
+     */
+    private Map fillOptionMap(String wsdlFileName,String outputLocation) {
+        Map optionMap = new HashMap();
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
+                        new String[]{wsdlFileName}));
+
+        //use default sync option - No option is given
+        //use default async option - No option is given
+        //use default language option - No option is given
+        //output location - code_gen_output
+
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
+                        new String[]{outputLocation}));
+        //server side option is on
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION,
+                new CommandLineOption(
+                        CommandLineOptionConstants.WSDL2JavaConstants.SERVER_SIDE_CODE_OPTION,
+                        new String[0]));
+        // descriptor option is on
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION,
+                new CommandLineOption(CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_SERVICE_DESCRIPTION_OPTION,
+                        new String[0]));
+        // db is xmlbeans option is on
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
+                new CommandLineOption(CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
+                        new String[]{TestConstants.Databinding.XML_BEANS}));
+
+        optionMap.put(
+                CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION,
+                new CommandLineOption(CommandLineOptionConstants.WSDL2JavaConstants.GENERATE_ALL_OPTION,
+                        new String[0]));
+
+        //todo Make this work
+        //test case option is on
+//        optionMap.put(
+//                CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION,
+//                new CommandLineOption(
+//                        CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION,
+//                        new String[0]));
+        //databinding is default
+
+        return optionMap;
+    }
+
+
+}
diff --git a/rampart_1_1/pom.xml b/rampart_1_1/pom.xml
new file mode 100644
index 0000000..8d827ee
--- /dev/null
+++ b/rampart_1_1/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 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.
+ !-->
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>

+    <groupId>org.apache</groupId>

+    <artifactId>apache</artifactId>

+    <version>3</version>

+  </parent>

+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.axis2</groupId>
+  <artifactId>axis2</artifactId>
+  <version>1.1.0.1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>Apache Axis 2.0</name>
+  <modules>
+    <module>modules/parent</module>
+    <module>modules/java2wsdl</module>
+    <module>modules/kernel</module>
+    <module>modules/tool</module>
+    <module>modules/adb</module>
+    <module>modules/codegen</module>
+    <module>modules/adb-codegen</module>
+  </modules>
+</project>
diff --git a/rampart_1_1/project.xml b/rampart_1_1/project.xml
new file mode 100644
index 0000000..bdd41fa
--- /dev/null
+++ b/rampart_1_1/project.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>etc/project.xml</extend>
+    <id>axis2</id>
+</project>
diff --git a/rampart_1_1/release-docs/maven-scripts/maven-std.xml b/rampart_1_1/release-docs/maven-scripts/maven-std.xml
new file mode 100644
index 0000000..353a8ee
--- /dev/null
+++ b/rampart_1_1/release-docs/maven-scripts/maven-std.xml
@@ -0,0 +1,1081 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+/*

+ * 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.

+ */

+ -->

+

+<!--

+     | The main goals for multi project build are:

+     |

+     | default

+     |    Build all the modules

+     |

+     | clean

+     |    Deletes the 'target' directory in all projects

+     |

+     | dist-bin

+     |		Creates the main binary distribution

+     |

+     | dist-docs

+     |		Creates the javadocs distribution (without xdocs)

+     |

+     | dist-src

+     |		Creates the source distribution

+     |

+     | release

+     |      Creates the release (dist-bin, dist-src,dist-docs, war)

+     |

+     | war

+     |    Build the war

+   -->

+

+<project default="jar"

+         xmlns:j="jelly:core"

+         xmlns:u="jelly:util"

+         xmlns:deploy="deploy"

+         xmlns:modules="local:modules"

+         xmlns:ant="jelly:ant"

+         xmlns:plugin="plugin"

+         xmlns:macros="macros"

+         xmlns:maven="jelly:maven"

+         xmlns:define="jelly:define">

+

+    <j:set var="dist.name" value="${pom.artifactId}-${pom.currentVersion}"/>

+    <j:set var="dist.dir" value="target/dist"/>

+

+    <tstamp>

+        <format property="release_date" pattern="MMMM d, yyyy" locale="en"/>

+    </tstamp>

+

+    <!-- Test for >= JDK 1.5 to determine whether to include modules that require it -->

+

+    <ant:echo>${ant.java.version}</ant:echo>

+

+    <j:if test="${ant.java.version == '1.5'}">

+        <ant:echo>

+            JDK ${ant.java.version} detected, including the following modules:

+            ${maven.multiproject.includes.requiresJDK15}

+        </ant:echo>

+        <j:set var="maven.multiproject.includes"

+               value="${maven.multiproject.includes},${maven.multiproject.includes.requiresJDK15}"/>

+    </j:if>

+

+    <j:set var="modules" value="*"/>

+

+    <preGoal name="modules:reactor:init">

+        <j:set var="groupId" value="maven-itest-plugin"/>

+        <j:set var="artifactId" value="maven-itest-plugin"/>

+        <j:set var="version" value="1.0"/>

+        <attainGoal name="plugin:download-artifact"/>

+        <maven:installPlugin

+                file="${maven.repo.local}/${groupId}/plugins/${artifactId}-${version}.jar"

+                cache="true"/>

+    </preGoal>

+

+    <!-- ======= -->

+    <!-- Modules -->

+    <!-- ======= -->

+    <goal name="modules:reactor:init">

+        <!--

+           | Determine the includes which the reactor will use.

+           |

+           | Uses 4 properties to control which modules will be include:

+           |

+           | module.types      Comma seperated list of module types (ie. specs or modules)

+           | module.includes   Comma seperated list of module names (ie. kernel, adb, ...)

+           | modules           Same as module.includes, module.includes initializes to this value

+           | module.excludes   Comma seperated list of module names to exclude

+           |

+           | The end result is that modules.reactor.includes is set to the project.xml files

+           | to include.  This is the value the reactor will use.

+           |

+           | Example, to only build the kernel and adb modules:

+           |

+           | maven -Dmodules=kernel, adb

+         -->

+

+        <j:if test="${context.getVariable('module.types') == null}">

+            <j:set var="module.types" value="modules,applications,plugins"/>

+        </j:if>

+

+        <j:if test="${context.getVariable('modules') == null}">

+            <!-- The default is to build everything -->

+            <j:set var="modules" value="${modules}"/>

+        </j:if>

+

+        <j:if test="${context.getVariable('module.includes') == null}">

+            <j:set var="module.includes" value="${modules}"/>

+        </j:if>

+

+        <j:if test="${context.getVariable('module.excludes') == null}">

+            <j:set var="module.excludes" value=""/>

+        </j:if>

+

+        <u:tokenize var="types" delim=",">${module.types}</u:tokenize>

+

+        <ant:fileScanner var="scanner">

+            <ant:fileset dir="${basedir}">

+                <j:forEach var="type" items="${types}">

+                    <j:choose>

+                        <j:when test="${context.getVariable('module.includes') == '*'}">

+                            <ant:include name="${type}/*/project.xml"/>

+                        </j:when>

+                        <j:otherwise>

+                            <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>

+                            <j:forEach var="include" items="${includes}">

+                                <u:available file="${basedir}/${type}/${include}/project.xml">

+                                    <ant:include name="${type}/${include}/project.xml"/>

+                                </u:available>

+                            </j:forEach>

+                        </j:otherwise>

+                    </j:choose>

+

+                    <j:choose>

+                        <j:when test="${context.getVariable('module.excludes') == '*'}">

+                            <ant:exclude name="${type}/*/project.xml"/>

+                        </j:when>

+                        <j:otherwise>

+                            <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>

+                            <j:forEach var="exclude" items="${excludes}">

+                                <u:available file="${basedir}/${type}/${exclude}/project.xml">

+                                    <ant:exclude name="${type}/${exclude}/project.xml"/>

+                                </u:available>

+                            </j:forEach>

+                        </j:otherwise>

+                    </j:choose>

+                </j:forEach>

+            </ant:fileset>

+        </ant:fileScanner>

+

+        <!-- Init/Reinit this variable -->

+        <j:set var="modules.reactor.includes" value=""/>

+

+        <!-- Setup the includes which will be used by the reactor -->

+        <j:forEach var="file" items="${scanner.iterator()}">

+            <!--

+               | Would be nice if reactor would take a file set, but for now just remove

+               | the baseddir portion of the file's name.  So this will essentially strip off

+               | ${basedir}

+             -->

+            <j:set var="directory"

+                   value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>

+            <j:set var="filename" value="${directory}/${file.name}"/>

+            <ant:echo>Adding to modules.reactor.includes: ${filename}</ant:echo>

+            <j:choose>

+                <j:when test="${context.getVariable('modules.reactor.includes') == null}">

+                    <j:set var="modules.directories" value="${directory}"/>

+                    <j:set var="modules.reactor.includes" value="${filename}"/>

+                </j:when>

+                <j:otherwise>

+                    <j:set var="modules.directories" value="${modules.directories},${directory}"/>

+                    <j:set var="modules.reactor.includes"

+                           value="${modules.reactor.includes},${filename}"/>

+                </j:otherwise>

+            </j:choose>

+        </j:forEach>

+    </goal>

+

+    <!-- Helper tags for modules -->

+    <define:taglib uri="local:modules">

+        <define:tag name="reactor">

+            <attainGoal name="modules:reactor:init"/>

+

+            <j:choose>

+                <j:when test="${goals != null}">

+                    <maven:reactor

+                            basedir="${basedir}"

+                            includes="${modules.reactor.includes}"

+                            banner="Executing (${goals}):"

+                            ignoreFailures="false"

+                            goals="${goals}"

+                            postProcessing="true"

+                            />

+                </j:when>

+                <j:when test="${goals == null}">

+                    <maven:reactor

+                            basedir="${basedir}"

+                            includes="${modules.reactor.includes}"

+                            banner="Executing (${goals}):"

+                            ignoreFailures="false"

+                            postProcessing="true"

+                            />

+                </j:when>

+            </j:choose>

+

+            <!-- Set reactor projects in parent scope so goals have access to it -->

+            <j:set var="reactorProjects" value="${reactorProjects}" scope="parent"/>

+        </define:tag>

+    </define:taglib>

+

+    <goal name="m:init">

+        <ant:fileScanner var="scanner">

+            <ant:fileset dir="${basedir}">

+                <u:tokenize var="includes" delim=",">${maven.multiproject.includes}</u:tokenize>

+                <j:forEach var="include" items="${includes}">

+                    <ant:include name="${include}"/>

+                </j:forEach>

+                <u:tokenize var="excludes" delim=",">${maven.multiproject.excludes}</u:tokenize>

+                <j:forEach var="exclude" items="${excludes}">

+                    <ant:exclude name="${exclude}"/>

+                </j:forEach>

+            </ant:fileset>

+        </ant:fileScanner>

+

+        <j:set var="maven.multiproject.includes" value=""/>

+        <j:set var="maven.multiproject.excludes" value=""/>

+        <j:set var="modules.directories" value=""/>

+

+        <u:tokenize var="moduleList" delim=",">${modules}</u:tokenize>

+        <j:set var="currentDir" value="${basedir}/"/>

+        <j:forEach var="file" items="${scanner.iterator()}">

+            <j:set var="directory" value="${file.parentFile.absolutePath}"/>

+            <j:set var="include" value="${file.absolutePath.substring(currentDir.length())}"/>

+            <j:if test="${moduleList.isEmpty() || moduleList.contains(file.parentFile.name)}">

+                <j:choose>

+                    <j:when test="${context.getVariable('maven.multiproject.includes') == ''}">

+                        <j:set var="modules.directories" value="${directory}"/>

+                        <j:set var="maven.multiproject.includes" value="${include}"/>

+                    </j:when>

+                    <j:otherwise>

+                        <j:set var="modules.directories"

+                               value="${modules.directories},${directory}"/>

+                        <j:set var="maven.multiproject.includes"

+                               value="${maven.multiproject.includes},${include}"/>

+                    </j:otherwise>

+                </j:choose>

+            </j:if>

+        </j:forEach>

+    </goal>

+

+    <goal name="jar:jar">

+        <attainGoal name="create-jar"/>

+        <ant:copy file="target/lib/axis2-${pom.currentVersion}.jar"

+                  toDir="target/"/>

+    </goal>

+

+    <goal name="jar">

+        <attainGoal name="multiproject:install"/>

+        <attainGoal name="jar:install"/>

+    </goal>

+

+    <goal name="init">

+        <ant:mkdir dir="target"/>

+        <ant:mkdir dir="${dist.dir}"/>

+        <ant:mkdir dir="target/lib"/>

+

+        <uptodate property="jars.uptodate" targetfile="target/axis2-${pom.currentVersion}.war">

+            <srcfiles dir="modules">

+                <include name="**/*.java"/>

+                <include name="**/*.xml"/>

+                <include name="**/*.wsdl"/>

+                <exclude name="**/target/**"/>

+            </srcfiles>

+        </uptodate>

+        <echo message="the files are up to date = ${jars.uptodate}"></echo>

+    </goal>

+

+    <goal name="modules:clean">

+        <attainGoal name="modules:reactor:init"/>

+        <u:tokenize var="directories" delim=",">${modules.directories}</u:tokenize>

+        <j:forEach var="directory" items="${directories}">

+            <ant:echo>+----------------------------------------</ant:echo>

+            <ant:echo>| Cleaning: ${directory}</ant:echo>

+            <ant:echo>+----------------------------------------</ant:echo>

+            <ant:delete dir="${directory}/target"/>

+            <ant:delete quiet="false" failonerror="false">

+                <ant:fileset dir="${directory}">

+                    <ant:include name="maven.log"/>

+                    <ant:include name="velocity.log*"/>

+                    <ant:include name="junit*.properties"/>

+                    <ant:include name="axis.log"/>

+                    <ant:include name="junit*.properties"/>

+                    <ant:include name="temp.properties"/>

+                </ant:fileset>

+            </ant:delete>

+            <ant:echo></ant:echo>

+        </j:forEach>

+        <ant:echo>+----------------------------------------</ant:echo>

+        <ant:echo>| Cleaning: target and etc/target</ant:echo>

+        <ant:echo>+----------------------------------------</ant:echo>

+        <ant:delete dir="target"/>

+        <ant:delete dir="etc/target"/>

+    </goal>

+

+    <goal name="clean">

+        <ant:delete dir="${user.home}/.axis2"/>

+        <ant:delete dir="${user.home}/.axis2home"/>

+        <attainGoal name="modules:clean"/>

+        <attainGoal name="clean-repo"/>

+    </goal>

+

+    <!-- ================================================================ -->

+    <!--- Clean the Repository -->

+    <!-- ================================================================ -->

+    <goal name="clean-repo">

+        <ant:delete>

+            <ant:fileset dir="${maven.repo.local}">

+                <ant:include name="org.apache.axis2/jars/axis2*.jar"/>

+            </ant:fileset>

+        </ant:delete>

+    </goal>

+

+    <goal name="all-tests">

+        <modules:reactor goals="jar:install,test,itest"/>

+    </goal>

+

+    <goal name="cleanse-sources">

+        <modules:reactor goals="cleanse-sources"/>

+    </goal>

+

+    <goal name="clover">

+        <modules:reactor goals="clover:on,jar:install,test"/>

+        <attainGoal name="clover:merge"/>

+        <attainGoal name="clover:report"/>

+    </goal>

+

+    <goal name="create-jar" prereqs="init">

+        <!-- Hack for now, don't fail building jar if saaj is absent -->

+        <ant:mkdir dir="modules/saaj/target/classes"/>

+

+        <jar destfile="target/lib/axis2-${pom.currentVersion}.jar">

+            <fileset dir="modules/java2wsdl/target/classes"/>

+            <fileset dir="modules/kernel/target/classes"/>

+            <!-- adding the tool classes. This is needed to get the ant task -->

+            <fileset dir="modules/tool/target/classes"/>

+            <fileset dir="modules/saaj/target/classes"/>

+            <fileset dir="modules/addressing/target/classes"/>

+            <fileset dir="modules/codegen/target/classes"/>

+            <fileset dir="modules/adb/target/classes"/>

+            <fileset dir="modules/adb-codegen/target/classes"/>

+            <fileset dir="modules/xmlbeans/target/classes"/>

+            <fileset dir="modules/addressing/target/">

+                <include name="modules/addressing-${addressing_version}.mar"/>

+            </fileset>

+        </jar>

+    </goal>

+

+    <goal name="create-lib">

+        <macros:copy-deps copyToDir="target/lib" mods="*"/>

+    </goal>

+

+    <!-- ================================================================ -->

+    <!--- Create the War -->

+    <!-- ================================================================ -->

+    <goal name="war" prereqs="jar,init-dist,cache-war-deps">

+

+        <ant:mkdir dir="target/temp/war/toWEB-INF/modules"/>

+        <ant:mkdir dir="target/temp/war/toWEB-INF/services"/>

+        <ant:mkdir dir="target/temp/war/toWEB-INF/conf"/>

+

+

+        <!-- let's now remove un-necessary jars. Please refer -->

+        <!-- http://marc.theaimsgroup.com/?l=axis-dev&m=116047407714969&w=2, if you wanna know-->

+        <!-- why I removed this. -->

+        <ant:delete>

+            <fileset dir="${war_dep_cache}">

+                <include name="bcel-${bcel.version}.jar"/>

+                <include name="jibx-bind-${jibx.version}.jar"/>

+            </fileset>

+        </ant:delete>

+

+        <!-- Copy the java2wsdl jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the kernel jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/kernel/target/axis2-kernel-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the adb jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the adb  codegen jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset

+                    file="modules/adb-codegen/target/axis2-adb-codegen-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the java2wsdl jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the codegen jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the xmlbeans jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/xmlbeans/target/axis2-xmlbeans-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the spring jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/spring/target/axis2-spring-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the saaj jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/saaj/target/axis2-saaj-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy the jibx jar -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset file="modules/jibx/target/axis2-jibx-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy items that depend on JDK1.5  -->

+        <j:if test="${ant.java.version == '1.5'}">

+

+            <ant:copy toDir="target/temp/war/lib">

+                <ant:fileset file="modules/jaxbri/target/axis2-jaxbri-${pom.currentVersion}.jar"/>

+            </ant:copy>

+        </j:if>

+

+        <!-- Copy the soapmonitor jar - the servlet classes -->

+        <ant:copy toDir="target/temp/war/lib">

+            <ant:fileset

+                    file="modules/soapmonitor/target/axis2-soapmonitor-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- copy the soapmonitor mar -->

+        <ant:copy toDir="target/temp/war/toWEB-INF/modules">

+            <ant:fileset file="modules/soapmonitor/target/soapmonitor-${soapmonitor_version}.mar"/>

+        </ant:copy>

+

+        <!-- copy the addressing mar -->

+        <ant:copy toDir="target/temp/war/toWEB-INF/modules">

+            <ant:fileset file="modules/addressing/target/addressing-${addressing_version}.mar"/>

+        </ant:copy>

+

+        <echo file="target/temp/war/toWEB-INF/modules/modules.list" append="false">

+            addressing-${addressing_version}.mar

+            soapmonitor-${soapmonitor_version}.mar

+        </echo>

+

+        <!-- copy the sample services -->

+        <ant:copy toDir="target/temp/war/toWEB-INF/services">

+            <ant:fileset file="modules/samples/target/toWar/services/version.aar"/>

+        </ant:copy>

+

+        <echo file="target/temp/war/toWEB-INF/services/services.list" append="false">version.aar

+        </echo>

+

+        <!-- copy the axis2.xml into conf directoy -->

+        <ant:copy toDir="target/temp/war/toWEB-INF/conf">

+            <ant:fileset file="modules/kernel/conf/axis2.xml"/>

+        </ant:copy>

+        <ant:copy toDir="target/temp/war/axis2-web">

+            <ant:fileset dir="modules/webapp">

+                <ant:exclude name="project.xml"/>

+                <ant:exclude name="**/*.iml"/>

+                <ant:exclude name="**/.*"/>

+                <ant:exclude name="**/conf/**"/>

+            </ant:fileset>

+        </ant:copy>

+

+        <ant:war destfile="target/dist/axis2.war"

+                 webxml="modules/webapp/conf/web.xml">

+            <ant:lib dir="target/temp/war/lib">

+                <ant:include name="**"/>

+                <ant:exclude name="**servlet**"/>

+                <ant:exclude name="ant*.jar"/>

+            </ant:lib>

+            <ant:lib dir="${war_dep_cache}">

+                <ant:include name="**"/>

+                <ant:exclude name="**servlet**"/>

+                <ant:exclude name="ant*.jar"/>

+            </ant:lib>

+            <ant:classes dir="modules/kernel/conf">

+                <ant:include name="*.properties"/>

+            </ant:classes>

+            <!--  <ant:webinf dir="modules/kernel/src/org/apache/axis2/deployment">

+               <ant:include name="*.xml"/>

+           </ant:webinf> -->

+            <ant:webinf dir="target/temp/war/toWEB-INF"/>

+            <ant:fileset dir="target/temp/war">

+                <ant:include name="**/axis2-web/**"/>

+            </ant:fileset>

+        </ant:war>

+    </goal>

+

+    <!-- to transform htmls to xdocs -->

+    <preGoal name="xdoc:jelly-transform">

+        <attainGoal name="html2xdoc"/>

+    </preGoal>

+

+    <!-- ================================================================ -->

+    <!--- Create the Release -->

+    <!-- ================================================================ -->

+    <goal name="release"

+          prereqs="jar,dist-bin,dist-src,dist-docs,war">

+        <ant:echo>+----------------------------------------------</ant:echo>

+        <ant:echo>| Creating: Axis2 Distributions</ant:echo>

+        <ant:echo>+----------------------------------------------</ant:echo>

+

+        <ant:copy toFile="target/dist/addressing-${addressing_version}.mar"

+                  file="modules/addressing/target/addressing-${addressing_version}.mar"/>

+

+        <ant:copy toFile="target/dist/soapmonitor-${soapmonitor_version}.mar"

+                  file="modules/soapmonitor/target/soapmonitor-${soapmonitor_version}.mar"/>

+

+        <ant:delete dir="target/temp"/>

+        <ant:delete dir="target/apidocs"/>

+    </goal>

+

+    <goal name="init-dist">

+        <ant:filter token="axis2_version" value="${pom.currentVersion}"/>

+        <ant:filter token="release_date" value="${release_date}"/>

+

+        <property name="std_dep_cache" value="target/temp/cache/std"/>

+        <property name="war_dep_cache" value="target/temp/cache/war"/>

+

+        <ant:mkdir dir="target/dist"/>

+    </goal>

+

+    <goal name="dist-bin" prereqs="jar,init-dist,cache-std-deps">

+        <ant:echo>+----------------------------------------------</ant:echo>

+        <ant:echo>| Creating: Axis2 Main Binary Distribution</ant:echo>

+        <ant:echo>+----------------------------------------------</ant:echo>

+

+        <ant:property name="std.bin.temp.dir" value="target/temp/main/axis2-${pom.currentVersion}"/>

+

+        <ant:mkdir dir="${std.bin.temp.dir}/repository"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/repository/modules"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/repository/services"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/bin"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/conf"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/webapp"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/webapp/WEB-INF"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/webapp/WEB-INF/classes"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/webapp/axis2-web"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/lib"/>

+        <ant:mkdir dir="${std.bin.temp.dir}/samples"/>

+

+        <!--********************** creating the repository ********************** -->

+        <!-- copy the soapmonitor mar -->

+        <ant:copy toDir="${std.bin.temp.dir}/repository/modules">

+            <ant:fileset file="modules/soapmonitor/target/soapmonitor-${soapmonitor_version}.mar"/>

+        </ant:copy>

+

+        <!-- copy the addressing mar -->

+        <ant:copy toDir="${std.bin.temp.dir}/repository/modules">

+            <ant:fileset file="modules/addressing/target/addressing-${addressing_version}.mar"/>

+        </ant:copy>

+

+        <echo file="${std.bin.temp.dir}/repository/modules/modules.list" append="false">

+            addressing-${addressing_version}.mar

+            soapmonitor-${soapmonitor_version}.mar

+        </echo>

+

+        <!-- copy the sample services -->

+        <!-- TODO copy other sample-XXX.aar too -->

+        <ant:copy toDir="${std.bin.temp.dir}/repository/services">

+            <ant:fileset file="modules/samples/target/toWar/services/version.aar"/>

+        </ant:copy>

+

+        <echo file="${std.bin.temp.dir}/repository/services/services.list" append="false">

+            version.aar

+        </echo>

+

+        <!--********************** creating the bin ********************** -->

+        <!-- Copy bin scripts -->

+        <ant:copy todir="${std.bin.temp.dir}/bin">

+            <ant:fileset dir="modules/tool/script"/>

+        </ant:copy>

+

+        <!--********************** creating the conf ********************** -->

+        <!-- copy the axis2.xml into conf directoy -->

+        <ant:copy toDir="${std.bin.temp.dir}/conf">

+            <ant:fileset file="modules/kernel/conf/axis2.xml"/>

+        </ant:copy>

+

+        <!--********************** creating the webappp ********************** -->

+        <!-- copy the web.xml into webapp/WEB-INF directory -->

+        <ant:copy toDir="${std.bin.temp.dir}/webapp/WEB-INF">

+            <ant:fileset file="modules/webapp/conf/web.xml"/>

+        </ant:copy>

+

+        <!-- copy the build.xml into webapp directory -->

+        <ant:copy toDir="${std.bin.temp.dir}/webapp">

+            <ant:fileset file="modules/webapp/scripts/build.xml"/>

+        </ant:copy>

+

+        <!-- copy *.properties to webapp/WEB-INF/classes directory -->

+        <ant:copy toDir="${std.bin.temp.dir}/webapp/WEB-INF/classes">

+            <ant:fileset dir="modules/kernel/conf">

+                <ant:include name="*.properties"/>

+            </ant:fileset>

+        </ant:copy>

+

+        <!-- copy contents of the webapp module to webapp/axis2-web directory -->

+        <ant:copy toDir="${std.bin.temp.dir}/webapp/axis2-web">

+            <ant:fileset dir="modules/webapp">

+                <ant:exclude name="project.xml"/>

+                <ant:exclude name="**/*.iml"/>

+                <ant:exclude name="**/.*"/>

+                <ant:exclude name="**/conf/**"/>

+                <ant:exclude name="**/scripts/**"/>

+            </ant:fileset>

+        </ant:copy>

+

+

+        <!--********************** creating the lib ********************** -->

+        <!-- Copy the 3rd party libs -->

+        <ant:copy toDir="${std.bin.temp.dir}/lib">

+            <ant:fileset dir="${std_dep_cache}"/>

+        </ant:copy>

+

+        <!-- Deleting bcel, jaxme, spring jars -->

+        <ant:delete>

+            <fileset dir="${std.bin.temp.dir}/lib">

+                <include name="bcel-${bcel.version}.jar"/>

+                <include name="spring*.*"/>

+                <include name="jaxme*.*"/>

+            </fileset>

+        </ant:delete>

+

+        <!-- Delete tesing jars -->

+        <echo message="Deleting Unwanted testing jars"/>

+        <ant:delete>

+            <fileset dir="${std.bin.temp.dir}/lib">

+                <include name="**/ant*.jar"/>

+                <include name="**/xmlunit*.jar"/>

+                <include name="**/junit*.jar"/>

+            </fileset>

+        </ant:delete>

+

+        <ant:copy toDir="${std.bin.temp.dir}/lib">

+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/kernel/target/axis2-kernel-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>

+            <ant:fileset

+                    file="modules/adb-codegen/target/axis2-adb-codegen-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/xmlbeans/target/axis2-xmlbeans-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/jibx/target/axis2-jibx-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/saaj/target/axis2-saaj-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/tool/target/axis2-tools-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/spring/target/axis2-spring-${pom.currentVersion}.jar"/>

+            <ant:fileset

+                    file="modules/soapmonitor/target/axis2-soapmonitor-${pom.currentVersion}.jar"/>

+        </ant:copy>

+

+        <!-- Copy items that depend on JDK1.5  -->

+        <j:if test="${ant.java.version == '1.5'}">

+            <ant:copy toDir="${std.bin.temp.dir}/lib">

+                <ant:fileset file="modules/jaxbri/target/axis2-jaxbri-${pom.currentVersion}.jar"/>

+            </ant:copy>

+        </j:if>

+

+

+        <!--********************** creating the samples ********************** -->

+        <!-- TODO :Copy the samples.. after samples module refactoring -->

+        <!--ant:copy todir="${std.bin.temp.dir}/samples">

+            <ant:fileset dir="modules/samples/target/samples"/>

+        </ant:copy-->

+        <!--ant:copy todir="${std.bin.temp.dir}/samples/userguide">

+            <ant:fileset file="${std.bin.temp.dir}/samples/groovyService.aar"/>

+        </ant:copy-->

+        <ant:mkdir dir="${std.bin.temp.dir}/samples/faulthandling"/>

+        <ant:copy todir="${std.bin.temp.dir}/samples/">

+            <ant:fileset dir="modules/samples/">

+                <include name="yahoorestsearch/**/*.*"/>

+                <include name="googlespellcheck/**/*.*"/>

+                <include name="faulthandling/**/*.*"/>

+                <include name="mtom/**/*.*"/>

+                <include name="soapwithattachments/**/*.*"/>

+                <include name="version/**/*.*"/>

+                <include name="servicelifecycle/**/*.*"/>

+                <include name="pojo/**/*.*"/>

+            </ant:fileset>

+        </ant:copy>

+

+        <ant:delete file="${std.bin.temp.dir}/samples/groovyService.aar"/>

+

+

+        <!--copy NOTICE.txt file-->

+        <ant:copy toFile="${std.bin.temp.dir}/NOTICE.txt" filtering="on">

+            <ant:fileset file="NOTICE.txt"/>

+        </ant:copy>

+        <ant:zip file="${dist.dir}/axis2-${pom.currentVersion}.zip"

+                 basedir="target/temp/main"/>

+        <ant:delete dir="target/temp/main"/>

+    </goal>

+

+    <goal name="dist-src" prereqs="init-dist">

+        <ant:echo>+----------------------------------------------</ant:echo>

+        <ant:echo>| Creating: Axis2 Standard Source Distribution</ant:echo>

+        <ant:echo>+----------------------------------------------</ant:echo>

+

+        <ant:property name="src.temp.dir" value="target/temp/src/axis2-${pom.currentVersion}/src"/>

+        <ant:mkdir dir="target/temp/src"/>

+        <ant:mkdir dir="target/temp/src/axis2-${pom.currentVersion}"/>

+        <ant:mkdir dir="${src.temp.dir}"/>

+

+        <ant:copy toDir="${src.temp.dir}">

+            <ant:fileset dir=".">

+                <ant:include name="**/etc/**"/>

+                <ant:include name="**/modules/java2wsdl/**"/>

+                <ant:include name="**/modules/kernel/**"/>

+                <ant:include name="**/modules/adb/**"/>

+                <ant:include name="**/modules/adb-codegen/**"/>

+                <ant:include name="**/modules/codegen/**"/>

+                <ant:include name="**/modules/webapp/**"/>

+                <ant:include name="**/modules/xmlbeans/**"/>

+                <ant:include name="**/modules/jibx/**"/>

+                <ant:include name="**/modules/jaxbri/**"/>

+                <ant:include name="**/modules/addressing/**"/>

+                <ant:include name="**/modules/saaj/**"/>

+                <ant:include name="**/modules/samples/**"/>

+                <ant:include name="**/modules/soapmonitor/**"/>

+                <ant:include name="**/modules/spring/**"/>

+                <ant:include name="**/modules/tool/**"/>

+                <ant:exclude name="**/SameServiceAddingTest.java"/>

+                <!-- TODO: This is failing in the distros. Must Fix it. -->

+                <ant:exclude name="**/target/**"/>

+                <ant:exclude name="**/modules/samples/eventing/**"/>

+                <ant:exclude name="**/modules/samples/security/**"/>

+                <ant:exclude name="xdocs/**"/>

+                <ant:exclude name="**/*class*/**"/>

+                <ant:exclude name="**/.svn/**"/>

+                <ant:exclude name="**/bin/**"/>

+                <ant:exclude name="**/*.log"/>

+                <ant:exclude name=".*"/>

+                <ant:exclude name="**/*.license"/>

+                <ant:exclude name="**/*.iml"/>

+            </ant:fileset>

+        </ant:copy>

+        <ant:copy toDir="${src.temp.dir}/etc" overwrite="true" filtering="on" file="etc/project.properties"/>

+	<ant:copy toDir="${src.temp.dir}" overwrite="true" filtering="on" file="NOTICE.txt"/>

+

+        <!-- Copy the master maven files for the standard src distro -->

+        <ant:copy toFile="${src.temp.dir}/maven.xml">

+            <ant:fileset file="maven.xml"/>

+        </ant:copy>

+        <ant:copy toDir="${src.temp.dir}">

+            <ant:fileset file="project.xml"/>

+        </ant:copy>

+        

+        <ant:copy toDir="${src.temp.dir}">

+            <ant:fileset file="README.txt"/>

+        </ant:copy>

+

+        <ant:zip file="${dist.dir}/axis2-${pom.currentVersion}-src.zip">

+            <ant:fileset dir="target/temp/src"/>

+        </ant:zip>

+        <ant:delete dir="target/temp/src"/>

+    </goal>

+

+    <goal name="dist-war" prereqs="war">

+        <ant:echo>+----------------------------------------------</ant:echo>

+        <ant:echo>| Creating: Axis2 WAR Distribution</ant:echo>

+        <ant:echo>+----------------------------------------------</ant:echo>

+    </goal>

+

+    <goal name="dist-docs" prereqs="init-dist, javadocs">

+        <ant:echo>+----------------------------------------------</ant:echo>

+        <ant:echo>| Creating: Axis2 Docs Distribution</ant:echo>

+        <ant:echo>+----------------------------------------------</ant:echo>

+

+        <ant:mkdir dir="target/dist"/>

+        <ant:property name="docs.temp.dir"

+                      value="target/temp/docs/axis2-${pom.currentVersion}/docs"/>

+

+        <ant:mkdir dir="${docs.temp.dir}"/>

+        <ant:mkdir dir="${docs.temp.dir}/javadocs"/>

+

+        <ant:copy toDir="${docs.temp.dir}/javadocs">

+            <ant:fileset dir="target/apidocs"/>

+        </ant:copy>

+

+        <ant:zip file="${dist.dir}/axis2-${pom.currentVersion}-docs.zip">

+            <ant:fileset dir="target/temp/docs"/>

+        </ant:zip>

+        <!--ant:delete dir="target/temp/docs"/-->

+

+        <ant:echo message="***** IMPORTANT: Please manually copy the Eclipse &amp; IDEA plugins"/>

+    </goal>

+

+    <goal name="cache-std-deps" prereqs="init-dist">

+        <ant:mkdir dir="${std_dep_cache}"/>

+        <j:if test="${stdDeps.uptodate != 'yes'}">

+            <macros:copy-deps copyToDir="${std_dep_cache}"

+                              mods="webapp,jibx,spring,saaj,kernel,adb"/>

+            <property name="stdDeps.uptodate" value="yes"/>

+        </j:if>

+

+        <!--remove testing jars-->

+        <ant:delete dir="${std_dep_cache}">

+            <ant:include name="junit*.jar"/>

+            <ant:include name="xmlunit*.jar"/>

+            <ant:include name="maven-itest*.jar"/>

+        </ant:delete>

+    </goal>

+

+    <!--<goal name="cache-war-deps" prereqs="init-dist,cache-std-deps">-->

+    <goal name="cache-war-deps" prereqs="init-dist">

+        <ant:mkdir dir="${war_dep_cache}"/>

+        <j:if test="${warDeps.uptodate != 'yes'}">

+            <macros:copy-deps copyToDir="${war_dep_cache}"

+                              mods="webapp,spring,jibx,saaj"/>

+            <property name="warDeps.uptodate" value="yes"/>

+        </j:if>

+

+        <!--remove testing jars-->

+        <ant:delete dir="${war_dep_cache}">

+            <ant:include name="junit*.jar"/>

+            <ant:include name="xmlunit*.jar"/>

+        </ant:delete>

+    </goal>

+

+

+    <!-- ================================================================ -->

+    <!--- Create the Java Docs -->

+    <!-- ================================================================ -->

+    <goal name="javadocs" prereqs="jar,init, create-lib">

+        <ant:javadoc packagenames="org.apache.axis2.*"

+                     defaultexcludes="yes"

+                     destdir="target/apidocs"

+                     author="true"

+                     breakiterator="true"

+                     version="true"

+                     use="true"

+                     windowtitle="Axis2 API">

+            <ant:arg

+                    line="-J-Dhttp.proxy.port=${maven.proxy.port} -J-Dhttp.proxy.host=${maven.proxy.host}"/>

+            <ant:sourcepath>

+                <ant:pathelement location="modules/adb/src"/>

+		<ant:pathelement location="modules/adb-codegen/src"/>

+                <ant:pathelement location="modules/addressing/src"/>

+                <ant:pathelement location="modules/codegen/src"/>

+                <ant:pathelement location="modules/java2wsdl/src"/>

+		<!-- Cannot run the build in jdk1.4 when jaxbri is included -->

+		<!--ant:pathelement location="modules/jaxbri/src"/-->

+                <ant:pathelement location="modules/jibx/src"/>

+                <ant:pathelement location="modules/kernel/src"/>

+                <ant:pathelement location="modules/saaj/src"/>

+		<!-- we are not shipping jaxws with 1.1 -->

+                <!--ant:pathelement location="modules/jaxws/src"/-->                

+                <ant:pathelement location="modules/soapmonitor/src"/>

+                <ant:pathelement location="modules/spring/src"/>

+		<ant:pathelement location="modules/xmlbeans/src"/>

+            </ant:sourcepath>

+            <ant:classpath>

+                <ant:fileset dir="target/lib">

+                    <ant:include name="**/*.jar"/>

+                </ant:fileset>

+            </ant:classpath>

+            <ant:excludepackage name="org.apache.axis2.tool.codegen.*"/>

+            <ant:excludepackage name="org.apache.axis2.tool.service.*"/>

+            <ant:link href="http://java.sun.com/j2se/1.4.2/docs/api/"/>

+            <ant:link href="http://java.sun.com/webservices/docs/1.5/api/"/>

+            <ant:link href="http://xerces.apache.org/xerces-j/apiDocs/"/>

+            <ant:link href="http://xml.apache.org/xalan-j/apidocs/"/>

+            <ant:link href="http://xmlbeans.apache.org/docs/2.1.0/reference/"/>

+        </ant:javadoc>

+    </goal>

+

+    <!-- ================================================================ -->

+    <!--- Reports -->

+    <!-- ================================================================ -->

+    <!-- Conditionally disable linkcheck based on a property. -->

+

+    <postGoal name="xdoc:register-reports">

+        <j:if test="${maven.allreports.disable}">

+            <echo>Reports are disabled. Deregistering all the reports ....</echo>

+            <attainGoal name="maven-linkcheck-plugin:deregister"/>

+            <echo>linkcheck is disabled.</echo>

+            <attainGoal name="maven-checkstyle-plugin:deregister"/>

+            <echo>checkstyle is disabled.</echo>

+            <attainGoal name="maven-changes-plugin:deregister"/>

+            <echo>changes is disabled.</echo>

+            <attainGoal name="maven-changelog-plugin:deregister"/>

+            <echo>changelog is disabled.</echo>

+            <attainGoal name="maven-license-plugin:deregister"/>

+            <echo>license is disabled.</echo>

+            <attainGoal name="maven-javadoc-plugin:deregister"/>

+            <echo>javadoc is disabled.</echo>

+            <attainGoal name="maven-junit-report-plugin:deregister"/>

+            <echo>junit-report is disabled.</echo>

+            <attainGoal name="maven-tasklist-plugin:deregister"/>

+            <echo>tasklist is disabled.</echo>

+        </j:if>

+

+    </postGoal>

+

+

+    <!-- ================================================================ -->

+    <!--- Create JUnit test reports -->

+    <!-- ================================================================ -->

+    <goal name="test-reports">

+        <mkdir dir="${basedir}/target/test-reports"/>

+        <ant:junitreport todir="${basedir}/target/test-reports">

+            <ant:fileset dir="${basedir}/">

+                <ant:include name="**/test-reports/TEST-*.xml"/>

+                <ant:include name="**/itest-reports/TEST-*.xml"/>

+            </ant:fileset>

+            <ant:report format="frames" todir="${basedir}/target/test-reports"

+                        styledir="${basedir}/etc"/>

+        </ant:junitreport>

+    </goal>

+

+    <!-- ================================================================ -->

+    <!--- Create all the distributable jars -->

+    <!-- ================================================================ -->

+    <goal name="all-jars" prereqs="jar">

+        <ant:echo>+----------------------------------------------</ant:echo>

+        <ant:echo>| Creating: JARs</ant:echo>

+        <ant:echo>+----------------------------------------------</ant:echo>

+

+        <ant:property name="destdir" value="target/jars"/>

+        <ant:mkdir dir="${destdir}"/>

+

+        <ant:copy toDir="${destdir}">

+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/kernel/target/axis2-kernel-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/codegen/target/axis2-adb-codegen-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/xmlbeans/target/axis2-xmlbeans-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/jibx/target/axis2-jibx-${pom.currentVersion}.jar"/>

+            <ant:fileset file="modules/java2wsdl/target/axis2-java2wsdl-${pom.currentVersion}.jar"/>

+        </ant:copy>

+        <!-- Copy items that depend on JDK1.5  -->

+        <j:if test="${ant.java.version == '1.5'}">

+            <ant:copy toDir="${destdir}">

+                <ant:fileset file="modules/jaxbri/target/axis2-jaxbri-${pom.currentVersion}.jar"/>

+            </ant:copy>

+        </j:if>

+    </goal>

+	

+    <define:taglib uri="macros">

+        <define:tag name="copy-deps">

+            <!--

+            PLEASE don't check in with these lines enabled.

+            <ant:echo message="######## MODULES=${mods}"/>

+            <ant:echo message="######## Copy2Dir=${copyToDir}"/>

+            -->

+            <j:set var="modules" value="${mods}"/>

+

+            <!-- ######################### REACTOR INIT ##########################################-->

+

+            <j:if test="${context.getVariable('module.types') == null}">

+                <j:set var="module.types" value="modules,applications,plugins"/>

+            </j:if>

+

+            <j:set var="module.includes" value="${modules}"/>

+

+            <j:if test="${context.getVariable('module.excludes') == null}">

+                <j:set var="module.excludes" value=""/>

+            </j:if>

+

+            <u:tokenize var="types" delim=",">${module.types}</u:tokenize>

+

+            <ant:fileScanner var="scanner">

+                <ant:fileset dir="${basedir}">

+                    <j:forEach var="type" items="${types}">

+                        <j:choose>

+                            <j:when test="${context.getVariable('module.includes') == '*'}">

+                                <ant:include name="${type}/*/project.xml"/>

+                            </j:when>

+                            <j:otherwise>

+                                <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>

+                                <j:forEach var="include" items="${includes}">

+                                    <u:available file="${basedir}/${type}/${include}/project.xml">

+                                        <ant:include name="${type}/${include}/project.xml"/>

+                                    </u:available>

+                                </j:forEach>

+                            </j:otherwise>

+                        </j:choose>

+

+                        <j:choose>

+                            <j:when test="${context.getVariable('module.excludes') == '*'}">

+                                <ant:exclude name="${type}/*/project.xml"/>

+                            </j:when>

+                            <j:otherwise>

+                                <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>

+                                <j:forEach var="exclude" items="${excludes}">

+                                    <u:available file="${basedir}/${type}/${exclude}/project.xml">

+                                        <ant:exclude name="${type}/${exclude}/project.xml"/>

+                                    </u:available>

+                                </j:forEach>

+                            </j:otherwise>

+                        </j:choose>

+                    </j:forEach>

+                </ant:fileset>

+            </ant:fileScanner>

+

+            <j:set var="modules.reactor.includes" value=""/>

+

+            <!-- Setup the includes which will be used by the reactor -->

+            <j:forEach var="file" items="${scanner.iterator()}">

+                <j:set var="directory"

+                       value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>

+                <j:set var="filename" value="${directory}/${file.name}"/>

+                <j:choose>

+                    <j:when test="${context.getVariable('modules.reactor.includes') == null}">

+                        <j:set var="modules.directories" value="${directory}"/>

+                        <j:set var="modules.reactor.includes" value="${filename}"/>

+                    </j:when>

+                    <j:otherwise>

+                        <j:set var="modules.directories"

+                               value="${modules.directories},${directory}"/>

+                        <j:set var="modules.reactor.includes"

+                               value="${modules.reactor.includes},${filename}"/>

+                    </j:otherwise>

+                </j:choose>

+            </j:forEach>

+            <!-- #################### END OF REACTOR INIT #######################################-->

+

+            <ant:echo message="Fetching Dependencies for modules: ${modules.reactor.includes}"/>

+            <maven:reactor

+                    basedir="${basedir}"

+                    postProcessing="true"

+                    includes="${modules.reactor.includes}"

+                    banner="Executing (${goals}):"

+                    ignoreFailures="false"/>

+            <j:forEach var="x" items="${reactorProjects}">

+                <ant:echo message="Copying ${x} to ${copyToDir}"/>

+                <deploy:copy-deps todir="${copyToDir}"

+                                  projectDescriptor="${x.getFile()}"/>

+            </j:forEach>

+            <property name="modules" value="*"/>

+        </define:tag>

+        <define:tag name="copy-release-docs">

+

+            <filter token="axisVersion" value="${pom.currentVersion}"/>

+            <filter token="TODAY" value="${TODAY}"/>

+

+            <ant:copy toFile="${toDir}/README.txt" filtering="on">

+                <ant:fileset file="${readmeFile}"/>

+            </ant:copy>

+            <ant:copy toFile="${toDir}/release-notes.html" filtering="on">

+                <ant:fileset file="release-notes.html"/>

+            </ant:copy>

+            <ant:copy toFile="${toDir}/LICENSE.txt" filtering="on">

+                <ant:fileset file="LICENSE.txt"/>

+            </ant:copy>

+        </define:tag>

+    </define:taglib>

+

+</project>

+

diff --git a/rampart_1_1/release-docs/readme-files/README-docs.txt b/rampart_1_1/release-docs/readme-files/README-docs.txt
new file mode 100644
index 0000000..398feab
--- /dev/null
+++ b/rampart_1_1/release-docs/readme-files/README-docs.txt
@@ -0,0 +1,17 @@
+======================================================
+Apache Axis2 @axisVersion@ build (@TODAY@)
+Documentation Release
+
+http://ws.apache.org/axis2
+------------------------------------------------------
+
+This release contains
+1. xdocs
+2. javadocs
+
+xdocs directory contains all the documentation, tutorials etc.
+related to this Axis2 release, and are available online as well.
+
+javadocs directory contains all the Javadoc API 
+documentation of the standard Axis2 Release.
+
diff --git a/rampart_1_1/release-docs/readme-files/README-std-bin.txt b/rampart_1_1/release-docs/readme-files/README-std-bin.txt
new file mode 100644
index 0000000..f3cffa4
--- /dev/null
+++ b/rampart_1_1/release-docs/readme-files/README-std-bin.txt
@@ -0,0 +1,40 @@
+======================================================

+Apache Axis2 @axisVersion@ build (@TODAY@)

+Binary Release

+

+http://ws.apache.org/axis2

+------------------------------------------------------

+

+This is the Standard Binary Release of Axis2.

+

+The lib directory contains;

+

+1. axis2-adb-@axisVersion@.jar

+2. axis2-adb-codegen-@axisVersion@.jar

+3. axis2-codegen-@axisVersion@.jar

+4. axis2-java2wsdl-@axisVersion@.jar

+5. axis2-jibx-@axisVersion@.jar

+6. axis2-kernel-@axisVersion@.jar

+7. axis2-spring-@axisVersion@.jar

+8. axis2-tools-@axisVersion@.jar

+9. axis2-xmlbeans-@axisVersion@.jar

+10. axis2-saaj-@axisVersion@.jar

+11. axis2-soapmonitor-1.1-RC2.jar

+

+and all 3rd party distributable dependencies of the above jars.

+

+The repository/modules directory contains the deployable addressing module.

+

+The webapp folder contains an ant build script to generate the axis2.war out of this distribution.

+(This requires Ant 1.6.5)

+

+The samples directory contains all the Axis2 samples which demonstrates some of the key features of

+Axis2. It also contains a few samples relevant to documents found in Axis2's Docs Distribution.

+

+The bin directory contains a set of usefull scripts for the users.

+

+The conf directory contains the axis2.xml file which allows to configure Axis2.

+

+(Please note that this release does not include the other WS-* implementation modules, like

+WS-Security, that are being developed within Axis2. Those can be downloaded from

+http://ws.apache.org/axis2/modules/)

diff --git a/rampart_1_1/release-docs/readme-files/README-std-src.txt b/rampart_1_1/release-docs/readme-files/README-std-src.txt
new file mode 100644
index 0000000..0277dd3
--- /dev/null
+++ b/rampart_1_1/release-docs/readme-files/README-std-src.txt
@@ -0,0 +1,37 @@
+======================================================

+Apache Axis2 @axisVersion@ build (@TODAY@)

+Source Release

+

+http://ws.apache.org/axis2

+------------------------------------------------------

+

+This is the Standard Source Release of Axis2.

+

+The modules directory contains source code of the following 

+Axis2 modules:

+

+1. kernel

+2. java2wsdl

+3. addressing

+4. adb

+5. adb-codegen

+6. codegen

+7. webapp

+8. jibx

+9. samples

+10. xmlbeans

+11. saaj

+12. spring

+13. tool

+14. jaxbri

+15. soapmonitor

+

+One can use maven 1.x to create the Standard Binary Distribution from this, 

+by typing "$maven dist-bin".

+

+(Please note that this does not include the other WS-* implementation modules, 

+like WS-Security, that are being developed within Axis2. Those can be downloaded

+ from http://ws.apache.org/axis2/modules/)

+ 

+

+

diff --git a/rampart_1_1/release-docs/readme-files/installation-std-bin.txt b/rampart_1_1/release-docs/readme-files/installation-std-bin.txt
new file mode 100644
index 0000000..12acfef
--- /dev/null
+++ b/rampart_1_1/release-docs/readme-files/installation-std-bin.txt
Binary files differ
diff --git a/rampart_1_1/release-notes.html b/rampart_1_1/release-notes.html
new file mode 100644
index 0000000..9554919
--- /dev/null
+++ b/rampart_1_1/release-notes.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Welcome to Apache Axis2 version 1.1</title>
+</head>
+
+<body lang="en">
+<h1>Welcome to Apache Axis2 version 1.1</h1>
+
+<h3>@TODAY@</h3>
+
+<pre>Just over 6 months since the original 1.0 release, we are very proud to
+announce the release of Apache Axis2 version 1.1.
+
+Downloads are available at:
+    http://ws.apache.org/axis2/download.cgi
+
+Apache Axis2 is a complete re-design and re-write of the widely used
+Apache Axis engine and is a more efficient, more scalable, more modular
+and more XML-oriented Web services framework. It is carefully designed to
+support the easy addition of plug-in "modules" that extend its
+functionality for features such as security and reliability.
+
+Modules supporting WS-Security/Secure-Conversation (Apache Rampart),
+WS-Trust (Apache Rahas), WS-Reliable Messaging (Apache Sandesha) and
+WS-Eventing (Apache Savan) will be available soon after the Apache Axis2
+1.1 release. Please see these projects' own sites for further information.
+
+Major Changes Since 1.0:
+- Significantly improved documentation
+- Significantly improved support for POJO services and clients
+- Significantly improved support for Spring services
+- Significantly improved Axis Data Binding (ADB) to increase schema
+  coverage and overall stability
+- Improved service lifecycle model
+- Improved JMS support
+- Improved handler and module interfaces
+- Improved Eclipse and Idea plugins
+- New Attachments API for sending & receiving MTOM and SwA attachments
+- Built in support for WS-Policy via Apache Neethi
+- Added support for unwrapping Web service requests
+- Fixed tons of small and not-so-small bugs
+- Major refactoring of release structure to make usage easy
+
+Known Issues and Limitations in 1.1 Release:
+- Unwrapping of response messages (coming in 1.2)
+- JSR 181/183 Annotation support (coming in 1.2)
+- JaxMe and JAXBRI data binding support is experimental
+- Simple Axis Server does not support POX/REST
+
+Apache Axis2 1.1 is a major new release compared to Axis2 1.0. We are
+striving for a simple and happy first time user experience as well as a
+satisfying experienced user experience with this release. We welcome any
+and all feedback at:
+    axis-user@ws.apache.org (please include "[axis2]" in the subject)
+    axis-dev@ws.apache.org (please include "[axis2]" in the subject)
+    http://issues.apache.org/jira/browse/AXIS2
+
+Thank you for your interest in Apache Axis2!
+
+The Axis2 Development Team
+http://ws.apache.org/axis2/
+
+------------------------------------------------------------------------------------
+
+Features of Apache Axis2:
+
+Programming Model
+   - Simple XML-centric client API with full WSDL and policy support
+   - Support for POJO and Spring services and clients
+   - Support for any message exchange pattern (MEP)
+   - Synchronous and asynchronous programming model
+   - Archived service deployment model supporting full service
+     encapsulation with versioning support
+   - Archived module deployment model supporting controlled
+     extensibility with versioning support
+   - Hot deployment
+   - WS-Policy driven code generation extensions
+   - Flexible service life cycle model
+   - Automatic support for POX (REST) style invocation of services
+   - Support for querying service's WSDL (with ?wsdl), schema (with
+     ?xsd) and policies (with ?policy)
+
+Supported Specifications
+   - SOAP 1.1 and 1.2
+   - Message Transmission Optimization Mechanism (MTOM)
+   - XML Optimized Packaging (XOP)
+   - SOAP with Attachments
+   - WSDL 1.1, including both SOAP and HTTP bindings
+   - WS-Addressing submission and 1.0
+   - WS-Policy
+   - SAAJ 1.1
+
+Transports
+   - HTTP
+   - SMTP
+   - JMS
+   - TCP
+
+Supported Data Bindings
+   - Axis Data Binding (ADB)
+   - XMLBeans
+   - JibX
+   - JaxMe (Experimental)
+   - JaxBRI (Experimental)
+
+Tools
+   - WSDL2Java: Generate Java stubs and skeletons from a WSDL document.
+   - Java2WSDL: Generate a WSDL document from a Java class.
+   - Eclipse Plugins
+   - IntelliJ Idea Plugins
+   - Maven2 Plugins
+   - Web application for administering Apache Axis2
+    </pre>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/Axis2-rpc-support.html b/rampart_1_1/xdocs/1_1/Axis2-rpc-support.html
new file mode 100644
index 0000000..e8cb087
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/Axis2-rpc-support.html
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding=""?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="content-type" content="" />
+  <title>Axis2 RPC Support</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body>
+<h1>Axis2 RPC Support</h1>
+
+<p>This documents talks about the Axis2's Remote Procedure Calls support in a
+set of easy to understand implementation steps.</p>
+
+<h2>Introduction</h2>
+
+<p>Axis2 Remote Procedure Calls (RPC) support may seem somewhat tricky and
+confusing at first glance. However, Axis2 RPC strategy is based on a well
+defined set of rules and once the details are in place, it becomes clear as
+day. This document aims to drill down to the details of this strategy and
+fills up most of the fairly unknown bits and pieces. Note that Axis2
+currently does not support the rpc/encoded style fully. It's main support is
+for the rpc/lit style.</p>
+
+<p>We will discuss the Axis2 RPC strategy in the following steps</p>
+
+<h2>Step 1 - Converting RPC Style WSDL's into Doc/Lit Style WSDL</h2>
+
+<p>This is probably the most confusing part of the rpc strategy. Since the
+Axis2 code generator is based on pure doc/lit style, the first step of the
+code generation process is to generate a wrapper schema. This wrapper
+generation can be easily explained by using an example.</p>
+
+<p>Take the following piece of WSDL</p>
+<pre> .....
+    &lt; message name="requestMessage"&gt;
+                &lt;part name="part1" type="xs:string"/&gt;
+                &lt;part name="part2" type="xs:int"/&gt;
+        &lt;/message&gt;
+        &lt;message name="responseMessage"&gt;
+                &lt;part name="part1" type="xs:string"/&gt;
+        &lt;/message&gt;
+        &lt;portType name="echoPortType"&gt;
+                &lt;operation name="echo"&gt;
+                        &lt;input message="y:requestMessage"/&gt;
+                        &lt;output message="y:responseMessage"/&gt;
+                &lt;/operation&gt;
+        &lt;/portType&gt;
+        &lt;binding name="echoBinding" type="y:echoPortType"&gt;
+                &lt;soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/&gt;
+                &lt;operation name="echo"&gt;
+                        &lt;soap:operation soapAction="echo"/&gt;
+                        &lt;input&gt;
+                                &lt;soap:body use="literal"/&gt;
+                        &lt;/input&gt;
+                        &lt;output&gt;
+                                &lt;soap:body use="literal"/&gt;
+                        &lt;/output&gt;
+                &lt;/operation&gt;
+        &lt;/binding&gt;
+.....</pre>
+
+<p>The binding says its got to be rpc/lit and in this case the message parts
+need wrapping in the following order.</p>
+<ol>
+  <li>The first element needs to have the operation name as the local name
+    and the operation namespace (which happens to be the namespace of the
+    porttype - in this case the targetnamespace of the WSDL)</li>
+  <li>The children of this element are non namespace qualified elements with
+    the part names as local names (referred to as <strong>part
+    element</strong>)</li>
+  <li>In case the part refers to a standard type like the example WSDL, the
+    content of the part element would be of that type. If the part refers to
+    a complex type defined in the schema, the content of the part element
+    becomes of that type. Having an element reference in the part when the
+    binding is rpc is invalid.</li>
+</ol>
+
+<p>For example the input wire message for the echo operation mentioned in the
+above WSDL fragment would look like this:</p>
+<pre> &lt;op:<strong>echo</strong> xmlns:op="porttype namespace"&gt;
+  &lt;<strong>part1</strong>&gt;Hello World&lt;/part1&gt;
+  &lt;<strong>part2</strong>&gt;123&lt;/part2&gt;
+ &lt;/op:echo&gt;</pre>
+
+<p>Note that the element name is in bold. The first one is the operation
+name, the second and third are part names. It can be seen that it is quite
+possible to generate a schema, representing this structure and then treat the
+whole service as pure doc/lit service. In this case, following is the piece
+of schema generated to make this rpc to doc conversion. Note that in this
+case the wire message stays unchanged. It is only a different WSDL authoring
+style</p>
+<pre> &lt;xs:element name="echo"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:sequence&gt;
+                &lt;xs:element name="part1" type="xs:string" /&gt; 
+                &lt;xs:element name="part2" type="xs:int" /&gt; 
+           &lt;/xs:sequence&gt;    
+    &lt;/xs:complexType&gt;
+ &lt;/xs:element&gt;</pre>
+
+<p>What the Axis2 code generator does is exactly this. By looking at the
+binding style, it generates a wrapper schema in places required before
+handing over the Axis* hierarchy to the code generator engine. In every case
+(even when the schema needs to be unwrapped) this wrapping part will take
+place!</p>
+
+<h2>Step 2 - Unwrapping the Schema</h2>
+
+<p>If the schema needs to be unwrapped then that brings up a few issues
+mainly because the only thing that the emitters rely on when generating code
+is a mapping table!</p>
+<ol>
+  <li>When the schema is unwrapped where would that unwrapping information
+    stay?
+    <p>Good question - It needs to be a store that keeps the information
+    seperated. Hmm.. What can we use here ? Why of course, the Axis *
+    hierarchy! It has nicely separated information holders and a parameter
+    store that can hold a information bean.</p>
+  </li>
+  <li>How do we maintain uniqueness among message part names?
+    <p>Another Good question - part names are only unique across a message
+    and not globally. But due to the fact that we have a global mapping table
+    we need a way to differentiate between parts of different messages. The
+    technique used here is to generate a QName that has the operation name as
+    a namespace and a suffix (like _input) appended to the local name</p>
+  </li>
+</ol>
+
+<p>Given these solutions the first step in unwrapping is to walk the schema
+and figure out the unwrappable items. The key player of the unwrapping
+process is the unwrapping extension. What it does is to walk a given schema
+and figure out the unwrappable parts if there are any.</p>
+
+<p>The current unwrapper looks for the following patterns and fails if it is
+not found!</p>
+<pre>&lt; element &gt;
+      &lt; complexType &gt;
+           &lt; sequence &gt;
+               &lt; element /&gt;
+           &lt; /sequence &gt;
+       &lt; /complexType &gt;
+  &lt; /element &gt;
+ </pre>
+
+<p>Once this pattern is detected the unwrapper details will be added to the
+relevant AxisMessage component</p>
+
+<h2>Step 3 - Populate type Information</h2>
+
+<p>The next step is to populate the type information for the parts. This has
+to be explicitly done by the data binding extensions, and currently the ADB
+and XMLbeans extensions populate the relevant AxisMessage by looking up their
+generated type systems. This type information goes into the AxisMessage
+inside a MessagePartInformationHolder instance.</p>
+
+<p>The following code fragment from the ADB extension shows how the
+AxisMessages get populated with the relevant type information. The code is
+almost the same for the XMLBeans extension. Note the items in bold.</p>
+<pre> if (message.getParameter(Constants.UNWRAPPED_KEY) != null) {
+            XmlSchemaType schemaType = message.getSchemaElement().getSchemaType();
+            if (schemaType instanceof XmlSchemaComplexType) {
+                XmlSchemaComplexType cmplxType = (XmlSchemaComplexType) schemaType;
+                XmlSchemaParticle particle = cmplxType.getParticle();
+                if (particle instanceof XmlSchemaSequence) {
+                    XmlSchemaObjectCollection items =
+                            ((XmlSchemaSequence) particle).getItems();
+                    for (Iterator i = items.getIterator(); i.hasNext();) {
+                        Object item = i.next();
+                        if (item instanceof XmlSchemaElement) {
+                           XmlSchemaElement xmlSchemaElement = (XmlSchemaElement) item;
+                            XmlSchemaType eltSchemaType = xmlSchemaElement.getSchemaType();
+                            if (eltSchemaType != null) {
+                                <strong>populateClassName(eltSchemaType,mapper,opName,xmlSchemaElement.getName());</strong>
+                            } else if (xmlSchemaElement.getSchemaTypeName() != null) {
+                              eltSchemaType = findSchemaType(schemaMap,
+                                       xmlSchemaElement.getSchemaTypeName());
+                              if (eltSchemaType!=null){
+                                 populateClassName(eltSchemaType,mapper,opName,xmlSchemaElement.getName());
+                            }
+                          }
+                      }
+                  }
+              }
+         }
+   }</pre>
+
+<p>The populateClassName looks like this</p>
+<pre> private static void populateClassName(XmlSchemaType eltSchemaType,
+                                          TypeMapper typeMap,
+                                          String opName,
+                                          String partName) {
+        Map metaInfoMap = eltSchemaType.getMetaInfoMap();
+        if (metaInfoMap != null) {
+            <strong>String className = (String) metaInfoMap.
+                    get(SchemaConstants.SchemaCompilerInfoHolder.CLASSNAME_KEY);
+            QName partQName = WSDLUtil.getPartQName(opName,
+                    WSDLConstants.INPUT_PART_QNAME_SUFFIX,
+                    partName);
+            typeMap.addTypeMappingName(partQName,className);</strong>
+            if (Boolean.TRUE.equals(
+                    metaInfoMap.get(SchemaConstants.
+                            SchemaCompilerInfoHolder.CLASSNAME_PRIMITVE_KEY))){
+                //this type is primitive - add that to the type mapper status
+                //for now lets add a boolean
+                typeMap.addTypeMappingStatus(partQName,Boolean.TRUE);
+            }
+
+        }
+    }</pre>
+
+<h2>Step 4 - Generate Code with Unwrapped Parameters</h2>
+
+<p>The next step is generating the actual code. The
+AxisServiceBasedMultiLanguageEmitter has a method that generates the XML
+model for the input parameters and that method includes the relevant part
+parameters inside the relavant top level input parameter element.</p>
+
+<p>The relevant part of the XML model looks like this. Note that this
+intermediate XML model is the one that is parsed against the Stylesheets to
+generate the code.</p>
+<pre>&lt;input&gt;
+ &lt;param name="param4" type="com.example.www.ServiceNameStub.Echo" shorttype="Echo" value="null" location="body" opname="echo"&gt;
+        &lt;param name="param5" type="java.lang.String" shorttype="String" value="null" location="body" opname="echo" partname="Part1" 
+                                                                                                primitive="yes"/&gt;
+        &lt;param name="param6" type="int" shorttype="int" value="0" location="body" opname="echo" partname="Part2" primitive="yes"/&gt;
+  &lt;/param&gt;
+&lt;/input&gt;</pre>
+
+<p>The next part is upto the template to handle. Basically, the template
+looks after the generation of multiple parameters into the method signatures
+and then the generating of the relevant serialization and deserialization
+code for the parameters.</p>
+
+<h2>Bringing the Parameters Together and Exploding Them</h2>
+
+<p>This is a somewhat controversial area. The current Axis2 code generator
+does the wrapping and unwrapping at the object level and not the XML level. In
+short the exploded parameters are only a convenience and the explosion does
+not run down to the XML level. The following example of generated source code
+makes this clear:</p>
+<pre> private org.apache.axiom.soap.SOAPEnvelope toEnvelope(
+        org.apache.axiom.soap.SOAPFactory factory, java.lang.String param1,
+        int param2, boolean optimizeContent) {
+        <strong>com.example.www.ServiceNameStub.Echo wrappedType = new com.example.www.ServiceNameStub.Echo();
+        wrappedType.setPart1(param1);
+        wrappedType.setPart2(param2);</strong>
+        rg.apache.axiom.soap.SOAPEnvelope emptyEnvelope = factory.getDefaultEnvelope();
+        emptyEnvelope.getBody().addChild(wrappedType.getOMElement(
+                        com.example.www.ServiceNameStub.Echo.MY_QNAME, factory));
+        
+        return emptyEnvelope;
+}</pre>
+
+<p>Note the lines in bold. The wrapped class will anyway be instantiated and
+used at the end, but what the user sees is different. Exploding the
+parameters happens in a similar way!</p>
+
+<h2>Conclusion</h2>
+
+<p>Axis2 RPC support is a sort of misty area, but it is based on a well
+defined set of rules which makes it not <em>that</em> misty after all!</p>
+<hr />
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/Axis2ArchitectureGuide.html b/rampart_1_1/xdocs/1_1/Axis2ArchitectureGuide.html
new file mode 100644
index 0000000..6221628
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/Axis2ArchitectureGuide.html
@@ -0,0 +1,738 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Axis2 Architecture Guide</title>

+  <meta content="20050916;22455288">

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en-US" dir="ltr">

+<h1 align="center">Apache Axis2 Architecture Guide</h1>

+

+<p>This document will give an introduction to Axis2's modular architecture

+with explanations on every module.</p>

+

+<p><i>Send your feedback to: <a

+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix

+subject with [Axis2]. To subscribe to mailing list see <a

+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>

+

+<h2>Contents</h2>

+<ul>

+  <li><a href="#bmBP">The Big Picture</a></li>

+  <li><p><a href="#requirements">Requirement of Axis2</a></p>

+  </li>

+  <li><a href="#thearchi">Axis2 Architecture</a>

+    <ul>

+      <li><p><a href="#bmcore">Core Modules</a></p>

+      </li>

+      <li><a href="#bmother">Other Modules</a></li>

+      <li><p><a href="#bmInfoMod">Information Model</a></p>

+      </li>

+      <li><a href="#bmXML">XML Processing Model</a></li>

+      <li><p><a href="#bmSOAPPM">SOAP Processing Model</a></p>

+        <ul>

+          <li><a href="#default">Axis2 Default Processing Model</a></li>

+          <li><p><a href="#incomingsoap">Processing an Incoming SOAP

+            Message</a></p>

+          </li>

+          <li><a></a><a href="#outgoing">Processing of the Outgoing

+            Message</a></li>

+          <li><p><a href="#extending">Extending SOAP Processing Model</a></p>

+            <ul>

+              <li><a href="#extendingwithhandlers">Extending the SOAP

+                Processing Model with Handlers</a></li>

+              <li><p><a href="#extendingwithmodules">Extending the SOAP

+                Processing Model with Modules</a></p>

+              </li>

+            </ul>

+          </li>

+        </ul>

+      </li>

+      <li><a href="#bmDeployment">Deployment</a>

+        <ul>

+          <li><a href="#xmlfile">The <em>axis2.xml</em> file</a></li>

+          <li><p><a href="#servicearchive">Service Archive</a></p>

+          </li>

+          <li><a href="#modulearchive">Module Archive</a></li>

+        </ul>

+      </li>

+      <li><p><a href="#bmClientAPI">Client API</a></p>

+        <ul>

+          <li><a href="#oneway">One Way Messaging Support</a></li>

+          <li><p><a href="#requestresponse">Request Response Messaging

+            Support</a></p>

+          </li>

+        </ul>

+      </li>

+      <li><a href="#bmTransports">Transports</a></li>

+      <li><p><a href="#bmWSDL">Code generation</a></p>

+      </li>

+      <li><a href="#bmDB">Data Binding</a>

+        <ul>

+          <li><a href="#integration">Integration with Code Generation

+            Engine</a></li>

+          <li><p><a href="#serial">Serialization and De-Serialization</a></p>

+          </li>

+        </ul>

+      </li>

+    </ul>

+  </li>

+</ul>

+<a name="bmBP"></a>

+<h2>The Big Picture</h2>

+

+<p>A new architecture for Axis was introduced during the August 2004 Summit

+in Colombo, Sri Lanka. This new architecture Axis2 is based on is more

+flexible, efficient and configurable in comparison to <a

+href="http://ws.apache.org/axis/java/architecture-guide.html">Axis1.x

+architecture</a>. Some well established concepts from Axis 1.x, like handlers

+etc., have been preserved in this new architecture.</p>

+

+<p>Any architecture is a result of what that architecture should yield. The

+success of an architecture should be evaluated based on the requirements

+expected to be met by that architecture. Let us start our journey into Axis2

+by looking at the requirements.</p>

+<a name="requirements"></a>

+

+<h2>Requirement of Axis2</h2>

+

+<p>In the SOAP terminology, a participant who is taking part in a Web service

+interaction is known as a SOAP Node. Delivery of a single SOAP Message is

+defined based on two participants, SOAP Sender and SOAP Receiver. Each SOAP

+Message is sent by SOAP Sender and received by SOAP Receiver. A single SOAP

+delivery is the most basic unit that builds the Web service interaction.</p>

+

+<p>Each SOAP Node may be written in specific programming language, may it be

+Java, C++, .NET or Perl, the Web services allow them to interoperate. This

+is possible because on the wire each Web service interaction is done via

+SOAP, which is common to every SOAP Node.</p>

+

+<p><img alt="" src="images/archi-guide/soap.gif" name="Graphic1"

+align="bottom" width="691" height="319" border="0"></p>

+

+<p>Web service middleware handles the complexity in SOAP messaging and lets

+the users work with the programming language they are accustomed to. Axis2

+allows java users to invoke Web services using java representations, and

+handles the SOAP messaging behind the curtain.</p>

+

+<p>Axis2 handles SOAP processing along with numerous other tasks. This makes

+the life of the Web service developer a whole lot easier. Following are the

+identified requirements:</p>

+<ol>

+  <li>Provide a framework to process the SOAP messages. The framework should

+    be extensible and the users should be able to extend the SOAP processing

+    per service or per operation basis. Furthermore, it should be able to

+    model different Message Exchange Patterns (MEPs) using the processing

+    framework.</li>

+  <li>Ability to deploy a Web service (with or without WSDL)</li>

+  <li>Provide a Client API that can be used to invoke Web services. This API

+    should support both the Synchronous and Asynchronous programming

+  models.</li>

+  <li>Ability to configure Axis2 and it's components via deployment.</li>

+  <li>Ability to send and receive SOAP messages with different

+  transports.</li>

+</ol>

+

+<p>Apart from the above functionalities, performance in terms of memory and

+speed is a major consideration for Axis2. Axis2 Core Architecture is built on

+three specifications- <a href="http://www.w3.org/TR/wsdl">WSDL</a>, 

+<a href="http://www.w3.org/TR/soap/">SOAP</a> and 

+<a href="http://www.w3.org/Submission/ws-addressing/">WS-Addressing</a>. Other 

+specifications like JAX-RPC, <a href="http://java.sun.com/webservices/saaj/index.jsp">

+SAAJ</a> &amp; <a href="http://www.w3.org/Submission/WS-Policy/">WS-Policy</a> are layered on top 

+of the Core Architecture.</p>

+<a name="thearchi"></a>

+<h2>Axis2 Architecture</h2>

+Axis2 architecture lays out some principals to preserve the uniformity. They

+are as follows:

+<ul>

+  <li><p>Axis2 architecture separates the logic and the states. Code that

+    does the processing is stateless inside Axis2. This allows code to be

+    executed freely by parallel threads.</p>

+  </li>

+  <li>All the information is kept in one information model allowing system to

+    be suspended and resumed.</li>

+</ul>

+

+<p>Axis2 architecture is modular. Therefore Axis2 Framework is built up of

+core modules which collectively make up the core architecture of Axis2, and

+non-core/other modules are layered on top of this core modules/architecture.</p>

+<a name="bmcore"></a>

+

+<h3>Core Modules:</h3>

+<ul>

+  <li><a href="#bmInfoMod">Information Model</a>- Axis2 defines a model to

+    handle information and all states are kept in this model. The model has a

+    hierarchy for the information. The system manages the life cycle of the

+    objects in this hierarchy.</li>

+  <li><p><a href="#bmXML">XML processing Model</a>- Handling the SOAP Message

+    is the most important and most complex task. The efficiency of this is

+    the single most important factor that decides the performance. It makes

+    sense to delegate this task to a separate sub-project itself, under Web

+    services project, allowing that sub-project 

+   (<a href="http://ws.apache.org/commons/axiom/index.html">AXIOM</a> or AXis Object Model) to 

+    provide a simple API for SOAP and XML info-set. And it will hide the complexities of the

+    efficient XML processing within the implementation.</p>

+  </li>

+  <li><a href="#bmSOAPPM">SOAP Processing Model</a>- This controls the

+    execution of the processing. The model defines different phases the

+    execution would walk through, and the user can extend the Processing

+    Model at some specific places.</li>

+  <li><p><a href="#bmDeployment">Deployment Model</a>- Axis2 deployment model

+    allows the user to deploy services, configure the transports, extend the

+    SOAP Processing model per system, service or operation basis.</p>

+  </li>

+  <li><a href="#bmClientAPI">Client API</a>- This provides a convenient API

+    for users to communicate with Web services using Axis2. There are set of

+    classes to interact with IN-OUT and IN-Only style <a href="http://www.w3.org/2002/ws/cg/2/07/meps.html">Message Exchange

+    Patterns (MEPs)</a> where those can be used to construct any other MEP. (Please note that even if client API has in-built support for the above named MEPs, it does not, in any means, limit Axis2's flexibility to support custom MEPs.)</li>

+  <li><p><a href="#bmTransports">Transports</a>- Axis2 define a transport

+    framework that enables the user to use multiple different transports. The

+    transports fit into specific places in the SOAP processing model. The

+    implementation provides a few common transports and the user may write or plug-in

+    new ones if and when it is needed.</p>

+  </li>

+</ul>

+<a name="bmother"></a>

+

+<h3>Other Modules:</h3>

+<ul>

+  <li><a href="#bmWSDL">Code Generation</a>- Axis2 provides a code generation

+    tool that will generate server side and client side code along with descriptors and a

+    test case. The generated code would simplify the service deployment and

+    the service invocation. This would increase usability of Axis2.</li>

+  <li><p><a href="#bmDB">Data Binding</a>- The basic client API of Axis2 lets

+    the users process SOAP at the infoset level where as data binding extends

+    it to make it more convenient to the users by encapsulating the infoset

+    layer and providing a programming language specific interface.</p>

+  </li>

+</ul>

+<map name="Graphic2Map" id="g2m">

+  <area shape="rect" coords="123,31,222,97" href="#bmInfoMod" alt="">

+  <area shape="rect" coords="239,62,319,134" href="#bmXML" alt="">

+  <area shape="rect" coords="127,112,218,177" href="#bmSOAPPM" alt="">

+  <area shape="rect" coords="12,39,89,95" href="#bmDeployment" alt="">

+  <area shape="rect" coords="0,108,94,156" href="#bmWSDL" alt="">

+  <area shape="rect" coords="350,31,426,86" href="#bmClientAPI" alt="">

+  <area shape="rect" coords="350,114,421,164" href="#bmTransports" alt="">

+</map>

+

+<p><img src="images/archi-guide/all.png" name="Graphic2" width="426" alt=""

+height="189" border="0" align="bottom" usemap="#Graphic2Map"></p>

+<a name="bmInfoMod"></a>

+<h2>Information Model</h2>

+

+<p>Information Model has two main hierarchies-Contexts and Descriptions. This

+model is described in UML notations below.</p>

+

+<p><img src="images/archi-guide/contexts.png" name="Graphic3" align="bottom"

+alt="" width="400" height="443" border="0"></p>

+

+<p>( A ----&lt;&gt; B says, B has 1 or more objects of A. A------&gt;B says,

+the given relationship holds between A and B.)</p>

+

+<p>The two hierarchies are connected as shown in the above figure. The

+Description hierarchy represents the static data. This data may be loaded

+from a configuration file that exists throughout the lifetime of Axis2. For

+example, deployed Web services, operations, etc. On the other hand, the

+context hierarchy holds more dynamic information about the things that have

+more than one instances (e.g.Message Context).</p>

+

+<p>These two hierarchies creates a model that provides the ability to search

+for key value pairs. When the values are searched at a given level, they are

+searched while moving up the hierarchy until a match is found. In the

+resulting model the lower levels override the values in the upper levels. For

+example, when a value is looked up in the Message Context and is not found,

+it would be looked up in the Operation Context etc, up the hierarchy. The

+Search is first done up the hierarchy, and if starting point is a Context

+then it is search in the Description hierarchy as well.</p>

+

+<p>This allows the user to declare and override values, result being a very

+flexible configuration model. The flexibility could be the <em>Achilles</em>

+heel for the system as the search is expensive, specially for something that

+does not exist. Yet in the final analysis developers believe that the

+flexibility would serve better in this instant.</p>

+

+<table width="955" border="1" cellpadding="2" cellspacing="3">

+  <col width="112"><col width="371"><col width="103"><col width="336"><tbody>

+    <tr>

+      <td><strong>Context</strong></td>

+      <td><strong>Description</strong></td>

+      <td><strong>Configuration</strong></td>

+      <td><strong>Description</strong></td>

+    </tr>

+    <tr>

+      <td width="112"><p>Configuration Context</p>

+      </td>

+      <td width="371"><p>Holds the Axis2's run time status. A deep copy of this would

+        essentially make a copy of Axis2.</p>

+      </td>

+      <td width="103"><p>Axis Configuration</p>

+      </td>

+      <td width="336"><p>Holds all global configurations. Transports, global

+        modules, parameters and services etc.</p>

+      </td>

+    </tr>

+    <tr>

+      <td width="112"><p>Service Group Context</p>

+      </td>

+      <td width="371"><p>Holds information about a particular usage of the

+        respective service group. The life of a Service Group Context starts

+        when a user starts interacting with a service that belong to this

+        service group. This can be used to share information between services

+        (within the same service group) in a single interaction.</p>

+      </td>

+      <td width="103"><p>AxisServiceGroup</p>

+      </td>

+      <td width="336"><p>Holds deployment time information about a particular

+        service group.</p>

+      </td>

+    </tr>

+    <tr>

+      <td width="112"><p>Service Context</p>

+      </td>

+      <td width="371"><p>This context is available throughout the usage of

+        the respective service. This can be used to share information between

+        several MEPs of the same service, within a single interaction. Life cycle depends on the scope of the service.</p>

+      </td>

+      <td width="103"><p>AxisService</p>

+      </td>

+      <td width="336"><p>Hold the Operations and the service level

+        configurations</p>

+      </td>

+    </tr>

+    <tr>

+      <td width="112"><p>Operation Context</p>

+      </td>

+      <td width="371"><p>Holds the information about the current MEP

+        instance, maintain the messages in the current MEP etc.</p>

+      </td>

+      <td width="103"><p>AxisOperation</p>

+      </td>

+      <td width="336"><p>Holds the operation level configurations</p>

+      </td>

+    </tr>

+    <tr>

+      <td width="112"><a name="messageContext"></a>

+

+        <p>Message Context</p>

+      </td>

+      <td width="371"><p>Holds all the information about the Message

+        currently being executed.</p>

+      </td>

+      <td width="103"><p>AxisMessage</p>

+      </td>

+      <td width="336"><p>Hold message level static information like schema of the particular message.</p>

+      </td>

+    </tr>

+  </tbody>

+</table>

+<a name="bmXML"></a>

+

+<h2>XML Processing Model</h2>

+

+<p>As we mentioned above, XML processing model of Axis2 has becomes a separate sub-project, called <a href="http://ws.apache.org/commons/axiom/index.html">Apache Axiom</a>, in Apache Web services project. Please refer to the <a href="OMTutorial.html">OM Tutorial</a> for more information. </p>

+<a name="bmSOAPPM"></a>

+<h2>SOAP Processing Model</h2>

+

+<p><img src="images/archi-guide/soap-processing.gif" name="Graphic4" alt=""

+align="bottom" width="755" height="348" border="0"></p>

+

+<p>The architecture identified two basic actions a SOAP processor should

+perform, sending and receiving SOAP messages. The architecture provides two

+Pipes ('Flows'), to perform these two basic actions. Axis Engine or the

+driver of Axis2 defines two methods send() and receive() to implement these

+two Pipes. The two pipes are named <i><b>In</b> Pipe</i> and <i><b>Out</b>

+Pipe</i>, and the complex Message Exchange Patterns (MEPs) are constructed by

+combining these two pipes.</p>

+

+<p>Extensibility of the SOAP processing model is provided through handlers.

+When a SOAP message is being processed the handlers that are registered would

+be executed. The handlers can be registered in global, service, or operation

+scopes and the final handler chain is calculated combining the handlers from

+all the scopes.</p>

+

+<p>The handlers act as interceptors and they process parts of the SOAP

+message and provide add-on services. Usually handlers work on the SOAP

+headers, yet they may access or change the SOAP Body as well.</p>

+

+<p>When a SOAP message is being sent through the Client API, an <i>Out

+Pipe</i> would begin, the <i>Out Pipe</i> invokes the handlers and end with a

+Transport Sender that sends the SOAP message to the target endpoint. The SOAP

+message is received by a Transport Receiver at the target endpoint, which

+reads the SOAP message and starts the <i>In Pipe</i>. The <em>In Pipe</em>

+consists of handlers and ends with the <a href="#mr">Message Receiver</a>,

+which consumes the SOAP message.</p>

+

+<p>Above explained processing happens for each and every SOAP message

+exchanged. After processing one message Axis2 may decide to create other SOAP

+messages, in which case more complex message patterns emerge. However Axis2

+always view the SOAP message in terms of processing a single message. The

+combination of the messages are layered on top of that basic framework.</p>

+

+<p>The two pipes does not differentiate between the Server and the Client.

+The SOAP Processing Model handles the complexity and provides two abstract

+pipes to the user. The different areas or the stages of the pipes are given

+names, and according to the Axis2 slang those are named 'phases'. A Handler

+always runs inside a phase, and the phase provides a mechanism to specify the

+ordering of handlers. Both Pipes have built in phases, and both define the

+areas for 'User Phases' which can be defined by the user.</p>

+<a name="default"></a>

+<h3>Axis2 Default Processing Model</h3>

+

+<p>Axis2 has some inbuilt handlers that run in inbuilt phases and they create

+the default configuration for the Axis2. We will be looking more in to how to

+extend the default processing Model in the next section.</p>

+There are three special handlers defined in Axis2.

+<ol>

+  <li>Dispatchers - Finds the service and the operation the SOAP message is

+    directed to. Dispatchers always run on the <em>In-Pipe</em> and inside

+    the Dispatch phase. The in-built dispatchers dispatch to a particular

+    operation depending on various conditions like WS-Addressing information,

+    URI information, SOAP action information, etc. (See <a href="http://www.wso2.net/tutorials/axis2/java/2006/06/18/operation-service-message-is-destined-to">here</a> for more information on Dispatching)</li>

+</ol>

+<ul>

+  <li><a name="mr"></a>Message Receiver - Consume the SOAP Message and hands that

+    over to application , Message receiver is the last handler of the

+    in-pipe</li>

+  <li><p>Transport Sender - Send the SOAP message to the SOAP endpoint the

+    message is destined to. Always runs as last handler in the out-pipe</p>

+  </li>

+</ul>

+<a name="incomingsoap"></a>

+<h3>Processing an Incoming SOAP Message</h3>

+

+<p>Incoming SOAP Message is always received by a Transport Receiver waiting

+for the SOAP Messages. Once the SOAP Message arrives, the transport Headers

+are parsed and a</p>

+<a href="#messageContext">Message Context</a> is created from the incoming

+SOAP Message. This message context encpsulates all the information, including the SOAP message itself, transport headers, etc., inside it. Then the <i>In Pipe</i> is executed with the Message Context.

+

+<p>Let us see what happens at each phase of the execution. This process may

+happen either in the server or in the Client.</p>

+<ol>

+  <li><strong>Transport Phase</strong> - The handlers are in the phase meant

+    to process transport specific information such as validating incoming

+    message by looking at various transport headers, add data into message

+    context etc.</li>

+  <li><strong>Pre-Dispatch Phase</strong>- The main functionality of the

+    handlers in this phase is to populate message context in order to do the

+    dispatching. As an example, processing of addressing headers of the SOAP

+    message, if any, happen in this phase. Addressing handlers extract information and

+    put them in to the message context.</li>

+  <li><strong>Dispatch Phase</strong> - The Dispatchers run in this phase and

+    tries to find the correct service and operation this particular message

+    is destined to.<br>

+    The post condition of the dispatch phase (any phase can contain a post

+    condition) checks whether a service and an operation was found by the

+    dispatchers. If not the execution will halt and throws out a "service not

+    found error".</li>

+  <li><strong>User Defined Phases</strong> - Users are allowed to engage

+    their custom handlers here.</li>

+  <li>Message Validation Phase - Once the user level execution has taken

+    place this phase validates whether SOAP Message Processing has taken

+    place correctly.</li>

+  <li><strong>Message Processing Phase</strong> - The Business logic of the

+    SOAP message is executed here. A <a href="#mr">Message Receiver</a> is

+    registered with each Operation. This Message receiver (associated to the

+    particular operation) will be executed as the last Handler of this

+  phase.</li>

+</ol>

+

+<p>There may be other handlers in any of these phases. Users may use custom

+handlers to override the mechanics in each of these phases.</p>

+<a name="outgoing"></a>

+<h3>Processing of the Outgoing Message</h3>

+

+<p><em>Out Pipe</em> is simpler because the service and operation to dispatch

+is known by the time the pipe is executed. The <em>Out Pipe</em> may be

+initiated by the</p>

+<a href="#mr">Message Receiver</a> or the Client API implementation. Phases of

+the <em>Out Pipe</em> are described below:

+<ol>

+  <li>Message Initialize Phase - First phase of the <em>Out Pipe</em>. Serves

+    as the placeholder for the custom handlers</li>

+  <li>User Phases - This executes handlers in user defined phases</li>

+  <li>Transports Phase - Execute any transport handlers taken from the

+    associated transport configuration. The last handler would be a transport

+    sender which would send the SOAP message to the target endpoint.</li>

+</ol>

+<a name="extending"></a>

+<h3>Extending SOAP Processing Model</h3>

+

+<p>Above we discussed the default processing model of Axis2. Now let us

+discuss the extension mechanism for the SOAP processing model. After all, the

+whole effort of making this SOAP engine/processing model was focused much on

+making it extendable.</p>

+

+<p>Idea behind introducing step wise processing of the SOAP message in terms

+of handlers &amp; phases is to allow easier modification of the processing

+order. The notion of phases makes it easier to place handlers in between

+other handlers. This enables modification on the default processing behavior.

+SOAP Processing Model can be extended with <a

+href="#extendingwithhandlers">handler</a> or <a

+href="#extendingwithmodules">modules</a>.

+

+<h4>Extending the SOAP Processing Model with Handlers</h4>

+<p>The handlers in a module can specify the phase they need to be placed in.

+Furthermore they can specify their location inside a phase by providing phase

+rules. Phase rules will place a handler</p>

+<ol>

+  <li>as the first handler in a phase.</li>

+  <li>or as the last handler in a phase.</li>

+  <li>or before a given handler</li>

+  <li>or after a given handler</li>

+</ol>

+<a name="extendingwithmodules"></a>

+<h4>Extending the SOAP Processing Model with

+Modules</h4>

+

+<p>Axis2 defines an entity called a 'module' that can introduce handlers and

+Web service operations. A Module in terms of Axis2 usually acts as a

+convenient packaging that includes:</p>

+<ul>

+  <li>A set of handlers and</li>

+  <li>An associated descriptor which includes the phase rules</li>

+</ul> 

+<p>Modules have the concept of being 'available' and 'engaged'. 'Availability'

+means the module is present in the system, but has not been activated, i.e.,

+the handlers included inside the module have not been used in the processing

+mechanism. When a module is 'engaged' it becomes active and the handlers get

+placed in the proper phases. The handlers will act in the same way as

+explained in the previous section. Usually a module will be used to implement

+a WS-* functionality such as WS-Addressing.</p>

+

+<p>Apart from the extension mechanism based on the handlers, the WS-*

+specifications may suggest a requirement for adding new operations. For

+example, once a user add Reliable Messaging capability to a service, the

+"Create Sequence" operation needs to be available to the service endpoint.

+This can be implemented by letting the modules define the operations. Once

+the module is engaged to a service, the necessary operations will be added to

+that service.</p>

+

+<p>A service, operations or the system may engage a module. Once the module

+is engaged the handlers and the operations defined in the module are added to

+the entity that engaged them.</p>

+

+<p>Modules can not be added (no hot deployment) while the Axis2 engine is

+running, but they will be available once the system is restarted.</p>

+<a name="bmDeployment"></a>

+

+<h2>Deployment</h2>

+

+<p>The Deployment Model provides a concrete mechanism to configure Axis2.

+This model has three entities that provide the configuration.</p>

+<a name="xmlfile"></a>

+

+<h3>The axis2.xml file</h3>

+

+<p>This file holds the global configuration for the client and server, and

+provide following information:</p>

+<ol>

+  <li>The global parameters</li>

+  <li>Registered transport-in and transport-outs</li>

+  <li>User defined phase names</li>

+  <li>Modules that are engaged globally (to all services)</li>

+  <li>Globally defined <a href="#mr">Message Receivers</a></li>

+</ol>

+<a name="servicearchive"></a>

+

+<h3>Service Archive</h3>

+

+<p>Service archive must have a <em>META-INF/<a

+href="resources/schemas/services.xsd">services.xml</a></em> file and may

+contain the dependent classes. The <em>services.xml</em> file has following

+information.</p>

+<ol>

+  <li>Service level parameters</li>

+  <li>Modules that are engaged service level</li>

+  <li>Service Specific <a href="#mr">Message Receivers</a></li>

+  <li>Operations inside the service</li>

+</ol>

+<a name="modulearchive"></a>

+<h3>Module Archive</h3>

+

+<p>Module archive must have a META-INF/<a

+href="resources/schemas/module.xsd">module.xml</a> file and dependent

+classes. The <em>module.xml</em> file has Module parameters and the

+Operations defined in the module.</p>

+

+<p>When the system is starting up, Axis2 asks the deployment model to create an

+Axis Configuration. Deployment Model first finds the axis2.xml file and builds

+the global configuration. Then it checks for the module archives and then for

+the service archives. After that, the corresponding services and modules are

+added to the Axis Configuration. System will build contexts on top of the

+Axis Configuration. After this, Axis2 is ready to send or receive the SOAP

+messages. Hot deployment is only allowed for services.</p>

+<a name="bmClientAPI"></a>

+

+<h2>Client API</h2>

+

+<p>There are three parameters that decide the nature of the Web service

+interaction.</p>

+<ol>

+  <li>Message Exchange Pattern (MEP)</li>

+  <li>The Behavior of the transport, whether it's One-Way or Two-Way</li>

+  <li>Synchronous/ Asynchronous behavior of the Client API</li>

+</ol>

+

+<p>Variations of the three parameters can result in indefinite number of

+scenarios, even though Axis2 is built on a core that support any messaging

+interaction, the developers were compelled to provie in-built support for only two most widely

+used Message Exchange Patterns (MEPs).</p>

+

+<p>Two supported MEPs are One-Way and the In-Out (Request-Response) scenarios

+in the Client API. The implementation is based on a class called

+<code>ServiceClient</code> and there are extensions for each MEP that Axis2

+Client API supports.</p>

+<a name="oneway"></a>

+<h3>One Way Messaging Support</h3>

+

+<p>The One-Way support is provided by the <code>fireAndForget</code> method

+of <code>ServiceClient</code>. For one way invocations one can use HTTP ,

+SMTP and TCP transports. In the case of the HTTP transport the return channel

+is not used and the HTTP 202 OK is returned in the return Channel.</p>

+<a name="requestresponse"></a>

+

+<h3>In-Out (Request Response) Messaging Support</h3>

+

+<p>The In-Out support is provided by the <code>sendReceive()</code> method in

+ServiceClient. This provides a much simpler interface for the user. The

+Client API has four ways to configure a given Message Exchange</p>

+<ol>

+  <li>Blocking or Non-Blocking nature - this can be decided by using

+    <code>sendReceive()</code> or <code>sendReceiveNonBlocking()</code>

+    methods</li>

+  <li>Sender transport - transport used to send the SOAP Message</li>

+  <li>Listener transport - transport the Response is received</li>

+  <li>Use Separate Channel - determines whether the response is send over a

+    separate transport connection or not. This can be false only when sender

+    and listener transport is same and is a Two-Way transport.</li>

+</ol>

+

+<p>Depending on the values of the above four parameters, Axis2 behaves

+differently.</p>

+<a name="bmTransports"></a>

+

+<h2>Transports</h2>

+

+<p>Axis2 has two basic constructs for transports, namely; Transport Senders

+and Transport Receivers . These are accessed via the AxisConfiguration.</p>

+

+<p>The incoming transport is the transport via which the AxisEngine receives

+the message. The outgoing transport is decided based on the addressing

+information (wsa:ReplyTo and wsa:FaultTo). If addressing information is not

+available and if server is trying to respond, then the out going transport

+will be the outputstream of the incoming transport (if it is two-way

+transport).</p>

+

+<p>At the client side the user is free to specify the transport to be

+used.</p>

+

+<p>Transport Senders and Transport Receivers contain following

+information.</p>

+<ol>

+  <li>Transport Sender for Out Configuration</li>

+  <li>Transport Listener for In Configuration</li>

+  <li>Parameters of the transport</li>

+</ol>

+

+<p>Each and every transport out configuration defines a transport sender.

+Transport sender sends the SOAP message, depending on its configuration.</p>

+

+<p>Transport receiver waits for the SOAP Messages and for each SOAP Message

+that arrives, it uses the <i>In Pipe</i> to process the SOAP Message.</p>

+

+<p>Axis2 presently support the following transports:</p>

+<ol>

+  <li>HTTP - In HTTP transport the transport listener is a servlet or

+    org.apache.axis2.transport.http.SimpleHTTPServer provided by Axis2. The

+    transport sender uses commons-httpclient to connect and send the SOAP

+    Message.</li>

+  <li>TCP - This is the most simplest transport, but needs the WS -

+    Addressing support to be functional.</li>

+  <li>SMTP - This works off a single email account. Transport receiver is a

+    thread that checks for emails in fixed time intervals.</li>

+  <li>JMS</li>

+</ol>

+<a name="bmWSDL" id="bmWSDL"></a>

+

+<h2>Code Generation</h2>

+

+<p>Although the basic objective of the code generation tools has not changed,

+the code generation module of Axis2 has taken a different approach to

+generate code. Primarily the change is in the use of templates, namely XSL

+templates which gives the code generator the flexibility to generate code in

+multiple languages.</p>

+

+<p>The basic approach is to set the code generator to generate an XML and

+parse it with a template to generate the code file. The following figure

+describes how this shows up in the architecture of the tool.</p>

+

+<p><img src="images/archi-guide/CodegenArchitecture-new.gif" name="Graphic6"

+alt="" align="bottom" border="0"></p>

+

+<p>The fact here is that it is the same information that is extracted from

+the WSDL no matter what code is generated. First, an AxisService is populated

+from a WSDL. Then the code generator extracts information from the

+AxisService and creates an XML which is language independent. This emitted

+XML is then parsed with the relevant XSL to generate code for the relevant

+language. No matter what the output language, the process is the same except

+for the template that is being used.</p>

+<a name="bmDB" id="bmDB"></a>

+<h2>Data Binding</h2>

+

+<h3>Integration with Code Generation Engine</h3>

+

+<p>Databinding for Axis2 is implemented in an interesting manner. Databinding

+has not been included in the core deliberately and hence the code geneation

+allows different data binding frameworks to be plugged in. This is done

+through an extension mechanism where the codegen engine calls extensions

+first and then executes the core emitter. The extensions populate a map of

+QNames vs. class names that is passed to the code generator on which the

+emitter operates on.</p>

+

+<p><strong>The following diagram shows the structure:</strong></p>

+

+<p><img src="images/codegen.gif" name="Graphic7" align="bottom"

+border="0"></p>

+

+<p><strong>The following databinding extensions are available:</strong></p>

+<ol>

+  <li><strong>ADB</strong> - ADB (Axis Data Binding ) is a simple framework

+    that allows simple schemas to be compiled. It is lightweight and simple,

+    works off StAX and fairly performant. However, it does not support the

+    complete set of schema constructs and is likely to complain for certain

+    schemas!</li>

+  <li><strong>XMLBeans</strong> - XMLbeans claims that it supports the

+    complete schema specification and it is the choice, if full schema

+    support is needed!</li>

+  <li><strong>JAX-Me</strong> - JaxMe support has been added in a similar

+    manner to XMLbeans and serves as another option for the user</li>

+  <li><strong>JibX</strong> - This is the most recent addition to the family

+    of databinding extensions and it is also another option the users have

+    for data binding.</li>

+</ol>

+<a name="serial" id="serial"></a>

+<h3>Serialization and De-Serialization of Data

+bound classes</h3>

+

+<p>AXIOM is based on a StAX API (Streaming API for XML). Xml-beans supports

+StAX API. Data binding in Axis2 is achieved through interfacing the AXIOM

+with the Xml-beans using the StAX API which is supported by both parties. At

+the time of the code generation there will be utility methods generated

+inside the stub (or the message receiver) that can de-serialize from AXIOM to

+data bound object and serialize from data bound object to AXIOM. For example,

+if the WSDL has an operation called "echoString", once the code is generated

+the following methods will be generated inside the relevant classes.</p>

+<pre>public static

+org.apache.axiom.om.OMElement toOM(org.soapinterop.xsd.EchoStringParamDocument

+param)// This method will handle the serialization.

+

+public static org.apache.xmlbeans.XmlObject

+fromOM(org.apache.axis2.om.OMElement param, java.lang.Class type) //This

+method will handle the de-serialization.</pre>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/WS_policy.html b/rampart_1_1/xdocs/1_1/WS_policy.html
new file mode 100644
index 0000000..4f15213
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/WS_policy.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+      "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+  <title>WS Policy Support in Axis2</title>
+  <meta name="generator" content="amaya 9.2.1, see http://www.w3.org/Amaya/">
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1 align="center">Web Services Policy Support In Axis2</h1>
+
+<p>This document will give you an introduction to the role of Web services
+policy in Axis2.</p>
+
+<p><i>E-mail comments/ suggestions to: <a
+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix
+subject with [Axis2]. To subscribe to mailing list see <a
+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#what">What is Web Services (WS) Policy?</a></li>
+  <li><a href="#client">Client Side WS-Policy Support</a></li>
+  <li><a href="#server">Server Side WS-Policy Support</a></li>
+  <li><a href="#resources">Resources</a></li>
+</ul>
+<a name="what"></a>
+
+<h2>What is Web Services (WS) Policy?</h2>
+
+<p>To consume non trivial web services one must fully understand its xml
+contract (WSDL) along with any other additional requirements, capabilities or
+preferences which translates to the configuration of the service, and
+essentially becomes the policies of the service.</p>
+
+<p>WS Policy framework provides a way to express the policies of a service in
+a machine-readable way. Web services infrastructure can be enhanced to
+understand and enforce policies at runtime. For instance, a service author
+might write a policy requiring digital signature and encryption, while
+service consumers could use the policy information to reason out whether they
+can adhere to this policy information to use the service or not.</p>
+
+<p>Further more, web service infrastructure could be enhanced to enforce
+those requirements without requiring the service author to write even single
+line of code.</p>
+<a name="client"></a>
+
+<h2>Client Side WS-Policy Support</h2>
+
+<p>This release <strong>fully supports WS Policy at client-side</strong>. It
+means that when you codegen a stub against a WSLD which contains policies,
+the stub will contain the capability to engage the required modules with the
+appropriate configurations plus it will generate additional methods in stub 
+where the user can used set certain properties. For instance, if there is 
+a security policy attached to a binding, the generated stub will engage the
+security module for that service with the appropriate security
+configurations with some addtional methods that the user can used set properties 
+in the generated stub.</p>
+
+<h3>How it works:</h3>
+
+<h4>Phase 1: At PolicyEvaluator</h4>
+
+<p>Codegen engine runs few of its registered extensions before it generates
+the stub. When PolicyEvalutor (which is a registered Codegen extension) is
+initialized, it populates a registry of QNames of supported policy assertions to
+PolicyExtensions.</p>
+
+<p>For instance, module Foo might have a mapping of assertion
+{http://test.com/foo, foo} which means any assertion that has this name will be 
+processed by this module. Foo module might implement the ModulePolicyExtension 
+interface through which PolicyExtension object can be obtained.</p>
+
+<p>A <strong>PolicyExtension</strong> is the access point for a module to add
+any additional methods to the stub. For instance Reliable Messaging module can add
+startSequence() and endSequence() methods to the stub, that the user must call to
+start and end an RM sequence.</p>
+
+<p>Then at the engagement of PolicyEvaluator, effective policy of each messages 
+of every operation is calculated based on policy information declared in the WSDL
+document. Here we assume that effective policy of an operation contains a
+single alternative (<strong>Multiple policy alternatives are not
+supported</strong>). Then we split that policy as follows into few other
+policies such that, each policy will contain assertions that can be processed
+by a single module.</p>
+<pre>  &lt;wsp:Policy&gt;         &lt;wsp:Policy&gt;       &lt;wsp:Policy&gt;        
+    &lt;a:Foo/&gt;             &lt;a:Foo/&gt;           &lt;b:Foo/&gt;               
+    &lt;b:Bar/&gt;      =&gt;    		           &lt;/wsp:Policy&gt;       
+    		               &lt;/wsp:Policy&gt;
+  &lt;/wsp:Policy&gt;</pre>
+
+<p>Then each policy is given to the appropriate PolicyExtension with an
+org.w3c.Element type object to which the module can append any other
+elements/attributes it wishes. Those attributes/elements should resolve to
+meaningful stub functions via Custom PolicyExtensionTemplate.xsl at latter point
+of time.</p>
+
+<p>For instance depending on the policy, Security module can append
+&lt;username&gt;, &lt;passwd&gt; elements to the given element as children,
+which are later resolved into setUsername(..), setPasswd(..), functions of
+the stub. This way a module can include additional methods to the stub which
+can be used to get specific propreties from the user. These methods store any
+user input in the ServiceClient properties 
+(ServiceClient.getOptions().putProperty(...)) which can later be accessed by
+the module.</p>
+
+<h4>Phase 2: At AxisServiceBasedMultiLanguageClientEmitter</h4>
+
+<p>Further, policies (based on the WSDL) at appropriate levels
+(service level, operation level) are stored as policy strings in the stub. If 
+there are few policies at a given level they are merged together and represented
+as a single policy in the stub. Few more generic methods are also added to the 
+stub which are used to evaluate/process policies at runtime.</p>
+
+<h4>Phase 3: Runtime</h4>
+
+<p>When a new stub object is created, the policy strings in the stub are
+converted into policy objects and are set in the AxisDescription hierarchy that 
+is used in the stub. In other words, any policy information available in the 
+WSDL will be preserved in the AxisService object that is used in the stub.</p>
+
+<p>Then based on its policy each AxisDescription is engaged to a set of
+modules. Modules can do a prior calculation of configurations if needed at the
+engagement.</p>
+
+<p>When the stub method is invoked, those modules which are engaged to that
+AxisDescription, access the policy for that operation via AxisDescription object.
+It can get other information needed from the MessageContext which get stored by 
+stub methods which the module has added to the stub earlier via 
+ModulePolicyExtension implementation. The modules are required to loads their 
+configurations according to the effective policy which is set at AxisDescription
+and properties they get via MessageContext.</p>
+<a name="server"></a>
+
+<h2>Server Side WS-Policy Support</h2>
+
+<p>In this current release Axis2 framework uses WS-Commons/Neethi framework
+to manipulate policy documents. All its description builders store any policy
+information included in description documents (services.xml, axis2.xml, ..
+etc) in the appropriate description classes. This information is available at
+both deployment and run time via these description classes.</p>
+
+<p>When generating WSDL dynamically for each service, policy information in
+the description classes is included. For instance, if you declare a policy in
+axis2.xml then that policy is reflected in service elements of WSDL of every
+service. If a policy is declared in a services.xml, it is shown in the
+service element of WSDL for that particular service.</p>
+
+<p>Further when a service is deployed, an arbitary policy alternative is 
+selected and set for each AxisOperation and AxisMessages of the AxisService. If 
+the selected Policy alternative can not be supported by any modules that are 
+capable of processing the selective alternative, then the service is considered 
+as a faulty service. Else set of modules is engaged at appropriate levels to 
+support the requirments and capabilities that are defined in the Policies 
+that are associated with the AxisDescription.</p>
+
+<p>It is evident that there is some work left to make axis2 a fully fledged 
+ws-policy supported web service infrastructure. But it is encouraging to note 
+that we've taken the first steps towards this goal. We appreciate any suggestions,
+patches etc you send us in this regard. Keep on contributing...!</p>
+<a name="resources"></a>
+
+<h2>Resources</h2>
+<ul>
+  <li>Apache Neethi (WS Policy Implementation) official site- <a
+    href="http://ws.apache.org/commons/neethi/index.html"
+    target="_blank">Home Page</a></li>
+  <li>Sanka Samaranayake, March 2006. <a
+    href="http://www.wso2.net/articles/neethi/java/2006/01/24/ws-policy"
+    target="_blank">Web services Policy - Why, What &amp; How</a></li>
+  <li><a
+    href="http://svn.apache.org/viewcvs.cgi/webservices/commons/trunk/modules/neethi/"
+    target="_blank">WS-commons/policy SVN</a></li>
+  <li><a href="http://specs.xmlsoap.org/ws/2004/09/policy/ws-policy.pdf"
+    target="_blank">Web Services Policy Framework (WS-Policy)</a></li>
+</ul>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/adb/adb-advanced.html b/rampart_1_1/xdocs/1_1/adb/adb-advanced.html
new file mode 100644
index 0000000..100de4f
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/adb/adb-advanced.html
@@ -0,0 +1,122 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+  <title>Advanced Axis2 Databinding Framework Features</title>
+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1>Advanced Axis2 Databinding Framework Features</h1>
+
+<p>The aim of this section is provide an insight into the newly added
+advanced features of Axis2 Databinding (ADB) Framework.</p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#typeSupport">xsi:type Support</a></li>
+  <li><a href="#helper">Helper Mode</a></li>
+  <li><a href="#more">More Stuff on ADB?</a></li>
+</ul>
+<a name="typeSupport"></a>
+<h2>xsi:type Support</h2>
+
+<p>This is implemented by adding a extension maping class. The code that
+calls the extension mapper is generated inside the Factory.parse method of
+the beans and gets active when the xsi:type attribute is present. The
+following code fragment shows how the generated type mapper looks like : </p>
+<pre>            public static java.lang.Object getTypeObject(java.lang.String namespaceURI,
+                                java.lang.String typeName,
+                                javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{
+              
+                  if (
+                  "http://soapinterop.org/types".equals(namespaceURI) &&
+                  "SOAPStruct".equals(typeName)){
+                            return  com.test.SOAPStruct.Factory.parse(reader);
+                  }
+              throw new java.lang.RuntimeException("Unsupported type " + namespaceURI + " " + typeName);
+            }</pre>
+
+<p>Inside every Factory.parse method, the extension mapper gets called when a
+xsi:type attribute is encountered <strong>and</strong> that type is not the
+type that is being parsed.</p>
+
+<p>The following code fragment shows how the ADB deserialize method calls the
+mapper class : </p>
+<pre>
+	     if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","type")!=null){
+                  java.lang.String fullTypeName = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance",
+                        "type");
+                  if (fullTypeName!=null){
+                    java.lang.String nsPrefix = fullTypeName.substring(0,fullTypeName.indexOf(":"));
+                    nsPrefix = nsPrefix==null?"":nsPrefix;
+
+                    java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":")+1);
+                    if (!"SOAPStruct".equals(type)){
+                        //find namespace for the prefix
+                        java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
+                        return (SOAPStruct)org.soapinterop.types.ExtensionMapper.getTypeObject(
+                             nsUri,type,reader);
+                      }
+
+                  }
+	      }</pre>
+
+<p>This should make the xsi:type based parsing possible and should
+result in proper xsi:type based serializations at runtime.</p>
+
+<p>This is automatically done but the package name for the mapper class can
+be set as an CompilerOption.</p>
+<pre>   
+	CompilerOptions compilerOptions = new CompilerOptions();
+        compilerOptions.setWriteOutput(true);
+        <strong>compilerOptions.setMapperClassPackage("com.test");</strong>
+        compilerOptions.setOutputLocation(new File("src"));
+        try {
+            SchemaCompiler schemaCompiler = new SchemaCompiler(compilerOptions);
+            XmlSchemaCollection xmlSchemaCollection = new XmlSchemaCollection();
+            XmlSchema xmlSchema =xmlSchemaCollection.read(new FileReader("schema/sample.xsd"),null);
+            schemaCompiler.compile(xmlSchema);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+</pre>
+
+<p>When the mapping package is not specified it is derived from the
+targetnamespace of the first schema that is encountered.</p>
+
+<a name="helper"></a>
+<h2>Helper mode</h2>
+
+<p>Helper mode is a fairly new feature. In the helper mode, the beans are
+plain Java beans and all the deserialization/serialization code is moved to a
+helper class. For example, the simple schema mentioned in the ADB-howto
+document will yield four classes for the two that has been previously seen.</p>
+<ol>
+  <li>MyElement.java</li>
+  <li>MyElementHelper.java</li>
+  <li>SOAPStruct.java</li>
+  <li>SOAPStructHelper.java</li>
+</ol>
+
+<p>The helpers basically contain all the code that went into the ADBBeans.
+Hence the beans in the helper mode are pretty much readable than the rest.
+Also note that the helper mode is available only if you are in the unpacked
+mode. The code generator by default does not expand the classes.</p>
+
+<p>Helper mode can be switched on by using the setHelperMode method  
+in CompilerOptions : </p>
+<pre><strong>compilerOptions.setHelperMode(true);</strong></pre>
+
+<a name="more"></a>
+<h2>More Stuff on ADB?</h2>
+<ul>
+  <li><a href="adb-tweaking.html">Tweaking the ADB Code Generator</a>-
+    explains available mechanisms to extend ADB and possibly adopt it to
+    compile schemas to support other languages.</li>
+  <li><a href="adb-codegen-integration.html">ADB and Axis2 Integration</a> -
+    explains how the ADB schema compiler was attached to the Axis2
+  framework</li>
+</ul>
+<hr>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/adb/adb-codegen-integration.html b/rampart_1_1/xdocs/1_1/adb/adb-codegen-integration.html
new file mode 100644
index 0000000..e67ba1c
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/adb/adb-codegen-integration.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+  <title>ADB Integration With Axis2</title>

+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+<body>

+<h1>ADB Integration With Axis2</h1>

+<p>This document will assist you to write an extension using the

+integrator in order to integrate ADB with Axis2.</p>

+<h2>Content</h2>

+<ul>

+<li><a href="#intro">Introduction</a></li>

+<li><a href="#select_modes">Selection of Generation Modes for

+ADB</a></li>

+<li><a href="#remember">Things to Remember</a></li>

+</ul>

+<h2><a name="intro" id="intro">Introduction</a></h2>

+<p>ADB Integration with Axis2 is simple and straightforward. Given

+the extension mechanism of the Axis2 code generator, the obvious

+choice for the integrator is to write an extension. The extension

+that is added to support ADB is the SimpleDBExtension

+(<strong>org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension</strong>)

+and can be found in the extensions list of the

+codegen-config.properties file.</p>

+<a name="select_modes" id="select_modes"></a>

+<h2>Selection of Generation Modes for ADB</h2>

+<p>The extension sets the options for the code generator via the

+CompilerOptions, depending on the users settings. The following

+table summarizes the use of options. Please refer the <a href=

+"adb-howto.html" target="_blank">ADB-How to document</a> for the

+different generation modes and their descriptions.</p>

+<table border="1">

+<tbody>

+<tr>

+<td><strong>User parameters</strong></td>

+<td><strong>Selected code generation parameters</strong></td>

+</tr>

+<tr>

+<td>None (no other parameter than the mandatory ones)</td>

+<td>wrapClasses=false,writeClasses=false</td>

+</tr>

+<tr>

+<td>-ss (server side)</td>

+<td>wrapClasses=false,writeClasses=true</td>

+</tr>

+<tr>

+<td>-u (unwrap classes)</td>

+<td>wrapClasses=false,writeClasses=true</td>

+</tr>

+</tbody>

+</table>

+<p>If the users want to override these settings manually, they need

+to use the following parameters in the command line (prefixed with

+-E)</p>

+<table border="1">

+<tbody>

+<tr>

+<td><strong>Parameter Name</strong></td>

+<td><strong>Allowed values</strong></td>

+<td><strong>Description</strong></td>

+</tr>

+<tr>

+<td>r</td>

+<td>true, false</td>

+<td>Sets the write flag. If set to true the classes will be written

+by ADB</td>

+</tr>

+<tr>

+<td>w</td>

+<td>true, false</td>

+<td>Sets the packing flag. if true the classes will be packed.</td>

+</tr>

+</tbody>

+</table>

+<p>Note that these parameters have no relevant long names and MUST

+be prefixed with a -E to be processed by the code generator. For

+example</p>

+<pre>

+WSDL2Java .... -Er true

+</pre>

+<a name="remember" id="remember"></a>

+<h2>Things to Remember</h2>

+<ol>

+<li>SimpleDBExtension is made to process requests only when the

+databinding framework is specified as ADB (using the switch -d adb

+). In the most recent release, the default has been set as ADB and

+hence if the -d option is missing then the databinding framework

+will be ADB.</li>

+</ol>

+<hr />

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/adb/adb-howto.html b/rampart_1_1/xdocs/1_1/adb/adb-howto.html
new file mode 100644
index 0000000..8a60f3a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/adb/adb-howto.html
@@ -0,0 +1,406 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=us-ascii" />
+  <title>ADB - Howto</title>
+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+<body lang="en" xml:lang="en">
+<h1>Axis2 Databinding Framework</h1>
+<p>This document aims to provide the architectural overview of the
+Axis2 Databinding Framework (referred to as ADB from here onwards)
+and be a guide to anyone who wants to use and modify ADB. The
+information is presented under the following topics.</p>
+<h2>Content</h2>
+<ul>
+<li><a href="#intro">Introduction</a></li>
+<li><a href="#archi">Architectural Overview</a></li>
+<li><a href="#code_depend">Code and Dependencies</a></li>
+<li><a href="#code_gen">Invoking the ADB Code Generator</a>
+<ul>
+<li><a href="#schema_compiler">As a Stand-alone Schema
+Compiler</a></li>
+<li><a href="#api">Through the API</a></li>
+</ul>
+</li>
+<li><a href="#gen_modes">Generation Modes</a></li>
+<li><a href="#deep">Deep into Generated Code</a>
+<ul>
+<li><a href="#example">An Example!</a></li>
+</ul>
+</li>
+<li><a href="#limitation">Known Limitations</a></li>
+<li><a href="#more">Want to Learn More?</a></li>
+</ul>
+
+<a name="intro" id="intro"></a>
+<h2>Introduction</h2>
+<p>The objective of the Axis2 Databinding framework is to provide a
+lightweight and simple schema compiler/ Java bean generator for
+Axis2. By no means it's to be a fully functional schema compiler
+like XMLBeans. Note that ADB is written in a fashion that allows it
+to be used as a stand-alone schema compiler and also to be extended
+to generate code for other languages.</p>
+<a name="archi" id="archi"></a>
+<h2>Architectural Overview</h2>
+<p>ADB is built on a modular architecture that allows it to utilize
+a pre configured writer depending on the configuration.The 'big
+block diagram' for the code generator architecture is depicted
+below</p>
+<p><img src="images/ADB.jpg" alt="ADB architecture" /></p>
+<p>ADB utilizes the WS-commons XmlSchema library for reading the
+Schema. The object model for the schema comes in the form of an
+XmlSchema object. The schema compiler keeps an instance of the
+writer (in the default case it's the JavaBeanWriter) which actually
+writes the classes. The writers may use whatever technique they
+prefer, in the case of the JavaBeanWriter, it uses an XSLT
+template. The SchemaCompiler also uses a typemapper object that
+tells it what classnames to be used for the QNames that it
+encounters. This type mapper is also part of the configuration and
+the users can override the default type mapper by overriding the
+property setting.</p>
+<a name="code_depend" id="code_depend"></a>
+<h2>Code and Dependencies</h2>
+<p>As explained in the previous section, the schema compiler
+depends on the WS-Commons XmlSchema library. The XSLT
+transformations are dependent on the JVM's DOMimplementation
+(either crimson or xerces) which means that the underlying JVM
+should be 1.4 or higher. Apart from that ADB has no dependencies on
+any other special jar files. The code for the schema compiler is
+completely in the <strong>org.apache.axis2.schema.*</strong>
+package. This package resides in the codegen module of the Axis2
+source tree.</p>
+<p>Following are the important classes and files:</p>
+<ol>
+<li><strong>SchemaCompiler</strong> - The work horse that really
+compiles the schema into classes.</li>
+<li><strong>BeanWriter</strong> - BeanWriter represents the kind of
+interface the SchemaCompiler accepts as a writer. The writer needs
+to handle the actual writing of the clasess</li>
+<li><strong>JavaBeanWriter</strong> - The default implementation of
+the BeanWriter interface.</li>
+<li><strong>TypeMap</strong> - represents the interface that the
+schema compiler looks towards to find classes</li>
+<li><strong>JavaTypeMap</strong> - the default implementation of
+the TypeMap</li>
+<li><strong>ADBBeanTemplate.xsl</strong> - the XSLtemplate the
+JavaBeanWriter uses.</li>
+<li><strong>Schema-compile.properties</strong> - The property file
+for the schema compiler</li>
+</ol>
+<p>The easiest way to obtain the ADB binaries is to run the maven
+build for the Axis2 adb-codegen module. This will generate the
+<strong>axis2-adb-codegen-{$version}.jar</strong> inside the target
+folder which is directly usable when the ADB schema compiler is
+required.</p>
+<p>The runtime dependancies for the ADB generated classes is in the
+Axis2 adb module and the kernal module. Hence to compile and work with the generated
+classes the <strong>axis2-adb-{$version}.jar</strong> and <strong>axis2-kernal-{$version}.jar</strong> needs to be
+in the classpath apart from other dependancies like the StAX,
+Axiom,Commons-logging and javax.activation.</p>
+<a name="code_gen" id="code_gen"></a>
+<h2>Invoking the ADB Code Generator</h2>
+<a name="schema_compiler"></a>
+<h3>As a Standalone Schema Compiler</h3>
+<p>ADB comes with a main class XSD2Java that allows the schemas to
+be compiled just by giving the schema file reference.This main
+class is pretty much primitive and does not provide much control
+over the code generation process. This is bound to improve in the
+near future.</p>
+<p>Code generator accepts the following parameters</p>
+<ol>
+<li>The Schema file name - This should be a complete file name
+pointing to the local file system</li>
+<li>The output folder name - This should be the name of a folder
+within the local file system</li>
+</ol>
+<p>Since the main class has no validations built in, the compiler
+is likely to cough up an unexpected error message if these
+parameters are not supplied properly.</p>
+<a name="api" id="api"></a>
+<h3>Through the API</h3>
+<p>This is the only way to harness the full potential of the schema
+compiler. The current Axis2 integration of ADB happens through this
+API. The most important classes and methods of the Schema compiler
+are as follows.</p>
+<ul>
+<li><strong>SchemaCompiler - Constructor</strong>
+<p>The constructor of the schema compiler expects a CompilerOptions
+object. This compilerOptions object is more of a holder for the
+parameters that are passed to the SchemaCompiler. The only
+mandatory parameter in the CompilerOptions is the output
+directory</p>
+</li>
+<li><strong>SchemaCompiler - Compile(XMLSchema schema)</strong>
+<p>The compile method to call for a single schema. The expected
+object is a XMLSchema which is part of the XmlSchema library.</p>
+</li>
+<li><strong>SchemaCompiler - Compile(List schemaList)</strong>
+<p>Similar to the previous method but accepts a list of schemas
+instead of one.</p>
+</li>
+</ul>
+<p>For a comprehensive code sample in invoking the schema compiler
+through the API, the following classes would be helpful. One would
+also need an understanding of the generation modes of the ADB
+schema compiler when using it through the API. Hence the following
+section includes a brief description of the generation modes .</p>
+<ul>
+<li><strong>org.apache.axis2.schema.XSD2Java</strong></li>
+<li><strong>org.apache.axis2.schema.ExtensionUtility</strong></li>
+</ul>
+<a name="gen_modes" id="gen_modes"></a>
+<h2>Generation Modes</h2>
+<p>ADB extension provides several generation modes for the data
+bound classes.</p>
+<ol>
+<li><strong>Integrated Mode</strong>
+<p>In this mode the classes are generated as inner classes of the
+stub, message receiver or the interface. The ADB framework refrains
+from writing the classes but provides a map of DOM document objects
+that contains the model for the databinding class. The implementers
+are free to use the models for their needs. The Axis2 codegen
+engine parses these documents within its own XSLT parser to create
+the necessary code.</p>
+<p>Integrated mode is supposed to be used by the tool builders.</p>
+</li>
+<li><strong>Wrapped Mode</strong>
+<p>In the wrapped mode, the ADB databinder generates one class that
+contains all the databound classes. This is convenient when the
+number of classes need to be limited.</p>
+</li>
+<li><strong>Expanded Mode</strong>
+<p>This is the usual mode where the codegenerator generates a class
+for each of the outer elements and the named complex types. The
+command line tool (XSD2Java) always generates code in the expanded
+mode.</p>
+</li>
+</ol>
+<p>The rules for generating code (described in the next section)
+applies regardless of the mode. Switching these modes can be done
+by passing the correct options via the CompilerOptions object. The
+following is table lists the options and the consequences of using
+them.</p>
+<table border="1" summary="Options and descriptions">
+<tbody>
+<tr>
+<td><strong>Field Name in Options</strong></td>
+<td><strong>Description</strong></td>
+</tr>
+<tr>
+<td>writeOutput</td>
+<td>This determines whether to write the output or not. If the flag
+is on then the classes will be written by ADB. The default is
+off.</td>
+</tr>
+<tr>
+<td>wrapClasses</td>
+<td>This determines whether to wrap the generated classes. If the
+flag is on then a single class (with adb added to the end of the
+specified package) will be generated. The default is off.</td>
+</tr>
+<tr>
+<td>mapperClassPackage</td>
+<td>The package name for the mapper class. Please see the advanced
+section for details of the mapper class</td>
+</tr>
+<tr>
+<td>helperMode</td>
+<td>The switch that determines whether to switch to helper mode or
+not. Please see the advanced section for details of the helper
+mode</td>
+</tr>
+<tr>
+<td>ns2PackageMap</td>
+<td>A map that stores the namespace name against the package name
+These details are used to override the default packages</td>
+</tr>
+</tbody>
+</table>
+<a name="deep" id="deep"></a>
+<h2>Deep into Generated Code</h2>
+<p>When the schema compiler is invoked (one-way or another) it
+generates code depending on the following rules</p>
+<ol>
+<li>All named complex types become bean classes. Any attribute or
+element encapsulated in this complex type will become a field in
+the generated class. Note that the support for constructs other
+than the sequence and all is not yet implemented.</li>
+<li>All top level elements become classes. This is a rather
+questioning feature since unless classes are generated for the top
+level elements the handling of elements become difficult and
+messy!</li>
+<li>SimpleType restrictions are handled by replacing the relevant
+type with the basetype</li>
+</ol>
+<p>Once the code is generated according to the rules it looks like
+the following. Consider the following piece of schema</p>
+<pre>
+&lt;schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+xmlns:tns="http://soapinterop.org/types" targetNamespace="http://soapinterop.org/types" 
+elementFormDefault="qualified" &gt;
+&lt;import namespace="http://schemas.xmlsoap.org/soap/encoding/"/&gt;
+ &lt;complexType name="SOAPStruct"&gt;
+  &lt;sequence&gt;
+   &lt;element name="varString" type="xsd:string"/&gt;
+   &lt;element name="varInt" type="xsd:int"/&gt;
+   &lt;element name="varFloat" type="xsd:float"/&gt;
+  &lt;/sequence&gt;
+ &lt;/complexType&gt;
+&lt;element name="myElement" type="tns:SOAPStruct"/&gt;
+&lt;/schema&gt;
+</pre>
+<p>For comprehension let us consider the expanded mode for the code
+generator. Unless specifically mentioned, the rest of this document
+assumes that the expanded mode of the code generation is used. This
+particular schema generates the following two classes in the
+designated package, which in this case would be
+<strong>org.soapinterop.types</strong>. This package is derived
+from the target namespace of the schema.</p>
+<ol>
+<li>MyElement.java</li>
+<li>SOAPStruct.java</li>
+</ol>
+<p>As explained earlier, SOAPStruct refers to the complexType.
+MyElement is the class that refers to the element. Just as
+expected, the SOAPStruct bean has getters and setters for
+varString, varInt and varFloat which are String, int and float
+respectively. MyElement on the other hand has a single field
+representing the SOAPStruct object that it encapsulates.</p>
+<p>The most important aspect of the generated code is that it
+encapsulates two methods for creation and serializing the beans.
+Note that to make this work, the generated beans implement the
+<strong>org.apache.axis2.databinding.ADBBean</strong> interface</p>
+<p>The creator and serializer methods look like the following</p>
+<ul>
+<li>
+<pre>
+public javax.xml.stream.XMLStreamReader
+    getPullParser(javax.xml.namespace.QName qName)
+</pre>
+<p>This method returns a pull parser that throws the right events
+for this particular object. However there is a subtle difference
+between element based classes and complexType based classes</p>
+<ol>
+<li>An element based bean class (like MyElement.java in the
+example) will <strong><em>ignore the passed in QName</em></strong>.
+Instead of using the passed in QName it'll utilize it's own QName
+which is embedded in the class under the constant MY_QNAME, during
+the code generation. Hence it is usual to call getPullparser with a
+null for the elements.</li>
+<li>A ComplexType based bean class(like SOAPStruct.java in the
+example) will use the passed in QName to return an instance of the
+ADBpullparser. This will effectively wrap the elements inside with
+an element having the passed QName</li>
+</ol>
+</li>
+<li>
+
+<pre>
+ public org.apache.axiom.om.OMElement getOMElement(
+            final javax.xml.namespace.QName parentQName,
+            final org.apache.axiom.om.OMFactory factory){
+</pre>
+<p>This method returns an OMElement representing the ADB bean object.</p>
+<ol>
+<li>There is an annonymous ADBDataSource class has implemented, in side the getOMElement method.
+This annonymous class implements the serialize method where the serializing logic is written,
+for that pirticular bean class. Fianlly an OMSourcedElementImpl object with the
+above annonymous class type object as the data source, is
+returned. 
+</li>
+</ol>
+</li>
+<li>
+<pre>
+ public static [Object].Factory. 
+             parse(javax.xml.stream.XMLStreamReader reader) 
+             throws java.lang.Exception 
+</pre>
+<p>This method returns a populated instance of the class in
+question. Note that</p>
+<pre>
+[Object]
+</pre>
+will be replaced by the actual class that contains this method. Say
+for SOAPStruct the method looks like
+<pre>
+public static SOAPStruct.Factory. 
+                parse(javax.xml.stream.XMLStreamReader reader) 
+                throws java.lang.Exception
+</pre>
+<p>Also note that the above parse method is available in the
+<strong>Factory</strong> class generated into the relevant top
+level class.Hence one will have to get the static Factory instance
+before calling the parse methods</p>
+</li>
+</ul>
+<a name="example" id="example"></a>
+<h3>An Example!</h3>
+<p>Consider the following XML fragment</p>
+<pre>
+&lt;myElement xmlns="http://soapinterop.org/types"&gt;
+  &lt;varInt&gt;5&lt;/varInt&gt;
+  &lt;varString&gt;Hello&lt;/varString&gt;
+  &lt;varFloat&gt;3.3&lt;/varFloat&gt;
+&lt;/myElement&gt;
+</pre>
+<p>Enthusiastic readers might already have figured out that this
+piece of XML complies to the Schema mentioned above. The following
+piece of code shows how to build a populated instance of MyElement
+with this fragment of XML</p>
+<pre>
+XMLStreamReader reader = XMLInputFactory.newInstance().
+                                createXMLStreamReader(
+                                        new ByteArrayInputStream(xmlString.getBytes()));
+MyElement elt = MyElement.Factory.parse(reader);
+</pre>
+<p>
+Optionally above xml fragment can be reproduced with the following
+code fragment
+<P>
+<pre>
+OMElement omElement = myElement.getOMElement
+		(MyElement.MY_QNAME, OMAbstractFactory.getSOAP12Factory());
+String xmlString = omElement.toStringWithConsume();
+</pre>
+<p>Although this example takes on the tedious effort of creating a
+reader out of the String, inside the Axis2 environment an
+XMLStreamReader can be direclty asked from the OMElement! Hence, the
+parse method becomes a huge advantage for hassle free object
+creation.</p>
+<p>Similarly the reader obtained from the object can also be
+utilized as needed. The following code fragment shows how to
+utilize the getPullParser method to create an OMElement :</p>
+<pre>
+XMLStreamReader reader = elt.getPullParser(null);
+OMElement omElt =  new StAXOMBuilder(reader).getDocumentElement();
+</pre>
+<p>That's all to it! If you are interested in learning more on ADB
+the following documents may also be helpful. However, be sure to
+check the limitations section that follows if you are planning to
+use ADB for something serious.</p>
+<a name="limitation" id="limitation"></a>
+<h2>Known Limitations</h2>
+<p>ADB is meant to be a 'Simple' databinding framework and was not meant to compile all types of schemas. The following limitations
+are the most highlighted.</p>
+<ol>
+<li>Complex Extensions and Restrictions.</li>
+</ol>
+<a name="more" id="more"></a>
+<h2>Want to Learn More?</h2>
+<ul>
+<li><a href="adb-advanced.html">Advanced features of the ADB code
+generator</a> - explains xsi:type based desrialization and helper
+mode</li>
+<li><a href="adb-tweaking.html">Tweaking the ADB Code
+Generator</a> - explains available mechanisms to extend ADB and
+possibly adopt it to compile schemas to support other
+languages.</li>
+<li><a href="adb-codegen-integration.html">ADB and Axis2
+Integration</a> - explains how the ADB schema compiler was attached
+to the Axis2 framework</li>
+</ul>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/adb/adb-tweaking.html b/rampart_1_1/xdocs/1_1/adb/adb-tweaking.html
new file mode 100644
index 0000000..119a174
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/adb/adb-tweaking.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+  <title>ADB Tweaking Guide</title>

+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+<body lang="en" xml:lang="en">

+<h1>ADB Tweaking Guide</h1>

+<p>This document explains the mechanisms available to extend ADB and

+possibly adopt it to compile schemas to support other

+languages.</p>

+<h2>Content</h2>

+<ul>

+<li><a href="#intro">Introduction</a></li>

+<li><a href="#config">Know the Configuration</a></li>

+<li><a href="#first_tweak">The First Tweak - Generate Plain Java

+Beans</a></li>

+<li><a href="#advanced_tweak">A More Advanced Tweak - Generate Code

+for Another Language</a></li>

+</ul>

+<a name="intro" id="intro"></a>

+<h2>Introduction</h2>

+<p>ADB is written with future extensions in mind, with a clear and

+flexible way to extend or modify it's functionality. Available

+mechanisms to extend ADB and possibly adopt it to compile schemas

+to support other languages are described below.</p>

+<a name="config" id="config"></a>

+<h2>Know the Configuration</h2>

+<p>The configuration for the ADB framework is in the

+<strong>schema-compile.properties</strong> file found in the

+<strong>org.apache.axis2.schema</strong> package. This

+properties file has the following important properties</p>

+<ul>

+<li>schema.bean.writer.class

+<p>This is the writer class. This is used by the schema compiler to

+write the beans and should implement the

+<strong>org.apache.axis2.schema.writer.BeanWriter</strong>

+interface. The schema compiler delegates the bean writing task to

+the specified instance of the BeanWriter.</p>

+</li>

+<li>schema.bean.writer.template

+<p>This specifies the template to be used in the BeanWriter. The

+BeanWriter author is free to use any mechanism to write the classes

+but the default mechanism is to use a xsl template. This property

+may be left blank if the BeanWriter implementation does not require

+a template.</p>

+</li>

+<li>schema.bean.typemap

+<p>This is the type map to be used by the schema compiler. It

+should be an implementation of the

+<strong>org.apache.axis2.schema.typemap.TypeMap</strong> interface. The

+default typemap implementation encapsulates a hashmap with type

+QName to Class name string mapping.</p>

+</li>

+</ul>

+<a name="first_tweak" id="first_tweak"></a>

+<h2>The First Tweak - Generate Plain Java Beans</h2>

+<p>The first, most simple tweak for the code generator could be to

+switch to plain bean generation. The default behavior of the ADB

+framework is to generate ADBBeans, but most users, if they want to

+use ADB as a standalone compiler, would love to have plain java

+beans. This can in fact be done by simply changing the template

+used.</p>

+<p>The template for plain java beans is already available in the

+<strong>org.apache.axis2.schema.template</strong> package. To make

+this work replace the

+<strong>/org/apache/axis2/databinding/schema/template/ADBBeanTemplate.xsl</strong>

+with the

+<strong>/org/apache/axis2/databinding/schema/template/PlainBeanTemplate.xsl</strong>

+in the schema-compile.properties<strong>.</strong></p>

+<p>Congratulations! You just tweaked ADB to generate plain java

+beans.</p>

+<p>To generate custom formats, the templates need to be modified.

+The schema for the xml generated by the JavaBeanWriter is available

+in the source tree under the Other directory in the codegen module.

+Advanced users with knowledge of XSLT can easily modify the

+templates to generate code in their own formats.</p>

+<a name="advanced_tweak" id="advanced_tweak"></a>

+<h2>A More Advanced Tweak - Generate Code for Another Language</h2>

+<p>To generate code for another language, there are two main

+components to be written.</p>

+<ul>

+<li>The BeanWriter

+<p>Implement the BeanWriter interface for this class. A nice

+example is the

+<strong>org.apache.axis2.schema.writer.JavaBeanWriter</strong>

+which has a lot of reusable code. In fact if the language is OOP

+based (such as C# or even C++), one would even be able to extend

+the JavaBeanWriter itself.</p>

+</li>

+<li>The TypeMap

+<p>Implement the TypeMap interface for this class. The

+<strong>org.apache.axis2.schema.typemap.JavaTypeMap</strong> class

+is a simple implementation for the typemap where the QName to class

+name strings are kept inside a hashmap instance. This technique is

+fairly sufficient and only the type names would need to change to

+support another language.</p>

+</li>

+</ul>

+<p>Surprisingly, this is enough to have other language support for

+ADB. Change the configuration and you are ready to generate code

+for other languages!</p>

+<p>This tweaking guide is supposed to be a simple guideline for

+anyone who wishes to dig deep into the mechanics of the ADB code

+generator. Users are free experiment with it and modify the schema

+compiler accordingly to their needs. Also note that the intention

+of this section is <em>not</em> to be a step by step guide to

+custom code generation. Anyone who wish to do so would need to dig

+into the code and get their hands dirty!</p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/adb/images/ADB.jpg b/rampart_1_1/xdocs/1_1/adb/images/ADB.jpg
new file mode 100644
index 0000000..b6c64b2
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/adb/images/ADB.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/app_server.html b/rampart_1_1/xdocs/1_1/app_server.html
new file mode 100644
index 0000000..605c6f0
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/app_server.html
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="iso-8859-1"?>

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

+       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

+  <title>Application Server Specific Configuration Guide</title>

+  <meta content="amaya 9.2.1, see http://www.w3.org/Amaya/" />

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body>

+<h1>Application Server Specific Configuration Guide</h1>

+

+<p>This document will give you that extra configuration information required

+for your Application Server to run Apache Axis2 to its fullest potential.</p>

+

+<p>Feel free to send your feedback or any learned information to our <a

+href="http://ws.apache.org/axis2/mail-lists.html">mailing lists</a>.</p>

+<a name="weblogic_websphere"></a>

+<h3>WebLogic/ WebSphere</h3>

+

+<p>We recommend using the exploded configuration to deploy Axis2 WAR in

+WebLogic and WebSphere application servers to support the hotupdate/

+hotdeployment features in Axis2. However if you do want to deploy custom

+wars say in a clustering environment, You need to add two additional 

+files into the WEB-INF named "services.list" and "modules.list" under 

+modules and services directory respectively.

+</p>

+

+<ul>

+<li><b>WEB-INF/services/services.list</b> : should list all the services (aar files) that you want to expose.</li>

+<li><b>WEB-INF/modules/modules.list</b> : should list all the modules (mar files) that you want to use.</li>

+</ul>

+NOTE: In both cases, please list one entry per line

+

+<p>WebLogic ships with jars which conflict with jars present in Axis2. So,

+kindly use &lt;prefer-web-inf-classes&gt; to ensure that jars packaged in

+Axis2 WAR are picked up from WEB-INF/lib. You can do this by setting

+&lt;prefer-web-inf-classes&gt; element in WEB-INF/weblogic.xml to true. An

+example of weblogic.xml is shown below:</p>

+<pre>&lt;weblogic-web-app&gt;

+ &lt;container-descriptor&gt;

+    &lt;prefer-web-inf-classes&gt;true&lt;/prefer-web-inf-classes&gt;

+  &lt;/container-descriptor&gt;

+&lt;/weblogic-web-app&gt;</pre>

+

+<p>If set to true, the &lt;prefer-web-inf-classes&gt; element will force

+WebLogic's classloader to load classes located in the WEB-INF directory of a

+Web application in preference to application or system classes. This is a

+recommended approach since it only impacts a single Web module. </p>

+

+<p>Please look at the following documents in WebLogic/ WebSphere for more

+information:</p>

+<ul>

+  <li><a

+    href="http://e-docs.bea.com/wls/docs81/programming/classloading.html">WebLogic

+    ServerApplication Classloading</a>- For more information on how

+    WebLogic's class loader works</li>

+  <li><a

+    href="http://e-docs.bea.com/wls/docs81/webapp/deployment.html">Redeploying

+    a Web Application in Exploded Directory Format</a></li>

+  <li><a

+    href="http://publib.boulder.ibm.com/infocenter/wsiihelp/v8r3/index.jsp?topic=/com.ibm.websphere.ii.product.ce.doc/configuring/iiyviigdepwebexpl.htm">Deploying

+    the Web application in exploded form</a></li>

+</ul>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/axis2config.html b/rampart_1_1/xdocs/1_1/axis2config.html
new file mode 100644
index 0000000..d23cb6d
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/axis2config.html
@@ -0,0 +1,448 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Axis2 Configuration Documents</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+<body lang="en">

+

+<h1>Axis2 Configuration Guide</h1>

+

+<p>In Axis2 there are three kinds of configuration files to configure the

+system. First one is to configure whole system (global configuration), second

+one is to configure a service (service configuration) and the third one is to

+configure a module (module configuration). This document will explain in

+detail the above configurations.</p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#Global_Configuration">Global Configuration

+  (axis2.xml)</a></li>

+  <li><a href="#Service_Configuration">Service Configuration

+    (services.xml)</a></li>

+  <li><a href="#Module_Configuration">Module Configuration

+  (module.xml)</a></li>

+</ul>

+

+<a name="Global_Configuration"></a>

+<h2>Global Configuration</h2>

+<ul>

+  <li>Writing axis2.xml</li>

+</ul>

+

+<p>All the configurations that require starting Axis2 are obtained from the

+axis2.xml. The way of specifying them is extremely simple and easy. The document

+is all about the proper way of specifying the configurations in axis2.xml.

+There are six top level elements that can be seen in the configuration file

+and can be listed as follows:</p>

+<ul>

+  <li><a href="#Parameter">Parameter</a></li>

+  <li><a href="#Receiver">Transport Receiver</a></li>

+  <li><a href="#Sender">Transport Sender</a></li>

+  <li><a href="#Phase_Order">Phase Order</a></li>

+  <li><a href="#References">Module References</a></li>

+  <li><a href="#Listeners">Listeners (Observers)</a></li>

+</ul>

+<a name="Parameter"></a>

+<h3>Parameter</h3>

+

+<p>In Axis2 a parameter is nothing but name value pair. Each and every top

+level parameter available in the axis2.xml (direct sub elements of root

+element) will be transformed into properties in AxisConfiguration. Therefore,

+the top level parameters in the configuration document can be accessed via

+AxisConfiguration in the running system. The correct way of defining a

+parameter is shown below:</p>

+<source><pre> 

+  &lt;parameter name="name of the parameter" &gt;parameter value &lt;/parameter&gt;</pre>

+</source>

+<a name="Receiver"></a>

+

+<h3>Transport Receiver</h3>

+

+<p>Depending on the underlying transport that Axis2 is going to run on, you

+need to have different transport receivers. The way of adding them to the

+system is as follows:</p>

+<pre> 

+&lt;transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer"&gt;

+        &lt;parameter name="port" &gt;6060&lt;/parameter&gt;

+ &lt;/transportReceiver&gt; 

+ </pre>

+</source>The above elements show the way of defining transport receivers in

+axis2.xml. Here the name attribute of the 'transportReceiver' element is the

+name of transport receiver. It can be http, tcp, smtp, commonshttp etc, and

+when the system starts up or when you set the transport at the client side,

+one can use these transport names to load the appropriate transport. Class

+attribute is to specify actual java classes which implements required

+interfaces for the transport. Any transport can have zero or more parameters,

+and if there are any, then those parameters can be accessed via the

+corresponding transport receiver. 

+

+<a name="Sender"></a>

+

+<h3>Transport Sender</h3>

+

+<p>As same as transport receivers, it is possible to register transport

+senders in the system, and later at the run time, those senders can be used

+to send the messages. As an example, consider Axis2 running under Apache

+Tomcat. Then Axis2 can use TCP transport senders to send messages rather than

+HTTP. The way of specifying transport senders is as follows:</p>

+<pre> 

+&lt;transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"&gt;

+        &lt;parameter name="PROTOCOL" locked="xsd:false"&gt;HTTP/1.0&lt;/parameter&gt;

+ &lt;/transportSender&gt; 

+ </pre>

+<strong>name:</strong> Name of the transport (it is possible to have

+http and http1 as transport name)

+

+<p><strong>class:</strong> Implementation class of the corresponding

+transport. As same as transport receivers, transport senders can have zero or

+more parameters, and if there are any then it can be accessed via

+corresponding transport sender.</p>

+<a name="Phase_Order"></a>

+<h3>Phase Order</h3>

+

+<p>The specifying order of phases in execution chain has to be done using

+phase order element and it will look like below:</p>

+<pre>&lt;phaseOrder type="InFlow"&gt;

+         &lt;phase name="TransportIn"/&gt;

+         .

+         .

+&lt;/phaseOrder&gt;   </pre>

+

+<p>The most interesting thing is that you can add handlers here as well. If

+you want to add a handler which should go into that phase, you can directly

+do that by adding a handler element into it. In addition to that, there is no

+hard coding work for the handler chain anywhere in Axis2 (at any Axis*). So

+all those configurations are also done in the phase order element. The

+complete configurations will look as follows: <source></p>

+<pre>&lt;phaseOrder type="InFlow"&gt;

+        &lt;!--   Global phases    --&gt;

+         &lt;phase name="Transport"&gt;

+            &lt;handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher"&gt;

+                &lt;order phase="Transport"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher"&gt;

+                &lt;order phase="Transport"/&gt;

+            &lt;/handler&gt;

+        &lt;/phase&gt;

+        &lt;phase name="Security"/&gt;

+        &lt;phase name="PreDispatch"/&gt;

+        &lt;phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"&gt;

+            &lt;handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+        &lt;/phase&gt;

+        &lt;!--   Global phases   --&gt;

+        &lt;!--   After the Dispatch phase module author or service author can add any phase he wants    --&gt;

+        &lt;phase name="OperationInPhase"/&gt;

+    &lt;/phaseOrder&gt;

+    &lt;phaseOrder type="OutFlow"&gt;

+        &lt;!--   user can add his own phases to this area  --&gt;

+        &lt;phase name="OperationOutPhase"/&gt;

+        &lt;!--  Global phases  --&gt;

+        &lt;!--  these phases will run irrespective of the service  --&gt;

+        &lt;phase name="MessageOut"/&gt;

+        &lt;phase name="PolicyDetermination"/&gt;

+    &lt;/phaseOrder&gt;

+    &lt;phaseOrder type="InFaultFlow"&gt;

+        &lt;phase name="PreDispatch"/&gt;

+        &lt;phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"&gt;

+            &lt;handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+            &lt;handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+        &lt;/phase&gt;

+        &lt;!--      user can add his own phases to this area  --&gt;

+        &lt;phase name="OperationInFaultPhase"/&gt;

+    &lt;/phaseOrder&gt;

+    &lt;phaseOrder type="OutFaultFlow"&gt;

+        &lt;!--      user can add his own phases to this area  --&gt;

+        &lt;phase name="OperationOutFaultPhase"/&gt;

+        &lt;phase name="PolicyDetermination"/&gt;

+        &lt;phase name="MessageOut"/&gt;

+    &lt;/phaseOrder&gt;</pre>

+</source>

+<p><strong>type:</strong> the attribute represents the type of the flow and

+can only be one of the following:</p>

+<ul>

+  <li>InFlow</li>

+  <li>OutFlow</li>

+  <li>InFaultFlow</li>

+  <li>OutFaultFlow</li>

+</ul>

+

+<p>In addition to that, the only child element that is allowed inside "phaseOrder"

+is "phase" element which represents available phases in the execution chain.

+The way of specifying phases inside "phaseOrder" is as follows:</p>

+<pre> &lt;phase name="Transport"/&gt;</pre>

+</source>

+<p><strong>name:</strong> Name of the phase. <br>

+</p>

+

+<p>There are a number of things that one has to keep in mind when changing a

+phaseOrder:</p>

+

+<p>For the phaseOrder types <strong>"InFlow"</strong> and

+<strong>"InFaultFlow"</strong></p>

+<ul>

+  <li>All the phases which are above the "Dispatch" phase including the

+    "Dispatch" phase are known as "Global phases" and one can add any number

+    of new phases here and these will be considered global.</li>

+  <li>In these two phaseOrder types the phases added after the "Dispatch"

+    phase are known as "Operation phases".</li>

+</ul>

+

+<p>For the phaseOrder types <strong>"OutFlow"</strong> and

+<strong>"OutFaultFlow"</strong></p>

+<ul>

+  <li>All the phases which are below the "MessageOut" phase, including the

+    "MessageOut" phase are known as "Global phases", and you can add new

+    phases according to your requirement.</li>

+  <li>The phases added before the "MessageOut" phase are known as "Operation

+    phases".</li>

+

+  <p><strong>Note :</strong> If you closely look at the default axis2.xml you

+  will be able to clearly identify that.</p>

+</ul>

+<a name="References"></a>

+<h3>Module References</h3>

+

+<p>If you want to engage a module, system wide, you can do it by adding top

+level module element in axis2.xml. It should look like following:</p>

+<pre>&lt;module ref="addressing"/&gt;  </pre>

+</source>

+<p><strong>ref:</strong> the module name which is going to be engage, system

+wide.</p>

+<a name="Listeners"></a>

+<h3><strong>Listeners (Observers)</strong></h3>

+

+<p>In Axis2, AxisConfiguration is observable so that one can register

+observers into that, and they will be automatically informed whenever a

+change occurs in AxisConfiguration. In the current implementation, the

+observers are informed of the following events:</p>

+<ul>

+  <li>Deploying a Service</li>

+  <li>Removing a service</li>

+  <li>Activate/Inactivate Service</li>

+  <li>Module deploy</li>

+  <li>Module remove</li>

+</ul>

+<p>Registering Observers is very useful for additional features such as RSS feed

+generation which will provide service information to subscribers. The correct

+way of registering observers should be like below:</p>

+<pre>&lt;listener class="org.apache.axis2.ObserverIMPL"&gt;

+    &lt;parameter name="RSS_URL" &gt;http://127.0.0.1/rss&lt;/parameter&gt;

+  &lt;/listener&gt;</pre>

+</source>

+<p><strong>class:</strong> Represents an Implementation class of observer,

+and it should be noted that the Implementation class should implement

+AxisObserver interface, and the class has to be available in the classpath.

+<a name="Service_Configuration"></a>

+</p>

+<h2><font>Service Configuration</font></h2>

+<ul>

+  <li><font>Writing services.xml</font></li>

+</ul>

+

+<p><font>The description of services are specified using services.xml. Each

+service archive file needs to have a services.xml in order to be a valid

+service and it should be available in the META-INF directory of the archive

+file. A very simple services.xml is shown below:</font></p>

+<source><pre>&lt;service name="name of the service" scope="name of the scope" class="full qualifide name the service lifecycle class"   targetNamespace="target namespase for the service"&gt;

+    &lt;description&gt; The description of the service  &lt;/description&gt;  

+

+    &lt;transports&gt; 

+       &lt;transport&gt;HTTP&lt;/transport&gt;

+    &lt;/transports&gt;

+    

+    &lt;schema schemaNamespace="schema namespace"/&gt; 

+     

+    &lt;messageReceivers&gt;

+            &lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+                             class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/&gt;

+    &lt;/messageReceivers&gt;

+     

+     &lt;parameter name="ServiceClass" locked="xsd:false"&gt;org.apache.axis2.sample.echo.EchoImpl&lt;/parameter&gt;

+    

+    &lt;operation name="echoString" mep="operation MEP"&gt; 

+        &lt;actionMapping&gt;Mapping to action&lt;/actionMapping&gt;

+        &lt;module ref=" a module name "/&gt;

+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;

+    &lt;/operation&gt;

+  &lt;/service&gt;</pre>

+</source>

+<p><strong>name</strong>: The service name will be the name of the

+archive file, if the .aar file contains only one service, or else the name of

+the service will be the name given by the name attribute.</p>

+

+<p><strong>scope</strong>: (Optional Attribute) The time period in which runtime information of

+deployed services will be available. Scope is of several types-

+"Application", "SOAPSession", "TransportSession", "Request". The default value (if you dont put any value) will be "Request"</p>

+

+<p><strong>class</strong>: (Optional attribute) To specify the full qualified name of the service lifecycle implementation class. ServiceLifeCycle class is usefull when you want to do some tasks when the system start and when it shutdowns.</p> 

+

+<p><strong>targetNamespace</strong>: (Optional Attribute) Target name space of the service, and

+this value will be used when generating the wsdl , if you do not specify this value , then the value will be calculated from the package name of the service impl class</p>

+

+<p><font><strong>description</strong>: This is an optional element if you

+want to display any description about the service via Axis2 web-admin module,

+then the description can be specified here.</font></p>

+

+<p><strong>transports</strong> : The transports that the service is going to

+be exposed to. This is an optional element. If the transport element is not

+present then the service will be exposed in all the transports available in

+the system. The transport child element is there to specify the transport

+prefix (the name of the transport specified in axis2.xml).</p>

+

+<p><b>parameters:</b> A services.xml can have any number of top level

+parameters and all the specified parameters will be transformed into service

+properties in the corresponding AxisService. There is a compulsory parameter

+in a services.xml called ServiceClass which specifies the java class which

+really does the job and the class will be loaded by the MessageReceiver.</p>

+

+<p><b>operations :</b> If the service impl class is java, then all the public

+methods in that service will be exposed and if the user wants to override it

+then he has to add the "operation" tag and override it. In the case of

+non-Java or if you do not have a service class, then all the operations the

+user wants to expose by the service has to be indicated in the services.xml

+and the correct way of specifying is as follows:</p>

+<pre>    &lt;operation name="echoString"&gt;

+        &lt;module ref=" a module name "/&gt;

+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;

+    &lt;/operation&gt;</pre>

+</source>

+<p>The only compulsory attribute here is "name", which represents the

+operation name that is going to be exposed. Any operation can contain module

+references as well as any number of parameters. The most interesting thing is

+that one can register custom message receivers per operation, then the

+registered message receiver will be the message receiver for the

+corresponding operation. If one does not specify the message receiver, then

+the default message receiver will do the job. <br>

+<a name="Module_Configuration"></a></p>

+

+<h2>Module Configuration</h2>

+<ul>

+  <li>Writing module.xml</li>

+</ul>

+

+<p>The description of the module is specified using the module.xml. Each

+module archive file needs to have a module.xml in order to be a valid module,

+and it should be available in the META-INF directory of the archive file. <br>

+</p>

+

+<p>A very simple module.xml is shown below:</p>

+<pre>&lt;module class="org.apache.module.Module1Impl"&gt;

+    &lt;InFlow&gt;

+        .

+        .

+    &lt;/InFlow&gt;

+    &lt;OutFlow&gt;

+        .

+        .

+    &lt;/OutFlow&gt;

+

+    &lt;OutFaultFlow&gt;

+        .   

+        .

+    &lt;/OutFaultFlow&gt;

+

+    &lt;InFaultFlow&gt;

+        .         

+        .

+    &lt;/InFaultFlow&gt;

+

+    &lt;operation name="creatSeq" mep="MEP_URI_IN_OUT"&gt;

+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;

+        &lt;parameter name="para1" locked="xsd:true"&gt;10&lt;/parameter&gt;

+    &lt;/operation&gt;

+&lt;/module&gt;</pre>

+</source>

+<p><strong>class:</strong> This is an optional attribute which indicates the

+module implementation class. A module may or may not contain a module

+implementation class since the module can also be a collection of handlers.

+If a module contains an implementation class which implements the

+org.apache.axis2.modules.Module interface where at the deployment time its

+<code>init();</code> method will be called.</p>

+

+<p><b>parameter:</b> A module can contain any number of parameters and all

+the listed parameters in the module.xml will be transformed into

+corresponding AxisModule of the module.</p>

+

+<p><b>flow: </b>Defining of handlers in a module has to be done inside flows,

+and there are four types of flows as listed below.</p>

+

+<p>It is possible to add any number of handlers into a flow and those

+handlers will be available in corresponding chains at the runtime when they

+are engaged .</p>

+<ul>

+  <li>InFlow</li>

+  <li>OutFlow</li>

+  <li>InFaultFlow</li>

+  <li>OutFaultFlow</li>

+</ul>

+

+<p><b>operations: </b> If a module wants to add an operation when it is

+engaged into a service it can be done by adding an operation tag in

+module.xml and the way of specifying the operation is the same as operation

+in services.xml.</p>

+

+<p><b>handler:</b> The Handler element consists of compulsory and optional

+attributes and the way of defining a handler will look as follows:</p>

+<pre>&lt;handler name="handler1" class="handlerClass "&gt;

+            &lt;order phase="userphase1" /&gt;

+ &lt;/handler&gt;</pre>

+</source>

+<p><b><i>Compulsory Attributes</i></b> <br>

+<b>name:</b> name of the handler<br>

+<b>class:</b> handler implementation class<br>

+<b>phase:</b> name of the phase that the handler should stay in the execution

+chain <br>

+<br>

+<i><b>Optional Attributes :</b></i><br>

+<b>phaseLast:</b> to indicate the handler is last handler of the phase<br>

+<b>phaseFirst:</b> to indicate the handler is first handler of the phase.<br>

+<b>before :</b> the handler should be invoked before the handler specified by

+the before handler<br>

+<b>after:</b> the handler should be invoked after the handler specified by

+the after handler<br>

+</p>

+

+<p><br>

+</p>

+

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/contents.html b/rampart_1_1/xdocs/1_1/contents.html
new file mode 100644
index 0000000..5d51699
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/contents.html
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

+"http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

+  <title>Axis2/Java 1.1 Documentation Home</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Apache Axis2/Java Version 1.1 Documentation Index</h1>

+

+<h2>Introduction</h2>

+

+<p>Apache Axis2, the third generation Web services engine is more efficient,

+more modular and more XML-oriented than its predecessor <a

+href="http://ws.apache.org/axis/">Apache Axis</a>. It is carefully designed

+to support the easy addition of plug-in "modules" that extend its

+functionality for features such as security and reliability.</p>

+

+<p>Apache Axis2 Version 1.1 comes to you with better Axis2 Databinding

+Framework (ADB) support, <a

+href="http://www.w3.org/TR/SOAP-attachments">attachments API</a>, Spring and

+complete support for SOAP with Attachments (SwA).</p>

+

+<p>This page will take you through the list of documents we have in store for

+you.</p>

+

+<h2>Apache Axis2 User's Guide</h2>

+

+<p>You can get started with Axis2 with the assistance of the following

+documents. They will guide you through Axis2 download, installation both as a

+standalone Web services engine and as part of a J2EE compliant servlet

+container, not forgetting the instructions on how to write Web services and

+Web services client using Apache Axis2.</p>

+<ul>

+  <li><a href="userguide.html#introduction">Introduction</a>- Outlines the

+    overall direction of the User's guide itself, with a high level

+    introduction on Axis2</li>

+  <li><a href="installationguide.html">Download and Installation</a>-Will

+    list the different distribution packages offered by Axis2, and

+    installation methods for standalone and as part of a J2EE servlet

+    container.</li>

+  <li><a href="userguide.html#ws_codegen">Creating a new Web Service with

+    Code Generation</a> -Axis2 provides two ways to create new Web Services,

+    using code generation and using XML based primary APIs. This section

+    explains how to start from a WSDL, and create a new Service with code

+    generation</li>

+  <li><a href="xmlbased-server.html">Writing Web Services Using Axis2's

+    Primary APIs</a> -Explains how to create new Web Services using XML based

+    primary API</li>

+  <li><a href="userguide.html#client">Writing a Web Service Client with Code

+    Generation </a>-Axis2 also provides a more complex, yet powerful XML

+    based client API which is intended for advanced users. However, if you

+    are a new user we recommend using the code generation approach presented

+    below</li>

+  <li><a href="dii.html">Writing Web Service Clients Using Axis2's Primary

+    APIs</a>- This section presents complex yet powerful XML based client API

+    which is intended for advanced users to write Web services clients</li>

+  <li><a href="userguide.html#config">Configuring Axis2</a>-Axis2

+    configuration is based on a repository and standard archives formats.

+    Here you will find details on how to configure Axis2. You will also find

+    reference documents that lead to greater detail in this area.</li>

+  <li><a href="pojoguide.html">POJO Web Services using Apache Axis2</a>-This guide will show you how to create a Plain Old Java Object (POJO) to deploy using Apache Axis2 on Apache Tomcat. POJOs are fast to build and easy to maintain, meaning you'll save a lot of time building and debugging your code</li>

+  <li><a href="quickstartguide.html">Axis2 Quick Start Guide</a>-The purpose of this guide is to get you started creating services and clients using Axis2 as quickly as possible. It demonstrates how to create Web services using a variety of different technologies.</</li>

+</ul>

+Also see our <a href="../faq.html">FAQ page</a> to answer those common

+questions in mind.

+

+<h2>How Tos</h2>

+

+<p>This section of documents will deal with more advanced topics including

+Axis2 support features such as Transports, Attachments, Pluggable Data

+Binding, Security, REST Web services on a detailed manner.</p>

+<ul>

+  <li><a href="webadminguide.html">Web Administrator's Guide</a>- Detailed

+    instructions on administration console of Axis2 Web application, with the

+    know how to configure Axis2 at run time.</li>

+  <li><a href="migration.html">Migrating from Axis 1.x to Axis 2</a>-Guiding

+    Axis 1.x users to switch to Axis2</li>

+  <li><a href="app_server.html">Application Server Specific Configuration

+    Guide</a>-Provides extra configuration information required for

+    Application Servers to run Axis2 to its fullest potential</li>

+  <li><a href="http://ws.apache.org/commons/axiom/OMTutorial.html">AXIOM

+    Tutorial</a>-An introduction to Axis2's Object Model</li>

+  <li><a href="rest-ws.html">REST Support</a>-Introduction on

+    Representational State Transfer</li>

+  <li><a href="Axis2-rpc-support.html">Axis2 RPC Support</a>-This documents

+    talks about the Axis2's Remote Procedure Calls support in a set of easy

+    to understand implementation steps</li>

+  <li><a href="mtom-guide.html">MTOM Guide -Sending Binary Data with

+    SOAP</a>-Describes sending binary data using SOAP Message Transmission

+    Optimization Mechanism</li>

+  <li><a href="axis2config.html">Axis2 Configuration Guide</a>-Explains the

+    three configurations-global, service and module in Axis2</li>

+  <li><a href="soapmonitor-module.html">SOAP Monitor How-to</a>-Guide on

+    utility used to see SOAP messages being used to invoke Web services along

+    with the results of those messages.</li>

+  <li><a href="WS_policy.html">Web Services Policy Support In

+    Axis2</a>-Introduction to the role of Web services policy in Axis2</li>

+  <li><a href="spring.html">Spring Framework</a>-Guide on how to use Axis2

+    with the Spring Framework</li>

+</ul>

+

+<p><strong>Data Bindings:</strong></p>

+<ul>

+  <li><a href="adb/adb-howto.html">ADB How-to</a> -Guide on Axis2 Databinding

+    Framework (ADB)</li>

+  <li><a href="adb/adb-advanced.html">Advanced ADB Framework Features</a>-The

+    document provides an insight into the newly added advance features of

+  ADB</li>

+  <li><a href="adb/adb-tweaking.html">Tweaking the ADB Code

+    Generator</a>-Explains available mechanisms to extend ADB</li>

+  <li><a href="adb/adb-codegen-integration.html">ADB Integration with

+    Axis2</a>-Guide to writing an extension using the integrator in order to

+    integrate ADB with Axis2</li>

+  <li><a href="jibx/jibx-codegen-integration.html">JiBX Integration With

+    Axis2</a>-Guide to using JiBX with Axis2 in order to expose existing Java

+    code as a Web service and to implement a client for an existing Web

+    service</li>

+</ul>

+

+<p><strong>Transports:</strong></p>

+<ul>

+  <li><a href="tcp-transport.html">TCP Transport</a>- Guide to send and

+    receive SOAP Messages via TCP in Axis2</li>

+  <li><a href="mail-transport.html">Mail Transport</a>-Explains how to invoke

+    a service using a Mail transport</li>

+  <li><a href="mail-configuration.html">Mail Transport

+    Configuration</a>-Guide to configure Axis2 in order to get mail transport

+    working</li>

+  <li><a>HTTP Transports</a>-Description on HTTP sender and HTTP receiver in

+    Axis2</li>

+  <li><a href="jms-transport.html">JMS Transport</a>-Description on JMS

+    sender and JMS receiver in Axis2</li>

+  <li><a href="transport_howto.html">Write Your Own Axis2 Transport</a>-Quick

+    and easy guide to create your own Axis2 Transport protocol</li>

+</ul>

+

+<p><strong>Axis2 Tools:</strong></p>

+<ul>

+  <li><a href="../tools/1_1/CodegenToolReference.html">Code Generator Tool Guide for Command Line &amp; Ant Task</a>-Lists command

+    line &amp; Ant task references. How to build file using custom Ant task

+    and invoking Code Generator from Ant</li>

+  <li><a href="../tools/1_1/eclipse/wsdl2java-plugin.html">Code Generator

+    Wizard Guide for Eclipse Plug-in</a>-Explains the usage of the code generator

+    eclipse plug-in for WSDL2Java and/or Java2WSDL operations</li>

+  <li><a href="../tools/1_1/eclipse/servicearchiver-plugin.html">Service

+    Archive Generator Wizard Guide for Eclipse Plug-in</a>- Describes functionality

+    of eclipse plugin service archive generator tool</li>

+  <li><a href="../tools/1_1/idea/Idea_plug-in_userguide.html">Code Generator

+    Wizard Guide for IntelliJ IDEA Plug-in</a>- Guide on the usage of IDEA code

+    generation plug-in to create service archives and generate java class

+    files from WSDL files</li>

+    <li><a href="../tools/1_1/maven-plugins/maven-aar-plugin.html">Maven2 AAR Plug-in Guide</a> - Guid to generate an Axis 2 service file (AAR file) using the maven plug-in.</li>

+<li><a href="../tools/1_1/maven-plugins/maven-java2wsdl-plugin.html">Maven2 Java2WSDL Plug-in Guide</a> - Guide to using Java2WSDL Maven 2 Plug-in that takes as input a Java class and generates a WSDL, which describes a Web service for invoking the classes methods</li>  

+<li><a href="../tools/1_1/maven-plugins/maven-wsdl2code-plugin.html">Maven2 WSDL2Code Plug-in Guide</a> - Guide to using this plugin that takes as input a WSDL and generates client and server stubs for calling or implementing a Web service matching the WSDL.</li>

+</ul>

+

+<h2>Apache Axis2 Developers</h2>

+<ul>

+  <li><a href="Axis2ArchitectureGuide.html">Axis2 Architecture

+    Guide</a>-Introduction to Axis2's modular architecture</li>

+  <!--<li><a href="api/index.html">Online Java Docs</a>-Java API

+  documentation</li>-->

+  <li><a href="http://ws.apache.org/axis2/1_1/api/index.html">Online Java

+    Docs</a>-Java API  documentation</li>

+  <!--<li><a href="advance-userguide.html">Advanced User Guide</a>- This is a

+  quick start guide for more experienced users and developers on how to

+  install, create Web services and Web service clients using Axis2.</li>-->

+  <li><a href="../refLib.html">Reference Library</a>-This document provides

+    additional information to developers on WS-* specifications, Java

+    language specifications, Subversion (SVN) control etc.</li>

+</ul>

+

+<h2>References</h2>

+

+<p>Gives you a list of published articles, tutorials and Questions-Answers on

+Apache Axis2. <a href="../articles.html">Check them out!</a> for that extra

+knowledge on the next generation Web services engine Apache Axis2. Be

+Informed and up to date!</p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/dii.html b/rampart_1_1/xdocs/1_1/dii.html
new file mode 100644
index 0000000..8b20781
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/dii.html
@@ -0,0 +1,326 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title></title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body>

+<a name="Web_Service_Clients_Using_Axis2"></a>

+

+<h1>Writing Web Service Clients Using Axis2's Primary APIs</h1>

+

+<p>This section presents complex yet powerful <strong>XML based client

+API</strong> which is intended for advanced users. However if you are a new

+user we recommend using code generation given in the <a

+href="userguide.html">user guide</a>.</p>

+

+<p>Web services can be used to provide a wide-range of functionality to the

+user from simple, less time consuming operations such as "getStockQuote" to

+time consuming business services. When we utilize (invoke using client

+applications) these Web services we cannot use simple generic invocation

+paradigms that suite all the timing complexities involved in the service

+operations. For example, if we use a single transport channel (such as HTTP)

+to invoke a Web service with an IN-OUT operation that takes a long time to

+complete, then most often we may end up with "connection time outs". On the

+other hand, if there are simultaneous service invocations that we need to

+perform from a single client application, then the use of a "blocking" client

+API will degrade the performance of the client application. Similarly, there

+are various other consequences such as One-Way transports that come into play

+when we need them. Let's try to analyze some common service invocation

+paradigms.</p>

+

+<p>Many Web service engines provide users with a Blocking and Non-Blocking

+client APIs.</p>

+<ul>

+  <li><p style="margin-bottom: 0in"><b>Blocking API</b> -Once the service

+    invocation is called, the client application hangs and only gets control

+    back when the operation completes, after which the client receives a

+    response or a fault. This is the simplest way of invoking Web services

+    and it also suites many business situations.</p>

+  </li>

+  <li><p><b>Non-Blocking API </b>- This is a callback or polling based API,

+    hence once a service invocation is called, the client application

+    immediately gets the control back and the response is retrieved using the

+    callback object provided. This approach provides the flexibility to the

+    client application to invoke several Web services simultaneously without

+    blocking the operation already invoked.</p>

+  </li>

+</ul>

+

+<p>Both these mechanisms work in the API level. Let's name the asynchronous

+behavior that we can get using the Non-Blocking API as <b>API Level

+Asynchrony.</b></p>

+

+<p>Both these mechanisms use single transport connections to send the request

+and to receive the response. They severely lag the capability of using two

+transport connections for the request and the response (either One-Way or

+Two-Way). So both these mechanisms fail to address the problem of long

+running transactions (the transport connection may time-out before the

+operation completes). A possible solution would be to use two separate

+transport connections for request and response. The asynchronous behavior

+that we gain using this solution can be called <b>Transport Level

+Asynchrony</b>.</p>

+

+<p>By <strong>combining API Level Asynchrony &amp; Transport Level

+Asynchrony</strong> we can obtain four different invocation patterns for Web

+services as shown in the following table.</p>

+<a name="table1"></a>

+

+<table width="100%" border="1" cellpadding="0" cellspacing="0">

+  <tbody>

+    <tr>

+      <td width="33%" height="19"><p><strong>API

+        (Blocking/Non-Blocking)</strong></p>

+      </td>

+      <td width="33%"><p><strong>Dual Transports (Yes/No)</strong></p>

+      </td>

+      <td width="33%"><p><strong>Description</strong></p>

+      </td>

+    </tr>

+    <tr>

+      <td width="33%" height="19"><p>Blocking</p>

+      </td>

+      <td width="33%"><p>No</p>

+      </td>

+      <td width="33%"><p>The simplest and more familiar invocation pattern</p>

+      </td>

+    </tr>

+    <tr>

+      <td width="33%" height="19"><p>Non-Blocking</p>

+      </td>

+      <td width="33%"><p>No</p>

+      </td>

+      <td width="33%"><p>Using callbacks or polling</p>

+      </td>

+    </tr>

+    <tr>

+      <td width="33%" height="19"><p>Blocking</p>

+      </td>

+      <td width="33%"><p>Yes</p>

+      </td>

+      <td width="33%"><p>This is useful when the service operation is IN-OUT

+        in nature but the transport used is One-Way (e.g. SMTP)</p>

+      </td>

+    </tr>

+    <tr>

+      <td width="33%" height="19"><p>Non-Blocking</p>

+      </td>

+      <td width="33%"><p>Yes</p>

+      </td>

+      <td width="33%"><p>This is can be used to gain the maximum asynchronous

+        behavior. Non blocking in the API level and also in the transport

+        level</p>

+      </td>

+    </tr>

+  </tbody>

+</table>

+

+<p>Axis2 provides the user with all these possibilities to invoke Web

+services.</p>

+

+<p>Following section present clients that use different possibilities

+presented above to invoke a Web Service using <code>ServiceClient</code>s.

+All samples mentioned in this guide are located at the <b><font

+color="#000000">"samples\userguide\src"</font></b> directory of the binary

+distribution.</p>

+

+<p>This section presents four types of clients.</p>

+<ol>

+  <li>Request-Response, Blocking Client</li>

+  <li>One Way Client</li>

+  <li>Request-Response, Non-Blocking that uses one transport connection</li>

+  <li>Request-Response, Non-Blocking that uses two transport connections</li>

+</ol>

+<a name="EchoBlockingClient"></a>

+

+<h4>Request-Response, Blocking Client</h4>

+

+<p>Axis2 provides the user with several invocation patterns for Web services,

+ranging from pure blocking single channel invocations to non-blocking dual

+channel invocations. Let's first see how we can write a client to invoke

+"echo" operation of "MyService" using the simplest blocking invocation. The

+client code you need to write is as follows.</p>

+<source><pre>  try {

+            OMElement payload = ClientUtil.getEchoOMElement();

+            <span style="color: rgb(36, 193, 19);">            

+            Options options = new Options();

+            options.setTo(targetEPR); // this sets the location of MyService service

+            

+            ServiceClient serviceClient = new ServiceClient();

+            serviceClient.setOptions(options);

+

+            OMElement result = serviceClient.sendReceive(payload);

+            </span>

+            System.out.println(result);

+

+        } catch (AxisFault axisFault) {

+            axisFault.printStackTrace();

+        } 

+}</pre>

+</source>

+<p>1. The lines highlighted in green lines show the set of operations that

+you need to perform in order to invoke a Web service.</p>

+

+<p>2. The rest is used to create the OMElement that needs to be sent and

+display the response OMElement.</p>

+

+<p>To test this client, use the provided ant build file that can be found in

+the "<strong>Axis2_HOME/samples/userguide</strong>" directory. Run the

+"run.client.blocking" target. If you can see the response OMElement printed

+in your command line, then you have successfully tested the client.</p>

+<a name="PingClient"></a>

+

+<h4>One Way Client</h4>

+

+<p>In the Web service "MyService" we had an IN-ONLY operation with the name

+"ping" (see <a href="userguide.html#Web_Services_Using_Axis2">Creating a New Web Service</a>). Let's write a client to invoke this operation. The client

+code is as follows:</p>

+<pre> try {

+       OMElement payload = ClientUtil.getPingOMElement();

+       Options options = new Options();

+       options.setTo(targetEPR);

+       ServiceClient serviceClient = new ServiceClient();

+       serviceClient.setOptions(options);

+       serviceClient.fireAndForget(payload);

+        /**

+         * We have to block this thread untill we send the request , the problem

+         * is if we go out of the main thread , then request wont send ,so

+         * you have to wait some time :)

+         */

+       Thread.sleep(500);

+     } 

+catch (AxisFault axisFault) {

+            axisFault.printStackTrace();

+     }</pre>

+

+<p>Since we are accessing an IN-ONLY operation we can directly use the

+<code>fireAndForget()</code> in ServiceClient to invoke this operation. This

+will not block the invocation and will return the control immediately back to

+the client. You can test this client by running the target "run.client.ping"

+of the ant build file at "<strong>Axis2Home/samples/userguide</strong>".</p>

+

+<p>We have now invoked the two operations in our service. Are we done? No!

+There's a lot more to explore. Let's see some other ways to invoke the same

+operations.</p>

+<a name="EchoNonBlockingClient"></a>

+

+<h4>Request-Response, Non-Blocking that uses one transport connection</h4>

+

+<p>In the "EchoBlockingClient" once the

+<code>serviceClient.sendReceive(payload);</code> is called, the client is

+blocked till the operation is complete. This behavior is not desirable when

+there are many Web service invocations to be done in a single client

+application or within a GUI. A solution would be to use a Non-Blocking API to

+invoke Web services. Axis2 provides a callback based non-blocking API for

+users.</p>

+

+<p>A sample client for this can be found under

+"<strong>Axis2_HOME/samples/userguide/src/userguide/clients</strong>" with

+the name "EchoNonBlockingClient". If we consider the changes that users may

+have to do with respect to the "EchoBlockingClient" that we have already

+seen, it will be as follows:</p>

+<pre style="margin-bottom: 0.2in">serviceClient.sendReceiveNonblocking(payload, callback);</pre>

+

+<p>The invocation accepts a callback object as a parameter. Axis2 client API

+provides an abstract Callback with the following methods:</p>

+<pre>public abstract void onComplete(AsyncResult result);

+public abstract void onError(Exception e);

+public boolean isComplete() {}</pre>

+

+<p>The user is expected to implement the "onComplete " and "onError " methods

+of their extended call back class. The Axis2 engine calls the "onComplete"

+method once the Web service response is received by the Axis2 Client API

+(ServiceClient). This will eliminate the blocking nature of the Web service

+invocation and provide users with the flexibility to use Non Blocking API for

+Web service Clients.</p>

+

+<p>To run the sample client ("EchoNonBlockingClient") you can simply use the

+<code>run.client.nonblocking</code> target of the ant file found at the

+"<strong>Axis2_HOME/samples/userguide</strong>" directory.</p>

+<a name="EchoNonBlockingDualClient"></a>

+

+<h4>Request-Response, Non-Blocking that uses two transport connections</h4>

+

+<p>The solution provided by the Non-Blocking API has one limitation when it

+comes to Web service invocations which take a long time to complete. The

+limitation is due to the use of single transport connections to invoke the

+Web service and to retrieve the response. In other words, client API provides

+a non blocking invocation mechanism for users, but the request and the

+response come in a single transport (Two-Way transport) connection (like

+HTTP). Long running Web service invocations or Web service invocations using

+One-Way transports (like SMTP) cannot be utilized by simply using a non

+blocking invocation.</p>

+

+<p>The trivial solution is to use separate transport connections (either

+One-Way or Two-Way) for the request and response. The next problem that needs

+to be solved is the correlation (correlating the request and the response).

+<a href="http://www.w3.org/2002/ws/addr/" target="_blank">WS-Addressing</a>

+provides a neat solution to this using &lt;wsa:MessageID&gt; and

+&lt;wsa:RelatesTo&gt; headers. Axis2 provides support for addressing based

+correlation mechanism and a complying Client API to invoke Web services with

+two transport connections. (Core of Axis2 does not depend on WS-Addressing,

+but contains a set of parameters like in addressing that can be populated in

+any means. WS-Addressing is one of the uses that may populate them. Even the

+transports can populate these. Hence Axis2 has the flexibility to use

+different versions of addressing)</p>

+

+<p>Users can select between Blocking or Non-Blocking APIs for the Web service

+clients with two transport connections. By simply using a boolean flag, the

+same API can be used to invoke Web services (IN-OUT operations) using two

+separate transport connections. Let's see how it's done using an example.

+Following code fragment shows how to invoke the same "echo" operation using

+Non-Blocking API with two transport connections<strong>. The ultimate

+asynchrony!!</strong></p>

+<pre>  try {

+            OMElement payload = ClientUtil.getEchoOMElement();

+

+            Options options = new Options();

+            options.setTo(targetEPR);

+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+            options.setUseSeparateListener(true);

+            options.setAction("urn:echo");  // this is the action mapping we put within the service.xml

+

+            //Callback to handle the response

+            Callback callback = new Callback() {

+                public void onComplete(AsyncResult result) {

+                    System.out.println(result.getResponseEnvelope());

+                }

+

+                public void onError(Exception e) {

+                    e.printStackTrace();

+                }

+            };

+            //Non-Blocking Invocation            

+            sender = new ServiceClient();            

+            sender.engageModule(new QName(Constants.MODULE_ADDRESSING));

+            sender.setOptions(options);            

+            sender.sendReceiveNonBlocking(payload, callback);            

+            //Wait till the callback receives the response.            

+            while (!callback.isComplete()) {                

+             Thread.sleep(1000);            

+            }            

+            //Need to close the Client Side Listener.        

+            } catch (AxisFault axisFault) {            

+              axisFault.printStackTrace();

+            } catch (Exception ex) {

+              ex.printStackTrace();

+            } finally {

+            try {

+                sender.cleanup();

+            } catch (AxisFault axisFault) {

+                //have to ignore this

+            }

+        }</pre>

+

+<p>The boolean flag (value true) in the

+<b><code>options.setUseSeparateListener(...)</code></b> method informs the

+Axis2 engine to use separate transport connections for request and response.

+Finally <b><code>sender.cleanup()</code></b> informs the Axis2 engine to stop

+the client side listener started to retrieve the response.</p>

+

+<p>To run the sample client ("EchoNonBlockingDualClient") you can simply use

+the "run.client.nonblockingdual" target of the ant file found at the

+"<strong>Axis2_HOME/samples/userguide/</strong>" directory.</p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/http-transport.html b/rampart_1_1/xdocs/1_1/http-transport.html
new file mode 100644
index 0000000..75edb6a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/http-transport.html
@@ -0,0 +1,216 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<html>

+

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>HTTP transports</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+

+<a name="configTransport"></a>

+<h1>HTTP Transport</h1>

+

+<p>This document is all about HTTP sender and HTTP receiver, and how they

+work in Axis2.</p>

+

+<p><i>Send your feedback or questions to: <a

+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix

+subject with [Axis2]. To subscribe to mailing list see <a

+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#CommonsHTTPTransportSender">CommonsHTTPTransportSender</a>

+    <ul>

+      <li><a href="#httpsupport">HTTPS support</a></li>

+    </ul>

+  </li>

+  <li><a href="#timeout_config">Timeout Configuration</a></li>

+  <li><a href="#version_config">HTTP Version Configuration</a></li>

+  <li><a href="#auth">Proxy Authentication</a></li>

+  <li><a href="#preemptive_auth">Basic,Digest and NTLM Authentication</a></li>

+</ul>

+

+<a name="CommonsHTTPTransportSender"></a>

+<h2>CommonsHTTPTransportSender</h2>

+

+<p>This is the default transport sender that is used in Server API as well as

+Client API. As the name implies it is based on commons-httpclient-3.0.1. In

+order to acquire the maximum flexibility, this sender has implemented POST

+interface and GET interface. GET and HTTP interfaces are also involved in Axis2 REST support.</p>

+

+<p>Chunking and KeepAlive support is also integrated via the

+facilities provided by commons-httpclient along with HTTP 1.1 support.</p>

+

+<p>&lt;transportSender/&gt; element is used to define transport senders in

+the Axis2.xml as follows:</p>

+<pre>&lt;transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"&gt;

+     &lt;parameter name="PROTOCOL" locked="false"&gt;HTTP/1.1&lt;/parameter&gt;

+     &lt;parameter name="Transfer-Encoding"&gt;chunked&lt;/parameter&gt;

+      &lt;/transportSender&gt;

+</pre>

+

+<p>The above code snippet shows the simplest configuration of transport

+sender for common use. &lt;parameter/&gt; element introduces the additional parameters that

+should be compliant with the sender. HTTP PROTOCOL version sets as HTTP/1.0

+or HTTP/1.1. Default version is HTTP/1.1. It should be noted that chunking

+support is available only for HTTP/1.1. Thus, even if the user turn on "chunking", if the HTTP version is 1.0, this setting will be ignored by the transport framework. KeepAlive property is default in version 1.1.</p>

+

+<p>Some absolute properties are provided at runtime, such as character encoding style (UTF-8, UTF-16 etc) etc, are provided via MessageContext.</p>

+

+<a name="httpsupport"></a>

+<h3>HTTPS support</h3>

+

+It should be noted that CommonsHTTPTransportSender can be used to communicate

+over https. <code></code>

+<pre>&lt;transportSender name="<b>https</b>" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"&gt;

+     &lt;parameter name="PROTOCOL" locked="false"&gt;HTTP/1.1&lt;/parameter&gt;

+    &lt;parameter name="Transfer-Encoding"&gt;chunked&lt;/parameter&gt;

+ &lt;/transportSender&gt;

+</pre>

+

+<p>Please note that https works only when the server does not expect to

+authenticate the clients and where the server has the clients' public keys in

+its trust store.</p>

+

+<a name="timeout_config"></a>

+<h2>Timeout Configuration</h2>

+

+<p>There are two timeout exists in transport level. They are called, Socket

+timeout and Connection timeout. This can be configured in deployment time or

+in run time. At the time of deployment, user has to add the following lines in

+Axis2.xml.</p>

+

+<p>For Socket timeout:</p>

+<pre>&lt;parameter name="SO_TIMEOUT" locked="false"&gt;some_int_value&lt;/parameter&gt;</pre>

+

+<p>For Connection timeout:</p>

+<pre> &lt;parameter name="CONNECTION_TIMEOUT" locked="false"&gt;some_int_value&lt;/parameter&gt;</pre>

+<br>

+At runtime it is set as follows in the Stub. <source>

+<pre>...

+Options options = new Options();

+options.setProperty(HTTPConstants.SO_TIMEOUT,new Integer(timeOutInMilliSeconds));

+options.setProperty(HTTPConstants.CONNECTION_TIMEOUT,new Integer(timeOutInMilliSeconds));

+

+// or

+

+options.setTimeOutInMilliSeconds(timeOutInMilliSeconds);

+...</pre>

+</source>

+

+<a name="version_config"></a>

+<h2>HTTP Version Configuration</h2>

+

+<p>The default HTTP version is 1.1. There are two methods in which user can

+change HTTP version to 1.0</p>

+<ol>

+  <li>By defining version in Axis2.xml as shown below.</li>

+  <pre> &lt;parameter name="PROTOCOL" locked="false"&gt;HTTP/1.0&lt;/parameter&gt;</pre>

+  <li>Or user can change version at runtime by doing the following</li>

+  <pre>...

+options.setProperty(org.apache.axis2.context.MessageContextConstants.HTTP_PROTOCOL_VERSION,org.apache.axis2.transport.http.HTTPConstants.HEADER_PROTOCOL_10);

+...</pre>

+</ol>

+

+<a name="auth"></a>

+<h2>Proxy Authentication</h2>

+

+<p>Commons-http client has the inbuilt ability to support proxy authentication. Axis2 uses deployment time and runtime mechanisms to authenticate proxies.

+In deployment time, user has to change the Axis2.xml as follows. This

+authentication will be available in http and https.</p>

+<pre>&lt;transportSender name="<b>http</b>" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"&gt;

+        &lt;parameter name="PROTOCOL" locked="false"&gt;HTTP/1.1&lt;/parameter&gt;

+        &lt;parameter name="PROXY" proxy_host="proxy_host_name" proxy_port="proxy_host_port" locked="true&gt;userName:domain:passWord&lt;/parameter&gt;

+&lt;/transportSender&gt;

+</pre>

+

+<p>For a particular proxy, if authentication is not available fill

+"userName:domain:passWord"as "anonymous:anonymous:anonymous".</p>

+

+<p>At runtime user can override the PROXY settings with an Object of

+HttpTransportProperties.ProxyProperties. On the stub initiate an object of

+prior and set it to the MessageContext's property bag via

+HttpConstants.PROXY. On the stub, it depicts as follows,</p>

+<source>

+<pre>...

+Options options = new Options();

+....

+

+HttpTransportProperties.ProxyProperties proxyProperties = new HttpTransportProperties.new ProxyProperties();

+proxyProperties.setProxyHostName(....);

+proxyProperties.setProxyPort(...);

+...

+options.setProperty(HttpConstants.PROXY, proxyProperties);

+....

+</pre>

+</source>

+

+<p>The above code would eventually override the deployment proxy

+configuration settings.</p>

+

+

+<a name="preemptive_auth"></a>

+<h2>Basic,Digest and NTLM Authentication</h2>

+

+<p>HttpClient supports three different types of http authentication schemes: Basic, Digest and NTLM. Based on the challenge provided by server httpclient automatically selects the authentication scheme the request should be authenticated with. The most secure will be NTLM and least secure will be Basic.</p>

+

+<p>NTLM is the most complex of the authentication protocols supported by

+HttpClient. It requires an instance of NTCredentials be available for the

+domain name of the server or the default credentials. Note that since NTLM

+does not use the notion of realms HttpClient uses the domain name of the

+server as the name of the realm. Also note that the username provided to the

+NTCredentials should not be prefixed with the domain - ie: "axis2" is correct

+whereas "DOMAIN\axis2" is not correct.</p>

+

+<p>There are some significant differences in the way that NTLM works compared

+with basic and digest authentication. These differences are generally handled

+by HttpClient, however having an understanding of these differences can help

+avoid problems when using NTLM authentication.</p>

+<ol>

+  <li>NTLM authentication works almost exactly the same as any other form of

+    authentication in terms of the HttpClient API.  The only difference is

+    that you need to supply 'NTCredentials' instead of

+    'UsernamePasswordCredentials' (NTCredentials actually extends

+    UsernamePasswordCredentials so you can use NTCredentials right throughout

+    your application if need be).</li>

+  <li>The realm for NTLM authentication is the domain name of the computer

+    being connected to, this can be troublesome as servers often have

+    multiple domain names that refer to them.  Only the domain name that

+    HttpClient connects to (as specified by the HostConfiguration) is used to

+    look up the credentials. It is generally advised that while initially

+    testing NTLM authentication, you pass the realm in as null which is used

+    as the default.</li>

+  <li>NTLM authenticates a connection and not a request, so you need to

+    authenticate every time a new connection is made and keeping the

+    connection open during authentication is vital.  Due to this, NTLM cannot

+    be used to authenticate with both a proxy and the server, nor can NTLM be

+    used with HTTP 1.0 connections or servers that do not support HTTP

+    keep-alives.</li>

+</ol>

+

+<p>Axis2 also allows to add a custom Authentication Scheme to httpclient.</p>

+

+<p>The static inner bean Authenticator of HttpTransportProperties will hold the state of the server to be authenticated with. Once filled it has to be set to the Options's property bag with the key as HTTPConstants.AUTHENTICATE. The following code snippet shows the way of configuring the transport framework to use Basic Authentication:</p>

+ 

+ <source>

+<pre>

+ ...

+ Options options = new Options();

+ 

+ HttpTransportProperties.Authenticator

+                       auth = new HttpTransportProperties.Authenticator();

+            auth.setUsername("username");

+            auth.setPassword("password");

+            // set if realm or domain is know

+

+ options.setProperty(org.apache.axis2.transport.http.HTTPConstants.BASIC_AUTHENTICATE,auth);

+ ...

+ </pre></source>

+

+

+</body>

+

+</html>

diff --git a/rampart_1_1/xdocs/1_1/images/Architecture.gif b/rampart_1_1/xdocs/1_1/images/Architecture.gif
new file mode 100644
index 0000000..78c30a3
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/Architecture.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/AxisService.jpg b/rampart_1_1/xdocs/1_1/images/AxisService.jpg
new file mode 100644
index 0000000..937a48d
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/AxisService.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/Component.png b/rampart_1_1/xdocs/1_1/images/Component.png
new file mode 100644
index 0000000..1988dab
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/Component.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM001.gif b/rampart_1_1/xdocs/1_1/images/OM001.gif
new file mode 100644
index 0000000..8831833
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM001.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM002.jpg b/rampart_1_1/xdocs/1_1/images/OM002.jpg
new file mode 100644
index 0000000..a0a30db
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM002.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM003.jpg b/rampart_1_1/xdocs/1_1/images/OM003.jpg
new file mode 100644
index 0000000..3c669a4
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM003.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM004.jpg b/rampart_1_1/xdocs/1_1/images/OM004.jpg
new file mode 100644
index 0000000..309bd21
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM004.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM005.gif b/rampart_1_1/xdocs/1_1/images/OM005.gif
new file mode 100644
index 0000000..49209e4
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM005.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM006.gif b/rampart_1_1/xdocs/1_1/images/OM006.gif
new file mode 100644
index 0000000..2e17ed0
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM006.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM007.gif b/rampart_1_1/xdocs/1_1/images/OM007.gif
new file mode 100644
index 0000000..010fe53
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM007.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM008.gif b/rampart_1_1/xdocs/1_1/images/OM008.gif
new file mode 100644
index 0000000..345a4a6
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM008.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/OM1.png b/rampart_1_1/xdocs/1_1/images/OM1.png
new file mode 100644
index 0000000..c09b9c9
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/OM1.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/ServerSideFault.png b/rampart_1_1/xdocs/1_1/images/ServerSideFault.png
new file mode 100644
index 0000000..e0df957
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/ServerSideFault.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/ServiceDesc.gif b/rampart_1_1/xdocs/1_1/images/ServiceDesc.gif
new file mode 100644
index 0000000..466a507
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/ServiceDesc.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/TotalArch.png b/rampart_1_1/xdocs/1_1/images/TotalArch.png
new file mode 100644
index 0000000..d0bdcef
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/TotalArch.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/WomBuilder.png b/rampart_1_1/xdocs/1_1/images/WomBuilder.png
new file mode 100644
index 0000000..74254a8
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/WomBuilder.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/activate.jpg b/rampart_1_1/xdocs/1_1/images/activate.jpg
new file mode 100644
index 0000000..7528718
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/activate.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/admin.jpg b/rampart_1_1/xdocs/1_1/images/admin.jpg
new file mode 100644
index 0000000..ff89070
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/admin.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/adminlogin.jpg b/rampart_1_1/xdocs/1_1/images/adminlogin.jpg
new file mode 100644
index 0000000..8235e2b
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/adminlogin.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/adminmain.jpg b/rampart_1_1/xdocs/1_1/images/adminmain.jpg
new file mode 100644
index 0000000..ef14901
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/adminmain.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/ant.jpg b/rampart_1_1/xdocs/1_1/images/ant.jpg
new file mode 100644
index 0000000..20531e3
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/ant.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi-guide/CodegenArchitecture-new.gif b/rampart_1_1/xdocs/1_1/images/archi-guide/CodegenArchitecture-new.gif
new file mode 100644
index 0000000..8661c5f
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi-guide/CodegenArchitecture-new.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi-guide/CodegenArchitecture.jpg b/rampart_1_1/xdocs/1_1/images/archi-guide/CodegenArchitecture.jpg
new file mode 100644
index 0000000..117c455
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi-guide/CodegenArchitecture.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi-guide/all.png b/rampart_1_1/xdocs/1_1/images/archi-guide/all.png
new file mode 100644
index 0000000..4299157
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi-guide/all.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi-guide/big-picture.gif b/rampart_1_1/xdocs/1_1/images/archi-guide/big-picture.gif
new file mode 100644
index 0000000..7023f00
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi-guide/big-picture.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi-guide/contexts.png b/rampart_1_1/xdocs/1_1/images/archi-guide/contexts.png
new file mode 100644
index 0000000..2ebb888
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi-guide/contexts.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi-guide/phases.png b/rampart_1_1/xdocs/1_1/images/archi-guide/phases.png
new file mode 100644
index 0000000..a8ca009
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi-guide/phases.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi-guide/soap-processing.gif b/rampart_1_1/xdocs/1_1/images/archi-guide/soap-processing.gif
new file mode 100644
index 0000000..5a3ec54
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi-guide/soap-processing.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi-guide/soap.gif b/rampart_1_1/xdocs/1_1/images/archi-guide/soap.gif
new file mode 100644
index 0000000..caefbbd
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi-guide/soap.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi001.gif b/rampart_1_1/xdocs/1_1/images/archi001.gif
new file mode 100644
index 0000000..1be0477
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi001.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi002.gif b/rampart_1_1/xdocs/1_1/images/archi002.gif
new file mode 100644
index 0000000..ca56797
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi002.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi003.gif b/rampart_1_1/xdocs/1_1/images/archi003.gif
new file mode 100644
index 0000000..3f6fe8c
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi003.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi004.jpg b/rampart_1_1/xdocs/1_1/images/archi004.jpg
new file mode 100644
index 0000000..ffe25f7
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi004.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi005.jpg b/rampart_1_1/xdocs/1_1/images/archi005.jpg
new file mode 100644
index 0000000..43d703a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi005.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi006.jpg b/rampart_1_1/xdocs/1_1/images/archi006.jpg
new file mode 100644
index 0000000..50a2122
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi006.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi007.jpg b/rampart_1_1/xdocs/1_1/images/archi007.jpg
new file mode 100644
index 0000000..52db437
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi007.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi008.gif b/rampart_1_1/xdocs/1_1/images/archi008.gif
new file mode 100644
index 0000000..e11dc34
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi008.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi009.jpg b/rampart_1_1/xdocs/1_1/images/archi009.jpg
new file mode 100644
index 0000000..68bdd0c
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi009.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi010.jpg b/rampart_1_1/xdocs/1_1/images/archi010.jpg
new file mode 100644
index 0000000..d7ad027
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi010.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi011.gif b/rampart_1_1/xdocs/1_1/images/archi011.gif
new file mode 100644
index 0000000..3891ebd
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi011.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi012.jpg b/rampart_1_1/xdocs/1_1/images/archi012.jpg
new file mode 100644
index 0000000..0d9b86a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi012.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi013.gif b/rampart_1_1/xdocs/1_1/images/archi013.gif
new file mode 100644
index 0000000..ddbc0dc
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi013.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi014.jpg b/rampart_1_1/xdocs/1_1/images/archi014.jpg
new file mode 100644
index 0000000..b618efd
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi014.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi015.jpg b/rampart_1_1/xdocs/1_1/images/archi015.jpg
new file mode 100644
index 0000000..5ab270c
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi015.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi016.jpg b/rampart_1_1/xdocs/1_1/images/archi016.jpg
new file mode 100644
index 0000000..ab6063f
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi016.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi017.jpg b/rampart_1_1/xdocs/1_1/images/archi017.jpg
new file mode 100644
index 0000000..646de18
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi017.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi018.jpg b/rampart_1_1/xdocs/1_1/images/archi018.jpg
new file mode 100644
index 0000000..9f7cf29
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi018.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi019.jpg b/rampart_1_1/xdocs/1_1/images/archi019.jpg
new file mode 100644
index 0000000..b0e87b9
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi019.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi020.jpg b/rampart_1_1/xdocs/1_1/images/archi020.jpg
new file mode 100644
index 0000000..2d31c63
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi020.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi021.jpg b/rampart_1_1/xdocs/1_1/images/archi021.jpg
new file mode 100644
index 0000000..c119a5b
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi021.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi022.jpg b/rampart_1_1/xdocs/1_1/images/archi022.jpg
new file mode 100644
index 0000000..376cd53
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi022.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi023.jpg b/rampart_1_1/xdocs/1_1/images/archi023.jpg
new file mode 100644
index 0000000..157a228
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi023.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi024.jpg b/rampart_1_1/xdocs/1_1/images/archi024.jpg
new file mode 100644
index 0000000..68adf2e
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi024.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi025.jpg b/rampart_1_1/xdocs/1_1/images/archi025.jpg
new file mode 100644
index 0000000..1df288a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi025.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/archi026.jpg b/rampart_1_1/xdocs/1_1/images/archi026.jpg
new file mode 100644
index 0000000..5f0a50d
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/archi026.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/arrow_left.gif b/rampart_1_1/xdocs/1_1/images/arrow_left.gif
new file mode 100644
index 0000000..01100ec
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/arrow_left.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/arrow_right.gif b/rampart_1_1/xdocs/1_1/images/arrow_right.gif
new file mode 100644
index 0000000..b7c1d92
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/arrow_right.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/axis.jpg b/rampart_1_1/xdocs/1_1/images/axis.jpg
new file mode 100644
index 0000000..73371d8
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/axis.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/ayncresult.png b/rampart_1_1/xdocs/1_1/images/ayncresult.png
new file mode 100644
index 0000000..a7916bb
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/ayncresult.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/call.png b/rampart_1_1/xdocs/1_1/images/call.png
new file mode 100644
index 0000000..ba927e4
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/call.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/callback.png b/rampart_1_1/xdocs/1_1/images/callback.png
new file mode 100644
index 0000000..da62b3e
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/callback.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/cases.jpg b/rampart_1_1/xdocs/1_1/images/cases.jpg
new file mode 100644
index 0000000..a20b945
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/cases.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clientAPi.png b/rampart_1_1/xdocs/1_1/images/clientAPi.png
new file mode 100644
index 0000000..8f205d6
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clientAPi.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clientside.png b/rampart_1_1/xdocs/1_1/images/clientside.png
new file mode 100644
index 0000000..9770fae
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clientside.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image002.jpg b/rampart_1_1/xdocs/1_1/images/clip_image002.jpg
new file mode 100644
index 0000000..f22203d
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image002.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image004.jpg b/rampart_1_1/xdocs/1_1/images/clip_image004.jpg
new file mode 100644
index 0000000..492dae9
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image004.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image006.jpg b/rampart_1_1/xdocs/1_1/images/clip_image006.jpg
new file mode 100644
index 0000000..bc47fa3
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image006.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image008.jpg b/rampart_1_1/xdocs/1_1/images/clip_image008.jpg
new file mode 100644
index 0000000..8324818
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image008.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image010.jpg b/rampart_1_1/xdocs/1_1/images/clip_image010.jpg
new file mode 100644
index 0000000..ee235a2
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image010.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image012.jpg b/rampart_1_1/xdocs/1_1/images/clip_image012.jpg
new file mode 100644
index 0000000..568c630
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image012.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image014.jpg b/rampart_1_1/xdocs/1_1/images/clip_image014.jpg
new file mode 100644
index 0000000..796ca01
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image014.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image016.jpg b/rampart_1_1/xdocs/1_1/images/clip_image016.jpg
new file mode 100644
index 0000000..89750a7
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image016.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image018.jpg b/rampart_1_1/xdocs/1_1/images/clip_image018.jpg
new file mode 100644
index 0000000..78ae0c8
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image018.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image020.jpg b/rampart_1_1/xdocs/1_1/images/clip_image020.jpg
new file mode 100644
index 0000000..b16b2d7
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image020.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image022.jpg b/rampart_1_1/xdocs/1_1/images/clip_image022.jpg
new file mode 100644
index 0000000..a3f2a59
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image022.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image024.jpg b/rampart_1_1/xdocs/1_1/images/clip_image024.jpg
new file mode 100644
index 0000000..3a70570
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image024.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/clip_image026.jpg b/rampart_1_1/xdocs/1_1/images/clip_image026.jpg
new file mode 100644
index 0000000..58bcce8
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/clip_image026.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/codegen.gif b/rampart_1_1/xdocs/1_1/images/codegen.gif
new file mode 100644
index 0000000..2b0c652
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/codegen.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/correlator.png b/rampart_1_1/xdocs/1_1/images/correlator.png
new file mode 100644
index 0000000..d4511fe
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/correlator.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/deploymetncomponent.png b/rampart_1_1/xdocs/1_1/images/deploymetncomponent.png
new file mode 100644
index 0000000..12cdba5
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/deploymetncomponent.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/editserviecpara.jpg b/rampart_1_1/xdocs/1_1/images/editserviecpara.jpg
new file mode 100644
index 0000000..3d9a597
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/editserviecpara.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/engine1.png b/rampart_1_1/xdocs/1_1/images/engine1.png
new file mode 100644
index 0000000..7235128
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/engine1.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/faultmsg.jpg b/rampart_1_1/xdocs/1_1/images/faultmsg.jpg
new file mode 100644
index 0000000..eaf28ee
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/faultmsg.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/faultservice.jpg b/rampart_1_1/xdocs/1_1/images/faultservice.jpg
new file mode 100644
index 0000000..ae36e03
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/faultservice.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/globalchain.jpg b/rampart_1_1/xdocs/1_1/images/globalchain.jpg
new file mode 100644
index 0000000..b694db5
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/globalchain.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/happyaxis.jpg b/rampart_1_1/xdocs/1_1/images/happyaxis.jpg
new file mode 100644
index 0000000..810f991
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/happyaxis.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image001.png b/rampart_1_1/xdocs/1_1/images/image001.png
new file mode 100644
index 0000000..8f205d6
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image001.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image002.jpg b/rampart_1_1/xdocs/1_1/images/image002.jpg
new file mode 100644
index 0000000..af0bc11
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image002.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image003.png b/rampart_1_1/xdocs/1_1/images/image003.png
new file mode 100644
index 0000000..c194b65
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image003.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image004.jpg b/rampart_1_1/xdocs/1_1/images/image004.jpg
new file mode 100644
index 0000000..22770c5
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image004.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image005.gif b/rampart_1_1/xdocs/1_1/images/image005.gif
new file mode 100644
index 0000000..49209e4
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image005.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image005.png b/rampart_1_1/xdocs/1_1/images/image005.png
new file mode 100644
index 0000000..0344413
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image005.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image006.jpg b/rampart_1_1/xdocs/1_1/images/image006.jpg
new file mode 100644
index 0000000..4ea6757
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image006.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image007.png b/rampart_1_1/xdocs/1_1/images/image007.png
new file mode 100644
index 0000000..fd92c5a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image007.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image008.jpg b/rampart_1_1/xdocs/1_1/images/image008.jpg
new file mode 100644
index 0000000..d85b3e9
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image008.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image009.png b/rampart_1_1/xdocs/1_1/images/image009.png
new file mode 100644
index 0000000..5577726
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image009.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image010.jpg b/rampart_1_1/xdocs/1_1/images/image010.jpg
new file mode 100644
index 0000000..660438f
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image010.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image011.png b/rampart_1_1/xdocs/1_1/images/image011.png
new file mode 100644
index 0000000..578a86c
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image011.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image012.jpg b/rampart_1_1/xdocs/1_1/images/image012.jpg
new file mode 100644
index 0000000..2a44b1c
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image012.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/image013.jpg b/rampart_1_1/xdocs/1_1/images/image013.jpg
new file mode 100644
index 0000000..540a210
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/image013.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/inactivate.jpg b/rampart_1_1/xdocs/1_1/images/inactivate.jpg
new file mode 100644
index 0000000..87ad7b4
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/inactivate.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/maven.jpg b/rampart_1_1/xdocs/1_1/images/maven.jpg
new file mode 100644
index 0000000..ac65aad
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/maven.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/module.png b/rampart_1_1/xdocs/1_1/images/module.png
new file mode 100644
index 0000000..de9a02d
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/module.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/moduleengage.jpg b/rampart_1_1/xdocs/1_1/images/moduleengage.jpg
new file mode 100644
index 0000000..10a8768
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/moduleengage.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/modules.jpg b/rampart_1_1/xdocs/1_1/images/modules.jpg
new file mode 100644
index 0000000..5cf3a68
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/modules.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/new.gif b/rampart_1_1/xdocs/1_1/images/new.gif
new file mode 100644
index 0000000..1893863
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/new.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/om2.png b/rampart_1_1/xdocs/1_1/images/om2.png
new file mode 100644
index 0000000..fa52092
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/om2.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/om3.png b/rampart_1_1/xdocs/1_1/images/om3.png
new file mode 100644
index 0000000..939de37
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/om3.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/parameters.jpg b/rampart_1_1/xdocs/1_1/images/parameters.jpg
new file mode 100644
index 0000000..704e223
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/parameters.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/select_service_for_handler.jpg b/rampart_1_1/xdocs/1_1/images/select_service_for_handler.jpg
new file mode 100644
index 0000000..42814d1
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/select_service_for_handler.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/send.png b/rampart_1_1/xdocs/1_1/images/send.png
new file mode 100644
index 0000000..788792f
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/send.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/sendAsync.png b/rampart_1_1/xdocs/1_1/images/sendAsync.png
new file mode 100644
index 0000000..a5ef313
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/sendAsync.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/sendRecievce.png b/rampart_1_1/xdocs/1_1/images/sendRecievce.png
new file mode 100644
index 0000000..1021d4c
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/sendRecievce.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/sendRecieveAsync.png b/rampart_1_1/xdocs/1_1/images/sendRecieveAsync.png
new file mode 100644
index 0000000..a423c63
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/sendRecieveAsync.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/sendRecieveWithListnere.png b/rampart_1_1/xdocs/1_1/images/sendRecieveWithListnere.png
new file mode 100644
index 0000000..7c3dc0a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/sendRecieveWithListnere.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/serverSide.png b/rampart_1_1/xdocs/1_1/images/serverSide.png
new file mode 100644
index 0000000..7b740ed
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/serverSide.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/service.png b/rampart_1_1/xdocs/1_1/images/service.png
new file mode 100644
index 0000000..5448bf0
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/service.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/serviceHandlers.jpg b/rampart_1_1/xdocs/1_1/images/serviceHandlers.jpg
new file mode 100644
index 0000000..7867df9
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/serviceHandlers.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/servicegroups.jpg b/rampart_1_1/xdocs/1_1/images/servicegroups.jpg
new file mode 100644
index 0000000..b4ac3df
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/servicegroups.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/userguide/DirectoryStructure.jpg b/rampart_1_1/xdocs/1_1/images/userguide/DirectoryStructure.jpg
new file mode 100644
index 0000000..953c333
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/userguide/DirectoryStructure.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/userguide/ModuleView.jpg b/rampart_1_1/xdocs/1_1/images/userguide/ModuleView.jpg
new file mode 100644
index 0000000..8667b09
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/userguide/ModuleView.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/userguide/MyServiceDeployed.jpg b/rampart_1_1/xdocs/1_1/images/userguide/MyServiceDeployed.jpg
new file mode 100644
index 0000000..88e8cc2
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/userguide/MyServiceDeployed.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/userguide/ServiceDeployed.jpg b/rampart_1_1/xdocs/1_1/images/userguide/ServiceDeployed.jpg
new file mode 100644
index 0000000..87864d8
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/userguide/ServiceDeployed.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/userguide/ServiceItems.jpg b/rampart_1_1/xdocs/1_1/images/userguide/ServiceItems.jpg
new file mode 100644
index 0000000..f847c04
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/userguide/ServiceItems.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/userguide/TestClient.jpg b/rampart_1_1/xdocs/1_1/images/userguide/TestClient.jpg
new file mode 100644
index 0000000..e2043b2
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/userguide/TestClient.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/userguide/http-get-ws.jpg b/rampart_1_1/xdocs/1_1/images/userguide/http-get-ws.jpg
new file mode 100644
index 0000000..e9629e1
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/userguide/http-get-ws.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/viewphases.jpg b/rampart_1_1/xdocs/1_1/images/viewphases.jpg
new file mode 100644
index 0000000..1930eaa
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/viewphases.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/images/wom.png b/rampart_1_1/xdocs/1_1/images/wom.png
new file mode 100644
index 0000000..db7e9fa
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/images/wom.png
Binary files differ
diff --git a/rampart_1_1/xdocs/1_1/index.html b/rampart_1_1/xdocs/1_1/index.html
new file mode 100644
index 0000000..8f30358
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/index.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+</head>

+	<frameset cols="260,*" border="1" frameborder="yes" framespacing="0" margin="0">

+		<frame name="leftFrame" src="toc.html" noresize="noresize" scrolling="yes" />

+		<frame name="mainFrame" src="contents.html" />

+		<noframes>

+			<body></body>

+		</noframes>

+	</frameset>

+</html>
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/1_1/installationguide.html b/rampart_1_1/xdocs/1_1/installationguide.html
new file mode 100644
index 0000000..52a0338
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/installationguide.html
@@ -0,0 +1,400 @@
+<html>

+

+<head>

+    <meta http-equiv="content-type" content="">

+    <title>Axis2 Installation Guide</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+

+<h1 align="center">Apache Axis2 Installation Guide</h1>

+

+<p>This document will give you information on Axis2 distribution packages,

+    system prerequisites &amp; setting up environment variables and tools

+    followed by detailed instructions on installation methods.</p>

+

+<p><i>Send your feedback to: <a

+        href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix

+    subject with [Axis2]. To subscribe to mailing list see <a

+        href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>

+

+<h2>Contents</h2>

+<ul>

+    <li><a href="#Download_Axis2">Download Axis2</a></li>

+    <li><a href="#requirements">System Requirements</a></li>

+    <li><a href="#standalone">Installation Using Standard Binary Distribution</a>

+                <ul>

+                    <li><a href="#standalone1">Install the Apache Axis2 Binary Distribution</a></li>

+                    <li><a href="#standalone2">Starting up Axis2 Standalone Server</a></li>

+                    <li><a href="#standalone3">Building WAR File Using Standard Binary Distribution</a></li>

+                    <li><a href="#standalone4">Getting Familiar with the Axis2 Convenient Scripts</a></li>

+                </ul>

+    </li>

+    <li><a href="#build_war"></a></li>

+    <li><a href="#servlet_container">Installing Axis2 in a Servlet

+        Container</a></li>

+    <li><a href="#upload">Uploading Services</a></li>

+    <li><a href="#advanced">Advanced</a>

+        <ul>

+            <li><a href="#source">Axis2 Source Distribution</a>

+                <ul>

+                    <li><a href="#_Toc96698083">Setting up the Environment and

+                        Tools</a></li>

+                    <li><a href="#_Toc96698085">Building Axis2 Binaries and WAR file

+                        Using the Source Distribution</a></li>

+                </ul>

+            </li>

+        </ul>

+    </li>

+</ul>

+<a name="Download_Axis2"></a>

+

+<h2>Download Axis2</h2>

+

+<p>Axis2 is distributed in several convenient distribution packages and can

+    be installed either as a standalone server or as part of a J2EE compliant

+    servlet container. Axis2 is distributed under the Apache License, version

+    2.0. This Installation Guide will mainly focus on running Apache Axis2 using

+    the Standard Binary Distribution.</p>

+

+<p><a href="http://ws.apache.org/axis2/download/1_1/download.cgi">Download</a> distribution packages

+    of the Apache Axis2 1.1 version (latest).<p/>

+<p><a href="http://ws.apache.org/axis2/download.cgi">Download</a> distribution packages of all versions of Apache Axis2.</p>

+

+<p>The Distribution Packages Provided are as follows:</p>

+

+<a name="std-bin" id="std-bin"></a>

+<h3>1. Standard Binary Distribution</h3>

+

+<p>This is the complete version of Axis2 and include samples and convenient scripts as

+    well. 

+</p>

+

+<p><a href="http://ws.apache.org/axis2/download/1_1/download.cgi">Download</a> Standard

+    Binary Distribution</p>

+<a name="war1"></a>

+

+<h3>2. WAR (Web Archive) Distribution</h3>

+

+<p>This will be the Web application of Axis2 which can be deployed in most of

+    the servlet containers.</p>

+

+<p><a href="http://ws.apache.org/axis2/download/1_1/download.cgi">Download</a> WAR (Web Archive)

+    Distribution</p>

+

+<h3>3. Documents Distribution</h3>

+

+<p>This will contain all the documentation in one package. The package

+    includes the xdocs and the Java API docs of this project.</p>

+

+<p><a href="http://ws.apache.org/axis2/download/1_1/download.cgi">Download</a> Documents

+    Distribution</p>

+

+<h3>4. Source Distribution</h3>

+

+<p>This will contain the sources of Axis2 standard distribution, and is

+    mainly for the benefit of the advance users. One can generate a binary

+    distribution using the source by typing <span class="style1">$maven

+dist-bin. </span> You need to set up the Axis2 environment before

+    running this command. Step by step details on how to create the binary

+    distribution is available in the <a href="#advanced">Advanced</a> section.</p>

+

+<p><a href="http://ws.apache.org/axis2/download/1_1/download.cgi">Download</a> Source

+    Distribution</p>

+

+<a name="requirements"></a>

+<h2>System Requirements</h2>

+

+<table border="2">

+    <caption></caption>

+    <tbody>

+        <tr>

+            <td>Java Development Kit (JDK)

+            </td>

+            <td>1.4 or later (For instructions on setting up the JDK in different operating systems,

+                visit

+                <a href="http://java.sun.com/">http://java.sun.com</a>)</td>

+        </tr>

+        <tr>

+            <td>Disk</td>

+            <td>Approximately 11 MB separately for standard binary distribution

+            </td>

+        </tr>

+        <tr>

+            <td>Operating system</td>

+            <td>Tested on Windows XP, Linux, Mac OS X, Fedora core, Ubuntu,

+                Gentoo</td>

+        </tr>

+        <tr>

+            <td><strong>Build Tool</strong>-<a href="http://ant.apache.org/">Apache Ant</a>  

+             <p>To run samples and to build war from Axis2 binary distribution.</p></td>

+            <td>Version 1.6.5 or higher(<a

+                    href="http://ant.apache.org/bindownload.cgi">download</a>).</td>

+        </tr>

+        <tr>

+            <td><strong>Build Tool</strong>- <a href="http://maven.apache.org/maven-1.x/">Apache

+                Maven 1.x</a>

+

+                <p>Required <em>only</em> for building Axis2 from Source

+                    Distribution</p>

+            </td>

+            <td>1.0.2 or higher in Maven 1.x series (<a

+                    href="http://maven.apache.org/maven-1.x/start/download.html">download</a>).

+                <strong>Please download maven 1.x version. Axis2 does not support maven 2.</strong></td>

+        </tr>

+    </tbody>

+</table>

+

+<a name="standalone"></a>

+<h2>Installation Using Standard Binary Distribution</h2>

+<a name="standalone1"></a>

+<h3>1. Download and Install the Apache Axis2 Binary Distribution</h3>

+<p> Download and install a Java Development Kit (JDK) release (version 1.4 or later) from <a href="http://java.sun.com/j2se/"

+> here .</a> Install the JDK according to the instructions included with the release.Set an environment 

+variable JAVA_HOME to the pathname of the directory into which you installed the JDK release.</p>

+

+<p>Download and unpack the <a

+        href="http://ws.apache.org/axis2/download/1_1/download.cgi">Axis2 Standard Binary Distribution</a>

+        into a convenient location so that the distribution resides in its own directory. Set an 

+        environment variables AXIS2_HOME to the pathname of the extracted directory of Axis2 (Eg: /opt/axis2-1.1).

+</p>

+<a name="standalone2"></a>

+<h3>2. Starting up Axis2 Standalone Server</h3>

+

+<p> Standalone Axis2 server can be started by executing the following commands: <br/>

+      $AXIS2_HOME\bin\axis2server.bat (Windows) <br/>

+      $AXIS2_HOME/bin/axis2server.sh  (Unix)

+ <p>After startup, the default web services included with Axis2 will be

+available by visiting http://localhost:8080/axis2/services/</p>

+

+<a name="standalone3"></a>

+<h3>3. Building the Axis2 Web Application (axis2.war) Using Standard Binary Distribution</h3>

+<p> Download and install Apache Ant (version 1.6.5 or later) from <a href="http://ant.apache.org/bindownload.cgi"

+> here .</a> Install the Apache Ant according to the instructions included with the Ant release.</p>

+

+<p>Locate the ant build file (build.xml) inside the webapp directory which resides in your Axis2 home

+ directory (i.e:- $AXIS_HOME/webapp)". Run the Ant build by executing "ant create.war" inside the $AXIS2_HOME/webapps folder. 

+You can find the generated axis2.war inside the $AXIS2_HOME/dist directory. All the services and modules that are present in the

+AXIS2_HOME/repository will be packed in to the created axis2.war together with the Axis2 configuration found

+at $AXIS2_HOME/conf/axis2.xml.</p>

+<p> You can read the <a href="#servlet_container">installing Axis2 in a servlet container</a> to figure 

+out how to deploy the Axis2 web application in a servlet container. </p>

+

+<a name="standalone4"></a>

+<h3>4. Getting Familiar with the Axis2 Convenient Scripts</h3>

+<p>It is advised to add the $AXIS2_HOME/bin to the PATH, so that you'll be able to run the following scripts from any where.</p>

+

+<table border="1">

+<tr>

+	<td><b>Script Name</b></td>

+	<td><b>Description</b></td>

+</tr>

+<tr>

+	<td>axis2.{bat|sh}</td>

+	<td>You can use this script to run web service clients written using Axis2.

+	This script calls the "java" command after adding the classpath for Axis2 dependent libraries (*.jar files present in your AXIS2_HOME/lib), 

+	setting the Axis2 repository location (AXIS2_HOME/repository) and setting the Axis2 configuration file location(AXIS2_HOME/conf/axis2.xml) for you. With this you can be relieved from setting all the above Axis2 specific parameters.<br/>

+	

+	<p><em>Usage : axis2.{sh.bat}  [-options] class [args...]</em></p>	    

+</td>

+</tr>

+<tr>

+	<td>axis2server.{sh|bat}</td>

+	<td>This script will start an standalone Axis2 server using the AXIS2_HOME/repository as the

+	 Axis2 repository and the AXIS2_HOME/conf/axis2.xml as the Axis2 configuration file.  This will start all the transport listeners listed in the AXIS2_HOME/conf/axis2.xml.

+	<p>As an example, if you want to deploy a service using standalone Axis2 server,then copy your 

+	service archive to the AXIS2_HOME/repository/services directory. After that go to the "Transport Ins" section of the AXIS2_HOME/conf/axis2.xml and configure the transport receivers (simpleHttpServer in port 8080 is listed by default). Then invoke this script.</p> </td>

+</tr>

+<tr>

+	<td>wsdl2java.{bat|sh}</td>

+	<td>This script generates java code according to a given WSDL file to handle Web service invocations 

+	(Client side Stubs). This script also has the ability to generate service skeletons according to the given WSDL.<br/>

+	<p><em>Usage:  WSDL2Java.{sh|bat} [OPTION]... -uri &lt;Location of WSDL> </em></p>

+	<p>Eg:  WSDL2Java.sh -uri ../wsdl/Axis2Sample.wsdl </p>

+	<p>A more detailed reference about this script can be found <a href="reference.html">here</a></p></td>	

+</tr>

+<tr>

+	<td>java2wsdl.{bat|sh} </td>

+	<td>This script generates the appropriate WSDL file for a given java class.<br/>

+	<em><p>Usage:  Java2WSDL.{sh|bat} [OPTION]... -cn &lt;fully qualified class name> </em></p>

+	<p>Eg:  Java2WSDL.sh -cn ../samples/test/searchTool.Search</p>

+	<p>A more detailed reference about this script can be found <a href="reference.html">here</a></p>

+	</td>

+</tr>

+</table>

+

+

+<a name="servlet_container"></a>

+<h2>Installing Axis2 in a Servlet Container</h2>

+<p>Which ever the distribution, installing Axis2 in a J2EE compliant servlet

+    container is as follows:</p>

+<ol>

+    <li>Build the Axis2 WAR

+        file using the Axis2 Standard Binary Distribution. (Alternatively you can

+         <a href="http://ws.apache.org/axis2/download/1_1/download.cgi">download</a> the axis2.war

+        or you can build axis2.war using the <a href="#war">Source

+        Distribution</a>.</li>

+    <li>Drop the war in the webapps folder of the servlet container. Most

+        servlet containers will automatically install war. (some servlet

+        containers may require a restart in order to capture the new web

+        application. Refer your servlet container documentation for more

+        information about this.)</li>

+    <li>Once the WAR is successfully installed, test it by pointing the web

+        browser to the <strong>http://&lt;host :port&gt;/axis2. </strong>It

+        should produce the following page which is the <strong>Axis2 Web

+        Application Home Page</strong>.</li>

+

+    <p align="center"><strong><img src="images/clip_image006.jpg"

+                                   alt=""></strong></p>

+    <li>Use the link "Validate" to ensure that everything is fine and smooth.

+        If the validation fails then the war has failed to install properly or

+        some essential jars are missing. At such a situation the documentation of

+        the particular servlet container should be consulted to find the problem.

+        The following page is a successful validation. Note the statement core

+        Axis2 libraries are present.</li>

+</ol>

+

+<p align="center"><img src="images/happyaxis.jpg"></p>

+<a name="upload"></a>

+

+<p><strong>Note:</strong> For any Application server specific installation

+    information please refer <a href="app_server.html">Application Server

+    Specific Configuration Guide</a>.</p>

+

+<h2>Uploading Services</h2>

+<ol>

+    <p>The Axis2 Web application also provides an interface to upload services.

+        Once a service is created according to the service specification as

+        described in <a name="userguide.html" target="_blank">User's Guide that jar

+        file can be uploaded using the upload page.</a></p>

+

+    <p align="center"><strong><img src="images/clip_image010.jpg"

+                                   alt=""></strong></p>

+

+    <p>The uploaded jar files will be stored in the default service directory.

+        For Axis2 this will be the &lt;webapps&gt;/axis2/WEB-INF/services

+        directory. Once a service is uploaded it will be installed instantly.</p>

+    <a name="hot_deployment"></a>

+    <p>Since Axis2 supports <strong>hot deployment</strong> one can drop the

+        service jar directly through the file system to the above mentioned

+        services directory. It will also cause the service to be automatically

+        installed without the container being restarted.</p>

+

+    <p>Use the 'Services' link on the Web Application home page to check the

+        successful installation of a service. The services and the operations of

+        successfully installed services will be displayed in the available services

+        page.</p>

+

+    <p align="center"><img src="images/clip_image012.jpg" alt=""></p>

+

+    <p></p>

+

+    <p>If the service has deployment time errors it will list those services as

+        faulty services. If you click on the link you can see the deployment fault

+        error message(s).</p>

+

+    <p align="center"><img src="images/faultservice.jpg" alt=""></p>

+

+    <p>Deployment time error message</p>

+

+    <p align="center"><strong><img src="images/faultmsg.jpg"

+                                   alt=""></strong></p>

+

+    <p></p>

+

+    <p>Axis2 Administration is all about configuring Axis2 at the run time and

+        the configuration will be transient. More descriptions are available in <a

+            href="webadminguide.html" target="_blank">Axis2 Web Administration

+        Guide</a></p>

+</ol>

+<a name="advanced"></a>

+<h2>Advanced</h2>

+<a name="source"></a>

+<h2>Axis2 Source Distribution</h2>

+<a name="_Toc96698083"></a>

+Using the Source Distribution both binary files (which is downloadable as the </a><a href="#std-bin">Standard Binary

+Distribution</a>) and axis2.war file (which is downloadable as the <a href="#war1">WAR distribution</a>) can be built using maven commands.

+

+<p>Required jar files do not come with the distribution and they will also

+    have to be built by running the maven command. Before we go any further it is

+    necessary to install <a href="http://maven.apache.org/maven-1.x/"

+                            target="_blank">Maven</aandsettheEnvironment.Thenextsectionwillguideyouhowtodojustthat.>

+</a></p>

+<a name="env-src"></a>

+<h3>Setting Up the Environment and Tools</h3>

+<a name="maven"></a>

+

+<h4>Maven</h4>

+

+<p>The Axis2 build is based on <a href="http://maven.apache.org/maven-1.x/"

+                                  target="_blank">Maven </a>. Hence the only prerequisite to build

+    Axis2 from

+    source distribution is to have Maven installed. Extensive instruction guides

+    are available at the Maven site. This guide however contains the easiest path

+    for quick environment setting. Advanced users who wish to know more about

+    Maven can visit <a href="http://maven.apache.org/maven-1.x/start/index.html"

+                       target="_blank">here </a>.</p>

+<ul>

+    <li>MS Windows</li>

+</ul>

+<ol>

+    <li>Download and run the Windows installer package for Maven.</li>

+    <li>Set the 'Environment Variables' ( create system variable MAVEN_HOME and

+        edit path. eg: "C:\Program Files\Apache Software Foundation\maven-1.0.2";

+        path %MAVEN_HOME%\bin)</li>

+    <li>Make sure that system variable JAVA_HOME is set to the location of your

+        JDK, eg. C:\Program Files\Java\jdk1.5.0_02</li>

+    <li>Run maven --version to verify that it is correctly installed.</li>

+</ol>

+

+<p align="center"><img alt="clip_image002 (15K)"

+                       src="images/clip_image002.jpg" height="211" width="477"></p>

+<ul>

+    <li>Unix based OS (Linux etc)</li>

+</ul>

+

+<p>The tar ball or the zip archive is the best option. Once the archive is

+    downloaded expand it to a directory of choice and set the environment

+    variable MAVEN_HOME and add MAVEN_HOME/bin to the path as well. More

+    instructions for installing Maven in Unix based operating systems can be

+    found <a href="http://maven.apache.org/download.html#Installation"

+             target="_blank">here </a>.</p>

+

+<p>Once maven is properly installed you can start building Axis2.</p>

+

+<p><a href="../faq.html#d4">Maven commands that are frequently used</a> in

+    Axis2 are listed on the <a href="../faq.html">FAQs</a> page.</p>

+<a name="_Toc96698085"></a>

+

+<h3>Building Binaries and WAR File Using the Source Distribution</h3>

+

+<p>The Source Distribution is available as a zipped archive. All the

+    necessary build scripts are included with the source distribution. Once the

+    source archive is expanded into a directory of choice, moving to the

+    particular directory and running <code>maven</code> command will build the

+    Axis2 jar file.</p>

+

+<p align="center"><img alt="clip_image004 (43K)" src="images/maven.jpg"><br

+        clear="all">

+</p>

+

+<p>Once the command completes, the binaries (jar files in this case) can be

+    found at a newly created "target" directory.</p>

+

+<p><strong>Note: For the first Maven build (if the maven repository is not

+    built first) it will take a while since required jars need to be downloaded.

+    However this is a once only process and will not affect any successive

+    builds.</strong></p>

+<a name="war"></a>

+

+<p><strong></strong>The default maven build will however build only the Axis2

+    jar file. To obtain a <strong>WAR (Web Archive)</strong>, <code>maven

+    war</code> command should be issued. This will create a complete WAR with the

+    name axis2.war inside the target directory.</p>

+

+<p>Once this build step is complete, the binaries are ready to be

+    deployed.</p>

+<a name="_Toc96698086"></a>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/jibx/jibx-codegen-integration.html b/rampart_1_1/xdocs/1_1/jibx/jibx-codegen-integration.html
new file mode 100644
index 0000000..b8ce77a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/jibx/jibx-codegen-integration.html
@@ -0,0 +1,201 @@
+
+<html>
+
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>JiBX Integration with Axis2</title>
+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body>
+
+<h1>JiBX Integration With Axis2</h1>
+
+<p>This document describes using JiBX data binding with Axis2. JiBX differs from
+the other data binding techniques supported by Axis2 in that it allows you to
+use your own Java data objects (as opposed to Java data objects generated from a
+schema definition). JiBX also provides a nicer form of unwrapped Web services
+interface than is supported by the other data binding techniques. On the
+downside, JiBX requires more setup than the other data binding techniques - in
+particular, you need to come up with a set of data classes and a binding
+definition in order to work with JiBX in Axis2.</p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#wrapped">Wrapped vs. unwrapped</a></li>
+  <li><a href="#java">Starting from Java</a></li>
+  <li><a href="#wsdl">Starting from WSDL</a></li>
+  <li><a href="#codegen">Axis2 JiBX Code Generation</a></li>
+  <li><a href="#coming">Coming Attractions</a></li>
+</ul>
+
+<a name="intro"></a>
+<h2>Introduction</h2>
+
+<p><a href="http://www.jibx.org">JiBX data binding</a> supports fast and
+flexible conversions between plain old Java objects (POJOs) and XML. JiBX
+uses a mapped binding approach that's based on binding definition documents
+you provide. This approach let's you customize the way your Java objects are
+converted to and from XML. You can even define multiple bindings to use the same
+Java objects with different XML representations. These features make JiBX
+especially useful if you're developing a Web service based on existing Java
+code, or when you need to support multiple XML representations for a Web service
+(as when you're using versioned schema definitions).</p>
+
+<p>Axis2 supports using JiBX with your Web services, including generating the
+necessary linkage code for both client and server sides. However, the Axis2
+support for JiBX does not currently include code generation from the schema
+for a Web service - you need to provide your own data classes and JiBX
+binding definition, and you also need to make sure that the binding
+definition matches the XML structures defined for your Web service. The JiBX
+project provides some basic tools to help with code generation from schema,
+binding generation from Java classes, and schema generation from the
+combination of Java classes and a binding definition. In the future, improved
+versions of these tools will be integrated directly into the Axis2 framework
+support, but for now you're on your own with this part of the setup.</p>
+
+<p>You can use JiBX data binding both to expose existing Java code as a
+service, and to build a client for an existing service. This document runs
+through the sequence of steps involved for each of these cases, just to help
+users understand the basic approach to working with JiBX in Axis2. You can
+find full instructions on the standard JiBX parts of this sequence on the <a
+href="http://www.jibx.org">JiBX Web site</a>.</p>
+
+<a name="wrapped"></a>
+<h2>Wrapped vs. unwrapped</h2>
+
+<p>Axis2 support for JiBX currently only works with the document-literal
+(doc/lit) form of Web services definitions. Doc/lit Web services generally use
+particular schema elements as input and output from each operation, and the
+Axis2 support for JiBX assumes this structure (which is also the structure
+required for compatibility with the
+<a href="http://www.ws-i.org/Profiles/BasicProfile-1.1.html">WS-I Basic Profile</a>).
+</p>
+
+<p>A popular subset of doc/lit Web services use a form called "wrapped". Wrapped
+doc/lit Web services define service operations that correspond to method calls,
+using input and output element names based on the method name and embedding the
+actual parameter values for the method call within the input element.
+</p>
+
+<p>When used with Axis2, JiBX supports both general doc/lit and wrapped service
+definitions. Wrapped service definitions can be "unwrapped" during code
+generation to provide a greatly simplified interface. JiBX unwrapping of service
+definitions is not compatible with the unwrapping support for other data binding
+frameworks used with Axis2, but most users will find the JiBX approach easy and
+convenient. See the <a href="./jibx-unwrapped-example.html">JiBX Unwrapped
+Example</a> and the <a href="./jibx-doclit-example.html">JiBX Document/Literal
+Example</a> pages for a detailed comparison of the two forms of service
+interface.
+</p>
+
+<a name="java"></a>
+<h2>Starting from Java</h2>
+
+<p>Here's the sequence of steps for using JiBX with Axis2 to expose existing
+Java code as a Web service:</p>
+<ol>
+  <li>Create a JiBX binding definition for the data being transferred by the
+    Web service (you may be able to use the JiBX binding generator to help with
+    this step).</li>
+  <li>Create a schema that matches the XML defined by your binding (you may
+    be able to use the JiBX schema generator to help with this). If you're using
+    a wrapped form of interface to your service you'll also need to create
+    schema definitions for the wrapper input and output elements used by each
+    operation.</li>
+  <li>Create a WSDL document for your service, with the schema embedded or
+    imported.</li>
+  <li>Generate Axis2 server-side linkage code using WSDL2Java with the WSDL
+    and your binding definition.</li>
+  <li>Run the JiBX binding compiler on your Java classes to add the actual
+    binding code.</li>
+  <li>Include the <i>axis2-jibx.jar</i> in your runtime classpath, along with
+    the <i>jibx-runtime.jar</i>.</li>
+</ol>
+
+<p>If you use a wrapped interface for your Web service you can expose method
+calls in your existing code directly as operations in the service. In this case
+you normally just use your existing data objects with JiBX data binding, and add
+schema definitions for the wrapper elements. See the
+<a href="./jibx-unwrapped-example.html">JiBX Unwrapped Example</a> page for more
+details on how this works.
+</p>
+
+<p>If you use a non-wrapped interface for your Web service you need to define
+classes to hold the data input and output from each operation. In this case
+these holder classes need to be included in the JiBX binding definition. See the
+<a href="./jibx-doclit-example.html">JiBX Document/Literal Example</a> page for
+more details on this case.
+</p>
+
+<a name="wsdl"></a>
+<h2>Starting from WSDL</h2>
+
+<p>Here's the sequence of steps for using JiBX with Axis2 to implement a
+client for an existing Web service (or the actual service, when you've been
+supplied with the WSDL your service is to implement):</p>
+<ol>
+  <li>Create Java classes for the data being transferred by the Web service,
+    and a JiBX binding definition that maps these classes to the schema
+    defined by the Web service (you may be able to use the JiBX xsd2jibx tool
+    to help with this).</li>
+  <li>Generate Axis2 client linkage code using WSDL2Java with the WSDL and
+    your binding definition.</li>
+  <li>Run the JiBX binding compiler on your Java classes to add the actual
+    binding code.</li>
+  <li>Include the <i>axis2-jibx.jar</i> in your runtime classpath, along with
+    the <i>jibx-runtime.jar</i></li>
+</ol>
+
+<p>As with the starting from Java case, there are some differences in the
+handling depending on whether your service definition fits the wrapped form. See
+the <a href="./jibx-unwrapped-example.html">JiBX Unwrapped Example</a> and
+<a href="./jibx-doclit-example.html">JiBX Document/Literal Example</a> pages for
+more details.</p>
+
+<a name="codegen"></a>
+<h2>WSDL2Java usage</h2>
+
+<p>To run the WSDL2Java tool for JiBX data binding you need:</p>
+<ol>
+  <li>To specify <i>-d jibx</i> to select JiBX binding.</li>
+  <li>You also need an additional parameter, <i>-Ebindingfile {file}</i>
+    (where <i>{file}</i> is the file path to your JiBX binding definition).</li>
+  <li>Finally, you need to have the <i>axis2-jibx-XXXX.jar</i>, the
+    <i>jibx-bind-XXXX.jar</i>, and the <i>jibx-run-XXXX.jar</i> files
+    from your Axis2 distribution included in the WSDL2Java classpath.</li>
+</ol>
+
+<p>If you want to use the unwrapped form of interface you also need to specify
+the <i>-uw</i> option to WSDL2Java. In this case your JiBX binding definition
+must include abstact mappings for all the complex objects which correspond to
+method parameters, and each abstract mapping must specify a <i>type-name</i>
+attribute that matches the schema <i>complexType</i> used in the WSDL. You can
+also use formats in the binding definition to define the handling of schema
+<i>simpleType</i>s. Schema types corresponding to Java primitives and simple
+objects with build-in JiBX conversions are handled automatically.</p>
+
+<p>If you're not unwrapping the interface, your JiBX binding definition must
+include a concrete mapping for each element used as input or output by any
+operation.</p>
+
+<a name="coming"></a>
+<h2>Coming Attractions</h2>
+
+<p>Work is in-progress on better tools to support generating Java classes and
+corresponding JiBX binding definitions from an input schema, and also for
+generating binding+schema generation from existing code. These features will be
+integrated into the Axis2 JiBX support when they are available. Check the <a
+href="http://www.jibx.org">JiBX project site</a> for updates on both JiBX
+and the Axis2 JiBX support.</p>
+
+<h2>References</h2>
+
+<p><a href="http://jibx.sourceforge.net/tutorial/binding-tutorial.html">JiBX:
+Bindings Tutorial</a>
+</p>
+
+</body>
+
+</html>
diff --git a/rampart_1_1/xdocs/1_1/jibx/jibx-doclit-example.html b/rampart_1_1/xdocs/1_1/jibx/jibx-doclit-example.html
new file mode 100644
index 0000000..43139e6
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/jibx/jibx-doclit-example.html
@@ -0,0 +1,286 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>JiBX general document/literal</title>
+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body>
+<h1>JiBX general document/literal</h1>
+
+<p>Code generation for JiBX data binding converts operations defined by a Web
+service to method calls. With general document/literal (doc/lit) Web services
+the generated methods each take a single parameter object and return a single
+result object. Here's a sample doc/lit WSDL (partial) by way of an example:</p>
+
+<pre>
+&lt;wsdl:definitions targetNamespace="http://ws.sosnoski.com/library/wsdl"
+    xmlns:tns="http://ws.sosnoski.com/library/types"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/">
+    
+  &lt;wsdl:types>
+  
+    &lt;schema elementFormDefault="qualified"
+        targetNamespace="http://ws.sosnoski.com/library/types"
+        xmlns="http://www.w3.org/2001/XMLSchema">
+        
+      &lt;element name="getBook">
+        &lt;complexType>
+          &lt;sequence>
+            &lt;element name="isbn" type="string"/>
+          &lt;/sequence>
+        &lt;/complexType>
+      &lt;/element>
+      
+      &lt;element name="getBookResponse">
+        &lt;complexType>
+          &lt;sequence>
+            &lt;element name="book" minOccurs="0" type="tns:BookInformation"/>
+          &lt;/sequence>
+        &lt;/complexType>
+      &lt;/element>
+      
+      &lt;element name="addBook">
+        &lt;complexType>
+          &lt;sequence>
+            &lt;element name="type" type="string"/>
+            &lt;element name="isbn" type="string"/>
+            &lt;element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
+            &lt;element name="title" type="string"/>
+          &lt;/sequence>
+        &lt;/complexType>
+      &lt;/element>
+      
+      &lt;element name="addBookResponse">
+        &lt;complexType>
+          &lt;sequence>
+            &lt;element name="success" type="boolean"/>
+          &lt;/sequence>
+        &lt;/complexType>
+      &lt;/element>
+      
+      &lt;complexType name="BookInformation">
+        &lt;sequence>
+          &lt;element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
+          &lt;element name="title" type="string"/>
+        &lt;/sequence>
+        &lt;attribute name="type" use="required" type="string"/>
+        &lt;attribute name="isbn" use="required" type="string"/>
+      &lt;/complexType>
+      
+    &lt;/schema>
+
+  &lt;/wsdl:types>
+
+  &lt;wsdl:message name="getBookRequest">
+    &lt;wsdl:part element="wns:getBook" name="parameters"/>
+  &lt;/wsdl:message>
+
+  &lt;wsdl:message name="getBookResponse">
+    &lt;wsdl:part element="wns:getBookResponse" name="parameters"/>
+  &lt;/wsdl:message>
+
+  &lt;wsdl:message name="addBookRequest">
+    &lt;wsdl:part element="wns:addBook" name="parameters"/>
+  &lt;/wsdl:message>
+  
+  &lt;wsdl:message name="addBookResponse">
+    &lt;wsdl:part element="wns:addBookResponse" name="parameters"/>
+  &lt;/wsdl:message>
+
+  &lt;wsdl:portType name="Library">
+
+    &lt;wsdl:operation name="getBook">
+      &lt;wsdl:input message="wns:getBookRequest" name="getBookRequest"/>
+      &lt;wsdl:output message="wns:getBookResponse" name="getBookResponse"/>
+    &lt;/wsdl:operation>
+
+    &lt;wsdl:operation name="addBook">
+      &lt;wsdl:input message="wns:addBookRequest" name="addBookRequest"/>
+      &lt;wsdl:output message="wns:addBookResponse" name="addBookResponse"/>
+    &lt;/wsdl:operation>
+
+  &lt;/wsdl:portType>
+  ...
+&lt;/wsdl:definitions>
+</pre>
+
+<p>This WSDL defines a service with just two operations: <b>getBook</b> and
+<b>addBook</b>. The <b>getBook</b> operation takes a <i>getBook</i> element as
+input, and returns a <i>getBookResponse</i> element as output, while
+<b>addBook</b> takes an <i>addBook</i> element as input and returns an
+<i>addBookResponse</i> as output. Here's the body of the client interface
+generated by the standard JiBX code generation:</p>
+
+<pre>
+    public interface LibraryJibxUnwrapped {
+          
+             
+        /**
+         * Auto generated method signatures
+         * @param addBook
+         */
+         public com.sosnoski.ws.library.jibx.wrappers.AddBookResponse addBook(
+         com.sosnoski.ws.library.jibx.wrappers.AddBookRequest addBook) throws java.rmi.RemoteException
+          
+                       
+             ;
+             
+             
+        /**
+         * Auto generated method signatures
+         * @param getBook
+         */
+         public com.sosnoski.ws.library.jibx.wrappers.GetBookResponse getBook(
+         com.sosnoski.ws.library.jibx.wrappers.GetBookRequest getBook) throws java.rmi.RemoteException
+          
+                       
+             ;
+             
+
+        
+       //
+       }
+</pre>
+
+<p>You can see that the JiBX code generation converted the operations into
+simple method call interfaces using objects corresponding to the input and
+output elements of the operation (see
+<a href="./jibx-unwrapped-example.html">JiBX Unwrapped Example</a> for the
+interface generated when unwrapping is instead used). The server-side interface
+is the same.</p>
+
+<p>You need to supply an appropriate JiBX binding definition for use in code
+generation (using the <i>-Ebindingfile {file}</i> parameter for WSDL2Java - see
+<a href="./jibx-codegen-integration.html#codegen">JiBX Codegen Integration -
+WSDL2Java usage</a> for more details). This must define concrete <i>mappings</i>
+for each element used as the input or output of an operation. The JiBX code
+generation extension matches the element names to the binding in order to
+determine the corresponding class to use in generated code.</p>
+
+<p>For example, here's a binding definition that matches the above WSDL:</p>
+
+<pre>
+&lt;binding add-constructors="true">
+
+  &lt;namespace uri="http://ws.sosnoski.com/library/types" default="elements"/>
+  
+  &lt;mapping name="getBook"
+      class="com.sosnoski.ws.library.jibx.wrappers.GetBookRequest">
+    &lt;value name="isbn" field="m_isbn"/>
+  &lt;/mapping>
+  
+  &lt;mapping name="getBookResponse"
+      class="com.sosnoski.ws.library.jibx.wrappers.GetBookResponse">
+    &lt;structure name="book" field="m_book"/>
+  &lt;/mapping>
+  
+  &lt;mapping name="addBook"
+      class="com.sosnoski.ws.library.jibx.wrappers.AddBookRequest">
+    &lt;structure field="m_book">
+      &lt;value name="type" field="m_type"/>
+      &lt;value name="isbn" field="m_isbn"/>
+      &lt;collection field="m_authors">
+        &lt;value name="author" type="java.lang.String"/>
+      &lt;/collection>
+      &lt;value name="title" field="m_title"/>
+    &lt;/structure>
+  &lt;/mapping>
+  
+  &lt;mapping name="addBookResponse"
+      class="com.sosnoski.ws.library.jibx.wrappers.AddBookResponse"/>
+  
+  &lt;mapping abstract="true" class="com.sosnoski.ws.library.jibx.beans.Book">
+    &lt;value name="type" style="attribute" field="m_type"/>
+    &lt;value name="isbn" style="attribute" field="m_isbn"/>
+    &lt;collection field="m_authors">
+      &lt;value name="author" type="java.lang.String"/>
+    &lt;/collection>
+    &lt;value name="title" field="m_title"/>
+  &lt;/mapping>
+
+&lt;/binding>
+</pre>
+
+<p>And here are the actual data object classes:</p>
+
+<pre>
+package com.sosnoski.ws.library.jibx.wrappers;
+
+import com.sosnoski.ws.library.jibx.beans.Book;
+
+public class AddBookRequest
+{
+    private Book m_book;
+    
+    public AddBookRequest(Book book) {
+        m_book = book;
+    }
+    
+    public Book getBook() {
+        return m_book;
+    }
+}
+
+public class AddBookResponse
+{
+}
+
+public class GetBookRequest
+{
+    private String m_isbn;
+    
+    public GetBookRequest(String isbn) {
+        m_isbn = isbn;
+    }
+
+    public String getIsbn() {
+        return m_isbn;
+    }
+}
+
+public class GetBookResponse
+{
+    private Book m_book;
+    
+    public GetBookResponse(Book book) {
+        m_book = book;
+    }
+    
+    public Book getBook() {
+        return m_book;
+    }
+}
+
+package com.sosnoski.ws.library.jibx.beans;
+
+public class Book
+{
+    private String m_type;
+    private String m_isbn;
+    private String m_title;
+    private String[] m_authors;
+    
+    public Book() {}
+
+    public String getType() {
+        return m_type;
+    }
+    
+    public String getIsbn() {
+        return m_isbn;
+    }
+    
+    public String getTitle() {
+        return m_title;
+    }
+    
+    public String[] getAuthors() {
+        return m_authors;
+    }
+}
+</pre>
+
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html b/rampart_1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html
new file mode 100644
index 0000000..9ec2acf
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html
@@ -0,0 +1,252 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>JiBX unwrapped document/literal</title>
+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body>
+<h1>JiBX Unwrapped document/literal</h1>
+
+<p>Code generation for JiBX data binding converts operations defined by a Web
+service to method calls. In the most general case of document/literal
+(doc/lit) Web services the generated methods each take a single parameter
+object and return a single result object. This type of interface can be
+painful for developers because it adds both a layer of indirection and
+potentially a large number of extra classes (one input and one output class
+for each generated method).</p>
+
+<p>Fortunately, there's an alternative way of generating methods that gives a
+much more usable API for many Web services. This alternative is called
+<i>unwrapping</i>, and the service definitions that it applies to are called
+<i>wrapped</i> definitions. The key difference that qualifies a service
+definition as wrapped is the structure of the input and output elements used
+for operations.</p>
+
+<p>Here's a sample wrapped WSDL (partial) by way of an example:</p>
+<pre>&lt;wsdl:definitions targetNamespace="http://ws.sosnoski.com/library/wsdl"
+    xmlns:tns="http://ws.sosnoski.com/library/types"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"&gt;
+    
+  &lt;wsdl:types&gt;
+  
+    &lt;schema elementFormDefault="qualified"
+        targetNamespace="http://ws.sosnoski.com/library/types"
+        xmlns="http://www.w3.org/2001/XMLSchema"&gt;
+        
+      &lt;element name="getBook"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="isbn" type="string"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+      
+      &lt;element name="getBookResponse"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="book" minOccurs="0" type="tns:BookInformation"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+      
+      &lt;element name="addBook"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="type" type="string"/&gt;
+            &lt;element name="isbn" type="string"/&gt;
+            &lt;element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/&gt;
+            &lt;element name="title" type="string"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+      
+      &lt;element name="addBookResponse"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="success" type="boolean"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+      
+      &lt;complexType name="BookInformation"&gt;
+        &lt;sequence&gt;
+          &lt;element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/&gt;
+          &lt;element name="title" type="string"/&gt;
+        &lt;/sequence&gt;
+        &lt;attribute name="type" use="required" type="string"/&gt;
+        &lt;attribute name="isbn" use="required" type="string"/&gt;
+      &lt;/complexType&gt;
+      
+    &lt;/schema&gt;
+
+  &lt;/wsdl:types&gt;
+
+  &lt;wsdl:message name="getBookRequest"&gt;
+    &lt;wsdl:part element="wns:getBook" name="parameters"/&gt;
+  &lt;/wsdl:message&gt;
+
+  &lt;wsdl:message name="getBookResponse"&gt;
+    &lt;wsdl:part element="wns:getBookResponse" name="parameters"/&gt;
+  &lt;/wsdl:message&gt;
+
+  &lt;wsdl:message name="addBookRequest"&gt;
+    &lt;wsdl:part element="wns:addBook" name="parameters"/&gt;
+  &lt;/wsdl:message&gt;
+  
+  &lt;wsdl:message name="addBookResponse"&gt;
+    &lt;wsdl:part element="wns:addBookResponse" name="parameters"/&gt;
+  &lt;/wsdl:message&gt;
+
+  &lt;wsdl:portType name="Library"&gt;
+
+    &lt;wsdl:operation name="getBook"&gt;
+      &lt;wsdl:input message="wns:getBookRequest" name="getBookRequest"/&gt;
+      &lt;wsdl:output message="wns:getBookResponse" name="getBookResponse"/&gt;
+    &lt;/wsdl:operation&gt;
+
+    &lt;wsdl:operation name="addBook"&gt;
+      &lt;wsdl:input message="wns:addBookRequest" name="addBookRequest"/&gt;
+      &lt;wsdl:output message="wns:addBookResponse" name="addBookResponse"/&gt;
+    &lt;/wsdl:operation&gt;
+
+  &lt;/wsdl:portType&gt;
+  ...
+&lt;/wsdl:definitions&gt;</pre>
+
+<p>This WSDL defines a service with just two operations: <b>getBook</b> and
+<b>addBook</b>. The <b>getBook</b> operation takes a <i>getBook</i> element
+as input, and returns a <i>getBookResponse</i> element as output, while
+<b>addBook</b> takes an <i>addBook</i> element as input and returns an
+<i>addBookResponse</i> as output. Each of these input and output elements in
+turn consists of a sequence of child elements, with some of the child
+elements defined directly using standard schema types and others referencing
+user-defined schema types.</p>
+
+<p>As I said up front, this WSDL qualifies for unwrapped handling using JiBX.
+Here's the body of the client interface generated when using unwrapping (the
+<i>-uw</i> option for WSDL2Java):</p>
+<pre>    public interface LibraryJibxUnwrapped {
+          
+             
+        /**
+         * Auto generated method signatures
+         * @param type* @param isbn* @param author* @param title
+         */
+         public boolean addBook(
+         java.lang.String type,java.lang.String isbn,java.lang.String[] author,java.lang.String title) throws java.rmi.RemoteException
+          
+                       
+             ;
+             
+             
+        /**
+         * Auto generated method signatures
+         * @param isbn
+         */
+         public com.sosnoski.ws.library.jibx.beans.Book getBook(
+         java.lang.String isbn) throws java.rmi.RemoteException
+          
+                       
+             ;
+             
+
+        
+       //
+       }</pre>
+
+<p>You can see that the JiBX code generation converted the operations into
+simple method call interfaces without introducing any extraneous objects (see
+<a href="./jibx-doclit-example.html">JiBX Document/Literal Example</a> for
+the interface generated when unwrapping is not used). The server-side
+interface is the same.</p>
+
+<p>The key points that allow unwrapped handling with JiBX are:</p>
+<ol>
+  <li>Each operation either accepts no input, or the input consists of a
+    single element.</li>
+  <li>Each input element is defined as a schema <i>complexType</i> consisting
+    of a <i>sequence</i> of any number of child elements.</li>
+  <li>Each operation either generates no output, or the output consists of a
+    single element.</li>
+  <li>Each output element is defined as a schema <i>complexType</i>
+    consisting of a <i>sequence</i> that's either empty or contains a single
+    child element.</li>
+  <li>The child elements of both inputs and outputs are defined using
+    <i>type</i> references, rather than an embedded type definitions.</li>
+</ol>
+
+<p>You also need to supply an appropriate JiBX binding definition (using the
+<i>-Ebindingfile {file}</i> parameter for WSDL2Java - see <a
+href="./jibx-codegen-integration.html#codegen">JiBX Codegen Integration -
+WSDL2Java usage</a> for more details). This must define abstract
+<i>mapping</i>s for the <i>complexType</i>s referenced by child elements of
+the inputs and outputs, with a <i>type-name</i> attribute matching the schema
+<i>complexType</i> name. If the child elements reference schema
+<i>simpleType</i> definitions the binding must also define a <i>format</i>s
+for each <i>simpleType</i>, with a <i>label</i> attribute matching the schema
+<i>simpleType</i> name. The binding definition must also specify the
+<i>force-classes='true'</i> attribute on the <i>binding</i> element.</p>
+
+<p>For example, here's a binding definition that matches the above WSDL:</p>
+<pre>&lt;binding force-classes="true" xmlns:tns="http://ws.sosnoski.com/library/types"&gt;
+
+  &lt;namespace uri="http://ws.sosnoski.com/library/types" default="elements"/&gt;
+  
+  &lt;mapping abstract="true" class="com.sosnoski.ws.library.jibx.beans.Book"
+      type-name="tns:BookInformation"&gt;
+    &lt;value name="type" style="attribute" field="m_type"/&gt;
+    &lt;value name="isbn" style="attribute" field="m_isbn"/&gt;
+    &lt;collection field="m_authors"&gt;
+      &lt;value name="author"/&gt;
+    &lt;/collection&gt;
+    &lt;value name="title" field="m_title"/&gt;
+  &lt;/mapping&gt;
+  
+&lt;/binding&gt;</pre>
+
+<p>And here's the actual <code>com.sosnoski.ws.library.jibx.beans.Book</code>
+class:</p>
+<pre>package com.sosnoski.ws.library.jibx.beans;
+
+public class Book
+{
+    private String m_type;
+    private String m_isbn;
+    private String m_title;
+    private String[] m_authors;
+    
+    public Book() {}
+
+    public String getType() {
+        return m_type;
+    }
+    
+    public String getIsbn() {
+        return m_isbn;
+    }
+    
+    public String getTitle() {
+        return m_title;
+    }
+    
+    public String[] getAuthors() {
+        return m_authors;
+    }
+}</pre>
+
+<p>The JiBX code generation for Axis2 currently requires that classes
+coresponding to unwrapped child elements (such as
+<code>com.sosnoski.ws.library.jibx.beans.Book</code>, in this case) provide
+public default (no-argument) constructors.</p>
+
+<p>JiBX handling allows the child elements of both inputs and outputs to be
+optional (with <i>nillable='true'</i>, <i>minOccurs='0'</i>, or both),
+providing the binding converts these child elements to object types rather
+than primitive types. It also allows repeated child elements (with
+<i>minOccurs='unbounded'</i>, or any value of <i>minOccurs</i> greater than
+one), representing the repeated elements as arrays of the corresponding
+object or primitive types.</p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/jms-transport.html b/rampart_1_1/xdocs/1_1/jms-transport.html
new file mode 100644
index 0000000..6c6a386
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/jms-transport.html
@@ -0,0 +1,195 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>JMS Transport</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1><a name="configTransport">JMS Transport</a></h1>

+

+<p>This document is all about the JMS (Java Messaging Service) Transport

+support in Apache Axis2, and how it should be configured.</p>

+

+<p><i>Send your feedback or questions to: <a

+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix

+subject with [Axis2]. To subscribe to mailing list see <a

+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>

+

+<h2>Contents</h2>

+<ul>

+  <li><a href="#CommonsHTTPTransportSender">Overview</a></li>

+  <li><a href="#timeout_config">Configuration</a></li>

+  <li><a href="#writing_services">Writing Services to Use The JMS

+    Transport</a></li>

+</ul>

+<a name="CommonsHTTPTransportSender"></a>

+

+<h2>Overview</h2>

+

+<p>A new JMS or Java Messaging Service transport implementation has been

+added to Axis2 to overcome some drawbacks of the previous JMS implementation.

+Some of the enhancements provided with this new implementation is the ability

+to <strong>assign custom JMS destination names or existing JMS destinations

+to Axis2 services being deployed</strong>.</p>

+<a name="timeout_config"></a>

+

+<h2>Configuration</h2>

+

+<p>To use the JMS transport, the axis2.xml configuration must be setup as

+follows in order to configure the JMSListener and the JMS Sender</p>

+<pre><strong>axis2.xml</strong>

+    &lt;transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&gt;

+      &lt;parameter name="default" locked="false"&gt;                

+        &lt;parameter name="java.naming.factory.initial" locked="false"&gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&lt;/parameter&gt;

+        &lt;parameter name="java.naming.provider.url" locked="false"&gt;tcp://localhost:61616&lt;/parameter&gt;        

+        &lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&gt;QueueConnectionFactory&lt;/parameter&gt;

+      &lt;/parameter&gt;

+    &lt;/transportReceiver&gt;

+

+    &lt;transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/&gt;</pre>

+

+<p>The JMS transport receiver configuration allows you to define the default

+connection factory (named as "default" ~ JMSConstants.DEFAULT_CONFAC_NAME)

+for use by Axis2 services using the JMS transport. This connection factory

+would be used by any service which does not explicitly specify a connection

+factory name in its services.xml. The configuration required to associate a

+(local) Axis2 connection factory to an actual implementation must be provided

+as shown above, to specify the JNDI URL, initial context factory class and

+the JNDI name of the actual JMS connection factory is to be used. You may

+also specify the parameters "java.naming.security.principal" and

+"java.naming.security.credentials" if required, to access the actual

+connection factory. The example shown above uses an ActiveMQ JMS

+implementation.</p>

+<pre><strong>axis2.xml</strong>

+  &lt;parameter name="myTopicConnectionFactory" locked="false"&gt;</pre>

+<pre>    &lt;parameter name="java.naming.factory.initial" locked="false"&gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&lt;/parameter&gt;</pre>

+<pre>    &lt;parameter name="java.naming.provider.url" locked="false"&gt;tcp://localhost:61616&lt;/parameter&gt;</pre>

+<pre>    &lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&gt;TopicConnectionFactory&lt;/parameter&gt;</pre>

+<pre>  &lt;/parameter&gt;</pre>

+

+<p>If it is required or applicable, you are free to define additional (local)

+connection factories to Axis2 as shown above, which your services may use.

+For a service to specify that such a connection factory should be used, its

+services.xml may specify the following configuration parameter:</p>

+<pre>services.xml  

+  &lt;parameter name="transport.jms.ConnectionFactory" locked="true"&gt;myTopicConnectionFactory&lt;/parameter&gt;</pre>

+

+<p><strong>Note:</strong> Depending on your JMS implementation, you will need

+to make available all required libraries to your Axis2 instance. This example

+assumes you are using an ActiveMQ instance. To run the given code samples, it

+was required to make available the following JAR files:

+activeio-core-3.0-beta1.jar, activemq-core-4.0-RC2.jar,

+geronimo-j2ee-management_1.0_spec-1.0.jar at a minimum. It also requires you

+to start ActiveMQ separately from Axis2, and then provide the appropriate

+configuration settings (e.g. URL) to Axis2.</p>

+

+<p>During initialization, the JMS Listener creates a dedicated JMS message

+processor for each connection factory defined, and utilizes a shared thread

+pool to process received messages.</p>

+

+<p>A service on an Axis2 instance is deployed on all started transports by

+default, unless a list of transports are specified in its services.xml.

+Hence, if a service must only be deployed on JMS, you should specify it on

+the services.xml as follows:</p>

+<pre>  &lt;transports&gt; 

+    &lt;transport&gt;jms&lt;/transport&gt; 

+  &lt;/transports&gt;</pre>

+

+<p>If the services.xml does not provide an explicit JMS destination name, it

+is assumed that the service will listen for messages on a JMS

+<strong>Queue</strong> by the same name as the <strong>name of the

+service</strong>. If an explicit connection factory definition name has not

+been specified, it is assumed that the "default" connection factory

+definition configured within the transport receiver be used. To provide a

+custom JMS destination name and connection factory, the services.xml could

+provide the following optional parameters.</p>

+<pre>  &lt;parameter name="transport.jms.ConnectionFactory" locked="true"&gt;myTopicConnectionFactory&lt;/parameter&gt;

+  &lt;parameter name="transport.jms.Destination" locked="true"&gt;dynamicTopics/something.TestTopic&lt;/parameter&gt;</pre>

+<a name="writing_services"></a>

+

+<h2>Writing Services to Use The JMS Transport</h2>

+

+<p>This section assumes that you are already familiar with <a

+href="xmlbased-server.html">writing service implementations</a> for Axis2, and

+provides information to enable you to write your own service implementations

+which are exposed over JMS.</p>

+

+<p><strong>Echo - Service implementation and services.xml</strong></p>

+

+<p>This sample demonstrates a very simple service which is to be exposed over

+JMS. It does not specify a custom connection factory name and hence uses the

+"default" as specified in the JMS transport listener configuration. It also

+does not specify a custom destination name, and hence would listen to

+messages over a JMS Queue named "Echo" (which is the name of the service).

+This service will be exposed over all defined Axis2 transports, and the

+resulting URL for the service over JMS would be:</p>

+

+<p>jms:/echo?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616</p>

+<pre><strong>Echo.java</strong></pre>

+<pre>  public class Echo {</pre>

+<pre>    public String echoString(String in) {</pre>

+<pre>      return in;</pre>

+<pre>    }</pre>

+<pre>    public String echoString1(String in) {</pre>

+<pre>      return "echoString1 " + in;</pre>

+<pre>    }</pre>

+<pre>    public String echoString2(String in) {</pre>

+<pre>      return "echoString2 " + in;</pre>

+<pre>    }</pre>

+<pre>  }</pre>

+<pre></pre>

+<pre><strong>services.xml</strong></pre>

+<pre>  &lt;service name="echo"&gt;</pre>

+<pre>    &lt;description&gt;Echo Service&lt;/description&gt;</pre>

+<pre>    &lt;messageReceivers&gt;</pre>

+<pre>      &lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"</pre>

+<pre>        class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/&gt;</pre>

+<pre>      &lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"</pre>

+<pre>        class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/&gt;</pre>

+<pre>    &lt;/messageReceivers&gt;</pre>

+<pre>    &lt;parameter name="ServiceClass" locked="true"&gt;Echo&lt;/parameter&gt;</pre>

+<pre>&lt;/service&gt;</pre>

+

+<p></p>

+

+<p><strong>Echo2 - Service implementation and services.xml</strong></p>

+

+<p>This example shows a simple service which specifies that it should only be

+exposed over the JMS transport, and that the custom connection factory named

+"myTopcConnectionFactory" should be used to listen for requests at the JMS

+destination named "dynamicTopics/something.TestTopic". The JMS URL to access

+this service is:</p>

+

+<p>jms:/dynamicTopics/something.TestTopic?transport.jms.ConnectionFactoryJNDIName=TopicConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;java.naming.security.principal=system&amp;java.naming.security.credentials=manager</p>

+<pre><strong>Echo2.java</strong></pre>

+<pre>  public class Echo2 {</pre>

+<pre>    public String echoString(String in) {</pre>

+<pre>      return in;</pre>

+<pre>    }</pre>

+<pre>  }</pre>

+<pre></pre>

+<pre><strong>services.xml</strong></pre>

+<pre>  &lt;service name="echo"&gt;</pre>

+<pre>    &lt;transports&gt;</pre>

+<pre>      &lt;transport&gt;jms&lt;/transport&gt;</pre>

+<pre>    &lt;/transports&gt;</pre>

+<pre>    &lt;description&gt;Echo2 Service&lt;/description&gt;</pre>

+<pre>    &lt;messageReceivers&gt;</pre>

+<pre>      &lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"</pre>

+<pre>        class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/&gt;</pre>

+<pre>      &lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"</pre>

+<pre>        class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/&gt;</pre>

+<pre>    &lt;/messageReceivers&gt;</pre>

+<pre>    &lt;parameter name="ServiceClass" locked="true"&gt;Echo2&lt;/parameter&gt;</pre>

+<pre>    &lt;parameter name="transport.jms.ConnectionFactory" locked="true"&gt;myTopicConnectionFactory&lt;/parameter&gt;</pre>

+<pre>    &lt;parameter name="transport.jms.Destination" locked="true"&gt;dynamicTopics/something.TestTopic&lt;/parameter&gt;</pre>

+<pre>  &lt;/service&gt;</pre>

+<pre> </pre>

+

+<h2>Starting up the Axis2 JMS transport</h2>

+<pre>The Axis2 standalone binary distribution ships with an Axis2 Server, which starts up all of the transports that are configured as per the axis2.xml. 

+Hence configure the JMS transport in your axis2.xml, and use the axis2server.bat or the axis2server.sh to start the JMS transport.</pre>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/mail-configuration.html b/rampart_1_1/xdocs/1_1/mail-configuration.html
new file mode 100644
index 0000000..4438e75
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/mail-configuration.html
@@ -0,0 +1,209 @@
+<!-- saved from url=(0022)http://internet.e-mail -->
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Mail transport</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1>Mail Transport Configuration</h1>
+
+<p>This document provides the guidelines on how to configure Axis2 in order
+to get the mail transport working.</p>
+
+<p><i>Send your feedback or questions to: <a
+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix
+subject with [Axis2]. To subscribe to mailing list see <a
+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#sender">Transport Sender</a></li>
+  <li><a href="#receiver">Transport Receiver</a></li>
+  <li><a href="#server">Using Mail Transport in the Server Side</a></li>
+  <li><a href="#james">Configure James as SMTP and POP Server</a></li>
+  <li><a href="#included">Using the Included Mail Server</a></li>
+</ul>
+<a name="intro"></a>
+
+<h2>Introduction</h2>
+
+<p>The inner workings of the mail transport has been divided into two parts,
+the transport sender for SMTP and the transport listener for POP3. The
+transport listener will listen to a particular email address periodically.
+When an email comes in it will be tunneled into an Axis2 engine. On the other
+hand, mail transport sender sends emails to a mail server for a particular
+email address.</p>
+
+<p>Mail transport can be used against a generic mail server or it can be used
+like a mailet. The simple mailet provided with Axis2 will direct any message
+that is coming to a particular address into the Axis engine. The engine will
+process the message and will use the Transport sender to send the reply.</p>
+
+<p>The mail transports have been written with the use of Sun's JavaMail and
+Activation jars. These should be available in your classpath to get the mail
+transport work.</p>
+<a name="sender"></a>
+
+<h2>Transport Sender</h2>
+
+<p>You need to have a mail account to activate the mail functionality. This
+can either be a generic mail server or you can start up a James mail server,
+which will be available <a href="http://james.apache.org/">here</a>.</p>
+
+<p>JavaMail sets its properties to a Properties object. In Axis2, this has
+been mapped to a Parameter object. Mapping has been done as follows,</p>
+<ul>
+  <li>Every JavaMail property can be set to @name of the &lt;parameter/&gt;.
+    Thus, SSL connection is mapped the way it is done in JavaMail</li>
+  <li>Few properties, such as password etc., are set to @name with the prefix
+    "transport"</li>
+</ul>
+
+<p>For a non-SSL connection, as an example,mail transport sender can be
+activated by adding following entry to the axis2.xml file.</p>
+<source><pre>   &lt;transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender"&gt;
+        &lt;parameter name="mail.smtp.host" locked="false"&gt;localhost&lt;/parameter&gt;
+        &lt;parameter name="mail.smtp.user" locked="false"&gt;mary&lt;/parameter&gt;
+        &lt;parameter name="transport.mail.smtp.password" locked="false"&gt;mary&lt;/parameter&gt;     
+   &lt;/transportSender&gt;
+  </pre>
+</source>
+<p>In runtime tuning a client to set mail transport is as easy as follows,</p>
+<source><pre>...
+
+Options options =  new Options();
+HttpTransportProperties.MailProperties mailProps 
+                    = new HttpTransportProperties.MailProperties();
+mailProps.addProperty("mail.smtp.host","localhost");
+mailProps.addProperty("mail.smtp.user","mary");
+mailProps.setPassword("mary");
+
+options.setProperty(HTTPConstants.MAIL_SMTP,mailProps);
+
+...</pre>
+</source>Thus, a user familiar with setting up a SSL connection, should
+easily do it with the MailProperties object. For Eg.: tuning the sender to
+talk to gmail account. This configuration should also be done with
+&lt;parameter/&gt; in axis2.xml. <source>
+<pre>...
+HttpTransportProperties.MailProperties props = 
+                  new HttpTransportProperties.MailProperties();
+        props.put("mail.smtp.user", "address@gmail.com");
+        props.put("mail.smtp.host", "smtp.gmail.com");
+        props.put("mail.smtp.port", "465");
+        props.put("mail.smtp.starttls.enable","true");
+        props.put("mail.smtp.auth", "true");
+        //props.put("mail.smtp.debug", "true"); // if the user wants
+        props.put("mail.smtp.socketFactory.port", "465");
+        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
+        props.put("mail.smtp.socketFactory.fallback", "false");
+        props.setPassword("password");
+
+...</pre>
+</source><a name="receiver"></a>
+
+<h2>Transport Receiver</h2>
+
+<p>For a non-SSL connection, as an example, mail Listener can be activated by
+adding the following entry to the axis2.xml file.</p>
+<source><pre>   &lt;transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener"&gt;
+        &lt;parameter name="mail.pop3.host" locked="false"&gt;localhost&lt;/parameter&gt;
+        &lt;parameter name="mail.pop3.user" locked="false"&gt;bob&lt;/parameter&gt;
+        &lt;parameter name="transport.mail.pop3.password" locked="false"&gt;bob&lt;/parameter&gt;
+        &lt;parameter name="transport.mail.replyToAddress" locked="false"&gt;bob@localhost&lt;/parameter&gt;
+  &lt;/transportReceiver&gt;
+  </pre>
+</source>
+<p><i>Note:</i> The @name="transport.mail.replyToAddress" is an important
+parameter. It supply the Endpoint reference to the listener.</p>
+
+<p>For an advanced user, this can be set to a SSL connection. As an example,
+lets use this transport listener to pop from a specified gmail account.</p>
+<source><pre>&lt;transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener"&gt;
+        &lt;parameter name="mail.pop3.host" locked="false"&gt;pop.gmail.com&lt;/parameter&gt;
+        &lt;parameter name="mail.pop3.user" locked="false"&gt;address@gmail.com&lt;/parameter&gt;
+        &lt;parameter name="mail.pop3.socketFactory.class" locked="false"&gt;javax.net.ssl.SSLSocketFactory&lt;/parameter&gt;
+        &lt;parameter name="mail.pop3.socketFactory.fallback" locked="false"&gt;false&lt;/parameter&gt;
+        &lt;parameter name="mail.pop3.port" locked="false"&gt;995&lt;/parameter&gt;
+        &lt;parameter name="mail.pop3.socketFactory.port" locked="false"&gt;995&lt;/parameter&gt;
+        &lt;parameter name="transport.mail.pop3.password" locked="false"&gt;password&lt;/parameter&gt;
+        &lt;parameter name="transport.mail.replyToAddress" locked="false"&gt;address@gmail.com&lt;/parameter&gt;
+&lt;/transportReceiver&gt;</pre>
+</source><a name="server"></a>
+
+<h2>Using Mail Transport in the Server Side</h2>
+
+<p>If the Mail Listener is need to be started as a standalone mail listener,
+it can be done with following command with the all the Axis2 jars and the
+mail dependency jars in the classpath.</p>
+<source><pre>java org.apache.axis2.transport.mail.SimpleMailListener repository-directory</pre>
+</source><a name="client"></a>
+
+<h2>Using Mail Transport in the Client Side</h2>
+
+<p>The following code segment shows how to send a one-way (IN-Only MEP) SOAP
+message using the mail transport, this needs the Transport Sender
+configured.</p>
+<source><pre>        
+        OMElement payload = ....
+        String targetEPR = "mail:axis2@localhost/axis2/services/Foo";
+
+        ConfigurationContext configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo,
+                axis2XML);
+
+        ServiceClient servicClient = new ServiceClient(configurationContext, null);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setTransportInProtocol(Constants.TRANSPORT_MAIL);
+
+        servicClient.setOptions(options);
+
+        servicClient.sendRobust(payload);</pre>
+</source><a name="james"></a>
+
+<h2>Configure James as SMTP and POP Server</h2>
+
+<p>Download the <a href="http://james.apache.org/">Apache James</a> and start
+James, connect to the James via Telnet for administrator James with the
+following code:</p>
+<source><pre>$telnet 127.0.0.1 4555
+Trying 127.0.0.1...
+Connected to localhost.localdomain (127.0.0.1).
+Escape character is '^]'.
+JAMES Remote Administration Tool 2.2.0
+Please enter your login and password
+Login id:
+root
+Password:
+root
+Welcome root. HELP for a list of commands</pre>
+</source>
+<p>Add users to James</p>
+<source><pre>adduser axis2-server axis2
+User axis2-server added
+adduser axis2-client axis2
+User axis2-client added
+Connection closed by foreign host.</pre>
+</source>
+<p>Now James is up and running with the accounts.</p>
+<a name="included"></a>
+
+<h2>Using the Included Mail Server</h2>
+
+<p>The inbuilt mail server can be started from the command line using the
+following piece of code when all the necessary jars are in the class path.</p>
+<source><pre>java org.apache.axis2.transport.mail.server.MailServer</pre>
+</source>
+<p>The server itself does not need any configuration or tinkering to work. A
+ConfigurationContext and the ports to operate on are the only details needed.
+The server will store the mails in memory against the recipient till the
+recipient pops it from the server. To facilitate the use in *nix environments
+as a non root user the POP and SMTP ports used by default config/test cases
+are (1024 + 25) and (1024 + 110).</p>
+<hr>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/mail-transport.html b/rampart_1_1/xdocs/1_1/mail-transport.html
new file mode 100644
index 0000000..3c5cf2a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/mail-transport.html
@@ -0,0 +1,211 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Invoking a service using a mail</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body>
+<h1>Invoking a Service Using a Mail Transport</h1>
+
+<p>This document basically explains how to invoke a service through Mail
+transports. Content for this document has been listed as follows,</p>
+
+<p><i>Send your feedback or questions to: <a
+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix
+subject with [Axis2]. To subscribe to mailing list see <a
+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#prologue">Prologue</a></li>
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#axis2">Using Simple Mail Server Included in Axis2</a></li>
+  <li><a href="#generic">Using a Generic Mail Server</a></li>
+  <!--li><a href="#mailet">Calling Axis Through a James Mailet</a></li-->
+</ul>
+<a name="prologue"></a>
+
+<h2>Prologue</h2>
+
+<p>Most of Web services that we interact with are synchronous and
+request-response in nature. However, we see that the synchronous
+request-response type of interaction is only a part of the messaging
+scenarios we encounter in real life. Asynchronous messaging is very important
+in constructing loosely coupled systems. Take for instance a chain of stores,
+at the end of the day all the stores all over can send a mail to the central
+system telling it what that days business activity was and in the morning
+when the store opens there will be a reply to that mail with new instructions
+and updates. It is a lot like the way the old business worked but with a
+modern touch. Similarly Axis2 mail transport can be used to implement
+asynchronous messaging through mail.</p>
+<a name="intro"></a>
+
+<h2>Introduction</h2>
+
+<p>To start you will first need to go through the <a
+href="mail-configuration.html" target="_blank">Mail Transport
+Configuration</a> document. It will provide the user with the first hand experience in setting up the mail transports to co-exists with Axis2.</p>
+
+<p>Broadly speaking there are 3 ways of calling a service through mail.</p>
+
+<blockquote>
+  1. Using the simple mail server included in Axis2(not recommended in production).<br>
+  2. Using a generic mail server.<br>
+  3. Using mailets.<br>
+</blockquote>
+
+<p>Options 1 and 2 are fairly simple and easy to implement, whereas
+option 3 is somewhat harder.The mailet scenario however does provide a more
+robust and useful solution in a production environment.</p>
+
+<p>It is very easy to start learning the workings of mail transports with the aid of Simple Mail Server that provides with Axis2. Once you get the hang of the Axis2 related issues then you can move on to tackle the mail beast. Please do note that the Simple Mail Server that provides with Axis2 is not graded for production use.</p>
+<a name="axis2"></a>
+
+<h2>1. Using Simple Mail Server Included in Axis2</h2>
+
+<p>The SMTP/POP server that we have included has the ability to function as a
+standalone SMTP/POP server and also has the ability to work as a mailet. All
+this is done through a small filter that keeps watch for certain
+pre-configured email addresses. These pre-configured email addresses can be
+changed by doing a simple edit of the filter class
+org.apache.axis2.transport.mail.server.Sorter.</p>
+
+<p>Now that we have the environment set up, let us start pumping out some
+code to get the mail functionality off the ground. First we'll have a look at
+it from the mail server side. <br>
+</p>
+<source><pre>        // Start the mail server using the default configurations.
+        ConfigurationContext configContext = UtilsMailServer.start();
+
+        // Start the default mail listener. It will starting poling for mail
+        // using the configuration from the XML file.
+        SimpleMailListener ml = new SimpleMailListener();
+        ml.init(configContext,
+                configContext.getAxisConfiguration().getTransportIn(
+                        new QName(Constants.TRANSPORT_MAIL)));
+        ml.start();
+
+        private QName serviceName = new QName("EchoXMLService");
+        private QName operationName = new QName("echoOMElement");
+    
+        // Setup a service that will echo what we send to the server.
+        AxisService service = Utils.createSimpleService(serviceName, Echo.class
+                .getName(), operationName);
+        serverConfigContext.getAxisConfiguration().addService(service);</pre>
+</source>
+<p>This code sets up your Axis2 server working through mail, with a single
+service. If you need to have a look under the hood check out the MailServer
+and UtilsMailServer classes.</p>
+
+<p>Moving onto the client side have a look at the code listing below. It will
+call the axisService that was setup on the previous code listing.</p>
+<source><pre>        ConfigurationContext configContext = UtilsMailServer
+                .createClientConfigurationContext();
+        AxisService service = new AxisService(serviceName.getLocalPart());
+        AxisOperation axisOperation = new OutInAxisOperation();
+        axisOperation.setName(operationName);
+        axisOperation.setMessageReceiver(new MessageReceiver() {
+            public void receive(MessageContext messageCtx) {
+                envelope = messageCtx.getEnvelope();
+            }
+        });
+        service.addOperation(axisOperation);
+        configContext.getAxisConfiguration().addService(service);
+        ServiceContext serviceContext = new ServiceGroupContext(configContext,
+        		(AxisServiceGroup) service.getParent()).getServiceContext(service);
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setAction(operationName.getLocalPart());
+        options.setTransportInProtocol(Constants.TRANSPORT_MAIL);
+        options.setUseSeparateListener(true);
+
+        Callback callback = new Callback() {
+            public void onComplete(AsyncResult result) {
+                try {
+                    result.getResponseEnvelope().serializeAndConsume(
+                            XMLOutputFactory.newInstance()
+                                    .createXMLStreamWriter(System.out));
+                } catch (XMLStreamException e) {
+                    onError(e);
+                } finally {
+                    finish = true;
+                }
+            }
+
+            public void onError(Exception e) {
+                log.info(e.getMessage());
+                finish = true;
+            }
+        };
+
+        ServiceClient sender = new ServiceClient(configContext, service);
+        sender.setOptions(options);
+        //options.setTo(targetEPR);
+        sender.sendReceiveNonBlocking(operationName, createEnvelope(), callback);
+
+        int index = 0;
+        while (!finish) {
+            Thread.sleep(1000);
+            index++;
+            if (index > 10) {
+                throw new AxisFault(
+                        "Server was shutdown as the async response is taking too long to complete.");
+            }
+        }
+
+    }</pre>
+</source>
+<p>This will call the service that was setup on the server and will poll the
+mail server till the response is received.Please do note that serviceName and operationName need to be QNames.</p>
+
+<a name="generic"></a>
+
+<h2>2. Using a Generic Mail Server</h2>
+
+<p>First you need two email accounts that works with POP/SMTP. One will act
+as a server and the other will act as the client. For the time being we will
+use server@somewhere.org and client@somewhere.org as the server and the
+client email addresses. Now that we have the email addresses you will have to
+set up the client and the server with Mail Transport <a
+href="mail-configuration.html"
+target="_blank">configuration document</a>.</p>
+
+<p>When calling the generic mail server the client side code will remain the
+same and there will be some modification to the server-side code.</p>
+
+<p></p>
+<source><pre>        // Create a configuration context. This will also load the details about the mail
+        // address to listen to from the configuration file.
+        File file = new File(MAIL_TRANSPORT_SERVER_ENABLED_REPO_PATH);
+        ConfigurationContextFactory builder = new ConfigurationContextFactory();
+        ConfigurationContext configContext = configContextbuilder
+                .buildConfigurationContext(file.getAbsolutePath());
+
+        // Start the default mail listener. It will starting poling for mail
+        // using the configuration from the XML file.
+        SimpleMailListener ml = new SimpleMailListener();
+        ml.init(configContext,
+                configContext.getAxisConfiguration().getTransportIn(
+                        new QName(Constants.TRANSPORT_MAIL)));
+        ml.start();
+
+        private QName serviceName = new QName("EchoXMLService");
+        private QName operationName = new QName("echoOMElement");
+    
+        // Setup a service that will echo what we send to the server.
+        AxisService service = Utils.createSimpleService(serviceName, Echo.class
+                .getName(), operationName);
+        serverConfigContext.getAxisConfiguration().addService(service);</pre>
+</source>
+<p>Note that a separate ConfigurationContext needs to be created and used.</p>
+<!--a name="mailet"></a>
+
+<h3>3. Calling Axis2 Through a Mailet</h3-->
+
+
+<p></p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/migration.html b/rampart_1_1/xdocs/1_1/migration.html
new file mode 100644
index 0000000..c6dd55a
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/migration.html
@@ -0,0 +1,667 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <title>Migrating from Axis 1.x</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1>Migrating from Apache Axis 1.x to Axis 2</h1>
+
+<p>For all those users who are familiar with Axis2 1.x series will be
+assisted through this document to switch to Axis2 series. We begin by listing
+the improvements in Axis2 in comparison with Axis1. This is followed by
+guidelines for the migration.</p>
+
+<p><i>Send your feedback or questions to: <a
+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix
+subject with [Axis2]. To subscribe to the mailing list see <a
+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#comp">Compatibility</a></li>
+  <li><a href="#start">Getting Started</a></li>
+  <li><a href="#custom_deployment">Custom Deployment of Services, Handlers
+    and Modules</a></li>
+  <li><a href="#transports">Transports for HTTP Connection</a></li>
+  <li><a href="#data_binding">Data Binding Support</a></li>
+  <li><a href="#best">Best Usage</a></li>
+</ul>
+<a name="comp"></a>
+
+<h2>Compatibility</h2>
+
+<p>Axis1.x and Axis2 have been evolved from different architectures.</p>
+
+<p><strong>Speed</strong> - Axis2 is based on StAX API, which gives greater
+speed than SAX event based parsing that has been used in Axis1.x.</p>
+
+<p><strong>Stability</strong> - Axis2 has fixed phases and for extensions an
+area of user defined phases. This allows far more stability and flexibility
+than Axis1.x.</p>
+
+<p><strong>Transport framework</strong> - Simple abstraction in the designing
+of transports (i.e., senders and listeners for SOAP over various protocols
+such as SMTP, etc), allows far more flexibility and the core of the engine is
+completely transport-independent.</p>
+
+<p><strong>WSDL support</strong> - Axis2 supports version 1.1 and 2.0, which
+allows creating stubs and skeletons, to manipulate the web services arena.</p>
+
+<p><strong>Component - oriented architecture</strong> - This is merely
+through archives (.mar and .aar) . Easily reusable components such as
+handlers, modules allow patterns processing for your applications, or to
+distribution to partners. Axis2 is more concerned on the "Module" concept
+rather the "Handler" concept. Modules contain handlers that have been ordered
+through the phase rules. These are ordered to specific service(s).</p>
+<a name="start"></a>
+
+<h2>Getting Started</h2>
+
+<p>Lets look at a simple example of echoing at client API.</p>
+
+<p><b>Axis 1.x</b></p>
+<pre>import ...
+public class TestClient {
+        public static void main(String [] args) {
+                try {
+                        String endpoint = ... ;
+                        Service axisService = new Service();
+                        Call call = (Call) axisService.createCall();
+                        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
+                        call.setOperationName(new QName("http://soapinterop.org/", echoString"));
+                        String ret = (String) call.invoke( new Object[] { "Hello!" } );
+                        System.out.println("Sent 'Hello!', got '" + ret + "'");
+                } catch (Exception e) {
+                        System.err.println(e.toString());
+                }
+        }
+}</pre>
+
+<p><b>Axis 2</b></p>
+<pre>import ...
+public class EchoBlockingClient {
+        private static EndpointReference targetEPR = new EndpointReference(
+        AddressingConstants.WSA_TO,
+                                "http://127.0.0.1:8080/axis2/services/MyService");
+        public static void main(String[] args) {
+                try {
+                        OMElement payload = ClientUtil.getEchoOMElement();
+                        Options options = new Options();
+                        ServiceClient client = new ServiceClient();
+                        options.setTo(targetEPR);
+                        //Blocking invocation
+                        OMElement result = client.sendReceive(payload);
+                        ...
+                } catch (AxisFault axisFault) {
+                        axisFault.printStackTrace();
+                } catch (XMLStreamException e) {
+                        e.printStackTrace();
+                }
+        }
+}</pre>
+
+<p>It has been clearly depicted that the invocation in Axis2 is dealt with
+SOAP body element itself. Here the invocation is synchronous but Axis2 can
+handle asynchronous invocations as well. The "payload" variable above
+contains the SOAP body element which should go in the soap envelope.</p>
+
+<p>Once the service is called through the stub in Axis2, "payload" is
+according to the data binding framework that will be used. So the extra work
+of "payload" will be vanished.</p>
+
+<p>Apart from synchronous invocation, Axis2 supports asynchronous invocation
+through sendReceiveNonblocking(). Synchronous/Asynchronous invocations can
+handle both single/double HTTP connections.</p>
+
+<p>With this advanced architecture, Axis2 is capable of handling megabytes of
+requests and responses, which is far from what Axis1.x was capable of.</p>
+<a name="custom_deployment"></a>
+
+<h2>Custom Deployment of Services, Handlers and Modules</h2>
+
+<p>In Axis 1.x, the deployment of services was via WSDD, which in my opinion
+was highly cumbersome. Service deployment in Axis2 is straight forward and
+dynamic. Dynamic behavior is from the "Administrator" facility given by the
+development in the server side. It's just a matter of creating the .aar file,
+and deploying it. More details regarding this is given in the Axis2 user
+guide.</p>
+
+<p>Axis2 is far from the "Handler concept" and is more into the "Module
+concept". Abstractly speaking, the module concept is a collection of handlers
+with rules of governing which modules are created as .mar files. It has
+module.xml, which is the brain behind manipulating the handlers.</p>
+
+<p>When a service is called through a handler, it is just a matter of giving
+a reference to the module that includes the handler in the services.xml
+(using &lt;module ref="foo/&gt;").</p>
+
+<p>Services are hot deployable in Axis2, but modules are not. This is one
+feature which is unique to Axis2.</p>
+
+<p>Lets take a detailed look at what it takes to migrate the Axis 1.x
+handlers to the Axis 2 modules via the "SOAP Monitor". The SOAP monitor is
+really a combination of three components: An applet which displays responses
+/ requests, a servlet which binds to a default port of 5001 and connects to
+the applet, and a handler chain used to intercept the soap messages. Here
+we'll focus on the handler.</p>
+
+<p><b>Axis 1.x required two WSDD's to use the SOAP Monitor. First, the SOAP
+Monitor Handler itself:</b></p>
+<pre>&lt;deployment xmlns="http://xml.apache.org/axis/wsdd/"
+    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;
+    
+  &lt;handler name="soapmonitor" 
+      type="java:org.apache.axis.handlers.SOAPMonitorHandler"&gt;
+    &lt;parameter name="wsdlURL" 
+      value="/wzs/SOAPMonitorService-impl.wsdl"/&gt;
+    &lt;parameter name="namespace" 
+      value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/&gt;
+    &lt;parameter name="serviceName" value="SOAPMonitorService"/&gt;
+    &lt;parameter name="portName" value="Demo"/&gt;
+  &lt;/handler&gt;
+
+  &lt;service name="SOAPMonitorService" provider="java:RPC"&gt;
+    &lt;parameter name="allowedMethods" value="publishMessage"/&gt;
+    &lt;parameter name="className" 
+      value="org.apache.axis.monitor.SOAPMonitorService"/&gt;
+    &lt;parameter name="scope" value="Application"/&gt;
+  &lt;/service&gt;
+&lt;/deployment&gt;</pre>
+
+<p><b>Axis 1.x requires a reference to the handler in the user's WSDD that
+defines their Web Service:</b></p>
+<pre>&lt;deployment name="example" xmlns="http://xml.apache.org/axis/wsdd/" 
+    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;
+  
+  &lt;service name="urn:myService" provider="java:RPC"&gt;
+    &lt;parameter name="className" value="org.MyService"/&gt;
+    &lt;parameter name="allowedMethods" value="*"/&gt;
+
+    &lt;requestFlow&gt;
+      &lt;handler type="soapmonitor"/&gt;
+    &lt;/requestFlow&gt;
+    &lt;responseFlow&gt;
+      &lt;handler type="soapmonitor"/&gt;
+    &lt;/responseFlow&gt;
+
+  &lt;/service&gt;
+&lt;/deployment&gt;</pre>
+
+<p><b>Axis 2 requires a module.xml, placed inside a jar with a .mar extension
+under WEB-INF/modules, to define a Handler:</b></p>
+<pre>&lt;module name="soapmonitor" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorModule"&gt;
+    &lt;inflow&gt;
+        &lt;handler name="InFlowSOAPMonitorHandler" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler"&gt;
+            &lt;order phase="soapmonitorPhase"/&gt;
+        &lt;/handler&gt;
+    &lt;/inflow&gt;
+
+    &lt;outflow&gt;
+        &lt;handler name="OutFlowSOAPMonitorHandler" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler"&gt;
+            &lt;order phase="soapmonitorPhase"/&gt;
+        &lt;/handler&gt;
+    &lt;/outflow&gt;
+
+    &lt;Outfaultflow&gt;
+        &lt;handler name="FaultOutFlowSOAPMonitorHandler" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler"&gt;
+            &lt;order phase="soapmonitorPhase"/&gt;
+        &lt;/handler&gt;
+    &lt;/Outfaultflow&gt;
+
+    &lt;INfaultflow&gt;
+        &lt;handler name="FaultInFlowSOAPMonitorHandler" class="org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler"&gt;
+            &lt;order phase="soapmonitorPhase"/&gt;
+        &lt;/handler&gt;
+    &lt;/INfaultflow&gt;
+&lt;/module&gt;</pre>
+
+<p>The SOAPMonitorModule referenced above simply implements
+org.apache.axis2.modules.Module and is used for any additional tasks needed
+to initialize the module and shutdown the module. In this case nothing is
+needed and the implemented interface methods have blank bodies. Furthermore,
+the 'soapmonitorPhase' will be used later below in the axis2.xml .</p>
+
+<p><b>Axis 1.x the SOAPMonitorHandler has the class signature as:</b></p>
+<pre>public class SOAPMonitorHandler extends BasicHandler</pre>
+
+<p><b>Axis 2 the SOAPMonitorHandler has the class signature as:</b></p>
+<pre>public class SOAPMonitorHandler extends AbstractHandler </pre>
+
+<p><b>In axis2, you need to reference the module that contains the handler
+chain that you want to use inside your services.xml:</b></p>
+<pre>&lt;service name="ExampleService"&gt;
+    &lt;module ref="soapmonitor"/&gt;
+    &lt;description&gt;
+       This service has the SOAP Monitor wired in 
+    &lt;/description&gt;
+    &lt;parameter name="ServiceClass" locked="false"&gt;org.ExampleService&lt;/parameter&gt;
+    &lt;operation name="myExecute"&gt;
+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;
+    &lt;/operation&gt;
+&lt;/service&gt;</pre>
+
+<p><b>Finally, axis2 requires you to make some changes to axis2.xml. Start by
+adding a global module:</b></p>
+<pre>    &lt;module ref="soapmonitor"/&gt;</pre>
+
+<p><b>Then define your phase orders for 'soapmonitorPhase' referenced in the
+module.xml :</b></p>
+<pre>    &lt;phaseOrder type="inflow"&gt;
+        &lt;!--  Global Phases       --&gt;
+        &lt;phase name="TransportIn"/&gt;
+        &lt;phase name="PreDispatch"/&gt;
+        &lt;phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"&gt;
+            &lt;handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+
+            &lt;handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+
+            &lt;handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+
+            &lt;handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+            &lt;handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+        &lt;/phase&gt;
+        &lt;!--    Global Phases     --&gt;
+        &lt;!--   After Dispatch phase module author or service author can add any phase he wants      --&gt;
+        &lt;phase name="userphase1"/&gt;
+        &lt;phase name="soapmonitorPhase"/&gt;
+    &lt;/phaseOrder&gt;
+    &lt;phaseOrder type="outflow"&gt;
+        &lt;!--   user can add his own phases to this area  --&gt;
+        &lt;!--   Global phases   --&gt;
+        &lt;!--   these phases will run irrespective of the service   --&gt;
+        &lt;phase name="MessageOut"/&gt;
+        &lt;phase name="userphase1"/&gt;
+        &lt;phase name="soapmonitorPhase"/&gt;
+        &lt;phase name="PolicyDetermination"/&gt;
+        &lt;!--   Global phases   --&gt;
+    &lt;/phaseOrder&gt;
+    &lt;phaseOrder type="INfaultflow"&gt;
+        &lt;phase name="userphase1"/&gt;
+        &lt;phase name="soapmonitorPhase"/&gt;
+        &lt;!--   user can add his own phases to this area  --&gt;
+    &lt;/phaseOrder&gt;
+    &lt;phaseOrder type="Outfaultflow"&gt;
+        &lt;!--   user can add his own phases to this area  --&gt;
+        &lt;!--   Global phases   --&gt;
+        &lt;phase name="MessageOut"/&gt;
+        &lt;phase name="userphase1"/&gt;
+        &lt;phase name="soapmonitorPhase"/&gt;
+        &lt;phase name="PolicyDetermination"/&gt;
+        &lt;!--   Global phases   --&gt;
+    &lt;/phaseOrder&gt;</pre>
+
+<p>See the user guide for more info on axis2 modules.</p>
+<a name="transports"></a>
+
+<h2>Transports for HTTP Connection</h2>
+
+<p>Axis2 comes with two  CommonsHTTPTransportSender which is based on
+commons-httpclient.</p>
+
+<p>It should be noted that axis2.xml should be configured to call the commons
+transports, with the statement,</p>
+<pre>...
+&lt;transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"&gt; 
+   &lt;parameter name="PROTOCOL" locked="false"&gt;HTTP/1.1&lt;/parameter&gt; 
+   &lt;parameter name="Transfer-Encoding" locked="false"&gt;chunked&lt;/parameter&gt;
+&lt;/transportSender&gt;
+...</pre>
+<a name="data_binding"></a>
+
+<h2>Data Binding Support</h2>
+
+<p>ADB is used to provide data binding support. In Axis2, xml is manipulated
+via AXIOM, which is based on the StAX API. XML gives full schema support.
+Thus, serialization and de-serialization of XML is handled in Axis2 via the
+xml-data binding framework.</p>
+
+<p>Below is an example of migrating an WSDL based Axis 1.x Web Service to
+Axis2.</p>
+
+<p>First, lets take a look at a simple document / literal style WSDL used in
+an Axis 1.x Web Service. This example assumes the name simple.wsdl for the
+wsdl below:</p>
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;definitions name="SimpleService" targetNamespace="http://simpleNS" xmlns:tns="http://simpleNS" 
+xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://simpleNS/types"&gt;
+  &lt;types&gt;
+    &lt;schema targetNamespace="http://simpleNS/types" xmlns:tns="http://simpleNS/types" 
+xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" 
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+xmlns="http://www.w3.org/2001/XMLSchema"&gt;
+      &lt;import namespace="http://schemas.xmlsoap.org/soap/encoding/"/&gt;
+      &lt;element name="simpleLogin"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="user_name" type="xsd:string"/&gt;
+            &lt;element name="user_password" type="xsd:string"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+      &lt;element name="simpleLoginResponse"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="soap_session_id" type="xsd:string"/&gt;
+            &lt;element name="web_user_name" type="xsd:string"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+&lt;/schema&gt;&lt;/types&gt;
+  &lt;message name="SimpleEndpoint_simpleLogin"&gt;
+     &lt;part name="parameters" element="ns2:simpleLogin"/&gt;
+  &lt;/message&gt;
+  &lt;message name="SimpleEndpoint_simpleLoginResponse"&gt;
+    &lt;part name="result" element="ns2:simpleLoginResponse"/&gt;
+  &lt;/message&gt;
+  &lt;portType name="SimpleEndpoint"&gt;
+    &lt;operation name="simpleLogin"&gt;
+      &lt;input message="tns:SimpleEndpoint_simpleLogin" name="SimpleEndpoint_simpleLogin"/&gt;
+      &lt;output message="tns:SimpleEndpoint_simpleLoginResponse" name="SimpleEndpoint_simpleLoginResponse"/&gt;
+    &lt;/operation&gt;
+  &lt;/portType&gt;
+  &lt;binding name="SimpleEndpointBinding" type="tns:SimpleEndpoint"&gt;
+    &lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/&gt;
+    &lt;operation name="simpleLogin"&gt;
+      &lt;soap:operation soapAction="simpleLogin"/&gt;
+      &lt;input name="SimpleEndpoint_simpleLogin"&gt;
+        &lt;soap:body use="literal"/&gt;
+      &lt;/input&gt;
+      &lt;output name="SimpleEndpoint_simpleLoginResponse"&gt;
+        &lt;soap:body use="literal"/&gt;
+      &lt;/output&gt;
+    &lt;/operation&gt;
+  &lt;/binding&gt;
+  &lt;service name="SimpleService"&gt;
+    &lt;port name="SimpleEndpointPort" binding="tns:SimpleEndpointBinding"&gt;
+      &lt;soap:address location="http://localhost:8080/axis/services/SimpleEndpointPort"/&gt;&lt;/port&gt;&lt;/service&gt;&lt;/definitions&gt;</pre>
+
+<p>The next step is to run WSDL2Java on the wsdl. For axis 1.x, this example
+uses the following ant task:</p>
+<pre>&lt;target name="wsdl2java" description="axis 1.x"&gt;
+       &lt;delete dir="output" /&gt;
+       &lt;mkdir dir="output" /&gt;
+       &lt;axis-wsdl2java
+         output="output"
+         verbose="true"
+         url="wsdl/simple.wsdl"
+         serverside="true"
+         skeletondeploy="true"
+         nowrapped="true"&gt;
+       &lt;/axis-wsdl2java&gt;
+   &lt;/target&gt;</pre>
+
+<p>The axis 1.x ant task above takes the simple.wsdl under the directory
+'wsdl' , and from that creates files under the directory 'output'. The files
+created are shown below:</p>
+<pre>output/
+output/simpleNS
+output/simpleNS/types
+output/simpleNS/types/SimpleLoginResponse.java
+output/simpleNS/types/SimpleLogin.java
+output/simpleNS/SimpleEndpoint.java
+output/simpleNS/SimpleEndpointBindingStub.java
+output/simpleNS/SimpleEndpointBindingSkeleton.java
+output/simpleNS/SimpleEndpointBindingImpl.java
+output/simpleNS/SimpleService.java
+output/simpleNS/SimpleServiceLocator.java
+output/simpleNS/deploy.wsdd
+output/simpleNS/undeploy.wsdd</pre>
+
+<p>Now lets run WSDL2Java with Axis2. In this example, the only change to
+simple.wsdl required for axis2 is that 'soap:address location' be changed
+to:</p>
+<pre>&lt;soap:address location="http://localhost:8080/axis2/services/SimpleEndpoint"/&gt;&lt;/port&gt;&lt;/service&gt;&lt;/definitions&gt;</pre>
+
+<p>In Axis2 the default databinding uses ADB. However, xmlbeans and jaxme are
+also supported. This example uses xmlbeans. For Axis2, our example uses the
+following ant task:</p>
+<pre>&lt;target name="wsdl2java"&gt;
+      &lt;delete dir="output" /&gt;
+      &lt;java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true"&gt;
+          &lt;classpath refid="axis.classpath"/&gt; 
+          &lt;arg value="-d"/&gt;
+          &lt;arg value="xmlbeans"/&gt;
+          &lt;arg value="-uri"/&gt;
+          &lt;arg file="wsdl/simple.wsdl"/&gt;
+          &lt;arg value="-ss"/&gt;
+          &lt;arg value="-g"/&gt;
+          &lt;arg value="-sd"/&gt;
+          &lt;arg value="-o"/&gt;
+          &lt;arg file="output"/&gt;
+          &lt;arg value="-p"/&gt;
+          &lt;arg value="org.simple.endpoint"/&gt;
+      &lt;/java&gt;
+
+      &lt;!-- Move the schema folder to classpath--&gt;
+      &lt;move todir="${build.classes}"&gt;
+          &lt;fileset dir="output/resources"&gt;
+              &lt;include name="*schema*/**/*.class"/&gt;
+              &lt;include name="*schema*/**/*.xsb"/&gt;
+          &lt;/fileset&gt;
+      &lt;/move&gt;
+
+  &lt;/target&gt;</pre>
+
+<p>For an explanation of the Axis2 WSDL2Java ant task and its options, see
+the <a href="../tools/1_1/CodegenToolReference.html">CodegenToolReference
+Guide.</a></p>
+
+<p>A feature of xmlbeans is that there is one class file created with
+WSDL2java, and a series of xsb files. These must be referenced when
+compiling, and as the example shows these files are moved to a build
+directory.</p>
+
+<p>The Axis2 WSDL2Java example also takes the simple.wsdl which is under the
+directory 'wsdl' and from that creates files under the directory 'output'.
+The relevant non-xmlbean files created are shown below:</p>
+<pre>output/resources/services.xml
+output/src/org/simple
+output/src/org/simple/endpoint
+output/src/org/simple/endpoint/SimpleEndpointSkeleton.java
+output/src/org/simple/endpoint/SimpleEndpointMessageReceiverInOut.java
+output/src/org/simple/endpoint/SimpleEndpointCallbackHandler.java
+output/src/org/simple/endpoint/SimpleEndpointStub.java
+output/src/simplens
+output/src/simplens/types
+output/src/simplens/types/SimpleLoginDocument.java
+output/src/simplens/types/impl
+output/src/simplens/types/impl/SimpleLoginDocumentImpl.java
+output/src/simplens/types/impl/SimpleLoginResponseDocumentImpl.java
+output/src/simplens/types/SimpleLoginResponseDocument.java</pre>
+
+<p>The first important distinction is that while the Axis 1.x example
+generated deploy.wsdd and undeploy.wsdd, the Axis2 example created a
+services.xml. The files deploy.wsdd and services.xml are a breed apart,
+coming from different architectures. There is no direct parallel between
+them. See the Axis2 user guide for an explanation about services.xml</p>
+
+<p>Now we're ready to code. We'll start with Axis 1.x on the service side. To
+implement the business logic we'll change
+simpleNS/SimpleEndpointBindingImpl.java from:</p>
+<pre class="code">package simpleNS;
+
+public class SimpleEndpointBindingImpl implements simpleNS.SimpleEndpoint{
+    public simpleNS.types.SimpleLoginResponse simpleLogin(simpleNS.types.SimpleLogin parameters) 
+        throws java.rmi.RemoteException {
+        return null;
+    }
+
+}</pre>
+
+<p>To:</p>
+<pre class="code">package simpleNS;
+
+public class SimpleEndpointBindingImpl implements simpleNS.SimpleEndpoint{
+    public simpleNS.types.SimpleLoginResponse simpleLogin(simpleNS.types.SimpleLogin parameters) 
+        throws java.rmi.RemoteException {
+
+        String userName = parameters.getUser_name();
+        String password = parameters.getUser_password();
+        // do something with those vars...
+        return new simpleNS.types.SimpleLoginResponse("mySessionID", "username");
+    }
+
+}</pre>
+
+<p>In Axis 1.x, the next step is to compile the classes and put them in the
+Axis.war, and then run the admin client with the generated deploy.wsdd.
+You'll then look at the happy axis page to verify the service is installed
+correctly.</p>
+
+<p>Now lets code Axis2. In Axis 1.x, while the ant task shown in the example
+created a skeleton, a peek inside shows that the skeleton calls the binding
+implementation class. In Axis2 we work with the skeleton directly. To
+implement the business logic in the Axis2 generated classes we'll change
+org/simple/endpoint/SimpleEndpointSkeleton.java from:</p>
+<pre class="code">package org.simple.endpoint;
+    /**
+     *  SimpleEndpointSkeleton java skeleton for the axisService
+     */
+    public class SimpleEndpointSkeleton {
+
+        /**
+         * Auto generated method signature
+          * @param param0
+         */
+        public  simplens.types.SimpleLoginResponseDocument simpleLogin
+                  (simplens.types.SimpleLoginDocument param0 ) throws Exception {
+                //Todo fill this with the necessary business logic
+                throw new  java.lang.UnsupportedOperationException();
+        }
+}</pre>
+
+<p>To:</p>
+<pre class="code">package org.simple.endpoint;
+    
+    import simplens.types.*;
+    import simplens.types.SimpleLoginResponseDocument.*;
+    import simplens.types.SimpleLoginDocument.*;
+    /**
+     *  SimpleEndpointSkeleton java skeleton for the axisService
+     */
+    public class SimpleEndpointSkeleton {
+     
+        /**
+         * Modified 
+          * @param simpleLoginDocument
+         */
+        public SimpleLoginResponseDocument simpleLogin
+                  (simplens.types.SimpleLoginDocument simpleLoginDocument){
+                //Todo fill this with the necessary business logic
+
+                SimpleLoginResponseDocument retDoc =
+                    SimpleLoginResponseDocument.Factory.newInstance();
+                 
+                SimpleLoginResponse retElement =
+                    SimpleLoginResponse.Factory.newInstance();
+                // Get parameters passed in 
+                SimpleLogin simpleLogin = simpleLoginDocument.getSimpleLogin();
+                String userName = simpleLogin.getUserName();
+                String password = simpleLogin.getUserPassword();
+                // do something with those variables...
+
+                retElement.setWebUserName(userName);
+                retElement.setSoapSessionId("my random string");
+                retDoc.setSimpleLoginResponse(retElement);
+                return retDoc; 
+        }
+}</pre>
+
+<p>In Axis2, the next step is to compile the classes, put them along with the
+generated services.xml in an AAR, and then hot deploy the AAR by placing it
+in the Axis2.war under WEB-INF/services . Point a browser to
+http://localhost:8080/axis2/listServices , and you should see the service
+'SimpleService' ready for action. See the Axis2 user guide for more info.</p>
+
+<p>The last step is the client. Our Axis 1.x client for this example is:</p>
+<pre>package org;
+
+import simpleNS.*;
+import simpleNS.types.*;
+
+public class Tester {
+  public static void main(String [] args) throws Exception {
+    // Make a service
+    SimpleService service = new SimpleServiceLocator();
+
+    // Now use the service to get a stub which implements the SDI.
+    SimpleEndpoint port =  service.getSimpleEndpointPort();
+
+    // set the params
+    SimpleLogin parameters = new SimpleLogin("username","password");
+    // Make the actual call
+    SimpleLoginResponse simpleLoginResponse = port.simpleLogin(parameters);
+    String session = simpleLoginResponse.getSoap_session_id();
+    String user = simpleLoginResponse.getWeb_user_name();
+    System.out.println("simpleLoginResponse, session: " + session + ", user: " + user);
+  }
+}</pre>
+
+<p>Finally, our Axis2 client for this example is:</p>
+<pre>package org;
+import simplens.types.*;
+import simplens.types.SimpleLoginDocument.*;
+import simplens.types.SimpleLoginResponseDocument.*;
+import simplens.types.impl.*;
+import org.simple.endpoint.*;
+
+public class Tester {
+  public static void main(String [] args) throws Exception {
+
+    // you may not need to pass in the url to the constructor - try the default no arg one
+    SimpleEndpointStub stub =
+         new SimpleEndpointStub(null, "http://localhost:8080/axis2/services/SimpleService");
+
+    SimpleLogin simpleLogin = SimpleLogin.Factory.newInstance();
+    simpleLogin.setUserName("userName");
+    simpleLogin.setUserPassword("password");
+
+    SimpleLoginDocument simpleLoginDocument =
+        SimpleLoginDocument.Factory.newInstance();
+
+    simpleLoginDocument.setSimpleLogin(simpleLogin);
+
+    SimpleLoginResponseDocument simpleLoginResponseDocument
+        = stub.simpleLogin(simpleLoginDocument);
+
+    SimpleLoginResponse simpleLoginResponse =
+        simpleLoginResponseDocument.getSimpleLoginResponse();
+
+    String session = simpleLoginResponse.getSoapSessionId();
+    String user = simpleLoginResponse.getWebUserName();
+    System.out.println("simpleLoginResponse, session: " + session + ", user: " + user);
+
+  }
+}</pre>
+
+<p>Axis2 clients also have asynchronous options via a Callback and
+alternatively 'Fire and forget'. See the user guide for more details.</p>
+<a name="best"></a>
+
+<h2>Best Usage</h2>
+
+<p>Axis1.x and Axis2 have different ways of seeing the SOAP stack. So the
+best way to migrate is to follow the <a href="userguide.html">User's Guide</a> and the <a href="Axis2ArchitectureGuide.html">Architecture Guide</a> of
+Axis2 properly. Axis2 is very much straight forward and friendly to use than
+it's predecessor.</p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/modules.html b/rampart_1_1/xdocs/1_1/modules.html
new file mode 100644
index 0000000..859d9b2
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/modules.html
@@ -0,0 +1,354 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Writing your Own Axis2 Module</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body dir="ltr" lang="en-US">

+

+<a name="Modules"></a>

+<h1></a>Writing your Own Axis2 Module</h1>

+

+<p>Axis2 provides extended support for modules (See <a

+href="Axis2ArchitectureGuide.html" target="_blank">Architecture Guide</a> for

+more details about modules in Axis2). Let's create a custom module and deploy

+it to MyService which we created earlier.</p>

+

+<p><i>Send your feedback or questions to: <a

+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix

+subject with [Axis2]. To subscribe to mailing list see <a

+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>

+

+<h2>Content List</h2>

+<ul>

+  <li><a href="#MyService_with_a_Logging_Module">MyService with a Logging Module</a></li>

+  <ul>

+      <li><a href="#Step1_:_LoggingModule_Class">Step1 : LoggingModule Class</a></li>

+      <li><a href="#Step2_:_LogHandler">Step2 : LogHandler</a></li>

+      <li><a href="#Step3_:_module_xml">Step3 : module.xml</a></li>

+      <li><a href="#Step_4:_Modify_the_&#34;axis2_xml&#34;">Step 4: Modify the "axis2.xml"</a></li>

+      <li><a href="#Step5_:_Modify_the_&#34;services_xml&#34;">Step5 : Modify the "services.xml</a></li>

+      <li><a href="#Step6_:_Packaging">Step6 : Packaging</a></li>

+      <li><a href="#Step7_:_Deploy_the_Module_in_Axis2">Step7 : Deploy the Module in Axis2</a></li>

+  </ul>

+</ul>

+

+

+<p>Following steps show the actions that need to be performed to deploy a

+custom module for a given Web service:</p>

+<ol>

+  <li><p style="margin-bottom: 0in">Create the Module Implementation</p>

+  </li>

+  <li><p style="margin-bottom: 0in">Create the Handlers</p>

+  </li>

+  <li><p style="margin-bottom: 0in">Create the module.xml</p>

+  </li>

+  <li><p style="margin-bottom: 0in">Modify the "axis2.xml" (if you need

+    custom phases)</p>

+  </li>

+  <li><p style="margin-bottom: 0in">Modify the "services.xml" to engage

+    modules at the deployment time.</p>

+  </li>

+  <li><p style="margin-bottom: 0in">Package in a ".mar" (Module Archive)</p>

+  </li>

+  <li><p>Deploy the module in Axis2</p>

+  </li>

+</ol>

+

+<a name="MyService_with_a_Logging_Module"></a>

+<h3>MyService with a Logging Module</h3>

+

+<p>Let's write a simple logging module for our sample located at

+<b>"samples\userguide\src"</b> directory of the binary distribution. This

+module contains one handler that just logs the message that is passed through

+it. Axis2 uses ".mar" (Module Archive) to deploy modules in Axis2. Following

+diagram shows the file structure inside which needs to be there in the ".mar"

+archive. Let's create all these and see how it works.</p>

+

+<p><img src="images/userguide/ModuleView.jpg" name="Graphic5" align="bottom"

+border="0"></p>

+

+<a name="Step1_:_LoggingModule_Class"></a>

+<h4>Step1 : LoggingModule Class</h4>

+

+<p>LoggingModule is the implementation class of the Axis2 module. Axis2

+modules should implement the "<a

+href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/modules/Module.java?rev=396785&amp;view=log">org.apache.axis2.modules.Module</a>"

+interface with the following methods.</p>

+<pre>public void init(ConfigurationContext configContext, AxisModule module) throws AxisFault;//Initialize the module

+public void shutdown(ConfigurationContext configurationContext) throws AxisFault;//End of module processing

+public void engageNotify(AxisDescription axisDescription) throws AxisFault;

+public String[] getPolicyNamespaces() throws AxisFault;

+public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault ;

+public boolean canSupportAssertion(Assertion assertion) ;

+</pre>

+

+<p>Firt three methods can be used to control the module initialization and the

+termination , and the next three methods are used to perform policy related stuff

+With the input parameter AxisConfiguration, the user is provided

+with the complete configuration hierarchy. This can be used to fine-tune the

+module behavior by the module writers. For the simple logging service we can

+keep these methods blank in our implementation class.</p>

+

+<a name="Step2_:_LogHandler"></a>

+<h4>Step2 : LogHandler</h4>

+

+<p>A module in Axis2 can contain, one or more handlers that perform various

+SOAP header processing at different phases. (See<a

+href="Axis2ArchitectureGuide.html#incomingsoap" target="_blank"> Architecture

+Guide</a> for more information on phases). To write a handler one should

+implement <a

+href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/Handler.java?rev=357187&amp;view=log">org.apache.axis2.engine.Handler</a>.

+But for convenience, <a

+href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/handlers/AbstractHandler.java?rev=396788&amp;view=log">org.apache.axis2.handlers.AbstractHandler</a>

+provides an abstract implementation of the Handler interface.</p>

+

+<p>For the logging module we will write a handler with the following methods.

+"public void invoke(MessageContext ctx);" is the method that is called by

+Axis2 engine when the control is passed to the handler. "public void

+revoke(MessageContext ctx);" is called when the handlers are revoked by the

+Axis2 engine.</p>

+<pre>public class LogHandler extends AbstractHandler implements Handler {

+    private static final Log log = LogFactory.getLog(LogHandler.class);

+    private String name;

+

+    public String getName() {

+        return name;

+    }

+

+    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {

+        log.info(msgContext.getEnvelope().toString());

+        return InvocationResponse.CONTINUE;        

+    }

+

+    public void revoke(MessageContext msgContext) {

+        log.info(msgContext.getEnvelope().toString());

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+}</pre>

+

+<a name="Step3_:_module_xml"></a>

+<h4>Step3 : module.xml</h4>

+

+<p>"module.xml" contains the deployment configurations for a particular

+module. It contains details such as Implementation class of the module (in

+this example it is the "LoggingModule" class and various handlers that will

+run in different phases). "module.xml" for the logging module will be as

+follows:</p>

+<pre>&lt;module name="logging" class="userguide.loggingmodule.LoggingModule "&gt;

+   &lt;inflow&gt;

+        &lt;handler name="InFlowLogHandler" class="userguide.loggingmodule.LogHandler"&gt;

+        &lt;order phase="loggingPhase" /&gt;

+        &lt;/handler&gt;

+   &lt;/inflow&gt;

+

+   &lt;outflow&gt;

+        &lt;handler name="OutFlowLogHandler" class="userguide.loggingmodule.LogHandler"&gt;

+        &lt;order phase="loggingPhase"/&gt;

+        &lt;/handler&gt;

+   &lt;/outflow&gt;

+

+   &lt;Outfaultflow&gt;

+        &lt;handler name="FaultOutFlowLogHandler" class="userguide.loggingmodule.LogHandler"&gt;

+        &lt;order phase="loggingPhase"/&gt;

+        &lt;/handler&gt;

+   &lt;/Outfaultflow&gt;

+

+   &lt;INfaultflow&gt;

+        &lt;handler name="FaultInFlowLogHandler" class="userguide.loggingmodule.LogHandler"&gt;

+        &lt;order phase="loggingPhase"/&gt;

+        &lt;/handler&gt;

+   &lt;/INfaultflow&gt;

+&lt;/module&gt;</pre>

+

+<p>As you can see there are four flows defined in this "module.xml"</p>

+<ol>

+  <li>inflow - Represents the handler chain that will run when a message is

+    coming in. </li>

+  <li><p style="margin-bottom: 0in">outflow - Represents the handler chain

+    that will run when the message is going out. </p>

+  </li>

+  <li><p style="margin-bottom: 0in">Outfaultflow - Represents the handler

+    chain that will run when there is a fault and the fault is going out</p>

+  </li>

+  <li><p>INfaultflow - Represents the handler chain that will run when there

+    is a fault and the fault is coming in </p>

+  </li>

+</ol>

+

+<p>Following set of tags describe the name of the handler, handler class and

+the phase in which this handler is going to run. "InFlowLogHandler" is the

+name given for the particular instance of this handler class. The value of

+class attribute is the actual implementation class for this handler. Since we

+are writing logging handler, we can reuse the same handler in all these

+phases. However this may not be the same for all the modules. "&lt;order

+phase="loggingPhase" /&gt;" describes the phase in which this handler

+runs.</p>

+<pre>&lt;handler name="InFlowLogHandler" class="userguide.loggingmodule.LogHandler"&gt;

+&lt;order phase="loggingPhase" /&gt;

+&lt;/handler&gt;</pre>

+

+<p>To learn more about Phase rules, check out the article <a

+href="http://www.developer.com/java/web/article.php/3529321"

+target="_blank">Axis2 Execution Framework</a></p>

+

+<a name="Step_4:_Modify_the_&#34;axis2_xml&#34;"></a>

+<h4>Step 4: Modify the "axis2.xml"</h4>

+

+<p>In this handler, the phase "loggingPhase", is defined by the module

+writer. It is not a pre-defined handler phase, hence the module writer should

+introduce it to the "axis2.xml" (NOT the services.xml) so that the Axis2

+engine knows where to place the handler in different "flows" ( inFlow,

+outFlow, etc.). Following xml lines show the respective changes made to the

+"axis2.xml" in order to deploy this logging module in the Axis2 engine. This

+is an extract of the phase section of "axis2.xml".</p>

+<pre>&lt;!-- ================================================= --&gt;

+&lt;!-- Phases --&gt;

+&lt;!-- ================================================= --&gt;

+

+&lt;phaseOrder type="inflow"&gt;

+        &lt;!--  System pre defined phases       --&gt;

+        &lt;phase name="TransportIn"/&gt;

+        &lt;phase name="PreDispatch"/&gt;

+        &lt;phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"&gt;

+            &lt;handler name="AddressingBasedDispatcher"

+                     class="org.apache.axis2.engine.AddressingBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="RequestURIBasedDispatcher"

+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="SOAPActionBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+

+            &lt;handler name="SOAPMessageBodyBasedDispatcher"

+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"&gt;

+                &lt;order phase="Dispatch"/&gt;

+            &lt;/handler&gt;

+            &lt;handler name="InstanceDispatcher"

+                     class="org.apache.axis2.engine.InstanceDispatcher"&gt;

+                &lt;order phase="PostDispatch"/&gt;

+            &lt;/handler&gt;

+        &lt;/phase&gt;

+        &lt;!--  System pre defined phases       --&gt;

+        &lt;!--   After Postdispatch phase module author or service author can add any phase he wants      --&gt;

+        &lt;phase name="OperationInPhase"/&gt;

+        &lt;phase name="<span style="color: rgb(36, 193, 19);">loggingPhase</span>"/&gt;

+    &lt;/phaseOrder&gt;

+    &lt;phaseOrder type="outflow"&gt;

+        &lt;!--      user can add his own phases to this area  --&gt;

+        &lt;phase name="OperationOutPhase"/&gt;

+        &lt;phase name="<span style="color: rgb(36, 193, 19);">loggingPhase</span>"/&gt;

+        &lt;!--system predefined phases--&gt;

+        &lt;!--these phases will run irrespective of the service--&gt;

+        &lt;phase name="PolicyDetermination"/&gt;

+        &lt;phase name="MessageOut"/&gt;

+    &lt;/phaseOrder/&gt;

+    &lt;phaseOrder type="INfaultflow"&gt;

+        &lt;!--      user can add his own phases to this area  --&gt;

+        &lt;phase name="OperationInFaultPhase"/&gt;

+        &lt;phase name="<span style="color: rgb(36, 193, 19);">loggingPhase</span>"/&gt;

+    &lt;/phaseOrder&gt;

+    &lt;phaseOrder type="Outfaultflow"&gt;

+        &lt;!--      user can add his own phases to this area  --&gt;

+        &lt;phase name="OperationOutFaultPhase"/&gt;

+        &lt;phase name="<span style="color: rgb(36, 193, 19);">loggingPhase</span>"/&gt;

+        &lt;phase name="PolicyDetermination"/&gt;

+        &lt;phase name="MessageOut"/&gt;

+    &lt;/phaseOrder&gt;

+    </pre>

+

+<p>The text in green, the custom phase "loggingPhase" is placed in all the

+flows, hence that phase will be called in all the message flows in the

+engine. Since our module is associated with this phase, the LogHandler inside

+the module will now be executed in this phase.</p>

+

+<a name="Step5_:_Modify_the_&#34;services_xml&#34;"></a>

+<h4>Step5 : Modify the "services.xml"</h4>

+

+<p>Up to this point we have created the required classes and configuration

+descriptions for the logging module and by changing the "axis2.xml" we have

+created the required phases for the logging module.</p>

+

+<p>Next step is to "<b>engage</b>" (use) this module in one of our services.

+For this, let's use the same Web service that we have used throughout the

+user's guide- MyService. However, since we need to modify the "services.xml"

+of MyService in order to engage this module, we use a separate Web service,

+but with the similar operations.</p>

+

+<p>The code for this service can be found in the

+"<strong>Axis2_HOME/samples/userguide/src/userguide/example2</strong>"

+directory. The simple changes that we have done to "services.xml' are shown

+in green in the following lines of xml.</p>

+<pre>&lt;service name="<span style="color: rgb(36, 193, 19);">MyServiceWithModule</span>"&gt;

+    &lt;description&gt;

+    This is a sample Web service with a logging module engaged.

+    &lt;/description&gt;

+    <span style="color: rgb(36, 193, 19);">&lt;module ref="logging"/&gt;</span>

+    &lt;parameter name="ServiceClass" locked="xsd:false"&gt;userguide.example2.MyService&lt;/parameter&gt;

+    &lt;operation name="echo"&gt;

+    &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;

+    &lt;/operation&gt;

+    &lt;operation name="ping"&gt;

+    &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;

+    &lt;/operation&gt;

+&lt;/service&gt;</pre>

+

+<p>In this example we have changed the service name (the implementation class

+is very similar to what we have used earlier although it is in a different

+package). In addition we have added the line <b>"&lt;module

+ref="logging"/&gt;"</b> to "services.xml". This informs the Axis2 engine that

+the module "logging" should be engaged for this service. The handler inside

+the module will be executed in their respective phases as described by the

+"module.xml".</p>

+

+<a name="Step6_:_Packaging"></a>

+<p><b>Step6 : Packaging</b></p>

+

+<p>Before deploying the module we need to create the ".mar" file for this

+module. This can be done, using the "jar" command and then renaming the

+created jar file. Or you can find the "logging.mar" that is already created

+for you in the "<strong>Axis2_HOME/samples/userguide</strong>" directory.</p>

+

+<a name="Step7_:_Deploy_the_Module_in_Axis2"></a>

+<h4>Step7 : Deploy the Module in Axis2</h4>

+

+<p>Deploying a module in Axis2 require the user to create a directory with

+the name "modules" in the "webapps/axis2/WEB-INF" directory of their servlet

+container and then copying the ".mar" file to that directory. So let's first

+create the "modules" directory and drop the "logging.mar" in to this

+directory.</p>

+

+<p>Although the required changes to the "services.xml" is very little, we

+have created a separate service archive (MyServiceWithModule.aar) for users

+to deploy and see.</p>

+

+<p>Deploy this service using the same steps used in <a href="userguide.html#Step5_Deploy_web_service">'Step 4: Deploy Web Service'</a> sub section in '<a href="userguide.html#ws_codegen">Writing a New Service using Codegeneration</a>', and copy the

+"logging.mar" file to the "modules" directory.</p>

+

+<p>Then run using the "TestWebServiceWithModuleClient.bat" or

+"TestWebServiceWithModuleClient.sh" in the

+"<strong>Axis2Home/samples/userguide/src/userguide/clients/bin</strong>"

+directory.</p>

+

+<p>Note: To see logs, the user needs to modify the "log4j.properties" to log

+INFO. The property file is located in

+"<strong>webapps/axis2/WEB-INF/classes</strong>" of your servlet container.

+Change the line "log4j.rootCategory= ERROR, LOGFILE" to

+"log4j.rootCategory=INFO, ERROR, LOGFILE".</p>

+

+<p><font size="4"><b>Note (on samples):</b></font> All samples mentioned in

+the user's guide are located at <b>"samples\userguide\src"</b> directory of

+the binary distribution.</p>

+

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/mtom-guide.html b/rampart_1_1/xdocs/1_1/mtom-guide.html
new file mode 100644
index 0000000..88f7333
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/mtom-guide.html
@@ -0,0 +1,1009 @@
+<html>
+<head>
+  <title>Handling Binary data with Axis2 (MTOM/SwA)</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body>
+<h1>Handling Binary data with Axis2 (MTOM/SwA)</h1>
+
+<p>This document will describe how to use Axis2 functionality to send/receive
+binary data with SOAP.</p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#1">Introduction</a>
+    <ul>
+      <li><a href="#11">Where Does MTOM Come In?</a></li>
+    </ul>
+  </li>
+
+  <li><a href="#2">MTOM with Axis2 </a>
+    <ul>
+      <li><a href="#21">Programming Model</a></li>
+      <li><a href="#22">Enabling MTOM Optimization at Client Side</a></li>
+      <li><a href="#23">Enabling MTOM Optimization at Server Side</a></li>
+      <li><a href="#24">Accessing Received Binary Data (Sample Code) </a>
+
+        <ul>
+          <li><a href="#241">Service</a></li>
+          <li><a href="#242">Client</a></li>
+        </ul>
+      </li>
+      <li><a href="#25">MTOM Databinding</a>
+        <ul>
+          <li><a href="#251">Using ADB</a></li>
+          <li><a href="#252">Using XMLBeans</a></li>
+        </ul>
+      </li>
+    </ul>
+
+  </li>
+  <li><a href="#3">SOAP with Attachments with Axis2</a>
+    <ul>
+      <li><a href="#31">Sending SwA type attachments</a></li>
+      <li><a href="#32">Receiving SwA type attachments</a></li>
+      <li><a href="#33">MTOM Backward Compatibility with SwA</a></li>
+    </ul>
+
+  </li>
+  <li><a href="#4">Advanced Topics </a>
+    <ul>
+      <li><a href="#41">File Caching for Attachments</a></li>
+    </ul>
+  </li>
+</ul>
+<a name="1"></a>
+
+<h2>Introduction</h2>
+
+<p>Despite the flexibility, interoperability and global acceptance of XML,
+there are times when serializing data into XML does not make sense. Web
+services users may need to transmit binary attachments of various sorts like
+images, drawings, xml docs, etc together with SOAP message. Such data are
+often in a particular binary format.<br>
+</p>
+
+<p>Traditionally, two techniques have been used in dealing with opaque data
+in XML;</p>
+<ol>
+  <li><strong>"By value"</strong></li>
+
+  <blockquote>
+    <p>Sending binary data by value is achieved by embedding opaque data (of
+    course after some form of encoding) as element or attribute content of
+    the XML component of data. The main advantage of this technique is that
+    it gives applications the ability to process and describe data, based and
+    looking only on XML component of the data.</p>
+
+    <p>XML supports opaque data as content through the use of either base64
+    or hexadecimal text encoding. Both these techniques bloat the size of the
+    data. For UTF-8 underlying text encoding, base64 encoding increases the
+    size of the binary data by a factor of 1.33x of the original size, while
+    hexadecimal encoding expands data by a factor of 2x. Above factors will
+    be doubled if UTF-16 text encoding is used. Also of concern is the
+    overhead in processing costs (both real and perceived) for these formats,
+    especially when decoding back into raw binary.</p>
+  </blockquote>
+  <li><strong>"By reference"</strong>
+
+    <blockquote>
+      <p>Sending binary data by reference is achieved by attaching pure
+      binary data as external unparsed general entities outside of the XML
+      document and then embedding  reference URI's to those entities as
+      elements or attribute values. This prevents the unnecessary bloating of
+      data and wasting of processing power. The primary obstacle for using
+      these unparsed entities is their heavy reliance on DTDs, which impedes
+      modularity as well as use of XML namespaces.</p>
+      <p>There were several specifications introduced in the Web services
+      world to deal with this binary attachment problem using the "by
+      reference" technique. <a
+      href="http://www.w3.org/TR/SOAP-attachments">SOAP with Attachments</a>
+
+      is one such example. Since SOAP prohibits document type declarations
+      (DTD) in messages, this leads to the  problem of not  representing data
+      as part of the message infoset, creating two data models. This scenario
+      is like sending attachments with an e-mail message. Even though those
+      attachments are related to the message content they are not inside the
+      message.  This causes the technologies for processing and description
+      of data based on XML component of the data, to malfunction. One example
+      is  WS-Security.</p>
+    </blockquote>
+  </li>
+</ol>
+<a name="11"></a>
+
+<h3>Where Does MTOM Come In?</h3>
+
+<p><a href="http://www.w3.org/TR/2004/PR-soap12-mtom-20041116/">MTOM (SOAP
+Message Transmission Optimization Mechanism)</a> is another specification
+which focuses on solving the "Attachments" problem. MTOM tries to leverage
+the advantages of the above two techniques by trying to merge the two
+techniques. MTOM is actually a "by reference" method. Wire format of a MTOM
+optimized message is same as the Soap with Attachments message, which also
+makes it backward compatible with SwA endpoints. The most notable feature of
+MTOM is the use of XOP:Include element, which is defined in <a
+href="http://www.w3.org/TR/2004/PR-xop10-20041116/">XML Binary Optimized
+Packaging (XOP)</a> specification to reference  the binary attachments
+(external unparsed general entities) of the message. With the use of this
+exclusive element the attached binary content logically become inline (by
+value) with the SOAP document even though actually it is attached separately.
+This merges the two realms by making it possible to work only with one data
+model. This allows the applications to process and describe by only looking
+at XML part making reliance on DTDs obsolete. On a lighter note, MTOM has
+standardized the referencing mechanism of SwA. The following is an extract
+from the <a href="http://www.w3.org/TR/2004/PR-xop10-20041116/">XOP</a>
+
+specification.</p>
+
+<p><em>At the conceptual level, this binary data can be thought of as being
+base64-encoded in the XML Document. As this conceptual form might be needed
+during some processing of the XML Document (e.g., for signing the XML
+document), it is necessary to have a one-to-one correspondence between XML
+Infosets and XOP Packages. Therefore, the conceptual representation of such
+binary data is as if it were base64-encoded, using the canonical lexical form
+of XML Schema base64Binary datatype (see <a href="#XMLSchemaP2">[XML Schema
+Part 2: Datatypes Second Edition] </a> <a
+href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#base64Binary">3.2.16
+base64Binary</a>). In the reverse direction, XOP is capable of optimizing
+only base64-encoded Infoset data that is in the canonical lexical
+form.</em></p>
+
+<p>Apache Axis2 supports <strong>Base64 encoding</strong>, <strong>SOAP with
+Attachments</strong> &amp; <strong>MTOM (SOAP Message Transmission
+Optimization Mechanism).</strong></p>
+
+<a name="2"></a>
+
+<h2>MTOM with Axis2</h2>
+<a name="21"></a>
+
+<h3>Programming Model</h3>
+
+<p>AXIOM is (and may be the first) Object Model which has the ability to hold
+binary data. It has been given this ability by allowing OMText to hold raw
+binary content in the form of javax.activation.DataHandler. OMText has been
+chosen for this purpose with two reasons. One is that XOP (MTOM) is capable
+of optimizing only base64-encoded Infoset data that is in the canonical
+lexical form of XML Schema base64Binary datatype. Other one is to preserve
+the infoset in both sender and receiver (To store the binary content in the
+same kind of object regardless of whether it is optimized or not).</p>
+
+<p>MTOM allows to selectively encode portions of the message, which allows us
+to send base64encoded data as well as externally attached raw binary data
+referenced by "XOP" element (optimized content) to be send in a SOAP message.
+User can specify whether an OMText node which contains raw binary data or
+base64encoded binary data is qualified to be optimized or not at the
+construction time of that node or later. To take the optimum efficiency of
+MTOM a user is advised to send smaller binary attachments using
+base64encoding (None optimized) and larger attachments as optimized
+content.</p>
+<source><pre>        OMElement imageElement = fac.createOMElement("image", omNs);
+
+        // Creating the Data Handler for the file.  Any implementation of
+	// javax.activation.DataSource interface can fit here.
+        javax.activation.DataHandler dataHandler = new javax.activation.DataHandler(new FileDataSource("SomeFile"));
+        DataHandler dataHandler = new DataHandler(dataSource);
+
+        //create an OMText node with the above DataHandler and set optimized to true
+        OMText textData = <strong>fac.createOMText(dataHandler, true);</strong>
+
+        imageElement.addChild(textData);
+
+        //User can set optimized to false by using the following
+        //textData.doOptimize(false);</pre>
+</source>
+<p>Also a user can create an optimizable binary content node  using a base64
+encoded string, which contains encoded binary content, given with the mime
+type of the actual binary representation.</p>
+<source><pre>        String base64String = "some_base64_encoded_string";
+        OMText binaryNode =<strong>fac.createOMText(base64String,"image/jpg",true);</strong></pre>
+</source>
+<p>Axis2 uses javax.activation.DataHandler to handle the binary data. All
+optimized binary content nodes will be serialized as Base64 Strings if "MTOM
+is not enabled". One can also create binary content nodes which will not be
+optimized at any case. They will be serialized and send as Base64 Strings.</p>
+<source><pre>        //create an OMText node with the above DataHandler and set "optimized" to false
+        //This data will be send as Base64 encoded string regardless of MTOM is enabled or not
+        javax.activation.DataHandler dataHandler = new javax.activation.DataHandler(new FileDataSource("SomeFile"));
+        OMText textData = fac.createOMText(dataHandler, <strong>false</strong>); 
+        image.addChild(textData);</pre>
+
+</source><a name="22"></a>
+
+<h3>Enabling MTOM Optimization at Client Side</h3>
+
+<p>Set the "enableMTOM" property in the Options to true, when sending
+messages.</p>
+<source><pre>        ServiceClient serviceClient = new ServiceClient ();
+        Options options = new Options();
+        options.setTo(targetEPR);
+        <strong>options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);</strong>
+        serviceClient .setOptions(options);</pre>
+</source>
+<p>When this property is set to true any SOAP envelope, regardless whether it
+contains optimizable content or not, will be serialized as a MTOM optimized
+MIME message.</p>
+
+<p>Axis2 serializes all binary content nodes as Base64 encoded strings
+regardless of they are qualified to be optimize or not, if,</p>
+<ul>
+  <li>"enableMTOM" property is set to false.</li>
+  <li>If envelope contains any element information items of name xop:Include
+    (see <a href="#XOP">[XML-binary Optimized Packaging] </a><a
+    href="http://www.w3.org/TR/2005/REC-xop10-20050125/#xop_infosets">3. XOP
+    Infosets Constructs </a>).</li>
+</ul>
+
+<p>User does <strong>not</strong> have to specify anything in order for Axis2
+to receive MTOM optimised messages. Axis2 will automatically identify and
+de-serialize accordingly as and when a MTOM message arrives.</p>
+
+<a name="23"></a>
+
+<h3>Enabling MTOM Optimization at Server Side</h3>
+
+<p>Axis 2 server automatically identifies incoming MTOM optimized messages
+based on the content-type and de-serializes accordingly. User can enableMTOM
+in the server side for outgoing messages,</p>
+
+<blockquote>
+  <p>To enableMTOM globally for all services users can set the "enableMTOM"
+  parameter to true in the Axis2.xml. When it is set, all outgoing messages
+  will be serialized and send as MTOM optimized MIME messages. If it is not
+  set all the binary data in binary content nodes will be serialized as
+  Base64 encoded strings. This configuration can be overriden in services.xml
+  for per service and per operation basis.</p>
+</blockquote>
+<pre>&lt;parameter name="enableMTOM" locked="false"&gt;true&lt;/parameter&gt;</pre>
+
+<p>User must restart the server after setting this parameter.</p>
+<a name="24"></a>
+
+<h3>Accessing Received Binary Data (Sample Code)</h3>
+<ul>
+  <a name="241"></a>
+  <ul>
+    <li><strong>Service</strong></li>
+  </ul>
+
+</ul>
+<source><pre>public class MTOMService {
+    public void uploadFileUsingMTOM(OMElement element) throws Exception {
+
+       <strong>OMText binaryNode = (OMText) (element.getFirstElement()).getFirstOMChild();
+       DataHandler actualDH;
+       actualDH = (DataHandler) binaryNode.getDataHandler();</strong>
+            
+       ... <em>Do whatever you need with the DataHandler</em> ...
+    }
+  }</pre>
+</source><ul>
+  <a name="242"></a>
+  <ul>
+    <li><strong>Client</strong></li>
+
+  </ul>
+</ul>
+<source><pre>        ServiceClient sender = new ServiceClient();        
+        Options options = new Options();
+        options.setTo(targetEPR); 
+        // enabling MTOM
+        <strong>options.set(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);</strong>
+        ............
+
+        OMElement result = sender.sendReceive(payload);
+        OMElement ele = result.getFirstElement();
+        OMText binaryNode = (OMText) ele.getFirstOMChild();
+        
+        // Retrieving the DataHandler &amp; then do whatever the processing to the data
+        DataHandler actualDH;
+        actualDH = binaryNode.getDataHandler();
+        .............</pre>
+</source><a name="25"></a>
+
+<h3>MTOM Databinding</h3>
+
+<p>You can defining a binary element in the schema using the schema
+type="xsd:base64Binary". Having an element with the type "xsd:base64Binary"
+is enough for the Axis2 code generators to identify possible MTOM attachments
+and to generate code accordingly.</p>
+
+<p>Going a little bit further you can use the xmime schema
+(http://www.w3.org/2005/05/xmlmime) to describe the binary content more
+precisely. With xmime schema you can indicate the type of content in the
+element at runtime using an MTOM attribute extension, xmime:contentType.
+Furthermore, you can identify what type of data might be expected in the
+element using the xmime:expectedContentType. Putting it all together, our
+example element becomes:</p>
+<source><pre>      &lt;element name="MyBinaryData" xmime:expectedContentTypes='image/jpeg' &gt;
+        &lt;complexType&gt;
+          &lt;simpleContent&gt;
+            &lt;extension base="base64Binary" &gt;
+
+              &lt;attribute ref="xmime:contentType" use="required"/&gt;
+            &lt;/extension&gt;
+          &lt;/simpleContent&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+</pre>
+</source>
+
+<p>You can also use the xmime:base64Binary type to express the above
+mentioned data much more cleanly.</p>
+<source><pre>      &lt;element name="MyBinaryData" xmime:expectedContentTypes='image/jpeg' type="xmime:base64Binary"/&gt;</pre>
+</source>
+<a name="251"></a>
+<h3>MTOM Databinding Using ADB</h3>
+
+<p>Let's define a full, validated doc/lit style WSDL that uses the xmime
+schema, has a service that receives a file and saves it in the server using the given path.
+</p>
+<source><pre>
+&lt;wsdl:definitions xmlns:tns="http://ws.apache.org/axis2/mtomsample/"
+	xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+	xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+	xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+	xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
+	xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns="http://schemas.xmlsoap.org/wsdl/"
+	targetNamespace="http://ws.apache.org/axis2/mtomsample/">
+
+	&lt;wsdl:types>
+		&lt;xsd:schema xmlns="http://schemas.xmlsoap.org/wsdl/"
+			attributeFormDefault="qualified" elementFormDefault="qualified"
+			targetNamespace="http://ws.apache.org/axis2/mtomsample/">
+
+			&lt;xsd:import namespace="http://www.w3.org/2005/05/xmlmime"
+				schemaLocation="http://www.w3.org/2005/05/xmlmime" />
+			&lt;xsd:complexType name="AttachmentType">
+				&lt;xsd:sequence>
+					&lt;xsd:element minOccurs="0" name="fileName"
+						type="xsd:string" />
+					&lt;xsd:element minOccurs="0" name="binaryData"
+						type="xmime:base64Binary" />
+				&lt;/xsd:sequence>
+			&lt;/xsd:complexType>
+			&lt;xsd:element name="AttachmentRequest" type="tns:AttachmentType" />
+			&lt;xsd:element name="AttachmentResponse" type="xsd:string" />
+		&lt;/xsd:schema>
+	&lt;/wsdl:types>
+	&lt;wsdl:message name="AttachmentRequest"&gt;
+		&lt;wsdl:part name="part1" element="tns:AttachmentRequest" /&gt;
+	&lt;/wsdl:message&gt;
+	&lt;wsdl:message name="AttachmentResponse"&gt;
+		&lt;wsdl:part name="part1" element="tns:AttachmentResponse" /&gt;
+	&lt;/wsdl:message&gt;
+	&lt;wsdl:portType name="MTOMServicePortType"&gt;
+		&lt;wsdl:operation name="attachment"&gt;
+			&lt;wsdl:input message="tns:AttachmentRequest"
+				wsaw:Action="attachment" /&gt;
+			&lt;wsdl:output message="tns:AttachmentResponse"
+				wsaw:Action="http://schemas.xmlsoap.org/wsdl/MTOMServicePortType/AttachmentResponse" /&gt;
+		&lt;/wsdl:operation&gt;
+	&lt;/wsdl:portType&gt;
+	&lt;wsdl:binding name="MTOMServiceSOAP11Binding"
+		type="tns:MTOMServicePortType"&gt;
+		&lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+			style="document" /&gt;
+		&lt;wsdl:operation name="attachment"&gt;
+			&lt;soap:operation soapAction="attachment" style="document" /&gt;
+			&lt;wsdl:input&gt;
+				&lt;soap:body use="literal" /&gt;
+			&lt;/wsdl:input&gt;
+			&lt;wsdl:output&gt;
+				&lt;soap:body use="literal" /&gt;
+			&lt;/wsdl:output&gt;
+		&lt;/wsdl:operation&gt;
+	&lt;/wsdl:binding&gt;
+	&lt;wsdl:binding name="MTOMServiceSOAP12Binding"
+		type="tns:MTOMServicePortType"&gt;
+		&lt;soap12:binding transport="http://schemas.xmlsoap.org/soap/http"
+			style="document" /&gt;
+		&lt;wsdl:operation name="attachment"&gt;
+			&lt;soap12:operation soapAction="attachment" style="document" /&gt;
+			&lt;wsdl:input&gt;
+				&lt;soap12:body use="literal" /&gt;
+			&lt;/wsdl:input&gt;
+			&lt;wsdl:output&gt;
+				&lt;soap12:body use="literal" /&gt;
+			&lt;/wsdl:output&gt;
+		&lt;/wsdl:operation&gt;
+	&lt;/wsdl:binding&gt;
+	&lt;wsdl:service name="MTOMSample"&gt;
+		&lt;wsdl:port name="MTOMSampleSOAP11port_http"
+			binding="tns:MTOMServiceSOAP11Binding"&gt;
+			&lt;soap:address
+				location="http://localhost:8080/axis2/services/MTOMSample" /&gt;
+		&lt;/wsdl:port&gt;
+		&lt;wsdl:port name="MTOMSampleSOAP12port_http"
+			binding="tns:MTOMServiceSOAP12Binding"&gt;
+			&lt;soap12:address
+				location="http://localhost:8080/axis2/services/MTOMSample" /&gt;
+		&lt;/wsdl:port&gt;
+	&lt;/wsdl:service&gt;
+&lt;/wsdl:definitions&gt;
+</pre></source>
+<p>The important point here is we import http://www.w3.org/2005/05/xmlmime
+and define an element, 'binaryData' , that utilizes MTOM.</p>
+
+<p>The next step is using the Axis2 tool 'WSDL2Java' to generate java source
+files from this WSDL. See the 'Code Generator Tool' guide for more info.
+Here, we define an ant task that chooses ADB (Axis2 Data Binding) as the databinding
+implementation. The name we list for the WSDL above is MTOMSample.wsdl, and
+we define our package name for our generated source files to be
+'sample.mtom.service' . Our ant task for this example is:</p>
+<source><pre>	
+&lt;target name="generate.service"&gt;
+ 		&lt;java classname="org.apache.axis2.wsdl.WSDL2Java"&gt;
+			&lt;arg value="-uri" /&gt;
+			&lt;arg value="${basedir}/resources/MTOMSample.wsdl" /&gt;
+			&lt;arg value="-ss" /&gt;
+			&lt;arg value="-sd" /&gt;
+          		&lt;arg value="-g"/&gt;
+			&lt;arg value="-p" /&gt;
+			&lt;arg value="sample.mtom.service" /&gt;
+			&lt;arg value="-o" /&gt;
+			&lt;arg value="${service.dir}" /&gt;
+			&lt;classpath refid="class.path" /&gt;
+		&lt;/java&gt;
+  	&lt;/target&gt;</pre>
+</source>
+<p>Now we are ready to code. Lets edit
+output/src/sample/mtom/service/MTOMSampleSkeleton.java and fill in the business logic. Following is an example:</p>
+<source><pre>
+	public org.apache.ws.axis2.mtomsample.AttachmentResponse attachment(
+			org.apache.ws.axis2.mtomsample.AttachmentRequest param0) throws Exception
+	{
+		AttachmentType attachmentRequest = param0.getAttachmentRequest();
+		Base64Binary binaryData = attachmentRequest.getBinaryData();
+		DataHandler dataHandler = binaryData.getBase64Binary();
+		File file = new File(
+				attachmentRequest.getFileName());
+		FileOutputStream fileOutputStream = new FileOutputStream(file);
+		dataHandler.writeTo(fileOutputStream);
+		fileOutputStream.flush();
+		fileOutputStream.close();
+		
+		AttachmentResponse response = new AttachmentResponse();
+		response.setAttachmentResponse("File saved succesfully.");
+		return response;
+	}
+</pre></source>
+<p>The code above receives a file and writes it to disk using the given file name. It returns a message
+on success.
+Now lets define the client:</p>
+<source><pre>	public static void transferFile(File file, String destination)
+			throws RemoteException {
+		MTOMSampleStub serviceStub = new MTOMSampleStub();
+
+		// Enable MTOM in the client side
+		serviceStub._getServiceClient().getOptions().setProperty(
+				Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
+		//Increase the time out when sending large attachments
+		serviceStub._getServiceClient().getOptions().setTimeOutInMilliSeconds(10000);
+
+		// Populating the code generated beans
+		AttachmentRequest attachmentRequest = new AttachmentRequest();
+		AttachmentType attachmentType = new AttachmentType();
+		Base64Binary base64Binary = new Base64Binary();
+
+		// Creating a javax.activation.FileDataSource from the input file.
+		FileDataSource fileDataSource = new FileDataSource(file);
+
+		// Create a dataHandler using the fileDataSource. Any implementation of
+		// javax.activation.DataSource interface can fit here.
+		DataHandler dataHandler = new DataHandler(fileDataSource);
+		base64Binary.setBase64Binary(dataHandler);
+		base64Binary.setContentType(dataHandler.getContentType());
+		attachmentType.setBinaryData(base64Binary);
+		attachmentType.setFileName(destination);
+		attachmentRequest.setAttachmentRequest(attachmentType);
+
+		AttachmentResponse response = serviceStub.attachment(attachmentRequest);
+		System.out.println(response.getAttachmentResponse());
+	}</pre>
+
+</source>
+<p>The last step is to create an AAR with our Skeleton and the services.xml, and then deploy the service. You can find the completed sample in the Axis2 standard binary distribution under the samples/mtom directory</p>
+
+<a name="252"></a>
+<h3>MTOM Databinding Using XMLBeans</h3>
+
+
+<p>Lets define a full, validated doc / lit style WSDL that imports the xmime
+schema, has a service that receives a jpeg and returns a pass / fail status
+to the client:</p>
+<source><pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;definitions name="MyMTOMService" targetNamespace="http://myMtomNS" xmlns:tns="http://myMtomNS" xmlns="http://schemas.xmlsoap.org/wsdl/" 
+  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://myMtomNS/types"&gt;
+  &lt;types&gt;
+    &lt;schema targetNamespace="http://myMtomNS/types" elementFormDefault="qualified" xmlns:tns="http://myMtomNS/types" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema" 
+    xmlns:xmime="http://www.w3.org/2005/05/xmlmime"&gt;
+      &lt;import namespace="http://schemas.xmlsoap.org/soap/encoding/"/&gt;
+
+       &lt;import namespace="http://www.w3.org/2005/05/xmlmime"
+                schemaLocation="http://www.w3.org/2005/05/xmlmime"/&gt;
+      &lt;complexType name="ReturnWebBase"&gt;
+        &lt;sequence&gt;
+          &lt;element name="errorMessage" type="xsd:string"/&gt;
+          &lt;element name="successErrorCode" type="xsd:int"/&gt;
+        &lt;/sequence&gt;
+
+      &lt;/complexType&gt;
+      &lt;element name="MyBinaryData" xmime:expectedContentTypes='image/jpeg' &gt;
+        &lt;complexType&gt;
+          &lt;simpleContent&gt;
+            &lt;extension base="base64Binary" &gt;
+              &lt;attribute ref="xmime:contentType" use="required"/&gt;
+
+            &lt;/extension&gt;
+          &lt;/simpleContent&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+      &lt;element name="sendData"&gt;
+        &lt;complexType&gt;
+
+          &lt;sequence&gt;
+            &lt;element ref='tns:MyBinaryData' minOccurs="1" maxOccurs="1" /&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+      &lt;element name="sendDataResponse"&gt;
+
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element minOccurs="1" maxOccurs="1" name="sendDataResult" type="tns:ReturnWebBase" /&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
+
+    &lt;/schema&gt;
+  &lt;/types&gt;
+  &lt;message name="MyMTOMEndpoint_sendData"&gt;
+     &lt;part name="parameters" element="ns2:sendData"/&gt;
+  &lt;/message&gt;
+  &lt;message name="MyMTOMEndpoint_sendDataResponse"&gt;
+
+    &lt;part name="result" element="ns2:sendDataResponse"/&gt;
+  &lt;/message&gt;
+  &lt;portType name="MyMTOMEndpoint"&gt;
+    &lt;operation name="sendData"&gt;
+      &lt;input message="tns:MyMTOMEndpoint_sendData" name="MyMTOMEndpoint_sendData"/&gt;
+      &lt;output message="tns:MyMTOMEndpoint_sendDataResponse" name="MyMTOMEndpoint_sendDataResponse"/&gt;
+
+    &lt;/operation&gt;
+  &lt;/portType&gt;
+  &lt;binding name="MyMTOMEndpointBinding" type="tns:MyMTOMEndpoint"&gt;
+    &lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/&gt;
+    &lt;operation name="sendData"&gt;
+      &lt;soap:operation soapAction="sendData"/&gt;
+
+      &lt;input name="MyMTOMEndpoint_sendData"&gt;
+        &lt;soap:body use="literal"/&gt;
+      &lt;/input&gt;
+      &lt;output name="MyMTOMEndpoint_sendDataResponse"&gt;
+        &lt;soap:body use="literal"/&gt;
+      &lt;/output&gt;
+
+    &lt;/operation&gt;
+  &lt;/binding&gt;
+  &lt;service name="MyMTOMService"&gt;
+    &lt;port name="MyMTOMEndpointPort" binding="tns:MyMTOMEndpointBinding"&gt;
+      &lt;soap:address location="http://localhost:8080/axis2/services/MyMTOMService"/&gt;&lt;/port&gt;&lt;/service&gt;&lt;/definitions&gt;
+
+  </pre>
+</source>
+<p>The important point here is we import http://www.w3.org/2005/05/xmlmime
+and define an element, 'MyBinaryData' , that utilizes MTOM.</p>
+
+<p>The next step is using the Axis2 tool 'WSDL2Java' to generate java source
+files from this WSDL. See the 'Code Generator Tool' guide for more info.
+Here, we define an ant task that chooses XMLBeans as the databinding
+implementation. We also choose to generate an interface which our Skeleton
+will implement. The name we list for the WSDL above is mtomExample.wsdl, and
+we define our package name for our generated source files to be
+'org.apache.axis2.samples.mtomDatabinding.endpoint' . Our ant task for this
+example is:</p>
+<source><pre>&lt;target name="wsdl2java" depends="clean,prepare"&gt;
+      &lt;delete dir="output" /&gt;
+      &lt;java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true"&gt;
+          &lt;classpath refid="axis.classpath"/&gt; 
+          &lt;arg value="-d"/&gt;
+
+          &lt;arg value="xmlbeans"/&gt;
+          &lt;arg value="-uri"/&gt;
+          &lt;arg file="wsdl/mtomExample.wsdl"/&gt;
+          &lt;arg value="-ss"/&gt;
+          &lt;arg value="-ssi"/&gt;
+          &lt;arg value="-g"/&gt;
+
+          &lt;arg value="-sd"/&gt;
+          &lt;arg value="-o"/&gt;
+          &lt;arg file="output"/&gt;
+          &lt;arg value="-p"/&gt;
+          &lt;arg value="org.apache.axis2.samples.mtomDatabinding.endpoint"/&gt;
+      &lt;/java&gt;
+
+      &lt;!-- Move the schema folder to classpath--&gt;
+      &lt;move todir="${build.classes}"&gt;
+          &lt;fileset dir="output/resources"&gt;
+              &lt;include name="*schema*/**/*.class"/&gt;
+              &lt;include name="*schema*/**/*.xsb"/&gt;
+          &lt;/fileset&gt;
+
+      &lt;/move&gt;
+
+  &lt;/target&gt;</pre>
+</source>
+<p>Now we are ready to code. Lets edit
+output/src/org/apache/axis2/samples/mtomDatabinding/endpoint/MyMTOMServiceSkeleton.java
+and fill in the business logic. The end result becomes:</p>
+<source><pre>/**
+ * MyMTOMServiceSkeleton.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis2 version: SNAPSHOT Jul 19, 2006 (03:46:19 BRT)
+ */
+package org.apache.axis2.samples.mtomDatabinding.endpoint;
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import mymtomns.types.ReturnWebBase;
+import mymtomns.types.SendDataDocument;
+import mymtomns.types.SendDataResponseDocument;
+import mymtomns.types.MyBinaryDataDocument.MyBinaryData;
+import mymtomns.types.SendDataDocument.SendData;
+import mymtomns.types.SendDataResponseDocument.SendDataResponse;
+
+/**
+ *  MyMTOMServiceSkeleton java skeleton for the axisService
+ */
+public class MyMTOMServiceSkeleton implements MyMTOMServiceSkeletonInterface {
+     
+    /** commons logging declaration. * */
+    private static Log logger = LogFactory
+            .getLog(MyMTOMServiceSkeleton.class);
+    
+    /** Put file received here - change path for your system. */
+    private static final String MY_DIR = "/home/myuser/example_dir/output";
+    /** Success code. */
+    public static final Integer SUCCESS = new Integer(0);
+    /** Failure / Exception code. */
+    public static final Integer FAILURE = new Integer(-1);
+    
+    /**
+     * Auto generated method signature.
+     *
+     * @param sendDataDocument
+     *            input complex object
+     * @return SendDataResponseDocument complex object return values
+     */
+    public SendDataResponseDocument sendData (SendDataDocument sendDataDocument) {
+    
+        // prepare output
+        SendDataResponseDocument retDoc = SendDataResponseDocument.Factory
+                .newInstance();
+
+        SendDataResponse retElement = SendDataResponse.Factory
+                .newInstance();
+    
+        ReturnWebBase returnWebBase = ReturnWebBase.Factory
+                .newInstance();
+
+        try {
+            if (logger.isDebugEnabled()) {
+                logger.debug("Reached mtomExample on the server side...");
+            }
+            SendData sendData = sendDataDocument.getSendData();
+            MyBinaryData myBinaryData = sendData.getMyBinaryData();
+            byte [] myJpegBytes = myBinaryData.getByteArrayValue();
+
+            File jpegFile = new File(MY_DIR+"myJpeg.jpg");
+            FileOutputStream fos = new FileOutputStream(jpegFile);
+            fos.write( myJpegBytes );
+            fos.flush();
+            fos.close();        
+
+            returnWebBase.setSuccessErrorCode(SUCCESS);
+            returnWebBase.setErrorMessage("SUCCESS");
+
+        } catch (Exception ex) {
+            logger.error("MyMTOMServiceSkeleton.sendData error:"
+                    + ex.getMessage(), ex);
+            returnWebBase.setErrorMessage(ex.getMessage());
+            returnWebBase.setSuccessErrorCode(FAILURE);
+        }
+        retElement.setSendDataResult(returnWebBase);
+        retDoc.setSendDataResponse(retElement);
+        return retDoc;
+    }
+     
+}</pre>
+</source>
+<p>The code above receives a jpeg file and writes it to disk. It returns zero
+on success and in the case of an error, returns -1 along with a stacktrace.
+Now lets define the client:</p>
+<source><pre>package client;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileInputStream;
+
+import mymtomns.types.ReturnWebBase;
+import mymtomns.types.SendDataDocument;
+import mymtomns.types.SendDataResponseDocument;
+import mymtomns.types.MyBinaryDataDocument.MyBinaryData;
+import mymtomns.types.SendDataDocument.SendData;
+import mymtomns.types.SendDataResponseDocument.SendDataResponse;
+import org.apache.axis2.samples.mtomDatabinding.endpoint.MyMTOMServiceStub;
+
+public class MTOMXMLBeansClient {
+
+    /** Read file from here - change path for your system. */
+    private static final String MY_DIR = "/home/myuser/example_dir/input/";
+
+    public static void main(String [] args) throws Exception {
+ 
+        try {
+            SendData sendData
+                  = SendData.Factory
+                      .newInstance();
+            SendDataDocument doc
+                  = SendDataDocument.Factory
+                      .newInstance();
+            MyBinaryData myBinaryData
+              = MyBinaryData.Factory
+                  .newInstance();
+            
+            File file=new File(MY_DIR + "axis.jpg");
+            FileInputStream stream=new FileInputStream(file);
+            int size=stream.available();
+            byte[] bytes=new byte[size];
+            stream.read(bytes);
+            
+            myBinaryData.setByteArrayValue(bytes);
+            sendData.setMyBinaryData(myBinaryData);
+            doc.setSendData(sendData);
+       
+            MyMTOMServiceStub stub = new MyMTOMServiceStub();
+            SendDataResponseDocument responseDoc = stub
+                      .sendData(doc);
+            SendDataResponse response = responseDoc
+                      .getSendDataResponse();
+            ReturnWebBase result = response.getSendDataResult();
+            // test for errors
+            if (result.getSuccessErrorCode() ==-1) {
+                System.out.println("ERROR: " + result.getErrorMessage());
+            }
+       
+        } catch (Exception e) {
+              e.printStackTrace();
+        }
+    }
+}</pre>
+
+</source>
+<p>The last step is to create an AAR with our Skeleton and the generated
+interface and services.xml, and then deploy the service. See the user guide
+for more info.</p>
+<a name="3"></a>
+
+<h2>SOAP with Attachments (SwA) with Axis2</h2>
+<a name="31"></a>
+
+<h3>Receiving SwA type attachments</h3>
+
+<p>Axis2 automatically identifies SwA messages based on the content type.
+Axis2 stores the references to the received attachment parts (MIME parts) in
+the Message Context. Axis2 preserves the order of the received attachments
+when storing them in the MessageContext. Users can access binary attachments
+using the attachement API given in the Message Context using content-id of
+the mime part as the key. Care needs be taken to rip off the "cid" prefix
+when content-id is taken from the "Href" attributes. Users can access the the
+message context from whithin a service implementation class using the
+"setOperationContext()" method as shown in the following example.</p>
+
+<p>Note: Axis2 supports content-id based referencing only. Axis2 does not
+support Content Location based referencing of MIME parts.</p>
+
+<ul>
+  <li><strong>Sample service which accesses a received SwA type
+    attachment</strong></li>
+</ul>
+<source><pre>public class SwA {
+    private OperationContext operationContext;
+
+    public SwA() {
+    }
+
+    public void setOperationContext(OperationContext oc) throws AxisFault {
+        operationContext = oc;
+    }
+
+    public void uploadAttachment(OMElement omEle) throws AxisFault {
+        OMElement child = (OMElement) omEle.getFirstOMChild();
+        OMAttribute attr = child.getAttribute(new QName("href"));
+        
+        //Content ID processing
+        String contentID = attr.getAttributeValue();
+        contentID = contentID.trim();
+        if (contentID.substring(0, 3).equalsIgnoreCase("cid")) {
+            contentID = contentID.substring(4);
+        }
+        
+        Attachments attachment = (Attachments) (operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)).getAttachmentMap();
+        DataHandler dataHandler = attachment.getDataHandler(contentID);
+        ...........
+    }
+}</pre>
+</source><a name="32"></a>
+
+<h3>Sending SwA Type Attachments</h3>
+
+<p>User need to set the "enableSwA" property to true in order to be able to
+send SwA messages. Axis2 user is <strong>not</strong> expected to enable MTOM
+&amp; SwA together. In such a situation MTOM will get priority over SwA.</p>
+
+<p>This can be set using the axis2.xml as follows.</p>
+<source><pre>  
+        &lt;parameter name="enableSwA" locked="false"&gt;true&lt;/parameter&gt;</pre>
+</source>
+<p>"enableSwA" can also be set using the client side Options as follows</p>
+<source><pre>  
+        options.setProperty(Constants.Configuration.ENABLE_SwA, Constants.VALUE_TRUE);</pre>
+</source>
+<p>Users are expected to use the attachment API provided in the
+MessageContext to specify the binary attachments needed to be attached to the
+outgoing message as SwA type attachments. Client side SwA capability can be
+used only with the OperationClient api, since the user needs the ability to
+access the MessageContext.</p>
+
+<ul>
+  <li><strong>Sample client which sends a message with SwA type
+    attachments</strong></li>
+</ul>
+<source><pre>   public void uploadFileUsingSwA(String fileName) throws Exception {
+
+        Options options = new Options();
+        options.setTo(targetEPR);
+        options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);
+        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        options.setTo(targetEPR);
+  
+        ServiceClient sender = new ServiceClient(null,null);
+        sender.setOptions(options);
+        OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP);
+        
+        MessageContext mc = new MessageContext();   
+        mc.setEnvelope(createEnvelope());
+        FileDataSource fileDataSource = new FileDataSource("test-resources/mtom/test.jpg");
+        DataHandler dataHandler = new DataHandler(fileDataSource);
+        mc.addAttachment("FirstAttachment",dataHandler);
+       
+        mepClient.addMessageContext(mc);
+        mepClient.execute(true);
+    }</pre>
+</source><a name="33"></a>
+
+<h3>MTOM Backward Compatibility with SwA</h3>
+
+<p>MTOM specification is designed to be backward compatible with the SOAP
+with Attachments specification. Even though the representation is different,
+both technologies have the same wire format. We can safely assume that any
+SOAP with Attachments endpoint can accept a MTOM optimized messages and treat
+them as SOAP with Attachment messages - Any MTOM optimized message is a valid
+SwA message.</p>
+
+<p>Note : Above backword compatibility was succesfully tested against Axis
+1.x</p>
+
+<ul>
+  <li><strong>A sample SwA message from Axis 1.x</strong></li>
+</ul>
+<source><pre>Content-Type: multipart/related; type="text/xml"; 
+          start="&lt;9D645C8EBB837CE54ABD027A3659535D&gt;";
+                boundary="----=_Part_0_1977511.1123163571138"
+
+------=_Part_0_1977511.1123163571138
+Content-Type: text/xml; charset=UTF-8
+Content-Transfer-Encoding: binary
+Content-Id: &lt;9D645C8EBB837CE54ABD027A3659535D&gt;
+
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;soapenv:Envelope xmlns:soapenv="...."....&gt;
+    ........
+                &lt;source href="cid:3936AE19FBED55AE4620B81C73BDD76E" xmlns="/&gt;
+
+    ........
+&lt;/soapenv:Envelope&gt;
+------=_Part_0_1977511.1123163571138
+Content-Type: text/plain
+Content-Transfer-Encoding: binary
+Content-Id: &lt;3936AE19FBED55AE4620B81C73BDD76E&gt;
+
+<em>Binary Data.....</em>
+------=_Part_0_1977511.1123163571138--</pre>
+</source><ul>
+  <li><strong>Corresponding MTOM message from Axis2</strong></li>
+</ul>
+
+<source><pre>Content-Type: multipart/related; boundary=MIMEBoundary4A7AE55984E7438034;
+                         type="application/xop+xml"; start="<0.09BC7F4BE2E4D3EF1B@apache.org>";
+                         start-info="text/xml; charset=utf-8"
+
+--MIMEBoundary4A7AE55984E7438034
+content-type: application/xop+xml; charset=utf-8; type="application/soap+xml;"
+content-transfer-encoding: binary
+content-id: &lt;0.09BC7F4BE2E4D3EF1B@apache.org&gt;
+
+&lt;?xml version='1.0' encoding='utf-8'?&gt;
+&lt;soapenv:Envelope xmlns:soapenv="...."....&gt;
+  ........
+         &lt;xop:Include href="cid:1.A91D6D2E3D7AC4D580@apache.org" 
+                        xmlns:xop="http://www.w3.org/2004/08/xop/include"&gt;
+         &lt;/xop:Include&gt;
+  ........
+
+&lt;/soapenv:Envelope&gt;
+--MIMEBoundary4A7AE55984E7438034
+content-type: application/octet-stream
+content-transfer-encoding: binary
+content-id: <1.A91D6D2E3D7AC4D580@apache.org>
+
+<em>Binary Data.....</em>
+--MIMEBoundary4A7AE55984E7438034--</pre>
+</source><a name="4"></a>
+
+<h2>Advanced Topics</h2>
+<a name="41"></a>
+
+<h3>File Caching for Attachments</h3>
+
+<p>Axis2 comes handy with a file caching mechanism for incoming attachments,
+which gives Axis2 the ability to handle very large attachments without
+buffering them in memory at any time. Axis2 file caching streams the incoming
+MIME parts directly in to files, after reading the MIME part headers.</p>
+
+<p>Also a user can specify a size threshold for the File caching (in bytes).
+When this threshold value is specified, only the attachments whose size is
+bigger than the threshold value will get cached in files. Smaller attachments
+will remain in Memory.</p>
+
+<p><em>NOTE</em> : It is a must to specify a directory to temporary store the
+attachments. Also care should be taken to <strong>clean that
+directory</strong> from time to time.</p>
+
+<p>The following parameters need to be set in Axis2.xml in order to enable
+file caching.</p>
+<source><pre>&lt;axisconfig name="AxisJava2.0"&gt;
+
+    &lt;!-- ================================================= --&gt;
+    &lt;!-- Parameters --&gt;
+    &lt;!-- ================================================= --&gt;
+    &lt;parameter name="cacheAttachments" locked="false"&gt;true&lt;/parameter&gt;
+    &lt;parameter name="attachmentDIR" locked="false"&gt;<em>temp directory</em>&lt;/parameter&gt;
+
+    &lt;parameter name="sizeThreshold" locked="false"&gt;<em>4000</em>&lt;/parameter&gt;
+    .........
+    .........
+&lt;/axisconfig&gt;</pre>
+</source>
+<p>Enabling file caching for client side receiving can be done for the by
+setting the Options as follows.</p>
+<source><pre>options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,Constants.VALUE_TRUE);
+options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR,<em>TempDir</em>);
+options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, <em>"4000"</em>);</pre>
+
+</source></body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/pojoguide.html b/rampart_1_1/xdocs/1_1/pojoguide.html
new file mode 100644
index 0000000..147d65e
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/pojoguide.html
@@ -0,0 +1,605 @@
+<html lang="en">

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>POJO Web Services using Axis2</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>POJO Web Services using Apache Axis2</h1>

+

+<p>Want a quick way to get a Web service up and running in no time? Well

+then, you should consider creating a Plain Old Java Object (POJO) to deploy

+using Apache Axis2 on Apache Tomcat. POJOs are fast to build and easy to

+maintain, meaning you'll save a lot of time building and debugging your code.

+This document shows you how to take a simple POJO, and deploy it on Apache

+Tomcat as a Web service in the exploded directory format. You'll also be

+shown how to take a POJO based on the Spring Framework, and deploy that as an

+AAR packaged Web service on Tomcat.</p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#introduction">Introduction</a></li>

+  <li><a href="#pojo">The POJO</a></li>

+  <li><a href="#pojows">POJO Web service using Apache Axis2 and Tomcat</a>

+    <ul>

+      <li><a href="#definingservice">Defining the Service:

+      services.xml</a></li>

+    </ul>

+  </li>

+  <li><a href="#buildpojows">Building the POJO Web Service Using Ant</a></li>

+  <li><a href="#testingpojows">Testing the POJO Web Service Using

+    RPCServiceClient</a>

+    <ul>

+      <li><a href="#limitationspojo">Limitations and Strengths of

+      POJO</a></li>

+    </ul>

+  </li>

+  <li><a href="#springpojows">Spring-based POJO Web Service</a>

+    <ul>

+      <li><a href="#quickintro">Quick Introduction</a></li>

+      <li><a href="#servicedef">The Service Definition: services.xml</a></li>

+      <li><a href="#initializingspring">Initializing the Spring application

+        context: SpringInit</a></li>

+      <li><a href="#testingrpc">Testing Using an RPCServiceClient</a></li>

+    </ul>

+  </li>

+  <li><a href="#summary">Summary</a></li>

+  <li><a href="#furtherstudy">For Further Study</a></li>

+</ul>

+<a name="introduction"></a>

+

+<h2>Introduction</h2>

+

+<p>The task of building a Web service can sometimes be overwhelming, but not

+with POJOs! The old-school Plain Old Java Object is a simple and quick way to

+get most, if not all, of your currently existing Java classes up on the Web

+as readily accessible Web services. This document will show you how to build

+a POJO-style Web service with Apache Axis2 and Tomcat, organized as

+follows:</p>

+<ul>

+  <li>The POJO: This is the Java class that you'll use throughout this

+    document</li>

+  <li>POJO deployment</li>

+  <li>Test the POJO Web service using an RPC based client</li>

+  <li>Limitations of straight POJO</li>

+  <li>Spring-based POJO Web service and deployment</li>

+</ul>

+

+<p>The code for the document can be found at Axis2_HOME/samples/pojoguide

+&amp; Axis2_HOME/samples/pojoguidespring once you extract the <a

+href="../../download/1_1/download.html#std-bin">Axis2 Stadard

+Distribution</a>, and it might help to go grab it now to help you as you

+follow along. Let's get started.</p>

+<a name="pojo"></a>

+

+<h2>The POJO</h2>

+

+<p>The POJO you'll be using throughout this document is a Weather service

+POJO that consists of two classes: WeatherService and Weather. Weather

+contains the Weather data: Temperature, forecast, rain (will it rain?), and

+howMuchRain (See Code Listing 1).</p>

+

+<p><b>Code Listing 1: The Weather POJO</b></p>

+<pre>package sample.pojo.data;

+

+public class Weather{

+    float temperature;

+    String forecast;

+    boolean rain;

+    float howMuchRain;

+    

+    public void setTemperature(float temp){

+        temperature = temp;

+    }

+

+    public float getTemperature(){

+        return temperature;

+    }

+    

+    public void setForecast(String fore){

+        forecast = fore;

+    }

+

+    public String getForecast(){

+        return forecast;

+    }

+    

+    public void setRain(boolean r){

+        rain = r;

+    }

+

+    public boolean getRain(){

+        return rain;

+    }

+    

+    public void setHowMuchRain(float howMuch){

+        howMuchRain = howMuch;

+    }

+

+    public float getHowMuchRain(){

+        return howMuchRain;

+    }

+}</pre>

+

+<p>And here's the WeatherService class, shown in Code Listing 2.</p>

+

+<p><b>Code Listing 2: The WeatherService class</b></p>

+<pre>package sample.pojo.service;

+

+import sample.pojo.data.Weather;

+

+public class WeatherService{

+    Weather weather;

+    

+    public void setWeather(Weather weather){

+        this.weather = weather;

+    }

+

+    public Weather getWeather(){

+        return this.weather;

+    }

+}</pre>

+

+<p>Note that it's all just straight POJOs with field items and

+<code>getter</code> and <code>setter</code> methods for each field. Next,

+you'll take a look at what you need to do to make it ready for deployment on

+Apache Axis2 and Tomcat.</p>

+<a name="pojows"></a>

+

+<h2>POJO Web Service Using Apache Axis2 and Tomcat</h2>

+

+<p>Got the POJOs? Great. This section will show you how to package them in

+the exploded directory format for easy deployment. First you'll look at the

+services.xml file that defines the Web service, and then you'll build the

+files using <a href="http://ant.apache.org/">Apache Ant</a>, and deploy the

+Web service on Tomcat.</p>

+<a name="definingservice"></a>

+

+<h3>Defining the Service: services.xml</h3>

+

+<p>Before Axis2 can understand what is going on, you have to tell it to use

+the services.xml file. Let's get right into it (see Code Listing 3).</p>

+

+<p><b>Code Listing 3: The service definition file: services.xml</b></p>

+<pre>&lt;service name="WeatherService" scope="application"&gt;

+    &lt;description&gt;

+        Weather POJO Service

+    &lt;/description&gt;

+    &lt;messageReceivers&gt;

+        &lt;messageReceiver 

+            mep="http://www.w3.org/2004/08/wsdl/in-only"

+    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/&gt;

+        &lt;messageReceiver

+            mep="http://www.w3.org/2004/08/wsdl/in-out"

+    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/&gt;

+    &lt;/messageReceivers&gt;

+    &lt;parameter name="ServiceClass"&gt;

+        sample.pojo.service.WeatherService

+    &lt;/parameter&gt;

+&lt;/service&gt;</pre>

+

+<p>The name of the service is specified as WeatherService and the scope of

+the service is application. As you can see in the WeatherService POJO, there

+are two methods, an IN-ONLY method and a IN-OUT method, hence the ordering

+for the messageReceiver elements within the messageReceivers tag. Lastly, the

+ServiceClass parameter specifies the class of the Web service, which is

+sample.pojo.service.WeatherService. When operations of your Web service get

+called, the methods of the WeatherService class will be called. Next you'll

+take a look at an easy method of building your application using Ant.</p>

+<a name="buildpojows"></a>

+

+<h2>Building the POJO Web Service Using Apache Ant</h2>

+

+<p><a href="http://ant.apache.org/">Ant</a> is a slick build tool. It helps

+reduce time to build applications, and several of the Axis2 command-line

+tools create build.xml files for you, so that's why we'll use it here. We

+won't go into the build.xml file that you'll be using in too much detail, so

+here are the main Ant tasks you'll be using:</p>

+<ul>

+  <li>generate.service -- This Ant task builds all the service relevant

+    source and copies the files to build/WeatherService</li>

+  <li>rpc.client -- This task builds the client relevant files, builds a JAR

+    at <em>build/lib/rpc-client.jar</em>, and then runs the client</li>

+</ul>

+

+<p>Before you can build the source, however, you'll need to download the

+Axis2 1.1-bin and 1.1-war distributions <a

+href="../../download/1_1/download.html">here</a>. Then modify the following

+line inside the build.xml file (in the Axis2_HOME/samples/pojoguide directory

+in the extracted Axis2 1.1 Standard Binary (bin) Distribution) :</p>

+<pre>&lt;property name="axis2.home" value="c:\apps\axis2" /&gt;</pre>

+

+<p>This modification contains the path to the root of the unzipped Axis2

+1.1-bin <a href="../../download/1_1/download.html#std-bin">download</a>. With

+that explanation, you'll now build the source by typing the following: ant</p>

+

+<p>The following directory format should now exist at

+build/WeatherService:</p>

+<pre> - WeatherService

+   - META-INF

+     - services.xml

+   - sample

+     - pojo

+       - data

+         - Weather.class

+       - service

+         - WeatherService.class</pre>

+

+<p>Simple isn't it? An excellent way to dive into Web services

+development.</p>

+

+<p>Now get a <a href="http://tomcat.apache.org/">Tomcat</a> distribution (I

+used v5.5), and start it up by running <em>bin/startup.bat</em> or

+<em>bin/startup.sh</em>. Once it's running, deploy the Axis2 1.1-war by

+copying the axis2.war file to Tomcat's webapps directory. Tomcat will proceed

+by deploying axis2 and un-archive it into the webapps directory. Now copy the

+WeatherService directory created when building our project to:

+<em>&lt;tomcat-home&gt;/webapps/axis2/WEB-INF/services</em>.</p>

+

+<p>The service should quickly deploy, and you'll test the Web service using

+the RPCServiceClient in the next section.</p>

+<a name="testingpojows"></a>

+

+<h2>Testing the POJO Web Service Using RPCServiceClient</h2>

+

+<p>OK, so the Web service should be running on Tomcat. Now you'll build a

+simple RPCServiceClient and test the POJO Web service. You'll first start out

+with the class constructs, creating the RPCServiceClient and initializing the

+values of the Weather class within the Web service (See Code Listing 4).</p>

+

+<p><b>Code Listing 4: Setting the weather</b></p>

+<pre>package sample.pojo.rpcclient;

+

+import javax.xml.namespace.QName;

+

+import org.apache.axis2.AxisFault;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.rpc.client.RPCServiceClient;

+

+import sample.pojo.data.Weather;

+

+

+public class WeatherRPCClient {

+

+    public static void main(String[] args1) throws AxisFault {

+

+        RPCServiceClient serviceClient = new RPCServiceClient();

+

+        Options options = serviceClient.getOptions();

+

+        EndpointReference targetEPR = new EndpointReference(

+                <b>"http://localhost:8080/axis2/services/WeatherService");</b>

+        options.setTo(targetEPR);

+

+        // Setting the weather

+        QName opSetWeather =

+            new QName("http://service.pojo.sample/xsd", "<b>setWeather");

+

+        Weather w = new Weather();

+

+        w.setTemperature((float)39.3);

+        w.setForecast("Cloudy with showers");

+        w.setRain(true);

+        w.setHowMuchRain((float)4.5);

+

+        Object[] opSetWeatherArgs = new Object[] { w };

+

+        serviceClient.invokeRobust(opSetWeather, opSetWeatherArgs);</b>

+...</pre>

+

+<p>The most interesting code to note is in bold font. Notice the targetEPR

+variable you create, setting the endpoint reference to

+http://localhost:8080/axis2/services/WeatherService. This is where you

+deployed it on Axis2. You can also verify this by asking Axis2 to list its

+services by going to the following URL:

+http://localhost:8080/axis2/services/listServices.</p>

+

+<p>Next the opSetWeather variable gets setup, pointing to the setWeather

+operation. Then the Weather data gets created and initialized. Lastly, you

+invoke the Web service, which initializes the weather data (you'll verify

+this soon). Next you get back the weather data (see Code Listing 5).</p>

+

+<p><b>Code Listing 5: Getting the weather data</b></p>

+<pre>...

+        serviceClient.invokeRobust(opSetWeather, opSetWeatherArgs);

+

+        // Getting the weather

+        QName opGetWeather =

+            new QName("http://service.pojo.sample/xsd", "<b>getWeather");

+

+        Object[] opGetWeatherArgs = new Object[] { };

+        Class[] returnTypes = new Class[] { Weather.class };

+        

+        Object[] response = serviceClient.invokeBlocking(opGetWeather,

+                opGetWeatherArgs, returnTypes);

+        

+        Weather result = (Weather) response[0];

+        

+        if (result == null) {

+            System.out.println("Weather didn't initialize!");

+            return;

+        }</b>

+...</pre>

+

+<p>First you set the operation in opGetWeather to getWeather. Then you create

+an empty argument list. Note this time you expect something back from the Web

+service, and so you create a list of return types. Then you invoke the Web

+service using a blocking call and wait for the weather data to be returned to

+you, and you place it in the result variable. Lastly, you make sure it isn't

+null and that it was successfully initialized by the previous call to

+setWeather. Now display the data to verify that it is indeed what you set it

+to (see Code Listing 6).</p>

+

+<p><b>Code Listing 6: Displaying the data</b></p>

+<pre>...

+            return;

+        }

+

+        // Displaying the result

+        <b>System.out.println("Temperature               : " +

+                           result.getTemperature());

+        System.out.println("Forecast                  : " +

+                           result.getForecast());

+        System.out.println("Rain                      : " +

+                           result.getRain());

+        System.out.println("How much rain (in inches) : " +

+                           result.getHowMuchRain());

+        

+    }</b>

+}</pre>

+

+<p>You should receive the data shown in Code Listing 7.</p>

+

+<p><b>Code Listing 7: Output from running the client</b></p>

+<pre>rpc.client.run:

+     [java] Temperature               : 39.3

+     [java] Forecast                  : Cloudy with showers

+     [java] Rain                      : true

+     [java] How much rain (in inches) : 4.5</pre>

+

+<p>Excellent, you have a working POJO Web service! Next you'll quickly morph

+this one into a Spring based POJO.</p>

+<a name="limitationspojo"></a>

+

+<h3>Limitations and Strengths of POJO</h3>

+

+<p>We've covered the strengths of using POJO based Web services, but what

+about any limitations? One main limitation of POJO based Web services is the

+lack of initialization support (meaning that you have to go into your Web

+service and initialize the values before the Web service is completely

+useful), but you'll soon see how to overcome that limitation with a Spring

+based POJO, covered next.</p>

+<a name="springpojows"></a>

+

+<h2>Spring-based POJO Web Service</h2>

+

+<p>Spring is a hot framework for J2EE and makes bean usage a breeze. You'll

+use it in this section to create a Spring based POJO Web service. For this

+section you'll need the spring.jar from the latest 1.x Spring download.</p>

+

+<a name="quickintro"></a>

+

+<h3>Quick Introduction</h3>

+

+<p>If you take a look at the source code of this document in

+Axis2_HOME/samples/pojoguidespring (to see how the Spring based POJO Web

+service is coded), you can see that the Weather class didn't change at all

+and the WeatherService class only got its name changed to

+WeatherSpringService.</p>

+

+<p>You'll also notice an applicationContext.xml file, which we'll cover

+later: it's used to setup the beans used in our Web service.</p>

+

+<p>Now you might wonder what the SpringInit.java class is for: This service

+is necessary, however, to initialize the Spring Framework's application

+context.</p>

+

+<p>The client is pretty much the same, except you won't use it to initialize

+the Weather data in the Web service, since Spring does that for you using

+Inversion of Control (IoC), which is covered next.</p>

+<a name="servicedef"></a>

+

+<h3>The Service Definition: services.xml</h3>

+

+<p>Because the core POJOs didn't change, you'll move straight to the

+services.xml file. It's a bit longer this time because it instantiates two

+services in one file (see Code Listing 7).</p>

+

+<p><b>Code Listing 7: Defining the services: services.xml</b></p>

+<pre>&lt;serviceGroup&gt;

+  &lt;service <b>name="SpringInit" 

+class="sample.spring.service.SpringInit</b>"&gt;

+    &lt;description&gt;

+      This web service initializes Spring.

+    &lt;/description&gt;

+    <b>&lt;parameter name="ServiceClass"&gt;

+        sample.spring.service.SpringInit

+    &lt;/parameter&gt;

+    &lt;parameter name="ServiceTCCL"&gt;composite&lt;/parameter&gt;

+    &lt;parameter name="load-on-startup"&gt;true&lt;/parameter&gt;</b>

+    &lt;operation name="springInit"&gt;

+      &lt;messageReceiver 

+      class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;

+    &lt;/operation&gt;

+  &lt;/service&gt;

+  &lt;service <b>name="WeatherSpringService</b>"&gt;

+    &lt;description&gt;

+      Weather Spring POJO Axis2 AAR deployment

+    &lt;/description&gt;

+    <b>&lt;parameter name="ServiceClass"&gt;

+        sample.spring.service.WeatherSpringService

+    &lt;/parameter&gt;

+    &lt;parameter name="ServiceObjectSupplier"&gt;

+org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier

+    &lt;/parameter&gt;

+    &lt;parameter name="SpringBeanName"&gt;

+        weatherSpringService

+    &lt;/parameter&gt;</b>

+    &lt;messageReceivers&gt;

+      &lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

+      class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/&gt;

+      &lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

+      class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/&gt;

+    &lt;/messageReceivers&gt;

+  &lt;/service&gt;

+&lt;/serviceGroup&gt;</pre>

+

+<p>You'll see a few familiar items in the above listing, and several changes.

+Once again, the items in bold are most important. The ServiceTCCL property

+under the SpringInit service makes sure that the Spring class loader is used

+for the Web service, allowing it to properly instantiate the Spring

+application context. The load-on-startup variable is a must-have so that the

+service loads up immediately on startup, creating the Spring application

+context. The WeatherSpringService stays mostly the same to the WeatherService

+previously with a couple additions: The ServiceObjectSupplier provides the

+service with the Spring application context, making it "Spring Aware."</p>

+

+<p>Lastly, the SpringBeanName points to the name of the bean associated with

+this Web service, which is defined in the applicationContext.xml file

+(essentially the WeatherSpringService). We'll cover the

+applicationContext.xml file next. The application context:

+applicationContext.xml file tells the Spring Framework, what beans are

+defined. For this example, you'll define three of them (see Code Listing

+8).</p>

+

+<p><b>Code Listing 8: Defining the application context:

+applicationContext.xml</b></p>

+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;

+&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 

+"http://www.springframework.org/dtd/spring-beans.dtd"&gt;

+

+&lt;beans&gt;

+  &lt;bean id="<b>applicationContext</b>" class=

+"org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" /&gt;

+

+  <b>&lt;bean id="weatherSpringService" 

+        class="sample.spring.service.WeatherSpringService"&gt;

+    &lt;property name="weather" ref="weatherBean"/&gt;

+  &lt;/bean&gt;

+

+  &lt;bean id="weatherBean" class="sample.spring.bean.Weather"&gt;

+    &lt;property name="temperature" value="89.9"/&gt;

+    &lt;property name="forecast" value="Sunny"/&gt;

+    &lt;property name="rain" value="false"/&gt;

+    &lt;property name="howMuchRain" value="0.2"/&gt;

+  &lt;/bean&gt;</b>

+&lt;/beans&gt;</pre>

+

+<p>The first one is Axis2's hook into Spring's application context (needed

+since AAR deployment is quite different from regular WAR deployment). Next,

+you define the bean pointed to by the services.xml file, the

+weatherSpringService bean that points to the WeatherSpringService class. It

+has one field property that gets initialized by the Spring Framework,

+weather, which will be set to the weatherBean. The weatherBean is an

+instantiation of the Weather class that holds information on the weather.

+Spring will initialize it to the values shown above, and set the Weather

+object in the WeatherSpringService class to this weatherBean instantiation.

+Thus, when you deploy the Web service you won't have to instantiate the

+values because they'll already be set.</p>

+

+<p>Next up is the SpringInit class.</p>

+<a name="initializingspring"></a>

+

+<h3>Initializing the Spring application context: SpringInit</h3>

+

+<p>Without the Spring application context being initialized quickly, you'll

+run into problems. The SpringInit class initializes the Spring application

+context on startup because it is a ServiceLifeCycle class, whose startUp

+method gets called upon loading the class (and because its load-on-startup

+property is set in the serices.xml file). The only code worth mentioning in

+this class is shown in Code Listing 9.</p>

+

+<p><b>Code Listing 9: SpringInit's startUp method</b></p>

+<pre>    public void startUp(ConfigurationContext ignore,

+                        AxisService service) {

+        <b>ClassLoader classLoader = service.getClassLoader();

+        ClassPathXmlApplicationContext appCtx = new

+            ClassPathXmlApplicationContext</b>(new String[]

+                                           {"<b>applicationContext.xml</b>"}, 

+                                           false);

+        <b>appCtx.setClassLoader(classLoader);

+        appCtx.refresh();</b>

+        if (logger.isDebugEnabled()) {

+            logger.debug("\n\nstartUp() set spring classloader " +

+                         "via axisService.getClassLoader() ... ");

+        }

+    }</pre>

+

+<p>Note that this method retrieves the Spring class loader, creates an

+application context with applicationContext.xml as the parameters. This new

+application context then gets the Spring class loader as its class loader.

+The Spring Framework is now up and ready for our WeatherSpringService.</p>

+

+<h3>Build and Deploy Using Apache Axis2 and Tomcat</h3>

+

+<p>Great, your POJO is now ready for primetime within the Spring Framework.

+Before you build, you'll first need to make sure the axis2-spring-1.1.jar and

+spring.jar files are in the project's <em>Axis2_HOME/lib</em> directory.</p>

+

+<p><strong>Note:</strong> The service will not deploy if you add the above jars files to the service archive due to cloass loding issues.</p>

+<p>Now build the source and create an AAR file by typing:

+ant</p>

+

+<p>It'll be created at <em>target/WeatherSpringService.aar</em>. Copy it over

+to <em>&lt;tomcat-home&gt;/webapps/axis2/WEB-INF/services</em>, and Axis2

+should deploy it quickly.</p>

+

+<p>Next test the Web service to see if Spring really will initialize the

+weather data for you.</p>

+<a name="testingrpc"></a>

+

+<h3>Testing Using an RPCServiceClient</h3>

+

+<p>It's as simple as it was for the other Web service, except this time type:

+ant rpc.client</p>

+

+<p>Feel free to browse the code for this client in

+src/client/WeatherSpringRPCClient.java. Essentially, this client does the

+exact same thing as the client testing the WeatherService, except this one

+skips the "Setting the weather" task since the weather data should already

+have been set by the Spring framework at startup.</p>

+

+<p>Thus, you should get the following as output from the client:</p>

+<pre>run.client:

+    [javac] Compiling 1 source file to C:\axis2-1.1\samples\pojoguidespring\build\cl

+asses

+     <b>[java] Temperature               : 89.9

+     [java] Forecast                  : Sunny

+     [java] Rain                      : false

+     [java] How much rain (in inches) : 0.2</b></pre>

+

+<p>Which is exactly the values you set them to be in the

+applicationContext.xml file!</p>

+<a name="summary"></a>

+

+<h2>Summary</h2>

+

+<p>Apache Axis2 is an excellent way to expose your POJOs as Web services, and

+Spring adds greater flexibility to your POJOs by adding beans support and

+initialization abilities, along with all the other goodies provided by the

+Spring framework.</p>

+<a name="furtherstudy"></a>

+

+<h2>For Further Study</h2>

+

+<p>Apache Axis2-<a

+href="http://ws.apache.org/axis2/">http://ws.apache.org/axis2/</a></p>

+

+<p>Axis2 Architecture-<a

+href="http://ws.apache.org/axis2/1_0/Axis2ArchitectureGuide.html">http://ws.apache.org/axis2/1_0/Axis2ArchitectureGuide.html</a></p>

+

+<p>Introduction to Apache Axis2-<a

+href="http://www.redhat.com/magazine/021jul06/features/apache_axis2/">http://www.redhat.com/magazine/021jul06/features/apache_axis2/</a></p>

+

+<p>Working With Apache Axis2-<a

+href="http://www.wso2.net/articles/axis2/java/2006/09/13/working-with-axis2">http://www.wso2.net/articles/axis2/java/2006/09/13/working-with-axis2</a></p>

+

+<p>Apache Tomcat-<a

+href="http://tomcat.apache.org/">http://tomcat.apache.org</a></p>

+

+<p>Spring Framework-<a

+href="http://www.springframework.org/">http://www.springframework.org/</a></p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/quickstartguide.html b/rampart_1_1/xdocs/1_1/quickstartguide.html
new file mode 100644
index 0000000..1261007
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/quickstartguide.html
@@ -0,0 +1,936 @@
+<?xml version="1.0" encoding="utf-8"?>

+<html lang="en">

+<head>

+  <meta http-equiv="content-type" content=""></meta>

+  <title>Axis2 Quick Start Guide</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Axis2 Quick Start Guide</h1>

+

+<p>The purpose of this guide is to get you started creating services and clients using Axis2 as quickly as possible.  We'll take a simple StockQuote Service and show you some of the different ways in which you can create and deploy it, as well as taking a quick look at one or two utilities that come with Axis2.  We'll then look at creating clients to access those services.</p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#introduction">Introduction</a></li>

+  <li><a href="#ready">Getting Ready</a></li>

+  <li><a href="#services">Axis2 services</a></li>

+  <li><a href="#create">Creating services</a></li>

+    <ul>

+      <li><a href="#deploy">Deploying POJOs</a></li>

+      <li><a href="#axiom">Building the service using AXIOM</a></li>

+      <li><a href="#adb">Generating the service using ADB</a></li>

+      <li><a href="#xmlbeans">Generating the service using XMLBeans</a></li>

+      <li><a href="#jibx">Generating the service using JiBX</a></li>

+     </ul>

+  <li><a href="#clients">Generating Clients</a></li>

+  <ul>

+    <li><a href="#clientaxiom">Creating a client with AXIOM</a></li>

+    <li><a href="#clientadb">Generating a client using ADB</a></li>

+    <li><a href="#clientxmlbeans">Generating a client using XML Beans</a></li>

+    <li><a href="#clientjibx">Generating a client using JiBX</a></li>

+  </ul>

+  <li><a href="#summary">Summary</a></li>

+  <li><a href="#furtherstudy">For Further Study</a></li>

+</ul>

+

+<h3>A Quick Setup Note:</h3>

+

+<p>The code for the document can be found in the extracted <a href="../download/1_1/download.html#std-bin">Standard Binary Distribution</a>, more specifically at Axis2_HOME/samples/ inside the directories- quickstart, quickstartadb, quickstartaxiom, quickstartjibx and quickstartxmlbeans, and it might help to go grab it now to help you as you follow along.  It includes an Ant buildfiles (build.xml) that we'll reference throughout the examples to make compilation easier.</p>

+

+<a name="introduction"></a><h2>Introduction</h2>

+

+<p>Let's start with the service itself.  We'll make it simple so you can see what is going on when we build and deploy services. A StockQuoteService example seems to be mandatory in instances like this one, so let's use the following (see Code Listing 1).</p>

+

+<p><b>Code Listing 1: The StockQuoteService class</b></p>

+<pre>package samples.quickstart.service.pojo;

+

+import java.util.HashMap;

+

+public class StockQuoteService {

+    private HashMap map = new HashMap();

+

+    public double getPrice(String symbol) {

+        Double price = (Double) map.get(symbol);

+        if(price != null){

+            return price.doubleValue();

+        }

+        return 42.00;

+    }

+

+    public void update(String symbol, double price) {

+        map.put(symbol, new Double(price));

+    }

+}

+</pre>

+

+<p>It will be a simple service with two possible calls. One of which is an in/out message, and the other is an in-only service. Ultimately, we'll package the service and deploy it in four different ways.</p>

+

+<p>First, let's look at how this simple Java class corresponds to a service.</p>

+

+

+<a name="ready"></a><h2>Getting Ready</h2>

+

+<p>Before we build anything using Axis2, we're going to need to take care of a little housekeeping. First off, you'll need to ready your environment for working with Axis2. Fortunately, it involves just a few simple steps:</p>

+

+<ol>

+<li>Download and install Java. (Minimum version is JDK1.4)</li>

+<li>Download Axis2 and extract it to a target directory.</li>

+<li>Copy the axis2.war file to the webapps directory of your servlet engine.</li>

+<li>Set the AXIS2_HOME environment variable to point to the target directory in step. Note that all of the scripts and build files Axis2 generates depend on this value, so don't skip this step!</li>

+</ol>

+

+<p>In most cases, we're also going to need a WSDL file for our service.  Axis2's Java2WSDL can be used to bootstrap a WSDL.  To generate a WSDL file from a Java class, perform the following steps:</p>

+

+<ol>

+<li>Create and compile the Java class.</li>

+<li>Generate the WSDL using the command:</li>

+<pre>

+%AXIS2_HOME%/bin/java2wsdl -cp . -cn samples.quickstart.service.pojo.StockQuoteService -of StockQuoteService.wsdl

+</pre>

+</ol>

+

+<p>Once you've generated the WSDL file, you can make any changes you need.  For example, you might add custom faults or change the name of generated elements.  For example, this StockQuoteService.wsdl is in %AXIS2_HOME%/samples/quickstartadb/resources/META-INF folder, which we'll be using for the rest of this guide, replaces the generic parameters created by the generation process.</p>

+

+<a name="services"></a><h2>Axis2 Services</h2>

+

+<p>Before we build anything, it's helpful to understand what the finished product looks like.</p>

+<p>The server side of Axis2 can be deployed on any Servlet engine, and has the following structure, shown in Code Listing 2.</p>

+

+<p><b>Code Listing 2: The Directory Structure of axis2.war</b></p>

+<pre>

+axis2-web 

+META-INF

+WEB-INF

+    classes 

+    conf

+        axis2.xml 

+    lib

+        activation.jar

+        ...

+        xmlSchema.jar

+    modules

+        modules.list 

+        addressing.mar

+        ...

+        soapmonitor.mar

+    services

+        services.list

+        aservice.aar

+        ...

+        version.aar

+    web.xml

+</pre>

+

+<p>Starting at the top, axis2-web is a collection of JSPs that make up the Axis2 administration application, through which you can perform any needed actions such as adding services and engaging and dis-engaging modules. The WEB-INF directory contains the actual java classes and other support files to run any services deployed to the services directory.</p>

+

+<p>The main file in all this is axis2.xml, which controls how the application deals with received messages, determining whether Axis2 needs to apply any of the modules defined in the modules directory.</p>

+

+<p>Services can be deployed as *.aar files, as you can see here, but their contents must be arranged in a specific way.  For example, the structure of this service will be as follows:</p>

+

+<a name="aarstructure"></a><pre>

+- StockQuoteService

+   - META-INF

+     - services.xml

+   - samples

+     - quickstart

+       - service

+         - pojo

+           - StockQuoteService.class

+</pre>

+

+<p>This is not too complicated.  The name of the service is StockQuoteService which is specified in the services.xml, and places any Java classes in their proper place based on the package name. The META-INF directory contains additional information about the services that Axis2 needs to execute it properly. The services.xml file defines the service itself and links the Java class to it (See Code Listing 3).</p>

+

+<p><b>Code Listing 3: The Service Definition File</b></p>

+<pre>

+&lt;service name="StockQuoteService" scope="application"&gt;

+    &lt;description&gt;

+        Stock Quote Sample Service

+    &lt;/description&gt;

+    &lt;messageReceivers&gt;

+        &lt;messageReceiver 

+            mep="http://www.w3.org/2004/08/wsdl/in-only"

+    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/&gt;

+        &lt;messageReceiver

+            mep="http://www.w3.org/2004/08/wsdl/in-out"

+    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/&gt;

+    &lt;/messageReceivers&gt;

+    &lt;parameter name="ServiceClass"&gt;

+        samples.quickstart.service.pojo.StockQuoteService

+    &lt;/parameter&gt;

+&lt;/service&gt;

+</pre>

+

+<p>Here you see the service itself defined, along with the relevant messageReceiver types for different message exchange patterns.</p>

+

+<p>The META-INF directory is also the location for any custom WSDL files you intend to include for this application.</p>

+

+<p>You can deploy a service by simply taking this hierarchy of files and copying it to the webapps directory of your servlet engine.  This is known as the "exploded" format, but you can also compress your documents into an *.aar file, similar to a *.jar file, and place the *.aar file directly in the servlet engine's webapps directory.</p>

+

+<p>Now that you understand what we're trying to accomplish, we're almost ready to start building.</p>

+

+<p>First, <a href="../download/1_1/download.html#std-bin">download</a> and unzip the appropriate version of Axis2 Standard Binary Distribution.  Make sure that you set the value of the AXIS2_HOME variable to match the location into which you extracted the contents of this release.</p>

+

+<p>Let's look at some different ways to create clients and services.</p>

+

+<a name="create"></a><h2>Creating Services</h2>

+

+<p>In this section, we'll look at five ways to create a service based on the StockQuoteService class:  deploying Plain Old Java Objects (POJO), building the service using AXIOM's OMElement, generating the service using Axis2 Databinding Framework (ADB), generating the service using XMLBeans, and generating the service using JiBX.</p>

+

+<a name="deploy"></a><h3>Deploying POJOs</h3>

+

+<p>To deploy the service using POJOs (Plain Old Java Objects), execute the following steps.</p>

+

+<p>Note the directory structure contained at &lt;AXIS2_HOME>/samples/quickstart (the services.xml file is from the first section of this guide):</p>

+<pre>

+- quickstart

+   - README.txt

+   - build.xml

+   - resources

+     - META-INF

+       - services.xml

+   - src

+     - samples

+       - quickstart

+         - service

+           - pojo

+             - StockQuoteService.java

+</pre>

+

+<p>Note that you can generate a WSDL from the quickstart directory by typing: <pre>ant generate.wsdl</pre> However, creating StockQuoteService.wsdl is optional.  It can be the version generated directly from the Java class, or a customized version of that file, and that services.xml is the same file referenced earlier in this document.</p>

+

+<p>Now build the project by typing ant generate.service in the quickstart directory, which creates the following directory structure:</p>

+<pre>

+- quickstart/build/classes

+   - META-INF

+     - services.xml

+   - samples

+     - quickstart

+       - service

+         - pojo

+           - StockQuoteService.class

+</pre>

+

+<p>If you want to deploy the service in exploded directory format, rename the classes directory to StockQuoteService, and copy it to the webapps/axis2/WEB-INF/services directory in your servlet engine. Otherwise, copy the build/StockQuoteService.aar file to the webapps/axis2/WEB-INF/services directory in your servlet engine. Then check to make sure that the service has been properly deployed by viewing the list of services at:</p>

+<pre>

+http://localhost:8080/axis2/services/listServices

+</pre>

+

+<p>You can also checkout the WSDL at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?wsdl

+</pre>

+

+<p>And the schema at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?xsd

+</pre>

+

+<p>Once those url's are working, let's quickly test the service. Try pointing your browser to the following URL:</p>

+<pre>

+http://localhost:8080/axis2/rest/StockQuoteService/getPrice?symbol=IBM

+</pre>

+

+<p>You will get the following response:</p>

+<pre>

+&lt;ns:getPriceResponse xmlns:ns="http://pojo.service.quickstart.samples/xsd"&gt;&lt;ns:return>42&lt;/ns:return&gt;&lt;/ns:getPriceResponse&gt;

+</pre>

+

+<p>If you invoke the update method like so:</p>

+<pre>

+http://localhost:8080/axis2/rest/StockQuoteService/update?symbol=IBM&amp;price=100

+</pre>

+

+and then execute the first getPrice url. You can see that the price got updated.

+

+<a name="axiom"></a><h3>Building the Service using AXIOM</h3>

+

+<p>To build a service "from scratch" using AXIOM, execute the following steps.</p>

+

+<p>Note the directory structure contained at /samples/quickstartaxiom:</p>

+<pre>

+- quickstartaxiom

+   - README.txt

+   - build.xml

+   - resources

+     - META-INF

+       - services.xml

+       - StockQuoteService.wsdl

+   - src

+     - samples

+       - quickstart

+         - service

+           - axiom

+             - StockQuoteService.java

+         - clients

+           - AXIOMClient.java

+</pre>

+

+<p>Since AXIOM is a little different, you're going to need a different services.xml file from the one used for POJO. Define it, as shown in Code Listing 4.</p>

+<p><b>Code Listing 4: The Service Definition File.</b></p>

+<pre>&lt;service name="StockQuoteService" scope="application"&gt;

+    &lt;description&gt;

+        Stock Quote Service

+    &lt;/description&gt;

+    &lt;operation name="getPrice"&gt;

+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;

+    &lt;/operation&gt;

+    &lt;operation name="update"&gt;

+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/&gt;

+    &lt;/operation&gt;

+    &lt;parameter name="ServiceClass"&gt;samples.quickstart.service.axiom.StockQuoteService&lt;/parameter&gt;

+&lt;/service&gt;</pre>

+

+<p>Note how it's mostly the same, except that the operations are explicitly defined in the service.xml file, and the MessageReceivers are now RawXML.</p>

+

+<p>Now, the above referenced StockQuoteService.java class, a plain Java class that uses classes from the Axis2 libraries, is defined as shown in Code Listing 5.</p>

+

+<p><b>Code Listing 5: The StockQuoteService Class using AXIOM</b></p>

+<pre>package samples.quickstart.service.axiom;

+

+import javax.xml.stream.XMLStreamException;

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+

+import java.util.HashMap;

+public class StockQuoteService {

+    private HashMap map = new HashMap();

+

+    public OMElement getPrice(OMElement element) throws XMLStreamException {

+        element.build();

+        element.detach();

+

+        OMElement symbolElement = element.getFirstElement();

+        String symbol = symbolElement.getText();

+

+        String returnText = "42";

+        Double price = (Double) map.get(symbol);

+        if(price != null){

+            returnText  = "" + price.doubleValue();

+        }

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace omNs =

+            fac.createOMNamespace("http://axiom.service.quickstart.samples/xsd", "tns");

+        OMElement method = fac.createOMElement("getPriceResponse", omNs);

+        OMElement value = fac.createOMElement("price", omNs);

+        value.addChild(fac.createOMText(value, returnText));

+        method.addChild(value);

+        return method;

+    }

+

+    public void update(OMElement element) throws XMLStreamException {

+        element.build();

+        element.detach();

+

+        OMElement symbolElement = element.getFirstElement();

+        String symbol = symbolElement.getText();

+

+        OMElement priceElement = (OMElement)symbolElement.getNextOMSibling();

+        String price = priceElement.getText();

+

+        map.put(symbol, new Double(price));

+    }

+}

+</pre>

+

+<p>Axis2 uses AXIOM, or the AXIs Object Model, a <a href="http://www.w3.org/DOM/">DOM</a> (Document Object Model)-like structure that is based on the StAX API (Streaming API for XML).  Methods that act as services must take as their argument an OMElement, which represents an XML element that happens, in this case, to be the payload of the incoming SOAP message.  Here, you're extracting the contents of the first child of the payload element, adding text to it, and using it as content for the return OMElement.  Unless this is an "in only" service, these methods must return an OMElement, because that becomes the payload of the return SOAP message.</p>

+

+<p>Now build the project by typing ant generate.service in the Axis2_HOME/samples/quickstartaxiom directory.</p>

+

+<p>Place the StockQuoteService.aar file in the webapps/axis2/WEB-INF/services directory of the servlet engine, and check to make sure that the service has been properly deployed by viewing the list of services at:</p>

+<pre>

+http://localhost:8080/axis2/services/listServices

+</pre>

+

+<p>You can also check the custom WSDL at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?wsdl

+</pre>

+

+<p>And the schema at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?xsd

+</pre>

+

+<a name="adb"></a><h3>Generating the Service using ADB</h3>

+

+<p>To generate and deploy the service using the Axis2 Databinding Framework (ADB) execute the following steps.</p>

+

+<p>Generate the skeleton using the WSDL2Java utility by typing the following in the Axis2_HOME/samples/quickstartadb directory:</p>

+<pre>%AXIS2_HOME%/bin/WSDL2Java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.service.adb -d adb -s -ss -sd -ssi -o build/service</pre>

+

+<p>Or by simply typing ant generate.service in the Axis2_HOME/samples/quickstartadb directory.</p>

+

+<p>The option -d adb specifies Axis Data Binding (ADB). The -s switch specifies synchronous or blocking calls only. The -ss switch creates the server side code (skeleton and related files). The -sd switch creates a service descriptor (services.xml file).  The -ssi switch creates an interface for the service skeleton. The service files should now be located at build/service.</p>

+

+<p>If you generated the code by using WSDL2Java directly, you next need to modify the generated skeleton to implement the service (if you used "ant generate.service", a completed skeleton will be copied over the generated one automatically).</p> 

+

+<p>Open the build/service/src/samples/quickstart/adb/service/StockQuoteServiceSkeleton.java file and modify it to add the functionality of your service to the generated methods, shown in Code Listing 6.</p>

+

+<p><b>Code Listing 6: Defining the Service Skeleton File</b></p>

+<pre>package samples.quickstart.service.adb;

+

+import samples.quickstart.service.adb.xsd.GetPriceResponse;

+import samples.quickstart.service.adb.xsd.Update;

+import samples.quickstart.service.adb.xsd.GetPrice;

+

+import java.util.HashMap;

+

+public class StockQuoteServiceSkeleton {

+

+    private static HashMap map;

+

+    static{ map = new HashMap(); }

+

+    public void update(Update param0) {

+        map.put(param0.getSymbol(), new Double(param0.getPrice()));

+    }

+

+    public GetPriceResponse getPrice(GetPrice param1) {

+        Double price = (Double) map.get(param1.getSymbol());

+        double ret = 42;

+        if(price != null){

+            ret = price.doubleValue();

+        }

+        GetPriceResponse res =

+                new GetPriceResponse();

+        res.set_return(ret);

+        return res;

+    }

+}

+</pre>

+

+<p>Now you can build the project by typing the following command in the build/service directory:</p>

+<pre>

+ant jar.server

+</pre>

+

+<p>If all goes well, you should see the BUILD SUCCESSFUL message in your window, and the StockQuoteService.aar file in the build/service/build/lib directory.  Copy this file to the webapps/axis2/WEB-INF/services directory of the servlet engine.</p>

+

+<p>You can check to make sure that the service has been properly deployed by viewing the list of services at:</p>

+<pre>

+http://localhost:8080/axis2/services/listServices

+</pre>

+

+<p>You can also check the custom WSDL at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?wsdl

+</pre>

+

+<p>And the schema at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?xsd

+</pre>

+

+<a name="xmlbeans"></a><h3>Generating the Service using XMLBeans</h3>

+

+<p>To generate a service using XMLBeans, execute the following steps.</p>

+

+<p>Generate the skeleton using the WSDL2Java utility by typing, in the Axis2_HOME/samples/quickstartxmlbeans directory:</p>

+<pre>

+%AXIS2_HOME%/bin/WSDL2Java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.service.xmlbeans -d xmlbeans -s -ss -sd -ssi -o build/service</pre>

+

+<p>Or by simply typing ant generate.service in the Axis2_HOME/samples/quickstartxmlbeans directory.</p>

+

+<p>The option -d xmlbeans specifies XML Beans data binding. The -s switch specifies synchronous or blocking calls only. The -ss switch creates the server side code (skeleton and related files). The -sd switch creates a service descriptor (services.xml file).  The -ssi switch creates an interface for the service skeleton. The service files should now be located at build/service.</p>

+

+<p>If you generated the code by using WSDL2Java directly, you next need to modify the generated skeleton to implement the service (if you used "ant generate.service", a completed skeleton will be copied over the generated one automatically).</p> 

+

+<p>Next open the build/service/src/samples/quickstart/service/xmlbeans/StockQuoteServiceSkeleton.java file and modify it to add the functionality of your service to the generated methods (see Code Listing 7).</p>

+

+<p><b>Code Listing 7: Defining the Service Skeleton</b></p>

+<pre>package samples.quickstart.service.xmlbeans;

+

+import samples.quickstart.service.xmlbeans.xsd.GetPriceDocument;

+import samples.quickstart.service.xmlbeans.xsd.GetPriceResponseDocument;

+import samples.quickstart.service.xmlbeans.xsd.UpdateDocument;

+

+import java.util.HashMap;

+

+public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {

+

+    private static HashMap map;

+

+    static{ map = new HashMap(); }

+

+    public void update(UpdateDocument param0) {<b>

+        map.put(param0.getUpdate().getSymbol(), new Double(param0.getUpdate().getPrice()));</b>

+    }

+

+    public GetPriceResponseDocument getPrice(GetPriceDocument param1) {<b>

+        Double price = (Double) map.get(param1.getGetPrice().getSymbol());

+        double ret = 42;

+        if(price != null){

+            ret = price.doubleValue();

+        }

+        System.err.println();

+        GetPriceResponseDocument resDoc =

+                GetPriceResponseDocument.Factory.newInstance();

+        GetPriceResponseDocument.GetPriceResponse res =

+                resDoc.addNewGetPriceResponse();

+        res.setReturn(ret);

+        return resDoc;</b>

+    }

+}

+</pre>

+

+<p>Build the project by typing the following command in the build/service directory, which contains the build.xml file:</p>

+<pre>

+ant jar.server

+</pre>

+

+<p>If all goes well, you should see the BUILD SUCCESSFUL message in your window, and the StockQuoteService.aar file in the newly created build/service/build/lib directory. Copy this file to the webapps/axis2/WEB-INF/services directory of the servlet engine.</p>

+

+<p>You can check to make sure that the service has been properly deployed by viewing the list of services at:</p>

+<pre>

+http://localhost:8080/axis2/services/listServices

+</pre>

+

+<p>You can also check the custom WSDL at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?wsdl

+</pre>

+

+<p>And the schema at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?xsd

+</pre>

+

+<a name="jibx"></a><h3>Generating the Service using JiBX</h3>

+

+<p>To generate and deploy the service using <a href="http://www.jibx.org">JiBX data binding</a>, execute the following steps.</p>

+

+<p>Generate the skeleton using the WSDL2Java utility by typing the following at a console in the Axis2_HOME/samples/quickstartjibx directory:</p>

+<pre>%AXIS2_HOME%/bin/wsdl2java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.service.jibx -d jibx -s -ss -sd -ssi -uw -o build/service</pre>

+

+<p>Or by simply typing "ant generate.service" in the Axis2_HOME/samples/quickstartjibx directory.</p>

+

+<p>The option -d jibx specifies JiBX data binding. The -s switch specifies

+synchronous or blocking calls only. The -ss switch creates the server side code

+(skeleton and related files). The -sd switch creates a service descriptor

+(services.xml file).  The -ssi switch creates an interface for the service

+skeleton. The -uw switch unwraps the parameters passed to and from service

+operations, in order to create a more natural programming interface.</p>

+

+<p>After running WSDL2Java, the service files should be located at

+build/service. If you generated the code by using WSDL2Java directly, you next need to modify

+the generated skeleton to implement the service (if you used "ant generate.service"

+a completed skeleton will be copied over the generated one automatically). Open

+the build/service/src/samples/quickstart/service/jibx/StockQuoteServiceSkeleton.java

+file and modify it to add the functionality of your service to the generated

+methods, as shown in Code Listing 8.</p>

+

+<p><b>Code Listing 8: Defining the Service Skeleton File</b></p>

+<pre>package samples.quickstart.service.jibx;

+

+import java.util.HashMap;

+

+public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {

+    private HashMap map = new HashMap();

+

+    public void update(String symbol, Double price) {

+        map.put(symbol, price);

+    }

+

+    public Double getPrice(String symbol) {

+        Double ret = (Double) map.get(symbol);

+        if (ret == null) {

+            ret = new Double(42.0);

+        }

+        return ret;

+    }

+}

+</pre>

+

+<p>Now you can build the project by typing the following command in the

+build/service directory:</p>

+<pre>

+ant jar.server

+</pre>

+

+<p>If all goes well, you should see the BUILD SUCCESSFUL message in your window, and the StockQuoteService.aar file in the build/service/build/lib directory.  Copy this file to the webapps/axis2/WEB-INF/services directory of the servlet engine.</p>

+

+<p>You can check to make sure that the service has been properly deployed by viewing the list of services at:</p>

+<pre>

+http://localhost:8080/axis2/services/listServices

+</pre>

+

+<p>You can also check the custom WSDL at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?wsdl

+</pre>

+

+<p>And the schema at:</p>

+<pre>

+http://localhost:8080/axis2/services/StockQuoteService?xsd

+</pre>

+

+<a name="clients"></a><h2>Creating Clients</h2>

+

+<p>In this section, we'll look at four ways to create clients based on the StockQuoteService class:  Building an AXIOM based client, generating a client using Axis2 Databinding Framework (ADB), generating a client using XMLBeans, and generating a client using JiBX.</p>

+

+<a name="clientaxiom"></a><h3>Creating a Client with AXIOM</h3>

+

+<p>To build a client using AXIOM, execute the following steps.</p>

+

+<p>Also, note the directory structure shown in the Creating a service with AXIOM section, duplicated below for completeness.</p>

+<pre>

+- quickstartaxiom

+   - README.txt

+   - build.xml

+   - resources

+     - META-INF

+       - services.xml

+       - StockQuoteService.wsdl

+   - src

+     - samples

+       - quickstart

+         - service

+           - axiom

+             - StockQuoteService.java

+         - clients

+           - AXIOMClient.java

+</pre>

+

+<p>The above referenced AXIOMClient.java class is defined as follows, shown in Code Listing 9.</p>

+

+<p><b>Code Listing 9: The AXIOMClient class using AXIOM</b></p>

+<pre>package samples.quickstart.clients;

+

+import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.om.OMFactory;

+import org.apache.axiom.om.OMNamespace;

+import org.apache.axis2.Constants;

+import org.apache.axis2.addressing.EndpointReference;

+import org.apache.axis2.client.Options;

+import org.apache.axis2.client.ServiceClient;

+

+public class AXIOMClient {

+

+    private static EndpointReference targetEPR = 

+        new EndpointReference("http://localhost:8080/axis2/services/StockQuoteService");

+

+    public static OMElement getPricePayload(String symbol) {

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace omNs = fac.createOMNamespace("http://axiom.service.quickstart.samples/xsd", "tns");

+

+        OMElement method = fac.createOMElement("getPrice", omNs);

+        OMElement value = fac.createOMElement("symbol", omNs);

+        value.addChild(fac.createOMText(value, symbol));

+        method.addChild(value);

+        return method;

+    }

+

+    public static OMElement updatePayload(String symbol, double price) {

+        OMFactory fac = OMAbstractFactory.getOMFactory();

+        OMNamespace omNs = fac.createOMNamespace("http://axiom.service.quickstart.samples/xsd", "tns");

+

+        OMElement method = fac.createOMElement("update", omNs);

+

+        OMElement value1 = fac.createOMElement("symbol", omNs);

+        value1.addChild(fac.createOMText(value1, symbol));

+        method.addChild(value1);

+

+        OMElement value2 = fac.createOMElement("price", omNs);

+        value2.addChild(fac.createOMText(value2,

+                                         Double.toString(price)));

+        method.addChild(value2);

+        return method;

+    }

+

+    public static void main(String[] args) {

+        try {

+            OMElement getPricePayload = getPricePayload("WSO");

+            OMElement updatePayload = updatePayload("WSO", 123.42);

+            Options options = new Options();

+            options.setTo(targetEPR);

+            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

+

+            ServiceClient sender = new ServiceClient();

+            sender.setOptions(options);

+

+            sender.fireAndForget(updatePayload);

+            System.err.println("done");

+            OMElement result = sender.sendReceive(getPricePayload);

+

+            String response = result.getFirstElement().getText();

+            System.err.println("Current price of WSO: " + response);

+

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+    }

+    

+}

+</pre>

+

+<p>Axis2 uses AXIOM, or the AXIs Object Model, a DOM (Document Object Model)-like structure that is based on the StAX API (Streaming API for XML). Here you setup the payload for the update and getPrice methods of the service. The payloads are created similar to how you created the getPriceResponse payload for the AXIOM service. Then you setup the Options class, and create a ServiceClient that you'll use to communicate with the service. First you call the update method, a fireAndForget method that returns nothing. Lastly, you call the getPrice method, and retrieve the current price from the service and display it.</p>

+

+<p>Now you can build and run the AXIOM client by typing ant run.client in the Axis2_HOME/samples/quickstartaxiom directory.</p>

+

+<p>You should get the following as output:</p>

+<pre>

+done

+Current price of WSO: 123.42

+</pre>

+

+<a name="clientadb"></a><h3>Generating a Client using ADB</h3>

+

+<p>To build a client using Axis Data Binding (ADB), execute the following steps.</p>

+

+<p>Generate the client databings by typing the following in the Axis2_HOME/samples/quickstartadb directory:</p>

+<pre>

+%AXIS2_HOME%/bin/WSDL2Java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.clients -d adb -s -o build/client

+</pre>

+

+<p>Or by simply typing ant generate.client in the Axis2_HOME/samples/quickstartadb directory.</p>

+

+<p>Next take a look at quickstartadb/src/samples/quickstart/clients/ADBClient.java, and see how it's defined in Code Listing 10.</p>

+

+<p><b>Code Listing 10: The ADBClient Class</b></p>

+<pre>

+package samples.quickstart.clients;

+

+import samples.quickstart.service.adb.StockQuoteServiceStub;

+

+public class ADBClient{

+    public static void main(java.lang.String args[]){

+        try{

+            StockQuoteServiceStub stub =

+                new StockQuoteServiceStub

+                ("http://localhost:8080/axis2/services/StockQuoteService");

+

+            getPrice(stub);

+            update(stub);

+

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* fire and forget */

+    public static void update(StockQuoteServiceStub stub){

+        try{

+            StockQuoteServiceStub.Update req = new StockQuoteServiceStub.Update();

+            req.setSymbol ("ABC");

+            req.setPrice (42.35);

+

+            stub.update(req);

+            System.err.println("done");

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* two way call/receive */

+    public static void getPrice(StockQuoteServiceStub stub){

+        try{

+            StockQuoteServiceStub.GetPrice req = new StockQuoteServiceStub.GetPrice();

+

+            req.setSymbol("ABC");

+

+            StockQuoteServiceStub.GetPriceResponse res =

+                stub.getPrice(req);

+

+            System.err.println(res.get_return());

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+}

+</pre>

+

+<p>This class creates a client stub using the Axis Data Bindings you created. Then it calls the getPrice and update operations on the Web service. The getPrice method operation creates the GetPrice payload and sets the symbol to ABC. It then sends the request and displays the current price.  The update method creates an Update payload, setting the symbol to ABC and the price to 42.35.</p>

+

+<p>Now build and run the client by typing ant run.client in the Axis2_HOME/samples/quickstartadb directory.</p>

+

+<p>You should get the following as output:</p>

+<pre>

+42

+done

+</pre>

+

+<a name="clientxmlbeans"></a><h3>Generating a Client using XMLBeans</h3>

+

+<p>To build a client using the XML Beans data bindings, execute the following steps.</p>

+<p>Generate the databings by typing the following in the xmlbeansClient directory:</p>

+<pre>

+%AXIS2_HOME%/bin/WSDL2Java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.service.xmlbeans -d xmlbeans -s -o build/client

+</pre>

+

+<p>Or by simply typing ant generate.client in the Axis2_HOME/samples/quickstartxmlbeans directory.</p>

+

+<p>Note that this creates client stub code and no server side code.</p>

+

+<p>Next take a look at quickstartxmlbeans/src/samples/quickstart/clients/XMLBEANSClient.java, and see how it's defined in Code Listing 11.</p>

+

+<p><b>Code Listing 11: The XMLBEANSClient class</b></p>

+<pre>

+package samples.quickstart.clients;

+

+import samples.quickstart.service.xmlbeans.StockQuoteServiceStub;

+import samples.quickstart.service.xmlbeans.xsd.GetPriceDocument;

+import samples.quickstart.service.xmlbeans.xsd.GetPriceResponseDocument;

+import samples.quickstart.service.xmlbeans.xsd.UpdateDocument;

+

+public class XMLBEANSClient{

+

+    public static void main(java.lang.String args[]){

+        try{

+            StockQuoteServiceStub stub =

+                new StockQuoteServiceStub

+                ("http://localhost:8080/axis2/services/StockQuoteService");

+

+            getPrice(stub);

+            update(stub);

+

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* fire and forget */

+    public static void update(StockQuoteServiceStub stub){

+        try{

+            UpdateDocument reqDoc = UpdateDocument.Factory.newInstance();

+            UpdateDocument.Update req = reqDoc.addNewUpdate();

+            req.setSymbol ("ABC");

+            req.setPrice (42.32);

+

+            stub.update(reqDoc);

+            System.err.println("done");

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* two way call/receive */

+    public static void getPrice(StockQuoteServiceStub stub){

+        try{

+            GetPriceDocument reqDoc = GetPriceDocument.Factory.newInstance();

+            GetPriceDocument.GetPrice req = reqDoc.addNewGetPrice();

+            req.setSymbol("ABC");

+

+            GetPriceResponseDocument res =

+                stub.getPrice(reqDoc);

+

+            System.err.println(res.getGetPriceResponse().getReturn());

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+}

+</pre>

+

+<p>This class creates a client stub using the XML Beans data bindings you created. Then it calls the getPrice and update operations on the Web service. The getPrice method operation creates the GetPriceDocument, its inner GetPrice classes and sets the symbol to ABC. It then sends the request and retrieves a GetPriceResponseDocument and displays the current price.  The update method creates an UpdateDocument, Update and sets the symbol to ABC and price to 42.32, displaying done when complete.</p>

+

+<p>Now build and run the the project by typing ant run.client in the Axis2_HOME/samples/quickstartxmlbeans directory.</p>

+

+<p>You should get the following as output:</p>

+<pre>

+42

+done

+</pre>

+

+<a name="clientjibx"></a><h3>Generating a Client using JiBX</h3>

+

+<p>To build a client using JiBX, execute the following steps.</p>

+

+<p>Generate the client stub by typing the following at a console in the Axis2_HOME/samples/quickstartjibx directory:</p>

+<pre>

+%AXIS2_HOME%/bin/wsdl2java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.clients -d jibx -s -uw -o build/client

+</pre>

+

+<p>Or by simply typing "ant generate.client".</p>

+

+<p>Next take a look at quickstartjibx/src/samples/quickstart/clients/JiBXClient.java, shown below in Code Listing 12.</p>

+

+<p><b>Code Listing 12: The JiBXClient class</b></p>

+<pre>

+package samples.quickstart.clients;

+

+import samples.quickstart.service.jibx.StockQuoteServiceStub;

+

+public class JiBXClient{

+    public static void main(java.lang.String args[]){

+        try{

+            StockQuoteServiceStub stub =

+                new StockQuoteServiceStub

+                ("http://localhost:8080/axis2/services/StockQuoteService");

+

+            getPrice(stub);

+            update(stub);

+

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* fire and forget */

+    public static void update(StockQuoteServiceStub stub){

+        try{

+            stub.update("ABC", new Double(42.35));

+            System.err.println("done");

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+    /* two way call/receive */

+    public static void getPrice(StockQuoteServiceStub stub){

+        try{

+            System.err.println(stub.getPrice("ABC"));

+        } catch(Exception e){

+            e.printStackTrace();

+            System.err.println("\n\n\n");

+        }

+    }

+

+}

+</pre>

+

+<p>This class uses the created JiBX client stub to access the getPrice and update operations on the Web service. The getPrice method sends a request for the stock "ABC" and displays the current price.  The update method set the price for stock "ABC" to 42.35.</p>

+

+<p>Now build and run the client by typing "ant run.client" at a console in the Axis2_HOME/samples/quickstartjibx directory.</p>

+

+<p>You should get the following as output:</p>

+<pre>

+42

+done

+</pre>

+

+<a name="summary"></a><h2>Summary</h2>

+

+<p>Axis2 is a slick and robust way to get web services up and running in no time. This guide presented five methods of creating a service deployable on Axis2, and four methods of creating a client to communicate with the services. You now have the flexibility to create Web services using a variety of different technologies.</p>

+

+<a name="furtherstudy"></a>

+

+<h2>For Further Study</h2>

+

+<p>Apache Axis2-<a

+href="http://ws.apache.org/axis2/">http://ws.apache.org/axis2/</a></p>

+

+<p>Axis2 Architecture-<a

+href="http://ws.apache.org/axis2/1_0/Axis2ArchitectureGuide.html">http://ws.apache.org/axis2/1_0/Axis2ArchitectureGuide.html</a></p>

+

+<p>Introduction to Apache Axis2-<a

+href="http://www.redhat.com/magazine/021jul06/features/apache_axis2/">http://www.redhat.com/magazine/021jul06/features/apache_axis2/</a></p>

+

+<p>Working With Apache Axis2-<a

+href="http://www.wso2.net/articles/axis2/java/2006/09/13/working-with-axis2">http://www.wso2.net/articles/axis2/java/2006/09/13/working-with-axis2</a></p>

+

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/reference.html b/rampart_1_1/xdocs/1_1/reference.html
new file mode 100644
index 0000000..f623983
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/reference.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Axis2 Reference Guide</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en-US" dir="ltr">

+<a name="_Toc96697849" id="_Toc96697849"></a>

+<h1 align="center">Axis2 Reference Guide</h1>

+

+<a name="wsdl2code"></a>

+<h2> WSDL2Java Reference</h2>

+<pre>NAME

+       WSDL2Java.sh or WSDL2Java.bat - Generates java code according to a given WSDL file to handle Web service invocation.

+       These scripts can be found under the bin directory of the Axis2 distribution.

+

+SYNOPSIS

+       WSDL2Java.sh [OPTION]... -uri &lt;Location of WSDL&gt;

+

+DESCRIPTION

+       Given a WSDL file, this generates java code to handle Web service invocations.

+

+        -o &lt;output Location&gt; : output file location

+        -a : Generate async style code only. Default is off

+        -s : Generate sync style code only. Default is off. takes precedence over -a

+        -p &lt;package name&gt; : set custom package name

+        -l &lt;language&gt; : valid languages are java and csharp. Default is java

+        -t : Generate TestCase to test the generated code

+        -ss : Generate server side code (i.e. skeletons). Default is off

+        -sd : Generate service descriptor (i.e. services.xml). Default is off. Valid with -ss

+        -d &lt;databinding&gt; : valid databinding(s) are adb, xmlbeans and jaxme. Default is adb

+        -g : Generates all the classes. valid only with the -ss (This will generate client and server codes)

+        -pn &lt;port_name&gt; : name of port in the presence of multiple ports

+        -sn &lt;service_name&gt; : name of service in the presence of multiple services

+        -u : unpacks the databinding classes

+        -r &lt;repository_path&gt; : path of the repository against which code is generated

+	-ns2p ns1=pkg1,ns2=pkg2 : Specify a custom package name for each namespace specified in the wsdl's schema

+	-ssi : Generate an interface for the service implementation (Default: off)

+	-em : Specify an external mapping file

+	-wv : WSDL Version. Valid Options : 2, 2.0, 1.1

+	-f : Generate the source output folder without the src directory

+	-uw : Switch on un-wrapping.

+	-S &lt;folder name&gt; : Generated source folder name. (Default: src)

+	-R &lt;folder name&gt; : Generated resources folder name. (Default: resources)

+	

+EXAMPLES

+       WSDL2Java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl

+       WSDL2Java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -ss -sd 

+       WSDL2Java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -ss -sd -d xmlbeans -o ../samples -p org.apache.axis2.userguide</pre>

+

+<a name="wsdl2java"></a>

+<h2> Java2WSDL Reference</h2>

+<pre>NAME

+       Java2WSDL.sh or Java2WSDL.bat - Generates the appropriate WSDL file for a given java class.

+       These scripts can be found under the bin directory of the Axis2 distribution.

+

+SYNOPSIS

+       Java2WSDL.sh [OPTION]... -cn &lt;fully qualified class name&gt;

+

+DESCRIPTION

+       Given a java class generates a WSDL file for the given java class. 

+

+       -o &lt;output Location&gt; : output file location

+       -cp &lt;class path uri&gt; : list of classpath entries - (urls)

+       -tn &lt;target namespace&gt; : target namespace

+       -tp &lt;target namespace prefix&gt; : target namespace prefix

+       -stn &lt;schema target namespace&gt; : target namespace for schema

+       -stp &lt;schema target namespace prefix&gt; : target namespace prefix for schema

+       -sn &lt;service name&gt; : service name

+       -of &lt;output file name&gt; : output file name for the WSDL

+       -st &lt;binding style&gt; : style for the WSDL

+       -u &lt;binding use&gt; : use for the WSDL

+       -l &lt;soap address&gt; : address of the port for the WSDL

+       -efd &lt;qualified/unqualified&gt; : Setting for elementFormDefault (defaults to qualified)

+       -afd &lt;qualified/unqualified&gt; : Setting for attributeFormDefault (defaults to qualified)

+       -xc &lt;extra class&gt; : Extra class for which schematype must be generated.  Use as : -xc class1 -xc class2 ...

+EXAMPLES

+       Java2WSDL.sh -cn ../samples/test/searchTool.Search

+       Java2WSDL.sh -cn ../samples/test/searchTool.Search -sn search

+       Java2WSDL.sh -cn ../samples/test/searchTool.Search -u -sn search

+       Java2WSDL.sh -cn ../samples/test/searchTool.Search -sn search -o ../samples/test/wsdl  </pre>

+       

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/resources/schemas/module.xsd b/rampart_1_1/xdocs/1_1/resources/schemas/module.xsd
new file mode 100644
index 0000000..45d6501
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/resources/schemas/module.xsd
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!-- Created by Eran Chinthaka -->

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

+	<xs:element name="module">

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element name="Description" minOccurs="0"/>

+				<xs:element name="inflow" minOccurs="0">

+					<xs:complexType>

+						<xs:sequence>

+							<xs:element name="handler"  type="handlerType"  minOccurs="0" maxOccurs="unbounded"/>

+						</xs:sequence>

+					</xs:complexType>

+				</xs:element>

+				<xs:element name="outflow" minOccurs="0">

+					<xs:complexType>

+						<xs:sequence>

+							<xs:element name="handler"  type="handlerType" minOccurs="0" maxOccurs="unbounded"/>

+						</xs:sequence>

+					</xs:complexType>

+				</xs:element>

+				<xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>

+				<xs:element ref="operation" minOccurs="0"/>

+				<xs:element name="Outfaultflow" minOccurs="0">

+					<xs:complexType>

+						<xs:sequence>

+							<xs:element  name="handler"  type="handlerType" minOccurs="0" maxOccurs="unbounded"/>

+						</xs:sequence>

+					</xs:complexType>

+				</xs:element>

+				<xs:element name="INfaultflow" minOccurs="0">

+					<xs:complexType>

+						<xs:sequence>

+							<xs:element  name="handler"  type="handlerType"  minOccurs="0" maxOccurs="unbounded"/>

+						</xs:sequence>

+					</xs:complexType>

+				</xs:element>

+			</xs:sequence>

+			<xs:attribute name="name" type="xs:string" use="optional"/>

+			<xs:attribute name="class" type="xs:string" use="optional"/>

+		</xs:complexType>

+	</xs:element>

+	<xs:element name="order">

+		<xs:complexType>

+			<xs:attribute name="phase" type="xs:string" use="required"/>

+			<xs:attribute name="after" type="xs:string" use="optional"/>

+			<xs:attribute name="before" type="xs:string" use="optional"/>

+			<xs:attribute name="phaseFirst" type="xs:string" use="optional"/>

+			<xs:attribute name="phaseLast" type="xs:string" use="optional"/>

+		</xs:complexType>

+	</xs:element>

+

+		<xs:complexType name="handlerType">

+			<xs:sequence>

+				<xs:element ref="order"/>

+			</xs:sequence>

+			<xs:attribute name="name" type="xs:string" use="required"/>

+			<xs:attribute name="class" type="xs:string" use="required"/>

+		</xs:complexType>

+

+	<xs:element name="parameter">

+		<xs:complexType>

+			<xs:attribute name="name" type="xs:string" use="required"/>

+			<xs:attribute name="locked" type="xs:boolean" use="optional" default="false"/>

+		</xs:complexType>

+	</xs:element>

+	<xs:element name="operation">

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element name="messageReceiver" minOccurs="0">

+					<xs:complexType>

+						<xs:attribute name="class"/>

+					</xs:complexType>

+				</xs:element>

+				<xs:element ref="parameter"/>

+			</xs:sequence>

+			<xs:attribute name="name" type="xs:string" use="required"/>

+			<xs:attribute name="mep" type="xs:anyURI" use="required"/>

+		</xs:complexType>

+	</xs:element>

+</xs:schema>

diff --git a/rampart_1_1/xdocs/1_1/resources/schemas/services.xsd b/rampart_1_1/xdocs/1_1/resources/schemas/services.xsd
new file mode 100644
index 0000000..2e3d895
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/resources/schemas/services.xsd
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

+	<xs:complexType name="operationType">

+		<xs:sequence>

+			<xs:element name="actionMapping" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

+			<xs:element name="outputActionMapping" type="xs:string" minOccurs="0" maxOccurs="1"/>

+			<xs:element name="faultActionMapping" type="xs:string" minOccurs="0" maxOccurs="unbounded">

+				<xs:complexType>

+					<xs:attribute name="faultName" use="required"/>

+				</xs:complexType>

+			</xs:element>

+			<xs:element name="messageReceiver" minOccurs="0">

+				<xs:complexType>

+					<xs:attribute name="class" use="required"/>

+				</xs:complexType>

+			</xs:element>

+			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"/>

+			<xs:element name="module" minOccurs="0" maxOccurs="unbounded">

+				<xs:complexType>

+					<xs:attribute name="ref" use="required"/>

+				</xs:complexType>

+			</xs:element>

+		</xs:sequence>

+		<xs:attribute name="name" type="xs:string" use="required"/>

+		<xs:attribute name="mep" type="xs:anyURI" use="optional"/>

+	</xs:complexType>

+	<xs:complexType name="parameterType">

+		<xs:annotation>

+			<xs:documentation>Type describing a parameter. This element contains two attributes

+         and may contain any element or simply a string</xs:documentation>

+		</xs:annotation>

+		<xs:complexContent>

+			<xs:extension base="xs:anyType">

+				<xs:attribute name="name" type="xs:string" use="required"/>

+				<xs:attribute name="locked" type="xs:boolean" use="optional"/>

+			</xs:extension>

+		</xs:complexContent>

+	</xs:complexType>

+	<xs:element name="service">

+		<xs:annotation>

+			<xs:documentation>

+			Service element description. This has a number of

+             parameter and operation elements nested

+     </xs:documentation>

+		</xs:annotation>

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element name="description" type="xs:string" minOccurs="0"/>

+				<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"/>

+				<xs:element name="operation" type="operationType" minOccurs="0" maxOccurs="unbounded"/>

+                        <xs:element name="module" minOccurs="0" maxOccurs="unbounded">

+				    <xs:complexType>

+					<xs:attribute name="ref" use="required"/>

+				    </xs:complexType>

+			      </xs:element>

+                        <xs:element name="transports" minOccurs="0" maxOccurs="unbounded">

+                            <xs:sequence>

+				        <xs:element name="transport" type="xs:string" minOccurs="1"/>

+                            </xs:sequence>

+			      </xs:element>

+                        <xs:element name="messageReceivers" minOccurs="0" maxOccurs="unbounded">

+                            <xs:sequence>

+				        <xs:element name="messageReceiver" maxOccurs="unbounded">

+				            <xs:complexType>

+					        <xs:attribute name="mep" type="xs:string"  use="required"/>

+                                       <xs:attribute name="class" type="xs:string"  use="required"/>

+				            </xs:complexType>

+			               </xs:element>

+                            </xs:sequence>

+			      </xs:element>

+			</xs:sequence>

+			<xs:attribute name="name" type="xs:string" use="required"/>

+                  <xs:attribute name="scope" type="xs:string" use="optional"/>

+                  <xs:attribute name="targetNamespace" type="xs:string" use="optional"/>

+			<xs:attribute name="wsaddressing" type="xs:string" />

+		</xs:complexType>

+	</xs:element>

+	<xs:element name="serviceGroup">

+		<xs:annotation>

+			<xs:documentation>

+			 holder for multiple service elements. 

+     </xs:documentation>

+		</xs:annotation>

+		<xs:complexType>

+			<xs:sequence>

+				<xs:element ref="service" maxOccurs="unbounded"/>

+			</xs:sequence>

+		</xs:complexType>

+	</xs:element>

+</xs:schema>

diff --git a/rampart_1_1/xdocs/1_1/rest-ws.html b/rampart_1_1/xdocs/1_1/rest-ws.html
new file mode 100644
index 0000000..a7664f5
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/rest-ws.html
@@ -0,0 +1,152 @@
+<html>
+
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>RESTful Web Services Support</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+
+<h1>RESTful Web Services Support</h1>
+
+<p>This document presents an introduction on REST and REST with HTTP POST &amp;
+GET.</p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#rest_with_post">Doing REST Web Services with HTTP POST</a>
+    <ul>
+      <li><a href="#sample">Sample REST - HTTP POST Client</a></li>
+    </ul>
+  </li>
+  <li><a href="#rest_with_get">Access a REST Web Service via HTTP GET</a></li>
+</ul>
+
+<a name="intro"></a>
+<h2>Introduction</h2>
+
+<p>WSDL 2.0 HTTP Binding defines a way to implement REST (Representational State Transfer) with Web services. Axis2 implements most defined in HTTP binding specification. REST Web services are a reduced subset of the usual Web service stack.</p>
+
+<p>The Axis2 REST implementation assumes the following properties:</p>
+<ol>
+  <li>REST Web services are Synchronous and Request Response in nature.</li>
+  <li>When REST Web services are accessed via GET, the service and the
+    operations are identified based on the URL. The parameters are assumed as
+    parameters of the Web service. In this case the GET based REST Web
+    services supports only simple types as arguments and it should adhere to <a href="http://www.w3.org/TR/2006/CR-wsdl20-adjuncts-20060327/#_operation_iri_style">IRI style</a>.</li>
+  <li>POST based Web services do not need a SOAP Envelope or a SOAP Body.
+    REST Web Services do not have Headers and the payload is sent
+  directly.</li>
+</ol>
+
+<p>Axis2 can be configured as a REST Container and can be used to send and
+receive RESTful Web service requests and responses. REST Web services can be
+accessed using HTTP GET and POST.</p>
+
+<a name="rest_with_post"></a>
+<h2>Doing REST Web Services with HTTP POST</h2>
+
+<p>Axis2 server, if REST is enabled, will act as both a REST endpoint and a SOAP endpoint. When a message is received, if the content type is text/xml and if the SOAPAction Header
+is missing, then the message is treated as a RESTful Message, if not it is
+treated as a usual SOAP Message.</p>
+
+<p>On sending a message, the fact that the message is RESTful or not, can
+be decided from the client API.<br>
+Set a property in the client api.<br>
+</p>
+<pre>...
+Options options = new Options();
+options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);
+...</pre>
+
+<a name="sample"></a>
+<h3>Sample REST - HTTP POST Client</h3>
+
+<p>There is an example named, userguide.clients.RESTClient.java which
+demonstrates the usage of the above, using the "echo"operation of the</p>
+<pre>userguide.example1.MyService </pre>
+
+<p>of the samples.The class source will be as follows:</p>
+<source><pre>public class RESTClient {
+
+    private static String toEpr = "http://localhost:8080/axis2/services/MyService";
+    
+    public static void main(String[] args) throws AxisFault {
+
+        Options options = new Options();
+        options.setTo(new EndpointReference(toEpr));
+        
+        options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);
+
+        ServiceClient sender = new ServiceClient();
+        sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
+        sender.setOptions(options);
+        OMElement result = sender.sendReceive(getPayload());
+
+        try {
+            XMLStreamWriter writer = XMLOutputFactory.newInstance()
+                    .createXMLStreamWriter(System.out);
+            result.serialize(writer);
+            writer.flush();
+        } catch (XMLStreamException e) {
+            e.printStackTrace();
+        } catch (FactoryConfigurationError e) {
+            e.printStackTrace();
+        }
+    }
+    private static OMElement getPayload() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://example1.org/example1", "example1");
+        OMElement method = fac.createOMElement("echo", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createOMText(value, "Axis2 Echo String "));
+        method.addChild(value);
+
+        return method;
+    }
+}</pre>
+</source>
+
+<a name="rest_with_get"></a>
+<h2>Access a REST Web Service via HTTP GET</h2>
+
+<p>Axis2 allows users to access Web services that have simple type parameters
+via HTTP GET. For example, the following URL requests the Version Service via
+HTTP GET. But the Web service arriving via GET assumes REST. Other parameters
+are converted into XML and put into the SOAP Body.</p>
+<source><pre>http://127.0.0.1:8080/axis2/rest/version/getVersion</pre>
+</source>
+<p>Result can be shown in the browser as follows:</p>
+<img src="images/userguide/http-get-ws.jpg"/><br clear="all"/>
+
+<p>For example, the following request,</p>
+<source><pre>http://127.0.0.1:8080/axis2/rest/version/getVersion</pre>
+</source>will be converted to the following SOAP Message for processing by
+Axis2.<source>
+<pre> 
+   &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
+      &lt;soapenv:Body&gt;   
+          &lt;axis2:getVersion xmlns:axis2="http://ws.apache.org/goGetWithREST" /&gt;
+      &lt;/soapenv:Body&gt;
+   &lt;/soapenv:Envelope&gt;
+    </pre>
+</source>
+
+<h2>Resources</h2>
+
+<p>How I Explained REST to My Wife, By Ryan Tomayko- <a
+href="http://naeblis.cx/articles/2004/12/12/rest-to-my-wife">http://naeblis.cx/articles/2004/12/12/rest-to-my-wife</a></p>
+
+<p>Building Web Services the REST Way, By Roger L. Costello- <a
+href="http://www.xfront.com/REST-Web-Services.html">
+http://www.xfront.com/REST-Web-Services.html</a></p>
+
+<p>Resource-oriented vs. activity-oriented Web services, By James Snell- <a
+href="http://www-128.ibm.com/developerworks/webservices/library/ws-restvsoap/">http://www-128.ibm.com/developerworks/webservices/library/ws-restvsoap/</a></p>
+
+</body>
+
+</html>
diff --git a/rampart_1_1/xdocs/1_1/soapmonitor-module.html b/rampart_1_1/xdocs/1_1/soapmonitor-module.html
new file mode 100644
index 0000000..7e50bc4
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/soapmonitor-module.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>The SOAP Monitor Module</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+<body>
+
+<h1>Using the SOAP Monitor</h1>
+
+<p>Web service developers often have the need to see the SOAP messages being
+used to invoke Web services along with the results of those messages. The
+goal of the SOAP Monitor utility is to provide a way for these developers to
+monitor the SOAP messages being used without requiring any special
+configuration or restarting of the server.</p>
+
+<p>In this utility, a handler has been written and added to the global
+handler chain. As SOAP requests and responses are received, the SOAP message
+information is forwarded to a SOAP monitor service where it can be displayed
+using a Web browser interface. The SOAP message information is accessed by a
+Web browser by going to http://localhost:8080/axis2/SOAPMonitor (where 8080
+is the port number where the application server is running). The SOAP message
+information is displayed through a Web browser by using an applet that opens
+a socket connection to the SOAP monitor service. This applet requires a Java
+plug-in 1.3 or higher to be installed in your browser. If you do not have a
+correct plug-in, the browser should prompt you to install one. The port used
+by the SOAP monitor service to communicate with applets is configurable. Edit
+the web.xml file to change the port used by Axis2 Web application.</p>
+
+<p>The SOAP Monitor module (soapmonitor.mar) is available in the axis2.war
+but it is not engaged by default. The SOAP Monitor is NOT enabled by default
+for security reasons.</p>
+
+<p>The SOAP Monitor can be engaged by inserting the following in the
+axis2.xml file.</p>
+<source><pre>   &lt;module ref="soapmonitor"/&gt;</pre>
+</source>
+<p>Then in the axis2.xml file define your phase orders for 'soapmonitorPhase'
+referenced in the module.xml of soapmonitor.mars. Below is an example which
+should NOT be copied exactly, since the default phases change occasionally.
+The important point here is that 'soapmonitorPhase' should be placed under
+the 'user can add his own phases to this area' comment in the 'inflow',
+'outflow', 'INfaultflow', and 'Outfaultflow' sections.</p>
+<pre>    &lt;phaseOrder type="inflow"&gt;
+        &lt;!--System pre defined phases--&gt;
+        &lt;phase name="TransportIn"/&gt;
+        &lt;phase name="PreDispatch"/&gt;
+        &lt;phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"&gt;
+            &lt;handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.engine.AddressingBasedDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+            &lt;handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.engine.RequestURIBasedDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+            &lt;handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+            &lt;handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"&gt;
+                &lt;order phase="Dispatch"/&gt;
+            &lt;/handler&gt;
+            &lt;handler name="InstanceDispatcher"
+                     class="org.apache.axis2.engine.InstanceDispatcher"&gt;
+                &lt;order phase="PostDispatch"/&gt;
+            &lt;/handler&gt;
+        &lt;/phase&gt;
+        &lt;!--System pre defined phases--&gt;
+        &lt;!--After Postdispatch phase module author or or service author can add any phase he want--&gt;
+        &lt;phase name="userphase1"/&gt;
+        &lt;phase name="soapmonitorPhase"/&gt;
+    &lt;/phaseOrder&gt;
+    &lt;phaseOrder type="outflow"&gt;
+        &lt;!--user can add his own phases to this area--&gt;
+        &lt;phase name="userphase1"/&gt;
+        &lt;phase name="soapmonitorPhase"/&gt;
+        &lt;!--system predefined phase--&gt;
+        &lt;!--these phase will run irrespective of the service--&gt;
+        &lt;phase name="PolicyDetermination"/&gt;
+        &lt;phase name="MessageOut"/&gt;
+    &lt;/phaseOrder&gt;
+    &lt;phaseOrder type="INfaultflow"&gt;
+        &lt;!--user can add his own phases to this area--&gt;
+        &lt;phase name="userphase1"/&gt;
+        &lt;phase name="soapmonitorPhase"/&gt;
+    &lt;/phaseOrder&gt;
+    &lt;phaseOrder type="Outfaultflow"&gt;
+        &lt;!--user can add his own phases to this area--&gt;
+        &lt;phase name="userphase1"/&gt;
+        &lt;phase name="soapmonitorPhase"/&gt;
+        &lt;phase name="PolicyDetermination"/&gt;
+        &lt;phase name="MessageOut"/&gt;
+    &lt;/phaseOrder&gt;</pre>
+
+<p>To configure the servlet to communicate with the applet, add the following
+to web.xml (the SOAPMonitorPort is configurable): </p>
+<pre>    &lt;servlet&gt;
+       &lt;servlet-name&gt;SOAPMonitorService&lt;/servlet-name&gt;
+       &lt;display-name&gt;SOAPMonitorService&lt;/display-name&gt;
+       &lt;servlet-class&gt;
+         org.apache.axis2.soapmonitor.servlet.SOAPMonitorService
+       &lt;/servlet-class&gt;
+       &lt;init-param&gt;
+          &lt;param-name&gt;SOAPMonitorPort&lt;/param-name&gt;
+          &lt;param-value&gt;5001&lt;/param-value&gt;
+       &lt;/init-param&gt;
+       &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+    &lt;/servlet&gt;
+
+    &lt;servlet-mapping&gt;
+        &lt;servlet-name&gt;SOAPMonitorService&lt;/servlet-name&gt;
+        &lt;url-pattern&gt;/SOAPMonitor&lt;/url-pattern&gt;
+    &lt;/servlet-mapping&gt;</pre>
+
+<p>Finally, compile the applet classes and place them at the root of the war
+- for example axis2/SOAPMonitorApplet*.class/WEB-INF :</p>
+<pre>javac -classpath axis2-soapmonitor.jar SOAPMonitorApplet.java</pre>
+
+<p>You can find the SOAPMonitorApplet.java in the source distribution. </p>
+
+<p>Alternatively, you can get the compiled applet classes from the
+axis2-soapmonitor-*.jar from inside the expanded axis2.war under WEB-INF/lib
+. Simply execute 'jar -xf axis2-soapmonitor-*.jar' and place the applet 
+classes as axis2/SOAPMonitorApplet*.class/WEB-INF.  </p>
+
+<p>Using a Web browser, go to http[s]://host[:port][/webapp]/SOAPMonitor
+(e.g.http://localhost:8080/axis2/SOAPMonitor) substituting the correct
+values for your Web application. This will show the SOAP Monitor applet for
+viewing service requests and responses. Any requests to services that have
+been configured and deployed correctly should show up in the applet.</p>
+
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/spring.html b/rampart_1_1/xdocs/1_1/spring.html
new file mode 100644
index 0000000..5e65184
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/spring.html
@@ -0,0 +1,472 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 integration with the Spring Framework</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1>Axis2 Integration With The Spring Framework</h1>
+
+<p>This document is a guide on how to use Axis2 with the Spring Framework</p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#1">Introduction</a></li>
+  <li><a href="#2">Configuring Axis2 to be Spring aware</a>
+    <ul>
+      <li><a href="#21">Programming Model</a></li>
+      <li><a href="#22">Simple Spring config example</a></li>
+      <li><a href="#23">With a ServletContext </a></li>
+      <li><a href="#24">Without a ServletContext</a></li>
+      <li><a href="#25">Putting it all together</a></li>
+      <li><a href="#26">Spring inside an AAR </a>
+        <ul>
+          <li><a href="#261">The Spring inside an AAR layout</a></li>
+          <li><a href="#262">The Spring inside an AAR init class</a></li>
+          <li><a href="#263">Known issues running Spring inside the AAR</a></li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+</ul>
+<a name="1"></a>
+
+<h2>Introduction</h2>
+
+<p>The idea behind Axis2 and Spring integration is that Axis2 simply needs to
+have Spring supply one of its pre-loaded beans to the Axis2 Message
+Receiver defined in the AAR services.xml . While Axis2 typically uses
+reflection to instantiate the ServiceClass defined in the services.xml that
+the Message Receiver will use, alternatively one can define a
+ServiceObjectSupplier that will supply the Object.</p>
+
+<p>This guide will show how to use two separate ServiceObjectSupplier classes
+that are part of the Axis2 standard distribution: One for use with a ServletContext, 
+and one without. Once configured, the web service itself acts like
+any other Spring wired bean. These Spring beans can be loaded any way desired, 
+as Axis2 has no configuration file dependencies from Spring. Spring 
+versions 1.2.6, 1.2.8 and 2.0 have been tested, but probably any version would 
+work as only core functionality is required.</p>
+
+<p>This guide assumes some basic knowledge of Axis2. See the <a
+href="userguide.html">User's Guide</a> for more information.</p>
+<a name="2"></a>
+
+<h2>Configuring Axis2 to be Spring Aware</h2>
+<a name="21"></a>
+
+<h3>Programming Model</h3>
+
+<p>From an Axis2 standpoint, two hooks are needed to be placed into the AAR
+services.xml: The ServiceObjectSupplier that hooks Axis2 and Spring together,
+and the name of Spring bean that Axis2 will use as the service. All Message
+Receivers are currently supported, as would be any Message Receiver that
+extends org.apache.axis2.receivers.AbstractMessageReceiver .</p>
+<a name="22"></a>
+
+<h3>Simple Spring Config Example</h3>
+
+<p>For the purpose of this example, and for no other reason besides
+simplicity, we'll configure Spring via a WAR file's web.xml. Lets add a
+context-param and a listener:</p>
+<pre>&lt;listener&gt;
+        &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;
+&lt;/listener&gt;
+&lt;context-param&gt;
+      &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
+      &lt;param-value&gt;/WEB-INF/applicationContext.xml&lt;/param-value&gt;
+    &lt;/context-param&gt;</pre>
+
+<p>Next we will show two examples of Spring's /WEB-INF/applicationContext.xml
+referenced in the web.xml listener -  one using a ServletContext, and one
+without.</p>
+<a name="23"></a>
+
+<h3>With a ServletContext</h3>
+
+<p>This 'with a ServletContext' example applicationContext.xml should be
+familiar to any Spring user:</p>
+<pre> &lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;
+
+&lt;beans&gt;
+  &lt;!-- Axis2 Web Service, but to Spring, its just another bean that has dependencies --&gt;
+  &lt;bean id="springAwareService" class="spring.SpringAwareService"&gt;
+    &lt;property name="myBean" ref="myBean"/&gt;
+  &lt;/bean&gt;
+
+  &lt;!-- just another bean / interface with a wired implementation, that's injected by Spring
+          into the Web Service --&gt;
+   &lt;bean id="myBean" class="spring.MyBeanImpl"&gt;
+     &lt;property name="val" value="Spring, emerge thyself" /&gt;
+  &lt;/bean&gt;
+&lt;/beans&gt;</pre>
+
+<p>If the service is running in a Servlet Container, i.e., Axis2 will be able
+to get a hold of ServletContext, the services.xml for the example would be
+using SpringServletContextObjectSupplier such as:</p>
+<pre> &lt;service name="SpringAwareService"&gt;
+    &lt;description&gt;
+        simple spring example
+    &lt;/description&gt;
+    &lt;parameter name="ServiceObjectSupplier" locked="false"&gt;org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier&lt;/parameter&gt;
+    &lt;parameter name="SpringBeanName" locked="false"&gt;springAwareService&lt;/parameter&gt;
+    &lt;operation name="getValue"&gt;
+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;
+    &lt;/operation&gt;
+&lt;/service&gt; </pre>
+
+<p>While the above example uses RawXMLINOutMessageReceiver as its
+messageReceiver class, all Message Receivers are currently supported, as
+would be any Message Receiver that extends
+org.apache.axis2.receivers.AbstractMessageReceiver .</p>
+<a name="24"></a>
+
+<h3>Without a ServletContext</h3>
+
+<p>In the case Axis2 can't get a ServletContext, ie another transport or running inside the AAR etc, 
+you have the option of defining a bean that takes advantage of Spring's internal abilities
+(ApplicationContextAware interface, specifically) to provide an Application
+Context to Axis2, with a bean ref 'applicationContext' :</p>
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;
+
+&lt;beans&gt;
+  &lt;!-- Configure spring to give a hook to axis2 without a ServletContext --&gt;
+  &lt;bean id="applicationContext" 
+    class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" /&gt;
+
+  &lt;!-- Axis2 Web Service, but to Spring, its just another bean that has dependencies --&gt;
+  &lt;bean id="springAwareService"
+        class="spring.SpringAwareService"&gt;
+    &lt;property name="myBean" ref="myBean" /&gt;
+  &lt;/bean&gt;
+
+  &lt;!-- just another bean with a wired implementation, that's injected by Spring 
+          into the Web Service --&gt;
+   &lt;bean id="myBean"
+        class="spring.MyBeanImpl"&gt;
+     &lt;property name="val" value="Spring, emerge thyself" /&gt;
+  &lt;/bean&gt;
+&lt;/beans&gt;</pre>
+
+<p>If the service is _NOT_ running in a Servlet Container, i.e., Axis2 will
+_NOT_ be able to get a hold of ServletContext or you prefer not to, the services.xml for the
+example would be using SpringAppContextAwareObjectSupplier such as:</p>
+<pre> &lt;service name="SpringAwareService"&gt;
+    &lt;description&gt;
+        simple spring example
+    &lt;/description&gt;
+    &lt;parameter name="ServiceObjectSupplier" locked="false"&gt;org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier&lt;/parameter&gt;
+    &lt;parameter name="SpringBeanName" locked="false"&gt;springAwareService&lt;/parameter&gt;
+    &lt;operation name="getValue"&gt;
+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;
+    &lt;/operation&gt;
+&lt;/service&gt; </pre>
+
+<p>While the above example uses RawXMLINOutMessageReceiver as its
+messageReceiver class, all Message Receivers are currently supported, as
+would be any Message Receiver that extends
+org.apache.axis2.receivers.AbstractMessageReceiver .</p>
+
+<p>In a 'without a ServletContext' environment, one way you could load the
+applicationContext.xml file is in a place that will be run once, upon
+start-up, execute:</p>
+<pre>import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+ public void createSpringAppCtx(ClassLoader cl)
+            throws Exception {
+
+    ClassPathXmlApplicationContext ctx = new
+      ClassPathXmlApplicationContext(new String[] {Constants.MY_PATH +
+      "spring/applicationContext.xml"}, false);
+           ctx.setClassLoader(cl);
+           ctx.refresh();</pre>
+} <a name="25"></a>
+
+<h3>Putting It All Together</h3>
+
+<p>From here, its just standard Axis2 coding, only now the service has Spring
+wiring capabilities. The implementation is the same whether using either
+SpringServletContextObjectSupplier or SpringAppContextAwareObjectSupplier.
+The service is below:</p>
+<pre>package spring;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+
+public class SpringAwareService {
+
+    private MyBean myBean = null;
+
+    //spring 'injects' this implementation
+    public void setMyBean(MyBean myBean) {
+            this.myBean = myBean;
+    }
+
+    // The web service
+    public OMElement getValue(OMElement ignore) {
+            OMFactory factory=
+                OMAbstractFactory.getOMFactory();
+            OMNamespace payloadNs= factory.createOMNamespace(
+                "http://springExample.org/example1", "example1");
+            OMElement payload =
+                factory.createOMElement("string", payloadNs);
+            OMText response = factory.createOMText(this.myBean.emerge());
+            payload.addChild(response);
+            return payload;
+    }
+} </pre>
+
+<p>For those new to Spring, one of the ideas is that you program to an
+Interface, and the implementation is pluggable. This idea is referenced in
+the Spring config file above. Below is the interface:</p>
+<pre>package spring;
+
+/** Interface for Spring aware Bean */
+public interface MyBean {
+         String emerge();
+}</pre>
+
+<p>Here's the implementation:</p>
+<pre>/** Spring wired implementation */
+public class MyBeanImpl implements MyBean {
+
+    String str = null;
+    // spring 'injects' this value
+    public void setVal(String s) {
+        str = s;
+    }
+    // web service gets this value
+    public String emerge() {
+        return str;
+    }
+}</pre>
+
+<p>Lastly here's the client - not really necessary for the example, other
+than for completeness:</p>
+<pre>package client;
+
+import java.io.StringWriter;
+
+import javax.xml.stream.XMLOutputFactory;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+
+public class TestClient {
+    private static EndpointReference targetEPR =
+        new EndpointReference(
+               "http://localhost:8080/axis2/services/SpringAwareService");
+
+    /**
+     * Simple axis2 client.
+     *
+     * @param args Main
+     */
+    public static void main(String[] args) {
+        try {
+            OMFactory factory = OMAbstractFactory.getOMFactory();
+            OMNamespace omNs = factory.createOMNamespace(
+                        "http://springExample.org/example1", "example1");
+
+            OMElement method = factory.createOMElement("getValue", omNs);
+            OMElement value = factory.createOMElement("Text", omNs);
+            value.addChild(factory.createOMText(value, "Some String "));
+            method.addChild(value);
+
+            ServiceClient serviceClient = new ServiceClient();
+
+            Options options = new Options();
+            serviceClient.setOptions(options);
+            options.setTo(targetEPR);
+
+            //Blocking invocation
+            OMElement result = serviceClient.sendReceive(method);
+
+            StringWriter writer = new StringWriter();
+            result.serialize(XMLOutputFactory.newInstance()
+                    .createXMLStreamWriter(writer));
+            writer.flush();
+
+            System.out.println("Response: " + writer.toString());
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+} </pre>
+
+<p>The examples above assumes that both the spring framework jar and the axis2-spring-*.jar 
+are under WEB-INF/lib. In such a case, the classes shown in this tutorial need to be placed 
+in a JAR under WEB-INF/lib. In this example the JAR layout is:</p>
+    <source><pre>./mySpring.jar
+./META-INF
+./META-INF/MANIFEST.MF
+./spring
+./spring/MyBean.class
+./spring/MyBeanImpl.class
+./spring/SpringAwareService.class
+</pre> </source>
+
+<p>Since all the user classes are in mySpring.jar in this example, the AAR merely contains the 
+services.xml file:</p>
+
+    <source>
+    <pre>./springExample.aar
+./META-INF
+./META-INF/MANIFEST.MF
+./META-INF/services.xml
+</pre> </source>
+
+<p>To run this example, make sure you have the axis2-spring*.jar that comes
+from the axis2-std-*-bin distro in the server side WEB-INF/lib, as well as
+the appropriate Spring jar - most will use the full spring.jar, but the
+minimum requirements are spring-core, spring-beans, spring-context and
+spring-web. Running the client, you should see this output:</p>
+<pre>Response: &lt;example1:string xmlns:example1="http://springExample.org/example1" 
+  xmlns:tns="http://ws.apache.org/axis2"&gt;Spring, emerge thyself&lt;/example1:string&gt;</pre>
+<a name="26"></a>
+
+<h3>Spring Inside an AAR</h3>
+
+<p>Frequently Axis2 users wish to run Spring inside the AAR. Here we show you
+how. There are four points to be aware of:</p>
+
+<p>(A) You need to configure Spring to use the Axis2 Service Classloader. See the 
+  <a href="#263">Known issues running Spring inside the AAR</a> area. </p>
+
+<p>(B) Its up to you to load Spring, though we give an example below.</p>
+
+<p>(C) For reasons such as classloader isolation the
+SpringAppContextAwareObjectSupplier is the best choice.</p>
+
+<p>(D) The springframework jar and axis2-spring-*.jar will be placed inside
+the AAR under the lib directory. Please MOVE the axis2-spring-*.jar from WEB-INF/lib to inside 
+the AAR, as shown below - it will NOT work otherwise. </p>
+<ul>
+  <li><strong><a name="261"></a>The Spring inside an AAR layout</strong>
+</ul>
+    <source>
+    <pre>./springExample.aar
+./META-INF
+./META-INF/MANIFEST.MF
+./META-INF/services.xml
+./applicationContext.xml
+./lib
+./lib/axis2-spring-SNAPSHOT.jar
+./lib/spring.jar
+./spring
+./spring/MyBean.class
+./spring/MyBeanImpl.class
+./spring/SpringAwareService.class
+./spring/SpringInit.class </pre> </source>
+
+<p>As explained in the <a href="#24">Without a ServletContext</a> section, likewise the
+'Spring inside an AAR' config needs to hook Axis2 and Spring together via a Spring bean. 
+Place the following in your Spring config file:</p>
+<pre>
+  &lt;!-- Configure spring to give a hook to axis2 without a ServletContext --&gt;
+  &lt;bean id="applicationContext" 
+    class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" /&gt;
+</pre>
+<ul>
+  <li><strong><a name="262"></a>The Spring inside an AAR init class</strong></li>
+</ul>
+<p>One way to initialize Spring inside the AAR is to use the 
+org.apache.axis2.engine.ServiceLifeCycle interface. Here we give an example:</p>
+    <source><pre>package spring;
+
+import org.apache.axis2.engine.ServiceLifeCycle;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisService;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SpringInit implements ServiceLifeCycle {
+	
+    /**
+     * This will be called during the deployement time of the service. 
+     * irrespective
+     * of the service scope this method will be called
+     */
+    public void startUp(ConfigurationContext ignore, AxisService service) {
+ 
+        try {
+            System.out.println("Starting spring init");
+            ClassLoader classLoader = service.getClassLoader();
+            ClassPathXmlApplicationContext appCtx = new
+            ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"}, false);
+                appCtx.setClassLoader(classLoader);
+                appCtx.refresh();
+            System.out.println("spring loaded");
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    /**
+     * This will be called during the system shut down time. 
+     * irrespective
+     * of the service scope this method will be called
+     */
+    public void shutDown(ConfigurationContext ctxIgnore, AxisService ignore) {
+    }
+}</pre>
+    </source>
+    <p>Here's the services.xml that now includes SpringInit and the SpringAwareService 
+    shown above. There is also the composite parameter which is needed when loading 
+    Spring in the AAR - see the <a href="#263">Known issues running Spring inside the AAR</a>
+    area. </p>
+    <source><pre>&lt;serviceGroup&gt;
+  &lt;!-- Invoke SpringInit on server startup and shutdown --&gt;
+  &lt;service name="SpringAwareService" class="spring.SpringInit"&gt;
+    &lt;description&gt;
+         simple spring example - inside the AAR
+    &lt;/description&gt;
+    &lt;!-- need the TCCL param when using spring inside the AAR --&gt;
+    &lt;parameter name="ServiceTCCL" locked="false"&gt;composite&lt;/parameter&gt;
+    &lt;parameter name="ServiceObjectSupplier" locked="false"&gt;org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier&lt;/parameter&gt;
+    &lt;parameter name="SpringBeanName" locked="false"&gt;springAwareService&lt;/parameter&gt;
+    &lt;operation name="getValue"&gt;
+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;
+    &lt;/operation&gt;
+  &lt;/service&gt;
+&lt;/serviceGroup&gt;</pre>
+</source>
+<ul>
+  <li>
+    <strong><a name="263"></a>Known issues running Spring inside the AAR</strong>
+  </li>
+</ul>
+    <p>The Axis2 classloader strategy by default does not permit Spring to run inside the AAR. To 
+    allow Spring to run inside the AAR, the 'composite' parameter is used in the services.xml as 
+    shown in the example above. The behavior of 'composite' was the default in the development 
+    cycle in between 1.0 and 1.1, but it resulted in the JIRA issue AXIS2-1214 - essentially 
+    problems with getting an initContext.lookup() handle inside the AAR. Spring users typically 
+    have little desire to use initContext.lookup() however, as they get their Datasources via 
+    org.springframework.jdbc.datasource.DriverManagerDataSource in an xml file or with annotations. 
+    For ejb home references and the like, Spring provides JndiObjectFactoryBean. While fully testing 
+    JndiObjectFactoryBean with ejb has not been done yet - if you do, please send a message 
+    to the axis users list - Datasources via Spring inside the AAR have been tested. Basically 
+    it works as typically done with Spring, though if you are passing Hibernate XML files you need 
+    to put them in a place where Spring will find them. The most flexible way is as follows, using 
+    logging in DEBUG mode to see where Spring will look in your jar / class locations: </p>
+    <source><pre>
+    &lt;bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt;
+                &lt;property name="mappingLocations"&gt;
+                   &lt;value&gt;classpath*:**/MyEntity.hbm.xml&lt;/value&gt;
+                &lt;/property&gt;
+                ...
+    &lt;/bean&gt; 
+</pre> </source>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/src/Axis2SampleDocLitServiceCode.html b/rampart_1_1/xdocs/1_1/src/Axis2SampleDocLitServiceCode.html
new file mode 100644
index 0000000..767d91b
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/src/Axis2SampleDocLitServiceCode.html
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title></title>

+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Code Listing For Axis2SampleDocLitService Service</h1>

+

+<h2>Server:</h2>

+

+<h3>echoString</h3>

+

+<p>Locate the following code segment in "Axis2SampleDocLitServiceSkeleton.java".<br>

+</p>

+<source><pre>public org.apache.axis2.userguide.xsd.EchoStringReturnDocument 

+        echoString(org.apache.axis2.userguide.xsd.EchoStringParamDocument param4 ){

+        //Todo: fill this with the necessary business logic

+        throw new  java.lang.UnsupportedOperationException();

+   }

+</pre></source>

+

+<p>Then complete the code by adding the business logic as shown below:</p>

+<source>

+<pre>public org.apache.axis2.userguide.xsd.EchoStringReturnDocument 

+       echoString(org.apache.axis2.userguide.xsd.EchoStringParamDocument param4) throws Exception {

+       //Use the factory to create the output document

+       org.apache.axis2.userguide.xsd.EchoStringReturnDocument retDoc = 

+           org.apache.axis2.userguide.xsd.EchoStringReturnDocument.Factory.newInstance();

+      //send the string back.

+      retDoc.setEchoStringReturn(param4.getEchoStringParam());

+      return retDoc;

+  }</pre>

+</source>

+

+<h3>echoStringArray</h3>

+

+<p>The code segment for echoStringArray is shown below:</p>

+<source>

+<pre>public org.apache.axis2.userguide.xsd.EchoStringArrayReturnDocument 

+      echoStringArray(org.apache.axis2.userguide.xsd.EchoStringArrayParamDocument param0) throws Exception {

+      //Use the factory to create the output document.

+     org.apache.axis2.userguide.xsd.EchoStringArrayReturnDocument retDoc = 

+     org.apache.axis2.userguide.xsd.EchoStringArrayReturnDocument.Factory.newInstance();

+     //Get the String array from the input parameters.

+     String[] inParams = param0.getEchoStringArrayParam().getStringArray();

+     org.apache.axis2.userguide.xsd.ArrayOfstringLiteral retParams =

+            org.apache.axis2.userguide.xsd.ArrayOfstringLiteral.Factory.newInstance();

+     //Set the input parameters to the output parameters for echoing.

+     for (int i = 0; i &lt; inParams.length; i++) {

+         retParams.addString(inParams[i]);<br>     }

+     //return the output document.

+    retDoc.setEchoStringArrayReturn(retParams);

+    return retDoc;

+   }</pre>

+</source>

+

+<h3>echoStruct</h3>

+

+<p>The code segment for echoStruct is shown below:</p>

+<source><pre>

+  public org.apache.axis2.userguide.xsd.EchoStructReturnDocument 

+        echoStruct(org.apache.axis2.userguide.xsd.EchoStructParamDocument param2) throws Exception {

+        //Use the factory to create the output document.

+        org.apache.axis2.userguide.xsd.EchoStructReturnDocument retDoc =

+        org.apache.axis2.userguide.xsd.EchoStructReturnDocument.Factory.newInstance();

+        //Get the SOAPStrcut from the incoming parameters

+        org.apache.axis2.userguide.xsd.SOAPStruct inStruct = param2.getEchoStructParam();

+        //Struct for the sending back

+        org.apache.axis2.userguide.xsd.SOAPStruct outStruct =

+                org.apache.axis2.userguide.xsd.SOAPStruct.Factory.newInstance();

+        //Fill the outgoing struct

+        outStruct.setVarFloat(inStruct.getVarFloat());

+        outStruct.setVarInt(inStruct.getVarInt());

+        outStruct.setVarString(inStruct.getVarString());

+        //Set the outgoing document.

+        retDoc.setEchoStructReturn(outStruct);

+        return retDoc;

+    }

+</pre></source>

+

+<h2>Client:</h2>

+

+<h3>Client for echoString Operation</h3>

+

+<p>The following code fragment shows the necessary code for utilizing the

+echoString operation of the Axis2SampleDocLitService that we have already

+deployed. The code is very simple to understand and the explanations are in

+the form of comments.</p>

+<source><pre>     try {

+                      org.apache.axis2.userguide.Axis2SampleDocLitServiceStub stub 

+                        = new org.apache.axis2.userguide.Axis2SampleDocLitServiceStub(null,

+                           "http://localhost:8080/axis2/services/Axis2SampleDocLitService");

+                      //Create the request document to be sent.

+                      org.apache.axis2.userguide.xsd.EchoStringParamDocument reqDoc =

+                          org.apache.axis2.userguide.xsd.EchoStringParamDocument.Factory.newInstance();

+                      reqDoc.setEchoStringParam("Axis2 Echo");

+                      //invokes the Web service.

+                      org.apache.axis2.userguide.xsd.EchoStringReturnDocument resDoc = 

+                                        stub.echoString(reqDoc);

+                      System.out.println(resDoc.getEchoStringReturn());

+                      } catch (java.rmi.RemoteException e) {

+                       e.printStackTrace();

+                      }

+</pre></source>

+

+<p>Similarly the following code fragments show client side code for

+echoStringArray operation and echoStruct operation respectively.</p>

+

+<h3>Client for echoStringArray Operation</h3>

+<source><pre>      try {

+                       //Create the stub by passing the AXIS_HOME and target EPR.

+                       //We pass null to the AXIS_HOME and hence the stub will use the current directory as the AXIS_HOME

+                       org.apache.axis2.userguide.Axis2SampleDocLitServiceStub stub = 

+                                    new org.apache.axis2.userguide.Axis2SampleDocLitServiceStub(null,

+                                    "http://localhost:8080/axis2/services/Axis2SampleDocLitService");

+                       //Create the request document to be sent.

+                       org.apache.axis2.userguide.xsd.EchoStringArrayParamDocument reqDoc = 

+                          org.apache.axis2.userguide.xsd.EchoStringArrayParamDocument.Factory.newInstance();

+                      org.apache.axis2.userguide.xsd.ArrayOfstringLiteral paramArray = 

+                           org.apache.axis2.userguide.xsd.ArrayOfstringLiteral.Factory.newInstance();

+                      paramArray.addString("Axis2");

+                      paramArray.addString("Echo");

+                      reqDoc.setEchoStringArrayParam(paramArray);

+                      org.apache.axis2.userguide.xsd.EchoStringArrayReturnDocument resDoc = 

+                      stub.echoStringArray(reqDoc); 

+                      //Get the response params

+                      String[] resParams = resDoc.getEchoStringArrayReturn().getStringArray();

+                      for (int i = 0; i &lt; resParams.length; i++) {

+                          System.out.println(resParams[i]);

+                      }

+                    } catch (java.rmi.RemoteException e) {

+                       e.printStackTrace(); 

+                    }

+               </pre>

+    </source>

+

+<h3>Client for echoStruct Operation</h3>

+<source><pre>try {

+                //Create the stub by passing the AXIS_HOME and target EPR.

+                //We pass null to the AXIS_HOME and hence the stub will use the current directory as the AXIS_HOME

+                org.apache.axis2.userguide.Axis2SampleDocLitServiceStub stub =

+                        new org.apache.axis2.userguide.Axis2SampleDocLitServiceStub(null,

+                        "http://localhost:8080/axis2/services/Axis2SampleDocLitService");

+                          //Create the request Document

+                        org.apache.axis2.userguide.xsd.EchoStructParamDocument reqDoc =

+                          org.apache.axis2.userguide.xsd.EchoStructParamDocument.Factory.newInstance();

+                         //Create the complex type

+                        org.apache.axis2.userguide.xsd.SOAPStruct reqStruct =

+                        org.apache.axis2.userguide.xsd.SOAPStruct.Factory.newInstance();

+                        reqStruct.setVarFloat(100.50F);

+                        reqStruct.setVarInt(10);

+                        reqStruct.setVarString("High");

+                        reqDoc.setEchoStructParam(reqStruct);

+                        //Service invocation

+                        org.apache.axis2.userguide.xsd.EchoStructReturnDocument resDoc = 

+                         stub.echoStruct(reqDoc);

+                       org.apache.axis2.userguide.xsd.SOAPStruct resStruct = 

+                          resDoc.getEchoStructReturn();

+                       System.out.println("floot Value :" + resStruct.getVarFloat());

+                       System.out.println("int Value :" + resStruct.getVarInt());

+                       System.out.println("String Value :" + resStruct.getVarString());

+                     } catch (java.rmi.RemoteException e) {

+                        e.printStackTrace();

+                    }

+</pre></source>

+

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/tcp-transport.html b/rampart_1_1/xdocs/1_1/tcp-transport.html
new file mode 100644
index 0000000..fc6a9ba
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/tcp-transport.html
@@ -0,0 +1,127 @@
+<html>

+

+<head>

+  <title>TCP transport</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>TCP Transport</h1>

+

+This document will explain how to send and receive SOAP Messages via TCP in

+Axis2. 

+

+<p><i>Send your feedback or questions to: <a

+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix

+subject with [Axis2]. To subscribe to mailing list see <a

+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#intro">Introduction</a></li>

+  <li><a href="#start">How to Start the TCPServer</a></li>

+  <li><a href="#send">How to Send SOAP Messages Using TCP Transport</a></li>

+  <li><a href="#samples">Samples</a></li>

+  <li><a href="#components">Transport Components</a></li>

+</ul>

+

+<a name="intro"></a>

+<h2>Introduction</h2>

+

+<p>Axis2 supports TCP as a transport. It has support for both send and receive SOAP 

+Messages via TCP. TCP transport does not have any application

+level headers and the SOAP Message that is sent should be self contained.

+This makes the interaction fast and simple. However, since there are no

+application headers, it does not have the privilege of having request URI,

+and Service dispatching should be done by an alternative method. Thus,

+RequestURIBasedDispatcher can not be used. The following are the two main

+alternatives available for dispatching in the Axis2 environment:</p>

+<ol>

+  <li>Use the name space URI of the first child element of SOAPBody.

+    (SOAPMessageBodyBasedDispatcher).</li>

+  <li>Enable WS-Addressing. In the case of version 1.1 release Addressing is

+    default (SOAPActionBasedDispatcher).</li>

+</ol>

+

+<p>When the TCP request is sent it is the user's responsibility to use either

+Addressing or SOAP body base mechanism.</p>

+

+<a name="start"></a>

+<h2>How to Start the TCPServer</h2>

+

+<p>The TCP server can be started by running the class

+org.apache.axis2.transport.tcp.TCPServer with two parameters - <a

+href="../faq.html#c5">repository</a> and port number, as arguments. This

+class needs all the Axis dependency jars in the classpath. New services can

+be added in the usual way by dropping the archives to the repository (See <a

+href="userguide.html">User's Guide</a> for more information)</p>

+

+<!--<p>Alternatively the TCP Server can run with tcp-server.bat/ tcp-server.sh

+file in the bin directory of the Binary distribution of TCP Server.</p>-->

+<a name="send"></a>

+<h2>How to Send SOAP Messages Using TCP Transport</h2>

+

+<p>TCP transport can be enabled easily from the call API. The following code

+segment demonstrates how it can be done.</p>

+<source><pre>

+OMElement payload = ...

+ServiceClient serviceClient = new ServiceClient();

+Options options = new Options();

+options.setTo(targetEPR);

+<!--options.useSeperateListener(false);-->

+<!--commented off as their is an error--- "The method useSeperateListener(boolean)is undefined for the type Options">

+serviceClient.setOptions(options);

+

+OMElement response =

+        serviceClient.sendReceive(payload);

+</pre>

+</source>

+<p>The transport that should be invoked is inferred from the targetEPR

+(tcp://...). In this case it is TCP and the listener, also TCP . SOAP Message

+has to be self contained in order to use Addressing. The other option is to

+use the URI of the first child of the SOAP Body to dispatch the service. The

+Parameter is of the type <a href="../faq.html#a2">OMElement</a>, the XML

+representation of Axis2.</p>

+

+<a name="samples"></a>

+<h2>Samples</h2>

+

+<p>Sample for a TCP Client can be found from the

+samples/userguide/src/userguide/clients/TCPClient.java in the binary

+distribution. This accesses the same Web service explained in the <a

+href="userguide.html">Axis2 User's Guide</a>. The client first starts the

+TCPServer with the same repository used for the <a

+href="userguide.html">Axis2 User's Guide</a> samples. Since sample is already

+deployed in the repository while trying the userguide it will be

+automatically available.</p>

+

+<p>In order to run the TCPClient.java, addressing should be engaged both in the 

+client and server sides. In client side, you can engage addressing by copying 

+the addressing-1.1.mar (AXIS2_HOME/repository/module) to AXIS2_HOME/lib directory.</p>

+

+<a name="components"></a>

+<h2>Transport Components</h2>

+

+<p>Axis2 TCP transport has two components, a transport Listener for receiving

+the Messages and transport Sender to send the SOAP Messages. Axis2

+installation has both the components built in to itself by default. In the

+axis2.xml configuration file the two TCP transport components would look as

+follows.</p>

+

+<p>If the TCP server is started manually this configuration does not take

+effect. In return this effects the transport Listener's start by Axis2. (e.g.

+Listener started by the Complete Async interaction)</p>

+

+<p>The following xml lines initializes the TCPTransport Receiver:</p>

+<source><pre>

+&lt;transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer"&gt;

+    &lt;parameter name="port" locked="false"&gt;6060&lt;/parameter&gt;

+&lt;/transportReceiver&gt;</pre>

+</source>

+<p>The following xml lines adds the TCPTransport Sender:</p>

+<source><pre>&lt;transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/&gt;</pre>

+</source>

+

+</body>

+

+</html>

diff --git a/rampart_1_1/xdocs/1_1/toc.html b/rampart_1_1/xdocs/1_1/toc.html
new file mode 100644
index 0000000..4821f46
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/toc.html
@@ -0,0 +1,246 @@
+<html>

+<head>

+<link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en-US" dir="ltr">

+<h1>Table of Contents</h1>

+

+<table width="100%">

+<tr>

+<td width="20">1.</td>

+<td><a href="contents.html" target="mainFrame">Introduction</a></td>

+</tr>

+

+<tr>

+<td width="20">2.</td>

+<td><a href="installationguide.html" target="mainFrame">Installation Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">3.</td>

+<td><a href="../modules/index.html" target="mainFrame">Addon Modules</a></td>

+</tr>

+<tr>

+<td width="20">4.</td>

+<td><a href="app_server.html" target="mainFrame">Application Server Specific Configuration Guide</a></td>

+</tr>

+<tr>

+<td width="20">5.</td>

+<td><a href="quickstartguide.html" target="mainFrame">QuickStart Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">6.</td>

+<td><a href="userguide.html" target="mainFrame">User Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">7.</td>

+<td><a href="axis2config.html" target="mainFrame">Configuration Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">8.</td>

+<td><a href="Axis2ArchitectureGuide.html" target="mainFrame">Architecture Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">9.</td>

+<td><a href="pojoguide.html" target="mainFrame">POJO Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">10.</td>

+<td><a href="spring.html" target="mainFrame">Spring Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">11.</td>

+<td><a href="modules.html" target="mainFrame">Modules Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">12.</td>

+<td>ADB Data Binding

+<table width="100%">
+  <tr>

+  <td width="20">12.1</td>

+  <td><a href="adb/adb-howto.html" target="mainFrame">Architecture</a></td>

+  </tr>

+  <tr>

+  <td width="20">12.2</td>

+  <td><a href="adb/adb-advanced.html" target="mainFrame">Advanced Features</a></td>

+  </tr>

+  <tr>

+  <td width="20">12.3</td>

+  <td><a href="adb/adb-codegen-integration.html" target="mainFrame">Code generation integration</a></td>

+  </tr>

+  <tr>

+  <td width="20">12.4</td>

+  <td><a href="adb/adb-tweaking.html" target="mainFrame">Tweaking</a></td>

+  </tr>

+</td>

+</tr>

+</table>

+</tr>

+

+<tr>

+<td width="20">13.</td>

+<td>JiBX Data binding

+<table width="100%">

+  <tr>

+  <td width="20">13.1</td>

+  <td><a href="jibx/jibx-codegen-integration.html" target="mainFrame">Code generation integration</a></td>

+  </tr>

+  <tr>

+  <td width="20">13.2</td>

+  <td><a href="jibx/jibx-doclit-example.html" target="mainFrame">doc/lit example</a></td>

+  </tr>

+  <tr>

+  <td width="20">13.2</td>

+  <td><a href="jibx/jibx-unwrapped-example.html" target="mainFrame">unwrapped example</a></td>

+  </tr>

+</td>

+</tr>

+</table>

+</tr>

+

+<tr>

+<td width="20">14.</td>

+<td>Advanced

+<table width="100%">

+  <tr>

+  <td width="20">14.1</td>

+  <td><a href="xmlbased-server.html" target="mainFrame">AXIOM based Service</a></td>

+  </tr>

+  <tr>

+  <td width="20">14.2</td>

+  <td><a href="dii.html" target="mainFrame">AXIOM based Client</a></td>

+  </tr>

+</td>

+</tr>

+</table>

+</tr>

+

+<tr>

+<td width="20">15.</td>

+<td><a href="mtom-guide.html" target="mainFrame">Attachments/MTOM Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">16.</td>

+<td>Transports

+<table width="100%">

+  <tr>

+  <td width="20">16.1</td>

+  <td><a href="http-transport.html" target="mainFrame">HTTP Transport</a></td>

+  </tr>

+  <tr>

+  <td width="20">16.2</td>

+  <td><a href="jms-transport.html" target="mainFrame">JMS Transport</a></td>

+  </tr>

+  <tr>

+  <td width="20">16.3</td>

+  <td><a href="tcp-transport.html" target="mainFrame">TCP Transport</a></td>

+  </tr>

+  <tr>

+  <td width="20">16.4</td>

+  <td><a href="mail-transport.html" target="mainFrame">Mail Transport</a> / <a href="mail-configuration.html" target="mainFrame">(Configuration)</a> </td>

+  </tr>

+  <tr>

+  <td width="20">16.5</td>

+  <td><a href="transport_howto.html" target="mainFrame">Custom Transport</a></td>

+  </tr>

+</td>

+</tr>

+</table>

+

+<tr>

+<td width="20">17.</td>

+<td><a href="WS_policy.html" target="mainFrame">WS-Policy Support</a></td>

+</tr>

+

+<tr>

+<td width="20">18.</td>

+<td><a href="rest-ws.html" target="mainFrame">REST Support</a></td>

+</tr>

+

+<tr>

+<td width="20">19.</td>

+<td><a href="webadminguide.html" target="mainFrame">Web Administrator's Guide</a></td>

+</tr>

+

+<tr>

+<td width="20">20.</td>

+<td><a href="soapmonitor-module.html" target="mainFrame">SOAP Monitor</a></td>

+</tr>

+

+<tr>

+<td width="20">21.</td>

+<td><a href="reference.html" target="mainFrame">Command line tools</a></td>

+</tr>

+

+<tr>

+<td width="20">22.</td>

+<td><a href="../tools/index.html" target="mainFrame">Tools/Plugins</a>

+<table width="100%">

+  <tr>

+  <td width="20">22.1</td>

+  <td><a href="../tools/1_1/CodegenToolReference.html" target="mainFrame">Code Generator Tool - Command Line and Ant Task</a></td>

+  </tr>

+  <tr>

+  <td width="20">22.2</td>

+  <td><a href="../tools/1_1/idea/Idea_plug-in_userguide.html" target="mainFrame">Axis2 plugin for IntelliJ IDEA</a></td>

+  </tr>

+  <tr>

+  <td width="20">22.3</td>

+  <td><a href="../tools/1_1/eclipse/servicearchiver-plugin.html" target="mainFrame">Service Archive Generator Wizard - Eclipse Plug-in</a></td>

+  </tr>

+  <tr>

+  <td width="20">22.4</td>

+  <td><a href="../tools/1_1/eclipse/wsdl2java-plugin.html" target="mainFrame">Code Generator Wizard - Eclipse Plug-in</a></td>

+  </tr>

+  <tr>

+  <td width="20">22.5</td>

+  <td><a href="../tools/1_1/maven-plugins/maven-aar-plugin.html" target="mainFrame">AAR Maven2 Plug-in</a></td>

+  </tr>

+  <tr>

+  <td width="20">22.6</td>

+  <td><a href="../tools/1_1/maven-plugins/maven-java2wsdl-plugin.html" target="mainFrame">Java2WSDL Maven2 Plug-in</a></td>

+  </tr>

+  <tr>

+  <td width="20">22.7</td>

+  <td><a href="../tools/1_1/maven-plugins/maven-wsdl2code-plugin.html" target="mainFrame">WSDL2Code Maven2 Plug-in</a></td>

+  </tr>

+  <tr>

+  <td width="20">22.8</td>

+  <td><a href="../tools/previous.html" target="mainFrame">Tools Archive</a></td>

+  </tr>

+</td>

+</tr>

+</table>

+</tr>

+

+<tr>

+<td width="20">23.</td>

+<td><a href="migration.html" target="mainFrame">Migration Guide (from Axis1)</a></td>

+</tr>

+

+<tr>

+<td width="20">24.</td>

+<td>Design Notes

+<table width="100%">

+  <tr>

+  <td width="20">24.1</td>

+  <td><a href="Axis2-rpc-support.html" target="mainFrame">RPC Support</a></td>

+  </tr>

+</td>

+</tr>

+</table>

+</tr>

+

+

+</table>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/transport_howto.html b/rampart_1_1/xdocs/1_1/transport_howto.html
new file mode 100644
index 0000000..dc92e7d
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/transport_howto.html
@@ -0,0 +1,228 @@
+

+<html>

+

+<head>

+  <title></title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body>

+

+<h1>How To Write Your Own Axis2 Transport</h1>

+

+<h2>Prologue</h2>

+

+<p>To stop you from reinventing the wheel, before we get started, I will

+quickly list the transports that are already supported in Axis2 with a small

+description. </p>

+

+<p></p>

+<ul>

+  <li><b>HTTP</b> - In the HTTP transport, the transport Listener is a

+    Servlet or a Simple HTTP server provided by Axis2. The transport Sender

+    uses sockets to connect and send the SOAP Message. Currently we have the

+    commons-httpclient based HTTP Transport sender as the default

+  transport.</li>

+  <li><b>TCP</b> - This is the most simple transport, but needs Addressing

+    support to be functional.</li>

+  <li><b>SMTP</b> - This can work off a single email account or a mail server.

+    The Mail Transport Receiver is a thread that checks for emails in fixed

+    time intervals.</li>

+</ul>

+

+<p>To understand the rest of this document you will need some understanding

+of the architecture of Axis2. If you are not familiar with the Axis2

+architecture, please go through the <a

+href="Axis2ArchitectureGuide.html">Axis2 Architecture Guide</a> before you

+read any further.</p>

+

+<h2>Introduction</h2>

+

+<p>Broadly speaking, a transport inside Axis2 can be classified as a way of

+getting messages that arrive though some channel into the Axis2 engine. The

+core of Axis2 is transport independent. All data that is transport specific

+is striped out of the incoming message and inserted into the MessageContext.

+On the outgoing message, all transport specific information like headers are

+added and sent.</p>

+

+<p>To write your own transport you will need to primarily write two classes,

+one is the TransportSender and the other is the TransportReceiver. To

+register a transport with Axis2 you will need to put two entries in the

+axis2.xml file. One for the transport receiver and the other for the

+transport sender. I will take you through the process of adding the entries

+in relevent sections.</p>

+

+<h2>Transport Receiver</h2>

+

+<p>Any message that is coming into Axis2 needs to go through a transport

+receiver. All information about how the message is received at the Axis2

+server from the wire [or by snail mail for that matter :)] is isolated inside

+the transport receiver. It extracts the data that is coming on the wire and

+transforms it into a state that the Axis2 server understands.</p>

+

+<p>So now that we have some background information about how transports work

+inside Axis2, without further delay lets dive into some coding and start

+building out own transport.</p>

+

+<p></p>

+

+<p>To get things stared you will first need to extend from the

+org.apache.Axis2.transport.TransportListener class and write you own

+transport listener. To create an engine to process the MessageContext we need

+a configuration context. The following code fragment will do this. This

+should ideally be only done once for the lifetime of the Transport

+receiver.</p>

+

+<p><source></p>

+<pre>try {

+        //Create a factory 

+        ConfigurationContextFactory factory = new ConfigurationContextFactory();

+        //Use the factory and an Axis2 repository to create a new Configuration Context

+        configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repository_directory, 

+axis2xmllocation);

+} catch (Exception e) {

+        log.info(e.getMessage());

+}</pre>

+</source>

+

+<p>Now we need some kind of a Listener to listen to the requests that come

+in. This you will need to implement according to the transport that you are

+trying to build. After a message is received at the Receiver you can use the

+following code to process the request and then forward the message context to

+the engine using the engine.receive(msgContext) method.{Following code

+snippet is extracted from MailListener as an example}</p>

+<source><pre>AxisEngine engine = new AxisEngine(configurationContext);

+MessageContext msgContext = null;

+

+// create and initialize a message context

+try {

+        TransportInDescription transportIn =

+                reg.getAxisConfiguration().getTransportIn(new QName(Constants.TRANSPORT_NAME));

+        TransportOutDescription transportOut =

+                reg.getAxisConfiguration().getTransportOut(new QName(Constants.TRANSPORT_NAME));

+        if (transportIn != null &amp;&amp; transportOut != null) {

+                //create Message Context

+                

+                msgContext = new MessageContext(configurationContext, transportIn, transportOut);

+                msgContext.setServerSide(true);

+                msgContext.setProperty(MailSrvConstants.CONTENT_TYPE, message.getContentType());

+                msgContext.setProperty(MessageContext.CHARACTER_SET_ENCODING, message.getEncoding());

+

+                String soapAction = message.getSOAPActionHeader();

+                msgContext.setWSAAction(soapAction);

+                msgContext.setSoapAction(soapAction);

+

+                // Here we are trying to set the reply to if it is present in the transport information.

+                msgContext.setReplyTo(new EndpointReference(message.getReplyTo());

+

+                //Create the SOAP Message -- This code in from the mail transport and will change depending

+                //on how the data is handled in each transport.

+                ByteArrayInputStream bais = new ByteArrayInputStream(message.getContent().toString().getBytes());

+                XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(bais);

+

+                String soapNamespaceURI = "";

+                if(message.getContentType().indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) &gt; -1){

+                        soapNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;

+                }else if(message.getContentType().indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) &gt; -1){

+                        soapNamespaceURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;

+                }

+

+                StAXBuilder builder = new StAXSOAPModelBuilder(reader, soapNamespaceURI);

+

+                SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();

+                msgContext.setEnvelope(envelope);

+                if (envelope.getBody().hasFault()) {

+                        engine.receiveFault(msgContext);

+                } else {

+                        engine.receive(msgContext);

+                }

+        } else {

+                throw new AxisFault(Messages.getMessage("unknownTransport",Constants.TRANSPORT_NAME));

+        }

+

+} catch (Exception e) {

+        try {

+                if (msgContext != null) {

+                        MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);

+                        engine.sendFault(faultContext);

+                } else {

+                        log.error(e);

+                }

+        } catch (AxisFault e1) {

+                log.error(e);

+        }

+}</pre>

+</source>

+<p>Now that we have the coding in place, we need to let Axis2 know about our

+new transport receiver. We do this by adding an entry into the axis2.xml

+file. If you need to pass any properties for the transport to operate, it can

+also be done through the axis2.xml file.</p>

+<source><pre>   &lt;transportReceiver name="TRANSPORT_NAME" class="org.apache.Axis2.transport.TRANSPORT_NAME.TRANSPORT_LISTNER_CLASS"&gt;

+        &lt;parameter name="PROPERTY_NAME" locked="false"&gt;PROPERTY_VALUE&lt;/parameter&gt;

+        &lt;parameter name="PROPERTY_NAME_2" locked="false"&gt;PROPERTY_VALUE_2&lt;/parameter&gt;

+  &lt;/transportReceiver&gt;

+  </pre>

+</source>

+<p>Using a code fragment like

+<code>Utils.getParameterValue(transportOut.getParameter(MailSrvConstants.SMTP_USER))</code>

+we can extract the parameters that we insert into the axis2.xml file.</p>

+

+<p>As you can see getting a new transport receiver up and running is a task that requires very little effort.</p>

+

+<h2>Transport Sender</h2>

+

+<p>Any message that is to be sent out of Axis2, is sent through the Transport

+Sender. The Transport Sender needs to be extended from the

+org.apache.Axis2.transport.AbstractTransportSender class.</p>

+

+<p>The following bit of code from the abstract transport sender will call the

+Transport Sender that you wrote.</p>

+<source><pre>// If an EPR is present then the message is going on a diffrent channel.

+if (epr != null) {

+        out = openTheConnection(epr, msgContext);

+        OutputStream newOut = startSendWithToAddress(msgContext, out);

+        if (newOut != null) {

+                out = newOut;

+        }

+        writeMessage(msgContext, out);

+        finalizeSendWithToAddress(msgContext, out);

+        } else {

+        out = (OutputStream) msgContext.getProperty(MessageContext.TRANSPORT_OUT);

+        if (out != null) {

+                startSendWithOutputStreamFromIncomingConnection(msgContext, out);

+                writeMessage(msgContext, out);

+                finalizeSendWithOutputStreamFromIncomingConnection(msgContext, out);

+        } else {

+                throw new AxisFault(

+                        "Both the TO and Property MessageContext.TRANSPORT_WRITER is Null, No way to send response.");

+        }

+}

+</pre>

+</source>

+<p>Therefore, depending on if your transport is using the same channel to send

+the response or using a different channel, you will need to implement a

+sub-set of the methods from the abstract class.</p>

+

+<p>After implementing the necessary methods you can let Axis2 know about your

+new transport sender by adding an entry to the axis2.xml file like you did

+for the Transport Receiver.</p>

+

+<source><pre>  &lt;transportSender name="TRANSPORT_NAME" class="org.apache.Axis2.transport.TRANSPORT_NAME.TRANSPORT_SENDER_CLASS"&gt;

+        &lt;parameter name="PROPERTY_NAME" locked="false"&gt;PROPERTY_VALUE&lt;/parameter&gt;

+        &lt;parameter name="PROPERTY_NAME_2" locked="false"&gt;PROPERTY_VALUE_2&lt;/parameter&gt;

+  &lt;/transportSender&gt;

+  </pre>

+</source>

+

+<p>Have a look at org.apache.Axis2.transport.mail.MailTransportSender for a

+very simple Transport Sender. Also have a look at

+org.apache.Axis2.transport.http.CommonsHTTPTransportSender which is used to

+send HTTP responses.</p>

+

+<p>Once we have written our transport receiver and our transport sender, and

+inserted the needed entries into the axis2.xml file, we are done. It is as

+simple as that! </p>

+

+</body>

+

+</html>

diff --git a/rampart_1_1/xdocs/1_1/userguide.html b/rampart_1_1/xdocs/1_1/userguide.html
new file mode 100644
index 0000000..c408d62
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/userguide.html
@@ -0,0 +1,534 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <title>Axis2 User's Guide</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body dir="ltr" lang="en-US">

+<a name="_Toc96697849" id="_Toc96697849"></a>

+<h1 align="center"> Apache Axis2 User's Guide</h1>

+

+<p>This guide will help you get started with Axis2, the next generation of

+Apache Axis! It describes in detail how to write Web services and Web

+service clients using Axis2; how to write custom modules and how to use them

+with a Web service. Advanced Topics and Samples which are shipped with the

+binary distribution of Axis2, are also discussed.</p>

+

+<a name="Introduction"></a>

+<h2>Introduction</h2>

+

+<p>This User's Guide is written based on <a

+href="../download/1_1/download.html/#std-bin">Axis2 Standard Binary

+Distribution</a>. The Standard Binary Distribution can be directly <a

+href="../download/1_1/download.html/#std-bin">downloaded</a> or

+built using the <a href="../download/1_1/download.html#src">Source

+Distribution</a>. If you choose to go for the latter, then <a

+href="installationguide.html">Installation Guide</a> will instruct you on how

+to build Axis2 Standard Binary Distribution using the Source.</p>

+

+<p>We hope you enjoy using Axis2. Please note that this is an open-source

+effort. If you feel the code could use some new features or fixes, please get

+involved and lend us a hand! The Axis developer community welcomes your

+participation.</p>

+

+<p>Let us know what you think! Send your feedback on Axis2 to "<a

+href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a>". Make sure

+to prefix the subject of the mail with [Axis2].</p>

+

+<h2>Getting Started</h2>

+

+<p>First two sections of the user guide will walk you through writing and

+deploying a new Web Service using Axis2, and writing a Web Service client

+using Axis2. Next section - <a href="#config"> Configuring Axis2</a> -

+provides a introduction to important configuration options in Axis2. Final

+section - <a href="#advanced">Advanced Topics</a> - provides references for

+other features</p>

+

+<p>In this section, we will learn how to write and deploy Web services using

+Axis2. All the samples mentioned in this guide are located in the

+<b>"samples/userguide/src"</b> directory of <a

+href="../download/1_1/download.html/#std-bin">Axis2 standard binary

+distribution</a>.</p>

+

+<p>Please deploy axis2.war in your servlet container and ensure that it works

+fine. <a href="installationguide.html" target="_blank">Installation Guide</a>

+gives you step by step instructions on just how to build axis2.war and deploy

+it in your servlet container.</p>

+<a name="ws_codegen"></a><a name="Web_Services_Using_Axis2"></a>

+<h2>Creating a New Web Service</h2>

+

+<p>If you are looking for "How to Write a Web Service Client using Axis2?"

+please go to the <a href="#client">next section</a>. Axis2 provides two ways

+to create new Web Services, using <strong>code generation</strong> and using XML based primary

+APIs. The following section explains how to start from a WSDL, and create a new

+Service with code generation. For the XML based primary API please refer to

+the section <a href="xmlbased-server.html">Writing Web Services Using Axis2's

+Primary APIs</a> for more information. However if you are a new user it is

+better to follow the code generation approach first (given below)</p>

+

+<h3>Starting with WSDL, Create and Deploy a Service</h3>

+

+<p>We start with a WSDL, however if you do not have a WSDL and need to create

+a WSDL from a java class please try <a

+href="reference.html#wsdl2java">Java2WSDL tool</a> and create a WSDL. As you

+might already know, a WSDL description of a Service provides precise

+definition of a Web Service. Axis2 could process the WSDL and generate java

+code that does most of work for you. At the server side we call them

+Skeletons and at the client side Stubs.</p>

+This method of writing a Web service with Axis2 involves four steps:

+<ol>

+  <li>Generate the skeleton code</li>

+  <li>Add business logic</li>

+  <li>Create a *.aar archive (Axis Archive) for the Web service</li>

+  <li>Deploy the Web service</li>

+</ol>

+

+<a name="Step1_:Generate_skeleton"></a>

+<h3>Step1: Generate Skeleton Code</h3>

+

+<p>To generate the skeleton and required classes, you can use the WSDL2Java

+tool provided in Axis2. This tool is located in the bin directory of the

+distribution and can be executed using the provided scripts (.bat or .sh).

+The tool's parameter list can be found from <a

+href="reference.html#wsdl2code">Axis2 Reference Document</a>.</p>

+

+<p>The parameters for wsdl2java tool in our example are as follows. Please

+note that we use xmlbeans as the data binding framework and generated code

+will be sent to samples directory. Other data binding tools you could use are

+adb (Axis data binding) and jaxme (<a

+href="http://ws.apache.org/jaxme/">JaxMe data binding</a>)</p>

+<pre>

+WSDL2Java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -ss -sd -d xmlbeans 

+-o ../samples -p org.apache.axis2.userguide

+</pre>

+

+<p>This will generate the required classes in the <b>"sample/src"</b>

+directory, and the schema classes in

+<strong>"samples/resources/schemaorg_apache_xmlbeans"</strong>

+directory<strong></strong>. Note that these are not source files and should

+be available in the class path in order to compile the generated classes.</p>

+

+<a name="Step2_Implement_Business_Logic"></a>

+<h3>Step 2: Implement Business

+Logic</h3>

+

+<p>Now you should fill the business logic in the skeleton class. You can

+find the skeleton class -Axis2SampleDocLitServiceSkeleton.java- among the

+generated classes in the

+<strong>"samples/src/org/apache/axis2/userguide</strong> directory. Let's

+fill the <code>echoString(..)</code> method in the skeleton as shown below. Our sample

+WSDL-Axis2SampleDocLit.wsdl in <strong>"samples/wsdl"</strong> directory has

+three operations: echoString, echoStringArray, echoStruct. To see how others

+will look when they are filled up see <a

+href="src/Axis2SampleDocLitServiceCode.html">Code Listing For

+Axis2SampleDocLitService Service</a></p>

+<source>

+<pre>

+public org.apache.axis2.userguide.xsd.EchoStringReturnDocument 

+    echoString(org.apache.axis2.userguide.xsd.EchoStringParamDocument param4) throws Exception {

+    //Use the factory to create the output document.

+    org.apache.axis2.userguide.xsd.EchoStringReturnDocument retDoc = 

+           org.apache.axis2.userguide.xsd.EchoStringReturnDocument.Factory.newInstance();

+    //send the string back.

+    retDoc.setEchoStringReturn(param4.getEchoStringParam());

+   return retDoc;<br>

+</pre></source>

+

+<a name="Step4_Create_archive"></a>

+<h3>Step 3: Create Archive File</h3>

+

+<p>An Axis2 service must be bundled as a service archive. The next step is to

+package the classes in an .aar (axis2 archive) and deploy it in Axis2. There

+is an ant file generated with the code, this will generate the Axis2 service

+archive for you. However if you do not want to use ant, you could create

+archive with following steps :</p>

+<ol>

+  <li>Compile the generated code</li>

+  <li>Copy <strong>"resources/schemaorg_apache_xmlbeans</strong>" xmlbeans

+    classes to your class folder</li>

+  <li>Among the generated files, there will be services.xml file, which is the

+    deployment descriptor for Axis2 service.[<a

+    href="reference.html#servicedd">learn more about it</a>]. Copy the

+    resources/service.xml to META-INF/services.xml</li>

+  <p>(To write your own service.xml file see sub section in <a href="xmlbased-server.html#Step2_:Write_the_services_xml_file">Writing Web Services Using Axis2's Primary APIs</a> section.)</p>

+  <li>Create the archive using content of the class folder. Change directory

+    to class folder and run <code>jar -cf &lt;service-name&gt;.aar</code> to

+    create the archive</li>

+</ol>

+

+<p>Once the archive is created, the content of the jar should look like

+this</p>

+

+<p><img src="images/userguide/DirectoryStructure.jpg" align="bottom"

+border="0"></p>

+

+<a name="Step5_Deploy_web_service"></a>

+<h3>Step 4: Deploy Web Service</h3>

+

+<p>The service can be deployed by simply dropping the ".aar" file into

+"services" directory in "/webapps/axis2/WEB-INF" of your servlet container.

+We recommend using <a href="http://tomcat.apache.org/">Apache Tomcat</a> as

+servlet container. <strong>Please Note that the services directory is

+available only after axis2.war is exploded by Tomcat. However, the easiest way

+to do it is to start Tomcat after axis2.war is copied to the webapps

+directory</strong> (if you have not already started). Check the link

+"Services" on the <a href="http://localhost:8080/axis2/" target="_blank">Home

+Page of Axis2 Web Application</a> (http://localhost:8080/axis2) and see

+whether the Axis2SampleDocLitService is shown under the deployed services.</p>

+

+<p>We recommend using the exploded configuration to deploy Axis2 WAR in

+<strong>WebLogic and WebSphere</strong> application servers to support the

+hotupdate/ hotdeployment features in Axis2. See <a href="app_server.html#weblogic_websphere">Application Server Specific

+Configuration Guide</a> for details.</p>

+

+<p>Note: Axis2 provides an easy way to deploy Web Services using the "Upload

+Service" tool on Axis2 Web Application's Administration module. (See the <a

+href="webadminguide.html" target="_blank">Web Administration Guide</a> for

+more information on this)</p>

+

+<a name="client"></a>

+<h2>Writing a Web Service Client</h2>

+

+<p>Axis2 also provides a more complex, yet powerful XML based client

+API which is intended for advanced users. Read <a

+href="dii.html">Writing Web Service Clients Using Axis2's Primary APIs</a> to

+learn more about it. However, if you are a new user we recommend using the <strong>code

+generation</strong> approach presented below.</p>

+

+<h3>Generate Stubs</h3>

+

+<p>Let's see how we could generate java code (Stub) to handle the client side

+Web Service invocation for you. That can be done by running the WSDL2Java

+tool using following arguments</p>

+<source>

+<pre>WSDL2Java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -d xmlbeans 

+     -o ../samples/src -p org.apache.axis2.userguide

+</pre></source>

+

+

+<p>This will generate client side stubs and xmlbeans types for your types.

+The Stub class that you need to use will be of the form

+<strong>&lt;service-name&gt;Stub</strong>. For our example it will be called

+"Axis2SampleDocLitServiceStub.java"</p>

+

+<p>Axis2 clients can invoke Web Services both in blocking and non-blocking

+manner. In a blocking invocation, the client waits till the service performs

+its task without proceeding to the next step. Normally the client waits till

+the response to the particular request arrives. In a non-blocking invocation,

+the client proceeds to the next step immediately and any responses (if any)

+are handled using a Callback mechanism. Please note that some explanations

+use the terms Synchronous and Asynchronous to describe the similar invocation

+strategies.</p>

+

+<h3>Do a Blocking Invocation</h3>

+

+<p>The following code fragment shows the necessary code calling

+<code>echoString</code> operation of the

+<code>Axis2SampleDocLitService</code> that we have already deployed. The code

+is extremely simple to understand and the explanations are in the form of

+comments.</p>

+<source>

+<pre>     try {

+               org.apache.axis2.userguide.Axis2SampleDocLitServiceStub stub 

+                  = new org.apache.axis2.userguide.Axis2SampleDocLitServiceStub(null,

+                    "http://localhost:8080/axis2/services/Axis2SampleDocLitService");

+                //Create the request document to be sent.

+                org.apache.axis2.userguide.xsd.EchoStringParamDocument reqDoc =

+                org.apache.axis2.userguide.xsd.EchoStringParamDocument.Factory.newInstance();

+                reqDoc.setEchoStringParam("Axis2 Echo");

+                //invokes the Web service.

+                org.apache.axis2.userguide.xsd.EchoStringReturnDocument resDoc = 

+                stub.echoString(reqDoc);

+                System.out.println(resDoc.getEchoStringReturn());

+               } catch (java.rmi.RemoteException e) {

+                  e.printStackTrace();

+              }

+</pre></source>

+

+<p>First argument of <code>Axis2SampleDocLitPortTypeStub</code> should be the

+Axis2 repository for the client. Here we use null to make the stub use

+default configurations. However you could make Axis2 use your own repository

+by providing it here. You could find more information about this from <a

+href="#config">Axis2 Configuration section</a>. You can find code to invoke

+other operations from <a href="src/Axis2SampleDocLitServiceCode.html">Code

+Listing For Axis2SampleDocLitService Service</a></p>

+

+<h3>Do a Non-Blocking Invocation</h3>

+

+<p>The stubs also include a method that allows you to do a non-blocking

+innovation, for each method in the Service there will be a method

+<strong>start&lt;method-name&gt;</strong>. These methods accept a callback

+object which would be called when the response is received. Sample code that

+does an asynchronous interaction is given below.</p>

+<source>

+<pre>try {

+         org.apache.axis2.userguide.Axis2SampleDocLitServiceStub stub

+           = new org.apache.axis2.userguide.Axis2SampleDocLitServiceStub(null,

+             "http://localhost:8080/axis2/services/Axis2SampleDocLitService");

+             //implementing the callback online

+            org.apache.axis2.userguide.Axis2SampleDocLitServiceCallbackHandler callback =

+            new org.apache.axis2.userguide.Axis2SampleDocLitServiceCallbackHandler() {

+                    public void receiveResultechoString(

+                      org.apache.axis2.userguide.xsd.EchoStringReturnDocument resDoc) {

+                       System.out.println(resDoc.getEchoStringReturn());

+                       }

+            };

+        org.apache.axis2.userguide.xsd.EchoStringParamDocument reqDoc = 

+          org.apache.axis2.userguide.xsd.EchoStringParamDocument.Factory.newInstance();

+           reqDoc.setEchoStringParam("Axis2 Echo");

+           stub.startechoString(reqDoc, callback);

+        } catch (java.rmi.RemoteException e) {

+          e.printStackTrace();

+       }

+</pre>

+</source>

+

+

+<p>Even though the above code does a non-blocking invocation at the client

+API, the transport connection may still operate in blocking fashion. For

+example, a single HTTP connection can be used to make the Web Service request

+and to get the response where a blocking invocation happens at the transport

+level. To perform a "true" Non-Blocking invocation in which two separate

+transport connections are used for the request and the response please add

+the following code segment after creating the stub. These will force Axis2 to

+use two transport connections for the request and the response while the

+client uses a Callback to process the response.</p>

+<source>

+<pre>

+stub._getServiceClient().engageModule(new QName("addressing"));

+stub._getServiceClient().getOptions().setUseSeparateListener(true);

+</pre>

+</source>

+

+

+<p>Once those options are set, Axis2 client does the following:</p>

+<ol>

+  <li>Start a new Transport Listener(Server) at the client side</li>

+  <li>Set the address of the Transport Listener, as the ReplyTo WS-Addressing

+    Header of the request Message</li>

+  <li>According to the WS-Addressing rules, Server will process the request

+    message and send the response back to the ReplyTo address</li>

+  <li>Client accepts the response, processes it and invokes the callback with

+    the response parameters</li>

+</ol>

+

+<h3>Using Your Own Repository</h3>

+

+<p>You could use your own repository with Axis2 Client, code below shows

+how to do this.</p>

+<source>

+<pre>

+String axis2Repo = ...

+String axis2xml = ...

+ConfigurationContext configContext =

+ConfigurationContextFactory.createConfigurationContextFromFileSystem(axis2Repo, axis2xml);

+Service1Stub stub1 = new Service1Stub(configContext,...);

+//invoke Service1

+Service2Stub stub2 = new Service2Stub(configContext,...);

+//invoke Service2

+</pre>

+</source>

+

+

+<p>Note by creating the <code>ConfigurationContext</code> outside and

+passing it to the stubs, you could make number of stubs to use same

+repository, thus saving the configuration loading overhead from each

+request.</p>

+

+<a name="config"></a>

+<h2>Configuring Axis2</h2>

+

+<h3>Axis2 Repository</h3>

+

+<p>Axis2 configuration is based on a repository and standard archives

+formats. A repository is a directory in the file system and it should have

+the following:</p>

+<ol>

+  <li><strong>axis2.xml</strong>, the Axis2 global deployment descriptor in

+    conf/axis2.xml file</li>

+  <li><strong>services</strong> directory, which will have service

+  archives</li>

+  <li>optional <strong>modules</strong> directory, which will have module

+    archives</li>

+</ol>

+

+<p>Both services and modules will be identified and deployed once their

+archives are copied to the corresponding directories. At the server side

+users should specify the repository folder at the time of starting a Axis2

+Server (e.g. HTTP or TCP). In Tomcat, <code>webapps/axis2/WEB-INF</code>

+folder acts as the repository. At the client side binary distribution can

+itself be a repository. You can copy the conf directory which includes the

+axis2.xml file from the exploded axis2.war and edit it to change global

+configurations repository.</p>

+

+<h3>Global Configurations</h3>

+

+<p>The Global configuration can be changed by editing the axis2.xml file,

+look at the <a href="axis2config.html#Global_Configuration">Axis2

+Configuration Guide</a> for more information</p>

+

+<h3>Add new Services</h3>

+

+<p>New Services can be written either using WSDL based code generation as we

+did, or from the scratch as explained <a

+href="xmlbased-server.html">here</a>. Read <a

+href="xmlbased-server.html">Creating a Service from Scratch</a> for more

+information. Also refer to <a

+href="axis2config.html#Service_Configuration">Axis2 Configuration Guide</a>

+for a reference on <strong>services.xml</strong> file.</p>

+

+<h3 name="module_engage">Engaging Modules</h3>

+

+<p>Each module(.mar file) provides extensions to Axis2. A module can be

+deployed by copying it in to the modules directory in the repository. Then it

+becomes available and can be engaged at global, service or operation scopes.

+Once engaged it becomes active (add handlers to the execution flow) at the

+respective scope. Please refer to <a href="Axis2ArchitectureGuide.html">Axis2

+architecture guide</a> for detailed explanation. The following table explains the

+semantics of scope and how to engage modules in those scopes.</p>

+

+<table border="1">

+  <tbody>

+    <tr>

+      <th>Scope</th>

+      <th>Semantics</th>

+      <th>how to engage</th>

+    </tr>

+    <tr>

+      <td>Global</td>

+      <td>Add handlers in the module to all the services. Addressing Handler

+        can be only engaged as global</td>

+      <td>By adding a &lt;module ref="addressing"/&gt; to Axis2 xml file or

+        calling

+        <pre>stub._getServiceClient().engageModule(moduleName)</pre>

+        at client side</td>

+    </tr>

+    <tr>

+      <td>Service</td>

+      <td>Add handlers in the module to a specific service</td>

+      <td>By adding a &lt;module ref="addressing"/&gt; to service.xml file in

+        service archive</td>

+    </tr>

+    <tr>

+      <td>Operation</td>

+      <td>Add handlers in the module to a specific operation</td>

+      <td>By adding a &lt;module ref="addressing"/&gt; to inside a operation

+        tag of service.xml file in service archive</td>

+    </tr>

+  </tbody>

+</table>

+

+<p>* If a handler is added to a service or an operation, it will be invoked

+for every request received by that service or operation</p>

+

+<p>Axis2 provides a number of built in Modules such as (<a

+href="">addressing</a>,<a href="">Security</a>, <a href="">WS-Reliable

+Messaging</a> ...), and they can be engaged as shown above. Please refer to

+each module for how to use and configure them. You can also <a

+href="modules.html">create your own modules with Axis2</a>. Also refer to <a

+href="axis2config.html#Global_Configuration">Axis2 Configuration Guide</a>

+for a reference on module.xml file.</p>

+

+<h3>WS-Addressing Support</h3>

+

+<p>WS-Addressing support for Axis2 is implemented by the addressing module.

+To enable addressing you need to engage the addressing module in both server

+and client sides. In order to do this:</p>

+<ol>

+  <li>To <strong>enable</strong> addressing at the server side you need to

+    copy addressing.mar file to modules directory of server's axis2

+    repository. To engage the module, add a &lt;module ref="addressing"/&gt; to

+    axis2.xml. <strong>Addressing module can be engaged only at global

+    level</strong></li>

+  <li>To <strong>enable</strong> addressing at the client side you should add

+    it to the repository and provide the repository as argument to the <a

+    href="dii.html">ServiceClient</a> or <a href="#client">generated stub</a>

+    or have it in your classpath</li>

+  <li>To <strong>engage</strong> addressing module you should either add

+    &lt;module ref="addressing"/&gt; to axis2.xml file at the client side or

+    call

+    <pre>stub._getServiceClient().engageModule(moduleName)</pre>

+  </li>

+</ol>

+

+<a name="advanced"></a>

+<h2>Advanced Topics</h2>

+

+<h3>Transports</h3>

+

+<p>Axis2 is by default configured to use HTTP as the transport. However Axis2

+supports HTTP, SMTP, TCP and JMS transports. You can also write your own

+transports, and deploy them by adding new transportReceiver or

+transportSender tags to axis2.xml. To learn how to configure and use

+different transports please refer the following documents.</p>

+<ol>

+  <li><a href="tcp-transport.html" target="_blank">TCP Transport</a></li>

+  <li><a href="mail-transport.html" target="_blank">Mail Transport</a></li>

+  <li><a href="http-transport.html" target="_blank">HTTP Transports</a></li>

+  <li><a href="jms-transport.html" target="_blank">JMS Transports</a></li>

+</ol>

+

+<h3>Attachments</h3>

+

+<p>Axis2 provides attachment support using <a

+href="http://www.w3.org/TR/soap12-mtom/">MTOM</a>. Please refer to <a

+href="mtom-guide.html" target="_blank">MTOM with Axis2</a> for more

+information.</p>

+

+<h3>Security</h3>

+

+<p>Axis2 provides Security support using the <a

+href="http://ws.apache.org/axis2/modules/rampart/1_0/security-module.html">Apache

+Rampart</a>. Please refer to <a

+href="../modules/wss4j/1_0/security-module.html" target="_blank">Securing

+SOAP Messages with Apache Rampart</a> for more information</p>

+

+<h3>REST Web Service</h3>

+

+<p>Please refer to <a href="rest-ws.html" target="_blank">RESTful Web

+Services</a> for more information</p>

+

+<h3>Pluggable Data Binding</h3>

+

+<p>Axis2 ships with Axis Data Binding(ADB) as the default data binding

+framework, however the data binding frameworks are pluggable to Axis2, and

+you could use other data binding frameworks with Axis2. Please refer the

+following documents for more information.</p>

+

+<h4>Axis2 Data Binding(ADB)</h4>

+<ol>

+  <li><a href="adb/adb-howto.html" target="_blank">Axis2 Databinding

+    Framework</a></li>

+  <li><a href="adb/adb-codegen-integration.html" target="_blank">ADB

+    Integration With Axis2</a></li>

+  <li><a href="adb/adb-advanced.html">Advanced Axis2 Databinding Framework

+    Features</a></li>

+  <li><a href="adb/adb-tweaking.html">ADB Tweaking Guide</a></li>

+</ol>

+

+<h4>JiBX</h4>

+<a href="jibx/jibx-codegen-integration.html">JiBX Integration With Axis2</a>

+

+<h3>Other Topics</h3>

+<ol>

+  <li><a href="spring.html" target="_blank">Axis2 Integration With The Spring

+    Framework</a></li>

+  <li><a href="WS_policy.html" target="_blank">Web Services Policy Support In

+    Axis2</a></li>

+  <li><a href="axis2config.html#Global_Configuration">Axis2 Configuration

+    Guide</a></li>

+  <li><a href="Axis2-rpc-support.html">Axis2 RPC Support</a></li>

+  <li><a href="migration.html">Migrating from Apache Axis 1.x to Axis

+  2</a></li>

+  <li><a href="modules.html">Writing your Own Axis2 Module</a></li>

+  <li><a href="soapmonitor-module.html">Using the SOAP Monitor</a></li>

+  <li><a href="xmlbased-server.html">Writing Web Services Using Axis2's

+    Primary APIs</a></li>

+  <li><a href="dii.html">Writing Web Service Clients Using Axis2's Primary

+    APIs</a></li>

+  <li><a href="app_server.html">Application Server Specific Configuration

+    Guide</a></li>

+</ol>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/1_1/webadminguide.html b/rampart_1_1/xdocs/1_1/webadminguide.html
new file mode 100644
index 0000000..e6e3856
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/webadminguide.html
@@ -0,0 +1,329 @@
+<!-- saved from url=(0022)http://internet.e-mail -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <title>Apache Axis2 Web Administrator's Guide</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1 align="center">Apache Axis2 Web Administrator's Guide</h1>
+
+<p>This document will give you detailed instructions on administration
+console of Axis2 Web application. Axis2 Administration is all about
+configuring Axis2 at the run time and the configuration will be transient.</p>
+
+<p><i>Send your feedback to: <a
+href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix
+subject with [Axis2]. To subscribe to mailing list see <a
+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>
+
+<h2>Contents</h2>
+<ul>
+  <li><a href="#Intro">Introduction</a>
+    <ul>
+      <li><p><a href="#login">Login into Administration Site</a></p>
+      </li>
+    </ul>
+  </li>
+  <li><a href="#adminoptions">Administration Options</a>
+    <ul>
+      <li><p><a href="#tools">Tools</a></p>
+        <ul>
+          <li><a href="#upservice">Upload Service</a></li>
+        </ul>
+      </li>
+      <li><p><a href="#syscomponents">System components</a></p>
+        <ul>
+          <li><a href="#heading1">Available services</a></li>
+          <li><a href="#servgroups">Available service groups</a></li>
+          <li><a href="#avmodules">Available modules</a></li>
+          <li><a href="#globalmodules">Globally engaged modules</a></li>
+          <li><a href="#phases">Available phases</a></li>
+        </ul>
+      </li>
+      <li><p><a href="#executionchains">Execution chains</a></p>
+        <ul>
+          <li><a href="#globalchains">Global chains</a></li>
+          <li><a href="#operationchains">Operation specific chains</a></li>
+        </ul>
+      </li>
+      <li><p><a href="#engaginmodule">Engage module</a></p>
+      </li>
+      <li><a href="#services">Services</a>
+        <ul>
+          <li><a href="#turnoffservice">Deactivate Service</a></li>
+          <li><a href="#turnonservice">Activate Service</a></li>
+          <li><a href="#editservicepara">Edit service parameters</a></li>
+        </ul>
+      </li>
+      <li><p><a href="#context">Contexts</a></p>
+        <ul>
+          <li><a href="#viewhierarchy">View Hierarchy</a></li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+</ul>
+<a name="Intro"></a>
+<h3>Introduction</h3>
+
+<p>Axis2 Web application has three main sections, 'Services'- lists all the
+available services deployed in this server, 'Validate'-checks the system to
+see whether all the required libraries are in place and views the system
+information, and 'Administration'- Axis2 Web Administration module which is
+the console for administering this Axis2 installation.</p>
+
+<p>Axis2 Web Administration module provides a way to configure Axis2
+dynamically. It's important to note that this dynamic configuration will NOT
+be persistent, i.e. if the servlet container is restarted then all the
+dynamic configuration changes will be lost.</p>
+<a name="login"></a>
+<h4>Login into Administration Site</h4>
+
+<p>Once Axis2 is successfully installed, the Web application can be accessed
+(See <a href="installationguide.html">Installation Guide</a> for
+instructions). From <a href="#homepage">Axis2 Web Application Home page</a>
+you can go to Administration page by following 'Administration' link, then
+login page shown below will appear requesting user name and a password. The
+default user name is 'admin' (without quotes) and default password is 'axis2'
+(without quotes).</p>
+
+<p align="center"><img alt="" src="images/adminlogin.jpg"></p>
+
+<p>You can change the user name &amp; password values by changing following
+two parameters in axis2.xml as required.</p>
+
+<p align="center"><img alt="" src="images/parameters.jpg"></p>
+
+<p>If the login is successful you will see the screen below. This is where
+you can view the configuration and the state of the running system and
+dynamically configure it.</p>
+
+<p align="center"><img alt="" src="images/admin.jpg"></p>
+
+<a name="adminoptions"></a>
+<h3>Administration Options</h3>
+<ul>
+  <a name="tools"><b>Tools</b></a>
+  <ul>
+    <li><a href="#upservice">Upload Service</a></li>
+  </ul>
+  <a name="syscomponents"><b>System components</b></a>
+  <ul>
+    <li><a href="#heading1">Available services</a></li>
+    <li><a href="#servgroups">Available service groups</a></li>
+    <li><a href="#avmodules">Available modules</a></li>
+    <li><a href="#globalmodules">Globally engaged modules</a></li>
+    <li><a href="#phases">Available phases</a></li>
+  </ul>
+  <a name="executionchains"><b>Execution chains</b></a>
+  <ul>
+    <li><a href="#globalchains">Global chains</a></li>
+    <li><a href="#operationchains">Operation specific chains</a></li>
+  </ul>
+  <b><a href="#engaginmodule">Engage module</a></b> <br>
+
+  <ul>
+    <li>For all Services</li>
+    <li>For a Service Group</li>
+    <li>For a Service</li>
+    <li>For an Operation</li>
+  </ul>
+  <a name="services"><b>Services</b></a>
+  <ul>
+    <li><a href="#turnoffservice">Deactivate service</a></li>
+    <li><a href="#turnonservice">Activate service</a></li>
+    <li><a href="#editservicepara">Edit service parameters</a></li>
+  </ul>
+  <a name="context"><b>Contexts</b></a>
+  <ul>
+    <li><a href="#viewhierarchy">View Hierarchy</a></li>
+  </ul>
+</ul>
+<a name="homepage"></a>
+<h3>Axis2 Web Application Home Page</h3>
+
+<p align="center"><strong><img alt=""
+src="images/clip_image006.jpg"></strong></p>
+<a name="upservice"></a>
+<h3>Upload Services</h3>
+
+<p>You can upload packaged Axis2<em> </em>service archive files using this
+page. This can be done in two simple steps:</p>
+<ul>
+  <li>Browse to the location and select the axisService archive file you wish
+    to upload</li>
+  <li>Then click Upload</li>
+</ul>
+
+<p align="center"><img alt="" src="images/clip_image010.jpg"></p>
+<a name="heading1"></a>
+
+<h3>Available Services</h3>
+
+<p>The functionality of the 'Available Services' option is almost same as the
+functionality of Axis2 Web Application Home page 'Services' option where it
+displays a list of deployed services and their operations. But as an
+additional feature, the 'Available Services' page will list details of
+modules that are engaged to the deployed services and their operations on a
+global, service or on an operation level.</p>
+
+<p>Using the 'Disengage' link one can disengage the corresponding module, as
+long as the module is not globally engaged (engaged to all services and
+operations).</p>
+
+<p>Click on a specific service and it will give you the WSDL file of that
+particular service.</p>
+
+<p><strong>Faulty services</strong> of this system will also be listed on
+this page. Click on each faulty service, it will take you to a page that
+lists the exception stack trace of the exception that caused service to be
+faulty.</p>
+
+<p align="center"><img alt="" src="images/adminmain.jpg"></p>
+<a name="servgroups"></a>
+
+<h3>Available Service Groups</h3>
+
+<p>Service group is a logical collection of related services and the
+'Available Service Groups' link will list all the available service groups in
+the system.</p>
+
+<p align="center"><img alt="" src="images/servicegroups.jpg"></p>
+<a name="avmodules"></a>
+<h3>Available Modules</h3>
+
+<p>To view the available modules in the 'modules' directory of the
+'repository' click 'Available Modules' link. This will show you all the
+available modules in the system. Those modules can be engaged dynamically.</p>
+
+<p align="center"><img alt="" src="images/modules.jpg"></p>
+<br>
+<a name="globalmodules"></a>
+<h3>Globally Engaged Modules</h3>
+
+<p>From the 'Globally Engaged Modules' link you can view globally engaged
+modules, if any. If a module was engaged globally then the handlers that
+belong to that module will be executed irrespective of the service.</p>
+<a name="phases"></a>
+<h3>Available Phases</h3>
+
+<p>The 'Available Phases' link will display all the available phases. In
+Axis2 there are two levels of phases:</p>
+<ul>
+  <li>System predefined phases (not allowed to be changed)</li>
+  <li>User defined phases</li>
+</ul>
+
+<p>The main difference between these two levels is that system predefined
+phases will be invoked irrespective of the services, while user defined
+phases will be invoked when the dispatcher finds the operation. Note that it
+is essential for module developers and service writers to have a good
+understanding of phases and phase ordering.</p>
+
+<p align="center"><img alt="" src="images/viewphases.jpg"></p>
+<br>
+<a name="globalchains"></a>
+<h3>Global Chains</h3>
+
+<p>The 'Global Chains' link will display all the Global Execution Chains. The
+most interesting feature of Axis2 Web Administration Module is that it
+provides a very basic way of viewing the global phase list and handlers
+inside the phases depending on both phase and handler orders. This kind of
+information is extremely useful in debugging the system, as there is no other
+way to list out handlers in the global chains. If you engage a new module,
+the new handlers will be added to the global chains and will be displayed on
+this page.</p>
+
+<p align="center"><img alt="" src="images/globalchain.jpg"></p>
+<br>
+<a name="operationchains"></a>
+<h3>Operation Specific Chains</h3>
+
+<p>The 'Operation Specific Chains' link can be used to view the handlers
+corresponding to a given service in the same order as it is in the real
+execution chain.</p>
+
+<p align="center"><img alt="" src="images/select_service_for_handler.jpg"></p>
+<br>
+
+
+<p>Select service of which service handlers you wish to view from the list
+box, and click on the 'View' button to view handlers. The page below shows
+service handlers of service <em>version</em></p>
+
+<p align="center"><img alt="" src="images/serviceHandlers.jpg"></p>
+<br>
+<a name="engaginmodule"></a>
+<h3>Engaging Modules</h3>
+
+<p>The 'Engaging Modules' link allows to engage modules either globally (to
+all services), to a service group, to a service or to an operation depending
+on the module implementation. If the module was designed to engage the
+handlers globally then handlers in the module can be included in any phase in
+the system. It can be either a system predefined phase or a user defined
+phase.</p>
+
+<p>On the other hand, if the module was implemented in such a way that it is
+going to be deployed to a service or to an operation, then the module cannot
+be included in any of the <a href="#phases">System Predefined Phases</a>.
+Thus it can only be included in <a href="#phases">User Defined Phases</a>.</p>
+
+<p>Immediately after engaging the module you can see the status of engagement
+indicating whether it is engaged properly or not.</p>
+
+<p align="center"><img alt="" src="images/moduleengage.jpg"></p>
+
+<a name="turnoffservice"></a>
+<h3>Deactivate Service</h3>
+
+<p>The 'Deactivate Service' link under 'Services' list will lead to the page
+below. Deactivate service functionality provide a way to remove unnecessary
+services from the running system, but the removal is transient which means if
+you restart the system the service will be available.</p>
+
+<p>To deactivate service, select service from list box, tick 'Deactivate
+service' check box, then click on 'Deactivate' button. 'Clear' button will
+clear the 'Deactivate service' check box</p>
+
+<p align="center"><img alt="" src="images/inactivate.jpg"></p>
+<br>
+<a name="turnonservice"></a>
+<h3>Activate Service</h3>
+
+<p>The 'Activate Service' link under 'Services' list will lead to the page
+below. Activate service functionality provides a way to activate services
+while the system is running, but the activation is transient which means if
+you restart the system the service will be inactive.</p>
+
+<p>To activate service, select service from list box, tick 'Activate Service'
+check box, then click on 'Activate' button. 'Clear' button will clear the
+'Activate service' check box.</p>
+
+<p align="center"><img alt="" src="images/activate.jpg"></p>
+<br>
+<a name="editservicepara"></a>
+<h3>Edit Service Parameters</h3>
+
+<p>This functionality provides a way to change parameters in a service or its
+operations. These changes will be transient too, which means if you restart
+the system changes will not be reflected.</p>
+
+<p>The 'Edit Parameters' link under the 'Services' list on the navigation bar
+will link to the page where you can select services to edit Parameters. Once
+the service is selected click on the 'Edit Parameters' button. This will lead
+to the page below.</p>
+
+<p align="center"><img alt="" src="images/editserviecpara.jpg"></p>
+<br>
+<a name="viewhierarchy"></a>
+<h3>View Hierarchy</h3>
+
+<p>By listing current context hierarchy 'View Hierarchy' link provides a
+means to look at the system state at run time. This will list out all the
+available service group contexts, service contexts, operation context and
+etc.</p>
+
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/1_1/xmlbased-server.html b/rampart_1_1/xdocs/1_1/xmlbased-server.html
new file mode 100644
index 0000000..10801fb
--- /dev/null
+++ b/rampart_1_1/xdocs/1_1/xmlbased-server.html
@@ -0,0 +1,162 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Writing Web Services Using Axis2's Primary APIs</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+<body>
+
+<a name="Writing_Web_Services_Using Axis2's_Primary_APIs"></a>
+<h1>Writing Web Services Using Axis2's Primary APIs</h1>
+<p>Axis2 dispatches a component called <strong>MessageReceiver</strong> while Receiving a Message in the server. Axis2 provides different implementations of this class and it can be configured by adding a messageReceiver tag to services.xml. Axis2 provides implementation for class of Message receivers called RawXml Message receivers. They work on XML level and could only handle OMElements as parameters. This Section explains how to write a service using them.</p>
+
+<p>In our example, the web service will have two operations.</p>
+<pre>public void ping(OMElement element){} //IN-ONLY operation, just accepts the OMElement and does some processing.
+public OMElement echo(OMElement element){}//IN-OUT operation, accepts an OMElement and  
+                                          // sends back the same again </pre>
+<a name="How_to_write_the_Web_Service_"></a>
+<h4>How to write a Web Service?</h4>
+Writing a new Web service with Axis2 involves four steps:
+<ol>
+  <li>Write the Implementation Class</li>
+  <li>Write a services.xml file to explain the
+    Web service</li>
+  <li>Create a *.aar archive (Axis Archive) for
+    the Web service</li>
+  <li>Deploy the Web service</li>
+</ol>
+
+<a name="Step1_:Write_the_Implementation_Class"></a>
+<h4>Step1: Write the Implementation Class</h4>
+
+<p>An implementation class has the business logic for the Web service and
+implements the operations provided by the Web service. Unless you have data
+binding, the signature of the methods can have only one parameter of type
+OMElement.</p>
+
+<p>For more details on OMElement see <a href="http://ws.apache.org/commons/axiom/OMTutorial.html">OM
+Tutorial</a>.</p>
+<pre>public class MyService{
+    public void ping(OMElement element){
+        // Business Logic     
+        ......
+    }
+    public OMElement echo(OMElement element){
+     ......
+    }
+}</pre>
+
+<a name="Step2_:Write_the_services_xml_file"></a>
+<h4>Step2: Write the services.xml file</h4>
+
+<p>"services.xml" has the configuration for a Web service. Each Web service,
+deployed in Axis2 , must have its configuration in "services.xml". The
+configuration for MyService is as follows:</p>
+<pre>&lt;service &gt;
+    &lt;description&gt;
+        This is a sample Web service with two operations, echo and ping.
+    &lt;/description&gt;
+    &lt;parameter name="ServiceClass" locked="false"&gt;userguide.example1.MyService&lt;/parameter&gt;
+    &lt;operation name="echo"&gt;
+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;
+        &lt;actionMapping&gt;urn:echo&lt;/actionMapping&gt;
+    &lt;/operation&gt;
+     &lt;operation name="ping"&gt;
+        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/&gt;
+        &lt;actionMapping&gt;urn:ping&lt;/actionMapping&gt;
+    &lt;/operation&gt;
+ &lt;/service&gt;</pre>
+
+<p><em>The above XML tags can be explained as follows:</em></p>
+
+<p>1. The description of the service class is provided in the description
+tag.</p>
+<pre>&lt;service &gt;
+    &lt;description&gt;
+        This is a sample Web service with two operations, echo and ping.
+    &lt;/description&gt;</pre>
+
+<p>2. The name of the service class is provided as a parameter.</p>
+<pre>&lt;parameter name="serviceClass" locked="false"&gt;userguide.example1.MyService&lt;/parameter&gt;</pre>
+
+<p>3. The "operation" xml tag describes the operations that are available in
+this service with respective message receivers.</p>
+<pre>   &lt;operation name="echo"&gt;
+            &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;
+            &lt;actionMapping&gt;urn:echo&lt;/actionMapping&gt;
+   &lt;/operation&gt;
+   &lt;operation name="ping"&gt;
+       &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/&gt;
+       &lt;actionMapping&gt;urn:ping&lt;/actionMapping&gt;
+   &lt;/operation&gt;</pre>
+
+<p>4. Every operation must map to a corresponding MessageReceiver class.
+After a message is processed by the handlers, Axis2 engine hands it over to a
+MessageReceiver.</p>
+
+<p>5. For the "echo" operation, we have used a
+<strong>RawXMLINOutMessageReceiver</strong> since it is an IN-OUT operation.
+For IN-ONLY operation "ping", we have used
+<strong>RawXMLINOnlyMessageReceiver</strong> as the message receiver.</p>
+
+<p>6. The actionMapping is required only if you want to enable WS-Addressing.
+This will be used later in this user guide.</p>
+
+<p>7. You can write a services.xml file to include a group of services
+instead of a single service. This makes management and deployment of a set of
+related services very easy. At runtime you can share information between
+these services within a single interaction using the ServiceGroupContext. If
+you hope to use this functionality, the services.xml file should have the
+following format.</p>
+<pre>&lt;ServiceGroup&gt;
+  &lt;service name="Service1"&gt;
+    &lt;!-- details for Service1 --&gt;
+  &lt;/service&gt;
+  &lt;service name="Service2"&gt;
+    &lt;!-- details for Service2 --&gt;
+  &lt;/service&gt;
+  &lt;module ref="ModuleName" /&gt;
+  &lt;parameter name="serviceGroupParam1" locked="false"&gt;value 1&lt;/parameter&gt;
+&lt;/serviceGroup&gt;</pre>
+
+<p>Note : name of the service is a compulsory attribute.</p>
+
+<a name="Step3_:Create_the_Web_Service_Archive"></a>
+<h4>Step3: Create the Web Service Archive</h4>
+
+<p>Axis2 uses ".aar" (Axis Archive) file as the deployment package for Web
+services. Therefore, for MyService we will use "MyService.aar" with the
+"services.xml" packaged in the META-INF in directory structure shown below.
+Please note that the name of the archive file will be same as that of the
+service only if the services.xml contains only one service element.</p>
+
+<p><img src="images/userguide/ServiceItems.jpg" name="Graphic1"
+align="bottom" width="176" height="91" border="0"></p>
+
+<p>To create the archive file, you can create a jar file containing all the
+necessary files and then rename it to .aar file. This archive file can be
+found in the "Axis2_HOME/samples/userguide" directory. This file now has to
+be deployed.</p>
+
+<a name="Step4_:Deploy_the_Web_Service"></a>
+<h4>Step4: Deploy the Web Service</h4>
+
+<p>The service can be deployed by dropping the ".aar" file into
+"services" directory in "/webapps/axis2/WEB-INF" of your servlet container.
+Start the servlet container (if you have not already started) and check the
+link "Services" on the <a href="http://localhost:8080/axis2/"
+target="_blank">Home Page of Axis2 Web Application</a>
+(http://localhost:8080/axis2) and see whether the MyService is deployed
+properly. If you can see the following output then you have successfully
+deployed MyService on Axis2. Congratulations !!</p>
+
+<p align="center"><img src="images/userguide/MyServiceDeployed.jpg"
+name="Graphic2" align="bottom" border="0"></p>
+
+<p>Note: Axis2 provides an easy way to deploy Web services using the "Upload
+Service" tool on Axis2 Web Application's Administration module. Please refer
+to the <a href="webadminguide.html" target="_blank">Web Administration
+Guide</a> for more information.</p>
+
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/archived_news.html b/rampart_1_1/xdocs/archived_news.html
new file mode 100644
index 0000000..26e25f5
--- /dev/null
+++ b/rampart_1_1/xdocs/archived_news.html
@@ -0,0 +1,498 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+  <title>Apache Axis2 Archived News</title>
+  <meta name="generator" content="amaya 9.2.1, see http://www.w3.org/Amaya/"
+  />
+  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body xml:lang="en">
+<h1>Apache Axis2 Archived News</h1>
+
+<p>This document will contain details on each of the Axis2 versions that were
+released up to the current version.</p>
+
+<h2>Content</h2>
+
+<h3>Apache Axis2 Releases:</h3>
+<ul>
+  <li><a href="#1_0">04 May 2006- Version 1.0</a></li>
+  <li><a href="#0_95">23 March 2006- Version 0.95</a></li>
+  <li><a href="#0_94">11 January 2006- Version 0.94</a></li>
+  <li><a href="#0_93">02 December 2005 - Version 0.93</a></li>
+  <li><a href="#0_92">26 September 2005 - Version 0.92</a></li>
+  <li><a href="#0_91">12 August 2005 - Version 0.91</a></li>
+  <li><a href="#0_90">02 July 2005 - Version 0.9</a></li>
+  <li><a href="#M2">07 June 2005 - Milestone 2</a></li>
+  <li><a href="#M1">24 February 2005 - Milestone 1</a></li>
+</ul>
+
+<a name="1_0"></a>
+<h2>04 May 2006 - Apache Axis2 Version 1.0 Released!</h2>
+
+<p>[<a href="http://ws.apache.org/axis2/download.cgi">Download 1.0</a>]</p>
+
+<p>Apache Axis2 is a complete re-design and re-write of the widely used
+Apache Axis SOAP stack to build on the lessons learnt from Apache Axis.</p>
+
+<p>Apache Axis2 not only supports SOAP 1.1 and SOAP 1.2, but it also has
+integrated support for the widely popular REST style of Web services: the
+same business logic implementation can offer both a WS-* style interface as
+well as a REST style interface simultaneously.</p>
+
+<p>Apache Axis2 is more efficient, more modular and more XML-oriented than
+the older version. It is carefully designed to support the easy addition of
+plug-in "modules" that extend its functionality for features such as security
+and reliability. Modules currently available or under development include:</p>
+<ul>
+  <li><a
+    href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrm"
+    target="_blank">WS-ReliableMessaging</a> - Supported by <a
+    href="http://ws.apache.org/sandesha/sandesha2/">Apache Sandesha2</a></li>
+  <li><a
+    href="http://www-128.ibm.com/developerworks/library/specification/ws-tx/#coor"
+    target="_blank">WS-Coordination</a>  and <a
+    href="http://www-128.ibm.com/developerworks/library/specification/ws-tx/#atom"
+    target="_blank">WS-AtomicTransaction</a> - Supported by <a
+    href="http://ws.apache.org/kandula/">Apache Kandula2</a></li>
+  <li><a
+    href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss"
+    target="_blank">WS-Security</a> - Supported by <a
+    href="http://ws.apache.org/axis2/modules/index.html">Apache
+  Rampart</a></li>
+  <li><a href="http://www.w3.org/Submission/ws-addressing/"
+    target="_blank">WS-Addressing</a> - <a
+    href="http://ws.apache.org/axis2/modules/index.html">Module</a> included
+    as part of Axis2 core</li>
+</ul>
+
+<p>Apache Axis2 is built on <a
+href="http://ws.apache.org/commons/axiom/index.html">Apache Axiom</a>, a new
+high performant, pull-based XML object model that was released two days
+ago.</p>
+
+<h2>Features</h2>
+
+<h3>Programming Model</h3>
+<ul>
+  <li>Improved, XML-centric client API including full WSDL and policy
+  support</li>
+  <li>Support for any message exchange pattern</li>
+  <li>Synchronous and asynchronous calls</li>
+  <li>Archived service deployment model</li>
+  <li>Archived module deployment model supporting controlled extensibility
+    with versioning support</li>
+  <li><a href="1_1/installationguide.html#hot_deployment">Hot deployment</a></li>
+  <li>WS-Policy driven code generation extensions</li>
+  <li>Flexible service lifecyle model</li>
+  <li>Support for querying service's WSDL (using ?wsdl), schema (using ?xsd)
+    and policies (using ?policy)</li>
+</ul>
+
+<h3>Supported Specifications</h3>
+<ul>
+  <li>SOAP 1.1 and 1.2</li>
+  <li>Message Transmission Optimization Mechanism (MTOM), XML Optimized
+    Packaging (XOP) and SOAP with Attachments</li>
+  <li>WSDL 1.1, including both SOAP and HTTP bindings</li>
+  <li>WS-Addressing (submission and final)</li>
+  <li>WS-Policy</li>
+  <li>SAAJ 1.1</li>
+</ul>
+
+<h3>Transports</h3>
+<ul>
+  <li>HTTP</li>
+  <li>SMTP</li>
+  <li>JMS</li>
+  <li>TCP</li>
+</ul>
+
+<h3>Supported Data Bindings</h3>
+<ul>
+  <li>Axis Data Binding (ADB)</li>
+  <li>XMLBeans</li>
+  <li>JibX</li>
+  <li>JaxMe</li>
+</ul>
+
+<h2><a name="Tools_included_in this_Release">Tools Included In This
+Release</a></h2>
+
+<p><a href="http://ws.apache.org/axis2/tools/index.html"
+target="_blank">[Download plug-ins]</a></p>
+<ol type="1">
+  <li>Axis2 Web Application (Web App)</li>
+  <li>WSDL2WS- <a href="../tools/1_0/eclipse/wsdl2java-plugin.html"
+    target="_blank">eclipse plug-in</a><a>/</a> <a
+    href="../tools/1_0/CodegenToolReference.html" target="_blank">Command
+    line version</a><a>/</a><a
+    href="../tools/1_0/idea/Idea_plug-in_userguide.html#WSDL2Java_Code_Generation"
+    target="_blank">IntelliJ IDEA plug-in</a></li>
+  <li>Service Archive Wizard- <a
+    href="../tools/1_0/eclipse/servicearchiver-plugin.html"
+    target="_blank">eclipse plug-in</a>/ <a
+    href="../tools/1_0/idea/Idea_plug-in_userguide.html#Create_Service_Archive"
+    target="_blank">IntelliJ IDEA plug-in</a></li>
+</ol>
+
+<h2>Extension Modules</h2>
+<ul>
+  <li>Apache Rampart: Supporting WS-Security (and soon WS-Policy)</li>
+  <li>Apache Sandesha2: Supporting WS-Reliable Messaging</li>
+</ul>
+(Apache Axis2 comes built in with a module that supports WS-Addressing.)
+
+<h2>Known Issues and Limitations</h2>
+<ul>
+  <li>Recursive schemas (A includes B which includes A) may cause
+  problems</li>
+  <li>JaxMe data binding support is experimental</li>
+  <li>Axis2-595: Hot re-deployment in Apache Tomcat has problems</li>
+  <li>Axis2-666: AddressingSubmissionInHandler does not deserialize EPR
+    extensibility attributes and elements</li>
+  <li>AXIS2-667: Operation dispatch based on message body has a known
+  issue</li>
+  <li>Axis Data Binding (ADB) does not cover all of XML Schema; its an 80-20
+    design point. Unsupported XML Schema features include:
+    <ol>
+      <li>Simple content extension and restriction</li>
+      <li>Complex content restriction</li>
+    </ol>
+  </li>
+  <li>ADB does not support xsi:type based deserialization at runtime</li>
+  <li>No support yet for unwrapping of doc/lit WSDL files (in stub
+  generation)</li>
+  <li>No support yet for rpc/encoded style WSDL documents (in stub
+  generation)</li>
+</ul>
+
+
+<a id="_0_95"></a>
+
+<h2>23 March 2006 - Apache Axis2 Version 0.95 Released!</h2>
+
+<p>[<a href="http://ws.apache.org/axis2/download.cgi">Download 0.95</a>]</p>
+
+<p>This release includes the following features:</p>
+
+<h3 id="head-215f3945a40558f9ad055ed5b6601e8f93706558">Axis2 Complete
+Features List</h3>
+<ol type="1">
+  <li>AXIOM, an XML object model working on StAX (Streaming API for XML)
+    parsing optimized for SOAP 1.1/1.2 Messages. This has complete XML
+    infoset support.</li>
+  <li>Support for One-Way Messaging (In-Only) and Request Response Messaging
+    (In-Out)</li>
+  <li>Module Architecture, mechanism to extend the SOAP Processing Model</li>
+  <li>Module version support , can have multiple versions of the same module
+    and use them depending on the requirement.</li>
+  <li>Context hierarchy</li>
+  <li>Archive based deployment Model and Directory based deployment model</li>
+  <li>JWS like deployment (making Java class into Web service)</li>
+  <li>WSDL Code Generation Tool for Stub and skeletons</li>
+  <li>WS-Addressing, both the submission (2004/08) and final (2005/08)
+    versions</li>
+  <li>WSS4J module for security</li>
+  <li>Improved and user friendly Client API</li>
+  <li>WSDL2Java and Java2WSDL</li>
+  <li>REST (REpresentational State Transfer) Support</li>
+  <li>Transports supports: HTTP, SMTP, TCP, JMS</li>
+  <li>Raw XML providers</li>
+  <li>Support for MTOM/ MIME/ SwA</li>
+  <li>SAAJ implementation</li>
+  <li>DOOM</li>
+  <li>Pack/Unpack capability for the generated code</li>
+  <li>Axis Data Binding - ADB (Framework and Schema Compiler)</li>
+  <li>Numerous bug fixes since last release</li>
+  <li>Transport framework improvements (ListenerManager)-<span
+    style="color: #FF0000">New</span></li>
+  <li>AxisServlet auto start when application server get start up-<span
+    style="color: #FF0000">New</span></li>
+  <li>Module disengagement support-<span
+  style="color: #FF0000">New</span></li>
+  <li>Loading module (.mar) from classpath-<span
+    style="color: #FF0000">New</span></li>
+  <li>Sessions scoping for Application, SOAP, Transport and Request
+    levels-<span style="color: #FF0000">New</span></li>
+</ol>
+
+<p id="head-5bb5aa099717d1d49642f7ae2d63ce5cf94487ad"><strong><em>Axis2
+Experimental Features List</em></strong></p>
+<ol type="1">
+  <li>Server side &amp; client side Web Service Policy support</li>
+  <li>?wsdl and ?xsd support</li>
+  <li>Generating ServiceClient for a given WSDL and invoke the corresponding
+    service using generated client.</li>
+</ol>
+
+<h3 id="head-7dd8e783bb9e22fb00f88748855bb6e500111e12">Major Changes Since
+Last Release</h3>
+<ol type="1">
+  <li>Transport framework improvements (ListenerManager)</li>
+  <li>Changed the way of adding action to mapping (wsamapping) from parameter
+    to child element so with this version onward the way of adding mapping is
+    as follows:</li>
+  <pre>   &lt;actionMapping&gt;MyMapping&lt;/actionMapping&gt;
+   </pre>
+  <li>Refactored following packages in Axiom.
+    <ul>
+      <li>org.apache.axiom.om.impl.llom.builder to
+        org.apache.axiom.om.impl.builder</li>
+      <li>org.apache.axiom.om.impl.llom.mtom to
+      org.apache.axiom.om.impl.mtom</li>
+      <li>org.apache.axiom.om.impl.llom.serialize to
+        org.apache.axiom.om.impl.serialize</li>
+      <li>org.apache.axiom.om.impl.llom.traverse to
+        org.apache.axiom.om.impl.traverse</li>
+    </ul>
+  </li>
+</ol>
+
+<h3 id="head-83371cc3d6961295be042f584c7b74d81cca23c4">Tools Included In This
+Release</h3>
+<ol type="1">
+  <li>Axis2 Web Application (Web App)</li>
+  <li>WSDL2WS- Command line version</li>
+  <!--<li>Service Archive Wizard- eclipse Plugin</li>-->
+</ol>
+
+<h3 id="head-599c5a50552f02ebdeb5f58ef8da289234812ca4">What's Still To
+Do?</h3>
+
+<p>See list of what we think needs to be done, and consider helping out if
+you're interested &amp; able!</p>
+<ol type="1">
+  <li>JAX-RPC 1.1 and/or JAX-WS compliance</li>
+  <li>SOAP Encoding</li>
+  <li>Binary serialization and de-serialization support</li>
+  <li>Management Interface for Axis2</li>
+  <li>Implementation of other Transports.</li>
+  <li>Resource framework implementation (WS-RF) and Enterprise web services
+    such as JSR 109 support</li>
+  <li>Completion of Interop tests</li>
+</ol>
+<a id="_0_94"></a>
+
+<h2>11 January 2006 - Apache Axis2 Version 0.94 Released!</h2>
+
+<p>[<a href="http://ws.apache.org/axis2/download.cgi">Download 0.94</a>]</p>
+
+<p>This release includes the following features:</p>
+
+<h3 id="head-215f3945a40558f9ad055ed5b6601e8f93706558">Complete Features
+List</h3>
+<ol type="1">
+  <li>AXIOM, an XML object model working on StAX (Streaming API for XML)
+    parsing optimized for SOAP 1.1/1.2 Messages. This has complete XML
+    infoset support.</li>
+  <li>Support for One-Way Messaging (In-Only) and Request Response Messaging
+    (In-Out)</li>
+  <li>Module Architecture, mechanism to extend the SOAP Processing Model</li>
+  <li>Module version support , can have multiple versions of the same module
+    and use them depending on the requirement.</li>
+  <li>Context hierarchy</li>
+  <li>Archive based deployment Model and Directory based deployment model</li>
+  <li>JWS like deployment (making Java class into Web service)</li>
+  <li>WSDL Code Generation Tool for Stub and skeletons</li>
+  <li>WS-Addressing, both the submission (2004/08) and final (2005/08)
+    versions</li>
+  <li>WSS4J module for security</li>
+  <li>Improved and user friendly Client API</li>
+  <li>WSDL2Java</li>
+  <li>REST (REpresentational State Transfer) Support</li>
+  <li>Transports supports: HTTP, SMTP, TCP, JMS</li>
+  <li>Raw XML providers</li>
+  <li>Support for MTOM/ MIME/ SwA</li>
+  <li>SAAJ implementation</li>
+  <li>DOOM - <span style="color: #FF0000">New</span></li>
+  <li>Pack/Unpack capability for the generated code- <span
+    style="color: #FF0000">New</span></li>
+  <li>Axis Data Binding - ADB (Framework and Schema Compiler)</li>
+  <li>Numerous bug fixes since last release</li>
+</ol>
+
+<h4 id="head-5bb5aa099717d1d49642f7ae2d63ce5cf94487ad">Axis2 Experimental
+Features List</h4>
+<ol type="1">
+  <li>Sessions scoping for Application, SOAP, Transport and Request
+  levels</li>
+  <li>Server side Web Service Policy support</li>
+  <li>?wsdl and ?xsd support</li>
+  <li>Java2WSDL</li>
+  <li>Generating ServiceClient for a given WSDL and invoke the corresponding
+    service using generated client.</li>
+</ol>
+
+<h3 id="head-7dd8e783bb9e22fb00f88748855bb6e500111e12">Major Changes Since
+Last Release</h3>
+<ol type="1">
+  <li>Fixing of memory leaks</li>
+  <li>Client API changes , Introducing ServiceClient instead of MEPClient,
+    InOnlyMEPClient, InOutMEPClient, Call. (Please note that the above
+    classes will be deprecated in this release.)</li>
+  <li>Module versioning support , can have multiple versions of the same
+    module and use them depending on the requirement.</li>
+  <li>Code generator improved to process multi-port WSDL's properly</li>
+  <li>Packing and unpacking options for the code generated classes</li>
+</ol>
+
+<h3 id="head-83371cc3d6961295be042f584c7b74d81cca23c4">Tools Included In This
+Release</h3>
+<ol type="1">
+  <li>Axis2 Web Application (Web App)</li>
+  <li>WSDL2WS- Eclipse plugin/ Command line version/ IntelliJ IDEA plugin</li>
+  <li>Service Archive Wizard- Eclipse plugin/ IntelliJ IDEA plugin</li>
+</ol>
+
+<h3 id="head-599c5a50552f02ebdeb5f58ef8da289234812ca4">What's Still To
+Do?</h3>
+<ol type="1">
+  <li>JAX-RPC 1.1 and/or JAX-WS compliance</li>
+  <li>SOAP Encoding</li>
+  <li>Binary serialization and de-serialization support</li>
+  <li>Management Interface for Axis2</li>
+  <li>Implementation of other Transports.</li>
+  <li>Resource framework implementation (WS-RF) and Enterprise web services
+    such as JSR 109 support</li>
+  <li>Completion of interop tests</li>
+</ol>
+<a id="_0_93"></a>
+
+<h2>02 December 2005 - Apache Axis2 Version 0.93 Released!</h2>
+
+<p>[<a href="http://ws.apache.org/axis2/download.cgi">Download 0.93</a>]</p>
+
+<p>Axis2 is becoming more and more stable. This 0.93 release contains the
+following additional features:</p>
+<ul>
+  <li>JDK 1.5 compatibility</li>
+  <li>Configurable handler chains using axis2.xml</li>
+  <li>Improved class loader hierarchy</li>
+  <li>Improved security module with dynamic configurability</li>
+  <li>ADB (Axis Data Binding) with complete simple types support and limited
+    complex type support</li>
+  <li>Jalopy based code formatting of generated code</li>
+  <li>Proxy support and NTLM authentication</li>
+  <li>support for rpc/literal</li>
+  <li>And numerous bug fixes after 0.92 release</li>
+</ul>
+
+<h3>Experimental Features List</h3>
+<ol type="1">
+  <li>DOOM - DOM implementation over OM</li>
+  <li>Java2WSDL</li>
+  <li>RPC Support</li>
+</ol>
+
+<h3>Major Changes Since Last Release</h3>
+<ol>
+  <li>Refactored org.apache.axis2.clientapi to org.apache.axis2.client</li>
+  <li>Introduction of Options to configure clients</li>
+  <li>Renaming of descriptors. OperationDescription -&gt; AxisOperation,
+    ServiceDescription -&gt; AxisService, ServiceGroupDescription -&gt;
+    AxisServiceGroup</li>
+</ol>
+We are getting closer to a 1.0 release, the remaining tasks to be completed
+before a 1.0 release include: SOAP 1.1 and 1.2 validation, Our own data
+binding implementation, WSDL Generation. <a id="_0_92"></a>
+
+<h2>26 September 2005 - Apache Axis2 Version 0.92 Released!</h2>
+
+<p>[<a href="http://ws.apache.org/axis2/download.cgi">Download 0.92</a>]</p>
+
+<p>This 0.92 release contains the following additional features:</p>
+<ul>
+  <li>WS-Security support using WSS4J</li>
+  <li>Support for context hierarchy serialization</li>
+  <li>Service Groups</li>
+  <li>and numerous bug fixes after 0.91 release</li>
+</ul>
+
+<h3>The Release Includes Following Tools</h3>
+<ul>
+  <li>Admin Web App</li>
+  <li>WSDL2Java, eclipse Plugin/Command line version</li>
+  <li>Service Archive Wizard, eclipse Plugin</li>
+  <li>Module Archive Wizard, eclipse Plugin</li>
+  <li>Service Archive Wizard, IntelliJ IDEA Plugin</li>
+</ul>
+
+<p><em>We are getting closer to a 1.0 release, the remaining tasks to be
+completed before a 1.0 release include: SOAP 1.1 and 1.2 validation, Our own
+data binding implementation, WSDL Generation.</em></p>
+<a id="_0_91"></a>
+
+<h2>12 August 2005 - Apache Axis2 Version 0.91 Released!</h2>
+
+<p>[<a href="http://ws.apache.org/axis2/download.cgi">Download 0.91</a>]</p>
+
+<p>This 0.91 release is a glimpse of 1.0 that should be coming soon. This
+0.91 release contains the following additional features:</p>
+<ul>
+  <li>File Caching for MTOM</li>
+  <li>SOAP Faults based on the SOAP version and better fault handling</li>
+  <li>Different character encoding support</li>
+  <li>Improved infoset support in AXIOM</li>
+  <li>Improved code generation templates</li>
+  <li>Numerous bug fixes</li>
+</ul>
+<a id="_0_90"></a>
+
+<h2>02 July 2005 - Apache Axis2 Version 0.9 Released!</h2>
+
+<p>[<a href="http://ws.apache.org/axis2/download.cgi">Download 0.9</a>]</p>
+
+<p>Axis2 is taking shape. This 0.9 release is a glimpse of 1.0 that should be
+coming soon. This 0.9 release contains the following additional features:</p>
+<ul>
+  <li>XML Beans based data binding support</li>
+  <li>Support for WS-Addressing, both the submission and final versions</li>
+  <li>REST Web Service Support</li>
+  <li>MTOM/SWA attachments support</li>
+  <li>SAAJ implementation</li>
+</ul>
+<a id="M2"></a>
+
+<h2>07 June 2005 - Apache Axis2 Milestone 2 (M2) Released</h2>
+
+<p>Apache Axis2 is starting to take shape, features implemented in this
+second milestone release are:</p>
+<ul>
+  <li>Modules - a mechanism to extend the SOAP Processing Model</li>
+  <li>Support for WS-Addressing</li>
+  <li>Axis2 Client API - Blocking and Non-Blocking API</li>
+  <li>Support for One-Way Messaging and Request Response Messaging</li>
+  <li>WSDL Code Generation Tool.</li>
+  <li>HTTP, SMTP, and TCP transport Support</li>
+</ul>
+<b>This release also includes following tools:</b>
+<ul>
+  <li>Administration web application,</li>
+  <li>WSDL2WS-Eclipse plug-in</li>
+  <li>Service Archive Wizard- Eclipse plug-in</li>
+  <li>Module Archive Wizard-Eclipse plug-in</li>
+</ul>
+<a id="M1"></a>
+
+<h2>24 February 2005 - Apache Axis2 Milestone 1 (M1) Released</h2>
+
+<p>This first milestone release of Axis2 includes the following features:</p>
+<ul>
+  <li>AXIOM, a SOAP specific streaming XML infoset model for SOAP 1.1/1.2
+    Messages</li>
+  <li>WSDL Object Model built based on the proposed WSDL 2.0 Component
+  Model.</li>
+  <li>Handler framework with the support to specify the location of the
+    Handler in a specific Phase</li>
+  <li>Support to bundle and enable the Handlers as Modules</li>
+  <li>Support for the Synchronous and Asynchronous IN-OUT messaging over HTTP
+    transport</li>
+  <li>Hot deployment of Web Services</li>
+</ul>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/articles.html b/rampart_1_1/xdocs/articles.html
new file mode 100644
index 0000000..ab0d55a
--- /dev/null
+++ b/rampart_1_1/xdocs/articles.html
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+  <title>Axis2 Knowledge Base</title>
+  <meta name="generator" content="amaya 9.2.1, see http://www.w3.org/Amaya/"
+  />
+  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body xml:lang="en">
+<h1>Apache Axis2 References</h1>
+
+<p>This page will contain articles, tutorials, presentations and question
+&amp; answer pairs published on various Web sites on Apache Axis2 engine.
+These references will come as great help in boosting your knowledge on
+Axis2.</p>
+
+<h2>Articles:</h2>
+<ul>
+  <li><a
+    href="http://www.jaxmag.com/itr/online_artikel/psecom,id,747,nodeid,147.html">Axis2
+    - The Future of Web Services</a>- By Srinath Perera, Ajith Ranabahu</li>
+  <li><a
+    href="http://www.developer.com/services/article.php/3525481">Introducing
+    Axis2, the Next Generation of the Apache Web Service Stack</a>- By
+    Srinath Perera</li>
+  <li><a href="http://www.onjava.com/pub/a/onjava/2005/07/27/axis2.html">Web
+    Services Messaging with Apache Axis2: Concepts and Techniques</a>- By
+    Srinath Perera, Ajith Ranabahu (27 July 2005)</li>
+  <li><a href="http://developer.com/java/web/article.php/3529321">Axis2
+    Execution Framework</a>- By Deepal Jayasinghe</li>
+  <li><a
+    href="http://jaxmag.com/itr/online_artikel/psecom,id,757,nodeid,147.html">Axis2
+    Deployment Model</a>- By Deepal Jayasinghe</li>
+  <li><a
+    href="http://www.developer.com/open/article.php/3557741">Understanding
+    Axis2 Deployment Architecture</a>- By Deepal Jayasinghe</li>
+  <li><a
+    href="http://www.wso2.net/articles/axis2/java/2006/02/06/inside-codegen">Inside
+    the Axis2 Code Generator</a>- By Ajith Ranabahu (06 Feb 2006)</li>
+  <li><a
+    href="http://www.developer.com/java/other/article.php/3570031">Utilizing
+    a Non-Java Web Service with Axis2</a>- By Deepal Jayasinghe</li>
+  <li><a href="http://www.developer.com/open/article.php/3589126">Avoiding
+    Mistakes Made Using Axis2</a>- By Deepal Jayasinghe</li>
+  <li><a
+    href="http://www-128.ibm.com/developerworks/java/library/os-ag-axis2mig/index.html">Migrating
+    Apache Axis apps to Axis2 using Apache Geronimo</a>- By Tyler Anderson
+    (07 Mar 2006)</li>
+  <li><a href="http://www.developer.com/java/ent/article.php/3606466">The
+    Axis2 Transport Framework</a>- By Deepal Jayasinghe</li>
+  <li><a
+    href="http://www.wso2.net/articles/axis2/java/2006/08/01/client-api-parameters">Reference
+    Guide to Apache Axis2 Client API Parameters</a>- By Eran Chinthaka (01
+    Aug 2006)</li>
+  <li><a
+    href="http://www.wso2.net/articles/axis2/java/2006/05/17/axis2-performance-testing-round-1">Axis2
+    – Performance Testing Round #1</a>- By Devanum Sirinivas (17 May
+  2006)</li>
+  <li><a
+    href="http://www.wso2.net/articles/axis2/java/2006/09/13/working-with-axis2">Working
+    With Apache Axis2</a>- Deepal Jayasinghe (13 Sep 2006)</li>
+  <li><a href="http://www.developer.com/java/ent/article.php/3613896">Writing
+    an Apache Axis2 Service from Scratch</a>- By Deepal Jayasinghe (20 June
+    2006)</li>
+  <li><a href="http://www.developer.com/java/web/article.php/3620661">Apache
+    Axis2 Session Management</a>- By Deepal Jayasinghe</li>
+</ul>
+
+<h2>Tutorials</h2>
+<ul>
+  <li><a
+    href="http://www.wso2.net/tutorials/axis2/java/2006/06/05/introducing-axis2">Introducing
+    Axis2</a>- By Eran Chinthaka, Chathura Herath (05 June 2006)</li>
+  <li><a
+    href="http://www.wso2.net/tutorials/axis2/2006/06/05/accelerating-web-services">Accelerating
+    Web Services Development with Axis2</a>- By Deepal Jayasinghe, Ajith
+    Ranabahu (05 June 2006)</li>
+  <li><a
+    href="http://www.wso2.net/tutorials/axis2/java/2006/05/29/hello-world">Hello
+    World with Apache Axis2</a>- By Ruchith Fernando (29 May 2006)</li>
+  <li><a
+    href="http://www.wso2.net/tutorials/axis2/java/2006/06/18/operation-service-message-is-destined-to">How
+    Apache Axis2 Finds the Operation and Service a Message is Destined
+    To</a>- By Eran Chinthaka(18 June 2006)</li>
+  <li><a
+    href="http://www.wso2.net/tutorials/axis2/java/2006/07/28/debug-ws">How
+    to Debug a Web Service?</a>- By Ajith Ranabahu (28 July 2006)</li>
+</ul>
+
+<h2>Presentations</h2>
+<ul>
+  <li><a
+    href="http://www.wso2.net/presentations/axis2/java/2006/06/05/why-axis2-the-future-of-web-services">Why
+    Axis2: The Future of Web Services</a>- By Eran Chinthaka (05 June
+  2006)</li>
+  <li><a
+    href="http://www.wso2.net/presentations/axis2/java/2006/08/30/enterprise-applications">Building
+    Enterprise Applications with Axis2-Tutorial from ApacheCon Asia 2006</a>-
+    By Deepal Jayasinghe, Ruchith Fernando (30 Aug 2006)</li>
+  <li><a
+    href="http://www.wso2.net/presentations/axis2/java/2006/06/05/introducing-axis2">Introducing
+    Axis2</a>- By Ajith Ranabahu (05 June 2006)</li>
+</ul>
+
+<h2>Questions &amp; Answers</h2>
+<ul>
+  <li><a href="http://www.wso2.net/kb/67">Setting up Apache Axis2 in eclipse
+    IDE</a>- By Ruchith Fernando (04 April 2006)</li>
+  <li><a href="http://www.wso2.net/kb/83">How do I Embed SimpleHTTPServer in
+    My Application and Deploy a POJO?</a>- By Davanum Sirinivas (09 May
+  2006)</li>
+  <li><a href="http://www.wso2.net/kb/209">How to configure Axis2's HTTP
+    Transport Sender at Client Side?</a>- By Saminda Abeysinghe (11July
+  2006)</li>
+  <li><a href="http://www.wso2.net/kb/175">How to do REST invocation with
+    Axis2/Java ServiceClient?</a>- By Eran Chinthaka (17 June 2006)</li>
+  <li><a href="http://www.wso2.net/kb/90">How to Embed an Axis2 based Web
+    Service in your Webapp?</a>- By Davanum Sirinivas(17 May 2006)</li>
+</ul>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/css/axis-docs.css b/rampart_1_1/xdocs/css/axis-docs.css
new file mode 100644
index 0000000..0f0683f
--- /dev/null
+++ b/rampart_1_1/xdocs/css/axis-docs.css
@@ -0,0 +1,135 @@
+.img-title {

+    text-align: center

+}

+

+.img {

+    text-align: center

+}

+

+.special-td {

+    font-family: Arial;

+    font-size: 10pt;

+    font-weight: bold

+}

+

+.special {

+    font-family: Arial;

+    font-weight: bold;

+    border-style: solid;

+    border-width: 1;

+    padding-left: 4;

+    padding-right: 4;

+    padding-top: 1;

+    padding-bottom: 1;

+    background-color: #C0C0C0;

+    font-size: 10pt

+}

+

+.xml {

+    font-family: Arial;

+    font-size: 10pt;

+    color: #0000FF;

+    font-style: italic

+}

+

+.code {

+    font-family: Courier New;

+    font-size: 10pt;

+    color: #800000

+}

+

+/*

+-----------------------------------------------------------------------

+Generic element styles

+----------------------------------------------------------------------- */

+body {

+    color: #111;

+    font: 11px / 1.5 verdana, arial;

+    margin: 10;

+    padding: 5;

+    border-width: 0;

+    outline-width: 0;

+    list-style-position: outside;

+    display: block;

+}

+

+p {

+}

+

+a, a:link {

+    color: #039;

+    font-size: 12px;

+}

+

+a:hover {

+    color: #03c;

+    font-size: 12px;

+    text-decoration: none;

+}

+

+a:visited {

+    font-size: 12px; /* color: #969; */

+/* No need to discolour visited links as this is a system */

+}

+

+ul, ol {

+    font-size: 11px;

+    text-align: left;

+    list-style-position: outside;

+    display: block;

+    white-space: normal;

+}

+

+table td {

+    font-size: 11px;

+    padding: 0px;

+    spacing: 0px;

+    text-align: left;

+    vertical-align: top;

+}

+

+h1 {

+    color: #000;

+    font-size: 16px;

+    font-weight: bold;

+    background-color: #dcdcdc;

+    padding-left: 10px;

+}

+

+h2 {

+    font-size: 15px;

+    padding-left: 10px;

+    border-bottom: 1px solid #a9a9a9;

+    border-left-color: black;

+}

+

+h3 {

+    font-size: 14px;

+    padding-left: 10px;

+    border-bottom: 1px solid #d3d3d3;

+}

+

+h4 {

+    font-size: 13px;

+}

+

+th {

+    background-color: #f5f5f5;

+    height: 20;

+    paddong: 0px;

+    spacing: 0px;

+}

+

+table {

+    margin: 0;

+    padding: 0;

+    border: solid 0 #dcdcdc;

+}

+

+.header {

+    height: 80px;

+    background-image: url( ../images/doc_header.jpg );

+    background-repeat: no-repeat;

+    background-attachment: scroll;

+    background-position: left top;

+}
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download.cgi b/rampart_1_1/xdocs/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download.html b/rampart_1_1/xdocs/download.html
new file mode 100644
index 0000000..940c139
--- /dev/null
+++ b/rampart_1_1/xdocs/download.html
@@ -0,0 +1,85 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Releases</title>

+  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body>

+<h2>Apache Axis2 Releases</h2>

+

+<div align="left">

+<p>This page has links to the release versions of Axis2 Java. For more

+information, please see <a

+href="http://www.apache.org/dev/release.html">Apache Release FAQ</a>.</p>

+</div>

+

+<div align="center">

+

+<table border="1" style="border-collapse: collapse" width="93%" id="table1">

+  <tbody>

+    <tr>

+      <th>Version</th>

+      <th>Date</th>

+      <th>Description</th>

+    </tr>

+    <tr>

+      <td><a href="download/1_1/download.cgi"><strong>1.1</strong></a></td>

+      <td>13 - 11 - 2006</td>

+      <td>1.1 Release (Mirrored)</td>

+    </tr>

+    <tr>

+      <td><a href="download/1_0/download.cgi"><strong>1.0</strong></a></td>

+      <td>04 - 05 - 2006</td>

+      <td>1.0 Release (Archived)</td>

+    </tr>

+    <tr>

+      <td><a href="download/0_95/download.cgi"><strong>0.95</strong></a></td>

+      <td>23 - 03 - 2006</td>

+      <td>0.95 Release (Archived)</td>

+    </tr>

+    <tr>

+      <td><a href="download/0_94/download.cgi"><strong>0.94</strong></a></td>

+      <td>11- 01 -2006</td>

+      <td>0.94 Release (Archived)</td>

+    </tr>

+    <tr>

+      <td><a href="download/0_93/download.cgi"><strong>0.93</strong></a></td>

+      <td>12- 02 - 2005</td>

+      <td>0.93 Release (Archived)</td>

+    </tr>

+    <tr>

+      <td><a href="download/0_92/download.cgi"><strong>0.92</strong></a></td>

+      <td>26 -08 - 2005</td>

+      <td>0.92 Release (Archived)</td>

+    </tr>

+    <tr>

+      <td><a href="download/0_91/download.cgi"><strong>0.91</strong></a></td>

+      <td>16 -08 - 2005</td>

+      <td>0.91 Release (Archived)</td>

+    </tr>

+    <tr>

+      <td><a href="download/0_9/download.cgi"><strong>0.9</strong></a></td>

+      <td>05 - 07 - 2005</td>

+      <td>0.9 Release (Archived)</td>

+    </tr>

+    <tr>

+      <td><a href="download/M2/download.cgi"><strong>M2</strong></a></td>

+      <td>08 - 06 - 2005</td>

+      <td>Milestone Release #2 (Archived)</td>

+    </tr>

+  </tbody>

+</table>

+</div>

+

+<h4>Axis2 Maven Repository</h4>

+

+<p>Released Axis2 jars are available <a

+href="http://www.apache.org/dist/java-repository/axis2/">here</a></p>

+

+<h4>Nightly Builds</h4>

+Nightly builds are available <a

+href="http://cvs.apache.org/dist/axis2/nightly">here</a> <br>

+Nightly snapshots are available <a

+href="http://cvs.apache.org/repository/org.apache.axis2/jars/">here</a></body>

+</html>

diff --git a/rampart_1_1/xdocs/download/0_9/download.cgi b/rampart_1_1/xdocs/download/0_9/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_9/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/0_9/download.html b/rampart_1_1/xdocs/download/0_9/download.html
new file mode 100644
index 0000000..ad63f8d
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_9/download.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 0.9 Release</title>
+</head>
+
+<body>
+<h2>Axis2 0.9 Release</h2>
+
+<div align="left">
+
+<h3>Source Distribution</h3>
+
+        <p> <a
+        href="http://archive.apache.org/dist/ws/axis2/0_9/axis2-0.9-src.zip"
+        title="http://archive.apache.org/dist/ws/axis2/0_9/axis2-0.9-src.zip">zip</a><br>
+        </p>
+
+        <h3>Binary Distribution</h3>
+
+        <p> <a
+        href="http://archive.apache.org/dist/ws/axis2/0_9/axis2-0.9-bin.zip"
+        title="http://archive.apache.org/dist/ws/axis2/0_9/axis2-0.9-bin.zip">zip</a></p>
+
+</div>
+
+<div align="left">
+<br>
+
+
+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If
+you encounter a problem with this mirror, please select another mirror.  If
+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the
+mirrors list) that should be available.</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+  Other mirrors: 
+  <select name="Preferred">[if-any http][for http]
+    <option value="[http]"
+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]
+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]
+    <option value="[backup]">[backup] (backup)</option>[end][end]
+  </select>
+   
+  <input type="submit" value="Change"></form>
+
+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete
+list of mirrors</a>.</p>
+
+<p><strong>Note:</strong> when downloading from a mirror please check the <a
+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify
+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
+compatible signature from the main Apache site. These can be downloaded by
+following the links above. This <a
+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the
+public keys used for signing release. It is recommended that (when possible)
+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">Web of
+trust</a> is used to confirm the identity of these keys.</p>
+</div>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/download/0_91/download.cgi b/rampart_1_1/xdocs/download/0_91/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_91/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/0_91/download.html b/rampart_1_1/xdocs/download/0_91/download.html
new file mode 100644
index 0000000..54fd2c9
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_91/download.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 0.91 Release</title>
+</head>
+
+<body>
+<h2>Axis2 0.91 Release</h2>
+
+<div align="left">
+<h3>Source Distribution</h3>
+
+<p> <a href="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-src.zip"
+title="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-src.zip">zip</a>
+<a href="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-src.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-src.zip.md5">MD5</a>
+<a href="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-src.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-src.zip.asc">PGP</a>
+<br>
+</p>
+
+<h3>Binary Distribution</h3>
+
+<p> <a href="http://archive.apache.org/ws/axis2/0_91/axis2-0.91-bin.zip"
+title="http://archive.apache.org/ws/axis2/0_91/axis2-0.91-bin.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-bin.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-bin.zip.md5">MD5</a>
+<a href="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-bin.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_91/axis2-0.91-bin.zip.asc">PGP</a>
+<br>
+</p>
+</div>
+
+<div align="left">
+<br>
+
+
+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If
+you encounter a problem with this mirror, please select another mirror.  If
+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the
+mirrors list) that should be available.</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+  Other mirrors: 
+  <select name="Preferred">[if-any http][for http]
+    <option value="[http]"
+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]
+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]
+    <option value="[backup]">[backup] (backup)</option>[end][end]
+  </select>
+   
+  <input type="submit" value="Change"></form>
+
+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete
+list of mirrors</a>.</p>
+
+<p><strong>Note:</strong> when downloading from a mirror please check the <a
+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify
+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
+compatible signature from the main Apache site. These can be downloaded by
+following the links above. This <a
+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the
+public keys used for signing release. It is recommended that (when possible)
+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">Web of
+trust</a> is used to confirm the identity of these keys.</p>
+</div>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/download/0_92/download.cgi b/rampart_1_1/xdocs/download/0_92/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_92/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/0_92/download.html b/rampart_1_1/xdocs/download/0_92/download.html
new file mode 100644
index 0000000..66f2d02
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_92/download.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 0.92 Release</title>
+</head>
+
+<body>
+<h2>Axis2 0.92 Release</h2>
+
+<div>
+<h3>Source Distribution</h3>
+
+<p><a href="http://archive.apache.org/dist/ws/axis2/0_92/axis2-0.92-src.zip"
+title="[preferred]/ws/axis2/0_92/axis2-0.92-src.zip">zip</a> <a
+href="http://www.apache.org/dist/ws/axis2/0_92/axis2-0.92-src.zip.md5"
+title="http://www.apache.org/dist/ws/axis2/0_92/axis2-0.92-src.zip.md5">MD5</a>
+<a href="http://www.apache.org/dist/ws/axis2/0_92/axis2-0.92-src.zip.asc"
+title="http://www.apache.org/dist/ws/axis2/0_92/axis2-0.92-src.zip.asc">PGP</a>
+<br>
+</p>
+
+<h3>Binary Distribution</h3>
+
+<p><a href="http://archive.apache.org/dist/ws/axis2/0_92/axis2-0.92-bin.zip"
+title="[preferred]/ws/axis2/0_92/axis2-0.92-bin.zip">zip</a> <a
+href="http://www.apache.org/dist/ws/axis2/0_92/axis2-0.92-bin.zip.md5"
+title="http://www.apache.org/dist/ws/axis2/0_92/axis2-0.92-bin.zip.md5">MD5</a>
+<a href="http://www.apache.org/dist/ws/axis2/0_92/axis2-0.92-bin.zip.asc"
+title="http://www.apache.org/dist/ws/axis2/0_92/axis2-0.92-bin.zip.asc">PGP</a>
+<br>
+</p>
+
+<h3>Plugins Distribution</h3>
+Axis2 Code Generator eclipse plugin <a
+href="http://archive.apache.org/dist/ws/axis2/0_92/Axis2_Code_Generator.zip"
+title="[preferred]/ws/axis2/0_92/Axis2_Code_Generator.zip">zip</a> <br>
+Axis2 Service Archiver eclipse plugin <a
+href="http://archive.apache.org/dist/ws/axis2/0_92/Axis2_Service_archiver.zip"
+title="[preferred]/ws/axis2/0_92/Axis2_Service_archiver.zip">zip</a> <br>
+Axis2 Wizard Bundle eclipse plugin <a
+href="http://archive.apache.org/dist/ws/axis2/0_92/Axis2_Wizard_Bundle.zip"
+title="[preferred]/ws/axis2/0_92/Axis2_Wizard_Bundle.zip">zip</a> <br>
+IDEA plugin <a
+href="http://archive.apache.org/dist/ws/axis2/0_92/Axis2Ideaplugin.jar"
+title="[preferred]/ws/axis2/0_92/Axis2Ideaplugin.jar">jar</a></div>
+
+<div align="left">
+<br>
+
+
+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If
+you encounter a problem with this mirror, please select another mirror.  If
+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the
+mirrors list) that should be available.</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+  Other mirrors: 
+  <select name="Preferred">[if-any http][for http]
+    <option value="[http]"
+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]
+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]
+    <option value="[backup]">[backup] (backup)</option>[end][end]
+  </select>
+   
+  <input type="submit" value="Change"></form>
+
+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete
+list of mirrors</a>.</p>
+
+<p><strong>Note:</strong> when downloading from a mirror please check the <a
+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify
+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
+compatible signature from the main Apache site. These can be downloaded by
+following the links above. This <a
+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the
+public keys used for signing release. It is recommended that (when possible)
+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">Web of
+trust</a> is used to confirm the identity of these keys.</p>
+</div>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/download/0_93/download.cgi b/rampart_1_1/xdocs/download/0_93/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_93/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/0_93/download.html b/rampart_1_1/xdocs/download/0_93/download.html
new file mode 100644
index 0000000..8483ee3
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_93/download.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 0.93 Release</title>
+</head>
+
+<body>
+<h2>Axis2 0.93 Release</h2>
+
+<div>
+      <h3>Source Distribution</h3>
+
+        <p><a
+        href="http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip"
+        title="[preferred]/ws/axis2/0_93/axis2-0.93-src.zip">zip</a> <a
+        href="http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.md5"
+        title="http://www.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.md5">MD5</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.asc"
+        title="http://www.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.asc">PGP</a>
+        <br>
+        </p>
+
+        <h3>Binary Distribution</h3>
+
+        <p><a
+        href="http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip"
+        title="[preferred]/ws/axis2/0_93/axis2-0.93-bin.zip">zip</a> <a
+        href="http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip.md5"
+        title="http://www.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip.md5">MD5</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip.asc"
+        title="http://www.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip.asc">PGP</a>
+        <br>
+        </p>
+
+        <h3>War Distribution</h3>
+
+        <p><a
+        href="http://archive.apache.org/dist/ws/axis2/0_93/axis2.war">zip</a>
+        <a href="http://archive.apache.org/dist/ws/axis2/0_93/axis2.war.md5"
+        title="http://www.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.md5">MD5</a>
+        <a href="http://archive.apache.org/dist/ws/axis2/0_93/axis2.war.asc"
+        title="http://www.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.asc">PGP</a></p>
+
+</div>
+
+<div align="left">
+<br>
+
+
+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If
+you encounter a problem with this mirror, please select another mirror.  If
+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the
+mirrors list) that should be available.</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+  Other mirrors: 
+  <select name="Preferred">[if-any http][for http]
+    <option value="[http]"
+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]
+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]
+    <option value="[backup]">[backup] (backup)</option>[end][end]
+  </select>
+   
+  <input type="submit" value="Change"></form>
+
+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete
+list of mirrors</a>.</p>
+
+<p><strong>Note:</strong> when downloading from a mirror please check the <a
+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify
+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
+compatible signature from the main Apache site. These can be downloaded by
+following the links above. This <a
+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the
+public keys used for signing release. It is recommended that (when possible)
+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">Web of
+trust</a> is used to confirm the identity of these keys.</p>
+</div>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/download/0_94/download.cgi b/rampart_1_1/xdocs/download/0_94/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_94/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/0_94/download.html b/rampart_1_1/xdocs/download/0_94/download.html
new file mode 100644
index 0000000..f9a9c64
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_94/download.html
@@ -0,0 +1,145 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 0.94 Release</title>
+</head>
+
+<body>
+<h2>Axis2 0.94 Release</h2>
+
+<div align="left">
+<p>See <a
+href="http://ws.apache.org/axis2/0_94/installationguide.html">Installation
+Guide</a> to see description on different downloadables of this release.</p>
+</div>
+
+<div>
+<h3>Standard Distribution</h3>
+
+<p>Binary Distribution <a
+href="[preferred]/ws/axis2/0_94/axis2-std-0.94-bin.zip"
+title="[preferred]/ws/axis2/0_94/axis2-std-0.94-bin.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-std-0.94-bin.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-std-0.94-bin.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-std-0.94-bin.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-std-0.94-bin.zip.asc">PGP</a>
+<br>
+Source Distribution <a
+href="[preferred]/ws/axis2/0_94/axis2-std-0.94-src.zip"
+title="[preferred]/ws/axis2/0_94/axis2-std-0.94-src.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-std-0.94-src.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-std-0.94-src.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-std-0.94-src.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-std-0.94-src.zip.asc">PGP</a>
+<br>
+</p>
+
+<h3>Minimal Distribution</h3>
+
+<p>Binary Distribution <a
+href="[preferred]/ws/axis2/0_94/axis2-min-0.94-bin.zip"
+title="[preferred]/ws/axis2/0_94/axis2-min-0.94-bin.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-min-0.94-bin.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-min-0.94-bin.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-min-0.94-bin.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-min-0.94-bin.zip.asc">PGP</a>
+<br>
+Source Distribution <a
+href="[preferred]/ws/axis2/0_94/axis2-min-0.94-src.zip"
+title="[preferred]/ws/axis2/0_94/axis2-min-0.94-src.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-min-0.94-src.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-min-0.94-src.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-min-0.94-src.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-min-0.94-src.zip.asc">PGP</a>
+<br>
+</p>
+
+<h3>War Distribution</h3>
+
+<p><a href="[preferred]/ws/axis2/0_94/axis2.war"
+title="[preferred]/ws/axis2/0_94/axis2.war">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2.war.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2.war.md5">MD5</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2.war.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2.war.asc">PGP</a></p>
+
+<h3>Documents Distribution</h3>
+
+<p><a href="[preferred]/ws/axis2/0_94/axis2-0.94-docs.zip"
+title="[preferred]/ws/axis2/0_94/axis2-0.94-docs.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-0.94-docs.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-0.94-docs.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_94/axis2-0.94-docs.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/axis2-0.94-docs.zip.asc">PGP</a>
+<br>
+</p>
+
+<h3>Plugins Distribution</h3>
+
+<p><strong></strong>Axis2 Service Archiver eclipse plugin <a
+href="[preferred]/ws/axis2/0_94/Axis2_Service_Archiver.zip"
+title="[preferred]/ws/axis2/0_94/Axis2_Service_Archiver.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/Axis2_Service_Archiver.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/Axis2_Service_Archiver.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_94/Axis2_Service_Archiver.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/Axis2_Service_Archiver.zip.asc">PGP</a>
+<br>
+Axis2 Code Generator eclipse plugin <a
+href="[preferred]/ws/axis2/0_94/Axis2_Code_Generator.zip"
+title="[preferred]/ws/axis2/0_94/Axis2_Code_Generator.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/Axis2_Code_Generator.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/Axis2_Code_Generator.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_94/Axis2_Code_Generator.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/Axis2_Code_Generator.zip.asc">PGP</a><br>
+IDEA plugin <a href="[preferred]/ws/axis2/0_94/Axis2Idea_plug_in.zip"
+title="[preferred]/ws/axis2/0_94/Axis2Idea_plug_in.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_94/Axis2Idea_plug_in.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_94/Axis2Idea_plug_in.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_94/Axis2Idea_plug_in.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_94/Axis2Idea_plug_in.zip.asc">PGP</a></p>
+</div>
+
+<div align="left">
+<br>
+
+
+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If
+you encounter a problem with this mirror, please select another mirror.  If
+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the
+mirrors list) that should be available.</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+  Other mirrors: 
+  <select name="Preferred">[if-any http][for http]
+    <option value="[http]"
+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]
+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]
+    <option value="[backup]">[backup] (backup)</option>[end][end]
+  </select>
+   
+  <input type="submit" value="Change"></form>
+
+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete
+list of mirrors</a>.</p>
+
+<p><strong>Note:</strong> when downloading from a mirror please check the <a
+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify
+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
+compatible signature from the main Apache site. These can be downloaded by
+following the links above. This <a
+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the
+public keys used for signing release. It is recommended that (when possible)
+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">Web of
+trust</a> is used to confirm the identity of these keys.</p>
+</div>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/download/0_95/download.cgi b/rampart_1_1/xdocs/download/0_95/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_95/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/0_95/download.html b/rampart_1_1/xdocs/download/0_95/download.html
new file mode 100644
index 0000000..e2e3908
--- /dev/null
+++ b/rampart_1_1/xdocs/download/0_95/download.html
@@ -0,0 +1,111 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 0.95 Release</title>
+</head>
+
+<body>
+<h2>Axis2 0.95 Release</h2>
+
+<p>See <a href="http://ws.apache.org/axis2/0_95/installationguide.html">Installation
+Guide</a> to seedescription on different downloadables of this release.</p>
+
+<div>
+<h3>Standard Distribution</h3>
+Binary Distribution <a
+href="[preferred]/ws/axis2/0_95/axis2-std-0.95-bin.zip"
+title="[preferred]/ws/axis2/0_95/axis2-std-0.95-bin.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-std-0.95-bin.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-std-0.95-bin.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-std-0.95-bin.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-std-0.95-bin.zip.asc">PGP</a>
+<br>
+Source Distribution <a
+href="[preferred]/ws/axis2/0_95/axis2-std-0.95-src.zip"
+title="[preferred]/ws/axis2/0_95/axis2-std-0.95-src.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-std-0.95-src.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-std-0.95-src.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-std-0.95-src.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-std-0.95-src.zip.asc">PGP</a>
+<br>
+
+
+<h3>Minimal Distribution</h3>
+Binary Distribution <a
+href="[preferred]/ws/axis2/0_95/axis2-min-0.95-bin.zip"
+title="[preferred]/ws/axis2/0_95/axis2-min-0.95-bin.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-min-0.95-bin.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-min-0.95-bin.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-min-0.95-bin.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-min-0.95-bin.zip.asc">PGP</a>
+<br>
+Source Distribution <a
+href="[preferred]/ws/axis2/0_95/axis2-min-0.95-src.zip"
+title="[preferred]/ws/axis2/0_95/axis2-min-0.95-src.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-min-0.95-src.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-min-0.95-src.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-min-0.95-src.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-min-0.95-src.zip.asc">PGP</a>
+<br>
+
+
+<h3>War Distribution</h3>
+<a href="[preferred]/ws/axis2/0_95/axis2.war"
+title="[preferred]/ws/axis2/0_95/axis2.war">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2.war.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2.war.md5">MD5</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2.war.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2.war.asc">PGP</a><br>
+
+
+<h3>Documents Distribution</h3>
+
+<p><a href="[preferred]/ws/axis2/0_95/axis2-0.95-docs.zip">zip</a> <a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-0.95-docs.zip.md5"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-0.95-docs.zip.md5">MD5</a>
+<a
+href="http://archive.apache.org/dist/ws/axis2/0_95/axis2-0.95-docs.zip.asc"
+title="http://archive.apache.org/dist/ws/axis2/0_95/axis2-0.95-docs.zip.asc">PGP</a>
+<br>
+</p>
+</div>
+
+<div align="left">
+<br>
+
+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If
+you encounter a problem with this mirror, please select another mirror.  If
+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the
+mirrors list) that should be available.</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+  Other mirrors: 
+  <select name="Preferred">[if-any http][for http]
+    <option value="[http]"
+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]
+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]
+    <option value="[backup]">[backup] (backup)</option>[end][end]
+  </select>
+   
+  <input type="submit" value="Change"></form>
+
+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete
+list of mirrors</a>.</p>
+
+<p><strong>Note:</strong> when downloading from a mirror please check the <a
+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify
+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
+compatible signature from the main Apache site. These can be downloaded by
+following the links above. This <a
+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the
+public keys used for signing release. It is recommended that (when possible)
+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">Web of
+trust</a> is used to confirm the identity of these keys.</p>
+</div>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/download/1_0/download.cgi b/rampart_1_1/xdocs/download/1_0/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/1_0/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/1_0/download.html b/rampart_1_1/xdocs/download/1_0/download.html
new file mode 100644
index 0000000..c8adffa
--- /dev/null
+++ b/rampart_1_1/xdocs/download/1_0/download.html
@@ -0,0 +1,104 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 1.0 Release</title>
+</head>
+
+<body>
+<h2>Axis2 1.0 Release</h2>
+
+<div align="left">
+<p>See <a href="http://ws.apache.org/axis2/1_0/installationguide.html#Download_Axis2">Installation Guide</a> to see
+description on different downloadables of this release.</p>
+</div>
+
+<div>
+<h3>Standard Distribution</h3>
+Binary Distribution <a href="[preferred]/ws/axis2/1_0/axis2-std-1.0-bin.zip"
+title="[preferred]/ws/axis2/1_0/axis2-std-1.0-bin.zip">zip</a> <a
+href="http://www.apache.org/dist/ws/axis2/1_0/axis2-std-1.0-bin.zip.md5"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-std-1.0-bin.zip.md5">MD5</a>
+<a href="http://www.apache.org/dist/ws/axis2/1_0/axis2-std-1.0-bin.zip.asc"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-std-1.0-bin.zip.asc">PGP</a>
+<br>
+Source Distribution <a href="[preferred]/ws/axis2/1_0/axis2-std-1.0-src.zip"
+title="[preferred]/ws/axis2/1_0/axis2-std-1.0-src.zip">zip</a> <a
+href="http://www.apache.org/dist/ws/axis2/1_0/axis2-std-1.0-src.zip.md5"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-std-1.0-src.zip.md5">MD5</a>
+<a href="http://www.apache.org/dist/ws/axis2/1_0/axis2-std-1.0-src.zip.asc"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-std-1.0-src.zip.asc">PGP</a>
+<br>
+
+
+<h3>Minimal Distribution</h3>
+Binary Distribution <a href="[preferred]/ws/axis2/1_0/axis2-min-1.0-bin.zip"
+title="[preferred]/ws/axis2/1_0/axis2-min-1.0-bin.zip">zip</a> <a
+href="http://www.apache.org/dist/ws/axis2/1_0/axis2-min-1.0-bin.zip.md5"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-min-1.0-bin.zip.md5">MD5</a>
+<a href="http://www.apache.org/dist/ws/axis2/1_0/axis2-min-1.0-bin.zip.asc"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-min-1.0-bin.zip.asc">PGP</a>
+<br>
+Source Distribution <a href="[preferred]/ws/axis2/1_0/axis2-min-1.0-src.zip"
+title="[preferred]/ws/axis2/1_0/axis2-min-1.0-src.zip">zip</a> <a
+href="http://www.apache.org/dist/ws/axis2/1_0/axis2-min-1.0-src.zip.md5"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-min-1.0-src.zip.md5">MD5</a>
+<a href="http://www.apache.org/dist/ws/axis2/1_0/axis2-min-1.0-src.zip.asc"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-min-1.0-src.zip.asc">PGP</a>
+<br>
+
+
+<h3>War Distribution</h3>
+<a href="[preferred]/ws/axis2/1_0/axis2.war"
+title="[preferred]/ws/axis2/1_0/axis2.war">zip</a> <a
+href="http://www.apache.org/dist/ws/axis2/1_0/axis2.war.md5"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2.war.md5">MD5</a> <a
+href="http://www.apache.org/dist/ws/axis2/1_0/axis2.war.asc"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2.war.asc">PGP</a><br>
+
+
+<h3>Documents Distribution</h3>
+<a href="[preferred]/ws/axis2/1_0/axis2-1.0-docs.zip"
+title="[preferred]/ws/axis2/1_0/axis2-1.0-docs.zip">zip</a> <a
+href="http://www.apache.org/dist/ws/axis2/1_0/axis2-1.0-docs.zip.md5"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-1.0-docs.zip.md5">MD5</a>
+<a href="http://www.apache.org/dist/ws/axis2/1_0/axis2-1.0-docs.zip.asc"
+title="http://www.apache.org/dist/ws/axis2/1_0/axis2-1.0-docs.zip.asc">PGP</a>
+<br>
+</div>
+
+<div align="left">
+<br>
+
+
+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If
+you encounter a problem with this mirror, please select another mirror.  If
+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the
+mirrors list) that should be available.</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+  Other mirrors: 
+  <select name="Preferred">[if-any http][for http]
+    <option value="[http]"
+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]
+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]
+    <option value="[backup]">[backup] (backup)</option>[end][end]
+  </select>
+   
+  <input type="submit" value="Change"></form>
+
+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete
+list of mirrors</a>.</p>
+
+<p><strong>Note:</strong> when downloading from a mirror please check the <a
+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify
+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
+compatible signature from the main Apache site. These can be downloaded by
+following the links above. This <a
+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the
+public keys used for signing release. It is recommended that (when possible)
+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">Web of
+trust</a> is used to confirm the identity of these keys.</p>
+</div>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/download/1_1/download.cgi b/rampart_1_1/xdocs/download/1_1/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/1_1/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/1_1/download.html b/rampart_1_1/xdocs/download/1_1/download.html
new file mode 100644
index 0000000..37bcb14
--- /dev/null
+++ b/rampart_1_1/xdocs/download/1_1/download.html
@@ -0,0 +1,189 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Axis2 1.1 Release</title>

+</head>

+

+<body>

+<h2>Axis2 1.1 Release</h2>

+

+<div>

+

+<table border="1" cellpadding="1">

+  <tbody>

+    <tr>

+      <th scope="col">Distribution Name</th>

+      <th scope="col">Description</th>

+      <!--<th scope="col">Items</th>-->

+      <th scope="col">Download</th>

+    </tr>

+    <!--<tr>

+    <td><strong>Minimal Distribution - Source</strong></td>

+    <td background="#_Toc96698083"><p>This will contain the sources of

+    Axis2 minimal distribution. One can generate a binary distribution

+    from this by typing  <span class="style1">$maven dist-min-bin.

+    </span>(<a href="http://ws.apache.org/axis2/1_1/installationguide.html#_Toc96698083">Set

+    up Axis2 environment</a> before running this command)</p>

+    </td>

+    <td><ul>

+    <li>sources of Axis2 common, java2wsdl , adb and core modules</li>

+    <li>README.TXT and release-notes.html</li>

+    </ul>

+    </td>

+    <td><a href="[preferred]/ws/axis2/1_1/axis2-min-1.1-src.zip"

+    title="[preferred]/ws/axis2/1_1/axis2-min-1.1-src.zip">zip</a> <a

+    href="http://www.apache.org/dist/ws/axis2/1_1/axis2-min-1.1-src.zip.md5"

+    title="http://www.apache.org/dist/ws/axis2/1_1/axis2-min-1.1-src.zip.md5">MD5</a>

+    <a

+    href="http://www.apache.org/dist/ws/axis2/1_1/axis2-min-1.1-src.zip.asc"

+    title="http://www.apache.org/dist/ws/axis2/1_1/axis2-min-1.1-src.zip.asc">PGP</a></td>

+    </tr>-->

+    <tr>

+      <td><a name="std-bin"></a><strong>Standard Binary

+      Distribution</strong></td>

+      <td>This is the complete version of Axis2 and will contain useful

+        samples as well. Useful for some one to get familiar with Axis2.

+        (Since WS-Addressing implementation module is engaged in to Axis2, by

+        default, this distribution will contain addressing.mar. But  the

+        other modules that are being developed within Axis2 will not be

+        included here and are available to be downloaded separately from <a

+        href="../../modules/index.html">here</a>.)</td>

+      <!--<td><ul>

+          <li>all the content of minimal-binary distribution</li>

+          <li>Contents of codegen and doom modules</li>

+          <li>Samples</li>

+          <li>addressing-1.1.mar</li>

+        </ul>

+      </td>-->

+      <td><a href="[preferred]/ws/axis2/1_1/axis2-std-1.1-bin.zip"

+        title="[preferred]/ws/axis2/1_1/axis2-std-1.1-bin.zip">zip</a> <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2-std-1.1-bin.zip.md5"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2-std-1.1-bin.zip.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2-std-1.1-bin.zip.asc"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2-std-1.1-bin.zip.asc">PGP</a></td>

+    </tr>

+    <!--<tr>

+      <td><strong>Minimal Binary Distribution</strong></td>

+      <td>This distribution is aimed at advanced users who will be embedding

+        Axis2. It will contain the minimal runtime required to act as a Web

+        service client and/or a server (axis2-kernel-1.1.jar will contain

+        compiled versions of common and core modules.)</td>

+      <td><ul>

+          <li>axis2-kernel-1.1.jar, axis2-adb-1.1.jar</li>

+          <li>third party distributable libraries</li>

+          <li>README.TXT and release-notes.html</li>

+        </ul>

+      </td>

+      <td><a href="[preferred]/ws/axis2/1_1/axis2-min-1.1-bin.zip"

+        title="[preferred]/ws/axis2/1_1/axis2-min-1.1-bin.zip">zip</a> <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2-min-1.1-bin.zip.md5"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2-min-1.1-bin.zip.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2-min-1.1-bin.zip.asc"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2-min-1.1-bin.zip.asc">PGP</a></td>

+    </tr>-->

+    <tr>

+      <td><a name="src"></a><strong> Source Distribution</strong></td>

+      <td>This will contain the sources of Axis2 standard distribution. One

+        can generate a binary distribution from this by typing <span

+        class="style1">$maven dist-standard-bin. </span>(<a

+        href="http://ws.apache.org/axis2/1_1/installationguide.html#env-src">Set

+        up Axis2 environment</a> before running this command)</td>

+      <!--<td><ul>

+          <li>all the content of minimal-source distribution</li>

+          <li>Contents of codegen and doom modules</li>

+          <li>Samples</li>

+        </ul>

+      </td>-->

+      <td><a href="[preferred]/ws/axis2/1_1/axis2-std-1.1-src.zip"

+        title="[preferred]/ws/axis2/1_1/axis2-std-1.1-src.zip">zip</a> <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2-std-1.1-src.zip.md5"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2-std-1.1-src.zip.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2-std-1.1-src.zip.asc"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2-std-1.1-src.zip.asc">PGP</a></td>

+    </tr>

+    <tr>

+      <td><a name="war"></a><strong>WAR (Web Archive)

+      Distribution</strong></td>

+      <td>This will be the web application of Axis2 which can be deployed in

+        most of the servlet containers.</td>

+      <!--<td><ul>

+          <li>all the contents of the minimal distribution</li>

+          <li>Admin Web Application</li>

+        </ul>

+      </td>-->

+      <td><a href="[preferred]/ws/axis2/1_1/axis2.war"

+        title="[preferred]/ws/axis2/1_1/axis2.war">zip</a> <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2.war.md5"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2.war.md5">MD5</a>

+        <a href="http://www.apache.org/dist/ws/axis2/1_1/axis2.war.asc"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2.war.asc">PGP</a></td>

+    </tr>

+    <tr>

+      <td><strong>Documents Distribution</strong></td>

+      <td>This will contain all the documentation in one package.</td>

+      <!--<td><ul>

+          <li>xdocs</li>

+          <li>javadocs</li>

+        </ul>

+      </td>-->

+      <td><a href="[preferred]/ws/axis2/1_1/axis2-1.1-docs.zip"

+        title="[preferred]/ws/axis2/1_1/axis2-1.1-docs.zip">zip</a> <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2-1.1-docs.zip.md5"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2-1.1-docs.zip.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dist/ws/axis2/1_1/axis2-1.1-docs.zip.asc"

+        title="http://www.apache.org/dist/ws/axis2/1_1/axis2-1.1-docs.zip.asc">PGP</a></td>

+    </tr>

+    <!--<tr>

+    <td><a name="Plugin" id="Plugin">Plugin Distribution</a></td>

+    <td>This will contain the plugins that are created for Eclipse and

+    IDEA.</td>

+    <td><ul>

+    <li>IntelliJ IDEA plugins</li>

+    <li>Eclipse plugins</li>

+    </ul>

+    </td>

+    </tr>-->

+  </tbody>

+</table>

+</div>

+

+<div align="left">

+<br>

+

+

+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"

+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If

+you encounter a problem with this mirror, please select another mirror.  If

+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the

+mirrors list) that should be available.</p>

+

+<form action="[location]" method="get" id="SelectMirror">

+  Other mirrors: 

+  <select name="Preferred">[if-any http][for http]

+    <option value="[http]"

+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]

+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]

+    <option value="[backup]">[backup] (backup)</option>[end][end]

+  </select>

+   

+  <input type="submit" value="Change"></form>

+

+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete

+list of mirrors</a>.</p>

+

+<p><strong>Note:</strong> when downloading from a mirror please check the <a

+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify

+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>

+compatible signature from the main Apache site. These can be downloaded by

+following the links above. This <a

+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the

+public keys used for signing release. It is recommended that (when possible)

+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">Web of

+trust</a> is used to confirm the identity of these keys.</p>

+</div>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/download/M2/download.cgi b/rampart_1_1/xdocs/download/M2/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/download/M2/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/download/M2/download.html b/rampart_1_1/xdocs/download/M2/download.html
new file mode 100644
index 0000000..345106d
--- /dev/null
+++ b/rampart_1_1/xdocs/download/M2/download.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 M2 Release</title>
+</head>
+
+<body>
+<h2>Axis2 Milestone 2 Release</h2>
+
+<div align="left">
+<h3>Source Distribution</h3>
+
+<p> <a href="http://cvs.apache.org/dist/axis/v2.0-M2/axis2-M2-src.zip"
+title="http://cvs.apache.org/dist/axis/v2.0-M2/axis2-M2-src.zip">zip</a><br>
+</p>
+
+<h3>Binary Distribution</h3>
+
+<p> <a href="http://cvs.apache.org/dist/axis/v2.0-M2/axis2-M2-bin.zip"
+title="http://cvs.apache.org/dist/axis/v2.0-M2/axis2-M2-bin.zip">zip</a></p>
+</div>
+
+<div align="left">
+<br>
+
+
+<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
+border="0"></a>[end] The currently selected mirror is <b>[preferred]</b>.  If
+you encounter a problem with this mirror, please select another mirror.  If
+all mirrors are failing, there are <i>backup</i> mirrors (at the end of the
+mirrors list) that should be available.</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+  Other mirrors: 
+  <select name="Preferred">[if-any http][for http]
+    <option value="[http]"
+    selected="selected">[http]</option>[end][end][if-any ftp][for ftp]
+    <option value="[ftp]">[ftp]</option>[end][end][if-any backup][for backup]
+    <option value="[backup]">[backup] (backup)</option>[end][end]
+  </select>
+   
+  <input type="submit" value="Change"></form>
+
+<p>You may also consult the <a href="http://www.apache.org/mirrors/">complete
+list of mirrors</a>.</p>
+
+<p><strong>Note:</strong> when downloading from a mirror please check the <a
+href="http://www.apache.org/dev/release-signing#md5">md5sum</a> and verify
+the <a href="http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
+compatible signature from the main Apache site. These can be downloaded by
+following the links above. This <a
+href="http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains the
+public keys used for signing release. It is recommended that (when possible)
+a <a href="http://www.apache.org/dev/release-signing#web-of-trust">web of
+trust</a> is used to confirm the identity of these keys.</p>
+</div>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/faq.html b/rampart_1_1/xdocs/faq.html
new file mode 100644
index 0000000..40184a8
--- /dev/null
+++ b/rampart_1_1/xdocs/faq.html
@@ -0,0 +1,437 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Axis2 FAQ</title>
+  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1>Frequently Asked Questions on Apache Axis2</h1>
+
+<p>Got a question to be answered on Axis2? Then this document is just what
+the doctor ordered.</p>
+
+<h2>Ask your Questions Here</h2>
+
+<p>Any other doubts/issues e-mail your questions to:</p>
+<ul>
+  <li>Developers send to:<a
+    href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></li>
+  <li>Users send to:<a
+    href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a></li>
+</ul>
+
+<p>Prefix subject with [Axis2]. To subscribe to mailing list see <a
+href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p>
+
+<h2>Content of Questions and Answers</h2>
+<ul>
+  <li>General
+    <ul>
+      <li><a href="#a1">I'm having a problem using Axis2. What should I do?</a></li>
+      <li><a href="#a2">What is OMElement, What does it represents?</a></li>
+      <li><a href="#a3">Integration security tests fail with JDK 1.5<br>
+        </a></li>
+        
+    </ul>
+  </li>
+  <li>Class Loading Issues
+    <ul>
+      <li><a href="#b1">How do I access resources in my service /module
+        archive file?</a></li>
+    </ul>
+  </li>
+  <li>Client API
+    <ul>
+      <li><a href="#c1">I want to do request response Messaging, Where should
+        I look?<br>
+        </a></li>
+      <li><a href="#c2">I want to do One Way Messaging, Where should I
+        look?</a></li>
+      <li><a href="#c3">Error: 'to do two Transport Channels the Addressing
+        Modules must be engaged'</a></li>
+      <li><a href="#c4">I have engaged addressing and when I trying to invoke
+        a service I am getting an exception</a></li>
+      <li><a href="#c5">What is Axis Repository?</a></li>
+    </ul>
+  </li>
+  <li>Maven
+    <ul>
+      <li><a href="#d1">Error when trying to run maven on Axis2</a></li>
+      <li><a href="#d2">I have problems building with maven 1.1</a></li>
+      <li><a href="#d3">What versions of maven are supported?</a></li>
+      <li><a href="#d4">What are the frequently used maven commands?</a></li>
+    </ul>
+  </li>
+  <li>Services
+    <ul>
+      <li><a href="#e1">How do I have multiple services in one service
+        archive?</a></li>
+    </ul>
+  </li>
+  <li>Web Archive/ Server Side
+    <ul>
+      <li><a href="#f1">I see an internal server error page when I try to
+        view the WSDL file.<br>
+        </a></li>
+    </ul>
+  </li>
+  <li>WSDL and Code Generation
+    <ul>
+      <li><a href="#g1">Given a WSDL 2.0 document with HTTP Binding to
+        WSDL2Java, should it not be able to generate a client stub</a></li>
+    </ul>
+  </li>
+</ul>
+
+<h2>General</h2>
+<ol>
+<li><a name="a1"></a><strong>I'm having a problem using Axis2. What should I do?</strong><br>
+
+    <p>First make sure you go through user guide and this FAQ. If you are using a released version of Axis2, then there is a possibility that your problem has already being fixed in the latest code. Download Axis2 nightly builds from <a href="http://ws.zones.apache.org/dist/axis2/nightly/">here</a> and test again with it. </p>
+    <p>If the problem still persists then try to search for your question in our <a href="http://marc.theaimsgroup.com/?l=axis-dev&r=1&w=2">developer</a> or <a href="http://marc.theaimsgroup.com/?l=axis-user&r=1&w=2">user</a> mailing archives as it might have already being answered. </p>
+   <p>If your problem is not answered in the mailing list, now it is the best time to post your question to axis-user mailing list. If you think it is a bug, please fill a bug report in <a href="http://issues.apache.org/jira/browse/AXIS2">JIRA</a>. Please attach all the supportive information, like your wsdl, schema, clients, services, stacktraces, etc., to the JIRA issue you created, as it will help one of our contributors to re-create the problem. <b>PLEASE DO NOT ASK QUESTIONS USING JIRA AND USE IT ONLY AS A ISSUE TRACKER.</b> </p> 
+    <p>If you are asking for an explanation of a feature in Axis2, there is a possibility that there is an article or FAQ written on it. Please do a search on the web as there are lot of article written and hosted by various sources on the web. </p>
+    <p><b>Note</b> : When you ask questions in the mailing list, please remember that everyone working in our project are volunteers. No-one can be forced to fix your bugs (check <a href="http://www.apache.org/foundation/faq.html#what-is-apache-NOT-about">here</a>).</p>
+    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make sure you add enough information about your problem with stacktraces and any other supportive information. It will improve the chances of your question being answered. Prefixing your mail subject with prefixes like "URGENT" will not help you in any means. Yes we also accept all the blames about Axis2 in these mailing lists, as those will definitely help us to improve Axis2 :) . </p>
+  </li>
+  <li><a name="a3"></a><strong>Integration security tests fail with JDK
+    1.5</strong><br>
+
+    <p>You have to add Bouncy Castle as a JCE provider. Add the following
+    entry to java.security file of the appropriate JRE on your machine. This
+    file is available in the lib\security\ directory within the JRE
+    directory.</p>
+    <p>security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider</p>
+    <p>security.provider.# will have to be decided depending on the existing
+    entries in the java.security file</p>
+    <p>NOTE: For Windows XP the correct version can be found using 'java
+    -version'. The correct file is JRE (typically c:\Program
+    Files\Java\jre&lt;version&gt;\lib\security\java.security.</p>
+  </li>
+</ol>
+
+<h2>Class Loading Issues</h2>
+<ol>
+  <li><a name="b1"></a><strong>How do I access resources that I put into my
+    service /module archive file?</strong></li>
+
+  <p>Axis2 has the notion of service isolation where each service or module
+  gets its own class loader. Using this class loader you can access any
+  resource that you put into your service archive file. You may want to
+  access your resources from different locations. For example,</p>
+
+  <p>1. A third party module wants to access your resources, then the
+  scenario is as follows:</p>
+  <pre>   AxisService myService =
+   messageContext.getAxisConfiguration().getAxisService("serviceName"); </pre>
+
+   <p>or</p>
+<pre>
+   AxisService myService = msgCtx.getAxisService();</pre>
+
+  <p>Then you can ask for service class loader using which you can access its
+  resources</p>
+  <pre>   ClassLoader clsLoader = myService.getServiceClassLoader();
+   clsLoader.getResourceAsStream("myResource");</pre>
+
+  <p>2. To initialize service implementation class at the MessageReceiver
+  level the following steps need to be taken</p>
+  <pre>   AxisService service = msgCtx.getAxisService();
+   ClassLoader clsLoader = service.getServiceClassLoader();
+   Class.forName("serviceName",clsLoader,true);</pre>
+
+  <p>NOTE : Axis2 default MessageReciver uses the same technique to
+  initialize service implementations</p>
+
+  <p>3. If you want to load your resources at the service implementation
+  class then the scenario is as follows</p>
+  <pre>   getClass().getClassLoader().getResourceAsStream("myResource");</pre>
+</ol>
+
+<h2>Client API</h2>
+<ol>
+  <li><a name="c1"></a><strong>I want to do request response Messaging, Where
+    should I look?</strong><br>
+
+    <p>Look at the <a
+    href="https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/ServiceClient.java"
+    target="_blank">ServiceClient</a> class, for more information please read
+    the <a href="1_1/userguide.html" target="_blank">User's Guide</a></p>
+  </li>
+  <li><a name="c2"></a><strong>I want to do One Way Messaging, Where should I
+    look?</strong><br>
+
+    <p>From Axis2 0.94 onwards, both request-response and one way messaging
+    will be handled by <a
+    href="https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/ServiceClient.java"
+    target="_blank">ServiceClient</a>.</p>
+  </li>
+  <li><a name="c3"></a><strong>When I try to do a non blocking call with <pre>useSeparateListener=true</pre> I get the error <i>to do two Transport Channels
+    the Addressing Modules must be engaged</i>, Why is this?</strong><br>
+
+    <p>To do the two transport Channel invocation you need to engage the
+    addressing module. You can enable it by un-commenting the entry in the
+    axis2.xml file or Call.engageModule(QName). But addressing is enabled by
+    default.</p>
+  </li>
+  <li><a name="c4"></a><strong>I have engaged addressing and when I was trying to
+    invoke a service I am getting an exception </strong><br>
+
+    <p>If you have engaged addressing , then you have to have wsa:action, the required WS-Addressing header. so you have to call  <br>
+    option.setAction("urn:myaction"); <br>
+    It should be not that the action should be a URI.</p>
+  </li>
+  <li><a name="c5"><strong>What is Axis2 Repository?</strong></a><br>
+
+    <p>Repository stores the configuration of Axis2, the users should specify
+    the repository folder starting the Axis Server (HTTP or TCP). In the case
+    of tomcat it is the webapps/axis2/WEB-INF folder. Following picture shows
+    a sample repository.</p>
+    <img src="images/faq/1.jpg">
+    <p>Modules and services have a archive format defined and they are
+    automatically picked up by Axis2 when they are copied to corresponding
+    folders.</p>
+  </li>
+</ol>
+
+<h2>Maven</h2>
+<ol>
+  <li><a name="d1"></a><strong>I just installed maven and it gives an error
+    when I was trying to run maven on Axis2 ......</strong>
+    <p>Axis2 requires itest plugin to run some of the tests. Better get it
+    using following command.</p>
+    <ul>
+      <li>maven plugin:download -DgroupId=maven-itest-plugin
+        -DartifactId=maven-itest-plugin -Dversion=1.0
+        -Dmaven.repo.remote=http://ws.zones.apache.org/~dims/maven</li>
+    </ul>
+  </li>
+  <li><p><a name="d2"></a><strong>I have problems building with maven
+    1.1</strong> ....<br>
+    </p>
+    <p>It seems that maven 1.1 doesn't come bundled with the required
+    artifact plugin. Run following to get it updated<br>
+    </p>
+    <ul>
+      <li>maven plugin:download -DgroupId=maven
+        -DartifactId=maven-artifact-plugin -Dversion=1.6</li>
+      <p>You may need to update the itest plugin too, using the above command
+      in #1.</p>
+    </ul>
+  </li>
+  <li><p><a name="d3"></a><strong>What versions of maven are supported?
+    </strong> ....<br>
+    </p>
+    <p>Versions 1.0.2 and 1.1 are supported. Maven2 as of yet is not supported. 
+    </p>
+  </li>
+  <li><a name="d4"></a><strong>What are the frequently used maven
+    commands?</strong></li>
+
+  <p></p>
+
+  <table border="1" align="center">
+    <tbody>
+      <tr>
+        <th scope="col">
+          <div align="left">
+          Command</div>
+        </th>
+        <th scope="col">
+          <div align="left">
+          Description</div>
+        </th>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven</div>
+        </td>
+        <td>
+          <div align="left">
+          download relevant jars, if not available and compile and run tests
+          of the system.</div>
+        </td>
+      </tr>
+      <tr>
+        <td>maven clean</td>
+        <td>Clean all the stuff build so far, that are in the target folder.
+          This will not clean the jar repository</td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven test</div>
+        </td>
+        <td>
+          <div align="left">
+          run only the tests. Will do automatic compilation of changed
+          sources as well. This will not run soap interop tests</div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven clean all-tests</div>
+        </td>
+        <td>
+          <div align="left">
+          Clean up and run all off line and on line tests</div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven itest</div>
+        </td>
+        <td>
+          <div align="left">
+          To run the online-mode tests for say the modules/integration Run
+          "maven itest" from modules/integration</div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven test itest</div>
+        </td>
+        <td>
+          <div align="left">
+          To run all tests for say the modules/integration     Run "maven
+          test itest" from modules/integration</div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven -g</div>
+        </td>
+        <td>
+          <div align="left">
+          List down all the commands available with maven</div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven multiproject</div>
+        </td>
+        <td>
+          <div align="left">
+          generate this site</div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven idea:multiproject</div>
+        </td>
+        <td>
+          <div align="left">
+          generate IDEA .ipr, .iml and .iws project files</div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+          maven -Dmaven.test.skip=true</div>
+        </td>
+        <td>Builds Axis2 and skips all the tests</td>
+      </tr>
+      <tr>
+        <td>maven dist-min-bin</td>
+        <td>Will generate the binary version of Axis2 minimal
+        distribution</td>
+      </tr>
+      <tr>
+        <td>maven dist-min-src</td>
+        <td>Will generate the source version of Axis2 minimal
+        distribution</td>
+      </tr>
+      <tr>
+        <td>maven dist-std-bin</td>
+        <td>Will generate the binary version of Axis2 standard
+        distribution</td>
+      </tr>
+      <tr>
+        <td>maven dist-std-bin</td>
+        <td>Will generate the source version of Axis2 standard
+        distribution</td>
+      </tr>
+      <tr>
+        <td>maven release</td>
+        <td>Generate all the distributales for Axis2</td>
+      </tr>
+      <tr>
+        <td>maven clean jar -Dmaven.test.skip=true -o</td>
+        <td>This will clean all the target folder and compile your source,
+          without running the tests or downloading snapshots of dependancies.
+          This is the quickest way of compiling Axis2 sources. However it is
+          highly recommended to run the tests all the time</td>
+      </tr>
+    </tbody>
+  </table>
+  <br>
+</ol>
+
+<h2>Services</h2>
+<ol>
+  <li><a name="e1"></a><strong>How do I have multiple services in one service
+    archive?</strong></li>
+
+  <p>It's just a matter of writing a services.xml file to configure the
+  service or services in an archive file. The corresponding services.xml
+  SHOULD look like below:</p>
+  <pre>   &lt;serviceGroup&gt;
+   &lt;service <strong>name="myService1"</strong>&gt;
+   ...........................
+   &lt;/service&gt;
+
+   &lt;service <strong>name="myService2"</strong>&gt;
+   ...........................
+   &lt;/service&gt;
+   &lt;serviceGroup&gt;</pre>
+
+  <p>NOTE : The name attribute is a compulsory attribute which will become
+  the name of the services. But if you want to have one service in the
+  archive file then there are two options, either have one service inside
+  serviceGroup tag or have only one service tag as shown below in your
+  services.xml, in which case, name of the service will be the name of the
+  archive file and you can not override that.</p>
+  <pre>   &lt;service&gt;
+   ...............
+   &lt;service&gt;</pre>
+</ol>
+
+<h2>Web Archive / Server side</h2>
+<ol>
+  <li><a name="f1"></a><strong>I see an internal server error page when I try
+    to view the WSDL file.</strong><br>
+
+    <p>This happens specifically with tomcat 4.x and 5.0 in a JDK 1.5
+    environment. The reason is that the system picks up a wrong transformer
+    factory class. This can be solved simply by putting the xalan-2.7.0.jar
+    (found <a href="http://www.apache.org/dist/java-repository/xalan/jars/"
+    target="_blank">here</a>) into the axis2/WEB-INF/lib directory</p>
+  </li>
+</ol>
+
+<h2>WSDL and Code Generation</h2>
+<ol>
+  <li><a name="g1"></a><strong>Given a WSDL 2.0 document with HTTP Binding to
+    WSDL2Java, should it not be able to generate a client stub similar to
+    what happens given a WSDL 1.1 document with SOAP Binding?</strong></li>
+
+  <p>WSDL 2.0 is not supported yet. We do not have a working WSDL 2.0
+  reader.</p>
+
+  <p>However the codegen engine works off WOM (not WSDL4J) hence if the WSDL
+  2.0 reader is done, we are all set to generate code for it.</p>
+
+  <p>And yes, it is perfectly possible for the codegen to generate code for
+  the HTTP binding. We already have the client API support for making the
+  REST calls and it should be a matter of putting in a correct template.</p>
+</ol>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/guidelines.html b/rampart_1_1/xdocs/guidelines.html
new file mode 100644
index 0000000..5c2fb39
--- /dev/null
+++ b/rampart_1_1/xdocs/guidelines.html
@@ -0,0 +1,53 @@
+<head>

+    <title>Guidelines</title>

+    <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+<h2>Mail Guideline</h2>

+<p>Every volunteer project obtains its strength from the people involved in it. 

+Mailing lists provide a simple and effective communication mechanism. </p>

+<p>You are welcome to join any of our mailing lists (or all of them if you 

+wish). You can choose to lurk, or actively participate. It's up to you.</p>

+<p><b>Before you join these lists, you should make sure that you read and follow 

+the information below... </b></p>

+<p>We ask that you do your best to respect the charter of the appropriate 

+mailing list. There are generally two types of lists that you can join. </p>

+<ul>

+	<li>The &quot;User&quot; list is where you should send questions and comments about 

+	configuration, setup, usage and other &quot;user&quot; types of questions.</li>

+	<li>The &quot;Developer&quot; list is where you should should send questions and 

+	comments about the actual software source code and general &quot;development&quot; 

+	types of questions. </li>

+</ul>

+<p><b>Summary : Prefix each message with &quot;[Axis2]&quot;</b> <br>

+You may already know that Axis 1.x is still going parallel with Axis 2.0. So for 

+everyone's convenience prefix the subject of <b>every mail </b>about Axis 2.0 

+with [Axis2].</p>

+<p><b>Summary: Join the lists that are appropriate for your discussion.</b> <br>

+Please make sure that you are joining the list that is appropriate for the topic 

+or product that you would like to discuss.</p>

+<p><b>Summary: Do not abuse resources in order to get help.</b> <br>

+Asking your configuration or user type of question on the developers list 

+because you think that you will get help more quickly by going directly to the 

+developers instead of to the user base is not very nice. Chances are that doing 

+this will actually prevent people from answering your question because it is 

+clear that you are trying to abuse resources.</p>

+<p><b>Summary: Do your best to ensure that you are not sending HTML or &quot;Stylelized&quot; 

+email to the list.</b> <br>

+If you are using Outlook or Outlook Express or Eudora, chances are that you are 

+sending HTML email by default. There is usually a setting that will allow you to 

+send &quot;Plain Text&quot; email. If you are using Microsoft products to send email, 

+there are several bugs in the software that prevent you from turning off the 

+sending of HTML email. Please read this page as well...</p>

+<p><b>Summary: Watch where you are sending email.</b> <br>

+The majority of our mailing lists have set the Reply-To to go back to the list. 

+That means that when you Reply to a message, it will go to the list and not to 

+the original author directly. The reason is because it helps facilitate 

+discussion on the list for everyone to benefit from. Be careful of this as 

+sometimes you may intend to reply to a message directly to someone instead of 

+the entire list.</p>

+<p><b>Summary: Do not crosspost messages.</b> <br>

+In other words, pick a mailing list and send your messages to that mailing list 

+only. Do not send your messages to multiple mailing lists. The reason is that 

+people may be subscribed to one list and not to the other. Therefore, some 

+people may only see half of the conversation. </p>

+<p>&nbsp;</p>

diff --git a/rampart_1_1/xdocs/images/breadcrumbs-bg.gif b/rampart_1_1/xdocs/images/breadcrumbs-bg.gif
new file mode 100644
index 0000000..2d10304
--- /dev/null
+++ b/rampart_1_1/xdocs/images/breadcrumbs-bg.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/images/faq/1.jpg b/rampart_1_1/xdocs/images/faq/1.jpg
new file mode 100644
index 0000000..2be7ec4
--- /dev/null
+++ b/rampart_1_1/xdocs/images/faq/1.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/images/h2-bg.gif b/rampart_1_1/xdocs/images/h2-bg.gif
new file mode 100644
index 0000000..0ddb32e
--- /dev/null
+++ b/rampart_1_1/xdocs/images/h2-bg.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/images/leftcolumn-bg.gif b/rampart_1_1/xdocs/images/leftcolumn-bg.gif
new file mode 100644
index 0000000..a2faa21
--- /dev/null
+++ b/rampart_1_1/xdocs/images/leftcolumn-bg.gif
Binary files differ
diff --git a/rampart_1_1/xdocs/index.html b/rampart_1_1/xdocs/index.html
new file mode 100644
index 0000000..10e3a7a
--- /dev/null
+++ b/rampart_1_1/xdocs/index.html
@@ -0,0 +1,294 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Apache Axis2/Java - Next Generation Web Services</title>

+  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Welcome to Apache Axis2/Java</h1>

+

+<h2>13th November 2006 - Apache Axis2/Java Version 1.1 Released!</h2>

+

+<p>[ <a

+href="http://ws.apache.org/axis2/download.cgi"><strong>Download</strong></a>

+] | [ <a href="1_1/index.html"><strong>Documents Home</strong></a> ]</p>

+

+<p>Apache Axis2 is the core engine for Web services. It is a complete

+re-design and re-write of the widely used <a

+href="http://ws.apache.org/axis/">Apache Axis</a> SOAP stack to build on the

+lessons learnt from Apache Axis.</p>

+

+<h3><em>Apache Axis Project in a Nutshell:</em></h3>

+

+<p>Apache Axis is an implementation of the SOAP ("Simple Object Access

+Protocol") <a href="http://www.w3.org/TR/SOAP">submission</a> to W3C.</p>

+

+<p>Extract from the draft W3C specification:</p>

+

+<blockquote>

+  "SOAP is a lightweight protocol for exchanging structured information in a

+  decentralized, distributed environment. It is an XML based protocol that

+  consists of three parts: an envelope that defines a framework for

+  describing what is in a message and how to process it, a set of encoding

+  rules for expressing instances of application-defined datatypes, and a

+  convention for representing remote procedure calls and

+responses."</blockquote>

+

+<p>This project is a follow-on to the <a

+href="http://ws.apache.org/soap">Apache SOAP project</a>.</p>

+

+<p>Please see the <a href="http://ws.apache.org/axis/ref.html">Axis Reference

+Library</a> for a list of technical resources that should prove useful on

+this project.</p>

+

+<h3><em>Why Apache Axis2:</em></h3>

+

+<p>A new architecture for Axis was introduced during the August 2004 Summit

+in Colombo, Sri Lanka. This new architecture Axis2 is based on is more

+flexible, efficient and configurable in comparison to <a

+href="http://ws.apache.org/axis/java/architecture-guide.html">Axis1.x

+architecture</a>. Some well established concepts from Axis 1.x, like handlers

+etc., have been preserved in this new architecture.</p>

+

+<p>Apache Axis2 not only supports SOAP 1.1 and SOAP 1.2, but it also has

+integrated support for the widely popular <a

+href="http://www.xfront.com/REST-Web-Services.html">REST style of Web

+services</a>: the same business logic implementation can offer both a WS-*

+style interface as well as a REST style interface simultaneously.</p>

+

+<p>Apache Axis2 is more efficient, more modular and more XML-oriented than

+the older version. It is carefully designed to support the easy addition of

+plug-in "modules" that extend its functionality for features such as security

+and reliability. <a

+href="http://ws.apache.org/axis2/modules/index.html">Modules</a> currently

+available or under development include:</p>

+<ul>

+  <li><a

+    href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrm"

+    target="_blank">WS-ReliableMessaging</a> - Supported by <a

+    href="http://ws.apache.org/sandesha/sandesha2/">Apache Sandesha2</a></li>

+  <li><a

+    href="http://www-128.ibm.com/developerworks/library/specification/ws-tx/#coor"

+    target="_blank">WS-Coordination</a>  and <a

+    href="http://www-128.ibm.com/developerworks/library/specification/ws-tx/#atom"

+    target="_blank">WS-AtomicTransaction</a> - Supported by <a

+    href="http://ws.apache.org/kandula/">Apache Kandula2</a></li>

+  <li><a

+    href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss"

+    target="_blank">WS-Security</a> - Supported by <a

+    href="http://ws.apache.org/axis2/modules/index.html">Apache

+  Rampart</a></li>

+  <li><a href="http://www.w3.org/Submission/ws-addressing/"

+    target="_blank">WS-Addressing</a> -Module included as part of Axis2

+  core</li>

+</ul>

+

+<p>Apache Axis2 is built on <a

+href="http://ws.apache.org/commons/axiom/index.html">Apache AXIOM</a>, a new

+high performant, pull-based XML object model that was released two days

+ago.</p>

+

+<p>Axis2 comes with many new features, enhancements and industry

+specification implementations. The key features offered are as follows:</p>

+<ul>

+  <li><p style="margin-bottom: 0in"><strong>Speed</strong> - Axis2 uses its

+    own object model and StAX (Streaming API for XML) parsing to achieve

+    significantly greater speed than earlier versions of Apache Axis.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>Low memory foot print</strong>-

+    Axis2 was designed ground-up keeping low memory foot print in mind.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>AXIOM</strong> - Axis2 comes with

+    its own light-weight object model, AXIOM, for message processing which is

+    extensible, highly performant and is developer convenient.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong><a name="Hot_Deployment"></a>Hot

+    Deployment</strong> - Axis2 is equipped with the capability of

+    deploying Web service &amp; handlers while the system is up and running.

+    In other words, new services can be added to the system without having to

+    shut down the server. Simply drop the required Web service archive into

+    the services directory in the repository and the deployment model will

+    automatically deploy the service and make it available for use.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>Asynchronous Web

+    services</strong> - Axis2 now supports asynchronous Web services &amp;

+    asynchronous Web services invocation using non-blocking clients and

+    transports .</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>MEP Support</strong> - Axis2 now

+    comes handy with the flexibility to support Message Exchange Patterns

+    (MEPs) with in-built support for basic MEPs defined in WSDL 2.0.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>Flexibility</strong> - The Axis2

+    architecture gives the developer complete freedom to insert extensions

+    into the engine for custom header processing, system management, and

+    <em>anything else you can imagine</em>.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>Stability</strong> - Axis2

+    defines a set of published interfaces which change relatively slowly

+    compared to the rest of Axis.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>Component-oriented

+    Deployment</strong> - You can easily define reusable networks of Handlers

+    to implement common patterns of processing for your applications, or to

+    distribute to partners.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>Transport Framework</strong> - We

+    have a clean and simple abstraction for integrating and using Transports

+    (i.e., senders and listeners for SOAP over various protocols such as

+    SMTP, FTP, message-oriented middleware, etc), and the core of the engine

+    is completely transport-independent.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>WSDL support</strong> - Axis2

+    supports the Web Service Description Language, version <a

+    href="http://www.w3.org/TR/wsdl">1.1</a> and <a

+    href="http://www.w3.org/TR/wsdl20/">2.0</a>, which allows you to easily

+    build stubs to access remote services, and also to automatically export

+    machine-readable descriptions of your deployed services from Axis2.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>Add-ons</strong> - Several Web

+    services specifications have been incorporated including <a

+    href="http://ws.apache.org/wss4j/" target="_blank">WSS4J</a> for security

+    (Apache Rampart), <a href="http://ws.apache.org/sandesha/"

+    target="_blank">Sandesha</a> for reliable messaging, <a

+    href="http://ws.apache.org/kandula/" target="_blank">Kandula</a> which is

+    an encapsulation of WS-Coordination, WS-AtomicTransaction and

+    WS-BusinessActivity.</p>

+  </li>

+  <li><p style="margin-bottom: 0in"><strong>Composition and

+    Extensibility</strong> - Modules and phases improve support for

+    composability and extensibility. Modules supports composability and is

+    able to add support for new WS-* specifications in a simple and clean

+    manner. They are however not <a href="#Hot_Deployment">hot deployable</a>

+    as they change the overall behavior of the system.</p>

+  </li>

+</ul>

+

+<p>We hope you enjoy using Axis2. Please note that this is an open-source

+effort. If you feel the code could use new features or fixes, or the

+documentation can be improved, please get involved and lend us a hand! The

+Axis developer community welcomes your participation.</p>

+

+<p>Let us know what you think! Send your feedback on Axis2 to "<a

+href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a>". Make sure

+to prefix the subject of the mail with [Axis2].</p>

+

+<h2>Features of Axis2 Latest Version</h2>

+

+<p>Apache Axis2 Version 1.1 comes to you with better Axis2 Databinding

+Framework (ADB) support, <a

+href="http://www.w3.org/TR/SOAP-attachments">attachments API</a>, Spring and

+complete support for SOAP with Attachments (SwA). Check out the complete

+features list below.</p>

+

+<h3>Programming Model</h3>

+<ul>

+  <li>Improved, XML-centric client API including full WSDL and policy

+  support</li>

+  <li>Support for any message exchange pattern</li>

+  <li>Synchronous and asynchronous calls</li>

+  <li>Archived service deployment model</li>

+  <li>Archived module deployment model supporting controlled extensibility

+    with versioning support</li>

+  <li><a href="#Hot_Deployment">Hot deployment</a></li>

+  <li>WS-Policy driven code generation extensions</li>

+  <li>Flexible service life cycle model</li>

+  <li>Support for querying service's WSDL (using ?wsdl), schema (using ?xsd)

+    and policies (using ?policy)</li>

+</ul>

+

+<h3>Supported Specifications</h3>

+<ul>

+  <li>SOAP 1.1 and 1.2</li>

+  <li>Message Transmission Optimization Mechanism (MTOM), XML Optimized

+    Packaging (XOP) and SOAP with Attachments</li>

+  <li>WSDL 1.1, including both SOAP and HTTP bindings</li>

+  <li>WS-Addressing (submission and final)</li>

+  <li>WS-Policy</li>

+  <li>SAAJ 1.1</li>

+</ul>

+

+<h3>Transports</h3>

+<ul>

+  <li>HTTP</li>

+  <li>SMTP</li>

+  <li>JMS</li>

+  <li>TCP</li>

+</ul>

+

+<h3>Supported Data Bindings</h3>

+<ul>

+  <li>Axis Data Binding (ADB)</li>

+  <li>XMLBeans</li>

+  <li>JibX</li>

+  <li>JaxMe</li>

+</ul>

+

+<h2><a name="Tools_included_in this_Release">Tools Included In This

+Release</a></h2>

+

+<p>[<a href="http://ws.apache.org/axis2/tools/index.html"

+target="_blank">Download Tool Plug-ins</a>]</p>

+<ol type="1">

+  <li>Axis2 Web Application (Web App)</li>

+  <li>WSDL2WS- <a href="tools/1_1/eclipse/wsdl2java-plugin.html"

+    target="_blank">eclipse plug-in</a><a>/</a> <a

+    href="tools/1_1/CodegenToolReference.html" target="_blank">Command

+    line version</a><a>/</a><a

+    href="tools/1_1/idea/Idea_plug-in_userguide.html#WSDL2Java_Code_Generation"

+    target="_blank">IntelliJ IDEA plug-in</a><a>/</a><a

+    href="tools/1_1/maven-plugins/maven-wsdl2code-plugin.html"

+    target="_blank">Maven2 WSDL2Code Plug-in</a></li>

+  <li>Service Archive Wizard- <a

+    href="tools/1_1/eclipse/servicearchiver-plugin.html"

+    target="_blank">eclipse plug-in</a>/ <a

+    href="tools/1_1/idea/Idea_plug-in_userguide.html#Create_Service_Archive"

+    target="_blank">IntelliJ IDEA plug-in</a>/ <a

+    href="tools/1_1/maven-plugins/maven-aar-plugin.html"

+    target="_blank">Maven2 AAR Plug-in</a></li>
+  <li>Java2WSDL- <a href="tools/1_1/maven-plugins/maven-java2wsdl-plugin.html"

+    target="_blank">Maven2 Java2WSDL Plug-in</a>
+    </li>

+</ol>

+

+<h2>Extension Modules</h2>

+<ul>

+  <li>Apache Rampart: Supporting WS-Security (and soon WS-Policy)</li>

+  <li>Apache Sandesha2: Supporting WS-Reliable Messaging</li>

+</ul>

+(Apache Axis2 comes built in with a module that supports WS-Addressing.)

+

+<h2>Known Issues and Limitations</h2>

+<ul>

+  <li>JaxMe and JAXBRI data binding support is experimental</li>

+  <li>AXIS2-595: Hot re-deployment in Apache Tomcat has problems</li>

+  <li>Axis Data Binding (ADB) does not support the following construct(s):

+    <ol>

+      <li>AXIS2-983: Support for Simple Type Union and Simple Type List</li>

+      <li>AXIS2-1092: Support for xs:list inside an xs:simpleType</li>

+      <li>AXIS2-1093: Support for xs:union inside xs:simpleType</li>

+    </ol>

+  </li>

+  <li>No support yet for unwrapping of doc/lit WSDL files (in stub

+  generation)</li>

+  <li>No support yet for rpc/encoded style WSDL documents (in stub

+  generation)</li>
+   <li>Idea plugin shows random behavior when XMLBeans is used</li>

+</ul>

+

+<h2>Archived News</h2>

+

+<p>For information on previous Axis2 releases running up to the current

+release see <a href="archived_news.html" target="_blank">'Axis2 Archived

+News'</a> page.</p>

+For other news items from Apache Software Foundation see:

+<ul>

+  <li><a

+    href="http://www.apachenews.org/archives/cat_apache_webservices_index.html">Web

+    services related news on the Apache News Blog Online</a></li>

+  <li><a href="http://www.apachenews.org/">The Apache News Blog

+  Online</a></li>

+</ul>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/maven-help.html b/rampart_1_1/xdocs/maven-help.html
new file mode 100644
index 0000000..82690e3
--- /dev/null
+++ b/rampart_1_1/xdocs/maven-help.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <title>Quick Guide to Maven for Axis 2.0</title>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1 align="center">Quick Guide to Maven for Axis 2.0</h1>
+
+<h2 align="left">Introduction</h2>
+
+<p align="left"><a href="http://maven.apache.org">Maven</a> is used as the
+build tool of Axis 2.0. This document will provide a quick guide to use maven
+with your developments.</p>
+
+<h2 align="left">Commands</h2>
+
+<table border="1" align="center">
+  <tbody>
+    <tr>
+      <th scope="col">
+        <div align="left">
+        Command</div>
+      </th>
+      <th scope="col">
+        <div align="left">
+        Description</div>
+      </th>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven</div>
+      </td>
+      <td>
+        <div align="left">
+        download relevant jars, if not available and compile and run tests of
+        the system.</div>
+      </td>
+    </tr>
+    <tr>
+      <td>maven clean</td>
+      <td>Clean all the stuff build so far, that are in the target folder.
+        This will not clean the jar repository</td>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven test</div>
+      </td>
+      <td>
+        <div align="left">
+        run only the tests. Will do automatic compilation of changed sources
+        as well. This will not run soap interop tests</div>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven clean all-tests</div>
+      </td>
+      <td>
+        <div align="left">
+        Clean up and run all off line and on line tests</div>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven itest</div>
+      </td>
+      <td>
+        <div align="left">
+        To run the online-mode tests for say the modules/integration Run
+        "maven itest" from modules/integration</div>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven test itest</div>
+      </td>
+      <td>
+        <div align="left">
+        To run all tests for say the modules/integration Run "maven test
+        itest" from modules/integration</div>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven -g</div>
+      </td>
+      <td>
+        <div align="left">
+        List down all the commands available with maven</div>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven multiproject</div>
+      </td>
+      <td>
+        <div align="left">
+        generate this site</div>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven idea:multiproject</div>
+      </td>
+      <td>
+        <div align="left">
+        generate IDEA .ipr, .iml and .iws project files</div>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <div align="left">
+        maven -Dmaven.test.skip=true</div>
+      </td>
+      <td>
+        <div align="left">
+        </div>
+        Builds Axis2 and skips all the tests</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+
+
+<h2 align="left">Maven FAQ</h2>
+
+<p><i>1. I have problems with maven 1.1</i></p>
+
+<p>It seems that maven 1.1 doesn't come bundled with the required itest
+plugin and artifact plugin. Run followings to get it updated<br>
+1. maven plugin:download -DgroupId=maven-itest-plugin
+-DartifactId=maven-itest-plugin -Dversion=1.0
+-Dmaven.repo.remote=http://www.openejb.org/maven,http://www.ibiblio.org/maven
+<br>
+2. maven plugin:Download -DgroupId=maven -DartifactId=maven-artifact-plugin
+-Dversion=1.6</p>
+
+<p align="left"> </p>
+
+<p align="left"> </p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/modules/addressing/index.html b/rampart_1_1/xdocs/modules/addressing/index.html
new file mode 100644
index 0000000..8f34a30
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/addressing/index.html
@@ -0,0 +1,21 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>:: Axis2 - WS-Addressing Implementation ::</title>
+  <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body>
+<h1>Axis2 - WS-Addressing Implementation</h1>
+
+<p>This is an implementation of WS-Addressing submission version (2004-08)
+and WS-Addressing 2005-08 versions. Complete WS-Addressing Final version will
+be available, once the specification itself gets finalized.</p>
+
+<p>Axis2 engine contains addressing support by default. So you may need not
+put this module, unless you specifically want to use a particular release of
+this module.</p>
+
+<p> </p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/modules/download.cgi b/rampart_1_1/xdocs/modules/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/modules/index.html b/rampart_1_1/xdocs/modules/index.html
new file mode 100644
index 0000000..863e7fd
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/index.html
@@ -0,0 +1,107 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>:: Axis2 Modules ::</title>

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Apache Axis2 Modules</h1>

+

+<p>Axis2 architecture is flexible enough to extend its functionalities using

+modules. This page is maintained to keep track of the relevant modules that

+are developed on top of Axis2.</p>

+

+<table width="675" border="1" align="center" cellpadding="1">

+  <caption align="top">  </caption>

+  <tbody>

+    <tr>

+      <th width="68" scope="col">Name</th>

+      <th width="147" scope="col">Description</th>

+      <th width="52" scope="col">Version</th>

+      <th width="80" scope="col">Compatible Axis2 version</th>

+      <th width="97" scope="col">Downloads</th>

+      <th width="191" scope="col">Comments</th>

+    </tr>

+    <tr>

+      <td><a href="addressing/index.html">Addressing</a></td>

+      <td>This is an implementation of WS-Addressing submission version

+        (2004-08) and WS-Addressing 2005-08 versions.</td>

+      <td>1.1</td>

+      <td>1.1</td>

+      <td><a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/addressing-1.1.mar"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/addressing-1.1.mar">mar</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/addressing-1.1.mar.md5"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/addressing-1.1.mar.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/addressing-1.1.mar.asc"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/addressing-1.1.mar.asc">PGP</a></td>

+      <td> </td>

+    </tr>

+   

+   <tr>

+    <td><a

+    href="../1_1/soapmonitor-module.html">SOAP Monitor</a></td>

+    <td>SOAP Monitor utility provides a way for Web services developers to monitor the SOAP messages being sent/received without requiring any special configuration or restarting of the server</td>

+    <td>1.1</td>

+    <td>1.1</td>

+    <td><a

+    href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/soapmonitor-1.1.zip"

+    title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/soapmonitor-1.1.zip">zip</a>

+    <a

+    href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/soapmonitor-1.1.zip.md5"

+    title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/soapmonitor-1.1.zip.md5">MD5</a>

+    <a

+    href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/soapmonitor-1.1.zip.asc"

+    title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_1/soapmonitor-1.1.zip.asc">PGP</a>  </td>

+    <td> &nbsp;</td>

+    </tr>

+

+    <!--<tr>

+    <td><a

+    href="http://ws.apache.org/sandesha/sandesha2/index.html">Sandesha2</a></td>

+    <td>An implementation of WS-RM specification February 2005</td>

+    <td>1.1</td>

+    <td>1.1</td>

+    <td><a

+    href="http://apache.hoxt.com/ws/sandesha2/1_1/sandesha2-1.1-src.zip"

+    title="http://apache.hoxt.com/ws/sandesha2/1_1/sandesha2-1.1-src.zip">zip</a>

+    <a

+    href="http://www.apache.org/dist/ws/sandesha2/1_1/sandesha2-1.1-src.zip.md5"

+    title="http://www.apache.org/dist/ws/sandesha2/1_1/sandesha2-1.1-src.zip.md5">MD5</a>

+    <a

+    href="http://www.apache.org/dist/ws/sandesha2/1_1/sandesha2-1.1-src.zip.asc"

+    title="http://www.apache.org/dist/ws/sandesha2/1_1/sandesha2-1.1-src.zip.asc">PGP</a></td>

+    <td>Click <a

+    href="http://cvs.apache.org/dist/sandesha/nightly/">here</a> to get

+    the Sandesha2 nightly builds compatible with the latest Axis2

+    snapshot.</td>

+    </tr>-->

+    <!--<tr>

+    <td><a href="rampart/1_0/security-module.html">Rampart</a></td>

+    <td>This module provides the WS-Security functionalities for Axis2,

+    based on <A href="http://ws.apache.org/wss4j/">Apache WSS4J</A> and 

+    <A href="http://xml.apache.org/security/">Apache XML-Security</A> implementations </td>

+    <td>1.0</td>

+    <td>1.0</td>

+    <td><a

+    href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar"

+    title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar">mar</a>

+    <a

+    href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar.md5"

+    title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar.md5">MD5</a>

+    <a

+    href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar.asc"

+    title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar.asc">PGP</a></td>

+    <td> </td>

+    </tr>-->

+  </tbody>

+</table>

+<br>

+Previous module releases are available <a href="previous.html">here</a>

+

+<p>  </p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/modules/previous.html b/rampart_1_1/xdocs/modules/previous.html
new file mode 100644
index 0000000..44dc81b
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/previous.html
@@ -0,0 +1,173 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>:: Axis2 Modules Archive ::</title>
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1>Apache Axis2 Modules Archive</h1>
+
+<table width="675" border="1" align="center" cellpadding="1">
+  <tbody>
+    <tr>
+      <th width="68" scope="col">Name</th>
+      <th width="147" scope="col">Description</th>
+      <th width="52" scope="col">Version</th>
+      <th width="80" scope="col">Compatible Axis2 version</th>
+      <th width="97" scope="col">Downloads</th>
+      <th width="191" scope="col">Comments</th>
+    </tr>
+    <tr>
+      <td><a href="addressing/index.html">Addressing</a></td>
+      <td>This is an implementation of WS-Addressing submission version
+        (2004-08) and WS-Addressing 2005-08 versions.</td>
+      <td>1.0</td>
+      <td>1.0</td>
+      <td><a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_0/addressing-1.0.mar"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_0/addressing-1.0.mar">mar</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_0/addressing-1.0.mar.md5"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_0/addressing-1.0.mar.md5">MD5</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_0/addressing-1.0.mar.asc"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/addressing/1_0/addressing-1.0.mar.asc">PGP</a></td>
+      <td> </td>
+    </tr>
+    <tr>
+      <td><a href="rampart/1_0/security-module.html">Rampart</a></td>
+      <td>This module provides the WS-Security functionalities for Axis2,
+        based on <a href="http://ws.apache.org/wss4j/">Apache WSS4J</a> and
+        <a href="http://xml.apache.org/security/">Apache XML-Security</a>
+        implementations </td>
+      <td>1.0</td>
+      <td>1.0</td>
+      <td><a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar">mar</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar.md5"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar.md5">MD5</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar.asc"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/modules/rampart/1_0/rampart-1.0.mar.asc">PGP</a></td>
+      <td> </td>
+    </tr>
+    <tr>
+      <td><a
+        href="http://ws.apache.org/sandesha/sandesha2/index.html">Sandesha2</a></td>
+      <td>An implementation of WS-RM specification February 2005</td>
+      <td>1.0</td>
+      <td>1.0</td>
+      <td><a
+        href="http://apache.hoxt.com/ws/sandesha2/1_0/sandesha2-1.0-src.zip"
+        title="http://apache.hoxt.com/ws/sandesha2/1_0/sandesha2-1.0-src.zip">zip</a>
+        <a
+        href="http://www.apache.org/dist/ws/sandesha2/1_0/sandesha2-1.0-src.zip.md5"
+        title="http://www.apache.org/dist/ws/sandesha2/1_0/sandesha2-1.0-src.zip.md5">MD5</a>
+        <a
+        href="http://www.apache.org/dist/ws/sandesha2/1_0/sandesha2-1.0-src.zip.asc"
+        title="http://www.apache.org/dist/ws/sandesha2/1_0/sandesha2-1.0-src.zip.asc">PGP</a></td>
+      <td>Click <a
+        href="http://cvs.apache.org/dist/sandesha/nightly/">here</a> to get
+        the Sandesha2 nightly builds compatible with the latest Axis2
+        snapshot.</td>
+    </tr>
+    <tr>
+      <td><a href="addressing/index.html">Addressing</a></td>
+      <td>This is an implementation of WS-Addressing submission version
+        (2004-08) and WS-Addressing 2005-08 versions.</td>
+      <td>0.95</td>
+      <td>0.95</td>
+      <td><a
+        href="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_95/addressing-0.95.mar"
+        title="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_95/addressing-0.95.mar">mar</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_95/addressing-0.95.mar.md5"
+        title="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_95/addressing-0.95.mar.md5">MD5</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_95/addressing-0.95.mar.asc"
+        title="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_95/addressing-0.95.mar.asc">PGP</a></td>
+      <td> </td>
+    </tr>
+    <tr>
+      <td><a href="wss4j/0_95/security-module.html">security</a></td>
+      <td>This module provides the WS-Security functionalities for Axis2,
+        based on Apache WSS4J and Apache XML-Security implementations </td>
+      <td>0.95</td>
+      <td>0.95</td>
+      <td><a
+        href="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_95/security-0.95.mar"
+        title="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_95/security-0.95.mar">mar</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_95/security-0.95.mar.md5"
+        title="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_95/security-0.95.mar.md5">MD5</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_95/security-0.95.mar.asc"
+        title="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_95/security-0.95.mar.asc">PGP</a></td>
+      <td> </td>
+    </tr>
+    <tr>
+      <td><a
+        href="http://ws.apache.org/sandesha/sandesha2/index.html">Sandesha2</a></td>
+      <td>An implementation of WS-RM specification February 2005</td>
+      <td>0.9</td>
+      <td>0.93</td>
+      <td><a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/sandesha2/0_9/Sandesha2-0.9-bin.zip"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/sandesha2/0_9/Sandesha2-0.9-bin.zip">zip</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/sandesha2/0_9/Sandesha2-0.9-bin.zip.md5"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/sandesha2/0_9/Sandesha2-0.9-bin.zip.md5">MD5</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/sandesha2/0_9/Sandesha2-0.9-bin.zip.asc"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/sandesha2/0_9/Sandesha2-0.9-bin.zip.asc">PGP</a></td>
+      <td>Click <a
+        href="http://cvs.apache.org/dist/sandesha/nightly/">here</a> to get
+        the Sandesha2 nightly builds compatible with the latest Axis2
+        snapshot.</td>
+    </tr>
+    <tr>
+      <td><a href="addressing/index.html">Addressing</a></td>
+      <td>This is an implementation of WS-Addressing submission version
+        (2004-08) and WS-Addressing 2005-08 versions. Complete WS-Addressing
+        Final version will be available, once the specification itself gets
+        finalized.</td>
+      <td>0.94</td>
+      <td>0.94</td>
+      <td><a
+        href="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_94/addressing-0.94.mar"
+        title="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_94/addressing-0.94.mar">mar</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_94/addressing-0.94.mar.md5"
+        title="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_94/addressing-0.94.mar.md5">MD5</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_94/addressing-0.94.mar.asc"
+        title="http://archive.apache.org/dist/ws/axis2/modules/addressing/0_94/addressing-0.94.mar.asc">PGP</a></td>
+      <td> </td>
+    </tr>
+    <tr>
+      <td><a href="wss4j/0_94/0.94/security-module.html">security</a></td>
+      <td> </td>
+      <td>0.94</td>
+      <td>0.94</td>
+      <td><a
+        href="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_94/security-0.94.mar"
+        title="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_94/security-0.94.mar">mar</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_94/security-0.94.mar.md5"
+        title="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_94/security-0.94.mar.md5">MD5</a>
+        <a
+        href="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_94/security-0.94.mar.asc"
+        title="http://archive.apache.org/dist/ws/axis2/modules/wss4j/0_94/security-0.94.mar.asc">PGP</a></td>
+      <td> </td>
+    </tr>
+  </tbody>
+</table>
+<br>
+Latest module releases are available <a href="index.html">here</a>
+
+<p></p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/in-sample.png b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/in-sample.png
new file mode 100644
index 0000000..e289348
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/in-sample.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/in.action.xsd b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/in.action.xsd
new file mode 100644
index 0000000..26ac441
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/in.action.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Inflow security 'action' configuration</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="items" type="xs:string"/>
+				<xs:element name="passwordCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="signaturePropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="decryptionPropFile" type="xs:string" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-action.xsd b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-action.xsd
new file mode 100644
index 0000000..d628ca5
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-action.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Outflow security 'action' configuration</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="items" type="xs:string"/>
+				<xs:element name="user" type="xs:string"/>
+				<xs:element name="passwordCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="signaturePropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionPropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionPropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="signatureKeyIdentifier" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionKeyIdentifier" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionUser" type="xs:string" minOccurs="0"/>
+				<xs:element name="signatureParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="optimizeParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionSymAlgorithm" type="xs:string" minOccurs="0"/>
+				<xs:element name="EmbeddedKeyCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionKeyTransportAlgorithm" type="xs:string" minOccurs="0"/>
+				<xs:element name="EmbeddedKeyName" type="xs:string" minOccurs="0"/>
+				<xs:element name="timeToLive" type="xs:string" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-sample.png b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-sample.png
new file mode 100644
index 0000000..11e38e6
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-sample.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-sample2.png b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-sample2.png
new file mode 100644
index 0000000..7e01f25
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/rampart/1_0/sec-conf/out-sample2.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/rampart/1_0/security-module.html b/rampart_1_1/xdocs/modules/rampart/1_0/security-module.html
new file mode 100644
index 0000000..5c0f722
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/rampart/1_0/security-module.html
@@ -0,0 +1,250 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Rampart : WS-Security module for Axis2</title>

+</head>

+

+<body>

+<h1>Securing SOAP Messages with WSS4J</h1>

+

+<p><em>-For Axis2 Version 1.0</em></p>

+

+<p>Axis2 comes with a module based on WSS4J [1] to provide WS-Security

+features, called "rampart". This document explains how to engage and

+configure rampart module.</p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#intro">Introduction</a></li>

+  <li><a href="#outflowsecurity">OutflowSecurity Parameter</a></li>

+  <li><a href="#inflowsecurity">InflowSecurity Parameter</a></li>

+  <li><a href="#references">References</a></li>

+  <li><a href="#examples">Examples</a></li>

+</ul>

+<a name="intro"></a>

+

+<h2>Introduction</h2>

+

+<p>Since rampart module inserts handlers in the system specific pre-dispatch

+phase, it must be engaged globally. But it is possible to activate rampart

+module for the inflow or the outflow when required by the service or the

+clients.</p>

+

+<p>The rampart module (rampart.mar) is available with the Axis2 release.</p>

+

+<p>First it should be engaged by inserting the following in the axis2.xml

+file.</p>

+<source><pre>    &lt;module ref="rampart"/&gt;</pre>

+</source>

+<p>The web admin interface can be used when Axis2 is deployed in a servlet

+container such as Apache Tomcat.</p>

+

+<p>At the server it is possible to provide security on a per service basis.

+The configuration parameters should be set in the service.xml file of the

+service. The client side config parameters should be set in the axis2.xml of

+the client's Axis2 repository.</p>

+

+<p>Aegis module uses two parameters:</p>

+<ul>

+  <li>OutflowSecurity</li>

+  <li>InflowSecurity</li>

+</ul>

+The configuration that can go in each of these parameters are described

+below: <a name="outflowsecurity"></a>

+

+<h2>OutflowSecurity Parameter</h2>

+This parameter is used to configure the outflow security handler. The outflow

+handler can be invoked more than once in the outflow one can provide

+configuration for each of these invocations. The 'action' element describes

+one of these configurations. Therefore the 'OutflowSecurity' parameter can

+contain more than one 'action' elements. The schema of this 'action' element

+is available <a href="sec-conf/out-action.xsd">here</a>.

+

+<p>An outflow configuration to add a timestamp, sign and encrypt the message

+once, is shown in<a href="#ex1"> Example 1</a> and <a href="#ex1"> Example

+2</a> shows how to sign the message twice by chaining the outflow handler

+(using two 'action' elements)</p>

+

+<p>Following is a description of the elements that can go in an 'action'

+element of the OutflowSecurity parameter</p>

+<br>

+

+

+<table border="1">

+  <tbody>

+    <tr>

+      <td><b>Parameter</b></td>

+      <td><b>Description</b></td>

+      <td><b>Example</b></td>

+    </tr>

+    <tr>

+      <td>items</td>

+      <td>Security actions for the inflow</td>

+      <td>Add a Timestamp, Sign the SOAP body and Encrypt the SOAP body <br>

+        &lt;items&gt; Timestamp Signature Encrypt&lt;/items&gt;</td>

+    </tr>

+    <tr>

+      <td>user</td>

+      <td>The user's name</td>

+      <td>Set alias of the key to be used to sign<br>

+        &lt;user&gt; bob&lt;/user&gt;</td>

+    </tr>

+    <tr>

+      <td>passwordCallbackClass</td>

+      <td>Callback class used to provide the password required to create the

+        UsernameToken or to sign the message</td>

+      <td>&lt;passwordCallbackClass&gt;

+        org.apache.axis2.security.PWCallback&lt;/passwordCallbackClass&gt;</td>

+    </tr>

+    <tr>

+      <td>signaturePropFile</td>

+      <td>property file used to get the signature parameters such as crypto

+        provider, keystore and its password</td>

+      <td>Set example.properties file as the signature property file<br>

+        &lt;signaturePropFile&gt;

+      example.properties&lt;/signaturePropFile&gt;</td>

+    </tr>

+    <tr>

+      <td>signatureKeyIdentifier</td>

+      <td>Key identifier to be used in referring the key in the signature</td>

+      <td>Use the serial number of the certificate<br>

+        &lt;signatureKeyIdentifier&gt;

+        IssuerSerial&lt;/signatureKeyIdentifier&gt;</td>

+    </tr>

+    <tr>

+      <td>encryptionKeyIdentifier</td>

+      <td>Key identifier to be used in referring the key in encryption</td>

+      <td>Use the serial number of the certificate <br>

+        &lt;encryptionKeyIdentifier&gt;IssuerSerial&lt;/encryptionKeyIdentifier&gt;</td>

+    </tr>

+    <tr>

+      <td>encryptionUser</td>

+      <td>The user's name for encryption.</td>

+      <td><br>

+        &lt;encryptionUser&gt;alice&lt;/encryptionUser&gt;</td>

+    </tr>

+    <tr>

+      <td>encryptionSymAlgorithm</td>

+      <td>Symmetric algorithm to be used for encryption</td>

+      <td>Use AES-128<br>

+        &lt;encryptionSymAlgorithm&gt;

+        http://www.w3.org/2001/04/xmlenc#aes128-cbc&lt;/encryptionSymAlgorithm&gt;</td>

+    </tr>

+    <tr>

+      <td>encryptionKeyTransportAlgorithm</td>

+      <td>Key encryption algorithm</td>

+      <td>Use RSA-OAEP<br>

+        &lt;parameter name="encryptionSymAlgorithm"&gt;

+        http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p&lt;/parameter&gt;</td>

+    </tr>

+    <tr>

+      <td>signatureParts</td>

+      <td>Sign multiple parts in the SOAP message</td>

+      <td>Sign Foo and Bar elements qualified by "http://app.ns/ns"<br>

+        &lt;signatureParts&gt;

+        {Element}{http://app.ns/ns}Foo;{Element}{http://app.ns/ns}Bar

+        &lt;/signatureParts&gt;</td>

+    </tr>

+    <tr>

+      <td>optimizeParts</td>

+      <td>MTOM Optimize the elements specified by the XPath query</td>

+      <td>Optimize the CipherValue<br>

+        &lt;optimizeParts&gt;

+        //xenc:EncryptedData/xenc:CipherData/xenc:CipherValue

+        &lt;/optimizeParts&gt;</td>

+    </tr>

+  </tbody>

+</table>

+<a name="inflowsecurity"></a>

+

+<h2>InflowSecurity Parameter</h2>

+

+<p>This parameter is used to configure the inflow security handler. The

+'action' element is used to encapsulate the configuration elements here as

+well. The schema of the 'action' element is available here. <a

+href="#ex3">Example 3</a> shows the configuration to decrypt, verify

+signature and validate timestamp.</p>

+

+<table border="1">

+  <tbody>

+    <tr>

+      <td><b>Parameter</b></td>

+      <td><b>Description</b></td>

+      <td><b>Example</b></td>

+    </tr>

+    <tr>

+      <td>items</td>

+      <td>Security actions for the inflow</td>

+      <td>first the incoming message should be decrypted and then the

+        signatures should be verified and should be checked for the

+        availability of the Timestamp <br>

+        &lt;items&gt; Timestamp Signature Encrypt&lt;/items&gt;</td>

+    </tr>

+    <tr>

+      <td>passwordCallbackClass</td>

+      <td>Callback class used to obtain password for decryption and

+        UsernameToken verification</td>

+      <td><br>

+        &lt;passwordCallbackClass&gt;

+        org.apache.axis2.security.PWCallback&lt;/passwordCallbackClass&gt;</td>

+    </tr>

+    <tr>

+      <td>signaturePropFile</td>

+      <td>Property file used for signature verification</td>

+      <td><br>

+        &lt;signaturePropFile&gt;

+      sig.properties&lt;/signaturePropFile&gt;</td>

+    </tr>

+    <tr>

+      <td>decryptionPropFile</td>

+      <td>Property file used for decryption</td>

+      <td><br>

+        &lt;decryptionPropFile&gt;

+      dec.properties&lt;/decryptionPropFile&gt;</td>

+    </tr>

+  </tbody>

+</table>

+<br>

+

+

+<p>Please note that the '.properties' files used in properties such as

+OutSignaturePropFile are the same property files that are using in the WSS4J

+project. Following shows the properties defined in a sample property file</p>

+<source><pre>        org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin

+        org.apache.ws.security.crypto.merlin.keystore.type=pkcs12

+        org.apache.ws.security.crypto.merlin.keystore.password=security

+        org.apache.ws.security.crypto.merlin.keystore.alias=16c73ab6-b892-458f-abf5-2f875f74882e

+        org.apache.ws.security.crypto.merlin.alias.password=security

+        org.apache.ws.security.crypto.merlin.file=keys/x509.PFX.MSFT

+    </pre>

+</source>org.apache.ws.security.crypto.provider defines the implementation of

+the org.apache.ws.security.components.crypto.Crypto interface to provide the

+crypto information required by WSS4J. The other properties defined are the

+configuration properties used by the implementation class

+(org.apache.ws.security.components.crypto.Merlin). <a name="ref"></a> <a

+name="references"></a>

+

+<h2>References</h2>

+

+<p>1. <a href="http://ws.apache.org/wss4j">Apache WSS4J -Home</a></p>

+<a name="examples"></a>

+

+<h2>Examples</h2>

+

+<p id="ex1">Example 1: An outflow configuration to add a timestamp, sign and

+encrypt the message once</p>

+

+<p><img alt="" src="sec-conf/out-sample.png"></p>

+

+<p id="ex2">Example 2: An outflow configuration to sign the message twice and

+add a timestamp</p>

+

+<p><img alt="" src="sec-conf/out-sample2.png"></p>

+

+<p id="ex3">Example 3: An inflow configuration to decrypt, verify signature

+and validate timestamp</p>

+

+<p><img alt="" src="sec-conf/in-sample.png"></p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/in-sample.png b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/in-sample.png
new file mode 100644
index 0000000..e289348
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/in-sample.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/in.action.xsd b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/in.action.xsd
new file mode 100644
index 0000000..26ac441
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/in.action.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Inflow security 'action' configuration</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="items" type="xs:string"/>
+				<xs:element name="passwordCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="signaturePropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="decryptionPropFile" type="xs:string" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-action.xsd b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-action.xsd
new file mode 100644
index 0000000..49b0e40
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-action.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Outflow security 'action' configuration</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="items" type="xs:string"/>
+				<xs:element name="user" type="xs:string"/>
+				<xs:element name="passwordCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="signaturePropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionPropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="signatureKeyIdentifier" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionKeyIdentifier" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionUser" type="xs:string" minOccurs="0"/>
+				<xs:element name="signatureParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="optimizeParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionSymAlgorithm" type="xs:string" minOccurs="0"/>
+				<xs:element name="EmbeddedKeyCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionKeyTransportAlgorithm" type="xs:string" minOccurs="0"/>
+				<xs:element name="EmbeddedKeyName" type="xs:string" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-sample.png b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-sample.png
new file mode 100644
index 0000000..11e38e6
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-sample.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-sample2.png b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-sample2.png
new file mode 100644
index 0000000..7e01f25
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/sec-conf/out-sample2.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/security-module.html b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/security-module.html
new file mode 100644
index 0000000..27196a6
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_94/0.94/security-module.html
@@ -0,0 +1,245 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>The Security Module</title>
+</head>
+
+<body>
+<h1>Securing SOAP Messages with WSS4J</h1>
+
+<p><em>-For Axis2 version 0.94</em></p>
+
+<p>Axis2 comes with a module based on WSS4J [1] to provide WS-Security
+features. This section explains how to engage and configure the security
+module. Since the security module inserts handlers in the system specific
+pre-dispatch phase, it must be engaged globally. But it is possible to
+activate the security module for the inflow or the outflow when required by
+the service or the clients.</p>
+
+<p>The security module (security.mar) is available in the axis2.war but it is
+not engaged by default.</p>
+
+<p>First it should be engaged by inserting the following in the axis2.xml
+file.</p>
+<source><pre>        &lt;module ref="security"/&gt;</pre>
+</source>
+<p>The web admin interface can be used when Axis2 is deployed in a servlet
+container such as Apache Tomcat.</p>
+
+<p>At the server it is possible to provide security on a per service basis.
+The configuration parameters should be set in the service.xml file of the
+service. The client side config parameters should be set in the axis2.xml of
+the client's Axis2 repository.</p>
+
+<p>The security module uses two parameters:</p>
+<ul>
+  <li>OutflowSecurity</li>
+  <li>InflowSecurity</li>
+</ul>
+The configuration that can go in each of these parameters are described below:
+
+<h3>OutflowSecurity parameter</h3>
+This parameter is used to configure the outflow security handler. The outflow
+handler can be invoked more than once in the outflow one can provide
+configuration for each of these invocations. The 'action' element describes
+one of these configurations. Therefore the 'OutflowSecurity' parameter can
+contain more than one 'action' elements. The schema of this 'action' element
+is available <a href="sec-conf/out-action.xsd">here</a>.
+
+<p>An outflow configuration to add a timestamp, sing and encrypt the message
+once, is shown in<a href="#ex1"> Example 1</a> and <a href="#ex1"> Example
+2</a> shows how to sign the message twice by chaining the outflow handler
+(using two 'action' elements)</p>
+
+<p>Following is a description of the elements that can go in an 'action'
+element of the OutflowSecurity parameter</p>
+<br>
+
+
+<table border="1">
+  <tbody>
+    <tr>
+      <td><b>Parameter</b></td>
+      <td><b>Description</b></td>
+      <td><b>Example</b></td>
+    </tr>
+    <tr>
+      <td>items</td>
+      <td>Security actions for the inflow</td>
+      <td>Add a Timestamp, Sign the SOAP body and Encrypt the SOAP body <br>
+        &lt;items&gt; Timestamp Signature Encrypt&lt;/items&gt;</td>
+    </tr>
+    <tr>
+      <td>user</td>
+      <td>The user's name</td>
+      <td>Set alias of the key to be used to sign<br>
+        &lt;user&gt; bob&lt;/user&gt;</td>
+    </tr>
+    <tr>
+      <td>passwordCallbackClass</td>
+      <td>Callback class used to provide the password required to create the
+        UsernameToken or to sign the message</td>
+      <td>&lt;passwordCallbackClass&gt;
+        org.apache.axis2.security.PWCallback&lt;/passwordCallbackClass&gt;</td>
+    </tr>
+    <tr>
+      <td>signaturePropFile</td>
+      <td>property file used to get the signature parameters such as crypto
+        provider, keystore and its password</td>
+      <td>Set example.properties file as the signature property file<br>
+        &lt;signaturePropFile&gt;
+      example.properties&lt;/signaturePropFile&gt;</td>
+    </tr>
+    <tr>
+      <td>signatureKeyIdentifier</td>
+      <td>Key identifier to be used in referring the key in the signature</td>
+      <td>Use the serial number of the certificate<br>
+        &lt;signatureKeyIdentifier&gt;
+        IssuerSerial&lt;/signatureKeyIdentifier&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionKeyIdentifier</td>
+      <td>Key identifier to be used in referring the key in encryption</td>
+      <td>Use the serial number of the certificate <br>
+        &lt;encryptionKeyIdentifier&gt;IssuerSerial&lt;/encryptionKeyIdentifier&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionUser</td>
+      <td>The user's name for encryption.</td>
+      <td><br>
+        &lt;encryptionUser&gt;alice&lt;/encryptionUser&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionSymAlgorithm</td>
+      <td>Symmetric algorithm to be used for encryption</td>
+      <td>Use AES-128<br>
+        &lt;encryptionSymAlgorithm&gt;
+        http://www.w3.org/2001/04/xmlenc#aes128-cbc&lt;/encryptionSymAlgorithm&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionKeyTransportAlgorithm</td>
+      <td>Key encryption algorithm</td>
+      <td>Use RSA-OAEP<br>
+        &lt;parameter name="encryptionSymAlgorithm"&gt;
+        http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p&lt;/parameter&gt;</td>
+    </tr>
+    <tr>
+      <td>signatureParts</td>
+      <td>Sign multiple parts in the SOAP message</td>
+      <td>Sign Foo and Bar elements qualified by "http://app.ns/ns"<br>
+        &lt;signatureParts&gt;
+        {Element}{http://app.ns/ns}Foo;{Element}{http://app.ns/ns}Bar
+        &lt;/signatureParts&gt;</td>
+    </tr>
+    <tr>
+      <td>optimizeParts</td>
+      <td>MTOM Optimize the elements specified by the XPath query</td>
+      <td>Optimize the CipherValue<br>
+        &lt;optimizeParts&gt;
+        //xenc:EncryptedData/xenc:CipherData/xenc:CipherValue
+        &lt;/optimizeParts&gt;</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+
+
+<h3>InflowSecurity parameter</h3>
+
+<p>This parameter is used to configure the inflow security handler. The
+'action' element is used to encapsulate the configuration elements here as
+well. The schema of the 'action' element is available here. <a
+href="#ex3">Example 3</a> shows the configuration to decrypt, verify
+signature and validate timestamp.</p>
+
+<table border="1">
+  <tbody>
+    <tr>
+      <td><b>Parameter</b></td>
+      <td><b>Description</b></td>
+      <td><b>Example</b></td>
+    </tr>
+    <tr>
+      <td>items</td>
+      <td>Security actions for the inflow</td>
+      <td>first the incoming message should be decrypted and then the
+        signatures should be verified and should be checked for the
+        availability of the Timestamp <br>
+        &lt;items&gt; Timestamp Signature Encrypt&lt;/items&gt;</td>
+    </tr>
+    <tr>
+      <td>passwordCallbackClass</td>
+      <td>Callback class used to obtain password for decryption and
+        UsernameToken verification</td>
+      <td><br>
+        &lt;passwordCallbackClass&gt;
+        org.apache.axis2.security.PWCallback&lt;/passwordCallbackClass&gt;</td>
+    </tr>
+    <tr>
+      <td>signaturePropFile</td>
+      <td>Property file used for signature verification</td>
+      <td><br>
+        &lt;signaturePropFile&gt;
+      sig.properties&lt;/signaturePropFile&gt;</td>
+    </tr>
+    <tr>
+      <td>decryptionPropFile</td>
+      <td>Property file used for decryption</td>
+      <td><br>
+        &lt;decryptionPropFile&gt;
+      dec.properties&lt;/decryptionPropFile&gt;</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+
+
+<p>Please note that the '.properties' files used in properties such as
+OutSignaturePropFile are the same property files that are using in the WSS4J
+project. Following shows the properties defined in a sample property file</p>
+<source><pre>org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=pkcs12
+org.apache.ws.security.crypto.merlin.keystore.password=security
+org.apache.ws.security.crypto.merlin.keystore.alias=16c73ab6-b892-458f-abf5-2f875f74882e
+org.apache.ws.security.crypto.merlin.alias.password=security
+org.apache.ws.security.crypto.merlin.file=keys/x509.PFX.MSFT</pre>
+</source>org.apache.ws.security.crypto.provider defines the implementation of
+the org.apache.ws.security.components.crypto.Crypto interface to provide the
+crypto information required by WSS4J. The other properties defined are the
+configuration properties used by the implementation class
+(org.apache.ws.security.components.crypto.Merlin).
+
+<h2>JDK 1.5</h2>
+
+<p>If you are using JDK1.5 make sure you add bouncycastle as a JCE provider
+of the JRE</p>
+
+<p>Simply add
+<b>security.provider.X=org.bouncycastle.jce.provider.BouncyCastleProvider</b>
+entry in <b>JDK_HOME/jre/lib/security/java.security</b> file.</p>
+
+<p><b>References</b></p>
+
+<p>1. <a href="http://ws.apache.org/wss4j">Apache WSS4J</a></p>
+<br>
+
+
+<p><b>Examples</b></p>
+
+<p id="ex1">Example 1: An outflow configuration to add a timestamp, sing and
+encrypt the message once</p>
+
+<p><img src="sec-conf/out-sample.png"></p>
+
+<p id="ex2">Example 2: An outflow configuration to sign the message twice and
+add a timestamp</p>
+
+<p><img src="sec-conf/out-sample2.png"></p>
+
+<p id="ex3">Example 3: An inflow configuration to decrypt, verify signature
+and validate timestamp</p>
+
+<p><img src="sec-conf/in-sample.png"></p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/in-sample.png b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/in-sample.png
new file mode 100644
index 0000000..e289348
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/in-sample.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/in.action.xsd b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/in.action.xsd
new file mode 100644
index 0000000..26ac441
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/in.action.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Inflow security 'action' configuration</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="items" type="xs:string"/>
+				<xs:element name="passwordCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="signaturePropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="decryptionPropFile" type="xs:string" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-action.xsd b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-action.xsd
new file mode 100644
index 0000000..49b0e40
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-action.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Outflow security 'action' configuration</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="items" type="xs:string"/>
+				<xs:element name="user" type="xs:string"/>
+				<xs:element name="passwordCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="signaturePropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionPropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="signatureKeyIdentifier" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionKeyIdentifier" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionUser" type="xs:string" minOccurs="0"/>
+				<xs:element name="signatureParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="optimizeParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionSymAlgorithm" type="xs:string" minOccurs="0"/>
+				<xs:element name="EmbeddedKeyCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionKeyTransportAlgorithm" type="xs:string" minOccurs="0"/>
+				<xs:element name="EmbeddedKeyName" type="xs:string" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-sample.png b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-sample.png
new file mode 100644
index 0000000..11e38e6
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-sample.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-sample2.png b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-sample2.png
new file mode 100644
index 0000000..7e01f25
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_95/sec-conf/out-sample2.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/0_95/security-module.html b/rampart_1_1/xdocs/modules/wss4j/0_95/security-module.html
new file mode 100644
index 0000000..d2c32b4
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/0_95/security-module.html
@@ -0,0 +1,237 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>The Security Module</title>
+</head>
+
+<body>
+<h1>Securing SOAP Messages with WSS4J</h1>
+
+<p><em>-For Axis2 Version 0.95</em></p>
+
+<p>Axis2 comes with a module based on WSS4J [1] to provide WS-Security
+features. This section explains how to engage and configure the security
+module. Since the security module inserts handlers in the system specific
+pre-dispatch phase, it must be engaged globally. But it is possible to
+activate the security module for the inflow or the outflow when required by
+the service or the clients.</p>
+
+<p>The security module (security.mar) is available in the axis2.war but it is
+not engaged by default.</p>
+
+<p>First it should be engaged by inserting the following in the axis2.xml
+file.</p>
+<source><pre>    &lt;module ref="security"/&gt;</pre>
+</source>
+<p>The web admin interface can be used when Axis2 is deployed in a servlet
+container such as Apache Tomcat.</p>
+
+<p>At the server it is possible to provide security on a per service basis.
+The configuration parameters should be set in the service.xml file of the
+service. The client side config parameters should be set in the axis2.xml of
+the client's Axis2 repository.</p>
+
+<p>The security module uses two parameters:</p>
+<ul>
+  <li>OutflowSecurity</li>
+  <li>InflowSecurity</li>
+</ul>
+The configuration that can go in each of these parameters are described below:
+
+<h3>OutflowSecurity parameter</h3>
+This parameter is used to configure the outflow security handler. The outflow
+handler can be invoked more than once in the outflow one can provide
+configuration for each of these invocations. The 'action' element describes
+one of these configurations. Therefore the 'OutflowSecurity' parameter can
+contain more than one 'action' elements. The schema of this 'action' element
+is available <a href="sec-conf/out-action.xsd">here</a>.
+
+<p>An outflow configuration to add a timestamp, sing and encrypt the message
+once, is shown in<a href="#ex1"> Example 1</a> and <a href="#ex1"> Example
+2</a> shows how to sign the message twice by chaining the outflow handler
+(using two 'action' elements)</p>
+
+<p>Following is a description of the elements that can go in an 'action'
+element of the OutflowSecurity parameter</p>
+<br>
+
+
+<table border="1">
+  <tbody>
+    <tr>
+      <td><b>Parameter</b></td>
+      <td><b>Description</b></td>
+      <td><b>Example</b></td>
+    </tr>
+    <tr>
+      <td>items</td>
+      <td>Security actions for the inflow</td>
+      <td>Add a Timestamp, Sign the SOAP body and Encrypt the SOAP body <br>
+        &lt;items&gt; Timestamp Signature Encrypt&lt;/items&gt;</td>
+    </tr>
+    <tr>
+      <td>user</td>
+      <td>The user's name</td>
+      <td>Set alias of the key to be used to sign<br>
+        &lt;user&gt; bob&lt;/user&gt;</td>
+    </tr>
+    <tr>
+      <td>passwordCallbackClass</td>
+      <td>Callback class used to provide the password required to create the
+        UsernameToken or to sign the message</td>
+      <td>&lt;passwordCallbackClass&gt;
+        org.apache.axis2.security.PWCallback&lt;/passwordCallbackClass&gt;</td>
+    </tr>
+    <tr>
+      <td>signaturePropFile</td>
+      <td>property file used to get the signature parameters such as crypto
+        provider, keystore and its password</td>
+      <td>Set example.properties file as the signature property file<br>
+        &lt;signaturePropFile&gt;
+      example.properties&lt;/signaturePropFile&gt;</td>
+    </tr>
+    <tr>
+      <td>signatureKeyIdentifier</td>
+      <td>Key identifier to be used in referring the key in the signature</td>
+      <td>Use the serial number of the certificate<br>
+        &lt;signatureKeyIdentifier&gt;
+        IssuerSerial&lt;/signatureKeyIdentifier&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionKeyIdentifier</td>
+      <td>Key identifier to be used in referring the key in encryption</td>
+      <td>Use the serial number of the certificate <br>
+        &lt;encryptionKeyIdentifier&gt;IssuerSerial&lt;/encryptionKeyIdentifier&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionUser</td>
+      <td>The user's name for encryption.</td>
+      <td><br>
+        &lt;encryptionUser&gt;alice&lt;/encryptionUser&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionSymAlgorithm</td>
+      <td>Symmetric algorithm to be used for encryption</td>
+      <td>Use AES-128<br>
+        &lt;encryptionSymAlgorithm&gt;
+        http://www.w3.org/2001/04/xmlenc#aes128-cbc&lt;/encryptionSymAlgorithm&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionKeyTransportAlgorithm</td>
+      <td>Key encryption algorithm</td>
+      <td>Use RSA-OAEP<br>
+        &lt;parameter name="encryptionSymAlgorithm"&gt;
+        http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p&lt;/parameter&gt;</td>
+    </tr>
+    <tr>
+      <td>signatureParts</td>
+      <td>Sign multiple parts in the SOAP message</td>
+      <td>Sign Foo and Bar elements qualified by "http://app.ns/ns"<br>
+        &lt;signatureParts&gt;
+        {Element}{http://app.ns/ns}Foo;{Element}{http://app.ns/ns}Bar
+        &lt;/signatureParts&gt;</td>
+    </tr>
+    <tr>
+      <td>optimizeParts</td>
+      <td>MTOM Optimize the elements specified by the XPath query</td>
+      <td>Optimize the CipherValue<br>
+        &lt;optimizeParts&gt;
+        //xenc:EncryptedData/xenc:CipherData/xenc:CipherValue
+        &lt;/optimizeParts&gt;</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+
+
+<h3>InflowSecurity parameter</h3>
+
+<p>This parameter is used to configure the inflow security handler. The
+'action' element is used to encapsulate the configuration elements here as
+well. The schema of the 'action' element is available here. <a
+href="#ex3">Example 3</a> shows the configuration to decrypt, verify
+signature and validate timestamp.</p>
+
+<table border="1">
+  <tbody>
+    <tr>
+      <td><b>Parameter</b></td>
+      <td><b>Description</b></td>
+      <td><b>Example</b></td>
+    </tr>
+    <tr>
+      <td>items</td>
+      <td>Security actions for the inflow</td>
+      <td>first the incoming message should be decrypted and then the
+        signatures should be verified and should be checked for the
+        availability of the Timestamp <br>
+        &lt;items&gt; Timestamp Signature Encrypt&lt;/items&gt;</td>
+    </tr>
+    <tr>
+      <td>passwordCallbackClass</td>
+      <td>Callback class used to obtain password for decryption and
+        UsernameToken verification</td>
+      <td><br>
+        &lt;passwordCallbackClass&gt;
+        org.apache.axis2.security.PWCallback&lt;/passwordCallbackClass&gt;</td>
+    </tr>
+    <tr>
+      <td>signaturePropFile</td>
+      <td>Property file used for signature verification</td>
+      <td><br>
+        &lt;signaturePropFile&gt;
+      sig.properties&lt;/signaturePropFile&gt;</td>
+    </tr>
+    <tr>
+      <td>decryptionPropFile</td>
+      <td>Property file used for decryption</td>
+      <td><br>
+        &lt;decryptionPropFile&gt;
+      dec.properties&lt;/decryptionPropFile&gt;</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+
+
+<p>Please note that the '.properties' files used in properties such as
+OutSignaturePropFile are the same property files that are using in the WSS4J
+project. Following shows the properties defined in a sample property file</p>
+<source><pre>        org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+        org.apache.ws.security.crypto.merlin.keystore.type=pkcs12
+        org.apache.ws.security.crypto.merlin.keystore.password=security
+        org.apache.ws.security.crypto.merlin.keystore.alias=16c73ab6-b892-458f-abf5-2f875f74882e
+        org.apache.ws.security.crypto.merlin.alias.password=security
+        org.apache.ws.security.crypto.merlin.file=keys/x509.PFX.MSFT
+    </pre>
+</source>org.apache.ws.security.crypto.provider defines the implementation of
+the org.apache.ws.security.components.crypto.Crypto interface to provide the
+crypto information required by WSS4J. The other properties defined are the
+configuration properties used by the implementation class
+(org.apache.ws.security.components.crypto.Merlin).
+
+<p><b>References</b></p>
+
+<p>1. <a href="http://ws.apache.org/wss4j">Apache WSS4J</a></p>
+<br>
+
+
+<p><b>Examples</b></p>
+
+<p id="ex1">Example 1: An outflow configuration to add a timestamp, sing and
+encrypt the message once</p>
+
+<p><img alt="" src="sec-conf/out-sample.png"></p>
+
+<p id="ex2">Example 2: An outflow configuration to sign the message twice and
+add a timestamp</p>
+
+<p><img alt="" src="sec-conf/out-sample2.png"></p>
+
+<p id="ex3">Example 3: An inflow configuration to decrypt, verify signature
+and validate timestamp</p>
+
+<p><img alt="" src="sec-conf/in-sample.png"></p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/in-sample.png b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/in-sample.png
new file mode 100644
index 0000000..e289348
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/in-sample.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/in.action.xsd b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/in.action.xsd
new file mode 100644
index 0000000..26ac441
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/in.action.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Inflow security 'action' configuration</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="items" type="xs:string"/>
+				<xs:element name="passwordCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="signaturePropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="decryptionPropFile" type="xs:string" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-action.xsd b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-action.xsd
new file mode 100644
index 0000000..d628ca5
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-action.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Outflow security 'action' configuration</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="items" type="xs:string"/>
+				<xs:element name="user" type="xs:string"/>
+				<xs:element name="passwordCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="signaturePropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionPropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionPropFile" type="xs:string" minOccurs="0"/>
+				<xs:element name="signatureKeyIdentifier" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionKeyIdentifier" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionUser" type="xs:string" minOccurs="0"/>
+				<xs:element name="signatureParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="optimizeParts" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionSymAlgorithm" type="xs:string" minOccurs="0"/>
+				<xs:element name="EmbeddedKeyCallbackClass" type="xs:string" minOccurs="0"/>
+				<xs:element name="encryptionKeyTransportAlgorithm" type="xs:string" minOccurs="0"/>
+				<xs:element name="EmbeddedKeyName" type="xs:string" minOccurs="0"/>
+				<xs:element name="timeToLive" type="xs:string" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-sample.png b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-sample.png
new file mode 100644
index 0000000..11e38e6
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-sample.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-sample2.png b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-sample2.png
new file mode 100644
index 0000000..7e01f25
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/1_0/sec-conf/out-sample2.png
Binary files differ
diff --git a/rampart_1_1/xdocs/modules/wss4j/1_0/security-module.html b/rampart_1_1/xdocs/modules/wss4j/1_0/security-module.html
new file mode 100644
index 0000000..4a390e3
--- /dev/null
+++ b/rampart_1_1/xdocs/modules/wss4j/1_0/security-module.html
@@ -0,0 +1,250 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Rampart : WS-Security module for Axis2</title>
+</head>
+
+<body>
+<h1>Securing SOAP Messages with WSS4J</h1>
+
+<p><em>-For Axis2 Version 1.0</em></p>
+
+<p>Axis2 comes with a module based on WSS4J [1] to provide WS-Security
+features, called "rampart". This document explains how to engage and
+configure rampart module.</p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#outflowsecurity">OutflowSecurity Parameter</a></li>
+  <li><a href="#inflowsecurity">InflowSecurity Parameter</a></li>
+  <li><a href="#references">References</a></li>
+  <li><a href="#examples">Examples</a></li>
+</ul>
+<a name="intro"></a>
+
+<h2>Introduction</h2>
+
+<p>Since rampart module inserts handlers in the system specific pre-dispatch
+phase, it must be engaged globally. But it is possible to activate rampart
+module for the inflow or the outflow when required by the service or the
+clients.</p>
+
+<p>The rampart module (rampart.mar) is available with the Axis2 release.</p>
+
+<p>First it should be engaged by inserting the following in the axis2.xml
+file.</p>
+<source><pre>    &lt;module ref="rampart"/&gt;</pre>
+</source>
+<p>The web admin interface can be used when Axis2 is deployed in a servlet
+container such as Apache Tomcat.</p>
+
+<p>At the server it is possible to provide security on a per service basis.
+The configuration parameters should be set in the service.xml file of the
+service. The client side config parameters should be set in the axis2.xml of
+the client's Axis2 repository.</p>
+
+<p>Aegis module uses two parameters:</p>
+<ul>
+  <li>OutflowSecurity</li>
+  <li>InflowSecurity</li>
+</ul>
+The configuration that can go in each of these parameters are described
+below: <a name="outflowsecurity"></a>
+
+<h2>OutflowSecurity Parameter</h2>
+This parameter is used to configure the outflow security handler. The outflow
+handler can be invoked more than once in the outflow one can provide
+configuration for each of these invocations. The 'action' element describes
+one of these configurations. Therefore the 'OutflowSecurity' parameter can
+contain more than one 'action' elements. The schema of this 'action' element
+is available <a href="sec-conf/out-action.xsd">here</a>.
+
+<p>An outflow configuration to add a timestamp, sing and encrypt the message
+once, is shown in<a href="#ex1"> Example 1</a> and <a href="#ex1"> Example
+2</a> shows how to sign the message twice by chaining the outflow handler
+(using two 'action' elements)</p>
+
+<p>Following is a description of the elements that can go in an 'action'
+element of the OutflowSecurity parameter</p>
+<br>
+
+
+<table border="1">
+  <tbody>
+    <tr>
+      <td><b>Parameter</b></td>
+      <td><b>Description</b></td>
+      <td><b>Example</b></td>
+    </tr>
+    <tr>
+      <td>items</td>
+      <td>Security actions for the inflow</td>
+      <td>Add a Timestamp, Sign the SOAP body and Encrypt the SOAP body <br>
+        &lt;items&gt; Timestamp Signature Encrypt&lt;/items&gt;</td>
+    </tr>
+    <tr>
+      <td>user</td>
+      <td>The user's name</td>
+      <td>Set alias of the key to be used to sign<br>
+        &lt;user&gt; bob&lt;/user&gt;</td>
+    </tr>
+    <tr>
+      <td>passwordCallbackClass</td>
+      <td>Callback class used to provide the password required to create the
+        UsernameToken or to sign the message</td>
+      <td>&lt;passwordCallbackClass&gt;
+        org.apache.axis2.security.PWCallback&lt;/passwordCallbackClass&gt;</td>
+    </tr>
+    <tr>
+      <td>signaturePropFile</td>
+      <td>property file used to get the signature parameters such as crypto
+        provider, keystore and its password</td>
+      <td>Set example.properties file as the signature property file<br>
+        &lt;signaturePropFile&gt;
+      example.properties&lt;/signaturePropFile&gt;</td>
+    </tr>
+    <tr>
+      <td>signatureKeyIdentifier</td>
+      <td>Key identifier to be used in referring the key in the signature</td>
+      <td>Use the serial number of the certificate<br>
+        &lt;signatureKeyIdentifier&gt;
+        IssuerSerial&lt;/signatureKeyIdentifier&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionKeyIdentifier</td>
+      <td>Key identifier to be used in referring the key in encryption</td>
+      <td>Use the serial number of the certificate <br>
+        &lt;encryptionKeyIdentifier&gt;IssuerSerial&lt;/encryptionKeyIdentifier&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionUser</td>
+      <td>The user's name for encryption.</td>
+      <td><br>
+        &lt;encryptionUser&gt;alice&lt;/encryptionUser&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionSymAlgorithm</td>
+      <td>Symmetric algorithm to be used for encryption</td>
+      <td>Use AES-128<br>
+        &lt;encryptionSymAlgorithm&gt;
+        http://www.w3.org/2001/04/xmlenc#aes128-cbc&lt;/encryptionSymAlgorithm&gt;</td>
+    </tr>
+    <tr>
+      <td>encryptionKeyTransportAlgorithm</td>
+      <td>Key encryption algorithm</td>
+      <td>Use RSA-OAEP<br>
+        &lt;parameter name="encryptionSymAlgorithm"&gt;
+        http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p&lt;/parameter&gt;</td>
+    </tr>
+    <tr>
+      <td>signatureParts</td>
+      <td>Sign multiple parts in the SOAP message</td>
+      <td>Sign Foo and Bar elements qualified by "http://app.ns/ns"<br>
+        &lt;signatureParts&gt;
+        {Element}{http://app.ns/ns}Foo;{Element}{http://app.ns/ns}Bar
+        &lt;/signatureParts&gt;</td>
+    </tr>
+    <tr>
+      <td>optimizeParts</td>
+      <td>MTOM Optimize the elements specified by the XPath query</td>
+      <td>Optimize the CipherValue<br>
+        &lt;optimizeParts&gt;
+        //xenc:EncryptedData/xenc:CipherData/xenc:CipherValue
+        &lt;/optimizeParts&gt;</td>
+    </tr>
+  </tbody>
+</table>
+<a name="inflowsecurity"></a>
+
+<h2>InflowSecurity Parameter</h2>
+
+<p>This parameter is used to configure the inflow security handler. The
+'action' element is used to encapsulate the configuration elements here as
+well. The schema of the 'action' element is available here. <a
+href="#ex3">Example 3</a> shows the configuration to decrypt, verify
+signature and validate timestamp.</p>
+
+<table border="1">
+  <tbody>
+    <tr>
+      <td><b>Parameter</b></td>
+      <td><b>Description</b></td>
+      <td><b>Example</b></td>
+    </tr>
+    <tr>
+      <td>items</td>
+      <td>Security actions for the inflow</td>
+      <td>first the incoming message should be decrypted and then the
+        signatures should be verified and should be checked for the
+        availability of the Timestamp <br>
+        &lt;items&gt; Timestamp Signature Encrypt&lt;/items&gt;</td>
+    </tr>
+    <tr>
+      <td>passwordCallbackClass</td>
+      <td>Callback class used to obtain password for decryption and
+        UsernameToken verification</td>
+      <td><br>
+        &lt;passwordCallbackClass&gt;
+        org.apache.axis2.security.PWCallback&lt;/passwordCallbackClass&gt;</td>
+    </tr>
+    <tr>
+      <td>signaturePropFile</td>
+      <td>Property file used for signature verification</td>
+      <td><br>
+        &lt;signaturePropFile&gt;
+      sig.properties&lt;/signaturePropFile&gt;</td>
+    </tr>
+    <tr>
+      <td>decryptionPropFile</td>
+      <td>Property file used for decryption</td>
+      <td><br>
+        &lt;decryptionPropFile&gt;
+      dec.properties&lt;/decryptionPropFile&gt;</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+
+
+<p>Please note that the '.properties' files used in properties such as
+OutSignaturePropFile are the same property files that are using in the WSS4J
+project. Following shows the properties defined in a sample property file</p>
+<source><pre>        org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+        org.apache.ws.security.crypto.merlin.keystore.type=pkcs12
+        org.apache.ws.security.crypto.merlin.keystore.password=security
+        org.apache.ws.security.crypto.merlin.keystore.alias=16c73ab6-b892-458f-abf5-2f875f74882e
+        org.apache.ws.security.crypto.merlin.alias.password=security
+        org.apache.ws.security.crypto.merlin.file=keys/x509.PFX.MSFT
+    </pre>
+</source>org.apache.ws.security.crypto.provider defines the implementation of
+the org.apache.ws.security.components.crypto.Crypto interface to provide the
+crypto information required by WSS4J. The other properties defined are the
+configuration properties used by the implementation class
+(org.apache.ws.security.components.crypto.Merlin). <a name="ref"></a> <a
+name="references"></a>
+
+<h2>References</h2>
+
+<p>1. <a href="http://ws.apache.org/wss4j">Apache WSS4J -Home</a></p>
+<a name="examples"></a>
+
+<h2>Examples</h2>
+
+<p id="ex1">Example 1: An outflow configuration to add a timestamp, sing and
+encrypt the message once</p>
+
+<p><img alt="" src="sec-conf/out-sample.png"></p>
+
+<p id="ex2">Example 2: An outflow configuration to sign the message twice and
+add a timestamp</p>
+
+<p><img alt="" src="sec-conf/out-sample2.png"></p>
+
+<p id="ex3">Example 3: An inflow configuration to decrypt, verify signature
+and validate timestamp</p>
+
+<p><img alt="" src="sec-conf/in-sample.png"></p>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/navigation.xml b/rampart_1_1/xdocs/navigation.xml
new file mode 100644
index 0000000..bd8035c
--- /dev/null
+++ b/rampart_1_1/xdocs/navigation.xml
@@ -0,0 +1,60 @@
+<!-- Created By Eran Chinthaka -->
+<project name="Axis2/Java">
+	<title>Axis2/Java</title>
+	<body>
+		<links>
+			<item name="Axis2/Java" href="index.html" />
+			<item name="Axis2/C" href="http://ws.apache.org/axis2/c" />
+			<item name="Apache WS" href="http://ws.apache.org" />
+			<item name="Apache	" href="http://www.apache.org" />
+		</links>
+
+		<menu name="Axis2/Java">
+			<item name="Home" href="index.html" />
+		</menu>
+		<menu name="Downloads">
+			<item name="Releases" href="download.cgi" />
+			<item name="Modules" href="modules/index.html" />
+			<item name="Tools" href="tools/index.html" />
+		</menu>
+		<menu name="Documentation">
+			<item name="Version 1.1" href="/1_1/contents.html" >
+			   <item name="Table of Contents" href="1_1/toc.html" />
+			   <item name="Installation Guide" href="1_1/installationguide.html" />
+			   <item name="QuickStart Guide" href="1_1/quickstartguide.html" />
+			   <item name="User Guide" href="1_1/userguide.html" />
+			   <item name="POJO Guide" href="1_1/pojoguide.html" />
+			   <item name="Spring Guide" href="1_1/spring.html" />
+			   <item name="Web Administrator's Guide" href="1_1/webadminguide.html" />
+			   <item name="Migration Guide (from Axis1)" href="1_1/migration.html" />
+			</item>
+			<item name="Version 1.0" href="/1_0/index.html" />
+			<item name="Version 0.95" href="/0_95/index.html" />
+			<item name="Version 0.94" href="/0_94/index.html" />
+			<item name="Version 0.93" href="/0_93/index.html" />
+		</menu>
+		<menu name="Resources">
+		<item name="FAQ" href="faq.html" />
+		<item name="Articles" href="articles.html" />
+		<item name="Wiki" href="http://wiki.apache.org/ws/FrontPage/Axis2/" />
+			<item name="Reference Library" href="refLib.html" />
+			<item name="Online Java Docs" href="http://ws.apache.org/axis2/1_1/api/index.html" />
+		</menu>
+		<menu name="Get Involved" href="overview.html">
+		<item name="Overview" href="overview.html" />
+			<item name="Checkout the Source" href="svn.html" />
+		 <item name="Mailing Lists" href="mail-lists.html" />
+		 <item name="Developer Guidelines" href="guidelines.html" />
+			<item name="Build the Site" href="siteHowTo.html" />	
+		</menu>
+		<menu name="Project Information">
+			<item name="Project Team" href="team-list.html" />
+				<item name="Issue Tracking" href="issue-tracking.html" />
+			<item name="Source Code"
+				href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" />
+			<item name="Acknowledgements" href="thanks.html" />
+			<item name="License"
+				href="http://www.apache.org/licenses/LICENSE-2.0.html" />
+		</menu>
+	</body>
+</project>
diff --git a/rampart_1_1/xdocs/overview.html b/rampart_1_1/xdocs/overview.html
new file mode 100644
index 0000000..3112fa8
--- /dev/null
+++ b/rampart_1_1/xdocs/overview.html
@@ -0,0 +1,37 @@
+<head>
+    <title>Overview</title>
+    <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+    </head>
+<h2>Overview</h2>
+<p>Every volunteer project obtains its strength from the people involved in it. 
+We invite you to participate as much or as little as you choose. The roles and 
+responsibilities that people can assume in the project are based on merit. 
+Everybody's input matters!</p>
+<p>There are a variety of ways to participate. Regardless of how you choose to 
+participate, we suggest you join some or all of our <a href="mail-lists.html">
+mailing lists</a>.</p>
+<h2><b>Use the Products and Give Us Feedback</b> </h2>
+<p>Using the products, reporting bugs, making feature requests, etc. is by far 
+the most important role. It's your feedback that allows the technology to 
+evolve. </p>
+<ul>
+	<li><a href="mail-lists.html">Join Mailing Lists</a> </li>
+	<li><a href="http://ws.apache.org/axis2/download.cgi" target="_blank">Download Binary Builds</a> </li>
+	<li><a href="http://issues.apache.org/jira/browse/AXIS2">Report bugs/Request additional features</a>
+	</li>
+</ul>
+<h2><b>Contribute Code or Documentation Patches</b> </h2>
+<p>In this role, you participate in the actual development of the code. If this 
+is the type of role you'd like to play, here are some steps (in addition to the 
+ones above) to get you started: </p>
+<ul>
+	<li><a href="guidelines.html">Read Guidelines</a> </li>
+	<li><a href="refLib.html">Review Reference Library</a> </li>
+	<li>
+	<a href="http://svn.apache.org/viewcvs.cgi/webservices/axis/trunk/?root=Apache-SVN">
+	View the Source Code</a> </li>
+	<li><a href="svn.html">Access SVN Repository</a>
+	</li>
+</ul>
+<div id="pdf" align="right">
+&nbsp;</div>
diff --git a/rampart_1_1/xdocs/refLib.html b/rampart_1_1/xdocs/refLib.html
new file mode 100644
index 0000000..1f6c33c
--- /dev/null
+++ b/rampart_1_1/xdocs/refLib.html
@@ -0,0 +1,53 @@
+<head>

+    <title>Reference Library</title>

+    <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+<h2>Reference Library</h2>

+<p>The Axis Project lives or fails based on its human resources. Users and 

+contributors alike help the project with ideas and brainpower. A common 

+foundation of knowledge is required to effectively participate in this virtual 

+community. The following is a list of documents that we have found helpful for 

+us and may be helpful to you:</p>

+<p>These resources are required reading for anybody contributing source code to 

+the project.</p>

+<p><b><font>SOAP Specific Resources</font></b> </p>

+<p><b>SOAP W3C Specification</b>

+<a href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/">1.1</a> &amp;

+<a href="http://www.w3.org/TR/soap/">1.2</a><br>

+Required reading.</p>

+<p><b><a href="http://www.w3.org/TR/SOAP-attachments">SOAP Messaging with 

+Attachments W3C Specification</a></b> <br>

+SOAP combined with MIME.</p>

+<p><b><a href="http://www.w3.org/TR/SOAP-dsig/">SOAP Security Extensions: 

+Digital Signature Specification</a></b> <br>

+Adding security to SOAP.</p>

+<p><b>Other Specifications</b> </p>

+<p>Web Services Description Language (WSDL) 

+<a href="http://www.w3c.org/TR/wsdl.html">1.1</a> <a href="http://www.w3.org/TR/wsdl20/">2.0 </a></p>

+<p>WS - Addressing <a href="http://www.w3.org/Submission/ws-addressing/">submission</a> <a href="http://www.w3.org/TR/2005/WD-ws-addr-core-20050331/">1.0 (31st March,2005)</a> </p>

+<p><a href="ftp://www6.software.ibm.com/software/developer/library/ws-policy.pdf">Web Services Policy Framework (WSPolicy)</a></p>

+<p><a href="http://www.ws-i.org/Profiles/BasicProfile-1.0.html">WS-I Basic 

+Profile Version 1.0</a> </p>

+<p><a href="http://jcp.org/aboutJava/communityprocess/first/jsr101/index.html">

+Java API for XML-based RPC (JAX-RPC)</a> </p>

+<p><a href="http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/">SOAP Message 

+Transmission Optimization Mechanism</a> </p>

+<p><b>Other Resources</b> </p>

+<p><b><a href="http://java.sun.com/docs/books/jls/index.html">The Java Language 

+Specification</a></b> <br>

+Written by the creators of the Java Programming Language, this online book is 

+considered by many to be the bible for programming in Java. A must read.</p>

+<p><b><a href="http://java.sun.com/products/jdk/javadoc/index.html">Javadoc</a></b>

+<br>

+Javadoc is the automatic software documentation generator used by Java since it 

+was first released. All code written for this project must be documented using 

+Javadoc conventions.</p>

+<p><b><a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">The 

+Java Code Conventions</a></b> <br>

+This Sun document specifies the de-facto standard way of formatting Java code. 

+All code written for this project must follow these conventions.</p>

+<p><a href="http://svnbook.red-bean.com/en/1.1/svn-book.html"><strong>Version Control 

+with SubVersion</strong></a><br>

+Written by Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato, . It 

+provides details on SVN features.</p>

+<p>&nbsp;</p>

diff --git a/rampart_1_1/xdocs/siteHowTo.html b/rampart_1_1/xdocs/siteHowTo.html
new file mode 100644
index 0000000..68353f3
--- /dev/null
+++ b/rampart_1_1/xdocs/siteHowTo.html
@@ -0,0 +1,38 @@
+<html>

+<head>

+<title>How To Build Axis Project's Website</title>

+<link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+<body>

+<h1>How To Build Axis2 Project's Website</h1>

+<h2>Installing Maven</h2>

+<p>The Axis 2.0 website build system solely depends

+<a href="http://maven.apache.org/">Maven</a>.Specifically the build has been 

+tested to work with Maven version 1.0.1. To install Maven download the 

+distributions and follow the instructions in their documentation. Make sure you 

+don't forget to put MAVEN_HOME/bin directory in the path. </p>

+<h2>Checking out Axis 2.0</h2>

+<p>Checkout latest source from

+<a href="http://svn.apache.org/repos/asf/webservices/axis2/trunk/java">here</a> 

+using your favorite svn client. If you are a committer get a commiter check out 

+from <a href="https://svn.apache.org/repos/asf/webservices/axis2/trunk/java">

+here</a>.</p>

+<h2>Building the site</h2>

+<p>type <i>maven multiproject</i> at the root of your project folder. It will take some time to build the whole site and built site will be available under targets/docs</p>

+

+<h2>FAQ</h2>

+<ol>

+	<li>How can I update a document in the site ?<br> Get a commiter check out. 

+	All the documents are in html format under the xdocs folder, and you can 

+	change only the documents found under this folder. Change the relevant file 

+	and run maven &quot;html2xdoc:transform&quot;. New documentation will be available 

+	under target folder.</li>

+	<li>How can I add a new document<br>Put the new document in xdocs folder. 

+	Change the navigation.xml found under the xdocs folder to put a link to the 

+	newly added document. Re-generate the site.<br/>

+	Please make sure you have not included any of the illegal characters and your document should be well formed</li>

+</ol>

+<p>&nbsp;</p>

+<p align="right">-- Eran Chinthaka</p>

+</body>

+</html>
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/style/maven-theme.css b/rampart_1_1/xdocs/style/maven-theme.css
new file mode 100644
index 0000000..1094f02
--- /dev/null
+++ b/rampart_1_1/xdocs/style/maven-theme.css
@@ -0,0 +1,101 @@
+body, td, select, input, li{
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  font-size: 13px;
+}
+a {
+  text-decoration: none;
+}
+a:link {
+  color:#36a;
+}
+a:visited  {
+  color:#47a;
+}
+a:active, a:hover {
+  color:#69c;
+}
+a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover {
+  background: url(../images/external.png) right center no-repeat;
+  padding-right: 15px;
+}
+a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover {
+  background: url(../images/newwindow.png) right center no-repeat;
+  padding-right: 18px;
+}
+h2 {
+background-image: url(../images/h2-bg.gif); 
+	background-repeat: repeat-x; 
+	background-attachment: scroll; 
+	background-position: left top; 
+	height: 20px;
+  padding: 4px 4px 4px 6px;
+  border-bottom: 1px solid #cccccc;
+  color: #333333;
+  background-color: #ffffff;
+  font-weight:900;
+  font-size: large;
+}
+h3 {
+padding: 4px 4px 2px 6px;
+  border-bottom: 1px solid #cccccc;
+  border-top: 0px solid #cccccc;
+  border-left: 0px solid #cccccc;
+  border-right: 0px solid #cccccc;
+  color: #666666;
+  font-weight: semi-bold;
+  font-size: normal;
+}
+p {
+  line-height: 1.3em;
+  font-size: small;
+}
+#banner { 
+	background-color: #ffffff; 
+	border-bottom: 1px solid #fff; 
+}
+#breadcrumbs {
+  border-top: 1px solid #aaa;
+  background-image: url(../images/breadcrumbs-bg.gif); 
+	background-repeat: repeat-x; 
+	background-attachment: scroll; 
+	background-position: left top; 
+	height: 28px;
+}
+#leftColumn {
+  margin: 5px 0 0 10px;
+  border: 1px solid #b5b5b5;
+  background-color: #ffffff;
+  background-image: url(../images/leftcolumn-bg.gif); 
+	background-repeat: repeat-x; 
+	background-attachment: scroll; 
+	background-position: left top;
+}
+#navcolumn h5 {
+  font-size: smaller;
+  border-bottom: 1px solid #aaaaaa;
+  padding-top: 4px;
+  padding-bottom: 4px;
+}
+
+table.bodyTable th {
+  color: white;
+  background-color: #bbb;
+  text-align: left;
+  font-weight: bold;
+}
+
+table.bodyTable th, table.bodyTable td {
+  font-size: 1em;
+}
+
+table.bodyTable tr.a {
+  background-color: #ddd;
+}
+
+table.bodyTable tr.b {
+  background-color: #eee;
+}
+
+.source {
+  border: 1px solid #999;
+}
diff --git a/rampart_1_1/xdocs/svn.html b/rampart_1_1/xdocs/svn.html
new file mode 100644
index 0000000..e9750c8
--- /dev/null
+++ b/rampart_1_1/xdocs/svn.html
@@ -0,0 +1,117 @@
+<html>
+<head>
+  <meta http-equiv="content-type" content="">
+  <title>Developing Apache Axis2</title>
+  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<h1>Developing Apache Axis2</h1>
+
+<p>This document will give you information on how to use SVN in order to get
+an SVN checkout/update and making commits to repository etc in the process of
+contributing to Apache projects (specifically Axis2). Instructions on
+configuring IDEs for development and using Maven to build the project is also
+included here.</p>
+
+<h2>Content</h2>
+<ul>
+  <li><a href="#svn">Working with Subversion (SVN)</a></li>
+  <li><a href="#checkout">Checkout Axis2 from Subversion</a></li>
+  <li><a href="#maven">Installing Maven 1</a></li>
+  <li><a href="#ide">Configuring your IDE</a></li>
+</ul>
+<a name="svn"></a>
+
+<h2>Working with Subversion (SVN)</h2>
+
+<p>The Axis2 development team uses Subversion (SVN) for source control.
+Subversion is a compelling replacement for CVS, developed under the auspices
+of the Tigris community and is licensed under an Apache compatible license.
+To learn more about Subversion or to download the latest distribution, visit
+the <a href="http:///subversion.tigris.org" target="_blank">Subversion
+project site</a>.  If you are looking for guidance on setting up and
+installing Subversion, please read the ASF <a
+href="http://www.apache.org/dev/version-control.html" target="_blank">Source
+Code Repositories page</a>.</p>
+<a name="checkout"></a>
+
+<h2>Checkout Axis2 From Subversion</h2>
+
+<p>When checking out the latest version of Axis2 from the Foundation's
+Subversion repository you must use one of the following URLs depending on
+your level of access to the Axis2 source code:</p>
+<ul>
+  <li><b>If you are not a committer:</b> Use <a
+    href="http://svn.apache.org/repos/asf/webservices/axis2/trunk/java"
+    target="_blank">http://svn.apache.org/repos/asf/webservices/axis2/trunk/java</a></li>
+  <li><b>If you are a committer:</b> Use <a
+    href="https://svn.apache.org/repos/asf/webservices/axis2/trunk/java"
+    target="_blank">https://svn.apache.org/repos/asf/webservices/axis2/trunk/java</a></li>
+</ul>
+If you are a committer, make sure that you have selected an svnpasswd.  To do
+this you must log into svn.apache.org.  For more information, please read the
+ASF <a href="http://www.apache.org/dev/version-control.html"
+target="_blank">Source Code Repositories page</a>.
+
+<p>Once you have successfully installed Subversion, you can check out Axis2
+trunk by following these steps:</p>
+<ol type="1">
+  <li>Run <strong>svn co &lt;repository URL&gt; axis2</strong> where
+    repository URL is one of the URLs from the previous list.</li>
+  <li>This step will check out the latest version of the Axis2 Java codebase
+    to a directory named "axis2".  The second parameter to the svn co selects
+    a directory to create on your local machine.  If you want to checkout
+    Axis2 to a different directory, feel free to change axis2 to any other
+    directory name.</li>
+  <li>To update your working copy to the latest version from the repository.
+    Execute the <strong>svn update</strong> command.</li>
+  <li>If you would like to submit a patch, you can execute <strong>svn
+    diff</strong> to create a unified diff for submission to the Axis2 JIRA
+    issue tracker.</li>
+</ol>
+<a name="maven"></a>
+
+<h2>Installing Maven 1</h2>
+
+<p>Axis2's build is based on Maven 1.  Maven is a build system that allows
+for the reuse of common build projects across multiple projects.  For
+information about obtaining, installing, and configuring Maven 1, please see
+the <a href="http://maven.apache.org" target="_blank">Maven project page</a>.
+To use Maven to build the Axis2 project, follow these simple steps:</p>
+<ol type="1">
+  <li>Install <a href="http://maven.apache.org/maven-1.x/"
+    target="_blank">Maven1</a>. See <a
+    href="http://maven.apache.org/maven-1.x/start/install.html"
+    target="_blank">here</a> for instructions.
+    <ul>
+      <li>Create a MAVEN_HOME environment variable.</li>
+      <li>Add MAVEN_HOME/bin to your PATH</li>
+    </ul>
+  </li>
+  <li>Go to the axis2 folder in the command prompt and type
+    <strong>maven</strong>.</li>
+  <li>Maven will then automatically download all the jars, compile, test and
+    build the Axis2 deliverables.</li>
+</ol>
+<a name="ide"></a>
+
+<h2>Configuring your IDE</h2>
+
+<p>The Axis2 development team uses a variety of development tools from vi to
+emacs to eclipse to Intellij/IDEA. The following section is not an
+endorsement of a specific set of tools, it is simply meant as a pointer to
+ease the process of getting started with Axis2 development.</p>
+<ul>
+  <li><strong>Intellij IDEA-</strong> type <strong>maven
+    idea:multiproject</strong>. This will generate the necessary IDEA .ipr,
+    .iml and .iws project files</li>
+  <li><strong>eclipse</strong>- type 
+  <strong>maven multiproject:goal -Dgoal=eclipse</strong>
+  Then in Eclipse, setup a Classpath Variable for MAVEN_REPO, and select 
+  File > Import > Existing Projects into Workspace > Select root directory. 
+  Selecting the root of the Axis source discovers all of the modules and allows 
+  all to be imported as individual projects at once.</li>
+</ul>
+</body>
+</html>
diff --git a/rampart_1_1/xdocs/thanks.xml b/rampart_1_1/xdocs/thanks.xml
new file mode 100644
index 0000000..b961e54
--- /dev/null
+++ b/rampart_1_1/xdocs/thanks.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<document>

+  <properties>

+    <author email="dims@apache.org">Davanum Srinivas</author>

+    <title>Special Thanks!</title>

+  </properties> 

+  

+  <body>

+

+    <section name="Special Thanks to ...">

+        <table>

+          <tr>

+            <th>Company</th>

+            <th>Donation Type</th>

+          </tr>

+          <tr>

+            <td><A href="http://www.jetbrains.com/"><img height="51" width="200" src="http://www.jetbrains.com/img/logos/logo_intellij_idea.gif"/></A></td>

+            <td>Licenses for IDEA</td>

+          </tr>

+          <tr>

+            <td><A href="http://www.yourkit.com/"><img height="51" width="200" src="http://db.apache.org/ojb/images/yjp.gif"/></A></td>

+            <td>Licenses for YourKit</td>

+          </tr>

+          <tr>

+            <td><A href="http://www.ej-technologies.com/products/jprofiler/overview.html"><img height="51" width="200" src="http://www.ej-technologies.com/images/products/logo_jprofiler01.gif"/></A></td>

+            <td>Licenses for JProfiler</td>

+          </tr>

+        </table>

+    </section>

+  </body>

+</document>
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/tools/1_1/CodegenToolReference.html b/rampart_1_1/xdocs/tools/1_1/CodegenToolReference.html
new file mode 100644
index 0000000..bd68146
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/CodegenToolReference.html
@@ -0,0 +1,878 @@
+<html>

+<head>

+    <meta http-equiv="content-type" content="">

+    <title>Code Generator Tool Guide for Command Line and Ant Task</title>

+    <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Code Generator Tool Guide for Command Line and Ant Task</h1>

+

+<p>The Code Generator tool consists of a command line version and an Ant

+    Task. This document will list the command line references and Ant task

+    references. Also in detail, this document shows how to build file using

+    custom Ant task and invoking the Code Generator from Ant.</p>

+

+<p>This tool is bundled with the <a

+        href="http://ws.apache.org/axis2/download.cgi">Axis2 Binary

+    Distribution</a>.</p>

+

+<h2>Content</h2>

+<ul>

+    <li><a href="#intro">Introduction</a></li>

+    <li><a href="#cmdline">Command Line Version</a>

+        <ul>

+            <li><a href="#cmdref">Option Reference</a></li>

+        </ul>

+    </li>

+    <li><a href="#ant">Ant Task</a>

+        <ul>

+            <li><a href="#antref">Ant Task Reference</a></li>

+            <li><a href="#example">Example Build File Using the Custom Ant

+                Task</a></li>

+            <li><a href="#invoking">Invoking the Code Generator From Ant</a></li>

+        </ul>

+    </li>

+    <li><a href="#appendix">Appendix</a></li>

+</ul>

+<a name="intro"></a>

+

+<h2>Introduction</h2>

+

+<p>This basic tool is implemented by the WSDL2Code class and just for the

+    convenience in the case of Java (which would be the majority) there is

+    another WSDL2Java class. One can choose to run the main classes directly or

+    use one of the scripts to run the WSDL2Code and WSDL2Java appropriately. (the

+    scripts are found in the bin directory of the <a href="../../download/1_1/download.html#std-bin">Standard Binary Distribution</a>)</p>

+<a name="cmdline"></a>

+

+<h2>Command Line Version</h2>

+

+<p>For those users who wish to use the command line version of the tool, this

+    section will be of value.</p>

+<a name="cmdref"></a>

+

+<h3>Option Reference</h3>

+

+<p>Usage WSDL2Code &lt;option_reference&gt;</p>

+

+<p><b>E.g. :- WSDL2Code -uri &lt;Location of WSDL&gt;</b></p>

+

+<table border="1" cellpadding="0" cellspacing="0"

+       style="border-collapse: collapse" width="100%" id="AutoNumber1">

+<tbody>

+<tr>

+    <td width="20%"><strong>Short Option</strong></td>

+    <td width="20%"><strong>Long Option</strong></td>

+    <td width="60%"><strong>Description</strong></td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-uri &lt;Location of WSDL&gt;</td>

+    <td width="20%">None</td>

+    <td width="60%">WSDL file location. This should point to a WSDL file in

+        the local file system.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-o &lt;output Location&gt;</td>

+    <td width="20%">--output &lt;output Location&gt;</td>

+    <td width="60%">Output file location. This is where the files would be

+        copied once the code generation is done. If this option is omitted

+        the generated files would be copied to the working directory.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-l &lt;language&gt;</td>

+    <td width="20%">--language &lt;language&gt;</td>

+    <td width="60%">Output language. Currently the code generator can

+        generate code in Java but it has the ability to be extended to

+        support other languages.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-p &lt;package name&gt;</td>

+    <td width="20%">--package &lt;package name&gt;</td>

+    <td width="60%">The target package name. If omitted, a default package

+        (formed using the target namespace of the WSDL) will be used.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-a</td>

+    <td width="20%">--async</td>

+    <td width="60%">Generate code only for async style. When this option is

+        used the generated stubs will have only the asynchronous invocation

+        methods. Switched off by default.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-s</td>

+    <td width="20%">--sync</td>

+    <td width="60%">Generate code only for sync style . When this option is

+        used the generated stubs will have only the synchronous invocation

+        methods. Switched off by default. When used with the -a option, this

+        takes precedence.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-t</td>

+    <td width="20%">--test-case</td>

+    <td width="60%">Generates a test case. In the case of Java it would be

+        a JUnit test case.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-ss</td>

+    <td width="20%">--server-side</td>

+    <td width="60%">Generates server side code (i.e. skeletons). Default is

+        off.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-sd</td>

+    <td width="20%">--service-description</td>

+    <td width="60%">Generates the service descriptor (i.e. server.xml).

+        Default is off. Only valid with -ss, the server side code generation

+        option.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-d &lt;databinding&gt;</td>

+    <td width="20%">--databinding-method &lt;databinding&gt;</td>

+    <td width="60%">Specifies the Databinding framework. Valid values are

+        xmlbeans, adb, jibx, and none. Default is adb.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-g</td>

+    <td width="20%">--generate-all</td>

+    <td width="60%">Generates all the classes. This option is valid only

+        with the -ss (server side code generation) option. When on, the

+        client code (stubs) will also be generated along with the

+        skeleton.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-u</td>

+    <td width="20%">--unpack-classes</td>

+    <td width="60%">Unpack classes. This option specifies whether to unpack

+        the classes and generate separate classes for the databinders.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-sn &lt;service name&gt;</td>

+    <td width="20%">--service-name &lt;service name&gt;</td>

+    <td width="60%">Specifies the service name to be code generated. If the

+        service name is not specified, then the first service will be

+        picked.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-pn &lt;port name&gt;</td>

+    <td width="20%">--port-name &lt;port name&gt;</td>

+    <td width="60%">Specifies the port name to be code generated. If the

+        port name is not specified, then the first port (of the selected

+        service) will be picked.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-ns2p</td>

+    <td width="20%">--namespace2package</td>

+    <td width="60%">Specifies a comma separated list of namespaces and

+        packages where the given package will be used in the place of the

+        auto generated package for the relevant namespace. The list will be

+        the format of ns1=pkg1,ns2=pkg2.</td>

+    <td></td>

+</tr>

+<tr>

+    <td width="20%">-ssi</td>

+    <td width="20%">--serverside-interface</td>

+    <td width="60%">Generate an interface for the service skeleton.</td>

+    <td></td>

+</tr>

+</tbody>

+</table>

+

+<p>Apart from these mentioned options one can pass extra options by prefixing

+    them with -E (uppercase). These extra options will be processed by the

+    extensions. The extra options that can be passed are documented separately

+    with the extensions documentation (For example with ADB).</p>

+<a name="ant"></a>

+

+<h2>Ant Task</h2>

+

+<p>The code generator also comes bundled with an Ant task. The ant task is

+    implemented by the org.apache.axis2.tool.ant.AntCodegenTask class. Following

+    are the ant task attributes.</p>

+<a name="antref"></a>

+

+<h3>Ant Task Reference</h3>

+

+<table border="1" cellpadding="0" cellspacing="0"

+       style="border-collapse: collapse" width="100%" id="AutoNumber2">

+<tbody>

+<tr>

+    <td>wsdlfilename</td>

+    <td>WSDL file location. Maps to the -uri option of the command line

+        tool.</td>

+</tr>

+<tr>

+    <td>output</td>

+    <td>Output file location. This is where the files would be copied once

+        the code generation is done. If this option is omitted the generated

+        files would be copied to the working directory. Maps to the -o option

+        of the command line tool.</td>

+</tr>

+<tr>

+    <td>language</td>

+    <td>Output language. Currently the code generator can generate code in

+        Java. Maps to the -l option of the command line tool.</td>

+</tr>

+<tr>

+    <td>packageName</td>

+    <td>The target package name. If omitted, a default package (formed

+        using the target namespace of the WSDL) will be used. Maps to the -p

+        option of the command line tool.</td>

+</tr>

+<tr>

+    <td>databindingName</td>

+    <td>Data binding framework name. Maps to the -d

+        option of the command line tool. Possible values include "adb", "xmlbeans", "jibx".</td>

+</tr>

+<tr>

+    <td>serviceName</td>

+    <td>The name of the service in the case of multiple services. Maps to -sn options of the command line

+        tool.</td>

+</tr>

+<tr>

+    <td>portName</td>

+    <td>The name of the port in the presence of multiple ports. Maps to -pn options of the command line

+        tool.</td>

+</tr>

+<tr>

+    <td>asyncOnly</td>

+    <td>Generate code only for async style. When this option is used the

+        generated stubs will have only the asynchronous invocation methods.

+        Defaults to false if omitted. Only true and false are applicable as

+        values. Maps to the -a option of the command line tool.</td>

+</tr>

+<tr>

+    <td>syncOnly</td>

+    <td>Generate code only for sync style. When this option is used the

+        generated stubs will have only the synchronous invocation methods.

+        Defaults to false if omitted. Only true and false are applicable as

+        values. Maps to the -s option of the command line tool.</td>

+</tr>

+<tr>

+    <td>serverSide</td>

+    <td>Generates server side code (i.e. skeletons). Only true and false

+        are applicable as values. Default is false. Maps to the -ss option of

+        the command line tool.</td>

+</tr>

+<tr>

+    <td>testcase</td>

+    <td>Generates a test case. Possible values are true and false. Maps to the -t options of the command line

+        tool.</td>

+</tr>

+<tr>

+    <td>generateServiceXml</td>

+    <td>Generates server side code (i.e. skeletons). Only true and false

+        are applicable as values. Default is false. Maps to the -sd option of

+        the command line tool.</td>

+</tr>

+<tr>

+    <td>unpackClasses</td>

+    <td>Unpacks the generated classes. This forces the databinding classes

+        to be generated separately, which otherwise would have been generated

+        as inner classes.</td>

+</tr>

+<tr>

+    <td>generateAllClasses</td>

+    <td>Generates all the classes including client and server side code. Maps to the -g option of

+        the command line tool.</td>

+</tr>

+<tr>

+    <td>namespaceToPackages</td>

+    <td>A list of namespace to package mappings.</td>

+</tr>

+<tr>

+    <td>serverSideInterface</td>

+    <td>Flag stating whether to generate an interface for the server side

+        skeleton.</td>

+</tr>

+<tr>

+    <td>repositoryPath</td>

+    <td>Sets the repository path to be used. Maps to the -r option of

+        the command line tool. </td>

+</tr>

+<tr>

+    <td>wsdlVersion</td>

+    <td>Sets the version of the wsdl that is being used during codegeneration. This deafults to 1.1 and one can set

+        this to 2, when trying to work with a WSDL 2.0 document. Maps to the -wv option of

+        the command line tool.</td>

+</tr>

+<tr>

+    <td>externalMapping</td>

+    <td>Location of the external mapping file to be used. Maps to the -em option of

+        the command line tool.</td>

+</tr>

+<tr>

+    <td>targetSourceFolderLocation</td>

+    <td>Rather than dumping all the code in the same location, one has the option to make the sources to be generated in

+        a different location, given using this option. Maps to the -S option of

+        the command line tool.</td>

+</tr>

+<tr>

+    <td>targetResourcesFolderLocation</td>

+    <td>Rather than dumping all the code in the same location, one has the option to make the resources to be generated

+        in a different location, given using this option. Maps to the -R option of

+        the command line tool.</td>

+</tr>

+<tr>

+    <td>unwrap</td>

+    <td>This will select between wrapped and unwrapped during code generation. Default is set to false. Maps to the -uw

+        option of

+        the command line tool.</td>

+</tr>

+

+</tbody>

+</table>

+<a name="example"></a>

+

+<h3>Example Build File Using the Custom Ant Task</h3>

+

+<p>Following is an example ant build file that uses the custom Ant task. You

+    can use any wsdl file to test the example. Replace the "CombinedService.wsdl"

+    with the name of your wsdl file in the following script.</p>

+<pre>1 &lt;?xml version="1.0"?&gt;

+    2 &lt;project name="CodegenExample" default="main" basedir="."&gt;

+    3

+    4 &lt;path id="example.classpath"&gt;

+    5 &lt;fileset dir="classes"&gt;

+    6 &lt;include name="**/*.jar" /&gt;

+    7 &lt;/fileset&gt;

+    8 &lt;/path&gt;

+    9

+    10 &lt;target name="declare" &gt;

+    11 &lt;taskdef name="codegen"

+    12 classname="org.apache.axis2.tool.ant.AntCodegenTask"

+    13 classpathref="example.classpath"/&gt;

+    15 &lt;/target&gt;

+    16

+    17 &lt;target name="main" depends="declare"&gt;

+    18 &lt;codegen

+    19 wsdlfilename="C:\test\wsdl\CombinedService.wsdl"

+    20 output="C:\output"

+    21 serverside="true"

+    22 generateservicexml="true"/&gt;

+    23 &lt;/target&gt;

+    24

+    25 &lt;/project&gt;</pre>

+

+<p>In the above build script, from line 4 to 8 it sets the classpath and

+    includes all the .jar files (which are listed below) into the classpath. From

+    line 10 to 15 it creates a target to declare a task called "codegen" and sets

+    the appropriate class (org.apache.axis2.tool.ant.AntCodegenTask) within the

+    classpath in line 12. From line 17 to 23 it creates the "main" target to

+    generate the code from the given wsdl. There are some arguments set form line

+    19 to 22. Here in line 19 it sets the location of the wsdl. In line 20 it

+    sets the output directory in which the code is generated. Line 21 indicates

+    that this build generates the server side code(skeleton) and line 22

+    indicates that the services.xml is also generated.</p>

+

+<p>Notice the main target that uses the "codegen" task which will use the

+    org.apache.axis2.tool.ant.AntCodegenTask class and run the code generation

+    tool internally while passing the relevant arguments and do the proper

+    generation. If a user types</p>

+

+<p><code>&gt;ant</code> or <code>&gt;ant main</code></p>

+

+<p>it will generate the server side code and services.xml for the given WSDL

+    file (C:\test\wsdl\CombinedService.wsdl -in the above instance) and the

+    generated code will be written to the specified output path (C:\output - in

+    the above instance).</p>

+

+<p>For this Ant task to work the following jars need to be in the class

+    path.</p>

+<ul>

+    <li>axis-*.jar (from the Axis2 distribution)</li>

+    <li>wsdl4j-1.5.1.jar or higher (The WSDL4J implementation jar. Bundled with

+        the Axis2 distribution)</li>

+    <li>stax-api-1.0.1.jar (The StAX API's that contain the

+        javax.xml.namespace.QName class. This jar may be replaced by any other

+        jar that contains the javax.xml.namespace.QName implementation. However

+        Axis2 uses this class from the stax-api-1.0.1.jar which comes bundled

+        with the Axis2 distribution)</li>

+    <li>commons-logging-1.1.jar, neethi-1.1.jar and XmlSchema-1.1.jar (from the

+        Axis2 distribution)</li>

+    <li>axiom-api-1.1.1.jar and axiom-impl-1.1.1.jar (from the Axis2

+        distribution)</li>

+    <li>activation-1.1.jar (from the Axis2 distribution)</li>

+    <li>astx-asl0-3.0.1.jar (from the Axis2 distribution)</li>

+</ul>

+<a name="invoking"></a>

+

+<h3>Invoking the Code Generator From Ant</h3>

+

+<p>Since the users may find altering their ant class path a bit daunting they

+    can also follow an easier technique. The code generator main class can be

+    invoked directly through the build file.</p>

+

+<p>Below is an example of a full build.xml needed to run WSDL2Java and

+    generate the Java source files, compile the sources, and build an AAR file

+    ready for deployment (These are done one by one, by calling the targets in

+    the build file separately):</p>

+<pre class="code">&lt;!DOCTYPE project&gt;

+

+&lt;project name="wsdl2java-example" default="usage" basedir="."&gt;

+

+&lt;property name="project-name" value="wsdl2java-example"/&gt;

+&lt;property file="build.properties"/&gt;

+

+&lt;property name="build" value="build"/&gt;

+&lt;property name="src" value="src"/&gt;

+&lt;property name="build.classes" value="build/classes" /&gt;

+

+&lt;path id="axis.classpath"&gt;

+&lt;pathelement location="build/classes" /&gt;

+&lt;fileset dir="${axis.home}/lib"&gt;

+&lt;include name="**/*.jar" /&gt;

+&lt;/fileset&gt;

+&lt;pathelement location="${build.classes}" /&gt;

+&lt;/path&gt;

+

+&lt;path id="axis_client.classpath"&gt;

+&lt;pathelement location="build/classes" /&gt;

+&lt;fileset dir="${axis.home}"&gt;

+&lt;include name="**/*.jar" /&gt;

+&lt;/fileset&gt;

+&lt;fileset dir="lib"&gt;

+&lt;include name="*.jar" /&gt;

+&lt;/fileset&gt;

+&lt;pathelement location="${build.classes}" /&gt;

+&lt;/path&gt;

+

+&lt;target name="usage" description="Build file usage info (default task)"&gt;

+&lt;echo message=" " /&gt;

+&lt;echo message="${project-name} " /&gt;

+&lt;echo message="-------------------------------------------------------" /&gt;

+&lt;echo message=" " /&gt;

+&lt;echo message="Available Targets:" /&gt;

+&lt;echo message=" " /&gt;

+&lt;echo message=" Compiling:" /&gt;

+&lt;echo message=" compile - Compiles the WSDL2Java source code" /&gt;

+&lt;echo message=" " /&gt;

+&lt;echo message=" Compiling client:" /&gt;

+&lt;echo message=" compile_client - Compiles the client source code" /&gt;

+&lt;echo message=" " /&gt;

+&lt;echo message=" Cleaning up:" /&gt;

+&lt;echo message=" clean - Delete class files" /&gt;

+&lt;echo message=" " /&gt;

+&lt;echo message=" WSDL:" /&gt;

+&lt;echo message=" wsdl2java - Generate source from WSDL" /&gt;

+&lt;echo message=" " /&gt;

+&lt;echo message=" AAR:" /&gt;

+&lt;echo message=" aar - Generate an .aar for deployment into WEB-INF/services" /&gt;

+&lt;echo message=" " /&gt;

+&lt;echo message=" Executing:" /&gt;

+&lt;echo message=" runLogin - Execute the runLogin client" /&gt;

+&lt;/target&gt;

+

+&lt;target name="prepare" &gt;

+&lt;mkdir dir="${build.classes}" /&gt;

+&lt;/target&gt;

+

+&lt;target name="clean" &gt;

+&lt;delete dir="${build}" /&gt;

+&lt;delete dir="${dist}" /&gt;

+&lt;/target&gt;

+

+&lt;target name="compile"&gt;

+&lt;echo message="Compiling wsdl2 files"/&gt;

+

+&lt;javac

+srcdir="output"

+destdir="${build.classes}"

+deprecation="true"

+failonerror="true" debug="true"&gt;

+

+&lt;classpath refid="axis.classpath"/&gt;

+&lt;/javac&gt;

+

+&lt;/target&gt;

+

+&lt;target name="wsdl2java" depends="clean,prepare"&gt;

+&lt;delete dir="output" /&gt;

+&lt;java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true"&gt;

+&lt;classpath refid="axis.classpath"/&gt;

+&lt;arg value="-d"/&gt;

+&lt;arg value="xmlbeans"/&gt;

+&lt;arg value="-uri"/&gt;

+&lt;arg file="wsdl/LoginEndpoint.wsdl"/&gt;

+&lt;arg value="-ss"/&gt;

+&lt;arg value="-g"/&gt;

+&lt;arg value="-sd"/&gt;

+&lt;arg value="-o"/&gt;

+&lt;arg file="output"/&gt;

+&lt;arg value="-p"/&gt;

+&lt;arg value="org.example.types"/&gt;

+&lt;/java&gt;

+

+&lt;!-- Move the schema folder to classpath--&gt;

+&lt;move todir="${build.classes}"&gt;

+&lt;fileset dir="output/resources"&gt;

+&lt;include name="**/*schema*/**/*.class"/&gt;

+&lt;include name="**/*schema*/**/*.xsb"/&gt;

+&lt;/fileset&gt;

+&lt;/move&gt;

+

+&lt;/target&gt;

+

+&lt;target name="jar_wsdl" depends="compile"&gt;

+&lt;jar jarfile="lib/axis2_example_wsdl.jar" &gt;

+&lt;fileset dir="${build.classes}" /&gt;

+&lt;/jar&gt;

+&lt;/target&gt;

+

+&lt;!-- build an .aar file for axis2 web services --&gt;

+&lt;target name="aar" depends="compile"&gt;

+&lt;delete dir="${build.classes}/META-INF" /&gt;

+&lt;mkdir dir="${build.classes}/META-INF" /&gt;

+&lt;copy todir="${build.classes}/META-INF" &gt;

+&lt;fileset dir="output/resources" &gt;

+&lt;!-- axis2 web services definitions file --&gt;

+&lt;include name="services.xml"/&gt;

+&lt;/fileset&gt;

+&lt;fileset dir="wsdl" &gt;

+&lt;include name="LoginEndpoint.wsdl"/&gt;

+&lt;/fileset&gt;

+&lt;/copy&gt;

+&lt;jar jarfile="dist/LoginEndpoint.aar" &gt;

+&lt;fileset dir="${build.classes}" /&gt;

+&lt;/jar&gt;

+&lt;/target&gt;

+

+&lt;target name="compile_client"&gt;

+&lt;echo message="Compiling client files"/&gt;

+

+&lt;javac

+srcdir="src"

+destdir="${build.classes}"

+deprecation="true"

+failonerror="true" debug="true"&gt;

+

+&lt;classpath refid="axis.classpath"/&gt;

+&lt;/javac&gt;

+

+&lt;/target&gt;

+

+&lt;target name="runLogin" depends="prepare,compile_client" description="run simple Login client"&gt;

+&lt;java classname="org.client.LoginClient" &gt;

+&lt;classpath refid="axis_client.classpath"/&gt;

+&lt;/java&gt;

+&lt;/target&gt;

+

+&lt;/project&gt;</pre>

+

+<p>Place the above build.xml file in the 'bin' directory of the axis2 binary

+    distribution. Then create a build.properties file in the same directory and

+    specify the axis.home path pointing to the axis2 binary distribution</p>

+

+<p>E.g. :- axis.home=C://Axis2//axis2-1.1-bin</p>

+

+<p>The above build.xml example also assumes three empty directories exist,

+    'dist', 'lib', and 'src'.</p>

+

+<p>Below is a validated WSDL Document following the Document/Literal Style.

+    The name of this file matches the name used in the WSDL2Java ant task above,

+    LoginEndpoint.wsdl.</p>

+<pre class="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;

+

+    &lt;definitions name="LoginService" targetNamespace="http://login" xmlns:tns="http://login"

+    xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://login/types"&gt;

+

+    &lt;types&gt;

+    &lt;schema targetNamespace="http://login/types" xmlns:tns="http://login/types"

+    xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+    xmlns="http://www.w3.org/2001/XMLSchema"&gt;

+    &lt;import namespace="http://schemas.xmlsoap.org/soap/encoding/"/&gt;

+    &lt;element name="returnWebLoginElement"&gt;

+    &lt;complexType&gt;

+    &lt;sequence&gt;

+

+    &lt;element ref="tns:soap_session_idElement"/&gt;

+    &lt;element ref="tns:web_user_nameElement"/&gt;

+    &lt;/sequence&gt;

+    &lt;/complexType&gt;

+    &lt;/element&gt;

+    &lt;element name="webLoginElement"&gt;

+

+    &lt;complexType&gt;

+    &lt;sequence&gt;

+    &lt;element ref="tns:user_nameElement"/&gt;

+    &lt;element ref="tns:user_passwordElement"/&gt;

+    &lt;/sequence&gt;

+    &lt;/complexType&gt;

+

+    &lt;/element&gt;

+    &lt;element name="user_nameElement" type="xsd:string"/&gt;

+    &lt;element name="user_passwordElement" type="xsd:string"/&gt;

+    &lt;element name="soap_session_idElement" type="xsd:string"/&gt;

+    &lt;element name="web_user_nameElement" type="xsd:string"/&gt;

+    &lt;/schema&gt;&lt;/types&gt;

+

+    &lt;message name="LoginEndpoint_webLogin"&gt;

+    &lt;part name="parameters" element="ns2:webLoginElement"/&gt;

+    &lt;/message&gt;

+    &lt;message name="LoginEndpoint_webLoginResponse"&gt;

+    &lt;part name="result" element="ns2:returnWebLoginElement"/&gt;

+    &lt;/message&gt;

+

+    &lt;portType name="LoginEndpoint"&gt;

+    &lt;operation name="webLogin"&gt;

+    &lt;input message="tns:LoginEndpoint_webLogin" name="LoginEndpoint_webLogin"/&gt;

+    &lt;output message="tns:LoginEndpoint_webLoginResponse" name="LoginEndpoint_webLoginResponse"/&gt;

+    &lt;/operation&gt;

+    &lt;/portType&gt;

+

+    &lt;binding name="LoginEndpointBinding" type="tns:LoginEndpoint"&gt;

+    &lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/&gt;

+    &lt;operation name="webLogin"&gt;

+    &lt;soap:operation soapAction="webLogin"/&gt;

+    &lt;input name="LoginEndpoint_webLogin"&gt;

+    &lt;soap:body use="literal"/&gt;

+

+    &lt;/input&gt;

+    &lt;output name="LoginEndpoint_webLoginResponse"&gt;

+    &lt;soap:body use="literal"/&gt;

+    &lt;/output&gt;

+    &lt;/operation&gt;

+    &lt;/binding&gt;

+

+    &lt;service name="LoginService"&gt;

+    &lt;port name="LoginEndpointPort" binding="tns:LoginEndpointBinding"&gt;

+    &lt;soap:address location="http://localhost:8080/axis2/services/LoginService"/&gt;&lt;/port&gt;

+    &lt;/service&gt;&lt;/definitions&gt;</pre>

+

+<p>Place the above file, named LoginEndpoint.wsdl, in the directory 'wsdl'

+    which is also inside the 'bin' directory. Run the wsdl2java command via the

+    ant task defined above (&gt;ant wsdl2java), and there will be a directory

+    called 'output' created. This directory contains the WSDL2Java generated

+    source.</p>

+

+<p>An important detail is that an XMLBean class file is also generated by

+    WSDL2Java, TypeSystemHolder.class. That file is placed into build/classes by

+    the above ant task and will be needed to compile the generated sources. A

+    frequent problem is users get an error such as:</p>

+

+<p><em><b>ClassNotFoundException : Cannot load SchemaTypeSystem. Unable to

+    load class with name

+    schemaorg_apache_xmlbeans.system.s68C41DB812F52C975439BA10FE4FEE54.TypeSystemHolder.

+    Make sure the generated binary files are on the classpath.</b></em></p>

+

+<p>The TypeSystemHolder.class generated by WSDL2Java must be placed in your

+    classpath in order to avoid this error.</p>

+

+<p>The next step is to modify the generated Skeleton Java Source file - the

+    Web service. This file as generated returns null and needs to be updated to

+    contain the business logic.</p>

+

+<p>After the WSDL2Java command runs the file LoginEndpoint.wsdl, edit the

+    following file:</p>

+

+<p>output/src/org/example/types/LoginServiceSkeleton.java. You should see the

+    following code:</p>

+<pre class="code">/**

+    * LoginServiceSkeleton.java

+    *

+    * This file was auto-generated from WSDL

+    * by the Apache Axis2 version: 1.0-RC4 Apr 28, 2006 (05:23:23 IST)

+    */

+    package org.example.types;

+    /**

+    * LoginServiceSkeleton java skeleton for the axisService

+    */

+    public class LoginServiceSkeleton {

+

+

+    /**

+    * Auto generated method signature

+

+    * @param param0

+

+    */

+    public login.types.ReturnWebLoginElementDocument webLogin

+    (login.types.WebLoginElementDocument param0 )

+

+    {

+    //Todo fill this with the necessary business logic

+    throw new java.lang.UnsupportedOperationException();

+    }

+

+    }</pre>

+

+<p>Replace the contents of this file with the following, which uses the

+    complex types generated by WSDL2Java and the example wsdl file:</p>

+<pre class="code">/**

+    * LoginServiceSkeleton.java

+    *

+    * This file was auto-generated from WSDL

+    * by the Apache Axis2 version: 1.0-RC4 Apr 28, 2006 (05:23:23 IST)

+    */

+    package org.example.types;

+    import login.types.ReturnWebLoginElementDocument;

+    import login.types.ReturnWebLoginElementDocument.*;

+    import login.types.WebLoginElementDocument;

+    import login.types.WebLoginElementDocument.*;

+

+    /**

+    * Auto generated java skeleton for the service by the Axis code generator

+    */

+    public class LoginServiceSkeleton {

+

+    /**

+    * Auto generated method signature

+

+    * @param webLoginElementDocument changed from param0

+

+    */

+    public ReturnWebLoginElementDocument webLogin

+    (WebLoginElementDocument webLoginElementDocument ){

+

+    //Todo fill this with the necessary business logic

+    System.out.println("LoginServiceSkeleton.webLogin reached successfully!");

+

+    // Get parameters passed in

+    WebLoginElement webLoginElement = webLoginElementDocument.getWebLoginElement();

+    String userName = webLoginElement.getUserNameElement();

+    String password = webLoginElement.getUserPasswordElement();

+    System.out.println("LoginServiceSkeleton.webLogin userName: " + userName);

+    System.out.println("LoginServiceSkeleton.webLogin password: " + password);

+

+    // input paramaters would be used here

+

+    // prepare output

+    ReturnWebLoginElementDocument retDoc =

+    ReturnWebLoginElementDocument.Factory.newInstance();

+

+    ReturnWebLoginElement retElement = ReturnWebLoginElement.Factory.newInstance();

+

+    retElement.setWebUserNameElement("joe sixpack");

+    retElement.setSoapSessionIdElement("some_random_string");

+    System.out.println("validate retElement: " + retElement.validate());

+

+    retDoc.setReturnWebLoginElement(retElement);

+    System.out.println("validate retDoc: " + retDoc.validate());

+

+    System.out.println("LoginServiceSkeleton.webLogin returning...");

+

+    return retDoc;

+

+    }

+    }</pre>

+

+<p>The next steps assume the axis2.war has been deployed and has expanded in

+    a servlet container.</p>

+

+<p>Run the 'jar_wsdl' ant task from the example build.xml (&gt;ant jar_wsdl),

+    which generates a jar file axis2_example_wsdl.jar in the 'bin/lib' directory.

+    This jar will be used to compile the client, and also will be placed in the

+    servlet container.</p>

+

+<p>Next, run the 'aar' ant task from the example build.xml (&gt;ant aar),

+    which generates the deployable axis2 Web service. Place

+    dist/LoginEndpoint.aar into axis2/WEB-INF/services . Place

+    lib/axis2_example_wsdl.jar into axis2/WEB-INF/lib . Verify the happy axis

+    page loaded the services correctly - there should be the service

+    'LoginEndpoint' with the available operation 'webLogin' displayed.</p>

+

+<p>The last step is to create and run the client. In the src directory create

+    the file org.client.LoginClient.java, with the contents below:</p>

+<pre class="code">package org.client;

+

+    import org.apache.axis2.AxisFault;

+

+    import login.types.ReturnWebLoginElementDocument;

+    import login.types.ReturnWebLoginElementDocument.*;

+    import login.types.WebLoginElementDocument;

+    import login.types.WebLoginElementDocument.*;

+    import org.example.types.LoginServiceStub;

+

+    /**

+    * Login.

+    *

+    */

+    public class LoginClient {

+

+    public static void main(String[] args) {

+    try {

+

+    System.out.println("webLogin, firing...");

+    LoginServiceStub stub = new LoginServiceStub();

+

+    WebLoginElementDocument webLoginElementDocument

+    = WebLoginElementDocument.Factory.newInstance();

+    WebLoginElement webLoginElement =

+    WebLoginElement.Factory.newInstance();

+    webLoginElement.setUserNameElement("joe");

+    webLoginElement.setUserPasswordElement("sixpack");

+

+    webLoginElementDocument.setWebLoginElement(webLoginElement);

+

+    System.out.println("validate: " + webLoginElement.validate());

+    stub.webLogin(webLoginElementDocument);

+

+    ReturnWebLoginElementDocument returnWebLoginElementDocument =

+    stub.webLogin(webLoginElementDocument);

+

+    System.out.println("Client returned");

+

+    ReturnWebLoginElementDocument.ReturnWebLoginElement

+    retElement = returnWebLoginElementDocument.getReturnWebLoginElement();

+

+    System.out.println("WebUserName: " + retElement.getWebUserNameElement());

+    System.out.println("SOAPSessionId: " + retElement.getSoapSessionIdElement());

+    System.out.println("webLogin, completed!!!");

+

+    } catch (AxisFault axisFault) {

+    axisFault.printStackTrace();

+    } catch (Exception ex) {

+    ex.printStackTrace();

+    }

+    }

+    }</pre>

+

+<p>Now run the ant task 'runLogin' (&gt;ant runLogin). The following output

+    should appear:</p>

+<pre class="code">runLogin:

+    [echo] running the webLogin client

+    [java] webLogin, firing...

+    [java] validate: true

+    [java] Client returned

+    [java] WebUserName: joe sixpack

+    [java] SOAPSessionId: some_random_string

+    [java] webLogin, completed!!!</pre>

+<a name="appendix"></a>

+

+<h2>Appendix</h2>

+<ul>

+    <li>Eclipse reference - <a href="http://www.eclipse.org/">

+        http://www.eclipse.org/</a></li>

+    <li>Custom Ant Tasks - <a href="http://ant.apache.org/manual/develop.html">

+        http://ant.apache.org/manual/develop.html</a></li>

+</ul>

+

+<p></p>

+

+<p></p>

+

+<p></p>

+

+<p></p>

+

+<p></p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/ServicePage1.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/ServicePage1.jpg
new file mode 100644
index 0000000..94758fd
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/ServicePage1.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/ServiceWizardSelection.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/ServiceWizardSelection.jpg
new file mode 100644
index 0000000..e7483b7
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/ServiceWizardSelection.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/Thumbs.db b/rampart_1_1/xdocs/tools/1_1/eclipse/images/Thumbs.db
new file mode 100644
index 0000000..3d680b4
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/Thumbs.db
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/help.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/help.jpg
new file mode 100644
index 0000000..a9ac96e
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/help.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen0.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen0.jpg
new file mode 100644
index 0000000..1c50db0
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen0.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen0.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen0.png
new file mode 100755
index 0000000..f2cff1d
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen0.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen1.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen1.jpg
new file mode 100644
index 0000000..e2f2efb
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen1.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen1.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen1.png
new file mode 100755
index 0000000..0e44970
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen1.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen2.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen2.jpg
new file mode 100644
index 0000000..4bd294e
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen2.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen2.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen2.png
new file mode 100755
index 0000000..fe20034
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen2.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen3.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen3.jpg
new file mode 100644
index 0000000..a3bbf07
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen3.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen3.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen3.png
new file mode 100755
index 0000000..9a9785b
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen3.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen31.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen31.png
new file mode 100755
index 0000000..d65d20f
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen31.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen4.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen4.png
new file mode 100755
index 0000000..8257ff2
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/java2wsdl-screen4.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page2.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page2.jpg
new file mode 100644
index 0000000..c1d3afc
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page2.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page3.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page3.jpg
new file mode 100644
index 0000000..a438ee4
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page3.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page3_hl.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page3_hl.jpg
new file mode 100644
index 0000000..936be2f
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page3_hl.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_load.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_load.jpg
new file mode 100644
index 0000000..7dd5e6f
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_load.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_plain.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_plain.jpg
new file mode 100644
index 0000000..5cb497d
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_plain.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_search_declared.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_search_declared.jpg
new file mode 100644
index 0000000..0e30900
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_search_declared.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_table.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_table.jpg
new file mode 100644
index 0000000..5ef0495
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page4_table.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5.jpg
new file mode 100644
index 0000000..91f226e
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_added.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_added.jpg
new file mode 100644
index 0000000..b33e376
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_added.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_browsed.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_browsed.jpg
new file mode 100644
index 0000000..df83813
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_browsed.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_hl.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_hl.jpg
new file mode 100644
index 0000000..81d2149
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_hl.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_remove.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_remove.jpg
new file mode 100644
index 0000000..e1b7f63
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page5_remove.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page6.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page6.jpg
new file mode 100644
index 0000000..3fe17c7
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/service_page6.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/success_msg.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/success_msg.jpg
new file mode 100644
index 0000000..bd5c6c8
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/success_msg.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen0.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen0.jpg
new file mode 100644
index 0000000..b318ef5
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen0.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen0.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen0.png
new file mode 100755
index 0000000..40bc045
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen0.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen1.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen1.jpg
new file mode 100644
index 0000000..1a8113e
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen1.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen1.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen1.png
new file mode 100755
index 0000000..5e95032
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen1.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen2.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen2.jpg
new file mode 100644
index 0000000..64d7529
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen2.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen2.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen2.png
new file mode 100755
index 0000000..9562a83
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen2.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen3.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen3.jpg
new file mode 100644
index 0000000..2a3ca64
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen3.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen3.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen3.png
new file mode 100755
index 0000000..76fcde8
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen3.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen31.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen31.png
new file mode 100755
index 0000000..d65d20f
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen31.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen4.jpg b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen4.jpg
new file mode 100644
index 0000000..87ef6d9
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen4.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen4.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen4.png
new file mode 100755
index 0000000..a63ad7c
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen4.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen41.png b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen41.png
new file mode 100755
index 0000000..a691d47
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/images/wsdl2java-screen41.png
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/servicearchiver-plugin.html b/rampart_1_1/xdocs/tools/1_1/eclipse/servicearchiver-plugin.html
new file mode 100644
index 0000000..a297956
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/servicearchiver-plugin.html
@@ -0,0 +1,175 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Service Archive Generator Wizard Guide for Eclipse Plug-in</title>

+  <link href="../../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Service Archive Generator Wizard Guide for Eclipse Plug-in</h1>

+

+<p>This document will guide you through the installation and usage of the

+archive generator Eclipse plug-in.</p>

+

+<p><a href="http://ws.apache.org/axis2/tools/index.html"

+target="_blank">[Download Plugin Tool]</a></p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#intro">Introduction</a></li>

+  <li><a href="#installation">Installation</a></li>

+  <li><a href="#operation">Operation</a></li>

+</ul>

+<a name="intro"></a>

+

+<h2>Introduction</h2>

+

+<p>As part of the Axis2 tool set, the service archive generator is an

+important tool that allows the generation of service archives ("aar" file or

+a "jar" files) that can be deployed as a web services to the Axis2.</p>

+<a name="installation"></a>

+

+<h2>Installation</h2>

+

+<p>Download the binary version of the plug-in and extract the content of the

+zip file into the Eclipse installation folder. (The plug-in will actually go

+into the plugins directory in the Eclipse installation root). Restarting

+Eclipse will set the plug-in automatically.</p>

+<a name="operation"></a>

+

+<h2>Operation</h2>

+

+<p>If the plug-in is properly installed you should see a new wizard under the

+"New" section. (Use the File -&gt; New -&gt; Other or Ctrl + N )</p>

+

+<p align="center"><img border="0" src="images/ServiceWizardSelection.jpg"></p>

+

+<p>Selecting the wizard and pressing the "Next" button will start the service

+generator wizard. Following is the first page of the wizard.</p>

+

+<p><strong>Page 1:</strong></p>

+

+<p align="center"><img border="0" src="images/ServicePage1.jpg"></p>

+

+<p>Once the class file folder (which should be a folder in the file system)

+is browsed and selected, the "Next" button will be enabled and you can move to

+the next page. Note that you have the option of either including all the

+files or the class files only of the folder on page 1.</p>

+

+<p><strong>Page 2:</strong></p>

+

+<p>Page 2 of the wizard as seen below requires you to locate/browse the WSDL

+file. If you do not wish to add a WSDL file to the service archive, select skip WSDL, else you can 

+select the location of the WSDL file by selecting the select WSDL option.</p>

+

+<p align="center"><img border="0" src="images/service_page2.jpg"></p>

+

+<p><strong>Page 3:</strong></p>

+

+<p>Select the services.xml file on this wizard page by browsing or select the

+option of generating service xml automatically, after which you can click

+"Next" button to go to the next page. Notice how the browsing option disables

+when the "Generate service xml automatically" check box is ticked.</p>

+

+<p align="center"><img border="0" src="images/service_page3.jpg"></p>

+<!--

+<p>Note that The service XML file can be generated if needed. To proceed

+to the service generation page, check the "generate automatically" checkbox. </p>

+<p align="center"><img border="0" src="service_page3_hl.jpg"></p>

+

+<p>If the automatic mode is not selected then the wizard

+will directly jump to the library selection page. However if the automatic mode is selected the wizard will show the

+following page</p>

+<p align="center"><img border="0" src="service_page4_plain.JPG" width="500" height="500"></p>

+<p>This is a somewhat complicated page. The service name textbox should include the name of the service that you

+wish to give this service. 

+For the implementation class type in the fully qualified class name and hit the load button to view the operations</p>

+<p align="center"><img border="0" src="service_page4_load.JPG" ></p>

+<p> The loaded operations should be displayed in a table. Once this is displayed you can filter the methods by selecting/deselecting the methods using the checkbox at each row.</p>

+<p align="center"><img border="0" src="service_page4_table.JPG" width="500" height="500"></p>

+<p>Further filtering can be achieved by using the "search declared methods" only checkbox</p>

+<p align="center"><img border="0" src="service_page4_search_declared.JPG" ></p>

+<p>Once the method selection is complete the wizard has enough information to generate a basic services.xml file. If further customization is required, there's no choice but to manually edit it!</p>

+

+-->

+

+<p><strong>Page 4:</strong></p>

+<!--START-->

+

+<p>The next step is to add the libraries. The library addition page looks

+like this : </p>

+

+<p align="center"><img border="0" src="images/service_page5.jpg"></p>

+

+<p>The library name (with full path) can be either typed on the text box or

+browsed for using the "Browse" button.</p>

+

+<p align="center"><img border="0" src="images/service_page5_browsed.jpg"></p>

+

+<p>Once there is a library name with full path on the text box, hit the "Add"

+button to add the library to the list. Added libraries should be displayed in

+the "Added libraries" list box. This way you can add as many external

+libraries as you wish. See the screen shots below.</p>

+

+<p align="center"><img border="0" src="images/service_page5_hl.jpg"></p>

+

+<p align="center"><img border="0" src="images/service_page5_added.jpg"></p>

+

+<p>If any added library needs to be removed, highlight it or in other words,

+select it from the "Added libraries" list and hit on the "Remove" button as shown

+below. Click on the "Next" button to proceed to the last page of the wizard if the 

+user did not select to auto generate the services.xml file. If user select to auto

+generate the services.xml file then the services.xml option page will be displayed.</p>

+

+<p align="center"><img border="0" src="images/service_page5_remove.jpg"></p>

+

+<p><strong>Page 5:</strong></p>

+

+<p>This page only appears if the user select to generate the services.xml at page 3

+of the wizard. If the user have selected a services.xml then the user will be directed

+to the last page of the wizard.</p>

+

+<p>After entering the correct service name and valid fully qualified class name,

+try to load the existing methods of that class by clicking the load button.</p>

+

+<p align="center"><img border="0" src="images/service_page4_load.jpg"></p>

+

+<p>If successfully loaded the user will be presented with a table at the 

+bottom of the page with the details of the loaded class. By checking and unchecking 

+the user can select the necessary methods to include in the services.xml</p>

+

+<p align="center"><img border="0" src="images/service_page4_table.jpg"></p>

+

+<p>By clicking on the search declared method only check box, the user can remove the 

+inherited methods from the class. Click on the "Next" button to proceed to the last page of the wizard</p>

+

+<p align="center"><img border="0" src="images/service_page4_search_declared.jpg"></p>

+

+<p><strong>Page 6:</strong></p>

+

+<p>The last page of the wizard asks for the output file location and the

+output archive file name. To be able to finish the wizard, user must enter

+valid output file location and output file name.</p>

+

+<p></p>

+

+<p align="center"><img border="0" src="images/service_page6.jpg"></p>

+

+<p>Once all the parameters are filled, hit the "Finish" button to complete the

+wizard and generate the service archive.</p>

+

+<p align="center"><img border="0" src="images/success_msg.jpg"></p>

+

+<p>If you see the above message, then you've successfully generated the

+service archive! This service archive can be hot deployed (deployed at run

+time) to the axis2</p>

+

+<h1>Appendix</h1>

+<ul>

+  <li>Eclipse reference - <a href="http://www.eclipse.org/" target="_blank">

+    http://www.eclipse.org/</a></li>

+  <li>Custom Ant Tasks  - <a href="http://ant.apache.org/manual/develop.html"

+    target="_blank"> http://ant.apache.org/manual/develop.html</a></li>

+</ul>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/tools/1_1/eclipse/wsdl2java-plugin.html b/rampart_1_1/xdocs/tools/1_1/eclipse/wsdl2java-plugin.html
new file mode 100644
index 0000000..9af6c88
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/eclipse/wsdl2java-plugin.html
@@ -0,0 +1,188 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Code Generator Wizard Guide for Eclipse Plug-in</title>

+  <link href="../../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Code Generator Wizard Guide for Eclipse Plug-in</h1>

+

+<p>This document explains the usage of this code generator plug-in for

+Eclipse. In other words, this document will guide you through the operations

+of generating a WSDL file from a Java class and/or generating a Java class

+file from a WSDL file.</p>

+

+<p><a href="http://ws.apache.org/axis2/tools/index.html"

+target="_blank">[Download Plugin Tool]</a></p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#intro">Introduction</a></li>

+  <li><a href="#installation">Installation</a></li>

+  <li><a href="#operation1">Operation - WSDL2Java</a></li>

+  <li><a href="#operation2">Operation - Java2WSDL</a></li>

+</ul>

+<a name="intro"></a>

+

+<h2>Introduction</h2>

+

+<p>The Axis2 code generator comes built-in with an <a

+href="http://www.eclipse.org">Eclipse</a> plug-in. This plug-in can be used

+to generate a WSDL file from a java class (Java2WSDL) and/or a java class

+file from a WSDL (WSDL2Java). First you need to install the plug-in. The

+instructions for the installation process are given below.</p>

+<a name="installation"></a>

+

+<h2>Installation</h2>

+

+<p>One can easily <a href="http://ws.apache.org/axis2/tools/index.html">download</a> the plugin</p>

+

+<p>If one needs to build the plug-in from source, it is not as trivial as

+running the Maven build. The reason is that the plug-in depends heavily on

+the Eclipse classes, which are only available in an Eclipse environment. The

+recommended procedure is to run the create-project.xml (in the "modules\tool"

+directory of the Source Distribution) build file which will create two

+folders (the other one for the Service Archiver tool) and copy the necessary

+files to relevant folders. Then Eclipse should be configured to open the

+contents in a PDE project. Please go through the Eclipse documentation to

+learn how to open projects in the PDE format.</p>

+

+<p>Once you've obtained the plug-in just unzip the content of the plug-in

+archive to the Eclipse plug-in directory (if it is the zipped-binary version)

+or copy the necessary folders to the Eclipse plug-in directory and restart

+Eclipse.</p>

+

+<p><strong>NOTE</strong> : This plug-in works on Eclipse version 3.1 and

+upwards, also the java version should be 1.4 or higher. The provided screen shots 

+may slightly differ with what the user would actually see but the functionality 

+has not been changed.</p>

+<a name="operation1"></a>

+

+<h2>Operation - WSDL2Java</h2>

+

+<p>If the plug-in is properly installed you should see a new wizard under the

+"New" section.(use the File -&gt; New -&gt; Other or Ctrl + N )</p>

+

+<p><img border="0" src="images/wsdl2java-screen0.png"></p>

+

+<p>Selecting the wizard and pressing the "Next" button will start the code

+generator wizard. Following is the first wizard page.</p>

+

+<p><strong>Page 1:</strong></p>

+

+<p><img src="images/wsdl2java-screen1.png"></p>

+

+<p>Selecting the "Generate Java source code from WSDL file" option and

+clicking "Next" leads to the following page.</p>

+

+<p><strong>WSDL2Java Page 2 :</strong></p>

+

+<p><img border="0" src="images/wsdl2java-screen2.png"></p>

+

+<p>To move on to the next page the WSDL file location must be given. The

+"Browse" button can be used to easily browse for a file rather than typing the

+whole path.</p>

+

+<p><strong>WSDL2Java Page 3 :</strong></p>

+

+<p>Once the WSDL file is selected, the next page will take you to the page

+from where <strong>codegen options</strong> are to be selected. By far this

+is the most important page in this wizard. This page determines the

+characteristics of the code being generated.</p>

+

+<p>Novices need not worry about these options since the most common options

+are defaulted, but advanced users will find it very easy to turn the knobs

+using these options.</p>

+

+

+<p><img border="0" src="images/wsdl2java-screen3.png"></p>

+

+<p>What advanced users can do is select custom from the select codegen options

+drop down list and then change/edit the fields that you need.</p>

+

+<p><img border="0" src="images/wsdl2java-screen31.png"></p>

+

+

+<p>Once the options are selected, only the final step of the code generation

+is left which is the selection of the output file location.</p>

+

+<p><strong>WSDL2Java Page 4 :</strong></p>

+

+<p>Here you can select the output file path by typing or browsing using the

+"Browse" button. You have the option of browsing only eclipse workspace projects by

+selecting the "Add the source to a project on current eclipse workspace" radio button. 

+Or else you have the option to save the codegen resutls to file system</p>

+

+<p><img border="0" src="images/wsdl2java-screen4.png"></p>

+

+<p>Here also you have the option to add some value to the codegen results. 

+If you have enabled the check box "Add Axis2 libraries to the codegen result project" 

+then all other controls below will get enabled. What you can do is point the downloaded 

+Axis2_HOME location via the "Browse" button. Then you can verify the availability of the Axis2 

+libs by clicking on the "Check Libs" button. If all goes well then you can add the axis 2 libs 

+to the codegen results location. Another option is available to generate a jar file if the user 

+needs to add the codegen results to a project as a compiled jar file to the selected locations 

+lib directory.</p>

+<p><img border="0" src="images/wsdl2java-screen41.png"></p>

+

+<p>When the output file location is selected, the "Finish" button will be

+enabled. Clicking the "Finish" button will generate the code and a message box

+will pop up acknowledging the success. Well Done! You've successfully

+completed Axis2 code generation.</p>

+<a name="operation2"></a>

+

+<h2>Operation - Java2WSDL</h2>

+

+<p><strong>Page 1:</strong></p>

+

+<p>For this operation you need to select the option which says "Generate a

+WSDL from a Java source file"</p>

+

+<p><img border="0" src="images/java2wsdl-screen0.png"></p>

+

+<p>Then click the "Next" button which will lead to the next page below.</p>

+

+<p><strong>Java2WSDL Page 2:</strong></p>

+

+<p><img border="0" src="images/java2wsdl-screen1.png"></p>

+

+<p>In this page one needs to select the class to be exposed and the relevant

+jar files /classes to be loaded as the classpath. After the libraries have

+been set, the "Test Class Loading" button must be clicked in order to test

+whether the class is loadable. Unless the class loading is successful

+proceeding to the "Next" button will not be enabled.</p>

+

+<p>Once the classloading is successful and "Next" button is clicked the page

+below will appear.</p>

+

+<p><strong>Java2WSDL Page 3:</strong></p>

+

+<p>This page allows the parameters to be modified by setting the options for

+the generator.</p>

+

+<p><img border="0" src="images/java2wsdl-screen2.png"></p>

+

+<p><strong>Java2WSDL Page 4:</strong></p>

+

+<p>Here you can select the output file path by typing or browsing using the

+"Browse" button. You have the option of browsing only Eclipse workspace projects by

+selecting the "Add the source to a project on current eclipse workspace" radio button

+. Or else you have the option to save the codegen resutls to file system. Once the 

+output file location and the output WSDL file name is added you can click the "Finish" 

+button to complete generation.</p>

+<p><img border="0" src="images/java2wsdl-screen3.png"></p>

+

+<p>If a message box pops up acknowledging the success, then you've

+successfully completed the Java2WSDL code generation. </p>

+

+<h1>Appendix</h1>

+<ul>

+  <li>Eclipse reference - <a href="http://www.eclipse.org/">

+    http://www.eclipse.org/</a></li>

+  <li>Custom Ant Tasks&#xa0; - <a

+    href="http://ant.apache.org/manual/develop.html">

+    http://ant.apache.org/manual/develop.html</a></li>

+</ul>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/tools/1_1/idea/Idea_plug-in_userguide.html b/rampart_1_1/xdocs/tools/1_1/idea/Idea_plug-in_userguide.html
new file mode 100644
index 0000000..8f3fded
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/Idea_plug-in_userguide.html
@@ -0,0 +1,379 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

+      "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

+  <meta content="text/html; charset=iso-8859-1">

+  <title>Axis2 Plug-in Guide for IntelliJ IDEA</title>

+  <meta name="generator" content="Bluefish 1.0.5">

+  <link href="../../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />

+</head>

+

+<body lang="en">

+<h1>Axis2 Plug-in Guide for IntelliJ IDEA</h1>

+

+<p>This document explains the installation and usage of Axis2 plug-in for IntelliJ IDEA.</p>

+

+<p><a href="http://ws.apache.org/axis2/tools/index.html">[Download

+Plug-in]</a></p>

+

+<h2>Content</h2>

+<ul>

+  <li><a href="#intro">Introduction</a></li>

+  <li><a href="#installation">Installation</a></li>

+  <li><a href="#WSDL2Java_Code_Generation">WSDL2Java Code Generation</a></li>

+  <li><a href="#Create_Service_Archive">Create a Service Archive</a>

+    <ul>

+      <li><a href="#sub12">Sub Wizard 1 &amp; Sub Wizard 2</a></li>

+      <li><a href="#sub3">Sub Wizard 3</a></li>

+    </ul>

+  </li>

+</ul>

+<a name="intro"></a>

+

+<h2>Introduction</h2>

+

+<p>The Axis2 plug-in for IntelliJ IDEA helps users to create service archives 

+which can be deployed in Axis2, and generate java classes files from WSDL

+files. The following section describes the installation procedure followed

+by the usage of the plug-in.</p>

+

+<a name="installation"></a>

+

+<h2>Installation</h2>

+

+<p>First <a href="http://ws.apache.org/axis2/tools/index.html">download</a>

+the plug-in which is a zipped file, and extract it into plugins directory 

+which is located in the directory where IDEA is installed. If a previous 

+version of the plug-in resides in this directory you will have to delete it 

+prior to extracting the new zip file. If you have extracted the file correctly 

+you would see a directory called axis2-idea-plugin.</p>

+

+<p>Next step is to restart IDEA so that the changes can take place. If the

+plug-in has been installed correctly, you will see

+following icons in IDEA when it is restarted.</p>

+

+<p><img alt="Figure 1" src="images/idea-icons.jpg"></p>

+

+<p>Also if you right-click on the  IDEA editor you would see a link to the

+same plug-in.</p>

+

+<p><img alt="Figure2" src="images/idea-popup.jpg"></p>

+

+<p>When you click on either one of them, a window (Page 1) will appear asking

+you to select one of the following two options.</p>

+<ol>

+  <li><a href="#Create_Service_Archive">Create a service archive</a></li>

+  <li><a href="#WSDL2Java_Code_Generation">WSDL2Java code generation</a></li>

+</ol>

+

+<p><strong>Page 1:</strong></p>

+

+<p><img alt="Figure3" src="images/fig1.jpg"></p>

+

+<p>If you want to create a service archive obviously you must select "Create

+a service archive" option. Like wise, if u want to generate java class file

+from a WSDL file you must select the radio button option "WSDL2Java

+code generation".</p>

+

+<h2><a name="WSDL2Java_Code_Generation">WSDL2Java Code Generation</a></h2>

+

+<p>Select "WSDL2Java code generation" and click on the button "OK" to generate

+code from a WSDL file. Then the following window will appear.</p>

+

+<p><strong>WSDL2Java Page 2:</strong></p>

+

+<p><img alt="Figure4" src="images/fig2.jpg"></p>

+

+<p>Once the WSDL file is selected you will be able to move onto the next page. The

+"Browse" button can be used to easily browse for a file rather than having to

+type the whole path.</p>

+

+<p>Once the WSDL file is selected, click on the "Next" button which will take

+you to the page below.</p>

+

+

+<p><strong>WSDL2Java Page 3:</strong></p>

+

+<p>This page gives the user the option of selecting default or custom code 

+generation options. There are three default code generation options in all. 

+The first enables the user to generate both client and server code under 

+default configurations while the second generates just the client side under 

+default configurations. The third option generates server side code under 

+default configurations.</p>

+

+<p>

+	<strong>Note: 

+	</strong>

+		<ul>

+			<li>When client side code is generated under default configurations it generates 

+the stub, compiles it, packages it as a jar (the name of the jar will be 

+&lt;service name &gt;-jar) places it in a lib folder (If there is no lib 

+folder, it is created) under the IDEA project that is opened. This jar that's 

+generated will also be added as a project library to the current active IDEA project.

+			</li>

+			

+			<li>When server code is generated under default configurations it generates the 

+			server side code and also generates a default service.xml. The user will then be taken to page 5.

+			</li>

+			

+			<li>When both server and client side is generated under default configurations the client stub is 

+			added are a jar to the current IDEA project and the user is taken to page 5.			

+			</li>

+

+	</ul>

+</p>

+

+<p><img alt="Figure5" src="images/fig19.jpg"></p>

+

+

+<p><strong>WSDL2Java Page 4:</strong></p>

+

+<p><strong>Codegen options</strong> are to be selected here. By far this is

+the most important page in this wizard, which determines the characteristics

+of the code being generated.</p>

+

+<p><img alt="Figure5" src="images/fig18.jpg"></p>

+

+<p><strong>Here's some information on the options for selection:</strong></p>

+<ul>

+  <li>Output language can be Java, C#. But we have not fully tested C#

+    codegeneration, therefore, it is better to select Java as output

+  language.</li>

+  <li>If the WSDL comprises of several services, the user can select the service for which the code should be generated for.</li>

+  <li>If the WSDL comprises of several ports for a particullar service, the user can select the port which the code should be generated for.</li>

+  <li>The default data binding type is adb (Axis2 Data Binding). Although the

+    tool is capable of providing XML beans, due to class loading issues in

+    XML beans, current implementation only generate code with OM and ADB.</li>

+  <li>As for the package name of the generated code, you can set the name as

+    you wish.</li>

+  <li>Users can select the one out of the three options- "Generate Client Side", 

+  "Generate Server Side" and "Generate All". The user will be able to select further options based on his options selected here. These sub options are explained below.</li>

+

+  <ul>

+  <li>If user selects "Generate Client Side", he can further select the service invocation style. 

+Since Axis2 supports both synchronous and asynchronous client

+    programming model, the tool has provided a way to selecting the invocation style.</li>

+  <li>If user selects "Generate Server Side", he can also generate a default service XML file. 

+  If the user selects "Generate an interface for skeleton" option then it only generates an 

+interface for the server side. If so the user has to implement this interface. If this 

+option is not selected, the skeleton class is generated, which the user can fill in later on.</li> 

+  <li>If user selects "Generate All" option, then all the classes will be generated in the referenced schemas by the WSDL irrespective of elements referred by the WSDL, along with the client side code.</li>  

+  </ul> 

+

+  <li>The dafault behaviour of the code generator is to map namespaces to 

+package names logically, but if the user wishes to change the package 

+names of the generated classes, he can do so by changing the values in 

+the Namespace to Packagename mapping table.</li>  

+

+</ul>

+

+<p>With these enhanced options novices need not worry about the options that 

+can be set as the default options cover the most common cases. Advanced 

+users will find it very easy to turn the knobs using the custom generation option.</p>

+<p><strong>WSDL2Java Page 5:</strong></p>

+

+<p><img alt="Figure6" src="images/fig3.jpg"></p>

+

+<p>Here uses have the option of adding the generated code directly to their 

+working IDEA project or choose a custom location. If the user decides to add 

+it to the current IDEA project he/she will have to choose the module and the 

+source directory that the code should be generated to. </p>

+

+<p>Alternatively the user can browse and select the output location/path (the location at

+which the code is to be generated) using the "Browse" button. Because of the

+"Browse" button you do not need to type in the output file path.</p>

+

+<p><img alt="Fig4" src="images/fig4.jpg"></p>

+

+<p>Once an output location is selected you can click on "Finish" button which

+will generate the java class file. If code generation is successful then a

+message box will appear acknowledging this fact a shown above.</p>

+

+<p><a name="Create_Service_Archive" id="Create_Service_Archive"></a></p>

+

+<h2>Create a Service Archive</h2>

+

+<p>Select the "Create a service archive" radio button on Page 1 of Axis2 IDEA

+plug-in wizard.</p>

+

+<p><strong>Page 1:</strong></p>

+

+<p><img alt="Fig5" src="images/fig1.jpg"></p>

+

+<p><strong>Service Archive Page 2:</strong></p>

+

+<p>The page below will appear asking the user to select the archive type</p>

+

+<p><img alt="fig6" src="images/fig6.jpg"></p>

+

+<p>In Axis2, the user can deploy a single service or a service group.

+Therefore, you can select either "Single service archive" or "Service group

+archive" for the archive type you want to create.</p>

+

+<p>If you already have a services.xml you can skip some of the steps in the

+wizard by selecting the radio button option "I already have services.xml" and

+clicking on "Next" button. If you do not have the services.xml, select the

+radio button option "Generate services.xml" and click on the "Next" button,

+in which case the tool will create the services.xml for you.</p>

+

+<p>Depending on the options you selected on this page there can be three sub

+wizards:</p>

+<ol>

+  <li><a href="#sub12">Sub wizard 1</a> (Generate single service and its

+    services.xml)</li>

+  <li><a href="#sub12">Sub wizard 2</a> (Generate service group and its

+    services.xml)</li>

+  <li><a href="#sub3">Sub wizard 3</a> (Generate service/service group using

+    already existing services.xml)</li>

+</ol>

+

+<p>1 &amp; 2 follow the same set of steps except for some looping mechanism

+in the middle of the wizard.</p>

+<a name="sub12"></a>

+

+<h3>Sub Wizard 1 and Sub Wizard 2</h3>

+

+<p><strong>Service Archive (sub wizards 1 &amp; 2) Page 3:</strong></p>

+

+<p>From this page you have to select the location of the service classes

+directory (the location of the compiled classes). You do not need to type

+path, simply browse and select.</p>

+

+<p><img alt="fig7" src="images/fig7.jpg"></p>

+

+<p>When you click on "Next" button, wizard will move to the page below</p>

+

+<p><strong>Service Archive (sub wizards 1 &amp; 2) Page 4:</strong></p>

+

+<p>Here you select service specific external libraries (third party libraries) and service WSDL

+files. If you want to add multiple WSDL files to a single service type you can do that as well.</p>

+

+<p><img alt="fig8" src="images/fig8.jpg"></p>

+

+<p>To add libraries first click on the browse button to browse for

+library files and then click on the "Add" button. Once added the selected

+file will appear in the list box.</p>

+

+<p>To add WSDLs, first click on the browse button to browse for WSDL file

+and then click the "Add" button to add the file to the list.</p>

+

+<p>After adding external libraries and service WSDL files click on the "Next" button to move to next page.</p>

+

+<p><strong>Service Archive (sub wizards 1 &amp; 2) Page 5:</strong></p>

+

+<p>This page allows you to select service implementation class. In the case

+of service group, same page will be looped to select multiple service

+implementation classes. This process is explained in detail below.</p>

+

+<p>Select a service implementation class by browsing and clicking on the

+"Load" button to load all the public methods in that class, after which you

+can select the methods that you want to publish using the check boxes.</p>

+

+<p><strong>Note : </strong>If you do not select the correct class

+path from the "Class location selection" window, the public methods

+which are available in the selected class file will not be

+loaded.</p>

+

+<p><img alt="fig10" src="images/fig10.jpg"></p>

+

+<p>In "Service Name" text box you can type the name of the service you want,

+but remember that the service name should be unique throughout the

+system.</p>

+

+<p>When you have completed this particular service click on the button

+"Next". In the case of a service group when you click on the "Next" button

+for that particular service the following dialog box will appear with option to

+add more service(s) to a service group.</p>

+

+<p><img alt="fig11" src="images/fig11.jpg"></p>

+

+<p>If you click on "Yes", you have to follow the same procedure to add some

+other service(s) to service group.</p>

+

+<p>If you click on "No", the button "Next" will be enabled and you can go to

+next page.</p>

+

+<p><a name="Note"><strong><em>Note: From this point onwards the steps are

+similar to all the sub wizards.</em></strong></a></p>

+

+<p><strong>Service Archive (sub wizards 1 &amp; 2) Page 6:</strong></p>

+

+<p>This page displays the services.xml file, either the one given by you (in

+the case of &#x201c;I already have services.xml&#x201d;) or the one generated

+by the system (in the case of "generate services.xml")</p>

+

+<p><img alt="fig12" src="images/fig12.jpg"></p>

+

+<p>This page is editable and provide a way to add parameters and module

+references to any level.</p>

+

+<p><strong>Note : </strong>When you click on either the "+Parameter" or the

+"+ModuleRef" buttons remember that corresponding text will be added to the

+current mouse position. Therefore, click on the location you want to add the

+parameter or module references and then click relevant

+button (+Parameter or +ModuleRef).</p>

+

+<p><strong>+Parameter button:</strong></p>

+

+<p>If you click on the "+Parameter" button a window will appear asking to

+give parameter name and parameter value.</p>

+

+<p><img alt="fig13" src="images/fig13.jpg"></p>

+

+<p>Note that you can also manually add parameters (without clicking on the

+"+Parameter" button ) to any where in the document as you wish.</p>

+

+<p><strong>+ModuleRef button:</strong></p>

+

+<p>Likewise, adding module references can be done by clicking on the

+"+ModuleRef" button in the page. You have to type the name of the module to

+be engaged as shown in the following figure.</p>

+

+<p><img alt="fig14" src="images/fig14.jpg"></p>

+

+<p>When you complete this page press the "Next" button to go to final

+page.</p>

+

+<p><strong>Service Archive (sub wizards 1 &amp; 2) Page 7:</strong></p>

+

+<p><img alt="fig15" src="images/fig15.jpg"></p>

+

+<p>Next step is to select output file location, the location in which archive

+file should be created.</p>

+

+<p>In the "Archive Name" text box, type the name of the archive file you want

+to place. This name will finally become the service group name.</p>

+

+<p><strong>Note :</strong> Do not include file extension when you type archive name.

+System will generate that for you.</p>

+

+<p>When you are done, click the "Finish" button. If everything has been done

+successfully you will see following message.</p>

+

+<p><img alt="fig16" src="images/fig16.jpg"></p>

+

+<p><strong><em>Note: Pages 6 &amp; 7 of sub wizards 1 &amp; 2 are common to sub

+wizard 3 from its page 3 onwards.</strong></em></p>

+<a name="sub3"></a>

+

+<h3>Sub Wizard 3</h3>

+

+<p>In the case where services.xml is already available, the steps are as

+follows:</p>

+

+<p><strong>Service Archive (sub wizard 3) Page 3:</strong></p>

+

+<p><img alt="fig17" src="images/fig17.jpg"></p>

+

+<p>This page allows you to select both location of services.xml and the

+location of service classes directory. Click on the "Select" buttons and

+browse the file system to find required document and location.</p>

+

+<p>Click on the "Next" button which will take you to a page which allows you

+to add third party libraries and WSDL's in the same manner as "Sub Wizard 1 &amp; Sub Wizard

+2" section's <a href="#Note">Page 6 - Edit service descriptors</a>. Note that

+Sub Wizard 3 from this point takes the same pages as 6 to 7 of Sub Wizards 1

+&amp; 2.</p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig1.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig1.jpg
new file mode 100644
index 0000000..0cb891a
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig1.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig10.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig10.jpg
new file mode 100644
index 0000000..0a281db
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig10.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig11.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig11.jpg
new file mode 100644
index 0000000..77c1076
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig11.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig12.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig12.jpg
new file mode 100644
index 0000000..bf42430
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig12.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig13.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig13.jpg
new file mode 100644
index 0000000..07a5003
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig13.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig14.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig14.jpg
new file mode 100644
index 0000000..0049312
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig14.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig15.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig15.jpg
new file mode 100644
index 0000000..6504950
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig15.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig16.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig16.jpg
new file mode 100644
index 0000000..62cfccc
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig16.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig17.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig17.jpg
new file mode 100644
index 0000000..be3c519
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig17.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig18.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig18.jpg
new file mode 100644
index 0000000..a3be44b
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig18.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig19.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig19.jpg
new file mode 100755
index 0000000..5206db9
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig19.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig2.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig2.jpg
new file mode 100644
index 0000000..419c7b5
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig2.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig3.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig3.jpg
new file mode 100644
index 0000000..69cefd1
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig3.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig4.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig4.jpg
new file mode 100644
index 0000000..bf75714
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig4.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig5.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig5.jpg
new file mode 100644
index 0000000..62b5585
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig5.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig6.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig6.jpg
new file mode 100644
index 0000000..6fd4b55
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig6.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig7.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig7.jpg
new file mode 100644
index 0000000..8a8190e
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig7.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/fig8.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/fig8.jpg
new file mode 100644
index 0000000..3130e9a
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/fig8.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/idea-icons.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/idea-icons.jpg
new file mode 100644
index 0000000..dcf1b6c
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/idea-icons.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/idea/images/idea-popup.jpg b/rampart_1_1/xdocs/tools/1_1/idea/images/idea-popup.jpg
new file mode 100644
index 0000000..6817e32
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/idea/images/idea-popup.jpg
Binary files differ
diff --git a/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-aar-plugin.html b/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-aar-plugin.html
new file mode 100644
index 0000000..8852f81
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-aar-plugin.html
@@ -0,0 +1,195 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Maven2 AAR Plug-in Guide</title>

+  <link href="../../../css/axis-docs.css" rel="stylesheet" type="text/css"

+  media="all">

+</head>

+

+<body>

+<h1>Maven2 AAR Plug-in Guide</h1>

+

+<h2>Introduction</h2>

+

+<p>This plugin generates an Axis 2 service file (AAR file).</p>

+

+<p><a href="http://ws.apache.org/axis2/tools/index.html"

+target="_blank">[Download Plugin Tool]</a></p>

+

+<h2>Goals</h2>

+

+<p>The AAR plugin allows the packaging of an Axis 2 service aar in 3

+different modes:</p>

+<ol>

+  <li><b>aar (default)</b>: generates the aar artifact</li>

+  <li><b>inplace</b>      : package the aar in the source tree</li>

+  <li><b>exploded</b>     : package an exploded aar application</li>

+</ol>

+

+<p>Each mode is materialized by a goal. For instance, to generate an exploded

+aar from the current project, one would type</p>

+<pre>mvn aar:exploded</pre>

+

+<h2>Configuration</h2>

+

+<p>All AAR plugin goals takes the following configuration parameters as

+input:</p>

+

+<table border="2">

+  <tbody>

+    <tr>

+      <td><strong>Parameter Name</strong></td>

+      <td><strong>Default Value</strong></td>

+      <td><strong>Description</strong></td>

+    </tr>

+    <tr>

+      <td>aarDirectory</td>

+      <td>${project.build.directory}/aar</td>

+      <td>Directory where the aar file is built</td>

+    </tr>

+    <tr>

+      <td>classesDirectory</td>

+      <td>${project.build.outputDirectory}</td>

+      <td>Directory with compiled classes and resources</td>

+    </tr>

+    <tr>

+      <td>fileSets</td>

+      <td></td>

+      <td>Additional file sets, which are being added to the archive. See "<a

+        href="#file_sets">File Sets</a>" below for an example</td>

+    </tr>

+    <tr>

+      <td>servicesXmlFile</td>

+      <td></td>

+      <td>Location of the services.xml file. By default, it is assumed that

+        the file is already present in classesDirectory/META-INF and no

+        special processing is required</td>

+    </tr>

+    <tr>

+      <td>wsdlFile</td>

+      <td></td>

+      <td>Location of the WSDL file. By default, it is assumed that the file

+        is already present in classesDirectory/META-INF and no special

+        processing is required</td>

+    </tr>

+    <tr>

+      <td>wsdlFileName</td>

+      <td>service.wsdl</td>

+      <td>Name, to which the WSDL file should be mapped</td>

+    </tr>

+  </tbody>

+</table>

+

+<h3>The aar Goal</h3>

+

+<p>The aar goal allows the following additional parameters:</p>

+

+<table border="2">

+  <tbody>

+    <tr>

+      <td><strong>Parameter Name</strong></td>

+      <td><strong>Default Value</strong></td>

+      <td><strong>Description</strong></td>

+    </tr>

+    <tr>

+      <td>outputDirectory</td>

+      <td>${project.build.directory}</td>

+      <td>Directory where to generate the AAR file</td>

+    </tr>

+    <tr>

+      <td>aarName</td>

+      <td>${project.build.finalName}</td>

+      <td>The generated AAR files name</td>

+    </tr>

+    <tr>

+      <td>archive</td>

+      <td></td>

+      <td>A Maven archive configuration. This allows, for example, to

+        configure the MANIFEST.MF file</td>

+    </tr>

+    <tr>

+      <td>classifier</td>

+      <td></td>

+      <td>A classifier, which should be added to the generated AAR files

+        name. Setting this parameter has the side effect, that the artifact

+        is treated as an attachment and not as the projects primary

+      artifact</td>

+    </tr>

+    <tr>

+      <td>primaryArtifact</td>

+      <td>true</td>

+      <td>Setting this property to false disables installation or deployment

+        of the artifact as the projects primary artifact</td>

+    </tr>

+  </tbody>

+</table>

+<a name="file_sets"></a>

+

+<h3>File Sets</h3>

+

+<p>Additional file sets may be configured for inclusion into the AAR file. A

+file set looks as follows:</p>

+<pre>  

+  &lt;fileSets&gt;

+    &lt;fileSet&gt;

+      &lt;directory&gt;src/aar/files&lt;/directory&gt;

+      &lt;outputDirectory&gt;META-INF/docs&lt;/outputDirectory&gt;

+      &lt;includes&gt;

+        &lt;include&gt;**/*.html&lt;/include&gt;

+

+      &lt;/includes&gt;

+    &lt;/fileSet&gt;

+    &lt;fileSet&gt;

+      &lt;directory&gt;src/aar/files&lt;/directory&gt;

+      &lt;outputDirectory&gt;META-INF/etc&lt;/outputDirectory&gt;

+

+      &lt;excludes&gt;

+        &lt;exclude&gt;**/*.html&lt;/exclude&gt;

+      &lt;/excludes&gt;

+    &lt;/fileSet&gt;

+  &lt;/fileSets&gt;

+  </pre>

+

+<p>The example specifies, that the contents of the directory src/aar/files

+shall be added to the AAR file. HTML files will go into META-INF/docs, all

+other files to META-INF/etc.</p>

+

+<p>A file set is configured through the following configuration

+parameters:</p>

+

+<table border="2">

+  <tbody>

+    <tr>

+      <td><strong>Parameter Name</strong></td>

+      <td><strong>Description</strong></td>

+    </tr>

+    <tr>

+      <td>directory</td>

+      <td>The directory, from which to read the file set. This parameter is

+        required</td>

+    </tr>

+    <tr>

+      <td>outputDirectory</td>

+      <td>The target directory within the AAR file. Defaults to the AAR files

+        root directory</td>

+    </tr>

+    <tr>

+      <td>includes</td>

+      <td>Configures the set of files, which shall be included into the AAR

+        file. Defaults to **/*</td>

+    </tr>

+    <tr>

+      <td>excludes</td>

+      <td>Configures a set of files, which shall be excluded from the file

+        set. Defaults to the Maven default excludes (**/*~, **/cvs/**/*,

+        **/.svn/**/*, etc.)</td>

+    </tr>

+    <tr>

+      <td>skipDefaultExcludes</td>

+      <td>If this parameter is set to true, then no default excludes are

+        being used</td>

+    </tr>

+  </tbody>

+</table>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-java2wsdl-plugin.html b/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-java2wsdl-plugin.html
new file mode 100644
index 0000000..69e05a2
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-java2wsdl-plugin.html
@@ -0,0 +1,126 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Maven2 Java2WSDL Plug-in Guide</title>

+  <link href="../../../css/axis-docs.css" rel="stylesheet" type="text/css"

+  media="all">

+</head>

+

+<body>

+<h1>Maven2 Java2WSDL Plug-in Guide</h1>

+

+<h2>Introduction</h2>

+

+<p>This plugin takes as input a Java class and generates a WSDL, which

+describes a Web service for invoking the classes methods.</p>

+

+<p><a href="http://ws.apache.org/axis2/tools/index.html"

+target="_blank">[Download Plugin Tool]</a></p>

+

+<h2>Goals</h2>

+

+<p>The Java2WSDL plugin offers a single goal:</p>

+<ul>

+  <li>java2wsdl (default): Reads a java class and generates a WSDL for

+    invoking the classes methods as a Web service.</li>

+</ul>

+

+<p>To run the plugin, add the following section to your <a

+href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">POM</a>

+(Project Object Model):</p>

+<pre>  &lt;build&gt;

+    &lt;plugins&gt;

+      &lt;plugin&gt;

+        &lt;groupId&gt;org.apache.axis2.maven2&lt;/groupId&gt;

+        &lt;artifactId&gt;axis2-java2wsdl-maven-plugin&lt;/artifactId&gt;

+        &lt;executions&gt;

+          &lt;execution&gt;

+            &lt;goals&gt;

+              &lt;goal&gt;java2wsdl&lt;/goal&gt;

+            &lt;/goals&gt;

+          &lt;/execution&gt;

+          &lt;configuration&gt;

+            &lt;className&gt;com.foo.myservice.MyHandler&lt;/className&gt;

+          &lt;/configuration&gt;

+        &lt;/executions&gt;

+      &lt;/plugin&gt;

+    &lt;/plugins&gt;

+  &lt;/build&gt;

+  </pre>

+

+<p>The plugin will be invoked automatically in the generate-resources phase.

+You can also invoke it directly from the command line by running the

+command:</p>

+<pre>mvn java2wsdl:java2wsdl</pre>

+

+<h3>The Java2WSDL Goal</h3>

+

+<p>By default, the plugin reads the given Java class and creates a file

+<strong>target/generated-resources/java2wsdl/service.xml</strong>. The Java

+class is given by the configuration element <strong>className</strong>

+above.</p>

+

+<h2>Configuration</h2>

+

+<p>The Java2WSDL goal takes the following parameters as input. All parameters

+can be set from the command line by using properties. For example, the

+parameter "className" may be set using the property

+"axis2.java2wsdl.className". If the parameter isn't set via property or in

+the POM, then a default value applies.</p>

+

+<table border="2">

+  <tbody>

+    <tr>

+      <td><strong>Parameter name</strong></td>

+      <td><strong>Command line property</strong></td>

+      <td><strong>Description</strong></td>

+      <td><strong>Default value</strong></td>

+    </tr>

+    <tr>

+      <td>className</td>

+      <td>${axis2.java2wsdl.className}</td>

+      <td>Fully qualified name of the class, which is being read and

+        transformed into a WSDL</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>outputFileName</td>

+      <td>${axis2.java2wsdl.outputFileName}</td>

+      <td>Path of the generated service file.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>schemaTargetNamespace</td>

+      <td>${axis2.java2wsdl.schemaTargetNamespace}</td>

+      <td>Target namespace of the generated schema.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>schemaTargetNamespacePrefix</td>

+      <td>${axis2.java2wsdl.schemaTargetNamespacePrefix}</td>

+      <td>Prefix, which is being associated with the schemas target

+      namespace.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>serviceName</td>

+      <td>${axis2.java2wsdl.serviceName}</td>

+      <td>Name of the generated Web service.</td>

+      <td>Unqualified name of the input class.</td>

+    </tr>

+    <tr>

+      <td>targetNamespace</td>

+      <td>${axis2.java2wsdl.targetNamespace}</td>

+      <td>Target namespace of the generated WSDL</td>

+      <td>Default namespace</td>

+    </tr>

+    <tr>

+      <td>targetNamespacePrefix</td>

+      <td>${axis2.java2wsdl.targetNamespacePrefix}</td>

+      <td>Prefix, which is being associated with the target namespace</td>

+      <td></td>

+    </tr>

+  </tbody>

+</table>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-wsdl2code-plugin.html b/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-wsdl2code-plugin.html
new file mode 100644
index 0000000..97f847d
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/1_1/maven-plugins/maven-wsdl2code-plugin.html
@@ -0,0 +1,190 @@
+<html>

+<head>

+  <meta http-equiv="content-type" content="">

+  <title>Maven2 WSDL2Code Plug-in Guide</title>

+  <link href="../../../css/axis-docs.css" rel="stylesheet" type="text/css"

+  media="all">

+</head>

+

+<body>

+<h1>Maven2 WSDL2Code Plug-in Guide</h1>

+

+<h2>Introduction</h2>

+

+<p>This plugin takes as input a WSDL and generates client and server stubs

+for calling or implementing a Web service matching the WSDL.</p>

+

+<p><a href="http://ws.apache.org/axis2/tools/index.html"

+target="_blank">[Download Plugin Tool]</a></p>

+

+<h2>Goals</h2>

+

+<p>The WSDl2Code offers a single goal:</p>

+<ul>

+  <li>wsdl2code (default): Reads the WSDL and generates code.</li>

+</ul>

+

+<p>To run the plugin, add the following section to your <a

+href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">POM</a>

+(Project Object Model):</p>

+<pre>    &lt;build&gt;

+    &lt;plugins&gt;

+    &lt;plugin&gt;

+    &lt;groupId&gt;org.apache.axis2.maven2&lt;/groupId&gt;

+    &lt;artifactId&gt;axis2-wsdl2code-maven-plugin&lt;/artifactId&gt;

+    &lt;executions&gt;

+    &lt;execution&gt;

+    &lt;goals&gt;

+    &lt;goal&gt;wsdl2code&lt;/goal&gt;

+    &lt;/goals&gt;

+    &lt;/execution&gt;

+    &lt;configuration&gt;

+    &lt;packageName&gt;com.foo.myservice&lt;/packageName&gt;

+    &lt;/configuration&gt;

+    &lt;/executions&gt;

+    &lt;/plugin&gt;

+    &lt;/plugins&gt;

+    &lt;/build&gt;</pre>

+

+<p>The plugin will be invoked automatically in the generate-sources phase.

+You can also invoke it directly from the command line by running the

+command</p>

+<pre>mvn wsdl2code:wsdl2code</pre>

+

+<h3>The WSDL2Code Goal</h3>

+

+<p>By default, the plugin reads the file

+<strong>src/main/axis2/service.wsdl</strong>. Sources for the Java

+programming language and the ADB data binding are generated into

+<strong>target/generated-sources/axis2/wsdl2code</strong>. Note the

+configuration element <strong>packageName</strong> above, which sets the

+package name, thus a subdirectory.</p>

+

+<h2>Configuration</h2>

+

+<p>The WSDL2Code goal takes the following parameters as input. All parameters

+can be set from the command line by using properties. For example, the

+parameter "generateServerSide" may be set using the property

+"axis2.wsdl2code.generateServerSide". If the parameter isn't set via property

+or in the POM, then a default value applies.</p>

+

+<table border="2">

+  <tbody>

+    <tr align="center">

+      <td><strong>Parameter Name</strong></td>

+      <td><strong>Command Line Property</strong></td>

+      <td><strong>Description</strong></td>

+      <td><strong>Default Value</strong></td>

+    </tr>

+    <tr>

+      <td>databindingName</td>

+      <td>${axis2.wsdl2code.databindingName}</td>

+      <td>Data binding framework, which is being used by the generated

+        sources.</td>

+      <td>adb</td>

+    </tr>

+    <tr>

+      <td>generateAllClasses</td>

+      <td>${axis2.wsdl2code.generateAllClasses}</td>

+      <td>Whether to generate simply all classes. This is only valid in

+        conjunction with "generateServerSide".</td>

+      <td>false</td>

+    </tr>

+    <tr>

+      <td>generateServerSide</td>

+      <td>${axis2.wsdl2code.generateServerSide}</td>

+      <td>Whether server side sources are being generated.</td>

+      <td>false</td>

+    </tr>

+    <tr>

+      <td>generateServerSideInterface</td>

+      <td>${axis2.wsdl2code.generateServerSideInterface}</td>

+      <td>Whether to generate the server side interface.</td>

+      <td>false</td>

+    </tr>

+    <tr>

+      <td>generateServicesXml</td>

+      <td>${axis2.wsdl2code.generateServicesXml}</td>

+      <td>Whether a "services.xml" file is being generated.</td>

+      <td>false</td>

+    </tr>

+    <tr>

+      <td>generateTestcase</td>

+      <td>${axis2.wsdl2code.generateTestCase}</td>

+      <td>Whether a test case is being generated.</td>

+      <td>false</td>

+    </tr>

+    <tr>

+      <td>language</td>

+      <td>${axis2.wsdl2code.language}</td>

+      <td>Programming language of the generated sources.</td>

+      <td>java</td>

+    </tr>

+    <tr>

+      <td>namespaceToPackages</td>

+      <td>${axis2.wsdl2code.namespaceToPackages}</td>

+      <td>Map of namespace URI to packages in the format

+        uri1=package1,uri2=package2,... Using this parameter is discouraged.

+        In general, you should use the namespaceUris parameter. However, the

+        latter cannot be set on the command line.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>namespaceURIs</td>

+      <td></td>

+      <td>Map of namespace URI to packages. Example: &lt;namespaceURIs&gt;

+        &lt;namespaceURI&gt; &lt;uri&gt;uri1&lt;/uri&gt;

+        &lt;package&gt;package1&lt;/package&gt; &lt;/namespaceURI&gt;

+        ........ &lt;/namespaceURI&gt;</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>outputDirectory</td>

+      <td>${axis2.wsdl2code.target}</td>

+      <td>Target directory, where sources are being

+        target/generated-sources/axis2/wsdl2code generated.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>packageName</td>

+      <td>${axis2.wsdl2code.package}</td>

+      <td>Package name of the generated sources.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>portName</td>

+      <td>${axis2.wsdl2code.portName}</td>

+      <td>Port name, for which sources are being generated. By default,

+        sources are generated for all ports.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>serviceName</td>

+      <td>${axis2.wsdl2code.serviceName}</td>

+      <td>Service name, for which sources are being generated. By default,

+        sources are generated for all services.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>syncMode</td>

+      <td>${axis2.wsdl2code.syncMode}</td>

+      <td>Sync mode, for which sources are being generated; either of "sync",

+        "async", or "both" (default).</td>

+      <td>both</td>

+    </tr>

+    <tr>

+      <td>unpackClasses</td>

+      <td>${axis2.wsdl2code.unpackClasses}</td>

+      <td>Whether to unpack classes.</td>

+      <td></td>

+    </tr>

+    <tr>

+      <td>wsdlFile</td>

+      <td>${axis2.wsdl2code.wsdl}</td>

+      <td>Location of the WSDL file, which is read as input</td>

+      <td>src/main/axis2/service.wsdl</td>

+    </tr>

+  </tbody>

+</table>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/tools/download.cgi b/rampart_1_1/xdocs/tools/download.cgi
new file mode 100644
index 0000000..8bdb438
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/download.cgi
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Wrapper script around mirrors.cgi script
+# (we must change to that directory in order for python to pick up the
+#  python includes correctly)
+cd /www/www.apache.org/dyn/mirrors
+/www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/rampart_1_1/xdocs/tools/index.html b/rampart_1_1/xdocs/tools/index.html
new file mode 100644
index 0000000..cea02cf
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/index.html
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="iso-8859-1"?>

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

+       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

+  <title>Axis2 Tools Download Page</title>

+  <meta name="generator" content="amaya 9.2.1, see http://www.w3.org/Amaya/"

+  />

+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css"

+  media="all" />

+</head>

+

+<body xml:lang="en">

+<h1>Apache Axis2 Tools</h1>

+

+<p>Axis2 is bundled with a set of tools in order to make users' life easier.

+This page is maintained to keep track of the tools supported by Axis2.</p>

+

+<table border="2">

+  <caption></caption>

+  <tbody>

+    <tr>

+      <th scope="col">Name</th>

+      <th scope="col">Description</th>

+      <th scope="col">Version</th>

+      <th scope="col">Compatible Axis2 version</th>

+      <th scope="col">Downloads</th>

+      <th scope="col">Comments</th>

+    </tr>

+    <tr>

+      <td><a href="../tools/1_1/CodegenToolReference.html">Code Generator

+        Tool- Command Line &amp; Ant Task</a></td>

+      <td>Tool consists of a command line version and an Ant Task. It is

+        implemented by the WSDL2Code class and WSDL2Java class. One can

+        choose to run the main classes directly or use one of the scripts to

+        run the WSDL2Code and WSDL2Java appropriately.</td>

+      <td>1.1</td>

+      <td>1.1</td>

+      <td></td>

+      <td>This tool is bundled with the Axis2 Standard Binary Distribution

+        found <a href="http://ws.apache.org/axis2/download.cgi">here</a></td>

+    </tr>

+    <tr>

+      <td><a href="../tools/1_1/eclipse/servicearchiver-plugin.html">Service

+        Archive Wizard - Eclipse Plug-in</a></td>

+      <td>As part of the Axis2 tool set, the service archive generator is an

+        important tool that allows the generation of service archives ("aar"

+        file or a "jar" files) that can be deployed as a Web services to the

+        Axis2.</td>

+      <td>1.1</td>

+      <td>1.1</td>

+      <td><a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Service_Archiver.zip"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Service_Archiver.zip">zip</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Service_Archiver.zip.md5"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Service_Archiver.zip.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Service_Archiver.zip.asc"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Service_Archiver.zip.asc">PGP</a></td>

+      <td></td>

+    </tr>

+    <tr>

+      <td><a href="../tools/1_1/eclipse/wsdl2java-plugin.html">Code Generator

+        Wizard - Eclipse Plug-in</a></td>

+      <td>Axis2 code generator comes built-in with an <a

+        href="http://www.eclipse.org/">eclipse</a> plug-in. This can be used

+        to generate a WSDL file from a java class (Java2WSDL) and/or a java

+        class file from a WSDL (WSDL2Java)</td>

+      <td>1.1</td>

+      <td>1.1</td>

+      <td><a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Code_Generator.zip"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Code_Generator.zip">zip</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Code_Generator.zip.md5"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Code_Generator.zip.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Code_Generator.zip.asc"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2_Code_Generator.zip.asc">PGP</a></td>

+      <td></td>

+    </tr>

+    <tr>

+      <td><a href="../tools/1_1/idea/Idea_plug-in_userguide.html">Code

+        Generator Wizard - IntelliJ IDEA Plug-in</a></td>

+      <td>Using this tool one can create service archives that can be

+        deployed as a Web services to the Axis2, and also generate a java

+        class file from a WSDL file (WSDL2Java).</td>

+      <td>1.1</td>

+      <td>1.1</td>

+      <td><a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2Idea_plug_in.zip"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2Idea_plug_in.zip">zip</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2Idea_plug_in.zip.md5"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2Idea_plug_in.zip.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2Idea_plug_in.zip.asc"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/Axis2Idea_plug_in.zip.asc">PGP</a></td>

+      <td></td>

+    </tr>

+    <tr>

+      <td><a href="../tools/1_1/maven-plugins/maven-aar-plugin.html">Maven2 AAR

+        Plug-in</a></td>

+      <td>This plugin generates an Axis2 service file (AAR file).</td>

+      <td>1.1</td>

+      <td>1.1</td>

+      <td><a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-aar-maven-plugin-1.1.jar"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-aar-maven-plugin-1.1.jar">jar</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-aar-maven-plugin-1.1.jar.md5"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-aar-maven-plugin-1.1.jar.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-aar-maven-plugin-1.1.jar.asc"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-aar-maven-plugin-1.1.jar.asc">PGP</a></td>

+      <td></td>

+    </tr>

+    <tr>

+      <td><a href="../tools/1_1/maven-plugins/maven-java2wsdl-plugin.html">Maven2

+        Java2WSDL Plug-in</a></td>

+      <td><p>This plugin takes as input a Java class and generates a WSDL,

+        which describes a Web service for invoking the classes methods.</p>

+      </td>

+      <td>1.1</td>

+      <td>1.1</td>

+      <td><a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-java2wsdl-maven-plugin-1.1.jar"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-java2wsdl-maven-plugin-1.1.jar">jar</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-java2wsdl-maven-plugin-1.1.jar.md5"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-java2wsdl-maven-plugin-1.1.jar.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-java2wsdl-maven-plugin-1.1.jar.asc"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-java2wsdl-maven-plugin-1.1.jar.asc">PGP</a></td>

+      <td></td>

+    </tr>

+    <tr>

+      <td><a href="../tools/1_1/maven-plugins/maven-wsdl2code-plugin.html">Maven2

+        WSDL2Code Plug-in</a></td>

+      <td><p>This plugin takes as input a WSDL and generates client and

+        server stubs for calling or implementing a Web service matching the

+        WSDL.</p>

+      </td>

+      <td>1.1</td>

+      <td>1.1</td>

+      <td><a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-wsdl2code-maven-plugin-1.1.jar"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-wsdl2code-maven-plugin-1.1.jar">jar</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-wsdl2code-maven-plugin-1.1.jar.md5"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-wsdl2code-maven-plugin-1.1.jar.md5">MD5</a>

+        <a

+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-wsdl2code-maven-plugin-1.1.jar.asc"

+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_1/axis2-wsdl2code-maven-plugin-1.1.jar.asc">PGP</a></td>

+      <td></td>

+    </tr>

+  </tbody>

+</table>

+

+<p>Previous tools releases are available <a href="previous.html">here</a></p>

+</body>

+</html>

diff --git a/rampart_1_1/xdocs/tools/previous.html b/rampart_1_1/xdocs/tools/previous.html
new file mode 100644
index 0000000..3f486dd
--- /dev/null
+++ b/rampart_1_1/xdocs/tools/previous.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+  <title>Axis2 Tools Archive Page</title>
+  <meta name="generator" content="amaya 9.2.1, see http://www.w3.org/Amaya/"
+  />
+  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body xml:lang="en">
+<h1>Apache Axis2 Tools Archive</h1>
+
+<p>Axis2 is bundled with a set of tools in order to make users' life easier.
+This page contains the tools released for previous versions of Axis2.</p>
+
+<table border="2">
+  <caption></caption>
+  <tbody>
+    <tr>
+      <th scope="col">Name</th>
+      <th scope="col">Description</th>
+      <th scope="col">Version</th>
+      <th scope="col">Compatible Axis2 version</th>
+      <th scope="col">Downloads</th>
+      <th scope="col">Comments</th>
+    </tr>
+    <tr>
+      <td><a href="http://ws.apache.org/axis2/tools/1_0/CodegenToolReference.html">Code Generator
+        Tool- Command Line &amp; Ant Task</a></td>
+      <td>Tool consists of a command line version and an Ant Task. It is
+        implemented by the WSDL2Code class and WSDL2Java class. One can
+        choose to run the main classes directly or use one of the scripts to
+        run the WSDL2Code and WSDL2Java appropriately.</td>
+      <td>1.0</td>
+      <td>1.0</td>
+      <td></td>
+      <td>This tool is bundled with the Axis2 base distribution found <a
+        href="http://ws.apache.org/axis2/download.cgi">here</a></td>
+    </tr>
+    <tr>
+      <td><a href="http://ws.apache.org/axis2/tools/1_0/eclipse/servicearchiver-plugin.html">Service
+        Archive Wizard - eclipse Plug-in</a></td>
+      <td>As part of the Axis2 tool set, the service archive generator is an
+        important tool that allows the generation of service archives ("aar"
+        file or a "jar" files) that can be deployed as a Web services to the
+        Axis2.</td>
+      <td>1.0</td>
+      <td>1.0</td>
+      <td><a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Service_Archiver.zip"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Service_Archiver.zip">zip</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Service_Archiver.zip.md5"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Service_Archiver.zip.md5">MD5</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Service_Archiver.zip.asc"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Service_Archiver.zip.asc">PGP</a></td>
+      <td></td>
+    </tr>
+    <tr>
+      <td><a href="http://ws.apache.org/axis2/tools/1_0/eclipse/wsdl2java-plugin.html">Code Generator
+        Wizard - eclipse Plug-in</a></td>
+      <td>Axis2 code generator comes built-in with an <a
+        href="http://www.eclipse.org/">eclipse</a> plug-in. This can be used
+        to generate a WSDL file from a java class (Java2WSDL) and/or a java
+        class file from a WSDL (WSDL2Java)</td>
+      <td>1.0</td>
+      <td>1.0</td>
+      <td><a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Code_Generator.zip"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Code_Generator.zip">zip</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Code_Generator.zip.md5"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Code_Generator.zip.md5">MD5</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Code_Generator.zip.asc"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2_Code_Generator.zip.asc">PGP</a></td>
+      <td></td>
+    </tr>
+    <tr>
+      <td><a href="http://ws.apache.org/axis2/tools/1_0/idea/Idea_plug-in_userguide.html">Code
+        Generator Wizard - intelliJ IDEA Plug-in</a></td>
+      <td>Using this tool one can create service archives that can be
+        deployed as a Web services to the Axis2, and also generate a java
+        class file from a WSDL file (WSDL2Java).</td>
+      <td>1.0</td>
+      <td>1.0</td>
+      <td><a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2Idea_plug_in.zip"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2Idea_plug_in.zip">zip</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2Idea_plug_in.zip.md5"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2Idea_plug_in.zip.md5">MD5</a>
+        <a
+        href="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2Idea_plug_in.zip.asc"
+        title="http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_0/Axis2Idea_plug_in.zip.asc">PGP</a></td>
+      <td></td>
+    </tr>
+  </tbody>
+</table>
+
+<p>Latest tools releases are available <a href="index.html">here</a></p>
+</body>
+</html>